pax_global_header00006660000000000000000000000064131423607750014522gustar00rootroot0000000000000052 comment=8e0ba724d85de2c89f48161807e878667b9ed089 watchman-4.9.0/000077500000000000000000000000001314236077500133365ustar00rootroot00000000000000watchman-4.9.0/.clang-format000066400000000000000000000051671314236077500157220ustar00rootroot00000000000000--- AccessModifierOffset: -1 AlignAfterOpenBracket: AlwaysBreak AlignConsecutiveAssignments: false AlignConsecutiveDeclarations: false AlignEscapedNewlinesLeft: true AlignOperands: false AlignTrailingComments: false AllowAllParametersOfDeclarationOnNextLine: false AllowShortBlocksOnASingleLine: false AllowShortCaseLabelsOnASingleLine: false AllowShortFunctionsOnASingleLine: Empty AllowShortIfStatementsOnASingleLine: false AllowShortLoopsOnASingleLine: false AlwaysBreakAfterReturnType: None AlwaysBreakBeforeMultilineStrings: true AlwaysBreakTemplateDeclarations: true BinPackArguments: false BinPackParameters: false BraceWrapping: AfterClass: false AfterControlStatement: false AfterEnum: false AfterFunction: false AfterNamespace: false AfterObjCDeclaration: false AfterStruct: false AfterUnion: false BeforeCatch: false BeforeElse: false IndentBraces: false BreakBeforeBinaryOperators: None BreakBeforeBraces: Attach BreakBeforeTernaryOperators: true BreakConstructorInitializersBeforeComma: false BreakAfterJavaFieldAnnotations: false BreakStringLiterals: false ColumnLimit: 80 CommentPragmas: '^ IWYU pragma:' ConstructorInitializerAllOnOneLineOrOnePerLine: true ConstructorInitializerIndentWidth: 4 ContinuationIndentWidth: 4 Cpp11BracedListStyle: true DerivePointerAlignment: false DisableFormat: false ForEachMacros: [ FOR_EACH_RANGE, FOR_EACH, ] IncludeCategories: - Regex: '^"watchman_system.h"' Priority: -2 - Regex: '^"watchman(|_string).h"' Priority: -1 - Regex: '^<.*\.h(pp)?>' Priority: 1 - Regex: '^<.*' Priority: 2 - Regex: '.*' Priority: 3 IndentCaseLabels: true IndentWidth: 2 IndentWrappedFunctionNames: false KeepEmptyLinesAtTheStartOfBlocks: false MacroBlockBegin: '' MacroBlockEnd: '' MaxEmptyLinesToKeep: 1 NamespaceIndentation: None ObjCBlockIndentWidth: 2 ObjCSpaceAfterProperty: false ObjCSpaceBeforeProtocolList: false PenaltyBreakBeforeFirstCallParameter: 1 PenaltyBreakComment: 300 PenaltyBreakFirstLessLess: 120 PenaltyBreakString: 1000 PenaltyExcessCharacter: 1000000 PenaltyReturnTypeOnItsOwnLine: 200 PointerAlignment: Left ReflowComments: true SortIncludes: true SpaceAfterCStyleCast: false SpaceBeforeAssignmentOperators: true SpaceBeforeParens: ControlStatements SpaceInEmptyParentheses: false SpacesBeforeTrailingComments: 1 SpacesInAngles: false SpacesInContainerLiterals: true SpacesInCStyleCastParentheses: false SpacesInParentheses: false SpacesInSquareBrackets: false Standard: Cpp11 TabWidth: 8 UseTab: Never ... watchman-4.9.0/.gitattributes000066400000000000000000000000331314236077500162250ustar00rootroot00000000000000* text eol=lf *.png binary watchman-4.9.0/.gitignore000066400000000000000000000021311314236077500153230ustar00rootroot00000000000000# If you make a change to this file, make sure to also make it to .hgignore. buck-out buck-cache .buckd .idea *.iml /Makefile.in /test-driver /aclocal.m4 /autom4te.cache/ /configure /depcomp /install-sh /missing /config.log .deps/ .windeps /*.in /Makefile *.o /config.status /watchman /arcanist/.phutil_module_cache *.swp /compile /stamp-h1 /config.h* /thirdparty/jansson/jansson_config.h /compile /tests/*.t .dirstamp *.a /tests/integration/.watchman.* *.rpm /config.sub /config.guess /configure.lineno /python/build /python/dist/ /python/pywatchman.egg-info/ *.pyc *.pyd *.so *.obj *.exe *.dll *.pdb /test-suite.log /tests/*.log /tests/*.trs /a /arc /node/node_modules /node/bser/node_modules /website/node_modules /website/build /website/src/watchman/docs /website/src/watchman/*.js /website/core/metadata.js /website/.sass-cache /website/_site /npm-debug.log /Debug .deps *.dep *.nativecodeanalysis.xml /watchman-test.log Watchman.vcxproj.* Watchman.vcxproj *.opensdf *.sdf *.sln *.suo m4/ .libs/ *.lo *.la tests/integration/cppclient.t libtool ltmain.sh cppclient/watchmanclient.pc /website/.jekyll-metadata watchman-4.9.0/.hgignore000066400000000000000000000013431314236077500151420ustar00rootroot00000000000000# If you make a change to this file, make sure to also make it to .gitignore. syntax: glob buck-out buck-cache .buckd .idea *.iml Makefile.in aclocal.m4 autom4te.cache/ configure depcomp install-sh missing config.log .deps/ *.in Makefile *.o config.status watchman arcanist/.phutil_module_cache *.swp compile stamp-h1 config.h* thirdparty/jansson/jansson_config.h compile tests/*.t .dirstamp *.a tests/integration/.watchman.* *.rpm config.sub config.guess configure.lineno python/bser/build a arc node/node_modules website/node_modules website/build website/src/watchman/docs website/src/watchman/*.js website/core/metadata.js npm-debug.log m4/ .libs/ *.lo *.la tests/integration/cppclient.t cppclient/watchmanclient.pc libtool ltmain.sh watchman-4.9.0/.travis.yml000066400000000000000000000037251314236077500154560ustar00rootroot00000000000000language: c # use container infra for linux dist: trusty sudo: false addons: apt: sources: - deadsnakes - ubuntu-toolchain-r-test packages: - php5-cli - python2.7 - python2.7-dev - python3.5 - python3.5-dev - python3.6 - python3.6-dev - gcc-4.8 - g++-4.8 - gcc-5 - g++-5 - gcc-6 - g++-6 # - ruby # - rubygems # - valgrind branches: only: - master # for the ruby-watchman gem #gemfile: ruby/ruby-watchman/Gemfile #rvm: # - "2.0.0" # TODO: On Linux we currently use system versions of Python. That makes it # somewhat annoying to get third-party dependencies in, since sudo isn't # available. We should figure out how to solve this for real, either with # virtualenv or with the pyenv mechanism Hypothesis uses: # http://www.drmaciver.com/2015/10/a-whirlwind-tour-of-the-hypothesis-build/ matrix: include: - os: osx env: TRAVIS_PYTHON=python2.6 - os: osx env: TRAVIS_PYTHON=python2.7 - os: osx env: TRAVIS_PYTHON=python3.5 - os: osx env: TRAVIS_PYTHON=python3.6 - os: osx osx_image: xcode7.3 env: TRAVIS_PYTHON=python2.7 ENABLE_ASAN=1 - os: osx osx_image: xcode7.3 env: TRAVIS_PYTHON=python3.5 ENABLE_ASAN=1 - os: osx osx_image: xcode8.3 env: TRAVIS_PYTHON=python3.6 ENABLE_ASAN=1 - os: linux env: TRAVIS_PYTHON=python2.7 ENABLE_ASAN=1 CXX=g++-5 compiler: gcc-5 - os: linux env: TRAVIS_PYTHON=python3.5 ENABLE_ASAN=1 CXX=g++-5 compiler: gcc-5 - os: linux env: TRAVIS_PYTHON=python3.6 ENABLE_ASAN=1 CXX=g++-6 compiler: gcc-6 - os: linux env: TRAVIS_PYTHON=python2.7 CXX=g++-4.8 compiler: gcc-4.8 - os: linux env: TRAVIS_PYTHON=python3.5 CXX=g++-4.8 compiler: gcc-4.8 - os: linux env: TRAVIS_PYTHON=python3.6 CXX=g++-4.8 compiler: gcc-4.8 before_script: ./travis/deps.sh script: ./travis/run.sh watchman-4.9.0/ChildProcess.cpp000066400000000000000000000401241314236077500164250ustar00rootroot00000000000000/* Copyright 2017-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "ChildProcess.h" #include #include #include "Future.h" #include "Logging.h" #include "make_unique.h" #include "watchman_scopeguard.h" namespace watchman { ChildProcess::Environment::Environment() { // Construct the map from the current process environment uint32_t nenv, i; const char* eq; const char* ent; for (i = 0, nenv = 0; environ[i]; i++) { nenv++; } map_.reserve(nenv); for (i = 0; environ[i]; i++) { ent = environ[i]; eq = strchr(ent, '='); if (!eq) { continue; } // slice name=value into a key and a value string w_string str(ent, W_STRING_BYTE); auto key = str.slice(0, (uint32_t)(eq - ent)); auto val = str.slice( 1 + (uint32_t)(eq - ent), (uint32_t)(str.size() - (key.size() + 1))); // Replace rather than set, just in case we somehow have duplicate // keys in our environment array. map_[key] = val; } } ChildProcess::Environment::Environment( const std::unordered_map& map) : map_(map) {} /* Constructs an envp array from a hash table. * The returned array occupies a single contiguous block of memory * such that it can be released by a single call to free(3). * The last element of the returned array is set to NULL for compatibility * with posix_spawn() */ std::unique_ptr ChildProcess::Environment::asEnviron(size_t* env_size) const { size_t len = (1 + map_.size()) * sizeof(char*); // Make a pass through to compute the required memory size for (const auto& it : map_) { const auto& key = it.first; const auto& val = it.second; // key=value\0 len += key.size() + 1 + val.size() + 1; } auto envp = (char**)malloc(len); if (!envp) { throw std::bad_alloc(); } auto result = std::unique_ptr(envp, Deleter()); // Now populate auto buf = (char*)(envp + map_.size() + 1); size_t i = 0; for (const auto& it : map_) { const auto& key = it.first; const auto& val = it.second; envp[i++] = buf; // key=value\0 memcpy(buf, key.data(), key.size()); buf += key.size(); memcpy(buf, "=", 1); buf++; memcpy(buf, val.data(), val.size()); buf += val.size(); *buf = 0; buf++; } envp[map_.size()] = nullptr; if (env_size) { *env_size = len; } return result; } void ChildProcess::Environment::set(const w_string& key, const w_string& val) { map_[key] = val; } void ChildProcess::Environment::set(const w_string& key, bool bval) { if (bval) { map_[key] = "true"; } else { map_.erase(key); } } void ChildProcess::Environment::set( std::initializer_list> pairs) { for (auto& pair : pairs) { set(pair.first.asWString(), pair.second.asWString()); } } void ChildProcess::Environment::unset(const w_string& key) { map_.erase(key); } ChildProcess::Options::Options() : inner_(make_unique()) { #ifdef POSIX_SPAWN_CLOEXEC_DEFAULT setFlags(POSIX_SPAWN_CLOEXEC_DEFAULT); #endif } ChildProcess::Options::Inner::Inner() { posix_spawnattr_init(&attr); posix_spawn_file_actions_init(&actions); } ChildProcess::Options::Inner::~Inner() { posix_spawn_file_actions_destroy(&actions); posix_spawnattr_destroy(&attr); } void ChildProcess::Options::setFlags(short flags) { short currentFlags; auto err = posix_spawnattr_getflags(&inner_->attr, ¤tFlags); if (err) { throw std::system_error( err, std::generic_category(), "posix_spawnattr_getflags"); } err = posix_spawnattr_setflags(&inner_->attr, currentFlags | flags); if (err) { throw std::system_error( err, std::generic_category(), "posix_spawnattr_setflags"); } } #ifdef POSIX_SPAWN_SETSIGMASK void ChildProcess::Options::setSigMask(const sigset_t& mask) { posix_spawnattr_setsigmask(&inner_->attr, &mask); setFlags(POSIX_SPAWN_SETSIGMASK); } #endif ChildProcess::Environment& ChildProcess::Options::environment() { return env_; } void ChildProcess::Options::dup2(int fd, int targetFd) { auto err = posix_spawn_file_actions_adddup2(&inner_->actions, fd, targetFd); if (err) { throw std::system_error( err, std::generic_category(), "posix_spawn_file_actions_adddup2"); } } void ChildProcess::Options::dup2(const FileDescriptor& fd, int targetFd) { #ifdef _WIN32 auto err = posix_spawn_file_actions_adddup2_handle_np( &inner_->actions, fd.handle(), targetFd); if (err) { throw std::system_error( err, std::generic_category(), "posix_spawn_file_actions_adddup2_handle_np"); } #else auto err = posix_spawn_file_actions_adddup2(&inner_->actions, fd.fd(), targetFd); if (err) { throw std::system_error( err, std::generic_category(), "posix_spawn_file_actions_adddup2"); } #endif } void ChildProcess::Options::open( int targetFd, const char* path, int flags, int mode) { auto err = posix_spawn_file_actions_addopen( &inner_->actions, targetFd, path, flags, mode); if (err) { throw std::system_error( err, std::generic_category(), "posix_spawn_file_actions_addopen"); } } void ChildProcess::Options::pipe(int targetFd, bool childRead) { if (pipes_.find(targetFd) != pipes_.end()) { throw std::runtime_error("targetFd is already present in pipes map"); } auto result = pipes_.emplace(std::make_pair(targetFd, make_unique())); auto pipe = result.first->second.get(); #ifndef _WIN32 pipe->read.clearNonBlock(); pipe->write.clearNonBlock(); #endif dup2(childRead ? pipe->read : pipe->write, targetFd); } void ChildProcess::Options::pipeStdin() { pipe(STDIN_FILENO, true); } void ChildProcess::Options::pipeStdout() { pipe(STDOUT_FILENO, false); } void ChildProcess::Options::pipeStderr() { pipe(STDERR_FILENO, false); } void ChildProcess::Options::nullStdin() { #ifdef _WIN32 open(STDIN_FILENO, "NUL", O_RDONLY, 0); #else open(STDIN_FILENO, "/dev/null", O_RDONLY, 0); #endif } void ChildProcess::Options::chdir(w_string_piece path) { cwd_ = std::string(path.data(), path.size()); #ifdef _WIN32 posix_spawnattr_setcwd_np(&inner_->attr, cwd_.c_str()); #endif } static std::vector json_args_to_string_vec( const json_ref& args) { std::vector vec; for (auto& arg : args.array()) { vec.emplace_back(json_to_w_string(arg)); } return vec; } ChildProcess::ChildProcess(const json_ref& args, Options&& options) : ChildProcess(json_args_to_string_vec(args), std::move(options)) {} ChildProcess::ChildProcess(std::vector args, Options&& options) : pipes_(std::move(options.pipes_)) { std::vector argv; std::vector argStrings; argStrings.reserve(args.size()); argv.reserve(args.size() + 1); for (auto& str : args) { argStrings.emplace_back(str.data(), str.size()); argv.emplace_back(&argStrings.back()[0]); } argv.emplace_back(nullptr); #ifndef _WIN32 auto lock = lockCwdMutex(); char savedCwd[WATCHMAN_NAME_MAX]; if (!getcwd(savedCwd, sizeof(savedCwd))) { throw std::system_error(errno, std::generic_category(), "failed to getcwd"); } SCOPE_EXIT { if (!options.cwd_.empty()) { if (chdir(savedCwd) != 0) { // log(FATAL) rather than throw because SCOPE_EXIT is // a noexcept destructor and will call std::terminate // in this case anyway. log(FATAL, "failed to restore cwd of ", savedCwd); } } }; if (!options.cwd_.empty()) { if (chdir(options.cwd_.c_str()) != 0) { throw std::system_error( errno, std::generic_category(), watchman::to("failed to chdir to ", options.cwd_)); } } #endif auto envp = options.env_.asEnviron(); auto ret = posix_spawnp( &pid_, argv[0], &options.inner_->actions, &options.inner_->attr, &argv[0], envp.get()); if (ret) { // Failed, so the creator cannot call wait() on us. // mark us as already done. waited_ = true; } // Log some info auto level = ret == 0 ? watchman::DBG : watchman::ERR; watchman::log(level, "ChildProcess: pid=", pid_, "\n"); for (size_t i = 0; i < args.size(); ++i) { watchman::log(level, "argv[", i, "] ", args[i], "\n"); } for (size_t i = 0; envp.get()[i]; ++i) { watchman::log(level, "envp[", i, "] ", envp.get()[i], "\n"); } // Close the other ends of the pipes for (auto& it : pipes_) { if (it.first == STDIN_FILENO) { it.second->read.close(); } else { it.second->write.close(); } } if (ret) { throw std::system_error(ret, std::generic_category(), "posix_spawnp"); } } static std::mutex& getCwdMutex() { // Meyers singleton static std::mutex m; return m; } std::unique_lock ChildProcess::lockCwdMutex() { return std::unique_lock(getCwdMutex()); } ChildProcess::~ChildProcess() { if (!waited_) { watchman::log( watchman::FATAL, "you must call ChildProcess.wait() before destroying a ChildProcess\n"); } } void ChildProcess::disown() { waited_ = true; } bool ChildProcess::terminated() { if (waited_) { return true; } auto pid = waitpid(pid_, &status_, WNOHANG); if (pid == pid_) { waited_ = true; } return waited_; } int ChildProcess::wait() { if (waited_) { return status_; } while (true) { auto pid = waitpid(pid_, &status_, 0); if (pid == pid_) { waited_ = true; return status_; } if (errno != EINTR) { throw std::system_error(errno, std::generic_category(), "waitpid"); } } } void ChildProcess::kill( #ifndef _WIN32 int signo #endif ) { #ifndef _WIN32 if (!waited_) { ::kill(pid_, signo); } #endif } std::pair ChildProcess::communicate( pipeWriteCallback writeCallback) { #ifdef _WIN32 return threadedCommunicate(writeCallback); #else return pollingCommunicate(writeCallback); #endif } #ifndef _WIN32 std::pair ChildProcess::pollingCommunicate( pipeWriteCallback writeCallback) { std::unordered_map outputs; for (auto& it : pipes_) { if (it.first != STDIN_FILENO) { // We only want output streams here continue; } watchman::log( watchman::DBG, "Setting up output buffer for fd ", it.first, "\n"); outputs.emplace(std::make_pair(it.first, "")); } std::vector pfds; std::unordered_map revmap; pfds.reserve(pipes_.size()); revmap.reserve(pipes_.size()); while (!pipes_.empty()) { revmap.clear(); pfds.clear(); watchman::log( watchman::DBG, "Setting up pollfds for ", pipes_.size(), " fds\n"); for (auto& it : pipes_) { pollfd pfd; if (it.first == STDIN_FILENO) { pfd.fd = it.second->write.fd(); pfd.events = POLLOUT; } else { pfd.fd = it.second->read.fd(); pfd.events = POLLIN; } pfds.emplace_back(std::move(pfd)); revmap[pfd.fd] = it.first; } int r; do { watchman::log(watchman::DBG, "waiting for ", pfds.size(), " fds\n"); r = ::poll(pfds.data(), pfds.size(), -1); } while (r == -1 && errno == EINTR); if (r == -1) { watchman::log(watchman::ERR, "poll error\n"); throw std::system_error(errno, std::generic_category(), "poll"); } for (auto& pfd : pfds) { watchman::log( watchman::DBG, "fd ", pfd.fd, " revmap to ", revmap[pfd.fd], " has events ", pfd.revents, "\n"); if ((pfd.revents & (POLLHUP | POLLIN)) && revmap[pfd.fd] != STDIN_FILENO) { watchman::log( watchman::DBG, "fd ", pfd.fd, " rev=", revmap[pfd.fd], " is readable\n"); char buf[BUFSIZ]; auto l = ::read(pfd.fd, buf, sizeof(buf)); if (l == -1 && (errno == EAGAIN || errno == EINTR)) { watchman::log( watchman::DBG, "fd ", pfd.fd, " rev=", revmap[pfd.fd], " read give EAGAIN\n"); continue; } if (l == -1) { int err = errno; watchman::log( watchman::ERR, "failed to read from pipe fd ", pfd.fd, " err ", strerror(err), "\n"); throw std::system_error( err, std::generic_category(), "reading from child process"); } watchman::log( watchman::DBG, "fd ", pfd.fd, " rev=", revmap[pfd.fd], " read ", l, " bytes\n"); if (l == 0) { // Stream is done; close it out. pipes_.erase(revmap[pfd.fd]); continue; } outputs[revmap[pfd.fd]].append(buf, l); } if ((pfd.revents & POLLOUT) && revmap[pfd.fd] == STDIN_FILENO && writeCallback(pipes_.at(revmap[pfd.fd])->write)) { // We should close it watchman::log( watchman::DBG, "fd ", pfd.fd, " rev ", revmap[pfd.fd], " writer says to close\n"); pipes_.erase(revmap[pfd.fd]); continue; } if (pfd.revents & (POLLHUP | POLLERR)) { // Something wrong with it, so close it pipes_.erase(revmap[pfd.fd]); watchman::log( watchman::DBG, "fd ", pfd.fd, " rev ", revmap[pfd.fd], " error status, so closing\n"); continue; } } watchman::log(watchman::DBG, "remaining pipes ", pipes_.size(), "\n"); } auto optBuffer = [&](int fd) -> w_string { auto it = outputs.find(fd); if (it == outputs.end()) { watchman::log(watchman::DBG, "communicate fd ", fd, " nullptr\n"); return nullptr; } watchman::log( watchman::DBG, "communicate fd ", fd, " gives ", it->second, "\n"); return w_string(it->second.data(), it->second.size()); }; return std::make_pair(optBuffer(STDOUT_FILENO), optBuffer(STDERR_FILENO)); } #endif /** Spawn a thread to read from the pipe connected to the specified fd. * Returns a Future that will hold a string with the entire output from * that stream. */ Future ChildProcess::readPipe(int fd) { auto it = pipes_.find(fd); if (it == pipes_.end()) { return makeFuture(w_string(nullptr)); } auto p = std::make_shared>(); std::thread thr([this, fd, p] { std::string result; try { auto& pipe = pipes_[fd]; while (true) { char buf[4096]; auto readResult = pipe->read.read(buf, sizeof(buf)); if (readResult.hasError()) { p->setException( std::make_exception_ptr(std::system_error(readResult.error()))); return; } auto len = readResult.value(); if (len == 0) { // all done break; } result.append(buf, len); } p->setValue(w_string(result.data(), result.size())); } catch (const std::exception& exc) { p->setException(std::current_exception()); } }); thr.detach(); return p->getFuture(); } /** threadedCommunicate uses threads to read from the output streams. * It is intended to be used on Windows where there is no reasonable * way to carry out a non-blocking read on a pipe. We compile and * test it on all platforms to make it easier to avoid regressions. */ std::pair ChildProcess::threadedCommunicate( pipeWriteCallback writeCallback) { auto outFuture = readPipe(STDOUT_FILENO); auto errFuture = readPipe(STDERR_FILENO); auto it = pipes_.find(STDIN_FILENO); if (it != pipes_.end()) { auto& inPipe = pipes_[STDIN_FILENO]; while (!writeCallback(inPipe->write)) { ; // keep trying to greedily write to the pipe } // Close the input stream; this typically signals the child // process that we're done and allows us to safely block // on the reads below. pipes_.erase(STDIN_FILENO); } return std::make_pair(outFuture.get(), errFuture.get()); } } watchman-4.9.0/ChildProcess.h000066400000000000000000000130341314236077500160720ustar00rootroot00000000000000/* Copyright 2017-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #pragma once #include "watchman_system.h" #include #include #include #include #include #include "Future.h" #include "Pipe.h" #include "thirdparty/jansson/jansson.h" #include "watchman_string.h" namespace watchman { class ChildProcess { public: struct Deleter { void operator()(char** vec) const { free((void*)vec); } }; class Environment { public: // Constructs an environment from the current process environment Environment(); Environment(const Environment&) = default; /* implicit */ Environment( const std::unordered_map& map); Environment& operator=(const Environment&) = default; // Returns the environment as an environ compatible array std::unique_ptr asEnviron(size_t* env_size = nullptr) const; // Set a value in the environment void set(const w_string& key, const w_string& value); void set( std::initializer_list> pairs); void set(const w_string& key, bool bval); // Remove a value from the environment void unset(const w_string& key); private: std::unordered_map map_; }; class Options { public: Options(); // Not copyable Options(const Options&) = delete; Options(Options&&) = default; Options& operator=(const Options&) = delete; Options& operator=(Options&&) = default; #ifdef POSIX_SPAWN_SETSIGMASK void setSigMask(const sigset_t& mask); #endif // Adds flags to the set of flags maintainted in the spawn attributes. // This is logically equivalent to calling setflags(getflags()|flags) void setFlags(short flags); Environment& environment(); // Arranges to duplicate an fd from the parent as targetFd in // the child process. void dup2(int sourceFd, int targetFd); void dup2(const FileDescriptor& fd, int targetFd); // Arranges to create a pipe for communicating between the // parent and child process and setting it as targetFd in // the child. void pipe(int targetFd, bool childRead); // Set up stdin with a pipe void pipeStdin(); // Set up stdout with a pipe void pipeStdout(); // Set up stderr with a pipe void pipeStderr(); // Set up stdin with a null device void nullStdin(); // Arrange to open(2) a file for the child process and make // it available as targetFd void open(int targetFd, const char* path, int flags, int mode); // Arrange to set the cwd for the child process void chdir(w_string_piece path); private: struct Inner { // There is no defined way to copy or move either of // these things, so we separate them out into a container // that we can point to and move the pointer. posix_spawn_file_actions_t actions; posix_spawnattr_t attr; Inner(); ~Inner(); }; std::unique_ptr inner_; Environment env_; std::unordered_map> pipes_; std::string cwd_; friend class ChildProcess; }; ChildProcess(std::vector args, Options&& options); ChildProcess(const json_ref& args, Options&& options); ~ChildProcess(); // Check to see if the process has terminated. // Does not block. Returns true if the process has // terminated, false otherwise. bool terminated(); // Wait for the process to terminate and return its // exit status. If the process has already terminated, // immediately returns its exit status. int wait(); // Disassociate from the running process. // We will no longer be able to wait for it to complete. // This causes minor leakage of resources. void disown(); // This mutex is present to avoid fighting over the cwd when multiple // process might need to chdir concurrently static std::unique_lock lockCwdMutex(); // Terminates the process void kill( #ifndef _WIN32 int signo = SIGTERM #endif ); // The pipeWriteCallback is called by communicate when it is safe to write // data to the pipe. The callback should then attempt to write to it. // The callback must return true when it has nothing more // to write to the input of the child. This will cause the // pipe to be closed. // Note that the pipe may be non-blocking, and you must not loop attempting // to write data to the pipe - the caller will arrange to call you again // if you return false (e.g. after a partial write). using pipeWriteCallback = std::function; /** ChildProcess::communicate() performs a read/write operation. * The provided pipeWriteCallback allows sending data to the input stream. * communicate() will return with the pair of output and error streams once * they have been completely consumed. */ std::pair communicate( pipeWriteCallback writeCallback = [](FileDescriptor&) { // If not provided by the caller, we're just going to close the input // stream return true; }); // these are public for the sake of testing. You should use the // communicate() method instead of calling these directly. std::pair pollingCommunicate(pipeWriteCallback writable); std::pair threadedCommunicate(pipeWriteCallback writable); private: pid_t pid_; bool waited_{false}; int status_; std::unordered_map> pipes_; Future readPipe(int fd); }; } watchman-4.9.0/ContentHash.cpp000066400000000000000000000107341314236077500162650ustar00rootroot00000000000000/* Copyright 2017-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "ContentHash.h" #include "ThreadPool.h" #include "watchman_hash.h" #include "watchman_stream.h" #ifdef __APPLE__ #define COMMON_DIGEST_FOR_OPENSSL #include "CommonCrypto/CommonDigest.h" #elif defined(_WIN32) #include #else #include #endif #include #include "Logging.h" #include "FileSystem.h" #include "watchman_scopeguard.h" namespace watchman { using HashValue = typename ContentHashCache::HashValue; using Node = typename ContentHashCache::Node; bool ContentHashCacheKey::operator==(const ContentHashCacheKey& other) const { return fileSize == other.fileSize && mtime.tv_sec == other.mtime.tv_sec && mtime.tv_nsec == other.mtime.tv_nsec && relativePath == other.relativePath; } std::size_t ContentHashCacheKey::hashValue() const { return hash_128_to_64( w_string_hval(relativePath), hash_128_to_64(fileSize, hash_128_to_64(mtime.tv_sec, mtime.tv_nsec))); } ContentHashCache::ContentHashCache( const w_string& rootPath, size_t maxItems, std::chrono::milliseconds errorTTL) : cache_(maxItems, errorTTL), rootPath_(rootPath) {} Future> ContentHashCache::get( const ContentHashCacheKey& key) { return cache_.get( key, [this](const ContentHashCacheKey& k) { return computeHash(k); }); } HashValue ContentHashCache::computeHashImmediate( const ContentHashCacheKey& key) const { HashValue result; uint8_t buf[8192]; auto fullPath = w_string::pathCat({rootPath_, key.relativePath}); auto stm = w_stm_open(fullPath.c_str(), O_RDONLY); if (!stm) { throw std::system_error( errno, std::generic_category(), to("w_stm_open ", fullPath)); } #ifndef _WIN32 SHA_CTX ctx; SHA1_Init(&ctx); while (true) { auto n = stm->read(buf, sizeof(buf)); if (n == 0) { break; } if (n < 0) { throw std::system_error( errno, std::generic_category(), to("while reading from ", fullPath)); } SHA1_Update(&ctx, buf, n); } SHA1_Final(result.data(), &ctx); #else // Use the built-in crypt provider API on windows to avoid introducing a // dependency on openssl in the windows build. HCRYPTPROV provider{0}; HCRYPTHASH ctx{0}; if (!CryptAcquireContext( &provider, nullptr, nullptr, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT | CRYPT_SILENT)) { throw std::system_error( GetLastError(), std::system_category(), "CryptAcquireContext"); } SCOPE_EXIT { CryptReleaseContext(provider, 0); }; if (!CryptCreateHash(provider, CALG_SHA1, 0, 0, &ctx)) { throw std::system_error( GetLastError(), std::system_category(), "CryptCreateHash"); } SCOPE_EXIT { CryptDestroyHash(ctx); }; while (true) { auto n = stm->read(buf, sizeof(buf)); if (n == 0) { break; } if (n < 0) { throw std::system_error( errno, std::generic_category(), to("while reading from ", fullPath)); } if (!CryptHashData(ctx, buf, n, 0)) { throw std::system_error( GetLastError(), std::system_category(), "CryptHashData"); } } DWORD size = result.size(); if (!CryptGetHashParam(ctx, HP_HASHVAL, result.data(), &size, 0)) { throw std::system_error( GetLastError(), std::system_category(), "CryptGetHashParam HP_HASHVAL"); } #endif // Since TOCTOU is everywhere and everything, double check to make sure that // the file looks like we were expecting at the start. If it isn't, then // we want to throw an exception and avoid associating the hash of whatever // state we just read with this cache key. auto stat = getFileInformation(fullPath.c_str()); if (size_t(stat.size) != key.fileSize || stat.mtime.tv_sec != key.mtime.tv_sec || stat.mtime.tv_nsec != key.mtime.tv_nsec) { throw std::runtime_error( "metadata changed during hashing; query again to get latest status"); } return result; } Future ContentHashCache::computeHash( const ContentHashCacheKey& key) const { return makeFuture(key) .via(&getThreadPool()) .then([this](Result&& key) { return computeHashImmediate(key.value()); }); } const w_string& ContentHashCache::rootPath() const { return rootPath_; } CacheStats ContentHashCache::stats() const { return cache_.stats(); } } watchman-4.9.0/ContentHash.h000066400000000000000000000042471314236077500157340ustar00rootroot00000000000000/* Copyright 2017-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #pragma once #include "watchman_system.h" #include #include "LRUCache.h" #include "watchman_string.h" namespace watchman { struct ContentHashCacheKey { // Path relative to the watched root w_string relativePath; // file size in bytes size_t fileSize; // The modification time struct timespec mtime; // Computes a hash value for use in the cache map std::size_t hashValue() const; bool operator==(const ContentHashCacheKey& other) const; }; } namespace std { template <> struct hash { std::size_t operator()(watchman::ContentHashCacheKey const& key) const { return key.hashValue(); } }; } namespace watchman { class ContentHashCache { public: using HashValue = std::array; using Node = LRUCache::NodeType; // Construct a cache for a given root, holding the specified // maximum number of items, using the configured negative // caching TTL. ContentHashCache( const w_string& rootPath, size_t maxItems, std::chrono::milliseconds errorTTL); // Obtain the content hash for the given input. // If the result is in the cache it will return a ready future // holding the result. Otherwise, computeHash will be invoked // to populate the cache. Returns a future with the result // of the lookup. Future> get(const ContentHashCacheKey& key); // Compute the hash value for a given input. // This will block the calling thread while the I/O is performed. // Throws exceptions for any errors that may occur. HashValue computeHashImmediate(const ContentHashCacheKey& key) const; // Compute the hash value for a given input via the thread pool. // Returns a future to operate on the result of this async operation Future computeHash(const ContentHashCacheKey& key) const; // Returns the root path that this cache is associated with const w_string& rootPath() const; // Returns cache statistics CacheStats stats() const; private: LRUCache cache_; w_string rootPath_; }; } watchman-4.9.0/CookieSync.cpp000066400000000000000000000073271314236077500161210ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman_system.h" #include #include "watchman.h" namespace watchman { CookieSync::Cookie::Cookie(w_string name) : fileName(name) {} CookieSync::Cookie::~Cookie() { // The file may not exist at this point; we're just taking this // opportunity to remove it if nothing else has done so already. // We don't care about the return code; best effort is fine. unlink(fileName.c_str()); } CookieSync::CookieSync(const w_string& dir) { setCookieDir(dir); } CookieSync::~CookieSync() { // Wake up anyone that might have been waiting on us abortAllCookies(); } void CookieSync::setCookieDir(const w_string& dir) { cookieDir_ = dir; char hostname[256]; gethostname(hostname, sizeof(hostname)); hostname[sizeof(hostname) - 1] = '\0'; cookiePrefix_ = w_string::printf( "%.*s/" WATCHMAN_COOKIE_PREFIX "%s-%d-", int(cookieDir_.size()), cookieDir_.data(), hostname, int(getpid())); } Future CookieSync::sync() { /* generate a cookie name: cookie prefix + id */ auto path_str = w_string::printf( "%.*s%" PRIu32, int(cookiePrefix_.size()), cookiePrefix_.data(), serial_++); auto cookie = make_unique(path_str); auto future = cookie->promise.getFuture(); /* insert our cookie in the map */ { auto wlock = cookies_.wlock(); auto& map = *wlock; map[path_str] = std::move(cookie); } /* then touch the file */ auto file = w_stm_open( path_str.c_str(), O_CREAT | O_TRUNC | O_WRONLY | O_CLOEXEC, 0700); if (!file) { auto errcode = errno; // The erase will unlink the file cookies_.wlock()->erase(path_str); throw std::system_error( errcode, std::generic_category(), to( "sync: creat(", path_str, ") failed: ", strerror(errcode))); } log(DBG, "sync created cookie file ", path_str, "\n"); return future; } bool CookieSync::syncToNow(std::chrono::milliseconds timeout) { /* compute deadline */ using namespace std::chrono; auto deadline = system_clock::now() + timeout; while (true) { auto cookie = sync(); if (!cookie.wait_for(timeout)) { log(ERR, "syncToNow: timed out waiting for cookie file to be " "observed by watcher within ", timeout.count(), " milliseconds\n"); errno = ETIMEDOUT; return false; } if (cookie.result().hasError()) { // Sync was aborted by a recrawl; recompute the timeout // and wait again if we still have time timeout = duration_cast(deadline - system_clock::now()); if (timeout.count() <= 0) { errno = ETIMEDOUT; return false; } // wait again continue; } // Success! return true; } } void CookieSync::abortAllCookies() { std::unordered_map> cookies; { auto map = cookies_.wlock(); std::swap(*map, cookies); } for (auto& it : cookies) { log(ERR, "syncToNow: aborting cookie ", it.first, "\n"); it.second->promise.setException( std::make_exception_ptr(CookieSyncAborted())); } } void CookieSync::notifyCookie(const w_string& path) { std::unique_ptr cookie; { auto map = cookies_.wlock(); auto cookie_iter = map->find(path); log(DBG, "cookie for ", path, "? ", cookie_iter != map->end() ? "yes" : "no", "\n"); if (cookie_iter != map->end()) { cookie = std::move(cookie_iter->second); map->erase(cookie_iter); } } if (cookie) { cookie->promise.setValue(Unit{}); // cookie file will be unlinked when we exit this scope } } } watchman-4.9.0/CookieSync.h000066400000000000000000000055331314236077500155630ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #pragma once #include "Future.h" #include "watchman_synchronized.h" #define WATCHMAN_COOKIE_PREFIX ".watchman-cookie-" namespace watchman { class CookieSyncAborted : public std::exception {}; class CookieSync { public: explicit CookieSync(const w_string& dir); ~CookieSync(); void setCookieDir(const w_string& dir); /* Ensure that we're synchronized with the state of the * filesystem at the current time. * We do this by touching a cookie file and waiting to * observe it via inotify. When we see it we know that * we've seen everything up to the point in time at which * we're asking questions. * Returns true if we observe the change within the requested * time, false otherwise. */ bool syncToNow(std::chrono::milliseconds timeout); /** Touches a cookie file and returns a Future that will * be ready when that cookie file is processed by the IO * thread at some future time. * Important: if you chain a lambda onto the future, it * will execute in the context of the IO thread. * It is recommended that you minimize the actions performed * in that context to avoid holding up the IO thread. **/ Future sync(); /* If path is a valid cookie in the map, notify the waiter. * Returns true if the path matches the cookie prefix (not just * whether the cookie is currently valid). * Returns false if the path does not match our cookie prefix. */ void notifyCookie(const w_string& path); /* Cause all pending cookie sync promises to complete immediately * with a CookieSyncAborted exception */ void abortAllCookies(); // We need to guarantee that we never collapse a cookie notification // out of the pending list, because we absolutely must observe it coming // in via the kernel notification mechanism in order for synchronization // to be correct. // Since we don't have a w_root_t available, we can't tell what the // precise cookie prefix is for the current pending list here, so // we do a substring match. Not the most elegant thing in the world. static inline bool isPossiblyACookie(const w_string_t* path) { return w_string_contains_cstr_len( path, WATCHMAN_COOKIE_PREFIX, sizeof(WATCHMAN_COOKIE_PREFIX) - 1); } const w_string& cookiePrefix() const { return cookiePrefix_; } const w_string& cookieDir() const { return cookieDir_; } private: struct Cookie { Promise promise; w_string fileName; explicit Cookie(w_string name); ~Cookie(); }; // path to the query cookie dir w_string cookieDir_; // valid filename prefix for cookies we create w_string cookiePrefix_; // Serial number for cookie filename std::atomic serial_{0}; Synchronized>> cookies_; }; } watchman-4.9.0/FileDescriptor.cpp000066400000000000000000000525211314236077500167650ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "FileDescriptor.h" #include "FileSystem.h" #include "watchman.h" #ifdef __APPLE__ #include #include #include #endif #include #ifdef _WIN32 #include "WinIoCtl.h" #endif #include "watchman_scopeguard.h" #if defined(_WIN32) || defined(O_PATH) #define CAN_OPEN_SYMLINKS 1 #else #define CAN_OPEN_SYMLINKS 0 #endif #ifdef _WIN32 // We declare our own copy here because Ntifs.h is not included in the // standard install of the Visual Studio Community compiler. namespace { struct REPARSE_DATA_BUFFER { ULONG ReparseTag; USHORT ReparseDataLength; USHORT Reserved; union { struct { USHORT SubstituteNameOffset; USHORT SubstituteNameLength; USHORT PrintNameOffset; USHORT PrintNameLength; ULONG Flags; WCHAR PathBuffer[1]; } SymbolicLinkReparseBuffer; struct { USHORT SubstituteNameOffset; USHORT SubstituteNameLength; USHORT PrintNameOffset; USHORT PrintNameLength; WCHAR PathBuffer[1]; } MountPointReparseBuffer; struct { UCHAR DataBuffer[1]; } GenericReparseBuffer; }; }; } #endif namespace watchman { FileDescriptor::~FileDescriptor() { close(); } FileDescriptor::system_handle_type FileDescriptor::normalizeHandleValue( system_handle_type h) { #ifdef _WIN32 // Windows uses both 0 and INVALID_HANDLE_VALUE as invalid handle values. if (h == intptr_t(INVALID_HANDLE_VALUE) || h == 0) { return FileDescriptor::kInvalid; } #else // Posix defines -1 to be an invalid value, but we'll also recognize and // normalize any negative descriptor value. if (h < 0) { return FileDescriptor::kInvalid; } #endif return h; } FileDescriptor::FileDescriptor(FileDescriptor::system_handle_type fd) : fd_(normalizeHandleValue(fd)) {} FileDescriptor::FileDescriptor( FileDescriptor::system_handle_type fd, const char* operation) : fd_(normalizeHandleValue(fd)) { if (fd_ == kInvalid) { throw std::system_error( errno, std::generic_category(), std::string(operation) + ": " + strerror(errno)); } } FileDescriptor::FileDescriptor(FileDescriptor&& other) noexcept : fd_(other.release()) {} FileDescriptor& FileDescriptor::operator=(FileDescriptor&& other) noexcept { close(); fd_ = other.fd_; other.fd_ = kInvalid; return *this; } void FileDescriptor::close() { if (fd_ != kInvalid) { #ifndef _WIN32 ::close(fd_); #else CloseHandle((HANDLE)fd_); #endif fd_ = kInvalid; } } FileDescriptor::system_handle_type FileDescriptor::release() { system_handle_type result = fd_; fd_ = kInvalid; return result; } void FileDescriptor::setCloExec() { #ifndef _WIN32 ignore_result(fcntl(fd_, F_SETFD, FD_CLOEXEC)); #endif } void FileDescriptor::setNonBlock() { #ifndef _WIN32 ignore_result(fcntl(fd_, F_SETFL, fcntl(fd_, F_GETFL) | O_NONBLOCK)); #endif } void FileDescriptor::clearNonBlock() { #ifndef _WIN32 ignore_result(fcntl(fd_, F_SETFL, fcntl(fd_, F_GETFL) & ~O_NONBLOCK)); #endif } bool FileDescriptor::isNonBlock() const { #ifndef _WIN32 return (fcntl(fd_, F_GETFL) & O_NONBLOCK) == O_NONBLOCK; #else return false; #endif } #if !CAN_OPEN_SYMLINKS /** Checks that the basename component of the input path exactly * matches the canonical case of the path on disk. * It only makes sense to call this function on a case insensitive filesystem. * If the case does not match, throws an exception. */ static void checkCanonicalBaseName(const char *path) { #ifdef __APPLE__ struct attrlist attrlist; struct { uint32_t len; attrreference_t ref; char canonical_name[WATCHMAN_NAME_MAX]; } vomit; w_string_piece pathPiece(path); auto base = pathPiece.baseName(); memset(&attrlist, 0, sizeof(attrlist)); attrlist.bitmapcount = ATTR_BIT_MAP_COUNT; attrlist.commonattr = ATTR_CMN_NAME; if (getattrlist(path, &attrlist, &vomit, sizeof(vomit), FSOPT_NOFOLLOW) == -1) { throw std::system_error(errno, std::generic_category(), to("checkCanonicalBaseName(", path, "): getattrlist failed")); } w_string_piece name(((char *)&vomit.ref) + vomit.ref.attr_dataoffset); if (name != base) { throw std::system_error( ENOENT, std::generic_category(), to("checkCanonicalBaseName(", path, "): (", name, ") doesn't match canonical base (", base, ")")); } #else // Older Linux and BSDish systems are in this category. // This is the awful portable fallback used in the absence of // a system specific way to detect this. w_string_piece pathPiece(path); auto parent = pathPiece.dirName().asWString(); auto dir = w_dir_open(parent.c_str()); auto base = pathPiece.baseName(); while (true) { auto ent = dir->readDir(); if (!ent) { // We didn't find an entry that exactly matched -> fail throw std::system_error( ENOENT, std::generic_category(), to("checkCanonicalBaseName(", path, "): no match found in parent dir")); } // Note: we don't break out early if we get a case-insensitive match // because the dir may contain multiple representations of the same // name. For example, Bash-for-Windows has dirs that contain both // "pod" and "Pod" dirs in its perl installation. We want to make // sure that we've observed all of the entries in the dir before // giving up. if (w_string_piece(ent->d_name) == base) { // Exact match; all is good! return; } } #endif } #endif FileDescriptor openFileHandle(const char *path, const OpenFileHandleOptions &opts) { #ifndef _WIN32 int flags = (!opts.followSymlinks ? O_NOFOLLOW : 0) | (opts.closeOnExec ? O_CLOEXEC : 0) | #ifdef O_PATH (opts.metaDataOnly ? O_PATH : 0) | #endif ((opts.readContents && opts.writeContents) ? O_RDWR : (opts.writeContents ? O_WRONLY : opts.readContents ? O_RDONLY : 0)) | (opts.create ? O_CREAT : 0) | (opts.exclusiveCreate ? O_EXCL : 0) | (opts.truncate ? O_TRUNC : 0); auto fd = open(path, flags); if (fd == -1) { int err = errno; throw std::system_error( err, std::generic_category(), to("open: ", path)); } FileDescriptor file(fd); #else // _WIN32 DWORD access = 0, share = 0, create = 0, attrs = 0; DWORD err; SECURITY_ATTRIBUTES sec; if (!strcmp(path, "/dev/null")) { path = "NUL:"; } auto wpath = w_string_piece(path).asWideUNC(); if (opts.metaDataOnly) { access = 0; } else { if (opts.writeContents) { access |= GENERIC_WRITE; } if (opts.readContents) { access |= GENERIC_READ; } } // We want more posix-y behavior by default share = FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE; memset(&sec, 0, sizeof(sec)); sec.nLength = sizeof(sec); sec.bInheritHandle = TRUE; if (opts.closeOnExec) { sec.bInheritHandle = FALSE; } if (opts.create && opts.exclusiveCreate) { create = CREATE_NEW; } else if (opts.create && opts.truncate) { create = CREATE_ALWAYS; } else if (opts.create) { create = OPEN_ALWAYS; } else if (opts.truncate) { create = TRUNCATE_EXISTING; } else { create = OPEN_EXISTING; } attrs = FILE_FLAG_POSIX_SEMANTICS | FILE_FLAG_BACKUP_SEMANTICS; if (!opts.followSymlinks) { attrs |= FILE_FLAG_OPEN_REPARSE_POINT; } FileDescriptor file(intptr_t( CreateFileW(wpath.c_str(), access, share, &sec, create, attrs, nullptr))); err = GetLastError(); if (!file) { throw std::system_error( err, std::system_category(), std::string("CreateFileW for openFileHandle: ") + path); } #endif if (!opts.strictNameChecks) { return file; } auto opened = file.getOpenedPath(); if (w_string_piece(opened).pathIsEqual(path)) { #if !CAN_OPEN_SYMLINKS CaseSensitivity caseSensitive = opts.caseSensitive; if (caseSensitive == CaseSensitivity::Unknown) { caseSensitive = getCaseSensitivityForPath(path); } if (caseSensitive == CaseSensitivity::CaseInSensitive) { // We need to perform one extra check for case-insensitive // paths to make sure that we didn't accidentally open // the wrong case name. checkCanonicalBaseName(path); } #endif return file; } throw std::system_error( ENOENT, std::generic_category(), to("open(", path, "): opened path doesn't match canonical path ", opened)); } FileInformation FileDescriptor::getInfo() const { #ifndef _WIN32 struct stat st; if (fstat(fd_, &st)) { int err = errno; throw std::system_error(err, std::generic_category(), "fstat"); } return FileInformation(st); #else // _WIN32 FILE_BASIC_INFO binfo; FILE_STANDARD_INFO sinfo; if (!GetFileInformationByHandleEx( (HANDLE)handle(), FileBasicInfo, &binfo, sizeof(binfo))) { throw std::system_error( GetLastError(), std::system_category(), "GetFileInformationByHandleEx FileBasicInfo"); } FileInformation info(binfo.FileAttributes); FILETIME_LARGE_INTEGER_to_timespec(binfo.CreationTime, &info.ctime); FILETIME_LARGE_INTEGER_to_timespec(binfo.LastAccessTime, &info.atime); FILETIME_LARGE_INTEGER_to_timespec(binfo.LastWriteTime, &info.mtime); if (!GetFileInformationByHandleEx( (HANDLE)handle(), FileStandardInfo, &sinfo, sizeof(sinfo))) { throw std::system_error( GetLastError(), std::system_category(), "GetFileInformationByHandleEx FileStandardInfo"); } info.size = sinfo.EndOfFile.QuadPart; info.nlink = sinfo.NumberOfLinks; return info; #endif } w_string FileDescriptor::getOpenedPath() const { #if defined(F_GETPATH) // macOS. The kernel interface only allows MAXPATHLEN char buf[MAXPATHLEN + 1]; if (fcntl(fd_, F_GETPATH, buf) == -1) { throw std::system_error(errno, std::generic_category(), "fcntl for getOpenedPath"); } return w_string(buf); #elif defined(__linux__) char procpath[1024]; snprintf(procpath, sizeof(procpath), "/proc/%d/fd/%d", getpid(), fd_); // Avoid an extra stat by speculatively attempting to read into // a reasonably sized buffer. char buf[WATCHMAN_NAME_MAX]; auto len = readlink(procpath, buf, sizeof(buf)); if (len == sizeof(buf)) { len = -1; // We need to stat it to discover the required length errno = ENAMETOOLONG; } if (len >= 0) { return w_string(buf, len); } if (errno == ENOENT) { // For this path to not exist must mean that /proc is not mounted. // Report this with an actionable message throw std::system_error(ENOSYS, std::generic_category(), "getOpenedPath: need /proc to be mounted!"); } if (errno != ENAMETOOLONG) { throw std::system_error(errno, std::generic_category(), "readlink for getOpenedPath"); } // Figure out how much space we need struct stat st; if (fstat(fd_, &st)) { throw std::system_error(errno, std::generic_category(), "fstat for getOpenedPath"); } std::string result; result.resize(st.st_size + 1, 0); len = readlink(procpath, &result[0], result.size()); if (len == int(result.size())) { // It's longer than we expected; TOCTOU detected! throw std::system_error( ENAMETOOLONG, std::generic_category(), "readlinkat: link contents grew while examining file"); } if (len >= 0) { return w_string(&result[0], len); } throw std::system_error(errno, std::generic_category(), "readlink for getOpenedPath"); #elif defined(_WIN32) std::wstring wchar; wchar.resize(WATCHMAN_NAME_MAX); auto len = GetFinalPathNameByHandleW( (HANDLE)fd_, &wchar[0], wchar.size(), FILE_NAME_NORMALIZED | VOLUME_NAME_DOS); auto err = GetLastError(); if (len >= wchar.size()) { // Grow it wchar.resize(len); len = GetFinalPathNameByHandleW( (HANDLE)fd_, &wchar[0], len, FILE_NAME_NORMALIZED | VOLUME_NAME_DOS); err = GetLastError(); } if (len == 0) { throw std::system_error( GetLastError(), std::system_category(), "GetFinalPathNameByHandleW"); } return w_string(wchar.data(), len); #else throw std::system_error(ENOSYS, std::generic_category(), "getOpenedPath not implemented on this platform"); #endif } w_string readSymbolicLink(const char* path) { #ifndef _WIN32 std::string result; // Speculatively assume that this is large enough to read the // symlink text. This helps to avoid an extra lstat call. result.resize(256); for (int retry = 0; retry < 2; ++retry) { auto len = readlink(path, &result[0], result.size()); if (len < 0) { throw std::system_error( errno, std::generic_category(), "readlink for readSymbolicLink"); } if (size_t(len) < result.size()) { return w_string(result.data(), len); } // Truncated read; we need to figure out the right size to use struct stat st; if (lstat(path, &st)) { throw std::system_error( errno, std::generic_category(), "lstat for readSymbolicLink"); } result.resize(st.st_size + 1, 0); } throw std::system_error( E2BIG, std::generic_category(), "readlink for readSymbolicLink: symlink changed while reading it"); #else return openFileHandle(path, OpenFileHandleOptions::queryFileInfo()) .readSymbolicLink(); #endif } w_string FileDescriptor::readSymbolicLink() const { #ifndef _WIN32 struct stat st; if (fstat(fd_, &st)) { throw std::system_error( errno, std::generic_category(), "fstat for readSymbolicLink"); } std::string result; result.resize(st.st_size + 1, 0); #ifdef __linux__ // Linux 2.6.39 and later provide this interface auto atlen = readlinkat(fd_, "", &result[0], result.size()); if (atlen == int(result.size())) { // It's longer than we expected; TOCTOU detected! throw std::system_error( ENAMETOOLONG, std::generic_category(), "readlinkat: link contents grew while examining file"); } if (atlen >= 0) { return w_string(result.data(), atlen); } // if we get ENOTDIR back then we're probably on an older linux and // should fall back to the technique used below. if (errno != ENOTDIR) { throw std::system_error( errno, std::generic_category(), "readlinkat for readSymbolicLink"); } #endif auto myName = getOpenedPath(); auto len = readlink(myName.c_str(), &result[0], result.size()); if (len == int(result.size())) { // It's longer than we expected; TOCTOU detected! throw std::system_error( ENAMETOOLONG, std::generic_category(), "readlink: link contents grew while examining file"); } if (len >= 0) { return w_string(result.data(), len); } throw std::system_error( errno, std::generic_category(), "readlink for readSymbolicLink"); #else // _WIN32 DWORD len = 64 * 1024; auto buf = malloc(len); if (!buf) { throw std::bad_alloc(); } SCOPE_EXIT { free(buf); }; WCHAR* target; USHORT targetlen; auto result = DeviceIoControl( (HANDLE)fd_, FSCTL_GET_REPARSE_POINT, nullptr, 0, buf, len, &len, nullptr); // We only give one retry; if the size changed again already, we'll // have another pending notify from the OS to go look at it again // later, and it's totally fine to give up here for now. if (!result && GetLastError() == ERROR_INSUFFICIENT_BUFFER) { free(buf); buf = malloc(len); if (!buf) { throw std::bad_alloc(); } result = DeviceIoControl( (HANDLE)fd_, FSCTL_GET_REPARSE_POINT, nullptr, 0, buf, len, &len, nullptr); } if (!result) { throw std::system_error( GetLastError(), std::system_category(), "FSCTL_GET_REPARSE_POINT"); } auto rep = reinterpret_cast(buf); switch (rep->ReparseTag) { case IO_REPARSE_TAG_SYMLINK: target = rep->SymbolicLinkReparseBuffer.PathBuffer + (rep->SymbolicLinkReparseBuffer.SubstituteNameOffset / sizeof(WCHAR)); targetlen = rep->SymbolicLinkReparseBuffer.SubstituteNameLength / sizeof(WCHAR); break; case IO_REPARSE_TAG_MOUNT_POINT: target = rep->MountPointReparseBuffer.PathBuffer + (rep->MountPointReparseBuffer.SubstituteNameOffset / sizeof(WCHAR)); targetlen = rep->MountPointReparseBuffer.SubstituteNameLength / sizeof(WCHAR); break; default: throw std::system_error( ENOSYS, std::generic_category(), "Unsupported ReparseTag"); } return w_string(target, targetlen); #endif } w_string realPath(const char *path) { auto options = OpenFileHandleOptions::queryFileInfo(); // Follow symlinks, because that's really the point of this function options.followSymlinks = 1; options.strictNameChecks = 0; #ifdef _WIN32 // Special cases for cwd w_string_piece pathPiece(path); // On Windows, "" is used to refer to the CWD. // We also allow using "." for parity with unix, even though that // doesn't generally work for that purpose on windows. // This allows `watchman watch-project .` to succeeed on windows. if (pathPiece.size() == 0 || pathPiece == ".") { std::wstring wchar; wchar.resize(WATCHMAN_NAME_MAX); auto len = GetCurrentDirectoryW(wchar.size(), &wchar[0]); auto err = GetLastError(); if (len == 0) { throw std::system_error(err, std::system_category(), "GetCurrentDirectoryW"); } // Assumption: that the OS maintains the CWD in canonical form return w_string(wchar.data(), len); } #endif auto handle = openFileHandle(path, options); return handle.getOpenedPath(); } FileInformation getFileInformation(const char *path, CaseSensitivity caseSensitive) { auto options = OpenFileHandleOptions::queryFileInfo(); options.caseSensitive = caseSensitive; #if defined(_WIN32) || defined(O_PATH) // These operating systems allow opening symlink nodes and querying them // for stat information auto handle = openFileHandle(path, options); auto info = handle.getInfo(); return info; #else // Since the leaf of the path may be a symlink, and this system doesn't // allow opening symlinks for stat purposes, we have to resort to performing // a relative fstatat() from the parent dir. w_string_piece pathPiece(path); auto parent = pathPiece.dirName().asWString(); auto handle = openFileHandle(parent.c_str(), options); struct stat st; if (fstatat( handle.fd(), pathPiece.baseName().data(), &st, AT_SYMLINK_NOFOLLOW)) { throw std::system_error(errno, std::generic_category(), "fstatat"); } if (caseSensitive == CaseSensitivity::Unknown) { caseSensitive = getCaseSensitivityForPath(path); } if (caseSensitive == CaseSensitivity::CaseInSensitive) { // We need to perform one extra check for case-insensitive // paths to make sure that we didn't accidentally open // the wrong case name. checkCanonicalBaseName(path); } return FileInformation(st); #endif } CaseSensitivity getCaseSensitivityForPath(const char *path) { #ifdef __APPLE__ return pathconf(path, _PC_CASE_SENSITIVE) ? CaseSensitivity::CaseSensitive : CaseSensitivity::CaseInSensitive; #elif defined(_WIN32) unused_parameter(path); return CaseSensitivity::CaseInSensitive; #else unused_parameter(path); return CaseSensitivity::CaseSensitive; #endif } Result FileDescriptor::read(void* buf, int size) const { #ifndef _WIN32 auto result = ::read(fd_, buf, size); if (result == -1) { int errcode = errno; return Result( std::error_code(errcode, std::generic_category())); } return Result(result); #else DWORD result = 0; if (!ReadFile((HANDLE)fd_, buf, size, &result, nullptr)) { return Result( std::error_code(GetLastError(), std::system_category())); } return Result(result); #endif } Result FileDescriptor::write(const void* buf, int size) const { #ifndef _WIN32 auto result = ::write(fd_, buf, size); if (result == -1) { int errcode = errno; return Result( std::error_code(errcode, std::generic_category())); } return Result(result); #else DWORD result = 0; if (!WriteFile((HANDLE)fd_, buf, size, &result, nullptr)) { return Result( std::error_code(GetLastError(), std::system_category())); } return Result(result); #endif } const FileDescriptor& FileDescriptor::stdIn() { static FileDescriptor f( #ifdef _WIN32 intptr_t(GetStdHandle(STD_INPUT_HANDLE)) #else STDIN_FILENO #endif ); return f; } const FileDescriptor& FileDescriptor::stdOut() { static FileDescriptor f( #ifdef _WIN32 intptr_t(GetStdHandle(STD_OUTPUT_HANDLE)) #else STDOUT_FILENO #endif ); return f; } const FileDescriptor& FileDescriptor::stdErr() { static FileDescriptor f( #ifdef _WIN32 intptr_t(GetStdHandle(STD_ERROR_HANDLE)) #else STDERR_FILENO #endif ); return f; } } watchman-4.9.0/FileDescriptor.h000066400000000000000000000075771314236077500164450ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #pragma once #include "watchman_system.h" #include #include "Result.h" class w_string; namespace watchman { struct FileInformation; // Manages the lifetime of a system independent file descriptor. // On POSIX systems this is a posix file descriptor. // On Win32 systems this is a Win32 HANDLE object. // It will close() the descriptor when it is destroyed. class FileDescriptor { public: using system_handle_type = #ifdef _WIN32 // We track the HANDLE value as intptr_t to avoid needing // to pull in the windows header files all over the place; // this is consistent with the _get_osfhandle function in // the msvcrt library. intptr_t #else int #endif ; // A value representing the canonical invalid handle // value for the system. static constexpr system_handle_type kInvalid = -1; // Normalizes invalid handle values to our canonical invalid handle value. // Otherwise, just returns the handle as-is. static system_handle_type normalizeHandleValue(system_handle_type h); ~FileDescriptor(); // Default construct to an empty instance FileDescriptor() = default; // Construct a file descriptor object from an fd. // Will happily accept an invalid handle value without // raising an error; the FileDescriptor will simply evaluate as // false in a boolean context. explicit FileDescriptor(system_handle_type fd); // Construct a file descriptor object from an fd. // If fd is invalid will throw a generic error with a message // constructed from the provided operation name and the current // errno value. FileDescriptor(system_handle_type fd, const char* operation); // No copying FileDescriptor(const FileDescriptor&) = delete; FileDescriptor& operator=(const FileDescriptor&) = delete; FileDescriptor(FileDescriptor&& other) noexcept; FileDescriptor& operator=(FileDescriptor&& other) noexcept; // Closes the associated descriptor void close(); // Stops tracking the descriptor, returning it to the caller. // The caller is then responsible for closing it. system_handle_type release(); // In a boolean context, returns true if this object owns // a valid descriptor. explicit operator bool() const { return fd_ != kInvalid; } // Returns the underlying descriptor value inline system_handle_type system_handle() const { return fd_; } #ifndef _WIN32 // Returns the descriptor value as a file descriptor. // This method is only present on posix systems to aid in // detecting non-portable use at compile time. inline int fd() const { return fd_; } #else // Returns the descriptor value as a file handle. // This method is only present on win32 systems to aid in // detecting non-portable use at compile time. inline intptr_t handle() const { return fd_; } #endif // Set the close-on-exec bit void setCloExec(); // Enable non-blocking IO void setNonBlock(); // Disable non-blocking IO void clearNonBlock(); // Returns true if the FD is in non-blocking mode bool isNonBlock() const; /** equivalent to fstat(2) */ FileInformation getInfo() const; /** Returns the filename associated with the file handle */ w_string getOpenedPath() const; /** Returns the symbolic link target */ w_string readSymbolicLink() const; /** read(2), but yielding a Result for system independent error reporting */ Result read(void* buf, int size) const; /** write(2), but yielding a Result for system independent error reporting */ Result write(const void* buf, int size) const; // Return a global handle to one of the standard IO stream descriptors static const FileDescriptor& stdIn(); static const FileDescriptor& stdOut(); static const FileDescriptor& stdErr(); private: system_handle_type fd_{kInvalid}; }; } watchman-4.9.0/FileInformation.cpp000066400000000000000000000044761314236077500171420ustar00rootroot00000000000000/* Copyright 2017-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "FileInformation.h" #include "watchman_time.h" namespace watchman { #ifndef _WIN32 FileInformation::FileInformation(const struct stat& st) : mode(st.st_mode), size(off_t(st.st_size)), uid(st.st_uid), gid(st.st_gid), ino(st.st_ino), dev(st.st_dev), nlink(st.st_nlink) { memcpy(&atime, &st.WATCHMAN_ST_TIMESPEC(a), sizeof(atime)); memcpy(&mtime, &st.WATCHMAN_ST_TIMESPEC(m), sizeof(mtime)); memcpy(&ctime, &st.WATCHMAN_ST_TIMESPEC(c), sizeof(ctime)); } #endif #ifdef _WIN32 FileInformation::FileInformation(uint32_t dwFileAttributes) : fileAttributes(dwFileAttributes) { if (fileAttributes & FILE_ATTRIBUTE_READONLY) { mode = 0444; } else { mode = 0666; } if (fileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) { // It's a symlink, but to be msvc compatible, we report // this as a file. Note that a reparse point can also // have FILE_ATTRIBUTE_DIRECTORY set if the symlink was // created with the intention of it appearing as a file. mode |= _S_IFREG; } else if (fileAttributes & FILE_ATTRIBUTE_DIRECTORY) { mode |= _S_IFDIR | 0111 /* executable/searchable */; } else { mode |= _S_IFREG; } } #endif bool FileInformation::isSymlink() const { #ifdef _WIN32 // We treat all reparse points as equivalent to symlinks return fileAttributes & FILE_ATTRIBUTE_REPARSE_POINT; #else return S_ISLNK(mode); #endif } bool FileInformation::isDir() const { #ifdef _WIN32 // Note that junctions have both DIRECTORY and REPARSE_POINT set, // so we have to check both bits to make sure that we only report // this as a dir if it isn't a junction, otherwise we will fail to // opendir. return (fileAttributes & (FILE_ATTRIBUTE_DIRECTORY | FILE_ATTRIBUTE_REPARSE_POINT)) == FILE_ATTRIBUTE_DIRECTORY; #else return S_ISDIR(mode); #endif } bool FileInformation::isFile() const { #ifdef _WIN32 // We can't simply test for FILE_ATTRIBUTE_NORMAL as that is only // valid when no other bits are set. Instead we check for the absence // of DIRECTORY and REPARSE_POINT to decide that it is a regular file. return (fileAttributes & (FILE_ATTRIBUTE_DIRECTORY | FILE_ATTRIBUTE_REPARSE_POINT)) == 0; #else return S_ISREG(mode); #endif } } watchman-4.9.0/FileInformation.h000066400000000000000000000035541314236077500166030ustar00rootroot00000000000000/* Copyright 2017-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #pragma once #include "watchman_system.h" #include namespace watchman { #ifdef _WIN32 using mode_t = int; using dev_t = int; using gid_t = int; using uid_t = int; using ino_t = unsigned int; using nlink_t = unsigned int; #endif struct FileInformation { // On POSIX systems, the complete mode information. // On Windows, this is lossy wrt. symlink information, // so it is preferable to use isSymlink() rather than // S_ISLNK() on the mode value. mode_t mode{0}; off_t size{0}; // On Windows systems, these fields are approximated // from cheaply available information in a way that is // consistent with msvcrt which is widely used by many // native win32 applications (including python). uid_t uid{0}; gid_t gid{0}; ino_t ino{0}; dev_t dev{0}; nlink_t nlink{0}; #ifdef _WIN32 uint32_t fileAttributes{0}; #endif struct timespec atime { 0, 0 }; struct timespec mtime { 0, 0 }; struct timespec ctime { 0, 0 }; // Returns true if this file information references // a symlink, false otherwise. bool isSymlink() const; // Returns true if this file information references // a directory, false otherwise. bool isDir() const; // Returns true if this file information references // a regular file, false otherwise. bool isFile() const; #ifndef _WIN32 explicit FileInformation(const struct stat& st); #else // Partially initialize the common fields. // There are a number of different forms of windows specific data // types that hold the rest of the information and we don't want // to pollute the headers with them, so those are populated // externally by the APIs declared elsewhere in this header file. explicit FileInformation(uint32_t dwFileAttributes); #endif FileInformation() = default; }; } watchman-4.9.0/FileSystem.h000066400000000000000000000063131314236077500155760ustar00rootroot00000000000000/* Copyright 2017-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #pragma once #include "FileInformation.h" #include "FileDescriptor.h" #include "Result.h" /** This header defines platform independent helper functions for * operating on the filesystem at a low level. * These functions are intended to be used to query information from * the filesystem, rather than implementing a full-fledged abstraction * for general purpose use. * * One of the primary features of this header is to provide an OS-Independent * alias for the OS-Dependent file descriptor type. * * The functions in this file generally return or operate on an instance of * that type. */ namespace watchman { enum class CaseSensitivity { // The caller knows that the filesystem path(s) in question are // case insensitive. CaseInSensitive, // The caller knows that the filesystem path(s) in question are // case sensitive. CaseSensitive, // The caller does not know if the path(s) are case sensitive Unknown, }; /** Returns CaseSensitive or CaseInSensitive depending on the * case sensitivity of the input path. */ CaseSensitivity getCaseSensitivityForPath(const char *path); /** Windows doesn't have equivalent bits for all of the various * open(2) flags, so we abstract it out here */ struct OpenFileHandleOptions { unsigned followSymlinks : 1; // O_NOFOLLOW unsigned closeOnExec : 1; // O_CLOEXEC unsigned metaDataOnly : 1; // avoid accessing file contents unsigned readContents : 1; // the read portion of O_RDONLY or O_RDWR unsigned writeContents : 1; // the write portion of O_WRONLY or O_RDWR unsigned create : 1; // O_CREAT unsigned exclusiveCreate : 1; // O_EXCL unsigned truncate : 1; // O_TRUNC unsigned strictNameChecks : 1; CaseSensitivity caseSensitive; OpenFileHandleOptions() : followSymlinks(0), closeOnExec(1), metaDataOnly(0), readContents(0), writeContents(0), create(0), exclusiveCreate(0), truncate(0), strictNameChecks(1), caseSensitive(CaseSensitivity::Unknown) {} static inline OpenFileHandleOptions queryFileInfo() { OpenFileHandleOptions opts; opts.metaDataOnly = 1; return opts; } static inline OpenFileHandleOptions openDir() { OpenFileHandleOptions opts; opts.readContents = 1; opts.strictNameChecks = false; opts.followSymlinks = 1; return opts; } static inline OpenFileHandleOptions strictOpenDir() { OpenFileHandleOptions opts; opts.readContents = 1; opts.strictNameChecks = true; opts.followSymlinks = 0; return opts; } }; /** equivalent to open(2) * This function is not intended to be used to create files, * just to open a file handle to query its metadata */ FileDescriptor openFileHandle( const char* path, const OpenFileHandleOptions& opts); /** equivalent to lstat(2), but performs strict name checking */ FileInformation getFileInformation(const char *path, CaseSensitivity caseSensitive = CaseSensitivity::Unknown); /** equivalent to realpath() */ w_string realPath(const char *path); /** equivalent to readlink() */ w_string readSymbolicLink(const char* path); } #ifdef _WIN32 int mkdir(const char* path, int); #endif watchman-4.9.0/Future.h000066400000000000000000000360311314236077500147640ustar00rootroot00000000000000/* Copyright 2017-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #pragma once #include #include #include #include #include #include "Result.h" namespace watchman { // An executor is a very light abstraction over something that can run // some function. We use this to perform the WaitableResult callback // in some other context (eg: ThreadPool). In practice, this is used // to move the execution context for a .then call to a worker thread. struct Executor { virtual ~Executor() = default; virtual void run(std::function&& func) = 0; }; // WaitableResult encapsulates a Result and allows waiting and notifying // and interested party. You are not expected to create an instance of this // class directly; it is used as the shared state between the Promise and // Future classes. template class WaitableResult : public std::enable_shared_from_this> { static_assert(!std::is_same::value, "use Unit instead of void"); public: WaitableResult() = default; explicit WaitableResult(Result&& t) : result_(std::move(t)) {} WaitableResult(const WaitableResult&) = delete; WaitableResult(WaitableResult&&) = delete; // Assign to the underlying Result. // After assigning, dispatch any associated callback and notify any waiters template void assign(U&& value) { std::unique_lock lock(mutex_); result_ = Result(std::forward(value)); maybeCallback(std::move(lock)); } // Get a reference to the enclosed result Result& result() { return result_; } // Wait until the result is no longer empty void wait() const { std::unique_lock lock(mutex_); condition_.wait(lock, [&] { return !result_.empty(); }); } // Wait for up to the specified duration. // Returns true as soon as the result is no longer empty. // Returns false if the result is still empty after duration has // passed. template bool wait_for(const std::chrono::duration& duration) { std::unique_lock lock(mutex_); return condition_.wait_for( lock, duration, [&] { return !result_.empty(); }); } // Associate a callback with the result. // This is intended for use by internal plumbing and a casual // user of a Future should not call this method; instead, // you want to use Future::then(). // // The callback will be dispatched when the assign() method // is called. If the assign() method was called prior to // setCallback(), it will be called by setCallback(). // // It is possible for the callback to fire twice for the // same Future if setExecutor() was used to assign an // executor that runs immediately, and if the callback // throws an exception. If this happens, callback will be // called a second time with the Result containing the // exception that it called previously. Throwing an // exception in that context will bubble up to the caller // of assign(). // // If you stick to Future::then(), you don't need to // worry about this. template void setCallback(Func&& func) { std::unique_lock lock(mutex_); callback_ = std::forward(func); if (!result_.empty()) { maybeCallback(std::move(lock)); } } // Change the executor associated with the future void setExecutor(Executor* executor) { std::unique_lock lock(mutex_); executor_ = executor; } private: Result result_; mutable std::condition_variable condition_; mutable std::mutex mutex_; std::function&&)> callback_; Executor* executor_{nullptr}; // If a callback is set, call it. // Then notify any waiters that the result is available. void maybeCallback(std::unique_lock&& lock) { if (result_.empty()) { return; } if (callback_) { // Ensure that we are kept alive while we dispatch the callback auto scope_guard = this->shared_from_this(); // Steal the callback std::function &&)> func; std::swap(func, callback_); // For safety, ensure that we are unlocked while calling the callback. // While the intent is that the executor run the callback in a // different thread context, it may choose to run something // immediately. lock.unlock(); if (executor_) { try { // Unfortunately, have to make a copy of func here in // order to have sane exception handling executor_->run([scope_guard, this, func] { func(std::move(result_)); }); condition_.notify_all(); return; } catch (const std::exception& exc) { // We get here if executor_->run() threw an exception. // This is most likely to happen if the thread pool is // full, but we can't make any assumptions of the nature // of the exception; it may have simply run the callback // immediately, and we're just seeing the exception from // the callback here. // We're really only capturing this so that we can // propagate thread pool errors through the exception // chain. // Replace the current value with the exception, and we'll // dispatch the exception to the callback below. result_ = Result(std::current_exception()); } } // We don't catch and propagate exceptions that this function // throws (like we do in the executor case above), because // the callback is supposed to manage exceptions and do // the right thing for itself. func(std::move(result_)); } condition_.notify_all(); } }; template class Promise; template class Future; // A little bit of helper glue for unwrapping Future> template struct isFuture : std::false_type { using Inner = typename Unit::Lift::type; }; template struct isFuture> : std::true_type { using Inner = T; }; // Extracts the return type of a functor call template using resultOf = decltype(std::declval()(std::declval()...)); // The Future is the client side of the Promise/Future pair. // A Promise can return a single instance of a Future. The two // are linked by a shared WaitableResult object. // A Future is only safe for access from a single thread at a time. template class Future { static_assert(!std::is_same::value, "use Unit instead of void"); public: using value_type = T; Future() noexcept = default; // Moveable Future(Future&&) noexcept = default; Future& operator=(Future&&) noexcept = default; // Not copyable Future(const Future&) = delete; Future& operator=(const Future&) = delete; // makeFuture() uses this to build ready Future instances explicit Future(std::shared_ptr> state) : state_(state) {} // Block until the associated Promise is fulfilled void wait() const { if (!state_) { throw std::logic_error("Future has no shared state"); } state_->wait(); } // Wait for up to the specified duration for the associated Promise to // be fulfilled. // Returns true as soon as the Promise is fulfilled. // Returns false if the Promise was not fulfilled within the specified // duration. template bool wait_for(const std::chrono::duration& duration) const { if (!state_) { throw std::logic_error("Future has no shared state"); } return state_->wait_for(duration); } // Returns true if the associated Promise has been fulfilled. bool isReady() const { return this->wait_for(std::chrono::milliseconds(0)); } // Waits for the Promise to be fulfilled, then returns a reference // to the value in the promise. // If the Result holds an error this will cause the error to be // thrown. T& get() { return result().value(); } // As get() above, but returns a const reference. const T& get() const { return result().value(); } // Waits for the Promise to be fulfilled, then returns a reference // to the Result in the promise. Result& result() { wait(); return state_->result(); } // Waits for the Promise to be fulfilled, then returns a const reference // to the Result in the promise. const Result& result() const { wait(); return state_->result(); } // Chain a future together with some action to happen once // it is ready. // f.then([](Result&& result) { return something; }) // This handles the case where something is not a Future<> template typename std::enable_if< !isFuture&&>>::value, Future&&>>::Inner>>::type then(Func&& func) { using Ret = typename isFuture&&>>::Inner; struct thenState { Promise promise; Func func; thenState(Func&& func) : func(std::forward(func)) {} }; auto state = std::make_shared(std::forward(func)); auto result = state->promise.getFuture(); state_->setCallback([state](Result&& result) { state->promise.setResult(makeResultWith( [&]() mutable { return state->func(std::move(result)); })); }); return result; } // Chain a future together with some action to happen once // it is ready. // f.then([](Result&& result) { return something; }) // This handles the case where something is a Future<> and // unwraps it so that the result of .then is Future<> rather // than Future>. template typename std::enable_if< isFuture&&>>::value, Future&&>>::Inner>>::type then(Func&& func) { using Ret = resultOf&&>; using InnerRet = typename isFuture::Inner; struct thenState { Promise promise; Func func; thenState(Func&& func) : func(std::forward(func)) {} }; auto state = std::make_shared(std::forward(func)); auto result = state->promise.getFuture(); state_->setCallback([state](Result&& res) { try { auto future = state->func(std::move(res)); future.setCallback([state](Result&& res2) { state->promise.setResult(std::move(res2)); }); } catch (const std::exception& exc) { state->promise.setException(std::current_exception()); } }); return result; } // Exposes setCallback for .then when unwrapping Future>. // Since Future> is a different class from Future, // we have to make this public. // You probably want to use .then() and not this directly. template void setCallback(Func&& func) { state_->setCallback(std::forward(func)); } // Returns a future with its execution context switched to the provided // executor. A subsequent then() call will be dispatched by that // executor. Note that, depending on timing, this sequence: // makeFuture().via(exec).then(A).then(B) // will execute A in the context of exec, but may execute B either in // exec or the current context. If you need to ensure the execution // context for a then() call, you must precede it with a via() call // and supply the appropriate executor: // makeFuture().via(exec).then(A).via(exec).then(B) Future via(Executor* executor) && { state_->setExecutor(executor); return std::move(*this); } private: std::shared_ptr> state_; }; // The Promise is the server side of the Promise/Future pair. template class Promise { static_assert(!std::is_same::value, "use Unit instead of void"); public: // Default construct to an un-fulfilled Promise Promise() : state_(std::make_shared>()) {} // Moveable Promise(Promise&&) noexcept = default; Promise& operator=(Promise&&) noexcept = default; // Copyable Promise(const Promise&) = delete; Promise& operator=(const Promise&) = delete; // Fulfills the promise with a value of type T. // Causes any waiters/callbacks associated with the Promise to be // notified/dispatched. // It is an error fulfill the same promise multiple times. void setValue(T&& value) { setResult(Result(std::forward(value))); } // Fulfills the promise with a Result. // Causes any waiters/callbacks associated with the Promise to be // notified/dispatched. // It is an error fulfill the same promise multiple times. void setResult(Result&& result) { if (assigned_) { throw std::logic_error("Promise already fulfilled"); } assigned_ = true; state_->assign(std::move(result)); } // Fulfills the promise with an exception. // Causes any waiters/callbacks associated with the Promise to be // notified/dispatched. // It is an error fulfill the same promise multiple times. void setException(std::exception_ptr exc) { setResult(Result(exc)); } // Returns a Future associated with this Promise. The Future // allows a client to wait for the results. // It is an error to call getFuture() multiple times. Future getFuture() { if (gotFuture_) { throw std::logic_error("Future already obtained"); } gotFuture_ = true; return Future(state_); } private: std::shared_ptr> state_; bool gotFuture_{false}; bool assigned_{false}; }; // Convert a Result to a Future that is ready immediately template Future makeFuture(Result&& t) { return Future(std::make_shared>(std::move(t))); } // Helper for making an already fulfilled Future from a value; // auto-deduces the Value type. template Future::type> makeFuture(T&& t) { return makeFuture(Result::type>(std::forward(t))); } inline Future makeFuture() { return makeFuture(Result(Unit{})); } // Yields a Future holding a vector> for each of the input futures template Future::value_type::value_type>>> collectAll(InputIterator first, InputIterator last) { using T = typename std::iterator_traits::value_type::value_type; struct CollectAll { // Pre-allocate enough room for all results to avoid needing to // synchronize when the callback assigns everything CollectAll(size_t n) : results(n) {} // The destructor triggers the assignment and fulfillment of the Promise ~CollectAll() { p.setValue(std::move(results)); } Promise>> p; std::vector> results; }; auto state = std::make_shared(std::distance(first, last)); size_t i = 0; while (first != last) { first->setCallback([state, i](Result&& result) { state->results[i] = std::move(result); }); ++i; ++first; } return state->p.getFuture(); } } watchman-4.9.0/InMemoryView.cpp000066400000000000000000000542651314236077500164500ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "InMemoryView.h" #include #include #include "ThreadPool.h" #include "make_unique.h" #include "watchman.h" #include "watchman_scopeguard.h" // Each root gets a number that uniquely identifies it within the process. This // helps avoid confusion if a root is removed and then added again. static std::atomic next_root_number{1}; namespace watchman { InMemoryFileResult::InMemoryFileResult( const watchman_file* file, ContentHashCache& contentHashCache) : file_(file), contentHashCache_(contentHashCache) {} const FileInformation& InMemoryFileResult::stat() const { return file_->stat; } w_string_piece InMemoryFileResult::baseName() const { return file_->getName(); } w_string_piece InMemoryFileResult::dirName() { if (!dirName_) { dirName_ = file_->parent->getFullPath(); } return dirName_; } bool InMemoryFileResult::exists() const { return file_->exists; } const w_clock_t& InMemoryFileResult::ctime() const { return file_->ctime; } const w_clock_t& InMemoryFileResult::otime() const { return file_->otime; } Future InMemoryFileResult::readLink() const { return makeFuture(file_->symlink_target); } Future InMemoryFileResult::getContentSha1() { auto dir = dirName(); dir.advance(contentHashCache_.rootPath().size()); // If dirName is the root, dir.size() will now be zero if (dir.size() > 0) { // if not at the root, skip the slash character at the // front of dir dir.advance(1); } ContentHashCacheKey key{w_string::pathCat({dir, baseName()}), size_t(file_->stat.size), file_->stat.mtime}; return contentHashCache_.get(key).then( [](Result>&& result) -> FileResult::ContentHash { return result.value()->value(); }); } InMemoryView::view::view(const w_string& root_path) : root_dir(watchman::make_unique(root_path, nullptr)), rootNumber(next_root_number++) {} InMemoryView::InMemoryView(w_root_t* root, std::shared_ptr watcher) : cookies_(root->cookies), config_(root->config), view_(view(root->root_path)), root_path(root->root_path), watcher_(watcher), contentHashCache_( root->root_path, config_.getInt("content_hash_max_items", 128 * 1024), std::chrono::milliseconds( config_.getInt("content_hash_negative_cache_ttl_ms", 2000))), enableContentCacheWarming_( config_.getBool("content_hash_warming", false)), maxFilesToWarmInContentCache_( size_t(config_.getInt("content_hash_max_warm_per_settle", 1024))), syncContentCacheWarming_( config_.getBool("content_hash_warm_wait_before_settle", false)), scm_(SCM::scmForPath(root->root_path)) {} void InMemoryView::view::insertAtHeadOfFileList(struct watchman_file* file) { file->next = latest_file; if (file->next) { file->next->prev = &file->next; } latest_file = file; file->prev = &latest_file; } void InMemoryView::markFileChanged( SyncView::LockedPtr& view, watchman_file* file, const struct timeval& now) { if (file->exists) { watcher_->startWatchFile(file); } file->otime.timestamp = now.tv_sec; file->otime.ticks = view->mostRecentTick; if (view->latest_file != file) { // unlink from list file->removeFromFileList(); // and move to the head view->insertAtHeadOfFileList(file); } } const watchman_dir* InMemoryView::resolveDir( SyncView::ConstLockedPtr& view, const w_string& dir_name) const { watchman_dir* dir; const char* dir_component; const char* dir_end; if (dir_name == root_path) { return view->root_dir.get(); } dir_component = dir_name.data(); dir_end = dir_component + dir_name.size(); dir = view->root_dir.get(); dir_component += root_path.size() + 1; // Skip root path prefix w_assert(dir_component <= dir_end, "impossible file name"); while (true) { w_string_t component; auto sep = (const char*)memchr(dir_component, '/', dir_end - dir_component); // Note: if sep is NULL it means that we're looking at the basename // component of the input directory name, which is the terminal // iteration of this search. w_string_new_len_typed_stack( &component, dir_component, sep ? (uint32_t)(sep - dir_component) : (uint32_t)(dir_end - dir_component), W_STRING_BYTE); auto child = dir->getChildDir(&component); if (!child) { return nullptr; } dir = child; if (!sep) { // We reached the end of the string if (dir) { // We found the dir return dir; } // Does not exist return nullptr; } // Skip to the next component for the next iteration dir_component = sep + 1; } return nullptr; } watchman_dir* InMemoryView::resolveDir( SyncView::LockedPtr& view, const w_string& dir_name, bool create) { watchman_dir *dir, *parent; const char* dir_component; const char* dir_end; if (dir_name == root_path) { return view->root_dir.get(); } dir_component = dir_name.data(); dir_end = dir_component + dir_name.size(); dir = view->root_dir.get(); dir_component += root_path.size() + 1; // Skip root path prefix w_assert(dir_component <= dir_end, "impossible file name"); while (true) { w_string_t component; auto sep = (const char*)memchr(dir_component, '/', dir_end - dir_component); // Note: if sep is NULL it means that we're looking at the basename // component of the input directory name, which is the terminal // iteration of this search. w_string_new_len_typed_stack( &component, dir_component, sep ? (uint32_t)(sep - dir_component) : (uint32_t)(dir_end - dir_component), W_STRING_BYTE); auto child = dir->getChildDir(&component); if (!child && !create) { return nullptr; } if (!child && sep && create) { // A component in the middle wasn't present. Since we're in create // mode, we know that the leaf must exist. The assumption is that // we have another pending item for the parent. We'll create the // parent dir now and our other machinery will populate its contents // later. w_string child_name(dir_component, (uint32_t)(sep - dir_component)); auto& new_child = dir->dirs[child_name]; new_child.reset(new watchman_dir(child_name, dir)); child = new_child.get(); } parent = dir; dir = child; if (!sep) { // We reached the end of the string if (dir) { // We found the dir return dir; } // We need to create the dir break; } // Skip to the next component for the next iteration dir_component = sep + 1; } w_string child_name(dir_component, (uint32_t)(dir_end - dir_component)); auto& new_child = parent->dirs[child_name]; new_child.reset(new watchman_dir(child_name, parent)); dir = new_child.get(); return dir; } void InMemoryView::markDirDeleted( SyncView::LockedPtr& view, struct watchman_dir* dir, const struct timeval& now, bool recursive) { if (!dir->last_check_existed) { // If we know that it doesn't exist, return early return; } dir->last_check_existed = false; for (auto& it : dir->files) { auto file = it.second.get(); if (file->exists) { auto full_name = w_dir_path_cat_str(dir, file->getName()); w_log(W_LOG_DBG, "mark_deleted: %s\n", full_name.c_str()); file->exists = false; markFileChanged(view, file, now); } } if (recursive) { for (auto& it : dir->dirs) { auto child = it.second.get(); markDirDeleted(view, child, now, true); } } } watchman_file* InMemoryView::getOrCreateChildFile( SyncView::LockedPtr& view, watchman_dir* dir, const w_string& file_name, const struct timeval& now) { // file_name is typically a baseName slice; let's use it as-is // to look up a child... auto it = dir->files.find(file_name); if (it != dir->files.end()) { return it->second.get(); } // ... but take the shorter string from inside the file that // we create as the key. auto file = watchman_file::make(file_name, dir); auto& file_ptr = dir->files[file->getName()]; file_ptr = std::move(file); file_ptr->ctime.ticks = view->mostRecentTick; file_ptr->ctime.timestamp = now.tv_sec; auto suffix = file_name.suffix(); if (suffix) { auto& sufhead = view->suffixes[suffix]; if (!sufhead) { // Create the list head if we don't already have one for this suffix. sufhead.reset(new watchman::InMemoryView::file_list_head); } file_ptr->suffix_next = sufhead->head; if (file_ptr->suffix_next) { sufhead->head->suffix_prev = &file_ptr->suffix_next; } sufhead->head = file_ptr.get(); file_ptr->suffix_prev = &sufhead->head; } watcher_->startWatchFile(file_ptr.get()); return file_ptr.get(); } void InMemoryView::ageOutFile( std::unordered_set& dirs_to_erase, watchman_file* file) { auto parent = file->parent; auto full_name = w_dir_path_cat_str(parent, file->getName()); w_log(W_LOG_DBG, "age_out file=%s\n", full_name.c_str()); // Revise tick for fresh instance reporting last_age_out_tick = std::max(last_age_out_tick, file->otime.ticks); // If we have a corresponding dir, we want to arrange to remove it, but only // after we have unlinked all of the associated file nodes. dirs_to_erase.insert(full_name); // Remove the entry from the containing file hash; this will free it. // We don't need to stop watching it, because we already stopped watching it // when we marked it as !exists. parent->files.erase(file->getName()); } void InMemoryView::ageOut(w_perf_t& sample, std::chrono::seconds minAge) { struct watchman_file *file, *prior; time_t now; uint32_t num_aged_files = 0; uint32_t num_walked = 0; std::unordered_set dirs_to_erase; time(&now); last_age_out_timestamp = now; auto view = view_.wlock(); file = view->latest_file; prior = nullptr; while (file) { ++num_walked; if (file->exists || file->otime.timestamp + minAge.count() > now) { prior = file; file = file->next; continue; } ageOutFile(dirs_to_erase, file); num_aged_files++; // Go back to last good file node; we can't trust that the // value of file->next saved before age_out_file is a valid // file node as anything past that point may have also been // aged out along with it. file = prior; } for (auto& name : dirs_to_erase) { auto parent = resolveDir(view, name.dirName(), false); if (parent) { parent->dirs.erase(name.baseName()); } } if (num_aged_files + dirs_to_erase.size()) { w_log( W_LOG_ERR, "aged %" PRIu32 " files, %" PRIu32 " dirs\n", num_aged_files, uint32_t(dirs_to_erase.size())); } sample.add_meta( "age_out", json_object({{"walked", json_integer(num_walked)}, {"files", json_integer(num_aged_files)}, {"dirs", json_integer(dirs_to_erase.size())}})); } void InMemoryView::timeGenerator(w_query* query, struct w_query_ctx* ctx) const { struct watchman_file* f; // Walk back in time until we hit the boundary auto view = view_.rlock(); for (f = view->latest_file; f; f = f->next) { ctx->bumpNumWalked(); // Note that we use <= for the time comparisons in here so that we // report the things that changed inclusive of the boundary presented. // This is especially important for clients using the coarse unix // timestamp as the since basis, as they would be much more // likely to miss out on changes if we didn't. if (ctx->since.is_timestamp && f->otime.timestamp <= ctx->since.timestamp) { break; } if (!ctx->since.is_timestamp && f->otime.ticks <= ctx->since.clock.ticks) { break; } if (!w_query_file_matches_relative_root(ctx, f)) { continue; } w_query_process_file( query, ctx, watchman::make_unique(f, contentHashCache_)); } } void InMemoryView::suffixGenerator(w_query* query, struct w_query_ctx* ctx) const { struct watchman_file* f; auto view = view_.rlock(); for (const auto& suff : query->suffixes) { // Head of suffix index for this suffix auto it = view->suffixes.find(suff); if (it == view->suffixes.end()) { continue; } // Walk and process for (f = it->second->head; f; f = f->suffix_next) { ctx->bumpNumWalked(); if (!w_query_file_matches_relative_root(ctx, f)) { continue; } w_query_process_file( query, ctx, watchman::make_unique(f, contentHashCache_)); } } } void InMemoryView::pathGenerator(w_query* query, struct w_query_ctx* ctx) const { w_string_t* relative_root; struct watchman_file* f; if (query->relative_root) { relative_root = query->relative_root; } else { relative_root = root_path; } auto view = view_.rlock(); for (const auto& path : query->paths) { const watchman_dir* dir; w_string_t* file_name; w_string dir_name; // Compose path with root auto full_name = w_string::pathCat({relative_root, path.name}); // special case of root dir itself if (w_string_equal(root_path, full_name)) { // dirname on the root is outside the root, which is useless dir = resolveDir(view, full_name); goto is_dir; } // Ideally, we'd just resolve it directly as a dir and be done. // It's not quite so simple though, because we may resolve a dir // that had been deleted and replaced by a file. // We prefer to resolve the parent and walk down. dir_name = full_name.dirName(); if (!dir_name) { continue; } dir = resolveDir(view, dir_name); if (!dir) { // Doesn't exist, and never has continue; } if (!dir->files.empty()) { file_name = w_string_basename(path.name); f = dir->getChildFile(file_name); w_string_delref(file_name); // If it's a file (but not an existent dir) if (f && (!f->exists || !f->stat.isDir())) { ctx->bumpNumWalked(); w_query_process_file( query, ctx, watchman::make_unique(f, contentHashCache_)); continue; } } // Is it a dir? if (dir->dirs.empty()) { continue; } dir = dir->getChildDir(full_name.baseName()); is_dir: // We got a dir; process recursively to specified depth if (dir) { dirGenerator(query, ctx, dir, path.depth); } } } void InMemoryView::dirGenerator( w_query* query, struct w_query_ctx* ctx, const watchman_dir* dir, uint32_t depth) const { for (auto& it : dir->files) { auto file = it.second.get(); ctx->bumpNumWalked(); w_query_process_file( query, ctx, watchman::make_unique(file, contentHashCache_)); } if (depth > 0) { for (auto& it : dir->dirs) { const auto child = it.second.get(); dirGenerator(query, ctx, child, depth - 1); } } } void InMemoryView::allFilesGenerator(w_query* query, struct w_query_ctx* ctx) const { struct watchman_file* f; auto view = view_.rlock(); for (f = view->latest_file; f; f = f->next) { ctx->bumpNumWalked(); if (!w_query_file_matches_relative_root(ctx, f)) { continue; } w_query_process_file( query, ctx, watchman::make_unique(f, contentHashCache_)); } } ClockPosition InMemoryView::getMostRecentRootNumberAndTickValue() const { auto view = view_.rlock(); return ClockPosition(view->rootNumber, view->mostRecentTick); } w_string InMemoryView::getCurrentClockString() const { auto view = view_.rlock(); char clockbuf[128]; if (!clock_id_string( view->rootNumber, view->mostRecentTick, clockbuf, sizeof(clockbuf))) { throw std::runtime_error("clock string exceeded clockbuf size"); } return w_string(clockbuf, W_STRING_UNICODE); } uint32_t InMemoryView::getLastAgeOutTickValue() const { return last_age_out_tick; } time_t InMemoryView::getLastAgeOutTimeStamp() const { return last_age_out_timestamp; } void InMemoryView::startThreads(const std::shared_ptr& root) { // Start a thread to call into the watcher API for filesystem notifications auto self = std::static_pointer_cast(shared_from_this()); w_log(W_LOG_DBG, "starting threads for %p %s\n", this, root_path.c_str()); std::thread notifyThreadInstance([self, root]() { w_set_thread_name("notify %p %s", self.get(), self->root_path.c_str()); try { self->notifyThread(root); } catch (const std::exception& e) { watchman::log(watchman::ERR, "Exception: ", e.what(), " cancel root\n"); root->cancel(); } watchman::log(watchman::DBG, "out of loop\n"); }); notifyThreadInstance.detach(); // Wait for it to signal that the watcher has been initialized bool pinged = false; pending_.lockAndWait(std::chrono::milliseconds(-1) /* infinite */, pinged); // And now start the IO thread std::thread ioThreadInstance([self, root]() { w_set_thread_name("io %p %s", self.get(), self->root_path.c_str()); try { self->ioThread(root); } catch (const std::exception& e) { watchman::log(watchman::ERR, "Exception: ", e.what(), " cancel root\n"); root->cancel(); } watchman::log(watchman::DBG, "out of loop\n"); }); ioThreadInstance.detach(); } void InMemoryView::signalThreads() { w_log(W_LOG_DBG, "signalThreads! %p %s\n", this, root_path.c_str()); stopThreads_ = true; watcher_->signalThreads(); pending_.ping(); } void InMemoryView::wakeThreads() { pending_.ping(); } bool InMemoryView::doAnyOfTheseFilesExist( const std::vector& fileNames) const { auto view = view_.rlock(); for (auto& name : fileNames) { auto fullName = w_string::pathCat({root_path, name}); const auto dir = resolveDir(view, fullName.dirName()); if (!dir) { continue; } auto file = dir->getChildFile(fullName.baseName()); if (!file) { continue; } if (file->exists) { return true; } } return false; } const std::shared_ptr& InMemoryView::getWatcher() const { return watcher_; } const w_string& InMemoryView::getName() const { return watcher_->name; } SCM* InMemoryView::getSCM() const { return scm_.get(); } void InMemoryView::warmContentCache() { if (!enableContentCacheWarming_) { return; } watchman::log( watchman::DBG, "considering files for content hash cache warming\n"); size_t n = 0; std::deque>> futures; { // Walk back in time until we hit the boundary, or hit the limit // on the number of files we should warm up. auto view = view_.rlock(); struct watchman_file* f; for (f = view->latest_file; f && n < maxFilesToWarmInContentCache_; f = f->next) { if (f->otime.ticks <= lastWarmedTick_) { watchman::log( watchman::DBG, "warmContentCache: stop because file ticks ", f->otime.ticks, " is <= lastWarmedTick_ ", lastWarmedTick_, "\n"); break; } if (f->exists && f->stat.isFile()) { // Note: we could also add an expression to further constrain // the things we warm up here. Let's see if we need it before // going ahead and adding. auto dirStr = f->parent->getFullPath(); w_string_piece dir(dirStr); dir.advance(contentHashCache_.rootPath().size()); // If dirName is the root, dir.size() will now be zero if (dir.size() > 0) { // if not at the root, skip the slash character at the // front of dir dir.advance(1); } ContentHashCacheKey key{w_string::pathCat({dir, f->getName()}), size_t(f->stat.size), f->stat.mtime}; watchman::log( watchman::DBG, "warmContentCache: lookup ", key.relativePath, "\n"); auto f = contentHashCache_.get(key); if (syncContentCacheWarming_) { futures.emplace_back(std::move(f)); } ++n; } } lastWarmedTick_ = view->mostRecentTick; } watchman::log( watchman::DBG, "warmContentCache, lastWarmedTick_ now ", lastWarmedTick_, " scheduled ", n, " files for hashing, will wait for ", futures.size(), " lookups to finish\n"); if (syncContentCacheWarming_) { // Wait for them to finish, but don't use get() because we don't // care about any errors that may have occurred. collectAll(futures.begin(), futures.end()).wait(); watchman::log(watchman::DBG, "warmContentCache: hashing complete\n"); } } void InMemoryView::debugContentHashCache( struct watchman_client* client, const json_ref& args) { /* resolve the root */ if (json_array_size(args) != 2) { send_error_response( client, "wrong number of arguments for 'debug-contenthash'"); return; } auto root = resolve_root_or_err(client, args, 1, false); if (!root) { return; } auto view = std::dynamic_pointer_cast(root->view()); if (!view) { send_error_response(client, "root is not an InMemoryView watcher"); return; } auto stats = view->contentHashCache_.stats(); auto resp = make_response(); resp.set({{"cacheHit", json_integer(stats.cacheHit)}, {"cacheShare", json_integer(stats.cacheShare)}, {"cacheMiss", json_integer(stats.cacheMiss)}, {"cacheEvict", json_integer(stats.cacheEvict)}, {"cacheStore", json_integer(stats.cacheStore)}, {"cacheLoad", json_integer(stats.cacheLoad)}, {"cacheErase", json_integer(stats.cacheErase)}, {"clearCount", json_integer(stats.clearCount)}, {"size", json_integer(stats.size)}}); send_and_dispose_response(client, std::move(resp)); } W_CMD_REG( "debug-contenthash", InMemoryView::debugContentHashCache, CMD_DAEMON, w_cmd_realpath_root); } watchman-4.9.0/InMemoryView.h000066400000000000000000000201271314236077500161030ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #pragma once #include "watchman_system.h" #include #include #include #include "ContentHash.h" #include "CookieSync.h" #include "QueryableView.h" #include "watchman_config.h" #include "watchman_opendir.h" #include "watchman_pending.h" #include "watchman_perf.h" #include "watchman_query.h" #include "watchman_string.h" struct Watcher; struct watchman_client; namespace watchman { class InMemoryFileResult : public FileResult { public: explicit InMemoryFileResult( const watchman_file* file, ContentHashCache& contentHashCache); const FileInformation& stat() const override; w_string_piece baseName() const override; w_string_piece dirName() override; bool exists() const override; Future readLink() const override; const w_clock_t& ctime() const override; const w_clock_t& otime() const override; watchman::Future getContentSha1() override; private: const watchman_file* file_; w_string dirName_; ContentHashCache& contentHashCache_; }; /** Keeps track of the state of the filesystem in-memory. */ struct InMemoryView : public QueryableView { ClockPosition getMostRecentRootNumberAndTickValue() const override; uint32_t getLastAgeOutTickValue() const override; time_t getLastAgeOutTimeStamp() const override; w_string getCurrentClockString() const override; explicit InMemoryView(w_root_t* root, std::shared_ptr watcher); void ageOut(w_perf_t& sample, std::chrono::seconds minAge) override; bool syncToNow(std::chrono::milliseconds timeout) override; bool doAnyOfTheseFilesExist( const std::vector& fileNames) const override; /** Perform a time-based (since) query and emit results to the supplied * query context */ void timeGenerator(w_query* query, struct w_query_ctx* ctx) const override; /** Walks all files with the suffix(es) configured in the query */ void suffixGenerator(w_query* query, struct w_query_ctx* ctx) const override; /** Walks files that match the supplied set of paths */ void pathGenerator(w_query* query, struct w_query_ctx* ctx) const override; void globGenerator(w_query* query, struct w_query_ctx* ctx) const override; void allFilesGenerator(w_query* query, struct w_query_ctx* ctx) const override; std::shared_future waitUntilReadyToQuery( const std::shared_ptr& root) override; void startThreads(const std::shared_ptr& root) override; void signalThreads() override; void wakeThreads() override; void clientModeCrawl(const std::shared_ptr& root); const w_string& getName() const override; const std::shared_ptr& getWatcher() const; // If content cache warming is configured, do the warm up now void warmContentCache(); static void debugContentHashCache( struct watchman_client* client, const json_ref& args); SCM* getSCM() const override; private: /* Holds the list head for files of a given suffix */ struct file_list_head { watchman_file* head{nullptr}; }; struct view { /* the most recently changed file */ struct watchman_file* latest_file{0}; /* Holds the list heads for all known suffixes */ std::unordered_map> suffixes; std::unique_ptr root_dir; // The most recently observed tick value of an item in the view uint32_t mostRecentTick{1}; /* root number */ uint32_t rootNumber{0}; explicit view(const w_string& root_path); void insertAtHeadOfFileList(struct watchman_file* file); }; using SyncView = watchman::Synchronized; void ageOutFile( std::unordered_set& dirs_to_erase, watchman_file* file); // Consume entries from pending and apply them to the InMemoryView bool processPending( const std::shared_ptr& root, SyncView::LockedPtr& view, PendingCollection::LockedPtr& pending, bool pullFromRoot = false); void processPath( const std::shared_ptr& root, SyncView::LockedPtr& view, PendingCollection::LockedPtr& coll, const w_string& full_path, struct timeval now, int flags, const watchman_dir_ent* pre_stat); /** Updates the otime for the file and bubbles it to the front of recency * index */ void markFileChanged( SyncView::LockedPtr& view, watchman_file* file, const struct timeval& now); /** Mark a directory as being removed from the view. * Marks the contained set of files as deleted. * If recursive is true, is recursively invoked on child dirs. */ void markDirDeleted( SyncView::LockedPtr& view, struct watchman_dir* dir, const struct timeval& now, bool recursive); watchman_dir* resolveDir(SyncView::LockedPtr& view, const w_string& dirname, bool create); const watchman_dir* resolveDir( SyncView::ConstLockedPtr& view, const w_string& dirname) const; /** Returns the direct child file named name if it already * exists, else creates that entry and returns it */ watchman_file* getOrCreateChildFile( SyncView::LockedPtr& view, watchman_dir* dir, const w_string& file_name, const struct timeval& now); /** Recursively walks files under a specified dir */ void dirGenerator( w_query* query, struct w_query_ctx* ctx, const watchman_dir* dir, uint32_t depth) const; void globGeneratorTree( struct w_query_ctx* ctx, const struct watchman_glob_tree* node, const struct watchman_dir* dir) const; void globGeneratorDoublestar( struct w_query_ctx* ctx, const struct watchman_dir* dir, const struct watchman_glob_tree* node, const char* dir_name, uint32_t dir_name_len) const; void crawler( const std::shared_ptr& root, SyncView::LockedPtr& view, PendingCollection::LockedPtr& coll, const w_string& dir_name, struct timeval now, bool recursive); void notifyThread(const std::shared_ptr& root); void ioThread(const std::shared_ptr& root); bool handleShouldRecrawl(const std::shared_ptr& root); void fullCrawl( const std::shared_ptr& root, PendingCollection::LockedPtr& pending); void statPath( const std::shared_ptr& root, SyncView::LockedPtr& view, PendingCollection::LockedPtr& coll, const w_string& full_path, struct timeval now, int flags, const watchman_dir_ent* pre_stat); CookieSync& cookies_; Configuration& config_; SyncView view_; w_string root_path; // This allows a client to wait for a recrawl to complete. // The primary use of this is so that "watch-project" doesn't // send its return PDU to the client until after the initial // crawl is complete. Note that a recrawl can happen at any // point, so this is a bit of a weak promise that a query can // be immediately executed, but is good enough assuming that // the system isn't in a perpetual state of recrawl. struct crawl_state { std::unique_ptr> promise; std::shared_future future; }; watchman::Synchronized crawlState_; uint32_t last_age_out_tick{0}; time_t last_age_out_timestamp{0}; /* queue of items that we need to stat/process */ PendingCollection pending_; std::atomic stopThreads_{false}; std::shared_ptr watcher_; // mutable because we pass a reference to other things from inside // const methods mutable ContentHashCache contentHashCache_; // Should we warm the cache when we settle? bool enableContentCacheWarming_{false}; // How many of the most recent files to warm up when settling? size_t maxFilesToWarmInContentCache_{1024}; // If true, we will wait for the items to be hashed before // dispatching the settle to watchman clients bool syncContentCacheWarming_{false}; // Remember what we've already warmed up uint32_t lastWarmedTick_{0}; // The source control system that we detected during initialization std::unique_ptr scm_; }; } watchman-4.9.0/LICENSE000066400000000000000000000236761314236077500143610ustar00rootroot00000000000000 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS watchman-4.9.0/LRUCache.h000066400000000000000000000465761314236077500151170ustar00rootroot00000000000000/* Copyright 2017-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #pragma once #include #include #include #include "Future.h" #include "make_unique.h" #include "watchman_synchronized.h" namespace watchman { /** LRUCache implements a cache map with an LRU eviction policy. * * Items are retained in the cache until evicted. * Eviction occurs when attempting to insert a new item into * a full cache. Eviction will pick the least-recently-used * item to erase. * * set(), get(), erase() methods are provided for performing * immediate operations on the cache contents. A clear() * method allows purging the entire contents at once. * * An alternative get() API is provided that allows the cache * to be satisfied by some function returning a Future. * This API has some thundering herd protection built-in; * multiple requests for the same key will aggregate on one * pending node that will fulfill the request later. * Since this mode may experience failure the cache allows * setting an errorTTL as a negative cache TTL. The failure * of the lookup will be remembered for the specified duration * before allowing a subsequent async get to be tried again. * * Thread safety: the cache exposes stored values to its client * via a Node type. The Node is a const shared_ptr, making it * immutable to the client. The invariant is that if a client * has a reference to a Node, the value() of the node can * not be mutated by some other client. For pending lookups, * clients will never be handed a Node; only a Future. * * There is a single lock protecting all mutation of the cache * and its nodes. Because the cache is LRU it needs to touch * a node as part of a lookup to ensure that it will not * be evicted prematurely. */ template class LRUCache; // Some of these class names are a bit too generic to stash // in the typical "detail" namespace, so we have a more specific // container here. namespace lrucache { template class TailQHead; /** The node tracks the value in the cache. * We use a shared_ptr to manage its lifetime safely. * Clients of the cache will only ever be handed a * shared_ptr. Once published to a client, * the underlying value is immutable. */ template class Node { friend class TailQHead>; friend class LRUCache; public: using PromiseList = std::deque>>; // Construct a node via LRUCache::set() Node(const KeyType& key, ValueType&& value) : key_(key), value_(std::move(value)) {} // Construct a node using a getter function. // The value is empty and the promise list is initialized. explicit Node(const KeyType& key) : key_(key), promises_(make_unique()) {} // Returns the underlying value. const ValueType& value() const { return value_.value(); } // Returns the underlying value container. // This is useful if you want to test for an error in a Future<> get. const Result& result() const { return value_; } private: // Obtain a future that will be ready when the pending // fetches are complete. Future> subscribe() { promises_->emplace_back(); return promises_->back().getFuture(); } // Test whether an error result can be evicted bool expired(std::chrono::steady_clock::time_point now) const { return value_.hasError() && now >= deadline_; } // Address of next element Node* next_{nullptr}; // Address of previous next element Node** addressOfPreviousNext_{nullptr}; // The key KeyType key_; // The stored value Result value_; // The collection of clients waiting for this node to be available. // This is a pointer so that we can minimize the space usage once // it has been fulfilled. std::unique_ptr promises_; // Time after which this node is to be considered invalid std::chrono::steady_clock::time_point deadline_; }; // A doubly-linked intrusive list through the cache nodes. // O(1) append and O(1) removal. // This is a non-owning list that is used to maintain the // ordered sets used for eviction. template class TailQHead { public: // First element Node* first_; // Address of the "next" field in the last element Node** addressOfLastNext_; public: TailQHead() : first_(nullptr), addressOfLastNext_(&first_) {} void insertTail(Node* node) { node->next_ = nullptr; node->addressOfPreviousNext_ = addressOfLastNext_; *addressOfLastNext_ = node; addressOfLastNext_ = &node->next_; } void remove(Node* node) { if (!node->addressOfPreviousNext_) { // Not linked, NOP. return; } if (node->next_) { node->next_->addressOfPreviousNext_ = node->addressOfPreviousNext_; } else { addressOfLastNext_ = node->addressOfPreviousNext_; } *node->addressOfPreviousNext_ = node->next_; } // Bubble the node to the tail end of the list. void touch(Node* node) { remove(node); insertTail(node); } // Clear the list contents void clear() { first_ = nullptr; addressOfLastNext_ = &first_; } // Returns a pointer to the first element. // May be nullptr if the tailq is empty. Node* head() { return first_; } }; struct Stats { // Number of times that a get resulted in a usable result size_t cacheHit{0}; // Number of times that a get resulted in sharing a pending get size_t cacheShare{0}; // Number of times that a get resulted in no usable result size_t cacheMiss{0}; // Number of times that an item was evicted for any reason size_t cacheEvict{0}; // Number of times that an item was inserted or replaced size_t cacheStore{0}; // Number of times that a get was attempted size_t cacheLoad{0}; // Number of times that an item was erased via erase() size_t cacheErase{0}; // Number of times that the cache has been clear()'d size_t clearCount{0}; void clear() { cacheHit = 0; cacheShare = 0; cacheMiss = 0; cacheEvict = 0; cacheStore = 0; cacheLoad = 0; cacheErase = 0; ++clearCount; } }; // Factoring out the internal state struct here, as MSVC // has a hard time compiling it otherwise. template struct InternalState { using NodeType = Node; // This owns the nodes in the map std::unordered_map> map; // Maintain some stats for cache introspection Stats stats; // To manage eviction we categorize a node into one of // three sets and link it into the appropriate tailq // below. A node belongs in only one set at a time. // Nodes in the process of being fetched. We cannot // evict anything in this set. Note that we don't // strictly need to materialize this set (it can be // inferred from node properties) but it is a nice // invariant that any node always has a non-nullptr // result from whichQ(). TailQHead lookupOrder; // Nodes with a successful result. Eviction policy // is pure LRU. Nodes in this set are touched on // access, causing the head to be the least recently // used node in the set, and the tail to be the // most recently used. TailQHead evictionOrder; // Nodes with an error result; these have a TTL // that we must respect as a way to manage load. // Nodes in this set are never touched; this means // that the head of this list is always the node // with the closest deadline. TailQHead erroredOrder; }; } // namespace lrucache struct CacheStats : public lrucache::Stats { CacheStats(const lrucache::Stats s, size_t size) : Stats(s), size(size) {} size_t size; }; // The cache. More information on this can be found at the // top of this header file! template class LRUCache { public: using NodeType = lrucache::Node; private: using State = lrucache::InternalState; using LockedState = typename Synchronized::LockedPtr; public: // Construct a cache with a defined limit and the specified // negative caching TTL duration. The errorTTL is measured // from the start of the lookup, not its completion. LRUCache(size_t maxItems, std::chrono::milliseconds errorTTL) : maxItems_(maxItems), errorTTL_(errorTTL) {} // No moving or copying LRUCache(const LRUCache&) = delete; LRUCache& operator=(const LRUCache&) = delete; LRUCache(LRUCache&&) = delete; LRUCache& operator=(LRUCache&&) = delete; // Lookup key and return the result. // If the key was not present then the result will be nullptr. // If there is an outstanding fetch in progress, throws an error; // you must consistently use the Future<> version of get() for // such a key. std::shared_ptr get( const KeyType& key, std::chrono::steady_clock::time_point now = std::chrono::steady_clock::now()) { auto state = state_.wlock(); ++state->stats.cacheLoad; auto it = state->map.find(key); if (it == state->map.end()) { ++state->stats.cacheMiss; return nullptr; } auto node = it->second; auto q = whichQ(node.get(), state); // Remove expired item if (node->expired(now)) { state->map.erase(it); q->remove(node.get()); ++state->stats.cacheMiss; ++state->stats.cacheEvict; return nullptr; } if (q == &state->lookupOrder) { // There's no safe way to allow this mode of fetch to subscribe // to the pending lookup. The caller should use the getter // flavor exclusively for this key. throw std::runtime_error("mixing Future getter with direct getter"); } if (q == &state->evictionOrder) { q->touch(node.get()); } ++state->stats.cacheHit; return node; } // Lookup key using a getter function. // If the key is not present in the cache, initiates a (possible async) // load of that value using the supplied getter function. // The getter function is a functor which behaves like: // std::function(const KeyType&)> // // If the key is present but not yet satisfied, append a Promise // to the chain in the node and return a Future that will yield the // node once the lookup is complete. // // If the key is present and satisfied, return a Future that will // immediately yield the node. // // The purpose of this function is to reduce the exposure to // "thundering herd" style problems. In watchman we tend to have // limited contention for the same key but may have a great many // requests for different keys; it is desirable to collapse 2x or 3x // the requests for the same key into a single request. // // It is not safe to delete the LRUCache while there are outstanding // getter calls. It is the responsibility of the caller to ensure // that this does not happen. template Future> get( const KeyType& key, Func&& getter, std::chrono::steady_clock::time_point now = std::chrono::steady_clock::now()) { std::shared_ptr node; Future> future; // Only hold the lock on the state while we set up the map entry. { auto state = state_.wlock(); ++state->stats.cacheLoad; auto it = state->map.find(key); if (it != state->map.end()) { node = it->second; auto q = whichQ(node.get(), state); if (!node->expired(now)) { // Only touch successful nodes if (q == &state->evictionOrder) { q->touch(node.get()); } if (node->promises_) { // Not yet satisfied, so chain on a promise ++state->stats.cacheShare; return node->subscribe(); } // Available now ++state->stats.cacheHit; return makeFuture>(node); } // Remove invalid node. // We can't re-use it without introducing locking in // the node itself. q->remove(node.get()); state->map.erase(it); ++state->stats.cacheEvict; } // Try to make a new node; this can fail if we are too full node = makeNode(state, now, key); // Insert into map and the appropriate tailq state->map.emplace(std::make_pair(node->key_, node)); state->lookupOrder.insertTail(node.get()); ++state->stats.cacheMiss; // and ensure that we capture a subscription before we release // the lock! future = node->subscribe(); } // Arrange for the value to be populated. // This is done outside the lock in case the getter is a // simple callback that executes immediately in our context; // if that were to then try to operate on the cache, it would // deadlock. getter(key).then([node, this, now](Result&& result) { // We're going to steal the promises so that we can fulfil // them outside of the lock std::unique_ptr promises; { auto state = state_.wlock(); node->value_ = std::move(result); if (whichQ(node.get(), state) != &state->lookupOrder) { // Should never happen... abort(); } ++state->stats.cacheStore; // We're no longer looking this up; we'll put it in the // correct bucket just before we release the lock below. state->lookupOrder.remove(node.get()); // We only need a TTL for errors if (node->value_.hasError()) { // Note that we don't account for the time it takes to // arrive at the error condition in this TTL. This // is semi-deliberate; the for the sake of testing we // are passing `now` through from outside. node->deadline_ = now + errorTTL_; } // Steal the promises; we will fulfill them below // after we've released the lock. std::swap(promises, node->promises_); if (whichQ(node.get(), state) == &state->lookupOrder) { // Should never happen... abort(); } // Now that the promises have been stolen, insert into // the appropriate queue. whichQ(node.get(), state)->insertTail(node.get()); } // Wake up all waiters for (auto& p : *promises) { p.setValue(node); } }); return future; } // Explicitly set the value for a key. // This will create or update a node as appropriate. // This may fail if there is no space and no items can be evicted. std::shared_ptr set( const KeyType& key, ValueType&& value, std::chrono::steady_clock::time_point now = std::chrono::steady_clock::now()) { auto state = state_.wlock(); auto it = state->map.find(key); if (it != state->map.end()) { // Remove this item. We can't update the value in the // item without introducing per-node locks, so we simply // allow any external references to see their immutable // value while we insert a new value in the map. // Note that we don't check node->expired() here like // we do in the get() path. The assumption is that the // caller is deliberately replacing an errored node // with some valid value. auto oldNode = it->second; whichQ(oldNode.get(), state)->remove(oldNode.get()); state->map.erase(it); ++state->stats.cacheEvict; } auto node = makeNode(state, now, key, std::move(value)); state->map.emplace(std::make_pair(node->key_, node)); whichQ(node.get(), state)->insertTail(node.get()); ++state->stats.cacheStore; return node; } // Erase the entry associated with key. // Returns the node if it was present, else nullptr. std::shared_ptr erase(const KeyType& key) { auto state = state_.wlock(); auto it = state->map.find(key); if (it == state->map.end()) { return nullptr; } auto node = it->second; // Note that we don't check node->expired() here like // we do in the get() path. The assumption is that the // caller is deliberately invalidating an errored node. whichQ(node.get(), state)->remove(node.get()); state->map.erase(it); ++state->stats.cacheErase; return node; } // Returns the number of cached items size_t size() const { auto state = state_.rlock(); return state->map.size(); } // Returns cache statistics CacheStats stats() const { auto state = state_.rlock(); return CacheStats(state->stats, state->map.size()); } // Purge all of the entries from the cache void clear() { auto state = state_.wlock(); state->evictionOrder.clear(); state->erroredOrder.clear(); state->lookupOrder.clear(); state->map.clear(); state->stats.clear(); } private: // Small helper for creating a new Node. This checks for capacity // and attempts to evict an item to make room if needed. // The eviction may fail in some cases, which results in this method // also throwing. template std::shared_ptr makeNode( LockedState& state, std::chrono::steady_clock::time_point now, Args&&... args) { // If we are too full, try to evict an item; this may throw if there are no // evictable items! if (state->map.size() + 1 > maxItems_) { evictOne(state, now); } return std::make_shared(std::forward(args)...); } // Returns the queue into which the node should be placed (for new nodes), // or should currently be linked into (for existing nodes). lrucache::TailQHead* whichQ(NodeType* node, LockedState& state) { if (node->promises_) { return &state->lookupOrder; } if (!node->value_.hasValue()) { return &state->erroredOrder; } return &state->evictionOrder; } // Attempt to evict a single item to make space for a new Node. // May throw if there are too many errored or pending lookups. void evictOne(LockedState& state, std::chrono::steady_clock::time_point now) { // Since errors have a TTL (as opposed to infinite), try to // evict one of those first. That keeps the cache focused // on usable items rather than prematurely evicting something // that might be useful again in the future. auto node = state->erroredOrder.head(); if (node && node->expired(now)) { state->erroredOrder.remove(node); // Erase from the map last, as this will invalidate node state->map.erase(node->key_); ++state->stats.cacheEvict; return; } // Second choice is to evict a successful item node = state->evictionOrder.head(); if (node) { state->evictionOrder.remove(node); // Erase from the map last, as this will invalidate node state->map.erase(node->key_); ++state->stats.cacheEvict; return; } // There are no evictable items to purge, so we are too full. // This is a signal that there is a throughput problem. Rather than // queueing up some more work, we just fail this request; this acts a // brake when the system is swamped. throw std::runtime_error("too many pending cache jobs"); } // The maximum allowed capacity const size_t maxItems_; // How long to cache items that have an error Result const std::chrono::milliseconds errorTTL_; Synchronized state_; }; } watchman-4.9.0/Logging.h000066400000000000000000000062721314236077500151040ustar00rootroot00000000000000/* Copyright 2016-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #pragma once #include "PubSub.h" #include "watchman_preprocessor.h" #include "watchman_string.h" namespace watchman { // Coupled with the defines in watchman_log.h enum LogLevel { FATAL = -1, OFF = 0, ERR = 1, DBG = 2 }; const w_string& logLevelToLabel(enum LogLevel level); enum LogLevel logLabelToLevel(const w_string& label); class Log { public: std::shared_ptr subscribe( enum LogLevel level, Publisher::Notifier notify) { return levelToPub(level).subscribe(notify); } static char* currentTimeString(char* buf, size_t bufsize); static const char* getThreadName(); void setStdErrLoggingLevel(enum LogLevel level); // Build a string and log it template void log(enum LogLevel level, Args&&... args) { auto& pub = levelToPub(level); // Avoid building the string if there are no subscribers if (!pub.hasSubscribers()) { return; } char timebuf[64]; auto payload = json_object({{"log", typed_string_to_json(w_string::build( currentTimeString(timebuf, sizeof(timebuf)), ": [", getThreadName(), "] ", std::forward(args)...))}, {"unilateral", json_true()}, {"level", typed_string_to_json(logLevelToLabel(level))}}); pub.enqueue(std::move(payload)); } inline void logVPrintf(enum LogLevel level, const char* fmt, va_list ap) { auto& pub = levelToPub(level); // Avoid building the string if there are no subscribers if (!pub.hasSubscribers()) { return; } char timebuf[64]; auto payload = json_object({{"log", typed_string_to_json(w_string::build( currentTimeString(timebuf, sizeof(timebuf)), ": [", getThreadName(), "] ", w_string::vprintf(fmt, ap)))}, {"unilateral", json_true()}, {"level", typed_string_to_json(logLevelToLabel(level))}}); pub.enqueue(std::move(payload)); } inline void logPrintf( enum LogLevel level, WATCHMAN_FMT_STRING(const char* fmt), ...) WATCHMAN_FMT_ATTR(3, 4) { va_list ap; va_start(ap, fmt); logVPrintf(level, fmt, ap); va_end(ap); } Log(); private: std::shared_ptr errorPub_; std::shared_ptr debugPub_; std::shared_ptr errorSub_; std::shared_ptr debugSub_; std::mutex stdErrPrintMutex_; inline Publisher& levelToPub(enum LogLevel level) { return level == DBG ? *debugPub_ : *errorPub_; } void doLogToStdErr(); }; // Get the logger singleton Log& getLog(); template void log(enum LogLevel level, Args&&... args) { getLog().log(level, std::forward(args)...); } template void logPrintf(enum LogLevel level, Args&&... args) { getLog().logPrintf(level, std::forward(args)...); } } watchman-4.9.0/Makefile.am000066400000000000000000000212051314236077500153720ustar00rootroot00000000000000ACLOCAL_AMFLAGS=-I m4 bin_PROGRAMS = watchman # ensure that we have a reasonable default for the python install DESTDIR ?= / doc_DATA = README.markdown docdir = ${prefix}/share/doc/watchman-$(VERSION) THIRDPARTY_CPPFLAGS = -I$(top_srcdir)/thirdparty/jansson -I$(top_builddir)/thirdparty/jansson JSON_LIB = -L. libwmanjson.a watchman_CPPFLAGS = $(THIRDPARTY_CPPFLAGS) @IRONMANCFLAGS@ watchman_LDADD = $(JSON_LIB) libwildmatch.a watchman_SOURCES = \ ChildProcess.cpp \ ContentHash.cpp \ CookieSync.cpp \ FileDescriptor.cpp \ FileInformation.cpp \ InMemoryView.cpp \ Pipe.cpp \ PubSub.cpp \ ThreadPool.cpp \ QueryableView.cpp \ spawn.cpp \ opt.cpp \ cfg.cpp \ clockspec.cpp \ checksock.cpp \ error_category.cpp \ fstype.cpp \ log.cpp \ ignore.cpp \ json.cpp \ bser.cpp \ expflags.cpp \ hash.cpp \ ioprio.cpp \ opendir.cpp \ pending.cpp \ perf.cpp \ stream.cpp \ stream_stdout.cpp \ stream_unix.cpp \ timedlock.cpp \ cmds/find.cpp \ cmds/info.cpp \ cmds/log.cpp \ cmds/query.cpp \ cmds/since.cpp \ cmds/reg.cpp \ cmds/state.cpp \ cmds/subscribe.cpp \ cmds/trigger.cpp \ cmds/watch.cpp \ cmds/debug.cpp \ query/base.cpp \ query/dirname.cpp \ query/parse.cpp \ query/eval.cpp \ query/glob.cpp \ query/intcompare.cpp \ query/type.cpp \ query/suffix.cpp \ query/match.cpp \ query/pcre.cpp \ query/name.cpp \ query/fieldlist.cpp \ query/since.cpp \ query/empty.cpp \ watcher/auto.cpp \ watcher/fsevents.cpp \ watcher/inotify.cpp \ watcher/kqueue.cpp \ launchd.cpp \ listener.cpp \ listener-user.cpp \ clientmode.cpp \ main.cpp \ root/ageout.cpp \ root/crawler.cpp \ root/dir.cpp \ root/file.cpp \ root/init.cpp \ root/iothread.cpp \ root/notifythread.cpp \ root/poison.cpp \ root/reap.cpp \ root/resolve.cpp \ root/stat.cpp \ root/symlink.cpp \ root/sync.cpp \ root/threading.cpp \ root/vcs.cpp \ root/warnerr.cpp \ root/watchlist.cpp \ scm/Mercurial.cpp \ scm/SCM.cpp \ state.cpp \ string.cpp \ time.cpp noinst_HEADERS = \ watchman.h \ watchman_hash.h noinst_LIBRARIES = \ libtap.a \ libwildmatch.a \ libwmanjson.a # bundled json library libwmanjson_a_CPPFLAGS = $(THIRDPARTY_CPPFLAGS) @IRONMANCFLAGS@ libwmanjson_a_SOURCES = \ thirdparty/jansson/dump.cpp \ thirdparty/jansson/error.cpp \ thirdparty/jansson/jansson_private.h \ thirdparty/jansson/load.cpp \ thirdparty/jansson/memory.cpp \ thirdparty/jansson/pack_unpack.cpp \ thirdparty/jansson/strbuffer.cpp \ thirdparty/jansson/strbuffer.h \ thirdparty/jansson/strconv.cpp \ thirdparty/jansson/utf.cpp \ thirdparty/jansson/utf.h \ thirdparty/jansson/value.cpp # bundled testing library libtap_a_CPPFLAGS = $(THIRDPARTY_CPPFLAGS) @IRONMANCFLAGS@ libtap_a_SOURCES = thirdparty/tap.cpp TAP_LIB = libtap.a # pattern matching library libwildmatch_a_SOURCES = thirdparty/wildmatch/wildmatch.c WILDMATCH_LIB = libwildmatch.a # unit tests TESTS = \ tests/art.t \ tests/bser.t \ tests/cache.t \ tests/childproc.t \ tests/future.t \ tests/ignore.t \ tests/pending.t \ tests/result.t \ tests/string.t \ tests/log.t \ tests/wildmatch.t if ENABLE_CPPCLIENT lib_LTLIBRARIES = libwatchmanclient.la libwatchmanclient_ladir = $(includedir)/watchman/ libwatchmanclient_la_HEADERS = \ cppclient/WatchmanClient.h \ cppclient/WatchmanConnection.h TESTS += tests/integration/cppclient.t # No IRONMANCFLAGS as this is incompatible with Folly libwatchmanclient_la_SOURCES = \ cppclient/WatchmanClient.cpp \ cppclient/WatchmanConnection.cpp \ cppclient/WatchmanResponseError.cpp libwatchmanclient_la_CPPFLAGS = $(FOLLY_CFLAGS) libwatchmanclient_la_LDFLAGS = -version-info 0:0:0 $(FOLLY_LDFLAGS) CPPCLIENT_LIB=libwatchmanclient.la # No IRONMANCFLAGS as this is incompatible with Folly tests_integration_cppclient_t_CPPFLAGS = $(FOLLY_CFLAGS) -I cppclient/ tests_integration_cppclient_t_LDADD = $(CPPCLIENT_LIB) $(FOLLY_LIBS) tests_integration_cppclient_t_LDFLAGS = $(FOLLY_LDFLAGS) tests_integration_cppclient_t_SOURCES = \ tests/integration/cppclient.cpp # install pkg-config metadata file pkgconfigdir = $(libdir)/pkgconfig nodist_pkgconfig_DATA = cppclient/watchmanclient.pc endif noinst_PROGRAMS = $(TESTS) export ARCHFLAGS=@ARCHFLAGS@ if HAVE_PYTHON py-build: cd python && $(PYTHON) ./setup.py clean build_py -c -d . build_ext -i py-install: cd python && $(PYTHON) ./setup.py install --prefix ${prefix} --root $(DESTDIR) # This is invoked via WatchmanIntegrationEngine py-tests: $(PYTHON) $(TESTNAME) py-integration: $(PYTHON) runtests.py --keep-if-fail py-clean: -cd python && $(PYTHON) ./setup.py clean --all else py-build: py-tests: py-clean: py-install: py-integration: @echo You need python to run the tests false endif if HAVE_RUBY rb-build: cd ruby/ruby-watchman && bundle && bundle exec rake make rb-tests: cd ruby/ruby-watchman && bundle && bundle exec rake spec rb-clean: cd ruby/ruby-watchman && bundle && bundle exec rake clean else rb-build: rb-tests: rb-clean: endif all-local: py-build rb-build install-exec-local: py-install if WATCHMAN_STATE_DIR ${INSTALL} -d -m 777 ${DESTDIR}${WATCHMAN_STATE_DIR} chmod g+s ${DESTDIR}${WATCHMAN_STATE_DIR} touch ${DESTDIR}${WATCHMAN_STATE_DIR}/.not-empty endif clean-local: py-clean rb-clean -find python \( -name '*.py[cdo]' -o -name '*.so' \) -exec rm -f '{}' ';' -rm -rf python/build # generate a rule that we can use to ensure that # the test programs are built build-tests: $(TESTS) .PHONY: build-tests integration py-tests # run integration AND unit tests integration: all py-integration check tests_art_t_CPPFLAGS = $(THIRDPARTY_CPPFLAGS) @IRONMANCFLAGS@ tests_art_t_LDADD = $(TAP_LIB) $(JSON_LIB) tests_art_t_SOURCES = \ tests/art_test.cpp \ tests/log_stub.cpp \ PubSub.cpp \ string.cpp \ hash.cpp \ log.cpp tests_childproc_t_CPPFLAGS = $(THIRDPARTY_CPPFLAGS) @IRONMANCFLAGS@ tests_childproc_t_LDADD = $(TAP_LIB) $(JSON_LIB) tests_childproc_t_SOURCES = \ tests/childproc.cpp \ tests/log_stub.cpp \ ChildProcess.cpp \ Pipe.cpp \ FileDescriptor.cpp \ FileInformation.cpp \ PubSub.cpp \ string.cpp \ hash.cpp \ log.cpp tests_cache_t_CPPFLAGS = $(THIRDPARTY_CPPFLAGS) @IRONMANCFLAGS@ tests_cache_t_LDADD = $(TAP_LIB) $(JSON_LIB) tests_cache_t_SOURCES = \ tests/CacheTest.cpp \ tests/log_stub.cpp \ PubSub.cpp \ ThreadPool.cpp \ string.cpp \ hash.cpp \ log.cpp tests_future_t_CPPFLAGS = $(THIRDPARTY_CPPFLAGS) @IRONMANCFLAGS@ tests_future_t_LDADD = $(TAP_LIB) $(JSON_LIB) tests_future_t_SOURCES = \ tests/FutureTest.cpp \ tests/log_stub.cpp \ PubSub.cpp \ ThreadPool.cpp \ string.cpp \ hash.cpp \ log.cpp tests_result_t_CPPFLAGS = $(THIRDPARTY_CPPFLAGS) @IRONMANCFLAGS@ tests_result_t_LDADD = $(TAP_LIB) $(JSON_LIB) tests_result_t_SOURCES = \ tests/ResultTest.cpp \ tests/log_stub.cpp \ PubSub.cpp \ string.cpp \ hash.cpp \ log.cpp tests_ignore_t_CPPFLAGS = $(THIRDPARTY_CPPFLAGS) @IRONMANCFLAGS@ tests_ignore_t_LDADD = $(TAP_LIB) $(JSON_LIB) tests_ignore_t_SOURCES = \ tests/ignore_test.cpp \ tests/log_stub.cpp \ hash.cpp \ ignore.cpp \ string.cpp \ PubSub.cpp \ log.cpp tests_string_t_CPPFLAGS = $(THIRDPARTY_CPPFLAGS) @IRONMANCFLAGS@ tests_string_t_LDADD = $(TAP_LIB) $(JSON_LIB) tests_string_t_SOURCES = \ tests/string_test.cpp \ tests/log_stub.cpp \ PubSub.cpp \ hash.cpp \ log.cpp \ string.cpp tests_pending_t_CPPFLAGS = $(THIRDPARTY_CPPFLAGS) @IRONMANCFLAGS@ tests_pending_t_LDADD = $(TAP_LIB) $(JSON_LIB) tests_pending_t_SOURCES = \ tests/pending_test.cpp \ tests/log_stub.cpp \ FileDescriptor.cpp \ FileInformation.cpp \ PubSub.cpp \ hash.cpp \ ignore.cpp \ pending.cpp \ expflags.cpp \ opendir.cpp \ cfg.cpp \ time.cpp \ string.cpp \ log.cpp tests_log_t_CPPFLAGS = $(THIRDPARTY_CPPFLAGS) @IRONMANCFLAGS@ tests_log_t_LDADD = $(JSON_LIB) $(TAP_LIB) tests_log_t_SOURCES = \ tests/log.cpp \ PubSub.cpp \ string.cpp \ hash.cpp \ log.cpp tests_bser_t_CPPFLAGS = $(THIRDPARTY_CPPFLAGS) @IRONMANCFLAGS@ tests_bser_t_LDADD = $(JSON_LIB) $(TAP_LIB) tests_bser_t_SOURCES = \ tests/bser.cpp \ tests/log_stub.cpp \ PubSub.cpp \ bser.cpp \ string.cpp \ hash.cpp \ log.cpp tests_wildmatch_t_CPPFLAGS = $(THIRDPARTY_CPPFLAGS) @IRONMANCFLAGS@ tests_wildmatch_t_LDADD = $(JSON_LIB) $(TAP_LIB) $(WILDMATCH_LIB) tests_wildmatch_t_SOURCES = \ tests/wildmatch_test.cpp \ tests/log_stub.cpp \ PubSub.cpp \ string.cpp \ hash.cpp \ log.cpp watch: PYTHONPATH=python python/bin/watchman-make \ -p '**/*.[ch]' 'Makefile*' '**/*.py' '**/*.php' \ -t integration watchman-4.9.0/Pipe.cpp000066400000000000000000000022021314236077500147330ustar00rootroot00000000000000/* Copyright 2016-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #include "Pipe.h" #include namespace watchman { Pipe::Pipe() { #ifdef _WIN32 HANDLE readPipe; HANDLE writePipe; SECURITY_ATTRIBUTES sec; memset(&sec, 0, sizeof(sec)); sec.nLength = sizeof(sec); sec.bInheritHandle = FALSE; // O_CLOEXEC equivalent constexpr DWORD kPipeSize = 64 * 1024; if (!CreatePipe(&readPipe, &writePipe, &sec, kPipeSize)) { throw std::system_error( GetLastError(), std::system_category(), "CreatePipe failed"); } read = FileDescriptor(intptr_t(readPipe)); write = FileDescriptor(intptr_t(writePipe)); #else int fds[2]; int res; #if HAVE_PIPE2 res = pipe2(fds, O_NONBLOCK | O_CLOEXEC); #else res = pipe(fds); #endif if (res) { throw std::system_error( errno, std::system_category(), std::string("pipe error: ") + strerror(errno)); } read = FileDescriptor(fds[0]); write = FileDescriptor(fds[1]); #if !HAVE_PIPE2 read.setCloExec(); read.setNonBlock(); write.setCloExec(); write.setNonBlock(); #endif #endif } } watchman-4.9.0/Pipe.h000066400000000000000000000005471314236077500144120ustar00rootroot00000000000000/* Copyright 2016-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #pragma once #include "FileDescriptor.h" namespace watchman { // Convenience for constructing a Pipe class Pipe { public: FileDescriptor read; FileDescriptor write; // Construct a pipe, setting the close-on-exec and // non-blocking bits. Pipe(); }; } watchman-4.9.0/PubSub.cpp000066400000000000000000000116651314236077500152530ustar00rootroot00000000000000/* Copyright 2016-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "PubSub.h" #include #include namespace watchman { Publisher::Subscriber::Subscriber( std::shared_ptr pub, Notifier notify, const w_string& info) : serial_(0), publisher_(std::move(pub)), notify_(notify), info_(std::move(info)) {} Publisher::Subscriber::~Subscriber() { auto wlock = publisher_->state_.wlock(); auto it = wlock->subscribers.begin(); while (it != wlock->subscribers.end()) { auto sub = it->lock(); // Prune vacated weak_ptr's or those that point to us if (!sub || sub.get() == this) { it = wlock->subscribers.erase(it); } else { ++it; } } // Take this opportunity to reap anything that is no longer // referenced now that we've removed some subscriber(s) wlock->collectGarbage(); } void Publisher::Subscriber::getPending( std::vector>& pending) { { auto rlock = publisher_->state_.rlock(); auto& items = rlock->items; if (items.empty()) { return; } // First we walk back to find the end of the range that // we have seen previously. int firstIndex; for (firstIndex = int(items.size()) - 1; firstIndex >= 0; --firstIndex) { if (items[firstIndex]->serial <= serial_) { break; } } // We found the item before the one we really want, so // increment the index; we'll copy the remaining items. ++firstIndex; bool updated = false; while (firstIndex < int(items.size())) { pending.push_back(items[firstIndex]); ++firstIndex; updated = true; } if (updated) { serial_ = pending.back()->serial; } return; } } void getPending( std::vector>& items, const std::shared_ptr& sub1, const std::shared_ptr& sub2) { if (sub1) { sub1->getPending(items); } if (sub2) { sub2->getPending(items); } } std::shared_ptr Publisher::subscribe( Notifier notify, const w_string& info) { auto sub = std::make_shared(shared_from_this(), notify, info); state_.wlock()->subscribers.emplace_back(sub); return sub; } bool Publisher::hasSubscribers() const { return !state_.rlock()->subscribers.empty(); } void Publisher::state::collectGarbage() { if (items.empty()) { return; } uint64_t minSerial = std::numeric_limits::max(); for (auto& it : subscribers) { auto sub = it.lock(); if (sub) { minSerial = std::min(minSerial, sub->getSerial()); } } while (!items.empty() && items.front()->serial < minSerial) { items.pop_front(); } } bool Publisher::enqueue(json_ref&& payload) { std::vector> subscribers; { auto wlock = state_.wlock(); // We need to collect live references for the notify portion, // but since we're holding the wlock, take this opportunity to // detect and prune dead subscribers and clean up some garbage. auto it = wlock->subscribers.begin(); while (it != wlock->subscribers.end()) { auto sub = it->lock(); // Prune vacated weak_ptr's if (!sub) { it = wlock->subscribers.erase(it); } else { ++it; // Remember that live reference so that we can notify // outside of the lock below. subscribers.emplace_back(std::move(sub)); } } wlock->collectGarbage(); if (subscribers.empty()) { return false; } auto item = std::make_shared(); item->payload = std::move(payload); item->serial = wlock->nextSerial++; wlock->items.emplace_back(std::move(item)); } // and notify them outside of the lock for (auto& sub : subscribers) { auto& n = sub->getNotify(); if (n) { n(); } } return true; } json_ref Publisher::getDebugInfo() const { auto ret = json_object(); auto rlock = state_.rlock(); ret.set("next_serial", json_integer(rlock->nextSerial)); auto subscribers = json_array(); auto& subscribers_arr = subscribers.array(); for (auto& sub_ref : rlock->subscribers) { auto sub = sub_ref.lock(); if (sub) { auto sub_json = json_object({{"serial", json_integer(sub->getSerial())}, {"info", w_string_to_json(sub->getInfo())}}); subscribers_arr.emplace_back(sub_json); } else { // This is a subscriber that is now dead. It will be cleaned up the next // time enqueue is called. } } ret.set("subscribers", std::move(subscribers)); auto items = json_array(); auto& items_arr = items.array(); for (auto& item : rlock->items) { auto item_json = json_object( {{"serial", json_integer(item->serial)}, {"payload", item->payload}}); items_arr.emplace_back(item_json); } ret.set("items", std::move(items)); return ret; } } watchman-4.9.0/PubSub.h000066400000000000000000000063021314236077500147100ustar00rootroot00000000000000/* Copyright 2016-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #pragma once #include "watchman_system.h" #include "watchman_synchronized.h" #include "watchman_string.h" #include "thirdparty/jansson/jansson.h" #include #include #include namespace watchman { class Publisher : public std::enable_shared_from_this { public: struct Item { // copy of nextSerial_ at the time this was created. // The item can be released when all subscribers have // observed this serial number. uint64_t serial; json_ref payload; }; // Generic callback that subscribers can register to arrange // to be woken up when something is published using Notifier = std::function; // Each subscriber is represented by one of these class Subscriber : public std::enable_shared_from_this { // The serial of the last Item to be consumed by // this subscriber. uint64_t serial_; // Subscriber keeps the publisher alive so that no Items are lost // if the Publisher is released before all of the subscribers. std::shared_ptr publisher_; // Advising the subscriber that there may be more items available Notifier notify_; // Information for debugging purposes const w_string info_; public: ~Subscriber(); Subscriber( std::shared_ptr pub, Notifier notify, const w_string& info); Subscriber(const Subscriber&) = delete; // Returns all as yet unseen published items for this subscriber. void getPending(std::vector>& pending); inline uint64_t getSerial() const { return serial_; } inline Notifier& getNotify() { return notify_; } inline const w_string& getInfo() { return info_; } }; // Register a new subscriber. // When the Subscriber object is released, the registration is // automatically removed. std::shared_ptr subscribe( Notifier notify, const w_string& info = nullptr); // Returns true if there are any subscribers. // This is racy and intended to be used to gate building a payload // if there are no current subscribers. bool hasSubscribers() const; // Enqueue a new item, but only if there are subscribers. // Returns true if the item was queued. bool enqueue(json_ref&& payload); // Return debugging info useful for state inspection. json_ref getDebugInfo() const; private: struct state { state() = default; state(const state&) = delete; // Serial number to use for the next Item uint64_t nextSerial{1}; // The stream of Items std::deque> items; // The subscribers std::vector> subscribers; void collectGarbage(); void enqueue(json_ref&& payload); }; Synchronized state_; friend class Subscriber; }; // Equivalent to calling getPending on up to two Subscriber and // joining the resultant vectors together. void getPending( std::vector>& pending, const std::shared_ptr& sub1, const std::shared_ptr& sub2); } watchman-4.9.0/QueryableView.cpp000066400000000000000000000031111314236077500166220ustar00rootroot00000000000000/* Copyright 2016-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "QueryableView.h" namespace watchman { QueryableView::~QueryableView() {} /** Perform a time-based (since) query and emit results to the supplied * query context */ void QueryableView::timeGenerator(w_query*, struct w_query_ctx*) const { throw QueryExecError("timeGenerator not implemented"); } /** Walks all files with the suffix(es) configured in the query */ void QueryableView::suffixGenerator(w_query*, struct w_query_ctx*) const { throw QueryExecError("suffixGenerator not implemented"); } /** Walks files that match the supplied set of paths */ void QueryableView::pathGenerator(w_query*, struct w_query_ctx*) const { throw QueryExecError("pathGenerator not implemented"); } void QueryableView::globGenerator(w_query*, struct w_query_ctx*) const { throw QueryExecError("globGenerator not implemented"); } void QueryableView::allFilesGenerator(w_query*, struct w_query_ctx*) const { throw QueryExecError("allFilesGenerator not implemented"); } uint32_t QueryableView::getLastAgeOutTickValue() const { return 0; } time_t QueryableView::getLastAgeOutTimeStamp() const { return 0; } void QueryableView::ageOut(w_perf_t&, std::chrono::seconds) {} void QueryableView::startThreads(const std::shared_ptr&) {} void QueryableView::signalThreads() {} void QueryableView::wakeThreads() {} bool QueryableView::isVCSOperationInProgress() const { static const std::vector lockFiles{".hg/wlock", ".git/index.lock"}; return doAnyOfTheseFilesExist(lockFiles); } } watchman-4.9.0/QueryableView.h000066400000000000000000000045211314236077500162750ustar00rootroot00000000000000/* Copyright 2016-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #pragma once #include "watchman_system.h" #include #include #include "scm/SCM.h" #include "watchman_perf.h" #include "watchman_query.h" #include "watchman_string.h" struct watchman_file; struct watchman_dir; struct watchman_glob_tree; namespace watchman { class QueryableView : public std::enable_shared_from_this { public: virtual ~QueryableView(); /** Perform a time-based (since) query and emit results to the supplied * query context */ virtual void timeGenerator(w_query* query, struct w_query_ctx* ctx) const; /** Walks all files with the suffix(es) configured in the query */ virtual void suffixGenerator(w_query* query, struct w_query_ctx* ctx) const; /** Walks files that match the supplied set of paths */ virtual void pathGenerator(w_query* query, struct w_query_ctx* ctx) const; virtual void globGenerator(w_query* query, struct w_query_ctx* ctx) const; virtual void allFilesGenerator(w_query* query, struct w_query_ctx* ctx) const; virtual ClockPosition getMostRecentRootNumberAndTickValue() const = 0; virtual w_string getCurrentClockString() const = 0; virtual uint32_t getLastAgeOutTickValue() const; virtual time_t getLastAgeOutTimeStamp() const; virtual void ageOut(w_perf_t& sample, std::chrono::seconds minAge); virtual bool syncToNow(std::chrono::milliseconds timeout) = 0; // Specialized query function that is used to test whether // version control files exist as part of some settling handling. // It should query the view and return true if any of the named // files current exist in the view. virtual bool doAnyOfTheseFilesExist( const std::vector& fileNames) const = 0; bool isVCSOperationInProgress() const; // Start up any helper threads virtual void startThreads(const std::shared_ptr& root); // Request that helper threads shutdown (but does not join them) virtual void signalThreads(); // Request that helper threads wake up and re-evaluate their state virtual void wakeThreads(); virtual const w_string& getName() const = 0; virtual std::shared_future waitUntilReadyToQuery( const std::shared_ptr& root) = 0; // Return the SCM detected for this watched root virtual SCM* getSCM() const = 0; }; } watchman-4.9.0/README.markdown000066400000000000000000000013601314236077500160370ustar00rootroot00000000000000# Watchman A file watching service. ## Purpose Watchman exists to watch files and record when they actually change. It can also trigger actions (such as rebuilding assets) when matching files change. ## Documentation Head on over to https://facebook.github.io/watchman/ ## Build Status [![Build Status](https://travis-ci.org/facebook/watchman.svg?branch=master) ](https://travis-ci.org/facebook/watchman) [![Build status](https://ci.appveyor.com/api/projects/status/uvafoyc550kg438h/branch/master?svg=true) ](https://ci.appveyor.com/project/wez/watchman/branch/master) ## License Watchman is made available under the terms of the Apache License 2.0. See the LICENSE file that accompanies this distribution for the full text of the license. watchman-4.9.0/Result.h000066400000000000000000000220251314236077500147660ustar00rootroot00000000000000/* Copyright 2017-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #pragma once #include #include #include #include namespace watchman { // To avoid some horrible special casing for the void type in template // metaprogramming we use Unit to denote an uninteresting value type. struct Unit { // Lift void -> Unit if T is void, else T template struct Lift : std::conditional::value, Unit, T> {}; }; // Represents the Result of an operation, and thus can hold either // a value or an error, or neither. This is similar to the folly::Try // type and also to the rust Result type. The contained Error type // can be replaced by an arbitrary error container as a stronger nod // toward the rust Result type and is useful in situations where // throwing and catching exceptions is undesirable. template class Result { static_assert( !std::is_reference::value && !std::is_reference::value, "Result may not be used with reference types"); static_assert( !std::is_same::value, "Value and Error must not be the same type"); enum class State { kEMPTY, kVALUE, kERROR }; public: using value_type = Value; using error_type = Error; // Default construct an empty Result Result() : state_(State::kEMPTY) {} ~Result() { // value_/error_ is a union, thus manual call of destructors switch (state_) { case State::kEMPTY: break; case State::kVALUE: value_.~Value(); break; case State::kERROR: error_.~Error(); break; } } // Copy a value into the result explicit Result(const Value& other) : state_(State::kVALUE), value_(other) {} // Move in value explicit Result(Value&& other) : state_(State::kVALUE), value_(std::move(other)) {} // Copy in error explicit Result(const Error& error) : state_(State::kERROR), error_(error) {} // Move in error explicit Result(Error&& error) : state_(State::kERROR), error_(std::move(error)) {} // Move construct explicit Result(Result&& other) noexcept : state_(other.state_) { switch (state_) { case State::kEMPTY: break; case State::kVALUE: new (&value_) Value(std::move(other.value_)); break; case State::kERROR: new (&error_) Error(std::move(other.error_)); break; } other.~Result(); other.state_ = State::kEMPTY; } // Move assign Result& operator=(Result&& other) noexcept { if (&other != this) { this->~Result(); state_ = other.state_; switch (state_) { case State::kEMPTY: break; case State::kVALUE: new (&value_) Value(std::move(other.value_)); break; case State::kERROR: new (&error_) Error(std::move(other.error_)); break; } other.~Result(); other.state_ = State::kEMPTY; } return *this; } // Copy construct Result(const Result& other) { static_assert( std::is_copy_constructible::value && std::is_copy_constructible::value, "Value and Error must be copyable for " "Result to be copyable"); state_ = other.state_; switch (state_) { case State::kEMPTY: break; case State::kVALUE: new (&value_) Value(other.value_); break; case State::kERROR: new (&error_) Error(other.error_); break; } } // Copy assign Result& operator=(const Result& other) { static_assert( std::is_copy_constructible::value && std::is_copy_constructible::value, "Value and Error must be copyable for " "Result to be copyable"); if (&other != this) { this->~Result(); state_ = other.state_; switch (state_) { case State::kEMPTY: break; case State::kVALUE: new (&value_) Value(other.value_); break; case State::kERROR: new (&error_) Error(other.error_); break; } } return *this; } bool hasValue() const { return state_ == State::kVALUE; } bool hasError() const { return state_ == State::kERROR; } bool empty() const { return state_ == State::kEMPTY; } // If Result does not contain a valid Value, throw // the Error value. If there is no error value, // throw a logic error. // This variant is used when Error is std::exception_ptr. template typename std::enable_if::value>::type throwIfError() const { switch (state_) { case State::kVALUE: return; case State::kEMPTY: throw std::logic_error("Uninitialized Result"); case State::kERROR: std::rethrow_exception(error_); } } // If Result does not contain a valid Value, throw a logic error. // This variant is used when Error is std::error_code. template typename std::enable_if::value>::type throwIfError() const { switch (state_) { case State::kVALUE: return; case State::kEMPTY: throw std::logic_error("Uninitialized Result"); case State::kERROR: throw std::system_error(error_); } } // If Result does not contain a valid Value, throw a logic error. // This variant is used when Error is not std::exception_ptr or // std::error_code. template typename std::enable_if< !std::is_same::value && !std::is_same::value>::type throwIfError() const { switch (state_) { case State::kVALUE: return; case State::kEMPTY: throw std::logic_error("Uninitialized Result"); case State::kERROR: throw std::logic_error("Result holds Error, not Value"); } } // Get a mutable reference to the value. If the value is // not assigned, an exception will be thrown by throwIfError(). Value& value() & { throwIfError(); return value_; } // Get an rvalue reference to the value. If the value is // not assigned, an exception will be thrown by throwIfError(). Value&& value() && { throwIfError(); return value_; } // Get a const reference to the value. If the value is // not assigned, an exception will be thrown by throwIfError(). const Value& value() const& { throwIfError(); return value_; } // Throws a logic exception if the result does not contain an Error void throwIfNotError() { switch (state_) { case State::kVALUE: throw std::logic_error("Result holds Value, not Error"); case State::kEMPTY: throw std::logic_error("Uninitialized Result"); case State::kERROR: return; } } // Get a mutable reference to the error. If the error is // not assigned, an exception will be thrown by throwIfNotError(). Error& error() & { throwIfNotError(); return error_; } // Get an rvalue reference to the error. If the error is // not assigned, an exception will be thrown by throwIfNotError(). Error&& error() && { throwIfNotError(); return error_; } // Get a const reference to the error. If the error is // not assigned, an exception will be thrown by throwIfNotError(). const Error& error() const& { throwIfNotError(); return error_; } private: State state_; union { Value value_; Error error_; }; }; // Helper for making a Result from a value; auto-deduces the Value type. // The Error type can be overridden and is listed first because the whole // point of this is to avoid specifying the Value type. template Result::type, Error> makeResult(T&& t) { return Result::type, Error>(std::forward(t)); } // Helper for populating a Result with the return value from a lambda. // If the lambda throws an exception it will be captured into the Result. // This is the non-void return type flavor. template typename std::enable_if< !std::is_same::type, void>::value, Result::type>>::type makeResultWith(Func&& func) { using ResType = typename std::result_of::type; try { return Result(func()); } catch (const std::exception& e) { return Result(std::current_exception()); } } // Helper for populating a Result with the return value from a lambda. // If the lambda throws an exception it will be captured into the Result. // This is the void return type flavor; it produces Result template typename std::enable_if< std::is_same::type, void>::value, Result>::type makeResultWith(Func&& func) { try { func(); return Result(Unit{}); } catch (const std::exception& e) { return Result(std::current_exception()); } } } watchman-4.9.0/TARGETS000066400000000000000000000161001314236077500143700ustar00rootroot00000000000000# Things aren't as nice in here as we'd like, but that's because # we need to preserve how things build in the autoconf and windows # builds for watchman. compiler_flags = [ "-Wunused-variable", "-DWATCHMAN_FACEBOOK_INTERNAL", ] # Generates 'config.h' by probing for system capabilities def prober(): import os # We're going to extract the configured compiler from the buck config # and pass that down to the probe script. config_flags = { 'cc': 'cc_real', 'cppflags': 'cppflags', 'ldflags': 'ldflags', } probe_cmd = [ 'python', '$SRCDIR/probe.py', '--configure=$SRCDIR/configure.ac', '--cwd=%s' % os.getcwd()] for name, key in config_flags.iteritems(): val = read_config('cxx', key) probe_cmd.append("--%s='%s'" % (name, val)) probe_cmd.append('> $OUT') buck_genrule( name='generate_config_h', srcs=[ 'probe.py', 'configure.ac', ], cmd=' '.join(probe_cmd), out='config.h', ) def config_h(): # we use this same convention in the eden build to discover whether # we are building in the internal fb repo or in the opensourced project(s). if read_config('codebase', 'mode') == 'public': prober() else: # Just copy the pre-configured linux attributes so that we have # know precisely what the characteristics will be for this build. buck_genrule( name='generate_config_h', srcs=['facebook/linux_config.h'], cmd='cp $SRCDIR/facebook/linux_config.h $OUT', out='config.h', ) config_h() # Wraps the generated config.h file in a library rule that we can # depend upon. buck_cxx_library( name = "config_h", header_namespace = "", exported_headers = [ ":generate_config_h", ], visibility = ["PUBLIC"], ) # Exports all watchman headers without the 'watchman/' prefix that # they would otherwise have in our build tree. buck_cxx_library( name = "headers", header_namespace = "", exported_headers = glob(["**/*.h"]), exported_deps = [ ":config_h", "//common/base:build_info", "//watchman/thirdparty/jansson:config_h", ], visibility = ["PUBLIC"], ) cpp_library( name = "eden_watcher", srcs = [ "watcher/eden.cpp", ], compiler_flags = compiler_flags, # We use constructors to declare commands rather than maintaining # static tables of things. Ensure that they don't get stripped # out of the final binary! link_whole = True, supported_platforms_regex = "glibc", deps = [ ":err", ":headers", "@/eden/fs/service:thrift-streaming-cpp2", ], ) # Linux specific watcher module cpp_library( name = "sysdep_watcher", srcs = ["watcher/inotify.cpp"], compiler_flags = compiler_flags, # We use constructors to declare commands rather than maintaining # static tables of things. Ensure that they don't get stripped # out of the final binary! link_whole = True, supported_platforms_regex = "glibc", deps = [ ":eden_watcher", ":err", ":headers", ], ) # mac specific watcher module cpp_library( name = "sysdep_watcher", srcs = [ "watcher/fsevents.cpp", "watcher/kqueue.cpp", ], compiler_flags = compiler_flags, # We use constructors to declare commands rather than maintaining # static tables of things. Ensure that they don't get stripped # out of the final binary! link_whole = True, supported_platforms_regex = "macos", deps = [":headers"], ) # windows specific watcher module cpp_library( name = "sysdep_watcher", srcs = ["watcher/win32.cpp"], compiler_flags = compiler_flags, # We use constructors to declare commands rather than maintaining # static tables of things. Ensure that they don't get stripped # out of the final binary! link_whole = True, supported_platforms_regex = "windows", deps = [":headers"], ) cpp_library( name = "log", srcs = [ "PubSub.cpp", "log.cpp", ], compiler_flags = compiler_flags, deps = [ ":headers", "@/watchman/thirdparty/jansson:jansson", ], ) cpp_library( name = "hash", srcs = ["hash.cpp"], compiler_flags = compiler_flags, deps = [":headers"], ) cpp_library( name = "string", srcs = ["string.cpp"], compiler_flags = compiler_flags, deps = [ ":hash", ":headers", "@/watchman/thirdparty/jansson:utf", ], ) cpp_library( name = "err", srcs = [ "root/poison.cpp", "root/warnerr.cpp", ], compiler_flags = compiler_flags, deps = [":headers"], ) cpp_library( name = "pcre", srcs = ["query/pcre.cpp"], compiler_flags = ["-DHAVE_PCRE_H"] + compiler_flags, link_whole = True, deps = [":headers"], external_deps = ["pcre"], ) cpp_library( name = "testsupport", srcs = [ "ChildProcess.cpp", "FileDescriptor.cpp", "FileInformation.cpp", "Pipe.cpp", "ThreadPool.cpp", "bser.cpp", "cfg.cpp", "expflags.cpp", "ignore.cpp", "opendir.cpp", "pending.cpp", "time.cpp", ], compiler_flags = compiler_flags, deps = [ ":headers", ":log", ":string", "@/watchman/thirdparty/jansson:jansson", "@/watchman/thirdparty/libart/src:art", ], ) # The bulk of the watchman implementation lives in this library cpp_library( name = "watchmanlib", srcs = glob( [ "*.cpp", "query/*.cpp", "watcher/auto.cpp", "root/*.cpp", "cmds/*.cpp", "scm/*.cpp", ], excludes = [ "main.cpp", "stream_win.cpp", "log.cpp", "query/pcre.cpp", "root/warnerr.cpp", "root/poison.cpp", ], ), compiler_flags = compiler_flags, # We use constructors to declare commands rather than maintaining # static tables of things. Ensure that they don't get stripped # out of the final binary! link_whole = True, deps = [ ":err", ":headers", ":log", ":pcre", ":string", ":sysdep_watcher", "@/watchman/thirdparty/jansson:jansson", "@/watchman/thirdparty/libart/src:art", "@/watchman/thirdparty/wildmatch:wildmatch", ], ) # and the watchman binary itself cpp_binary( name = "watchman", srcs = ["main.cpp"], compiler_flags = compiler_flags, deps = [ ":headers", ":watchmanlib", ], ) # This is the custom test runner used by the open source build. python_library( name = "runtests", srcs = ["runtests.py"], py_version = "<3", deps = [ ":watchman", "@/watchman/tests/integration:testlib", ], ) python_library( name = "runtests-py3", srcs = ["runtests.py"], py_version = ">=3.5", deps = [ ":watchman", "@/watchman/tests/integration:testlib-py3", ], ) watchman-4.9.0/ThreadPool.cpp000066400000000000000000000033131314236077500161030ustar00rootroot00000000000000/* Copyright 2017-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "ThreadPool.h" #include "watchman_log.h" namespace watchman { ThreadPool& getThreadPool() { static ThreadPool pool; return pool; } ThreadPool::~ThreadPool() { stop(); } void ThreadPool::start(size_t numWorkers, size_t maxItems) { std::unique_lock lock(mutex_); if (!workers_.empty()) { throw std::runtime_error("ThreadPool already started"); } if (stopping_) { throw std::runtime_error("Cannot restart a stopped pool"); } maxItems_ = maxItems; for (auto i = 0U; i < numWorkers; ++i) { workers_.emplace_back([this, i] { w_set_thread_name("ThreadPool-%i", i); runWorker(); }); } } void ThreadPool::runWorker() { while (true) { std::function task; { std::unique_lock lock(mutex_); condition_.wait(lock, [this] { return stopping_ || !tasks_.empty(); }); if (stopping_ && tasks_.empty()) { return; } task = std::move(tasks_.front()); tasks_.pop_front(); } task(); } } void ThreadPool::stop(bool join) { { std::unique_lock lock(mutex_); stopping_ = true; } condition_.notify_all(); if (join) { for (auto& worker : workers_) { worker.join(); } } } void ThreadPool::run(std::function&& func) { { std::unique_lock lock(mutex_); if (stopping_) { throw std::runtime_error("cannot add tasks after pool has stopped"); } if (tasks_.size() + 1 >= maxItems_) { throw std::runtime_error("thread pool queue is full"); } tasks_.emplace_back(std::move(func)); } condition_.notify_one(); } } watchman-4.9.0/ThreadPool.h000066400000000000000000000040671314236077500155570ustar00rootroot00000000000000/* Copyright 2017-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #pragma once #include "watchman_system.h" // to avoid system header ordering issue on win32 #include #include #include #include #include #include "Future.h" namespace watchman { // Almost the dumbest possible thread pool implementation. // This allows us to set an upper bound on the number of concurrent // tasks that are executed in the thread pool. Contrast with // std::async which leaves it to the implementation to decide // whether each async invocation spawns a thread or uses a // thread pool with an unspecified number of threads. // Constraining the concurrency is important for watchman so // that we can limit the amount of I/O that we might induce. class ThreadPool : public Executor { public: ThreadPool() = default; ~ThreadPool() override; // Start a thread pool with the specified number of worker threads // and the specified upper bound on the number of queued jobs. // The queue limit is intended as a brake in case the system // is under a heavy backlog, and can also help surface issues // where there a task executing in the pool is blocking on // the results of some other task also running in the thread // pool. void start(size_t numWorkers, size_t maxItems); // Request that the worker threads terminate. // If `join` is true, wait for the worker threads to terminate. void stop(bool join = true); // Run a function in the thread pool. // This queues up the function for asynchronous execution and // may return before func has been executed. // If the thread pool has been stopped, throws a runtime_error. void run(std::function&& func) override; private: std::vector workers_; std::deque> tasks_; std::mutex mutex_; std::condition_variable condition_; bool stopping_{false}; size_t maxItems_; void runWorker(); }; // Return a reference to the shared thread pool for the watchman process. ThreadPool& getThreadPool(); } watchman-4.9.0/acinclude.m4000066400000000000000000000361661314236077500155430ustar00rootroot00000000000000# =========================================================================== # http://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx.html # =========================================================================== # # SYNOPSIS # # AX_CXX_COMPILE_STDCXX(VERSION, [ext|noext], [mandatory|optional]) # # DESCRIPTION # # Check for baseline language coverage in the compiler for the specified # version of the C++ standard. If necessary, add switches to CXX and # CXXCPP to enable support. VERSION may be '11' (for the C++11 standard) # or '14' (for the C++14 standard). # # The second argument, if specified, indicates whether you insist on an # extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g. # -std=c++11). If neither is specified, you get whatever works, with # preference for an extended mode. # # The third argument, if specified 'mandatory' or if left unspecified, # indicates that baseline support for the specified C++ standard is # required and that the macro should error out if no mode with that # support is found. If specified 'optional', then configuration proceeds # regardless, after defining HAVE_CXX${VERSION} if and only if a # supporting mode is found. # # LICENSE # # Copyright (c) 2008 Benjamin Kosnik # Copyright (c) 2012 Zack Weinberg # Copyright (c) 2013 Roy Stogner # Copyright (c) 2014, 2015 Google Inc.; contributed by Alexey Sokolov # Copyright (c) 2015 Paul Norman # Copyright (c) 2015 Moritz Klammler # # Copying and distribution of this file, with or without modification, are # permitted in any medium without royalty provided the copyright notice # and this notice are preserved. This file is offered as-is, without any # warranty. dnl This macro is based on the code from the AX_CXX_COMPILE_STDCXX_11 macro dnl (serial version number 13). AC_DEFUN([AX_CXX_COMPILE_STDCXX], [dnl m4_if([$1], [11], [], [$1], [14], [], [$1], [17], [m4_fatal([support for C++17 not yet implemented in AX_CXX_COMPILE_STDCXX])], [m4_fatal([invalid first argument `$1' to AX_CXX_COMPILE_STDCXX])])dnl m4_if([$2], [], [], [$2], [ext], [], [$2], [noext], [], [m4_fatal([invalid second argument `$2' to AX_CXX_COMPILE_STDCXX])])dnl m4_if([$3], [], [ax_cxx_compile_cxx$1_required=true], [$3], [mandatory], [ax_cxx_compile_cxx$1_required=true], [$3], [optional], [ax_cxx_compile_cxx$1_required=false], [m4_fatal([invalid third argument `$3' to AX_CXX_COMPILE_STDCXX])]) AC_LANG_PUSH([C++])dnl ac_success=no AC_CACHE_CHECK(whether $CXX supports C++$1 features by default, ax_cv_cxx_compile_cxx$1, [AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])], [ax_cv_cxx_compile_cxx$1=yes], [ax_cv_cxx_compile_cxx$1=no])]) if test x$ax_cv_cxx_compile_cxx$1 = xyes; then ac_success=yes fi m4_if([$2], [noext], [], [dnl if test x$ac_success = xno; then for switch in -std=gnu++$1 -std=gnu++0x; do cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch]) AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch, $cachevar, [ac_save_CXX="$CXX" CXX="$CXX $switch" AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])], [eval $cachevar=yes], [eval $cachevar=no]) CXX="$ac_save_CXX"]) if eval test x\$$cachevar = xyes; then CXX="$CXX $switch" if test -n "$CXXCPP" ; then CXXCPP="$CXXCPP $switch" fi ac_success=yes break fi done fi]) m4_if([$2], [ext], [], [dnl if test x$ac_success = xno; then dnl HP's aCC needs +std=c++11 according to: dnl http://h21007.www2.hp.com/portal/download/files/unprot/aCxx/PDF_Release_Notes/769149-001.pdf dnl Cray's crayCC needs "-h std=c++11" for switch in -std=c++$1 -std=c++0x +std=c++$1 "-h std=c++$1"; do cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch]) AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch, $cachevar, [ac_save_CXX="$CXX" CXX="$CXX $switch" AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])], [eval $cachevar=yes], [eval $cachevar=no]) CXX="$ac_save_CXX"]) if eval test x\$$cachevar = xyes; then CXX="$CXX $switch" if test -n "$CXXCPP" ; then CXXCPP="$CXXCPP $switch" fi ac_success=yes break fi done fi]) AC_LANG_POP([C++]) if test x$ax_cxx_compile_cxx$1_required = xtrue; then if test x$ac_success = xno; then AC_MSG_ERROR([*** A compiler with support for C++$1 language features is required.]) fi fi if test x$ac_success = xno; then HAVE_CXX$1=0 AC_MSG_NOTICE([No compiler with C++$1 support was found]) else HAVE_CXX$1=1 AC_DEFINE(HAVE_CXX$1,1, [define if the compiler supports basic C++$1 syntax]) fi AC_SUBST(HAVE_CXX$1) ]) dnl Test body for checking C++11 support m4_define([_AX_CXX_COMPILE_STDCXX_testbody_11], _AX_CXX_COMPILE_STDCXX_testbody_new_in_11 ) dnl Test body for checking C++14 support m4_define([_AX_CXX_COMPILE_STDCXX_testbody_14], _AX_CXX_COMPILE_STDCXX_testbody_new_in_11 _AX_CXX_COMPILE_STDCXX_testbody_new_in_14 ) dnl Tests for new features in C++11 m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_11], [[ // If the compiler admits that it is not ready for C++11, why torture it? // Hopefully, this will speed up the test. #ifndef __cplusplus #error "This is not a C++ compiler" #elif __cplusplus < 201103L #error "This is not a C++11 compiler" #else namespace cxx11 { namespace test_static_assert { template struct check { static_assert(sizeof(int) <= sizeof(T), "not big enough"); }; } namespace test_final_override { struct Base { virtual void f() {} }; struct Derived : public Base { virtual void f() override {} }; } namespace test_double_right_angle_brackets { template < typename T > struct check {}; typedef check single_type; typedef check> double_type; typedef check>> triple_type; typedef check>>> quadruple_type; } namespace test_decltype { int f() { int a = 1; decltype(a) b = 2; return a + b; } } namespace test_type_deduction { template < typename T1, typename T2 > struct is_same { static const bool value = false; }; template < typename T > struct is_same { static const bool value = true; }; template < typename T1, typename T2 > auto add(T1 a1, T2 a2) -> decltype(a1 + a2) { return a1 + a2; } int test(const int c, volatile int v) { static_assert(is_same::value == true, ""); static_assert(is_same::value == false, ""); static_assert(is_same::value == false, ""); auto ac = c; auto av = v; auto sumi = ac + av + 'x'; auto sumf = ac + av + 1.0; static_assert(is_same::value == true, ""); static_assert(is_same::value == true, ""); static_assert(is_same::value == true, ""); static_assert(is_same::value == false, ""); static_assert(is_same::value == true, ""); return (sumf > 0.0) ? sumi : add(c, v); } } namespace test_noexcept { int f() { return 0; } int g() noexcept { return 0; } static_assert(noexcept(f()) == false, ""); static_assert(noexcept(g()) == true, ""); } namespace test_constexpr { template < typename CharT > unsigned long constexpr strlen_c_r(const CharT *const s, const unsigned long acc) noexcept { return *s ? strlen_c_r(s + 1, acc + 1) : acc; } template < typename CharT > unsigned long constexpr strlen_c(const CharT *const s) noexcept { return strlen_c_r(s, 0UL); } static_assert(strlen_c("") == 0UL, ""); static_assert(strlen_c("1") == 1UL, ""); static_assert(strlen_c("example") == 7UL, ""); static_assert(strlen_c("another\0example") == 7UL, ""); } namespace test_rvalue_references { template < int N > struct answer { static constexpr int value = N; }; answer<1> f(int&) { return answer<1>(); } answer<2> f(const int&) { return answer<2>(); } answer<3> f(int&&) { return answer<3>(); } void test() { int i = 0; const int c = 0; static_assert(decltype(f(i))::value == 1, ""); static_assert(decltype(f(c))::value == 2, ""); static_assert(decltype(f(0))::value == 3, ""); } } namespace test_uniform_initialization { struct test { static const int zero {}; static const int one {1}; }; static_assert(test::zero == 0, ""); static_assert(test::one == 1, ""); } namespace test_lambdas { void test1() { auto lambda1 = [](){}; auto lambda2 = lambda1; lambda1(); lambda2(); } int test2() { auto a = [](int i, int j){ return i + j; }(1, 2); auto b = []() -> int { return '0'; }(); auto c = [=](){ return a + b; }(); auto d = [&](){ return c; }(); auto e = [a, &b](int x) mutable { const auto identity = [](int y){ return y; }; for (auto i = 0; i < a; ++i) a += b--; return x + identity(a + b); }(0); return a + b + c + d + e; } int test3() { const auto nullary = [](){ return 0; }; const auto unary = [](int x){ return x; }; using nullary_t = decltype(nullary); using unary_t = decltype(unary); const auto higher1st = [](nullary_t f){ return f(); }; const auto higher2nd = [unary](nullary_t f1){ return [unary, f1](unary_t f2){ return f2(unary(f1())); }; }; return higher1st(nullary) + higher2nd(nullary)(unary); } } namespace test_variadic_templates { template struct sum; template struct sum { static constexpr auto value = N0 + sum::value; }; template <> struct sum<> { static constexpr auto value = 0; }; static_assert(sum<>::value == 0, ""); static_assert(sum<1>::value == 1, ""); static_assert(sum<23>::value == 23, ""); static_assert(sum<1, 2>::value == 3, ""); static_assert(sum<5, 5, 11>::value == 21, ""); static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, ""); } // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function // because of this. namespace test_template_alias_sfinae { struct foo {}; template using member = typename T::member_type; template void func(...) {} template void func(member*) {} void test(); void test() { func(0); } } } // namespace cxx11 #endif // __cplusplus >= 201103L ]]) dnl Tests for new features in C++14 m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_14], [[ // If the compiler admits that it is not ready for C++14, why torture it? // Hopefully, this will speed up the test. #ifndef __cplusplus #error "This is not a C++ compiler" #elif __cplusplus < 201402L #error "This is not a C++14 compiler" #else namespace cxx14 { namespace test_polymorphic_lambdas { int test() { const auto lambda = [](auto&&... args){ const auto istiny = [](auto x){ return (sizeof(x) == 1UL) ? 1 : 0; }; const int aretiny[] = { istiny(args)... }; return aretiny[0]; }; return lambda(1, 1L, 1.0f, '1'); } } namespace test_binary_literals { constexpr auto ivii = 0b0000000000101010; static_assert(ivii == 42, "wrong value"); } namespace test_generalized_constexpr { template < typename CharT > constexpr unsigned long strlen_c(const CharT *const s) noexcept { auto length = 0UL; for (auto p = s; *p; ++p) ++length; return length; } static_assert(strlen_c("") == 0UL, ""); static_assert(strlen_c("x") == 1UL, ""); static_assert(strlen_c("test") == 4UL, ""); static_assert(strlen_c("another\0test") == 7UL, ""); } namespace test_lambda_init_capture { int test() { auto x = 0; const auto lambda1 = [a = x](int b){ return a + b; }; const auto lambda2 = [a = lambda1(x)](){ return a; }; return lambda2(); } } namespace test_digit_seperators { constexpr auto ten_million = 100'000'000; static_assert(ten_million == 100000000, ""); } namespace test_return_type_deduction { auto f(int& x) { return x; } decltype(auto) g(int& x) { return x; } template < typename T1, typename T2 > struct is_same { static constexpr auto value = false; }; template < typename T > struct is_same { static constexpr auto value = true; }; int test() { auto x = 0; static_assert(is_same::value, ""); static_assert(is_same::value, ""); return x; } } } // namespace cxx14 #endif // __cplusplus >= 201402L ]]) # ============================================================================ # http://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx_11.html # ============================================================================ # # SYNOPSIS # # AX_CXX_COMPILE_STDCXX_11([ext|noext], [mandatory|optional]) # # DESCRIPTION # # Check for baseline language coverage in the compiler for the C++11 # standard; if necessary, add switches to CXX and CXXCPP to enable # support. # # This macro is a convenience alias for calling the AX_CXX_COMPILE_STDCXX # macro with the version set to C++11. The two optional arguments are # forwarded literally as the second and third argument respectively. # Please see the documentation for the AX_CXX_COMPILE_STDCXX macro for # more information. If you want to use this macro, you also need to # download the ax_cxx_compile_stdcxx.m4 file. # # LICENSE # # Copyright (c) 2008 Benjamin Kosnik # Copyright (c) 2012 Zack Weinberg # Copyright (c) 2013 Roy Stogner # Copyright (c) 2014, 2015 Google Inc.; contributed by Alexey Sokolov # Copyright (c) 2015 Paul Norman # Copyright (c) 2015 Moritz Klammler # # Copying and distribution of this file, with or without modification, are # permitted in any medium without royalty provided the copyright notice # and this notice are preserved. This file is offered as-is, without any # warranty. AX_REQUIRE_DEFINED([AX_CXX_COMPILE_STDCXX]) AC_DEFUN([AX_CXX_COMPILE_STDCXX_11], [AX_CXX_COMPILE_STDCXX([11], [$1], [$2])]) watchman-4.9.0/appveyor.yml000066400000000000000000000013411314236077500157250ustar00rootroot00000000000000version: b{build} os: Visual Studio 2015 branches: except: - gh-pages init: - SET PATH=C:\Program Files\OpenSSL;c:\tools\php;%PATH% - SET COMPOSER_NO_INTERACTION=1 - SET PHP=1 - SET ANSICON=121x90 (121x90) install: - python -V - IF EXIST c:\tools\php (SET PHP=0) - ps: appveyor-retry cinst --params '""/InstallDir:C:\tools\php""' --ignore-checksums -y php --version 5.6.30 - php -v build_script: - cmd: call make.bat after_build: - make dist test_script: - PATH=C:\tools\php;%PATH% - "cd node && npm install" - cmd: make integration artifacts: - path: Watchman name: watchman type: zip environment: matrix: - WATCHMAN_WIN7_COMPAT: 1 - WATCHMAN_WIN7_COMPAT: platform: - x64 watchman-4.9.0/arcanist/000077500000000000000000000000001314236077500151425ustar00rootroot00000000000000watchman-4.9.0/arcanist/__phutil_library_init__.php000066400000000000000000000000661314236077500225250ustar00rootroot00000000000000 2, 'class' => array( 'CallgrindFile' => 'lib/cov/CallgrindFile.php', 'DwarfLineInfo' => 'lib/cov/DwarfLineInfo.php', 'PythonProvidedWatchmanInstance' => 'lib/WatchmanInstance.php', 'TestSkipException' => 'lib/WatchmanTestCase.php', 'WatchmanDirectoryFixture' => 'lib/WatchmanDirectoryFixture.php', 'WatchmanInstance' => 'lib/WatchmanInstance.php', 'WatchmanIntegrationEngine' => 'lib/WatchmanIntegrationEngine.php', 'WatchmanLicenseLinter' => 'lib/WatchmanLicenseLinter.php', 'WatchmanLintEngine' => 'lib/WatchmanLintEngine.php', 'WatchmanQueryFuture' => 'lib/WatchmanQueryFuture.php', 'WatchmanTapEngine' => 'lib/WatchmanTapEngine.php', 'WatchmanTestCase' => 'lib/WatchmanTestCase.php', ), 'function' => array( 'execx' => 'lib/WatchmanInstance.php', 'w_find_subdata_containing_file' => 'lib/WatchmanTestCase.php', 'w_is_file_in_file_list' => 'lib/WatchmanTestCase.php', 'w_is_same_file_list' => 'lib/WatchmanTestCase.php', 'w_is_same_filename' => 'lib/WatchmanTestCase.php', 'w_normalize_file_list' => 'lib/WatchmanTestCase.php', 'w_normalize_filename' => 'lib/WatchmanTestCase.php', 'w_rmdir_recursive' => 'lib/WatchmanDirectoryFixture.php', 'w_rmdir_recursive_inner' => 'lib/WatchmanDirectoryFixture.php', 'w_unlink' => 'lib/WatchmanTestCase.php', ), 'xmap' => array( 'PythonProvidedWatchmanInstance' => 'WatchmanInstance', 'TestSkipException' => 'Exception', 'WatchmanIntegrationEngine' => 'WatchmanTapEngine', 'WatchmanLicenseLinter' => 'ArcanistLinter', 'WatchmanLintEngine' => 'ArcanistLintEngine', 'WatchmanQueryFuture' => 'FutureProxy', ), )); watchman-4.9.0/arcanist/lib/000077500000000000000000000000001314236077500157105ustar00rootroot00000000000000watchman-4.9.0/arcanist/lib/WatchmanDirectoryFixture.php000066400000000000000000000030741314236077500234230ustar00rootroot00000000000000 0) { if (w_rmdir_recursive_inner($path)) { return; } usleep(10000); } } // Create a temporary dir in the test harness temp tree class WatchmanDirectoryFixture { protected $path; public function __construct() { $temp_dir = sys_get_temp_dir(); for ($i = 0; $i < 100; $i++) { $name = $temp_dir . DIRECTORY_SEPARATOR . mt_rand(); if (@mkdir($name)) { $this->path = $name; return; } } throw new Exception("failed to make a temporary dir"); } public function getPath($to_file = null) { if ($to_file) { return $this->path . DIRECTORY_SEPARATOR . ltrim(w_normalize_filename($to_file, "\\/")); } return $this->path; } } watchman-4.9.0/arcanist/lib/WatchmanInstance.php000066400000000000000000000554171314236077500216640ustar00rootroot00000000000000repo_root = $repo_root; $this->logfile = $this->tempfile(); if (phutil_is_windows()) { $this->sockname = "\\\\.\\pipe\\watchman-test-" . uniqid(); } else { $this->sockname = $this->tempfile(); } $this->config_file = $this->tempfile(); // PHP is incredibly stupid: there's no direct way to turn array() into '{}' // and array('foo' => array('bar', 'baz')) into '{"foo": ["bar", "baz"]}'. if ($config === array()) { $config_json = '{}'; } else { $config_json = json_encode($config); } file_put_contents($this->config_file, $config_json); if (getenv("WATCHMAN_VALGRIND")) { $this->valgrind = true; $this->vg_log = $this->tempfile(); } elseif ($coverage) { $this->coverage = true; $this->cg_file = $this->tempfile(); } $this->request(); } function setDebug($enable) { $this->debug = $enable; } protected function readResponses() { do { $data = fgets($this->sock); if ($data === false) { return false; } $resp = json_decode($data, true); if (isset($resp['log'])) { // Collect log information $this->logdata[] = $resp['log']; continue; } if (isset($resp['subscription'])) { // Collect subscription information $name = $resp['subscription']; if (!isset($this->subdata[$name])) { $this->subdata[$name] = array(); } $this->subdata[$name][] = $resp; continue; } return $resp; } while (true); } function startLogging($level) { $this->logdata = array(); return $this->request('log-level', $level); } function stopLogging() { return $this->request('log-level', 'off'); } function waitForSub($subname, $callable, $timeout = 5) { if (isset($this->subdata[$subname])) { if ($callable($this->subdata[$subname])) { return $this->subdata[$subname]; } } $deadline = time() + $timeout; while (time() < $deadline) { stream_set_timeout($this->sock, $deadline - time()); $data = fgets($this->sock); stream_set_timeout($this->sock, self::TIMEOUT); if ($data === false) { break; } $resp = json_decode($data, true); $name = idx($resp, 'subscription'); if (!$name) { throw new Exception("expected a subscription response, got $data"); } $this->subdata[$name][] = $resp; if ($name == $subname) { if ($callable($this->subdata[$subname])) { return $this->subdata[$subname]; } } } return array(); } function getProcessID() { try { $resp = $this->request('get-pid'); return idx($resp, 'pid'); } catch (Exception $e) { printf("get-pid: %s\n", $e->getMessage()); return null; } } // Looks in the log file for the matching term. // This is useful for checking stdout/stderr from triggers function waitForLogOutput($criteria, $timeout = 5) { $deadline = time() + $timeout; while (time() < $deadline) { foreach (file($this->logfile.'.log') as $line) { if (preg_match($criteria, $line, $matches)) { return array(true, $line, $matches); } } usleep(200); } return array(false, null, null); } /** Get and clear data we collected for a subscription */ function getSubData($subname) { $data = idx($this->subdata, $subname); unset($this->subdata[$subname]); return $data; } function getLogData() { return $this->logdata; } // Looks in json stream for logging output function waitForLog($criteria, $timeout = 5) { foreach ($this->logdata as $line) { $matches = array(); if (preg_match($criteria, $line, $matches)) { return array(true, $line, $matches); } } $deadline = time() + $timeout; while (time() < $deadline) { stream_set_timeout($this->sock, $deadline - time()); $data = fgets($this->sock); stream_set_timeout($this->sock, self::TIMEOUT); if ($data === false) { break; } $resp = json_decode($data, true); if (!isset($resp['log'])) { throw new Exception("expected a log response, got $data"); } $this->logdata[] = $resp['log']; if (preg_match($criteria, $resp['log'], $matches)) { return array(true, $resp['log'], $matches); } } return array(false, null, null); } function getFullSockName() { if (phutil_is_windows()) { return $this->sockname; } return $this->sockname . '.sock'; } function start() { $cmd = "%s --foreground --sockname=%s --logfile=%s.log " . "--statefile=%s.state --log-level=2 --pidfile=%s.pid"; if ($this->valgrind) { $cmd = "valgrind --tool=memcheck " . "--log-file=$this->vg_log " . "--track-fds=yes " . "--read-var-info=yes " . "--track-origins=yes " . "--leak-check=full " . "--xml=yes " . "--xml-file=$this->vg_log.xml " . "-v " . $cmd; } else if ($this->coverage) { $cmd = "valgrind --tool=callgrind --collect-jumps=yes " . "--separate-recs=16 --callgrind-out-file=$this->cg_file " . $cmd; } putenv("WATCHMAN_CONFIG_FILE=".$this->config_file); $watchman_bin = $this->repo_root . '/watchman'; if (!file_exists($watchman_bin)) { // Probably inside a buck-built test suite. We "know" that // the test running machinery has set WATCHMAN_BINARY to the // appropriate path, but if not, we just have to assume that // it is in the PATH and trust that. $watchman_bin = idx($_ENV, 'WATCHMAN_BINARY', 'watchman'); } $cmd = sprintf($cmd, $watchman_bin, $this->getFullSockName(), $this->logfile, $this->logfile, $this->logfile); $pipes = array(); $this->proc = proc_open($cmd, array( 0 => array('file', phutil_is_windows() ? 'NUL:' : '/dev/null', 'r'), 1 => array('file', $this->logfile, 'a'), 2 => array('file', $this->logfile, 'a'), ), $pipes, $this->repo_root); if (!$this->proc) { throw new Exception("Failed to spawn $cmd"); } $this->openSock(); // If you're debugging and want to attach a debugger, then: // `WATCHMAN_DEBUG_WAIT=1 arc test tests/integration/age.php` // then gdb -p or lldb -p with the PID it prints out if (getenv("WATCHMAN_DEBUG_WAIT")) { printf("PID: %d\n", $this->getProcessID()); sleep(10); } } function openSock() { $sockname = $this->getFullSockName(); $timeout = 5; $deadline = time() + $timeout; do { if (phutil_is_windows()) { $this->sock = @fopen($this->sockname, 'r+'); if (!$this->sock) { usleep(30000); } } else { if (!file_exists($sockname)) { usleep(30000); } $this->sock = @fsockopen('unix://' . $sockname); } if ($this->sock) { break; } } while (time() <= $deadline); if (!$this->sock) { throw new Exception("Failed to talk to watchman within ". "$timeout seconds on $sockname"); } stream_set_timeout($this->sock, self::TIMEOUT); } private function fwrite_all($sock, $buf) { $wrote = 0; for ($total = 0; $total < strlen($buf); $total += $wrote) { $wrote = @fwrite($sock, substr($buf, $total)); if ($wrote === false || $wrote < 1) { $err = error_get_last(); if (is_array($err)) { $reason = idx($err, 'message', false); } else { $reason = ''; } return sprintf("wrote %d/%d. %s", $total, strlen($buf), $reason); } } return true; } function request() { $args = func_get_args(); if (!$this->sock) { $this->start(); } if (!count($args)) { // No command to send right now (we're just warming up) return true; } $req = json_encode($args); if ($this->debug) { echo "Sending $req\n"; } $buf = $req . "\n"; $why = $this->fwrite_all($this->sock, $buf); if ($why !== true) { echo "Failed to send $buf$why\n"; throw new Exception($why); } return $this->readResponses(); } private function renderVGStack($stack) { $text = ''; foreach ($stack->frame as $frame) { if ($frame->file) { $origin = sprintf("%s:%d", $frame->file, $frame->line); } else { $origin = (string)$frame->obj; } $text .= sprintf("\n %40s %s", $origin, $frame->fn); } return $text; } private function renderVGResult($err) { $text = ""; $want = array( 'stack' => true, 'xwhat' => true, 'what' => true, 'auxwhat' => true, ); foreach ($err as $k => $elem) { if (!isset($want[$k])) { continue; } if ($k == 'stack') { $v = $this->renderVGStack($elem); } elseif ($k == 'xwhat') { $v = (string)$elem->text; } elseif ($k == 'what') { $v = (string)$elem; } elseif ($k == 'auxwhat') { $v = (string)$elem; } if (strlen($text)) $text .= "\n"; $text .= $v; } return $text; } function generateCoverageResults() { // Find all executables, not just the test executables. // We need to do this because the test executables may not // include all of the possible code (linker decides to omit // it from the image) so we see a skewed representation of // the source lines. $fp = popen( "find $this->repo_root -type f -name watchman -o " . "-name \*.a -o -name \*.so -o -name \*.dylib", "r"); while (true) { $line = fgets($fp); if ($line === false) break; $obj_files[] = trim($line); } // Parse line information from the objects foreach ($obj_files as $object) { DwarfLineInfo::loadObject($object); } $CG = new CallgrindFile((string)$this->cg_file); $CG->parse(); $source_files = array(); foreach ($CG->getSourceFiles() as $filename) { if (Filesystem::isDescendant($filename, $this->repo_root) && !preg_match("/(thirdparty|tests)/", $filename)) { $source_files[$filename] = $filename; } } $cov = array(); foreach ($source_files as $filename) { $relsrc = substr($filename, strlen($this->repo_root) + 1); $cov[$relsrc] = CallgrindFile::mergeSourceLineData( $filename, array($CG)); } $res = new ArcanistUnitTestResult(); $res->setName('coverage'); $res->setUserData("Collected"); $res->setResult(ArcanistUnitTestResult::RESULT_PASS); $res->setCoverage($cov); // Stash it for review with our `arc cov` command $wc = ArcanistWorkingCopyIdentity::newFromPath($this->repo_root); $api = ArcanistRepositoryAPI::newAPIFromWorkingCopyIdentity($wc); $api->writeScratchFile('wman-cov.json', json_encode($cov)); return array($res); } function generateValgrindTestResults() { $this->terminateProcess(); if ($this->coverage) { return $this->generateCoverageResults(); } if (!$this->valgrind) { return array(); } $definite_leaks = array(); $possible_leaks = array(); $errors = array(); $descriptors = array(); // valgrind seems to use an interesting definition of valid XML. // Tolerate having multiple documents in one file. // Confluence of weird bugs; hhvm has very low preg_match limits // so we have to grovel around to make sure that we read this // stuff in properly :-/ $documents = array(); $in_doc = false; $doc = null; foreach (file($this->vg_log . '.xml') as $line) { if ($in_doc) { $doc[] = $line; if (preg_match(',,', $line)) { $documents[] = implode("\n", $doc); $doc = null; } } else { if (preg_match(',,', $line)) { $doc = array($line); $in_doc = true; } } } libxml_use_internal_errors(true); foreach ($documents as $data) { libxml_clear_errors(); $vg = @simplexml_load_string($data); if (is_object($vg)) { foreach ($vg->error as $err) { $render = $this->renderVGResult($err); switch ($err->kind) { case 'Leak_DefinitelyLost': $definite_leaks[] = $render; break; case 'Leak_PossiblyLost': $possible_leaks[] = $render; break; default: $errors[] = $render; } } // These look like fd leak records, but they're not documented // as such. These go away if we turn off track-fds foreach ($vg->stack as $stack) { // Suppressing this for now: posix_spawn seems to confuse // some valgrind's, particularly the version we run on travis, // as it records open descriptors from the exec'ing child // $descriptors[] = $this->renderVGStack($stack); } } else { $why = 'failed to parse xml'; $lines = explode("\n", $data); foreach (libxml_get_errors() as $err) { $slice = array_slice($lines, $err->line - 3, 6); $slice = implode("\n", $slice); $why .= sprintf( "\n%s (line %d col %d) %s", $err->message, $err->line, $err->column, $slice ); } printf("parsing valgrind output: %s\n", $why); } } $results = array(); $res = new ArcanistUnitTestResult(); $res->setName('valgrind possible leaks'); $res->setUserData(implode("\n\n", $possible_leaks)); $res->setResult(count($possible_leaks) ? ArcanistUnitTestResult::RESULT_SKIP : ArcanistUnitTestResult::RESULT_PASS); $results[] = $res; $res = new ArcanistUnitTestResult(); $res->setName('descriptor leaks'); $res->setUserData(implode("\n\n", $descriptors)); $res->setResult(count($descriptors) ? ArcanistUnitTestResult::RESULT_FAIL : ArcanistUnitTestResult::RESULT_PASS); $results[] = $res; $res = new ArcanistUnitTestResult(); $res->setName('valgrind leaks'); $res->setUserData(implode("\n\n", $definite_leaks)); $leak_res = count($definite_leaks) ? ArcanistUnitTestResult::RESULT_FAIL : ArcanistUnitTestResult::RESULT_PASS; if ($leak_res == ArcanistUnitTestResult::RESULT_FAIL && getenv('TRAVIS') == 'true') { // Travis has false positives at this time, downgrade $leak_res = ArcanistUnitTestResult::RESULT_SKIP; } $res->setResult($leak_res); $results[] = $res; $res = new ArcanistUnitTestResult(); $res->setName('valgrind errors'); $res->setUserData(implode("\n\n", $errors)); $res->setResult(count($errors) ? ArcanistUnitTestResult::RESULT_FAIL : ArcanistUnitTestResult::RESULT_PASS); $results[] = $res; return $results; } private function waitForTerminate($timeout) { if (!$this->proc) { return false; } $deadline = time() + $timeout; do { $st = proc_get_status($this->proc); if (!$st['running']) { return $st; } usleep(30000); } while (time() <= $deadline); return $st; } protected function waitForSuspendedState($suspended, $timeout, $pid = null) { if (phutil_is_windows()) { return true; } if ($pid === null) { $st = proc_get_status($this->proc); $pid = $st['pid']; } // The response to proc_get_status has a 'stopped' value, which is // ostensibly set to a truthy value if the process is stopped and falsy if // it isn't. Why don't we use it, you ask? Well, let me ask you a question // in response. What do you expect the following code to print out? // // $st = proc_get_status($this->proc); // posix_kill($st['pid'], SIGSTOP); // -- wait for a while so that the process is stopped -- // $st = proc_get_status($this->proc); // print ((bool)$st['stopped']).', '; // $st = proc_get_status($this->proc); // print (bool)$st['stopped']; // // If you said 'true, true', congratulations! You're a reasonable // person. However, PHP is well known to not be reasonable, and in reality // 'true, false' will be printed out. That is because proc_get_status only // returns a truthy value for 'stopped' the first time it is called after // the process is stopped. Subsequent calls return a falsy value for it. // // To solve this, we resort to good old ps. This will hopefully be portable // enough. $deadline = time() + $timeout; $state = (PHP_OS == 'SunOS') ? 's' : 'state'; do { list($stdout, $_) = execx('ps -o %s -p %s | tail -n 1', $state, $pid); $stdout = trim($stdout); if ($stdout === '') { throw new Exception('ps returned nothing -- did watchman go away?'); } // Linux returns 'T', but OS X can return 'T+' etc. $is_stopped = (bool)preg_match('/T/', $stdout); if ($suspended === $is_stopped) { return true; } usleep(30000); } while (time() <= $deadline); return false; } private function appendLogFile($label, $srcname, $destname) { $fp = fopen($srcname, 'r'); $dest = fopen($destname, 'a'); fprintf($dest, "\n=== $label from $srcname ===\n"); stream_copy_to_stream($fp, $dest); fprintf($dest, "\n"); fclose($fp); fclose($dest); } function terminateProcess() { if (!$this->proc) { return; } $this->resumeProcess(); $timeout = $this->valgrind ? 20 : 5; if ($this->sock) { try { $this->request('shutdown-server'); } catch (Exception $e) { printf("shutdown-server: %s\n", $e->getMessage()); } $st = $this->waitForTerminate($timeout); } else { $st = proc_get_status($this->proc); } if ($st['running']) { echo "Didn't stop after $timeout seconds, sending signal\n"; system("gstack " . $st['pid']); proc_terminate($this->proc); $st = $this->waitForTerminate($timeout); if ($st['running']) { echo "Still didn't stop, sending bigger signal\n"; proc_terminate($this->proc, 9); $st = $this->waitForTerminate(5); } } if ($st['running']) { echo "Why won't you die!???\n"; var_dump($st); } $this->proc = null; if ($this->debug) { readfile($this->logfile.'.log'); } $TMP = phutil_is_windows() ? '' : '/tmp/'; $this->appendLogFile( 'config', $this->config_file, $TMP . 'watchman-test.log' ); $this->appendLogFile( 'output', $this->logfile, $TMP . 'watchman-test.log' ); if (file_exists($this->vg_log.'.xml')) { $this->appendLogFile( 'valgrind', $this->vg_log.'.xml', $TMP . "watchman-valgrind.xml" ); } if (file_exists($this->vg_log)) { $this->appendLogFile( 'valgrind', $this->vg_log, $TMP . 'watchman-valgrind.log' ); } if (file_exists($this->cg_file)) { copy($this->cg_file, $TMP . "/watchman-callgrind.txt"); } } public function suspendProcess() { if (!$this->proc) { throw new Exception("watchman process isn't running"); } $timeout = $this->valgrind ? 20 : 5; $st = proc_get_status($this->proc); if (!$st['running']) { throw new Exception('watchman process terminated'); } if (phutil_is_windows()) { execx('susres.exe suspend %d', $st['pid']); } else { // SIGSTOP isn't defined on the default PHP shipped with OS X, so use kill execx('kill -STOP %s', $st['pid']); } if (!$this->waitForSuspendedState(true, $timeout)) { throw new Exception("watchman process didn't stop in $timeout seconds"); } } public function resumeProcess() { if (!$this->proc) { throw new Exception("watchman process isn't running"); } $timeout = $this->valgrind ? 20 : 5; $st = proc_get_status($this->proc); if (!$st['running']) { throw new Exception('watchman process terminated'); } if (phutil_is_windows()) { execx('susres.exe resume %d', $st['pid']); } else { // SIGCONT isn't defined on the default PHP shipped with OS X, so use kill execx('kill -CONT %s', $st['pid']); } if (!$this->waitForSuspendedState(false, $timeout)) { throw new Exception("watchman process didn't resume in $timeout seconds"); } } function __destruct() { $this->terminateProcess(); } } function execx() { $args = func_get_args(); printf("# execx: %s\n", json_encode($args)); if (count($args) > 1) { $cmd = call_user_func_array('sprintf', $args); } else { $cmd = $args[0]; } exec($cmd, $output, $status); if ($status != 0) { throw new Exception("$cmd failed with status $status $output"); } return array(implode("\n", $output), null); } // This is a helper to avoid having to spawn a new watchman // process for every php test that we launch via the python // harness class PythonProvidedWatchmanInstance extends WatchmanInstance { public function suspendProcess() { $timeout = 5; // SIGSTOP isn't defined on the default PHP shipped with OS X, so use kill execx('kill -STOP %s', $this->pid); if (!$this->waitForSuspendedState(true, $timeout, $this->pid)) { throw new Exception("watchman process didn't stop in $timeout seconds"); } } public function resumeProcess() { $timeout = 5; // SIGCONT isn't defined on the default PHP shipped with OS X, so use kill execx('kill -CONT %s', $this->pid); if (!$this->waitForSuspendedState(false, $timeout, $this->pid)) { throw new Exception("watchman process didn't resume in $timeout seconds"); } } function waitForLogOutput($criteria, $timeout = 5) { // We can't find the log file for the python test instance from here, // so the test should run its own instance throw new Exception('you must return a non-empty array from getGlobalConfig'); } function __construct() { $this->sockname = getenv('WATCHMAN_SOCK'); } function getFullSockName() { return $this->sockname; } function start() { $this->openSock(); $this->pid = $this->getProcessID(); } function terminateProcess() { } } // vim:ts=2:sw=2:et: watchman-4.9.0/arcanist/lib/WatchmanIntegrationEngine.php000066400000000000000000000102051314236077500235130ustar00rootroot00000000000000first_inst = $inst; } public function run($tests) { return $this->runIntegrationTests($tests); } public function runIntegrationTests($tests) { // Now find all the test programs $root = $this->getProjectRoot(); $test_dir = $root . "/tests/integration/"; if (!$tests) { $paths = glob($test_dir . "*.php"); $paths[] = 'ruby/ruby-watchman/spec/ruby_watchman_spec.rb'; } else { $paths = $tests; } foreach (array( '/tmp/watchman-test.log', '/tmp/watchman-valgrind.log', '/tmp/watchman-valgrind.xml', '/tmp/watchman-callgrind.txt', ) as $log) { @unlink($log); } foreach ($paths as $path) { if (preg_match("/\.php$/", $path) && file_exists($path)) { // Don't pull in files starting with "_"; we're using // those as helpers for triggers $base = basename($path); if ($base[0] != '_') { require_once $path; } } } // We test for this in a test case putenv("WATCHMAN_EMPTY_ENV_VAR="); $coverage = $this->getEnableCoverage(); if (!$this->first_inst) { $this->first_inst = new WatchmanInstance($root, $coverage); } $first_inst = $this->first_inst; $instances = array($first_inst); // Helper for python or other language tests putenv("WATCHMAN_SOCK=".$first_inst->getFullSockName()); // Exercise the different serialization combinations $cli_matrix = array( # 'bser/json' => '--server-encoding=bser --output-encoding=json', # 'json/json' => '--server-encoding=json --output-encoding=json', ); // Find all the test cases that were declared $results = array(); foreach (get_declared_classes() as $name) { $ref = new ReflectionClass($name); if (!$ref->isSubclassOf('WatchmanTestCase')) { continue; } // Good enough; let's use it $test_case = newv($name, array()); $config = $test_case->getGlobalConfig(); if ($config) { $instance = new WatchmanInstance($root, $coverage, $config); $instances[] = $instance; } else { $instance = $first_inst; } $test_case->setWatchmanInstance($instance); if (!$instance->getProcessID()) { $res = new ArcanistUnitTestResult(); $res->setName('dead'); $res->setUserData('died before test start'); $res->setResult(ArcanistUnitTestResult::RESULT_FAIL); $results[] = array($res); break; } $test_case->setRoot($root); $test_case->setPaths($paths); $results[] = $test_case->run(); if (!$test_case->needsLiveConnection()) { foreach ($cli_matrix as $mname => $args) { $test_case->useCLI($args); $cli_results = $test_case->run(); foreach ($cli_results as $res) { $res->setName($res->getName() . " [CLI: $mname]"); } $results[] = $cli_results; } } } foreach ($paths as $path) { if (!preg_match('/\.rb$/', $path)) { continue; } if (!file_exists($path)) { // Was deleted in this (pending) rev continue; } $start = microtime(true); $future = new ExecFuture( "PATH=\"$root:\$PATH\" \${MAKE:-make} rb-tests" ); $future->setTimeout(10); list($status, $out, $err) = $future->resolve(); $end = microtime(true); $res = new ArcanistUnitTestResult(); $res->setName($path); $res->setUserData($out.$err); $res->setDuration($end - $start); $res->setResult($status == 0 ? ArcanistUnitTestResult::RESULT_PASS : ArcanistUnitTestResult::RESULT_FAIL ); $results[] = array($res); } foreach ($instances as $instance) { $results[] = $instance->generateValgrindTestResults(); } $results = array_mergev($results); return $results; } } // vim:ts=2:sw=2:et: watchman-4.9.0/arcanist/lib/WatchmanLicenseLinter.php000066400000000000000000000040521314236077500226450ustar00rootroot00000000000000 'No License Header', self::LINT_WRONG_LICENSE_HEADER => 'Invalid License Header', ); } public function getLinterName() { return 'LICENSE'; } public function lintPath($path) { if (preg_match('/^(python|ruby)/', $path)) { return; } $source = $this->getData($path); $template = <<raiseLintAtOffset( 0, self::LINT_NO_LICENSE_HEADER, 'This file is missing a license header.', $M[0], $suggest); break; } break; } } } } // vim:ts=2:sw=2:et: watchman-4.9.0/arcanist/lib/WatchmanLintEngine.php000066400000000000000000000041431314236077500221420ustar00rootroot00000000000000getPaths(); // Remove all deleted files, which are not checked by the // following linters. foreach ($paths as $key => $path) { if (!Filesystem::pathExists($this->getFilePathOnDisk($path))) { unset($paths[$key]); } else { foreach (static::$IGNORED_PATH_PATTERNS as $pattern) { if (preg_match($pattern, $path)) { unset($paths[$key]); break; } } } } $generated_linter = new ArcanistGeneratedLinter(); $linters[] = $generated_linter; $nolint_linter = new ArcanistNoLintLinter(); $linters[] = $nolint_linter; $license_linter = new WatchmanLicenseLinter(); $linters[] = $license_linter; $text_linter = new ArcanistTextLinter(); $text_linter->setCustomSeverityMap(array( ArcanistTextLinter::LINT_LINE_WRAP => ArcanistLintSeverity::SEVERITY_ADVICE, )); $linters[] = $text_linter; $spelling_linter = new ArcanistSpellingLinter(); $linters[] = $spelling_linter; foreach ($paths as $path) { if (preg_match('/\.(c|php|markdown|h)$/', $path)) { $nolint_linter->addPath($path); $generated_linter->addPath($path); $generated_linter->addData($path, $this->loadData($path)); $text_linter->addPath($path); $text_linter->addData($path, $this->loadData($path)); $spelling_linter->addPath($path); $spelling_linter->addData($path, $this->loadData($path)); } if (preg_match('/\.(c|h|php)$/', $path)) { $license_linter->addPath($path); $license_linter->addData($path, $this->loadData($path)); } } $name_linter = new ArcanistFilenameLinter(); $linters[] = $name_linter; foreach ($paths as $path) { $name_linter->addPath($path); } return $linters; } } watchman-4.9.0/arcanist/lib/WatchmanQueryFuture.php000066400000000000000000000044151314236077500224100ustar00rootroot00000000000000command = json_encode($command); $console = PhutilConsole::getConsole(); $console->writeLog( "cli query: %s\n", $this->command ); $future = new ExecFuture( "%C $args -U %s %s %s %s %s", "$repo_root/watchman", $sockname, '--logfile=/BOGUS', '--statefile=/BOGUS', '--no-pretty', '--no-spawn', '--no-local', '-j' ); $cwd = getcwd(); if (!$cwd) { throw new Exception("can't figure out my cwd!?"); } $future->setCWD($cwd); $future->write($this->command . "\n"); parent::__construct($future); } // For some reason, FutureProxy redefines this to call the // proxy directly, instead of routing via isReady(). // Reinstate that so we have a consistent way to track whether // we're started public function start() { $this->isReady(); return $this; } // We also need to force resolve through the same path too public function resolve($timeout = null) { $this->isReady(); return parent::resolve($timeout); } public function isReady() { return $this->getProxiedFuture()->isReady(); } protected function didReceiveResult($result) { list($err, $out, $stderr) = $result; $decoded = json_decode($out, true); if (!is_array($decoded)) { throw new Exception( "watchman query $this->command did not produce a ". "valid JSON object as its output:\n". json_encode($result) ); } if (!isset($decoded['version'])) { throw new Exception( "watchman query $this->command did not produce a ". "valid response as its output:\n". json_encode($result) ); } return $decoded; } public function setTimeout($timeout) { $this->getProxiedFuture()->setTimeout($timeout); } } watchman-4.9.0/arcanist/lib/WatchmanTapEngine.php000066400000000000000000000035721314236077500217650ustar00rootroot00000000000000projectRoot = $root; } protected function getProjectRoot() { return $this->projectRoot; } public function run($tests) { return $this->runUnitTests($tests); } public function getEnableCoverage() { return false; } public function runUnitTests($tests) { // Now find all the test programs $root = $this->getProjectRoot(); $test_dir = $root . "/tests/"; $futures = array(); if (!$tests) { $paths = glob($test_dir . "*.t"); } else { $paths = array(); foreach ($tests as $path) { $tpath = preg_replace('/\.c$/', '.t', $path); if (preg_match("/\.c$/", $path) && file_exists($tpath)) { $paths[] = realpath($tpath); } } } foreach ($paths as $test) { $relname = substr($test, strlen($test_dir)); $futures[$relname] = new ExecFuture($test); } $results = array(); $futures = new FutureIterator($futures); foreach ($futures->limit(4) as $test => $future) { list($err, $stdout, $stderr) = $future->resolve(); $results[] = $this->parseTestResults( $test, $err, $stdout, $stderr); } return $results; } private function parseTestResults($test, $err, $stdout, $stderr) { $result = new ArcanistUnitTestResult(); $result->setName($test); $result->setUserData($stdout . $stderr); $result->setResult($err == 0 ? ArcanistUnitTestResult::RESULT_PASS : ArcanistUnitTestResult::RESULT_FAIL ); if (preg_match("/# ELAPSED: (\d+)ms/", $stderr, $M)) { $result->setDuration($M[1] / 1000); } return $result; } protected function supportsRunAllTests() { return true; } } // vim:ts=2:sw=2:et: watchman-4.9.0/arcanist/lib/WatchmanTestCase.php000066400000000000000000000453021314236077500216230ustar00rootroot00000000000000use_cli; } function useCLI($args) { $this->use_cli = true; $this->cli_args = $args; } function setRoot($root) { $this->root = $root; } function getRoot() { return $this->root; } // This can be overridden if your test requires specific global config options function getGlobalConfig() { return array(); } function setWatchmanInstance($instance) { $this->watchman_instance = $instance; } function watchProject($root) { $res = $this->watchmanCommand('watch-project', $root); if (!is_array($res)) { $err = $res; } else { $err = idx($res, 'error'); } if (!$err) { // Remember the watched dir $this->watches[$root] = idx($res, 'watch'); } return $res; } function watch($root, $assert = true) { $root = w_normalize_filename($root); $res = $this->watchmanCommand('watch', $root); $this->watches[$root] = $res; if ($assert) { if (!is_array($res)) { $err = $res; } else { $err = idx($res, 'error', w_normalize_filename(idx($res, 'watch'))); } $this->assertEqual(w_normalize_filename($root), $err); } return $res; } function trigger() { $args = func_get_args(); array_unshift($args, 'trigger'); if (is_string($args[2])) { $id = $args[2]; } else { $id = $args[2]['name']; } $out = call_user_func_array(array($this, 'watchmanCommand'), $args); if (!is_array($out)) { $err = $out; } else { $err = idx($out, 'error', idx($out, 'triggerid'), 'unpossible'); } $def = json_encode($args); $output = json_encode($out); $message = "trigger definition: $def, output was $output"; $this->assertEqual($id, $err, $message); return $out; } private function computeWatchmanTestCaseName($test_method_name = '') { $cls = get_class($this); if ($test_method_name) { $cls .= "::$test_method_name"; } return $cls; } private function logTestInfo($msg, $test_method_name = '') { try { $name = $this->computeWatchmanTestCaseName($test_method_name); $this->watchmanCommand( 'log', 'debug', "TEST: $msg $name\n\n" ); } catch (Exception $e) { printf( "logTestInfo %s %s failed: %s\n", $msg, $name, $e->getMessage() ); } } function didRunOneTest($test_method_name) { if (!$this->use_cli) { $this->watchman_instance->stopLogging(); } chdir($this->root); $this->logTestInfo('end', $test_method_name); } function willRunOneTest($test_method_name) { chdir($this->root); $this->logTestInfo('begin', $test_method_name); } function willRunTests() { $this->logTestInfo('willRun'); } function didRunTests() { $this->logTestInfo('didRun'); try { $this->watchmanCommand('watch-del-all'); } catch (Exception $e) { // Swallow } $this->watches = array(); } function watchmanCommand() { $args = func_get_args(); if ($this->use_cli) { $future = new WatchmanQueryFuture( $this->watchman_instance->getFullSockName(), $this->root, $this->cli_args, $args ); return $future->resolve(); } return call_user_func_array( array($this->watchman_instance, 'request'), $args); } function assertRegex($pattern, $subject, $message = null) { if (!$message) { $message = "Failed to assert that $subject matches $pattern"; } $this->assertTrue(preg_match($pattern, $subject) === 1, $message); } /** * Suspends the watchman process. * * This is useful when testing to try to force batching or coalescing in the * kernel notification layer. You must have a matching resumeProcess() call. */ function suspendWatchman() { $this->watchman_instance->suspendProcess(); } /** * Resumes the watchman process. This is meant to be called while the watchman * process is suspended. */ function resumeWatchman() { $this->watchman_instance->resumeProcess(); } function assertLiveConnection() { $this->assertTrue( $this->needsLiveConnection(), "you must override needsLiveConnection and make it return true" ); } function startLogging($level) { $this->assertLiveConnection(); $out = $this->watchman_instance->startLogging($level); $this->assertEqual($level, $out['log_level'], "set log level to $level"); } function stopLogging() { $this->assertLiveConnection(); $out = $this->watchman_instance->stopLogging(); $this->assertEqual('off', $out['log_level'], "set log level to 'off'"); } function waitForSub($subname, $callable, $timeout = 15) { return $this->watchman_instance->waitForSub($subname, $callable, $timeout); } function getSubData($subname) { return $this->watchman_instance->getSubData($subname); } function waitForLog($criteria, $timeout = 15) { $this->assertLiveConnection(); // Can't use the generic waitFor routine here because // we're delegating to a more efficient mechanism in // the instance class. return $this->watchman_instance->waitForLog($criteria, $timeout); } function assertWaitForLog($criteria, $timeout = 15) { list($ok, $line, $matches) = $this->waitForLog($criteria, $timeout); if (!$ok) { $this->assertFailure( "did not find $criteria in log output within $timeout seconds"); } return array($ok, $line, $matches); } function waitForLogOutput($criteria, $timeout = 15) { // Can't use the generic waitFor routine here because // we're delegating to a more efficient mechanism in // the instance class. return $this->watchman_instance->waitForLogOutput($criteria, $timeout); } function assertWaitForLogOutput($criteria, $timeout = 15) { list($ok, $line, $matches) = $this->waitForLogOutput($criteria, $timeout); if (!$ok) { $this->assertFailure( "did not find $criteria in log file within $timeout seconds"); } return array($ok, $line, $matches); } // Generic waiting assertion; continually invokes $callable // until timeout is hit. Returns the returned value from // $callable if it is truthy. // Asserts failure if no truthy value is encountered within // the timeout function waitForNoThrow($callable, $timeout = 20) { $current_time = time(); $deadline = $current_time + $timeout; $res = null; do { try { $res = $callable(); if ($res) { return array(true, $res); } } catch (Exception $e) { $res = $e->getMessage(); break; } usleep(30000); $current_time = time(); } while ($current_time < $deadline); return array(false, $res); } function waitFor($callable, $timeout = 20, $message = null) { list($ok, $res) = $this->waitForNoThrow($callable, $timeout); if ($ok) { return $res; } if ($message === null) { $message = "Condition [$callable] was not met in $timeout seconds"; } if (is_callable($message)) { $message = call_user_func($message); } if (is_string($res)) { $message .= " $res"; } $this->assertFailure($message); } // Wait for a watchman command to return output that matches // some criteria. // Returns the command output. // $have_data is a callable that returns a boolean result // to indicate that the criteria have been met. // timeout is the timeout in seconds. function waitForWatchmanNoThrow(array $command, $have_data, $timeout = 20) { $last_output = null; $instance = $this->watchman_instance; list($ok, $res) = $this->waitForNoThrow( function () use ($instance, $command, $have_data, &$last_output) { $out = call_user_func_array( array($instance, 'request'), $command); if ($out === false) { // Connection terminated $last_output = "watchman went away"; throw new Exception($last_output); } $last_output = $out; if ($have_data($out)) { return $out; } return false; }, $timeout ); if ($ok) { return array(true, $res); } return array(false, $last_output); } function waitForWatchman(array $command, $have_data, $timeout = 20, $message = null) { list($ok, $res) = $this->waitForWatchmanNoThrow( $command, $have_data, $timeout); if ($ok) { return $res; } if ($message === null) { $where = debug_backtrace(); $where = array_shift($where); $where = sprintf("at line %d in file %s", idx($where, 'line'), basename(idx($where, 'file'))); $cmd_text = json_encode($command); $message = "watchman [$cmd_text] didn't yield expected results " . "within $timeout seconds\n" . json_encode($res) . "\n" . $where; } $this->assertFailure($message); } function assertFileListUsingSince($root, $cursor, array $files, array $files_via_since = null, $message = null) { if ($cursor) { if ($files_via_since === null) { $files_via_since = $files; } sort($files_via_since); } sort($files); $sort_func = function ($list) { $files = array(); if (!is_array($list)) { return $files; } foreach ($list as $ent) { if ($ent['exists']) { $files[] = $ent['name']; } } sort($files); return $files; }; list($ok, $out) = $this->waitForWatchmanNoThrow( array('find', $root), function ($out) use ($sort_func, $files) { return w_is_same_file_list( $sort_func(idx($out, 'files', array())), $files); }, 0 // timeout ); if ($ok) { if (!$cursor) { // we've already gotten all the files we care about $this->assertTrue(true); return; } $since = $this->watchmanCommand('since', $root, $cursor); $since_files = $sort_func(idx($since, 'files')); if (w_is_same_file_list($since_files, $files_via_since)) { $this->assertTrue(true); return $since; } if ($message === null) { $where = debug_backtrace(); $where = array_shift($where); $where = sprintf("at line %d in file %s", idx($where, 'line'), basename(idx($where, 'file'))); $message = "\nwatchman since vs. find result mismatch\n" . json_encode($out) . "\n" . json_encode($since) . "\n" . $where; $message .= "\nsince_files = " . json_encode($since_files) . "\ngot_files = " . json_encode($files) . "\n"; } $got = $since_files; } elseif (is_array($out)) { $error = idx($out, 'error'); if ($error) { throw new Exception($error); } $got = $sort_func(idx($out, 'files')); } else { $got = $out; } if ($message === null) { $where = debug_backtrace(); $where = array_shift($where); $where = sprintf("at line %d in file %s", idx($where, 'line'), basename(idx($where, 'file'))); $message = "\nwatchman didn't yield expected file list " . json_encode($out) . "\n" . $where; } $this->assertEqualFileList($files, $got, $message); } function assertEqualFileList($a, $b, $message = null) { if ($message === null) { $where = debug_backtrace(); $where = array_shift($where); $where = sprintf("at line %d in file %s", idx($where, 'line'), basename(idx($where, 'file'))); $message = "\nfile lists are not equal $where"; } $a = w_normalize_file_list($a); sort($a); $b = w_normalize_file_list($b); sort($b); $this->assertEqual($a, $b, $message . " " . json_encode($a) . " vs " .json_encode($b)); } function assertFileList($root, array $files, $message = null) { $this->assertFileListUsingSince($root, null, $files, null, $message); } function secondLevelSort(array $objs) { $ret = array(); foreach ($objs as $obj) { ksort($obj); $ret[] = $obj; } return $ret; } function assertTriggerList($root, $trig_list) { $triggers = $this->watchmanCommand('trigger-list', $root); $triggers = $triggers['triggers']; usort($triggers, function ($a, $b) { return strcmp($a['name'], $b['name']); }); $this->assertEqual( $this->secondLevelSort($trig_list), $this->secondLevelSort($triggers) ); } function waitForFileContents($filename, $content, $timeout = 15) { $this->waitFor( function () use ($filename, $content) { $got = @file_get_contents($filename); return $got === $content; }, $timeout, function () use ($filename, $content) { $got = @file_get_contents($filename); return "Wanted: $content\nGot: $got\n". "wait for $filename to hold a certain content"; } ); return @file_get_contents($filename); } function assertFileContents($filename, $content, $timeout = 15) { $got = $this->waitForFileContents($filename, $content, $timeout); $this->assertEqual($got, $content, "waiting for $filename to have a certain content"); } function waitForFileToHaveNLines($filename, $nlines, $timeout = 15) { $this->waitFor( function () use ($filename, $nlines) { return count(@file($filename)) == $nlines; }, $timeout, function () use ($filename, $nlines) { $lines = count(@file($filename)); return "wait for $filename to hold $nlines lines, got $lines"; } ); return @file($filename, FILE_IGNORE_NEW_LINES); } function waitForJsonInput($log, $timeout = 15) { $this->waitFor( function () use ($log) { $data = @file_get_contents($log); if (!strlen($data)) { return false; } $obj = @json_decode(trim($data), true); return is_array($obj); }, $timeout, "waiting for $log to hold a JSON object" ); $obj = json_decode(trim(file_get_contents($log)), true); $this->assertTrue(is_array($obj), "got JSON object in $log"); return $obj; } function isCaseInsensitive() { static $insensitive = null; if ($insensitive === null) { $dir = new WatchmanDirectoryFixture(); $path = $dir->getPath(); touch("$path/a"); $insensitive = file_exists("$path/A"); } return $insensitive; } function run() { $ref = new ReflectionClass($this); $methods = $ref->getMethods(); shuffle($methods); $this->willRunTests(); foreach ($methods as $method) { $name = $method->getName(); if (!preg_match('/^test/', $name)) { continue; } try { $this->willRunOneTest($name); call_user_func(array($this, $name)); try { $this->didRunOneTest($name); } catch (Exception $e) { $this->failException($e); } } catch (TestSkipException $e) { // Continue with next } catch (Exception $e) { $this->failException($e); } } $this->didRunTests(); } function failException($e) { $this->fail(sprintf("%s: %s\n%s", get_class($e), $e->getMessage(), $e->getTraceAsString())); } function printStatus($ok, $message) { $lines = explode("\n", $message); if (count($lines) > 1) { echo '# ' . implode("\n# ", $lines) . "\n"; } $last_line = array_pop($lines); $caller = self::getCallerInfo(); printf("%s %d - %s:%d: %s\n", $ok ? 'ok' : 'not ok', self::$test_number++, $caller['file'], $caller['line'], $last_line); } function fail($message) { $this->printStatus(false, $message); throw new TestSkipException(); } function ok($message) { $this->printStatus(true, $message); } /** * Returns info about the caller function. * * @return map */ private static final function getCallerInfo() { $caller = array(); foreach (array_slice(debug_backtrace(), 1) as $location) { $function = idx($location, 'function'); if (idx($location, 'file') == __FILE__) { continue; } $caller = $location; break; } return array( 'file' => basename(idx($caller, 'file')), 'line' => idx($caller, 'line'), ); } static function printable($value) { return json_encode($value); } function assertEqual($expected, $actual, $message = null) { if ($message === null) { $message = sprintf("Expected %s to equal %s", self::printable($actual), self::printable($expected)); } if ($expected === $actual) { $this->ok($message); } else { $this->fail($message); } } function assertTrue($actual, $message = null) { $this->assertEqual(true, $actual, $message); } function assertFalse($actual, $message = null) { $this->assertEqual(false, $actual, $message); } function assertFailure($message) { return $this->fail($message); } function assertSkipped($message) { $this->ok("skip: $message"); throw new TestSkipException(); } } // vim:ts=2:sw=2:et: watchman-4.9.0/arcanist/lib/cov/000077500000000000000000000000001314236077500164775ustar00rootroot00000000000000watchman-4.9.0/arcanist/lib/cov/CallgrindFile.php000066400000000000000000000153111314236077500217100ustar00rootroot00000000000000filename = $filename; } function parse() { $fp = fopen($this->filename, 'r'); $props = array(); // which column holds the line number $line_position = 0; $cg_file_line_number = 0; $line = null; $current_fn_line = 0; $current_file_name = null; while (true) { $last_line = $line; $cg_file_line_number++; $line = fgets($fp); if ($line === false) break; $line = rtrim($line, "\r\n"); if (!strlen($line)) continue; if (preg_match('/^#/', $line)) { continue; } // key: value if (preg_match("/^([a-z]+):\s*(.*)\s*$/", $line, $M)) { $key = $M[1]; $val = $M[2]; $props[$key] = $val; if ($key == 'positions') { $positions = explode(' ', $val); $line_position = array_search('line', $positions); } continue; } // Position = (Number) Name if (preg_match("/^[cj]?f[ile]=\s*\(([^)]+)\)\s+(\S+)$/", $line, $M)) { // file name for the subsequent cost lines list($_, $id, $name) = $M; $this->name_map[$id] = $name; if ($line[0] == 'f') { if (!isset($this->files_touched[$name])) { $this->files_touched[$name] = array(); } $current_file_name = $name; } continue; } // Position = Name if (preg_match("/^(fl|fi|fe)=\s*\((\d+)\)$/", $line, $M)) { $id = $M[2]; if (!isset($this->name_map[$id])) { throw new Exception( "wanted id $id but we haven't seen it at $cg_file_line_number" ); } $current_file_name = $this->name_map[$id]; continue; } // Position = Name if (preg_match("/^(fl|fi|fe)=\s*(\S+)$/", $line, $M)) { $name = $M[2]; if (!isset($this->files_touched[$name])) { $this->files_touched[$name] = array(); } $current_file_name = $name; continue; } // AssociationSpecification if (preg_match('/^calls=\s*(\S+)\s+(.*)$/', $line, $M)) { $last_assoc = $M; $line = rtrim(fgets($fp), "\r\n"); $cg_file_line_number++; continue; } if (preg_match('/^(ob|fn|jcnd|cob|cfi|cfn|jump|jfi)=/', $line)) { // Explicitly ignore continue; } if (preg_match('/^[a-z]+=/', $line)) { throw new Exception("unhandled $line"); } $fields = $this->parsePosList($line, $current_fn_line); if ($fields[$line_position] < 0) { printf("Line number ended up negative: %d to start\n", $current_fn_line); print_r($fields); printf("line was: %s\n", $line); throw new Exception("suck at line $cg_file_line_number"); } $current_fn_line = $fields[$line_position]; $this->files_touched[$current_file_name][$current_fn_line] = true; } } // parses a position list and turns it into the same sequence of // absolute numbers private function parsePosList($line, $base) { $res = array(); $fields = preg_split('/\s+/', trim($line)); foreach ($fields as $field) { switch ($field[0]) { case '+': $res[] = $base + substr($field, 1); break; case '-': $res[] = $base - substr($field, 1); break; case '*': $res[] = $base; break; default: if (preg_match('/^0x/', $field)) { $res[] = hexdec($field); } else { $res[] = (int)$field; } } } return $res; } static function max(array $a) { if (!count($a)) { return 0; } return max($a); } static function computeCoverageString($sourcefile, array $touched_lines) { $exe_lines = DwarfLineInfo::mergedSourceLines($sourcefile); if (!count($exe_lines)) { return ""; } $max_line = max(self::max($exe_lines), self::max($touched_lines)); /* now build a string containing the coverage info. * This is compatible with ArcanistUnitTestResult coverage data: * N not executable * C covered * U uncovered * X unreachable (we can't detect that here) */ $cov = str_repeat('N', $max_line); for ($i = 1; $i <= $max_line; $i++) { if (isset($touched_lines[$i])) { $cov[$i - 1] = 'C'; } else if (isset($exe_lines[$i])) { $cov[$i - 1] = 'U'; } } return $cov; } static function mergeSourceLineData($sourcefile, array $cg_list) { $lines = array(); foreach ($cg_list as $cg) { $cg->getTouchedLines($sourcefile, $lines); } return self::computeCoverageString($sourcefile, $lines); } function getTouchedLines($sourcefile, &$all_lines) { foreach (idx($this->files_touched, $sourcefile, array()) as $no => $_) { $all_lines[$no] = $no; } } function collectSourceFileData($sourcefile) { $all_lines = array(); $this->getTouchedLines($sourcefile, $all_lines); foreach ($this->getObjectFiles() as $objfile) { DwarfLineInfo::loadObject($objfile); } $exe_lines = DwarfLineInfo::mergedSourceLines($sourcefile); $max_line = max($exe_lines); /* now build a string containing the coverage info. * This is compatible with ArcanistUnitTestResult coverage data: * N not executable * C covered * U uncovered * X unreachable (we can't detect that here) */ $cov = str_repeat('N', $max_line); for ($i = 1; $i <= $max_line; $i++) { if (isset($all_lines[$i])) { $cov[$i - 1] = 'C'; } else if (isset($exe_lines[$i])) { $cov[$i - 1] = 'U'; } } return $cov; } /* print a source file with coverage annotation */ function annotate($sourcefile) { $cov = $this->collectSourceFileData($sourcefile); $fp = fopen($sourcefile, 'r'); $lineno = 0; while (true) { $line = fgets($fp); if ($line === false) break; $lineno++; $line = rtrim($line, "\r\n"); $sigil = 'N'; if (isset($cov[$lineno - 1])) { $sigil = $cov[$lineno - 1]; } printf("%s %s\n", $sigil, $line); } } function getSourceFiles() { return array_keys($this->files_touched); } } // vim:ts=2:sw=2:et: watchman-4.9.0/arcanist/lib/cov/DwarfLineInfo.php000066400000000000000000000033371314236077500217050ustar00rootroot00000000000000parse(); self::$cache[$filename] = $D; return $D; } static function mergedSourceLines($filename) { $filename = realpath($filename); $lines = array(); foreach (self::$cache as $D) { if (!isset($D->lines_by_file[$filename])) continue; foreach ($D->lines_by_file[$filename] as $line) { $lines[$line] = $line; } } return $lines; } function __construct($filename) { $this->filename = $filename; } function parse() { $fp = popen(sprintf("dwarfdump -l %s", escapeshellarg($this->filename)), 'r'); $sourcefile = null; while (true) { $line = fgets($fp); if ($line === false) break; // 0x004021d0 [ 53, 0] NS uri: "/path/to/file.c" if (preg_match("/^0x[0-9a-fA-F]+\s+\[\s*(\d+),\s*\d+\]/", $line, $M)) { $exe_line = $M[1]; if (preg_match('/uri: "([^"]+)"/', $line, $M)) { $sourcefile = realpath($M[1]); if (!isset($this->lines_by_file[$sourcefile])) { $this->lines_by_file[$sourcefile] = array(); } } $this->lines_by_file[$sourcefile][$exe_line] = $exe_line; } } } } // vim:ts=2:sw=2:et: watchman-4.9.0/autogen.sh000077500000000000000000000017101314236077500153360ustar00rootroot00000000000000#!/bin/bash -e # vim:ts=2:sw=2:et: if test -d autom4te.cache ; then rm -rf autom4te.cache fi if test -d config.status ; then rm -f config.status fi for p in libtoolize glibtoolize FAIL; do test "$p" = FAIL && { echo "your system lacks libtoolize" 1>&2; exit 1; } || : ( $p --version ) > /dev/null 2>&1 && { eval "libtoolize() { env $p; }"; break; } || : done libtoolize --no-warn -i -f aclocal autoheader automake --add-missing --foreign # This checks to make sure PKG_CHECK_MODULES is available to autoconf. This # should be the case provided pkg-config is installed AND the above commands # have been run to prep the source tree with local set-up. CHECK_PKG_CONFIG_M4='m4_ifdef([PKG_CHECK_MODULES], [errprint([ok])])' if [ "x$(autoconf <(echo "$CHECK_PKG_CONFIG_M4") 2>&1)" != "xok" ] ; then echo 'pkg-config appears to be missing (not available to autoconf tools)' echo 'please install the pkg-config package for your system.' exit 1 fi autoconf watchman-4.9.0/bser.cpp000066400000000000000000000401611314236077500147770ustar00rootroot00000000000000/* Copyright 2013-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #include "thirdparty/jansson/jansson_private.h" /* * This defines a binary serialization of the JSON data objects in this * library. It is designed for use with watchman and is not intended to serve * as a general binary JSON interchange format. In particular, all integers * are signed integers and are stored in host byte order to minimize * transformation overhead. */ /* Return the smallest size int that can store the value */ #define INT_SIZE(x) (((x) == ((int8_t)x)) ? 1 : \ ((x) == ((int16_t)x)) ? 2 : \ ((x) == ((int32_t)x)) ? 4 : 8) #define BSER_ARRAY 0x00 #define BSER_OBJECT 0x01 #define BSER_BYTESTRING 0x02 #define BSER_INT8 0x03 #define BSER_INT16 0x04 #define BSER_INT32 0x05 #define BSER_INT64 0x06 #define BSER_REAL 0x07 #define BSER_TRUE 0x08 #define BSER_FALSE 0x09 #define BSER_NULL 0x0a #define BSER_TEMPLATE 0x0b #define BSER_SKIP 0x0c #define BSER_UTF8STRING 0x0d static const char bser_true = BSER_TRUE; static const char bser_false = BSER_FALSE; static const char bser_null = BSER_NULL; static const char bser_bytestring_hdr = BSER_BYTESTRING; static const char bser_array_hdr = BSER_ARRAY; static const char bser_object_hdr = BSER_OBJECT; static const char bser_template_hdr = BSER_TEMPLATE; static const char bser_utf8string_hdr = BSER_UTF8STRING; static const char bser_skip = BSER_SKIP; static bool is_bser_version_supported(const bser_ctx_t *ctx) { return ctx->bser_version == 1 || ctx->bser_version == 2; } static int bser_real(const bser_ctx_t *ctx, double val, void *data) { char sz = BSER_REAL; if (!is_bser_version_supported(ctx)) { return -1; } if (ctx->dump(&sz, sizeof(sz), data)) { return -1; } return ctx->dump((char*)&val, sizeof(val), data); } bool bunser_generic_string( const char* buf, json_int_t avail, json_int_t* needed, const char** start, json_int_t* len) { json_int_t ineed; if (!bunser_int(buf + 1, avail - 1, &ineed, len)) { *needed = ineed; return false; } buf += ineed + 1; avail -= ineed + 1; *needed = ineed + 1 + *len; if (*len > avail) { return false; } *start = buf; return true; } // Attempt to unserialize an integer value. // Returns bool if successful, and populates *val with the value. // Otherwise populates *needed with the size required to successfully // decode the integer value bool bunser_int(const char *buf, json_int_t avail, json_int_t *needed, json_int_t *val) { int8_t i8; int16_t i16; int32_t i32; int64_t i64; switch (buf[0]) { case BSER_INT8: *needed = 2; break; case BSER_INT16: *needed = 3; break; case BSER_INT32: *needed = 5; break; case BSER_INT64: *needed = 9; break; default: *needed = -1; return false; } if (avail < *needed) { return false; } switch (buf[0]) { case BSER_INT8: memcpy(&i8, buf + 1, sizeof(i8)); *val = i8; return true; case BSER_INT16: memcpy(&i16, buf + 1, sizeof(i16)); *val = i16; return true; case BSER_INT32: memcpy(&i32, buf + 1, sizeof(i32)); *val = i32; return true; case BSER_INT64: memcpy(&i64, buf + 1, sizeof(i64)); *val = i64; return true; default: return false; } } static int bser_int(const bser_ctx_t *ctx, json_int_t val, void *data) { int8_t i8; int16_t i16; int32_t i32; int64_t i64; char sz; int size = INT_SIZE(val); char *iptr; if (!is_bser_version_supported(ctx)) { return -1; } switch (size) { case 1: sz = BSER_INT8; i8 = (int8_t)val; iptr = (char*)&i8; break; case 2: sz = BSER_INT16; i16 = (int16_t)val; iptr = (char*)&i16; break; case 4: sz = BSER_INT32; i32 = (int32_t)val; iptr = (char*)&i32; break; case 8: sz = BSER_INT64; i64 = (int64_t)val; iptr = (char*)&i64; break; default: return -1; } if (ctx->dump(&sz, sizeof(sz), data)) { return -1; } return ctx->dump(iptr, size, data); } static int bser_generic_string( const bser_ctx_t* ctx, w_string_piece str, void* data, const char hdr) { if (!is_bser_version_supported(ctx)) { return -1; } if (ctx->dump(&hdr, sizeof(hdr), data)) { return -1; } if (bser_int(ctx, str.size(), data)) { return -1; } if (ctx->dump(str.data(), str.size(), data)) { return -1; } return 0; } static int bser_bytestring(const bser_ctx_t* ctx, w_string_piece str, void* data) { return bser_generic_string(ctx, str, data, bser_bytestring_hdr); } static int bser_utf8string(const bser_ctx_t* ctx, w_string_piece str, void* data) { if ((ctx->bser_capabilities & BSER_CAP_DISABLE_UNICODE) || ctx->bser_version == 1) { return bser_bytestring(ctx, str, data); } return bser_generic_string(ctx, str, data, bser_utf8string_hdr); } static int bser_mixedstring(const bser_ctx_t* ctx, w_string_piece str, void* data) { if (ctx->bser_version != 1 && !(BSER_CAP_DISABLE_UNICODE_FOR_ERRORS & ctx->bser_capabilities) && !(BSER_CAP_DISABLE_UNICODE & ctx->bser_capabilities)) { auto utf8_clean = str.asUTF8Clean(); return bser_utf8string(ctx, utf8_clean, data); } else { return bser_bytestring(ctx, str, data); } } static int bser_array(const bser_ctx_t *ctx, const json_t *array, void *data); static int bser_template(const bser_ctx_t *ctx, const json_t *array, const json_t *templ, void *data) { size_t n = json_array_size(array); size_t i, pn; if (!is_bser_version_supported(ctx)) { return -1; } if (ctx->dump(&bser_template_hdr, sizeof(bser_template_hdr), data)) { return -1; } // The template goes next if (bser_array(ctx, templ, data)) { return -1; } // Now the array of arrays of object values. // How many objects if (bser_int(ctx, n, data)) { return -1; } pn = json_array_size(templ); // For each object for (i = 0; i < n; i++) { auto obj = json_array_get(array, i); size_t pi; // For each factored key for (pi = 0; pi < pn; pi++) { const char *key = json_string_value(json_array_get(templ, pi)); // Look up the object property auto val = json_object_get(obj, key); if (!val) { // property not set on this one; emit a skip if (ctx->dump(&bser_skip, sizeof(bser_skip), data)) { return -1; } continue; } // Emit value if (w_bser_dump(ctx, val, data)) { return -1; } } } return 0; } static int bser_array(const bser_ctx_t *ctx, const json_t *array, void *data) { size_t n = json_array_size(array); size_t i; if (!is_bser_version_supported(ctx)) { return -1; } auto templ = json_array_get_template(array); if (templ) { return bser_template(ctx, array, templ, data); } if (ctx->dump(&bser_array_hdr, sizeof(bser_array_hdr), data)) { return -1; } if (bser_int(ctx, n, data)) { return -1; } for (i = 0; i < n; i++) { auto val = json_array_get(array, i); if (w_bser_dump(ctx, val, data)) { return -1; } } return 0; } static int bser_object(const bser_ctx_t* ctx, const json_ref& obj, void* data) { size_t n; if (!is_bser_version_supported(ctx)) { return -1; } if (ctx->dump(&bser_object_hdr, sizeof(bser_object_hdr), data)) { return -1; } n = json_object_size(obj); if (bser_int(ctx, n, data)) { return -1; } auto object = json_to_object(obj); for (auto& it : object->map) { auto &key = it.first; auto &val = it.second; if (bser_bytestring(ctx, key.c_str(), data)) { return -1; } if (w_bser_dump(ctx, val, data)) { return -1; } } return 0; } int w_bser_dump(const bser_ctx_t* ctx, const json_ref& json, void* data) { int type = json_typeof(json); if (!is_bser_version_supported(ctx)) { return -1; } switch (type) { case JSON_NULL: return ctx->dump(&bser_null, sizeof(bser_null), data); case JSON_TRUE: return ctx->dump(&bser_true, sizeof(bser_true), data); case JSON_FALSE: return ctx->dump(&bser_false, sizeof(bser_false), data); case JSON_REAL: return bser_real(ctx, json_real_value(json), data); case JSON_INTEGER: return bser_int(ctx, json_integer_value(json), data); case JSON_STRING: { auto& wstr = json_to_w_string(json); switch (wstr.type()) { case W_STRING_BYTE: return bser_bytestring(ctx, wstr, data); case W_STRING_UNICODE: return bser_utf8string(ctx, wstr, data); case W_STRING_MIXED: return bser_mixedstring(ctx, wstr, data); default: w_assert(false, "unknown string type 0x%02x", wstr.type()); return -1; } } case JSON_ARRAY: return bser_array(ctx, json, data); case JSON_OBJECT: return bser_object(ctx, json, data); default: return -1; } } static int measure(const char*, size_t size, void* ptr) { auto tot = (json_int_t*)ptr; *tot += size; return 0; } int w_bser_write_pdu( const uint32_t bser_version, const uint32_t bser_capabilities, json_dump_callback_t dump, const json_ref& json, void* data) { json_int_t m_size = 0; bser_ctx_t ctx{bser_version, bser_capabilities, measure}; if (!is_bser_version_supported(&ctx)) { return -1; } if (w_bser_dump(&ctx, json, &m_size)) { return -1; } // To actually write the contents ctx.dump = dump; if (bser_version == 2) { if (dump(BSER_V2_MAGIC, 2, data)) { return -1; } } else { if (dump(BSER_MAGIC, 2, data)) { return -1; } } if (bser_version == 2) { if (dump( (const char*)&bser_capabilities, sizeof(bser_capabilities), data)) { return -1; } } if (bser_int(&ctx, m_size, data)) { return -1; } if (w_bser_dump(&ctx, json, data)) { return -1; } return 0; } static json_ref bunser_array( const char* buf, const char* end, json_int_t* used, json_error_t* jerr) { json_int_t needed; json_int_t total = 0; json_int_t i, nelems; buf++; total++; if (!bunser_int(buf, end - buf, &needed, &nelems)) { if (needed == -1) { snprintf(jerr->text, sizeof(jerr->text), "invalid integer encoding 0x%02x for array length. buf=%p\n", (int)buf[0], buf); return nullptr; } *used = needed + total; snprintf(jerr->text, sizeof(jerr->text), "invalid array length encoding 0x%02x (needed %d but have %d)", (int)buf[0], (int)needed, (int)(end - buf)); return nullptr; } total += needed; buf += needed; auto arrval = json_array(); for (i = 0; i < nelems; i++) { needed = 0; auto item = bunser(buf, end, &needed, jerr); total += needed; buf += needed; if (!item) { *used = total; return nullptr; } if (json_array_append_new(arrval, std::move(item))) { *used = total; snprintf(jerr->text, sizeof(jerr->text), "failed to append array item"); return nullptr; } } *used = total; return arrval; } static json_ref bunser_template( const char* buf, const char* end, json_int_t* used, json_error_t* jerr) { json_int_t needed = 0; json_int_t total = 0; json_int_t i, nelems; json_int_t ip, np; buf++; total++; if (*buf != BSER_ARRAY) { snprintf(jerr->text, sizeof(jerr->text), "Expected array encoding, but found 0x%02x", *buf); *used = total; return nullptr; } // Load in the property names template auto templ = bunser_array(buf, end, &needed, jerr); if (!templ) { *used = needed + total; return nullptr; } total += needed; buf += needed; // And the number of objects needed = 0; if (!bunser_int(buf, end - buf, &needed, &nelems)) { *used = needed + total; snprintf(jerr->text, sizeof(jerr->text), "invalid object number encoding (needed %d but have %d)", (int)needed, (int)(end - buf)); return nullptr; } total += needed; buf += needed; np = json_array_size(templ); // Now load up the array with object values auto arrval = json_array_of_size((size_t)nelems); for (i = 0; i < nelems; i++) { auto item = json_object_of_size((size_t)np); for (ip = 0; ip < np; ip++) { if (*buf == BSER_SKIP) { buf++; total++; continue; } needed = 0; auto val = bunser(buf, end, &needed, jerr); if (!val) { *used = needed + total; return nullptr; } buf += needed; total += needed; json_object_set_new_nocheck( item, json_string_value(json_array_get(templ, (size_t)ip)), std::move(val)); } json_array_append_new(arrval, std::move(item)); } *used = total; return arrval; } static json_ref bunser_object( const char* buf, const char* end, json_int_t* used, json_error_t* jerr) { json_int_t needed; json_int_t total = 0; json_int_t i, nelems; char keybuf[128]; total = 1; buf++; if (!bunser_int(buf, end - buf, &needed, &nelems)) { *used = needed + total; snprintf(jerr->text, sizeof(jerr->text), "invalid object property count encoding"); return nullptr; } total += needed; buf += needed; auto objval = json_object(); for (i = 0; i < nelems; i++) { const char *start; json_int_t slen; // Read key if (!bunser_generic_string(buf, end - buf, &needed, &start, &slen)) { *used = total + needed; snprintf(jerr->text, sizeof(jerr->text), "invalid bytestring for object key"); return nullptr; } total += needed; buf += needed; // Saves us allocating a string when the library is going to // do that anyway if ((uint16_t)slen > sizeof(keybuf) - 1) { snprintf(jerr->text, sizeof(jerr->text), "object key is too long"); return nullptr; } memcpy(keybuf, start, (size_t)slen); keybuf[slen] = '\0'; // Read value auto item = bunser(buf, end, &needed, jerr); total += needed; buf += needed; if (!item) { *used = total; return nullptr; } if (json_object_set_new_nocheck(objval, keybuf, std::move(item))) { *used = total; snprintf(jerr->text, sizeof(jerr->text), "failed to add object property"); return nullptr; } } *used = total; return objval; } json_ref bunser( const char* buf, const char* end, json_int_t* needed, json_error_t* jerr) { json_int_t ival; switch (buf[0]) { case BSER_INT8: case BSER_INT16: case BSER_INT32: case BSER_INT64: if (!bunser_int(buf, end - buf, needed, &ival)) { snprintf(jerr->text, sizeof(jerr->text), "invalid integer encoding"); return nullptr; } return json_integer(ival); case BSER_BYTESTRING: case BSER_UTF8STRING: { const char *start; json_int_t len; if (!bunser_generic_string(buf, end - buf, needed, &start, &len)) { snprintf(jerr->text, sizeof(jerr->text), "invalid bytestring encoding"); return nullptr; } return typed_string_to_json( start, len, buf[0] == BSER_BYTESTRING ? W_STRING_BYTE : W_STRING_UNICODE); } case BSER_REAL: { double dval; *needed = sizeof(double) + 1; memcpy(&dval, buf + 1, sizeof(dval)); return json_real(dval); } case BSER_TRUE: *needed = 1; return json_true(); case BSER_FALSE: *needed = 1; return json_false(); case BSER_NULL: *needed = 1; return json_null(); case BSER_ARRAY: return bunser_array(buf, end, needed, jerr); case BSER_TEMPLATE: return bunser_template(buf, end, needed, jerr); case BSER_OBJECT: return bunser_object(buf, end, needed, jerr); default: snprintf(jerr->text, sizeof(jerr->text), "invalid bser encoding type %02x", (int)buf[0]); return nullptr; } #ifndef _WIN32 // It knows this is unreachable return nullptr; #endif } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/cfg.cpp000066400000000000000000000235701314236077500146100ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #include "watchman_synchronized.h" namespace { struct config_state { json_ref global_cfg; json_ref arg_cfg; }; watchman::Synchronized configState; } /* Called during shutdown to free things so that we run cleanly * under valgrind */ void cfg_shutdown(void) { auto state = configState.wlock(); state->global_cfg.reset(); state->arg_cfg.reset(); } void cfg_load_global_config_file(void) { json_error_t err; const char *cfg_file = getenv("WATCHMAN_CONFIG_FILE"); #ifdef WATCHMAN_CONFIG_FILE if (!cfg_file) { cfg_file = WATCHMAN_CONFIG_FILE; } #endif if (!cfg_file || cfg_file[0] == '\0') { return; } if (!w_path_exists(cfg_file)) { return; } auto config = json_load_file(cfg_file, 0, &err); if (!config) { w_log(W_LOG_ERR, "failed to parse json from %s: %s\n", cfg_file, err.text); return; } configState.wlock()->global_cfg = config; } void cfg_set_arg(const char* name, const json_ref& val) { auto state = configState.wlock(); if (!state->arg_cfg) { state->arg_cfg = json_object(); } state->arg_cfg.set(name, json_ref(val)); } void cfg_set_global(const char* name, const json_ref& val) { auto state = configState.wlock(); if (!state->global_cfg) { state->global_cfg = json_object(); } state->global_cfg.set(name, json_ref(val)); } static json_ref cfg_get_raw(const char* name, const json_ref* optr) { json_ref val; if (*optr) { val = optr->get_default(name); } return val; } json_ref cfg_get_json(const char* name) { json_ref val; auto state = configState.rlock(); // Highest precedence: command line arguments val = cfg_get_raw(name, &state->arg_cfg); // then: global config options if (!val) { val = cfg_get_raw(name, &state->global_cfg); } return val; } const char* cfg_get_string(const char* name, const char* defval) { auto val = cfg_get_json(name); if (val) { if (!json_is_string(val)) { w_log(W_LOG_FATAL, "Expected config value %s to be a string\n", name); } return json_string_value(val); } return defval; } // Return true if the json ref is an array of string values static bool is_array_of_strings(const json_ref& ref) { uint32_t i; if (!json_is_array(ref)) { return false; } for (i = 0; i < json_array_size(ref); i++) { if (!json_is_string(json_array_get(ref, i))) { return false; } } return true; } // Given an array of string values, if that array does not contain // a ".watchmanconfig" entry, prepend it static void prepend_watchmanconfig_to_array(json_ref& ref) { const char *val; if (json_array_size(ref) == 0) { // json_array_insert_new at index can fail when the array is empty, // so just append in this case. json_array_append_new(ref, typed_string_to_json(".watchmanconfig", W_STRING_UNICODE)); return; } val = json_string_value(json_array_get(ref, 0)); if (!strcmp(val, ".watchmanconfig")) { return; } json_array_insert_new(ref, 0, typed_string_to_json(".watchmanconfig", W_STRING_UNICODE)); } // Compute the effective value of the root_files configuration and // return a json reference. The caller must decref the ref when done // (we may synthesize this value). Sets enforcing to indicate whether // we will only allow watches on the root_files. // The array returned by this function (if not NULL) is guaranteed to // list .watchmanconfig as its zeroth element. json_ref cfg_compute_root_files(bool* enforcing) { *enforcing = false; json_ref ref = cfg_get_json("enforce_root_files"); if (ref) { if (!json_is_boolean(ref)) { w_log(W_LOG_FATAL, "Expected config value enforce_root_files to be boolean\n"); } *enforcing = json_is_true(ref); } ref = cfg_get_json("root_files"); if (ref) { if (!is_array_of_strings(ref)) { w_log(W_LOG_FATAL, "global config root_files must be an array of strings\n"); *enforcing = false; return nullptr; } prepend_watchmanconfig_to_array(ref); return ref; } // Try legacy root_restrict_files configuration ref = cfg_get_json("root_restrict_files"); if (ref) { if (!is_array_of_strings(ref)) { w_log(W_LOG_FATAL, "deprecated global config root_restrict_files " "must be an array of strings\n"); *enforcing = false; return nullptr; } prepend_watchmanconfig_to_array(ref); *enforcing = true; return ref; } // Synthesize our conservative default value. // .watchmanconfig MUST be first return json_array({typed_string_to_json(".watchmanconfig"), typed_string_to_json(".hg"), typed_string_to_json(".git"), typed_string_to_json(".svn")}); } json_int_t cfg_get_int(const char* name, json_int_t defval) { auto val = cfg_get_json(name); if (val) { if (!json_is_integer(val)) { w_log(W_LOG_FATAL, "Expected config value %s to be an integer\n", name); } return json_integer_value(val); } return defval; } bool cfg_get_bool(const char* name, bool defval) { auto val = cfg_get_json(name); if (val) { if (!json_is_boolean(val)) { w_log(W_LOG_FATAL, "Expected config value %s to be a boolean\n", name); } return json_is_true(val); } return defval; } double cfg_get_double(const char* name, double defval) { auto val = cfg_get_json(name); if (val) { if (!json_is_number(val)) { w_log(W_LOG_FATAL, "Expected config value %s to be a number\n", name); } return json_real_value(val); } return defval; } #ifndef _WIN32 #define MAKE_GET_PERM(PROP, SUFFIX) \ static mode_t get_##PROP##_perm( \ const char* name, \ const json_ref& val, \ bool write_bits, \ bool execute_bits) { \ mode_t ret = 0; \ auto perm = val.get_default(#PROP); \ if (perm) { \ if (!json_is_boolean(perm)) { \ w_log( \ W_LOG_FATAL, \ "Expected config value %s." #PROP " to be a boolean\n", \ name); \ } \ if (json_is_true(perm)) { \ ret |= S_IR##SUFFIX; \ if (write_bits) { \ ret |= S_IW##SUFFIX; \ } \ if (execute_bits) { \ ret |= S_IX##SUFFIX; \ } \ } \ } \ return ret; \ } MAKE_GET_PERM(group, GRP) MAKE_GET_PERM(others, OTH) /** * This function expects the config to be an object containing the keys 'group' * and 'others', each a bool. */ mode_t cfg_get_perms(const char* name, bool write_bits, bool execute_bits) { auto val = cfg_get_json(name); mode_t ret = S_IRUSR | S_IWUSR; if (execute_bits) { ret |= S_IXUSR; } if (val) { if (!json_is_object(val)) { w_log(W_LOG_FATAL, "Expected config value %s to be an object\n", name); } ret |= get_group_perm(name, val, write_bits, execute_bits); ret |= get_others_perm(name, val, write_bits, execute_bits); } return ret; } #endif const char *cfg_get_trouble_url(void) { return cfg_get_string( "troubleshooting_url", "https://facebook.github.io/watchman/docs/troubleshooting.html"); } Configuration::Configuration(const json_ref& local) : local_(local) {} json_ref Configuration::get(const char* name) const { // Highest precedence: options set locally json_ref val; if (local_) { val = local_.get_default(name); if (val) { return val; } } auto state = configState.rlock(); // then: command line arguments if (!val) { val = cfg_get_raw(name, &state->arg_cfg); } // then: global config options if (!val) { val = cfg_get_raw(name, &state->global_cfg); } return val; } const char* Configuration::getString(const char* name, const char* defval) const { auto val = get(name); if (val) { if (!json_is_string(val)) { w_log(W_LOG_FATAL, "Expected config value %s to be a string\n", name); } return json_string_value(val); } return defval; } json_int_t Configuration::getInt(const char* name, json_int_t defval) const { auto val = get(name); if (val) { if (!json_is_integer(val)) { w_log(W_LOG_FATAL, "Expected config value %s to be an integer\n", name); } return json_integer_value(val); } return defval; } bool Configuration::getBool(const char* name, bool defval) const { auto val = get(name); if (val) { if (!json_is_boolean(val)) { w_log(W_LOG_FATAL, "Expected config value %s to be a boolean\n", name); } return json_is_true(val); } return defval; } double Configuration::getDouble(const char* name, double defval) const { auto val = get(name); if (val) { if (!json_is_number(val)) { w_log(W_LOG_FATAL, "Expected config value %s to be a number\n", name); } return json_real_value(val); } return defval; } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/checksock.cpp000066400000000000000000000034551314236077500160060ustar00rootroot00000000000000/* Copyright 2015-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" /* Periodically connect to our endpoint and verify that we're talking * to ourselves. This is normally a sign of madness, but if we don't * get an answer, or get a reply from someone else, we know things * are bad; someone removed our socket file or there was some kind of * race condition that resulted in multiple instances starting up. */ static void check_my_sock() { auto cmd = json_array({typed_string_to_json("get-pid", W_STRING_UNICODE)}); w_jbuffer_t buf; json_error_t jerr; json_int_t remote_pid = 0; pid_t my_pid = getpid(); w_set_thread_name("sockcheck"); auto client = w_stm_connect(get_sock_name(), 6000); if (!client) { w_log(W_LOG_FATAL, "Failed to connect to myself for get-pid check: %s\n", strerror(errno)); /* NOTREACHED */ } client->setNonBlock(false); if (!buf.pduEncodeToStream(is_bser, 0, cmd, client.get())) { w_log(W_LOG_FATAL, "Failed to send get-pid PDU: %s\n", strerror(errno)); /* NOTREACHED */ } buf.clear(); auto result = buf.decodeNext(client.get(), &jerr); if (!result) { w_log(W_LOG_FATAL, "Failed to decode get-pid response: %s %s\n", jerr.text, strerror(errno)); /* NOTREACHED */ } if (json_unpack_ex(result, &jerr, 0, "{s:i}", "pid", &remote_pid) != 0) { w_log(W_LOG_FATAL, "Failed to extract pid from get-pid response: %s\n", jerr.text); /* NOTREACHED */ } if (remote_pid != my_pid) { w_log(W_LOG_FATAL, "remote pid from get-pid (%ld) doesn't match my pid (%ld)\n", (long)remote_pid, (long)my_pid); /* NOTREACHED */ } } void w_check_my_sock(void) { std::thread thr(check_my_sock); thr.detach(); } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/circle.yml000066400000000000000000000002071314236077500153210ustar00rootroot00000000000000machine: php: version: 5.6.18 python: version: 2.7.5 node: version: 0.10.33 test: override: - ./travis/run.sh watchman-4.9.0/clientmode.cpp000066400000000000000000000010521314236077500161630ustar00rootroot00000000000000/* Copyright 2013-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" bool try_client_mode_command(const json_ref& cmd, bool pretty) { auto client = std::make_shared(); bool res; client->client_mode = true; res = dispatch_command(client.get(), cmd, CMD_CLIENT); if (!client->responses.empty()) { json_dumpf( client->responses.front(), stdout, pretty ? JSON_INDENT(4) : JSON_COMPACT); printf("\n"); } return res; } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/clockspec.cpp000066400000000000000000000151771314236077500160230ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #include "make_unique.h" static int proc_pid; static uint64_t proc_start_time; void ClockSpec::init() { struct timeval tv; proc_pid = (int)getpid(); if (gettimeofday(&tv, NULL) == -1) { w_log(W_LOG_FATAL, "gettimeofday failed: %s\n", strerror(errno)); } proc_start_time = (uint64_t)tv.tv_sec; } ClockSpec::ClockSpec(const json_ref& value) { auto parseClockString = [=](const char* str) { uint64_t start_time; int pid; uint32_t root_number; uint32_t ticks; // Parse a >= 2.8.2 version clock string if (sscanf( str, "c:%" PRIu64 ":%d:%" PRIu32 ":%" PRIu32, &start_time, &pid, &root_number, &ticks) == 4) { tag = w_cs_clock; clock.start_time = start_time; clock.pid = pid; clock.position.rootNumber = root_number; clock.position.ticks = ticks; return true; } if (sscanf(str, "c:%d:%" PRIu32, &pid, &ticks) == 2) { // old-style clock value (<= 2.8.2) -- by setting clock time and root // number to 0 we guarantee that this is treated as a fresh instance tag = w_cs_clock; clock.start_time = 0; clock.pid = pid; clock.position.rootNumber = root_number; clock.position.ticks = ticks; return true; } return false; }; switch (json_typeof(value)) { case JSON_INTEGER: tag = w_cs_timestamp; timestamp = (time_t)json_integer_value(value); return; case JSON_OBJECT: { auto clockStr = value.get_default("clock"); if (clockStr) { if (!parseClockString(json_string_value(clockStr))) { throw std::domain_error("invalid clockspec"); } } else { tag = w_cs_clock; clock.start_time = 0; clock.pid = 0; clock.position.rootNumber = 0; clock.position.ticks = 0; } auto scm = value.get_default("scm"); if (scm) { scmMergeBase = json_to_w_string( scm.get_default("mergebase", w_string_to_json(""))); scmMergeBaseWith = json_to_w_string(scm.get("mergebase-with")); } return; } case JSON_STRING: { auto str = json_string_value(value); if (str[0] == 'n' && str[1] == ':') { tag = w_cs_named_cursor; named_cursor.cursor = json_to_w_string(value); return; } if (parseClockString(str)) { return; } /* fall through to default case and throw error. * The redundant looking comment below is a hint to * gcc that it is ok to fall through. */ } /* fall through */ default: throw std::domain_error("invalid clockspec"); } } std::unique_ptr ClockSpec::parseOptionalClockSpec( const json_ref& value) { if (json_is_null(value)) { return nullptr; } return watchman::make_unique(value); } ClockSpec::ClockSpec() : tag(w_cs_timestamp), timestamp(0) {} ClockSpec::ClockSpec(const ClockPosition& position) : tag(w_cs_clock), clock{proc_start_time, proc_pid, position} {} w_query_since ClockSpec::evaluate( const ClockPosition& position, const uint32_t lastAgeOutTick, watchman::Synchronized>* cursorMap) const { w_query_since since; switch (tag) { case w_cs_timestamp: // just copy the values over since.is_timestamp = true; since.timestamp = timestamp; return since; case w_cs_named_cursor: { if (!cursorMap) { // This is checked for and handled at parse time in SinceExpr::parse, // so this should be impossible to hit. throw std::runtime_error( "illegal to use a named cursor in this context"); } { auto wlock = cursorMap->wlock(); auto& cursors = *wlock; auto it = cursors.find(named_cursor.cursor); if (it == cursors.end()) { since.clock.is_fresh_instance = true; since.clock.ticks = 0; } else { since.clock.ticks = it->second; since.clock.is_fresh_instance = since.clock.ticks < lastAgeOutTick; } // record the current tick value against the cursor so that we use that // as the basis for a subsequent query. cursors[named_cursor.cursor] = position.ticks; } watchman::log( watchman::DBG, "resolved cursor ", named_cursor.cursor, " -> ", since.clock.ticks, "\n"); return since; } case w_cs_clock: { if (clock.start_time == proc_start_time && clock.pid == proc_pid && clock.position.rootNumber == position.rootNumber) { since.clock.is_fresh_instance = clock.position.ticks < lastAgeOutTick; if (since.clock.is_fresh_instance) { since.clock.ticks = 0; } else { since.clock.ticks = clock.position.ticks; } } else { // If the pid, start time or root number don't match, they asked a // different incarnation of the server or a different instance of this // root, so we treat them as having never spoken to us before. since.clock.is_fresh_instance = true; since.clock.ticks = 0; } return since; } default: throw std::runtime_error("impossible case in ClockSpec::evaluate"); } } bool clock_id_string(uint32_t root_number, uint32_t ticks, char *buf, size_t bufsize) { int res = snprintf(buf, bufsize, "c:%" PRIu64 ":%d:%u:%" PRIu32, proc_start_time, proc_pid, root_number, ticks); if (res == -1) { return false; } return (size_t)res < bufsize; } w_string ClockPosition::toClockString() const { char clockbuf[128]; if (!clock_id_string(rootNumber, ticks, clockbuf, sizeof(clockbuf))) { throw std::runtime_error("clock is too big for clockbuf"); } return w_string(clockbuf, W_STRING_UNICODE); } /* Add the current clock value to the response */ void annotate_with_clock( const std::shared_ptr& root, json_ref& resp) { resp.set("clock", w_string_to_json(root->view()->getCurrentClockString())); } json_ref ClockSpec::toJson() const { if (hasScmParams()) { return json_object( {{"clock", w_string_to_json(position().toClockString())}, {"scm", json_object( {{"mergebase", w_string_to_json(scmMergeBase)}, {"mergebase-with", w_string_to_json(scmMergeBaseWith)}})}}); } return w_string_to_json(position().toClockString()); } bool ClockSpec::hasScmParams() const { return scmMergeBase; } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/cmds/000077500000000000000000000000001314236077500142645ustar00rootroot00000000000000watchman-4.9.0/cmds/debug.cpp000066400000000000000000000123221314236077500160560ustar00rootroot00000000000000/* Copyright 2013-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" static void cmd_debug_recrawl( struct watchman_client* client, const json_ref& args) { /* resolve the root */ if (json_array_size(args) != 2) { send_error_response(client, "wrong number of arguments for 'debug-recrawl'"); return; } auto root = resolve_root_or_err(client, args, 1, false); if (!root) { return; } auto resp = make_response(); root->scheduleRecrawl("debug-recrawl"); resp.set("recrawl", json_true()); send_and_dispose_response(client, std::move(resp)); } W_CMD_REG("debug-recrawl", cmd_debug_recrawl, CMD_DAEMON, w_cmd_realpath_root) static void cmd_debug_show_cursors( struct watchman_client* client, const json_ref& args) { json_ref cursors; /* resolve the root */ if (json_array_size(args) != 2) { send_error_response(client, "wrong number of arguments for 'debug-show-cursors'"); return; } auto root = resolve_root_or_err(client, args, 1, false); if (!root) { return; } auto resp = make_response(); { auto map = root->inner.cursors.rlock(); cursors = json_object_of_size(map->size()); for (const auto& it : *map) { const auto& name = it.first; const auto& ticks = it.second; cursors.set(name.c_str(), json_integer(ticks)); } } resp.set("cursors", std::move(cursors)); send_and_dispose_response(client, std::move(resp)); } W_CMD_REG("debug-show-cursors", cmd_debug_show_cursors, CMD_DAEMON, w_cmd_realpath_root) /* debug-ageout */ static void cmd_debug_ageout( struct watchman_client* client, const json_ref& args) { /* resolve the root */ if (json_array_size(args) != 3) { send_error_response(client, "wrong number of arguments for 'debug-ageout'"); return; } auto root = resolve_root_or_err(client, args, 1, false); if (!root) { return; } std::chrono::seconds min_age(json_integer_value(json_array_get(args, 2))); auto resp = make_response(); root->performAgeOut(min_age); resp.set("ageout", json_true()); send_and_dispose_response(client, std::move(resp)); } W_CMD_REG("debug-ageout", cmd_debug_ageout, CMD_DAEMON, w_cmd_realpath_root) static void cmd_debug_poison( struct watchman_client* client, const json_ref& args) { struct timeval now; auto root = resolve_root_or_err(client, args, 1, false); if (!root) { return; } gettimeofday(&now, NULL); set_poison_state( root->root_path, now, "debug-poison", std::error_code(ENOMEM, std::generic_category())); auto resp = make_response(); resp.set("poison", typed_string_to_json(poisoned_reason, W_STRING_UNICODE)); send_and_dispose_response(client, std::move(resp)); } W_CMD_REG("debug-poison", cmd_debug_poison, CMD_DAEMON, w_cmd_realpath_root) static void cmd_debug_drop_privs( struct watchman_client* client, const json_ref&) { client->client_is_owner = false; auto resp = make_response(); resp.set("owner", json_boolean(client->client_is_owner)); send_and_dispose_response(client, std::move(resp)); } W_CMD_REG("debug-drop-privs", cmd_debug_drop_privs, CMD_DAEMON, NULL); static void cmd_debug_set_subscriptions_paused( struct watchman_client* clientbase, const json_ref& args) { auto client = (struct watchman_user_client*)clientbase; const auto& paused = args.at(1); auto& paused_map = paused.object(); for (auto& it : paused_map) { auto sub_iter = client->subscriptions.find(it.first); if (sub_iter == client->subscriptions.end()) { send_error_response( client, "this client does not have a subscription named '%s'", it.first.c_str()); return; } if (!json_is_boolean(it.second)) { send_error_response( client, "new value for subscription '%s' not a boolean", it.first.c_str()); return; } } auto states = json_object(); for (auto& it : paused_map) { auto sub_iter = client->subscriptions.find(it.first); bool old_paused = sub_iter->second->debug_paused; bool new_paused = json_is_true(it.second); sub_iter->second->debug_paused = new_paused; states.set( it.first, json_object({{"old", json_boolean(old_paused)}, {"new", it.second}})); } auto resp = make_response(); resp.set("paused", std::move(states)); send_and_dispose_response(clientbase, std::move(resp)); } W_CMD_REG( "debug-set-subscriptions-paused", cmd_debug_set_subscriptions_paused, CMD_DAEMON, nullptr) static void cmd_debug_get_subscriptions( struct watchman_client* clientbase, const json_ref& args) { auto client = (watchman_user_client*)clientbase; auto root = resolve_root_or_err(client, args, 1, false); auto resp = make_response(); auto debug_info = root->unilateralResponses->getDebugInfo(); // copy over all the key-value pairs from debug_info resp.object().insert(debug_info.object().begin(), debug_info.object().end()); send_and_dispose_response(clientbase, std::move(resp)); } W_CMD_REG( "debug-get-subscriptions", cmd_debug_get_subscriptions, CMD_DAEMON, w_cmd_realpath_root) /* vim:ts=2:sw=2:et: */ watchman-4.9.0/cmds/find.cpp000066400000000000000000000017741314236077500157210ustar00rootroot00000000000000/* Copyright 2013-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" /* find /root [patterns] */ static void cmd_find(struct watchman_client* client, const json_ref& args) { /* resolve the root */ if (json_array_size(args) < 2) { send_error_response(client, "not enough arguments for 'find'"); return; } auto root = resolve_root_or_err(client, args, 1, false); if (!root) { return; } auto query = w_query_parse_legacy(root, args, 2, nullptr, nullptr, nullptr); if (client->client_mode) { query->sync_timeout = std::chrono::milliseconds(0); } auto res = w_query_execute(query.get(), root, nullptr); auto response = make_response(); response.set({{"clock", res.clockAtStartOfQuery.toJson()}, {"files", std::move(res.resultsArray)}}); send_and_dispose_response(client, std::move(response)); } W_CMD_REG("find", cmd_find, CMD_DAEMON | CMD_ALLOW_ANY_USER, w_cmd_realpath_root) /* vim:ts=2:sw=2:et: */ watchman-4.9.0/cmds/info.cpp000066400000000000000000000072241314236077500157300ustar00rootroot00000000000000/* Copyright 2013-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" static bool query_caps( json_ref& response, json_ref& result, const json_ref& arr, bool required) { size_t i; bool have_all = true; for (i = 0; i < json_array_size(arr); i++) { const auto& ele = arr.at(i); const char* capname = json_string_value(ele); bool have = w_capability_supported(json_to_w_string(ele)); if (!have) { have_all = false; } if (!capname) { break; } result.set(capname, json_boolean(have)); if (required && !have) { char *buf = NULL; ignore_result(asprintf( &buf, "client required capability `%s` is not supported by this server", capname)); response.set("error", typed_string_to_json(buf, W_STRING_UNICODE)); w_log(W_LOG_ERR, "version: %s\n", buf); free(buf); // Only trigger the error on the first one we hit. Ideally // we'd tell the user about all of them, but it is a PITA to // join and print them here in C :-/ required = false; } } return have_all; } /* version */ static void cmd_version(struct watchman_client* client, const json_ref& args) { auto resp = make_response(); #ifdef WATCHMAN_BUILD_INFO resp.set( "buildinfo", typed_string_to_json(WATCHMAN_BUILD_INFO, W_STRING_UNICODE)); #endif /* ["version"] * -> just returns the basic version information. * ["version", {"required": ["foo"], "optional": ["bar"]}] * -> includes capability matching information */ if (json_array_size(args) == 2) { const auto& arg_obj = args.at(1); auto req_cap = arg_obj.get_default("required"); auto opt_cap = arg_obj.get_default("optional"); auto cap_res = json_object_of_size( (opt_cap ? json_array_size(opt_cap) : 0) + (req_cap ? json_array_size(req_cap) : 0)); if (opt_cap && json_is_array(opt_cap)) { query_caps(resp, cap_res, opt_cap, false); } if (req_cap && json_is_array(req_cap)) { query_caps(resp, cap_res, req_cap, true); } resp.set("capabilities", std::move(cap_res)); } send_and_dispose_response(client, std::move(resp)); } W_CMD_REG("version", cmd_version, CMD_DAEMON | CMD_CLIENT | CMD_ALLOW_ANY_USER, NULL) /* list-capabilities */ static void cmd_list_capabilities( struct watchman_client* client, const json_ref&) { auto resp = make_response(); resp.set("capabilities", w_capability_get_list()); send_and_dispose_response(client, std::move(resp)); } W_CMD_REG("list-capabilities", cmd_list_capabilities, CMD_DAEMON | CMD_CLIENT | CMD_ALLOW_ANY_USER, NULL) /* get-sockname */ static void cmd_get_sockname(struct watchman_client* client, const json_ref&) { auto resp = make_response(); resp.set("sockname", typed_string_to_json(get_sock_name(), W_STRING_BYTE)); send_and_dispose_response(client, std::move(resp)); } W_CMD_REG("get-sockname", cmd_get_sockname, CMD_DAEMON | CMD_CLIENT | CMD_ALLOW_ANY_USER, NULL) static void cmd_get_config( struct watchman_client* client, const json_ref& args) { json_ref config; if (json_array_size(args) != 2) { send_error_response(client, "wrong number of arguments for 'get-config'"); return; } auto root = resolve_root_or_err(client, args, 1, false); if (!root) { return; } auto resp = make_response(); config = root->config_file; if (!config) { config = json_object(); } resp.set("config", std::move(config)); send_and_dispose_response(client, std::move(resp)); } W_CMD_REG("get-config", cmd_get_config, CMD_DAEMON, w_cmd_realpath_root) /* vim:ts=2:sw=2:et: */ watchman-4.9.0/cmds/log.cpp000066400000000000000000000040571314236077500155570ustar00rootroot00000000000000/* Copyright 2013-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" // log-level "debug" // log-level "error" // log-level "off" static void cmd_loglevel(struct watchman_client* client, const json_ref& args) { if (json_array_size(args) != 2) { send_error_response(client, "wrong number of arguments to 'log-level'"); return; } watchman::LogLevel level; try { level = watchman::logLabelToLevel(json_to_w_string(args.at(1))); } catch (std::out_of_range& e) { send_error_response(client, "invalid log level for 'log-level'"); return; } auto clientRef = client->shared_from_this(); auto notify = [clientRef]() { clientRef->ping->notify(); }; auto& log = watchman::getLog(); switch (level) { case watchman::OFF: client->debugSub.reset(); client->errorSub.reset(); break; case watchman::DBG: client->debugSub = log.subscribe(watchman::DBG, notify); client->errorSub = log.subscribe(watchman::ERR, notify); break; case watchman::ERR: default: client->debugSub.reset(); client->errorSub = log.subscribe(watchman::ERR, notify); } auto resp = make_response(); resp.set("log_level", json_ref(args.at(1))); send_and_dispose_response(client, std::move(resp)); } W_CMD_REG("log-level", cmd_loglevel, CMD_DAEMON, NULL) // log "debug" "text to log" static void cmd_log(struct watchman_client* client, const json_ref& args) { if (json_array_size(args) != 3) { send_error_response(client, "wrong number of arguments to 'log'"); return; } watchman::LogLevel level; try { level = watchman::logLabelToLevel(json_to_w_string(args.at(1))); } catch (std::out_of_range& e) { send_error_response(client, "invalid log level for 'log'"); return; } auto text = json_to_w_string(args.at(2)); watchman::log(level, text, "\n"); auto resp = make_response(); resp.set("logged", json_true()); send_and_dispose_response(client, std::move(resp)); } W_CMD_REG("log", cmd_log, CMD_DAEMON, NULL) /* vim:ts=2:sw=2:et: */ watchman-4.9.0/cmds/query.cpp000066400000000000000000000021761314236077500161430ustar00rootroot00000000000000/* Copyright 2013-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" /* query /root {query} */ static void cmd_query(struct watchman_client* client, const json_ref& args) { if (json_array_size(args) != 3) { send_error_response(client, "wrong number of arguments for 'query'"); return; } auto root = resolve_root_or_err(client, args, 1, false); if (!root) { return; } const auto& query_spec = args.at(2); auto query = w_query_parse(root, query_spec); if (client->client_mode) { query->sync_timeout = std::chrono::milliseconds(0); } auto res = w_query_execute(query.get(), root, nullptr); auto response = make_response(); response.set({{"is_fresh_instance", json_boolean(res.is_fresh_instance)}, {"clock", res.clockAtStartOfQuery.toJson()}, {"files", std::move(res.resultsArray)}}); add_root_warnings_to_response(response, root); send_and_dispose_response(client, std::move(response)); } W_CMD_REG("query", cmd_query, CMD_DAEMON | CMD_CLIENT | CMD_ALLOW_ANY_USER, w_cmd_realpath_root) /* vim:ts=2:sw=2:et: */ watchman-4.9.0/cmds/reg.cpp000066400000000000000000000132151314236077500155470ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #include "watchman_scopeguard.h" namespace { struct reg { std::unordered_map commands; std::unordered_set capabilities; reg() { commands.reserve(16); capabilities.reserve(128); } }; // Meyers singleton to avoid SIOF problems reg& get_reg() { static struct reg reg; return reg; } } /* Some error conditions will put us into a non-recoverable state where we * can't guarantee that we will be operating correctly. Rather than suffering * in silence and misleading our clients, we'll poison ourselves and advertise * that we have done so and provide some advice on how the user can cure us. */ char *poisoned_reason = NULL; void print_command_list_for_help(FILE *where) { std::vector defs; for (auto& it : get_reg().commands) { defs.emplace_back(it.second); } std::sort( defs.begin(), defs.end(), [](watchman_command_handler_def* A, watchman_command_handler_def* B) { return strcmp(A->name, B->name) < 0; }); fprintf(where, "\n\nAvailable commands:\n\n"); for (auto& def : defs) { fprintf(where, " %s\n", def->name); } } void w_register_command(struct watchman_command_handler_def *defs) { char capname[128]; get_reg().commands[w_string(defs->name, W_STRING_UNICODE)] = defs; snprintf(capname, sizeof(capname), "cmd-%s", defs->name); w_capability_register(capname); } static struct watchman_command_handler_def* lookup(const json_ref& args, char** errmsg, int mode) { const char *cmd_name; if (!json_array_size(args)) { ignore_result(asprintf(errmsg, "invalid command (expected an array with some elements!)")); return nullptr; } const auto jstr = json_array_get(args, 0); cmd_name = json_string_value(jstr); if (!cmd_name) { ignore_result(asprintf(errmsg, "invalid command: expected element 0 to be the command name")); return nullptr; } auto cmd = json_to_w_string(jstr); auto it = get_reg().commands.find(cmd); auto def = it == get_reg().commands.end() ? nullptr : it->second; if (def) { if (mode && ((def->flags & mode) == 0)) { ignore_result(asprintf(errmsg, "command %s not available in this mode", cmd_name)); return nullptr; } return def; } if (mode) { ignore_result(asprintf(errmsg, "unknown command %s", cmd_name)); } return nullptr; } void preprocess_command( json_ref& args, enum w_pdu_type output_pdu, uint32_t output_capabilities) { char *errmsg = NULL; struct watchman_command_handler_def *def; def = lookup(args, &errmsg, 0); if (!def && !errmsg) { // Nothing known about it, pass the command on anyway for forwards // compatibility return; } if (!errmsg && def->cli_validate) { def->cli_validate(args, &errmsg); } if (errmsg) { w_jbuffer_t jr; auto err = json_object( {{"error", typed_string_to_json(errmsg, W_STRING_MIXED)}, {"version", typed_string_to_json(PACKAGE_VERSION, W_STRING_UNICODE)}, {"cli_validated", json_true()}}); jr.pduEncodeToStream(output_pdu, output_capabilities, err, w_stm_stdout()); free(errmsg); exit(1); } } bool dispatch_command( struct watchman_client* client, const json_ref& args, int mode) { struct watchman_command_handler_def *def; char *errmsg = NULL; char sample_name[128]; SCOPE_EXIT { free(errmsg); }; try { // Stash a reference to the current command to make it easier to log // the command context in some of the error paths client->current_command = args; SCOPE_EXIT { client->current_command = nullptr; }; def = lookup(args, &errmsg, mode); if (!def) { send_error_response(client, "%s", errmsg); return false; } if (poisoned_reason && (def->flags & CMD_POISON_IMMUNE) == 0) { send_error_response(client, "%s", poisoned_reason); return false; } if (!client->client_is_owner && (def->flags & CMD_ALLOW_ANY_USER) == 0) { send_error_response( client, "you must be the process owner to execute '%s'", def->name); return false; } // Scope for the perf sample { w_log(W_LOG_DBG, "dispatch_command: %s\n", def->name); snprintf( sample_name, sizeof(sample_name), "dispatch_command:%s", def->name); w_perf_t sample(sample_name); client->perf_sample = &sample; SCOPE_EXIT { client->perf_sample = nullptr; }; sample.set_wall_time_thresh( cfg_get_double("slow_command_log_threshold_seconds", 1.0)); def->func(client, args); if (sample.finish()) { sample.add_meta("args", json_ref(args)); sample.add_meta( "client", json_object( {{"pid", json_integer(client->stm->getPeerProcessID())}})); sample.log(); } else { w_log(W_LOG_DBG, "dispatch_command: %s (completed)\n", def->name); } } return true; } catch (const std::exception& e) { send_error_response(client, "%s", e.what()); return false; } } void w_capability_register(const char *name) { get_reg().capabilities.insert(w_string(name, W_STRING_UNICODE)); } bool w_capability_supported(const w_string& name) { return get_reg().capabilities.find(name) != get_reg().capabilities.end(); } json_ref w_capability_get_list(void) { auto arr = json_array_of_size(get_reg().capabilities.size()); for (auto& name : get_reg().capabilities) { json_array_append(arr, w_string_to_json(name)); } return arr; } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/cmds/since.cpp000066400000000000000000000024411314236077500160720ustar00rootroot00000000000000/* Copyright 2013-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" /* since /root [patterns] */ static void cmd_since(struct watchman_client* client, const json_ref& args) { const char *clockspec; /* resolve the root */ if (json_array_size(args) < 3) { send_error_response(client, "not enough arguments for 'since'"); return; } auto root = resolve_root_or_err(client, args, 1, false); if (!root) { return; } auto clock_ele = json_array_get(args, 2); clockspec = json_string_value(clock_ele); if (!clockspec) { send_error_response(client, "expected argument 2 to be a valid clockspec"); return; } auto query = w_query_parse_legacy(root, args, 3, nullptr, clockspec, nullptr); auto res = w_query_execute(query.get(), root, nullptr); auto response = make_response(); response.set({{"is_fresh_instance", json_boolean(res.is_fresh_instance)}, {"clock", res.clockAtStartOfQuery.toJson()}, {"files", std::move(res.resultsArray)}}); add_root_warnings_to_response(response, root); send_and_dispose_response(client, std::move(response)); } W_CMD_REG("since", cmd_since, CMD_DAEMON | CMD_ALLOW_ANY_USER, w_cmd_realpath_root) /* vim:ts=2:sw=2:et: */ watchman-4.9.0/cmds/state.cpp000066400000000000000000000165751314236077500161260ustar00rootroot00000000000000/* Copyright 2015-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #include "make_unique.h" using ms = std::chrono::milliseconds; struct state_arg { w_string name; ms sync_timeout; json_ref metadata; }; // Parses the args for state-enter and state-leave static bool parse_state_arg( struct watchman_client* client, const json_ref& args, struct state_arg* parsed) { parsed->sync_timeout = DEFAULT_QUERY_SYNC_MS; parsed->metadata = nullptr; parsed->name = nullptr; if (json_array_size(args) != 3) { send_error_response( client, "invalid number of arguments, expected 3, got %" PRIsize_t, json_array_size(args)); return false; } const auto& state_args = args.at(2); // [cmd, root, statename] if (json_is_string(state_args)) { parsed->name = json_to_w_string(state_args); return true; } // [cmd, root, {name:, metadata:, sync_timeout:}] parsed->name = json_to_w_string(state_args.get("name")); parsed->metadata = state_args.get_default("metadata"); parsed->sync_timeout = ms(json_integer_value(state_args.get_default( "sync_timeout", json_integer(parsed->sync_timeout.count())))); if (parsed->sync_timeout < ms::zero()) { send_error_response(client, "sync_timeout must be >= 0"); return false; } return true; } watchman_client_state_assertion::watchman_client_state_assertion( const std::shared_ptr& root, const w_string& name) : root(root), name(name), id(0) {} static void cmd_state_enter( struct watchman_client* clientbase, const json_ref& args) { struct state_arg parsed; json_ref response; auto client = dynamic_cast(clientbase); auto root = resolve_root_or_err(client, args, 1, true); if (!root) { return; } if (!parse_state_arg(client, args, &parsed)) { return; } if (parsed.sync_timeout.count() && !root->syncToNow(parsed.sync_timeout)) { send_error_response(client, "synchronization failed: %s", strerror(errno)); return; } auto assertion = std::make_shared(root, parsed.name); if (!assertion) { send_error_response(client, "out of memory"); return; } { auto wlock = root->asserted_states.wlock(); auto& map = *wlock; auto& entry = map[assertion->name]; // If the state is already asserted, we can't re-assert it if (entry) { send_error_response( client, "state %s is already asserted", parsed.name.c_str()); return; } // We're now in this state entry = assertion; // Record the state assertion in the client entry->id = ++client->next_state_id; client->states[entry->id] = entry; } // We successfully entered the state, this is our response to the // state-enter command. We do this before we send the subscription // PDUs in case CLIENT has active subscriptions for this root response = make_response(); auto clock = w_string_to_json(root->view()->getCurrentClockString()); response.set({{"root", w_string_to_json(root->root_path)}, {"state-enter", w_string_to_json(parsed.name)}, {"clock", json_ref(clock)}}); send_and_dispose_response(client, std::move(response)); // Broadcast about the state enter { auto payload = json_object({{"root", w_string_to_json(root->root_path)}, {"clock", std::move(clock)}, {"state-enter", w_string_to_json(parsed.name)}}); if (parsed.metadata) { payload.set("metadata", json_ref(parsed.metadata)); } root->unilateralResponses->enqueue(std::move(payload)); } } W_CMD_REG("state-enter", cmd_state_enter, CMD_DAEMON, w_cmd_realpath_root) static void leave_state( struct watchman_user_client* client, std::shared_ptr assertion, bool abandoned, json_t* metadata) { // Broadcast about the state leave auto payload = json_object( {{"root", w_string_to_json(assertion->root->root_path)}, {"clock", w_string_to_json(assertion->root->view()->getCurrentClockString())}, {"state-leave", w_string_to_json(assertion->name)}}); if (metadata) { payload.set("metadata", json_ref(metadata)); } if (abandoned) { payload.set("abandoned", json_true()); } assertion->root->unilateralResponses->enqueue(std::move(payload)); // The erase will delete the assertion pointer, so save these things auto id = assertion->id; w_string name = assertion->name; // Now remove the state { auto map = assertion->root->asserted_states.wlock(); map->erase(name); } if (client) { client->states.erase(id); } } // Abandon any states that haven't been explicitly vacated void w_client_vacate_states(struct watchman_user_client *client) { while (!client->states.empty()) { auto assertion = client->states.begin()->second.lock(); if (!assertion) { client->states.erase(client->states.begin()->first); continue; } auto root = assertion->root; w_log( W_LOG_ERR, "implicitly vacating state %s on %s due to client disconnect\n", assertion->name.c_str(), root->root_path.c_str()); // This will delete the state from client->states and invalidate // the iterator. leave_state(client, assertion, true, nullptr); } } static void cmd_state_leave( struct watchman_client* clientbase, const json_ref& args) { struct state_arg parsed; // This is a weak reference to the assertion. This is safe because only this // client can delete this assertion, and this function is only executed by // the thread that owns this client. std::shared_ptr assertion; auto client = dynamic_cast(clientbase); json_ref response; auto root = resolve_root_or_err(client, args, 1, true); if (!root) { return; } if (!parse_state_arg(client, args, &parsed)) { return; } if (parsed.sync_timeout.count() && !root->syncToNow(parsed.sync_timeout)) { send_error_response(client, "synchronization failed: %s", strerror(errno)); return; } { auto map = root->asserted_states.rlock(); // Confirm that this client owns this state const auto& it = map->find(parsed.name); // If the state is not asserted, we can't leave it if (it == map->end()) { send_error_response( client, "state %s is not asserted", parsed.name.c_str()); return; } assertion = it->second; // Sanity check ownership if (client->states[assertion->id].lock() != assertion) { send_error_response( client, "state %s was not asserted by this session", parsed.name.c_str()); return; } } // We're about to successfully leave the state, this is our response to the // state-leave command. We do this before we send the subscription // PDUs in case CLIENT has active subscriptions for this root response = make_response(); response.set( {{"root", w_string_to_json(root->root_path)}, {"state-leave", w_string_to_json(parsed.name)}, {"clock", w_string_to_json(root->view()->getCurrentClockString())}}); send_and_dispose_response(client, std::move(response)); // Notify and exit the state leave_state(client, assertion, false, parsed.metadata); } W_CMD_REG("state-leave", cmd_state_leave, CMD_DAEMON, w_cmd_realpath_root) /* vim:ts=2:sw=2:et: */ watchman-4.9.0/cmds/subscribe.cpp000066400000000000000000000401671314236077500167610ustar00rootroot00000000000000/* Copyright 2013-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" watchman_client_subscription::watchman_client_subscription( const std::shared_ptr& root, std::weak_ptr client) : root(root), weakClient(client) {} std::shared_ptr watchman_client_subscription::lockClient() { auto client = weakClient.lock(); if (client) { return std::dynamic_pointer_cast(client); } return nullptr; } watchman_client_subscription::~watchman_client_subscription() { auto client = lockClient(); if (client) { client->unsubByName(name); } } bool watchman_user_client::unsubByName(const w_string& name) { auto subIter = subscriptions.find(name); if (subIter == subscriptions.end()) { return false; } unilateralSub.erase(subIter->second); subscriptions.erase(subIter); return true; } enum class sub_action { no_sync_needed, execute, defer, drop }; static std::tuple get_subscription_action( struct watchman_client_subscription* sub, const std::shared_ptr& root) { auto action = sub_action::execute; w_string policy_name; auto position = root->view()->getMostRecentRootNumberAndTickValue(); watchman::log( watchman::DBG, "sub=", sub, " ", sub->name, ", last=", sub->last_sub_tick, " pending=", position.ticks, "\n"); if (sub->last_sub_tick != position.ticks) { if (!sub->drop_or_defer.empty()) { auto asserted_states = root->asserted_states.rlock(); if (!asserted_states->empty()) { // There are 1 or more states asserted and this subscription // has some policy for states. Figure out what we should do. for (auto& policy_iter : sub->drop_or_defer) { auto name = policy_iter.first; bool policy_is_drop = policy_iter.second; if (asserted_states->find(name) == asserted_states->end()) { continue; } if (action != sub_action::defer) { // This policy is active action = sub_action::defer; policy_name = name; } if (policy_is_drop) { action = sub_action::drop; // If we're dropping, we don't need to look at any // other policies policy_name = name; break; } // Otherwise keep looking until we find a drop } } } } else { watchman::log( watchman::DBG, "subscription ", sub->name, " is up to date\n"); action = sub_action::no_sync_needed; } return std::make_tuple(action, policy_name); } void watchman_client_subscription::processSubscription() { auto client = lockClient(); if (!client) { watchman::log( watchman::ERR, "encountered a vacated client while running subscription rules\n"); return; } sub_action action; w_string policy_name; std::tie(action, policy_name) = get_subscription_action(this, root); if (action != sub_action::no_sync_needed) { bool executeQuery = true; if (action == sub_action::drop) { // fast-forward over any notifications while in the drop state auto position = root->view()->getMostRecentRootNumberAndTickValue(); last_sub_tick = position.ticks; query->since_spec = watchman::make_unique(position); watchman::log( watchman::DBG, "dropping subscription notifications for ", name, " until state ", policy_name, " is vacated. Advanced ticks to ", last_sub_tick, "\n"); executeQuery = false; } else if (action == sub_action::defer) { watchman::log( watchman::DBG, "deferring subscription notifications for ", name, " until state ", policy_name, " is vacated\n"); executeQuery = false; } else if (vcs_defer && root->view()->isVCSOperationInProgress()) { watchman::log( watchman::DBG, "deferring subscription notifications for ", name, " until VCS operations complete\n"); executeQuery = false; } if (executeQuery) { last_sub_tick = runSubscriptionRules(client.get(), root).position().ticks; } } else { watchman::log(watchman::DBG, "subscription ", name, " is up to date\n"); } } void watchman_client_subscription::updateSubscriptionTicks(w_query_res* res) { // create a new spec that will be used the next time query->since_spec = watchman::make_unique(res->clockAtStartOfQuery); } json_ref watchman_client_subscription::buildSubscriptionResults( const std::shared_ptr& root, ClockSpec& position) { auto since_spec = query->since_spec.get(); if (since_spec && since_spec->tag == w_cs_clock) { watchman::log( watchman::DBG, "running subscription ", name, " rules since ", since_spec->clock.position.ticks, "\n"); } else { watchman::log( watchman::DBG, "running subscription ", name, " rules (no since)\n"); } // Subscriptions never need to sync explicitly; we are only dispatched // at settle points which are by definition sync'd to the present time query->sync_timeout = std::chrono::milliseconds(0); // We're called by the io thread, so there's little chance that the root // could be legitimately blocked by something else. That means that we // can use a short lock_timeout query->lock_timeout = uint32_t(root->config.getInt("subscription_lock_timeout_ms", 100)); w_log(W_LOG_DBG, "running subscription %s %p\n", name.c_str(), this); try { auto res = w_query_execute(query.get(), root, time_generator); w_log( W_LOG_DBG, "subscription %s generated %" PRIu32 " results\n", name.c_str(), uint32_t(res.resultsArray.array().size())); position = res.clockAtStartOfQuery; if (res.resultsArray.array().empty()) { updateSubscriptionTicks(&res); return nullptr; } auto response = make_response(); // It is way too much of a hassle to try to recreate the clock value if it's // not a relative clock spec, and it's only going to happen on the first run // anyway, so just skip doing that entirely. if (since_spec && since_spec->tag == w_cs_clock) { response.set("since", since_spec->toJson()); } updateSubscriptionTicks(&res); response.set({{"is_fresh_instance", json_boolean(res.is_fresh_instance)}, {"clock", res.clockAtStartOfQuery.toJson()}, {"files", std::move(res.resultsArray)}, {"root", w_string_to_json(root->root_path)}, {"subscription", w_string_to_json(name)}, {"unilateral", json_true()}}); return response; } catch (const QueryExecError& e) { watchman::log( watchman::ERR, "error running subscription ", name, " query: ", e.what()); return nullptr; } } ClockSpec watchman_client_subscription::runSubscriptionRules( watchman_user_client* client, const std::shared_ptr& root) { ClockSpec position; auto response = buildSubscriptionResults(root, position); if (response) { add_root_warnings_to_response(response, root); client->enqueueResponse(std::move(response), false); } return position; } static void cmd_flush_subscriptions( struct watchman_client* clientbase, const json_ref& args) { auto client = (watchman_user_client*)clientbase; int sync_timeout; json_ref subs(nullptr); if (json_array_size(args) == 3) { auto& sync_timeout_obj = args.at(2).get("sync_timeout"); subs = args.at(2).get_default("subscriptions", nullptr); if (!json_is_integer(sync_timeout_obj)) { send_error_response(client, "'sync_timeout' must be an integer"); return; } sync_timeout = json_integer_value(sync_timeout_obj); } else { send_error_response( client, "wrong number of arguments to 'flush-subscriptions'"); return; } auto root = resolve_root_or_err(client, args, 1, false); if (!root) { return; } std::vector subs_to_sync; if (subs) { if (!json_is_array(subs)) { send_error_response( client, "expected 'subscriptions' to be an array of subscription names"); return; } for (auto& sub_name : subs.array()) { if (!json_is_string(sub_name)) { send_error_response( client, "expected 'subscriptions' to be an array of subscription names"); return; } auto& sub_name_str = json_to_w_string(sub_name); auto sub_iter = client->subscriptions.find(sub_name_str); if (sub_iter == client->subscriptions.end()) { send_error_response( client, "this client does not have a subscription named '%s'", sub_name_str.c_str()); return; } auto& sub = sub_iter->second; if (sub->root != root) { send_error_response( client, "subscription '%s' is on root '%s' different from command root " "'%s'", sub_name_str.c_str(), sub->root->root_path.c_str(), root->root_path.c_str()); return; } subs_to_sync.push_back(sub_name_str); } } else { // Look for all subscriptions matching this root. for (auto& sub_iter : client->subscriptions) { if (sub_iter.second->root == root) { subs_to_sync.push_back(sub_iter.first); } } } if (!root->syncToNow(std::chrono::milliseconds(sync_timeout))) { send_error_response(client, "sync_timeout expired"); return; } auto resp = make_response(); auto synced = json_array(); auto no_sync_needed = json_array(); auto dropped = json_array(); for (auto& sub_name_str : subs_to_sync) { auto sub_iter = client->subscriptions.find(sub_name_str); auto& sub = sub_iter->second; sub_action action; w_string policy_name; std::tie(action, policy_name) = get_subscription_action(sub.get(), root); if (action == sub_action::drop) { auto position = root->view()->getMostRecentRootNumberAndTickValue(); sub->last_sub_tick = position.ticks; sub->query->since_spec = watchman::make_unique(position); watchman::log( watchman::DBG, "(flush-subscriptions) dropping subscription notifications for ", sub->name, " until state ", policy_name, " is vacated. Advanced ticks to ", sub->last_sub_tick, "\n"); json_array_append(dropped, w_string_to_json(sub_name_str)); } else { // flush-subscriptions means that we _should NOT defer_ notifications. So // ignore defer and defer_vcs. ClockSpec out_position; watchman::log( watchman::DBG, "(flush-subscriptions) executing subscription ", sub->name, "\n"); auto sub_result = sub->buildSubscriptionResults(root, out_position); if (sub_result) { send_and_dispose_response(client, std::move(sub_result)); json_array_append(synced, w_string_to_json(sub_name_str)); } else { json_array_append(no_sync_needed, w_string_to_json(sub_name_str)); } } } resp.set({{"synced", std::move(synced)}, {"no_sync_needed", std::move(no_sync_needed)}, {"dropped", std::move(dropped)}}); add_root_warnings_to_response(resp, root); send_and_dispose_response(client, std::move(resp)); } W_CMD_REG( "flush-subscriptions", cmd_flush_subscriptions, CMD_DAEMON | CMD_ALLOW_ANY_USER, w_cmd_realpath_root) /* unsubscribe /root subname * Cancels a subscription */ static void cmd_unsubscribe( struct watchman_client* clientbase, const json_ref& args) { const char *name; bool deleted{false}; struct watchman_user_client *client = (struct watchman_user_client *)clientbase; auto root = resolve_root_or_err(client, args, 1, false); if (!root) { return; } auto jstr = json_array_get(args, 2); name = json_string_value(jstr); if (!name) { send_error_response( client, "expected 2nd parameter to be subscription name"); return; } auto sname = json_to_w_string(jstr); deleted = client->unsubByName(sname); auto resp = make_response(); resp.set({{"unsubscribe", typed_string_to_json(name)}, {"deleted", json_boolean(deleted)}}); send_and_dispose_response(client, std::move(resp)); } W_CMD_REG("unsubscribe", cmd_unsubscribe, CMD_DAEMON | CMD_ALLOW_ANY_USER, w_cmd_realpath_root) /* subscribe /root subname {query} * Subscribes the client connection to the specified root. */ static void cmd_subscribe( struct watchman_client* clientbase, const json_ref& args) { std::shared_ptr sub; json_ref resp, initial_subscription_results; json_ref jfield_list; json_ref jname; std::shared_ptr query; json_ref query_spec; int defer = true; /* can't use bool because json_unpack requires int */ json_ref defer_list; json_ref drop_list; struct watchman_user_client *client = (struct watchman_user_client *)clientbase; if (json_array_size(args) != 4) { send_error_response(client, "wrong number of arguments for subscribe"); return; } auto root = resolve_root_or_err(client, args, 1, true); if (!root) { return; } jname = args.at(2); if (!json_is_string(jname)) { send_error_response( client, "expected 2nd parameter to be subscription name"); return; } query_spec = args.at(3); query = w_query_parse(root, query_spec); defer_list = query_spec.get_default("defer"); if (defer_list && !json_is_array(defer_list)) { send_error_response(client, "defer field must be an array of strings"); return; } drop_list = query_spec.get_default("drop"); if (drop_list && !json_is_array(drop_list)) { send_error_response(client, "drop field must be an array of strings"); return; } sub = std::make_shared( root, client->shared_from_this()); sub->name = json_to_w_string(jname); sub->query = query; json_unpack(query_spec, "{s?:b}", "defer_vcs", &defer); sub->vcs_defer = defer; if (drop_list || defer_list) { size_t i; if (defer_list) { for (i = 0; i < json_array_size(defer_list); i++) { sub->drop_or_defer[json_to_w_string(json_array_get(defer_list, i))] = false; } } if (drop_list) { for (i = 0; i < json_array_size(drop_list); i++) { sub->drop_or_defer[json_to_w_string(json_array_get(drop_list, i))] = true; } } } // If they want SCM aware results we should wait for SCM events to finish // before dispatching subscriptions if (query->since_spec && query->since_spec->hasScmParams()) { sub->vcs_defer = true; // If they didn't specify any drop/defer behavior, default to a reasonable // setting that works together with the fsmonitor extension for hg. if (sub->drop_or_defer.find("hg.update") == sub->drop_or_defer.end()) { sub->drop_or_defer["hg.update"] = false; // defer } } // Connect the root to our subscription { std::weak_ptr clientRef(client->shared_from_this()); client->unilateralSub.insert(std::make_pair( sub, root->unilateralResponses->subscribe( [clientRef, sub]() { auto client = clientRef.lock(); if (client) { client->ping->notify(); } }, sub->name))); } client->subscriptions[sub->name] = sub; resp = make_response(); resp.set("subscribe", json_ref(jname)); add_root_warnings_to_response(resp, root); ClockSpec position; initial_subscription_results = sub->buildSubscriptionResults(root, position); resp.set("clock", position.toJson()); send_and_dispose_response(client, std::move(resp)); if (initial_subscription_results) { send_and_dispose_response(client, std::move(initial_subscription_results)); } } W_CMD_REG("subscribe", cmd_subscribe, CMD_DAEMON | CMD_ALLOW_ANY_USER, w_cmd_realpath_root) /* vim:ts=2:sw=2:et: */ watchman-4.9.0/cmds/trigger.cpp000066400000000000000000000265731314236077500164500ustar00rootroot00000000000000/* Copyright 2013-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #include "make_unique.h" bool watchman_trigger_command::waitNoIntr() { if (!w_is_stopping() && !stopTrigger_) { if (current_proc && current_proc->terminated()) { current_proc.reset(); return true; } } return false; } void watchman_trigger_command::run(const std::shared_ptr& root) { std::vector> pending; w_set_thread_name( "trigger %s %s", triggername.c_str(), root->root_path.c_str()); try { watchman_event_poll pfd[1]; pfd[0].evt = ping_.get(); watchman::log(watchman::DBG, "waiting for settle\n"); while (!w_is_stopping() && !stopTrigger_) { ignore_result(w_poll_events(pfd, 1, 86400)); if (w_is_stopping() || stopTrigger_) { break; } while (ping_->testAndClear()) { pending.clear(); subscriber_->getPending(pending); bool seenSettle = false; for (auto& item : pending) { if (item->payload.get_default("settled")) { seenSettle = true; break; } } if (seenSettle) { if (!maybeSpawn(root)) { continue; } waitNoIntr(); } } } if (current_proc) { current_proc->kill(); current_proc->wait(); } } catch (const std::exception& exc) { watchman::log( watchman::ERR, "Uncaught exception in trigger thread: ", exc.what(), "\n"); } watchman::log(watchman::DBG, "out of loop\n"); } /* trigger-del /root triggername * Delete a trigger from a root */ static void cmd_trigger_delete( struct watchman_client* client, const json_ref& args) { w_string tname; bool res; auto root = resolve_root_or_err(client, args, 1, false); if (!root) { return; } if (json_array_size(args) != 3) { send_error_response(client, "wrong number of arguments"); return; } auto jname = args.at(2); if (!json_is_string(jname)) { send_error_response(client, "expected 2nd parameter to be trigger name"); return; } tname = json_to_w_string(jname); std::unique_ptr cmd; { auto map = root->triggers.wlock(); auto it = map->find(tname); if (it == map->end()) { res = false; } else { std::swap(cmd, it->second); map->erase(it); res = true; } } if (cmd) { // Stop the thread cmd->stop(); } if (res) { w_state_save(); } auto resp = make_response(); resp.set({{"deleted", json_boolean(res)}, {"trigger", json_ref(jname)}}); send_and_dispose_response(client, std::move(resp)); } W_CMD_REG("trigger-del", cmd_trigger_delete, CMD_DAEMON, w_cmd_realpath_root) /* trigger-list /root * Displays a list of registered triggers for a given root */ static void cmd_trigger_list( struct watchman_client* client, const json_ref& args) { auto root = resolve_root_or_err(client, args, 1, false); if (!root) { return; } auto resp = make_response(); auto arr = root->triggerListToJson(); resp.set("triggers", std::move(arr)); send_and_dispose_response(client, std::move(resp)); } W_CMD_REG("trigger-list", cmd_trigger_list, CMD_DAEMON, w_cmd_realpath_root) static json_ref build_legacy_trigger( const std::shared_ptr& root, struct watchman_client* client, const json_ref& args) { uint32_t next_arg = 0; uint32_t i; size_t n; auto trig = json_object({{"name", args.at(2)}, {"append_files", json_true()}, {"stdin", json_array({typed_string_to_json("name"), typed_string_to_json("exists"), typed_string_to_json("new"), typed_string_to_json("size"), typed_string_to_json("mode")})}}); json_ref expr; auto query = w_query_parse_legacy(root, args, 3, &next_arg, nullptr, &expr); json_object_set(trig, "expression", expr.get_default("expression")); if (next_arg >= args.array().size()) { send_error_response(client, "no command was specified"); return nullptr; } n = json_array_size(args) - next_arg; auto command = json_array_of_size(n); for (i = 0; i < n; i++) { auto ele = args.at(i + next_arg); if (!json_is_string(ele)) { send_error_response(client, "expected argument %d to be a string", i); return nullptr; } json_array_append(command, ele); } json_object_set_new(trig, "command", std::move(command)); return trig; } static bool parse_redirection(const char **name_p, int *flags, const char *label, char **errmsg) { const char *name = *name_p; if (!name) { return true; } if (name[0] != '>') { ignore_result(asprintf(errmsg, "%s: must be prefixed with either > or >>, got %s", label, name)); return false; } *flags = O_CREAT|O_CLOEXEC|O_WRONLY; if (name[1] == '>') { #ifdef _WIN32 ignore_result(asprintf(errmsg, "Windows does not support O_APPEND")); return false; #else *flags |= O_APPEND; *name_p = name + 2; #endif } else { *flags |= O_TRUNC; *name_p = name + 1; } return true; } watchman_trigger_command::watchman_trigger_command( const std::shared_ptr& root, const json_ref& trig, char** errmsg) : definition(trig), append_files(false), stdin_style(input_dev_null), max_files_stdin(0), stdout_flags(0), stderr_flags(0), stdout_name(nullptr), stderr_name(nullptr), ping_(w_event_make()) { auto queryDef = json_object(); auto expr = definition.get_default("expression"); if (expr) { queryDef.set("expression", json_ref(expr)); } auto relative_root = definition.get_default("relative_root"); if (relative_root) { json_object_set_nocheck(queryDef, "relative_root", relative_root); } query = w_query_parse(root, queryDef); if (!query) { return; } auto name = trig.get_default("name"); if (!name || !json_is_string(name)) { *errmsg = strdup("invalid or missing name"); return; } triggername = json_to_w_string(name); command = definition.get_default("command"); if (!command || !json_is_array(command) || !json_array_size(command)) { *errmsg = strdup("invalid command array"); return; } append_files = json_is_true(trig.get_default("append_files", json_false())); if (append_files) { // This is unfortunately a bit of a hack. When appending files to the // command line we need a list of just the file names. We would normally // just set the field list to contain the name, but that may conflict with // the setting for the "stdin" property that is managed below; if they // didn't ask for the name, we can't just force it in. As a bit of an // "easy" workaround, we'll capture the list of names from the deduping // mechanism. query->dedup_results = true; } auto ele = definition.get_default("stdin"); if (!ele) { stdin_style = input_dev_null; } else if (json_is_array(ele)) { stdin_style = input_json; parse_field_list(ele, &query->fieldList); } else if (json_is_string(ele)) { const char *str = json_string_value(ele); if (!strcmp(str, "/dev/null")) { stdin_style = input_dev_null; } else if (!strcmp(str, "NAME_PER_LINE")) { stdin_style = input_name_list; parse_field_list( json_array({typed_string_to_json("name")}), &query->fieldList); } else { ignore_result(asprintf(errmsg, "invalid stdin value %s", str)); return; } } else { *errmsg = strdup("invalid value for stdin"); return; } // unlimited unless specified auto ival = json_integer_value(trig.get_default("max_files_stdin", json_integer(0))); if (ival < 0) { *errmsg = strdup("max_files_stdin must be >= 0"); return; } max_files_stdin = ival; json_unpack(trig, "{s:s}", "stdout", &stdout_name); json_unpack(trig, "{s:s}", "stderr", &stderr_name); if (!parse_redirection(&stdout_name, &stdout_flags, "stdout", errmsg)) { return; } if (!parse_redirection(&stderr_name, &stderr_flags, "stderr", errmsg)) { return; } // Set some standard vars env.set({{"WATCHMAN_ROOT", root->root_path}, {"WATCHMAN_SOCK", get_sock_name()}, {"WATCHMAN_TRIGGER", triggername}}); } void watchman_trigger_command::stop() { stopTrigger_ = true; if (triggerThread_.joinable()) { ping_->notify(); triggerThread_.join(); } } watchman_trigger_command::~watchman_trigger_command() { if (triggerThread_.joinable() && !stopTrigger_) { // We could try to call stop() here, but that is paving over the problem, // especially if we happen to be the triggerThread_ for some reason. watchman::log( watchman::FATAL, "destroying trigger without stopping it first\n"); } } void watchman_trigger_command::start(const std::shared_ptr& root) { subscriber_ = root->unilateralResponses->subscribe([this] { ping_->notify(); }); triggerThread_ = std::thread([this, root] { try { run(root); } catch (const std::exception& e) { watchman::log( watchman::ERR, "exception in trigger thread: ", e.what(), "\n"); } }); } /* trigger /root triggername [watch patterns] -- cmd to run * Sets up a trigger so that we can execute a command when a change * is detected */ static void cmd_trigger(struct watchman_client* client, const json_ref& args) { char *errmsg = NULL; bool need_save = true; std::unique_ptr cmd; json_ref trig; json_ref resp; auto root = resolve_root_or_err(client, args, 1, true); if (!root) { return; } if (json_array_size(args) < 3) { send_error_response(client, "not enough arguments"); goto done; } trig = args.at(2); if (json_is_string(trig)) { trig = build_legacy_trigger(root, client, args); if (!trig) { goto done; } } cmd = watchman::make_unique(root, trig, &errmsg); if (errmsg) { send_error_response(client, "%s", errmsg); goto done; } resp = make_response(); resp.set("triggerid", w_string_to_json(cmd->triggername)); { auto wlock = root->triggers.wlock(); auto& map = *wlock; auto& old = map[cmd->triggername]; if (old && json_equal(cmd->definition, old->definition)) { // Same definition: we don't and shouldn't touch things, so that we // preserve the associated trigger clock and don't cause the trigger // to re-run immediately resp.set( "disposition", typed_string_to_json("already_defined", W_STRING_UNICODE)); need_save = false; } else { resp.set( "disposition", typed_string_to_json(old ? "replaced" : "created", W_STRING_UNICODE)); if (old) { // If we're replacing an old definition, be sure to stop the old // one before we destroy it, and before we start the new one. old->stop(); } // Start the new trigger thread cmd->start(root); old = std::move(cmd); need_save = true; } } if (need_save) { w_state_save(); } send_and_dispose_response(client, std::move(resp)); done: if (errmsg) { free(errmsg); } } W_CMD_REG("trigger", cmd_trigger, CMD_DAEMON, w_cmd_realpath_root) /* vim:ts=2:sw=2:et: */ watchman-4.9.0/cmds/watch.cpp000066400000000000000000000246661314236077500161140ustar00rootroot00000000000000/* Copyright 2013-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" using watchman::realPath; bool w_cmd_realpath_root(json_ref& args, char** errmsg) { const char *path; if (json_array_size(args) < 2) { ignore_result(asprintf(errmsg, "wrong number of arguments")); return false; } path = json_string_value(json_array_get(args, 1)); if (!path) { ignore_result(asprintf(errmsg, "second argument must be a string")); return false; } try { auto resolved = realPath(path); args.array()[1] = w_string_to_json(resolved); return true; } catch (const std::exception &exc) { watchman::log(watchman::DBG, "w_cmd_realpath_root: path ", path, " does not resolve: ", exc.what(), "\n"); // We don't treat this as an error; the caller will subsequently // fail and perform their usual error handling return true; } } W_CAP_REG("clock-sync-timeout") /* clock /root [options] * Returns the current clock value for a watched root * If the options contain a sync_timeout, we ensure that the repo * is synced up-to-date and the returned clock represents the * latest state. */ static void cmd_clock(struct watchman_client* client, const json_ref& args) { int sync_timeout = 0; if (json_array_size(args) == 3) { const char *ignored; if (0 != json_unpack(args, "[s, s, {s?:i*}]", &ignored, &ignored, "sync_timeout", &sync_timeout)) { send_error_response(client, "malformated argument list for 'clock'"); return; } } else if (json_array_size(args) != 2) { send_error_response(client, "wrong number of arguments to 'clock'"); return; } /* resolve the root */ auto root = resolve_root_or_err(client, args, 1, false); if (!root) { return; } if (sync_timeout && !root->syncToNow(std::chrono::milliseconds(sync_timeout))) { send_error_response(client, "sync_timeout expired"); return; } auto resp = make_response(); annotate_with_clock(root, resp); send_and_dispose_response(client, std::move(resp)); } W_CMD_REG("clock", cmd_clock, CMD_DAEMON | CMD_ALLOW_ANY_USER, w_cmd_realpath_root) /* watch-del /root * Stops watching the specified root */ static void cmd_watch_delete( struct watchman_client* client, const json_ref& args) { /* resolve the root */ if (json_array_size(args) != 2) { send_error_response(client, "wrong number of arguments to 'watch-del'"); return; } auto root = resolve_root_or_err(client, args, 1, false); if (!root) { return; } auto resp = make_response(); resp.set({{"watch-del", json_boolean(root->stopWatch())}, {"root", w_string_to_json(root->root_path)}}); send_and_dispose_response(client, std::move(resp)); } W_CMD_REG("watch-del", cmd_watch_delete, CMD_DAEMON, w_cmd_realpath_root) /* watch-del-all * Stops watching all roots */ static void cmd_watch_del_all(struct watchman_client* client, const json_ref&) { auto resp = make_response(); auto roots = w_root_stop_watch_all(); resp.set("roots", std::move(roots)); send_and_dispose_response(client, std::move(resp)); } W_CMD_REG("watch-del-all", cmd_watch_del_all, CMD_DAEMON | CMD_POISON_IMMUNE, NULL) /* watch-list * Returns a list of watched roots */ static void cmd_watch_list(struct watchman_client* client, const json_ref&) { auto resp = make_response(); auto root_paths = w_root_watch_list_to_json(); resp.set("roots", std::move(root_paths)); send_and_dispose_response(client, std::move(resp)); } W_CMD_REG("watch-list", cmd_watch_list, CMD_DAEMON | CMD_ALLOW_ANY_USER, NULL) // For each directory component in candidate_dir to the root of the filesystem, // look for root_file. If root_file is present, update relpath to reflect the // relative path to the original value of candidate_dir and return true. If // not found, return false. candidate_dir is modified by this function; it // will poke a NUL char in to separate the resolved candidate_dir from the // relpath. If we return false, the original candidate_dir value is restored. // If we return true, then we may have poked the string to separate the two // components. static bool find_file_in_dir_tree(const char *root_file, char *candidate_dir, char **relpath) { char *restore_slash = NULL; while (true) { char *slash; char *proj_path; int rv; ignore_result(asprintf(&proj_path, "%s/%s", candidate_dir, root_file)); rv = w_path_exists(proj_path); free(proj_path); if (rv) { // Got a match if (restore_slash) { *relpath = restore_slash + 1; } else { *relpath = NULL; } return true; } // Walk up to the next level #ifdef _WIN32 if (strlen(candidate_dir) == 3 && candidate_dir[1] == ':' && is_slash(candidate_dir[2])) { // Drive letter; is a root break; } if (strlen(candidate_dir) <= 2) { // Effectively a root break; } #else if (!strcmp(candidate_dir, "/")) { // Can't go any higher than this break; } #endif slash = strrchr(candidate_dir, '/'); if (restore_slash) { *restore_slash = '/'; } if (!slash) { break; } restore_slash = slash; *slash = 0; } if (restore_slash) { *restore_slash = '/'; } *relpath = NULL; return false; } bool find_project_root( const json_ref& root_files, char* resolved, char** relpath) { uint32_t i; for (i = 0; i < json_array_size(root_files); i++) { auto item = json_array_get(root_files, i); const char *name = json_string_value(item); if (find_file_in_dir_tree(name, resolved, relpath)) { return true; } } return false; } // For watch-project, take a root path string and resolve the // containing project directory, then update the args to reflect // that path. // relpath will hold the path to the project dir, relative to the // watched dir. If it is NULL it means that the project dir is // equivalent to the watched dir. static char* resolve_projpath(const json_ref& args, char** errmsg, char** relpath) { const char *path; char *resolved = NULL; bool res = false; bool enforcing; char *enclosing = NULL; *relpath = NULL; if (json_array_size(args) < 2) { ignore_result(asprintf(errmsg, "wrong number of arguments")); return nullptr; } path = json_string_value(json_array_get(args, 1)); if (!path) { ignore_result(asprintf(errmsg, "second argument must be a string")); return nullptr; } try { auto real = realPath(path); resolved = strdup(real.c_str()); } catch (const std::exception &exc) { ignore_result(asprintf(errmsg, "resolve_projpath: path `%s`: %s", path, exc.what())); return nullptr; } auto root_files = cfg_compute_root_files(&enforcing); if (!root_files) { ignore_result(asprintf(errmsg, "resolve_projpath: error computing root_files configuration value, " "consult your log file at %s for more details", log_name)); return nullptr; } // See if we're requesting something in a pre-existing watch enclosing = w_find_enclosing_root(resolved, relpath); if (enclosing) { free(resolved); resolved = enclosing; json_array_set_new(args, 1, typed_string_to_json(resolved, W_STRING_BYTE)); res = true; goto done; } res = find_project_root(root_files, resolved, relpath); if (res) { json_array_set_new(args, 1, typed_string_to_json(resolved, W_STRING_BYTE)); goto done; } if (!enforcing) { // We'll use the path they originally requested res = true; goto done; } ignore_result(asprintf(errmsg, "resolve_projpath: none of the files listed in global config " "root_files are present in path `%s` or any of its " "parent directories", path)); done: if (!res) { free(resolved); resolved = nullptr; } return resolved; } /* watch /root */ static void cmd_watch(struct watchman_client* client, const json_ref& args) { /* resolve the root */ if (json_array_size(args) != 2) { send_error_response(client, "wrong number of arguments to 'watch'"); return; } auto root = resolve_root_or_err(client, args, 1, true); if (!root) { return; } root->view()->waitUntilReadyToQuery(root).wait(); auto resp = make_response(); if (root->failure_reason) { resp.set("error", w_string_to_json(root->failure_reason)); } else if (root->inner.cancelled) { resp.set( "error", typed_string_to_json("root was cancelled", W_STRING_UNICODE)); } else { resp.set({{"watch", w_string_to_json(root->root_path)}, {"watcher", w_string_to_json(root->view()->getName())}}); } add_root_warnings_to_response(resp, root); send_and_dispose_response(client, std::move(resp)); } W_CMD_REG("watch", cmd_watch, CMD_DAEMON | CMD_ALLOW_ANY_USER, w_cmd_realpath_root) static void cmd_watch_project( struct watchman_client* client, const json_ref& args) { char *dir_to_watch = NULL; char *rel_path_from_watch = NULL; char *errmsg = NULL; /* resolve the root */ if (json_array_size(args) != 2) { send_error_response(client, "wrong number of arguments to 'watch-project'"); return; } // Implementation note: rel_path_from_watch is stored in the same // memory buffer as dir_to_watch; free()ing dir_to_watch will also // free rel_path_from_watch dir_to_watch = resolve_projpath(args, &errmsg, &rel_path_from_watch); if (!dir_to_watch) { send_error_response(client, "%s", errmsg); free(errmsg); return; } auto root = resolve_root_or_err(client, args, 1, true); if (!root) { free(dir_to_watch); return; } root->view()->waitUntilReadyToQuery(root).wait(); auto resp = make_response(); if (root->failure_reason) { resp.set("error", w_string_to_json(root->failure_reason)); } else if (root->inner.cancelled) { resp.set( "error", typed_string_to_json("root was cancelled", W_STRING_UNICODE)); } else { resp.set({{"watch", w_string_to_json(root->root_path)}, {"watcher", w_string_to_json(root->view()->getName())}}); } add_root_warnings_to_response(resp, root); if (rel_path_from_watch) { resp.set( "relative_path", typed_string_to_json(rel_path_from_watch, W_STRING_BYTE)); } send_and_dispose_response(client, std::move(resp)); free(dir_to_watch); } W_CMD_REG("watch-project", cmd_watch_project, CMD_DAEMON | CMD_ALLOW_ANY_USER, w_cmd_realpath_root) /* vim:ts=2:sw=2:et: */ watchman-4.9.0/configure.ac000066400000000000000000000250511314236077500156270ustar00rootroot00000000000000AC_INIT([watchman], [4.9.0], [], [watchman]) AC_CONFIG_MACRO_DIR([m4]) AC_CANONICAL_TARGET AM_INIT_AUTOMAKE([dist-bzip2 subdir-objects]) m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES(yes)]) CPPFLAGS="$CPPFLAGS -D_REENTRANT -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE" case $target_os in *solaris*) dnl we really want you to be using 64 hardware and software. dnl if we don't build 64-bit, our test suite fails when comparing the dnl results of a 64-bit dev_t from PHP's stat info CFLAGS="$CFLAGS -m64" CXXFLAGS="$CXXFLAGS -m64" ;; *darwin*) dnl avoid compilation failure on OS X when building with python ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future AC_SUBST(ARCHFLAGS) ;; esac AC_PROG_CC AC_PROG_CXX AX_CXX_COMPILE_STDCXX_11([noext],[mandatory]) AC_PROG_CPP AC_C_BIGENDIAN AC_C_INLINE LT_INIT AM_PROG_CC_C_O AM_PROG_AS AC_ARG_ENABLE([cppclient], AS_HELP_STRING([--disable-cppclient], [Disable build of C++ client library])) AC_ARG_WITH([folly], AS_HELP_STRING([--with-folly=], [Where to find folly])) AS_IF([test "x$with_folly" != "x"], [ folly_config_dir=$with_folly/lib/pkgconfig/ AS_IF([test -f "$folly_config_dir/libfolly.pc"], [export PKG_CONFIG_PATH=$folly_config_dir:$PKG_CONFIG_PATH], [AC_MSG_ERROR([cannot find folly config $folly_config_dir/libfolly.pc])] ) ]) dnl dnl Decide whether to build the C++ client library dnl PKG_CHECK_MODULES([FOLLY], [libfolly], [folly=yes], [folly=no]) AS_IF([test "x$enable_cppclient" = "xyes" && test "x$folly" = "xno"], [AC_MSG_ERROR([cppclient requested but libfolly not present])]) AS_IF([test "x$enable_cppclient" != "xno" && test "x$folly" = "xno"], [enable_cppclient=no]) AM_CONDITIONAL(ENABLE_CPPCLIENT, [test "x$enable_cppclient" != "xno"]) dnl I don't care that this is supposed to be sysconfdir; autoconf doesn't dnl allow it to be evaluated sanely from configure, only via Makefile, dnl which I don't care about. Just pass the right value to configure. conffile=/etc/watchman.json AC_ARG_ENABLE(conffile, [ --enable-conffile=PATH Use PATH as the default configuration file name. Default is /etc/watchman.json ],[ conffile=$enableval ]) if test "$conffile" != "no" ; then AC_DEFINE_UNQUOTED(WATCHMAN_CONFIG_FILE, "$conffile", [system configuration file path]) fi AC_ARG_WITH(buildinfo, [ --with-buildinfo=TEXT Include some extra build information that will be reported in the version command output ],[ AC_DEFINE_UNQUOTED(WATCHMAN_BUILD_INFO, "$withval", [build info]) ]) build_dev_fsevents=no AC_ARG_WITH(fsevents-header, [ --with-fsevents-header=/path/to/xnu/bsd/sys/fsevents.h Specify the path to the fsevents.h header file on your system. This is an optional dependency for the experimental devfsevents watcher. ],[ fsevents_header="$withval" AC_MSG_CHECKING([that $fsevents_header is a file]) if test -f "$fsevents_header" ; then AC_DEFINE_UNQUOTED(SYS_FSEVENTS_PATH, ["$fsevents_header"],[sys/fsevents.h location]) AC_MSG_RESULT(yes) build_dev_fsevents=yes else AC_MSG_FAILURE([--with-fsevents-header was given but the value $fsevents_header was not a file]) fi ]) AM_CONDITIONAL(DEV_FSEVENTS, [test "$build_dev_fsevents" != "no"]) xprefix=$prefix if test "$xprefix" = "NONE"; then xprefix=$ac_default_prefix fi WATCHMAN_STATE_DIR="$xprefix/var/run/watchman" AC_ARG_ENABLE(statedir, [ --enable-statedir=PATH Use PATH as the default for state, log files and sockets instead of using your system tempdir ],[ WATCHMAN_STATE_DIR="$enableval" ]) if test "$WATCHMAN_STATE_DIR" != "no"; then AC_DEFINE_UNQUOTED(WATCHMAN_STATE_DIR, ["$WATCHMAN_STATE_DIR"], [watchman state directory]) AC_SUBST(WATCHMAN_STATE_DIR) fi AM_CONDITIONAL(WATCHMAN_STATE_DIR, [test "$WATCHMAN_STATE_DIR" != "no"]) AC_ARG_ENABLE(asan, [ --enable-asan Enable address sanitizer options ]) AC_ARG_ENABLE(opt, [ --disable-opt Disable optimizations (-O0) ]) want_python=yes AC_ARG_WITH(python, [ --with-python=PATH Enable Python bindings. PATH is location of python. Default is to look for python in your PATH --without-python Disable python bindings ],[ want_python="$withval" ]) if test "x$want_python" != "xno" ; then if test "$want_python" != "yes"; then PYTHON="$want_python" fi AM_PATH_PYTHON(,,[:]) fi AM_CONDITIONAL(HAVE_PYTHON, [test "$PYTHON" != : -a "x$want_python" != "xno"]) want_ruby=no AC_ARG_WITH(ruby, [ --with-ruby Enable ruby bindings (requires ruby, gem, bundler) ],[ want_ruby="$withval" ]) AM_CONDITIONAL(HAVE_RUBY, [test "x$want_ruby" = "xyes"]) AC_ARG_WITH(pcre, [ --without-pcre Don't enable pcre support. --with-pcre=PATH Enable pcre support. PATH is location of pcre-config. Default is to enable and look for pcre-config in your $PATH ],[ pcre_config="$withval" ],[ pcre_config="check" ]) if test "$pcre_config" != "no" ; then if test "$pcre_config" = "yes" -o "$pcre_config" = "check"; then AC_PATH_PROG(PCRE_CONFIG_PATH, pcre-config, false) dnl If --with-pcre was specified but pcre-config not found, fail hard now. if test "$pcre_config" = "yes" -a "$PCRE_CONFIG_PATH" = "false"; then AC_MSG_FAILURE([--with-pcre was given, but pcre-config not found in PATH]) fi else PCRE_CONFIG_PATH="$pcre_config" fi AC_MSG_CHECKING(for PCRE using $PCRE_CONFIG_PATH) pcre_version=`"$PCRE_CONFIG_PATH" --version 2>/dev/null` if test $? -ne 0; then AC_MSG_RESULT(failed) else AC_MSG_RESULT($pcre_version) fi if test -n "$pcre_version"; then PCRE_LIBS=`$PCRE_CONFIG_PATH --libs` LIBS="$LIBS $PCRE_LIBS" PCRE_CFLAGS=`$PCRE_CONFIG_PATH --cflags` CFLAGS="$CFLAGS $PCRE_CFLAGS" CPPFLAGS="$CPPFLAGS $PCRE_CFLAGS" AC_CHECK_HEADERS(pcre.h, [], [ if test "$pcre_config" != "check"; then AC_MSG_FAILURE([--with-pcre was given, but pcre not found: pcre-config --libs=$PCRE_LIBS pcre-config --cflags=$PCRE_CFLAGS]) fi ]) elif test "$pcre_config" != "check"; then AC_MSG_FAILURE([$PCRE_CONFIG_PATH failed to run, could not check for PCRE]) fi fi gimli=no AC_ARG_WITH(gimli, [ --with-gimli Enable support for the gimli process monitor https://bitbucket.org/wez/gimli/ ],[ gimli=$withval ]) if test "x$gimli" != "xno" ; then AC_DEFINE([USE_GIMLI], 1, [Use gimli]) dnl deal with annoying lack of rpath and linux lib64 dirs="/usr/local/lib /usr/lib" rpath="-R" case $target_os-$target_cpu in linux-*64) dirs="/usr/local/lib64 $libs" rpath="-Wl,-rpath=" ;; linux*) rpath="-Wl,-rpath=" ;; esac save_flags="$LDFLAGS" save_libs="$LIBS" gimli_dir="" MONITOR_PATH="monitor" for dir in $dirs ; do LDFLAGS="$save_flags $rpath$dir -L$dir" LIBS="$save_libs -lgimli" AC_TRY_LINK([ #include ],[gimli_heartbeat_attach();], [gimli_dir=$dir] ) if test -n "$gimli_dir" ; then save_flags="$save_flags $rpath$dir -L$dir" save_libs="$save_libs -lgimli" dnl resolve real path to bin dir MONITOR_PATH="`cd $gimli_dir/../bin ; echo \$PWD`/monitor" break fi done if test ! -x "$MONITOR_PATH" ; then MONITOR_PATH="monitor" fi AC_DEFINE_UNQUOTED(GIMLI_MONITOR_PATH, "$MONITOR_PATH", [path to gimli monitor process]) LDFLAGS="$save_flags" LIBS="$save_libs" AC_CHECK_HEADERS(libgimli.h) fi lenient=no AC_ARG_ENABLE(lenient, [ --enable-lenient Turn off more pedantic levels of warnings and compilation checks ],[ lenient=$enableval ]) stack_protect=no AC_ARG_ENABLE(stack-protector, [ --enable-stack-protector Enable stack protection in the same way that rpmbuild does on some systems. ],[ stack_protect=$enableval ]) AC_SEARCH_LIBS([pthread_create], [pthread]) AC_SEARCH_LIBS([socket], [socket]) AC_SEARCH_LIBS([SHA1_Init], [crypto]) AC_CHECK_HEADERS(sys/types.h inttypes.h locale.h port.h sys/inotify.h sys/event.h) AC_CHECK_HEADERS(sys/ucred.h sys/socket.h) AC_CHECK_FUNCS(mkostemp kqueue port_create inotify_init strtoll localeconv statfs) AC_CHECK_FUNCS(accept4 inotify_init1 getattrlistbulk openat fdopendir pipe2) AC_CHECK_HEADERS(sys/vfs.h sys/param.h sys/mount.h sys/statfs.h sys/statvfs.h, [], [], [[#ifdef __OpenBSD__ # include #endif ]]) AC_CHECK_HEADERS(valgrind/valgrind.h) AC_CHECK_HEADERS(execinfo.h sys/resource.h) AC_CHECK_HEADERS(CoreServices/CoreServices.h, [ LIBS="$LIBS -framework CoreServices" ]) AC_CHECK_FUNCS(FSEventStreamSetExclusionPaths) AC_CHECK_FUNCS(backtrace backtrace_symbols backtrace_symbols_fd) AC_CHECK_FUNCS(sys_siglist) AC_CHECK_FUNCS(memmem) if test -n "$ac_cv_header_sys_statvfs_h"; then AC_CHECK_MEMBERS([struct statvfs.f_fstypename,struct statvfs.f_basetype], [AC_DEFINE([STATVFS_HAS_FSTYPE_AS_STRING], [1],[if statvfs holds fstype as string])],[],[[#include ]]) fi # Do this after we've looked for functions if test -n "$GCC" ; then CFLAGS="$CFLAGS -Wall -Wextra -Wdeclaration-after-statement -g -gdwarf-2 -fno-omit-frame-pointer" CXXFLAGS="$CXXFLAGS -Wall -Wextra -g -gdwarf-2 -fno-omit-frame-pointer" fi if test -n "$GCC" -a "x$enable_opt" = "xno" ; then CFLAGS="$CFLAGS -O0" CXXFLAGS="$CXXFLAGS -O0" LDFLAGS="$LDFLAGS -O0" fi if test -n "$GCC" -a "x$enable_asan" = "xyes" ; then CFLAGS="$CFLAGS -fsanitize=address" CXXFLAGS="$CXXFLAGS -fsanitize=address" LDFLAGS="$LDFLAGS -fsanitize=address" fi if test -n "$GCC" -a "$stack_protect" = "yes" ; then CFLAGS="$CFLAGS -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4" CXXFLAGS="$CXXFLAGS -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4" fi IRONMANCFLAGS="" if test -n "$GCC" -a "$lenient" = "no" ; then IRONMANCFLAGS="-Werror" fi AC_SUBST(IRONMANCFLAGS) AC_CONFIG_HEADER([config.h]) AC_CONFIG_FILES([ Makefile thirdparty/jansson/jansson_config.h cppclient/watchmanclient.pc ]) AC_OUTPUT if test "$WATCHMAN_STATE_DIR" != "no"; then reported_state_directory="$WATCHMAN_STATE_DIR" else reported_state_directory="System temporary directory" fi cat << EOF Your build configuration: CC = $CC CPPFLAGS = $CPPFLAGS CFLAGS = $CFLAGS CXX = $CXX CXXFLAGS = $CXXFLAGS LDFLAGS = $LDFLAGS prefix: $prefix version: $VERSION state directory: $reported_state_directory EOF dnl vim:ts=2:sw=2: watchman-4.9.0/cppclient/000077500000000000000000000000001314236077500153175ustar00rootroot00000000000000watchman-4.9.0/cppclient/CLI.cpp000066400000000000000000000030601314236077500164310ustar00rootroot00000000000000/* Copyright 2016-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ /* This is a test utility for WatchmanConnection. This works a bit like the watchman CLI. Build with something like: $ LDFLAGS=$(pkg-config watchmanclient --libs) \ CPPFLAGS=$(pkg-config watchmanclient --cflags) \ make CLI WatchmanConnection is automatically tested via the cppclient test more thoroughly. */ #include #include #include #include #include #include using namespace folly; using namespace watchman; int main(int argc, char** argv) { folly::init(&argc, &argv); folly::ScopedEventBaseThread sebt; auto eb = sebt.getEventBase(); folly::dynamic cmd = folly::dynamic::array; for (int i = 1; i < argc; i++) { cmd.push_back(std::string(argv[i])); } auto c = std::make_shared(eb); c->connect() .then([&](folly::dynamic version) { std::cout << "Connected to watchman: " << version << std::endl; std::cout << "Going to run " << cmd << std::endl; return c->run(cmd); }) .then([](folly::dynamic result) { LOG(INFO) << "Result: " << result; }) .onError([](const folly::exception_wrapper& ex) { std::cerr << "Failed: " << ex.what() << std::endl; }) .wait(); c->run(folly::dynamic::array("watch-list")) .then([](folly::dynamic res) { std::cout << res << std::endl; }) .wait(); c->close(); return 0; } watchman-4.9.0/cppclient/TARGETS000066400000000000000000000011541314236077500163540ustar00rootroot00000000000000cpp_library( name = "cppclient", srcs = [ "WatchmanClient.cpp", "WatchmanConnection.cpp", "WatchmanResponseError.cpp", ], headers = [ "WatchmanClient.h", "WatchmanConnection.h", ], deps = [ "@/folly:folly", "@/folly:subprocess", "@/folly/experimental/bser:bser", "@/folly/futures:futures", "@/folly/io/async:async", ], ) buck_cxx_library( name = "headers", header_namespace = "", exported_headers = [ "WatchmanClient.h", "WatchmanConnection.h", ], visibility = ["PUBLIC"], ) watchman-4.9.0/cppclient/WatchmanClient.cpp000066400000000000000000000112671314236077500207330ustar00rootroot00000000000000/* Copyright 2016-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "WatchmanClient.h" #include #include namespace watchman { using namespace folly; WatchmanClient::WatchmanClient( EventBase* eventBase, Optional&& socketPath, folly::Executor* cpuExecutor, ErrorCallback errorCallback) : conn_(std::make_shared( eventBase, std::move(socketPath), Optional( [this](Try&& data) { connectionCallback(std::move(data)); }), cpuExecutor)), errorCallback_(errorCallback) {} void WatchmanClient::connectionCallback(Try&& try_data) { // If an exception occurs notify all subscription callbacks. Other outstanding // one-shots etc. will get exceptions returned via their futures if needed. if (try_data.hasException()) { for (auto& subscription : subscriptionMap_) { subscription.second->executor_->add( [ sub_ptr = subscription.second, try_data]() mutable { if (sub_ptr->active_) { sub_ptr->callback_(std::move(try_data)); } }); } if (errorCallback_) { errorCallback_(try_data.exception()); } return; } auto& data = try_data.value(); auto subscription_data = data.get_ptr("subscription"); if (subscription_data) { std::lock_guard guard(mutex_); auto subscription = subscriptionMap_.find(subscription_data->asString()); if (subscription == subscriptionMap_.end()) { LOG(ERROR) << "Unexpected subscription update: " << subscription_data->asString(); } else { subscription->second->executor_->add( [ sub_ptr = subscription->second, data = std::move(data) ]() mutable { if (sub_ptr->active_) { sub_ptr->callback_(Try(std::move(data))); } }); } } else { LOG(ERROR) << "Unhandled unilateral data: " << data; } } Future WatchmanClient::connect(dynamic versionArgs) { return conn_->connect(versionArgs); } void WatchmanClient::close() { return conn_->close(); } Future WatchmanClient::run(const dynamic& cmd) { return conn_->run(cmd); } Future WatchmanClient::watch(StringPiece path) { return conn_->run(dynamic::array("watch-project", path)) .then([=](dynamic& data) { auto relativePath = data["relativePath"]; Optional relativePath_optional; if (relativePath != nullptr) { relativePath_optional.assign(relativePath.asString()); } return std::make_shared( data["watch"].asString(), relativePath_optional); }); } Future WatchmanClient::subscribe( dynamic query, WatchPathPtr path, Executor* executor, SubscriptionCallback&& callback) { auto name = folly::to("sub", (int)++nextSubID_); auto subscription = std::make_shared(executor, std::move(callback), name, path); { std::lock_guard guard(mutex_); subscriptionMap_[name] = subscription; } if (path->relativePath_) { query["relative_root"] = *(path->relativePath_); } return run(dynamic::array("subscribe", path->root_, name, query)) .then([subscription = std::move(subscription), name = name] (dynamic data) { CHECK(data["subscribe"] == name) << "Unexpected response to subscribe request " << data; return subscription; }); } Future WatchmanClient::subscribe( const dynamic& query, StringPiece path, Executor* executor, SubscriptionCallback&& callback) { return watch(path).then( [ =, callback = std::move(callback) ](WatchPathPtr watch_path) mutable { return subscribe(query, watch_path, executor, std::move(callback)); }); } Future WatchmanClient::unsubscribe(SubscriptionPtr sub) { CHECK(sub->active_) << "Already unsubscribed."; sub->active_ = false; return run(dynamic::array("unsubscribe", sub->watchPath_->root_, sub->name_)) .ensure([=] { std::lock_guard guard(mutex_); subscriptionMap_.erase(sub->name_); }); } Subscription::Subscription( Executor* executor, SubscriptionCallback&& callback, const std::string& name, WatchPathPtr watchPath) : executor_(executor), callback_(std::move(callback)), name_(name), watchPath_(watchPath) {} WatchPath::WatchPath( const std::string& root, const Optional& relativePath) : root_(root), relativePath_(relativePath) {} } // namespace watchman watchman-4.9.0/cppclient/WatchmanClient.h000066400000000000000000000141531314236077500203750ustar00rootroot00000000000000/* Copyright 2016-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #pragma once /* A C++ client library for accessing Watchman. This builds on top of * WatchmanConnection to provide a C++ friendly subscription API and maybe * later other convienence functions. The entry point for this API is via * the WatchmanClient type. * * Example usage: * // Set-up an EventBase to execute I/O operations in. * folly::EventBase eb = ...; * * // Set-up a session with a subscription using chained future actions to: * // * Connect to the watchman server (and print out Watchman version) * // * Set-up a watch for /some/path * // * Subscribe to a query of name data for any updated files * WatchmanClient client(&eb); * auto subFuture = client.connect().then([](folly::dynamic&& response) { * std::cout << "Server version " << response["version"] << std::endl; * * return client.watch("/some/path").then([](WatchPathPtr watch) { * folly::dynamic query = folly::dynamic::object("fields", {"name"}); * * return client.subscribe(query, watch, &eb, [](folly::dynamic&& data) { * std::cout << "Got file update data: " << data << std::endl; * }); * }); * }); * * // Wait for chain of futures to complete or raise an exception. * auto subscription = subFuture.wait().value(); * * // Run a one-shot Watchman command and extract the output. * auto watchman_version_str = * client.run({"version"}).wait().value()["version"]; * * // ... do stuff ... * * // Unsubscribe from query above. Note this is not strictly needed if we're * // going to immediately shut down the connection anyway. * client.unsubscribe(subscription); * * // Close connection. Note again this is not strictly needed as * // deconstruction will also cause the connection to close. An explicit * // close() call may be needed for example to ensure disconnection happens * // before the EventBase is destroyed. * client.close(); */ #include "WatchmanConnection.h" #include #include #include #include #include #include #include #include #include #include namespace watchman { struct WatchmanClient; struct Subscription; struct WatchPath { friend WatchmanClient; WatchPath( const std::string& root, const folly::Optional& relativePath); private: const std::string root_; const folly::Optional relativePath_; }; using WatchPathPtr = std::shared_ptr; using SubscriptionCallback = std::function&&)>; using ErrorCallback = std::function; struct Subscription { friend WatchmanClient; Subscription( folly::Executor* executor, SubscriptionCallback&& callback, const std::string& name, WatchPathPtr watchPath); private: folly::Executor* executor_; SubscriptionCallback callback_; const std::string name_; WatchPathPtr watchPath_; bool active_{true}; }; using SubscriptionPtr = std::shared_ptr; struct WatchmanClient { explicit WatchmanClient( folly::EventBase* eventBase, folly::Optional&& sockPath = {}, folly::Executor* cpuExecutor = {}, ErrorCallback errCb = {}); /** * Establishes a connection, returning version and capability information per * https://facebook.github.io/watchman/docs/cmd/version.html#capabilities */ folly::Future connect( folly::dynamic versionArgs = folly::dynamic::object()( "required", folly::dynamic::array("relative_root"))); /** * Close the underlying connection to Watchman, including automatically * unsubscribing from all subscriptions. */ void close(); /** * Returns true if the underlying connection is closed or broken. */ bool isDead() { return conn_->isDead(); } /** * Execute a watchman command, yielding the command response. * cmd is typically an array. * See * https://facebook.github.io/watchman/docs/socket-interface.html#watchman-protocol * for the conventions. * * Errors, both at the transport layer and at the watchman protocol layer * (where the "error" field is set in the response) are captured in the Future * as exceptions. Watchman protocol response errors are represented by the * WatchmanResponseError type. */ folly::Future run(const folly::dynamic& cmd); /** * Create a watch for a path, automatically sharing scarce OS resources * between multiple watchers of the same (super-)tree. This should be the * preferred way to create a WatchPath instance unless you want to explicitly * avoid sharing Watchman tree configurations between independent watchers. * * See https://facebook.github.io/watchman/docs/cmd/watch-project.html for * details. */ folly::Future watch(folly::StringPiece path); /** * Establishes a subscription that will trigger callback (via your specified * executor) whenever matching files change. */ folly::Future subscribe( folly::dynamic query, WatchPathPtr path, folly::Executor* executor, SubscriptionCallback&& callback); /** * As-per subscribe above but automatically creates a WatchPath from a string. * This is probably what you want but see comments on watch() for details. */ folly::Future subscribe( const folly::dynamic& query, folly::StringPiece path, folly::Executor* executor, SubscriptionCallback&& callback); /** Cancels an existing subscription. */ folly::Future unsubscribe(SubscriptionPtr subscription); /** Intended for test only. */ WatchmanConnection& getConnection() { return *conn_; } private: void connectionCallback(folly::Try&& try_data); std::shared_ptr conn_; ErrorCallback errorCallback_; std::unordered_map subscriptionMap_; std::mutex mutex_; int nextSubID_{0}; }; } // namespace watchman watchman-4.9.0/cppclient/WatchmanConnection.cpp000066400000000000000000000264071314236077500216160ustar00rootroot00000000000000/* Copyright 2016-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "WatchmanConnection.h" #include #include #include #include #include namespace watchman { using namespace folly::bser; using namespace folly; // Ordered with the most likely kind first static const std::vector kUnilateralLabels{"subscription", "log"}; static const dynamic kError("error"); static const dynamic kCapabilities("capabilities"); // We'll just dispatch bser decodes and callbacks inline unless they // give us an alternative environment static InlineExecutor inlineExecutor; WatchmanConnection::WatchmanConnection( EventBase* eventBase, Optional&& sockPath, Optional&& callback, Executor* cpuExecutor) : eventBase_(eventBase), sockPath_(std::move(sockPath)), callback_(std::move(callback)), cpuExecutor_(cpuExecutor ? cpuExecutor : &inlineExecutor), versionCmd_(nullptr), bufQ_(IOBufQueue::cacheChainLength()) { CHECK_NOTNULL(eventBase); } WatchmanConnection::~WatchmanConnection() { close(); } folly::Future WatchmanConnection::getSockPath() { // Take explicit configuration first if (sockPath_.hasValue()) { return makeFuture(sockPath_.value()); } // Else use the environmental variable used by watchman to report // the active socket path auto var = getenv("WATCHMAN_SOCK"); if (var && *var) { return makeFuture(std::string(var)); } return via(cpuExecutor_, [] { // Else discover it from the CLI folly::Subprocess proc( {"watchman", "--output-encoding=bser", "get-sockname"}, folly::Subprocess::Options().pipeStdout().pipeStderr().usePath()); SCOPE_FAIL { // Always clean up to avoid Subprocess asserting on destruction proc.kill(); proc.wait(); }; auto out_pair = proc.communicate(); auto result = parseBser(out_pair.first); proc.waitChecked(); return result["sockname"].asString(); }); } Future WatchmanConnection::connect(folly::dynamic versionArgs) { if (!versionArgs.isObject()) { throw WatchmanError("versionArgs must be object"); } versionCmd_ = folly::dynamic::array("version", versionArgs); auto res = getSockPath().then( [shared_this=shared_from_this()] (std::string&& path) { shared_this->eventBase_->runInEventBaseThread([=] { folly::SocketAddress addr; addr.setFromPath(path); shared_this->sock_ = folly::AsyncSocket::newSocket(shared_this->eventBase_); shared_this->sock_->connect(shared_this.get(), addr); } ); return shared_this->connectPromise_.getFuture(); }); return res; } void WatchmanConnection::close() { if (closing_) { return; } closing_ = true; if (sock_) { eventBase_->runImmediatelyOrRunInEventBaseThreadAndWait([this] { sock_->close(); sock_.reset(); }); } failQueuedCommands( make_exception_wrapper( "WatchmanConnection::close() was called")); } // The convention for Watchman responses is that they represent // an error if they contain the "error" key. We want to report // those as exceptions, but it is easier to do that via a Try Try WatchmanConnection::watchmanResponseToTry(dynamic&& value) { auto error = value.get_ptr(kError); if (error) { return Try(make_exception_wrapper(value)); } return Try(std::move(value)); } void WatchmanConnection::connectSuccess() noexcept { try { sock_->setReadCB(this); sock_->setCloseOnExec(); run(versionCmd_).then( [shared_this=shared_from_this()] (dynamic&& result) { // If there is no "capabilities" key then the version of // watchman is too old; treat this as an error if (!result.get_ptr(kCapabilities)) { result["error"] = "This watchman server has no support for capabilities, " "please upgrade to the current stable version of watchman"; shared_this->connectPromise_.setTry( shared_this->watchmanResponseToTry(std::move(result))); return; } shared_this->connectPromise_.setValue(std::move(result)); } ).onError( [shared_this=shared_from_this()] (const folly::exception_wrapper& e) { shared_this->connectPromise_.setException(e); } ); } catch(const std::exception& e) { connectPromise_.setException( folly::exception_wrapper(std::current_exception(), e)); } catch(...) { connectPromise_.setException( folly::exception_wrapper(std::current_exception())); } } void WatchmanConnection::connectErr( const folly::AsyncSocketException& ex) noexcept { connectPromise_.setException(ex); } WatchmanConnection::QueuedCommand::QueuedCommand(const dynamic& command) : cmd(command) {} Future WatchmanConnection::run(const dynamic& command) noexcept { auto cmd = std::make_shared(command); if (broken_) { cmd->promise.setException(WatchmanError("The connection was broken")); return cmd->promise.getFuture(); } if (!sock_) { cmd->promise.setException(WatchmanError( "No socket (did you call connect() and check result for exceptions?)")); return cmd->promise.getFuture(); } bool shouldWrite; { std::lock_guard g(mutex_); // We only need to call sendCommand if we don't have a command in // progress; the completion handler will trigger it once we receive // the response shouldWrite = commandQ_.empty(); commandQ_.push_back(cmd); } if (shouldWrite) { eventBase_->runInEventBaseThread( [shared_this=shared_from_this()] { shared_this->sendCommand(); } ); } return cmd->promise.getFuture(); } // Generate a failure for all queued commands void WatchmanConnection::failQueuedCommands( const folly::exception_wrapper& ex) { std::lock_guard g(mutex_); auto q = commandQ_; commandQ_.clear(); broken_ = true; for (auto& cmd : q) { if (!cmd->promise.isFulfilled()) { cmd->promise.setException(ex); } } // If the user has explicitly closed the connection no need for callback if (callback_ && !closing_) { cpuExecutor_->add([shared_this=shared_from_this(), ex] { (*(shared_this->callback_))(folly::Try(ex)); }); } } // Sends the next eligible command to the Watchman service void WatchmanConnection::sendCommand(bool pop) { std::shared_ptr cmd; { std::lock_guard g(mutex_); if (pop) { // We finished processing this one, discard it and focus // on the next item, if any. commandQ_.pop_front(); } if (commandQ_.empty()) { return; } cmd = commandQ_.front(); } sock_->writeChain(this, toBserIOBuf(cmd->cmd, serialization_opts())); } void WatchmanConnection::popAndSendCommand() { sendCommand(/* pop = */ true); } // Called when AsyncSocket::writeChain completes void WatchmanConnection::writeSuccess() noexcept { // Don't care particularly } // Called when AsyncSocket::writeChain fails void WatchmanConnection::writeErr( size_t, const folly::AsyncSocketException& ex) noexcept { failQueuedCommands(ex); } // Called when AsyncSocket wants to give us data void WatchmanConnection::getReadBuffer(void** bufReturn, size_t* lenReturn) { std::lock_guard g(mutex_); const auto ret = bufQ_.preallocate(2048, 2048); *bufReturn = ret.first; *lenReturn = ret.second; } // Called when AsyncSocket gave us data void WatchmanConnection::readDataAvailable(size_t len) noexcept { { std::lock_guard g(mutex_); bufQ_.postallocate(len); } cpuExecutor_->add([shared_this=shared_from_this()] { shared_this->decodeNextResponse(); }); } std::unique_ptr WatchmanConnection::splitNextPdu() { std::lock_guard g(mutex_); if (!bufQ_.front()) { return nullptr; } // Do we have enough data to decode the next item? size_t pdu_len = 0; try { pdu_len = decodePduLength(bufQ_.front()); } catch (const std::out_of_range&) { // Don't have enough data yet return nullptr; } if (pdu_len > bufQ_.chainLength()) { // Don't have enough data yet return nullptr; } // Remove the PDU blob from the front of the chain return bufQ_.split(pdu_len); } // Try to peel off one or more PDU's from our buffer queue. // Decode each complete PDU from BSER -> dynamic and dispatch // either the associated QueuedCommand or to the callback_ for // unilateral responses. // This is executed via the cpuExecutor. We only allow one // thread to carry out the decoding at a time so that the callbacks // are triggered in the order that they are received. It is possible // for us to receive a large PDU followed by a small one and for the // small one to finish decoding before the large one, so we must // serialize the dispatching. void WatchmanConnection::decodeNextResponse() { { std::lock_guard g(mutex_); if (decoding_) { return; } decoding_ = true; } SCOPE_EXIT { std::lock_guard g(mutex_); decoding_ = false; }; while (true) { auto pdu = splitNextPdu(); if (!pdu) { return; } try { auto decoded = parseBser(pdu.get()); bool is_unilateral = false; // Check for a unilateral response for (const auto& k : kUnilateralLabels) { if (decoded.get_ptr(k)) { // This is a unilateral response if (callback_.hasValue()) { callback_.value()(watchmanResponseToTry(std::move(decoded))); is_unilateral = true; break; } // No callback; usage error :-/ failQueuedCommands( std::runtime_error("No unilateral callback has been installed")); return; } } if (is_unilateral) { continue; } // It's actually a command response; get the cmd so that we // can fulfil its promise std::shared_ptr cmd; { std::lock_guard g(mutex_); if (commandQ_.empty()) { failQueuedCommands( std::runtime_error("No commands have been queued")); return; } cmd = commandQ_.front(); } // Dispatch outside of the lock in case it tries to send another // command cmd->promise.setTry(watchmanResponseToTry(std::move(decoded))); // Now we're in a position to send the next queued command. // We remove it after dispatching the try above in case that // queued up more commands; we want to be the one thing that // is responsible for sending the next queued command here popAndSendCommand(); } catch (const std::exception& ex) { failQueuedCommands(ex); return; } } } // Called when AsyncSocket hits EOF void WatchmanConnection::readEOF() noexcept { failQueuedCommands( std::system_error(ENOTCONN, std::system_category(), "connection closed")); } // Called when AsyncSocket has a read error void WatchmanConnection::readErr( const folly::AsyncSocketException& ex) noexcept { failQueuedCommands(ex); } } // namespace watchman watchman-4.9.0/cppclient/WatchmanConnection.h000066400000000000000000000104311314236077500212510ustar00rootroot00000000000000/* Copyright 2016-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #pragma once #include #include #include #include #include #include #include #include #include #include namespace watchman { // General watchman error class WatchmanError : public std::runtime_error { public: using std::runtime_error::runtime_error; }; // Encapsulates an error reported by the protocol // what() returns the error message, getResponse() returns // the complete response packet class WatchmanResponseError : public WatchmanError { public: explicit WatchmanResponseError(const folly::dynamic& response); const folly::dynamic& getResponse() const; private: folly::dynamic response_; }; // Represents a raw connection to the watchman service class WatchmanConnection : folly::AsyncSocket::ConnectCallback, folly::AsyncReader::ReadCallback, folly::AsyncWriter::WriteCallback, public std::enable_shared_from_this { public: using Callback = std::function)>; explicit WatchmanConnection( folly::EventBase* eventBase, folly::Optional&& sockPath = {}, folly::Optional&& callback = {}, // You really should provide an executor that runs in a different // thread to avoid blocking your event base for large responses folly::Executor* cpuExecutor = nullptr); ~WatchmanConnection() override; // Initiate a connection. Yields the version information for the // service at a later time. You need to call connect once before // you can use the run() method. // versionArgs, if specified, must be an object value. It will // be passed as part of the extended version command and should // be used to list required capabilities for the session folly::Future connect( folly::dynamic versionArgs = folly::dynamic::object( "required", folly::dynamic::array("relative_root"))); // Issue a watchman command, yielding the results at a later time. // If the connection was terminated, will throw immediately folly::Future run(const folly::dynamic& command) noexcept; // Close the connection. All queued commands will be cancelled void close(); // Returns true if the connection has been closed or is in a broken state bool isDead() { return closing_ || broken_; } // This is intended for test only. void forceEOF() { readEOF(); } private: // Represents a command queued up by the run() function struct QueuedCommand { folly::dynamic cmd; folly::Promise promise; explicit QueuedCommand(const folly::dynamic& command); }; folly::Future getSockPath(); void failQueuedCommands(const folly::exception_wrapper& ex); void sendCommand(bool pop = false); void popAndSendCommand(); void decodeNextResponse(); folly::Try watchmanResponseToTry(folly::dynamic&& value); std::unique_ptr splitNextPdu(); // ConnectCallback void connectSuccess() noexcept override; void connectErr(const folly::AsyncSocketException& ex) noexcept override; // WriteCallback void writeSuccess() noexcept override; void writeErr( size_t bytesWritten, const folly::AsyncSocketException& ex) noexcept override; // ReadCallback void getReadBuffer(void** bufReturn, size_t* lenReturn) override; void readDataAvailable(size_t len) noexcept override; void readEOF() noexcept override; void readErr(const folly::AsyncSocketException& ex) noexcept override; folly::EventBase* eventBase_{}; folly::Optional sockPath_; folly::Optional callback_; folly::Executor* cpuExecutor_{}; folly::Promise connectPromise_; folly::dynamic versionCmd_; std::shared_ptr sock_; std::mutex mutex_; std::deque> commandQ_; folly::IOBufQueue bufQ_{folly::IOBufQueue::cacheChainLength()}; bool broken_{false}; bool closing_{false}; bool decoding_{false}; }; } // namespace watchman watchman-4.9.0/cppclient/WatchmanResponseError.cpp000066400000000000000000000007321314236077500223200ustar00rootroot00000000000000/* Copyright 2016-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "WatchmanConnection.h" namespace watchman { using namespace folly; static const dynamic kError("error"); WatchmanResponseError::WatchmanResponseError(const folly::dynamic& response) : WatchmanError(response[kError].c_str()), response_(response) {} const folly::dynamic& WatchmanResponseError::getResponse() const { return response_; } } // namespace watchman watchman-4.9.0/cppclient/watchmanclient.pc.in000066400000000000000000000003521314236077500212510ustar00rootroot00000000000000prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ Name: watchmanclient Description: Watchman C++ client library Requires: libfolly Version: 0 Libs: -L${libdir} -lwatchmanclient Cflags: -I${includedir} watchman-4.9.0/error_category.cpp000066400000000000000000000100411314236077500170640ustar00rootroot00000000000000/* Copyright 2016-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #include "watchman_error_category.h" using std::generic_category; namespace watchman { const char* error_category::name() const noexcept { return "watchman"; } std::string error_category::message(int) const { return "the programmer should not be trying to render an error message " "using watchman::error_category, please report this bug!"; } const std::error_category& error_category() { static class error_category cat; return cat; } const char* inotify_category::name() const noexcept { return "inotify"; } std::string inotify_category::message(int err) const { switch (err) { case EMFILE: return "The user limit on the total number of inotify " "instances has been reached; increase the " "fs.inotify.max_user_instances sysctl"; case ENFILE: return "The system limit on the total number of file descriptors " "has been reached"; case ENOMEM: return "Insufficient kernel memory is available"; case ENOSPC: return "The user limit on the total number of inotify watches " "was reached; increase the fs.inotify.max_user_watches sysctl"; default: return std::generic_category().message(err); } } const std::error_category& inotify_category() { static class inotify_category cat; return cat; } bool error_category::equivalent(const std::error_code& code, int condition) const noexcept { if (code.category() == inotify_category()) { // Treat inotify the same as the generic category for the purposes of // equivalence; it is the same namespace, we just provide different // renditions of the error messages. return equivalent( std::error_code(code.value(), std::generic_category()), condition); } switch (static_cast(condition)) { case error_code::no_such_file_or_directory: return #ifdef _WIN32 code == windows_error_code(ERROR_FILE_NOT_FOUND) || code == windows_error_code(ERROR_DEV_NOT_EXIST) || #endif code == make_error_code(std::errc::no_such_file_or_directory); case error_code::not_a_directory: return #ifdef _WIN32 code == windows_error_code(ERROR_PATH_NOT_FOUND) || code == windows_error_code(ERROR_DIRECTORY) || #endif code == make_error_code(std::errc::not_a_directory); case error_code::too_many_symbolic_link_levels: // POSIX says open with O_NOFOLLOW should set errno to ELOOP if the path // is a symlink. However, FreeBSD (which ironically originated O_NOFOLLOW) // sets it to EMLINK. So we check for either condition here. return code == make_error_code(std::errc::too_many_symbolic_link_levels) || code == make_error_code(std::errc::too_many_links); case error_code::permission_denied: return #ifdef _WIN32 code == windows_error_code(ERROR_ACCESS_DENIED) || code == windows_error_code(ERROR_INVALID_ACCESS) || code == windows_error_code(ERROR_WRITE_PROTECT) || code == windows_error_code(ERROR_SHARING_VIOLATION) || #endif code == make_error_code(std::errc::permission_denied) || code == make_error_code(std::errc::operation_not_permitted); case error_code::system_limits_exceeded: return #ifdef _WIN32 code == windows_error_code(ERROR_TOO_MANY_OPEN_FILES) || #endif code == make_error_code(std::errc::too_many_files_open_in_system) || code == make_error_code(std::errc::too_many_files_open); case error_code::timed_out: return #ifdef _WIN32 code == windows_error_code(ERROR_TIMEOUT) || code == windows_error_code(WAIT_TIMEOUT) || #endif code == make_error_code(std::errc::timed_out); case error_code::not_a_symlink: return #ifdef _WIN32 code == windows_error_code(ERROR_NOT_A_REPARSE_POINT) || #endif code == make_error_code(std::errc::invalid_argument); default: return false; } } } watchman-4.9.0/expflags.cpp000066400000000000000000000016001314236077500156500ustar00rootroot00000000000000/* Copyright 2015-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" /* Given a flag map in `fmap`, and a set of flags in `flags`, * expand the flag bits that are set in `flags` into the corresponding * labels in `fmap` and print the result into the caller provided * buffer `buf` of size `len` bytes. */ void w_expand_flags(const struct flag_map *fmap, uint32_t flags, char *buf, size_t len) { bool first = true; *buf = '\0'; while (fmap->label && len) { if ((flags & fmap->value) == fmap->value) { size_t space; if (!first) { *buf = ' '; buf++; len--; } else { first = false; } space = std::min(len, strlen(fmap->label) + 1); memcpy(buf, fmap->label, space); len -= space - 1; buf += space - 1; } fmap++; } } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/facebook/000077500000000000000000000000001314236077500151075ustar00rootroot00000000000000watchman-4.9.0/facebook/TARGETS000066400000000000000000000016321314236077500161450ustar00rootroot00000000000000python_binary( name = "watchman-diag", srcs = {"watchman-diag": "watchman_diag.py"}, base_module = "", main_module = "watchman_diag", py_version = "<3", deps = ["@/watchman/python/pywatchman:pywatchman"], ) python_binary( name = "runtests", srcs = ["runtests_wrapper.py"], main_module = "watchman.facebook.runtests_wrapper", py_version = "<3", deps = [ "@/libfb/py:pathutils", "@/watchman:runtests", "@/watchman/python/pywatchman:pywatchman", ], ) python_binary( name = "runtests-py3", srcs = ["runtests_wrapper.py"], main_module = "watchman.facebook.runtests_wrapper", py_version = ">=3.5", deps = [ "@/eden/cli:cli", "@/eden/fs/service:edenfs", "@/eden/integration/lib:lib", "@/libfb/py:pathutils", "@/watchman:runtests-py3", "@/watchman/python/pywatchman:pywatchman", ], ) watchman-4.9.0/fstype.cpp000066400000000000000000000045611314236077500153620ustar00rootroot00000000000000/* Copyright 2014-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #ifdef HAVE_SYS_VFS_H # include #endif #ifdef HAVE_SYS_STATVFS_H # include #endif #ifdef HAVE_SYS_PARAM_H # include #endif #ifdef HAVE_SYS_MOUNT_H # include #endif #ifdef __linux__ #include #endif #include "FileDescriptor.h" // The primary purpose of checking the filesystem type is to prevent // watching filesystems that are known to be problematic, such as // network or remote mounted filesystems. As such, we don't strictly // need to have a fully comprehensive mapping of the underlying filesystem // type codes to names, just the known problematic types w_string w_fstype(const char *path) { #ifdef __linux__ struct statfs sfs; const char *name = "unknown"; if (statfs(path, &sfs) == 0) { switch (sfs.f_type) { #ifdef CIFS_MAGIC_NUMBER case CIFS_MAGIC_NUMBER: name = "cifs"; break; #endif #ifdef NFS_SUPER_MAGIC case NFS_SUPER_MAGIC: name = "nfs"; break; #endif #ifdef SMB_SUPER_MAGIC case SMB_SUPER_MAGIC: name = "smb"; break; #endif default: name = "unknown"; } } return w_string(name, W_STRING_UNICODE); #elif STATVFS_HAS_FSTYPE_AS_STRING struct statvfs sfs; if (statvfs(path, &sfs) == 0) { #ifdef HAVE_STRUCT_STATVFS_F_FSTYPENAME return w_string(sfs.f_fstypename, W_STRING_UNICODE); #endif #ifdef HAVE_STRUCT_STATVFS_F_BASETYPE return w_string(sfs.f_basetype, W_STRING_UNICODE); #endif } #elif HAVE_STATFS struct statfs sfs; if (statfs(path, &sfs) == 0) { return w_string(sfs.f_fstypename, W_STRING_UNICODE); } #endif #ifdef _WIN32 auto wpath = w_string_piece(path).asWideUNC(); WCHAR fstype[MAX_PATH + 1]; watchman::FileDescriptor h(intptr_t(CreateFileW( wpath.c_str(), GENERIC_READ, FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, nullptr))); if (h && GetVolumeInformationByHandleW( (HANDLE)h.handle(), nullptr, 0, 0, 0, 0, fstype, MAX_PATH + 1)) { return w_string(fstype, wcslen(fstype)); } return w_string("unknown", W_STRING_UNICODE); #else unused_parameter(path); return w_string("unknown", W_STRING_UNICODE); #endif } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/hash.cpp000066400000000000000000000201641314236077500147700ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" // By Bob Jenkins, 2006. bob_jenkins@burtleburtle.net. You may use this // code any way you wish, private, educational, or commercial. It's free. // Origin: http://www.burtleburtle.net/bob/c/lookup3.c #if HAVE_SYS_PARAM_H #include /* attempt to define endianness */ #endif #ifdef __linux__ # include /* attempt to define endianness */ #endif /* * My best guess at if you are big-endian or little-endian. This may * need adjustment. */ #if (defined(__BYTE_ORDER) && defined(__LITTLE_ENDIAN) && \ __BYTE_ORDER == __LITTLE_ENDIAN) || \ (defined(i386) || defined(__i386__) || defined(__i486__) || \ defined(__i586__) || defined(__i686__) || defined(vax) || defined(MIPSEL)) # define HASH_LITTLE_ENDIAN 1 # define HASH_BIG_ENDIAN 0 #elif (defined(__BYTE_ORDER) && defined(__BIG_ENDIAN) && \ __BYTE_ORDER == __BIG_ENDIAN) || \ (defined(sparc) || defined(POWERPC) || defined(mc68000) || defined(sel)) # define HASH_LITTLE_ENDIAN 0 # define HASH_BIG_ENDIAN 1 #else # define HASH_LITTLE_ENDIAN 0 # define HASH_BIG_ENDIAN 0 #endif #define mix(a,b,c) \ { \ a -= c; a ^= rot(c, 4); c += b; \ b -= a; b ^= rot(a, 6); a += c; \ c -= b; c ^= rot(b, 8); b += a; \ a -= c; a ^= rot(c,16); c += b; \ b -= a; b ^= rot(a,19); a += c; \ c -= b; c ^= rot(b, 4); b += a; \ } #define rot(x,k) (((x)<<(k)) | ((x)>>(32-(k)))) #define final(a,b,c) \ { \ c ^= b; c -= rot(b,14); \ a ^= c; a -= rot(c,11); \ b ^= a; b -= rot(a,25); \ c ^= b; c -= rot(b,16); \ a ^= c; a -= rot(c,4); \ b ^= a; b -= rot(a,14); \ c ^= b; c -= rot(b,24); \ } #if HAVE_VALGRIND_VALGRIND_H # include # define VALGRIND 1 static int under_valgrind = -1; static inline bool running_on_valgrind(void) { if (under_valgrind == -1) { under_valgrind = RUNNING_ON_VALGRIND; } return under_valgrind != 0; } #else # define running_on_valgrind() 0 #endif uint32_t w_hash_bytes(const void *key, size_t length, uint32_t initval) { uint32_t a,b,c; /* internal state */ union { const void *ptr; size_t i; } u; /* needed for Mac Powerbook G4 */ /* Set up the internal state */ a = b = c = 0xdeadbeef + ((uint32_t)length) + initval; u.ptr = key; if (HASH_LITTLE_ENDIAN && ((u.i & 0x3) == 0)) { const uint32_t *k = (const uint32_t *)key; /* read 32-bit chunks */ const uint8_t *k8; /*------ all but last block: aligned reads and affect 32 bits of (a,b,c) */ while (length > 12) { a += k[0]; b += k[1]; c += k[2]; mix(a,b,c); length -= 12; k += 3; } /*----------------------------- handle the last (probably partial) block */ /* * "k[2]&0xffffff" actually reads beyond the end of the string, but * then masks off the part it's not allowed to read. Because the * string is aligned, the masked-off tail is in the same word as the * rest of the string. Every machine with memory protection I've seen * does it on word boundaries, so is OK with this. But VALGRIND and ASAN * will still catch it and complain. The masking trick does make the hash * noticeably faster for short strings (like English words). */ if (!WATCHMAN_ASAN && !running_on_valgrind()) { switch(length) { case 12: c+=k[2]; b+=k[1]; a+=k[0]; break; case 11: c+=k[2]&0xffffff; b+=k[1]; a+=k[0]; break; case 10: c+=k[2]&0xffff; b+=k[1]; a+=k[0]; break; case 9 : c+=k[2]&0xff; b+=k[1]; a+=k[0]; break; case 8 : b+=k[1]; a+=k[0]; break; case 7 : b+=k[1]&0xffffff; a+=k[0]; break; case 6 : b+=k[1]&0xffff; a+=k[0]; break; case 5 : b+=k[1]&0xff; a+=k[0]; break; case 4 : a+=k[0]; break; case 3 : a+=k[0]&0xffffff; break; case 2 : a+=k[0]&0xffff; break; case 1 : a+=k[0]&0xff; break; case 0 : return c; /* zero length strings require no mixing */ } } else { /* make valgrind and ASAN happy */ k8 = (const uint8_t *)k; switch(length) { case 12: c+=k[2]; b+=k[1]; a+=k[0]; break; case 11: c+=((uint32_t)k8[10])<<16; /* fall through */ case 10: c+=((uint32_t)k8[9])<<8; /* fall through */ case 9 : c+=k8[8]; /* fall through */ case 8 : b+=k[1]; a+=k[0]; break; case 7 : b+=((uint32_t)k8[6])<<16; /* fall through */ case 6 : b+=((uint32_t)k8[5])<<8; /* fall through */ case 5 : b+=k8[4]; /* fall through */ case 4 : a+=k[0]; break; case 3 : a+=((uint32_t)k8[2])<<16; /* fall through */ case 2 : a+=((uint32_t)k8[1])<<8; /* fall through */ case 1 : a+=k8[0]; break; case 0 : return c; } } } else if (HASH_LITTLE_ENDIAN && ((u.i & 0x1) == 0)) { const uint16_t *k = (const uint16_t *)key; /* read 16-bit chunks */ const uint8_t *k8; /*--------------- all but last block: aligned reads and different mixing */ while (length > 12) { a += k[0] + (((uint32_t)k[1])<<16); b += k[2] + (((uint32_t)k[3])<<16); c += k[4] + (((uint32_t)k[5])<<16); mix(a,b,c); length -= 12; k += 6; } /*----------------------------- handle the last (probably partial) block */ k8 = (const uint8_t *)k; switch(length) { case 12: c+=k[4]+(((uint32_t)k[5])<<16); b+=k[2]+(((uint32_t)k[3])<<16); a+=k[0]+(((uint32_t)k[1])<<16); break; case 11: c+=((uint32_t)k8[10])<<16; /* fall through */ case 10: c+=k[4]; b+=k[2]+(((uint32_t)k[3])<<16); a+=k[0]+(((uint32_t)k[1])<<16); break; case 9 : c+=k8[8]; /* fall through */ case 8 : b+=k[2]+(((uint32_t)k[3])<<16); a+=k[0]+(((uint32_t)k[1])<<16); break; case 7 : b+=((uint32_t)k8[6])<<16; /* fall through */ case 6 : b+=k[2]; a+=k[0]+(((uint32_t)k[1])<<16); break; case 5 : b+=k8[4]; /* fall through */ case 4 : a+=k[0]+(((uint32_t)k[1])<<16); break; case 3 : a+=((uint32_t)k8[2])<<16; /* fall through */ case 2 : a+=k[0]; break; case 1 : a+=k8[0]; break; case 0 : return c; /* zero length requires no mixing */ } } else { /* need to read the key one byte at a time */ const uint8_t *k = (const uint8_t *)key; /*--------------- all but the last block: affect some 32 bits of (a,b,c) */ while (length > 12) { a += k[0]; a += ((uint32_t)k[1])<<8; a += ((uint32_t)k[2])<<16; a += ((uint32_t)k[3])<<24; b += k[4]; b += ((uint32_t)k[5])<<8; b += ((uint32_t)k[6])<<16; b += ((uint32_t)k[7])<<24; c += k[8]; c += ((uint32_t)k[9])<<8; c += ((uint32_t)k[10])<<16; c += ((uint32_t)k[11])<<24; mix(a,b,c); length -= 12; k += 12; } /*-------------------------------- last block: affect all 32 bits of (c) */ switch(length) /* all the case statements fall through */ { case 12: c += ((uint32_t)k[11]) << 24; /* fall through */ case 11: c += ((uint32_t)k[10]) << 16; /* fall through */ case 10: c += ((uint32_t)k[9]) << 8; /* fall through */ case 9: c += k[8]; /* fall through */ case 8: b += ((uint32_t)k[7]) << 24; /* fall through */ case 7: b += ((uint32_t)k[6]) << 16; /* fall through */ case 6: b += ((uint32_t)k[5]) << 8; /* fall through */ case 5: b += k[4]; /* fall through */ case 4: a += ((uint32_t)k[3]) << 24; /* fall through */ case 3: a += ((uint32_t)k[2]) << 16; /* fall through */ case 2: a += ((uint32_t)k[1]) << 8; /* fall through */ case 1 : a+=k[0]; break; case 0 : return c; } } final(a,b,c); return c; } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/ignore.cpp000066400000000000000000000051711314236077500153310ustar00rootroot00000000000000/* Copyright 2016-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" // The path and everything below it is ignored. #define FULL_IGNORE 0x1 // The grand-children of the path are ignored, but not the path // or its direct children. #define VCS_IGNORE 0x2 void watchman_ignore::add(const w_string& path, bool is_vcs_ignore) { (is_vcs_ignore ? ignore_vcs : ignore_dirs).insert(path); tree.insert(path, is_vcs_ignore ? VCS_IGNORE : FULL_IGNORE); if (!is_vcs_ignore) { dirs_vec.push_back(path); } } bool watchman_ignore::isIgnored(const char* path, uint32_t pathlen) const { const char *skip_prefix; uint32_t len; auto leaf = tree.longestMatch((const unsigned char*)path, (int)pathlen); if (!leaf) { // No entry -> not ignored. return false; } if (pathlen < leaf->key.size()) { // We wanted "buil" but matched "build" return false; } if (pathlen == leaf->key.size()) { // Exact match. This is an ignore if we are in FULL_IGNORE, // but not in VCS_IGNORE mode. return leaf->value == FULL_IGNORE ? true : false; } // Our input string was longer than the leaf key string. // We need to ensure that we observe a directory separator at the // character after the common prefix, otherwise we may be falsely // matching a sibling entry. skip_prefix = path + leaf->key.size(); len = pathlen - leaf->key.size(); if (!is_slash(*skip_prefix)) { // we wanted "foo/bar" but we matched something like "food" // this is not an ignore situation. return false; } if (leaf->value == FULL_IGNORE) { // Definitely ignoring this portion of the tree return true; } // we need to apply vcs_ignore style logic to determine if we are ignoring // this path. This devolves to: "is there a '/' character after the end of // the leaf key prefix?" if (pathlen <= leaf->key.size()) { // There can't be a slash after this portion of the tree, therefore // this is not ignored. return false; } // Skip over the '/' skip_prefix++; len--; #ifndef _WIN32 // If we find a '/' from this point, we are ignoring this path. return memchr(skip_prefix, '/', len) != nullptr; #else // On windows, both '/' and '\' are possible. while (len > 0) { if (is_slash(*skip_prefix)) { return true; } skip_prefix++; len--; } return false; #endif } bool watchman_ignore::isIgnoreVCS(const w_string& path) const { return ignore_vcs.find(path) != ignore_vcs.end(); } bool watchman_ignore::isIgnoreDir(const w_string& path) const { return ignore_dirs.find(path) != ignore_dirs.end(); } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/ioprio.cpp000066400000000000000000000024531314236077500153470ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #ifdef __linux__ #include /* There's no easily included header for this, so we recreate these here */ enum { IOPRIO_CLASS_NONE, IOPRIO_CLASS_RT, IOPRIO_CLASS_BE, IOPRIO_CLASS_IDLE, }; enum { IOPRIO_WHO_PROCESS = 1, IOPRIO_WHO_PGRP, IOPRIO_WHO_USER, }; #define IOPRIO_CLASS_SHIFT (13) #define IOPRIO_PRIO_MASK ((1UL << IOPRIO_CLASS_SHIFT) - 1) #define IOPRIO_PRIO_VALUE(class, data) (((class) << IOPRIO_CLASS_SHIFT) | data) #endif #ifdef __APPLE__ #include #endif static void adjust_ioprio(bool low) { #if defined(__APPLE__) && defined(IOPOL_STANDARD) setiopolicy_np(IOPOL_TYPE_DISK, IOPOL_SCOPE_THREAD, low ? IOPOL_THROTTLE : IOPOL_STANDARD); #endif #ifdef __linux__ syscall(SYS_ioprio_set, IOPRIO_WHO_PROCESS, 0, low ? IOPRIO_PRIO_VALUE(IOPRIO_CLASS_IDLE, 0) : IOPRIO_PRIO_VALUE(IOPRIO_CLASS_BE, 4)); #endif #ifdef _WIN32 SetThreadPriority(GetCurrentThread(), low ? THREAD_MODE_BACKGROUND_BEGIN : THREAD_MODE_BACKGROUND_END); #endif unused_parameter(low); } void w_ioprio_set_low(void) { adjust_ioprio(true); } void w_ioprio_set_normal(void) { adjust_ioprio(false); } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/java/000077500000000000000000000000001314236077500142575ustar00rootroot00000000000000watchman-4.9.0/java/.buckconfig000066400000000000000000000011721314236077500163730ustar00rootroot00000000000000[java] src_roots = java, test source_level = 6 target_level = 6 jar_spool_mode = direct_to_jar [project] ide = intellij allow_symlinks = forbid watchman_query_timeout_ms = 1000 initial_targets = //watchman ignore = .git, .buckd, .idea, buck-out, buck-cache, \ **/.DS_Store, **/**.orig, \ *___jb_bak___*, \ *___jb_tmp___*, \ *___jb_old___*, \ **/*.swp, \ **/*~ parallel_parsing = true [build] thread_core_ratio = 0.75 thread_core_ratio_min_threads = 1 [cache] mode = dir dir = buck-cache dir_max_size = 100MB [test] timeout = 60000 watchman-4.9.0/java/.buckversion000066400000000000000000000000511314236077500166060ustar00rootroot000000000000004239361e3bad2b283afd41a4dae07eb6b7f66f15 watchman-4.9.0/java/.nobuckcheck000066400000000000000000000000001314236077500165250ustar00rootroot00000000000000watchman-4.9.0/java/BUCK000066400000000000000000000017471314236077500147370ustar00rootroot00000000000000java_binary( name = 'watchman', deps = [ ':watchman-lib', ] ) java_library( name = 'watchman-lib', srcs = glob(['src/**/*.java']), source = '7', target = '7', visibility = ['PUBLIC'], deps = [ '//third-party/guava:guava', '//third-party/immutables:value', '//third-party/jna:jna', '//third-party/jna:jna-platform', '//third-party/jsr-305:jsr-305', '//third-party/nuprocess:nuprocess', ], annotation_processors = [ 'org.immutables.value.processor.Processor' ], annotation_processor_deps = [ '//third-party/guava:guava', '//third-party/immutables:generator', '//third-party/immutables:value-processor', ], tests = [':watchman-tests'], ) java_test( name = 'watchman-tests', srcs = glob(['test/**/*.java']), source = '7', target = '7', deps = [ ':watchman-lib', '//third-party/guava:guava', '//third-party/hamcrest:hamcrest-2', '//third-party/junit:junit', '//third-party/mockito:mockito', ], ) watchman-4.9.0/java/LICENSE000066400000000000000000000236761314236077500153020ustar00rootroot00000000000000 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS watchman-4.9.0/java/README.md000066400000000000000000000005731314236077500155430ustar00rootroot00000000000000Watchman Java Library ==== This provides Java bindings to the Watchman service. Building === Make sure that you have [buck](https://buckbuild.com/) installed. In this folder, run: ``` buck fetch :watchman buck build :watchman ``` The resulting JAR file is found in: `buck-out/gen/watchman.jar' To run the tests: ``` buck fetch :watchman-tests buck test :watchman-lib ``` watchman-4.9.0/java/pom.xml000066400000000000000000000050351314236077500155770ustar00rootroot00000000000000 4.0.0 com.facebook.watchman watchman-lib jar 1.0-SNAPSHOT Watchman java client http://maven.apache.org src test maven-compiler-plugin 1.7 1.7 junit junit 4.12 test org.hamcrest hamcrest-junit 2.0.0.0 test org.mockito mockito-core 1.9.5 test com.google.guava guava 19.0 net.java.dev.jna jna 4.2.0 net.java.dev.jna jna-platform 4.2.0 org.immutables value 2.1.5 com.google.code.findbugs jsr305 3.0.1 com.zaxxer nuprocess 1.1.0 watchman-4.9.0/java/src/000077500000000000000000000000001314236077500150465ustar00rootroot00000000000000watchman-4.9.0/java/src/com/000077500000000000000000000000001314236077500156245ustar00rootroot00000000000000watchman-4.9.0/java/src/com/facebook/000077500000000000000000000000001314236077500173755ustar00rootroot00000000000000watchman-4.9.0/java/src/com/facebook/watchman/000077500000000000000000000000001314236077500211775ustar00rootroot00000000000000watchman-4.9.0/java/src/com/facebook/watchman/Callback.java000066400000000000000000000013761314236077500235450ustar00rootroot00000000000000/* * Copyright 2004-present Facebook. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. You may obtain * a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ package com.facebook.watchman; import java.util.Map; public interface Callback { void call(Map message) throws Exception; } watchman-4.9.0/java/src/com/facebook/watchman/CapabilitiesStrategy.java000066400000000000000000000035501314236077500261610ustar00rootroot00000000000000/* * Copyright 2004-present Facebook. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. You may obtain * a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ package com.facebook.watchman; import java.util.Collections; import java.util.Map; import java.util.concurrent.ExecutionException; import com.google.common.util.concurrent.ListenableFuture; /** * Called a "strategy" because we might have different ways of testing for capabilities as versions * change. Should become an interface once we get different implementations available. */ public class CapabilitiesStrategy { private final static String CMD_WATCH_PROJECT = "cmd-watch-project"; private final static String CAPABILITIES = "capabilities"; /** * Tests if a client supports the "watch-project" command or not. */ public static boolean checkWatchProjectCapability(WatchmanClient client) { ListenableFuture> future = client.version( Collections.emptyList(), Collections.singletonList(CMD_WATCH_PROJECT)); try { Map response = future.get(); if (response.containsKey(CAPABILITIES)) { Map capabilities = (Map) response.get(CAPABILITIES); return Boolean.TRUE.equals(capabilities.get(CMD_WATCH_PROJECT)); } return false; } catch (InterruptedException | ExecutionException e) { return false; } } } watchman-4.9.0/java/src/com/facebook/watchman/Deserializer.java000066400000000000000000000020201314236077500244560ustar00rootroot00000000000000/* * Copyright 2004-present Facebook. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. You may obtain * a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ package com.facebook.watchman; import java.io.IOException; import java.io.InputStream; import java.util.Map; public interface Deserializer { /** * Reads the next object from the InputSteram, blocking until it becomes available. * @param stream the stream to read from * @return a deserialized object, read from the stream */ Map deserialize(InputStream stream) throws IOException; } watchman-4.9.0/java/src/com/facebook/watchman/WatchmanClient.java000066400000000000000000000037601314236077500247510ustar00rootroot00000000000000/* * Copyright 2004-present Facebook. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. You may obtain * a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ package com.facebook.watchman; import java.io.IOException; import java.nio.file.Path; import java.util.List; import java.util.Map; import java.util.Objects; import com.google.common.util.concurrent.ListenableFuture; import org.immutables.value.Value; public interface WatchmanClient { ListenableFuture> clock(Path path); ListenableFuture> clock(Path path, Number syncTimeout); ListenableFuture> watch(Path path); ListenableFuture> watchDel(Path path); ListenableFuture unsubscribe(SubscriptionDescriptor descriptor); ListenableFuture subscribe( Path path, Map query, Callback listener); ListenableFuture> version(); ListenableFuture> version( List optionalCapabilities, List requiredCapabilities); ListenableFuture> run(List command); ListenableFuture unsubscribeAll(); void close() throws IOException; void start(); @Value.Immutable @Value.Style(visibility = Value.Style.ImplementationVisibility.PRIVATE) abstract class SubscriptionDescriptor { public abstract String root(); public abstract String name(); @Override public int hashCode() { return Objects.hash(root(), name()); } } } watchman-4.9.0/java/src/com/facebook/watchman/WatchmanClientImpl.java000066400000000000000000000207271314236077500255750ustar00rootroot00000000000000/* * Copyright 2004-present Facebook. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. You may obtain * a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ package com.facebook.watchman; import javax.annotation.Nullable; import java.io.IOException; import java.io.OutputStream; import java.nio.file.Path; import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Map; import java.util.concurrent.Callable; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicInteger; import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Function; import com.google.common.base.Optional; import com.google.common.base.Predicates; import com.google.common.base.Supplier; import com.google.common.base.Suppliers; import com.google.common.collect.Collections2; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; import static com.google.common.base.Preconditions.checkNotNull; public class WatchmanClientImpl implements WatchmanClient { private static final String SUBSCRIPTION_KEY = "subscription"; private static final Collection UNILATERAL_LABELS = Arrays.asList( SUBSCRIPTION_KEY); private final WatchmanConnection connection; private final ConcurrentHashMap subscriptions = new ConcurrentHashMap(); private final AtomicInteger subscriptionIndex = new AtomicInteger(0); private final Supplier supportsWatchProject; public WatchmanClientImpl(WatchmanTransport transport) throws IOException { connection = new WatchmanConnection( transport, Optional.of(UNILATERAL_LABELS), Optional.of(new UnilateralCallbackImpl())); supportsWatchProject = Suppliers.memoize(new Supplier() { @Override public Boolean get() { return CapabilitiesStrategy.checkWatchProjectCapability(WatchmanClientImpl.this); } }); } @VisibleForTesting WatchmanClientImpl( Callable> incomingMessageGetter, OutputStream outgoingMessageStream, Supplier supportsWatchProject) { connection = new WatchmanConnection( incomingMessageGetter, outgoingMessageStream, Optional.of(UNILATERAL_LABELS), Optional.of(new UnilateralCallbackImpl())); this.supportsWatchProject = supportsWatchProject; } @Override public ListenableFuture> clock(Path path) { List request = ImmutableList.of( "clock", path.toAbsolutePath().toString()); return connection.run(request); } @Override public ListenableFuture> clock(Path path, Number syncTimeout) { List request = ImmutableList.of( "clock", path.toAbsolutePath().toString(), ImmutableMap.of("sync_timeout", syncTimeout)); return connection.run(request); } @Override public ListenableFuture> watch(Path path) { if (!supportsWatchProject.get()) { return Futures.immediateFailedFuture( new WatchmanException("Please upgrade Watchman to the latest version in order to use " + "the watching functionality")); } List request = ImmutableList.of( "watch-project", path.toAbsolutePath().toString() ); return connection.run(request); } @Override public ListenableFuture> watchDel(Path path) { List request = ImmutableList.of( "watch-del", path.toAbsolutePath().toString()); return connection.run(request); } @Override public ListenableFuture unsubscribe(final SubscriptionDescriptor descriptor) { if (! subscriptions.containsKey(descriptor)) { return Futures.immediateFuture(false); } List request = ImmutableList.of( "unsubscribe", descriptor.root(), descriptor.name()); return Futures.transform(connection.run(request), new Function, Boolean>() { @Nullable @Override public Boolean apply(@Nullable Map input) { checkNotNull(input); boolean wasDeleted = (Boolean) input.get("deleted"); if (wasDeleted) { if (subscriptions.remove(descriptor) == null) { return false; } } return wasDeleted; } }); } @Override public ListenableFuture subscribe( Path path, Map query, final Callback listener) { final String subscriptionId = "sub-" + subscriptionIndex.getAndAdd(1); final String root = path.toAbsolutePath().toString(); final SubscriptionDescriptor result = new SubscriptionDescriptorBuilder() .name(subscriptionId) .root(root) .build(); subscriptions.put(result, listener); List request = ImmutableList.of( "subscribe", root, subscriptionId, query == null ? Collections.emptyMap() : query); return Futures.transform( connection.run(request), new Function, SubscriptionDescriptor>() { @Nullable @Override public SubscriptionDescriptor apply(@Nullable Map input) { // TODO remove subscription descriptor from `subscriptions` if we got an error from wman return result; } }); } @Override public ListenableFuture> version() { List request = ImmutableList.of("version"); return connection.run(request); } @Override public ListenableFuture> version( List optionalCapabilities, List requiredCapabilities) { Map capabilities = ImmutableMap.of( "optional", optionalCapabilities, "required", requiredCapabilities); List request = ImmutableList.of("version", capabilities); return connection.run(request); } @Override public ListenableFuture> run(List command) { return connection.run(command); } /** * unsubscribes from all the subscriptions; convenience method */ @Override public ListenableFuture unsubscribeAll() { Collection> unsubscribeAll = Collections2.transform( subscriptions.keySet(), new Function>() { @Nullable @Override public ListenableFuture apply(@Nullable SubscriptionDescriptor input) { return unsubscribe(input); } }); return Futures.transform( Futures.allAsList(unsubscribeAll), new Function, Boolean>() { @Nullable @Override public Boolean apply(@Nullable List input) { return !Collections2.filter(input, Predicates.equalTo(false)).isEmpty(); } }); } /** * closes the WatchmanConnection */ @Override public void close() throws IOException { connection.close(); } @Override public void start() { connection.start(); } private class UnilateralCallbackImpl implements Callback { @Override public void call(Map message) throws Exception { if (message.containsKey(SUBSCRIPTION_KEY)) { String subscriptionId = (String) message.get("subscription"); String root = (String) message.get("root"); SubscriptionDescriptor subscription = new SubscriptionDescriptorBuilder() .name(subscriptionId) .root(root) .build(); Callback listener = subscriptions.get(subscription); if (listener == null) { // TODO log error?! return; } listener.call(message); } } } } watchman-4.9.0/java/src/com/facebook/watchman/WatchmanConnection.java000066400000000000000000000256001314236077500256270ustar00rootroot00000000000000/* * Copyright 2004-present Facebook. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. You may obtain * a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ package com.facebook.watchman; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Collection; import java.util.Map; import java.util.concurrent.BlockingQueue; import java.util.concurrent.Callable; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicReference; import com.facebook.watchman.bser.BserDeserializer; import com.facebook.watchman.bser.BserSerializer; import com.google.common.base.Optional; import com.google.common.collect.Queues; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.ListeningExecutorService; import com.google.common.util.concurrent.MoreExecutors; import com.google.common.util.concurrent.SettableFuture; import com.google.common.util.concurrent.ThreadFactoryBuilder; import org.immutables.value.Value; public class WatchmanConnection { private final ListeningExecutorService outgoingMessageExecutor; private final ExecutorService incomingMessageExecutor; private final Callable> incomingMessageGetter; private final Optional transport; private final OutputStream outgoingMessageStream; private final Optional unilateralCallback; private final Optional> unilateralLabels; private final BlockingQueue commandQueue; private final AtomicBoolean processing; private final BserSerializer bserSerializer; private final Optional commandListener; public WatchmanConnection(WatchmanTransport transport) throws IOException { this( incomingMessageGetterFromTransport(transport), transport.getOutputStream(), Optional.>absent(), Optional.absent(), Optional.absent(), Optional.of(transport)); } public WatchmanConnection( final WatchmanTransport transport, Optional> unilateralLabels, Optional unilateralCallback) throws IOException { this( incomingMessageGetterFromTransport(transport), transport.getOutputStream(), unilateralLabels, unilateralCallback, Optional.absent(), Optional.of(transport)); } public WatchmanConnection( final WatchmanTransport transport, Optional> unilateralLabels, Optional unilateralCallback, Optional commandListener) throws IOException { this( incomingMessageGetterFromTransport(transport), transport.getOutputStream(), unilateralLabels, unilateralCallback, commandListener, Optional.of(transport)); } public WatchmanConnection( Callable> incomingMessageGetter, OutputStream outgoingMessageStream) { this( incomingMessageGetter, outgoingMessageStream, Optional.>absent(), Optional.absent(), Optional.absent(), Optional.absent()); } public WatchmanConnection( Callable> incomingMessageGetter, OutputStream outgoingMessageStream, Optional commandListener) { this( incomingMessageGetter, outgoingMessageStream, Optional.>absent(), Optional.absent(), commandListener, Optional.absent()); } public WatchmanConnection( Callable> incomingMessageGetter, OutputStream outgoingMessageStream, Optional> unilateralLabels, Optional unilateralCallback) { this( incomingMessageGetter, outgoingMessageStream, unilateralLabels, unilateralCallback, Optional.absent(), Optional.absent()); } public WatchmanConnection( Callable> incomingMessageGetter, OutputStream outgoingMessageStream, Optional> unilateralLabels, Optional unilateralCallback, Optional commandListener, Optional optionalTransport) { this.incomingMessageGetter = incomingMessageGetter; this.outgoingMessageStream = outgoingMessageStream; this.unilateralLabels = unilateralLabels; this.unilateralCallback = unilateralCallback; this.transport = optionalTransport; this.processing = new AtomicBoolean(true); this.outgoingMessageExecutor = MoreExecutors.listeningDecorator( Executors.newSingleThreadExecutor( new ThreadFactoryBuilder() .setNameFormat("[watchman] Outgoing Message Executor") .build())); this.commandQueue = Queues.newLinkedBlockingDeque(); this.bserSerializer = new BserSerializer(); this.commandListener = commandListener; this.incomingMessageExecutor = Executors.newSingleThreadExecutor( new ThreadFactoryBuilder() .setNameFormat("[watchman] Incoming Message Executor") .build()); } private boolean checkMessageUnilateral(Map response) { if (! unilateralLabels.isPresent()) return false; for (String label: unilateralLabels.get()) { if (response.containsKey(label)) return true; } return false; } public ListenableFuture> run(final Object command) { if (! processing.get()) { SettableFuture> die = SettableFuture.create(); die.setException(new WatchmanException("connection closing down")); return die; } final CountDownLatch latch = new CountDownLatch(1); final AtomicReference> resultRef = new AtomicReference>(); final AtomicReference errorRef = new AtomicReference(); QueuedCommand queuedCommand = new QueuedCommandBuilder() .command(command) .latch(latch) .resultRef(resultRef) .errorRef(errorRef) .build(); commandQueue.add(queuedCommand); return outgoingMessageExecutor.submit(new Callable>() { @Override public Map call() throws Exception { if (commandListener.isPresent()) { commandListener.get().onStart(); } if (processing.get()) { bserSerializer.serializeToStream( command, outgoingMessageStream); } if (commandListener.isPresent()) { commandListener.get().onSent(); } latch.await(); if (commandListener.isPresent()) { commandListener.get().onReceived(); } if (resultRef.get() != null) return resultRef.get(); throw errorRef.get(); } }); } private void failAllCommands(Exception e) { processing.set(false); for (QueuedCommand command: commandQueue) { command.errorRef().set(e); command.latch().countDown(); } } public void close() throws IOException { failAllCommands(new WatchmanException("connection closing down")); outgoingMessageStream.close(); incomingMessageExecutor.shutdown(); outgoingMessageExecutor.shutdown(); if (transport.isPresent()) { transport.get().close(); } } public void start() { this.incomingMessageExecutor.execute(new IncomingMessageThread()); } private class IncomingMessageThread implements Runnable { @Override public void run() { while (processing.get()) { try { Map deserializedResponse = incomingMessageGetter.call(); if (deserializedResponse == null) continue; if (checkMessageUnilateral(deserializedResponse)) { if (unilateralCallback.isPresent()) { unilateralCallback.get().call(deserializedResponse); } else { failAllCommands( new Exception("Received unilateral message without any callback registered")); return; } continue; } QueuedCommand lastCommand = commandQueue.take(); if (deserializedResponse.containsKey("error")) { lastCommand.errorRef().set(new WatchmanException( String.valueOf(deserializedResponse.get("error")), deserializedResponse)); } else { lastCommand.resultRef().set(deserializedResponse); } lastCommand.latch().countDown(); } catch (Exception e) { failAllCommands(e); return; } } } } @Value.Immutable @Value.Style(visibility = Value.Style.ImplementationVisibility.PRIVATE) interface QueuedCommand { Object command(); CountDownLatch latch(); AtomicReference> resultRef(); AtomicReference errorRef(); } /** * Permits the synchronization of test classes with the thread sending messages. If the * WatchmanConnection has a WatchmanCommandListener attached, it will make sure that the methods * will be called: *
    *
  • onStart: when the thread picks up the command
  • *
  • onSent: when the serialization to the OutputStream is done
  • *
  • onReceived: when a response from Watchman is received
  • *
*/ public interface WatchmanCommandListener { void onStart(); void onSent(); void onReceived(); } /** * Generates a Callable that can be invoked repeatedly to extract * deserialized messages from watchman's transport. */ private static Callable> incomingMessageGetterFromTransport(WatchmanTransport transport) throws IOException { final InputStream inputStream = transport.getInputStream(); final BserDeserializer deserializer = new BserDeserializer(BserDeserializer.KeyOrdering.UNSORTED); return new Callable>() { @Override public Map call() throws Exception { return deserializer.deserialize(inputStream); } }; } } watchman-4.9.0/java/src/com/facebook/watchman/WatchmanException.java000066400000000000000000000021551314236077500254660ustar00rootroot00000000000000/* * Copyright 2004-present Facebook. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. You may obtain * a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ package com.facebook.watchman; import java.util.Map; public class WatchmanException extends Exception { private final Map response; public WatchmanException() { super(); response = null; } public WatchmanException(String reason) { super(reason); response = null; } public WatchmanException(String error, Map response) { super(error); this.response = response; } public Map getResponse() { return response; } } watchman-4.9.0/java/src/com/facebook/watchman/WatchmanTransport.java000066400000000000000000000015361314236077500255260ustar00rootroot00000000000000/* * Copyright 2017-present Facebook. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. You may obtain * a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ package com.facebook.watchman; import java.io.Closeable; import java.io.InputStream; import java.io.OutputStream; public interface WatchmanTransport extends Closeable { InputStream getInputStream(); OutputStream getOutputStream(); } watchman-4.9.0/java/src/com/facebook/watchman/WatchmanTransportBuilder.java000066400000000000000000000125521314236077500270350ustar00rootroot00000000000000/* * Copyright 2004-present Facebook. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. You may obtain * a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ package com.facebook.watchman; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.nio.ByteBuffer; import java.nio.channels.Channels; import java.nio.channels.WritableByteChannel; import java.nio.file.Path; import java.nio.file.Paths; import java.util.Map; import java.util.concurrent.TimeUnit; import com.facebook.watchman.bser.BserDeserializer; import com.facebook.watchman.environment.ExecutableFinder; import com.facebook.watchman.unixsocket.UnixDomainSocket; import com.facebook.watchman.windowspipe.WindowsNamedPipe; import com.google.common.base.Optional; import com.google.common.collect.ImmutableMap; import com.sun.jna.Platform; import com.zaxxer.nuprocess.NuAbstractProcessHandler; import com.zaxxer.nuprocess.NuProcess; import com.zaxxer.nuprocess.NuProcessBuilder; import static com.google.common.base.Preconditions.checkArgument; public class WatchmanTransportBuilder { private static class BufferingOutputHandler extends NuAbstractProcessHandler { private final ByteArrayOutputStream buffer; private final WritableByteChannel sink; private Optional throwable; private NuProcess process = null; public BufferingOutputHandler() { buffer = new ByteArrayOutputStream(); sink = Channels.newChannel(buffer); throwable = Optional.absent(); } @Override public void onStart(NuProcess nuProcess) { super.onStart(nuProcess); this.process = nuProcess; } @Override public void onStdout(ByteBuffer buffer, boolean closed) { try { sink.write(buffer); if (closed) { sink.close(); } } catch (IOException e) { throwable = Optional.of(e); process.destroy(false); } } public ByteBuffer getOutput() throws IOException { if (throwable.isPresent()) { throw throwable.get(); } return ByteBuffer.wrap(buffer.toByteArray()); } } public static WatchmanTransport discoverTransport() throws WatchmanTransportUnavailableException { return discoverTransport(0, TimeUnit.SECONDS); // forever } public static WatchmanTransport discoverTransport(long duration, TimeUnit unit) throws WatchmanTransportUnavailableException { Optional optionalExecutable = ExecutableFinder.getOptionalExecutable( Paths.get("watchman"), ImmutableMap.copyOf(System.getenv())); if (!optionalExecutable.isPresent()) { throw new WatchmanTransportUnavailableException(); } return discoverTransport(optionalExecutable.get(), duration, unit); } public static WatchmanTransport discoverTransport(Path watchmanPath, long duration, TimeUnit unit) throws WatchmanTransportUnavailableException { NuProcessBuilder processBuilder = new NuProcessBuilder( watchmanPath.toString(), "--output-encoding=bser", "get-sockname"); BufferingOutputHandler outputHandler = new BufferingOutputHandler(); processBuilder.setProcessListener(outputHandler); NuProcess process = processBuilder.start(); if (process == null) { throw new WatchmanTransportUnavailableException("Could not create process"); } int exitCode; try { exitCode = process.waitFor(duration, unit); } catch (InterruptedException e) { throw new WatchmanTransportUnavailableException("Subprocess interrupted", e); } if (exitCode == Integer.MIN_VALUE) { throw new WatchmanTransportUnavailableException("Subprocess timed out"); } if (exitCode != 0) { throw new WatchmanTransportUnavailableException( "Subprocess non-zero exit status: " + String.valueOf(exitCode)); } ByteBuffer output; try { output = outputHandler.getOutput(); } catch (IOException e) { throw new WatchmanTransportUnavailableException("Could not read subprocess output", e); } InputStream stream = new ByteArrayInputStream(output.array()); BserDeserializer deserializer = new BserDeserializer(BserDeserializer.KeyOrdering.UNSORTED); Map deserializedValue = null; try { deserializedValue = deserializer.deserialize(stream); } catch (IOException e) { throw new WatchmanTransportUnavailableException("Could not deserialize BSER output", e); } checkArgument(deserializedValue.containsKey("sockname")); String sockname = String.valueOf(deserializedValue.get("sockname")); try { if (Platform.isWindows()) { return new WindowsNamedPipe(sockname); } else { return UnixDomainSocket.createSocketWithPath(Paths.get(sockname)); } } catch (IOException e) { throw new WatchmanTransportUnavailableException("Could not create watchman transport to resulting path", e); } } } watchman-4.9.0/java/src/com/facebook/watchman/WatchmanTransportUnavailableException.java000066400000000000000000000017511314236077500315500ustar00rootroot00000000000000/* * Copyright 2004-present Facebook. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. You may obtain * a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ package com.facebook.watchman; public class WatchmanTransportUnavailableException extends Exception { public WatchmanTransportUnavailableException() { super(); } public WatchmanTransportUnavailableException(String message) { super(message); } public WatchmanTransportUnavailableException(String message, Throwable cause) { super(message, cause); } } watchman-4.9.0/java/src/com/facebook/watchman/bser/000077500000000000000000000000001314236077500221325ustar00rootroot00000000000000watchman-4.9.0/java/src/com/facebook/watchman/bser/BserConstants.java000066400000000000000000000025001314236077500255620ustar00rootroot00000000000000/* * Copyright 2015-present Facebook, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. You may obtain * a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ package com.facebook.watchman.bser; public class BserConstants { // Utility class, do not instantiate. private BserConstants() { } public static final byte BSER_ARRAY = 0x00; public static final byte BSER_OBJECT = 0x01; public static final byte BSER_STRING = 0x02; public static final byte BSER_INT8 = 0x03; public static final byte BSER_INT16 = 0x04; public static final byte BSER_INT32 = 0x05; public static final byte BSER_INT64 = 0x06; public static final byte BSER_REAL = 0x07; public static final byte BSER_TRUE = 0x08; public static final byte BSER_FALSE = 0x09; public static final byte BSER_NULL = 0x0a; public static final byte BSER_TEMPLATE = 0x0b; public static final byte BSER_SKIP = 0x0c; } watchman-4.9.0/java/src/com/facebook/watchman/bser/BserDeserializer.java000066400000000000000000000254571314236077500262500ustar00rootroot00000000000000/* * Copyright 2015-present Facebook, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. You may obtain * a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ package com.facebook.watchman.bser; // CHECKSTYLE.OFF: AvoidStarImport import static com.facebook.watchman.bser.BserConstants.*; import com.google.common.base.Preconditions; import com.google.common.io.ByteStreams; import java.io.InputStream; import java.io.IOException; import java.nio.BufferUnderflowException; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.charset.CharsetDecoder; import java.nio.charset.CodingErrorAction; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.TreeMap; import javax.annotation.Nullable; import com.facebook.watchman.Deserializer; /** * Decoder for the BSER binary JSON format used by the Watchman service: * * https://facebook.github.io/watchman/docs/bser.html */ public class BserDeserializer implements Deserializer { public enum KeyOrdering { UNSORTED, SORTED } /** * Exception thrown when BSER parser unexpectedly reaches the end of * the input stream. */ @SuppressWarnings("serial") public static class BserEofException extends IOException { public BserEofException(String message) { super(message); } public BserEofException(String message, Throwable cause) { super(message, cause); } } private final KeyOrdering keyOrdering; private final CharsetDecoder utf8Decoder; /** * If {@code keyOrdering} is {@code SORTED}, any {@code Map} objects * in the resulting value will have their keys sorted in natural * order. Otherwise, any {@code Map}s will have their keys in the * same order with which they were encoded. */ public BserDeserializer(KeyOrdering keyOrdering) { this.keyOrdering = keyOrdering; this.utf8Decoder = StandardCharsets.UTF_8 .newDecoder() .onMalformedInput(CodingErrorAction.REPORT); } // 2 bytes marker, 1 byte int size private static final int INITIAL_SNIFF_LEN = 3; // 2 bytes marker, 1 byte int size, up to 8 bytes int64 value private static final int SNIFF_BUFFER_SIZE = 13; /** * Deserializes the next BSER-encoded value from the stream. * * @return either a {@link String}, {@link Number}, {@link List}, * {@link Map}, or {@code null}, depending on the type of the * top-level encoded object. */ @Nullable public Object deserializeBserValue(InputStream inputStream) throws IOException { try { return deserializeRecursive(readBserBuffer(inputStream)); } catch (BufferUnderflowException e) { throw new BserEofException("Prematurely reached end of BSER buffer", e); } } /** * Same as {@link BserDeserializer#deserializeBserValue(InputStream)}, but respecting the * {@link Deserializer#deserialize(InputStream)} interface. */ @SuppressWarnings("unchecked") public Map deserialize(InputStream inputStream) throws IOException { return (Map) deserializeBserValue(inputStream); } private ByteBuffer readBserBuffer(InputStream inputStream) throws IOException { ByteBuffer sniffBuffer = ByteBuffer.allocate(SNIFF_BUFFER_SIZE).order(ByteOrder.nativeOrder()); Preconditions.checkState(sniffBuffer.hasArray()); int sniffBytesRead = ByteStreams.read(inputStream, sniffBuffer.array(), 0, INITIAL_SNIFF_LEN); if (sniffBytesRead < INITIAL_SNIFF_LEN) { throw new BserEofException( String.format( "Invalid BSER header (expected %d bytes, got %d bytes)", INITIAL_SNIFF_LEN, sniffBytesRead)); } if (sniffBuffer.get() != 0x00 || sniffBuffer.get() != 0x01) { throw new IOException("Invalid BSER header"); } byte lengthType = sniffBuffer.get(); int lengthBytesRemaining; switch (lengthType) { case BSER_INT8: lengthBytesRemaining = 1; break; case BSER_INT16: lengthBytesRemaining = 2; break; case BSER_INT32: lengthBytesRemaining = 4; break; case BSER_INT64: lengthBytesRemaining = 8; break; default: throw new IOException( String.format("Unrecognized BSER header length type %d", lengthType)); } int lengthBytesRead = ByteStreams.read( inputStream, sniffBuffer.array(), sniffBuffer.position(), lengthBytesRemaining); if (lengthBytesRead < lengthBytesRemaining) { throw new BserEofException( String.format( "Invalid BSER header length (expected %d bytes, got %d bytes)", lengthBytesRemaining, lengthBytesRead)); } int bytesRemaining = deserializeIntLen(sniffBuffer, lengthType); ByteBuffer bserBuffer = ByteBuffer.allocate(bytesRemaining) .order(ByteOrder.nativeOrder()); Preconditions.checkState(bserBuffer.hasArray()); int remainingBytesRead = ByteStreams.read( inputStream, bserBuffer.array(), 0, bytesRemaining); if (remainingBytesRead < bytesRemaining) { throw new IOException( String.format( "Invalid BSER header (expected %d bytes, got %d bytes)", bytesRemaining, remainingBytesRead)); } return bserBuffer; } private int deserializeIntLen(ByteBuffer buffer, byte type) throws IOException { long value = deserializeNumber(buffer, type).longValue(); if (value > Integer.MAX_VALUE) { throw new IOException( String.format( "BSER length out of range (%d > %d)", value, Integer.MAX_VALUE)); } else if (value < 0) { throw new IOException( String.format( "BSER length out of range (%d < 0)", value)); } return (int) value; } private Number deserializeNumber(ByteBuffer buffer, byte type) throws IOException { switch (type) { case BSER_INT8: return buffer.get(); case BSER_INT16: return buffer.getShort(); case BSER_INT32: return buffer.getInt(); case BSER_INT64: return buffer.getLong(); default: throw new IOException(String.format("Invalid BSER number encoding %d", type)); } } private String deserializeString(ByteBuffer buffer) throws IOException { byte intType = buffer.get(); int len = deserializeIntLen(buffer, intType); // We use a CharsetDecoder here instead of String(byte[], Charset) // because we want it to throw an exception for any non-UTF-8 input. buffer.limit(buffer.position() + len); try { // We'll likely have many duplicates of this string. Java 7 and // up have not-insane behavior of String.intern(), so we'll use // it to deduplicate the String instances. // // See: http://java-performance.info/string-intern-in-java-6-7-8/ return utf8Decoder.decode(buffer).toString().intern(); } finally { buffer.limit(buffer.capacity()); } } private List deserializeArray(ByteBuffer buffer) throws IOException { byte intType = buffer.get(); int numItems = deserializeIntLen(buffer, intType); if (numItems == 0) { return Collections.emptyList(); } ArrayList list = new ArrayList(numItems); for (int i = 0; i < numItems; i++) { list.add(deserializeRecursive(buffer)); } return list; } private Map deserializeObject(ByteBuffer buffer) throws IOException { byte intType = buffer.get(); int numItems = deserializeIntLen(buffer, intType); if (numItems == 0) { return Collections.emptyMap(); } Map map; if (keyOrdering == KeyOrdering.UNSORTED) { map = new LinkedHashMap(numItems); } else { map = new TreeMap(); } for (int i = 0; i < numItems; i++) { byte stringType = buffer.get(); if (stringType != BSER_STRING) { throw new IOException( String.format( "Unrecognized BSER object key type %d, expected string", stringType)); } String key = deserializeString(buffer); Object value = deserializeRecursive(buffer); map.put(key, value); } return map; } private List> deserializeTemplate(ByteBuffer buffer) throws IOException { byte arrayType = buffer.get(); if (arrayType != BSER_ARRAY) { throw new IOException(String.format("Expected ARRAY to follow TEMPLATE, got %d", arrayType)); } List keys = deserializeArray(buffer); byte numItemsType = buffer.get(); int numItems = deserializeIntLen(buffer, numItemsType); ArrayList> result = new ArrayList>(); for (int itemIdx = 0; itemIdx < numItems; itemIdx++) { Map obj; if (keyOrdering == KeyOrdering.UNSORTED) { obj = new LinkedHashMap(); } else { obj = new TreeMap(); } for (int keyIdx = 0; keyIdx < keys.size(); keyIdx++) { byte keyValueType = buffer.get(); if (keyValueType != BSER_SKIP) { String key = (String) keys.get(keyIdx); obj.put(key, deserializeRecursiveWithType(buffer, keyValueType)); } } result.add(obj); } return result; } @Nullable private Object deserializeRecursive(ByteBuffer buffer) throws IOException { byte type = buffer.get(); return deserializeRecursiveWithType(buffer, type); } private Object deserializeRecursiveWithType(ByteBuffer buffer, byte type) throws IOException { switch (type) { case BSER_INT8: case BSER_INT16: case BSER_INT32: case BSER_INT64: return deserializeNumber(buffer, type); case BSER_REAL: return buffer.getDouble(); case BSER_TRUE: return true; case BSER_FALSE: return false; case BSER_NULL: return null; case BSER_STRING: return deserializeString(buffer); case BSER_ARRAY: return deserializeArray(buffer); case BSER_OBJECT: return deserializeObject(buffer); case BSER_TEMPLATE: return deserializeTemplate(buffer); default: throw new IOException(String.format("Unrecognized BSER value type %d", type)); } } } watchman-4.9.0/java/src/com/facebook/watchman/bser/BserSerializer.java000066400000000000000000000206111314236077500257220ustar00rootroot00000000000000/* * Copyright 2015-present Facebook, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. You may obtain * a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ package com.facebook.watchman.bser; // CHECKSTYLE.OFF: AvoidStarImport import static com.facebook.watchman.bser.BserConstants.*; import com.google.common.io.BaseEncoding; import java.io.OutputStream; import java.io.IOException; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.CharBuffer; import java.nio.charset.CharacterCodingException; import java.nio.charset.CharsetEncoder; import java.nio.charset.CodingErrorAction; import java.nio.charset.StandardCharsets; import java.nio.channels.Channels; import java.nio.channels.WritableByteChannel; import java.util.List; import java.util.Map; /** * Encoder for the BSER binary JSON format used by the Watchman service: * * https://facebook.github.io/watchman/docs/bser.html */ public class BserSerializer { private static final int INITIAL_BUFFER_SIZE = 8192; private static final byte[] EMPTY_HEADER = BaseEncoding.base16().decode("00010500000000"); private enum BserIntegralEncodedSize { INT8(1), INT16(2), INT32(4), INT64(8); public final int size; private BserIntegralEncodedSize(int size) { this.size = size; } } private final CharsetEncoder utf8Encoder; public BserSerializer() { this.utf8Encoder = StandardCharsets.UTF_8 .newEncoder() .onMalformedInput(CodingErrorAction.REPORT); } /** * Serializes an object using BSER encoding to the stream. */ public void serializeToStream(Object value, OutputStream outputStream) throws IOException { ByteBuffer buffer = ByteBuffer .allocate(INITIAL_BUFFER_SIZE) .order(ByteOrder.nativeOrder()); buffer = serializeToBuffer(value, buffer); buffer.flip(); WritableByteChannel c = Channels.newChannel(outputStream); try { c.write(buffer); } finally { if (c != null) { c.close(); } } } /** * Serializes an object using BSER encoding. If possible, writes the object * to the provided byte buffer and returns it. If the buffer is not big * enough to hold the object, returns a new buffer. * * After returning, buffer.position() is advanced past the last encoded byte. */ public ByteBuffer serializeToBuffer(Object value, ByteBuffer buffer) throws IOException { buffer.put(EMPTY_HEADER); buffer = appendRecursive(buffer, value, utf8Encoder); int encodedLength = buffer.position() - EMPTY_HEADER.length; // Overwrite the 32-bit length field at position 3 with the actual length of the object. buffer.putInt(3, encodedLength); return buffer; } @SuppressWarnings("unchecked") private static ByteBuffer appendRecursive( ByteBuffer buffer, Object value, CharsetEncoder utf8Encoder) throws IOException { if (value instanceof Boolean) { buffer = increaseBufferCapacityIfNeeded(buffer, 1); buffer.put(((Boolean) value) ? BSER_TRUE : BSER_FALSE); } else if (value == null) { buffer = increaseBufferCapacityIfNeeded(buffer, 1); buffer.put(BSER_NULL); } else if (value instanceof String) { buffer = appendString(buffer, (String) value, utf8Encoder); } else if (value instanceof Double || value instanceof Float) { buffer = increaseBufferCapacityIfNeeded(buffer, 9); buffer.put(BSER_REAL); buffer.putDouble((Double) value); } else if (value instanceof Long) { buffer = appendLong(buffer, (Long) value); } else if (value instanceof Integer) { buffer = appendLong(buffer, (Integer) value); } else if (value instanceof Short) { buffer = appendLong(buffer, (Short) value); } else if (value instanceof Byte) { buffer = appendLong(buffer, (Byte) value); } else if (value instanceof Map) { Map map = (Map) value; int mapLen = map.size(); BserIntegralEncodedSize encodedSize = getEncodedSize(mapLen); buffer = increaseBufferCapacityIfNeeded(buffer, 2 + encodedSize.size); buffer.put(BSER_OBJECT); buffer = appendLongWithSize(buffer, mapLen, encodedSize); for (Map.Entry entry : map.entrySet()) { if (!(entry.getKey() instanceof String)) { throw new IOException( String.format( "Unrecognized map key type %s, expected string", entry.getKey().getClass())); } buffer = appendString(buffer, (String) entry.getKey(), utf8Encoder); buffer = appendRecursive(buffer, entry.getValue(), utf8Encoder); } } else if (value instanceof List) { List list = (List) value; int listLen = list.size(); BserIntegralEncodedSize encodedSize = getEncodedSize(listLen); buffer = increaseBufferCapacityIfNeeded(buffer, 2 + encodedSize.size); buffer.put(BSER_ARRAY); buffer = appendLongWithSize(buffer, listLen, encodedSize); for (Object obj : list) { buffer = appendRecursive(buffer, obj, utf8Encoder); } } else { throw new RuntimeException("Cannot encode object: " + value); } return buffer; } private static ByteBuffer appendString( ByteBuffer buffer, String value, CharsetEncoder utf8Encoder) throws CharacterCodingException { CharBuffer valueBuffer = CharBuffer.wrap(value); ByteBuffer utf8String = utf8Encoder.encode(valueBuffer); int utf8StringLenBytes = utf8String.remaining(); BserIntegralEncodedSize utf8StringLenSize = getEncodedSize(utf8StringLenBytes); buffer = increaseBufferCapacityIfNeeded( buffer, 2 + utf8StringLenSize.size + utf8StringLenBytes); buffer.put(BSER_STRING); buffer = appendLongWithSize(buffer, utf8StringLenBytes, utf8StringLenSize); buffer.put(utf8String); return buffer; } private static ByteBuffer appendLong(ByteBuffer buffer, long value) { BserIntegralEncodedSize encodedSize = getEncodedSize(value); buffer = increaseBufferCapacityIfNeeded(buffer, 1 + encodedSize.size); return appendLongWithSize(buffer, value, encodedSize); } private static BserIntegralEncodedSize getEncodedSize(long value) { if (value >= -0x80 && value <= 0x7F) { return BserIntegralEncodedSize.INT8; } else if (value >= -0x8000 && value <= 0x7FFF) { return BserIntegralEncodedSize.INT16; } else if (value >= -0x80000000 && value <= 0x7FFFFFFF) { return BserIntegralEncodedSize.INT32; } else if (value >= -0x8000000000000000L && value <= 0x7FFFFFFFFFFFFFFFL) { return BserIntegralEncodedSize.INT64; } else { // We shouldn't be able to reach here. throw new RuntimeException("Unhandled long value: " + value); } } private static ByteBuffer appendLongWithSize( ByteBuffer buffer, long value, BserIntegralEncodedSize encodedSize) { // We assume we've already increased the size of the buffer to hold // the encoded size. switch (encodedSize) { case INT8: buffer.put(BSER_INT8); buffer.put((byte) value); break; case INT16: buffer.put(BSER_INT16); buffer.putShort((short) value); break; case INT32: buffer.put(BSER_INT32); buffer.putInt((int) value); break; case INT64: buffer.put(BSER_INT64); buffer.putLong(value); break; } return buffer; } private static ByteBuffer increaseBufferCapacityIfNeeded(ByteBuffer buffer, int amount) { int remaining = buffer.remaining(); if (remaining < amount) { int capacity = buffer.capacity(); while (remaining < amount) { remaining += capacity; capacity *= 2; } buffer = resizeBufferWithCapacity(buffer, capacity); } return buffer; } private static ByteBuffer resizeBufferWithCapacity(ByteBuffer buffer, int capacity) { buffer.flip(); return ByteBuffer .allocate(capacity) .order(buffer.order()) .put(buffer); } } watchman-4.9.0/java/src/com/facebook/watchman/environment/000077500000000000000000000000001314236077500235435ustar00rootroot00000000000000watchman-4.9.0/java/src/com/facebook/watchman/environment/ExecutableFinder.java000066400000000000000000000123531314236077500276230ustar00rootroot00000000000000/* * Copyright 2004-present Facebook. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. You may obtain * a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ package com.facebook.watchman.environment; import java.io.IOException; import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import com.google.common.base.Function; import com.google.common.base.Optional; import com.google.common.base.Splitter; import com.google.common.collect.FluentIterable; import com.google.common.collect.ImmutableCollection; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.sun.jna.Platform; import static java.io.File.pathSeparator; /** * Given the name of an executable, search a set of (possibly platform-specific) known locations for * that executable. */ public class ExecutableFinder { private static final ImmutableSet DEFAULT_WINDOWS_EXTENSIONS = ImmutableSet.of( ".bat", ".cmd", ".com", ".cpl", ".exe", ".js", ".jse", ".msc", ".vbs", ".wsf", ".wsh"); // Avoid using MorePaths.TO_PATH because of circular deps in this package private static final Function TO_PATH = new Function() { @Override public Path apply(String path) { return Paths.get(path); } }; private static final Function IS_EXECUTABLE = new Function() { @Override public Boolean apply(Path path) { return ExecutableFinder.isExecutable(path); } }; public static Path getExecutable( Path suggestedExecutable, ImmutableMap env) { Optional exe = getOptionalExecutable(suggestedExecutable, env); if (!exe.isPresent()) { throw new RuntimeException(String.format( "Unable to locate %s on PATH, or it's not marked as being executable", suggestedExecutable)); } return exe.get(); } public static Optional getOptionalExecutable( Path suggestedExecutable, ImmutableMap env) { return getOptionalExecutable(suggestedExecutable, getPaths(env), getExecutableSuffixes(env)); } public static Optional getOptionalExecutable( Path suggestedExecutable, ImmutableCollection path, ImmutableCollection fileSuffixes) { // Fast path out of here. if (isExecutable(suggestedExecutable)) { return Optional.of(suggestedExecutable); } Optional executable = FileFinder.getOptionalFile( FileFinder.combine( /* prefixes */ null, suggestedExecutable.toString(), ImmutableSet.copyOf(fileSuffixes)), path, IS_EXECUTABLE); return executable; } private static boolean isExecutable(Path exe) { if (!Files.exists(exe)) { return false; } if (Files.isSymbolicLink(exe)) { try { Path target = Files.readSymbolicLink(exe); return isExecutable(exe.resolveSibling(target).normalize()); } catch (IOException e) { // NOPMD } catch (SecurityException e) { // NOPMD } } if (Files.isDirectory(exe)) { return false; } if (!Files.isExecutable(exe) && !Files.isSymbolicLink(exe)) { return false; } return true; } private static ImmutableSet getPaths(ImmutableMap env) { ImmutableSet.Builder paths = ImmutableSet.builder(); // Add the empty path so that when we iterate over it, we can check for the suffixed version of // a given path, be it absolute or not. paths.add(Paths.get("")); String pathEnv = env.get("PATH"); if (pathEnv != null) { paths.addAll( FluentIterable.from(Splitter.on(pathSeparator).omitEmptyStrings().split(pathEnv)) .transform(TO_PATH)); } if (Platform.isMac()) { Path osXPaths = Paths.get("/etc/paths"); if (Files.exists(osXPaths)) { try { paths.addAll( FluentIterable.from(Files.readAllLines(osXPaths, Charset.defaultCharset())) .transform(TO_PATH)); } catch (IOException e) { } } } return paths.build(); } private static ImmutableSet getExecutableSuffixes(ImmutableMap env) { if (Platform.isWindows()) { String pathext = env.get("PATHEXT"); if (pathext == null) { return DEFAULT_WINDOWS_EXTENSIONS; } return ImmutableSet.builder() .addAll(Splitter.on(";").omitEmptyStrings().split(pathext)) .build(); } return ImmutableSet.of(""); } /** * Constructor hidden; there is no reason to instantiate this class. */ private ExecutableFinder() {} } watchman-4.9.0/java/src/com/facebook/watchman/environment/FileFinder.java000066400000000000000000000121331314236077500264150ustar00rootroot00000000000000/* * Copyright 2004-present Facebook. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. You may obtain * a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ package com.facebook.watchman.environment; import javax.annotation.Nullable; import java.nio.file.Files; import java.nio.file.Path; import java.util.Set; import com.google.common.base.Function; import com.google.common.base.Optional; import com.google.common.collect.ImmutableSet; /** * Methods for finding files. */ public class FileFinder { /** * Filter that checks that a file exists. */ public static final Function EXISTS = new Function() { @Override public Boolean apply(Path path) { return Files.exists(path); } }; /** * Filter that tests if a file is executable. */ public static final Function IS_EXECUTABLE = new Function() { @Override public Boolean apply(Path path) { return Files.isExecutable(path); } }; /** * Filter that tests if a file is a regular file. */ public static final Function IS_REGULAR_FILE = new Function() { @Override public Boolean apply(Path path) { return Files.isRegularFile(path); } }; /** * Combines prefixes, base, and suffixes to create a set of file names. * @param prefixes set of prefixes. May be null or empty. * @param base base name. May be empty. * @param suffixes set of suffixes. May be null or empty. * @return a set containing all combinations of prefix, base, and suffix. */ public static ImmutableSet combine( @Nullable Set prefixes, String base, @Nullable Set suffixes) { ImmutableSet suffixedSet; if (suffixes == null || suffixes.isEmpty()) { suffixedSet = ImmutableSet.of(base); } else { ImmutableSet.Builder suffixedBuilder = ImmutableSet.builder(); for (String suffix : suffixes) { suffixedBuilder.add(base + suffix); } suffixedSet = suffixedBuilder.build(); } if (prefixes == null || prefixes.isEmpty()) { return suffixedSet; } else { ImmutableSet.Builder builder = ImmutableSet.builder(); for (String prefix : prefixes) { for (String suffix : suffixedSet) { builder.add(prefix + suffix); } } return builder.build(); } } /** * Tries to find a file with a specific name in a search path. * @param name file name to look for. * @param searchPath directories to search. * @return if found: the path to the file. if not found, Optional.absent(). */ public static Optional getOptionalFile( String name, Iterable searchPath) { return getOptionalFile(name, searchPath, EXISTS); } /** * Tries to find a file with a specific name in a search path. * @param name file name to look for. * @param searchPath directories to search. * @param filter additional check that discovered paths must pass to be eligible. * @return if found: the path to the file. if not found, Optional.absent(). */ public static Optional getOptionalFile( String name, Iterable searchPath, Function filter) { return getOptionalFile( ImmutableSet.of(name), searchPath, filter); } /** * Tries to find a file with one of a number of possible names in a search path. * @param possibleNames file names to look for. * @param searchPath directories to search. * @return if found: the path to the file. if not found, Optional.absent(). */ public static Optional getOptionalFile( Set possibleNames, Iterable searchPath) { return getOptionalFile(possibleNames, searchPath, EXISTS); } /** * Tries to find a file with one of a number of possible names in a search path. * @param possibleNames file names to look for. * @param searchPath directories to search. * @param filter additional check that discovered paths must pass to be eligible. * @return if found: the path to the file. if not found, Optional.absent(). */ public static Optional getOptionalFile( Set possibleNames, Iterable searchPath, Function filter) { for (Path path : searchPath) { for (String filename : possibleNames) { Path resolved = path.resolve(filename); if (filter.apply(resolved)) { return Optional.of(resolved); } } } return Optional.absent(); } /** * Constructor hidden; there is no reason to instantiate this class. */ private FileFinder() {} } watchman-4.9.0/java/src/com/facebook/watchman/unixsocket/000077500000000000000000000000001314236077500233735ustar00rootroot00000000000000watchman-4.9.0/java/src/com/facebook/watchman/unixsocket/ReferenceCountedFileDescriptor.java000066400000000000000000000051211314236077500323140ustar00rootroot00000000000000/* * Copyright 2015-present Facebook, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. You may obtain * a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ /* Copyright 2004-2015, Martian Software, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package com.facebook.watchman.unixsocket; import com.sun.jna.LastErrorException; import java.io.IOException; /** * Encapsulates a file descriptor plus a reference count to ensure close requests * only close the file descriptor once the last reference to the file descriptor * is released. *

* If not explicitly closed, the file descriptor will be closed when * this object is finalized. */ class ReferenceCountedFileDescriptor { private int fd; private int fdRefCount; private boolean closePending; public ReferenceCountedFileDescriptor(int fd) { this.fd = fd; this.fdRefCount = 0; this.closePending = false; } @Override protected void finalize() throws IOException { close(); } public synchronized int acquire() { fdRefCount++; return fd; } public synchronized void release() throws IOException { fdRefCount--; if (fdRefCount == 0 && closePending && fd != -1) { doClose(); } } public synchronized void close() throws IOException { if (fd == -1 || closePending) { return; } if (fdRefCount == 0) { doClose(); } else { // Another thread has the FD. We'll close it when they release the reference. closePending = true; } } private void doClose() throws IOException { try { UnixDomainSocketLibrary.close(fd); fd = -1; } catch (LastErrorException e) { throw new IOException(e); } } } watchman-4.9.0/java/src/com/facebook/watchman/unixsocket/UnixDomainSocket.java000066400000000000000000000147701314236077500274730ustar00rootroot00000000000000/* * Copyright 2015-present Facebook, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. You may obtain * a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ /* Copyright 2004-2015, Martian Software, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package com.facebook.watchman.unixsocket; import com.facebook.watchman.WatchmanTransport; import com.sun.jna.LastErrorException; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.nio.file.Path; import java.nio.ByteBuffer; import java.net.Socket; /** * Implements a {@link Socket} backed by a native Unix domain socket. * * Instances of this class always return {@code null} for * {@link Socket#getInetAddress()}, {@link Socket#getLocalAddress()}, * {@link Socket#getLocalSocketAddress()}, {@link Socket#getRemoteSocketAddress()}. * * If not explicitly closed, will close the file descriptor when finalized. * * Caller is responsible for closing the streams returned from * {@link #getInputStream()} and {@link #getOutputStream()}. */ public class UnixDomainSocket extends Socket implements WatchmanTransport { private final ReferenceCountedFileDescriptor fd; private final InputStream is; private final OutputStream os; /** * Creates a Unix domain socket bound to a path. */ public static UnixDomainSocket createSocketWithPath(Path path) throws IOException { int fd = -1; try { fd = UnixDomainSocketLibrary.socket( UnixDomainSocketLibrary.PF_LOCAL, UnixDomainSocketLibrary.SOCK_STREAM, 0); UnixDomainSocketLibrary.SockaddrUn address = new UnixDomainSocketLibrary.SockaddrUn(path.toString()); UnixDomainSocketLibrary.connect(fd, address, address.size()); return new UnixDomainSocket(new ReferenceCountedFileDescriptor(fd)); } catch (LastErrorException e) { if (fd != -1) { UnixDomainSocketLibrary.close(fd); } throw new IOException(e); } } /** * Creates a Unix domain socket backed by a native file descriptor. */ private UnixDomainSocket(ReferenceCountedFileDescriptor fd) { this.fd = fd; this.is = new UnixDomainSocketInputStream(); this.os = new UnixDomainSocketOutputStream(); } @Override public InputStream getInputStream() { return is; } @Override public OutputStream getOutputStream() { return os; } @Override public void shutdownInput() throws IOException { doShutdown(UnixDomainSocketLibrary.SHUT_RD); } @Override public void shutdownOutput() throws IOException { doShutdown(UnixDomainSocketLibrary.SHUT_WR); } private void doShutdown(int how) throws IOException { try { int socketFd = fd.acquire(); if (socketFd != -1) { UnixDomainSocketLibrary.shutdown(socketFd, how); } } catch (LastErrorException e) { throw new IOException(e); } finally { fd.release(); } } @Override public void close() throws IOException { super.close(); try { // This might not close the FD right away. In case we are about // to read or write on another thread, it will delay the close // until the read or write completes, to prevent the FD from // being re-used for a different purpose and the other thread // reading from a different FD. fd.close(); } catch (LastErrorException e) { throw new IOException(e); } } @Override protected void finalize() throws IOException { close(); } private class UnixDomainSocketInputStream extends InputStream { @Override public int read() throws IOException { ByteBuffer buf = ByteBuffer.allocate(1); int result; if (doRead(buf) == 0) { result = -1; } else { // Make sure to & with 0xFF to avoid sign extension result = 0xFF & buf.get(); } return result; } @Override public int read(byte[] b, int off, int len) throws IOException { if (len == 0) { return 0; } ByteBuffer buf = ByteBuffer.wrap(b, off, len); int result = doRead(buf); if (result == 0) { result = -1; } return result; } private int doRead(ByteBuffer buf) throws IOException { try { int fdToRead = fd.acquire(); if (fdToRead == -1) { return -1; } return UnixDomainSocketLibrary.read(fdToRead, buf, buf.remaining()); } catch (LastErrorException e) { throw new IOException(e); } finally { fd.release(); } } } private class UnixDomainSocketOutputStream extends OutputStream { @Override public void write(int b) throws IOException { ByteBuffer buf = ByteBuffer.allocate(1); buf.put(0, (byte) (0xFF & b)); doWrite(buf); } @Override public void write(byte[] b, int off, int len) throws IOException { if (len == 0) { return; } ByteBuffer buf = ByteBuffer.wrap(b, off, len); doWrite(buf); } private void doWrite(ByteBuffer buf) throws IOException { try { int fdToWrite = fd.acquire(); if (fdToWrite == -1) { return; } int ret = UnixDomainSocketLibrary.write(fdToWrite, buf, buf.remaining()); if (ret != buf.remaining()) { // This shouldn't happen with standard blocking Unix domain sockets. throw new IOException("Could not write " + buf.remaining() + " bytes as requested " + "(wrote " + ret + " bytes instead)"); } } catch (LastErrorException e) { throw new IOException(e); } finally { fd.release(); } } } } watchman-4.9.0/java/src/com/facebook/watchman/unixsocket/UnixDomainSocketLibrary.java000066400000000000000000000126511314236077500310140ustar00rootroot00000000000000/* * Copyright 2015-present Facebook, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. You may obtain * a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ /* Copyright 2004-2015, Martian Software, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package com.facebook.watchman.unixsocket; import com.sun.jna.LastErrorException; import com.sun.jna.Native; import com.sun.jna.Platform; import com.sun.jna.Structure; import com.sun.jna.Union; import com.sun.jna.ptr.IntByReference; import java.io.IOException; import java.nio.ByteBuffer; import java.util.Arrays; import java.util.List; /** * Utility class to bridge native Unix domain socket calls to Java using JNA. */ class UnixDomainSocketLibrary { public static final int PF_LOCAL = 1; public static final int AF_LOCAL = 1; public static final int SOCK_STREAM = 1; public static final int SHUT_RD = 0; public static final int SHUT_WR = 1; // Utility class, do not instantiate. private UnixDomainSocketLibrary() { } // BSD platforms write a length byte at the start of struct sockaddr_un. private static final boolean HAS_SUN_LEN = isBsdish(); private static boolean isBsdish() { return Platform.isMac() || Platform.isFreeBSD() || Platform.isNetBSD() || Platform.isOpenBSD() || Platform.iskFreeBSD(); } /** * Bridges {@code struct sockaddr_un} to and from native code. */ public static class SockaddrUn extends Structure implements Structure.ByReference { /** * On BSD platforms, the {@code sun_len} and {@code sun_family} values in * {@code struct sockaddr_un}. */ public static class SunLenAndFamily extends Structure { public byte sunLen; public byte sunFamily; @Override protected List getFieldOrder() { return Arrays.asList(new String[] { "sunLen", "sunFamily" }); } } /** * On BSD platforms, {@code sunLenAndFamily} will be present. * On other platforms, only {@code sunFamily} will be present. */ public static class SunFamily extends Union { public SunLenAndFamily sunLenAndFamily; public short sunFamily; } public SunFamily sunFamily = new SunFamily(); public byte[] sunPath = new byte[104]; /** * Constructs an empty {@code struct sockaddr_un}. */ public SockaddrUn() { if (HAS_SUN_LEN) { sunFamily.sunLenAndFamily = new SunLenAndFamily(); sunFamily.setType(SunLenAndFamily.class); } else { sunFamily.setType(Short.TYPE); } allocateMemory(); } /** * Constructs a {@code struct sockaddr_un} with a path whose bytes are encoded * using the default encoding of the platform. */ public SockaddrUn(String path) throws IOException { byte[] pathBytes = path.getBytes(); if (pathBytes.length > sunPath.length - 1) { throw new IOException( "Cannot fit name [" + path + "] in maximum unix domain socket length"); } System.arraycopy(pathBytes, 0, sunPath, 0, pathBytes.length); sunPath[pathBytes.length] = (byte) 0; if (HAS_SUN_LEN) { int len = fieldOffset("sunPath") + pathBytes.length; sunFamily.sunLenAndFamily = new SunLenAndFamily(); sunFamily.sunLenAndFamily.sunLen = (byte) len; sunFamily.sunLenAndFamily.sunFamily = AF_LOCAL; sunFamily.setType(SunLenAndFamily.class); } else { sunFamily.sunFamily = AF_LOCAL; sunFamily.setType(Short.TYPE); } allocateMemory(); } @Override protected List getFieldOrder() { return Arrays.asList(new String[] { "sunFamily", "sunPath" }); } } static { Native.register(Platform.C_LIBRARY_NAME); } public static native int socket(int domain, int type, int protocol) throws LastErrorException; public static native int connect(int fd, SockaddrUn address, int addressLen) throws LastErrorException; public static native int bind(int fd, SockaddrUn address, int addressLen) throws LastErrorException; public static native int listen(int fd, int backlog) throws LastErrorException; public static native int accept(int fd, SockaddrUn address, IntByReference addressLen) throws LastErrorException; public static native int read(int fd, ByteBuffer buffer, int count) throws LastErrorException; public static native int write(int fd, ByteBuffer buffer, int count) throws LastErrorException; public static native int close(int fd) throws LastErrorException; public static native int shutdown(int fd, int how) throws LastErrorException; } watchman-4.9.0/java/src/com/facebook/watchman/windowspipe/000077500000000000000000000000001314236077500235475ustar00rootroot00000000000000watchman-4.9.0/java/src/com/facebook/watchman/windowspipe/WindowsNamedPipe.java000066400000000000000000000122151314236077500276300ustar00rootroot00000000000000/* * Copyright 2017-present Facebook. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. You may obtain * a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ package com.facebook.watchman.windowspipe; import com.facebook.watchman.WatchmanTransport; import com.sun.jna.Memory; import com.sun.jna.platform.win32.WinBase; import com.sun.jna.platform.win32.WinError; import com.sun.jna.platform.win32.WinNT; import com.sun.jna.ptr.IntByReference; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Arrays; /** * Implements a {@link WatchmanTransport} backed by a native windows named pipe. * This implementation opens a named pipe in overlapped (async) mode. * It means that one thread can read and another thread can write at the same time * (exactly what {@link com.facebook.watchman.WatchmanConnection} does). */ public class WindowsNamedPipe implements WatchmanTransport { private static final WindowsNamedPipeLibrary API = WindowsNamedPipeLibrary.INSTANCE; private final WinNT.HANDLE pipeHandle; private final InputStream in; private final OutputStream out; // Assumption: reading and writing are async and happen in different threads (see WatchmanConnection). // So, each operation (read, write) has its own waitable object. private final WinNT.HANDLE readerWaitable; private final WinNT.HANDLE writerWaitable; public WindowsNamedPipe(String path) throws IOException { pipeHandle = API.CreateFile( path, WinNT.GENERIC_READ | WinNT.GENERIC_WRITE, 0, null, WinNT.OPEN_EXISTING, WinNT.FILE_FLAG_OVERLAPPED, null ); if (WinNT.INVALID_HANDLE_VALUE.equals(pipeHandle) ) { throw new IOException("Failed to open a named pipe " + path + " error:" + API.GetLastError()); } in = new NamedPipeInputStream(); out = new NamedPipeOutputStream(); readerWaitable = API.CreateEvent(null, true, false, null); if (readerWaitable == null) { throw new IOException("CreateEvent() failed "); } writerWaitable = API.CreateEvent(null, true, false, null); if (writerWaitable == null) { throw new IOException("CreateEvent() failed "); } } @Override public void close() throws IOException { API.CloseHandle(pipeHandle); API.CloseHandle(readerWaitable); API.CloseHandle(writerWaitable); } @Override public InputStream getInputStream() { return in; } @Override public OutputStream getOutputStream() { return out; } private class NamedPipeOutputStream extends OutputStream { @Override public void write(int b) throws IOException { write(new byte[]{(byte) (0xFF & b)}); } @Override public void write(byte[] b, int off, int len) throws IOException { byte[] data = Arrays.copyOfRange(b, off, off + len); WinBase.OVERLAPPED olap = new WinBase.OVERLAPPED(); olap.hEvent = writerWaitable; olap.write(); boolean immediate = API.WriteFile(pipeHandle, data, len, null, olap.getPointer()); if (!immediate) { if (API.GetLastError() != WinError.ERROR_IO_PENDING) { throw new IOException("WriteFile() failed"); } } IntByReference written = new IntByReference(); if (!API.GetOverlappedResult(pipeHandle, olap.getPointer(), written, true)) { throw new IOException("GetOverlappedResult() failed for write operation"); } if (written.getValue() != len) { throw new IOException("WriteFile() wrote less bytes than requested"); } } } private class NamedPipeInputStream extends InputStream { @Override public int read() throws IOException { byte[] b = new byte[1]; read(b); return 0xFF & b[0]; } @Override public int read(byte[] b, int off, int len) throws IOException { Memory readBuffer = new Memory(len); WinBase.OVERLAPPED olap = new WinBase.OVERLAPPED(); olap.hEvent = readerWaitable; olap.write(); boolean immediate = API.ReadFile(pipeHandle, readBuffer, len, null, olap.getPointer()); if (!immediate) { if (API.GetLastError() != WinError.ERROR_IO_PENDING) { throw new IOException("ReadFile() failed "); } } IntByReference read = new IntByReference(); if (!API.GetOverlappedResult(pipeHandle, olap.getPointer(), read, true)) { throw new IOException("GetOverlappedResult() failed for read operation"); } if (read.getValue() != len) { throw new IOException("ReadFile() read less bytes than requested"); } byte[] byteArray = readBuffer.getByteArray(0, len); System.arraycopy(byteArray, 0, b, off, len); return len; } } } watchman-4.9.0/java/src/com/facebook/watchman/windowspipe/WindowsNamedPipeLibrary.java000066400000000000000000000041631314236077500311600ustar00rootroot00000000000000/* * Copyright 2017-present Facebook. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. You may obtain * a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ package com.facebook.watchman.windowspipe; import com.sun.jna.Memory; import com.sun.jna.Native; import com.sun.jna.Pointer; import com.sun.jna.platform.win32.WinBase; import com.sun.jna.platform.win32.WinNT; import com.sun.jna.ptr.IntByReference; import com.sun.jna.win32.W32APIOptions; public interface WindowsNamedPipeLibrary extends WinNT { WindowsNamedPipeLibrary INSTANCE = (WindowsNamedPipeLibrary) Native.loadLibrary("kernel32", WindowsNamedPipeLibrary.class, W32APIOptions.UNICODE_OPTIONS); boolean GetOverlappedResult(HANDLE hFile, Pointer lpOverlapped, IntByReference lpNumberOfBytesTransferred, boolean wait); boolean ReadFile(HANDLE hFile, Memory pointer, int nNumberOfBytesToRead, IntByReference lpNumberOfBytesRead, Pointer lpOverlapped); HANDLE CreateFile(String lpFileName, int dwDesiredAccess, int dwShareMode, WinBase.SECURITY_ATTRIBUTES lpSecurityAttributes, int dwCreationDisposition, int dwFlagsAndAttributes, HANDLE hTemplateFile); HANDLE CreateEvent(WinBase.SECURITY_ATTRIBUTES lpEventAttributes, boolean bManualReset, boolean bInitialState, String lpName); boolean CloseHandle(HANDLE hObject); boolean WriteFile(HANDLE hFile, byte[] lpBuffer, int nNumberOfBytesToWrite, IntByReference lpNumberOfBytesWritten, Pointer lpOverlapped); int GetLastError(); } watchman-4.9.0/java/test/000077500000000000000000000000001314236077500152365ustar00rootroot00000000000000watchman-4.9.0/java/test/com/000077500000000000000000000000001314236077500160145ustar00rootroot00000000000000watchman-4.9.0/java/test/com/facebook/000077500000000000000000000000001314236077500175655ustar00rootroot00000000000000watchman-4.9.0/java/test/com/facebook/watchman/000077500000000000000000000000001314236077500213675ustar00rootroot00000000000000watchman-4.9.0/java/test/com/facebook/watchman/CapabilitiesTest.java000066400000000000000000000106251314236077500254670ustar00rootroot00000000000000/* * Copyright 2015-present Facebook, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. You may obtain * a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ package com.facebook.watchman; import java.io.IOException; import java.util.List; import java.util.Map; import com.facebook.watchman.fakes.FakeWatchmanClient; import com.google.common.collect.ImmutableMap; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.SettableFuture; import org.junit.Assert; import org.junit.Test; public class CapabilitiesTest { public static String DEFAULT_VERSION_STRING = "1.2.3"; /** * Make sure that CapabilitiesStrategy#checkWatchProjectCapability only calls WatchmanClient#version, and * no other method of the client. Also make sure that "cmd-watch-project" is the only required * capability, with no other optional capabilities being queried. */ @Test public void testWatchProjectVersionCalled() { Map response = ImmutableMap.builder() .put("capabilities", ImmutableMap.builder().put("cmd-watch-project", true).build()) .put("version", DEFAULT_VERSION_STRING) .build(); final SettableFuture> future = SettableFuture.create(); future.set(response); WatchmanClient mock = new FakeWatchmanClient() { @Override public ListenableFuture> version( List optionalCapabilities, List requiredCapabilities) { IllegalArgumentException e = new IllegalArgumentException( "The requiredCapabilities argument should be equal to [\"cmd-watch-project\"]"); if (requiredCapabilities.size() != 1) throw e; if (!requiredCapabilities.get(0).equals("cmd-watch-project")) throw e; return future; } }; CapabilitiesStrategy.checkWatchProjectCapability(mock); } /** * Test that the return value is correct, when Watchman supports capabilities, and watch-project * is one of them. */ @Test public void testWatchProjectCapabilitySupported() { Map response = ImmutableMap.builder() .put("capabilities", ImmutableMap.builder().put("cmd-watch-project", true).build()) .put("version", DEFAULT_VERSION_STRING) .build(); final SettableFuture> future = SettableFuture.create(); future.set(response); WatchmanClient mock = new FakeWatchmanClient() { @Override public ListenableFuture> version( List optionalCapabilities, List requiredCapabilities) { return future; } }; Assert.assertTrue(CapabilitiesStrategy.checkWatchProjectCapability(mock)); } /** * Test that the return value is correct, when watchman supports capabilities, but the * watch-project command is not supported. (theoretically impossible, since capabilities were * introduced in 3.8 and watch-project in 3.1, but better make sure). */ @Test public void testWatchProjectCapabilityUnsupported() { final SettableFuture> future = SettableFuture.create(); future.setException(new WatchmanException("something")); WatchmanClient mock = new FakeWatchmanClient() { @Override public ListenableFuture> version( List optionalCapabilities, List requiredCapabilities) { return future; } }; Assert.assertFalse(CapabilitiesStrategy.checkWatchProjectCapability(mock)); } /** * Add @Test to this method to check if the methods work fine with your local Watchman install. */ @Test public void testIntegration() throws WatchmanTransportUnavailableException, IOException { WatchmanClient client = new WatchmanClientImpl(WatchmanTransportBuilder.discoverTransport()); client.start(); Assert.assertTrue(CapabilitiesStrategy.checkWatchProjectCapability(client)); client.close(); } } watchman-4.9.0/java/test/com/facebook/watchman/WatchmanClientTest.java000066400000000000000000000311061314236077500257740ustar00rootroot00000000000000/* * Copyright 2015-present Facebook, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. You may obtain * a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ package com.facebook.watchman; import java.io.ByteArrayInputStream; import java.io.IOException; import java.nio.file.Paths; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicReference; import com.facebook.watchman.bser.BserDeserializer; import com.google.common.base.Supplier; import com.google.common.collect.ImmutableMap; import org.hamcrest.Matchers; import org.junit.Assert; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; import org.mockito.Mockito; public class WatchmanClientTest extends WatchmanTestBase { private WatchmanClient mClient; private Boolean withWatchProject; @Rule public ExpectedException thrown = ExpectedException.none(); /* @Before methods in subclasses are run AFTER @Before methods of the base class */ @Before public void setClient() throws IOException { withWatchProject = true; mClient = new WatchmanClientImpl( mIncomingMessageGetter, mOutgoingMessageStream, new Supplier() { @Override public Boolean get() { return withWatchProject; } }); mClient.start(); } @SuppressWarnings("unchecked") @Test public void subscribeTriggersListenerTest() throws InterruptedException { Map subscriptionReply = new HashMap<>(); subscriptionReply.put("version", "1.2.3"); // "subscribe" value should be private to WatchmanClient so we could use any mock string subscriptionReply.put("subscribe", "sub-0"); mObjectQueue.put(subscriptionReply); Map subscribeEvent = new HashMap<>(); subscribeEvent.put("version", "1.2.3"); subscribeEvent.put("clock", "c:123:1234"); subscribeEvent.put("files", Arrays.asList("/foo/bar", "/foo/baz")); subscribeEvent.put("root", "/foo"); subscribeEvent.put("subscription", "sub-0"); mObjectQueue.put(subscribeEvent); final CountDownLatch latch = new CountDownLatch(1); final AtomicReference> result = new AtomicReference<>(); mClient.subscribe(Paths.get("/foo"), null, new Callback() { @Override public void call(Map event) { result.set(event); latch.countDown(); } }); if (! latch.await(10, TimeUnit.SECONDS)) { Assert.fail(); } deepObjectEquals(subscribeEvent, result.get()); } /** * Test the case when we get a unilateral message from Watchman (a subscription update event) * before the answer to the command we have just sent. We expect that the response to the watch * request is delivered, and not the subscription update event. */ @SuppressWarnings("unchecked") @Test public void watchProjectWithUnilateralTest() throws ExecutionException, InterruptedException { Map dummyUnilateralMessage = new HashMap<>(); dummyUnilateralMessage.put("version", "1.2.3"); dummyUnilateralMessage.put("clock", "c:123:1234"); dummyUnilateralMessage.put("files", Arrays.asList("/foo/bar", "/foo/baz")); dummyUnilateralMessage.put("root", "/foo"); dummyUnilateralMessage.put("subscription", "sub-0"); mObjectQueue.put(dummyUnilateralMessage); Map mockResponse = new HashMap<>(); mockResponse.put("version", "1.2.3"); mockResponse.put("watch", "/foo/bar"); mockResponse.put("relative_path", "/foo"); mObjectQueue.put(mockResponse); Map receivedResponse = mClient.watch(Paths.get("/foo/bar")).get(); deepObjectEquals(mockResponse, receivedResponse); } /** * Test that the watch-project request sent by WatchmanClient respects the interface of Watchman */ @SuppressWarnings("unchecked") @Test public void watchProjectRequestTest() throws IOException, ExecutionException, InterruptedException { String PATH = "/foo/bar"; mObjectQueue.put(new HashMap()); // response irrelevant mClient.watch(Paths.get(PATH)).get(); ByteArrayInputStream in = new ByteArrayInputStream(mOutgoingMessageStream.toByteArray()); BserDeserializer deserializer = new BserDeserializer(BserDeserializer.KeyOrdering.UNSORTED); List request = (List) deserializer.deserializeBserValue(in); //noinspection RedundantCast deepObjectEquals( Arrays.asList("watch-project", PATH), request); } /** * Test that the watch-del request sent by WatchmanClient respects the interface of Watchman */ @SuppressWarnings("unchecked") @Test public void watchDelRequestTest() throws IOException, ExecutionException, InterruptedException { String PATH = "/foo/bar"; mObjectQueue.put(new HashMap()); // response irrelevant mClient.watchDel(Paths.get(PATH)).get(); ByteArrayInputStream in = new ByteArrayInputStream(mOutgoingMessageStream.toByteArray()); BserDeserializer deserializer = new BserDeserializer(BserDeserializer.KeyOrdering.UNSORTED); List request = (List) deserializer.deserializeBserValue(in); //noinspection RedundantCast deepObjectEquals( Arrays.asList("watch-del", PATH), request); } /** * Test that requesting a watch when watch-project is unavailable throws a WatchmanException whose * message mentions upgrading Watchman. */ @SuppressWarnings("unchecked") @Test public void watchRequestTest() throws IOException, ExecutionException, InterruptedException { String PATH = "/foo/bar"; thrown.expect(ExecutionException.class); thrown.expectCause(Matchers.allOf( Matchers.isA(WatchmanException.class), Matchers.hasToString( Matchers.containsString("upgrade")))); withWatchProject = false; mClient.watch(Paths.get(PATH)).get(); // throws } /** * Test that the subscribe request sent by WatchmanClient respects the interface of Watchman */ @SuppressWarnings("unchecked") @Test public void subscribeRequestTest() throws ExecutionException, InterruptedException, IOException { final String PATH = "/foo/bar"; final String NAME = "sub-0"; Callback mockListener = Mockito.mock(Callback.class); Map response = new HashMap<>(); response.put("subscribe", "name"); mObjectQueue.put(response); // response irrelevant mClient.subscribe( Paths.get(PATH), new HashMap(), mockListener).get(); ByteArrayInputStream in = new ByteArrayInputStream(mOutgoingMessageStream.toByteArray()); BserDeserializer deserializer = new BserDeserializer(BserDeserializer.KeyOrdering.UNSORTED); List request = (List) deserializer.deserializeBserValue(in); deepObjectEquals( Arrays.asList("subscribe", PATH, NAME, new HashMap()), request); } /** * Test that the unsubscribe request sent by WatchmanClient respects the interface of Watchman */ @SuppressWarnings("unchecked") @Test public void unsubscribeRequestTest() throws ExecutionException, InterruptedException, IOException { final String PATH = "/foo/bar"; final String NAME = "sub-0"; Map response = new HashMap<>(); response.put("deleted", true); mObjectQueue.put(response); // response irrelevant mObjectQueue.put(response); // response irrelevant Callback mockListener = Mockito.mock(Callback.class); WatchmanClient.SubscriptionDescriptor descriptor = mClient.subscribe( Paths.get(PATH), new HashMap(), mockListener).get(); mOutgoingMessageStream.reset(); // ignore the subscribe command mClient.unsubscribe(descriptor).get(); ByteArrayInputStream in = new ByteArrayInputStream(mOutgoingMessageStream.toByteArray()); BserDeserializer deserializer = new BserDeserializer(BserDeserializer.KeyOrdering.UNSORTED); List request = (List) deserializer.deserializeBserValue(in); deepObjectEquals( Arrays.asList("unsubscribe", PATH, NAME), request); } /** * Test that the clock request sent by WatchmanClient respects the interface of Watchman */ @SuppressWarnings("unchecked") @Test public void clockRequestWithoutTimeoutTest() throws ExecutionException, InterruptedException, IOException { final String PATH = "/foo/bar"; Map response = new HashMap<>(); response.put("clock", "some value"); mObjectQueue.put(response); // response irrelevant mClient.clock(Paths.get(PATH)).get(); ByteArrayInputStream in = new ByteArrayInputStream(mOutgoingMessageStream.toByteArray()); BserDeserializer deserializer = new BserDeserializer(BserDeserializer.KeyOrdering.UNSORTED); List request = (List) deserializer.deserializeBserValue(in); deepObjectEquals( Arrays.asList("clock", PATH), request); } /** * Test that the clock request sent by WatchmanClient respects the interface of Watchman, when * sync_timeout is also required */ @SuppressWarnings("unchecked") @Test public void clockRequestWithTimeoutTest() throws ExecutionException, InterruptedException, IOException { final String PATH = "/foo/bar"; final Short SYNC_TIMEOUT = 1500; Map response = new HashMap<>(); response.put("clock", "some value"); mObjectQueue.put(response); // response irrelevant mClient.clock(Paths.get(PATH), SYNC_TIMEOUT).get(); ByteArrayInputStream in = new ByteArrayInputStream(mOutgoingMessageStream.toByteArray()); BserDeserializer deserializer = new BserDeserializer(BserDeserializer.KeyOrdering.UNSORTED); List request = (List) deserializer.deserializeBserValue(in); deepObjectEquals( Arrays.asList( "clock", PATH, ImmutableMap.of("sync_timeout", SYNC_TIMEOUT)), request); } /** * Test that the version request sent by WatchmanClient respects the interface of Watchman */ @SuppressWarnings("unchecked") @Test public void versionRequestTestNoCapabilities() throws ExecutionException, InterruptedException, IOException { Map response = new HashMap<>(); response.put("version", "1.2.3"); mObjectQueue.put(response); // response irrelevant mClient.version().get(); ByteArrayInputStream in = new ByteArrayInputStream(mOutgoingMessageStream.toByteArray()); BserDeserializer deserializer = new BserDeserializer(BserDeserializer.KeyOrdering.UNSORTED); List request = (List) deserializer.deserializeBserValue(in); deepObjectEquals( Arrays.asList("version"), request); } /** * Test that the version request sent by WatchmanClient respects the interface of Watchman */ @SuppressWarnings("unchecked") @Test public void versionRequestTestWithCapabilities() throws ExecutionException, InterruptedException, IOException { Map response = new HashMap<>(); response.put("version", "1.2.3"); mObjectQueue.put(response); // response irrelevant List optionalCapabilities = Collections.singletonList("optional1"); List requiredCapabilities = Arrays.asList("required1", "required2"); mClient.version(optionalCapabilities, requiredCapabilities).get(); Map expectedCapabilitiesMap = new HashMap<>(); expectedCapabilitiesMap.put("optional", optionalCapabilities); expectedCapabilitiesMap.put("required", requiredCapabilities); ByteArrayInputStream in = new ByteArrayInputStream(mOutgoingMessageStream.toByteArray()); BserDeserializer deserializer = new BserDeserializer(BserDeserializer.KeyOrdering.UNSORTED); List request = (List) deserializer.deserializeBserValue(in); deepObjectEquals( Arrays.asList("version", expectedCapabilitiesMap), request); } } watchman-4.9.0/java/test/com/facebook/watchman/WatchmanConnectionTest.java000066400000000000000000000346131314236077500266630ustar00rootroot00000000000000/* * Copyright 2015-present Facebook, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. You may obtain * a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ package com.facebook.watchman; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.Callable; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutionException; import java.util.concurrent.Executors; import java.util.concurrent.Semaphore; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicReference; import com.facebook.watchman.bser.BserDeserializer; import com.facebook.watchman.bser.BserSerializer; import com.google.common.base.Optional; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.util.concurrent.FutureCallback; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; import org.hamcrest.Matchers; import org.junit.Assert; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; public class WatchmanConnectionTest extends WatchmanTestBase { private static final String CLOCK = "c:123:1234"; @Rule public ExpectedException thrown = ExpectedException.none(); /** * Test that sending a request with a response available will actually return that response. */ @SuppressWarnings("unchecked") @Test public void sendCommandTest() throws ExecutionException, InterruptedException, IOException { Map mockResponse = new HashMap<>(); mockResponse.put("clock", CLOCK); mObjectQueue.put(mockResponse); WatchmanConnection connection = new WatchmanConnection(mIncomingMessageGetter, mOutgoingMessageStream); connection.start(); Map receivedResponse = connection.run(Arrays.asList("clock", "/a/b/c")).get(); deepObjectEquals(mockResponse, receivedResponse); } /** * Test that requesting two commands to be sent will block the latter until the former receives * a response. */ @Test public void singleCommandTest() throws IOException, ExecutionException, InterruptedException { final List firstMessage = Arrays.asList("clock", "/a/b/c"); final List secondMessage = Arrays.asList("watch-project", "/a/b/c"); final Map firstResponse = new HashMap<>(); firstResponse.put("clock", CLOCK); final Semaphore commandSentSemaphore = new Semaphore(0); WatchmanConnection connection = new WatchmanConnection( mIncomingMessageGetter, mOutgoingMessageStream, Optional.of( new WatchmanConnection.WatchmanCommandListener() { @Override public void onStart() { } @Override public void onSent() { commandSentSemaphore.release(); } @Override public void onReceived() { } })); connection.start(); ListenableFuture> firstFuture = connection.run(firstMessage); ListenableFuture> secondFuture = connection.run(secondMessage); ByteArrayOutputStream expected = new ByteArrayOutputStream(); BserSerializer serializer = new BserSerializer(); serializer.serializeToStream(firstMessage, expected); commandSentSemaphore.acquire(); Assert.assertArrayEquals(expected.toByteArray(), this.mOutgoingMessageStream.toByteArray()); mObjectQueue.put(new HashMap()); firstFuture.get(); serializer.serializeToStream(secondMessage, expected); commandSentSemaphore.acquire(); Assert.assertArrayEquals(expected.toByteArray(), this.mOutgoingMessageStream.toByteArray()); } /** * Test that receiving a message which contains an "error" label will result in an error thrown. */ @SuppressWarnings("ThrowableInstanceNeverThrown") @Test public void exceptionThrownTest() throws InterruptedException, ExecutionException { final String reason = "please throw"; WatchmanException expected = new WatchmanException(reason); thrown.expect(ExecutionException.class); thrown.expectCause(Matchers.allOf( Matchers.isA(WatchmanException.class), Matchers.hasToString(expected.toString()))); final List request = Arrays.asList("clock", "/a/b/c"); // irrelevant final Map response = new HashMap<>(); response.put("error", reason); mObjectQueue.put(response); WatchmanConnection connection = new WatchmanConnection(mIncomingMessageGetter, mOutgoingMessageStream); connection.start(); connection.run(request).get(); } /** * Test that receiving a unilateral update with a request under processing will deliver the * unilateral message to the unilateral handler and **then** return the request's response to the * requester. */ @Test public void testUnilateralMessageBeforeResponse() throws ExecutionException, InterruptedException { final String unilateralLabel = "unifoo"; final List request = Collections.singletonList("version"); final Map response = ImmutableMap.of("version", "irrelevant"); final Map unilateral = ImmutableMap.of(unilateralLabel, "bar"); // following two are AtomicBooleans instead of booleans because we need them final (used in // anonymous inner classes) and non-final; synchronization is offered by the Semaphore final AtomicBoolean callbackConditionRespected = new AtomicBoolean(false); final AtomicBoolean responseConditionRespected = new AtomicBoolean(false); final AtomicBoolean callbackHasRun = new AtomicBoolean(false); final AtomicBoolean responseHasRun = new AtomicBoolean(false); final Semaphore conditionSemaphore = new Semaphore(1); final CountDownLatch waitedResponses = new CountDownLatch(2); Callback callbackListener = new Callback() { @Override public void call(Map message) throws Exception { try { conditionSemaphore.acquire(); callbackConditionRespected.set(!responseHasRun.get()); callbackHasRun.set(true); conditionSemaphore.release(); } catch (InterruptedException ignored) { } finally { waitedResponses.countDown(); } } }; WatchmanConnection connection = new WatchmanConnection( mIncomingMessageGetter, mOutgoingMessageStream, Optional.>of(Collections.singletonList(unilateralLabel)), Optional.of(callbackListener)); connection.start(); connection.run(request).addListener( new Runnable() { @Override public void run() { try { conditionSemaphore.acquire(); responseConditionRespected.set(callbackHasRun.get()); responseHasRun.set(true); conditionSemaphore.release(); } catch (InterruptedException ignored) { } finally { waitedResponses.countDown(); } } }, Executors.newSingleThreadExecutor()); mObjectQueue.put(unilateral); mObjectQueue.put(response); waitedResponses.await(); Assert.assertTrue(callbackConditionRespected.get()); Assert.assertTrue(responseConditionRespected.get()); } /** * Test that receiving a WatchmanConnection#close before the commands in the queue have finished * executing will make all the commands throw with an error. Also, only the first command should * have been sent over the wire, and since no response is provided, the subsequent commands are * blocked by the first one waiting. * * Note that we must wait for the first message to have successfully been transmitted. */ @Test public void testCurrentRequestCanceled() throws InterruptedException, IOException { final List request = ImmutableList.of("version"); final int nrRequests = 5; final CountDownLatch requestSpinner = new CountDownLatch(nrRequests); final CountDownLatch closeSpinner = new CountDownLatch(nrRequests); final Semaphore oneMessageSent = new Semaphore(0); WatchmanConnection connection = new WatchmanConnection( mIncomingMessageGetter, mOutgoingMessageStream, Optional.of( new WatchmanConnection.WatchmanCommandListener() { @Override public void onStart() {} @Override public void onSent() { requestSpinner.countDown(); oneMessageSent.release(); } @Override public void onReceived() {} })); connection.start(); List conditions = new ArrayList(); for (int i=0; i> futureRequest = connection.run(request); Futures.addCallback( futureRequest, new FutureCallback>() { @Override public void onSuccess(Map result) { conditionRespected.set(false); closeSpinner.countDown(); } @Override public void onFailure(Throwable t) { conditionRespected.set(true); closeSpinner.countDown(); } }); } oneMessageSent.acquire(); connection.close(); if (!requestSpinner.await(3, TimeUnit.SECONDS)) { Assert.fail("Requests time limit exceeded"); } if (!closeSpinner.await(3, TimeUnit.SECONDS)) { Assert.fail("Close time limit exceeded"); } ByteArrayOutputStream expected = new ByteArrayOutputStream(); BserSerializer serializer = new BserSerializer(); serializer.serializeToStream(request, expected); Assert.assertArrayEquals(expected.toByteArray(), this.mOutgoingMessageStream.toByteArray()); int entry = 0; for (AtomicBoolean condition: conditions) { Assert.assertTrue( "Asserting condition for request #" + Integer.toString(entry), condition.get()); entry++; } } @Test public void propagatesDeserializationException() throws Exception { final AtomicReference expectedExceptionRef = new AtomicReference<>(); final Semaphore commandSentSemaphore = new Semaphore(0); WatchmanConnection.WatchmanCommandListener commandListener = new WatchmanConnection.WatchmanCommandListener() { @Override public void onStart() { } @Override public void onSent() { commandSentSemaphore.release(); } @Override public void onReceived() { } }; Callable> incomingMessageGetter = new Callable>() { @Override public Map call() throws Exception { commandSentSemaphore.acquire(); BserDeserializer.BserEofException e = new BserDeserializer.BserEofException("expected"); expectedExceptionRef.set(e); throw e; } }; WatchmanConnection connection = new WatchmanConnection( incomingMessageGetter, mOutgoingMessageStream, Optional.of(commandListener)); connection.start(); ListenableFuture> listenableFuture = connection.run(Arrays.asList("clock", "/a/b/c")); try { Map receivedResponse = listenableFuture.get(5, TimeUnit.SECONDS); Assert.fail("Should not get a response, got " + receivedResponse.toString()); } catch (ExecutionException executionException) { Assert.assertSame(expectedExceptionRef.get(), executionException.getCause()); } } @Test public void propagatesInterruptionException() throws Exception { final Semaphore enteredCallable = new Semaphore(0); final Semaphore exitedCallable = new Semaphore(0); final AtomicReference threadRef = new AtomicReference<>(); final AtomicReference expectedException = new AtomicReference<>(); Callable> incomingMessageGetter = new Callable>() { @Override public Map call() throws Exception { try { threadRef.set(Thread.currentThread()); enteredCallable.release(); new Semaphore(0).acquire(); // wait for interruption return new HashMap<>(); } catch (InterruptedException e) { expectedException.set(e); throw e; } finally { exitedCallable.release(); } } }; WatchmanConnection connection = new WatchmanConnection(incomingMessageGetter, mOutgoingMessageStream); connection.start(); ListenableFuture> listenableFuture = connection.run(Arrays.asList("clock", "/a/b/c")); enteredCallable.acquire(); threadRef.get().interrupt(); Assert.assertTrue("Callable should have exited", exitedCallable.tryAcquire(5, TimeUnit.SECONDS)); try { listenableFuture.get(5, TimeUnit.SECONDS); Assert.fail("Should not be able to get a result from an interrupted operation"); } catch (InterruptedException e) { // This is reasonable behavior... Assert.assertSame("If InterruptedException, should be the one thrown by thread", expectedException.get(), e); } catch (ExecutionException e) { // ...and this is also reasonable behavior. Assert.assertSame("If ExecutionException, cause should be exception that interrupted thread", expectedException.get(), e.getCause()); } } } watchman-4.9.0/java/test/com/facebook/watchman/WatchmanTestBase.java000066400000000000000000000064501314236077500254340ustar00rootroot00000000000000/* * Copyright 2015-present Facebook, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. You may obtain * a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ package com.facebook.watchman; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.concurrent.BlockingQueue; import java.util.concurrent.Callable; import java.util.concurrent.LinkedBlockingQueue; import org.junit.Assert; import org.junit.Before; public class WatchmanTestBase { protected ByteArrayOutputStream mOutgoingMessageStream; protected BlockingQueue> mObjectQueue; protected Callable> mIncomingMessageGetter; @Before public void setUp() throws IOException { mOutgoingMessageStream = new ByteArrayOutputStream(); mObjectQueue = new LinkedBlockingQueue<>(); mIncomingMessageGetter = new Callable>() { @Override public Map call() throws Exception { return mObjectQueue.take(); } }; } @SuppressWarnings("unchecked") protected static void deepObjectEquals(List expected, List object) { Assert.assertNotNull(object); Assert.assertEquals(expected.size(), object.size()); Iterator iteratorExpected = expected.iterator(); Iterator iteratorObject = object.iterator(); while (iteratorExpected.hasNext()) { Object elementExpected = iteratorExpected.next(); Object elementObject = iteratorObject.next(); if (elementExpected instanceof List) { Assert.assertTrue(elementObject instanceof List); deepObjectEquals((List) elementExpected, (List) elementObject); } else if (elementExpected instanceof Map) { Assert.assertTrue(elementObject instanceof Map); deepObjectEquals((Map) elementExpected, (Map) elementObject); } else { Assert.assertEquals(elementExpected, elementObject); } } } @SuppressWarnings("unchecked") protected static void deepObjectEquals(Map expected, Map object) { Assert.assertNotNull(object); Assert.assertEquals(expected.size(), object.size()); for (String key: expected.keySet()) { Object elementExpected = expected.get(key); Object elementObject = object.get(key); if (elementExpected instanceof List) { Assert.assertTrue(elementObject instanceof List); deepObjectEquals((List) elementExpected, (List) elementObject); } else if (elementExpected instanceof Map) { Assert.assertTrue(elementObject instanceof Map); deepObjectEquals((Map) elementExpected, (Map) elementObject); } else { Assert.assertEquals(elementExpected, elementObject); } } } } watchman-4.9.0/java/test/com/facebook/watchman/bser/000077500000000000000000000000001314236077500223225ustar00rootroot00000000000000watchman-4.9.0/java/test/com/facebook/watchman/bser/BserDeserializerTest.java000066400000000000000000000362601314236077500272720ustar00rootroot00000000000000/* * Copyright 2015-present Facebook, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. You may obtain * a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ package com.facebook.watchman.bser; import static org.hamcrest.Matchers.closeTo; import static org.hamcrest.Matchers.contains; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.nullValue; import static org.hamcrest.Matchers.sameInstance; import static org.junit.Assert.assertThat; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.io.BaseEncoding; import java.io.ByteArrayInputStream; import java.io.InputStream; import java.io.IOException; import java.nio.ByteOrder; import java.nio.charset.CharacterCodingException; import java.util.AbstractMap.SimpleImmutableEntry; import java.util.List; import java.util.Map; import com.facebook.watchman.bser.BserDeserializer; import org.hamcrest.Matchers; import org.junit.rules.ExpectedException; import org.junit.Rule; import org.junit.Test; @SuppressWarnings("unchecked") public class BserDeserializerTest { @Rule public ExpectedException thrown = ExpectedException.none(); private static final String SHORT_11FF; private static final String INT_1122EEFF; private static final String LONG_0000000080000000; private static final String LONG_11223344CCDDEEFF; private static final String REAL_0DOT123456789; private static final Map.Entry FOO_MAP_ENTRY = new SimpleImmutableEntry("foo", (byte) 0x23); private static final Map.Entry BAR_MAP_ENTRY = new SimpleImmutableEntry("bar", (byte) 0x42); private static final Map.Entry BAZ_MAP_ENTRY = new SimpleImmutableEntry("baz", (byte) 0xF0); static { if (ByteOrder.nativeOrder() == ByteOrder.BIG_ENDIAN) { SHORT_11FF = "11FF"; INT_1122EEFF = "1122EEFF"; LONG_0000000080000000 = "0000000080000000"; LONG_11223344CCDDEEFF = "11223344CCDDEEFF"; REAL_0DOT123456789 = "3FBF9ADD3739635F"; } else { SHORT_11FF = "FF11"; INT_1122EEFF = "FFEE2211"; LONG_0000000080000000 = "0000008000000000"; LONG_11223344CCDDEEFF = "FFEEDDCC44332211"; REAL_0DOT123456789 = "5F633937DD9ABF3F"; } } private static InputStream getByteStream(String base16) { return new ByteArrayInputStream(BaseEncoding.base16().decode(base16)); } @Test public void deserializeEmptyArray() throws IOException { BserDeserializer deserializer = new BserDeserializer(BserDeserializer.KeyOrdering.UNSORTED); List deserialized = (List) deserializer.deserializeBserValue( getByteStream("00010303000300")); List expected = ImmutableList.of(); assertThat(deserialized, equalTo(expected)); } @Test public void deserializeEmptyArrayTwiceReturnsSameArray() throws IOException { BserDeserializer deserializer = new BserDeserializer(BserDeserializer.KeyOrdering.UNSORTED); List deserialized = (List) deserializer.deserializeBserValue( getByteStream("00010303000300")); List deserialized2 = (List) deserializer.deserializeBserValue( getByteStream("00010303000300")); assertThat(deserialized, is(sameInstance(deserialized2))); } @Test public void deserializeArrayOfInt8() throws IOException { BserDeserializer deserializer = new BserDeserializer(BserDeserializer.KeyOrdering.UNSORTED); List deserialized = (List) deserializer.deserializeBserValue( getByteStream("000103090003030323034203F0")); List expected = ImmutableList.of((byte) 0x23, (byte) 0x42, (byte) 0xF0); assertThat(deserialized, equalTo(expected)); } @Test public void deserializeString() throws IOException { BserDeserializer deserializer = new BserDeserializer(BserDeserializer.KeyOrdering.UNSORTED); String deserialized = (String) deserializer.deserializeBserValue( getByteStream("0001030E02030B68656C6C6F20776F726C64")); String expected = "hello world"; assertThat(deserialized, equalTo(expected)); } @Test public void sameStringDeserializedTwiceReturnsSameInstance() throws IOException { BserDeserializer deserializer = new BserDeserializer(BserDeserializer.KeyOrdering.UNSORTED); String deserialized = (String) deserializer.deserializeBserValue( getByteStream("0001030E02030B68656C6C6F20776F726C64")); String deserialized2 = (String) deserializer.deserializeBserValue( getByteStream("0001030E02030B68656C6C6F20776F726C64")); assertThat(deserialized, is(sameInstance(deserialized2))); } @Test public void deserializeEmptyMap() throws IOException { BserDeserializer deserializer = new BserDeserializer(BserDeserializer.KeyOrdering.UNSORTED); Map deserialized = (Map) deserializer.deserializeBserValue( getByteStream("00010303010300")); Map expected = ImmutableMap.of(); assertThat(deserialized, equalTo(expected)); } @Test public void deserializeEmptyMapTwiceReturnsSameMap() throws IOException { BserDeserializer deserializer = new BserDeserializer(BserDeserializer.KeyOrdering.UNSORTED); Map deserialized = (Map) deserializer.deserializeBserValue( getByteStream("00010303010300")); Map deserialized2 = (Map) deserializer.deserializeBserValue( getByteStream("00010303010300")); assertThat(deserialized, is(sameInstance(deserialized2))); } @Test public void deserializeUnsortedMapOfStringToInt8() throws IOException { BserDeserializer deserializer = new BserDeserializer(BserDeserializer.KeyOrdering.UNSORTED); Map deserialized = (Map) deserializer.deserializeBserValue( getByteStream("0001031B010303020303666F6F0323020303626172034202030362617A03F0")); // Make sure the result contains these entries in the order they appeared in the input. assertThat( deserialized.entrySet(), contains(FOO_MAP_ENTRY, BAR_MAP_ENTRY, BAZ_MAP_ENTRY)); } @Test public void deserializeSortedMapOfStringToInt8() throws IOException { BserDeserializer deserializer = new BserDeserializer(BserDeserializer.KeyOrdering.SORTED); Map deserialized = (Map) deserializer.deserializeBserValue( getByteStream("0001031B010303020303666F6F0323020303626172034202030362617A03F0")); // Make sure the result contains these entries in sorted order. assertThat( deserialized.entrySet(), contains(BAR_MAP_ENTRY, BAZ_MAP_ENTRY, FOO_MAP_ENTRY)); } @Test public void deserializeTemplate() throws IOException { BserDeserializer deserializer = new BserDeserializer(BserDeserializer.KeyOrdering.UNSORTED); List> deserialized = (List>) deserializer.deserializeBserValue( getByteStream( "000103280B0003020203046E616D6502030361676503030203046672656403140203" + "0470657465031E0C0319")); // We have to cast to byte because otherwise Java coerces the ages to Integer // objects which are sadly not equal to the BSER-deserialized Byte objects with the // same value. assertThat( deserialized, Matchers.>contains( Matchers.>allOf( Matchers.hasEntry("name", "fred"), Matchers.hasEntry("age", (byte) 20)), Matchers.>allOf( Matchers.hasEntry("name", "pete"), Matchers.hasEntry("age", (byte) 30)), Matchers.>allOf( Matchers.hasEntry("age", (byte) 25)))); } @Test public void deserializeInt8() throws IOException { BserDeserializer deserializer = new BserDeserializer(BserDeserializer.KeyOrdering.UNSORTED); Byte deserialized = (Byte) deserializer.deserializeBserValue(getByteStream("000103020342")); assertThat(deserialized, equalTo((byte) 0x42)); } @Test public void sameInt8DeserializedTwiceReturnsSameInstance() throws IOException { // Java actually interns small integer values for us. How nice! BserDeserializer deserializer = new BserDeserializer(BserDeserializer.KeyOrdering.UNSORTED); Byte deserialized = (Byte) deserializer.deserializeBserValue(getByteStream("000103020342")); Byte deserialized2 = (Byte) deserializer.deserializeBserValue(getByteStream("000103020342")); assertThat(deserialized, is(sameInstance(deserialized2))); } @Test public void deserializeInt16() throws IOException { BserDeserializer deserializer = new BserDeserializer(BserDeserializer.KeyOrdering.UNSORTED); Short deserialized = (Short) deserializer.deserializeBserValue( getByteStream("0001030304" + SHORT_11FF)); assertThat(deserialized, equalTo((short) 0x11FF)); } @Test public void deserializeInt32() throws IOException { BserDeserializer deserializer = new BserDeserializer(BserDeserializer.KeyOrdering.UNSORTED); Integer deserialized = (Integer) deserializer.deserializeBserValue( getByteStream("0001030505" + INT_1122EEFF)); assertThat(deserialized, equalTo(0x1122EEFF)); } @Test public void deserializeInt64() throws IOException { BserDeserializer deserializer = new BserDeserializer(BserDeserializer.KeyOrdering.UNSORTED); Long deserialized = (Long) deserializer.deserializeBserValue( getByteStream("0001030906" + LONG_11223344CCDDEEFF)); assertThat(deserialized, equalTo(0x11223344CCDDEEFFL)); } @Test public void deserializeReal() throws IOException { BserDeserializer deserializer = new BserDeserializer(BserDeserializer.KeyOrdering.UNSORTED); Double deserialized = (Double) deserializer.deserializeBserValue( getByteStream("0001030907" + REAL_0DOT123456789)); assertThat(deserialized, closeTo(0.123456789, 1e-6)); } @Test public void deserializeTrue() throws IOException { BserDeserializer deserializer = new BserDeserializer(BserDeserializer.KeyOrdering.UNSORTED); Boolean deserialized = (Boolean) deserializer.deserializeBserValue(getByteStream("0001030108")); assertThat(deserialized, is(true)); } @Test public void deserializeFalse() throws IOException { BserDeserializer deserializer = new BserDeserializer(BserDeserializer.KeyOrdering.UNSORTED); Boolean deserialized = (Boolean) deserializer.deserializeBserValue(getByteStream("0001030109")); assertThat(deserialized, is(false)); } @Test public void deserializeNull() throws IOException { BserDeserializer deserializer = new BserDeserializer(BserDeserializer.KeyOrdering.UNSORTED); Object deserialized = deserializer.deserializeBserValue(getByteStream("000103010A")); assertThat(deserialized, is(nullValue())); } @Test public void throwIfSniffLengthTooShort() throws IOException { thrown.expect(IOException.class); thrown.expectMessage("Invalid BSER header (expected 3 bytes, got 0 bytes)"); BserDeserializer deserializer = new BserDeserializer(BserDeserializer.KeyOrdering.UNSORTED); deserializer.deserializeBserValue(getByteStream("")); } @Test public void throwIfInvalidHeader() throws IOException { thrown.expect(IOException.class); thrown.expectMessage("Invalid BSER header"); BserDeserializer deserializer = new BserDeserializer(BserDeserializer.KeyOrdering.UNSORTED); deserializer.deserializeBserValue(getByteStream("000F03")); } @Test public void throwIfInvalidHeaderLengthType() throws IOException { thrown.expect(IOException.class); thrown.expectMessage("Unrecognized BSER header length type 7"); BserDeserializer deserializer = new BserDeserializer(BserDeserializer.KeyOrdering.UNSORTED); deserializer.deserializeBserValue(getByteStream("000107" + REAL_0DOT123456789)); } @Test public void throwIfHeaderLengthIsNegative() throws IOException { thrown.expect(IOException.class); thrown.expectMessage("BSER length out of range (-128 < 0)"); BserDeserializer deserializer = new BserDeserializer(BserDeserializer.KeyOrdering.UNSORTED); deserializer.deserializeBserValue(getByteStream("00010380")); } @Test public void throwIfBodyLengthIsOverMaxInt() throws IOException { thrown.expect(IOException.class); thrown.expectMessage("BSER length out of range (2147483648 > 2147483647)"); BserDeserializer deserializer = new BserDeserializer(BserDeserializer.KeyOrdering.UNSORTED); deserializer.deserializeBserValue(getByteStream("000106" + LONG_0000000080000000)); } @Test public void throwIfHeaderLengthTooShort() throws IOException { thrown.expect(IOException.class); thrown.expectMessage("Invalid BSER header length (expected 1 bytes, got 0 bytes)"); BserDeserializer deserializer = new BserDeserializer(BserDeserializer.KeyOrdering.UNSORTED); deserializer.deserializeBserValue(getByteStream("000103")); } @Test public void throwIfRemainingLengthTooShort() throws IOException { thrown.expect(IOException.class); thrown.expectMessage("Invalid BSER header (expected 1 bytes, got 0 bytes)"); BserDeserializer deserializer = new BserDeserializer(BserDeserializer.KeyOrdering.UNSORTED); deserializer.deserializeBserValue(getByteStream("00010301")); } @Test public void throwIfStringNotUTF8() throws IOException { thrown.expect(CharacterCodingException.class); BserDeserializer deserializer = new BserDeserializer(BserDeserializer.KeyOrdering.UNSORTED); deserializer.deserializeBserValue(getByteStream("00010306020303ABCDEF")); } @Test public void throwIfArrayLengthTooShort() throws IOException { thrown.expect(BserDeserializer.BserEofException.class); thrown.expectMessage("Prematurely reached end of BSER buffer"); BserDeserializer deserializer = new BserDeserializer(BserDeserializer.KeyOrdering.UNSORTED); deserializer.deserializeBserValue(getByteStream("000103050003020323")); } @Test public void throwIfMapLengthTooShort() throws IOException { thrown.expect(BserDeserializer.BserEofException.class); thrown.expectMessage("Prematurely reached end of BSER buffer"); BserDeserializer deserializer = new BserDeserializer(BserDeserializer.KeyOrdering.UNSORTED); deserializer.deserializeBserValue(getByteStream("0001030B010303020303666F6F0323")); } @Test public void throwIfMapKeyNotString() throws IOException { thrown.expect(IOException.class); thrown.expectMessage("Unrecognized BSER object key type 3, expected string"); BserDeserializer deserializer = new BserDeserializer(BserDeserializer.KeyOrdering.UNSORTED); deserializer.deserializeBserValue(getByteStream("0001030701030103030323")); } } watchman-4.9.0/java/test/com/facebook/watchman/bser/BserSerializerTest.java000066400000000000000000000216371314236077500267630ustar00rootroot00000000000000/* * Copyright 2015-present Facebook, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. You may obtain * a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ package com.facebook.watchman.bser; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.not; import static org.hamcrest.Matchers.sameInstance; import static org.junit.Assert.assertThat; import com.google.common.base.Strings; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.io.BaseEncoding; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.charset.CharacterCodingException; import com.facebook.watchman.bser.BserSerializer; import org.junit.rules.ExpectedException; import org.junit.Before; import org.junit.Rule; import org.junit.Test; public class BserSerializerTest { @Rule public ExpectedException thrown = ExpectedException.none(); private ByteBuffer buffer; private static final String EXPECTED_EMPTY_ARRAY; private static final String EXPECTED_INT8_ARRAY; private static final String EXPECTED_STRING; private static final String EXPECTED_EMPTY_MAP; private static final String EXPECTED_INT8_MAP; private static final String EXPECTED_INT8; private static final String EXPECTED_INT16; private static final String EXPECTED_INT32; private static final String EXPECTED_INT64; private static final String EXPECTED_MIN_INT8; private static final String EXPECTED_MIN_INT16; private static final String EXPECTED_MIN_INT32; private static final String EXPECTED_MIN_INT64; private static final String EXPECTED_REAL; private static final String EXPECTED_TRUE; private static final String EXPECTED_FALSE; private static final String EXPECTED_NULL; // BSER encoding depends on the host byte order, and to keep the // encoder simpler, we always encode the buffer length as a // (endian-specific) 32-bit value at the start of the encoded byte // sequence. // // So, we initialize these expected byte sequences statically depending // on the host byte order. static { if (ByteOrder.nativeOrder() == ByteOrder.BIG_ENDIAN) { EXPECTED_EMPTY_ARRAY = "00010500000003000300"; EXPECTED_INT8_ARRAY = "000105000000090003030323034203F0"; EXPECTED_STRING = "0001050000000E02030B68656C6C6F20776F726C64"; EXPECTED_EMPTY_MAP = "00010500000003010300"; EXPECTED_INT8_MAP = "0001050000001B010303020303666F6F0323020303626172034202030362617A03F0"; EXPECTED_INT8 = "000105000000020342"; EXPECTED_INT16 = "000105000000030411FF"; EXPECTED_INT32 = "0001050000005051122EEFF"; EXPECTED_INT64 = "000105000000090611223344CCDDEEFF"; EXPECTED_MIN_INT8 = "000105000000020380"; EXPECTED_MIN_INT16 = "00010500000003048000"; EXPECTED_MIN_INT32 = "00010500000050580000000"; EXPECTED_MIN_INT64 = "00010500000009068000000000000000"; EXPECTED_REAL = "00010500000009073FBF9ADD3739635F"; EXPECTED_TRUE = "0001050000000108"; EXPECTED_FALSE = "0001050000000109"; EXPECTED_NULL = "000105000000010A"; } else { EXPECTED_EMPTY_ARRAY = "00010503000000000300"; EXPECTED_INT8_ARRAY = "000105090000000003030323034203F0"; EXPECTED_STRING = "0001050E00000002030B68656C6C6F20776F726C64"; EXPECTED_EMPTY_MAP = "00010503000000010300"; EXPECTED_INT8_MAP = "0001051B000000010303020303666F6F0323020303626172034202030362617A03F0"; EXPECTED_INT8 = "000105020000000342"; EXPECTED_INT16 = "0001050300000004FF11"; EXPECTED_INT32 = "0001050500000005FFEE2211"; EXPECTED_INT64 = "0001050900000006FFEEDDCC44332211"; EXPECTED_MIN_INT8 = "000105020000000380"; EXPECTED_MIN_INT16 = "00010503000000040080"; EXPECTED_MIN_INT32 = "000105050000000500000080"; EXPECTED_MIN_INT64 = "00010509000000060000000000000080"; EXPECTED_REAL = "00010509000000075F633937DD9ABF3F"; EXPECTED_TRUE = "0001050100000008"; EXPECTED_FALSE = "0001050100000009"; EXPECTED_NULL = "000105010000000A"; } } @Before public void setUp() { buffer = ByteBuffer.allocate(512).order(ByteOrder.nativeOrder()); } private ByteBuffer assertEncodingMatches(Object object, String base16) throws IOException { BserSerializer serializer = new BserSerializer(); ByteBuffer result = serializer.serializeToBuffer(object, buffer); result.flip(); byte[] base16Array = BaseEncoding.base16().decode(base16); assertThat( String.format( "Encoded buffer mismatch (%s != %s)", base16, BaseEncoding.base16().encode(result.array(), result.position(), result.limit())), result, equalTo(ByteBuffer.wrap(base16Array))); return result; } @Test public void serializeEmptyArray() throws IOException { assertEncodingMatches(ImmutableList.of(), EXPECTED_EMPTY_ARRAY); } @Test public void serializeArrayOfInt8() throws IOException { assertEncodingMatches( ImmutableList.of((byte) 0x23, (byte) 0x42, (byte) 0xF0), EXPECTED_INT8_ARRAY); } @Test public void serializeString() throws IOException { assertEncodingMatches("hello world", EXPECTED_STRING); } @Test public void serializeEmptyMap() throws IOException { assertEncodingMatches(ImmutableMap.of(), EXPECTED_EMPTY_MAP); } @Test public void serializeInt8Map() throws IOException { assertEncodingMatches( ImmutableMap.of( "foo", (byte) 0x23, "bar", (byte) 0x42, "baz", (byte) 0xF0), EXPECTED_INT8_MAP); } @Test public void serializeInt8() throws IOException { assertEncodingMatches((byte) 0x42, EXPECTED_INT8); } @Test public void serializeInt16() throws IOException { assertEncodingMatches(0x11FF, EXPECTED_INT16); } @Test public void serializeInt32() throws IOException { assertEncodingMatches(0x1122EEFF, EXPECTED_INT32); } @Test public void serializeInt64() throws IOException { assertEncodingMatches(0x11223344CCDDEEFFL, EXPECTED_INT64); } @Test public void serializeMinInt8() throws IOException { assertEncodingMatches((byte) -0x80, EXPECTED_MIN_INT8); } @Test public void serializeMinInt16() throws IOException { assertEncodingMatches(-0x8000, EXPECTED_MIN_INT16); } @Test public void serializeMinInt32() throws IOException { assertEncodingMatches(-0x80000000, EXPECTED_MIN_INT32); } @Test public void serializeMinInt64() throws IOException { assertEncodingMatches(-0x8000000000000000L, EXPECTED_MIN_INT64); } @Test public void serializeReal() throws IOException { assertEncodingMatches(0.123456789, EXPECTED_REAL); } @Test public void serializeTrue() throws IOException { assertEncodingMatches(true, EXPECTED_TRUE); } @Test public void serializeFalse() throws IOException { assertEncodingMatches(false, EXPECTED_FALSE); } @Test public void serializeNull() throws IOException { assertEncodingMatches(null, EXPECTED_NULL); } @Test public void throwIfStringNotUTF8() throws IOException { thrown.expect(CharacterCodingException.class); BserSerializer serializer = new BserSerializer(); // UTF-8 cannot legally represent half of a surrogate pair, so this should throw. serializer.serializeToBuffer("\uDC00", buffer); } @Test public void throwIfMapKeyNotString() throws IOException { thrown.expect(IOException.class); thrown.expectMessage("Unrecognized map key type class java.lang.Integer, expected string"); BserSerializer serializer = new BserSerializer(); serializer.serializeToBuffer(ImmutableMap.of(0, 1), buffer); } @Test public void smallObjectReusesInputBuffer() throws IOException { BserSerializer serializer = new BserSerializer(); ByteBuffer result = serializer.serializeToBuffer(true, buffer); assertThat(result, is(sameInstance(buffer))); } @Test public void largeObjectAllocatesNewBuffer() throws IOException { BserSerializer serializer = new BserSerializer(); ByteBuffer result = serializer.serializeToBuffer(Strings.repeat("X", 10000), buffer); assertThat(result, is(not(sameInstance(buffer)))); } @Test public void serializeTrueToStream() throws IOException { try (ByteArrayOutputStream os = new ByteArrayOutputStream()) { BserSerializer serializer = new BserSerializer(); serializer.serializeToStream(true, os); assertThat(os.toByteArray(), equalTo(BaseEncoding.base16().decode(EXPECTED_TRUE))); } } } watchman-4.9.0/java/test/com/facebook/watchman/environment/000077500000000000000000000000001314236077500237335ustar00rootroot00000000000000watchman-4.9.0/java/test/com/facebook/watchman/environment/ExecutableFinderTest.java000066400000000000000000000173361314236077500306610ustar00rootroot00000000000000/* * Copyright 2015-present Facebook, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. You may obtain * a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ package com.facebook.watchman.environment; import java.io.IOException; import java.nio.file.FileSystems; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.attribute.PosixFilePermission; import java.util.Set; import com.facebook.watchman.util.TemporaryPaths; import com.google.common.base.Optional; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import org.junit.Rule; import org.junit.Test; import static java.nio.charset.StandardCharsets.UTF_8; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; public class ExecutableFinderTest { @Rule public TemporaryPaths tmp = new TemporaryPaths(); @Test public void testSearchPathsFileFoundReturnsPath() throws IOException { Path dir1 = tmp.newFolder("foo"); Path dir2 = tmp.newFolder("bar"); Path dir3 = tmp.newFolder("baz"); Path file = createExecutable("bar/blech"); assertEquals( Optional.of(file), ExecutableFinder.getOptionalExecutable( Paths.get("blech"), ImmutableList.of(dir1, dir2, dir3), ImmutableList.of())); } @Test public void testSearchPathsNonExecutableFileIsIgnored() throws IOException { Path dir1 = tmp.newFolder("foo"); // Note this is not executable. tmp.newFile("foo/blech"); Path dir2 = tmp.newFolder("bar"); Path dir3 = tmp.newFolder("baz"); Path file = createExecutable("bar/blech"); assertEquals( Optional.of(file), ExecutableFinder.getOptionalExecutable( Paths.get("blech"), ImmutableList.of(dir1, dir2, dir3), ImmutableList.of())); } @Test public void testSearchPathsDirAndFileFoundReturnsFileNotDir() throws IOException { Path dir1 = tmp.newFolder("foo"); // We don't want to find this folder. tmp.newFolder("foo", "foo"); Path dir2 = tmp.newFolder("bar"); Path file = createExecutable("bar/foo"); assertEquals( Optional.of(file), ExecutableFinder.getOptionalExecutable( Paths.get("foo"), ImmutableList.of(dir1, dir2), ImmutableList.of())); } @Test public void testSearchPathsMultipleFileFoundReturnsFirstPath() throws IOException { Path dir1 = tmp.newFolder("foo"); Path dir2 = tmp.newFolder("bar"); Path dir3 = tmp.newFolder("baz"); Path file1 = createExecutable("bar/blech"); createExecutable("baz/blech"); assertEquals( Optional.of(file1), ExecutableFinder.getOptionalExecutable( Paths.get("blech"), ImmutableList.of(dir1, dir2, dir3), ImmutableList.of())); } @Test public void testSearchPathsSymlinkToExecutableInsidePathReturnsPath() throws IOException { Path dir2 = tmp.newFolder("bar"); createExecutable("bar/blech_target"); Path file1 = dir2.resolve("blech"); Files.createSymbolicLink(file1, Paths.get("blech_target")); assertEquals( Optional.of(file1), ExecutableFinder.getOptionalExecutable( Paths.get("blech"), ImmutableList.of(dir2), ImmutableList.of())); } @Test public void testSearchPathsSymlinkToExecutableOutsideSearchPathReturnsPath() throws IOException { Path dir1 = tmp.newFolder("foo"); Path dir2 = tmp.newFolder("bar"); Path dir3 = tmp.newFolder("baz"); tmp.newFolder("unsearched"); Path binary = createExecutable("unsearched/binary"); Path file1 = dir2.resolve("blech"); Files.createSymbolicLink(file1, binary); assertEquals( Optional.of(file1), ExecutableFinder.getOptionalExecutable( Paths.get("blech"), ImmutableList.of(dir1, dir2, dir3), ImmutableList.of())); } @Test public void testSearchPathsFileNotFoundReturnsAbsent() throws IOException { Path dir1 = tmp.newFolder("foo"); Path dir2 = tmp.newFolder("bar"); Path dir3 = tmp.newFolder("baz"); assertEquals( Optional.absent(), ExecutableFinder.getOptionalExecutable( Paths.get("blech"), ImmutableList.of(dir1, dir2, dir3), ImmutableList.of())); } @Test public void testSearchPathsEmptyReturnsAbsent() throws IOException { assertEquals( Optional.absent(), ExecutableFinder.getOptionalExecutable( Paths.get("blech"), ImmutableList.of(), ImmutableList.of())); } @Test public void testSearchPathsWithIsExecutableFunctionFailure() throws IOException { // Path to search Path baz = tmp.newFolder("baz"); // Unexecutable "executable" Path bar = baz.resolve("bar"); Files.write(bar, "".getBytes(UTF_8)); assertTrue(bar.toFile().setExecutable(false)); assertEquals( Optional.absent(), ExecutableFinder.getOptionalExecutable( Paths.get("bar"), ImmutableList.of(baz), ImmutableList.of())); } @Test public void testSearchPathsWithExtensions() throws IOException { Path dir = tmp.newFolder("foo"); Path file = createExecutable("foo/bar.EXE"); assertEquals( Optional.of(file), ExecutableFinder.getOptionalExecutable( Paths.get("bar"), ImmutableList.of(dir), ImmutableList.of(".BAT", ".EXE"))); } @Test public void testSearchPathsWithExtensionsNoMatch() throws IOException { Path dir = tmp.newFolder("foo"); createExecutable("foo/bar.COM"); assertEquals( Optional.absent(), ExecutableFinder.getOptionalExecutable( Paths.get("bar"), ImmutableList.of(dir), ImmutableList.of(".BAT", ".EXE"))); } @Test public void testThatADirectoryIsNotConsideredAnExecutable() throws IOException { Path dir = tmp.newFolder(); Path exe = dir.resolve("exe"); Files.createDirectories(exe); assertEquals( Optional.absent(), ExecutableFinder.getOptionalExecutable( exe.toAbsolutePath(), ImmutableMap.of())); } private Path createExecutable(String executablePath) throws IOException { Path file = tmp.newFile(executablePath); makeExecutable(file); return file; } public static void makeExecutable(Path file) throws IOException { if (FileSystems.getDefault().supportedFileAttributeViews().contains("posix")) { Set permissions = Files.getPosixFilePermissions(file); if (permissions.contains(PosixFilePermission.OWNER_READ)) { permissions.add(PosixFilePermission.OWNER_EXECUTE); } if (permissions.contains(PosixFilePermission.GROUP_READ)) { permissions.add(PosixFilePermission.GROUP_EXECUTE); } if (permissions.contains(PosixFilePermission.OTHERS_READ)) { permissions.add(PosixFilePermission.OTHERS_EXECUTE); } Files.setPosixFilePermissions(file, permissions); } else { if (!file.toFile().setExecutable(/* executable */ true, /* ownerOnly */ true)) { throw new IOException("The file could not be made executable"); } } } } watchman-4.9.0/java/test/com/facebook/watchman/environment/FileFinderTest.java000066400000000000000000000064431314236077500274540ustar00rootroot00000000000000/* * Copyright 2015-present Facebook, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. You may obtain * a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ package com.facebook.watchman.environment; import java.io.IOException; import java.nio.file.Path; import java.util.Arrays; import com.facebook.watchman.util.TemporaryPaths; import com.google.common.base.Optional; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSortedSet; import org.junit.Assert; import org.junit.Rule; import org.junit.Test; public class FileFinderTest { @Rule public TemporaryPaths tmp = new TemporaryPaths(); @Test public void combine() { Object[] result = FileFinder.combine(null, "foo", null).toArray(); Arrays.sort(result); Assert.assertArrayEquals( new String[] { "foo" }, result); result = FileFinder.combine( ImmutableSet.of(), "foo", ImmutableSet.of(".exe", ".com", ".bat")).toArray(); Arrays.sort(result); Assert.assertArrayEquals( new String[] { "foo.bat", "foo.com", "foo.exe" }, result); result = FileFinder.combine( ImmutableSet.of("lib", ""), "foo", null).toArray(); Arrays.sort(result); Assert.assertArrayEquals( new String[] { "foo", "libfoo" }, result); } @Test public void firstMatchInPath() throws IOException { Path fee = tmp.newFolder("fee"); Path fie = tmp.newFolder("fie"); tmp.newFile("fee/foo"); tmp.newFile("fie/foo"); ImmutableList searchPath = ImmutableList.of(fie, fee); Optional result = FileFinder.getOptionalFile("foo", searchPath); Assert.assertTrue(result.isPresent()); Assert.assertEquals(fie.resolve("foo"), result.get()); } @Test public void matchAny() throws IOException { Path fee = tmp.newFolder("fee"); tmp.newFile("fee/foo"); Path fie = tmp.newFolder("fie"); tmp.newFile("fie/bar"); ImmutableSet names = ImmutableSet.of( "foo", "bar", "baz"); Optional result = FileFinder.getOptionalFile( names, ImmutableSortedSet.of(fee)); Assert.assertTrue(result.isPresent()); Assert.assertEquals(fee.resolve("foo"), result.get()); result = FileFinder.getOptionalFile( names, ImmutableSortedSet.of(fie)); Assert.assertTrue(result.isPresent()); Assert.assertEquals(fie.resolve("bar"), result.get()); } @Test public void noMatch() throws IOException { Path fee = tmp.newFolder("fee"); tmp.newFile("fee/foo"); Path fie = tmp.newFolder("fie"); tmp.newFile("fie/bar"); Optional result = FileFinder.getOptionalFile( "baz", ImmutableSortedSet.of(fee, fie)); Assert.assertFalse(result.isPresent()); } } watchman-4.9.0/java/test/com/facebook/watchman/fakes/000077500000000000000000000000001314236077500224605ustar00rootroot00000000000000watchman-4.9.0/java/test/com/facebook/watchman/fakes/FakeWatchmanClient.java000066400000000000000000000050561314236077500270210ustar00rootroot00000000000000/* * Copyright 2015-present Facebook, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. You may obtain * a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ package com.facebook.watchman.fakes; import java.io.IOException; import java.nio.file.Path; import java.util.List; import java.util.Map; import com.facebook.watchman.Callback; import com.facebook.watchman.WatchmanClient; import com.google.common.util.concurrent.ListenableFuture; import sun.reflect.generics.reflectiveObjects.NotImplementedException; public class FakeWatchmanClient implements WatchmanClient { @Override public ListenableFuture> clock(Path path) { throw new NotImplementedException(); } @Override public ListenableFuture> clock(Path path, Number syncTimeout) { throw new NotImplementedException(); } @Override public ListenableFuture> watch(Path path) { throw new NotImplementedException(); } @Override public ListenableFuture> watchDel(Path path) { throw new NotImplementedException(); } @Override public ListenableFuture unsubscribe(SubscriptionDescriptor descriptor) { throw new NotImplementedException(); } @Override public ListenableFuture subscribe( Path path, Map query, Callback listener) { throw new NotImplementedException(); } @Override public ListenableFuture> version() { throw new NotImplementedException(); } @Override public ListenableFuture> version( List optionalCapabilities, List requiredCapabilities) { throw new NotImplementedException(); } @Override public ListenableFuture> run(List command) { throw new NotImplementedException(); } @Override public ListenableFuture unsubscribeAll() { throw new NotImplementedException(); } @Override public void close() throws IOException { throw new NotImplementedException(); } @Override public void start() { throw new NotImplementedException(); } } watchman-4.9.0/java/test/com/facebook/watchman/util/000077500000000000000000000000001314236077500223445ustar00rootroot00000000000000watchman-4.9.0/java/test/com/facebook/watchman/util/TemporaryPaths.java000066400000000000000000000061131314236077500261720ustar00rootroot00000000000000/* * Copyright 2015-present Facebook, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. You may obtain * a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ package com.facebook.watchman.util; import java.io.IOException; import java.nio.file.FileVisitResult; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.SimpleFileVisitor; import java.nio.file.attribute.BasicFileAttributes; import java.util.Arrays; import org.junit.rules.ExternalResource; public class TemporaryPaths extends ExternalResource { private final boolean keepContents; private Path root; public TemporaryPaths() { this(false); } public TemporaryPaths(boolean keepContents) { this.keepContents = keepContents; } @Override protected void before() throws Throwable { root = Files.createTempDirectory("junit-temp-path").toRealPath(); } public Path getRoot() { return root; } public Path newFolder() throws IOException { return Files.createTempDirectory(root, "tmpFolder"); } @Override @SuppressWarnings("PMD.EmptyCatchBlock") protected void after() { if (root == null) { return; } if (keepContents) { System.out.printf("Contents available at %s.\n", getRoot()); return; } try { Files.walkFileTree(root, new SimpleFileVisitor() { @Override public FileVisitResult visitFile( Path file, BasicFileAttributes attrs) throws IOException { Files.delete(file); return FileVisitResult.CONTINUE; } @Override public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException { Files.delete(dir); return FileVisitResult.CONTINUE; } }); } catch (IOException e) { // Swallow. Nothing sane to do. } } public Path newFile(String fileName) throws IOException { Path toCreate = root.resolve(fileName); if (Files.exists(toCreate)) { throw new IOException( "a file with the name \'" + fileName + "\' already exists in the test folder"); } return Files.createFile(toCreate); } public Path newFile() throws IOException { return Files.createTempFile(root, "junit", "file"); } public Path newFolder(String... name) throws IOException { Path toCreate = root; for (String segment : name) { toCreate = toCreate.resolve(segment); } if (Files.exists(toCreate)) { throw new IOException( String.format( "a folder with the name '%s' already exists in the test folder", Arrays.toString(name))); } return Files.createDirectories(toCreate); } }watchman-4.9.0/java/third-party/000077500000000000000000000000001314236077500165265ustar00rootroot00000000000000watchman-4.9.0/java/third-party/guava/000077500000000000000000000000001314236077500176315ustar00rootroot00000000000000watchman-4.9.0/java/third-party/guava/BUCK000066400000000000000000000004451314236077500203030ustar00rootroot00000000000000remote_file( name = 'guava-jar', out = 'guava-19.0.jar', url = 'http://central.maven.org/maven2/com/google/guava/guava/19.0/guava-19.0.jar', sha1 = '6ce200f6b23222af3d8abb6b6459e6c44f4bb0e9', ) prebuilt_jar( name = 'guava', binary_jar = ':guava-jar', visibility = ['PUBLIC'], ) watchman-4.9.0/java/third-party/guava/README000066400000000000000000000002471314236077500205140ustar00rootroot00000000000000README for Guava URL: https://github.com/google/guava Downloaded From: http://central.maven.org/maven2/com/google/guava/guava/19.0/guava-19.0.jar License: Apache 2.0 watchman-4.9.0/java/third-party/hamcrest/000077500000000000000000000000001314236077500203345ustar00rootroot00000000000000watchman-4.9.0/java/third-party/hamcrest/BUCK000066400000000000000000000016111314236077500210020ustar00rootroot00000000000000remote_file( name = 'java-hamcrest-2-jar', out = 'java-hamcrest-2.0.0.0.jar', url = 'http://central.maven.org/maven2/org/hamcrest/hamcrest-junit/2.0.0.0/hamcrest-junit-2.0.0.0.jar', sha1 = '0221cf2b5aabedf8cd76534996caa21b283ea5d0', ) remote_file( name = 'hamcrest-junit-2-jar', out = 'hamcrest-junit-2.0.0.0.jar', url = 'http://central.maven.org/maven2/org/hamcrest/java-hamcrest/2.0.0.0/java-hamcrest-2.0.0.0.jar', sha1 = '0f1c8853ade0ecf707f5a261c830e98893983813', ) java_library( name = 'hamcrest-2', deps = [], exported_deps = [ ':java-hamcrest-2', ':hamcrest-junit-2', ], visibility = ['PUBLIC'], ) prebuilt_jar( name = 'java-hamcrest-2', binary_jar = ':java-hamcrest-2-jar', visibility = ['PUBLIC'], ) prebuilt_jar( name = 'hamcrest-junit-2', binary_jar = ':hamcrest-junit-2-jar', deps = [ ':java-hamcrest-2', ], visibility = ['PUBLIC'], ) watchman-4.9.0/java/third-party/hamcrest/README000066400000000000000000000004171314236077500212160ustar00rootroot00000000000000README for Hamcrest-2 URL: http://hamcrest.org/ Downloaded From: * http://central.maven.org/maven2/org/hamcrest/hamcrest-junit/2.0.0.0/hamcrest-junit-2.0.0.0.jar * http://central.maven.org/maven2/org/hamcrest/java-hamcrest/2.0.0.0/java-hamcrest-2.0.0.0.jar License: BSD watchman-4.9.0/java/third-party/immutables/000077500000000000000000000000001314236077500206705ustar00rootroot00000000000000watchman-4.9.0/java/third-party/immutables/BUCK000066400000000000000000000017441314236077500213450ustar00rootroot00000000000000remote_file( name = 'value-jar', out = 'value-2.1.5.jar', url = 'http://central.maven.org/maven2/org/immutables/value/2.1.5/value-2.1.5.jar', sha1 = '8da4fc0eb4655734ffe1b09284f4fc62d033b853', ) remote_file( name = 'value-processor-jar', out = 'value-processor-2.1.5.jar', url = 'http://central.maven.org/maven2/org/immutables/value-processor/2.1.5/value-processor-2.1.5.jar', sha1 = '37ad0e3c1bd72ab735eaf714b2ce935dee18e4a8', ) remote_file( name = 'generator-jar', out = 'generator-2.1.5.jar', url = 'http://central.maven.org/maven2/org/immutables/generator/2.1.5/generator-2.1.5.jar', sha1 = '8cd760cf8cdcbee6f60f11fc7ed8034dfc650444', ) prebuilt_jar( name = 'value', binary_jar = ':value-jar', visibility = [ 'PUBLIC', ], ) prebuilt_jar( name = 'value-processor', binary_jar = ':value-processor-jar', visibility = [ 'PUBLIC', ], ) prebuilt_jar( name = 'generator', binary_jar = ':generator-jar', visibility = [ 'PUBLIC', ], ) watchman-4.9.0/java/third-party/immutables/README000066400000000000000000000005561314236077500215560ustar00rootroot00000000000000README for Immutables URL: https://github.com/immutables/immutables Downloaded From: * http://central.maven.org/maven2/org/immutables/generator/2.1.5/generator-2.1.5.jar * http://central.maven.org/maven2/org/immutables/value-processor/2.1.5/value-processor-2.1.5.jar * http://central.maven.org/maven2/org/immutables/value/2.1.5/value-2.1.5.jar License: Apache 2.0 watchman-4.9.0/java/third-party/jna/000077500000000000000000000000001314236077500172765ustar00rootroot00000000000000watchman-4.9.0/java/third-party/jna/BUCK000066400000000000000000000011561314236077500177500ustar00rootroot00000000000000remote_file( name = 'jna-jar', out = 'jna-4.2.0.jar', url = 'http://central.maven.org/maven2/net/java/dev/jna/jna/4.2.0/jna-4.2.0.jar', sha1 = '812b976ed15bb1b0b3fc059fae927b0f76b39585', ) remote_file( name = 'jna-platform-jar', out = 'jna-platform-4.2.0.jar', url = 'http://central.maven.org/maven2/net/java/dev/jna/jna-platform/4.2.0/jna-platform-4.2.0.jar', sha1 = '4a04d34615d534f273f7b8bd30d75304efe4ab04', ) prebuilt_jar( name = 'jna', binary_jar = ':jna-jar', visibility = ['PUBLIC'], ) prebuilt_jar( name = 'jna-platform', binary_jar = ':jna-platform-jar', visibility = ['PUBLIC'], )watchman-4.9.0/java/third-party/jna/README000066400000000000000000000003071314236077500201560ustar00rootroot00000000000000README for JNA URL: https://github.com/java-native-access/jna Downloaded From: http://central.maven.org/maven2/net/java/dev/jna/jna/4.2.0/jna-4.2.0.jar License: Apache 2.0 and LPGL 2.1 dual license watchman-4.9.0/java/third-party/jsr-305/000077500000000000000000000000001314236077500176315ustar00rootroot00000000000000watchman-4.9.0/java/third-party/jsr-305/BUCK000066400000000000000000000004741314236077500203050ustar00rootroot00000000000000remote_file( name = 'jsr-305-jar', out = 'jsr305.jar', url = 'http://central.maven.org/maven2/com/google/code/findbugs/jsr305/3.0.1/jsr305-3.0.1.jar', sha1 = 'f7be08ec23c21485b9b5a1cf1654c2ec8c58168d', ) prebuilt_jar( name = 'jsr-305', binary_jar = ':jsr-305-jar', visibility = [ 'PUBLIC', ], ) watchman-4.9.0/java/third-party/jsr-305/README000066400000000000000000000002661314236077500205150ustar00rootroot00000000000000README for JSR-305 URL: http://findbugs.sourceforge.net/ Downloaded From: http://central.maven.org/maven2/com/google/code/findbugs/jsr305/3.0.1/jsr305-3.0.1.jar License: Apache 2.0 watchman-4.9.0/java/third-party/junit/000077500000000000000000000000001314236077500176575ustar00rootroot00000000000000watchman-4.9.0/java/third-party/junit/BUCK000066400000000000000000000006371314236077500203340ustar00rootroot00000000000000remote_file( name = 'junit-download', out = 'junit-4.12.jar', url = 'http://central.maven.org/maven2/junit/junit/4.12/junit-4.12.jar', sha1 = '2973d150c0dc1fefe998f834810d68f278ea58ec', ) prebuilt_jar( name = 'junit-jar', binary_jar = ':junit-download', ) java_library( name = 'junit', exported_deps = [ ':junit-jar', '//third-party/hamcrest:hamcrest-2', ], visibility = ['PUBLIC'], ) watchman-4.9.0/java/third-party/junit/README000066400000000000000000000002411314236077500205340ustar00rootroot00000000000000README for Junit URL: https://github.com/junit-team/junit4 Downloaded From: http://central.maven.org/maven2/junit/junit/4.12/junit-4.12.jar License: Apache 2.0 watchman-4.9.0/java/third-party/mockito/000077500000000000000000000000001314236077500201735ustar00rootroot00000000000000watchman-4.9.0/java/third-party/mockito/BUCK000066400000000000000000000006401314236077500206420ustar00rootroot00000000000000remote_file( name = 'mockito-jar', out = 'mockito-core-1.9.5.jar', url = 'http://central.maven.org/maven2/org/mockito/mockito-core/1.9.5/mockito-core-1.9.5.jar', sha1 = 'c3264abeea62c4d2f367e21484fbb40c7e256393', ) prebuilt_jar( name = 'mockito', binary_jar = ':mockito-jar', deps = [ '//third-party/hamcrest:hamcrest-2', '//third-party/objenesis:objenesis', ], visibility = ['PUBLIC'], ) watchman-4.9.0/java/third-party/mockito/README000066400000000000000000000002411314236077500210500ustar00rootroot00000000000000README for Mockito URL: http://mockito.org/ Downloaded From: http://central.maven.org/maven2/org/mockito/mockito-core/1.9.5/mockito-core-1.9.5.jar License: MIT watchman-4.9.0/java/third-party/nuprocess/000077500000000000000000000000001314236077500205475ustar00rootroot00000000000000watchman-4.9.0/java/third-party/nuprocess/BUCK000066400000000000000000000005471314236077500212240ustar00rootroot00000000000000remote_file( name = 'nuprocess-jar', out = 'nuprocess-1.1.0.jar', url = 'http://central.maven.org/maven2/com/zaxxer/nuprocess/1.1.0/nuprocess-1.1.0.jar', sha1 = '9479382344b61b36dd3ca1ec1b10aaa91295d632', ) prebuilt_jar( name = 'nuprocess', binary_jar = ':nuprocess-jar', deps = [ '//third-party/jna:jna', ], visibility = ['PUBLIC'], ) watchman-4.9.0/java/third-party/nuprocess/README000066400000000000000000000003041314236077500214240ustar00rootroot00000000000000README for NuProcess URL: https://github.com/brettwooldridge/NuProcess Downloaded from: http://central.maven.org/maven2/com/zaxxer/nuprocess/1.1.0/nuprocess-1.1.0.jar License: Apache 2.0 license watchman-4.9.0/java/third-party/objenesis/000077500000000000000000000000001314236077500205075ustar00rootroot00000000000000watchman-4.9.0/java/third-party/objenesis/BUCK000066400000000000000000000004671314236077500211650ustar00rootroot00000000000000remote_file( name = 'objenesis-jar', out = 'objenesis-1.3.jar', url = 'http://central.maven.org/maven2/org/objenesis/objenesis/1.3/objenesis-1.3.jar', sha1 = 'dc13ae4faca6df981fc7aeb5a522d9db446d5d50', ) prebuilt_jar( name = 'objenesis', binary_jar = ':objenesis-jar', visibility = ['PUBLIC'], ) watchman-4.9.0/java/third-party/objenesis/README000066400000000000000000000002351314236077500213670ustar00rootroot00000000000000README for Objenesis URL: http://objenesis.org/ Downloaded From: http://central.maven.org/maven2/org/objenesis/objenesis/1.3/objenesis-1.3.jar License: MIT watchman-4.9.0/json.cpp000066400000000000000000000324061314236077500150200ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" W_CAP_REG("bser-v2") watchman_json_buffer::watchman_json_buffer() : buf((char*)malloc(WATCHMAN_IO_BUF_SIZE)), allocd(WATCHMAN_IO_BUF_SIZE), rpos(0), wpos(0), pdu_type(need_data), capabilities(0) { if (!buf) { throw std::bad_alloc(); } } void watchman_json_buffer::clear() { wpos = 0; rpos = 0; } watchman_json_buffer::~watchman_json_buffer() { free(buf); } // Shunt down, return available size uint32_t watchman_json_buffer::shuntDown() { if (rpos && rpos == wpos) { rpos = 0; wpos = 0; } if (rpos && rpos < wpos) { memmove(buf, buf + rpos, wpos - rpos); wpos -= rpos; rpos = 0; } return allocd - wpos; } bool watchman_json_buffer::fillBuffer(w_stm_t stm) { uint32_t avail; int r; avail = shuntDown(); // Get some more space if we need it if (avail == 0) { char* newBuf = (char*)realloc(buf, allocd * 2); if (!newBuf) { return false; } buf = newBuf; allocd *= 2; avail = allocd - wpos; } errno = 0; r = stm->read(buf + wpos, avail); if (r <= 0) { return false; } wpos += r; return true; } inline enum w_pdu_type watchman_json_buffer::detectPdu() { if (wpos - rpos < 2) { return need_data; } if (memcmp(buf + rpos, BSER_MAGIC, 2) == 0) { return is_bser; } if (memcmp(buf + rpos, BSER_V2_MAGIC, 2) == 0) { return is_bser_v2; } return is_json_compact; } json_ref watchman_json_buffer::readJsonPrettyPdu( w_stm_t stm, json_error_t* jerr) { char *nl; int r; json_ref res; // Assume newline is at the end of what we have nl = buf + wpos; r = (int)(nl - (buf + rpos)); res = json_loadb(buf + rpos, r, 0, jerr); while (!res) { // Maybe we can fill more data into the buffer and retry? if (!fillBuffer(stm)) { // No, then error is terminal return nullptr; } // Recompute end of buffer nl = buf + wpos; r = (int)(nl - (buf + rpos)); // And try parsing this res = json_loadb(buf + rpos, r, 0, jerr); } // update read pos to look beyond this point rpos += r + 1; return res; } json_ref watchman_json_buffer::readJsonPdu(w_stm_t stm, json_error_t* jerr) { int r; /* look for a newline; that indicates the end of * a json packet */ auto nl = (char*)memchr(buf + rpos, '\n', wpos - rpos); // If we don't have a newline, we need to fill the // buffer while (!nl) { if (!fillBuffer(stm)) { if (errno == 0 && stm == w_stm_stdin()) { // Ugly-ish hack to support the -j CLI option. This allows // us to consume a JSON input that doesn't end with a newline. // We only allow this on EOF when reading from stdin nl = buf + wpos; break; } return nullptr; } nl = (char*)memchr(buf + rpos, '\n', wpos - rpos); } // buflen r = (int)(nl - (buf + rpos)); auto res = json_loadb(buf + rpos, r, 0, jerr); // update read pos to look beyond this point rpos += r + 1; return res; } bool watchman_json_buffer::decodePduInfo( w_stm_t stm, uint32_t bser_version, json_int_t* len, json_int_t* bser_capabilities, json_error_t* jerr) { json_int_t needed; if (bser_version == 2) { uint32_t capabilities; while (wpos - rpos < sizeof(capabilities)) { if (!fillBuffer(stm)) { snprintf(jerr->text, sizeof(jerr->text), "unable to fill buffer"); return false; } } // json_int_t is architecture-dependent, so go through the uint32_t for // safety. memcpy(&capabilities, buf + rpos, sizeof(capabilities)); *bser_capabilities = capabilities; rpos += sizeof(capabilities); } while (!bunser_int(buf + rpos, wpos - rpos, &needed, len)) { if (needed == -1) { snprintf(jerr->text, sizeof(jerr->text), "failed to read PDU size"); return false; } if (!fillBuffer(stm)) { snprintf(jerr->text, sizeof(jerr->text), "unable to fill buffer"); return false; } } rpos += (uint32_t)needed; return true; } json_ref watchman_json_buffer::readBserPdu( w_stm_t stm, uint32_t bser_version, json_error_t* jerr) { json_int_t needed; json_int_t val; json_int_t bser_capabilities; uint32_t ideal; int r; json_ref obj; rpos += 2; // We don't handle EAGAIN cleanly in here stm->setNonBlock(false); if (!decodePduInfo(stm, bser_version, &val, &bser_capabilities, jerr)) { return nullptr; } // val tells us exactly how much storage we need for this PDU if (val > allocd - wpos) { ideal = allocd; while ((ideal - wpos) < (uint32_t)val) { ideal *= 2; } if (ideal > allocd) { auto newBuf = (char*)realloc(buf, ideal); if (!newBuf) { snprintf(jerr->text, sizeof(jerr->text), "out of memory while allocating %" PRIu32 " bytes", ideal); return nullptr; } buf = newBuf; allocd = ideal; } } // We have enough room for the whole thing, let's read it in while ((wpos - rpos) < val) { r = stm->read(buf + wpos, allocd - wpos); if (r <= 0) { jerr->position = wpos - rpos; snprintf( jerr->text, sizeof(jerr->text), "error reading %" PRIu32 " bytes val=%" PRIu64 " wpos=%" PRIu32 " rpos=%" PRIu32 " for PDU: %s", uint32_t(allocd - wpos), int64_t(val), wpos, rpos, strerror(errno)); return nullptr; } wpos += r; } obj = bunser(buf + rpos, buf + wpos, &needed, jerr); // Ensure that we move the read position to the wpos; we consumed it all rpos = wpos; stm->setNonBlock(true); return obj; } bool watchman_json_buffer::readAndDetectPdu(w_stm_t stm, json_error_t* jerr) { enum w_pdu_type pdu; // The client might send us different kinds of PDUs over the same connection, // so reset the capabilities. capabilities = 0; shuntDown(); pdu = detectPdu(); if (pdu == need_data) { if (!fillBuffer(stm)) { if (errno != EAGAIN) { snprintf(jerr->text, sizeof(jerr->text), "fill_buffer: %s", errno ? strerror(errno) : "EOF"); } return false; } pdu = detectPdu(); } if (pdu == is_bser_v2) { // read capabilities (since we haven't increased rpos, first two bytes are // still the header) while (wpos - rpos < 2 + sizeof(capabilities)) { if (!fillBuffer(stm)) { if (errno != EAGAIN) { snprintf( jerr->text, sizeof(jerr->text), "fillBuffer: %s", errno ? strerror(errno) : "EOF"); } return false; } } // Copy the capabilities over. BSER is system-endian so this is safe. memcpy(&capabilities, buf + rpos + 2, sizeof(capabilities)); } if (pdu == is_json_compact && stm == w_stm_stdin()) { // Minor hack for the `-j` option for reading pretty printed // json from stdin pdu = is_json_pretty; } pdu_type = pdu; return true; } static bool output_bytes(const char *buf, int x) { int res; while (x > 0) { res = (int)fwrite(buf, 1, x, stdout); if (res == 0) { return false; } buf += res; x -= res; } return true; } bool watchman_json_buffer::streamUntilNewLine(w_stm_t stm) { int x; char* localBuf; bool is_done = false; while (true) { localBuf = buf + rpos; auto nl = (char*)memchr(localBuf, '\n', wpos - rpos); if (nl) { x = 1 + (int)(nl - localBuf); is_done = true; } else { x = wpos - rpos; } if (!output_bytes(localBuf, x)) { return false; } localBuf += x; rpos += x; if (is_done) { break; } if (!fillBuffer(stm)) { break; } } return true; } bool watchman_json_buffer::streamN( w_stm_t stm, json_int_t len, json_error_t* jerr) { uint32_t total = 0; if (!output_bytes(buf, rpos)) { snprintf( jerr->text, sizeof(jerr->text), "failed output headers bytes %d: %s\n", rpos, strerror(errno)); return false; } while (len > 0) { uint32_t avail = wpos - rpos; int r; if (avail) { if (!output_bytes(buf + rpos, avail)) { snprintf( jerr->text, sizeof(jerr->text), "output_bytes: avail=%d, failed %s\n", avail, strerror(errno)); return false; } rpos += avail; len -= avail; if (len == 0) { return true; } } avail = std::min((uint32_t)len, shuntDown()); r = stm->read(buf + wpos, avail); if (r <= 0) { snprintf( jerr->text, sizeof(jerr->text), "read: len=%" PRIi64 " wanted %" PRIu32 " got %d %s\n", (int64_t)len, avail, r, strerror(errno)); return false; } wpos += r; total += r; } return true; } bool watchman_json_buffer::streamPdu(w_stm_t stm, json_error_t* jerr) { uint32_t bser_version = 1; json_int_t bser_capabilities; json_int_t len; switch (pdu_type) { case is_json_compact: case is_json_pretty: return streamUntilNewLine(stm); case is_bser: case is_bser_v2: { if (pdu_type == is_bser_v2) { bser_version = 2; } else { bser_version = 1; } rpos += 2; if (!decodePduInfo(stm, bser_version, &len, &bser_capabilities, jerr)) { return false; } return streamN(stm, len, jerr); } default: w_log(W_LOG_FATAL, "not streaming for pdu type %d\n", pdu_type); return false; } } json_ref watchman_json_buffer::decodePdu(w_stm_t stm, json_error_t* jerr) { switch (pdu_type) { case is_json_compact: return readJsonPdu(stm, jerr); case is_json_pretty: return readJsonPrettyPdu(stm, jerr); case is_bser_v2: return readBserPdu(stm, 2, jerr); default: // bser v1 return readBserPdu(stm, 1, jerr); } } bool watchman_json_buffer::passThru( enum w_pdu_type output_pdu, uint32_t output_capabilities, w_jbuffer_t* output_pdu_buf, w_stm_t stm) { json_error_t jerr; bool res; stm->setNonBlock(false); if (!readAndDetectPdu(stm, &jerr)) { w_log(W_LOG_ERR, "failed to identify PDU: %s\n", jerr.text); return false; } if (pdu_type == output_pdu) { // We can stream it through if (!streamPdu(stm, &jerr)) { w_log(W_LOG_ERR, "stream_pdu: %s\n", jerr.text); return false; } return true; } auto j = decodePdu(stm, &jerr); if (!j) { w_log(W_LOG_ERR, "failed to parse response: %s\n", jerr.text); return false; } output_pdu_buf->clear(); res = output_pdu_buf->pduEncodeToStream( output_pdu, output_capabilities, j, w_stm_stdout()); return res; } json_ref watchman_json_buffer::decodeNext(w_stm_t stm, json_error_t* jerr) { memset(jerr, 0, sizeof(*jerr)); if (!readAndDetectPdu(stm, jerr)) { return nullptr; } return decodePdu(stm, jerr); } struct jbuffer_write_data { w_stm_t stm; w_jbuffer_t* jr; bool flush() { int x; while (jr->wpos - jr->rpos) { x = stm->write(jr->buf + jr->rpos, jr->wpos - jr->rpos); if (x <= 0) { return false; } jr->rpos += x; } jr->clear(); return true; } static int write(const char* buffer, size_t size, void* ptr) { auto data = (jbuffer_write_data*)ptr; return data->write(buffer, size); } int write(const char* buffer, size_t size) { while (size) { // Accumulate in the buffer int room = jr->allocd - jr->wpos; // No room? send it over the wire if (!room) { if (!flush()) { return -1; } room = jr->allocd - jr->wpos; } if ((int)size < room) { room = (int)size; } // Stick it in the buffer memcpy(jr->buf + jr->wpos, buffer, room); buffer += room; size -= room; jr->wpos += room; } return 0; } }; bool watchman_json_buffer::bserEncodeToStream( uint32_t bser_version, uint32_t bser_capabilities, const json_ref& json, w_stm_t stm) { struct jbuffer_write_data data = {stm, this}; int res; res = w_bser_write_pdu( bser_version, bser_capabilities, jbuffer_write_data::write, json, &data); if (res != 0) { return false; } return data.flush(); } bool watchman_json_buffer::jsonEncodeToStream( const json_ref& json, w_stm_t stm, int flags) { struct jbuffer_write_data data = {stm, this}; int res; res = json_dump_callback(json, jbuffer_write_data::write, &data, flags); if (res != 0) { return false; } if (data.write("\n", 1) != 0) { return false; } return data.flush(); } bool watchman_json_buffer::pduEncodeToStream( enum w_pdu_type pdu_type, uint32_t capabilities, const json_ref& json, w_stm_t stm) { switch (pdu_type) { case is_json_compact: return jsonEncodeToStream(json, stm, JSON_COMPACT); case is_json_pretty: return jsonEncodeToStream(json, stm, JSON_INDENT(4)); case is_bser: return bserEncodeToStream(1, capabilities, json, stm); case is_bser_v2: return bserEncodeToStream(2, capabilities, json, stm); case need_data: default: return false; } } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/launchd.cpp000066400000000000000000000042421314236077500154620ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #ifdef __APPLE__ #include using watchman::FileDescriptor; /* When running under launchd, we prefer to obtain our listening * socket from it. We don't strictly need to run this way, but if we didn't, * when the user runs `watchman shutdown-server` the launchd job is left in * a waiting state and needs to be explicitly triggered to get it working * again. * By having the socket registered in our job description, launchd knows * that we want to be activated in this way and takes care of it for us. * * This is made more fun because Yosemite introduces launch_activate_socket() * as a shortcut for this flow and deprecated pretty much everything else * in launch.h. We use the deprecated functions so that we can run on * older releases. * */ #pragma GCC diagnostic ignored "-Wdeprecated-declarations" FileDescriptor w_get_listener_socket_from_launchd() { launch_data_t req, resp, socks; req = launch_data_new_string(LAUNCH_KEY_CHECKIN); if (req == NULL) { w_log(W_LOG_ERR, "unable to create LAUNCH_KEY_CHECKIN\n"); return FileDescriptor(); } resp = launch_msg(req); launch_data_free(req); if (resp == NULL) { w_log(W_LOG_ERR, "launchd checkin failed %s\n", strerror(errno)); return FileDescriptor(); } if (launch_data_get_type(resp) == LAUNCH_DATA_ERRNO) { w_log(W_LOG_ERR, "launchd checkin failed: %s\n", strerror(launch_data_get_errno(resp))); launch_data_free(resp); return FileDescriptor(); } socks = launch_data_dict_lookup(resp, LAUNCH_JOBKEY_SOCKETS); if (socks == NULL) { w_log(W_LOG_ERR, "launchd didn't provide any sockets\n"); launch_data_free(resp); return FileDescriptor(); } // the "sock" name here is coupled with the plist in main.c socks = launch_data_dict_lookup(socks, "sock"); if (socks == NULL) { w_log(W_LOG_ERR, "launchd: \"sock\" wasn't present in Sockets\n"); launch_data_free(resp); return FileDescriptor(); } return FileDescriptor( launch_data_get_fd(launch_data_array_get_index(socks, 0))); } #endif /* vim:ts=2:sw=2:et: */ watchman-4.9.0/listener-user.cpp000066400000000000000000000053431314236077500166500ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" // Functions relating to the per-user service static void cmd_shutdown(struct watchman_client* client, const json_ref&) { auto resp = make_response(); w_log(W_LOG_ERR, "shutdown-server was requested, exiting!\n"); w_request_shutdown(); resp.set("shutdown-server", json_true()); send_and_dispose_response(client, std::move(resp)); } W_CMD_REG("shutdown-server", cmd_shutdown, CMD_DAEMON|CMD_POISON_IMMUNE, NULL) void add_root_warnings_to_response( json_ref& response, const std::shared_ptr& root) { auto info = root->recrawlInfo.rlock(); if (!info->warning) { return; } response.set( "warning", w_string_to_json(w_string::build( info->warning, "\n", "To clear this warning, run:\n" "`watchman watch-del ", root->root_path, " ; watchman watch-project ", root->root_path, "`\n"))); } std::shared_ptr resolve_root_or_err( struct watchman_client* client, const json_ref& args, size_t root_index, bool create) { const char *root_name; char *errmsg = NULL; if (args.array().size() <= root_index) { send_error_response(client, "wrong number of arguments"); return nullptr; } const auto& ele = args.at(root_index); root_name = json_string_value(ele); if (!root_name) { send_error_response( client, "invalid value for argument %" PRIsize_t ", expected a string naming the root dir", root_index); return nullptr; } std::shared_ptr root; if (client->client_mode) { root = w_root_resolve_for_client_mode(root_name, &errmsg); } else { if (!client->client_is_owner) { // Only the owner is allowed to create watches create = false; } root = w_root_resolve(root_name, create, &errmsg); } if (!root) { if (!client->client_is_owner) { send_error_response(client, "unable to resolve root %s: %s (this may be " "because you are not the process owner)", root_name, errmsg); } else { send_error_response(client, "unable to resolve root %s: %s", root_name, errmsg); } free(errmsg); return nullptr; } if (client->perf_sample) { client->perf_sample->add_root_meta(root); } return root; } watchman_user_client::watchman_user_client( std::unique_ptr&& stm) : watchman_client(std::move(stm)) {} watchman_user_client::~watchman_user_client() { /* cancel subscriptions */ subscriptions.clear(); w_client_vacate_states(this); } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/listener.cpp000066400000000000000000000471311314236077500156750ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #ifdef HAVE_LIBGIMLI_H # include #endif #include using watchman::FileDescriptor; watchman::Synchronized>> clients; static FileDescriptor listener_fd; #ifndef _WIN32 static std::unique_ptr listener_thread_event; #else static HANDLE listener_thread_event; #endif static volatile bool stopping = false; #ifdef HAVE_LIBGIMLI_H static volatile struct gimli_heartbeat *hb = NULL; #endif bool w_is_stopping(void) { return stopping; } json_ref make_response(void) { auto resp = json_object(); resp.set("version", typed_string_to_json(PACKAGE_VERSION, W_STRING_UNICODE)); return resp; } bool enqueue_response( struct watchman_client* client, json_ref&& json, bool ping) { client->enqueueResponse(std::move(json), ping); return true; } void send_and_dispose_response( struct watchman_client* client, json_ref&& response) { enqueue_response(client, std::move(response), false); } void send_error_response(struct watchman_client *client, const char *fmt, ...) { va_list ap; va_start(ap, fmt); auto errorText = w_string::vprintf(fmt, ap); va_end(ap); auto resp = make_response(); resp.set("error", w_string_to_json(errorText)); if (client->perf_sample) { client->perf_sample->add_meta("error", w_string_to_json(errorText)); } if (client->current_command) { char *command = NULL; command = json_dumps(client->current_command, 0); watchman::log( watchman::ERR, "send_error_response: ", command, ", failed: ", errorText, "\n"); free(command); } else { watchman::log(watchman::ERR, "send_error_response: ", errorText, "\n"); } send_and_dispose_response(client, std::move(resp)); } watchman_client::watchman_client() : watchman_client(nullptr) {} watchman_client::watchman_client(std::unique_ptr&& stm) : stm(std::move(stm)), ping(w_event_make()) { w_log(W_LOG_DBG, "accepted client:stm=%p\n", this->stm.get()); } watchman_client::~watchman_client() { debugSub.reset(); errorSub.reset(); w_log(W_LOG_DBG, "client_delete %p\n", this); if (stm) { stm->shutdown(); } } void watchman_client::enqueueResponse(json_ref&& resp, bool ping) { responses.emplace_back(std::move(resp)); if (ping) { this->ping->notify(); } } void w_request_shutdown(void) { stopping = true; // Knock listener thread out of poll/accept #ifndef _WIN32 if (listener_thread_event) { listener_thread_event->notify(); } #else SetEvent(listener_thread_event); #endif } // The client thread reads and decodes json packets, // then dispatches the commands that it finds static void client_thread(std::shared_ptr client) { struct watchman_event_poll pfd[2]; json_error_t jerr; bool send_ok = true; // Keep a persistent vector around so that we can avoid allocating // and releasing heap memory when we collect items from the publisher std::vector> pending; client->stm->setNonBlock(true); w_set_thread_name( "client=%p:stm=%p:pid=%d", client.get(), client->stm.get(), client->stm->getPeerProcessID()); client->client_is_owner = client->stm->peerIsOwner(); pfd[0].evt = client->stm->getEvents(); pfd[1].evt = client->ping.get(); while (!stopping) { // Wait for input from either the client socket or // via the ping pipe, which signals that some other // thread wants to unilaterally send data to the client ignore_result(w_poll_events(pfd, 2, 2000)); if (stopping) { break; } if (pfd[0].ready) { auto request = client->reader.decodeNext(client->stm.get(), &jerr); if (!request && errno == EAGAIN) { // That's fine } else if (!request) { // Not so cool if (client->reader.wpos == client->reader.rpos) { // If they disconnected in between PDUs, no need to log // any error goto disconnected; } send_error_response( client.get(), "invalid json at position %d: %s", jerr.position, jerr.text); w_log(W_LOG_ERR, "invalid data from client: %s\n", jerr.text); goto disconnected; } else if (request) { client->pdu_type = client->reader.pdu_type; client->capabilities = client->reader.capabilities; dispatch_command(client.get(), request, CMD_DAEMON); } } if (pfd[1].ready) { while (client->ping->testAndClear()) { // Enqueue refs to pending log payloads pending.clear(); getPending(pending, client->debugSub, client->errorSub); for (auto& item : pending) { client->enqueueResponse(json_ref(item->payload), false); } // Maybe we have subscriptions to dispatch? auto userClient = std::dynamic_pointer_cast(client); if (userClient) { std::vector subsToDelete; for (auto& subiter : userClient->unilateralSub) { auto sub = subiter.first; auto subStream = subiter.second; watchman::log( watchman::DBG, "consider fan out sub ", sub->name, "\n"); pending.clear(); subStream->getPending(pending); bool seenSettle = false; for (auto& item : pending) { auto dumped = json_dumps(item->payload, 0); watchman::log( watchman::DBG, "Unilateral payload for sub ", sub->name, " ", dumped ? dumped : "<>", "\n"); free(dumped); if (item->payload.get_default("canceled")) { auto resp = make_response(); watchman::log( watchman::ERR, "Cancel subscription ", sub->name, " due to root cancellation\n"); resp.set({{"root", item->payload.get_default("root")}, {"unilateral", json_true()}, {"canceled", json_true()}, {"subscription", w_string_to_json(sub->name)}}); client->enqueueResponse(std::move(resp), false); // Remember to cancel this subscription. // We can't do it in this loop because that would // invalidate the iterators and cause a headache. subsToDelete.push_back(sub->name); continue; } if (item->payload.get_default("state-enter") || item->payload.get_default("state-leave")) { auto resp = make_response(); json_object_update(item->payload, resp); resp.set({{"unilateral", json_true()}, {"subscription", w_string_to_json(sub->name)}}); client->enqueueResponse(std::move(resp), false); watchman::log( watchman::DBG, "Fan out subscription state change for ", sub->name, "\n"); continue; } if (!sub->debug_paused && item->payload.get_default("settled")) { seenSettle = true; continue; } } if (seenSettle) { sub->processSubscription(); } } for (auto& name : subsToDelete) { userClient->unsubByName(name); } } } } /* now send our response(s) */ while (!client->responses.empty()) { auto& response_to_send = client->responses.front(); if (send_ok) { client->stm->setNonBlock(false); /* Return the data in the same format that was used to ask for it. * Don't bother sending any more messages if the client disconnects, * but still free their memory. */ send_ok = client->writer.pduEncodeToStream( client->pdu_type, client->capabilities, response_to_send, client->stm.get()); client->stm->setNonBlock(true); } client->responses.pop_front(); } } disconnected: w_set_thread_name( "NOT_CONN:client=%p:stm=%p:pid=%d", client.get(), client->stm.get(), client->stm->getPeerProcessID()); // Remove the client from the map before we tear it down, as this makes // it easier to flush out pending writes on windows without worrying // about w_log_to_clients contending for the write buffers clients.wlock()->erase(client); } // This is just a placeholder. // This catches SIGUSR1 so we don't terminate. // We use this to interrupt blocking syscalls // on the worker threads static void wakeme(int) {} #if defined(HAVE_KQUEUE) || defined(HAVE_FSEVENTS) #ifdef __OpenBSD__ #include #endif #include #include #include #include #endif #ifndef _WIN32 // If we are running under inetd-style supervision, call this function // to move the inetd provided socket descriptor(s) to a new descriptor // number and remember that we can just use these when we're starting // up the listener. void w_listener_prep_inetd() { if (listener_fd) { throw std::runtime_error( "w_listener_prep_inetd: listener_fd is already assigned"); } listener_fd = FileDescriptor(dup(STDIN_FILENO), "dup(stdin) for listener"); } static FileDescriptor get_listener_socket(const char *path) { struct sockaddr_un un; mode_t perms = cfg_get_perms( "sock_access", true /* write bits */, false /* execute bits */); FileDescriptor listener_fd; #ifdef __APPLE__ listener_fd = w_get_listener_socket_from_launchd(); if (listener_fd) { w_log(W_LOG_ERR, "Using socket from launchd as listening socket\n"); return listener_fd; } #endif if (strlen(path) >= sizeof(un.sun_path) - 1) { w_log(W_LOG_ERR, "%s: path is too long\n", path); return FileDescriptor(); } listener_fd = FileDescriptor(socket(PF_LOCAL, SOCK_STREAM, 0), "socket"); un.sun_family = PF_LOCAL; memcpy(un.sun_path, path, strlen(path) + 1); unlink(path); if (bind(listener_fd.fd(), (struct sockaddr*)&un, sizeof(un)) != 0) { w_log(W_LOG_ERR, "bind(%s): %s\n", path, strerror(errno)); return FileDescriptor(); } // The permissions in the containing directory should be correct, so this // should be correct as well. But set the permissions in any case. if (chmod(path, perms) == -1) { w_log(W_LOG_ERR, "chmod(%s, %#o): %s", path, perms, strerror(errno)); return FileDescriptor(); } // Double-check that the socket has the right permissions. This can happen // when the containing directory was created in a previous run, with a group // the user is no longer in. struct stat st; if (lstat(path, &st) == -1) { watchman::log(watchman::ERR, "lstat(", path, "): ", strerror(errno), "\n"); return FileDescriptor(); } // This is for testing only // (test_sock_perms.py:test_user_previously_in_sock_group). Do not document. const char *sock_group_name = cfg_get_string("__sock_file_group", nullptr); if (!sock_group_name) { sock_group_name = cfg_get_string("sock_group", nullptr); } if (sock_group_name) { const struct group *sock_group = w_get_group(sock_group_name); if (!sock_group) { return FileDescriptor(); } if (st.st_gid != sock_group->gr_gid) { watchman::log( watchman::ERR, "for socket '", path, "', gid ", st.st_gid, " doesn't match expected gid ", sock_group->gr_gid, " (group name ", sock_group_name, "). Ensure that you are still a member of group ", sock_group_name, ".\n"); return FileDescriptor(); } } if (listen(listener_fd.fd(), 200) != 0) { w_log(W_LOG_ERR, "listen(%s): %s\n", path, strerror(errno)); return FileDescriptor(); } return listener_fd; } #endif static std::shared_ptr make_new_client( std::unique_ptr&& stm) { auto client = std::make_shared(std::move(stm)); clients.wlock()->insert(client); // Start a thread for the client. // We used to use libevent for this, but we have // a low volume of concurrent clients and the json // parse/encode APIs are not easily used in a non-blocking // server architecture. try { std::thread thr([client]() { client_thread(client); }); thr.detach(); } catch (const std::exception& e) { clients.wlock()->erase(client); throw; } return client; } #ifdef _WIN32 static void named_pipe_accept_loop(const char *path) { HANDLE handles[2]; OVERLAPPED olap; HANDLE connected_event = CreateEvent(NULL, FALSE, TRUE, NULL); if (!connected_event) { w_log(W_LOG_ERR, "named_pipe_accept_loop: CreateEvent failed: %s\n", win32_strerror(GetLastError())); return; } listener_thread_event = CreateEvent(NULL, FALSE, TRUE, NULL); handles[0] = connected_event; handles[1] = listener_thread_event; memset(&olap, 0, sizeof(olap)); olap.hEvent = connected_event; w_log(W_LOG_ERR, "waiting for pipe clients on %s\n", path); while (!stopping) { FileDescriptor client_fd; DWORD res; client_fd = FileDescriptor(intptr_t(CreateNamedPipe( path, PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED, PIPE_TYPE_BYTE | PIPE_READMODE_BYTE | PIPE_REJECT_REMOTE_CLIENTS, PIPE_UNLIMITED_INSTANCES, WATCHMAN_IO_BUF_SIZE, 512, 0, nullptr))); if (!client_fd) { w_log(W_LOG_ERR, "CreateNamedPipe(%s) failed: %s\n", path, win32_strerror(GetLastError())); continue; } ResetEvent(connected_event); if (!ConnectNamedPipe((HANDLE)client_fd.handle(), &olap)) { res = GetLastError(); if (res == ERROR_PIPE_CONNECTED) { make_new_client(w_stm_fdopen(std::move(client_fd))); continue; } if (res != ERROR_IO_PENDING) { w_log(W_LOG_ERR, "ConnectNamedPipe: %s\n", win32_strerror(GetLastError())); continue; } res = WaitForMultipleObjectsEx(2, handles, false, INFINITE, true); if (res == WAIT_OBJECT_0 + 1) { // Signalled to stop CancelIoEx((HANDLE)client_fd.handle(), &olap); continue; } if (res != WAIT_OBJECT_0) { w_log( W_LOG_ERR, "WaitForMultipleObjectsEx: ConnectNamedPipe: " "unexpected status %u\n", res); CancelIoEx((HANDLE)client_fd.handle(), &olap); continue; } } make_new_client(w_stm_fdopen(std::move(client_fd))); } } #endif #ifndef _WIN32 static void accept_loop(FileDescriptor&& listenerDescriptor) { auto listener = w_stm_fdopen(std::move(listenerDescriptor)); while (!stopping) { FileDescriptor client_fd; struct watchman_event_poll pfd[2]; int bufsize; #ifdef HAVE_LIBGIMLI_H if (hb) { gimli_heartbeat_set(hb, GIMLI_HB_RUNNING); } #endif pfd[0].evt = listener->getEvents(); pfd[1].evt = listener_thread_event.get(); if (w_poll_events(pfd, 2, 60000) == 0) { if (stopping) { break; } // Timed out, or error. // Arrange to sanity check that we're working w_check_my_sock(); continue; } if (stopping) { break; } #ifdef HAVE_ACCEPT4 client_fd = FileDescriptor( accept4(listener->getFileDescriptor().fd(), nullptr, 0, SOCK_CLOEXEC)); #else client_fd = FileDescriptor(accept(listener->getFileDescriptor().fd(), nullptr, 0)); #endif if (!client_fd) { continue; } client_fd.setCloExec(); bufsize = WATCHMAN_IO_BUF_SIZE; setsockopt( client_fd.fd(), SOL_SOCKET, SO_SNDBUF, (void*)&bufsize, sizeof(bufsize)); make_new_client(w_stm_fdopen(std::move(client_fd))); } } #endif bool w_start_listener(const char *path) { #ifndef _WIN32 struct sigaction sa; sigset_t sigset; #endif #ifdef HAVE_LIBGIMLI_H hb = gimli_heartbeat_attach(); #endif #if defined(HAVE_KQUEUE) || defined(HAVE_FSEVENTS) { struct rlimit limit; # ifndef __OpenBSD__ int mib[2] = { CTL_KERN, # ifdef KERN_MAXFILESPERPROC KERN_MAXFILESPERPROC # else KERN_MAXFILES # endif }; # endif int maxperproc; getrlimit(RLIMIT_NOFILE, &limit); # ifndef __OpenBSD__ { size_t len; len = sizeof(maxperproc); sysctl(mib, 2, &maxperproc, &len, NULL, 0); w_log(W_LOG_ERR, "file limit is %" PRIu64 " kern.maxfilesperproc=%i\n", limit.rlim_cur, maxperproc); } # else maxperproc = limit.rlim_max; w_log(W_LOG_ERR, "openfiles-cur is %" PRIu64 " openfiles-max=%i\n", limit.rlim_cur, maxperproc); # endif if (limit.rlim_cur != RLIM_INFINITY && maxperproc > 0 && limit.rlim_cur < (rlim_t)maxperproc) { limit.rlim_cur = maxperproc; if (setrlimit(RLIMIT_NOFILE, &limit)) { w_log(W_LOG_ERR, "failed to raise limit to %" PRIu64 " (%s).\n", limit.rlim_cur, strerror(errno)); } else { w_log(W_LOG_ERR, "raised file limit to %" PRIu64 "\n", limit.rlim_cur); } } getrlimit(RLIMIT_NOFILE, &limit); #ifndef HAVE_FSEVENTS if (limit.rlim_cur < 10240) { w_log(W_LOG_ERR, "Your file descriptor limit is very low (%" PRIu64 "), " "please consult the watchman docs on raising the limits\n", limit.rlim_cur); } #endif } #endif #ifndef _WIN32 signal(SIGPIPE, SIG_IGN); /* allow SIGUSR1 and SIGCHLD to wake up a blocked thread, without restarting * syscalls */ memset(&sa, 0, sizeof(sa)); sa.sa_handler = wakeme; sa.sa_flags = 0; sigaction(SIGUSR1, &sa, NULL); sigaction(SIGCHLD, &sa, NULL); // Block SIGCHLD everywhere sigemptyset(&sigset); sigaddset(&sigset, SIGCHLD); sigprocmask(SIG_BLOCK, &sigset, NULL); if (listener_fd) { // Assume that it was prepped by w_listener_prep_inetd() w_log(W_LOG_ERR, "Using socket from inetd as listening socket\n"); } else { listener_fd = get_listener_socket(path); if (!listener_fd) { return false; } } listener_fd.setCloExec(); #endif #ifdef HAVE_LIBGIMLI_H if (hb) { gimli_heartbeat_set(hb, GIMLI_HB_RUNNING); } else { w_setup_signal_handlers(); } #else w_setup_signal_handlers(); #endif listener_fd.setNonBlock(); // Now run the dispatch #ifndef _WIN32 listener_thread_event = w_event_make(); accept_loop(std::move(listener_fd)); #else named_pipe_accept_loop(path); #endif // Wait for clients, waking any sleeping clients up in the process { int interval = 2000; int last_count = 0, n_clients = 0; const int max_interval = 1000000; // 1 second do { { auto clientsLock = clients.rlock(); n_clients = clientsLock->size(); for (auto client : *clientsLock) { client->ping->notify(); } } if (n_clients != last_count) { w_log(W_LOG_ERR, "waiting for %d clients to terminate\n", n_clients); } usleep(interval); interval = std::min(interval * 2, max_interval); } while (n_clients > 0); } w_state_shutdown(); return true; } /* get-pid */ static void cmd_get_pid(struct watchman_client* client, const json_ref&) { auto resp = make_response(); resp.set("pid", json_integer(getpid())); send_and_dispose_response(client, std::move(resp)); } W_CMD_REG("get-pid", cmd_get_pid, CMD_DAEMON, NULL) /* vim:ts=2:sw=2:et: */ watchman-4.9.0/log.cpp000066400000000000000000000227041314236077500146300ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #include #include #include #ifdef __APPLE__ #include #endif #include "Logging.h" #include "watchman_scopeguard.h" int log_level = W_LOG_ERR; #ifdef __APPLE__ static pthread_key_t thread_name_key; #else static thread_local std::string thread_name_str; #endif static constexpr size_t kMaxFrames = 64; namespace { template void write_stderr(const String& str) { w_string_piece piece = str; ignore_result(write(STDERR_FILENO, piece.data(), piece.size())); } template void write_stderr(const String& str, Strings&&... strings) { write_stderr(str); write_stderr(strings...); } } static void log_stack_trace(void) { #if defined(HAVE_BACKTRACE) && defined(HAVE_BACKTRACE_SYMBOLS) std::array array; size_t size; char **strings; size_t i; size = backtrace(array.data(), array.size()); strings = backtrace_symbols(array.data(), size); write_stderr("Fatal error detected at:\n"); for (i = 0; i < size; i++) { write_stderr(strings[i], "\n"); } free(strings); #endif } namespace watchman { namespace { struct levelMaps { // Actually a map of LogLevel, w_string, but it is relatively high friction // to define the hasher for an enum key :-p std::unordered_map levelToLabel; std::unordered_map labelToLevel; levelMaps() : levelToLabel{{FATAL, "fatal"}, {ERR, "error"}, {OFF, "off"}, {DBG, "debug"}} { // Create the reverse map for (auto& it : levelToLabel) { labelToLevel.insert( std::make_pair(it.second, static_cast(it.first))); } } }; // Meyers singleton for holding the log level maps levelMaps& getLevelMaps() { static levelMaps maps; return maps; } } const w_string& logLevelToLabel(enum LogLevel level) { return getLevelMaps().levelToLabel.at(static_cast(level)); } enum LogLevel logLabelToLevel(const w_string& label) { return getLevelMaps().labelToLevel.at(label); } Log::Log() : errorPub_(std::make_shared()), debugPub_(std::make_shared()) { setStdErrLoggingLevel(ERR); } Log& getLog() { static Log log; return log; } char* Log::currentTimeString(char* buf, size_t bufsize) { struct timeval tv; char timebuf[64]; struct tm tm; gettimeofday(&tv, NULL); #ifdef _WIN32 tm = *localtime(&tv.tv_sec); #else localtime_r(&tv.tv_sec, &tm); #endif strftime(timebuf, sizeof(timebuf), "%Y-%m-%dT%H:%M:%S", &tm); snprintf(buf, bufsize, "%s,%03d", timebuf, (int)tv.tv_usec / 1000); return buf; } const char* Log::getThreadName() { #ifdef __APPLE__ auto thread_name = (char*)pthread_getspecific(thread_name_key); #else auto thread_name = thread_name_str.c_str(); #endif if (thread_name) { return thread_name; } std::stringstream ss; ss << std::this_thread::get_id(); return w_set_thread_name(ss.str().c_str()); } void Log::setStdErrLoggingLevel(enum LogLevel level) { auto notify = [this]() { doLogToStdErr(); }; switch (level) { case OFF: errorSub_.reset(); debugSub_.reset(); return; case DBG: if (!debugSub_) { debugSub_ = debugPub_->subscribe(notify); } if (!errorSub_) { errorSub_ = errorPub_->subscribe(notify); } return; default: debugSub_.reset(); if (!errorSub_) { errorSub_ = errorPub_->subscribe(notify); } return; } } void Log::doLogToStdErr() { std::vector> items; { std::lock_guard lock(stdErrPrintMutex_); getPending(items, errorSub_, debugSub_); } bool fatal = false; static w_string kFatal("fatal"); for (auto& item : items) { auto& log = json_to_w_string(item->payload.get("log")); ignore_result(write(STDERR_FILENO, log.data(), log.size())); if (json_to_w_string(item->payload.get("level")) == kFatal) { fatal = true; } } if (fatal) { log_stack_trace(); abort(); } } } // namespace watchman #ifndef _WIN32 static void crash_handler(int signo, siginfo_t* si, void*) { const char *reason = ""; if (si) { switch (si->si_signo) { case SIGILL: switch (si->si_code) { case ILL_ILLOPC: reason = "illegal opcode"; break; case ILL_ILLOPN: reason = "illegal operand"; break; case ILL_ILLADR: reason = "illegal addressing mode"; break; case ILL_ILLTRP: reason = "illegal trap"; break; case ILL_PRVOPC: reason = "privileged opcode"; break; case ILL_PRVREG: reason = "privileged register"; break; case ILL_COPROC: reason = "co-processor error"; break; case ILL_BADSTK: reason = "internal stack error"; break; } break; case SIGFPE: switch (si->si_code) { case FPE_INTDIV: reason = "integer divide by zero"; break; case FPE_INTOVF: reason = "integer overflow"; break; case FPE_FLTDIV: reason = "floating point divide by zero"; break; case FPE_FLTOVF: reason = "floating point overflow"; break; case FPE_FLTUND: reason = "floating point underflow"; break; case FPE_FLTRES: reason = "floating point inexact result"; break; case FPE_FLTINV: reason = "invalid floating point operation"; break; case FPE_FLTSUB: reason = "subscript out of range"; break; } break; case SIGSEGV: switch (si->si_code) { case SEGV_MAPERR: reason = "address not mapped to object"; break; case SEGV_ACCERR: reason = "invalid permissions for mapped object"; break; } break; #ifdef SIGBUS case SIGBUS: switch (si->si_code) { case BUS_ADRALN: reason = "invalid address alignment"; break; case BUS_ADRERR: reason = "non-existent physical address"; break; } break; #endif } } if (si) { dprintf(STDERR_FILENO, "Terminating due to signal %d %s " "generated by pid=%d uid=%d. %s (%p)\n", signo, w_strsignal(signo), si->si_pid, si->si_uid, reason, si->si_value.sival_ptr); } else { dprintf(STDERR_FILENO, "Terminating due to signal %d %s. %s\n", signo, w_strsignal(signo), reason); } #if defined(HAVE_BACKTRACE) && defined(HAVE_BACKTRACE_SYMBOLS_FD) { void *array[24]; size_t size = backtrace(array, sizeof(array)/sizeof(array[0])); backtrace_symbols_fd(array, size, STDERR_FILENO); } #endif if (signo == SIGTERM) { w_request_shutdown(); return; } abort(); } #endif #ifdef _WIN32 static LONG WINAPI exception_filter(LPEXCEPTION_POINTERS excep) { std::array array; size_t size; char** strings; size_t i; char timebuf[64]; size = backtrace_from_exception(excep, array.data(), array.size()); strings = backtrace_symbols(array.data(), size); write_stderr( watchman::Log::currentTimeString(timebuf, sizeof(timebuf)), ": [", watchman::Log::getThreadName(), "] Unhandled win32 exception. Fatal error detected at:\n"); for (i = 0; i < size; i++) { write_stderr(strings[i], "\n"); } free(strings); write_stderr("the stack trace for the exception filter call is:\n"); size = backtrace(array.data(), array.size()); strings = backtrace_symbols(array.data(), size); for (i = 0; i < size; i++) { write_stderr(strings[i], "\n"); } free(strings); // Terminate the process abort(); return EXCEPTION_CONTINUE_SEARCH; } #endif void w_setup_signal_handlers(void) { #ifndef _WIN32 struct sigaction sa; memset(&sa, 0, sizeof(sa)); sa.sa_sigaction = crash_handler; sa.sa_flags = SA_SIGINFO|SA_RESETHAND; sigaction(SIGSEGV, &sa, NULL); #ifdef SIGBUS sigaction(SIGBUS, &sa, NULL); #endif sigaction(SIGFPE, &sa, NULL); sigaction(SIGILL, &sa, NULL); sigaction(SIGTERM, &sa, NULL); #else // Don't show error dialogs for background service failures SetErrorMode(SEM_FAILCRITICALERRORS); // also tell the C runtime that we should just abort when // we abort; don't do the crash reporting dialog. _set_abort_behavior(_WRITE_ABORT_MSG, ~0); // Force error output to stderr, don't use a msgbox. _set_error_mode(_OUT_TO_STDERR); // bridge OS exceptions into our FATAL logger so that we can // capture a stack trace. SetUnhandledExceptionFilter(exception_filter); #endif std::set_terminate( []() { watchman::log(watchman::FATAL, "std::terminate was called\n"); }); } #ifdef __APPLE__ static w_ctor_fn_type(register_thread_name) { pthread_key_create(&thread_name_key, free); } w_ctor_fn_reg(register_thread_name); #endif const char *w_set_thread_name(const char *fmt, ...) { va_list ap; #ifdef __APPLE__ auto thread_name = (char*)pthread_getspecific(thread_name_key); free(thread_name); #else char* thread_name = nullptr; SCOPE_EXIT { free(thread_name); }; #endif va_start(ap, fmt); ignore_result(vasprintf(&thread_name, fmt, ap)); va_end(ap); #ifdef __APPLE__ pthread_setspecific(thread_name_key, thread_name); return thread_name; #else thread_name_str = thread_name; return thread_name_str.c_str(); #endif } void w_log(int level, WATCHMAN_FMT_STRING(const char *fmt), ...) { va_list ap; va_start(ap, fmt); watchman::getLog().logVPrintf( static_cast(level), fmt, ap); va_end(ap); } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/main.cpp000066400000000000000000000661501314236077500147760ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "ChildProcess.h" #include "Logging.h" #include "ThreadPool.h" #include "watchman.h" #ifndef _WIN32 #include #endif using watchman::ChildProcess; using watchman::FileDescriptor; using Options = ChildProcess::Options; static int show_help = 0; static int show_version = 0; static enum w_pdu_type server_pdu = is_bser; static enum w_pdu_type output_pdu = is_json_pretty; static uint32_t server_capabilities = 0; static uint32_t output_capabilities = 0; static char *server_encoding = NULL; static char *output_encoding = NULL; static char *test_state_dir = NULL; static char *sock_name = NULL; char *log_name = NULL; static char *pid_file = NULL; char *watchman_state_file = NULL; static char **daemon_argv = NULL; const char *watchman_tmp_dir = NULL; static int persistent = 0; int dont_save_state = 0; static int foreground = 0; static int no_pretty = 0; static int no_spawn = 0; static int no_local = 0; #ifndef _WIN32 static int inetd_style = 0; static struct sockaddr_un un; #endif static int json_input_arg = 0; #ifdef __APPLE__ #include #endif static const char *compute_user_name(void); static void compute_file_name(char **strp, const char *user, const char *suffix, const char *what); static bool lock_pidfile(void) { #if !defined(USE_GIMLI) && !defined(_WIN32) struct flock lock; pid_t mypid; // We defer computing this path until we're in the server context because // eager evaluation can trigger integration test failures unless all clients // are aware of both the pidfile and the sockpath being used in the tests. compute_file_name(&pid_file, compute_user_name(), "pid", "pidfile"); mypid = getpid(); memset(&lock, 0, sizeof(lock)); lock.l_type = F_WRLCK; lock.l_start = 0; lock.l_whence = SEEK_SET; lock.l_len = 0; FileDescriptor fd(open(pid_file, O_RDWR | O_CREAT, 0644)); if (!fd) { w_log(W_LOG_ERR, "Failed to open pidfile %s for write: %s\n", pid_file, strerror(errno)); return false; } // Ensure that no children inherit the locked pidfile descriptor fd.setCloExec(); if (fcntl(fd.fd(), F_SETLK, &lock) != 0) { char pidstr[32]; int len; len = read(fd.fd(), pidstr, sizeof(pidstr) - 1); pidstr[len] = '\0'; w_log(W_LOG_ERR, "Failed to lock pidfile %s: process %s owns it: %s\n", pid_file, pidstr, strerror(errno)); return false; } // Replace contents of the pidfile with our pid string if (ftruncate(fd.fd(), 0)) { w_log(W_LOG_ERR, "Failed to truncate pidfile %s: %s\n", pid_file, strerror(errno)); return false; } dprintf(fd.fd(), "%d", mypid); fsync(fd.fd()); /* We are intentionally not closing the fd and intentionally not storing * a reference to it anywhere: the intention is that it remain locked * for the rest of the lifetime of our process. * close(fd); // NOPE! */ fd.release(); return true; #else // ze-googles, they do nothing!! return true; #endif } static void run_service(void) { int fd; bool res; #ifndef _WIN32 // Before we redirect stdin/stdout to the log files, move any inetd-provided // socket to a different descriptor number. if (inetd_style) { w_listener_prep_inetd(); } #endif // redirect std{in,out,err} fd = open("/dev/null", O_RDONLY); if (fd != -1) { ignore_result(dup2(fd, STDIN_FILENO)); close(fd); } fd = open(log_name, O_WRONLY|O_APPEND|O_CREAT, 0600); if (fd != -1) { ignore_result(dup2(fd, STDOUT_FILENO)); ignore_result(dup2(fd, STDERR_FILENO)); close(fd); } if (!lock_pidfile()) { return; } #ifndef _WIN32 /* we are the child, let's set things up */ ignore_result(chdir("/")); #endif w_set_thread_name("listener"); { char hostname[256]; gethostname(hostname, sizeof(hostname)); hostname[sizeof(hostname) - 1] = '\0'; w_log(W_LOG_ERR, "Watchman %s %s starting up on %s\n", PACKAGE_VERSION, #ifdef WATCHMAN_BUILD_INFO WATCHMAN_BUILD_INFO, #else "", #endif hostname); } #ifndef _WIN32 // Block SIGCHLD by default; we only want it to be delivered // to the reaper thread and only when it is ready to reap. // This MUST happen before we spawn any threads so that they // can pick up our default blocked signal mask. { sigset_t sigset; sigemptyset(&sigset); sigaddset(&sigset, SIGCHLD); sigprocmask(SIG_BLOCK, &sigset, NULL); } #endif watchman::getThreadPool().start( cfg_get_int("thread_pool_worker_threads", 16), cfg_get_int("thread_pool_max_items", 1024 * 1024)); ClockSpec::init(); w_state_load(); res = w_start_listener(sock_name); w_root_free_watched_roots(); cfg_shutdown(); watchman::log(watchman::ERR, "Exiting from service with res=", res, "\n"); if (res) { exit(0); } exit(1); } #ifndef _WIN32 // close any random descriptors that we may have inherited, // leaving only the main stdio descriptors open, if we execute a // child process. static void close_random_fds(void) { struct rlimit limit; long open_max = 0; int max_fd; // Deduce the upper bound for number of descriptors limit.rlim_cur = 0; #ifdef RLIMIT_NOFILE if (getrlimit(RLIMIT_NOFILE, &limit) != 0) { limit.rlim_cur = 0; } #elif defined(RLIM_OFILE) if (getrlimit(RLIMIT_OFILE, &limit) != 0) { limit.rlim_cur = 0; } #endif #ifdef _SC_OPEN_MAX open_max = sysconf(_SC_OPEN_MAX); #endif if (open_max <= 0) { open_max = 36; /* POSIX_OPEN_MAX (20) + some padding */ } if (limit.rlim_cur == RLIM_INFINITY || limit.rlim_cur > INT_MAX) { // "no limit", which seems unlikely limit.rlim_cur = INT_MAX; } // Take the larger of the two values we compute if (limit.rlim_cur > (rlim_t)open_max) { open_max = limit.rlim_cur; } for (max_fd = open_max; max_fd > STDERR_FILENO; --max_fd) { close(max_fd); } } #endif #if !defined(USE_GIMLI) && !defined(_WIN32) static void daemonize(void) { close_random_fds(); // the double-fork-and-setsid trick establishes a // child process that runs in its own process group // with its own session and that won't get killed // off when your shell exits (for example). if (fork()) { // The parent of the first fork is the client // process that is being run by the user, and // we want to allow that to continue. return; } setsid(); if (fork()) { // The parent of the second fork has served its // purpose, so we simply exit here, otherwise // we'll duplicate the effort of either the // client or the server depending on if we // return or not. _exit(0); } // we are the child, let's set things up run_service(); } #endif #ifdef _WIN32 static void spawn_win32(void) { char module_name[WATCHMAN_NAME_MAX]; GetModuleFileName(NULL, module_name, sizeof(module_name)); Options opts; opts.setFlags(POSIX_SPAWN_SETPGROUP); opts.open(STDIN_FILENO, "/dev/null", O_RDONLY, 0666); opts.open(STDOUT_FILENO, log_name, O_WRONLY | O_CREAT | O_APPEND, 0600); opts.dup2(STDOUT_FILENO, STDERR_FILENO); std::vector args{module_name, "--foreground"}; for (size_t i = 0; daemon_argv[i]; i++) { args.push_back(daemon_argv[i]); } ChildProcess proc(args, std::move(opts)); proc.disown(); } #endif #ifdef USE_GIMLI static void spawn_via_gimli(void) { std::vector args{ GIMLI_MONITOR_PATH, #ifdef WATCHMAN_STATE_DIR "--trace-dir=" WATCHMAN_STATE_DIR "/traces", #endif "--pidfile", pid_file, "watchman", "--foreground", }; for (size_t i = 0; daemon_argv[i]; i++) { args.push_back(daemon_argv[i]); } close_random_fds(); Options opts; opts.open(STDIN_FILENO, "/dev/null", O_RDONLY, 0666); opts.open(STDOUT_FILENO, log_name, O_WRONLY | O_CREAT | O_APPEND, 0600); opts.dup2(STDOUT_FILENO, STDERR_FILENO); ChildProcess proc(args, std::move(opts)); proc.disown(); } #endif #ifndef _WIN32 // Spawn watchman via a site-specific spawn helper program. // We'll pass along any daemon-appropriate arguments that // we noticed during argument parsing. static void spawn_site_specific(const char *spawner) { std::vector args{ spawner, }; for (size_t i = 0; daemon_argv[i]; i++) { args.push_back(daemon_argv[i]); } close_random_fds(); Options opts; opts.open(STDIN_FILENO, "/dev/null", O_RDONLY, 0666); opts.open(STDOUT_FILENO, log_name, O_WRONLY | O_CREAT | O_APPEND, 0600); opts.dup2(STDOUT_FILENO, STDERR_FILENO); try { ChildProcess proc(args, std::move(opts)); auto res = proc.wait(); if (WIFEXITED(res) && WEXITSTATUS(res) == 0) { return; } if (WIFEXITED(res)) { watchman::log( watchman::FATAL, spawner, ": exited with status ", WEXITSTATUS(res), "\n"); } else if (WIFSIGNALED(res)) { watchman::log( watchman::FATAL, spawner, ": signaled with ", WTERMSIG(res), "\n"); } watchman::log( watchman::ERR, spawner, ": failed to start, exit status ", res, "\n"); } catch (const std::exception& exc) { watchman::log( watchman::FATAL, "Failed to spawn watchman via `", spawner, "': ", exc.what(), "\n"); } } #endif #ifdef __APPLE__ static void spawn_via_launchd(void) { char watchman_path[WATCHMAN_NAME_MAX]; uint32_t size = sizeof(watchman_path); char plist_path[WATCHMAN_NAME_MAX]; FILE *fp; struct passwd *pw; uid_t uid; close_random_fds(); if (_NSGetExecutablePath(watchman_path, &size) == -1) { w_log(W_LOG_ERR, "_NSGetExecutablePath: path too long; size %u\n", size); abort(); } uid = getuid(); pw = getpwuid(uid); if (!pw) { w_log(W_LOG_ERR, "getpwuid(%d) failed: %s. I don't know who you are\n", uid, strerror(errno)); abort(); } snprintf(plist_path, sizeof(plist_path), "%s/Library/LaunchAgents", pw->pw_dir); // Best effort attempt to ensure that the agents dir exists. We'll detect // and report the failure in the fopen call below. mkdir(plist_path, 0755); snprintf(plist_path, sizeof(plist_path), "%s/Library/LaunchAgents/com.github.facebook.watchman.plist", pw->pw_dir); if (access(plist_path, R_OK) == 0) { // Unload any that may already exist, as it is likely wrong ChildProcess unload_proc( {"/bin/launchctl", "unload", "-F", plist_path}, Options()); unload_proc.wait(); // Forcibly remove the plist. In some cases it may have some attributes // set that prevent launchd from loading it. This can happen where // the system was re-imaged or restored from a backup unlink(plist_path); } fp = fopen(plist_path, "w"); if (!fp) { w_log(W_LOG_ERR, "Failed to open %s for write: %s\n", plist_path, strerror(errno)); abort(); } compute_file_name(&pid_file, compute_user_name(), "pid", "pidfile"); auto plist_content = watchman::to( "\n" "\n" "\n" "\n" " Label\n" " com.github.facebook.watchman\n" " Disabled\n" " \n" " ProgramArguments\n" " \n" " ", watchman_path, "\n" " --foreground\n" " --logfile=", log_name, "\n" " --log-level=", log_level, "\n" " --sockname=", sock_name, "\n" " --statefile=", watchman_state_file, "\n" " --pidfile=", pid_file, "\n" " \n" " KeepAlive\n" " \n" " Crashed\n" " \n" " \n" " RunAtLoad\n" " \n" " EnvironmentVariables\n" " \n" " PATH\n" " \n" " \n" " ProcessType\n" " Interactive\n" " Nice\n" " -5\n" "\n" "\n"); fwrite(plist_content.data(), 1, plist_content.size(), fp); fclose(fp); // Don't rely on umask, ensure we have the correct perms chmod(plist_path, 0644); ChildProcess load_proc( {"/bin/launchctl", "load", "-F", plist_path}, Options()); auto res = load_proc.wait(); if (WIFEXITED(res) && WEXITSTATUS(res) == 0) { return; } // Most likely cause is "headless" operation with no GUI context if (WIFEXITED(res)) { w_log(W_LOG_ERR, "launchctl: exited with status %d\n", WEXITSTATUS(res)); } else if (WIFSIGNALED(res)) { w_log(W_LOG_ERR, "launchctl: signaled with %d\n", WTERMSIG(res)); } w_log(W_LOG_ERR, "Falling back to daemonize\n"); daemonize(); } #endif static void parse_encoding(const char *enc, enum w_pdu_type *pdu) { if (!enc) { return; } if (!strcmp(enc, "json")) { *pdu = is_json_compact; return; } if (!strcmp(enc, "bser")) { *pdu = is_bser; return; } if (!strcmp(enc, "bser-v2")) { *pdu = is_bser_v2; return; } w_log(W_LOG_ERR, "Invalid encoding '%s', use one of json, bser or bser-v2\n", enc); exit(EX_USAGE); } static const char *get_env_with_fallback(const char *name1, const char *name2, const char *fallback) { const char *val; val = getenv(name1); if (!val || *val == 0) { val = getenv(name2); } if (!val || *val == 0) { val = fallback; } return val; } static void compute_file_name(char **strp, const char *user, const char *suffix, const char *what) { char *str = NULL; str = *strp; if (!str) { /* We'll put our various artifacts in a user specific dir * within the state dir location */ char *state_dir = NULL; const char *state_parent = test_state_dir ? test_state_dir : #ifdef WATCHMAN_STATE_DIR WATCHMAN_STATE_DIR #else watchman_tmp_dir #endif ; ignore_result(asprintf(&state_dir, "%s/%s-state", state_parent, user)); if (!state_dir) { w_log(W_LOG_ERR, "out of memory computing %s\n", what); exit(1); } if (mkdir(state_dir, 0700) == 0 || errno == EEXIST) { #ifndef _WIN32 // verify ownership struct stat st; int dir_fd; int ret = 0; uid_t euid = geteuid(); // TODO: also allow a gid to be specified here const char* sock_group_name = cfg_get_string("sock_group", nullptr); // S_ISGID is set so that files inside this directory inherit the group // name mode_t dir_perms = cfg_get_perms( "sock_access", false /* write bits */, true /* execute bits */) | S_ISGID; auto dirp = w_dir_open(state_dir, false /* don't need strict symlink rules */); dir_fd = dirp->getFd(); if (dir_fd == -1) { w_log(W_LOG_ERR, "dirfd(%s): %s\n", state_dir, strerror(errno)); goto bail; } if (fstat(dir_fd, &st) != 0) { w_log(W_LOG_ERR, "fstat(%s): %s\n", state_dir, strerror(errno)); ret = 1; goto bail; } if (euid != st.st_uid) { w_log(W_LOG_ERR, "the owner of %s is uid %d and doesn't match your euid %d\n", state_dir, st.st_uid, euid); ret = 1; goto bail; } if (st.st_mode & 0022) { w_log(W_LOG_ERR, "the permissions on %s allow others to write to it. " "Verify that you own the contents and then fix its " "permissions by running `chmod 0700 %s`\n", state_dir, state_dir); ret = 1; goto bail; } if (sock_group_name) { const struct group *sock_group = w_get_group(sock_group_name); if (!sock_group) { ret = 1; goto bail; } if (fchown(dir_fd, -1, sock_group->gr_gid) == -1) { w_log(W_LOG_ERR, "setting up group '%s' failed: %s\n", sock_group_name, strerror(errno)); ret = 1; goto bail; } } // Depending on group and world accessibility, change permissions on the // directory. We can't leave the directory open and set permissions on the // socket because not all POSIX systems respect permissions on UNIX domain // sockets, but all POSIX systems respect permissions on the containing // directory. w_log(W_LOG_DBG, "Setting permissions on state dir to 0%o\n", dir_perms); if (fchmod(dir_fd, dir_perms) == -1) { w_log(W_LOG_ERR, "fchmod(%s, %#o): %s\n", state_dir, dir_perms, strerror(errno)); ret = 1; goto bail; } bail: if (ret) { exit(ret); } #endif } else { w_log(W_LOG_ERR, "while computing %s: failed to create %s: %s\n", what, state_dir, strerror(errno)); exit(1); } ignore_result(asprintf(&str, "%s/%s", state_dir, suffix)); if (!str) { w_log(W_LOG_ERR, "out of memory computing %s", what); abort(); } free(state_dir); } #ifndef _WIN32 if (str[0] != '/') { w_log(W_LOG_ERR, "invalid %s: %s", what, str); abort(); } #endif *strp = str; } #ifndef _WIN32 const struct group *w_get_group(const char *group_name) { // This explicit errno statement is necessary to distinguish between the // group not existing and an error. errno = 0; struct group *group = getgrnam(group_name); if (!group) { if (errno == 0) { w_log(W_LOG_ERR, "group '%s' does not exist\n", group_name); } else { w_log(W_LOG_ERR, "getting gid for '%s' failed: %s\n", group_name, strerror(errno)); } return nullptr; } return group; } #endif // ndef _WIN32 static const char *compute_user_name(void) { const char *user = get_env_with_fallback("USER", "LOGNAME", NULL); #ifdef _WIN32 static char user_buf[256]; #endif if (!user) { #ifdef _WIN32 DWORD size = sizeof(user_buf); if (GetUserName(user_buf, &size)) { user_buf[size] = 0; user = user_buf; } else { w_log(W_LOG_FATAL, "GetUserName failed: %s. I don't know who you are\n", win32_strerror(GetLastError())); } #else uid_t uid = getuid(); struct passwd *pw; pw = getpwuid(uid); if (!pw) { w_log(W_LOG_FATAL, "getpwuid(%d) failed: %s. I don't know who you are\n", uid, strerror(errno)); } user = pw->pw_name; #endif if (!user) { w_log(W_LOG_ERR, "watchman requires that you set $USER in your env\n"); abort(); } } return user; } static void setup_sock_name(void) { const char *user = compute_user_name(); watchman_tmp_dir = get_env_with_fallback("TMPDIR", "TMP", "/tmp"); #ifdef _WIN32 if (!sock_name) { asprintf(&sock_name, "\\\\.\\pipe\\watchman-%s", user); } #else compute_file_name(&sock_name, user, "sock", "sockname"); #endif compute_file_name(&watchman_state_file, user, "state", "statefile"); compute_file_name(&log_name, user, "log", "logname"); #ifdef USE_GIMLI compute_file_name(&pid_file, user, "pid", "pidfile"); #endif #ifndef _WIN32 if (strlen(sock_name) >= sizeof(un.sun_path) - 1) { w_log(W_LOG_ERR, "%s: path is too long\n", sock_name); abort(); } un.sun_family = PF_LOCAL; memcpy(un.sun_path, sock_name, strlen(sock_name) + 1); #endif } static bool should_start(int err) { if (err == ECONNREFUSED) { return true; } if (err == ENOENT) { return true; } return false; } static bool try_command(json_t *cmd, int timeout) { w_jbuffer_t buffer; w_jbuffer_t output_pdu_buffer; int err; auto client = w_stm_connect(sock_name, timeout * 1000); if (!client) { return false; } if (!cmd) { return true; } // Send command if (!buffer.pduEncodeToStream( server_pdu, server_capabilities, cmd, client.get())) { err = errno; w_log(W_LOG_ERR, "error sending PDU to server\n"); errno = err; return false; } buffer.clear(); do { if (!buffer.passThru( output_pdu, output_capabilities, &output_pdu_buffer, client.get())) { return false; } } while (persistent); return true; } static struct watchman_getopt opts[] = { { "help", 'h', "Show this help", OPT_NONE, &show_help, NULL, NOT_DAEMON }, #ifndef _WIN32 { "inetd", 0, "Spawning from an inetd style supervisor", OPT_NONE, &inetd_style, NULL, IS_DAEMON }, #endif { "version", 'v', "Show version number", OPT_NONE, &show_version, NULL, NOT_DAEMON }, { "sockname", 'U', "Specify alternate sockname", REQ_STRING, &sock_name, "PATH", IS_DAEMON }, { "logfile", 'o', "Specify path to logfile", REQ_STRING, &log_name, "PATH", IS_DAEMON }, { "log-level", 0, "set the log level (0 = off, default is 1, verbose = 2)", REQ_INT, &log_level, NULL, IS_DAEMON }, #ifdef USE_GIMLI { "pidfile", 0, "Specify path to gimli monitor pidfile", REQ_STRING, &pid_file, "PATH", NOT_DAEMON }, #else { "pidfile", 0, "Specify path to pidfile", REQ_STRING, &pid_file, "PATH", IS_DAEMON }, #endif { "persistent", 'p', "Persist and wait for further responses", OPT_NONE, &persistent, NULL, NOT_DAEMON }, { "no-save-state", 'n', "Don't save state between invocations", OPT_NONE, &dont_save_state, NULL, IS_DAEMON }, { "statefile", 0, "Specify path to file to hold watch and trigger state", REQ_STRING, &watchman_state_file, "PATH", IS_DAEMON }, { "json-command", 'j', "Instead of parsing CLI arguments, take a single " "json object from stdin", OPT_NONE, &json_input_arg, NULL, NOT_DAEMON }, { "output-encoding", 0, "CLI output encoding. json (default) or bser", REQ_STRING, &output_encoding, NULL, NOT_DAEMON }, { "server-encoding", 0, "CLI<->server encoding. bser (default) or json", REQ_STRING, &server_encoding, NULL, NOT_DAEMON }, { "foreground", 'f', "Run the service in the foreground", OPT_NONE, &foreground, NULL, NOT_DAEMON }, { "no-pretty", 0, "Don't pretty print JSON", OPT_NONE, &no_pretty, NULL, NOT_DAEMON }, { "no-spawn", 0, "Don't try to start the service if it is not available", OPT_NONE, &no_spawn, NULL, NOT_DAEMON }, { "no-local", 0, "When no-spawn is enabled, don't try to handle request" " in client mode if service is unavailable", OPT_NONE, &no_local, NULL, NOT_DAEMON }, // test-state-dir is for testing only and should not be used in production: // instead, use the compile-time WATCHMAN_STATE_DIR option { "test-state-dir", 0, NULL, REQ_STRING, &test_state_dir, "DIR", NOT_DAEMON }, { 0, 0, 0, OPT_NONE, 0, 0, 0 } }; static void parse_cmdline(int *argcp, char ***argvp) { cfg_load_global_config_file(); w_getopt(opts, argcp, argvp, &daemon_argv); if (show_help) { usage(opts, stdout); } if (show_version) { printf("%s\n", PACKAGE_VERSION); exit(0); } watchman::getLog().setStdErrLoggingLevel( static_cast(log_level)); setup_sock_name(); parse_encoding(server_encoding, &server_pdu); parse_encoding(output_encoding, &output_pdu); if (!output_encoding) { output_pdu = no_pretty ? is_json_compact : is_json_pretty; } } static json_ref build_command(int argc, char** argv) { int i; // Read blob from stdin if (json_input_arg) { json_error_t err; w_jbuffer_t buf; memset(&err, 0, sizeof(err)); auto cmd = buf.decodeNext(w_stm_stdin(), &err); if (buf.pdu_type == is_bser) { // If they used bser for the input, select bser for output // unless they explicitly requested something else if (!server_encoding) { server_pdu = is_bser; } if (!output_encoding) { output_pdu = is_bser; } } else if (buf.pdu_type == is_bser_v2) { // If they used bser v2 for the input, select bser v2 for output // unless they explicitly requested something else if (!server_encoding) { server_pdu = is_bser_v2; } if (!output_encoding) { output_pdu = is_bser_v2; } } if (!cmd) { fprintf( stderr, "failed to parse command from stdin: " "line %d, column %d, position %d: %s\n", err.line, err.column, err.position, err.text); exit(1); } return cmd; } // Special case: no arguments means that we just want // to verify that the service is up, starting it if // needed if (argc == 0) { return nullptr; } auto cmd = json_array(); for (i = 0; i < argc; i++) { json_array_append_new(cmd, typed_string_to_json(argv[i], W_STRING_UNICODE)); } return cmd; } const char *get_sock_name(void) { return sock_name; } static void spawn_watchman(void) { #ifndef _WIN32 // If we have a site-specific spawning requirement, then we'll // invoke that spawner rather than using any of the built-in // spawning functionality. const char* site_spawn = cfg_get_string("spawn_watchman_service", nullptr); if (site_spawn) { spawn_site_specific(site_spawn); return; } #endif #ifdef USE_GIMLI spawn_via_gimli(); #elif defined(__APPLE__) spawn_via_launchd(); #elif defined(_WIN32) spawn_win32(); #else daemonize(); #endif } int main(int argc, char **argv) { bool ran; parse_cmdline(&argc, &argv); if (foreground) { run_service(); return 0; } w_set_thread_name("cli"); auto cmd = build_command(argc, argv); preprocess_command(cmd, output_pdu, output_capabilities); ran = try_command(cmd, 0); if (!ran && should_start(errno)) { if (no_spawn) { if (!no_local) { ran = try_client_mode_command(cmd, !no_pretty); } } else { spawn_watchman(); // Some site spawner scripts will asynchronously launch the service. // When that happens we may encounter ECONNREFUSED. We need to // tolerate this, so we add some retries. int attempts = 10; std::chrono::milliseconds interval(10); while (true) { ran = try_command(cmd, 10); if (!ran && should_start(errno) && attempts-- > 0) { /* sleep override */ std::this_thread::sleep_for(interval); interval *= 2; continue; } // Success or terminal failure break; } } } if (ran) { return 0; } if (!no_spawn) { w_log(W_LOG_ERR, "unable to talk to your watchman on %s! (%s)\n", sock_name, strerror(errno)); #ifdef __APPLE__ if (getenv("TMUX")) { w_log(W_LOG_ERR, "\n" "You may be hitting a tmux related session issue.\n" "An immediate workaround is to run:\n" "\n" " watchman version\n" "\n" "just once, from *outside* your tmux session, to allow the launchd\n" "registration to be setup. Once done, you can continue to access\n" "watchman from inside your tmux sessions as usual.\n" "\n" "Longer term, you may wish to install this tool:\n" "\n" " https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard\n" "\n" "and configure tmux to use `reattach-to-user-namespace`\n" "when it launches your shell.\n"); } #endif } return 1; } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/make.bat000066400000000000000000000023541314236077500147470ustar00rootroot00000000000000set need_setup=0 @rem if we don't have nmake in the path, we need to run setup where nmake.exe 2> NUL if %ERRORLEVEL% GTR 0 set need_setup=1 @rem if we don't have the include path set, we need to run setup if not defined INCLUDE set need_setup=1 @rem backup of the path, otherwise we end up with an "input line is too long" @rem error since the path env var is growing up at every call to vsvarsall.bat @set PATH_BACKUP=%PATH% @rem run setup if we need to if %need_setup% == 1 call "c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64 @rem Allow python build to succeed: @rem http://stackoverflow.com/questions/2817869/error-unable-to-find-vcvarsall-bat SET VS90COMNTOOLS=%VS140COMNTOOLS% where python.exe 2> NUL if %ERRORLEVEL% GTR 0 set PATH=c:\Python27;%PATH% where php.exe 2> NUL if %ERRORLEVEL% GTR 0 set PATH=c:\php;%PATH% @rem finally, run make nmake /nologo /s /f winbuild\Makefile %1 %2 %3 %4 SET RETURN_CODE=%ERRORLEVEL% @rem restore the original path value @set PATH=%PATH_BACKUP% @rem "input line is too long" problem occur also with the INCLUDE environment variable @rem We just wipe it since next call to the batch file will set back the right value @set INCLUDE= @set LIB= @set LIBPATH= EXIT /B %RETURN_CODE% watchman-4.9.0/make_unique.h000066400000000000000000000010471314236077500160140ustar00rootroot00000000000000/* Copyright 2016-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #pragma once #include namespace watchman { // Roughly equivalent to the C++14 std::make_unique template std::unique_ptr make_unique(Args&&... args) { return std::unique_ptr(new T(std::forward(args)...)); } template std::unique_ptr make_unique(Args&&... args) { return std::unique_ptr(new T(std::forward(args)...)); } } watchman-4.9.0/node/000077500000000000000000000000001314236077500142635ustar00rootroot00000000000000watchman-4.9.0/node/README.md000066400000000000000000000023141314236077500155420ustar00rootroot00000000000000# fb-watchman `fb-watchman` is a filesystem watcher that uses the [Watchman](https://facebook.github.io/watchman/) file watching service from Facebook. Watchman provides file change notification services using very efficient recursive watches and also allows more advanced change matching and filesystem tree querying operations using [a powerful expression syntax](https://facebook.github.io/watchman/docs/file-query.html#expressions). ## Install You should [install Watchman]( https://facebook.github.io/watchman/docs/install.html) to make the most of this module. Then simply: ``` $ npm install fb-watchman ``` ## Key Concepts - Watchman recursively watches directories. - Each watched directory is called a `root`. - You must initiate a `watch` on a `root` using the `watch-project` command prior to subscribing to changes - Rather than separately watching many sibling directories, `watch-project` consolidates and re-uses existing watches relative to a project root (the location of your `.watchmanconfig` or source control repository root) - change notifications are relative to the project root ## How do I use it? [Read the NodeJS watchman documentation](https://facebook.github.io/watchman/docs/nodejs.html) watchman-4.9.0/node/bser/000077500000000000000000000000001314236077500152165ustar00rootroot00000000000000watchman-4.9.0/node/bser/README.md000066400000000000000000000031751314236077500165030ustar00rootroot00000000000000# BSER Binary Serialization BSER is a binary serialization scheme that can be used as an alternative to JSON. BSER uses a framed encoding that makes it simpler to use to stream a sequence of encoded values. It is intended to be used for local-IPC only and strings are represented as binary with no specific encoding; this matches the convention employed by most operating system filename storage. For more details about the serialization scheme see [Watchman's docs](https://facebook.github.io/watchman/docs/bser.html). ## API ```js var bser = require('bser'); ``` ### bser.loadFromBuffer The is the synchronous decoder; given an input string or buffer, decodes a single value and returns it. Throws an error if the input is invalid. ```js var obj = bser.loadFromBuffer(buf); ``` ### bser.dumpToBuffer Synchronously encodes a value as BSER. ```js var encoded = bser.dumpToBuffer(['hello']); console.log(bser.loadFromBuffer(encoded)); // ['hello'] ``` ### BunserBuf The asynchronous decoder API is implemented in the BunserBuf object. You may incrementally append data to this object and it will emit the decoded values via its `value` event. ```js var bunser = new bser.BunserBuf(); bunser.on('value', function(obj) { console.log(obj); }); ``` Then in your socket `data` event: ```js bunser.append(buf); ``` ## Example Read BSER from socket: ```js var bunser = new bser.BunserBuf(); bunser.on('value', function(obj) { console.log('data from socket', obj); }); var socket = net.connect('/socket'); socket.on('data', function(buf) { bunser.append(buf); }); ``` Write BSER to socket: ```js socket.write(bser.dumpToBuffer(obj)); ``` watchman-4.9.0/node/bser/index.js000066400000000000000000000363571314236077500167010ustar00rootroot00000000000000/* Copyright 2015-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ var EE = require('events').EventEmitter; var util = require('util'); var os = require('os'); var assert = require('assert'); var Int64 = require('node-int64'); // BSER uses the local endianness to reduce byte swapping overheads // (the protocol is expressly local IPC only). We need to tell node // to use the native endianness when reading various native values. var isBigEndian = os.endianness() == 'BE'; // Find the next power-of-2 >= size function nextPow2(size) { return Math.pow(2, Math.ceil(Math.log(size) / Math.LN2)); } // Expandable buffer that we can provide a size hint for function Accumulator(initsize) { this.buf = new Buffer(nextPow2(initsize || 8192)); this.readOffset = 0; this.writeOffset = 0; } // For testing exports.Accumulator = Accumulator // How much we can write into this buffer without allocating Accumulator.prototype.writeAvail = function() { return this.buf.length - this.writeOffset; } // How much we can read Accumulator.prototype.readAvail = function() { return this.writeOffset - this.readOffset; } // Ensure that we have enough space for size bytes Accumulator.prototype.reserve = function(size) { if (size < this.writeAvail()) { return; } // If we can make room by shunting down, do so if (this.readOffset > 0) { this.buf.copy(this.buf, 0, this.readOffset, this.writeOffset); this.writeOffset -= this.readOffset; this.readOffset = 0; } // If we made enough room, no need to allocate more if (size < this.writeAvail()) { return; } // Allocate a replacement and copy it in var buf = new Buffer(nextPow2(this.buf.length + size - this.writeAvail())); this.buf.copy(buf); this.buf = buf; } // Append buffer or string. Will resize as needed Accumulator.prototype.append = function(buf) { if (Buffer.isBuffer(buf)) { this.reserve(buf.length); buf.copy(this.buf, this.writeOffset, 0, buf.length); this.writeOffset += buf.length; } else { var size = Buffer.byteLength(buf); this.reserve(size); this.buf.write(buf, this.writeOffset); this.writeOffset += size; } } Accumulator.prototype.assertReadableSize = function(size) { if (this.readAvail() < size) { throw new Error("wanted to read " + size + " bytes but only have " + this.readAvail()); } } Accumulator.prototype.peekString = function(size) { this.assertReadableSize(size); return this.buf.toString('utf-8', this.readOffset, this.readOffset + size); } Accumulator.prototype.readString = function(size) { var str = this.peekString(size); this.readOffset += size; return str; } Accumulator.prototype.peekInt = function(size) { this.assertReadableSize(size); switch (size) { case 1: return this.buf.readInt8(this.readOffset, size); case 2: return isBigEndian ? this.buf.readInt16BE(this.readOffset, size) : this.buf.readInt16LE(this.readOffset, size); case 4: return isBigEndian ? this.buf.readInt32BE(this.readOffset, size) : this.buf.readInt32LE(this.readOffset, size); case 8: var big = this.buf.slice(this.readOffset, this.readOffset + 8); if (isBigEndian) { // On a big endian system we can simply pass the buffer directly return new Int64(big); } // Otherwise we need to byteswap return new Int64(byteswap64(big)); default: throw new Error("invalid integer size " + size); } } Accumulator.prototype.readInt = function(bytes) { var ival = this.peekInt(bytes); if (ival instanceof Int64 && isFinite(ival.valueOf())) { ival = ival.valueOf(); } this.readOffset += bytes; return ival; } Accumulator.prototype.peekDouble = function() { this.assertReadableSize(8); return isBigEndian ? this.buf.readDoubleBE(this.readOffset) : this.buf.readDoubleLE(this.readOffset); } Accumulator.prototype.readDouble = function() { var dval = this.peekDouble(); this.readOffset += 8; return dval; } Accumulator.prototype.readAdvance = function(size) { if (size > 0) { this.assertReadableSize(size); } else if (size < 0 && this.readOffset + size < 0) { throw new Error("advance with negative offset " + size + " would seek off the start of the buffer"); } this.readOffset += size; } Accumulator.prototype.writeByte = function(value) { this.reserve(1); this.buf.writeInt8(value, this.writeOffset); ++this.writeOffset; } Accumulator.prototype.writeInt = function(value, size) { this.reserve(size); switch (size) { case 1: this.buf.writeInt8(value, this.writeOffset); break; case 2: if (isBigEndian) { this.buf.writeInt16BE(value, this.writeOffset); } else { this.buf.writeInt16LE(value, this.writeOffset); } break; case 4: if (isBigEndian) { this.buf.writeInt32BE(value, this.writeOffset); } else { this.buf.writeInt32LE(value, this.writeOffset); } break; default: throw new Error("unsupported integer size " + size); } this.writeOffset += size; } Accumulator.prototype.writeDouble = function(value) { this.reserve(8); if (isBigEndian) { this.buf.writeDoubleBE(value, this.writeOffset); } else { this.buf.writeDoubleLE(value, this.writeOffset); } this.writeOffset += 8; } var BSER_ARRAY = 0x00; var BSER_OBJECT = 0x01; var BSER_STRING = 0x02; var BSER_INT8 = 0x03; var BSER_INT16 = 0x04; var BSER_INT32 = 0x05; var BSER_INT64 = 0x06; var BSER_REAL = 0x07; var BSER_TRUE = 0x08; var BSER_FALSE = 0x09; var BSER_NULL = 0x0a; var BSER_TEMPLATE = 0x0b; var BSER_SKIP = 0x0c; var ST_NEED_PDU = 0; // Need to read and decode PDU length var ST_FILL_PDU = 1; // Know the length, need to read whole content var MAX_INT8 = 127; var MAX_INT16 = 32767; var MAX_INT32 = 2147483647; function BunserBuf() { EE.call(this); this.buf = new Accumulator(); this.state = ST_NEED_PDU; } util.inherits(BunserBuf, EE); exports.BunserBuf = BunserBuf; BunserBuf.prototype.append = function(buf, synchronous) { if (synchronous) { this.buf.append(buf); return this.process(synchronous); } try { this.buf.append(buf); } catch (err) { this.emit('error', err); return; } // Arrange to decode later. This allows the consuming // application to make progress with other work in the // case that we have a lot of subscription updates coming // in from a large tree. this.processLater(); } BunserBuf.prototype.processLater = function() { var self = this; process.nextTick(function() { try { self.process(false); } catch (err) { self.emit('error', err); } }); } // Do something with the buffer to advance our state. // If we're running synchronously we'll return either // the value we've decoded or undefined if we don't // yet have enought data. // If we're running asynchronously, we'll emit the value // when it becomes ready and schedule another invocation // of process on the next tick if we still have data we // can process. BunserBuf.prototype.process = function(synchronous) { if (this.state == ST_NEED_PDU) { if (this.buf.readAvail() < 2) { return; } // Validate BSER header this.expectCode(0); this.expectCode(1); this.pduLen = this.decodeInt(true /* relaxed */); if (this.pduLen === false) { // Need more data, walk backwards this.buf.readAdvance(-2); return; } // Ensure that we have a big enough buffer to read the rest of the PDU this.buf.reserve(this.pduLen); this.state = ST_FILL_PDU; } if (this.state == ST_FILL_PDU) { if (this.buf.readAvail() < this.pduLen) { // Need more data return; } // We have enough to decode it var val = this.decodeAny(); if (synchronous) { return val; } this.emit('value', val); this.state = ST_NEED_PDU; } if (!synchronous && this.buf.readAvail() > 0) { this.processLater(); } } BunserBuf.prototype.raise = function(reason) { throw new Error(reason + ", in Buffer of length " + this.buf.buf.length + " (" + this.buf.readAvail() + " readable) at offset " + this.buf.readOffset + " buffer: " + JSON.stringify(this.buf.buf.slice( this.buf.readOffset, this.buf.readOffset + 32).toJSON())); } BunserBuf.prototype.expectCode = function(expected) { var code = this.buf.readInt(1); if (code != expected) { this.raise("expected bser opcode " + expected + " but got " + code); } } BunserBuf.prototype.decodeAny = function() { var code = this.buf.peekInt(1); switch (code) { case BSER_INT8: case BSER_INT16: case BSER_INT32: case BSER_INT64: return this.decodeInt(); case BSER_REAL: this.buf.readAdvance(1); return this.buf.readDouble(); case BSER_TRUE: this.buf.readAdvance(1); return true; case BSER_FALSE: this.buf.readAdvance(1); return false; case BSER_NULL: this.buf.readAdvance(1); return null; case BSER_STRING: return this.decodeString(); case BSER_ARRAY: return this.decodeArray(); case BSER_OBJECT: return this.decodeObject(); case BSER_TEMPLATE: return this.decodeTemplate(); default: this.raise("unhandled bser opcode " + code); } } BunserBuf.prototype.decodeArray = function() { this.expectCode(BSER_ARRAY); var nitems = this.decodeInt(); var arr = []; for (var i = 0; i < nitems; ++i) { arr.push(this.decodeAny()); } return arr; } BunserBuf.prototype.decodeObject = function() { this.expectCode(BSER_OBJECT); var nitems = this.decodeInt(); var res = {}; for (var i = 0; i < nitems; ++i) { var key = this.decodeString(); var val = this.decodeAny(); res[key] = val; } return res; } BunserBuf.prototype.decodeTemplate = function() { this.expectCode(BSER_TEMPLATE); var keys = this.decodeArray(); var nitems = this.decodeInt(); var arr = []; for (var i = 0; i < nitems; ++i) { var obj = {}; for (var keyidx = 0; keyidx < keys.length; ++keyidx) { if (this.buf.peekInt(1) == BSER_SKIP) { this.buf.readAdvance(1); continue; } var val = this.decodeAny(); obj[keys[keyidx]] = val; } arr.push(obj); } return arr; } BunserBuf.prototype.decodeString = function() { this.expectCode(BSER_STRING); var len = this.decodeInt(); return this.buf.readString(len); } // This is unusual compared to the other decode functions in that // we may not have enough data available to satisfy the read, and // we don't want to throw. This is only true when we're reading // the PDU length from the PDU header; we'll set relaxSizeAsserts // in that case. BunserBuf.prototype.decodeInt = function(relaxSizeAsserts) { if (relaxSizeAsserts && !this.buf.readAvail(1)) { return false; } else { this.buf.assertReadableSize(1); } var code = this.buf.peekInt(1); var size = 0; switch (code) { case BSER_INT8: size = 1; break; case BSER_INT16: size = 2; break; case BSER_INT32: size = 4; break; case BSER_INT64: size = 8; break; default: this.raise("invalid bser int encoding " + code); } if (relaxSizeAsserts && !this.buf.readAvail(1 + size)) { return false; } this.buf.readAdvance(1); return this.buf.readInt(size); } // synchronously BSER decode a string and return the value function loadFromBuffer(input) { var buf = new BunserBuf(); var result = buf.append(input, true); if (buf.buf.readAvail()) { throw Error( 'excess data found after input buffer, use BunserBuf instead'); } if (typeof result === 'undefined') { throw Error( 'no bser found in string and no error raised!?'); } return result; } exports.loadFromBuffer = loadFromBuffer // Byteswap an arbitrary buffer, flipping from one endian // to the other, returning a new buffer with the resultant data function byteswap64(buf) { var swap = new Buffer(buf.length); for (var i = 0; i < buf.length; i++) { swap[i] = buf[buf.length -1 - i]; } return swap; } function dump_int64(buf, val) { // Get the raw bytes. The Int64 buffer is big endian var be = val.toBuffer(); if (isBigEndian) { // We're a big endian system, so the buffer is exactly how we // want it to be buf.writeByte(BSER_INT64); buf.append(be); return; } // We need to byte swap to get the correct representation var le = byteswap64(be); buf.writeByte(BSER_INT64); buf.append(le); } function dump_int(buf, val) { var abs = Math.abs(val); if (abs <= MAX_INT8) { buf.writeByte(BSER_INT8); buf.writeInt(val, 1); } else if (abs <= MAX_INT16) { buf.writeByte(BSER_INT16); buf.writeInt(val, 2); } else if (abs <= MAX_INT32) { buf.writeByte(BSER_INT32); buf.writeInt(val, 4); } else { dump_int64(buf, new Int64(val)); } } function dump_any(buf, val) { switch (typeof(val)) { case 'number': // check if it is an integer or a float if (isFinite(val) && Math.floor(val) === val) { dump_int(buf, val); } else { buf.writeByte(BSER_REAL); buf.writeDouble(val); } return; case 'string': buf.writeByte(BSER_STRING); dump_int(buf, Buffer.byteLength(val)); buf.append(val); return; case 'boolean': buf.writeByte(val ? BSER_TRUE : BSER_FALSE); return; case 'object': if (val === null) { buf.writeByte(BSER_NULL); return; } if (val instanceof Int64) { dump_int64(buf, val); return; } if (Array.isArray(val)) { buf.writeByte(BSER_ARRAY); dump_int(buf, val.length); for (var i = 0; i < val.length; ++i) { dump_any(buf, val[i]); } return; } buf.writeByte(BSER_OBJECT); var keys = Object.keys(val); // First pass to compute number of defined keys var num_keys = keys.length; for (var i = 0; i < keys.length; ++i) { var key = keys[i]; var v = val[key]; if (typeof(v) == 'undefined') { num_keys--; } } dump_int(buf, num_keys); for (var i = 0; i < keys.length; ++i) { var key = keys[i]; var v = val[key]; if (typeof(v) == 'undefined') { // Don't include it continue; } dump_any(buf, key); try { dump_any(buf, v); } catch (e) { throw new Error( e.message + ' (while serializing object property with name `' + key + "')"); } } return; default: throw new Error('cannot serialize type ' + typeof(val) + ' to BSER'); } } // BSER encode value and return a buffer of the contents function dumpToBuffer(val) { var buf = new Accumulator(); // Build out the header buf.writeByte(0); buf.writeByte(1); // Reserve room for an int32 to hold our PDU length buf.writeByte(BSER_INT32); buf.writeInt(0, 4); // We'll come back and fill this in at the end dump_any(buf, val); // Compute PDU length var off = buf.writeOffset; var len = off - 7 /* the header length */; buf.writeOffset = 3; // The length value to fill in buf.writeInt(len, 4); // write the length in the space we reserved buf.writeOffset = off; return buf.buf.slice(0, off); } exports.dumpToBuffer = dumpToBufferwatchman-4.9.0/node/bser/package.json000066400000000000000000000013071314236077500175050ustar00rootroot00000000000000{ "name": "bser", "version": "2.0.0", "description": "JavaScript implementation of the BSER Binary Serialization", "main": "index.js", "directories": { "test": "test" }, "scripts": { "test": "node test/bser.js" }, "files": [ "index.js" ], "repository": { "type": "git", "url": "https://github.com/facebook/watchman" }, "keywords": [ "bser", "binary", "protocol" ], "author": "Wez Furlong (http://wezfurlong.org)", "license": "Apache-2.0", "bugs": { "url": "https://github.com/facebook/watchman/issues" }, "homepage": "https://facebook.github.io/watchman/docs/bser.html", "dependencies": { "node-int64": "^0.4.0" } } watchman-4.9.0/node/bser/test/000077500000000000000000000000001314236077500161755ustar00rootroot00000000000000watchman-4.9.0/node/bser/test/bser.js000066400000000000000000000044771314236077500175020ustar00rootroot00000000000000var assert = require('assert'); var bser = require('../'); var Int64 = require('node-int64'); // This is a hard-coded template representation from the C test suite var template = "\x00\x01\x03\x28" + "\x0b\x00\x03\x02\x02\x03\x04\x6e\x61\x6d\x65\x02" + "\x03\x03\x61\x67\x65\x03\x03\x02\x03\x04\x66\x72" + "\x65\x64\x03\x14\x02\x03\x04\x70\x65\x74\x65\x03" + "\x1e\x0c\x03\x19" ; var val = bser.loadFromBuffer(template); assert.deepStrictEqual(val, [ {"name": "fred", "age": 20}, {"name": "pete", "age": 30}, {"age": 25} ]); function roundtrip(val) { var encoded = bser.dumpToBuffer(val); var decoded = bser.loadFromBuffer(encoded); assert.deepStrictEqual(decoded, val); } var values_to_test = [ 1, "hello", 1.5, false, true, new Int64('0x0123456789abcdef'), 127, 128, 129, 32767, 32768, 32769, 65534, 65536, 65537, 2147483647, 2147483648, 2147483649, null, [1, 2, 3], {foo: "bar"}, {nested: {struct: "hello", list: [true, false, 1, "string"]}} ]; for (var i = 0; i < values_to_test.length; ++i) { roundtrip(values_to_test[i]); } roundtrip(values_to_test); // Verify Accumulator edge cases var acc = new bser.Accumulator(8); acc.append("hello"); assert.equal(acc.readAvail(), 5); assert.equal(acc.readOffset, 0); assert.equal(acc.readString(3), "hel"); assert.equal(acc.readOffset, 3); assert.equal(acc.readAvail(), 2); assert.equal(acc.writeAvail(), 3); // This should trigger a shunt and not make the buffer bigger acc.reserve(5); assert.equal(acc.readOffset, 0, 'shunted'); assert.equal(acc.readAvail(), 2, 'still have 2 available to read'); assert.equal(acc.writeAvail(), 6, '2 left to read out of 8 total space'); assert.equal(acc.peekString(2), 'lo', 'have the correct remainder'); // Don't include keys that have undefined values var res = bser.dumpToBuffer({expression: undefined}); assert.deepStrictEqual(bser.loadFromBuffer(res), {}); // Dump numbers without fraction to integers var buffer; buffer = bser.dumpToBuffer(1); assert.equal(buffer.toString('hex'), "000105020000000301"); buffer = bser.dumpToBuffer(1.0); assert.equal(buffer.toString('hex'), "000105020000000301"); // Dump numbers with fraction to double buffer = bser.dumpToBuffer(1.1); assert.equal(buffer.toString('hex'), "00010509000000079a9999999999f13f"); watchman-4.9.0/node/example.js000066400000000000000000000120371314236077500162570ustar00rootroot00000000000000var watchman = require('fb-watchman'); var client = new watchman.Client(); client.on('end', function() { // Called when the connection to watchman is terminated console.log('client ended'); }); client.on('error', function(error) { console.error('Error while talking to watchman: ', error); }); client.capabilityCheck({required:['relative_root']}, function (error, resp) { if (error) { console.error('Error checking capabilities:', error); return; } console.log('Talking to watchman version', resp.version); }); // Example of the error case client.command(['invalid-command-never-will-work'], function(error, resp) { if (error) { console.error('failed to subscribe: ', error); return; } }); // Initiate a watch. You can repeatedly ask to watch the same dir without // error; Watchman will re-use an existing watch. client.command(['watch-project', process.cwd()], function(error, resp) { if (error) { console.error('Error initiating watch:', error); return; } // It is considered to be best practice to show any 'warning' or 'error' // information to the user, as it may suggest steps for remediation if ('warning' in resp) { console.log('warning: ', resp.warning); } // The default subscribe behavior is to deliver a list of all current files // when you first subscribe, so you don't need to walk the tree for yourself // on startup. If you don't want this behavior, you should issue a `clock` // command and use it to give a logical time constraint on the subscription. // See further below for an example of this. // watch-project may re-use an existing watch at a higher level in the // filesystem. It will tell us the relative path to the directory that // we expressed interest in, so we need to adjust for it in our results var path_prefix = ''; var root = resp.watch; if ('relative_path' in resp) { path_prefix = resp.relative_path; console.log('(re)using project watch at ', root, ', our dir is relative: ', path_prefix); } // Subscribe to notifications about .js files // https://facebook.github.io/watchman/docs/cmd/subscribe.html client.command(['subscribe', root, 'mysubscription', { // Match any .js file under process.cwd() // https://facebook.github.io/watchman/docs/file-query.html#expressions // Has more on the supported expression syntax expression: ["allof", ["match", "*.js"], ], // focus on the relative path from the project to the path // of interest relative_root: path_prefix, // Which fields we're interested in fields: ["name", "size", "exists", "type"] }], function(error, resp) { if (error) { // Probably an error in the subscription criteria console.error('failed to subscribe: ', error); return; } console.log('subscription ' + resp.subscribe + ' established'); } ); // Subscription results are emitted via the subscription event. // Note that this emits for all subscriptions. If you have // subscriptions with different `fields` you will need to check // the subscription name and handle the differing data accordingly client.on('subscription', function(resp) { // Each entry in `resp.files` will have the fields you requested // in your subscription. The default is: // { name: 'example.js', // size: 1680, // new: true, // exists: true, // mode: 33188 } // // Names are relative to resp.root; join them together to // obtain a fully qualified path. // // `resp` looks like this in practice: // // { root: '/private/tmp/foo', // subscription: 'mysubscription', // files: [ { name: 'node_modules/fb-watchman/index.js', // size: 4768, // exists: true, // mode: 33188 } ] } console.log(resp.root, resp.subscription); for (var i in resp.files) { var f = resp.files[i]; console.log(f); } }); // Here's an example of just subscribing for notifications after the // current point in time client.command(['clock', root], function(error, resp) { if (error) { console.error('Failed to query clock:', error); return; } client.command(['subscribe', root, 'sincesub', { expression: ['allof', ["match", "*.js"]], // focus on the relative path from the project to the path // of interest relative_root: path_prefix, // Note: since we only request a single field, the `sincesub` subscription // response will just set files to an array of filenames, not an array of // objects with name properties // { root: '/private/tmp/foo', // subscription: 'sincesub', // files: [ 'node_modules/fb-watchman/index.js' ] } fields: ["name"], since: resp.clock // time constraint }], function(error, resp) { if (error) { console.error('failed to subscribe: ', error); return; } console.log('subscription ' + resp.subscribe + ' established'); } ); }); }); watchman-4.9.0/node/index.js000066400000000000000000000213011314236077500157250ustar00rootroot00000000000000/* Copyright 2014-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ 'use strict'; var net = require('net'); var EE = require('events').EventEmitter; var util = require('util'); var childProcess = require('child_process'); var bser = require('bser'); // We'll emit the responses to these when they get sent down to us var unilateralTags = ['subscription', 'log']; /** * @param options An object with the following optional keys: * * 'watchmanBinaryPath' (string) Absolute path to the watchman binary. * If not provided, the Client locates the binary using the PATH specified * by the node child_process's default env. */ function Client(options) { var self = this; EE.call(this); this.watchmanBinaryPath = 'watchman'; if (options && options.watchmanBinaryPath) { this.watchmanBinaryPath = options.watchmanBinaryPath.trim(); }; this.commands = []; } util.inherits(Client, EE); module.exports.Client = Client; // Try to send the next queued command, if any Client.prototype.sendNextCommand = function() { if (this.currentCommand) { // There's a command pending response, don't send this new one yet return; } this.currentCommand = this.commands.shift(); if (!this.currentCommand) { // No further commands are queued return; } this.socket.write(bser.dumpToBuffer(this.currentCommand.cmd)); } Client.prototype.cancelCommands = function(why) { var error = new Error(why); // Steal all pending commands before we start cancellation, in // case something decides to schedule more commands var cmds = this.commands; this.commands = []; if (this.currentCommand) { cmds.unshift(this.currentCommand); this.currentCommand = null; } // Synthesize an error condition for any commands that were queued cmds.forEach(function(cmd) { cmd.cb(error); }); } Client.prototype.connect = function() { var self = this; function makeSock(sockname) { // bunser will decode the watchman BSER protocol for us self.bunser = new bser.BunserBuf(); // For each decoded line: self.bunser.on('value', function(obj) { // Figure out if this is a unliteral response or if it is the // response portion of a request-response sequence. At the time // of writing, there are only two possible unilateral responses. var unilateral = false; for (var i = 0; i < unilateralTags.length; i++) { var tag = unilateralTags[i]; if (tag in obj) { unilateral = tag; } } if (unilateral) { self.emit(unilateral, obj); } else if (self.currentCommand) { var cmd = self.currentCommand; self.currentCommand = null; if ('error' in obj) { var error = new Error(obj.error); error.watchmanResponse = obj; cmd.cb(error); } else { cmd.cb(null, obj); } } // See if we can dispatch the next queued command, if any self.sendNextCommand(); }); self.bunser.on('error', function(err) { self.emit('error', err); }); self.socket = net.createConnection(sockname); self.socket.on('connect', function() { self.connecting = false; self.emit('connect'); self.sendNextCommand(); }); self.socket.on('error', function(err) { self.connecting = false; self.emit('error', err); }); self.socket.on('data', function(buf) { if (self.bunser) { self.bunser.append(buf); } }); self.socket.on('end', function() { self.socket = null; self.bunser = null; self.cancelCommands('The watchman connection was closed'); self.emit('end'); }); } // triggers will export the sock path to the environment. // If we're invoked in such a way, we can simply pick up the // definition from the environment and avoid having to fork off // a process to figure it out if (process.env.WATCHMAN_SOCK) { makeSock(process.env.WATCHMAN_SOCK); return; } // We need to ask the client binary where to find it. // This will cause the service to start for us if it isn't // already running. var args = ['--no-pretty', 'get-sockname']; // We use the more elaborate spawn rather than exec because there // are some error cases on Windows where process spawning can hang. // It is desirable to pipe stderr directly to stderr live so that // we can discover the problem. var proc = null; var spawnFailed = false; function spawnError(error) { if (spawnFailed) { // For ENOENT, proc 'close' will also trigger with a negative code, // let's suppress that second error. return; } spawnFailed = true; if (error.errno === 'EACCES') { error.message = 'The Watchman CLI is installed but cannot ' + 'be spawned because of a permission problem'; } else if (error.errno === 'ENOENT') { error.message = 'Watchman was not found in PATH. See ' + 'https://facebook.github.io/watchman/docs/install.html ' + 'for installation instructions'; } console.error('Watchman: ', error.message); self.emit('error', error); } try { proc = childProcess.spawn(this.watchmanBinaryPath, args, { stdio: ['ignore', 'pipe', 'pipe'] }); } catch (error) { spawnError(error); return; } var stdout = []; var stderr = []; proc.stdout.on('data', function(data) { stdout.push(data); }); proc.stderr.on('data', function(data) { data = data.toString('utf8'); stderr.push(data); console.error(data); }); proc.on('error', function(error) { spawnError(error); }); proc.on('close', function (code, signal) { if (code !== 0) { spawnError(new Error( self.watchmanBinaryPath + ' ' + args.join(' ') + ' returned with exit code=' + code + ', signal=' + signal + ', stderr= ' + stderr.join(''))); return; } try { var obj = JSON.parse(stdout.join('')); if ('error' in obj) { var error = new Error(obj.error); error.watchmanResponse = obj; self.emit('error', error); return; } makeSock(obj.sockname); } catch (e) { self.emit('error', e); } }); } Client.prototype.command = function(args, done) { done = done || function() {}; // Queue up the command this.commands.push({cmd: args, cb: done}); // Establish a connection if we don't already have one if (!this.socket) { if (!this.connecting) { this.connecting = true; this.connect(); return; } return; } // If we're already connected and idle, try sending the command immediately this.sendNextCommand(); } var cap_versions = { "cmd-watch-del-all": "3.1.1", "cmd-watch-project": "3.1", "relative_root": "3.3", "term-dirname": "3.1", "term-idirname": "3.1", "wildmatch": "3.7", } // Compares a vs b, returns < 0 if a < b, > 0 if b > b, 0 if a == b function vers_compare(a, b) { a = a.split('.'); b = b.split('.'); for (var i = 0; i < 3; i++) { var d = parseInt(a[i] || '0') - parseInt(b[i] || '0'); if (d != 0) { return d; } } return 0; // Equal } function have_cap(vers, name) { if (name in cap_versions) { return vers_compare(vers, cap_versions[name]) >= 0; } return false; } // This is a helper that we expose for testing purposes Client.prototype._synthesizeCapabilityCheck = function( resp, optional, required) { resp.capabilities = {} var version = resp.version; optional.forEach(function (name) { resp.capabilities[name] = have_cap(version, name); }); required.forEach(function (name) { var have = have_cap(version, name); resp.capabilities[name] = have; if (!have) { resp.error = 'client required capability `' + name + '` is not supported by this server'; } }); return resp; } Client.prototype.capabilityCheck = function(caps, done) { var optional = caps.optional || []; var required = caps.required || []; var self = this; this.command(['version', { optional: optional, required: required }], function (error, resp) { if (error) { done(error); return; } if (!('capabilities' in resp)) { // Server doesn't support capabilities, so we need to // synthesize the results based on the version resp = self._synthesizeCapabilityCheck(resp, optional, required); if (resp.error) { error = new Error(resp.error); error.watchmanResponse = resp; done(error); return; } } done(null, resp); }); } // Close the connection to the service Client.prototype.end = function() { this.cancelCommands('The client was ended'); if (this.socket) { this.socket.end(); this.socket = null; } this.bunser = null; } watchman-4.9.0/node/package.json000066400000000000000000000013041314236077500165470ustar00rootroot00000000000000{ "name": "fb-watchman", "version": "2.0.0", "description": "Bindings for the Watchman file watching service", "main": "index.js", "repository": { "type": "git", "url": "git@github.com:facebook/watchman.git" }, "keywords": [ "facebook", "watchman", "file", "watch", "watcher", "watching", "fs.watch", "fswatcher", "fs", "glob", "utility" ], "author": "Wez Furlong (http://wezfurlong.org)", "license": "Apache-2.0", "bugs": { "url": "https://github.com/facebook/watchman/issues" }, "homepage": "https://facebook.github.io/watchman/", "files": [ "index.js" ], "dependencies": { "bser": "^2.0.0" } } watchman-4.9.0/opendir.cpp000066400000000000000000000166021314236077500155070ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #include #ifndef _WIN32 #include #endif #ifdef __APPLE__ # include # include # include #endif #include "FileDescriptor.h" using watchman::FileDescriptor; using watchman::OpenFileHandleOptions; #ifdef HAVE_GETATTRLISTBULK typedef struct { uint32_t len; attribute_set_t returned; uint32_t err; /* The attribute data length will not be greater than NAME_MAX + 1 * characters, which is NAME_MAX * 3 + 1 bytes (as one UTF-8-encoded * character may take up to three bytes */ attrreference_t name; // ATTR_CMN_NAME dev_t dev; // ATTR_CMN_DEVID fsobj_type_t objtype; // ATTR_CMN_OBJTYPE struct timespec mtime; // ATTR_CMN_MODTIME struct timespec ctime; // ATTR_CMN_CHGTIME struct timespec atime; // ATTR_CMN_ACCTIME uid_t uid; // ATTR_CMN_OWNERID gid_t gid; // ATTR_CMN_GRPID uint32_t mode; // ATTR_CMN_ACCESSMASK, Only the permission bits of st_mode // are valid; other bits should be ignored, // e.g., by masking with ~S_IFMT. uint64_t ino; // ATTR_CMN_FILEID uint32_t link; // ATTR_FILE_LINKCOUNT or ATTR_DIR_LINKCOUNT off_t file_size; // ATTR_FILE_TOTALSIZE } __attribute__((packed)) bulk_attr_item; #endif #ifndef _WIN32 class DirHandle : public watchman_dir_handle { #ifdef HAVE_GETATTRLISTBULK FileDescriptor fd_; struct attrlist attrlist_; int retcount_{0}; char buf_[64 * (sizeof(bulk_attr_item) + NAME_MAX * 3 + 1)]; char *cursor_{nullptr}; #endif DIR *d_{nullptr}; struct watchman_dir_ent ent_; public: explicit DirHandle(const char* path, bool strict); ~DirHandle() override; const watchman_dir_ent* readDir() override; int getFd() const override; }; #else static const char *w_basename(const char *path) { const char *last = path + strlen(path) - 1; while (last >= path) { if (*last == '/' || *last == '\\') { return last + 1; } --last; } return NULL; } #endif #ifndef _WIN32 /* Opens a directory making sure it's not a symlink */ static DIR *opendir_nofollow(const char *path) { auto fd = openFileHandle(path, OpenFileHandleOptions::strictOpenDir()); # if !defined(HAVE_FDOPENDIR) || defined(__APPLE__) /* fdopendir doesn't work on earlier versions OS X, and we don't * use this function since 10.10, as we prefer to use getattrlistbulk * in that case */ return opendir(path); # else // errno should be set appropriately if this is not a directory auto d = fdopendir(fd.fd()); if (d) { fd.release(); } return d; # endif } #endif #ifdef HAVE_GETATTRLISTBULK // I've seen bulkstat report incorrect sizes on kernel version 14.5.0. // (That's OSX 10.10.5). // Let's avoid it for major kernel versions < 15. // Using statics here to avoid querying the uname on every opendir. // There is opportunity for a data race the first time through, but the // worst case side effect is wasted compute early on. static bool use_bulkstat_by_default(void) { static bool probed = false; static bool safe = false; if (!probed) { struct utsname name; if (uname(&name) == 0) { int maj = 0, min = 0, patch = 0; sscanf(name.release, "%d.%d.%d", &maj, &min, &patch); if (maj >= 15) { safe = true; } } probed = true; } return safe; } #endif #ifndef _WIN32 std::unique_ptr w_dir_open(const char* path, bool strict) { return watchman::make_unique(path, strict); } DirHandle::DirHandle(const char* path, bool strict) { #ifdef HAVE_GETATTRLISTBULK if (cfg_get_bool("_use_bulkstat", use_bulkstat_by_default())) { auto opts = strict ? OpenFileHandleOptions::strictOpenDir() : OpenFileHandleOptions::openDir(); fd_ = openFileHandle(path, opts); auto info = fd_.getInfo(); if (!info.isDir()) { throw std::system_error(ENOTDIR, std::generic_category(), path); } memset(&attrlist_, 0, sizeof(attrlist_)); attrlist_.bitmapcount = ATTR_BIT_MAP_COUNT; attrlist_.commonattr = ATTR_CMN_RETURNED_ATTRS | ATTR_CMN_ERROR | ATTR_CMN_NAME | ATTR_CMN_DEVID | ATTR_CMN_OBJTYPE | ATTR_CMN_MODTIME | ATTR_CMN_CHGTIME | ATTR_CMN_ACCTIME | ATTR_CMN_OWNERID | ATTR_CMN_GRPID | ATTR_CMN_ACCESSMASK | ATTR_CMN_FILEID; attrlist_.dirattr = ATTR_DIR_LINKCOUNT; attrlist_.fileattr = ATTR_FILE_TOTALSIZE | ATTR_FILE_LINKCOUNT; return; } #endif d_ = strict ? opendir_nofollow(path) : opendir(path); if (!d_) { throw std::system_error( errno, std::generic_category(), std::string(strict ? "opendir_nofollow: " : "opendir: ") + path); } } const watchman_dir_ent* DirHandle::readDir() { #ifdef HAVE_GETATTRLISTBULK if (fd_) { bulk_attr_item *item; if (!cursor_) { // Read the next batch of results int retcount; errno = 0; retcount = getattrlistbulk( fd_.fd(), &attrlist_, buf_, sizeof(buf_), FSOPT_PACK_INVAL_ATTRS); if (retcount == -1) { throw std::system_error( errno, std::generic_category(), "getattrlistbulk"); } if (retcount == 0) { // End of the stream return nullptr; } retcount_ = retcount; cursor_ = buf_; } // Decode the next item item = (bulk_attr_item*)cursor_; cursor_ += item->len; if (--retcount_ == 0) { cursor_ = nullptr; } ent_.d_name = ((char*)&item->name) + item->name.attr_dataoffset; if (item->err) { w_log( W_LOG_ERR, "item error %s: %d %s\n", ent_.d_name, item->err, strerror(item->err)); // We got the name, so we can return something useful ent_.has_stat = false; return &ent_; } memset(&ent_.stat, 0, sizeof(ent_.stat)); ent_.stat.dev = item->dev; memcpy(&ent_.stat.mtime, &item->mtime, sizeof(item->mtime)); memcpy(&ent_.stat.ctime, &item->ctime, sizeof(item->ctime)); memcpy(&ent_.stat.atime, &item->atime, sizeof(item->atime)); ent_.stat.uid = item->uid; ent_.stat.gid = item->gid; ent_.stat.mode = item->mode & ~S_IFMT; ent_.stat.ino = item->ino; switch (item->objtype) { case VREG: ent_.stat.mode |= S_IFREG; ent_.stat.size = item->file_size; ent_.stat.nlink = item->link; break; case VDIR: ent_.stat.mode |= S_IFDIR; ent_.stat.nlink = item->link; break; case VLNK: ent_.stat.mode |= S_IFLNK; ent_.stat.size = item->file_size; break; case VBLK: ent_.stat.mode |= S_IFBLK; break; case VCHR: ent_.stat.mode |= S_IFCHR; break; case VFIFO: ent_.stat.mode |= S_IFIFO; break; case VSOCK: ent_.stat.mode |= S_IFSOCK; break; } ent_.has_stat = true; return &ent_; } #endif if (!d_) { return nullptr; } errno = 0; auto dent = readdir(d_); if (!dent) { if (errno) { throw std::system_error(errno, std::generic_category(), "readdir"); } return nullptr; } ent_.d_name = dent->d_name; ent_.has_stat = false; return &ent_; } DirHandle::~DirHandle() { if (d_) { closedir(d_); } } int DirHandle::getFd() const { #ifdef HAVE_GETATTRLISTBULK return fd_.fd(); #else return dirfd(d_); #endif } #endif /* vim:ts=2:sw=2:et: */ watchman-4.9.0/opt.cpp000066400000000000000000000135341314236077500146520ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #include #define IS_REQUIRED(x) (x) == REQ_STRING /* One does not simply use getopt_long() */ void usage(struct watchman_getopt *opts, FILE *where) { int i; size_t len; size_t longest = 0; const char *label; fprintf(where, "Usage: watchman [opts] command\n"); /* measure up option names so we can format nicely */ for (i = 0; opts[i].optname; i++) { label = opts[i].arglabel ? opts[i].arglabel : "ARG"; len = strlen(opts[i].optname); switch (opts[i].argtype) { case REQ_STRING: len += strlen(label) + strlen("="); break; default: ; } if (opts[i].shortopt) { len += strlen("-X, "); } if (len > longest) { longest = len; } } /* space between option definition and help text */ longest += 3; for (i = 0; opts[i].optname; i++) { char buf[80]; if (!opts[i].helptext) { // This is a signal that this option shouldn't be printed out. continue; } label = opts[i].arglabel ? opts[i].arglabel : "ARG"; fprintf(where, "\n "); if (opts[i].shortopt) { fprintf(where, "-%c, ", opts[i].shortopt); } else { fprintf(where, " "); } switch (opts[i].argtype) { case REQ_STRING: snprintf(buf, sizeof(buf), "--%s=%s", opts[i].optname, label); break; default: snprintf(buf, sizeof(buf), "--%s", opts[i].optname); break; } fprintf(where, "%-*s ", (unsigned int)longest, buf); fprintf(where, "%s", opts[i].helptext); fprintf(where, "\n"); } print_command_list_for_help(where); fprintf( where, "\n" "See https://github.com/facebook/watchman#watchman for more help\n" "\n" "Watchman, by Wez Furlong.\n" "Copyright 2012-2017 Facebook, Inc.\n"); exit(1); } bool w_getopt(struct watchman_getopt *opts, int *argcp, char ***argvp, char ***daemon_argvp) { int num_opts, i; char *nextshort; int argc = *argcp; char **argv = *argvp; int long_pos = -1; int res; int num_daemon = 0; /* first build up the getopt_long bits that we need */ for (num_opts = 0; opts[num_opts].optname; num_opts++) { ; } /* to hold the args we pass to the daemon */ auto daemon_argv = (char**)calloc(num_opts + 1, sizeof(char*)); if (!daemon_argv) { perror("calloc daemon opts"); abort(); } *daemon_argvp = daemon_argv; /* something to hold the long options */ auto long_opts = (option*)calloc(num_opts + 1, sizeof(struct option)); if (!long_opts) { perror("calloc struct option"); abort(); } /* and the short options */ auto shortopts = (char*)malloc((1 + num_opts) * 2); if (!shortopts) { perror("malloc shortopts"); abort(); } nextshort = shortopts; nextshort[0] = ':'; nextshort++; /* now transfer information into the space we made */ for (i = 0; i < num_opts; i++) { long_opts[i].name = (char*)opts[i].optname; long_opts[i].val = opts[i].shortopt; switch (opts[i].argtype) { case OPT_NONE: long_opts[i].has_arg = no_argument; break; case REQ_STRING: case REQ_INT: long_opts[i].has_arg = required_argument; break; } if (opts[i].shortopt) { nextshort[0] = (char)opts[i].shortopt; nextshort++; if (long_opts[i].has_arg != no_argument) { nextshort[0] = ':'; nextshort++; } } } nextshort[0] = 0; while ((res = getopt_long(argc, argv, shortopts, long_opts, &long_pos)) != -1) { struct watchman_getopt *o; switch (res) { case ':': /* missing option argument. * Check to see if it was actually optional */ for (long_pos = 0; long_pos < num_opts; long_pos++) { if (opts[long_pos].shortopt == optopt) { if (IS_REQUIRED(opts[long_pos].argtype)) { fprintf(stderr, "--%s (-%c) requires an argument", opts[long_pos].optname, opts[long_pos].shortopt); return false; } } } break; case '?': /* unknown option */ fprintf(stderr, "Unknown or invalid option! %s\n", argv[optind-1]); usage(opts, stderr); return false; default: if (res == 0) { /* we got a long option */ o = &opts[long_pos]; } else { /* map short option to the real thing */ o = NULL; for (long_pos = 0; long_pos < num_opts; long_pos++) { if (opts[long_pos].shortopt == res) { o = &opts[long_pos]; break; } } } if (o->is_daemon) { char *val; ignore_result(asprintf(&val, "--%s=%s", o->optname, optarg)); daemon_argv[num_daemon++] = val; } /* store the argument if we found one */ if (o->argtype != OPT_NONE && o->val && optarg) { switch (o->argtype) { case REQ_INT: { auto ival = json_integer(atoi(optarg)); *(int*)o->val = (int)json_integer_value(ival); cfg_set_arg(o->optname, ival); break; } case REQ_STRING: { auto sval = typed_string_to_json(optarg, W_STRING_UNICODE); *(char**)o->val = strdup(optarg); cfg_set_arg(o->optname, sval); break; } case OPT_NONE: ; } } if (o->argtype == OPT_NONE && o->val) { auto bval = json_true(); *(int*)o->val = 1; cfg_set_arg(o->optname, bval); } } long_pos = -1; } free(long_opts); free(shortopts); *argcp = argc - optind; *argvp = argv + optind; return true; } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/pending.cpp000066400000000000000000000240361314236077500154730ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" static const struct flag_map kflags[] = { {W_PENDING_CRAWL_ONLY, "CRAWL_ONLY"}, {W_PENDING_RECURSIVE, "RECURSIVE"}, {W_PENDING_VIA_NOTIFY, "VIA_NOTIFY"}, {0, NULL}, }; // Since the tree has no internal knowledge about path structures, when we // search for "foo/bar" it may return a prefix match for an existing node // with the key "foo/bard". We use this function to test whether the string // exactly matches the input ("foo/bar") or whether it has a slash as the next // character after the common prefix ("foo/bar/" as a prefix). static bool is_path_prefix(const char *path, size_t path_len, const char *other, size_t common_prefix) { if (common_prefix > path_len) { return false; } w_assert(memcmp(path, other, common_prefix) == 0, "is_path_prefix: %.*s vs %.*s should have %d common_prefix chars\n", (int)path_len, path, (int)common_prefix, other, (int)common_prefix); if (common_prefix == path_len) { return true; } return is_slash(path[common_prefix]); } // Helper to un-doubly-link a pending item. void PendingCollectionBase::unlinkItem( std::shared_ptr& p) { if (pending_ == p) { pending_ = p->next; } auto prev = p->prev.lock(); if (prev) { prev->next = p->next; } if (p->next) { p->next->prev = prev; } p->next.reset(); p->prev.reset(); } // Helper to doubly-link a pending item to the head of a collection. void PendingCollectionBase::linkHead(std::shared_ptr&& p) { p->prev.reset(); p->next = pending_; if (p->next) { p->next->prev = p; } pending_ = std::move(p); } /* initialize a pending_coll */ PendingCollectionBase::PendingCollectionBase( std::condition_variable& cond, std::atomic& pinged) : cond_(cond), pinged_(pinged) {} /* destroy a pending_coll */ PendingCollectionBase::~PendingCollectionBase() { drain(); } /* drain and discard the content of a pending_coll, but do not destroy it */ void PendingCollectionBase::drain() { pending_.reset(); tree_.clear(); } void PendingCollectionBase::ping() { pinged_ = true; cond_.notify_all(); } void PendingCollection::ping() { pinged_ = true; cond_.notify_all(); } // Deletion is a bit awkward in this radix tree implementation. // We can't recursively delete a given prefix as a built-in operation // and it is non-trivial to add that functionality right now. // When we lop-off a portion of a tree that we're going to analyze // recursively, we have to iterate each leaf and explicitly delete // that leaf. // Since deletion invalidates the iteration state we have to signal // to stop iteration after each deletion and then retry the prefix // deletion. // We use this kid_context state to pass down the required information // to the iterator callback so that we adjust the overall state correctly. PendingCollectionBase::iterContext::iterContext( const w_string& root, PendingCollectionBase& coll) : root(root), coll(coll) {} // This is the iterator callback we use to prune out obsoleted leaves. // We need to compare the prefix to make sure that we don't delete // a sibling node by mistake (see commentary on the is_path_prefix // function for more on that). int PendingCollectionBase::iterContext::operator()( const w_string& key, std::shared_ptr& p) { if (!p) { // It was removed; update the tree to reflect this coll.tree_.erase(key); // Stop iteration: we deleted something and invalidated the iterators. return 1; } if ((p->flags & W_PENDING_CRAWL_ONLY) == 0 && key.size() > root.size() && is_path_prefix( (const char*)key.data(), key.size(), root.data(), root.size()) && !watchman::CookieSync::isPossiblyACookie(p->path)) { w_log( W_LOG_DBG, "delete_kids: removing (%d) %.*s from pending because it is " "obsoleted by (%d) %.*s\n", int(p->path.size()), int(p->path.size()), p->path.data(), int(root.size()), int(root.size()), root.data()); // Unlink the child from the pending index. coll.unlinkItem(p); // Remove it from the art tree. coll.tree_.erase(key); // Stop iteration because we just invalidated the iterator state // by modifying the tree mid-iteration. return 1; } return 0; } // if there are any entries that are obsoleted by a recursive insert, // walk over them now and mark them as ignored. void PendingCollectionBase::maybePruneObsoletedChildren( w_string path, int flags) { if ((flags & (W_PENDING_RECURSIVE | W_PENDING_CRAWL_ONLY)) == W_PENDING_RECURSIVE) { iterContext ctx{path, *this}; uint32_t pruned = 0; // Since deletion invalidates the iterator, we need to repeatedly // call this to prune out the nodes. It will return 0 once no // matching prefixes are found and deleted. while (tree_.iterPrefix((const uint8_t*)path.data(), path.size(), ctx)) { // OK; try again ++pruned; } if (pruned) { w_log( W_LOG_DBG, "maybePruneObsoletedChildren: pruned %u nodes under (%d) %.*s\n", pruned, int(path.size()), int(path.size()), path.data()); } } } void PendingCollectionBase::consolidateItem(watchman_pending_fs* p, int flags) { // Increase the strength of the pending item if either of these // flags are set. // We upgrade crawl-only as well as recursive; it indicates that // we've recently just performed the stat and we want to avoid // infinitely trying to stat-and-crawl p->flags |= flags & (W_PENDING_CRAWL_ONLY|W_PENDING_RECURSIVE); maybePruneObsoletedChildren(p->path, p->flags); } // Check the tree to see if there is a path that is earlier/higher in the // filesystem than the input path; if there is, and it is recursive, // return true to indicate that there is no need to track this new path // due to the already scheduled higher level path. bool PendingCollectionBase::isObsoletedByContainingDir(const w_string& path) { auto leaf = tree_.longestMatch((const uint8_t*)path.data(), path.size()); if (!leaf) { return false; } auto p = leaf->value; if ((p->flags & W_PENDING_RECURSIVE) && is_path_prefix( path.data(), path.size(), (const char*)leaf->key.data(), leaf->key.size())) { if (watchman::CookieSync::isPossiblyACookie(path)) { return false; } // Yes: the pre-existing entry higher up in the tree obsoletes this // one that we would add now. w_log( W_LOG_DBG, "is_obsoleted: SKIP %.*s is obsoleted by %.*s\n", int(path.size()), path.data(), int(p->path.size()), p->path.data()); return true; } return false; } watchman_pending_fs::watchman_pending_fs( const w_string& path, const struct timeval& now, int flags) : path(path), now(now), flags(flags) {} /* add a pending entry. Will consolidate an existing entry with the * same name. Returns false if an allocation fails. * The caller must own the collection lock. */ bool PendingCollectionBase::add( const w_string& path, struct timeval now, int flags) { char flags_label[128]; auto existing = tree_.search(path); if (existing) { /* Entry already exists: consolidate */ consolidateItem(existing->get(), flags); /* all done */ return true; } if (isObsoletedByContainingDir(path)) { return true; } // Try to allocate the new node before we prune any children. auto p = std::make_shared(path, now, flags); maybePruneObsoletedChildren(path, flags); w_expand_flags(kflags, flags, flags_label, sizeof(flags_label)); w_log( W_LOG_DBG, "add_pending: %.*s %s\n", int(path.size()), path.data(), flags_label); tree_.insert(path, p); linkHead(std::move(p)); return true; } bool PendingCollectionBase::add( struct watchman_dir* dir, const char* name, struct timeval now, int flags) { return add(w_dir_path_cat_str(dir, name), now, flags); } /* Append the contents of src to target, consolidating in target. * src is effectively drained in the process. * Caller must own the lock on both src and target. */ void PendingCollectionBase::append(PendingCollectionBase* src) { auto p = src->stealItems(); while (p) { auto target_p = tree_.search((const uint8_t*)p->path.data(), p->path.size()); if (target_p) { /* Entry already exists: consolidate */ consolidateItem(target_p->get(), p->flags); p = std::move(p->next); continue; } if (isObsoletedByContainingDir(p->path)) { p = std::move(p->next); continue; } maybePruneObsoletedChildren(p->path, p->flags); auto next = std::move(p->next); tree_.insert(p->path, p); linkHead(std::move(p)); p = std::move(next); } } std::shared_ptr PendingCollectionBase::stealItems() { tree_.clear(); return std::move(pending_); } /* Returns the number of unique pending items in the collection */ uint32_t PendingCollectionBase::size() const { return tree_.size(); } bool PendingCollectionBase::checkAndResetPinged() { if (pending_ || pinged_) { pinged_ = false; return true; } return false; } PendingCollection::PendingCollection() : watchman::Synchronized( PendingCollectionBase(cond_, pinged_)), pinged_(false) {} PendingCollection::LockedPtr PendingCollection::lockAndWait( std::chrono::milliseconds timeoutms, bool& pinged) { auto lock = wlock(); if (lock->checkAndResetPinged()) { pinged = true; return lock; } if (timeoutms.count() == -1) { cond_.wait(lock.getUniqueLock()); } else { cond_.wait_for(lock.getUniqueLock(), timeoutms); } pinged = lock->checkAndResetPinged(); return lock; } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/perf.cpp000066400000000000000000000161701314236077500150030ustar00rootroot00000000000000/* Copyright 2016-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman_system.h" #include #include #include "ChildProcess.h" #include "watchman.h" #include "watchman_perf.h" #include "watchman_synchronized.h" using watchman::ChildProcess; using Options = ChildProcess::Options; using Environment = ChildProcess::Environment; using CaseSensitivity = watchman::CaseSensitivity; namespace { class PerfLogThread { watchman::Synchronized samples_; std::thread thread_; std::condition_variable cond_; void loop(); public: PerfLogThread() : thread_([this]() { loop(); }) {} ~PerfLogThread() { cond_.notify_all(); thread_.join(); } void addSample(json_ref&& sample) { auto wlock = samples_.wlock(); if (!*wlock) { *wlock = json_array(); } json_array_append_new(*wlock, std::move(sample)); cond_.notify_one(); } }; PerfLogThread& getPerfThread() { // Get the perf logging thread, starting it on the first call. // Meyer's singleton! static PerfLogThread perfThread; return perfThread; } } watchman_perf_sample::watchman_perf_sample(const char* description) : description(description) { gettimeofday(&time_begin, nullptr); #ifdef HAVE_SYS_RESOURCE_H getrusage(RUSAGE_SELF, &usage_begin); #endif } bool watchman_perf_sample::finish() { gettimeofday(&time_end, nullptr); w_timeval_sub(time_end, time_begin, &duration); #ifdef HAVE_SYS_RESOURCE_H getrusage(RUSAGE_SELF, &usage_end); // Compute the delta for the usage w_timeval_sub(usage_end.ru_utime, usage_begin.ru_utime, &usage.ru_utime); w_timeval_sub(usage_end.ru_stime, usage_begin.ru_stime, &usage.ru_stime); #define DIFFU(n) usage.n = usage_end.n - usage_begin.n DIFFU(ru_maxrss); DIFFU(ru_ixrss); DIFFU(ru_idrss); DIFFU(ru_minflt); DIFFU(ru_majflt); DIFFU(ru_nswap); DIFFU(ru_inblock); DIFFU(ru_oublock); DIFFU(ru_msgsnd); DIFFU(ru_msgrcv); DIFFU(ru_nsignals); DIFFU(ru_nvcsw); DIFFU(ru_nivcsw); #undef DIFFU #endif if (!will_log) { if (wall_time_elapsed_thresh == 0) { auto thresh = cfg_get_json("perf_sampling_thresh"); if (thresh) { if (json_is_number(thresh)) { wall_time_elapsed_thresh = json_number_value(thresh); } else { json_unpack(thresh, "{s:f}", description, &wall_time_elapsed_thresh); } } } if (wall_time_elapsed_thresh > 0 && w_timeval_diff(time_begin, time_end) > wall_time_elapsed_thresh) { will_log = true; } } return will_log; } void watchman_perf_sample::add_meta(const char* key, json_ref&& val) { if (!meta_data) { meta_data = json_object(); } meta_data.set(key, std::move(val)); } void watchman_perf_sample::add_root_meta( const std::shared_ptr& root) { // Note: if the root lock isn't held, we may read inaccurate numbers for // some of these properties. We're ok with that, and don't want to force // the root lock to be re-acquired just for this. auto meta = json_object( {{"path", w_string_to_json(root->root_path)}, {"recrawl_count", json_integer(root->recrawlInfo.rlock()->recrawlCount)}, {"case_sensitive", json_boolean(root->case_sensitive == CaseSensitivity::CaseSensitive)}}); // During recrawl, the view may be re-assigned. Protect against // reading a nullptr. auto view = root->view(); if (view) { auto position = view->getMostRecentRootNumberAndTickValue(); meta.set({{"number", json_integer(position.rootNumber)}, {"ticks", json_integer(position.ticks)}, {"watcher", w_string_to_json(view->getName())}}); } add_meta("root", std::move(meta)); } void watchman_perf_sample::set_wall_time_thresh(double thresh) { wall_time_elapsed_thresh = thresh; } void watchman_perf_sample::force_log() { will_log = true; } void PerfLogThread::loop() { json_ref samples; json_ref perf_cmd; int64_t sample_batch; w_set_thread_name("perflog"); auto stateDir = w_string_piece(watchman_state_file).dirName().asWString(); perf_cmd = cfg_get_json("perf_logger_command"); if (json_is_string(perf_cmd)) { perf_cmd = json_array({perf_cmd}); } if (!json_is_array(perf_cmd)) { w_log( W_LOG_FATAL, "perf_logger_command must be either a string or an array of strings\n"); } sample_batch = cfg_get_int("perf_logger_command_max_samples_per_call", 4); while (!w_is_stopping()) { { auto wlock = samples_.wlock(); if (!*wlock) { cond_.wait(wlock.getUniqueLock()); } samples = nullptr; std::swap(samples, *wlock); } if (samples) { while (json_array_size(samples) > 0) { int i = 0; auto cmd = json_array(); json_array_extend(cmd, perf_cmd); while (i < sample_batch && json_array_size(samples) > 0) { char *stringy = json_dumps(json_array_get(samples, 0), 0); if (stringy) { json_array_append_new( cmd, typed_string_to_json(stringy, W_STRING_MIXED)); free(stringy); } json_array_remove(samples, 0); i++; } ChildProcess::Options opts; opts.environment().set({{"WATCHMAN_STATE_DIR", stateDir}, {"WATCHMAN_SOCK", get_sock_name()}}); opts.open(STDIN_FILENO, "/dev/null", O_RDONLY, 0666); opts.open(STDOUT_FILENO, "/dev/null", O_WRONLY, 0666); opts.open(STDERR_FILENO, "/dev/null", O_WRONLY, 0666); try { ChildProcess proc(cmd, std::move(opts)); proc.wait(); } catch (const std::exception& exc) { watchman::log( watchman::ERR, "failed to spawn perf logger: ", exc.what(), "\n"); } } } } } void watchman_perf_sample::log() { char *dumped = NULL; if (!will_log) { return; } // Assemble a perf blob auto info = json_object( {{"description", typed_string_to_json(description)}, {"meta", meta_data}, {"pid", json_integer(getpid())}, {"version", typed_string_to_json(PACKAGE_VERSION, W_STRING_UNICODE)}}); #ifdef WATCHMAN_BUILD_INFO info.set( "buildinfo", typed_string_to_json(WATCHMAN_BUILD_INFO, W_STRING_UNICODE)); #endif #define ADDTV(name, tv) info.set(name, json_real(w_timeval_abs_seconds(tv))) ADDTV("elapsed_time", duration); ADDTV("start_time", time_begin); #ifdef HAVE_SYS_RESOURCE_H ADDTV("user_time", usage.ru_utime); ADDTV("system_time", usage.ru_stime); #define ADDU(n) info.set(#n, json_integer(usage.n)) ADDU(ru_maxrss); ADDU(ru_ixrss); ADDU(ru_idrss); ADDU(ru_minflt); ADDU(ru_majflt); ADDU(ru_nswap); ADDU(ru_inblock); ADDU(ru_oublock); ADDU(ru_msgsnd); ADDU(ru_msgrcv); ADDU(ru_nsignals); ADDU(ru_nvcsw); ADDU(ru_nivcsw); #endif // HAVE_SYS_RESOURCE_H #undef ADDU #undef ADDTV // Log to the log file dumped = json_dumps(info, 0); w_log(W_LOG_ERR, "PERF: %s\n", dumped); free(dumped); if (!cfg_get_json("perf_logger_command")) { return; } // Send this to our logging thread for async processing auto& perfThread = getPerfThread(); perfThread.addSample(std::move(info)); } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/probe.py000077500000000000000000000141541314236077500150270ustar00rootroot00000000000000#!/usr/bin/env python # vim:ts=4:sw=4:et: # This script is roughly equivalent to the configure script that is # generated from configure.ac. from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import argparse import os import re import shutil import subprocess import sys import tempfile import shlex CSUFFIX = '.c' OSUFFIX = '.o' EXESUFFIX = '.exe' CC = os.environ.get('CC', 'cc') CPPFLAGS = os.environ.get('CPPFLAGS', '') LDFLAGS = os.environ.get('LDFLAGS', '') parser = argparse.ArgumentParser(description='Probe for system characteristics') parser.add_argument('--cc', action='store', default=CC) parser.add_argument('--cppflags', action='store', default=CPPFLAGS) parser.add_argument('--ldflags', action='store', default=LDFLAGS) parser.add_argument('--cwd', action='store', default=os.getcwd()) parser.add_argument('--configure', action='store', default='configure.ac') parser.add_argument('--verbose', action='store_true') args = parser.parse_args() CC = args.cc CPPFLAGS = shlex.split(args.cppflags) LDFLAGS = shlex.split(args.ldflags) os.chdir(args.cwd) extra_flags = [] if sys.platform == 'darwin': extra_flags += ['-framework', 'CoreServices'] # List of functions that we may optionally use if they are present on # the system. Keep this sorted. funcs_to_probe = [ 'FSEventStreamSetExclusionPaths', 'accept4', 'backtrace', 'backtrace_symbols', 'backtrace_symbols_fd', 'fdopendir', 'getattrlistbulk', 'inotify_init', 'inotify_init1', 'kqueue', 'localeconv', 'memmem', 'mkostemp', 'openat', 'pipe2', 'port_create', 'statfs', 'strtoll', 'sys_siglist', ] # List of header files that we'd like to know about on the system. # Keep this sorted. headers_to_probe = [ 'CoreServices/CoreServices.h', 'execinfo.h', 'inttypes.h', 'locale.h', 'port.h', 'sys/event.h', 'sys/inotify.h', 'sys/mount.h', 'sys/param.h', 'sys/resource.h', 'sys/socket.h', 'sys/statfs.h', 'sys/statvfs.h', 'sys/types.h', 'sys/ucred.h', 'sys/vfs.h', 'valgrind/valgrind.h', 'unistd.h', ] def makesym(name): return re.sub('[./]', '_', name.upper()) def emit_status(proc, what, sym): out, err = proc.communicate() status = proc.wait() if args.verbose: print('// Status: %s' % status) for line in out.splitlines(): print('// stdout: %s' % line) for line in err.splitlines(): print('// stderr: %s' % line) if status == 0: print('#define %s 1' % sym) else: print('#undef %s' % sym) def check_func(name): tmp_dir = tempfile.mkdtemp() try: src_file = os.path.join(tmp_dir, '%s%s' % (name, CSUFFIX)) exe_file = os.path.join(tmp_dir, '%s%s' % (name, EXESUFFIX)) with open(src_file, 'w+') as f: f.write( ''' int main(int argc, char**argv) { extern int %s(void); return %s(); } ''' % (name, name) ) cmd = [CC] + CPPFLAGS + ['-o', exe_file, src_file] + \ extra_flags + LDFLAGS what = '\n// Probing for function %s\n// %s' % (name, ' '.join(cmd)) proc = subprocess.Popen( cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE ) emit_status(proc, what, 'HAVE_%s' % makesym(name)) finally: shutil.rmtree(tmp_dir) def check_header(name): tmp_dir = tempfile.mkdtemp() try: filename = os.path.basename(name) src_file = os.path.join(tmp_dir, '%s%s' % (filename, CSUFFIX)) obj_file = os.path.join(tmp_dir, '%s%s' % (filename, OSUFFIX)) with open(src_file, 'w+') as f: f.write(''' #include "%s" ''' % (name)) cmd = [CC] + CPPFLAGS + [ '-c', '-o', obj_file, src_file, ] + extra_flags what = '\n// Probing for function %s\n// %s' % (name, ' '.join(cmd)) proc = subprocess.Popen( cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE ) emit_status(proc, what, 'HAVE_%s' % makesym(name)) finally: shutil.rmtree(tmp_dir) def check_struct_members(struct_name, member_name, includes=None): tmp_dir = tempfile.mkdtemp() try: filename = struct_name src_file = os.path.join(tmp_dir, '%s%s' % (filename, CSUFFIX)) obj_file = os.path.join(tmp_dir, '%s%s' % (filename, OSUFFIX)) with open(src_file, 'w+') as f: f.write( ''' %s void *probe_%s_%s(struct %s *s) { return (void*)&s->%s; } ''' % (includes, struct_name, member_name, struct_name, member_name) ) cmd = [CC] + CPPFLAGS + ['-c', '-o', obj_file, src_file] + extra_flags what = '\n// Probing for %s::%s\n// %s' % ( struct_name, member_name, ' '.join(cmd) ) proc = subprocess.Popen( cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE ) emit_status( proc, what, 'HAVE_STRUCT_%s' % makesym('%s_%s' % (struct_name, member_name)) ) finally: shutil.rmtree(tmp_dir) # Scrape out the version number from the configure script so that we have # fewer places to update when we bump the version. def extract_version(): with open(args.configure, 'r') as f: for line in f: res = re.match('^AC_INIT\(\[watchman\], \[([0-9.]+)\]', line) if res: return res.group(1) raise Exception("couldn't find AC_INIT version line in " + args.configure) print('// Generated by ./build/probe.py') print('#ifndef WATCHMAN_CONFIG_H') print('#define WATCHMAN_CONFIG_H') print('#define PACKAGE_VERSION "%s"' % extract_version()) print('#define WATCHMAN_STATE_DIR "/var/facebook/watchman"') print('#define WATCHMAN_CONFIG_FILE "/etc/watchman.json"') for hname in headers_to_probe: check_header(hname) for fname in funcs_to_probe: check_func(fname) check_struct_members('statvfs', 'f_fstypename', '#include ') check_struct_members('statvfs', 'f_basetype', '#include ') print('#endif') watchman-4.9.0/python/000077500000000000000000000000001314236077500146575ustar00rootroot00000000000000watchman-4.9.0/python/.gitignore000066400000000000000000000000111314236077500166370ustar00rootroot00000000000000instroot watchman-4.9.0/python/LICENSE000066400000000000000000000053101314236077500156630ustar00rootroot00000000000000The following license applies to all files within this directory and any subdirectories: Copyright 2014-present Facebook, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name Facebook nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Copyright for portions of this software is held by Benjamin Peterson (c) 2010-2016, as part of the 'six' project: Copyright (c) 2010-2016 Benjamin Peterson Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. watchman-4.9.0/python/bin/000077500000000000000000000000001314236077500154275ustar00rootroot00000000000000watchman-4.9.0/python/bin/TARGETS000066400000000000000000000007171314236077500164700ustar00rootroot00000000000000python_binary( name = "watchman-make", srcs = {"watchman-make": "watchman_make.py"}, base_module = "", main_module = "watchman_make", py_version = "<3", deps = ["@/watchman/python/pywatchman:pywatchman"], ) python_binary( name = "watchman-wait", srcs = {"watchman-wait": "watchman_wait.py"}, base_module = "", main_module = "watchman_wait", py_version = "<3", deps = ["@/watchman/python/pywatchman:pywatchman"], ) watchman-4.9.0/python/bin/watchman-make000077500000000000000000000206401314236077500200740ustar00rootroot00000000000000#!/usr/bin/env python from __future__ import print_function import pywatchman import argparse import os import sys import subprocess def patterns_to_terms(pats): # convert a list of globs into the equivalent watchman expression term if pats is None or len(pats) == 0: return ['true'] terms = ['anyof'] for p in pats: terms.append(['match', p, 'wholename', {'includedotfiles': True}]) return terms class Target(object): """ Base Class for a Target We track the patterns that we consider to be the dependencies for this target and establish a subscription for them. When we receive notifications for that subscription, we know that we should execute the command. """ def __init__(self, name, patterns, cmd): self.name = name self.patterns = patterns self.cmd = cmd self.triggered = False def start(self, client, root): query = { 'expression': patterns_to_terms(self.patterns), 'fields': ['name'] } watch = client.query('watch-project', root) if 'warning' in watch: print('WARNING: ', watch['warning'], file=sys.stderr) root_dir = watch['watch'] if 'relative_path' in watch: query['relative_root'] = watch['relative_path'] # get the initial clock value so that we only get updates query['since'] = client.query('clock', root_dir)['clock'] print('# Changes to files matching %s will execute `%s`' % ( ' '.join(self.patterns), self.cmd), file=sys.stderr) sub = client.query('subscribe', root_dir, self.name, query) def consumeEvents(self, client): data = client.getSubscription(self.name) if data is None: return self.triggered = True def execute(self): if not self.triggered: return self.triggered = False print('# Execute: `%s`' % self.cmd, file=sys.stderr) subprocess.call(self.cmd, shell=True) class MakefileTarget(Target): """ Represents a Makefile target that we'd like to build. """ def __init__(self, name, make, targets, patterns): self.make = make self.targets = targets cmd = "%s %s" % (self.make, " ".join(self.targets)) super(MakefileTarget, self).__init__(name, patterns, cmd) def __repr__(self): return '{make=%r targets=%r pat=%r}' % ( self.make, self.targets, self.patterns) class RunTarget(Target): """ Represents a script that we'd like to run. """ def __init__(self, name, runfile, patterns): self.runfile = runfile super(RunTarget, self).__init__(name, patterns, self.runfile) def __repr__(self): return '{runfile=%r pat=%r}' % ( self.runfile, self.patterns) class DefineTarget(argparse.Action): """ argument parser helper to manage defining MakefileTarget instances. """ def __init__(self, option_strings, dest, **kwargs): super(DefineTarget, self).__init__(option_strings, dest, **kwargs) def __call__(self, parser, namespace, values, option_string=None): targets = getattr(namespace, self.dest) if targets is None: targets = [] setattr(namespace, self.dest, targets) if isinstance(values, basestring): values = [values] if namespace.pattern is None or len(namespace.pattern) == 0: print('no patterns were specified for target %s' % values, file=sys.stderr) sys.exit(1) target = MakefileTarget('target_%d' % len(targets), namespace.make, values, namespace.pattern) targets.append(target) # Clear out patterns between targets namespace.pattern = None parser = argparse.ArgumentParser( formatter_class=argparse.RawDescriptionHelpFormatter, description=""" watchman-make waits for changes to files and then invokes a build tool (by default, `make`) or provided script to process those changes. It uses the watchman service to efficiently watch the appropriate files. Events are consolidated and settled before they are dispatched to your build tool, so that it won't start executing until after the files have stopped changing. You can tell watchman-make about one or more build targets and dependencies for those targets or provide a script to run. watchman-make will then trigger the build for the given targets or run the provided script as changes are detected. """) parser.add_argument('-t', '--target', nargs='+', type=str, action=DefineTarget, help=""" Specify a list of target(s) to pass to the make tool. The --make and --pattern options that precede --target are used to define the trigger condition. """) parser.add_argument('-s', '--settle', type=float, default=0.2, help='How long to wait to allow changes to settle before invoking targets') parser.add_argument('--make', type=str, default='make', help=""" The name of the make tool to use for the next --target. The default is `make`. You may include additional arguments; you are not limited to just the path to a tool or script. """) parser.add_argument('-p', '--pattern', type=str, nargs='+', help=""" Define filename matching patterns that will be used to trigger the next --target definition. The pattern syntax is wildmatch style; globbing with recursive matching via '**'. --pattern is reset to empty after each --target argument. """) parser.add_argument('--root', type=str, default='.', help=""" Define the root of the project. The default is to use the PWD. All patterns are considered to be relative to this root, and the build tool is executed with this location set as its PWD. """) parser.add_argument('-r', '--run', type=str, help=""" The script that should be run when changes are detected """) args = parser.parse_args() if args.target is None and args.run is None: print('# No run script or targets were specified, nothing to do.', file=sys.stderr) sys.exit(1) if args.target is None: args.target = [] if args.run is not None: args.target.append(RunTarget('RunTarget', args.run, args.pattern)) def check_root(desired_root): try: root = os.path.abspath(desired_root) os.chdir(root) return root except Exception as ex: print('--root=%s: specified path is invalid: %s' % ( desired_root, ex), file=sys.stderr) sys.exit(1) targets = {} client = pywatchman.client(timeout=600) try: client.capabilityCheck( required=['cmd-watch-project', 'wildmatch']) root = check_root(args.root) print('# Relative to %s' % root, file=sys.stderr) for t in args.target: t.start(client, root) targets[t.name] = t except pywatchman.CommandError as ex: print('watchman:', str(ex), file=sys.stderr) sys.exit(1) print('# waiting for changes', file=sys.stderr) while True: try: # Wait for changes to start to occur. We're happy to wait # quite some time for this client.setTimeout(600) result = client.receive() for _, t in targets.iteritems(): t.consumeEvents(client) # Now we wait for events to settle client.setTimeout(args.settle) settled = False while not settled: try: result = client.receive() for _, t in targets.iteritems(): t.consumeEvents(client) except pywatchman.SocketTimeout as ex: # Our short settle timeout hit, so we're now settled settled = True break # Now we can work on executing the targets for _, t in targets.iteritems(): t.execute() # Print this at the bottom of the loop rather than the top # because we may timeout every so often and it looks weird # to keep printing 'waiting for changes' each time we do. print('# waiting for changes', file=sys.stderr) except pywatchman.SocketTimeout as ex: # Let's check to see if we're still functional try: vers = client.query('version') except Exception as ex: print('watchman:', str(ex), file=sys.stderr) sys.exit(1) except pywatchman.WatchmanError as ex: print('watchman:', str(ex), file=sys.stderr) sys.exit(1) except KeyboardInterrupt: # suppress ugly stack trace when they Ctrl-C break watchman-4.9.0/python/bin/watchman-wait000077500000000000000000000170141314236077500201240ustar00rootroot00000000000000#!/usr/bin/env python from __future__ import print_function import pywatchman import argparse import os import sys import time def fieldlist(s): # helper for splitting a list of fields by comma return s.split(',') parser = argparse.ArgumentParser( formatter_class=argparse.RawDescriptionHelpFormatter, description=""" watchman-wait waits for changes to files. It uses the watchman service to efficiently and recursively watch your specified list of paths. It is suitable for waiting for changes to files from shell scripts. It can stop after a configurable number of events are observed. The default is a single event. You may also remove the limit and allow it to execute continuously. watchman-wait will print one event per line. The event information includes your specified list of fields, with each field separated by a space (or your choice of --separator). Events are consolidated and settled by the watchman server before they are dispatched to watchman-wait. Exit Status: The following exit status codes can be used to determine what caused watchman-wait to exit: 0 After successfully waiting for event(s) 1 In case of a runtime error of some kind 2 The -t/--timeout option was used and that amount of time passed before an event was received 3 Execution was interrupted (Ctrl-C) """) parser.add_argument('path', type=str, nargs='+', help='path(s) to watch') parser.add_argument('--relative', type=str, default='.', help='print paths relative to this dir (default=PWD)') parser.add_argument('--fields', type=fieldlist, default=['name'], help=""" Comma separated list of file information fields to return. The default is just the name. For a list of possible fields, see: https://facebook.github.io/watchman/docs/cmd/query.html#available-fields """) parser.add_argument('-s', '--separator', type=str, default=' ', help='String to use as field separator for event output.') parser.add_argument('-m', '--max-events', type=int, default=1, help=""" Set the maximum number of events that will be processed. When the limit is reached, watchman-wait will exit. The default is 1. Setting the limit to 0 removes the limit, causing watchman-wait to execute indefinitely. """) parser.add_argument('-p', '--pattern', type=str, nargs='+', help=""" Only emit paths that match this list of patterns. Patterns are applied by the watchman server and are matched against the root-relative paths. You will almost certainly want to use quotes around your pattern list so that your shell doesn't interpret the pattern. The pattern syntax is wildmatch style; globbing with recursive matching via '**'. """) parser.add_argument('-t', '--timeout', type=float, default=0, help=""" Exit if no events trigger within the specified timeout. If timeout is zero (the default) then keep running indefinitely. """) args = parser.parse_args() # We parse the list of paths into a set of subscriptions subscriptions = {} # Running total of individual file events we've seen total_events = 0 class Subscription(object): root = None # Watched root relpath = None # Offset to dir of interest name = None # Our name for this subscription path = None def __init__(self, path): if path in subscriptions: raise ValueError('path %s already specified' % path) self.name = path self.path = os.path.abspath(path) if not os.path.exists(self.path): print("""path %s (%s) does not exist. Perhaps you should use the --pattern option?""" % (path, self.path), file=sys.stderr) sys.exit(1) subscriptions[self.name] = self def __repr__(self): return 'Subscription(root=%s, rel=%s, name=%s)' % ( self.root, self.relpath, self.name) def start(self, client): dir_to_watch = self.path if args.pattern: expr = ['anyof'] for p in args.pattern: expr.append(['match', p, 'wholename', { 'includedotfiles': True}]) else: expr = ['true'] if not os.path.isdir(self.path): # Need to watch its parent dir_to_watch = os.path.dirname(self.path) expr = ['name', os.path.basename(self.path)] query = { 'expression': expr, 'fields': args.fields, } watch = client.query('watch-project', dir_to_watch) if 'warning' in watch: print('WARNING: ', watch['warning'], file=sys.stderr) self.root = watch['watch'] if 'relative_path' in watch: query['relative_root'] = watch['relative_path'] # get the initial clock value so that we only get updates query['since'] = client.query('clock', self.root)['clock'] sub = client.query('subscribe', self.root, self.name, query) def formatField(self, fname, val): if fname == 'name': # Respect the --relative path printing option return os.path.relpath(val, args.relative) # otherwise just make sure it's a string so that we can join it return str(val) def emit(self, client): global total_events data = client.getSubscription(self.name) if data is None: return False for dat in data: for f in dat.get('files', []): out = [] if len(args.fields) == 1: # When only 1 field is specified, the result is a # list of just the values out.append(self.formatField(args.fields[0], f)) else: # Otherwise it is a list of objects for fname in args.fields: out.append(self.formatField(fname, f[fname])) print(args.separator.join(out)) sys.stdout.flush() total_events = total_events + 1 if args.max_events > 0 and total_events >= args.max_events: sys.exit(0) return True # Translate paths into subscriptions for path in args.path: sub = Subscription(path) deadline = None if args.timeout > 0: deadline = time.time() + args.timeout # and start up the client + subscriptions client = pywatchman.client() try: client.capabilityCheck( required=['term-dirname', 'cmd-watch-project', 'wildmatch']) for _, sub in subscriptions.iteritems(): sub.start(client) except pywatchman.CommandError as ex: print('watchman:', ex.msg, file=sys.stderr) sys.exit(1) while deadline is None or time.time() < deadline: try: if deadline is not None: client.setTimeout(deadline - time.time()) # wait for a unilateral response result = client.receive() # in theory we can parse just the result variable here, but # the client object will accumulate all subscription results # over time, so we ask it to remove and return those values # for each of the subscriptions for _, sub in subscriptions.iteritems(): sub.emit(client) except pywatchman.SocketTimeout as ex: if deadline is not None and time.time() >= deadline: sys.exit(2) # Let's check to see if we're still functional try: vers = client.query('version') except Exception as ex: print('watchman:', str(ex), file=sys.stderr) sys.exit(1) except KeyboardInterrupt: # suppress ugly stack trace when they Ctrl-C sys.exit(3) watchman-4.9.0/python/publish-pypi.sh000077500000000000000000000011771314236077500176510ustar00rootroot00000000000000#!/bin/sh # # =============================== # pywatchman pypi publishing tool # =============================== # # this publishes the watchman python module to the pypi project # index located at https://pypi.python.org/pypi/pywatchman. the # metadata used for this process comes directly from setup.py. # # this requires write access to the pywatchman project on pypi # as well as a ~/.pypirc of the following form: # # [distutils] # index-servers = pypi # # [pypi] # repository: https://pypi.python.org/pypi # username: # password: # python setup.py sdist bdist_wheel upload -r pypi watchman-4.9.0/python/pywatchman/000077500000000000000000000000001314236077500170325ustar00rootroot00000000000000watchman-4.9.0/python/pywatchman/TARGETS000066400000000000000000000006111314236077500200640ustar00rootroot00000000000000cpp_python_extension( name = "bser", srcs = ["bser.c"], base_module = "pywatchman", # https://osdir.com/ml/python.cython.devel/2008-04/msg00080.html # This triggers for us calling Py_INCREF(Py_True) compiler_flags = ["-fno-strict-aliasing"], ) python_library( name = "pywatchman", srcs = glob(["*.py"]), base_module = "pywatchman", deps = [":bser"], ) watchman-4.9.0/python/pywatchman/__init__.py000066400000000000000000001112731314236077500211500ustar00rootroot00000000000000# Copyright 2014-present Facebook, Inc. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. # # * Neither the name Facebook nor the names of its contributors may be used to # endorse or promote products derived from this software without specific # prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import inspect import os import math import socket import subprocess import time # Sometimes it's really hard to get Python extensions to compile, # so fall back to a pure Python implementation. try: from . import bser # Demandimport causes modules to be loaded lazily. Force the load now # so that we can fall back on pybser if bser doesn't exist bser.pdu_info except ImportError: from . import pybser as bser from . import ( capabilities, compat, encoding, load, ) if os.name == 'nt': import ctypes import ctypes.wintypes wintypes = ctypes.wintypes GENERIC_READ = 0x80000000 GENERIC_WRITE = 0x40000000 FILE_FLAG_OVERLAPPED = 0x40000000 OPEN_EXISTING = 3 INVALID_HANDLE_VALUE = -1 FORMAT_MESSAGE_FROM_SYSTEM = 0x00001000 FORMAT_MESSAGE_ALLOCATE_BUFFER = 0x00000100 FORMAT_MESSAGE_IGNORE_INSERTS = 0x00000200 WAIT_FAILED = 0xFFFFFFFF WAIT_TIMEOUT = 0x00000102 WAIT_OBJECT_0 = 0x00000000 WAIT_IO_COMPLETION = 0x000000C0 INFINITE = 0xFFFFFFFF # Overlapped I/O operation is in progress. (997) ERROR_IO_PENDING = 0x000003E5 # The pointer size follows the architecture # We use WPARAM since this type is already conditionally defined ULONG_PTR = ctypes.wintypes.WPARAM class OVERLAPPED(ctypes.Structure): _fields_ = [ ("Internal", ULONG_PTR), ("InternalHigh", ULONG_PTR), ("Offset", wintypes.DWORD), ("OffsetHigh", wintypes.DWORD), ("hEvent", wintypes.HANDLE) ] def __init__(self): self.Internal = 0 self.InternalHigh = 0 self.Offset = 0 self.OffsetHigh = 0 self.hEvent = 0 LPDWORD = ctypes.POINTER(wintypes.DWORD) CreateFile = ctypes.windll.kernel32.CreateFileA CreateFile.argtypes = [wintypes.LPSTR, wintypes.DWORD, wintypes.DWORD, wintypes.LPVOID, wintypes.DWORD, wintypes.DWORD, wintypes.HANDLE] CreateFile.restype = wintypes.HANDLE CloseHandle = ctypes.windll.kernel32.CloseHandle CloseHandle.argtypes = [wintypes.HANDLE] CloseHandle.restype = wintypes.BOOL ReadFile = ctypes.windll.kernel32.ReadFile ReadFile.argtypes = [wintypes.HANDLE, wintypes.LPVOID, wintypes.DWORD, LPDWORD, ctypes.POINTER(OVERLAPPED)] ReadFile.restype = wintypes.BOOL WriteFile = ctypes.windll.kernel32.WriteFile WriteFile.argtypes = [wintypes.HANDLE, wintypes.LPVOID, wintypes.DWORD, LPDWORD, ctypes.POINTER(OVERLAPPED)] WriteFile.restype = wintypes.BOOL GetLastError = ctypes.windll.kernel32.GetLastError GetLastError.argtypes = [] GetLastError.restype = wintypes.DWORD SetLastError = ctypes.windll.kernel32.SetLastError SetLastError.argtypes = [wintypes.DWORD] SetLastError.restype = None FormatMessage = ctypes.windll.kernel32.FormatMessageA FormatMessage.argtypes = [wintypes.DWORD, wintypes.LPVOID, wintypes.DWORD, wintypes.DWORD, ctypes.POINTER(wintypes.LPSTR), wintypes.DWORD, wintypes.LPVOID] FormatMessage.restype = wintypes.DWORD LocalFree = ctypes.windll.kernel32.LocalFree GetOverlappedResult = ctypes.windll.kernel32.GetOverlappedResult GetOverlappedResult.argtypes = [wintypes.HANDLE, ctypes.POINTER(OVERLAPPED), LPDWORD, wintypes.BOOL] GetOverlappedResult.restype = wintypes.BOOL GetOverlappedResultEx = getattr(ctypes.windll.kernel32, 'GetOverlappedResultEx', None) if GetOverlappedResultEx is not None: GetOverlappedResultEx.argtypes = [wintypes.HANDLE, ctypes.POINTER(OVERLAPPED), LPDWORD, wintypes.DWORD, wintypes.BOOL] GetOverlappedResultEx.restype = wintypes.BOOL WaitForSingleObjectEx = ctypes.windll.kernel32.WaitForSingleObjectEx WaitForSingleObjectEx.argtypes = [wintypes.HANDLE, wintypes.DWORD, wintypes.BOOL] WaitForSingleObjectEx.restype = wintypes.DWORD CreateEvent = ctypes.windll.kernel32.CreateEventA CreateEvent.argtypes = [LPDWORD, wintypes.BOOL, wintypes.BOOL, wintypes.LPSTR] CreateEvent.restype = wintypes.HANDLE # Windows Vista is the minimum supported client for CancelIoEx. CancelIoEx = ctypes.windll.kernel32.CancelIoEx CancelIoEx.argtypes = [wintypes.HANDLE, ctypes.POINTER(OVERLAPPED)] CancelIoEx.restype = wintypes.BOOL # 2 bytes marker, 1 byte int size, 8 bytes int64 value sniff_len = 13 # This is a helper for debugging the client. _debugging = False if _debugging: def log(fmt, *args): print('[%s] %s' % (time.strftime("%a, %d %b %Y %H:%M:%S", time.gmtime()), fmt % args[:])) else: def log(fmt, *args): pass def _win32_strerror(err): """ expand a win32 error code into a human readable message """ # FormatMessage will allocate memory and assign it here buf = ctypes.c_char_p() FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_IGNORE_INSERTS, None, err, 0, buf, 0, None) try: return buf.value finally: LocalFree(buf) class WatchmanError(Exception): def __init__(self, msg=None, cmd=None): self.msg = msg self.cmd = cmd def setCommand(self, cmd): self.cmd = cmd def __str__(self): if self.cmd: return '%s, while executing %s' % (self.msg, self.cmd) return self.msg class BSERv1Unsupported(WatchmanError): pass class WatchmanEnvironmentError(WatchmanError): def __init__(self, msg, errno, errmsg, cmd=None): super(WatchmanEnvironmentError, self).__init__( '{0}: errno={1} errmsg={2}'.format(msg, errno, errmsg), cmd) class SocketConnectError(WatchmanError): def __init__(self, sockpath, exc): super(SocketConnectError, self).__init__( 'unable to connect to %s: %s' % (sockpath, exc)) self.sockpath = sockpath self.exc = exc class SocketTimeout(WatchmanError): """A specialized exception raised for socket timeouts during communication to/from watchman. This makes it easier to implement non-blocking loops as callers can easily distinguish between a routine timeout and an actual error condition. Note that catching WatchmanError will also catch this as it is a super-class, so backwards compatibility in exception handling is preserved. """ class CommandError(WatchmanError): """error returned by watchman self.msg is the message returned by watchman. """ def __init__(self, msg, cmd=None): super(CommandError, self).__init__( 'watchman command error: %s' % (msg, ), cmd, ) class Transport(object): """ communication transport to the watchman server """ buf = None def close(self): """ tear it down """ raise NotImplementedError() def readBytes(self, size): """ read size bytes """ raise NotImplementedError() def write(self, buf): """ write some data """ raise NotImplementedError() def setTimeout(self, value): pass def readLine(self): """ read a line Maintains its own buffer, callers of the transport should not mix calls to readBytes and readLine. """ if self.buf is None: self.buf = [] # Buffer may already have a line if we've received unilateral # response(s) from the server if len(self.buf) == 1 and b"\n" in self.buf[0]: (line, b) = self.buf[0].split(b"\n", 1) self.buf = [b] return line while True: b = self.readBytes(4096) if b"\n" in b: result = b''.join(self.buf) (line, b) = b.split(b"\n", 1) self.buf = [b] return result + line self.buf.append(b) class Codec(object): """ communication encoding for the watchman server """ transport = None def __init__(self, transport): self.transport = transport def receive(self): raise NotImplementedError() def send(self, *args): raise NotImplementedError() def setTimeout(self, value): self.transport.setTimeout(value) class UnixSocketTransport(Transport): """ local unix domain socket transport """ sock = None def __init__(self, sockpath, timeout): self.sockpath = sockpath self.timeout = timeout sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) try: sock.settimeout(self.timeout) sock.connect(self.sockpath) self.sock = sock except socket.error as e: sock.close() raise SocketConnectError(self.sockpath, e) def close(self): self.sock.close() self.sock = None def setTimeout(self, value): self.timeout = value self.sock.settimeout(self.timeout) def readBytes(self, size): try: buf = [self.sock.recv(size)] if not buf[0]: raise WatchmanError('empty watchman response') return buf[0] except socket.timeout: raise SocketTimeout('timed out waiting for response') def write(self, data): try: self.sock.sendall(data) except socket.timeout: raise SocketTimeout('timed out sending query command') def _get_overlapped_result_ex_impl(pipe, olap, nbytes, millis, alertable): """ Windows 7 and earlier does not support GetOverlappedResultEx. The alternative is to use GetOverlappedResult and wait for read or write operation to complete. This is done be using CreateEvent and WaitForSingleObjectEx. CreateEvent, WaitForSingleObjectEx and GetOverlappedResult are all part of Windows API since WindowsXP. This is the exact same implementation that can be found in the watchman source code (see get_overlapped_result_ex_impl in stream_win.c). This way, maintenance should be simplified. """ log('Preparing to wait for maximum %dms', millis ) if millis != 0: waitReturnCode = WaitForSingleObjectEx(olap.hEvent, millis, alertable) if waitReturnCode == WAIT_OBJECT_0: # Event is signaled, overlapped IO operation result should be available. pass elif waitReturnCode == WAIT_IO_COMPLETION: # WaitForSingleObjectEx returnes because the system added an I/O completion # routine or an asynchronous procedure call (APC) to the thread queue. SetLastError(WAIT_IO_COMPLETION) pass elif waitReturnCode == WAIT_TIMEOUT: # We reached the maximum allowed wait time, the IO operation failed # to complete in timely fashion. SetLastError(WAIT_TIMEOUT) return False elif waitReturnCode == WAIT_FAILED: # something went wrong calling WaitForSingleObjectEx err = GetLastError() log('WaitForSingleObjectEx failed: %s', _win32_strerror(err)) return False else: # unexpected situation deserving investigation. err = GetLastError() log('Unexpected error: %s', _win32_strerror(err)) return False return GetOverlappedResult(pipe, olap, nbytes, False) class WindowsNamedPipeTransport(Transport): """ connect to a named pipe """ def __init__(self, sockpath, timeout): self.sockpath = sockpath self.timeout = int(math.ceil(timeout * 1000)) self._iobuf = None self.pipe = CreateFile(sockpath, GENERIC_READ | GENERIC_WRITE, 0, None, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, None) if self.pipe == INVALID_HANDLE_VALUE: self.pipe = None self._raise_win_err('failed to open pipe %s' % sockpath, GetLastError()) # event for the overlapped I/O operations self._waitable = CreateEvent(None, True, False, None) if self._waitable is None: self._raise_win_err('CreateEvent failed', GetLastError()) self._get_overlapped_result_ex = GetOverlappedResultEx if (os.getenv('WATCHMAN_WIN7_COMPAT') == '1' or self._get_overlapped_result_ex is None): self._get_overlapped_result_ex = _get_overlapped_result_ex_impl def _raise_win_err(self, msg, err): raise IOError('%s win32 error code: %d %s' % (msg, err, _win32_strerror(err))) def close(self): if self.pipe: log('Closing pipe') CloseHandle(self.pipe) self.pipe = None if self._waitable is not None: # We release the handle for the event CloseHandle(self._waitable) self._waitable = None def setTimeout(self, value): # convert to milliseconds self.timeout = int(value * 1000) def readBytes(self, size): """ A read can block for an unbounded amount of time, even if the kernel reports that the pipe handle is signalled, so we need to always perform our reads asynchronously """ # try to satisfy the read from any buffered data if self._iobuf: if size >= len(self._iobuf): res = self._iobuf self.buf = None return res res = self._iobuf[:size] self._iobuf = self._iobuf[size:] return res # We need to initiate a read buf = ctypes.create_string_buffer(size) olap = OVERLAPPED() olap.hEvent = self._waitable log('made read buff of size %d', size) # ReadFile docs warn against sending in the nread parameter for async # operations, so we always collect it via GetOverlappedResultEx immediate = ReadFile(self.pipe, buf, size, None, olap) if not immediate: err = GetLastError() if err != ERROR_IO_PENDING: self._raise_win_err('failed to read %d bytes' % size, GetLastError()) nread = wintypes.DWORD() if not self._get_overlapped_result_ex(self.pipe, olap, nread, 0 if immediate else self.timeout, True): err = GetLastError() CancelIoEx(self.pipe, olap) if err == WAIT_TIMEOUT: log('GetOverlappedResultEx timedout') raise SocketTimeout('timed out after waiting %dms for read' % self.timeout) log('GetOverlappedResultEx reports error %d', err) self._raise_win_err('error while waiting for read', err) nread = nread.value if nread == 0: # Docs say that named pipes return 0 byte when the other end did # a zero byte write. Since we don't ever do that, the only # other way this shows up is if the client has gotten in a weird # state, so let's bail out CancelIoEx(self.pipe, olap) raise IOError('Async read yielded 0 bytes; unpossible!') # Holds precisely the bytes that we read from the prior request buf = buf[:nread] returned_size = min(nread, size) if returned_size == nread: return buf # keep any left-overs around for a later read to consume self._iobuf = buf[returned_size:] return buf[:returned_size] def write(self, data): olap = OVERLAPPED() olap.hEvent = self._waitable immediate = WriteFile(self.pipe, ctypes.c_char_p(data), len(data), None, olap) if not immediate: err = GetLastError() if err != ERROR_IO_PENDING: self._raise_win_err('failed to write %d bytes' % len(data), GetLastError()) # Obtain results, waiting if needed nwrote = wintypes.DWORD() if self._get_overlapped_result_ex(self.pipe, olap, nwrote, 0 if immediate else self.timeout, True): log('made write of %d bytes', nwrote.value) return nwrote.value err = GetLastError() # It's potentially unsafe to allow the write to continue after # we unwind, so let's make a best effort to avoid that happening CancelIoEx(self.pipe, olap) if err == WAIT_TIMEOUT: raise SocketTimeout('timed out after waiting %dms for write' % self.timeout) self._raise_win_err('error while waiting for write of %d bytes' % len(data), err) class CLIProcessTransport(Transport): """ open a pipe to the cli to talk to the service This intended to be used only in the test harness! The CLI is an oddball because we only support JSON input and cannot send multiple commands through the same instance, so we spawn a new process for each command. We disable server spawning for this implementation, again, because it is intended to be used only in our test harness. You really should not need to use the CLI transport for anything real. While the CLI can output in BSER, our Transport interface doesn't support telling this instance that it should do so. That effectively limits this implementation to JSON input and output only at this time. It is the responsibility of the caller to set the send and receive codecs appropriately. """ proc = None closed = True def __init__(self, sockpath, timeout, binpath='watchman'): self.sockpath = sockpath self.timeout = timeout self.binpath = binpath def close(self): if self.proc: if self.proc.pid is not None: self.proc.kill() self.proc.stdin.close() self.proc.stdout.close() self.proc.wait() self.proc = None def _connect(self): if self.proc: return self.proc args = [ self.binpath, '--sockname={0}'.format(self.sockpath), '--logfile=/BOGUS', '--statefile=/BOGUS', '--no-spawn', '--no-local', '--no-pretty', '-j', ] self.proc = subprocess.Popen(args, stdin=subprocess.PIPE, stdout=subprocess.PIPE) return self.proc def readBytes(self, size): self._connect() res = self.proc.stdout.read(size) if not res: raise WatchmanError('EOF on CLI process transport') return res def write(self, data): if self.closed: self.close() self.closed = False self._connect() res = self.proc.stdin.write(data) self.proc.stdin.close() self.closed = True return res class BserCodec(Codec): """ use the BSER encoding. This is the default, preferred codec """ def __init__(self, transport, value_encoding, value_errors): super(BserCodec, self).__init__(transport) self._value_encoding = value_encoding self._value_errors = value_errors def _loads(self, response): return bser.loads( response, value_encoding=self._value_encoding, value_errors=self._value_errors, ) def receive(self): buf = [self.transport.readBytes(sniff_len)] if not buf[0]: raise WatchmanError('empty watchman response') _1, _2, elen = bser.pdu_info(buf[0]) rlen = len(buf[0]) while elen > rlen: buf.append(self.transport.readBytes(elen - rlen)) rlen += len(buf[-1]) response = b''.join(buf) try: res = self._loads(response) return res except ValueError as e: raise WatchmanError('watchman response decode error: %s' % e) def send(self, *args): cmd = bser.dumps(*args) # Defaults to BSER v1 self.transport.write(cmd) class ImmutableBserCodec(BserCodec): """ use the BSER encoding, decoding values using the newer immutable object support """ def _loads(self, response): return bser.loads( response, False, value_encoding=self._value_encoding, value_errors=self._value_errors, ) class Bser2WithFallbackCodec(BserCodec): """ use BSER v2 encoding """ def __init__(self, transport, value_encoding, value_errors): super(Bser2WithFallbackCodec, self).__init__( transport, value_encoding, value_errors, ) if compat.PYTHON3: bserv2_key = 'required' else: bserv2_key = 'optional' self.send(["version", {bserv2_key: ["bser-v2"]}]) capabilities = self.receive() if 'error' in capabilities: raise BSERv1Unsupported( 'The watchman server version does not support Python 3. Please ' 'upgrade your watchman server.' ) if capabilities['capabilities']['bser-v2']: self.bser_version = 2 self.bser_capabilities = 0 else: self.bser_version = 1 self.bser_capabilities = 0 def receive(self): buf = [self.transport.readBytes(sniff_len)] if not buf[0]: raise WatchmanError('empty watchman response') recv_bser_version, recv_bser_capabilities, elen = bser.pdu_info(buf[0]) if hasattr(self, 'bser_version'): # Readjust BSER version and capabilities if necessary self.bser_version = max(self.bser_version, recv_bser_version) self.capabilities = self.bser_capabilities & recv_bser_capabilities rlen = len(buf[0]) while elen > rlen: buf.append(self.transport.readBytes(elen - rlen)) rlen += len(buf[-1]) response = b''.join(buf) try: res = self._loads(response) return res except ValueError as e: raise WatchmanError('watchman response decode error: %s' % e) def send(self, *args): if hasattr(self, 'bser_version'): cmd = bser.dumps(*args, version=self.bser_version, capabilities=self.bser_capabilities) else: cmd = bser.dumps(*args) self.transport.write(cmd) class ImmutableBser2Codec(Bser2WithFallbackCodec, ImmutableBserCodec): """ use the BSER encoding, decoding values using the newer immutable object support """ pass class JsonCodec(Codec): """ Use json codec. This is here primarily for testing purposes """ json = None def __init__(self, transport): super(JsonCodec, self).__init__(transport) # optional dep on json, only if JsonCodec is used import json self.json = json def receive(self): line = self.transport.readLine() try: # In Python 3, json.loads is a transformation from Unicode string to # objects possibly containing Unicode strings. We typically expect # the JSON blob to be ASCII-only with non-ASCII characters escaped, # but it's possible we might get non-ASCII bytes that are valid # UTF-8. if compat.PYTHON3: line = line.decode('utf-8') return self.json.loads(line) except Exception as e: print(e, line) raise def send(self, *args): cmd = self.json.dumps(*args) # In Python 3, json.dumps is a transformation from objects possibly # containing Unicode strings to Unicode string. Even with (the default) # ensure_ascii=True, dumps returns a Unicode string. if compat.PYTHON3: cmd = cmd.encode('ascii') self.transport.write(cmd + b"\n") class client(object): """ Handles the communication with the watchman service """ sockpath = None transport = None sendCodec = None recvCodec = None sendConn = None recvConn = None subs = {} # Keyed by subscription name sub_by_root = {} # Keyed by root, then by subscription name logs = [] # When log level is raised unilateral = ['log', 'subscription'] tport = None useImmutableBser = None def __init__(self, sockpath=None, timeout=1.0, transport=None, sendEncoding=None, recvEncoding=None, useImmutableBser=False, # use False for these two because None has a special # meaning valueEncoding=False, valueErrors=False, binpath='watchman'): self.sockpath = sockpath self.timeout = timeout self.useImmutableBser = useImmutableBser self.binpath = binpath if inspect.isclass(transport) and issubclass(transport, Transport): self.transport = transport else: transport = transport or os.getenv('WATCHMAN_TRANSPORT') or 'local' if transport == 'local' and os.name == 'nt': self.transport = WindowsNamedPipeTransport elif transport == 'local': self.transport = UnixSocketTransport elif transport == 'cli': self.transport = CLIProcessTransport if sendEncoding is None: sendEncoding = 'json' if recvEncoding is None: recvEncoding = sendEncoding else: raise WatchmanError('invalid transport %s' % transport) sendEncoding = str(sendEncoding or os.getenv('WATCHMAN_ENCODING') or 'bser') recvEncoding = str(recvEncoding or os.getenv('WATCHMAN_ENCODING') or 'bser') self.recvCodec = self._parseEncoding(recvEncoding) self.sendCodec = self._parseEncoding(sendEncoding) # We want to act like the native OS methods as much as possible. This # means returning bytestrings on Python 2 by default and Unicode # strings on Python 3. However we take an optional argument that lets # users override this. if valueEncoding is False: if compat.PYTHON3: self.valueEncoding = encoding.get_local_encoding() self.valueErrors = encoding.default_local_errors else: self.valueEncoding = None self.valueErrors = None else: self.valueEncoding = valueEncoding if valueErrors is False: self.valueErrors = encoding.default_local_errors else: self.valueErrors = valueErrors def _makeBSERCodec(self, codec): def make_codec(transport): return codec(transport, self.valueEncoding, self.valueErrors) return make_codec def _parseEncoding(self, enc): if enc == 'bser': if self.useImmutableBser: return self._makeBSERCodec(ImmutableBser2Codec) return self._makeBSERCodec(Bser2WithFallbackCodec) elif enc == 'bser-v1': if compat.PYTHON3: raise BSERv1Unsupported( 'Python 3 does not support the BSER v1 encoding: specify ' '"bser" or omit the sendEncoding and recvEncoding ' 'arguments') if self.useImmutableBser: return self._makeBSERCodec(ImmutableBserCodec) return self._makeBSERCodec(BserCodec) elif enc == 'json': return JsonCodec else: raise WatchmanError('invalid encoding %s' % enc) def _hasprop(self, result, name): if self.useImmutableBser: return hasattr(result, name) return name in result def _resolvesockname(self): # if invoked via a trigger, watchman will set this env var; we # should use it unless explicitly set otherwise path = os.getenv('WATCHMAN_SOCK') if path: return path cmd = [self.binpath, '--output-encoding=bser', 'get-sockname'] try: args = dict(stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=os.name != 'nt') if os.name == 'nt': # if invoked via an application with graphical user interface, # this call will cause a brief command window pop-up. # Using the flag STARTF_USESHOWWINDOW to avoid this behavior. startupinfo = subprocess.STARTUPINFO() startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW args['startupinfo'] = startupinfo p = subprocess.Popen(cmd, **args) except OSError as e: raise WatchmanError('"watchman" executable not in PATH (%s)', e) stdout, stderr = p.communicate() exitcode = p.poll() if exitcode: raise WatchmanError("watchman exited with code %d" % exitcode) result = bser.loads(stdout) if 'error' in result: raise WatchmanError('get-sockname error: %s' % result['error']) return result['sockname'] def _connect(self): """ establish transport connection """ if self.recvConn: return if self.sockpath is None: self.sockpath = self._resolvesockname() kwargs = {} if self.transport == CLIProcessTransport: kwargs['binpath'] = self.binpath self.tport = self.transport(self.sockpath, self.timeout, **kwargs) self.sendConn = self.sendCodec(self.tport) self.recvConn = self.recvCodec(self.tport) def __del__(self): self.close() def __enter__(self): self._connect() return self def __exit__(self, exc_type, exc_value, exc_traceback): self.close() def close(self): if self.tport: self.tport.close() self.tport = None self.recvConn = None self.sendConn = None def receive(self): """ receive the next PDU from the watchman service If the client has activated subscriptions or logs then this PDU may be a unilateral PDU sent by the service to inform the client of a log event or subscription change. It may also simply be the response portion of a request initiated by query. There are clients in production that subscribe and call this in a loop to retrieve all subscription responses, so care should be taken when making changes here. """ self._connect() result = self.recvConn.receive() if self._hasprop(result, 'error'): raise CommandError(result['error']) if self._hasprop(result, 'log'): self.logs.append(result['log']) if self._hasprop(result, 'subscription'): sub = result['subscription'] if not (sub in self.subs): self.subs[sub] = [] self.subs[sub].append(result) # also accumulate in {root,sub} keyed store root = os.path.normpath(os.path.normcase(result['root'])) if not root in self.sub_by_root: self.sub_by_root[root] = {} if not sub in self.sub_by_root[root]: self.sub_by_root[root][sub] = [] self.sub_by_root[root][sub].append(result) return result def isUnilateralResponse(self, res): if 'unilateral' in res and res['unilateral']: return True # Fall back to checking for known unilateral responses for k in self.unilateral: if k in res: return True return False def getLog(self, remove=True): """ Retrieve buffered log data If remove is true the data will be removed from the buffer. Otherwise it will be left in the buffer """ res = self.logs if remove: self.logs = [] return res def getSubscription(self, name, remove=True, root=None): """ Retrieve the data associated with a named subscription If remove is True (the default), the subscription data is removed from the buffer. Otherwise the data is returned but left in the buffer. Returns None if there is no data associated with `name` If root is not None, then only return the subscription data that matches both root and name. When used in this way, remove processing impacts both the unscoped and scoped stores for the subscription data. """ if root is not None: root = os.path.normpath(os.path.normcase(root)) if root not in self.sub_by_root: return None if name not in self.sub_by_root[root]: return None sub = self.sub_by_root[root][name] if remove: del self.sub_by_root[root][name] # don't let this grow unbounded if name in self.subs: del self.subs[name] return sub if name not in self.subs: return None sub = self.subs[name] if remove: del self.subs[name] return sub def query(self, *args): """ Send a query to the watchman service and return the response This call will block until the response is returned. If any unilateral responses are sent by the service in between the request-response they will be buffered up in the client object and NOT returned via this method. """ log('calling client.query') self._connect() try: self.sendConn.send(args) res = self.receive() while self.isUnilateralResponse(res): res = self.receive() return res except EnvironmentError as ee: # When we can depend on Python 3, we can use PEP 3134 # exception chaining here. raise WatchmanEnvironmentError( 'I/O error communicating with watchman daemon', ee.errno, ee.strerror, args) except WatchmanError as ex: ex.setCommand(args) raise def capabilityCheck(self, optional=None, required=None): """ Perform a server capability check """ res = self.query('version', { 'optional': optional or [], 'required': required or [] }) if not self._hasprop(res, 'capabilities'): # Server doesn't support capabilities, so we need to # synthesize the results based on the version capabilities.synthesize(res, optional) if 'error' in res: raise CommandError(res['error']) return res def setTimeout(self, value): self.recvConn.setTimeout(value) self.sendConn.setTimeout(value) watchman-4.9.0/python/pywatchman/bser.c000066400000000000000000000747301314236077500201440ustar00rootroot00000000000000/* Copyright (c) 2013-2015, Facebook, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name Facebook nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #ifdef _MSC_VER #define inline __inline #if _MSC_VER >= 1800 #include #else // The compiler associated with Python 2.7 on Windows doesn't ship // with stdint.h, so define the small subset that we use here. typedef __int8 int8_t; typedef __int16 int16_t; typedef __int32 int32_t; typedef __int64 int64_t; typedef unsigned __int8 uint8_t; typedef unsigned __int16 uint16_t; typedef unsigned __int32 uint32_t; typedef unsigned __int64 uint64_t; #define UINT32_MAX 4294967295U #endif #endif // clang-format off /* Return the smallest size int that can store the value */ #define INT_SIZE(x) (((x) == ((int8_t)x)) ? 1 : \ ((x) == ((int16_t)x)) ? 2 : \ ((x) == ((int32_t)x)) ? 4 : 8) #define BSER_ARRAY 0x00 #define BSER_OBJECT 0x01 #define BSER_BYTESTRING 0x02 #define BSER_INT8 0x03 #define BSER_INT16 0x04 #define BSER_INT32 0x05 #define BSER_INT64 0x06 #define BSER_REAL 0x07 #define BSER_TRUE 0x08 #define BSER_FALSE 0x09 #define BSER_NULL 0x0a #define BSER_TEMPLATE 0x0b #define BSER_SKIP 0x0c #define BSER_UTF8STRING 0x0d // clang-format on // An immutable object representation of BSER_OBJECT. // Rather than build a hash table, key -> value are obtained // by walking the list of keys to determine the offset into // the values array. The assumption is that the number of // array elements will be typically small (~6 for the top // level query result and typically 3-5 for the file entries) // so that the time overhead for this is small compared to // using a proper hash table. Even with this simplistic // approach, this is still faster for the mercurial use case // as it helps to eliminate creating N other objects to // represent the stat information in the hgwatchman extension // clang-format off typedef struct { PyObject_HEAD PyObject *keys; // tuple of field names PyObject *values; // tuple of values } bserObject; // clang-format on static Py_ssize_t bserobj_tuple_length(PyObject* o) { bserObject* obj = (bserObject*)o; return PySequence_Length(obj->keys); } static PyObject* bserobj_tuple_item(PyObject* o, Py_ssize_t i) { bserObject* obj = (bserObject*)o; return PySequence_GetItem(obj->values, i); } // clang-format off static PySequenceMethods bserobj_sq = { bserobj_tuple_length, /* sq_length */ 0, /* sq_concat */ 0, /* sq_repeat */ bserobj_tuple_item, /* sq_item */ 0, /* sq_ass_item */ 0, /* sq_contains */ 0, /* sq_inplace_concat */ 0 /* sq_inplace_repeat */ }; // clang-format on static void bserobj_dealloc(PyObject* o) { bserObject* obj = (bserObject*)o; Py_CLEAR(obj->keys); Py_CLEAR(obj->values); PyObject_Del(o); } static PyObject* bserobj_getattrro(PyObject* o, PyObject* name) { bserObject* obj = (bserObject*)o; Py_ssize_t i, n; PyObject* name_bytes = NULL; PyObject* ret = NULL; const char* namestr; if (PyIndex_Check(name)) { i = PyNumber_AsSsize_t(name, PyExc_IndexError); if (i == -1 && PyErr_Occurred()) { goto bail; } ret = PySequence_GetItem(obj->values, i); goto bail; } // We can be passed in Unicode objects here -- we don't support anything other // than UTF-8 for keys. if (PyUnicode_Check(name)) { name_bytes = PyUnicode_AsUTF8String(name); if (name_bytes == NULL) { goto bail; } namestr = PyBytes_AsString(name_bytes); } else { namestr = PyBytes_AsString(name); } if (namestr == NULL) { goto bail; } // hack^Wfeature to allow mercurial to use "st_size" to reference "size" if (!strncmp(namestr, "st_", 3)) { namestr += 3; } n = PyTuple_GET_SIZE(obj->keys); for (i = 0; i < n; i++) { const char* item_name = NULL; PyObject* key = PyTuple_GET_ITEM(obj->keys, i); item_name = PyBytes_AsString(key); if (!strcmp(item_name, namestr)) { ret = PySequence_GetItem(obj->values, i); goto bail; } } PyErr_Format( PyExc_AttributeError, "bserobject has no attribute '%.400s'", namestr); bail: Py_XDECREF(name_bytes); return ret; } // clang-format off static PyMappingMethods bserobj_map = { bserobj_tuple_length, /* mp_length */ bserobj_getattrro, /* mp_subscript */ 0 /* mp_ass_subscript */ }; PyTypeObject bserObjectType = { PyVarObject_HEAD_INIT(NULL, 0) "bserobj_tuple", /* tp_name */ sizeof(bserObject), /* tp_basicsize */ 0, /* tp_itemsize */ bserobj_dealloc, /* tp_dealloc */ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ 0, /* tp_compare */ 0, /* tp_repr */ 0, /* tp_as_number */ &bserobj_sq, /* tp_as_sequence */ &bserobj_map, /* tp_as_mapping */ 0, /* tp_hash */ 0, /* tp_call */ 0, /* tp_str */ bserobj_getattrro, /* tp_getattro */ 0, /* tp_setattro */ 0, /* tp_as_buffer */ Py_TPFLAGS_DEFAULT, /* tp_flags */ "bserobj tuple", /* tp_doc */ 0, /* tp_traverse */ 0, /* tp_clear */ 0, /* tp_richcompare */ 0, /* tp_weaklistoffset */ 0, /* tp_iter */ 0, /* tp_iternext */ 0, /* tp_methods */ 0, /* tp_members */ 0, /* tp_getset */ 0, /* tp_base */ 0, /* tp_dict */ 0, /* tp_descr_get */ 0, /* tp_descr_set */ 0, /* tp_dictoffset */ 0, /* tp_init */ 0, /* tp_alloc */ 0, /* tp_new */ }; // clang-format on typedef struct loads_ctx { int mutable; const char* value_encoding; const char* value_errors; uint32_t bser_version; uint32_t bser_capabilities; } unser_ctx_t; static PyObject* bser_loads_recursive(const char** ptr, const char* end, const unser_ctx_t* ctx); static const char bser_true = BSER_TRUE; static const char bser_false = BSER_FALSE; static const char bser_null = BSER_NULL; static const char bser_bytestring_hdr = BSER_BYTESTRING; static const char bser_array_hdr = BSER_ARRAY; static const char bser_object_hdr = BSER_OBJECT; static inline uint32_t next_power_2(uint32_t n) { n |= (n >> 16); n |= (n >> 8); n |= (n >> 4); n |= (n >> 2); n |= (n >> 1); return n + 1; } // A buffer we use for building up the serialized result struct bser_buffer { char* buf; int wpos, allocd; uint32_t bser_version; uint32_t capabilities; }; typedef struct bser_buffer bser_t; static int bser_append(bser_t* bser, const char* data, uint32_t len) { int newlen = next_power_2(bser->wpos + len); if (newlen > bser->allocd) { char* nbuf = realloc(bser->buf, newlen); if (!nbuf) { return 0; } bser->buf = nbuf; bser->allocd = newlen; } memcpy(bser->buf + bser->wpos, data, len); bser->wpos += len; return 1; } static int bser_init(bser_t* bser, uint32_t version, uint32_t capabilities) { bser->allocd = 8192; bser->wpos = 0; bser->buf = malloc(bser->allocd); bser->bser_version = version; bser->capabilities = capabilities; if (!bser->buf) { return 0; } // Leave room for the serialization header, which includes // our overall length. To make things simpler, we'll use an // int32 for the header #define EMPTY_HEADER "\x00\x01\x05\x00\x00\x00\x00" // Version 2 also carries an integer indicating the capabilities. The // capabilities integer comes before the PDU size. #define EMPTY_HEADER_V2 "\x00\x02\x00\x00\x00\x00\x05\x00\x00\x00\x00" if (version == 2) { bser_append(bser, EMPTY_HEADER_V2, sizeof(EMPTY_HEADER_V2) - 1); } else { bser_append(bser, EMPTY_HEADER, sizeof(EMPTY_HEADER) - 1); } return 1; } static void bser_dtor(bser_t* bser) { free(bser->buf); bser->buf = NULL; } static int bser_long(bser_t* bser, int64_t val) { int8_t i8; int16_t i16; int32_t i32; int64_t i64; char sz; int size = INT_SIZE(val); char* iptr; switch (size) { case 1: sz = BSER_INT8; i8 = (int8_t)val; iptr = (char*)&i8; break; case 2: sz = BSER_INT16; i16 = (int16_t)val; iptr = (char*)&i16; break; case 4: sz = BSER_INT32; i32 = (int32_t)val; iptr = (char*)&i32; break; case 8: sz = BSER_INT64; i64 = (int64_t)val; iptr = (char*)&i64; break; default: PyErr_SetString(PyExc_RuntimeError, "Cannot represent this long value!?"); return 0; } if (!bser_append(bser, &sz, sizeof(sz))) { return 0; } return bser_append(bser, iptr, size); } static int bser_bytestring(bser_t* bser, PyObject* sval) { char* buf = NULL; Py_ssize_t len; int res; PyObject* utf = NULL; if (PyUnicode_Check(sval)) { utf = PyUnicode_AsEncodedString(sval, "utf-8", "ignore"); sval = utf; } res = PyBytes_AsStringAndSize(sval, &buf, &len); if (res == -1) { res = 0; goto out; } if (!bser_append(bser, &bser_bytestring_hdr, sizeof(bser_bytestring_hdr))) { res = 0; goto out; } if (!bser_long(bser, len)) { res = 0; goto out; } if (len > UINT32_MAX) { PyErr_Format(PyExc_ValueError, "string too big"); res = 0; goto out; } res = bser_append(bser, buf, (uint32_t)len); out: if (utf) { Py_DECREF(utf); } return res; } static int bser_recursive(bser_t* bser, PyObject* val) { if (PyBool_Check(val)) { if (val == Py_True) { return bser_append(bser, &bser_true, sizeof(bser_true)); } return bser_append(bser, &bser_false, sizeof(bser_false)); } if (val == Py_None) { return bser_append(bser, &bser_null, sizeof(bser_null)); } // Python 3 has one integer type. #if PY_MAJOR_VERSION < 3 if (PyInt_Check(val)) { return bser_long(bser, PyInt_AS_LONG(val)); } #endif // PY_MAJOR_VERSION < 3 if (PyLong_Check(val)) { return bser_long(bser, PyLong_AsLongLong(val)); } if (PyBytes_Check(val) || PyUnicode_Check(val)) { return bser_bytestring(bser, val); } if (PyFloat_Check(val)) { double dval = PyFloat_AS_DOUBLE(val); char sz = BSER_REAL; if (!bser_append(bser, &sz, sizeof(sz))) { return 0; } return bser_append(bser, (char*)&dval, sizeof(dval)); } if (PyList_Check(val)) { Py_ssize_t i, len = PyList_GET_SIZE(val); if (!bser_append(bser, &bser_array_hdr, sizeof(bser_array_hdr))) { return 0; } if (!bser_long(bser, len)) { return 0; } for (i = 0; i < len; i++) { PyObject* ele = PyList_GET_ITEM(val, i); if (!bser_recursive(bser, ele)) { return 0; } } return 1; } if (PyTuple_Check(val)) { Py_ssize_t i, len = PyTuple_GET_SIZE(val); if (!bser_append(bser, &bser_array_hdr, sizeof(bser_array_hdr))) { return 0; } if (!bser_long(bser, len)) { return 0; } for (i = 0; i < len; i++) { PyObject* ele = PyTuple_GET_ITEM(val, i); if (!bser_recursive(bser, ele)) { return 0; } } return 1; } if (PyMapping_Check(val)) { Py_ssize_t len = PyMapping_Length(val); Py_ssize_t pos = 0; PyObject *key, *ele; if (!bser_append(bser, &bser_object_hdr, sizeof(bser_object_hdr))) { return 0; } if (!bser_long(bser, len)) { return 0; } while (PyDict_Next(val, &pos, &key, &ele)) { if (!bser_bytestring(bser, key)) { return 0; } if (!bser_recursive(bser, ele)) { return 0; } } return 1; } PyErr_SetString(PyExc_ValueError, "Unsupported value type"); return 0; } static PyObject* bser_dumps(PyObject* self, PyObject* args, PyObject* kw) { PyObject *val = NULL, *res; bser_t bser; uint32_t len, bser_version = 1, bser_capabilities = 0; static char* kw_list[] = {"val", "version", "capabilities", NULL}; if (!PyArg_ParseTupleAndKeywords( args, kw, "O|ii:dumps", kw_list, &val, &bser_version, &bser_capabilities)) { return NULL; } if (!bser_init(&bser, bser_version, bser_capabilities)) { return PyErr_NoMemory(); } if (!bser_recursive(&bser, val)) { bser_dtor(&bser); if (errno == ENOMEM) { return PyErr_NoMemory(); } // otherwise, we've already set the error to something reasonable return NULL; } // Now fill in the overall length if (bser_version == 1) { len = bser.wpos - (sizeof(EMPTY_HEADER) - 1); memcpy(bser.buf + 3, &len, sizeof(len)); } else { len = bser.wpos - (sizeof(EMPTY_HEADER_V2) - 1); // The BSER capabilities block comes before the PDU length memcpy(bser.buf + 2, &bser_capabilities, sizeof(bser_capabilities)); memcpy(bser.buf + 7, &len, sizeof(len)); } res = PyBytes_FromStringAndSize(bser.buf, bser.wpos); bser_dtor(&bser); return res; } int bunser_int(const char** ptr, const char* end, int64_t* val) { int needed; const char* buf = *ptr; int8_t i8; int16_t i16; int32_t i32; int64_t i64; switch (buf[0]) { case BSER_INT8: needed = 2; break; case BSER_INT16: needed = 3; break; case BSER_INT32: needed = 5; break; case BSER_INT64: needed = 9; break; default: PyErr_Format( PyExc_ValueError, "invalid bser int encoding 0x%02x", buf[0]); return 0; } if (end - buf < needed) { PyErr_SetString(PyExc_ValueError, "input buffer to small for int encoding"); return 0; } *ptr = buf + needed; switch (buf[0]) { case BSER_INT8: memcpy(&i8, buf + 1, sizeof(i8)); *val = i8; return 1; case BSER_INT16: memcpy(&i16, buf + 1, sizeof(i16)); *val = i16; return 1; case BSER_INT32: memcpy(&i32, buf + 1, sizeof(i32)); *val = i32; return 1; case BSER_INT64: memcpy(&i64, buf + 1, sizeof(i64)); *val = i64; return 1; default: return 0; } } static int bunser_bytestring( const char** ptr, const char* end, const char** start, int64_t* len) { const char* buf = *ptr; // skip string marker buf++; if (!bunser_int(&buf, end, len)) { return 0; } if (buf + *len > end) { PyErr_Format(PyExc_ValueError, "invalid string length in bser data"); return 0; } *ptr = buf + *len; *start = buf; return 1; } static PyObject* bunser_array(const char** ptr, const char* end, const unser_ctx_t* ctx) { const char* buf = *ptr; int64_t nitems, i; int mutable = ctx->mutable; PyObject* res; // skip array header buf++; if (!bunser_int(&buf, end, &nitems)) { return 0; } *ptr = buf; if (nitems > LONG_MAX) { PyErr_Format(PyExc_ValueError, "too many items for python array"); return NULL; } if (mutable) { res = PyList_New((Py_ssize_t)nitems); } else { res = PyTuple_New((Py_ssize_t)nitems); } for (i = 0; i < nitems; i++) { PyObject* ele = bser_loads_recursive(ptr, end, ctx); if (!ele) { Py_DECREF(res); return NULL; } if (mutable) { PyList_SET_ITEM(res, i, ele); } else { PyTuple_SET_ITEM(res, i, ele); } // DECREF(ele) not required as SET_ITEM steals the ref } return res; } static PyObject* bunser_object(const char** ptr, const char* end, const unser_ctx_t* ctx) { const char* buf = *ptr; int64_t nitems, i; int mutable = ctx->mutable; PyObject* res; bserObject* obj; // skip array header buf++; if (!bunser_int(&buf, end, &nitems)) { return 0; } *ptr = buf; if (mutable) { res = PyDict_New(); } else { obj = PyObject_New(bserObject, &bserObjectType); obj->keys = PyTuple_New((Py_ssize_t)nitems); obj->values = PyTuple_New((Py_ssize_t)nitems); res = (PyObject*)obj; } for (i = 0; i < nitems; i++) { const char* keystr; int64_t keylen; PyObject* key; PyObject* ele; if (!bunser_bytestring(ptr, end, &keystr, &keylen)) { Py_DECREF(res); return NULL; } if (keylen > LONG_MAX) { PyErr_Format(PyExc_ValueError, "string too big for python"); Py_DECREF(res); return NULL; } if (mutable) { // This will interpret the key as UTF-8. key = PyUnicode_FromStringAndSize(keystr, (Py_ssize_t)keylen); } else { // For immutable objects we'll manage key lookups, so we can avoid going // through the Unicode APIs. This avoids a potentially expensive and // definitely unnecessary conversion to UTF-16 and back for Python 2. // TODO: On Python 3 the Unicode APIs are smarter: we might be able to use // Unicode keys there without an appreciable performance loss. key = PyBytes_FromStringAndSize(keystr, (Py_ssize_t)keylen); } if (!key) { Py_DECREF(res); return NULL; } ele = bser_loads_recursive(ptr, end, ctx); if (!ele) { Py_DECREF(key); Py_DECREF(res); return NULL; } if (mutable) { PyDict_SetItem(res, key, ele); Py_DECREF(key); Py_DECREF(ele); } else { /* PyTuple_SET_ITEM steals ele, key */ PyTuple_SET_ITEM(obj->values, i, ele); PyTuple_SET_ITEM(obj->keys, i, key); } } return res; } static PyObject* bunser_template(const char** ptr, const char* end, const unser_ctx_t* ctx) { const char* buf = *ptr; int64_t nitems, i; int mutable = ctx->mutable; PyObject* arrval; PyObject* keys; Py_ssize_t numkeys, keyidx; unser_ctx_t keys_ctx = {0}; if (mutable) { keys_ctx.mutable = 1; // Decode keys as UTF-8 in this case. keys_ctx.value_encoding = "utf-8"; keys_ctx.value_errors = "strict"; } else { // Treat keys as bytestrings in this case -- we'll do Unicode conversions at // lookup time. } if (buf[1] != BSER_ARRAY) { PyErr_Format(PyExc_ValueError, "Expect ARRAY to follow TEMPLATE"); return NULL; } // skip header buf++; *ptr = buf; // Load template keys. // For keys we don't want to do any decoding right now. keys = bunser_array(ptr, end, &keys_ctx); if (!keys) { return NULL; } numkeys = PySequence_Length(keys); // Load number of array elements if (!bunser_int(ptr, end, &nitems)) { Py_DECREF(keys); return 0; } if (nitems > LONG_MAX) { PyErr_Format(PyExc_ValueError, "Too many items for python"); Py_DECREF(keys); return NULL; } arrval = PyList_New((Py_ssize_t)nitems); if (!arrval) { Py_DECREF(keys); return NULL; } for (i = 0; i < nitems; i++) { PyObject* dict = NULL; bserObject* obj = NULL; if (mutable) { dict = PyDict_New(); } else { obj = PyObject_New(bserObject, &bserObjectType); if (obj) { obj->keys = keys; Py_INCREF(obj->keys); obj->values = PyTuple_New(numkeys); } dict = (PyObject*)obj; } if (!dict) { fail: Py_DECREF(keys); Py_DECREF(arrval); return NULL; } for (keyidx = 0; keyidx < numkeys; keyidx++) { PyObject* key; PyObject* ele; if (**ptr == BSER_SKIP) { *ptr = *ptr + 1; ele = Py_None; Py_INCREF(ele); } else { ele = bser_loads_recursive(ptr, end, ctx); } if (!ele) { goto fail; } if (mutable) { key = PyList_GET_ITEM(keys, keyidx); PyDict_SetItem(dict, key, ele); Py_DECREF(ele); } else { PyTuple_SET_ITEM(obj->values, keyidx, ele); // DECREF(ele) not required as SET_ITEM steals the ref } } PyList_SET_ITEM(arrval, i, dict); // DECREF(obj) not required as SET_ITEM steals the ref } Py_DECREF(keys); return arrval; } static PyObject* bser_loads_recursive( const char** ptr, const char* end, const unser_ctx_t* ctx) { const char* buf = *ptr; switch (buf[0]) { case BSER_INT8: case BSER_INT16: case BSER_INT32: case BSER_INT64: { int64_t ival; if (!bunser_int(ptr, end, &ival)) { return NULL; } // Python 3 has one integer type. #if PY_MAJOR_VERSION >= 3 return PyLong_FromLongLong(ival); #else if (ival < LONG_MIN || ival > LONG_MAX) { return PyLong_FromLongLong(ival); } return PyInt_FromSsize_t(Py_SAFE_DOWNCAST(ival, int64_t, Py_ssize_t)); #endif // PY_MAJOR_VERSION >= 3 } case BSER_REAL: { double dval; memcpy(&dval, buf + 1, sizeof(dval)); *ptr = buf + 1 + sizeof(double); return PyFloat_FromDouble(dval); } case BSER_TRUE: *ptr = buf + 1; Py_INCREF(Py_True); return Py_True; case BSER_FALSE: *ptr = buf + 1; Py_INCREF(Py_False); return Py_False; case BSER_NULL: *ptr = buf + 1; Py_INCREF(Py_None); return Py_None; case BSER_BYTESTRING: { const char* start; int64_t len; if (!bunser_bytestring(ptr, end, &start, &len)) { return NULL; } if (len > LONG_MAX) { PyErr_Format(PyExc_ValueError, "string too long for python"); return NULL; } if (ctx->value_encoding != NULL) { return PyUnicode_Decode( start, (long)len, ctx->value_encoding, ctx->value_errors); } else { return PyBytes_FromStringAndSize(start, (long)len); } } case BSER_UTF8STRING: { const char* start; int64_t len; if (!bunser_bytestring(ptr, end, &start, &len)) { return NULL; } if (len > LONG_MAX) { PyErr_Format(PyExc_ValueError, "string too long for python"); return NULL; } return PyUnicode_Decode(start, (long)len, "utf-8", "strict"); } case BSER_ARRAY: return bunser_array(ptr, end, ctx); case BSER_OBJECT: return bunser_object(ptr, end, ctx); case BSER_TEMPLATE: return bunser_template(ptr, end, ctx); default: PyErr_Format(PyExc_ValueError, "unhandled bser opcode 0x%02x", buf[0]); } return NULL; } static int _pdu_info_helper( const char* data, const char* end, uint32_t* bser_version_out, uint32_t* bser_capabilities_out, int64_t* expected_len_out, off_t* position_out) { uint32_t bser_version; uint32_t bser_capabilities = 0; int64_t expected_len; const char* start; start = data; // Validate the header and length if (memcmp(data, EMPTY_HEADER, 2) == 0) { bser_version = 1; } else if (memcmp(data, EMPTY_HEADER_V2, 2) == 0) { bser_version = 2; } else { PyErr_SetString(PyExc_ValueError, "invalid bser header"); return 0; } data += 2; if (bser_version == 2) { // Expect an integer telling us what capabilities are supported by the // remote server (currently unused). if (!memcpy(&bser_capabilities, &data, sizeof(bser_capabilities))) { return 0; } data += sizeof(bser_capabilities); } // Expect an integer telling us how big the rest of the data // should be if (!bunser_int(&data, end, &expected_len)) { return 0; } *bser_version_out = bser_version; *bser_capabilities_out = (uint32_t)bser_capabilities; *expected_len_out = expected_len; *position_out = (off_t)(data - start); return 1; } // This function parses the PDU header and provides info about the packet // Returns false if unsuccessful static int pdu_info_helper( PyObject* self, PyObject* args, uint32_t* bser_version_out, uint32_t* bser_capabilities_out, int64_t* total_len_out) { const char* start = NULL; const char* data = NULL; int datalen = 0; const char* end; int64_t expected_len; off_t position; if (!PyArg_ParseTuple(args, "s#", &start, &datalen)) { return 0; } data = start; end = data + datalen; if (!_pdu_info_helper( data, end, bser_version_out, bser_capabilities_out, &expected_len, &position)) { return 0; } *total_len_out = (int64_t)(expected_len + position); return 1; } // Expected use case is to read a packet from the socket and then call // bser.pdu_info on the packet. It returns the BSER version, BSER capabilities, // and the total length of the entire response that the peer is sending, // including the bytes already received. This allows the client to compute the // data size it needs to read before it can decode the data. static PyObject* bser_pdu_info(PyObject* self, PyObject* args) { uint32_t version, capabilities; int64_t total_len; if (!pdu_info_helper(self, args, &version, &capabilities, &total_len)) { return NULL; } return Py_BuildValue("kkL", version, capabilities, total_len); } static PyObject* bser_pdu_len(PyObject* self, PyObject* args) { uint32_t version, capabilities; int64_t total_len; if (!pdu_info_helper(self, args, &version, &capabilities, &total_len)) { return NULL; } return Py_BuildValue("L", total_len); } static PyObject* bser_loads(PyObject* self, PyObject* args, PyObject* kw) { const char* data = NULL; int datalen = 0; const char* start; const char* end; int64_t expected_len; off_t position; PyObject* mutable_obj = NULL; const char* value_encoding = NULL; const char* value_errors = NULL; unser_ctx_t ctx = {1, 0}; static char* kw_list[] = { "buf", "mutable", "value_encoding", "value_errors", NULL}; if (!PyArg_ParseTupleAndKeywords( args, kw, "s#|Ozz:loads", kw_list, &start, &datalen, &mutable_obj, &value_encoding, &value_errors)) { return NULL; } if (mutable_obj) { ctx.mutable = PyObject_IsTrue(mutable_obj) > 0 ? 1 : 0; } ctx.value_encoding = value_encoding; if (value_encoding == NULL) { ctx.value_errors = NULL; } else if (value_errors == NULL) { ctx.value_errors = "strict"; } else { ctx.value_errors = value_errors; } data = start; end = data + datalen; if (!_pdu_info_helper( data, end, &ctx.bser_version, &ctx.bser_capabilities, &expected_len, &position)) { return NULL; } data = start + position; // Verify if (expected_len + data != end) { PyErr_SetString(PyExc_ValueError, "bser data len != header len"); return NULL; } return bser_loads_recursive(&data, end, &ctx); } static PyObject* bser_load(PyObject* self, PyObject* args, PyObject* kw) { PyObject* load; PyObject* load_method; PyObject* string; PyObject* load_method_args; PyObject* load_method_kwargs; PyObject* fp = NULL; PyObject* mutable_obj = NULL; PyObject* value_encoding = NULL; PyObject* value_errors = NULL; static char* kw_list[] = { "fp", "mutable", "value_encoding", "value_errors", NULL}; if (!PyArg_ParseTupleAndKeywords( args, kw, "O|OOO:load", kw_list, &fp, &mutable_obj, &value_encoding, &value_errors)) { return NULL; } load = PyImport_ImportModule("pywatchman.load"); if (load == NULL) { return NULL; } load_method = PyObject_GetAttrString(load, "load"); if (load_method == NULL) { return NULL; } // Mandatory method arguments load_method_args = Py_BuildValue("(O)", fp); if (load_method_args == NULL) { return NULL; } // Optional method arguments load_method_kwargs = PyDict_New(); if (load_method_kwargs == NULL) { return NULL; } if (mutable_obj) { PyDict_SetItemString(load_method_kwargs, "mutable", mutable_obj); } if (value_encoding) { PyDict_SetItemString(load_method_kwargs, "value_encoding", value_encoding); } if (value_errors) { PyDict_SetItemString(load_method_kwargs, "value_errors", value_errors); } string = PyObject_Call(load_method, load_method_args, load_method_kwargs); Py_DECREF(load_method_kwargs); Py_DECREF(load_method_args); Py_DECREF(load_method); Py_DECREF(load); return string; } // clang-format off static PyMethodDef bser_methods[] = { {"loads", (PyCFunction)bser_loads, METH_VARARGS | METH_KEYWORDS, "Deserialize string."}, {"load", (PyCFunction)bser_load, METH_VARARGS | METH_KEYWORDS, "Deserialize a file object"}, {"pdu_info", (PyCFunction)bser_pdu_info, METH_VARARGS, "Extract PDU information."}, {"pdu_len", (PyCFunction)bser_pdu_len, METH_VARARGS, "Extract total PDU length."}, {"dumps", (PyCFunction)bser_dumps, METH_VARARGS | METH_KEYWORDS, "Serialize string."}, {NULL, NULL, 0, NULL} }; #if PY_MAJOR_VERSION >= 3 static struct PyModuleDef bser_module = { PyModuleDef_HEAD_INIT, "bser", "Efficient encoding and decoding of BSER.", -1, bser_methods }; // clang-format on PyMODINIT_FUNC PyInit_bser(void) { PyObject* mod; mod = PyModule_Create(&bser_module); PyType_Ready(&bserObjectType); return mod; } #else PyMODINIT_FUNC initbser(void) { (void)Py_InitModule("bser", bser_methods); PyType_Ready(&bserObjectType); } #endif // PY_MAJOR_VERSION >= 3 /* vim:ts=2:sw=2:et: */ watchman-4.9.0/python/pywatchman/capabilities.py000066400000000000000000000053511314236077500220410ustar00rootroot00000000000000# Copyright 2015 Facebook, Inc. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. # # * Neither the name Facebook nor the names of its contributors may be used to # endorse or promote products derived from this software without specific # prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import re def parse_version(vstr): res = 0 for n in vstr.split('.'): res = res * 1000 res = res + int(n) return res cap_versions = { "cmd-watch-del-all": "3.1.1", "cmd-watch-project": "3.1", "relative_root": "3.3", "term-dirname": "3.1", "term-idirname": "3.1", "wildmatch": "3.7", } def check(version, name): if name in cap_versions: return version >= parse_version(cap_versions[name]) return False def synthesize(vers, opts): """ Synthesize a capability enabled version response This is a very limited emulation for relatively recent feature sets """ parsed_version = parse_version(vers['version']) vers['capabilities'] = {} for name in opts['optional']: vers['capabilities'][name] = check(parsed_version, name) failed = False for name in opts['required']: have = check(parsed_version, name) vers['capabilities'][name] = have if not have: vers['error'] = 'client required capability `' + name + \ '` is not supported by this server' return vers watchman-4.9.0/python/pywatchman/compat.py000066400000000000000000000045371314236077500207000ustar00rootroot00000000000000# Copyright 2016-present Facebook, Inc. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. # # * Neither the name Facebook nor the names of its contributors may be used to # endorse or promote products derived from this software without specific # prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals '''Compatibility module across Python 2 and 3.''' import sys PYTHON3 = sys.version_info >= (3, 0) # This is adapted from https://bitbucket.org/gutworth/six, and used under the # MIT license. See LICENSE for a full copyright notice. if PYTHON3: def reraise(tp, value, tb=None): try: if value is None: value = tp() if value.__traceback__ is not tb: raise value.with_traceback(tb) raise value finally: value = None tb = None else: exec(''' def reraise(tp, value, tb=None): try: raise tp, value, tb finally: tb = None '''.strip()) if PYTHON3: UNICODE = str else: UNICODE = unicode watchman-4.9.0/python/pywatchman/encoding.py000066400000000000000000000056151314236077500212010ustar00rootroot00000000000000# Copyright 2016-present Facebook, Inc. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. # # * Neither the name Facebook nor the names of its contributors may be used to # endorse or promote products derived from this software without specific # prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals '''Module to deal with filename encoding on the local system, as returned by Watchman.''' import sys from . import ( compat, ) if compat.PYTHON3: default_local_errors = 'surrogateescape' def get_local_encoding(): if sys.platform == 'win32': # Watchman always returns UTF-8 encoded strings on Windows. return 'utf-8' # On the Python 3 versions we support, sys.getfilesystemencoding never # returns None. return sys.getfilesystemencoding() else: # Python 2 doesn't support surrogateescape, so use 'strict' by # default. Users can register a custom surrogateescape error handler and use # that if they so desire. default_local_errors = 'strict' def get_local_encoding(): if sys.platform == 'win32': # Watchman always returns UTF-8 encoded strings on Windows. return 'utf-8' fsencoding = sys.getfilesystemencoding() if fsencoding is None: # This is very unlikely to happen, but if it does, just use UTF-8 fsencoding = 'utf-8' return fsencoding def encode_local(s): return s.encode(get_local_encoding(), default_local_errors) def decode_local(bs): return bs.decode(get_local_encoding(), default_local_errors) watchman-4.9.0/python/pywatchman/load.py000066400000000000000000000072711314236077500203320ustar00rootroot00000000000000# Copyright 2016 Facebook, Inc. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. # # * Neither the name Facebook nor the names of its contributors may be used to # endorse or promote products derived from this software without specific # prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals try: from . import bser except ImportError: from . import pybser as bser import ctypes EMPTY_HEADER = b"\x00\x01\x05\x00\x00\x00\x00" def _read_bytes(fp, buf): """Read bytes from a file-like object @param fp: File-like object that implements read(int) @type fp: file @param buf: Buffer to read into @type buf: bytes @return: buf """ # Do the first read without resizing the input buffer offset = 0 remaining = len(buf) while remaining > 0: l = fp.readinto((ctypes.c_char * remaining).from_buffer(buf, offset)) if l is None or l == 0: return offset offset += l remaining -= l return offset def load(fp, mutable=True, value_encoding=None, value_errors=None): """Deserialize a BSER-encoded blob. @param fp: The file-object to deserialize. @type file: @param mutable: Whether to return mutable results. @type mutable: bool @param value_encoding: Optional codec to use to decode values. If unspecified or None, return values as bytestrings. @type value_encoding: str @param value_errors: Optional error handler for codec. 'strict' by default. The other most common argument is 'surrogateescape' on Python 3. If value_encoding is None, this is ignored. @type value_errors: str """ buf = ctypes.create_string_buffer(8192) SNIFF_BUFFER_SIZE = len(EMPTY_HEADER) header = (ctypes.c_char * SNIFF_BUFFER_SIZE).from_buffer(buf) read_len = _read_bytes(fp, header) if read_len < len(header): return None total_len = bser.pdu_len(buf) if total_len > len(buf): ctypes.resize(buf, total_len) body = (ctypes.c_char * (total_len - len(header))).from_buffer( buf, len(header)) read_len = _read_bytes(fp, body) if read_len < len(body): raise RuntimeError('bser data ended early') return bser.loads( (ctypes.c_char * total_len).from_buffer(buf, 0), mutable, value_encoding, value_errors) watchman-4.9.0/python/pywatchman/pybser.py000066400000000000000000000411521314236077500207130ustar00rootroot00000000000000# Copyright 2015 Facebook, Inc. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. # # * Neither the name Facebook nor the names of its contributors may be used to # endorse or promote products derived from this software without specific # prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import binascii import collections import ctypes import struct import sys from . import ( compat, ) BSER_ARRAY = b'\x00' BSER_OBJECT = b'\x01' BSER_BYTESTRING = b'\x02' BSER_INT8 = b'\x03' BSER_INT16 = b'\x04' BSER_INT32 = b'\x05' BSER_INT64 = b'\x06' BSER_REAL = b'\x07' BSER_TRUE = b'\x08' BSER_FALSE = b'\x09' BSER_NULL = b'\x0a' BSER_TEMPLATE = b'\x0b' BSER_SKIP = b'\x0c' BSER_UTF8STRING = b'\x0d' if compat.PYTHON3: STRING_TYPES = (str, bytes) unicode = str def tobytes(i): return str(i).encode('ascii') long = int else: STRING_TYPES = (unicode, str) tobytes = bytes # Leave room for the serialization header, which includes # our overall length. To make things simpler, we'll use an # int32 for the header EMPTY_HEADER = b"\x00\x01\x05\x00\x00\x00\x00" EMPTY_HEADER_V2 = b"\x00\x02\x00\x00\x00\x00\x05\x00\x00\x00\x00" def _int_size(x): """Return the smallest size int that can store the value""" if -0x80 <= x <= 0x7F: return 1 elif -0x8000 <= x <= 0x7FFF: return 2 elif -0x80000000 <= x <= 0x7FFFFFFF: return 4 elif long(-0x8000000000000000) <= x <= long(0x7FFFFFFFFFFFFFFF): return 8 else: raise RuntimeError('Cannot represent value: ' + str(x)) def _buf_pos(buf, pos): ret = buf[pos] # In Python 2, buf is a str array so buf[pos] is a string. In Python 3, buf # is a bytes array and buf[pos] is an integer. if compat.PYTHON3: ret = bytes((ret,)) return ret class _bser_buffer(object): def __init__(self, version): self.bser_version = version self.buf = ctypes.create_string_buffer(8192) if self.bser_version == 1: struct.pack_into(tobytes(len(EMPTY_HEADER)) + b's', self.buf, 0, EMPTY_HEADER) self.wpos = len(EMPTY_HEADER) else: assert self.bser_version == 2 struct.pack_into(tobytes(len(EMPTY_HEADER_V2)) + b's', self.buf, 0, EMPTY_HEADER_V2) self.wpos = len(EMPTY_HEADER_V2) def ensure_size(self, size): while ctypes.sizeof(self.buf) - self.wpos < size: ctypes.resize(self.buf, ctypes.sizeof(self.buf) * 2) def append_long(self, val): size = _int_size(val) to_write = size + 1 self.ensure_size(to_write) if size == 1: struct.pack_into(b'=cb', self.buf, self.wpos, BSER_INT8, val) elif size == 2: struct.pack_into(b'=ch', self.buf, self.wpos, BSER_INT16, val) elif size == 4: struct.pack_into(b'=ci', self.buf, self.wpos, BSER_INT32, val) elif size == 8: struct.pack_into(b'=cq', self.buf, self.wpos, BSER_INT64, val) else: raise RuntimeError('Cannot represent this long value') self.wpos += to_write def append_string(self, s): if isinstance(s, unicode): s = s.encode('utf-8') s_len = len(s) size = _int_size(s_len) to_write = 2 + size + s_len self.ensure_size(to_write) if size == 1: struct.pack_into(b'=ccb' + tobytes(s_len) + b's', self.buf, self.wpos, BSER_BYTESTRING, BSER_INT8, s_len, s) elif size == 2: struct.pack_into(b'=cch' + tobytes(s_len) + b's', self.buf, self.wpos, BSER_BYTESTRING, BSER_INT16, s_len, s) elif size == 4: struct.pack_into(b'=cci' + tobytes(s_len) + b's', self.buf, self.wpos, BSER_BYTESTRING, BSER_INT32, s_len, s) elif size == 8: struct.pack_into(b'=ccq' + tobytes(s_len) + b's', self.buf, self.wpos, BSER_BYTESTRING, BSER_INT64, s_len, s) else: raise RuntimeError('Cannot represent this string value') self.wpos += to_write def append_recursive(self, val): if isinstance(val, bool): needed = 1 self.ensure_size(needed) if val: to_encode = BSER_TRUE else: to_encode = BSER_FALSE struct.pack_into(b'=c', self.buf, self.wpos, to_encode) self.wpos += needed elif val is None: needed = 1 self.ensure_size(needed) struct.pack_into(b'=c', self.buf, self.wpos, BSER_NULL) self.wpos += needed elif isinstance(val, (int, long)): self.append_long(val) elif isinstance(val, STRING_TYPES): self.append_string(val) elif isinstance(val, float): needed = 9 self.ensure_size(needed) struct.pack_into(b'=cd', self.buf, self.wpos, BSER_REAL, val) self.wpos += needed elif isinstance(val, collections.Mapping) and \ isinstance(val, collections.Sized): val_len = len(val) size = _int_size(val_len) needed = 2 + size self.ensure_size(needed) if size == 1: struct.pack_into(b'=ccb', self.buf, self.wpos, BSER_OBJECT, BSER_INT8, val_len) elif size == 2: struct.pack_into(b'=cch', self.buf, self.wpos, BSER_OBJECT, BSER_INT16, val_len) elif size == 4: struct.pack_into(b'=cci', self.buf, self.wpos, BSER_OBJECT, BSER_INT32, val_len) elif size == 8: struct.pack_into(b'=ccq', self.buf, self.wpos, BSER_OBJECT, BSER_INT64, val_len) else: raise RuntimeError('Cannot represent this mapping value') self.wpos += needed if compat.PYTHON3: iteritems = val.items() else: iteritems = val.iteritems() for k, v in iteritems: self.append_string(k) self.append_recursive(v) elif isinstance(val, collections.Iterable) and \ isinstance(val, collections.Sized): val_len = len(val) size = _int_size(val_len) needed = 2 + size self.ensure_size(needed) if size == 1: struct.pack_into(b'=ccb', self.buf, self.wpos, BSER_ARRAY, BSER_INT8, val_len) elif size == 2: struct.pack_into(b'=cch', self.buf, self.wpos, BSER_ARRAY, BSER_INT16, val_len) elif size == 4: struct.pack_into(b'=cci', self.buf, self.wpos, BSER_ARRAY, BSER_INT32, val_len) elif size == 8: struct.pack_into(b'=ccq', self.buf, self.wpos, BSER_ARRAY, BSER_INT64, val_len) else: raise RuntimeError('Cannot represent this sequence value') self.wpos += needed for v in val: self.append_recursive(v) else: raise RuntimeError('Cannot represent unknown value type') def dumps(obj, version=1, capabilities=0): bser_buf = _bser_buffer(version=version) bser_buf.append_recursive(obj) # Now fill in the overall length if version == 1: obj_len = bser_buf.wpos - len(EMPTY_HEADER) struct.pack_into(b'=i', bser_buf.buf, 3, obj_len) else: obj_len = bser_buf.wpos - len(EMPTY_HEADER_V2) struct.pack_into(b'=i', bser_buf.buf, 2, capabilities) struct.pack_into(b'=i', bser_buf.buf, 7, obj_len) return bser_buf.buf.raw[:bser_buf.wpos] # This is a quack-alike with the bserObjectType in bser.c # It provides by getattr accessors and getitem for both index # and name. class _BunserDict(object): __slots__ = ('_keys', '_values') def __init__(self, keys, values): self._keys = keys self._values = values def __getattr__(self, name): return self.__getitem__(name) def __getitem__(self, key): if isinstance(key, (int, long)): return self._values[key] elif key.startswith('st_'): # hack^Wfeature to allow mercurial to use "st_size" to # reference "size" key = key[3:] try: return self._values[self._keys.index(key)] except ValueError as ex: raise KeyError('_BunserDict has no key %s' % key) def __len__(self): return len(self._keys) class Bunser(object): def __init__(self, mutable=True, value_encoding=None, value_errors=None): self.mutable = mutable self.value_encoding = value_encoding if value_encoding is None: self.value_errors = None elif value_errors is None: self.value_errors = 'strict' else: self.value_errors = value_errors @staticmethod def unser_int(buf, pos): try: int_type = _buf_pos(buf, pos) except IndexError: raise ValueError('Invalid bser int encoding, pos out of range') if int_type == BSER_INT8: needed = 2 fmt = b'=b' elif int_type == BSER_INT16: needed = 3 fmt = b'=h' elif int_type == BSER_INT32: needed = 5 fmt = b'=i' elif int_type == BSER_INT64: needed = 9 fmt = b'=q' else: raise ValueError('Invalid bser int encoding 0x%s' % binascii.hexlify(int_type).decode('ascii')) int_val = struct.unpack_from(fmt, buf, pos + 1)[0] return (int_val, pos + needed) def unser_utf8_string(self, buf, pos): str_len, pos = self.unser_int(buf, pos + 1) str_val = struct.unpack_from(tobytes(str_len) + b's', buf, pos)[0] return (str_val.decode('utf-8'), pos + str_len) def unser_bytestring(self, buf, pos): str_len, pos = self.unser_int(buf, pos + 1) str_val = struct.unpack_from(tobytes(str_len) + b's', buf, pos)[0] if self.value_encoding is not None: str_val = str_val.decode(self.value_encoding, self.value_errors) # str_len stays the same because that's the length in bytes return (str_val, pos + str_len) def unser_array(self, buf, pos): arr_len, pos = self.unser_int(buf, pos + 1) arr = [] for i in range(arr_len): arr_item, pos = self.loads_recursive(buf, pos) arr.append(arr_item) if not self.mutable: arr = tuple(arr) return arr, pos def unser_object(self, buf, pos): obj_len, pos = self.unser_int(buf, pos + 1) if self.mutable: obj = {} else: keys = [] vals = [] for i in range(obj_len): key, pos = self.unser_utf8_string(buf, pos) val, pos = self.loads_recursive(buf, pos) if self.mutable: obj[key] = val else: keys.append(key) vals.append(val) if not self.mutable: obj = _BunserDict(keys, vals) return obj, pos def unser_template(self, buf, pos): val_type = _buf_pos(buf, pos + 1) if val_type != BSER_ARRAY: raise RuntimeError('Expect ARRAY to follow TEMPLATE') # force UTF-8 on keys keys_bunser = Bunser(mutable=self.mutable, value_encoding='utf-8') keys, pos = keys_bunser.unser_array(buf, pos + 1) nitems, pos = self.unser_int(buf, pos) arr = [] for i in range(nitems): if self.mutable: obj = {} else: vals = [] for keyidx in range(len(keys)): if _buf_pos(buf, pos) == BSER_SKIP: pos += 1 ele = None else: ele, pos = self.loads_recursive(buf, pos) if self.mutable: key = keys[keyidx] obj[key] = ele else: vals.append(ele) if not self.mutable: obj = _BunserDict(keys, vals) arr.append(obj) return arr, pos def loads_recursive(self, buf, pos): val_type = _buf_pos(buf, pos) if (val_type == BSER_INT8 or val_type == BSER_INT16 or val_type == BSER_INT32 or val_type == BSER_INT64): return self.unser_int(buf, pos) elif val_type == BSER_REAL: val = struct.unpack_from(b'=d', buf, pos + 1)[0] return (val, pos + 9) elif val_type == BSER_TRUE: return (True, pos + 1) elif val_type == BSER_FALSE: return (False, pos + 1) elif val_type == BSER_NULL: return (None, pos + 1) elif val_type == BSER_BYTESTRING: return self.unser_bytestring(buf, pos) elif val_type == BSER_UTF8STRING: return self.unser_utf8_string(buf, pos) elif val_type == BSER_ARRAY: return self.unser_array(buf, pos) elif val_type == BSER_OBJECT: return self.unser_object(buf, pos) elif val_type == BSER_TEMPLATE: return self.unser_template(buf, pos) else: raise ValueError('unhandled bser opcode 0x%s' % binascii.hexlify(val_type).decode('ascii')) def _pdu_info_helper(buf): bser_version = -1 if buf[0:2] == EMPTY_HEADER[0:2]: bser_version = 1 bser_capabilities = 0 expected_len, pos2 = Bunser.unser_int(buf, 2) elif buf[0:2] == EMPTY_HEADER_V2[0:2]: if len(buf) < 8: raise ValueError('Invalid BSER header') bser_version = 2 bser_capabilities = struct.unpack_from("I", buf, 2)[0] expected_len, pos2 = Bunser.unser_int(buf, 6) else: raise ValueError('Invalid BSER header') return bser_version, bser_capabilities, expected_len, pos2 def pdu_info(buf): info = _pdu_info_helper(buf) return info[0], info[1], info[2] + info[3] def pdu_len(buf): info = _pdu_info_helper(buf) return info[2] + info[3] def loads(buf, mutable=True, value_encoding=None, value_errors=None): """Deserialize a BSER-encoded blob. @param buf: The buffer to deserialize. @type buf: bytes @param mutable: Whether to return mutable results. @type mutable: bool @param value_encoding: Optional codec to use to decode values. If unspecified or None, return values as bytestrings. @type value_encoding: str @param value_errors: Optional error handler for codec. 'strict' by default. The other most common argument is 'surrogateescape' on Python 3. If value_encoding is None, this is ignored. @type value_errors: str """ info = _pdu_info_helper(buf) expected_len = info[2] pos = info[3] if len(buf) != expected_len + pos: raise ValueError('bser data len != header len') bunser = Bunser(mutable=mutable, value_encoding=value_encoding, value_errors=value_errors) return bunser.loads_recursive(buf, pos)[0] def load(fp, mutable=True, value_encoding=None, value_errors=None): from . import load return load.load(fp, mutable, value_encoding, value_errors) watchman-4.9.0/python/setup.py000077500000000000000000000027041314236077500163770ustar00rootroot00000000000000#!/usr/bin/env python # vim:ts=4:sw=4:et: try: from setuptools import setup, Extension except: from distutils.core import setup, Extension setup( name = 'pywatchman', version = '1.4.0', description = 'Watchman client for python', author = 'Wez Furlong, Siddharth Agarwal', author_email = 'wez@fb.com', maintainer = 'Wez Furlong', maintainer_email = 'wez@fb.com', url = 'https://github.com/facebook/watchman', long_description = 'Connect and query Watchman to discover file changes', keywords = ( 'watchman inotify fsevents kevent kqueue portfs filesystem watcher' ), license = 'BSD', packages = ['pywatchman'], ext_modules = [ Extension('pywatchman.bser', sources = ['pywatchman/bser.c']) ], platforms = 'Platform Independent', classifiers = [ 'Development Status :: 5 - Production/Stable', 'Intended Audience :: Developers', 'Topic :: System :: Filesystems', 'License :: OSI Approved :: BSD License', 'Operating System :: OS Independent', 'Programming Language :: Python :: 2', 'Programming Language :: Python :: 2.6', 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3', 'Programming Language :: Python :: 3.5', 'Programming Language :: Python :: 3.6', ], zip_safe = True, scripts=['bin/watchman-wait', 'bin/watchman-make'], test_suite = 'tests', ) watchman-4.9.0/python/tests/000077500000000000000000000000001314236077500160215ustar00rootroot00000000000000watchman-4.9.0/python/tests/TARGETS000066400000000000000000000002531314236077500170550ustar00rootroot00000000000000python_unittest( name = "tests", srcs = glob(["*.py"]), base_module = "python/tests", deps = [ "@/watchman/python/pywatchman:pywatchman", ], ) watchman-4.9.0/python/tests/__init__.py000066400000000000000000000000001314236077500201200ustar00rootroot00000000000000watchman-4.9.0/python/tests/tests.py000077500000000000000000000275741314236077500175570ustar00rootroot00000000000000#!/usr/bin/env python # vim:ts=4:sw=4:et: from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import binascii import collections import inspect try: import unittest2 as unittest except ImportError: import unittest import os import sys from pywatchman import ( bser, compat, client, pybser, load, SocketTimeout, Transport, WatchmanError, ) PILE_OF_POO = u"\U0001F4A9" NON_UTF8_STRING = b'\xff\xff\xff' class TestSocketTimeout(unittest.TestCase): def test_exception_handling(self): try: raise SocketTimeout('should not raise') except WatchmanError: pass class TestTransportErrorHandling(unittest.TestCase): def test_transport_error(self): buf = '{"foo":"bar"}' failAfterBytesRead = 5 class FakeFailingTransport(Transport): def __init__(self, sockpath, timeout): self.readBuf = buf self.readBufPos = 0 self.writeBuf = [] self.closed = False def close(self): self.closed = True def readBytes(self, size): readEnd = self.readBufPos + size if readEnd > failAfterBytesRead: raise IOError(23, 'fnord') elif readEnd > len(self.readBuf): return '' read = self.readBuf[self.readBufPos:self.readBufPos + size] self.readBufPos += size return read def write(self, buf): self.writeBuf.extend(buf) c = client( sockpath='', transport=FakeFailingTransport, sendEncoding='json', recvEncoding='json', ) try: c.query("foobarbaz") self.assertTrue(False, "expected a WatchmanError") except WatchmanError as e: self.assertIn('I/O error communicating with watchman daemon: ' + 'errno=23 errmsg=fnord, while executing ' + '(\'foobarbaz\',)', str(e)) except Exception as e: self.assertTrue(False, "expected a WatchmanError, but got " + str(e)) def expand_bser_mods(test_class): ''' A decorator function used to create a class for bser and pybser variants of the test. ''' # We do some rather hacky things here to define new test class types # in our caller's scope. This is needed so that the unittest TestLoader # will find the subclasses we define. caller_scope = inspect.currentframe().f_back.f_locals flavors = [(bser, 'Bser'), (pybser, 'PyBser')] for (mod, suffix) in flavors: def make_class(mod, suffix): subclass_name = test_class.__name__ + suffix # Define a new class that derives from the input class class MatrixTest(test_class): def init_bser_mod(self): self.bser_mod = mod # Set the name and module information on our new subclass MatrixTest.__name__ = subclass_name MatrixTest.__qualname__ = subclass_name MatrixTest.__module__ = test_class.__module__ caller_scope[subclass_name] = MatrixTest make_class(mod, suffix) class FakeFile(object): def __init__(self, data): self._data = data self._ptr = 0 def readinto(self, buf): l = len(buf) if len(self._data) - self._ptr < l: return None buf[:] = self._data[self._ptr:self._ptr + l] self._ptr += l return l @expand_bser_mods class TestBSERDump(unittest.TestCase): def setUp(self): self.init_bser_mod() def raw(self, structured_input, bser_output): enc = self.bser_mod.dumps(structured_input) self.assertEqual(enc, bser_output) def roundtrip(self, val, mutable=True, value_encoding=None, value_errors=None): enc = self.bser_mod.dumps(val) #print("# %s --> %s" % (repr(val), # binascii.hexlify(enc).decode('ascii'))) dec = self.bser_mod.loads(enc, mutable, value_encoding=value_encoding, value_errors=value_errors) self.assertEqual(val, dec) fp = FakeFile(enc) dec = self.bser_mod.load(fp, mutable, value_encoding=value_encoding, value_errors=value_errors) self.assertEqual(val, dec) def munged(self, val, munged, value_encoding=None, value_errors=None): enc = self.bser_mod.dumps(val) #print("# %s --> %s" % (repr(val), # binascii.hexlify(enc).decode('ascii'))) dec = self.bser_mod.loads(enc, value_encoding=value_encoding, value_errors=value_errors) self.assertEqual(munged, dec) def test_raw(self): self.raw({"name": "Tom"}, b'\x00\x01\x05\x10\x00\x00\x00\x01\x03\x01\x02\x03\x04name\x02' b'\x03\x03Tom') self.raw({"names": ["Tom", "Jerry"]}, b'\x00\x01\x05\x1c\x00\x00\x00\x01\x03\x01\x02\x03\x05names\x00' b'\x03\x02\x02\x03\x03Tom\x02\x03\x05Jerry') self.raw(["Tom", "Jerry"], b"\x00\x01\x05\x11\x00\x00\x00\x00\x03\x02\x02\x03\x03Tom\x02" b"\x03\x05Jerry") self.raw([1, 123, 12345, 1234567, 12345678912345678], b"\x00\x01\x05\x18\x00\x00\x00\x00\x03\x05\x03\x01\x03{\x0490" b"\x05\x87\xd6\x12\x00\x06N\xd6\x14^T\xdc+\x00") def test_int(self): self.roundtrip(1) self.roundtrip(0x100) self.roundtrip(0x10000) self.roundtrip(0x10000000) self.roundtrip(0x1000000000) def test_negative_int(self): self.roundtrip(-0x80) self.roundtrip(-0x8000) self.roundtrip(-0x80000000) self.roundtrip(-0x8000000000000000) def test_float(self): self.roundtrip(1.5) def test_bool(self): self.roundtrip(True) self.roundtrip(False) def test_none(self): self.roundtrip(None) def test_string(self): self.roundtrip(b"hello") # For Python 3, here we can only check that a Unicode string goes in, # not that a Unicode string comes out. self.munged(u'Hello', b'Hello') self.roundtrip(u'Hello', value_encoding='utf8') self.roundtrip(u'Hello', value_encoding='ascii') self.roundtrip(u'Hello' + PILE_OF_POO, value_encoding='utf8') # can't use the with form here because Python 2.6 self.assertRaises(UnicodeDecodeError, self.roundtrip, u'Hello' + PILE_OF_POO, value_encoding='ascii') self.munged(u'Hello' + PILE_OF_POO, u'Hello', value_encoding='ascii', value_errors='ignore') self.roundtrip(b'hello' + NON_UTF8_STRING) self.assertRaises(UnicodeDecodeError, self.roundtrip, b'hello' + NON_UTF8_STRING, value_encoding='utf8') self.munged(b'hello' + NON_UTF8_STRING, u'hello', value_encoding='utf8', value_errors='ignore') # TODO: test non-UTF8 strings with surrogateescape in Python 3 ustr = u'\xe4\xf6\xfc' self.munged(ustr, ustr.encode('utf-8')) def test_list(self): self.roundtrip([1, 2, 3]) self.roundtrip([1, b"helo", 2.5, False, None, True, 3]) def test_tuple(self): self.munged((1, 2, 3), [1, 2, 3]) self.roundtrip((1, 2, 3), mutable=False) def test_dict(self): self.roundtrip({"hello": b"there"}) self.roundtrip({"hello": u"there"}, value_encoding='utf8') self.roundtrip({"hello": u"there"}, value_encoding='ascii') self.roundtrip({"hello": u"there" + PILE_OF_POO}, value_encoding='utf8') # can't use the with form here because Python 2.6 self.assertRaises(UnicodeDecodeError, self.roundtrip, {"hello": u"there" + PILE_OF_POO}, value_encoding='ascii') self.munged({'Hello': u'there' + PILE_OF_POO}, {'Hello': u'there'}, value_encoding='ascii', value_errors='ignore') self.roundtrip({'Hello': b'there' + NON_UTF8_STRING}) self.assertRaises(UnicodeDecodeError, self.roundtrip, {"hello": b"there" + NON_UTF8_STRING}, value_encoding='utf8') self.munged({'Hello': b'there' + NON_UTF8_STRING}, {'Hello': u'there'}, value_encoding='utf8', value_errors='ignore') obj = self.bser_mod.loads(self.bser_mod.dumps({"hello": b"there"}), False) self.assertEqual(1, len(obj)) self.assertEqual(b'there', obj.hello) self.assertEqual(b'there', obj[u'hello']) if not compat.PYTHON3: self.assertEqual(b'there', obj[b'hello']) self.assertEqual(b'there', obj[0]) # make sure this doesn't crash self.assertRaises(Exception, lambda: obj[45.25]) hello, = obj # sequence/list assignment self.assertEqual(b'there', hello) def assertItemAttributes(self, dictish, attrish): self.assertEqual(len(dictish), len(attrish)) # Use items for compatibility across Python 2 and 3. for k, v in dictish.items(): self.assertEqual(v, getattr(attrish, k)) def test_template(self): # since we can't generate the template bser output, here's a # a blob from the C test suite in watchman templ = b"\x00\x01\x03\x28" + \ b"\x0b\x00\x03\x02\x02\x03\x04\x6e\x61\x6d\x65\x02" + \ b"\x03\x03\x61\x67\x65\x03\x03\x02\x03\x04\x66\x72" + \ b"\x65\x64\x03\x14\x02\x03\x04\x70\x65\x74\x65\x03" + \ b"\x1e\x0c\x03\x19" dec = self.bser_mod.loads(templ) exp = [ {"name": b"fred", "age": 20}, {"name": b"pete", "age": 30}, {"name": None, "age": 25} ] self.assertEqual(exp, dec) res = self.bser_mod.loads(templ, False) for i in range(0, len(exp)): self.assertItemAttributes(exp[i], res[i]) def test_pdu_info(self): enc = self.bser_mod.dumps(1) DEFAULT_BSER_VERSION = 1 DEFAULT_BSER_CAPABILITIES = 0 self.assertEqual((DEFAULT_BSER_VERSION, DEFAULT_BSER_CAPABILITIES, len(enc)), self.bser_mod.pdu_info(enc)) # try a bigger one; prove that we get the correct length # even though we receive just a portion of the complete # data enc = self.bser_mod.dumps([1, 2, 3, "hello there, much larger"]) self.assertEqual((DEFAULT_BSER_VERSION, DEFAULT_BSER_CAPABILITIES, len(enc)), self.bser_mod.pdu_info(enc[0:7])) def test_pdu_len(self): enc = self.bser_mod.dumps(1) self.assertEqual(len(enc), self.bser_mod.pdu_len(enc)) # try a bigger one; prove that we get the correct length # even though we receive just a portion of the complete # data enc = self.bser_mod.dumps([1, 2, 3, "hello there, much larger"]) self.assertEqual(len(enc), self.bser_mod.pdu_len(enc[0:7])) def test_garbage(self): # can't use the with form here because Python 2.6 self.assertRaises(ValueError, self.bser_mod.loads, b"\x00\x01\n") self.assertRaises(ValueError, self.bser_mod.loads, b'\x00\x01\x04\x01\x00\x02') self.assertRaises(ValueError, self.bser_mod.loads, b'\x00\x01\x07') self.assertRaises(ValueError, self.bser_mod.loads, b'\x00\x01\x03\x01\xff') self.assertRaises(ValueError, self.bser_mod.pdu_info, b'\x00\x02') if __name__ == '__main__': suite = load_tests(unittest.TestLoader()) unittest.TextTestRunner().run(suite) watchman-4.9.0/query/000077500000000000000000000000001314236077500145035ustar00rootroot00000000000000watchman-4.9.0/query/base.cpp000066400000000000000000000061751314236077500161320ustar00rootroot00000000000000/* Copyright 2013-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #include #include "make_unique.h" /* Basic boolean and compound expressions */ class NotExpr : public QueryExpr { std::unique_ptr expr; public: explicit NotExpr(std::unique_ptr other_expr) : expr(std::move(other_expr)) {} bool evaluate(w_query_ctx* ctx, const FileResult* file) override { return !expr->evaluate(ctx, file); } static std::unique_ptr parse( w_query* query, const json_ref& term) { /* rigidly require ["not", expr] */ if (!json_is_array(term) || json_array_size(term) != 2) { throw QueryParseError("must use [\"not\", expr]"); } const auto& other = term.at(1); auto other_expr = w_query_expr_parse(query, other); return watchman::make_unique(std::move(other_expr)); } }; W_TERM_PARSER("not", NotExpr::parse) class TrueExpr : public QueryExpr { public: bool evaluate(w_query_ctx*, const FileResult*) override { return true; } static std::unique_ptr parse(w_query*, const json_ref&) { return watchman::make_unique(); } }; W_TERM_PARSER("true", TrueExpr::parse) class FalseExpr : public QueryExpr { public: bool evaluate(w_query_ctx*, const FileResult*) override { return false; } static std::unique_ptr parse(w_query*, const json_ref&) { return watchman::make_unique(); } }; W_TERM_PARSER("false", FalseExpr::parse) class ListExpr : public QueryExpr { bool allof; std::vector> exprs; public: ListExpr(bool isAll, std::vector> exprs) : allof(isAll), exprs(std::move(exprs)) {} bool evaluate(w_query_ctx* ctx, const FileResult* file) override { for (auto& expr : exprs) { bool res = expr->evaluate(ctx, file); if (!res && allof) { return false; } if (res && !allof) { return true; } } return allof; } static std::unique_ptr parse(w_query* query, const json_ref& term, bool allof) { std::vector> list; /* don't allow "allof" on its own */ if (!json_is_array(term) || json_array_size(term) < 2) { if (allof) { throw QueryParseError("must use [\"allof\", expr...]"); } throw QueryParseError("must use [\"anyof\", expr...]"); } auto n = json_array_size(term) - 1; list.reserve(n); for (size_t i = 0; i < n; i++) { const auto& exp = term.at(i + 1); auto parsed = w_query_expr_parse(query, exp); list.emplace_back(std::move(parsed)); } return watchman::make_unique(allof, std::move(list)); } static std::unique_ptr parseAllOf( w_query* query, const json_ref& term) { return parse(query, term, true); } static std::unique_ptr parseAnyOf( w_query* query, const json_ref& term) { return parse(query, term, false); } }; W_TERM_PARSER("anyof", ListExpr::parseAnyOf) W_TERM_PARSER("allof", ListExpr::parseAllOf) /* vim:ts=2:sw=2:et: */ watchman-4.9.0/query/dirname.cpp000066400000000000000000000100321314236077500166220ustar00rootroot00000000000000/* Copyright 2015-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #include "make_unique.h" using watchman::CaseSensitivity; static inline bool is_dir_sep(int c) { return c == '/' || c == '\\'; } class DirNameExpr : public QueryExpr { w_string dirname; struct w_query_int_compare depth; using StartsWith = bool (*)(w_string_t* str, w_string_t* prefix); StartsWith startswith; public: explicit DirNameExpr( w_string dirname, struct w_query_int_compare depth, StartsWith startswith) : dirname(dirname), depth(depth), startswith(startswith) {} bool evaluate(w_query_ctx* ctx, const FileResult*) override { auto& str = w_query_ctx_get_wholename(ctx); size_t i; if (str.size() <= dirname.size()) { // Either it doesn't prefix match, or file name is == dirname. // That means that the best case is that the wholename matches. // we only want to match if dirname(wholename) matches, so it // is not possible for us to match unless the length of wholename // is greater than the dirname operand return false; } // Want to make sure that wholename is a child of dirname, so // check for a dir separator. Special case for dirname == '' (the root), // which won't have a slash in position 0. if (dirname.size() > 0 && !is_dir_sep(str.data()[dirname.size()])) { // may have a common prefix with, but is not a child of dirname return false; } if (!startswith(str, dirname)) { return false; } // Now compute the depth of file from dirname. We do this by // counting dir separators, not including the one we saw above. json_int_t actual_depth = 0; for (i = dirname.size() + 1; i < str.size(); i++) { if (is_dir_sep(str.data()[i])) { actual_depth++; } } return eval_int_compare(actual_depth, &depth); } // ["dirname", "foo"] -> ["dirname", "foo", ["depth", "ge", 0]] static std::unique_ptr parse(w_query*, const json_ref& term, CaseSensitivity case_sensitive) { const char *which = case_sensitive == CaseSensitivity::CaseInSensitive ? "idirname" : "dirname"; struct w_query_int_compare depth_comp; if (!json_is_array(term)) { throw QueryParseError("Expected array for '", which, "' term"); } if (json_array_size(term) < 2) { throw QueryParseError( "Invalid number of arguments for '", which, "' term"); } if (json_array_size(term) > 3) { throw QueryParseError( "Invalid number of arguments for '", which, "' term"); } const auto& name = term.at(1); if (!json_is_string(name)) { throw QueryParseError("Argument 2 to '", which, "' must be a string"); } if (json_array_size(term) == 3) { const auto& depth = term.at(2); if (!json_is_array(depth)) { throw QueryParseError( "Invalid number of arguments for '", which, "' term"); } parse_int_compare(depth, &depth_comp); if (strcmp("depth", json_string_value(json_array_get(depth, 0)))) { throw QueryParseError( "Third parameter to '", which, "' should be a relational depth term"); } } else { depth_comp.operand = 0; depth_comp.op = W_QUERY_ICMP_GE; } return watchman::make_unique( json_to_w_string(name), depth_comp, case_sensitive == CaseSensitivity::CaseInSensitive ? w_string_startswith_caseless : w_string_startswith); } static std::unique_ptr parseDirName( w_query* query, const json_ref& term) { return parse(query, term, query->case_sensitive); } static std::unique_ptr parseIDirName( w_query* query, const json_ref& term) { return parse(query, term, CaseSensitivity::CaseInSensitive); } }; W_TERM_PARSER("dirname", DirNameExpr::parseDirName) W_TERM_PARSER("idirname", DirNameExpr::parseIDirName) /* vim:ts=2:sw=2:et: */ watchman-4.9.0/query/empty.cpp000066400000000000000000000016761314236077500163570ustar00rootroot00000000000000/* Copyright 2013-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #include "make_unique.h" class ExistsExpr : public QueryExpr { public: bool evaluate(struct w_query_ctx*, const FileResult* file) override { return file->exists(); } static std::unique_ptr parse(w_query*, const json_ref&) { return watchman::make_unique(); } }; W_TERM_PARSER("exists", ExistsExpr::parse) class EmptyExpr : public QueryExpr { public: bool evaluate(struct w_query_ctx*, const FileResult* file) override { if (!file->exists()) { return false; } auto& stat = file->stat(); if (stat.isDir() || stat.isFile()) { return stat.size == 0; } return false; } static std::unique_ptr parse(w_query*, const json_ref&) { return watchman::make_unique(); } }; W_TERM_PARSER("empty", EmptyExpr::parse) /* vim:ts=2:sw=2:et: */ watchman-4.9.0/query/eval.cpp000066400000000000000000000251641314236077500161460ustar00rootroot00000000000000/* Copyright 2013-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #include "watchman_scopeguard.h" using watchman::Result; using watchman::Future; using watchman::collectAll; FileResult::~FileResult() {} /* Query evaluator */ const w_string& w_query_ctx_get_wholename(struct w_query_ctx* ctx) { uint32_t name_start; if (ctx->wholename) { return ctx->wholename; } if (ctx->query->relative_root) { // At this point every path should start with the relative root, so this is // legal name_start = ctx->query->relative_root.size() + 1; } else { name_start = ctx->root->root_path.size() + 1; } // Record the name relative to the root auto parent = ctx->file->dirName(); if (name_start > parent.size()) { ctx->wholename = ctx->file->baseName().asWString(); } else { parent.advance(name_start); ctx->wholename = w_string::build(parent, "/", ctx->file->baseName()); } return ctx->wholename; } void w_query_process_file( w_query* query, struct w_query_ctx* ctx, std::unique_ptr file) { ctx->wholename.reset(); ctx->file = std::move(file); SCOPE_EXIT { ctx->file.reset(); }; // For fresh instances, only return files that currently exist if (!ctx->disableFreshInstance && !ctx->since.is_timestamp && ctx->since.clock.is_fresh_instance && !ctx->file->exists()) { return; } // We produce an output for this file if there is no expression, // or if the expression matched. if (query->expr && !query->expr->evaluate(ctx, ctx->file.get())) { // Not matched return; } if (ctx->query->dedup_results) { w_string_t* name = w_query_ctx_get_wholename(ctx); auto inserted = ctx->dedup.insert(name); if (!inserted.second) { // Already present in the results, no need to emit it again ctx->num_deduped++; return; } } bool is_new; if (ctx->since.is_timestamp) { is_new = ctx->since.timestamp > ctx->file->ctime().timestamp; } else if (ctx->since.clock.is_fresh_instance) { is_new = true; } else { is_new = ctx->file->ctime().ticks > ctx->since.clock.ticks; } auto wholename = w_query_ctx_get_wholename(ctx); watchman_rule_match match( ctx->clockAtStartOfQuery.position().rootNumber, wholename, is_new, std::move(ctx->file)); if (ctx->query->renderUsesFutures) { // Conceptually all we need to do here is append the future to // resultsToRender and then collectAll at the end of the query. That // requires O(num-matches x num-fields) memory usage of the future related // data for the duration of the query. In order to keep things down to a // more reasonable size, if the future is immediately ready we can append to // the results directly, and we can also speculatively do the same for any // pending items that happen to complete in between matches. That makes // this code look a little more complex, but it is worth it for very large // result sets. auto future = file_result_to_json_future(ctx->query->fieldList, std::move(match)); if (future.isReady()) { json_array_append_new(ctx->resultsArray, std::move(future.get())); } else { ctx->resultsToRender.emplace_back(std::move(future)); } ctx->speculativeRenderCompletion(); } else { json_array_append_new( ctx->resultsArray, file_result_to_json(ctx->query->fieldList, match)); } } void w_query_ctx::speculativeRenderCompletion() { while (!resultsToRender.empty() && resultsToRender.front().isReady()) { json_array_append_new( resultsArray, std::move(resultsToRender.front().get())); resultsToRender.pop_front(); } } bool w_query_file_matches_relative_root( struct w_query_ctx* ctx, const watchman_file* f) { bool result; if (!ctx->query->relative_root) { return true; } auto parent_path = f->parent->getFullPath(); // "in relative root" here does not mean exactly the relative root, so compare // against the relative root's parent. result = w_string_equal(parent_path, ctx->query->relative_root) || w_string_startswith(parent_path, ctx->query->relative_root_slash); return result; } void time_generator( w_query* query, const std::shared_ptr& root, struct w_query_ctx* ctx) { root->view()->timeGenerator(query, ctx); } static void default_generators( w_query* query, const std::shared_ptr& root, struct w_query_ctx* ctx) { bool generated = false; // Time based query if (ctx->since.is_timestamp || !ctx->since.clock.is_fresh_instance) { time_generator(query, root, ctx); generated = true; } // Suffix if (!query->suffixes.empty()) { root->view()->suffixGenerator(query, ctx); generated = true; } if (!query->paths.empty()) { root->view()->pathGenerator(query, ctx); generated = true; } if (query->glob_tree) { root->view()->globGenerator(query, ctx); generated = true; } // And finally, if there were no other generators, we walk all known // files if (!generated) { root->view()->allFilesGenerator(query, ctx); } } static void execute_common( struct w_query_ctx* ctx, w_perf_t* sample, w_query_res* res, w_query_generator generator) { if (ctx->query->dedup_results) { ctx->dedup.reserve(64); } res->is_fresh_instance = !ctx->since.is_timestamp && ctx->since.clock.is_fresh_instance; if (!(res->is_fresh_instance && ctx->query->empty_on_fresh_instance)) { if (!generator) { generator = default_generators; } generator(ctx->query, ctx->root, ctx); } if (!ctx->resultsToRender.empty()) { collectAll(ctx->resultsToRender.begin(), ctx->resultsToRender.end()) .then([&](Result>>&& results) { auto& vec = results.value(); for (auto& item : vec) { json_array_append_new(ctx->resultsArray, std::move(item.value())); } }) .get(); } if (sample && sample->finish()) { sample->add_root_meta(ctx->root); sample->add_meta( "query_execute", json_object( {{"fresh_instance", json_boolean(res->is_fresh_instance)}, {"num_deduped", json_integer(ctx->num_deduped)}, {"num_results", json_integer(json_array_size(ctx->resultsArray))}, {"num_walked", json_integer(ctx->getNumWalked())}, {"query", ctx->query->query_spec}})); sample->log(); } res->resultsArray = ctx->resultsArray; res->dedupedFileNames = std::move(ctx->dedup); } w_query_ctx::w_query_ctx( w_query* q, const std::shared_ptr& root, bool disableFreshInstance) : query(q), root(root), resultsArray(json_array()), disableFreshInstance{disableFreshInstance} { // build a template for the serializer if (query->fieldList.size() > 1) { json_array_set_template_new( resultsArray, field_list_to_json_name_array(query->fieldList)); } } // Capability indicating support for scm-aware since queries W_CAP_REG("scm-since") w_query_res w_query_execute( w_query* query, const std::shared_ptr& root, w_query_generator generator) { w_query_res res; std::shared_ptr altQuery; ClockSpec resultClock(ClockPosition{}); bool disableFreshInstance{false}; w_perf_t sample("query_execute"); // We want to check this before we sync, as the SCM may generate changes // in the filesystem when running the underlying commands to query it. if (query->since_spec && query->since_spec->hasScmParams()) { auto scm = root->view()->getSCM(); resultClock.scmMergeBaseWith = query->since_spec->scmMergeBaseWith; resultClock.scmMergeBase = scm->mergeBaseWith(resultClock.scmMergeBaseWith); if (resultClock.scmMergeBase != query->since_spec->scmMergeBase) { // The merge base is different, so on the assumption that a lot of // things have changed between the prior and current state of // the world, we're just going to ask the SCM to tell us about // the changes, then we're going to feed that change list through // a simpler watchman query. auto changedFiles = scm->getFilesChangedSinceMergeBaseWith(resultClock.scmMergeBase); auto pathList = json_array_of_size(changedFiles.size()); for (auto& f : changedFiles) { json_array_append_new(pathList, w_string_to_json(f)); } // Re-cast this as a path-generator query auto altQuerySpec = json_copy(query->query_spec); altQuerySpec.object().erase("since"); altQuerySpec.set("path", std::move(pathList)); // And switch us over to run the rest of the query on this one altQuery = w_query_parse(root, altQuerySpec); query = altQuery.get(); disableFreshInstance = true; // We may have been called with a custom generator; we don't need to use // that for this case, so make sure that we use the default generator // so that it will actually execute using the pathGenerator. generator = nullptr; } } w_query_ctx ctx(query, root, disableFreshInstance); if (query->sync_timeout.count() && !root->syncToNow(query->sync_timeout)) { throw QueryExecError("synchronization failed: ", strerror(errno)); } /* The first stage of execution is generation. * We generate a series of file inputs to pass to * the query executor. * * We evaluate each of the generators one after the * other. If multiple generators are used, it is * possible and expected that the same file name * will be evaluated multiple times if those generators * both emit the same file. */ ctx.clockAtStartOfQuery = ClockSpec(root->view()->getMostRecentRootNumberAndTickValue()); ctx.lastAgeOutTickValueAtStartOfQuery = root->view()->getLastAgeOutTickValue(); // Copy in any scm parameters res.clockAtStartOfQuery = resultClock; // then update the clock position portion res.clockAtStartOfQuery.clock = ctx.clockAtStartOfQuery.clock; // Evaluate the cursor for this root ctx.since = query->since_spec ? query->since_spec->evaluate( ctx.clockAtStartOfQuery.position(), ctx.lastAgeOutTickValueAtStartOfQuery, &root->inner.cursors) : w_query_since(); if (query->query_spec.get_default("bench")) { for (auto i = 0; i < 100; ++i) { w_query_ctx c(query, root, false); w_query_res r; c.clockAtStartOfQuery = ctx.clockAtStartOfQuery; execute_common(&c, nullptr, &r, generator); } } execute_common(&ctx, &sample, &res, generator); return res; } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/query/fieldlist.cpp000066400000000000000000000244471314236077500172010ustar00rootroot00000000000000/* Copyright 2013-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #include "Future.h" using namespace watchman; static json_ref make_name(const struct watchman_rule_match* match) { return w_string_to_json(match->relname); } static watchman::Future make_symlink( const struct watchman_rule_match* match) { return match->file->readLink().then([](Result&& result) { auto& target = result.value(); return target ? w_string_to_json(target) : json_null(); }); } static watchman::Future make_sha1_hex( const struct watchman_rule_match* match) { if (!match->file->stat().isFile() || !match->file->exists()) { // We return null for items that can't have a content hash return makeFuture(json_null()); } return match->file->getContentSha1().then( [](Result&& result) { try { auto& hash = result.value(); char buf[40]; static const char* hexDigit = "0123456789abcdef"; for (size_t i = 0; i < hash.size(); ++i) { auto& digit = hash[i]; buf[(i * 2) + 0] = hexDigit[digit >> 4]; buf[(i * 2) + 1] = hexDigit[digit & 0xf]; } return w_string_to_json(w_string(buf, sizeof(buf), W_STRING_UNICODE)); } catch (const std::exception& exc) { // We'll report the error wrapped up in an object so that it can be // distinguished from a valid hash result. return json_object( {{"error", w_string_to_json(w_string(exc.what(), W_STRING_UNICODE))}}); } }); } static json_ref make_exists(const struct watchman_rule_match* match) { return json_boolean(match->file->exists()); } static json_ref make_new(const struct watchman_rule_match* match) { return json_boolean(match->is_new); } #define MAKE_CLOCK_FIELD(name, member) \ static json_ref make_##name(const struct watchman_rule_match* match) { \ char buf[128]; \ if (clock_id_string( \ match->root_number, \ match->file->member().ticks, \ buf, \ sizeof(buf))) { \ return typed_string_to_json(buf, W_STRING_UNICODE); \ } \ return nullptr; \ } MAKE_CLOCK_FIELD(cclock, ctime) MAKE_CLOCK_FIELD(oclock, otime) // Note: our JSON library supports 64-bit integers, but this may // pose a compatibility issue for others. We'll see if anyone // runs into an issue and deal with it then... #define MAKE_INT_FIELD(name, member) \ static json_ref make_##name(const struct watchman_rule_match* match) { \ return json_integer(match->file->stat().member); \ } #define MAKE_TIME_INT_FIELD(name, type, scale) \ static json_ref make_##name(const struct watchman_rule_match* match) { \ struct timespec spec = match->file->stat().type##time; \ return json_integer( \ ((int64_t)spec.tv_sec * scale) + \ ((int64_t)spec.tv_nsec * scale / WATCHMAN_NSEC_IN_SEC)); \ } #define MAKE_TIME_DOUBLE_FIELD(name, type) \ static json_ref make_##name(const struct watchman_rule_match* match) { \ struct timespec spec = match->file->stat().type##time; \ return json_real(spec.tv_sec + 1e-9 * spec.tv_nsec); \ } /* For each type (e.g. "m"), define fields * - mtime: mtime in seconds * - mtime_ms: mtime in milliseconds * - mtime_us: mtime in microseconds * - mtime_ns: mtime in nanoseconds * - mtime_f: mtime as a double */ #define MAKE_TIME_FIELDS(type) \ MAKE_INT_FIELD(type##time, type##time.tv_sec) \ MAKE_TIME_INT_FIELD(type##time_ms, type, 1000) \ MAKE_TIME_INT_FIELD(type##time_us, type, 1000 * 1000) \ MAKE_TIME_INT_FIELD(type##time_ns, type, 1000 * 1000 * 1000) \ MAKE_TIME_DOUBLE_FIELD(type##time_f, type) MAKE_INT_FIELD(size, size) MAKE_INT_FIELD(mode, mode) MAKE_INT_FIELD(uid, uid) MAKE_INT_FIELD(gid, gid) MAKE_TIME_FIELDS(a) MAKE_TIME_FIELDS(m) MAKE_TIME_FIELDS(c) MAKE_INT_FIELD(ino, ino) MAKE_INT_FIELD(dev, dev) MAKE_INT_FIELD(nlink, nlink) #define MAKE_TIME_FIELD_DEFS(type) \ { #type "time", make_##type##time, nullptr }, \ { #type "time_ms", make_##type##time_ms, nullptr }, \ { #type "time_us", make_##type##time_us, nullptr }, \ { #type "time_ns", make_##type##time_ns, nullptr }, \ { #type "time_f", make_##type##time_f, nullptr } static json_ref make_type_field(const struct watchman_rule_match* match) { // Bias towards the more common file types first auto& stat = match->file->stat(); if (stat.isFile()) { return typed_string_to_json("f", W_STRING_UNICODE); } if (stat.isDir()) { return typed_string_to_json("d", W_STRING_UNICODE); } if (stat.isSymlink()) { return typed_string_to_json("l", W_STRING_UNICODE); } #ifndef _WIN32 if (S_ISBLK(stat.mode)) { return typed_string_to_json("b", W_STRING_UNICODE); } if (S_ISCHR(stat.mode)) { return typed_string_to_json("c", W_STRING_UNICODE); } if (S_ISFIFO(stat.mode)) { return typed_string_to_json("p", W_STRING_UNICODE); } if (S_ISSOCK(stat.mode)) { return typed_string_to_json("s", W_STRING_UNICODE); } #endif #ifdef S_ISDOOR if (S_ISDOOR(stat.mode)) { return typed_string_to_json("D", W_STRING_UNICODE); } #endif return typed_string_to_json("?", W_STRING_UNICODE); } // Helper to construct the list of field defs static std::unordered_map build_defs() { struct { const char* name; json_ref (*make)(const struct watchman_rule_match* match); watchman::Future (*futureMake)( const struct watchman_rule_match* match); } defs[] = { {"name", make_name, nullptr}, {"symlink_target", nullptr, make_symlink}, {"exists", make_exists, nullptr}, {"size", make_size, nullptr}, {"mode", make_mode, nullptr}, {"uid", make_uid, nullptr}, {"gid", make_gid, nullptr}, MAKE_TIME_FIELD_DEFS(a), MAKE_TIME_FIELD_DEFS(m), MAKE_TIME_FIELD_DEFS(c), {"ino", make_ino, nullptr}, {"dev", make_dev, nullptr}, {"nlink", make_nlink, nullptr}, {"new", make_new, nullptr}, {"oclock", make_oclock, nullptr}, {"cclock", make_cclock, nullptr}, {"type", make_type_field, nullptr}, {"content.sha1hex", nullptr, make_sha1_hex}, }; std::unordered_map map; for (auto& def : defs) { w_string name(def.name, W_STRING_UNICODE); map.emplace(name, w_query_field_renderer{name, def.make, def.futureMake}); } return map; } // Meyers singleton to avoid SIOF wrt. static constructors in this module // and the order that w_ctor_fn callbacks are dispatched. static std::unordered_map& field_defs() { static std::unordered_map map(build_defs()); return map; } static w_ctor_fn_type(register_field_capabilities) { for (auto& it : field_defs()) { char capname[128]; snprintf(capname, sizeof(capname), "field-%s", it.first.c_str()); w_capability_register(capname); } } w_ctor_fn_reg(register_field_capabilities) json_ref field_list_to_json_name_array(const w_query_field_list& fieldList) { auto templ = json_array_of_size(fieldList.size()); for (auto& f : fieldList) { json_array_append_new(templ, w_string_to_json(f->name)); } return templ; } json_ref file_result_to_json( const w_query_field_list& fieldList, const watchman_rule_match& match) { if (fieldList.size() == 1) { return fieldList.front()->make(&match); } auto value = json_object_of_size(fieldList.size()); for (auto& f : fieldList) { auto ele = f->make(&match); value.set(f->name, std::move(ele)); } return value; } watchman::Future file_result_to_json_future( const w_query_field_list& fieldList, watchman_rule_match&& match) { auto matchPtr = std::make_shared(std::move(match)); std::vector> futures; for (auto& f : fieldList) { if (f->futureMake) { futures.emplace_back(f->futureMake(matchPtr.get())); } else { futures.emplace_back(makeFuture(f->make(matchPtr.get()))); } } return collectAll(futures.begin(), futures.end()) .then([&fieldList, matchPtr]( Result>>&& result) { auto& vec = result.value(); if (fieldList.size() == 1) { return vec[0].value(); } auto value = json_object_of_size(vec.size()); for (size_t i = 0; i < fieldList.size(); ++i) { auto& f = fieldList[i]; value.set(f->name, std::move(vec[i].value())); } return value; }); } void parse_field_list(json_ref field_list, w_query_field_list* selected) { uint32_t i; selected->clear(); if (!field_list) { // Use the default list field_list = json_array({typed_string_to_json("name", W_STRING_UNICODE), typed_string_to_json("exists", W_STRING_UNICODE), typed_string_to_json("new", W_STRING_UNICODE), typed_string_to_json("size", W_STRING_UNICODE), typed_string_to_json("mode", W_STRING_UNICODE)}); } if (!json_is_array(field_list)) { throw QueryParseError("field list must be an array of strings"); } for (i = 0; i < json_array_size(field_list); i++) { auto jname = json_array_get(field_list, i); if (!json_is_string(jname)) { throw QueryParseError("field list must be an array of strings"); } auto name = json_to_w_string(jname); auto& defs = field_defs(); auto it = defs.find(name); if (it == defs.end()) { throw QueryParseError("unknown field name '", name, "'"); } selected->push_back(&it->second); } } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/query/glob.cpp000066400000000000000000000321601314236077500161340ustar00rootroot00000000000000/* Copyright 2016-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "InMemoryView.h" #include "make_unique.h" #include "thirdparty/wildmatch/wildmatch.h" #include "watchman.h" #include "watchman_scopeguard.h" using watchman::CaseSensitivity; /* The glob generator. * The user can specify a list of globs as the set of candidate nodes * for their query expression. * The list may feature redundant components that we desire to avoid * matching more times than we need. * For example ["some/deep/path/foo.h", "some/deep/path/bar.h"] have * a common path prefix that we only want to match once. * * To deal with this we compile the set of glob patterns into a tree * structure, splitting the pattern by the unix directory separator. * * At execution time we walk down the watchman_dir tree and the pattern * tree concurrently. If the watchman_dir tree has no matching component * then we can terminate evaluation of that portion of the pattern tree * early. */ W_CAP_REG("glob_generator") // Look ahead in pattern; we want to find the directory separator. // While we are looking, check for wildmatch special characters. // If we do not find a directory separator, return NULL. static inline const char *find_sep_and_specials(const char *pattern, const char *end, bool *had_specials) { *had_specials = false; while (pattern < end) { switch (*pattern) { case '*': case '?': case '[': case '\\': *had_specials = true; break; case '/': return pattern; } ++pattern; } // No separator found return NULL; } watchman_glob_tree::watchman_glob_tree( const char* pattern, uint32_t pattern_len) : pattern(pattern, pattern_len), is_leaf(0), had_specials(0), is_doublestar(0) {} // Simple brute force lookup of pattern within a node. // This is run at compile time and most glob sets are low enough cardinality // that this doesn't turn out to be a hot spot in practice. static watchman_glob_tree* lookup_node_child( std::vector>* vec, const char* pattern, uint32_t pattern_len) { for (auto& kid : *vec) { if (kid->pattern.size() == pattern_len && memcmp(kid->pattern.data(), pattern, pattern_len) == 0) { return kid.get(); } } return nullptr; } // Compile and add a new glob pattern to the tree. // Compilation splits a pattern into nodes, with one node for each directory // separator separated path component. static bool add_glob(struct watchman_glob_tree *tree, w_string_t *glob_str) { struct watchman_glob_tree *parent = tree; const char *pattern = glob_str->buf; const char *pattern_end = pattern + glob_str->len; bool had_specials; while (pattern < pattern_end) { const char *sep = find_sep_and_specials(pattern, pattern_end, &had_specials); const char *end; struct watchman_glob_tree *node; bool is_doublestar = false; auto* container = &parent->children; end = sep ? sep : pattern_end; // If a node uses double-star (recursive glob) then we take the remainder // of the pattern string, regardless of whether we found a separator or // not, because the ** forces us to walk the entire sub-tree and try the // match for every possible node. if (had_specials && end - pattern >= 2 && pattern[0] == '*' && pattern[1] == '*') { end = pattern_end; is_doublestar = true; // Queue this up for the doublestar code path container = &parent->doublestar_children; } // If we can re-use an existing node, we just saved ourselves from a // redundant match at execution time! node = lookup_node_child(container, pattern, (uint32_t)(end - pattern)); if (!node) { // This is a new matching possibility. container->emplace_back(watchman::make_unique( pattern, (uint32_t)(end - pattern))); node = container->back().get(); node->had_specials = had_specials; node->is_doublestar = is_doublestar; } // If we didn't find a separator in the remainder of this pattern, it // means that we expect it to be able to match files (it is therefore the // "leaf" of the pattern path). Remember that fact as it can help us avoid // matching files when the pattern can only match dirs. if (!sep) { node->is_leaf = true; } pattern = end + 1; // skip separator parent = node; // the next iteration uses this node as its parent } return true; } void parse_globs(w_query* res, const json_ref& query) { size_t i; int noescape = 0; int includedotfiles = 0; auto globs = query.get_default("glob"); if (!globs) { return; } if (!json_is_array(globs)) { throw QueryParseError("'glob' must be an array"); } // Globs implicitly enable dedup_results mode res->dedup_results = true; if (json_unpack(query, "{s?b}", "glob_noescape", &noescape) != 0) { throw QueryParseError("glob_noescape must be a boolean"); } if (json_unpack(query, "{s?b}", "glob_includedotfiles", &includedotfiles) != 0) { throw QueryParseError("glob_includedotfiles must be a boolean"); } res->glob_flags = (includedotfiles ? 0 : WM_PERIOD) | (noescape ? WM_NOESCAPE : 0); res->glob_tree = watchman::make_unique("", 0); for (i = 0; i < json_array_size(globs); i++) { const auto& ele = globs.at(i); const auto& pattern = json_to_w_string(ele); if (!add_glob(res->glob_tree.get(), pattern)) { throw QueryParseError("failed to compile multi-glob"); } } } /** Concatenate dir_name and name around a unix style directory * separator. * dir_name may be NULL in which case this returns a copy of name. */ static inline std::string make_path_name( const char* dir_name, uint32_t dlen, const char* name, uint32_t nlen) { std::string result; result.reserve(dlen + nlen + 1); if (dlen) { result.append(dir_name, dlen); // wildmatch wants unix separators result.push_back('/'); } result.append(name, nlen); return result; } namespace watchman { /** This is our specialized handler for the ** recursive glob pattern. * This is the unhappy path because we have no choice but to recursively * walk the tree; we have no way to prune portions that won't match. * We do coalesce recursive matches together that might generate multiple * results. * For example: */ // globs: ["foo/**/*.h", "foo/**/**/*.h"] /* effectively runs the same query multiple times. By combining the * doublestar walk for both into a single walk, we can then match each * file against the list of patterns, terminating that match as soon * as any one of them matches the file node. */ void InMemoryView::globGeneratorDoublestar( struct w_query_ctx* ctx, const struct watchman_dir* dir, const struct watchman_glob_tree* node, const char* dir_name, uint32_t dir_name_len) const { bool matched; // First step is to walk the set of files contained in this node for (auto& it : dir->files) { auto file = it.second.get(); auto file_name = file->getName(); ctx->bumpNumWalked(); if (!file->exists) { // Globs can only match files that exist continue; } auto subject = make_path_name( dir_name, dir_name_len, file_name.data(), file_name.size()); // Now that we have computed the name of this candidate file node, // attempt to match against each of the possible doublestar patterns // in turn. As soon as any one of them matches we can stop this loop // as it doesn't make a lot of sense to yield multiple results for // the same file. for (const auto& child_node : node->doublestar_children) { matched = wildmatch(child_node->pattern.c_str(), subject.c_str(), ctx->query->glob_flags | WM_PATHNAME | (ctx->query->case_sensitive == CaseSensitivity::CaseSensitive ? 0 : WM_CASEFOLD), 0) == WM_MATCH; if (matched) { w_query_process_file( ctx->query, ctx, make_unique(file, contentHashCache_)); // No sense running multiple matches for this same file node // if this one succeeded. break; } } } // And now walk down to any dirs; all dirs are eligible for (auto& it : dir->dirs) { const auto child = it.second.get(); if (!child->last_check_existed) { // Globs can only match files in dirs that exist continue; } auto subject = make_path_name( dir_name, dir_name_len, child->name.data(), child->name.size()); globGeneratorDoublestar(ctx, child, node, subject.data(), subject.size()); } } /* Match each child of node against the children of dir */ void InMemoryView::globGeneratorTree( struct w_query_ctx* ctx, const struct watchman_glob_tree* node, const struct watchman_dir* dir) const { w_string_t component; if (!node->doublestar_children.empty()) { globGeneratorDoublestar(ctx, dir, node, nullptr, 0); } for (const auto& child_node : node->children) { w_assert(!child_node->is_doublestar, "should not get here with ** glob"); // If there are child dirs, consider them for recursion. // Note that we don't restrict this to !leaf because the user may have // set their globs list to something like ["some_dir", "some_dir/file"] // and we don't want to preclude matching the latter. if (!dir->dirs.empty()) { // Attempt direct lookup if possible if (!child_node->had_specials && ctx->query->case_sensitive == CaseSensitivity::CaseSensitive) { w_string_new_len_typed_stack( &component, child_node->pattern.data(), child_node->pattern.size(), W_STRING_BYTE); const auto child_dir = dir->getChildDir(&component); if (child_dir) { globGeneratorTree(ctx, child_node.get(), child_dir); } } else { // Otherwise we have to walk and match for (auto& it : dir->dirs) { const auto child_dir = it.second.get(); if (!child_dir->last_check_existed) { // Globs can only match files in dirs that exist continue; } if (wildmatch(child_node->pattern.c_str(), child_dir->name.c_str(), ctx->query->glob_flags | (ctx->query->case_sensitive == CaseSensitivity::CaseSensitive ? 0 : WM_CASEFOLD), 0) == WM_MATCH) { globGeneratorTree(ctx, child_node.get(), child_dir); } } } } // If the node is a leaf we are in a position to match files. if (child_node->is_leaf && !dir->files.empty()) { // Attempt direct lookup if possible if (!child_node->had_specials && ctx->query->case_sensitive == CaseSensitivity::CaseSensitive) { w_string_new_len_typed_stack( &component, child_node->pattern.data(), child_node->pattern.size(), W_STRING_BYTE); auto file = dir->getChildFile(&component); if (file) { ctx->bumpNumWalked(); if (file->exists) { // Globs can only match files that exist w_query_process_file( ctx->query, ctx, make_unique(file, contentHashCache_)); } } } else { for (auto& it : dir->files) { // Otherwise we have to walk and match auto file = it.second.get(); auto file_name = file->getName(); ctx->bumpNumWalked(); if (!file->exists) { // Globs can only match files that exist continue; } if (wildmatch(child_node->pattern.c_str(), file_name.data(), ctx->query->glob_flags | (ctx->query->case_sensitive == CaseSensitivity::CaseSensitive ? WM_CASEFOLD : 0), 0) == WM_MATCH) { w_query_process_file( ctx->query, ctx, make_unique(file, contentHashCache_)); } } } } } } void InMemoryView::globGenerator(w_query* query, struct w_query_ctx* ctx) const { w_string_t *relative_root; if (query->relative_root) { relative_root = query->relative_root; } else { relative_root = root_path; } auto view = view_.rlock(); const auto dir = resolveDir(view, relative_root); if (!dir) { throw QueryExecError(watchman::to( "glob_generator could not resolve ", w_string_piece(relative_root), ", check your " "relative_root parameter!")); } globGeneratorTree(ctx, query->glob_tree.get(), dir); } } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/query/intcompare.cpp000066400000000000000000000053661314236077500173620ustar00rootroot00000000000000/* Copyright 2015-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #include "make_unique.h" // Helper functions for integer comparisons in query expressions static const struct { const char *opname; enum w_query_icmp_op op; } opname_to_op[] = { {"eq", W_QUERY_ICMP_EQ}, {"ne", W_QUERY_ICMP_NE}, {"gt", W_QUERY_ICMP_GT}, {"ge", W_QUERY_ICMP_GE}, {"lt", W_QUERY_ICMP_LT}, {"le", W_QUERY_ICMP_LE}, }; // term is a json array that looks like: // ["size", "eq", 1024] void parse_int_compare(const json_ref& term, struct w_query_int_compare* comp) { const char *opname; size_t i; bool found = false; if (json_array_size(term) != 3) { throw QueryParseError("integer comparator must have 3 elements"); } if (!json_is_string(json_array_get(term, 1))) { throw QueryParseError("integer comparator op must be a string"); } if (!json_is_integer(json_array_get(term, 2))) { throw QueryParseError("integer comparator operand must be an integer"); } opname = json_string_value(json_array_get(term, 1)); for (i = 0; i < sizeof(opname_to_op)/sizeof(opname_to_op[0]); i++) { if (!strcmp(opname_to_op[i].opname, opname)) { comp->op = opname_to_op[i].op; found = true; break; } } if (!found) { throw QueryParseError(watchman::to( "integer comparator opname `", opname, "' is invalid")); } comp->operand = json_integer_value(json_array_get(term, 2)); } bool eval_int_compare(json_int_t ival, struct w_query_int_compare *comp) { switch (comp->op) { case W_QUERY_ICMP_EQ: return ival == comp->operand; case W_QUERY_ICMP_NE: return ival != comp->operand; case W_QUERY_ICMP_GT: return ival > comp->operand; case W_QUERY_ICMP_GE: return ival >= comp->operand; case W_QUERY_ICMP_LT: return ival < comp->operand; case W_QUERY_ICMP_LE: return ival <= comp->operand; default: // Not possible to get here, but some compilers don't realize return false; } } class SizeExpr : public QueryExpr { w_query_int_compare comp; public: explicit SizeExpr(w_query_int_compare comp) : comp(comp) {} bool evaluate(struct w_query_ctx*, const FileResult* file) override { // Removed files never evaluate true if (!file->exists()) { return false; } return eval_int_compare(file->stat().size, &comp); } static std::unique_ptr parse(w_query*, const json_ref& term) { if (!json_is_array(term)) { throw QueryParseError("Expected array for 'size' term"); } w_query_int_compare comp; parse_int_compare(term, &comp); return watchman::make_unique(comp); } }; W_TERM_PARSER("size", SizeExpr::parse) /* vim:ts=2:sw=2:et: */ watchman-4.9.0/query/match.cpp000066400000000000000000000062011314236077500163020ustar00rootroot00000000000000/* Copyright 2013-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #include "make_unique.h" #include "thirdparty/wildmatch/wildmatch.h" #include using watchman::CaseSensitivity; class WildMatchExpr : public QueryExpr { std::string pattern; CaseSensitivity caseSensitive; bool wholename; bool noescape; bool includedotfiles; public: WildMatchExpr( const char* pat, CaseSensitivity caseSensitive, bool wholename, bool noescape, bool includedotfiles) : pattern(pat), caseSensitive(caseSensitive), wholename(wholename), noescape(noescape), includedotfiles(includedotfiles) {} bool evaluate(struct w_query_ctx* ctx, const FileResult* file) override { w_string_piece str; bool res; if (wholename) { str = w_query_ctx_get_wholename(ctx); } else { str = file->baseName(); } #ifdef _WIN32 // Translate to unix style slashes for wildmatch w_string normBuf = str.asWString().normalizeSeparators(); str = normBuf; #endif res = wildmatch(pattern.c_str(), str.data(), (includedotfiles ? 0 : WM_PERIOD) | (noescape ? WM_NOESCAPE : 0) | (wholename ? WM_PATHNAME : 0) | (caseSensitive == CaseSensitivity::CaseInSensitive ? WM_CASEFOLD : 0), 0) == WM_MATCH; return res; } static std::unique_ptr parse(w_query*, const json_ref& term, CaseSensitivity case_sensitive) { const char *ignore, *pattern, *scope = "basename"; const char *which = case_sensitive == CaseSensitivity::CaseInSensitive ? "imatch" : "match"; int noescape = 0; int includedotfiles = 0; if (json_unpack( term, "[s,s,s,{s?b,s?b}]", &ignore, &pattern, &scope, "noescape", &noescape, "includedotfiles", &includedotfiles) != 0 && json_unpack(term, "[s,s,s]", &ignore, &pattern, &scope) != 0 && json_unpack(term, "[s,s]", &ignore, &pattern) != 0) { throw QueryParseError( "Expected [\"", which, "\", \"pattern\", \"scope\"?]"); } if (strcmp(scope, "basename") && strcmp(scope, "wholename")) { throw QueryParseError( "Invalid scope '", scope, "' for ", which, " expression"); } return watchman::make_unique( pattern, case_sensitive, !strcmp(scope, "wholename"), noescape, includedotfiles); } static std::unique_ptr parseMatch( w_query* query, const json_ref& term) { return parse(query, term, query->case_sensitive); } static std::unique_ptr parseIMatch( w_query* query, const json_ref& term) { return parse(query, term, CaseSensitivity::CaseInSensitive); } }; W_TERM_PARSER("match", WildMatchExpr::parseMatch) W_TERM_PARSER("imatch", WildMatchExpr::parseIMatch) W_CAP_REG("wildmatch") W_CAP_REG("wildmatch-multislash") /* vim:ts=2:sw=2:et: */ watchman-4.9.0/query/name.cpp000066400000000000000000000107411314236077500161320ustar00rootroot00000000000000/* Copyright 2013-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" using watchman::CaseSensitivity; class NameExpr : public QueryExpr { w_string name; std::unordered_set set; CaseSensitivity caseSensitive; bool wholename; explicit NameExpr( std::unordered_set&& set, CaseSensitivity caseSensitive, bool wholename) : set(std::move(set)), caseSensitive(caseSensitive), wholename(wholename) {} public: bool evaluate(struct w_query_ctx* ctx, const FileResult* file) override { if (!set.empty()) { bool matched; w_string str; if (wholename) { str = w_query_ctx_get_wholename(ctx); if (caseSensitive == CaseSensitivity::CaseInSensitive) { str = str.piece().asLowerCase(); } } else { str = caseSensitive == CaseSensitivity::CaseInSensitive ? file->baseName().asLowerCase() : file->baseName().asWString(); } matched = set.find(str) != set.end(); return matched; } w_string_piece str; if (wholename) { str = w_query_ctx_get_wholename(ctx); } else { str = file->baseName(); } if (caseSensitive == CaseSensitivity::CaseInSensitive) { return w_string_equal_caseless(str, name); } return str == name; } static std::unique_ptr parse(w_query*, const json_ref& term, CaseSensitivity caseSensitive) { const char *pattern = nullptr, *scope = "basename"; const char *which = caseSensitive == CaseSensitivity::CaseInSensitive ? "iname" : "name"; std::unordered_set set; if (!json_is_array(term)) { throw QueryParseError("Expected array for '", which, "' term"); } if (json_array_size(term) > 3) { throw QueryParseError( "Invalid number of arguments for '", which, "' term"); } if (json_array_size(term) == 3) { const auto& jscope = term.at(2); if (!json_is_string(jscope)) { throw QueryParseError("Argument 3 to '", which, "' must be a string"); } scope = json_string_value(jscope); if (strcmp(scope, "basename") && strcmp(scope, "wholename")) { throw QueryParseError( "Invalid scope '", scope, "' for ", which, " expression"); } } const auto& name = term.at(1); if (json_is_array(name)) { uint32_t i; for (i = 0; i < json_array_size(name); i++) { if (!json_is_string(json_array_get(name, i))) { throw QueryParseError( "Argument 2 to '", which, "' must be either a string or an array of string"); } } set.reserve(json_array_size(name)); for (i = 0; i < json_array_size(name); i++) { w_string_t* element; const char* ele; const auto& jele = name.at(i); ele = json_string_value(jele); // We need to make a copy of the string since we do in-place separator // normalization on the paths. if (caseSensitive == CaseSensitivity::CaseInSensitive) { element = w_string_new_lower_typed(ele, json_to_w_string(jele).type()); } else { element = w_string_new_typed(ele, json_to_w_string(jele).type()); } w_string_in_place_normalize_separators(&element); set.insert(element); w_string_delref(element); } } else if (json_is_string(name)) { pattern = json_string_value(name); } else { throw QueryParseError( "Argument 2 to '", which, "' must be either a string or an array of string"); } auto data = new NameExpr(std::move(set), caseSensitive, !strcmp(scope, "wholename")); if (pattern) { // We need to make a copy of the string since we do in-place separator // normalization on the paths. w_string pat(pattern, json_to_w_string(name).type()); data->name = w_string_normalize_separators(pat); } return std::unique_ptr(data); } static std::unique_ptr parseName( w_query* query, const json_ref& term) { return parse(query, term, query->case_sensitive); } static std::unique_ptr parseIName( w_query* query, const json_ref& term) { return parse(query, term, CaseSensitivity::CaseInSensitive); } }; W_TERM_PARSER("name", NameExpr::parseName) W_TERM_PARSER("iname", NameExpr::parseIName) /* vim:ts=2:sw=2:et: */ watchman-4.9.0/query/parse.cpp000066400000000000000000000263761314236077500163370ustar00rootroot00000000000000/* Copyright 2013-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" using CaseSensitivity = watchman::CaseSensitivity; // This can't be a simple global because other compilation units // may try to mutate it before this compilation unit has had its // constructors run, leading to SIOF. static std::unordered_map& term_hash() { static std::unordered_map hash; return hash; } QueryExpr::~QueryExpr() {} bool w_query_register_expression_parser( const char *term, w_query_expr_parser parser) { char capname[128]; w_string name(term, W_STRING_UNICODE); snprintf(capname, sizeof(capname), "term-%s", term); w_capability_register(capname); term_hash()[name] = parser; return true; } /* parse an expression term. It can be one of: * "term" * ["term" ] */ std::unique_ptr w_query_expr_parse( w_query* query, const json_ref& exp) { w_string name; if (json_is_string(exp)) { name = json_to_w_string(exp); } else if (json_is_array(exp) && json_array_size(exp) > 0) { const auto& first = exp.at(0); if (!json_is_string(first)) { throw QueryParseError("first element of an expression must be a string"); } name = json_to_w_string(first); } else { throw QueryParseError("expected array or string for an expression"); } auto it = term_hash().find(name); if (it == term_hash().end()) { throw QueryParseError( watchman::to("unknown expression term '", name, "'")); } return it->second(query, exp); } static bool parse_since(w_query* res, const json_ref& query) { auto since = query.get_default("since"); if (!since) { return true; } auto spec = ClockSpec::parseOptionalClockSpec(since); if (spec) { // res owns the ref to spec res->since_spec = std::move(spec); return true; } throw QueryParseError("invalid value for 'since'"); } static w_string parse_suffix(const json_ref& ele) { if (!json_is_string(ele)) { throw QueryParseError("'suffix' must be a string or an array of strings"); } auto str = json_to_w_string(ele); return w_string(w_string_new_lower_typed(str.c_str(), str.type()), false); } static void parse_suffixes(w_query* res, const json_ref& query) { size_t i; auto suffixes = query.get_default("suffix"); if (!suffixes) { return; } if (json_is_string(suffixes)) { auto suff = parse_suffix(suffixes); res->suffixes.emplace_back(std::move(suff)); return; } if (!json_is_array(suffixes)) { throw QueryParseError("'suffix' must be a string or an array of strings"); } res->suffixes.reserve(json_array_size(suffixes)); for (i = 0; i < json_array_size(suffixes); i++) { const auto& ele = suffixes.at(i); if (!json_is_string(ele)) { throw QueryParseError("'suffix' must be a string or an array of strings"); } auto suff = parse_suffix(ele); res->suffixes.emplace_back(std::move(suff)); } } static bool parse_paths(w_query* res, const json_ref& query) { size_t i; auto paths = query.get_default("path"); if (!paths) { return true; } if (!json_is_array(paths)) { throw QueryParseError("'path' must be an array"); } res->paths.resize(json_array_size(paths)); for (i = 0; i < json_array_size(paths); i++) { const auto& ele = paths.at(i); const char *name = NULL; res->paths[i].depth = -1; if (json_is_string(ele)) { name = json_string_value(ele); } else if (json_unpack(ele, "{s:s, s:i}", "path", &name, "depth", &res->paths[i].depth ) != 0) { throw QueryParseError( "expected object with 'path' and 'depth' properties"); } auto nameCopy = w_string_new_typed(name, W_STRING_BYTE); w_string_in_place_normalize_separators(&nameCopy); res->paths[i].name = nameCopy; } return true; } W_CAP_REG("relative_root") static void parse_relative_root( const std::shared_ptr& root, w_query* res, const json_ref& query) { auto relative_root = query.get_default("relative_root"); if (!relative_root) { return; } if (!json_is_string(relative_root)) { throw QueryParseError("'relative_root' must be a string"); } w_string path = json_to_w_string(relative_root); w_string canon_path = w_string_canon_path(path); res->relative_root = w_string::pathCat({root->root_path, canon_path}); res->relative_root_slash = w_string::printf("%s/", res->relative_root.c_str()); } static void parse_query_expression(w_query* res, const json_ref& query) { auto exp = query.get_default("expression"); if (!exp) { // Empty expression means that we emit all generated files return; } res->expr = w_query_expr_parse(res, exp); return; } static void parse_sync(w_query* res, const json_ref& query) { int value = DEFAULT_QUERY_SYNC_MS.count(); if (query && json_unpack(query, "{s?:i*}", "sync_timeout", &value) != 0) { throw QueryParseError("sync_timeout must be an integer value >= 0"); } if (value < 0) { throw QueryParseError("sync_timeout must be an integer value >= 0"); } res->sync_timeout = std::chrono::milliseconds(value); } static void parse_lock_timeout(w_query* res, const json_ref& query) { int value = DEFAULT_QUERY_SYNC_MS.count(); if (query && json_unpack(query, "{s?:i*}", "lock_timeout", &value) != 0) { throw QueryParseError("lock_timeout must be an integer value >= 0"); } if (value < 0) { throw QueryParseError("lock_timeout must be an integer value >= 0"); } res->lock_timeout = value; } W_CAP_REG("dedup_results") static void parse_dedup(w_query* res, const json_ref& query) { int value = 0; if (query && json_unpack(query, "{s?:b*}", "dedup_results", &value) != 0) { throw QueryParseError("dedup_results must be a boolean"); } res->dedup_results = (bool) value; } static void parse_empty_on_fresh_instance(w_query* res, const json_ref& query) { int value = 0; if (query && json_unpack(query, "{s?:b*}", "empty_on_fresh_instance", &value) != 0) { throw QueryParseError("empty_on_fresh_instance must be a boolean"); } res->empty_on_fresh_instance = (bool) value; } static void parse_case_sensitive( w_query* res, const std::shared_ptr& root, const json_ref& query) { int value = root->case_sensitive == CaseSensitivity::CaseSensitive; if (query && json_unpack(query, "{s?:b*}", "case_sensitive", &value) != 0) { throw QueryParseError("case_sensitive must be a boolean"); } res->case_sensitive = value ? CaseSensitivity::CaseSensitive : CaseSensitivity::CaseInSensitive; } std::shared_ptr w_query_parse( const std::shared_ptr& root, const json_ref& query) { auto result = std::make_shared(); auto res = result.get(); parse_case_sensitive(res, root, query); parse_sync(res, query); parse_dedup(res, query); parse_lock_timeout(res, query); parse_relative_root(root, res, query); parse_empty_on_fresh_instance(res, query); /* Look for path generators */ parse_paths(res, query); /* Look for glob generators */ parse_globs(res, query); /* Look for suffix generators */ parse_suffixes(res, query); /* Look for since generator */ parse_since(res, query); parse_query_expression(res, query); parse_field_list(query.get_default("fields"), &res->fieldList); for (auto& f : res->fieldList) { if (f->futureMake) { res->renderUsesFutures = true; break; } } res->query_spec = query; return result; } void w_query_legacy_field_list(w_query_field_list* flist) { static const char *names[] = { "name", "exists", "size", "mode", "uid", "gid", "mtime", "ctime", "ino", "dev", "nlink", "new", "cclock", "oclock" }; uint8_t i; auto list = json_array(); for (i = 0; i < sizeof(names)/sizeof(names[0]); i++) { json_array_append_new(list, typed_string_to_json(names[i], W_STRING_UNICODE)); } parse_field_list(list, flist); } // Translate from the legacy array into the new style, then // delegate to the main parser. // We build a big anyof expression std::shared_ptr w_query_parse_legacy( const std::shared_ptr& root, const json_ref& args, int start, uint32_t* next_arg, const char* clockspec, json_ref* expr_p) { bool include = true; bool negated = false; uint32_t i; const char *term_name = "match"; json_ref included, excluded; auto query_obj = json_object(); if (!json_is_array(args)) { throw QueryParseError("Expected an array"); } for (i = start; i < json_array_size(args); i++) { const char *arg = json_string_value(json_array_get(args, i)); if (!arg) { /* not a string value! */ throw QueryParseError(watchman::to( "rule @ position ", i, " is not a string value")); } } for (i = start; i < json_array_size(args); i++) { const char *arg = json_string_value(json_array_get(args, i)); if (!strcmp(arg, "--")) { i++; break; } if (!strcmp(arg, "-X")) { include = false; continue; } if (!strcmp(arg, "-I")) { include = true; continue; } if (!strcmp(arg, "!")) { negated = true; continue; } if (!strcmp(arg, "-P")) { term_name = "ipcre"; continue; } if (!strcmp(arg, "-p")) { term_name = "pcre"; continue; } // Which group are we going to file it into json_ref container; if (include) { if (!included) { included = json_array({typed_string_to_json("anyof", W_STRING_UNICODE)}); } container = included; } else { if (!excluded) { excluded = json_array({typed_string_to_json("anyof", W_STRING_UNICODE)}); } container = excluded; } auto term = json_array({typed_string_to_json(term_name, W_STRING_UNICODE), typed_string_to_json(arg), typed_string_to_json("wholename", W_STRING_UNICODE)}); if (negated) { term = json_array({typed_string_to_json("not", W_STRING_UNICODE), term}); } json_array_append_new(container, std::move(term)); // Reset negated flag negated = false; term_name = "match"; } if (excluded) { excluded = json_array({typed_string_to_json("not", W_STRING_UNICODE), excluded}); } json_ref query_array; if (included && excluded) { query_array = json_array( {typed_string_to_json("allof", W_STRING_UNICODE), excluded, included}); } else if (included) { query_array = included; } else { query_array = excluded; } // query_array may be NULL, which means find me all files. // Otherwise, it is the expression we want to use. if (query_array) { json_object_set_new_nocheck( query_obj, "expression", std::move(query_array)); } // For trigger if (next_arg) { *next_arg = i; } if (clockspec) { json_object_set_new_nocheck(query_obj, "since", typed_string_to_json(clockspec, W_STRING_UNICODE)); } /* compose the query with the field list */ auto query = w_query_parse(root, query_obj); if (expr_p) { *expr_p = query_obj; } if (query) { w_query_legacy_field_list(&query->fieldList); } return query; } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/query/pcre.cpp000066400000000000000000000054471314236077500161520ustar00rootroot00000000000000/* Copyright 2013-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #include "make_unique.h" #ifdef HAVE_PCRE_H using watchman::CaseSensitivity; class PcreExpr : public QueryExpr { pcre *re; pcre_extra *extra; bool wholename; public: explicit PcreExpr(pcre* re, pcre_extra* extra, bool wholename) : re(re), extra(extra), wholename(wholename) {} ~PcreExpr() override { if (re) { pcre_free(re); } if (extra) { pcre_free(extra); } } bool evaluate(struct w_query_ctx* ctx, const FileResult* file) override { w_string_piece str; int rc; if (wholename) { str = w_query_ctx_get_wholename(ctx); } else { str = file->baseName(); } rc = pcre_exec(re, extra, str.data(), str.size(), 0, 0, nullptr, 0); if (rc == PCRE_ERROR_NOMATCH) { return false; } if (rc >= 0) { return true; } // An error. It's not actionable here return false; } static std::unique_ptr parse(w_query*, const json_ref& term, CaseSensitivity caseSensitive) { const char *ignore, *pattern, *scope = "basename"; const char *which = caseSensitive == CaseSensitivity::CaseInSensitive ? "ipcre" : "pcre"; pcre* re; const char* errptr = nullptr; int erroff = 0; int errcode = 0; if (json_unpack(term, "[s,s,s]", &ignore, &pattern, &scope) != 0 && json_unpack(term, "[s,s]", &ignore, &pattern) != 0) { throw QueryParseError(watchman::to( "Expected [\"", which, "\", \"pattern\", \"scope\"?]")); } if (strcmp(scope, "basename") && strcmp(scope, "wholename")) { throw QueryParseError(watchman::to( "Invalid scope '", scope, "' for ", which, " expression")); } re = pcre_compile2( pattern, caseSensitive == CaseSensitivity::CaseInSensitive ? PCRE_CASELESS : 0, &errcode, &errptr, &erroff, nullptr); if (!re) { throw QueryParseError(watchman::to( "invalid ", which, ": code ", errcode, " ", errptr, " at offset ", erroff, " in ", pattern)); } return watchman::make_unique( re, pcre_study(re, 0, &errptr), !strcmp(scope, "wholename")); } static std::unique_ptr parsePcre( w_query* query, const json_ref& term) { return parse(query, term, query->case_sensitive); } static std::unique_ptr parseIPcre( w_query* query, const json_ref& term) { return parse(query, term, CaseSensitivity::CaseInSensitive); } }; W_TERM_PARSER("pcre", PcreExpr::parsePcre) W_TERM_PARSER("ipcre", PcreExpr::parseIPcre) #endif /* vim:ts=2:sw=2:et: */ watchman-4.9.0/query/since.cpp000066400000000000000000000076551314236077500163250ustar00rootroot00000000000000/* Copyright 2013-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #include "make_unique.h" enum since_what { SINCE_OCLOCK, SINCE_CCLOCK, SINCE_MTIME, SINCE_CTIME }; static struct { enum since_what value; const char* label; } allowed_fields[] = { {since_what::SINCE_OCLOCK, "oclock"}, {since_what::SINCE_CCLOCK, "cclock"}, {since_what::SINCE_MTIME, "mtime"}, {since_what::SINCE_CTIME, "ctime"}, }; class SinceExpr : public QueryExpr { std::unique_ptr spec; enum since_what field; public: explicit SinceExpr(std::unique_ptr spec, enum since_what field) : spec(std::move(spec)), field(field) {} bool evaluate(struct w_query_ctx* ctx, const FileResult* file) override { time_t tval = 0; auto since = spec->evaluate( ctx->clockAtStartOfQuery.position(), ctx->lastAgeOutTickValueAtStartOfQuery); // Note that we use >= for the time comparisons in here so that we // report the things that changed inclusive of the boundary presented. // This is especially important for clients using the coarse unix // timestamp as the since basis, as they would be much more // likely to miss out on changes if we didn't. switch (field) { case since_what::SINCE_OCLOCK: case since_what::SINCE_CCLOCK: { const auto& clock = (field == since_what::SINCE_OCLOCK) ? file->otime() : file->ctime(); if (since.is_timestamp) { return clock.timestamp >= since.timestamp; } if (since.clock.is_fresh_instance) { return file->exists(); } return clock.ticks > since.clock.ticks; } case since_what::SINCE_MTIME: tval = file->stat().mtime.tv_sec; break; case since_what::SINCE_CTIME: tval = file->stat().ctime.tv_sec; break; } assert(since.is_timestamp); return tval >= since.timestamp; } static std::unique_ptr parse(w_query*, const json_ref& term) { auto selected_field = since_what::SINCE_OCLOCK; const char* fieldname = "oclock"; if (!json_is_array(term)) { throw QueryParseError("\"since\" term must be an array"); } if (json_array_size(term) < 2 || json_array_size(term) > 3) { throw QueryParseError("\"since\" term has invalid number of parameters"); } const auto& jval = term.at(1); auto spec = ClockSpec::parseOptionalClockSpec(jval); if (!spec) { throw QueryParseError("invalid clockspec for \"since\" term"); } if (spec->tag == w_cs_named_cursor) { throw QueryParseError("named cursors are not allowed in \"since\" terms"); } if (term.array().size() == 3) { const auto& field = term.at(2); size_t i; bool valid = false; fieldname = json_string_value(field); if (!fieldname) { throw QueryParseError("field name for \"since\" term must be a string"); } for (i = 0; i < sizeof(allowed_fields) / sizeof(allowed_fields[0]); ++i) { if (!strcmp(allowed_fields[i].label, fieldname)) { selected_field = allowed_fields[i].value; valid = true; break; } } if (!valid) { throw QueryParseError( "invalid field name \"", fieldname, "\" for \"since\" term"); } } switch (selected_field) { case since_what::SINCE_CTIME: case since_what::SINCE_MTIME: if (spec->tag != w_cs_timestamp) { throw QueryParseError( "field \"", fieldname, "\" requires a timestamp value for comparison in \"since\" term"); } break; case since_what::SINCE_OCLOCK: case since_what::SINCE_CCLOCK: /* we'll work with clocks or timestamps */ break; } return watchman::make_unique(std::move(spec), selected_field); } }; W_TERM_PARSER("since", SinceExpr::parse) /* vim:ts=2:sw=2:et: */ watchman-4.9.0/query/suffix.cpp000066400000000000000000000015161314236077500165160ustar00rootroot00000000000000/* Copyright 2013-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #include "make_unique.h" class SuffixExpr : public QueryExpr { w_string suffix; public: explicit SuffixExpr(w_string suffix) : suffix(suffix) {} bool evaluate(struct w_query_ctx*, const FileResult* file) override { return file->baseName().hasSuffix(suffix); } static std::unique_ptr parse(w_query*, const json_ref& term) { const char *ignore, *suffix; if (json_unpack(term, "[s,s]", &ignore, &suffix) != 0) { throw QueryParseError("must use [\"suffix\", \"suffixstring\"]"); } w_string str(w_string_new_lower_typed(suffix, W_STRING_BYTE), false); return watchman::make_unique(str); } }; W_TERM_PARSER("suffix", SuffixExpr::parse) /* vim:ts=2:sw=2:et: */ watchman-4.9.0/query/type.cpp000066400000000000000000000026561314236077500162010ustar00rootroot00000000000000/* Copyright 2013-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #include "make_unique.h" class TypeExpr : public QueryExpr { char arg; public: explicit TypeExpr(char arg) : arg(arg) {} bool evaluate(struct w_query_ctx*, const FileResult* file) override { switch (arg) { #ifndef _WIN32 case 'b': return S_ISBLK(file->stat().mode); case 'c': return S_ISCHR(file->stat().mode); case 'p': return S_ISFIFO(file->stat().mode); case 's': return S_ISSOCK(file->stat().mode); #endif case 'd': return file->stat().isDir(); case 'f': return file->stat().isFile(); case 'l': return file->stat().isSymlink(); #ifdef S_ISDOOR case 'D': return S_ISDOOR(file->stat().mode); #endif default: return false; } } static std::unique_ptr parse(w_query*, const json_ref& term) { const char *ignore, *typestr, *found; char arg; if (json_unpack(term, "[s,u]", &ignore, &typestr) != 0) { throw QueryParseError("must use [\"type\", \"typestr\"]"); } found = strpbrk(typestr, "bcdfplsD"); if (!found || strlen(typestr) > 1) { throw QueryParseError("invalid type string '", typestr, "'"); } arg = *found; return watchman::make_unique(arg); } }; W_TERM_PARSER("type", TypeExpr::parse) /* vim:ts=2:sw=2:et: */ watchman-4.9.0/root/000077500000000000000000000000001314236077500143215ustar00rootroot00000000000000watchman-4.9.0/root/ageout.cpp000066400000000000000000000023411314236077500163110ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" void watchman_root::considerAgeOut() { time_t now; if (gc_interval == 0) { return; } time(&now); if (now <= view()->getLastAgeOutTimeStamp() + gc_interval) { // Don't check too often return; } performAgeOut(std::chrono::seconds(gc_age)); } void watchman_root::performAgeOut(std::chrono::seconds min_age) { // Find deleted nodes older than the gc_age setting. // This is particularly useful in cases where your tree observes a // large number of creates and deletes for many unique filenames in // a given dir (eg: temporary/randomized filenames generated as part // of build tooling or atomic renames) w_perf_t sample("age_out"); view()->ageOut(sample, std::chrono::seconds(min_age)); // Age out cursors too. { auto cursors = inner.cursors.wlock(); auto it = cursors->begin(); while (it != cursors->end()) { if (it->second < view()->getLastAgeOutTickValue()) { it = cursors->erase(it); } else { ++it; } } } if (sample.finish()) { sample.add_root_meta(shared_from_this()); sample.log(); } } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/root/crawler.cpp000066400000000000000000000104761314236077500164740ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman_system.h" #include "InMemoryView.h" #include "watchman.h" #include "watchman_error_category.h" static void apply_dir_size_hint(struct watchman_dir *dir, uint32_t ndirs, uint32_t nfiles) { if (dir->files.empty() && nfiles > 0) { dir->files.reserve(nfiles); } if (dir->dirs.empty() && ndirs > 0) { dir->dirs.reserve(ndirs); } } namespace watchman { void InMemoryView::crawler( const std::shared_ptr& root, SyncView::LockedPtr& view, PendingCollection::LockedPtr& coll, const w_string& dir_name, struct timeval now, bool recursive) { struct watchman_file *file; const watchman_dir_ent* dirent; char path[WATCHMAN_NAME_MAX]; bool stat_all = false; if (watcher_->flags & WATCHER_HAS_PER_FILE_NOTIFICATIONS) { stat_all = watcher_->flags & WATCHER_COALESCED_RENAME; } else { // If the watcher doesn't give us per-file notifications for // watched dirs, then we'll end up explicitly tracking them // and will get updates for the files explicitly. // We don't need to look at the files again when we crawl stat_all = false; } auto dir = resolveDir(view, dir_name, true); memcpy(path, dir_name.data(), dir_name.size()); path[dir_name.size()] = 0; w_log(W_LOG_DBG, "opendir(%s) recursive=%s\n", path, recursive ? "true" : "false"); /* Start watching and open the dir for crawling. * Whether we open the dir prior to watching or after is watcher specific, * so the operations are rolled together in our abstraction */ std::unique_ptr osdir; try { osdir = watcher_->startWatchDir(root, dir, now, path); } catch (const std::system_error& err) { handle_open_errno(root, dir, now, "opendir", err.code()); markDirDeleted(view, dir, now, true); return; } if (dir->files.empty()) { // Pre-size our hash(es) if we can, so that we can avoid collisions // and re-hashing during initial crawl uint32_t num_dirs = 0; #ifndef _WIN32 struct stat st; int dfd = osdir->getFd(); if (dfd != -1 && fstat(dfd, &st) == 0) { num_dirs = (uint32_t)st.st_nlink; } #endif // st.st_nlink is usually number of dirs + 2 (., ..). // If it is less than 2 then it doesn't follow that convention. // We just pass it through for the dir size hint and the hash // table implementation will round that up to the next power of 2 apply_dir_size_hint( dir, num_dirs, uint32_t(root->config.getInt("hint_num_files_per_dir", 64))); } /* flag for delete detection */ for (auto& it : dir->files) { auto file = it.second.get(); if (file->exists) { file->maybe_deleted = true; } } try { while ((dirent = osdir->readDir()) != nullptr) { // Don't follow parent/self links if (dirent->d_name[0] == '.' && (!strcmp(dirent->d_name, ".") || !strcmp(dirent->d_name, ".."))) { continue; } // Queue it up for analysis if the file is newly existing w_string name(dirent->d_name, W_STRING_BYTE); file = dir->getChildFile(name); if (file) { file->maybe_deleted = false; } if (!file || !file->exists || stat_all || recursive) { auto full_path = w_dir_path_cat_str(dir, name); w_log( W_LOG_DBG, "in crawler calling process_path on %s\n", full_path.c_str()); processPath( root, view, coll, full_path, now, ((recursive || !file || !file->exists) ? W_PENDING_RECURSIVE : 0), dirent); } } } catch (const std::system_error& exc) { log(ERR, "Error while reading dir ", path, ": ", exc.what(), ", re-adding to pending list to re-assess\n"); coll->add(path, now, 0); } osdir.reset(); // Anything still in maybe_deleted is actually deleted. // Arrange to re-process it shortly for (auto& it : dir->files) { auto file = it.second.get(); if (file->exists && (file->maybe_deleted || (file->stat.isDir() && recursive))) { coll->add( dir, file->getName().data(), now, recursive ? W_PENDING_RECURSIVE : 0); } } } } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/root/dir.cpp000066400000000000000000000014341314236077500156050ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" void watchman_dir::Deleter::operator()(watchman_file* file) const { free_file_node(file); } watchman_dir::watchman_dir(w_string name, watchman_dir* parent) : name(name), parent(parent) {} w_string watchman_dir::getFullPath() const { return w_dir_path_cat_str(this, w_string_piece()); } watchman_file* watchman_dir::getChildFile(w_string name) const { auto it = files.find(name.piece()); if (it == files.end()) { return nullptr; } return it->second.get(); } watchman_dir* watchman_dir::getChildDir(w_string name) const { auto it = dirs.find(name); if (it == dirs.end()) { return nullptr; } return it->second.get(); } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/root/file.cpp000066400000000000000000000062761314236077500157570ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #ifdef __APPLE__ # include #endif bool did_file_change( const watchman::FileInformation* saved, const watchman::FileInformation* fresh) { /* we have to compare this way because the stat structure * may contain fields that vary and that don't impact our * understanding of the file */ #define FIELD_CHG(name) \ if (saved->name != fresh->name) { \ return true; \ } // Can't compare with memcmp due to padding and garbage in the struct // on OpenBSD, which has a 32-bit tv_sec + 64-bit tv_nsec #define TIMESPEC_FIELD_CHG(wat) { \ struct timespec a = saved->wat##time; \ struct timespec b = fresh->wat##time; \ if (a.tv_sec != b.tv_sec || a.tv_nsec != b.tv_nsec) { \ return true; \ } \ } FIELD_CHG(mode); if (!saved->isDir()) { FIELD_CHG(size); FIELD_CHG(nlink); } FIELD_CHG(dev); FIELD_CHG(ino); FIELD_CHG(uid); FIELD_CHG(gid); // Don't care about st_blocks // Don't care about st_blksize // Don't care about st_atimespec TIMESPEC_FIELD_CHG(m); TIMESPEC_FIELD_CHG(c); return false; } void watchman_file::removeFromFileList() { if (next) { next->prev = prev; } // file->prev points to the address of either // `previous_file->next` OR `root->inner.latest_file`. // This next assignment is therefore fixing up either // the linkage from the prior file node or from the // head of the list. if (prev) { *prev = next; } } void watchman_file::removeFromSuffixList() { if (suffix_next) { suffix_next->suffix_prev = suffix_prev; } // suffix_prev points to the address of either // `previous_file->suffix_next` OR the `file_list_head.head` // tracked in `root->inner.suffixes`. // This next assignment is therefore fixing up either // the linkage from the prior file node or from the // head of the list. if (suffix_prev) { *suffix_prev = suffix_next; } } /* We embed our name string in the tail end of the struct that we're * allocating here. This turns out to be more memory efficient due * to the way that the allocator bins sizeof(watchman_file); there's * a bit of unusable space after the end of the structure that happens * to be about the right size to fit a typical filename. * Embedding the name in the end allows us to make the most of this * memory and free up the separate heap allocation for file_name. */ std::unique_ptr watchman_file::make( const w_string& name, watchman_dir* parent) { auto file = (watchman_file*)calloc( 1, sizeof(watchman_file) + sizeof(uint32_t) + name.size() + 1); std::unique_ptr filePtr( file, watchman_dir::Deleter()); auto lenPtr = (uint32_t*)(file + 1); *lenPtr = name.size(); auto data = (char*)(lenPtr + 1); memcpy(data, name.data(), name.size()); data[name.size()] = 0; file->parent = parent; file->exists = true; return filePtr; } watchman_file::~watchman_file() { removeFromFileList(); removeFromSuffixList(); } void free_file_node(struct watchman_file* file) { file->~watchman_file(); free(file); } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/root/init.cpp000066400000000000000000000054361314236077500160000ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #include "InMemoryView.h" #include "make_unique.h" static json_ref load_root_config(const char* path) { char cfgfilename[WATCHMAN_NAME_MAX]; json_error_t err; snprintf(cfgfilename, sizeof(cfgfilename), "%s/.watchmanconfig", path); if (!w_path_exists(cfgfilename)) { if (errno == ENOENT) { return nullptr; } w_log(W_LOG_ERR, "%s is not accessible: %s\n", cfgfilename, strerror(errno)); return nullptr; } auto res = json_load_file(cfgfilename, 0, &err); if (!res) { w_log(W_LOG_ERR, "failed to parse json from %s: %s\n", cfgfilename, err.text); } return res; } void watchman_root::applyIgnoreConfiguration() { uint8_t i; json_t *ignores; ignores = config.get("ignore_dirs"); if (!ignores) { return; } if (!json_is_array(ignores)) { w_log(W_LOG_ERR, "ignore_dirs must be an array of strings\n"); return; } for (i = 0; i < json_array_size(ignores); i++) { auto jignore = json_array_get(ignores, i); if (!json_is_string(jignore)) { w_log(W_LOG_ERR, "ignore_dirs must be an array of strings\n"); continue; } auto name = json_to_w_string(jignore); auto fullname = w_string::pathCat({root_path, name}); ignore.add(fullname, false); w_log(W_LOG_DBG, "ignoring %s recursively\n", fullname.c_str()); } } // internal initialization for root void watchman_root::init() { // This just opens and releases the dir. If an exception is thrown // it will bubble up. w_dir_open(root_path.c_str()); // We can't use shared_from_this() here as we are being called from // inside the constructor and we'd hit a bad_weak_ptr exception. inner.init(this); time(&inner.last_cmd_timestamp); } void watchman_root::Inner::init(w_root_t* root) { view_ = WatcherRegistry::initWatcher(root); } watchman_root::watchman_root(const w_string& root_path) : root_path(root_path), case_sensitive(watchman::getCaseSensitivityForPath(root_path.c_str())), cookies(root_path), config_file(load_root_config(root_path.c_str())), config(config_file), trigger_settle(int(config.getInt("settle", DEFAULT_SETTLE_PERIOD))), gc_interval( int(config.getInt("gc_interval_seconds", DEFAULT_GC_INTERVAL))), gc_age(int(config.getInt("gc_age_seconds", DEFAULT_GC_AGE))), idle_reap_age( int(config.getInt("idle_reap_age_seconds", DEFAULT_REAP_AGE))), unilateralResponses(std::make_shared()) { ++live_roots; applyIgnoreConfiguration(); applyIgnoreVCSConfiguration(); init(); } watchman_root::~watchman_root() { w_log(W_LOG_DBG, "root: final ref on %s\n", root_path.c_str()); --live_roots; } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/root/iothread.cpp000066400000000000000000000214521314236077500166300ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #include "InMemoryView.h" namespace watchman { std::shared_future InMemoryView::waitUntilReadyToQuery( const std::shared_ptr& root) { auto lockPair = acquireLockedPair(root->recrawlInfo, crawlState_); if (lockPair.second->promise && lockPair.second->future.valid()) { return lockPair.second->future; } if (root->inner.done_initial && !lockPair.first->shouldRecrawl) { // Return an already satisfied future std::promise p; p.set_value(); return p.get_future(); } // Not yet done, so queue up the promise lockPair.second->promise = watchman::make_unique>(); lockPair.second->future = std::shared_future(lockPair.second->promise->get_future()); return lockPair.second->future; } void InMemoryView::fullCrawl( const std::shared_ptr& root, PendingCollection::LockedPtr& pending) { struct timeval start; w_perf_t sample("full-crawl"); if (config_.getBool("iothrottle", false)) { w_ioprio_set_low(); } { auto view = view_.wlock(); // Ensure that we observe these files with a new, distinct clock, // otherwise a fresh subscription established immediately after a watch // can get stuck with an empty view until another change is observed view->mostRecentTick++; gettimeofday(&start, NULL); pending_.wlock()->add(root->root_path, start, W_PENDING_RECURSIVE); // There is the potential for a subtle race condition here. The boolean // parameter indicates whether we want to merge in the set of // notifications pending from the watcher or not. Since we now coalesce // overlaps we must consume our outstanding set before we merge in any // new kernel notification information or we risk missing out on // observing changes that happen during the initial crawl. This // translates to a two level loop; the outer loop sweeps in data from // inotify, then the inner loop processes it and any dirs that we pick up // from recursive processing. while (processPending(root, view, pending, true)) { while (processPending(root, view, pending, false)) { ; } } { auto lockPair = acquireLockedPair(root->recrawlInfo, crawlState_); lockPair.first->shouldRecrawl = false; if (lockPair.second->promise) { lockPair.second->promise->set_value(); lockPair.second->promise.reset(); } root->inner.done_initial = true; } root->cookies.abortAllCookies(); } sample.add_root_meta(root); if (config_.getBool("iothrottle", false)) { w_ioprio_set_normal(); } sample.finish(); sample.force_log(); sample.log(); w_log( W_LOG_ERR, "%scrawl complete\n", root->recrawlInfo.rlock()->recrawlCount ? "re" : ""); } // Performs settle-time actions. // Returns true if the root was reaped and the io thread should terminate. static bool do_settle_things(const std::shared_ptr& root) { // No new pending items were given to us, so consider that // we may now be settled. root->processPendingSymlinkTargets(); if (!root->inner.done_initial) { // we need to recrawl, stop what we're doing here return false; } auto view = std::dynamic_pointer_cast(root->view()); w_assert(view, "we're called from InMemoryView, wat?"); view->warmContentCache(); auto settledPayload = json_object({{"settled", json_true()}}); root->unilateralResponses->enqueue(std::move(settledPayload)); if (root->considerReap()) { root->stopWatch(); return true; } root->considerAgeOut(); return false; } void InMemoryView::clientModeCrawl(const std::shared_ptr& root) { PendingCollection pending; auto lock = pending.wlock(); fullCrawl(root, lock); } bool InMemoryView::handleShouldRecrawl(const std::shared_ptr& root) { { auto info = root->recrawlInfo.rlock(); if (!info->shouldRecrawl) { return false; } } if (!root->inner.cancelled) { auto info = root->recrawlInfo.wlock(); info->recrawlCount++; root->inner.done_initial = false; } return true; } void InMemoryView::ioThread(const std::shared_ptr& root) { int timeoutms, biggest_timeout; PendingCollection pending; auto localPendingLock = pending.wlock(); timeoutms = root->trigger_settle; // Upper bound on sleep delay. These options are measured in seconds. biggest_timeout = root->gc_interval; if (biggest_timeout == 0 || (root->idle_reap_age != 0 && root->idle_reap_age < biggest_timeout)) { biggest_timeout = root->idle_reap_age; } if (biggest_timeout == 0) { biggest_timeout = 86400; } // And convert to milliseconds biggest_timeout *= 1000; while (!stopThreads_) { bool pinged; if (!root->inner.done_initial) { /* first order of business is to find all the files under our root */ fullCrawl(root, localPendingLock); timeoutms = root->trigger_settle; } // Wait for the notify thread to give us pending items, or for // the settle period to expire { w_log(W_LOG_DBG, "poll_events timeout=%dms\n", timeoutms); auto targetPendingLock = pending_.lockAndWait(std::chrono::milliseconds(timeoutms), pinged); w_log(W_LOG_DBG, " ... wake up (pinged=%s)\n", pinged ? "true" : "false"); localPendingLock->append(&*targetPendingLock); } if (handleShouldRecrawl(root)) { fullCrawl(root, localPendingLock); timeoutms = root->trigger_settle; continue; } if (!pinged && localPendingLock->size() == 0) { if (do_settle_things(root)) { break; } timeoutms = std::min(biggest_timeout, timeoutms * 2); continue; } // Otherwise we have pending items to stat and crawl // We are now, by definition, unsettled, so reduce sleep timeout // to the settle duration ready for the next loop through timeoutms = root->trigger_settle; { auto view = view_.wlock(); if (!root->inner.done_initial) { // we need to recrawl. Discard these notifications localPendingLock->drain(); continue; } view->mostRecentTick++; while (processPending(root, view, localPendingLock, false)) { ; } } } } void InMemoryView::processPath( const std::shared_ptr& root, SyncView::LockedPtr& view, PendingCollection::LockedPtr& coll, const w_string& full_path, struct timeval now, int flags, const watchman_dir_ent* pre_stat) { /* From a particular query's point of view, there are four sorts of cookies we * can observe: * 1. Cookies that this query has created. This marks the end of this query's * sync_to_now, so we hide it from the results. * 2. Cookies that another query on the same watch by the same process has * created. This marks the end of that other query's sync_to_now, so from * the point of view of this query we turn a blind eye to it. * 3. Cookies created by another process on the same watch. We're independent * of other processes, so we report these. * 4. Cookies created by a nested watch by the same or a different process. * We're independent of other watches, so we report these. * * The below condition is true for cases 1 and 2 and false for 3 and 4. */ if (w_string_startswith(full_path, cookies_.cookiePrefix())) { bool consider_cookie = (watcher_->flags & WATCHER_HAS_PER_FILE_NOTIFICATIONS) ? ((flags & W_PENDING_VIA_NOTIFY) || !root->inner.done_initial) : true; if (consider_cookie) { cookies_.notifyCookie(full_path); } // Never allow cookie files to show up in the tree return; } if (w_string_equal(full_path, root_path) || (flags & W_PENDING_CRAWL_ONLY) == W_PENDING_CRAWL_ONLY) { crawler( root, view, coll, full_path, now, (flags & W_PENDING_RECURSIVE) == W_PENDING_RECURSIVE); } else { statPath(root, view, coll, full_path, now, flags, pre_stat); } } bool InMemoryView::processPending( const std::shared_ptr& root, SyncView::LockedPtr& view, PendingCollection::LockedPtr& coll, bool pullFromRoot) { if (pullFromRoot) { auto srcLock = pending_.wlock(); coll->append(&*srcLock); } if (!coll->size()) { return false; } w_log( W_LOG_DBG, "processing %d events in %s\n", coll->size(), root_path.c_str()); auto pending = coll->stealItems(); while (pending) { if (!stopThreads_) { processPath( root, view, coll, pending->path, pending->now, pending->flags, nullptr); } pending = std::move(pending->next); } return true; } } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/root/notifythread.cpp000066400000000000000000000027451314236077500175350ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #include "InMemoryView.h" namespace watchman { // we want to consume inotify events as quickly as possible // to minimize the risk that the kernel event buffer overflows, // so we do this as a blocking thread that reads the inotify // descriptor and then queues the filesystem IO work until after // we have drained the inotify descriptor void InMemoryView::notifyThread(const std::shared_ptr& root) { PendingCollection pending; auto localLock = pending.wlock(); if (!watcher_->start(root)) { w_log( W_LOG_ERR, "failed to start root %s, cancelling watch: %s\n", root->root_path.c_str(), root->failure_reason.c_str()); root->cancel(); return; } // signal that we're done here, so that we can start the // io thread after this point pending_.wlock()->ping(); while (!stopThreads_) { // big number because not all watchers can deal with // -1 meaning infinite wait at the moment if (watcher_->waitNotify(86400)) { while (watcher_->consumeNotify(root, localLock)) { if (localLock->size() >= WATCHMAN_BATCH_LIMIT) { break; } if (!watcher_->waitNotify(0)) { break; } } if (localLock->size() > 0) { auto lock = pending_.wlock(); lock->append(&*localLock); lock->ping(); } } } } } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/root/poison.cpp000066400000000000000000000021521314236077500163340ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" void set_poison_state( const w_string& dir, struct timeval now, const char* syscall, const std::error_code& err) { char *why = NULL; if (poisoned_reason) { return; } ignore_result(asprintf( &why, "A non-recoverable condition has triggered. Watchman needs your help!\n" "The triggering condition was at timestamp=%ld: %s(%.*s) -> %s\n" "All requests will continue to fail with this message until you resolve\n" "the underlying problem. You will find more information on fixing this at\n" "%s#poison-%s\n", (long)now.tv_sec, syscall, int(dir.size()), dir.data(), err.message().c_str(), cfg_get_trouble_url(), syscall)); w_log(W_LOG_ERR, "%s", why); // This assignment can race for store with other threads. We don't // care about that; we consider ourselves broken and the worst case // is that we leak a handful of strings around the race poisoned_reason = why; } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/root/reap.cpp000066400000000000000000000017051314236077500157570ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" bool watchman_root::considerReap() const { time_t now; if (idle_reap_age == 0) { return false; } time(&now); if (now > inner.last_cmd_timestamp + idle_reap_age && (triggers.rlock()->empty()) && (now > inner.last_reap_timestamp) && !unilateralResponses->hasSubscribers()) { // We haven't had any activity in a while, and there are no registered // triggers or subscriptions against this watch. watchman::log( watchman::ERR, "root ", root_path, " has had no activity in ", idle_reap_age, " seconds and has no triggers or subscriptions, cancelling watch. " "Set idle_reap_age_seconds in your .watchmanconfig to control this " "behavior\n"); return true; } inner.last_reap_timestamp = now; return false; } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/root/resolve.cpp000066400000000000000000000177631314236077500165220ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #include "InMemoryView.h" #include "FileSystem.h" #include "watchman_error_category.h" /* Returns true if the global config root_restrict_files is not defined or if * one of the files in root_restrict_files exists, false otherwise. */ static bool root_check_restrict(const char *watch_path) { uint32_t i; bool enforcing; auto root_restrict_files = cfg_compute_root_files(&enforcing); if (!root_restrict_files) { return true; } if (!enforcing) { return true; } for (i = 0; i < json_array_size(root_restrict_files); i++) { auto obj = json_array_get(root_restrict_files, i); const char *restrict_file = json_string_value(obj); char *restrict_path; bool rv; if (!restrict_file) { w_log(W_LOG_ERR, "resolve_root: global config root_restrict_files " "element %" PRIu32 " should be a string\n", i); continue; } ignore_result(asprintf(&restrict_path, "%s/%s", watch_path, restrict_file)); rv = w_path_exists(restrict_path); free(restrict_path); if (rv) return true; } return false; } static bool check_allowed_fs(const char *filename, char **errmsg) { auto fs_type = w_fstype(filename); json_t *illegal_fstypes = NULL; json_t *advice_string; uint32_t i; const char *advice = NULL; // Report this to the log always, as it is helpful in understanding // problem reports w_log( W_LOG_ERR, "path %s is on filesystem type %s\n", filename, fs_type.c_str()); illegal_fstypes = cfg_get_json("illegal_fstypes"); if (!illegal_fstypes) { return true; } advice_string = cfg_get_json("illegal_fstypes_advice"); if (advice_string) { advice = json_string_value(advice_string); } if (!advice) { advice = "relocate the dir to an allowed filesystem type"; } if (!json_is_array(illegal_fstypes)) { w_log(W_LOG_ERR, "resolve_root: global config illegal_fstypes is not an array\n"); return true; } for (i = 0; i < json_array_size(illegal_fstypes); i++) { auto obj = json_array_get(illegal_fstypes, i); const char *name = json_string_value(obj); if (!name) { w_log(W_LOG_ERR, "resolve_root: global config illegal_fstypes " "element %" PRIu32 " should be a string\n", i); continue; } if (!w_string_equal_cstring(fs_type, name)) { continue; } ignore_result(asprintf( errmsg, "path uses the \"%s\" filesystem " "and is disallowed by global config illegal_fstypes: %s", fs_type.c_str(), advice)); return false; } return true; } std::shared_ptr root_resolve( const char* filename, bool auto_watch, bool* created, char** errmsg) { std::error_code realpath_err; std::shared_ptr root; *created = false; // Sanity check that the path is absolute if (!w_is_path_absolute_cstr(filename)) { ignore_result(asprintf(errmsg, "path \"%s\" must be absolute", filename)); w_log(W_LOG_ERR, "resolve_root: %s", *errmsg); return nullptr; } if (!strcmp(filename, "/")) { ignore_result(asprintf(errmsg, "cannot watch \"/\"")); w_log(W_LOG_ERR, "resolve_root: %s", *errmsg); return nullptr; } w_string root_str; try { root_str = watchman::realPath(filename); try { watchman::getFileInformation(filename); } catch (const std::system_error& exc) { if (exc.code() == watchman::error_code::no_such_file_or_directory) { ignore_result(asprintf(errmsg, "\"%s\" resolved to \"%s\" but we were " "unable to examine \"%s\" using strict " "case sensitive rules. Please check " "each component of the path and make " "sure that that path exactly matches " "the correct case of the files on your " "filesystem.", filename, root_str.c_str(), filename)); w_log(W_LOG_ERR, "resolve_root: %s", *errmsg); return nullptr; } ignore_result( asprintf(errmsg, "unable to lstat \"%s\" %s", filename, exc.what())); w_log(W_LOG_ERR, "resolve_root: %s", *errmsg); return nullptr; } } catch (const std::system_error &exc) { realpath_err = exc.code(); root_str = w_string(filename, W_STRING_BYTE); } { auto map = watched_roots.rlock(); const auto& it = map->find(root_str); if (it != map->end()) { root = it->second; } } if (!root && realpath_err.value() != 0) { // Path didn't resolve and neither did the name they passed in ignore_result(asprintf(errmsg, "realpath(%s) -> %s", filename, realpath_err.message().c_str())); w_log(W_LOG_ERR, "resolve_root: %s\n", *errmsg); return nullptr; } if (root || !auto_watch) { if (!root) { ignore_result( asprintf(errmsg, "directory %s is not watched", root_str.c_str())); w_log(W_LOG_DBG, "resolve_root: %s\n", *errmsg); } if (!root) { return nullptr; } // Treat this as new activity for aging purposes; this roughly maps // to a client querying something about the root and should extend // the lifetime of the root // Note that this write potentially races with the read in consider_reap // but we're "OK" with it because the latter is performed under a write // lock and the worst case side effect is that we (safely) decide to reap // at the same instant that a new command comes in. The reap intervals // are typically on the order of days. time(&root->inner.last_cmd_timestamp); return root; } w_log(W_LOG_DBG, "Want to watch %s -> %s\n", filename, root_str.c_str()); if (!check_allowed_fs(root_str.c_str(), errmsg)) { w_log(W_LOG_ERR, "resolve_root: %s\n", *errmsg); return nullptr; } if (!root_check_restrict(root_str.c_str())) { ignore_result( asprintf(errmsg, "Your watchman administrator has configured watchman " "to prevent watching this path. None of the files " "listed in global config root_files are " "present and enforce_root_files is set to true")); w_log(W_LOG_ERR, "resolve_root: %s\n", *errmsg); return nullptr; } // created with 1 ref try { root = std::make_shared(root_str); } catch (const std::exception& e) { watchman::log(watchman::ERR, "while making a new root: ", e.what()); *errmsg = strdup(e.what()); } if (!root) { return nullptr; } { auto wlock = watched_roots.wlock(); auto& map = *wlock; auto& existing = map[root->root_path]; if (existing) { // Someone beat us in this race root = existing; *created = false; } else { existing = root; *created = true; } } return root; } std::shared_ptr w_root_resolve(const char* filename, bool auto_watch, char** errmsg) { bool created = false; auto root = root_resolve(filename, auto_watch, &created, errmsg); if (created) { try { root->view()->startThreads(root); } catch (const std::exception& e) { watchman::log( watchman::ERR, "w_root_resolve, while calling startThreads: ", e.what()); *errmsg = strdup(e.what()); root->cancel(); return nullptr; } w_state_save(); } return root; } std::shared_ptr w_root_resolve_for_client_mode( const char* filename, char** errmsg) { bool created = false; auto root = root_resolve(filename, true, &created, errmsg); if (created) { auto view = std::dynamic_pointer_cast(root->view()); if (!view) { *errmsg = strdup("client mode not available"); return nullptr; } /* force a walk now */ view->clientModeCrawl(root); } return root; } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/root/stat.cpp000066400000000000000000000171201314236077500160010ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #include "InMemoryView.h" #include "watchman_error_category.h" namespace watchman { void InMemoryView::statPath( const std::shared_ptr& root, SyncView::LockedPtr& view, PendingCollection::LockedPtr& coll, const w_string& full_path, struct timeval now, int flags, const watchman_dir_ent* pre_stat) { watchman::FileInformation st; std::error_code errcode; char path[WATCHMAN_NAME_MAX]; bool recursive = flags & W_PENDING_RECURSIVE; bool via_notify = flags & W_PENDING_VIA_NOTIFY; if (root->ignore.isIgnoreDir(full_path)) { w_log( W_LOG_DBG, "%.*s matches ignore_dir rules\n", int(full_path.size()), full_path.data()); return; } if (full_path.size() > sizeof(path) - 1) { w_log( W_LOG_FATAL, "path %.*s is too big\n", int(full_path.size()), full_path.data()); } memcpy(path, full_path.data(), full_path.size()); path[full_path.size()] = 0; auto dir_name = full_path.dirName(); auto file_name = full_path.baseName(); auto parentDir = resolveDir(view, dir_name, true); auto file = parentDir->getChildFile(file_name); auto dir_ent = parentDir->getChildDir(file_name); if (pre_stat && pre_stat->has_stat) { st = pre_stat->stat; } else { try { st = getFileInformation(path, root->case_sensitive); log(DBG, "getFileInformation(", path, ") file=", file, " dir=", dir_ent, "\n"); } catch (const std::system_error &exc) { errcode = exc.code(); log(DBG, "getFileInformation(", path, ") file=", file, " dir=", dir_ent, " failed: ", exc.what(), "\n"); } } if (errcode == watchman::error_code::no_such_file_or_directory || errcode == watchman::error_code::not_a_directory) { /* it's not there, update our state */ if (dir_ent) { markDirDeleted(view, dir_ent, now, true); watchman::log( watchman::DBG, "getFileInformation(", path, ") -> ", errcode.message(), " so stopping watch\n"); } if (file) { if (file->exists) { watchman::log( watchman::DBG, "getFileInformation(", path, ") -> ", errcode.message(), " so marking ", file->getName(), " deleted\n"); file->exists = false; markFileChanged(view, file, now); } } else { // It was created and removed before we could ever observe it // in the filesystem. We need to generate a deleted file // representation of it now, so that subscription clients can // be notified of this event file = getOrCreateChildFile(view, parentDir, file_name, now); log(DBG, "getFileInformation(", path, ") -> ", errcode.message(), " and file node was NULL. " "Generating a deleted node.\n"); file->exists = false; markFileChanged(view, file, now); } if (root->case_sensitive == CaseSensitivity::CaseInSensitive && !w_string_equal(dir_name, root->root_path) && parentDir->last_check_existed) { /* If we rejected the name because it wasn't canonical, * we need to ensure that we look in the parent dir to discover * the new item(s) */ w_log( W_LOG_DBG, "we're case insensitive, and %s is ENOENT, " "speculatively look at parent dir %.*s\n", path, int(dir_name.size()), dir_name.data()); coll->add(dir_name, now, W_PENDING_CRAWL_ONLY); } } else if (errcode.value()) { log(ERR, "getFileInformation(", path, ") failed and not handled! -> ", errcode.message(), " value=", errcode.value(), " category=", errcode.category().name(), "\n"); } else { if (!file) { file = getOrCreateChildFile(view, parentDir, file_name, now); } if (!file->exists) { /* we're transitioning from deleted to existing, * so we're effectively new again */ file->ctime.ticks = view->mostRecentTick; file->ctime.timestamp = now.tv_sec; /* if a dir was deleted and now exists again, we want * to crawl it again */ recursive = true; } if (!file->exists || via_notify || did_file_change(&file->stat, &st)) { w_log( W_LOG_DBG, "file changed exists=%d via_notify=%d stat-changed=%d isdir=%d %s\n", (int)file->exists, (int)via_notify, (int)(file->exists && !via_notify), st.isDir(), path); file->exists = true; markFileChanged(view, file, now); } memcpy(&file->stat, &st, sizeof(file->stat)); // check for symbolic link if (st.isSymlink()) { try { auto target = readSymbolicLink(path); bool symlink_changed = false; if (file->symlink_target != target) { symlink_changed = true; } file->symlink_target = target; if (symlink_changed && root->config.getBool("watch_symlinks", false)) { root->inner.pending_symlink_targets.wlock()->add(full_path, now, 0); } } catch (const std::system_error& exc) { log(ERR, "readlink(", path, ") failed: ", exc.what(), "\n"); file->symlink_target.reset(); } } else { file->symlink_target.reset(); } if (st.isDir()) { if (dir_ent == NULL) { recursive = true; } else { // Ensure that we believe that this node exists dir_ent->last_check_existed = true; } // Don't recurse if our parent is an ignore dir if (!root->ignore.isIgnoreVCS(dir_name) || // but do if we're looking at the cookie dir (stat_path is never // called for the root itself) w_string_equal(full_path, root->cookies.cookieDir())) { if (!(watcher_->flags & WATCHER_HAS_PER_FILE_NOTIFICATIONS)) { /* we always need to crawl, but may not need to be fully recursive */ coll->add( full_path, now, W_PENDING_CRAWL_ONLY | (recursive ? W_PENDING_RECURSIVE : 0)); } else { /* we get told about changes on the child, so we only * need to crawl if we've never seen the dir before. * An exception is that fsevents will only report the root * of a dir rename and not a rename event for all of its * children. */ if (recursive) { coll->add( full_path, now, W_PENDING_RECURSIVE | W_PENDING_CRAWL_ONLY); } } } } else if (dir_ent) { // We transitioned from dir to file (see fishy.php), so we should prune // our former tree here markDirDeleted(view, dir_ent, now, true); } if ((watcher_->flags & WATCHER_HAS_PER_FILE_NOTIFICATIONS) && !st.isDir() && !w_string_equal(dir_name, root->root_path) && parentDir->last_check_existed) { /* Make sure we update the mtime on the parent directory. * We're deliberately not propagating any of the flags through; we * definitely don't want this to be a recursive evaluation and we * won'd want to treat this as VIA_NOTIFY to avoid spuriously * marking the node as changed when only its atime was changed. * https://github.com/facebook/watchman/issues/305 and * https://github.com/facebook/watchman/issues/307 have more * context on why this is. */ coll->add(dir_name, now, 0); } } } } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/root/symlink.cpp000066400000000000000000000114711314236077500165170ustar00rootroot00000000000000/* Copyright 2016-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman_system.h" #include #include "FileSystem.h" #include "watchman.h" #include "watchman_error_category.h" #include "watchman_scopeguard.h" using watchman::realPath; using watchman::readSymbolicLink; // Given a target of the form "absolute_path/filename", return // realpath(absolute_path) + filename, where realpath(absolute_path) resolves // all the symlinks in absolute_path. static w_string get_normalized_target(const w_string& target) { int err; w_assert( w_string_path_is_absolute(target), "get_normalized_target: path %s is not absolute\n", target.asNullTerminated().c_str()); auto dir_name = target.dirName().asNullTerminated(); auto dir_name_real = realPath(dir_name.c_str()); err = errno; if (dir_name_real) { auto file_name = target.baseName(); return w_string::pathCat({dir_name_real, file_name}); } errno = err; return nullptr; } // Requires target to be an absolute path static void watch_symlink_target(const w_string& target, json_t* root_files) { w_assert( w_string_path_is_absolute(target), "watch_symlink_target: path %s is not absolute\n", target.c_str()); w_string normalized_target; try { normalized_target = get_normalized_target(target); } catch (const std::system_error& exc) { watchman::log( watchman::ERR, "watch_symlink_target: unable to get normalized version of target `", target, "`; realpath ", exc.what(), "\n"); return; } char *relpath = nullptr; auto watched_root = w_find_enclosing_root(normalized_target.c_str(), &relpath); SCOPE_EXIT { free(watched_root); }; if (!watched_root) { char *errmsg = NULL; auto resolved = w_string_dup_buf(normalized_target); SCOPE_EXIT { free(resolved); }; if (!find_project_root(root_files, resolved, &relpath)) { w_log( W_LOG_ERR, "watch_symlink_target: No watchable root for %s\n", resolved); } else { auto root = w_root_resolve(resolved, true, &errmsg); if (!root) { w_log( W_LOG_ERR, "watch_symlink_target: unable to watch %s: %s\n", resolved, errmsg); } free(errmsg); } } } /** Given an absolute path, watch all symbolic links associated with the path. * Since the target of a symbolic link might contain several components that * are themselves symlinks, this function gets called recursively on all the * components of path. */ static void watch_symlinks(const w_string& inputPath, json_t* root_files) { w_string_piece pathPiece(inputPath); auto parentPiece = pathPiece.dirName(); if (parentPiece == pathPiece) { // We've reached the root of the VFS; we're either "/" on unix, // or something like "C:\" on windows return; } if (!pathPiece.pathIsAbsolute()) { return; } // ensure that buffer is null-terminated auto path = inputPath.asNullTerminated(); auto dir_name = path.dirName(); auto file_name = path.baseName(); try { auto target = readSymbolicLink(path.c_str()); if (w_string_piece(target).pathIsAbsolute()) { watch_symlink_target(target, root_files); watch_symlinks(target, root_files); watch_symlinks(dir_name, root_files); } else { auto absolute_target = w_string::pathCat({dir_name, target}); watch_symlink_target(absolute_target, root_files); watch_symlinks(absolute_target, root_files); // No need to watch_symlinks(dir_name), since // watch_symlinks(absolute_target) will eventually have the same effect } } catch (const std::system_error& exc) { if (exc.code() == watchman::error_code::not_a_symlink) { // The final component of path is not a symbolic link, but other // components in the path might be symbolic links watch_symlinks(dir_name, root_files); } else { watchman::log( watchman::ERR, "watch_symlinks: readSymbolicLink(", path, ") ", exc.what(), "\n"); } } } /** Process the list of observed changed symlinks and arrange to establish * watches for their new targets */ void watchman_root::processPendingSymlinkTargets() { bool enforcing; auto pendingLock = inner.pending_symlink_targets.wlock(); if (!pendingLock->size()) { return; } auto root_files = cfg_compute_root_files(&enforcing); if (!root_files) { w_log(W_LOG_ERR, "watch_symlink_target: error computing root_files configuration " "value, consult your log file at %s for more details\n", log_name); return; } auto p = pendingLock->stealItems(); while (p) { watch_symlinks(p->path, root_files); p = std::move(p->next); } } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/root/sync.cpp000066400000000000000000000022211314236077500157760ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #include "InMemoryView.h" bool watchman_root::syncToNow(std::chrono::milliseconds timeout) { w_perf_t sample("sync_to_now"); auto res = view()->syncToNow(timeout); // We want to know about all timeouts if (!res) { sample.force_log(); } if (sample.finish()) { sample.add_root_meta(shared_from_this()); sample.add_meta( "sync_to_now", json_object({{"success", json_boolean(res)}, {"timeoutms", json_integer(timeout.count())}})); sample.log(); } return res; } /* Ensure that we're synchronized with the state of the * filesystem at the current time. * We do this by touching a cookie file and waiting to * observe it via inotify. When we see it we know that * we've seen everything up to the point in time at which * we're asking questions. * Returns true if we observe the change within the requested * time, false otherwise. */ bool watchman::InMemoryView::syncToNow(std::chrono::milliseconds timeout) { return cookies_.syncToNow(timeout); } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/root/threading.cpp000066400000000000000000000036551314236077500170030ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" std::shared_ptr watchman_root::view() { // We grab a read lock on the recrawl info to ensure that we // can't race with scheduleRecrawl and observe a nullptr for // the view_. auto info = recrawlInfo.rlock(); return inner.view_; } void watchman_root::scheduleRecrawl(const char* why) { { auto info = recrawlInfo.wlock(); if (!info->shouldRecrawl) { if (!config.getBool("suppress_recrawl_warnings", false)) { info->warning = w_string::build( "Recrawled this watch ", ++info->recrawlCount, " times, most recently because:\n", why, "To resolve, please review the information on\n", cfg_get_trouble_url(), "#recrawl"); } watchman::log( watchman::ERR, root_path, ": ", why, ": scheduling a tree recrawl\n"); } info->shouldRecrawl = true; } view()->wakeThreads(); } void watchman_root::signalThreads() { view()->signalThreads(); } // Cancels a watch. bool watchman_root::cancel() { bool cancelled = false; if (!inner.cancelled) { cancelled = true; watchman::log(watchman::DBG, "marked ", root_path, " cancelled\n"); inner.cancelled = true; // The client will fan this out to all matching subscriptions. // This happens in listener.cpp. unilateralResponses->enqueue(json_object( {{"root", w_string_to_json(root_path)}, {"canceled", json_true()}})); signalThreads(); removeFromWatched(); { auto map = triggers.rlock(); for (auto& it : *map) { it.second->stop(); } } } return cancelled; } bool watchman_root::stopWatch() { bool stopped = removeFromWatched(); if (stopped) { cancel(); w_state_save(); } signalThreads(); return stopped; } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/root/vcs.cpp000066400000000000000000000033111314236077500156160ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #include "InMemoryView.h" using watchman::CaseSensitivity; static json_ref config_get_ignore_vcs(w_root_t* root) { json_ref ignores = root->config.get("ignore_vcs"); if (ignores && !json_is_array(ignores)) { return nullptr; } if (!ignores) { // default to a well-known set of vcs's ignores = json_array({typed_string_to_json(".git"), typed_string_to_json(".svn"), typed_string_to_json(".hg")}); } return ignores; } void watchman_root::applyIgnoreVCSConfiguration() { uint8_t i; auto ignores = config_get_ignore_vcs(this); if (!ignores) { throw std::runtime_error("ignore_vcs must be an array of strings"); } for (i = 0; i < json_array_size(ignores); i++) { const json_t *jignore = json_array_get(ignores, i); if (!json_is_string(jignore)) { throw std::runtime_error("ignore_vcs must be an array of strings"); } auto fullname = w_string::pathCat({root_path, json_to_w_string(jignore)}); // if we are completely ignoring this dir, we have nothing more to // do here if (ignore.isIgnoreDir(fullname)) { continue; } ignore.add(fullname, true); // While we're at it, see if we can find out where to put our // query cookie information if (cookies.cookieDir() == root_path) { try { auto info = getFileInformation(fullname.c_str(), case_sensitive); if (info.isDir()) { // root/{.hg,.git,.svn} cookies.setCookieDir(fullname); } } catch (...) { // Don't care } } } } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/root/warnerr.cpp000066400000000000000000000033471314236077500165140ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #include "InMemoryView.h" #include "watchman_error_category.h" void handle_open_errno( const std::shared_ptr& root, struct watchman_dir* dir, struct timeval now, const char* syscall, const std::error_code& err) { auto dir_name = dir->getFullPath(); bool log_warning = true; bool transient = false; if (err == watchman::error_code::no_such_file_or_directory || err == watchman::error_code::not_a_directory || err == watchman::error_code::too_many_symbolic_link_levels) { log_warning = false; transient = false; } else if (err == watchman::error_code::permission_denied) { log_warning = true; transient = false; } else if (err == watchman::error_code::system_limits_exceeded) { set_poison_state(dir_name, now, syscall, err); return; } else { log_warning = true; transient = true; } if (w_string_equal(dir_name, root->root_path)) { if (!transient) { watchman::log( watchman::ERR, syscall, "(", dir_name, ") -> ", err.message(), ". Root was deleted; cancelling watch\n"); root->cancel(); return; } } auto warn = w_string::build( syscall, "(", dir_name, ") -> ", err.message(), ". Marking this portion of the tree deleted"); watchman::log( err == watchman::error_code::no_such_file_or_directory ? watchman::DBG : watchman::ERR, warn, "\n"); if (log_warning) { root->recrawlInfo.wlock()->warning = warn; } } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/root/watchlist.cpp000066400000000000000000000153231314236077500170330ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #include watchman::Synchronized>> watched_roots; std::atomic live_roots{0}; bool watchman_root::removeFromWatched() { auto map = watched_roots.wlock(); auto it = map->find(root_path); if (it == map->end()) { return false; } // it's possible that the root has already been removed and replaced with // another, so make sure we're removing the right object if (it->second.get() == this) { map->erase(it); return true; } return false; } // Given a filename, walk the current set of watches. // If a watch is a prefix match for filename then we consider it to // be an enclosing watch and we'll return the root path and the relative // path to filename. // Returns NULL if there were no matches. // If multiple watches have the same prefix, it is undefined which one will // match. char *w_find_enclosing_root(const char *filename, char **relpath) { std::shared_ptr root; w_string name(filename, W_STRING_BYTE); char *prefix = NULL; { auto map = watched_roots.rlock(); for (const auto& it : *map) { auto root_name = it.first; if (w_string_startswith(name, root_name) && (name.size() == root_name.size() /* exact match */ || is_slash( name.data()[root_name.size()]) /* dir container matches */)) { root = it.second; break; } } } if (!root) { return nullptr; } // extract the path portions prefix = (char*)malloc(root->root_path.size() + 1); if (!prefix) { return nullptr; } memcpy(prefix, filename, root->root_path.size()); prefix[root->root_path.size()] = '\0'; if (root->root_path.size() == name.size()) { *relpath = NULL; } else { *relpath = strdup(filename + root->root_path.size() + 1); } return prefix; } json_ref w_root_stop_watch_all(void) { std::vector roots; json_ref stopped = json_array(); // Funky looking loop because root->cancel() needs to acquire the // watched_roots wlock and will invalidate any iterators we might // otherwise have held. Therefore we just loop until the map is // empty. while (true) { std::shared_ptr root; { auto map = watched_roots.wlock(); if (map->empty()) { break; } auto it = map->begin(); root = it->second; } root->cancel(); json_array_append_new(stopped, w_string_to_json(root->root_path)); } w_state_save(); return stopped; } json_ref w_root_watch_list_to_json(void) { auto arr = json_array(); auto map = watched_roots.rlock(); for (const auto& it : *map) { auto root = it.second; json_array_append_new(arr, w_string_to_json(root->root_path)); } return arr; } bool w_root_save_state(json_ref& state) { bool result = true; auto watched_dirs = json_array(); w_log(W_LOG_DBG, "saving state\n"); { auto map = watched_roots.rlock(); for (const auto& it : *map) { auto root = it.second; auto obj = json_object(); json_object_set_new(obj, "path", w_string_to_json(root->root_path)); auto triggers = root->triggerListToJson(); json_object_set_new(obj, "triggers", std::move(triggers)); json_array_append_new(watched_dirs, std::move(obj)); } } json_object_set_new(state, "watched", std::move(watched_dirs)); return result; } json_ref watchman_root::triggerListToJson() const { auto arr = json_array(); { auto map = triggers.rlock(); for (const auto& it : *map) { const auto& cmd = it.second; json_array_append(arr, cmd->definition); } } return arr; } bool w_root_load_state(const json_ref& state) { size_t i; auto watched = state.get_default("watched"); if (!watched) { return true; } if (!json_is_array(watched)) { return false; } for (i = 0; i < json_array_size(watched); i++) { const auto& obj = watched.at(i); bool created = false; const char *filename; size_t j; char *errmsg = NULL; auto triggers = obj.get_default("triggers"); filename = json_string_value(json_object_get(obj, "path")); auto root = root_resolve(filename, true, &created, &errmsg); if (!root) { free(errmsg); continue; } { auto wlock = root->triggers.wlock(); auto& map = *wlock; /* re-create the trigger configuration */ for (j = 0; j < json_array_size(triggers); j++) { const auto& tobj = triggers.at(j); // Legacy rules format auto rarray = tobj.get_default("rules"); if (rarray) { continue; } auto cmd = watchman::make_unique( root, tobj, &errmsg); if (errmsg) { watchman::log( watchman::ERR, "loading trigger for ", root->root_path, ": ", errmsg, "\n"); free(errmsg); continue; } cmd->start(root); auto& mapEntry = map[cmd->triggername]; mapEntry = std::move(cmd); } } if (created) { try { root->view()->startThreads(root); } catch (const std::exception& e) { watchman::log( watchman::ERR, "root_start(", root->root_path, ") failed: ", e.what(), "\n"); root->cancel(); } } } return true; } void w_root_free_watched_roots(void) { int last, interval; time_t started; std::vector> roots; // We want to cancel the list of roots, but need to be careful to avoid // deadlock; make a copy of the set of roots under the lock... { auto map = watched_roots.rlock(); for (const auto& it : *map) { roots.emplace_back(it.second); } } // ... and cancel them outside of the lock for (auto& root : roots) { if (!root->cancel()) { root->signalThreads(); } } // release them all so that we don't mess with the number of live_roots // in the code below. roots.clear(); last = live_roots; time(&started); w_log(W_LOG_DBG, "waiting for roots to cancel and go away %d\n", last); interval = 100; for (;;) { auto current = live_roots.load(); if (current == 0) { break; } if (time(NULL) > started + 3) { w_log(W_LOG_ERR, "%ld roots were still live at exit\n", current); break; } if (current != last) { w_log(W_LOG_DBG, "waiting: %ld live\n", current); last = current; } usleep(interval); interval = std::min(interval * 2, 1000000); } w_log(W_LOG_DBG, "all roots are gone\n"); } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/ruby/000077500000000000000000000000001314236077500143175ustar00rootroot00000000000000watchman-4.9.0/ruby/ruby-watchman/000077500000000000000000000000001314236077500171005ustar00rootroot00000000000000watchman-4.9.0/ruby/ruby-watchman/.gitignore000066400000000000000000000000611314236077500210650ustar00rootroot00000000000000*.bundle *.gem *.so Gemfile.lock mkmf.log vendor watchman-4.9.0/ruby/ruby-watchman/.rspec000066400000000000000000000000371314236077500202150ustar00rootroot00000000000000--format documentation --color watchman-4.9.0/ruby/ruby-watchman/Gemfile000066400000000000000000000000471314236077500203740ustar00rootroot00000000000000source 'https://rubygems.org' gemspec watchman-4.9.0/ruby/ruby-watchman/LICENSE.txt000066400000000000000000000027171314236077500207320ustar00rootroot00000000000000Copyright (c) 2014-present Facebook. All Rights Reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name Facebook nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. watchman-4.9.0/ruby/ruby-watchman/README.md000066400000000000000000000032751314236077500203660ustar00rootroot00000000000000# RubyWatchman RubyWatchman is a gem that implements the [Watchman binary protocol](https://github.com/facebook/watchman/blob/master/BSER.markdown). It is implemented in C for speed, and is much faster than talking to [Watchman](https://github.com/facebook/watchman) using the JSON protocol. ## Installation Add this line to your application's Gemfile: ```ruby gem 'ruby-watchman' ``` And then execute: $ bundle Or install it yourself as: $ gem install ruby-watchman ## Usage This example shows: 1. Asking a running Watchman process for its local socket 2. Checking with Watchman whether a given path (in this case the current working directory) is being watched 3. Adding the path to the watch list if necessary 4. Asking Watchman for the names of all files in the watch (files which exist, or have existed since watching started), then printing them ```ruby require 'ruby-watchman' require 'socket' require 'pathname' sockname = RubyWatchman.load( %x{watchman --output-encoding=bser get-sockname} )['sockname'] raise unless $?.exitstatus.zero? UNIXSocket.open(sockname) do |socket| root = Pathname.new('.').realpath.to_s roots = RubyWatchman.query(['watch-list'], socket)['roots'] if !roots.include?(root) # this path isn't being watched yet; try to set up watch result = RubyWatchman.query(['watch', root], socket) # root_restrict_files setting may prevent Watchman from working raise if result.has_key?('error') end query = ['query', root, { 'expression' => ['type', 'f'], 'fields' => ['name'], }] paths = RubyWatchman.query(query, socket) # could return error if watch is removed raise if paths.has_key?('error') p paths['files'] end ``` watchman-4.9.0/ruby/ruby-watchman/Rakefile000066400000000000000000000025501314236077500205470ustar00rootroot00000000000000# Copyright (c) 2014-present Facebook. All Rights Reserved. require 'rubygems' require 'rake/clean' require 'rspec/core/rake_task' require File.expand_path('lib/ruby-watchman/version.rb', File.dirname(__FILE__)) CLEAN.include Rake::FileList['*.gem', '**/*.so', '**/*.bundle', '**/*.o', '**/mkmf.log', '**/Makefile'] RSpec::Core::RakeTask.new(:spec) task :default => :all desc 'Build and run specs' task :all => [:make, :spec] file 'ext/ruby-watchman/Makefile' => %w[ ext/ruby-watchman/depend ext/ruby-watchman/extconf.rb ] do Dir.chdir('ext/ruby-watchman') { ruby './extconf.rb' } end desc 'Build extension' task :make => %w[ ext/ruby-watchman/Makefile ext/ruby-watchman/watchman.c ext/ruby-watchman/watchman.h ] do Dir.chdir('ext/ruby-watchman') { system 'make' } end EXT_FILE = "ext/ruby-watchman/ext.#{RbConfig::CONFIG['DLEXT']}" file EXT_FILE => :make GEM_FILE_DEPENDENCIES = Dir[ 'ext/ruby-watchman/**/*.{c,h,rb}', 'ext/ruby-watchman/depend', 'lib/**/*.rb', 'spec/**/*.rb' ] + [EXT_FILE] # not actually included in gem, but we want to be sure it builds GEM_FILE = "ruby-watchman-#{RubyWatchman::VERSION}.gem" file GEM_FILE => GEM_FILE_DEPENDENCIES do system 'gem build ruby-watchman.gemspec' end desc 'Build gem ("gem build")' task :build => GEM_FILE desc 'Publish gem ("gem push")' task :push => :build do system "gem push #{GEM_FILE}" end watchman-4.9.0/ruby/ruby-watchman/ext/000077500000000000000000000000001314236077500177005ustar00rootroot00000000000000watchman-4.9.0/ruby/ruby-watchman/ext/ruby-watchman/000077500000000000000000000000001314236077500224615ustar00rootroot00000000000000watchman-4.9.0/ruby/ruby-watchman/ext/ruby-watchman/depend000066400000000000000000000002161314236077500236420ustar00rootroot00000000000000# Copyright (c) 2014-present Facebook. All Rights Reserved. CFLAGS += -Wall -Wextra -Wno-unused-parameter watchman.o: watchman.c watchman.h watchman-4.9.0/ruby/ruby-watchman/ext/ruby-watchman/extconf.rb000066400000000000000000000007711314236077500244610ustar00rootroot00000000000000# Copyright (c) 2014-present Facebook. All Rights Reserved. require 'mkmf' def header(item) unless find_header(item) puts "couldn't find #{item} (required)" exit 1 end end # mandatory headers header('ruby.h') header('fcntl.h') header('sys/errno.h') header('sys/socket.h') # variable headers have_header('ruby/st.h') # >= 1.9; sets HAVE_RUBY_ST_H have_header('st.h') # 1.8; sets HAVE_ST_H RbConfig::MAKEFILE_CONFIG['CC'] = ENV['CC'] if ENV['CC'] create_makefile('ruby-watchman/ext') watchman-4.9.0/ruby/ruby-watchman/ext/ruby-watchman/watchman.c000066400000000000000000000531371314236077500244400ustar00rootroot00000000000000/* Copyright (c) 2014, Facebook, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name Facebook nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "watchman.h" #if defined(HAVE_RUBY_ST_H) #include #elif defined(HAVE_ST_H) #include #else #error no st.h header found #endif #include /* for fcntl() */ #include /* for errno */ #include /* for recv(), MSG_PEEK */ typedef struct { uint8_t *data; // payload size_t cap; // total capacity size_t len; // current length } watchman_t; // Forward declarations: VALUE watchman_load(char **ptr, char *end); void watchman_dump(watchman_t *w, VALUE serializable); #define WATCHMAN_DEFAULT_STORAGE 4096 #define WATCHMAN_BINARY_MARKER "\x00\x01" #define WATCHMAN_ARRAY_MARKER 0x00 #define WATCHMAN_HASH_MARKER 0x01 #define WATCHMAN_STRING_MARKER 0x02 #define WATCHMAN_INT8_MARKER 0x03 #define WATCHMAN_INT16_MARKER 0x04 #define WATCHMAN_INT32_MARKER 0x05 #define WATCHMAN_INT64_MARKER 0x06 #define WATCHMAN_FLOAT_MARKER 0x07 #define WATCHMAN_TRUE 0x08 #define WATCHMAN_FALSE 0x09 #define WATCHMAN_NIL 0x0a #define WATCHMAN_TEMPLATE_MARKER 0x0b #define WATCHMAN_SKIP_MARKER 0x0c #define WATCHMAN_HEADER \ WATCHMAN_BINARY_MARKER \ "\x06" \ "\x00\x00\x00\x00\x00\x00\x00\x00" static const char watchman_array_marker = WATCHMAN_ARRAY_MARKER; static const char watchman_hash_marker = WATCHMAN_HASH_MARKER; static const char watchman_string_marker = WATCHMAN_STRING_MARKER; static const char watchman_true = WATCHMAN_TRUE; static const char watchman_false = WATCHMAN_FALSE; static const char watchman_nil = WATCHMAN_NIL; /** * Appends `len` bytes, starting at `data`, to the watchman_t struct `w` * * Will attempt to reallocate the underlying storage if it is not sufficient. */ void watchman_append(watchman_t *w, const char *data, size_t len) { if (w->len + len > w->cap) { w->cap += w->len + WATCHMAN_DEFAULT_STORAGE; REALLOC_N(w->data, uint8_t, w->cap); } memcpy(w->data + w->len, data, len); w->len += len; } /** * Allocate a new watchman_t struct * * The struct has a small amount of extra capacity preallocated, and a blank * header that can be filled in later to describe the PDU. */ watchman_t *watchman_init() { watchman_t *w = ALLOC(watchman_t); w->cap = WATCHMAN_DEFAULT_STORAGE; w->len = 0; w->data = ALLOC_N(uint8_t, WATCHMAN_DEFAULT_STORAGE); watchman_append(w, WATCHMAN_HEADER, sizeof(WATCHMAN_HEADER) - 1); return w; } /** * Free a watchman_t struct `w` that was previously allocated with * `watchman_init` */ void watchman_free(watchman_t *w) { xfree(w->data); xfree(w); } /** * Encodes and appends the integer `num` to `w` */ void watchman_dump_int(watchman_t *w, int64_t num) { char encoded[1 + sizeof(int64_t)]; if (num == (int8_t)num) { encoded[0] = WATCHMAN_INT8_MARKER; encoded[1] = (int8_t)num; watchman_append(w, encoded, 1 + sizeof(int8_t)); } else if (num == (int16_t)num) { encoded[0] = WATCHMAN_INT16_MARKER; *(int16_t *)(encoded + 1) = (int16_t)num; watchman_append(w, encoded, 1 + sizeof(int16_t)); } else if (num == (int32_t)num) { encoded[0] = WATCHMAN_INT32_MARKER; *(int32_t *)(encoded + 1) = (int32_t)num; watchman_append(w, encoded, 1 + sizeof(int32_t)); } else { encoded[0] = WATCHMAN_INT64_MARKER; *(int64_t *)(encoded + 1) = (int64_t)num; watchman_append(w, encoded, 1 + sizeof(int64_t)); } } /** * Encodes and appends the string `string` to `w` */ void watchman_dump_string(watchman_t *w, VALUE string) { watchman_append(w, &watchman_string_marker, sizeof(watchman_string_marker)); watchman_dump_int(w, RSTRING_LEN(string)); watchman_append(w, RSTRING_PTR(string), RSTRING_LEN(string)); } /** * Encodes and appends the double `num` to `w` */ void watchman_dump_double(watchman_t *w, double num) { char encoded[1 + sizeof(double)]; encoded[0] = WATCHMAN_FLOAT_MARKER; *(double *)(encoded + 1) = num; watchman_append(w, encoded, sizeof(encoded)); } /** * Encodes and appends the array `array` to `w` */ void watchman_dump_array(watchman_t *w, VALUE array) { long i; watchman_append(w, &watchman_array_marker, sizeof(watchman_array_marker)); watchman_dump_int(w, RARRAY_LEN(array)); for (i = 0; i < RARRAY_LEN(array); i++) { watchman_dump(w, rb_ary_entry(array, i)); } } /** * Helper method that encodes and appends a key/value pair (`key`, `value`) from * a hash to the watchman_t struct passed in via `data` */ int watchman_dump_hash_iterator(VALUE key, VALUE value, VALUE data) { watchman_t *w = (watchman_t *)data; watchman_dump_string(w, StringValue(key)); watchman_dump(w, value); return ST_CONTINUE; } /** * Encodes and appends the hash `hash` to `w` */ void watchman_dump_hash(watchman_t *w, VALUE hash) { watchman_append(w, &watchman_hash_marker, sizeof(watchman_hash_marker)); watchman_dump_int(w, RHASH_SIZE(hash)); rb_hash_foreach(hash, watchman_dump_hash_iterator, (VALUE)w); } /** * Encodes and appends the serialized Ruby object `serializable` to `w` * * Examples of serializable objects include arrays, hashes, strings, numbers * (integers, floats), booleans, and nil. */ void watchman_dump(watchman_t *w, VALUE serializable) { switch (TYPE(serializable)) { case T_ARRAY: return watchman_dump_array(w, serializable); case T_HASH: return watchman_dump_hash(w, serializable); case T_STRING: return watchman_dump_string(w, serializable); case T_FIXNUM: // up to 63 bits return watchman_dump_int(w, FIX2LONG(serializable)); case T_BIGNUM: return watchman_dump_int(w, NUM2LL(serializable)); case T_FLOAT: return watchman_dump_double(w, NUM2DBL(serializable)); case T_TRUE: return watchman_append(w, &watchman_true, sizeof(watchman_true)); case T_FALSE: return watchman_append(w, &watchman_false, sizeof(watchman_false)); case T_NIL: return watchman_append(w, &watchman_nil, sizeof(watchman_nil)); default: rb_raise(rb_eTypeError, "unsupported type"); } } /** * Extract and return the int encoded at `ptr` * * Moves `ptr` past the extracted int. * * Will raise an ArgumentError if extracting the int would take us beyond the * end of the buffer indicated by `end`, or if there is no int encoded at `ptr`. * * @returns The extracted int */ int64_t watchman_load_int(char **ptr, char *end) { char *val_ptr = *ptr + sizeof(int8_t); int64_t val = 0; if (val_ptr >= end) { rb_raise(rb_eArgError, "insufficient int storage"); } switch (*ptr[0]) { case WATCHMAN_INT8_MARKER: if (val_ptr + sizeof(int8_t) > end) { rb_raise(rb_eArgError, "overrun extracting int8_t"); } val = *(int8_t *)val_ptr; *ptr = val_ptr + sizeof(int8_t); break; case WATCHMAN_INT16_MARKER: if (val_ptr + sizeof(int16_t) > end) { rb_raise(rb_eArgError, "overrun extracting int16_t"); } val = *(int16_t *)val_ptr; *ptr = val_ptr + sizeof(int16_t); break; case WATCHMAN_INT32_MARKER: if (val_ptr + sizeof(int32_t) > end) { rb_raise(rb_eArgError, "overrun extracting int32_t"); } val = *(int32_t *)val_ptr; *ptr = val_ptr + sizeof(int32_t); break; case WATCHMAN_INT64_MARKER: if (val_ptr + sizeof(int64_t) > end) { rb_raise(rb_eArgError, "overrun extracting int64_t"); } val = *(int64_t *)val_ptr; *ptr = val_ptr + sizeof(int64_t); break; default: rb_raise( rb_eArgError, "bad integer marker 0x%02x", (unsigned int)*ptr[0] ); break; } return val; } /** * Reads and returns a string encoded in the Watchman binary protocol format, * starting at `ptr` and finishing at or before `end` */ VALUE watchman_load_string(char **ptr, char *end) { if (*ptr >= end) { rb_raise(rb_eArgError, "unexpected end of input"); } if (*ptr[0] != WATCHMAN_STRING_MARKER) { rb_raise(rb_eArgError, "not a number"); } *ptr += sizeof(int8_t); if (*ptr >= end) { rb_raise(rb_eArgError, "invalid string header"); } int64_t len = watchman_load_int(ptr, end); if (len == 0) { // special case for zero-length strings return rb_str_new2(""); } else if (*ptr + len > end) { rb_raise(rb_eArgError, "insufficient string storage"); } VALUE string = rb_str_new(*ptr, len); *ptr += len; return string; } /** * Reads and returns a double encoded in the Watchman binary protocol format, * starting at `ptr` and finishing at or before `end` */ double watchman_load_double(char **ptr, char *end) { *ptr += sizeof(int8_t); // caller has already verified the marker if (*ptr + sizeof(double) > end) { rb_raise(rb_eArgError, "insufficient double storage"); } double val = *(double *)*ptr; *ptr += sizeof(double); return val; } /** * Helper method which returns length of the array encoded in the Watchman * binary protocol format, starting at `ptr` and finishing at or before `end` */ int64_t watchman_load_array_header(char **ptr, char *end) { if (*ptr >= end) { rb_raise(rb_eArgError, "unexpected end of input"); } // verify and consume marker if (*ptr[0] != WATCHMAN_ARRAY_MARKER) { rb_raise(rb_eArgError, "not an array"); } *ptr += sizeof(int8_t); // expect a count if (*ptr + sizeof(int8_t) * 2 > end) { rb_raise(rb_eArgError, "incomplete array header"); } return watchman_load_int(ptr, end); } /** * Reads and returns an array encoded in the Watchman binary protocol format, * starting at `ptr` and finishing at or before `end` */ VALUE watchman_load_array(char **ptr, char *end) { int64_t count, i; VALUE array; count = watchman_load_array_header(ptr, end); array = rb_ary_new2(count); for (i = 0; i < count; i++) { rb_ary_push(array, watchman_load(ptr, end)); } return array; } /** * Reads and returns a hash encoded in the Watchman binary protocol format, * starting at `ptr` and finishing at or before `end` */ VALUE watchman_load_hash(char **ptr, char *end) { int64_t count, i; VALUE hash, key, value; *ptr += sizeof(int8_t); // caller has already verified the marker // expect a count if (*ptr + sizeof(int8_t) * 2 > end) { rb_raise(rb_eArgError, "incomplete hash header"); } count = watchman_load_int(ptr, end); hash = rb_hash_new(); for (i = 0; i < count; i++) { key = watchman_load_string(ptr, end); value = watchman_load(ptr, end); rb_hash_aset(hash, key, value); } return hash; } /** * Reads and returns a templated array encoded in the Watchman binary protocol * format, starting at `ptr` and finishing at or before `end` * * Templated arrays are arrays of hashes which have repetitive key information * pulled out into a separate "headers" prefix. * * @see https://github.com/facebook/watchman/blob/master/BSER.markdown */ VALUE watchman_load_template(char **ptr, char *end) { int64_t header_items_count, i, row_count; VALUE array, hash, header, key, value; *ptr += sizeof(int8_t); // caller has already verified the marker // process template header array header_items_count = watchman_load_array_header(ptr, end); header = rb_ary_new2(header_items_count); for (i = 0; i < header_items_count; i++) { rb_ary_push(header, watchman_load_string(ptr, end)); } // process row items row_count = watchman_load_int(ptr, end); array = rb_ary_new2(header_items_count); while (row_count--) { hash = rb_hash_new(); for (i = 0; i < header_items_count; i++) { if (*ptr >= end) { rb_raise(rb_eArgError, "unexpected end of input"); } if (*ptr[0] == WATCHMAN_SKIP_MARKER) { *ptr += sizeof(uint8_t); } else { value = watchman_load(ptr, end); key = rb_ary_entry(header, i); rb_hash_aset(hash, key, value); } } rb_ary_push(array, hash); } return array; } /** * Reads and returns an object encoded in the Watchman binary protocol format, * starting at `ptr` and finishing at or before `end` */ VALUE watchman_load(char **ptr, char *end) { if (*ptr >= end) { rb_raise(rb_eArgError, "unexpected end of input"); } switch (*ptr[0]) { case WATCHMAN_ARRAY_MARKER: return watchman_load_array(ptr, end); case WATCHMAN_HASH_MARKER: return watchman_load_hash(ptr, end); case WATCHMAN_STRING_MARKER: return watchman_load_string(ptr, end); case WATCHMAN_INT8_MARKER: case WATCHMAN_INT16_MARKER: case WATCHMAN_INT32_MARKER: case WATCHMAN_INT64_MARKER: return LL2NUM(watchman_load_int(ptr, end)); case WATCHMAN_FLOAT_MARKER: return rb_float_new(watchman_load_double(ptr, end)); case WATCHMAN_TRUE: *ptr += 1; return Qtrue; case WATCHMAN_FALSE: *ptr += 1; return Qfalse; case WATCHMAN_NIL: *ptr += 1; return Qnil; case WATCHMAN_TEMPLATE_MARKER: return watchman_load_template(ptr, end); default: rb_raise(rb_eTypeError, "unsupported type"); } return Qnil; // keep the compiler happy } /** * RubyWatchman.load(serialized) * * Converts the binary object, `serialized`, from the Watchman binary protocol * format into a normal Ruby object. */ VALUE RubyWatchman_load(VALUE self, VALUE serialized) { serialized = StringValue(serialized); long len = RSTRING_LEN(serialized); char *ptr = RSTRING_PTR(serialized); char *end = ptr + len; // expect at least the binary marker and a int8_t length counter if ((size_t)len < sizeof(WATCHMAN_BINARY_MARKER) - 1 + sizeof(int8_t) * 2) { rb_raise(rb_eArgError, "undersized header"); } int mismatched = memcmp(ptr, WATCHMAN_BINARY_MARKER, sizeof(WATCHMAN_BINARY_MARKER) - 1); if (mismatched) { rb_raise(rb_eArgError, "missing binary marker"); } // get size marker ptr += sizeof(WATCHMAN_BINARY_MARKER) - 1; uint64_t payload_size = watchman_load_int(&ptr, end); if (!payload_size) { rb_raise(rb_eArgError, "empty payload"); } // sanity check length if (ptr + payload_size != end) { rb_raise( rb_eArgError, "payload size mismatch (%lu)", (unsigned long)(end - (ptr + payload_size)) ); } VALUE loaded = watchman_load(&ptr, end); // one more sanity check if (ptr != end) { rb_raise( rb_eArgError, "payload termination mismatch (%lu)", (unsigned long)(end - ptr) ); } return loaded; } /** * RubyWatchman.dump(serializable) * * Converts the Ruby object, `serializable`, into a binary string in the * Watchman binary protocol format. * * Examples of serializable objects include arrays, hashes, strings, numbers * (integers, floats), booleans, and nil. */ VALUE RubyWatchman_dump(VALUE self, VALUE serializable) { watchman_t *w = watchman_init(); watchman_dump(w, serializable); // update header with final length information uint64_t *len = (uint64_t *)(w->data + sizeof(WATCHMAN_HEADER) - sizeof(uint64_t) - 1); *len = w->len - sizeof(WATCHMAN_HEADER) + 1; // prepare final return value VALUE serialized = rb_str_buf_new(w->len); rb_str_buf_cat(serialized, (const char*)w->data, w->len); watchman_free(w); return serialized; } // How far we have to look to figure out the size of the PDU header #define WATCHMAN_SNIFF_BUFFER_SIZE \ sizeof(WATCHMAN_BINARY_MARKER) - 1 + sizeof(int8_t) // How far we have to peek, at most, to figure out the size of the PDU itself #define WATCHMAN_PEEK_BUFFER_SIZE \ sizeof(WATCHMAN_BINARY_MARKER) - 1 + \ sizeof(WATCHMAN_INT64_MARKER) + \ sizeof(int64_t) /** * RubyWatchman.query(query, socket) * * Converts `query`, a Watchman query comprising Ruby objects, into the Watchman * binary protocol format, transmits it over socket, and unserializes and * returns the result. */ VALUE RubyWatchman_query(VALUE self, VALUE query, VALUE socket) { VALUE error = Qnil; VALUE errorClass = Qnil; VALUE loaded = Qnil; char *buffer = NULL; int fileno = NUM2INT(rb_funcall(socket, rb_intern("fileno"), 0)); // do blocking I/O to simplify the following logic int flags = fcntl(fileno, F_GETFL); if ( !(flags & O_NONBLOCK) && fcntl(fileno, F_SETFL, flags & ~O_NONBLOCK) == -1 ) { error = rb_str_new2("unable to clear O_NONBLOCK flag"); goto cleanup; } // send the message VALUE serialized = RubyWatchman_dump(self, query); long query_len = RSTRING_LEN(serialized); ssize_t sent = send(fileno, RSTRING_PTR(serialized), query_len, 0); if (sent == -1) { goto system_call_fail; } else if (sent != query_len) { error = rb_str_new2("sent byte count mismatch"); goto cleanup; } // sniff to see how large the header is int8_t peek[WATCHMAN_PEEK_BUFFER_SIZE]; ssize_t received = recv(fileno, peek, WATCHMAN_SNIFF_BUFFER_SIZE, MSG_PEEK | MSG_WAITALL); if (received == -1) { goto system_call_fail; } else if (received != WATCHMAN_SNIFF_BUFFER_SIZE) { error = rb_str_new2("failed to sniff PDU header"); goto cleanup; } // peek at size of PDU int8_t sizes[] = { 0, 0, 0, 1, 2, 4, 8 }; int8_t sizes_idx = peek[sizeof(WATCHMAN_BINARY_MARKER) - 1]; if (sizes_idx < WATCHMAN_INT8_MARKER || sizes_idx > WATCHMAN_INT64_MARKER) { error = rb_str_new2("bad PDU size marker"); goto cleanup; } ssize_t peek_size = sizeof(WATCHMAN_BINARY_MARKER) - 1 + sizeof(int8_t) + sizes[sizes_idx]; received = recv(fileno, peek, peek_size, MSG_PEEK); if (received == -1) { goto system_call_fail; } else if (received != peek_size) { error = rb_str_new2("failed to peek at PDU header"); goto cleanup; } int8_t *pdu_size_ptr = peek + sizeof(WATCHMAN_BINARY_MARKER) - sizeof(int8_t); int64_t payload_size = peek_size + watchman_load_int((char **)&pdu_size_ptr, (char *)peek + peek_size); // actually read the PDU buffer = xmalloc(payload_size); if (!buffer) { errorClass = rb_eNoMemError; error = rb_str_new2("failed to allocate"); goto cleanup; } received = recv(fileno, buffer, payload_size, MSG_WAITALL); if (received == -1) { goto system_call_fail; } else if (received != payload_size) { error = rb_str_new2("failed to load PDU"); goto cleanup; } if (!(flags & O_NONBLOCK) && fcntl(fileno, F_SETFL, flags) == -1) { error = rb_str_new2("unable to restore fnctl flags"); goto cleanup; } char *payload = buffer + peek_size; loaded = watchman_load(&payload, payload + payload_size); goto cleanup; system_call_fail: errorClass = rb_eSystemCallError; error = INT2FIX(errno); cleanup: if (buffer) { xfree(buffer); } if (!(flags & O_NONBLOCK) && fcntl(fileno, F_SETFL, flags) == -1) { rb_raise(rb_eRuntimeError, "unable to restore fnctl flags"); } if (NIL_P(errorClass)) { errorClass = rb_eRuntimeError; } if (!NIL_P(error)) { rb_exc_raise(rb_class_new_instance(1, &error, errorClass)); } return loaded; } VALUE mRubyWatchman = 0; // module RubyWatchman void Init_ext() { mRubyWatchman = rb_define_module("RubyWatchman"); rb_define_singleton_method(mRubyWatchman, "load", RubyWatchman_load, 1); rb_define_singleton_method(mRubyWatchman, "dump", RubyWatchman_dump, 1); rb_define_singleton_method(mRubyWatchman, "query", RubyWatchman_query, 2); } watchman-4.9.0/ruby/ruby-watchman/ext/ruby-watchman/watchman.h000066400000000000000000000045021314236077500244350ustar00rootroot00000000000000/* Copyright (c) 2014, Facebook, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name Facebook nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include /** * @module RubyWatchman * * Methods for working with the Watchman binary protocol * * @see https://github.com/facebook/watchman/blob/master/BSER.markdown */ extern VALUE mRubyWatchman; /** * Convert an object serialized using the Watchman binary protocol[0] into an * unpacked Ruby object */ extern VALUE RubyWatchman_load(VALUE self, VALUE serialized); /** * Serialize a Ruby object into the Watchman binary protocol format */ extern VALUE RubyWatchman_dump(VALUE self, VALUE serializable); /** * Issue `query` to the Watchman instance listening on `socket` (a `UNIXSocket` * instance) and return the result * * The query is serialized following the Watchman binary protocol and the * result is converted to native Ruby objects before returning to the caller. */ extern VALUE RubyWatchman_query(VALUE self, VALUE query, VALUE socket); watchman-4.9.0/ruby/ruby-watchman/lib/000077500000000000000000000000001314236077500176465ustar00rootroot00000000000000watchman-4.9.0/ruby/ruby-watchman/lib/ruby-watchman.rb000066400000000000000000000001311314236077500227470ustar00rootroot00000000000000# Copyright (c) 2014-present Facebook. All Rights Reserved. require 'ruby-watchman/ext' watchman-4.9.0/ruby/ruby-watchman/lib/ruby-watchman/000077500000000000000000000000001314236077500224275ustar00rootroot00000000000000watchman-4.9.0/ruby/ruby-watchman/lib/ruby-watchman/version.rb000066400000000000000000000001511314236077500244360ustar00rootroot00000000000000# Copyright (c) 2014-present Facebook. All Rights Reserved. module RubyWatchman VERSION = '0.0.2' end watchman-4.9.0/ruby/ruby-watchman/ruby-watchman.gemspec000066400000000000000000000021001314236077500232170ustar00rootroot00000000000000# Copyright (c) 2014-present Facebook. All Rights Reserved. lib = File.expand_path('../lib', __FILE__) $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) require 'ruby-watchman/version' Gem::Specification.new do |s| s.name = 'ruby-watchman' s.version = RubyWatchman::VERSION s.authors = ['Greg Hurrell'] s.email = ['glh@fb.com'] s.summary = 'Ruby implementation of Watchman binary protocol' s.description = <<-DESC.gsub(/^\s+/, '') A fast implementation of the Watchman binary protocol written in C. DESC s.homepage = 'https://github.com/facebook/watchman/tree/master/ruby/ruby-watchman' s.license = 'BSD' s.extensions = 'ext/ruby-watchman/extconf.rb' s.files = Dir[ 'ext/ruby-watchman/**/*.{c,h,rb}', 'ext/ruby-watchman/depend', 'lib/**/*.rb', 'spec/**/*.rb' ] s.test_files = s.files.grep(%r{^spec/}) s.require_paths = %w[lib] s.add_development_dependency 'bundler', '~> 1.5' s.add_development_dependency 'rake' s.add_development_dependency 'rspec', '3.0.0' end watchman-4.9.0/ruby/ruby-watchman/spec/000077500000000000000000000000001314236077500200325ustar00rootroot00000000000000watchman-4.9.0/ruby/ruby-watchman/spec/ruby_watchman_spec.rb000066400000000000000000000312271314236077500242410ustar00rootroot00000000000000# Copyright (c) 2014-present Facebook. All Rights Reserved. require 'spec_helper' describe RubyWatchman do def binary(str) if str.respond_to?(:force_encoding) # Ruby >= 1.9 str.force_encoding('ASCII-8BIT') else str end end def little_endian? byte = [0xff00].pack('s')[0] if byte.is_a?(Fixnum) # ie. Ruby 1.8 byte.zero? elsif byte.is_a?(String) # ie. Ruby >= 1.9 byte == "\x00" else raise 'unable to determine endianness' end end def roundtrip(value) described_class.load(described_class.dump(value)) end it 'roundtrips arrays' do value = [1, 2, ['three', false]] expect(roundtrip(value)).to eq(value) end it 'roundtrips hashes' do value = { 'foo' => 1, 'bar' => { 'baz' => 'bing', } } expect(roundtrip(value)).to eq(value) end it 'roundtrips strings' do expect(roundtrip('')).to eq('') expect(roundtrip('/foo/bar/baz')).to eq('/foo/bar/baz') end it 'roundtrips uint8_t integers' do expect(roundtrip(0)).to eq(0) expect(roundtrip(1)).to eq(1) expect(roundtrip(0xff)).to eq(0xff) end it 'roundtrips uint16_t integers' do expect(roundtrip(0x1234)).to eq(0x1234) end it 'roundtrips uint32_t integers' do expect(roundtrip(0x12345678)).to eq(0x12345678) end it 'roundtrips uint64_t integers' do expect(roundtrip(0x12345678abcdef00)).to eq(0x12345678abcdef00) end it 'roundtrips floats' do expect(roundtrip(1234.5678)).to eq(1234.5678) end it 'roundtrips `true` booleans' do expect(roundtrip(true)).to eq(true) end it 'roundtrips `false` booleans' do expect(roundtrip(false)).to eq(false) end it 'roundtrips nil' do expect(roundtrip(nil)).to be_nil end describe '.load' do it 'rejects undersized input' do expect { described_class.load('') }. to raise_error(ArgumentError, /undersized/i) end it 'rejects input without a binary marker' do expect { described_class.load('gibberish') }. to raise_error(ArgumentError, /missing/i) end it 'rejects a missing payload header' do # binary protocol marker, but nothing else input = binary("\x00\x01") expect { described_class.load(input) }. to raise_error(ArgumentError, /undersized/i) end it 'rejects empty payloads' do # uint8_t size marker of zero input = binary("\x00\x01\x03\x00") expect { described_class.load(input) }. to raise_error(ArgumentError, /empty/i) end it 'rejects unrecognized payload markers' do # 0x10 is not a valid integer marker input = binary("\x00\x01\x10\x00") expect { described_class.load(input) }. to raise_error(ArgumentError, /bad integer/i) end it 'rejects undersized payload markers' do # int16_t marker, but only storage for int8_t input = binary("\x00\x01\x04\x00") expect { described_class.load(input) }. to raise_error(ArgumentError, /overrun\b.+\bint16_t/i) end it 'loads array values' do input = binary( "\x00\x01\x03\x16\x00\x03\x05\x03\x01\x02\x03" \ "\x06foobar\x08\x09\x00\x03\x02\x03\x0a\x0a" ) expect(described_class.load(input)). to eq([1, 'foobar', true, false, [10, nil]]) end it 'handles empty arrays' do input = binary("\x00\x01\x03\x03\x00\x03\x00") expect(described_class.load(input)).to eq([]) end it 'rejects arrays with incomplete headers' do input = binary("\x00\x01\x03\x02\x00\x03") expect { described_class.load(input) }. to raise_error(ArgumentError, /incomplete array header/i) end it 'rejects arrays with incomplete entries' do input = binary("\x00\x01\x03\x05\x00\x03\x10\x0a\x0a") expect { described_class.load(input) }. to raise_error(ArgumentError, /unexpected end/i) end it 'loads hash values' do input = binary( "\x00\x01\x03\x1a\x01\x03\x02\x02\x03\x03foo\x0a" \ "\x02\x03\x03bar\x01\x03\x01\x02\x03\x03baz\x08" ) expected = { 'foo' => nil, 'bar' => { 'baz' => true, } } expect(described_class.load(input)).to eq(expected) end it 'handles empty hashes' do input = binary("\x00\x01\x03\x03\x01\x03\x00") expect(described_class.load(input)).to eq({}) end it 'rejects hashes with incomplete headers' do input = binary("\x00\x01\x03\x02\x01\x03") expect { described_class.load(input) }. to raise_error(ArgumentError, /incomplete hash header/i) end it 'rejects hashes with invalid keys' do # keys must be strings; this one uses uses a number instead input = binary("\x00\x01\x03\x05\x01\x03\x01\x03\x00") expect { described_class.load(input) }. to raise_error(ArgumentError, /not a number/i) end it 'rejects hashes with missing keys' do input = binary("\x00\x01\x03\x03\x01\x03\x01") expect { described_class.load(input) }. to raise_error(ArgumentError, /unexpected end/i) end it 'rejects hashes with missing values' do input = binary("\x00\x01\x03\x09\x01\x03\x01\x02\x03\x03foo") expect { described_class.load(input) }. to raise_error(ArgumentError, /unexpected end/i) end it 'loads string values' do input = binary("\x00\x01\x03\x06\x02\x03\x03foo") expect(described_class.load(input)).to eq('foo') end it 'handles empty strings' do input = binary("\x00\x01\x03\x03\x02\x03\x00") expect(described_class.load(input)).to eq('') end if String.new.respond_to?(:encoding) # ie. Ruby >= 1.9 it 'loads string values as ASCII-8BIT encoded strings' do input = binary("\x00\x01\x03\x06\x02\x03\x03foo") expect(described_class.load(input).encoding.to_s).to eq('ASCII-8BIT') end end it 'rejects string values with incomplete headers' do input = binary("\x00\x01\x03\x01\x02") expect { described_class.load(input) }. to raise_error(ArgumentError, /invalid string header/i) end it 'rejects string values with invalid headers' do # expect a number indicating the string length, get a boolean instead input = binary("\x00\x01\x03\x05\x02\x08foo") expect { described_class.load(input) }. to raise_error(ArgumentError, /bad integer/i) end it 'rejects string values with insufficient storage' do # expect 3 bytes, get 2 instead input = binary("\x00\x01\x03\x05\x02\x03\x03fo") expect { described_class.load(input) }. to raise_error(ArgumentError, /insufficient string storage/i) end it 'loads uint8_t values' do input = binary("\x00\x01\x03\x02\x03\x12") expect(described_class.load(input)).to eq(0x12) end it 'loads uint16_t values' do if little_endian? input = binary("\x00\x01\x03\x03\x04\x34\x12") else input = binary("\x00\x01\x03\x03\x04\x12\x34") end expect(described_class.load(input)).to eq(0x1234) end it 'loads uint32_t values' do if little_endian? input = binary("\x00\x01\x03\x05\x05\x78\x56\x34\x12") else input = binary("\x00\x01\x03\x05\x05\x12\x34\x56\x78") end expect(described_class.load(input)).to eq(0x12345678) end it 'loads int uint64_t values' do if little_endian? input = binary("\x00\x01\x03\x09\x06\xef\xcd\xab\x90\x78\x56\x34\x12") else input = binary("\x00\x01\x03\x09\x06\x12\x34\x56\x78\x90\xab\xcd\xef") end expect(described_class.load(input)).to eq(0x1234567890abcdef) end it 'rejects int markers with missing values' do # expect an integer, but hit the end of the buffer input = binary("\x00\x01\x03\x01\x05") expect { described_class.load(input) }. to raise_error(ArgumentError, /insufficient int storage/i) end it 'rejects double markers with insufficient storage' do # double with 7 bytes of storage instead of the required 8 bytes input = binary("\x00\x01\x03\x08\x07\x00\x00\x00\x00\x00\x00\x00") expect { described_class.load(input) }. to raise_error(ArgumentError, /insufficient double storage/i) end it 'loads boolean `true` values' do input = binary("\x00\x01\x03\x01\x08") expect(described_class.load(input)).to eq(true) end it 'loads boolean `false` values' do input = binary("\x00\x01\x03\x01\x09") expect(described_class.load(input)).to eq(false) end it 'loads nil' do input = binary("\x00\x01\x03\x01\x0a") expect(described_class.load(input)).to be_nil end it 'loads templates' do # this example includes a "skip" marker input = binary( "\x00\x01\x03\x28\x0b\x00\x03\x02\x02\x03\x04name" \ "\x02\x03\x03age\x03\x03\x02\x03\x04fred\x03" \ "\x14\x02\x03\x04pete\x03\x1e\x0c\x03\x19" ) expected = [ { 'name' => 'fred', 'age' => 20 }, { 'name' => 'pete', 'age' => 30 }, { 'age' => 25 }, ] expect(described_class.load(input)).to eq(expected) end it 'handles empty templates' do input = binary( "\x00\x01\x03\x12\x0b\x00\x03\x02\x02" \ "\x03\x03foo\x02\x03\x03bar\x03\x00" ) expect(described_class.load(input)).to eq([]) end it 'rejects templates without a header array' do input = binary("\x00\x01\x03\x01\x0b") expect { described_class.load(input) }. to raise_error(ArgumentError, /unexpected end/i) end it 'rejects templates without a row items array' do input = binary( "\x00\x01\x03\x10\x0b\x00\x03\x02\x02" \ "\x03\x03foo\x02\x03\x03bar" ) expect { described_class.load(input) }. to raise_error(ArgumentError, /insufficient/i) end it 'rejects templates with non-string header items' do input = binary( "\x00\x01\x03\x0e\x0b\x00\x03\x02\x02" \ "\x03\x03foo\x03\x03\x03\x00" ) expect { described_class.load(input) }. to raise_error(ArgumentError, /not a number/) end it 'rejects templates with a header item array count mismatch' do input = binary( "\x00\x01\x03\x0a\x0b\x00\x03\x02\x02" \ "\x03\x03foo" ) expect { described_class.load(input) }. to raise_error(ArgumentError, /unexpected end/) end it 'rejects templates with a row item count mismatch' do input = binary( "\x00\x01\x03\x25\x0b\x00\x03\x02\x02\x03\x04name" \ "\x02\x03\x03age\x03\x03\x02\x03\x04fred\x03" \ "\x14\x02\x03\x04pete\x03\x1e" ) expect { described_class.load(input) }. to raise_error(ArgumentError, /unexpected end/) end end describe '.dump' do let(:query) do # typical kind of query that Command-T issues ['query', '/some/path', { 'expression' => ['type', 'f'], 'fields' => ['name'], }] end it 'serializes' do expect { described_class.dump(query) }.to_not raise_error end if String.new.respond_to?(:encoding) # ie. Ruby >= 1.9 it 'serializes to an ASCII-8BIT string' do expect(described_class.dump(query).encoding.to_s).to eq('ASCII-8BIT') end end it 'generates a correct serialization' do # in Ruby 1.8, hashes aren't ordered, so two serializations are possible if little_endian? expected = [ binary( "\x00\x01\x06\x49\x00\x00\x00\x00\x00\x00\x00\x00\x03\x03\x02\x03" \ "\x05query\x02\x03\x0a/some/path\x01\x03\x02\x02\x03\x0a" \ "expression\x00\x03\x02\x02\x03\x04type\x02\x03\x01f\x02\x03\x06" \ "fields\x00\x03\x01\x02\x03\x04name" ), binary( "\x00\x01\x06\x49\x00\x00\x00\x00\x00\x00\x00\x00\x03\x03\x02\x03" \ "\x05query\x02\x03\x0a/some/path\x01\x03\x02\x02\x03\x06fields" \ "\x00\x03\x01\x02\x03\x04name\x02\x03\x0aexpression\x00\x03\x02" \ "\x02\x03\x04type\x02\x03\x01f" ) ] else expected = [ binary( "\x00\x01\x06\x00\x00\x00\x00\x00\x00\x00\x49\x00\x03\x03\x02\x03" \ "\x05query\x02\x03\x0a/some/path\x01\x03\x02\x02\x03\x0a" \ "expression\x00\x03\x02\x02\x03\x04type\x02\x03\x01f\x02\x03\x06" \ "fields\x00\x03\x01\x02\x03\x04name" ), binary( "\x00\x01\x06\x00\x00\x00\x00\x00\x00\x00\x49\x00\x03\x03\x02\x03" \ "\x05query\x02\x03\x0a/some/path\x01\x03\x02\x02\x03\x06fields" \ "\x00\x03\x01\x02\x03\x04name\x02\x03\x0aexpression\x00\x03\x02" \ "\x02\x03\x04type\x02\x03\x01f" ) ] end expect(expected).to include(described_class.dump(query)) end end end watchman-4.9.0/ruby/ruby-watchman/spec/spec_helper.rb000066400000000000000000000003131314236077500226450ustar00rootroot00000000000000# Copyright (c) 2014-present Facebook. All Rights Reserved. $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__) $LOAD_PATH.unshift File.expand_path('../../ext', __FILE__) require 'ruby-watchman' watchman-4.9.0/runtests.py000077500000000000000000000346441314236077500156150ustar00rootroot00000000000000#!/usr/bin/env python # vim:ts=4:sw=4:et: from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import os import os.path # in the FB internal test infra, ensure that we are running from the # dir that houses this script rather than some other higher level dir # in the containing tree. We can't use __file__ to determine this # because our PAR machinery can generate a name like /proc/self/fd/3/foo # which won't resolve to anything useful by the time we get here. if not os.path.exists('runtests.py') and os.path.exists('watchman/runtests.py'): os.chdir('watchman') try: import unittest2 as unittest except ImportError: import unittest import sys # Ensure that we can find pywatchman and integration tests (if we're not the # main module, a wrapper is probably loading us up and we shouldn't screw around # with sys.path). if __name__ == '__main__': sys.path.insert(0, os.path.join(os.getcwd(), 'python')) sys.path.insert(0, os.path.join(os.getcwd(), 'tests', 'integration')) import json import shutil import subprocess import traceback import time import argparse import WatchmanInstance import TempDir import threading import multiprocessing import math import signal import Interrupt import random try: import queue except Exception: import Queue queue = Queue parser = argparse.ArgumentParser( description="Run the watchman unit and integration tests") parser.add_argument('-v', '--verbosity', default=2, help="test runner verbosity") parser.add_argument( "--keep", action='store_true', help="preserve all temporary files created during test execution") parser.add_argument( "--keep-if-fail", action='store_true', help="preserve all temporary files created during test execution if failed") parser.add_argument( "files", nargs='*', help='specify which test files to run') parser.add_argument( '--method', action='append', help='specify which python test method names to run') def default_concurrency(): # Python 2.7 hangs when we use threads, so avoid it # https://bugs.python.org/issue20318 if sys.version_info >= (3, 0): level = min(4, math.ceil(1.5 * multiprocessing.cpu_count())) if 'CIRCLECI' in os.environ: # Use fewer cores in circle CI because the inotify sysctls # are pretty low, and we sometimes hit those limits. level = level / 2 return int(level) return 1 parser.add_argument( '--concurrency', default=default_concurrency(), type=int, help='How many tests to run at once') parser.add_argument( '--watcher', action='store', default='auto', help='Specify which watcher should be used to run the tests') parser.add_argument( '--debug-watchman', action='store_true', help='Pauses start up and prints out the PID for watchman server process.' + 'Forces concurrency to 1.') parser.add_argument( '--watchman-path', action='store', help='Specify the path to the watchman binary') parser.add_argument( '--win7', action='store_true', help='Set env to force win7 compatibility tests') parser.add_argument( '--retry-flaky', action='store', type=int, default=2, help='How many additional times to retry flaky tests.') parser.add_argument( '--testpilot-json', action='store_true', help='Output test results in Test Pilot JSON format') args = parser.parse_args() # We test for this in a test case os.environ['WATCHMAN_EMPTY_ENV_VAR'] = '' if args.win7: os.environ['WATCHMAN_WIN7_COMPAT'] = '1' # Ensure that we find the watchman we built in the tests if args.watchman_path: bin_dir = os.path.dirname(args.watchman_path) else: bin_dir = os.path.dirname(__file__) os.environ['PATH'] = '%s%s%s' % (os.path.abspath(bin_dir), os.pathsep, os.environ['PATH']) # We'll put all our temporary stuff under one dir so that we # can clean it all up at the end temp_dir = TempDir.get_temp_dir(args.keep) def interrupt_handler(signo, frame): Interrupt.setInterrupted() signal.signal(signal.SIGINT, interrupt_handler) class Result(unittest.TestResult): # Make it easier to spot success/failure by coloring the status # green for pass, red for fail and yellow for skip. # also print the elapsed time per test transport = None encoding = None attempt = 0 def shouldStop(self): if Interrupt.wasInterrupted(): return True return super(Result, self).shouldStop() def startTest(self, test): self.startTime = time.time() super(Result, self).startTest(test) def addSuccess(self, test): elapsed = time.time() - self.startTime super(Result, self).addSuccess(test) if args.testpilot_json: print(json.dumps({ 'op': 'test_done', 'status': 'passed', 'test': test.id(), 'start_time': self.startTime, 'end_time': time.time()})) else: print('\033[32mPASS\033[0m %s (%.3fs)%s' % ( test.id(), elapsed, self._attempts())) def addSkip(self, test, reason): elapsed = time.time() - self.startTime super(Result, self).addSkip(test, reason) if args.testpilot_json: print(json.dumps({ 'op': 'test_done', 'status': 'skipped', 'test': test.id(), 'details': reason, 'start_time': self.startTime, 'end_time': time.time()})) else: print('\033[33mSKIP\033[0m %s (%.3fs) %s' % (test.id(), elapsed, reason)) def __printFail(self, test, err): elapsed = time.time() - self.startTime t, val, trace = err if args.testpilot_json: print(json.dumps({ 'op': 'test_done', 'status': 'failed', 'test': test.id(), 'details': ''.join(traceback.format_exception(t, val, trace)), 'start_time': self.startTime, 'end_time': time.time()})) else: print('\033[31mFAIL\033[0m %s (%.3fs)%s\n%s' % ( test.id(), elapsed, self._attempts(), ''.join(traceback.format_exception(t, val, trace)))) def addFailure(self, test, err): self.__printFail(test, err) super(Result, self).addFailure(test, err) def addError(self, test, err): self.__printFail(test, err) super(Result, self).addError(test, err) def setAttemptNumber(self, attempt): self.attempt = attempt def _attempts(self): if self.attempt > 0: return ' (%d attempts)' % self.attempt return '' def expandFilesList(files): """ expand any dir names into a full list of files """ res = [] for g in args.files: if os.path.isdir(g): for dirname, _dirs, files in os.walk(g): for f in files: if not f.startswith('.'): res.append(os.path.normpath(os.path.join(dirname, f))) else: res.append(os.path.normpath(g)) return res if args.files: args.files = expandFilesList(args.files) def shouldIncludeTestFile(filename): """ used by our loader to respect the set of tests to run """ global args fname = os.path.relpath(filename.replace('.pyc', '.py')) if args.files: for f in args.files: if f == fname: return True return False if args.method: # implies python tests only if not fname.endswith('.py'): return False return True def shouldIncludeTestName(name): """ used by our loader to respect the set of tests to run """ global args if args.method: method = name.split('.').pop() for f in args.method: if method == f: return True return False return True class Loader(unittest.TestLoader): """ allows us to control the subset of which tests are run """ def __init__(self): super(Loader, self).__init__() def loadTestsFromTestCase(self, testCaseClass): return super(Loader, self).loadTestsFromTestCase(testCaseClass) def getTestCaseNames(self, testCaseClass): names = super(Loader, self).getTestCaseNames(testCaseClass) return filter(lambda name: shouldIncludeTestName(name), names) def loadTestsFromModule(self, module, *args, **kw): if not shouldIncludeTestFile(module.__file__): return unittest.TestSuite() return super(Loader, self).loadTestsFromModule(module, *args, **kw) loader = Loader() suite = unittest.TestSuite() for d in ['python/tests', 'tests/integration']: suite.addTests(loader.discover(d, top_level_dir=d)) if os.name == 'nt': t_globs = 'tests/*.exe' else: t_globs = 'tests/*.t' tls = threading.local() # Manage printing from concurrent threads # http://stackoverflow.com/a/3030755/149111 class ThreadSafeFile(object): def __init__(self, f): self.f = f self.lock = threading.RLock() self.nesting = 0 def _getlock(self): self.lock.acquire() self.nesting += 1 def _droplock(self): nesting = self.nesting self.nesting = 0 for _ in range(nesting): self.lock.release() def __getattr__(self, name): if name == 'softspace': return tls.softspace else: raise AttributeError(name) def __setattr__(self, name, value): if name == 'softspace': tls.softspace = value else: return object.__setattr__(self, name, value) def write(self, data): self._getlock() self.f.write(data) if data == '\n': self._droplock() def flush(self): self._getlock() self.f.flush() self._droplock() sys.stdout = ThreadSafeFile(sys.stdout) tests_queue = queue.Queue() results_queue = queue.Queue() def runner(): global results_queue global tests_queue broken = False try: # Start up a shared watchman instance for the tests. inst = WatchmanInstance.Instance({ "watcher": args.watcher }, debug_watchman=args.debug_watchman) inst.start() # Allow tests to locate this default instance WatchmanInstance.setSharedInstance(inst) except Exception as e: print('while starting watchman: %s' % str(e)) traceback.print_exc() broken = True while not broken: test = tests_queue.get() try: if test == 'terminate': break if Interrupt.wasInterrupted() or broken: continue result = None for attempt in range(0, args.retry_flaky + 1): try: result = Result() result.setAttemptNumber(attempt) if hasattr(test, 'setAttemptNumber'): test.setAttemptNumber(attempt) test.run(result) if hasattr(test, 'setAttemptNumber') and \ not result.wasSuccessful(): # Facilitate retrying this possibly flaky test continue break except Exception as e: print(e) if hasattr(test, 'setAttemptNumber') and \ not result.wasSuccessful(): # Facilitate retrying this possibly flaky test continue if not result.wasSuccessful() and \ 'TRAVIS' in os.environ and \ hasattr(test, 'dumpLogs'): test.dumpLogs() results_queue.put(result) finally: tests_queue.task_done() if not broken: inst.stop() def expand_suite(suite, target=None): """ recursively expand a TestSuite into a list of TestCase """ if target is None: target = [] for test in suite: if isinstance(test, unittest.TestSuite): expand_suite(test, target) else: target.append(test) # randomize both because we don't want tests to have relatively # dependency ordering and also because this can help avoid clumping # longer running tests together random.shuffle(target) return target def queue_jobs(tests): for test in tests: tests_queue.put(test) all_tests = expand_suite(suite) if args.debug_watchman: args.concurrency = 1 elif len(all_tests) < args.concurrency: args.concurrency = len(all_tests) queue_jobs(all_tests) if args.concurrency > 1: for _ in range(args.concurrency): t = threading.Thread(target=runner) t.daemon = True t.start() # also send a termination sentinel tests_queue.put('terminate') # Wait for all tests to have been dispatched tests_queue.join() else: # add a termination sentinel tests_queue.put('terminate') runner() # Now pull out and aggregate the results tests_run = 0 tests_failed = 0 tests_skipped = 0 while not results_queue.empty(): res = results_queue.get() tests_run = tests_run + res.testsRun tests_failed = tests_failed + len(res.errors) + len(res.failures) tests_skipped = tests_skipped + len(res.skipped) if not args.testpilot_json: print('Ran %d, failed %d, skipped %d, concurrency %d' % ( tests_run, tests_failed, tests_skipped, args.concurrency)) if 'APPVEYOR' in os.environ: shutil.copytree(temp_dir.get_dir(), 'logs') subprocess.call(['7z', 'a', 'logs.zip', 'logs']) subprocess.call(['appveyor', 'PushArtifact', 'logs.zip']) if 'CIRCLE_ARTIFACTS' in os.environ: print('Creating %s/logs.zip' % os.environ['CIRCLE_ARTIFACTS']) subprocess.call(['zip', '-q', '-r', '%s/logs.zip' % os.environ['CIRCLE_ARTIFACTS'], temp_dir.get_dir()]) if tests_failed or (tests_run == 0): if args.keep_if_fail: temp_dir.set_keep(True) if args.testpilot_json: # When outputting JSON, our return code indicates if we successfully # produced output or not, not whether the tests passed. The JSON # output contains the detailed test pass/failure information. sys.exit(0) sys.exit(1) watchman-4.9.0/scm/000077500000000000000000000000001314236077500141205ustar00rootroot00000000000000watchman-4.9.0/scm/Mercurial.cpp000066400000000000000000000104331314236077500165500ustar00rootroot00000000000000/* Copyright 2017-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "Mercurial.h" #include "ChildProcess.h" #include "Logging.h" #include "watchman.h" // Capability indicating support for the mercurial SCM W_CAP_REG("scm-hg") namespace watchman { using Options = ChildProcess::Options; Mercurial::infoCache::infoCache(std::string path) : dirStatePath(path) { memset(&dirstate, 0, sizeof(dirstate)); } w_string Mercurial::infoCache::lookupMergeBase(const std::string& commitId) { if (dotChanged()) { watchman::log( watchman::DBG, "Blowing mergeBases cache because dirstate changed\n"); mergeBases.clear(); return nullptr; } auto it = mergeBases.find(commitId); if (it != mergeBases.end()) { watchman::log(watchman::DBG, "mergeBases cache hit for ", commitId, "\n"); return it->second; } watchman::log(watchman::DBG, "mergeBases cache miss for ", commitId, "\n"); return nullptr; } bool Mercurial::infoCache::dotChanged() { bool result; try { auto info = getFileInformation(dirStatePath.c_str(), CaseSensitivity::CaseSensitive); if (info.size != dirstate.size || info.mtime.tv_sec != dirstate.mtime.tv_sec || info.mtime.tv_nsec != dirstate.mtime.tv_nsec) { log(DBG, "mergeBases stat(", dirStatePath, ") info differs\n"); result = true; } else { result = false; log(DBG, "mergeBases stat(", dirStatePath, ") info same\n"); } dirstate = info; } catch (const std::system_error &exc) { // Failed to stat, so assume that it changed log(DBG, "mergeBases stat(", dirStatePath, ") failed: ", exc.what(), "\n"); result = true; } return result; } Mercurial::Mercurial(w_string_piece rootPath, w_string_piece scmRoot) : SCM(rootPath, scmRoot), cache_(infoCache(to(getSCMRoot(), "/.hg/dirstate"))) {} w_string Mercurial::mergeBaseWith(w_string_piece commitId) const { std::string idString(commitId.data(), commitId.size()); { auto cache = cache_.wlock(); auto result = cache->lookupMergeBase(idString); if (result) { watchman::log( watchman::DBG, "Using cached mergeBase value of ", result, " for commitId ", commitId, " because dirstate file is unchanged\n"); return result; } } Options opt; // Ensure that the hgrc doesn't mess with the behavior // of the commands that we're runing. opt.environment().set("HGPLAIN", w_string("1")); opt.nullStdin(); opt.pipeStdout(); opt.pipeStderr(); opt.chdir(getRootPath()); auto revset = to("ancestor(.,", commitId, ")"); ChildProcess proc( {"hg", "log", "-T", "{node}", "-r", revset}, std::move(opt)); auto outputs = proc.communicate(); auto status = proc.wait(); if (status) { throw std::runtime_error(to( "failed query for the merge base; command returned with status ", status, ", output=", outputs.first, " error=", outputs.second)); } if (outputs.first.size() != 40) { throw std::runtime_error(to( "expected merge base to be a 40 character string, got ", outputs.first)); } { auto cache = cache_.wlock(); cache->mergeBases[idString] = outputs.first; } return outputs.first; } std::vector Mercurial::getFilesChangedSinceMergeBaseWith( w_string_piece commitId) const { Options opt; // Ensure that the hgrc doesn't mess with the behavior // of the commands that we're runing. opt.environment().set("HGPLAIN", w_string("1")); opt.nullStdin(); opt.pipeStdout(); opt.pipeStderr(); opt.chdir(getRootPath()); // The "" argument at the end causes paths to be printed out relative to the // cwd (set to root path above). ChildProcess proc( {"hg", "status", "-n", "--rev", commitId, ""}, std::move(opt)); auto outputs = proc.communicate(); std::vector lines; w_string_piece(outputs.first).split(lines, '\n'); auto status = proc.wait(); if (status) { throw std::runtime_error(to( "failed query for the hg status; command returned with status ", status, " out=", outputs.first, " err=", outputs.second)); } return lines; } } watchman-4.9.0/scm/Mercurial.h000066400000000000000000000015661314236077500162240ustar00rootroot00000000000000/* Copyright 2017-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #pragma once #include "watchman_system.h" #include #include #include "SCM.h" #include "watchman_synchronized.h" #include "FileInformation.h" namespace watchman { class Mercurial : public SCM { public: Mercurial(w_string_piece rootPath, w_string_piece scmRoot); w_string mergeBaseWith(w_string_piece commitId) const override; std::vector getFilesChangedSinceMergeBaseWith( w_string_piece commitId) const override; private: struct infoCache { std::string dirStatePath; FileInformation dirstate; std::unordered_map mergeBases; explicit infoCache(std::string path); bool dotChanged(); w_string lookupMergeBase(const std::string& commitId); }; mutable Synchronized cache_; }; } watchman-4.9.0/scm/SCM.cpp000066400000000000000000000033571314236077500152560ustar00rootroot00000000000000/* Copyright 2017-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "SCM.h" #include "Mercurial.h" #include "make_unique.h" #include "watchman.h" namespace watchman { static const w_string_piece kGit{".git"}; static const w_string_piece kHg{".hg"}; SCM::~SCM() {} SCM::SCM(w_string_piece rootPath, w_string_piece scmRoot) : rootPath_(rootPath.asWString()), scmRoot_(scmRoot.asWString()) {} const w_string& SCM::getRootPath() const { return rootPath_; } const w_string& SCM::getSCMRoot() const { return scmRoot_; } // Walks the paths from rootPath up to the root of the filesystem. // At each level, checks to see if any of the candidate filenames // in the provided candidates list exist. Returns the name of // the first one it finds. If no candidates are found, returns // nullptr. w_string findFileInDirTree( w_string_piece rootPath, std::initializer_list candidates) { w_check(rootPath.pathIsAbsolute(), "rootPath must be absolute"); while (true) { for (auto& candidate : candidates) { auto path = w_string::pathCat({rootPath, candidate}); if (w_path_exists(path.c_str())) { return path; } } auto next = rootPath.dirName(); if (next == rootPath) { // We can't go any higher, so we couldn't find the // requested path(s) return nullptr; } rootPath = next; } } std::unique_ptr SCM::scmForPath(w_string_piece rootPath) { auto scmRoot = findFileInDirTree(rootPath, {kHg, kGit}); if (!scmRoot) { return nullptr; } auto base = scmRoot.piece().baseName(); if (base == kHg) { return make_unique(rootPath, scmRoot.piece().dirName()); } if (base == kGit) { } return nullptr; } } watchman-4.9.0/scm/SCM.h000066400000000000000000000035131314236077500147150ustar00rootroot00000000000000/* Copyright 2017-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #pragma once #include "watchman_system.h" #include #include #include "watchman_string.h" namespace watchman { class SCM { protected: // Construct an SCM instance for the specified rootPath on disk. // rootPath may be a child directory of the true SCM root. SCM(w_string_piece rootPath, w_string_piece scmRoot); public: virtual ~SCM(); // Figure out an appropriate SCM implementation for the specified // rootPath. Returns a managed pointer to it if successful. // Returns nullptr if rootPath doesn't appear to be tracked // by any source control systems known to watchman. // Will throw an exception if watchman encounters a problem // in setting up the SCM instance. static std::unique_ptr scmForPath(w_string_piece rootPath); // Returns the root path provided during construction const w_string& getRootPath() const; // Returns the directory which is considered to be the root of // of the repository. This may be a parent of the rootPath that // was used to construct this SCM instance. const w_string& getSCMRoot() const; // Compute the merge base between the working copy revision and the // specified commitId. The commitId is typically something like "master". virtual w_string mergeBaseWith(w_string_piece commitId) const = 0; // Compute the set of paths that have changed in the commits // starting in the working copy and going back to the merge base // with the specified commitId. This list also includes the // set of files that show as modified in the "status" output, // but NOT those that are ignored. virtual std::vector getFilesChangedSinceMergeBaseWith( w_string_piece commitId) const = 0; private: w_string rootPath_; w_string scmRoot_; }; } watchman-4.9.0/spawn.cpp000066400000000000000000000215071314236077500151770ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman_system.h" #include "make_unique.h" #include "watchman.h" using watchman::ChildProcess; using watchman::FileDescriptor; using Options = watchman::ChildProcess::Options; using Environment = watchman::ChildProcess::Environment; static std::unique_ptr prepare_stdin( struct watchman_trigger_command* cmd, w_query_res* res) { char stdin_file_name[WATCHMAN_NAME_MAX]; if (cmd->stdin_style == trigger_input_style::input_dev_null) { return w_stm_open("/dev/null", O_RDONLY|O_CLOEXEC); } // Adjust result to fit within the specified limit if (cmd->max_files_stdin > 0) { auto& fileList = res->resultsArray.array(); auto n_files = std::min(size_t(cmd->max_files_stdin), fileList.size()); fileList.resize(std::min(fileList.size(), n_files)); } /* prepare the input stream for the child process */ snprintf( stdin_file_name, sizeof(stdin_file_name), "%s/wmanXXXXXX", watchman_tmp_dir); auto stdin_file = w_mkstemp(stdin_file_name); if (!stdin_file) { w_log(W_LOG_ERR, "unable to create a temporary file: %s %s\n", stdin_file_name, strerror(errno)); return NULL; } /* unlink the file, we don't need it in the filesystem; * we'll pass the fd on to the child as stdin */ unlink(stdin_file_name); // FIXME: windows path translation switch (cmd->stdin_style) { case input_json: { w_jbuffer_t buffer; w_log(W_LOG_ERR, "input_json: sending json object to stm\n"); if (!buffer.jsonEncodeToStream( res->resultsArray, stdin_file.get(), 0)) { w_log(W_LOG_ERR, "input_json: failed to write json data to stream: %s\n", strerror(errno)); return NULL; } break; } case input_name_list: for (auto& name : res->resultsArray.array()) { auto& nameStr = json_to_w_string(name); if (stdin_file->write(nameStr.data(), nameStr.size()) != (int)nameStr.size() || stdin_file->write("\n", 1) != 1) { w_log( W_LOG_ERR, "write failure while producing trigger stdin: %s\n", strerror(errno)); return nullptr; } } break; case input_dev_null: // already handled above break; } stdin_file->rewind(); return stdin_file; } static void spawn_command( const std::shared_ptr& root, struct watchman_trigger_command* cmd, w_query_res* res, struct ClockSpec* since_spec) { long arg_max; size_t argspace_remaining; bool file_overflow = false; #ifdef _WIN32 arg_max = 32*1024; #else arg_max = sysconf(_SC_ARG_MAX); #endif if (arg_max <= 0) { argspace_remaining = UINT_MAX; } else { argspace_remaining = (uint32_t)arg_max; } // Allow some misc working overhead argspace_remaining -= 32; // Record an overflow before we call prepare_stdin(), which mutates // and resizes the results to fit the specified limit. if (cmd->max_files_stdin > 0 && res->resultsArray.array().size() > cmd->max_files_stdin) { file_overflow = true; } auto stdin_file = prepare_stdin(cmd, res); if (!stdin_file) { w_log( W_LOG_ERR, "trigger %s:%s %s\n", root->root_path.c_str(), cmd->triggername.c_str(), strerror(errno)); return; } // Assumption: that only one thread will be executing on a given // cmd instance so that mutation of cmd->env is safe. // This is guaranteed in the current architecture. // It is way too much of a hassle to try to recreate the clock value if it's // not a relative clock spec, and it's only going to happen on the first run // anyway, so just skip doing that entirely. if (since_spec && since_spec->tag == w_cs_clock) { cmd->env.set("WATCHMAN_SINCE", since_spec->clock.position.toClockString()); } else { cmd->env.unset("WATCHMAN_SINCE"); } cmd->env.set( "WATCHMAN_CLOCK", res->clockAtStartOfQuery.position().toClockString()); if (cmd->query->relative_root) { cmd->env.set("WATCHMAN_RELATIVE_ROOT", cmd->query->relative_root); } else { cmd->env.unset("WATCHMAN_RELATIVE_ROOT"); } // Compute args auto args = json_deep_copy(cmd->command); if (cmd->append_files) { // Measure how much space the base args take up for (size_t i = 0; i < json_array_size(args); i++) { const char *ele = json_string_value(json_array_get(args, i)); argspace_remaining -= strlen(ele) + 1 + sizeof(char*); } // Dry run with env to compute space size_t env_size; cmd->env.asEnviron(&env_size); argspace_remaining -= env_size; for (const auto& item : res->dedupedFileNames) { // also: NUL terminator and entry in argv uint32_t size = item.size() + 1 + sizeof(char*); if (argspace_remaining < size) { file_overflow = true; break; } argspace_remaining -= size; json_array_append_new(args, w_string_to_json(item)); } } cmd->env.set("WATCHMAN_FILES_OVERFLOW", file_overflow); Options opts; opts.environment() = cmd->env; #ifndef _WIN32 sigset_t mask; sigemptyset(&mask); opts.setSigMask(mask); #endif opts.setFlags(POSIX_SPAWN_SETPGROUP); opts.dup2(stdin_file->getFileDescriptor(), STDIN_FILENO); if (cmd->stdout_name) { opts.open(STDOUT_FILENO, cmd->stdout_name, cmd->stdout_flags, 0666); } else { opts.dup2(FileDescriptor::stdOut(), STDOUT_FILENO); } if (cmd->stderr_name) { opts.open(STDOUT_FILENO, cmd->stderr_name, cmd->stderr_flags, 0666); } else { opts.dup2(FileDescriptor::stdErr(), STDERR_FILENO); } // Figure out the appropriate cwd w_string working_dir(cmd->query->relative_root); if (!working_dir) { working_dir = root->root_path; } auto cwd = cmd->definition.get_default("chdir"); if (cwd) { auto target = json_to_w_string(cwd); if (w_is_path_absolute_cstr_len(target.data(), target.size())) { working_dir = target; } else { working_dir = w_string::pathCat({working_dir, target}); } } watchman::log(watchman::DBG, "using ", working_dir, " for working dir\n"); opts.chdir(working_dir.c_str()); try { if (cmd->current_proc) { cmd->current_proc->kill(); cmd->current_proc->wait(); } cmd->current_proc = watchman::make_unique(args, std::move(opts)); } catch (const std::exception& exc) { watchman::log( watchman::ERR, "trigger ", root->root_path, ":", cmd->triggername, " failed: ", exc.what(), "\n"); } // We have integration tests that check for this string watchman::log( cmd->current_proc ? watchman::DBG : watchman::ERR, "posix_spawnp: ", cmd->triggername, "\n"); } bool watchman_trigger_command::maybeSpawn( const std::shared_ptr& root) { bool didRun = false; // If it looks like we're in a repo undergoing a rebase or // other similar operation, we want to defer triggers until // things settle down if (root->view()->isVCSOperationInProgress()) { w_log(W_LOG_DBG, "deferring triggers until VCS operations complete\n"); return false; } auto since_spec = query->since_spec.get(); if (since_spec && since_spec->tag == w_cs_clock) { w_log( W_LOG_DBG, "running trigger \"%s\" rules! since %" PRIu32 "\n", triggername.c_str(), since_spec->clock.position.ticks); } else { w_log(W_LOG_DBG, "running trigger \"%s\" rules!\n", triggername.c_str()); } // Triggers never need to sync explicitly; we are only dispatched // at settle points which are by definition sync'd to the present time query->sync_timeout = std::chrono::milliseconds(0); watchman::log(watchman::DBG, "assessing trigger ", triggername, "\n"); try { auto res = w_query_execute(query.get(), root, time_generator); watchman::log( watchman::DBG, "trigger \"", triggername, "\" generated ", res.resultsArray.array().size(), " results\n"); // create a new spec that will be used the next time auto saved_spec = std::move(query->since_spec); query->since_spec = watchman::make_unique(res.clockAtStartOfQuery); watchman::log( watchman::DBG, "updating trigger \"", triggername, "\" use ", res.clockAtStartOfQuery.position().ticks, " ticks next time\n"); if (!res.resultsArray.array().empty()) { didRun = true; spawn_command(root, this, &res, saved_spec.get()); } return didRun; } catch (const QueryExecError& e) { watchman::log( watchman::ERR, "error running trigger \"", triggername, "\" query: ", e.what(), "\n"); return false; } } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/state.cpp000066400000000000000000000072011314236077500151620ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #include "watchman_synchronized.h" using watchman::FileDescriptor; /** The state saving thread is responsible for writing out the * persistent information about the users watches. * It runs in its own thread so that we avoid the possibility * of self deadlock if various threads were to immediately * save the state when things are changing. * * This uses a simple condition variable to wait for and be * notified of state changes. */ namespace { struct state { bool needsSave{false}; }; watchman::Synchronized saveState; std::condition_variable stateCond; std::thread state_saver_thread; } static bool do_state_save(void); static void state_saver() { bool do_save; w_set_thread_name("statesaver"); while (!w_is_stopping()) { { auto state = saveState.wlock(); if (!state->needsSave) { stateCond.wait(state.getUniqueLock()); } do_save = state->needsSave; state->needsSave = false; } if (do_save) { do_state_save(); } } } void w_state_shutdown(void) { if (dont_save_state) { return; } stateCond.notify_one(); state_saver_thread.join(); } bool w_state_load(void) { json_error_t err; if (dont_save_state) { return true; } state_saver_thread = std::thread(state_saver); auto state = json_load_file(watchman_state_file, 0, &err); if (!state) { w_log(W_LOG_ERR, "failed to parse json from %s: %s\n", watchman_state_file, err.text); return false; } if (!w_root_load_state(state)) { return false; } return true; } #if defined(HAVE_MKOSTEMP) && defined(sun) // Not guaranteed to be defined in stdlib.h extern int mkostemp(char *, int); #endif std::unique_ptr w_mkstemp(char* templ) { #if defined(_WIN32) char *name = _mktemp(templ); if (!name) { return nullptr; } // Most annoying aspect of windows is the latency around // file handle exclusivity. We could avoid this dumb loop // by implementing our own mkostemp, but this is the most // expedient option for the moment. for (size_t attempts = 0; attempts < 10; ++attempts) { auto stm = w_stm_open(name, O_RDWR | O_CLOEXEC | O_CREAT | O_TRUNC, 0600); if (stm) { return stm; } if (errno == EACCES) { /* sleep override */ usleep(2000); continue; } return nullptr; } return nullptr; #else FileDescriptor fd; # ifdef HAVE_MKOSTEMP fd = FileDescriptor(mkostemp(templ, O_CLOEXEC)); # else fd = FileDescriptor(mkstemp(templ)); # endif if (!fd) { return nullptr; } fd.setCloExec(); return w_stm_fdopen(std::move(fd)); #endif } static bool do_state_save(void) { w_jbuffer_t buffer; auto state = json_object(); auto file = w_stm_open(watchman_state_file, O_WRONLY | O_TRUNC | O_CREAT, 0600); if (!file) { w_log( W_LOG_ERR, "save_state: unable to open %s for write: %s\n", watchman_state_file, strerror(errno)); return false; } state.set("version", typed_string_to_json(PACKAGE_VERSION, W_STRING_UNICODE)); /* now ask the different subsystems to fill out the state */ if (!w_root_save_state(state)) { return false; } /* we've prepared what we're going to save, so write it out */ buffer.jsonEncodeToStream(state, file.get(), JSON_INDENT(4)); return true; } /** Arranges for the state to be saved. * Does not immediately save the state. */ void w_state_save(void) { if (dont_save_state) { return; } saveState.wlock()->needsSave = true; stateCond.notify_one(); } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/stream.cpp000066400000000000000000000005201314236077500153320ustar00rootroot00000000000000/* Copyright 2014-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" std::unique_ptr w_stm_connect( const char* path, int timeoutms) { #ifdef _WIN32 return w_stm_connect_named_pipe(path, timeoutms); #else return w_stm_connect_unix(path, timeoutms); #endif } watchman-4.9.0/stream_stdout.cpp000066400000000000000000000032221314236077500167360ustar00rootroot00000000000000/* Copyright 2014-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" using watchman::FileDescriptor; namespace { class StdioStream : public watchman_stream { const FileDescriptor& fd_; public: explicit StdioStream(const FileDescriptor& fd) : fd_(fd) {} int read(void* buf, int size) override { auto result = fd_.read(buf, size); if (result.hasError()) { errno = result.error().value(); #ifdef _WIN32 // TODO: propagate Result as return type errno = map_win32_err(errno); #endif return -1; } return result.value(); } int write(const void* buf, int size) override { auto result = fd_.write(buf, size); if (result.hasError()) { errno = result.error().value(); #ifdef _WIN32 // TODO: propagate Result as return type errno = map_win32_err(errno); #endif return -1; } return result.value(); } w_evt_t getEvents() override { w_log(W_LOG_FATAL, "calling get_events on a stdio stm\n"); return nullptr; } void setNonBlock(bool) override {} bool rewind() override { return false; } bool shutdown() override { return false; } bool peerIsOwner() override { return false; } pid_t getPeerProcessID() const override { return 0; } const watchman::FileDescriptor& getFileDescriptor() const override { return fd_; } }; } w_stm_t w_stm_stdout(void) { static StdioStream stdoutStream(FileDescriptor::stdOut()); return &stdoutStream; } w_stm_t w_stm_stdin(void) { static StdioStream stdinStream(FileDescriptor::stdIn()); return &stdinStream; } watchman-4.9.0/stream_unix.cpp000066400000000000000000000142531314236077500164050ustar00rootroot00000000000000/* Copyright 2014-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #ifdef HAVE_SYS_UCRED_H #include #endif #ifdef HAVE_SYS_SOCKET_H #include #endif #include "FileDescriptor.h" #include "Pipe.h" #include "make_unique.h" using watchman::FileDescriptor; using watchman::Pipe; static const int kWriteTimeout = 60000; namespace { // This trait allows w_poll_events to wait on either a PipeEvent or // a descriptor contained in a UnixStream class PollableEvent : public watchman_event { public: virtual int getFd() const = 0; }; // The event object, implemented as pipe class PipeEvent : public PollableEvent { public: Pipe pipe; void notify() override { ignore_result(write(pipe.write.fd(), "a", 1)); } bool testAndClear() override { char buf[64]; bool signalled = false; while (read(pipe.read.fd(), buf, sizeof(buf)) > 0) { signalled = true; } return signalled; } int getFd() const override { return pipe.read.fd(); } }; // Event object that UnixStream returns via getEvents. // It cannot be poked by hand; it is just a helper to // allow waiting on a socket using w_poll_events. class FakeSocketEvent : public PollableEvent { public: int socket; explicit FakeSocketEvent(int fd) : socket(fd) {} void notify() override {} bool testAndClear() override { return false; } int getFd() const override { return socket; } }; class UnixStream : public watchman_stream { public: FileDescriptor fd; FakeSocketEvent evt; #ifdef SO_PEERCRED struct ucred cred; #elif defined(LOCAL_PEERCRED) struct xucred cred; #endif bool credvalid{false}; explicit UnixStream(FileDescriptor&& descriptor) : fd(std::move(descriptor)), evt(fd.fd()) { socklen_t len = sizeof(cred); #ifdef SO_PEERCRED credvalid = getsockopt(fd.fd(), SOL_SOCKET, SO_PEERCRED, &cred, &len) == 0; #elif defined(LOCAL_PEERCRED) credvalid = getsockopt(fd.fd(), SOL_LOCAL, LOCAL_PEERCRED, &cred, &len) == 0; #endif } const FileDescriptor& getFileDescriptor() const override { return fd; } int read(void* buf, int size) override { errno = 0; return ::read(fd.fd(), buf, size); } int write(const void* buf, int size) override { errno = 0; if (!fd.isNonBlock()) { int wrote = 0; while (size > 0) { struct pollfd pfd; pfd.fd = fd.fd(); pfd.events = POLLOUT; if (poll(&pfd, 1, kWriteTimeout) == 0) { break; } if (pfd.revents & (POLLERR | POLLHUP)) { break; } auto x = ::write(fd.fd(), buf, size); if (x <= 0) { break; } wrote += x; size -= x; buf = reinterpret_cast( reinterpret_cast(buf) + x); } return wrote == 0 ? -1 : wrote; } return ::write(fd.fd(), buf, size); } w_evt_t getEvents() override { return &evt; } void setNonBlock(bool nonb) override { if (nonb) { fd.setNonBlock(); } else { fd.clearNonBlock(); } } bool rewind() override { return lseek(fd.fd(), 0, SEEK_SET) == 0; } bool shutdown() override { return ::shutdown(fd.fd(), SHUT_RDWR); } // For these PEERCRED things, the uid reported is the effective uid of // the process, which may have been altered due to setuid or similar // mechanisms. We'll treat the other process as an owner if their // effective UID matches ours, or if they are root. bool peerIsOwner() override { if (!credvalid) { return false; } #ifdef SO_PEERCRED if (cred.uid == getuid() || cred.uid == 0) { return true; } #elif defined(LOCAL_PEERCRED) if (cred.cr_uid == getuid() || cred.cr_uid == 0) { return true; } #endif return false; } pid_t getPeerProcessID() const override { if (!credvalid) { return 0; } #ifdef SO_PEERCRED return cred.pid; #else return 0; #endif } }; } std::unique_ptr w_event_make(void) { return watchman::make_unique(); } #define MAX_POLL_EVENTS 63 // Must match MAXIMUM_WAIT_OBJECTS-1 on win int w_poll_events(struct watchman_event_poll *p, int n, int timeoutms) { struct pollfd pfds[MAX_POLL_EVENTS]; int i; int res; if (n > MAX_POLL_EVENTS) { // Programmer error :-/ w_log(W_LOG_FATAL, "%d > MAX_POLL_EVENTS (%d)\n", n, MAX_POLL_EVENTS); } for (i = 0; i < n; i++) { auto pe = dynamic_cast(p[i].evt); w_check(pe != nullptr, "PollableEvent!?"); pfds[i].fd = pe->getFd(); pfds[i].events = POLLIN|POLLHUP|POLLERR; pfds[i].revents = 0; } res = poll(pfds, n, timeoutms); for (i = 0; i < n; i++) { p[i].ready = pfds[i].revents != 0; } return res; } std::unique_ptr w_stm_fdopen(FileDescriptor&& fd) { if (!fd) { return nullptr; } return watchman::make_unique(std::move(fd)); } std::unique_ptr w_stm_connect_unix( const char* path, int timeoutms) { struct sockaddr_un un; int max_attempts = timeoutms / 10; int attempts = 0; int bufsize = WATCHMAN_IO_BUF_SIZE; if (strlen(path) >= sizeof(un.sun_path) - 1) { w_log(W_LOG_ERR, "w_stm_connect_unix(%s) path is too long\n", path); errno = E2BIG; return NULL; } FileDescriptor fd(socket(PF_LOCAL, SOCK_STREAM, 0)); if (!fd) { return nullptr; } memset(&un, 0, sizeof(un)); un.sun_family = PF_LOCAL; memcpy(un.sun_path, path, strlen(path)); retry_connect: if (connect(fd.fd(), (struct sockaddr*)&un, sizeof(un))) { int err = errno; if (err == ECONNREFUSED || err == ENOENT) { if (attempts++ < max_attempts) { usleep(10000); goto retry_connect; } } return nullptr; } setsockopt(fd.fd(), SOL_SOCKET, SO_RCVBUF, (void*)&bufsize, sizeof(bufsize)); return w_stm_fdopen(std::move(fd)); } std::unique_ptr w_stm_open(const char* filename, int flags, ...) { int mode = 0; // If we're creating, pull out the mode flag if (flags & O_CREAT) { va_list ap; va_start(ap, flags); mode = va_arg(ap, int); va_end(ap); } return w_stm_fdopen(FileDescriptor(open(filename, flags, mode))); } watchman-4.9.0/stream_win.cpp000066400000000000000000000470721314236077500162240ustar00rootroot00000000000000/* Copyright 2014-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #include "make_unique.h" using watchman::FileDescriptor; // Things are more complicated here than on unix. // We maintain an overlapped context for reads and // another for writes. Actual write data is queued // and dispatched to the underlying handle as prior // writes complete. struct win_handle; namespace { class WindowsEvent : public watchman_event { public: HANDLE hEvent; explicit WindowsEvent(bool initialState = false) : hEvent(CreateEvent(nullptr, TRUE, initialState, nullptr)) {} ~WindowsEvent() { CloseHandle(hEvent); } void notify() override { SetEvent(hEvent); } bool testAndClear() override { bool was_set = WaitForSingleObject(hEvent, 0) == WAIT_OBJECT_0; ResetEvent(hEvent); return was_set; } void reset() { ResetEvent(hEvent); } }; } struct overlapped_op { OVERLAPPED olap; struct win_handle *h; struct write_buf *wbuf; }; struct write_buf { struct write_buf *next; int len; char *cursor; char data[1]; }; class win_handle : public watchman_stream { public: struct overlapped_op *read_pending{nullptr}, *write_pending{nullptr}; FileDescriptor h; WindowsEvent waitable; CRITICAL_SECTION mtx; bool error_pending{false}; DWORD errcode{0}; DWORD file_type; struct write_buf *write_head{nullptr}, *write_tail{nullptr}; char read_buf[8192]; char* read_cursor{read_buf}; int read_avail{0}; bool blocking{true}; explicit win_handle(FileDescriptor&& handle); ~win_handle(); int read(void* buf, int size) override; int write(const void* buf, int size) override; w_evt_t getEvents() override; void setNonBlock(bool nonb) override; bool rewind() override; bool shutdown() override; bool peerIsOwner() override; const FileDescriptor& getFileDescriptor() const override { return h; } // Helper to avoid sprinkling casts all over this file inline HANDLE handle() const { return (HANDLE)h.handle(); } pid_t getPeerProcessID() const override { return 0; } }; #if 1 #define stream_debug(x, ...) 0 #else #define stream_debug(x, ...) \ do { \ time_t now; \ char timebuf[64]; \ struct tm tm; \ time(&now); \ localtime_s(&tm, &now); \ strftime(timebuf, sizeof(timebuf), "%Y-%m-%dT%H:%M:%S", &tm); \ fprintf(stderr, "%s : ", timebuf); \ fprintf(stderr, x, __VA_ARGS__); \ fflush(stderr); \ } while (0) #endif typedef BOOL (WINAPI *get_overlapped_result_ex_func)( HANDLE file, LPOVERLAPPED olap, LPDWORD bytes, DWORD millis, BOOL alertable); static BOOL WINAPI probe_get_overlapped_result_ex( HANDLE file, LPOVERLAPPED olap, LPDWORD bytes, DWORD millis, BOOL alertable); static get_overlapped_result_ex_func get_overlapped_result_ex = probe_get_overlapped_result_ex; static BOOL WINAPI get_overlapped_result_ex_impl( HANDLE file, LPOVERLAPPED olap, LPDWORD bytes, DWORD millis, BOOL alertable) { DWORD waitReturnCode, err; stream_debug( "Preparing to wait for maximum %ums\n", millis ); if ( millis != 0 ) { waitReturnCode = WaitForSingleObjectEx(olap->hEvent, millis, alertable); switch (waitReturnCode) { case WAIT_OBJECT_0: // Event is signaled, overlapped IO operation result should be available. break; case WAIT_IO_COMPLETION: // WaitForSingleObjectEx returnes because the system added an I/O // completion routine or an asynchronous procedure call (APC) to the // thread queue. SetLastError(WAIT_IO_COMPLETION); break; case WAIT_TIMEOUT: // We reached the maximum allowed wait time, the IO operation failed // to complete in timely fashion. SetLastError(WAIT_TIMEOUT); return FALSE; case WAIT_FAILED: // something went wrong calling WaitForSingleObjectEx err = GetLastError(); stream_debug("WaitForSingleObjectEx failed: %s\n", win32_strerror(err)); return FALSE; default: // unexpected situation deserving investigation. err = GetLastError(); stream_debug("Unexpected error: %s\n", win32_strerror(err)); return FALSE; } } return GetOverlappedResult(file, olap, bytes, FALSE); } static BOOL WINAPI probe_get_overlapped_result_ex( HANDLE file, LPOVERLAPPED olap, LPDWORD bytes, DWORD millis, BOOL alertable ) { get_overlapped_result_ex_func func; func = (get_overlapped_result_ex_func)GetProcAddress( GetModuleHandle("kernel32.dll"), "GetOverlappedResultEx"); if ((getenv("WATCHMAN_WIN7_COMPAT") && getenv("WATCHMAN_WIN7_COMPAT")[0] == '1') || !func) { func = get_overlapped_result_ex_impl; } get_overlapped_result_ex = func; return func(file, olap, bytes, millis, alertable); } win_handle::~win_handle() { EnterCriticalSection(&mtx); if (read_pending) { if (CancelIoEx(handle(), &read_pending->olap)) { free(read_pending); read_pending = nullptr; } } if (write_pending) { if (CancelIoEx(handle(), &write_pending->olap)) { free(write_pending); write_pending = nullptr; } while (write_head) { struct write_buf* b = write_head; write_head = b->next; free(b); } } DeleteCriticalSection(&mtx); } static void move_from_read_buffer(struct win_handle *h, int *total_read_ptr, char **target_buf_ptr, int *size_ptr) { int nread = std::min(*size_ptr, h->read_avail); size_t wasted; if (!nread) { return; } memcpy(*target_buf_ptr, h->read_cursor, nread); *total_read_ptr += nread; *target_buf_ptr += nread; *size_ptr -= nread; h->read_cursor += nread; h->read_avail -= nread; stream_debug("moved %d bytes from buffer\n", nread); // Pack the buffer to free up space at the rear for reads wasted = h->read_cursor - h->read_buf; if (wasted) { memmove(h->read_buf, h->read_cursor, h->read_avail); h->read_cursor = h->read_buf; } } static bool win_read_handle_completion(struct win_handle *h) { BOOL olap_res; DWORD bytes, err; again: EnterCriticalSection(&h->mtx); if (!h->read_pending) { LeaveCriticalSection(&h->mtx); return false; } stream_debug("have read_pending, checking status\n"); h->waitable.reset(); // Don't hold the mutex while we're blocked LeaveCriticalSection(&h->mtx); olap_res = get_overlapped_result_ex( h->handle(), &h->read_pending->olap, &bytes, h->blocking ? INFINITE : 0, true); err = GetLastError(); EnterCriticalSection(&h->mtx); if (olap_res) { stream_debug("pending read completed, read %d bytes, %s\n", (int)bytes, win32_strerror(err)); h->read_avail += bytes; free(h->read_pending); h->read_pending = nullptr; } else { if (err == WAIT_IO_COMPLETION) { // Some other async thing completed and our wait was interrupted. // This is similar to EINTR LeaveCriticalSection(&h->mtx); goto again; } stream_debug("pending read failed: %s\n", win32_strerror(err)); if (err != ERROR_IO_INCOMPLETE) { // Failed free(h->read_pending); h->read_pending = nullptr; h->errcode = err; h->error_pending = true; stream_debug("marking read as failed\n"); h->waitable.notify(); } } LeaveCriticalSection(&h->mtx); return h->read_pending != nullptr; } static int win_read_blocking(struct win_handle* h, void* buf, int size) { int total_read = 0; DWORD bytes, err; move_from_read_buffer(h, &total_read, (char**)&buf, &size); if (size == 0) { return total_read; } stream_debug("blocking read of %d bytes\n", (int)size); if (ReadFile(h->handle(), buf, size, &bytes, nullptr)) { total_read += bytes; stream_debug("blocking read provided %d bytes, total=%d\n", (int)bytes, total_read); return total_read; } err = GetLastError(); stream_debug("blocking read failed: %s\n", win32_strerror(err)); if (total_read) { stream_debug("but already got %d bytes from buffer\n", total_read); return total_read; } errno = map_win32_err(err); return -1; } static int win_read_non_blocking(struct win_handle* h, void* buf, int size) { int total_read = 0; char *target; DWORD target_space; DWORD bytes; stream_debug("non_blocking read for %d bytes\n", size); move_from_read_buffer(h, &total_read, (char**)&buf, &size); target = h->read_cursor + h->read_avail; target_space = (DWORD)((h->read_buf + sizeof(h->read_buf)) - target); stream_debug("initiate read for %d\n", target_space); // Create a unique olap for each request h->read_pending = (overlapped_op*)calloc(1, sizeof(*h->read_pending)); if (h->read_avail == 0) { stream_debug("ResetEvent because there is no read_avail right now\n"); h->waitable.reset(); } h->read_pending->olap.hEvent = h->waitable.hEvent; h->read_pending->h = h; if (!ReadFile( h->handle(), target, target_space, nullptr, &h->read_pending->olap)) { DWORD err = GetLastError(); if (err != ERROR_IO_PENDING) { free(h->read_pending); h->read_pending = nullptr; stream_debug("olap read failed immediately: %s\n", win32_strerror(err)); h->waitable.notify(); } else { stream_debug("olap read queued ok\n"); } errno = map_win32_err(err); return total_read == 0 ? -1 : total_read; } // Note: we obtain the bytes via GetOverlappedResult because the docs for // ReadFile warn against passing the pointer to the ReadFile parameter for // asynchronouse reads GetOverlappedResult(h->handle(), &h->read_pending->olap, &bytes, FALSE); stream_debug("olap read succeeded immediately bytes=%d\n", (int)bytes); h->read_avail += bytes; free(h->read_pending); h->read_pending = nullptr; move_from_read_buffer(h, &total_read, (char**)&buf, &size); stream_debug("read returning %d\n", total_read); h->waitable.notify(); return total_read; } int win_handle::read(void* buf, int size) { if (win_read_handle_completion(this)) { errno = EAGAIN; return -1; } // Report a prior failure if (error_pending) { stream_debug( "win_read: reporting prior failure err=%d errno=%d %s\n", errcode, map_win32_err(errcode), win32_strerror(errcode)); errno = map_win32_err(errcode); error_pending = false; return -1; } if (blocking) { return win_read_blocking(this, buf, size); } return win_read_non_blocking(this, buf, size); } static void initiate_write(struct win_handle *h); static void CALLBACK write_completed(DWORD err, DWORD bytes, LPOVERLAPPED olap) { // Reverse engineer our handle from the olap pointer struct overlapped_op *op = (overlapped_op*)olap; struct win_handle *h = op->h; struct write_buf *wbuf = op->wbuf; stream_debug("WriteFileEx: completion callback invoked: bytes=%d %s\n", (int)bytes, win32_strerror(err)); EnterCriticalSection(&h->mtx); if (h->write_pending == op) { h->write_pending = nullptr; } if (err == 0) { wbuf->cursor += bytes; wbuf->len -= bytes; if (wbuf->len == 0) { // Consumed this buffer free(wbuf); } else { stream_debug("WriteFileEx: short write: %d written, %d remain\n", bytes, wbuf->len); // the initiate_write call will send the remainder // but we need to re-insert this wbuf in the write queue wbuf->next = h->write_head; h->write_head = wbuf; if (!h->write_tail) { h->write_tail = wbuf; } } } else { stream_debug("WriteFilex: completion: failed: %s\n", win32_strerror(err)); h->errcode = err; h->error_pending = true; } stream_debug("SetEvent because WriteFileEx completed\n"); h->waitable.notify(); // Send whatever else we have waiting to go initiate_write(h); LeaveCriticalSection(&h->mtx); // Free the prior struct after possibly initiating another write // to minimize the chance of the same address being reused and // confusing the completion status free(op); } // Must be called with the mutex held static void initiate_write(struct win_handle *h) { struct write_buf *wbuf = h->write_head; if (h->write_pending || !wbuf) { return; } h->write_head = wbuf->next; if (!h->write_head) { h->write_tail = nullptr; } h->write_pending = (overlapped_op*)calloc(1, sizeof(*h->write_pending)); h->write_pending->h = h; h->write_pending->wbuf = wbuf; stream_debug( "Calling WriteFileEx with wbuf=%p wbuf->cursor=%p len=%d olap=%p\n", wbuf, wbuf->cursor, wbuf->len, &h->write_pending->olap); if (!WriteFileEx( h->handle(), wbuf->cursor, wbuf->len, &h->write_pending->olap, write_completed)) { stream_debug("WriteFileEx: failed %s\n", win32_strerror(GetLastError())); free(h->write_pending); h->write_pending = nullptr; } else { stream_debug("WriteFileEx: queued %d bytes for later\n", wbuf->len); } } int win_handle::write(const void* buf, int size) { struct write_buf *wbuf; EnterCriticalSection(&mtx); if (file_type != FILE_TYPE_PIPE && blocking && !write_head) { DWORD bytes; stream_debug("blocking write of %d\n", size); if (WriteFile(handle(), buf, size, &bytes, nullptr)) { LeaveCriticalSection(&mtx); stream_debug("blocking write wrote %d bytes of %d\n", bytes, size); return bytes; } errcode = GetLastError(); error_pending = true; errno = map_win32_err(errcode); stream_debug("SetEvent because blocking write completed (failed)\n"); waitable.notify(); stream_debug("write failed: %s\n", win32_strerror(errcode)); LeaveCriticalSection(&mtx); return -1; } wbuf = (write_buf*)malloc(sizeof(*wbuf) + size - 1); if (!wbuf) { return -1; } wbuf->next = nullptr; wbuf->cursor = wbuf->data; wbuf->len = size; memcpy(wbuf->data, buf, size); if (write_tail) { write_tail->next = wbuf; } else { write_head = wbuf; } write_tail = wbuf; stream_debug("queue write of %d bytes to write_tail\n", size); if (!write_pending) { initiate_write(this); } LeaveCriticalSection(&mtx); return size; } w_evt_t win_handle::getEvents() { return &waitable; } void win_handle::setNonBlock(bool nonb) { blocking = !nonb; } bool win_handle::rewind() { bool res; LARGE_INTEGER new_pos; new_pos.QuadPart = 0; res = SetFilePointerEx(handle(), new_pos, &new_pos, FILE_BEGIN); errno = map_win32_err(GetLastError()); return res; } // Ensure that any data buffered for write are sent prior to setting // ourselves up to close bool win_handle::shutdown() { BOOL olap_res; DWORD bytes; blocking = true; while (write_pending) { olap_res = get_overlapped_result_ex( handle(), &write_pending->olap, &bytes, INFINITE, true); } return true; } bool win_handle::peerIsOwner() { // TODO: implement this for Windows return true; } std::unique_ptr w_event_make(void) { return watchman::make_unique(); } win_handle::win_handle(FileDescriptor&& handle) : h(std::move(handle)), // Initially signalled, meaning that they can try reading waitable(true), file_type(GetFileType((HANDLE)h.handle())) { InitializeCriticalSection(&mtx); } std::unique_ptr w_stm_fdopen(FileDescriptor&& handle) { if (!handle) { return nullptr; } return watchman::make_unique(std::move(handle)); } std::unique_ptr w_stm_connect_named_pipe( const char* path, int timeoutms) { DWORD err; DWORD64 deadline = GetTickCount64() + timeoutms; if (strlen(path) > 255) { w_log(W_LOG_ERR, "w_stm_connect_named_pipe(%s) path is too long\n", path); errno = E2BIG; return nullptr; } while (true) { FileDescriptor handle(intptr_t(CreateFile( path, GENERIC_READ | GENERIC_WRITE, 0, nullptr, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, nullptr))); if (handle) { return w_stm_fdopen(std::move(handle)); } err = GetLastError(); if (timeoutms > 0) { timeoutms -= (DWORD)(GetTickCount64() - deadline); } if (timeoutms <= 0 || (err != ERROR_PIPE_BUSY && err != ERROR_FILE_NOT_FOUND)) { // either we're out of time, or retrying won't help with this error errno = map_win32_err(err); return nullptr; } // We can retry if (!WaitNamedPipe(path, timeoutms)) { err = GetLastError(); if (err == ERROR_SEM_TIMEOUT) { errno = map_win32_err(err); return nullptr; } if (err == ERROR_FILE_NOT_FOUND) { // Grace to allow it to be created SleepEx(10, true); } } } } int w_poll_events(struct watchman_event_poll *p, int n, int timeoutms) { HANDLE handles[MAXIMUM_WAIT_OBJECTS]; int i; DWORD res; if (n > MAXIMUM_WAIT_OBJECTS - 1) { // Programmer error :-/ w_log(W_LOG_FATAL, "%d > MAXIMUM_WAIT_OBJECTS-1 (%d)\n", n, MAXIMUM_WAIT_OBJECTS - 1); } for (i = 0; i < n; i++) { auto evt = dynamic_cast(p[i].evt); w_check(evt != nullptr, "!WindowsEvent"); handles[i] = evt->hEvent; p[i].ready = false; } res = WaitForMultipleObjectsEx(n, handles, false, timeoutms == -1 ? INFINITE : timeoutms, true); if (res == WAIT_FAILED) { errno = map_win32_err(GetLastError()); return -1; } if (res == WAIT_IO_COMPLETION) { errno = EINTR; return -1; } // Note: WAIT_OBJECT_0 == 0 if (/* res >= WAIT_OBJECT_0 && */ res < WAIT_OBJECT_0 + n) { p[res - WAIT_OBJECT_0].ready = true; return 1; } if (res >= WAIT_ABANDONED_0 && res < WAIT_ABANDONED_0 + n) { p[res - WAIT_ABANDONED_0].ready = true; return 1; } return 0; } // similar to open(2), but returns a handle FileDescriptor w_handle_open(const char* path, int flags) { DWORD access = 0, share = 0, create = 0, attrs = 0; DWORD err; SECURITY_ATTRIBUTES sec; if (!strcmp(path, "/dev/null")) { path = "NUL:"; } auto wpath = w_string_piece(path).asWideUNC(); if (flags & (O_WRONLY|O_RDWR)) { access |= GENERIC_WRITE; } if ((flags & O_WRONLY) == 0) { access |= GENERIC_READ; } // We want more posix-y behavior by default share = FILE_SHARE_DELETE|FILE_SHARE_READ|FILE_SHARE_WRITE; memset(&sec, 0, sizeof(sec)); sec.nLength = sizeof(sec); sec.bInheritHandle = TRUE; if (flags & O_CLOEXEC) { sec.bInheritHandle = FALSE; } if ((flags & (O_CREAT|O_EXCL)) == (O_CREAT|O_EXCL)) { create = CREATE_NEW; } else if ((flags & (O_CREAT|O_TRUNC)) == (O_CREAT|O_TRUNC)) { create = CREATE_ALWAYS; } else if (flags & O_CREAT) { create = OPEN_ALWAYS; } else if (flags & O_TRUNC) { create = TRUNCATE_EXISTING; } else { create = OPEN_EXISTING; } attrs = FILE_ATTRIBUTE_NORMAL; if (flags & O_DIRECTORY) { attrs |= FILE_FLAG_BACKUP_SEMANTICS; } FileDescriptor h(intptr_t( CreateFileW(wpath.c_str(), access, share, &sec, create, attrs, nullptr))); err = GetLastError(); errno = map_win32_err(err); return h; } std::unique_ptr w_stm_open(const char* path, int flags, ...) { return w_stm_fdopen(w_handle_open(path, flags)); } watchman-4.9.0/string.cpp000066400000000000000000000603561314236077500153620ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #include #include #include // string piece w_string_piece::w_string_piece() : s_(nullptr), e_(nullptr) {} w_string_piece::w_string_piece(std::nullptr_t) : s_(nullptr), e_(nullptr) {} w_string_piece::w_string_piece(w_string_piece&& other) noexcept : s_(other.s_), e_(other.e_) { other.s_ = nullptr; other.e_ = nullptr; } w_string w_string_piece::asWString(w_string_type_t stringType) const { return w_string(data(), size(), stringType); } w_string w_string_piece::asLowerCase(w_string_type_t stringType) const { char* buf; w_string_t* s; /* need to make a lowercase version */ s = (w_string_t*)(new char[sizeof(*s) + size() + 1]); new (s) watchman_string(); s->refcnt = 1; s->len = size(); buf = (char*)(s + 1); s->buf = buf; s->type = stringType; auto cursor = s_; while (cursor < e_) { *buf = (char)tolower((uint8_t)*cursor); ++cursor; ++buf; } *buf = 0; return w_string(s, false); } w_string w_string_piece::asUTF8Clean() const { w_string s(s_, e_ - s_, W_STRING_UNICODE); utf8_fix_string(const_cast(s.data()), s.size()); return s; } bool w_string_piece::pathIsAbsolute() const { return w_is_path_absolute_cstr_len(data(), size()); } /** Compares two path strings. * They are equal if the case of each character matches. * Directory separator slashes are normalized such that * \ and / are considered equal. */ bool w_string_piece::pathIsEqual(w_string_piece other) const { #ifdef _WIN32 if (size() != other.size()) { return false; } auto A = data(); auto B = other.data(); auto end = A + size(); for (; A < end; ++A, ++B) { if (*A == *B) { continue; } if (A == data()) { // This is a bit awful, but msys and other similar software // can set the cwd to a lowercase drive letter. Since we // can't ever watch at a level higher than drive letters, // we really shouldn't care about a case difference there // so we relax the strictness of the check here. // This case only triggers for the first character of the // path. Paths evaluated with this method are always // absolute. In theory, we should also do something // reasonable for UNC paths, but folks shouldn't be // watching those with watchman anyway. if (tolower(*A) == tolower(*B)) { continue; } } if (is_slash(*A) && is_slash(*B)) { continue; } return false; } return true; #else return *this == other; #endif } w_string_piece w_string_piece::dirName() const { if (e_ == s_) { return nullptr; } for (auto end = e_ - 1; end >= s_; --end) { if (is_slash(*end)) { /* found the end of the parent dir */ #ifdef _WIN32 if (end > s_ && end[-1] == ':') { // Special case for "C:\"; we want to keep the // trailing slash for this case so that we continue // to consider it an absolute path return w_string_piece(s_, 1 + end - s_); } #endif return w_string_piece(s_, end - s_); } } return nullptr; } w_string_piece w_string_piece::baseName() const { if (e_ == s_) { return *this; } for (auto end = e_ - 1; end >= s_; --end) { if (is_slash(*end)) { /* found the end of the parent dir */ #ifdef _WIN32 if (end == e_ && end > s_ && end[-1] == ':') { // Special case for "C:\"; we want the baseName to // be this same component so that we continue // to consider it an absolute path return *this; } #endif return w_string_piece(end + 1, e_ - (end + 1)); } } return *this; } bool w_string_piece::operator<(w_string_piece other) const { int res; if (size() < other.size()) { res = memcmp(data(), other.data(), size()); return (res == 0 ? -1 : res) < 0; } else if (size() > other.size()) { res = memcmp(data(), other.data(), other.size()); return (res == 0 ? +1 : res) < 0; } return memcmp(data(), other.data(), size()) < 0; } bool w_string_piece::operator==(w_string_piece other) const { if (s_ == other.s_ && e_ == other.e_) { return true; } if (size() != other.size()) { return false; } return memcmp(data(), other.data(), size()) == 0; } bool w_string_piece::operator!=(w_string_piece other) const { return !operator==(other); } bool w_string_piece::startsWith(w_string_piece prefix) const { if (prefix.size() > size()) { return false; } return memcmp(data(), prefix.data(), prefix.size()) == 0; } bool w_string_piece::startsWithCaseInsensitive(w_string_piece prefix) const{ if (prefix.size() > size()) { return false; } auto me = s_; auto pref = prefix.s_; while (pref < prefix.e_) { if (tolower((uint8_t)*me) != tolower((uint8_t)*pref)) { return false; } ++pref; ++me; } return true; } // string w_string::w_string() {} w_string::w_string(std::nullptr_t) {} w_string::~w_string() { if (str_) { w_string_delref(str_); } } w_string::w_string(w_string_t* str, bool addRef) : str_(str) { if (str_ && addRef) { w_string_addref(str_); } } w_string::w_string(const w_string& other) : str_(other.str_) { if (str_) { w_string_addref(str_); } } w_string& w_string::operator=(const w_string& other) { if (&other == this) { return *this; } reset(); if (str_) { w_string_delref(str_); } str_ = other.str_; if (str_) { w_string_addref(str_); } return *this; } w_string::w_string(w_string&& other) noexcept : str_(other.str_) { other.str_ = nullptr; } w_string& w_string::operator=(w_string&& other) { if (&other == this) { return *this; } reset(); str_ = other.str_; other.str_ = nullptr; return *this; } void w_string::reset() { if (str_) { w_string_delref(str_); str_ = nullptr; } } w_string_t *w_string::release() { auto res = str_; str_ = nullptr; return res; } static inline uint32_t checked_len(size_t len) { if (len > UINT32_MAX) { throw std::range_error("string length exceeds UINT32_MAX"); } return len; } w_string::w_string(const char* buf, size_t len, w_string_type_t stringType) : w_string( w_string_new_len_typed(buf, checked_len(len), stringType), false) {} w_string::w_string(const char* buf, w_string_type_t stringType) : w_string( w_string_new_len_typed(buf, strlen_uint32(buf), stringType), false) {} w_string w_string::dirName() const { return w_string_piece(*this).dirName().asWString(); } w_string w_string::baseName() const { return w_string_piece(*this).baseName().asWString(); } w_string w_string::suffix() const { ensureNotNull(); return w_string(w_string_suffix(str_), false); } w_string w_string::asNullTerminated() const { ensureNotNull(); if (w_string_is_null_terminated(str_)) { return *this; } return w_string(str_->buf, str_->len, str_->type); } w_string w_string::normalizeSeparators(char targetSeparator) const { return w_string(w_string_normalize_separators(str_, targetSeparator), false); } void w_string::makeNullTerminated() { if (w_string_is_null_terminated(str_)) { return; } *this = asNullTerminated(); } const char* w_string::c_str() const { if (!w_string_is_null_terminated(str_)) { throw std::runtime_error( "string is not NULL terminated, use asNullTerminated() or makeNullTerminated()!"); } return str_->buf; } bool w_string::operator<(const w_string& other) const { return w_string_compare(str_, other.str_) < 0; } bool w_string::operator==(const w_string& other) const { return w_string_equal(str_, other.str_); } bool w_string::operator!=(const w_string& other) const { return !(*this == other); } w_string w_string::pathCat(std::initializer_list elems) { uint32_t length = 0; w_string_t *s; char *buf; for (auto &p : elems) { length += p.size() + 1; } s = (w_string_t*)(new char[sizeof(*s) + length]); new (s) watchman_string(); s->refcnt = 1; buf = (char *)(s + 1); s->buf = buf; for (auto &p : elems) { if (p.size() == 0) { // Skip empty strings continue; } if (buf != s->buf) { *buf = '/'; ++buf; } memcpy(buf, p.data(), p.size()); buf += p.size(); } *buf = 0; s->len = buf - s->buf; return w_string(s, false); } uint32_t w_string_compute_hval(w_string_t *str) { str->_hval = w_hash_bytes(str->buf, str->len, 0); str->hval_computed = 1; return str->_hval; } uint32_t w_string_piece::hashValue() const { return w_hash_bytes(data(), size(), 0); } /** An optimization to avoid heap allocations during a lookup, this function * creates a string object on the stack. This object does not own the memory * that it references, so it is the responsibility of the caller * to ensure that that memory is live for the duration of use of this string. * It is therefore invalid to add a reference or take a slice of this stack * string as the lifetime guarantees are not upheld. */ void w_string_new_len_typed_stack(w_string_t *into, const char *str, uint32_t len, w_string_type_t type) { into->refcnt = 1; into->slice = NULL; into->len = len; into->buf = str; into->hval_computed = 0; into->type = type; } w_string_t *w_string_slice(w_string_t *str, uint32_t start, uint32_t len) { if (start == 0 && len == str->len) { w_string_addref(str); return str; } if (start > str->len || start + len > str->len) { errno = EINVAL; throw std::range_error("illegal string slice"); } // Can't just new w_string_t because the delref has to call delete[] // in most cases. auto slice = (w_string_t*)(new char[sizeof(w_string_t)]); new (slice) watchman_string(); slice->refcnt = 1; slice->len = len; slice->buf = str->buf + start; slice->slice = str; slice->type = str->type; w_string_addref(str); return slice; } w_string w_string::slice(uint32_t start, uint32_t len) const { return w_string(w_string_slice(str_, start, len), false); } uint32_t strlen_uint32(const char *str) { size_t slen = strlen(str); if (slen > UINT32_MAX) { throw std::range_error("string length exceeds UINT32_MAX"); } return (uint32_t)slen; } watchman_string::watchman_string() : refcnt(0), len(0), slice(nullptr), buf(nullptr), type(W_STRING_BYTE), hval_computed(0) {} watchman_string::~watchman_string() { if (slice) { w_string_delref(slice); } } w_string_t *w_string_new_len_with_refcnt_typed(const char* str, uint32_t len, long refcnt, w_string_type_t type) { w_string_t *s; char *buf; s = (w_string_t*)(new char[sizeof(*s) + len + 1]); new (s) watchman_string(); s->refcnt = refcnt; s->len = len; buf = (char*)(s + 1); memcpy(buf, str, len); buf[len] = 0; s->buf = buf; s->type = type; return s; } w_string_t *w_string_new_len_typed(const char *str, uint32_t len, w_string_type_t type) { return w_string_new_len_with_refcnt_typed(str, len, 1, type); } w_string_t *w_string_new_len_no_ref_typed(const char *str, uint32_t len, w_string_type_t type) { return w_string_new_len_with_refcnt_typed(str, len, 0, type); } w_string_t *w_string_new_typed(const char *str, w_string_type_t type) { return w_string_new_len_typed(str, strlen_uint32(str), type); } w_string w_string::vprintf(const char* format, va_list args) { w_string_t *s; int len; char *buf; va_list args_copy; va_copy(args_copy, args); // Get the length needed len = vsnprintf(nullptr, 0, format, args_copy); va_end(args_copy); s = (w_string_t*)(new char[sizeof(*s) + len + 1]); if (!s) { perror("no memory available"); abort(); } new (s) watchman_string(); s->refcnt = 1; s->len = len; buf = (char*)(s + 1); vsnprintf(buf, len + 1, format, args); s->buf = buf; return w_string(s, false); } w_string w_string::printf(WATCHMAN_FMT_STRING(const char* format), ...) { va_list args; va_start(args, format); auto res = w_string::vprintf(format, args); va_end(args); return res; } /* return a reference to a lowercased version of a string */ w_string_t *w_string_dup_lower(w_string_t *str) { bool is_lower = true; char *buf; uint32_t i; w_string_t *s; for (i = 0; i < str->len; i++) { if (tolower((uint8_t)str->buf[i]) != str->buf[i]) { is_lower = false; break; } } if (is_lower) { w_string_addref(str); return str; } /* need to make a lowercase version */ s = (w_string_t*)(new char[sizeof(*s) + str->len + 1]); new (s) watchman_string(); s->refcnt = 1; s->len = str->len; buf = (char*)(s + 1); for (i = 0; i < str->len; i++) { buf[i] = (char)tolower((uint8_t)str->buf[i]); } buf[str->len] = 0; s->buf = buf; return s; } /* make a lowercased copy of string */ w_string_t *w_string_new_lower_typed(const char *str, w_string_type_t type) { w_string_t *s; uint32_t len = strlen_uint32(str); char *buf; uint32_t i; s = (w_string_t*)(new char[sizeof(*s) + len + 1]); new (s) watchman_string(); s->refcnt = 1; s->len = len; buf = (char*)(s + 1); // TODO: optionally use ICU for (i = 0; i < len; i++) { buf[i] = (char)tolower((uint8_t)str[i]); } buf[len] = 0; s->buf = buf; s->type = type; return s; } void w_string_addref(w_string_t *str) { ++str->refcnt; } void w_string_delref(w_string_t *str) { if (--str->refcnt != 0) { return; } // Call the destructor. We can't use regular delete because // we allocated using operator new[], and we can't use delete[] // directly either because the type doesn't match what we allocated. str->~w_string_t(); // Release the raw memory. delete[](char*) str; } int w_string_compare(const w_string_t *a, const w_string_t *b) { int res; if (a == b) return 0; if (a->len < b->len) { res = memcmp(a->buf, b->buf, a->len); return res == 0 ? -1 : res; } else if (a->len > b->len) { res = memcmp(a->buf, b->buf, b->len); return res == 0 ? +1 : res; } return memcmp(a->buf, b->buf, a->len); } bool w_string_equal_cstring(const w_string_t *a, const char *b) { uint32_t blen = strlen_uint32(b); if (a->len != blen) return false; return memcmp(a->buf, b, a->len) == 0 ? true : false; } bool w_string_equal(const w_string_t *a, const w_string_t *b) { if (a == b) return true; if (a == nullptr || b == nullptr) return false; if (a->len != b->len) return false; if (a->hval_computed && b->hval_computed && a->_hval != b->_hval) { return false; } return memcmp(a->buf, b->buf, a->len) == 0 ? true : false; } bool w_string_equal_caseless(w_string_piece a, w_string_piece b) { uint32_t i; if (a.size() != b.size()) { return false; } for (i = 0; i < a.size(); i++) { if (tolower((uint8_t)a[i]) != tolower((uint8_t)b[i])) { return false; } } return true; } w_string_t *w_string_dirname(w_string_t *str) { int end; /* can't use libc strXXX functions because we may be operating * on a slice */ for (end = str->len - 1; end >= 0; end--) { if (is_slash(str->buf[end])) { /* found the end of the parent dir */ return w_string_slice(str, 0, end); } } return NULL; } bool w_string_piece::hasSuffix(w_string_piece suffix) const { unsigned int base, i; if (size() < suffix.size() + 1) { return false; } base = size() - suffix.size(); if (s_[base - 1] != '.') { return false; } for (i = 0; i < suffix.size(); i++) { if (tolower((uint8_t)s_[base + i]) != suffix[i]) { return false; } } return true; } // Return the normalized (lowercase) filename suffix w_string_t *w_string_suffix(w_string_t *str) { int end; char name_buf[128]; char *buf; /* can't use libc strXXX functions because we may be operating * on a slice */ for (end = str->len - 1; end >= 0; end--) { if (str->buf[end] == '.') { if (str->len - end > sizeof(name_buf)) { // Too long return NULL; } buf = name_buf; end++; while ((unsigned)end < str->len) { *buf = (char)tolower((uint8_t)str->buf[end]); end++; buf++; } *buf = '\0'; return w_string_new_typed(name_buf, str->type); } else if (str->len - end >= sizeof(name_buf)) { // We haven't found the '.' yet but the suffix will never fit in our local // buffer return nullptr; } if (is_slash(str->buf[end])) { // No suffix return NULL; } } // Has no suffix return NULL; } bool w_string_startswith(w_string_t *str, w_string_t *prefix) { if (prefix->len > str->len) { return false; } return memcmp(str->buf, prefix->buf, prefix->len) == 0; } bool w_string_startswith_caseless(w_string_t *str, w_string_t *prefix) { size_t i; if (prefix->len > str->len) { return false; } for (i = 0; i < prefix->len; i++) { if (tolower((uint8_t)str->buf[i]) != tolower((uint8_t)prefix->buf[i])) { return false; } } return true; } bool w_string_contains_cstr_len( const w_string_t* str, const char* needle, uint32_t nlen) { #if HAVE_MEMMEM return memmem(str->buf, str->len, needle, nlen) != NULL; #else // Most likely only for Windows. // Inspired by http://stackoverflow.com/a/24000056/149111 const char *haystack = str->buf; uint32_t hlen = str->len; const char *limit; if (nlen == 0 || hlen < nlen) { return false; } limit = haystack + hlen - nlen + 1; while ((haystack = (const char*)memchr( haystack, needle[0], limit - haystack)) != NULL) { if (memcmp(haystack, needle, nlen) == 0) { return true; } haystack++; } return false; #endif } w_string_t *w_string_canon_path(w_string_t *str) { int end; int trim = 0; for (end = str->len - 1; end >= 0 && is_slash(str->buf[end]); end--) { trim++; } if (trim) { return w_string_slice(str, 0, str->len - trim); } w_string_addref(str); return str; } // Normalize directory separators to match the platform. // Also trims any trailing directory separators w_string_t *w_string_normalize_separators(w_string_t *str, char target_sep) { w_string_t *s; char *buf; uint32_t i, len; len = str->len; if (len == 0) { w_string_addref(str); return str; } // This doesn't do any special UNC or path len escape prefix handling // on windows. We don't currently use it in a way that would require it. // Trim any trailing dir seps while (len > 0) { if (str->buf[len-1] == '/' || str->buf[len-1] == '\\') { --len; } else { break; } } s = (w_string_t*)(new char[sizeof(*s) + len + 1]); new (s) watchman_string(); s->refcnt = 1; s->len = len; buf = (char*)(s + 1); for (i = 0; i < len; i++) { if (str->buf[i] == '/' || str->buf[i] == '\\') { buf[i] = target_sep; } else { buf[i] = str->buf[i]; } } buf[len] = 0; s->buf = buf; return s; } void w_string_in_place_normalize_separators(w_string_t **str, char target_sep) { w_string_t *norm = w_string_normalize_separators(*str, target_sep); w_string_delref(*str); *str = norm; } // Compute the basename of path, return that as a string w_string_t *w_string_new_basename_typed(const char *path, w_string_type_t type) { const char *base; base = path + strlen(path); while (base > path && !is_slash(base[-1])) { base--; } return w_string_new_typed(base, type); } w_string_t *w_string_basename(w_string_t *str) { int end; /* can't use libc strXXX functions because we may be operating * on a slice */ for (end = str->len - 1; end >= 0; end--) { if (is_slash(str->buf[end])) { /* found the end of the parent dir */ return w_string_slice(str, end + 1, str->len - (end + 1)); } } w_string_addref(str); return str; } w_string_t *w_string_path_cat(w_string_t *parent, w_string_t *rhs) { w_string_t *s; int len; char *buf; if (rhs->len == 0) { w_string_addref(parent); return parent; } len = parent->len + rhs->len + 1; s = (w_string_t*)(new char[sizeof(*s) + len + 1]); new (s) watchman_string(); s->refcnt = 1; s->len = len; buf = (char*)(s + 1); memcpy(buf, parent->buf, parent->len); buf[parent->len] = '/'; memcpy(buf + parent->len + 1, rhs->buf, rhs->len); buf[parent->len + 1 + rhs->len] = '\0'; s->buf = buf; s->type = parent->type; return s; } w_string_t *w_string_path_cat_cstr(w_string_t *parent, const char *rhs) { return w_string_path_cat_cstr_len(parent, rhs, strlen_uint32(rhs)); } w_string_t *w_string_path_cat_cstr_len(w_string_t *parent, const char *rhs, uint32_t rhs_len) { w_string_t *s; int len; char *buf; if (rhs_len == 0) { w_string_addref(parent); return parent; } len = parent->len + rhs_len + 1; s = (w_string_t*)(new char[sizeof(*s) + len + 1]); new (s) watchman_string(); s->refcnt = 1; s->len = len; buf = (char*)(s + 1); memcpy(buf, parent->buf, parent->len); buf[parent->len] = '/'; memcpy(buf + parent->len + 1, rhs, rhs_len); buf[parent->len + 1 + rhs_len] = '\0'; s->buf = buf; s->type = parent->type; return s; } w_string w_dir_path_cat_str( const struct watchman_dir* dir, w_string_piece extra) { uint32_t length = 0; const struct watchman_dir* d; w_string_t *s; char *buf, *end; if (extra.size()) { length = extra.size() + 1 /* separator */; } for (d = dir; d; d = d->parent) { length += d->name.size() + 1 /* separator OR final NUL terminator */; } s = (w_string_t*)(new char[sizeof(*s) + length]); new (s) watchman_string(); s->refcnt = 1; s->len = length - 1; buf = (char *)(s + 1); end = buf + s->len; *end = 0; if (extra.size()) { end -= extra.size(); memcpy(end, extra.data(), extra.size()); } for (d = dir; d; d = d->parent) { if (d != dir || (extra.size())) { --end; *end = '/'; } end -= d->name.size(); memcpy(end, d->name.data(), d->name.size()); } s->buf = buf; return w_string(s, false); } char *w_string_dup_buf(const w_string_t *str) { char *buf; buf = (char*)malloc(str->len + 1); if (!buf) { return NULL; } memcpy(buf, str->buf, str->len); buf[str->len] = 0; return buf; } // Given a string, return a shell-escaped copy w_string_t *w_string_shell_escape(const w_string_t *str) { // Worst case expansion for a char is 4x, plus quoting either end uint32_t len = 2 + (str->len * 4); w_string_t *s; char *buf; const char *src, *end; s = (w_string_t*)(new char[sizeof(*s) + len + 1]); new (s) watchman_string(); s->refcnt = 1; buf = (char*)(s + 1); s->buf = buf; src = str->buf; end = src + str->len; *buf = '\''; buf++; while (src < end) { if (*src == '\'') { memcpy(buf, "'\\''", 4); buf += 4; } else { *buf = *src; buf++; } src++; } *buf = '\''; buf++; *buf = 0; s->len = (uint32_t)(buf - s->buf); s->type = str->type; return s; } bool w_string_is_known_unicode(w_string_t *str) { return str->type == W_STRING_UNICODE; } bool w_string_is_null_terminated(w_string_t *str) { return !str->slice || (str->buf + str->len == str->slice->buf + str->slice->len && w_string_is_null_terminated(str->slice)); } size_t w_string_strlen(w_string_t *str) { return str->len; } bool w_string_path_is_absolute(const w_string_t *str) { return w_is_path_absolute_cstr_len(str->buf, str->len); } bool w_is_path_absolute_cstr(const char *path) { return w_is_path_absolute_cstr_len(path, strlen_uint32(path)); } bool w_is_path_absolute_cstr_len(const char *path, uint32_t len) { #ifdef _WIN32 char drive_letter; if (len <= 2) { return false; } // "\something" if (is_slash(path[0])) { // "\\something" is absolute, "\something" is relative to the current // dir of the current drive, whatever that may be, for a given process return is_slash(path[1]); } drive_letter = (char)tolower(path[0]); // "C:something" if (drive_letter >= 'a' && drive_letter <= 'z' && path[1] == ':') { // "C:\something" is absolute, but "C:something" is relative to // the current dir on the C drive(!) return is_slash(path[2]); } // we could check for things like NUL:, COM: and so on here. // While those are technically absolute names, we can't watch them, so // we don't consider them absolute for the purposes of checking whether // the path is a valid watchable root return false; #else return len > 0 && path[0] == '/'; #endif } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/tests/000077500000000000000000000000001314236077500145005ustar00rootroot00000000000000watchman-4.9.0/tests/CacheTest.cpp000066400000000000000000000124011314236077500170450ustar00rootroot00000000000000/* Copyright 2017-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman_system.h" #include #include #include "Future.h" #include "LRUCache.h" #include "thirdparty/tap.h" using namespace watchman; static constexpr const std::chrono::milliseconds kErrorTTL(1000); void test_basics() { LRUCache cache(5, kErrorTTL); ok(cache.size() == 0, "initially empty"); ok(cache.get("foo") == nullptr, "nullptr for non-existent item"); ok(cache.set("foo", true)->value(), "inserted true"); ok(cache.size() == 1, "size is now one"); ok(cache.get("foo")->value(), "looked up item"); ok(cache.set("foo", false)->value() == false, "replaced true with false"); ok(cache.get("foo")->value() == false, "looked up new false item"); ok(cache.size() == 1, "replacement didn't change size"); ok(cache.erase("foo")->value() == false, "erased and returned false foo"); ok(cache.erase("foo") == nullptr, "double erase doesn't return anything"); ok(cache.get("foo") == nullptr, "nullptr for non-existent item"); for (size_t i = 0; i < 6; ++i) { ok(cache.set(std::to_string(i), true) != nullptr, "inserted"); } ok(cache.size() == 5, "limited to 5 items, despite inserting 6 total. size=%" PRIsize_t, cache.size()); ok(cache.get("0") == nullptr, "we expect 0 to have been evicted"); for (size_t i = 1; i < 6; ++i) { ok(cache.get(std::to_string(i)), "found later node %" PRIsize_t, i); } ok(cache.set("bar", true), "added new item"); ok(cache.get("1") == nullptr, "we expect 1 to be evicted"); ok(cache.get("2"), "2 should be there, and we just touched it"); ok(cache.set("baz", true), "added new item"); ok(cache.size() == 5, "max size still respected"); ok(cache.get("2"), "2 should still be there; not evicted"); ok(cache.get("3") == nullptr, "we expect 3 to be evicted"); cache.clear(); ok(cache.size() == 0, "cleared out and have zero items"); } // Helper for deferring execution of a future during tests class ManualExecutor : public Executor { public: void run(std::function&& func) override { funcs_.emplace_back(std::move(func)); } void runNext() { auto& f = funcs_.front(); f(); funcs_.pop_front(); } size_t size() const { return funcs_.size(); } void runAll() { while (!funcs_.empty()) { runNext(); } } private: std::deque> funcs_; }; void test_future() { using Cache = LRUCache; using Node = typename Cache::NodeType; Cache cache(5, kErrorTTL); ManualExecutor exec; auto now = std::chrono::steady_clock::now(); auto okGetter = [&exec](int k) { return makeFuture(k).via(&exec).then( [](Result&& key) { return (1 + key.value()) * 2; }); }; auto failGetter = [&exec](int k) { return makeFuture(k).via(&exec).then( [](Result &&) -> int { throw std::runtime_error("bleet"); }); }; // Queue up a get via a getter that will succeed auto f = cache.get(0, okGetter, now); ok(!f.isReady(), "future didn't finish yet"); try { cache.get(0); ok(false, "should throw"); } catch (const std::runtime_error&) { ok(true, "should throw runtime_error for mixing getters"); } // Queue up a second get using the same getter auto f2 = cache.get(0, okGetter, now); ok(!f2.isReady(), "also not ready"); ok(exec.size() == 1, "only scheduled a single call to getter"); exec.runNext(); ok(f.isReady(), "first is ready"); ok(f2.isReady(), "second is ready"); ok(f.get()->value() == 2, "got correct value for first"); ok(f2.get() == f.get(), "got same value for second"); // Now to saturate the cache with failed lookups cache.clear(); std::vector>> futures; for (size_t i = 1; i < 6; ++i) { futures.emplace_back( cache.get(i, failGetter, now + std::chrono::milliseconds(i))); } // And one more to check that we'll throw for exceeding capacity try { cache.get(7, failGetter, now); ok(false, "should throw"); } catch (const std::runtime_error&) { ok(true, "threw error for exceeding pending capacity"); } ok(exec.size() == 5, "should be 5 things pending"); // Let them make progress exec.runAll(); ok(cache.size() == 5, "cache should be full"); collectAll(futures.begin(), futures.end()) .then([]( Result>>>&& result) { for (auto& r : result.value()) { ok(r.value()->result().hasError(), "should be an error node"); } }) .wait(); ok(cache.size() == 5, "cache should still be full"); ok(cache.get(42, now) == nullptr, "we don't have 42 yet"); // Because we are saturated with error results, an explicit set // should fail try { cache.set(42, 42, now); ok(false, "should throw"); } catch (const std::runtime_error&) { ok(true, "threw error for exceeding pending capacity"); } // Now if we "sleep" for long enough, we should be able to evict // the error nodes and allow the insert to happen. ok(cache.get(42, now) == nullptr, "we don't have 42 yet"); ok(cache.set(42, 42, now + kErrorTTL + std::chrono::milliseconds(1)), "inserted"); } int main() { plan_tests(53); test_basics(); test_future(); return exit_status(); } watchman-4.9.0/tests/FutureTest.cpp000066400000000000000000000072451314236077500173260ustar00rootroot00000000000000/* Copyright 2017-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman_system.h" #include #include #include #include #include "Future.h" #include "ThreadPool.h" #include "thirdparty/tap.h" using namespace watchman; void test_promise() { Promise p; auto f = p.getFuture(); try { p.getFuture(); ok(false, "should throw"); } catch (const std::logic_error& exc) { ok(!strcmp(exc.what(), "Future already obtained"), "can't getFuture twice"); } ok(!f.isReady(), "not yet ready"); p.setValue(true); try { p.setValue(false); ok(false, "should throw"); } catch (const std::logic_error& exc) { ok(!strcmp(exc.what(), "Promise already fulfilled"), "can't setValue twice"); } ok(f.isReady(), "now ready"); ok(f.get() == true, "got our true value"); Promise s; s.setException(std::make_exception_ptr(std::runtime_error("boo"))); auto f2 = s.getFuture(); ok(f2.result().hasError(), "holds an error"); try { f2.get(); } catch (const std::runtime_error& exc) { ok(!strcmp(exc.what(), "boo"), "has boo string"); } } void test_thread() { Promise p; std::thread thr([&p] { std::this_thread::sleep_for(std::chrono::milliseconds(10)); p.setValue("done"); }); auto f = p.getFuture(); ok(f.get() == "done", "done in thread"); thr.join(); } void test_then() { Promise p; auto f = p.getFuture().then([](Result&& result) { ok(result.value() == "noice", "got the value we wanted"); return true; }); p.setValue("noice"); ok(f.get() == true, "resolved to a boolean future result"); Promise p2; auto f1 = p2.getFuture(); p2.setValue("woot"); auto f2 = f1.then([](Result&& result) { auto& str = result.value(); std::transform( str.begin(), str.end(), str.begin(), [](std::string::value_type c) { return std::toupper(c); }); return str; }); ok(f2.get() == "WOOT", "callback applied after initial promise was fulfilled"); Promise p3; std::thread thr([&p3] { std::this_thread::sleep_for(std::chrono::milliseconds(10)); p3.setValue("done"); }); auto f3 = p3.getFuture().then( [](Result&& result) { return result.value().append("!"); }); ok(f3.get() == "done!", ".then worked across threads"); thr.join(); auto f4 = makeFuture("foo").then([]( Result&& result) { return makeFuture(std::move(result)); }); ok(f4.get() == "foo", "unwrapped future in .then chain"); } void test_collect() { std::vector> futures; Promise p1, p2; futures.emplace_back(p1.getFuture()); futures.emplace_back(p2.getFuture()); auto f = collectAll(futures.begin(), futures.end()); ok(!f.isReady(), "none ready yet"); p1.setValue(true); ok(!f.isReady(), "none ready yet"); p2.setValue(false); ok(f.isReady(), "now ready"); f.then([](Result>>&& result) { auto& vec = result.value(); ok(vec[0].value(), "p1 result was true"); ok(!vec[1].value(), "p2 result was false"); }); } void test_via() { ThreadPool pool; pool.start(1, 1024); Promise barrier; auto f = makeFuture().via(&pool).then([&barrier](Result&&) { diag("waiting for barrier"); barrier.getFuture().wait(); return 42; }); ok(!f.isReady(), "hasn't run in the thread yet"); barrier.setValue(true); ok(f.get() == 42, "came back on the other side"); } int main() { plan_tests(20); test_promise(); test_thread(); test_then(); test_collect(); test_via(); return exit_status(); } watchman-4.9.0/tests/ResultTest.cpp000066400000000000000000000067511314236077500173330ustar00rootroot00000000000000/* Copyright 2017-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman_system.h" #include #include "Result.h" #include "thirdparty/tap.h" using namespace watchman; void test_empty() { Result b; ok(b.empty(), "default constructed and empty"); try { b.throwIfError(); ok(false, "expected to throw"); } catch (const std::logic_error&) { ok(true, "throwIfError throws logic error for empty result"); } try { b.value(); ok(false, "expected to throw"); } catch (const std::logic_error&) { ok(true, "throwIfError throws logic error for empty result"); } try { b.error(); ok(false, "expected to throw"); } catch (const std::logic_error&) { ok(true, "throwIfError throws logic error for empty result"); } } void test_simple_value() { auto b = makeResult(true); ok(!b.empty(), "b is not empty"); ok(b.hasValue(), "b has a value"); ok(b.value(), "b holds true"); Result copyOfB(b); ok(!b.empty(), "b is not empty after being copied"); ok(!copyOfB.empty(), "copyOfB is not empty"); ok(copyOfB.hasValue(), "copyOfB has a value"); ok(copyOfB.value(), "copyOfB holds true"); Result movedB(std::move(b)); ok(b.empty(), "b empty after move"); ok(!movedB.empty(), "movedB is not empty"); ok(movedB.hasValue(), "movedB has a value"); ok(movedB.value(), "movedB holds true"); b = movedB; ok(!b.empty(), "b is not empty after copying"); ok(b.hasValue(), "b has a value"); ok(b.value(), "b holds true"); b = std::move(copyOfB); ok(!b.empty(), "b is not empty after copying"); ok(b.hasValue(), "b has a value"); ok(b.value(), "b holds true"); ok(copyOfB.empty(), "copyOfB is empty after being moved"); } void test_error() { auto a = makeResultWith([] { return std::string("noice"); }); ok(a.hasValue(), "got a value"); ok(a.value() == "noice", "got our string out"); using atype = decltype(a); auto is_string = std::is_same::value; ok(is_string, "a has std::string as a value type"); auto b = makeResultWith([] { throw std::runtime_error("w00t"); }); ok(b.hasError(), "we got an exception contained"); try { b.throwIfError(); ok(false, "should not get here"); } catch (const std::logic_error&) { ok(false, "should not have caught logic_error"); } catch (const std::runtime_error& exc) { ok(!strcmp(exc.what(), "w00t"), "have our exception message in the error"); } using btype = decltype(b); auto is_unit = std::is_same::value; ok(is_unit, "b has Unit as a value type"); auto c = makeResultWith([] { if (false) { return 42; } throw std::runtime_error("gah"); }); using ctype = decltype(c); auto is_int = std::is_same::value; ok(is_int, "c has int as a value type"); ok(c.hasError(), "c has an error"); } void test_non_exception_error_type() { Result result("hello"); ok(result.hasValue(), "has value"); ok(result.value() == "hello", "has hello string"); result = Result(42); ok(result.hasError(), "holding error"); ok(result.error() == 42, "holding 42"); try { result.throwIfError(); ok(false, "should not get here"); } catch (const std::logic_error&) { ok(true, "got logic error"); } } int main() { plan_tests(35); test_empty(); test_simple_value(); test_error(); test_non_exception_error_type(); return exit_status(); } watchman-4.9.0/tests/TARGETS000066400000000000000000000060021314236077500155320ustar00rootroot00000000000000include_defs("//common/defs/environment") if os_getenv('SANDCASTLE') is not None: # We don't run this by default on devservers, because python 2.x has a bug # that breaks subprocess when threading is used, so we have to run the # tests with concurrency=1 and it takes a bit longer. custom_unittest( name = "runtests-py2", command = [ "$(location @/watchman/facebook:runtests)", "--testpilot-json", ], tags = ["run_as_bundle"], type = "json", deps = [ "@/watchman/facebook:runtests", ], ) custom_unittest( name = "runtests-py3", command = [ "$(location @/watchman/facebook:runtests-py3)", "--testpilot-json", ], tags = ["run_as_bundle"], type = "json", deps = [ "@/watchman/facebook:runtests-py3", ], ) def t_test(name, srcs=None, deps=None, extra_args=None): tname = '{}.t'.format(name) actual_deps=['@/watchman/thirdparty:tap'] if deps: actual_deps.extend(deps) args=['$(location :{})'.format(tname),] if extra_args: args.extend(extra_args) cpp_binary( name=tname, srcs=srcs, deps=actual_deps, ) buck_sh_test( name=name, deps=[':{}'.format(tname)], test='run.sh', args=args ) t_test( name = "art", srcs = [ "art_test.cpp", "log_stub.cpp", ], deps = [ "@/watchman:testsupport", ], ) t_test( name = "ignore", srcs = [ "ignore_test.cpp", "log_stub.cpp", ], deps = [ "@/watchman:testsupport", ], ) t_test( name = "pending", srcs = [ "log_stub.cpp", "pending_test.cpp", ], deps = [ "@/watchman:testsupport", ], ) t_test( name = "string", srcs = [ "log_stub.cpp", "string_test.cpp", ], deps = [ "@/watchman:testsupport", ], ) t_test( name = "log", srcs = ["log.cpp"], deps = [ "@/watchman:testsupport", ], ) t_test( name = "bser", srcs = [ "bser.cpp", "log_stub.cpp", ], deps = [ "@/watchman:testsupport", ], ) t_test( name = "wildmatch", srcs = [ "log_stub.cpp", "wildmatch_test.cpp", ], deps = [ "@/watchman:testsupport", "@/watchman/thirdparty/wildmatch:wildmatch", ], ) t_test( name = "childproc", srcs = [ "childproc.cpp", "log_stub.cpp", ], deps = [ "@/watchman:testsupport", ], ) t_test( name = "result", srcs = [ "ResultTest.cpp", "log_stub.cpp", ], deps = [ "@/watchman:testsupport", ], ) t_test( name = "future", srcs = [ "FutureTest.cpp", "log_stub.cpp", ], deps = [ "@/watchman:testsupport", ], ) t_test( name = "cache", srcs = [ "CacheTest.cpp", "log_stub.cpp", ], deps = [ "@/watchman:testsupport", ], ) watchman-4.9.0/tests/art_test.cpp000066400000000000000000000313111314236077500170300ustar00rootroot00000000000000/* Copyright 2016-present Facebook, Inc. * Licensed under the Apache License, Version 2.0. * Derived from thirdparty/libart/tests/test_art.c which is * Copyright 2012 Armon Dadgar. See thirdparty/libart/LICENSE. */ #include "watchman_system.h" #include #include #include #include #include #include "thirdparty/libart/src/art.h" // This has to come after the art.h include because the MSVC // runtime gets confused by the #define fail in tap.h #include "thirdparty/tap.h" #define stringy2(line) #line #define stringy(line) stringy2(line) #define fail_unless(__x) ok(__x, __FILE__ ":" stringy(__LINE__) " " # __x) static FILE *open_test_file(const char *name) { FILE *f = fopen(name, "r"); char altname[1024]; if (f) { return f; } snprintf(altname, sizeof(altname), "watchman/%s", name); f = fopen(altname, "r"); if (f) { return f; } fail("can't find test data file %s", name); return NULL; } void test_art_insert(void) { art_tree t; int len; char buf[512]; FILE *f = open_test_file("thirdparty/libart/tests/words.txt"); uintptr_t line = 1; while (fgets(buf, sizeof buf, f)) { len = (int)strlen(buf); buf[len - 1] = '\0'; t.insert(buf, line); if (t.size() != line) { fail("art_size didn't match current line no"); } line++; } } void test_art_insert_verylong(void) { art_tree t; unsigned char key1[300] = { 16, 0, 0, 0, 7, 10, 0, 0, 0, 2, 17, 10, 0, 0, 0, 120, 10, 0, 0, 0, 120, 10, 0, 0, 0, 216, 10, 0, 0, 0, 202, 10, 0, 0, 0, 194, 10, 0, 0, 0, 224, 10, 0, 0, 0, 230, 10, 0, 0, 0, 210, 10, 0, 0, 0, 206, 10, 0, 0, 0, 208, 10, 0, 0, 0, 232, 10, 0, 0, 0, 124, 10, 0, 0, 0, 124, 2, 16, 0, 0, 0, 2, 12, 185, 89, 44, 213, 251, 173, 202, 211, 95, 185, 89, 110, 118, 251, 173, 202, 199, 101, 0, 8, 18, 182, 92, 236, 147, 171, 101, 150, 195, 112, 185, 218, 108, 246, 139, 164, 234, 195, 58, 177, 0, 8, 16, 0, 0, 0, 2, 12, 185, 89, 44, 213, 251, 173, 202, 211, 95, 185, 89, 110, 118, 251, 173, 202, 199, 101, 0, 8, 18, 180, 93, 46, 151, 9, 212, 190, 95, 102, 178, 217, 44, 178, 235, 29, 190, 218, 8, 16, 0, 0, 0, 2, 12, 185, 89, 44, 213, 251, 173, 202, 211, 95, 185, 89, 110, 118, 251, 173, 202, 199, 101, 0, 8, 18, 180, 93, 46, 151, 9, 212, 190, 95, 102, 183, 219, 229, 214, 59, 125, 182, 71, 108, 180, 220, 238, 150, 91, 117, 150, 201, 84, 183, 128, 8, 16, 0, 0, 0, 2, 12, 185, 89, 44, 213, 251, 173, 202, 211, 95, 185, 89, 110, 118, 251, 173, 202, 199, 101, 0, 8, 18, 180, 93, 46, 151, 9, 212, 190, 95, 108, 176, 217, 47, 50, 219, 61, 134, 207, 97, 151, 88, 237, 246, 208, 8, 18, 255, 255, 255, 219, 191, 198, 134, 5, 223, 212, 72, 44, 208, 250, 180, 14, 1, 0, 0, 8, '\0'}; unsigned char key2[303] = { 16, 0, 0, 0, 7, 10, 0, 0, 0, 2, 17, 10, 0, 0, 0, 120, 10, 0, 0, 0, 120, 10, 0, 0, 0, 216, 10, 0, 0, 0, 202, 10, 0, 0, 0, 194, 10, 0, 0, 0, 224, 10, 0, 0, 0, 230, 10, 0, 0, 0, 210, 10, 0, 0, 0, 206, 10, 0, 0, 0, 208, 10, 0, 0, 0, 232, 10, 0, 0, 0, 124, 10, 0, 0, 0, 124, 2, 16, 0, 0, 0, 2, 12, 185, 89, 44, 213, 251, 173, 202, 211, 95, 185, 89, 110, 118, 251, 173, 202, 199, 101, 0, 8, 18, 182, 92, 236, 147, 171, 101, 150, 195, 112, 185, 218, 108, 246, 139, 164, 234, 195, 58, 177, 0, 8, 16, 0, 0, 0, 2, 12, 185, 89, 44, 213, 251, 173, 202, 211, 95, 185, 89, 110, 118, 251, 173, 202, 199, 101, 0, 8, 18, 180, 93, 46, 151, 9, 212, 190, 95, 102, 178, 217, 44, 178, 235, 29, 190, 218, 8, 16, 0, 0, 0, 2, 12, 185, 89, 44, 213, 251, 173, 202, 211, 95, 185, 89, 110, 118, 251, 173, 202, 199, 101, 0, 8, 18, 180, 93, 46, 151, 9, 212, 190, 95, 102, 183, 219, 229, 214, 59, 125, 182, 71, 108, 180, 220, 238, 150, 91, 117, 150, 201, 84, 183, 128, 8, 16, 0, 0, 0, 3, 12, 185, 89, 44, 213, 251, 133, 178, 195, 105, 183, 87, 237, 150, 155, 165, 150, 229, 97, 182, 0, 8, 18, 161, 91, 239, 50, 10, 61, 150, 223, 114, 179, 217, 64, 8, 12, 186, 219, 172, 150, 91, 53, 166, 221, 101, 178, 0, 8, 18, 255, 255, 255, 219, 191, 198, 134, 5, 208, 212, 72, 44, 208, 250, 180, 14, 1, 0, 0, 8, '\0'}; t.insert(std::string(reinterpret_cast(key1), 299), (void*)key1); t.insert(std::string(reinterpret_cast(key2), 302), (void*)key2); t.insert(std::string(reinterpret_cast(key2), 302), (void*)key2); fail_unless(t.size() == 2); } void test_art_insert_search(void) { art_tree t; int len; char buf[512]; FILE *f = open_test_file("thirdparty/libart/tests/words.txt"); uintptr_t line = 1; while (fgets(buf, sizeof buf, f)) { len = (int)strlen(buf); buf[len - 1] = '\0'; t.insert(std::string(buf), line); line++; } // Seek back to the start fseek(f, 0, SEEK_SET); // Search for each line line = 1; while (fgets(buf, sizeof buf, f)) { len = (int)strlen(buf); buf[len - 1] = '\0'; { uintptr_t val = *t.search(buf); if (line != val) { fail("Line: %d Val: %" PRIuPTR " Str: %s", line, val, buf); } } line++; } // Check the minimum auto l = t.minimum(); fail_unless(l && l->key == "A"); // Check the maximum l = t.maximum(); fail_unless(l && l->key == "zythum"); } void test_art_insert_delete(void) { art_tree t; int len; char buf[512]; FILE *f = open_test_file("thirdparty/libart/tests/words.txt"); uintptr_t line = 1, nlines; while (fgets(buf, sizeof buf, f)) { len = (int)strlen(buf); buf[len - 1] = '\0'; t.insert(buf, line); line++; } nlines = line - 1; // Seek back to the start fseek(f, 0, SEEK_SET); // Search for each line line = 1; while (fgets(buf, sizeof buf, f)) { uintptr_t val; len = (int)strlen(buf); buf[len - 1] = '\0'; // Search first, ensure all entries still // visible val = *t.search(buf); if (line != val) { fail("Line: %d Val: %" PRIuPTR " Str: %s", line, val, buf); } // Delete, should get lineno back if (!t.erase(buf)) { fail("failed to erase line %d, str: %s", line, buf); } // Check the size if (t.size() != nlines - line) { fail("bad size after delete"); } line++; } // Check the minimum and maximum fail_unless(!t.minimum()); fail_unless(!t.maximum()); } void test_art_insert_iter(void) { art_tree t; int len; char buf[512]; FILE *f = open_test_file("thirdparty/libart/tests/words.txt"); uint64_t xor_mask = 0; uintptr_t lineno = 1, nlines; while (fgets(buf, sizeof buf, f)) { len = (int)strlen(buf); buf[len - 1] = '\0'; t.insert(buf, lineno); xor_mask ^= (lineno * (buf[0] + len - 1)); lineno++; } nlines = lineno - 1; { uint64_t out[] = {0, 0}; fail_unless(t.iter([&out](const std::string& key, uintptr_t& line) { uint64_t mask = (line * (key[0] + key.size())); out[0]++; out[1] ^= mask; return 0; }) == 0); fail_unless(out[0] == nlines); fail_unless(out[1] == xor_mask); } } template struct prefix_data { int count; int max_count; const char **expected; int operator()(const std::string& k, T&) { fail_unless(count < max_count); diag("Key: %s Expect: %s", k.c_str(), expected[count]); fail_unless(memcmp(k.data(), expected[count], k.size()) == 0); count++; return 0; } }; void test_art_iter_prefix(void) { art_tree t; const char *expected2[] = {"abc.123.456", "api", "api.foe.fum", "api.foo", "api.foo.bar", "api.foo.baz"}; t.insert("api.foo.bar", nullptr); t.insert("api.foo.baz", nullptr); t.insert("api.foe.fum", nullptr); t.insert("abc.123.456", nullptr); t.insert("api.foo", nullptr); t.insert("api", nullptr); { // Iterate over api const char *expected[] = {"api", "api.foe.fum", "api.foo", "api.foo.bar", "api.foo.baz"}; prefix_data p = {0, 5, expected}; fail_unless(!t.iterPrefix((unsigned char*)"api", 3, p)); diag("Count: %d Max: %d", p.count, p.max_count); fail_unless(p.count == p.max_count); } { // Iterate over 'a' prefix_data p2 = {0, 6, expected2}; fail_unless(!t.iterPrefix((unsigned char*)"a", 1, p2)); fail_unless(p2.count == p2.max_count); } { // Check a failed iteration prefix_data p3 = {0, 0, nullptr}; fail_unless(!t.iterPrefix((unsigned char*)"b", 1, p3)); fail_unless(p3.count == 0); } { // Iterate over api. const char *expected4[] = {"api.foe.fum", "api.foo", "api.foo.bar", "api.foo.baz"}; prefix_data p4 = {0, 4, expected4}; fail_unless(!t.iterPrefix((unsigned char*)"api.", 4, p4)); diag("Count: %d Max: %d", p4.count, p4.max_count); fail_unless(p4.count == p4.max_count); } { // Iterate over api.foo.ba const char *expected5[] = {"api.foo.bar"}; prefix_data p5 = {0, 1, expected5}; fail_unless(!t.iterPrefix((unsigned char*)"api.foo.bar", 11, p5)); diag("Count: %d Max: %d", p5.count, p5.max_count); fail_unless(p5.count == p5.max_count); } // Check a failed iteration on api.end { prefix_data p6 = {0, 0, nullptr}; fail_unless(!t.iterPrefix((unsigned char*)"api.end", 7, p6)); fail_unless(p6.count == 0); } // Iterate over empty prefix { prefix_data p7 = {0, 6, expected2}; fail_unless(!t.iterPrefix((unsigned char*)"", 0, p7)); fail_unless(p7.count == p7.max_count); } } void test_art_long_prefix(void) { art_tree t; t.insert("this:key:has:a:long:prefix:3", 3); t.insert("this:key:has:a:long:common:prefix:2", 2); t.insert("this:key:has:a:long:common:prefix:1", 1); // Search for the keys fail_unless(1 == *t.search("this:key:has:a:long:common:prefix:1")); fail_unless(2 == *t.search("this:key:has:a:long:common:prefix:2")); fail_unless(3 == *t.search("this:key:has:a:long:prefix:3")); { const char *expected[] = { "this:key:has:a:long:common:prefix:1", "this:key:has:a:long:common:prefix:2", "this:key:has:a:long:prefix:3", }; prefix_data p = {0, 3, expected}; fail_unless(!t.iterPrefix((unsigned char*)"this:key:has", 12, p)); diag("Count: %d Max: %d", p.count, p.max_count); fail_unless(p.count == p.max_count); } } void test_art_prefix(void) { art_tree t; void *v; t.insert("food", (void*)"food"); t.insert("foo", (void*)"foo"); diag("size is now %d", t.size()); fail_unless(t.size() == 2); fail_unless((v = *t.search("food")) != nullptr); diag("food lookup yields %s", v); fail_unless(v && strcmp((char*)v, "food") == 0); t.iter([](const std::string& key, void*& value) { diag( "iter leaf: key_len=%d %.*s value=%p", int(key.size()), int(key.size()), key.data(), value); return 0; }); fail_unless((v = *t.search("foo")) != nullptr); diag("foo lookup yields %s", v); fail_unless(v && strcmp((char*)v, "foo") == 0); } void test_art_insert_search_uuid(void) { art_tree t; int len; char buf[512]; FILE *f = open_test_file("thirdparty/libart/tests/uuid.txt"); uintptr_t line = 1; while (fgets(buf, sizeof buf, f)) { len = (int)strlen(buf); buf[len - 1] = '\0'; t.insert(buf, line); line++; } // Seek back to the start fseek(f, 0, SEEK_SET); // Search for each line line = 1; while (fgets(buf, sizeof buf, f)) { uintptr_t val; len = (int)strlen(buf); buf[len - 1] = '\0'; val = *t.search(buf); if (line != val) { fail("Line: %d Val: %" PRIuPTR " Str: %s\n", line, val, buf); } line++; } // Check the minimum auto l = t.minimum(); diag("minimum is %s", l->key.c_str()); fail_unless(l && l->key == "00026bda-e0ea-4cda-8245-522764e9f325"); // Check the maximum l = t.maximum(); diag("maximum is %s", l->key.c_str()); fail_unless(l && l->key == "ffffcb46-a92e-4822-82af-a7190f9c1ec5"); } int main(int argc, char **argv) { (void)argc; (void)argv; plan_tests(84); test_art_insert(); test_art_insert_verylong(); test_art_insert_search(); test_art_insert_delete(); test_art_insert_iter(); test_art_iter_prefix(); test_art_long_prefix(); test_art_insert_search_uuid(); test_art_prefix(); return exit_status(); } watchman-4.9.0/tests/bser.cpp000066400000000000000000000246321314236077500161460ustar00rootroot00000000000000/* Copyright 2013-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #include "thirdparty/jansson/jansson_private.h" #include "thirdparty/jansson/strbuffer.h" #include "thirdparty/tap.h" #include "watchman_scopeguard.h" #define UTF8_PILE_OF_POO "\xf0\x9f\x92\xa9" // Construct a std::string from a literal that may have embedded NUL bytes. // The -1 compensates for the NUL terminator that is included in sizeof() #define S(str_literal) std::string(str_literal, sizeof(str_literal) - 1) static int dump_to_strbuffer(const char* buffer, size_t size, void* data) { return strbuffer_append_bytes((strbuffer_t*)data, buffer, size); } static void hexdump(const char* start, const char* end) { int i; int maxbytes = 24; while (start < end) { ptrdiff_t limit = end - start; if (limit > maxbytes) { limit = maxbytes; } printf("# "); for (i = 0; i < limit; i++) { printf("%02x", (int)(uint8_t)start[i]); } while (i <= maxbytes) { printf(" "); i++; } printf(" "); for (i = 0; i < limit; i++) { printf("%c", isprint((uint8_t)start[i]) ? start[i] : '.'); } printf("\n"); start += limit; } } static std::unique_ptr bdumps(uint32_t version, uint32_t capabilities, const json_ref& json) { strbuffer_t strbuff; bser_ctx_t ctx{version, capabilities, dump_to_strbuffer}; if (strbuffer_init(&strbuff)) { return nullptr; } SCOPE_EXIT { strbuffer_close(&strbuff); }; if (w_bser_dump(&ctx, json, &strbuff) == 0) { return watchman::make_unique(strbuff.value, strbuff.length); } return nullptr; } static std::unique_ptr bdumps_pdu(uint32_t version, uint32_t capabilities, const json_ref& json) { strbuffer_t strbuff; if (strbuffer_init(&strbuff)) { return nullptr; } SCOPE_EXIT { strbuffer_close(&strbuff); }; if (w_bser_write_pdu( version, capabilities, dump_to_strbuffer, json, &strbuff) == 0) { return watchman::make_unique(strbuff.value, strbuff.length); } return nullptr; } static const char* json_inputs[] = { "{\"bar\": true, \"foo\": 42}", "[1, 2, 3]", "[null, true, false, 65536]", "[1.5, 2.0]", "[{\"lemon\": 2.5}, null, 16000, true, false]", "[1, 16000, 65536, 90000, 2147483648, 4294967295]", }; static struct { const char* json_text; const char* template_text; } template_tests[] = { {"[" "{\"age\": 20, \"name\": \"fred\"}, " "{\"age\": 30, \"name\": \"pete\"}, " "{\"age\": 25}" "]", "[\"name\", \"age\"]"}}; static struct { const char* json_text; std::string bserv1; std::string bserv2; } serialization_tests[] = { { "[\"Tom\", \"Jerry\"]", S("\x00\x01\x03\x11\x00\x03\x02\x02\x03\x03\x54\x6f\x6d\x02\x03\x05\x4a" "\x65\x72\x72\x79"), S("\x00\x02\x00\x00\x00\x00\x03\x11\x00\x03\x02\x02\x03\x03\x54\x6f\x6d" "\x02\x03\x05\x4a\x65\x72\x72\x79"), }, { "[1, 123, 12345, 1234567, 12345678912345678]", S("\x00\x01\x03\x18\x00\x03\x05\x03\x01\x03\x7b\x04\x39\x30\x05\x87\xd6" "\x12\x00\x06\x4e\xd6\x14\x5e\x54\xdc\x2b\x00"), S("\x00\x02\x00\x00\x00\x00\x03\x18\x00\x03\x05\x03\x01\x03\x7b\x04\x39" "\x30\x05\x87\xd6\x12\x00\x06\x4e\xd6\x14\x5e\x54\xdc\x2b\x00"), }}; static bool check_roundtrip( uint32_t bser_version, uint32_t bser_capabilities, const char* input, const char* template_text) { diag( "testing BSER version %" PRIu32 ", capabilities %" PRIu32, bser_version, bser_capabilities); char* jdump; json_ref templ; json_error_t jerr; json_int_t needed; auto expected = json_loads(input, 0, &jerr); ok(expected, "loaded %s: %s", input, jerr.text); if (!expected) { return false; } if (template_text) { templ = json_loads(template_text, 0, &jerr); json_array_set_template(expected, templ); } auto dump_buf = bdumps(bser_version, bser_capabilities, expected); ok(dump_buf != nullptr, "dumped something"); if (!dump_buf) { return false; } const char* end = dump_buf->data() + dump_buf->size(); hexdump(dump_buf->data(), end); memset(&jerr, 0, sizeof(jerr)); auto decoded = bunser(dump_buf->data(), end, &needed, &jerr); ok(decoded, "decoded something (err = %s)", jerr.text); jdump = json_dumps(decoded, JSON_SORT_KEYS); ok(jdump, "dumped %s", jdump); ok(json_equal(expected, decoded), "round-tripped json_equal"); ok(!strcmp(jdump, input), "round-tripped strcmp"); free(jdump); return true; } static void check_serialization( uint32_t bser_version, uint32_t bser_capabilities, const char* json_in, const std::string& bser_out) { diag( "testing BSER version %" PRIu32 ", capabilities %" PRIu32, bser_version, bser_capabilities); // Test JSON -> BSER serialization. json_error_t jerr; auto input = json_loads(json_in, 0, &jerr); auto bser_in = bdumps_pdu(bser_version, bser_capabilities, input); ok(*bser_in == bser_out, "raw bser comparison %s", json_in); } // The strings are left as mixed escaped and unescaped bytes so that it's easy // to see how it's constructed. // The breaks in the middle of the string literals here are to prevent "\x05f" // etc from being treated as a single character. static const std::string bser_typed_intro = S("\x00\x03\x03"); static const std::string bser_typed_bytestring = S("\x02\x03\x05" "foo\xd0\xff"); static const std::string bser_typed_utf8string_byte = S("\x02\x03\x07" "bar" UTF8_PILE_OF_POO); static const std::string bser_typed_utf8string_utf8 = S("\x0d\x03\x07" "bar" UTF8_PILE_OF_POO); static const std::string bser_typed_mixedstring_byte = S("\x02\x03\x0e" "baz\xb1\xc1\xe0\x90\x40" UTF8_PILE_OF_POO "\xf4\xff"); static const std::string bser_typed_mixedstring_utf8 = S("\x0d\x03\x0e" "baz?????" UTF8_PILE_OF_POO "??"); // The tuples are (bser version, bser capabilities, expected BSER serialization) static std::vector> typed_string_checks = { std::make_tuple( 1, 0, bser_typed_intro + bser_typed_bytestring + bser_typed_utf8string_byte + bser_typed_mixedstring_byte), std::make_tuple( 2, 0, bser_typed_intro + bser_typed_bytestring + bser_typed_utf8string_utf8 + bser_typed_mixedstring_utf8), std::make_tuple( 2, BSER_CAP_DISABLE_UNICODE, bser_typed_intro + bser_typed_bytestring + bser_typed_utf8string_byte + bser_typed_mixedstring_byte), std::make_tuple( 2, BSER_CAP_DISABLE_UNICODE_FOR_ERRORS, bser_typed_intro + bser_typed_bytestring + bser_typed_utf8string_utf8 + bser_typed_mixedstring_byte), std::make_tuple( 2, BSER_CAP_DISABLE_UNICODE | BSER_CAP_DISABLE_UNICODE_FOR_ERRORS, bser_typed_intro + bser_typed_bytestring + bser_typed_utf8string_byte + bser_typed_mixedstring_byte)}; static void check_bser_typed_strings() { auto bytestring = typed_string_to_json("foo\xd0\xff", W_STRING_BYTE); auto utf8string = typed_string_to_json("bar" UTF8_PILE_OF_POO, W_STRING_UNICODE); // This consists of // - ASCII (valid) // - bare continuation byte 0xB1 (invalid) // - overlong encoding of an ASCII byte 0xC1 (invalid) // - 3 byte sequence with valid start (0xE0 0x90) but an invalid byte (0x40) // - 4 byte sequence (valid) // - 4 byte sequence (0xF4) past the end of the string (invalid) auto mixedstring = typed_string_to_json( "baz\xb1\xc1\xe0\x90\x40" UTF8_PILE_OF_POO "\xf4\xff", W_STRING_MIXED); auto str_array = json_array({bytestring, utf8string, mixedstring}); // check that this gets serialized correctly for (const auto& t : typed_string_checks) { uint32_t bser_version = std::get<0>(t); uint32_t bser_capabilities = std::get<1>(t); const std::string& bser_out = std::get<2>(t); diag( "testing BSER version %" PRIu32 ", capabilities %" PRIu32, bser_version, bser_capabilities); auto bser_buf = bdumps(bser_version, bser_capabilities, str_array); ok(*bser_buf == bser_out, "bser string array"); } } int main(int argc, char** argv) { int i, num_json_inputs, num_templ; (void)argc; (void)argv; num_json_inputs = sizeof(json_inputs) / sizeof(json_inputs[0]); num_templ = sizeof(template_tests) / sizeof(template_tests[0]); int num_serial = sizeof(serialization_tests) / sizeof(serialization_tests[0]); int num_typed = typed_string_checks.size(); plan_tests( (6 * num_json_inputs * 5) /* JSON roundtrip tests */ + (6 * num_templ * 5) /* template tests */ + (1 * num_serial * 2) /* serialization tests */ + (1 * num_typed) /* typed string checks */ ); for (i = 0; i < num_json_inputs; i++) { check_roundtrip(1, 0, json_inputs[i], nullptr); check_roundtrip(2, 0, json_inputs[i], nullptr); check_roundtrip(2, BSER_CAP_DISABLE_UNICODE, json_inputs[i], nullptr); check_roundtrip( 2, BSER_CAP_DISABLE_UNICODE_FOR_ERRORS, json_inputs[i], nullptr); check_roundtrip( 2, BSER_CAP_DISABLE_UNICODE | BSER_CAP_DISABLE_UNICODE_FOR_ERRORS, json_inputs[i], nullptr); } for (i = 0; i < num_templ; i++) { check_roundtrip( 1, 0, template_tests[i].json_text, template_tests[i].template_text); check_roundtrip( 2, 0, template_tests[i].json_text, template_tests[i].template_text); check_roundtrip( 2, BSER_CAP_DISABLE_UNICODE, template_tests[i].json_text, template_tests[i].template_text); check_roundtrip( 2, BSER_CAP_DISABLE_UNICODE_FOR_ERRORS, template_tests[i].json_text, template_tests[i].template_text); check_roundtrip( 2, BSER_CAP_DISABLE_UNICODE | BSER_CAP_DISABLE_UNICODE_FOR_ERRORS, template_tests[i].json_text, template_tests[i].template_text); } for (i = 0; i < num_serial; i++) { check_serialization( 1, 0, serialization_tests[i].json_text, serialization_tests[i].bserv1); check_serialization( 2, 0, serialization_tests[i].json_text, serialization_tests[i].bserv2); } check_bser_typed_strings(); return exit_status(); } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/tests/childproc.cpp000066400000000000000000000034741314236077500171630ustar00rootroot00000000000000/* Copyright 2017-present Facebook, Inc. * Licensed under the Apache License, Version 2.0. */ #include "watchman_system.h" #include #include "ChildProcess.h" #include "thirdparty/tap.h" using watchman::ChildProcess; using Environment = ChildProcess::Environment; using Options = ChildProcess::Options; void test_pipe() { Options opts; opts.pipeStdout(); ChildProcess echo( { #ifndef _WIN32 "/bin/echo", #else "cmd", "/c", "echo", #endif "hello"}, std::move(opts)); auto outputs = echo.communicate(); echo.wait(); w_string_piece line(outputs.first); ok(line.startsWith("hello"), "starts with hello"); } void test_pipe_input(bool threaded) { #ifndef _WIN32 Options opts; opts.pipeStdout(); opts.pipeStdin(); ChildProcess cat({"/bin/cat", "-"}, std::move(opts)); std::vector expected{"one", "two", "three"}; std::list lines{"one\n", "two\n", "three\n"}; auto writable = [&lines](watchman::FileDescriptor& fd) { if (lines.empty()) { return true; } auto str = lines.front(); if (write(fd.fd(), str.data(), str.size()) == -1) { throw std::runtime_error("write to child failed"); } lines.pop_front(); return false; }; auto outputs = threaded ? cat.threadedCommunicate(writable) : cat.communicate(writable); cat.wait(); std::vector resultLines; w_string_piece(outputs.first).split(resultLines, '\n'); ok(resultLines.size() == 3, "got three lines of output"); ok(resultLines == expected, "got all input lines"); #else (void)threaded; pass("dummy1"); pass("dummy2"); #endif } int main(int argc, char **argv) { (void)argc; (void)argv; plan_tests(5); test_pipe(); test_pipe_input(true); test_pipe_input(false); return exit_status(); } watchman-4.9.0/tests/ignore_test.cpp000066400000000000000000000112071314236077500175270ustar00rootroot00000000000000/* Copyright 2016-present Facebook, Inc. * Licensed under the Apache License, Version 2.0. */ #include "watchman.h" #include "thirdparty/tap.h" // A list that looks similar to one used in one of our repos const char *ignore_dirs[] = {".buckd", ".idea", "_build", "buck-cache", "buck-out", "build", "foo/.buckd", "foo/buck-cache", "foo/buck-out", "bar/_build", "bar/buck-cache", "bar/buck-out", "baz/.buckd", "baz/buck-cache", "baz/buck-out", "baz/build", "baz/qux", "baz/focus-out", "baz/tmp", "baz/foo/bar/foo/build", "baz/foo/bar/bar/build", "baz/foo/bar/baz/build", "baz/foo/bar/qux", "baz/foo/baz/foo", "baz/bar/foo/foo/foo/foo/foo/foo", "baz/bar/bar/foo/foo", "baz/bar/bar/foo/foo"}; const char *ignore_vcs[] = {".hg", ".svn", ".git"}; struct test_case { const char *path; bool ignored; }; void run_correctness_test( struct watchman_ignore* state, const struct test_case* tests, uint32_t num_tests) { uint32_t i; for (i = 0; i < num_tests; i++) { bool res = state->isIgnored(tests[i].path, strlen_uint32(tests[i].path)); ok(res == tests[i].ignored, "%s expected=%d actual=%d", tests[i].path, tests[i].ignored, res); } } void add_strings(struct watchman_ignore *ignore, const char **strings, uint32_t num_strings, bool is_vcs_ignore) { uint32_t i; for (i = 0; i < num_strings; i++) { ignore->add(w_string(strings[i], W_STRING_UNICODE), is_vcs_ignore); } } void init_state(struct watchman_ignore* state) { add_strings(state, ignore_dirs, sizeof(ignore_dirs) / sizeof(ignore_dirs[0]), false); add_strings(state, ignore_vcs, sizeof(ignore_vcs) / sizeof(ignore_vcs[0]), true); } void test_correctness(void) { struct watchman_ignore state; static const struct test_case tests[] = { {"some/path", false}, {"buck-out/gen/foo", true}, {".hg/wlock", false}, {".hg/store/foo", true}, {"buck-out", true}, {"foo/buck-out", true}, {"foo/hello", false}, {"baz/hello", false}, {".hg", false}, {"buil", false}, {"build", true}, {"build/lower", true}, {"builda", false}, {"build/bar", true}, {"buildfile", false}, {"build/lower/baz", true}, {"builda/hello", false}, }; init_state(&state); run_correctness_test(&state, tests, sizeof(tests) / sizeof(tests[0])); } // Load up the words data file and build a list of strings from that list. // Each of those strings is prefixed with the supplied string. // If there are fewer than limit entries available in the data file, we will // abort. std::vector build_list_with_prefix(const char* prefix, size_t limit) { std::vector strings; char buf[512]; FILE *f = fopen("thirdparty/libart/tests/words.txt", "r"); if (!f) { f = fopen("watchman/thirdparty/libart/tests/words.txt", "r"); } while (fgets(buf, sizeof buf, f)) { // Remove newline uint32_t len = strlen_uint32(buf); buf[len - 1] = '\0'; strings.emplace_back(w_string::printf("%s%s", prefix, buf)); if (strings.size() >= limit) { break; } } if (strings.size() < limit) { abort(); } return strings; } static const size_t kWordLimit = 230000; void bench_list(const char* label, const char* prefix) { struct watchman_ignore state; size_t i, n; struct timeval start, end; init_state(&state); auto strings = build_list_with_prefix(prefix, kWordLimit); gettimeofday(&start, NULL); for (n = 0; n < 100; n++) { for (i = 0; i < kWordLimit; i++) { state.isIgnored(strings[i].data(), strings[i].size()); } } gettimeofday(&end, NULL); diag("%s: took %.3fs", label, w_timeval_diff(start, end)); } void bench_all_ignores(void) { bench_list("all_ignores_tree", "baz/buck-out/gen/"); } void bench_no_ignores(void) { bench_list("no_ignores_tree", "baz/some/path"); } int main(int, char**) { plan_tests(17); test_correctness(); bench_all_ignores(); bench_no_ignores(); return exit_status(); } watchman-4.9.0/tests/integration/000077500000000000000000000000001314236077500170235ustar00rootroot00000000000000watchman-4.9.0/tests/integration/Interrupt.py000066400000000000000000000004431314236077500213720ustar00rootroot00000000000000 from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals interrupted = False def wasInterrupted(): global interrupted return interrupted def setInterrupted(): global interrupted interrupted = True watchman-4.9.0/tests/integration/TARGETS000066400000000000000000000021061314236077500200560ustar00rootroot00000000000000cpp_binary( name = "cppclient", srcs = ["cppclient.cpp"], deps = [ "@/folly:folly", "@/folly/init:init", "@/folly/io/async:event_base_thread", "@/watchman/cppclient:cppclient", "@/watchman/cppclient:headers", ], ) python_library( name = "testsupport", srcs = glob( [ "Interrupt.py", "TempDir.py", "Wat*.py", "path_utils.py", ], excludes = [ "WatchmanEdenTestCase.py", ], ), base_module = "", deps = [ "@/watchman:watchman", "@/watchman/python/pywatchman:pywatchman", ], ) srcs = glob( [ "test_*.py", ], excludes = [ "test_eden*.py", ], ) py3_srcs = glob( [ "test_*.py", ], excludes = [ "test_nodejs.py", "test_php.py", "test_eden*.py", ], ) python_library( name = "testlib", srcs = srcs, deps = [":testsupport"], ) python_library( name = "testlib-py3", srcs = py3_srcs, deps = [":testsupport"], ) watchman-4.9.0/tests/integration/TempDir.py000066400000000000000000000060301314236077500207400ustar00rootroot00000000000000from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import os import shutil import sys import tempfile import time import atexit import path_utils as path global_temp_dir = None class TempDir(object): ''' This is a helper for locating a reasonable place for temporary files. When run in the watchman test suite, we compute this up-front and then store everything under that temporary directory. When run under the FB internal test runner, we infer a reasonable grouped location from the process group environmental variable exported by the test runner. ''' def __init__(self, keepAtShutdown=False): # We'll put all our temporary stuff under one dir so that we # can clean it all up at the end. # If we're running under an internal test runner, we prefer to put # things in a dir relating to that runner. parent_dir = tempfile.tempdir or os.environ.get('TMP', '/tmp') if 'TESTPILOT_PROCESS_GROUP' in os.environ: parent_dir = os.path.join( parent_dir, 'watchmantest-%s' % (os.environ['TESTPILOT_PROCESS_GROUP']) ) if not os.path.exists(parent_dir): os.mkdir(parent_dir) prefix = '' else: prefix = 'watchmantest' self.temp_dir = path.get_canonical_filesystem_path( tempfile.mkdtemp(dir=parent_dir, prefix=prefix)) if os.name != 'nt': # On some platforms, setting the setgid bit on a directory doesn't # work if the user isn't a member of the directory's group. Set the # group explicitly to avoid this. os.chown(self.temp_dir, -1, os.getegid()) # Some environments have a weird umask that can leave state # directories too open and break tests. os.umask(0o022) # Redirect all temporary files to that location tempfile.tempdir = self.temp_dir self.keep = keepAtShutdown def cleanup(): if self.keep: sys.stdout.write('Preserving output in %s\n' % self.temp_dir) return self._retry_rmtree(self.temp_dir) atexit.register(cleanup) def get_dir(self): return self.temp_dir def set_keep(self, value): self.keep = value def _retry_rmtree(self, top): # Keep trying to remove it; on Windows it may take a few moments # for any outstanding locks/handles to be released for i in range(1, 10): shutil.rmtree(top, ignore_errors=True) if not os.path.isdir(top): return time.sleep(0.2) sys.stdout.write('Failed to completely remove ' + top) def get_temp_dir(keep=None): global global_temp_dir if global_temp_dir: return global_temp_dir if keep is None: keep = os.environ.get('WATCHMAN_TEST_KEEP', '0') == '1' global_temp_dir = TempDir(keep) return global_temp_dir watchman-4.9.0/tests/integration/WatchmanEdenTestCase.py000066400000000000000000000062601314236077500233730ustar00rootroot00000000000000# vim:ts=4:sw=4:et: # Copyright 2016-present Facebook, Inc. # Licensed under the Apache License, Version 2.0 from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import WatchmanTestCase import WatchmanInstance import os import tempfile try: import unittest2 as unittest except ImportError: import unittest TestParent = object try: from eden.integration.lib import (edenclient, hgrepo) def is_sandcastle(): return 'SANDCASTLE' in os.environ if not is_sandcastle() and edenclient.can_run_eden(): TestParent = WatchmanTestCase.WatchmanTestCase can_run_eden = edenclient.can_run_eden except ImportError: def can_run_eden(): return False class WatchmanEdenTestCase(TestParent): def setUp(self): # the eden home directory. We use the global dir for the test runner # rather than one scoped to the test because we have very real length # limits on the socket path name that we're likely to hit otherwise. # fake a home dir so that eden is isolated from the settings # of the user running these tests. self.eden_home = tempfile.mkdtemp(prefix='eden_home') self.eden_dir = os.path.join(self.eden_home, 'local/.eden') os.makedirs(self.eden_dir) self.etc_eden_dir = os.path.join(self.eden_home, 'etc-eden') os.mkdir(self.etc_eden_dir) # The directory holding the system configuration files self.system_config_dir = os.path.join(self.etc_eden_dir, 'config.d') os.mkdir(self.system_config_dir) # where we'll mount the eden client(s) self.mounts_dir = self.mkdtemp(prefix='eden_mounts') self.save_home = os.environ['HOME'] os.environ['HOME'] = self.eden_home self.eden = edenclient.EdenFS( self.eden_dir, etc_eden_dir=self.etc_eden_dir, home_dir=self.eden_home ) self.eden.start() # Watchman also needs to start up with the same HOME, otherwise # it won't be able to locate the eden socket self.eden_watchman = WatchmanInstance.Instance() self.eden_watchman.start() self.client = self.getClient(self.eden_watchman) def tearDown(self): if self.save_home: os.environ['HOME'] = self.save_home if self.eden: self.eden.cleanup() if self.eden_watchman: self.eden_watchman.stop() def makeEdenMount(self, populate_fn=None): ''' populate_fn is a function that accepts a repo object and that is expected to populate it as a pre-requisite to starting up the eden mount for it. ''' repo_path = self.mkdtemp(prefix='eden_repo_') repo_name = os.path.basename(repo_path) repo = hgrepo.HgRepository(repo_path) repo.init() if populate_fn: populate_fn(repo) self.eden.add_repository(repo_name, repo_path) mount_path = os.path.join(self.mounts_dir, repo_name) self.eden.clone(repo_name, mount_path) return mount_path def setDefaultConfiguration(self): self.setConfiguration('local', 'bser') watchman-4.9.0/tests/integration/WatchmanInstance.py000066400000000000000000000201521314236077500226240ustar00rootroot00000000000000# vim:ts=4:sw=4:et: # Copyright 2012-present Facebook, Inc. # Licensed under the Apache License, Version 2.0 from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import tempfile import json import os import subprocess import signal try: import pwd except ImportError: # Windows pass import pywatchman import time import threading import uuid import traceback import sys import TempDir tls = threading.local() def setSharedInstance(inst): global tls tls.instance = inst def getSharedInstance(): global tls if hasattr(tls, 'instance'): return tls.instance if os.environ.get('TESTING_VIA_BUCK', '0') == '1': # Ensure that the temporary dir is configured TempDir.get_temp_dir().get_dir() tls.instance = Instance() tls.instance.start() return tls.instance def hasSharedInstance(): global tls return hasattr(tls, 'instance') class InitWithFilesMixin(object): def _init_state(self): self.base_dir = tempfile.mkdtemp(prefix='inst') # no separate user directory here -- that's only in InitWithDirMixin self.user_dir = None self.cfg_file = os.path.join(self.base_dir, "config.json") self.log_file_name = os.path.join(self.base_dir, "log") self.cli_log_file_name = os.path.join(self.base_dir, 'cli-log') self.pid_file = os.path.join(self.base_dir, "pid") if os.name == 'nt': self.sock_file = '\\\\.\\pipe\\watchman-test-%s' % uuid.uuid4().hex else: self.sock_file = os.path.join(self.base_dir, "sock") self.state_file = os.path.join(self.base_dir, "state") def get_state_args(self): return [ '--sockname={0}'.format(self.sock_file), '--logfile={0}'.format(self.log_file_name), '--statefile={0}'.format(self.state_file), '--pidfile={0}'.format(self.pid_file), ] class InitWithDirMixin(object): '''A mixin to allow setting up a state dir rather than a state file. This is only meant to test state dir creation and permissions -- most operations are unlikely to work. ''' def _init_state(self): self.base_dir = tempfile.mkdtemp(prefix='inst') self.cfg_file = os.path.join(self.base_dir, 'config.json') # This needs to be separate from the log_file_name because the # log_file_name won't exist in the beginning, but the cli_log_file_name # will. self.cli_log_file_name = os.path.join(self.base_dir, 'cli-log') # This doesn't work on Windows, but we don't expect to be hitting this # codepath on Windows anyway username = pwd.getpwuid(os.getuid())[0] self.user_dir = os.path.join(self.base_dir, '%s-state' % username) self.log_file_name = os.path.join(self.user_dir, 'log') self.sock_file = os.path.join(self.user_dir, 'sock') self.state_file = os.path.join(self.user_dir, 'state') def get_state_args(self): return ['--test-state-dir={0}'.format(self.base_dir)] class _Instance(object): # Tracks a running watchman instance. It is created with an # overridden global configuration file; you may pass that # in to the constructor def __init__(self, config={}, start_timeout=5.0, debug_watchman=False): self.start_timeout = start_timeout self.base_dir = tempfile.mkdtemp(prefix='inst') self._init_state() self.proc = None self.pid = None self.debug_watchman = debug_watchman with open(self.cfg_file, "w") as f: f.write(json.dumps(config)) # The log file doesn't exist right now, so we can't open it. self.cli_log_file = open(self.cli_log_file_name, 'w+') def __del__(self): self.stop() def getSockPath(self): return self.sock_file def getCLILogContents(self): with open(self.cli_log_file_name, 'r') as f: return f.read() def getServerLogContents(self): with open(self.log_file_name, 'r') as f: return f.read() def stop(self): if self.proc: self.proc.kill() self.proc.wait() self.proc = None self.cli_log_file.close() def watchmanBinary(self): return os.environ.get('WATCHMAN_BINARY', 'watchman') def commandViaCLI(self, cmd): '''a very bare bones helper to test the site spawner functionality''' args = [ self.watchmanBinary(), '--log-level=2', ] args.extend(self.get_state_args()) args.extend(cmd) env = os.environ.copy() env["WATCHMAN_CONFIG_FILE"] = self.cfg_file proc = subprocess.Popen(args, env=env, stdin=None, stdout=subprocess.PIPE, stderr=subprocess.PIPE) return proc.communicate() def start(self): args = [ self.watchmanBinary(), '--foreground', '--log-level=2', ] args.extend(self.get_state_args()) env = os.environ.copy() env["WATCHMAN_CONFIG_FILE"] = self.cfg_file self.proc = subprocess.Popen(args, env=env, stdin=None, stdout=self.cli_log_file, stderr=self.cli_log_file) if self.debug_watchman: print('Watchman instance PID: ' + str(self.proc.pid)) if pywatchman.compat.PYTHON3: user_input = input else: user_input = raw_input user_input('Press Enter to continue...') # wait for it to come up deadline = time.time() + self.start_timeout while time.time() < deadline: try: client = pywatchman.client(sockpath=self.sock_file) self.pid = client.query('get-pid')['pid'] break except Exception as e: t, val, tb = sys.exc_info() time.sleep(0.1) finally: client.close() if self.pid is None: # self.proc didn't come up: wait for it to die self.stop() pywatchman.compat.reraise(t, val, tb) def _waitForSuspend(self, suspended, timeout): if os.name == 'nt': # There's no 'ps' equivalent we can use return True # Check the information in the 'ps' output deadline = time.time() + timeout state = 's' if sys.platform == 'SunOS' else 'state' while time.time() < deadline: out, err = subprocess.Popen(['ps', '-o', state, '-p', str(self.pid)], stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate() status = out.splitlines()[-1] is_suspended = 'T' in status.decode('utf-8', 'surrogateescape') if is_suspended == suspended: return True time.sleep(0.03) return False def suspend(self): if self.proc.poll() or self.pid <= 1: raise Exception("watchman process isn't running") if os.name == 'nt': subprocess.check_call(['susres.exe', 'suspend', str(self.pid)]) else: os.kill(self.pid, signal.SIGSTOP) if not self._waitForSuspend(True, 5): raise Exception("watchman process didn't stop in 5 seconds") def resume(self): if self.proc.poll() or self.pid <= 1: raise Exception("watchman process isn't running") if os.name == 'nt': subprocess.check_call(['susres.exe', 'resume', str(self.pid)]) else: os.kill(self.pid, signal.SIGCONT) if not self._waitForSuspend(False, 5): raise Exception("watchman process didn't resume in 5 seconds") class Instance(_Instance, InitWithFilesMixin): pass class InstanceWithStateDir(_Instance, InitWithDirMixin): pass watchman-4.9.0/tests/integration/WatchmanTestCase.py000066400000000000000000000404241314236077500225770ustar00rootroot00000000000000# vim:ts=4:sw=4:et: # Copyright 2012-present Facebook, Inc. # Licensed under the Apache License, Version 2.0 from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import functools import inspect import errno try: import unittest2 as unittest except ImportError: import unittest import pywatchman import time import tempfile import os.path import os import WatchmanInstance import TempDir if pywatchman.compat.PYTHON3: STRING_TYPES = (str, bytes) else: STRING_TYPES = (str, unicode) if os.name == 'nt': # monkey patch to hopefully minimize test flakiness def wrap_with_backoff(fn): def wrapper(*args, **kwargs): delay = 0.01 attempts = 10 while True: try: return fn(*args, **kwargs) except WindowsError as e: if attempts == 0: raise # WindowsError: [Error 32] The process cannot access the # file because it is being used by another process. # Error 5: Access is denied. if e.winerror not in (5, 32): raise attempts = attempts - 1 time.sleep(delay) delay = delay * 2 return wrapper for name in ['rename', 'unlink', 'remove', 'rmdir']: setattr(os, name, wrap_with_backoff(getattr(os, name))) class WatchmanTestCase(unittest.TestCase): def __init__(self, methodName='run'): super(WatchmanTestCase, self).__init__(methodName) self.setDefaultConfiguration() self.maxDiff = None self.attempt = 0 if pywatchman.compat.PYTHON3: self.assertItemsEqual = self.assertCountEqual def requiresPersistentSession(self): return False def checkPersistentSession(self): if self.requiresPersistentSession() and self.transport == 'cli': self.skipTest('need persistent session') def checkOSApplicability(self): # override this to call self.skipTest if this test class should skip # on the current OS pass def setUp(self): self.checkPersistentSession() self.checkOSApplicability() def getClient(self, inst=None): if inst or not hasattr(self, 'client'): client = pywatchman.client( # ASAN-enabled builds can be slower enough that we hit timeouts # with the default of 1 second timeout=3.0, transport=self.transport, sendEncoding=self.encoding, recvEncoding=self.encoding, sockpath=(inst or WatchmanInstance.getSharedInstance()).getSockPath()) if not inst: # only cache the client if it points to the shared instance self.client = client return client return self.client def __logTestInfo(self, test, msg): if hasattr(self, 'client'): try: self.getClient().query('log', 'debug', 'TEST: %s %s\n\n' % (test, msg)) except Exception as e: pass def mkdtemp(self, **kwargs): return self.normAbsolutePath(tempfile.mkdtemp(dir=self.tempdir, **kwargs)) def mktemp(self, prefix=''): f, name = tempfile.mkstemp(prefix=prefix, dir=self.tempdir) os.close(f) return name def setAttemptNumber(self, attempt): self.attempt = attempt def run(self, result): if result is None: raise Exception('MUST be a runtests.py:Result instance') # Arrange for any temporary stuff we create to go under # our global tempdir and put it in a dir named for the test id = '%s.%s.%s' % (self.id(), self.transport, self.encoding) try: self.tempdir = os.path.join(TempDir.get_temp_dir().get_dir(), id) if self.attempt > 0: self.tempdir += "-%d" % self.attempt os.mkdir(self.tempdir) self.__logTestInfo(id, 'BEGIN') super(WatchmanTestCase, self).run(result) finally: try: self.watchmanCommand('log-level', 'off') self.getClient().getLog(remove=True) except: pass self.__logTestInfo(id, 'END') self.__clearWatches() if hasattr(self, 'client'): self.client.close() delattr(self, 'client') return result def dumpLogs(self): ''' used in travis CI to show the hopefully relevant log snippets ''' inst = WatchmanInstance.getSharedInstance() def tail(logstr, n): lines = logstr.split('\n')[-n:] return '\n'.join(lines) print(self.getLogSample()) def getLogSample(self): ''' used in CI to show the hopefully relevant log snippets ''' inst = WatchmanInstance.getSharedInstance() def tail(logstr, n): lines = logstr.split('\n')[-n:] return '\n'.join(lines) return '\n'.join([ 'CLI logs', tail(inst.getCLILogContents(), 500), 'Server logs', tail(inst.getServerLogContents(), 500), ]) def setConfiguration(self, transport, encoding): self.transport = transport self.encoding = encoding def touch(self, fname, times=None): try: os.utime(fname, times) except OSError as e: if e.errno == errno.ENOENT: with open(fname, 'a'): os.utime(fname, times) else: raise def touchRelative(self, base, *fname): fname = os.path.join(base, *fname) self.touch(fname, None) def __clearWatches(self): if hasattr(self, 'client'): try: self.client.subs = {} self.client.sub_by_root = {} self.watchmanCommand('watch-del-all') except Exception as e: pass def __del__(self): self.__clearWatches() def watchmanCommand(self, *args): return self.getClient().query(*args) def normRelativePath(self, path): # TODO: in the future we will standardize on `/` as the # dir separator so we can remove the replace call from here. # We do not need to normcase because all of our tests are # using the appropriate case already, and watchman returns # paths in the canonical file replace case anyway. return path.replace('\\', '/') def normAbsolutePath(self, path): # TODO: in the future we will standardize on `/` as the # dir separator so we can remove the replace call. return path.replace('\\', '/') def _waitForCheck(self, cond, res_check, timeout): deadline = time.time() + timeout res = None while time.time() < deadline: res = cond() if res_check(res): return [True, res] time.sleep(0.03) return [False, res] # Continually invoke `cond` until it returns true or timeout # is reached. Returns a tuple of [bool, result] where the # first element of the tuple indicates success/failure and # the second element is the return value from the condition def waitFor(self, cond, timeout=10): return self._waitForCheck(cond, lambda res: res, timeout) def waitForEqual(self, expected, actual_cond, timeout=10): return self._waitForCheck( actual_cond, lambda res: res == expected, timeout ) def assertWaitFor(self, cond, timeout=10, message=None): status, res = self.waitFor(cond, timeout) if status: return res if message is None: message = "%s was not met in %s seconds: %s" % (cond, timeout, res) self.fail(message) def assertWaitForEqual( self, expected, actual_cond, timeout=10, message=None ): status, res = self.waitForEqual(expected, actual_cond, timeout) if status: return res if message is None: message = "%s was not equal to %s in %s seconds: %s" % ( actual_cond, expected, timeout, res ) self.fail(message) def getFileList(self, root, cursor=None, relativeRoot=None): expr = { "expression": ["exists"], "fields": ["name"], } if cursor: expr['since'] = cursor if relativeRoot: expr['relative_root'] = relativeRoot res = self.watchmanCommand('query', root, expr) files = self.normWatchmanFileList(res['files']) self.last_file_list = files return files def waitForSync(self, root): """ ensure that watchman has observed any pending file changes This is most useful after mutating the filesystem and before attempting to perform a since query """ self.watchmanCommand('query', root, { 'expression': ['name', '_bogus_'], 'fields': ['name']}) def getWatchList(self): watch_list = self.watchmanCommand('watch-list')['roots'] self.last_root_list = watch_list return watch_list def normWatchmanFileList(self, files): return sorted(list(map(self.normRelativePath, files))) def normFileList(self, files): return sorted(list(map(self.normRelativePath, files))) def assertFileListsEqual(self, list1, list2, message=None): list1 = [self.normRelativePath(f) for f in list1] list2 = [self.normRelativePath(f) for f in list2] self.assertItemsEqual(list1, list2, message) def fileListsEqual(self, list1, list2): list1 = [self.normRelativePath(f) for f in list1] list2 = [self.normRelativePath(f) for f in list2] return sorted(list1) == sorted(list2) def fileListContains(self, list1, list2): """ return true if list1 contains each unique element in list2 """ set1 = set([self.normRelativePath(f) for f in list1]) list2 = [self.normRelativePath(f) for f in list2] return set1.issuperset(list2) def assertFileListContains(self, list1, list2, message=None): if not self.fileListContains(list1, list2): self.fail(message) # Wait for the file list to match the input set def assertFileList(self, root, files=[], cursor=None, relativeRoot=None, message=None): expected_files = self.normFileList(files) if (cursor is not None) and cursor[0:2] == 'n:': # it doesn't make sense to repeat named cursor queries, as # the cursor moves each time self.getFileList(root, cursor=cursor, relativeRoot=relativeRoot) else: st, res = self.waitFor( lambda: self.fileListsEqual(self.getFileList(root, cursor=cursor, relativeRoot=relativeRoot ), expected_files)) self.assertFileListsEqual(self.last_file_list, expected_files, message) # Wait for the list of watched roots to match the input set def assertWatchListContains(self, roots, message=None): st, res = self.waitFor( lambda: self.fileListContains(self.getWatchList(), roots)) self.assertFileListContains(self.last_root_list, roots, message) def waitForSub(self, name, root, accept=None, timeout=10, remove=True): client = self.getClient() def default_accept(dat): return True if accept is None: accept = default_accept deadline = time.time() + timeout while time.time() < deadline: sub = self.getSubscription(name, root=root, remove=False) if sub is not None: res = accept(sub) if res: return self.getSubscription(name, root=root, remove=remove) # wait for more data client.setTimeout(deadline - time.time()) client.receive() return None def getSubscription(self, name, root, remove=True, normalize=True): data = self.getClient().getSubscription(name, root=root, remove=remove) if data is None or not normalize: return data def norm_sub_item(item): if isinstance(item, STRING_TYPES): return self.normRelativePath(item) item['name'] = self.normRelativePath(item['name']) return item def norm_sub(sub): if 'files' in sub: files = [] for item in sub['files']: files.append(norm_sub_item(item)) sub['files'] = files return sub return list(map(norm_sub, data)) def findSubscriptionContainingFile(self, subdata, filename): filename = self.normRelativePath(filename) for dat in subdata: if ('files' in dat and filename in self.normWatchmanFileList(dat['files'])): return dat return None def isCaseInsensitive(self): if hasattr(self, '_case_insensitive'): return self._case_insensitive d = self.mkdtemp() self.touchRelative(d, 'a') self._case_insensitive = os.path.exists(os.path.join(d, 'A')) return self._case_insensitive def suspendWatchman(self): WatchmanInstance.getSharedInstance().suspend() def resumeWatchman(self): WatchmanInstance.getSharedInstance().resume() def rootIsWatched(self, r): watches = [self.normAbsolutePath( root) for root in self.watchmanCommand('watch-list')['roots']] return r in watches def skip_for(transports=tuple(), codecs=tuple()): """ Decorator to allow skipping tests for particular transports or codecs.""" transports = set(transports) codecs = set(codecs) def skip(f): @functools.wraps(f) def wrapper(self, *args, **kwargs): if self.transport in transports or self.encoding in codecs: self.skipTest( 'test skipped for transport %s, codec %s' % (self.transport, self.encoding) ) return f(self, *args, **kwargs) return wrapper return skip def expand_matrix(test_class): ''' A decorator function used to create different permutations from a given input test class. Given a test class named "MyTest", this will create 4 separate classes named "MyTestLocalBser", "MyTestLocalBser2", "MyTestLocalJson" and "MyTestCliJson" that will exercise the different transport and encoding options implied by their names. ''' matrix = [ ('local', 'bser', 'LocalBser2'), ('local', 'json', 'LocalJson'), ('cli', 'json', 'CliJson'), ] if not pywatchman.compat.PYTHON3: matrix += [ ('local', 'bser-v1', 'LocalBser'), ] # We do some rather hacky things here to define new test class types # in our caller's scope. This is needed so that the unittest TestLoader # will find the subclasses we define. caller_scope = inspect.currentframe().f_back.f_locals for (transport, encoding, suffix) in matrix: def make_class(transport, encoding, suffix): subclass_name = test_class.__name__ + suffix # Define a new class that derives from the input class class MatrixTest(test_class): def setDefaultConfiguration(self): self.setConfiguration(transport, encoding) # Set the name and module information on our new subclass MatrixTest.__name__ = subclass_name MatrixTest.__qualname__ = subclass_name MatrixTest.__module__ = test_class.__module__ # Before we publish the test, check whether that generated # configuration would always skip try: t = MatrixTest() t.checkPersistentSession() t.checkOSApplicability() caller_scope[subclass_name] = MatrixTest except unittest.SkipTest: pass make_class(transport, encoding, suffix) return None watchman-4.9.0/tests/integration/__init__.py000066400000000000000000000000001314236077500211220ustar00rootroot00000000000000watchman-4.9.0/tests/integration/capabilities.js000066400000000000000000000027051314236077500220160ustar00rootroot00000000000000var assert = require('assert'); var watchman = require('fb-watchman'); function optional() { var client = new watchman.Client(); client.capabilityCheck({optional: ['will-never-exist']}, function (error, resp) { assert.equal(error, null, 'no errors'); assert.equal(resp.capabilities['will-never-exist'], false); client.end(); }); } optional(); function required() { var client = new watchman.Client(); client.capabilityCheck({required: ['will-never-exist']}, function (error, resp) { assert.equal('client required capability `will-never-exist` is not' + ' supported by this server', error.message); client.end(); }); } required(); function synth() { var client = new watchman.Client(); resp = client._synthesizeCapabilityCheck({version: '1.0'}, ['will-never-exist'], []); assert.equal(resp.capabilities['will-never-exist'], false); resp = client._synthesizeCapabilityCheck({version: '3.2'}, ['relative_root'], []); assert.equal(resp.capabilities['relative_root'], false); resp = client._synthesizeCapabilityCheck({version: '3.3'}, ['relative_root'], []); assert.equal(resp.capabilities['relative_root'], true); resp = client._synthesizeCapabilityCheck({version: '1.0'}, [], ['will-never-exist']); assert.equal('client required capability `will-never-exist` is not' + ' supported by this server', resp.error); } synth(); watchman-4.9.0/tests/integration/case.js000066400000000000000000000024001314236077500202700ustar00rootroot00000000000000var assert = require('assert'); var watchman = require('fb-watchman'); var client = new watchman.Client(); const fs = require('fs'); const os = require('os'); const path = require('path'); var platform = os.platform(); if (platform == 'darwin' || platform == 'win32') { var tmp = fs.realpathSync(process.env.TMPDIR); var foo = path.join(tmp, 'foo'); var FOO = path.join(tmp, 'FOO'); fs.mkdir(FOO, function(err_mk_dir_foo) { assert.equal(err_mk_dir_foo, null, 'no errors'); var bar = path.join(foo, 'bar'); var BAR = path.join(FOO, 'bar'); fs.mkdir(BAR, function(err_mk_dir_bar) { assert.equal(err_mk_dir_bar, null, 'no errors'); client.command(['watch', bar], function (error, resp) { assert.equal('unable to resolve root ' + bar + ": \"" + bar + "\" resolved to \"" + BAR + "\" but we were unable to examine \"" + bar + "\" using strict " + "case sensitive rules. Please check each component of the path and make " + "sure that that path exactly matches the correct case of the files on your " + "filesystem." , error.message); client.end(); }); }); }); } watchman-4.9.0/tests/integration/cat.py000066400000000000000000000006171314236077500201500ustar00rootroot00000000000000#!/usr/bin/env python from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import sys args = sys.argv[1:] if not args: args = ['-'] for file_name in args: if file_name == '-': sys.stdout.write(sys.stdin.read()) else: with open(file_name, 'rb') as f: sys.stdout.write(f.read()) watchman-4.9.0/tests/integration/clock.php000066400000000000000000000020111314236077500206210ustar00rootroot00000000000000getPath(); $watch = $this->watch($root); $clock = $this->watchmanCommand('clock', $root); $this->assertRegex('/^c:\d+:\d+:\d+:\d+$/', $clock['clock'], "looks clocky"); } function testClockSync() { $dir = new WatchmanDirectoryFixture(); $root = $dir->getPath(); $watch = $this->watch($root); $clock1 = $this->watchmanCommand('clock', $root, array('sync_timeout' => 100)); $this->assertRegex('/^c:\d+:\d+:\d+:\d+$/', $clock1['clock'], "looks clocky ".json_encode($clock1)); $clock2 = $this->watchmanCommand('clock', $root, array('sync_timeout' => 100)); $this->assertRegex('/^c:\d+:\d+:\d+:\d+$/', $clock2['clock'], "looks clocky"); $this->assertFalse($clock1 === $clock2); } } watchman-4.9.0/tests/integration/cppclient.cpp000066400000000000000000000067531314236077500215230ustar00rootroot00000000000000/* Copyright 2016-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "WatchmanClient.h" #include #include #include #include #include #include #include #include #include #include using namespace folly; using namespace watchman; using namespace std::chrono; int main(int argc, char** argv) { folly::init(&argc, &argv); system("rm -f hit"); folly::EventBaseThread ebt; auto eb = ebt.getEventBase(); Promise errorCallbackTrigger; WatchmanClient c( eb, Optional(), nullptr, [&errorCallbackTrigger](exception_wrapper&) { LOG(INFO) << "Expected global error caught"; errorCallbackTrigger.setValue(); }); c.connect().wait(); LOG(INFO) << "Connected to watchman"; SCOPE_EXIT { c.close(); // must close before the EventBase is terminated ebt.stop(); }; std::mutex mutex; std::condition_variable cv; std::atomic_bool hit(false); char current_dir[PATH_MAX]; CHECK(getcwd(current_dir, PATH_MAX)) << "Error getting current dir"; dynamic query = dynamic::object("fields", dynamic::array("name"))( "expression", dynamic::array("name", "hit")); auto sub = c.subscribe( query, current_dir, eb, [&](Try&& data) { if ((*data)["is_fresh_instance"].getBool()) { return; } else { if ((*data)["files"][0].getString().find("hit") != std::string::npos) { LOG(INFO) << "Got hit"; std::unique_lock lock(mutex); hit = true; cv.notify_all(); } } }) .wait() .value(); LOG(INFO) << "Triggering subscritpion"; system("touch hit"); LOG(INFO) << "Waiting for hit."; std::unique_lock lock(mutex); auto now = std::chrono::system_clock::now(); if (!cv.wait_until(lock, now + seconds(5), [&]() { return (bool)hit; })) { LOG(ERROR) << "FAIL: timeout/no hit"; return 1; } hit = false; LOG(INFO) << "Unsubscribing"; c.unsubscribe(sub).wait(); LOG(INFO) << "Trying to falsely trigger subscription"; system("rm hit"); /* sleep override */ sleep(3); if (hit) { LOG(ERROR) << "FAIL: still got a hit"; return 1; } LOG(INFO) << "PASS: didn't see false trigger after 3 seconds"; LOG(INFO) << "Testing error handling"; Promise subErrorCallbackTrigger; c.subscribe( query, current_dir, eb, [&](folly::Try&& data) { if (data.hasException()) { LOG(INFO) << "Expected subcription error caught"; subErrorCallbackTrigger.setValue(); } }) .wait() .value(); c.getConnection().forceEOF(); try { errorCallbackTrigger.getFuture().within(seconds(1)).wait().value(); } catch(TimedOut& e) { LOG(ERROR) << "FAIL: did not get callback from global error handler"; return 1; } try { subErrorCallbackTrigger.getFuture().within(seconds(1)).wait().value(); } catch(TimedOut& e) { LOG(ERROR) << "FAIL: did not get subscription error"; return 1; } LOG(INFO) << "PASS: caught expected errors"; return 0; } watchman-4.9.0/tests/integration/cursor.php000066400000000000000000000037561314236077500210640ustar00rootroot00000000000000getPath(); $watch = $this->watch($root); $this->watchmanCommand('log', 'debug', 'XXX 1st since testCursor'); $this->assertFileListUsingSince($root, 'n:testCursor', array()); $this->watchmanCommand('log', 'debug', 'XXX touch one'); touch($root . '/one'); $this->watchmanCommand('log', 'debug', 'XXX 2nd since testCursor'); $since = $this->assertFileListUsingSince( $root, 'n:testCursor', array('one')); $this->assertEqual(true, $since['files'][0]['new']); $this->watchmanCommand('log', 'debug', 'XXX 3rd since testCursor'); $this->assertFileListUsingSince( $root, 'n:testCursor', array('one'), array()); $this->watchmanCommand('log', 'debug', 'XXX 2nd touch one'); /* now to verify that the file doesn't show as new after this next * change */ touch($root . '/one', time()+1); $since = $this->assertFileListUsingSince( $root, 'n:testCursor', array('one')); $this->assertEqual(false, $since['files'][0]['new']); // Deleted files shouldn't show up in fresh cursors touch("$root/two"); unlink("$root/one"); $res = $this->watchmanCommand('since', $root, 'n:testCursor2'); $this->assertEqual(true, $res['is_fresh_instance']); $this->assertEqual(1, count($res['files'])); $this->assertEqual('two', $res['files'][0]['name']); $this->assertEqual(true, $res['files'][0]['exists']); // ... but they should show up afterwards unlink("$root/two"); $res = $this->watchmanCommand('since', $root, 'n:testCursor2'); $this->assertEqual(false, $res['is_fresh_instance']); $this->assertEqual(1, count($res['files'])); $this->assertEqual('two', $res['files'][0]['name']); $this->assertEqual(false, $res['files'][0]['exists']); } } watchman-4.9.0/tests/integration/dirname.php000066400000000000000000000056711314236077500211640ustar00rootroot00000000000000getPath()); for ($i = 0; $i < 5; $i++) { mkdir("$root/$i/$i/$i/$i/$i", 0777, true); touch("$root/a"); touch("$root/$i/a"); touch("$root/{$i}a"); touch("$root/$i/$i/a"); touch("$root/$i/$i/$i/a"); touch("$root/$i/$i/$i/$i/a"); touch("$root/$i/$i/$i/$i/$i/a"); } $this->watch($root); $tests = array( array('', null, array( '0/0/0/0/0/a', '0/0/0/0/a', '0/0/0/a', '0/0/a', '0/a', '1/1/1/1/1/a', '1/1/1/1/a', '1/1/1/a', '1/1/a', '1/a', '2/2/2/2/2/a', '2/2/2/2/a', '2/2/2/a', '2/2/a', '2/a', '3/3/3/3/3/a', '3/3/3/3/a', '3/3/3/a', '3/3/a', '3/a', '4/4/4/4/4/a', '4/4/4/4/a', '4/4/4/a', '4/4/a', '4/a', 'a', )), array('', 4, array( '0/0/0/0/0/a', '1/1/1/1/1/a', '2/2/2/2/2/a', '3/3/3/3/3/a', '4/4/4/4/4/a', )), array('', 3, array( '0/0/0/0/0/a', '0/0/0/0/a', '1/1/1/1/1/a', '1/1/1/1/a', '2/2/2/2/2/a', '2/2/2/2/a', '3/3/3/3/3/a', '3/3/3/3/a', '4/4/4/4/4/a', '4/4/4/4/a', )), array('0', null, array( '0/0/0/0/0/a', '0/0/0/0/a', '0/0/0/a', '0/0/a', '0/a', )), array('1', null, array( '1/1/1/1/1/a', '1/1/1/1/a', '1/1/1/a', '1/1/a', '1/a', )), array('1', 0, array( '1/1/1/1/1/a', '1/1/1/1/a', '1/1/1/a', '1/1/a', )), array('1', 1, array( '1/1/1/1/1/a', '1/1/1/1/a', '1/1/1/a', )), array('1', 2, array( '1/1/1/1/1/a', '1/1/1/1/a', )), array('1', 3, array( '1/1/1/1/1/a', )), array('1', 4, array( )), ); foreach ($tests as $tdata) { list ($dirname, $depth, $expect) = $tdata; if ($depth === null) { $term = array('dirname', $dirname); // Equivalent to depth ge 0 } else { $term = array('dirname', $dirname, array('depth', 'gt', $depth)); } $label = json_encode(array('tdata' => $tdata, 'term' => $term)); $results = $this->watchmanCommand('query', $root, array( 'expression' => array('allof', $term, array('name', 'a') ), 'fields' => array('name') )); if (isset($results['error'])) { $this->assertFailure($results['error'] . ' ' . $label); } $files = $results['files']; $this->assertEqualFileList($expect, $files, $label); } } } watchman-4.9.0/tests/integration/empty.php000066400000000000000000000027331314236077500206770ustar00rootroot00000000000000getPath(); touch("$root/empty"); file_put_contents("$root/notempty", "foo"); $this->watch($root); $results = $this->watchmanCommand('query', $root, array( 'expression' => 'empty' )); $this->assertEqual( 'empty', $results['files'][0]['name'] ); $results = $this->watchmanCommand('query', $root, array( 'expression' => 'exists' )); $exists = array(); foreach ($results['files'] as $file) { $exists[] = $file['name']; } sort($exists); $this->assertEqual( array('empty', 'notempty'), $exists ); $clock = $results['clock']; unlink("$root/empty"); // Wait for change to be observed $this->assertFileList($root, array( 'notempty' )); $results = $this->watchmanCommand('query', $root, array( 'expression' => 'exists' )); $this->assertEqual( 'notempty', $results['files'][0]['name'] ); // "files that don't exist" without a since term is absurd, so pass that in $results = $this->watchmanCommand('query', $root, array( 'since' => $clock, 'expression' => array('not', 'exists') )); $this->assertEqual( 'empty', $results['files'][0]['name'] ); } } watchman-4.9.0/tests/integration/fields.php000066400000000000000000000063101314236077500210020ustar00rootroot00000000000000assertEqual($expected, $actual, "seconds"); $this->assertEqual("$actual", $this->divideTimeBy1000($actual_ms), "ms"); $this->assertEqual("$actual_ms", $this->divideTimeBy1000($actual_us), "us"); $this->assertEqual("$actual_us", $this->divideTimeBy1000($actual_ns), "ns"); // Can't (int) cast because that yields bogus results on win32 php $this->assertEqual("$actual_ms", stringy_intval($actual_f * 1000), "float"); } function testFields() { $dir = new WatchmanDirectoryFixture(); $root = $dir->getPath(); $watch = $this->watch($root); $this->assertFileList($root, array()); $this->watchmanCommand('log', 'debug', 'XXX: touch a'); touch("$root/a"); $this->assertFileList($root, array('a')); $query = $this->watchmanCommand('query', $root, array( 'fields' => array('name', 'exists', 'new', 'size', 'mode', 'uid', 'gid', 'mtime', 'mtime_ms', 'mtime_us', 'mtime_ns', 'mtime_f', 'ctime', 'ctime_ms', 'ctime_us', 'ctime_ns', 'ctime_f', 'ino', 'dev', 'nlink', 'oclock', 'cclock'), 'since' => 'n:foo')); $this->assertEqual(null, idx($query, 'error')); $this->assertEqual(1, count($query['files'])); $file = $query['files'][0]; $this->assertEqual('a', $file['name']); $this->assertEqual(true, $file['exists']); $this->assertEqual(true, $file['new']); $stat = stat("$root/a"); $compare_fields = array('size', 'mode', 'uid', 'gid', 'nlink'); if (!phutil_is_windows()) { // These are meaningless in msvcrt, so no sense in comparing them $compare_fields[] = 'dev'; $compare_fields[] = 'ino'; } foreach ($compare_fields as $field) { $this->assertEqual($stat[$field], $file[$field], $field); } $time_fields = array('mtime', 'ctime'); foreach ($time_fields as $field) { $this->assertTimeEqual($stat[$field], $file[$field], $file[$field . '_ms'], $file[$field . '_us'], $file[$field . '_ns'], $file[$field . '_f']); } $this->assertRegex('/^c:\d+:\d+:\d+:\d+$/', $file['cclock'], "cclock looks clocky"); $this->assertRegex('/^c:\d+:\d+:\d+:\d+$/', $file['oclock'], "oclock looks clocky"); } } watchman-4.9.0/tests/integration/fishy.php000066400000000000000000000016311314236077500206570ustar00rootroot00000000000000assertSkipped("simple ln -s without admin on windows"); } $dir = new WatchmanDirectoryFixture(); $root = $dir->getPath(); mkdir("$root/foo"); touch("$root/foo/a"); $watch = $this->watch($root); $base = $this->watchmanCommand('find', $root, '.'); // This is "c:PID:1" because nothing has changed in $root yet $clock = $base['clock']; $this->suspendWatchman(); system( "cd $root; ". "mv foo bar; ". "ln -s bar foo" ); $this->resumeWatchman(); $this->assertFileListUsingSince($root, $clock, array( 'bar', 'bar/a', 'foo' ) ); } } watchman-4.9.0/tests/integration/ignore.php000066400000000000000000000051001314236077500210130ustar00rootroot00000000000000getPath(); mkdir("$root/.git"); mkdir("$root/.git/objects"); mkdir("$root/.git/objects/pack"); touch("$root/foo"); $this->watch($root); // prove that we don't see pack in .git as we crawl $this->assertFileList($root, array( '.git', '.git/objects', 'foo' )); // And prove that we aren't watching deeply under .git touch("$root/.git/objects/dontlookatme"); $this->assertFileList($root, array( '.git', '.git/objects', 'foo' )); } function testInvalidIgnore() { $dir = new WatchmanDirectoryFixture(); $root = $dir->getPath(); $bad = array( array('ignore_vcs' => 'lemon'), array('ignore_vcs' => array('foo', 123)) ); foreach ($bad as $cfg) { file_put_contents("$root/.watchmanconfig", json_encode($cfg)); $res = $this->watch($root, false); $this->assertRegex( "/unable to resolve root .*: ignore_vcs must be an array of strings/", idx($res, 'error') ); } } function testIgnoreOverlapVCSIgnore() { $dir = new WatchmanDirectoryFixture(); $root = $dir->getPath(); $cfg = array( 'ignore_dirs' => array('.hg'), ); file_put_contents("$root/.watchmanconfig", json_encode($cfg)); mkdir("$root/.hg"); $this->watch($root); $this->assertFileList($root, array('.watchmanconfig')); touch("$root/foo"); $this->assertFileList($root, array('.watchmanconfig', 'foo')); } function testIgnoreGeneric() { $dir = new WatchmanDirectoryFixture(); $root = $dir->getPath(); $cfg = array( 'ignore_dirs' => array('build') ); file_put_contents("$root/.watchmanconfig", json_encode($cfg)); mkdir("$root/build"); mkdir("$root/build/lower"); mkdir("$root/builda"); touch("$root/foo"); touch("$root/build/bar"); touch("$root/buildfile"); touch("$root/build/lower/baz"); touch("$root/builda/hello"); $this->watch($root); $this->assertFileList($root, array( '.watchmanconfig', 'builda', 'builda/hello', 'buildfile', 'foo', )); touch("$root/build/lower/dontlookatme"); touch("$root/build/orme"); touch("$root/buil"); $this->assertFileList($root, array( '.watchmanconfig', 'buil', 'builda', 'builda/hello', 'buildfile', 'foo', )); } } watchman-4.9.0/tests/integration/info.php000066400000000000000000000016621314236077500204740ustar00rootroot00000000000000watchmanCommand('get-sockname'); $this->assertEqual($resp['sockname'], $this->watchman_instance->getFullSockName()); } function testGetConfigEmpty() { $dir = new WatchmanDirectoryFixture(); $root = $dir->getPath(); $this->watch($root); $res = $this->watchmanCommand('get-config', $root); $this->assertEqual(array(), $res['config']); } function testGetConfig() { $dir = new WatchmanDirectoryFixture(); $root = $dir->getPath(); $cfg = array( 'test-key' => 'test-value', ); file_put_contents("$root/.watchmanconfig", json_encode($cfg)); $this->watch($root); $res = $this->watchmanCommand('get-config', $root); $this->assertEqual($cfg, $res['config']); } } watchman-4.9.0/tests/integration/invalidexpr.php000066400000000000000000000025241314236077500220640ustar00rootroot00000000000000getPath(); $this->watch($root); $results = $this->watchmanCommand('query', $root, array( 'expression' => array( 'allof', 'dont-implement-this-term', array( 'anyof', array( 'suffix', 'apcarc' ) ) ) )); $this->assertEqual( "failed to parse query: unknown expression term ". "'dont-implement-this-term'", $results['error'] ); } function testInvalidSyncTimeout() { $dir = new WatchmanDirectoryFixture(); $root = $dir->getPath(); $this->watch($root); $results = $this->watchmanCommand('query', $root, array( 'expression' => array( 'exists', ), 'sync_timeout' => -1, )); $this->assertEqual( "failed to parse query: sync_timeout must be an integer value >= 0", $results['error'] ); $results = $this->watchmanCommand('query', $root, array( 'expression' => array( 'exists', ), 'sync_timeout' => 200, )); $this->assertEqual(array(), $results['files'], "parsed sync_timeout"); } } watchman-4.9.0/tests/integration/modified.php000066400000000000000000000017241314236077500213200ustar00rootroot00000000000000getPath(); mkdir("$root/foo"); touch("$root/foo/111"); $watch = $this->watch($root); $this->watchmanCommand('subscribe', $root, 'test', array( 'fields' => array('name'), 'expression' => array('type', 'f'), ) ); $this->waitForSub('test', function($data) { return true; }); $this->getSubData('test'); $this->watchmanCommand('log', 'error', 'XXX: touch foo/111'); touch("$root/foo/111"); $this->waitForSub('test', function($data) { return true; }); list($sub) = $this->getSubData('test'); $this->assertEqualFileList(array("foo/111"), $sub['files']); $this->watchmanCommand('unsubscribe', $root, 'test'); } } watchman-4.9.0/tests/integration/moremoves.php000066400000000000000000000032031314236077500215460ustar00rootroot00000000000000assertSkipped("no unix userland on windows"); } $dir = new WatchmanDirectoryFixture(); $root = $dir->getPath(); $watch = $this->watch($root); $base = $this->watchmanCommand('find', $root, '.'); // This is "c:PID:1" because nothing has changed in $root yet $clock = $base['clock']; $this->suspendWatchman(); system( "cd $root; touch a; mkdir d1 d2 ; ". "mv d1 d2 ; mv d2/d1 . ; mv a d1" ); $this->resumeWatchman(); $this->assertFileListUsingSince($root, $clock, array( 'd1', 'd1/a', 'd2' ) ); } function testEvenMoreMoves() { if (phutil_is_windows()) { $this->assertSkipped("no unix userland on windows"); } $dir = new WatchmanDirectoryFixture(); $root = $dir->getPath(); $watch = $this->watch($root); $base = $this->watchmanCommand('find', $root, '.'); // This is "c:PID:1" because nothing has changed in $root yet $clock = $base['clock']; // TODO: this should work even if Watchman is suspended. Investigate failure // on Travis. system( "cd $root; ". "mkdir d1 d2; ". "touch d1/a; ". "mkdir d3; ". "mv d1 d2 d3; ". "mv d3/* .; ". "mv d1 d2 d3; ". "mv d3/* .; ". "mv d1/a d2; " ); $this->assertFileListUsingSince($root, $clock, array( 'd1', 'd2', 'd2/a', 'd3' ) ); } } watchman-4.9.0/tests/integration/movereadd.php000066400000000000000000000037551314236077500215140ustar00rootroot00000000000000assertSkipped('openvz and inotify unlinks == bad time'); } $dir = new WatchmanDirectoryFixture(); $root = $dir->getPath(); mkdir("$root/foo"); $watch = $this->watch($root); $this->assertFileListUsingSince($root, 'n:foo', array( 'foo' ), array( 'foo' ) ); $this->watchmanCommand('log', 'debug', 'XXX: touch foo/222'); touch("$root/foo/222"); $this->assertFileListUsingSince($root, 'n:foo', array( 'foo', 'foo/222', ), array( 'foo/222' ) ); $this->watchmanCommand('log', 'debug', 'XXX: mkdir foo/bar'); mkdir("$root/foo/bar"); $since = array('foo/bar'); if (in_array($watch['watcher'], array('portfs', 'kqueue'))) { // the parent dir reflects as changed when we mkdir within it array_unshift($since, 'foo'); } $this->assertFileListUsingSince($root, 'n:foo', array( 'foo', 'foo/222', 'foo/bar', ), $since ); $this->watchmanCommand('log', 'debug', 'XXX: rmdir foo/bar'); w_rmdir_recursive("$root/foo/bar"); $this->watchmanCommand('log', 'debug', 'XXX: unlink foo/222'); unlink("$root/foo/222"); $this->watchmanCommand('log', 'debug', 'XXX: rmdir foo'); w_rmdir_recursive("$root/foo"); $this->assertFileListUsingSince($root, 'n:foo', array( ), array( ) ); $this->watchmanCommand('log', 'debug', 'XXX: mkdir foo'); mkdir("$root/foo"); $this->watchmanCommand('log', 'debug', 'XXX: touch foo/222'); touch("$root/foo/222"); $this->assertFileListUsingSince($root, 'n:foo', array( "foo", "foo/222", ), array( "foo", "foo/222", ) ); } } watchman-4.9.0/tests/integration/name.php000066400000000000000000000072521314236077500204620ustar00rootroot00000000000000getPath(); touch("$root/foo.c"); mkdir("$root/subdir"); touch("$root/subdir/bar.txt"); $this->watch($root); $res = $this->watchmanCommand('query', $root, array( 'expression' => array('iname', 'FOO.c'), 'fields' => array('name'), )); $this->assertEqualFileList(array('foo.c'), $res['files']); $res = $this->watchmanCommand('query', $root, array( 'expression' => array('iname', array('FOO.c', 'INVALID.txt')), 'fields' => array('name'), )); $this->assertEqualFileList(array('foo.c'), $res['files']); $res = $this->watchmanCommand('query', $root, array( 'expression' => array('name', 'foo.c'), 'fields' => array('name'), )); $this->assertEqualFileList(array('foo.c'), $res['files']); $res = $this->watchmanCommand('query', $root, array( 'expression' => array('name', array('foo.c', 'invalid')), 'fields' => array('name'), )); $this->assertEqualFileList(array('foo.c'), $res['files']); $res = $this->watchmanCommand('query', $root, array( 'expression' => array('name', 'foo.c', 'wholename'), 'fields' => array('name'), )); $this->assertEqualFileList(array('foo.c'), $res['files']); if ($this->isCaseInsensitive()) { $res = $this->watchmanCommand('query', $root, array( 'expression' => array('name', 'Foo.c', 'wholename'), 'fields' => array('name'), )); $this->assertEqualFileList(array('foo.c'), $res['files']); } $res = $this->watchmanCommand('query', $root, array( 'expression' => array('name', 'bar.txt', 'wholename'), 'fields' => array('name'), )); $this->assertEqualFileList(array(), $res['files']); $res = $this->watchmanCommand('query', $root, array( 'relative_root' => 'subdir', 'expression' => array('name', 'bar.txt', 'wholename'), 'fields' => array('name'), )); $this->assertEqualFileList(array('bar.txt'), $res['files']); // foo.c is not in subdir directory so this shouldn't match $res = $this->watchmanCommand('query', $root, array( 'relative_root' => 'subdir', 'expression' => array('name', 'foo.c', 'wholename'), 'fields' => array('name'), )); $this->assertEqual(array(), $res['files']); $res = $this->watchmanCommand('query', $root, array( 'expression' => 'name', )); $this->assertRegex( "/failed to parse query: Expected array for 'i?name' term/", $res['error'] ); $res = $this->watchmanCommand('query', $root, array( 'expression' => array('name', 'one', 'two', 'three'), )); $this->assertRegex( "/failed to parse query: Invalid number of arguments for 'i?name' term/", $res['error'] ); $res = $this->watchmanCommand('query', $root, array( 'expression' => array('name', 2), )); $this->assertRegex( "/failed to parse query: Argument 2 to 'i?name' must be either ". "a string or an array of string/", $res['error'] ); $res = $this->watchmanCommand('query', $root, array( 'expression' => array('name', 'one', 2), )); $this->assertRegex( "/failed to parse query: Argument 3 to 'i?name' must be a string/", $res['error'] ); $res = $this->watchmanCommand('query', $root, array( 'expression' => array('name', 'one', 'invalid'), )); $this->assertRegex( "/failed to parse query: Invalid scope 'invalid' for i?name expression/", $res['error'] ); } } watchman-4.9.0/tests/integration/node_basic.js000066400000000000000000000007571314236077500214600ustar00rootroot00000000000000var assert = require('assert'); var watchman = require('fb-watchman'); var client = new watchman.Client(); var t = setTimeout(function () { assert.fail('timeout', null, 'timed out running test'); }, 10000); client.on('error', function(error) { assert.fail(error, null, 'unexpected error'); }); client.command(['version'], function(error, resp) { assert.equal(error, null, 'no errors'); console.log('Talking to watchman version', resp.version); client.end(); clearTimeout(t); }); watchman-4.9.0/tests/integration/othercookies.php000066400000000000000000000025471314236077500222420ustar00rootroot00000000000000getPath(); mkdir("$root/.git"); $watch = $this->watch($root); $host = gethostname(); $pid = $this->watchman_instance->getProcessID(); $this->assertFileList($root, array('.git')); $this->assertEqual(true, mkdir("$root/foo")); // Same process, same watch $this->assertEqual(true, touch("$root/.git/.watchman-cookie-$host-$pid-100000")); $diff_cookies = array( // Same process, different watch root "foo/.watchman-cookie-$host-$pid-100000", // Same process, root dir instead of VCS dir ".watchman-cookie-$host-$pid-100000", // Different process, same watch root ".git/.watchman-cookie-$host-1-100000", // Different process, root dir instead of VCS dir ".watchman-cookie-$host-1-100000", // Different process, different watch root "foo/.watchman-cookie-$host-1-100000", ); foreach ($diff_cookies as $cookie) { $this->assertEqual(true, touch("$root/$cookie")); } $this->assertFileList($root, array_merge(array('foo', '.git'), $diff_cookies)); } } watchman-4.9.0/tests/integration/path_utils.py000066400000000000000000000053231314236077500215540ustar00rootroot00000000000000from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import os.path import os import platform import ctypes from pywatchman import compat if os.name == 'nt': def open_file_win(path): create_file = ctypes.windll.kernel32.CreateFileW c_path = ctypes.create_unicode_buffer(path) access = 0 mode = 7 # FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE disposition = 3 # OPEN_EXISTING flags = 33554432 # FILE_FLAG_BACKUP_SEMANTICS h = create_file(c_path, access, mode, 0, disposition, flags, 0) if h == -1: raise WindowsError("Failed to open file: " + path) return h def get_canonical_filesystem_path(name): gfpnbh = ctypes.windll.kernel32.GetFinalPathNameByHandleW close_handle = ctypes.windll.kernel32.CloseHandle h = open_file_win(name) try: gfpnbh = ctypes.windll.kernel32.GetFinalPathNameByHandleW numwchars = 1024 while True: buf = ctypes.create_unicode_buffer(numwchars) result = gfpnbh(h, buf, numwchars, 0) if result == 0: raise Exception("unknown error while normalizing path") # The first four chars are //?/ if result <= numwchars: return buf.value[4:].replace('\\', '/').encode('utf8') # Not big enough; the result is the amount we need numwchars = result + 1 finally: close_handle(h) elif platform.system() == 'Darwin': import ctypes.util F_GETPATH = 50 libc = ctypes.CDLL(ctypes.util.find_library('c'), use_errno=True) getpath_fcntl = libc.fcntl getpath_fcntl.argtypes = [ctypes.c_int, ctypes.c_int, ctypes.c_char_p] getpath_fcntl.restype = ctypes.c_int def get_canonical_filesystem_path(name): fd = os.open(name, os.O_RDONLY, 0) try: numchars = 1024 # MAXPATHLEN # The kernel caps this routine to MAXPATHLEN, so there is no # point in over-allocating or trying again with a larger buffer buf = ctypes.create_string_buffer(numchars) ctypes.set_errno(0) result = getpath_fcntl(fd, F_GETPATH, buf) if result != 0: raise OSError(ctypes.get_errno()) # buf is a bytes buffer, so normalize it if necessary ret = buf.value if isinstance(name, compat.UNICODE): ret = os.fsdecode(ret) return ret finally: os.close(fd) else: def get_canonical_filesystem_path(name): return os.path.normpath(name) watchman-4.9.0/tests/integration/pathgen.php000066400000000000000000000045231314236077500211660ustar00rootroot00000000000000getPath(); $this->watch($root); $results = $this->watchmanCommand('query', $root, array( 'path' => array('.'), )); // Assert that we didn't crash $this->assertEqual(array(), $results['files']); $results = $this->watchmanCommand('query', $root, array( 'relative_root' => '.', 'path' => array('.'), )); // Assert that we didn't crash $this->assertEqual(array(), $results['files']); } function testPathGeneratorCase() { $dir = new WatchmanDirectoryFixture(); $root = $dir->getPath(); mkdir("$root/foo"); touch("$root/foo/bar"); $this->watch($root); $results = $this->watchmanCommand('query', $root, array( 'path' => array('foo'), 'fields' => array('name'), )); $this->assertEqualFileList(array('foo/bar'), $results['files']); if ($this->isCaseInsensitive()) { rename("$root/foo", "$root/Foo"); $results = $this->watchmanCommand('query', $root, array( 'path' => array('foo'), // Note case difference 'fields' => array('name'), )); // Note: no matches. We don't currently support case insensitive // matching in the path generator $this->assertEqual(array(), $results['files']); } } function testPathGeneratorRelativeRoot() { $dir = new WatchmanDirectoryFixture(); $root = realpath($dir->getPath()); touch("$root/a"); mkdir("$root/foo"); touch("$root/foo/bar"); $this->watch($root); $results = $this->watchmanCommand('query', $root, array( 'relative_root' => 'foo', 'path' => array('bar'), 'fields' => array('name'), )); $this->assertEqual(array('bar'), $results['files']); if ($this->isCaseInsensitive()) { rename("$root/foo", "$root/Foo"); $results = $this->watchmanCommand('query', $root, array( 'relative_root' => 'foo', 'path' => array('bar'), 'fields' => array('name'), )); // Note: no matches. We don't currently support case insensitive matching // for relative_root $this->assertEqual(array(), $results['files']); } } } watchman-4.9.0/tests/integration/phprunner000066400000000000000000000043231314236077500207710ustar00rootroot00000000000000isSubclassOf('WatchmanTestCase')) { continue; } // Good enough; let's use it $test_case = new $name(); $test_case->setRoot($root); $config = $test_case->getGlobalConfig(); if ($config) { $instance = new WatchmanInstance($root, false, $config); $instances[] = $instance; } else { $instance = $first_inst; } $test_case->setWatchmanInstance($instance); if (!$instance->getProcessID()) { try { $test_case->fail('watchman instance died before test started'); } catch (Exception $e) { } break; } $test_case->setRoot($root); $test_case->run(); } printf("1..%d\n", WatchmanTestCase::$test_number - 1); exit(0); // vim:ts=2:sw=2:et:ft=php: watchman-4.9.0/tests/integration/remove.php000066400000000000000000000035401314236077500210330ustar00rootroot00000000000000getPath(); mkdir("$root/one"); touch("$root/one/onefile"); mkdir("$root/one/two"); touch("$root/one/two/twofile"); touch("$root/top"); $this->watch($root); $this->assertFileList($root, array( 'one', 'one/onefile', 'one/two', 'one/two/twofile', 'top' )); $this->watchmanCommand('log', 'debug', 'XXX: remove dir one'); w_rmdir_recursive("$root/one"); $this->assertFileList($root, array( 'top' )); $this->watchmanCommand('log', 'debug', 'XXX: touch file one'); touch("$root/one"); $this->assertFileList($root, array( 'one', 'top' )); $this->watchmanCommand('log', 'debug', 'XXX: unlink file one'); unlink("$root/one"); $this->assertFileList($root, array( 'top' )); if (phutil_is_windows()) { // This looks so fugly system("rd /s /q $root"); for ($i = 0; $i < 10; $i++) { if (!is_dir($root)) { break; } usleep(20000); } for ($i = 0; $i < 10; $i++) { if (@mkdir("$root")) { break; } usleep(20000); } @mkdir("$root/notme"); } else { system("rm -rf $root ; mkdir -p $root/notme"); } if (PHP_OS == 'Linux' && getenv('TRAVIS')) { $this->assertSkipped('openvz and inotify unlinks == bad time'); } $watches = $this->waitForWatchman( array('watch-list'), function ($list) use ($root) { return !in_array($root, $list['roots']); } ); $this->assertEqual( false, in_array($root, $watches['roots']), "watch deleted" ); } } watchman-4.9.0/tests/integration/rmroot.php000066400000000000000000000023111314236077500210530ustar00rootroot00000000000000assertSkipped('openvz and inotify unlinks == bad time'); } $dir = new WatchmanDirectoryFixture(); $top = $dir->getPath(); $root = $top.DIRECTORY_SEPARATOR."root"; mkdir($root); touch("$root/hello"); $this->watch($root); $this->assertFileList($root, array('hello')); w_rmdir_recursive($root); $this->assertFileList($root, array()); $watches = $this->waitForWatchman( array('watch-list'), function ($list) use ($root) { return !in_array($root, $list['roots']); } ); $this->assertEqual( false, in_array($root, $watches['roots']), "watch deleted" ); // Really need to ensure that we mkdir, otherwise the $dir fixture // will throw when the scope unwinds $this->waitFor( function () use ($root) { return @mkdir($root); }, 10, "mkdir($root) to succeed" ); touch("$root/hello"); $this->assertFileList($root, array()); } } watchman-4.9.0/tests/integration/since-term.php000066400000000000000000000073011314236077500216030ustar00rootroot00000000000000getPath(); touch("$root/foo.c"); mkdir("$root/subdir"); touch("$root/subdir/bar.txt"); $this->watch($root); $this->assertFileList($root, array( 'foo.c', 'subdir', 'subdir/bar.txt' )); $foo_data = $this->watchmanCommand('find', $root, 'foo.c'); $first_clock = $foo_data['clock']; $foo_data = $foo_data['files'][0]; $base = $foo_data['mtime']; // since is GT, not GTE $res = $this->watchmanCommand('query', $root, array( 'expression' => array('since', $base, 'mtime'), 'fields' => array('name'), )); $this->assertEqualFileList(array("foo.c", "subdir", "subdir/bar.txt"), $res['files']); $res = $this->watchmanCommand('query', $root, array( 'expression' => array( 'allof', array('since', $base - 1, 'mtime'), array('name', 'foo.c'), ), 'fields' => array('name'), )); $this->assertEqualFileList(array('foo.c'), $res['files']); if ($this->isCaseInsensitive()) { $res = $this->watchmanCommand('query', $root, array( 'expression' => array( 'allof', array('since', $base - 1, 'mtime'), array('name', 'FOO.C'), ), 'fields' => array('name'), )); $this->assertEqualFileList(array('foo.c'), $res['files']); } // try with a clock $res = $this->watchmanCommand('query', $root, array( 'expression' => array('since', $first_clock), 'fields' => array('name'), )); $this->assertEqualFileList(array(), $res['files']); $target = $base + 15; touch("$root/foo.c", $target); $foo_data = $this->watchmanCommand('find', $root, 'foo.c'); $foo_data = $foo_data['files'][0]; // try again with a clock $res = $this->watchmanCommand('query', $root, array( 'expression' => array('since', $first_clock), 'fields' => array('name'), )); $this->assertEqualFileList(array('foo.c'), $res['files']); $res = $this->watchmanCommand('query', $root, array( 'expression' => array('since', $foo_data['mtime'], 'mtime'), 'fields' => array('name'), )); $this->assertEqualFileList(array('foo.c'), $res['files']); $res = $this->watchmanCommand('query', $root, array( 'expression' => array( 'allof', array('since', $base, 'mtime'), array('name', 'foo.c'), ), 'fields' => array('name'), )); $this->assertEqualFileList(array('foo.c'), $res['files']); // If using a timestamp against the oclock, ensure that // we're comparing in the correct order. We need to force // a 2 second sleep here so that the timestamp moves forward // by at least 1 increment for this test to work correctly sleep(2); $res = $this->watchmanCommand('query', $root, array( 'expression' => array( 'allof', array('since', time()), array('name', 'foo.c'), ), 'fields' => array('name'), )); // Should see no changes since the now current timestamp $this->assertEqualFileList(array(), $res['files']); // try with a fresh clock instance -- make sure that this only returns // files that exist unlink("$root/subdir/bar.txt"); $res = $this->watchmanCommand('query', $root, array( 'expression' => array('since', 'c:1:1'), 'fields' => array('name') )); $files = $res['files']; sort($files); $this->assertEqualFileList(array('foo.c', 'subdir'), $files); } } // vim:ts=2:sw=2:et: watchman-4.9.0/tests/integration/site_spawn.py000077500000000000000000000005601314236077500215550ustar00rootroot00000000000000#!/usr/bin/env python # This is a simple script that spawns a watchman process in the background from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import os import sys import subprocess args = sys.argv[1:] args.insert(0, 'watchman') args.insert(1, '--foreground') subprocess.Popen(args) watchman-4.9.0/tests/integration/site_spawn_fail.py000077500000000000000000000004231314236077500225460ustar00rootroot00000000000000#!/usr/bin/env python # This is a simple script that fails to spawn a process in the background from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import sys print('failed to start') sys.exit(1) watchman-4.9.0/tests/integration/size.php000066400000000000000000000027341314236077500205140ustar00rootroot00000000000000getPath()); touch("$root/empty"); file_put_contents("$root/notempty", "foo"); $fp = fopen("$root/1k", "w"); ftruncate($fp, 1024); fclose($fp); $this->watch($root); $tests = array( array('eq', 0, array('empty')), array('ne', 0, array('1k', 'notempty')), array('gt', 0, array('1k', 'notempty')), array('gt', 2, array('1k', 'notempty')), array('ge', 3, array('1k', 'notempty')), array('gt', 3, array('1k')), array('le', 3, array('empty', 'notempty')), array('lt', 3, array('empty')), ); foreach ($tests as $tdata) { list ($op, $operand, $expect) = $tdata; $results = $this->watchmanCommand('query', $root, array( 'expression' => array( 'size', $op, $operand ), 'fields' => array('name'), )); $files = $results['files']; sort($files); $this->assertEqual($expect, $files, json_encode($tdata)); } unlink("$root/1k"); $results = $this->watchmanCommand('query', $root, array( 'expression' => array( 'size', 'gt', 100 ), 'fields' => array('name'), )); $files = $results['files']; $this->assertEqual(array(), $results['files'], 'removed file'); } } watchman-4.9.0/tests/integration/suffix.php000066400000000000000000000015171314236077500210440ustar00rootroot00000000000000getPath(); touch("$root/foo.c"); mkdir("$root/subdir"); touch("$root/subdir/bar.txt"); $this->watch($root); $res = $this->watchmanCommand('query', $root, array( 'expression' => array('suffix', 'c'), 'fields' => array('name'), )); $this->assertEqual(array('foo.c'), $res['files']); $res = $this->watchmanCommand('query', $root, array( 'expression' => 'suffix', 'fields' => array('name'), )); $this->assertEqual( 'failed to parse query: must use ["suffix", "suffixstring"]', $res['error'] ); } } // vim:ts=2:sw=2:et: watchman-4.9.0/tests/integration/suffixgenerator.php000066400000000000000000000026651314236077500227600ustar00rootroot00000000000000getPath(); touch("$root/foo.c"); mkdir("$root/subdir"); touch("$root/subdir/bar.txt"); $this->watch($root); $res = $this->watchmanCommand('query', $root, array( 'expression' => array('true'), 'fields' => array('name'), 'suffix' => 'c' )); $this->assertEqual(array('foo.c'), $res['files']); $res = $this->watchmanCommand('query', $root, array( 'expression' => array('true'), 'fields' => array('name'), 'suffix' => array('c','txt') )); $this->assertEqualFileList(array('foo.c', 'subdir/bar.txt'), $res['files']); $res = $this->watchmanCommand('query', $root, array( 'expression' => array('true'), 'fields' => array('name'), 'suffix' => array('c', 'txt'), 'relative_root' => 'subdir', )); $this->assertEqualFileList(array('bar.txt'), $res['files']); $res = $this->watchmanCommand('query', $root, array( 'expression' => array('true'), 'fields' => array('name'), 'suffix' => array('a' => 'b') )); $this->assertEqual( 'failed to parse query: \'suffix\' must be a '. 'string or an array of strings', $res['error'] ); } } // vim:ts=2:sw=2:et: watchman-4.9.0/tests/integration/test_absroot.py000066400000000000000000000023541314236077500221110ustar00rootroot00000000000000# vim:ts=4:sw=4:et: # Copyright 2014-present Facebook, Inc. # Licensed under the Apache License, Version 2.0 from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import WatchmanTestCase import os import os.path import pywatchman @WatchmanTestCase.expand_matrix class TestAbsoluteRoot(WatchmanTestCase.WatchmanTestCase): def test_dot(self): root = self.mkdtemp() save_dir = os.getcwd() try: os.chdir(root) dot = '' if os.name == 'nt' else '.' if self.transport == 'cli': res = self.watchmanCommand('watch', dot) self.assertEqual(root, self.normAbsolutePath(res['watch'])) else: with self.assertRaises(pywatchman.WatchmanError) as ctx: self.watchmanCommand('watch', dot) self.assertIn('must be absolute', str(ctx.exception)) finally: os.chdir(save_dir) def test_root(self): if os.name != 'nt': with self.assertRaises(pywatchman.WatchmanError) as ctx: self.watchmanCommand('watch', '/') self.assertIn('cannot watch', str(ctx.exception)) watchman-4.9.0/tests/integration/test_age_file.py000066400000000000000000000065331314236077500221760ustar00rootroot00000000000000# vim:ts=4:sw=4:et: # Copyright 2012-present Facebook, Inc. # Licensed under the Apache License, Version 2.0 from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import WatchmanTestCase import os import os.path import shutil @WatchmanTestCase.expand_matrix class TestAgeOutFile(WatchmanTestCase.WatchmanTestCase): def test_age_file(self): root = self.mkdtemp() os.mkdir(os.path.join(root, 'a')) self.touchRelative(root, 'a', 'file.txt') self.touchRelative(root, 'b.txt') self.watchmanCommand('watch', root) self.assertFileList(root, ['a', 'a/file.txt', 'b.txt']) res = self.watchmanCommand( 'query', root, {'fields': ['name', 'exists']} ) self.assertTrue(res['is_fresh_instance']) clock = res['clock'] # Removing file nodes also impacts the suffix list, so we test # that it is operating as intended in here too res = self.watchmanCommand( 'query', root, { 'expression': ['suffix', 'txt'], 'fields': ['name'] } ) self.assertFileListsEqual(res['files'], ['a/file.txt', 'b.txt']) # Let's track a named cursor; we need to validate that it is # correctly aged out self.watchmanCommand('since', root, 'n:foo') cursors = self.watchmanCommand('debug-show-cursors', root) self.assertTrue('n:foo' in cursors['cursors']) os.unlink(os.path.join(root, 'a', 'file.txt')) shutil.rmtree(os.path.join(root, 'a')) self.assertFileList(root, ['b.txt']) # Prune all deleted items self.watchmanCommand('debug-ageout', root, 0) # Wait for 'a' to age out and cause is_fresh_instance to be set def is_fresh(): res = self.watchmanCommand( 'query', root, { 'since': clock, 'fields': ['name', 'exists'] } ) return res.get('is_fresh_instance', False) self.waitFor(lambda: is_fresh()) self.assertFileList(root, ['b.txt'], cursor=clock) # Our cursor should have been collected cursors = self.watchmanCommand('debug-show-cursors', root) self.assertFalse('n:foo' in cursors['cursors']) # Add a new file to the suffix list; this will insert at the head self.touchRelative(root, 'c.txt') # Suffix quere to very that linkage is safe res = self.watchmanCommand( 'query', root, { 'expression': ['suffix', 'txt'], 'fields': ['name'] } ) self.assertFileListsEqual( ['b.txt', 'c.txt'], self.normFileList(res['files']) ) # Stress the aging a bit for i in range(3): os.mkdir(os.path.join(root, 'dir')) for j in range(100): self.touchRelative(root, 'stress-%d' % j) self.touchRelative(root, 'dir', str(j)) for j in range(100): os.unlink(os.path.join(root, 'stress-%d' % j)) shutil.rmtree(os.path.join(root, 'dir')) self.assertFileList(root, ['b.txt', 'c.txt']) self.watchmanCommand('debug-ageout', root, 0) self.assertFileList(root, ['b.txt', 'c.txt']) watchman-4.9.0/tests/integration/test_age_watch.py000066400000000000000000000040621314236077500223600ustar00rootroot00000000000000# vim:ts=4:sw=4:et: # Copyright 2012-present Facebook, Inc. # Licensed under the Apache License, Version 2.0 from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import WatchmanTestCase import tempfile import os import os.path import time import json @WatchmanTestCase.expand_matrix class TestAgeOutWatch(WatchmanTestCase.WatchmanTestCase): def makeRootAndConfig(self): root = self.mkdtemp() with open(os.path.join(root, '.watchmanconfig'), 'w') as f: f.write(json.dumps({ 'idle_reap_age_seconds': 1 })) return root def test_watchReap(self): root = self.makeRootAndConfig() self.watchmanCommand('watch', root) # make sure that we don't reap when there are registered triggers self.watchmanCommand('trigger', root, { 'name': 't', 'command': ['true']}) # wait long enough for the reap to be considered time.sleep(2) self.assertTrue(self.rootIsWatched(root)) self.watchmanCommand('trigger-del', root, 't') # Make sure that we don't reap while we hold a subscription self.watchmanCommand('subscribe', root, 's', {'fields': ['name']}) # subscription won't stick in cli mode if self.transport != 'cli': self.assertWaitFor(lambda: self.rootIsWatched(root)) # let's verify that we can safely reap two roots at once without # causing a deadlock second = self.makeRootAndConfig() self.watchmanCommand('watch', second) self.assertFileList(second, ['.watchmanconfig']) # and unsubscribe from root and allow it to be reaped unsub = self.watchmanCommand('unsubscribe', root, 's') self.assertTrue(unsub['deleted'], 'deleted subscription %s' % unsub) # and now we should be ready to reap self.assertWaitFor(lambda: not self.rootIsWatched( root) and not self.rootIsWatched(second)) watchman-4.9.0/tests/integration/test_auth.py000066400000000000000000000024031314236077500213740ustar00rootroot00000000000000# vim:ts=4:sw=4:et: # Copyright 2016-present Facebook, Inc. # Licensed under the Apache License, Version 2.0 from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import WatchmanTestCase import pywatchman @WatchmanTestCase.expand_matrix class TestAuth(WatchmanTestCase.WatchmanTestCase): def requiresPersistentSession(self): return True def test_dropPriv(self): root = self.mkdtemp() self.touchRelative(root, '111') self.watchmanCommand('watch', root) # pretend we are not the owner self.watchmanCommand('debug-drop-privs') # Should be able to watch something that is already watched self.watchmanCommand('watch', root) # can't make a new watch altroot = self.mkdtemp() with self.assertRaises(pywatchman.WatchmanError): self.watchmanCommand('watch', altroot) # Should not be able to delete a watch with self.assertRaises(pywatchman.WatchmanError): self.watchmanCommand('watch-del', root) # or register a trigger with self.assertRaises(pywatchman.WatchmanError): self.watchmanCommand('trigger', root, 'trig', '*.js', '--', 'false') watchman-4.9.0/tests/integration/test_big.py000066400000000000000000000030021314236077500211700ustar00rootroot00000000000000# vim:ts=4:sw=4:et: # Copyright 2017-present Facebook, Inc. # Licensed under the Apache License, Version 2.0 from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import WatchmanTestCase import os import pywatchman @WatchmanTestCase.expand_matrix class TestBig(WatchmanTestCase.WatchmanTestCase): def checkOSApplicability(self): if os.name == 'nt': self.skipTest('Windows has problems with this test') def test_bigQuery(self): root = self.mkdtemp() self.watchmanCommand('watch', root) # Create a huge query. We're shooting for more than 2MB; # the server buffer size is 1MB and we want to make sure # we need more than 2 chunks, and we want to tickle some # buffer boundary conditions base = 2 * 1024 * 1024 for size in range(base - 256, base + 2048, 63): try: res = self.watchmanCommand('query', root, { 'expression': ['name', 'a' * size]}) self.assertEqual([], res['files']) except pywatchman.WatchmanError as e: # We don't want to print the real command, as # it is too long, instead, replace it with # a summary of the size that we picked e.cmd = 'big query with size %d' % size if self.transport == 'cli': e.cmd = '%s\n%s' % (e.cmd, self.getLogSample()) raise watchman-4.9.0/tests/integration/test_bsdish.py000066400000000000000000000024561314236077500217170ustar00rootroot00000000000000# vim:ts=4:sw=4:et: # Copyright 2012-present Facebook, Inc. # Licensed under the Apache License, Version 2.0 from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import WatchmanTestCase import os @WatchmanTestCase.expand_matrix class TestBSDish(WatchmanTestCase.WatchmanTestCase): def test_bsdish_toplevel(self): root = self.mkdtemp() os.mkdir(os.path.join(root, 'lower')) self.touchRelative(root, 'lower', 'file') self.touchRelative(root, 'top') self.watchmanCommand('watch', root) self.assertFileList(root, ['lower', 'lower/file', 'top']) find = self.watchmanCommand('find', root) clock = find['clock'] since = self.watchmanCommand('since', root, clock) clock = since['clock'] since = self.watchmanCommand('since', root, clock) self.assertFileListsEqual([], since['files']) clock = since['clock'] os.unlink(os.path.join(root, 'top')) self.assertFileList(root, ['lower', 'lower/file']) now = self.watchmanCommand('since', root, clock) self.assertEqual(1, len(now['files'])) self.assertFileListsEqual(['top'], [now['files'][0]['name']]) self.assertFalse(now['files'][0]['exists']) watchman-4.9.0/tests/integration/test_bser_cli.py000066400000000000000000000055351314236077500222260ustar00rootroot00000000000000# vim:ts=4:sw=4:et: # Copyright 2012-present Facebook, Inc. # Licensed under the Apache License, Version 2.0 from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import tempfile import binascii import os import os.path import json from pywatchman import bser, compat, encoding import subprocess import WatchmanInstance import unittest class TestDashJCliOption(unittest.TestCase): def getSockPath(self): return WatchmanInstance.getSharedInstance().getSockPath() def doJson(self, addNewLine, pretty=False): sockname = self.getSockPath() if pretty: watchman_cmd = b"[\n\"get-sockname\"\n]" else: watchman_cmd = json.dumps(['get-sockname']) if compat.PYTHON3: watchman_cmd = watchman_cmd.encode('ascii') if addNewLine: watchman_cmd = watchman_cmd + b"\n" cli_cmd = [ 'watchman', '--sockname={0}'.format(sockname), '--logfile=/BOGUS', '--statefile=/BOGUS', '--no-spawn', '--no-local', '-j', ] proc = subprocess.Popen(cli_cmd, stdin=subprocess.PIPE, stderr=subprocess.PIPE, stdout=subprocess.PIPE) stdout, stderr = proc.communicate(input=watchman_cmd) self.assertEqual(proc.poll(), 0, stderr) # the response should be json because that is the default result = json.loads(stdout.decode('utf-8')) self.assertEqual(result['sockname'], sockname) def test_jsonInputNoNewLine(self): self.doJson(False) def test_jsonInputNewLine(self): self.doJson(True) def test_jsonInputPretty(self): self.doJson(True, True) def test_bserInput(self): sockname = self.getSockPath() watchman_cmd = bser.dumps(['get-sockname']) cli_cmd = [ 'watchman', '--sockname={0}'.format(sockname), '--logfile=/BOGUS', '--statefile=/BOGUS', '--no-spawn', '--no-local', '-j', ] proc = subprocess.Popen(cli_cmd, stdin=subprocess.PIPE, stderr=subprocess.PIPE, stdout=subprocess.PIPE) stdout, stderr = proc.communicate(input=watchman_cmd) self.assertEqual(proc.poll(), 0, stderr) # the response should be bser to match our input result = bser.loads(stdout) result_sockname = result['sockname'] if compat.PYTHON3: result_sockname = encoding.decode_local(result_sockname) self.assertEqual(result_sockname, sockname, binascii.hexlify(stdout).decode('ascii')) watchman-4.9.0/tests/integration/test_capabilities.py000066400000000000000000000070631314236077500230730ustar00rootroot00000000000000# vim:ts=4:sw=4:et: # Copyright 2012-present Facebook, Inc. # Licensed under the Apache License, Version 2.0 from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import WatchmanTestCase import pywatchman import pywatchman.capabilities @WatchmanTestCase.expand_matrix class TestCapabilities(WatchmanTestCase.WatchmanTestCase): def test_capabilities(self): client = self.getClient() res = client.query('version') self.assertFalse('error' in res, 'version with no args still works') res = client.query('version', { 'optional': ['term-match', 'will-never-exist']}) self.assertDictEqual(res['capabilities'], { 'term-match': True, 'will-never-exist': False}) res = client.query('version', { 'required': ['term-match'], 'optional': ['will-never-exist']}) self.assertDictEqual(res['capabilities'], { 'term-match': True, 'will-never-exist': False}) self.assertFalse('error' in res, 'no error for missing optional') with self.assertRaisesRegexp(pywatchman.CommandError, 'client required capability `will-never-exist` is not ' + 'supported by this server'): client.query('version', { 'required': ['term-match', 'will-never-exist']}) def test_capabilityCheck(self): client = self.getClient() res = client.capabilityCheck(optional=[ 'term-match', 'will-never-exist']) self.assertDictEqual(res['capabilities'], { 'term-match': True, 'will-never-exist': False}) res = client.capabilityCheck( required=['term-match'], optional=['will-never-exist']) self.assertDictEqual(res['capabilities'], { 'term-match': True, 'will-never-exist': False}) with self.assertRaisesRegexp(pywatchman.CommandError, 'client required capability `will-never-exist` is not ' + 'supported by this server'): client.capabilityCheck(required=['term-match', 'will-never-exist']) def test_capabilitySynth(self): res = pywatchman.capabilities.synthesize({'version': '1.0'}, { 'optional': ['will-never-exist'], 'required': []}) self.assertDictEqual(res, { 'version': '1.0', 'capabilities': { 'will-never-exist': False}}) res = pywatchman.capabilities.synthesize({'version': '1.0'}, { 'required': ['will-never-exist'], 'optional': []}) self.assertDictEqual(res, { 'version': '1.0', 'error': 'client required capability `will-never-exist` ' + 'is not supported by this server', 'capabilities': { 'will-never-exist': False}}) res = pywatchman.capabilities.synthesize({'version': '3.2'}, { 'optional': ['relative_root'], 'required': []}) self.assertDictEqual(res, { 'version': '3.2', 'capabilities': { 'relative_root': False}}) res = pywatchman.capabilities.synthesize({'version': '3.3'}, { 'optional': ['relative_root'], 'required': []}) self.assertDictEqual(res, { 'version': '3.3', 'capabilities': { 'relative_root': True}}) watchman-4.9.0/tests/integration/test_case_sensitive.py000066400000000000000000000025701314236077500234440ustar00rootroot00000000000000# Copyright 2017-present Facebook, Inc. # Licensed under the Apache License, Version 2.0 from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import WatchmanTestCase import os @WatchmanTestCase.expand_matrix class TestCaseSensitive(WatchmanTestCase.WatchmanTestCase): def test_changeCase(self): root = self.mkdtemp() os.mkdir(os.path.join(root, 'foo')) self.watchmanCommand('watch', root) self.assertFileList(root, ['foo']) os.rename(os.path.join(root, 'foo'), os.path.join(root, 'FOO')) self.touchRelative(root, 'FOO', 'bar') self.assertFileList(root, ['FOO', 'FOO/bar']) os.rename(os.path.join(root, 'FOO', 'bar'), os.path.join(root, 'FOO', 'BAR')) self.assertFileList(root, ['FOO', 'FOO/BAR']) os.rename(os.path.join(root, 'FOO'), os.path.join(root, 'foo')) self.assertFileList(root, ['foo', 'foo/BAR']) os.mkdir(os.path.join(root, 'foo', 'baz')) self.touchRelative(root, 'foo', 'baz', 'file') self.assertFileList(root, ['foo', 'foo/BAR', 'foo/baz', 'foo/baz/file']) os.rename(os.path.join(root, 'foo'), os.path.join(root, 'Foo')) self.assertFileList(root, ['Foo', 'Foo/BAR', 'Foo/baz', 'Foo/baz/file']) watchman-4.9.0/tests/integration/test_content_hash.py000066400000000000000000000106771314236077500231240ustar00rootroot00000000000000# vim:ts=4:sw=4:et: # Copyright 2017-present Facebook, Inc. # Licensed under the Apache License, Version 2.0 from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import WatchmanTestCase import hashlib import json import os @WatchmanTestCase.expand_matrix class TestContentHash(WatchmanTestCase.WatchmanTestCase): def write_file_and_hash(self, filename, content): content = content.encode("utf-8") with open(filename, 'wb') as f: f.write(content) sha = hashlib.sha1() sha.update(content) return sha.hexdigest() def test_contentHash(self): root = self.mkdtemp() expect_hex = self.write_file_and_hash( os.path.join(root, 'foo'), "hello\n") self.watchmanCommand('watch', root) self.assertFileList(root, ['foo']) stats = self.watchmanCommand('debug-contenthash', root) self.assertEqual(stats['size'], 0) res = self.watchmanCommand('query', root, { 'expression': ["name", "foo"], 'fields': ['name', 'content.sha1hex']}) self.assertEqual(expect_hex, res['files'][0]['content.sha1hex']) stats = self.watchmanCommand('debug-contenthash', root) self.assertEqual(stats['size'], 1) self.assertEqual(stats['cacheHit'], 0) self.assertEqual(stats['cacheStore'], 1) # repeated query also works res = self.watchmanCommand('query', root, { 'expression': ["name", "foo"], 'fields': ['name', 'content.sha1hex']}) self.assertEqual(expect_hex, res['files'][0]['content.sha1hex']) stats = self.watchmanCommand('debug-contenthash', root) self.assertEqual(stats['size'], 1) self.assertEqual(stats['cacheHit'], 1) self.assertEqual(stats['cacheStore'], 1) # change the content and expect to see that reflected # in the subsequent query expect_hex = self.write_file_and_hash( os.path.join(root, 'foo'), "goodbye\n") res = self.watchmanCommand('query', root, { 'expression': ["name", "foo"], 'fields': ['name', 'content.sha1hex']}) self.assertEqual(expect_hex, res['files'][0]['content.sha1hex']) stats = self.watchmanCommand('debug-contenthash', root) self.assertEqual(stats['size'], 2) self.assertEqual(stats['cacheHit'], 1) self.assertEqual(stats['cacheMiss'], 2) self.assertEqual(stats['cacheStore'], 2) # directories have no content hash os.mkdir(os.path.join(root, "dir")) res = self.watchmanCommand('query', root, { 'expression': ["name", "dir"], 'fields': ['name', 'content.sha1hex']}) self.assertEqual(None, res['files'][0]['content.sha1hex']) # removed files have no content hash os.unlink(os.path.join(root, 'foo')) res = self.watchmanCommand('query', root, { 'expression': ["name", "foo"], # need to a since query so that the removed files # show up in the results 'since': res['clock'], 'fields': ['name', 'content.sha1hex']}) self.assertEqual(None, res['files'][0]['content.sha1hex']) def test_contentHashWarming(self): root = self.mkdtemp() expect_hex = self.write_file_and_hash( os.path.join(root, 'foo'), "hello\n") with open(os.path.join(root, '.watchmanconfig'), 'w') as f: f.write(json.dumps({'content_hash_warming': True,})) self.watchmanCommand('watch', root) self.assertFileList(root, ['.watchmanconfig', 'foo']) def cachePopulate(): return self.watchmanCommand( 'debug-contenthash', root)['size'] == 2 self.waitFor(cachePopulate) stats = self.watchmanCommand('debug-contenthash', root) self.assertEqual(stats['size'], 2) self.assertEqual(stats['cacheHit'], 0) self.assertEqual(stats['cacheMiss'], 2) self.assertEqual(stats['cacheStore'], 2) self.assertEqual(stats['cacheLoad'], 2) res = self.watchmanCommand('query', root, { 'expression': ["name", "foo"], 'fields': ['name', 'content.sha1hex']}) self.assertEqual(expect_hex, res['files'][0]['content.sha1hex']) watchman-4.9.0/tests/integration/test_cppclient.py000066400000000000000000000027671314236077500224310ustar00rootroot00000000000000# vim:ts=4:sw=4:et: # Copyright 2016-present Facebook, Inc. # Licensed under the Apache License, Version 2.0 from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals try: import unittest2 as unittest except ImportError: import unittest import os import os.path import subprocess import WatchmanInstance import signal import Interrupt WATCHMAN_SRC_DIR = os.environ.get('WATCHMAN_SRC_DIR', os.getcwd()) TEST_BINARY = os.environ['WATCHMAN_CPPCLIENT_BINARY'] if \ 'WATCHMAN_CPPCLIENT_BINARY' in os.environ.keys() \ else os.path.join(WATCHMAN_SRC_DIR, 'tests/integration/cppclient.t') class TestCppClient(unittest.TestCase): @unittest.skipIf(not os.path.isfile(TEST_BINARY), 'test binary not built') def test_cppclient(self): env = os.environ.copy() env['WATCHMAN_SOCK'] = WatchmanInstance.getSharedInstance().getSockPath() proc = subprocess.Popen( TEST_BINARY, env=env, stdout=subprocess.PIPE, stderr=subprocess.PIPE) (stdout, stderr) = proc.communicate() status = proc.poll() if status == -signal.SIGINT: Interrupt.setInterrupted() self.fail('Interrupted by SIGINT') return if status != 0: self.fail("Exit status %d\n%s\n%s\n" % (status, stdout.decode('utf-8'), stderr.decode('utf-8'))) return self.assertTrue(True, TEST_BINARY) watchman-4.9.0/tests/integration/test_dir_move.py000066400000000000000000000035411314236077500222430ustar00rootroot00000000000000# vim:ts=4:sw=4:et: # Copyright 2016-present Facebook, Inc. # Licensed under the Apache License, Version 2.0 from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import WatchmanTestCase import tempfile import os import os.path import time import shutil import time @WatchmanTestCase.expand_matrix class TestDirMove(WatchmanTestCase.WatchmanTestCase): # testing this is flaky at best on windows due to latency # and exclusivity of file handles, so skip it. def checkOSApplicability(self): if os.name == 'nt': self.skipTest('windows is too flaky for this test') def build_under(self, root, name, latency=0): os.mkdir(os.path.join(root, name)) if latency > 0: time.sleep(latency) self.touch(os.path.join(root, name, 'a')) def test_atomicMove(self): root = self.mkdtemp() dir_of_interest = os.path.join(root, 'dir') alt_dir = os.path.join(root, 'alt') dead_dir = os.path.join(root, 'bye') self.build_under(root, 'dir') self.watchmanCommand('watch', root) self.assertFileList(root, ['dir', 'dir/a']) # build out a replacement dir self.build_under(root, 'alt') os.rename(dir_of_interest, dead_dir) os.rename(alt_dir, dir_of_interest) self.assertFileList(root, ['dir', 'dir/a', 'bye', 'bye/a']) def test_NonAtomicMove(self): root = self.mkdtemp() dir_of_interest = os.path.join(root, 'dir') alt_dir = os.path.join(root, 'alt') self.build_under(root, 'dir') self.watchmanCommand('watch', root) self.assertFileList(root, ['dir', 'dir/a']) shutil.rmtree(dir_of_interest) self.build_under(root, 'dir', latency=1) self.assertFileList(root, ['dir', 'dir/a']) watchman-4.9.0/tests/integration/test_eden_pathgen.py000066400000000000000000000141551314236077500230630ustar00rootroot00000000000000# vim:ts=4:sw=4:et: # Copyright 2016-present Facebook, Inc. # Licensed under the Apache License, Version 2.0 from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import WatchmanEdenTestCase import pywatchman import os class TestEdenPathGenerator(WatchmanEdenTestCase.WatchmanEdenTestCase): def test_eden_watch(self): def populate(repo): repo.write_file('.watchmanconfig', '{"ignore_dirs":[".buckd"]}') repo.write_file('hello', 'hola\n') repo.write_file('adir/file', 'foo!\n') repo.write_file('bdir/test.sh', '#!/bin/bash\necho test\n', mode=0o755) repo.write_file('bdir/noexec.sh', '#!/bin/bash\necho test\n') repo.write_file('b*ir/star', 'star') repo.write_file('b\\*ir/foo', 'foo') repo.symlink('slink', 'hello') repo.commit('initial commit.') root = self.makeEdenMount(populate) # make sure this exists; we should not observe it in any of the results # that we get back from watchman because it is listed in the ignore_dirs # config section. os.mkdir(os.path.join(root, '.buckd')) res = self.watchmanCommand('watch', root) self.assertEqual('eden', res['watcher']) self.assertFileList(root, ['.eden', '.eden/root', '.eden/socket', '.eden/client', '.watchmanconfig', 'adir', 'adir/file', 'bdir', 'bdir/noexec.sh', 'bdir/test.sh', 'b*ir', 'b*ir/star', 'b\\*ir', 'b\\*ir/foo', 'hello', 'slink']) res = self.watchmanCommand('query', root, { 'expression': ['type', 'f'], 'fields': ['name']}) self.assertFileListsEqual(res['files'], ['.watchmanconfig', 'adir/file', 'bdir/noexec.sh', 'bdir/test.sh', 'b*ir/star', 'b\\*ir/foo', 'hello']) res = self.watchmanCommand('query', root, { 'expression': ['type', 'l'], 'fields': ['name']}) self.assertFileListsEqual(res['files'], ['.eden/root', '.eden/socket', '.eden/client', 'slink']) res = self.watchmanCommand('query', root, { 'expression': ['type', 'f'], 'relative_root': 'bdir', 'fields': ['name']}) self.assertFileListsEqual(res['files'], ['noexec.sh', 'test.sh']) res = self.watchmanCommand('query', root, { 'expression': ['type', 'f'], 'fields': ['name'], 'glob': ['*.sh']}) self.assertFileListsEqual([], res['files']) res = self.watchmanCommand('query', root, { 'expression': ['type', 'f'], 'fields': ['name'], 'relative_root': 'bdir', 'glob': ['*.sh']}) self.assertFileListsEqual(res['files'], ['noexec.sh', 'test.sh']) res = self.watchmanCommand('query', root, { 'expression': ['type', 'f'], 'fields': ['name'], 'glob': ['**/*.sh']}) self.assertFileListsEqual(res['files'], ['bdir/noexec.sh', 'bdir/test.sh']) res = self.watchmanCommand('query', root, { 'path': [''], 'fields': ['name']}) self.assertFileListsEqual(res['files'], ['.eden', '.eden/root', '.eden/socket', '.eden/client', '.watchmanconfig', 'adir', 'adir/file', 'b*ir', 'b*ir/star', 'bdir', 'bdir/noexec.sh', 'bdir/test.sh', 'b\\*ir', 'b\\*ir/foo', 'hello', 'slink']) res = self.watchmanCommand('query', root, { 'path': [{'path': 'bdir', 'depth': 0}], 'fields': ['name']}) self.assertFileListsEqual( res['files'], ['bdir/noexec.sh', 'bdir/test.sh']) with self.assertRaises(pywatchman.CommandError) as ctx: self.watchmanCommand('query', root, { 'path': [{'path': 'bdir', 'depth': 1}], 'fields': ['name']}) self.assertIn('only supports depth', str(ctx.exception)) res = self.watchmanCommand('query', root, { 'path': [''], 'relative_root': 'bdir', 'fields': ['name']}) self.assertFileListsEqual(res['files'], ['noexec.sh', 'test.sh']) # Don't wildcard match a name with a * in it res = self.watchmanCommand('query', root, { 'path': [{'path': 'b*ir', 'depth': 0}], 'fields': ['name']}) self.assertFileListsEqual(res['files'], ['b*ir/star']) # Check that the globbing stuff does the right thing # with a backslash literal here. Unfortunately, watchman # has a slight blindsport with such a path; we're normalizing # backslash to a forward slash in the name of portability... res = self.watchmanCommand('query', root, { 'path': [{'path': 'b\\*ir', 'depth': 0}], 'fields': ['name']}) # ... so the path that gets encoded in the query is # "b/*ir" and that gets expanded to "b/\*ir/*" when this # is mapped to a glob and passed to eden. This same # path query won't yield the correct set of matches # in the non-eden case either. self.assertFileListsEqual(res['files'], []) res = self.watchmanCommand('query', root, { 'expression': ['type', 'f'], 'fields': ['name'], 'suffix': ['sh', 'js']}) self.assertFileListsEqual(res['files'], ['bdir/noexec.sh', 'bdir/test.sh']) res = self.watchmanCommand('query', root, { 'expression': ['type', 'f'], 'fields': ['name'], 'suffix': ['s*']}) watchman-4.9.0/tests/integration/test_eden_since.py000066400000000000000000000054211314236077500225320ustar00rootroot00000000000000# vim:ts=4:sw=4:et: # Copyright 2016-present Facebook, Inc. # Licensed under the Apache License, Version 2.0 from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import WatchmanEdenTestCase import os class TestEdenSince(WatchmanEdenTestCase.WatchmanEdenTestCase): def test_eden_since(self): def populate(repo): repo.write_file('hello', 'hola\n') repo.write_file('adir/file', 'foo!\n') repo.write_file('bdir/test.sh', '#!/bin/bash\necho test\n', mode=0o755) repo.write_file('bdir/noexec.sh', '#!/bin/bash\necho test\n') repo.symlink('slink', 'hello') repo.commit('initial commit.') root = self.makeEdenMount(populate) res = self.watchmanCommand('watch', root) self.assertEqual('eden', res['watcher']) res = self.watchmanCommand('query', root, { 'expression': ['type', 'f'], 'fields': ['name'], 'since': 'c:0:0'}) self.assertTrue(res['is_fresh_instance']) self.assertFileListsEqual( res['files'], ['hello', 'adir/file', 'bdir/test.sh', 'bdir/noexec.sh']) res = self.watchmanCommand('query', root, { 'expression': ['type', 'f'], 'relative_root': 'adir', 'fields': ['name'], 'since': 'c:0:0'}) self.assertFileListsEqual( res['files'], ['file'], message='should only return adir/file with no adir prefix') clock = res['clock'] self.touchRelative(root, 'hello') res = self.watchmanCommand('query', root, { 'expression': ['type', 'f'], 'fields': ['name'], 'since': clock}) self.assertFileListsEqual(res['files'], ['hello']) res = self.watchmanCommand('query', root, { 'expression': ['type', 'f'], 'fields': ['name'], 'since': res['clock']}) self.assertFileListsEqual(res['files'], []) res = self.watchmanCommand('query', root, { 'expression': ['type', 'f'], 'empty_on_fresh_instance': True, 'fields': ['name'], 'since': 'c:0:0'}) self.assertTrue(res['is_fresh_instance']) self.assertFileListsEqual(res['files'], []) os.unlink(os.path.join(root, 'hello')) res = self.watchmanCommand('query', root, { 'fields': ['name'], 'since': res['clock']}) self.assertFileListsEqual(res['files'], ['hello']) res = self.watchmanCommand('query', root, { 'expression': ['type', 'f'], 'fields': ['name'], 'since': res['clock']}) self.assertFileListsEqual(res['files'], []) watchman-4.9.0/tests/integration/test_eden_subscribe.py000066400000000000000000000054761314236077500234240ustar00rootroot00000000000000# vim:ts=4:sw=4:et: # Copyright 2017-present Facebook, Inc. # Licensed under the Apache License, Version 2.0 from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import WatchmanEdenTestCase import os class TestEdenSubscribe(WatchmanEdenTestCase.WatchmanEdenTestCase): def requiresPersistentSession(self): return True def test_eden_subscribe(self): def populate(repo): repo.write_file('.watchmanconfig', '{"ignore_dirs":[".buckd"]}') repo.write_file('hello', 'hola\n') repo.commit('initial commit.') root = self.makeEdenMount(populate) res = self.watchmanCommand('watch', root) self.assertEqual('eden', res['watcher']) self.watchmanCommand('subscribe', root, 'myname', {'fields': ['name']}) dat = self.waitForSub('myname', root=root)[0] self.assertTrue(dat['is_fresh_instance']) self.assertFileListsEqual(self.normWatchmanFileList(dat['files']), self.normFileList(['.eden', '.eden/socket', '.eden/client', '.watchmanconfig', '.eden/root', 'hello'])) self.touchRelative(root, 'w0000t') dat = self.waitForSub('myname', root=root)[0] self.assertEqual(False, dat['is_fresh_instance']) self.assertFileListsEqual(self.normWatchmanFileList(dat['files']), self.normFileList(['w0000t'])) # we should not observe .buckd in the subscription results # because it is listed in the ignore_dirs config section. os.mkdir(os.path.join(root, '.buckd')) self.touchRelative(root, 'hello') dat = self.waitForSub('myname', root=root)[0] self.assertEqual(False, dat['is_fresh_instance']) self.assertFileListsEqual(self.normWatchmanFileList(dat['files']), self.normFileList(['hello'])) # make another subscription and assert that we get a fresh # instance result with all the files in it self.watchmanCommand('subscribe', root, 'othersub', { 'fields': ['name']}) dat = self.waitForSub('othersub', root=root)[0] self.assertEqual(True, dat['is_fresh_instance']) self.assertFileListsEqual(self.normWatchmanFileList(dat['files']), self.normFileList(['.eden', '.eden/socket', '.eden/client', '.watchmanconfig', '.eden/root', 'hello', 'w0000t'])) watchman-4.9.0/tests/integration/test_find.py000066400000000000000000000035561314236077500213650ustar00rootroot00000000000000# vim:ts=4:sw=4:et: # Copyright 2012-present Facebook, Inc. # Licensed under the Apache License, Version 2.0 from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import WatchmanTestCase import json import tempfile import os import os.path @WatchmanTestCase.expand_matrix class TestFind(WatchmanTestCase.WatchmanTestCase): def test_find(self): root = self.mkdtemp() self.touchRelative(root, 'foo.c') self.touchRelative(root, 'bar.txt') self.watchmanCommand('watch', root) self.assertFileList(root, ['foo.c', 'bar.txt']) # Make sure we correctly observe deletions os.unlink(os.path.join(root, 'bar.txt')) self.assertFileList(root, ['foo.c']) # touch -> delete -> touch, should show up as exists self.touchRelative(root, 'bar.txt') self.assertFileList(root, ['foo.c', 'bar.txt']) os.unlink(os.path.join(root, 'bar.txt')) # A moderately more complex set of changes os.mkdir(os.path.join(root, 'adir')) os.mkdir(os.path.join(root, 'adir', 'subdir')) self.touchRelative(root, 'adir', 'subdir', 'file') os.rename(os.path.join(root, 'adir', 'subdir'), os.path.join(root, 'adir', 'overhere')) self.assertFileList(root, [ 'adir', 'adir/overhere', 'adir/overhere/file', 'foo.c']) os.rename(os.path.join(root, 'adir'), os.path.join(root, 'bdir')) self.assertFileList(root, [ 'bdir', 'bdir/overhere', 'bdir/overhere/file', 'foo.c']) self.assertTrue(self.rootIsWatched(root)) self.watchmanCommand('watch-del', root) self.waitFor(lambda: not self.rootIsWatched(root)) self.assertFalse(self.rootIsWatched(root)) watchman-4.9.0/tests/integration/test_fsevents_resync.py000066400000000000000000000034251314236077500236600ustar00rootroot00000000000000# vim:ts=4:sw=4:et: # Copyright 2016-present Facebook, Inc. # Licensed under the Apache License, Version 2.0 from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import WatchmanTestCase import json import tempfile import os import os.path import sys @WatchmanTestCase.expand_matrix class TestFSEventsResync(WatchmanTestCase.WatchmanTestCase): def checkOSApplicability(self): if sys.platform != 'darwin': self.skipTest('N/A unless macOS') def test_resync(self): root = self.mkdtemp() with open(os.path.join(root, '.watchmanconfig'), 'w') as f: f.write(json.dumps({ 'fsevents_try_resync': True })) self.watchmanCommand('watch', root) self.touchRelative(root, '111') self.assertFileList(root, ['.watchmanconfig', '111']) res = self.watchmanCommand('query', root, { 'fields': ['name']}) self.assertTrue(res['is_fresh_instance']) clock = res['clock'] dropinfo = self.watchmanCommand('debug-fsevents-inject-drop', root) self.assertTrue('last_good' in dropinfo, dropinfo) # We expect to see the results of these two filesystem operations # on our next query, and not see evidence of a recrawl os.unlink(os.path.join(root, '111')) self.touchRelative(root, '222') res = self.watchmanCommand('query', root, { 'since': clock, 'expression': ['exists'], 'fields': ['name']}) self.assertFalse(res['is_fresh_instance'], res) self.assertTrue('warning' not in res, res) self.assertEqual(self.normWatchmanFileList(res['files']), self.normFileList(['222'])) watchman-4.9.0/tests/integration/test_fstype.py000066400000000000000000000031201314236077500217420ustar00rootroot00000000000000# vim:ts=4:sw=4:et: # Copyright 2014-present Facebook, Inc. # Licensed under the Apache License, Version 2.0 from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import pywatchman import WatchmanInstance import WatchmanTestCase @WatchmanTestCase.expand_matrix class TestIllegalFSType(WatchmanTestCase.WatchmanTestCase): def test_Illegal(self): config = { 'illegal_fstypes': [ # This should include any/all fs types. If this test fails on # your platform, look in /tmp/watchman-test.log for a line like: # "path /var/tmp/a3osdzvzqnco0sok is on filesystem type zfs" # then add the type name to this list, in sorted order 'NTFS', 'cifs', 'hfs', 'nfs', 'smb', 'tmpfs', 'ufs', 'unknown', 'zfs', ], 'illegal_fstypes_advice': 'just cos', } inst = WatchmanInstance.Instance(config=config) try: inst.start() client = self.getClient(inst) d = self.mkdtemp() with self.assertRaises(pywatchman.WatchmanError) as ctx: client.query('watch', d) self.assertIn( ( 'filesystem and is disallowed by global config' + ' illegal_fstypes: just cos' ), str(ctx.exception) ) finally: inst.stop() watchman-4.9.0/tests/integration/test_glob.py000066400000000000000000000116321314236077500213620ustar00rootroot00000000000000# vim:ts=4:sw=4:et: # Copyright 2016-present Facebook, Inc. # Licensed under the Apache License, Version 2.0 from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import WatchmanTestCase import tempfile import os import os.path import shutil import pywatchman @WatchmanTestCase.expand_matrix class TestGlob(WatchmanTestCase.WatchmanTestCase): def test_glob(self): root = self.mkdtemp() self.touchRelative(root, 'a.c') self.touchRelative(root, 'b.c') self.touchRelative(root, '.a.c') inc_dir = os.path.join(root, 'includes') os.mkdir(inc_dir) self.touchRelative(inc_dir, 'a.h') self.touchRelative(inc_dir, 'b.h') second_inc_dir = os.path.join(inc_dir, 'second') os.mkdir(second_inc_dir) self.touchRelative(second_inc_dir, 'foo.h') self.touchRelative(second_inc_dir, 'bar.h') self.watchmanCommand('watch', root) res = self.watchmanCommand('query', root, { 'glob': ['*.h'], 'fields': ['name']}) self.assertEqual(res['files'], []) res = self.watchmanCommand('query', root, { 'glob': ['*.h'], 'relative_root': 'includes', 'fields': ['name']}) self.assertEqual(self.normFileList(['a.h', 'b.h']), self.normWatchmanFileList(res['files'])) res = self.watchmanCommand('query', root, { 'glob': ['**/*.h'], 'fields': ['name']}) self.assertEqual(self.normFileList(['includes/a.h', 'includes/b.h', 'includes/second/bar.h', 'includes/second/foo.h']), self.normWatchmanFileList(res['files'])) res = self.watchmanCommand('query', root, { 'glob': ['**/*.h'], 'relative_root': 'includes', 'fields': ['name']}) self.assertEqual(self.normFileList(['a.h', 'b.h', 'second/bar.h', 'second/foo.h']), self.normWatchmanFileList(res['files'])) res = self.watchmanCommand('query', root, { 'glob': ['*.c'], 'fields': ['name']}) self.assertEqual(self.normWatchmanFileList(res['files']), self.normFileList(['a.c', 'b.c'])) res = self.watchmanCommand('query', root, { 'glob': ['*.c'], 'glob_includedotfiles': True, 'fields': ['name']}) self.assertEqual(self.normWatchmanFileList(res['files']), self.normFileList(['.a.c', 'a.c', 'b.c'])) res = self.watchmanCommand('query', root, { 'glob': ['**/*.h', '**/**/*.h'], 'fields': ['name']}) self.assertEqual(self.normFileList(['includes/a.h', 'includes/b.h', 'includes/second/bar.h', 'includes/second/foo.h']), self.normWatchmanFileList(res['files'])) # check that dedup is happening res = self.watchmanCommand('query', root, { 'glob': ['**/*.h', '**/**/*.h', 'includes/*.h'], 'fields': ['name']}) self.assertEqual(self.normFileList(['includes/a.h', 'includes/b.h', 'includes/second/bar.h', 'includes/second/foo.h']), self.normWatchmanFileList(res['files'])) shutil.rmtree(second_inc_dir) res = self.watchmanCommand('query', root, { 'glob': ['**/*.h', '**/**/*.h'], 'fields': ['name']}) self.assertEqual(self.normFileList(['includes/a.h', 'includes/b.h']), self.normWatchmanFileList(res['files'])) res = self.watchmanCommand('query', root, { 'glob': ['*/*.h'], 'fields': ['name']}) self.assertEqual(self.normFileList(['includes/a.h', 'includes/b.h']), self.normWatchmanFileList(res['files'])) os.unlink(os.path.join(inc_dir, 'a.h')) res = self.watchmanCommand('query', root, { 'glob': ['*/*.h'], 'fields': ['name']}) self.assertEqual(self.normFileList(['includes/b.h']), self.normWatchmanFileList(res['files'])) with self.assertRaises(pywatchman.WatchmanError) as ctx: self.watchmanCommand('query', root, { 'glob': ['*/*.h'], 'relative_root': 'bogus'}) self.assertIn('check your relative_root', str(ctx.exception)) with self.assertRaises(pywatchman.WatchmanError) as ctx: self.watchmanCommand('query', root, { 'glob': [12345]}) self.assertIn('expected json string object', str(ctx.exception)) watchman-4.9.0/tests/integration/test_log.py000066400000000000000000000027661314236077500212300ustar00rootroot00000000000000# vim:ts=4:sw=4:et: # Copyright 2017-present Facebook, Inc. # Licensed under the Apache License, Version 2.0 from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import WatchmanTestCase import pywatchman @WatchmanTestCase.expand_matrix class TestLog(WatchmanTestCase.WatchmanTestCase): def test_invalidNumArgsLogLevel(self): for params in [ ['log-level'], ['log-level', 'debug', 'extra'], ]: with self.assertRaises(pywatchman.WatchmanError) as ctx: self.watchmanCommand(*params) self.assertIn('wrong number of arguments', str(ctx.exception)) def test_invalidLevelLogLevel(self): with self.assertRaises(pywatchman.WatchmanError) as ctx: self.watchmanCommand('log-level', 'invalid') self.assertIn('invalid log level', str(ctx.exception)) def test_invalidNumArgsLog(self): for params in [ ['log'], ['log', 'debug'], ['log', 'debug', 'test', 'extra'], ]: with self.assertRaises(pywatchman.WatchmanError) as ctx: self.watchmanCommand(*params) self.assertIn('wrong number of arguments', str(ctx.exception)) def test_invalidLevelLog(self): with self.assertRaises(pywatchman.WatchmanError) as ctx: self.watchmanCommand('log', 'invalid', 'test') self.assertIn('invalid log level', str(ctx.exception)) watchman-4.9.0/tests/integration/test_match.py000066400000000000000000000071671314236077500215430ustar00rootroot00000000000000# vim:ts=4:sw=4:et: # Copyright 2012-present Facebook, Inc. # Licensed under the Apache License, Version 2.0 from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import WatchmanTestCase import tempfile import os import os.path @WatchmanTestCase.expand_matrix class TestMatch(WatchmanTestCase.WatchmanTestCase): def test_match(self): root = self.mkdtemp() self.touchRelative(root, 'foo.c') self.touchRelative(root, 'bar.txt') os.mkdir(os.path.join(root, 'foo')) self.touchRelative(root, 'foo', '.bar.c') self.touchRelative(root, 'foo', 'baz.c') self.watchmanCommand('watch', root) self.assertFileList(root, ['bar.txt', 'foo.c', 'foo', 'foo/.bar.c', 'foo/baz.c']) res = self.watchmanCommand('query', root, { 'expression': ['match', '*.c'], 'fields': ['name']}) self.assertEqual(self.normWatchmanFileList(res['files']), self.normFileList(['foo.c', 'foo/baz.c'])) res = self.watchmanCommand('query', root, { 'expression': ['match', '*.c', 'wholename'], 'fields': ['name']}) self.assertEqual(self.normWatchmanFileList(res['files']), self.normFileList(['foo.c'])) res = self.watchmanCommand('query', root, { 'expression': ['match', 'foo/*.c', 'wholename'], 'fields': ['name']}) self.assertEqual(self.normWatchmanFileList(res['files']), self.normFileList(['foo/baz.c'])) res = self.watchmanCommand('query', root, { 'expression': ['match', 'foo/*.c', 'wholename'], 'fields': ['name']}) self.assertEqual(self.normWatchmanFileList(res['files']), self.normFileList(['foo/baz.c'])) res = self.watchmanCommand('query', root, { 'expression': ['match', '**/*.c', 'wholename'], 'fields': ['name']}) self.assertEqual(self.normWatchmanFileList(res['files']), self.normFileList(['foo.c', 'foo/baz.c'])) res = self.watchmanCommand('query', root, { 'expression': ['match', '**/*.c', 'wholename', {'includedotfiles':True}], 'fields': ['name']}) self.assertEqual(self.normWatchmanFileList(res['files']), self.normFileList(['foo.c', 'foo/.bar.c', 'foo/baz.c'])) res = self.watchmanCommand('query', root, { 'expression': ['match', 'foo/**/*.c', 'wholename'], 'fields': ['name']}) self.assertEqual(self.normWatchmanFileList(res['files']), self.normFileList(['foo/baz.c'])) res = self.watchmanCommand('query', root, { 'expression': ['match', 'FOO/*.c', 'wholename'], 'fields': ['name']}) if self.isCaseInsensitive(): self.assertEqual(self.normWatchmanFileList(res['files']), self.normFileList(['foo/baz.c'])) else: self.assertEqual(self.normWatchmanFileList(res['files']), []) res = self.watchmanCommand('query', root, { 'expression': ['match', 'FOO/*.c', 'wholename'], 'case_sensitive': True, 'fields': ['name']}) self.assertEqual(self.normWatchmanFileList(res['files']), []) res = self.watchmanCommand('query', root, { 'expression': ['match', 'FOO/*.c', 'wholename'], 'case_sensitive': False, 'fields': ['name']}) self.assertEqual(self.normWatchmanFileList(res['files']), self.normFileList(['foo/baz.c'])) watchman-4.9.0/tests/integration/test_nodejs.py000066400000000000000000000066311314236077500217240ustar00rootroot00000000000000from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals try: import unittest2 as unittest except ImportError: import unittest import os import os.path import subprocess import inspect import glob import re import WatchmanInstance import TempDir import signal import Interrupt import shutil import tempfile import distutils.spawn node_bin = distutils.spawn.find_executable('node') npm_bin = distutils.spawn.find_executable('npm') WATCHMAN_SRC_DIR = os.environ.get('WATCHMAN_SRC_DIR', os.getcwd()) THIS_DIR = os.path.join(WATCHMAN_SRC_DIR, 'tests', 'integration') def find_js_tests(test_class): ''' A decorator function used to create a class per legacy PHP test ''' # We do some rather hacky things here to define new test class types # in our caller's scope. This is needed so that the unittest TestLoader # will find the subclasses we define. caller_scope = inspect.currentframe().f_back.f_locals for js in glob.glob(os.path.join(THIS_DIR, '*.js')): base = os.path.basename(js) if base.startswith('.') or base.startswith('_'): continue subclass_name = base.replace('.', '_').replace('-', '_') def make_class(jsfile): # Define a new class that derives from the input class. # This has to be a function otherwise jsfile captures # the value from the last iteration of the glob loop. class JSTest(test_class): def getCommandArgs(self): return [node_bin, jsfile] # Set the name and module information on our new subclass JSTest.__name__ = subclass_name JSTest.__qualname__ = subclass_name JSTest.__module__ = test_class.__module__ caller_scope[subclass_name] = JSTest make_class(js) return None @find_js_tests class NodeTestCase(unittest.TestCase): @unittest.skipIf(node_bin is None or npm_bin is None, 'node not installed') def runTest(self): env = os.environ.copy() env['WATCHMAN_SOCK'] = WatchmanInstance.getSharedInstance().getSockPath() dotted = os.path.normpath(self.id()).replace(os.sep, '.').replace( 'tests.integration.', '').replace('.php', '') env['TMPDIR'] = os.path.join(TempDir.get_temp_dir().get_dir(), dotted) os.mkdir(env['TMPDIR']) # build the node module with npm node_dir = os.path.join(env['TMPDIR'], 'fb-watchman') shutil.copytree(os.path.join(WATCHMAN_SRC_DIR, 'node'), node_dir) subprocess.check_call(['npm', 'install'], cwd=node_dir) env['TMP'] = env['TMPDIR'] env['TEMP'] = env['TMPDIR'] env['IN_PYTHON_HARNESS'] = '1' env['NODE_PATH'] = '%s:%s' % (env['TMPDIR'], env.get('NODE_PATH', '')) proc = subprocess.Popen( self.getCommandArgs(), env=env, stdout=subprocess.PIPE, stderr=subprocess.PIPE) (stdout, stderr) = proc.communicate() status = proc.poll() if status == -signal.SIGINT: Interrupt.setInterrupted() self.fail('Interrupted by SIGINT') return if status != 0: self.fail("Exit status %d\n%s\n%s\n" % (status, stdout.decode('utf-8'), stderr.decode('utf-8'))) return self.assertTrue(True, self.getCommandArgs()) watchman-4.9.0/tests/integration/test_pcre.py000066400000000000000000000050741314236077500213730ustar00rootroot00000000000000# vim:ts=4:sw=4:et: # Copyright 2014-present Facebook, Inc. # Licensed under the Apache License, Version 2.0 from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import WatchmanTestCase import pywatchman @WatchmanTestCase.expand_matrix class TestPcre(WatchmanTestCase.WatchmanTestCase): def check_pcre(self): res = self.watchmanCommand('version', {'optional': ['term-pcre']}) if not res['capabilities']['term-pcre']: self.skipTest('no PCRE support in the server') def test_big_pcre(self): self.check_pcre() root = self.mkdtemp() self.watchmanCommand('watch', root) fill = 'lemon\\.php' * 3600 pcre = '^(' + '|'.join( [fill[i:i + 100] for i in range(0, len(fill), 100)] ) + 'sss)' try: self.watchmanCommand( 'query', root, { 'expression': ['pcre', pcre, 'wholename'], 'fields': ['name'] } ) # Some PCRE libraries are actually OK with this # expression, so we won't always throw an error except pywatchman.WatchmanError as e: self.assertIn('is too', str(e)) def test_pcre(self): self.check_pcre() root = self.mkdtemp() self.touchRelative(root, 'foo.c') self.touchRelative(root, 'bar.txt') self.watchmanCommand('watch', root) self.assertFileList(root, ['bar.txt', 'foo.c']) out = self.watchmanCommand('find', root, '-p', '.*c$') self.assertEqual(1, len(out['files'])) self.assertFileListsEqual(['foo.c'], [out['files'][0]['name']]) out = self.watchmanCommand('find', root, '-p', '.*txt$') self.assertEqual(1, len(out['files'])) self.assertFileListsEqual(['bar.txt'], [out['files'][0]['name']]) with self.assertRaises(pywatchman.WatchmanError) as ctx: self.watchmanCommand('find', root, '-p', '(') self.assertIn('at offset 1 in (', str(ctx.exception)) if self.isCaseInsensitive(): # -p matches case sensitivity of filesystem out = self.watchmanCommand('find', root, '-p', '.*C$') self.assertEqual(1, len(out['files'])) self.assertFileListsEqual(['foo.c'], [out['files'][0]['name']]) # and case insensitive mode out = self.watchmanCommand('find', root, '-P', '.*C$') self.assertEqual(1, len(out['files'])) self.assertFileListsEqual(['foo.c'], [out['files'][0]['name']]) watchman-4.9.0/tests/integration/test_perms.py000066400000000000000000000026771314236077500215760ustar00rootroot00000000000000# vim:ts=4:sw=4:et: # Copyright 2015-present Facebook, Inc. # Licensed under the Apache License, Version 2.0 from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import WatchmanTestCase import tempfile import os import os.path try: import unittest2 as unittest except ImportError: import unittest import pywatchman def is_root(): return hasattr(os, 'geteuid') and os.geteuid() == 0 @WatchmanTestCase.expand_matrix class TestPerms(WatchmanTestCase.WatchmanTestCase): def checkOSApplicability(self): if os.name == 'nt': self.skipTest('N/A on Windows') @unittest.skipIf(is_root(), "N/A if root") def test_permDeniedSubDir(self): root = self.mkdtemp() subdir = os.path.join(root, 'subdir') os.mkdir(subdir) os.chmod(subdir, 0) self.watchmanCommand('watch', root) res = self.watchmanCommand('query', root, { 'expression': ['exists'], 'fields': ['name']}) self.assertRegexpMatches(res['warning'], 'Marking this portion of the tree deleted') @unittest.skipIf(is_root(), "N/A if root") def test_permDeniedRoot(self): root = self.mkdtemp() os.chmod(root, 0) with self.assertRaisesRegexp(pywatchman.CommandError, '(open|opendir|realpath)'): self.watchmanCommand('watch', root) watchman-4.9.0/tests/integration/test_php.py000066400000000000000000000133251314236077500212270ustar00rootroot00000000000000from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import os import os.path import subprocess import inspect import glob import re import WatchmanInstance import signal import sys import Interrupt import tempfile import TempDir import distutils.spawn try: import unittest2 as unittest except ImportError: import unittest WATCHMAN_SRC_DIR = os.environ.get('WATCHMAN_SRC_DIR', os.getcwd()) THIS_DIR = os.path.join(WATCHMAN_SRC_DIR, 'tests', 'integration') php_bin = distutils.spawn.find_executable('php') def find_php_tests(test_class): ''' A decorator function used to create a class per legacy PHP test ''' # We do some rather hacky things here to define new test class types # in our caller's scope. This is needed so that the unittest TestLoader # will find the subclasses we define. caller_scope = inspect.currentframe().f_back.f_locals phprunner = os.path.join(THIS_DIR, 'phprunner') for php in glob.glob(os.path.join(THIS_DIR, '*.php')): base = os.path.basename(php) if base.startswith('.') or base.startswith('_'): continue subclass_name = base.replace('.', '_').replace('-', '_') def make_class(phpfile): # Define a new class that derives from the input class. # This has to be a function otherwise phpfile captures # the value from the last iteration of the glob loop. class PHPTest(test_class): def getCommandArgs(self): return [ php_bin, '-d variables_order=EGPCS', '-d register_argc_argv=1', '-d sys_temp_dir=%s' % TempDir.get_temp_dir().get_dir(), phprunner, phpfile, ] # Set the name and module information on our new subclass PHPTest.__name__ = subclass_name PHPTest.__qualname__ = subclass_name PHPTest.__module__ = test_class.__module__ caller_scope[subclass_name] = PHPTest make_class(php) return None @find_php_tests class PHPTestCase(unittest.TestCase): attempt = 0 def setAttemptNumber(self, attempt): ''' enable flaky test retry ''' self.attempt = attempt @unittest.skipIf(php_bin is None, 'php not installed') def runTest(self): env = os.environ.copy() env['WATCHMAN_SOCK'] = WatchmanInstance.getSharedInstance().getSockPath() def clean_file_name(name): name = name.replace(os.sep, '') name = name.replace('tests.integration', '') name = name.replace('.php', '') name = name.replace('_php', '') name = name.replace('.runTest', '') return name dotted = clean_file_name(os.path.normpath(self.id())) if self.attempt > 0: dotted += "-%d" % self.attempt env['TMPDIR'] = os.path.join(TempDir.get_temp_dir().get_dir(), dotted) if os.name != 'nt' and len(env['TMPDIR']) > 94: self.fail('temp dir name %s is too long for unix domain sockets' % env['TMPDIR']) os.mkdir(env['TMPDIR']) env['TMP'] = env['TMPDIR'] env['TEMP'] = env['TMPDIR'] env['IN_PYTHON_HARNESS'] = '1' env['WATCHMAN_PYTHON_BINARY'] = sys.executable proc = subprocess.Popen( self.getCommandArgs(), cwd=env.get('WATCHMAN_SRC_DIR', os.getcwd()), env=env, stdout=subprocess.PIPE, stderr=subprocess.PIPE) (stdout, stderr) = proc.communicate() status = proc.poll() if status == -signal.SIGINT: Interrupt.setInterrupted() self.fail('Interrupted by SIGINT') return if status != 0: self.fail("Exit status %d\n%s\n%s\n" % (status, stdout, stderr)) return res_pat = re.compile(b'^(not )?ok (\d+) (.*)$') diag_pat = re.compile(b'^# (.*)$') plan_pat = re.compile(b'^1\.\.(\d+)$') # Now parse the TAP output lines = stdout.replace(b'\r\n', b'\n').split(b'\n') last_test = 0 diags = None plan = None for line in lines: res = plan_pat.match(line) if res: plan = int(res.group(1)) continue res = res_pat.match(line) if res: this_test = int(res.group(2)) if this_test != last_test + 1: print(stdout, stderr) self.fail('Expected test number %d, got %d' % ( last_test + 1, this_test)) last_test = this_test if res.group(1) == b'not ': # Failed msg = line if diags is not None: msg = msg + b'\n' + b'\n'.join(diags) self.fail(msg.decode('utf-8')) failed diags = None continue res = diag_pat.match(line) if res: if diags is None: diags = [] diags.append(res.group(1)) continue if line != b'': print('Invalid tap output from %s: %s' % (self.id(), line)) if plan is None: self.fail('no plan was observed') else: self.assertEqual(last_test, plan, '%s planned %d but executed %s tests' % ( self.id(), plan, last_test)) watchman-4.9.0/tests/integration/test_restrictions.py000066400000000000000000000052121314236077500231640ustar00rootroot00000000000000# vim:ts=4:sw=4:et: # Copyright 2016-present Facebook, Inc. # Licensed under the Apache License, Version 2.0 from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import json import os import tempfile import pywatchman import WatchmanInstance import WatchmanTestCase @WatchmanTestCase.expand_matrix class TestWatchRestrictions(WatchmanTestCase.WatchmanTestCase): def test_rootRestrict(self): config = { 'root_restrict_files': ['.git', '.hg', '.foo', '.bar'] } inst = WatchmanInstance.Instance(config=config) try: inst.start() client = self.getClient(inst) expect = [ ('directory', '.git', True), ('directory', '.hg', True), ('file', '.foo', True), ('file', '.bar', True), ('directory', '.bar', True), (None, None, False), ('directory', '.svn', False), ('file', 'baz', False), ] for filetype, name, expect_pass in expect: # encode the test criteria in the dirname so that we can # figure out which test scenario failed more easily d = self.mkdtemp(suffix='-%s-%s-%s' % ( filetype, name, expect_pass)) if filetype == 'directory': os.mkdir(os.path.join(d, name)) elif filetype == 'file': self.touchRelative(d, name) if expect_pass: client.query('watch', d) else: with self.assertRaises(pywatchman.WatchmanError) as ctx: client.query('watch', d) self.assertRegexpMatches( str(ctx.exception), ("unable to resolve root .*"+ ": Your watchman administrator has configured watchman "+ "to prevent watching this path. "+ "None of the files listed in global config root_files "+ "are present and enforce_root_files is set to true")) finally: inst.stop() def test_invalidRoot(self): d = self.mkdtemp() invalid = os.path.join(d, "invalid") with self.assertRaises(pywatchman.WatchmanError) as ctx: self.watchmanCommand('watch', invalid) msg = str(ctx.exception) if 'No such file or directory' in msg: # unix return if 'The system cannot find the file specified' in msg: # windows return self.assertTrue(False, msg) watchman-4.9.0/tests/integration/test_scm.py000066400000000000000000000253411314236077500212230ustar00rootroot00000000000000# vim:ts=4:sw=4:et: # Copyright 2017-present Facebook, Inc. # Licensed under the Apache License, Version 2.0 from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import WatchmanInstance import WatchmanTestCase import pywatchman import os import subprocess if pywatchman.compat.PYTHON3: STRING_TYPES = (str, bytes) else: STRING_TYPES = (str, unicode) @WatchmanTestCase.expand_matrix class TestScm(WatchmanTestCase.WatchmanTestCase): def requiresPersistentSession(self): return True def skipIfNoFSMonitor(self): ''' cause the test to skip if fsmonitor is not available. We don't call this via unittest.skip because we want to have the skip message show the context ''' try: self.hg(['help', '--extension', 'fsmonitor']) except Exception as e: self.skipTest('fsmonitor is not available: %s' % str(e)) def checkOSApplicability(self): if os.name == 'nt': self.skipTest('The order of events on Windows is funky') def hg(self, args=None, cwd=None): env = dict(os.environ) env['HGPLAIN'] = '1' env['HGUSER'] = 'John Smith ' env['NOSCMLOG'] = '1' # disable some instrumentation at FB env['WATCHMAN_SOCK'] = \ WatchmanInstance.getSharedInstance().getSockPath() p = subprocess.Popen( # we force the extension on. This is a soft error for # mercurial if it is not available, so we also employ # the skipIfNoFSMonitor() test above to make sure the # environment is sane. ['hg', '--config', 'extensions.fsmonitor='] + args, env=env, cwd=cwd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) out, err = p.communicate() if p.returncode != 0: raise Exception("hg %r failed: %s, %s" % (args, out, err)) return out, err def test_scmHg(self): self.skipIfNoFSMonitor() root = self.mkdtemp() ''' Set up a repo with a DAG like this: @ changeset: 4:6c38b3c78a62 | bookmark: feature2 | tag: tip | summary: add m2 | o changeset: 3:88fea8704cd2 | bookmark: TheMaster | parent: 1:6b3ecb11785e | summary: add m1 | | o changeset: 5:7bc34583612 |/ bookmark: feature3 | summary: remove car | | o changeset: 2:2db357583971 |/ bookmark: feature1 | summary: add f1 | o changeset: 0:b08db10380dd bookmark: initial summary: initial ''' self.hg(['init'], cwd=root) self.touchRelative(root, 'foo') self.hg(['book', 'initial'], cwd=root) self.hg(['addremove'], cwd=root) self.hg(['commit', '-m', 'initial'], cwd=root) # Some environments prohibit locally creating "master", # so we use an alternative similar name. self.hg(['book', 'TheMaster'], cwd=root) self.touchRelative(root, 'bar') self.touchRelative(root, 'car') self.hg(['addremove'], cwd=root) self.hg(['commit', '-m', 'add bar and car'], cwd=root) self.hg(['book', 'feature1'], cwd=root) self.touchRelative(root, 'f1') self.hg(['addremove'], cwd=root) self.hg(['commit', '-m', 'add f1'], cwd=root) self.hg(['co', 'TheMaster'], cwd=root) self.hg(['book', 'feature3'], cwd=root) self.hg(['rm', 'car'], cwd=root) self.hg(['commit', '-m', 'remove car'], cwd=root) self.hg(['co', 'TheMaster'], cwd=root) self.touchRelative(root, 'm1') self.hg(['addremove'], cwd=root) self.hg(['commit', '-m', 'add m1'], cwd=root) self.hg(['book', 'feature2'], cwd=root) self.touchRelative(root, 'm2') self.hg(['addremove'], cwd=root) self.hg(['commit', '-m', 'add m2'], cwd=root) self.watchmanCommand('watch', root) res = self.watchmanCommand('query', root, { 'expression': ['not', ['anyof', ['name', '.hg'], ['dirname', '.hg']]], 'fields': ['name']}) self.assertFileListsEqual( res['files'], ['foo', 'bar', 'car', 'm1', 'm2']) # Verify behavior with badly formed queries with self.assertRaises(pywatchman.WatchmanError) as ctx: self.watchmanCommand('query', root, { 'expression': ['not', ['anyof', ['name', '.hg'], ['dirname', '.hg']]], 'since': {'scm': {}}}) self.assertIn( "key 'mergebase-with' is not present in this json object", str(ctx.exception)) # When the client doesn't know the merge base, we should give # them the current status and merge base res = self.watchmanCommand('query', root, { 'expression': ['not', ['anyof', ['name', '.hg'], ['dirname', '.hg']]], 'fields': ['name'], 'since': { 'scm': { 'mergebase-with': 'TheMaster'}}}) self.assertNotEqual(res['clock']['scm']['mergebase'], '') self.assertEqual(res['clock']['scm']['mergebase-with'], 'TheMaster') # The only file changed between TheMaster and feature2 is m2 self.assertFileListsEqual(res['files'], ['m2']) # Let's also set up a subscription for the same query sub = self.watchmanCommand('subscribe', root, 'scmsub', { 'expression': ['not', ['anyof', ['name', '.hg'], ['dirname', '.hg']]], 'fields': ['name'], 'since': { 'scm': { 'mergebase-with': 'TheMaster'}}}) self.watchmanCommand('flush-subscriptions', root, {'sync_timeout': 1000}) dat = self.getSubFatClocksOnly('scmsub', root=root) # compare with the query results that we got self.assertEqual(sub['clock']['scm'], res['clock']['scm']) self.assertFileListsEqual(res['files'], dat[0]['files']) mergeBase = res['clock']['scm']['mergebase'] # Ensure that we can see a file that isn't tracked show up # as a delta in the what we consider to be the common case. # we're threading the merge-base result from the prior query # through, so this should just end up looking like a normal # since query. self.touchRelative(root, 'w00t') res = self.watchmanCommand('query', root, { 'expression': ['not', ['anyof', ['name', '.hg'], ['dirname', '.hg']]], 'fields': ['name'], 'since': res['clock']}) self.assertEqual(res['clock']['scm']['mergebase'], mergeBase) self.assertFileListsEqual(res['files'], ['w00t']) # and check that subscription results are consistent with it self.watchmanCommand('flush-subscriptions', root, {'sync_timeout': 1000}) dat = self.getSubFatClocksOnly('scmsub', root=root) self.assertEqual(dat[0]['clock']['scm'], res['clock']['scm']) self.assertFileListsEqual(res['files'], dat[0]['files']) # Going back to the merge base, we should get a regular looking incremental # list of the files as we would from a since query; we expect to see # the removal of w00t and m2 os.unlink(os.path.join(root, 'w00t')) self.watchmanCommand('flush-subscriptions', root, {'sync_timeout': 1000}) dat = self.getSubFatClocksOnly('scmsub', root=root) self.assertFileListsEqual(['w00t'], dat[0]['files']) self.hg(['co', '-C', 'TheMaster'], cwd=root) res = self.watchmanCommand('query', root, { 'expression': ['not', ['anyof', ['name', '.hg'], ['dirname', '.hg']]], 'fields': ['name'], 'since': res['clock']}) self.assertEqual(res['clock']['scm']['mergebase'], mergeBase) self.assertFileListsEqual(res['files'], ['w00t', 'm2']) self.watchmanCommand('flush-subscriptions', root, {'sync_timeout': 1000}) dat = self.getSubFatClocksOnly('scmsub', root=root) self.assertEqual(dat[0]['clock']['scm'], res['clock']['scm']) # we already observed the w00t update above, so we expect to see just the # file(s) that changed in the update operation self.assertFileListsEqual(['m2'], dat[0]['files']) # Now we're going to move to another branch with a different mergebase. self.hg(['co', '-C', 'feature1'], cwd=root) res = self.watchmanCommand('query', root, { 'expression': ['not', ['anyof', ['name', '.hg'], ['dirname', '.hg']]], 'fields': ['name'], 'since': res['clock']}) # We expect to observe the changed merged base self.assertNotEqual(res['clock']['scm']['mergebase'], mergeBase) # and only the file that changed since that new mergebase self.assertFileListsEqual(res['files'], ['f1']) # check again that subscription results are consistent with it. self.watchmanCommand('flush-subscriptions', root, {'sync_timeout': 1000}) dat = self.getSubFatClocksOnly('scmsub', root=root) self.assertEqual(dat[0]['clock']['scm'], res['clock']['scm']) self.assertFileListsEqual(res['files'], dat[0]['files']) # and to check whether our dirstate caching code is reasonable, # run a query that should be able to hit the cache clock = res['clock'] res = self.watchmanCommand('query', root, { 'expression': ['not', ['anyof', ['name', '.hg'], ['dirname', '.hg']]], 'fields': ['name'], 'since': { 'scm': { 'mergebase-with': 'TheMaster'}}}) self.assertEqual(clock['scm'], res['clock']['scm']) # Fresh instance queries return the complete set of changes (so there is # no need to provide information on deleted files). In contrast, SCM # aware queries must contain the deleted files in the result list. Check # that the deleted file is part of the result set for feature3. self.hg(['co', '-C', 'feature3'], cwd=root) res = self.watchmanCommand('query', root, { 'expression': ['not', ['anyof', ['name', '.hg'], ['dirname', '.hg']]], 'fields': ['name'], 'since': res['clock']}) self.assertFileListsEqual(res['files'], ['f1', 'car']) res = self.watchmanCommand('query', root, { 'expression': ['not', ['anyof', ['name', '.hg'], ['dirname', '.hg']]], 'fields': ['name'], 'since': { 'scm': { 'mergebase': '', 'mergebase-with': 'TheMaster'}}}) self.assertFileListsEqual(res['files'], ['car']) def getSubFatClocksOnly(self, subname, root): dat = self.waitForSub(subname, root=root) return [ item for item in dat if not isinstance(item['clock'], STRING_TYPES) ] watchman-4.9.0/tests/integration/test_since.py000066400000000000000000000245741314236077500215510ustar00rootroot00000000000000# vim:ts=4:sw=4:et: # Copyright 2012-present Facebook, Inc. # Licensed under the Apache License, Version 2.0 from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import WatchmanTestCase import json import os import os.path @WatchmanTestCase.expand_matrix class TestSince(WatchmanTestCase.WatchmanTestCase): def test_sinceIssue1(self): root = self.mkdtemp() self.touchRelative(root, '111') self.touchRelative(root, '222') self.watchmanCommand('watch', root) self.assertFileList(root, ['111', '222']) # Create a cursor for this state self.watchmanCommand('since', root, 'n:foo') bar_dir = os.path.join(root, 'bar') os.mkdir(bar_dir) self.touchRelative(bar_dir, '333') self.waitForSync(root) # We should not observe 111 or 222 self.assertFileList(root, cursor='n:foo', files=['bar', 'bar/333']) def test_sinceIssue2(self): root = self.mkdtemp() watch = self.watchmanCommand('watch', root) self.assertFileList(root, files=[]) foo_dir = os.path.join(root, 'foo') os.mkdir(foo_dir) self.touchRelative(foo_dir, '111') self.waitForSync(root) self.assertFileList(root, cursor='n:foo', files=['foo', 'foo/111']) bar_dir = os.path.join(foo_dir, 'bar') os.mkdir(bar_dir) self.touchRelative(bar_dir, '222') # wait until we observe all the files self.assertFileList(root, files=[ 'foo', 'foo/111', 'foo/bar', 'foo/bar/222']) # now check the delta for the since expected = ['foo/bar', 'foo/bar/222'] if watch['watcher'] in ('portfs', 'kqueue'): # These systems also show the containing dir as modified expected.append('foo') self.assertFileList(root, cursor='n:foo', files=expected) def test_sinceRelativeRoot(self): root = self.mkdtemp() self.watchmanCommand('watch', root) clock = self.watchmanCommand('clock', root)['clock'] self.touchRelative(root, 'a') os.mkdir(os.path.join(root, 'subdir')) self.touchRelative(os.path.join(root, 'subdir'), 'foo') self.assertFileList(root, files=[ 'a', 'subdir', 'subdir/foo']) res = self.watchmanCommand('query', root, { 'since': clock, 'relative_root': 'subdir', 'fields': ['name']}) self.assertEqual(self.normWatchmanFileList(res['files']), self.normFileList(['foo'])) # touch a file outside the relative root self.touchRelative(root, 'b') self.assertFileList(root, files=[ 'a', 'b', 'subdir', 'subdir/foo']) res = self.watchmanCommand('query', root, { 'since': res['clock'], 'relative_root': 'subdir', 'fields': ['name']}) expect = [] # Filter out 'foo' as some operating systems may report # it and others may not. We're not interested in it here. self.assertEqual(self.normFileList( filter(lambda x: x != 'foo', res['files'])), expect) # touching just the subdir shouldn't cause anything to show up self.touchRelative(root, 'subdir') self.waitForSync(root) res = self.watchmanCommand('query', root, { 'since': res['clock'], 'relative_root': 'subdir', 'fields': ['name']}) self.assertEqual(self.normWatchmanFileList(res['files']), []) # touching a new file inside the subdir should cause it to show up dir2 = os.path.join(root, 'subdir', 'dir2') os.mkdir(dir2) self.touchRelative(dir2, 'bar') self.waitForSync(root) res = self.watchmanCommand('query', root, { 'since': res['clock'], 'relative_root': 'subdir', 'fields': ['name']}) self.assertEqual(self.normWatchmanFileList(res['files']), self.normFileList(['dir2', 'dir2/bar'])) def assertFreshInstanceForSince(self, root, cursor, empty=False): res = self.watchmanCommand('query', root, { 'since': cursor, 'fields': ['name'], 'empty_on_fresh_instance': empty}) self.assertTrue(res['is_fresh_instance']) if empty: self.assertEqual(self.normWatchmanFileList(res['files']), []) else: self.assertEqual(self.normWatchmanFileList(res['files']), self.normFileList(['111'])) def test_sinceFreshInstance(self): root = self.mkdtemp() self.watchmanCommand('watch', root) self.assertFileList(root, []) self.touchRelative(root, '111') res = self.watchmanCommand('query', root, { 'fields': ['name']}) self.assertTrue(res['is_fresh_instance']) self.assertEqual(self.normWatchmanFileList(res['files']), self.normFileList(['111'])) # relative clock value, fresh instance self.assertFreshInstanceForSince(root, 'c:0:1:0:1', False) # old-style clock value (implies fresh instance, event if the # pid is the same) pid = self.watchmanCommand('get-pid')['pid'] self.assertFreshInstanceForSince(root, 'c:%s:1' % pid, False) # -- decompose clock and replace elements one by one clock = self.watchmanCommand('clock', root)['clock'] p = clock.split(':') # ['c', startTime, pid, rootNum, ticks] self.assertEqual(len(p), 5) # replace start time self.assertFreshInstanceForSince(root, ':'.join( ['c', '0', p[2], p[3], p[4]]), False) # replace pid self.assertFreshInstanceForSince(root, ':'.join( ['c', p[1], '1', p[3], p[4]]), False) # replace root number (also try empty_on_fresh_instance) self.assertFreshInstanceForSince(root, ':'.join( ['c', p[1], p[2], '0', p[4]]), True) # empty_on_fresh_instance, not a fresh instance self.touchRelative(root, '222') res = self.watchmanCommand('query', root, { 'since': clock, 'fields': ['name'], 'empty_on_fresh_instance': True}) self.assertFalse(res['is_fresh_instance']) self.assertEqual(self.normWatchmanFileList(res['files']), self.normFileList(['222'])) # fresh instance results should omit deleted files os.unlink(os.path.join(root, '111')) res = self.watchmanCommand('query', root, { 'since': 'c:0:1:0:1', 'fields': ['name']}) self.assertTrue(res['is_fresh_instance']) self.assertEqual(self.normWatchmanFileList(res['files']), self.normFileList(['222'])) def test_reAddWatchFreshInstance(self): root = self.mkdtemp() self.watchmanCommand('watch', root) self.assertFileList(root, []) self.touchRelative(root, '111') res = self.watchmanCommand('query', root, { 'fields': ['name']}) self.assertTrue(res['is_fresh_instance']) self.assertEqual(self.normWatchmanFileList(res['files']), self.normFileList(['111'])) clock = res['clock'] os.unlink(os.path.join(root, '111')) self.watchmanCommand('watch-del', root) self.watchmanCommand('watch', root) self.touchRelative(root, '222') # wait for touch to be observed self.assertFileList(root, ['222']) # ensure that our since query is a fresh instance res = self.watchmanCommand('query', root, { 'since': clock, 'fields': ['name']}) self.assertTrue(res['is_fresh_instance']) self.assertEqual(self.normWatchmanFileList(res['files']), self.normFileList(['222'])) def test_recrawlFreshInstance(self): root = self.mkdtemp() self.watchmanCommand('watch', root) self.touchRelative(root, '111') self.assertFileList(root, ['111']) res = self.watchmanCommand('query', root, { 'fields': ['name']}) self.assertTrue(res['is_fresh_instance']) clock = res['clock'] os.unlink(os.path.join(root, '111')) self.watchmanCommand('debug-recrawl', root) self.touchRelative(root, '222') res = self.watchmanCommand('query', root, { 'since': clock, 'fields': ['name']}) # In earlier versions of the server, the recrawl would always # generate a fresh instance result set. This is no longer true. self.assertFalse(res['is_fresh_instance']) self.assertEqual(self.normWatchmanFileList(res['files']), self.normFileList(['111', '222'])) self.assertRegexpMatches(res['warning'], 'Recrawled this watch') def test_recrawlFreshInstanceWarningSuppressed(self): root = self.mkdtemp() with open(os.path.join(root, '.watchmanconfig'), 'w') as f: f.write(json.dumps({ 'suppress_recrawl_warnings': True })) self.watchmanCommand('watch', root) self.touchRelative(root, '111') self.assertFileList(root, ['.watchmanconfig', '111']) res = self.watchmanCommand('query', root, { 'fields': ['name']}) self.assertTrue(res['is_fresh_instance']) clock = res['clock'] os.unlink(os.path.join(root, '111')) self.watchmanCommand('debug-recrawl', root) self.touchRelative(root, '222') res = self.watchmanCommand('query', root, { 'since': clock, 'fields': ['name']}) # In earlier versions of the server, the recrawl would always # generate a fresh instance result set. This is no longer true. self.assertFalse(res['is_fresh_instance']) self.assertEqual(self.normWatchmanFileList(res['files']), self.normFileList(['111', '222'])) self.assertTrue('warning' not in res) watchman-4.9.0/tests/integration/test_site_spawn.py000066400000000000000000000031111314236077500226040ustar00rootroot00000000000000# vim:ts=4:sw=4:et: # Copyright 2016-present Facebook, Inc. # Licensed under the Apache License, Version 2.0 from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import json import os import tempfile try: import unittest2 as unittest except ImportError: import unittest import WatchmanInstance WATCHMAN_SRC_DIR = os.environ.get('WATCHMAN_SRC_DIR', os.getcwd()) THIS_DIR = os.path.join(WATCHMAN_SRC_DIR, 'tests', 'integration') @unittest.skipIf(os.name == 'nt', "not supported on windows") class TestSiteSpawn(unittest.TestCase): def test_failingSpawner(self): config = { 'spawn_watchman_service': os.path.join(THIS_DIR, 'site_spawn_fail.py') } inst = WatchmanInstance.Instance(config=config) stdout, stderr = inst.commandViaCLI(['version']) self.assertEqual(b'', stdout) self.assertRegexpMatches(stderr.decode('ascii'), 'site_spawn_fail.py: exited with status 1') with open(inst.log_file_name, 'r') as f: self.assertEqual('failed to start\n', f.read()) def test_spawner(self): config = { 'spawn_watchman_service': os.path.join(THIS_DIR, 'site_spawn.py') } inst = WatchmanInstance.Instance(config=config) stdout, stderr = inst.commandViaCLI(['version']) parsed = json.loads(stdout.decode('ascii')) self.assertTrue('version' in parsed) # Shut down that process, as we have no automatic way to deal with it inst.commandViaCLI(['--no-spawn', '--no-local', 'shutdown-server']) watchman-4.9.0/tests/integration/test_sock_perms.py000066400000000000000000000225701314236077500226070ustar00rootroot00000000000000# vim:ts=4:sw=4:et: # Copyright 2016-present Facebook, Inc. # Licensed under the Apache License, Version 2.0 from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import WatchmanInstance import WatchmanTestCase try: import grp except ImportError: # Windows pass import os import random import stat import string import sys import tempfile import time try: import unittest2 as unittest except ImportError: import unittest import pywatchman @unittest.skipIf(os.name == 'nt' or \ sys.platform == 'darwin' or \ os.geteuid() == 0, "win or root or bad ldap") class TestSockPerms(unittest.TestCase): def _new_instance(self, config, expect_success=True): if expect_success: start_timeout = 10 else: # If the instance is going to fail anyway then there's no point # waiting so long start_timeout = 0.5 return WatchmanInstance.InstanceWithStateDir( config=config, start_timeout=start_timeout) def _get_custom_gid(self): # This is a bit hard to do: we need to find a group the user is a member # of that's not the effective or real gid. If there are none then we # must skip. groups = os.getgroups() for gid in groups: if gid != os.getgid() and gid != os.getegid(): return gid self.skipTest('no usable groups found') def _get_non_member_group(self): """Get a group tuple that this user is not a member of.""" user_groups = set(os.getgroups()) for group in grp.getgrall(): if group.gr_gid not in user_groups: return group self.skipTest('no usable groups found') def waitFor(self, cond, timeout=10): deadline = time.time() + timeout res = None while time.time() < deadline: try: res = cond() if res: return [True, res] except Exception: pass time.sleep(0.03) return [False, res] def assertWaitFor(self, cond, timeout=10, message=None): status, res = self.waitFor(cond, timeout) if status: return res if message is None: message = "%s was not met in %s seconds: %s" % (cond, timeout, res) self.fail(message) def test_too_open_user_dir(self): instance = self._new_instance({}, expect_success=False) os.makedirs(instance.user_dir) os.chmod(instance.user_dir, 0o777) with self.assertRaises(pywatchman.SocketConnectError) as ctx: instance.start() self.assertEqual(ctx.exception.sockpath, instance.getSockPath()) wanted = 'the permissions on %s allow others to write to it' % ( instance.user_dir) self.assertWaitFor(lambda: wanted in instance.getCLILogContents()) def test_invalid_sock_group(self): # create a random group name while True: group_name = ''.join(random.choice(string.ascii_lowercase) for _ in range(8)) try: grp.getgrnam(group_name) except KeyError: break instance = self._new_instance({'sock_group': group_name}, expect_success=False) with self.assertRaises(pywatchman.SocketConnectError) as ctx: instance.start() self.assertEqual(ctx.exception.sockpath, instance.getSockPath()) wanted = "group '%s' does not exist" % group_name self.assertWaitFor(lambda: wanted in instance.getCLILogContents()) def test_user_not_in_sock_group(self): group = self._get_non_member_group() instance = self._new_instance({'sock_group': group.gr_name}, expect_success=False) with self.assertRaises(pywatchman.SocketConnectError) as ctx: instance.start() self.assertEqual(ctx.exception.sockpath, instance.getSockPath()) wanted = "setting up group '%s' failed" % group.gr_name self.assertWaitFor(lambda: wanted in instance.getCLILogContents()) def test_default_sock_group(self): # By default the socket group should be the effective gid of the process gid = os.getegid() instance = self._new_instance({}) instance.start() instance.stop() self.assertFileGID(instance.user_dir, gid) self.assertFileGID(instance.sock_file, gid) def test_custom_sock_group(self): gid = self._get_custom_gid() group = grp.getgrgid(gid) instance = self._new_instance({'sock_group': group.gr_name}) instance.start() instance.stop() self.assertFileGID(instance.user_dir, gid) self.assertFileGID(instance.sock_file, gid) def test_user_previously_in_sock_group(self): """This tests the case where a user was previously in sock_group (so Watchman created the directory with that group), but no longer is (so the socket is created with a different group).""" # Since it's hard to drop a group from a process without being # superuser, fake it. Use a private testing-only config option to set # up separate groups for the directory and the file. gid = self._get_custom_gid() group = grp.getgrgid(gid) non_member_group = self._get_non_member_group() # Need to wait for the server to come up here, can't use # expect_success=False. instance = self._new_instance( {'sock_group': group.gr_name, '__sock_file_group': non_member_group.gr_name}) with self.assertRaises(pywatchman.SocketConnectError): instance.start() wanted = ("for socket '%s', gid %d doesn't match expected gid %d " "(group name %s)." % (instance.getSockPath(), gid, non_member_group.gr_gid, non_member_group.gr_name)) self.assertWaitFor(lambda: wanted in instance.getServerLogContents()) def test_invalid_sock_access(self): instance = self._new_instance({'sock_access': 'bogus'}, expect_success=False) with self.assertRaises(pywatchman.SocketConnectError) as ctx: instance.start() self.assertEqual(ctx.exception.sockpath, instance.getSockPath()) wanted = 'Expected config value sock_access to be an object' self.assertWaitFor(lambda: wanted in instance.getCLILogContents()) instance = self._new_instance({'sock_access': {'group': 'oui'}}, expect_success=False) with self.assertRaises(pywatchman.SocketConnectError) as ctx: instance.start() self.assertEqual(ctx.exception.sockpath, instance.getSockPath()) wanted = 'Expected config value sock_access.group to be a boolean' self.assertWaitFor(lambda: wanted in instance.getCLILogContents()) def test_default_sock_access(self): instance = self._new_instance({}) instance.start() instance.stop() self.assertFileMode(instance.user_dir, 0o700 | stat.S_ISGID) self.assertFileMode(instance.sock_file, 0o600) def test_custom_sock_access_group(self): instance = self._new_instance({'sock_access': {'group': True}}) instance.start() instance.stop() self.assertFileMode(instance.user_dir, 0o750 | stat.S_ISGID) self.assertFileMode(instance.sock_file, 0o660) def test_custom_sock_access_others(self): instance = self._new_instance({'sock_access': {'group': True, 'others': True}}) instance.start() instance.stop() self.assertFileMode(instance.user_dir, 0o755 | stat.S_ISGID) self.assertFileMode(instance.sock_file, 0o666) def test_sock_access_upgrade(self): instance = self._new_instance({'sock_access': {'group': True, 'others': True}}) os.makedirs(instance.user_dir) os.chmod(instance.user_dir, 0o700) instance.start() instance.stop() self.assertFileMode(instance.user_dir, 0o755 | stat.S_ISGID) self.assertFileMode(instance.sock_file, 0o666) def test_sock_access_downgrade(self): instance = self._new_instance({'sock_access': {'group': True}}) os.makedirs(instance.user_dir) os.chmod(instance.user_dir, 0o755 | stat.S_ISGID) instance.start() instance.stop() self.assertFileMode(instance.user_dir, 0o750 | stat.S_ISGID) self.assertFileMode(instance.sock_file, 0o660) def test_sock_access_group_change(self): gid = self._get_custom_gid() group = grp.getgrgid(gid) instance = self._new_instance({'sock_group': group.gr_name}) os.makedirs(instance.user_dir) # ensure that a different group is set os.chown(instance.user_dir, -1, os.getegid()) instance.start() instance.stop() self.assertFileGID(instance.user_dir, gid) self.assertFileGID(instance.sock_file, gid) def assertFileMode(self, f, mode): st = os.lstat(f) self.assertEqual(stat.S_IMODE(st.st_mode), mode) def assertFileGID(self, f, gid): st = os.lstat(f) self.assertEqual(st.st_gid, gid) watchman-4.9.0/tests/integration/test_subscribe.py000066400000000000000000000600571314236077500224250ustar00rootroot00000000000000# vim:ts=4:sw=4:et: # Copyright 2015-present Facebook, Inc. # Licensed under the Apache License, Version 2.0 from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import WatchmanTestCase import json import os import os.path try: import unittest2 as unittest except ImportError: import unittest import pywatchman @WatchmanTestCase.expand_matrix class TestSubscribe(WatchmanTestCase.WatchmanTestCase): def requiresPersistentSession(self): return True def wlockExists(self, subdata, exists): norm_wlock = self.normRelativePath('.hg/wlock') for sub in subdata: if 'files' not in sub: # Don't trip over cancellation notices left over from other # tests that ran against this same instance continue for f in sub['files']: if f['exists'] == exists and \ self.normRelativePath(f['name']) == norm_wlock: return True return False def matchStateSubscription(self, subdata, mode): for sub in subdata: if mode in sub: return sub return None def test_defer_state(self): root = self.mkdtemp() self.watchmanCommand('watch', root) self.watchmanCommand('subscribe', root, 'defer', { 'fields': ['name'], 'defer': ['foo']}) self.touchRelative(root, 'a') self.assertNotEqual(None, self.waitForSub('defer', root=root)) self.watchmanCommand('state-enter', root, 'foo') begin = self.waitForSub('defer', root)[0] self.assertEqual('foo', begin['state-enter']) self.touchRelative(root, 'in-foo') # We expect this to timeout because state=foo is asserted with self.assertRaises(pywatchman.SocketTimeout): self.waitForSub('defer', root, timeout=1) self.watchmanCommand('state-leave', root, 'foo') self.assertNotEqual(None, self.waitForSub('defer', root, accept=lambda x: self.matchStateSubscription(x, 'state-leave'))) # and now we should observe the file change self.assertNotEqual(None, self.waitForSub('defer', root)) # and again, but this time passing metadata self.watchmanCommand('state-enter', root, { 'name': 'foo', 'metadata': 'meta!'}) begin = self.waitForSub('defer', root)[0] self.assertEqual('foo', begin['state-enter']) self.assertEqual('meta!', begin['metadata']) self.touchRelative(root, 'in-foo-2') # flush-subscriptions should let this come through immediately flush = self.watchmanCommand( 'flush-subscriptions', root, {'sync_timeout': 1000} ) del flush['version'] self.assertDictEqual( {'synced': ['defer'], 'no_sync_needed': [], 'dropped': []}, flush, ) sub_data = self.getSubscription('defer', root) self.assertEqual(1, len(sub_data)) self.assertFileListsEqual(['in-foo-2'], sub_data[0]['files']) self.touchRelative(root, 'in-foo-3') # We expect this to timeout because state=foo is asserted with self.assertRaises(pywatchman.SocketTimeout): self.waitForSub('defer', root, timeout=1) self.watchmanCommand('state-leave', root, { 'name': 'foo', 'metadata': 'leavemeta'}) end = self.waitForSub('defer', root, accept=lambda x: self.matchStateSubscription( x, 'state-leave'))[0] self.assertEqual('leavemeta', end['metadata']) # and now we should observe the file change self.assertNotEqual(None, self.waitForSub('defer', root)) def test_drop_state(self): root = self.mkdtemp() self.watchmanCommand('watch', root) self.watchmanCommand('subscribe', root, 'drop', { 'fields': ['name'], 'drop': ['foo']}) self.touchRelative(root, 'a') self.assertNotEqual(None, self.waitForSub('drop', root=root)) self.watchmanCommand('state-enter', root, 'foo') begin = self.waitForSub('drop', root)[0] self.assertEqual('foo', begin['state-enter']) self.touchRelative(root, 'in-foo') flush = self.watchmanCommand( 'flush-subscriptions', root, {'sync_timeout': 1000} ) del flush['version'] self.assertDictEqual( {'synced': [], 'no_sync_needed': [], 'dropped': ['drop']}, flush, ) self.touchRelative(root, 'in-foo-2') # We expect this to timeout because state=foo is asserted with self.assertRaises(pywatchman.SocketTimeout): self.waitForSub('drop', root, timeout=1) self.watchmanCommand('state-leave', root, 'foo') self.assertNotEqual(None, self.waitForSub('drop', root, accept=lambda x: self.matchStateSubscription(x, 'state-leave'))) # There should be no more subscription data to observe # because we requested that it be dropped with self.assertRaises(pywatchman.SocketTimeout): self.waitForSub('drop', root, timeout=1) # let's make sure that we can observe new changes self.touchRelative(root, 'out-foo') self.assertFileList(root, files=['a', 'in-foo', 'in-foo-2', 'out-foo']) self.assertNotEqual(None, self.waitForSub('drop', root)) def test_defer_vcs(self): root = self.mkdtemp() # fake an hg control dir os.mkdir(os.path.join(root, '.hg')) # touch another file so that the initial subscription result comes # through self.touchRelative(root, 'foo') self.watchmanCommand('watch', root) self.assertFileList(root, files=['.hg', 'foo']) self.watchmanCommand('subscribe', root, 'defer', { 'expression': ['type', 'f'], 'fields': ['name', 'exists'], 'defer_vcs': True}) dat = self.waitForSub('defer', root)[0] self.assertEqual(True, dat['is_fresh_instance']) self.assertEqual([{'name': 'foo', 'exists': True}], dat['files']) # Pretend that hg is update the working copy self.touchRelative(root, '.hg', 'wlock') # flush-subscriptions should force the update through flush = self.watchmanCommand( 'flush-subscriptions', root, {'sync_timeout': 1000} ) del flush['version'] self.assertDictEqual( {'synced': ['defer'], 'no_sync_needed': [], 'dropped': []}, flush, ) sub_data = self.getSubscription('defer', root) self.assertEqual(1, len(sub_data)) self.assertFileListsEqual( ['.hg/wlock'], [d['name'] for d in sub_data[0]['files']] ) self.touchRelative(root, 'in-foo') # We expect this to timeout because the wlock file exists with self.assertRaises(pywatchman.SocketTimeout): self.waitForSub('defer', root, accept=lambda x: self.wlockExists(x, True), timeout=2) # Remove the wlock and allow subscriptions to flow os.unlink(os.path.join(root, '.hg', 'wlock')) dat = self.waitForSub('defer', root, timeout=2, accept=lambda x: self.wlockExists(x, False)) self.assertNotEqual(None, dat) def test_immediate_subscribe(self): root = self.mkdtemp() # fake an hg control dir os.mkdir(os.path.join(root, '.hg')) self.watchmanCommand('watch', root) self.assertFileList(root, files=['.hg']) self.watchmanCommand('subscribe', root, 'nodefer', { 'fields': ['name', 'exists'], 'defer_vcs': False}) dat = self.waitForSub('nodefer', root)[0] self.assertEqual(True, dat['is_fresh_instance']) self.assertEqual([{'name': '.hg', 'exists': True}], dat['files']) # Pretend that hg is update the working copy self.touchRelative(root, '.hg', 'wlock') dat = self.waitForSub('nodefer', root, accept=lambda x: self.wlockExists(x, True)) # We observed the changes even though wlock existed self.assertNotEqual(None, dat) os.unlink(os.path.join(root, '.hg', 'wlock')) dat = self.waitForSub('nodefer', root, accept=lambda x: self.wlockExists(x, False)) self.assertNotEqual(None, dat) def test_multi_cancel(self): """Test that for multiple subscriptions on the same socket, we receive cancellation notices for all of them.""" root = self.mkdtemp() self.touchRelative(root, 'lemon') self.watchmanCommand('watch', root) self.assertFileList(root, files=['lemon']) for n in range(32): sub_name = 'sub%d' % n self.watchmanCommand('subscribe', root, sub_name, {'fields': ['name']}) # Drain the initial messages dat = self.waitForSub(sub_name, root, remove=True) self.assertEqual(len(dat), 1) dat = dat[0] self.assertFileListsEqual( self.normWatchmanFileList(dat['files']), self.normFileList(['lemon']), ) self.watchmanCommand('watch-del', root) for n in range(32): # If the cancellation notice doesn't come through this will timeout. dat = self.waitForSub('sub%d' % n, root) self.assertEqual(len(dat), 1) dat = dat[0] self.assertTrue(dat['canceled']) self.assertTrue(dat['unilateral']) def test_subscribe(self): root = self.mkdtemp() a_dir = os.path.join(root, 'a') os.mkdir(a_dir) self.touchRelative(a_dir, 'lemon') self.touchRelative(root, 'b') self.watchmanCommand('watch', root) self.assertFileList(root, files=['a', 'a/lemon', 'b']) self.watchmanCommand('subscribe', root, 'myname', { 'fields': ['name']}) self.watchmanCommand('subscribe', root, 'relative', { 'fields': ['name'], 'relative_root': 'a'}) # prove initial results come through dat = self.waitForSub('myname', root=root)[0] self.assertEqual(True, dat['is_fresh_instance']) self.assertFileListsEqual(self.normWatchmanFileList(dat['files']), self.normFileList(['a', 'a/lemon', 'b'])) # and that relative_root adapts the path name dat = self.waitForSub('relative', root=root)[0] self.assertEqual(True, dat['is_fresh_instance']) self.assertFileListsEqual(self.normWatchmanFileList(dat['files']), self.normFileList(['lemon'])) # check that deletes show up in the subscription results os.unlink(os.path.join(root, 'a', 'lemon')) dat = self.waitForSub('myname', root=root, accept=lambda x: self.findSubscriptionContainingFile(x, 'a/lemon')) self.assertNotEqual(None, dat) self.assertEqual(False, dat[0]['is_fresh_instance']) dat = self.waitForSub('relative', root=root, accept=lambda x: self.findSubscriptionContainingFile(x, 'lemon')) self.assertNotEqual(None, dat) self.assertEqual(False, dat[0]['is_fresh_instance']) # Trigger a recrawl and ensure that the subscription isn't lost self.watchmanCommand('debug-recrawl', root) def matchesRecrawledDir(subdata): for sub in subdata: if 'warning' in sub: return True return False # ensure that there is at least one change to broadcast self.touchRelative(root, 'a') dat = self.waitForSub('myname', root=root, accept=matchesRecrawledDir) self.assertNotEqual(None, dat) # Ensure that we observed the recrawl warning warn = None for item in dat: if 'warning' in item: warn = item['warning'] break self.assertRegexpMatches(warn, r'Recrawled this watch') def test_flush_subscriptions(self): root = self.mkdtemp() with open(os.path.join(root, '.watchmanconfig'), 'w') as f: f.write(json.dumps({ 'win32_batch_latency_ms': 0 })) a_dir = os.path.join(root, 'a') os.mkdir(a_dir) self.touchRelative(a_dir, 'lemon.txt') self.touchRelative(a_dir, 'orange.dat') self.touchRelative(root, 'b') self.watchmanCommand('watch', root) self.assertFileList( root, files=['.watchmanconfig', 'a', 'a/lemon.txt', 'a/orange.dat', 'b'] ) self.watchmanCommand( 'subscribe', root, 'sub1', { 'fields': ['name'], 'expression': ['type', 'f'], } ) self.watchmanCommand( 'subscribe', root, 'sub2', { 'fields': ['name'], 'expression': ['allof', ['type', 'f'], ['suffix', 'txt']], } ) self.watchmanCommand( 'subscribe', root, 'sub3', { 'fields': ['name'], 'expression': ['allof', ['type', 'f'], ['suffix', 'dat']], } ) root2 = self.mkdtemp() self.touchRelative(root2, 'banana') self.watchmanCommand('watch', root2) self.assertFileList(root2, files=['banana']) ret = self.watchmanCommand( 'subscribe', root2, 'sub-other', {'fields': ['name']} ) # discard the initial result PDUs self.waitForSub('sub1', root=root) self.waitForSub('sub2', root=root) self.waitForSub('sub3', root=root) # pause subscriptions so that the result of flush-subscriptions is # deterministic debug_ret = self.watchmanCommand( 'debug-set-subscriptions-paused', {'sub1': True, 'sub2': True, 'sub3': True}, ) self.assertDictEqual( { 'sub1': {'old': False, 'new': True}, 'sub2': {'old': False, 'new': True}, 'sub3': {'old': False, 'new': True}, }, debug_ret['paused'] ) self.touchRelative(root, 'c') self.touchRelative(a_dir, 'd.txt') self.touchRelative(a_dir, 'e.dat') # test out a few broken flush-subscriptions broken_args = [ (tuple(), "wrong number of arguments to 'flush-subscriptions'"), ((root, ), "wrong number of arguments to 'flush-subscriptions'"), ( (root, {'subscriptions': ['sub1']}), "key 'sync_timeout' is not present in this json object", ), ( (root, {'subscriptions': 'wat', 'sync_timeout': 2000}), "expected 'subscriptions' to be an array of subscription names", ), ( ( root, {'subscriptions': ['sub1', False], 'sync_timeout': 2000} ), "expected 'subscriptions' to be an array of subscription names", ), ( ( root, {'subscriptions': ['sub1', 'notsub'], 'sync_timeout': 2000} ), "this client does not have a subscription named 'notsub'", ), ( ( root, { 'subscriptions': ['sub1', 'sub-other'], 'sync_timeout': 2000 } ), "subscription 'sub-other' is on root", ), ] for args, err_msg in broken_args: with self.assertRaises(pywatchman.WatchmanError) as ctx: self.watchmanCommand('flush-subscriptions', *args) self.assertIn(err_msg, str(ctx.exception)) ret = self.watchmanCommand( 'flush-subscriptions', root, {'sync_timeout': 1000, 'subscriptions': ['sub1', 'sub2']}, ) version = ret['version'] self.assertEqual([], ret['no_sync_needed']) self.assertItemsEqual(['sub1', 'sub2'], ret['synced']) # Do not wait for subscription results -- instead, make sure they've # shown up immediately. sub1_data = self.getSubscription('sub1', root) sub2_data = self.getSubscription('sub2', root) for sub_name, sub_data in [('sub1', sub1_data), ('sub2', sub2_data)]: self.assertEqual(1, len(sub_data)) data = sub_data[0].copy() # we'll verify these below del data['files'] del data['since'] # this is subject to change so we can't verify it del data['clock'] self.assertDictEqual( { 'version': version, 'is_fresh_instance': False, 'subscription': sub_name, 'root': root, 'unilateral': True, }, data ) self.assertFileListsEqual( ['a/d.txt', 'a/e.dat', 'c'], sub1_data[0]['files'] ) self.assertFileListsEqual(['a/d.txt'], sub2_data[0]['files']) # touch another file, make sure the updates come through again self.touchRelative(a_dir, 'f.dat') ret = self.watchmanCommand( 'flush-subscriptions', root, # default for subscriptions is to sync all subscriptions matching # root (so sub1, sub2 and sub3, but not sub-other) {'sync_timeout': 1000}, ) self.assertItemsEqual(['sub2'], ret['no_sync_needed']) self.assertItemsEqual(['sub1', 'sub3'], ret['synced']) # again, don't wait for the subscriptions sub1_data2 = self.getSubscription('sub1', root) sub2_data2 = self.getSubscription('sub2', root) sub3_data2 = self.getSubscription('sub3', root) self.assertEqual(1, len(sub1_data2)) # no updates to sub2, so we expect nothing self.assertIs(None, sub2_data2) self.assertEqual(1, len(sub3_data2)) self.assertEqual( sub1_data[0]['clock'], sub1_data2[0]['since'], 'for sub1, previous "clock" should be current "since"', ) self.assertFileListsEqual(['a/f.dat'], sub1_data2[0]['files']) self.assertFileListsEqual( ['a/e.dat', 'a/f.dat'], sub3_data2[0]['files'] ) # now resume the subscriptions and make sure future updates (and only # future updates) come through self.watchmanCommand( 'debug-set-subscriptions-paused', {'sub1': False, 'sub2': False, 'sub3': False}, ) self.touchRelative(root, 'newfile.txt') new_sub1 = self.waitForSub('sub1', root=root)[0] new_sub2 = self.waitForSub('sub2', root=root)[0] self.assertEqual(sub1_data2[0]['clock'], new_sub1['since']) # for sub2 the clock is different because we've actually forced an # evaluation in between in the second flush-subscriptions call, so we # don't have a reference point self.assertFileListsEqual(['newfile.txt'], new_sub1['files']) self.assertFileListsEqual(['newfile.txt'], new_sub2['files']) def test_subscription_cleanup(self): '''Verify that subscriptions get cleaned up from internal state on unsubscribes and socket disconnects. This test failing usually indicates a reference cycle keeping the subscriber alive.''' root = self.mkdtemp() a_dir = os.path.join(root, 'a') os.mkdir(a_dir) self.touchRelative(a_dir, 'lemon.txt') self.touchRelative(a_dir, 'orange.dat') self.touchRelative(root, 'b') self.watchmanCommand('watch', root) self.assertFileList( root, files=['a', 'a/lemon.txt', 'a/orange.dat', 'b'] ) self.watchmanCommand( 'subscribe', root, 'sub1', { 'fields': ['name'], 'expression': ['type', 'f'], } ) self.touchRelative(a_dir, 'wat.txt') self.watchmanCommand( 'subscribe', root, 'sub2', { 'fields': ['name'], 'expression': ['type', 'f'], } ) out = self.watchmanCommand('debug-get-subscriptions', root) subs = set(sub['info'] for sub in out['subscribers']) self.assertItemsEqual(set(['sub1', 'sub2']), subs) # this should remove sub1 from the map self.watchmanCommand('unsubscribe', root, 'sub1') out = self.watchmanCommand('debug-get-subscriptions', root) subs = set(sub['info'] for sub in out['subscribers']) self.assertItemsEqual(set(['sub2']), subs) # flush sub2 so that there's no reason anything else would be keeping # it around self.watchmanCommand( 'flush-subscriptions', root, {'sync_timeout': 1000} ) # disconnect from the socket -- the next command will reconnect the # socket, but sub2 should have disappeared self.client.close() # It might take a while for watchman to realize its connection has been # reset, so check repeatedly. def checkSubscribers(): out = self.watchmanCommand('debug-get-subscriptions', root) return out['subscribers'] self.assertWaitForEqual([], checkSubscribers) # TODO: Assimilate this test into test_subscribe when Watchman gets # unicode support. # TODO: Correctly test subscribe with unicode on Windows. @unittest.skipIf(os.name == 'nt', 'win') @WatchmanTestCase.skip_for(codecs=['json']) def test_subscribe_unicode(self): unicode_filename = u'\u263a' root = self.mkdtemp() a_dir = os.path.join(root, 'a') os.mkdir(a_dir) self.touchRelative(a_dir, 'lemon') self.touchRelative(root, 'b') self.touchRelative(root, unicode_filename) self.watchmanCommand('watch', root) # On Python 2, pywatchman returns bytestrings by default. On Python 3 # it returns Unicode strings. So we need to take care of that. if not pywatchman.compat.PYTHON3: unicode_filename = unicode_filename.encode('utf-8') self.assertFileList(root, files=['a', 'a/lemon', 'b', unicode_filename]) self.watchmanCommand('subscribe', root, 'myname', { 'fields': ['name']}) self.watchmanCommand('subscribe', root, 'relative', { 'fields': ['name'], 'relative_root': 'a'}) # prove initial results come through dat = self.waitForSub('myname', root=root)[0] self.assertEqual(True, dat['is_fresh_instance']) self.assertFileListsEqual(self.normWatchmanFileList(dat['files']), self.normFileList(['a', 'a/lemon', 'b', unicode_filename])) os.unlink(os.path.join(root, 'a', 'lemon')) # Trigger a recrawl and ensure that the subscription isn't lost self.watchmanCommand('debug-recrawl', root) def matchesRecrawledDir(subdata): for sub in subdata: if 'warning' in sub: return True return False # ensure that there is at least one change to broadcast self.touchRelative(root, 'a') dat = self.waitForSub('myname', root=root, accept=matchesRecrawledDir) self.assertNotEqual(None, dat) # Ensure that we observed the recrawl warning warn = None for item in dat: if 'warning' in item: warn = item['warning'] break self.assertRegexpMatches(warn, r'Recrawled this watch') watchman-4.9.0/tests/integration/test_symlink.py000066400000000000000000000301271314236077500221250ustar00rootroot00000000000000# vim:ts=4:sw=4:et: # Copyright 2016-present Facebook, Inc. # Licensed under the Apache License, Version 2.0 import WatchmanTestCase import tempfile import os import os.path import sys import json try: import unittest2 as unittest except ImportError: import unittest def buggy_fsevents(): ''' older versions of macOS had some problems reporting changes when a symlink was updated to a dangling value. This was fixed in macOS 10.12 ''' if sys.platform != 'darwin': return False # look at the kernel release; it is fixed in 16+ return int(os.uname()[2].split('.')[0]) < 16 @WatchmanTestCase.expand_matrix class TestSymlink(WatchmanTestCase.WatchmanTestCase): def checkOSApplicability(self): if os.name == 'nt': self.skipTest('N/A on Windows') def makeRootAndConfig(self): root = self.mkdtemp() with open(os.path.join(root, '.watchmanconfig'), 'w') as f: f.write(json.dumps({ 'watch_symlinks': True })) return root # test to see that valid symbolic link # updates are picked up by the symlink_target field def test_symlink(self): root = self.mkdtemp() self.touchRelative(root, '222') self.touchRelative(root, '333') os.symlink(os.path.join(root, '222'), os.path.join(root, '111')) self.watchmanCommand('watch', root) self.assertFileList(root, ['111', '222', '333']) expr = { "expression": ["name", "111"], "fields": ["name", "symlink_target"] } res = self.watchmanCommand('query', root, expr) self.assertEqual('222', os.path.basename(res['files'][0]['symlink_target'])) os.unlink(os.path.join(root, '111')) os.symlink(os.path.join(root, '333'), os.path.join(root, '111')) res = self.watchmanCommand('query', root, expr) self.assertEqual('333', os.path.basename(res['files'][0]['symlink_target'])) # test to see that invalid symbolic link # updates are picked up by the symlink_target field # Skipping this test on mac due to the dangling symlink bug in fsevents @unittest.skipIf(buggy_fsevents(), 'known fsevents bug') def test_invalidSymlink(self): root = self.mkdtemp() os.symlink(os.path.join(root, '222'), os.path.join(root, '111')) self.watchmanCommand('watch', root) self.assertFileList(root, ['111' ]) expr = { "expression": ["name", "111"], "fields": ["name", "symlink_target"] } res = self.watchmanCommand('query', root, expr) self.assertEqual( '222', os.path.basename(res['files'][0]['symlink_target']) ) os.unlink(os.path.join(root, '111')) os.symlink(os.path.join(root, '333'), os.path.join(root, '111')) res = self.watchmanCommand('query', root, expr) self.assertEqual( '333', os.path.basename(res['files'][0]['symlink_target']) ) # test to see that symbolic link deletes work def test_delSymlink(self): root = self.mkdtemp() self.touchRelative(root, '222') os.symlink(os.path.join(root, '222'), os.path.join(root, '111')) self.watchmanCommand('watch', root) self.assertFileList(root, ['111', '222' ]) # capture the clock so that we can use a since query, # see the removed entry when we query later on. clock = self.watchmanCommand('clock', root)['clock'] os.unlink(os.path.join(root, '111')) expr = { "expression" : [ "name", "111"], "fields": ["name", "exists"], "since" : clock } res = self.watchmanCommand('query', root, expr) self.assertEqual('111', res['files'][0]['name']) self.assertFalse(res['files'][0]['exists']) # test to see that when a symbolic link is changed to a file, # the symlink target is updated correctly def test_symlinkToFileDir(self): root = self.mkdtemp() self.touchRelative(root, '222') os.symlink(os.path.join(root, '222'), os.path.join(root, '111')) self.watchmanCommand('watch', root) self.assertFileList(root, ['111', '222']) expr = { "expression": ["name", "111"], "fields": ["name", "symlink_target", "type"] } res = self.watchmanCommand('query', root, expr) self.assertEqual( '222', os.path.basename(res['files'][0]['symlink_target']) ) self.assertEqual('l', res['files'][0]['type']) os.unlink(os.path.join(root, '111')) self.touchRelative(root, '111') res = self.watchmanCommand('query', root, expr) self.assertTrue(res['files'] and ('symlink_target' not in res['files'][0] or res['files'][0]['symlink_target'] is None)) self.assertEqual('f', res['files'][0]['type']) os.unlink(os.path.join(root, '111')) os.mkdir(os.path.join(root, '111')) res = self.watchmanCommand('query', root, expr) self.assertTrue(res['files'] and ('symlink_target' not in res['files'][0] or res['files'][0]['symlink_target'] is None)) self.assertEqual('d', res['files'][0]['type']) def test_watchSymlinkTarget(self): def make_roots(): # B/link -> C/file # A/link -> B/file rootA = self.makeRootAndConfig() rootB = self.makeRootAndConfig() rootC = self.makeRootAndConfig() self.touchRelative(rootA, 'file') self.touchRelative(rootB, 'file') self.touchRelative(rootC, 'file') os.symlink(os.path.join(rootC, 'file'), os.path.join(rootB, 'link')) os.symlink(os.path.join(rootB, 'file'), os.path.join(rootA, 'link')) return rootA, rootB, rootC root1, root2, root3 = make_roots() root1prime, root2prime, root3prime = make_roots() self.watchmanCommand('watch', root1) expected = [root1, root2, root3] self.assertWatchListContains(expected) self.assertFileList(root1, ['.watchmanconfig', 'file', 'link']) os.symlink(os.path.join(root1prime, 'file'), os.path.join(root1, 'linkToPrime')) expected += [root1prime, root2prime, root3prime] self.assertWatchListContains(expected) self.assertFileList(root1prime, ['.watchmanconfig', 'file', 'link']) def test_watchSymlinkTargetLinkToLink(self): def make_roots(): # B/link -> C/file # A/link -> B/link rootA = self.makeRootAndConfig() rootB = self.makeRootAndConfig() rootC = self.makeRootAndConfig() self.touchRelative(rootA, 'file') self.touchRelative(rootC, 'file') os.symlink(os.path.join(rootC, 'file'), os.path.join(rootB, 'link')) os.symlink(os.path.join(rootB, 'link'), os.path.join(rootA, 'link')) return rootA, rootB, rootC root1, root2, root3 = make_roots() root1prime, root2prime, root3prime = make_roots() self.watchmanCommand('watch', root1) expected = [root1, root2, root3] self.assertWatchListContains(expected) self.assertFileList(root1, ['.watchmanconfig', 'file', 'link']) os.symlink(os.path.join(root1prime, 'file'), os.path.join(root1, 'linkToPrime')) expected += [root1prime, root2prime, root3prime] self.assertWatchListContains(expected) self.assertFileList(root1prime, ['.watchmanconfig', 'file', 'link']) def test_watchRelativeSymlinkTarget(self): def make_roots(): # A/link --relative-link--> B/file # So, the target of A/link is "../B/file" rootA = self.makeRootAndConfig() rootB = self.makeRootAndConfig() self.touchRelative(rootA, 'file') self.touchRelative(rootB, 'file') os.symlink(os.path.relpath(os.path.join(rootB, 'file'), rootA), os.path.join(rootA, 'link')) return rootA, rootB root1, root2 = make_roots() root1prime, root2prime = make_roots() self.watchmanCommand('watch', root1) expected = [root1, root2] self.assertWatchListContains(expected) self.assertFileList(root1, ['.watchmanconfig', 'file', 'link']) os.symlink(os.path.join(root1prime, 'file'), os.path.join(root1, 'linkToPrime')) expected += [root1prime, root2prime] self.assertWatchListContains(expected) self.assertFileList(root1prime, ['.watchmanconfig', 'file', 'link']) def test_watchRelativeSymlinkTargetOneHop(self): def make_roots(): # A/dir/link --relative-link--> B/file # So, the target of A/dir/link is "../../B/file" rootA = self.makeRootAndConfig() rootB = self.makeRootAndConfig() self.touchRelative(rootA, 'file') os.mkdir(os.path.join(rootA, 'dir')) self.touchRelative(rootB, 'file') os.symlink(os.path.relpath(os.path.join(rootB, 'file'), os.path.join(rootA, 'dir')), os.path.join(rootA, 'dir', 'link')) return rootA, rootB root1, root2 = make_roots() root1prime, root2prime = make_roots() self.watchmanCommand('watch-project', root1) expected = [root1, root2] self.assertWatchListContains(expected) self.assertFileList(root1, ['.watchmanconfig', 'file', 'dir', 'dir/link']) os.symlink(os.path.join(root1prime, 'file'), os.path.join(root1, 'linkToPrime')) expected += [root1prime, root2prime] self.assertWatchListContains(expected) self.assertFileList(root1prime, ['.watchmanconfig', 'file', 'dir', 'dir/link']) def test_watchSymlinkToDir(self): def make_roots(): # A/link -> B/dir rootA = self.makeRootAndConfig() rootB = self.makeRootAndConfig() os.mkdir(os.path.join(rootB, 'dir')) self.touchRelative(os.path.join(rootB, 'dir'), 'file') os.symlink(os.path.join(rootB, 'dir', 'file'), os.path.join(rootA, 'linkToDir')) self.touchRelative(rootA, 'file') return rootA, rootB root1, root2 = make_roots() root1prime, root2prime = make_roots() self.watchmanCommand('watch-project', root1) expected = [root1, root2] self.assertWatchListContains(expected) self.assertFileList(root1, ['.watchmanconfig', 'file', 'linkToDir']) os.symlink(os.path.join(root1prime, 'file'), os.path.join(root1, 'linkToPrime')) expected += [root1prime, root2prime] self.assertWatchListContains(expected) self.assertFileList(root1prime, ['.watchmanconfig', 'file', 'linkToDir']) def test_watchSymlinkToDirContainsSymlink(self): def make_roots(): # B/dir/link -> C/file # A/link -> B/dir rootA = self.makeRootAndConfig() rootB = self.makeRootAndConfig() rootC = self.makeRootAndConfig() self.touchRelative(rootC, 'file') os.mkdir(os.path.join(rootB, 'dir')) os.symlink(os.path.join(rootC, 'file'), os.path.join(rootB, 'dir', 'link')) os.symlink(os.path.join(rootB, 'dir'), os.path.join(rootA, 'linkToDir')) self.touchRelative(os.path.join(rootA, 'file')) return rootA, rootB, rootC root1, root2, root3 = make_roots() root1prime, root2prime, root3prime = make_roots() self.watchmanCommand('watch-project', root1) expected = [root1, root2, root3] self.assertWatchListContains(expected) self.assertFileList(root1, ['.watchmanconfig', 'file', 'linkToDir']) os.symlink(os.path.join(root1prime, 'file'), os.path.join(root1, 'linkToPrime')) expected += [root1prime, root2prime, root3prime] self.assertWatchListContains(expected) self.assertFileList(root1prime, ['.watchmanconfig', 'file', 'linkToDir']) watchman-4.9.0/tests/integration/test_trigger.py000066400000000000000000000217611314236077500221060ustar00rootroot00000000000000# vim:ts=4:sw=4:et: # Copyright 2012-present Facebook, Inc. # Licensed under the Apache License, Version 2.0 from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import WatchmanTestCase import json import os import os.path import sys import re WATCHMAN_SRC_DIR = os.environ.get('WATCHMAN_SRC_DIR', os.getcwd()) THIS_DIR = os.path.join(WATCHMAN_SRC_DIR, 'tests', 'integration') @WatchmanTestCase.expand_matrix class TestTrigger(WatchmanTestCase.WatchmanTestCase): def requiresPersistentSession(self): # cli transport has no log subscriptions return True def matchTriggerInLog(self, logs, root, triggerName): r = re.compile('%s.*posix_spawnp: %s' % (re.escape(root), triggerName), re.I) for line in logs: if r.search(line.replace('\\', '/')): return True return False def hasTriggerInLogs(self, root, triggerName): client = self.getClient() logs = client.getLog(remove=False) if self.matchTriggerInLog(logs, root, triggerName): return True res = client.receive() while client.isUnilateralResponse(res): logs = client.getLog(remove=False) if self.matchTriggerInLog(logs, root, triggerName): return True res = client.receive() return False # https://github.com/facebook/watchman/issues/141 def test_triggerIssue141(self): root = self.mkdtemp() self.touchRelative(root, 'foo.js') self.watchmanCommand('watch', root) self.assertFileList(root, ['foo.js']) touch = os.path.join(THIS_DIR, 'touch.py') logs = self.mkdtemp() first_log = os.path.join(logs, 'first') second_log = os.path.join(logs, 'second') res = self.watchmanCommand('trigger', root, 'first', '*.js', '--', sys.executable, touch, first_log) self.assertEqual(res['triggerid'], 'first') res = self.watchmanCommand('trigger', root, 'second', '*.js', '--', sys.executable, touch, second_log) self.assertEqual(res['triggerid'], 'second') self.assertWaitFor(lambda: os.path.exists(first_log) and os.path.exists(second_log), message='both triggers fire at start') # start collecting logs self.watchmanCommand('log-level', 'debug') # touch the file, should run both triggers self.touchRelative(root, 'foo.js') self.assertWaitFor(lambda: self.hasTriggerInLogs(root, 'first') and self.hasTriggerInLogs(root, 'second'), message='both triggers fired on update') def validate_trigger_output(self, root, files, context): trigger_log = os.path.join(root, 'trigger.log') trigger_json = os.path.join(root, 'trigger.json') def files_are_listed(): if not os.path.exists(trigger_log): return False with open(trigger_log) as f: n = 0 for line in f: for filename in files: if filename in line: n = n + 1 return n == len(files) self.assertWaitFor(lambda: files_are_listed(), message='%s should contain %s' % (trigger_log, json.dumps(files))) def files_are_listed_json(): if not os.path.exists(trigger_json): return False expect = {} for f in files: expect[f] = True with open(trigger_json) as f: result = {} for line in f: data = json.loads(line) for item in data: result[item['name']] = item['exists'] return result == expect self.assertWaitFor(lambda: files_are_listed_json(), message='%s should contain %s' % (trigger_json, json.dumps(files))) def test_legacyTrigger(self): root = self.mkdtemp() self.touchRelative(root, 'foo.c') self.touchRelative(root, 'b ar.c') self.touchRelative(root, 'bar.txt') with open(os.path.join(root, '.watchmanconfig'), 'w') as f: json.dump({'settle': 200}, f) watch = self.watchmanCommand('watch', root) self.assertFileList(root, ['.watchmanconfig', 'b ar.c', 'bar.txt', 'foo.c']) res = self.watchmanCommand('trigger', root, 'test', '*.c', '--', sys.executable, os.path.join(THIS_DIR, 'trig.py'), os.path.join(root, 'trigger.log')) self.assertEqual('created', res['disposition']) res = self.watchmanCommand('trigger', root, 'other', '*.c', '--', sys.executable, os.path.join(THIS_DIR, 'trigjson.py'), os.path.join(root, 'trigger.json')) self.assertEqual('created', res['disposition']) # check that the legacy parser produced the right trigger def expect = [ {'name': 'other', 'append_files': True, 'command': [sys.executable, os.path.join(THIS_DIR, 'trigjson.py'), os.path.join(root, 'trigger.json')], 'expression': ['anyof', ['match', '*.c', 'wholename']], 'stdin': ['name', 'exists', 'new', 'size', 'mode']}, {'name': 'test', 'append_files': True, 'command': [sys.executable, os.path.join(THIS_DIR, 'trig.py'), os.path.join(root, 'trigger.log')], 'expression': ['anyof', ['match', '*.c', 'wholename']], 'stdin': ['name', 'exists', 'new', 'size', 'mode']}] triggers = self.watchmanCommand('trigger-list', root).get('triggers') self.assertItemsEqual(triggers, expect) # start collecting logs self.watchmanCommand('log-level', 'debug') self.suspendWatchman() self.touchRelative(root, 'foo.c') self.touchRelative(root, 'b ar.c') self.resumeWatchman() self.assertWaitFor(lambda: self.hasTriggerInLogs(root, 'test') and self.hasTriggerInLogs(root, 'other'), message='both triggers fired on update') self.watchmanCommand('log-level', 'off') self.validate_trigger_output(root, ['foo.c', 'b ar.c'], 'initial') def remove_logs(): os.unlink(os.path.join(root, 'trigger.log')) os.unlink(os.path.join(root, 'trigger.json')) for f in ('foo.c', 'b ar.c'): # Validate that we observe the updates correctly # (that we're handling the since portion of the query) self.suspendWatchman() remove_logs() self.touchRelative(root, f) self.resumeWatchman() self.validate_trigger_output(root, [f], 'only %s' % f) remove_logs() self.watchmanCommand('log-level', 'debug') self.watchmanCommand('debug-recrawl', root) # ensure that the triggers don't get deleted triggers = self.watchmanCommand('trigger-list', root).get('triggers') self.assertItemsEqual(triggers, expect) self.watchmanCommand('log-level', 'off') self.touchRelative(root, 'foo.c') expect = ['foo.c'] if watch['watcher'] == 'win32': # We end up re-scanning the root here and noticing that # b ar.c has changed. What we're testing here is that # the trigger is run again, and it is ok if it notifies # about more files on win32, so just adjust expec:tations # here in the test to accomodate that difference. expect = ['foo.c', 'b ar.c'] self.validate_trigger_output(root, expect, 'after recrawl') # Now test to see how we deal with updating the defs res = self.watchmanCommand('trigger', root, 'other', '*.c', '--', 'true') self.assertEqual('replaced', res['disposition']) res = self.watchmanCommand('trigger', root, 'other', '*.c', '--', 'true') self.assertEqual('already_defined', res['disposition']) # and deletion res = self.watchmanCommand('trigger-del', root, 'test') self.assertTrue(res['deleted']) self.assertEqual('test', res['trigger']) triggers = self.watchmanCommand('trigger-list', root) self.assertEqual(1, len(triggers['triggers'])) res = self.watchmanCommand('trigger-del', root, 'other') self.assertTrue(res['deleted']) self.assertEqual('other', res['trigger']) triggers = self.watchmanCommand('trigger-list', root) self.assertEqual(0, len(triggers['triggers'])) watchman-4.9.0/tests/integration/test_trigger_chdir.py000066400000000000000000000214161314236077500232540ustar00rootroot00000000000000# vim:ts=4:sw=4:et: # Copyright 2012-present Facebook, Inc. # Licensed under the Apache License, Version 2.0 from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import WatchmanTestCase import json import os import os.path import sys import time WATCHMAN_SRC_DIR = os.environ.get('WATCHMAN_SRC_DIR', os.getcwd()) THIS_DIR = os.path.join(WATCHMAN_SRC_DIR, 'tests', 'integration') @WatchmanTestCase.expand_matrix class TestTrigger(WatchmanTestCase.WatchmanTestCase): def fileContains(self, file_name, thing): if not os.path.exists(file_name): return False thing = thing + '\n' with open(file_name, 'r') as f: return thing in f def fileHasValidJson(self, file_name): if not os.path.exists(file_name): return False try: with open(file_name, 'r') as f: json.load(f) return True except Exception: return False def checkOSApplicability(self): if os.name == 'nt': self.skipTest('no append on Windows') def test_triggerChdir(self): root = self.mkdtemp() os.mkdir(os.path.join(root, 'sub')) self.watchmanCommand('watch', root) self.watchmanCommand('trigger', root, { 'name': 'cap', 'command': [ sys.executable, os.path.join(THIS_DIR, 'trig-cwd.py'), ], 'stdout': '>%s' % os.path.join(root, 'trig.log'), 'expression': ['suffix', 'txt'], 'stdin': '/dev/null', 'chdir': 'sub'}) self.touchRelative(root, 'A.txt') self.assertWaitFor(lambda: self.fileContains( os.path.join(root, 'trig.log'), 'PWD=' + os.path.join(root, 'sub'))) self.assertWaitFor(lambda: self.fileContains( os.path.join(root, 'trig.log'), 'WATCHMAN_EMPTY_ENV_VAR=')) def test_triggerChdirRelativeRoot(self): root = self.mkdtemp() os.mkdir(os.path.join(root, 'sub1')) os.mkdir(os.path.join(root, 'sub1', 'sub2')) self.watchmanCommand('watch', root) self.watchmanCommand('trigger', root, { 'name': 'cap', 'command': [ sys.executable, os.path.join(THIS_DIR, 'trig-cwd.py'), ], 'stdout': '>%s' % os.path.join(root, 'trig.log'), 'expression': ['suffix', 'txt'], 'relative_root': 'sub1', 'stdin': '/dev/null', 'chdir': 'sub2'}) self.touchRelative(root, 'sub1', 'A.txt') self.assertWaitFor(lambda: self.fileContains( os.path.join(root, 'trig.log'), 'PWD=' + os.path.join(root, 'sub1', 'sub2'))) self.assertWaitFor( lambda: self.fileContains( os.path.join(root, 'trig.log'), 'WATCHMAN_ROOT=' + root)) self.assertWaitFor( lambda: self.fileContains( os.path.join(root, 'trig.log'), 'WATCHMAN_RELATIVE_ROOT=' + os.path.join(root, 'sub1'))) def test_triggerMaxFiles(self): root = self.mkdtemp() with open(os.path.join(root, '.watchmanconfig'), 'w') as f: f.write(json.dumps({'settle': 200})) self.watchmanCommand('watch', root) self.watchmanCommand('trigger', root, { 'name': 'cap', 'command': [ sys.executable, os.path.join(THIS_DIR, 'trig-cwd.py'), ], 'stdout': '>>%s' % os.path.join(root, 'trig.log'), 'expression': ['suffix', 'txt'], 'stdin': ['name'], 'max_files_stdin': 2}) self.touchRelative(root, 'A.txt') self.assertWaitFor(lambda: self.fileContains( os.path.join(root, 'trig.log'), 'PWD=' + root)) self.assertTrue( not self.fileContains( os.path.join(root, 'trig.log'), 'WATCHMAN_FILES_OVERFLOW=true'), msg='No overflow for a single file') deadline = time.time() + 5 overflown = False while time.time() < deadline: os.unlink(os.path.join(root, 'trig.log')) self.touchRelative(root, 'B.txt') self.touchRelative(root, 'A.txt') self.touchRelative(root, 'C.txt') self.touchRelative(root, 'D.txt') self.assertWaitFor(lambda: self.fileContains( os.path.join(root, 'trig.log'), 'PWD=' + root)) if self.fileContains(os.path.join(root, 'trig.log'), 'WATCHMAN_FILES_OVERFLOW=true'): overflown = True break self.assertTrue(overflown, 'Observed WATCHMAN_FILES_OVERFLOW') def test_triggerNamePerLine(self): root = self.mkdtemp() self.watchmanCommand('watch', root) log_file = os.path.join(root, 'trig.log') self.watchmanCommand('trigger', root, { 'name': 'cat', 'command': [ sys.executable, os.path.join(THIS_DIR, 'cat.py'), ], 'stdout': '>%s' % log_file, 'expression': ['suffix', 'txt'], 'stdin': 'NAME_PER_LINE'}) self.touchRelative(root, 'A.txt') self.assertWaitFor(lambda: self.fileContains(log_file, 'A.txt')) self.touchRelative(root, 'B.txt') self.touchRelative(root, 'A.txt') self.assertWaitFor(lambda: self.fileContains( log_file, 'A.txt') and self.fileContains(log_file, 'B.txt')) with open(log_file, 'r') as f: self.assertEqual(['A.txt\n', 'B.txt\n'], sorted(f.readlines())) def test_triggerNamePerLineRelativeRoot(self): root = self.mkdtemp() os.mkdir(os.path.join(root, 'subdir')) self.watchmanCommand('watch', root) log_file = os.path.join(root, 'trig.log') self.watchmanCommand('trigger', root, { 'name': 'cat', 'command': [ sys.executable, os.path.join(THIS_DIR, 'cat.py'), ], 'relative_root': 'subdir', 'stdout': '>%s' % log_file, 'expression': ['suffix', 'txt'], 'stdin': 'NAME_PER_LINE'}) self.touchRelative(root, 'A.txt') self.touchRelative(root, 'subdir', 'B.txt') self.assertWaitFor(lambda: self.fileContains(log_file, 'B.txt')) def test_triggerNamePerLineAppend(self): root = self.mkdtemp() self.watchmanCommand('watch', root) log_file = os.path.join(root, 'trig.log') self.watchmanCommand('trigger', root, { 'name': 'cat', 'command': [ sys.executable, os.path.join(THIS_DIR, 'cat.py'), ], 'stdout': '>>%s' % log_file, 'expression': ['suffix', 'txt'], 'stdin': 'NAME_PER_LINE'}) self.touchRelative(root, 'A.txt') self.assertWaitFor(lambda: self.fileContains(log_file, 'A.txt')) self.touchRelative(root, 'B.txt') self.assertWaitFor(lambda: self.fileContains( log_file, 'A.txt') and self.fileContains(log_file, 'B.txt')) with open(log_file, 'r') as f: self.assertEqual(['A.txt\n', 'B.txt\n'], sorted(f.readlines())) def test_triggerJsonNameOnly(self): root = self.mkdtemp() self.watchmanCommand('watch', root) log_file = os.path.join(root, 'trig.log') self.watchmanCommand('trigger', root, { 'name': 'cat', 'command': [ sys.executable, os.path.join(THIS_DIR, 'cat.py'), ], 'stdout': '>%s' % log_file, 'expression': ['suffix', 'txt'], 'stdin': ['name']}) self.touchRelative(root, 'A.txt') self.assertWaitFor(lambda: self.fileHasValidJson(log_file)) with open(log_file, 'r') as f: data = json.load(f) self.assertEqual(['A.txt'], data) def test_triggerJsonNameAndSize(self): root = self.mkdtemp() self.watchmanCommand('watch', root) log_file = os.path.join(root, 'trig.log') self.watchmanCommand('trigger', root, { 'name': 'cat', 'command': [ sys.executable, os.path.join(THIS_DIR, 'cat.py'), ], 'stdout': '>%s' % log_file, 'expression': ['suffix', 'txt'], 'stdin': ['name', 'size']}) self.touchRelative(root, 'A.txt') self.assertWaitFor(lambda: self.fileHasValidJson(log_file)) with open(log_file, 'r') as f: data = json.load(f) self.assertEqual('A.txt', data[0]['name']) self.assertEqual(0, data[0]['size']) watchman-4.9.0/tests/integration/test_watch_project.py000066400000000000000000000114231314236077500232710ustar00rootroot00000000000000# vim:ts=4:sw=4:et: # Copyright 2015-present Facebook, Inc. # Licensed under the Apache License, Version 2.0 from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import os import pywatchman import WatchmanInstance import WatchmanTestCase @WatchmanTestCase.expand_matrix class TestWatchProject(WatchmanTestCase.WatchmanTestCase): def runProjectTests(self, config, expect, touch_watchmanconfig=False): inst = WatchmanInstance.Instance(config=config) try: inst.start() client = self.getClient(inst) for touch, expect_watch, expect_rel, expect_pass in expect: # encode the test criteria in the dirname so that we can # figure out which test scenario failed more easily suffix = '-%s-%s-%s-%s' % ( touch, expect_watch, expect_rel, expect_pass ) suffix = suffix.replace('/', 'Z') d = self.mkdtemp(suffix=suffix) dir_to_watch = os.path.join(d, 'a', 'b', 'c') os.makedirs(dir_to_watch, 0o777) self.touchRelative(d, touch) if touch_watchmanconfig: self.touchRelative(d, '.watchmanconfig') if expect_watch: expect_watch = os.path.join(d, expect_watch) else: expect_watch = d if expect_pass: res = client.query('watch-project', dir_to_watch) self.assertEqual( self.normAbsolutePath(os.path.join(d, expect_watch)), self.normAbsolutePath(res['watch']) ) if not expect_rel: self.assertEqual(None, res.get('relative_path')) else: self.assertEqual(self.normRelativePath(expect_rel), self.normRelativePath(res.get('relative_path'))) else: with self.assertRaises(pywatchman.WatchmanError) as ctx: client.query('watch-project', dir_to_watch) self.assertIn( ( 'none of the files listed in global config ' + 'root_files are present in path `' + os.path.join( d, 'a', 'b', 'c' ) + ' or any of its parent directories' ), str(ctx.exception) ) finally: inst.stop() def test_watchProject(self): expect = [ ('a/b/c/.git', 'a/b/c', None, True), ("a/b/.hg", "a/b", "c", True), ("a/.foo", "a", "b/c", True), (".bar", None, "a/b/c", True), ("a/.bar", "a", "b/c", True), (".svn", "a/b/c", None, True), ("a/baz", "a/b/c", None, True), ] self.runProjectTests( {'root_files': ['.git', '.hg', '.foo', '.bar']}, expect ) def test_watchProjectWatchmanConfig(self): expect = [ ('a/b/c/.git', None, 'a/b/c', True), ("a/b/.hg", None, "a/b/c", True), ("a/.foo", None, "a/b/c", True), (".bar", None, "a/b/c", True), ("a/.bar", None, "a/b/c", True), (".svn", None, "a/b/c", True), ("a/baz", None, "a/b/c", True), ] self.runProjectTests( {'root_files': ['.git', '.hg', '.foo', '.bar']}, expect, touch_watchmanconfig=True ) def test_watchProjectEnforcing(self): config = { 'root_files': ['.git', '.hg', '.foo', '.bar'], 'enforce_root_files': True, } expect = [ ("a/b/c/.git", "a/b/c", None, True), ("a/b/.hg", "a/b", "c", True), ("a/.foo", "a", "b/c", True), (".bar", None, "a/b/c", True), ("a/.bar", "a", "b/c", True), (".svn", None, None, False), ("a/baz", None, None, False), ] self.runProjectTests(config=config, expect=expect) def test_reUseNestedWatch(self): d = self.mkdtemp() abc = os.path.join(d, 'a', 'b', 'c') os.makedirs(abc, 0o777) self.touchRelative(abc, '.watchmanconfig') res = self.watchmanCommand('watch-project', d) self.assertEqual(d, self.normAbsolutePath(res['watch'])) res = self.watchmanCommand('watch-project', abc) self.assertEqual(d, self.normAbsolutePath(res['watch'])) self.assertEqual('a/b/c', self.normRelativePath(res['relative_path'])) watchman-4.9.0/tests/integration/touch.py000066400000000000000000000006271314236077500205240ustar00rootroot00000000000000# Portable simple implementation of `touch` from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import os import sys import errno fname = sys.argv[1] try: os.utime(fname, None) except OSError as e: if e.errno == errno.ENOENT: with open(fname, 'a'): os.utime(fname, None) else: raise watchman-4.9.0/tests/integration/trig-cwd.py000066400000000000000000000004021314236077500211110ustar00rootroot00000000000000#!/usr/bin/env python from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import os os.environ['PWD'] = os.getcwd() for k, v in os.environ.items(): print('%s=%s' % (k, v)) watchman-4.9.0/tests/integration/trig.py000077500000000000000000000006101314236077500203420ustar00rootroot00000000000000#!/usr/bin/env python from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import sys import time log_file_name = sys.argv[1] args = sys.argv[2:] with open(log_file_name, 'a') as f: for arg in args: f.write('%s ' % time.time()) f.write(arg) f.write('\n') print('WOOT from trig.sh') watchman-4.9.0/tests/integration/trigger-error.php000066400000000000000000000056201314236077500223310ustar00rootroot00000000000000assertEqual($err, $out['error']); } function testBadArgs() { $dir = new WatchmanDirectoryFixture(); $root = $dir->getPath(); $this->watch($root); $this->assertTriggerRegError('wrong number of arguments', 'trigger'); $this->assertTriggerRegError( 'not enough arguments', 'trigger', $root ); $this->assertTriggerRegError( 'no command was specified', 'trigger', $root, 'oink' ); $this->assertTriggerRegError( 'no command was specified', 'trigger', $root, 'oink', '--' ); $this->assertTriggerRegError( 'failed to parse query: rule @ position 4 is not a string value', 'trigger', $root, 'oink', '--', 123 ); $this->assertTriggerRegError( 'invalid or missing name', 'trigger', $root, 123 ); $this->assertTriggerRegError( 'invalid or missing name', 'trigger', $root, array( ) ); $this->assertTriggerRegError( 'invalid or missing name', 'trigger', $root, array( 'name' => 123, ) ); $this->assertTriggerRegError( 'invalid command array', 'trigger', $root, array( 'name' => 'oink', ) ); $this->assertTriggerRegError( 'invalid command array', 'trigger', $root, array( 'name' => 'oink', 'command' => 123, ) ); $this->assertTriggerRegError( 'invalid command array', 'trigger', $root, array( 'name' => 'oink', 'command' => array(), ) ); $this->assertTriggerRegError( 'invalid stdin value lemon', 'trigger', $root, array( 'name' => 'oink', 'command' => array('cat'), 'stdin' => 'lemon', ) ); $this->assertTriggerRegError( 'invalid value for stdin', 'trigger', $root, array( 'name' => 'oink', 'command' => array('cat'), 'stdin' => 13 ) ); $this->assertTriggerRegError( 'max_files_stdin must be >= 0', 'trigger', $root, array( 'name' => 'oink', 'command' => array('cat'), 'max_files_stdin' => -1, ) ); $this->assertTriggerRegError( 'stdout: must be prefixed with either > or >>, got out', 'trigger', $root, array( 'name' => 'oink', 'command' => array('cat'), 'stdout' => "out", ) ); $this->assertTriggerRegError( 'stderr: must be prefixed with either > or >>, got out', 'trigger', $root, array( 'name' => 'oink', 'command' => array('cat'), 'stderr' => "out", ) ); } } watchman-4.9.0/tests/integration/trigjson.py000077500000000000000000000006541314236077500212440ustar00rootroot00000000000000#!/usr/bin/env python from __future__ import absolute_import from __future__ import division from __future__ import print_function # no unicode literals import sys import time log_file_name = sys.argv[1] # Copy json from stdin to the log file with open(log_file_name, 'a') as f: print('trigjson.py: Copying STDIN to %s' % log_file_name) json_in = sys.stdin.read() print('stdin: %s' % json_in) f.write(json_in) watchman-4.9.0/tests/integration/twodeep.php000066400000000000000000000040161314236077500212040ustar00rootroot00000000000000getPath(); $watch = $this->watch($root); $this->assertFileList($root, array()); $this->assertEqual(true, mkdir("$root/foo")); $this->assertEqual(true, mkdir("$root/foo/bar")); // Guarantee that 111's mtime is greater than its directory's sleep(1); $this->assertEqual(3, file_put_contents("$root/foo/bar/111", "111")); $this->watchmanCommand('log', 'debug', 'XXX: created 111'); $this->assertFileList($root, array( "foo", "foo/bar", "foo/bar/111" )); $query = $this->watchmanCommand('find', $root, 'foo/bar/111'); $wfile = $query['files'][0]; clearstatcache(); $sfile = stat("$root/foo/bar/111"); $query = $this->watchmanCommand('find', $root, 'foo/bar'); $wdir = $query['files'][0]; clearstatcache(); $sdir = stat("$root/foo/bar"); $this->watchmanCommand('log', 'debug', 'XXX: perform assertions'); $compare_fields = array('size', 'mode', 'uid', 'gid', 'mtime', 'ctime'); if (!phutil_is_windows()) { // These are meaningless in msvcrt, so no sense in comparing them $compare_fields[] = 'dev'; $compare_fields[] = 'ino'; // We can only get this by directly examining a file, but not implicitly // when crawling the dir $compare_fields[] = 'nlink'; } foreach ($compare_fields as $field) { $this->assertEqual($sfile[$field], $wfile[$field], "file: $field {$sfile[$field]} vs watchman {$wfile[$field]} " . json_encode($wfile)); $this->assertEqual($sdir[$field], $wdir[$field], "dir: $field {$sdir[$field]} vs watchman {$wdir[$field]}"); } $this->watchmanCommand('log', 'debug', 'XXX: remove it all'); w_rmdir_recursive("$root/foo/bar"); $this->assertFileList($root, array( "foo", )); } } watchman-4.9.0/tests/integration/type.php000066400000000000000000000036301314236077500205170ustar00rootroot00000000000000getPath(); touch("$root/foo.c"); mkdir("$root/subdir"); touch("$root/subdir/bar.txt"); $this->watch($root); $res = $this->watchmanCommand('query', $root, array( 'expression' => array('type', 'f'), 'fields' => array('name'), )); $files = $res['files']; sort($files); $this->assertEqualFileList(array('foo.c', 'subdir/bar.txt'), $files); $res = $this->watchmanCommand('query', $root, array( 'expression' => array('type', 'd'), 'fields' => array('name', 'type'), )); $this->assertEqual( $this->secondLevelSort(array( array('name' => 'subdir', 'type' => 'd') )), $this->secondLevelSort($res['files'])); $res = $this->watchmanCommand('query', $root, array( 'expression' => array('type', 'f'), 'fields' => array('name', 'type'), )); usort($res['files'], function ($a, $b) { return strcmp($a['name'], $b['name']); }); $this->assertEqual( $this->secondLevelSort(array( array('name' => 'foo.c', 'type' => 'f'), array('name' => w_normalize_filename('subdir/bar.txt'), 'type' => 'f') )), $this->secondLevelSort($res['files'])); $res = $this->watchmanCommand('query', $root, array( 'expression' => array('type', 'x'), 'fields' => array('name'), )); $this->assertEqual( "failed to parse query: invalid type string 'x'", $res['error']); $res = $this->watchmanCommand('query', $root, array( 'expression' => 'type', 'fields' => array('name'), )); $this->assertEqual( 'failed to parse query: must use ["type", "typestr"]', $res['error']); } } // vim:ts=2:sw=2:et: watchman-4.9.0/tests/integration/watch-del-all.php000066400000000000000000000017321314236077500221550ustar00rootroot00000000000000getPath()); $files = array('a', 'b', 'c', 'd', 'e'); $dirs = array_map( function ($file) use($root) { return "$root/$file"; }, $files ); foreach ($dirs as $d) { mkdir($d); foreach ($files as $f) { touch("$d/$f"); } $this->watch($d); $this->assertFileList($d, $files); } $resp = $this->watchmanCommand('watch-list'); $watched = $resp['roots']; $this->assertEqualFileList($dirs, $watched); $resp = $this->watchmanCommand('watch-del-all'); $watched = $resp['roots']; $this->assertEqualFileList($dirs, $watched); $resp = $this->watchmanCommand('watch-list'); $this->assertEqual(0, count($resp['roots'])); } } watchman-4.9.0/tests/log.cpp000066400000000000000000000013271314236077500157700ustar00rootroot00000000000000/* Copyright 2013-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #include "Logging.h" #include "thirdparty/tap.h" void w_request_shutdown(void) {} int main(int, char**) { char huge[8192]; plan_tests(3); auto sub = watchman::getLog().subscribe( watchman::DBG, []() { pass("made it to logging callback"); }); memset(huge, 'X', sizeof(huge)); huge[sizeof(huge)-1] = '\0'; w_log(W_LOG_DBG, "test %s", huge); std::vector> pending; sub->getPending(pending); ok(!pending.empty(), "got an item from our subscription"); pass("made it to the end"); return exit_status(); } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/tests/log_stub.cpp000066400000000000000000000003561314236077500170260ustar00rootroot00000000000000/* Copyright 2016-present Facebook, Inc. * Licensed under the Apache License, Version 2.0. */ // These are logging stubs to facilitate testing code that pulls in w_log // either directly or indirectly. void w_request_shutdown(void) {} watchman-4.9.0/tests/pending_test.cpp000066400000000000000000000053461314236077500176770ustar00rootroot00000000000000/* Copyright 2016-present Facebook, Inc. * Licensed under the Apache License, Version 2.0. */ #include "watchman.h" #include "thirdparty/tap.h" static void build_list( std::vector* list, struct timeval* now, const w_string& parent_name, size_t depth, size_t num_files, size_t num_dirs) { size_t i; for (i = 0; i < num_files; i++) { list->emplace_back( w_string::build(parent_name, "/file", i), *now, W_PENDING_VIA_NOTIFY); } for (i = 0; i < num_dirs; i++) { list->emplace_back( w_string::build(parent_name, "/dir", i), *now, W_PENDING_RECURSIVE); if (depth > 0) { build_list(list, now, list->back().path, depth - 1, num_files, num_dirs); } } } size_t process_items(PendingCollection::LockedPtr& coll) { size_t drained = 0; auto item = coll->stealItems(); while (item) { drained++; item = std::move(item->next); } return drained; } // Simulate static void bench_pending(void) { // These parameters give us 262140 items to track const size_t tree_depth = 7; const size_t num_files_per_dir = 8; const size_t num_dirs_per_dir = 4; w_string root_name("/some/path", W_STRING_BYTE); std::vector list; const size_t alloc_size = 280000; struct timeval start, end; list.reserve(alloc_size); // Build a list ordered from the root (top) down to the leaves. gettimeofday(&start, nullptr); build_list( &list, &start, root_name, tree_depth, num_files_per_dir, num_dirs_per_dir); diag("built list with %u items", list.size()); // Benchmark insertion in top-down order. { PendingCollection coll; size_t drained = 0; auto lock = coll.wlock(); gettimeofday(&start, NULL); for (auto& item : list) { lock->add(item.path, item.now, item.flags); } drained = process_items(lock); gettimeofday(&end, NULL); diag("took %.3fs to insert %u items into pending coll", w_timeval_diff(start, end), drained); } // and now in reverse order; this is from the leaves of the filesystem // tree up to the root, or bottom-up. This simulates the workload of // a recursive delete of a filesystem tree. { PendingCollection coll; size_t drained = 0; auto lock = coll.wlock(); gettimeofday(&start, NULL); for (auto it = list.rbegin(); it != list.rend(); ++it) { auto& item = *it; lock->add(item.path, item.now, item.flags); } drained = process_items(lock); gettimeofday(&end, NULL); diag("took %.3fs to reverse insert %u items into pending coll", w_timeval_diff(start, end), drained); } } int main(int, char**) { plan_tests(1); bench_pending(); pass("got here"); return exit_status(); } watchman-4.9.0/tests/run.sh000077500000000000000000000001201314236077500156340ustar00rootroot00000000000000#!/bin/bash # This is a dumb wrapper to satisfy the buck_sh_test rule exec "$@" watchman-4.9.0/tests/string_test.cpp000066400000000000000000000252341314236077500175570ustar00rootroot00000000000000/* Copyright 2016-present Facebook, Inc. * Licensed under the Apache License, Version 2.0. */ #include "watchman.h" #include "watchman_string.h" #include #include "thirdparty/tap.h" void test_integrals() { ok(w_string::build(int8_t(1)) == w_string("1"), "made 1"); ok(w_string::build(int16_t(1)) == w_string("1"), "made 1"); ok(w_string::build(int32_t(1)) == w_string("1"), "made 1"); ok(w_string::build(int64_t(1)) == w_string("1"), "made 1"); ok(w_string::build(int8_t(-1)) == w_string("-1"), "made -1"); ok(w_string::build(int16_t(-1)) == w_string("-1"), "made -1"); ok(w_string::build(int32_t(-1)) == w_string("-1"), "made -1"); ok(w_string::build(int64_t(-1)) == w_string("-1"), "made -1"); ok(w_string::build(uint8_t(1)) == w_string("1"), "made 1"); ok(w_string::build(uint16_t(1)) == w_string("1"), "made 1"); ok(w_string::build(uint32_t(1)) == w_string("1"), "made 1"); ok(w_string::build(uint64_t(1)) == w_string("1"), "made 1"); ok(w_string::build(uint8_t(255)) == w_string("255"), "made 255"); ok(w_string::build(uint16_t(255)) == w_string("255"), "made 255"); ok(w_string::build(uint32_t(255)) == w_string("255"), "made 255"); ok(w_string::build(uint64_t(255)) == w_string("255"), "made 255"); ok(w_string::build(int8_t(-127)) == w_string("-127"), "made -127"); ok(w_string::build(bool(true)) == w_string("1"), "true -> 1"); ok(w_string::build(bool(false)) == w_string("0"), "false -> 0"); } void test_strings() { { auto hello = w_string::build("hello"); ok(hello == w_string("hello"), "hello"); ok(hello.size() == 5, "there are 5 chars in hello"); ok(!strcmp("hello", hello.c_str()), "looks nul terminated `%s` %" PRIu32, hello.c_str(), strlen_uint32(hello.c_str())); } { w_string_piece piece("hello"); ok(piece.size() == 5, "piece has 5 char size"); auto hello = w_string::build(piece); ok(hello.size() == 5, "hello has 5 char size"); ok(!strcmp("hello", hello.c_str()), "looks nul terminated"); } { char foo[] = "foo"; auto str = w_string::build(foo); ok(str.size() == 3, "foo has 3 char size"); ok(!str.empty(), "foo is not empty"); ok(!strcmp("foo", foo), "foo matches"); } { w_string defaultStr; ok(defaultStr.empty(), "default constructed string should be empty"); w_string nullStr(nullptr); ok(nullStr.empty(), "nullptr string should be empty"); ok(w_string_piece().empty(), "default constructed string piece shouldbe empty"); ok(w_string_piece(nullptr).empty(), "nullptr string piece shouldbe empty"); ok(w_string::build("").empty(), "empty string is empty"); } } void test_pointers() { bool foo = true; char lowerBuf[20]; auto str = w_string::build(&foo); snprintf( lowerBuf, sizeof(lowerBuf), "0x%" PRIx64, (uint64_t)(uintptr_t)(&foo)); ok(str.size() == strlen_uint32(lowerBuf), "reasonable seeming bool pointer len, got %" PRIu32 " vs expected %" PRIu32, str.size(), strlen_uint32(lowerBuf)); ok(str.size() == strlen_uint32(str.c_str()), "string is really nul terminated, size %" PRIu32 " strlen of c_str %" PRIu32, str.size(), strlen_uint32(str.c_str())); ok(!strcmp(lowerBuf, str.c_str()), "bool pointer rendered right hex value sprintf->%s, str->%s", lowerBuf, str.c_str()); str = w_string::build(nullptr); ok(str.size() > 0, "nullptr has reasonable size: %" PRIsize_t, str.size()); ok(str == w_string("0x0"), "nullptr looks right %s", str.c_str()); void* zero = 0; ok(w_string::build(zero) == "0x0", "zero pointer looks right"); } void test_double() { auto str = w_string::build(5.5); char buf[16]; snprintf(buf, sizeof(buf), "%f", 5.5); ok(str.size() == 8, "size is %" PRIsize_t, str.size()); ok(!strcmp(str.c_str(), buf), "str.c_str=%s, buf=%s", str.c_str(), buf); ok(str == w_string("5.500000"), "double looks good '%s'", str.c_str()); } void test_concat() { auto str = w_string::build("one", 2, "three", 1.2, false, w_string(nullptr)); ok(str == w_string("one2three1.2000000"), "concatenated to %s", str.c_str()); } void test_suffix() { ok(!w_string("").suffix(), "empty string suffix"); ok(w_string(".").suffix() == w_string(""), "only one dot suffix"); ok(w_string("endwithdot.").suffix() == w_string(""), "end with dot"); ok(!w_string("nosuffix").suffix(), "no suffix"); ok(w_string(".beginwithdot").suffix() == w_string("beginwithdot"), "begin with dot"); ok(w_string("MainActivity.java").suffix() == w_string("java"), "java suffix"); std::string longName(128, 'a'); auto str = w_string::build(".", longName.c_str()); ok(!str.suffix(), "too long suffix"); std::string nearlongName(127, 'a'); str = w_string::build("I am not long enough.", nearlongName.c_str()); ok(str.suffix().size() == 127, "nearly too long suffix"); // 255 is the longest suffix among some systems std::string toolongName(255, 'a'); str = w_string::build(".", toolongName.c_str()); ok(!str.suffix(), "too long suffix"); } void test_to() { auto str = watchman::to("foo", 123); ok(str == "foo123", "concatenated to foo123: %s", str.c_str()); ok(str.size() == 6, "got size %d", int(str.size())); } void test_path_cat() { auto str = w_string::pathCat({"foo", ""}); ok(str == "foo", "concat yields %s", str.c_str()); str = w_string::pathCat({"", "foo"}); ok(str == "foo", "concat yields %s", str.c_str()); str = w_string::pathCat({"foo", "bar"}); ok(str == "foo/bar", "concat yields %s", str.c_str()); str = w_string::pathCat({"foo", "bar", ""}); ok(str == "foo/bar", "concat yields %s", str.c_str()); str = w_string::pathCat({"foo", "", "bar"}); ok(str == "foo/bar", "concat yields %s", str.c_str()); } void test_basename_dirname() { auto str = w_string_piece("foo/bar").baseName().asWString(); ok(str == "bar", "basename of foo/bar is bar: %s", str.c_str()); str = w_string_piece("foo/bar").dirName().asWString(); ok(str == "foo", "dirname of foo/bar is foo: %s", str.c_str()); str = w_string_piece("").baseName().asWString(); ok(str == "", "basename of empty string is empty: %s", str.c_str()); str = w_string_piece("").dirName().asWString(); ok(str == "", "dirname of empty string is empty: %s", str.c_str()); str = w_string_piece("foo").dirName().asWString(); ok(str == "", "dirname of foo is nothing: %s", str.c_str()); str = w_string("f/b/z"); auto piece = str.piece().dirName(); auto str2 = piece.baseName().asWString(); ok(str2 == "b", "basename of dirname of f/b/z is b: %s", str.c_str()); str = w_string_piece("foo/bar/baz").dirName().dirName().asWString(); ok(str == "foo", "dirname of dirname of foo/bar/baz is foo: %s", str.c_str()); str = w_string_piece("foo").baseName().asWString(); ok(str == "foo", "basename of foo is foo: %s", str.c_str()); str = w_string_piece("foo\\bar").baseName().asWString(); #ifdef _WIN32 ok(str == "bar", "basename of foo\\bar is bar: %s", str.c_str()); #else ok(str == "foo\\bar", "basename of foo\\bar is foo\\bar: %s", str.c_str()); #endif str = w_string_piece("foo\\bar").dirName().asWString(); #ifdef _WIN32 ok(str == "foo", "dirname of foo\\bar is foo: %s", str.c_str()); #else ok(str == "", "dirname of foo\\bar is nothing: %s", str.c_str()); #endif #ifdef _WIN32 w_string_piece winFoo("C:\\foo"); str = winFoo.baseName().asWString(); ok(str == "foo", "basename of winfoo is %s", str.c_str()); str = winFoo.dirName().asWString(); ok(str == "C:\\", "dirname of winfoo is %s", str.c_str()); str = winFoo.dirName().dirName().asWString(); ok(str == "C:\\", "dirname of dirname winfoo is %s", str.c_str()); #endif // This is testing that we don't walk off the end of the string. // We had a bug where if the buffer had a slash as the character // after the end of the string, baseName and dirName could incorrectly // match that position and trigger a string range check. // The endSlash string below has 7 characters, with the 8th byte // as a slash to trigger this condition. w_string_piece endSlash("dir/foo/", 7); str = endSlash.baseName().asWString(); ok(str == "foo", "basename is %s", str.c_str()); str = endSlash.dirName().asWString(); ok(str == "dir", "dirname is %s", str.c_str()); } void test_operator() { ok(w_string_piece("a") < w_string_piece("b"), "a < b"); ok(w_string_piece("a") < w_string_piece("ba"), "a < ba"); ok(w_string_piece("aa") < w_string_piece("b"), "aa < b"); ok(!(w_string_piece("b") < w_string_piece("a")), "b not < a"); ok(!(w_string_piece("a") < w_string_piece("a")), "a not < a"); ok(w_string_piece("A") < w_string_piece("a"), "A < a"); } void test_split() { { std::vector expected{"a", "b", "c"}; std::vector result; w_string_piece("a:b:c").split(result, ':'); ok(expected == result, "split ok"); } { std::vector expected{"a", "b", "c"}; std::vector result; w_string_piece("a:b:c").split(result, ':'); ok(expected == result, "split ok (w_string)"); } { std::vector expected{"a", "b", "c"}; std::vector result; w_string_piece("a:b:c:").split(result, ':'); ok(expected == result, "split doesn't create empty last element"); } { std::vector expected{"a", "b", "", "c"}; std::vector result; w_string_piece("a:b::c:").split(result, ':'); ok(expected == result, "split does create empty element"); } { std::vector result; w_string_piece().split(result, ':'); ok(result.size() == 0, "split as 0 elements, got %d", int(result.size())); w_string_piece(w_string()).split(result, ':'); ok(result.size() == 0, "split as 0 elements, got %d", int(result.size())); w_string_piece(w_string(nullptr)).split(result, ':'); ok(result.size() == 0, "split as 0 elements, got %d", int(result.size())); } } void test_path_equal() { ok(w_string_piece("/foo/bar").pathIsEqual("/foo/bar"), "/foo/bar"); ok(!w_string_piece("/foo/bar").pathIsEqual("/Foo/bar"), "/foo/bar"); #ifdef _WIN32 ok(w_string_piece("c:/foo/bar").pathIsEqual("C:/foo/bar"), "allow different case for drive letter only c:/foo/bar"); ok(w_string_piece("c:/foo\\bar").pathIsEqual("C:/foo/bar"), "allow different slashes c:/foo\\bar"); ok(!w_string_piece("c:/Foo/bar").pathIsEqual("C:/foo/bar"), "strict case in the other positions c:/Foo/bar"); #endif } int main(int, char**) { plan_tests( 86 #ifdef _WIN32 // extra basename tests + 6 #endif ); test_integrals(); test_strings(); test_pointers(); test_double(); test_concat(); test_suffix(); test_to(); test_path_cat(); test_basename_dirname(); test_operator(); test_split(); test_path_equal(); return exit_status(); } watchman-4.9.0/tests/wildmatch_test.cpp000066400000000000000000000047221314236077500202240ustar00rootroot00000000000000/* Copyright 2015-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman_system.h" #include "thirdparty/jansson/jansson.h" #include "thirdparty/wildmatch/wildmatch.h" #include "thirdparty/tap.h" #define WILDMATCH_TEST_JSON_FILE "tests/wildmatch_test.json" static void run_test(json_t *test_case_data) { int wildmatch_should_succeed; int wildmatch_flags; char *text_to_match; char *pattern_to_use; int wildmatch_succeeded; json_error_t error; if (json_unpack_ex( test_case_data, &error, 0, "[b,i,s,s]", &wildmatch_should_succeed, &wildmatch_flags, &text_to_match, &pattern_to_use) == -1) { fail( "Error decoding JSON: %s (source=%s, line=%d, col=%d)\n", error.text, error.source, error.line, error.column); return; } wildmatch_succeeded = wildmatch(pattern_to_use, text_to_match, wildmatch_flags, 0) == WM_MATCH; if (wildmatch_should_succeed) { ok( wildmatch_succeeded, "Pattern [%s] should match text [%s] with flags %d", pattern_to_use, text_to_match, wildmatch_flags); } else { ok( !wildmatch_succeeded, "Pattern [%s] should not match text [%s] with flags %d", pattern_to_use, text_to_match, wildmatch_flags); } } int main(int, char**) { FILE *test_cases_file; json_error_t error; size_t num_tests; size_t index; test_cases_file = fopen(WILDMATCH_TEST_JSON_FILE, "r"); if (!test_cases_file) { test_cases_file = fopen("watchman/" WILDMATCH_TEST_JSON_FILE, "r"); } if (!test_cases_file) { diag("Couldn't open %s: %s\n", WILDMATCH_TEST_JSON_FILE, strerror(errno)); abort(); } auto test_cases = json_loadf(test_cases_file, 0, &error); if (!test_cases) { diag( "Error decoding JSON: %s (source=%s, line=%d, col=%d)\n", error.text, error.source, error.line, error.column); abort(); } if (fclose(test_cases_file) != 0) { diag("Error closing %s: %s\n", WILDMATCH_TEST_JSON_FILE, strerror(errno)); abort(); } if (!json_is_array(test_cases)) { diag("Expected JSON in %s to be an array\n", WILDMATCH_TEST_JSON_FILE); abort(); } num_tests = json_array_size(test_cases); plan_tests((unsigned int)num_tests); for (index = 0; index < num_tests; index++) { auto test_case_data = json_array_get(test_cases, index); run_test(test_case_data); } return exit_status(); } watchman-4.9.0/tests/wildmatch_test.json000066400000000000000000000162361314236077500204160ustar00rootroot00000000000000[ [true, 2, "foo", "foo"], [false, 2, "foo", "bar"], [true, 2, "", ""], [true, 2, "foo", "???"], [false, 2, "foo", "??"], [true, 2, "foo", "*"], [true, 2, "foo", "f*"], [false, 2, "foo", "*f"], [true, 2, "foo", "*foo*"], [true, 2, "foobar", "*ob*a*r*"], [true, 2, "aaaaaaabababab", "*ab"], [true, 2, "foo*", "foo\\*"], [false, 2, "foobar", "foo\\*bar"], [true, 2, "f\\oo", "f\\\\oo"], [true, 2, "ball", "*[al]?"], [false, 2, "ten", "[ten]"], [true, 0, "ten", "**[!te]"], [false, 0, "ten", "**[!ten]"], [false, 2, "ten", "**[!te]"], [false, 2, "ten", "**[!ten]"], [true, 2, "ten", "t[a-g]n"], [false, 2, "ten", "t[!a-g]n"], [true, 2, "ton", "t[!a-g]n"], [true, 2, "ton", "t[^a-g]n"], [true, 2, "a]b", "a[]]b"], [true, 2, "a-b", "a[]-]b"], [true, 2, "a]b", "a[]-]b"], [false, 2, "aab", "a[]-]b"], [true, 2, "aab", "a[]a-]b"], [true, 2, "]", "]"], [false, 2, "foo/baz/bar", "foo*bar"], [true, 0, "foo/baz/bar", "foo**bar"], [false, 2, "foo/baz/bar", "foo**bar"], [false, 2, "foo/bar", "foo?bar"], [false, 2, "foo/bar", "foo[/]bar"], [true, 0, "foo/bar", "f[^eiu][^eiu][^eiu][^eiu][^eiu]r"], [false, 2, "foo/bar", "f[^eiu][^eiu][^eiu][^eiu][^eiu]r"], [true, 0, "foo-bar", "f[^eiu][^eiu][^eiu][^eiu][^eiu]r"], [true, 2, "foo-bar", "f[^eiu][^eiu][^eiu][^eiu][^eiu]r"], [false, 0, "foo", "**/foo"], [true, 2, "foo", "**/foo"], [true, 2, "/foo", "**/foo"], [true, 2, "bar/baz/foo", "**/foo"], [false, 2, "bar/baz/foo", "*/foo"], [false, 2, "foo/bar/baz", "**/bar*"], [true, 2, "deep/foo/bar/baz", "**/bar/*"], [false, 2, "deep/foo/bar/baz/", "**/bar/*"], [true, 2, "deep/foo/bar/baz/", "**/bar/**"], [false, 2, "deep/foo/bar", "**/bar/*"], [true, 2, "deep/foo/bar/", "**/bar/**"], [true, 0, "foo/bar/baz", "**/bar**"], [false, 2, "foo/bar/baz", "**/bar**"], [true, 2, "foo/bar/baz/x", "*/bar/**"], [false, 2, "deep/foo/bar/baz/x", "*/bar/**"], [true, 2, "deep/foo/bar/baz/x", "**/bar/*/*"], [false, 2, "acrt", "a[c-c]st"], [true, 2, "acrt", "a[c-c]rt"], [false, 2, "]", "[!]-]"], [true, 2, "a", "[!]-]"], [false, 2, "", "\\"], [false, 2, "\\", "\\"], [false, 2, "/\\", "*/\\"], [true, 2, "/\\", "*/\\\\"], [true, 2, "foo", "foo"], [true, 2, "@foo", "@foo"], [false, 2, "foo", "@foo"], [true, 2, "[ab]", "\\[ab]"], [true, 2, "[ab]", "[[]ab]"], [true, 2, "[ab]", "[[:]ab]"], [false, 2, "[ab]", "[[::]ab]"], [true, 2, "[ab]", "[[:digit]ab]"], [true, 2, "[ab]", "[\\[:]ab]"], [true, 2, "?a?b", "\\??\\?b"], [true, 2, "abc", "\\a\\b\\c"], [false, 2, "foo", ""], [true, 2, "foo/bar/baz/to", "**/t[o]"], [true, 2, "a1B", "[[:alpha:]][[:digit:]][[:upper:]]"], [false, 2, "a", "[[:digit:][:upper:][:space:]]"], [true, 2, "A", "[[:digit:][:upper:][:space:]]"], [true, 2, "1", "[[:digit:][:upper:][:space:]]"], [false, 2, "1", "[[:digit:][:upper:][:spaci:]]"], [true, 2, " ", "[[:digit:][:upper:][:space:]]"], [false, 2, ".", "[[:digit:][:upper:][:space:]]"], [true, 2, ".", "[[:digit:][:punct:][:space:]]"], [true, 2, "5", "[[:xdigit:]]"], [true, 2, "f", "[[:xdigit:]]"], [true, 2, "D", "[[:xdigit:]]"], [true, 2, "_", "[[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:graph:][:lower:][:print:][:punct:][:space:][:upper:][:xdigit:]]"], [true, 2, "\u007F", "[^[:alnum:][:alpha:][:blank:][:digit:][:graph:][:lower:][:print:][:punct:][:space:][:upper:][:xdigit:]]"], [true, 2, ".", "[^[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:lower:][:space:][:upper:][:xdigit:]]"], [true, 2, "5", "[a-c[:digit:]x-z]"], [true, 2, "b", "[a-c[:digit:]x-z]"], [true, 2, "y", "[a-c[:digit:]x-z]"], [false, 2, "q", "[a-c[:digit:]x-z]"], [true, 2, "]", "[\\\\-^]"], [false, 2, "[", "[\\\\-^]"], [true, 2, "-", "[\\-_]"], [true, 2, "]", "[\\]]"], [false, 2, "\\]", "[\\]]"], [false, 2, "\\", "[\\]]"], [false, 2, "ab", "a[]b"], [false, 2, "a[]b", "a[]b"], [false, 2, "ab[", "ab["], [false, 2, "ab", "[!"], [false, 2, "ab", "[-"], [true, 2, "-", "[-]"], [false, 2, "-", "[a-"], [false, 2, "-", "[!a-"], [true, 2, "-", "[--A]"], [true, 2, "5", "[--A]"], [true, 2, " ", "[ --]"], [true, 2, "$", "[ --]"], [true, 2, "-", "[ --]"], [false, 2, "0", "[ --]"], [true, 2, "-", "[---]"], [true, 2, "-", "[------]"], [false, 2, "j", "[a-e-n]"], [true, 2, "-", "[a-e-n]"], [true, 2, "a", "[!------]"], [false, 2, "[", "[]-a]"], [true, 2, "^", "[]-a]"], [false, 2, "^", "[!]-a]"], [true, 2, "[", "[!]-a]"], [true, 2, "^", "[a^bc]"], [true, 2, "-b]", "[a-]b]"], [false, 2, "\\", "[\\]"], [true, 2, "\\", "[\\\\]"], [false, 2, "\\", "[!\\\\]"], [true, 2, "G", "[A-\\\\]"], [false, 2, "aaabbb", "b*a"], [false, 2, "aabcaa", "*ba*"], [true, 2, ",", "[,]"], [true, 2, ",", "[\\\\,]"], [true, 2, "\\", "[\\\\,]"], [true, 2, "-", "[,-.]"], [false, 2, "+", "[,-.]"], [false, 2, "-.]", "[,-.]"], [true, 2, "2", "[\\1-\\3]"], [true, 2, "3", "[\\1-\\3]"], [false, 2, "4", "[\\1-\\3]"], [true, 2, "\\", "[[-\\]]"], [true, 2, "[", "[[-\\]]"], [true, 2, "]", "[[-\\]]"], [false, 2, "-", "[[-\\]]"], [true, 2, "-adobe-courier-bold-o-normal--12-120-75-75-m-70-iso8859-1", "-*-*-*-*-*-*-12-*-*-*-m-*-*-*"], [false, 2, "-adobe-courier-bold-o-normal--12-120-75-75-X-70-iso8859-1", "-*-*-*-*-*-*-12-*-*-*-m-*-*-*"], [false, 2, "-adobe-courier-bold-o-normal--12-120-75-75-/-70-iso8859-1", "-*-*-*-*-*-*-12-*-*-*-m-*-*-*"], [true, 2, "/adobe/courier/bold/o/normal//12/120/75/75/m/70/iso8859/1", "/*/*/*/*/*/*/12/*/*/*/m/*/*/*"], [false, 2, "/adobe/courier/bold/o/normal//12/120/75/75/X/70/iso8859/1", "/*/*/*/*/*/*/12/*/*/*/m/*/*/*"], [true, 2, "abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txt", "**/*a*b*g*n*t"], [false, 2, "abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txtz", "**/*a*b*g*n*t"], [true, 0, ".bar", "*"], [true, 2, ".bar", "*"], [false, 4, ".bar", "*"], [false, 6, ".bar", "*"], [true, 0, ".bar", ".*"], [true, 2, ".bar", ".*"], [true, 4, ".bar", ".*"], [true, 6, ".bar", ".*"], [true, 0, ".bar.txt", "*.txt"], [true, 2, ".bar.txt", "*.txt"], [false, 4, ".bar.txt", "*.txt"], [false, 6, ".bar.txt", "*.txt"], [false, 0, ".bar", "**/*"], [true, 2, ".bar", "**/*"], [false, 4, ".bar", "**/*"], [false, 6, ".bar", "**/*"], [false, 0, ".bar", "**/.*"], [true, 2, ".bar", "**/.*"], [false, 4, ".bar", "**/.*"], [true, 6, ".bar", "**/.*"], [true, 0, "foo/.bar", "*"], [false, 2, "foo/.bar", "*"], [true, 4, "foo/.bar", "*"], [false, 6, "foo/.bar", "*"], [false, 0, "foo/.bar", ".*"], [false, 2, "foo/.bar", ".*"], [false, 4, "foo/.bar", ".*"], [false, 6, "foo/.bar", ".*"], [true, 0, "foo/.bar", "**/*"], [true, 2, "foo/.bar", "**/*"], [true, 4, "foo/.bar", "**/*"], [false, 6, "foo/.bar", "**/*"], [true, 0, "foo/.bar", "**/.*"], [true, 2, "foo/.bar", "**/.*"], [true, 4, "foo/.bar", "**/.*"], [true, 6, "foo/.bar", "**/.*"], [true, 0, "foo/.bar/baz", "**/*"], [true, 2, "foo/.bar/baz", "**/*"], [true, 4, "foo/.bar/baz", "**/*"], [false, 6, "foo/.bar/baz", "**/*"], [true, 0, "foo/.bar/baz", "**/.*"], [false, 2, "foo/.bar/baz", "**/.*"], [true, 4, "foo/.bar/baz", "**/.*"], [false, 6, "foo/.bar/baz", "**/.*"], [true, 0, "foo/bar/.baz", "**/*"], [true, 2, "foo/bar/.baz", "**/*"], [true, 4, "foo/bar/.baz", "**/*"], [false, 6, "foo/bar/.baz", "**/*"], [true, 0, "foo/bar/.baz", "**/.*"], [true, 2, "foo/bar/.baz", "**/.*"], [true, 4, "foo/bar/.baz", "**/.*"], [true, 6, "foo/bar/.baz", "**/.*"], [true, 0, "foobar", "foo\\bar"], [false, 8, "foobar", "foo\\bar"], [true, 8, "foo\\bar", "foo\\bar"], [true, 2, "foo/bar/baz", "foo//bar/baz"], [true, 2, "foo/bar/baz", "foo/////bar/////////baz"] ] watchman-4.9.0/thirdparty/000077500000000000000000000000001314236077500155305ustar00rootroot00000000000000watchman-4.9.0/thirdparty/TARGETS000066400000000000000000000001651314236077500165660ustar00rootroot00000000000000cpp_library( name = "tap", srcs = ["tap.cpp"], headers = ["tap.h"], deps = ["@/watchman:headers"], ) watchman-4.9.0/thirdparty/jansson/000077500000000000000000000000001314236077500172035ustar00rootroot00000000000000watchman-4.9.0/thirdparty/jansson/TARGETS000066400000000000000000000016021314236077500202360ustar00rootroot00000000000000buck_genrule( name = "generate_config_h", srcs = [ "jansson_config.h.in", ], out = "jansson_config.h", cmd = "cp $SRCDIR/jansson_config.h.in $OUT", ) buck_cxx_library( name = "config_h", header_namespace = "", exported_headers = [ ":generate_config_h", ], visibility = ["PUBLIC"], ) cpp_library( name = "utf", srcs = ["utf.cpp"], headers = ["utf.h"], deps = [":config_h"], ) cpp_library( name = "jansson", srcs = [ "dump.cpp", "error.cpp", "load.cpp", "memory.cpp", "pack_unpack.cpp", "strbuffer.cpp", "strconv.cpp", "value.cpp", ], headers = [ "jansson.h", "jansson_private.h", "strbuffer.h", ], deps = [ ":config_h", ":utf", "@/watchman:headers", "@/watchman:string", ], ) watchman-4.9.0/thirdparty/jansson/dump.cpp000066400000000000000000000233351314236077500206620ustar00rootroot00000000000000/* @nolint * Copyright (c) 2009-2012 Petri Lehtinen * * Jansson is free software; you can redistribute it and/or modify * it under the terms of the MIT license. See LICENSE for details. */ #ifndef _GNU_SOURCE #define _GNU_SOURCE #endif #include #include #include #include #include "jansson.h" #include "jansson_private.h" #include "strbuffer.h" #include "utf.h" #define MAX_INTEGER_STR_LENGTH 100 #define MAX_REAL_STR_LENGTH 100 struct object_key { size_t serial; const char *key; }; static int dump_to_strbuffer(const char *buffer, size_t size, void *data) { return strbuffer_append_bytes((strbuffer_t *)data, buffer, size); } static int dump_to_file(const char *buffer, size_t size, void *data) { FILE *dest = (FILE *)data; if(fwrite(buffer, size, 1, dest) != 1) { return -1; } return 0; } /* 32 spaces (the maximum indentation size) */ static char whitespace[] = " "; static int dump_indent(size_t flags, int depth, int space, json_dump_callback_t dump, void *data) { if(JSON_INDENT(flags) > 0) { int i, ws_count = JSON_INDENT(flags); if(dump("\n", 1, data)) return -1; for(i = 0; i < depth; i++) { if(dump(whitespace, ws_count, data)) return -1; } } else if(space && !(flags & JSON_COMPACT)) { return dump(" ", 1, data); } return 0; } static int dump_string(const char *str, json_dump_callback_t dump, void *data, size_t flags) { const char *pos, *end; int32_t codepoint; if(dump("\"", 1, data)) return -1; end = pos = str; while(1) { const char *text; char seq[13]; int length; while(*end) { end = utf8_iterate(pos, &codepoint); if(!end) { return -1; } /* mandatory escape or control char */ if(codepoint == '\\' || codepoint == '"' || codepoint < 0x20) break; /* slash */ if((flags & JSON_ESCAPE_SLASH) && codepoint == '/') break; /* non-ASCII */ if((flags & JSON_ENSURE_ASCII) && codepoint > 0x7F) break; pos = end; } if(pos != str) { if(dump(str, pos - str, data)) return -1; } if(end == pos) break; /* handle \, /, ", and control codes */ length = 2; switch(codepoint) { case '\\': text = "\\\\"; break; case '\"': text = "\\\""; break; case '\b': text = "\\b"; break; case '\f': text = "\\f"; break; case '\n': text = "\\n"; break; case '\r': text = "\\r"; break; case '\t': text = "\\t"; break; case '/': text = "\\/"; break; default: { /* codepoint is in BMP */ if(codepoint < 0x10000) { sprintf(seq, "\\u%04x", codepoint); length = 6; } /* not in BMP -> construct a UTF-16 surrogate pair */ else { int32_t first, last; codepoint -= 0x10000; first = 0xD800 | ((codepoint & 0xffc00) >> 10); last = 0xDC00 | (codepoint & 0x003ff); sprintf(seq, "\\u%04x\\u%04x", first, last); length = 12; } text = seq; break; } } if(dump(text, length, data)) return -1; str = pos = end; } return dump("\"", 1, data); } static int do_dump(const json_t *json, size_t flags, int depth, json_dump_callback_t dump, void *data) { switch(json_typeof(json)) { case JSON_NULL: return dump("null", 4, data); case JSON_TRUE: return dump("true", 4, data); case JSON_FALSE: return dump("false", 5, data); case JSON_INTEGER: { char buffer[MAX_INTEGER_STR_LENGTH]; int size; size = snprintf(buffer, MAX_INTEGER_STR_LENGTH, "%" JSON_INTEGER_FORMAT, json_integer_value(json)); if(size < 0 || size >= MAX_INTEGER_STR_LENGTH){ return -1; } return dump(buffer, size, data); } case JSON_REAL: { char buffer[MAX_REAL_STR_LENGTH]; int size; double value = json_real_value(json); size = jsonp_dtostr(buffer, MAX_REAL_STR_LENGTH, value); if(size < 0) { return -1; } return dump(buffer, size, data); } case JSON_STRING: return dump_string(json_string_value(json), dump, data, flags); case JSON_ARRAY: { int i; int n; n = json_array_size(json); if(dump("[", 1, data)) { return -1; } if(n == 0) { return dump("]", 1, data); } if(dump_indent(flags, depth + 1, 0, dump, data)) return -1; for (i = 0; i < n; ++i) { if (do_dump( json_array_get(json, i), flags, depth + 1, dump, data)) { return -1; } if (i < n - 1) { if (dump(",", 1, data) || dump_indent(flags, depth + 1, 1, dump, data)) { return -1; } } else { if (dump_indent(flags, depth, 0, dump, data)) { return -1; } } } return dump("]", 1, data); } case JSON_OBJECT: { json_object_t *object; const char *separator; int separator_length; if(flags & JSON_COMPACT) { separator = ":"; separator_length = 1; } else { separator = ": "; separator_length = 2; } object = json_to_object(json); auto it = object->map.begin(); if(dump("{", 1, data)) { return -1; } if (object->map.empty()) { return dump("}", 1, data); } if(dump_indent(flags, depth + 1, 0, dump, data)){ return -1; } if (flags & JSON_SORT_KEYS) { using Pair = std::pair; std::vector items(object->map.begin(), object->map.end()); std::sort( items.begin(), items.end(), [](const Pair& a, const Pair& b) { return a.first < b.first; }); auto sorted_it = items.begin(); while (sorted_it != items.end()) { auto next = std::next(sorted_it); dump_string(sorted_it->first.c_str(), dump, data, flags); if (dump(separator, separator_length, data) || do_dump(sorted_it->second, flags, depth + 1, dump, data)) { return -1; } if (next != items.end()) { if (dump(",", 1, data) || dump_indent(flags, depth + 1, 1, dump, data)){ return -1; } } else { if (dump_indent(flags, depth, 0, dump, data)) { return -1; } } sorted_it = next; } } else { while (it != object->map.end()) { auto next = std::next(it); dump_string(it->first.c_str(), dump, data, flags); if (dump(separator, separator_length, data) || do_dump(it->second, flags, depth + 1, dump, data)) { return -1; } if (next != object->map.end()) { if (dump(",", 1, data) || dump_indent(flags, depth + 1, 1, dump, data)){ return -1; } } else { if (dump_indent(flags, depth, 0, dump, data)){ return -1; } } it = next; } } return dump("}", 1, data); } default: /* not reached */ return -1; } } char *json_dumps(const json_t *json, size_t flags) { strbuffer_t strbuff; char *result; if (strbuffer_init(&strbuff)) { throw std::bad_alloc(); } if(json_dump_callback(json, dump_to_strbuffer, (void *)&strbuff, flags)) result = NULL; else result = jsonp_strdup(strbuffer_value(&strbuff)); strbuffer_close(&strbuff); return result; } int json_dumpf(const json_t *json, FILE *output, size_t flags) { return json_dump_callback(json, dump_to_file, (void *)output, flags); } int json_dump_file(const json_t *json, const char *path, size_t flags) { int result; FILE *output = fopen(path, "w"); if(!output) return -1; result = json_dumpf(json, output, flags); fclose(output); return result; } int json_dump_callback(const json_t *json, json_dump_callback_t callback, void *data, size_t flags) { if(!(flags & JSON_ENCODE_ANY)) { if(!json_is_array(json) && !json_is_object(json)) return -1; } return do_dump(json, flags, 0, callback, data); } watchman-4.9.0/thirdparty/jansson/error.cpp000066400000000000000000000032541314236077500210440ustar00rootroot00000000000000/* @nolint * Copyright (c) 2009-2012 Petri Lehtinen * * Jansson is free software; you can redistribute it and/or modify * it under the terms of the MIT license. See LICENSE for details. */ #include #include "jansson_private.h" void jsonp_error_init(json_error_t *error, const char *source) { if(error) { error->text[0] = '\0'; error->line = -1; error->column = -1; error->position = 0; if(source) jsonp_error_set_source(error, source); else error->source[0] = '\0'; } } void jsonp_error_set_source(json_error_t *error, const char *source) { size_t length; if(!error || !source) return; length = strlen(source); if(length < JSON_ERROR_SOURCE_LENGTH) strcpy(error->source, source); else { size_t extra = length - JSON_ERROR_SOURCE_LENGTH + 4; strcpy(error->source, "..."); strcpy(error->source + 3, source + extra); } } void jsonp_error_set(json_error_t *error, int line, int column, size_t position, const char *msg, ...) { va_list ap; va_start(ap, msg); jsonp_error_vset(error, line, column, position, msg, ap); va_end(ap); } void jsonp_error_vset(json_error_t *error, int line, int column, size_t position, const char *msg, va_list ap) { if(!error) return; if(error->text[0] != '\0') { /* error already set */ return; } error->line = line; error->column = column; error->position = position; vsnprintf(error->text, JSON_ERROR_TEXT_LENGTH, msg, ap); error->text[JSON_ERROR_TEXT_LENGTH - 1] = '\0'; } watchman-4.9.0/thirdparty/jansson/jansson.h000066400000000000000000000241241314236077500210320ustar00rootroot00000000000000/* Copyright (c) 2009-2012 Petri Lehtinen * * Jansson is free software; you can redistribute it and/or modify * it under the terms of the MIT license. See LICENSE for details. */ #ifndef JANSSON_H #define JANSSON_H #include "watchman_string.h" // Needed for w_string_t #include #include #include /* for size_t */ #include #include #include #include "jansson_config.h" #include "utf.h" /* version */ #define JANSSON_MAJOR_VERSION 2 #define JANSSON_MINOR_VERSION 4 #define JANSSON_MICRO_VERSION 0 /* Micro version is omitted if it's 0 */ #define JANSSON_VERSION "2.4" /* Version as a 3-byte hex number, e.g. 0x010201 == 1.2.1. Use this for numeric comparisons, e.g. #if JANSSON_VERSION_HEX >= ... */ #define JANSSON_VERSION_HEX ((JANSSON_MAJOR_VERSION << 16) | \ (JANSSON_MINOR_VERSION << 8) | \ (JANSSON_MICRO_VERSION << 0)) /* types */ typedef enum { JSON_OBJECT, JSON_ARRAY, JSON_STRING, JSON_INTEGER, JSON_REAL, JSON_TRUE, JSON_FALSE, JSON_NULL } json_type; struct json_t { json_type type; std::atomic refcount; explicit json_t(json_type type); struct SingletonHack {}; // true, false, null are never heap allocated, always // reference a global singleton value with a bogus refcount json_t(json_type type, SingletonHack&&); }; class json_ref { json_t* ref_; static inline json_t* incref(json_t* json) { if (json && json->refcount != (size_t)-1) { ++json->refcount; } return json; } static inline void decref(json_t* json) { if (json && json->refcount != (size_t)-1 && --json->refcount == 0) { json_delete(json); } } static void json_delete(json_t* json); public: json_ref(); /* implicit */ json_ref(json_t* ref, bool addRef = true); /* implicit */ json_ref(std::nullptr_t); ~json_ref(); void reset(json_t* ref = nullptr); json_ref(const json_ref& other); json_ref& operator=(const json_ref& other); json_ref(json_ref&& other) noexcept; json_ref& operator=(json_ref&& other) noexcept; /* implicit */ operator json_t*() const { return ref_; } /* implicit */ operator bool() const { return ref_ != nullptr; } /** Returns the value associated with key in a json object. * Returns defval if this json value is not an object or * if the key was not found. */ json_ref get_default(const char* key, json_ref defval = nullptr) const; /** Returns the vaule associated with key in a json object. * Throws domain_error if this is not a json object or * a range_error if the key is not present. */ const json_ref& get(const char* key) const; /** Set key = value */ void set(const char* key, json_ref&& val); void set(const w_string& key, json_ref&& val); /** Set a list of key/value pairs */ inline void set( std::initializer_list> pairs) { for (auto& p : pairs) { set(p.first, std::move(p.second)); } } /** Returns a reference to the underlying array. * Throws domain_error if this is not an array. * This is useful both for iterating the array contents * and for returning the size of the array. */ const std::vector& array() const; std::vector& array(); /** Returns a reference to the underlying map object. * Throws domain_error if this is not an object. * This is useful for iterating over the object contents, etc. */ const std::unordered_map& object() const; std::unordered_map& object(); /** Returns a reference to the array value at the specified index. * Throws out_of_range or domain_error if the index is bad or if * this is not an array */ inline const json_ref& at(std::size_t idx) const { return array().at(idx); } }; #if JSON_INTEGER_IS_LONG_LONG #ifdef _WIN32 #define JSON_INTEGER_FORMAT "I64d" #else #define JSON_INTEGER_FORMAT "lld" #endif typedef long long json_int_t; #else #define JSON_INTEGER_FORMAT "ld" typedef long json_int_t; #endif /* JSON_INTEGER_IS_LONG_LONG */ inline json_type json_typeof(const json_t* json) { return json->type; } #define json_is_object(json) (json && json_typeof(json) == JSON_OBJECT) #define json_is_array(json) (json && json_typeof(json) == JSON_ARRAY) #define json_is_string(json) (json && json_typeof(json) == JSON_STRING) #define json_is_integer(json) (json && json_typeof(json) == JSON_INTEGER) #define json_is_real(json) (json && json_typeof(json) == JSON_REAL) #define json_is_number(json) (json_is_integer(json) || json_is_real(json)) #define json_is_true(json) (json && json_typeof(json) == JSON_TRUE) #define json_is_false(json) (json && json_typeof(json) == JSON_FALSE) #define json_is_boolean(json) (json_is_true(json) || json_is_false(json)) #define json_is_null(json) (json && json_typeof(json) == JSON_NULL) /* construction, destruction, reference counting */ json_ref json_object(void); json_ref json_object( std::initializer_list> values); json_ref json_object_of_size(size_t nelems); json_ref json_array(void); json_ref json_array_of_size(size_t nelems); json_ref json_array(std::initializer_list values); json_ref w_string_to_json(const w_string& str); template json_ref typed_string_to_json(Args&&... args) { return w_string_to_json(w_string(std::forward(args)...)); } const w_string& json_to_w_string(const json_t* json); json_ref json_integer(json_int_t value); json_ref json_real(double value); json_ref json_true(void); json_ref json_false(void); #define json_boolean(val) ((val) ? json_true() : json_false()) json_ref json_null(void); /* error reporting */ #define JSON_ERROR_TEXT_LENGTH 160 #define JSON_ERROR_SOURCE_LENGTH 80 struct json_error_t { int line; int column; int position; char source[JSON_ERROR_SOURCE_LENGTH]; char text[JSON_ERROR_TEXT_LENGTH]; }; /* getters, setters, manipulation */ size_t json_object_size(const json_t *object); json_t *json_object_get(const json_t *object, const char *key); int json_object_set_new(json_t* object, const char* key, json_ref&& value); int json_object_set_new_nocheck( json_t* object, const char* key, json_ref&& value); int json_object_del(json_t *object, const char *key); int json_object_clear(json_t *object); int json_object_update(const json_t* src, json_t* target); int json_object_update_existing(const json_t* src, json_t* target); int json_object_update_missing(const json_t* src, json_t* target); static JSON_INLINE int json_object_set(json_t *object, const char *key, json_t *value) { return json_object_set_new(object, key, json_ref(value)); } static JSON_INLINE int json_object_set_nocheck(json_t *object, const char *key, json_t *value) { return json_object_set_new_nocheck(object, key, json_ref(value)); } size_t json_array_size(const json_t *array); json_ref json_array_get(const json_t* array, size_t index); int json_array_set_new(json_t* array, size_t index, json_ref&& value); int json_array_append_new(json_t* array, json_ref&& value); int json_array_insert_new(json_t* array, size_t index, json_ref&& value); int json_array_remove(json_t *array, size_t index); int json_array_clear(json_t *array); int json_array_extend(json_t *array, json_t *other); int json_array_set_template(json_t *array, json_t *templ); int json_array_set_template_new(json_t* json, json_ref&& templ); json_t *json_array_get_template(const json_t *array); static JSON_INLINE int json_array_set(json_t *array, size_t index, json_t *value) { return json_array_set_new(array, index, json_ref(value)); } static JSON_INLINE int json_array_append(json_t *array, json_t *value) { return json_array_append_new(array, json_ref(value)); } static JSON_INLINE int json_array_insert(json_t *array, size_t index, json_t *value) { return json_array_insert_new(array, index, json_ref(value)); } const char *json_string_value(const json_t *string); json_int_t json_integer_value(const json_t *integer); double json_real_value(const json_t *real); double json_number_value(const json_t *json); int json_integer_set(json_t *integer, json_int_t value); int json_real_set(json_t *real, double value); #define JSON_VALIDATE_ONLY 0x1 #define JSON_STRICT 0x2 int json_unpack(json_t *root, const char *fmt, ...); int json_unpack_ex(json_t *root, json_error_t *error, size_t flags, const char *fmt, ...); int json_vunpack_ex(json_t *root, json_error_t *error, size_t flags, const char *fmt, va_list ap); /* equality */ int json_equal(json_t *value1, json_t *value2); /* copying */ json_ref json_copy(const json_t* value); json_ref json_deep_copy(const json_t* value); /* decoding */ #define JSON_REJECT_DUPLICATES 0x1 #define JSON_DISABLE_EOF_CHECK 0x2 #define JSON_DECODE_ANY 0x4 typedef size_t (*json_load_callback_t)(void *buffer, size_t buflen, void *data); json_ref json_loads(const char* input, size_t flags, json_error_t* error); json_ref json_loadb( const char* buffer, size_t buflen, size_t flags, json_error_t* error); json_ref json_loadf(FILE* input, size_t flags, json_error_t* error); json_ref json_load_file(const char* path, size_t flags, json_error_t* error); json_ref json_load_callback( json_load_callback_t callback, void* data, size_t flags, json_error_t* error); /* encoding */ #define JSON_INDENT(n) (n & 0x1F) #define JSON_COMPACT 0x20 #define JSON_ENSURE_ASCII 0x40 #define JSON_SORT_KEYS 0x80 #define JSON_ENCODE_ANY 0x200 #define JSON_ESCAPE_SLASH 0x400 typedef int (*json_dump_callback_t)(const char *buffer, size_t size, void *data); char *json_dumps(const json_t *json, size_t flags); int json_dumpf(const json_t *json, FILE *output, size_t flags); int json_dump_file(const json_t *json, const char *path, size_t flags); int json_dump_callback(const json_t *json, json_dump_callback_t callback, void *data, size_t flags); /* custom memory allocation */ typedef void *(*json_malloc_t)(size_t); typedef void (*json_free_t)(void *); void json_set_alloc_funcs(json_malloc_t malloc_fn, json_free_t free_fn); #endif watchman-4.9.0/thirdparty/jansson/jansson_config.h.in000066400000000000000000000016731314236077500227700ustar00rootroot00000000000000/* * Copyright (c) 2010-2012 Petri Lehtinen * Copyright 2012 Facebook, Inc. (modified to integrate with watchman) * * Jansson is free software; you can redistribute it and/or modify * it under the terms of the MIT license. See LICENSE for details. * * * This file specifies a part of the site-specific configuration for * Jansson, namely those things that affect the public API in * jansson.h. * * The configure script copies this file to jansson_config.h and * replaces @var@ substitutions by values that fit your system. If you * cannot run the configure script, you can do the value substitution * by hand. */ #ifndef JANSSON_CONFIG_H #define JANSSON_CONFIG_H #include "config.h" #define JSON_INLINE inline #if HAVE_STRTOLL # define JSON_INTEGER_IS_LONG_LONG 1 #else # define JSON_INTEGER_IS_LONG_LONG 0 #endif #if HAVE_LOCALECONV # define JSON_HAVE_LOCALECONV 1 #else # define JSON_HAVE_LOCALECONV 0 #endif #endif watchman-4.9.0/thirdparty/jansson/jansson_private.h000066400000000000000000000052401314236077500225620ustar00rootroot00000000000000/* @nolint * Copyright (c) 2009-2012 Petri Lehtinen * * Jansson is free software; you can redistribute it and/or modify * it under the terms of the MIT license. See LICENSE for details. */ #ifndef JANSSON_PRIVATE_H #define JANSSON_PRIVATE_H #include #include "jansson.h" #include "strbuffer.h" #include #include #include #define container_of(ptr_, type_, member_) \ ((type_ *)((char *)ptr_ - offsetof(type_, member_))) /* va_copy is a C99 feature. In C89 implementations, it's sometimes available as __va_copy. If not, memcpy() should do the trick. */ #ifndef va_copy #ifdef __va_copy #define va_copy __va_copy #else #define va_copy(a, b) memcpy(&(a), &(b), sizeof(va_list)) #endif #endif struct json_object_t { json_t json; std::unordered_map map; json_object_t(size_t sizeHint = 0); typename std::unordered_map::iterator findCString( const char* key); }; struct json_array_t { json_t json; std::vector table; json_ref templ; json_array_t(size_t sizeHint = 0); json_array_t(std::initializer_list values); }; struct json_string_t { json_t json; w_string value; json_string_t(const w_string& str); }; struct json_real_t { json_t json; double value; json_real_t(double value); }; struct json_integer_t { json_t json; json_int_t value; json_integer_t(json_int_t value); }; #define json_to_object(json_) container_of((json_t*)json_, json_object_t, json) #define json_to_array(json_) container_of((json_t*)json_, json_array_t, json) #define json_to_string(json_) container_of((json_t*)json_, json_string_t, json) #define json_to_real(json_) container_of((json_t*)json_, json_real_t, json) #define json_to_integer(json_) container_of((json_t*)json_, json_integer_t, json) void jsonp_error_init(json_error_t *error, const char *source); void jsonp_error_set_source(json_error_t *error, const char *source); void jsonp_error_set(json_error_t *error, int line, int column, size_t position, const char *msg, ...); void jsonp_error_vset(json_error_t *error, int line, int column, size_t position, const char *msg, va_list ap); /* Locale independent string<->double conversions */ int jsonp_strtod(strbuffer_t *strbuffer, double *out); int jsonp_dtostr(char *buffer, size_t size, double value); /* Wrappers for custom memory functions */ void* jsonp_malloc(size_t size); void jsonp_free(void *ptr); char *jsonp_strdup(const char *str); /* Windows compatibility */ #ifdef _WIN32 #define snprintf _snprintf #define vsnprintf _vsnprintf #endif #endif watchman-4.9.0/thirdparty/jansson/load.cpp000066400000000000000000000603051314236077500206320ustar00rootroot00000000000000/* @nolint * Copyright (c) 2009-2012 Petri Lehtinen * * Jansson is free software; you can redistribute it and/or modify * it under the terms of the MIT license. See LICENSE for details. */ #ifndef _GNU_SOURCE #define _GNU_SOURCE #endif #include #include #include #include #include #include #include "jansson.h" #include "jansson_private.h" #include "strbuffer.h" #include "utf.h" #define STREAM_STATE_OK 0 #define STREAM_STATE_EOF -1 #define STREAM_STATE_ERROR -2 #define TOKEN_INVALID -1 #define TOKEN_EOF 0 #define TOKEN_STRING 256 #define TOKEN_INTEGER 257 #define TOKEN_REAL 258 #define TOKEN_TRUE 259 #define TOKEN_FALSE 260 #define TOKEN_NULL 261 /* Locale independent versions of isxxx() functions */ #define l_isupper(c) ('A' <= (c) && (c) <= 'Z') #define l_islower(c) ('a' <= (c) && (c) <= 'z') #define l_isalpha(c) (l_isupper(c) || l_islower(c)) #define l_isdigit(c) ('0' <= (c) && (c) <= '9') #define l_isxdigit(c) \ (l_isdigit(c) || 'A' <= (c) || (c) <= 'F' || 'a' <= (c) || (c) <= 'f') /* Read one byte from stream, convert to unsigned char, then int, and return. return EOF on end of file. This corresponds to the behaviour of fgetc(). */ typedef int (*get_func)(void *data); typedef struct { get_func get; void *data; char buffer[5]; size_t buffer_pos; int state; int line; int column, last_column; size_t position; } stream_t; typedef struct { stream_t stream; strbuffer_t saved_text; int token; union { char *string; json_int_t integer; double real; } value; } lex_t; #define stream_to_lex(stream) container_of(stream, lex_t, stream) /*** error reporting ***/ static void error_set(json_error_t *error, const lex_t *lex, const char *msg, ...) { va_list ap; char msg_text[JSON_ERROR_TEXT_LENGTH]; char msg_with_context[JSON_ERROR_TEXT_LENGTH]; int line = -1, col = -1; size_t pos = 0; const char *result = msg_text; if(!error) return; va_start(ap, msg); vsnprintf(msg_text, JSON_ERROR_TEXT_LENGTH, msg, ap); msg_text[JSON_ERROR_TEXT_LENGTH - 1] = '\0'; va_end(ap); if(lex) { const char *saved_text = strbuffer_value(&lex->saved_text); line = lex->stream.line; col = lex->stream.column; pos = lex->stream.position; if(saved_text && saved_text[0]) { if(lex->saved_text.length <= 20) { snprintf(msg_with_context, JSON_ERROR_TEXT_LENGTH, "%s near '%s'", msg_text, saved_text); msg_with_context[JSON_ERROR_TEXT_LENGTH - 1] = '\0'; result = msg_with_context; } } else { if(lex->stream.state == STREAM_STATE_ERROR) { /* No context for UTF-8 decoding errors */ result = msg_text; } else { snprintf(msg_with_context, JSON_ERROR_TEXT_LENGTH, "%s near end of file", msg_text); msg_with_context[JSON_ERROR_TEXT_LENGTH - 1] = '\0'; result = msg_with_context; } } } jsonp_error_set(error, line, col, pos, "%s", result); } /*** lexical analyzer ***/ static void stream_init(stream_t *stream, get_func get, void *data) { stream->get = get; stream->data = data; stream->buffer[0] = '\0'; stream->buffer_pos = 0; stream->state = STREAM_STATE_OK; stream->line = 1; stream->column = 0; stream->position = 0; } static int stream_get(stream_t *stream, json_error_t *error) { int c; if(stream->state != STREAM_STATE_OK) return stream->state; if(!stream->buffer[stream->buffer_pos]) { c = stream->get(stream->data); if(c == EOF) { stream->state = STREAM_STATE_EOF; return STREAM_STATE_EOF; } stream->buffer[0] = c; stream->buffer_pos = 0; if(0x80 <= c && c <= 0xFF) { /* multi-byte UTF-8 sequence */ int i, count; count = utf8_check_first(c); if(!count) goto out; assert(count >= 2); for(i = 1; i < count; i++) stream->buffer[i] = stream->get(stream->data); if(!utf8_check_full(stream->buffer, count, nullptr)) goto out; stream->buffer[count] = '\0'; } else stream->buffer[1] = '\0'; } c = stream->buffer[stream->buffer_pos++]; stream->position++; if(c == '\n') { stream->line++; stream->last_column = stream->column; stream->column = 0; } else if(utf8_check_first(c)) { /* track the Unicode character column, so increment only if this is the first character of a UTF-8 sequence */ stream->column++; } return c; out: stream->state = STREAM_STATE_ERROR; error_set(error, stream_to_lex(stream), "unable to decode byte 0x%x", c); return STREAM_STATE_ERROR; } static void stream_unget(stream_t *stream, int c) { if(c == STREAM_STATE_EOF || c == STREAM_STATE_ERROR) return; stream->position--; if(c == '\n') { stream->line--; stream->column = stream->last_column; } else if(utf8_check_first(c)) stream->column--; assert(stream->buffer_pos > 0); stream->buffer_pos--; assert(stream->buffer[stream->buffer_pos] == c); } static int lex_get(lex_t *lex, json_error_t *error) { return stream_get(&lex->stream, error); } static void lex_save(lex_t *lex, int c) { strbuffer_append_byte(&lex->saved_text, c); } static int lex_get_save(lex_t *lex, json_error_t *error) { int c = stream_get(&lex->stream, error); if(c != STREAM_STATE_EOF && c != STREAM_STATE_ERROR) lex_save(lex, c); return c; } static void lex_unget(lex_t *lex, int c) { stream_unget(&lex->stream, c); } static void lex_unget_unsave(lex_t *lex, int c) { if(c != STREAM_STATE_EOF && c != STREAM_STATE_ERROR) { char d; stream_unget(&lex->stream, c); d = strbuffer_pop(&lex->saved_text); assert(c == d); } } static void lex_save_cached(lex_t *lex) { while(lex->stream.buffer[lex->stream.buffer_pos] != '\0') { lex_save(lex, lex->stream.buffer[lex->stream.buffer_pos]); lex->stream.buffer_pos++; lex->stream.position++; } } /* assumes that str points to 'u' plus at least 4 valid hex digits */ static int32_t decode_unicode_escape(const char *str) { int i; int32_t value = 0; assert(str[0] == 'u'); for(i = 1; i <= 4; i++) { char c = str[i]; value <<= 4; if(l_isdigit(c)) value += c - '0'; else if(l_islower(c)) value += c - 'a' + 10; else if(l_isupper(c)) value += c - 'A' + 10; else assert(0); } return value; } static void lex_scan_string(lex_t *lex, json_error_t *error) { int c; const char *p; char *t; int i; lex->value.string = nullptr; lex->token = TOKEN_INVALID; c = lex_get_save(lex, error); while(c != '"') { if(c == STREAM_STATE_ERROR) goto out; else if(c == STREAM_STATE_EOF) { error_set(error, lex, "premature end of input"); goto out; } else if(0 <= c && c <= 0x1F) { /* control character */ lex_unget_unsave(lex, c); if(c == '\n') error_set(error, lex, "unexpected newline", c); else error_set(error, lex, "control character 0x%x", c); goto out; } else if(c == '\\') { c = lex_get_save(lex, error); if(c == 'u') { c = lex_get_save(lex, error); for(i = 0; i < 4; i++) { if(!l_isxdigit(c)) { error_set(error, lex, "invalid escape"); goto out; } c = lex_get_save(lex, error); } } else if(c == '"' || c == '\\' || c == '/' || c == 'b' || c == 'f' || c == 'n' || c == 'r' || c == 't') c = lex_get_save(lex, error); else { error_set(error, lex, "invalid escape"); goto out; } } else c = lex_get_save(lex, error); } /* the actual value is at most of the same length as the source string, because: - shortcut escapes (e.g. "\t") (length 2) are converted to 1 byte - a single \uXXXX escape (length 6) is converted to at most 3 bytes - two \uXXXX escapes (length 12) forming an UTF-16 surrogate pair are converted to 4 bytes */ lex->value.string = (char*)jsonp_malloc(lex->saved_text.length + 1); if(!lex->value.string) { /* this is not very nice, since TOKEN_INVALID is returned */ goto out; } /* the target */ t = lex->value.string; /* + 1 to skip the " */ p = strbuffer_value(&lex->saved_text) + 1; while(*p != '"') { if(*p == '\\') { p++; if(*p == 'u') { char buffer[4]; int length; int32_t value; value = decode_unicode_escape(p); p += 5; if(0xD800 <= value && value <= 0xDBFF) { /* surrogate pair */ if(*p == '\\' && *(p + 1) == 'u') { int32_t value2 = decode_unicode_escape(++p); p += 5; if(0xDC00 <= value2 && value2 <= 0xDFFF) { /* valid second surrogate */ value = ((value - 0xD800) << 10) + (value2 - 0xDC00) + 0x10000; } else { /* invalid second surrogate */ error_set(error, lex, "invalid Unicode '\\u%04X\\u%04X'", value, value2); goto out; } } else { /* no second surrogate */ error_set(error, lex, "invalid Unicode '\\u%04X'", value); goto out; } } else if(0xDC00 <= value && value <= 0xDFFF) { error_set(error, lex, "invalid Unicode '\\u%04X'", value); goto out; } else if(value == 0) { error_set(error, lex, "\\u0000 is not allowed"); goto out; } if(utf8_encode(value, buffer, &length)) assert(0); memcpy(t, buffer, length); t += length; } else { switch(*p) { case '"': case '\\': case '/': *t = *p; break; case 'b': *t = '\b'; break; case 'f': *t = '\f'; break; case 'n': *t = '\n'; break; case 'r': *t = '\r'; break; case 't': *t = '\t'; break; default: assert(0); } t++; p++; } } else *(t++) = *(p++); } *t = '\0'; lex->token = TOKEN_STRING; return; out: jsonp_free(lex->value.string); } #if JSON_INTEGER_IS_LONG_LONG #ifdef _MSC_VER // Microsoft Visual Studio #define json_strtoint _strtoi64 #else #define json_strtoint strtoll #endif #else #define json_strtoint strtol #endif static int lex_scan_number(lex_t *lex, int c, json_error_t *error) { const char *saved_text; char *end; lex->token = TOKEN_INVALID; if(c == '-') c = lex_get_save(lex, error); if(c == '0') { c = lex_get_save(lex, error); if(l_isdigit(c)) { lex_unget_unsave(lex, c); goto out; } } else if(l_isdigit(c)) { c = lex_get_save(lex, error); while(l_isdigit(c)) c = lex_get_save(lex, error); } else { lex_unget_unsave(lex, c); goto out; } if(c != '.' && c != 'E' && c != 'e') { json_int_t value; lex_unget_unsave(lex, c); saved_text = strbuffer_value(&lex->saved_text); errno = 0; value = json_strtoint(saved_text, &end, 10); if(errno == ERANGE) { if(value < 0) error_set(error, lex, "too big negative integer"); else error_set(error, lex, "too big integer"); goto out; } assert(end == saved_text + lex->saved_text.length); lex->token = TOKEN_INTEGER; lex->value.integer = value; return 0; } if(c == '.') { c = lex_get(lex, error); if(!l_isdigit(c)) { lex_unget(lex, c); goto out; } lex_save(lex, c); c = lex_get_save(lex, error); while(l_isdigit(c)) c = lex_get_save(lex, error); } if(c == 'E' || c == 'e') { c = lex_get_save(lex, error); if(c == '+' || c == '-') c = lex_get_save(lex, error); if(!l_isdigit(c)) { lex_unget_unsave(lex, c); goto out; } c = lex_get_save(lex, error); while(l_isdigit(c)) c = lex_get_save(lex, error); } lex_unget_unsave(lex, c); double value; if(jsonp_strtod(&lex->saved_text, &value)) { error_set(error, lex, "real number overflow"); goto out; } lex->token = TOKEN_REAL; lex->value.real = value; return 0; out: return -1; } static int lex_scan(lex_t *lex, json_error_t *error) { int c; strbuffer_clear(&lex->saved_text); if(lex->token == TOKEN_STRING) { jsonp_free(lex->value.string); lex->value.string = nullptr; } c = lex_get(lex, error); while(c == ' ' || c == '\t' || c == '\n' || c == '\r') c = lex_get(lex, error); if(c == STREAM_STATE_EOF) { lex->token = TOKEN_EOF; goto out; } if(c == STREAM_STATE_ERROR) { lex->token = TOKEN_INVALID; goto out; } lex_save(lex, c); if(c == '{' || c == '}' || c == '[' || c == ']' || c == ':' || c == ',') lex->token = c; else if(c == '"') lex_scan_string(lex, error); else if(l_isdigit(c) || c == '-') { if(lex_scan_number(lex, c, error)) goto out; } else if(l_isalpha(c)) { /* eat up the whole identifier for clearer error messages */ const char *saved_text; c = lex_get_save(lex, error); while(l_isalpha(c)) c = lex_get_save(lex, error); lex_unget_unsave(lex, c); saved_text = strbuffer_value(&lex->saved_text); if(strcmp(saved_text, "true") == 0) lex->token = TOKEN_TRUE; else if(strcmp(saved_text, "false") == 0) lex->token = TOKEN_FALSE; else if(strcmp(saved_text, "null") == 0) lex->token = TOKEN_NULL; else lex->token = TOKEN_INVALID; } else { /* save the rest of the input UTF-8 sequence to get an error message of valid UTF-8 */ lex_save_cached(lex); lex->token = TOKEN_INVALID; } out: return lex->token; } static char *lex_steal_string(lex_t *lex) { char *result = nullptr; if(lex->token == TOKEN_STRING) { result = lex->value.string; lex->value.string = nullptr; } return result; } static int lex_init(lex_t *lex, get_func get, void *data) { stream_init(&lex->stream, get, data); if(strbuffer_init(&lex->saved_text)) return -1; lex->token = TOKEN_INVALID; return 0; } static void lex_close(lex_t *lex) { if(lex->token == TOKEN_STRING) jsonp_free(lex->value.string); strbuffer_close(&lex->saved_text); } /*** parser ***/ static json_ref parse_value(lex_t *lex, size_t flags, json_error_t *error); static json_ref parse_object(lex_t *lex, size_t flags, json_error_t *error) { auto object = json_object(); lex_scan(lex, error); if(lex->token == '}') return object; while(1) { char *key; json_ref value; if(lex->token != TOKEN_STRING) { error_set(error, lex, "string or '}' expected"); return nullptr; } key = lex_steal_string(lex); if(!key) return nullptr; if(flags & JSON_REJECT_DUPLICATES) { if(json_object_get(object, key)) { jsonp_free(key); error_set(error, lex, "duplicate object key"); return nullptr; } } lex_scan(lex, error); if(lex->token != ':') { jsonp_free(key); error_set(error, lex, "':' expected"); return nullptr; } lex_scan(lex, error); value = parse_value(lex, flags, error); if(!value) { jsonp_free(key); return nullptr; } if(json_object_set_nocheck(object, key, value)) { jsonp_free(key); return nullptr; } jsonp_free(key); lex_scan(lex, error); if(lex->token != ',') break; lex_scan(lex, error); } if(lex->token != '}') { error_set(error, lex, "'}' expected"); return nullptr; } return object; } static json_ref parse_array(lex_t *lex, size_t flags, json_error_t *error) { auto array = json_array(); if(!array) return nullptr; lex_scan(lex, error); if(lex->token == ']') return array; while(lex->token) { auto elem = parse_value(lex, flags, error); if(!elem) goto error; if(json_array_append(array, elem)) { goto error; } lex_scan(lex, error); if(lex->token != ',') break; lex_scan(lex, error); } if(lex->token != ']') { error_set(error, lex, "']' expected"); goto error; } return array; error: return nullptr; } static json_ref parse_value(lex_t *lex, size_t flags, json_error_t *error) { json_ref json; switch(lex->token) { case TOKEN_STRING: { json = typed_string_to_json(lex->value.string, W_STRING_BYTE); break; } case TOKEN_INTEGER: { json = json_integer(lex->value.integer); break; } case TOKEN_REAL: { json = json_real(lex->value.real); break; } case TOKEN_TRUE: json = json_true(); break; case TOKEN_FALSE: json = json_false(); break; case TOKEN_NULL: json = json_null(); break; case '{': json = parse_object(lex, flags, error); break; case '[': json = parse_array(lex, flags, error); break; case TOKEN_INVALID: error_set(error, lex, "invalid token"); return nullptr; default: error_set(error, lex, "unexpected token"); return nullptr; } if(!json) return nullptr; return json; } static json_ref parse_json(lex_t *lex, size_t flags, json_error_t *error) { json_ref result; lex_scan(lex, error); if(!(flags & JSON_DECODE_ANY)) { if(lex->token != '[' && lex->token != '{') { error_set(error, lex, "'[' or '{' expected"); return nullptr; } } result = parse_value(lex, flags, error); if(!result) return nullptr; if(!(flags & JSON_DISABLE_EOF_CHECK)) { lex_scan(lex, error); if(lex->token != TOKEN_EOF) { error_set(error, lex, "end of file expected"); return nullptr; } } if(error) { /* Save the position even though there was no error */ error->position = lex->stream.position; } return result; } typedef struct { const char *data; int pos; } string_data_t; static int string_get(void *data) { char c; string_data_t *stream = (string_data_t *)data; c = stream->data[stream->pos]; if(c == '\0') return EOF; else { stream->pos++; return (unsigned char)c; } } json_ref json_loads(const char *string, size_t flags, json_error_t *error) { lex_t lex; string_data_t stream_data; jsonp_error_init(error, ""); if (string == nullptr) { error_set(error, nullptr, "wrong arguments"); return nullptr; } stream_data.data = string; stream_data.pos = 0; if(lex_init(&lex, string_get, (void *)&stream_data)) return nullptr; auto result = parse_json(&lex, flags, error); lex_close(&lex); return result; } typedef struct { const char *data; size_t len; size_t pos; } buffer_data_t; static int buffer_get(void *data) { char c; auto stream = (buffer_data_t*)data; if(stream->pos >= stream->len) return EOF; c = stream->data[stream->pos]; stream->pos++; return (unsigned char)c; } json_ref json_loadb(const char *buffer, size_t buflen, size_t flags, json_error_t *error) { lex_t lex; buffer_data_t stream_data; jsonp_error_init(error, ""); if (buffer == nullptr) { error_set(error, nullptr, "wrong arguments"); return nullptr; } stream_data.data = buffer; stream_data.pos = 0; stream_data.len = buflen; if(lex_init(&lex, buffer_get, (void *)&stream_data)) return nullptr; auto result = parse_json(&lex, flags, error); lex_close(&lex); return result; } json_ref json_loadf(FILE *input, size_t flags, json_error_t *error) { lex_t lex; const char *source; if(input == stdin) source = ""; else source = ""; jsonp_error_init(error, source); if (input == nullptr) { error_set(error, nullptr, "wrong arguments"); return nullptr; } if(lex_init(&lex, (get_func)fgetc, input)) return nullptr; auto result = parse_json(&lex, flags, error); lex_close(&lex); return result; } json_ref json_load_file(const char *path, size_t flags, json_error_t *error) { FILE *fp; jsonp_error_init(error, path); if (path == nullptr) { error_set(error, nullptr, "wrong arguments"); return nullptr; } fp = fopen(path, "rb"); if(!fp) { error_set(error, nullptr, "unable to open %s: %s", path, strerror(errno)); return nullptr; } auto result = json_loadf(fp, flags, error); fclose(fp); return result; } #define MAX_BUF_LEN 1024 typedef struct { char data[MAX_BUF_LEN]; size_t len; size_t pos; json_load_callback_t callback; void *arg; } callback_data_t; static int callback_get(void *data) { char c; auto stream = (callback_data_t*)data; if(stream->pos >= stream->len) { stream->pos = 0; stream->len = stream->callback(stream->data, MAX_BUF_LEN, stream->arg); if(stream->len == 0 || stream->len == (size_t)-1) return EOF; } c = stream->data[stream->pos]; stream->pos++; return (unsigned char)c; } json_ref json_load_callback( json_load_callback_t callback, void* arg, size_t flags, json_error_t* error) { lex_t lex; callback_data_t stream_data; memset(&stream_data, 0, sizeof(stream_data)); stream_data.callback = callback; stream_data.arg = arg; jsonp_error_init(error, ""); if (callback == nullptr) { error_set(error, nullptr, "wrong arguments"); return nullptr; } if (lex_init(&lex, (get_func)callback_get, &stream_data)) return nullptr; auto result = parse_json(&lex, flags, error); lex_close(&lex); return result; } watchman-4.9.0/thirdparty/jansson/memory.cpp000066400000000000000000000017471314236077500212300ustar00rootroot00000000000000/* @nolint * Copyright (c) 2009-2012 Petri Lehtinen * Copyright (c) 2011-2012 Basile Starynkevitch * * Jansson is free software; you can redistribute it and/or modify it * under the terms of the MIT license. See LICENSE for details. */ #include #include #include "jansson.h" #include "jansson_private.h" /* memory function pointers */ static json_malloc_t do_malloc = malloc; static json_free_t do_free = free; void *jsonp_malloc(size_t size) { if(!size) return NULL; return (*do_malloc)(size); } void jsonp_free(void *ptr) { if(!ptr) return; (*do_free)(ptr); } char *jsonp_strdup(const char *str) { char *new_str; new_str = (char*)jsonp_malloc(strlen(str) + 1); if(!new_str) return NULL; strcpy(new_str, str); return new_str; } void json_set_alloc_funcs(json_malloc_t malloc_fn, json_free_t free_fn) { do_malloc = malloc_fn; do_free = free_fn; } watchman-4.9.0/thirdparty/jansson/pack_unpack.cpp000066400000000000000000000256051314236077500221760ustar00rootroot00000000000000/* @nolint * Copyright (c) 2009-2012 Petri Lehtinen * Copyright (c) 2011-2012 Graeme Smecher * * Jansson is free software; you can redistribute it and/or modify * it under the terms of the MIT license. See LICENSE for details. */ #include "jansson.h" #include "jansson_private.h" #include #include #include typedef struct { const char *start; const char *fmt; char token; json_error_t *error; size_t flags; int line; int column; } scanner_t; static const char *type_names[] = { "object", "array", "string", "integer", "real", "true", "false", "null" }; #define type_name(x) type_names[json_typeof(x)] static const char *unpack_value_starters = "{[sumiIbfFOon"; static void scanner_init(scanner_t *s, json_error_t *error, size_t flags, const char *fmt) { s->error = error; s->flags = flags; s->fmt = s->start = fmt; s->line = 1; s->column = 0; } static void next_token(scanner_t *s) { const char *t = s->fmt; s->column++; /* skip space and ignored chars */ while(*t == ' ' || *t == '\t' || *t == '\n' || *t == ',' || *t == ':') { if(*t == '\n') { s->line++; s->column = 1; } else s->column++; t++; } s->token = *t; t++; s->fmt = t; } static void set_error(scanner_t *s, const char *source, const char *fmt, ...) { va_list ap; size_t pos; va_start(ap, fmt); pos = (size_t)(s->fmt - s->start); jsonp_error_vset(s->error, s->line, s->column, pos, fmt, ap); jsonp_error_set_source(s->error, source); va_end(ap); } static int unpack(scanner_t *s, json_t *root, va_list *ap); static int unpack_object(scanner_t *s, json_t *root, va_list *ap) { int ret = -1; int strict = 0; /* Use a set (emulated by a hashtable) to check that all object keys are accessed. Checking that the correct number of keys were accessed is not enough, as the same key can be unpacked multiple times. */ std::unordered_set key_set; if(root && !json_is_object(root)) { set_error(s, "", "Expected object, got %s", type_name(root)); goto out; } next_token(s); while(s->token != '}') { const char *key; json_t *value; int opt = 0; if(strict != 0) { set_error(s, "", "Expected '}' after '%c', got '%c'", (strict == 1 ? '!' : '*'), s->token); goto out; } if(!s->token) { set_error(s, "", "Unexpected end of format string"); goto out; } if(s->token == '!' || s->token == '*') { strict = (s->token == '!' ? 1 : -1); next_token(s); continue; } if(s->token != 's' && s->token != 'u' && s->token != 'm') { set_error(s, "", "Expected format string, got '%c'", s->token); goto out; } key = va_arg(*ap, const char *); if(!key) { set_error(s, "", "NULL object key"); goto out; } next_token(s); if(s->token == '?') { opt = 1; next_token(s); } if(!root) { /* skipping */ value = NULL; } else { value = json_object_get(root, key); if(!value && !opt) { set_error(s, "", "Object item not found: %s", key); goto out; } } if(unpack(s, value, ap)) goto out; key_set.emplace(key); next_token(s); } if(strict == 0 && (s->flags & JSON_STRICT)) strict = 1; if(root && strict == 1 && key_set.size() != json_object_size(root)) { long diff = (long)json_object_size(root) - (long)key_set.size(); set_error(s, "", "%li object item(s) left unpacked", diff); goto out; } ret = 0; out: return ret; } static int unpack_array(scanner_t *s, json_t *root, va_list *ap) { size_t i = 0; int strict = 0; if(root && !json_is_array(root)) { set_error(s, "", "Expected array, got %s", type_name(root)); return -1; } next_token(s); while(s->token != ']') { json_t *value; if(strict != 0) { set_error(s, "", "Expected ']' after '%c', got '%c'", (strict == 1 ? '!' : '*'), s->token); return -1; } if(!s->token) { set_error(s, "", "Unexpected end of format string"); return -1; } if(s->token == '!' || s->token == '*') { strict = (s->token == '!' ? 1 : -1); next_token(s); continue; } if(!strchr(unpack_value_starters, s->token)) { set_error(s, "", "Unexpected format character '%c'", s->token); return -1; } if(!root) { /* skipping */ value = NULL; } else { value = json_array_get(root, i); if(!value) { set_error(s, "", "Array index %lu out of range", (unsigned long)i); return -1; } } if(unpack(s, value, ap)) return -1; next_token(s); i++; } if(strict == 0 && (s->flags & JSON_STRICT)) strict = 1; if(root && strict == 1 && i != json_array_size(root)) { long diff = (long)json_array_size(root) - (long)i; set_error(s, "", "%li array item(s) left unpacked", diff); return -1; } return 0; } static int unpack(scanner_t *s, json_t *root, va_list *ap) { switch(s->token) { case '{': return unpack_object(s, root, ap); case '[': return unpack_array(s, root, ap); case 's': case 'u': case 'm': if(root && !json_is_string(root)) { set_error(s, "", "Expected string, got %s", type_name(root)); return -1; } if(!(s->flags & JSON_VALIDATE_ONLY)) { const char **target; target = va_arg(*ap, const char **); if(!target) { set_error(s, "", "NULL string argument"); return -1; } if(root) *target = json_string_value(root); } return 0; case 'i': if(root && !json_is_integer(root)) { set_error(s, "", "Expected integer, got %s", type_name(root)); return -1; } if(!(s->flags & JSON_VALIDATE_ONLY)) { int *target = va_arg(*ap, int*); if(root) *target = (int)json_integer_value(root); } return 0; case 'I': if(root && !json_is_integer(root)) { set_error(s, "", "Expected integer, got %s", type_name(root)); return -1; } if(!(s->flags & JSON_VALIDATE_ONLY)) { json_int_t *target = va_arg(*ap, json_int_t*); if(root) *target = json_integer_value(root); } return 0; case 'b': if(root && !json_is_boolean(root)) { set_error(s, "", "Expected true or false, got %s", type_name(root)); return -1; } if(!(s->flags & JSON_VALIDATE_ONLY)) { int *target = va_arg(*ap, int*); if(root) *target = json_is_true(root); } return 0; case 'f': if(root && !json_is_real(root)) { set_error(s, "", "Expected real, got %s", type_name(root)); return -1; } if(!(s->flags & JSON_VALIDATE_ONLY)) { double *target = va_arg(*ap, double*); if(root) *target = json_real_value(root); } return 0; case 'F': if(root && !json_is_number(root)) { set_error(s, "", "Expected real or integer, got %s", type_name(root)); return -1; } if(!(s->flags & JSON_VALIDATE_ONLY)) { double *target = va_arg(*ap, double*); if(root) *target = json_number_value(root); } return 0; case 'O': case 'o': if(!(s->flags & JSON_VALIDATE_ONLY)) { json_ref *target = va_arg(*ap, json_ref*); if(root){ *target = json_ref(root, s->token == 'O'); } } return 0; case 'n': /* Never assign, just validate */ if(root && !json_is_null(root)) { set_error(s, "", "Expected null, got %s", type_name(root)); return -1; } return 0; default: set_error(s, "", "Unexpected format character '%c'", s->token); return -1; } } int json_vunpack_ex(json_t *root, json_error_t *error, size_t flags, const char *fmt, va_list ap) { scanner_t s; va_list ap_copy; if(!root) { jsonp_error_init(error, ""); jsonp_error_set(error, -1, -1, 0, "NULL root value"); return -1; } if(!fmt || !*fmt) { jsonp_error_init(error, ""); jsonp_error_set(error, -1, -1, 0, "NULL or empty format string"); return -1; } jsonp_error_init(error, NULL); scanner_init(&s, error, flags, fmt); next_token(&s); va_copy(ap_copy, ap); if(unpack(&s, root, &ap_copy)) { va_end(ap_copy); return -1; } va_end(ap_copy); next_token(&s); if(s.token) { set_error(&s, "", "Garbage after format string"); return -1; } return 0; } int json_unpack_ex(json_t *root, json_error_t *error, size_t flags, const char *fmt, ...) { int ret; va_list ap; va_start(ap, fmt); ret = json_vunpack_ex(root, error, flags, fmt, ap); va_end(ap); return ret; } int json_unpack(json_t *root, const char *fmt, ...) { int ret; va_list ap; va_start(ap, fmt); ret = json_vunpack_ex(root, NULL, 0, fmt, ap); va_end(ap); return ret; } watchman-4.9.0/thirdparty/jansson/strbuffer.cpp000066400000000000000000000051431314236077500217140ustar00rootroot00000000000000/* @nolint * Copyright (c) 2009-2012 Petri Lehtinen * * Jansson is free software; you can redistribute it and/or modify * it under the terms of the MIT license. See LICENSE for details. */ #ifndef _GNU_SOURCE #define _GNU_SOURCE #endif #include #include #include "jansson_private.h" #include "strbuffer.h" #define STRBUFFER_MIN_SIZE 16 #define STRBUFFER_FACTOR 2 #define STRBUFFER_SIZE_MAX ((size_t)-1) int strbuffer_init(strbuffer_t *strbuff) { strbuff->size = STRBUFFER_MIN_SIZE; strbuff->length = 0; strbuff->value = (char*)jsonp_malloc(strbuff->size); if(!strbuff->value) return -1; /* initialize to empty */ strbuff->value[0] = '\0'; return 0; } void strbuffer_close(strbuffer_t *strbuff) { jsonp_free(strbuff->value); strbuff->size = 0; strbuff->length = 0; strbuff->value = NULL; } void strbuffer_clear(strbuffer_t *strbuff) { strbuff->length = 0; strbuff->value[0] = '\0'; } const char *strbuffer_value(const strbuffer_t *strbuff) { return strbuff->value; } char *strbuffer_steal_value(strbuffer_t *strbuff) { char *result = strbuff->value; strbuffer_init(strbuff); return result; } int strbuffer_append(strbuffer_t *strbuff, const char *string) { return strbuffer_append_bytes(strbuff, string, strlen(string)); } int strbuffer_append_byte(strbuffer_t *strbuff, char byte) { return strbuffer_append_bytes(strbuff, &byte, 1); } int strbuffer_append_bytes(strbuffer_t *strbuff, const char *data, size_t size) { if(size >= strbuff->size - strbuff->length) { size_t new_size; char *new_value; /* avoid integer overflow */ if (strbuff->size > STRBUFFER_SIZE_MAX / STRBUFFER_FACTOR || size > STRBUFFER_SIZE_MAX - 1 || strbuff->length > STRBUFFER_SIZE_MAX - 1 - size) return -1; new_size = std::max( strbuff->size * STRBUFFER_FACTOR, strbuff->length + size + 1); new_value = (char*)jsonp_malloc(new_size); if(!new_value) return -1; memcpy(new_value, strbuff->value, strbuff->length); jsonp_free(strbuff->value); strbuff->value = new_value; strbuff->size = new_size; } memcpy(strbuff->value + strbuff->length, data, size); strbuff->length += size; strbuff->value[strbuff->length] = '\0'; return 0; } char strbuffer_pop(strbuffer_t *strbuff) { if(strbuff->length > 0) { char c = strbuff->value[--strbuff->length]; strbuff->value[strbuff->length] = '\0'; return c; } else return '\0'; } watchman-4.9.0/thirdparty/jansson/strbuffer.h000066400000000000000000000015361314236077500213630ustar00rootroot00000000000000/* @nolint * Copyright (c) 2009-2012 Petri Lehtinen * * Jansson is free software; you can redistribute it and/or modify * it under the terms of the MIT license. See LICENSE for details. */ #ifndef STRBUFFER_H #define STRBUFFER_H struct strbuffer_t { char* value; size_t length; /* bytes used */ size_t size; /* bytes allocated */ }; int strbuffer_init(strbuffer_t *strbuff); void strbuffer_close(strbuffer_t *strbuff); void strbuffer_clear(strbuffer_t *strbuff); const char *strbuffer_value(const strbuffer_t *strbuff); char *strbuffer_steal_value(strbuffer_t *strbuff); int strbuffer_append(strbuffer_t *strbuff, const char *string); int strbuffer_append_byte(strbuffer_t *strbuff, char byte); int strbuffer_append_bytes(strbuffer_t *strbuff, const char *data, size_t size); char strbuffer_pop(strbuffer_t *strbuff); #endif watchman-4.9.0/thirdparty/jansson/strconv.cpp000066400000000000000000000056511314236077500214140ustar00rootroot00000000000000/* @nolint * Copyright (c) 2009-2012 Petri Lehtinen * * Jansson is free software; you can redistribute it and/or modify * it under the terms of the MIT license. See LICENSE for details. */ #include #include #include #include #include "jansson_private.h" #include "strbuffer.h" #if JSON_HAVE_LOCALECONV #include /* - This code assumes that the decimal separator is exactly one character. - If setlocale() is called by another thread between the call to localeconv() and the call to sprintf() or strtod(), the result may be wrong. setlocale() is not thread-safe and should not be used this way. Multi-threaded programs should use uselocale() instead. */ static void to_locale(strbuffer_t *strbuffer) { const char *point; char *pos; point = localeconv()->decimal_point; if(*point == '.') { /* No conversion needed */ return; } pos = strchr(strbuffer->value, '.'); if(pos) *pos = *point; } static void from_locale(char *buffer) { const char *point; char *pos; point = localeconv()->decimal_point; if(*point == '.') { /* No conversion needed */ return; } pos = strchr(buffer, *point); if(pos) *pos = '.'; } #endif int jsonp_strtod(strbuffer_t *strbuffer, double *out) { double value; char *end; #if JSON_HAVE_LOCALECONV to_locale(strbuffer); #endif errno = 0; value = strtod(strbuffer->value, &end); assert(end == strbuffer->value + strbuffer->length); if(errno == ERANGE && value != 0) { /* Overflow */ return -1; } *out = value; return 0; } int jsonp_dtostr(char *buffer, size_t size, double value) { int ret; char *start, *end; size_t length; ret = snprintf(buffer, size, "%.17g", value); if(ret < 0) return -1; length = (size_t)ret; if(length >= size) return -1; #if JSON_HAVE_LOCALECONV from_locale(buffer); #endif /* Make sure there's a dot or 'e' in the output. Otherwise a real is converted to an integer when decoding */ if(strchr(buffer, '.') == NULL && strchr(buffer, 'e') == NULL) { if(length + 3 >= size) { /* No space to append ".0" */ return -1; } buffer[length] = '.'; buffer[length + 1] = '0'; buffer[length + 2] = '\0'; length += 2; } /* Remove leading '+' from positive exponent. Also remove leading zeros from exponents (added by some printf() implementations) */ start = strchr(buffer, 'e'); if(start) { start++; end = start + 1; if(*start == '-') start++; while(*end == '0') end++; if(end != start) { memmove(start, end, length - (size_t)(end - buffer)); length -= (size_t)(end - start); } } return (int)length; } watchman-4.9.0/thirdparty/jansson/utf.cpp000066400000000000000000000103551314236077500205110ustar00rootroot00000000000000/* @nolint * Copyright (c) 2009-2012 Petri Lehtinen * * Jansson is free software; you can redistribute it and/or modify * it under the terms of the MIT license. See LICENSE for details. */ #include "utf.h" #include int utf8_encode(int32_t codepoint, char* buffer, int* size) { if (codepoint < 0) return -1; else if (codepoint < 0x80) { buffer[0] = (char)codepoint; *size = 1; } else if (codepoint < 0x800) { buffer[0] = 0xC0 + ((codepoint & 0x7C0) >> 6); buffer[1] = 0x80 + ((codepoint & 0x03F)); *size = 2; } else if (codepoint < 0x10000) { buffer[0] = 0xE0 + ((codepoint & 0xF000) >> 12); buffer[1] = 0x80 + ((codepoint & 0x0FC0) >> 6); buffer[2] = 0x80 + ((codepoint & 0x003F)); *size = 3; } else if (codepoint <= 0x10FFFF) { buffer[0] = 0xF0 + ((codepoint & 0x1C0000) >> 18); buffer[1] = 0x80 + ((codepoint & 0x03F000) >> 12); buffer[2] = 0x80 + ((codepoint & 0x000FC0) >> 6); buffer[3] = 0x80 + ((codepoint & 0x00003F)); *size = 4; } else return -1; return 0; } int utf8_check_first(char byte) { unsigned char u = (unsigned char)byte; if (u < 0x80) return 1; if (0x80 <= u && u <= 0xBF) { /* second, third or fourth byte of a multi-byte sequence, i.e. a "continuation byte" */ return 0; } else if (u == 0xC0 || u == 0xC1) { /* overlong encoding of an ASCII byte */ return 0; } else if (0xC2 <= u && u <= 0xDF) { /* 2-byte sequence */ return 2; } else if (0xE0 <= u && u <= 0xEF) { /* 3-byte sequence */ return 3; } else if (0xF0 <= u && u <= 0xF4) { /* 4-byte sequence */ return 4; } else { /* u >= 0xF5 */ /* Restricted (start of 4-, 5- or 6-byte sequence) or invalid UTF-8 */ return 0; } } int utf8_check_full(const char* buffer, int size, int32_t* codepoint) { int i; int32_t value = 0; unsigned char u = (unsigned char)buffer[0]; if (size == 2) { value = u & 0x1F; } else if (size == 3) { value = u & 0xF; } else if (size == 4) { value = u & 0x7; } else return 0; for (i = 1; i < size; i++) { u = (unsigned char)buffer[i]; if (u < 0x80 || u > 0xBF) { /* not a continuation byte */ return 0; } value = (value << 6) + (u & 0x3F); } if (value > 0x10FFFF) { /* not in Unicode range */ return 0; } else if (0xD800 <= value && value <= 0xDFFF) { /* invalid code point (UTF-16 surrogate halves) */ return 0; } else if ( (size == 2 && value < 0x80) || (size == 3 && value < 0x800) || (size == 4 && value < 0x10000)) { /* overlong encoding */ return 0; } if (codepoint) *codepoint = value; return 1; } const char* utf8_iterate(const char* buffer, int32_t* codepoint) { int count; int32_t value; if (!*buffer) return buffer; count = utf8_check_first(buffer[0]); if (count <= 0) return NULL; if (count == 1) value = (unsigned char)buffer[0]; else { if (!utf8_check_full(buffer, count, &value)) return NULL; } if (codepoint) *codepoint = value; return buffer + count; } int utf8_check_string(const char* string, int length) { int i; if (length == -1) length = strlen(string); for (i = 0; i < length; i++) { int count = utf8_check_first(string[i]); if (count == 0) return 0; else if (count > 1) { if (i + count > length) return 0; if (!utf8_check_full(&string[i], count, NULL)) return 0; i += count - 1; } } return 1; } void utf8_fix_string(char* string, size_t length) { auto end = string + length; while (string < end) { int count = utf8_check_first(*string); if (count == 0) { // Invalid *string = '?'; string++; continue; } if (count == 1) { // Valid ASCII character string++; continue; } if (count > end - string) { // UTF-8-encoded string claims to be longer than input. This means the // rest of the string is garbage. memset(string, '?', end - string); return; } if (!utf8_check_full(string, count, nullptr)) { // Invalid sequence while (count-- > 0) { *string = '?'; string++; } } else { string += count; } } } watchman-4.9.0/thirdparty/jansson/utf.h000066400000000000000000000021211314236077500201460ustar00rootroot00000000000000/* @nolint * Copyright (c) 2009-2012 Petri Lehtinen * * Jansson is free software; you can redistribute it and/or modify * it under the terms of the MIT license. See LICENSE for details. */ #ifndef UTF_H #define UTF_H #ifdef HAVE_CONFIG_H #include #ifdef HAVE_INTTYPES_H /* inttypes.h includes stdint.h in a standard environment, so there's no need to include stdint.h separately. If inttypes.h doesn't define int32_t, it's defined in config.h. */ #include #endif /* HAVE_INTTYPES_H */ #else /* !HAVE_CONFIG_H */ #ifdef _WIN32 typedef int int32_t; #else /* !_WIN32 */ /* Assume a standard environment */ #include #endif /* _WIN32 */ #endif /* HAVE_CONFIG_H */ #include /* for size_t */ int utf8_encode(int codepoint, char *buffer, int *size); int utf8_check_first(char byte); int utf8_check_full(const char *buffer, int size, int32_t *codepoint); const char *utf8_iterate(const char *buffer, int32_t *codepoint); int utf8_check_string(const char *string, int length); void utf8_fix_string(char *string, size_t length); #endif watchman-4.9.0/thirdparty/jansson/value.cpp000066400000000000000000000427431314236077500210350ustar00rootroot00000000000000/* Copyright (c) 2009-2012 Petri Lehtinen * * Jansson is free software; you can redistribute it and/or modify * it under the terms of the MIT license. See LICENSE for details. */ #ifndef _GNU_SOURCE #define _GNU_SOURCE #endif #include "jansson.h" #include "jansson_private.h" #include #include #include #include "utf.h" #include "watchman_log.h" #include "watchman_string.h" json_ref::json_ref() : ref_(nullptr) {} json_ref::json_ref(std::nullptr_t) : ref_(nullptr) {} json_ref::json_ref(json_t* ref, bool addRef) : ref_(ref) { if (addRef && ref_) { incref(ref_); } } json_ref::~json_ref() { reset(); } void json_ref::reset(json_t* ref) { if (ref_ == ref) { return; } if (ref_) { decref(ref_); } ref_ = ref; if (ref_) { incref(ref_); } } json_ref::json_ref(const json_ref& other) : ref_(nullptr) { reset(other.ref_); } json_ref& json_ref::operator=(const json_ref& other) { reset(other.ref_); return *this; } json_ref::json_ref(json_ref&& other) noexcept : ref_(other.ref_) { other.ref_ = nullptr; } json_ref& json_ref::operator=(json_ref&& other) noexcept { reset(); std::swap(ref_, other.ref_); return *this; } json_t::json_t(json_type type) : type(type), refcount(1) {} json_t::json_t(json_type type, json_t::SingletonHack&&) : type(type), refcount(-1) {} /*** object ***/ const std::unordered_map& json_ref::object() const { if (!json_is_object(ref_)) { throw std::domain_error("json_ref::object() called for non-object"); } return json_to_object(ref_)->map; } std::unordered_map& json_ref::object() { if (!json_is_object(ref_)) { throw std::domain_error("json_ref::object() called for non-object"); } return json_to_object(ref_)->map; } json_object_t::json_object_t(size_t sizeHint) : json(JSON_OBJECT) { map.reserve(sizeHint); } json_ref json_object_of_size(size_t size) { auto object = new json_object_t(size); return json_ref(&object->json, false); } json_ref json_object( std::initializer_list> values) { auto object = json_object_of_size(values.size()); auto& map = json_to_object(object)->map; for (auto& it : values) { map.emplace(w_string(it.first, W_STRING_UNICODE), it.second); } return object; } json_ref json_object(void) { return json_object_of_size(0); } size_t json_object_size(const json_t *json) { json_object_t *object; if(!json_is_object(json)) return 0; object = json_to_object(json); return object->map.size(); } typename std::unordered_map::iterator json_object_t::findCString(const char* key) { // Avoid making a copy of the string for this lookup w_string_t key_string; w_string_new_len_typed_stack( &key_string, key, strlen_uint32(key), W_STRING_BYTE); return map.find(w_string(&key_string)); } const json_ref& json_ref::get(const char* key) const { if (!json_is_object(ref_)) { throw std::domain_error("json_ref::get called on a non object type"); } auto object = json_to_object(ref_); auto it = object->findCString(key); if (it == object->map.end()) { throw std::range_error( std::string("key '") + key + "' is not present in this json object"); } return it->second; } json_ref json_ref::get_default(const char* key, json_ref defval) const { if (!json_is_object(ref_)) { return defval; } auto object = json_to_object(ref_); auto it = object->findCString(key); if (it == object->map.end()) { return defval; } return it->second; } json_t *json_object_get(const json_t *json, const char *key) { json_object_t *object; if(!json_is_object(json)) return NULL; object = json_to_object(json); auto it = object->findCString(key); if (it == object->map.end()) { return nullptr; } return it->second; } int json_object_set_new_nocheck( json_t* json, const char* key, json_ref&& value) { json_object_t* object; if (!value) return -1; if (!key || !json_is_object(json) || json == value) { return -1; } object = json_to_object(json); w_string key_string(key); object->map[key_string] = std::move(value); return 0; } void json_ref::set(const w_string& key, json_ref&& val) { json_to_object(ref_)->map[key] = std::move(val); } void json_ref::set(const char* key, json_ref&& val) { #if 0 // circular build dep w_assert(key != nullptr, "json_ref::set called with NULL key"); w_assert(ref_ != nullptr, "json_ref::set called NULL object"); w_assert(val != ref_, "json_ref::set cannot create cycle"); w_assert(json_is_object(ref_), "json_ref::set called for non object type"); #endif w_string key_string(key); json_to_object(ref_)->map[key_string] = std::move(val); } int json_object_set_new(json_t* json, const char* key, json_ref&& value) { if (!key || !utf8_check_string(key, -1)) { return -1; } return json_object_set_new_nocheck(json, key, std::move(value)); } int json_object_del(json_t *json, const char *key) { json_object_t *object; if(!json_is_object(json)) return -1; object = json_to_object(json); auto it = object->findCString(key); if (it == object->map.end()) { return -1; } object->map.erase(it); return 0; } int json_object_clear(json_t *json) { json_object_t *object; if(!json_is_object(json)) return -1; object = json_to_object(json); object->map.clear(); return 0; } int json_object_update(const json_t* src, json_t* target) { if (!json_is_object(src) || !json_is_object(src)) return -1; auto target_obj = json_to_object(target); for (auto& it : json_to_object(src)->map) { target_obj->map[it.first] = it.second; } return 0; } int json_object_update_existing(const json_t* src, json_t* target) { if (!json_is_object(src) || !json_is_object(target)) return -1; auto target_obj = json_to_object(target); for (auto& it : json_to_object(src)->map) { auto find = target_obj->map.find(it.first); if (find != target_obj->map.end()) { target_obj->map[it.first] = it.second; } } return 0; } int json_object_update_missing(const json_t* src, json_t* target) { if (!json_is_object(src) || !json_is_object(target)) return -1; auto target_obj = json_to_object(target); for (auto& it : json_to_object(src)->map) { auto find = target_obj->map.find(it.first); if (find == target_obj->map.end()) { target_obj->map[it.first] = it.second; } } return 0; } static int json_object_equal(json_t* object1, json_t* object2) { if (json_object_size(object1) != json_object_size(object2)) return 0; auto target_obj = json_to_object(object2); for (auto& it : json_to_object(object1)->map) { auto other_it = target_obj->map.find(it.first); if (other_it == target_obj->map.end()) { return 0; } if (!json_equal(it.second, other_it->second)) { return 0; } } return 1; } static json_ref json_object_copy(const json_t* object) { auto result = json_object(); if (!result) return nullptr; json_object_update(object, result); return result; } static json_ref json_object_deep_copy(const json_t* object) { json_t* result; result = json_object(); if (!result) return nullptr; auto target_obj = json_to_object(result); for (auto& it : json_to_object(object)->map) { target_obj->map[it.first] = json_deep_copy(it.second); } return result; } /*** array ***/ json_array_t::json_array_t(size_t sizeHint) : json(JSON_ARRAY) { table.reserve(std::max(sizeHint, size_t(8))); } json_array_t::json_array_t(std::initializer_list values) : json(JSON_ARRAY), table(values) {} const std::vector& json_ref::array() const { if (!json_is_array(ref_)) { throw std::domain_error("json_ref::array() called for non-array"); } return json_to_array(ref_)->table; } std::vector& json_ref::array() { if (!json_is_array(ref_)) { throw std::domain_error("json_ref::array() called for non-array"); } return json_to_array(ref_)->table; } json_ref json_array_of_size(size_t nelems) { auto array = new json_array_t(nelems); return json_ref(&array->json, false); } json_ref json_array(void) { return json_array_of_size(8); } json_ref json_array(std::initializer_list values) { auto array = new json_array_t(std::move(values)); return json_ref(&array->json, false); } int json_array_set_template(json_t *json, json_t *templ) { return json_array_set_template_new(json, json_ref(templ)); } int json_array_set_template_new(json_t* json, json_ref&& templ) { json_array_t* array; if (!json_is_array(json)) return 0; array = json_to_array(json); array->templ = std::move(templ); return 1; } json_t *json_array_get_template(const json_t *array) { if(!json_is_array(array)) return 0; return json_to_array(array)->templ; } size_t json_array_size(const json_t *json) { if(!json_is_array(json)) return 0; return json_to_array(json)->table.size(); } json_ref json_array_get(const json_t* json, size_t index) { if (!json_is_array(json)) { return nullptr; } auto array = json_to_array(json); if (index >= array->table.size()) { return nullptr; } return array->table[index]; } int json_array_set_new(json_t* json, size_t index, json_ref&& value) { json_array_t* array; if (!value) return -1; if (!json_is_array(json) || json == value) { return -1; } array = json_to_array(json); if (index >= array->table.size()) { return -1; } array->table[index] = std::move(value); return 0; } int json_array_append_new(json_t* json, json_ref&& value) { json_array_t* array; if (!value) return -1; if (!json_is_array(json) || json == value) { return -1; } array = json_to_array(json); array->table.emplace_back(std::move(value)); return 0; } int json_array_insert_new(json_t* json, size_t index, json_ref&& value) { if (!value) return -1; if (!json_is_array(json) || json == value) { return -1; } auto array = json_to_array(json); if (index > array->table.size()) { return -1; } auto it = array->table.begin(); std::advance(it, index); array->table.insert(it, std::move(value)); return 0; } int json_array_remove(json_t *json, size_t index) { json_array_t *array; if(!json_is_array(json)) return -1; array = json_to_array(json); if (index > array->table.size()) { return -1; } auto it = array->table.begin(); std::advance(it, index); array->table.erase(it); return 0; } int json_array_clear(json_t *json) { if(!json_is_array(json)) return -1; json_to_array(json)->table.clear(); return 0; } int json_array_extend(json_t *json, json_t *other_json) { json_array_t *array, *other; if(!json_is_array(json) || !json_is_array(other_json)) return -1; array = json_to_array(json); other = json_to_array(other_json); array->table.insert( array->table.end(), other->table.begin(), other->table.end()); return 0; } static int json_array_equal(json_t *array1, json_t *array2) { size_t i, size; size = json_array_size(array1); if(size != json_array_size(array2)) return 0; for(i = 0; i < size; i++) { json_t *value1, *value2; value1 = json_array_get(array1, i); value2 = json_array_get(array2, i); if(!json_equal(value1, value2)) return 0; } return 1; } static json_ref json_array_copy(const json_t* array) { auto result = json_array(); if (!result) return nullptr; auto& target_vector = json_to_array(result)->table; const auto& src_vector = json_to_array(array)->table; target_vector.insert( target_vector.begin(), src_vector.begin(), src_vector.end()); return result; } static json_ref json_array_deep_copy(const json_t* array) { size_t i; auto result = json_array(); if (!result) return nullptr; for (i = 0; i < json_array_size(array); i++) json_array_append_new(result, json_deep_copy(json_array_get(array, i))); return result; } /*** string ***/ json_string_t::json_string_t(const w_string& str) : json(JSON_STRING), value(str) {} json_ref w_string_to_json(const w_string& str) { if (!str) return nullptr; auto string = new json_string_t(str); return json_ref(&string->json, false); } const char* json_string_value(const json_t* json) { json_string_t* jstr; if (!json_is_string(json)) return NULL; jstr = json_to_string(json); jstr->value.makeNullTerminated(); return jstr->value.c_str(); } const w_string& json_to_w_string(const json_t* json) { if (!json_is_string(json)) { throw std::runtime_error("expected json string object"); } return json_to_string(json)->value; } static int json_string_equal(json_t *string1, json_t *string2) { return json_to_string(string1)->value == json_to_string(string2)->value; } static json_ref json_string_copy(const json_t* string) { return w_string_to_json(json_to_w_string(string)); } /*** integer ***/ json_integer_t::json_integer_t(json_int_t value) : json(JSON_INTEGER), value(value) {} json_ref json_integer(json_int_t value) { auto integer = new json_integer_t(value); return json_ref(&integer->json, false); } json_int_t json_integer_value(const json_t *json) { if(!json_is_integer(json)) return 0; return json_to_integer(json)->value; } int json_integer_set(json_t *json, json_int_t value) { if(!json_is_integer(json)) return -1; json_to_integer(json)->value = value; return 0; } static int json_integer_equal(json_t *integer1, json_t *integer2) { return json_integer_value(integer1) == json_integer_value(integer2); } static json_t* json_integer_copy(const json_t* integer) { return json_integer(json_integer_value(integer)); } /*** real ***/ json_real_t::json_real_t(double value) : json(JSON_REAL), value(value) {} json_ref json_real(double value) { if (std::isnan(value) || std::isinf(value)) { return nullptr; } auto real = new json_real_t(value); return json_ref(&real->json, false); } double json_real_value(const json_t *json) { if(!json_is_real(json)) return 0; return json_to_real(json)->value; } int json_real_set(json_t* json, double value) { if (!json_is_real(json) || std::isnan(value) || std::isinf(value)) { return -1; } json_to_real(json)->value = value; return 0; } static int json_real_equal(json_t *real1, json_t *real2) { return json_real_value(real1) == json_real_value(real2); } static json_t* json_real_copy(const json_t* real) { return json_real(json_real_value(real)); } /*** number ***/ double json_number_value(const json_t *json) { if(json_is_integer(json)) return (double)json_integer_value(json); else if(json_is_real(json)) return json_real_value(json); else return 0.0; } /*** simple values ***/ json_ref json_true(void) { static json_t the_true{JSON_TRUE, json_t::SingletonHack()}; return &the_true; } json_ref json_false(void) { static json_t the_false{JSON_FALSE, json_t::SingletonHack()}; return &the_false; } json_ref json_null(void) { static json_t the_null{JSON_NULL, json_t::SingletonHack()}; return &the_null; } /*** deletion ***/ void json_ref::json_delete(json_t* json) { switch (json->type) { case JSON_OBJECT: delete (json_object_t*)json; break; case JSON_ARRAY: delete (json_array_t*)json; break; case JSON_STRING: delete (json_string_t*)json; break; case JSON_INTEGER: delete (json_integer_t*)json; break; case JSON_REAL: delete (json_real_t*)json; break; case JSON_TRUE: case JSON_FALSE: case JSON_NULL: break; } } /*** equality ***/ int json_equal(json_t *json1, json_t *json2) { if(!json1 || !json2) return 0; if(json_typeof(json1) != json_typeof(json2)) return 0; /* this covers true, false and null as they are singletons */ if(json1 == json2) return 1; if(json_is_object(json1)) return json_object_equal(json1, json2); if(json_is_array(json1)) return json_array_equal(json1, json2); if(json_is_string(json1)) return json_string_equal(json1, json2); if(json_is_integer(json1)) return json_integer_equal(json1, json2); if(json_is_real(json1)) return json_real_equal(json1, json2); return 0; } /*** copying ***/ json_ref json_copy(const json_t* json) { if (!json) return nullptr; if (json_is_object(json)) return json_object_copy(json); if (json_is_array(json)) return json_array_copy(json); if (json_is_string(json)) return json_string_copy(json); if (json_is_integer(json)) return json_integer_copy(json); if (json_is_real(json)) return json_real_copy(json); if (json_is_true(json) || json_is_false(json) || json_is_null(json)) { return const_cast(json); } return nullptr; } json_ref json_deep_copy(const json_t* json) { if (!json) return nullptr; if (json_is_object(json)) return json_object_deep_copy(json); if (json_is_array(json)) return json_array_deep_copy(json); /* for the rest of the types, deep copying doesn't differ from shallow copying */ if (json_is_string(json)) return json_string_copy(json); if (json_is_integer(json)) return json_integer_copy(json); if (json_is_real(json)) return json_real_copy(json); if (json_is_true(json) || json_is_false(json) || json_is_null(json)) { return const_cast(json); } return nullptr; } watchman-4.9.0/thirdparty/libart/000077500000000000000000000000001314236077500170055ustar00rootroot00000000000000watchman-4.9.0/thirdparty/libart/LICENSE000066400000000000000000000027241314236077500200170ustar00rootroot00000000000000Copyright (c) 2012, Armon Dadgar All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the organization nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ARMON DADGAR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. watchman-4.9.0/thirdparty/libart/README.md000066400000000000000000000023621314236077500202670ustar00rootroot00000000000000libart [![Build Status](https://travis-ci.org/armon/libart.png)](https://travis-ci.org/armon/libart) ========= This library provides a C99 implementation of the Adaptive Radix Tree or ART. The ART operates similar to a traditional radix tree but avoids the wasted space of internal nodes by changing the node size. It makes use of 4 node sizes (4, 16, 48, 256), and can guarantee that the overhead is no more than 52 bytes per key, though in practice it is much lower. As a radix tree, it provides the following: * O(k) operations. In many cases, this can be faster than a hash table since the hash function is an O(k) operation, and hash tables have very poor cache locality. * Minimum / Maximum value lookups * Prefix compression * Ordered iteration * Prefix based iteration Usage ------- Building the test code will generate errors if libcheck is not available. To build the test code successfully, do the following:: $ cd deps/check-0.9.8/ $ ./configure $ make # make install # ldconfig (necessary on some Linux distros) $ cd ../../ $ scons $ ./test_runner References ---------- Related works: * [The Adaptive Radix Tree: ARTful Indexing for Main-Memory Databases](http://www-db.in.tum.de/~leis/papers/ART.pdf) watchman-4.9.0/thirdparty/libart/src/000077500000000000000000000000001314236077500175745ustar00rootroot00000000000000watchman-4.9.0/thirdparty/libart/src/TARGETS000066400000000000000000000002371314236077500206320ustar00rootroot00000000000000cpp_library( name = "art", srcs = [], headers = [ "art.h", "art-inl.h", ], deps = [ "@/watchman:headers", ], ) watchman-4.9.0/thirdparty/libart/src/art-inl.h000066400000000000000000001014341314236077500213160ustar00rootroot00000000000000#include "make_unique.h" #ifdef __SSE__ #include #endif #include #include #if defined(__clang__) # if __has_feature(address_sanitizer) # define ART_SANITIZE_ADDRESS 1 # endif #elif defined (__GNUC__) && \ (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 8)) || (__GNUC__ >= 5)) && \ __SANITIZE_ADDRESS__ # define ART_SANITIZE_ADDRESS 1 #endif #ifdef _MSC_VER #include uint32_t inline __builtin_ctz(uint32_t x) { DWORD r = 0; _BitScanForward(&r, x); return (uint32_t)r; } #endif // The ART implementation requires that no key be a full prefix of an existing // key during insertion. In practice this means that each key must have a // terminator character. One approach is to ensure that the key and key_len // includes a physical trailing NUL terminator when inserting C-strings. // This doesn't help a great deal when working with binary strings that may be // a slice in the middle of a buffer that has no termination. // // To facilitate this the keyAt() function is used to look up the byte // value at a given index. If that index is 1 byte after the end of the // key, we synthesize a fake NUL terminator byte. // // Note that if the keys contain NUL bytes earlier in the string this will // break down and won't have the correct results. // // If the index is out of bounds we will assert to trap the fatal coding // error inside this implementation. // // @param key pointer to the key bytes // @param key_len the size of the byte, in bytes // @param idx the index into the key // @return the value of the key at the supplied index. template inline unsigned char art_tree::keyAt( const unsigned char* key, uint32_t key_len, uint32_t idx) { if (idx == key_len) { // Implicit terminator return 0; } #if !ART_SANITIZE_ADDRESS // If we were built with -fsanitize=address, let ASAN catch this, // otherwise, make sure we blow up if the input depth is out of bounds. w_assert(idx >= 0 && idx <= key_len, "key_at: key is %d %.*s and idx is %d, which is out of bounds", key_len, key_len, key, idx); #endif return key[idx]; } // A helper to bridge the signed/unsigned differences; the tree implementation // really relies on the data being unsigned but everyone uses signed types // for strings. This helps to avoid having so many reinterpret_casts. template inline unsigned char art_tree::keyAt( const char* key, uint32_t key_len, uint32_t idx) { return keyAt(reinterpret_cast(key), key_len, idx); } // A helper for looking at the key value at given index, in a leaf template inline unsigned char art_tree::Leaf::keyAt( uint32_t idx) const { return art_tree::keyAt(key.data(), key.size(), idx); } /** * Allocates a node of the given type, * initializes to zero and sets the type. */ template art_tree::Node::Node(Node_type type) : type(type) {} template art_tree::Node::Node(Node_type type, const Node& other) : type(type), num_children(other.num_children), partial_len(other.partial_len) { memcpy(partial, other.partial, std::min(ART_MAX_PREFIX_LEN, partial_len)); } // --------------------- Node4 template art_tree::Node4::Node4() : Node(NODE4) { memset(keys, 0, sizeof(keys)); } template art_tree::Node4::Node4(Node16&& n16) : Node(NODE4, n16) { memset(keys, 0, sizeof(keys)); memcpy(keys, n16.keys, n16.num_children * sizeof(keys[0])); std::move( n16.children.begin(), n16.children.begin() + n16.num_children, children.begin()); n16.num_children = 0; } template void art_tree::Node4::addChild( NodePtr& ref, unsigned char c, NodePtr&& child) { if (this->num_children < 4) { int idx; for (idx = 0; idx < this->num_children; idx++) { if (c < keys[idx]) { break; } } // Shift to make room memmove(keys + idx + 1, keys + idx, this->num_children - idx); std::move_backward( children.begin() + idx, children.begin() + this->num_children, children.begin() + this->num_children + 1); // Insert element keys[idx] = c; children[idx] = std::move(child); this->num_children++; } else { ref = watchman::make_unique(std::move(*this)); ref->addChild(ref, c, std::move(child)); } } template typename art_tree::NodePtr* art_tree::Node4::findChild(unsigned char c) { int i; for (i = 0; i < this->num_children; i++) { if (keys[i] == c) { return &children[i]; } } return nullptr; } template typename art_tree::NodePtr art_tree::Node4::removeChild( NodePtr& ref, unsigned char, NodePtr* l) { auto pos = l - children.data(); memmove(keys + pos, keys + pos + 1, this->num_children - 1 - pos); NodePtr result = std::move(children[pos]); std::move( children.begin() + pos + 1, children.begin() + this->num_children, children.begin() + pos); this->num_children--; // Remove nodes with only a single child if (this->num_children == 1) { auto child = children[0].get(); if (!IS_LEAF(child)) { // Concatenate the prefixes auto prefix = this->partial_len; if (prefix < ART_MAX_PREFIX_LEN) { this->partial[prefix] = keys[0]; prefix++; } if (prefix < ART_MAX_PREFIX_LEN) { auto sub_prefix = std::min(child->partial_len, ART_MAX_PREFIX_LEN - prefix); memcpy(this->partial + prefix, child->partial, sub_prefix); prefix += sub_prefix; } // Store the prefix in the child memcpy( child->partial, this->partial, std::min(prefix, ART_MAX_PREFIX_LEN)); child->partial_len += this->partial_len + 1; } ref = std::move(children[0]); } return result; } // --------------------- Node16 template art_tree::Node16::Node16() : Node(NODE16) { memset(keys, 0, sizeof(keys)); } template art_tree::Node16::Node16(Node4&& n4) : Node(NODE16, n4) { memset(keys, 0, sizeof(keys)); std::move( n4.children.begin(), n4.children.begin() + this->num_children, children.begin()); memcpy(keys, n4.keys, this->num_children * sizeof(keys[0])); n4.num_children = 0; } template art_tree::Node16::Node16(Node48&& n48) : Node(NODE16, n48) { int i, child = 0; memset(keys, 0, sizeof(keys)); for (i = 0; i < 256; i++) { auto pos = n48.keys[i]; if (pos) { keys[child] = i; children[child] = std::move(n48.children[pos - 1]); child++; } } n48.num_children = 0; } template void art_tree::Node16::addChild( NodePtr& ref, unsigned char c, NodePtr&& child) { if (this->num_children < 16) { unsigned idx; #ifdef __SSE__ __m128i cmp; unsigned mask, bitfield; // Compare the key to all 16 stored keys cmp = _mm_cmplt_epi8(_mm_set1_epi8(c), _mm_loadu_si128((__m128i*)keys)); // Use a mask to ignore children that don't exist mask = (1 << this->num_children) - 1; bitfield = _mm_movemask_epi8(cmp) & mask; // Check if less than any if (bitfield) { idx = __builtin_ctz(bitfield); memmove(keys + idx + 1, keys + idx, this->num_children - idx); std::move_backward( children.begin() + idx, children.begin() + this->num_children, children.begin() + this->num_children + 1); } else { idx = this->num_children; } #else for (idx = 0; idx < this->num_children; idx++) { if (c < keys[idx]) { memmove(keys + idx + 1, keys + idx, this->num_children - idx); std::move_backward( children.begin() + idx, children.begin() + this->num_children, children.begin() + this->num_children + 1); break; } } #endif // Set the child keys[idx] = c; children[idx] = std::move(child); this->num_children++; } else { ref = watchman::make_unique(std::move(*this)); ref->addChild(ref, c, std::move(child)); } } template typename art_tree::NodePtr* art_tree::Node16::findChild(unsigned char c) { #ifdef __SSE__ __m128i cmp; int mask, bitfield; // Compare the key to all 16 stored keys cmp = _mm_cmpeq_epi8(_mm_set1_epi8(c), _mm_loadu_si128((__m128i*)keys)); // Use a mask to ignore children that don't exist mask = (1 << this->num_children) - 1; bitfield = _mm_movemask_epi8(cmp) & mask; /* * If we have a match (any bit set) then we can * return the pointer match using ctz to get * the index. */ if (bitfield) { return &children[__builtin_ctz(bitfield)]; } #else int i; for (i = 0; i < this->num_children; i++) { if (keys[i] == c) { return &children[i]; } } #endif return nullptr; } template typename art_tree::NodePtr art_tree::Node16::removeChild( NodePtr& ref, unsigned char, NodePtr* l) { auto pos = l - children.data(); memmove(keys + pos, keys + pos + 1, this->num_children - 1 - pos); NodePtr result = std::move(children[pos]); std::move( children.begin() + pos + 1, children.begin() + this->num_children, children.begin() + pos); this->num_children--; if (this->num_children == 3) { ref = watchman::make_unique(std::move(*this)); } return result; } // --------------------- Node48 template art_tree::Node48::Node48() : Node(NODE48) { memset(keys, 0, sizeof(keys)); } template art_tree::Node48::Node48(Node16&& n16) : Node(NODE48, n16) { int i; memset(keys, 0, sizeof(keys)); std::move( n16.children.begin(), n16.children.begin() + n16.num_children, children.begin()); for (i = 0; i < n16.num_children; i++) { keys[n16.keys[i]] = i + 1; } n16.num_children = 0; } template art_tree::Node48::Node48(Node256&& n256) : art_tree::Node(NODE48, n256) { int i, pos = 0; memset(keys, 0, sizeof(keys)); for (i = 0; i < 256; i++) { if (n256.children[i]) { children[pos] = std::move(n256.children[i]); keys[i] = pos + 1; pos++; } } n256.num_children = 0; } template void art_tree::Node48::addChild( NodePtr& ref, unsigned char c, NodePtr&& child) { if (this->num_children < 48) { int pos = 0; while (children[pos]) { pos++; } children[pos] = std::move(child); keys[c] = pos + 1; this->num_children++; } else { ref = watchman::make_unique(std::move(*this)); ref->addChild(ref, c, std::move(child)); } } template typename art_tree::NodePtr* art_tree::Node48::findChild(unsigned char c) { auto i = keys[c]; if (i) { return &children[i - 1]; } return nullptr; } template typename art_tree::NodePtr art_tree::Node48::removeChild( NodePtr& ref, unsigned char c, NodePtr*) { int pos = keys[c]; keys[c] = 0; NodePtr result = std::move(children[pos - 1]); this->num_children--; if (this->num_children == 12) { ref = watchman::make_unique(std::move(*this)); } return result; } // --------------------- Node256 template art_tree::Node256::Node256(Node48&& n48) : Node(NODE256, n48) { int i; for (i = 0; i < 256; i++) { if (n48.keys[i]) { children[i] = std::move(n48.children[n48.keys[i] - 1]); } } n48.num_children = 0; } template void art_tree::Node256::addChild( NodePtr&, unsigned char c, NodePtr&& child) { this->num_children++; children[c] = std::move(child); } template typename art_tree::NodePtr* art_tree::Node256::findChild(unsigned char c) { if (children[c]) { return &children[c]; } return nullptr; } template typename art_tree::NodePtr art_tree::Node256::removeChild( NodePtr& ref, unsigned char c, NodePtr*) { NodePtr result = std::move(children[c]); this->num_children--; // Resize to a node48 on underflow, not immediately to prevent // trashing if we sit on the 48/49 boundary if (this->num_children == 37) { ref = watchman::make_unique(std::move(*this)); } return result; } /** * Initializes an ART tree * @return 0 on success. */ template art_tree::art_tree() : root_(nullptr), size_(0) {} template art_tree::art_tree(art_tree&& other) noexcept : root_(std::move(other.root_)), size_(std::move(other.size_)) {} template void art_tree::Deleter::operator()(Node* node) const { // Break if null if (!node) { return; } // Special case leafs if (IS_LEAF(node)) { delete LEAF_RAW(node); return; } delete node; } template art_tree::~art_tree() { clear(); } template void art_tree::clear() { root_.reset(); size_ = 0; } /** * Returns the number of prefix characters shared between * the key and node. */ template uint32_t art_tree::Node::checkPrefix( const unsigned char* key, uint32_t key_len, uint32_t depth) const { auto max_cmp = std::min(std::min(partial_len, ART_MAX_PREFIX_LEN), key_len - depth); uint32_t idx; for (idx = 0; idx < max_cmp; idx++) { if (partial[idx] != key[depth + idx]) { return idx; } } return idx; } /** * Checks if a leaf matches * @return true if the key is an exact match. */ template bool art_tree::Leaf::matches( const unsigned char* key, uint32_t key_len) const { // Fail if the key lengths are different if (this->key.size() != key_len) { return false; } return memcmp(this->key.data(), key, key_len) == 0; } template bool art_tree::Leaf::matches(const KeyType& key) const { return this->key == key; } /** * Searches for a value in the ART tree * @arg t The tree * @arg key The key * @arg key_len The length of the key * @return NULL if the item was not found, otherwise * the value pointer is returned. */ template ValueType* art_tree::search( const unsigned char* key, uint32_t key_len) const { auto n = root_.get(); uint32_t depth = 0; while (n) { // Might be a leaf if (IS_LEAF(n)) { auto leaf = LEAF_RAW(n); // Check if the expanded path matches if (leaf->matches(key, key_len)) { return &leaf->value; } return nullptr; } // Bail if the prefix does not match if (n->partial_len) { auto prefix_len = n->checkPrefix(key, key_len, depth); if (prefix_len != std::min(ART_MAX_PREFIX_LEN, n->partial_len)) { return nullptr; } depth = depth + n->partial_len; } if (depth > key_len) { // Stored key is longer than input key, can't be an exact match return nullptr; } // Recursively search auto child = n->findChild(keyAt(key, key_len, depth)); n = child ? child->get() : nullptr; depth++; } return nullptr; } template typename art_tree::Leaf* art_tree::longestMatch( const unsigned char* key, uint32_t key_len) const { auto n = root_.get(); uint32_t depth = 0; while (n) { // Might be a leaf if (IS_LEAF(n)) { auto leaf = LEAF_RAW(n); // Check if the prefix matches auto prefix_len = std::min(leaf->key.size(), size_t(key_len)); if (prefix_len > 0 && memcmp(leaf->key.data(), key, prefix_len) == 0) { // Shares the same prefix return leaf; } return nullptr; } // Bail if the prefix does not match if (n->partial_len) { auto prefix_len = n->checkPrefix(key, key_len, depth); if (prefix_len != std::min(ART_MAX_PREFIX_LEN, n->partial_len)) { return nullptr; } depth = depth + n->partial_len; } if (depth > key_len) { // Stored key is longer than input key, can't be an exact match return nullptr; } // Recursively search auto child = n->findChild(keyAt(key, key_len, depth)); n = child ? child->get() : nullptr; depth++; } return nullptr; } template ValueType* art_tree::search(const KeyType& key) const { return search(reinterpret_cast(key.data()), key.size()); } // Find the minimum leaf under a node template typename art_tree::Leaf* art_tree::Node::minimum() const { uint32_t idx; union cnode_ptr p = {this}; while (p.n) { if (IS_LEAF(p.n)) { return LEAF_RAW(p.n); } switch (p.n->type) { case NODE4: p.n = p.n4->children[0].get(); break; case NODE16: p.n = p.n16->children[0].get(); break; case NODE48: idx = 0; while (!p.n48->keys[idx]) { idx++; } idx = p.n48->keys[idx] - 1; p.n = p.n48->children[idx].get(); break; case NODE256: idx = 0; while (!p.n256->children[idx]) { idx++; } p.n = p.n256->children[idx].get(); break; default: abort(); return nullptr; } } return nullptr; } // Find the maximum leaf under a node template typename art_tree::Leaf* art_tree::Node::maximum() const { uint32_t idx; union cnode_ptr p = {this}; while (p.n) { if (IS_LEAF(p.n)) { return LEAF_RAW(p.n); } switch (p.n->type) { case NODE4: p.n = p.n4->children[p.n->num_children - 1].get(); break; case NODE16: p.n = p.n16->children[p.n->num_children - 1].get(); break; case NODE48: idx = 255; while (!p.n48->keys[idx]) { idx--; } idx = p.n48->keys[idx] - 1; p.n = p.n48->children[idx].get(); break; case NODE256: idx = 255; while (!p.n256->children[idx]) { idx--; } p.n = p.n256->children[idx].get(); break; default: abort(); return nullptr; } } return nullptr; } /** * Returns the minimum valued leaf */ template typename art_tree::Leaf* art_tree::minimum() const { return root_->minimum(); } /** * Returns the maximum valued leaf */ template typename art_tree::Leaf* art_tree::maximum() const { return root_->maximum(); } template template art_tree::Leaf::Leaf(const KeyType& key, Args&&... args) : key(key), value(std::forward(args)...) {} template uint32_t art_tree::Leaf::longestCommonPrefix( const Leaf* l2, uint32_t depth) const { auto max_cmp = std::min(key.size(), l2->key.size()) - depth; uint32_t idx; for (idx = 0; idx < max_cmp; idx++) { if (key.data()[depth + idx] != l2->key.data()[depth + idx]) { return idx; } } return idx; } /** * Calculates the index at which the prefixes mismatch */ template uint32_t art_tree::Node::prefixMismatch( const unsigned char* key, uint32_t key_len, uint32_t depth) const { auto max_cmp = std::min(std::min(ART_MAX_PREFIX_LEN, partial_len), key_len - depth); uint32_t idx; for (idx = 0; idx < max_cmp; idx++) { if (partial[idx] != key[depth + idx]) { return idx; } } // If the prefix is short we can avoid finding a leaf if (partial_len > ART_MAX_PREFIX_LEN) { // Prefix is longer than what we've checked, find a leaf auto l = minimum(); max_cmp = std::min(l->key.size(), size_t(key_len)) - depth; for (; idx < max_cmp; idx++) { if (reinterpret_cast(l->key.data())[idx + depth] != key[depth + idx]) { return idx; } } } return idx; } template template void art_tree::recursiveInsert( NodePtr& ref, const KeyType& key, uint32_t depth, bool& replaced, Args&&... args) { // If we are at a NULL node, inject a leaf if (!ref) { ref = LeafToNode( watchman::make_unique(key, std::forward(args)...)); return; } // If we are at a leaf, we need to replace it with a node if (IS_LEAF(ref.get())) { auto l = LEAF_RAW(ref.get()); // Check if we are updating an existing value if (l->matches(key)) { replaced = true; l->value = ValueType(std::forward(args)...); return; } // New value, we must split the leaf into a node4 NodePtr new_node = watchman::make_unique(); // Create a new leaf auto l2 = watchman::make_unique(key, std::forward(args)...); // Determine longest prefix auto longest_prefix = l->longestCommonPrefix(l2.get(), depth); new_node->partial_len = longest_prefix; memcpy( new_node->partial, l2->key.data() + depth, std::min(ART_MAX_PREFIX_LEN, longest_prefix)); // Add the leafs to the new node4 new_node->addChild( new_node, l->keyAt(depth + longest_prefix), std::move(ref)); auto leaf2Weak = l2.get(); new_node->addChild( new_node, leaf2Weak->keyAt(depth + longest_prefix), LeafToNode(std::move(l2))); ref = std::move(new_node); return; } // Check if given node has a prefix if (ref->partial_len) { // Determine if the prefixes differ, since we need to split auto prefix_diff = ref->prefixMismatch( reinterpret_cast(key.data()), key.size(), depth); if (prefix_diff >= ref->partial_len) { depth += ref->partial_len; goto RECURSE_SEARCH; } // Weak ref to current node auto origNode = ref.get(); // Create a new node NodePtr new_node = watchman::make_unique(); new_node->partial_len = prefix_diff; memcpy( new_node->partial, origNode->partial, std::min(ART_MAX_PREFIX_LEN, prefix_diff)); // Adjust the prefix of the old node if (origNode->partial_len <= ART_MAX_PREFIX_LEN) { new_node->addChild( new_node, origNode->partial[prefix_diff], std::move(ref)); origNode->partial_len -= (prefix_diff + 1); memmove( origNode->partial, origNode->partial + prefix_diff + 1, std::min(ART_MAX_PREFIX_LEN, origNode->partial_len)); } else { origNode->partial_len -= (prefix_diff + 1); auto minLeaf = origNode->minimum(); new_node->addChild( new_node, minLeaf->keyAt(depth + prefix_diff), std::move(ref)); memcpy( origNode->partial, minLeaf->key.data() + depth + prefix_diff + 1, std::min(ART_MAX_PREFIX_LEN, origNode->partial_len)); } // Insert the new leaf auto l = watchman::make_unique(key, std::forward(args)...); auto leafWeak = l.get(); new_node->addChild( new_node, leafWeak->keyAt(depth + prefix_diff), LeafToNode(std::move(l))); ref = std::move(new_node); return; } RECURSE_SEARCH:; { // Find a child to recurse to auto child = ref->findChild(keyAt(key.data(), key.size(), depth)); if (child) { recursiveInsert( *child, key, depth + 1, replaced, std::forward(args)...); return; } // No child, node goes within us auto l = watchman::make_unique(key, std::forward(args)...); auto leafWeak = l.get(); ref->addChild(ref, leafWeak->keyAt(depth), LeafToNode(std::move(l))); } } template template void art_tree::insert(const KeyType& key, Args&&... args) { bool replaced = false; recursiveInsert(root_, key, 0, replaced, std::forward(args)...); if (!replaced) { size_++; } } template typename art_tree::NodePtr art_tree::recursiveDelete( NodePtr& ref, const unsigned char* key, uint32_t key_len, uint32_t depth) { // Search terminated if (!ref) { return nullptr; } // Handle hitting a leaf node if (IS_LEAF(ref.get())) { auto l = LEAF_RAW(ref.get()); if (l->matches(key, key_len)) { NodePtr result; std::swap(result, ref); return result; } return nullptr; } // Bail if the prefix does not match if (ref->partial_len) { auto prefix_len = ref->checkPrefix(key, key_len, depth); if (prefix_len != std::min(ART_MAX_PREFIX_LEN, ref->partial_len)) { return nullptr; } depth = depth + ref->partial_len; } // Find child node auto child = ref->findChild(keyAt(key, key_len, depth)); if (!child) { return nullptr; } // If the child is leaf, delete from this node if (IS_LEAF(child->get())) { auto l = LEAF_RAW(child->get()); if (l->matches(key, key_len)) { return ref->removeChild(ref, keyAt(key, key_len, depth), child); } return nullptr; } // Recurse return recursiveDelete(*child, key, key_len, depth + 1); } /** * Deletes a value from the ART tree * @arg t The tree * @arg key The key * @arg key_len The length of the key * @return NULL if the item was not found, otherwise * the value pointer is returned. */ template typename art_tree::LeafPtr art_tree::erase( const unsigned char* key, uint32_t key_len) { auto l = recursiveDelete(root_, key, key_len, 0); if (l) { size_--; return NodeToLeaf(std::move(l)); } return nullptr; } template typename art_tree::LeafPtr art_tree::erase(const KeyType& key) { return erase(reinterpret_cast(key.data()), key.size()); } // Recursively iterates over the tree template template int art_tree::recursiveIter(Node* n, Func& func) { int i, idx, res; union node_ptr p = {n}; // Handle base cases if (!n) { return 0; } if (IS_LEAF(n)) { auto l = LEAF_RAW(n); return func(l->key, l->value); } switch (n->type) { case Node_type::NODE4: for (i = 0; i < n->num_children; i++) { res = recursiveIter(p.n4->children[i].get(), func); if (res) { return res; } } break; case Node_type::NODE16: for (i = 0; i < n->num_children; i++) { res = recursiveIter(p.n16->children[i].get(), func); if (res) { return res; } } break; case Node_type::NODE48: for (i = 0; i < 256; i++) { idx = p.n48->keys[i]; if (!idx) { continue; } res = recursiveIter(p.n48->children[idx - 1].get(), func); if (res) { return res; } } break; case Node_type::NODE256: for (i = 0; i < 256; i++) { if (!p.n256->children[i]) { continue; } res = recursiveIter(p.n256->children[i].get(), func); if (res) { return res; } } break; default: abort(); } return 0; } /** * Iterates through the entries pairs in the map, * invoking a callback for each. The call back gets a * key, value for each and returns an integer stop value. * If the callback returns non-zero, then the iteration stops. * @arg t The tree to iterate over * @arg cb The callback function to invoke * @arg data Opaque handle passed to the callback * @return 0 on success, or the return of the callback. */ template template int art_tree::iter(Func&& func) { return recursiveIter(root_.get(), func); } /** * Checks if a leaf prefix matches */ template bool art_tree::Leaf::prefixMatches( const unsigned char* prefix, uint32_t prefix_len) const { // Fail if the key length is too short if (key.size() < prefix_len) { return false; } // Compare the keys return memcmp(key.data(), prefix, prefix_len) == 0; } /** * Iterates through the entries pairs in the map, * invoking a callback for each that matches a given prefix. * The call back gets a key, value for each and returns an integer stop value. * If the callback returns non-zero, then the iteration stops. * @arg t The tree to iterate over * @arg prefix The prefix of keys to read * @arg prefix_len The length of the prefix * @arg cb The callback function to invoke * @arg data Opaque handle passed to the callback * @return 0 on success, or the return of the callback. */ template template int art_tree::iterPrefix( const unsigned char* key, uint32_t key_len, Func&& func) { auto n = root_.get(); uint32_t prefix_len, depth = 0; auto prefix_key_len = key_len; auto prefix_key = key; auto prefixCallback = [prefix_key, prefix_key_len, &func]( const KeyType& key, ValueType& value) { /** * Helper function for prefix iteration. * In some cases, such as when the relative key is longer than * ART_MAX_PREFIX_LEN, and especially after a series of inserts and deletes * has churned things up, the iterator locates a potential for matching * within a sub-tree that has shorter prefixes than desired (it calls * minimum() to find the candidate). We need to filter these before * calling the user supplied iterator callback or else risk incorrect * results. */ if (key.size() < prefix_key_len) { // Can't match, keep iterating return 0; } if (memcmp(key.data(), prefix_key, prefix_key_len) != 0) { // Prefix doesn't match, keep iterating return 0; } // Prefix matches, it is valid to call the user iterator callback return func(key, value); }; while (n) { // Might be a leaf if (IS_LEAF(n)) { auto l = LEAF_RAW(n); // Check if the expanded path matches if (l->prefixMatches(key, key_len)) { return func(l->key, l->value); } return 0; } // If the depth matches the prefix, we need to handle this node if (depth == key_len) { auto l = n->minimum(); if (l->prefixMatches(key, key_len)) { return recursiveIter(n, prefixCallback); } return 0; } // Bail if the prefix does not match if (n->partial_len) { prefix_len = n->prefixMismatch(key, key_len, depth); // If there is no match, search is terminated if (!prefix_len) { return 0; } // If we've matched the prefix, iterate on this node else if (depth + prefix_len == key_len) { return recursiveIter(n, prefixCallback); } // if there is a full match, go deeper depth = depth + n->partial_len; } if (depth > key_len) { return 0; } // Recursively search auto child = n->findChild(keyAt(key, key_len, depth)); n = child ? child->get() : nullptr; depth++; } return 0; } watchman-4.9.0/thirdparty/libart/src/art.h000066400000000000000000000173551314236077500205460ustar00rootroot00000000000000#ifndef ART_H #define ART_H #include "config.h" #include #include #include #include #include #include "watchman_log.h" #define ART_MAX_PREFIX_LEN 10u /** * Main struct, points to root. */ template struct art_tree { struct Leaf; struct Node; enum Node_type : uint8_t { NODE4 = 1, NODE16, NODE48, NODE256 }; struct Deleter { void operator()(Node* node) const; }; using NodePtr = std::unique_ptr; using LeafPtr = std::unique_ptr; /** * This struct is included as part * of all the various node sizes */ struct Node { Node_type type; uint8_t num_children{0}; uint32_t partial_len{0}; unsigned char partial[ART_MAX_PREFIX_LEN]; virtual ~Node() = default; explicit Node(Node_type type); Node(Node_type type, const Node& other); Node(const Node&) = delete; Node& operator=(const Node&) = delete; Leaf* maximum() const; Leaf* minimum() const; virtual NodePtr* findChild(unsigned char c) = 0; // Returns the number of prefix characters shared between the key and node. uint32_t checkPrefix( const unsigned char* key, uint32_t key_len, uint32_t depth) const; // Calculates the index at which the prefixes mismatch uint32_t prefixMismatch( const unsigned char* key, uint32_t key_len, uint32_t depth) const; virtual void addChild(NodePtr& ref, unsigned char c, NodePtr&& child) = 0; virtual NodePtr removeChild(NodePtr& ref, unsigned char c, NodePtr* l) = 0; }; struct Node4; struct Node16; struct Node48; struct Node256; // Helper for dispatching to the correct node type union node_ptr { Node* n; Node4* n4; Node16* n16; Node48* n48; Node256* n256; }; // const flavor of the above union cnode_ptr { const Node* n; const Node4* n4; const Node16* n16; const Node48* n48; const Node256* n256; }; static inline bool IS_LEAF(const Node* x) { return uintptr_t(x) & 1; } static inline Leaf* LEAF_RAW(const Node* x) { return (Leaf*)((void*)((uintptr_t(x) & ~1))); } static inline NodePtr LeafToNode(LeafPtr&& leaf) { return NodePtr((Node*)(uintptr_t(leaf.release()) | 1)); } static inline LeafPtr NodeToLeaf(NodePtr&& node) { return LeafPtr(LEAF_RAW(node.release())); } static inline unsigned char keyAt(const unsigned char* key, uint32_t key_len, uint32_t idx); static inline unsigned char keyAt(const char* key, uint32_t key_len, uint32_t idx); /** * Small node with only 4 children */ struct Node4 : public Node { unsigned char keys[4]; std::array children; Node4(); explicit Node4(Node16&& n16); void addChild(NodePtr& ref, unsigned char c, NodePtr&& child) override; NodePtr removeChild(NodePtr& ref, unsigned char c, NodePtr* l) override; NodePtr* findChild(unsigned char c) override; }; /** * Node with 16 children */ struct Node16 : public Node { unsigned char keys[16]; std::array children; Node16(); explicit Node16(Node4&& n4); explicit Node16(Node48&& n48); void addChild(NodePtr& ref, unsigned char c, NodePtr&& child) override; NodePtr removeChild(NodePtr& ref, unsigned char c, NodePtr* l) override; NodePtr* findChild(unsigned char c) override; }; /** * Node with 48 children, but * a full 256 byte field. */ struct Node48 : public Node { unsigned char keys[256]; std::array children; Node48(); explicit Node48(Node16&& n16); explicit Node48(Node256&& n256); void addChild(NodePtr& ref, unsigned char c, NodePtr&& child) override; NodePtr removeChild(NodePtr& ref, unsigned char c, NodePtr* l) override; NodePtr* findChild(unsigned char c) override; }; /** * Full node with 256 children */ struct Node256 : public Node { std::array children; Node256(); explicit Node256(Node48&& n48); void addChild(NodePtr& ref, unsigned char c, NodePtr&& child) override; NodePtr removeChild(NodePtr& ref, unsigned char c, NodePtr* l) override; NodePtr* findChild(unsigned char c) override; }; /** * Represents a leaf. These are * of arbitrary size, as they include the key. */ struct Leaf { KeyType key; ValueType value; template Leaf(const KeyType& key, Args&&... args); bool matches(const unsigned char* key, uint32_t key_len) const; bool matches(const KeyType& key) const; uint32_t longestCommonPrefix(const Leaf* other, uint32_t depth) const; bool prefixMatches(const unsigned char* prefix, uint32_t prefix_len) const; inline unsigned char keyAt(uint32_t idx) const; }; art_tree(); ~art_tree(); art_tree(const art_tree&) = delete; art_tree(art_tree&& other) noexcept; inline uint64_t size() const { return size_; } void clear(); /** * Construct a new value in-place in the ART tree. * The arguments are forwarded to the ValueType constructor */ template void insert(const KeyType& key, Args&&... args); /** * Deletes a value from the ART tree * @arg key The key * @arg key_len The length of the key * @return true if the item was erased, false otherwise. */ LeafPtr erase(const unsigned char* key, uint32_t key_len); LeafPtr erase(const KeyType& key); /** * Searches for a value in the ART tree * @arg key The key * @arg key_len The length of the key * @return NULL if the item was not found, otherwise * the value pointer is returned. */ ValueType* search(const unsigned char* key, uint32_t key_len) const; ValueType* search(const KeyType& key) const; /** * Searches for the longest prefix match for the input key. * @arg key The key * @arg key_len The length of the key * @return NULL if no match was not found, otherwise * the leaf node with the longest matching prefix is returned. */ Leaf* longestMatch(const unsigned char* key, uint32_t key_len) const; /** * Returns the minimum valued leaf * @return The minimum leaf or NULL */ Leaf* minimum() const; /** * Returns the maximum valued leaf * @return The maximum leaf or NULL */ Leaf* maximum() const; /** * Iterates through the entries pairs in the map, * invoking a callback for each. The call back gets a * key, value for each and returns an integer stop value. * If the callback returns non-zero, then the iteration stops. * @arg cb The callback function to invoke * @arg data Opaque handle passed to the callback * @return 0 on success, or the return of the callback. */ template int iter(Func&& func); /** * Iterates through the entries pairs in the map, * invoking a callback for each that matches a given prefix. * The call back gets a key, value for each and returns an integer stop value. * If the callback returns non-zero, then the iteration stops. * @arg prefix The prefix of keys to read * @arg prefix_len The length of the prefix * @arg cb The callback function to invoke * @arg data Opaque handle passed to the callback * @return 0 on success, or the return of the callback. */ template int iterPrefix(const unsigned char* prefix, uint32_t prefix_len, Func&& func); private: NodePtr root_; uint64_t size_; template void recursiveInsert( NodePtr& ref, const KeyType& key, uint32_t depth, bool& replaced, Args&&... args); NodePtr recursiveDelete( NodePtr& ref, const unsigned char* key, uint32_t key_len, uint32_t depth); template int recursiveIter(Node* n, Func& func); }; #include "art-inl.h" #endif watchman-4.9.0/thirdparty/libart/tests/000077500000000000000000000000001314236077500201475ustar00rootroot00000000000000watchman-4.9.0/thirdparty/libart/tests/runner.c000066400000000000000000000015561314236077500216330ustar00rootroot00000000000000#include #include #include #include "test_art.c" int main(void) { setlogmask(LOG_UPTO(LOG_DEBUG)); Suite *s1 = suite_create("art"); TCase *tc1 = tcase_create("art"); SRunner *sr = srunner_create(s1); int nf; // Add the art tests suite_add_tcase(s1, tc1); tcase_add_test(tc1, test_art_init_and_destroy); tcase_add_test(tc1, test_art_insert); tcase_add_test(tc1, test_art_insert_verylong); tcase_add_test(tc1, test_art_insert_search); tcase_add_test(tc1, test_art_insert_delete); tcase_add_test(tc1, test_art_insert_iter); tcase_add_test(tc1, test_art_iter_prefix); tcase_add_test(tc1, test_art_long_prefix); tcase_add_test(tc1, test_art_insert_search_uuid); srunner_run_all(sr, CK_ENV); nf = srunner_ntests_failed(sr); srunner_free(sr); return nf == 0 ? 0 : 1; } watchman-4.9.0/thirdparty/libart/tests/uuid.txt000066400000000000000000160724401314236077500216740ustar00rootroot00000000000000eac6b78b-0c31-49a6-9c6d-e396e7dd7956 5809c38a-4e46-4269-9eeb-97186229603f b099226b-8399-4bca-bd73-ca3a02c55201 d853ac3e-e307-4e59-ba40-77bf7a7726f9 77e8c236-6666-4cc8-948e-cb83c933ad66 794fb019-1c47-4b9a-b887-4eefb7f18c1e 5ab0b453-cb13-4300-afc9-f091052c2f3e 9708ba05-11ec-445a-a085-b3fd75629e00 8dcce6de-6d57-4931-9b23-ecf28d1a716a 4109585c-f91b-4aa1-967d-a870fc82d4b8 fcb87f7d-b768-4180-ba16-63d1d64051c2 7d9935b0-8ad9-43cf-ac86-8d0c3ea4fedf 41125dd5-c4c5-4e44-82b3-b1f3687c2739 94b92175-a18d-45e8-a585-ad87399852b3 d519ac07-1b10-4b61-b540-9b129c9ed465 44ea6704-ec7b-434c-9349-34312b860404 72218ecf-d981-44be-9001-bc9907db7d90 e1a073e6-08ad-48a1-bc7a-0ee6021d8b38 dd886eb4-718f-41f7-8df7-b21e8a0eb635 733218f1-da16-4e99-b8d6-97ee1024b296 dabbbc4b-fc5f-4351-96aa-222484a6ccf5 0a668dde-6c1e-434f-b7ba-922fd07f6cd4 a3387356-2f84-4522-aa73-d75d21de2b70 06e3bb78-e287-4a9d-8d98-3aeaf571abc2 444e961f-0a00-4995-9527-db0cd1539acd 7a2afa74-9e0d-4898-8074-60a8b1061c46 3d28d53a-51f2-4584-a4b8-aa7d85e93d89 9d35e2c3-0e81-4250-a435-3e9e3404578b 608f008b-8217-4a5b-b366-1c9d581fd187 1ac30a67-d950-450b-a8bc-b78393ad4cb8 438b9849-15cd-466b-adec-ac51cfca7e55 6a8584f2-d8f7-4c48-b5b0-bfd47e8efca5 00ff2638-0d40-42a5-a63b-ed5c3d86cc6f d40c1d48-3fc4-4d92-9b89-587126354f2d 76c9ec97-b4df-4772-af22-725c1cc62130 6bf50bc9-709b-4dd3-af53-be49125155a0 39173d8b-22ae-48c8-a620-2da6273bd392 b542fdaa-92aa-4601-95e0-e665f011cf51 c5ebea8f-1e74-44fc-95cb-1717e3796163 c3d34c1b-d163-45ed-98bc-5466b5c01559 ad13a09e-4b38-40ab-83f8-bfc8f056e60d 7ceb7a37-2d8e-4107-891f-644f3c0d09bb f77ea1bf-3b21-418a-aba9-0817f7618899 0febfdb1-fb8c-480a-8523-faac17d4b6f0 9f86ed89-34fa-42c6-861d-ba77751684fe 44b63d2f-d6a7-4617-bd01-d275e541eeaa e21e9535-a676-4c67-83e4-b740e3d0e08a f3c88b9a-c5df-4f97-ae06-4317155f4447 f6ff39a4-3c9b-4c2e-a3c2-1ffd53d85b14 0bd9b90f-bb30-4ed0-87e4-fae6b86d9e99 8cdf7865-ce6e-48d7-bfb6-f89d2e255b9c 387a8b7a-ca9a-48b3-a055-f944b1d3ac90 fdbb78c3-865f-4834-bd94-88c2254e0fba 96e08406-78ae-4a19-8ea4-ac63fec1630f d0c7b33f-ba07-4a64-81e1-d257015e2856 f0598343-8e77-4c44-9220-62e810e98ebe 0596cafc-4b5e-41f0-9f3d-8465b5c83fd5 e1f3adda-926c-4b2c-bc05-95a2b2aaad21 cd9e1d9e-cc80-4597-9e75-5e43ce19f776 8e26fcf9-7a29-499d-b8d7-c94eebb55bec 7640231f-fd4e-47fe-aaa3-7dd2f8def771 16f984a6-7f47-4a46-bc2e-a2540c665aa6 2a94bac1-b486-45be-9d0d-61b89abfd935 4617fe94-21af-4567-a27d-604737451158 5ceea22d-5764-4a71-8e02-2199a5fe5cdf 3de67c55-31f0-4ab3-a8ed-077e42b8b6af b3751018-24ed-4577-9b96-3b614acdae8a 6cf7a6c5-9047-4ebc-bfb1-5faa5d8fa813 057c332f-8d14-41ca-b56a-7207fe8c96fc 88a56844-6437-431d-aacd-5e9746b41853 63e0db87-0f5e-4be5-9bcc-07073bbd623c a119638e-f320-4a49-afee-bf4aa46d464c b9658598-9df7-4190-9e2b-6c4801b4702a 180244f5-0122-4197-9640-2dcfae9324d5 03fe58f2-421a-4ee1-8338-7ae365eb28fc d547ceb8-51d1-48aa-8590-d0a17fce30e0 1e24197d-f37a-4729-91c6-4fcb9667c8c7 16c79e19-3e72-449d-9fa2-76a9d28ea2a6 8cb12d52-c35b-49a7-beab-8b76b7e39bfe e5d33250-e16b-4356-86ff-87be63d13c3a 0f98c16e-e036-4388-b425-821ead17473b 20225639-8b36-431d-99f2-69fe56051999 fd66243b-e3e3-4692-b330-48b5377cda72 2d8d9ac4-2b2e-421d-b6d6-1820bc29e758 85d12902-974b-4ad2-bb99-674b81f6f246 413a6759-4281-442b-a94f-9aebc74e4d57 7b2e29d7-ff20-4287-864a-d21e3dcc2b87 1eda0ea1-d80e-42db-b76a-bdec168676cc a8d3b550-be53-4eda-9f5f-e5394ac9d4d1 4b838e3e-c27f-49dc-ba58-7f8112dda99d e9d823a9-e29a-4ad0-9b4a-228ef1bc2e5c 02af4447-c7ad-4059-aa26-ce160efb63e8 27ec7f7c-45b0-4f1b-88d6-3b898e4d32b9 72fc9632-41cc-47c3-8772-d03c1b65dbd7 ef1cc34d-f721-4d76-8c3a-266f17fe6985 f69c6f7b-78f1-4195-8391-e1a39f40a945 0ea957ec-3e87-4acd-b100-54ff16fe28f2 14be9582-67e4-4d1c-8407-41bb432256ef dd581310-e1f8-4404-9496-cbb753b4253d 3124f91f-fd66-4734-a962-8addfa0105fe a07eebf2-cc17-494e-b0bb-35a54910a2ef d4c99dfc-44b5-4a6c-9908-da618efc844e 7a4f78fa-d8a7-4104-97f3-d5af921abb88 f117db0c-0e3f-4b58-b79a-5e0409c8007e f4c7dfa2-49fb-463a-a7de-5d0e3ebca6e1 421dc560-d21a-4f28-92cb-d3c36170a826 f474c832-e029-4e86-b5ef-a93bf5093de8 a7f166cd-ef83-4448-82da-914407553378 599e6edc-c8ba-467c-9517-69184c4b2ac1 36f0e0ff-8a47-4466-877d-6c403df8dda3 ce7e45db-0576-4a49-bb04-e29f9b8c94e8 7ccc131a-e41f-41eb-8011-ca07bac55425 ea12e726-fd7a-4a3f-a215-af559cc914d2 182952c2-8535-4a75-a8fd-92d9d3b1e0f1 31b23ce5-aa21-4fef-917c-caadd9947978 fc08b9e2-e7a4-41a9-8a74-7efec7884515 f458dbb0-7962-493a-bbd9-02b9dd1d4917 08d37590-c736-4a88-8f80-3ef6d6d5a785 003a6197-1416-42f3-8c7f-7cf0a09ada96 80b030e4-241d-4cab-bff0-c7826b6af067 ee7554cb-ec1c-46ec-b473-a53938ef1841 dcbec784-17c4-4f5c-8eff-04447a9444f7 40641141-1818-4f77-a1cf-663c0d0dbe4a b78f5e3e-b31c-4839-8af8-ae6deda401c9 ca0b2376-2369-4506-b04a-b9502a0a5f64 adb4b88c-0d22-4536-ad50-adf1aff7d4c3 995af176-3bc6-4695-b550-fde3a2768eab 354e2a6d-194f-41e6-a85a-08734fbfbbb0 752c67a9-d817-4b42-b8c6-b6190d71319e 524e2c0d-5105-46fb-a034-bb73aec2a3ee 29e3721e-4c80-4ef2-b37d-efb7e1c59f4a 7f9de414-9f37-4143-ba21-b9b8710c5e84 4e6f47f8-cdea-453d-942d-595e961961a2 38643c58-fc55-4944-9e9f-f70a402cc5d8 202fc4e9-82eb-44ec-94aa-dbabc3ae30da 68adbc80-ca68-41c7-831c-18821d2761c7 f24ab593-9a79-47a5-950d-a79610e47996 c17456a2-7779-4b0c-85ef-47c2b9e3e8ba 4d335088-57cc-45b7-8cd2-53ba86a4b7c8 0e9fc7b6-5dd6-4313-b288-8ed8e79c3050 164611a2-3c31-448b-8a41-b7c111603681 d2d97494-e68c-40c1-813f-962de82e1de5 6c94f252-7066-44a7-8f9b-b059a13ff735 d0eea877-e377-4436-bb95-fb8a7cdd5bd7 030065d1-cfa9-4722-9918-efae0d5090ca 4fba8c2c-d355-40f3-8c35-694dd300bd1c 6c895d05-2125-4e51-9339-b96258d09fcb cce17e7b-71a7-4dcd-b212-5adb26b60699 c1654ead-38fd-4b06-a8db-03c684d023dd c79f4dee-cfef-4631-a458-6645d2eacecc 4c1105b6-275d-42c6-bdb0-a218ea7c7309 dde32d37-abc6-4dd8-94e2-108a82322dca 1d7d007c-eedc-4ba6-842d-c7936dbbf06a 672fa8e2-4f89-45f8-b250-a9c10292b145 e9487508-b522-4a9a-a899-df96d54e7ccc 8a0ca18a-c0a5-4e98-a3dc-395a2a7a9704 039a0a37-8ad8-44eb-9073-d28cef005778 d351db68-7749-4464-9242-f8e7441a494e 5a162010-566a-4ccb-981c-72baec7f888a cb7f9362-28d9-4da9-9833-c35a9e0dd093 9a413f47-b8b5-47e2-95ac-2d8c368b3657 d77c23de-6298-4286-8a72-520f66e06aaa bc8185d0-5251-44c8-b5d1-0f945365e6db e0b39a10-8e3b-4ab8-a412-899f419763ff a66ed54d-65e2-41b3-a053-689df393cfe9 3850a7c8-c853-437d-9d9b-c4dc26cf1077 d88903fe-fba8-48b1-ad57-c51898552e0d 9ab4c890-85e8-4d20-8217-98a82a8adcc0 4f30bb6c-787a-4f7e-b46f-d62554e0f188 a7aaf11b-c313-4e8b-b3cc-59ec6881a409 36f01eb0-b1b5-4873-bb9b-8807168ab221 cfd0b6d4-0011-4cf2-b725-9bdf635816c5 1f01fb13-25f4-4f57-8d87-27bf704786b9 a11b0504-0f6a-435e-a3be-97f3eed5507d 723a7449-4fe6-48ea-8aa5-b3d95fae5747 008bff11-f77c-4e1f-948a-719342992555 3c8f7d19-4d62-49d2-b9f6-c42f6249c398 c91e4bde-e905-40c1-8435-9effa9383f45 ba2674be-d25f-461b-8054-a7f0d087ab9e 5d4432f6-5fd8-47bf-b502-b06caf0443bd 4d4e8e52-6c92-43ff-baad-c89875e76949 fbec54d1-78ae-4f9e-bf4c-1572f79b14d9 6215521a-1d54-4f94-ba8d-f4969593d1fc 6934c95b-b9f6-4622-ae59-18fbc3504e73 7b691b85-c2d2-4eea-8710-02acbd7bf1d8 f2c43f70-bf84-4df1-ac83-35492c392258 e0921544-3eac-46c4-9f5d-58371acbd517 2f7a19eb-e45d-4168-ada1-f818c3175f72 e8837fb8-5fad-416a-b9d0-e7d19a3a354b 92cb8a66-ab33-485e-ae87-d318142cbb69 4ea29fe5-be45-453d-999a-20c788b03749 6ebcdcc9-a564-4edd-a893-eae47ea3fe53 f54ef80a-efbb-4da2-bc71-7988e01b1e67 931fd079-79bd-487f-a17e-bd914f57b322 74b43b10-a613-4c59-96e0-5a708c842a7c 38950034-f729-4a8b-b761-c1584bb9b9f7 adf5d91d-8a3c-4d80-ade0-2cccb9c2c1ed 03dcfa44-4bad-4b36-8947-6efbc78abc77 6f48b138-be21-412b-9b17-613b58baddb5 53b1291e-93a4-4e7a-8e75-c623853cc106 8211e5e6-cef0-4107-a755-daa235fc5151 fe1e6017-3870-470d-95f8-7d68d3491349 455ec986-04a4-4ee1-9e81-b25d3005eb9a 398b9991-c1f1-4a81-afea-1287f1326ab3 0061530c-036b-4f45-86d6-961fbe1da757 da62b9c0-2c06-48eb-a3a6-844bfc3da725 fd8f8d2c-f41f-4ccc-8905-61377e355330 c80dbccf-51c1-4bff-a9c3-6106b02387ba 0fe28fda-14d8-4948-9983-9d25992f3711 243a4971-f8c1-4865-af4d-365038d6b864 a7dcffc1-2566-43e7-abba-a7443ddb38e4 7f57a78b-f536-4de4-85a2-f449dac3f0c5 81124737-a5c3-4319-97dd-ad8495e317f8 aa1ca482-b697-4bb4-a2d5-0ebb721a8c3b 760f8686-0671-4974-9b46-b5691e6adaa6 beecdedd-0411-492b-a8d2-3c891d29becd 3f79d7b5-d26d-42ec-8f49-26f8fae42ad4 9a1af58b-8e90-456a-8217-7367c45e47c0 0d85d120-f5f9-49dc-8dd0-9b736218ff4a 748bd4e7-6c68-41c4-a705-4860cd192de7 d0d5081c-5d67-41a8-a4ab-8327cf8c6d9b 55f81814-3e7c-4246-adea-8d4f40949a53 860bfe82-c4a7-4cb2-9417-575e022f1c2d ab4300b8-6620-44ad-92b3-a0fb7e98ea1e de73e674-5e31-4269-86d7-8a775a2ac1bf 18cc954d-aac8-4bc9-9c6f-873cdc3a3cff 75984749-c0d8-4a40-9a82-526d9f8c06ad c2812ecc-d542-45f3-b4fb-b183d7da747d dc17377f-2816-4ecb-8f81-260df3efa638 303e81bd-be5b-4798-8a9c-26141d7225ef f46d43e1-4259-4789-9c20-f63f22cd2886 4e5ccc75-b5ec-4dbe-8e20-62a608989360 6f9d9a65-0c57-4114-a472-c896a6cf7169 eff69007-b625-4763-b387-cf624a40eb64 42e3aa4a-3656-4514-aaa5-a453737beee2 03df95f1-970a-4967-b075-8ec1cfa70f59 c0f0ff3b-9ba7-4b19-ab12-27619bea6ba2 7f361620-92b0-4b81-b8ce-ae57b3ab291d 4a54ed18-6d36-41f9-be7f-e3214527be91 bbe16e12-142a-4a3a-ba6b-aed0734a4a10 d4b164c3-f887-491f-9898-1b08d53e01cc ab07ece6-b2bf-4e5a-8efb-c005b5274df7 3ea5bd7a-ab77-4f9f-b8b7-612d2442bce9 cb285913-5075-41fd-94a3-e2eab2f33be3 9e9ed928-5042-4d6b-ab78-ed8963b92199 71a2dfba-18de-437f-b79f-8fcc6bada708 caf62d94-78e4-4b22-b99b-66b5950ec3ad 0fa825b3-c705-4f95-ad82-3afa0882fc68 0f767176-6d87-4c0f-b4fe-09a64017391c 48cae32c-3fb6-404c-ae8d-b6724a3f6eee 2c1957db-ac0f-41dc-979f-ae8d1bf58a10 39ebcd04-e514-4afc-b2ac-f154207fb9a4 3761eaa3-97ac-4361-b71c-2237395d4a26 0135e926-7eb5-4a3e-be97-f238eb69570a 5c2c59c2-216a-4a59-aef9-9be742b39294 207a6751-48ce-40ac-a47b-c087400451a3 de834f24-f548-4e4b-b80a-2f2a20b7b95b 88b1d40c-0fa1-47c8-8977-92795af90626 95bb8235-cc65-4861-9b1b-e152c322a06c 9c2752b3-97fc-4236-9a8b-76f754162931 68c4ee11-a383-4176-9538-b4d3d08f4c6b 382a72c8-861e-4425-88a7-f4686166a092 29b67021-72f4-42f6-a498-df574f16bb8e 01285c70-552d-4789-9c1d-a07f98390e13 54f8688e-c3fa-4c41-b939-ca29c69ba59e 666f9491-f821-495e-b8cf-f6c1310f3177 7c07472b-66ef-4322-b17c-1fa7713286ce 3a58d611-e0f7-4086-91ef-51e0cac40c9d 5e54011e-d5c8-4a89-a853-9fd16117c592 3dafd1d8-ff1f-4c77-b27c-0cafeb04db4b d1975b03-6d03-48f2-97ae-367aec2b70ca bb8134a3-2724-4bc8-b633-da01de60277d 1ca2bc7c-e1dd-4eb3-a0e0-a2a47ac52a74 a61f5b59-5d03-44ad-af24-c99b4625030b 57010b55-66db-4666-b844-0fb27e3df936 dc4a4c96-9887-4e51-a890-94c5f5201ff6 6b656a1c-e85a-4176-bec1-451e3e73d382 5d0516b5-7dba-4790-ba62-e5e578e9cbb8 55d0adb5-a5e3-45cd-8fe4-aede2111ab2d 6bc1d052-0494-4c9e-84fd-8e31b1ecbfd8 24bc8778-3052-45be-b7d8-9b67580ee688 b32a662d-aae3-49ce-bf6b-4520a98e6a33 cc5dd6bf-99df-45d0-a671-9f40db431b56 8e3259c5-5361-4b0f-9106-79eafb1d8454 db89653b-d261-4103-94da-d0f8cdccdce5 f3901386-43ff-4d59-8dfb-ee868d40e4ed 4f7c5394-0efb-4c65-b18a-afb7136e94ce a791417d-dc55-4974-88f4-2844e15d2c89 1d09da1e-b527-4f28-99ff-ef99bfc0ca98 9b229c94-8654-48c9-9fb7-e3e5e51ad564 8e773926-02f0-49c5-bc92-f9f510070c97 428b0e36-02f1-4589-a605-ddfe33682735 3a60add4-7555-4144-bcc1-34559d2ecab2 2fd5ba5f-5639-4098-abbb-8363685813ef 95f705ae-1f30-4b25-ab5a-d7c269da5ce1 6a7e5c27-a348-4a24-a649-16072556f671 8fd8ec0d-e8b3-4e0f-a20f-5f4b68e5a2f6 69eed0e0-7a33-4953-ba3a-eec45082103f 16dc414f-0a25-4fed-ab1d-184e729d062f a3f6b7cd-50f8-4e34-ae8d-52101590e578 e7d26874-12da-403a-b9c4-aeb0d10e2c76 9af49297-4e1a-41a0-9547-c293cee5f8ad 2b7349aa-755e-4a7e-b203-222aca3e143e 36ec5f65-681e-48d0-9fdd-7a663c1b802b eecb976b-5267-436b-ab49-f91581216773 28bee0d4-1f05-4327-949b-42fab85af961 fc0c90e4-4006-430f-88cb-eefa6eafbe67 9dbda988-b6bc-4cf0-8df3-204c8643d17c 76594c01-6887-4260-b6af-a25faa25764e 46342fef-4ab8-412f-bd1b-3540e0f9a9bb 3e3b1a2b-0deb-4b5a-a5a0-9d264d23bb63 799b23eb-8ff1-449f-917c-75d8e467777c b26ccf53-7571-4f71-8635-cdee25d0d453 17fdc247-d653-4f57-bf20-114fbd2a0b4f 84fcaff5-985a-4bcb-b4be-8c2c9bde3411 43817f4c-9730-41b6-a162-aec74c4e7c7e c779fdb4-4d3d-431e-87ce-d4280551773c 538ad433-06ab-4908-aba5-466993ad6c6c 4c9a5666-a078-403c-9926-60f31845a2c3 99677dc0-c771-411a-be9a-d33a248774e7 b2175260-6203-4280-b014-ced447f18fcf 84a41478-0ff2-49fd-9adb-9b77f8f7e11c 171bd32f-2aa3-45ad-932b-ba7bdf3fe75b 7ddd6aa8-374d-4253-99e6-080d2f06b906 bcb01b7e-4e3d-4983-b8e1-e8d1fa5d875c fed7e182-c77e-4e0e-bafa-94c65fcda3f0 0493fb33-c44c-4e55-8db4-68445c382213 f08cd47c-1d87-4a06-94f3-2756cd23c774 f3c970eb-197d-4d93-a429-139e4ef37e1f 8727878d-a817-4de6-9d7c-eebba125f865 f0b7aedd-ea6e-47b1-b5b4-71aed75ef2bb 74c0203b-3a88-4275-88d0-3b8be693b4fa b9e80f98-ef95-44e9-88d8-5007c48ed27e 14a0d56f-4f34-4482-9d1b-7ca2647309ed d5da8118-5592-4dce-8958-f283fac55a36 e5318d74-0d65-4843-b363-5478b5bd2d67 f401eeab-9325-45cc-a74d-57890c196072 ac6e2434-9c79-4c35-afcb-b1e39f7189ba e9db685a-973f-418a-8c28-164febd58db9 f7a79dce-21d4-41ac-b614-8f3b5820b2cd f3367435-40a0-45c2-a296-99a3c4466334 0d47ab8a-09a0-40cc-ae4d-0bdfa91cfdaf 58908c0e-1c67-460b-a3a2-7e90e8a85c4b c4c6bb53-5bee-41f0-a1c8-02a947d837d1 0519107d-5eb6-4a65-8cd4-777eb2c45734 3a1e3896-cf86-4853-8cf9-e4427518d73a 175b000e-016d-4c1b-8641-f105ade5e398 9b4146ee-e025-4163-8c99-2ba21ab3f97a c303c591-39ef-4659-8db9-96d4ad3700fb 3d750525-cece-435c-8384-503bbae5a66e c91f74b3-857c-4801-9420-1a18bca71824 f6b472b2-6f61-4d15-90d9-cf5809f0006b 9fda63cb-30a3-43d0-b49f-de07954852a7 98cc0979-b921-4063-98d8-b218be2b0e1c 292e86c6-e402-42f7-86c1-8727881037f5 44854138-a1e3-4bb4-abec-fdf07ce3742a 819fed1c-e550-42ad-b5f9-6dff94e35986 45883488-5379-4f7d-b85d-6a2ea21f0bb5 78e9e1d5-3cb4-4ca2-a193-1efcea3c17b4 a820911a-8b37-477f-b1f7-56cc794c65a3 26b25d35-c323-43ac-9208-5d3c6c3af8b6 e029b84e-b182-4aea-b96e-6a9a503ceedf 887ec982-1b53-4e81-8a96-5ee1baf5979d a7b1acd8-b594-4271-be19-206b009572a5 1b5708c0-eca3-49ae-80a3-b4f76bfcf040 a3c2e9b3-aab9-471a-9aef-04f3dbf447bc d0e297ae-a9e4-4cdc-8de8-0b6b22dc243b 0032ef32-4523-4ddf-8673-e5b7b4c0e87b f8b36f8a-8263-4bb2-a67e-94939b6aa28a 7b963e4f-3c0c-462b-9f94-abd128e2e540 4dbd2b4d-c895-4aa7-8589-e3958d364c71 c8e092d8-5c61-4942-baab-f7de25689d42 b290eb98-d74f-4ab1-a213-db38a4ed4241 1a7fab29-4172-49ea-995d-57e29aa21a1a 9735fd0d-4f9c-4ee8-9a6a-dfa292dd3072 f57fff14-6d2b-4558-86bb-c51d8c42b286 1194a6f7-9dfe-48c4-8657-f7bace1ea4ab 891ce46c-c7b5-464f-a301-b56b963aff0b dba330a0-b53c-4cc0-bd83-2dae43b379ae 7812c252-fef0-4817-bfc4-8c2a7b59b7be 73ce1b57-e81b-4ddf-8c14-7a88a67866ed f34f64d7-f63d-4753-8e05-71aa5e71dc83 bf1f84f5-2f83-4d42-9752-141fe51cc690 2a5cce6b-07f8-4847-ac98-27832dc0a92f d5cc4081-8057-48a1-bac3-69fcb886ceea 07ea53bb-cc05-44e0-badb-0bda2dca9e93 501d3882-b5dc-4790-be7b-d0d1c9e632e3 33f3ca90-af62-44ed-ab96-faadf7cec650 e678ce3e-643a-4a43-901c-ab314ca9b7c2 f6f38d3c-fb42-42c7-adc9-52508d550425 63e9a416-c127-4bfe-b1c6-f5a31d918f72 100fd410-ce09-4ca2-bace-33032b16b507 2779244c-87be-4e5f-9926-98350c36d6b4 8dd19999-2c42-4668-bf96-6f99713c2633 41a415be-59ee-425e-a5eb-dd51da19b3b5 367a2f78-a486-4b6b-9789-423f5f8062fb 838e3e07-f414-4f6f-8f7d-c2064eb00598 b1254f95-3274-4140-a57d-b8435416d145 4c4ea984-27d4-44d1-b63e-990676d64b84 4059b5f6-7fd9-4410-b1f4-e42e5723a34a 9ebb6e55-97eb-4c47-94ed-acf245025936 2047170d-de9e-4f05-8b8f-3d2ec471db85 24094b9e-7f7f-4f2b-a967-9ec9057faf6e c00c3caa-d649-4dad-8e5b-6f14dccc1683 e576580d-d73b-4f05-82fd-9fdfaa6ffaf7 9823345f-64b0-42fc-a315-f3646f6d4d36 c5ad85b6-7fd5-4a34-951b-68427a835b0c ab085c0f-6967-430b-8f42-8613258ae7a9 c2545968-bc51-4ef2-85dd-fea87e0a5a2a 50769fa1-1cde-4a20-a16b-cad707e8684e 853137ca-1e08-4693-ab53-fa2103b66949 093d5880-a5fd-48da-91ef-ed8f3dd9ef7d 4e0b701d-fb70-41f8-9bed-34b35e11797a ee828f1c-e029-4968-ba08-c20d843d3477 8580debe-4bf8-470f-b2d0-58f63f1c47bf 9c15bc35-7cca-411b-a6c5-9b583ea58dc4 f78de281-4dde-48cb-80c0-7573f59c472e 35c16403-ea09-4014-bc1b-e65456634106 95c1d533-1b8e-4560-9eab-6522ab29da63 4195a96d-df6c-4051-9eaf-78311c493fbf 11d252ce-6277-49bc-833d-83ded66bd46b c92df825-5a7b-4f3a-83dc-71b54fd65618 1d662276-9339-4e78-946f-0d5ac2ff1514 1365f1e1-ecfd-4692-b63f-9fce28cd564f b9422360-28f0-43a1-9ed8-14e5bbf96861 f7d6339d-f0c9-4671-a602-9d6b75e68238 90dc7538-f0b7-4275-9c06-987abfef6b5f a1ff2b0d-2978-4cf4-b5bc-1994be9e9b3a b94e2d1d-e3e0-4bc6-abd7-beeadb6f6e04 ab98722d-93af-42ec-860a-097946e64adb c0b6a74e-a29d-4f3e-a8fe-4ba20c9dd5ca ead4f392-c82c-4eaa-b5b6-0e09483ed45e a86990c1-0bd5-43b3-995c-91c861b018be a6b481df-0872-4059-933f-09e6e1b309fd b30eca6d-a24b-4e6d-9e8c-4e2c5c2eb6d5 d7e0ebd4-3f7c-434d-8122-f685c5af86c3 b8148bba-6560-4a5a-957d-4b3633083625 fec36c0c-ccf9-4729-b02c-002d6a33618c db954846-275b-4fc5-b507-bccb5d76a00f e9342df2-1a64-432b-82b5-e58221966bb4 2868c1b3-a799-4c82-af9a-07b2d5305129 6bde1b73-6537-4aaa-8ecb-ea4c9af33783 d963d9e0-32e9-440b-9678-bb3d977c0aa8 2a623733-c6f2-48cd-9995-0bae7a768357 a92c5736-be19-45d5-a089-bdfc9fbca5b9 1a80ba5e-333f-4001-90a3-bfd7e971b695 43f3f1dc-ab18-45ae-b7f2-63a3f9380327 36a5c613-34c3-4413-85cf-d4e150671d81 5031dc1e-61cf-4ddb-a711-2d633d18b8db 94fa82ad-5b8e-4c44-9b9d-78c3809374e7 8c686238-22be-45d1-9428-1e3f8a17ef0d 2c2679ee-363d-448e-896a-3423855cc54d 651e1ea6-bdee-422f-9e26-dcc2a0200898 8795e9cb-2e5a-4406-ae84-af90b641301f 29bec348-0fd1-41ce-b52f-f7e9a1574066 c90a989e-d267-48b9-813c-e60935943708 94a1d487-bd2b-46ac-a0a9-bed0da74aa02 61bb1731-7f2f-4ef1-a1f4-236611f8176f 849591c8-7aa2-4841-be1a-376c0b7bec6b b6732a6f-647d-4b92-8dd7-2cb28c4ab627 9838b655-01b0-4091-9834-61d6710df08d 8ac3af4d-11e4-4edb-9d1a-a0bbd0b3e5df af19a2eb-4b64-4837-a8a4-e598e03a8342 5b2fcfa1-4a24-4d32-beb5-6001d4dd8d35 e6efd15a-5de8-4faa-a450-904af3927ff6 9c3ecc7e-9f61-4434-92dd-8fdb13e084ab c14c9a04-73cd-4120-a41f-2c7f359924db 371fce67-304c-4cef-8d2e-da1cb5b1b9c4 6d10a617-b48f-43d2-90b6-68f3a5ac3076 725b1318-7ed5-4e25-aadf-1c293f64e22d 59036a5d-520e-4518-938b-9084f9dd8b2c abb4e898-9715-4fe5-8575-e39406d0cbe8 a359efa6-24ba-41e8-a2a2-77f4f96e5c0e 8d35c6a4-e3f0-40d8-8a98-77da95a35e2b 711bb0cd-ad53-4a6c-93f7-6bdf8e89ab96 1e5b0d89-b5c3-4709-bf25-d72b6c9f2903 27be87bc-91a0-46f9-bad7-97dded67968b 43a8525f-7ae7-48dc-b966-ca94ca2e956a 6e813fbc-d430-4065-a09f-b6e9b2203781 be2ee741-4f13-4156-89a7-139f462c52b0 420d5da6-a22d-4b15-b47d-ba85371afe87 9b720c56-4381-4466-9928-4fd73cd7986d 585917d4-12ff-4ccd-839d-e9b437318844 34ba8317-11b5-4240-9a08-53a13f33f0ab f98687db-5172-4654-aa22-908333de3884 65711702-ef2e-4399-8ce6-e77e92e1cda7 d4c8ca40-0ff5-4278-9771-06b3876d011e a082ed70-56e4-48f8-adfb-39b06dc2a83d 36853152-51e4-492f-96e6-2730621f9cd6 eddd5aab-d6f4-46ed-afb8-25a1c18ac80a 52799433-c939-42b2-8632-cbc2fb03e054 af500b52-f720-49f3-adba-f9ffb5aa388a f55e0d52-3fa1-4eba-ae88-2b573cb459f7 6bf9c35f-5bd4-4a13-8230-babd704c76b5 fcfed6d6-ee1e-4fdb-8464-2d131e9f8c5c 191744ef-0154-44e0-9d58-1d43cbf4d6aa f7664938-18f2-4dbb-b2d4-b37021c3a71c 06c495af-7077-4df3-a17b-0aebb9ac5a85 6b8d87f2-e898-4f4a-8f62-15aa02cb6c40 d0f1a4d7-6c41-4597-827c-bb4631daec2a db869f8c-e5f1-462b-9edd-52c5c43f9802 c9e73d06-b890-43f2-950f-262e8ac920cd c42363be-d47a-432e-9cda-4317bc74feac c6f4825f-6f61-4f09-8748-a2f200986fd5 55da3f03-43b0-4969-a285-d0e798030ddf 0331adf5-ec39-4e4c-8b32-5d4367ab0455 9ba02776-e460-4b66-a397-7cad2f43ed6a 5f794a3b-6270-4921-aa22-f97cc03929b9 92f27bda-bc1b-49e9-98bf-710b0f536dce 548b1b77-7ba4-461c-a87c-eda09cffcd10 7c366a61-7582-49ac-ad1d-3a71ccbb6faf eb51121b-3241-435d-ae6d-751d75f5331b f75766b3-ead8-4b9c-a930-c6d4a9a9ce6b 10641ab2-c0ec-43fe-b012-ebe11df092a0 22d59a15-9cb4-46ff-98a7-521c3c0eea52 b2c91102-eaf8-43f4-a651-85220a8a0cd0 91d80e61-0e72-4c83-a48d-aa55caf75b89 33136d14-ac99-4941-b5e3-6b7ff18d3170 7da6acef-0f2f-4a8e-9056-97a90cdb1fcc a9780653-0d40-4da6-aae5-64fbcd39e3d9 e1c0151e-56f6-4af1-a151-3c1426c71d85 ed1fc58a-feb8-4551-8cc0-5eb986dc9cf0 82ba6303-f692-4b33-8d2d-8f0d57b7b2fc 2b3dabf7-9b7d-4368-a002-c366d7e55161 adfc970e-a9b8-46d8-97d6-362c5a0d184a 69783594-e70b-4cbc-819e-b6de214a81a2 cc10d0b8-52dd-4fdc-adf8-22a5a0774bba fcf6c6e5-7def-4bc1-815f-27549d7c226a 2d13bba0-f7d2-4ea8-b918-7d3716555e63 4328fa06-62ff-4b5b-b4fa-4c26b8b40b2d 28eee5e9-3f95-44c7-ac6b-ea5f4cb83f61 7be50a44-a784-4052-b64a-937fa1555ea3 36468233-0a04-4d61-854c-0ca870368e53 76fc20e1-f796-419b-9a83-647ac259cbdd 5fdb9cf6-4c6c-4acc-9301-564449707112 88dc19f9-62ca-40eb-8bda-c3eb02e50c3c 34792d6c-dc68-4b2e-a461-ac7887f5f47e 65028577-f20d-4a27-8c19-b8b20db664f6 57a4fbc7-5c9d-4a5a-83cd-54a0031ce67b a9c3289d-aea8-4f6a-8f13-20cd511571cb 3356f878-1c58-4bfe-8778-96309d68d16d 64e70320-121c-4582-a05f-16fcac65bb57 f0ad8930-dd92-450c-b7b1-8cccaab11fda 264f4073-c411-419f-8535-d45d439ae8c8 11bd57c6-d319-4db8-879a-ebdbd611bd9e b8cc4bfb-758c-4064-869f-b338863c8453 65445c33-e5e1-4bec-99de-685371565e70 25b0d91d-09d2-4c03-b6b9-8e5b132e8e8d b6ade7a7-feea-4134-8900-14e0e1e0d355 56d9a1d3-e295-445f-b67b-64169ff9dd19 1c8fc6a0-0365-47d7-9ed2-e377935b0186 5e86bf24-0889-49e4-b626-93e51d8671db 0d20081c-8c9a-4dc4-9969-bd21792cfc81 7c516397-9fbd-4fe4-aae6-015f45b9435e d296348b-d738-427b-9e0a-75ce97c5ee4a e29ba3a9-fd7d-4ecb-a743-3de6b42dbd55 25c1bd11-baed-4b5e-b6ff-5fd88f7603b4 c2493c67-6f0e-4dbe-b5c7-59e754d881bd 6f469a15-95ab-4026-b4e4-14143b86d466 ef090b7a-2ca7-4a64-b2ce-9959c6a7df82 ac118603-2760-4103-852d-f57e4c3fc38c fd9ae760-778c-4aa5-806c-ecf1cead9f4a f285aae9-687b-4a02-a5a0-7b588f92bc75 6c6e9e4c-7fd8-4623-b30f-e8eab9f67760 93dda4d2-336e-4dc3-8ddb-af2a49f21b73 9c6b305e-4c9d-4187-ba49-0728c25d85d5 9bf14d6d-7ee0-4d2a-add4-89c487cedb24 66444ae6-9686-436e-8b9a-30cfa1259634 b35ef38c-d894-4a04-818e-85583ea20a96 596dce1a-f955-4881-afab-50c4f6623861 bb59513b-f4dd-4db2-ab7f-3fb763cb8b95 bbee5b85-0eb8-4aa7-9cdc-ae1359912315 1241e5fc-a9ee-4e0b-9ce5-0c1ea7897d0d 0d06112f-a9f3-4439-8f8d-298ad223390c e5f29b55-889b-477c-b764-c6dcb2432bef 2688a421-2c04-4fa0-9b4a-6f2820c31ef5 06d8c01e-af5a-4c2b-8b43-eb999d63f23d 3c74faf2-3866-45d1-a048-93775c76570d fed10e4a-84df-4bb6-b81b-dbb44b1afb61 a2d8b279-78d8-4ff3-8097-6a691e60d2b7 6a23171b-4e69-4997-9f46-a33757430b84 ce67d3ca-830a-4e74-8122-2587611f6600 3dc6e7c9-47cc-4950-978f-baf3cd952f9d 16a7be3b-320f-4b69-b367-247f732661e8 4999babe-79b5-43f2-b8e7-ac5a1615377d 5ab7ece0-9808-4535-8753-258897ecc650 805cd969-2b2e-478f-a3a0-fafff5724364 382bfc68-0f81-4152-8c9c-fde129f2610c d812d6f7-963d-4646-b2d6-227e92313b9c a5e86aa2-03ca-4a99-884f-0dd939c64472 258f6a94-7a9f-471d-b8e3-01343673ceb3 0f2b9b93-bcb1-447d-8bce-a5c18ec0b77f e7a9a488-9fd3-4085-b263-a121c0d94db9 8bcabfd7-880a-447b-85db-3615e6003476 2d5eda00-0da3-4097-a10f-667bb0648c60 c1fb4e10-835d-46a5-a7b8-1ab94ec747fe 3f9ee309-a8f8-4896-8e88-5a5abb11025e 3204a55f-1762-4482-8fea-d2b0de746da0 7ee22fd0-d1be-4766-ae80-e04010c0fdef 7b2f06f6-3146-4d7d-9e30-7c021454897f d5e2e7d1-9264-4f59-9b13-9cf3de1233a5 17f1bf36-6e8d-4dd5-be60-456dcc4458ed b86dd10f-667b-4d26-a6d5-a53e62a56599 dbc1bce8-9205-4807-b0e3-15c040d5547b 10c4f343-a20e-491c-ae6e-5c56e03551be d30ba79b-0182-46b9-aa07-cc0bf3ee9aa4 f830ffe0-5ebf-461d-ba83-64288aa4f3d2 984af6a1-94a1-4540-8d59-152efc084bd9 432893a6-2a9a-4c4b-96b8-f1ae91363dfd 37ecf694-0ec5-4845-95b7-b429907f6364 94a8bfad-f934-424d-980a-9f681f1bb632 b32b6abd-aaee-49a2-826c-4ac5d93a8f5f 6efc2bf2-82b2-4b93-8cba-8b1013afafbd a3d38d2a-a576-4850-a558-c59fc751f4dd d5fb40aa-10c6-4e34-b4ce-6c9072415a09 f61788ab-e594-4287-a8e1-03162874396e b945c03f-0597-4626-aeaa-0f725deb0e42 9a918df2-5cf4-46db-9a28-bddfc32bd758 c740f5ff-57ff-4f27-a62d-bfc381628ba1 561b44ca-784f-456e-afb9-24a0388a6f3c b2c6dd01-503d-4cd5-b1d5-f385b75295b4 afc6dc49-83ba-4599-b910-4772fedabc97 97847ba2-db91-4409-87ae-4386bf951d20 75607b05-855d-4813-be3e-3af363368d17 28596100-528d-419f-be8a-e3baa39c846b f1fa4f61-42ad-4e59-ae92-4554463fd807 c49dd631-5e22-4fe8-9601-ab6b059ecf40 996d9e76-ee7d-4a09-bbfd-37fb6d3901eb 699c143f-3011-4e2c-adce-f964fb6e0a7b 0d58add2-f4ae-4b7a-aad0-edc2f5461f1b d1d88e66-36db-4a11-976b-8293f92b588d 1e6e185c-ddc6-4ba1-9447-50fe66931551 62363eb1-ac25-4286-b204-61c2d68e8bd9 89404852-c3dc-4ccc-90da-4cfc90541e62 85c240e4-7a99-4c98-b687-01c99c1f7768 188916c5-44df-4dda-a49d-8795ca84ca86 56741565-5f20-4f4b-a883-97d2db672916 abd0183c-7949-495b-bbd4-14a41a673ac4 32caa254-e86e-4d51-abce-a52a76d3af31 38ff749b-2b68-4bd4-aacf-994007024d87 6324d0e0-86f5-4e30-96d3-1be02d3b3738 6b458879-285d-4b71-924c-0e851e7a49fa 1c3b37ed-3d49-4591-b5f2-dcfbd05cb1a3 09483499-e673-4f4c-ad1c-39ff7356e197 b814c465-30eb-49ef-af2f-14b35d280ad0 a90dca5a-00bf-4b10-9605-e529f19eebfc 728a8c44-b146-415e-8a52-1e26b9ca0e5d 0fdb3c52-cb5a-4987-87e9-b8e7e5411409 72d33d13-65c8-4d65-a926-8f89683a98d1 12a4918a-50a9-436f-92fe-5dd9bae8b508 193d107e-77e5-45e1-98cd-a972bc9e8e55 f2ae29ac-de0f-4e47-8328-3c8d94d11ae9 77203d6f-d02c-46b5-afd8-73dd5299e494 a992ba26-6b71-4756-ba7d-d91abee3f9b6 7c18790e-8517-4e74-a3ca-d9fad5818445 beb93440-2862-4f6b-99be-67f5e9a4ed11 1f262946-a5f6-48d5-897a-2febf08fe5e2 157891ac-9f97-49dc-9927-ddac15ce5407 4e6c67c8-85a9-4252-bfef-b177d2ecf127 264e4058-a07f-4a38-8c89-2a8310454196 0990cdd5-7f30-4a82-8cec-c03683aa3c8f 780bc1d6-31a9-42ae-8873-486820224a2c 83da9425-da67-4424-bdca-bdd191f1e91b 2fc02a99-7c24-493a-acc0-3294888b08ea 9523a49a-ece5-494c-9c61-d9b0933b500a 744420eb-b8d1-4fb2-b34f-1fd797671426 047545fd-e817-42d1-b57c-7cc3d813d448 f0915dd9-bb19-46e1-848a-ba523f288a4a 033da3e6-d1a3-4730-aa4d-70ff8c83bcd5 946aaedf-ce55-4a37-adf8-4fe2b05cf77f bcbfbd48-16dd-4224-be2e-d3c5c8498045 0c03fe0f-6b11-4693-9b99-9d7b0207ad75 bf92c48e-301d-40c1-9b0e-324017679cc9 0d3fbd46-3da0-4ba9-9fc8-a3129eb083a8 c9bda2ab-f529-44c5-bd56-a8d7cba2afd7 cfd76d26-c476-450a-a41c-13007d8c5ff1 4de47361-2ee5-46dc-b14a-69ca3e2c3537 c254e965-ce4b-40f1-ac96-352291ac8713 715c324a-a47c-419a-83b4-cc5457f8dea3 d7c62caf-2dc6-4282-970b-68cce9902873 1602f6b6-7865-4d92-abb4-80541ce776f4 c078f0f8-0c6c-4ea8-a2d0-92ca082dad9d db014d7c-a052-466a-9fba-b1533d1df48b 27583104-153f-4921-b856-200e96fac77f e90ed539-d737-49a2-84ec-e1ba139fd787 b77ba07f-8780-4f1b-b93c-51be5ff5f91f 8526fc58-a6a4-4541-bcad-6d0bbac4055d b1b26be4-246a-410f-adaf-00d79547f9fc b676f873-aad7-46a3-99b4-21f6f59401f0 e3d569b4-e4b2-40da-a5fa-21ee8ebc033a 5440f4e6-afa3-4dd0-b0fb-657de360dbe1 82f0c582-571c-4099-b4fb-851a1d838873 48bcbee0-dc4f-4849-8d0b-b376d9b68fcb 54ab7c9a-e73b-4a7b-b874-73af4b0df282 10627eed-522d-445e-a9f2-5cd9da6309c8 a4a926b1-84a1-4ef8-9186-91fa57373e8b c366f592-1a66-4648-b8a6-8f0952f351a6 23ebd426-3166-4e03-ae6a-9d4e67a30609 1d7fe416-4e0f-43ff-a42b-6d603c7397fd 549b2ea6-03c4-4bf4-ab05-1ae8047d5371 7d681a5a-387c-45e9-8176-9fd395cae1bb 7546ecde-a2c9-427b-a2cc-e3fe4ac34838 9e16b9c2-1135-4d58-80f4-ec3893357f4d 21ad0d91-d55b-4a25-99e8-39c061b014cd 5e0fd237-0cb4-4989-8875-70b283edf4f0 a8d2fd61-9949-4069-b1ac-86e526eb346c 88fee701-9e8f-483f-b9f8-b19edc6d94a4 66be2db1-f810-4d51-afe3-9b7f96db3752 4a2758d9-e542-48ec-98c7-212041558ea7 25e75237-c37a-436f-b4d5-4f52af78ebf3 35234170-823f-4a0a-b15d-c2ca6d5c5272 b654c798-b929-45c7-bcb9-59d548e32691 9b18d3f8-81d7-4445-b1f1-0e8042d0203b d1d92c09-fcc1-4c23-aa55-4ee2aa4ab5f4 47b44d7a-ca7c-4f2b-8732-9fe032c89524 5a40351a-0d8f-44df-abf4-69f43775625d ed999ffc-09f0-4df8-b025-eadaa830c608 50ebda42-e488-430f-8f55-84d0be68ba32 885fe4d1-161e-47c0-8701-b5eeda58cba3 a5db5eda-2169-45c4-bdf9-1129d7f594f3 b24ae4c3-12a1-469f-8ac5-d86a760d113a 1f037e6a-357a-4eda-9c8c-850878c9ae24 75c6fb23-f905-436f-9ea6-d18c843d6912 9aec77da-801c-49e2-bdc6-fd295121e854 52cc4eee-06f4-444d-9bb2-7d8110c61dd1 35038b53-1308-4449-b2f2-452d77564bf0 09a93182-eb3e-4fb3-8cb9-a30708391e31 e98e1c89-2ca4-4bda-955e-a60c4c163f48 376a38ee-b29f-4ffa-ac2d-f6c0e62dc646 7022ac2a-1f7f-46e8-9bd8-da58d54af56c 87051a6c-99e1-4f8b-b65f-5e02529a5a0b 14643db1-47b1-4b3a-9f84-277dbcaa33a4 77a20d13-943e-4700-acf6-f306f2cb5cf1 3d7527aa-f5a0-494d-97b1-b28a99e45b61 17e2a2db-a665-4907-9e5e-c11a04a3d039 ff62bcf7-c0c0-462a-947a-83cc7643c3a4 a8322196-f423-4bd3-ad5f-47176dff2af9 13aa5852-68ad-40a4-a4fa-66378ece1adf 2d54dfb1-fd17-4b9d-98c7-23fc9ad6fa20 4279f3da-8081-44c7-9f8c-fb25784df050 a9e3c8e4-00d1-4542-8240-c499868c4141 6319cf02-c1f8-4036-a255-2ddc54c33d02 082953a4-efab-4370-83ec-68a20246773d 2cc4f180-5f40-4f6a-94a3-332e3c882300 77e0abe5-b729-4a4e-acce-040c9d969cfe 5bf42d2d-26a7-48df-a778-7a2af72c3e83 ca76b95b-76b9-467f-bb85-74a3065280f4 5221f2be-3802-4fc9-a023-5bb78c170550 32da3669-c044-498d-844a-d665d4a9f0ba b976588a-32dd-4a60-9a84-429068ce89b3 f48955c5-f4d1-46fa-aa1c-824cee2e5ccc 8fc368f4-3aaf-46ef-b924-9f13cf1abdd8 07580e4f-7572-4929-9d9c-0205ddddfae4 d9d75494-0fca-40aa-adc0-aaf743988d92 f89b889a-02e0-4a13-9305-130230d9f4fd bb82a03e-7c1a-4390-9ea9-3ac80beb2633 59f2a5d4-9020-4924-ad3e-da4f79afc424 34ffb5a4-de6b-4797-aa0a-733c8079b9a0 bcd10207-a5ae-47f6-8683-2481e40ad1bc 8a1a147f-7a46-4a4d-9d84-a0c3ccfb3693 236afd20-d381-43d5-9e3c-25d3b4bfb682 8cd11273-e730-4b37-992c-902c7a8ff6ed 00fc8616-60cb-43a7-a865-c98d6925f9c3 c327d33a-d89a-45b2-b6bd-9bcd69c663bf 9d7d6806-36ce-4ab4-ad05-1f08135f87de 5e444e3d-5b89-413a-915e-2551d88ea9a8 ef57c57f-4396-4404-a277-5a2de0e28e71 07052e25-3e47-453a-824e-551f04d4e64a b0d874b9-4c9d-48d6-97b5-f28836637c4d 04bbd288-0324-4c9c-bcf6-9343ec41e5de c3a20f5a-8f53-43bf-9296-c61be0ee800c 5e337981-36a4-4927-823e-57f3bf8a7997 395082a1-9f94-4f25-9053-7c99a8c50340 76bb0a11-6133-4942-affb-f42f61ef51b6 84f942e5-443a-4c51-81a8-48d5bffa829a 2576c779-acb2-4cfa-9b2f-9d72be32b3dd 1882f853-bbf0-4207-a6c0-9426f26da4dc cded1956-2816-4409-89cf-18ba58d032b5 bbfb3e98-2178-420e-97dc-f92f86f537cf 94a6071d-e731-4846-a7d4-c74dff0db5ba 8e049411-08fb-4844-9385-1f1a9419e2b2 74441d3e-df4c-4a47-8d96-be085c52b6c6 1ffd79d7-c70c-4fca-b607-ed0af93c0254 1e0f7277-5a6a-4a15-902b-061f425e4ac0 6eee0314-66ec-453d-b561-05bc29ed918c 3241f968-6221-4c18-b5b2-815f8fc04ae7 ce14baa1-0d16-4c3a-8e56-a0193e3c8b94 a08b5d55-787a-4720-b949-98fe14c8e13e e7e81f10-546d-4aef-b3d8-6d72e3acac1d 77cb5057-2b32-4f76-88f8-db29f0cb9e63 62e031a8-0d72-4e67-82e4-4df435daa0ee 9830e67b-b76e-42c9-b6e7-471eecf74891 1ca3a904-0be5-4474-84e4-9d09ad7ce10b 4a60f366-c5fa-462e-952b-365684ef4025 5377d9e2-03a9-4c50-9420-48ad4b893c48 d1370f31-ab6b-4058-95a8-984e2fed96c3 8b1dd0ae-dd9b-44f3-9eec-3ae3768bdc72 896e0293-f537-4a79-8db2-48374684ce94 d5fc5ab5-57e0-40f0-9437-9515d7a5d9cb 17b2ef02-f244-41a8-a3c6-fbf95f7685fa 53d43a4b-7e00-4212-847b-fd3748fd5d0c a6ff54b7-f48d-4136-9162-f7f0eb8702e9 0067f33e-beb6-4101-a64d-c68c0d7090e4 cb27e32e-bec2-4f08-91a3-beffda268dfd 50f52f4e-a361-41b8-85a5-7b5e82dfc4be b07d274c-6e30-419f-b89a-402b69c373e2 4c922902-d157-4b4a-a636-52ccc448dab8 5f812a28-ba7f-4040-92fa-f9cad244c888 71351f3c-d056-49f8-b869-36686a9a46d1 ea56bb0d-2111-4c8b-a63a-af2a07ad1b1f 1c68b36f-9ffd-419d-a7f6-f2c0f60fc1e9 0d9836d6-6f27-4e66-bd24-f050510adff2 ab309506-72a8-454c-bb9a-070df2a2616c 9c0c1bce-c82b-46c1-a44a-e41fb805cda5 18091bee-b7c0-4193-842b-27b5630ae525 27aaa91f-84b2-48c6-b56d-2345fc0b1183 181aa00c-7d16-4047-ab93-bce88ed8db40 c320b7e5-7cec-4e66-b42b-1fa8ef6a5f05 93445ebd-40e3-46af-ac49-4e296939fdb0 028a029a-be51-4208-a5c2-e803f9ecf648 5c747495-9c33-41d5-8d2e-5b9c4676e4fe 5f301e6b-e8fd-4830-b5d7-c9e204955f4b defa4b0a-8a97-4a0e-8025-374c6ce7069f 4868e58f-d5f5-4554-95b2-37fdc501d196 801313e0-ac2d-451a-bfdc-f138c892e735 25ed23ef-6dca-4980-a9da-c4e4874053cc 2671d04c-93b3-4578-b755-a95f715c43f5 cbeed8e7-7ac6-4f01-adf8-a830ae841cb1 8a03d1c1-485c-478a-987e-50b299fa0335 7ebb4285-0bfc-4535-8865-7bd268415093 9f4c2c8f-1885-431a-8822-7271e951e7d0 912af5d8-edfe-4df6-b574-f070b17196c9 e8e44426-8517-4ea2-acd3-d368c0332408 58bd1f13-5e18-4362-b019-f935499c8877 83a0ede8-0846-4bc2-b15a-2f63230a3cda b3ab444b-48e9-45ac-93f9-9afd33080546 c1174f55-f4e9-48e0-9cd9-ac4f158e6c09 8caa6529-101b-4063-a390-84e9cb22f135 7add808c-557c-4b56-9c99-b661fac567a0 add265f3-fcbd-43a9-b7bc-1409ba36ba09 39277992-9862-48f5-8478-ce2a23c57d19 c890cc8f-1f75-4423-ae0b-9d7ca038f581 52d4155d-8896-4dd9-8d00-251179e736c9 c066d5e7-6b32-4b43-bc09-8b65369ea9f6 94d4cd58-10ea-44e3-b981-dd50c202ee16 1b15f6eb-afb9-46e0-8d58-27b27034f76e 3c95e6ee-d816-410e-8a19-ed14bb312748 c57071a6-6707-4de6-aff5-488d6f019f18 ba727efc-1b73-49fc-84cd-1cc3d4c1df22 971062e0-6a52-4456-8b76-3483dd9646aa 9c95c9ce-d8b7-42fa-9674-79577ea91032 ddadac4e-0aef-48a8-b16e-0d4c175d14b8 c5ab3674-623a-41f1-883d-2a28008a32e2 c3cd9474-e519-44c7-a297-8fa99563d861 8752cd3f-b094-4c83-8864-c6ab5e3180b1 b5b4a5ee-f6b5-4c4f-8110-efd9efa480c0 3bc3d53e-a818-4e9c-8f0a-40852795caeb 5cc81088-9d3e-4461-8878-3ce43b1a52b9 f6fb56ce-3f3c-4109-ace3-020611031c13 e01458f2-f9e5-4e39-8465-71d544634bd4 558879f9-23ad-4740-bb13-c70eda8c692f 086c8eb6-0d78-496d-83d0-d2b243e6d929 6fa9b894-0dd0-45cf-97d5-f276278015e0 2ed50216-02af-47cd-8c7b-9afd64e238a4 1b7547a2-5c56-4825-b0d0-804316c2bc56 64e6f236-b600-4292-8936-ddd9449e3113 8959d3e2-8d12-4889-b4a8-5350bc2dcf1c 438b9055-1202-4350-8724-f50c14157ed1 f0ef0f38-3b4f-47b7-abe8-20d9a2281013 ef06875d-688e-465f-9451-4fb286d786f7 ae58d10b-7fa2-4f2f-8298-7dd870ecf0f8 d261457e-b044-4d2c-9d79-2d525795c641 ad632dd8-d957-414a-92f9-4554b669f366 e1c94536-2d77-474a-b395-ba0a5f41388c d01598c9-61dc-44a8-add9-626808a7df65 5ab0272e-7cb0-44f1-b6c0-a584715f3e3f bc2285f7-1b68-4971-ac6d-549c124b93cc cc2fbfe0-6b1b-462d-8fb4-b92d4ec7c9f6 c9149cd6-0c7d-489d-a52e-c62aed66db37 fc5ca787-7096-4d72-b37c-85f375be43e9 09d7ff0d-cc2f-4ae4-8447-3b5e37f03e49 43d441a8-bf4c-49a0-aa64-175d0b96b093 be1d17e7-505a-4d04-8416-986fc9d76adc 052f8255-d4b6-4033-b0f1-f5bcb7695303 b962a47a-dd55-4e95-93a2-5528141b0e0c e92049f9-913b-43f0-9d57-79c023ef4d6d fe7cbd53-8ff4-4281-92a4-0d385479852d 7a3a6a38-a23f-44b0-8c8f-97f59833b1f8 901762bd-2b32-4e22-9adf-5d9a96e0dc4a b29c8bad-392c-45cc-b843-3a4080f90d3a a7799ec1-2124-4479-96ee-202c87139378 ea55ff19-4f30-41b9-b687-71cbc39aee1f 121b6942-a82a-4e1f-bd9c-6a110d62f2b1 2606b299-c181-4a51-a554-aed4f63278ea a5601787-db9d-4154-ae59-95534a755654 59dbac73-b775-4f07-b6b7-8d482993fa53 43e09884-ee59-4b9f-94bf-a2be9cae6f83 d161764a-2f44-4c1b-b8a5-6fc00a49fabd f6625048-21ae-4e08-9191-8060708ea327 a3462004-35ed-40a3-95df-16efa88d84b2 7acfd446-4a2e-4f29-b7ed-078165896ad0 11ba3ab8-2385-4ed8-8e70-f8ff1b2b5c7d 82e1a792-6464-4c29-b155-6353f13187a7 85744bef-58de-4dda-b485-b6f6b81d8bc6 e6a4c954-666f-4710-adad-a4da8e405a2e e005d388-353e-45c8-ac68-af3594a40a42 a8ef48ed-799a-4af8-a80e-91f258c38074 3243c8d7-c18a-4c34-8dd3-404797d185e6 a1f2b111-6445-4d38-8885-ed0c41b79cfc 0f5e286d-3771-43d4-b83b-13bf1b7bcf45 ced61af1-ada9-4ae2-bfad-677fa610fe02 e29d2047-0ad0-430a-8ffc-e9a4ae47ae07 51b14fd9-2457-4b5d-a662-a99130204e72 16f32c39-0531-48f1-8d9a-07c6806acc57 21982cb5-9f8c-4bc6-9c6a-c255028ba15e 374ea004-7bfe-41a7-a838-9133a55a39be 141dda91-d398-4d53-8bd0-949cdcf4577a 691a5481-2c53-434f-9d96-0d80eab029c4 52c6b4c0-2a46-4fc1-946c-39ba02f98db3 1052e0d2-5e03-4677-a168-ccc8a89bb42f c8547254-e61f-4f8c-a6d2-18635978620c f0f00f51-1bde-44f6-bb90-803b9f0e1f9e 3fd76300-3923-4894-a04f-5499c11e955f ae5d5620-1a88-4f3f-866a-62d852aa795a 1e27e3b7-6760-48e3-b8f4-6b69b5417c30 499e34cc-0379-4f60-accd-935f82ce7cb7 9ffb68fa-d491-4bae-9ac0-98014925a656 dbb373bb-3d62-4d1f-995d-6f1e2eb95a24 30ea0350-c06b-4208-a1e5-bec61c90d4fd 10e17721-d0e2-4d4b-8d44-5ef2672b1293 b8112d45-d1a0-4d98-ab3f-98e4697ae2fe c5356d12-cf73-47c7-ad26-0a4481bde510 3ee83f03-d8c4-48ae-949c-397c22f10d13 29ffec04-fc12-438a-aed0-80f335ce86f2 aa2be4c1-29d1-4d16-a569-1f392343be79 734d2872-32db-48cd-92ef-492f664a640c 7e92fd33-c906-454c-bd0d-607023f14e9d 57db007d-22fa-4575-8659-36083520aae4 b591b8ad-6301-4b6f-a3ff-bc424da7cc51 05467dca-8511-48f0-8a14-ea0491df82e0 57225a43-40f7-4922-9aa4-5a53b2d1dec9 aeb19921-eb25-4925-85db-d0f7d83fa2d3 a9e134cc-6b3c-4f2e-a9f4-0fc089e63c6e 6daa9dd7-b75e-4b79-a65b-a677c0ab5a7b c6396725-2995-4b67-81f5-4ea7f3071669 605ccfd3-af2b-4ed8-af52-4bd0c10a2ced 2c536ed5-a4e9-476c-a21f-0282a8892882 cc3b79df-731b-430e-b764-17387d971f71 704015b8-7ff8-4fab-9310-200729142d15 56d0bb2c-bf2d-4c99-b919-99d08ab134a6 cc2c2558-ec43-437d-81ab-cfaca0c56c12 5f10993f-cb9a-4af5-8570-56f223e43865 c49ae726-21b3-4715-bb8d-f865754c5e85 8ec35bf1-f1ad-48a9-990f-f037f2efdd8e f29d7225-2690-4aab-afcf-746181971aed 92c2ecf1-2b6d-40d7-95cc-e6265c1df084 1ed86756-ebd8-4355-a673-be75e07d1bf5 b4a36590-6673-42b3-bebd-9d728fd20fe8 77123b04-b2b6-4b68-b12d-5a6f6aaa7af6 966c9253-60c7-4f45-b5ad-122e6b9c342f 09f29862-f249-4d51-949d-3bb20fee39e4 19dacc6e-fc40-4e56-bdb8-909e4cd01fc9 6cf686dd-912c-4c10-aa88-e24a0c54d6a0 c626792b-cc1c-466a-a373-164486ddc058 72d01657-693b-4404-9dab-65a644878689 fac1ee3c-0a0b-4b6a-bb0c-d55c0bb4e211 aca51f2e-9c59-4ea4-95ae-b670d5d360e5 26139a03-0968-408d-8a6b-3ba5029ba5a4 3aaa1cb4-a30b-4a4b-9f7c-a79b11b4e96f d640d313-30c3-4165-8a1d-30626403ea75 e83f05c8-997a-42ef-a9f3-14b7276c6d7a 53893baa-acb7-4c69-9809-a87cc9911730 ff7d9390-59f8-4d38-bfc5-0aac1de575d3 7a78e72c-922d-4544-8c06-49d851514b68 90bf53a6-ac37-41e4-bee4-d0d3a021a1b0 7a4562d0-b20f-4421-a565-9424f01e2b3a f2e5ea09-af8a-4e85-ba0c-7495e95d8115 6ef6147c-e4f0-407f-a06f-833749133b86 44d94fc9-910f-4888-8744-7879e6d7ed47 092643f4-c8d9-4f9c-9705-f3240da7b8b6 3edde1d6-f02f-4ce0-887e-ad0aa4d1f9ea fe951452-4272-47be-a6e8-edf59effe47a 740c24ec-cbf6-4a4f-a22d-fad1003a2915 78eb2fdb-7ddb-4ece-8e89-940c76b77ec8 c683c6de-d9f3-4a70-b1a5-a043c073dc6c ddfe817e-1b3e-4fa9-891b-85bf5bec7d0f 55dcb8a5-584f-44b5-9f84-31315431f1d9 ddb6358f-160c-4ca4-8c40-ffc8bf37e727 1172f0c6-43f7-4e37-84b5-165e4718ce54 cc8dcf09-157e-4244-93b6-171f1d5fd6fb a52e4868-355b-4a07-9a53-b49acf339340 031be833-79cc-4fa2-aa61-1185263821e4 8a1c5d81-c72a-4eae-adec-886caca52fd3 3d524128-4b71-4f62-93fb-be67eba082c9 900a9219-cd04-4057-889e-92a1c07f5269 55c26c25-c764-4b47-8a31-a8ed856300e5 13676640-7899-4cbc-bdfa-a696b8e7a2dc 79b2fc7b-f376-4454-bfb2-21d8ede0fc1c e782ca01-5e25-4b09-8e5f-081cecf9890b 3ba378bd-ff5e-4049-b84b-58fafe428286 33dfeae9-9bbb-4a95-9e8d-baff44e74cfa b2e6c094-b62b-464f-b772-3e83a1404934 142722f9-4ce8-4a35-93c4-cebfb888c221 33b7dfa4-f82a-4c73-9d65-736ac295a7b2 21ecf689-6eaf-4255-b34c-02500da70d52 cb6df347-98ec-4fe9-a816-115e2540b676 ea4a4080-a1af-4874-b6d2-0d7c71ebf737 32ff18d9-72bd-42a0-bdad-6cde4a78ef4a 2b9162e4-e08c-4692-a212-43f11ad5463e 6a89d9c4-68ae-486d-86e0-b79aefdde92c b8f3796b-61ea-4acc-89cf-430cb691fa34 1ee9d065-c9df-4afc-9ec4-5cfae83f9045 1831d1ae-65a2-4a8e-a392-4102b4d2fe5b 1d86e41c-8b49-4e28-95b8-49bb6f21f509 75b0b99b-aa7d-4b26-98f0-0b08e44e3402 1371b158-8d21-4fe1-86aa-32f0b717901d 616aa7d3-660b-4128-a34d-3910c2db2bd3 4c84670e-4484-4bd7-acf8-e5c33778ac1d 2f952249-7b67-4421-8452-2587ef651f4b b6780657-bf74-4043-b0f4-272ea0c0ed4b 32952598-3b00-4b21-893a-d1712d8f9299 d5a1463c-d013-40fa-82f6-60e7c0d9986f a3c066ac-33eb-41c7-bee2-9ce509e34886 462f5517-21b4-4820-886f-670546e0ac74 276f031d-d0f0-4c13-8c76-1128d0b63974 1686ef2b-2167-43d8-a119-b562cfa585c4 9b1fcbca-c57c-40d7-95b0-564a8fdb766d f2f99a5b-1857-4cb4-a618-2420e55e64a4 8b8f9e2f-f48a-40ec-a538-44a9c86f7c86 16ff900f-9b58-41f9-ae5d-eb9801038905 27062913-9e52-4475-8572-9534b6df5842 eec4e290-cee7-4e8e-bc26-a18ac7ef146f c2503e94-6281-4f97-90d6-20aef07e8765 d121a799-c991-47da-8d44-89b5b3eac002 25ea9a3a-dd17-4ca0-9aab-ab8f845708cb 4ab2a43f-f038-4bf8-aec2-a5fd97686cdf 66f0b8dd-28b1-40a6-a68a-3fb5faa61f5d ffff0782-42ae-45e1-bd59-9da394b11d08 ace243c8-9d19-42f1-962a-286485f4170a b8ae8e84-a463-47c4-b1ae-369201e9e098 6d2aef1c-90cc-43fa-8cf4-3a97d7ee0e51 d4e2f8f7-f165-4a66-8e1f-1300a343b5f3 6ef8f556-1bf9-4120-8477-670d21baa11d 45f960d0-6374-41ac-b371-49994dd712cb b9163ab0-61e7-4c2b-b850-76ff644132a9 1389a745-cc6e-4032-be9b-30b29c518417 2d4346fa-f96b-4244-8028-07df6a53b9b2 eb0e9511-520e-4428-8bf3-8dd5c34a7e29 0f7643de-a85f-469a-b8d7-d3800caa6a7f be25a59f-087a-428e-845e-d049089600b9 7fbec608-c830-4e68-9bd3-f43d54d6ee8e 04a49b74-e98a-4860-a806-caa4b0a4a01c 3c907f46-be82-4df7-a871-d3c214c3304e 123a6d3d-ce8e-4954-8d74-e9d5ceaaee3f 7f19475a-7084-4930-aa09-2ff6f999a31d 70ebb261-f6a7-4c62-ba3c-cad4c46cb76e 12533827-deee-4496-9c4e-ff9864ee4793 8d4785c1-043b-4e33-8825-8daa7fc042c1 6bfe1aab-bae2-41ec-b156-3304a1a622a8 830983fd-502b-40e7-8bf3-2602c0ba7b74 16b6a082-5149-46c8-a603-6ac920d595d0 fffb2774-e4aa-4756-ba57-a5d7070363da 212f9e0f-6469-4ff4-8d2e-6d716c270624 3be8659c-be22-4042-92ed-9c3587fd864e 0473502c-a3e4-4ce1-ba6f-b3da351fc6b4 63b9f355-4134-46ed-a6ae-232bfee7133e 3421e247-7de7-4953-8f6b-047ddd7564d3 78989981-4f96-44cb-976a-81649e6289a1 12373322-0a8f-4658-9776-87f37b838b35 2e8fb6d7-8531-43f5-84e1-cb9504e6970f 6b2f1421-d585-48ab-9ea0-ce71a668edd1 254e53bd-7dd8-4e2e-b447-8d94a8a615c0 a7fd6b94-c3af-439f-9b07-af7279a4f77b cea5a353-9b3b-46c9-b144-8ae371ca8acc 4a60c0f8-60fb-42b4-a4aa-c14dfd2fa6e1 e6763663-8e74-4e9a-a1cb-29e6ea5c2ca6 5399e81c-b0bb-4167-9efa-b4cab6cf6472 a489564c-e4cc-41dd-83c9-6a203abf1742 186acd54-8d27-43e8-b54e-8c1597cace77 9f5d06c4-915b-4309-aa24-42a9c3584991 e174671e-a3d8-4659-a2bb-e49ff92cbef3 0262656d-c61a-4595-bb78-311b963dde4d 045bc470-111e-45d3-9db6-568148c5f4d1 52f7859a-f76b-43e7-8df6-94864d794988 e03afafa-96d8-4a08-886c-db054857b787 7c2cfad7-530a-4c49-b9b1-a0b98e7403e6 9334e161-b232-4f06-b361-1f54b1b41129 3619f40a-ae3b-402f-b75a-b87e8ede24ad 04e1c0e1-ce24-4e69-ad5c-1230b922d59e 08e0e97e-523d-4d26-a970-308eac567713 2d575610-40d7-4abd-aab9-84158800a2c2 376c515d-a472-40f2-876c-088b32d99895 329d3a17-cc2f-4cd6-aaff-561b181e7512 e49fbb67-83ba-4628-8a33-1f0ab46d4a00 5ebc3a3b-5766-4a2f-aacc-3b98475e324a 00cabfd6-e5d9-4385-800d-b835d81fa26a 78a19ebc-3d20-468f-a3f2-93584ed4925f 8b0a3bc2-8718-4b32-ba0c-3467d3130923 25e50a1e-6c54-4741-8c04-55f4bcdcb6bd b0fc206f-76e5-4209-8afa-b1e49d07624a 3c4d5d06-270c-4e88-af8b-141509786748 6508c52a-bf27-4374-ab6d-4a749a79df54 50fe2d6a-1de5-4f5d-92ad-363b32c32a99 6ab83582-cca1-46cf-80d1-24643f2071f1 135975c5-5911-496f-8f80-42620d42792a f5c0eed8-539c-4eee-9562-2431dae51484 a9c94926-22f6-4e34-9d30-2607d4b05f0f f0eadbf6-bf51-4a59-bc61-1fa84802a5dc 54e2bae1-ef70-4aec-92b4-b283a27ffe59 781a644b-f799-4090-b6e0-7ded2a096f00 a2817732-bc95-46d5-b9aa-f3cb8903fd35 a258ece3-6936-4923-b349-5dd7713ebdcd 18642c7d-746e-480e-8fc5-3f09ef9bfbf9 c3e97126-22d1-4f03-9219-8ef63be2648d ca7f7e04-15d2-4f49-8a38-ec8f2ead725e 549f274c-b33e-4572-b657-0231aaf3dc2c b44ca086-98d0-4848-bc28-1dc63525e5fb 66267e01-75f3-4498-8dff-95bf82ee91c8 a9095141-6eea-4b62-bd24-c5c650f1bc26 f8fd3ab3-452d-41a2-87a1-4e289c1f5c5f aa98bd00-8161-49af-af7a-a6f12d8c14ec 63f56d1a-812e-4dc4-a19b-317640a564c2 20fc9354-094a-4a10-821e-2062a535bc0e 021f03af-d922-4cef-a83f-02bd8857fe02 0523f4c5-eb8c-4631-9bd0-a8b641afc92d f2e146e7-b051-403e-a1f8-d8b150db370b c5ed388c-1155-42de-95be-5fd736f833a7 c004a7a8-a375-4af1-bb6d-b5ecd40d81aa bf4430fb-8ead-4375-987c-110f40aa0223 18fa8014-ad68-4787-8bdf-cfde9436d3d2 d936dbba-3b10-42e2-8f4c-724d6d2088b5 23e45317-d444-4dba-94e9-4ecd8afc1a72 ff304e12-a7f5-4478-8638-b05b3b88240f c031549c-efd1-4eda-917c-5fa4d2dfb72a fc5694a1-4b71-4d3f-b304-00f9cb7ded97 d3a489b4-01b9-42e4-98a9-be7d8a8e6d59 3a2a66d0-4fb1-4c6f-8857-913017bb615c 3ac0f785-ff62-4bb2-a0c8-2259cd596635 3d55fbee-268d-434b-a5b4-de74b7e7cfca e9c7ab84-b700-4499-b79c-665853e7c14c 581181b8-8d10-45ba-92d5-2be4dee65790 6571dfe0-5834-4a9e-8801-5b93f986e191 02d67449-72b9-4eaf-a5c6-2b3a570e2a49 2d0c9f10-7c25-404d-8985-23bb017d2c6f e625a8a1-58e3-4011-9f64-3a5468ac83f2 0b325464-9aab-465a-82af-e9a59f154790 0d918902-c3dd-475f-867b-1c79421c2aaf eb5076ef-476e-403e-96b6-b7cb389be9b7 bbea68c8-e405-46dd-b520-c893548e91e6 7eb5dab5-6a13-497b-a20d-d61a1d58d356 8052e569-a7fb-4a5b-9a98-a2d2255f7a6e 55abb32e-920e-47b2-8097-31c1f13390f5 478206c7-2d0a-48c8-9ec4-c8027d7e1c84 db725219-df01-4015-a620-ad06bed64332 e418828f-757a-4906-b647-22432b1254f4 89971447-bf6b-4266-ac03-3cc09fc2c12a 9d3fc72f-d483-4e9f-a5d3-9d16ccaddc17 5e6d24e9-3658-4e2e-88a0-e45773449921 4bb290f6-4241-4e9c-adb3-1eb4bea71a56 3b419800-b50c-4985-8e92-ad6a4a6c2ceb e60f2c29-dfa8-4c2f-a714-a3baa0068ed0 11c1e4b1-6111-4e38-be77-f7f945e6e741 6fb273f4-0b50-4f01-8e35-bb52b918ef9d 463e0e0c-7a5e-48a3-8ef7-7708992c5ce0 9b89f54a-9d21-4afe-90e0-7fc5b39e5ba3 2c199206-1c40-4118-a6f3-dc06b3508781 43a6805d-fc46-44fc-91bf-61b63695c8b4 36956dea-cf4a-4e27-845c-29d25e1c891d 5a428220-8384-4f0c-8b21-99f5a0657679 e68435de-ee6b-490e-8aa9-990c26d3ca7a e74d14be-673e-4715-9f2f-8eccbf5bb9f0 fcfbcab8-696f-4569-8542-07c1355484c7 2025b345-5448-42c7-b03f-3c0661cd9c99 4b3d99d8-6b9f-4307-9489-e482a74a74f1 1c02d7bc-6ecb-44f7-a06d-0f6c2f2db41e 8bd2d476-165c-4766-834b-8ca32d32a4e2 eabc0eb0-436c-44c8-a83b-4f652b931654 9aa9a5ee-8475-411f-a527-417364a4c695 f52dd2ee-72c6-4bbd-8d21-63c7df9b49a4 f182c666-e21d-40ce-a008-ce119bf32e30 18dbf869-ed22-4863-82b1-183e99de3df0 e98f8e01-6fce-425d-a925-1c31b27ea9f8 c254ef6d-dfc5-4042-bdd1-8c560bdea917 a7826923-c254-45cc-bfff-8fd905124447 c52aa944-f2e6-45f8-8616-f4a64b2b6719 d2084923-927d-4d8b-97fd-154b657c4082 2c00c284-358b-4412-aab6-330bf6cfce4c 4ca0f1e3-220b-4e4a-a55f-29fd59b00aec d30fb332-fd22-47b6-920d-2c0a4bda584d 999f31cf-1ea5-4af1-9db5-4d4ddb97ff3d a33c75c4-eacc-43e2-bd2d-9cb20b1bf1e3 f0318dd9-64fa-447f-8b76-97db43a9a692 b4f3dd6a-e4d3-4b00-9e53-561cefd53892 533b5d36-06ca-4d1e-b052-f8d4d0c5d064 1fdaa4ae-2183-42fa-a885-dc6e661a21f9 a407c337-4865-488d-a1d7-58bbc71f1203 698eebcd-7936-48fa-8852-01d8528d6ba1 31e6b39b-4cae-4d94-8aa4-34f57d684508 4ff9b8d0-cada-4ab0-80f4-4ee54fbc8c3e 381c0df1-8af5-4acb-a439-ba47093034a7 3bee106f-16ff-4090-8553-b4a322dec43c eadd38de-08ee-4ed3-a221-c88f334e24f1 b4b4a7bc-05d6-4223-a91b-2f85c762a2bb 6200c793-8b9a-45a2-843e-1b755dca6078 9205bfb8-bf30-4f83-b62e-408f9515d87e aa5a64ba-a4b2-4e5d-8545-1f2bf8a5af63 0ed64fc6-e9d2-4b1d-9e35-8a6c9b3ccef6 21176bcc-6d75-4415-a6b0-1d97ab4d5eb4 10e8f00d-3f1e-4495-a9a9-026cb3e3600e ffd5d536-92c5-4de4-81e0-72cff1e7e97a 07629485-58f7-41c5-b07f-f2304a42aa9a 29bd46dd-7028-44ab-aa51-3a7f4e9f1181 5dcc1295-da78-47de-b116-5141e410f807 8a0251a2-4881-4e2c-93f0-896966d4a32d c5ec10e3-0006-4e09-a3fd-aeb81b74926e e5bafd0d-9b0e-4f2d-b481-fbb6e8676512 e336ec08-5c3b-45b5-b1d9-dd3b1d63039c 6dabdf44-5281-43ce-9e50-8cfff65280d7 05037779-1060-4a6a-9097-6483b902e56e d12cd2cc-9b68-415a-97f8-375eac7ad791 e70757aa-feae-453b-aa05-c8841093d7e0 b5a45440-5cd2-4de0-96f6-274aa9c1286a 889d7d40-8f6c-4a55-80fb-a32d993dac1f 6d4c56c8-fd20-4035-b087-434b1bba8ce5 8c2e15ea-1ac9-4e75-8f0f-e2656dbf321e 8f4b2f95-009e-4463-ad5b-b1f28497417b 3420c586-ba3f-4837-80a2-7ce98a8eb663 210e3d2c-6341-46a2-960b-6c32c421bfa9 58757a42-5f4a-4220-aa19-44bb62428ac3 41f440ed-7bcb-451a-a857-c8830a43e6e2 fd4a4c91-7c84-4607-a013-d38a4694bbcb 8523981d-bc6a-4911-96ec-81f9c0e307bb 084760f6-d686-4417-a241-7cb143d50379 cbd42fc6-ef4b-4d74-9ce5-9b508eaa919d 15042dcd-4fdd-41fc-b8ea-2a10bdeb8cb5 4ba08093-ae15-4389-b28e-58a7b09fad01 72356d89-7b9f-4131-ae7c-1fdc8741b8c7 b5b33c60-cdc7-4fe8-a4f6-2de66a72b08c 77b36745-8698-4384-b76a-e5d3c201fa43 3652fea4-18f0-48ba-b882-1d0783a16ed6 f1968b5d-23e9-4026-b62f-09bb159d4ce1 ec951c1c-b704-43ee-a239-524749f4ac9e 79550146-7053-4378-b6f0-ef3496edc93f b5f1004e-ea8d-44d4-ab96-d760f4cd6a8b 407dd70c-7664-4160-ac2f-cdd741f56ad9 bee2e699-8c96-4fde-b3cb-c42fd939de0c fbeb2bca-aff1-4755-b448-b8bb5b4b4c2c 76f28996-3b3c-4da9-a3d3-ff82bf4d0277 b96d957e-04e3-48ea-bc71-c2a4dab23005 a2bb6681-b0b5-449a-bf9f-5c37854a088a 53e0ccb4-61c5-4357-b763-79e434b58998 ccdb2c98-05e9-48e7-a8fe-568e21317a63 21ca3b3b-6fb4-4989-a1dc-a78162f0df98 9c08457b-db15-414d-9346-3838b81c5a3f 1d910579-e758-418b-8b9c-0ba68bf61612 70848429-0069-45a1-8e38-e144141af0c2 a509160e-8dbd-418e-8ddf-39e2c68373e1 1b25aec9-b1e7-4bc8-8140-e747fe24145a 6019f5bd-9504-4764-a22c-785f80db39b6 09985a08-2ec4-415b-921d-ede5e0cae68c 5ee9cb3c-d2e6-4d14-979c-5910fd9e4fa1 ae96ec19-ef71-4d4a-b902-8ee682396881 1fb2a2a7-36eb-46cc-9b5d-77d5c924c595 a1590580-c98b-4a5b-9a9c-73fa5d8d51ad f3bd2374-b257-42ef-bba3-ee21f14d9b8e 21efff90-b219-4f6b-a539-fe2daf5d7596 51e1e404-9f12-47d4-958d-d96d208c9197 05f53bff-e720-49c4-bf71-414d9e1bf99c bbe29350-3bc7-4083-8a65-f652cbba0872 853d3697-e755-46bb-83e3-1176a3447245 b1056b64-071d-436f-9752-c1f57fa77558 be6a3cc2-d244-47dd-a285-9f4859f40f93 1009f89a-8d7c-4219-abb3-f5669193f18a a0619077-c53b-4a57-b115-f22108253946 c58c8e9e-76bc-4b42-aa5e-dc8dbe538ad3 5d1fa3a5-28af-494f-b61d-94733863415a 38c9bbf5-f396-4752-bdd4-54afa0e5bace 17177030-abd9-4128-aefb-67f0fe4b90c5 d32fc89e-239f-484f-96eb-cd05c536d03a 7761f764-c719-4722-9e65-227e53a1899a 433c8104-cf06-46eb-b01f-153d7ce857e9 25cf3eca-08e8-40ae-8b5e-7edc03483459 16ee416a-00b8-4804-a3cd-1e242ea8a353 1eaac0ca-cf4c-4356-96da-7aa76be1c6a7 2bee813c-c941-4dc7-ad9f-f59b5071d7ec 59d0534d-33ac-446b-a105-16888e59811d 3deef7f4-f106-4bbf-83aa-dd936bc9c058 deaf3acc-526e-4d71-9f3e-619c2d4a9a7c da5598c0-dc16-409d-b363-8c3a2e1c8949 88a3a70f-a659-408b-9e06-4d5653209ef2 4f27317c-0d4d-46c3-bfea-33d9aac6777f 58b65d06-762b-47c1-a46f-677dd3da2012 9cfc95ad-3fb7-4365-8308-0153f140e60e 5415db57-1fe6-4ed2-a16b-8f77f4d01e54 99be8a07-05e5-4ca2-82ed-910ace78e74e cc1423ef-1b25-461f-8bd4-77cef9b740bd 3450c7ad-471a-4e65-9239-a1efdba74ac4 41a97a6d-4d1f-4b06-bd2c-ddcabe51c408 3b4084f6-ff60-4960-b2fe-46e534bb1b06 b5a72d3e-23dd-4fb1-932c-e5cc74c065cc 56b20c8e-3885-497d-a3cf-f5197781258b c2d8a7ea-005e-4824-96e9-d48e499b29c3 b80a061f-cc8b-4769-9d23-a2d5e4e94700 c09cd9da-cfc8-43ef-9a62-e5f13fba124f 8fc1992d-db98-44d8-abf0-5ce370071244 82920dee-ab9d-4709-8cda-2a2921e12d5d 6f8f6e33-80e2-483a-94cb-925943f58aef a2e4e542-d9cf-42d4-ad4c-81cf63fab2c8 12088172-a6a6-4d1f-9ae4-d98d20f4c1ce 3ce1ab99-777d-4947-93e6-f0a5ca98c4ef 9b295593-810a-4451-a3a4-752a5a338bc2 3aa5a0ba-0208-423f-bea5-f95eca39edf2 f5862065-03f6-41aa-ae08-8c429048e7a1 a1ae58c7-3fa3-4650-b926-30eba99f1129 576e872d-aa29-4103-8cc1-de6dd1be9211 2b0475b2-f275-4bfc-9215-ca852f7601a8 646c4a61-cae6-4a25-a477-9415b15d9188 8983fbec-9d3a-44f4-92b5-f98f4525e47c b9bdf19e-4d1f-49c8-8e0a-cb04776ac970 b566f118-f338-44fe-bde3-83b8bb985a88 ac2db0af-d9fa-4c6a-88f6-5d12b34f939e a06a7d50-68e8-45a5-88f2-52d10f947da4 9e5488d4-4a53-47dc-800b-bcf8d79ffa71 76a0b09c-11ab-4c22-92f4-650f077de924 3c844e17-efb6-4eec-91bf-b126717ee302 e396a943-2f86-4a69-8d70-34c9fcf0feb3 a7ef628e-94e5-4559-a1aa-74c79b7524a4 7e6eb9ec-5105-4413-92cb-1913171b94da a8c4942c-26be-4682-a4bc-8329fd1ff5ac 5ae6f70d-e99b-47d7-8919-a430d368da54 5f8a78dd-fa50-4347-be22-624c465e2bdd 293ed31d-3300-4178-b473-342569a27e57 b427fdba-4e61-4d38-b355-1972c9ac670e 36eaa080-5acd-46e6-bec1-bd2ff569bd9b de78268c-a9df-4a4b-b1ed-c3a1d6fbb24a ab2d9ae8-5658-4202-b79a-5d2a25d89018 5dc1bbc4-86a9-48f6-ac41-9668b362d749 412061b1-f50d-4ea0-8810-e9979196311e 0a702c11-78a3-4156-a963-c80d538700d2 6565d269-ceb9-4e95-b087-f7b7edacc9e2 2eb6a1b4-3fbf-4b13-8e17-cbdf2cffe957 68a9ff80-3e76-48ea-8a0f-52da62fc4295 9f8b56a0-5be8-4212-ad0e-63ef96de165d 16270c42-005d-420a-bd06-2735b6d132fb f9053f37-b40b-4aec-941c-76eafbf857b5 6e298864-2e08-4877-9c49-50a2dd40a35a 2d1ad9eb-010a-4f19-b560-3627eea95c57 25e9ae45-fda8-4b39-8645-51e3d691a88b 922ed1e6-27de-40c8-bae7-07604a0cbde6 98c8d56a-e73d-4801-9394-2c007eae746f b2562f6a-0eb5-4e7b-9f1a-e80cd608d2e6 4794fe6b-3073-410c-a899-4d2bffe379dc 1a6251d4-4bac-4286-9e06-5c74281cc4e1 ba999de3-bb6c-4153-b34a-ca67abe582ee 4eee6870-d658-463b-acfd-eb3720a8133d 12d36fbb-b99f-4652-806b-81d2d3c557f5 ecc977ae-e141-4288-a516-d0396ab4beec 9363f07e-ba02-4580-8327-ad9cd2faf4a2 ac56f552-cc17-4028-b81e-d1364c8a8c97 5791b653-27d5-4d69-8f0c-584f9d67cd0e 82483572-e5ce-435d-b138-edd6969e8a90 808486b7-9a27-4164-b011-323b5bfa808a d2227958-6202-4bc3-ba7e-3042b2c08ea2 9061c1df-5ea7-4901-92d0-2ddc6045af05 d82b2f38-6648-4e04-a7de-d6230a0e2375 76ca7e63-75ba-4678-b972-75aadccc83e3 d56492fe-d9c0-4e1a-a0ba-78e4cbdcab7a 54f6bbf9-3142-41c7-8d90-cd89dac1432e 5929b1df-e791-4b39-8db3-7237f0c2a475 72cbc850-dadd-4574-905d-b9f2bef8ae73 187e67f5-eaec-41c4-80fa-7ac988f30a9e af922bd0-93b5-4caa-b7a6-912816987c75 02f52e36-39d6-4a63-84af-49d3bb5796f7 f1390d32-777d-4cef-9a53-4be6fcd25af5 4caf967c-5a95-4760-b1c3-e67ff9415179 a7f48f55-3a1c-4e38-bafe-290a3c891f3f a15fa498-711b-4125-9a4d-573eac98d673 70c9e442-91ae-4aa1-9e17-1f0aeac30ca0 cdce5faf-dfb4-4fae-a998-3fee8575e315 18d5f0e6-c687-4ef2-8a0c-8d73419c4604 cffffce2-2b53-4cd0-9cc2-d114e0344238 3069c7ab-1430-4123-8c6e-65bde2bbf511 64834a8b-d7e8-41a8-81a4-0d3282ad0cfb f9ea6b1d-bda4-40df-8f78-b783959e024d 4aac9bd1-64f1-4eb2-8228-f7a9c20bead3 049371a9-b1a5-45e5-a6ea-f1df0c43c0af adb962d8-5795-4c22-8943-564e77392a04 800f9d4d-8dae-48dc-a97c-33685268fa5d 06f3d09a-5be8-48be-bcd3-dd96221e1a46 ae84e063-939f-4172-b904-5cd16e570567 922ab8d1-2093-467f-988b-2548063a0c1a bf4c413e-f986-4c60-820e-889494dc1050 4a182a79-b85c-4069-954b-be871132c33d 775c9db5-a997-4611-ae6a-4cc576a2ef3e 550fc5ed-e0b0-451e-b3e2-8c7c71a34cba 9d74ad43-fe87-47fa-b7e3-bb4ca9095583 c12cf2c8-e422-4f7e-8d24-8aa29ad6d0b9 bca9fb1e-8a51-4961-bdf6-294faf6da5d5 d6117272-9295-4cc4-884c-f66c60f4fb61 ae268d81-7f14-4c07-8b2d-3969da0197f3 c7d7cadb-70c2-4c34-8e72-d48179aaa6bb b5a5c966-86e6-4765-9b8f-55b6501c05fd 032a4457-1571-4dbb-b33e-dfdd26b74bcf e96f917d-a29c-4ac6-9368-5d2cd2c754f1 c8a420f7-985a-422d-ad9b-7ddae2d5756c bb09b476-5b54-43f9-b6c0-e5389a57f195 f6807ec5-0a67-40a8-a7c9-1c15d5cd5d19 953b49f4-af13-4cd1-b485-6a74596055ac 083226cc-f6cc-4aee-ba49-f5db01f4d300 ccd91fb9-61e4-4b84-a53a-7fa7968c0c4b a51d5dd9-f2fa-4956-9901-2107afd7e4d4 13a366bf-eb25-4d7b-b221-6223e5d5b271 66bd1096-44b7-4346-a776-ef4c773825ae e8fe0f22-af08-4190-aac5-363191e6fe0b e2924bd9-ef33-4713-9a64-c92a60e7c3d2 0071f39f-8ea4-4355-8023-154fff3c7d68 c8a97385-6392-4e40-b8c5-ad2aa3681700 3033ade2-628b-49dc-a65b-36d2584bd6a8 a391b78c-05bd-4c16-a949-64979e885c49 8e238ffa-71c7-49bf-b67b-1f406b8b3d2e 8a113524-34e9-4656-94de-6df7e5748fe2 d0182589-dd84-405b-b934-cf9499433591 b3486082-e8bf-41b1-9d10-84d97ffb1428 1d11cc32-fcda-41fe-8999-a8df38c1c576 c95f5385-f9bc-45bb-a0eb-23698cc27442 b4c36cdb-ba57-41df-818d-193fc2bccb2a d4a29941-472b-4e85-8b86-9cc51d9434d3 cdc3ea2c-82f2-43c4-825c-109a7e1fa6cb 49ae1947-f8c4-4546-97d6-4e0a64ba8532 56b37b33-e6ca-478a-8dd4-39abd5d20393 31558ab0-bafc-46dd-9944-5e099eb4e207 83660ce7-6842-44fd-a3f4-5391bfc2bae5 719f4eb2-afb7-4909-b5c6-ad944d46e4aa fc3ae763-eee6-4edb-9358-e25336872d67 b9a471be-4d3f-4ff5-ab2e-5f00529bb94e fd42045c-493c-441b-be30-74b40eb1e309 6f437d60-7c39-477b-946f-ae68c935bd40 68155aec-e2e1-4cc8-aa7a-d71c8e0a3f8c ce864e27-e81f-43c3-a47c-eeef70037651 1976e463-16c1-4268-9e70-d3a98c2fb68d 98bce622-7361-4980-ad8f-5ce817166a46 d2937db6-9289-4d0c-acdc-3c29fe73b219 fbf8c0c7-faf0-4fc0-a0b0-9dbe46926d45 035a5745-d370-4a30-9501-cc4e2aaf8bc9 5c204c5a-035e-485d-8590-172d763892a6 ee339c09-1573-4271-b6fe-a70d0e3e55c0 22f3e68a-a980-4bb3-940b-991ed07c94a3 bc675fe2-1ad0-44f2-b447-5f740f974707 04623ce7-75a1-41e5-8444-974a8e11de54 dabb4e8f-06ba-450b-b6f7-b2213a883ed6 a221350b-a876-4956-971e-12323274c572 3dc666c5-2756-4a4f-afed-aaba578a1519 bd979eaa-e164-4598-85b9-629b83380aea 83d9553c-7ab8-4bd8-8bc2-76e8ddb0d0d3 f0151084-0363-4ce2-af5b-bb0cea784895 a85395d5-12bc-4a2b-924f-ed727133d2dd 97a78a35-08df-4ad5-9616-375f5c08945f 48f14f89-2fd5-40ff-bf8d-d398d1748df0 f3266aba-db6e-4eaa-8c27-8ea5f77ad364 dda11bed-592c-4792-a1f7-3d7510491c9b 409f8762-afae-4762-a542-f3f16f7199e0 0766e50d-ff17-42f4-9fd5-14b38fcc9949 9299f5fd-3160-4f88-a176-34ee52c152d1 3db0f413-1c75-4eab-8d0a-81c3069e73be 2e97eb79-c267-443b-9622-8f4fd8613e72 f89f152d-8e96-43e7-813c-af96c8ab49d3 acaf70ce-2f3f-42dd-8502-5f5086983f8d 7a98cbd1-4c68-41e7-b815-883fe55df164 44554d40-8b18-42dc-aaa0-dd6c358b4cd7 2cc05b95-3d2b-40c8-a31b-825a22d26a71 ea9f37ab-655d-4520-8b4b-abaa53af9251 08ef3bac-00b8-47e6-afcc-77c9d725fe6a 768669a5-3f5e-4ef4-ab61-cfde1096d7b9 9e3b5dcb-625c-4284-9f0f-bf87c8d9d21f 7cbfdf9b-e7e2-4f5e-853d-8e09641139cf daf1ea2a-fefc-4c3a-9da8-0a2024bceca7 0452e76d-b7ff-4baa-905f-09d9fc815818 6f95c49c-c350-4c4f-b0d8-5f5c08f28cc5 ccee8753-f556-4f35-b441-2e6b4928f1c9 74b509c1-c96d-4d5a-8584-7b6703b0a36f 40d6eb34-784e-44a2-9611-3fb55ef3965f e750143c-2179-4c06-9717-153fd5b9c2aa 2067bd40-9fc7-4dab-9e99-4592ada51160 1da1a341-716d-43fb-b161-05001880555b ac3874d3-7410-4712-8875-85adf6ceee95 bf04847c-e5f6-46ba-b8fb-e3ea61ef146c 58acb014-27a9-4080-a9a7-08bd04300b6e b42d5449-57d7-4b4e-9f11-c31f878758db 807c2b8f-528d-4ddf-a7ab-0e755d44b38f 887c1f50-0585-4b01-8f3b-eae5ef9b887d 4bc99438-c8cf-4e37-9ef0-45d58ead34fc 3e337e1e-9f6e-42da-bf28-41d85224709e 86288aaf-70d9-4251-895b-519083a198bf b01ca497-441d-4143-a579-b6b5f1a1fbed 3408bead-e103-4eb1-be15-65202a9dfee3 eb1c33e8-d70c-4ccd-b731-2a5f0d52231c 93fef5b1-74c7-4b85-998a-05a65d94863a 7e289e81-a9ed-40ce-bf71-e9fcd9f6ce34 e44b197a-f99a-4f0d-a41a-de3881ec7f94 1bd8b634-7c4c-4a00-b5e6-d2addcbac384 c30432c1-4f24-4bbb-86fd-658926312c4a 08da28c7-99a1-497d-99c4-cf7d0df58fa3 32f4456c-0aad-4a08-8842-23a72b0cf9e5 90dc203e-3b8a-492e-a0d9-276e323aeaf3 396f70ac-1a90-4152-9133-2934af3b8e3c fdeacff2-a4b9-4390-b71a-303e6eed8a80 711d8a75-9d68-469e-b6a8-66e33a49864d e78b05f8-acd1-48a1-8a92-44ee4594be27 d4e20a2d-a742-4f98-99e2-540589446454 5110a26d-2d17-416f-8154-74aac1b88b0f 1377b382-b2ae-4440-ba27-28ec72957650 d6b66309-1a5d-45bd-aa4b-999dbf08799f bfcf5d12-e5c6-41ac-852d-c17ae7f15b10 f75b5979-815d-48e8-a18c-5f9e606e4cfe 8a94695e-12b7-4d6b-85f1-b3f14a7ed008 85b0391f-a7d7-4312-9e70-ebd18aff9275 69c5d1e1-4e97-4095-8a1f-a91a80e7c63c 33f3c897-535d-461b-8acb-53159935284d f1f475c0-0f7e-4bd1-8c0d-31bea2f407e5 e0548c46-f493-46e4-bc97-7a31d275df8a 3bcd48b9-83c1-4798-b823-67372aa3d724 867f7a9b-2cc1-4185-af3c-f89da81467d2 3f055600-f87f-4c0d-bff1-5c6c58d3ef7f 85f9f198-6bae-4c57-a61d-ee31be8dcec3 fa0fac0f-974d-47bc-a1ff-a51c3621cc37 6b38bdb9-c90a-41e0-9237-5be8402ef30f f807ba92-4d14-4704-ae8b-a579d2a3a8ac 04e742e4-0b80-4b41-9a08-624051ab5536 6eb1bed9-70fe-480f-aac2-7af742735871 9b6f8128-8a15-4d58-b486-cf149993d5c2 0eabf903-c7a7-4885-8ffe-0861df76d7f8 41d48d60-7127-4857-8dd8-1d93d7392c11 3919277b-e33f-4510-b07c-e371f1c74df9 11b3e8a1-4412-42e4-a82c-af75987d2c4d 661af507-beab-4d34-9e3e-afeb8ec2d1da a3b18b1d-833d-4981-b17e-6cb545c87866 bb433af8-82b6-4aa8-8df7-1c60e89955c7 d176c101-5bd2-4f14-bf22-1ef8bf298a8d 802b8d70-8c6c-45cc-b630-3bc975ff0d71 4bc8cbbf-56b7-4cf8-9d0a-212b6c6b9ea9 d80644b5-cf91-4903-b99d-3591e1d4ff14 a7cb3711-8b6f-4685-b37f-e95cf7d70384 039663ad-228b-48ad-bfdf-39a7274eb61f dee4b1de-aaf8-45e5-a653-1e9e90cd69e8 5b5b7700-5466-472a-b24d-8755515bb3c0 d95cbe96-41ac-49e6-9216-aee6ecb32b60 10d92429-12c0-42c2-9ffc-338b569b33b7 48c17042-a454-4a47-8016-52c2440258cb fb00e1ef-0ab0-4a0c-93cb-c6052d066e2f 66d66968-6ada-405b-bb9f-4100549f5d20 ac35a369-3f24-47ca-bcad-71b1503db3d1 a4ebf10c-5cd4-49f5-a790-ecefd311556a 6ccc5fce-409f-4644-a041-d263716cffbf c4d31642-5443-4c84-8f3a-eab7cf635898 dca3b797-caef-4520-a660-05caa0a96228 378a8fb4-643a-476c-8371-05137146fcb5 a0ff45f1-824c-47d1-9404-2168b7aa9a59 a9239a5c-be05-41bc-9c92-6a3909051c92 662179b2-3e72-4601-b16e-82e335576fd3 60c009bc-8fad-4bf7-8d8a-54ef35ed3a19 572fd5d6-2998-4dc0-ad62-cfc473bed814 39c3686e-0b07-49da-9c3f-8071f116eb84 73848d90-3565-4429-ac2a-1464f0eac65a 65998ca1-62e8-4bd6-b6b5-2fc1eaae51c4 10a40082-6426-43cb-9980-67787f6bef92 2d121c16-aa46-4d7b-9d09-7d70e8d05ff1 4795ddf6-da81-450d-94a6-372a8d26a9f8 c96cb1a4-d183-412e-afbc-bf3bdc7e9a2a f2ae7a61-7123-43ea-b5f9-9557995d9ee1 aa21412a-b514-43a3-a79f-2a033508cdd0 abd06056-1c21-4993-94d8-9d17691270d9 d1fa8119-669e-405e-8c52-9632108a0542 c44d08ba-b1b3-4d7a-aaf6-716e5c343e66 8c07d261-55ee-41b5-87fb-a5d9bb022e74 d73a4eac-9ef0-4d15-80df-751c10dfed5e c45be77d-f384-4926-b234-20d274188a82 c27e88e0-d022-4ff9-bf59-3f9dd4050107 0fa14887-b088-4840-9b0c-b68077be5b9a 942eb939-9b2d-480c-8a8c-4c88f7b7315d 5187b863-9386-49c0-811e-036eca99bbd8 62121d80-4490-4ab6-9527-8fffef544c9e 963de5e4-bbd4-4f00-bf82-6f1d0bf568e0 4f6f90ed-62a6-4641-85c0-a30b01c832d9 c13658dd-77f0-4c0f-8c0d-1270905ead99 12cb7abd-df06-4aa5-8f3d-1b04e567ef89 a519911c-a07e-4740-b046-fbaf313ec8a4 64d0f9f2-cc91-4914-a9ec-004bbba3c468 e6b673ee-7d06-4137-9ce9-afd8eb4eddf4 6dd64a42-b1ab-48b5-b08f-71f22d4e1e7d f756573a-7310-4cd7-9363-533894b8f5a1 c9e7a52c-0ac8-46e0-8b02-2b3c23ba329a caf2dfdf-d89d-46af-a552-b10b9e7b5d3b d5e937b7-2858-40a3-81ea-9bde664bfc35 20759c58-595c-4def-bd23-17d24c3118ad 46cda659-551d-46b1-9c5b-c1cd1783aaec fdfeae99-aa3d-4b94-b645-59a35a14511c 2d302434-cee3-45f4-b33d-f65eb9c92551 2b4f0b5e-01c0-4f5a-bb34-58fbc61a38ea 44cc95e9-d1aa-4d55-af5c-ca4c0d845bfd 4829a181-f6fd-49c5-9362-b40058495a96 55d45c2a-af5a-40ec-af2f-3e3395662e1c 1b740f3b-810e-4de0-b4b3-e6ef3d47d5ea 0393256a-d248-45ef-b578-ac0aa5b4c6b2 c5c28606-5e50-424c-8393-ccbb0fc81c09 06de7497-6072-448c-963b-01069924fd1b b92795c7-63f4-4073-8d80-136537d64d47 abcd2ef4-6d51-4b5a-9691-7eaa0e780f39 069ec099-4551-4f25-aad5-cc5e04c8c62b 7e4d7311-3c85-479e-9dfd-e3873c0c12f6 2eb60624-5137-4170-90ba-16cd20e34858 55197690-9e5e-4a87-a9c1-7bc891db7fea 117ae775-a092-47b4-9922-dbd6e29c3dfe e1619201-6eaf-4fd8-b75c-c82a6b628bde 42cc7d9e-024f-4e5d-92cc-5e0486aaa6d6 5083b115-cf30-4fe0-9bf2-22ddd331e66e 2de10d04-0524-4448-b106-45023b68f44b 51dc9897-77b0-4a93-a51f-bb9e2e6ab0fd f58e9f8b-9a05-4447-8b53-2a0ff211d8c2 e9fcee3f-a221-4350-93c9-7be2f6470dbb 08359ae6-a60e-475d-8a88-7e4c91d7bfb5 835f843d-22af-4f51-b036-5b5bfaa20e38 20b9ac60-4b09-4eb0-a7a2-34dee1108ab1 7260f012-5e7a-4eff-9289-a6ca26de11b2 0b7870f5-ba92-4b8d-9684-2232b5d56a86 10126fe3-a5de-46de-b528-ea5cbfbd47bb f7e09c64-89a3-4581-b44b-d461bc187d1e 6d3c7677-ea82-4f82-8811-78267608da34 f69c223e-5b0a-4347-8523-e96f86140fbe dfc36467-9a5e-415c-8765-be38eba7a9b7 ac4ed014-7082-48a4-a28d-5ecf9592c3fd f98e327b-2e71-4905-9584-a094ea3e0199 634d06de-f192-44da-9d2c-168852a17e50 d84246fb-d9b9-4844-9a46-0b7382ca5353 037bdc63-2a49-4c2b-8865-23d5d6630f1e 02e56264-1211-49a4-a4b4-b834c9eae49d ec57a339-580c-41ab-a90b-5783e1e681dc 25082e03-f49a-48a2-839c-def8b483c315 585eaed0-ced3-41ce-862f-86324b281df4 af97e152-3d80-4966-8781-ec9ed54ff2db a36cea22-99af-40b5-8808-38576fdc970b 43ceef5f-d331-4083-ab90-b5ac857086fd 077f2a0b-9b8b-4961-aaca-097dae84eb4b 894f0342-bb29-455b-a4c9-d1284e09fe79 681ab23b-e3dd-4d0d-ae06-da3f83a9f196 bad4057d-ff61-4c12-ad97-c594160a5ad7 bd2f8a02-280c-4f02-a5b5-d230de5783f6 b0963ca0-400a-4513-b7cc-a06908183180 8af704fc-48d4-4ce0-bbb4-96e6936e8fb1 6dc047e5-37e0-4d0a-a478-dbdc2db483a3 aecde4ec-5f61-4a69-9941-41ddf8dcc518 02adeff0-e1a0-40da-a06d-02fdfcf73091 9cae8dc3-49f8-4358-bb49-0d7c983768b6 9c0fc3a8-9986-4faa-8a5d-bd4105d41f58 82e3c53f-9f83-4299-a3d4-a862302edb56 431601f4-5d6c-4269-9097-7411d82298cf 64b9c6d3-f794-41ec-8ec3-3215bdbd3ab1 a0f68292-cc2b-47a9-bd81-dfcbdd5ebf03 c5f063a4-dfd1-4196-ab4c-9504d7684bff 84af75ad-c57e-464c-928e-fd14ec07bc62 f81c4547-125d-488a-bd8d-7bd63aec87f6 2fe087bf-4f6b-4251-9454-35099d823454 dbd1e009-371d-4ed7-acec-b47415451e64 90d6b782-5284-46d5-8bd0-11bba4a4863d e3fde7fc-fb38-455e-91e6-79ff30f21e4c 6d672aed-d06f-464a-856f-707778fe8c49 1bd1affa-848e-4521-a449-df454e1521d8 4a59f16f-8431-49c8-b7c0-a4f0affd5147 c118570e-216a-45f2-b0f8-99cdc3bbf242 0568e67c-9a1b-42c5-88ac-9f4b1a16b5bb 29b29359-9ee6-48ff-bd36-82902be2e02e 9a4b1ac1-e103-4e20-a63d-3c9cc2384bf7 cae90ec3-4e7d-47fd-9252-7e159c78913f 5da629ed-8825-4e7b-95e0-6c8179964eeb 3a113531-a4ce-480c-bb9b-f54a2f45afa8 3aabc5bc-e33a-446f-a223-67b540116549 f10f4dd1-9ca1-4d22-a992-54ae15c93766 88412232-e5ef-42da-a3e5-ede0eb170940 1f82245c-ff20-4b50-bd48-1e8b5fd002fa 8f9b6ccf-91eb-4238-a7dd-ef9200047926 1e2c5e91-e628-4397-a96a-7a09ec6afa43 851e53bf-0a3d-48d7-bb54-1518d9e79f2d 2716c9cd-f828-4721-a642-4a996e67870a 8267ddac-475f-48aa-a520-34fb952dbc41 26584e49-c627-4c9a-a1cf-5e4d6e6f8c04 7f473f22-b33a-409e-800c-f5407b8c1808 e70be26a-f1a5-4185-b270-1df2f32ed242 928e0b73-db07-44d6-b624-96985676877a 3a0d3797-4561-4474-84ed-41539eaeb9a6 84d92017-ec68-4d1c-a9bd-5c5c860ad87e 22c4d112-3ee5-487c-af1d-e48a26409d1f cb6d9d8a-a50b-49e0-a4b6-a1a7ee271df0 9f70c8f9-f2a8-4dea-837f-d2ef32f5e65c 59e9f02d-5f2c-4ec7-b13e-6f52b01e3828 fba7f0c7-9851-4c2c-9411-6b4bba3f7d36 dc80a515-3a3f-4e43-ba11-0793e75d45d4 3b1298e4-bad2-4152-969c-b3b3bfe1ffc3 f6bd0cf2-af69-4b6a-a8c6-5732d070ec00 893857de-7bbb-4eb0-aec6-532c4f136b95 4771ed5f-3979-43ce-83c4-3b406ef6ea3c e2a2605f-29f9-4412-b327-96d36640372e d50f243d-187a-4660-9410-66a06e26bf11 cc1740f9-46cb-496d-8b47-431ef506b9ba 3a2af06e-1b7f-40c5-9454-d97b0bce46e1 a6a54394-784b-417c-a411-3cb85bbdbc68 cfe45eb4-cc9c-4205-8b92-661c6d372787 78ca3bf8-a59d-4586-8d23-199764cc404a 336cda90-12fd-47ee-9ee7-d69bfc540f76 b34def07-a0e1-4bda-89b2-6f6207ea0e40 344829b6-ec56-41be-a82d-317c416dd07e cb802265-50fe-4e12-8f07-2bceee4cc3e8 c4af27fb-e874-4c68-90b8-d713111fe346 24684918-7e6f-44cb-abe7-d056b3f9a9c2 a60b2180-0aa4-4f9f-9d69-2cb3ee5a0027 a3145290-0022-486e-b394-724312bb1719 2ac7ec46-da00-4ad9-b2b4-27ea16b39706 cf414285-19cd-40eb-9f21-c66a1dbcf3f9 56b869d0-45b6-4af9-9829-fdc2e8e8787b c53a6225-ff00-4719-9b98-68d8eb5285ce 51b2f87f-0444-4f90-b919-d4a0e40fc680 de74a5b0-68ae-44a3-9f45-83e6761bb546 b0cd77f5-0b44-4de7-9ca8-c1cb3e16aeda 96718a07-a1cb-48f1-b6d3-34cf57a977b9 292d8141-c519-4186-810c-1991c87052f1 98dadfaa-732e-4952-a756-df9179cec430 7ce1a962-170a-42ae-b822-d5002042ac83 0ffb4fdb-882b-46bc-9523-b7322ca1f3d0 cefcd6a9-f953-43f5-b8e2-03788848a197 a7699e87-8a06-4175-abfa-3781d20ad5de a4adc283-7922-42fa-a9bb-b103ab2046fe 46b9c783-7d26-4c6d-bcc7-798d263263be a7a084e6-e0b0-4036-a532-a92a43871c90 028c654d-948a-4335-9e9c-d2461b15f291 f891d723-4b31-46e5-aa95-96dde31e91d9 00404b88-9b89-48d2-b9cf-93b38f8310b0 b3e6254a-87fa-413f-a0fb-6bb3442f4a26 21ce15af-290e-4478-a732-6578c402eae6 76ceaab3-7017-414a-9220-c574e44fb6c6 4df21fed-05ea-4aab-b96a-fce30b6d7ddf 00f82fd4-a83e-472d-9d11-b876ca572eef b8b66218-3645-427e-ad6c-b0ea8d5c6cb1 e3e98181-90b4-4164-b13a-dfb064111543 1460ee80-7538-4553-b375-3318370d3ca5 bf4be570-88b2-4c1e-b6fd-1ab38a895708 f0b495e4-df14-475e-a1e3-6374c5460388 f6a071e6-789f-4832-802b-a6b992d191e5 c2ac1198-9d93-4b62-976e-0da3a467bc6f fdc809e5-b9ef-4b9b-b8e9-83d9f0e7ecce b9825c50-0988-4480-ad6e-895917fb5270 1a29be27-94e2-469d-a050-f8c0636444e0 e4a00f6c-0423-4c28-8b6f-ad72fe137602 b616d3df-be08-421c-b20f-6b3e0b5427fc 8f9e8fca-c92a-4dc5-99a2-dc48ad2e8129 0568c553-6bfb-48b5-bae9-42364efdb879 9c931f2b-c6c0-4efe-aab0-1a7512a6aebe 3ba0d2d0-7f2b-4338-8830-680f990b9494 e1482dfb-65b2-4dcb-93b6-5d7444221ad4 b25ddb65-feb7-4f04-b4bc-02084d8d3ada 8cd3ee60-5f99-4861-b2e3-a8755d0ca9c3 2315f060-ebd4-4d79-8270-d97d229ecb2c 098f58d4-729e-4658-a70b-f1ffbb30b27a edbbb91e-34d2-400b-ba54-c6b24a422573 5f3ca05b-69b6-4ff0-bed8-cc64a6feb0c4 59217ad3-c38b-4845-bd63-cc38da77d19e 5ce84fb4-588f-4063-8985-cc73d49ec882 b27fcfba-bffa-493d-ac73-4fb1a6671498 03e1a18b-1aec-4c0e-8290-aad64fe5f28e 1e4e0af0-a96a-45bb-9ee7-eb5397cbec3b 58dd093c-1151-4857-832f-a475b79dd771 bb8fe54c-769f-431a-b83d-fad2eca79086 2efec7a0-4c30-4fc6-bdc2-0b4678796ae0 a8d6e11f-c4c7-4854-81ff-9a103f5e696f dfd933fb-0c14-43f7-9c3f-6faf384317f0 c6676d4b-dd6a-4a12-8d0c-a2d4cf5f4afb bbc55088-0489-482e-861c-74aa08b0c288 fdfc8a25-2b67-4e79-a694-4f208e598ad6 e2f3e6f2-a05c-4eab-834d-581b11b0bd29 0a57d2cb-5122-4918-960a-a0a4f950788d 42dea578-02b0-4973-8d26-6c81b823dffa 64eb5f3f-e028-4ef5-94a6-020ddf597e3d ed3f141e-40b8-4e9b-b603-ffa73ca50425 c701c8c3-9575-4374-95f3-4d0f15d7d4a0 f88e92ff-628d-45f3-8ac2-0f915a416f57 5db0cbf8-5aff-4a99-87ec-c0a7885d1c0c d81f8457-1afc-4bcd-82fe-232b0adea3f1 81fc18ec-4db7-43d2-8b48-21f2643ce38b 77bc4d71-8ce4-423f-bd23-2b76a903ecf6 d6fa982a-b5c0-49ac-9f3f-4ebd13449045 f2966b04-3085-4de6-8025-56343302f9fb 5e6c3969-9cad-4330-bb49-37f9c4d997f5 0b064248-ab68-4fa5-9836-37f657af176b 3f9526e9-c72c-4f4f-a366-857ce82971f4 32e257c5-c4ac-4399-836e-bf92f0ccfeef 046f709f-75fd-41e8-9908-d6d41a2d77f5 ea26de39-70d8-4460-8cf9-0da8c359cacf e9f0f2cc-b8f1-4f1f-8b75-95ff2e08af02 fa248885-7f35-4bf2-9219-cd760abbfa93 e1000d93-262a-4131-974b-aeadb1d7efe4 e7e42c6a-a5dc-4ad9-9758-8d14541b0579 7e6d5e61-3689-47c8-86eb-754a9054cea8 01735ade-cb61-465a-a15c-49f905353b17 a0019d9a-394e-4200-8daa-5cb8be877af2 b903d1ad-7908-44a6-ab8e-6ad42f994cf4 f67c2c82-3b75-4177-99b2-58cb36a42139 ae4adb92-d2d4-41d8-828e-760711481a02 3e9572c1-2744-4e64-80a9-327791007b4c 3caf0e0b-6ea5-410b-b802-20d4d41c36c0 953bc5aa-ea2f-41a1-8a8a-45340e6d6bac 2fc3808a-1a8e-476f-adb1-f6e2151e432f 8f0e9f09-dee0-4aa6-b5c8-08683ced58f3 0bc16160-2594-4ad5-beb4-f0a226fbf1a9 1b4ca27a-2c3e-4c26-a9e2-a8dd1248ed20 48ee0ad6-a7c5-4e43-a532-7a3a89ea3263 9f08b57b-07c3-43fa-b5cb-99f342fda9f5 42bb8db5-3a68-4ff0-9ca9-95deac81e884 e97310e4-5e38-4aa3-9af1-956a5bfe6cd2 fc6561ff-c955-4063-8b64-c675341cfb66 1e3945f6-cec3-429a-95ba-c6009323f50c c7d53211-3406-4d3b-96af-afaa686cedb4 97fef551-34bd-4181-9250-5e894c45b957 ec4fda79-e7f3-40ca-a38f-457d864f78b6 cf89454a-0a78-46b8-9111-ec65a623f3cc 41c46455-a82c-4c9b-bed8-95562aac0f33 ec639d21-9095-4555-b814-eabd4561e156 ae295695-2d1f-412b-87f5-d8c85de02e76 a871a0d7-cd13-4837-b268-acacf105b498 874dbc22-f1f5-40f0-ae7c-ed93825a49c4 8ba345b0-53e1-41bb-b5d6-83b9c8af76c2 a79fba86-7a33-42a4-87c5-83841049116c ed771a86-58ed-4b2b-a3ec-d2a7e4018408 a2038e71-6520-4f7b-ac3b-f3f2098bc6ee 2c877447-a13b-4979-b65a-b6445e11e532 fbb0b1e3-590c-4565-bac4-d7a57d5d7fc5 11fcc950-0054-4b92-bc08-1a2b928d365d 1e9000f5-7c48-4425-8893-a1694b9c2171 b02266ff-7fdc-41de-830e-540d643d9122 f69fa372-e7c9-4dc6-9d91-bc7df2464563 4d329631-c88c-43bc-92d5-053afb003038 585b2887-2fd9-4091-bfbd-bde4b0a136d6 6d36d9e9-5eff-4e3a-8c63-02a017569a85 be6b66f6-2f68-491e-84fe-2c27367e4301 5902fd47-4e34-4a26-b292-50f705b81ce9 1fd640c7-4a0a-4b4a-b15c-9a6b1d9218e6 dec48953-ae14-423c-9798-827c7897ee20 d141695d-cf19-412b-8cb2-13fe38d3abed ced48975-2599-40cb-80aa-3bd0491d5b32 7993c935-713c-4fd9-8ddb-3530200f59a8 9a164bc4-a1ba-4ac6-b39e-477d7bce7210 0523f491-e320-4e31-b86e-eaec8b8157e7 2475b6b4-c893-4b82-9807-c2d0b4f162eb 95134d98-0723-471b-a92b-4a3c7b2402af 5dce43f2-b2cc-4aa0-a73d-f870f9579283 6dd34caf-929b-408a-9f0c-963a9f53ded1 5b6361d6-a126-4528-ae82-417edd5ce1ef da80ab7f-a155-4d97-adcd-dee94ff3711e ce588cc2-196f-4fc7-9cfd-a0b98c7e4cd6 36a86340-24ba-4741-a85f-01ca102e6fb3 6cc8e7c3-92c7-47d1-9df0-41d55540791b 846aba5d-e91c-4329-a341-561d6da0aee5 87a8b8ca-90b0-4590-8f55-5d40b3fb7878 b94ece5e-3638-4809-8753-40b0b4851972 81df938b-824c-410f-8f58-9c145ca6af47 c56fdd3b-39e2-490d-b94a-c80f8d4fce89 5b5a4dc2-3cdf-42f3-b486-6e1f094ec50d 8487611b-dd24-4a7d-997d-ac243b4f96cc b0c3081e-a04d-42df-b793-2eb55698148f ea600072-c6cb-4e84-a277-bd15fb116ffc 065373e2-8d82-4094-b325-c9b26d7c2c02 75b0d17a-3e2a-4675-ac61-b9a2f6f272cf b6f93901-3af2-46a5-b7ad-f35fff5fce4f 619758b0-a3f2-4ca7-97fa-a24b60e77907 8423a524-c086-4738-98aa-512fa54d0d90 a638bb07-5344-4e75-8435-436dc3bcb1db b3c8919c-2e04-4c13-b1b9-85bc87d98059 486a371d-826b-4824-a9e9-60f653562b4c d77fa49a-3123-4510-bbe9-bf1902e9b738 1b0b5161-6dc0-42a3-a2a7-90ed9447c955 ff60414f-5645-493b-9433-3ac8ddc032e4 be2bbf6f-00d4-4220-8136-3b0333be9e89 2fbcd332-5e57-45c9-9f2a-0cfb78ca7668 5a963ddb-1c91-46e6-8de6-db32fd957c03 cbfa572c-cd5c-4903-892b-cfc4e313bcac d7888a6f-6adf-4a4b-9a29-736e6b657455 3ffc9efd-237e-4266-ad0c-c83aa2a606d5 894fe91a-e99d-42c2-847a-9c85a614d113 987f63d8-0951-4374-8977-93873c8688be 3d2818eb-5c1a-4d8e-93ce-a65ec2e5e943 1086acdb-b914-4611-82aa-8d97b72ef4cc dba65eea-d0ba-4214-874a-faf35316dae1 9a227080-348d-4975-8291-56ed79250903 e62d4dd2-07cc-4241-918d-9cff018815cd c7e1f36d-4aa3-45c2-8a8c-3642d5af90fb 84fa74cb-b55d-4f7b-8b54-82fe94dffb6c cd38ab48-6b6e-4323-b5d3-7de992e74bd7 9631b38d-dcb3-4bfb-a478-13491dec4eef 0b3f9b25-51f2-4ce4-9e5e-92acaa81e4e2 730dc4ee-2a77-4b19-afdb-e132a0de4273 d65a289c-7727-4bd5-b4b4-afe57ae67a8c 327138b6-63f5-4ee4-88f4-806d9e320041 0bfa1650-2bfa-4c5d-b8f0-e8a02740225a ce85d91f-42f9-452b-92be-2dcb6b3d1077 6460cb20-d3a3-46a9-84fb-a8f04319ad9c 1feb75ed-3ee3-47ac-8359-80667445f263 7814140e-43c9-4bc8-88d2-152775ac4c68 d2c47769-c32d-4d86-9cd7-c6bb0d84bde4 fd4beed8-f99e-4783-a0c8-21ce5b2880dc cdf233d7-8344-417e-bc6d-b2f471508a2f b18365b3-27c0-48b0-b344-50ae214224dc 44bc5172-dc8d-4540-bfa8-68aa03ef1003 57cf8e98-2f78-42fb-8ec8-dc4abb52689e 6d91fb65-4ca8-45f4-bcda-f959b006f6a3 2000a03b-b4a9-42f4-8e9b-690335cd46dd 7cc193cd-c26a-47cd-b648-f7e902339996 b79d69ad-134e-4661-ad54-7914b17c915b 247c64e1-d89d-48f7-85f9-0a3ae7c5e8d7 05dc2cb4-d8d1-413f-98ad-bb4d85559326 69cd9f51-5267-43fb-8f6f-2645612b313b 5d0f283d-1744-4ed5-94a3-f797619cc16e 69948c81-ab5a-4ea2-b66e-a7996ebfad22 fc6e1333-6b28-4a13-a07d-d4edcc2201c3 c6865c1f-79fc-40e9-b49a-2f215afb5819 bfa3580d-cf2f-4c91-ad97-289be1a67096 6267df5d-b4da-46ee-8da7-0e243bd304e0 9c24358c-9bbf-472b-8c45-ae0339f56072 0633623d-c128-44a5-b972-8264faf01ce1 8c1e79e3-3ab3-40d4-b122-82eefca117c9 f16592d8-204d-4c5b-97d8-933c207d012d 11b6d4d1-65a0-466b-854b-9f23b334fac1 4a841907-84a1-4e86-a3a5-9ebce12c0cfe 1fccf642-5d7f-425b-93c0-860412f6a779 ef886b71-b273-4c71-9880-1ac3793555a7 693f9f75-45b9-4714-87c7-111f7ef04ab5 37241aca-8f5b-4bc9-9da8-3c31872b1510 eb3c53e4-1167-4f6e-89a7-714851a46a21 e701ee95-f810-4c5b-93b7-6facfccea1cd 77c8a455-478d-46c0-9534-c34932caa63f d1ef6f89-5911-4cdf-9425-8dcdb70c0c49 a9001b61-7c06-4b09-ba71-0265099af704 6cecdb28-191a-4a12-8030-f217e36be26c 6fbd9a1a-4d6b-41fe-8ab8-28afe97ff57d f13b119a-5bbb-412f-aca6-7ba05f52afce 99e1d203-9a28-4aea-9177-fac4b3e3e9c3 70232cd9-689a-4bcf-b438-2abf3849c53b c9f0d0fa-86f9-427a-a21d-cb377712ad80 f2c5bd3c-2cd8-4b31-9d04-faad3d175514 a5723cc9-a199-4232-bf88-1ff70cf65a9f 977cf8c6-f7ca-4596-8551-031b28d8c700 f9f83399-b408-4ca6-b1f7-a22eb3821a61 546120a3-2025-47f7-b5d8-4f47c57a3205 ca6f3a56-aafb-4155-81c9-01432a93adf3 abdc832b-a09e-4efa-8bcc-886c674d3cab a6931dc4-009f-4db9-90b7-bd8c5200b390 390fcd34-f033-4b2c-9eff-c93cb14a808a d2f0be53-347c-4064-808d-1ff2066f9893 f3cb4811-da14-4213-8c8d-73876f0ef89a b90f376d-8fa4-4132-8d82-64194134ce9c dddc9050-6a35-4a0d-a001-9e7ee97c1df8 df411033-7f99-473a-a610-889075df3dd9 bed153ee-aa6b-4779-b9dc-e602789ff011 d63f9854-9188-4681-9e22-98e355d0191e 92388997-c4c1-4c4b-be65-d45ca1ff005c 8d7b510b-19bd-4f1b-912d-15942aa665d7 b62f8123-e05c-4da8-a127-3b3f4090577e 2c8d777f-2054-4675-b5c0-27b80671c14f ae9a80ac-42c7-4de0-8c2e-0334dd062bac d93d8195-a1b1-42cf-9d78-34a8c57d9bee a19a81b0-a11d-4141-a226-db7553d79454 12202b6f-521e-4abe-bdba-2132a5619289 410d8aa3-395b-41b5-9521-aff2c77ff784 62770432-aa1c-4b1f-a2f5-34f74da83988 cb9d57b6-9506-4c0f-a8eb-84caf20180b0 b05979fb-1560-453a-9a1a-69f4987b12af 2fad1b0a-524a-409c-911a-3906a1207698 91629a2d-3586-45b1-a664-3065303d6366 169cb2e9-5cdd-432c-bb0d-1a0b67dbe7f1 16b93b44-0cc0-4783-9587-556b88bac1eb 4ed6795d-8a2e-4ca0-aa16-356925f0ea1d 68505821-8f97-451b-9424-761122db43d6 7ac95cb0-e398-42d7-9cc9-4a77dde3fb47 05416294-a3db-44cc-9c25-9418bb7e1ffb 4312ad6f-28b8-4efa-a47d-9c29764512f9 e03ead1c-e6c0-47f1-837d-a534c6a5f220 1c205059-d188-4417-8eca-a649de18f931 5463f8cc-f75e-45d8-917d-64a8323b4eef ec41aa1f-02a4-427b-995f-a0cba79802ed 617a51d1-92ed-4cc2-a787-c1c8c1fe58b7 ba89d1b6-f5d7-4616-8087-8616c36979b8 98376883-4cdc-430e-8dab-c9b3a59474ba f6429b7b-dc7c-456e-a929-1cccd3cc09d1 ab44938a-52fa-4c85-bd81-57ed137e3393 013aba42-2d23-48bf-97d9-9630876b802f 8a6d9475-51b1-4335-a3c7-61b132703011 a6b568e1-d52d-49c1-bef1-1d8abb8e5a77 35cf8a51-0703-4d81-94b4-3565014c69bf c5176cad-36c5-4757-803a-07a465b2fd29 e5dd469d-ea64-4184-95e8-ea44ee29ced1 f810a19f-fa2e-4f03-a84d-b3734e7e87c2 d416705b-800f-4281-871f-b0e1707cf007 bfbe9955-11d7-4035-9af1-1fbdb5691e7b a1ffc62f-1640-4131-b417-58cc18cdd2c5 35ac32a8-48b6-4ebb-90c7-287637a8fcca 91d6949b-29fe-4a89-b7e2-8012829544da e97ec956-5b86-414b-813d-b2662a24fc74 00037574-956a-4ff7-b1a7-8aa6e0ea64ed 6f67c241-ec96-44fc-a51b-3c6bce4ef133 adc88bd8-c5e0-462b-ab55-deb6a1403cc8 edbb2768-f332-40a5-b770-b0520bb73d68 9a93ff7c-7acf-4ea5-9497-9623180ef771 ff4778db-8073-4e2d-ac70-8d82693a18c2 372cdde2-0fe8-4ce0-a5af-99c00c687ae9 8165dfa9-8d4d-4d7b-9b7f-a233d463cf95 1842f447-cac1-41fd-95f9-75122cbf8ecd 79419733-92ff-41f0-b766-3c8021069746 209a005f-7044-4d30-afe4-de4d5b133408 80f33b47-7bb4-4615-a991-1b917c5c4d56 ae942644-6915-49d8-8653-50afa0915e6f 37d613ed-1e6c-4cde-9779-5ff827dbeba2 b992024a-5516-4418-910a-63f62e522607 4e00ada3-88d8-4ef3-a694-4ce2cb835c33 dcdfc02c-8b75-4e3f-963c-e6fc28b5ba54 44b3b7dd-d7fa-4c34-9f06-247e75efb733 5440c81b-bace-41fb-b65b-b23ff9eba5cd 9e40e7be-59dd-46c4-9689-ac5d464b0162 ae76b274-62f5-4a40-97cf-55388f97e504 fc426ac1-6ce9-4dc7-bc56-4eb2fae2ad6f 6a815c5b-8d35-48c2-9a65-fadb403ba742 d71edfda-a0a6-4d8f-a971-2131964cdebe 41d9b44c-d63a-4089-b56d-31cf412d641e 27246f7d-f639-4fca-b230-fda272f9e18c c9cfdc4b-76fc-4a84-960f-f767612e5a22 a6c2df65-86ab-42f7-9d98-86be0483215d ec29b20c-5ea5-4fbf-a7db-8923f6757a8e 8e8c5aae-25e0-4b11-a8ed-6e6ef27a379c f8d531b9-2dee-4eb4-b96c-2ea9d5ca776d 388b12c9-bd3f-492e-9b27-0f0719369b43 855e5832-bb3e-4f3c-8153-0b82dde50a26 308d6dfe-d864-4423-96a0-77d181f08bd6 7a137129-8ad0-4020-bf29-ea0377129666 55d3a34b-0a7b-45ff-8a03-1ad1ad5a3ad8 9cc3d67d-6658-47e8-8c2c-a886043d14ef b336afaa-1bb2-4b4f-99a3-8a7b720701b9 d585d10b-e8dd-45d9-932c-831a6412375a 3d906f27-a64f-40e4-a4e6-5fc897d3c3e5 ede0655d-8766-4517-a994-c472f9bb7316 96aeebe3-4cf6-42c7-a17b-b43a8a3848d1 82ea060a-e03a-493d-8eb4-9c131f662b58 8771757f-8464-4ae8-ab46-635c9ab31a84 62e2dce0-1b4a-470c-8dc4-b7f88c3f7a0f fa6ae510-0fa7-488e-adaa-1548a01b1578 665f0255-ec55-47fb-bbdc-02e19095ff17 1a098223-ef5d-4231-860c-977c83b6e564 5693591c-d5b2-4f74-9046-61755c6277f5 edb1214f-4fcf-47fc-99f5-241de264f5e4 ecbc9573-e190-460d-a264-4d8e58a3089e af4c707c-ac6a-45e1-8f2c-17a8cfb4118c d3de86c3-4e13-4078-b3c9-0d1ab636082c 67f614ab-9a9a-4de4-bea8-fb608aad677a c19ca2ca-18a6-4b2a-b4f9-14938d31432d 73bc555b-67d0-48ba-995d-2283b620c594 9fa75027-f9ca-4e3b-8aa8-b77e786ef22c 8c577c1d-97b7-412c-93f6-d52ef3930787 14deae07-ec8e-4640-b625-917094832621 e921c8e9-74ed-4d7b-b19e-6e7860978675 53a55a4e-fa42-482c-bcb9-9d9bb098c749 56707147-701a-4652-b16e-3dd3979efd38 bde91533-6233-4e64-a849-7020dc41e0be efc546c1-763d-4f83-83db-6d5bb2a8fb7b 2b8c9f76-3a54-4920-b84a-3ca42eed4522 6160e825-fd39-4ba4-a78e-665c9dd59282 de9adce1-8439-4a1e-b873-608fa5fdde03 1abf7fcb-3409-4a07-b510-ddf5367c9516 f2771d3e-257e-4c27-8393-452d9953f77b 2b8bf013-5804-4c99-ae8c-66a465085293 45bb6c75-a432-40f4-8fe3-daded43672f7 83c2584b-7f04-49f1-88ad-861cf080d921 d073c1d5-c05c-4b7c-9394-75a413b7bc40 62708f29-c34b-4418-b1fd-bb2e84534a24 4115ca02-65b1-4ad9-9cba-091ccfcf1015 b0b97348-b794-43a7-bac7-1f29f3ef70f8 fcaccade-ff86-4446-93e2-9d6f02a952db 3857dacb-6ca8-4abe-bf01-2ebe13fd134b deb4fd1f-fb58-483f-9cae-771d38914ed7 00f6cf9f-672e-45bc-813e-3baac6db80b1 cac84f03-66ec-42b6-94fc-164271cec71d 51f58d86-b739-4b23-8fcd-002f6fd38101 9c3e5767-d610-4c77-bf9e-4ee34f6aa9c7 c7aa85d0-16a2-4c96-88c0-db4e14839b8d 829ff24c-4c17-48e0-a8ed-a582eac5c749 02150d75-1f97-4bf7-9634-a77249ff4eb5 1ce61509-8b51-43cd-88d7-2777d7f254e3 c18a1535-aabc-4db3-adcd-30f9e90196ae d3029342-312a-466c-8c08-6d1278e63e8c 6e8d7eb3-586a-48ca-8c91-8204b7dfe9ee c43bc9dc-5aeb-4be0-a88e-b8715fe3c05d e7640b15-dfc5-4ce0-96aa-f724a8df34de 92d10913-b605-437e-83e4-d586138138a5 08faaeec-0379-403d-9a4b-69aca74cc27e 193967e7-7f87-46ed-8d06-00b8e379947f 0c97af5b-09de-4f5f-ab46-312995579587 74b552e4-ac2c-43db-a801-ed097808b671 ef49231b-33dc-48d5-a165-6845297d1c48 d673c0a6-ae5b-4217-8891-759a2a6f0b29 90fc94e2-499e-4a82-ad26-167bb86ec663 4a0fa65e-85eb-4b65-821b-13f3ab9a3b29 1a40a8cf-fb58-4b7f-9bbb-5b920f07e4ef d96247c9-4240-411b-8344-c20e7b8819fb cfc6d38e-a2c0-4e44-bb4b-2179685e7fac 94878604-da6a-46ba-9ae7-f66e413c5954 a8256474-44c9-45b9-92e3-1ee6298aa8b3 e62e2770-bce2-497b-929c-219359ed1257 efa2261c-a8d9-4dc0-896a-0ce0fd6f0043 21c3286d-125e-403b-8acb-9b88acce941c bbfbb09a-7f04-4e7c-b684-2b118904a6e2 22942894-16cf-40b5-b4bf-c6c21f9c12ae b5301433-d763-4f12-88bd-a390b60c6046 f064bc92-0337-41cb-8830-edef1f79af53 e13e3b3f-d72c-44fb-92ce-af76957e031d 159aab0a-41d9-43a8-a284-20465ebbe408 b610175d-c079-424b-89f8-eedab24163f5 9836d3c7-8b50-4884-a8d2-209390aa5a8f ffa64012-1667-40c1-a190-3c378c84fc64 4c39533d-35c7-436b-b029-04134529b107 0334a66c-347e-4272-8d9c-009d71ad715b 7b793b70-df18-4d05-9977-28171fe6e8e8 c8b48570-b78b-41cb-8392-0725b30eff37 81e80fa6-e08c-4c5a-a6d0-4ca34c5ecde3 eb0b7f41-8801-4d5c-8736-47837e5e7d7c b9203ffb-6bd6-4a22-877e-3f55b9e41249 94b44c08-ae03-40e4-b356-f935071bbd9d 411b3fe8-2863-48f1-a20d-cae7a4febe2d cb5984b8-e8f4-47e9-af83-62eb808fa307 060937e0-0354-410f-af62-2674645d9e8d 9f876b5f-b750-4590-b32f-e95ad9a6d76a d80f3456-3dfe-4938-aca7-eb8704744b94 515b1314-9f84-4dfa-94e8-1da03ed19bea 9dab1b2c-9a82-4565-a7ba-a069aa284744 e7e942a9-6882-40e5-9e33-1b9f1ce17b65 91532d6f-a319-4817-92eb-ca901fea76d5 73646b5f-635a-407c-b36a-814de207ba75 2721f2ad-5928-47c5-9f2c-ff17d8a68a02 95e7c781-8b34-435f-8bbe-5f518693283c 97100e8f-a372-4ec3-8418-d7d32aceceae dd8734a9-eeea-499c-8567-77bf1ab0a0b6 0c3ab33b-8bcc-4976-b014-edce84956b20 a4e6be59-fbe7-41c3-a626-f3bc07684c95 5a3db05a-ff34-4681-893d-a40e9e302214 cdeafa83-e414-4bd1-b404-f742cafff1da 169f907d-6dfb-4424-aa92-b45992b0fb69 987b932b-d0db-4a3c-9fd8-4600c9816a26 2180cc43-65a4-473b-a2e1-778c263a162b d3ec09a5-27ef-444b-9a5c-a9aa46678dd6 77f0231a-47fe-4bdc-b5ec-0e84f6317f1a 60842dce-7cf8-420d-b3f8-a960516c43ae b9b93013-c7ce-44d5-a2d0-88909d114473 33042d6f-67f0-4a7b-8394-c9f35a92ef15 aea24976-528e-4c3c-81e8-81410108f8f0 4a42d428-3ef3-4e13-afc5-8a44c7bf2a96 b034ec07-4a62-4716-a82d-0c13f157bdae 2c007a73-3de5-4975-80c0-dd199acfb36c 2706bfda-e760-4a8d-808c-f1086c5a43d9 ef429c83-dc98-4aca-8550-c30bffea3876 f4df402d-3256-4fd0-9112-27342ab561c1 93a89535-fcdf-426a-8546-6d8ec9cf4288 fd46a4f6-d4ab-4518-a6f3-9789fba600e3 2b6ea10b-4d2d-4656-ae50-c79c8549396c f0301e74-03ac-4365-90d0-7e34f6caab3c fddea63c-726d-44fa-a4c0-05ca895728f7 b86db2b4-eac2-4ef9-9c7f-d558982fefd3 e593e870-dcfc-45e8-8c0a-8568a487c0a4 386b2aa7-7941-4331-ba04-015ba6dd96dd 9ef260ca-64bc-4bad-807d-cdc639e34f2a 8e5cefda-4312-4133-8c3d-bf5ea6a21988 1c3e410f-2869-4db5-b046-64dbc5dbc03b 40e61a90-f4da-4178-bec6-95c70e83f615 bada151a-f164-410c-bc99-9296264e6a95 5b6952c2-7964-44b9-9636-169714f283c2 6f26aa35-42ce-479f-8e15-074ead064e83 2f4656ef-0efb-452c-baea-f7de2bc49b25 790a9b72-d4d9-4a60-b773-1b0690f0e008 e85189cb-bfab-453a-a83f-1aa4342c74d8 5bb3b4a4-e0b8-472a-ba7c-5102dd6aed82 70b894d7-9c1f-4874-984d-d7d0e8865926 45ab6f25-4211-453d-9809-bc3799326b68 4f33593a-99b0-4112-982c-0c7754d5267e e29ae777-dbed-4c36-bcba-7418e1c3cad6 ccdf111c-cd17-4e82-8c5a-f267ff12df3f dd5be798-3933-490b-b651-c569f6edc9f7 6fa088da-e1d0-422f-bc53-58d6d8300fa9 71e8fd03-0491-4784-bdd3-62b2090f5b30 e599a4a3-5cc3-498a-9981-0751daa9b59b 508057ba-3463-43ad-948f-d3e9dd12b4fd 7f111696-eab9-4420-9ab4-2338a05e4ce5 8fff784e-f3d7-40bb-8bfc-3f6c840c943c 139b9334-5f8d-4391-92af-83e8d6e49bac 29783427-e3bf-44d8-8804-c4aa360d0306 0a5f7d9f-9aed-4aeb-9cdd-f0b4319b5bd2 0770b820-61e3-40c1-a559-84411b93b984 0a98f08b-6458-4ec4-8b17-e0afabb5f6bf c78cbc79-c410-4ac8-b9ad-5b0aee8b0caf 38c8aede-f94d-4fc0-a688-c8d8b6b5a83f 4739635a-d2a2-4e1c-a50a-50a8131228d7 4163cd08-78c5-4a63-b250-4873e86979a3 c7917756-bb45-492f-a79c-a04b907bed33 adf01613-b194-4887-ad63-fcf43f20fa83 91b62a5e-ac90-4f5a-b7a0-1cd4fd66d1a7 78340322-82f9-4f8e-ac46-5d8e4db05695 3ac6a0af-3625-472c-b8a1-2d1e48db0640 0b7df6ba-7dc6-4f1e-b801-305f89bbfd48 da49c15e-5e7e-4f7d-a624-9a781034864b eb4e7652-8057-4e13-a7fc-d12ac542f1ff 75d2da11-400a-499a-8930-b3fac5a394fe 15fa3e3b-758b-4010-9016-dedaa56715eb dbc5e3e5-8ea1-42c6-b1a4-dda40333f029 3ff3991b-ae2e-437d-8b5c-962228dff509 2a6b0f96-882d-48bf-ae48-090be10b3a55 005cfee6-81d4-4f55-9148-2d1d5b9f5c38 9c8df5d3-9519-4c41-a189-3ff0c8af1491 1f64d929-fcb9-4188-83e9-0a1c4c11f4c8 3a883a45-29f5-4b58-bcc6-3c9bdf7c9dc7 eeed2284-c087-4777-9a1a-c1cedef6cc26 ff68742c-9b5f-4dfd-a79c-672ba3a06073 ffd83378-3d4d-47b3-8631-31c1cc66a01c 64007162-a6a5-46ce-9779-3a0be7c231ca be81ec1f-0910-44ec-82ee-fd82c32475ae 7ed13d50-d92b-453c-bbf2-a6de6ab8fadd 0726c5e3-737a-4140-8846-498b16271035 a437902b-1c8d-4cff-b9c1-8f8b7f3ca05a c950ddfe-7453-49e3-b2f6-1f452f5e0860 33cffc12-60ff-4f38-bff7-19bbdb7a859c df048b69-91f9-4944-be00-f5e952d67a4e 3acaa789-e170-4ab2-9643-eb130e89f1f0 5f47e1bf-8c5d-4989-8345-d229f422aadd eab18af3-2867-4b6d-a36c-668aab06e8bb bf3854c6-f760-4472-aad7-b6c3adf105bf 91d8d74a-26e4-4b6f-8e7d-662c40cb4003 38795a8d-066b-4eec-a4a4-bfbf743bc07c 60869860-974a-43a0-8967-7a3f4144d27e af3b1f81-ab5c-46b4-ace7-c62fdddb92a6 cbb21e41-c03d-48f1-8d02-5d14f4ad40e7 820db46e-0ddd-4c5b-b5d0-1360abfad5d9 c59bf96a-e356-48a7-8251-95ccdb982eb0 98cb4911-caaf-4d9c-9bfa-5ac2784d1d1b 5cd01edc-bfc5-4224-a09d-1e3a9f7e842b 5ce562fa-b870-4042-92e4-a7e46f493b11 ae08bec1-615b-4ee9-b48c-2730e8ce1bbb da54f9b0-959e-4bef-b928-ae1fe1180175 4dc18c0b-a013-4023-a0d5-c79f70afc0f4 2d07d5c3-c194-46c3-bb74-c7e21b6f0bbc 2d195dfb-9ea0-4850-96b5-97dff13ac22d 98a05b75-076d-4a56-b2c8-4ea2f9c2ca9a 5f5ced4c-44c9-443f-9229-ba81a16b7b7f eee89fd2-d238-4477-833b-ec00b81bca5b 42f38e10-04af-4c01-9949-cf5b9fad0f94 60f92ff0-1e11-4ca0-b5e6-54e9e79cd56a f55657bc-3a98-46bc-b917-9c07bcd87376 d8d0d1e6-1063-4aaa-b6c6-6e053cc47b03 5a6b9b63-f085-4108-8c18-1b54e66b3a4f cad5db5b-0905-4285-ad37-fb85180aa1e5 b2f102a0-d38c-42fd-9ec6-3d0b4029496a c85465b1-d21a-4686-8f07-29c532892aed 794f40e5-95ab-47c6-913b-5f70480e3b37 d39e22cf-ed3d-49b8-82a4-7beec971c3fc 4ba99502-ba87-4c1f-aa28-ccbe6e92eafd 1c5e9871-0785-4da6-bc93-3de75750bd71 ad2932c0-b6d5-4806-ab3d-289d88315ab5 1adcb011-0ae7-4e05-b8cb-5898e6cdb02d 8db36163-42f8-4537-ab2b-3df9cc9b2c8e 090c56ee-821b-4cc6-a097-460c9c1c3d81 4d154f16-7886-4ed0-a9a4-99180ae0ba58 9b9a03d9-004d-43b8-b9f9-e0fd4931b789 b97169e0-fa5f-4c8f-811c-cc85e8ff98ac 801b229f-51cc-483d-84b3-abace6ff4787 ed8c2f44-d99b-419d-957f-301480386313 8b49e48c-1dea-40a3-b0d7-b59bdcfa2836 3274953f-dbe7-4d12-ac3d-93cc7ebf3de5 1e06045d-6e94-4de6-ad77-ca621a029589 17bfdbc5-19cf-4536-9b52-80f488ba2bac bf8f1f05-a6f1-4ab5-ac0a-fa645bf3a78d d2f06a21-3564-41c2-9232-7b4c8d226e43 ced29133-ac32-4f6a-9e58-2cfd1058ff60 bf7fb7cf-e07e-47a8-aa3e-2f5cace85be0 52a380eb-fded-4f51-a6bf-1df2ee78e3a8 7dbbc822-ef2c-41f8-b52e-a3d1cf00f30e 09e3e8a4-d2cf-4aa2-a7d6-c30d1b8c3498 5e2cdedd-661b-481c-92b1-831870ea9068 587f6c5f-643f-4964-b63a-b04bfb710e75 b9938054-d908-4aef-9083-b06c2c082233 89024c89-6aa7-41d4-ae30-10807dc0e08c 2899c3bc-05c1-4a89-b546-6c46650ce5cb cf022e7e-d522-44cf-aa11-af3a535c4c37 2942fbb6-5da1-40d6-94ab-94811a5882b5 c8c9e71d-2805-4201-abea-2cba5e5948ab 52586931-9efa-4967-9cd7-c4f3df4ca321 c72d5785-de14-4821-9d65-93a2e89184a9 cb26b74e-fb76-4443-9a23-93b40bc731ae 8230b1ba-e744-4c0d-8fbe-6ad0c1662e32 fd3466fd-371a-45ec-b524-6eeb17998666 bc63fcf5-8c38-4644-9436-6e1974cd0b5d 41ae81db-2b81-4266-a9b8-fc250125b533 12309d5b-86f0-4a3e-bb8a-177a64c2ebd4 5d5356b7-7bed-4452-881b-e99f49578535 03ffa144-be74-4de0-a2ac-e6880aad5c06 44208797-31ff-486d-8e2e-c0e549aaf428 28e5efb0-3989-4817-8366-2b15ed260afb 92693c0e-0fce-40b6-9c51-3a71d65fd9ca 133cc8c1-8da5-4405-bab9-9e628df96d32 f3e4edeb-9074-45a5-901e-85a5fb2dc170 b47bc7c6-9ea8-4c2c-b5f7-f93035d5b8fc 6ac63c86-8fc7-4b68-adef-1a40911e70e1 0963447f-e6d5-4247-acac-3f254ef557ff c5009b50-f18a-4d7c-a0b8-1183c41b9546 a939dace-0947-4899-9662-20c46ff77de5 4bac6b38-587c-4a23-923b-3bd96a23269c 9508b7de-b24b-4924-8b2e-0d237c90fec9 281825b0-aa8e-4416-89be-f231bdf17bf1 8b175089-f2c3-4cac-a86f-7175fd7ee392 a91d2374-2ce0-403b-b301-1501d8be3eea be2f84b3-2df5-400e-a70a-a8029b4eee05 76cb7658-3cf6-4fac-b73c-d7c1442caa74 261718e5-c13f-40ec-a821-99ffd9c3c919 26c26439-32c2-4f64-ba4f-a9aa590b0cfa 664c8934-7777-4342-af0e-fb501cfc7fe9 83a3c056-c806-46f3-ad49-3322b4a03bd3 40a305bc-ae21-4dee-92ef-8e37e02944c4 4b936fad-eb31-40b8-a842-9a2f35f89a41 7ac69cb6-162a-4c4f-9bb4-1f817c8290b5 b214ac8c-e5ef-4db2-a665-28e256611c68 1edb71fe-deae-40a9-95b3-0a6e4ec7d6f0 a691abf0-4774-4f7f-9b7a-7bf158b9ec65 ce474d74-caf6-455d-92e1-ba10e24d2414 1ca67367-9d51-4e4b-bb0f-d55a0f249ac3 b80570bb-91f6-4b6f-bc54-9b0b3405c51a e35ddb31-a8ab-42c7-bc4c-316873e35b57 472910a6-bbf4-4d04-8d7d-3626d5748cbb 9af602e9-c8fe-4434-83e7-888eb12f0d46 81e0ff5f-e6b5-4671-a85a-a9882451a8fd 6622726a-66d2-43c8-a091-725aa81db217 3df9550d-0546-4d39-9968-e252eec8e2a1 9cb0a503-64bf-4b72-ba1d-1b7ac5c88513 3df68163-fb86-4e7f-9b57-f3fbf916a0e9 04a59ede-f682-4719-be82-99198a1f2368 79cabefe-d084-4d88-b5d8-ab2f271f9ca3 e0bcb044-e6d0-436f-a24c-4178cf9b6c7b 003bb4f1-fd28-49c2-9625-34dcac4c3b0a 54059cb0-4c32-4779-a91d-b9571b205ab1 6d02a9d7-07b0-4123-88b0-0e24d49a9000 12c0b36f-9758-4c38-9f18-90db696fe469 0e240094-ded6-4478-acfd-28de52a44261 0062fd92-8901-450b-967a-25f4d0d5f833 b8b74242-3274-4e30-9934-e22894c09269 78895622-1995-4c73-bba9-c4f5e761ef4f e2ae7cac-cd8e-4703-8db1-6727f24e9fa9 1dcf3d7a-d824-4ff4-887f-0d3bb4b18b64 642e461a-8344-40b7-864f-a8be3ff5e5c9 2a1ab452-27a3-486b-9bb1-a1cefb92d830 fd3ad056-6779-4835-b4cd-85698b81f09a 1a69b409-bda0-4b0d-ab98-569ccb28c146 54749ae2-be05-47c7-a6a7-31730bbcac1f 58b3498f-0a5a-47e9-ac8d-2b8acbb0872d 112c6a53-1ce4-49c9-a71c-3793fed802a9 9bb8a22e-538c-4a55-904a-98474ac25191 04bee1cd-e9ea-4502-90a9-d8aea17455ee 4ec4ee99-db48-4e42-9573-d9aa657c985c 3d43a1bf-b3a7-4c97-b05d-9ea4bfff642d 2910dc20-ab77-43f0-8dd7-b4242e289434 a7905345-6d65-43ff-a5d1-f2ad4358e7b1 088bf747-cc53-4f71-abdf-95df438cba92 be3e3f90-62f5-4076-ae0a-5b61e69e4424 e2399b9c-de46-42ba-a799-ebdbe75ae21a 32f6528d-3946-4612-bd6f-96686c6c69ef c9750465-bea9-4b9b-ae76-8b4aa067af6f 7fa8ddf0-0e74-4786-acdc-9d9078b3b751 f53ee46d-126f-418f-9ff2-c8308d024fb1 c4dd5400-f8d0-4dd4-89d9-e047cb76d496 b61eef38-c4c9-449d-8e95-653fce536942 c9458eef-4307-4639-9dd8-965e22ec4a0c 622aa757-d068-4492-abe5-73124a8b2cdf a83a79dc-3ecd-47fa-9327-cd2682d84312 27dbbac3-f271-46ac-89bf-d27535c34663 44dcc3cb-b65e-4a38-bf8d-bb1187fbcbc4 321e8c6f-1cde-4d0b-ac68-40d9c2f5fce6 a531d92c-5cda-4dd0-b817-4875f4f6508d 22bb5c45-9e5c-4b44-8ee4-9995177b07e3 fb14912d-be5c-4b24-8cca-8097a28ea22d 88b1106c-0067-4eca-90e4-3c36e92a42c3 01e7f353-85f4-4f16-9749-a22ad1bc5bcc 31808343-46d7-43aa-a919-587026933e5a 7c0c8b55-f8cf-457e-9323-dadf2f6b9433 fdc40a8a-04c0-4bc5-8172-0cea513c5eb5 fe3c6120-796b-4180-98f1-b7aea8494668 53c49456-faee-4e26-88da-6db6243f85d8 18c6da23-b2ab-4b1e-99f8-8cb79033cc45 655155a3-fe16-4881-b619-85359924c768 782112e0-bd0d-4d5e-a6f6-fb30aaf3578d 046454f2-e6a6-4e60-b48e-270d28c77a2b 7d6258dd-76d8-4acd-ae20-d6ab35e38568 96d098a0-b2dd-46f0-a983-328c2c4a74d5 6dc5db79-eb01-4985-bca0-8e99560a0836 74cd8f2b-a851-47bd-9181-954a42abaad9 1863cf5d-c1ba-42aa-84c3-a563ba68f224 3e776047-e905-433e-81c6-f4089694c242 b9e8b6e5-27cd-4645-9843-40c86877b17f 781db35d-9e4a-49bc-ab94-26a25ec33724 0f8de849-7305-42c0-9d5d-41a9b39697a4 af1835c1-79cc-42c2-a896-2a25028feb07 6dfff25e-541b-4c86-8dca-65ca1b1c5848 339b5372-c623-41a8-a9be-69e589705ed7 ac106d41-5455-4555-bcf3-42b4c24fac02 8ea3c27d-fa4d-4195-a321-57915a7ba61d b0456985-23e8-4c82-b655-f89ac494aab0 8dbd0815-f032-43a7-8dc9-0e17af2309e8 df77716f-cd5b-4193-bc6c-859aa96e6d60 3c78fb02-416a-45cf-b7f7-998a1617d29d 489e0ae3-4979-4df4-8f99-44fdaebae1c1 30320d73-ef27-4ae5-ad44-1fe2b2614ea7 e426b156-ef80-4142-8909-6133d8e09c8d 3e1e92df-71c3-4b37-ae0e-a8e6323472e9 b27e72a6-067f-4a69-8752-0077fe1a63c3 9170f46e-281a-4577-98dd-844c9801e0a3 22878238-4afd-4d3c-8c1d-187b51d88a1c c01a61f8-3f5f-4fb0-aae6-6ee4f82aef68 77c8d358-8107-47e7-bcfc-6704f8d2581d 255fecd3-d07d-47bf-8f29-4d21ea98aeb4 4beca675-198f-4bcc-9ebe-9bcb653aee3c 5282d330-0ad3-49b8-8ba0-33d4180f53db 00840c30-6203-4f8a-88c7-b22495541748 1a911f09-5e1e-47c1-b256-e23d3c67c65f 485a49a6-f7f4-4957-8e3a-a35399d41bc7 5b3e0ec1-1403-4bfa-a0da-c366bc1096e0 97acea49-ce0b-40ae-9cfd-4305d1134971 04c03639-03ee-4ff4-a7d6-5a6b5f1412ec 244747f9-da4a-4aea-9eac-e7d4dbd619da 4952fed8-e417-4feb-9b07-57391dbe6c3f 696b7325-6cbb-46cc-81a1-7f3356ad7a3a 71fd72fa-9bef-4eb4-8645-94d6a532ed80 9791f2d0-7136-468e-83a2-49265381293c 05d2f944-d83f-40fd-afba-b5410f925372 be37f8f8-2480-4715-90bc-78ae2ec174a9 0fb61cf5-1137-474c-b801-ca28afe76563 e67d3b37-e5dc-44de-8b71-e8b8cf6426b7 2598540c-d9e2-4c0a-aea4-62fa3dd592b4 394b51d0-b596-4420-9938-f596e8b81171 24aeda4f-d7a6-4209-a9f8-f0af3d26d3e8 783ba647-a64e-4ec0-b780-b2e4d1d3816a 9d9cc566-adbf-4cf8-a332-9b3ed299f370 d34a9357-7882-4042-af91-c7e40d670b56 77af8f24-24f4-4558-b65c-52cfdb0302c9 5c0449fe-0133-4f11-a3b7-52b7f77ab4dc e7dfe5b8-3d90-41ae-8cfc-a16e4ca83d48 547d762a-b66f-4f1e-9bdb-d9b87d3d58b3 37671886-b878-4b71-b4de-2592d1c9608f 4f956211-7c3a-4755-ae66-ee03f6953b32 148a7c0b-9cd3-41da-9168-ff2df0c23555 0b056c0e-d68d-4954-87b3-6a725af89798 0510d9b9-4ac2-4827-bd01-a02cafba265c 5f49f30c-9744-40c7-a379-d8c4c77425dc 9ef1bab7-3bca-49a6-a809-e32bce4764ea f58ac004-31fc-4742-a1db-0deff648719d 2175eb03-88c2-468a-98c0-a09ed5aa2182 023347b0-b81f-43d0-8a77-4e9ef87e1658 7c118ef9-2774-4625-9bbe-15608014619f 44ac4de8-9874-4692-a583-a278fa5ef1bd 96db2deb-a4ea-4e6b-af20-9ce95776b0f2 924b94bc-821a-4105-9d2f-e3c2d6188413 526db2af-845f-4f19-b5f8-24892a14fd82 2ad69b12-1b53-4351-91cd-dc004d19655f 3dfd0c40-7d21-4a50-b6f4-0fc6c2d957e2 eec5e4a5-b197-4115-b03c-c4ba11c62f45 8b737f04-aafe-4a97-8773-bba4a641b2e2 bc267bdb-56d1-4249-9d75-86b49112da7f d5619a9d-c958-4917-9c59-c1f59841367c d50f9a5d-ac00-44ff-a250-20bc8b430639 8e3146de-bcb8-4959-b237-34c7c3fd4637 294d888c-b1e4-40b0-b05f-9ebfc5953eb6 65d6fb23-926f-4bcb-af45-cd66d924390c 10b985f7-d6eb-4d99-ac82-be1c23f6e792 11b2271a-b3da-467f-a885-91b1b63c57ea 0bf5f8bf-1bd8-4e78-9f4d-6563bfaf87e4 aed72b0f-2448-428c-995d-6dcb6b80f755 92727620-d2f6-4eef-a726-b71d497a3b42 2201f539-5591-4be0-8ace-facd58194e62 ce63fd12-89d6-417c-89e7-10c9e192ee64 74b599bb-dbc7-4efe-990d-793fd3dfa1b0 b889c43c-89d8-42ff-9653-bd3a7b354e4e ad90bee8-c117-4dfc-83db-6c3862de02a6 0269622d-60ca-4fbf-81d1-1b32667e31f1 9796912c-193a-4dbb-9abc-da6077223c1e f238dad8-e979-43b9-9fe7-129aab7cc794 4fcf243e-9f63-4e7d-8b4b-fe56a7ba90ae 8b79fd00-042d-4e6e-824a-d964d5202798 b0dfe2dc-08fe-4d09-a91c-4dbe698dd20a f5336399-59e1-4cd9-9aa6-8d6b4175bee8 37132688-9540-4868-bfaf-2f1fb6dd6b17 8c2fa009-6a2c-4c0d-a914-c72330eab1d3 827cc9f1-36c5-4b38-9c17-ae6d0dc9336c 7223802f-64e5-474d-90c3-e0b9c922f4cd f186e3fd-d4be-452d-9471-11ca3967ff0b 468bf2b4-dbc7-4514-abc2-a60b334a7632 3115a1e6-3434-4ebd-9cc9-bf3c9b71f6ae de0f1592-7b1a-4657-9cf3-fc90cfe0d7a0 2fa27fb2-a4cc-462f-8637-6cb897d24e6b 00b6acbd-e23b-4d5d-b150-267f310d09ab d5331fea-d452-4498-855b-4d0fa2970c9e 283214b3-b7ad-477a-8349-937cb9a7ca88 9f65ecda-3fd3-41b3-bc62-1500f2d19d91 0bb30175-b48b-4f5e-a767-847266fe6c7b c0281307-c07d-491c-93e4-990e2c1eadda fe6e6592-4db2-4c62-9898-031aec98006a 31b462eb-d758-42b0-9a17-554671910bb2 00b66b91-6eb2-401d-b3c4-6dc421d1601a 47843a9d-818c-4f84-9edc-343103c99537 f4983c27-ecb5-40fa-820a-d12e2fda53e3 ab4e651d-533b-45fb-8d22-74706be18d0e 74b23b46-0164-4955-88cb-8b2e52e65abf 4b649ca7-a6b1-4586-927e-082fa13695c5 e659abeb-3046-43bc-ae87-b866a9b150ee a47e6672-9706-424f-bc10-5cd6ae6c38f6 ad130991-e632-42c8-925a-6989f7578e8b caa7d2d2-5570-41ec-9e72-a7b5c6ebad38 8fa34809-b7d3-491a-93bc-54205f0f7a8c 87bf4004-7562-4a54-a2c7-88dd3ad41d32 655d72a0-c09b-4bc4-bec9-6c2a442aacfc 210101e8-d0f3-4fe9-8784-7ee870441634 ea6a7195-828a-48f9-9df1-e85d8cd60df1 70da6f73-cc8f-411a-a92c-17226a2d4cf3 7b736f0a-2501-4978-85d2-02ac4f3f14f0 29cfe092-6655-4adf-a09a-d91fb26bf844 5b1707bf-d2c4-4d0f-8049-ecbb1a24c2a0 37e0f942-cb68-4584-a0d3-31e4e9028ee8 fb944285-04b4-49f8-bf9e-b1f61e5843d6 c12815a1-0f3e-4020-9202-8ed9a973e1da 5094d163-6441-45ff-990a-055e47140498 26386c8c-18d3-4641-91cd-6c8572ffc586 68c7ffdb-7c05-43e3-921e-43c3cf02b4ee 8bc45bf1-26fb-4e2d-8a9e-6f50269b71f5 8f020a8c-b044-470d-a8cc-42f6858db587 83a3eaf6-fabb-4f4b-bfe7-845e7fe142ba 89578d98-eb70-42cc-95a0-108d4d22121b e6d2c788-7d13-46a1-bdfa-0ab5e397c277 bf0b99b6-2228-413b-88ad-bd85e8442055 8928770a-70d3-45bb-b18b-4e1f51643578 88dab0b4-eaef-4b5c-a5d1-f67bd408fbed 7699600a-0123-43cd-8523-cd9ff59e278b 939612ab-e67e-4f29-89d0-a8d806c3bf9d 3dd29dd2-e755-403e-8a07-262061c7cd24 1abd8710-2d12-4c25-8249-df16a9ae36fd 84917ca6-bf2a-4965-9c9a-5c44ba352c79 d54aa802-049b-4935-b305-3f77f6a41350 57121175-0a86-4d63-ae8a-0176f1fdafff 7b0be2dd-06f0-44ca-b100-83ffa3910de6 a6a49894-54ff-4618-bbd2-d408a10dfe1e eb70cf9f-3dcb-4ee2-be68-6e14a94167b8 1a08134a-a335-4592-a772-be4e48d10657 3f75244d-966d-4307-904b-dc2ee74e7be3 2d5462ff-cb48-45bd-b052-e9666a6a5e01 712432d3-bdd1-4cce-9e78-4c688c6cf096 d45f622a-f60a-4c20-a1f3-01985e8d3eb4 f30b8a2d-a7ad-4fcf-a343-964dcecc4a2d aa972a64-235a-482f-afb1-c9bd39152c7e ee4e4a24-3ef6-4b7c-af35-af5b765325e6 c2e06093-ba6e-4ddb-beb7-292cba3af7ca bc8c732a-8ac9-411d-a1a0-1924d1269f58 95c3a43c-ce58-4478-be83-d8acc40434c1 0d4b1838-f441-42a4-bb9f-6e027faf7071 ddebc8ac-4513-4b4c-886a-b7ff169c747b d0fff79a-53a0-41bc-b01c-a521063e47d7 3a83c39f-98ef-4a0f-bfd2-861791628580 28086e5a-75f2-45e9-9542-c0bf93d18249 ab540690-2dc0-465c-9d1a-083873ef099c 78b1f605-bcf0-4af7-b94d-9c1fda4a9f52 1f3fcc5b-ad1f-4e1c-8c7d-88b7b91c8507 88aeabef-ba3f-4713-bd23-30772a5e8147 c2732e42-0cdb-4756-af09-205674e40e30 f22b57ab-f8f5-4964-9c19-95c0f5d22c21 946db7bd-cf39-411e-a930-d2fd0f45b957 a43566f5-b829-4e3d-be31-bfb450a856b3 2d64e93c-f2b2-4cc1-a862-a36fc809fb12 e121a164-9f2b-4230-96ab-1cac7273d833 39dd9c65-a4fc-4d9b-ad13-0f29ea143e53 0b88f214-08eb-4f14-8586-abd3dc2fbcd2 df6dc3a0-ad97-49a7-934a-d7c96eff295d 39005909-2856-4452-a685-4503a99a10ce 8f267873-3298-4742-a9d4-9effe7a0ba21 9f78b21f-bf7e-462c-a1ca-37e024f11981 a5dbc7f0-6a0b-480a-b603-a5219e05aaee cacb732b-a0cf-4e5e-8dd8-491e8cc30415 aff720fe-1e32-4ce5-a6c9-b99dceee95ac c932a8be-d8b8-4c41-9780-0cabd4a1be08 9c3db6e2-27f9-4eda-b94d-3b3ab3139ed3 9d03ee0f-b589-4c4c-ab34-8e8c23b1bbf4 b529414b-4c4e-4edc-810a-9a5fc0ba16fe 080ee166-02f4-43e4-bba1-d6954013a95d ba59bb3a-ce96-453d-850d-1861a58b15bd 0a6ab446-09e9-490f-979b-43619d7a1a56 62e677c3-3aed-4e0e-93c9-34ea45ba38a6 518c0139-806a-4b3c-9cca-54c139a1867a 7ae77298-351a-414a-95ca-7f230b305f7b dca77878-e756-436e-b011-a33ca42203e1 4a4040e7-5ea9-4ada-b72f-9b761ca24ab8 49141dcc-87a9-4ca6-99aa-da170624c132 06d2f6c0-ec91-4421-a3d5-7cad9586e01c 092ae51c-8419-4a3f-a573-25f7dc3389eb 9ba388dc-4bf5-4356-b6d8-dafd5bced931 547af0de-b0ef-40fa-89a1-ff0a99507109 1161762d-09e5-48f8-8794-9d8afa850cff 231c13c8-0de0-4f8f-800b-d4d62cba5432 27d46bfd-2035-49e5-9f8c-b0425f40a8f7 c821248f-ab11-41cb-8baf-1273926f9a0f b96f785f-082a-495d-98fb-a253f9f8c5c8 e7f7d178-ac3a-49b9-9399-28935b4d8404 f7f6d576-e054-443f-8139-7ef6e2e032a9 155b2f85-083b-4939-a04e-3fa4f1de16ea 8af17fac-c2d2-40c6-96f4-daf24a302bc4 c4eaf48b-944e-4122-80ae-d5c878fc421b 2eb1613f-8a12-4c69-8b7d-2065812ce759 83006ed8-7d33-489d-8d5a-36405869d1c3 4593b35a-6be9-4399-8bac-3101a8b65b2c 70f3c999-e719-431e-80bd-5e91e00379f9 40beea16-6452-4938-adec-5f3b95a758c2 40b5adb7-f6ed-4ff1-8c9a-4c459aa6ad73 54e5071d-f091-453e-b36f-1bc27e4bafcf 575cd504-c6ad-4f1d-ad40-a8d3d0a242f8 24ec27c4-5ad9-43c6-a2a1-831284b77344 e71a5a16-8d0f-4ef3-bbc6-8333580d2d75 7b591ebb-de83-40c0-99a4-595c6bf3a1a7 16e12c2f-0b1a-430c-9ed7-922c29269acd ce8fe6f3-dfde-4430-9dac-bb9d690435a6 35f0b893-cc73-4124-a2a7-b761029db2cd b44b10c1-c208-4039-a271-0060ea04f1c3 c1985f0e-6053-46fa-b543-c323b6842fa5 bc17ced7-3959-45cb-906f-6a74f5c895d6 7d258419-5610-40d4-bf5a-c36f9657adc6 5aa97ec2-d88a-48dc-8555-d8f4b983f78d 66f3ad37-55a5-4cb0-b3ed-6415f16b8606 4211dff9-7b04-46a3-bdb3-2f145a5e87f2 d927c178-db32-4629-8aa5-4c37ffe1cfcc 6868cb79-d688-4d5e-8403-90537ea94e4a e08dd108-a2a7-4ec7-a88f-045b9c407afb 73aeb344-9066-4912-a817-ac02800e9266 bf661b20-414f-4886-8f66-fd2c902728bf 6fcd69af-99fb-4be3-af39-e4405fa6e0a6 98cade8c-5c79-4b14-8202-cbc70fcf45a2 d2ebb336-ee55-4dc5-b4c1-889339bff2b4 868035cf-7a44-4ffc-8ec1-bbaefe10ee09 57b8f7b1-da8c-4e99-a985-7bca6ca298e2 b95624f8-b9ac-4465-985f-2c4fd394aa25 47d9a7fa-77a5-4524-a9f8-85c4e0814779 2498f042-2ca6-4ebf-91b5-edb6ce33910c 8de57176-fd76-42dc-865c-7e16669885fb 1ce929c6-bcff-49df-a05e-3b5fc7bc2ce2 ee2bc328-340e-4972-8639-e260c95e1081 517cdb38-8c51-4436-bb66-5e2a0de3a123 ce16ee48-fc2e-420d-aa9d-cdb785a22e5b 8f306c46-0a59-478e-b48e-b36177b1a579 24c766a1-e468-434c-974c-7eb9a18b95d7 6dcf9df3-dddb-4a4a-b553-6de96e934cab 71c1b603-87d1-49e0-a6d6-0ea24c0907b5 e8a74aeb-e76b-41bf-a8be-68a98a884d46 f24d107f-bc76-47f5-8b57-5fb3cd6ba27e 57002fb2-9a08-43e7-9929-526e4aaa69eb f430a182-291c-45e9-983d-142a6ae4c68d 9de8a4ce-ff57-495e-a283-280a9b520c9b c5ff7b36-f726-4ebf-a946-dd92d84358df 73db9759-3190-4ce2-9440-9f68ef6ac776 312fe65c-ec1c-4820-aba8-841c656c7af2 6151ad10-d32d-4aa1-b6fb-7ebc45355aea dd26f389-8121-49a0-a749-855b2a52febc d5625cb9-b476-4407-9c30-5ccfad64c384 ee924c26-6b01-4a4d-a812-b6d016556d62 367c98f7-9f89-4963-86b1-00a0ce7cd8a1 2688ada0-1b6e-4eb8-aee7-b84ecc620be5 41c5c222-b415-4611-bd7b-1eabb08bba1f 3ff76949-c2b6-40a5-9785-3dde9d185df9 3b60dd63-60d0-44f5-af29-3aea8b410b56 9a7ee9dd-b333-40fc-9efb-05c8c079d263 735804c8-a4fe-42fa-a30d-67555bb27374 dc6b0271-f52b-4f1b-bb75-717310445ca3 973f35b7-1399-4220-a2a7-e459705b44be 45fffafd-0bc9-4af3-a327-f465b2011e98 3dae70ce-fc3f-41ff-a454-d0c18b88c668 e95da7c5-8dd9-4bd1-8be7-0e9f7a8e1b80 6cc8346d-018d-4a77-9172-a21a5a7e7ec0 62c7a894-ed4c-4742-8b31-b5035471506a b5a9f977-624e-4245-b2ef-21cf699a1ce5 e0766423-f44a-42e2-8227-511a2dfc511f cdeff6f1-4a7f-43e8-b622-207b096cf97b 9f9be839-18bf-47f6-bef7-4f43e8cf6201 4d0e5a6b-102a-45b9-8648-b7083836c56b 160804c4-3fdf-41d8-bc6d-e67843291f50 f2d8ea53-0bd2-4eec-8635-86f1ea048ed2 11da27ae-c622-40a3-b60a-659eaeb58fae 8ea378ba-d26a-4cf0-9f8b-2ea7db2eb4f9 8ecb77b2-e2b8-4ab7-8fd8-1cc82a6fbd23 0293b8f8-23b0-4091-96aa-2a8ab8224f12 74c38f99-39b5-4a15-9166-0153e498c2f7 cadf11b3-2902-49ee-98dc-03d3b94cd1e4 04ce4cbd-a871-4e58-9ea6-74c0c06988b2 547f9c75-f26b-4cea-a4d9-662ab6874c85 5eb44228-0650-455f-a54f-b9198c1f4cc7 56525620-feb8-4f08-a6b1-1d52f92b1754 649b982b-e04a-4318-8889-1688b1cc0bd9 e7e3e649-3dea-449c-acb5-5bf894f8ec4b affb4791-c12c-4d1c-ac56-f0b208810934 8f374f7b-b3a1-4801-8703-e4f7b4d67c52 1f379428-dc5c-49d4-8ec1-559f8a61137a 5a55d2f5-c7ae-411f-9b9d-f90156f3ead0 097644eb-c916-4153-bbf0-14717c984801 c205d2f6-fbbb-4183-8377-7d67ea337c40 6a7d9ca6-5afc-439b-8e0e-8642c4f10689 0f98c385-3ec5-41e0-a70d-9827a41af930 55f4b91a-1c75-4903-86c8-5b1cad3b82fb 3450544b-5600-457a-a15d-1dd8b2114622 640d7d09-5520-4ae7-b654-7e86bba62736 48cf469d-9592-49a3-8f3c-fc890347324a 03b78381-e4b4-44cc-bcad-6e3fac2b809a a0147060-6ac7-4028-83d4-f37da61252fb a28d7ec3-c1fe-4395-b987-3c018481cfb8 e1703fd9-4e96-4c88-ba6f-a4cf640c54cc 0c7ee5ba-96db-4202-a785-0b6cc39e1289 c9035b75-ef4d-42c9-a8e7-5fead69272a2 52fa1300-6776-4811-bd0d-6eb07fcbcec4 74fa6134-3bf6-4444-842a-a1fbf290d76e 500f13ea-5053-4a26-ae11-e1abdea23048 9046b691-3b39-4114-8ace-ec34ed23e61f aeca87ec-166a-43d1-9abe-a7a2d575af5b 699e80f6-967e-46f0-821f-d6ac1ef001b1 43851fad-a685-46c7-bfd8-ec47f2852113 05bb3b1b-bed0-4692-8965-740516a506cb c54a6a07-9d7a-42ee-9c19-ea3f87b0a46c 420db49c-30e1-4a64-8990-ebf631355f2d 2d6b457e-45b6-4f57-b6b5-ddeb2c1e1a62 5eb8695f-f737-45a8-af42-88e84504ec55 ca0bbcb6-6dd6-42d9-bf2b-bbee7f0a5aa4 2b355d14-e653-4f17-b87d-ef99c6c8e686 d336d827-c579-43ce-82fd-0d03888f7dfa 0b991ca3-f153-4021-a40c-5daa60ca28ed 22fa0bc3-549a-4d83-bc95-7667a6ba4722 928d8104-8436-46be-9bbf-03e388d53527 956a407d-18a0-434e-a18f-dfee92d30b6e 7e7a0d66-6ba9-4e69-8895-4ee5b4f28b78 03f9951c-a82f-4836-9c27-2a8e726a019b 8aef42a9-c77a-42fe-9eca-ea57b5dbd5a3 5ebd0112-2d6e-41ed-975a-33de9033605a 376fd328-b62b-4b22-9fda-2c5b25eb016d 20e286a5-5df3-4369-942c-0fee110e5358 e1e46790-ddd4-4e5b-bed3-04b38f6ae9fa 88df43bb-a685-4627-af14-5c5f9c78da9b 19858959-4f4d-4b17-82da-80335310422d bd3bec78-c141-4d8c-80a4-c2142ff45a04 f0fae38a-a83e-410f-86bc-898d2a25441c 480a82ad-b419-4cee-a9f4-0badada524b1 1902ffa1-61ae-4ac1-a49d-ad7bdfc8b584 7db5ccd3-e4ff-4b10-8f2e-96a74e17a351 84a88ab2-5521-46a9-b4a7-b60493ab5194 651b1f9a-81e7-46ad-9588-cf0a93a47f24 34c846ca-86ca-45a1-93ee-bc6c52f66466 453151a3-5aef-4e2f-bd3f-1090bc3043e5 d5a8d7a3-a5e2-49bb-a3e1-b1b78fae514b 141e16a0-1a2c-43fd-8a66-e05d02ee84be ab84142a-9498-47df-b629-a92ed1ee6d59 a5061705-a89c-418e-86e2-c8fa5f615143 27d68f9c-0fa8-4a1f-8aed-8f63928e2c84 e0b8a9f9-2360-4b2d-b482-8e72a4353ca8 6ebf1786-c8bc-44a1-8f32-0084047c8899 fa3d593e-4119-4a70-ae85-9eaa6433973f 5b149eae-9a41-47ac-b3f8-bc18218a2020 1e9f5ab6-a426-4d82-8589-e87358fd6463 c6909e5e-654e-4130-b562-187dbaa152fb bec00d20-631b-4ac2-a0a3-24261048ac01 3126a93d-5879-4ad5-821c-7d143c74aa7a 6a1113b9-24a6-4ace-988d-d45e3071ce45 8951668a-3c57-4b77-b13b-e6a34ba8e742 f4b467bc-eb84-4978-a125-803d14cad967 646dd43e-7a56-436c-a7a0-3d77c0060934 1ed77658-fd6f-46b3-b645-f74d168a2faa e8fc5dd2-3bb7-4e85-998e-48a0a8115740 2a30325c-5ea3-4368-91e6-bd9205680b56 7271e6c5-2336-4192-a38a-ab3aaca455c4 b0e8835d-3de0-416e-a3f0-51763158ec16 8ee5a6bf-34c8-4c39-a4c2-5f92f322f786 4a29439e-160e-4068-bd4a-d47740cd3bae 2e4e57c2-9f07-4cd3-ac6e-923bdda905fd ddb89c51-cb59-4e30-987b-b5f86adc9704 3c21a18f-1333-45b0-800f-254196fcea64 80182d18-4c21-42ef-a1f2-6c503c62b9fe 0d39cb86-09d1-4e67-a1fa-779c3d860a0a bac0fc3f-c722-40fd-8bec-a798569d3078 bbdf4cc9-0271-48c2-841b-d976eac28d42 ced6660b-5394-47b5-bb75-2b8cedf9562f c83d97de-187d-4905-9540-541330a75bbd 7be6cd7c-65ec-4752-93fe-b6736966196f 40eebd08-6e1f-4414-85f1-9047da86ab7e 3bb53bf5-8210-4a06-a8e2-338bd3f4972c c98f675a-dd54-44f8-9965-7d6f732c91dd cc111fb6-5434-4be8-84ac-686b5ca5be0d 01bf6a3d-a230-4a9b-8601-1b58d5bba5e6 9c540d9e-3ad4-4397-8471-4883c1370280 f0f62b5f-335e-4747-89b9-03cad7ae2798 ec329fc9-c56e-4435-b168-cbeea96e1cf2 b18080c4-b68c-44e1-9191-47d97e0dd2ea ea33ecb7-66f4-4a3a-a6af-5e28f6cf7564 3231deb1-edd5-412e-b222-ead587f7092e 319f59e2-75fd-4683-82ab-eebc9e49e794 3e565590-36f7-4995-90db-a387750d3934 564821c5-c7fd-4651-90b2-2f67c3753b43 6e3cfce5-a69e-4a19-9bbc-fdcceb31c9ad 6de44a43-6a5c-43c4-b991-bca788552c72 db0665c6-6204-46bb-aa88-72a2128b1ab2 b51fc233-bd75-409a-a3df-980bf9682a8d 162b7dad-6c61-46bd-9be1-c341c475a3bc 3b6f5b45-8203-449d-a614-a06d2b17134b 8309c185-1c21-4f5c-9af7-333abaeca29c b116f703-5788-4b6a-91bc-133c6decd404 9f76f63d-d32a-4697-aff2-7c80515baa52 7fdd9dea-12be-432a-8843-240d311e3f15 94e8bc82-010e-492e-a35d-72dcf57b5908 e579cf42-cb67-4815-9bc3-3afa329ed76d dfdb96de-863c-4080-aef3-e640adbbdcad bc6ea7e7-e023-4d57-835c-48ed75d042f3 58ce1fd3-4128-44d6-8377-d58131ebc04b 5be992bd-00f2-474b-b440-a0094c1dd85f 204dfaf3-be81-400d-bcf4-5feb9fd2ba5b 15bf9362-6834-4d07-86e5-4756d72baf62 6de36eb0-b0cf-4bed-8f9d-772baa4955db 94962d14-26e4-41b0-987e-4b95ae4790a2 7783e923-d6d6-4e66-9fcc-2c19c4fce4cf b2632458-82fc-41f3-b5d8-fa0e1eca9515 b4118446-f4fb-49cd-b7ff-2f792e6f02de 19caf779-f3c2-4b1f-9667-55eca5cd4467 d1bfacce-136e-4816-88b8-9b00e2001e17 2399a628-0c92-4149-92f0-35fe57e853dd 13683bab-2059-4c77-a274-5df00108f9fc 71229bcf-0819-42fb-90c2-ae1490e0eaa7 f9e965cc-33f3-4f90-87d8-f4591e5a1d01 455723f0-d96c-4386-83ad-3277a9b28c9f 389ad6b4-f837-4996-ae62-55e950258fb5 6c44106f-2304-4ef0-b354-79f58b351a64 d3753631-e840-4f19-b25d-00d0995ea114 cdad5db1-6ccd-4d3f-b8f7-0c4587a253db ac6798c5-cc8c-47e8-add3-096d1eedb698 0316601a-fe8a-425e-89f1-da3fa53446bd 2ba5ed36-f797-459c-a9d2-46e25c32e28b 61e2614d-1867-4874-8b13-176842b33328 cf6b10ef-2839-4f77-b556-33f10598c30b 4a393f7e-45ac-429c-9935-08476d65ba09 9bce9dac-2643-4057-b1c9-4978db63172f 216680f3-b7e3-446b-ba57-72b8cd28afd6 5b74ccfb-18c6-42b3-a1a2-37aaf36e4831 6798dafa-7533-4849-b86c-110346a12d2a d2f7efd0-3145-48d3-882f-33553b00dddf 6fbf2e5e-b01c-463a-95d7-abdca7955231 7070babc-f61f-44d3-86c1-d6d7a3dfd512 cbe4d99a-df89-4744-a536-50f53b00d0b6 079392b1-3c69-40b4-a2ed-56a1e410efb7 3bc88a43-2eed-434a-8c2e-4f80f2e2ebde fc35b8bc-5da3-49bd-a241-1110599655c8 99d3a882-4f79-4143-b7cb-b8db84762ee5 4f77c961-9b0c-4d57-b3dc-05441c9d3489 564cb1a2-cb62-427c-b107-cf839b8c312f a5031512-ef73-4586-9335-57f2e8a5bcf1 70ad1bf8-d1ad-4285-a419-a3e4a6c0786b 125a6ff4-55e0-4e7a-acba-fbfd24510794 9df578f6-1634-421f-a145-75db79cd70cc f9282d6e-df97-40ce-8513-ee5fdee31fd9 adb72e73-b3c0-43da-8db4-452fa4cd2aaa f39bc11e-10d8-42cc-b524-cbd95a7ea207 fce14c4a-fc9b-4bdd-903e-aaf331a4c424 2fde41b8-710d-4500-a220-aa746f53c2d5 9d7b2dd6-edb3-471a-87d7-bad62e3d86e2 ad5d2d99-34ee-4fd5-b634-b002af33f903 86a2128b-acd5-49e0-a8ad-24b127d0ca0f e794c956-c698-4ab3-9add-b52f46f79cc3 a317daa7-b6ec-48c8-8cad-268343cf39df 68b2b2ea-2f77-4879-8901-9fa5a00bddc1 a24414ed-03a0-40cc-a67f-14b6aae19dcd 5b2936c9-b697-4feb-ab9f-051ceea77eef 18587820-47b9-42df-8013-53f4a5fbb71c d3db2577-aa8a-4e0c-ae47-09e75879a349 1a414179-498c-4a13-9617-c725383bb573 ffe3c8ab-305d-4177-9233-6457e8e7c6e2 c63931ca-c56c-4d11-bab3-2524d16333f7 aa1af110-0cdc-4484-bd1f-d629f70c16c2 e0e24261-4fc4-427b-a23e-fe194f9e43c4 085534d0-9ebb-473d-b4d6-aa3b30787a59 29613d12-0fc3-4045-8fbc-fd88f18d158b 45345b40-9904-4fea-bf79-7d144e643029 3779711e-0080-4d78-90e2-5b66a6ad9f55 d65f21d9-0822-4324-a4e4-2f1869f29fc4 df5a9d46-0033-418b-9808-8930f644d046 830f92cf-6747-4016-8502-2ee66eb7061c 3d40ad0c-1bbe-472d-985b-7bdf9e7f7d3e 197e56ee-62bf-4c28-9e89-f88f5a850829 326f7cbc-f019-4c39-a3b1-15bf9d26563c 3e6aa8eb-5ec6-4e7d-852f-a263ca39ead8 be920410-e77b-45c6-a142-a2e1bfdb7ea9 e1811b42-051b-478a-8a9a-717b99458926 58a61bf8-48df-4e72-8142-233c30d3e104 74a22d4d-d2b7-40ba-8c76-7f33eed59bc1 4a3467d0-1333-40fe-868a-357d43bf7032 0e455d84-6d5a-4d51-bcc9-286e78af62a4 b2c793ae-3d4d-4c53-9a19-9de5cc22c82d 38362469-9048-491b-9c57-b3a4aace4f61 bd20b0af-c881-4663-a5bc-81a6f751a62d 474dc1c0-6b9f-42b2-9278-76e7c2442db1 2cf44636-847a-4985-bdf3-e45556027a67 77bd577d-3cb2-40b7-8be2-2bdcced53fcd c3fae9d4-c614-42ae-a6f4-449fa2f1530c 613d2bb6-5789-4066-a5a3-55bc603aa7a9 878d147c-89ea-45a6-8df0-b988144de951 e964a011-6136-48e8-8b3c-eca3d9a73dc1 bc70ba39-fe4c-42d8-9639-023d024ba394 ac2c3e25-3adf-4da6-b00c-95077fbaee4c 91704d83-c002-4938-82b6-972db90a0f43 141e94fd-8dfa-42b2-8564-1a353def1670 bf78fe65-c9c4-42dc-b0d4-9f6ba1935901 05928525-b12e-4145-b5ea-802b4cc3de62 7d39000e-4c8b-4fe4-ad4e-5bd70d282c1a 6052f9be-4ee4-473f-9718-6110b2745f8f d60f082a-0ed5-4340-8af3-282c00982e9a 8ce2b9d4-5932-4de1-8ff2-8d4687609ca3 f7539055-5315-44e7-aa7b-637fdf3d30e6 2e73bfb7-1271-47ad-91e8-70ac50115a5e 9654dba2-44c8-4d07-9309-8c4c86fac6f7 a0273192-b783-4325-ae26-a5407276e30d 4e6390cf-7ba8-41d3-a0c8-260b7a41fcde 100be99b-289f-428d-b651-3b09c640d245 2c787258-7e38-4b65-9398-6c1b7623253b c272bd30-6ac3-4de8-a6a4-83dda83ac2b4 e83d9944-f40a-44d5-9bd0-928ae81bc04a 748ea3d4-097e-43d0-8358-92cf8210aa09 fff4c51f-4224-4bc9-b8b0-d9e3612a3aab 8d7b356b-92f0-4ff5-9eb7-7e3119d80783 743a5ca2-1499-4278-9eec-5972a28a3013 2edb7898-334e-4395-bfbc-d70ab4be95df 839fd1ad-0fa1-47d4-b1a8-a62596f9e26d ac4c8000-b573-4307-a2a2-f5e3990e9bc6 cb607ca1-4936-4047-be41-2c8095d7a8e9 300f157c-8bfc-4bbc-b6b7-8569436760d1 b00b92cf-c8f0-412b-8a27-d527ed618a79 d639c051-352f-4e21-bb20-586346cb0a77 44a069bf-6874-465c-9b41-4f6bcc841927 8a2f1b3e-21c9-402e-a739-86c785a53e80 54f92007-692f-4772-aa25-1175597637ce 4ad3d417-56cc-43f9-ac49-6050420f4fee 11731e69-1c46-4b15-bce1-44784b72322a c209274a-6ea3-4fa6-bc73-ee2c52297962 4a4cc809-a9f9-4606-b929-e05b85fbf943 4b5242a4-12ad-4fa0-a2a6-af98438429c6 9b40c0de-747c-482e-a67a-82586dfd52a0 bccb3bde-bb5b-477f-b5cc-32db77fd2e3d 47136f4e-6e29-4717-9199-a99630b772dd 25a8ee56-90d6-4eb5-bb81-b187c54580e5 df0cf3dd-445f-4e72-87d9-b9e95e42228d 6457d611-a4e2-4460-bdad-b7da6e6db4ba 1c65b3da-55ce-41bc-a10c-36119a2500b7 14e375e0-7feb-4263-8eee-15f686dbaba4 a17669ff-257d-427f-9647-d02b1af10010 03f893a4-8786-4a5c-b815-2763be7ea8b3 fb00cba3-bda7-4394-abaa-92f3682a398c b6836ca5-25d6-477b-9f7f-4e819ce2efb8 8ddfcba9-77f5-4b89-a48b-c41288d236fa 3febc529-d477-492c-a39c-650ab06308ce c0157d75-5d1e-44b7-97b8-ce703b5346b4 858a5d9f-9291-4503-9e2b-469c4c3ecb05 278f2892-57f7-490d-a140-3a3b72d44f6a c2307f1d-4f9a-40b8-bcd8-80ae26580b2e 3ad46232-4728-41a2-a6df-006ee35db304 c312d223-142f-4efb-9742-cba30111ae87 6827c8df-0b32-4bf7-9018-221b6971793d 86694929-d72c-43a3-960e-13588223ef27 d1b406a3-2ba1-452e-96ce-b2c1fdb0d7e5 ca5cdd6d-356f-471f-b749-964f5afcf8e1 5dfbc64d-76bd-46f6-9d9f-21fd25f1a641 0c3f4cb1-17f6-4dac-8e8b-741ef888c972 6d291e1d-90e6-438e-ab00-033dadb5a602 11e3567c-d3c5-47fe-bca8-a1e6c7c6220f 44a31e6e-d279-4c26-ab6a-cbabab7c87ac 892cc608-bcc5-4d1d-b9f2-a067fde124a3 c431fb53-cb08-4d38-a6ca-52a688a3c212 2f139c38-c640-412f-b0d7-8a868ea76205 615eaacf-b7ee-4ade-8e8f-4a9dcb016a9f ac095be6-03c3-4073-8f39-d96d55d3fc85 dbed3d5d-06da-442a-b8a0-31e4dd226d1e aa3e4162-8585-41a6-9bf9-a16ec457755b 9806ca8a-e945-4a56-a9bf-563c34d4814d c1b1317f-4143-443d-8373-3d66cebb4a2b 79c5006e-5ae0-4db3-ac34-59ed476988d8 29b3ed22-2c0e-4322-888e-fd805974e33a 6401986b-bc52-4251-a68d-f9a201a37388 cc5856fb-2063-4326-9b17-4bded81ea246 9774465b-94d4-46bf-8e59-5b0defc60d8a 7f01cffb-b105-4ecb-956e-9379749b3175 03facba5-1d78-45c3-9b58-c7ea76ad9de8 487d7c49-85a7-4636-bf6e-98ff45e0ca7a 1f5aa66d-d4b1-4f07-9674-3ad87dc31716 550a553b-f59b-4374-af4b-2006c0bcacad 19198c5f-a2f7-4917-b428-9b7acf6eefec b87b3492-c428-4634-bf9d-a1f02887fe44 4b87f257-3129-4e1d-bd2a-394bde20986e 6af0f0b7-404f-4927-8b77-840ba422f032 cb7739f6-3c66-4c79-a285-8516ce75b9f2 f3276042-fee0-489c-82bf-dd70fec5f466 c7f4809d-f381-4be5-810f-dcb1aafe0a9a 91699774-7f0c-413b-9737-c2f946258ee7 442d910b-7bda-43bb-bce9-b8c875c2dab5 5125fe0c-7cde-4e3d-a9b1-d51727c32d01 b53e9206-ad4e-4370-a064-4661ec65c2f4 609400ef-6bf5-4cb1-9da4-124eae3faf27 d12bc527-2d55-4b73-8a9c-ca4f31a0fbbf 888b6758-8cf1-4fe5-875c-810db1a2a290 1819c502-6252-4e5e-abd4-0e11d67eb940 abae8b3f-2724-49d9-ad0a-691e9b730a42 5aea2f7e-a764-4be8-81e4-70fdf48f53e9 36e4032b-942c-47c3-8d62-022ef8f8052a eb966263-700f-4367-88d4-5c3830bd5cd3 6ea8607f-f91e-499d-ba94-e14817130548 21ea7a4e-d9de-4c69-8fc0-fb6d9aaab965 fb015349-1d62-4149-98c6-78c43974651b b58e881d-b955-4cc4-a896-00784aab44f2 f4afb95e-6ad6-4a65-b2e1-6f4e186f4ca3 b7dc8acb-1110-43fc-8209-4da945281f19 deb4af70-de04-4447-8587-1cab333ae193 b0924be3-ac04-470f-b83e-28905c991973 260d3079-c370-45a5-9b64-90b30c0650a8 2a6077e6-8a28-4aae-8904-156957331ce9 ff2bde2b-a615-426f-9258-6fbbae822e2c 8ced1030-0384-4fb7-b87e-170494445290 1c303273-f9c9-457c-b4e1-ad6ffe37e9d1 3489c47d-bb3d-40f5-8880-a7ee6e2c8240 dd90feb8-3ec1-4baf-bd03-e47c2e522e0f 6a5b71c3-a08b-4937-9527-2584c3b2f88e 99e4fe05-e5bc-4dd4-af80-4664fcce57a8 3e544071-281d-4a26-abe3-3e23db4cd095 2c205e9c-b121-4b21-95b8-c813cf27f3e1 e9a47fc7-81b1-4ed4-a1cd-1d2e77a81506 af062a08-5cdf-44fd-83a1-cb6119730c68 0ab5588a-3651-4d13-8e0d-aafbcff65fc5 029d8d88-2760-4e72-b6f7-73ec10e1c0cc f997135e-558b-49a2-a6af-5ab410f368cd d28e35ad-a17d-48f2-a971-179beb554424 03cf947b-577b-4f18-ba4b-9c6d281dcbb3 4c5b563c-9efd-45ee-ab43-9b51b22df046 ad7b0662-e563-40c4-819f-7f94d30848aa 0e73310e-18c8-4669-a9b8-b9a45e163386 ec36f607-0310-4b40-980a-847ddd48114d b7355aef-3ad2-405b-a2e6-3c14cc0fe9f2 ef5a3278-7600-4996-a6dc-e011e5358edb 98ee5d98-76a5-410c-adb6-df0b208e92ed bdcb246b-53c3-4b7d-93d9-aaff093c645f 3b4cd102-bd15-4dd7-8d2d-03fd460f3aa9 ef5d3671-7f09-4c04-9af5-8f86d880892f 135f5df5-47f4-4273-9f0f-8731657e32be 9fa0b710-b729-4e70-b4b5-d8382dad70e4 bdfa26d5-6fc5-43cb-9129-01517720c34a 3bae99ba-481a-4365-a2f4-552112e2552c 71492bcc-92fe-4c41-98cd-db7a97e78dae b050dbe5-f0ad-4569-97c8-a84c7b0a8eb2 884b344a-0878-4dde-8e1a-ae6776fb5b9d 9ac43611-5d8a-4473-b0a8-ee2e0fc92db4 7a4ab531-4bf5-4e40-8ffa-b1b9880a3cf1 e07c9461-ae97-4453-8889-0b2c5ea5d4ae 1472feb1-0e60-4de0-9096-b79ff5861308 4b835cd8-01c4-499d-b0cf-733b25956831 189eb7f5-75e2-4930-aad2-85317e388174 a32ef4bb-17fc-4684-91f6-88feb9af2482 731311ba-a87e-478d-acf5-3fe8c8adc8f2 413e0259-da54-40dc-b1fa-8145a0e32941 72b37c97-c9fd-4fd5-bbf2-7f6c6c4e3601 8f7c80ee-8df9-47cc-854a-eefed804c674 aeadb737-ff09-44b8-bf65-4d78e10e1699 82df889a-8040-4865-87ce-1d950b1597f9 76636cfb-3a68-429b-b4c4-65fe1c1488be 58af9728-9d43-47ea-bcda-f4bd82b3481d b86c5568-7f43-4222-826a-921fb6abe059 49678da1-81da-47fa-889d-aef3331e2c9a 5377e6af-5578-4b8e-a67a-314b0ec57596 5c8f0a7f-a6df-4a7d-8c7f-4b325695702e d3e1d764-0188-42a9-969f-d12a28113563 803675e4-6a49-42a0-b675-e17c791b6175 2ff8421d-1a73-4eb7-936b-4d594fc61d35 f712ed2d-ec8f-42a7-9317-f5df27e08038 5a56bae8-e50b-464c-bfd7-3b7bfd918851 c1614d1e-cced-4a94-ae10-7e64aece7c30 5f1a37d4-2cd4-4e5e-9527-f794d8d2ac1a fe4a49ec-cf7c-463d-838f-e875791873bf 6013e4df-0094-4aaa-a189-1224525fa788 375dcefe-a08a-4f2e-9f9b-d873501668a2 af24c4a0-229a-435e-a78f-dbb0c4612b5a 42d6bbcb-c850-43bd-ba8e-93e007d07d24 1d15b388-3c4e-4915-8053-ba66ad43d80b a1c463e0-c184-4c17-b84f-a2e300394758 b3f7f2e7-8448-4492-8acd-ea151b04ffa3 f3c3d0f9-1270-4978-a2dd-de61044a990d ed60a19c-a6ea-4d19-90f9-6a345b8404b9 b2928558-a5d3-4846-931e-3a3845668a27 e1ea5a7a-7485-449f-9b33-1460753f0ec6 64efd6ec-06a9-4739-9b1a-edcd0ad26b15 3efdb0cf-289d-46ca-973b-eb846b14b620 3c8aeb59-eb6c-4002-9f08-9f35a6a18d61 f7ff74f5-f5b3-4557-a00a-b7c399d33962 31ce1a98-b9c5-482f-962c-233f1a835a69 f153aa91-efca-4331-ac46-70c76dc67213 9f272860-dd74-46a8-8a13-5b15487eb56b e21f4b0e-f3ed-4bee-a26e-3eba72c50463 32f80486-8bef-4694-81b7-7827999761ae 9f052e70-1f34-4b39-8166-180e298c1b94 6e710b33-c1a1-47a3-98f9-b08745ebc2f4 3fe1bbca-e1d2-43fc-a207-2944803d6adb 05ed0e82-b9a4-45c7-9ca2-e29b1f6790c4 311a530d-c279-4590-b2f2-041e935cfbaa 7478c889-3429-400e-85d3-fb8032d29dd6 f7566241-b67f-4280-8055-29b237c39306 0a1cef92-4e7c-484b-902a-ac987d045378 d292652a-7fd1-4f71-800a-d3c556caec55 b2f00deb-79c9-4cd5-8da6-c543964c0bb3 90378c05-5e04-411c-9ea9-d16bcb5c46a3 7bc016ae-ea1d-4950-b91b-8683319d045e 6b210f73-6768-4641-8e25-104229d42ef1 583749f8-e66d-4296-bf81-76daab69785c c8f14bab-8269-4b57-90d7-4040ef55a9bb dec6b2bf-4b2e-451a-87b2-968f71e77f6d cf21fd18-5e44-4a40-97e1-906dcda8a918 576379fd-6fd7-4c46-8afd-9a96d95c0ed9 3429b7a8-3407-4b7b-b35b-6bce9d00db64 60a7e5a8-81c8-4b32-9e6f-eadb196b473a 6637066a-780f-48d3-b7a6-700ef716d83b 17374cc7-be65-43a6-b760-7068b055c7a6 fc123f19-f8d4-4767-af27-48663e735217 d9c4f4a5-179d-4564-91a5-6d0f2978989e 707eb63b-eb2c-48ad-a4a4-00eb74d227ea 7b02b193-a8b3-465a-b1ff-36599f07728f be500f4c-b51a-43ce-ae34-84fc34a6478f 621bdb3d-e3ce-4ed2-af12-5fafffa28965 087759b3-37f9-4cbf-bfdf-80b36caa06e9 eeb08207-fc8d-4fd8-a4af-e06b3d12dea7 45634c43-7fcc-41d7-8b29-eaef4a0f73eb 57263e61-1c51-4344-a229-25db083d69e5 6139a7ab-8193-4ec4-b2ac-557b0bd8a6cc f028d87b-298c-48ea-b608-2248c29ab3f3 8258cf8b-8c27-4a40-ad41-3f5a508d368c fc73ecc2-ffa3-4f72-88d9-1a6ddd667b7c d87037f7-3a93-4e83-af80-6f16e94434cd 2a5958d4-4958-437f-91ec-d3a23dcdbbf6 51bbc7d7-b4fa-4d1f-9752-ce71032693fe e4a0f80c-9e31-4f68-9f5f-93bfcebea219 fbe48d8a-970f-4b86-ae27-9f6635aa8b0c 3a2b92c1-0ca9-4d00-a304-dedf334522f2 aeea8353-d744-453e-97ac-07f841a8bbe1 8c01977d-0258-4826-bd47-314df2a9d833 9ecbc60e-900a-4bbd-aa66-dc75c50f3a0a ff8d2379-abd7-4530-af5f-904430dda694 5474670a-a0c0-40c6-b3da-a0fcb58e6b85 d70026c0-cb04-4b32-8afb-bf49b0cd2561 7edbc8e6-950f-4ab2-aace-91e073aae680 873d3c85-7846-49ce-9ed3-861ec32df156 ddcabd22-bc75-44ca-ac73-9e7d9682d229 007dda0a-a9cb-4562-a930-c81091ff2f54 ea2cd200-ad34-49e5-9e93-ebbbc5a028aa 430a88de-2847-40be-9766-f2e3973ba706 0f99e842-c4e7-4a36-ac03-68e1e8a344ea 960bd88f-2885-488c-91ba-9fd7701590b3 773f5f38-f97d-41fb-9610-10441ef4bba7 9b8100e1-2104-4c0a-a957-bfc7478addd3 c3bb717a-af67-4afc-9ff4-76375b1d7f56 e4bfba6a-effb-4c58-abb2-1d4661dbd9c2 89197d5e-95eb-4ad3-83d0-1f0dda30ae46 b15fdbbc-64fb-4fe0-b14a-76b742001f0f 521c1d59-9836-4901-aed6-b7b640265c30 019196d0-d0a0-443f-90c2-162573b911e9 55d04b18-4048-4793-8fbd-2002c3e26308 266334c2-8772-4fed-97e9-771ef2bf6082 ae5b02d9-39f3-4fe2-a3b6-e5900b6c746c 5f4d5dd8-337b-4032-a57e-f2b9a929f86e 53c1b074-747d-4011-8cfa-6af174f184db 9fd2d73e-ffe5-4cbd-975d-6eaffcbadffb b0021bf6-9931-4603-8a5b-8af04a6943c8 a5cf902f-e6b5-45ac-bb95-66fb357d7a5e d08a1b80-7aa0-4bef-83da-c18ba7846d71 c0beffdd-125e-4a53-9995-34060430b590 cad6b638-f928-40f1-bd77-4a9d335d4642 0d78c644-a793-427c-9929-03e9d3ef1551 400f2e0e-726e-4a44-8f2b-a74f4cc9197a 0cf5de82-de26-438b-b969-99206ba2dc0a fe118d5f-a6f7-43af-8a76-f5974885c0b9 2215023d-9812-4bce-b332-1afba184b289 e8b1680c-0374-4f6a-ac9c-5ef8cde3ee66 e1f265ae-9eca-4fb3-a8aa-d9f3b565f50c d5d53392-736c-45de-9760-03439503011d 8a6d532a-7c9b-4cbb-b614-9ed96162acca 93f766bd-7913-4469-b3b8-99b555647c3f 11b48376-d441-4f77-b1ee-70348de95732 ad315b97-75b7-4b0e-a566-feb33479e6a8 c5f1e7fe-517b-45ba-b51f-eaee16469d47 5033e9ff-ce19-4398-91b7-8973d2729aef 48cfe0ff-629e-481d-af49-147699b87ed5 3675fed1-0395-4a52-ac37-33dc710d1542 25a58ea9-bded-4361-a197-f49142966bb6 0342c93c-1460-4ffa-9f3a-72adbf4a90bb 256e0437-d8c1-4a68-9526-08988264e0d3 ea6691ed-da01-43aa-a820-f646499b536c c3fdb173-3a26-4bbb-888c-8f2a9adc35a6 8b532c03-8b6f-4591-97a8-51ce5a0a491f ef61ac11-3911-4604-89c9-b3c57e5b91dd 9c2d0fed-f5d6-4695-942c-a72f1dfaa89f 8462fc1e-2195-4644-961a-9a5a65671e4d 1d817c46-3def-434e-b696-7dc10112c758 f53429b8-502d-4f5e-8b43-6f7fae039b39 a9be95a1-4911-414a-a72e-25f9ff6b5c45 1a4470cd-93ad-4e34-a5a2-ec442f0d39f4 92cd5547-b9f1-45b4-9c40-5edb6e685778 4bb8142e-8183-43b9-926f-60e960db9bf8 0e188107-9daa-4e97-9608-787ea5fef4ee b545e0e2-cee6-45b8-a7e7-ed8cc0550958 da808331-c27f-45d4-8807-121b45959c98 f9b1d39c-5337-4a0e-9ae0-7622a9bd30dd 24a2c055-0404-4fcc-98a7-f0a6490011e9 aba1c344-3c36-4f87-a475-4c5d5d300020 97a58aed-a166-407a-8d30-d9a7b5ae730c 4689afdb-1116-454a-a2d8-fe33ccdba130 5610ab4d-8f36-4b9b-96fd-c30b606b82ca b11b2930-e905-44ad-9df0-03e6194db1aa 28f15835-fa6e-4312-bf80-3ac5909a542c 9b9ebe10-8795-49fb-8376-c453aad75204 e683b0a9-39c7-4e55-b1ea-bf7b24c7e9d5 0c2ce53c-685e-4ac1-ac94-d19c3c04f12a eb1f103f-4467-44a2-9eed-424681dcf56e 44069351-b5e4-448b-ab28-d157754cd2b3 cb370218-ba64-45db-ab4b-b8572695905e 63062bf7-9281-4873-85f2-79154d0326e0 c05e09e1-debe-4202-94b7-269b3e3fb6e7 576db5a5-22f4-422b-9e47-095e6e42c01e 386948c8-016e-44f3-a434-ee21bf25ff29 5e2f8981-3925-446e-b8fa-34140a585c3d ed78a2f7-ede0-4da8-9fe3-259b488b6597 953fc60a-ccc1-4a76-85ff-5dea3a9cb51e 61aca274-704d-425c-948b-40299ee3ddc0 7f87e224-cc99-4ef8-8ceb-5bcf36d856e6 c04db668-6264-4d4f-92fa-d051ab1f9947 f3641133-0556-44d8-9779-7b02085259d7 f989512c-bd84-4495-ac1b-9c6a81eaf8bc b65ad01d-95b1-49b1-b0ff-f9df3bf87222 254635e6-eb25-4660-9201-344337aa20db b625a040-6ef8-4c81-93e1-d0a5ecb98d3e 0c51de33-2883-4784-be58-e6317b42eb94 b92e8531-4728-43ae-856d-c1e85a35b8e5 417eb342-2507-4a0d-ae4c-2ba071fd219c 21a7d3ac-5422-4039-8cd7-d3ef1199c8ae 19bf945d-8bcd-423a-be56-c3d9d61d1a79 630dd213-2a78-4938-a21b-a4da7df82a94 1a63c37b-60b3-4efe-8ec9-4e786b36a5aa 433b2ac8-5ad4-493d-8cc5-0c4a9df6ccf6 8a835331-cd59-4034-abc4-e0dc90f09a28 fcb129c6-286a-438c-9a93-be4283e30f83 2bef2c72-3e14-4201-aa5c-209320cdaa0c 882d9a26-26ad-4c6a-a3e6-fa0b8b7c70ed f2f79edc-ecb0-4edf-ab14-a8252aae1094 b4e3277b-48ac-432c-9921-60c72e6cdef6 07e25f55-afcf-483b-8af9-1ac6d29cbe19 ccec6fdd-e5ac-49e0-9d4d-abd6df5fcb31 ecb04ac4-bbbc-4371-961d-28626d345205 df79936f-1527-44e2-b17b-5cfe0be27378 f0965913-c662-463e-a2aa-d6c6f0310a7c 635dca0e-4f28-4ee8-989e-df1318307a9f e63327e4-5a44-4b50-a818-4380e0b49786 d76db904-2e23-45a0-bf74-5df0b0e9870c 71ee1120-272d-4ede-b0b8-d0a0917e0c98 0b168cb8-6c1f-4a61-8704-0a7a714e152d 469aeb0f-ec91-405a-888e-040b29d16fc1 f0ab9965-97c3-45d8-96b1-255054f22eaf 8d7b8442-d06b-4dbc-aa91-f8532c32f41f 0b7198d5-07d9-4bdc-9469-97c047870910 df911012-9613-4183-bdf9-603541994b7c 280126ce-ea15-43f7-a7a8-7dcd7e81375f 276f5c96-e482-489f-8200-86fac6df0133 8219f1e0-d1ce-4ce5-8346-a2ebf9cc789d 8f856ea7-c2d5-4303-89c2-e312c1e6b021 31b11ebd-db2b-41ec-83ac-4b80cc30364f ae44ac83-5b91-4bca-9904-69f94ab4309f 17ab6b05-aaad-4393-b8ac-d17f03940ea2 7d48ae11-bed3-4d4b-931b-6719763c4e42 d3895799-578b-43cf-939f-6070f0cb6a4c e0d93d2f-c1ae-4267-973b-022c6d825b88 e18bce46-e09e-435e-96b5-84ad4ff5d17d 57f2973c-9b84-4479-b3b9-9d2ab6b20bee 950c7a80-599c-479b-ab73-cc6178a8d892 9a661cc6-e2d9-41db-a357-e6610fb45032 2ae9fde1-426e-4c2f-be77-d08be17fd94c 76f4ab74-974a-4929-a52d-17b0356320eb 46401ced-a14b-4d75-bc71-8bb674d456b1 1b02e0c9-f6f8-411c-a15d-ede440dad2b3 08facf6a-53de-45a9-bb3d-54dc0d7d45b2 cd97f3d8-a6a3-4bf4-a300-2a68d4e5dcc4 df3687c3-a022-40af-a4e9-dc418e6051aa eb468e1c-2ac8-417b-b452-64acb676024b 3953aaac-c5a8-4bdb-8ce6-b869cdf18682 44ed1e70-d047-4618-81f2-f82181105077 07f4f401-faa4-4a6b-bfc6-b8a458f73314 1e8497c9-50c3-4a6b-94ed-003c14983f62 0f87b507-4994-4e1f-bd0a-768b6af813c2 fc035ce4-2b95-4491-a4ae-5b3a8d0c06ff 01260021-b898-442b-9ebd-a95c3a5c1eeb 1f806533-3ccc-423a-974c-ae43f430346d f71a10ce-a0c2-4d11-8468-d163d007b515 c15542bd-90af-4586-93f7-eb87807982d1 0bbc38a0-a7bd-467b-a007-75a7fc15c923 fd270c1f-feb9-44d9-89a0-4682ea11b632 cf12f3cf-87ef-47ab-9e1d-16d18fe3a603 3b2de20a-27a9-404e-b164-e5957bd9ae1e 45f0b627-6fe6-4197-8a61-a5e16e83bf18 9551f9fa-6ba1-45c1-8861-74ed9a21f0a2 0d059bc0-6c86-4167-a536-224eca3c2a5e c7c19bfb-403d-47e3-9ef6-457e321acb8c d69fd579-0a45-463f-b718-b432f6aed33e 043ebe66-3ea4-4395-9dcd-41e7a753a50c 52b60ec6-b49a-4498-b5ac-a763bfbe92e9 f424849c-f698-4d0c-8fa1-4ec73c3fe7de e2db3135-3b35-4543-81d0-4f4bfcd3f0cc 2c1aa2da-6c44-4bf1-8b96-178abcc88d2e 0e17624b-bda3-4d87-b27f-b5fbcf5519ab 23cadeda-2cc7-4c6c-9af7-ba13b6a09a0b 4c5491b9-2aa0-4e29-b27f-ff2df04a4319 76cc6e9a-7c5d-4d33-b53a-717b06cb1b81 3908fd4b-a98e-47d0-900a-a53138af4008 3ea20c61-03f8-4d05-8e6b-12baa7bfec87 23806dc5-a93d-41db-801c-0154db00ae5b d3deefab-a8b1-4a4b-8a93-34d001eecbb3 5e24deee-2523-40a0-a7b2-b3819fbc8e93 03561630-9736-4d24-84ad-df6b63cfde4f 48a29ac4-3047-4be4-972e-440f4cea9425 9c40a035-1ee7-4302-b46e-2b881ac968a0 8c136bf5-91f8-4693-a135-1208b41a3368 8253157b-1054-4d55-92f4-162005c7c66d f537aadf-60ef-42f6-a9e7-4264342ce413 d8558de5-36d5-4ca9-a3d9-bde86a99efee 730874b4-a3fe-4646-95d3-c5eb15dced94 a961d299-e2d6-435f-a0d4-15b35d987418 fe583932-8a06-4f38-a0b4-d419ebcb0922 fcbaac82-aef6-4a6b-960e-c79a5de89eec ac965a6f-85e5-456d-82a9-6daa3329f03d 15580ac1-eab4-45e0-99a5-c690dca5e0c8 79ccb916-2dac-4ec5-942e-48246e2045ca 4832bd50-5a09-4fd3-ab08-47420758c0cb 9745f83e-a2b5-4dd3-8def-08dbb17a51cb 6c6fb014-d3db-4fb2-bfa2-cee432f9754b e553d773-a3ae-4fdb-8b52-977efc64f814 7d39dc2f-8624-4869-a5e7-eec4694d0cd4 70b66a07-bc4c-4382-bd5f-7edb97803bfc 6cce6c89-62ff-4db7-bce3-54de9af11ca5 f0b466fb-5e37-4e3a-b3a6-f236b81078ae 3acd125b-d97f-4903-8edc-67714d398131 03bef98f-740c-4561-8014-3ad22c3ce89c da8e644b-2b36-4db4-9fcf-e67876e2c8c3 228f73af-2864-4db9-bbd4-9bf3699c1dd4 6e5d2b4f-fedf-40e4-9734-76030c560dab 2edb8bc1-88f3-47f1-9d51-e84aaf7b3b52 00ae9377-d343-429d-be6d-b2d0446de2e5 45be0c58-f983-4f34-a906-93112b809425 3ec12cd3-2352-4737-b0c5-8b97aab2c2ad f5ea344c-bfa7-45ab-bc6a-2c3e7d75deb2 f3eaacc2-0832-4032-bcdb-462ec3207bc9 96af26b5-85d7-4914-9a59-77b938711109 e2bedc2f-d441-48b0-81ee-b72d33292a97 4cc651bd-5ef5-4e85-920b-2dbda8dde288 1aed9f3b-bf5c-438a-ae8d-74cd847e25cc 3c7413a7-8eb4-4be5-a8e3-a906fb0ed375 7efa72d4-8403-4b1d-ba80-5982507e12e5 99f03da2-de23-42ce-9e86-e262c890dc32 c87c40f6-5132-407b-93b3-0703bcfffe95 3ca2d299-1d0e-4136-9d2f-069dd030db9d d06f3bbc-7376-4374-a27a-caef8da66718 ac6c3d68-fb46-4de5-a0b8-673b43933bd2 b5f6250c-e94b-4fbf-80b7-f9636eea809a 26ae7d6a-8e58-4906-a3fb-c298ecf3dbc6 89b4e2af-b7e4-4405-b458-03615791b406 9d70cb30-82a8-44d4-96a4-bbcc83af38ca 8581342f-be5f-4c90-8b19-e0f40a3d4e03 e83a6ab9-5ab1-4803-a720-6ecb062976cc f720d499-0ebc-4780-b326-8c5f52924391 023893a8-b203-482f-8609-e5b5a14fae8f 11e03d6c-00c9-4426-b45d-c58d63921004 e93f9569-8b5c-4b9b-982d-bc57d2398561 01372480-b48e-4250-b3a0-f98af25019b5 70b94b75-d495-44fe-b74b-8d0122418c34 6cd39472-2497-4f0d-80f0-c8a57ecada47 4a2d9508-bf98-40f3-ae22-4bda647a0b9a 8cd037cb-fc9f-4a8d-907b-ed51a6862e28 7f1b531b-c310-42b6-bfd9-9a7a835ec028 67322e40-a593-49c2-9176-b0a6aad8ac4d a9c70490-3819-45d7-ace6-e6a0965ae14e fdce86b0-9b72-4168-8bb8-c92e6d1a241e dd3c0fa0-4d1d-4754-a70f-3ae466a37d95 ef605717-4038-4f19-a45c-c213e4fadc2b 212f689f-bd55-4a84-971c-8a0d8f1bf9fd f315c94e-71df-48da-b542-d3dcaf30fd6b 5a2d9910-40f0-4aad-92da-a91c802742f3 79879398-5c43-40cb-ae6b-9fcb7e6f67c1 72899657-3263-42be-b81b-68b3c401cf29 d2233ca8-05b7-4449-88e1-c5441a935b6f 4bf320f1-499d-40dc-adbe-62c8e181cce4 b72c9eac-61bd-49e5-9586-723ca74e7b92 57f5eb9c-884f-4c2e-a436-4a90622aba7e 75cc1cf4-8c28-4be9-affe-dab4f38af83d 294e718b-f5d9-4464-be0a-5e8392079eba 67a10b4d-0704-40be-b24c-36d3a332c27a c79c22d4-cf43-48cc-a4ae-83bde5d3fbbc 1304d2ff-b936-4e8a-bbb7-f589de9d3a66 9bce09b5-8319-4949-a7c8-1744bbc364f7 7d5568fa-009e-43a4-a1bf-bcd0f4923b69 91479f87-66ab-458a-ade9-fe12a0a7f29a 4bb3cb82-cca1-4e5a-ab8b-a421013c6d3f 62dc9c4c-b951-444e-88d6-8bbf93b6c48e 4b6f7e16-61d2-4097-abf6-eee2adfe0801 df7e46f4-aaf8-407c-bb81-0beebd22e54c 30d45c0c-9eac-425e-bc73-c68d279b1498 be12dd87-4bb0-46cf-8055-afab84d32386 9f035f22-c42e-49a2-b6bb-c23546ed575f d4e18494-b26c-4579-aabc-ba69110010e7 08bcbcf3-14c7-413f-a664-dca3539b3fb7 429f4307-e325-417c-8d43-00ed6b5ba726 468fb609-b959-4459-a462-9a242449e890 ebf84223-969d-4382-abd4-4b813502f874 ae2cb9b7-2171-4741-8659-06f5103b6e90 374c6ab1-8215-409d-ab17-8ca4bc1d66c2 bf981080-dff9-4d00-b3e7-baba7d00a805 9b88f859-85f3-4e56-9fc3-7149d2cd7bb7 1c8496b8-7a05-4f35-b0c8-304c2b302d2c e78ada78-58db-4b75-b22e-15db6bf159cb 3c199b06-9683-44d8-960d-7d279974547e cd705b40-c30c-4aa8-81ae-55545b6d0f07 0cc8023a-1475-4033-ba75-7a4413350faa 7ce6006f-114a-4221-b139-c00a87e1f971 cc6eb129-e9a3-4620-a10f-5e7ed0b8cda4 5d607538-3277-47a6-9504-782f6d56c3c0 0d9b94e8-a00c-4fdd-954d-c422e981045a 16570615-befd-4552-9ede-151353fc1379 ddb845e1-ec5c-4fb4-8640-9d0380a90e79 41c60191-fa8e-493d-963c-1959425d7938 0e26ac77-c960-4e7b-9a3b-a355765cb94f 88b95028-b991-43ee-a768-3461521ad770 7f34693a-d172-412a-8d4e-24b627ed622c 81e7639a-3af4-469f-a4d6-b7b2430380cb b5b998e9-2436-47d6-baaa-05db85afc726 d8e4d4b2-1e82-460f-888a-134fe5d724ba 0d1182a3-4f42-4f11-8505-5613ceb152c1 e4866e40-413f-4347-83f5-b8fb28d23e21 df8e4d8a-9c82-446c-8608-f79651c20c42 7b980418-e78a-480f-9775-632708a12df6 4d015a68-e85a-4520-b4b5-a1fc3e585d62 f1b1af00-f5fa-4c5e-bb5c-bde0e94d2a3c 1351effd-f50c-4159-ae4b-7ef8b7812306 4e886b43-69ff-4abd-bda0-1e45f950bf2d 035e8141-e3ab-41af-92d5-705e1dd34ac9 d7e8f9ef-03d6-4de8-a742-34a73aa4a137 167749ea-1e6a-4c0d-a1eb-c57f90092639 7748c9da-71a8-44ae-9811-bef91f85be7b 1f92f22b-760b-473f-9728-8c885fe65400 5fa3fac8-2392-4204-b796-5ec3422739bc 414349bd-1d70-4c62-9a7e-f70d89ad648c 5410a4fd-6a72-451c-aa09-bf39065f13ce bb545969-0754-4451-a292-be102e04b70e 16b65dbc-af60-449d-82fc-4bf06d12d510 0cf4fcce-fc64-42b3-b730-70b798e3f64f 2938cf4e-148a-42c5-9798-9c6d20473503 473ac1f9-048e-444d-be01-1162bf67d096 5e5371e1-d822-487e-b532-063b82e255e1 142adc49-0f78-41b9-b537-63109a09bdf2 7825189a-a1b0-404a-880d-6c3b2e307783 d0a7cf19-b0e5-40a6-bd5a-4f3925d92fcb efbed400-fb06-4ad6-bb84-31ac1fb274b9 55958eac-8b01-4ea8-9b3f-2a34b6893589 6f7ce092-a1ef-4e64-88c9-63335ec9039a f8f2511c-a349-475b-821f-7563dd04f8ed eb9c356b-05ad-45b5-9c29-9e82cee5bce1 3f53de6b-d270-49b6-9268-18af7e154c8e 33586400-bf60-489b-947e-9932ac16006d 40875d13-4353-47a1-a805-e2678131646d 613cf785-e4cd-40d1-b166-081f4c522987 38f4f721-2528-4e29-98fc-00e845545156 b49acfce-a40f-47b3-b834-7499bdf88862 7f977053-046e-4400-ad80-2ed0d84e44fd 3dbf0d94-1ddf-4804-82af-1fbda5522571 88f90f1b-8f5b-4b05-9d72-d4bb3406d447 162889ac-ca89-4b67-b6d6-abb79362f159 268c7228-328b-4acc-988f-fb053a96171b f5057271-458e-4ec3-bf14-7ff53607810a 895fd346-8473-4711-944d-526d4fb453c6 9bb32d72-1d18-4912-818f-f5fb7689f493 4faf22e1-b253-46f0-b5fc-02065ec1dffd 1e756594-155d-4d45-a1e6-aab397c6e5dd aae7d825-d181-40a2-bd77-916bffff5907 790901c8-344e-479c-915b-a48df6aac570 a25fb269-5d61-4b6e-89ab-0d3e06465aa9 99c7a992-9b35-4a05-b875-74b90c40d134 8fcf99f9-3608-4be3-b715-372786700ac9 a84538a5-9c4e-4a3c-8f3c-c6b4e88c09e9 86e4f6a4-84f4-4aa9-b195-4ef773b19218 1cb886fd-5fec-407e-9835-41fc503babc4 9133a89e-5354-4ea1-ac26-7edfaef6680c 13afa4e4-fd1a-4d3e-853e-662b260bfbfb 8ec987e7-4a01-4b4c-844a-9a892efaf498 b483e72e-817c-4203-aef4-a827e26c1a36 6baa747a-43b5-4d62-9352-6f2079f3ed53 fba5c3a0-77ff-46aa-9103-14c731690918 21ff65d2-facc-45c4-b1bd-757662de201a 9e9c22a3-18aa-4fa3-aae9-34560d5f0994 66b939ec-6c58-4d69-9f5f-849f0b6be39c d2dbcc40-187f-4b53-b9e7-cbbde1b77a86 b4c6169b-e716-4dd7-8e62-567900d27871 71c324aa-234f-49f3-9657-d07f1570a46c b6740999-b803-4358-bfc3-954fe8936438 79af365a-b8eb-4621-b699-462bdabde25c be498cd8-7706-4944-bd07-5d7862054600 7754fdf7-98b0-4bf4-990f-477c27cf2528 d494b83e-66ef-42bc-a240-d6d48a11df77 1079973b-f50f-4702-8d3d-e2a2b295a9a6 57b29821-ecac-4bad-847f-f06e4c51ae89 510599b1-3ffd-4b60-baa2-5df205c36cd7 d607e69b-634f-4a66-8631-63f842e16cc6 af6b4f8f-1bcc-462c-9e35-d060efbec791 49fb5f14-b890-4027-8eb3-6d6d9d4222f7 7ee7461e-c910-483c-92c1-b1283829c739 6843a872-968b-4bff-9207-540e164c06c5 9c544a3e-9317-40ae-b580-7a0773d0610d 6d0631c9-3700-4a21-b878-475b7f9abb6d 7799e5aa-4ad9-44b6-877b-92e16ab7c4dc c774952d-648c-4c4c-a987-88c6d0b6b43a be8bb5ca-0a99-422d-bce7-fff00cbf0670 393581d6-cf64-4c7d-8181-6e7c686522c1 104ca498-2c8a-4bd4-9750-d49ddd292970 94bafea7-7fab-4505-b9f8-e82b048491ee d26523c7-fbd1-4f2d-942d-d947796a82bc a6171dab-189d-4670-a027-9e7f9a162b74 f1f0532a-eed8-4dd0-b202-6938b7d83b3b 377c57fb-d453-4eb5-aadb-c517bc359d32 1541a139-0eb5-4d93-95ba-cadbe2863b9c 34052bea-75e3-4909-b009-4b13fe151d95 8b20859c-2906-4fb4-9751-e0ea90f82567 5516dba8-82e1-48e0-bd3e-6047c875613e b770ee09-891e-4438-acd2-a0ffcb950866 4be5d16e-42d0-4c41-bcc7-f05b477d63f0 81f571e8-7571-4991-a7ba-d280cc9704da f10953cf-0b09-4dc7-98b1-e8961de892ff efa1c185-0f4b-4912-9e3a-db33b760fe9e 80e89523-7331-433b-a73a-d616b7b01417 bd7e51b0-ceb4-47e3-a9e1-84cc6723ea63 2e9c2c9c-c0e7-486d-bfe6-c4df4fe7df2c 1d61c9bd-325a-4172-a7be-b98d65b9b9b2 604d689e-922a-4e11-89e7-540298a240d4 107a15b8-d283-4bf5-868c-0efa71ae56d5 85693341-75a3-4a2e-ad1f-6512761f1709 d0ef15da-26f5-4567-9def-be686be3bb50 1e015ca1-0e91-4855-b6ed-edf21d4e7941 2b16440b-5834-4587-98fd-7c50b23b33b8 8c002b7c-9043-41c4-88af-6923ba9f69b4 2181bd92-0a28-4cb7-b37c-e81a6303e4b4 26d5389f-9646-44c7-a3b2-c7d04592b78b 0d6ee883-1f3b-4a91-b1ac-92c7b5189c18 eef9d745-5bfa-4cc1-b079-26d34ede3f76 9e44ac4f-3bb2-4e7c-b202-3b22180d5e7e 67fa351e-b612-4d87-a8c0-6f858b293a0a 969258da-4256-4991-ab88-f2a4e7510844 9d19640e-c639-4af6-988d-1e73b0f96130 75f1b82d-c8de-4313-ac64-579ee77b02e7 ab54a6fc-50ab-4105-8147-e679d54d7291 57823fe7-3358-44db-a98c-65c4f68e3338 0100afd1-54de-421f-837f-aa6082073564 f3d79a4b-30d1-433e-a2c0-bc89f8d38f8a d4bf8408-6ad2-411c-8f72-83fda54d067f 59830830-26f7-4ae5-91e8-e7d79b8d8010 6a9ecb80-b4be-4279-9c9b-7791dcfa9e35 bf08f363-9eaa-40a4-964b-677aa0378936 f2503546-7d68-433c-8429-7da3f15df694 d771cf3e-0801-47f7-a094-5766281ffbde e4e24f5b-c3e1-40c7-8fde-2ee972161f5d 38cbe1e0-7ba5-4784-8259-cfb678d82fd8 c29cc7e7-0e11-4902-8d42-cdaa96743934 5961e990-bdf4-4f91-9327-a0eb75dfedd2 7460a8a0-54eb-4908-b509-587d69fc75e1 55fc4cdb-b9ac-4dc8-afc3-d5f5c332d2a9 c022b298-5a47-43b5-b6ac-ff9e120869d4 34d20d58-c538-4bf6-b1cf-20944588129c 57d70296-29de-4526-a460-3b1eeb20b191 1dbd2312-bfea-4ac0-a09c-bf6dc18bd006 0b282079-9f40-457a-9a95-959b672bc9dc a29afcb0-c84b-4b29-9828-bd44a2804059 255a6484-dd1b-483c-9a44-8a6260af67d3 c3867b72-00cf-4c64-aaea-cc14a750bc81 41c53707-e1fa-4b42-afa5-93d1268e5455 6140927b-1c69-48a7-b304-c7bfedac309a 14773fc7-a6b5-4bd0-b836-8aaf0a3206ef 25db65a3-3dbb-4053-b9c6-f579e5c6c6d6 77149f9b-ead7-4a39-8c7a-b3dc891a788b 79edd092-575f-415e-b614-47f66c709072 81f3f48f-d649-4f4c-b5ab-c3a189c0eb61 403e864f-f343-4517-8e79-a32ea1ba9142 4c79ac93-bbf1-4078-b080-a4236d2516f3 bc0bce4f-430e-4894-b8eb-968b6e46c918 677791f8-24fc-4127-bbd3-235e42bcf342 86e433e5-a0ec-4186-9bef-dd3356bb37f5 a62d03b2-deda-4b98-9672-f126276eb55e d2ffae3b-f048-4ce0-aa9d-1e759ddefeee 543c8293-6590-467d-bb93-9d967282ecf6 bc6ce253-a767-42a0-809d-a6809a2c70f5 3da0686c-c3f5-488f-9f47-247dc09aa3bc 7b591cce-827e-46ae-ac8a-4ecc27766003 1f97c649-9b60-4913-b586-fa90903df2bb ca112a68-a825-42b9-8404-320c03c26afb db7f8877-1cc5-4336-ad85-8bc976cfbe52 1ca127e2-cd54-4346-955e-fe543aa63043 cf19faf0-727d-4c79-a0c8-7aae6043c542 f4b7c21b-f998-4d8d-bb44-4ac5e554fb65 ad5402a4-4ec2-4b9b-908c-41434874b25b 01a9ab4a-72c7-465b-8eaa-de8d8b0ed1db 72c490e9-ebb6-47e4-891b-6d91d0126746 d6361962-eea7-495b-ac43-8c4410963ca9 81933403-8814-4f37-9ffe-1546628472ef 010019d9-ed95-4e27-b973-0c0109c06bc7 08d4c09f-50f5-48cf-86c9-971a01c3f702 00fbe382-e8db-45b3-9967-edf8e80dc32c 94159363-1090-46f2-9abe-1870201ef77c 7f6906c1-064d-4d30-b043-e22327d1ada0 f1c41d1a-cdf6-45e8-80d7-dbedcf8d1c89 55ce964f-8520-4aa7-aaca-1d704359a124 be5780dd-d774-4fb0-82f1-6a5499d051ff 3896ab9c-82fb-48ec-b670-5ae77f41897b 12f73500-b135-45be-814e-b340b4b91d5c a5b62a1d-bb49-4261-ad0e-b5d89c6dcda7 b722b843-b459-4540-be5e-8aa7f7ea5034 10b5bc6a-28bb-4696-91b0-89efde70cab8 8f17a42f-8894-4e54-8152-52cd32d33988 11fdc47a-df26-4dc2-a460-76e6e8a24398 ceed6477-047f-4cbb-817d-c7a40190bbd1 170ee432-2dae-43ba-9828-ed116878e4e5 2fc6d10d-51c3-4ee2-b0ae-d93577a98b8b b5030514-7f2f-408e-bbfd-e2628a5c620e 86221d0f-35cb-4fd4-9996-99f5dd562a8d 042206eb-0254-4f5a-b377-70579c14d448 9b53e659-a897-46bc-9843-ad4debb9c5db fd6fc07e-c8dc-4b4c-80e2-0d753c0b0d4f e8aed59c-800c-43d7-adb2-8426829c3cd8 0eac4f1d-0470-42ca-9a97-537ae418e04d 70a77abb-fe5a-48a0-9baa-6f6a175ebb51 8abcf24e-9737-4c0a-b9ef-e5aa101da638 61e586d9-c17f-42b3-9b3c-9254de35c824 7ce11409-73db-4a1b-8beb-ec7eeb5b9361 c3d10387-5a04-431a-bc25-be943f459c5a c2ee075a-8c50-4ae1-a120-08adf9ef2381 e0ad2163-ce7e-48cc-9646-fe6aa6ed86db 5061b246-ae27-4aaa-9e58-18a5f1604084 0c1a0b79-ca58-4988-92fa-c2d24bcada37 ad2e3468-756c-453d-92d3-389d04e338f0 9b04a778-6cd3-4f92-a081-d5793eacdf2f 3c4ee50b-5107-437f-b5b3-41fd1f70a4f9 887b3578-9995-4fe4-b444-77660ddc94f3 95f87b6d-79e2-4f79-9751-afff7a6f314a 0d8d208f-0250-4498-b56c-61bf9c999296 45388413-3b9c-4a73-8eac-5e1e836abbe7 48c9c005-cd59-4113-9fe9-a993adc86d90 108eb2d9-cbaa-445b-a206-22bc026bedec 632bbaf4-da2e-4798-a290-4c64d5256eeb dabb0a54-5afc-4f18-8267-da371f942c38 4eca4017-0461-44aa-ab16-18afbfe7e818 2eb22391-6674-4442-b576-3a0b3fdd96cd 79944d37-22fe-4bd4-81a8-35eb9935fba4 cc3e88ab-7b74-4b61-9260-6a1d07ac3ab0 3a613c5b-7520-49c2-ad57-c681412e9191 c82914f0-9952-4535-938e-1e07f8646595 9395516c-100b-4d9a-abc1-e0b42e421500 8ff5b124-7650-446a-ad75-1f9605562663 e731f0a3-056a-4a44-b074-52e2fbbaf134 409f31bf-6436-4ec4-9d33-407cb55ab0d6 7b95408d-2d28-406a-bfce-b2a7b321d5a1 a4d862a9-f780-4f94-837e-a0bf120ccffe a27d6f33-6574-4aaa-ba6a-e6f86776ecab 7827f8f5-6526-4c5b-8417-800062babf93 e86963db-ec2b-4cfe-bc54-9eae515815cc d7237762-5c50-4702-870c-6558ca73726d 67d17d1f-a76e-4cc0-8531-e56664974462 90d0bac5-ca1c-4191-a15a-c5b5155ca62d 340f56a0-f8e1-4437-9acf-bc62de0b2cbc 7299e195-ecfc-42f9-9a10-95b7d4a3bf22 7b600a97-ade4-4477-b95e-0a0ebfa4442a 6cb38973-fd12-4921-ba71-f3504b7d468e 26227dce-44ad-4818-992a-bfa2a40eb921 d8212d35-4e24-4a83-904f-42996101cc28 8e9cc26f-39c9-46c2-91b2-bf02a63c456b 801b203d-1a1e-4a52-9f3e-ddaa628f7a4d 548325af-7093-4150-95a5-d3a148eaf4c1 5a1bdac1-87d1-4021-ac64-85666f0f9eea 2cddb4bc-cb94-4a0a-8cf2-8bdc586dfcac bdb95013-f9cd-444e-b477-933194399d23 2f743283-9bb8-42fd-b5f9-a26e89407ae8 ec776609-a724-4539-99c4-330ad32364c2 57af600b-177c-4552-8daa-a0928cae91d3 1186e85e-adca-4adc-9fc5-7776c253c09f d59084ee-edfc-45b9-becd-3ba4cc7729f0 b9f0717b-956f-4f12-9f9f-1102c3b5b5aa 7e4a8d4e-f385-4ae8-a03c-6dc366364f87 ef27cc9f-178b-4f62-a0ab-ac62db59b083 82ce9f6a-e755-48ca-9aae-849c68f3712f ac713755-45af-44f2-bd3e-73c3fa89a4e9 67b10c6b-e865-41d6-9e71-a9cf747205ce 0a1a32fa-621b-48a1-ad6a-407754d81794 1364ffe7-ed7b-4ec2-847e-a033bb98ade8 15b33074-3028-4842-9923-1e4422b1ece0 77ae7dac-efb6-4325-b0b5-6d184acfc987 689c82ad-e8b2-4be5-949a-681a0fc570ee b803512e-1140-4349-885b-226e0084d1ec 1381ed52-f260-4afd-a565-5f800a268e57 e626a89f-a1ca-42f6-8467-eb57751da5dd 837f8e07-df6f-4196-8153-7a3fbdf65131 9719e0ac-c5bc-41ca-b8fd-918eb9f16d83 26d91c6d-3b54-4439-b55d-915a1dc5e1e5 033187c5-0e75-41f0-a828-e632af863faa fe036228-8116-4a00-84f5-e04f4bf00281 0cafeb74-9804-4ecf-b3b7-faabbd250a79 3e8e88d0-ddf6-42ca-b578-f1aacba719cf ed33aa74-f004-45e4-a68f-3676a200a296 248983f8-6099-4402-a702-378fa9a618bf f0a7f4f0-accf-4ed6-8745-fef2067d0b70 3a879c91-cf7e-467c-b301-c9e703863970 6c5a1091-11f6-41dc-a6d5-6917d298ff57 5e95da3b-091a-455f-8642-eb5ec17fcfaf b7b3a040-9f3b-4bc9-9913-16a97055a7e7 d27d3651-9a2a-4a4c-855a-824678303a80 f845be9a-a575-4577-a6f7-5d5f739445a0 8a4ab0ce-68dc-462b-bba7-c0ad2d486c5d 091ca1a3-ff39-46ee-9eed-1a2a82e68132 c310e7cb-7091-4d8d-a666-095e61c55efb 4d206aaa-fe66-404c-8eeb-6531fcc86e13 9d60f69e-d075-45d0-89b2-d24511ef43f2 950632c8-4c27-4b21-a254-caf93db251f8 173a5a2c-66e7-441d-9d4c-b82254e57a2f d13b407d-39cd-43bb-8cb0-2c043464dbb7 272b2e4e-683f-41a9-9ce4-5f6ffb41adc8 166c2912-c9f3-466d-81ef-6c39bb8b12e0 6ca1fa0d-661b-47d4-801e-edf16174fc76 ffa07860-6608-4330-adec-a0cb83a3c211 b2f6392a-90e6-4d0f-8366-cdfac15b1af9 4d298b3b-f4e1-4aed-bb6c-840a6716610f e8987839-acc4-453c-a6f8-d6c0287e2db2 b29dafe2-3590-4a1e-9bdc-b1aa95e51274 6cd9e3c8-2b19-4980-b5f7-e5f3654dec0b 4ea41c4f-b6ef-4f1c-90d9-54f14ec4b076 4d0956dd-9503-46e5-8fa9-ff3b4910ec29 76ee89dc-94bb-4d0f-84fb-89ccf54be880 31a95026-2d0e-49c1-9918-8e2683afc6a8 52480206-bf0b-4da7-8817-0682600f7bc5 4a6b01e1-a538-4b9e-861f-389ec328d606 697b7761-f203-4763-be78-0a00e8e2709e dd8793b1-eb79-482d-b5df-2ecf0c05262c b0a912e0-90e3-404d-a4ea-f19732ac5db8 3d61f6c1-d016-4f61-9a7c-314865ee9863 822119d0-1658-4008-8253-cb5c63308bfb 320f6595-2684-4dba-a271-cae13d810849 66489bec-1b29-4d6c-a488-bcd9afebba2e ecba2ab4-139e-4185-8458-11d191696969 c301f847-9abf-4d20-a215-3de2c3e96291 53d0325c-e97e-4a33-bd3a-7f790e89de1d ce362917-f29b-4faa-9014-040a92c5144d 5b06bd75-8a7d-4e5f-869b-3f78ddbad02f 9be53081-a4ec-483c-8e28-1263f605c695 dfc7b8b5-8491-4e80-8b47-4c34fc60c144 443100fc-7f4c-47bf-beb7-85ea5b47ec17 4fdf5185-ed6c-455b-8755-88ad69c10ade 80897071-cb64-4454-a1e9-f5a31e800375 15c105d5-9a34-4694-bb4c-2e157fb33505 e6700142-35da-4c96-a9f5-c834235aa5df 18ca0249-f3db-4cd8-ab9d-bf26fb32564c 9bc547bd-bfe0-4c14-bfdd-ab832677a883 48f1fc30-767a-43b3-abb5-043aea8c6734 93c8f143-60c7-4c0b-b817-e687f6c5b4ef 5bfd348f-6902-4638-8144-732193413e56 d6f02d13-5bda-451b-8887-1e163994bceb de3a0e3e-544a-46eb-b47b-b20db287df4d 78ef2712-a07c-4bf1-98fb-21194b088fc2 ff42da92-c655-4db3-b547-d18db6272be0 e74b53fe-6098-48ec-9a35-624874b84b53 a20acd32-b7d7-4656-bda2-0725fb2d29cf ed4261e8-a72e-49ad-b933-dcc8ddafe027 40ba3456-471a-4972-abee-eeadd81b050d e5e6dfcc-84d9-432d-81dc-fad9c0fccffe 45a807a6-05ed-4ecc-936f-63b71cac4b7a 5015f27c-4ce5-41d6-9782-9f8b082d7d08 aae45dd2-9989-4dab-97ca-b5fbad2ffe21 b7df70dd-d82c-4ffd-9926-fcc21c10016f 51d90752-c2f5-468c-993d-6ca315a23bb6 0b9b101f-784a-4678-9b5c-e77bb9412fc9 21a7993b-f330-4c9e-b72b-b43b79b82faf c6fde9c7-0049-4bac-8fc5-1f596ffcb1a7 d09dfb43-db2b-4f8a-966d-cb0f4b453f2d 75b78288-6c42-4f81-b2ae-44975838b390 a200f690-607a-4dd3-8ad2-f9fa03e4f80a 164315c2-6ee1-4bc5-bdc8-44a1ba7bf41f b244344c-4461-4e0b-9ae2-2ac236632ecd e620fd66-4bb5-4206-aeac-631e306dbe86 847d1599-4069-40ad-be12-92b91d3f6b06 1e8aae5a-8d04-486b-a528-c25b65c03914 c0f396ae-06be-4e0b-935d-cd429a3f6605 7310e193-9784-45a1-80b9-e237fdba7cc5 4cd5896d-9587-4e5d-86bb-108af61c3b27 34dfa28b-39ca-4f10-80ce-fc5a5e930090 ef83e83f-4425-4b1d-9807-10f774d0ff24 ef5ece74-196c-454e-97e5-4655d7a283ff 5c471cd2-781e-4ec8-8216-5dc47cbee32b 0f25fbe8-40da-4a7f-9143-ee15a6fdf524 c0b352b5-64a6-45fa-addf-44fb8b0ff4bf 2337eb42-b08f-45a0-aaf1-56f4e17d890a 6426180e-845c-41ee-a319-912c92feacda acf32b65-6965-40b1-bd2d-18835004ad95 7dceb2bb-0c88-47c8-b106-7ade9a38c98a 24714767-48c1-4fb4-b796-3edf5a016ccc 164c3b30-dec7-4e08-9a81-aeecac6c4726 cbed46b0-77f6-47f0-b401-d8b59e3c2a3c 546900c0-0af9-4d10-b3ea-6c3d97d51ce7 35c2cc2a-45f3-46f8-858e-30631b4e7ced a79b372d-4a90-4647-b44a-c833aa4252a7 21d90c92-894a-4518-9465-d1b733610554 19f33274-7edc-454e-b251-f9515b0f831f b43eea80-8d70-42fd-b4c7-5d87afe1629e 79bae4c7-17bb-47b9-bf99-2b0ec0bcc7c9 217a22f3-e1dc-4218-91ac-f75d54e6f00c 21527d3b-a16f-4442-b873-abddf670c1fa c84a8f13-7d02-405e-b4c7-ddf96eb2a53f b8f3658b-852e-4567-808e-b22a162d8e72 1d712bf8-97b9-41d3-8d60-d310c78f2d89 ebcb01f8-5c1f-4765-929c-674d5a0a5aa8 d1e65f64-48a4-4e35-b927-844acbb977af 4ac65663-dd3e-456f-9c76-334c0bddbbb6 7f153d26-b4ac-42bb-b038-63acc97ea2a2 9ef89e9e-1c24-47c2-acb1-9f90600415d2 e188ea97-51e9-4d09-92a7-6776e8b0500b 84b4d1d9-0c48-4714-a58a-4062018a32d4 4f773bd4-89b4-4fe2-8465-78f7a021ad55 6b64575f-47ea-4dad-8194-63fc1844b9fe 27884c5d-d3fe-4da5-923c-86d068e7a27d 351072a8-5ae1-4a16-beac-c18b0c595786 bbdf7ee5-35ac-4975-bd27-83114c7129c2 b60dcd2b-6148-4d63-8cb6-ce5a15e08710 a59e9998-9e68-436b-b21c-0e5ab20ae856 3d3b1816-3a23-4112-b090-852a6ea7e18e 1e8df686-28b1-4280-9881-c85083ad58cf cda66d01-68e0-4147-9b86-37d0e656c743 89479c43-adac-43ca-a8cb-15129e9de02f 200dfecb-c5c7-4b7a-9b5d-08ef3aaafe7b b59095a9-46fb-4e4d-9b96-49fa6c300ef6 38428d65-e481-4bc2-8fc9-7dc4acf7f3a4 cb6374a2-9fc1-4348-8779-fced9f4646ba c32e37d7-75f7-4ab6-b104-ecf8cd3bb7d2 5d529aeb-4bd8-42fa-b611-216e24db7453 a20d4a77-4b8d-4dfc-b997-9a6628065fe8 a06b093d-e675-4068-8258-3efb4cf87ff4 bf5e9618-31f6-4170-9d45-ff16ea93c02f ea2bb395-09d2-41d4-a943-cfd798754e91 f3e11d81-33bb-4775-a3ec-4c924f140c58 b51b8bbd-7c40-4dc5-aa42-990be01b6df5 55e957cb-915c-4010-bd70-b0f56742770f 7aa234a9-5370-4fe1-84f9-4277a3b134cf c2e8c3a3-e5fc-4922-ad33-af04045a7be9 1dce15fe-f9e1-4d00-baa0-10c66ee4dffc c3692a68-4931-4d34-938c-35653fbdcd05 0121ae04-ee25-47cd-9ae1-dbcd47c196f2 a0e99b59-b8ed-4ece-a670-b8ab7e68f150 3fb6cf9e-5348-454c-8a7a-0df42e685fc9 a0d0dda3-f453-4583-875c-c44b0842808a 57104808-bfa6-45d2-98b6-ce49c581ec41 fb71429e-47ea-4aec-924e-cb60d027fa03 ee550525-5397-4907-b428-4802fc9328ed 9199070c-f52a-429c-a856-c773e826bf8d 5b07fe4d-f89c-4c3a-bdeb-232218e29edc 2850992f-712f-470e-b335-6ebbb225856e 46c9bb77-09ed-4b6f-b0e5-ddb9d4abe6c9 454eb118-f1fa-4086-9ffe-3513f21af30c 48c02948-dacd-4157-93c3-57685ab62ba1 a1def9b8-4cc1-452e-b3be-da19d14fec8c 3ca77157-76dd-4969-882f-3fda7d267b61 1034f071-6a16-46d6-a447-50431fffa72f dd5c5820-15aa-4342-8025-7557741ed046 66942b52-9cce-440a-bbef-5b9595028f12 79a99793-b697-4fc3-83d3-b859f03b37e7 4a87539f-ec4b-4fbb-a4fc-2c5efea3f603 efa31392-2c06-463c-ad4c-00959c7e86c6 b9f089a9-3086-4db7-b3a7-e8f7b8a7f726 ad917607-1bfc-4d13-bfab-4a5a990dc939 9d2671eb-0a68-4a3a-ad59-b2ed027c8770 89cfe9a8-7e5f-43f6-aa75-44b06b51166e ae7f6dae-2543-4d13-8eda-ffe40c4fcb23 3ff8b88a-e6bf-4170-84f0-648ed6954152 88452820-59c3-48a4-a4e1-394bf3e07c75 ecd351be-0a8f-4ca8-9a5d-19eb66ffd879 b0f63eae-aad6-4f0b-8eb9-eafa46d20f54 c979a80a-09a5-4c4e-89d9-f626166ec4ef 165b7ec0-1024-46c7-85f9-ee9034400bd2 f5790bce-021a-46ef-a9ee-e07d6f228a66 1a7d704c-a90f-48fe-adde-ea490d7f1497 c50e6ae9-ff9f-4fd4-a180-aa6241952f55 7649312c-dd0d-4d27-ba49-f88c3c16f1f3 5fa22119-d321-4ebd-83d9-20c9bcdc6e0c 1d5f6ddf-5fe9-48f5-81d9-353d4182679d 70c91147-9149-4c28-b846-9f61b2ea075e fb01f27b-58e2-4199-90a6-4c939ab5434b 5ce34a7b-966e-495d-a588-eb890c2326a2 410cfec6-1946-4232-8da7-4f140263aa4b 634e584b-9feb-4726-8822-2c4429784011 7bbf3023-c8bd-4646-9be0-9e409c22de4a 5d76faee-591a-45b6-acb6-37e2d8a083f9 f67cff8d-f508-4c01-98f3-3a54e89e84e0 224f721b-ebc5-4654-af21-d27962fb3e1d 8a719835-5404-4c20-9f1f-dfe8b77fa32a 3ddba538-69ea-468f-860b-5801d98e0365 8d094802-ce69-45a5-9b75-17205c728a82 e59571f4-19f5-458c-85a7-02e54c24663d ec92ca12-d646-40bc-9743-559b844db64c aac13311-045d-480b-b3b5-6aeec085d550 62937920-e594-472d-9848-ba232fca358f 85416836-e284-4a53-851f-749b18a6a6ab 6e2e479c-c3af-4a30-860d-cdf3829b5987 e4ec47c3-57c1-431d-878a-b3ebf2cffa80 03808a3b-8eef-43b8-afab-9252d1fd460a 173e8798-d296-44be-b322-e8ef4eb3f6dd 8e0bd6df-6484-4456-b2a8-ae10ab483c0c 8a9473a8-f159-481c-b91f-ba70520c1ebb 86fda6aa-bbe6-4564-b041-1f04f7031852 ed3b2f04-38fa-44e6-89c5-dcd7ea8a720f 258459ee-e98f-4e0a-b5c4-3e4611f7d756 fa17e59e-975b-4101-8728-e5ecd550eb66 5b6cc0af-4248-451d-9112-f4ccdc739a88 0f5a62f6-7285-4a25-a518-72ac23c0d07d c3d403de-a42a-4378-a8e3-45cc9116ebe8 82b753f9-9e70-4e7d-bfad-430e5e3c838c 30d32a69-2bfe-4c3c-9faa-bb81a3b804ec 9257521c-cdd0-460d-89ee-363e286cbd50 758413fd-1abc-458c-9b45-bc5c39fd5df9 523a2d29-2196-406f-a252-04d68b80f326 25839868-0632-4b83-a2e1-4355faac9bb1 8e69e4a8-a76a-4dd9-980e-a66f325dd74d be4257ac-482e-4739-81b1-31963891127b e9d957f6-9aad-4f56-a3a6-2674728a90ce 14dd2a9b-4529-479d-a8e4-62a9a37703b2 3cb81115-0bb7-454c-a665-6f10db22dd34 91878556-0b1f-468a-9c33-4f69dbb77d09 3b074b9e-1d0e-445c-966e-3a1d27678e59 66415a8b-afad-40ed-b7c8-738d8fa4f47a 54d0dea1-2b7e-4437-a327-33ac79fe0f27 f08d15ba-9900-4025-b71d-8246e8ab7a73 3e375022-2bd9-4583-95ee-7bd7485b744a 0936df55-93f8-4d58-a231-491078225c86 94b67fdd-d790-4d9d-b8c0-3b41d2ec9aa3 457eecc3-0a87-4452-95a2-5c96af223f8d 99b49849-c8c6-410f-abe8-74b5fb457424 87621418-2cf9-4910-bbf9-52fa313cec89 14e9b45f-a27b-4b21-b76d-827d1bdb963c 15b35874-ccca-482a-aa35-06c2d028222b 65b04911-953e-429b-b503-3a4210e5f498 be16c924-2a4a-4546-9ac0-d321b53e26d7 6af4b12b-ef66-483f-8b07-0c719739e38c a9dad05a-ed8a-4ded-8991-8c08bdb6dd3e 4bffd9d2-6110-46df-86d6-f8c030ed72bd 310eaebe-7dfe-4784-b85a-a3f2db320414 6c1d4ab5-8a6f-44c3-97f2-303738cec303 4e69d5f6-82ec-415e-9b08-c8556895d3e4 e8a14e4d-05e4-4026-b6db-8926455e30fe 7ab4a395-a19a-48a2-8c40-8446a38d2b8a 248dac7f-ac07-44fe-9c04-7e4743671cf7 b10fdcb5-d596-4751-8c09-b143dcc5301b ae357dbc-074c-447b-a290-602406013d3b c3ae1b33-b80a-423b-8ced-a72b149da9a5 0cecf8e5-08ec-4bd8-9948-c476c324bada e3fa428a-703e-4ec6-afc4-95fa97770c6c e038279c-3e05-4d4b-91eb-11e7f442e062 a90ed764-9c7b-4d12-befc-e1bb3531b421 5f57e041-6e9e-4c9e-acef-2990e0a84de2 d99a92ea-7d49-4e51-83a7-a9530b2cfe5c 587bc721-e25b-4f98-b95c-f513254f40f5 51c330d3-4a77-4f84-a486-ad5155c2ad22 7c37fcfd-2c55-4f19-80e7-f4d6a63041c9 a2f4365d-cfb6-4e30-b1e7-757df2d85f5c a1318f6c-8e86-4c0c-a2cb-5cd78ddca000 98e2df1c-42be-4a0f-b2ae-31cc038c7a4b 2ce5fb68-6949-4d5b-8c1f-0acc79ae7ee4 d9a95ea1-f331-4856-9876-b8ef58ed611c 2f467252-1dad-4e20-abdf-e5c606d21228 5cf0db89-8cef-4fdf-8809-32f60205b219 619aeb9a-d72d-406b-a10a-ada6a6790f59 e5c864be-fbca-4bea-8ab4-1772b2bd74dd 26a87cd6-b334-4597-8f6c-2372f5333708 13367f85-0b0a-4628-8621-36c5416c89a3 a48d629f-4c9e-4240-b1f0-9cc7e4063826 6fc38b99-5172-4bd8-89c6-50620a974881 cad7ac71-2b21-4e35-a2bd-1bb59fbdf939 4d5edd67-6467-4ce3-9039-4c855c55770e 35fd0f87-226f-46ea-be32-03205804927b f911c6b2-850a-4c2f-93c1-6b7225cc215c 91161820-ad6b-431c-8030-c58f141959cb 1298d9c3-d956-470c-8712-ee76f0a38914 5dffac2c-c8b3-4570-992e-e2fd03eda6e1 8b940761-2c37-4a99-b837-981bf1648dfb 0bc4a28b-6903-4a24-ada6-ea399b5eea56 464aca8f-d8e6-4acc-90af-bb616d53a6da f59342fe-a0c5-4f33-a34b-5deecd5e4cf5 3aa4e1c1-f267-4114-9a0e-f47bbf53647e a64aef7d-ad28-434d-a9e8-dbdc263353c4 ede33300-a90c-4739-ab45-d849b9584b65 566e3b82-98c0-4692-ac24-d98aee0668c6 811a5b75-0cc7-4935-b2f3-5edccc5a7e9a 2efb18fe-80e5-4b1d-8043-edd597fde417 5569be27-d306-4990-972e-d4a62529ddc9 2da1691f-3970-4417-8268-bdb4f1c33a61 b0bcd960-12b5-4038-bacb-683022241a9e 3830eee2-be67-4a29-aa7e-f389517f29a4 fea0e18c-7411-4f04-a47b-b7544132dd88 4ec507e7-7ddb-4736-a7a6-f5b6ccec2bd6 88290131-f18c-4597-89a7-72b35a7f2837 eed3effa-0314-41a1-ad6c-ba83ace2b50f 9c37a9a0-57d0-4527-9214-9d0542d6242f 14e9789e-680a-4ce2-a927-78cb68a11b0f ae709ea6-2dff-4243-aa3b-40acf9963116 0404b76f-645c-45bd-ad0f-ae7b52106d0a 33ba785b-6e38-4cf8-b9a3-0ab552649cc8 9011c931-22b2-4be8-b77e-63c77c530f8a 2df41605-3dad-4fd7-9ebb-ce7b34c359ed b937ec8b-8896-40ac-9d2f-2937bb06df82 8f5dbd2c-a7fc-46d5-afa2-615a5462bbe3 7e4a8c3b-8084-42a1-a9e6-db254328de35 65b6bb6a-b74d-40bb-a493-66798a914386 a1735494-e003-4e33-84f2-65fcc0131665 f37a4510-575e-43d2-b618-4be602b1b222 2adb5ca8-e1d7-415a-8578-9ffcee3da0f2 7607e175-0637-4834-8b83-4f4aacc05915 a8380c65-4111-44c9-b241-fa76a0e37764 f44d82b8-af29-4cb1-a6c4-11fc41041779 8de07667-73a1-4735-b283-d134230da228 8d49e88c-a9f5-49f3-85cc-b8927bacb3b6 91cbd171-e93e-4f42-b133-01f75a965c6a 988467b3-0e00-4ab2-91c4-e8a662d371e6 4e362b17-7dee-46c9-b84d-ec7e8b921adf 4d0202a1-38ff-4cd0-9d36-fb77e498ea33 02ea4502-5f99-4969-9236-a1174ca487f7 f7d8d89a-a32a-4556-b98f-a3b29cb5c48a b288e665-6997-4d9e-b2ba-495732659563 77f24414-07fe-4557-997c-7a7cc4d5aad4 c7bc7bd6-51a6-45a2-83de-5e2734976788 8b04f7a6-67a4-4f61-a579-9605db410138 bf982bb1-30c1-409c-b48c-7423bad00c43 1ce0197d-f38f-480f-a694-0729f573f428 d3373f01-be9c-4321-af7a-f97924eae1f0 c747be19-8c8c-4aba-a45f-37fe702879d5 9810cb1e-3580-4b74-a2ce-812143613061 96db1bc7-9567-4640-a67d-57e0da553f95 730eef46-6eb2-4200-a634-b1320808d5ae 8b10d815-44d0-4ed9-a634-30212d10c995 fcb5e951-feed-4a54-98fb-281b6a3f175c 094f2cfc-c0f4-43ad-8d8b-254e4ff2649b 849f7ca8-e008-4363-9eb4-3db267f7b75a 6b8fde73-4d15-464e-9f5b-985f3ad21df4 c8139cd5-b77a-4e09-9659-3b86bd6c3430 71f48328-2380-4bbc-98ad-201330279108 5f5acf42-4c4b-4dfb-a600-e89440cdce6b 11874f96-217e-4882-b443-a1b4cd4acce6 3b79728a-4b86-4a36-bd0b-50765c878a02 bdee151e-e2e9-43ad-8afe-53bd7df7807b 8f3a1c96-0357-4748-a1ec-d6c44ff0608e 2758b88a-7727-4c3e-9421-12dc11a69a4a 5df511cc-39ef-41cd-8e61-e0ae85f06561 cb29fa6d-30d1-4139-ae77-6f02c6b11d2c 018abae1-7e22-44ea-ba0b-7f6096b4b712 9ca96d6d-ab0a-4ff7-95a7-1edaf6dcbb29 960df023-e287-4e90-82c9-f3d7f1588f11 12ae7878-6dbe-4b38-bb0c-3e34eb01614f 3296e8ec-3053-4c88-bcd8-aca4eb2f4ca2 caf42d5d-4867-4e77-80ec-297184a16ca3 5bbd159c-b16c-4be2-b8e0-de8e0499a485 2739288f-120f-4672-9f3d-faa4128080c1 1d437a3f-600d-41ae-819d-088b93bf4879 0406b361-e7f7-40a1-82b8-0c85cebee61c f86d824d-7b2c-433c-82da-7078e375903e 70d6489c-d4c6-4ce1-a30a-f8b299d337ac fb7e5203-4390-41e1-b76f-c886f95b0132 2c397b9d-ac58-45a3-af75-97faddaa7042 85768235-a070-47da-a99e-d1f548f70cfe 1c5e8a1c-64ee-4285-98a3-1b78a97ada4e dea79381-cd2d-49cb-a754-2927c34f3b65 6502b8a0-6ecf-4bb9-952e-8aa26ec65920 f9e5fa62-8458-42fd-bf3b-cb0458e22b81 bf011980-ff88-48c6-a582-9e358c85ff8b 18ea5c1d-368e-4aa5-945e-cce290c388d3 19564419-8e86-4eea-b311-4e4ff94f9506 17648217-c88c-412f-8ab7-663fcda7b87d 058e82d8-56bf-4188-896d-214cb9bd034c 6f423f86-e778-475f-9fea-f2e9cd2d9ba6 503c5c7a-7dd9-4755-96f7-240800b276f8 85f93b17-fb02-4541-95da-9adb1e0f9d9b a1f8a1c5-5aac-4b12-b3c9-5bd28986e279 fa5a0406-f55b-4ff5-8b2c-50af55c08f48 a74fdb7f-da16-4741-a57d-6ef0d7f5b7d9 da9072f2-f99d-4fb3-9d0f-2d78add4126e be598617-4339-4cec-8192-b1c34eb18cb7 31349862-dccc-484f-8e44-6d03c9f32d70 9da83830-a00d-4276-bb82-5ca32c9b09d1 748755b4-b328-4e83-9314-de9b532790ce bcb5a125-eae1-49c8-b9c3-77e1016637de 74ad2aee-d018-42ad-814b-ccb523bf4635 8b56dce0-2456-4860-b995-3c5970db2ce4 045dcf4c-b287-41bf-b9d9-6deca3797c72 3e195932-5228-4b3c-98b9-17a62f4504dd deceb2aa-9e8c-4424-a987-5a2b19a0851d c425fc6c-7a2d-4bd2-b962-229e8d863f1d 0a9348d4-2d08-4848-80bb-fe096549cade 8ab70956-a697-48fb-a315-909911dcbd58 dafed39d-fcdb-4cd0-b6ff-f9f3991c775e c5909696-6723-4986-949c-fa018f27bf19 2b5b8deb-86bc-48ca-bd60-b8152d9f871a 22933676-15ac-4248-9811-f05c4d3c498e 155aebe7-ad1d-4ff0-9ce3-d6738bbe83fc de52066d-ade3-42e7-9f52-d86a3f3d37d1 28306639-ec87-4348-b829-692b143197d2 2f828b9a-9c2e-4433-ab92-c0a6f5f9cf8c f64cada6-2de5-48b7-9dd6-9f70fe09674e 4ce4971a-4dca-452c-9204-cb1560fad8f6 706fd7de-7d8d-4ed2-8a57-b7c3128af99e b2def1f0-1b14-453b-a322-eab964c774bf db0a8331-9145-4613-87d0-616e01bdea10 0256eba6-570f-4b9c-9ef7-364aa5d0c07d fc38ed89-286b-4def-83dc-3ab3166b1ce9 536342d9-10f1-4870-843e-b13fd1a5af2d 9007d035-3107-4777-af09-32d447ba6fb9 aa195045-e609-430d-942a-c08ac1cc2ed3 43d51326-19a8-45b6-934d-79852d809bf6 d31e12b9-a4c3-4745-b41b-adca8815408b b055ced4-50a3-4c7c-be15-4ad0acd4ff34 1160645a-b58d-49ff-b4f1-26a2c515ad6d 05e820fc-d9a1-48fa-ba12-e03cdb0ae818 ef01fe73-c7a2-48eb-9b88-5674f684c646 62acb179-f31d-416e-a7eb-1a9fbc22605c 1b1bebb3-f781-477f-bee3-9f7ad52d34d0 79ad6eac-dd79-456e-8795-8892ac283e1b 5ee55bba-da67-4b60-842c-89e4c6a745c7 edb521ae-833d-4c5c-9aa1-a9ea22ef5765 4151e9de-2654-4c98-9f39-b93fb7fb9755 edd66e70-fbdc-4c4f-bb71-2037bee0dc33 ac2f0cee-548a-46c8-9ca3-ed412ecf4a8b 2e4d5c39-fd10-4b79-ae8a-70861e794ae1 7cfaa130-bac1-4495-a1df-e0dda733fcae b67743a0-553d-4e69-9114-318cb4f6cdf8 005be0fc-3b33-487b-a220-b440e0b2bc74 09fe922a-a3aa-433f-aff0-0ea969412ff2 61c5b1e4-6fa2-4189-9590-836f4a3db33c 24d1f0f2-afe4-4c05-bdbb-11d94d37f055 decf70d9-bfbc-4530-a59b-f4ff8b94f0ef 062dbe6c-33a5-45d4-8fcd-0cbcf61a5045 4f772090-d28b-4934-a92b-c4b07ba5a634 eda01a27-523e-49f5-b7fa-a7977e104687 39e21aee-e669-4db0-98ab-0e363c97b3c6 28fa2de8-859f-4dc9-b8b5-86a7e81a8de3 5102abb7-3d65-46b2-84b4-cde90d0044c3 c5ca76bb-30c0-4d6e-aa4a-2c71868aef3c 2e3f5b0a-fcf6-4ac6-9a65-c2a3e8715f7e 10e7a202-7e97-448f-a40c-4dcb3a473853 26984c34-e787-4a33-996a-49948c449ee4 a655672e-ef86-4014-bc37-b92d47161a25 81858ed2-dd55-4d01-9729-bb081c5895c3 a8fd3a85-09ca-4d2b-b527-1777205ef9f4 bfb75f56-3fc4-49e9-9908-1921fd5781ba 4b73414a-887e-4f23-b792-9c2e8015a51c c59d1155-60e9-483e-bdde-c802307f6672 fbe15683-d995-4814-b7e8-c09454028038 91b83fef-aa8e-4c72-987d-faaac9eef633 6ea01017-6aea-4aaa-b908-ab28a11b00a1 c820d2da-ae7b-4c1b-aedf-f5ae126b0915 cc02796c-fde9-48af-8fd9-08f65bc70b3d 213d4a48-5291-4a2d-9d1f-89348ce54e2f 3ff98202-cb88-4abd-a7e8-b2c56f5b88b2 1a91b37d-3a67-4018-9782-8c1f5f57321b bbab856f-4388-4a30-a496-77b5cc13c51b 997ce1b8-1ddc-4c31-b9e2-0808f57e5522 40a5377d-d49c-4aec-a1a2-6c74d3d6f2cb d2b1a78c-bb12-4b1f-b83d-c08197b65203 f0f9455f-2cce-4816-95bb-566b7df647fe fec81559-f607-40ba-9bc2-9d7344e2dedf 01cb556d-17d1-4d73-b227-ec53933cec24 01eb25f0-4953-4dc3-b397-e0b612b4e200 812ddc77-5d09-487d-b8dd-f3fbd3c11b3c 3005833f-8883-4141-89af-e49fe783414b d16a9cad-65d8-4a92-b8a3-0f9e0a6635e6 17166e09-521a-4b32-b349-1b2e407f84cd ddaae252-cce6-4fe2-a5a4-2db5b5c6a1ad 9662a420-3bbd-40c7-9408-76167b8ab32b 36f98ae7-21d9-4bdb-a7fc-f3c14947bf57 f6db4046-8c90-43b5-ab81-c78386f5b1d7 4c1ff67f-5c77-4f2e-b622-490cf5662361 6b47d824-3d11-47cc-a474-049485639657 07d61a73-a4e6-4819-8e8b-6c09e45667a1 fe81e137-d6c0-4af8-bb40-71c979ba753d 5a2d0713-1976-4052-82d5-73c3d8547a81 3592f664-4fb9-4aa4-a40e-9e1f371fa983 92eaec3e-5f4f-4d8b-a684-2cdf40ae7e8f d66deb00-7c96-4747-84c2-d87fb5816a7a 79a894dd-46c7-497e-80f2-3b00f955d861 aacb285a-3092-4b02-934d-cb1c22230261 5f1f4af4-1f22-4804-80ea-a4797a1168e2 ba02ebee-3d68-4637-8aa9-0936e782d9ba 80a8462e-5873-43cc-9167-8e7b0b4751d7 9bbed26d-1675-4fd6-a18d-1e824ba2a27e eb751a05-ddb3-4363-8515-f0f808500322 9a431296-1976-4b7e-9319-9a376f275365 2ee3923c-78a2-40b2-8a02-934810395f6e 23211f57-2359-406c-9fbd-a52c142ad2ec 2b466a21-7542-4aa1-9fc6-be3653aa2e4b be88f5ed-35be-4cde-a49b-29efa4873dff 9a26eaf5-9ba3-4391-a35d-41d1a883cca1 464a1703-eaed-4a11-ba17-4bc3b78573b8 37eeaeb1-a019-417a-9272-cbd92c09f28a b1085600-3afe-409b-bfcb-24946c819224 bb4647a9-b755-496e-9101-587df760bad3 20d2d7a7-de62-4fde-9b1c-3efab85be57e b88170dd-e75b-4c62-b80c-68c44d2dc431 43e722b0-4ca0-4391-880b-539a917d791e 6df9316c-7cdc-4e81-a569-d76a890b0bd7 6bb7535b-e7f9-4e3f-91b8-30e70e10a7a8 e07f06d0-a0de-4acf-9445-107cb31e6736 6fe6d7cf-cdb3-4ee5-bbd7-04789f7d00ac 6577f7eb-a987-49a6-b6c5-f6d0869eaa0e 2466353a-d1b0-46b9-a15f-2aa58ef65cd9 030d7011-83bb-49d9-ba1d-8ccc8410c2c7 e434f1f1-4657-4436-9344-9747420a0b83 0afbea80-6add-4bb2-96a1-9adc09050ca2 390802bf-cdd8-4233-a22f-4b5ed0520057 b17c6f17-45a9-4ecc-b9f6-bf99b3ac25f3 75fdbeb1-7bb8-476b-aa11-d11e951bc282 7623d5ca-000e-4c94-aec0-a4c437eab201 c5696d56-6e84-4c9e-9c86-421f65e8332f b972a35d-83fe-4e46-92eb-9a36f70d90b9 f2ad2ebb-cb53-4f64-9eaa-3835eca784d6 0fc1ea36-b6da-425d-9e2b-f61c5f7ddff1 770fbbea-70e4-4cc5-af2d-14ab2e9a364a fad8711e-f8f0-4865-82b5-17d145acb496 995d4bf5-deba-4e67-b5f1-7de8ae9c7a57 14d927e8-9caa-42c4-8c6c-31ba2dafa453 65c7d370-45e4-4ff9-b317-75c7cb62cfe8 a8379cd3-85fe-4209-84d6-546a3355f539 f02941fd-2aa9-480c-8dda-ec8800dd284f b56704d4-beb9-4434-922b-1e8bb4682c51 bbae43a5-3fae-4ed3-ba52-9faf47de817c 8e77057f-dcc6-4ed0-9dfe-08687c4fda50 1af8994f-402c-4468-8e37-7aa573745673 c1d8bde4-9a3e-4d0e-9932-42f790c788fb 76fc873f-dbdc-49c1-8a97-5d53b9fab4fe 26db7d49-5057-48f8-8f14-30e25ad56c81 ce091605-f3ad-4cd4-b2df-1c818526d130 092c0039-2f06-470c-9b75-142082334d22 dd6d9ca2-5d00-4d3a-852c-3e9cc4ae06ef e00b619e-ee1f-4176-a566-1d836588bd39 d48a0346-26e7-475e-8861-b05c8f5aee4f 5bb7d6b4-ec93-444b-a57a-760630ca0f70 676924ed-4bf9-4b56-810b-ff1b753dad41 bd63fbda-28ea-48a8-877f-c04ed6ed7594 b1c7845b-a26f-4de0-aa5c-381192114e33 a809070f-2d0f-4dfb-a3e5-f6c12945ad96 38cb258e-49d6-4c72-a2db-628041a19aaf 2265b824-43bf-4b96-bfd2-552c46c10fe0 9895b45a-227d-46e9-8556-bcb7f791aa21 06785519-ae6a-45ba-b07d-6ab79d60c6eb d1b1a965-97be-4516-b137-396a1560dca6 a7941e74-f563-424b-9c3e-c128bc90c1b9 b676351d-1fda-436a-938e-38179ccda72a 494faa6a-6140-49e8-9830-cb29bffa6ecd 93ff660b-f75f-4510-97e4-9859ffa463be 25159c8f-253a-4e3f-ac66-68f5ea30eddf 3ec0226d-175b-482f-88fb-86b12cedbd46 6e3c2bfb-36bc-4e29-a8a9-a87cebfdb658 4159e763-f561-4d87-adf9-f8aa6e0c085d e3bf2bef-ff73-40ec-b6d8-6793093a7088 2b9f680e-3e8a-4e98-990b-9651c2cdfce1 e1ed7d9f-a955-4714-aeba-5dd67999399e 714b7695-7c88-414b-b4ce-5a4a80853ba0 c7dc07e6-4e97-4ccb-974d-8d30169ecc4a b96ca6f2-bf7d-4cfb-8fe6-a06c20735a7e ab71baea-7604-4633-aeb3-89234dc14b9d b97c19b4-f47a-4d2c-b74a-3ec0ef8395f7 52ef72c0-1621-46a5-b2b4-c8529cef1e17 cb3cd871-a2ed-476a-a1d1-f0cfdb3b2e14 30cc0c53-68bd-471a-8a0e-d5cc0045aff5 930f6827-89b3-4adb-92c7-6f8e34b02391 ff8a19a0-7049-4b38-bfbd-03af7f8e3eb5 480759f7-7b3c-4168-a1a8-68367160576f 44e55c86-d678-4e0a-a552-7fc177a910f0 9f4c5e5e-ede2-4f7b-8ab7-e4f4149a2d34 2a3e9d41-15ff-4728-b2e5-b27c9336f096 f3aeb204-8435-4f54-8202-ef46da58bc22 64957b38-a264-4060-a7be-628cf30b273e 84a8b3bd-7649-422d-9f81-06a6052b3288 8d84e2f3-3d31-4747-88f9-bca5102009b9 bbf41a0f-37c3-4b7e-9159-ca252ba83fee de29ab89-c944-4f99-8f6d-440d131148d2 a59d67ac-638e-4829-9ac2-7fc108a79148 eb36ce65-367a-4615-a833-e8b64729da39 2cfe5a0d-12e0-45ca-9008-f108b11b0de1 252bc2da-751d-4668-8907-508814b62ae7 d0f264c6-0567-4ead-8146-b06a61183f42 efc9cc36-b565-4417-be4c-afdf25767d88 66104e06-bf00-4870-8349-174986b979d9 cdfd9b9f-66c9-45dd-bd28-a64d5747e2ab 00f13dc9-4029-4f9c-9fa2-ddb2e22a25aa fec65a2a-c1d3-40cf-9fdd-fc52e5b91d68 f66d1f1c-02a9-4fe9-b0ba-719c6938f47e 5c7c2d37-be8e-4a26-a7ff-3be07750c723 16fcfc31-f44d-4b56-9676-f96a4255ee83 79738e5b-db55-4396-a9b6-afc787475817 fc166336-9205-4f7a-be51-2627df3c0c7e 35923ba7-2dcb-4af2-8e22-824b99f91017 419c6606-64bd-4acb-97a4-cee1e5b1193e 0a104f9b-0600-4172-885c-5a983f758e63 e32e7e8c-9cf5-4c7a-b567-f24773619d57 0dc5694b-6cb8-4785-b19c-20a5adc9a8f3 b7ad7492-b33c-479d-a380-1693bddea012 6a5a7a6a-7e57-41b6-b1e3-58033bda6f6d 5ace21b0-b387-40ce-8d4b-2cdbbe8e8e7e 9b155fa6-6325-49ca-83b1-a299fefc8ca2 974ae1b1-fac1-4db4-b703-b3a4a5358865 2e2895c2-f733-4978-b562-18871d310cd6 4ddacad0-3c8e-4fe6-a1f8-906baa59c878 5e5311c0-45ce-452c-82b2-57517084c360 0a887921-dab2-4df0-bd22-cb5c3b0fbf0e d51dfa16-90a6-4f1a-ad9f-43aac46c80a7 ee8b0f92-94f7-4533-a791-64ef752b3ad3 c856cd6a-95f6-4792-b4b8-645f082aa34c 0f5acd94-193f-4837-9a65-2d92bd8f3721 2a135161-2dae-4fc0-b0a1-2a0d9b52e0d4 aeec585f-70f4-49bc-8865-03c6b445cc98 6953b57b-612a-43ce-88d8-bf93e4b7a40b c3dafeff-9351-4839-84ca-1c9c421efeac fc6b18ab-6612-48a6-ad30-0e5051f1dc32 670221e9-e6af-48e7-8bb8-3ad4ad13f4f9 48870dfd-99a9-4692-bbec-3f718845c747 21fdfcc7-9ba4-4a87-bd9a-8be7db847bd8 1edba011-645a-4eb7-82f8-a191fa31385e 843123fe-8dbb-472f-8099-7e47a0bb7f1d b10d73cf-2343-4c5a-8343-354842f1c9cb cd2c59bc-ed2b-4396-8980-5a8eb7395d5c 1ca645fc-09c5-445e-a029-43fcfc2e1efd 8dbde2ad-8a17-482d-86ee-1f9dc9bd380f bc7ef9c1-6769-48ae-934b-4cf1e143bb47 f745a657-a64f-4173-acad-70976f382004 08408c40-9aa3-4309-afb4-10e9cfb2e87b 047383c1-d1b2-42fd-af93-fa34c0fa0408 c3c32823-04d1-42e0-859b-7c0a47cc1c6e 95d2494f-5fef-4b38-9c75-5804cf7e5156 0cf8a4a5-5a4f-4040-b75c-d1c1dc619512 6c0f72fe-f292-4169-8031-fd590ad42f1f 2a0cb128-d6ff-4bf1-aa15-69514cacaa36 58160198-6771-49dd-a6d5-9848a9a44fc6 4bb28e67-ca68-4302-aec8-c14807a6dda6 312108ec-1e37-47a9-8393-734be92661e3 da0111f5-d845-4a81-8f36-adcd5518dcb8 d9345e35-96df-4aff-aca6-0aa284fe2df2 09884a32-96ed-4cf4-9d42-9b2900e95f49 6764d871-6ed1-4fa0-b170-33fc64816c90 ea25bf6e-0b20-4a02-a5b6-c2ba5678fd30 caa3440a-be56-4a68-8882-22473a91337e ccef271e-8a76-449d-ab01-afd693a6ad0a 3b0fc31b-6ecd-49b4-ab53-ce9ccd3b37d7 b182491a-9134-4dcb-9db2-eb1939360ca6 69fdf767-f895-4bb9-a165-de5b4eefd0f2 c83507f9-4bb4-428c-a3f8-c7d47b9b4739 f2540cc7-e427-4d5f-89c4-cb3f030e492c 4a99b6a2-2916-4bb3-8bf3-19c61288ea91 6079f20b-02e6-4c7f-86a4-d24fda60061a e8c4236b-de10-4b50-a979-86cf58ac4a3f d7dbc74d-44e1-4d12-808e-f8a8d854cb93 2413b59c-9152-4bca-8dbd-d32f1c447a9d 5d6b2e6a-3243-426e-a1ac-7909328359a3 9e566ca9-d1fb-4eb1-ba5c-a202b42a2f4a bd377ae2-29bd-45ad-b3ac-c87a2831afeb f7100ad6-8ad9-463e-97b2-313544eec8af d6443f02-83e4-423a-a663-57bebab1ab9c 1bd5b37a-a3b1-4baa-b6c1-c4bbcce8757a f985a048-762a-494a-bae1-73ffd2283661 360856b4-0bc6-4590-abc4-dd4c4421e919 5df05bfe-a309-422d-9754-8f14d6b47d10 8614f503-f2d3-4e3f-9a0a-b8a0b3a8d1d2 a0d82883-f368-47bf-84e6-0a79b188df58 d2b43763-a4bd-488e-b6c7-9703745bc8f4 b384ec56-2c70-4738-b2ad-85d050a9a8c7 20e29637-1872-4055-bcef-e83349ae3afb 293d98f9-5ea6-4647-98bc-07b10eb3b630 386a4ab8-08f2-4271-8d31-7ad230439747 bb244371-e03d-4b12-aba8-83a12c324673 b0c5d344-95e2-4fa9-b5d0-5bf85fb46a87 a1151258-2ebf-44e4-aeae-48eb8800eaa7 0b64187b-16c8-4aab-b26e-bdb2b20d680f 14336d47-0c03-405c-ae80-ce35fcf95b18 a4e66fa2-30b1-4539-9f01-11d6c752a5f2 1e8a21dd-685e-4923-8d78-c7d1e78c06ea 1a0e9178-223f-4912-ac39-5923ddf372f5 4d49f33c-ead6-4c72-8c16-b4d7552c628a de2db1ec-53a7-4e83-86dd-63acb5068ae3 7d8d0e03-a8bc-4a1d-a7f0-5c1a424a1c39 dc5d66a1-061c-4a66-8392-429333d230d1 6ab62482-334c-40d5-9654-89b0cfd9c1c2 1d6cb1a4-c63a-4216-8eed-e8dd765cd655 f4c69806-fa98-4204-ab4e-ed89366a96f1 0981cc85-6870-4138-a630-098ad10d635b db8ec781-6bb5-4f5b-9d01-e9a6a78f9e2f 4da6034a-6d90-4941-b1e9-229e3f1e2f7f 36f39f2d-4c60-4b27-b2aa-9c02352a2aac 0a5b9b3b-c973-4d08-b211-21d23a6af761 ef11b83c-68d2-400d-a716-2a050357e158 a5841103-f249-46a6-889a-c1b3dcb372b8 f6574e16-55f1-430b-8c63-6e782126bd07 43e2e44d-37d2-4ea6-b9c0-a0044105b47e 9800a019-e620-49a7-a0c3-35dcff4b16db 219ce630-78e5-4a8e-ba3c-c582f7f2a6ce a2faf331-f89b-40ce-b291-01abfc31e438 ffbd4cf3-8798-4aef-8f8f-12872a62d536 c1fe66e5-7d48-4e45-8f56-e55a565b6a12 2befd7e5-fda9-414d-9460-884ffba5e27a d48a20fa-0315-47e3-b134-0407f8d06ad3 bf7ae745-0aa0-41ae-bf18-1a6a93180007 b052012c-f2f9-421f-988b-5187f3f4191a fecb1d7c-ad68-4f35-a53a-a3dd26d2a11e 60c92c74-d97e-46d1-9afd-a2beb301df27 3face865-0658-4262-8800-1da3b06d242e 939a0061-b257-401b-8e2b-a72dfcdc2940 e2c1abd4-4aa4-4e0c-9684-eb185b954441 40f08cf5-9944-49e8-b0ee-472dc0eadecd eaf7f0a9-f544-44a6-8660-0ddcb803de3a 803e93d6-d226-4841-9f04-b08b274d32d6 11fca78e-c2b3-4b22-a675-cf3a718388b5 461536b6-d2c4-4518-8bfe-dc847f4f0be2 e17bd2fc-5805-485d-a668-a81984fd4fb0 f1ec2f67-2940-4aca-8a1b-1184248cc0a6 c2930c9a-200c-4adc-abfe-8683334a0c82 0b36e3ac-5645-402b-b254-12e9ed12f4b2 6c523134-0ffd-439f-abee-fa19c14485ca feb4f48c-b530-4200-a068-b6513ea32efc 49a1458c-be0e-4405-a795-4b30b3704662 3298618f-26eb-4a8e-a458-070295c2e94e c3de3c9e-64d1-4e30-b553-ffd0126e07c9 6755b9dc-5d62-4930-8717-21560d3daf4c b2c57e6c-c19a-4d3f-9542-1b63a4ed92ee ae0ef05e-425c-420a-a5c2-192bafda2d45 946709bf-aa2f-429f-8128-f0e44e52eb76 d0cd7aa8-4f74-4b61-839f-4edb53780e29 c00edf03-eaeb-4ac1-9448-264a8f4ad28c 7e5caba2-ea09-4485-b407-3d1b5aba696a b8f77c96-0577-4bda-b0b0-669d0e5294d3 6d6f6644-6a40-47cb-b45d-3febb73b5d0c 6a5a6dae-0d4e-4c4d-b8fc-034f00398190 df967122-0ba0-4cf5-85ce-d72bdd9e9640 fe76c5b7-5b17-42fd-a8bf-4928d404b264 26b92592-3ee7-487a-9a65-f1f42c40c5ee 9afd681a-03f3-4fd3-84a2-6b2f7dafb82c 65ff1399-3a36-4a61-9f92-f654e0332e47 588490c7-b4d9-4645-9e2b-d71ff704949b 47121dd0-8c77-45b2-acf2-278471b7a7d8 32c247e8-4c2f-4945-9cc6-e5925876952a 3ec23299-be73-4b64-872a-11ee52208ea9 b5c82868-577e-48c8-a3bb-f49e7cc00788 8117a45f-e0f4-44d9-bdc8-a704eb795be6 eec84fb5-feb3-4180-bca5-8587c53b52b6 2729daa6-4a16-443a-b63b-1e74e19c69e2 9ea28106-7e47-4c29-8074-36f6ce700ebb 30ec3b03-cbf9-44fb-ae4d-155846e837c6 da2b9bad-2bc5-469e-823d-d20525ca36bf 7aa21e0d-4497-42cf-80a1-aa959ae01d4d ef0c03e0-2f53-4d1b-9aa6-cecb5dee7b23 8152c816-7f25-4005-b6ae-5d2a4301ed26 e8dd40c2-1d2d-4254-965f-27bae325d322 da8a3e5f-c6d0-493a-b884-23ac749871cb be572fe3-3acb-4e76-aed0-21d11e43b423 7cff11e8-a0ac-49b7-b035-8471d9d8461b 6a340b08-c699-4b0e-9ba2-35b68abf4016 ad4a9ea8-8bdb-452b-9f91-a4b4ceda9b65 2c258982-17a1-4f2d-ad57-965b4876461b 62c3f53a-a49e-47e0-aee1-7475f7e54778 271fc1fb-10a8-44c2-9325-c129b7cf37d7 808ab084-2b34-4f89-a075-7a40809f36bb fd6bc484-c0ee-489a-9031-7c84a6298c9b d0c8e0a6-98ad-46fd-a28c-3ebd5c29e1a9 b75d6861-0f2d-4408-80f7-7b0569c5d550 45d34eee-773b-4646-9711-872acf8f1288 115f6ab8-71db-45d5-bc00-3428ecb955a9 da3e9c78-619b-4cc5-9b46-91186ef92e9b 5f31160b-d526-43b4-9b2b-d42525a9b446 b492f322-3693-4479-aa05-719e40426cda 6446c11c-05af-4bf2-b235-3239e3d9924c ba8e2b74-3f89-404f-8bd3-37387682cb3a 32438edc-68c6-4bf4-88a0-2981760a2715 60fc3c2a-6696-4da7-b637-111295186f16 52b0be1f-42a2-4f61-8ca5-1d933b8aaad5 8620a7fc-e882-4f8a-b159-6d1a2d2ae2d4 7336d578-9c9c-4916-8985-eba133fc846d 77344dd1-0534-4941-a05f-e6767cce6141 d1644767-79e7-46e4-95b7-3e96dcc65f52 c6ac1579-68d8-4959-b4e3-224687461fe2 afe548b1-d261-4b7c-abd2-d0ba245080b1 af057da6-0ed8-4f68-84d4-9bb664d4959d 92593c6a-db75-45dd-bf96-ed26942b486a 199f1a2a-9a2b-49e6-9928-32951006fe0e d3bc220c-2b17-45cb-95e5-fbf4239abd91 1b3f1a3c-e58c-44cc-bc5b-50fee4a00f74 939ba7ff-dc44-441e-b6df-9658bd6d9c2e 7862a4cc-958e-4abf-a46a-942defa4462c 681c0dfa-05f1-4a90-bf9d-eb511f28b41e 1a43d684-bd4f-4a99-aaad-95e57d218a1a 2c7b28ba-de64-4077-bc49-8ec0f7daaa52 6523c5d1-d65c-4661-b2b1-3bb760c396bf 90eea71a-6a84-43fe-ab38-8aaf2fa6a741 ebbec950-67ff-46fc-be75-1556ba8f384e d15e370d-6cbd-478f-9694-d8faf344b26c b484e4c9-c87d-4e2c-aa82-f454c5691c35 a5b884d7-b5a3-4d56-93a6-131803a02506 e2e3fba9-627d-4a8e-a5d7-2ff041828fd0 46ae773a-5db1-471c-a53c-d811b6dedaf7 67d7b429-d55e-4a63-a447-5cf579981943 ee8f1f32-c23b-4df0-af74-480093083bb0 bdaa1580-d81e-4b32-82c7-85c0499b8029 246ead02-7b80-4058-b5cf-7d1c9eb82e50 47bc2557-cda7-4ae5-8d04-b5797e654e68 cfb31af6-b82d-44f7-a979-44afa929d561 e9ce1404-1540-40f9-af36-1475b62a04d5 c5e8c3e4-d3e7-4c75-a40b-c5c6e497c890 08e54902-bc98-4f49-b463-367f81494cdb af24b0ac-e3cf-4fcb-8a7b-c78778621bef 43fcdda7-ac68-43ab-8387-1469c623fae3 a1b00661-c490-4627-b1ef-eb6e0f92de30 83f9555a-e2a9-4f3e-9bb1-6ac1cef59ad1 c3fe2f90-2475-42e6-b701-141034910c06 641e7624-511f-4b68-95f5-e2a528aaed20 3d6d769d-640a-4ba8-81ba-d3a33c8cbe92 1282f029-6a8e-4605-ab3b-bfa97570a5ce 3f2631f5-1bd8-4a8f-a8d9-1e6b4b269030 06ca9e93-1f31-4cae-b461-0d3119b80b3e d2a91361-d211-4d88-9ba8-d83c3848011d 0030cc7b-a978-4224-a737-0efb83905550 c899dc7f-a97d-40a2-99e8-f599d2055810 81b33582-77f4-42b2-a073-1086105e132c dd53b2ba-1057-4c43-ab66-8078e92e876f 26651b38-afec-48d0-9f6d-95d05fd0a6cf 11e1dc84-5ded-4698-86b3-b2134cb96b9e 308ab3e9-e3fd-41d9-8fb5-00e53c99ee7e 96344bf7-1d50-4524-b858-d868e400879b b319eaf9-53ba-42a6-9eab-6f2850a7f6af 46ba9d2a-1305-439e-83b6-1a88d28cd1a4 9b7c78cd-17fa-498c-8217-27b71f9c5c6c ead39c0d-1e2c-4462-9d6b-a108db1504c5 79288a61-a947-4eda-b3c3-c68ec632399c cb4844ce-ce8f-47f8-89c9-bf34264884e0 22e6c49a-82ce-4e02-afcc-5b00588d395c ca244b0d-a96c-4f34-91ea-9cb7542573ba 6b38baac-641b-4658-9151-4b945254aad8 fd2bb0f0-f14e-41d5-8e76-b1a480ca7102 b44d3409-1d8c-45b1-aa91-5de204038ae5 453f4813-b5f8-4df6-90e0-26df296bd837 416bdb5f-8716-4078-8bda-c9e4d3dcad2b 5e8d5893-c561-422d-8785-f302e695b594 dd782362-d0de-42be-b452-5cc6fcef7f61 8c5a4728-7f34-4957-a3d6-b6739c42d0cc e120e307-c854-4857-a804-4e2abd6c2ae8 1aed61b2-6085-45d7-a890-e84fdbb68f00 5ac4bc53-1270-43c9-9f9d-9c320e23886a dec56413-6099-49e6-b0b9-a256b09cd1da d5daca22-3412-4413-9fc2-eb296c7b7000 be1949d1-8830-4f8a-b2d3-6cf7b342df32 aee78b5d-55f9-4704-a6ec-a5014a3fae03 21990393-b103-4b8e-ab1b-51d77f549f08 ddb84688-152d-4c89-8011-0bfa83b1f2e8 90ada572-dfcc-4150-b076-d484db6fc632 9448e1da-0d16-4d04-ac26-1295e6fc51ab e099ea0f-277b-432c-901b-56aa8e142cb9 459f14e9-ea84-4614-afa3-c016b38d98a6 ba3f2d1f-9adb-44d7-9131-91bf2b6ff4b5 1a209762-de7c-40c9-8b28-cd2da4a1810d 6d835e33-fb95-4c0a-a209-a6e67b14386f 48983906-86d4-4b79-ab07-15f6396b4b20 9326fd52-51eb-4bb9-916f-b741d46c65a5 9df022b4-fc62-43e8-a7fe-71f50a7d2deb 21e54d37-b4b7-4e22-913a-e4a82372e026 f14af48d-aacb-47dd-9bda-c2bdef440c7a 6b2dda55-9479-4e9b-99d8-92410da6d327 5abdf171-0c72-454b-a4e0-99c66fb8e96f 5f566800-22e0-42dd-9c9b-3c26503a4c22 0dc89e82-c7e2-46c6-99ad-c97c57339e53 c81c6978-d326-4104-8494-815b5bba41c8 79c3cc7e-00b0-4f9c-9e60-bcb1ace36ee9 03520e59-16d5-4ee1-8d56-95044daae1b3 ec89f4d4-9412-43f7-8b8d-d8f8f20f8ebb 41935845-1146-4e22-9a95-aaa49ccf4ce2 b98e4de1-f7d7-481a-8503-8d91db4376ed 6ec289bf-7f95-40f3-9acf-8548d50aaa38 5ef9ed93-2936-4512-97e3-a89c14bdbf30 593a7bfe-62f9-4d0d-a283-f8f61ce3fe5d 30d49fa0-9530-40de-8f38-dc8b4092a2d9 ff01935a-1c27-490e-830b-9f055adc5027 0391e8d3-c149-4e0e-8f15-4edfc3517cd6 cd186c29-6607-4c69-aab7-780ed3115f00 cf6141d4-e135-436f-b172-46f8cdd66f6d 64d3a183-3800-4aee-8753-e7aaebffec28 2004aa21-8e42-4d4b-a15a-5369a5087cc0 de67b0aa-9fde-403e-8b39-353b44f7bae0 2d32a0e7-986a-4877-9dbc-60383f779c7e 00111ff3-6e66-44af-819b-346e63d8b84c 8fc35260-9654-4bed-8cf8-4ee7c9a401f0 27ec27ee-5f90-427a-ba1d-3a6f8b9dd283 53c39a2b-5112-43dd-990a-08992d0e9afb a8e5c687-bb54-4a5b-beb6-5040a452d2ce 3d56e57b-dc76-4524-928d-7dc9189ef853 868b67b9-f319-45b2-8174-66de5b129f68 183c91fe-0d2f-412a-970b-bb97a7e67fa4 4f9d0d36-29e8-46f2-94a5-623847377cd7 318be746-a34e-42d2-9944-29fedf088473 00ab6a1e-7560-4a48-aa73-79d867bea4b8 aa21a2e4-2287-4b28-bac6-17474ed3645c 8be7458e-8941-453b-a8cd-dc1d025f98b0 f0864149-1b7d-46cb-99a1-06ee8eb6c760 19cb4a74-eb55-44f2-bc22-05ebbb403047 3d328230-7943-4c7e-af42-70a5f11bd046 2df382e2-3811-441a-b58d-a2f70c424f5b 04b556a5-b80d-4883-aa7c-a5aedc30ba6b c7586ce2-3595-4d94-ae90-d10f7acbaa49 16d1d51f-56f0-437a-adb8-a8a1c60bbae9 65f9f13f-7bab-46c2-b7ec-b5b95b8c8713 5f1538af-eefa-4396-8d5e-8872b99f051d 1e13964d-d253-43ce-91e4-5d076121f3ce 1044b321-2763-4c84-b77c-6c49edfb36fe c0c28a5d-643a-4044-9a00-9d2240700859 9d1d9b66-b1fa-4441-a65c-45997b9f0915 d1da718f-9864-4cfb-b522-1af80609102e 51f81683-78a0-4e3a-96d4-dc50c43ad4ba f0e432ec-2f30-419e-8700-243672b3a3e7 38caf319-9b6b-41a9-ba0a-38133bd2e8cb 25702614-b742-4124-90b3-9280566b4f2a c5456180-3556-4ec2-b493-e84e45522f99 a5e7ea14-23e8-43d2-9a36-44532e0c42f3 11794112-061b-4a18-bbac-4ea628d11aac c627ea36-a4dc-4e0e-b55a-cc3de1c425e9 13aa8c3f-1c11-4630-b238-4bc10259e5a3 3c9b3076-181e-4a03-9610-3072e3d1f2a8 a7df1587-0dd4-4cdd-b4a2-a98e5f7bdccd 3d80d137-dda8-4264-93f8-cdddc9b88eeb d848989e-f00b-4c7d-907b-42d4698ca5be 85445826-6ed3-4eda-ae6d-caaffe142d66 c0fb4291-0fe7-4cd6-9aa8-3703d511baad 9f6e8990-b518-4f3f-8e8f-df7d835cd801 b434b558-a505-40fc-b4a5-32a8742e9f15 9e419645-e4a3-4127-a3bf-f2d068423f57 d7f44823-8d71-491e-ac1d-14cc6df00316 f087a9de-b031-4c02-a917-6a5b1050553b 696b24a6-900e-497c-a34c-c9c9182b86c1 11dff77f-8a5c-4851-b68b-739e30b48d84 fd25a51c-cbb1-4967-a3e2-f92c97f9ead4 81e78c72-1d67-428c-80f8-3b2c7947b9d0 caf56ff4-4360-44aa-8f41-cfa189eeb21c 133314eb-e774-44ee-91ce-059868b1dc90 f1502118-903f-4708-9212-dcb41963d41f e98b7071-c3c6-482e-a4a5-a245afd77d10 7e8c5f5b-98b7-4106-9dc0-8f705356eca2 2160e988-2aa2-4dd4-9764-019789f1fb63 91ddaf19-5488-462a-98e2-eebb1fec8729 0aaa1d98-4e11-4ac0-b23f-769cc93de3c1 7520340c-464f-4753-b1de-dc948a305ba3 8c2ea8d6-6a41-47d4-b699-26aaa3f2a5d4 0351c41b-332e-45e0-84f0-e7b58d3763c2 457ca6d6-5f25-41bf-be52-c269b9f33ae2 a4d49fa4-ab0c-4eec-85da-da5205559c1c 3bd66c0b-6250-491c-a5a3-b42907bf2215 7614859c-2ad3-4d0e-936a-a3649e2c3178 ca50dc86-69e9-42f7-9bec-7e1a9adce218 9cc9c611-0d45-4534-a494-e45f028abb1b eee2a305-cc26-4ccc-ab88-f1792f6e8448 ba9f71dc-7d57-4d47-aa5d-a8041ecfbda4 1d69d9bd-ef4f-476b-a1da-0b3479ac3ec7 40d3844a-d230-42a7-9c1d-cf3e63675c02 0b0b58c0-d836-4f05-bd67-1cd73cd918fb 73c553de-6308-4c61-9a51-4ac7258d7069 a191ffaf-dc02-4798-b594-bc183f95074c 1df0b392-0c6f-415a-946b-61308888bd2f e6ebe286-fd3c-47e3-86af-5044a8b92524 8f5dbea2-1d9e-49a2-832d-8008f9e9b703 6ef11d19-c475-43b7-ac35-87f889f6dbee d8b36365-24be-4fa1-b4e7-d6e9eda97d05 50651826-085d-4618-a19f-f580a31f4d5f 9a7bfb36-84b0-4cc7-8702-587a5bb320b7 7a3e83a3-6b4c-46c3-bbd3-476c1c111f96 0d8ab9a1-a488-41e1-8ed7-c1728b6ff74a f06eb93a-d45d-4f1c-9814-fbaaaa2bdd98 90f04410-dd58-491f-8204-230516de5ee0 5e322e97-2b95-4333-ab71-2d77ee33b5f6 07be8570-e0bb-4cfd-ba19-a01a67805732 260b9466-38bf-448e-a8ba-f5e822fd1984 8e4a18e9-68db-4ace-b6fb-20fb3cbc61fd 26ee4254-389b-4aa1-8329-f9527dbedce0 5b4f0463-879b-4161-afd1-4ee11dab6830 b6ad5c17-ed09-42c6-aaf1-1480d4677d61 cc73c7c7-bb3d-4526-8197-996d1a5caeef 52b50311-73af-4401-9eed-2c634b2a0cdd 1e782472-a5cc-4569-9c49-a72fec20fe88 fa566201-f636-4aa4-8f1c-6e497275b20a f97d9f2e-ca14-4ea4-b978-17ba1f8d24e3 ec4b4ea9-86fe-47b3-82bb-8d3166ad057c 6954943b-be85-44c8-8b2b-be3c19bdfd06 a69966cb-6721-468d-9d22-9d7f27d9fac8 01099175-0af4-4b7b-b43a-2025ba670f5b 31f69fdf-c95c-4b3e-be5f-a94200cc9efd 19df5c6d-373a-4a96-a33b-f06498a45100 71af62d1-cf21-4763-a72d-5c6b4b2d6145 70f19f10-d629-4b90-8120-beb84cc3f180 5a09b0c1-6541-4a98-aa39-859fde59f179 f95cf50c-dcac-4060-95a1-5ce387df684d 0ac35eb1-3a21-46d2-a1b0-07616a8450fb 0b6f0d4c-df5a-41ea-bace-769ffcfa88f7 b9bd3e5e-331e-4ecb-9896-9d1190f66b91 fb2d92be-ddf2-48fa-8d00-989ff1d6d8a2 5251bf84-31ad-49ac-a30a-9e1a0534e6f3 83b0df69-d0c7-480b-aa98-ddf53e21fb82 37577597-e412-41a4-b6df-82ce76a28a56 16182dad-3323-4fb6-bbfd-af4027951d78 7f0c5dc2-a35a-4443-ace7-76c09b394cf0 ef0e8595-04aa-4f09-8c42-056fd68ea4b8 9f592baf-26b6-4a26-9dd3-82fd25a88803 dd9ee4e4-b751-4ea0-9ab9-dcd1c4c03837 f7069fba-b007-49ee-b38f-74386e8c3d7d 15e52a4a-d0c5-4dc2-b1f0-9adbfcddc55d 12877bc6-afb9-49f2-9261-b0b5d7d40b83 ec5d51c7-1577-48fe-a8e5-135d34760e25 aeb06d4f-f7ac-4b97-98ab-76015561ec32 a232b79e-8d18-4af7-8b3d-7584fa482d27 a0880cb9-f8f3-492b-b850-861fdd6903af 320ec2f2-e0ed-4310-b745-94991a22bc65 b50d6dee-5b84-4893-880d-6b80b6e43548 479ba953-f82e-4234-8469-495be8a6b934 2e25ba36-df3e-4396-9061-bd6ad1e760bc d7c9f6d8-8887-4867-b0fe-fe6c55426fd4 bd7489b6-53c8-40c9-9666-ec7540c76a2f d8d58afd-4924-423b-8b29-d7ff595feaa8 8cb57dcc-c5a7-4166-9e25-6b6687448cfd 6819e06a-face-4098-8925-1906d8ba6dfc 6c4f1cb1-3050-4581-8e8d-d1ab1c3bbc8b 6b200d36-ae5a-4207-b69e-36635461f05d d9f74e15-555e-44c6-a4fc-01345b02a697 7aec3a27-0fdc-4df3-bb2d-5e5549370a73 7588403c-7176-43c9-8ca4-c5478fc04446 a8e17ac4-f731-4bd5-970f-e67fca114f15 e4ddd1e3-5ff3-47f0-8c4f-815ca63650e5 55076a23-0f13-4a16-ba80-c28c38f3d9a6 a6af2e7a-ad01-4954-ba1f-d329b567dfb0 91e216ea-df20-436d-84a1-42fd3fa7f8a8 84a30034-3cea-4b6f-97d4-3a32ee15e2ce 601e8e79-38ab-483c-a4c4-5f451c4b38b8 040f5004-f2cd-4702-b670-452c6b9d656e b64b9f2c-f014-43a6-9aac-583241659d2c 5bba8000-06ae-4767-8c2d-bab28af44c78 c415bb5a-12cc-4c5e-9c1d-2a5e2b7b0ff8 797ae657-6484-4377-a193-79b6b4cee67b 2f483de6-5ea7-4656-8ed6-e060f1d04f3c c69dcd3e-c13c-430a-afdb-7b4907a8cfae ddf1c929-1ec3-4287-8a5a-7d3c721100f1 951561a3-a4ed-4969-853b-831de3fa9320 8963f01a-d074-4373-80ca-cbd493bddbe9 1f792ea7-e9cd-4cdd-831b-29d4eb25a4fe d9a1791e-e925-4a10-acf4-5ac6c447cace 947306ec-bbd0-40eb-aca9-68e89be92040 2e703f21-98bc-40f1-a820-3d9c48765b7f ec062416-548a-4c24-9547-201d6d3c64f7 3dd8e3c3-ad58-44f6-985f-fe1cd4fd8fde 48976bd8-6e91-422b-b5cd-39146d332f5b b897489a-610b-469f-bc41-68cb84ba5f97 0b8daa74-d9a0-4deb-a08c-a4fc8049a1bd 7cdcd71a-4057-4a3b-b8dd-ea75afd1a738 c68ae205-f6bd-4479-b3de-73f86b8e3598 b15b101b-71af-47cc-a3e0-75d6bd0e0e5b 1262a692-7149-492a-886c-164ab05ee61f 1be72b07-4458-4912-9382-e70420e09e3f f64118fc-8a3a-444c-80f9-f6cbd11b3739 2a8f1790-5d2d-4e3d-8af9-3ea11063de6f e701cce1-d0bd-4016-afff-06df1a3bbaf9 5a5fe899-e896-4462-a231-ddfa41da8be5 11ef7d3e-9192-4d9d-a3ae-7481625accc2 1f34e989-f84d-4a5a-a728-5c2b2e14ffa1 d73358c3-9b1e-45fa-93a3-ee195d853bc2 1069eb2c-240c-4659-942c-839381467f20 3070794e-74cc-4d4d-8ed2-49106b2b37d1 8cab3b85-229b-49fb-ac7a-a234a57c488a b257fe9a-3133-4b73-8745-26f9b88d319f c25ad1e5-d13f-4a68-a1e3-012ed032c237 33e6da11-dd8b-4b0c-ba07-c7d81a9584b7 fcb372a3-aee8-4583-89a9-db05ff4d4046 a57a6f14-bc8e-4ce0-8195-483e4ac539c7 a6167832-49a4-4149-aecc-a5059565694d ba90be7e-69fa-4c43-80f9-615605508b63 a3896f46-76ed-49cd-9c73-d1e772340d71 706fad56-249e-41b2-a3ef-95d3e1a85398 629c40f9-b309-4c15-8df6-f5fb78252bd7 9f8a0c92-8e82-4ca0-bac9-a8c5a75c28e3 f6eb654d-368b-4c5a-9947-268ad1bfa23e 706cf6b0-5307-4124-a92b-11d05132082e 3add9e32-f0eb-4543-ba24-c3c3bfa78350 5c266267-b02b-40a3-bce0-0141763264e9 e33ccdc7-3335-49a5-9620-9bf281b39bc4 2e6ed946-fbdc-4d13-99cb-795571308954 cd03cf39-d091-47bc-8943-02fda4a39885 b8e116bb-7ec7-48dc-bfc8-778f02ad3a0e d1f47e61-4679-4609-be2b-a45179d359ac d31433ee-aea9-4d31-a910-8aa1fefaa2b9 898f8663-e249-41e7-8053-665cae2edec3 614b3de6-164e-4509-9192-6849da03041c d07f88ba-a000-4c19-98f2-11ba2cbbe91c 72a6be29-8676-435a-8a9e-626ae381be4b d56e628b-4aee-4b3b-8350-9fa7167c7891 75beacf9-063f-48dc-917d-5f7533b9f602 38a6f873-ae3e-4b16-ad27-e054aaa2cfed 1f4dede1-b2c3-4141-83ee-b86dccefd0f2 61516b27-65e1-44ab-9965-908b25b948d6 56b991ed-31e8-4643-9a2e-d44b7a1edb1d d5909492-4ea8-4434-b089-3b9fa9a530fc 8cb5abe1-695c-4a44-88b6-5e418582ff10 fef8b3d1-b5fd-4472-8ea4-5df8a91c3c7b 03db0b82-07dc-4081-b452-81d62502c344 b8897b48-f8bb-4166-842f-ad2803a7bae8 9fe030b8-4f3b-42a8-bafc-d9865c0357b9 0608c304-64dc-45a1-a4c1-deaf8e9e2b46 3cbb0648-9f0d-4f53-b4ef-107c8f2233ed fa34b042-907f-4e5f-bdbc-a9caa24b990b d9aac55f-f8f3-4f7f-9fc1-23c6e34e2a02 91e08ec8-5089-463e-a7f6-0d7c13fb7c05 b3594656-e72d-402f-8a45-fd965516eba0 6d60351d-df3b-45b1-8f07-f638831185a4 61a1607d-3d46-4bc9-9ac3-dc67e94eeef2 108c2455-0fca-4081-8778-68d37b6865a7 83d2e212-5dec-4505-9174-e18b5c0e4723 4515bb55-41b9-408e-b3c2-396a10275fda 0a9461df-d2a7-4b74-ba55-7bfda2f94d59 c84b50fb-6dde-401f-af48-d4343673c294 2e9ffa79-91d5-48dd-9262-89dd1aad5032 389ed55c-45f6-474f-b46b-e41df72c92b3 25e5ea12-b6e5-4bbc-a8c8-3f4680a70ea5 6f53c832-1415-461f-8aa7-d20989af093a 25aa80a4-86af-4fa5-8e7e-663a69108771 b8f3fc9a-89a2-4905-ad9e-c9d9c9d41842 56edfeb6-dbeb-4994-b77b-dbe838b22596 dba887df-3e9c-44b0-9edc-4f1ba9f7d8f4 25dcb752-88d7-47d5-9cff-1543d55fb39c b0975b77-7cf6-4e3e-90e1-c9d59b71206f b733a39d-bba2-4e23-bd18-5fa3da625447 1793eded-28c1-4bb2-a324-b2058dc82d9c 219b1f8a-e20f-4912-8ebe-970e63d78874 b5435d08-dbd8-4192-816d-5943dd389848 d322fbb1-2a2f-40fd-8355-01283d6c5cd5 f7c96f5f-4719-4f0a-a5c4-208d668fa227 aefc9eaa-8b7e-44cf-bc77-7919858dd34b 20b1e5c2-17db-4bd9-8d9b-226b9afea18f 7c6d4d23-93da-4fb7-be34-cde759454379 6017f73f-2643-4972-add7-5807fc5a1b3e 0a032f1c-e129-41b3-ac53-937efebc8e7f 375de7e3-72f4-4ed4-8bc2-a4ba240129fa b4b6b5d6-1590-4a39-a1dd-85f70a20bee1 9c12b61b-f0b0-4966-9bf2-2cfa8d47f75f 4cea8e9d-3301-4715-b3ab-6a57f08383e6 4c57f984-f267-464f-b0a4-900420416e58 d71ff697-8416-461d-a0ed-ccf79959e42b 8a2f96a7-a002-44c0-8d9a-83015be937a9 bdd5b09f-c8e5-4671-89fe-bc07ff01f160 5fe51ec1-bebb-41cf-9a45-5fd97580f60b d098fbbf-d966-47d2-9a06-cd65aac20211 c7e12181-92c9-4050-a723-26bd853d1568 1c1096fc-f069-41fa-a16e-261c08a85466 48898d34-3114-498d-ba6b-1df3cf0a06e3 1a027b28-9c9c-41a6-ba5a-13660f319aa4 6c83920a-a2bb-498c-b04b-660f067804ca 5e8333a0-74a3-497f-8615-ab03bc23902e d2050882-4c8e-4137-9665-575b61d3ecb1 edfc1948-9074-462d-af2e-601ec43fd6ec fe9c251f-a7a2-4176-a634-02ce25486a4e dab3de87-331c-4e35-bd5c-2fae3ddc88e8 2bcb0b93-4238-4fe9-a81f-2762e5ae7a64 991834bf-f9bb-431a-b495-1cc5dbac9d06 1ddc34a3-2fea-410a-8e0a-bc9ee1383470 fd499f64-bb12-426e-b363-4767a2d60104 403d0901-f978-47ea-bd69-0bade57d7556 fbc1390e-df52-4cea-a2e6-e53d65cecb51 4c4fd20d-feca-4a05-a381-3c7121dc8ed4 4b497326-fff5-4b63-a2f5-04ea33641e54 cc2f5893-e96e-4368-b6fb-d891e97a1797 d8b682c3-0f64-4e86-9617-3bd5d7126dfb 87d4f8f8-79e6-47d2-b8de-db6a15f05325 8285c59e-a99d-4fa5-8381-44febcc6dd4a f09d0b4d-4f1c-4823-b6ee-29e02315adea 3cbaeccc-61d0-4d46-b7de-ffdc0bd65ecb d636fcef-c1d2-4001-91df-6cc58c837aa3 702bcb74-1905-42af-9d15-e48d04766e7c 2f730293-b89c-416a-be0a-3f6fe6c489f4 12cba557-54ff-4358-b626-c1d6199517c8 f395ba9c-a39e-48e6-a2b1-47d607f5b009 5b7cd963-92a3-4baa-859a-ab9d0db94d80 e83e0bb4-d094-4495-b7b6-fed676961cbc 5c29bcad-e5ea-4595-9f2a-0a7331d180af 98a1a9b1-b111-419b-b235-3b5efc59716b 1295ee66-b1d7-4920-9a7a-f30dfba83724 2361f1b2-b150-468c-bbc0-30060c77bfd0 db349a0e-72e6-4046-b899-8b14b0946eb4 7633affb-6498-474b-ad79-5e7edc932765 c3daa393-1bfb-4fd6-b84a-ce763a7cec0d 9fe19172-0ea2-435e-9293-621ea071ad44 aa10ef87-8e69-4480-bb84-fcaa71235332 2d54ebbd-a76f-4d0a-8609-0673bc168c93 03c2249f-d845-46c3-afe2-d42e23a5f6ba bfa09a12-b668-49c0-a605-86376445d1c3 cf0c9616-a77e-4318-a6b1-a93ce40e4608 795bba93-3ff0-4ef5-ae12-26bdb07fdc85 ddaf39cf-a573-453f-b0e4-a518b238b16a 53e1cd8d-cdc4-45bc-bc56-e5a83c131f4e ea8d4250-bc8e-40d8-bd8f-174ffb46f8a2 e8aa03ca-5faa-4b8a-b7a4-dea936d21b3d b1e42242-d69a-44b3-9e5e-aa3a0d8e9fd8 05c12515-2ad9-476a-a945-fcc028e1c1e7 b79146ad-8da1-497d-99fc-ca05a5da4258 e14dec2e-efd9-4ef2-9af9-d721e13669ce 3bfc3339-32ab-45f2-9b59-c17d99af2f6b f52f3033-4aa9-412a-95b6-81497769ce25 20b9219d-9a06-4b78-869a-06c8fe9cc219 cd41d3f1-5175-4ce5-84ce-3adc96af10f1 ec251fcd-67d5-4f23-bb78-a962b3708273 f6b2d836-c2d6-4bbf-a0ed-9df0b7f726bd 87817d35-7975-4602-970b-692f42a28d13 2bac05a3-3df9-4aed-b6cd-57f956d90349 e78a15c8-6c5d-471e-aad4-e678f07f4301 163921e7-e627-4602-8906-a934ccc49f76 2a5529d1-9c93-4d42-8c62-d0fc1cf1e6a9 d2c545eb-fd09-4866-afb6-865f5fad1bd1 b640ffe1-f5e1-4de7-9931-4d1bfbf8d117 8ed5b0f0-cf37-4701-93f7-0c526efc045a 42e8b45e-de2d-41d2-a09a-686806f6747a 4d168a91-e578-4f7a-8bfe-f083d6ea8974 1c2cfe04-2e78-4857-91c2-7e77d5b87cc6 b99fe435-98da-4e38-bf0a-49a13d4836a2 a3779031-ac17-44bc-bea3-05c9057745a0 2c81fe3b-ab7d-434a-bfda-eddf60d9f9b4 9770d414-fffa-4912-9d78-c4d8d0ebef47 d95c41b4-70ef-4e45-bfd8-46017ade462d 0a93fa76-447e-4788-89b3-84a912adf132 a8a7e50f-59dd-4169-9453-05475a15ea0f 612c3172-6781-477b-968f-83b458093048 70fecfcd-470f-4613-880f-6421a41177bd 604d1d33-178d-4238-91e0-ec3c856dce81 b56fbff6-21ff-497e-8496-c8dd3dcd1f11 b1bcc4e4-934c-4e02-b595-4f7a5f5fccaa ad27161f-8cb7-4a82-a2f5-363bd4cac62e f86d3fbc-bf87-4aac-b4e5-21e69a07cf17 9242da3b-ad43-43e2-b693-3de7b66fa326 ab1d1b1a-4b43-4375-a4bd-0bc2b2079a4d 32bace33-e7d8-4204-a3d7-cace0e7469a6 7c21b61f-a56e-4325-bcac-841441befb3e 49ee91d1-d4ef-4788-8d76-43cf78d63c03 bd48de04-b848-4a8c-bbb9-14c38f06dd0c 80ac0c8e-5ef8-4236-9421-002b12aa3b1f 39baa2e7-718a-4f61-acc6-0a2c3fb6fb59 c156e4ae-6c3f-4959-813d-8445bc5285d3 f5d0a267-91be-452c-aa79-5bd784525502 b077d44b-b35b-48ba-b642-ee6a040e3ce4 de152db6-ae18-4e1e-8b84-97aa7d289a6b 3f2f2fee-bfa9-4558-8c94-ac60719ce9b3 059d1137-0e80-4b6d-b5fe-11dea00d39f1 03a61f09-62e3-49d0-9cf5-4d2550a894e4 90e766ed-aa5c-4dcf-9536-28392eb23f7e afa656be-0368-4e94-98ae-372979a459b2 af840444-4299-4455-8f98-46dd6886adc2 1380d6f8-0e3c-476a-8875-fb8053b61f56 6f277786-aa61-4572-bb05-049e310206bf c4982d9c-89aa-412e-a941-bc8f8cb7f5fe c2652515-020f-4298-836f-eda4f10e7f24 7b2205a0-2878-4944-afb2-ba853fb8d60b d2af9f4b-1b64-4227-892b-e874c941e0f9 54d267a9-2a89-492d-b1b1-0b3d1ee768c8 bbd8ab22-53fc-4992-bc05-e1a494e13f49 2fa23ba8-ed6c-4f05-9e2e-fc67dd5e1450 4abcc6bc-e790-41ed-8d72-f6341047256d 42e1e08a-b645-46d1-823c-bd040abb5be8 3872f097-ccbc-4574-bdd7-b5ec65b5ea98 e37c33d9-d807-48d8-9787-f9954055d48d 2d06edef-f456-4fe7-a79b-730211800d5b 15fd0cbe-5cdc-4072-ba70-7d6122b7e6b6 37331745-e290-492e-b4dc-5f2e1ce98a0e 14d6b439-f5f9-42b6-8517-29d6d5e01142 601507a9-88fc-430d-9ed5-4305b0911870 aa566a0f-7d97-41fa-97ae-28079338cabf dcfabbfc-4db2-4cf7-8cc2-8bd750a156a1 05e58071-fc7d-460e-81bc-929b370399dd aeab97bc-c71d-48ae-9d70-0e455eccddb7 ea8558f5-30da-4c53-ab3f-ed2e2c8e8ffd b9fd08cb-e0b6-43b2-a500-344d43f8d888 aa9ee96f-a287-4ff2-9131-2cb05e053d18 716b2089-87ef-410d-9163-6bf84ed0ff9b cea3cd10-8831-4d48-ae64-42847c9a0de5 823266ed-d5f3-4d9c-8d00-45e9c64d61c0 ecbc14c8-5a16-457d-9264-e7b5310f962a 482aa074-695c-43d6-9031-f8b5a5b2168a bbf11636-7225-470e-9da7-baa2adea0bb0 3e0a0865-5a66-4916-a01f-5dc8dbfc7a8f e73e9f11-295f-472f-be56-3d9551de3872 e247a912-1bb2-4060-b7d4-48bb735a43b6 c3a2d58f-755b-4e49-bf29-692c7603987d a1941d3f-ea5e-424e-b5e0-7fce16602e50 38bc86cb-ec50-4db1-8647-c4c51f0621af e1227221-0dfe-4024-a061-105364301ff6 cec9cfcb-67f6-43ff-9d6c-f88b7f07bf30 3911fd42-6195-44c2-86d0-585d696f188a dafef6f6-b943-479d-b213-61078aa27b57 c7a83210-d926-46de-843b-619872d6aa94 42fc4eda-9b19-4559-aa42-4db167ca5977 0c1ca7f3-cfd3-4318-bae9-924d147da04a 451a764d-a0b5-475c-be79-54c3165be0c9 12dd80c7-c925-44bb-bc28-0b0d39b1c321 e4d2c964-d91e-4b0a-a22d-2e673b353434 cf1c53bb-380b-4019-ae69-ce574f910dca 00cf578f-fd06-42a9-a3d2-362d7eb43b3b 15fa8499-e3f3-4703-9b9a-23a95b639b11 36efb74a-1cb8-48a5-9c27-5754271a0adf c75ced14-d492-4d1f-8da1-84a4c8b88bb2 655bfe4d-52c7-4f94-8583-7c2398112336 eeeead23-1239-49a7-a161-50e552e96b01 e37f3b5c-0faf-47e2-8b64-1ef3cbce4e25 2eba4266-95d2-4985-ad31-dc25973434fb d0519d6b-89ef-473d-bf3d-584646ce66d5 2dc4a3b4-fd9a-4537-a11e-81d78ec1de57 8e77c83b-6d26-408c-a412-919494e0c418 3549ef8d-c953-45af-a013-d3a25afd80e7 e5f37568-612a-4296-9dba-1236da7e4c2c 3689dde7-aebe-40ad-8ffc-4da606437d29 2365a3cf-b143-43b0-b29e-d0758a49c8e4 a357ec6c-e61f-47c7-bfb6-7e0e27be9b08 84eb0ddc-90f6-44a7-b2bc-df50d8713a7d b308b41b-7f08-489d-97cd-23597efefb9d f32c9caa-37bd-481f-8620-b4c2b8f40a99 ee5759d7-89a2-4912-8776-7ba723f8d76a 2608a393-87e4-4423-b1a5-d4b5def063bf 43190730-a255-4fbc-aded-4f107f89b173 fc93f2da-ba3c-476d-8753-55df17578b3a 142d4d9e-3084-464f-897a-b23d26cf9c1e 39250002-ef31-492e-9045-38edabeee862 504a93ad-4c02-4dba-ad45-c023e3fca918 f8f7de69-72e2-4248-9f38-42a27f9afe12 4889f0b4-57dc-4d55-8036-7d3b743d81c1 d6b1c7cb-7b67-45fb-9bcf-c67950ec7503 6f6b8b48-4fe5-406b-91c6-d885379cb355 c5d4e125-e785-497f-99d6-7b6677735357 e0b6ed6e-a8d8-47b8-8d5c-4439f81625f1 ae43a658-9333-44a0-92df-7e65ac4bd35b 589dd241-2fa1-4c48-85cd-aac822402c23 5a683f0a-9212-4ef0-91d7-1172365b0e27 638a31ac-0bb9-42b3-a47f-b3d5ebb4948b 9a554256-4624-469a-9f6f-09d528e491e4 ef5ebadd-b13a-4de1-8f0a-9b86b4ed0c15 0a5fda79-ad17-4733-a9e7-094a0c21d40e 4ce4b852-2e9b-431b-9672-db18a4e2ebc6 080b5ef5-ef72-4152-bc0b-b8d39c156ea0 2f6b6e22-e934-47cc-94cd-09abfe418824 e9dc064f-12a5-4b5e-accb-3fa12414ecc8 5d580d76-e773-49b5-b126-f2826582c99d 101a6d1b-d433-4718-ac10-ade98d6ac9e8 88b72798-4d18-4af6-b7e2-7b8f7fe7cf5d 84877556-e479-4b0a-a80c-cf89ed321336 5df9f8ee-bbe1-4d07-ac3f-e551dc08ed42 749de58f-7371-4a90-8d83-c3cd2da66653 9527dd01-583a-4627-a918-a9bde23ffd58 57906b69-14a0-4ed4-87a2-313953c69850 3e6c0143-e2e0-424d-9d0e-70efc8e67a41 d5d42851-b67b-4b12-816e-7fd2a45249b3 bad8c6ec-afee-4c47-ad39-1f6738417c5c 228633f1-365b-418b-8d2b-86929cd7eaf7 be46739d-0518-431e-8abb-7ea2eef168ad 0bbca49e-d343-4138-89ac-f435bd2f83fc 0b1dc359-4565-4dd3-bda6-13f70af220b1 08a20c5b-c7ea-46b8-8a21-eb71d1e76fef 985908c2-ebbc-45dd-9f47-d3646ab191f7 7307ae76-1c43-4133-b9c3-fe2e4351cc05 768f0110-3a9c-498a-a813-ba7b7d2fcd6a 1019f861-af40-4611-bedc-8470b07f6aed 42da193d-d2e8-4cb2-9a0c-55daf6cb2bcf 830245a4-1b10-4ff4-ae75-e5908c06bc45 868eeed8-2754-4d64-942d-810796b8e23a 9c0fbd94-72e6-44a4-893c-cf950dbb2694 91d8bd50-68d1-43f5-969e-e5943e3b9511 f9d6bd24-0f7b-4f05-a789-76c97864191f 8d337e6c-d410-40ef-9901-6037e4fb6051 eb2d1e5c-bae9-45fa-93ba-188074a549f7 35df526d-820f-4a78-8e10-5fac9fd6f235 814e71a9-b9d5-4c95-a5c3-66fa1557452b ffdd3fae-5f86-4a0c-b565-7dfbe1e8fad0 7023a9bb-675a-4467-8326-7b7e5b9ca42d 5682eebd-d210-4101-b145-a1fa7d3c0161 adef4e0a-70dc-4494-8480-be31cd4360fe 17d5eedd-7541-4525-ad03-a8d7eeb74380 931e131c-4ad0-430e-8ae3-8ed700b317b3 d7c01979-a42b-461f-ae43-aebb0e20fabc 2384f25d-27c1-4155-a2d3-65f269c65a09 55973354-7e61-4935-97b5-11e54014db19 3e07b717-a70d-43bf-b8bc-d5d2b01f5ba2 8f27380d-88a9-423f-b059-4d5796b2d410 9b39d773-13f8-40b1-bedd-06f198ce8fad 80995765-d194-4507-a0f6-77d90dcc2a53 d85fff59-88cc-4efc-b2b6-7a0772bba53f 0a553fdb-8a0c-4e3b-9b2a-2c5b8ad35425 2fdb5504-f36d-4539-9462-44799ded6dcc c5ac6368-7bd7-4008-9d1c-445af471e4b4 da0834ba-0e11-48fb-ac75-2745755c8ec1 2d27b9f0-6590-49ee-abf2-c65a5153bd32 e0795cbd-345f-4ae2-8eb6-25c72156b3a4 ddb4c92d-c846-4bfb-a3f1-1b0692fa3ba1 d48ffafd-ec64-4bb2-8803-59772676fb57 af0d235d-ab51-4675-a5a9-cfd0f5d263e8 04e4d00f-50f4-4c63-ae44-0c475098180a badf2384-e6b4-4fb8-b829-13fc9fa1e91d a98e36ca-6985-4697-85b7-242fd608fb1a 56dce1d0-63b9-4860-aba6-3df5014029f6 2cb3fdf4-8795-4666-b338-eb54a8a43d95 2f46e0f1-2b1c-4683-b104-eda5a9796cf6 33e4d1ab-b174-40f1-a7be-73ff333c6dc3 eeab1b72-b392-4f87-a0a3-8482ac594a97 dba9eade-1a25-4ecf-91df-d66accd9378f c328ea1a-bebf-47bb-babe-6bddb4e92e74 88421cec-6820-4888-a7fd-e4f668e6c559 03297cf4-e1e0-455b-a68b-5d9093f6ace4 47c3c235-815b-4aa4-95f2-d11fb108ea8d ae2abf2a-f8e6-4906-a921-e32d34b163de e8de5509-dd50-4035-887f-ee4ac7b7e94c b897691d-5592-4d01-9fa4-64c4cf7c64cc b626b5df-f037-455f-ab37-d157321819f4 4139cb9c-d498-45ce-9bd5-8b1ffe7fc3a7 703e6f76-148d-4ad7-897d-d7feba5fdc42 4c043889-626e-4669-8cc0-8a2859bd1f88 411ae321-1d26-4028-a5bc-bf80e8f84141 2eb1fed4-1bb2-47da-accb-213b9b7d7515 ac3c741b-286d-47a2-949e-0a695bcf9d96 09dc0017-3bd6-401d-80af-46fb07089ae0 7d622638-db86-4e0c-807c-f603c29c8cc7 524bd718-c4f8-4ae8-acab-75138c3c602d 71473395-956b-4b02-9ccc-b16d9e457442 8bab6f43-9d52-49c0-9467-6a7a016096ec 8e67c346-35ce-426f-8f87-a5a259a1af17 a49aec95-0bbe-4afc-a6cf-2d154148e0d6 84b78c15-3cba-438b-8254-edcb7108331e cc817059-7b84-411c-984d-7beb2a838f34 4b54a7b2-1432-4169-85b5-ed3a05cce9cd e68e8b5c-5f95-46c7-9c9c-41ef50e99767 dac77f0c-5035-4040-8812-2308c09fd72c c170e886-0280-4987-aa73-c698b788dfd2 0a518296-0fba-4476-ab6d-153120762553 124036b1-c93d-481f-be47-22ce51afb194 01794476-1f9f-4fe0-9869-73a0e3575b43 2bee398e-1958-4d74-8c94-990ba887c5ae cedf7124-8be8-46b0-bd9c-53909e1981b5 7064cb1a-e1e9-4d71-b6c7-9ecfaac9590a 03e45c4c-e5bc-4c0d-b2d5-d40fe281ac6a 7925cd59-8ef6-4383-aeab-81377661158a 278ff171-98e9-40b5-9f86-0f9ef298f15a 7a60575c-40e8-4a15-a16e-e1f2597cba03 4e3cdd77-102e-45c4-940b-75c643fccf66 fc9aa2db-45cc-4e66-96a6-0ea031d9461c a3120db4-b91b-463d-9966-ef2134fef539 02c7cbc1-df0e-4174-b6fa-9d1395ab6669 9355f0fe-e309-4e16-b78a-f56e0e576195 e55e41f7-d939-4eb8-a272-96c15f18d772 6ef55f7b-067f-4488-b43e-525b4357cf0a d9957bb0-49df-4fca-b8e4-9168541ca124 dd84f35e-8d6a-4ffe-a116-47b1f7cdac72 2c159664-320c-4dde-9bfe-cd76415aa7ae 598d18e3-de97-44ed-b8c0-b30d3d1fb351 5f7e9b3c-7af7-4844-96d2-01956f872c73 02efd054-445e-4085-a342-0459cdef2ac9 74059b10-bfe8-4a74-af9f-d36559f27b1a d5bba8ec-5d87-435a-991e-fd5486afcf76 bc9e3a03-2901-4634-beaa-833789e51e4b 4be5e5fa-cdac-495f-afaa-8378ed114f8e b4974d09-3f90-4bb7-982e-aba4c0089bfe d877a77e-ff18-4bd5-9bc8-63bda7df02b0 4e6b255c-0315-448a-adf2-c197c0e70f50 1930661c-7a75-42c8-a878-a0e6aea386cb 92077a04-8f58-41fb-b78d-46cdd3c3df10 bde140e9-1e5b-4823-a32f-50fe9e6415b5 3e71892c-2579-4704-9a2f-886085400fb6 db60b257-d9de-47cc-b980-33d84dc771e5 b82eda3c-791b-4ad0-9845-20cfc9cc7693 ba8a033d-7267-470d-9714-4f4d7a75e0d3 4fe195b1-cfb2-4b89-b7af-3a7b5ff6e777 5638c376-a0ad-4abd-ae6f-21a493ac4c4e 4f5533ba-9261-46cd-94b4-714aee1c8c0c 47f1e154-37d2-4485-8047-241f8c537228 96d451cb-9afb-4d04-b138-446f929e15a0 8d380187-d0e1-4b3b-8bbd-4851cd4b6c38 5e4269a3-81c2-4dd5-ba24-d50707e21912 febd239a-380c-4141-81d9-2ac8b74dc5db f0a46c78-e5c5-4894-957a-0804fa7917f3 6d57babe-15e5-417a-ac51-bc1cef1666ba c7d42323-b543-4452-b021-666ebdca69db 1cbb13c8-1222-40f4-9411-7916a512b15c 50c51add-25cf-494f-8daa-7300b3beab7e d50b6969-2244-4dc6-ac62-5a3efcbd0eb6 cf9b2913-738a-48b0-bb81-e06c47527201 01d23661-5fa1-4e61-a98f-97d6e4668064 99bd7ab6-12b3-4710-84ff-d4859686d814 0013a1eb-b317-4de2-b299-34ddbe5054df 9c21fff2-afe8-4c84-96e4-7db4da7bc56a c470dfa4-92e2-41f9-afb0-2aec570e4130 10b74e62-3fa0-4b10-b025-0844443c0f30 6c59a2d7-8f20-4f68-9397-2e2e81f60ed1 fb0689f2-1dc1-4a3e-9f45-adf60244a657 6f77c76a-3e34-405f-8675-798fb4b3f19c 9973069c-1bf8-4159-a6a5-5863aa7b09ac 8ca75bd6-8893-49ed-b793-8e05e9aa7117 f23c6070-dae1-4495-b817-cfff753f45e2 a1d63eed-dbbb-4f6e-b3bb-d637c5bc2773 29353b2e-4519-487d-9d0a-0843b0de6a56 9c4c018b-c25a-4527-80c1-13b6f19031df 4060cfa3-35ff-4d39-a1fd-07c283152390 b9b1bd84-0a51-4ac6-8086-9393cbd6b9d4 69788ae8-ac90-41f3-b195-756c5132b6c0 83c77e31-704b-4816-b42d-3957078d55af 09af617e-9158-422a-b5a8-89d345772138 464ce88e-f902-42e5-bed2-ebeaad0a8c86 9d1ce9a4-4c3c-49dd-a898-c5abe982a348 2448402f-1b4c-4251-a6a1-c91fcf081f3a 965c4f09-4259-4639-9a39-4c82d786c8f9 29bf9cba-7287-4ce1-afbf-ecd1ecb53a3c 26d827cb-7a85-4adc-abd7-7aff87505352 ef2609ea-ce69-43b8-bd75-e4e2e832bd62 4c712758-7d03-4079-9497-e7da536cd7e9 39bd6288-6d28-46c0-b540-8ed6101e3dc4 bc0e8046-7fc9-41fc-ab70-fb9703901d0b 30ece213-a545-4d06-9804-4abac55c94c7 477aecba-3bf1-46d3-b13e-62b5c8878f83 a8b4d98e-686b-4d82-ae51-4c20c80cdb12 02fa6a2c-b0ee-431f-9711-2ca834462f6a ba354d6d-3410-433f-b2a6-7784f53ee79a 7cbd0539-d453-440f-8697-9c1ff9164841 082e766f-ea9a-409b-b86e-01bf1afd759b 83145887-2b79-43b9-b461-53322beb9cf6 f327f030-000b-4410-86b3-edad63113a0d 1f71f8e7-3ac7-4e79-8f41-e68bc7199c9e 1bc7905b-38da-41b4-93cb-d4bba89effef 4f240e85-a82a-4500-84a9-b3e4cf6f8a82 e184c311-3bb9-4a50-a666-05e44f8f8d0a 404e317f-649d-457b-936a-f1dcb54c3730 02b4bd4d-f431-46ce-915a-ba1a5f18c71e 0198a3b1-36aa-41c0-abd7-3b32ca8cf783 12aa4a55-e353-4fce-ae95-101fe089f8ce 4a10f27a-6224-4a53-a60d-b0d66ce96de9 aa38eb59-559d-445d-b329-f6a33a1bc041 21942267-2973-4019-a154-3a9930bb90c1 e417a8ee-e0b9-456f-b9d1-45061e08b403 bda2a1d3-8290-4857-92c4-fdbf4552b5d2 90c69e33-1eb7-4a00-9a6c-4f8a2659e560 6051e424-7b6b-48a3-aa3a-c9854563c874 3d5be561-b275-4275-bb29-f8900b969d15 a7e9eae1-5fa8-48f8-84c3-f3fa712a33f9 cb954dfb-b98f-4742-8ea3-931249024b52 d87d9dc2-1b2e-45eb-8437-ee66bd66038b 8420da87-84b7-4ccb-a790-f093909dd0bb 52dec1c7-1404-4c77-98f8-36f87f9ca7ff 9c32ac73-eed1-4412-b237-f19ab35a1ce2 d5acf5df-88bf-4b0f-af43-bd7786dab911 4a9168cd-0471-4eab-baae-764c38281186 f6ce8f9d-76cf-4286-9729-503853001216 2d897be2-847e-4e87-9f64-73b570dcccc0 69e59b27-f19a-47f1-aaac-3634cb52f97f 27e09ffa-488c-4652-8220-7c0821136f8b 5d285f4e-d67d-42af-8998-89ba8d003494 7edcd8d5-d086-4e68-95d0-1982668ed223 0ffcf738-4e82-41f5-9b5d-f717eab40814 47ebb1a5-61ab-4794-9d30-82edbb980db4 37f8e849-8d86-4319-a0d2-7a1f46030fc1 19d0f5c8-9e95-48ea-906a-2f582a74fa1a 5f70b2c3-2867-4b9e-8df9-8fef4ddbe000 ba7d1cc5-3251-4341-ac85-df124d3a3316 3005b5e4-6463-4547-92c4-cc83fc584ac3 e6c80cc6-9d33-45ac-98d4-7fcf421029a2 6bb14e0e-0bb8-4fa1-9b5c-03fa3e290e4f 4f1861bf-5815-4c1f-b7f8-2231afda44b7 93373bd4-4e3d-4591-b496-cf41f2c45108 f2cfa08d-6967-4fa3-bdb0-bfd2d595fc45 d1dfa589-a606-4bda-be29-3515a36cf03c 7218395b-27ee-4486-b261-5aa9acdba16d 035bda4e-cdbe-4de0-b840-a47bafafa59b 1684bb2f-c8d9-4ce7-8980-a0ca0924c924 bd0adc70-1723-4e27-8f74-927d91091d41 d53231e8-6526-4468-84a8-dc90a9607065 9c37f594-48c9-4eae-9d0f-ecd3885e510b b231006b-a7dd-49bd-adf5-2f8f118f5db7 c9f5f22a-e4e9-4cf5-aff0-d04c457706df c7f95a82-3707-45d7-9985-86e6fdd7ceb7 1c03dbb0-dd0a-4cc5-831e-455d49d0948e a7518a8f-69f0-41a0-9a8a-9781ec0509e6 d9c6c292-2a9f-428d-8ea3-f1e795d2d53c 0d1f86eb-83e0-4d0c-84cf-7f0300bf0b25 e6083cce-4bdc-4861-9c00-ea1c1dc0fa67 723fe34a-b03e-48ab-9be1-3d915fd77a7f b69f8fb8-a659-4a73-8977-5a4f7964336c 831229c1-cffd-44e0-81c0-a73f888c7471 976d72c1-62e7-47bb-b304-cc8042d32d13 755ff7d1-8143-4067-b8a6-eb87528c184c 7a444b4e-6658-4ce8-bb9d-c3cc24f03c51 e6e22ae2-f440-4742-86a4-077eb4b73780 4b86ab4b-8a1a-466d-9199-2be2f6dc6cc8 f5b75f5f-fb35-44fe-94a4-b31642367397 f27b230c-fb92-4922-a906-201727b75fcc 40dcf19a-a7bf-40ba-ad51-2a64c7764c20 5670ed7c-7f37-43c6-83a0-e9ff375a673d 74499f91-7054-437d-b948-cba55e42c64e 28af010d-c2dd-42d8-9c4b-86734b2aab00 7c9fedc7-ffc9-4235-8fef-ef68c986b9e8 4fe7d734-f867-4299-bd7e-1c36b2d789c4 e4a9bb10-9064-4365-8b5a-14d6eb8e674a 5c8f5869-7aa1-41a1-8f38-ca716a90fb6b 95a6037a-c146-47e3-b19f-896938d226a8 d5b2171e-df84-4cd4-a85e-e86ea9e28835 2be07ef7-7e97-4e54-bd1a-4fb173089cf5 0f206752-454f-4344-836d-3f85ca57f838 c489a806-053c-40da-be87-00f4ce26f3a9 3c23e8c6-e409-4262-b768-0b82eaf6fa62 1ddfac2f-a65a-4fad-bcd1-ed933a522718 7e0d7d91-b561-440e-8077-b2db68b8a6d0 3269ba26-cebe-42fc-ba7f-fdb1bd5e886e b9694dea-1cc8-45fa-86dd-1777f041030c b3eb2567-9afa-4faa-af93-58a4778a8310 c42eef10-2950-47b0-98f1-89c19f911f00 d11913b0-0092-48c3-8fb1-8126a191d591 cf91a269-edbe-40dd-be1a-3f81a5c51745 06b3cd37-abf3-41e8-bbdd-fe21e9393ce1 4ed8d2a8-ab4b-467e-8dd8-17675c86d3d0 a6039d4e-e59e-452e-8863-532919c7fb25 84b8daa0-94be-459d-a198-be3324795d37 d8f87ad5-45ea-458f-97df-1794265b2d81 5e49f4a6-97f5-4d08-8abe-7a9b9f605b0b fa9b3c02-7d85-4075-a018-300252a91602 9ff3d547-cf38-420f-89f1-4720b41a6179 93b69614-15dc-4197-9623-5c58a90dc6c6 dcb79406-3e01-497f-9cce-01379ee2775a 54dc7943-4892-48cd-8670-e1d85e6957dc 12914d90-9bd1-4f86-aac9-fb8fc7727c73 e6ecdd2c-a5e3-4d0b-88ec-d9280ddd19ca 38dbf7fd-9a3c-42c8-878b-4247a723a487 e031a41a-7624-402b-b0c4-b66f2a04849c de8d0791-15d1-4d24-9196-698f839f0138 d6f9b9fe-618c-47d6-a3cf-c16d48b35da4 71cd507c-3999-43c1-b141-68391cb2c84b 7a797b31-a9b0-4d3b-ae36-d8662fecb8c8 75fc9f84-8be7-4921-8877-910e079a9c31 8cc757c2-2f1d-48a2-b404-5bf35864346b b3f53caf-9bd5-4454-ab23-22808ab5328d 892879aa-c0e4-4f95-bf54-ea99627411bc 29cae1f3-0d81-44e8-a225-b5d7c775ac28 45c6c736-3d60-4735-b3e4-dc9a60da8fcb 98a743bb-ab4e-4e58-8a62-7d3c7f52fd0a 0b1e8382-03ad-4a82-9f53-5c02d7b51714 382099de-f0f3-448c-bd81-756dd335a960 976e6937-6637-44d0-bc17-1d779d90a913 12892463-76c9-4c5d-9d87-4b18cc3e6ec6 9d94d76b-18cf-41d4-bf0e-7b766cf527eb 47d42ff2-68bd-42f5-8883-61240d03aed9 490c0025-c9dd-41be-9811-bd001e21407f 04e017e1-5f83-4523-87c9-063e8ae8951a 06f31a0e-ac78-40bf-ae04-9b5bcaf0f65d d2d38ebd-3824-44bf-bb41-6a7317d2f20b b9cf73ff-3c4c-43f4-99ab-e8e7ec483694 60f39fcc-6a59-4938-b643-a14b9947f7c4 fea4e92a-b6ad-4ced-97d0-694382e190b6 a2907f60-af45-43d2-b055-9c1c44fe8c6c 6f4512a7-e15d-4089-a41f-743f49fe0b2a 0215aa7a-aafd-44aa-a42c-23d92f6de889 52a2a2f8-73ce-478c-a624-56f87e0652f0 718e4db3-5780-4b92-b11c-0c7e54be78f5 f9b253a2-64a0-4a80-817f-0f1416065206 95780067-3413-4f0f-8531-f915eb944cfb 8e084f78-afc0-46f8-aa04-9e16561094b6 2149e273-6975-4d3e-9262-c289a689f2e8 809429c2-6ece-4036-bca5-a46690346009 0a557385-9b7c-481a-b7fd-ab14856d4346 2f1ca747-62fa-43a6-9d9f-f7f62adc940f 492e6eae-0cd7-455f-9821-ba67be0467cc 1a71c050-66b3-429f-a459-e56d9576b761 2b3541d8-30e6-4bf0-9e53-931a39abf15b 5a94fadb-c08e-4a0f-9eef-aa9a2234d2af 81b3c3ee-64fa-4eb4-a344-38f5cf25a9a7 82f353ab-5030-4489-bfeb-737096ae3974 cb82f792-3237-400e-b3bb-85538a37971d 7f856493-2d1e-4c98-af4c-b8851a0eaee0 24eb6e6b-a2cc-473c-9b63-3e177e7f2269 838ab34d-9187-4d76-99f7-1a0dc02f70ae 6e780a47-d6f3-4b87-9dab-6ce769d01215 633d0c18-b4db-4076-9fde-da2b6f19f1b2 e8abba71-c84e-4a7e-973b-3d5279f42699 2331db18-c347-4559-8710-86dd5b2f478b 15f5af79-3662-46cc-9050-0b8f88a352ec 082a0393-fdb7-4704-b77e-0c198425fa46 708a1f06-5ff3-4695-bf56-835b932f21c9 ad804766-bd89-4080-97df-afe8d2ad568c 50c94841-b82e-4b2a-992d-a71cbe4b9602 1b337179-d864-4ba0-abfb-f4e8e08cfc69 fedce736-5ae2-40f8-a1cf-36e6b5e45a8c 92981f7f-608b-4be2-944f-d64896fd9c10 96351166-5daa-4547-a8ef-54f8f88f324b d6ea5c44-3189-45c8-a58d-819b1e6a923a 2ba7dc1c-b53a-47ab-86c2-2c37a88cc8a8 c891b0f5-b4b0-4b18-8a75-10d6d575a3fb be235176-9dab-4420-92d8-00da3a7859d1 6458abd2-f5dd-4888-834c-b5317c278686 c4db99c2-514d-463f-99e1-b1918c9f5dd7 f331685b-5504-4785-9ac2-bf8851521bc5 0fdfbcdd-fe4e-4172-a27f-d0052f4277b8 42c83bff-d3dc-4af2-b243-7188f774bfd1 50902546-cbe6-4cb2-b03e-81d3128e0b93 6cf75906-01c9-4c48-b3cf-ce5d17cb8cfc f4715309-e4e5-4717-ab0f-0ed9d6cc70ad 45496440-5836-4399-8f56-3d8f0ea2c3f7 478c78c6-5f51-4889-9ad8-40d915704511 8c185a18-5565-4a5e-be06-7a61bac1cfa4 be644cb4-518c-4a66-ba39-b3858cdbb0f0 a1d27e42-1224-42a0-8331-c51481e4ae5e 272191a4-d094-41ca-a3da-b7f997849273 67909fa4-51d1-4f40-9973-0202c0554a5d 00dfd741-2e20-4cda-8027-a347d0f9afc3 95f1bafe-23a6-4be0-a677-366d4977d006 1810223c-d524-4d72-8e87-16a117aabd8b 2ad5200d-453a-40cd-81a5-e33cca4f6b7f 52c13d74-de2d-4bbe-b0a1-6fc3399f87af a54647f8-1bb6-41bd-a251-2b62931d43cd 35f0a93c-d789-440e-aa25-5147b4f5e8c9 d500ec89-6d5b-4cfd-bcfe-29235fa745ae d496567e-2582-4568-a0b4-c7b3800cca31 697dfbca-b1bb-431c-a946-3406c7774af8 e4b72ef1-68ac-4c3b-be57-2a61c94e676e c7855bd9-992c-4e82-86b1-600e072b94a9 1d917223-bcce-45c5-9375-c97f8031b558 f1fa0a1d-ef3a-4cbd-b3de-bfdfef17eae2 9ae1663b-a50f-45b9-b95e-3de85c9d4908 4539ae75-c097-4563-982e-1c128f15cf13 0b0c5359-8157-4772-a70d-92a05706df63 4b143034-b174-4b12-b749-26f07ee778b4 d73b62e1-d0cb-454f-b87d-665558c1aa4d c49e5c02-c587-4c30-b764-6ec893681493 ad9ec7b0-ff64-46d7-aa87-9f731866e7f0 14a27f8d-d86f-4b8d-9f53-32c60a5b2f02 2191a724-d479-4659-8251-53522cc78cdc 4663f7ee-14b9-4217-ba73-b0c8348ae027 2da8789f-36e0-4892-9ee7-9379b5bfa34d ca0bfa3e-35c2-48fc-8ac0-4f8c2234764c 5c4db730-9080-4241-b9f2-0710a4dc2348 df88b8d3-1a2d-43e2-aa30-a2f8affd2c41 73d0f460-7f97-4889-9734-dcbce8b93571 745bf7d4-ba34-473a-be29-0aa24bfe73b3 909718fe-30fc-4ba5-8e5a-d6c55ad2c532 faa0f720-7146-4ede-84e8-e58d91848672 ff3175b3-a715-4c42-9251-60abee33aeba c7a3d356-2d65-4a58-8d2e-8d03cd5daf7a 09adb28a-b315-4bdb-af7e-d8d2ba2014d2 ec707666-b363-4262-a72c-4c7e1c2fb114 d0db2611-b59e-4678-b0e1-2c6ec00b6206 4596ff52-8911-434f-bb84-9469c1a4b04c 6c5ed909-8fb4-4982-8f37-4735559635d0 fa15a982-cea9-48fa-8686-8986cd104a34 178aa944-9f12-4ec8-b681-11e828fa5364 c3443991-7e6f-4b13-bea1-09a0fd3dbe5a 50aa7d98-897a-41ec-ad4d-bfc927e9a512 a793d509-fac7-4a28-81b5-8cf01eae48d3 d1cbcf17-6f78-46bb-98fe-a86d235e2faa 3fc8d0f8-19e1-4352-995a-f74ed7ae3de4 caa48fc3-9cb8-4c2d-a504-3569f415f889 41eedf95-2845-4677-ae72-2ebe1047b912 7c691c5d-dcb8-411c-a7ea-9128fc4e3fd7 b3cc4150-77fa-45ae-977f-131f9f928e2b 02c737f6-856f-4c98-999d-83e3bb38445a 4eb0d062-6a01-4408-b1ba-af0f255efe63 4a7e22db-38cc-4422-9116-e1f93da69ef6 50a44167-cbd0-4930-b962-fe2b010c23f7 439f6cc3-31bc-4379-9258-e2755bc242c4 0f1ba8d8-5a65-4f0f-b01f-59155d823645 f454ce74-5d98-4e0b-8346-c574b57f2f95 514f5baa-9e75-4dad-aa2b-02d86d52bb51 ae8e63b1-cc64-43ce-a078-49bd8a4a6d88 fa8f1d60-51c0-4df9-a57d-fb8e722910d3 7a01e231-1cb8-4c59-ba17-007be2387e01 b9cd742e-54f9-4880-84e9-2e3dc49c5131 79837403-ddd1-4d4c-b806-992552e5a26c c322d507-b78f-4bce-80da-78f12174d8a7 fb1a15c0-a7b6-4b70-87d2-34bb3b092af7 da669749-53f9-41ba-ac46-a381043955c0 e3e5c34d-02f7-4db2-9fb4-b9bcedf3c991 ecabdc75-5693-467e-b8b1-e04ccb3c4485 10c0e8d3-0e51-4431-b6f0-cd3bc4338106 6bec039d-45b2-4c17-9815-5694c210eea0 c4198ec6-f689-4d89-9df0-692aa2184549 635e7581-00c2-4d2d-a57a-7c8ff5573758 2afc42d2-36a6-4347-8d80-09a231be7a4f 82c80909-712a-4baa-ba19-861b03d92773 cd6937a8-dd1c-433c-85ff-0478ba8fc1ef 39b3c7cc-80cd-4fc6-ab50-613fafa6fbee baff3f51-1f8a-4829-9902-59309c7e6ee1 f2587c10-b306-4e74-be7e-03a0d8ca7d31 22071dbd-ea44-4eb1-9c3f-48e79b6c6f72 279cf1e5-445d-4e85-91d3-4401c85029dc 998120fc-2437-49a9-8331-90b2f3f79325 3e305a29-0c36-47d2-ae89-4a1d13ea9985 a06b2382-f2b8-4341-9b11-42c9fca6b488 c7547013-3cb2-4bbe-b0ca-08396c755fb0 58fa10a5-3c13-47f9-ae25-c3853f59ce8c dc51d06f-170e-447d-be71-0811fd803fdd 24cf2fef-43ad-445a-9961-52548ce18e42 00bcd79c-f9c6-4bde-a6c9-7acc06fcb744 f5f0902b-efc8-44bf-95ed-5534c220b1e5 00efb262-281b-4992-94e6-12d682336bc5 c179c42c-a3c1-4d76-9a1b-5e5d80b8f00b 05e678e4-fc4a-4e4f-a56b-e37019013336 35f0f1b9-8e14-4d63-804f-490872c7b111 c8575ba4-0566-49ec-a9e4-535a86b57233 dabdd832-42fa-41a8-a5c3-8b385c94c0be 39268d34-9b3a-4ff3-9ae9-1d8207a004c8 eaec7d05-34e6-44b1-a30e-b16838755aef 620e4929-fc01-4837-bbd5-598c2cb8f3e9 795076b9-7190-4d7d-a868-a629903f5e1e 743fb578-098a-4d79-8987-524e54ee2a74 eeef31dd-e2e5-4027-99c8-b353ef136bcb 0a60a52e-96ad-4c5a-8f98-a11b2fe7fd0b 061c32b2-5461-4223-8e6f-adde3f343d83 e445fa46-11b8-46fd-add3-d41a11712e5f c58991a9-d15f-4696-b848-46d46bf12a00 8cb79e73-3d19-4e23-944d-0130b80b1859 3e53c868-44b1-4064-81ab-3d3fc4e85e6d 2ab16543-99e1-4939-b1e8-d385db7d5276 14532d37-6df9-48db-9af2-c13c250059e5 e06d1161-762e-4fc7-95bc-ac2e77fcae46 ebf5e1d9-c3a6-4ff3-b109-13d32dfb6966 809f6884-7f84-4553-a166-97b73be6ae92 522d6ca4-b4bd-4db4-9764-41788c6508ec f9869586-0466-47af-8295-a4d8fee36e85 955a616d-46cd-4482-ba6c-99b77abb3de8 cecc1623-c45e-48c4-a02a-53b33be72158 609c4ac9-1ccb-4927-9e24-0efccddc77d5 3de2ed41-22c4-4615-8421-3101023c57b9 3c3dcbb1-cf40-4dbc-a7f6-1a9e7caa4c93 e93f798b-d129-45d9-bcaf-8c72bd9dee75 d8d09103-380b-439b-b8e4-b14597039889 3dd2b334-311a-440a-b27b-1d073f19e3ae 5b841038-ddf1-407e-9b2e-c98d023c7855 bc24c9c0-1474-4faf-8727-73ecbde8f3cd 59500a16-27ca-41ba-b4c9-ef7649be3416 f456d59e-6ede-4256-966e-2eb7e804c49d 957d097f-c2da-4a23-9bf4-89fcbd5ffb76 df6da47c-5607-4c55-9467-5d3af83d5b70 999c02dc-a2d8-4486-98aa-cefd5577edcf 77a15af5-6dae-41d7-8b9d-04a3c918f57d 71a92479-d933-4768-becc-27989cb060ae 62103bc6-0695-4658-bb60-a03a255d2cbe d08edd29-de2c-4cc6-8a64-8d96da36ef7a d8542ebb-00f5-4d25-a4b9-cd005641a093 0583e338-2ef0-4972-bb54-d070cd9af4c9 18609de9-f0d4-469d-9324-1f633a2b08f9 00f43bdf-b5a7-4717-81f4-70dfeb9bfe2c 30f262d7-67ef-487d-9c09-7da9a28e4222 413e3659-a7f4-429c-90aa-8472bd22b09a b681f5fe-784b-4137-afc0-5c5db20b32e1 440fed7a-2cff-414d-9547-835af3fd6abc a957f9b1-4483-421c-b7f6-fafdf8802f91 88a15a2d-9b53-4cbc-a11a-b33b3835a958 2f6315e4-43c9-4e04-9588-628c12ec8d15 ee0df202-d261-41a5-a778-d42ccd9e46ea e5a26f5d-a042-40ac-ab95-6effe2e289fa fb645faa-944f-49d5-8cef-ea2b01d6fbae 224518c8-bba8-43fe-a6cc-3b3dc7daad18 b97e3363-6894-4f21-a740-a666e2927bc4 77997313-c186-41fe-8b8c-aa13f9584c60 e2614dde-8343-47d4-9db3-a0f11827fdde 3bbf6d52-54d7-4f26-b0a0-82888a7e5368 b90268f5-1c7a-4cd9-873f-1d84c9021119 27021b52-ca54-48c4-9bdc-a5e2ffe0100a 5770526d-d50b-44b2-8d97-d655242e207d 2f342e13-d6f3-4928-a7ed-26be739c7b78 20bae956-333a-4124-b1cc-a50533923305 8c25f8a4-f7c1-4fac-9fb8-622ea48c063f 3ff968f9-98f2-4a14-b2f3-cb3dd07acb0c ee49b2f9-e1bd-467d-b994-68303b68c1b0 d82577b8-2724-4bad-be20-19488bef3096 dcd3b40a-d458-48ff-8a8b-88fd48deb3ad 4bae1fe1-c4db-4c11-88f2-5e1183a79c89 041667cf-c1c9-41f0-a023-3ed65c42490a 3377b3c8-4eca-4751-8659-283c6a89f7f6 28eda3a1-b741-43f4-a550-7beefa76f425 41bcb9df-9b6d-4256-b8da-d4ef58e31feb f9031b7f-d36a-4966-b776-07dd66e5c009 eb37277c-62a9-4b80-82c2-302a7b62dca9 0ce5e834-becc-4e14-b1d5-58c92c6716b7 e67e83ba-1169-4275-bbef-4c4ec5d684c1 1a3fb862-a836-4f0f-8335-cf9c5f44ce27 fcc735d1-810b-4d6b-b9a9-9d83aff835c0 a88ae004-7424-4d8b-8eea-b30e3e8d67c8 e3a2638e-09a6-4a05-847f-dc734706e2c1 e68cf667-5aa6-406c-bce4-e7ce1c36447f 8e6b0414-35e4-40c5-a3c0-bbd3c89b0e80 07833fd7-f4ed-446c-a88e-337a60bc45bd 4f6ce91f-b615-4f5f-a749-1f6321da9925 74b8cfa1-2326-4c40-a490-4f2d1ec1d53a 3f385304-0af7-4910-a5c2-f17337c9b000 ff7749b8-5429-421f-a8a2-9fba997d273c 9d7976f4-ef3d-4f34-a557-205e1f439286 52c92c26-cf05-48ff-a814-fc9a6550e9c2 1508909b-951d-42dc-bee8-ca5a13b51312 343b26b6-cb50-45e6-a2c9-f3d65813217e 0928016d-c8c5-4d73-83cf-907983bbb0c7 86b0c6a2-090c-4549-bc67-a84b06dcdf1b caf8ee1b-bc20-423d-ad86-24330bf9cd61 eef745b3-92fe-4093-9f37-cc91f3cc9359 ee47cb0b-cd00-40ea-acb9-6bd1796dc9d1 fe7ce921-e570-4763-af89-f16d3892b6bd 9eb629cf-536d-4e45-894a-f14ec097d339 13c16b47-e872-4c40-9aba-566a6f12677c f9f73489-fc95-4753-b85f-f635f851ec41 d3473f21-a3ef-4ce1-b157-c53d3b97ced7 8be62a03-79e9-4cd6-b99e-0188d3677ecf 69d1708c-e9f6-43c9-8eed-047d6a215b40 e1f0a6f3-1e12-4522-82c6-a262f7cc8d73 bdf9c9c8-fa9b-48fe-b23a-56ace2773aed 9cb0b958-3729-4b64-94b6-c6c5e84aab69 4677f2f2-89e2-4643-9666-5847101127f2 3d9bf318-2bce-4ece-b25d-8fb8daf64f2b 8662b097-2c21-4e1a-a873-fe1d801f4efe e8450ff8-7513-4248-a316-1da5f4116866 d4ad9685-afd7-4e7d-a4b0-75fb049a9d37 49cabf31-c7f2-486c-8c7e-1296230f9dd3 a2aecf96-1524-4706-8655-07c43fd31368 49413859-c8c1-4222-8683-1219058f3b3d e166769c-efa3-446f-8c04-73457aa0ea7a 1315c0dc-cf88-46e4-b83c-0d8548c421cd b73e6d29-a99c-4ac6-a1a9-1e4341531d36 31059a46-2027-4a46-8423-8314046b6874 5ba8ef69-77da-4d89-a5be-aa9346b7e75d f5bcbaa9-0b33-47fe-9d33-6c78a8c78527 43d2211b-aa81-48ba-8c70-746aa763e1e3 09faf24a-313e-4207-9d18-8fdf49b009a1 4109f993-8070-4918-8326-f118fe162185 4335a2fc-9ef1-4c8f-b242-04561491936b 363971b0-6f99-4212-993b-9909d9e87524 b21aa339-944c-43ba-8bae-cfa97099fc86 67105c5c-ac98-4fd5-b448-6ceabcac3799 ee06b518-7516-4155-97e0-db13f65b5dad 9334fe5d-eb77-496d-b3f6-4c5cde2035e0 5946b43a-f7d3-4c2e-b1cd-57ad481f1768 a92862e0-2cf9-4e4d-bdae-80210da5a535 9578031e-6768-4982-87da-b2048945e44d f655375b-ac3a-4754-8c9c-612b55b8d728 5a012a6e-1ca4-41a3-aeff-6c0d855a4e4a 73764928-feb1-4e40-917f-29ce96436ea1 75a10cf7-8844-46a5-9ad0-d1c9a5599313 51e54d86-fad1-4d0b-b445-c539f7e6d8e5 6beb90d6-99c7-4fc9-8435-27c1d0238946 5f976ca0-a625-4dd4-a3ac-be2923de40cb f2333acb-43b5-4c8d-ad36-fb8cd88918dd 20f26906-05c1-4589-9738-87f87b34b50d 94aeec3b-d58f-468b-90af-d56a391d5438 acbce81f-8f0d-4672-8c38-8a25c0c8806f 8709540d-f4df-4377-827f-5123fd53d577 ac7133f4-62d1-498d-8bf1-e63913240bb1 182ffb8a-14b9-4052-839b-4c3b69c672c1 c337fe6f-e878-4c9f-9910-f9fe218efa83 db802248-df9d-46b8-bbe8-77a6c15d958c 83991bd4-c920-4464-8f93-de65ab262cca 73d06a1f-3002-4a00-8116-9be99c9896ac ac3bb1b5-e766-451c-8f42-84340668cd09 a671f885-da7d-4529-a5b5-35ee28f71646 8edc7845-f305-4e0c-902c-f78aedf09e2c 9739ffee-8333-42e7-a5b4-dbada8af9728 2303d882-99eb-40b7-8124-f95dbcdcd4ae b2855df3-64ca-420a-b52a-9ec5d75343ba 26cbe0d5-173a-44f7-a13e-e12a3eb74121 f819f88c-1c40-46fc-b24f-a368873f925e c041562e-a340-4766-8c7f-5376f7874e61 728a8f43-0fe4-4536-96e1-90d6b52eccb0 daa7563f-03c3-43ff-b02a-0c6c2f40a42b a4edcd68-ef45-4fdb-bfa4-42a52fcf6521 11735931-cab9-4656-88de-1cd6f1f293b1 4d1efc48-4614-4f37-8bbf-449afe43ce40 51e181bf-2687-4dc9-bb25-749f886c5993 3f18a739-d911-403f-bff3-753b9ba4184f b21ff2bf-76dc-4942-aab3-f36e0058d23d 863e18f2-0930-44cd-a068-10e8032b06ef 85188a40-541d-4b6f-9908-4d37ce505e1d 944df319-467d-46f2-b778-e78445e33b2f 4729866d-fdd9-4895-a6be-5a9a89094361 0c863a31-a1c3-4c5a-8570-616fc9d72baf 9878f2d4-b667-4b4e-ac29-2280f5f40127 90d55696-caed-4fca-a6d3-d3e9a782a088 29ab4078-7a83-4749-b1c8-f19f1d4a3ad5 65ea49d7-eab1-40d6-a4b3-cab64101b77c c64d0067-0e85-46ca-830f-3d54635b1d8f 901e5306-2cc9-42a2-82da-b04bda903356 0f905214-276e-4f3f-8b03-593a50f4b35f e9b38114-0697-4d59-940c-07677dfa2244 7f016980-f942-4794-8cf0-fbff0a5e4ce7 d1ff560f-0e39-4af2-afa4-c2e43ca58db3 f2a33689-1127-4a0a-b1cc-370e282c5807 6aa8578a-60fe-4e16-a7ce-4698f253d2fe 2f714dce-7769-42b9-84fe-8dbed86221f7 72fa17e2-6318-41f1-bf76-7986297bc263 7d12a5af-15f1-4858-84ec-cc4bf90d9d0b 05cdff53-26d6-450c-8140-e04988347844 8f1bdffb-526e-41a0-8abd-3b2b7eac6f59 60d61336-01ae-422c-968b-5681c8b97e2d c19725ba-9662-4a51-823d-2c9908f7b3d2 9957e3d0-a387-4cdc-8d91-9aa6f87caac1 2081aa1f-7973-4343-9a5f-35eff3046eea 8070d9e2-bd6f-4ad6-a29f-8324a60f8623 5856b356-1a91-4a1b-95f3-99717fc209a7 00a15200-f319-4945-b46c-89c05c72afc5 f729345a-fd25-403b-abd9-68358002ba09 83cb836c-e4de-4c82-baa7-0459989bf537 5bba9770-5163-44a3-a8c0-79a0d6a62091 2b4f8b1e-86dc-460f-8a16-4e9384199de9 ad21c44f-6a1d-41d4-aaa0-df5a4aae2bda 6d99ea40-0e94-40d5-9aa7-10b5255b25e9 3f399032-51e9-497a-8a86-9a09c284f376 0294c984-6691-4af4-84a0-56ec34da7c2b 25eade68-ec1a-46d5-93ab-178f70962012 86328761-467e-434f-8fee-2e46c6992f68 262adbaf-2afc-4e84-b696-18f23b81d710 5994c6d5-8780-4f61-8be8-14b425e99af2 0be697a9-4360-4da7-8243-b3b547014b17 cc3c09e3-f0dc-407d-a954-bed52fa0c538 b547fd3b-ad33-42dd-a935-34b7680f46b4 cf4a8c4a-273e-4115-a81e-65cc3d44a5f1 73c26029-76e6-45cd-acc3-ede620b99a30 3be26d87-5650-4102-aef2-a196275bd7c0 69a49add-473e-4835-90d5-63d4c4377a4c 5d3def70-9b02-4971-bcfa-0d958a7e2e8b 607b35bd-e29f-4ac5-8c5b-a3af0f00d91a 679ddb28-eb8e-4bf3-9aeb-12fdb8aa3ca2 b1435203-0167-48af-b019-24bf549f193b 6c9367f7-f5e0-41b8-8d3a-12915d66c703 43eb41e9-2cbd-427e-9771-4fa85f5f41b8 4930fe6a-4d39-4122-bd57-af5514ce9c23 e7660a7d-a0cb-41be-a96f-a40af431ceb4 4e8b02a9-c46c-42b7-b7bc-43aadcaccc4f 83808b06-b6ea-4d10-9c6e-2ad4d1c6108a 8ca80493-07c2-482b-9021-94d9c45685b8 05ee2ae2-205e-41d4-b61b-d14e738517cc 37d3493f-8859-4d6c-b8e4-a31e7e0be625 15cc949f-c8d1-41e7-8f68-b1b780d784b2 eedc8bf4-c95b-4381-a222-13c0c47b91d9 1a34828e-03c8-4e59-b9a9-725203e354c9 8fb7e81a-b362-45e4-b5f9-0619debde399 bc40b190-e6d5-4b88-9cb2-4c833795122c 610e2520-d085-45c7-bc6e-5d9ab9b1cb07 c00255c9-3ba9-4652-9200-6ac944ac94e7 29e3ac6a-e84b-4ad0-979c-ecd491541eb4 4f4c8dc4-b181-4b1b-8c3b-7e7bbb3e143c c226f939-5cb9-43ea-9644-46be9d1d0fe6 1ca66e18-d4aa-4ea2-8621-426a28c9625a 72a4cdb1-926d-47d8-bcd7-42a4992a1fe1 d3a373e6-c2dc-4c53-9f0d-c833cad76bf7 4fce72f6-c881-455c-b668-0867aa903081 00d70d4e-e11c-4568-82fd-107242573785 be19d6f1-f3b6-4b82-85ad-b7c438fc0720 020d5f9e-74e5-4812-88e7-b17d9175d1d5 d3f8b6b7-4035-4181-b725-1ce8feb57c26 ae9223a7-ddc6-40d1-a8f5-9d11517dd65a b56fd80c-c229-44f8-b3d4-31ec8b82d0d4 d2231e95-6e5b-4ccf-a757-d2ba8f45a9c4 0ee4fe5c-1f2d-4237-aaef-66bc78e3a525 76d0bc6c-5daa-4647-9aac-4c6a915d238b d006e0c9-0e37-4354-8f08-3bf7c96aa5ab 93ec9744-8309-4c9b-935e-31bb2341d273 5c82ceb8-9dc6-4174-bbd7-d38d74564950 721aaeec-0088-449d-b6aa-5655461a0e7c 3a6e372b-0f20-4f1f-9747-1071854cf08f af975ca0-6bc9-4add-b19f-873374f9be2f e7b3f42d-a2f9-43f6-8dce-eda700e1af26 8318b188-084e-44ff-82e2-a06be734c55a d5634367-4935-4b03-b753-8821dddd8932 896ef842-45de-47c8-be73-2e513dbaa275 363ba8d9-fb54-4585-a50b-8a83417cd823 b181cef2-a0c9-4db1-9205-fcc39d9809bb dad4945c-3b44-49f8-a4db-cc1aadcb21f3 b9ee216e-1306-4ce3-9bbd-981e1a356319 67049246-0518-40dc-87e5-7ec48fc414bc 4eac83df-6c88-49bf-a881-77cec717a917 588f94a8-c195-45ec-b2af-8458e2fb1f78 28005e70-09ed-4d1f-8860-2bd2eafc5b3f 7f0cacc5-faf3-46c5-9fe5-08891adcb909 f5c8c240-52ba-4016-b6fe-b3bd50ad3a44 e9cdfae0-0c7d-4241-bbc2-96a960e8e22a 78d30e50-c2c4-4a03-aed3-4ba2626ceef3 7c171061-ee78-4902-94dc-86f9fc1dc233 e6cfc509-450b-42ca-8068-a31449b20aa8 81cf9424-6aeb-4c6c-aa5a-0550ca4d8f5a ec8f7ff3-c772-43c2-8ebd-4e4a75f57016 481787d3-3664-45a1-b399-1ba91490c690 7d3db59e-4ab8-471a-a216-a60d6d3e020c f745fb2a-7ca0-4381-8b11-fe53964fca69 b0de9adc-3923-4885-bc87-5dbce24900f1 306be355-18f3-4950-8c9a-e8e4fe78d4e8 b84a5c77-d42b-48c5-8e1d-b70bc78392f8 406c0546-2ad4-4415-86d7-8b9d2c71f5e1 4856451b-db95-4eb2-974c-9073a97181c7 101f2640-c27f-42fd-b20c-253546bda5bd 55149d6d-c29b-4464-a5de-c1f4157913b4 963f03a1-2121-45c1-b5e2-d14a46cf591b 785c4f2e-8e62-44dd-89d0-3c2b60b9cef7 b1be281d-ba5b-4779-9c2c-9ab0085fff5b 8146fd68-04e4-4d9b-900d-2732d9b214f5 0a827b8d-5d2a-4b55-a729-8f36265af012 0b058f38-cbc7-493c-9add-3b73d9abd99f 4b7fd24b-6af6-416b-9ba1-3375128f8188 f61e3736-1a22-4265-8ce8-720db8067035 8cdc091e-b63d-48ac-a71c-4eb636dce0f9 b1e9dbc6-683e-4636-928d-143190ba8906 54400b2c-a551-4b64-a741-da742952b19a d995113d-9750-4cb1-9bb4-d624cb8f150f 17116345-0a5c-4f17-982e-7a53b16edbf2 4457cbb8-a38a-4996-8e2e-881e1b3b19a8 f03e2d7f-c5e4-49dc-9c5f-1f09720710dd 64625d65-feca-4724-8879-e358f5789276 221ad9fb-d3c8-49b2-98e2-f3a170b1c345 e32785b1-204f-4da9-8817-af7ec3c229d3 17eb8c54-2600-4434-9b10-05c601cc8aa4 c5f9f83c-6577-4f36-a798-92b760cd59cd f5af3924-8249-47c6-979b-879ae004ab8a 41f1aa65-86fe-4e54-9e82-08f509d32c53 8d0f84e8-e247-427b-bd14-8c746643b70a dc47c729-7725-4d71-b789-2400746534da 3be4f1fa-266e-4d51-a768-63672e11a727 24b9dc1a-c680-4c24-af5f-b00c00c81224 264e1a88-d98a-442a-8c72-3d8e9eb8fa23 47b70dbb-a327-4806-b0cb-72c2d95b86d3 1b3004cb-7652-48b3-9c38-15f2fbfe2724 946aa4e5-14f9-4e52-8e6b-422f1d4efc3e 616e7865-d642-432c-8770-6a0085d5b1cc 452b6e82-0f9c-48fc-be32-8c618af9e418 008eefe4-0170-4e1e-8c71-3f972a0cf3bb 0490ff00-062e-4a41-99f2-e8a790eb0d13 8adb0334-59d6-4824-9b73-1de51aedc603 edcc82a8-6885-4794-b429-a1e63fe5528c 750c7a71-dbfb-426d-b4c8-d3da007c0595 f22a686a-8333-4ebf-90d4-d0004c110176 2d8cf3c0-0e3f-4e99-8d00-0b902e98f938 8dc53a29-dbb8-4436-9f69-63c864a0ff9e 06509036-533b-47e9-b524-a868360181ba 4a7d7a36-ba95-409a-9eff-51affecff022 b7981327-37fc-4514-a7f7-2369fd5125ea 7ca46dfb-5a6c-41aa-a7f1-61b6deffec78 c1c285bc-3de9-4cd5-8736-b49780ce1435 a6ec15ba-ab63-4124-b388-6c7378e1350b 2e2b6460-631b-4afb-8ccc-de0d116025c0 2f24aa57-8392-45eb-81b1-0445431f3e1d 3ed95a49-42cd-41d5-bbd7-c0cb0af0ed1d c999c2be-6b97-43ff-b6a7-e5b51c111917 e2246bf3-000c-4f59-82a5-207a4128b06b ce462e35-6e3a-4f66-b559-9b4349db222c 5376ceb9-68d4-4364-b371-22e083eafc8f a5a45ced-f306-4c04-9d72-dc5f9121a2fe f47b965f-8130-42ae-a624-177169b47d9d 5441b56f-dcd1-46bb-b8d5-bcb10305ab58 18b0dca2-4c05-47f4-acf0-b6d9c7a645e3 1622a745-c4dc-441b-b76b-bdc9886f9768 8ba864c8-30b5-4d40-a35f-755142bbe91c c98b6801-deb8-4d8b-8850-1ddef9204670 24e8993c-f18e-4b33-9214-bc28867d7a81 ef39cacb-f81f-4f0d-9f53-2e234711a8ee da4173ce-7974-46be-b8a1-4f85ae464336 f9606e2b-8782-44e1-af47-3e3734f7be62 a439762f-961b-45aa-aeb6-aaf356df0dcb 33b16ecc-7971-4aa7-910b-47a0a577f777 cc5dbf2a-cb9c-4aab-b45b-fa48fb25d03a b61bdabb-10e3-4b6a-b696-4aff952626a8 787d0234-3daf-46c0-badf-10d9389a5c5c 796a9089-e98b-457c-9268-1b2dd4387ab7 37c1138a-6b48-48f5-9854-4b90eb320f39 03a059b8-d149-4494-ac66-7c6756fab3d7 57a1793c-5869-430a-b567-5dd5179aee7e 3c5f32c1-851d-4389-a3b3-165e973be1a2 73fff488-6fba-41c1-9fac-17a008b364f6 5a4d03c5-9cf3-43dc-9fe2-31fdf2a9a04c 22cece54-f05c-4fba-af31-b8b548010599 ad034a13-edb0-4af9-88ef-65428082a9ad ad367850-d1e0-4c31-a9c3-1dc89b1e89c8 2c6f9abf-225d-44f0-b873-7781c31ee75f bab5f7bf-d5f7-4a05-b40b-78172e358cd0 7d4794b0-b809-440e-8cb2-5fa71fd3db6f e6efb6a8-cc1c-4b39-ae1f-05b6f134aa29 d4f328be-11e7-48f9-aec1-d5e0374cd50d 51db5140-e184-455b-b98a-6e43caff63d0 9c844e1a-994e-4351-a1a7-4b979887eb11 4df91892-3de1-4b6c-b911-8e6037ccc8e5 af208237-54b4-4516-a688-754c86ef44bc 83860c0a-f5a5-4ff6-8971-b31498d770b3 5bede8df-5945-464f-9d9c-d3666e50efc4 dfa94de0-1662-478d-9f7b-68773f7f17ff 45c896d8-f0d5-4489-9ffe-55f2862d96d6 8f0f2f4d-9456-4e35-99fb-9ff097badb57 ce6bfce4-17da-438b-a665-83f6d34e0f5e 71e1d759-4213-4e1e-8f54-580e113a4d5c ae2c86eb-e75c-4d13-a359-ec05098b6316 fdfb7ae1-2d5f-4e22-b22b-e119b70f3854 7358332d-6c48-4f89-9f8b-9947067d5ae5 c71dca6a-9bb9-4b05-9c5b-bb045eada059 a3be1fd9-e54e-478e-b6c4-bd943fa05fcf 29c63f9c-d491-4653-81d1-0e9bcce50447 47155daf-d20e-4486-b739-d2eeae670000 42781c74-132b-419c-8e3f-e72a4e4be97c 77644285-006e-4127-a36c-f767650e2cb1 2e718f52-c7fb-4d2a-b678-ef8e2ce0ffa8 1d563f76-9574-44c5-964e-2d070ed2c26b 5aa8d98e-b2d8-497b-b47c-8a44cd59ceb0 8200aede-6b5a-4454-a14b-06e8436b8211 d5f790d5-d3b3-4bef-9e92-ba2eed2b9b1a e04a92fc-5951-43a6-8178-257485b695c5 47d28986-d69c-46ff-997a-726715ca0ab2 8bf6fbec-a5ff-4e97-b5f7-ac5f26cc4d2f 10c4bf20-0602-461f-8fda-606b1937fdbf 5c4768f2-9d76-47a3-a5e8-2b951fafa24f c1f9b901-3e32-4a12-9430-184a84148dad cb4c8b7e-4650-4fda-ab1e-c09c3cdd46ed 9399db9d-23d2-4ccb-aba2-dae603152a53 ba402fc9-e78f-4e50-a83e-dd130953e9fd c9668001-d63c-4780-b21c-fd070578d8e3 f13d6980-464d-434c-8a0c-eae1dc86c120 59ee2fa1-13fc-4056-91bf-3c54936f956b 58052932-0873-4122-8f94-7c69e9e196aa ad0522b6-88e3-4765-a60f-b575ca4de108 898ac6f1-4fe3-4ee1-a4fd-6d6a48b847a2 86afb972-7251-4679-8222-61338c5f1546 a8c4495b-3c23-4f0d-8b84-d4fe1f5b325a 3414b6e1-d6a4-429e-8362-0e2a1e14c2c3 9ff40ab7-ab80-4b7b-bf83-aec774756f83 4ad57503-1090-4402-a39d-34f6b8d4789b 764c3918-b8a9-42c4-b3e6-ffc60a1edf34 c1b56390-5315-4fbe-ae31-e883eb3bbc2b 0e20052e-c789-4e63-b286-a6f082805bbc a4f4eb0f-89bd-47f2-b0e3-db19b8ff3d38 5ce79d2a-ac3a-4db5-92e9-605328d7ba72 6528a48b-0433-4666-9d8f-4909f19204a5 8eb728c6-d3dd-43e0-99f6-464bec908764 77c055f5-0d68-418e-ae1e-c7c066066fb3 8413713a-f0b0-4b94-bb6f-1b8e5d826b80 9073e205-43bb-41c3-8fa8-d196237c3f15 c56a9dca-2eca-48b2-bd81-ad7447e9b6c0 9a58991f-5783-4529-9615-f0b184ed1d5f 55ad6425-7b01-425f-8d1e-a374d00a8ce7 f4564077-598d-4c14-9c9b-cf85eccf8165 1138d8cd-5af0-44db-94e7-c7c0e2626712 a6352f43-4fbd-41ab-a6a4-75c66da67a95 17ee1aba-9afa-473d-a69e-4b410732cac0 603f8c92-8261-4737-b0d6-2e92bf12fc62 c1187119-8151-41dc-a42c-f988db0b5842 ed4d0c0c-4c58-4f3b-9a9f-76ac636e4c02 896e252b-3190-4904-a271-265612fcb1ec 44606288-7b3a-4926-818a-9d922ea41761 d3f9abea-f02d-4a07-8b87-b5736ca1775d 6b7344f2-afec-462c-90d1-67c6e3209ce1 e27065f4-b006-4729-8823-4c18e364005b d7a1a4c5-cfe5-4fbf-b868-cbc2853d9587 4bd1388b-fba3-4640-9621-03ad327183e4 38dffc9a-33ca-4a8c-bdf9-81c22d67767b 6740609a-83af-4739-b874-730171e042dd abdac657-34f3-4e1e-bcf0-108bed8b1ec8 dea3e432-86f2-4848-a37e-64c496bf74db 5ac76596-ec0a-4f8d-b024-782dd8ac1aea 40d6d3d5-a5fb-44b9-9fc0-4c909cb8964e e93f953e-018b-4a39-9791-b10e59d2c021 ac8127f5-5e6d-4116-9e1d-6de5d0bd0f80 075914fb-c814-4ea1-9bcd-b4b48daf4b00 157d6042-e271-477b-b7ba-a3961804f77b b004d9f8-e752-4900-a9d6-b44291835b6f c57ca44b-3849-4c10-9f1f-b3225c124785 549743c8-b14e-413d-9797-f33de9cbdd42 0ed6707c-9fd0-4eb9-afc7-ab6c1b1f0646 6944667d-7e07-480d-ae08-60d436a515ee 89e81f5b-1270-40f7-8fcb-a3cda2586902 b3f3faac-aa4f-465f-b2bb-c680cf4db531 ce9513d7-9c1f-42d2-ae18-66008ab0d244 ff2dd364-5965-4b8d-af7a-78aa79e2f724 3d81d340-a51d-4fab-97de-4173a8127dcb 639c7df4-bd53-4569-b201-f65aea3c99a8 722c91a9-0541-4c07-aaef-cdc46f52339e f1cb2e2f-1561-4527-901b-5afbfd34ab46 cb5af335-7cb5-4063-bbb4-53154a2a9c5d c8c7c229-c198-4437-9c5b-4d9cb02fb140 adf59339-e524-41d4-b8a3-b541be23ed94 512c1f82-45c2-4734-b290-0f6f170c48a5 6bc67f94-9bdc-42d5-b67e-9d0f165655be 34633eff-34f3-47c3-842d-556492ef850e dbb22efb-51d3-456a-bd88-b4cb81b1a377 3fb7de2c-fea2-4733-bf5c-83aae961aaf8 6c21665a-8613-42f7-ad1d-01c3be1feb6b 7b43b4f4-1845-47db-bbcb-9f70ce50b6b7 438284ca-fb0a-41f6-9f1b-40ac83f935b7 19ddddff-69c0-4536-8bb4-bd443a6ceeb6 a8578eee-e583-4705-b3d1-0091905c6110 fdecc9ae-c4bd-4d3f-b1ac-96442ac703a8 1a94a798-1209-443f-b223-66cd562ba7fb ca5cc9c6-9344-478e-84d2-5582e0c77bef 69edd7e4-cd36-445f-b405-6312622c3cc4 a04e114b-7383-4a15-98a6-849806622f0a 0a0da67c-2d0e-423d-a8c4-cb3f841b4cbc 44474e90-53fe-46c8-82df-6a1aa4917ab7 cd17f5d8-65bd-44e5-a391-c8aed213d9c3 ab7ddfa4-24c1-4a14-98b7-10c73a5586b4 89e72ebf-6ad0-4d26-95fa-2ea4cf7426bf 52c08a5b-931f-4b55-91ae-483a30b26a9e fe9b544b-e51d-4dd1-b9e9-ada40361e644 521e6b03-2c2b-412d-8f59-8bae8a3bcb64 7476a69f-8373-4276-bfca-7bc948de10af 5b19d758-9f18-4f8f-89ce-1c7294f5be97 345d6e1c-0b15-421c-a81d-087876c618e1 46dcee36-b8f5-47af-bf3f-a04c7dabe0b7 dc8d09f2-e744-4c74-8683-f9e0e6579e56 7ac45f6e-193e-437e-9068-815af971839a bc4a4af2-b892-49a2-abdf-70326e79ae0e 2e46fd4b-8e0f-4249-a064-3f2bead57749 3c2f688c-e90b-4a60-b534-dc59894eb208 e7e0e93c-d62a-47c7-b8e7-a26eec8e2594 e953e6da-ed98-4760-a44b-85e5cd7bb5b8 df03be7d-93fd-4238-bf75-fa20e4751cc7 34eebed6-9497-4389-b93c-1c36b5158c01 b3989e38-76ba-4e89-8644-d2ce0871b3ce 3100399c-b217-4b9e-aa05-5492f5300d25 33b47553-0837-4608-a8ac-6b261993b033 fc3a1e36-34be-4b8f-b692-843bf0149ecb 3ea52201-9429-432f-88d2-b71985574c27 5951509a-1884-4e7f-b148-94cba7da444d db72396f-9180-4ef9-8ce3-71718c0e8225 fbb00c1e-ce58-4120-aec9-6fd5d77afb28 35d0c040-e95b-472c-8a7c-a35d9872a336 32044866-aeae-462b-952e-d0347c8e141e db2c9886-7818-462c-9e23-ff4efcb9bc77 e1d74e8b-b18d-415d-b764-79ac84d68143 3274919a-69f8-4258-83c4-a948150f1138 3cb09ca0-c3ea-4a40-9f39-dcbfc4a31f4a 6e0a86be-28c9-495c-9443-0f5a846237d3 1d0a651e-7a34-4a9f-a50b-60bd752bc34d 25e56aea-0b98-43e8-beca-bf3334115ab2 7aaa4828-732c-408d-85d7-8e17254e4e1a 5586cd82-2a4b-40aa-9ae7-3b46f0f0dfdd 37e09fd9-0bbd-4c6d-8860-6ffaf8bd6e41 7961b5d7-b61e-4516-aa7a-24f465e823f0 4f0ab5ac-ff6e-44c8-9e8c-52acf98b4052 344829f2-a931-47ce-a743-b7d98722b550 e5be7998-20c4-4783-b380-7fa5a40a9058 5e1414a0-a9b9-4603-ba4a-f6a75ac418c8 b423a197-5aec-49ac-bba9-a2c418513330 f02361a6-a481-4d7f-a9e4-c211deefa4ce 225c7b85-b436-4a81-8acd-b91116fda818 6a40f8c9-84ee-4dfd-b895-23e06ff6ec4a 839acc2c-9a97-4f18-b4ef-f2e68ad286cb c9f78d57-870e-4366-8f80-6e7066322dc9 f4f5e253-0c7a-496b-9b17-f3096d3516e4 e6dbdffd-3656-441d-aebb-580bedfea838 b7601b95-1e17-4a76-8759-2b353ed0f53c e12c1602-e913-443b-9c42-fd6fd54c0754 6c2d09ab-5eb5-4ad8-8aaf-e5ee933436d8 478bc260-1a65-42b8-a1ff-673f6eabb52c 39abeac0-b361-483c-87e3-bd8a23171238 48e9e7fe-9805-4a32-ab59-9687b0238b36 33950708-1305-46a4-bdb8-b2bc9013ba6b 226a88f2-24fa-4124-a0a2-39ac2db8994c 5dd3d7ee-84f4-4a6d-8b5e-fc30979a1e4f 17be7be9-c6bf-4069-9a68-b5450657b4c0 e4596f33-65a9-4ae8-a30e-f5b390ad71d2 6e5c27fd-31f0-4c1b-9227-e14ca783c467 42cd2073-acf3-4ce2-b4ae-3f2dd3e73696 473dbbf3-16e4-4068-9e6e-1036402a0354 67ec18d7-f7e4-4594-97d8-6658e542b125 faa50681-5f1b-48e6-894c-b6d3e698b3e0 99318dbc-43f7-4dfd-9804-4ef50aaf4d1f 0b7201ab-092c-47ae-9097-74a01dbeda52 de73bca9-d2be-47c6-ae04-e45f92f76353 0c141573-4235-4e80-af73-00fccb743c69 f010c6f4-f589-490c-a9ea-d4acfd7419c3 1f88f9f2-1b64-4926-bc28-9b5f2741e4c4 d8f027b8-d4fb-460e-9171-ddb2983dea61 cc371d57-e5bd-4ed5-aedd-e441e5021964 66e39c8d-716c-4f22-86f9-98a3cf1185f5 6e233964-de64-42de-bc71-ca33bef7a14a 273dff7e-4d8e-4bf3-be6e-7a1a1f646828 7febc69d-72ca-49cb-90f3-46263c438696 95ee9188-1b94-4226-bbae-f81096dabc1d 0565c6f2-b70d-4946-90ae-276c6393e826 69a7ddd3-8c1a-4211-bfd4-ceed0dbe971f 9be11fbd-07a6-40df-83ca-84bc999ac90e bddeb63c-5e4b-4df3-b033-c6943982488b 914b9807-be71-43af-8d9c-46b841c726c5 18b16c7d-fc99-4301-9fe7-40f0f55d573f e03d4c58-9fe0-4f55-afe8-8c32d46372cb e36ee22f-be1e-421f-87bf-4376da47a093 0002f764-fa2d-4cc4-bb6c-f79a5065451b 749772b1-fa3d-4f43-8ef7-2f1f5ec2f236 4a7beaf6-1783-4642-b193-30e7ffaccfe7 b1a75955-a064-4907-b1f6-045ce3f3eac7 07fb896a-0b81-47c5-b607-00c55a6aa752 ff427b22-30d3-4ce0-a47c-bd59eb898793 f483162f-09cc-43ce-9f9c-4708afa27f8f c687762f-cfd5-47a6-b501-8abe72ecfe85 f4690e45-cd21-4396-9db4-3a3f924e9279 00611a29-84ca-4151-b62c-c9ee1f76eacf 21d00465-0646-4484-ad93-66cb05ac7456 05c66628-d0ad-43e3-9e99-80167cdf0b94 2077be1c-5036-4bd0-a3cc-b40b73773035 3aa3cac9-c845-46cb-8e77-c80aec59ccc9 e8c95285-f7ee-4206-a301-e62a730e5ed5 da4f81b7-e79e-43cc-ae8e-9fa7b3dac43c 906b1da3-ff7a-4546-9dd7-01f095788fd5 44627565-7b7a-4351-b360-bd8ebb86c62d 0e677013-7bc0-450c-bd66-1ab837a378f6 41863440-258f-4ec4-81c8-95dd3b3331c0 67306335-afb1-4400-8cb7-72aa7078cf30 4c679a96-46dd-4ca8-ad19-0ee3283b70bf cd155d07-1216-4cea-b248-808fcf975da5 fecbbced-cfb6-41bd-a74f-f2bc25df5d6f 2b083355-81c5-4d76-9a71-3ab37d95f1a5 7b2d9e73-d7ed-4356-8b48-2e1fe6441b18 b6410ace-26f3-4102-98bd-ad61a7143edc 5aa61897-707a-4a5d-bfc9-9342466e82e2 19bf9e8e-9a67-4aa2-b877-0609b7fa18af 7616a620-f38e-45d8-b403-ea657fd5bb1e 4898d778-9357-4a99-a84f-5541ca4344f5 6b8bfe77-b5e5-4683-8179-fc16fb10317c 9fab2fd2-8889-4dbb-92ca-3d4648e308e3 18e8d042-c55a-4263-809e-596a68479de7 6324fa69-1d26-4b5c-b501-fc709c6dcb6c 886c1cef-f9e8-43d4-84b4-63042ab223dc 02f02265-d3ab-475a-9502-6979aee87b98 4eeefd77-4530-4e51-b8f9-b2e4928de174 3485801c-35b6-4be4-8466-6c6ddceefe70 fdc78a9d-645c-48a5-8099-ec9af71c92f4 86988c3f-1f0f-4090-90fb-f5f57eb1f8f0 ce1dbce1-2fcb-4155-b8e1-e3b0546e3f45 8aee3179-d520-46e8-9f72-1b351a9864a7 b7392ba5-8308-4d14-bcc2-9bed14dd1218 e4ffff5f-3afb-4ba1-bbf5-00a4a2f2023e c8aedc05-aa5a-4d46-a4fe-6b17540efd9e b7c8cbca-7115-4c29-8953-3ba14057a301 8253da6f-204a-4ded-ba0c-d19b29f4f357 d24fda26-44fe-4b5c-a6d1-d963c0543601 1ca61240-af93-4b76-8fa5-77bc06dbba26 bd275220-3637-439d-9931-f675cfb167e1 dedc8fd6-443a-43ca-b864-3e784cfe3a09 b34ecb85-a896-4b9f-998d-160d786b3137 fa1a0ad0-e3aa-4644-80d9-096296d4a311 3a9ef542-aa4c-4b06-b1ba-611eb2047b06 15cb65c5-bde3-472e-8e8e-f72ec76c0085 4f16a77e-d6f6-444a-9426-867b83bd9d0c 2c81ce93-6d8d-48f3-aa0b-c49675c68b59 92cb29b3-20b0-4a42-b441-7b80e9b2f78f 5b2a3b98-57f3-4790-87d0-037e3a32de09 5d0f1297-e905-4e0d-8d84-ab021b2c27ac 4e7a82f5-407c-4ca8-9a4d-c3e682df459c 306a25bd-59aa-4c86-ac12-f0408965d655 683d9b69-823d-4fbf-9b81-6a76ec27cfa5 2c513c79-bafd-49d5-ad5e-0ca0d525272c 1c39b8b7-4f26-4858-8dbd-6590b21db496 4a161fef-d0ae-4d8a-a279-51a911414934 6ea819c9-0629-41d7-bc72-380175d3583a e9bdb43e-d706-489d-bec8-5e570b640b41 256636e2-1355-4a05-9304-673254549d08 d1267530-300c-40f3-8765-1df30bd0f8e7 7f0ae5c1-7203-4503-bccf-1b3a1ae26ad6 bf4bf6f3-35cc-4615-9afd-26dc3a40fbe6 3c6396fd-bc3b-457b-bac7-d60bb3ca639f edb8dc04-c2bf-4e78-bf57-14d2780e00dd 1a061cb5-2080-459c-9f17-2c2f83e7cf44 34c510e6-cf16-4316-9aca-4dbab0f0246e 0dfbb028-1b6a-4328-9292-df37a1a03808 bd7b10d7-795d-4796-b6ca-7945812c04e6 abd2b2c6-58ec-4dbd-bab5-75a5cafbef1a 0624d838-6930-4de9-a15b-cede67d2f141 9ef02c13-2c5c-4d1e-b188-c1e08238e750 29323456-2772-4718-b496-4609df8526b3 995f887a-cacf-4451-8974-88890205eb70 a19356cd-30b9-48f4-b13a-b9864c4042bc 0c0162c2-ed90-40c9-91a9-b7a5e7b6bd38 65759447-0d69-4503-a2bf-c398771a8187 00d472d5-c8de-4138-9a43-0332041b8402 cdee4c0b-9e7e-4f0b-9353-086b8c2418ad d2b880fa-6355-4025-94cb-e70a8577b375 d500769e-c32f-4e63-8ac0-3f64b02f9cdf 2a4df3de-1b04-48f3-a7de-0e0d4b0fcf1d 087ad240-f142-49c9-ac19-b15433c2b1d2 ba53e4a0-3e76-4370-b714-cedf42d5c123 cd478c2c-bdf0-43ed-9932-f8fecf97eb38 2ddbbf70-9f25-45d1-8b13-89039bc0eb24 830256cc-b363-4a82-851a-a36a50fc5fe2 6b3a3b6c-49ad-4c3c-8786-00bfad2c22b3 9df66359-0af7-42da-a8d6-e1ce50d31294 61f023ac-9668-4e76-891f-605d384c47a6 34981b7c-f582-4213-80b5-3e4e06aebfaf d2f28b91-04d8-422f-9249-9a97575a4656 abed322d-903a-48e6-81c2-c495dd35f4d6 18883bc8-8136-4c66-bf6a-3eedf8e6e8f2 afb5cc65-c877-449f-b012-5cffd7eec567 e4fe1ebf-51c6-4f2e-80d6-87aa308df7f4 9e21de17-ab65-4975-8a57-add64132671d 73271e1c-f738-455f-bc12-9a17d676faa6 b2ebbfa6-9614-4cae-8b7a-f44e645e2c3f 6d02741c-2557-44ee-8ab9-6e4954bc16ae 37e1339b-4827-4650-891b-1bb16e2b2709 74636f7c-065d-41a9-bb04-24e84d5786ea b1c2d158-5643-4b59-a418-149cfced1e9e dca19df0-4e91-46b3-a52c-7acffe4d2994 612e6d48-3353-446d-b158-a1f0001c847f 2b37bd46-fff5-426c-8745-912dbaffd766 3e6e526c-87df-449d-bc29-5b70207de900 9e5aaf59-9b79-488d-b3c6-a9effd25c98f da154567-027a-43ed-b9a9-b75a01757986 8730d181-2992-4948-bf88-68a9617afd66 e67dc001-704e-4989-81d1-d42b30bb5577 679121e6-df1d-4ad8-a8bc-2b1ec1be8687 39593203-16d2-406c-89f5-1de8dbbfde2c ec6b5544-19e4-46ba-9ab5-b51caf407db0 c17e6ddd-229f-4504-9301-f64487bed62d d6b0a847-9b55-4162-9067-d130c2de706a a121a1f7-93b8-42b2-ba53-370f9b3b7097 9cdc17d5-51e9-4ab8-a0a9-71d8acb75c29 964c5015-86c0-433c-b7f8-908f20d48ba0 199bc9b7-c669-45cb-b4e4-724418114f93 080d56c0-e0ac-4c91-95d8-567cbf077be4 3f67f9f8-1def-4405-9e8c-ba9e6503cd55 b57d7ad6-c61a-49dd-883b-a5985b64b49e 89212b1a-52c1-4df2-bedc-b06325af9036 b9014d68-f662-4db8-b86c-dd42e16f5b3e 983e68be-c2f6-42e0-88fe-e54c84369b2a 3eac439b-1d0a-4dda-8b8b-5bc632bff7b4 af223b1f-ce49-490e-a92e-4e2fbdad27fc 2d7e0834-b506-4c8c-98fd-441f0b357bae e3d8d02b-ae93-475c-9df1-a70aed6632e4 906206b6-8e00-4066-83a9-c621551d5bfc ca6ad97f-8adb-47c6-9872-4cf6cc3b3b73 985b0c9e-1149-49a5-a4ac-e5bcef18ec7c 78e7e23e-a78b-4d56-a6fd-ad32ca4bc174 4715b042-c97b-4151-a261-9e311f64b5f8 8524023c-d5fe-415e-a6d1-26ddb82faac2 6c4f8654-87a2-4f66-8b9a-f2172ac18a65 217096c6-48b2-427b-b9a0-36c9c62bf2a0 5cd01038-211f-488f-b121-94de0d0f0568 72913d57-9c27-4367-8e58-24e45da4ed46 a2e2e6e0-20a4-4069-af78-b55d9b104246 0877a4e1-d678-4e6e-b63f-479e0bf36108 57b2857e-f911-4593-abf2-22c3419541fc d77f090b-eaa8-461e-a9aa-fe8ca0211d0a 88a84186-5202-43c6-81fa-1970dd16b691 a8cc456e-97fc-4279-a7bc-72431476316d 3bb523ac-c130-4f65-8a8d-bdbf3d88eb2e cb20cb28-1c38-42a8-a999-36c0c1c0e46e 10b7f765-ad36-47eb-89cd-7cfc3b091031 9bd3026e-c598-4d35-865a-3567a5db99a0 416de5c1-267a-423a-8061-b064cb5b98ae dccb87e6-ede3-4b50-9ea9-40ccf3530491 522acaea-e6fe-4778-9ba8-e826055f7e4f 8f56ddf4-faa3-4c82-a721-858bd1e4288e f1042131-f27f-4cdd-95c1-d4504e6d2ea2 2ac65e32-a167-4f5a-ae70-a757d73d9e57 b90316d5-299e-4d57-8551-b7b90db3fc75 7ed9fec7-a952-4871-af32-9ef9edd750e2 9430cbf3-c011-41fb-bf19-b923bed61b78 8b8d72e3-0330-49fa-bfb9-d8e1a5926ce5 7d7fbb9c-b5df-472b-8905-5c1dc994f963 e28c6982-d968-403c-a6ea-c972b51f957b 38502bcc-1fae-4d37-9926-9e8357686820 58b7eb6e-a00c-41ee-b683-2a091e6530c5 5d529f5e-95d1-4905-8b28-b61be115e109 10d770af-1dab-47c2-9e8f-7e4f1352df21 2a702c21-413b-4ffd-98f9-00de2369c86a 6808d9aa-a4c9-4fba-9848-6719f8dabeea e5960c51-3b27-4fbe-844b-47836f3438e6 392520e3-4685-48b7-a8a5-6c00c47527d8 911a63e3-9282-45fa-bfbf-60c43426897b 35b61d69-ebcd-4e1f-9cd2-13e4c656cd02 90090859-4a64-45cb-bb41-eb1258c8cc42 5229a7cd-dd45-4da9-8f61-9dafca302818 adf6b663-eaf4-435d-bc8d-453970d18387 efe92130-3de7-408e-9224-34f2999b0f9d 3a76b485-29dc-43b8-afd1-fc7f77407f33 5cf60b47-1905-4bd6-9fc0-e29278095e89 312a4edd-8e31-4197-89d5-149858cdf29e 482f2a21-004f-4b6c-8e1c-a46451b76316 72f4b64b-aa11-467d-9d6f-cdb46a915a95 758e4de7-e858-4a0d-9ead-fe3447f383ed b4e2d317-eb32-482d-9651-c5872f222df9 0e08859a-f7bd-47a0-bcc2-6a290ce719d2 09e9b5d1-6dd3-4bc9-88a9-eceb8f079e4b 5f2fc12b-9e3e-49bd-9c2a-282c65b12fa1 19b50fee-6947-424c-9fb8-29b90ad4874f 838ca9b6-7e93-4367-adf9-83c70c854b9a 40094439-61e9-4f10-a3b4-62f671424d94 e362b6fd-76a3-4671-9c5c-def2fe0c8a81 48ff99e4-08b9-4d8d-9c3b-e09dcceb1567 a13ad0ea-1807-4591-a724-479bc51f0779 8f22548a-4fd0-4cf9-8d23-c9eb21f13bd8 dbdc6e7d-78c6-430c-abd2-f5f859412982 a9b7a0e7-afcc-43fe-9fc4-86debda48174 e0c06c6a-604a-4cd1-aee7-c5c880561ecf b104719d-8e50-411d-8d6a-2199efa33133 db7df8b7-378b-4e3e-b895-a68739970e24 fb14f407-7f36-42c2-bc63-53a54ef4f1a7 7d017992-be2b-4286-a3a6-c47647a81fdb d3c9f8f5-cb46-4c6d-8859-74b8658020e7 badc1dc7-e320-4d5b-93ef-c745582672a2 18174f98-c731-4763-8990-4ca871c82fd1 2463fbaa-cb8e-4d0d-bcb4-a294c0c54128 6af72798-2999-46f8-8693-f123fe574681 b77dc1c4-2d9b-4b9f-9423-53bf58d6f736 cccf2f6f-d1fe-475c-9b80-fed7a056e112 197157aa-6471-4ab4-b480-4a41742a5ff1 23eb3d8d-14bb-4d15-b87d-61b1c9b36e9c 61b3a110-bce2-4867-af17-336f10155437 8996e184-f7a6-4f3a-bb0b-9de0f415d357 f78f284e-1b1c-46c1-944d-ff489cca1a21 e12a1a39-0a17-4473-98da-5b278125ef51 ecc985ca-0385-45a7-95b5-0d7501ab51c9 861df2df-469d-4593-9de3-27b7c137a39d c1a9fa9b-6d4e-4014-8db5-b008fd5a907c b59d33b0-5ba6-4777-a536-f9a582e70805 53a9f1b9-b194-4331-b4b3-beddd28cc510 eba7872b-d9d0-4617-b805-c574587899d5 e05f01c4-d44d-4491-9580-21a3189f4ad2 800f766f-fb1a-403f-b1b7-8ef31a78c7ce e819c541-c036-4b95-94d4-d063593eaf2d 3563c8fe-31eb-46c0-bbf7-6d83f45c3d27 7471d1bd-9398-420f-a44a-47c6bc7c0b7f ed6a7c2e-763f-45fd-bd32-2f420145703b 4fc6eb8a-abf2-4a19-a3e8-35c9578df915 b67e1d25-79f4-42db-84b8-325989609790 be9222ce-5be6-4d97-8034-1a2292f586bf dacfdcac-2a09-412a-bd05-d49dbf7c2fcb 64e3a12a-9a71-42b5-8f3d-ab8cf1e59089 6a20962f-065d-4eed-8052-3eaf5d720187 58fadeaa-ce17-41ad-affc-8301a9ba9ea7 3d4cb02f-834f-454c-8608-c48575854e70 c6ee5c4c-b6c9-46f0-905a-4751b3b760dd fc91052d-dc26-44c7-8c45-7a67006ca4d1 b01826bb-17fc-4305-b33b-085b234c8e18 d9edba38-9d68-4828-a3b2-918a4562794b ee63542e-4a69-4392-99c4-2a75b766a0ff 4b0df569-476e-4de6-ba51-bfe8a594e18c bd3c78d4-01db-47bf-b781-73fd4f17dce2 ca14fe61-4245-4e4e-a19e-e4bb70551dc9 5c9d181b-5b20-4048-947a-299dc62782ce 30e2d18f-a9a9-4ffa-9365-2afb4adb314a 23b1c557-6fa8-49c0-b5ab-5f75dd21455e 69057bdc-7994-43b5-89ee-7b4a83bada3f 508af4f2-cb25-4df6-bf94-e6ce63ef17da dd9e3b72-3556-40ff-8551-a3651f10f8ac 0a89cb56-bb18-4680-9f90-4f894f401252 ce2930e2-5384-453c-a9c5-47250ee808da 421a2c6f-c317-4e27-8757-8b52dc63956f 5e3f122c-6ef5-4a59-bd8f-f719b73977c3 83d1cfde-9aed-42f7-aa63-4f74ca9f10b8 a9f8c63d-db3b-41d2-9657-43d2ca8db34c 7b5b169f-5aaf-4568-a0ad-d0c52bac1d24 34caea87-97d6-4cc5-a1ba-516db82cc3ed 0767bdd3-6d67-450e-8cde-f66207f2f19e 9ca51799-9472-4991-9bfd-33d9042df50c c307d990-f507-4d15-91a3-6316825c096c 3232d99e-371b-4795-9bc3-dd99ed33453e 373e1080-8e93-4056-99bb-625eb02cad70 c754c903-6c06-410b-a044-41c67173f919 7769faf4-23c3-451b-896c-a296f536f26a 202935b9-8669-42be-aa9a-54ed78430afc 7ede4c7e-b291-4cfc-87fd-49c01c2a6377 ec8baa8d-be5a-415d-bec7-eb45df593e6d 9169815b-057b-4b81-a04a-8451d2096c45 cdc1d292-c5d4-4b6e-917e-1c1771b9a9cf a53cb6bd-6a50-461a-814d-f48ccecb3232 54f51d00-a063-4b91-b081-a5e803b32f03 3b18b046-f4a0-4535-b496-43ea9c7cd0b2 f6092e5e-e328-42d8-81d2-0c2c26714371 3b66e0e2-7d57-4090-b230-854c924009cc f0be2f55-41de-46f6-9812-f2bfe9e2d8ad cc1cc58f-fde4-4d41-b857-a48fc0972429 3e2419bf-30f8-4f51-9c1b-b4341ad622dd 3359c011-6732-4987-9932-28b9d6d0257c 44cefc6c-b7d2-4c3c-9723-b8f0491b533f 454b360b-ddc1-42b1-bae8-24da20e8f2d1 2af37afa-029c-43c7-9c49-8aacafe8eb39 58052c9e-c321-429d-896a-6d0ec06125b9 107e7fd6-33e6-4987-9fb9-6add6c11de29 94f71596-b406-4c18-8e09-1bdfd25b88b6 9153bd08-df68-4f77-8313-180884511a9b 995ffdcb-7cd8-4294-9e44-3ec7cd1a548f c2916e19-c1c5-41ee-b37a-9356220fa68a ee3e590b-3fd0-486e-9891-6e8d90d05a88 28aceae4-cde5-4a2e-b1b8-dd9635c36457 8357efd5-4a77-4aae-b494-ae350a7f2444 d4116547-4927-4c7f-9472-9d4c1617d66d 58502889-0c75-42cc-ae27-c9cb06a0b7e1 f5f2c576-43ff-4bce-81f2-723e4ef40637 ddd440e9-28d6-47df-84e3-eb5dc5c64587 9ccae3d4-4655-44c2-aac7-df63996a6b66 320326e0-3ead-4c78-b046-f65bd87c3826 0492e438-2b15-469e-ada6-ef9394ba59aa 5462c9b6-26c1-4ded-9a40-7a76ef5e4f4a a407c791-f2a3-46b2-a93e-eefee0b6d83b 34dfb3c0-4f00-4106-bc8a-a75eaffcb22d c46e2df3-433c-4e03-a771-75e469671e9b 76097cdf-2180-4be6-930a-9c73ad2d93c3 b9e1b750-914d-4bb6-9d94-4fad3a24a396 54af14df-affa-4aae-b979-c934eb6309ac 6b11982e-ac86-44e2-8170-092c632cb2de 3c490ac2-2a0d-459e-93d8-e08099c91fb3 a7b5eeb0-c2a6-4151-b489-50d2891dac2e 1e4221ef-890d-45db-9206-2f6fe71b9362 c92c9932-d3fb-417f-94be-787b5b061d22 65f41691-d529-4f18-af80-31c805354e53 815f1f52-aff4-45da-b0f8-fc06165fd3dc 0175a0b7-9d4d-4a35-ab60-b937122a4690 c81cf1b5-c69d-4abd-a234-dd1f1b9a6cff c643ed9f-9519-4416-8572-c1d9f8b16e72 bed7a8a5-c092-4ace-918f-b00655bafa6d 0da3a5b8-3228-43e5-9fd4-9448a2eb9623 94c03aef-5ed9-4ece-b700-0979bf5fc9d3 f0feae63-71ee-4c0e-9086-f7434d6c8d6a 03f51b3f-208f-4e62-9390-05e1aa2abf2f 3817cc18-41cb-407a-b5ec-3f5f5d75cf68 7cc70a35-378f-40de-8d1f-e32cc0c349a9 f7b69230-781e-4dd5-ae4b-609fdf9c3173 d0c16f99-19ac-4d73-8d70-068898d8dc4a 2173a66b-fc47-436c-bb67-1cfdb73a746f dd6f35ef-800f-4d68-8fd2-7a45b419b75f 0577c9f7-45c1-4d58-ba4a-d60d740e0e15 6405f534-de41-4743-94ed-2045f87ffd1f 1f99f721-6755-430a-97e7-5bbd869f9b1a 80769edd-c825-4e83-9ff7-f5d4b7509ca2 bb0009b9-b992-4e82-8b02-15f6a5138c85 c848f744-2c88-43ba-8aba-c874fe3a72b9 8f24e040-d2ad-49de-9e3a-2750e7603160 ff58310f-f621-4134-9739-fd9ee0f7b3fc e639bfb2-bb31-41b3-af6c-66fc5efa8312 1eafe9b8-defb-445b-a9fa-901cee1e7d14 02f30994-e79e-4c95-91be-1596cd221414 b1175d40-ff89-499c-a7db-47e5699f6a7e 7472c70c-951b-4a38-98f3-11e118811c59 e3b61757-d87b-45b6-9db2-42772379b728 fac2f1a1-9495-4228-b5c1-ade17c4326fe 28472228-c0f1-46f9-99a0-bfc92d6a2e2d 7ba1aa22-cfc2-410c-97a5-a634a6f98cab 4331b66f-0f7a-4020-bf28-e3d8fca7b19e a8f5e0ef-f6c3-402e-bb87-6b86e5c8f556 6c82f3dc-d071-4cd6-94ea-b95b54c4ce4f ef6b33a9-4202-45d8-83e5-1aa760785dc8 0d0355f8-1721-4dbf-b7a9-fe241302b931 99d28a62-db95-4029-b169-d569cbf160c7 9b426bfa-3bf6-4299-a466-24742bb82f26 fd2753b0-2211-4147-bc22-c293d7dd04a3 5acef168-3066-4771-a323-02fc4771e903 0d757556-0169-4205-be19-058a84ed6eaf dcb5dfb4-4f27-43f3-980a-bb9ccae46667 53712dd5-a157-4742-874c-c035aa62884e ca4a09a1-ff52-4312-abad-a91d8bb76785 d962b8bf-6572-4488-9f6f-0a2024031960 c18d8394-89aa-4567-ab26-b64a69aef132 3f717136-84ae-4b0f-ac45-6b9be0e4d962 af3ba741-1b04-4822-a375-f3f75195b486 6d52d322-1cf7-4c7b-9943-fab3da488d1c 5314cec1-dd1f-4314-89ce-a06a82493ac0 6564b087-cc67-4a1e-9f7e-0c98595bba28 edd8175e-b803-4f7e-9535-ac851353c0b5 320492be-67fd-431c-82fa-c8b1b49c4ef1 e84f4055-52d7-422c-b76d-02771049ccc7 5a78a141-13a6-463e-b3b1-42eb65b245ce 081efccd-db5a-4d76-9480-91ce64b4cfb9 5c134808-fa68-4c19-849e-e47cbfa17666 e47da1a4-9047-45be-a628-8586fd43670a 6fe55e0b-05af-4ba4-9418-7f266e724027 f1ecc763-5cd0-437a-b58f-788f96b99f83 c6d3f779-2c47-410d-990f-e07f245890c2 00c810c5-ad7a-4271-a766-33699a33d49b 9e14b637-ae71-42a6-b153-898d2dc26aa5 0688c492-4b01-4b3b-8948-07044ac37063 9aab7a46-6058-4792-b10a-e385b61c045c 67c8bd22-bb06-4c7f-8b07-ece45a1a00b4 f0d91f26-ed5f-41ed-9731-4361260ed61a e06d6889-3b76-477e-8fac-bdfcecee5bd6 31e435ab-f8d9-42ff-aee0-fd9e1cb93e88 2c2ba177-fec5-426e-8aa9-45e0100e305d 0b110fbe-0601-4e2a-ad91-66334ef1a7a8 90b9f6e8-72e0-4e50-8061-5eef05f0dc2f 4814e988-5246-444c-88f8-97ab81197dfd 49c85058-423d-4560-9129-06a4ff1cb11c 21807cad-5f2f-4c59-a788-e6044c0d6aba d70209f5-5b78-4e06-ae67-a0dd61307466 0e0c67d0-5fd9-44eb-aa2e-d736105a34f0 4ce94da1-2846-4795-8223-b9dfbd8ddd5f b4dc9b71-1dbb-4d1d-a9bd-2eff15caf37d 8ca89c6f-4500-4dbb-91dd-3ee7f929bcde 1c8546a4-9c58-4768-a159-45a1649c8181 3db9c90d-7e3c-4f1c-8653-2cbba13a0f8d d1b153ba-ae43-4c49-85e1-3ac0dd0c9bc2 301252a5-3063-4f12-98ba-eed4851b6446 5b355f7d-9152-43b0-a1b8-b386343b0ea5 ad3151e1-c698-4c7f-83da-3a1c45370758 ee1c7c31-11eb-44fb-b95d-9e4abfd672e9 1cebee9d-3c96-47cd-92e8-9b792c0ed6ae c9de8e86-c47e-425e-8782-b0b0d02b43df 62b984e4-64bf-4dc0-89a7-ac4c5b51ec99 4b3661bf-de0f-4b4c-ab79-1ccaf9d8892e 6e3aa89f-923c-48f4-9fee-c9e7bf8e4922 e90a321c-730d-4b96-85bc-16fa61c14be6 ee9c0782-75a3-474a-8a0a-6752a5f5b5bf 093be07b-897f-401d-8d44-64788dbe5b60 48288c22-db8c-4944-b1d3-9e2b8c059358 5f28d591-09ea-456b-9d4e-41cbc1e4c106 22d79e35-7fb5-4b4a-ae89-aeca98649438 c5895b0d-3474-4606-bfda-af8a182dfbde fa1fdf0e-cd2f-42c9-b08f-f0fc7c280d69 aca9d3b1-64c0-4e11-85f5-41f5f7dc57d5 6c43ce02-4458-45a3-bd10-a3ff4c6ecafa 98db9d14-7f6f-42be-aebd-b17e691c1cdb b8f59639-b4b1-4b7f-bf94-88f2599a4bc4 df3c98ff-acd8-43cd-97d2-2db48c781b91 a6ed4a61-0b9f-4e6e-8905-1374a8eda890 1f5ae9bf-2b5d-49cc-84bb-2356fb9ae252 d167d29a-2f07-4e56-beab-f294ac24ca0b ee8b5d44-aad8-4f79-8bb6-cbd67e194eef 067d738b-a592-4b4d-bdc3-02dbc1c367af 3b05e764-28a0-49fc-a0ee-3632a8859108 3313dfc1-f6bc-4220-a387-231f1b2b4efd 11092ad7-9ff1-4fe3-83a8-81c996a44181 c70d869c-7743-4a84-a6a5-e731c66f34ca 03e424ba-1df8-4059-b3cf-e5683fbcd026 c1a0f56a-dd5b-4eea-a8ec-1f93307c5193 23d9f20b-5f52-4e10-ac3a-5c09b8567fe6 e5f9ae41-f84c-4c2a-b22a-9056bd3c70b0 587a8b7c-8349-49a7-9042-aed905948fe4 8274a172-2f3d-4f4e-a9b8-438341f54cf5 312df978-0031-4608-b84e-188c1ff1fb59 09730de0-1010-487e-9d6f-72124f920dee 87065016-a65d-43d2-a7b9-3b6546d57365 eca9cbbe-ed03-4265-8db2-cb35de3271a2 7bca06ad-0681-4dd3-9b75-66155cd24147 bb1e066b-a462-479a-8a44-c0a0fa4d002b 4273e414-ad30-46ed-b198-df6b3d53c7cd 5374d2cc-dd72-40df-be8a-67a3a39591fd b02ded34-509c-47f9-b08f-1a47c667ff68 e78b117d-3ffb-4b9f-9429-b9e82ad20153 6368c28e-774a-4f26-9bb1-404425d678e8 86df7175-8300-4291-856e-b2116904101d 93314e2d-e353-404e-ae8a-94830da4e2e5 6d25de7e-5066-4889-aead-a260a9364766 e9b31f8a-1d43-45e7-9fa0-5d4eb15c7256 7aa1ea93-dfec-4f29-8937-98893c82d2e3 23c94a06-35d7-4dda-ac62-9169c3dd1d42 7fcf7a99-56ea-4e16-94f7-95ac12c02b8e 69c56f35-0f08-4823-8f58-00ec63f08d62 3b15f41a-e6e2-40e8-911b-a7d09825f82c 69ca0ac4-3ead-4085-9298-18604fbf5a8e 9a9688f8-1b93-46f1-8859-cf9b1c2381b6 ac8cea4b-7e74-45f2-ba45-a5e6cf862d11 78d2fc20-2da6-4bf1-bcff-e0a2d713b311 da19cb03-eef2-4614-953a-3e3daa1ff0b8 8b6b0bf0-e052-48e6-a0f9-4635431c3d45 b57ce2fc-e756-4416-ba78-d73054b482c1 e65be4ce-9e69-465a-833d-aebf2ff04ad8 4605495e-e07d-427c-82a0-eee6a0e6c549 564956da-a2db-4b6b-b166-0aac7c4d23fd 84858438-88b8-4cde-8477-23bbb4730152 e6eb5d32-980b-47b1-96a2-ec258f040cf2 d2165aff-f2d3-418d-ba0e-780f6921b7f7 1109c51f-e447-4fe6-9153-808763464d59 fc5fd7ec-aa52-432f-b076-9141521038a3 b4a74f2a-25c3-4851-982f-b5be153b4af0 f2bd8fa1-2d21-474f-bb65-465c9ba95ff3 503944a8-898e-499d-92dc-77952bf8089e c8fe7dfa-6746-43e0-8f8d-0a8b536fff9e 32d9e484-833d-44d7-9179-1dec07e49dbe 08a506a5-1b75-4252-a8ca-1eb7b2cbe15f 5f301a3a-429c-4f20-b66c-65b86321103f 0547050f-b622-41f6-84e6-e794c3303467 27fc7368-d8a1-49cc-98eb-9cff32c08778 e19dc1cf-33de-4554-8eaa-3f3c329707f6 65a5fdad-e80b-4d41-b1de-db1ad2cb7374 a1fb6e0e-2282-47cd-90ec-4ac91616330b de19bf54-9648-40a4-ac97-d4785b87b3a3 0317a91b-b5f7-4bfc-87b9-6fadfecf3049 f94281a3-72c8-439b-ac88-ae5238af1878 e86e5f41-606c-4e74-a5a2-a32a83941438 4521a2f8-0415-4e0e-9ca4-75157ee1a7e8 8a10d144-b83d-4a62-bb11-8ea5a43f85fb 79cb6086-20a4-4434-b97c-289115ac51a6 8da156c9-4a5a-4709-8a63-ef20d16e4e73 a2d981e6-995e-4500-b4f2-fb10ec6919b3 84f43860-1a09-4563-8138-40a61cea8009 cd4e3171-6e73-4c17-b27d-e946dd5e6a70 9f7c8d76-d58a-4fba-9517-d0d9bc654632 f627cc36-a5b7-4ba7-9607-0b141ef58249 259105cd-0fc7-437a-9257-4fbd95d5c6f9 9b789879-953f-47f0-8981-b9d3ad155219 d97b06e0-a374-4d04-867f-171fe827817b 6db07e00-aa09-452d-a20e-14923c527947 50c91f7e-1050-4655-ab2d-dd96cee83425 c45c5ec5-60c4-4785-96dd-1f199858728f 77e181a1-9a73-4d6a-ac74-5f2b116052ab 42db346d-3370-4562-b92c-c14f7f3df327 fb6cb299-7e7e-48e0-8c3b-bcebb40fbe88 45d2b89a-276f-424e-984a-411ab3368024 1e6fa5bf-95cd-4905-b762-e48573c04f08 f4194efc-8a55-4ee8-8cb0-4abc990c5e61 94dfad12-1bef-40a0-9da0-b7ba15e1aebc de2c41e7-31f7-47d2-9ff8-1b585d2e74bb 4dc19017-4094-4765-af8e-709efd80e3ac f6a35f39-03af-4ac3-926d-859333b50964 e32e9069-2b5c-442a-b9e8-04d8dcaf1222 fc9e68f3-18d0-4de7-a004-6f8f3d9ab53d 3d865b0f-4e77-4ba6-a1cb-a30494fd0402 633537e3-81bf-4ab4-9b08-f148f7906fa3 55bbcac6-b696-41d4-84d7-1edf7de8354c 4a0f078c-1f97-4657-b34c-7cc28c829068 fb04e3b4-7167-47fb-9125-097c2681fd1a 4b90d40f-75c3-4369-906c-9dd6df414b81 b2043c11-705a-4334-94e5-29f692a454e4 6b3e7934-7d6d-4f15-907f-ffab8c009611 6f4d8fbc-4785-43c8-844d-bb4d67b53a09 ba9712df-d020-412a-b0c9-8afbd9384c76 d1cff1db-f765-4700-b34e-bdbf8cf08e7f 2f5bb011-c08d-4c45-b800-f3388101cd1c ce82f46f-9c81-4de6-a4bf-a8baa8299511 0378cdf6-6e7d-420c-8ab9-7ba225f73f9a 27ddfe80-4893-41df-a815-b08ef909bc4f 8b556e40-86ee-47ee-8af9-cc920bc76d78 5e97bb0b-057b-45c0-83e8-e74dec92c44a 62f6326e-6e9c-46af-8588-b8207156f41d 01008c77-094b-4278-9b1c-7db8bdd34afd 466a5466-e084-46c5-b95a-e0deeccb9129 5abb0257-899a-4100-b714-9c306a2a983c f93cce97-ea16-415d-b7c6-a77bcd981fb3 526f9f21-3ddd-4501-952f-cab10429ad17 a6ec3448-2579-4b63-ba21-9ed9f231b44b 72b788d8-e565-4cd5-85b1-2d70e26d05bf 8c256a34-9960-4c16-a8ea-879a2a560f14 743c6263-2398-454e-8d7c-e5488a1bb619 5a3a5ea9-37dd-4314-a5e5-c614e628d015 943f74d3-f283-47b4-a090-180c28dbdcc5 c651be4f-950b-4049-a524-005ff07f154e 130507a8-5f85-4b2c-95ce-72cb0286b843 c66c1e45-f6a5-4503-af5a-e958cc47a11a 2058f294-1d15-44a3-8d79-d71263413be4 ad8ad631-7e4c-4394-81d3-093f50745736 6e2b96b0-b9c4-4565-a681-64b41b7d4f66 0f5a9afd-1a70-4252-b1f4-0a3594d1cc41 7ce9bc2b-1df7-4a3b-9072-6cee98be2138 7a2db27e-302e-4379-a79b-5c222669a538 29422f13-a16a-41c6-b686-5b6d53be6447 9fffb99d-c8e6-476d-8081-ccfb642cb786 b0db1aba-2d4c-46c5-9400-7de5f3707c01 14ed2791-666d-4df7-988f-681b992b157c 3a931de6-2b95-425a-942a-b7c53f95c8bf e4ab63c9-f52d-44aa-85d1-8b5e267eb5f0 851a544f-d341-4502-9a71-aba3b58346f7 20dd8df1-cdb6-4e7d-b8b1-c4738fa7d77d 855a62ac-802e-4995-b3bf-9ebf9f8f055f 4bf21a29-eced-494d-a4e5-ab1e1cdeb582 45eb0535-7b69-4c24-b0b5-f7ae741deb5a 4deff312-8cf3-4d98-9e40-21ca9c6d6ca7 78687719-30a1-442c-8e5f-00a0242c6342 47e3ffdc-d658-4e13-b4ed-d3b7c3058209 ad0dd6c4-d046-404a-a790-45db52099d1d a80e12d2-432e-4dd4-8e49-9c599eb22f4d ab271d9f-e892-48b8-93be-fbdcad702782 d5ac2bb4-0835-403c-b26b-0de5b1f1cc7f 818de3a5-79e8-4393-9482-e4939834b278 aa7f5e6c-727c-4d6b-92e4-95af49a0caae 2929c640-8e0b-4617-9ceb-16e1e440410c e9807493-ac3d-4e23-b5d5-6b8e05cda68f 9d7524e1-e1b8-468b-9a81-921b29a87937 b66956b2-7923-4470-9ed5-1b2d70bec8ef 1c804515-996e-4989-b151-eb61d3cb129e d4949bf6-8a7c-4ab4-8d85-d99f203b5de9 9ec4a7af-bfa2-4cd3-ba04-34998afe6bff 81dd1d74-4a31-4d85-9155-71721975c407 73f6c6d4-90b7-4b89-997c-4d8f4d09a705 9446d779-130d-4c28-bf85-402d30e3eb7e 4dbd7cc0-9d3b-48e0-9df0-c19abbf014fb 35cd42c3-8d80-4553-a7ee-6ed3f9ae2ce4 c5441fdf-dff3-4f4d-a307-f4e66c5745e7 ee915581-ad8c-4e1e-a504-21fe9bae3763 c21677b3-470d-4888-a378-e135ff7df111 0974253d-783d-4c8c-8c92-00e3cd08fc95 e893b482-048e-40c6-a398-b7915f5cbb86 16368796-92da-4fdd-ad33-385cd8cec538 d4029ee9-be73-44d9-9e60-dbf49a59e29d d2ba7b47-ae5e-4edc-8a20-e03669198c1f cf729821-340e-4fe5-ad88-000530c891ed 68697145-7d9b-4f40-a9fe-57b27f914d6b cab455df-bc74-4d51-bd0f-356d209a6b8a 7e9475cc-a0c1-4aa0-bd99-119f75f513e8 8a5ff5c3-3038-4dd5-876f-7339e48843c6 25dbed73-dd85-4f3c-8ce6-dddcd63df7fe ea2a42bb-a00d-4ffd-bd5e-cb7ba69eeadb d551bcbc-a338-4ebd-b55b-8a543f25a2b1 1dee7d57-ce45-433e-872c-9484fb710242 06d21def-130c-472b-a9dc-a2ab662a689a 75dcee43-1f65-49c1-ba86-d29824e90676 7b8c2e0a-e1f9-447d-b93b-138a4f9331d7 434f9acd-ac99-4cd3-bd08-5c8b84c686de 1d568494-8793-4221-9395-34194bf233cb 8667c71f-a98a-4a6e-ac74-d36bb1bd374d 6e2c618a-ef49-4d56-85fc-56608dd6789a abc0059e-106d-494a-8224-624ca722581a ca42ab7e-d8b7-4e2e-ad6b-bbaca9dba9ec 60aec811-28a0-4dc4-8406-424b487cd353 4c49cfd7-ce3d-4eb6-9a1b-bd27c7a5f309 e409b5ca-6cf8-4327-ad13-21c85905aaeb cf2ae795-df7b-484c-9f69-e7bae0b89200 09fc78fd-d9eb-4c8e-a6bc-ec8a3bbc3c6a f2f19bf3-1402-497a-a8d1-7f8eddc83a15 8e7fcc20-76d1-4497-a4a8-bb82e246b393 117943de-3281-4566-b448-8cb935efb501 8ce460f9-a58e-47f3-a1d2-f1feceeb5e1e b2128d92-89ea-452b-b6d8-8493cd23e47f 66eba21d-1d02-4c2d-9b6b-984b42e182c1 e152b5ea-2e6e-4683-8649-5eb20c7d1db7 fa3a0ebc-079c-4370-a214-ba00e7f29742 c2d16ff2-893d-495b-bfb4-78b3426446c6 1827cb8c-8cdb-4e3a-92be-5c9ebb0bb202 45eaa118-de17-4f4b-86de-6dd950253861 969fab93-3608-4dd1-9f13-2e9016ea2810 4330409b-ad85-49f3-867a-ee7412ec0405 941f4433-3018-4cc8-9070-1bb960cab596 2dbf7737-d812-4c94-991f-752883904827 7aeb7795-f42e-48c4-a9bc-f3c36b16a558 98394cce-de2a-42d1-a217-f8a108e42608 66d84ccd-ba52-47f0-b132-ed83025172ea cea24c83-d7a0-4540-9d3f-d3ddb20b6336 8aff05dc-a96b-4d17-b0d4-1cffab277975 c2e1fbb8-79a5-48e1-99e3-3f71ecb8b514 4f3cc074-1c8a-4330-a3b8-36ebd4f20a91 a6e7119b-217e-4b58-b859-c03ec6cd8dc1 b6f4a4e4-5222-4130-8173-5528f6442fcd 4a2a2e71-c986-4e86-bbab-a7ee90a579f9 fe0d4103-b366-41bd-b0af-aeb5a17d2fc2 bf3e7b8e-dfe8-4f55-ba30-a7ebba3ca7e0 1ae33969-bc83-4667-9a45-44c43aeb5ad6 33f6fb43-95a9-4121-a512-e45f2bf81a30 2fe84aa9-d469-4a2f-a03e-7c953b1930bf b4451605-7d68-45b3-96c0-44b1a245e192 4f65f530-3cba-42c3-b396-54e76471d04b 496cf346-229a-4d85-929d-ee5850ab3a8e 55bddfc0-7cc8-4bd6-9526-6ee173a9dee9 35c5b0c0-5b70-4608-8856-83d4e6a4c82e 9933ba0f-3d9d-4574-829c-d8146d2ed959 75c2f649-89a3-48b5-86ae-8e665bd4b744 24f53bbf-755d-4f7d-ad7a-794b6ff3c963 fc89c393-8803-48fc-9915-7ecf0f9809e8 c43aef64-9ea2-41f5-9f3f-2d0e7874183e f091176d-b37a-4dde-b358-82df27b60db0 dacfb8e3-3509-4274-9925-79a26f3c6355 63e75801-6f66-4fdf-9c5b-658baee8d2be a94d7094-6381-4199-967b-c446d10e5958 4e6c924c-922f-4006-b74e-32451512b669 4f7da6a9-ebf3-41c4-bc98-27783002263b e8957f88-bd70-4687-89a7-f7b0eca85783 260887ba-767f-4120-be5c-46c8095b03d5 ce385f66-774d-40a7-98ac-b48e5a70b5d0 4796670b-3e29-4c15-bf85-387403c6ac6f e2ae6c8c-8005-41ea-bef8-45bab084772c 488333f5-61a8-449c-b5f6-6e1fd368057e 53ea817e-5e2d-4ccc-b4ef-3990cebfa05e 5d999085-215f-4d23-a395-78bf2555c1f8 3f32b5c0-ae25-4ff3-a382-668aa8e97d84 3e0d9200-bef4-4942-834f-7efb65699755 47116ec3-e05d-47bf-ad4d-8ea031381449 c5813bd6-006c-4581-a89d-2864da8bef4a b3e05787-b01f-4c66-8b2b-15e473a92751 532db8a1-67d7-4175-b69f-26b4faf4d554 e67ae997-1e6b-4aa1-a00d-d3aa9ffd5795 d43d0295-ab2f-4e7a-a30b-c5127bb9b9db 833dc00d-4489-4a62-b387-c7ba3c40af74 dd57ea6c-2736-4264-ba6e-5f7d135f707e 2eb8b3f0-7bd4-490d-8da1-76b8a8ef900f 7d449e18-3be4-4ca6-ac04-e367646d5baa 234f4fad-8c36-4857-8d6d-e2298e7a47f5 1eedae62-d7f1-4c05-ac02-add54233a818 364565ad-fa04-47f2-ba63-0141110819b4 14f088ea-0c4f-4393-b44c-1df046dad841 abfc6bcd-4b30-4774-8292-08787559d64f 15b25f35-9ece-4922-8fce-8f1208d692eb fc32efe4-4fab-41c2-88f1-0a66cc43f02b 3c4563ff-7eb8-4978-90c3-150d76ac6983 b7b0cc24-c109-413d-8f52-02e8d73d59d4 17165500-c522-4951-8d9a-a6006f6e4ce7 07f92986-32bf-4159-9126-ecbd0f9ea09a d4a51ee8-2a1d-4ff3-98c0-a2b571c936af 02087f41-bf9d-49cf-b1f5-5a8ea89e3f6d db8ce00d-f0f9-40eb-96e9-c99a54dac6aa 27ff953e-50d8-4073-afef-94b2ba038f32 679b9921-49e3-45bd-894e-135faa793820 c3293712-a177-4399-a0a5-a7f710ce8e9e fc50ae58-3006-437c-96e3-165613fcd026 6ec61199-86ae-4b5b-85be-13837352e5ec a93e001a-4bd9-4d36-af4e-be5095eb5f4f c2de83da-c1c4-4e5e-9d76-926f492cfd6a b72b27d2-4ba0-4bb4-8c2c-fcf2c6dd04c0 01351381-9fe4-4ccd-b39e-08c2b47096f1 503b5024-222d-4b11-a2ad-0dbc85089352 931f8d28-bc8f-4b7f-86bd-d4e5e4c62d49 2795a9f6-e9a3-4843-87fa-79c8ab22daff 0ff61e8f-8edd-47aa-8772-1c8de108aea7 2bb5c2fe-9d3b-4906-b2aa-eae7c9d8042e d8edad24-800f-41a5-887b-c4021ec36b58 70e6ec36-0e6c-48cd-8f1e-36233b9f09b4 de813758-62e5-4a9d-919a-da3381cefde5 d4718ffe-bdfd-4fe9-8c4a-82e0fa401ca8 21d29997-d841-4873-836b-4d2c7a740011 b7873e36-cf57-4da9-95e6-dc1def92c8b7 a69fb858-cdf3-471b-807d-ff608a036f1b 0f91c3e9-331b-46c8-b86d-c1de0846c39f ec40b095-9c1c-44e5-aab1-6718cd9fc876 dbd415b8-ed70-4370-9d39-f15242a5b645 08d2b923-24d5-4226-995b-d65d4feae87d 7a98669a-c77b-4f43-b30e-6b07aa34b663 51f4459e-7321-4493-9b9c-8fe1cbbf2c15 fb0f2eac-a166-4360-88a7-1f5fd82ef265 8b98c338-3c85-46df-a9ed-c110c1a680da c9849ddd-a7a1-4a4b-b4e0-1f09c9ddb308 c997c5d4-4f2c-462d-b9b8-259a32647142 4acb5e98-ff74-4f70-bd5b-f19d8c95aba0 c495cee0-5983-4bd3-b8fc-6acfac754343 ee16703b-8da9-4d1c-adda-76353cad8e07 5872dcc1-6d1f-4092-aaaa-f2bfce358ee2 9dd62c26-c99e-4c69-8346-3cce395fe304 22fd8e2c-aab4-4416-b246-c6ddba2e625c 900a3342-7ac2-4d12-a8e5-6e2b5a290b4e 9e9a349b-187c-4d9f-b035-7413e8ef8f30 24f0074a-ac65-4670-9a4f-5997f5bf28d2 ef783ab8-b74a-488f-a5cd-1bf071148e2d ad254fb4-2bff-4bf2-a33e-2e4759f4047a 4e371a69-a358-4306-a87d-76c64785af74 c53854ed-455c-4003-b746-196680c9b89d 3f1356b7-0cef-4109-9f97-82fde5d20dba d556e778-1591-498f-b836-7e8359a6a387 e8c1f54a-a263-4e36-b91f-14b2280cf060 a45c0e45-507d-4467-84af-98674b1a46b6 3d33edc2-e9db-449d-b8f7-bd5f180617fa 89db461c-4ae1-4d13-b59a-a603f9e25e7c f3b57d38-512e-474a-b47d-02a98a6b16c6 f5971488-0712-4c39-a519-ad52276ab296 98a68d6e-0add-42d2-a3ba-13e99bd466ae e8697e78-f03d-49d6-935e-486103d9474b a49bd47c-53a7-48cc-8aa3-525509942c7b 343b9709-c9e2-4704-bdc4-281b2e2452c7 70ab5d7a-cd2a-43fd-9288-ab398f0fcaf9 47098280-c018-4882-b7e4-a0bbda3881b7 b332f01a-0b27-40bf-a124-98651ed2d7f3 7dd62d8c-8afa-4dcb-9bcf-cb4aaff2599c 0ed34bf4-4e5d-49ad-9d93-2c77cb64f5a4 b3c9aaec-e955-4f4f-8803-cdef9471370a 3d44dbb7-0343-4d47-a04f-eec1fa8dfc31 b3a64770-da20-4bb7-9089-f97b71ee1a1c 66e0561b-18a4-463c-8a36-f06dc98df3f8 240750cb-5c0e-4416-a159-2e21e0bb89ce 90e1cde0-bd37-451c-bb1c-42be5c470b16 faa5c5ca-9a65-4e73-ab6d-5c9c9f4ed8f3 46a19570-a25a-4328-ac47-b9368edcae74 dfff6b66-dc69-4094-acea-4999d2e64fea 656ba236-2322-407b-869a-cb5ca50642fe b076e84d-5681-4c99-a3ac-22c9d16f0915 cd740877-f5d4-412a-abf1-a5b7752e3d11 3b0ed34d-84bd-4fa4-821d-cd903452339a 85a5c785-c539-47c7-9bee-fd5d1ffc40f9 336db668-fdc6-4c4d-baa0-6fe05b76771a 8d7ccf8e-bc0c-4ee8-8523-288194334e22 85a1b24f-e760-4718-88db-5d9f6a5113ca 6c307486-376a-40d8-9b64-6f98c603ea08 40d9c327-2a51-4030-bb8a-f3fb1c07f8d6 8ea75522-ac4f-4c41-855a-c0b6361dea5e ad40b0cc-ec30-4e8f-99e1-527edae45f42 6df24992-5ccf-4128-a908-32137f2aff95 602da089-7965-467c-b8a2-5e9df42ef95b 9f4100bb-8d15-4477-9c21-24823cff244d 24dce15b-65d7-42f9-9176-57d7b39760e0 3b5cedb8-94c5-4e1a-a508-b503465ed091 c72bcb15-f3ff-45a7-84ea-98adc8eb56bc c34cf1ba-beef-4587-961e-7a1c113edfc3 e749316f-5b56-4ef6-90fc-757ee60f995e 3bd17fe9-24f6-4aa4-b0d6-af4a9320525d 6c26bf4e-c170-401f-bccb-6d79fdafe615 52ae9e1d-d611-4108-a037-7dac40acb431 d0bed3a4-6231-41b1-869b-8fa639036813 e4f4809a-40ec-4b79-b8f0-dc1c42a77cc7 332b8283-9bcc-45b6-b633-bcc4e8617547 e889b4a2-f2bf-4034-a462-7969e675b258 62e620d5-3aef-47a0-ac82-5e1dc657eb63 8b4e2126-50bc-455c-a75b-27d458b72949 9984c030-7303-421b-af38-f8ac35f2412f 6a189d99-e136-44a7-a67c-e63fc3c459fd 04d8c58f-a019-4e0d-98bb-8b08cf9e4ea2 86560f49-2c3d-4506-8d15-3340c5446231 f0392aed-e3ef-41c7-a8ec-00d5146ad90d ff86c4d6-7e3b-47ba-828c-ead3ec833d65 f9ab4df1-b8a6-40f6-bb29-0a00695ab3db 45ec1d1a-5964-4fb5-a5b7-8d88566cc152 56cb3762-0f13-436b-99da-f074645e8320 873b13f5-676c-48f3-9eab-c3529dfb5b92 1ac500b0-3bee-4eaa-b802-ac119a2cbede 83faedf8-e326-4467-93da-ab4b01fe49e4 ffaea347-bf2f-454a-be84-d130aabb8173 4aaa9572-2458-4541-be7a-77ebbe4ef47b 26ca5056-80fc-455c-8b8b-4a569c2021d7 da502aa6-de12-4577-9fa3-f87b0136d4cc 96d4fd3d-3042-46e8-bf63-626eecc828e9 b811f0e5-718a-42ca-b0b6-01c776ade5bc 738b76f1-f234-4df4-a164-8db2e1cfc117 e900a2b1-5d8f-4539-80ed-14453389c820 d390fbd2-c893-4062-97a1-af55ff5cab1f acab9ff3-cbef-4671-8167-36cbb25f3924 cd1b9e84-094e-42db-8864-4d000ef500fc 14510e69-4ec8-4716-9960-e6a979a88214 e9534163-00eb-41e8-8bc1-d82e5136cc42 a767951a-6982-45a2-93c7-3ea7307b1358 041485f2-dfef-4698-bb31-18877a73b4e8 d3beffdb-bf1f-48a7-a7c9-7a9695277f34 5a86003a-6259-4b6a-b310-f14f2b5d2c6c 61c12fbc-5da6-49b6-96b7-2b2587b87df5 d61b2a45-8c91-43f0-8b6f-869a353e7130 7f7e1c67-9911-41dc-b230-12ea95a55b67 b9cb9b09-23d3-48ef-bfca-948553a006ca e297edca-90fe-4d2e-b861-06f20f5e94f9 e1dc5c98-7d6e-47d3-b077-f87c37290335 9794f843-0cd2-4b30-bd66-e519c30df10a 474c0c7e-ddc0-41e8-b329-04c2491f6922 bc7f3f27-a1da-4415-9938-22a12504baea 984a5850-2ae0-46b8-9827-b109774e442a 358a1c8e-8c3b-4940-a3c1-dd9721c9234b 37313dcf-f9d8-4504-86a4-c50b64d55def 27963fb8-d123-4e2d-a5c6-fa8ece7b9dfa 9c722e9f-3046-4917-8fbf-a3ba48ea1f17 7baa0481-bebd-42a1-a4d3-8ad9c9983d00 c888d379-58b3-47d5-9cee-15670eda59f2 59c472e4-4191-408c-9e79-8388331c202c 66fbca79-ab3a-4130-bdde-ca874317e9bf 6735dd78-e31f-44db-a381-1e8669bfb47e 1be9906d-9b71-4d7a-9eee-c9412f1712ae 43fd9abf-60da-4387-926e-aee638062dbc 885ed3df-4ab0-4d74-85c6-74d828ed5240 b9516774-036b-4a25-87e1-d945946bdc89 d6bac3ac-baf4-403c-9a66-db632bab83f6 e6f853c9-0753-4e0d-80e2-316e33f9918c d0d19063-0219-4fd2-af90-db862b22601f 2c58f0f9-6b23-42e8-aea0-e20a1f4ffcc9 37ddd112-7c4b-4911-a067-581b18fdf2da dec53665-881a-458b-a1fd-4eca5547c704 c523b3c8-2b6e-430b-9aa6-4eec68b13f32 78fb2c73-df25-4fa7-8c77-70ee5e6381f9 3158abc7-1f57-47c6-9263-d2d7e97f97b4 5d17b915-4829-4af0-bb9a-e1d9fc9ebe30 60e509d1-b74e-45ea-81d5-e5ce2af07384 c38df7db-6222-48df-a929-05964037c44e 6ad721f6-70c9-45ce-ab52-ada95de26c17 355fe7d7-0058-4b66-a134-25797479bd2e a24ceb94-942e-418a-85aa-ee60024b2664 d6c7e98c-8fe2-4310-b194-776d2de94b70 0b6b9d3a-d294-4bc4-9fa9-838eae323cb6 89572b9a-4114-43e6-9e9a-6628dc59c303 95ba8d88-de5b-43b5-9638-149d85e09c6d 4567db69-8065-493b-8b96-26c7f7ddd18f 0a43fcd7-abea-48eb-a0df-717a421fee7f a9da5df7-adef-4072-bf41-e125de0eba06 95b7cf1f-75c7-4de5-8c7a-88f7d1800c51 57c24d5b-7a6a-4568-8eee-c13855d89f51 9efe1bff-e75c-416e-958e-3aa5b0b8cd4d 1977e855-1de8-4ee2-ae2c-c1dcda351dc1 2274ce76-6b41-4d6a-a2a7-ca1fdf6b6de0 03d17a6c-f258-4dce-8bcb-bb094cf1b952 3c84f909-7b44-424c-97be-aba7b03d1f25 dc9c81ef-f434-465a-81b3-ae89524fcd55 fb331ce5-fcf8-4e6f-a141-aeb19971c0f2 48c94433-8643-4cda-ab84-11daf0d09d44 f1898e6a-4d31-43b0-bc52-317af4bab1d5 cb1a1253-47d6-4338-9d4e-4c71361b6a67 b48d3a8f-aaab-4f23-8d11-2884d13fdc64 7447e0f5-fbb4-4685-ab61-86b71f86ff77 b6a011c3-1a87-4d7b-bd0c-d5c08b06f5a3 b34715be-a970-4537-bdd2-092271944dab 64f2a0f4-5ac3-4905-b435-94bbd6829298 1146c8ef-b80a-4c17-9868-eccaa7f1c95b ec2b1131-0e12-4c8e-bb7a-3fd61edf7af8 8544a46e-18b1-4edf-9dca-cd5f3678f65b d364341e-5d18-41f2-9fad-f92dbfdd6c31 7e5c07b8-fc69-4386-b076-e775c1c22ee9 cc7745e2-0508-413b-9b63-bae372b49f8e 48547536-e8aa-415d-82d8-3d02b86fa981 e7364b04-b18e-40f4-b43b-0b376f7c5d51 bbf9c006-72f6-4b17-bd2d-7b61d9f0cdf5 5176b14c-85b4-4318-990c-d79e0538e54f b27c62e3-bb8c-42df-bb09-71674eb05d45 c5ae9de6-5386-45db-b89e-6d0736683e70 2c463e18-5798-453e-ab6e-2225a7de9b1a a4be5e06-83f1-4c2a-b6e5-02e397194850 1321f842-61a5-47b4-b578-274a7c3eb128 4f5ec840-39e6-47b8-811b-b00f3114d5a8 f0c76828-dcbe-47ab-af46-8ba04450a48e d5ebf13a-2cc0-44ba-914f-555651cb7be9 72ab7260-d00f-4fde-b318-1355c30acfe4 a66eca96-900a-4614-9a5e-b79e923ccc52 27609e40-7f85-49bf-a450-fe7959388944 9a63e85d-14e0-451c-9198-19a1c301024b 7fe53c99-3ab3-43ad-b9d5-f7aed048e9f0 67f4df95-27ae-4f40-b150-9025963676f6 bf9afe9b-ffcc-47e7-9af0-4c889603a42f 08122709-3b07-464b-bf0a-1128c235bbcc 18dd34a7-628a-4358-84ff-fc7cdb3f252f 9c8453db-94ac-4377-8d9c-c1cbf81bb247 79ddffec-fc75-491a-a051-9b832d519165 ef188e7e-656c-4877-acd1-5f300a9ae806 ede11d1b-5561-4ab2-8e44-4662cc319459 d4cc7917-3d4a-4ec1-a051-65fbef4d4f35 70ecf03a-7dc2-49b4-a31f-f297a411d0b5 6bab9061-b8e4-4b87-b467-7f76bf61671c 4b97041a-8f10-4923-ac25-91f7916f4421 f53ad909-68e6-4be5-8d7f-3ce9635a3f98 a709f39d-9a44-41a2-8bf8-6eac6712652c 140d9416-f9b4-43ef-84f9-6587e47f3789 4451ee35-a473-4450-9af4-42e910d4cf0d 48f233ea-20ff-41c4-9f59-cab0964b4393 b3ff47bf-4a5c-4f17-afba-f4a588f41e78 8011ba8b-6e7e-45bd-aef9-b09fb3dd2a79 81d57a79-4b83-4814-b8fa-297dce5136cd a062432c-c51a-4ab0-a55b-cebfc532dfab fed3a0a8-374d-4780-b48e-1c396cb8fa48 612dfffc-8f0b-4384-ae15-fa2b0c8005b4 fb64c4ad-ffd1-46a6-b91f-cadc257aaa02 d0b3fd7b-40a0-414b-807e-c45ecf6dc1b3 c6d78c50-98b8-4f8a-85d4-e7c67e7077a0 018d7abc-8d5f-4427-bd28-6b1ea6e82fed acbe8516-f756-4ff2-92c7-1da735814515 ee1977d0-2ed9-4bae-ac09-e3897e80024b 3d1348a1-60ea-4e21-84be-1f34ad5d0cc3 6e1f68aa-0c51-4119-a8ce-1e6f961b63d0 3e55a4d4-deeb-4473-be99-fcfa82277e1e ae78bf44-68ed-4f4b-ab5c-a8f9c1124727 750d175d-efdb-4126-92d0-de8899d77cf8 d1724647-6afd-4a02-a1ba-395bffaa30c6 20cae8b2-9fb8-485e-9804-d5a11ba95095 4731536f-fb0a-4488-b0c6-717166f3ed83 9fd96019-87f7-43ee-969a-e2b3c79aaefc 4d22d796-1f14-416e-8c75-91bc79041a5f 2eea5ec9-12ba-4857-a497-12b385278218 a346fb7d-9c2d-42a4-8b8f-a21f1bd0913a f6880feb-213a-4360-b305-3a90a7c68721 39ff8be8-e2cb-4536-a4f8-369ce16413eb 6224e190-e260-4f71-8902-8d6f1447eae2 43a5f4df-011a-48a6-9307-2666a8240218 5f5bbd11-352c-45f1-94a1-f7620015f318 d61aa5f9-75b7-4b81-9b72-021ed909470a 5651dce5-dffb-4d7c-85c7-5dc449ebdd0a ecb20c24-03ee-4de2-b299-e64608d4451d 808861f5-c337-40b3-9dd8-ed37d3595163 6fb90654-46cf-4a0e-81a2-3b271073c9a4 f04156d1-db53-42f5-a43f-bef30c946d0a e133b8f8-3388-4f46-85e5-87569fccc52b fbe49a6c-65e8-4976-8d9b-884bd711a25b 56f8817d-88ea-4971-8e34-4cf5af6fc438 46b33ba4-ad2b-44c9-9ba9-0a4ee99991a3 d84825bb-c7d4-46ff-82db-5293085292f1 c0ae1b14-9304-4197-849e-27ae7a47b876 78c44dd6-fd0d-4013-aa8d-482e7bdfc4c4 c9e3f85e-b6b2-4e32-a41b-621899061045 ce7b1d37-c792-48d7-9f9a-c59ee4d48c27 88d8766d-0f14-4782-96f9-6bd36964182f 138c2b95-aa27-466a-96d4-629dc251abdd b58003bb-2fb5-45c2-932e-42b64c4c6f68 0fb3347c-e267-4e01-b342-d9a06a10af6a b66b74e3-ff78-4ecc-8a8f-666f3f334fa6 406373d2-789a-406c-8af3-dd55d1016cf6 8ae07ab3-cf1c-4d96-a7fc-5f199622da43 45a64bcd-6131-4ec8-bed4-a6d80bdeaf05 25dceb38-96fc-49aa-893e-9553cc6e32b6 9f1b9a66-8360-4bc3-a6cb-aabd4f29eea2 535c1f89-36f3-4720-bfca-22fec3a77fb3 035628f9-85a0-4328-95cb-339ba292e6f8 91e188eb-fdf4-403a-b602-8cc020fbee25 84b6ef66-0381-4e6b-8794-4c18542449b2 e78b7854-a444-49bd-9bfd-9b19e2da6b00 aac05136-d818-4309-8529-09cc8e8e5e90 da5e790b-6916-4f07-b180-a079e938eae2 ef210d4a-4ac5-4a2c-9ee1-9119c41f9e45 8b214df3-b4f7-4ab9-9386-154688f4fbbf 06c6bc4c-28f6-4785-b079-35df964a7e11 67eec3cc-28c6-4544-bf9a-249199828466 f99bcb65-a076-4bab-99a4-f045f73a666d 5f142ca6-4e8f-4952-8025-fc7d125761a4 2641a564-ce00-49d7-b6ce-5e96d6ffd38a 6edae238-27f8-4c0a-adf4-a567bb8f153e eebb1502-9910-453e-af4c-b285817096d4 86b5ae02-e6a7-4de3-9fad-5d4550dac31a 73893809-9b76-43c4-a5a3-b1f4240231d4 da17fdfd-7269-4289-8b63-65148a57463e c4a23230-e199-4b81-810a-ed0d2fbc40df 61a0e746-49aa-4b66-b354-856c2fab3a73 adabce4d-d746-4500-88dd-80e3a47ef368 d4325802-b7b7-4a78-8425-ca8e3f9eab5b 212bcaef-3c8c-4b08-a250-1e5c96bcf969 24dcf5f2-efc1-4875-9a90-e4541023481a ffa7b0c0-85f2-4707-89ab-d0218593c662 82ef175c-8bbe-46ff-8787-9318cec8fafc 70d1eeed-d839-4065-bc73-99223e31505e bc444ab9-03e5-4f45-b4c5-48d5dec888ab f2b66922-ad9e-43aa-877f-194cd1a92e61 3db9b010-2899-4975-a7bf-b58cf596ada3 c8a7b717-c323-4276-82f7-8a3b460675fc 24052b63-0869-4cc4-bfca-d7daf27221b3 437a880b-6215-4229-9d1c-972696e82b19 afc8911e-8b87-44f1-8b5b-44ea5d6702d5 0c980aea-7665-4c83-beb3-b03f86bacd6d 5de53fd7-56e3-4789-a0a8-0b680cbfcf86 705d4826-a9ea-464d-9439-d7328b534249 1cb61b50-a110-4f89-a563-5b4f726035e8 3ac091bf-e3b4-4a70-9f85-6de7e69e87e4 c57688e5-978d-45ba-9971-8332505d50db ed3f287b-8967-44f3-9c40-f581753afde1 c73548e9-3029-4062-be1d-b4f0f33a95ef 6ee22e1c-8293-4b43-a92f-c0b5fde83217 99141062-7a1f-401f-9f94-49059b96ed84 b0840fb6-36fc-4f30-ba13-4bd9033da247 a1029593-23de-49d5-9fff-ce9136aa0af5 0e17bd45-0111-4717-b653-86e5a0f20282 16e30e21-c1c9-41d4-99e7-9115837d88c6 7da5d3d5-817d-4975-8ef0-4589c0b1cc71 cb03c905-74c1-4391-b316-2dcf3242ba6b d28a4208-eda3-4851-b269-d5bff2f350cc 8e1ebe64-0fe8-486e-943d-2f9314b90508 785b5011-7307-458e-bf3f-fec26158094b f6ab491c-6499-46ff-a46f-db2164f30107 06aea98e-95c0-41a2-8131-e33092b957c9 77bc5f77-f1be-4157-8937-427f1768ca52 19760e88-c612-4acc-9bb2-2c93f158bb61 40338026-7bdd-4e10-b9f3-b77a66ad4a8c 1dc26134-da2e-40e7-836c-0c0cdde76248 00527b3f-1e89-4686-b0fb-8d5f2c0689fc 095e3a8d-cf20-416b-bcc6-f54efd3866f8 a735f034-2ea6-4cd2-887a-4042fa29d1d0 e3099d2f-37f8-4706-be7f-8854ecc78a77 1e6ceda5-a52c-4af9-a098-839e362e24eb f4314ce4-6295-4a0d-b18d-c34d60d83614 f8896728-7936-4d4b-b5e0-6f2460e02a95 7a98dc41-dbcb-4a1e-bcb9-841823b3ec2f 34ac2219-b5df-4471-8ad5-e9b8dad79187 b4970e0e-8283-4394-8acd-e6dfb753bdec d191cf56-a97b-43b2-8867-309f1c8660cc 7661b0c9-80cc-4758-8e10-23503f063ee6 b0a4c2a2-7126-4911-8f92-ab77ddd8e61f 5f799f30-6755-43a7-8cad-cf9070e5477a b3238879-eedb-4f73-800c-d389c7d955a5 778b3590-afb1-450d-944b-efa00188ecd0 bd58095b-5829-4a15-9be1-16814e476de5 57050d21-5f1b-4705-8015-8df397dc10bd 9a617a0d-661c-4014-8930-be6ae6933235 b02df8d5-91e7-41ce-b13e-c177b15b1faa 6a63c9ff-fb35-405c-8710-a856250329db 270c9fbf-fbc2-439e-8cd5-477426f0436e 1081a0dc-27a7-4d1a-960b-d01c8d0b9990 e1b5f961-4875-4c84-bd02-c7504df58ba4 bc756723-69d0-4303-85f2-a68fbbdd5bda a904e457-f175-49ee-9f1c-6b58bd1100b9 d64a1999-64e7-4057-9989-e66431e9d7b1 a0c327aa-6e64-497f-babc-e190c9d3332d bae650fd-f631-47fe-9298-0bf88c89be10 f855e0be-073a-46a5-adfc-c6d3bff74ae7 21d20182-5ecd-4f15-af9e-b8edf9815aaf c6667b70-837b-4e35-9818-6db27d91f5ff 24779e5b-4c06-4135-bb48-692691f59c70 7a774d62-74b2-4cfb-8397-e215e0806d42 3203005d-0e26-4c9b-a967-cde4401347a8 708c968e-79cd-428b-abcb-fadce90c3819 569f654e-70c5-4f6f-9b79-bd3217fa44a1 60305bd5-7d58-4985-b799-33c672cd1045 3f7d2dd6-c532-473b-90d6-92a4c0995aef f45ceb03-9f42-47c2-be49-2414bae750bb 421170ec-d272-4777-9f32-365c5b393932 e4c22789-af0e-4529-9516-c759d000d715 bccbf5f1-a748-4d35-a214-392f7df5e86e efba84a4-77fc-43a7-8321-1994bf87f2f0 bebadc13-2e34-4df1-a47e-f710d3fc91f2 d50aec5f-11d6-4d57-92f2-8948913160dd 8abbc66a-875a-4633-a716-a199c20f2c4f 42bc679d-0009-46ca-96bc-e001313f6b55 98827c66-b3a7-4df9-ad12-2777dea67e84 4113a5f5-2c02-42ed-a79d-cf6c7a3d2f91 3ff81fc7-300c-4f89-ab30-b6fc97673554 171e382f-8001-4ff1-ab55-0cb228d31c3d 28768710-3477-48ac-8d93-1b7af5a1cad8 b0a16431-afa9-4622-8e05-ce35ee858962 fe71a50c-91cc-4059-ab82-ecc9257b73b4 c7720f6e-24b7-438b-86ec-309d8ea8d9cd 7ecc6d01-d3c6-4e3a-9b5f-f21ad11c426e 6cb82bb5-2930-4bef-a04f-bc91e4283ac3 74c272ee-70ee-4417-8e95-150eb21db3b8 bcba63ee-b7f3-4cfa-a546-14d4faee05ea 1f26e9d5-dd19-4383-8c80-38d15637c1cc a082ffe3-eded-4bf9-84e0-d3349b4735b9 15a00002-219b-4bcd-8a40-36930d133524 7304003a-fa9a-4ad5-bb12-2ded8408a24a 93b85c32-2a99-4d9b-9c99-30cc043a85b6 0b49dde7-15c9-4a05-84cf-509f6dff258f 03171be5-d945-47e8-a31c-7450f496fe5c 1c688e8a-cb14-4a9f-ac59-b23d82303f2c c84d985e-d036-4885-bc58-68e67287617b 182a5684-501e-4297-bde2-610330c76fa2 6b03a162-d3e3-4898-ad1b-eebd70d436ad b825c03c-8a8a-47ea-b94e-194f83c19fdf 767b549e-8bf6-4c21-9fcb-8a2c2c1cb6eb b6b2326b-b29d-4b16-b354-433af5cadb93 9d76a82b-147f-4a46-add9-e19d0ce8c0b0 94860725-d2af-4f85-8941-4f0f1f1e9074 e517b849-0ca6-48a2-961b-3adb7e7570fc 56701fbe-bc15-4f7d-9915-b2f2562d0120 48370a7a-3a56-4b31-a563-dd6e00432412 342edb52-b12c-40dd-8ad6-a1f9d356ce39 09370c68-db5e-4974-ace4-5868a81683af 9ed8a129-56c9-4ceb-8311-55be7af2a493 e7fde7e6-045a-446c-86e3-6f0eaaf7c3e3 2c02708c-ff31-40ec-81bb-7afb4bd68cfd 1dec0569-f3c1-40e5-9838-bea8a45efb68 ef5bd53f-572a-43dd-9012-7b0dd4b710cf 36f770d6-41ff-4802-bf42-09ccd2b27b24 9d626df5-57d7-49b5-ba3c-8d5491db2249 821f14a1-bb26-4358-b11b-7d67fed28c74 94d31ed4-60df-4323-a35b-c1d1a596d796 67746860-ef39-4df2-9ed9-201b6c7bc2d8 a0748be6-a864-4bbc-8042-f4675cd281fd 44cd6e1b-be73-4244-a799-bf19bcf1f028 a1d24949-7353-47ca-a63e-4c4f5eba651f 1cde745e-6bcd-47b7-963f-a835df5a40ef e981187f-a087-4baf-8d76-71c7281406ef 8c7b014c-9bca-4590-85cf-8299fe0514aa 2a67e2ac-4349-4c70-b22a-2dc3b61778e4 fc2d1db6-66ed-40b7-9abb-3203d6d722fd 4b3886ef-feb7-450d-b0a8-184889e3fb18 b6f1a651-f3b4-487f-b376-ef492f391987 b5146eb7-1451-4714-a187-250121fb6c9d cb9c7ad1-aa0a-4af6-b5a0-5e04249b6ea2 cb92f949-8da2-46a7-bebf-41f1d5789073 08e1cc47-2247-48d0-bc0e-65984d234c1f daf6dfe3-abae-48a0-a7fe-706c487ecfc4 0c4ea944-411d-4f28-9486-ce7ed983ce33 6eb6475a-70e9-46cb-8607-c2df77f29cfd efa3b22d-ed33-4e38-8726-33d363f0ec14 391ecd2a-a023-4457-b336-3a4dd2c81612 8fbf6f56-7a3f-4777-ab3f-57e4829d91ed 31cbe726-b738-48eb-b5de-4c51a6fdd38e 7a5406ea-acb2-4d65-a52f-f32c1b5a7dc1 439c3f8f-dba8-42a0-b85e-3e2938286d5e 11243b90-564c-4821-8a4d-fbcbdef0e09d 218d561d-3092-4305-a348-d24d276508d4 de60c4f5-0abd-4564-8244-aa7d911f9894 b66b7fcf-cd89-45ec-acc8-39dd479a4e43 77e55054-a55b-4307-b62f-8086305b2485 ce0cc6ba-bde0-492b-bc40-9093eea3b308 a10a6216-06b9-4d10-97a4-ec6655defd48 b1a9dff9-4215-4103-88c0-f2b12934f167 b63e73b7-53bb-4e9d-b135-e5a359b39eba 30743be1-28b2-43d6-b6ed-61559260039f 7511e0c4-b214-4c27-9959-f9d360506d87 b5c97c05-626e-4402-b6a1-05c9e20887eb 8163b0d5-c149-4585-8547-a2eddb505fcb 9951179c-1b8d-4c17-81a0-fb2e2a889c69 7e4bbd23-e23c-40bf-99e7-dae482f20f59 1d8dbe1c-1ce9-4546-af96-16114681bbee ab045550-b46c-4065-a253-2ccc4f7e88ce 00bfdfc2-33a0-4ea9-a5c4-78298e033737 73263479-5c52-43ff-8396-64864e78c0b8 385953a4-baea-41f8-8422-5f3bdb4f0ca2 e748cfee-bd3b-4257-835d-27c6b6a54508 fc849193-e35a-4bc2-8f4d-7985be34d5f8 e33dddd3-698f-4fec-87f9-b32ee1d343f0 6d0a7911-0b87-4f0a-b6ae-07bbba551c07 d2d01469-decc-4566-abe9-64ae6523ac61 6ed9df28-228c-4ecc-a29f-6f968d7b8962 26ccbaae-3fc0-4747-a102-5323219b99ab 30974f9f-25b7-47f6-ba1b-a3b423d57b12 08366625-6a41-4209-9536-d580b814dafb 856ef695-91d8-4ab3-8c38-50771b29d93a a201925f-57e9-43d4-ae02-77bea3ef9493 321016a0-336f-4593-91cf-069076937575 259e99d3-3cfb-4fa7-8b11-b5ba86c2a6c6 a249a3d6-89bb-4afa-ad3a-8d9ef4b7227f 0a16b5fa-45b1-4017-a3ad-5c0f20438aa0 641eaf96-d7d1-4479-8462-1f3be1115438 f9fb36ff-a573-4c82-a351-bc9c4592e894 1d6fc68d-fefc-4f31-9de4-36ce93ca7335 76141e6e-43e0-415a-8cd2-f6d82fbafd75 fc17dcf1-7d49-4613-a18d-40c67497950f cb2660b1-f538-47ab-bf17-d877f102d1b0 d88c1ed3-792f-4197-8d51-079e8cf6d3c6 547aff6d-c9e4-4afe-8895-c28d295015a1 6d83e91e-6585-4408-887e-91a9820a4f60 f0e6a098-8b2d-4d23-9b8a-9afb77b06aee c34dde68-543f-494b-a71e-f353f1ce68da 89bc15db-2d83-4b75-9f2a-a0bd5cbe8bd0 3e7aef19-cd19-4238-8c99-2aaab679ce02 9b5c7474-f4eb-4784-8827-7755b2701da1 b8640361-d05c-43f5-be82-bf0c10553b3e 75ce4efd-d876-49af-a312-a7594399a23c 9309554b-e669-449a-a7fd-5a968a9d8504 fd761a9c-088b-45f0-bd4c-443b431c9b55 4bc720d0-f5f1-4345-b005-5e5b4e05a687 4df3927b-e472-4fca-b9f5-de076b75d428 31effa92-d967-4091-9ead-29dbcfa49b1f 7269bd12-f877-4cb4-8416-ffded598cf77 ca4334b9-b2d5-4c56-acdf-23a7429b5aeb c17c2c77-1f6f-4d15-b26d-518e6b506549 6cfd90fb-4963-4fbc-92ef-1a4cc0c8a2e1 25dc3ef8-018a-4546-9ea4-450da04da576 c1c765f8-f954-428d-a3d7-cf6c1c8dfcd2 96bad651-e157-47f6-b6ab-fe6d07550bde 40a21127-1a29-42e0-89ab-cf0a74a74786 3d2147d3-f9dc-4bb2-975b-2d081044eb98 9a7083e8-1c8b-4452-a453-14f195f23c19 82a6e464-329a-4fc7-9de8-da015f7af4e1 a190681b-2fda-4788-ac3c-16c38ededc1e 1827a97c-ba91-45b2-af01-3b662930ad78 ba89f27d-ecc3-4629-9b8e-063fbafe8a85 512ca9d9-b1df-4d21-9325-10b15bce2ac7 5545266a-caef-4486-9de7-4a37caa9a7b8 c2efee54-d733-4d74-bdd1-26db167f13e6 eb1bda95-42dc-4fd0-a41c-d40a9c2a404c b3b5c415-b985-48bb-b6b1-d0ce5a3291b5 53303faa-27af-448f-b426-89f3bacf724e 3f3b71cf-a451-4a36-8ae7-bee6ac2b1f7a 50c14a6e-1714-4b7c-b3d7-be6afe7eb864 609d1c50-f962-4deb-a437-5f03a12b3a7d f8bac412-c81c-4db3-80b9-a04f28b74142 6fe2e0c5-04ae-4f16-a468-23eaf167e6ab 44dfaf6c-2b9a-4a4f-8119-e0e52788177e 51cc6e00-3767-4376-a435-6224b3bafe20 7bcc0746-1ab3-4e0e-a497-b8c8aaa39450 3544df65-e178-465a-acea-72557a2ef9de 6a8a724b-8516-4256-bb33-5ff390656de2 179ba1b0-b6e0-491d-91a3-243447ed409c 6d207843-79ae-441e-a420-75776abab70a 139b51d3-2c1d-46a4-802c-011f2278551f a9553a9d-df1a-4f7b-b419-1e06fb54e8da d6417aae-8faa-4803-93bc-6348cbb1d8d5 7de88397-8cb3-4bb0-84ae-548e49246659 6e6075a5-af86-4304-b5c9-f3bff8b2f588 b04f3bbe-95ed-4c56-8ddb-753afd7b415b de6157f8-5de6-4567-bdc7-05b9d4c3dd53 3b2263a4-0561-46df-8cfd-aa55f440c9f7 80696523-fb48-4687-9d70-505aa8fc7379 b26142b5-0096-4b4e-8ae0-602c63b36baa 5812d602-5e43-4a41-9a73-05af11e4f126 94c2ed8e-6e5e-432d-a1c2-29252c72b1e6 0c321b68-2920-44ca-a6f6-6a13954d7b36 8f32fac2-6378-4570-bdd4-e9daff95e462 aadc1584-3d8c-4b55-b7b3-34779d9de5ad 2cbde244-3e3c-4cc4-8e50-566d3fb29128 bfe8c4b5-f8b5-4c4b-b328-94a5898ba33e b44039b3-51c5-4435-97ff-182256396474 6ba647b0-754a-4c6e-8fdf-1dfc58681f42 5de46a67-f16c-4396-a667-7c8851fd2a91 06724433-e8a3-442c-b031-358d4d57ce4e 6f252267-8884-4236-b357-6975578c5592 9e9a05a2-0d79-45df-a278-c223e7d9507e bcf1264d-766b-4b91-a60a-c232d6e75896 2388a77a-b115-4dab-8cba-5743316f341a 0b0d40a7-1494-4dae-bc57-bf4fc055339a 50e1d007-66df-495b-83da-ee0276df9269 281279cf-e125-4a7c-9e81-ebfb15b9824d cdbaae74-5b41-41da-b1e0-d21809011776 b300c2de-5385-4f36-b475-b8128c01980d 909f5a58-20ba-4b25-890b-08ec8dc38fe1 783c1297-7455-47d0-ad67-788cd998936f 70dc4c79-daf9-4b16-aefd-511d9607ec4f 0f4e1ad9-b6c1-4149-80e9-9eb684323022 1ed9db13-f208-4a59-b82b-db52b8c84ada 2a7af8dd-0c99-4a90-b853-e623ce195fc1 0c72dfb7-0667-43c1-be18-1c798949215a 32b21e60-a672-4bb3-9e2c-57c2aaf9531a 4a9abfcf-b82f-4bba-acc8-6f646d06a9b0 116d1897-3ed9-443d-be90-e6b7c8a12c7e 30acf525-c7bf-4bca-ad63-65ee02f13f69 3ed6fb98-261d-4ab7-81d1-85b5b4e029e2 9783c5f8-2903-4530-b2a2-86ffc6fe1bb2 46d4a238-4f2e-46b7-a786-315df8ec4101 0257cb0d-32fc-479d-806d-03a80aaf48c6 a3ee620b-1432-4a5f-9475-991328c98181 6b184263-827d-4006-a469-66325e27f9c0 a97b5c6b-b72a-471e-b7bb-e92e4aa50bcf 6c0190ab-2f40-4b9a-bc7b-2bee7f05b452 3346cda8-4666-4996-abb0-1edce1fe8f78 cd7d0060-cf17-4fd7-a287-05d1a004222f cf058e0c-b77d-452b-a4ce-2a7e2161b447 109478d8-faa4-4f14-8dcd-6ee4e8e541a9 d63c6c9f-32a6-49fc-b935-6c662ce4eeb3 b8427f4d-a004-49ea-96ea-567ed7421700 bcbe1a3e-db0e-4f19-a1fe-8ef8b92254f2 3fca0ab0-7b4e-43e4-a158-017888a747f7 18d777e0-fc59-44c7-847f-b8aa8ba7b196 b1038447-f0c2-4119-8633-b1ed1ad2b2cc a5eb4b27-4da2-4ec0-b99f-cef11ce9005f cc5f4532-345e-42c3-bf77-b932aa78fd7c 33d86866-01f4-4872-9e83-4f91a445b6e5 58221334-b3e1-48b0-9db0-77174ca65f73 6ff90662-2638-42f8-acc7-e545e529932b fbb9977e-6612-4e14-9f43-a642b39c2a78 a8da6127-268f-4a8b-8809-9e6877fe2b14 2835424b-4795-485d-ba1d-0dbeab4128ea 28ba3555-0066-4fd4-ba43-29e09552fa26 53feb5cb-94e9-44a2-b1d9-d3bb69303616 d7a7da1d-6f9b-4c0b-8c54-0d462842d584 15b8c737-c8b7-4ffe-bcdc-c6c743ba840b ac1803dc-373d-4bf9-9245-6427fedeb9ae df0c78f8-f9f8-4370-a95f-b480be78a5b3 5095b60a-a543-4bde-9720-f0846bd085d0 de5b03de-919c-42ca-9841-f9a93bd347ea 4b8ca970-11d2-4a9a-bf28-f8397c7a702f 62d9af80-a7d6-44ba-9aa4-a6919d37bdec d0059386-1f39-422a-b33a-2effc99c88a1 82b84f25-b3c3-4d3a-8278-b4a59577186f e64c82e2-a66b-46a3-a2c2-076b3a18803d 39cda146-9e4a-45b7-95d5-70463314d86f 1c5a8f63-3890-4e8f-a09a-4b6a2e9b661e 347ce000-8247-4cd2-92fd-81fc8d2c4acc 5c13033d-f9a4-432c-b3cf-9c3df8ad4878 a938a71f-b35a-489b-b235-09968540be90 6a2dfbe3-2b27-450e-95fc-4827f6215b38 645533d5-fe25-4517-bcdb-90efe37aa2fb 89996e95-4903-4ca4-8238-77d553eac000 a77a2ff6-ca62-4eba-9323-1c44d5d322b2 98473a07-875a-44b5-91f4-4bd998cd9bd5 af5100b3-cc2f-46cc-9a4f-5ea2325f7268 1b95f34a-4cb9-400d-a62e-3a57b97b141e 73d61e2e-df79-4ba1-a8ac-35669c4425f5 07fcd7d2-e111-440c-bcb0-50890276c826 c5d8552a-3853-4852-be3a-26e2668234e4 396b5397-7c4c-4743-91e7-3d2f2452313c 32c4cfb4-5574-42f3-973d-fcd35013b85c 38cae187-3149-4b69-ada3-d94d7c6cefb7 698066a1-93a0-474a-b8a4-a97d6735dfda acf37bf9-f063-46a5-9487-b785b969f7cc d1e2f5d9-6721-4b42-9c18-3ed7b75f5bab 8e6a5d30-8d7b-48aa-af2b-1391d244094b b75287d0-cf54-4894-900a-fadc6b28ca93 1ab58120-91a3-4ab4-a14b-a37af3583ee8 bbe552aa-511d-4f92-af68-7fb762a9e24a b09cdf83-4d87-42b1-8be1-c04cba9f4dff 50d5aeb5-d908-4a8d-ba69-62623d97b503 862d62f9-3801-435b-a83f-beba9a26de44 eac7644f-24b8-419b-b862-2981556e0f96 9865e658-38bd-466d-bd9a-425e7bec1517 4833229d-3d78-43b8-98b8-2eb36fac3fc8 64943c0d-f176-4421-b971-424f0af2dad0 32d0a2ad-a4e8-4ae4-a44c-bef32a4c1838 25af32b7-b561-4eb4-81df-7f1fb2d4038c aedd795e-cb63-4a0d-b946-ac78f9521257 6cfa28fe-8465-4b96-a105-ee2b039b915c 64db252a-60d5-4c74-8105-8aa1d9a60dad ef6f819d-83f9-4160-9c15-3f06b4beaefb 33c782bd-b67b-4449-b04e-dc6fa0c18403 b0adcb93-93a3-476b-b817-52a7723a75b8 6ee0179a-3a85-4728-8fbb-fb915363ddd2 e511dd59-bd1c-46a5-bfcf-b63e9c0bd2eb 1a5e8461-7318-48e9-aeaf-49ba9d8f6eb8 4ab36e16-2c7d-4ca8-92c2-d8d27b7581ad cf44625d-a135-4e21-be36-eb3d983579d3 3f6ce695-63a6-4227-a403-097e213c1f33 807beae7-dab7-4027-a981-5d75211dfa5c 25aa97cf-a9b7-45b7-b0e3-2f7750ee7b48 e671ba30-6ab8-4613-97d9-56158be18d6c 12dc3cda-791e-4dc8-9dfe-39d4f9b4b836 2c3439c5-f9ac-4c97-9df5-2878f927a054 1aa1caa5-5088-4b47-8d15-143f2ae45b09 5bcbb4ff-de2a-4435-a5b3-d1772a876e9b 5f6cbf73-2144-45be-a610-ae1cb4df31b4 6933f218-cfd9-46c4-af64-6e3902f43e36 2c7d644a-7486-44ae-83f7-34869b833ee8 26a7e35d-e1e4-43c2-8fe5-4ce9b1151b6b 755c253b-6cf0-4486-a72a-384c4a6a2588 2d17b5b3-cb3b-46d2-88a7-71325e8434a4 a21ba482-82b4-4087-8c45-1d6c07e87455 f306b066-9ffd-4a4d-bdac-f7c47c3e47fc 608049d5-aef2-41e8-b74d-e75093eb60b0 a0b52be4-c097-4465-9929-dd7278080013 6b58c2fe-f724-4660-a15a-0b64d903ed64 5958666d-9e40-421d-b8b8-54e155d0bac3 6458acc5-0225-4373-a1ac-ce118b79fc37 e5e34194-3829-4929-943f-30d904741b88 4dd909d6-06fb-49c7-b8ec-84e48a1eab6f 140126f9-123a-49cb-9cf3-f3ef107febbe efaf03fe-06cc-4b92-99bf-5327beca492a f428c4c9-6d53-4a31-816d-ff3c6da83585 49893f0c-966c-4611-b889-ba5ec9a15bd3 13aa6932-6a05-414a-8c9a-82bef7bb68a0 2fb9051d-068b-462b-ab50-9686da084486 a681d19e-7b81-4627-812c-4b12144275d0 da7ead5b-1522-4170-8cde-85a6bd557fee aef6b364-0065-4376-81db-1720a92fe115 50238b2b-6c1a-4fdb-8490-9b2a9eec2b25 76f4bb22-5c58-4ca5-a102-be70918ac9f3 c4c7d2e1-3f8b-4a21-98ff-2604a1f1bfbc 3808b594-7d32-4932-b929-f1e7f5037e34 08355d39-e253-4327-81bb-42e9996ed6a8 5cd8b481-6efc-4df7-8e7f-d2725fa14dd6 ef839924-4333-4017-b558-90fc9bd958a7 a77f62c5-5e12-42d8-856b-32d2902edaf3 7e813c6e-f92c-4a6c-85dc-3d8213475771 210beddc-c3bc-4323-a5dd-4464834eef06 68b3bdd7-1c76-425e-afda-b1213edd14e1 f62d66fc-388b-4b01-aa30-1ac2293c146f 3c4a9511-70cd-4487-8282-2002b5adcfc4 f9f49a6f-16de-4e94-9ba5-6403eb72d1e1 c68b1d63-b164-4145-a585-3e7f7bb2d161 3fc0bf65-baa0-42db-bfc0-a89095ea4eb7 b29c45fa-fff0-46e4-b84b-6c5568ad8eb7 280bd820-584f-49c1-99b9-dbdb355c4240 5a49401e-184f-4982-a1e6-39b531fc50f9 681053f6-e563-403b-950d-94fea6c7a53b 36cceead-da80-4daf-a370-09ab40484de8 2de983f2-ca3e-4e1c-a1a9-8a1547ee54a6 8eb9ff6c-cdef-4445-b5cc-e7679840ddf9 04fc6ac4-9af6-4e9d-b63a-31c0dc9f66a1 197b3387-4d78-47eb-b2a8-74a3560e2cd7 42d6daa0-a59e-4324-9646-aaba952e9c70 3e1dea57-d227-4962-965f-7ad29c919fe2 b7de8bcf-9970-4e8f-9919-04b0728c4e16 8e1a8030-2de8-4410-a2d1-bae98d3a2002 e783e0ec-0802-41ac-aeed-e35488e4d0ec fc4e31fd-0932-48d3-b300-ec5506fb3be4 fbf008eb-6f6e-417a-afa9-7c545846892c e19af075-0d2b-47e1-bc2f-f3fa78500085 5e156c6f-89e2-4db7-942b-22ef62c508a3 d47f58af-79bc-4098-8886-8fc891818e11 252b7dcb-f3fa-483a-9c9d-9c58387cc596 59abc579-b94e-4423-b5e6-aa905bb395c2 c8324f85-3c69-4b2b-ae39-7a6e60f94a4e 8b57f311-1c51-4d9f-83b9-ca9959209033 9db521e1-44d1-4a55-b7a3-eba46e4faf13 a47a06fa-dd48-43b6-9a72-e706590d34a9 645f3b02-37aa-487b-b979-4499d53ec98f 567e9b23-eadf-4ea9-a711-64768f2efaf9 5c17d45c-9899-4917-9cfa-8c701c89e619 9e18a14d-d664-460f-8d5c-728406100109 81477e1d-4897-4a1c-a3f7-d77440cedc12 2fa52145-6fc4-40a7-a639-f9f4c5ae103d 508d07e2-1015-45b3-aa40-e7d11bf12d8e ac8da11e-ff15-442e-a36b-24a0d8ed2aa3 558edc84-01a5-40fb-99c8-57059211c74d 4f505a34-cfa3-447b-b844-1e8480102ba0 520e7d65-4fbb-499e-a336-ebc2b29b673f 67f22eb5-8837-4542-acbb-6ad036bfe45f 16aec42a-de08-4f2d-aea8-8d1f09bbfd86 250c2a7c-c151-4f29-9528-2a84042f395c 93b07023-dce6-4d6d-9e0e-fcaf35e66580 232fed6b-de84-4696-839f-4f1017131e9b 9f5cc913-64be-4ee7-81c6-b8536aec8087 1ea8c895-c05f-4db2-9c31-2170af28b447 392c1f4c-dbc8-4472-b46c-0eb87b930aad edd30e9b-c3e7-4eea-9d9b-05b3280ef9b6 343ffdc2-fd07-46af-a5fc-cdf11300b295 a71829c7-e92b-4ec8-85a2-391a52eee771 afa68179-abef-48af-a4c5-51a5d8dac952 fe9dc09d-5e8c-4e9b-adde-09fa085d869b 29e8ce1a-797d-420c-a8a0-8cea8baed2a3 7595c67e-635e-4afa-b29e-de52256e265c 97527f6e-4b50-49dc-8b9f-03fe16bfa404 88f1282a-d824-42ff-b981-25d2ddede193 d0d2663f-fac1-4237-a3fc-30bbdedf1eab 28721e62-558d-4fa9-a4ec-c9f5b423c5bc 5d260a88-ef6f-4374-905c-3e202d9d24f9 4583281a-c795-474d-b76b-5faa2226b561 db82557d-c910-44a3-9dfe-409b5153a39d cde3a116-43e5-4c88-8ef5-99c8d89b528f 347f44da-2b1d-42ea-a96b-f382ea4bec3c 9c295cd6-81aa-4fe8-9614-cc086209e6aa 8128b7a6-022f-4f71-9ade-00687ba43d3f bc550c44-ffec-4be9-91a4-7ffea11b7763 2e38cc14-cce5-4da4-b65b-0700401bbc5a 924b5a42-4567-4431-9987-0d36e1a923bc cc4cc81e-d65b-4051-8765-f403e4d44b35 47768e3d-6f68-4444-8069-1dc35805c1e2 6cadbe29-7c2a-4cea-8921-538c419fc745 cdd8af3f-14fe-4230-8d30-c32e1b5c8f43 7f558acb-9aa0-4556-9009-5a5731db726a 78c81e91-f9d5-4895-b495-c369c13d3a77 99a9e05f-18d2-4141-a1f2-aa3ea9827273 826bbbbe-8a78-4778-a4f1-0bc0c3d43de7 cafb0132-0dbd-45c8-852a-d5c045330359 a0101e28-95b8-4e6e-916b-f6aba1fc0e69 4b0a74b5-d345-4ca1-82c3-76e02562d87b 3ef71243-c906-4c69-bbbf-026d8ede0b44 6cac142d-5efc-4599-b1ce-c6709180e881 c5601a5e-21e8-47d6-ad59-679377abf7b6 ed64dd2d-f119-49cc-b889-aa97f13db333 b2fde865-fcf5-400b-8de2-6c5c47304ce1 918980a5-0958-433a-bd3c-9aba6e802349 9713c7dc-4a1d-41bf-af2f-45b74acc9aa1 1afc0a10-c27a-4316-aecd-68ddce2e7e2a d1d15cd0-131c-481c-95f6-e1be5060334e e1c4fd7f-15db-4a38-937e-05b5c078a842 a5fbcdff-649e-454e-9b4c-cba53aaad4d8 e41730a0-5299-4fe7-ab1c-5bfadac0e94d e75f68f3-49ee-4418-beef-639cf01c6846 16b6f86a-16c2-4e00-95f5-64467b4155be b28378ee-6a97-48ae-a178-efa99fb1194e 479f9f78-5b16-485a-b0a0-b39b6d7f46e1 1716ac72-187f-42d9-be23-11ba156101c9 09e9bea6-b655-4077-8118-ee303ba6c6b6 be13f6d0-3b59-4af4-95b7-7fd796493258 49ac9d92-fdad-4bf8-b8dc-ac1da1c26682 945e2502-0e4f-4318-9291-a1701d90a9dd e38e4d88-a9fa-40dc-83d6-74720c30a234 1d4b3bd7-b271-49b0-8db1-d5c0ad627276 bc887c6a-606c-40e9-b017-22fa80842a3b 93d00b69-c3df-4e78-bc60-9ac0a719997e 1089b210-97ce-47f0-91f7-deabbd34027f c0999936-7385-4803-af07-d15cabf388e6 6e596c45-209e-47a2-bdcb-a766f2a8387b 31b8455e-946a-47e5-b4b7-f0dbb15828cc c70f4686-018f-46d0-bced-70b95f77d668 8459eea2-1508-4ba0-8187-a4d1163dc5d3 6cf21fc8-e35b-4518-a387-c7ae4f93ebd0 e1ff713e-5047-4321-87d9-22ea7b72e599 ebadb916-cb1b-4374-81a1-5db9411b0cca 8a5becd6-a566-4d04-9bc3-125f6cdac724 03cb4476-c5f3-4d65-a6ab-df4d0fdad1e4 04b0f8f2-184b-426f-bd12-47a945896db6 47774136-f552-425a-b7b2-817e0b97e0f0 7b76a28b-bb7a-4d40-a1ee-7203c647113f 23ec00f7-d0f7-4b28-8db8-514f8cebb39c 39eada6e-0a3b-49d1-8c7c-24b6cc80bb96 05de345e-3de7-4567-aee3-2e41651f5db5 eb5f69fa-5b8c-46c0-a716-35e2cd8c3993 f1f4e18c-39df-4e3b-9835-16b805e48eed 541d46f6-0b64-4ff8-a78f-619f390694a7 68dd3e5e-9cc5-4f97-a608-230708d9b328 894af7c6-336e-4429-a0b5-1294dcc5a844 5b2142e0-60d5-4cd2-a1ef-e09e5ea55edb ab4708c0-cbb8-4fe6-a1a0-3015e8b759d8 7983cd23-0bdc-496f-9e7e-edeb12051027 f0b7d51f-6d69-41af-80e3-2428a7958c87 e6cc22f6-2374-48d1-8f6c-40741032e05e 6bedd9b1-825f-4b29-b528-7fac64063cef 0a8bd783-5a7b-4884-9f2e-2884e1ed924e bb01c4bb-89f9-41b0-9bab-3620a63c4c6c f3d4aba4-2ce3-4300-b356-b5e97936fa30 e29e15a4-c2fb-415a-b64b-295b164fd037 879c0b90-f8e8-407c-8f84-0e89eef7a1fc 144581af-994a-49ae-a375-78cd0a1f9a06 59a8b339-cac5-4b45-8c0e-cecaeecc2ca0 1e15d5b1-8bd1-4602-b020-670a99c9c369 744c3163-7106-477d-b01b-62c1b991df3b 801fae42-e986-4eda-8006-1fd4e9969a60 0e9154c9-2824-4ca3-9123-7317204e6cb1 42f289c5-2cae-479d-8534-4062268733bd 2f44d761-e05b-45c5-91fd-562eeff5e1cf 22ff8391-13d4-47b5-8d1c-d1fec55d2938 28799eae-b500-4249-a6c4-405df14fe85a bdcd130a-db58-442e-8f4e-06594a05b3a1 c7667892-9598-4060-ae83-f5929604e81e 75fb94b2-22a0-4a83-b8c1-a1c172e1d198 ad433366-6fa3-472a-9746-338f2404602d bdfb1526-4f2a-4fd0-acf5-2f6a5ec52526 342fcdf7-83ca-4ae7-892e-f62aaa20f2da 03518d5f-1b67-43ed-9066-f9902a99d638 eacbc893-8467-448c-b851-d7117a35910d b784ca86-f635-47c1-ad74-82691a6c2594 b2ed0f07-fb13-46c3-8e37-d24d71ca8150 8913ca24-e8c7-4089-8d1f-1b1ad7d5289a 02044aac-5ea6-4583-994f-c45c970eb7b3 902f9a93-3e3d-49ad-a073-cb6642e3c208 dd6d263a-5a7e-4c23-966e-0759d1453946 7d449630-7a6a-4df0-a42c-ce3853564a77 4362f309-6df4-44b8-9b1f-6686000b405d 66f541a8-1258-4873-ae55-4857072e0810 1f8e6905-9a65-445e-a0cc-c15c12b7f0f1 7f8ba7dd-de0e-43d9-8124-c5753614b03c 2c4a486a-d7a3-468c-9236-1af866b47bf4 e01e9204-8d9a-45a7-8ea3-140e430ddd53 961b7042-d128-4d67-ba57-4946bd141718 fb06d7fc-789b-41b0-b5a2-c99cefaf63ce 46ed2f16-f191-41d0-86d1-bfaa75bccd9d dcfaa184-de98-4cbc-9e14-8a878e5a94da 1e4edc1d-0c52-4bf8-afdf-81a7d62d071b b10b0320-ac9e-4122-961c-637e5325765f 58247c44-85da-4cc2-b558-d07889b2c16d a0ee53a1-3a8e-43eb-9e3e-107334b0f777 a0599984-5cbd-420f-a12a-731f2400cdb5 acf7a81e-5b39-4624-b5d8-36c04497ee90 b9e443cf-eadd-4ca0-8ffc-19491710ac1e e7f59b95-b068-449a-a839-33e2e5f7e111 81abcda4-7f5a-4f9d-8c99-8fe12a726510 5469d44f-4b38-41fa-b193-3a0ab9cbc038 241ccf69-82b2-4b47-8709-d162ef016105 b6d2dc2d-b77b-412b-9091-c52d989f9b28 24c0e093-4edf-458a-bdc8-4a77c3e24491 24f955d9-9968-4099-b817-5478f41ca50b e6215522-6361-4c0c-9c2a-d5b8a6d865fb 1eab63bd-9840-43ba-8296-7dab4c0d129a 0dbb6ff5-042f-475c-9020-f1fcaef84e78 decba52d-1188-4754-8ad5-4d10a45b5443 f4fe5e43-a6c5-41ef-9e86-e3085c1a0e7a f87398d3-2500-4f95-ae6a-d2ce0c59489b d9f1e0ae-8a6d-4bfb-a0d4-7e66bcadb195 ccbffb31-6ea8-432c-9d8b-35ba6841af20 88a7d1a9-dfb2-4dfa-ba94-693ecfef271d 9c07e7bf-e9ea-4ee3-a0d8-3903eaae79a1 118dcda6-9d58-40e2-8047-f0fc3299cd97 edc61c81-bb2d-48d0-a865-92d0cd0015a9 d8f4c4fc-b523-43c4-8df9-2477cece2c9e d88d0743-dc4d-4128-af40-bb73a2eb866c 2f57a375-dbd9-4c18-832c-e205a4d0c168 632b8b26-91ed-44e0-9249-58433eeaf6ed 4daa11a0-56e8-472f-bd9b-d9c892e88cae a81c43ba-7a5b-431e-9e28-3f6a812f1eb8 3bb54cda-94f1-4493-abfd-6ebb0c9f1141 99eecfa0-bea4-446c-9ee7-cafd7a030f4c f863b5a3-571d-42d7-b703-92469f1f5bed ea353301-287d-492a-8084-a2e48f330ed4 a60d62c9-01bf-465a-8d26-f39143d8b955 f4523836-f156-4c25-8e75-d8b5cb5d7cd1 89204bdf-096d-41d0-973c-4fd23e7aa45b 6f79b015-bf8d-4423-9f80-0447fefa71ed 8ac9f761-c1a2-4f88-911f-5975f91c80f5 9ca96d5c-f788-4cb9-aef8-0c4008f450db ff17255f-d4b6-4bb6-b0c9-92926d5d8899 5bcbbe29-83c7-4089-bc03-c780c7742343 596bf0f2-c627-4f37-aeca-b5a9681a4504 30607769-513f-4889-a1da-9969b14ea63f b058cae7-f494-4db3-afeb-f335440357a9 f8613436-754f-4b79-969e-f120e96227fd cc15680b-de7e-45cc-99f1-28c1678a6698 c617717f-1d76-4bb9-9fc2-3a6dd9a84150 500c770d-a7cb-4130-8946-3eba70300733 f520d10d-19e6-4231-be10-e24c6f314f54 257a8b83-8a18-46ba-83a0-12f95ff6d3a7 21218f26-28e0-42f4-8eb3-044034fd9dcd add17a97-ffa0-4157-8b92-ae7873e4aa27 7638ad1f-f60e-4236-9c2c-57856d97b589 e48b1fb2-2241-4e24-84d4-07819e4c4758 2a74385e-5d09-40f3-add2-2d6e60f18bc9 5217969e-e0a0-4a7e-a753-31196fa660fa ca307260-f815-411a-a979-f64255e01ad6 c1be04aa-568a-4dd8-a043-df41afc62242 0f3f08d9-6041-435b-a9e9-a27dbd0890c2 d3de3ac9-5fc2-4981-b1d2-69368c3c180a 37460a76-4303-45d8-b110-c4dae84da8b4 51a900b3-f148-4059-90f4-6d203f5021ed 62ae7501-ab9b-49b4-adc0-dc1456f9e366 91a9c138-2987-45ca-bab5-10b7926358e8 1a24553f-ec80-4eb7-96bc-22215341d26a a53ba5e7-4657-4670-b425-22ecc52f06b0 b30a8776-8137-4340-91bb-42c54c586f62 0219e2c0-265c-4280-849b-5df65660ea0f 9e1ab6b2-4db6-4afb-a4e1-95890f937354 5bdf21af-14d2-4923-a27f-d15da8abc189 e51532e1-78db-4155-aaa5-5357afe7d030 9bf1678a-b9b6-4e42-8e33-c0a5a6767695 4bfb4894-dfc3-4d60-bdec-775025c3ab65 38c6d253-fbde-4eed-a075-be8f45b6eb32 eaece045-cbd7-4566-8ff7-d5ec4fe53865 95952336-7f64-4d5b-9c6c-01f8565676de dc37c639-e961-4cb0-9ac7-051a1b378aea ef6c980f-5a81-461b-9933-8c29abe0ff66 6c855175-eac8-4078-b8c6-a259a4af2885 91fdc32f-8892-4022-8b6d-c2438062c2cb 4bc00ed0-e9ee-4e30-af55-543fcf6cf46e 53c6bc38-e6ae-487a-a4b2-2dbd3d2eaa91 5bad8f5b-8eab-434a-8730-67f39569f469 2c62d6d8-09f6-4efb-b0c2-88808cb1e4af bd0c937a-772f-480c-acc4-197e2421637c bd549bc3-8b48-435f-ac04-81ffadcdbf49 901adb49-4800-4954-a94b-af230a7d5e33 f3d62621-6a26-43ba-a092-2d55f4ae2ad2 7f318316-68c9-4200-a7dd-5b61c3097d40 122b3741-5de6-4ff3-92fd-83e9d65a3585 dc43a5fc-f8d2-455a-ab0d-804a25e82c24 62803798-2650-438d-8d1b-9ed9f18374eb 5423dbf7-ccbe-4afb-8aa5-384e36d4d925 7e553953-5552-4e4b-af23-6f0d43618604 ec953f0c-1e51-4be7-92f4-c0cc3ee69c0c eb767958-e07a-41df-9aab-12ed64c7bcd4 517e025a-520d-4fec-a2d9-6dd1ef91da6b 3ddfc070-8759-4055-a759-7711c0e31ef2 35cbd389-f81f-4149-9145-9cd6173988e0 543f510d-03cb-4e2f-a8d4-b9ae2909321d dfab790c-038a-4679-a8bf-8f74806a8016 96ff9fdb-ffbc-4e29-86ab-6226f27faec7 1dc834c7-3bec-4c5a-ab8d-3f097d70a4ea 3a59ed20-c01a-41d4-9d1c-ca0f9ccfe978 b424453d-cccc-40fe-92b9-6ac6709482cf 61237d3b-8120-46c5-a2a6-9e4878081360 32144071-ba26-4a1c-9a07-0fe26dbf7743 1d42a251-1726-4650-9921-0bdf2170775e 1aac1a78-7116-479d-9bf2-5d2bbfe47488 fa4d125e-ab4c-4bce-9412-cdccecfc4576 70a9c114-98e8-4f7d-86fe-c0e80ed931e9 1b75352e-8e3b-4460-b131-0eccd25cef88 bbb72840-7d2b-48bd-a92a-426c87600c61 1e3a2912-3816-4b72-8ba6-ffcb6490e1f1 e1864c48-4df6-4e8a-a0d6-4c696403fbb8 723ecae7-4491-4e23-a2b6-635dd43608cf 4791ec50-ed47-415c-8a43-bd349a6280c9 c19ce9de-412d-490c-989c-4117a011f985 f7a98673-1f57-4661-841d-04516c94a612 e1cd674f-1e44-477e-8675-a363f0977a9b c31058e8-4261-4865-ac0a-7fbd29b720e3 e44c61b8-67dd-44e5-8cd9-a7edb368e76f 58d74b2f-fd39-480b-a004-63a5aff81c56 d82ec387-7b85-49bb-b107-bd8fa31baf80 287f7e51-69c2-4e6b-af01-dacfb242d2b4 58906210-3f0f-49ba-b235-3e37f9781198 8ce33cc5-c7c3-4071-a911-5cdc4a03f303 bb5fc147-d79f-4917-85cd-fb6bbbd4a9c2 c775c9e5-00bd-4364-85ec-aa055e8154dc e8ff1f59-48e5-4c7f-885e-51ec78c30331 7b00ff5e-9796-42ea-9a5a-bd9b650e8024 9c84d80c-c57b-43aa-b1e2-392b8d43dfed e25ca721-8004-4500-b565-5e2d52276776 bfe2bc2f-8b1f-498f-b5fd-915ac4d0fb42 209226f3-0d5a-4a0a-a0f3-c533425ce33d 950e1e43-6e45-4453-a439-c25a18f753f1 8bfb2d83-5dcd-4522-bf60-1253a3d87b42 b86a0d1c-a6db-4c34-9607-24c7ea2d89ff b62cf5a8-329d-4283-abf6-a6c60541b54b a357d7e6-454b-424f-ab0d-425121abdd6f 180d7895-fb7c-4ac0-bd47-d8d367fd9cbd ffe2a699-57ae-4ffb-8bb4-219ffc091a4b 4cdccbe1-765d-446b-9f34-9650646f83a0 ea1c7708-272f-4d93-b510-35d19222250f 4e31833d-0afd-4214-a357-8cb3ff21e5f1 a2099af1-e303-4e18-8b36-302e66ae5704 3bd218cb-de94-468d-b398-4bc972125340 e20b13cf-d205-4d2a-9946-8ca4caf4941b f2ebb106-0f33-42d9-ae32-40823a013678 2b5fd73a-3f01-4643-b453-bfb7c405d382 fa70770f-62c7-4eb5-a25d-c0b247e4c177 1ea56f00-aefa-47d4-a16c-998d4be802bd 59dbfdc9-acab-4dda-b41d-8f3153d02cf1 251d682c-c320-4267-ba35-787d7e55cbb1 5b1a580e-8ab5-45fa-bbeb-1b65819ed6c9 2a25daef-7d7f-4df4-8a41-09c9ab63e409 06a5be5e-9234-4ae9-8733-518f155a37a5 b5e21c30-d14e-48d5-8d6e-0119f15ce285 37740096-71b5-4a44-a2aa-375d6e9ed31b 1ff46baa-b511-4fcf-8846-31134d4b03ed 44237913-744b-4481-91d6-5ae1bc19866a 113eb451-8ec1-49b0-b468-00f7a2478298 ab414d56-1d64-40fe-bba0-ee7d324753cf 622e5f97-4434-4f7d-887b-51073f7aeca6 724d0ac9-c6ed-45cd-befe-47cace4add1a 143f60a5-b560-4010-9417-b067fb7eb70c 3944929f-dfd4-4b53-974f-3fe13f44e19e e463cbe7-b142-4c5d-aea6-9c4dc6591685 40dbaa17-62de-429f-8623-1edfbaf6e182 7d9614fe-6fe2-40cb-bfa1-b0072806f8a2 99386890-c8f9-49a8-90af-5d4a50fcdc52 f0590a7a-d1e8-432f-8cdb-2141bc4b22ab 8c3e6134-bef9-4144-9cc0-d9e8ca8d4535 d216473e-74bf-4462-91e0-83254e792c78 69096bf5-2d2d-454a-b69a-aed50bf5eede 98b27af5-30a2-43f9-9350-5a819d46c9d5 e31abba5-5c6e-4cfb-a57c-54151debbf12 c5136fd7-7b88-408f-a99d-bd0ede4713cf b7cb316d-e8da-4cab-8067-5cb9df0cf852 d6bac751-914d-4c55-bc1b-5387a6be99a3 bb761d47-f7fc-415f-83ed-66485ba92c48 5ff51b2e-b47e-4300-ac99-deee8db85ce5 4c71c4a9-b13e-48ab-9368-80f59063d5ec 00833252-1f63-492c-9d21-bd4d34ad3aa3 f5b1fb57-239d-4d5c-96b4-d98cc67e6c1e 64b142b2-d11b-43ee-840e-40b1ea6bcaa1 a968b411-bb37-4547-ba23-07dc1c1116f4 558de91d-f5c3-42ee-a0cf-fe753419a253 7b18a9e0-c18e-45e0-9b4a-4c61a8443f21 b385a5e0-7d67-4036-aeaa-d8e3d2da9a75 160b29ae-d9a3-44cf-9e01-25cf13528024 55bde180-2805-4303-b7cd-644105fd2b1e 4b66b570-0bd5-4d60-87da-172434d43fd8 41dec424-3a87-4b73-8fd9-b08aefb93be2 ee5001e0-8133-4c31-b0f5-49a78b3735d1 ab1526b5-096d-4e08-88d9-12481ff2383a 01288d05-5346-4ef1-9706-4ac2164796bc 82915a5e-7654-431b-a7cc-7fe1b3968231 616c6f22-ed6f-4236-aa1f-a07c5590edbc 54990428-4cfe-4925-a262-d4d157dec3a6 f8d07edc-0955-4a34-9902-0f9ad0de04fb a9d848ca-b890-465b-8699-82dc995a00a3 460e963c-d19a-4291-9505-df0db9e235e3 b9d213c9-2c92-41cf-9709-c429aea1e40e fab9461b-58a6-4ab2-a2f2-4c0f89a795da a9246c36-f1c8-4930-98d7-1f4b2eb48bc9 6e4359a8-c4f8-4662-b83b-f3298c9f5df4 928e6b79-d966-4a6e-a063-2468d3064a66 46fd1430-dbf1-48ce-bec0-2ef7c9d40639 bd0e1edc-c109-4b2d-bf33-1239a54b5e26 90ee4245-6d77-43f7-a4a9-a34852b4778a d63620d1-6c2d-463d-a63e-62d1fc5a421c fa55099e-c7ae-4255-9235-fac0e465f18a 72be1180-ba1d-41ef-91cb-4e2528c97245 e077ff62-60da-4d9d-870c-f8285103de37 6bb52b71-4da0-489a-9a37-08a8dbc219eb 14119e3c-acb6-4469-8a81-eeee63241334 71c7de39-a911-46ba-883d-0a240a18961a 6aea8e1b-8fae-4c41-9774-748b892179a2 2eb6b81a-47e6-41c5-9139-84ba0e51031b 8bbd709a-ba8a-4632-a192-70233af77ae2 5851dcca-8cb0-4cd0-8fc0-d13c16778777 d72955dc-281d-4118-b049-4bf3d458016b d4459c15-1e75-4c5b-8df7-262e4d474c35 3c05f805-f834-4320-b853-99c652f7067b 9b86009b-2c1d-4d3d-ab34-0f143a1c79a7 2e640075-c1d5-4e35-89bf-9d862f06732e 03178a9a-fcd7-46c6-9a6b-3966f87497b6 4f1c9372-14fd-4444-9577-1f13f6d73528 1521d7e2-708f-48cc-afcd-a81e3f6d97cc 4d5c9589-540c-404b-a82b-36a5aacbf10d 7587914f-9fbb-4f14-8358-ac47ff2991f2 820b8a4a-dd22-43ad-ab65-f8f73585536e cdd9c184-4c73-4cc3-b41e-213e489604e8 d383fcaa-3417-4ff4-a33f-16193e682fea 7a76f368-ffc7-44e0-aa3f-3cf12b809c91 70018531-4f49-4065-a3f3-e37ddb92db4c 02dccb56-3b45-4e7a-b562-014ddc8c5d53 2dd9d13d-bb84-4ecd-a28d-e0739aea1576 97508166-d2ab-43bf-a583-d27afb7cfec1 ab5e29ff-1813-46e0-b337-afbc781dd210 c4abcbbb-d1cc-4914-acfa-6a60123c7b43 79155faf-234c-4ea2-89d2-b9ffceff4a47 59be741c-4ef8-4649-91c2-627a785df04c 812fd0a5-f390-47fd-9409-05f9f13bf7f6 567f7d9c-1510-4eec-b30b-3cbf0da95c43 1b79120c-82fd-47e9-b740-517cecb00c48 28e40ee9-97f9-420d-b130-03b4d0cd6102 15c000dc-4498-4b9d-95ec-02d0264bc207 bbffd2ac-da21-45c6-8f92-5dea8f3aafd0 92f38fa9-20da-41d9-96ac-9bca4fe133a1 37f0d308-e739-4daf-a377-bd300ff57114 a015d40a-fc8e-4134-bc0b-ab83e69abf36 17a5b4de-315b-4030-86b3-2a46b075411c ef532e3c-38e9-424c-8a2c-bff89475f116 9c980c8d-d8d2-4331-9170-287413816eca d924b23b-39b9-49c1-b4f7-4ea4a437e80b 356bf785-bce9-44a7-a91c-f98ae1e78fd3 aaba9eea-d31c-4097-bf2b-f4ad43c76d0d 28042814-cb03-4ee6-99a8-261662270ba9 cfeb033a-d3b1-4835-95c5-5317f7470d57 9e953b52-bd67-4674-a03b-2a13e6729bd8 4295de8f-ef3c-421e-96d5-9e8a1b1af087 2fb8b5b2-0cff-475c-ad30-983524fd3068 7581c0d2-f0e8-4c18-aab0-db98249c8185 6a606b65-97c8-43a1-87ae-b9cb17356f13 043fc0f5-389e-4f69-a40b-6a331fcc992f d7a7b4e5-4192-47c1-a522-255812c39b6e bea94d38-a517-49dc-9514-2a345b1c73f8 2dcace9c-f66e-4cfc-95ee-cdc19fc9f177 9a0ecdc6-0b6b-454a-b03c-e6ccb6fb159c 3621dcd8-5950-461b-a0f8-e9245c95c57c 45dd82c6-e0f3-4946-9d9b-8d4e39d768c2 0037dcf4-9e9b-4978-aa5e-37f5f925e8c7 a4939b5a-cd80-41ca-ab70-420de6eb4908 402000c9-295d-4872-adb1-5c90adcac0c7 545b84ba-f9da-4b94-968f-4def3c520d1d a8f89a76-e0ea-403a-b2e6-13650130c2e9 65df3929-0e98-4107-b663-869722c67432 13a4745a-43ba-401b-828c-021de2dbe7cd bf14da73-e85d-4fcf-a468-b331992fdf05 a25b9726-d0ae-4e99-9a45-2b7ceaaa1cdb 5bce38b0-7941-4637-80f3-c44a12577ef1 01c3e2ee-f0c0-4c0f-bb99-a33226f67fe9 ee47a41e-5dbd-4f1f-a7dc-c759d7a6696e 36407075-2557-4214-aacd-bd18258a43d4 3200f1e4-0df4-49e5-8ea9-771ed124742f 36c7cfd2-854e-42a7-88c5-556812746785 c9ceafef-226d-4e4a-b6fc-183098def82f ae14ab6a-96bf-42cd-b56c-8c1ec6ed109f a4e9d1b4-dc7f-4bf3-8158-83fa7926f1dc a561857b-10ac-461d-81f2-81ee92f9c018 b943d9ca-9134-49ae-9351-3e59f1f66075 b0a70082-7dfa-42d1-b5d7-54c66bc21fd7 0c7744ec-3fdc-4961-9863-a2ccff3c1463 95f526ca-e6b4-485e-b4a1-be44b390aa73 689d53c3-a55e-4207-9f55-9e6a536bf583 17187f62-e778-420f-b86a-3e36669fcebf 77bebb03-71bc-4291-896b-446b6fddbb55 dcf5c70c-9cf1-4b68-a5cc-fea10216419a f2da8028-d7d5-4531-8f5c-eb5d2cc9998d b9fa3c09-3ed9-40df-a9fb-b704c5b88a3d f24cf4aa-dd8f-4afb-a1f8-b31c0e1f6bc7 f8615f5c-3527-47b6-9e94-f0f7244e7ce5 835de4e2-9a66-48e5-a49d-09ba0ae25996 8c4e1a63-d4f6-4aaa-b0a5-3162899e311d 42b5530f-3e92-4a42-9d20-e27d6dae5dd7 f49ff866-0dcb-4ff7-bbae-86aecaaf354d b160c795-f55a-4a4c-b0c4-e122520bf08c 4d338a5a-2882-4290-a78a-6269cdd43ac9 2625f842-67c7-4c53-860a-7eb71fb017f7 f1f14884-872a-4fae-8304-3a67b7a88a7c 34ea260f-1efa-41b0-8a02-756d57913e52 fafa7025-b9f6-4835-bf12-dfb284f1c721 29ec35c2-785e-4aa9-ba8e-d282958a124e 32322753-8baf-4736-a630-7f52ba419431 4964b224-1c6f-41c2-be09-f32a26a7974a 5f471774-a9eb-4f6c-8fce-e1ef538347ed 770e61be-1eac-46f9-aeb8-445ebff04d99 1b95db75-8716-4d12-84fa-9ca9f1e48455 b694ef07-a27f-4966-9538-64b90461df58 73727858-b582-4ed1-bb36-87b47e473a2f d2bcb3dc-f41d-4f8f-a1c7-42251f666b1b feaf0b20-e4f1-4581-ab1b-7f091851d117 9e8b45f1-9a45-4efa-8a31-466984219c34 b4be661a-040e-491d-a07d-d337a6c3673a 752fd3a2-4f29-4870-bce9-f3a43320bd8e e1147ae2-cd9a-4be7-9952-42d480b4438a 26e4d0e4-c671-4c23-8e92-8e5043919606 5a3dc7bb-d50b-4990-a7d5-43ce89deae51 565a06d2-ca7c-4881-bd8a-3a5a83e68d76 9c273f2e-adce-4b0a-a247-60082c14de27 888ca74c-7770-4072-b78c-396f0d3d12c2 9144af85-0030-41de-bf82-8cae69b891fc ec53e1f3-dacb-4382-a172-0571450f59f7 0d59bfb5-9f9b-416d-8b25-7aa057a5fc7a 28ad5b27-6a6a-4455-907b-91a1e71038bf 3afa9f36-15fe-4ab7-87f3-61f4c54ced44 408aec8f-67a1-4ead-ae05-3fe732198536 00ee17d6-86d8-4391-b592-d1d3eb69bc10 5d761a6f-3182-42ad-a9cf-a2c63d9a85be 5d6cfcc6-cf2f-415b-8b65-60aa2264e764 2e6e7dcb-57d5-4ebb-b4eb-4daceb3fa767 ef0cb3ba-3527-426e-8328-3a8d154c6951 c10a033f-1a5f-4f92-a822-36cd5b65535d d76193a4-f2ac-43dc-a9e0-773a8e0ae2c4 95e23cd4-0da0-4697-b631-20f21f97cf80 a87d76bb-3d04-4763-914a-efac304a26c8 e4401b0d-27e1-4164-b7cd-682c9ee159d2 ee120d2b-62a9-4c50-b717-b64d1fe5a51e 50508920-ac69-4b4c-bd19-2225f7adcd57 21c49fc4-1f71-4ee6-b9e6-ca26aeeccf41 24cf2e35-ae15-49a2-b82f-2643da258222 3d6218ec-e751-4696-8a94-4cf193b0535d ab64988e-78c0-4be9-ad63-dea4527c2cc7 7f8b491d-d1c5-4567-87bc-a5016789eeda 01243170-4060-4dc3-87da-024726b44ff3 9ac5dd67-bcc9-47e7-a22c-44d6d4ea520c 326e24aa-6b1f-4a1a-b19d-1a98f97df556 933ae173-24dd-4c84-9b5f-0029d4fc46f3 e53bf03d-af6e-43eb-a983-80effe204bdb 72b59133-b44b-4feb-a6eb-8b8c09471934 11d52253-4bb9-4125-87bb-c73e029c04eb ede2ef52-c63b-4852-8c90-d149a9f39a90 ac5250d4-df16-4113-a64d-e7319b31d684 0ce1a09c-1394-4ca8-9b97-c0576181e4de 3e12d134-d65c-46af-9760-28d697438800 01198188-3792-4ab9-8fee-4ebc337474d3 c786d104-d983-4627-852d-1e2b8d863e25 eb6b1a41-c6a1-4118-a3b7-bb1e0f7ba02e 4cc2334e-fdf2-4dcb-b7ba-166c11284875 d348b429-01fc-41b8-9e21-dadc06d3fd21 0b1264c5-5bd9-4fad-bb10-99a7f109a183 e683be2e-51b8-4a8a-b121-8b60beb59fbf 028cada8-6de6-4ca2-ba5c-06ff7bd463fa bd71340c-fc3f-4891-8ce4-8b80a5c2a480 c4283acb-fcd5-4fa6-9045-05c9a965ba87 bb2d5fbb-9343-43ab-93c5-d81adadf1de4 ef296ac0-2c7c-4a8a-a8ec-5199aaf22280 0fa37b3d-825b-48e2-991e-4739aa90ce46 89c47fe2-3fe5-4c5e-b8b8-2f4d91c013d1 98065f6a-d8c5-48b8-88f8-e0b4a3a21c5f 47182bae-74e9-45fb-af23-2c8607d0d935 a8c45640-687b-4960-be5b-271ddb80b0a9 293b9685-3c23-4761-a6cf-c4c15a7a72cf b3cf0b32-bf2e-48c0-af4b-edb356473147 1e9400d4-d28e-4e40-b9cf-73aba2fb90d8 d9b11dfc-d737-4c23-801a-15a2a0e53bb8 8e972a57-8ab7-4026-8769-a3bd638b8151 9420efdc-6d5e-4bfc-88da-979634c0733c 11ca4dca-8338-4ad6-b277-cbe6b60224eb c1316457-30ad-47f1-94c1-d96da4ccf04c d2bcb9b6-fab2-49a5-b4cb-b163ea35f883 c64fd799-90ac-4097-8af2-3a548216fbb2 a012c0ba-f59e-47ee-84ce-8e339c90e75e d57f9979-6c43-43b7-a4f6-dbcc2da83d33 30c1cf41-9fce-4751-900f-11ba58bb6d02 bef5dc9b-425d-42ca-a797-a80af3a3abe9 07bb497a-7d87-4e1e-9ca1-13596865a7cf 1ed96394-05f6-46dc-a583-1131dec78ea6 9969b431-cddf-4787-b967-a373cce95160 d3907b00-1a39-4b99-a83d-bfadcc92425a 4a9447eb-1b49-494d-b98f-6af93d6e5cff 8f0f30a6-db83-4d6c-8310-3ff167fcb51c 7a82efbf-3cdd-4a35-985e-178e9064373b 68705abe-3756-4478-b589-4e1f5d48bfce 2659da17-51ae-475d-90b3-7c741043d982 32335691-cc3c-4213-8b3d-7feec60a6a14 c08c911b-1691-4e01-a64d-bb44c92538f7 2523290e-ec51-400f-b1f7-d3e871d33165 8ef21e40-bd42-418f-b544-593955c87144 c9d91e5a-20d9-4190-9a35-98f49070bf2f d3ca13e0-57db-4e2e-9d3d-0d45490fedda a3249a19-2b8d-436c-8209-110dac215e15 b3228557-7e49-4135-820a-3439a69ce3e6 a6d5a20b-c9c6-4bbe-a5ac-56573d5526dd 454bcc42-3c0b-4878-92a7-5108c14c8417 5b5a976a-4b02-4c65-ab97-f7c1bd872d2d dc842064-3d05-4c23-b360-567e64453173 1e150418-8129-4c3f-90f3-d0eaf8d231dd 43c3678b-4f81-4e53-adc9-5bc951334edc 33695afb-27cc-4c00-9161-de84840f30e2 db564561-6a81-4e71-ba3e-117801ef971a b7069e10-7c39-440e-80e1-c886c3f237ca 1f65aa5b-c1ef-46da-a307-15856339ee0f fd627fa4-8204-4f33-ab92-c6ab4543be8d c51eaff7-6f7b-46d2-88ee-0b823370aadf f1240074-dd1e-4e9a-a35e-2516e81ac108 04d45f5c-e507-4300-924a-40dbc438a671 0813c1af-13c5-4215-8d22-1006c6ae555d 000681aa-062a-47aa-9c3d-7aa01b26998b 691fe136-6541-4e21-b99d-a053eddb88a3 45025041-292c-448e-b9d0-9f93dda2a163 8bb9477d-1442-45f1-bd0b-3bd61c9de4dc ec9d805f-5dd9-4adf-a417-f25e01968e81 abc3a4c6-22ba-4b39-9ace-7ef43dbc3f5c 6a896c77-f9b2-48ef-a9b5-3987d5d1abda 1c447a8c-caa7-48c5-b238-a9032b55de64 4e0c6289-9133-46eb-84ca-430abfa2d77d 7e1b9386-507d-4f28-88ac-9702d10c056c 18f227e0-4b3c-43d5-b875-35614df9c7d5 38a99a78-458e-4776-b649-56aec5545013 04f40b4a-e2ee-4444-bc4d-b006f9974124 f74d512a-37ed-4986-b4fa-6be3f827d0f8 8e0b675b-57d1-4ac8-b047-7e1bd19e22cb 38a49b89-ac71-4a44-b551-2d658a66adbd 50923653-e5c8-44c3-a7fb-1955fb69080e de8b3f50-2292-481e-aa30-33784d0315c6 6231834f-5a68-4bf2-af04-b28dece37cd9 e3f35eda-9cd9-4f3e-b64d-a31bd44e9265 04dd1f9c-3bf5-4ffa-b0ea-1984177b02a5 45aa4430-60db-420c-8385-64ea4d004314 12e1bb36-4949-418a-93b0-9f651dc84ec1 f41239fd-e8b3-41a2-997f-0ee2e3b9aa43 be594876-0964-4c73-aabe-2e6bf0029586 0903257a-789a-43dc-8ad5-3301b8d6b5f0 be559219-421e-4661-bb81-8de564de8d09 8b6f6f3a-7589-4609-b3a5-cc0571508922 a7e8734d-096d-492a-aaaa-330252a6a896 21e2f669-7ac6-4eb3-91f2-42f46242a112 5824955e-4404-4977-8a29-2e6318a563bc 27a663a0-4fc1-4066-9c77-5ea3a958ed84 621dd125-f6e9-4ac8-9e2e-60724024a5e7 ba68ef74-7814-4ff0-a3c0-090768566822 61691624-df26-43eb-8430-72f9742179f9 452b3595-93e4-429f-922d-e252aaf291b6 d3a10d79-e37d-4c2f-a8ff-570ca7a7ffee 4bee5d51-ef9d-4098-a97d-0eb38e8034a9 ea126a25-2322-4755-af16-a35247785088 66e4c21e-4cf3-4297-9e0f-22067ab50695 7b3cad29-2353-4834-bd5f-d9a54069307c 3cd4ab57-fdc5-42e8-92b6-5e5e06be2d2f 42a466c6-a005-4e5c-8e84-c2f37bb331f4 1d057bf1-b4e5-4ba5-9ad0-09765f94ebc7 4657d741-bdf0-4dcf-9685-6ca8b6b8dce7 2512e149-d3ba-48ad-9709-6a873fab6170 d7f736a0-1268-4930-bd2e-b91e65e7ab02 e2c66b06-f628-426f-afc2-099ab451c7f3 4cf516d6-b6e4-4d9a-a747-9a41fdbba3c5 3e7a1822-3c61-4542-938e-aaa62a1d90f4 db530093-20a3-46df-b518-e083b3bd1204 2564d86f-f351-457c-b372-d32ad27057db 37a996a5-bf08-4e80-8d03-47c2d1c7a852 da0624f5-d4e4-4084-aab5-b092081d19e5 9f872239-fe00-433f-9d61-f9ca92dbb954 b0b738ca-163b-4c52-a6a9-6efda5fe6937 c6c98634-d5dc-4f4b-9ce4-774f58f4a941 a2125b8b-eb14-4db4-87f5-fa566aa67431 18bcf202-46ad-4839-853f-3f0e9fc922f5 2e33f506-f72f-4bd2-93a7-5367705b2862 2707345d-ae8d-4f4b-8e06-e7d0f4f4a4a1 bacef075-7de9-46b2-9f0c-fb2221a352e1 7722c6c4-a61e-413e-ab5f-4e420a2a3222 48ecb10d-9259-48c9-904b-150238e2fb29 dab16f16-728a-4f20-8626-adda00e7521e 65d8457b-4663-4828-834b-0739ea3afb0f 168f7b69-a755-4bde-8c70-8cb499dabe6f 377de727-72bc-49c9-947e-eec2b2fabf5c 516a4787-5bb1-4f96-b8b5-41b2097f183a 2c79d626-c275-4530-bc2d-c5e5dbd3ba2d ab1af9b4-2842-467e-bee1-056544a47abf c6b87690-1bbf-46ee-8c09-155f6c1131bb 3f2e35e8-8920-4781-8f88-066bbe60141b ec3ba4eb-568d-49a8-a3ff-c301bca2cf40 36423dbe-d447-42f6-b7bb-3cf78a4a1984 000826b4-095d-45f1-9257-b04e10dcf0a0 42dfe65e-dd22-4d73-a4fc-689fe630b25a f3ed4307-a6c7-44c0-bb77-59425f4862a2 cdb90a05-5c17-4e6b-9d7e-bf4a22a7f4c7 74b2160e-b1e1-4652-aea9-ddc26a0aa528 ad9a6bdc-8929-458f-9a9b-fef86459c985 b6dd3dc0-6f3e-45fd-b869-fe188c20ce9b 9a465c7e-b98a-4244-bdf5-ba77a3a69151 916780b4-5390-44c7-bc9f-809b81a348bf 2e4c4bd0-9549-4bca-abe6-48053359a6f3 b109004b-98e1-4eef-b7f9-2e188fc17213 5a27ef1b-133b-4684-ae03-240a0c037506 69952975-f896-4d97-9259-49abdcd84c4b 63bfd4b5-5c49-4db6-b76f-16e9fcd539c8 79da8f11-8118-4344-97fb-07a729f2a856 0f989754-d23a-483e-b633-e536b14e6af9 51b50d21-97e6-4295-8ea4-d16e929b96c5 01c0d2d4-f5d1-4572-813a-813cf8155deb 2f4f82fa-e1e7-4bce-935d-9be59ace8bb1 a122e653-81af-48d0-ad94-1e6420cb286b ffe07841-b029-480a-9951-903fc24757cf 67cdae08-611c-4008-b7a1-f69a5c435a87 25b68255-78bf-4f41-b12e-0b601f6a1e97 07640315-2be7-45a2-85eb-782bce4602d2 2de44bb5-5dd9-42e6-861d-0791d8fcadf2 6a068e8d-fe40-4cde-923d-0356019800b1 5300d5fd-1031-4fe1-8605-72445c8478bd 33e7759f-3700-467d-b791-0320b50895fe 998c16bf-74f8-418d-b14e-d663d00573a0 b1295872-8472-41b1-9d1e-6df25e539ef8 84e4fa97-68ef-4bd7-860e-cb7ecc53c30f 76d29407-9f78-494b-9397-299bd57421d7 d1ea407e-8333-4f53-b992-832c01a4a329 80d1c6fb-56b0-420f-b9ed-a1c18b776609 40fa6a0e-a353-440e-9223-f6c90025b52f b27bdbbf-6c80-43ab-96e0-40147def274c 944614ee-5762-4436-85a0-60e33a6c8374 a9a5f42c-7412-486f-91e4-6961aa8c22c2 482a9248-1cf7-482c-a98e-dca3bdeb41be 6741efc7-f8f9-4d3d-9801-a03d353687ee 86130ca0-d8c5-4d0e-96b8-e7e986630c1a 8b810f56-1f25-429c-bb5d-03cc9ab6740a 34e0e36d-a375-4af0-88e0-2c7ad633ef0e 3aaacff2-82bb-4aeb-9d2a-c560ddd7e1ee e6590725-0ed7-4b7d-9ee0-32ab8df7e5ba 956e80ec-d9cb-4125-97ab-065f5c374e30 f520c206-0ff6-47f7-864c-70537e9a644b 290c6cf9-2136-42d6-9781-475d183c9c3c 6c0abc85-dd70-4988-9ab1-43c643c34c29 1e1887b4-7e39-47e0-93b1-e977d08e670e f06a3332-be7d-49bd-b4dd-2001d95e10ce 42aff278-e6f3-4ac1-a452-54bab141b577 3987e9c0-ce30-4759-9023-93123d352088 d5cd1b89-ed36-45c4-8a64-4180047af690 f65fb5bc-623a-4d0c-9970-e986b1e8a906 1b98ef57-d469-45bc-8940-fde8b8e2edf0 69580267-0f46-4554-80b8-449e6e9caf00 f5df5ca6-a1e3-46cd-ac00-6aaa026c803c da7bf98e-cb88-42ec-b7fe-02e85b2db326 8855dd3c-6feb-4275-a68d-4c9896b52fee 679af9bf-6a09-483a-a056-d4ccbd114dfc 65a968b1-4f3a-425e-a510-ca3a3727743c 7b7934e7-e043-430c-8f81-34a44bf0b604 16edddfc-ab11-4327-b555-31e18ba4e6b1 fa8a6e8e-597e-45b4-9e3f-e0dfee0b7e78 73c7bbc2-765d-486d-b2a3-d32dc682686e 61bab2d9-9d46-4d5c-bf4c-02c75a750afd df8ac206-ee24-4747-8c4c-7acfaba1ea51 0b15ad08-31f2-4198-92f2-d912998fe782 f417197c-2396-445f-a0fe-2ac27a142f1a 9c7bd09d-1f3e-47f4-85a9-d5c2ed429c11 4f2702bd-6f0e-4d55-970d-687c46610cb8 6f959943-1bd5-48fa-af77-cde09e6fe9c6 e2070c20-ebeb-4439-ab4e-6138a56536a2 7700f939-4b92-4366-ab57-daf7cfb8803a 00dea085-3f70-45a1-8972-03681590a59b 556f5d69-8c5a-468a-9316-5cd01b4cc37b 904d7f77-784b-4498-b9c8-f16350c1788b b7c697ff-811f-4b3b-bf64-361185d685c8 695fbfe4-2e9e-4060-8b7e-238c0443aaf4 2fc49cae-3133-4dbd-9d19-595428c25222 c7b2a6bd-0b96-4ff3-a5f8-a605a6b8f24c 019457fb-f939-4dd3-833c-04ff77539ce7 e42080ad-1f6d-49e2-9411-b9ac80bf13c5 90aeb117-8dee-4882-a91a-8e97688d3a9d 0ca5adf9-c63c-46b8-910e-b06ca3c126ab 74dddfbe-381d-43d7-bb53-ea64e384017f 203b721a-741b-4022-a032-c491f973bba2 1c079bf6-d976-4ca2-98f0-f96fc6f078f3 04c253ae-bba5-4f3a-9eff-be3c4ad991b2 66802729-23e1-4f26-b560-cf18f534edac d9b6ecfd-5081-494c-8588-ecd607df00ee 7f9079ee-caf5-427a-ab2f-cd3fc78fd905 ae922745-69cb-4fdb-89e9-6d237ed557aa c6d54abd-88ee-41f3-9914-d929204d09b6 0452d8fa-4495-4ce7-ad8d-b4e470c4950a b0fe452e-f191-4847-b2c7-1a65feb3aa5c 85996368-1aa1-45bf-8c46-5d9f5b553f62 fbb48a4c-71dd-4ee7-be54-bd3cf6d04b4a 1677fc6a-6fe0-466f-9b14-922a3030a1fa 165d4a5f-7be5-44e1-acae-9c56fce2739f 818817d8-6533-4cce-ad71-27a250871624 8d411eaa-c346-41e9-9a13-fee9d788539c 54c4ff65-0aee-4939-81d7-d6652bcc947b 5c75c55e-6a28-44bf-a234-d4bedff30bb7 5a443580-4ac6-4e6a-bfe7-6e65b58d4d00 eb1962fb-b7ff-43b5-8733-e10e0f1dcd9f 2c69dbf7-125c-46b9-be07-5396b4b23902 16604c8b-4db0-4a1e-9511-c451ad2aa514 247bbdcd-0a41-43ab-8df0-c7c228723ad0 36c6c504-b3f9-4050-b622-e49b6bbf8379 e0264f03-3a29-4db7-80a2-0fdda7c563c5 9b2d0ba3-f716-4fde-a546-ce4f45949223 a4b66620-1343-4eb4-86dd-e0c3d4b5aec2 c92d6748-9a14-411c-bb0d-1a8cca53784d 935369db-f4cf-4d4b-955c-fe9b682f8ee7 5f4970d2-46b2-46c1-ba37-997e6865eee1 a05553d8-415c-4b09-8680-f60507d65419 4a4c6715-de43-4c51-b503-95b4a2829d60 779754df-05eb-462d-8d3f-8721889bfcae bc8ea12a-8fae-4126-bcb1-6ae39ed64e78 f88a1237-f09a-44a0-b143-827d76beea6b 61435ff4-e4f5-49c3-be33-61b9701b8251 939b8077-b2c8-41d7-b4ba-2d5ca088a14e 7482e95d-0935-46a2-a274-9113fb990a62 a88e1ac2-6edd-4f1f-825b-af35f995ad4a 1543d48c-442c-43d6-948a-58b6f9d4f546 809b99f6-ce27-4540-a37f-ea0e6c914d9c b450ded8-9182-4add-ab58-edaa42e27d97 af1eb280-6a08-4e1c-98db-2bc1cebbf4a6 b5b640f7-b3d9-47dc-853c-22982c7699b5 99be48c8-e16c-4eb5-87ef-3b26a3b97c91 f98f8a04-0abf-4196-9a3b-ad40886c46f1 d2834532-35f3-44cf-9ae4-44017e08bc0d 30b822aa-d72d-4c49-b9bb-9a3315a95df5 2ae5e888-7f42-4c38-bf06-f1d89c533c45 5a426e9f-2a13-4b00-a493-bd5c49e32008 3a04b561-4951-47da-88a8-a90cbdbdfc20 8acfeaf5-b7a1-46df-ac0e-682cda57ab63 83d919a8-5627-4ddc-9a64-ee4239ea9ee1 7b392ca8-1971-4ca3-aae8-616c2a2f734f 89ce1148-3756-474c-a3ca-60b60ebe9804 c0e325ec-3059-49b4-b38d-6a18951b3d94 aa053148-e842-4ad4-950c-cbdd824aa735 658c111e-8630-43a6-ae5f-a2c1cd89f50d 308ce808-ccc9-43bc-a391-21019f7b02ab 76e6e60e-33b6-4277-a813-c4c03c5df119 1189b4f0-d906-4ff1-8e70-f6f58e2f9cba c2fb1f4a-9172-4eb0-a8ba-106fb52594b8 745971d2-b1ce-4a59-961c-7e35dc53c7a7 999dbcff-f2bb-45c9-8f58-d576a7ad9401 8b4d24b9-4f25-4706-bceb-0375c73d97a9 564a422d-0c78-40ed-94f2-e1b61926984e 5765aa14-3b08-4665-9c6a-42ac99511659 af910381-c231-41f6-9b0f-d0a2c6c4dfb6 910f3d0f-2a8e-4df8-a04a-48965d03f954 f26a3ed2-6e99-4dc4-965a-0546d39e8f01 19f279e5-53d4-4abe-a759-3e00b1fb8f80 c6465ed0-37ce-4d5f-917a-129d063d721a b8affebd-7ea4-40c7-b114-3e3e9a4cd562 eef7c66c-2d4a-490a-be03-7a0b30bbed1b a30626b1-d76c-4592-ac94-de9c628d0f0c 066ce775-4f8e-4b2a-b54d-c07bf371da61 2c6cbb79-1f32-40cb-a022-3699187b6408 f389236d-476e-43bf-bc45-afa762b16ef3 9d91477d-91f1-4631-a935-e6c8ed8d6ec7 3232af43-9052-4d03-a680-4acb8b18f6fa 00cbe847-26d8-410e-aa3d-b4749f13e2bf d4e50dfe-4b0f-486b-ac42-00f2b51c910f 45d6127e-72d0-4a0c-8a16-dc8f96c25c87 37630770-67c5-4d06-b4da-0e0ef1eba4db c331ee06-b139-43a0-b4f3-d5b26d3d5f40 2a72940b-7a45-4ff7-9d54-82d2a1332cd5 ea16a9f3-d356-4b60-b2f1-68062b7b8c3d 87f59395-9c35-45aa-9ec6-0b4c812677bd ccb4f0a4-fa27-4ee2-a8e5-c635efaf8ed7 b6c4d754-1226-4515-8a15-c7a09e67737d 9550345a-e32c-4719-bce5-17dc75a1a9f5 b7db8e96-e3a1-4f01-8bc6-bd4e55e257a4 d9467312-5cda-4ce5-8eaf-4c6cbb57f144 21d44d02-8455-4f11-9fb2-ce7456bbf08e 876fb2f7-530c-4c13-b731-c1c3c2f680df 0343876d-714b-4a5b-9f12-b58a5930733b bd11422d-cddf-48e7-a1c0-122effc85c10 65879738-abea-498c-86e5-a76403d99a21 9679642a-b853-4ea5-9923-e3e4b8866583 fe69fee2-845a-4588-b28d-c708b15dd91b 37b9e39e-d9b0-4e9c-b844-39cf0cb6879b c6366940-3c31-4e4f-8700-361c0bc8ce87 f197c4fe-c747-4b65-875b-0122c1cd594a 29fd01e8-0fe5-43d0-aa68-c04e088a5f27 ac67531d-3b66-422e-a8dd-c729a59dbf49 961360c8-4c98-4d74-be01-e5f260f30b84 861b9a08-c9b4-4c7c-86aa-a42dced26c97 fc1c09e9-9928-4004-a76b-9faeace0143f a6f1d20c-c0e3-492a-839e-fd4e8528a3be d0017c09-b42d-43ec-aaa9-54091e658bbd 198a7c57-b27f-4967-a059-d5d20e09f062 e1166486-54d7-4a96-9dd9-bc68dab53c27 29a09d07-17ab-4f07-aa82-17a27f88f204 1115a0e2-cdeb-4358-8a5b-777c50e38ca4 c6eccdd9-4a33-4f1a-9d8a-a60e738af18f 121bb90a-1ddb-48e3-9bb8-af4460f56236 84bc7ccd-17e3-4e41-9709-72bf182ebcdb fdeaf698-f7d8-497c-babb-6eaadd7068a4 a77da0a7-49a1-463e-9f48-1e870a0d9c44 4662cdf6-81cf-4c41-9d8d-7430b96a054f 714d0733-59fe-46df-9cb3-215f4837ed51 0a2dad9e-3da9-4a27-93ee-6dbf80390f28 bf0560be-adf6-4671-94c1-6b9570dec24a 34b36c41-1da6-4bf3-9cfc-07d7fd4600e1 2abdd3ce-c946-468d-b403-70d53dc63eeb 72e99c0a-2dc5-4e7f-b88b-88eb27064019 e6ce5136-3b3e-4208-96d9-6533a7d1bb90 4a25eff5-2a26-450e-9230-0fa996a534b7 0a9d8622-25fe-47bc-9281-40767c64e92f 7dc5276d-cfca-4539-97a5-66b75b3429e8 929b361d-dadb-4f0f-ab6e-398359acb4b6 62d0b7a5-8e10-4b5c-8ae9-58cfab4dc757 62435b35-3987-4d5d-96a5-3c6c01fa00bc 902ef764-3bdf-41f9-b406-b3a0943352b1 625e1546-4434-4d54-9656-1c1d2a167643 b990c044-e3b9-4b1d-a445-a550f3da0c16 3195d7d4-388c-4756-9f33-ebab5be2d346 4fab1fa1-b577-425f-a1d6-d224689d3bdd b0026acb-9e98-460f-9fb8-9c8be629539b 8e8c7294-fc6a-4405-8bee-ac3cdd0cc924 a35bfe2c-dde8-4197-be4e-93dccaef0658 4c92dbec-42b1-4cb6-a23a-7e087abafc4c a2be65db-fba5-437a-b0c6-ac4482481724 8b8cb6ef-a221-4958-b3d6-12bb9b9ef0d2 aa4cec32-fc2a-4f34-95c2-77cdd11f626e 6cf2c24f-eed8-43bd-8c47-d2c56212aaa5 a4a461cd-2dd6-44ce-b064-42036536d900 eae89336-597b-48ab-9d59-2f7dced31ebf 5f1ed525-5862-414e-a5ec-130e4a9ee493 bcdbb693-4166-4d76-9b77-d10336c2e17d 35aa1a35-19c1-4384-9d8e-aa56dbb37e31 f8981f2b-53c3-4e3e-ac0c-1429b9bdfbfc 2d9133fc-8ca8-48cc-b490-13e1a52189d6 d70eb2ed-f4b1-438a-be21-eafba3d48ada 87bc4aee-234e-4034-b854-fe604cc7c2e5 ce0b3399-fe05-4538-b7a9-ffcdfcbc86d4 a4482137-d870-4460-9ee1-d5fde3bacec4 011874b9-735b-4c48-8851-1ba59399a2c1 0cf7a747-e9c4-4268-a973-e15b4a024c8f 034b9189-d08d-4fa2-94f3-e1b2b8a13ae5 bdb4fda1-3f56-497f-bba7-1b3bd29dc5d9 4aa173a1-51ce-4cff-b3cc-93a0c7167960 333abf02-f1cb-4695-80c6-bde52ceb1c63 4734de19-ea87-40ba-b6ab-b9680904bfdd cce0ae02-96e9-4a94-966e-4171a0d9eed8 e094e416-e186-4ea1-99f1-203556dad5e9 c18c5c35-f7ad-4343-a096-17d20f134e3b 4fd20906-de0c-4bc2-afbe-922dbddbdf56 0adca074-c0a9-4e35-a50f-280b3a2ec108 593d0450-8a27-4c69-aaa5-1b96c6eaafd7 de5273e3-153d-4c1f-b3bc-26d4554cddfd b868764c-d796-4ee3-a0c8-68bae8eeca21 d11e7aa6-de48-41e6-9bff-bd398f7dc65e d07e01e1-0347-480d-b258-fd354b8bedd0 c31d7593-0e0e-4d22-ad62-34af4ce48423 0d3719b6-adcf-4c12-8569-ec6b0ad7d060 3a0e4d3f-11f9-40f0-bb11-f8ffa77f0c19 45f05f1e-9369-40ae-b3f6-642268823e64 49ec28bc-8071-43e4-9905-ee305c42537b 7499d1cb-4a86-4395-9d40-288ab838714e 4f1255e8-83e9-4221-8176-fcd32360aaf1 0f659a5c-dc60-4770-81dc-e76fae5c9d17 812e58b2-0831-4ca0-8df6-ab3845ec10f4 c5cad286-a08d-47a8-b290-16f1eb5cd235 b5e95da2-08ee-4a06-88c9-dc9d4fb730f2 bf8710d3-9983-46f1-9a4c-a58681be6382 1dcd57d7-3f5d-4a7b-9322-12547cddc4ba a6119d7a-e40f-4f08-b334-d24190007f89 a1f3a1c0-5275-4517-8712-b530b6d94c25 4863cdd6-37ea-4631-b984-3a829b0c64e1 e3632589-49f9-4fa6-8c98-c93b12312ffb 24232ab1-587d-44a2-87d7-12bcb18dc92d 5635f1f2-456a-47b9-95c3-11d987c37fc5 22bb42b0-f3c6-424f-bfc0-daba71354bfe fdab0a6c-6260-4f1c-8de4-05a682847a71 ad3ffba1-2397-4475-8642-aa21369ec4b7 5f83faf3-e47c-4471-9f38-6bb8db42e04a f84cafa7-eee1-4d28-abfb-89da40f153a0 259691d3-ab94-4511-9a03-0b601cec4908 09ec3bde-ea4e-4933-99c7-3f4839dc361d 41734008-b410-4ec4-8aa3-d982d7e137a5 ac13d122-3265-46cc-a812-0e93b097fff0 3a1be28e-2fc9-4b9c-bea9-7563b6898310 abde3a19-4a23-44f6-9219-4328652870da 62aa1c6e-f079-4044-9361-77d1c031d301 40284f64-a38e-46c3-b814-aa61780a6655 04c43eb7-ffcb-4de4-8940-b42411279b6a bc8be4d0-f9de-412f-b963-4d8a6f65a55d 82928fa0-0873-4145-9a9a-0a56ba5f4e1f 383d8747-7219-4e89-ace9-fc0bacce7f11 7ca58244-7382-4bee-bf77-0d20edf6f128 e77dfbe6-f207-4777-8c61-d1d3d938233b 03f364c2-288f-4709-b056-1597dc6dec48 4de9e646-38f7-4c2b-9b63-a476f40ad889 06924e2e-32d0-4ee0-8771-37abdc006544 e2cc0582-3e46-49d3-b2fb-627f88f5f31b 558e3273-1083-401b-b5e8-b3ec48940e3c f08c6456-047b-4302-80b9-b03097f0149c ae7687d3-d66b-44db-99cf-a398b9be1c41 4a28f062-a1aa-4e38-893c-6ecbc7e26226 8433aecb-2c3c-4827-8539-cb207363bb76 20571d39-298f-4847-b4b3-c827792f1b24 153c30ff-0023-452a-a8c0-bf4554fdcfee ff251d23-d2ac-401f-bcc2-676c0351e08b 943331dd-f5a5-49af-960e-f42beb3dce82 467202e7-d1e4-492f-bb50-a6a4efcaf762 be0cb0bf-2f16-4f63-9500-b45b0bbd2c12 8462c186-a71d-44c5-b9a9-8a315a791ef9 efae39d9-791b-4571-9462-457bc60c0f61 674387f3-1ada-49b9-a795-e9674624810d b97f86af-f473-4f82-85d3-e16368c12c2e 958c81dd-a9a8-4592-8271-63ef4f153674 a5cb1f60-1e31-4e49-bd73-1a4e215119db 388b52ee-4359-465e-a283-e775ae74fcfc 1a33e40b-4b25-4d07-9c04-5b1174a46e0d fb184c83-c4ba-439e-b0ac-590093e03fdc 89daf9eb-24ce-4209-8b8c-c6e2ec6494b4 2a3a1053-ce81-457e-b426-74996689f3ab a67a94d7-9d44-45d0-b51f-126dcee92970 0eeb994d-213b-4679-9f6b-48f625ab813c e7a0b322-8c9d-4b0a-9c18-d1f8124830da e9c2bd5a-ed3b-4123-b52c-7a02c220ba0b 356aeaa9-386b-49c3-bbf2-397179b1eb9f 0b29ccb5-a3f7-4730-b41f-829b0ba95a9f dcbc9644-d85a-436c-891b-77293ff52485 af5b9f58-9f2b-42da-8c73-849bccaa8f8e aa498b63-ffc3-4b1d-b2d0-6773e8428b51 aa1ee0a5-c80e-4704-9423-f4e64a6f0049 7849e6aa-941d-43b0-b9cf-a6bfed2b78c6 e6ed7e2c-2563-405e-96fa-effcf27a1844 f46227c8-2bbb-4cd0-b407-85f2bbd3b228 37c0d87c-1743-4310-a2da-cc98fc04750e dbc75033-ac6e-4b54-b7a8-7778eff86f2e 30d8a9ec-aa09-4261-aff2-213c6d39d72d e1b78df9-2d3c-40c7-a5ef-7a991f13d432 8742570f-51cc-4137-bcb7-4467eed08de8 0f3b4267-e7d5-44a0-b6b2-1b3cfbcded10 f786db8c-0647-4e03-b42c-571d1f01b6c5 2dd57a3c-e1e2-41e5-8847-6a22e018446d 91b3dad1-f4b5-4750-b51c-21057b2944ce 1da5cf47-bb3b-4fa2-a14f-bfa78817fe8b d6378d37-3a21-445d-9214-3b0ac5712dcc 136ad941-69db-4a95-9ce2-fc2025741972 dda66e58-0479-4b4f-a976-25985d1fb74c 2c16f49e-dc77-42b8-83df-59941297e079 64395a55-ab0c-4abd-8e22-9a33a1634075 4991325e-6fb5-45da-aabe-db2f691fd10b 3dc71f3f-1771-4f08-9683-1f6d00f01f27 5ffe9d14-9f89-4e41-a98a-c301024124db 293c341c-6d25-466d-975f-540e816f2553 0a5dadda-f1d5-4afa-818e-1839fbaa9b28 0f78ff69-9384-4441-a5f6-3069479459b1 a455d360-59ea-4a92-b791-d2ee5ffcaa49 cc9f6a6a-1955-42b3-9387-b5841122c9f5 0755d80e-804e-40d4-a0a9-5ce9c875b0f6 d7f2b2ac-7f59-4405-8e52-230bd7c879c0 af3cfe71-bac7-4c61-b075-a9956e8517fe f8af0c9b-3efe-425a-914b-dd82bd166777 f77e71f6-b98f-4b0e-a898-28286307f221 0470138e-91f1-42f5-bd50-db6a5a5b6cec 1ebd8956-11ff-437b-bdbc-54067954a333 4d93ff87-7089-430d-8ffd-2d02caac929e 1d47044b-f3dd-4867-b45f-1a97bbcc1749 17d33839-eb25-42ad-a44b-16de957ca11d dedaadf5-1a30-4a14-9856-906df4e5d2e5 2d8ed2cf-e022-458c-b6e9-9516944cb003 c2d15c9f-c977-45df-9227-01f304c46238 d6ecc3f7-59f4-4d48-a97d-7abfde5c0ee7 cb5783fa-b0e6-441d-b3ca-e5055a3a1f40 6b5f4912-470b-4c80-bce2-86f8b87ca611 a9df98cb-2c66-45f5-921e-451255b66e4d 150bedb2-acb9-4191-9442-36bc9970e404 ca304c01-c3f9-4711-9f84-60ee2338cf1a 8ba86d2a-f1c4-405e-bd67-f432811578a9 c899de7f-8208-49f7-b965-459217be4fe2 8b4ba3a6-caf4-47f4-87ef-a0f0235a14ad 689e0a7a-569d-4644-bbb9-a1736126deb2 d444cb4b-07da-437a-9eaf-2c996b8a27d6 1be90e66-70f3-4dcb-b177-50d78c09cca3 5962ad4e-57f1-433c-9df2-58b4713961b0 b4b0de7a-a8d7-4925-96fd-9d1528efd497 1be345c9-36a9-419e-a716-912774339884 e4108e39-4df7-4338-9627-624abf68456c 1f476381-c0ed-463c-9106-e51452d56660 39c75dfd-7fd6-4b2a-b3bc-5f17c744b1ed 677d76f0-c593-4827-a92d-635a01bbf953 d895dcf0-c3b7-44ac-b109-eb66f193cc18 9b902b5f-267d-4636-ba75-879978dd388d f3499f32-3672-428c-9302-4f3737f285be f8e396cb-ae0b-4e46-9daa-bd0eaf7e3daf 8361e288-ceac-471b-ae95-c98b9df3654b 72b45bee-5da3-495a-806d-c2f1be1ab5e1 e4a96b0e-c53a-4f32-addc-68360d622889 67ed6bc0-0c48-4cba-a82b-534044135f5d d41079b8-90d6-4e4e-b658-782bedcd82f7 a8a61ff9-718a-4351-88ca-066d2835a5e8 937d6433-b771-46f5-b6ad-95a725d54df8 dfd1547e-5437-4bd8-91f8-5433ef4df796 78f51535-9c90-45b7-b6a9-554e852b6413 454d8d97-b05c-45b9-91cc-12ab98af136b bd0ae1a2-c18f-4f55-b29f-a9fbceb13bec 4a85a661-bdb2-475a-8caf-f52b77871665 7edeee73-9287-452d-8988-35ad1c9eba30 d8df7fed-ac58-4177-8ae0-e5e7ba6e5515 640958c7-8d7b-4550-97cc-526f8271f75d 6e823c01-af7e-4539-840e-2762fbaaf92a 6fe6fd18-06a9-45b7-9284-c1d52b4ad750 5b673ef2-8e1b-45bc-b006-6d7dab5ec60f 4cd1ad8e-df9f-4f6f-8003-209bc997b47f 4496565b-767a-48ec-9a81-d50f2e3af88d 83631662-b15c-4311-a05b-4a42341b72f1 b6c201f2-0702-485d-920a-1c63c0df6e88 b010b415-42aa-4d4a-8af9-99afd77dd5c7 e10687a0-1a50-4e19-b15e-74ebac09a4ad 1b7f0cb6-d376-40a5-9af0-c349f7e6a474 3cc85f8c-a55a-4822-a5d2-25b33c754f94 d47e9041-e6f5-4795-b211-e71ca0ff162a a03a4548-8271-4aba-9e7e-893732001740 d38c5111-8cb9-4164-852a-a0c168731b9f d4e286c8-7b68-4200-8e26-a9091b37e8da 1ff6e1ed-8f79-4746-b561-b7c397880323 0492b820-907d-4324-92eb-b5d83d61e00b 7793f3e4-2b2b-40af-b339-f66d0d2ed5ed 3c18003a-7952-455c-bc0b-3256da71f28f 309d858d-dcbe-4f90-afae-3cef76e7a9f7 9887f703-178a-497a-bf47-25c959b9a578 500bdcd2-06b1-4ae8-b078-fce30fe877ad bca62894-571c-4bba-9075-55317625a1ac 030be453-f3ea-44b2-be5d-14bd51be1275 4d78c3d8-8275-4c0a-8175-18c1ba94458e 68790c8c-a18a-4c42-9c25-4127096881c7 42f808f1-429f-4f51-ab9c-dd55334c05e3 333bdfb9-d9ec-4662-a2fd-dd3f5e00b362 a70d0369-b9ec-42a6-be71-78e8c3e662f3 a7f496aa-9c4e-4792-a3d2-8d71a7dfe6ed 116b432b-7a40-4c20-8b09-1f7827b24cd4 da545b85-e8f7-4a49-9a9c-f21d8f8aa496 0c7decd6-1163-4e0e-b9f6-185d6687bc35 14debf22-5178-49c6-abe4-af9d17f5c1f6 8353192d-7cf5-4aa9-9deb-a43d3e6efa76 633675df-d2a4-43bb-af7a-8ed62a220fdb a38d57e9-bc3a-4210-998a-2f18889e7b94 7c768e6d-e5f6-4b9a-b12d-fe20fba31792 55029912-bd58-42a6-91b2-5ebe32eaf478 4298ca49-41de-4376-9ec8-cfa4c961955a 0ff788ef-e25b-4c79-913b-23bd1dcee6b8 2c6b0590-23c4-4e0d-895d-4ed28421f6fc aa1d130a-4409-4bf8-b333-1e52f82022cb cd05f1c3-9ccb-4e80-80ec-b26ba475502f 1bd67838-e1a7-42e0-9407-9c4e3f7cdf12 6a621341-48de-4562-afa8-a4a36991e298 a32e0d36-efa9-44b9-b46d-0ff1da782ff6 4e98f7d4-2be5-43a3-9b29-610addb11688 b1981eb4-0fd9-4e4f-99a5-038905bb8f93 f0774062-ceac-4a8b-876b-d61768f2b53c c63f558c-39fa-4f11-ad88-bce1198ecb68 7a56be5c-8fe1-48ee-b9d1-8d96eeefcf6a 7db92533-bde3-470c-9669-e26dcfd630ba bec5a6b1-5345-427c-90ac-5c3e2ccb3e7e 57728cb6-ab43-41f1-8f56-014559213628 bfa09b7d-942a-4b71-89d5-1b90c043e290 0656d558-23f0-4f97-9453-ce9ae3ba1193 ecbc1864-9a37-4e50-b6bf-ff1db2f31d76 dce935a5-6138-49ef-9a91-c6c62e4157ac 302871eb-114a-4385-8548-ce722871d189 11876407-0518-4a11-8703-3521c2ef1544 e0dc25c5-df3a-4b0d-9bae-b29f5a764f43 2db9e15e-5e4f-4eb5-a6cc-c2349e174320 5eabdbf7-6145-4eb7-94d0-1ffde2caa663 58dfad7b-564a-4ffd-9f40-092b94b45ce4 668afd86-e2c8-4f86-9838-811be35143cb 5e6e164f-f476-4f46-a881-154e86530fcb 07cef046-09ed-4f3d-8cce-12acef2b84ac e7ea7c3e-3749-4d93-9934-4086f23b5af2 01380d17-4c52-4976-9e1d-5ee78f69c73f ab8cdd09-7801-41b6-9dd8-cfccc7026b42 eaa942df-c427-489e-93a8-baa20e30d5fe 8b06d595-9dad-4731-ac9a-dbec097a5acd 6fc2b3c2-c646-4cd0-93f8-bc5c75d83f80 4c37018f-b125-41b1-b18a-4233521a43b1 3d2a9c65-c957-4eed-bc1b-45ca8762fdd0 1a96a64f-a75e-40af-b592-a822b712354f ee6a7375-98a0-4b5f-91f5-59134de81eed 8c4be75a-7595-4c5d-9688-d1fb40889ecf 399da95d-6572-4190-b4dc-2819e682b7cb 18e6f047-d627-488a-abe9-773b21caf749 c33fbe6a-53cd-45d3-bdf7-1877eddf249e a54e6ed0-257e-4b07-b5ef-2d005a644cf4 c8cbb49e-5597-43c0-8b65-e0f215d08269 a4a2e4e2-98a5-4d96-b2d2-8bbbcaeee3a2 a93a7c78-07be-4938-b329-7443a5511e04 6a64c65d-a98f-4d9f-b446-da439ee446a7 7211da01-0999-4757-81b8-24a341771fc4 99094ce5-a6d5-420d-b5f2-79a76e1e6f2f 4d71a2a0-75d8-496d-a85b-3cd907dee451 a4808454-d667-4e50-af33-8d561effb62e 9a3ee8ea-1ca8-4b67-8c7c-8b75df756e04 a7e75741-8ff6-40c0-913d-1cfb26c8b050 856d7fcf-2271-46fa-a5b0-3b1087d5202a 4f5a9bff-b681-4817-8b03-390553ec5828 6d79caff-8cee-41d2-bcae-b0fed6009c56 0bd6ef7b-2662-46e1-9d14-c7969bb92356 7e031d2a-3db7-43aa-9f03-6d92eb8631ab 5081b2a4-a75d-4860-bb9f-d4cc791f5cc0 0e35602c-eb05-4041-a40d-7ea853aab611 863865d5-743a-407c-a7d7-8b5670beae2a 3fea0a14-cb43-4c06-b612-cabc6b1d0717 5c5c46ee-a108-453f-b7b1-14e42762e74a f72c169f-0d15-4959-b0c9-128802bed77c b9e6a1b4-82b4-468a-9f0a-721e12071926 680d2e2e-d090-408b-8c85-7966b72540c9 2a46669c-d8e1-4644-b663-87aeaa800218 2c75aee4-22f7-4270-be9e-99a8fe9e1992 55f81e59-ac3f-4fc5-9de0-5876ddc33e38 c24c4b3c-b4bc-42a0-aa4b-5b919276ea86 08765777-f08b-4d96-be5d-f66b9c40d262 4fd31580-6f55-4e9c-8086-de7fe5c05ff8 aaf83ee7-3ef5-45db-a83e-6994aa1697a6 bf88472a-a0f0-46df-b01e-166bd6914687 e7f3127b-d099-47db-868c-a2009eb3608b 546fc1d8-99a9-4c18-b845-e963f5752f3e 7f2a5c85-5271-49d8-98d1-ce7c1683aac1 4f39d753-a22e-441f-aae3-5ad60036603e f2ddadb8-ccdf-4b79-aefc-ebd21581a7cb ff1855d8-15b6-4419-867b-b1ea44abb885 57f2e802-0085-4640-9a77-86727ab02f5a cb98a08c-7f0f-4dcc-b58f-98a88730e04a 9d462451-4104-4ea8-9cc4-d518bfed7431 3fb467a5-c557-486e-8c9e-e8e151d0e611 616b0505-22f5-412c-95b1-b37290b1e9da e3db00e4-8f4a-4613-9e7e-ae7a9c1faa20 e71520a3-5bfc-42c6-8b37-1beea1348b16 fc797a62-ca1f-4b59-9eae-3831e5d1488a 5e139d39-7898-4671-b26d-c76dd7f68049 60a9d0fb-d4f1-4f82-b961-456e9a540de6 14425811-3e52-419d-89f0-93084cd3f590 94d84b32-f0a3-4a06-a392-c1599d3e15d7 243bc13e-62eb-45ea-8cb5-277479c44a21 3044dc37-5aec-4cd9-9b15-da51fca90585 da3bfbfc-baeb-40be-b750-69d812581b7f a1f83b4b-eb58-4e63-a117-db654effabf6 a646aa43-0295-4d63-9714-a0908dee4008 ac523236-7a0b-4761-9bcb-24524dd16adb 7ab6edfd-f9a1-4b34-8472-be0865cb91f2 4a7c7586-1335-46ac-8f17-b4adea54ad4a 23ebb3bd-335f-44ec-8096-ba763b57f411 624dbd05-5714-490b-b5cb-366319760d0a 5ae2e035-850c-4c2b-a47a-0fcaa05d5125 980f6cf6-f1ad-43e7-931f-f536372b56a9 a0136238-114d-4d59-a843-672aa1681ebe 6ac116cf-ce7c-4ae6-a1ee-d891999ab620 839a998d-83b0-4fa0-84d2-788da1e1b23a 835c654e-3125-40fd-92cd-ed36c37c8c83 dd2198a0-2e75-40a4-9045-7950811e8626 90441aa1-104a-4323-bba3-8052dcc4fe69 6fe5f271-4a4f-4fb1-9587-3d9637c56659 ce8d8b02-ae91-4e6f-b32d-f756870c71fe 9e7043ee-659c-4eec-9d75-ab04fce93094 aef00c63-2ef7-4632-ab4d-a0aa21d7674d 310b5167-6305-4180-bc2b-1ac2b46a635f c003725b-9cad-4b6a-aa41-57257cda3bfb 4655ea9d-9c95-4268-a0ab-5d02dcddb1b7 f2667c44-a193-4a3c-b7b2-d0d7786665d9 81b318ff-fbe2-40d1-a05b-bdb2b87e969d 930e2d55-4221-440a-917f-df38fd179274 4d93ab4d-63d5-43a8-ad46-fb39e2cc8485 039d129f-9c75-4dea-ae1f-51b5f3e03a20 4b5e1841-8254-442e-b2de-e1e1de118644 cdc9a2e8-8e6b-47e8-b0d3-2d472d007802 11a4fef9-9e8f-45c4-a567-e2e680f3765c a95dbcbf-3415-4087-b7b8-bb092784c88e 11210abe-572f-429d-8be3-0a996d804fa0 589c98fd-0b29-4c6c-af31-e8f3b53ed6ce e9eee3ee-aac7-41c3-b4a8-85244e26f1b2 75e7a9c6-14f8-4807-8d78-37b35e4d8dd3 45f22c07-bee6-4cbd-8dbb-9e4667309d23 d1489ac5-2402-4559-8b1d-8047b701bd16 56ddb3f9-4c4d-4b69-bf2d-fd383f7123ad 2e0157a0-7905-401c-93a1-1df37d543f8b cfcff007-97ae-4ab8-8667-fe8937e1811c b77dfe37-5f94-4d83-b89d-2c0dc602e79d 6ee3647c-1436-45ce-92da-05b2ed0b8cd4 320d0cf7-a18c-4860-99b5-9ea021f36b27 43e34665-b3b4-4605-abdc-93b3317697ed a2abca0c-cba4-465e-895c-745e70327861 9467af28-4230-4cf2-97c9-d47be9e7e226 0cc86ada-600b-4103-9ffb-ecec793de91d 99cf7b10-ce52-4894-9694-3a7dbaaaf4a3 d4592614-2b48-46f7-b77e-1ffd345b3ec4 bb2f32f0-2e92-40f1-a302-29dfcd781d08 cf9bf7ed-2e57-452d-82c7-1623eb172a3d 4a5bf63e-0a87-4a9f-8b3d-a70007ec885c 5641dd04-359f-4321-991e-fe87053a3773 f6cd6c17-c3b2-41b1-9658-973ac8526219 83a645f2-b158-43bd-b5f9-fd50be753c2c 5635cb28-424e-4f0d-9d5f-2e2be6a50093 dc6dd349-3e05-49a9-ac38-a95c6300c2ff a143f457-0610-4657-9b5a-929489092fc5 47121739-21f8-4344-b819-46fe2a21f0d4 fbe1975a-7d6b-456b-b1b8-e7a863c75a5c 4e6f58d6-2af2-4f9a-a172-1dbd6a18b9ed 8eb43cf6-4c47-43c7-bac7-b06ce79ac53e 1a718b09-898c-45cc-8edb-95054c8e138d 707c295c-b100-4d06-b60a-6be13d5acd46 b8751126-b408-4b83-9fc5-4b432a0897a3 39fca5bc-48dd-486a-a7b4-96523ec6622e fd2beba1-b7e6-4ad5-94d8-6c7163e37c10 a509db4f-8025-45a7-a827-8eb604fedeb0 a6151a4b-8dec-476c-a015-14a1e4e4e821 0a3e87eb-9c25-4e65-9333-c99ee6dd2424 7a4e7b3f-e65e-403f-b480-d8cad975328b a9f20bc3-ac98-4ad0-b7df-4e0d7204e436 7b1d1a35-0744-4d57-8d3b-1f5a39273b74 f46732ba-7e49-4552-94ca-68ffaa8e50c6 dc38ea45-5075-4a9f-bb10-49a47052cee6 4c8f62e7-2d30-47b6-916f-639b639dcb3d a8d2c397-f691-44fa-aa73-f56ea40d5797 16f51b8a-77c3-40ff-9897-7008879e3e18 437245e0-f45a-47b3-a08e-f595c1ea71cc a165c6b1-4b4e-4f4c-9671-c92c1f66627c 637b4d10-919a-4d3f-9740-608bce7ee2ad 337d3d98-1e9c-4bae-b6ac-fa7367080e9a 9edb0f6b-2ffa-4832-b162-fa71bb644d7f 3c348a6d-6c5d-4a33-8c06-467968b9f157 d1635cc3-6584-43f6-9088-1688bf5e3fd8 31fc722a-d7f4-4af7-9947-6345fd4b62cd 364a3fc9-6e3a-486e-bfff-8aadacb982f4 c04d94ec-9a60-4a86-bf61-0ca906338f9a ad47d3ff-76d4-46c3-b78c-f583d81e4b7d ee2a2bbe-2d1c-4aa3-b68e-be91767b3ff2 3cf81e85-aaf3-415e-a0f5-fcd6166e4cca 609ededb-7000-4b1c-8c1e-64ec1158ac37 f1ebbbc9-b02c-41e8-81d4-c70c3879d304 fa9a6c9f-e908-4822-9042-d47a77017ecc 7565a923-77b2-45ae-9bc5-5b9a17339b3c c9cbf433-cc8b-40ce-95a3-eba2f88bc56e 96341b09-646d-4a81-8da7-39e4d72a58f0 dadce235-4749-40ae-b8cb-e2188c66c229 44aeeae6-df31-44d6-b6be-e0e88c2fbef6 12130cae-e39d-4b94-b1fd-9f33f477f1bc 972d8f49-8f55-4cef-8b4b-0035dff790be 02979b4e-765b-4d3e-8538-4f93831b27e5 45a7d8d1-efbf-48ce-a8f6-b5985e8c2182 8452dfaf-5af7-4e6a-b83a-dc7c12639bac 297e4101-8891-41cc-93bf-47c6ad65374b 87aee3fc-d2e1-4f19-b82e-d42fa88a5663 93de5ea9-b32c-42a2-9257-2067a75e51b4 688d3270-ed6f-4ea4-ad88-2e8c8927f9ff 9a015157-a5b6-4b8e-8df1-9dfd9cf5acfd 17ff6348-d285-431f-9554-c38894402c36 9dcb5307-52f3-421b-95fc-4bb946f82ce4 f68ee9d9-9af2-4c76-b1c2-537eb9bc0706 f7935944-f98a-4fa5-aee4-c5c6541d1b72 864ff604-8260-43fa-bec8-cbc3b62cc976 bdca9dce-9716-420d-970a-f065055d21f7 a1c6b80b-3f7a-4daf-a86a-673bc20b1d08 926a3193-02aa-44b3-a324-6b231cef29e3 cf1dc7e1-2418-40d5-974e-a5974b3e7270 1496b643-b7bc-4f37-948c-354fb27a54e2 bdc0a199-bfad-48b6-8cb5-90e2ec315c88 92f2e258-d501-4923-b7b9-4a9037f2ee74 ae029ca0-dad2-43df-b2ca-5756d631c388 7fc0c0c0-d4b5-48c9-9292-54c9dfb27f22 f21a0099-f263-44b0-8507-28b8f5e45532 45bbd701-8751-47ac-b832-0c63aefd679c 07ada7c7-7d58-4ac6-acae-049a55a32052 19252863-6738-4b8b-a9ec-15cf1f6df10e fd0174f7-13ad-494a-a77b-f2120b99b0f3 477d353e-fb46-4bec-bd93-9ca6eb034b67 a5ec8e5a-2df8-4a9c-ad9c-482915291646 a3e37bdf-5806-44c7-837d-e6eac4168233 ecd9c742-2b42-4976-ae13-3b7a8187c784 dd9cbed6-f34b-48dd-bb72-f62675e0f080 a89ee07a-19f7-463c-8ac8-95338cec1c70 0de4eb3f-293c-4b10-bfa5-ffb8367ccf8b 78ec6e14-7226-4eab-9c8d-accd385eb9fb 2f28adda-a760-4430-900d-28df2ba1a724 e67022d1-050f-4408-97a2-6cf3153b1d09 9ad988c0-d49c-4fb1-9581-e2a3ea60f978 d9dfaacd-5df7-4dab-934b-8d85068e6cbc e6e759cc-8df9-4626-81a7-828fe5e4ae48 81b38af8-5e17-4258-847c-4f759287c136 ea613fbf-504a-42a4-a41f-fad8241816c2 e476ef52-90ba-44e8-8f59-36996bb8750b f8f99fdb-6634-47bc-8083-07f39ee75642 71cfabdf-f39d-4227-9e9b-84b284a6b63f bdd05420-633f-4466-a8e5-9081cefb64d7 8ffde31d-aa9a-47ad-910a-4689dbb8f93c 35926660-533c-422d-9a9d-9ba47a159342 0efa8c82-9856-4921-a20f-97a7093bdd4e 739cded4-e8bd-4e4b-bf6a-44a0f1018483 7282970d-6631-4b1a-82b8-8da6b4d83546 005223f7-57bd-47f3-929e-47a0d96c47fb 5e9fbc64-75db-4ee4-b157-6b0e7dadf44a 842024f1-339d-4e70-bd3a-003996953574 177c3fac-be4c-4cc3-9e81-0588d6b7bfc4 77bc6e7b-aa50-49e8-ac4e-39e63c34e9b3 cc11bb55-d3c0-4c9b-bf14-c427f0b4df68 acc83843-ff95-44eb-862e-119e6271ecae 76170665-dacf-45c1-b937-4b3f1fe95bea 869169e2-edbb-422f-a5dd-b4e92793ad5a 60682602-2c02-4522-a569-3199f991d7f5 6f939e40-c27d-4fe7-b4f2-66bc014d8cf6 ae8ed831-816f-478c-a069-f2773e40a963 dad994a6-a219-4a94-bbcc-00fe1936b25b dccbd26b-9bf2-4ba5-8b8b-c693c2710012 d4b4227a-5c77-41c4-941c-c2406c285768 dd33b337-1926-478b-bd09-48091848df2a 5ff5d3e1-3799-4748-8b3c-26c37942eea9 79a090e9-8417-4043-b5e9-b36e381ad19a d60b5131-011c-4eda-bb8e-31bada026be6 475ff3b1-571d-4160-9ea2-dbfa5834da1c bb2c8aee-4b3d-4762-9b52-aade05a758c0 69ac7c71-2134-4971-a4e8-a69bc0d631ff 07de4265-c696-4963-b0bb-ca5b53f0ea93 70799a6e-6fd3-473d-bf9d-ff98247a8d1e d0eebea5-ab6f-42b0-aa05-ba9391e5e564 1c0d56db-0fc1-4dad-8877-69bb3b035ed9 d40b1188-6a5a-4416-a682-0c5c8e1c3e30 11722874-0d22-44d1-94ee-a50a5d312cf4 9f2065e9-c868-4c3d-bf65-ef2aff1f2bcc 88ecab2b-b058-430e-987e-3a2bddd884ef 8e82cf31-b4bc-47ac-83e1-26c68ce06844 a47a7f59-d686-477f-8d66-2f270904de88 52525373-08c4-42a4-a7ee-41118411dcd6 6f897c88-7349-4914-b213-5e53058ab277 e803951f-7a0e-49b1-8670-b11b1a9c9e21 7ac68891-48ac-4714-bbeb-637be18046f2 eac0e37e-a25f-4dd2-882b-73073514418d 9698bad4-e19a-41cf-bd38-01f6b191498b 6f99e7d7-819b-4a64-a99a-82e1ce5268b6 b132847e-e598-45e9-889f-d60aac5a56a1 3550087a-91d0-4be1-8898-493d93cc92b0 f324dbb3-5453-4f72-9450-dc1f87f0e21d 14253a5a-3ac1-4e67-97ff-045ee2d06807 208ff999-2bc8-4551-9d54-9daca3825e9f d471aecf-c71e-4a70-a485-f916b0a3817a afd660c8-aa23-466b-ad69-ec900241634b 7860735f-d482-458d-962a-c8d1dc473863 04d9a08d-b803-43c7-bf44-1f4115ef651e 6ca80635-76f6-46df-b130-a5c148bb9ac4 d85efa8d-cf9d-4299-b967-37c9ce50e6ad 79003488-0f9f-4b5d-bdb6-3cfab1579197 78ef1130-de08-42f7-86e7-932d35dffda4 23c39bcf-1108-47d7-a34e-1df114b89deb 435b10f0-06cc-45cd-bb0b-4273cbe64706 46e80006-3e16-479e-84fb-a3ab09e13a24 5d779a70-ac93-4f17-a504-3b6d2bfea522 050fc27b-48e7-4fe0-b296-bd1f3fffe647 3665e37b-ef41-4a2c-8bd4-899b3dd489c2 4f5b6047-722f-4403-a427-787377e4b269 8acfb0a0-996f-4ee5-8aab-c6c2a47ec79b f7b8b74b-4624-48ca-baf2-283caa1c9f4b 0e921aee-d0f4-4ec8-8608-5482a71fc004 169b5f6f-5d30-45f7-94fd-59bccb5d698e 9293f63c-5b6a-4fd9-ab4f-d244182f48a8 c754d44f-1846-40f8-a3a6-132fe2b5b8cc 747266dd-3e89-4e60-9eab-35b63ce2e751 18b6a3aa-51d4-450b-842c-c72a0bc5f599 24961c7e-4fd4-48b9-a9cf-1ea51706da5b 1ddc72aa-5f6b-4c95-bb35-6ac1d3f37e8a f5eea0cf-b4b7-4477-a131-176c58194204 abf370f9-b252-4533-a007-68f730c0c446 053ea09f-7a45-4697-a59c-6c47ae6f4e8a 72f52452-05f4-4501-a13f-9bee28280499 d0ac74eb-f319-4142-a6c8-18952d42e8e6 44201873-4fbd-419c-9d57-4987531802e9 d2966c9b-d388-43a0-8823-16b469b11060 aa5d96d1-5805-4df5-85a6-aecc1fdf5b19 869072b3-6427-4096-a5bc-2deb7c3dddb3 4064101d-ab21-42b5-898a-9afe3c22b91f 8ea66ff2-0dcf-4619-b9b8-f3739126d8eb 13a87ae9-4bc6-443e-b211-acc44e67d6af 772bae53-94ee-4700-ab17-fe66aca0c495 dbcbaf2a-d890-42d6-ad75-915836b16f3b 2b882152-6a05-4ec4-ae18-66c850f5eb26 0d033ee2-f2e6-409e-a624-c7391570e36c 3c9b7093-60c1-477b-84bc-cc7301c157c5 fa12d108-3864-4ccb-b080-a7e353179f80 7b008dd0-78e8-4b0e-8984-80cba7f6959c 3a11a5a7-7700-41b5-bfc3-ec00bfecdc26 7c283cf0-d307-434f-bf61-c96268a45f98 4d4246b2-9317-4efc-80a9-2f12d83ceb1f e45440d9-6314-46bc-bd98-205804051115 3ce47d17-38be-4f36-9477-7bc858d3fa9f 57410966-115c-467d-a5a9-e0508f028e6b f4e3ff35-f03c-454e-8c12-70baccd76509 67d48f7d-6939-41e8-b4bc-bc1731fa867b 6d8f7acc-3add-4882-86bf-d3dce48b6a25 5ad5f35b-ae2b-4efd-afdf-e41f9b23a910 b486f4c7-a5fb-4bef-8f44-26abf38d5633 3db22b39-9444-46e1-bd73-226654b06eaa 8fdc780f-a279-4cda-99ce-10e2e61be83e 661ede70-eaba-45b2-8c27-cdb47f9344b6 9e6d4bea-4864-46ce-951d-613d7fa742a0 ac1c7154-0004-43fb-a85d-842e7abcf06b 1fe74ed8-468f-4f28-b83d-63b29a57b061 c9e911d6-2654-413e-b4ab-348ad73851a0 0718db49-3c2b-40b6-b7a5-328469135d59 0b72a494-a2f8-4a8a-9a2e-a2b0528472f9 d04d8937-d45d-46e0-880a-ff0151de84e1 d70c7936-65b7-4f8a-b81a-3872cd4e53cd fc313ca9-3dc4-4371-9f50-74c62af102fd de5e3280-b3e0-4970-9d96-37cad7988582 3e45ec60-e50f-4c60-8e99-9369e3a2151f b518376f-c046-4d67-bd85-c3d79ba0e2a4 b4d77ea3-6d7a-4747-ae07-a45ce64ed1eb 76e00067-542b-4448-8003-b5f609e8d48b 7225aa86-a1d2-4308-b72e-0db47fc43c22 daf97492-b24a-4c70-9809-8297acb17009 ac4bed96-fcfe-44a8-a23a-c4f1b77a04b2 9da9d200-97c6-4948-85f8-a1d13026346f 9941de6d-4358-4187-9987-b5d97bb50270 7f181adf-9d6e-4300-ad10-e519ee62913c 7d5f4a3e-c076-4915-af66-6c0debb990dd aa55ff76-e7d4-48dd-8a54-3294d538df1d 6b681dba-2ec0-4eb7-927f-32b424e7f343 abc11e50-a9ed-494a-9a23-5f2a94783040 a4c6195f-da1f-474c-9a7a-f5e12b9f7aa9 1f085b84-51a5-4847-b85f-b96788aab90b d182019d-b3c6-4d80-b534-dd9e1c7295fc a228c272-0545-470e-970d-625e3db1dda6 119a32ba-3426-417d-b8a6-ca63db68b217 33c8cd67-b418-4b12-ac8b-f45a6fe011c4 b8e63458-d667-4bb0-90a3-a80bd5496902 1569be6d-eff6-4445-8cef-2b869a63bae4 0af4ed87-4a4c-41c6-8386-3c95f457d26a c8caf8ad-4d4a-4bdb-8840-fba800d0af4f 60e1527d-8452-461b-9346-e6b046e1aa00 c3c49e60-ddcd-430d-acca-f96c43bfad0f 57a7fe61-18b9-4a60-93a1-28bad249c57c 395f266e-457c-40dc-baf6-f8927a748b87 4b35a53e-208e-4dfb-8521-15601956f385 5ee19b32-ce79-47ca-bdfa-f3d87defb989 59fbe07b-9263-4741-b184-49cc20c453ac f6ceac70-d66b-43aa-8f57-03634604f6fd 2e2f11e1-b92a-44ac-a657-d644d98ed953 ee3e8d03-3b21-4b48-bc79-4ea79bf755c0 188a89f1-15f6-40bb-8f31-66654969c642 2fa00bbd-9001-404c-ac15-36e2754fb274 05449371-51e3-4e90-a1d8-7861721f9970 0dd31503-9490-4eea-981a-1f7a326218e8 a3670562-7151-49a2-aa94-409df9a5da9a 10e7e8db-739b-423a-a894-a489ce1aa552 df060951-c19e-40a0-af3c-3e08374f756c d86fcd75-74db-4d1e-aeec-b3d63850d767 57e2335e-2b65-4018-befe-121aae16ea99 43a09a30-2610-4be5-a155-142ec2ca32d6 a32ec6bf-b643-4d7a-9f8e-a301281e4d9e 0598a69f-62dc-47b2-92d7-56a6118e6d9a 27d214a3-3384-4cc9-a2bf-9a3ba4ff425d 4234e67e-429f-449d-947c-f9c0216cbe19 53712bdc-ae82-45b2-a281-52802d5079eb f087429a-cf42-48dc-a1ee-84bf8b8047fc e5cbf15e-d82b-4e3a-9338-aa3e0892c005 33251c13-c50e-4788-b452-ec347ce9a6c5 5cb05dff-60d9-4ce8-a095-f11fea8f18ce a83a0fc5-b7a3-4538-813b-ec41d912f53e 776d4a0e-b240-49fb-8f23-f687da5c7cd0 d11758a7-33e8-4b49-9295-bb725ecf4900 06c19ecf-aba2-413a-9424-1ad95a0e78b4 f827684c-8c23-442d-8d60-3191a98bb07a 0c682632-29bb-4174-a9d2-6b3e11dd5601 db9698de-4af0-4cd0-80a3-3321c5673e56 662b2b52-1605-4eda-a843-dfa396e1df4b a517ce90-c805-4e5e-ab24-dc1788d6b206 83aa1b81-9dad-4604-88e7-51df5b3994e0 8c7787a8-b47e-44e4-9790-ad48a1909466 5716442c-e492-498a-9fe7-dcec89860699 6a60417a-e300-4690-b033-69a9ceca4c10 12e76939-6990-4ebe-958e-207289fabc87 76da9222-6328-4537-ba28-bb0813772be9 be8c74d5-aad4-42a3-85d5-158131720c43 aacfdae1-ad4f-41a1-b9bc-0347fafcfaaa 388c82d0-8838-42e8-9a3a-57ad2442749d fcb3546d-8732-4e79-ba66-629efbd22b3b 709e02b8-c082-4fa5-8a1f-21f319a101be c6490638-a382-445b-92f2-d88ae79471d6 73f9eeb6-8b6f-4df7-a266-07b7d816d470 91c1d6c5-3dba-4e1a-9b48-9eec9633ff79 27950064-3bec-4376-9edd-ed1b2f24e5da 470f8804-7880-4c89-bf85-40b5183554dc 8304fd0b-1e75-42ae-b592-d7feb7bcf776 56737ae8-1c25-4702-a774-7ca66d571c7a be21e086-f7dd-46cd-9392-8da238e351cb 4b7b0cf8-c866-4bf2-b079-093561a25052 2c378edd-448e-4204-9468-c30db17548c8 41f4d2f1-c68e-4cc2-83d8-0f7e6c744f83 c4f12949-916d-447f-a390-9129baca2b48 c32ed3e6-0cef-437f-a124-c59da8dd4ded f152a002-0155-4fb1-b37c-f043676d90a6 f15680bf-47ab-46da-8ad8-b24ddc8786e0 7e46ed55-e688-462b-9a3d-fafe5252ca56 2c7d92a2-0013-41c4-a94e-a9a9521c8f4d 9a85bce1-6faf-484d-9a34-6b3236bda0aa d22ec3e5-8442-4a1d-bbb9-76997cc63e00 7c1b796f-e364-42a3-b143-5f70b3bf3e29 0ab9fc96-9b7a-45cd-92af-072aa535ef78 95e791a4-8431-4c54-bd5b-93b8cbd58a1b 0163b1ec-a214-4e1c-b4db-952d0e66195e b2f9561f-7ab8-4e97-81a7-b55fea035e1e 0021ee50-9145-46cf-a60b-8253b26d7ea2 7a107d0c-f559-44aa-b3d6-130a9dcf177a 6941b0e1-d798-444f-9ebd-9d096048616d 6c126fb1-2e61-4de3-bf2e-275d6f776824 7657583c-dae8-430c-a05c-7222e1e79f6c 50833ed4-8979-4f43-a833-eafd2b932ea0 a43d62ca-dd2e-4a66-8092-60adb37a56cc b2b9eedc-9e22-473d-b9e3-c0ebe8eefd42 bc8de007-a9dd-446f-8dfd-e467b74f4e22 7ad72dc5-784d-462c-b6ae-7587fc16002b 1bc595f0-893a-4b84-aa09-20718bbe8716 f47abe53-6401-443a-ba35-92e1eeede89f f2a31b5a-74da-42df-a53f-70c8bc8fcfb9 031a6d20-9ec3-41a8-9afa-f33e2a25676f 0a5d868b-cdad-49b1-b9d8-797b58ee6926 0e9a7f6e-cedf-459a-9de1-0dc60c92003a 7ec067bd-7c07-4219-a695-720796ed28d8 15befb6c-c750-410f-97e6-5af0c41f65e4 2fab8e05-f930-4608-9f60-192af8fed303 ec08e799-028e-4f60-b7c0-6a40e7d79d94 13b40c52-743c-4d79-9da0-f2c2d3ae8c1b 9c028350-af1d-4a60-8056-36f8e3055bb9 81e9fe43-1edb-485f-8761-c45af9a6b80f f5fd598a-fcee-4794-8788-fff9dc5b7a8d bb6971f5-8321-48ad-aaf3-d325b2b1451c 125e8e11-2034-41a3-bdfe-d4f3b9f37330 88da9f49-1847-484f-aeca-5548163c39ea a5c51699-7621-437d-ba81-b541cbf67dbc e772e17a-e64d-43fb-8149-cb17009751bf 22f589e2-7cb7-430d-8555-5f71b60686eb 55c656e9-addd-4eb9-9707-3dcaf9ef8f49 6d7a65b0-b3b3-430d-b5a7-89f7cc70bf65 41d06bb9-79e6-4d13-be8f-5752b67cb485 a03c8af3-b6f0-46ce-babd-705232e30ea4 c78e91e8-9c87-4e8e-94ac-cc6d61ef4b03 0fba450e-eb25-4775-842b-ad24db260db0 c3f4b9ef-0822-4cb9-ad0b-ffcf6672af54 2f624cd6-10d6-4f2c-83df-39a4c6d78ba0 f2838781-17c2-4630-918b-ba2ac0bd26f7 d76071b8-329c-40bd-bc55-af23c7449084 bfe6d711-b27e-4f7c-9413-f330909d991c 63cd7232-b622-49c1-8ba5-ed79ab6b2ca3 e5b291ea-adae-4fe1-8a53-391beeb18b7f c8e6621a-ca48-490f-9094-59c6f66fb531 c118524a-3a41-41bf-b64f-e6a995db9146 07af72b6-2a0e-4af4-be37-5a56e669be53 8263b5fb-feea-4bed-81cb-2612557631c0 d218ed3c-1358-441f-8def-3c4ca7def5d9 095cd873-a56e-43ae-b745-b1f6c9a67812 d39f3341-b750-425c-be52-12af540fba9b dac00eea-8f04-4de7-a0d8-f35e911df4be 44e68fa6-6386-4850-8d3d-e1ba51c10990 7d0773ac-477e-42f7-8f75-fbedf2fb5c25 f929c3e4-4193-427e-941a-0147fd9fbfb6 66396b60-4fc0-48eb-9e2a-eea0c188b378 23ee1b5c-4d30-464a-850f-d837a5aa826c 59fcdca3-5d64-4256-a123-5cd4af309939 d9ab2b70-1eb5-4814-8476-32ecb5928161 bfabf181-e2d7-42ed-9914-50a3b0477ff1 95513f6a-7b0b-4af0-b81c-ca3085704717 4471c12d-a02c-4b86-a3b3-9cb7e8b46f55 a21ef1d0-a8a4-44cf-9849-1fe53c4125b2 ce3506dc-9303-4d87-a554-74d5cf43542a b40e67b5-18a8-458c-a82f-95cee3d81f0d e747c35c-da9a-4694-beeb-baa89ec78753 3c17cfb5-b1e2-4f68-8c7e-6f58aaad6f34 70e76a20-e1a8-46d8-89e9-f60ae996ee5c 3a1ed065-7c5c-490c-8ee0-0387b59d4d78 02f241c8-21a1-4343-b412-53fc84eec8d3 6d6c6106-24c7-4cac-af43-28195a5f2aaf 9511c5f6-5069-44f0-a0a6-3cd1cfdfca78 8303380b-4d08-4763-b4e1-e14b81599552 ebc7087d-6eff-40f9-b0a9-076aa0a2ef02 811a3f56-5621-4a0c-95bb-9f293d019661 4651f1d2-5edf-49a2-8d72-c9410c3d01c2 d5c34836-39e8-4f2f-9c88-5596fa88bbf8 30b13fcb-0449-4356-9059-7060a83b2c27 755595b6-a9e3-4acc-9886-24d5363f4240 3547e27c-01b6-4fa6-b0c8-89df3464f38f 2e37e00c-83cf-42e8-bab7-67057bb89b35 25c2a395-8e0e-4da8-97b3-eaf46566d195 29abf833-2365-4d8e-91ff-aac747846fed 719144cb-2517-484e-84fc-422aa4e047ad 7c20b6ae-f383-4d44-81b4-7ef7be804141 3d7ba81a-2a66-46e8-a208-31e103475c04 4dcdd6bf-71b2-43fd-acc9-8ad49dda8c31 31e61f8f-a56c-4800-b2b9-ed5e720d5f05 06eb7b09-3662-4260-8002-bbec835190b5 4f69349e-e15e-403c-aef0-8fa05db42cd5 569986a9-e904-4099-9b09-88d8603bb60d 084d68b0-2ee7-48c7-a08e-c3742953d373 f3427962-289b-4490-9688-9d0a4761ec2f 937aa107-eeed-4c7b-b7b2-78b4871c3c56 2e7aaa86-0d45-4613-ad39-17ad37572297 68b04bfc-958d-4a7e-b43c-cb729ce5c545 d5771d12-f51e-49c8-9b3d-24e279e450c7 73a78174-ceaa-43af-a3e9-11fd6d1678cc 046aeaf6-e589-4632-b4e5-a2975e5a3a32 cfce61f4-d4d6-4690-9a1c-7c9a7be9363f f302b14c-ad68-4172-b98f-4f4d5ad997d2 67d92adc-e7c5-47b2-bbe1-eef2b69e8a0a f53da688-01fe-484d-9cb0-10cf5033050d 12fbaa3d-bb50-4837-a79e-02baad8abb53 8f9bc632-ce2d-479d-af6a-4b06c75affa2 ae1c4fc7-baa2-4086-8e27-71bc1a69a480 1de15423-9348-410e-9552-9d741ef3c680 3d9bb44a-386c-4b11-af2a-c0015fff7103 93311d35-7780-4601-a450-9403ce31afdb c8d810ba-db0d-4c5b-9b1a-f3a6426ecb50 b2dadbcf-ef6c-4004-8f86-23971fa63ff6 6805fa5f-c93b-4589-b153-841210196d6a d15a7cfd-8dfb-4311-a154-f4cb871c8e03 d4246a5f-5363-4f12-9eef-cef31c4d7280 ea33212b-bb6c-410a-a9b2-b676af6c9f3b abb8951f-482d-49f1-9e39-14ea3ffe8055 efb22192-8107-4ada-9981-5b37a52f1f41 622b2b2a-b220-4b17-ba47-5cef5a23fc5c 07307621-9f70-43b1-8339-5f5f4b40b762 291c7523-4cb5-4909-83c6-fe7233184ef0 38e75c5b-c840-43fc-a23a-f5c4e903605a 6ec72678-dd95-49db-b3da-d65b39c605a8 02329579-371e-45b7-b97b-e7bd125208ab b74e927b-0334-4ddc-a17e-83b8d889634c 0e2ac0ab-89a6-473f-bfbb-4ae91ff31da1 3247d38d-cc9a-43bb-956a-b59b46f9b270 58665011-353e-46f9-8b86-1d86127b6543 7104b3f2-4e68-421b-8aff-14c94d2c2063 47585775-b8c4-4d0e-9933-e013b588281a f23e6804-f291-45bd-adc7-57f2915681a0 9822a520-8743-41e4-893e-416332f25e09 a177bb16-ea68-42e1-9b74-12ddd94c4edb 88c45110-f15e-4dcf-853e-bd83b580d3e7 fc9f79ff-eaaf-41bd-80ec-71a8a39e848a fa607a9d-2998-4b12-868e-d339a499ae46 44f79710-a149-43b2-9b11-3d08c2c8babd 48c49f8e-b8c8-4c11-bfbe-6d6e6e49c7c5 8cb1a840-69be-4e85-bcf9-c3e87728ab3e 7fa3b5f4-8287-493b-9cd2-31a46ee30a32 4b7d3510-92d8-4689-85c8-66bcbe4befa4 26556f1e-e517-42b1-a3f9-2d4b2e8e065b e3beb0bb-cb22-4e16-ac8f-c2e6197199fc f074500c-9536-4708-ad66-662022818e19 ec4afb2a-558b-4153-8fcd-c9c521133216 8acdc8c1-67a1-4b60-96a4-35f0a3dbc651 4fe891ef-b6ae-4cff-b9e8-20abc52d8f53 1ea327a6-c5b7-488c-ad90-c4467bcd9402 91ea7775-5f81-4ec6-ab45-628568d55970 819415bf-2111-4430-a214-a14410e6407e a0be5ce8-ab26-45e6-a26c-0eefd2e6f72a ace0991b-00c2-4d5b-800f-ac23be14adff 4cbfb543-d501-4d89-9e14-b8c9578bc548 ac80a0bc-99d9-46f2-bb7b-9710914c1206 f65bf7cc-4f2b-4e0e-837d-4c8597c27153 20fa8ceb-f3f8-4181-829d-a4bb4418e31f 0bc4cf9f-4114-4363-8c59-f7736234742b abbbdcd1-8692-4c67-b1e0-914cc74898c1 e6b908b2-a1c9-4e25-88ee-7cb0dc362d16 bbee40d0-8483-4786-a12d-3d5887740563 2b527e3a-39fe-4604-9abc-b69874dfadb6 58325eff-648c-4399-b0db-4be825ded3ed 351441f7-7237-4d43-95bd-8b966dae4575 b7dd44f2-5581-429b-9361-7fb746ca571f 36a20990-5c9c-40fa-aca2-ce1f992a8e7b 642191c1-c6fd-41c5-b3ef-f8468420d3f2 ae29af1f-6498-43d1-b96a-9ebc55118868 25b5bb93-b9fb-4c78-8809-3b7843a0ee61 8a02b2c3-8a12-4005-9b63-d7bd14b8d9fb 64f52ade-8696-48f5-9e52-2db0ec450b36 e85a75af-b19e-4cc4-9f0b-a8c3f330a95c 7e9d90a3-e30c-499d-97ec-90b1aadc62b7 58491657-eee4-4c1f-95b8-1fd284a9ce7c f85bd040-51b7-44d7-a92a-51fd7afaa025 91bc9a23-33b1-4eb6-8e25-a53d49a41ec7 280f95d5-a327-48db-a5e9-4f97e6fcf17a e20a2193-ac28-49a7-9fe3-67167f1f15fa f2a9aa1e-ebae-4c9d-97ab-c58dd87de262 3e105724-4113-4f99-9545-8ef87f9423a4 183c04ce-0434-4f1b-bdde-d90daf4771ec 1a0dd6af-f46a-45fa-a331-70fe7bc8d4da 905b9da4-2e7e-4b68-9cf7-406003583f28 869192f3-ecf8-4a1e-88f0-a6f9c6afb7d3 16bc200f-32dd-4890-87aa-69dc16b69182 c14ecea2-7460-4560-962b-00ca91a39eaa b54714eb-0871-415e-9782-7e61eb56780d b6a453a0-22ef-4810-bbef-d15ca5e9f8ea 22a02a6e-bae5-4420-be8c-a9fc074b4a70 6c0690f5-4684-4b42-9f7d-dbe269f56710 01747f9a-1874-4d2b-805b-a2f716410568 8e7ced95-7d5e-45d0-9b2c-b75af11a7e70 56a3c786-02c1-4602-9be3-d078cbd0a4f6 bb11adc0-e240-4afc-a3f8-a6c0919161a7 277230e2-1248-4be2-a5e5-5d3583564bc9 3eb4260d-1747-48f4-a7ee-214acc3654d6 ed3afa22-0a0c-4020-8066-28db0175b873 2636b7d2-2140-4ffe-b9d9-641969e966d4 af36182a-3a5d-4887-a7e4-9685d9a4b8a7 00e485de-2b9e-4bd6-b23b-adc7cc45bdca 1f04f3ff-64c5-4904-a1e3-4a38cce823fd 20a987fc-b03d-4246-8842-c4c36c43e177 40aa46d4-c9ef-4f2a-b05f-6beb8b51929d c8b94fc9-0ff7-48ec-b5f1-61451c6a8adb 57545e65-755e-43ec-b8e8-3a6f0a176b5b 3b9e9322-b7ef-4727-8de8-6bb3b9b10e71 723b218d-407d-43fe-8c1a-d336e5fdec10 012ce0a9-a3cb-447b-9ac9-b61194a537d4 69353b4a-9171-4ef7-b133-d5558bab38f5 df8bdfb0-7b5f-4052-baeb-b200b80cf13f d664166c-3319-4350-8755-6a04089b96e5 29823b1f-ec81-4fd0-9921-0a7c58711756 11d1f37d-f43a-4bc6-a412-b6683f826b3c a9f3bd10-34fb-47c7-9488-9c887ffcdeac d4beb199-b5d2-4efd-b3c9-efe0f15b4eea e8bbe599-00db-4330-92cd-ce75691db827 4d0595b2-c292-4f39-b18b-bd745f1001c1 2948d124-b962-45c9-94ff-91c4b253e500 d2e89004-50de-4eec-9ce8-67da620a9ad7 07eb1691-b063-49bd-8eb9-97f5a0c4f634 9cbedb0a-2790-492c-a222-9e1c12edf5d8 11fb7062-82ea-4e0e-b808-3d965d0d04ff 699c8ddb-91ea-43e6-852f-50f32241eb30 4439591d-0d39-427c-a205-920d05ff7385 c87739f6-b718-406c-8bd8-46fe534fcb47 32395c18-8395-4e17-9fa1-0de8ffb0eb83 ea09ae8b-e03f-4934-b634-c11c1ad284db d67cc840-06e9-4af5-8728-06ddd576c367 4aab74d2-edc0-4de6-a629-cd58f19d5092 93dfb27a-523c-4c95-bb70-215e534ee7aa df60470c-cbdf-4bcb-933c-18c5db7a3716 3a300c8e-0580-4fa8-8ac1-888a91b83963 c49d9bc3-6172-4220-8fa0-7831c04bc0d3 a3e1e9b3-1b2f-47ea-a742-7b56b83c6881 58dd122d-3877-4b84-a68e-b2108c72cd2e bbf99702-f999-47ac-b22e-9b504799aeb1 ee52ce11-3db2-47a5-9348-6c86fdbabfd6 4398f9b0-650b-472b-828d-3382fdfc7f7e cb884c1a-6b22-4ae6-b13b-aa372615b21f 611db9f2-5294-4bb2-b5ff-94b7b4a49cde 764abc6f-900f-4eea-bf3f-de2972c5f89a 7fe92539-9bf9-488a-bdd7-2b5c4b954735 5046db3f-039e-4c56-9be1-7813a6a335b8 10c1d8bc-54c5-43e2-83f5-6b7f3eb7d3e6 335f3cda-536b-4e3a-a167-445f3169b7f6 af57d38c-6e33-415b-9e1a-a2729a11b071 d7cd4a97-778c-4827-a505-e97a1e33e239 477b5d60-6599-43a0-9804-1033188b4998 0cef3376-1e7f-4b70-be0c-ded14ff01b7a 12883be5-280f-4a0b-a3d3-6e9957399696 de2daf3b-7fb5-4c8a-923e-a85cfeb38029 387666f4-6018-4790-bfc6-dead3acfca2c 47fd7772-e343-4088-92d7-18db2332fc2d 5498c366-390f-4d08-88be-b8ff40d9453c a265bbcb-f6c8-4b6e-a80f-a988e8bd3e66 815177ed-4361-450f-b3aa-429c05757f07 ebdb3ff7-75a9-4df3-8d1a-fa827e6ad797 55ef8c66-44a1-41ac-a7ae-58a8ede0e2e5 38054cd6-6413-46bb-bfa0-4d963624b7cb 2220247d-cf48-4803-95bb-8c714535c19f d7145860-fe3a-485d-b2de-29c7e36f7a24 bc961136-a684-479a-ba25-b15256ce98d5 6419da53-7f12-4da9-a997-a5b1f4eb94d3 ccbfb4bd-31cd-4510-aa1f-81b09768d0b0 a725dd4d-51e8-4eb1-aa72-c33719b3e42e f56a6fb3-7a9b-4a1e-ae95-fc0fce3aee46 89d093e2-da34-4c24-9efb-c1f95a8e7fa5 edfc981f-dfa6-4a18-946b-fc1376dafb61 7216cd48-5e33-4aad-a66f-d2404f88c203 30223944-960b-43c9-bf36-65aea2fb0785 e693b56f-7ed8-4ba5-8447-34902ce4e072 46d626d1-6dd5-4bb6-a1c5-171cceb1544f 66ccd30e-cf10-4fed-b784-a9a02cc9fedc 02ff7761-3836-46de-8585-f4ded502e93a 2a3e8da6-0db2-49ed-b3af-915894e91f92 09aab563-3b9f-42ab-b788-dd7c2cf588fb b2911ecf-d548-4163-9f85-dae1788a7454 97c42359-71df-405b-bcb4-7b7e69dc6b0c 4309884d-d1f6-40f0-bd86-3d9a3fa06c09 6099f20c-64df-4b97-8835-a0449464834f 32351e15-b430-465c-ba55-6f87b7e2bc60 9a018422-eddc-4e95-89a3-82d08f537cc5 3bfc4bf6-347e-4591-b3e9-3cd36b145e3b dccac02d-04ed-465b-8983-8415cdfafdda 05a381bd-25ac-4951-bd56-35758a093803 24df8f70-3e75-477c-b279-bf6e7dcdb98c 4779a241-ff72-4639-861f-f10b2342c8fa f28963df-ad82-4abd-87ae-4255c009067c f27ddda8-6c03-4df4-8d34-34f5e2002793 fc937d51-fd3c-41ef-b771-c5a07700b97e 2b4f0ec1-95d6-47e0-8e1e-4e77ddb5d65c c04e653c-5a5e-4765-aea0-a9919efd4126 7cc32d20-a828-4157-af62-7114eb2ea7ba 0135f2dc-f886-4aa4-b1fc-5e2c0dbead33 db3c610c-e5db-4b4a-a205-ca9500edd0d5 efc94068-a2ca-42c9-a1f9-2ba03a99d0b8 af15ff3b-93d0-4f08-9722-3549d1d08e93 b7145cec-622f-4dd5-8f77-85712aa217ad 77420163-6709-452b-9032-6e4f9cb54c3c 5f9a6c0d-faef-49c3-ac2a-a9ec54d31e85 1a060a42-e434-43d7-9c59-14c3d4d44b38 60d0969a-9284-4e86-b61c-e1745ae03ce0 e9fbbbb7-be2e-41db-b9dc-989482bb8be8 1599e9c3-839e-4f52-a9c9-f82a7d397b1a 5fb9fa0e-51a5-4367-941d-ad45d58290a8 883ade78-015a-4b30-8760-fd691f6649ce dea1ed7a-22ee-4538-83a0-0063ad0688a8 3a40035b-5dd8-44f5-9d5b-ef26f83f8fdf 4ed76484-3e34-4379-9d07-e573bc1d4990 adf22bd2-6b2d-42a7-af53-cfe2cb654062 a433d83e-b697-4ab8-9b03-86790e0b4b64 bb03d88d-1b49-47bb-9a5c-b81e92757031 b4e80f9c-1882-4ad9-94c9-3ff33f837959 f675228a-c0e7-4535-96f0-c4cc37f0e11f 61ef9818-d344-40d8-8885-9c0e5c23635e 573ef7f5-c229-459c-a1d2-b0a09035a9c5 8aca4766-6a30-4b2f-9585-f29a1739d0b1 fff4b85c-4ed1-4044-8faf-c2ce547f6f5d 3b0c6f59-2c40-4015-ad95-43b76501ac09 cfb2ee08-2da4-468c-bd95-09b579efe1f2 20d3fb11-4f37-4704-8903-7e33eb49c623 88333924-bb80-43d4-a372-3638d6278e9e 3652d13d-09c7-4795-8792-4cf2322b07ac 326bde62-7697-4597-a8cb-7ca7fd9e18fb fa3cd705-0fb1-42b9-b745-e3afb2a20dd9 88300171-4ed4-4b50-b9e0-4d72528d25d6 70be711a-e76e-41d4-bccc-684601d782be 8e87e2f7-cf37-442a-888f-a35e30a7987a f39a0282-8c36-4592-bc91-164927f6198b a48f8419-4ed4-4eba-bdbd-3c47040f987a f03d8efe-81e6-4316-bc2f-01e9b3c1117b 75f3144b-2ebf-4df7-8b2e-5dc568a9d438 a206ab83-8b29-42be-824e-c1c119615c9d 174b225e-c060-4502-9412-97b3850c53c8 8e3d64c4-e97c-46e5-958c-f87ef18ebe4e 9794c773-0bb2-4bb8-8f5b-1e131a569a01 a6560ae5-4e09-40bb-97e8-5bb68e803a12 c8f01b4d-5ce9-456b-87e0-2d962ed2b7b0 91229e28-89a0-4c5b-b0bc-99cfd106b384 fe68ecb9-0447-4a01-ad52-c1fdf2c2ec84 ff6776f0-aeb0-47eb-8711-1f20f96fae2e da6b1257-79f8-47bc-9ce1-7a6fad58da25 5bf49559-deaf-4e1a-b8ca-b2f54c161466 0165b316-f14a-4cad-8fc4-1f5ef608ec5c f9e521a4-c5f0-463a-ad01-ee1d02825cab abaf2deb-1d3e-450d-977b-ee5a5cd85962 a23cbecf-2843-4200-ad19-d9d680d13c69 79a247c3-60bf-422f-99f8-d62febba01b3 74532aae-04d6-4705-adad-eff3df921e34 4485182d-f0da-4dea-a0f7-515a892dcb54 cc8764ad-c9f4-4fcd-9e85-4ec59604b15b 285a91c1-44b8-45d9-9c5f-a7850aac2f32 0cd0e4fc-e8f1-4e96-a02a-8ef104579ab8 286d0125-ca57-4aa9-bac2-a7036b114961 d040edc8-3832-4e13-bd53-bf1078952a5f 8d39f376-f631-4510-b37d-72c2d7e93309 f3ecb9fb-0028-414d-8d6e-0befb08b804f 2ed102eb-2e7f-465e-b5e0-aae61720c607 252147c2-4c00-4d37-82c2-c49320dddb08 206a7948-1a20-4057-a71f-1632e5fd7b08 76177475-0761-4a42-a79e-67297787d1b5 58748437-6ba3-40f9-8e19-37cb89c8efea f0de1022-3027-41b2-8443-7c5a395e2570 cb1f7107-4a57-433b-89df-9c5906120af7 ddbe2164-03cb-4fdc-b58c-01c96248cfc3 06ff8c5b-9b7b-4096-a82c-533d0c91c1e2 1b8a8ea2-2a98-471f-90c1-a5319c3120f4 afb6665e-eaa7-4e23-978b-63275f96beba 24f0749c-9c7f-4f81-beab-26736119974c 1fdacaa1-9ee1-4ca0-b236-60edc662f686 f15ef551-bea2-4710-b129-03575230cb18 2434db87-050f-42bf-99d0-4684a1926a41 cfc72d86-423a-4c86-912f-d8c94b5053e5 05b1cb3f-5f54-4cb6-adfa-e4281a349c4f a2ca0cdd-cbff-4f64-b476-b1c09efbd1aa 9142de49-6837-4a63-9a45-fcd3751f8f33 b3f00a87-8054-4c8f-8900-10ba29204497 6f62c8be-0e8c-41f2-ae44-82aa321538d2 f8d0bdf2-2463-4653-ac02-8c7c43a90baa d0f1315f-077a-492b-a189-0b558d9c724a cf6bff12-fc4d-49cd-8c61-bad2ac016282 e89c33b7-f717-4570-9156-83425860e9d4 88196679-a2bf-4f93-8160-697276e903e3 6ce26d16-d90f-4c6b-8333-5dfda9edeae9 4255e14d-83ea-4906-81b3-a722e62e8bdb 3e303a26-d776-4be8-a4a9-a43713584a0c ab19975a-f4e3-4992-9f22-0ae4edf1d9f5 4344e871-6d13-4bf1-9059-1f3f8f5808c5 f8e228ae-b11f-4fc0-a487-130d62ffe6fb 87ecbf23-8781-4aa9-8df7-75a5d5ee9711 02d2b1b5-a9a6-44db-a1d1-8616dd0b9bdb 8079531b-e884-4054-9bc6-322f3c66e69c 7647e570-1843-4ce9-a2c3-b236ce5acc22 91340d40-0c46-473b-aad3-a5f86e156136 6c4007b2-dbde-4a18-b29f-76c8706060e4 71375fec-d70a-47b9-a2e9-6a5e5453bb07 7b964c59-2daa-4c81-b848-061100a324f7 2f68f48b-9e22-43c3-b107-dca47ebfa59c b4abd303-fb2c-45bb-9453-364e5125c2c0 e85b7638-0fce-42c8-b8ab-44b8f1fa6bea 1601707e-e346-4007-8b74-8b5443ffa01f 7fe97542-ba87-494c-b991-3e1351a6c1f8 9dc1eff2-a89a-4ca2-ab90-15f13d143d7f 824659ef-2ac2-4399-8c9c-8c95458354c2 ab837e53-db48-42f7-b9ba-e43c9636a3a5 c2d159cd-7250-4636-bba6-a8a8c411cafc 31188d33-d4c0-4262-8f3a-adf3a788e362 908d1d40-e620-424e-9c54-2644bc82fbf6 1210a2f7-5317-4c81-9674-76eaac917540 34356f76-4eda-4e04-bfcf-9cc9579d6558 8e6dc349-0e8a-461d-b578-f1eb2fbecb92 6697f713-e9e5-49c4-bc69-290f29f4518b bd72be59-9441-4841-ad9c-1faab2a1b2d9 6ffc7b0a-bfb1-4ebc-b4bf-4b113a0628fc a615bbf1-ddfd-47f1-836b-dbda33d6752b 32f9292c-a54d-4a76-be58-2d81e78031fc be5e9338-82b2-4f9a-a93f-e085ea15d5f8 dfe09bae-a98b-405a-a04d-f1996cadcadb 551c6fb5-3b37-4d9f-94aa-71eea258fbfd 9943cecb-5f4a-424f-8a9e-55dc2eaaa689 8abcdd6c-fcab-402f-9e69-c05e766e9b78 9ff8353c-18f0-4743-b1f6-42fb6c90ca5c fcc1a40a-31a9-46bb-945e-6611e7b825df 604ccfd3-b4cc-4a0b-b137-bd826a6aae37 2a3d1bd6-fd09-43fa-a362-cb98997ecdcc ae64c76a-e5a4-4fe5-9951-bdf936ca39cc c44721e9-0c07-4565-9343-36870a660a11 40c71adf-d9dd-4a50-9dc5-8200dc955f89 6de3f7c4-0856-4913-9f57-578795dabf6b 9271f85d-1a96-4c89-b45c-fa4da9b54dea 24f7337d-a39e-4a84-9a6b-411d94cd78bd 8dba064e-2e3e-4fb3-ac73-635fb357118e 6868b63a-ffea-4ddc-85e4-4c82206fd527 58299926-4b72-42fc-ba02-cc41d7313cf3 055c0c30-3f5e-4fc2-a138-c6d3fd22010c 0c5d2ed8-1374-4fd5-ba4f-857c7c2a21a0 b7bc063e-59e3-4ef6-a44e-3c4d4cb6f8ff 1babaf53-cebe-425d-b20b-145c80fd5193 ced502ae-d1c8-4a6b-b3e7-d3d5d4f169ae 29a4c8b3-dda6-49b8-93ba-49aace7f2080 c6b624df-7ecf-4c77-823b-2761515ba2e7 7d08e671-ad81-4e6b-8726-ba481476963c 09ab3080-fe99-43af-997a-c5214ae17f46 7647c0c6-e612-4814-b08a-34ffe7427c4f b48d9922-6e6d-48e1-b80d-a0f32b146f09 26902f4d-391d-4c3e-aadd-c2f9bc26903d d15d8019-4fdf-4449-b155-466091971d5f b4509bc4-6f03-48dd-a2a8-96c4591c1fef b6cd6d46-a9f5-4a87-a7c5-ae9448e2452d 66b7ce40-f68b-42f3-950c-f70afc78e206 422d0f60-56d0-4891-ac2d-a539d0411270 ee87f943-f7c4-4093-8945-a69d3c41f68b baf60665-51ce-4354-b560-6dbc6f94a23f 17d81779-0635-48eb-96a4-e12f1396e790 0a9af4cd-bb12-4d7a-b409-14e6184bc103 ca4bc29b-52ed-4cd9-acf2-86fa732655f3 31168134-7ab3-4e95-aa1a-1ed8a6380c1f 690129a4-fc7b-4947-aee8-355833f09a69 261b56c4-36d2-45fa-adbb-40400d5dd6ba 65e5909a-be6f-406a-bc74-24644c7dda1c 8ef7f22f-dd27-4466-bc0c-86011c63d9e4 749b949f-3a82-40dc-9bd8-53967602fa92 df0ad06c-25de-4eaf-bf9f-09a5524aecef 3fb312de-bdc0-4bb8-8fed-dc6fba99ed3f c30c295c-ba05-41eb-974b-4750450b944b f0b2cb01-b2e8-4b59-8628-65a1cdf79b38 07192613-4eca-447c-9ad6-891b6773e31a 84e17102-4649-4c52-8c6c-44a1a44bb86f 8ff6271d-01c1-41a8-a8a0-b32ebc84e6b2 b2c48440-014a-4434-a522-047ba027029f 1a3c9d2d-e770-4d8f-84fb-92b75b0ad30c b4d8ed3b-0109-4841-843c-080fe93efe4a bdd40c8d-5597-4e52-8d73-3ceaf0c5d75f 54df45e0-34ba-4528-8bd5-130254fac473 0693b884-40e6-4691-a1ef-e8dad0e27965 5f4145eb-d5c6-4cfe-a13a-d03009a32d2c 4f314485-f75f-4b5f-9961-c9b0a5c868eb 46048ac9-8b80-4853-b067-cee02b7210c8 26bd4f7b-91f1-40b0-b053-c24e9785b544 e6cff4b4-6636-4164-b936-5be48f449494 e81506fb-3fe1-4999-806f-675f2a38b755 da42a838-b62f-4516-bf14-04801522711a ec79fba4-5468-44c8-b39a-0fe2113bb5b6 a9865fd8-be4b-414c-8307-f5971ad4af3f 33085023-0019-499b-b30a-f5d0e2416960 811b7ec1-3c37-46af-8055-723900923f53 95104f10-3d4d-4181-bc59-7ce4b972c659 a147169c-6b3b-4f95-abac-d2fc70c8b487 ca3fc249-ae0a-4eaf-8fe6-e47fc9a60721 b0830132-027c-4a86-aac1-e135e58c05d4 cef88385-6549-475d-8b95-fcbffafcba6b c5483dba-7aca-48ab-9bf7-138274233ef4 f44ac940-4c15-42d1-8bd6-18b0001bb42a 3530e9b0-b5f0-4a86-b61b-c2aa39dc0021 cbd71a70-8f34-4ac9-9da0-24ec13f64917 7f67e897-fefd-4a10-a346-c9a073aa2680 1676c369-726a-4e0b-827f-cc8d9d730fa9 f45973a5-5a64-4b09-8be3-91e0a56b47d9 aa93fff7-90d9-4ffd-ab0a-65019bb73b5b 07a3fa41-d659-4591-b341-2795546ea5ae 6ddcd2e5-fa97-481a-bff6-78656211baac a0c1f16f-13e3-47b3-a1c1-5e1d50bb5c4a 8145cbac-6df0-43dc-b67f-e5fde77c84e1 915f22fe-4682-47dd-a2a7-265e6d846bbd 574febcc-fcd7-43c2-9697-6fe06047c2ed 062799c3-7612-4c7a-be42-274a110c972d 621a159b-f1d4-4b42-a56d-c7faa197f4ed 1ff7b409-824c-408d-b531-5d94974b0761 07166ef4-1e6b-446b-9b3e-4049030cdbd1 f51afda3-d437-4ce4-93dd-658ce4f0e604 60a52602-482d-41cf-bbb3-389b87276b70 4a9cf89d-4896-41fe-86e7-f6820d803186 3b59e845-d571-407c-b6fc-2c9e60311248 36827cae-0bc1-4d41-9565-e43a3b5444ed 8361140f-fb34-40c0-9dfd-7e4a0835b3c4 b24fca68-08ea-4e8a-806d-644beda02633 2c9cb237-fc1f-4790-bff6-51cbe196a368 a524f682-2bc6-46b7-ab2d-3378c020c852 8c5841a3-62b9-4a5a-b982-4a96baffab87 6788a8cb-3e49-48a9-9447-b22963799bdf 284afb9f-ae05-4198-bade-b47f6d38f2a1 87c80033-7438-4edf-9002-4f126b0284eb 1c663a5d-6f87-4dec-8cb4-3c955241d69a d7acc137-787e-413f-af21-2e868b8bd78e 90a0a851-3190-4665-b9c2-b9a684bfc434 fac96c63-f36b-4962-bd57-7f9231ae3aa3 5a24556d-6d43-49e5-8c6e-ade15e61593d 8aa498eb-15b4-42f8-8bf1-4cafbc3fcfd7 1c248da2-4faa-48ef-a330-7224870157e8 0736e696-b9fb-4d4b-ae8b-ba3cf251f7ad e2b7ed85-298d-472c-bd5f-8afd0a6931ec 599e7bbf-745b-4f6f-a38b-7f8125498c30 061c0598-b6bf-480c-9216-9cd5f23ac1e2 c0f252f0-0455-4877-8469-752045c50dac 561112c9-65a8-46ff-92ec-e94a276a96c5 69e18929-7604-4ce4-9db0-9fa78e92b438 97e6561d-f1f2-49f0-a597-b24840aac6a9 6ea2c317-aaf8-43bf-b535-4acec0e9828e ea309313-52df-4abd-9375-ca7389d11450 e6f27f55-237e-4e17-b4be-c1df2c1b2616 f78fa512-dc0f-47ee-80ed-56c23d5ebf55 e3e01f17-78dc-4114-8524-61a861cc1c77 1bef7d4b-6165-478f-a7b0-6bc3cada562d e6df519a-88a5-4ac8-8716-1d2a56fd0bb6 cccfccae-ad2d-4f39-95a2-64bb2e76b07b 7303073c-34a3-44af-a358-b7a8b4f6d505 fe9af8a6-7a9e-4dcd-90c5-c716b639fcde 6b236ec1-3b6c-409a-8c45-06ff0b4515c9 7d2664be-2354-4f43-b5de-31c7502e5b9e c1e8215d-99f9-4406-b1e4-9ede80c048ca 41548f33-612e-45c7-8ce3-40093b2ed441 42ca339f-1e44-4b55-90fd-0d343c6bc3a5 5df0c0d2-3f3e-4672-b75d-b0c5d93046b6 a2113aa2-0886-4cfb-804d-488a35d1a98b 1f1c9e5e-8634-402f-9d83-5aef972393ca be33b7ae-4474-4379-905b-faccfb59bc35 da2cab9c-13a9-40a0-abcb-e53b8fa0ed8b 3923780c-7792-48a3-b5c8-698b4ad3ac83 e5becb10-82cc-4b9d-8804-717becaa073e 73233968-aace-405d-9ef9-56e18dcb5d07 150dad59-c4fa-4afe-acf7-d341dad2cd0f 1f1709fe-a092-4590-9f85-2d4783d1a1c7 723cbcf9-64b5-41b8-a052-bb5750a5de3e 13990f60-34c3-4865-9934-aaf457f26f8f 923436b4-127a-4c88-8ce6-7ef0da76ed53 97082f11-7f23-41a3-92e4-d5b31219e2ba b8a2eb52-f4a3-486b-861a-ad6c84e7fcb0 2ab6a83c-5a62-4b4a-9d71-4fa375a05a65 419ed192-5497-4c3c-a50a-f1d2280dce84 a988f0eb-525b-4b75-9721-712913ebe24d 3b5cf8f7-6d6a-4a44-a21b-539a82bcf4cf 85a9c4bd-2ff3-4110-a1f7-208c99abe070 5e2eb5b1-30b4-475c-b2a1-3d480ef5c14b 623ce73e-83aa-47e5-8ec7-02a42426c2f2 5768e7f2-3693-442d-887b-98f6847136f9 a2b8485a-af9f-4e02-a648-cacc57c00524 14f9d497-94f7-4aa1-8a4e-a2bdab6da081 57c9f931-f1ba-4799-bb56-590df0632626 0c3c9c02-005d-4229-a753-910e8ffd9f6d 406b79fd-1f54-46c6-ba38-c23624f8c563 a13d0beb-1dce-449c-a35b-a0bedffeea6b 294b9599-931a-42a5-bcd5-b83e6d34fb1c b9503ed5-bd56-451b-9473-1d0f76cd44bf 0b200669-f234-409a-b69d-ed6da4b8a64c 971f0b49-d43f-4997-adf5-125f12da4623 931e5811-5229-4b8f-b8cd-a3b2f266efc2 8be48599-cc34-4466-bae9-6b8a16a6e938 111cce69-0efa-4fcc-8b67-78799587999e 180b9aaf-0a15-401f-984c-1e4096e7f311 60887d8e-8639-4649-a0cb-593d64b01fe5 91f2e9b3-52f5-4105-b392-1748d3ca22e0 73d82158-a8c8-46a3-b97c-8b00c00d9458 79e995d4-4aad-4feb-b660-c3e0774e18f4 933e6b05-a2b9-4d05-b9a8-898bd2fb2228 ec4c13dd-40df-4bae-aae2-5d3b418916d2 b85ae755-b70f-4f4c-9c66-7d9db54d0e62 cf8c9e15-acfb-4fb7-b22a-4fe501facfa5 3acd22bd-0f21-48b0-8c10-767730a85e1e 69970e1f-857a-44f0-a68a-ddd7874ee23c 361de45b-87b0-479a-a78e-d849338fdf1f 91787ad1-9d4a-4750-b764-4fc69b9eb0dc af7fdfcd-bff4-4408-b071-4f90020019ab af1ea1ba-ceb4-467d-9ded-0fa08923e859 74674639-a253-4f93-8110-462c3150d7fa 345ab11b-7b22-4e11-a4ca-0afd83be0e72 18a2a09a-2a07-4c30-9103-e9796a677618 a7466f12-2fac-4b7e-974a-b9fdae64ec11 10b85afb-b349-44ec-bde3-b7b8cecd7914 ec1678f1-1da2-4d9c-869f-ebee59fa595a ecf3816c-506e-4e37-8ebf-aa831de42096 2f7102b9-fce9-453b-9d8e-9adb1aa24124 db242f31-2954-46af-a34c-dbfe0af76a1e 0c6b02e5-8d2c-4148-b575-b27dfce56202 aac7b4e1-0dec-4afc-9854-ea397e0aedcc cc0bc413-ead4-4242-a464-686337e3277c 11a8c287-f04a-41d7-8d77-8cafd0c948de f1f209fe-c0fd-4781-ab87-9b4054072f73 1d503c3d-07b6-451a-9ed4-88c4d8c14c39 65d1bd11-afdc-49fb-8103-fa636dc8ab07 88eb12d7-9dba-4df4-889e-9e12805ae20c f16db373-1c02-411f-8041-852338bc1a89 cd3d4988-e7d6-4c49-9a51-c464a41c663c 141955ef-f0e8-4078-bcbd-dbf718498bb0 e8fcbbaa-31a8-40ec-81be-2b4ff947510c cf146423-cfb9-4105-966d-02559ba140b0 0606f9ac-6047-4e35-abb2-7b441adf7141 34248750-841b-4a67-b476-0f1090f8f764 709b1e59-9a08-400c-9987-6d4b9f2badc7 6a6da4bf-d7a4-4117-b43c-a9c820b78be2 b0978a73-6e2d-4bb0-b9e1-09106ec957da f3319350-45ba-44c8-a9e7-52371a42abfd 1393eefc-a0de-4296-804b-964558ed7281 59915ce0-3166-44da-b2ed-6692ea109347 b7d224dd-ce75-4a7a-a7e3-e9ab522e41bd b6900c7c-0309-4857-a9c2-be5b51703df8 249866ac-8b5d-4a40-a582-72033c4b3fa4 6abec080-8dfc-4eae-842b-4f15a79a6af0 70e21156-05fe-4590-b3e4-94ea87244294 970e29a4-8423-4b86-bc82-03c786e56798 28307812-6475-4d7d-b09f-46f9c93f0d2d 042d6366-9a30-422a-82d6-0a26644c7fcf 05a23d7f-a661-4d9e-9d43-8716b91975a3 8165ce9b-c2a0-488f-8724-9d8add671d6f 7b876e6f-54ed-44f8-9bcc-d840da0f9ca5 3a5b9ff2-294f-4e0b-bb29-2cb9badc1fea 3045aa10-ac1b-4e87-8cb1-eedf97beb5ae 1186afe9-89f3-4d22-bc2e-6f8c01524fe1 1898dcf2-9e9b-4739-ba30-15927f6e0e9e 8074cbb7-6b98-4f49-a9b7-759e8a455801 090ceeae-651d-4c14-b393-20cfc1188d66 f19edb4e-40bb-44dd-a210-bc4646e39560 68389c39-e974-47af-9a6b-99b9a6032c22 fc2af4bd-2a61-4f01-a6b2-23e7bfd4ce13 5878da6e-bb61-486e-a53e-e49f755174dd c55f27d7-78cc-4634-bd51-47848c500415 2ebfc466-7c0b-4a85-bf6f-313d24bdb9dd 59bd1245-6615-42ae-ad6e-fc6ab108c4b4 2c259e77-a1f0-45d0-98e4-add515433482 1dd2d8d9-44b7-4b48-bd06-3458c5f03109 b3727ade-0220-459e-81af-8e475ecefe44 315c8530-5908-4e0e-99fa-b4854ffa58e0 2fa03f29-4f0c-4288-a014-aefa9215262b c829b652-3e68-40c1-b128-ca95c246cf2a d03843fc-24ac-4d42-bd42-8bdb59f4aebd c2dfeb59-c720-4431-a035-6c1eea57b65b c59e54a2-1795-4673-b3f6-db78ecea83f5 9e6b4f68-7984-472e-a052-b486b2fe2080 c947016e-5689-4195-b7ef-7e7bc7afed74 7bc80499-32fe-4cc5-a1f7-8ed156860bcd a0575b91-dc84-4f90-bb5f-2ba2c3459231 ebcc0740-aba5-49b1-8a4e-36049bbf99d8 1b9d6435-1035-4633-8e82-a2b21e1f94e9 f190c865-601a-433d-9b47-c554ca736837 0e4d29e8-2670-4cd8-917e-431649d1d5c5 659ab8e6-a2f4-4014-9448-0fa42677dddc d0223273-ae04-4eb6-b59d-943bcfc70dc4 bdc7c156-1bb9-4edf-b051-ae4c5b89a91e bb462418-10b9-4b1c-b16d-a23414dae241 c601d871-745a-4b79-b056-a5e8d6a0def2 bb2b2bb7-4533-40e8-93cf-3f02d2145219 b694ac57-0399-43c2-b7a6-2d25a7491a4a 39593459-f48d-408f-b5ac-ac977a4a63e4 27313931-5e73-41b1-b386-5ad186146eca 75624d15-4160-4a8d-94a7-d96426d92207 6262f67f-60aa-4500-b9ed-d12759b12d06 ecf54cc8-3897-4bb5-a621-6358e92f4b79 4c96ad4e-e2ef-4e49-b8e2-c3c0d7bb7491 72816d24-c7da-49b9-aba2-6d284474d94f 8f1f0c41-2a3e-4efa-ab6b-cb4845252be4 0efec243-f26e-464e-b470-759aff470806 53be93a3-bd1d-4960-a902-b1640ac5c828 9f8d9b55-706f-4509-9e79-cf2724fc556a 56261e38-7b2a-47e4-8e33-69c5b3b51cab b7b28413-e406-470c-be46-a80bf886debc 03a3f6f1-395d-4de0-a4af-2658c270070b cd6d5ffc-2f1e-4732-afb4-55ddc5476396 0ae196c9-0d6b-4f79-aebc-de7edc3de703 67b4fd7b-bc7e-4eff-b253-9be379c31bf7 071415c6-755d-48f0-9f9e-0cd7956f619f 8539135e-ae12-4f20-8c32-1fbac2b6e837 769e115e-525c-4714-b097-ad75fc242f42 8861cb4c-dcb3-48f6-b245-39d4160c6809 11f893f8-fc3e-4e87-8eab-599ac4ba12cd a99069cb-0a3a-48d1-b442-5d80b9600298 6ac97e8c-4a32-4003-84a7-7ca81278cbe9 8a069abf-1332-4d81-9077-88cb48f1471c 31929e25-c1fa-4e5c-b96c-df85fa196947 f2bb0035-1727-4c7b-a5c4-3632fc445018 5aa1f80f-83fd-42b6-8f8f-d8fd275555a7 41187cfc-7d76-40b8-9ec3-ef16261a5bfd bb9dc602-6dde-4e16-8817-f35bd0db1588 5c4ba640-3d05-4fcc-8710-64f12142f1f4 8cb10819-e57c-420c-99db-677992d56c4c fddeaf0f-ce5f-4f15-9b84-0012125a11eb 58558cea-eced-4839-a067-ffe053e408bd 308cec6b-343a-4b72-9648-76eb3365fb41 5871120e-7659-4a19-829e-bb407ec7fc6b a615edbb-6920-4fdd-9627-a5992b2de54f 9a474598-ecd8-410f-8738-881dbe0c51f7 e33cbeae-6d58-4b42-8e28-5a0d548562a1 766906db-2160-47e0-8673-af85b84edafe f39f8861-feec-40dd-9a74-5855484da157 f452c514-eb3f-4f98-a68b-c7737979b9f7 5fbb1328-fea2-42a3-9d2b-8817eaa351e0 dd1e1d8e-64d6-4ed0-ae8a-9901df6e3dd5 9c80f6c0-2b1e-4d4e-b1ae-086c22e1dcec 946f0390-1726-4093-8a7c-df80cabd6f5b b760e921-8d59-49b4-ab91-d38217ca4d29 45a0cc93-36be-4fbc-9230-a6b997d51d6d 9b6eafa5-ae3f-4fe1-b2cf-59913f0aeaff 723d995f-a07c-4be3-87cd-9cdc4e38f055 b27a744f-6bb7-42d1-9d44-c2ee5816827e 0bb1b98a-8fb7-41a7-a5a5-adc30f593346 02242c35-902e-4792-a41e-481351778162 1d21b63a-83ce-43eb-ac2d-2ec0cfe6b01d ad9df0fc-c64e-43e9-b280-26879454fb7c 56584924-34ac-4680-b937-ea587f671817 cddf730e-5147-496d-9e68-55a98ca6ff91 671dba79-ad68-40ad-ba4c-b98a8b7795e5 5bdc02db-85cd-495c-8a1b-bda8ff170fe2 cf860e79-4825-4a71-bb84-2fbfe1d8f406 0a4fb3be-221d-4953-ae8a-8a5e0b3a9f31 a2dd6bb7-50e3-467c-915e-de9eed482e6c c43374a5-43d5-450e-8e3d-eed9e752fee3 ccab4f34-d91b-48e7-bff3-0cec9dbaaf6f 8f82fabd-7f4d-43d0-a521-ffc3ed6d40b3 b35e4b93-8002-40a9-9397-90a9493e9382 97d5c426-1d6a-46ad-99dc-71e152c14cc7 1075c959-47e8-4e62-8a46-b588f576fedd 083ec086-750c-4c71-86ad-d6572fdb35ff 6206d52b-1bb2-4b1d-a623-73e38e7c01a5 7c2d0d5c-e418-4053-86e4-50a3a0bbd71e e0634a96-69d6-430f-8213-9af197a5da2f c7edd93f-9fef-4254-aec5-84b050ea55ab 1cd8d8b1-0347-443e-a7df-4b5d6164cb71 8fd750a7-e36d-418b-872c-6cbf5aa81add 1e8d70c4-52e3-43ed-a1c5-908e48cc9071 8827d36f-55eb-4d5e-b07f-93019b7ac737 57cc4b70-7b4a-4961-bf0a-250f677703fe 65119108-bafe-4589-a170-b714489f2edc 24ae6ff4-6530-4ce4-a970-3048b09e7e56 b6dda45e-452a-4a4e-942d-3c13e4ae3f25 6ecb0610-8fe2-4529-b8d4-f2d6c4a0d352 ca9f34ac-f27f-4684-995c-dc734fd9762b 53e0c510-6742-4a51-8006-0c314f03cda9 9ccae6d8-30ec-414c-b221-9baafcebd482 e9b32cbe-8b77-4650-ba4d-b316aabcc513 722af3cf-ba59-4dc0-a909-d985e0fae16f a0195508-236b-4db3-a269-1088ac8403ec 32aefa49-a472-4580-bc02-e1b754167f16 cc4e5af7-1cd3-40a9-a926-153226fe5bbf e2b418a8-b7be-4252-b1e5-22d4aff1144b 4c745e13-e94b-4fa0-a62a-fb0e3b558147 4e89405c-dc2a-4481-a4d3-d832571e833a 67fec01a-3ff5-4644-bbc9-128c8879d133 25938669-5443-4991-a0d3-ca2c1bab6b5b 78e86ada-2152-4ee8-aef3-bab040b3dc02 0608204b-bb4c-450b-8619-61b2ad48b66c 3755e3d3-f574-47bd-bb27-9f095c97b088 82010394-6ad4-4009-a1e4-74129e1fc20a d2325854-860e-4056-9afc-454d94007ba9 7abd5c30-7ffa-4f4d-8ebb-77f1bbea6cf1 b539879a-8b2f-4d6a-bc07-a67a26b3b6d1 4b4a8905-7246-4b57-b27e-7fe4a45af23f dec0af31-295f-4bc4-a285-e271d76a4d03 b714911c-3e0d-4c22-b712-fc8578f8ba1d 35a9066c-cbdd-461e-8c2e-f9961bbe8e96 635f9247-0730-4058-82ad-1f709807abae 9c219031-730d-49e5-bde0-00005260419c 2e5df95b-5434-4ebc-b6cc-9cb35257c08c cd77e253-f1ae-40e6-aace-4388bc0fe013 3be184d8-b8d8-4931-94d8-a842548e0a10 f5e66527-630e-409a-9c13-1927cbd22de4 ec7784a4-58e8-4bb5-a2b6-3abee8879990 659886c7-5b5f-47bc-acb3-43d4d52aa2b8 ae992465-372e-45fb-9c05-28782883aef9 b51c9262-0807-4e29-820e-a81cae108756 581d820f-a05d-4398-90b6-dd3911c6f3e0 09b2d351-a4f9-4e3b-8cd8-5e118a216b28 6caea079-99ec-449c-a4ce-8c6149a8dd6a 75517a84-cc6f-4692-98d8-35eaa7f5303c 716ebb54-9e67-460d-9eef-1ba1809ee554 1cfb558f-693f-4fcd-9761-1b3942194f18 ec35cea2-0914-4b5c-9133-b3e14f205705 e1eda018-fc6b-45d9-b196-09ccd79e1b9d 8c6d9c20-eb9f-4245-a907-ce6f1f25124a 5b1d751b-9014-413a-98cd-85b06def7867 5b47963c-b221-40fb-9ff2-f8952b5e3054 20ee082e-75ce-4c2f-a3b6-b2550ced0d09 a6b7901a-689b-447b-863d-a7c734ce4faf 702a40c2-0b0e-43c0-b0ed-25c35cb1a9f1 77bc7b6d-768a-4306-846e-dfcb75439301 868003b4-e8bd-4e9e-8553-5b0c03318648 5b5ce3a5-9de1-4f3c-89f5-b6091bd53bce 128b60ee-973f-4637-86f3-3175d407359a 56f36913-ff45-40e5-b2e9-85564058a418 8cdbdfe9-eaad-4405-b3bb-48ff74441903 e16b88c7-abbd-4269-afe3-48ed20364527 32757703-990f-4061-be23-1fda9ebd0f72 efbc40a5-c3a3-449d-a75d-9d04041e8b6b 707a286a-f634-41d3-9262-afbc796a96d1 eb3ae737-f816-4c8e-8e4f-99e342bb1cdc 9367995f-23fa-49a4-bb60-446ea3288bc3 6524cd56-10cc-478e-ad3b-f6978e62a973 51013df8-dc52-46e4-a949-5ae336ba724b 5ed8fa71-6bfb-401a-a11c-afdcfa21c89e 94e5afe9-b8df-4faa-9d2b-e127894646d6 5843ecf6-6bda-4bc4-8461-f3a57caa8ed2 30ef0798-77d1-42c7-b195-7aa0f986bed0 96322fdf-6a5d-4a67-a878-c578f341c90a 9c7442b2-12d6-4337-9135-a7109bcda562 34bf722f-6b94-45a4-ae7d-853558706869 3a89d00e-f5b5-4fd6-ae01-b08f41b4bb66 56c6eb7d-8306-4089-b7f7-231e8a88e807 5d228bbd-f86e-4f15-8650-148ae6d5b982 4d27adc4-420b-4107-b0cd-d28ce2510b3a 0042a887-b35a-49bc-9a9d-06539d2b5b04 23cabec6-3f43-40d0-9db0-118233f39164 61e360fc-5fc3-490b-b427-ba04538aad2e fec0b414-4c68-4efe-8680-8317817d0f28 a6678794-e103-42cd-b691-665c9be329a3 f4873da2-dbee-43ea-abc1-0a234da9c3ad 52beeeb5-10eb-443b-9b90-3dc4c1493af7 1acaf2c0-89e7-4efb-9e4a-ef45a1c7969c de1a958a-23cd-4517-b1bc-5245a5f519a2 b9f677a0-bf20-4e6d-9401-67fee38aae82 24f71c1a-670b-46a4-97f6-ba43c55b7baa 6f741afb-14da-400a-83ee-e7dd51343c2b 87779e00-a190-4799-b0ac-fa4744951cd7 d2434d8f-6f7e-4b1d-99a7-970a209cce24 c1be9a11-d342-43c5-9b8c-800af21f3126 5597c746-f76f-4e82-ba53-782da06ed925 c90e3977-2bcd-4b57-8568-01b9a049841c 57f49c1c-20f9-4d25-accb-ebb33b8599e2 f8340693-9c8e-4216-87fc-f2ac2bad71ef 0647c3dc-447f-44f3-b8ee-4ea94cb420a4 02d130b8-3993-4936-be97-63a2819331d4 15bcf8df-e0b1-47eb-8e86-6838da0ae221 11c7198e-6aff-46ed-bda3-30733ab82e9b 69e067f1-1c54-423b-98d3-25a16e9133ed bbf94de1-88cf-48c5-acb4-e4a1ef952362 865d0121-a39d-42df-97ad-42a70dd2632f b8a80513-1073-428d-b422-288d9211a29c 7105895d-43fb-4925-b808-c8c7f7d0bfc6 5f4d13b6-04e8-4ee2-b9ce-5b325b73fb00 5d856966-d512-4b04-95c8-2bb3ba0e3da8 16cef044-96be-46bc-8d2f-55af9a472889 197b8447-9b6b-4392-8724-b1b35b1c9082 8f5b041c-b5b0-45e2-a5c2-aedf5f7e6b20 aed5cb0e-0967-4bbd-a93a-075370b9c257 44556c39-cab4-4b70-992c-d0812dd32942 524c7898-b046-47c1-9ed2-4d10b7e2d0a5 ccc738e3-86a6-444c-9c97-70855c7115dd 556a746d-bbac-4e4f-ad51-a0f45477c795 44d8ed32-2d12-4e25-bf79-2e549e0ed210 c02f7ca7-9d62-4801-951a-0d5dfcd865ae d50cd38f-192c-48c5-a4ce-099f1293f4a0 465b3db0-38b0-4e09-a561-c29b0a723d0a 11c91680-bc6c-406e-945a-5900f5dbf2b7 61f67baa-7ed9-491f-bd37-a272ca15345e 141a3e28-995b-429c-8622-4c62e08ff3a2 5268a5ca-3522-4b9e-addb-80c451eeacb0 6796916d-daea-40e5-bbb5-f5b8566f634f 96ec3690-2b0b-48c9-acaa-b4931919b8ea b692d0cc-ccd3-4def-aa1f-cce174b5fe21 63ec64d1-acb6-4391-baa9-2f39b3a39dcf 0ec5871d-55b1-4c00-8d7e-00264a1c7725 f876bed9-c2fc-424d-b897-d0c0218402cc 784c7174-8557-413d-9f97-1cf5a0e5443c 66de1d16-d81e-4db2-9cd1-6f6c969acaa8 309b6e07-8688-419b-9b2c-ca932116364e 01a3388a-a2a2-43cd-ad89-b4968875fd4d abd89682-cd43-426b-9264-fa8314106c08 42f572a1-d2bd-40b1-ae89-e0757e763dfb 02e86102-90dd-40b0-aa8f-9bb8c87c842d 035a5ff4-8eb4-4962-b331-9e6c502126b0 21e5fbbf-640c-456e-80dd-4e8f070a1e32 fb6196d6-39a9-4e0a-9ce8-a976cf05e2ca 134688b2-5f3f-43e0-85d1-5db1f402746e 36fdb549-570e-414a-b9df-9e8d49c690a6 120c1871-957a-48b4-8038-ccc6bf527e76 ce0e3fff-7683-4db0-81d5-74caf1cda4bf adf5a61c-1eaa-4922-8925-0a0da825ad26 778431b0-cb0a-4573-b398-c16c95bf8f48 165b5148-b1be-4796-ba65-29e9b612d368 592fda3d-40a2-4331-82d1-e3464f864b75 98c9d2a1-7df9-44d5-990e-7f2510cacbdd 2607b344-7d38-42d8-9c9d-8c19ee3578db 3b84a9c0-01b2-4123-8b87-b30a2e295761 4a4953c0-d6d9-4fd7-940b-b33fd31aef7c 414c18ed-9496-49a6-876a-d9f1a87ee20e 14f9f61b-34c8-4fcd-b861-46186bae869f b1f47089-ff2b-4960-9899-c5a07ba1ab69 9dcd678b-59cd-4a3e-ab19-23d7730b436c 077ad5b7-641b-48c7-9288-aa834c8fb474 34c102d2-00db-44d6-82b6-967c8a8932d1 a04713b9-da06-4fd5-b50b-78e1af43de91 73879739-8272-44d1-aed3-a3bed7390d52 22912d05-2696-496c-90ae-6e52222214ce a6752aee-6dbe-4995-a25b-385f9cb20fa2 330720d7-533e-49a4-9efe-c2989971cc3d 90b0acc7-6f0b-4a00-84a7-d22986c66c8d 537e6696-4422-4935-8de4-3762a9f6be25 d2e44093-ba41-4486-8346-3a92416d9373 2591f7f1-37e1-4987-8b1e-66eebd85dd1b fb0ab913-93b0-4e9b-9c53-30869bf0c9f6 fea7a473-3e10-4423-a1be-e2c456c94182 dc005cc9-6602-474f-bbb8-39aaea7f1f37 ce0bb6bf-21a9-4a7f-940b-af21c2ab8863 15a4cdb4-0aa4-4136-afb3-0249d747dacd 3249f59c-786e-4ddd-9520-0f35b015081f cf392156-9b3a-4e07-8315-be2ca610005b 85280dd7-c713-4492-9d4a-b4a195111080 f292c1d0-6ce2-4443-a5e3-538285ad8588 12fd6642-0970-4211-a67a-6b6e7c8181f4 40e0e489-9864-4c2a-be27-ddb70ca1b6b2 1f722c75-7ee4-46b7-be22-f40d4db5cc09 f9a3f971-d880-455b-a2f1-534982f1a37e 95465612-c87e-4337-8bd6-0a76c109f07d 7a4d6b7d-c766-4f16-9a5d-cdd0da98fe81 52dc42b6-991b-4176-bf21-959fdaac72f2 307dfd23-3bdd-42c5-bddb-bbe8d5c0880e 699cea49-6b2c-4d77-b1ee-fe3aa17c2bf1 292fb946-eee6-4290-9db1-c36a25cc76be 4bc406c6-9350-412e-a58e-a2aebc0a8ef8 cfd97b9a-c1d2-4837-9f9e-52ff4ec5b23f f4af0d1d-086e-4c67-a2f4-6436dac1768d 2e62fb36-7901-41b7-9344-069fac56db14 c7bd6f66-6e5a-45d9-930f-b4c53d64e2be d3e975a3-d777-43bf-ae2b-dab234a56dd9 8ec4e8c5-ccaa-4d63-ba9d-016daee3a7fd 9f66b39f-29d6-4ae1-8de1-edda6d4c3748 21e42a31-656a-4b35-9d5b-5b6c5a939c78 16b00bc7-b539-45bf-be71-eb12c96a22ed c2a82097-9840-44c3-8568-33280ee0f95f 852aa348-8034-4f4f-888d-024bcf2fe8ad a0e1a510-b599-450d-8927-5894ee9147e1 e35524b8-274e-474e-9b27-7b64b17f56e8 b1ca0a5d-5f00-44f2-b8dc-d6e2e1fbc263 186415aa-f2c1-4ab2-953d-3f7651b52d93 b2b395ad-f720-4db8-b796-2a60e5e21b78 a43eadf0-ed64-4814-89fd-cf2a716815e2 de05715f-af21-48df-bf58-ac66e85280f3 457a6385-739d-426e-9541-109b02ebd8e7 14d94f61-8e60-482b-a10c-69ed8db4405e 083b7ed9-7105-489c-b531-ea9af31f32a4 643fce51-acbd-46c1-a704-97306b45d34f cd0ee921-8886-4503-8a02-48b8b1237bc2 c70fbd64-ae41-45fc-95fe-78dc9caaa9c0 6be8ebac-7d4b-47ee-b5c9-5e4690d51fd6 365b1512-e5da-434a-9887-e74ab6ae961c 89ab73aa-937a-41e3-8ada-b71e9c22e93d 159d9d3f-41ac-420d-9bf8-507d0ebb1413 9db09beb-2e7f-4d52-9cdb-f43558a2b7ae 2c300090-fd5a-44fc-ae3e-611e88fcdcf4 3e63deb3-ddf6-4ee1-8345-166404f9691e bdb3cad6-a89e-41b7-9532-f9bb7e034c5b bfa512a8-0b9c-460b-964b-df780c28acfc 2397cfc9-b6d3-44dd-ba5a-7b5a3ec644d3 886ddc54-fa61-4590-ba32-ba5682665db3 ac5eb9bb-ef47-43fe-9c85-5d50c0adf1af 1dcc2376-586e-4a51-afb4-9d1043ab94ef 5861e933-61ee-4b72-9623-b96d46858952 4dcdccd6-7bba-4caa-9de9-ed047ac618fa c0574d30-0f85-4b2b-9298-a1d546c8b892 8996bfc2-228d-4c19-abbc-0b5abd7330e8 cd7773e9-e2ee-4361-8671-00dd8b8333ba 145bb2e8-3efd-43ea-a346-6ecd3f2c761a b8eb4798-ca43-4e13-9f82-b2f46c45fb21 57406db0-db96-4131-99da-96885996bf71 0a26b2ac-99cc-4c5f-8fe3-a8b85e440c6a ef67fc76-66ed-4dcd-94fe-ba8ce1be7735 583783b5-7fd4-42c7-bb08-8e3292e29edd 2470469d-655e-41d4-9ba0-dc5701caf9b9 3aac452a-988d-42e3-8533-1c73e2f43834 5274eb75-4e63-4ed3-812c-9b5ddf759391 8f68d70e-cb57-4e5e-96fa-89128498c5c7 ab77ec20-9af2-4e6f-b651-9d5992677f07 57f621b9-187a-4e54-a841-dbf8d78b1cf3 d82ab927-7bf4-44a0-8b6a-3a7fbc97d5c6 9bc7ded9-3434-40ee-aafd-f88d71631ece 3e21946b-2801-4ffe-9122-24f08dea317e 7a7627aa-8351-426e-9aa7-264dd7372b93 6110afcc-5ca9-44cd-be01-6d30aaef767b e22f913b-44aa-4291-aaeb-43981e472e51 fdd01f0f-09ee-4ff1-9f81-3ba82ed20c2d 4a48e1e1-e366-4902-92c7-f3a2467d4972 c5b242ae-5e4b-43fc-b3a7-64ea7496bbc6 6347036f-d89d-4dae-ab20-8c3cbe6893a6 bc4cb294-adf6-49a9-8f5f-59ee1b174795 0b2ae43b-a1bd-4889-b8fc-08d8d478bca7 32764cc6-4f0a-4f8a-a732-c10cda4b331a d49961ae-3f56-4238-b9f9-40b85481116f 021ba022-8267-4aae-bb0b-8529c54be555 f78ce398-b7e4-41e2-9206-30fc6ec8967d b47a6fcb-4399-47c9-94c2-a09e19aac85b 9b230fdf-94e1-4438-b7ba-28c325ff5192 39bc8fc9-2d7d-4153-9a51-aa39031d7d31 c979d70c-f93a-4c2e-a4c4-5fb9610b5ab0 cba63c3c-1af9-4056-9fa6-2f72157570b1 cd5ed139-a822-48b6-918b-a2c2f74600ba 65b31610-20df-4abf-a528-3ae94e341c98 e28bad0e-94aa-4c74-aa74-8ccbc2a82c72 39314ef9-6f56-458e-975b-43781b96bfa9 9ec68d9b-25d4-4a9d-a8b3-858c9665d2b6 e31b60f3-dac0-4c71-9e1f-a3ed10ce4b67 fcf82000-4fc2-4e28-b25f-cc398759992e 4ca67e22-a4cd-4294-9378-f19b12dc12f1 85469241-3143-4d77-b7a5-3fecb3d56a90 09567d92-28d7-4b1b-a196-ce4ff62d78dc 70c0913a-59cb-4cd3-8d92-8fc439c00248 0128af6e-821e-4ccf-a1b8-213d09a8be1c 85d9ac6f-0a7c-494b-b694-dbccea59d023 78b2e2b7-2b45-46b7-bd14-9ff5e25bdaec d547b27e-f274-44cf-9bb1-f72c7a2621a0 1e007be9-28cf-447b-b37a-549ea0d2ea58 0f782f93-3b5b-4e79-a7bd-a65a8e6bf96e e14b9043-98ca-4e6e-b611-b801170d53ea ba48f6f7-426c-44ad-98ea-a6db37db934b b8dc257c-95e6-41a5-bed4-59deed878c06 99bed360-5a72-478c-9dfb-b693f2283f18 ecf2164c-32d3-448c-b314-ac4a385c0edf 78d62503-d28e-4c93-8bc1-ded2e2303ad3 86abc808-4d07-435b-8a58-7ca8c7ca77a3 a8a26cd4-ebbf-4b78-9b36-eecb267e8934 8214ebb3-6dc3-4dd2-81fb-11deafde7202 664ecfd8-0aea-419c-8388-1357042cbefa 27f3a5e7-79d1-4416-a336-e0c95b07bc9e d5c6ca78-065b-48c5-bc00-0c27224f9641 3f8226bd-0815-46a1-acc8-851d735677ab 8062f906-1ad8-440a-b3c0-7d21d88a459f 76fe27ce-ced2-4439-9bd9-7c171d553e72 56bcbe23-58a2-4195-833b-146291251b6a 28224a14-e60d-49f7-9a33-919db37f61e8 77f3e087-0003-4c94-a1ed-f9245ac8915c 8025a95d-0ba2-4522-8fc7-313cd9f07d15 c2e41d1f-82cf-421c-8b8b-711f80bdb996 423b5ee9-fae9-477e-9499-bfa39bbcf851 87af797d-b06b-44be-8fb7-882facac9482 c5aaf88b-da12-4779-9257-eaa9d3f01b17 becc6911-cec3-4d6d-a2f3-95e9e31df19d 5b7cadb4-ab03-4460-9784-b2913b2406f9 31175a45-3db7-44e7-9d4a-3f97a5e1c426 8f30df12-c577-4c9a-961e-d3d65ee7b306 b05faf5a-9846-409e-8099-edbb31447819 0e2e192f-dd87-464a-bf0b-29ca5021eb31 f4d80524-2b8a-445c-9749-1c7f08a9dd58 8cf22d33-4f24-4788-adb1-5e5faedff0fd 654f3a35-97de-4fa6-bee7-06feab3f6218 5986174a-c0f8-4460-8336-1a2b36d5c716 9c1d5294-0084-4edd-a42a-072c13a14f70 1f930416-fd75-4eba-8958-8691ab3e43f2 b475e2cf-38e1-42a7-8b09-33f163f1c65f bcbff061-2913-46ca-8d54-56d1c5d41682 c00fe4e9-fc53-42e8-9bae-7f144f11a7a4 af14514f-5990-42dd-9dd2-31320548b410 2fd0c974-49f4-4831-8d91-8a866df82cd5 0ef0d41b-8c89-4af8-92ee-458f29a42827 b802eda1-90bd-4cd0-8870-6e3e5e4442ec 04ed7aaa-aa10-4bac-be9c-089d93193fa9 1e3d2e69-0212-46e0-b13e-bcb4c5d98d4f 840ad689-df1f-495d-afb8-0452b199c890 73230d89-c108-4cfb-9804-8ccce6924ebc 4c100d19-19fe-41b6-9379-d37f8d3fe886 5bd1c6d1-cf1c-40a4-80d1-b6f91c63fbbc b3216252-1905-4883-8b8a-fa96c51475d6 db004eee-189c-4564-aca3-f556477454b9 b5a6bb72-d8c8-4d50-9f47-57bdc2d5d4d7 7538bdf4-39e5-4307-aab4-5d7c6093e06f 6a453f89-9f2b-4538-a09f-caa611d01696 5adbbdd3-e5ae-41cb-a514-44ad9160e3ba c0b32e82-1990-439e-a41b-26da183ac5cb 1c86273e-ee44-4c79-95a9-aa209d7f8375 dd6995ef-3834-4970-8e7c-63bafaca7b7f 941252fd-dad8-4caf-a281-ef8976760a6e 297620dc-e4ae-4ed8-99ff-eb0f201652eb 89663924-6f4a-4d62-960e-b41080d98fdd 84306d8e-8bc6-4fc7-b9f4-7094a00021e9 694bb226-057a-45f2-9116-569ced6db2a1 306fc004-98ed-458d-a264-29869407519d f001bbf2-a571-4711-b080-c8e2c5dd71a3 1708efec-7d8f-408e-9b3c-8bc9c3dd7879 a2501acb-179c-405c-910c-bfe16615ccd6 e5d06abc-2000-4891-8b0b-4c8678a0bdeb e8d8524f-82f7-4644-a097-beff1db8d7e6 8f2c4214-082d-420e-bf0c-cabf3ba01d2c 185154fa-15d5-4dff-ac4e-b3638a97de0a b60d187a-8162-4b2a-a227-fa3bcafa13ee f646913f-83f1-4f0c-be07-7df02dac342c ea765b06-2825-4fbf-a155-cc9754e5777c 4c5d5b47-a2b0-4451-9ded-d878be007dc1 4f1090e9-3915-4a03-bd1e-21015ae190e8 e1ce953e-1dab-4059-bf5e-41855432a1d1 51c58b79-75ab-4c32-a625-9e32f34da256 7484cbb5-a87f-44f5-a7f1-7afe55e01428 a67dcdfb-f4bb-481c-ab7e-18a1bac7a238 fe2d7201-e238-4593-a11b-e9899efe190b c67403cd-ccc0-4f33-b7fb-a89764b580b0 f6653178-575a-40d8-a063-a7d10c053a22 cb0ddf2f-32b2-49ac-9735-fde8aab8b511 9cbca807-cd68-40a7-9e4c-9be9efe4c61a f7410b3d-aa53-4760-82d4-9f6abdcbea26 65594ae5-0c58-47c0-8a61-252c92540a13 74945f19-ed4e-49cd-9cb0-8e467e3e2255 a5190096-1850-4c12-9824-4a12676943d1 7974a3ad-2496-4ca3-a968-e13430fa2d01 6c2e9bbe-e872-4171-9e20-3f3dcad8f5b9 8a4fe666-47e4-432c-b172-86926a6bb475 53e03feb-8555-4d62-aee0-6cf5582bd077 52ddd47a-9b1e-47cf-a63a-a30aa2054645 74def527-e95a-4c65-9afb-eac87bd93d81 2bb5bcf1-fab0-4fd8-8a11-91b811f7e8fc 2464e830-5365-4efa-84db-2afb8d79924f c7623932-efcb-4a4a-aff2-e3d1e217dcd8 964acad6-f17a-4857-a3d3-46216feee766 203e67ec-a8fa-4d29-bf72-be2ed16e6c46 d8c7ea46-787b-4b5b-a980-0331f787573e 8c70529e-a29f-40f8-8bf1-d41fd9ccc06e 69789a03-808b-45d0-a9b6-368f5466e7cf 3a20f0c8-8a4a-4002-b833-a3287b352a8f 4606db37-0b31-4f98-8768-733178754846 d1b2d9ea-9209-4876-8a2d-688863d98940 32053205-9b42-4025-b96a-e1369a6541ca 7a83026e-5fdf-41e2-a659-d4092e3194b5 34f120a5-394d-483c-a9df-c641d73fe6e1 4b52a619-f717-4009-a8fe-4d0959f1d27a f428d12e-0cc8-4885-a564-789a4c4d0113 8ba0bf57-6d7f-443c-957d-5146adb5a519 4c19c5dc-1bcf-433f-b06d-087661bcefd5 35f40fc1-ee1d-4381-8876-9e6f2aad43c0 2b069fbb-91d5-4fa5-ade4-77ca37221741 b615247e-47ac-4141-8685-3929175a9c92 41dbc901-51f2-47cd-bd51-2fb7728c1151 9cf91bcb-5e35-472c-b8b3-f3d336698e14 56b09c64-9e36-4c26-b003-61ea71c675b1 3fc14fc8-d349-4410-aac0-b15e4b4ae7ef f8a3ddab-b527-4470-97c1-1c10d00daf0e 7b105b22-a85a-4424-8797-54df9aab9280 5696ad0b-66fa-414c-ac4f-c722673fc859 d3da921a-22c2-482a-ba98-3bcab4283340 98d0e0bc-3b02-46c7-be0f-c76f3f08acd5 a6b0d499-aa37-470b-90df-d7c0acd81dda 79d78881-5e9f-4768-8b93-c1d846c4662a fd9e07ff-d963-40ce-8bc7-aaad3fb920d8 6000792d-dabe-40c5-bc73-7c6d94c95efe 62d60957-01ba-4094-ac5b-7863739ab7ee f512ae3e-9a39-45c4-946e-c287488497a8 9c332ab8-8319-49c7-ae47-94f6326897e9 59cad9f8-fe37-490d-9a6e-2c3455a6e6dd f86a5be4-bc47-4347-b675-1d1c07d02c2a 8226f711-76ec-4715-a23b-7fca8a5ab9dd d2ba5b4b-7dec-4032-9fa6-aa7e283f2cf9 7d5c8170-4434-488c-97b9-1b71ccda312e 968de879-9e51-4613-8c7f-fac57e20ec21 51bc0826-4651-4767-a6d8-f377001625c2 b590018c-9024-4a45-b1eb-2dca373c35e4 7cdb0df4-8b0e-4e8f-a616-ee7a0d9a2686 851c9517-f926-4573-aac9-62f561793459 3248e66b-2363-461b-9093-c3be196ea8a7 9f1d582c-c1d4-4baf-b310-a00c5dfb3dcc 63ccdd25-0c7b-47b3-938f-fc70664de92e a816990e-1e6b-4042-adbb-3d8282c43201 82e41800-08dc-41f6-83e5-843c6775d718 b12468b2-70aa-4725-9e4f-ce5efe41ccd7 3983d45e-d87d-46c5-9f1c-fd75c4e3eef0 1c17d9b1-b740-4990-9975-69371eb9aab8 3db8dd3a-a457-495f-89d5-d292dab432c0 ff6629af-b52d-4b1a-beae-3fc0108e4889 a047a3d7-49ae-4290-9f12-0976a0f2661e e0119273-1463-44b2-862e-2723b23df907 dda10f95-8db9-4293-a554-cf4bca0e5f4c a7bcde3c-21f5-4e06-b229-4ea11892ac22 1e1c0e1e-2528-4704-b85f-93245e55a010 a78197ee-21d3-4c93-9bf9-d7742d9f6d92 90760aa5-1ccb-4a4c-bd17-b074a35e25f9 5db2ab1b-fb60-44d4-8157-1a04961b88d3 e21e5a57-1458-4abf-bb0b-69dd021bbd4b 4f1a9970-84c2-4237-9035-6e09916d1e65 cb2eb21e-29b9-4842-ae11-a5583825eca5 d0f38385-5eef-4446-abd9-7bf3b21c74e2 69030f1d-3f1b-4d69-a5cd-085f951aaf5b d17553fd-719c-4e12-8073-778249fff85c 805e17a1-c714-4476-97e5-8704d086531b 473eb305-aaa9-46a1-bf6d-695dc861e4eb eba27417-081e-407c-a06d-a1704b350104 10e8a31d-4fa0-4306-962a-256d75ea87e6 7ae80d37-57ad-41ca-aae6-3b1f4a0cc88c 5605cce0-9daa-4617-9728-e1fa910fe2df 6cb61349-f10c-4a13-8591-3b0ff79d5d54 1275b02d-519a-461b-8385-5cbf1a35b911 690fbaa1-764b-417d-b80e-f8deeb5e9954 23a905a8-8b4c-45c0-b2d2-434a59ded514 4f565fec-8e98-4dd9-92a6-685faef87de8 ed53118c-a1d6-4a8f-862f-69c2a0cfc56c 2cdb7dc9-7a8e-49cb-a6b5-164f4820e775 13e47f93-e9ec-4953-ab6c-c0d8538f9927 346226e8-0b7f-4b49-8447-8a739d3e84f7 c30282ed-1d8c-428b-9ca1-2a86534b8711 ff0675bf-9bff-43c6-b742-51b96b4b394b 4704fa1f-c0f1-47e1-9107-a67c1cf1d011 fa8156ec-f207-4574-b176-2d5da60c5c94 931b71ee-6e49-4c3b-a473-2177e34418a9 45845df4-b884-429c-b08b-125634fee0e9 53cfaaec-37b9-45ba-ae3a-c700de597692 6c0584f0-6df7-441b-808b-a7da91b9b79d 7718087a-7245-4619-b9ea-47036368230e da8af9f6-7870-4f71-b548-021b434a1440 fd6a77d1-9867-41e7-b02b-a227c41a9d6a 4a578d89-6331-457c-a071-f9199f292dcf a917ba76-30e7-4707-8af9-da6a515c696e 23db8a8e-75c8-40a1-9640-9c792fd148cd d731d080-29ee-421c-ab13-87fd17d1cebb 03eb487d-c5b5-418f-be5e-b6cbc6c70a02 8455134c-b30a-4c7f-b03f-34c10c84a222 ef1b5e93-53c9-49e6-9fdd-9157283e3432 fe9f7d5e-c146-4bfa-aec1-28ff4e404341 af1bd8e7-f3eb-4940-ae34-379d54bd525c 90ea1bfe-eecc-4d89-a04b-f00cd788d0dd 53b4122d-d78b-4417-9325-f703bda3cf7b ead66b74-7bb8-4d46-a9c7-2443d62c2b7f bde2afac-f1d9-42ea-9c42-1339764ce50c 285ee8ad-dbb4-4195-b9a7-527d01695777 3216d4ff-9aae-41e7-ac5d-e67a7b4a3275 895271bf-8252-4bbc-b67d-341ecae62a8d 5179ff57-4f6a-43ef-80e1-ed586f000d56 b564b2b3-8136-4312-9162-b7314ffd8b43 25b62f18-0d00-4ba1-b99f-44e776655230 65d5eac5-11af-4965-89c7-c23c14f29029 20f2014c-b756-48a3-9f4a-0b02d57eb8e2 55a0a737-c69b-41b1-a7ef-1751a4fda103 cc2adee8-3ac6-4723-b2d7-56fcd4969943 f937d881-ac34-43be-ae16-d95ef58ed767 591fc89e-44cf-4db8-b19f-76bab452d693 9edb9af9-9e70-44f6-ac5d-127659a2a7db 688fb504-a71c-45ed-bd8c-6a3ba6956a16 b6253e14-15ba-421e-8602-feb807bffb32 78719426-e41e-46db-98ca-611067b762c5 6c0065ef-7a5e-411e-8cd6-df4f89353b44 f3a6df00-c1ae-4717-bad0-22ca618f71ca b44435f6-f8fa-4691-8593-58f57acc577a 5d7d0a53-9f24-4dbb-92d1-962f52391ead 6352afa3-9289-4645-9262-a51d068b06f0 4e5f2e06-f65e-49dc-a81f-9d35b19654fb df5b56e4-c8ad-492b-8b63-9a1d2cb5b543 32a8cd9a-9207-42d0-9230-fe2fdfa06c6a 86fb2fe6-e4b4-44e0-bb54-0270f601b976 96131897-a2e6-4deb-aa3e-9378e2ca95f7 f8e6d838-8bf9-4899-a827-f6f811705729 57cdd6c7-0f5b-4cb3-92e5-438d93d21fdd 54687593-8744-422d-8231-1f1433d4471b ec2a93ea-4682-4757-8094-6ea7d0518f38 ccf7f715-a2dc-4e07-8886-844d1a1e1d4d 2d570bc2-bf69-4bf9-9b2b-b6c924bbe058 a22019fd-02a6-4e1f-a0bd-54f9c45b76db 589e425d-57ca-49d8-9b9d-da3fcda79178 1a048e2d-0661-44b0-9cb6-4a4c0b5b2c5a 144e924b-d3b9-45c6-b4aa-e2ec21e89d36 f6ab08a9-296e-4f0b-82cf-f36bb41009bd b1732ed0-ad29-4509-9b57-9c9e802d4abc 47119e10-bb68-4c85-a2fb-0477917bef16 3d43ac8c-6e48-4fcb-800d-950d03d6fcb5 eac13551-7895-4e95-8400-42720e0069cf d29e3b41-05ca-4b6b-92a4-300cea9ff2fe 28a8fcfe-36cb-415b-8e56-1b2dd0311de4 e92e95ca-b60b-4b2d-8056-1851050881f4 f3ca725e-519f-496d-8e0e-b9324c408808 e65b41c5-0521-4117-8c60-1470d296b3fb 38417bbc-e939-4868-b40f-68f5c2e324e6 d2fe8714-556b-4be8-b80b-1aa993e369d8 0224ee9a-796a-4ca1-8f01-5160681dc146 779712dc-8972-4c06-b30c-b1c73d0a79ee 2996386c-f5ce-41d0-83dc-9b36d28eb871 bdeaa579-6d3e-4c21-82db-b6c9900a3d2e 6dc17747-a4d6-49bb-918b-b3507d44eefb 6adf5398-e6cc-495a-a6b6-9c9ed8ae334b 05b377e2-de62-411b-a269-c240116c407e 9f62db48-a9da-4c76-8a03-334dab484374 81052951-be29-4385-845e-255563e5c05f ab96fad1-2f48-4a17-9cbd-3554e433f65d 615108f1-8498-4082-81f5-7ab13f2a65a4 f2c033cf-3a26-495e-a563-4579abb14f31 f99455dd-9156-4e59-83e4-73e844e34126 87d63df5-5df8-41bc-9670-d731d71f6585 38bae737-ffd4-4b6b-aaba-5da562334309 3c0ab932-e316-495b-bd02-84ef4390de58 56123a55-9f9c-4cc4-94a5-32c33d464c86 19d69846-0df4-417c-9fa9-d9bab2264af8 d1d6faef-1705-46f9-a771-ea32587fcde0 4ab9d721-2b43-455f-9eb7-97d53d49752a 09a37316-f8a0-4cc3-b94e-9b1826543bb5 00dece49-bd15-424c-9f3f-89f18f999d14 8477a70f-6130-4585-9b48-39269bc63e2f 93171486-8e4a-4e5f-8f97-283ce0404782 3f120e1a-da06-4747-b430-ffbe7a16a276 22538fcd-332f-45c8-86f8-1cb2da312d36 db5062a4-2780-4505-bc40-bd939e3f066c 9d3c31de-dd59-4ea0-8d0e-3af749ee31e2 54c04aee-f233-44e2-8ac1-b74261f1743f cce3f356-d4bd-4f7a-a2aa-6e2a2b61d399 f0d936c2-c0f9-4025-b0d9-7c93b278fa93 3bb64135-bc81-47d6-b6ea-6ba902371d22 107ff89a-ea21-4ad3-9137-b2ff0f3ead2f 6c875dc4-e0c3-4d73-b85f-f4c3e594a9ff a813cbf9-2335-49f9-9bde-db63da5c3579 1478c1a5-06e7-4da7-a3f2-b821de0534dd d878dd1f-e73b-402b-8218-5d940adeab9f 18054981-3177-41e6-b6cc-842fb40edded 0a44fd27-8097-4475-8054-c0b8478be904 ceac55f1-cd33-4e0b-b3b5-a48a960ad36b e4c6211f-8f8a-41cf-8661-5e8bcff7014c 30959c6d-415f-4798-be7b-4c2285631f3d 096b5c52-761f-4a1d-9a85-1a19c0b3e1fd 0675f767-182b-41e2-a2a1-42496d1bdc08 3140ff0f-5cf3-4b61-9eb9-6f24e114896c 0f3fb68f-cc75-4f9c-b9a3-81bba80ba082 69b56132-f3d2-4676-8c2a-315b5159d864 449fbb01-6ea7-4e15-9dec-06afb27f0145 a9a3dbf3-e2d5-4b79-a430-b324a7f2ff97 547d3e0a-bbe4-493f-976c-61e0859f724e 37827c06-9f9f-40e3-8577-7536dc31f2fe d2c84379-47d5-4502-9417-59545be0dd7e 117d87d5-ae4b-4592-b570-d818528fa63b cd7bae60-72de-4168-9a94-3d2d6e6caf5b 6f914417-a63e-4c98-9796-0693f28d2b6b 0fa72b99-d9e2-47f9-8c21-7e0192149bec 6c530784-c027-4b33-ad2c-fc85c1bdeaf2 ad0841c1-f992-40fd-8af9-c080ff5e0dbe 351386e7-560e-429d-ad7e-41b17e0be89c b60405d4-f3ee-456b-acb5-d2b447db4b23 b0dd0c8d-1285-49e2-9504-28b6ca9b731c fa98a2a8-45e8-400c-9f27-5f2831c24e87 9ded6735-f1df-4e04-a8e5-da2128f9469f da006359-6682-403e-8c9d-b37e44b5a2bb d15730dd-6c67-4942-8a2d-04e7d0287008 a9626bd6-9a2e-467e-9d5d-3d2f0756f78d 77ae0fe0-3912-4d04-acf8-535ef6a4b6e8 0fb3c8a3-1ecd-4cb2-8a1c-dd91aedb4c07 fba20f3a-8000-4997-8717-932383087c97 332b0f27-d9e4-435b-8055-6fd81707ff3d 62695b0d-d275-4673-b8c3-61168973e07f 2b00f6ce-7b7f-4c57-b38a-43975d7b268f cd51746d-c3aa-438d-8dd0-360406e84ef3 eb3af9bf-9bef-4164-9727-cda57acc57e3 1fceeca2-cecf-4ed6-a40a-9572bf26d86f c56be425-b97e-4df1-b26f-191cb1d7b61e f9ca9360-05f8-4e2b-a5bd-258bec452772 97ba7568-9bcf-4eee-acad-64e94947ddf0 16e661b6-36e5-4b2b-8f1a-5d368354210b 41ad12e7-a4e2-4f3b-ad89-11b6883d752e 6845ab75-f26a-4b89-956e-27bdb60f375f f568cba5-73c4-4987-8080-7ae78ff77331 221676df-270c-4c1e-8b64-e370e00fadd4 37c237fa-ab5b-46c8-9bde-a6ea74103945 e4e49d6c-229a-4b51-b389-6f1d3a035c80 d0def357-d6a7-48ed-b12c-86d8a20c3164 e95481fd-5d2f-4f20-8ede-169a5075a9c4 ca90d70f-4b3c-4efd-976b-886e65a80a1c d2450e11-44ce-4a40-95a6-71f037f89558 64d52624-164b-423a-8df4-b93801f5ebc9 b3ff9207-5613-433d-bdb2-355baecd5303 fbfaf4bd-ea66-4a32-a967-11f116eacdeb 776e3689-3d4f-4376-82c1-de4b3cdb012c a6d50965-8daf-4dbd-ac03-20a5424627d5 9712199d-6656-486c-9992-54fd5471b021 3b18e8b9-f94e-498f-9ab4-aca8567e7427 fa0cca40-18d1-4f6c-b5a8-21e0d6ef00f3 0b0bae3d-a18a-4a05-9380-9645df31687b 37cc8615-439e-4c05-8921-11786d700161 a310a12f-d276-4e84-b997-4bc5c366ffee a4c94e11-5727-42bb-b0af-07a7e2b45b35 035d74dd-5810-4cda-9771-6388e59a9cbb d14ca4e1-2464-4565-b6f1-925a9a1dd379 f3486dc0-fe7b-4869-903f-15a4dd05bcc3 7f988c2d-b56b-43c9-8a7b-ffb0c0d535fe 53116fa8-fbf0-479b-92e6-b2d18b512dc9 87c691d5-1d5b-49fc-b7cf-4b1c88f60e93 870d835d-2a19-4bc1-ad65-35d309c26da6 65da3746-533c-4570-9a81-436389a2084e 21643752-fc11-4ef4-990e-228a61c9b61e acc360c5-79d3-4ec9-b248-30c0196a0db4 5fffcc36-fb3d-43a6-8d47-fecf8199c92a 9f5b738b-405c-40ed-9bd2-24cdb29276bc 0209c0d3-32cd-4c24-ae14-1f1d0efdd935 c9fd1794-7ee2-4cc5-ae1b-56fbd961cb88 8610f5bf-40e8-4daa-ae53-3c5a02d6c290 96808503-cdac-4f6c-9aed-d1a22d615650 1b7c78bd-224c-4837-951d-ce79ae7152ff b4f1dfcd-27e4-41bb-9024-65df4d3aa4a5 c250441a-39bb-4e05-84c3-a103dc820839 d5c5af89-d3e7-48c3-bfb2-f3174175dbfe 1c8682f3-8211-47ea-ba33-a78508aa6f6c d2ec4c41-6014-4d60-93bb-5a6bea4d3ea9 38db5bff-71ce-4396-8c4c-2bc95aecfcbb 332bf597-f6ac-4b54-83cd-37c9bcea7fa7 3502e890-6af9-4645-b6f1-c1ef73f6c4cc f871a9ed-f7b9-4300-a2d1-ff559bc6f83c dfec58d0-6ed3-40cd-bbf1-69d8a93927d6 eedf6e9e-d9ed-453e-b399-880728250a37 f45556c7-216d-4488-a704-a4903931ee49 bc204e42-9dba-48bb-b6b3-4a527568870b ab4f2160-5855-4989-a7bc-3dc957f216c7 c9b7621f-4040-4acc-b848-4243af1b3563 c1721970-7801-47d4-81d9-24d6de304452 09c47cf5-19e5-49a9-95b0-aaf0c31fb3d9 21c685c8-50d5-47ed-85f6-43003dd6ded8 b8eb1b3f-8f22-41d7-8bbd-8485e168aa43 2ecd7b60-92ac-41de-acdc-db0f84476a5d 7a2d26a8-cd26-4c1a-946f-21c704a6d367 e4c9b244-6966-40d3-b65f-7b66542dd2ec ffdc727e-9748-4a7b-a182-c7214bfa28e4 2f24e794-4da6-429a-b0cb-ec0bf229e835 d7e2b70c-6e4a-4ff1-a6cd-7a57a47aad33 b45041bf-b8ce-4764-923f-cbb10f4502cb 0d621f0a-2366-4063-9ad6-63813e789398 c5808b5c-08da-42dc-a58a-a72beed72156 ca542703-f5ab-47cf-9163-c5a8c41433f7 0a5ce4c1-099c-4afd-a570-bdb1279745ee 5fb49bbc-12a5-43b8-b723-118609ff8d9f 15004d11-2cdc-4ccd-834c-e4a9c8826cbb fc472bd7-f351-4231-8fea-67f960ea6f0d 8281d6a1-eb3e-40cd-aacb-6fa453326f34 0fb8bb70-de34-4ba8-afc5-4ece13649eb5 6a210682-664f-40c0-8b34-078dc60b06dd 05ad220a-3889-443f-a67f-bef3200e8ceb 652f0712-cd93-46e5-9655-9fd93ec8c06f a18a50c3-bee8-4060-b4d7-c796ccd7f822 37e69b69-f082-4651-b5e2-7ab072f755e8 4c5f2b2e-87c5-42ed-878e-d015c915f904 f561e17e-d023-4137-a57e-eead6daa108c 74c9f86d-ce58-440f-9ec6-4977b7171a55 38ff9e92-ed0f-4048-8500-1cca120f129f e61207c9-78b4-4404-a135-ee9ae15717cf 58c233ee-95e4-4201-91cc-64072199cc4b a612b15a-2a17-4a7f-93cc-274b5082cdef 05f283aa-70d0-4a5e-bcbb-c7c23a3ec23a 94966e2c-d415-4bfa-8219-b5dfba54bebf 9d468bdc-7920-4589-9b26-f761393658d9 602f29a7-7450-471e-b8bb-e12ca0794ae8 38ceaf38-113c-4bb0-a7b1-43f1b51157e6 feecbff9-c239-4507-bbfc-e3de81a413a8 8a7e8d3f-e33b-4a10-9f7d-c9c9ecb5ebaa 1299f2da-a0b4-42b0-bc5e-932bb04e5eab e89976b9-1518-468e-9cd7-1ae93db90108 7b629740-b4d4-4cbb-9bd3-830146302e08 f0e9d073-8293-4524-82ee-6a2005f59aa3 53397252-a514-4d9f-ae12-383eb6f95e50 1e4a82c0-1f54-4c4f-ac05-f7c16c4c9ec8 93b58ded-f4ee-4cb5-a865-43dbdb5c7ac0 85b81c17-9990-4b1a-b267-6ac5a7c28e11 5b9a1977-d8fa-43c3-a6ca-1eea9eea1823 a4805443-9e0c-44a2-9562-a6bc437b7e34 054ff3e1-cbfa-40a2-991d-16f63114bbd2 d514c4f2-8690-4b54-892f-8dfcef655dd2 2c8bc851-2f86-4863-a336-7028e1436eda f10b1739-e818-40f0-91a8-81bf50ba0f30 71c0928a-03f6-425c-b68e-6f02614b5fc3 fe913206-3f07-42a4-96ac-c5933029387a 87ab21ed-4d0d-408a-8d42-0e0294413cb5 a9227bf8-67e2-4c79-b796-a0319b60dd83 ca786461-3ea5-44fd-ab0a-11f29cbfa979 1319a767-2802-42d5-90c2-4eefd927ed11 3bf0fa9a-c074-41b9-ae70-dc0d71af4ca9 c0bb754e-dd8e-4de9-81a0-4c84b60434a3 cae3ade0-d2a0-4553-b936-36739a8cc13f ae226c6d-5185-471c-98ea-e8ca25d48a32 8a680568-72cd-4367-86dc-5dece31c6e88 f8aff445-bbaa-4bcc-92a2-af22ba6976d2 1eab9595-a3a8-418b-88e3-b773366d301f d4d3ff5b-de8a-447a-9e93-ad872f3add38 67766779-b02b-4bf6-bcc6-a0471e8ae80c 9fa1e6ff-6038-4cc9-8bf9-9e71f3ebda7a 0332ebb6-e473-4f7a-8924-2ac79ec88471 52fcd15c-216e-4551-ad47-f4c26b0c762f f29f4175-3af6-4e10-9055-4860ecac2303 576bb97e-d5d4-4c27-a6dd-03e5bf59a093 36c16e7d-f603-4786-ac3f-c04311037111 9adc0353-484d-4fb0-9b7c-1c8cece5722b 8f3e254c-9ae0-476b-9552-3e7a90a95ed1 c1f7a907-f663-408e-b2da-924c77d693a6 525e8f45-0e6c-4912-8004-cfe7c7c03f38 4101b7d0-6517-47b8-b6a0-e827b4eda93a eed8aa02-4b78-42b3-a002-a95a89c3d847 de1b73a9-cf8c-456c-964d-6bb0e94a91f3 c2c3a0dd-f1e7-4b33-a7d1-7f56f3b999ac 7a520b86-0e62-44fe-9ed4-4027527cbc0e 43743012-d513-4370-b1e1-ed0e43b053f4 193107e7-fc08-4398-884d-149722545c80 9f2c8fde-64cd-4c31-9858-48abb0caebe4 5bed4368-3d0a-49ea-9c50-1feca8304f29 05d1259f-bc90-4de2-8625-6a81196286b8 d3c2dd6e-6bb1-4d53-ab88-436de6833415 db32b785-f0e7-4796-a6cd-b395da23dd3b 9b308b6c-aa2f-4d00-bafa-594c20134b76 af2f55bf-d5d3-4f49-9a09-b9c7e0972361 11ed692b-3417-45c8-855c-67614f9f02ac ce98a10c-1f9f-49f0-b3b4-d3a7c7d21275 b653ce13-85ac-4f58-b144-10d869341526 a3118885-eb45-4b1d-8de2-df1a8adbc9a9 59fc96da-7887-4ef3-bd28-ae76860dfecb c2d6b8da-7ac9-4f5c-841f-ba51fa641cbc 957be607-920f-497d-9f96-89a74c8866db ce76809b-3ea3-4325-9d4d-4dfd63ddfe30 53f00f48-8681-49c4-9fe1-8e8b9612b96f c7bae53e-c75d-4c89-aeaf-1a266e0525cd d4b2f648-3f50-4f99-a09a-d3e6d265d344 68bdf384-88c2-4f7b-9fb1-5d6369802498 9981e5ca-f589-4166-9487-8735d8a96413 aa6de880-6ec3-4778-b2e7-a08149d1e87c ec4ebfc1-25cf-44d3-9fcc-ef1fb6c4943b 88dd2d05-c21e-4df0-b669-7e166a0a6ce1 a2da7c40-bfcc-41d6-9263-8808efd66715 f29a749a-ba82-4634-bb1b-d8516099388f 05a7df4d-144b-4465-a541-156b46e2e319 f9c7d273-2c0b-4952-88d8-bb532a641a37 9a926be4-9be5-4dbe-a051-e43e391aa88e 5f4a476d-dee2-45dc-9778-1595168bd0ce 7bd92f29-5882-43a4-b883-d047f6c3b6f3 0795e333-6763-46cd-9715-aef6c344de25 758e6e13-a14d-476f-819b-9e0f5b646c44 bf61d5f3-61a7-4fd7-833f-1944d3e2df34 530cec8a-72c9-4891-acf1-4b0718652800 ee916572-d9e5-43f5-82d3-4b7ff37817df 25fb71e7-9597-4ce2-a3db-5da68876fc5d 8f0192b9-0eac-4db1-9cd1-987ff06b88a2 56438df2-7886-4421-aac3-e28ccc4cbd98 709eeb57-2202-44fd-9de5-3d3ff2950fb1 75573aa5-408b-4f7d-b400-4460e98248b4 0dac54d5-3b4e-4cf3-ba6b-be1688a5f3bb 55e35f6f-e59c-4cde-b77a-347e80b2658d 3d7f00ef-8ed9-4b88-b4b4-2a3719a93de7 f36e1688-f2e6-4562-83fc-733586b7399a 51a3050f-fa4d-4690-aee9-f1d9fdb3343c 8c792f91-8522-421e-883d-24c639bbebee 3ebda99b-52d3-40ec-81b7-8c3607376288 4e6765ee-5aed-4203-b6b4-5f597d5dacca d963efb2-2b39-41f4-8ea3-ded2d7bc0baf 6e3fa852-1b41-4e9b-889a-b28ff8d18673 302c8153-6df8-4c21-80f0-9511fa7676e0 b84811be-013e-4e79-8a40-1b97aebe13a9 7a028ff7-3a66-40bb-94b2-b26e751e7a4d 4292bd0e-3d1e-495e-a608-e636396012a0 6f8c080b-1155-461e-9d3b-43fff58a6304 a181aecc-2528-41fa-a712-5eb7285a0fcb e980103c-01f4-4cde-a884-da91af1c489c a61b727d-ec30-43ff-b795-e9c371247fa5 83eccce6-edf0-4a65-abb8-c67cb99a2536 ff0070e6-ea7f-42ed-8b80-f15f4a6cabe7 ad584f6a-44c7-4030-8319-67e653640aa2 c045c0b7-fa11-49f5-8eea-9e36c03a3022 bc4c44ed-c9b2-4722-81e8-80df22c2cfc9 39e5268a-3c73-4b98-b880-58419a01db0e cbec1ac7-c63d-4c03-9ee7-343cd39dec1a db8a4240-7a1a-4b47-8d03-4df0c105f590 af0c621d-cb08-4133-97e2-bfe797996848 d2b77c00-a0c4-43cb-bb77-a80bcfb25e9f 3f6a642f-324b-4181-88d4-1412536a18db ba154ac0-7a28-4377-8104-df0c4c71df99 3cd224d2-f512-4a29-81e1-4acd037aa35a 5b1b0149-f061-4d8f-b7b7-26b378641230 e2ca406f-8f99-4598-a5af-8cfdc179bc25 7608ee46-25d5-4590-b0a0-9a7091696f5e bdeaddd4-5f6f-466a-9e04-7c43821bbb01 47622652-236f-4602-b1c8-fe7696af50fa 61e50bfd-3669-469d-8c8c-cdd74982ba9d 8a02ca68-4f43-43b2-9271-9202d3b76a57 4d2bde36-61b2-4cdb-8152-595f50f3e6fa 3925910a-7254-43ee-b467-f054326aab4a 7d27081a-3d3d-4e7b-8b40-0f45eaec4eea 5e8dac68-53c5-43f4-a94f-4547de5dc6c8 6a6b536b-e678-406c-b8a0-5bd1e835e4de 84ed42e0-026e-43c5-b6f5-160cfb2eb0fa 281d1864-9bd2-46c4-bdba-fa8c92c07e3d 48823ab2-1282-4abe-815f-9c889b871303 07f33e16-8114-4c20-8b5b-2c5c0fcdef1f bad46761-dd16-41f1-afec-be485fba3a72 e5798604-cd43-4675-bfc5-1f41351269da 5ba9663a-4e38-4dea-9790-5f1c2a7f3854 28d78434-fbb6-493d-a509-bf1286e792d1 5916db7b-8d3e-41b8-9f9c-ad2f3f07c999 476238ea-0fcc-403f-add2-4cf6aa379004 5f1de5a4-5bc0-411b-856c-9d74e6e0db5d 087dee18-36b6-4058-9948-946bd37328bd bfd1a204-4211-44d6-8761-cbb19057ddb9 88fa233e-96af-447d-90d6-3e2d434e9714 ac939541-8c16-4f16-8488-8c2f5d119181 99b235ea-0448-436b-a305-4ecc2c01499e 175de7e4-f82b-4021-a5f9-7d55f3566430 1aff1854-1caa-487b-9521-a6f49523211e 83a2f233-7ffa-4905-aa87-67067c318763 521db5ca-5d3f-448d-9671-a521b52f1eda 85982c83-f2b3-4de1-9b61-01e6f1cb4030 93ee10dd-05d2-454c-8688-0d5e63af79c3 9b6babfd-e84a-4257-bf36-18469005d9d1 894b25b2-fa44-469e-a7ff-28b19f0837a1 686a8b0f-0919-4891-9995-8248c785024b 284e9b10-ff7d-4453-9160-4afe6c4e8a96 f90f0348-2bc6-45cf-932d-475f048fc39e c46dca1a-867f-4ce5-be0b-ec22d0bd8e0c f34e33fd-e5d1-45a0-a547-23afdfdde301 b879e548-a68f-4b94-8378-38f20ef5cd10 54fd16a4-b936-4215-8e06-8423929d0023 7a834d21-c113-4861-95df-d1ddd8d4b42e e3bda224-57be-4c65-8e03-45535bc92b2a d92ac16a-79da-4840-9b97-a03e011592c6 45949f62-ca87-480b-83aa-e0a15592128c a6e267a0-3462-4d57-ae2d-52dedd590585 70d40467-aa63-4a2e-9bf5-af6a250c7020 5303dd77-d597-4c39-b856-58fac035f118 497c9f62-5870-4432-ab73-8966d43cc95d 101ad945-576b-4cb6-926a-74def2888061 0a048931-28ce-4efe-8e48-11e909c849c4 351f4607-bf9b-4b08-aa62-82851235b19b 9afab0fe-634e-4efd-bcc7-4845a07070a9 0ebfcb16-d268-4c47-9146-7698abfabf9f 2399d343-508e-4d63-89ac-e9135eaec9b5 559fa016-ad7a-4b6a-a7e1-c2e200107a7e 799b8dc8-e11d-4354-bfd3-a3b481c71ed2 81a0eaf4-754f-4945-8265-6de35e0a5514 077500de-db1b-4039-a6ce-fab441e67566 0473ced3-7d65-4ee4-b765-4a2e8f54b654 ab114fa2-589d-4baf-9e6b-5a39bb15bde3 2604a859-c2c8-4779-b9f3-bce85a8fcfdb 54dc78a2-ab96-41e0-8250-c3346d2af41f c7632409-a695-45c8-a8de-a3bf56427f7c 28ab879c-24a8-4f8b-aa9f-634aa90305b4 df8c0319-f117-45a0-b164-705e89b578c9 25263fac-57f7-462e-b6af-94dd562f5533 0151b138-1ec3-4323-b8a2-ce67d6469d18 1f0c2f82-d45e-43d5-b261-d979fee0eaf3 d76e1e44-7868-43c8-8c36-a38119db4395 4460a34b-ccde-483b-9cf2-d7fdf21631bb fe856e5e-534e-4cc7-9e51-d211f72c3e62 27ee3072-4a2f-421a-83b5-cc23cbf2e41e 74429d15-7c26-4e72-812f-52bf0cde693a 8744ab7b-63cc-4a89-ac6a-e1dfd530998c 23e443c3-29da-4fbb-b273-ae1039501913 88f9d68f-4aaf-4bd1-b522-ff131b973ba8 d603b5ba-19c5-4c02-8bcd-6b79aebd1ef3 7472a4b7-f019-4085-abb7-ac7b25397089 57941106-6ab1-48d4-8de9-b362dc61cee6 05ac2656-17ef-4fe9-859b-f774e13adb34 7acb78ad-a55f-4f67-a22b-a6c3eda6ed58 908e7c69-88ea-4ea3-8d18-f28f81a12b2d 08243cea-96c6-41d2-9a10-69884c5e64b5 10a99eb1-0d3f-4ac5-b4d1-b9748fb5dd61 50263392-2d38-4aa5-9017-176b6f9e100d ffb733f7-c8d7-4632-810f-21e4baae7b59 3f9a7822-3b66-4549-8b54-433ae1eb8d91 633dde45-cb49-4efe-9483-e12a21146503 01a6ce8a-01a7-4617-9cc3-fa6e4e79e74c 1d4c2547-4696-4a01-9928-bb47aca56149 825ed3f9-cfc1-49cb-b25e-0854e7fa93f3 5f80105f-6638-4d70-9b1e-9fd8bb15d614 0b25ba1f-9f7b-4c63-9062-e38b3d3d03a9 0c157e6b-6211-4632-8907-05486691422a 8d2bc0cc-43a6-4ad4-abe9-2177ccb9933e cbe1760f-4bcb-4b9b-bc1b-5b39f4af5c8a 507a3f42-4835-48b3-b79a-8e3f06b2848d 65ac2ebd-68f2-44b3-b11a-2007359427ae 297c5564-46ef-4e95-9110-8aeb238d91f1 015309af-7426-43f7-b48b-837273864455 9e8f8019-3279-40c5-83b2-a7e4284d6b0b 2b9ff5e7-9c7c-4889-a028-6e12de4edf2a bec43974-1e92-4051-9ef4-c7bde47672b7 29f30b8f-8366-4f34-baa2-5d2e8677617f 0225107e-c62b-4fdd-aa6a-2d28c0ea77c5 30f7c513-25c7-4862-9c85-9c537af4da65 ef2d7f70-8d7f-48c6-b43a-cd10fb5872c3 9f75483d-e557-4b7d-8b3a-e1b81a997085 515a6b55-b564-4d7a-85a4-1baaad1892ed 06ca3517-3110-455c-a156-9d980713e86d d225bb60-8648-40de-86bc-1ae9f49a203c ce01fa77-6cbc-4992-90c3-e60cc246eb6c b8470d67-447f-43c3-bc8f-46939737d04d 1f00185c-e301-4ffe-a327-e6f6915deca1 d491379d-a731-4e95-9df2-5b342a3b69bc 46342395-379b-4f6a-ae6c-feecfb79c5da dd0813e9-c3a6-429c-9808-4f39f57d1c97 35195ba0-e30a-486e-8ad2-32d9c460490d b4be457d-5099-41a7-bb71-d8b94c194faa 39dfbc9e-b20c-40f5-8d59-7b2cfae3f275 c150f767-5b0c-4ec4-b0dc-926f4415d611 791758b3-2c61-46c6-b74a-dcfc84ea2e28 f2ee26c0-837e-4a61-b90a-3c088564fd7c b20702f1-3aeb-4227-bd83-87fbff2eb3ce cfc64b6a-72d7-4998-a417-68810bcc4814 8873ad67-1755-4eef-81ec-a2d0af7ce0b3 792766bd-e129-4325-bbe1-ee7c3e57ae97 b558b4f9-2643-4d7d-921b-ba9fb0fa005e 499e52e5-9cf7-4c17-9ca5-aac8e141f5d1 9d5b332f-85a7-40d3-8b96-49b9047b5cd5 fe0b97a0-082f-4c68-9ab4-7d0a6d8c1e8d 9e6d6c43-4b38-4ffc-afa4-d31a0815a0c5 44286319-6b1f-48b5-9919-6027e3e8858c c262fe00-bef8-4504-b2d2-cd37cc134a7f 3e4d85e0-e392-4fd8-b111-dcecc566c55d 3511099c-9f83-4137-9570-d4f0187d868f 9ec8aa53-ebc4-486d-9f35-1213a75394cb 040d071a-46c0-43a7-93b2-bfb34a00e345 7831b189-0783-4767-9ea8-90eb3989a6c7 c65454ff-23bd-4540-9b71-915bb554114d 4a4559ce-4ed0-43b9-908f-486b052f2928 b6b290a0-0012-4c32-aaba-79adaf65aa30 2ca52fc1-a9d0-4f87-a9d2-bdbf788b1352 853aa4fe-c91f-45ca-9eb7-de977f77a93e f96bcd78-497c-41d6-92f7-95573c4e11d5 255128fc-d1f1-4c3a-872d-60ccfd73c32b 8c0184a9-8bcd-4c15-9aab-24745aecc863 c689c67a-66b8-4de0-bfda-54af0513f438 c3992f19-e947-4dee-91ce-e9ade02723a2 7ee6a992-d912-447e-a718-24da90e047c5 6232e139-f861-4000-b339-ac018442a24a 009a1632-2976-4256-b2e2-b80da0b320b9 049e6efa-2b2c-42db-b695-b0061ed359d0 e20c01b9-4fae-4616-b5ab-db5f06645fcf 87beef4e-cd32-49a9-a849-8f629c5d08f6 4e42fe57-7ede-4284-a423-c76c25c2445f f307a171-d5f4-49c2-bcf2-3c851202d6cf 2c62ebed-dfdd-4d42-9597-395aa7e5b73e 3a974fa6-9f99-450b-a52d-0ded12741b7e c24cda64-779e-470e-af60-2b6cbb9e5bd2 ee7bbd99-8cc3-47b3-83e6-eeb1c6c507c8 8294f2a0-e078-460a-92b3-899bba2bcdc3 b856a0f6-ba10-4275-b5fc-09675a3e27da c4e75fdf-7e00-4d47-871e-8c4d493ab412 701661e4-3ba9-4a6f-95d3-03d21c94625e 13d5c3e4-6dfb-4ec1-9152-5969c60bcb93 f7e83b00-a356-4917-a96a-22940d25aba6 cca184c8-ad2a-488e-b8ae-fa6b77fb13ac e1b1a4b4-9b1b-457e-8812-ef5fbde79577 c713d188-0657-4f60-acea-2f3a332377be a7c27fdf-3855-4983-aa05-b4a6719ad73b ed7a25e9-7406-4119-b0c1-ae76c2a95e90 96e398b9-0ca6-4108-ac7a-956b244777c2 63c19ea9-db3e-40c5-9af2-283b2d029d7a 0c823379-0610-4f06-b036-96830d5b939c cdd6b936-a70e-402b-90b3-5a13bae5d099 ff813b64-c247-4123-831a-679ad5bee13f f7fb7e65-7e9a-43bd-9fbe-35d0e317303c dbed6903-0032-4b35-a7ad-c3b9ccf33e28 9eff8749-fbbc-483d-a16d-8c00cc5c72bb 693aaf37-0d7b-4cd1-b465-9183d8df6d55 4c0c427e-d80f-4783-9e8b-f20d25f3289a 545ffb2c-0ff9-4ca6-81f4-e7316fd4d885 67f6c6c4-b801-4a9e-9574-ac2e0c6f2c6b fbfefbec-3ac9-4003-88ad-bbc8f13b9bdc fa58a29f-b993-4152-8bf9-9f6760fe899e 7e68f421-99dc-4c77-90c8-32dc864dfdf4 d7e32023-4156-4a16-bebc-b3b7c916b58c 0c96d230-b68f-42bd-9eca-f18f7e518c21 4c2277c1-5d05-4cd1-a798-5e8e584ce123 beea3f8d-1e68-402d-8eff-a690651fc18f 9269428b-1986-49b6-8131-1a60cd2c460a 29290166-2c8b-4538-99e3-a4279161d99c 1c480b64-a4f1-45ca-b3af-4af8ca376a61 6ef4e923-4470-47e5-be84-6f4895dfedfb 1f659990-5289-41b8-a835-0cea5c054bb8 004115e4-8585-4aa5-bbf6-d7e10ee4ce57 2a87d2b0-c973-40d8-9dad-4a10611f704d 87d489a0-02fb-441f-87d3-0ba6d29f9c6f a78b9494-d453-465f-896d-8f37aa3acc81 bdb3ce35-b3c7-48dd-984d-de65705fc2f6 83e28f7f-ee89-4368-92f2-166315987144 3f389c24-9bac-4c57-b90e-ca753b2ce9b3 bb5638e4-de03-47ca-8bab-a1a06c9ca4fc bd85192b-57aa-4af7-bc3b-98c5c16843f1 167d38d5-3868-4f82-aad2-91499af231e6 a8c1c7af-618d-4a61-8ea6-78b8d5964bc8 8c2fedbd-a5d4-492d-8d65-4f0c0e9c060a 7821e828-0526-4627-9524-f6d11dfee49c d708ade3-90bf-4192-bf2c-b42a225cb256 ce09cb88-a95f-4309-980d-bebc636e2bd6 ed77c0cf-93dc-4e25-96a9-4ba9fb941c18 b8230ecc-50cb-48d1-805a-4074a08f32e9 1fbec7ca-927d-4e98-afbe-3ac2448db181 6a915c6e-e506-4f4b-8806-2864dbc33120 13c84fe7-2718-41ec-9eeb-0938b1988041 8914625b-86a2-4d27-b5b4-5d1faa84ac5d a1e386fb-3645-415a-8011-8fcfd5e64fd8 e91d167c-e6cf-4305-be99-22da9a552638 c952c194-81bf-4bbe-a7f0-6b2075cd104f 400134af-629d-4455-a165-f776da8cf3ac 60edefcf-0193-4827-9ff7-8fad7dd72b8b 33a34ae3-4ef0-4b84-bdeb-b674919d3d5a 7a0cacfc-916f-4e9b-a6eb-f86414502ce1 e9b4e449-bab3-4244-8d07-7b6538ebe119 8aea4f2a-2d25-443e-b05f-1f5516fd2551 b1cef4e6-bc03-413d-a913-15028d8dc3cb b14e26b8-29e9-41dc-b2f1-e8db25acbedd e8621f3b-5211-4b0d-83cd-000a93318599 37d979f9-68ee-44bd-b7b2-8270207f12e8 9afa714f-4dfc-455c-8e0d-71268400d850 9a7b7051-d71e-407d-acef-85ae2f55774b f7a1ca36-c523-4913-aa97-f584175c74ac 0d04a180-922f-42f9-a074-a3e5a16085b2 f9bc1295-e204-4029-8b1a-9df1f03ec94e 43612028-93cb-4045-bbdd-08c59fd0674a 1ed7d8da-cce1-4556-b804-4f23c8121e49 8b11e185-2135-4f87-a902-25fb6442f4b4 c39d6d12-1e22-4f44-8f7c-75fa22f3cd29 16abff6a-9026-4a7b-b2ed-bc68a285df5d 2a1666a4-1988-4ba3-875d-6ac01f74622e 02f525dd-2673-4679-b404-bff847fbf547 c277e860-27e5-4ea4-8129-687fe13ef861 4e35c81e-3e33-4325-a74b-377a05d1407c bf181bdc-21a1-4e0f-96fc-02dd2e1cce9c 2d240fbe-b916-4848-be7d-b3a058b96b13 07a55ca2-b2ee-48d1-ab22-2ee0c51dd3a8 0978629f-7b35-45ab-a68f-2473b032b70c 38bd97fd-3957-4bf8-9604-bbd2e3ead3c3 d9df7ddd-4aa7-4a8d-83a2-3375e38843fe e97667a3-6de9-48c9-93f3-ffe924f39dd1 f55cf62a-2dfd-447d-978b-950d9df6c584 1dcb0676-ea11-4ebc-9a56-e64ed46fe3a6 e0db9c55-83c4-44bd-bc1d-6fbbce629d3d 43314ef5-8ffb-4eb3-9bae-96f3d11c33c4 d2844961-f79b-4764-87f8-13efb5457ffa 35a54b51-0ccd-4962-b28a-b1f82809ca83 4b451187-0329-4d7b-8332-c9a5bb97e419 a7aa4234-c332-4f8a-9854-f2c28ecb1127 209117af-295e-42c5-95ca-373e72e6295f e97885ed-5002-4880-88a2-0788548eaf34 909ecc53-35fa-4551-bf11-987a81994177 cbf17922-8062-4336-8472-cfd68e2b2262 b88f426e-34b1-4112-a3e6-d65a1850d8c0 9c34c044-dad2-4554-a54e-0f47fa6eb87c f31d7a9e-5255-45aa-86d8-953347f95d50 79d706a2-c794-420d-a760-0f6b74f2d061 b9421aa1-3c78-488e-9af3-8882b20b097d cd4fae71-eef2-49d2-81a4-50825c96c30a 3d32b0dd-36c1-4398-b552-b290630495f5 38bfc49a-8a0a-4c63-b883-1eaaa0b5e4ac a9e9ed09-d296-4e97-b2d4-757f03f8bab3 e68b9d89-0fea-497f-a8df-425939cb3527 8b33d633-b02a-4cbd-887a-204561de0d6d 24495ccd-95c0-4440-8fa4-247a0be6adc5 7692e32a-a44f-43f3-99e3-2f110b149e83 69570652-54d4-4f1b-ad7e-e11964cafa59 4c53377c-d018-4ef3-a13e-0a4d2b2c3080 aa70d024-5daf-4b1d-b485-96338c5137ee 3570d836-ed43-49a8-af42-45811b5a8a0f 9c43eb40-4e88-4cfd-93c1-9f3ad9e655df e2bf7fba-44eb-4dff-975e-fe3cd1983d35 f31f6a85-1853-411a-b86e-cfca01a9b20b 325f7719-4e3b-4fcc-9d4a-aa2383ee0914 9a904e32-0a9c-425e-bca6-6d8b78308786 8c38f0e9-1879-4821-a07e-5f83cbab8e92 e72fef83-3a54-4f18-9bef-04a7c13112d2 4f2cab1e-a76d-4025-b220-1a086d1a291d 52c55d1b-b163-46ab-b803-ada7c6f84fba 01537073-c13b-4f54-be45-4a829e845d97 e4cae1ef-7239-4dcc-bddd-79fca9f33c98 552477c0-8df4-4456-9e72-7c4f5363f22c e9f263d8-333d-4b10-be7b-e319cf0017ee d3f9add4-29ff-4de4-8552-c1f776fca736 14838f3b-3f67-4e97-b8c0-7fabb0aac7d8 289b6b68-69c5-4a00-a6c9-fecdfe464f69 50547c2d-c248-436d-aee0-cad9f74d6957 ee9013cd-0ba9-47ad-a544-816051f55fa8 e78f33d9-6734-4fc2-a2d0-92af1839b96c 998e4e36-9d2b-41e6-8d76-04a9fe0d4cfe 6c853545-bb63-47ca-82ac-10d46818659c 043b6cc5-9c3e-4fd9-b8f1-2c54da3a1051 564c2c5d-d634-461d-b934-0a1caba11f15 cb23b2ca-4631-4699-aac9-697ca5edabd0 44d31545-f783-494e-8902-389af61e92f7 14ae09d3-3a74-4db0-af26-f5c94850fcf5 2dee9c72-bd25-43c0-809d-bad603df0447 eb5c15db-df28-48e9-adcd-d3ad4faa1b54 5d4c4db3-59c5-4a2b-a717-d81f12cbaff6 0cbb4e1a-f172-4702-93ae-6119b678ce95 39634180-74b8-4a82-b921-51c5c9f434e1 fd50d3a1-4c8c-4fdb-a42b-281a4e8b3924 229ce692-e020-43c3-a1f7-407191714545 a4dc9aa1-88bc-4e3c-b82d-567b6a21f156 8a071f65-2cbd-47b2-b405-9b513d4ad112 8d6724e3-8d80-44ec-a884-1f9d7980a190 48299fef-da5e-4001-9a8d-8aedae8b04e3 afc08710-75bc-427b-af68-5cbace80eea8 0287e221-8527-47c8-bdeb-7b8cfb01b2b7 ac91dc1b-311e-4d42-8dd7-920644a2a00d a27fc4ad-46cb-47b4-8da7-938cb3549953 d065d2b5-ee63-4f7d-9cd6-5010aef86245 466ddd82-524a-4d93-b1d1-fecfb703481a f48a635a-bd97-4505-bda9-fb5c3fb87734 ba22b5cb-cb83-4b5d-a122-08e30a6471df d0c96442-3966-4b03-ace0-a634f2ec37d3 2712e296-ac00-4323-8d7f-5dc091f31ee4 34795d00-dc60-4012-9c04-1a8b4c12e897 668d3681-5761-4f27-9e8a-5d98dd2b51b1 8ecbd905-153d-44ed-aadc-252bae871165 9e173606-f1ba-40ac-b3a0-a23f59a65511 1b33af58-d663-47eb-8b5f-cea035dfd4a0 0b61d5c6-dc73-418e-95c0-017d8e9a53ef 9e75cbcf-56a0-4f21-a3d7-fb8ad15187ec 8dc9c201-c1d7-41bb-9fef-fce69512094c b38c4768-0145-4962-952c-a73c0c008424 aec4d98d-f8af-4372-8ac4-f2880fceb3d4 a408a090-eca6-4dd0-b363-7c5f26e90c06 862e056c-677c-4ab8-8daf-936fa8835737 68bd3d6a-d9aa-44f8-94ab-3bbc53f328a0 9e2bcb2c-5e68-4024-90a1-8253219d2fa3 180df2a1-7366-4486-8641-f963942edfd3 9200c414-7510-4a63-840d-32534df7a239 9bbfb179-f09d-4f69-aa3a-498942d6ca78 3e345ec2-85d4-4ea5-9c58-bb9e80d694cf 4370d6c3-18c9-43ce-943f-345b748b6ba1 2997c9a3-e1a9-4c2a-82ad-e4c374327785 3a755e5a-55d1-417d-86ae-c4ebb500165f 36d0f9bc-a011-4ffa-ac62-b23eb16ba256 c28c292b-761a-42f6-99f4-0c193becd53c 37159550-cfa0-4e67-96de-54be4ff821ff b695415f-6693-4dc3-8f02-7ec987dd6662 f209bab5-ac2c-4ea8-ae4e-e201b3e13be7 a163109c-3025-44db-a948-e5b594354374 8e990aa0-3e59-4c13-b0ba-03c91f4a5fed 0cfcd085-3240-42ce-b1f3-d4f5134ae5cd 82f17c28-4a82-4979-9b6b-132cbf0ba56d c61f99b3-adc1-4fad-bcf7-239fca89b8a9 7db4f760-ea1d-41fb-b141-0b93bb5feb4f 821f01d1-146e-4222-be2f-cfc72f02989f 720fde42-f10f-45eb-8501-a032f1728961 c7ea5842-4d9f-4450-81f3-ea86d2db6ef6 5849055f-0e82-4781-a62e-7bd34da42879 eaea78c3-6640-4e2a-a2ed-be5a1abc1e86 d6fe7a3b-f5a2-406b-a1b3-817b59b501bf e7dc0c30-4cfe-442f-bac0-a6995de16d95 f97a0327-4551-4608-a2be-09ea59466685 77692b48-ab26-4745-903c-eceb4b81bf24 59ac52d6-fdec-4874-b0bb-daee511f3cff f330d9f0-5bb5-42d2-a6d6-d79500a0169c 5a0316c8-4c29-477b-89d7-26a93fd3cc78 019bda48-5f59-44a1-bf14-92c762a1e5b6 23e121c9-8161-4083-83ca-c569bf9d7579 6c55b397-fbd2-467e-88ad-4663195527d3 7352e8ad-1d78-4743-9469-db8ef9c84fcb cc5cf9ca-fb23-4533-bd00-77265d0d873d d9903feb-201a-40d9-a3e8-dfa13059718e e9287fb7-e495-496a-8193-80a6ab26ff29 6a8e4c7c-5e42-4d6e-b998-24ef77d021f0 30d37ecb-80ae-4208-bd09-d66ca2f24481 bd273b66-bcb6-4c48-b091-67f56e9aafb4 76795cc4-006d-4b1d-9177-a84d2b71a7fa 1a059f71-3b9e-4cbe-b46d-b8efe6b75231 ff6bf4f6-d078-4358-80f8-e424b927b241 333289ce-21d5-4d73-bece-810136deb2c4 c88cdf96-7331-48b7-89ea-b9ef79f68702 830ca99b-3517-4e42-bdf5-5d59e8b29789 f389b142-fc29-4523-a9bb-68efe067fae8 40fa640e-9940-438e-903a-9faa3e3cf509 db4f64e2-eddf-474c-80ac-3cb9215ace68 0b72c324-d892-414f-bb3e-53b4c48cbc48 bd937e48-e91a-400a-ad08-c4a637dac35f dd5e7a13-6747-4bb7-b086-f7e4bdf09463 ebe1464b-4e89-4a54-8e75-20fd1ca93afc deb355b6-5b8f-4f36-a479-0ff8c76ad7d4 4619174c-efe9-4165-b1f4-390b9b86d9ed ed63d050-1fa9-4979-8232-3160443b763c 574abd57-9959-42ee-9614-c705564f183a 0850139c-b97a-4ccd-a82a-019034fdaf80 cd909bf8-9f4d-4dab-8c31-2ec27eb858e9 ae89a1b4-3159-4f7c-9462-86916f8ae5e5 07901255-0543-470f-bd37-6df7d863361b 3d59cecc-4269-4a64-98d2-35680c752015 6fba06f6-a9d1-47f7-a935-a09ffba2350f 32333297-0a57-4e0a-bfcf-dad3faffbd40 b967436d-9003-45b1-8539-c0d13f8a245e ddbb73cc-e497-4b58-b667-92caac7bf427 b1836031-9768-4ade-a216-84236f03a616 40d4e847-cc23-4f13-b02e-d365b58a7505 4cce8954-e320-4538-b74e-a10995a53850 70052bc3-4a9a-423f-a6ce-fb84c9efda21 c5d3b6fc-ab37-4e8b-b474-41d7a861b0f9 c61a5408-5c78-4375-9e08-dd803754672f 6f4885b0-c335-4934-a5dd-917f5fc245cc 03a1b222-1a7e-4e6e-a6ab-d733680448f0 6ff6a60b-8cbc-40ab-82f3-a3380cbfe88f 9fcbea14-ad17-494e-a596-b471013793f6 3a40ff58-0cf1-45c7-bdb3-e34e270694df 62f9ca1d-6e57-4d8d-936d-9fbacdd289f4 df4f733a-0da7-4d16-97f1-ae70dc455ab4 46b35141-8ba5-4955-aafc-b9d2c75dc5ac 25b83e92-b295-46c3-a993-766ff3fb38f3 7d3ba5e8-c923-42d1-a5dc-7de1ec6db40c e01360fa-4865-4584-90fa-2ec92e77d5ea 86524f94-3e37-45a4-9887-d42240949ab0 f41bd739-6b56-41f6-8549-47e460f1c1b2 350442b8-c3f2-43bd-b601-d000685a588e d6f4ce15-f38b-4a4f-a047-1ffd38c094a5 dae1fd67-3b03-4273-b8d3-83a78df66934 bdbaff73-bde6-447f-b210-2a551ee916af dd4a0e97-2e48-40b5-9a86-b56523cde0db 155cc44f-b951-49c5-81d9-9eb333854847 bb3effb2-d36b-4440-9f48-86129353a9ab e71dac44-4a6f-4e46-904b-8b7e09d31083 e6e6bb0f-d4c1-42d5-93c2-47e94aa8efb6 52f3f105-9183-40c6-8641-269c4c69dc24 136f1e60-8da6-4429-a48d-85cd3736b1d6 d4671f6b-6d8a-4ecb-a9a6-c019d14faca1 02bdc1c2-bb7e-44b3-af73-c60f5bf99b21 50e51a06-a696-4314-a478-decfbde1b46a 7fb03005-c55b-4bda-904f-3825672bced8 460b2b85-b63b-4a0f-9845-f212a545de3f 58f5d337-4621-4c02-820d-98f602670a63 efda821f-bf3f-4ed7-8e24-9c2d9426d9c5 c02622e1-1516-4461-ba99-3bd799bf9617 56bc455a-b545-49e2-a2d4-b0041446fb9c 976df240-d5af-4de4-a5ca-ff5a712ffb5a fa25493b-1e35-4e55-a1a1-c8ff6636906b 86833c6d-6fb4-4519-add3-864f67959cc7 57e86311-8787-4736-a47e-302aaacabed5 3c3ca50c-68cc-46e5-84b9-6e4e2943ec93 df4576d2-b6fa-4b62-b5f3-b1467fa6dae0 31771f2d-b39d-49f5-851c-bed8efe48863 445189f5-9c58-4c0e-af50-86490a71ddc0 d2ce2e24-5182-4131-bc67-383929bddb6f 2e54aed2-74b5-4251-aa8e-93db9dc12241 5e6cd036-4d8a-4939-a9cc-fa5332e337c9 573ec003-7e79-4aaa-afbf-34e87305cd99 82e23da2-69bf-4d49-b48e-faef94ff4962 dc1cccfa-86bc-4b9d-adef-b9f9ea9522ef 04e27928-7c28-4cd6-b01b-f3c2a8ec74cd c218aee4-4c0f-4cee-b2fa-6b2505163289 34a23cfc-061f-43c8-9f7e-a1c0c7347438 682bff40-ef94-420c-aebc-390a5955de30 b0cb0ce5-d810-4076-a2cd-745b36fe35bd d331e6dc-aa77-4c91-a954-34ab6b16e3cb 4f10cab8-32d9-4c78-9b7f-c513274fef98 e320ea86-eca3-4410-9832-cffe0921bc8a 387e3f75-9b8c-4ac6-b996-6dd7238168f3 b9b1ee53-6f7a-468c-b248-1345d617d1cb ebf092ef-c7aa-44da-8ee8-617da00d4066 f7ee5dc7-48be-4278-820e-ffbde81e757b 75b3322c-e3eb-4645-813e-eb52af57c47a 0a710b2f-9eda-4e50-a8f8-281a4363d990 d0eab8b5-34ef-4d70-8b69-2054694a2254 cb8d20d5-07f5-444a-adb8-cd76f0f4d225 6a5fa722-3ed4-4a9a-936d-e12d1b26e756 a4b4b96d-7604-4464-b8e4-78526c4cea4f 2df22f8e-49db-48a9-b521-4c53d9690706 fb9305ad-92e2-42fd-9f7d-9f085ed8c92d bf92bac0-ba89-45ae-847e-635cd6c83e0f 9a921857-e6d4-4acb-a9cc-6150ba3eaa8f 4a577566-ba35-4e5e-b036-7a44c4710674 b6edc918-464c-470a-9b3a-571370ef0d6c 5a3cb34c-0a7c-4159-828e-7dce390368bb eaf30846-b1a6-45d4-8394-f813fe8b14f9 01eeeb92-0dd7-4b45-aacd-5bf2cbcd5d5e 0f7b0b57-f36a-4c54-b8bb-2e01d5e233a3 addf0e06-4d48-4d5a-93bf-d049f7b884c8 559efe36-87fb-49be-9872-7f1bc189ab5f d624a79d-0cfa-49f1-9f23-214ceb51a8cf 93d30f36-8bcd-4c68-b872-da5dab22df75 c43a7518-dfaa-4fe6-ac41-88870f5b1321 888e499b-f048-403a-a1c1-4c08416e5592 a366ab29-2028-4a92-8bda-42fb02f0c82d c4db6c75-6213-4d81-a7fc-81d0adde8fe5 d55f09c2-58d2-4e1a-b42f-f5c3c0e2e7fd aef3765b-7f5d-4b16-9c7e-300c0a0ba36c 0fd2f2d0-6c72-47e6-b88f-f079e6f9c84a ddf542bc-ddac-4a21-9ee5-5ecfd26d494c f1064584-b9c1-48fe-8fe5-f382e2a7e344 cfceaaff-0e17-4912-b918-d0c4fa66d128 38173bae-4738-41b6-8ff4-49bce1b56f77 8ba8ce12-a0fb-48db-8d90-0d879b1be2bd 17c546ea-9377-4daa-9934-87c04cab4b0e 4c44fa4d-af74-4638-a952-ee3f2c278ca1 a048cd9e-8dd2-4663-92f6-ef5256c121c7 654be267-2b04-448d-b451-d2b2efa58f96 60b2d315-8247-4508-959f-a5d5e63bffd5 04e80750-43b4-4e56-84b7-101cf5fe793c 25158896-c807-42a0-96a0-d62fd71a3aac 652720a2-16cb-48c3-b1b9-701b65976f91 487ece9a-3a9e-44c8-af66-e268edc7dabf 0b1df9aa-5ec6-4763-8dc7-2713be4a7fe6 baa96ebd-3aab-4af8-9301-98cfdf6889b4 dbf4cb2b-319e-4297-ac8e-7eb97d1a36eb f91ff5da-2f06-4126-999a-05e6c33c1976 695b0913-ed6c-4404-94c7-4db666ba472e 26b4c399-5c77-4e76-80f7-e4a20f70747a c7085809-b73b-4019-bb0b-f6f69d8f2475 9f20f638-90eb-4529-8a23-c6eb40bea2d9 cf73f3be-53fb-403a-8e00-9a7b4df2cbee 4c8d68c0-dba0-4d35-95d6-494cdd81d2b3 168b80c9-cd15-49b4-ba04-fc537dfbad4f 0f8718ba-21f8-4cbc-9fd8-8a1d31be4f56 1f634c4a-e66b-467a-aee4-0c310fb75503 b11ccd0a-0d74-4547-8f80-4027b84c9716 2baa0422-350b-4555-a801-956e22a02130 1ea260ec-e21f-4496-89cd-79b1e712e4e7 46b9c6b0-dc4a-4917-920e-51fdca2731d7 b89fc363-4190-46d7-82ff-bf7257f040a9 688d8349-7771-4dde-81ed-58ee7c782776 5ab481fc-8d2f-4b5e-8595-91ff69baf82d 13a90577-115f-4549-9697-6837977f5553 01998d80-3580-4444-b7d2-0901f45529f8 8bf4c355-82bc-4e95-9720-2e5e137e1dc9 be2b681d-c592-4910-ae70-050da9ad12a4 09da96b2-18cc-4796-94e4-64ad9164f18d be12140d-efb0-4ab1-b78f-358956b4fb4e 9a3f48b9-5ee6-4945-8deb-36534aab2003 3a68ea84-e30e-4097-a2af-880afd313952 e8917be4-1eb6-4e24-8ffe-fc995048ddce 8887adb2-2cc6-49b0-b575-74df663c2d87 6c12b0c3-9591-4916-bffa-f4bab2af4065 4b8d5b56-039a-42cc-91a7-7ada71a00456 0fa4e156-7241-488d-a91b-118b7ff85c43 b4f9c159-dceb-46b6-8b86-bc968e68215e 6c1d3cff-8ae3-41c7-8077-97f29a87128b 034de2cc-ee71-451e-b107-94e78be446f6 78f1255d-e971-424d-b778-be2759032bc6 1232461f-d9e0-4691-a68a-f48d7c97c228 7f32d5eb-de02-46ce-adac-b9561b23e6a2 db99884d-101c-4267-84a2-ca90db83ea66 3242e2c5-5753-4791-9b9b-ff8678ec0f0f 7489315a-559f-4ebc-878e-7e5d2c0abc1c 936a6f7c-92fb-44ea-8d89-3c2cac3669bd 89d9b362-38f4-4e04-90de-48444d07d76a 91f59895-a390-47e6-b638-7545c487ab5d 4eaba352-2f90-4119-a2c9-d2646532fe40 239d5235-e351-4fab-8eb5-56f09f883ff4 d3ba6052-5753-4f8a-8973-9cb3c24f6f2c c9ad3a2d-2387-4e49-8891-65854aa2eddc 2d25192c-007f-458a-91e1-3ab7879b5a40 8a418225-e0d0-4b04-ba40-9eb6ac1e313b 5eaece07-8f9a-4f6c-b3e6-4f2b083b3730 5ead46e7-c5bc-4cd3-b3ed-c3395b240c77 e64d78df-c7d9-4c29-84bf-0d637893c7c7 94af3c97-728c-4067-91c5-c17e79f6e823 a8213248-9463-42d4-86da-c15d6d534628 156b1b68-5ace-4422-9b17-31b33edc6380 18bd864c-ae96-4fc2-b093-09a7599d1132 608b07b9-952d-4d2e-ac71-4d155b63cf53 5dd883ab-0f70-41aa-8a3b-4b9ec379acb6 b6214228-1ba4-44a2-b0ea-77cfe88f939b 8d2ba64e-6c4f-4fb1-bc71-d18fb0c8e8a7 55f2ecd3-3397-491b-bc07-c5bc848eebf0 8200a598-f6f9-4592-99c7-00960d9366cf e715536a-954b-46e0-b7e5-7093f0c574b2 250573db-b8a2-4720-bd7b-5a324e568919 ae97035e-bfb4-4bfd-bc07-405edf42f6ac c5dbc257-745a-45f2-8b7b-91078f36a8e2 546f1561-fd25-476f-99eb-f8be10309069 3cc12b9d-5da2-4ba3-8cd6-1322c9e3911a 525842ce-1206-4870-83e4-ea1acda7976a 3ba648a9-cba4-49a7-baa1-452ffaa7cab0 16e073cc-1bea-4c01-817d-9b5a4c171f90 ed23f5f6-5607-44a5-b839-e73196957840 6cab18d8-e803-43fa-b226-c3d056aa15a3 0ec6505b-c2cb-47e4-b16c-4b0ddc1952a1 f56cd6fc-3a8f-4c3b-b64c-29451d801242 543d2ec7-c2c7-48ea-94ce-1130b841680f c7ea5f00-b17e-410d-82a2-001a0cbdd068 aa3a19f8-aec6-447f-9b83-143d46ff7a28 3cc2df41-90e5-4e86-9420-227c8f87397c 92a73988-ea1f-42f4-aa41-f47654d0ed77 9541438f-6e82-4b61-b6aa-7b09bb5d0eea 1ef8bc92-17e6-43da-942e-7547607c85f2 60cf2df5-2627-4295-8c5f-e04b3de35836 0b589c6f-dd28-4037-9abd-6c0d086b9c84 341ef35d-cb78-4dad-9743-26d0a2a9ed03 a19c54a7-c52b-4b05-9561-06b4924c9214 7ff760a4-38c3-4b93-8ade-88736e7d78b0 980facf5-fd0b-44dc-b76f-1c3093244260 fed9da91-3434-4107-b89e-d576bae32559 15bc1728-ba40-475a-854a-cf1bac7a0f71 42d98f58-f202-4fa9-b71a-75b955a91db5 d9d25e59-7aeb-4db6-8649-f8eb6660dc1e 6152b931-93a8-4999-849e-ab889011abcd 991b10e3-498f-4f32-9f18-18c78dc4ba6d 4326c140-ca2b-45dd-abd1-0ad9f6932db1 4135e297-26de-4640-9e50-e39751cfef0e 9a0e9a17-9e8f-4fda-9f24-b3f35d08d35b b038995c-a009-47a9-881d-9c1b58add0d0 63451c42-bb76-4ce3-9d99-88773c32b5d4 a674d31b-4194-453d-9eaa-4d891cf9b44f 84b1c668-c387-48f1-95f4-14c7cea44a00 30ddb6bd-f385-41ff-a998-7a7439112c8f 1ec7475c-5f44-41a7-9df5-84297055551b a2415793-81bd-4797-8e7d-b9548b216ac1 6c99aecc-ebf4-4a9b-90d5-7f0c2cf368b9 2d71b4fe-f2de-4320-8f6a-d892df8e3138 52db93c9-8a77-460b-8acc-9917cd5df353 2a934a0a-8200-4f6a-a3f9-64ec340fcb31 09a99d5a-2dbf-41a1-bd4c-a4a3851e1f53 fc3683fe-0360-436e-806c-d3fa23b9755f 7d314997-0fd1-46ec-a51f-6c4ed79e516a c65db5a2-f891-4d43-8743-7ba0e2bb08e3 7a8f95c2-beee-4d7d-ab9d-86b14482aff6 c67f7dcc-bcac-42db-9ba8-7b6ddda5b0b9 31d2aa50-655a-495c-a54f-0d5c2bf3f81c 9803ab92-b219-423a-9bda-d7b635fa2301 4bad73fb-cc9f-4718-9b48-8e78970e549f c5dd0576-a02e-410b-be66-56c961e9478c 87676b86-0a2a-4a4f-88be-beab136d55a8 8a8231d9-9f7f-4b5f-af72-bcc8b5ae4d10 6586f6dd-ea1f-4323-8029-90d139d02ed9 ff11b47e-3fe2-4c93-9e1b-93cab25a9ae8 7303f09a-2b95-4d01-99ec-3775ce0059fb f352ae17-67f6-4501-9dc2-484334dc51df 306f5c05-bfa8-43e8-8160-a2a1d7352cdb 608e03f3-16c9-405f-9973-d45ecdc245f3 dbcfc312-05eb-4530-b351-7b09808360aa 7c001fac-ee14-4d42-bae9-b5cf90fd9e78 6b9028de-1f0d-4056-aba8-4a2b31ff2aad 2c7830de-1f8e-42e3-9248-70f0670ccc15 74f94d02-d7a7-44cb-b642-dd266cffbbc4 6e89e020-a8ad-4ed8-b70d-37d90ef6f677 4c5c7199-6f1f-4f14-8f8a-89ecb06eb3c1 b0df240a-0245-47a1-a917-8a2f712035d3 faa904a3-031f-47d2-833d-014636acca21 b5379fc0-7d12-4c9c-b9d3-78d86aa1d1c0 689b23bc-d3ae-4945-92e1-6908bbc4deea dff8af09-d3c7-4872-9dae-8a6869eaac47 6d4dfba8-7d4f-4cf5-915b-105ae63dc8e0 ef29bdec-9a43-4479-8576-9d751ab6f342 f28e9e3e-ed32-44da-9d31-cd32bc9edaba dcdb02c6-a921-4613-8f3a-fb33c5652b7d 0ade7ea1-6665-4a8a-ba75-8caebb3a6f0c 4c99054d-8299-4c8c-8280-35c1eb4529ee f3dea985-de63-45cf-8477-507ff4594f13 f1981637-f7dc-4ce0-a1a0-260311a3867f 251f5e6a-cd69-422f-a8ee-2415bff72eac 650b30dd-5eb5-4199-910b-2bade3d0ce16 30b39b06-6c7c-4ea0-b8e0-eab3190a710c 7e418fd5-dbac-41f7-8941-7f1a391d2a99 bb2a9092-ccbb-48be-a808-b11c071ff4b5 4e89f19a-e41d-4c5e-a122-c5a6e586da83 49247607-9151-4042-8429-c459024621dd 0ef47a92-2bd3-44c0-a262-48e423f8277e 8cc0ba04-1d36-406e-99bf-8b29bbb39a20 7883b296-169f-45db-b311-0b2c24f3dde1 9549aae7-d2e6-44c6-8d9f-6b45074bb7ed 0e8537db-55f4-4aaa-9265-1742e8f0b75b 66969ffe-1070-46d5-925f-48376cf811d1 fef2f369-4f87-4313-a81c-65b27d879af0 6d5b2c6d-2e2e-4040-9e67-be5b17c59f75 81a6f003-104c-4586-8cd4-53f40a1a6d80 c96ded87-657c-4338-983a-444aace46ccd c2b0571c-595c-4fdd-b92d-df58145ef639 f87cedd2-3175-41c0-a4aa-bd5e0f918a17 19ad60e3-2a5e-4cf3-bb5e-4d2fbf4b1304 d7c8719b-fc1c-4b86-9247-fbbc7142c596 2c979b79-10d5-4988-b9ad-ead6e3354f97 c81887eb-e667-4bdd-b68f-3ddcd9778719 85914bb9-4f9b-4e75-abf9-17c0d280a4b1 651f769e-fba3-4839-87b6-e924344abb84 ce0e5b09-b801-4252-a1ba-8319560be85d 4e99a210-c982-455e-abe0-dc31aaaa1c21 1211322c-66ac-4862-9181-9f4a01967a24 5f669d38-403c-4367-847d-1a64605f3b84 fba6126c-5e45-4179-9035-eb4c574832ab 234a7e80-7d24-4b37-a3d2-0376bf2888f3 464f76b0-7ede-4e47-b441-cf25b60fc8ff bf53f7da-b1e7-4dac-bcc5-f012dc659ee2 61777108-72d6-48ee-9742-7d1a072a6b77 08fb6558-ecc3-489d-8068-a103099f7f57 6f54ee88-9b91-46b7-8517-1b49b3480dc0 d4d920ad-adee-4c83-88cf-6fcfd4279613 58c6f758-7263-41f2-8c59-1d242a9552a1 a97abad1-e3fb-49f7-b685-b8d6e916d0c9 6fb88bc2-171e-4fde-8a72-ebc4e23cf435 1aaf00c9-8363-4bef-bd36-e50d6c1609ad 4bc03961-a987-42af-a05c-3c3f0a680449 c679610d-4d64-44df-8fd4-63518538b10e cfe93e56-7529-4f29-80f8-16962f15bc54 a998862e-795c-402d-bc45-e6b371b6cee3 11a0ed4f-b564-4b9d-a648-42bab0f7b6f2 af7c5fff-96c6-4527-aad4-2a48587f513a b557525e-8a4b-470c-9f94-7fa3fd815251 b2b85abd-7f7d-4532-9241-b4367e37a454 73c41db7-28a3-485b-89c6-dda25f6e991e 5382f664-45d1-4464-aa62-67b89f81f51a 9497a4d0-1e6b-4e34-8507-d5c85d8d79e2 f57afde0-7f4a-42d7-a4e9-2ec9aeebdbb7 aacc4961-de4b-49e0-8e4b-612cd13ff5e1 7236e3cc-6c4f-4a78-bd3b-25b628a661b6 4b8731ab-06d9-4818-a0df-c3989beb9b83 0ed839ee-8d5a-49cd-9e35-15e7ef0d2b03 2659d257-be44-4075-93b0-569a37eb5d0a 0d099690-2462-49e3-9e18-d5c62fb15412 1edfc93f-632b-43c9-9e85-74e70c10bbb2 6410adf8-ff48-4c4f-982c-7e2491be7283 fd9d89be-f47b-4618-827f-9eaba90481cd 3eb53f39-4eea-4cd5-9764-f4ff6c6722f6 19cf0696-c298-43b1-971b-9d453cabd605 af5fee66-81f9-4f89-bd09-922f6971ee0e 5faadda1-2b88-42c5-a4ce-739868809469 5e5b4ba4-d766-4f0b-8f9d-626ab6161c3a 36916368-f85d-463e-9158-7092f587c3a6 13df292e-b0fe-4df2-a25f-3021d5bac6fd dfa06214-222e-4a3b-ac02-7c8ede24b660 765d9849-e0f2-4dcd-a99f-6c720457ebb8 f61ce5bc-8721-408d-a059-8016367c404c df7b517c-7417-4051-9a5e-023aa4e7138b c1588535-02c0-40ba-9152-0c0f7bda67c6 b65357d6-d8f8-4184-91e2-da3c845d12fa 37c3dab6-5615-4e29-8020-700cbf97b4f8 34e97cd3-d86c-4198-a38c-f7b21c4b131f e5426f02-3a6d-45be-992d-2401e888051b eda2d737-d2ef-4ca2-8207-22ca085c0f4a 11454d0d-ac80-4606-8981-093e05d83fc2 ead0abad-dc8b-47ce-bc0b-36080c5bab9e f9450549-b5d3-4285-b3ff-33248d42b4af f86c2aea-2411-405a-825d-3a53bd31663e 74b65b15-3ff3-44cc-8a56-22914471526b 339daef6-e1c5-46a6-8b5c-4d8367729b65 ffe277ed-3e47-46b7-b7ba-ea125f515244 961b672b-fcbf-4b17-951d-b218704d0c19 fbc51594-0bc9-4c7c-9782-528443cecfae d84fe25a-c00f-41f4-9526-8cacefe5828e bdd5a8d6-1b97-4801-a1bb-bbe051152c22 6d2d5d59-0409-4884-abc4-e572754ef490 57fc9151-5bc1-4acb-b99d-9d8d4328ec00 e4107a91-5976-42b0-a991-9ccffccdebd9 46de78fe-6818-474a-85c3-8dc603e7b082 dc24a0ef-8e10-4e93-86d0-5430d624deb9 c7e9675f-f4d3-40fb-87ad-240a8e0d74f4 28d1bb1f-d462-458d-88cf-7e806940853c ef493841-4c6e-46a8-b4d9-42b9fdde7e03 067c4305-0f35-42c4-a5a9-b62998b3940a e70f49e4-9790-4a65-9c6a-dba8d01278a9 98d30cb9-ddc5-46b5-be02-5503293471fa 83081e4b-0d85-4613-9d46-88e3029ee80e 8d642adf-f6c7-4464-aeb4-2d2cbbb1b6bf 5d7d0740-688a-4e66-9428-e07f9fcadf48 2d6d7dac-cd74-462a-8ef3-b0c8aa7e8b8a fff56fc4-0f6e-402e-b3ef-0cace36c4595 cf5da2c8-7c7d-4239-a953-6f7cd0a60eb4 6b49b818-5e70-46cf-bde2-d0a0eab4b8b6 b2cc6492-9e3d-4284-b5a4-ac0a17714332 7b4c2d3b-30eb-4b02-9373-222e1f97761e 367958bc-b789-4ae0-afaf-0bd8d91cde7c 4d80b869-7188-42b0-8d5d-61561d02487e e8ba2f61-7414-48d9-9e79-fc537b71693a c900a31d-c1df-450e-9d8c-1e1e1aa524e7 f7a231f4-5f42-4d4b-9672-047ddf47361b edef43c0-3b00-45a5-841b-e0ed34833b09 47f1ef40-c52d-4163-b302-4088675e5675 37a9b822-6b08-464b-8693-14b5a83488f3 8fc59538-3fa5-4319-abb4-b686a38a0c53 19164171-7761-4c20-a6f5-49bed2ce0e67 909e501d-11ff-4fe0-a706-0d59dde1a843 c1c0ce45-7a9e-43ba-9c9a-76a45ccd513f 93f3efba-cea6-4fab-9f42-dc4c8f3c7d9b 8b1ff7fa-969a-4bd7-ad69-86e27c018544 d37eb3bb-7ae0-41af-9b21-a9800e6551ec 0ab5f70f-ffc5-4ff2-8b0c-ca6bb26ad09c ec820a8a-f148-4f4e-8885-3a49d304ff33 161a2000-dd09-4bdf-9e71-76b052624582 a979a2f4-1619-4714-a0b1-f1e40b249ea1 cd145536-65cf-4fd4-9bec-1b1cbce8bd1f 6f9a91cc-c233-45ae-907d-10fc173bed49 4656b7ae-2f37-4cbb-8a8d-51ff8f273bdb ab792417-ba51-428d-a7da-9dcf74621efb 8c8b201e-14f7-4925-9aba-ebb30081d3b4 7610143a-a34f-42d2-ad7a-b87fccc66486 aa633ea5-6bf6-40c6-960b-6039fdb3a4a5 0e28a89b-05b2-441a-804f-0bd02fea687f e865303e-2814-4110-85e4-fc6e240b375d 58ac8b16-672f-4fb5-920f-c273fc6c3a0e c627874f-ee0e-4e01-bd0e-51bb970dff48 be51d4a8-6b75-4c21-a156-6d8433bab71b c3f97053-a37c-43cf-88c2-a0eddcbde6ef c7c5ee97-9035-47a8-b8c8-0a85b8d9a75a 8dc66ada-f5e8-4370-ae29-97ea7b72b4bd 0149fbf4-cee8-4b44-884c-021689b544c6 d7c76a89-4ca0-4e4a-ae59-b96beda8fed2 9fcddb14-d7af-4adc-90eb-d385dc09d0b8 71b858a3-7eae-42c9-b882-1c6671bfe283 08399123-dfa3-483d-8f99-4f7fca567327 85c73358-06e7-4c62-ab5e-86b7af5ffe0f 6597e4c5-832c-425f-a387-57d0c8b86021 7e264efb-59b7-4130-ba8d-543b5c4376d7 dc76aa0d-5799-4f8c-9d17-d1c3483c3db2 0959c502-0df1-40a0-9391-e9dac402a9b6 6f34ab93-9fb9-411b-80bc-ce5c5c0fa672 e2fcb7f9-6c96-4bf9-a943-1a3e2a532ce1 e0d3bd46-9188-46c0-9430-c4abc2e0cdba 4c18c22c-8f54-4a15-90ec-204e2fc6b8d5 6c84707b-f441-43cc-b110-ea6c0e17362d 3690697a-200f-4db9-8f33-e23e0c07c458 219b70c5-f897-4b29-a82f-633a1e1bdba7 9c94c59a-6704-46f6-ae67-0732f82217c7 033614b2-fc5e-4c36-8e8a-cf3bcedb8562 b2bf62b2-a3c0-4362-829a-c44f220d94d6 a68ec3eb-4485-43bc-8be7-e7a35b9474da 3c72909b-d104-4ab0-9ef6-7b7c7c47a511 92838df4-7d31-4c84-a107-7db6753f38c3 953a3a77-31a4-4552-bb7a-7c49b18453d3 5e633e5b-61b4-4e88-9067-3fb7e89b7472 b5bbc7db-e9ef-4f87-a81d-a9cd5fa97671 d9eb75e3-5933-4cb1-83be-1943289301c9 8f9109a5-fccc-4ca2-98c0-931b970dab0d 742a0aa7-c95e-4deb-ad03-0e7c769b4496 60bfd6bb-9f6a-4d69-9d0e-e1d408ee5491 084e7368-f173-4304-8942-66529b2416cc 6476992e-c0bd-4ab6-ade0-218d355f31d7 200d0d52-99c7-4ff9-b0ab-309bdc5188a0 0609d5b3-45e6-411d-9077-034649cb68e0 cea76762-5d54-4bfb-918f-110d8b533350 ba3c5385-be27-4071-a924-c13f09272300 40256205-1140-40c2-9980-84f05ece4651 70173cfd-dcbc-4952-8205-16d8dbc8ec98 07b6aea1-1ed1-4a7d-af15-b965a7933f3d 880cb8f0-03ca-4e8e-8bd6-a0b471b9c2ae bd2cd377-178a-4357-81a4-7f4f1ab74f3a bfe745f0-65f0-4e8c-9db1-d9f5deb89caa 16441775-457a-41ae-8f24-040eaa265a98 833c26d9-4701-4af0-ab91-d17998117097 3190ca65-9f9e-4aad-92e5-ebe1183973be a46d43da-cba3-4091-9483-d8509e31e137 17f5d17a-8ba9-4a79-ad50-a77b333ad499 5a4ed087-7cd5-4508-be2f-45296d501107 a387849d-9d7a-4dcd-bac6-8b56cfbf3044 e8fe3561-1ab6-4113-8457-eab0f7eb4c1b 4dc9bc78-483b-4822-a5e4-c8bff41ef18c cbb8cd2b-9631-4fd2-a3be-4dcc0a66739a 172c75a1-f266-4959-b363-94c2bd7eafcb b2042ab7-e4df-4b1e-b17c-617040f60638 45a420a2-4a5e-4650-9308-887396b277aa 46f325b8-6eb3-43d2-abb9-fa68a768bbe3 6edc05d2-c7b6-458f-a942-f3440d28b030 9c63d778-4afc-4e40-af7c-c21497a6cb3c 9585346e-5f73-4fbc-a9cb-be868a27beca 3a4ab5ea-79e5-4a72-bfb2-4e079d795218 fa2551b9-db65-4522-ad1e-e5411a941012 3773104b-d173-455a-aef7-53da500c11d8 234072ab-1fba-4348-848f-7adff9b49383 50a456f4-0338-4618-bfd1-435e0e4f8a17 6c03ac86-23dc-47e7-8be5-047396259408 7f803f80-f5ae-4324-b845-e0606e508a03 61f65e2b-5713-4aa6-af9c-e349d73d4be1 912647b0-de5d-4c37-abec-045f17553528 9a81c9d6-5484-4bbd-869d-e1e45a1816c6 fa27bcee-975c-43e6-a15c-758daa1e9edd 6fe4120e-6cdf-4c2a-adf9-2fef2d8cb6e7 5844c0ee-40a7-425d-80fd-1ef056d2db92 81bc207e-2eac-42ee-bc73-7b4292e93af4 45bc3aab-0201-47ad-a6e7-e95bc8e5accf a2969e8c-cf3c-46e4-b5ba-6eff32e783b8 661dcc01-3f14-42ef-8374-59cfe680815a d0ef635d-3f89-4f79-97c6-36e27e9f2f7b cbeb6272-1822-46cf-b8b8-5c2c4cbb44d5 c060ab96-0ca4-4afe-a85a-cb43d0cb3435 7fe5d7ed-7e97-4cd7-9ee4-8e500713fcd2 458a8f6b-2509-4ff0-9548-efaf9b6dbe6e 31954ccf-8743-4556-a060-e3083eebfaf4 d8126ddc-1f44-4821-a039-c5d666763c7a 87b48bb3-9a0d-4305-9944-33398ac722f2 ea2c8f24-aa0d-46e3-aea1-94c241ac8452 92c1656b-b3da-4502-94af-5bcd853775ab 35241bf0-7651-44ee-9357-ffd26ab3872a 3caa206b-83b7-4e5d-abc0-67e5583262cf aae9c844-ce36-43e5-bff9-3f2f5d7dd27f 8c46b143-16db-4d51-83ef-f5c844fb9dcf 5bdfe0aa-678f-41ab-a337-6408221b3234 187e808b-97ce-4cbf-8b4b-a60c35dbe424 bbb30803-1bbb-49c5-b565-be45552fdf28 697ff724-ffab-44f1-b9d1-8a2f8fefd015 f4bdc3c0-3fe2-49d1-a4c0-571360e8a739 fbd885c2-b811-4cf8-afb4-b1f78a243266 247d2cb7-c144-4a2f-a6aa-cafbdb09ddea 09659b0e-8c7a-4c20-989d-8d8ac02f0cc8 fc71e79f-62ed-4875-8195-f403afa3df31 1336d930-563a-4063-b712-a4ca8cd7f654 7c1828f7-88af-4eee-9d6f-a09259b0c625 117d9faf-a462-43c3-ab94-83d5666bb94a cc28a665-3385-4819-bf69-4ccd27c39f97 aa05364e-db1a-4f82-8bdb-47b1106d4889 3a1c1845-9475-4127-96be-298dfbd2ac78 83d97d55-cde7-4d3f-b91a-9c3d8d09143b 76572bb6-4b95-4ee5-8130-35d3a60b979b 9fcc2f05-9060-4517-984f-20c28586c908 af30f501-d62d-4860-8a7d-09ae26ad057a ca84dd83-0c27-4323-a112-68d6c3190a55 552314b2-f6d8-4e91-9544-17530bc223f6 40c3f94f-4cf7-4d9a-bc35-130bfef71142 1f879849-e3c0-41a9-975a-db879125ba6d 5689f9de-6d6a-4fca-924e-0324367a9d6d 7c5d09a5-5885-4a7c-9ec5-5c5c37daaa43 f5316926-0d21-4662-85c3-cd1adc33ef6b 722d1aec-1ecb-454c-92e4-9dd5d2cb1792 3e12c2b2-6880-43dd-be10-17012d4b4f65 15a9007b-4c8c-4621-8889-5753c024a28d 47f29c4f-0996-46cf-b272-9b05e381527b f7e5519a-e732-4503-b224-da738ba435ef a30ac4e6-f74e-4531-984f-475a60858340 9dc9c534-782d-40bb-b58e-ad0b32ba2d39 9bba1768-e090-4cf4-9cfe-09384906a1b5 d4b07657-8c5c-4bea-8224-2ffc1ae4c901 09f94e77-17f6-44b0-96cf-5fd592f103c1 d9ca0f43-2616-4b6a-904b-98c761d8a907 69d0d127-8f6a-420a-a197-b46e7b13f01f 7de5350d-8dce-4588-9f97-d550d4e38d32 d1c82940-9ed3-469d-8b17-4fb793ca14f6 ca2ab1f5-a796-4e34-b793-5a325dff13f4 b2ea8f85-a385-4e8f-8d7e-29d650cc8d09 e1c80a39-08be-4ebe-bd7b-d834946caf9d 82c30c4b-36ce-4bc0-b61e-6bb20066f60b 4bc8a746-481d-4eac-bfe3-b21cf9440f2f faac7f9a-60d3-421f-9556-f0508fa10635 b96bf7ff-df71-4998-b5cd-1260321ebbf2 a355d47d-cae8-428b-b466-ce2cac9a9926 fbe4f4fc-bc51-4db9-91b8-af9a5088d652 ca8f172e-4b79-4000-890e-b8e49363e093 d37c2958-767b-4923-9c12-5c3ff66ef5ae 3f8d7b9e-28ab-4afa-bf3f-fb3ecc50df02 bd9425eb-e566-41ce-a03e-3430996955a4 bcf83a0d-586a-42ae-918c-e6c5edbd0525 cd9d686e-8444-485f-ab5f-b71fcc139ea2 6be49a52-82f7-46c1-9678-f0410bca3ed4 a299830b-21a3-4287-9329-612ffdcbae57 932a614a-757d-4b30-91cb-9dfe7832d1be c3250810-c151-4aad-8e8d-b8655a24546d 6dee23a5-8780-4846-b026-67c2baf737cf d4964756-0b21-4613-b3d4-3219a5093a59 17c1e3f2-b2f0-4221-8274-74d406ac27dd de914b2a-7fa6-4379-87cb-df67ad58f080 b95a2aea-d2fb-486f-bcea-9912df4ad00d b60f9453-965a-44f3-94a2-c3a595e0f62e 7e8f3b46-a929-45f4-a8da-4e79ba308079 1a859a02-1b4f-47b0-8c7f-0f28bb4ca8b0 51b0b4b4-f397-42fa-98aa-c5b8198256d3 c5c266a4-7ec7-4a70-bd8a-0f7f52a5fc8e 2e551515-760d-4d22-8972-ebc654463262 80dbb90a-d537-4913-9d3b-94a4d8299f80 a7f9b701-1d90-45fa-bf37-8cdebb5a23bc 5d9e6047-3a0a-49b6-96ce-06877cd57d4c 0f83751d-97cf-4816-8958-c2828b7ddcf0 8c7ecc16-8c26-439c-81ac-27584cf7bbf7 3b504bdb-5d7b-41b0-b640-cfab0d3b3aea 73866038-92ab-4bd7-a718-a636da8ad99b 5d14c89c-b9af-4d0a-85a9-69e4a3a04e63 0d0357c5-289d-4987-b52e-692f5dee2a80 3b1f76f2-90de-48e1-b843-fb8176e4ca3a 8c5d823d-9ee8-4924-8257-8aa70c226083 14c903e8-0b7f-4547-9133-7e5d66a260a6 0e1177bc-7af6-4def-b4ac-bf3d9d81c7b8 d4796568-9902-4d6a-b9fc-d152a92b4689 03caea5b-e9bd-4160-a318-97723efc327b 70d54374-a89f-4239-ab92-b76a61c1d06a 941c34cf-ebe3-4c22-85c6-794f0c3de3b8 aac1dcfd-2a5f-4faa-82fa-b707f1727c85 60c881bb-0a73-4a61-bafb-4de50bbd891a b1f9e237-2a92-4b9c-b701-75e3acc1ca93 45138827-80df-4bc6-839e-021dc6a4c652 84d4bff2-43f3-45e2-b538-d6b74ba14179 07473afe-96b2-45bc-b500-ddbbc5275dfe 3a996a3c-e86c-42ba-aa34-e9bc857a2690 71cae2b0-e910-4e13-960b-2d4631cd0d2e 97abcd30-ab08-4ac0-802d-97260c25b12e 62a0569c-7ecb-4ad8-b13b-6baf67a15b38 8943d47d-eb7c-45a2-a852-66264266d6cf 9bd9ca89-ded9-41c5-a1d6-3ccc8e59e6ac 4a8acc0b-045c-43f5-9b85-9cf91ec175da f7dd3444-1482-49fc-a8a7-214a1352f4e7 34c3569a-4966-45d6-9d85-2f87a46d4cba e4db8558-58c6-4026-af91-dd9671cb0e93 235ac308-23b4-4c0a-968e-d16acf04a8b5 7b507619-b035-425b-b4d6-262c654d95a9 60d5ba09-f7a3-4591-af77-1421dff6d46f f47927d4-9232-44a9-b87d-e93d9bfdd88e 9f38fc4d-dcf5-4e66-9877-43fd4eaf8f26 96fbf2ad-73a1-4bd3-92e0-843b01318a4e 673200d1-4000-4771-9ebd-a5e176fe10e8 b36b3221-0d1d-41fb-bd0b-b1d235891293 e2195fab-9c8c-41e4-8817-2b538216b41c ba4e40b9-408a-4c59-98f0-a98d8bc1bea9 ead4a248-38fb-410c-8e7d-91ea38e478c3 0250a09b-6a06-4d59-8066-973847cbf665 95978762-021a-4654-a1e9-484ed27e673e d9a040dd-c0c7-4b49-b1d2-026d3ce1d8b6 c8dba541-b1e8-4d9a-beb5-51a7508f12ae 2d3f4499-4c7e-41c2-a436-eb90726160b2 9895f357-daa1-4fe0-8021-c403549e6d90 c72038f3-9d70-4674-832b-adf83974c4b2 6c4aadc3-e94b-40d4-aa93-47cf5bfb75ed 094da74b-2cd2-4686-9d3a-bc74d9c1a15d 0f8267d0-9f4d-429d-b1a7-3f739343c79d 3ac68958-ba64-41ac-b62d-a2f474c9ca1e 16ddd055-4e62-4ed8-afe9-2f684895e59a 671b10d2-b54f-4c6a-9bb2-7cb745407ff1 11db7d62-571f-4b40-8fa4-9daeb548142a 9a918306-3f54-4705-a336-9c2766a6a1c3 fd82dd7e-a672-47d0-b7ae-6e86a84430e4 0a714b68-5381-409b-9e6f-390beb1fc4d8 b5f416c6-982a-4ad9-856e-2e76b1d2348b 689aec32-a473-4b8c-a75b-a60953f998b4 2134539b-06b6-4c6b-b383-342db000e5da 5577cffd-1178-405d-992c-b569403f09cf 6b67b8c5-10af-4c40-b8d0-e150fd0003c0 dfa310b7-a9fb-4cea-aa7a-429793d1760a 35093c72-67ac-42cb-895d-0fe0358f9a91 25ff94c8-74de-4491-9185-c8496834393d e1b13c43-3172-4fe6-bdc1-6f8d4245176c 1de12c51-e24b-4f3a-a98c-1ae25be56612 7ee0d6fb-30a1-4828-9b42-98667377d65b 21a90a44-5687-46f7-b2f4-55e8b770983f 1f2ca431-4c9b-4754-949a-4141ac1764b0 8a835761-f283-400a-b1bb-1a8ed2b0bc95 b54dfe40-042b-4b03-bef0-a276f47cec73 3f9d59cd-cf86-4516-bc1f-8668ba430529 817d3238-48ad-4e75-a842-976c3ba951f5 2d775e04-2e1f-4c85-81c7-b8d05eeea928 643b3228-b890-4171-a06c-ec9179a69664 6a271af7-8085-4c65-b50b-127c601c955e 7a7a22ec-62ef-445f-ad76-891c108c719f b75d0bb2-973f-4776-aa3d-e25734527591 f07355ca-4eb3-4712-9b8e-a9d7bd03371c 81aab8e1-27b4-4044-9e4a-7c4666e81740 234b0589-c51c-4990-81e8-1d434df5a1b5 5831b57e-322f-4ba5-b551-61a7cd827eda 0e405289-8839-4ee0-9a3d-211182f310c0 4ae9a406-9611-4f65-a241-0f84de3a4cbc 22a7785b-e70a-43d9-a87f-60d3e629f09f ef9e5b0e-eb55-4dab-ac32-7b3e7195cf09 45a5ebf0-255f-4811-b7b3-02108fd6647d 9c054c60-3407-46b0-8d41-95e5756dcfe7 906bda9c-6f60-40f9-95f9-db15efa0e634 fb06c3a0-6717-4ca0-86df-dca3a61fcebe bed73c18-7f31-46ae-90f6-8e1dafc970bf b0e9a764-723d-45cc-bb30-c95b6f3903c5 ff5e17d3-453a-4e6f-8326-b59e2301ccaa 39cea114-613c-4bb1-bd8b-4087522f6da5 da1cf58f-8aed-48ec-8239-79bc9eb2d492 eb56d56c-6b74-4039-bebe-d28610b8891b d40a459c-c4c4-491a-82c0-ab0c6ada0207 5f140737-8952-415c-a53e-90c4c8e6dcac be6aed9a-e7f9-4ab2-8330-e59c89a64c09 6a78bbde-6514-44fd-bd74-b0fd021fb370 4bef2d18-1cb7-44af-a3ae-311ed17bd0b8 06d7496c-b8db-4a99-a98c-35efebc05112 91f7d17e-bffa-4b40-8e4e-ee647dbab120 a33c80bb-9eba-4323-96f7-6c4d51a22690 11185daf-b4d8-48e3-ba78-5b8a016b4b67 8b38c42b-658a-4b41-811d-719e6a4a84e8 edd8d589-38b3-4e5a-b822-c8a6eaa7086d 9603a02b-899d-4192-b056-6c0d300a3f68 89bcff86-49c2-4b87-a876-ef00194e7b24 ea7103a3-5ceb-4ad8-9eb5-2f48ebcb5170 73647a73-5d19-493f-b554-0180ab462bfa 9d560d0b-9069-4ec6-8cb2-c09e8523333f d9048dd6-de00-4e46-a4f9-7d297da40b1a eececb95-cb55-4657-a68a-502d619b26c1 e749bf37-eff7-4c01-8b9b-30429ff3947a 7fbbdc69-818a-403b-a18f-0aa625b09d3b 46b41912-1c67-4b81-8f6f-9668f51aaeac c5d25197-670d-43a4-a4d9-b7cc4438023d 94827f76-106e-4096-9b91-ba1f59f15040 93d3e211-61fb-4df5-a50e-9252a850b9ef acc4775b-2e05-46d1-aa2f-dd5f5e7ba9a6 e531c5fe-8e40-4cfd-99ca-8076c95bd3cc bda3b243-0c10-4db5-a8e0-054e167c68b4 b6feac6c-2d11-45f6-bf28-ebae2c348c15 5a186756-b073-4944-9965-3ecfd8614790 068a4993-481a-4e5c-a2f2-8d37eefd6fc9 49166ff4-a410-4bff-bcc4-b254eda7dd58 0e1d802a-ec47-4647-a28b-870357665a3f 3cde70e2-8fd4-400e-a7d7-9d11f0a021d4 ba47754f-b7c0-4086-9c43-d47e6713e45c 797ac61a-77a4-469a-b388-5b24540fecca 75ac2b8a-0f40-4eab-9510-8ba8531b9612 2d3447c5-40c7-4c1b-b218-2bf7aec98297 149d6202-335a-43e2-af5e-45d7582dc700 9486e504-7585-4331-8800-a6129c758591 657a0694-22a4-4328-9142-9b5128de5408 2705d745-4d6f-4a22-b765-bc27e683f017 8ee050cd-2994-4889-9d96-7738cba9e7d4 3f22da84-994d-41a7-a04f-579deedd3bae 08915c6b-9baa-4d03-9760-859cbf6e2e0f c8d7612d-c1f5-446b-ac33-a9e17a5e3a51 a2e94009-cbb4-4bc6-9d75-72a64e06b0f1 1684f3ad-1728-4e1a-867c-53cf2f0061b1 77eec424-ef60-4ff5-add2-edaa0bef98cf 89a45dff-0d99-41e2-b391-61395efe6ca0 c6f5351a-c98f-45f0-9ee3-42db6fe1642e a42685b4-c43c-42d9-81de-b59b099ae533 82a81a0d-d899-4c2a-91cb-12198f11b335 c54855c7-9e8b-4b3a-b6fa-e786b18dc7e3 bf10d75c-178c-44d7-ab25-6c94e7473452 29897fc8-a9b4-4ede-bc28-9477647a06ca 3e7a05fb-09f5-495b-99c9-edd85c4e351f 3b063903-71d4-45f3-9cd4-bc050c6fb59d a10828b5-486b-4486-ba30-11e05c521248 51d70d5c-93ab-4e7a-bd2a-9a5bd6034962 18a10212-6aeb-4f1a-865f-3ccf9b856bcc 309c0d0c-8c83-4ede-971d-580e563f9e0b dd809733-d626-47df-97b6-57013e4e8570 2e82fbb1-9a4c-48d2-8fcf-7eeb84b1eeb1 bffe6d9a-6a17-4417-99fa-0fc779fd55e5 a1b7831d-564c-4919-878f-9f33d92f47b4 99a2b2d0-ab4d-47a4-bd1a-6f7887c791b6 4465842b-84e0-47f1-9ac1-175fcd6dd7cf ddacc4a1-0c22-43de-a4b1-29c726cf93a1 faaa492f-32bc-42c1-bacd-24f0a79be2f0 4434979a-c38a-43da-ba5f-6e73eb7017dc 9e0e9410-77a8-4ddb-ae9f-012c8e80d15f 9097f0a8-f8fd-4af5-bf9c-0adbe26a21e4 bddbb92c-fc88-4ae4-843d-17a385e77023 073e1868-5584-42fa-871d-74830f5e4798 17c9591b-e84e-4d1b-8b70-d5b313a877a7 69b1cb95-9c32-4890-b4df-757b808abc21 7b44dae4-2e9c-4dc7-abb6-d8dc041c4997 b1e0f518-5994-45da-86a8-4b166536fb61 55ff66bb-b8dc-421c-910d-ec8a4cb5ba4b e574fddc-8df6-476a-9423-286d468ad9ad 85283f8b-b1cf-4dc4-857b-1a9b57120c87 7ab49c34-c2f9-41f1-88b0-c979a0ba030d b1f544e1-a4ee-4e44-81e6-e8eb43fb7d97 3aac63c7-45ee-41d0-8cd9-5be16c01deea 8bd20249-15e8-4249-981b-b64efcd72f41 64fd990a-c88d-4d17-9420-9c2d9c508ee4 020b9bd9-3aea-4666-b197-10bb553f685c 3fe7d1e8-948a-427d-bf7d-5e4f88b81af5 a51c5095-270b-483c-83d7-98c6706c9e48 c660a6ef-acd1-4ceb-8937-c118f8cd6c8b f08c25f6-c9bb-4316-ac00-9e2640db14d4 9ede7c44-80c1-4843-b750-4729fa6b0e05 c046513e-624d-465f-b31b-952583e0cf2c a6916c26-80ae-47c9-8bdb-812db8ff9482 e26215c2-3582-484f-9696-f3183d21059c f67f0ac2-7659-42fe-bd3e-837e009547ae 5fd8ad2b-f625-4e83-8f8e-6b0fbb4f9b7a 31900437-773c-4746-8463-6910ddbe2f5d f892e5d1-a841-47a5-af43-6dd81de82bc0 a35d675f-fa2d-4800-a1b6-b51dc23a72bb 6c48dc53-3580-4490-917b-cb7edf1a6cba c4c760f3-ef8e-4ff2-b012-a558a8beb2f6 be05ec81-daaf-4d93-b896-452834b1bf6b 6593b09d-2304-4069-8f2a-051c4aec9557 e645f7f1-9c76-44b6-b537-bb79002b4433 46a728d8-02e1-4c6a-bf37-ff555f38efc1 bdfb4739-d076-4a91-a4f5-2d9da40e472a c46ef8be-a91f-4330-9ce8-9bdf95f3485f 274af6e0-6755-4b0f-83ae-dda3fc5bfd5a 4eec88c6-d5d7-45eb-9d19-51a25fcadcac d0358583-65a1-4790-b1d4-144662c3159e 89d44c08-9e0a-4f8c-b697-1528afc337e1 5c9d476b-8ad1-4278-a863-307f9e8f3472 ea618bad-85e8-4f6b-8842-b3e4de0ca6f6 58b67295-df12-4b05-86a9-99ef408af9dc 2cc246dd-e8b1-4280-9f46-e749bd223046 31964f47-9e24-4302-beee-fef250909b97 245595d1-0eba-4f64-bf3b-3f768365840a c2f7a1b8-ddf3-426b-84ac-90412553204f 9bfbdfbb-c69b-4b8a-8ba1-89f6e8090eda 6cfabc4e-c2f3-469d-a469-d0161f520f76 49eda010-4339-4af6-bae2-c6dad2cf587d 3c30db7c-55f7-40d4-af6e-1d625d09038e 835d381b-98ba-4cc5-978d-b2e286dd811b 60bab75a-b647-4a0c-b95f-9c753eabe075 437c4bc0-7758-450d-aa21-dab2f824b012 bb2a52c3-970e-416c-958d-86746440c70b c9f523f5-1e14-4b56-8a1a-c5dc0a4594ae e77dd870-8913-4b06-9aa2-28f8ff566e06 ae2e43df-dea5-4e62-906a-0a371d8a64ee fddf4eb4-4e7a-49e6-b506-9032c7bf7dc7 741f4ee2-a77f-47d3-a442-670859757c8a fce08dad-1268-4105-9ce3-c7cf30e36569 6608fe25-c13a-4277-a979-279b33006dfa 62f1bf2c-6c29-4e82-b0e3-8cd2b5522450 101c261e-1926-4fd5-b494-6da9bef00467 7aac25b2-121b-4ad6-8340-360ac40c9146 08218516-c98f-45af-83b7-0f38f4b439d9 90022043-564c-4229-af24-c395e1ec5e56 1cb85339-0ac6-42a0-aeac-2906df0cf226 52a29e82-4505-4969-a3e2-fa481e98271e 120121c6-e85d-43f6-aabc-3c067145a94c 22091cee-0c57-4cab-a1e5-1136a96fadf1 e8789d46-a972-4118-a0da-5cccd1bb9669 332d1ab7-7ae2-4784-b5dd-1aa4dece57ec 18f865a9-eb25-4e4a-ac24-ef80a85223ce 5464f6d2-520c-4bbc-afa9-af37e7d5add2 6efdd672-f841-4047-bea7-39e1e297b0d0 1595ea20-e4ea-44f3-a54b-43350041801a ba184a34-b244-414e-a1d2-f25a504e5941 f240b5f3-145c-4576-8fb7-1aa83dafba38 0871d96e-e028-4476-aef5-be84739b86ad 58ced633-39a2-428c-9d02-497fadc6dd99 b955c9f7-441d-48c9-b797-263bf5519485 cec7f111-faf5-4f3c-b6e6-6cbbdaf4605b 5b237520-539f-4a76-8266-5cd79b13066a 240ffc7a-094c-4cb4-9011-4f0fa356f12e 0e665d26-6787-4230-a686-e0a75476b9b7 37a77d6f-e4f2-413b-8935-d945b176087f 9615c7c9-d2b9-4a7f-a20c-db4477eaaea9 a5fb419b-f659-4b17-90f6-dec023e10ca7 ac7f6965-9732-413f-8b4a-18bd8020a3b4 b49ae8de-0186-4581-8530-16372cb4f2f5 3e1719fb-ccb7-462f-9d91-6ac349dce5d6 b30adcb2-8777-4458-a617-4b748f580916 619b1cc1-23b7-4470-b3d1-cf5ee518cb95 c4c3441d-4079-4609-8b27-0559e678db7f 56961af5-0ba6-4cab-8de4-f03b9655c8d0 5356ce3a-540a-46f8-9aa5-84dbd1f046bc 25b8dd44-5921-411a-aeda-04e6e030d996 b8b75636-7e07-4bf8-8462-7fbc8f8fd602 ac42ba3e-fd47-4d36-b5ae-edacba672139 8d89167f-98cd-462b-816b-954e4383a4de 37cbb5d4-2978-4dae-ac35-ce2467a7e476 37f20488-fa80-4f2b-8bdf-1d875f0cdaa8 85eda00b-0911-4634-8673-e1c20b283b73 703285c8-9081-4bd1-99eb-917efec587d1 6d072b48-16c0-4185-b5b6-ed6eee6f87fe 1c014e42-19a8-4451-8aca-b92191a27c00 2f38b158-c8c2-433b-bebd-afca30f714d4 9feb9960-66b8-4bb5-817a-29e1084d0700 41110eff-4732-41e7-89b8-e0db8d83fac4 adcdd3a9-7ceb-4ea9-8286-108c4f66325a f75c428c-0db6-4aa6-b958-0b2f554d0876 8bea2a88-64b4-4395-9bc8-604deb9e3ff9 40501b2b-ece5-41d1-adb1-46a703b9f966 ba7cde86-3b08-4914-ab29-49cf2a971001 28dccfcb-9dfb-472a-9f5e-e21454b5bfdb f9dec156-4e47-4256-98f4-6b46e8f67a3f d0695ce0-9982-448a-813f-e0016062dd59 0f577259-0661-4031-b564-0ed325e0aaf5 cf6bbd20-76eb-4c77-850a-9cc579864113 06feb025-66ec-4fe5-b00a-4981de193656 d75354b0-0935-49ef-a519-a3fd5ee3a421 798f6eeb-a952-4071-ada7-9ce08c1a0e6d 1c1b1a05-e995-4b32-a12f-b00fc64127f5 88c78bcd-001c-4e97-a203-b4bad09487e8 f7f6c37b-6714-466a-8e6c-bc98c91d5fcb fa630da5-9b65-40e9-a114-9274e52f7af1 0323fe23-68c6-4cfa-b199-13829e2a7cb8 cb5ee7b0-5634-4a68-b7c5-3b25178ff402 3da647d4-ae74-42c1-bf5b-098e20117016 b1b71922-6f68-4af8-9087-0098f09b458c c9b27854-058e-426b-bfa6-9099ab98ad03 3c6cf7e5-5c3d-4c18-9586-fd5b50bcd812 f6a48903-9beb-4c20-94db-9d7c81375958 29a68931-19c5-4a13-b701-6e67416d8114 2fb9f30b-9c56-44dc-8d96-5337686e0f15 66f5e747-feb9-4787-9fac-3a1a2178a9b1 05b651ff-f79a-4b38-938d-de25dd5f475c 3739d0c5-6aa6-4c67-a537-5385d67472c1 9231bcce-fa58-467c-ad16-8447414521db 1bf1ec9f-1350-437e-8fe4-e0c07f689668 be72199b-4492-4bb8-803d-ff5b17c62844 cb4d8ea5-9a26-40a0-b44b-7345e6c9d1b8 47e0c0c3-9c9d-4338-8f84-c44cbae74d04 3bf6f47e-2969-4124-a934-3a80e2f1718b e236fd60-a2c3-42d9-b180-2c1e620fdca2 49cc74b0-fbe6-402d-a823-e215e2d8f00b 9c760c1c-24fa-4a10-a580-2954e1bc1adf 7fa7a2c0-19e7-420d-ba9e-25c1bf40fd92 712624b0-6a7f-4ebd-adea-62c4773e1bcf 6747dabc-2a43-4378-acd3-9c6b43cb5149 eeaa88fa-578d-4d8b-b349-88290c60b3c6 ff815626-6a8e-4d1d-be13-0ab476bbb466 b2d11e45-2fad-42f4-96aa-813078e5df95 e5fb6a92-3cb7-490b-aea0-b7dc14510fae 564d0d98-0d76-40de-ae69-db5a27774fa7 7d3e62bd-db7b-4c1a-b479-35a6a71ca6d9 f8b1139e-c79d-4b16-838e-d6a5f4641a0f fcbffc6d-24da-447d-81b2-96cd8fe5722f 21a7a018-adfe-460f-80f8-a90c1c74d4bb 317d7269-c78e-49be-a472-73eefa662e58 ec603f65-84c9-4eaa-aca6-22239f361471 62eccda1-813a-43ad-b845-1357d57e1bb5 a7f39f03-4626-43c2-b6cd-b075be4d2583 745479df-2017-42e6-aa3d-005b2faecd81 5498e25b-acd7-4a5d-9118-54dde7f1d064 bf2b48d0-2e8b-45b3-aaa3-3258a169705d 0a23d3a4-be18-4760-848f-59375c48c17b 7f3a9751-6324-44ca-931d-d7b4e5f95f37 c6623c71-5ea3-4303-b6cd-89c2a9e7dacc aa0fe3c6-ea16-41a4-b9ea-fdb127cec2de 5b28f3cd-7bf2-4f65-aded-7fe4de4f9e33 a8faf2bb-6e1e-4a79-ae52-8e790915b118 d2b4170e-7208-444b-b0f8-733ce5ada9db ff89d5d1-d0df-4ac8-b96e-c1f1d0111f0a 111f7fe9-1258-42d1-8aac-fdeaed26907c 5db005b9-d336-444a-8dac-ad56ee3e3d70 844d2407-28ed-44fd-86b6-1b54f4f845a5 2677c019-c16c-4797-963b-b533c2a584be 5cf6773e-c1d0-487d-a691-459cc2ae5886 f268cc94-2f92-4edf-b8a2-82f75cf30468 2576cc0e-2351-42b8-a9e3-583b8af1dba5 9a1c24da-3742-4ec0-afc5-f048edd2299d 7ac19970-e879-4b2d-92ec-8d45455fcd4e 9341984f-e2c4-4a74-8fd2-e069105ddf7a e2b3ac98-44f4-4c96-b923-eda84a3d4b73 4b051dac-12a6-4834-bbdc-f16840ae5bc2 0ece71db-f087-4fec-8ad8-af7fe272e75b f5ef32a4-bab0-486e-87bb-83c203fb43a1 cad39573-edd3-4655-a8f4-46432a98fced b8ca83a1-238b-4986-b71d-410ef991b348 0b7f649c-df5f-4dc2-afbc-02c39a2a0ade 7481d236-2b16-4765-9f21-497d9bc524cd 67f4e6fc-e6d7-40c8-a9dd-0cbe25ff1aa5 fa34fef7-55ea-4a6a-89ef-0d237baac651 00047d98-b91f-448f-aeb1-b62e64e26a6b a3ed2cab-e748-45b4-9ec3-063b0708112b b1fe851c-55e3-485d-a526-4c34a5b94a3f 5480dee7-a22d-4557-bd32-c9c17ea163eb 34006f13-e890-4360-a9f8-851984a0394b 98dafdb4-b8dc-451a-896a-b47060472bd2 7bc0745e-0eed-4996-af6b-6052bd7ec31f e8d33ef3-9718-4117-b096-76c52d577ec6 7a96c3e7-53a9-497d-872c-6a7c08088bf6 1a2dc780-fabd-4d81-9fdc-1eee8d32bfbe 267690ba-2a4d-41ec-8875-2c7da2fefd07 09dd476d-a83b-4248-95f8-764d78539ecd d69b9064-32db-4ab5-8a2c-6635391dfe47 2f5317b3-e2b5-4a04-8683-bf00a9c44919 aa4d0413-5291-4a8d-8c6e-eabd14948fea 79b097cd-14fc-4f06-8eaa-d50d320dde5a e0df613f-af65-44cc-802b-9ea2e5cfcf24 86dd0389-3911-4103-9415-1a1446ce3632 555639d5-d48a-4b25-8322-a60898c3f36e 570c6d15-abd1-4353-ba87-02b9b0eb8450 a6913cde-2375-4d82-8d56-f09ecab63d02 e39db37e-b5e1-4cf3-8f63-e3b87d4fa53d 43fd2e80-46f0-4735-a279-9bfd865cd334 044c4781-8d99-49b1-ba6e-d84dcb3413ce 69877136-4d96-48b4-a14a-273ad19c3a24 4eb57c77-b4f7-414b-8aa8-c21185917bef ea2c7128-d288-4538-86ac-f78092481b07 9b94b8cb-ba0e-4381-b6d9-c9b72f15debe 999b4409-194e-4806-aea6-44fe357bf1f2 f601de68-28c6-44ee-b943-8dd60097e91c 79ad27c5-0cf7-4564-b9b4-2086604f8298 3c6ef828-7484-41de-b7fc-9812a9ec8b97 b469df24-79f7-4108-8738-a485b1581abd f9311d41-a03f-496e-a23c-b55bffc51953 1439221c-9c8a-4ec3-bfb9-07c55fbe991a a1cf29be-4d18-43a6-acf1-29d8de02da9f fa5f6988-e6b3-4d96-a524-1e4f3ce34cbc 152f1c06-a274-4c93-833b-f7564b3b7e8c f6ebfea6-c145-4904-85ef-39ae1f661a25 c4755458-6f84-4538-94ac-d28b96ffb8be 3258d559-eeb1-430f-9cea-7b37ef967fd8 be175389-bd92-4f6b-b3db-5c564505b4ad 98d04cdc-65fa-40fe-8a8d-4907110239d4 b4294bc7-f1a4-4ead-82bc-b59b8c9fa25b 260f0fb3-1444-4a62-a10f-118d8362f026 e099d943-63bc-41b2-9ee7-351ae0dca8a3 5fecf616-fa74-4cf5-b782-a1c1d88703b8 ddaf948c-e471-4649-83ce-a9a278753564 0d6686a3-c074-494f-9770-c8224f00a76e 768f44d9-c5dd-4337-924e-930187d1b4e1 67eb000c-315b-41ad-891a-d748f4287e0d 6994a6d7-7468-4a72-a740-22a2f8475f88 a9bb5d9c-3431-4b74-9b2c-5f0e1c2e48ec e1cbc689-6ba1-4a5d-a27a-4707ba9bb666 d871375b-2097-4f22-8c48-fe4c348c402c 1b9a0961-875e-4d8a-9e84-bd23123aa393 5cf76a18-32a4-4255-8418-9add600f7f16 a3ed0980-4668-49f8-b2d1-08ef2eb199fd 22490310-7f4d-4b25-8f59-db9d3abf9f3d 533d6e19-8f19-43e1-bd8c-8b72432f8969 0a325afe-8d95-406b-82a5-f2433c7971d3 9d831cc1-9522-41d4-8fd2-7469466ecae4 8e602cd9-301d-4207-85e6-f138b5bd0c70 01a032d3-aae7-4d52-8cea-0b6677195c73 0dff5d87-9998-4415-a819-672b359ea16a 4364afd7-b53f-4c44-887b-1efbb3639aa7 fe25188a-56c5-460a-a359-ac52834ff127 593aba1b-ebd4-47ee-afd6-1adb1e9d4e1b 1d76639c-852a-4806-9eb6-ba918d9e33f0 de18f752-e77d-44b8-ac1c-4e38a86dc54d a5957702-bf7f-42f5-b964-63a89cde87f7 9b2c439d-48fb-411e-9733-39d028be9d1f debd5955-8565-425f-bc8f-61441f0be93d 643dea48-f40d-4541-9067-10935353c7b4 93eef555-5746-4dbd-843d-412bbe49b8b6 23a0e58a-f048-4ff8-b2ef-eff856e0678e 12ea9e93-56c1-456b-bc8d-32828b7668c3 5efe22b3-76c3-4401-803f-d81f0fc9d492 67e18906-6711-4bce-9240-063f4ad0de07 0bbf76a0-551a-41aa-89e7-4424cd1c382f 7627b46b-918a-454d-9bc9-8be4f47876e3 f7820956-03d8-42e1-a8b5-06476a180e64 b03774aa-a185-437e-85f8-13c6e0cf14f0 c42e900f-8db3-43d1-988d-2ccf121e32a4 41bc44a8-8f67-4a79-b0fb-97c105dd91cd e17e6126-7551-4012-86ca-7c9576d0d070 bccd5465-bc88-4105-83be-11f1b2dd5ec9 e8e2e107-1cac-447f-bc6b-a2158051828e 452eac71-009c-4208-b1f2-236d118882d5 35b0a60d-5464-4342-b4e8-fd9d01cae5ed 144d909d-0e5b-4479-86db-da5acf509f44 f6b11536-34f2-4e31-9350-1e50fec7d73e 95d16619-f847-4057-a6ec-2b7682d957f2 6057ae19-2eb4-4174-8382-69eaf40e3eb6 6b212f5a-c896-4fcc-8f3c-9ac9f888889f 9f11f1e1-94dc-468a-bcd1-494a0f2f2ca7 1f1ba557-ee1b-430a-b448-ff96021aa900 2e71dda2-b5f4-4f43-b82e-162f650af318 3070c72a-bdfe-4f36-969d-f03260e5f426 aeda59e0-59b4-455c-ae53-9820f4da2b33 d2609795-551d-4290-94ef-0a3942f89b92 f57be99f-bca5-4e99-bec1-259e34eedd32 9a9812e0-a0e3-43f9-a30f-75ae5af9e420 877bd7c2-db37-4134-a32d-61ac2383ad47 e86b67ed-69c0-41cc-9ff5-625828c17585 cddb1fc6-c578-44ad-a43f-7e4022d35535 f70bfa85-8018-44cd-b2c1-68049096527d b2dd8741-0821-4efe-89e3-f12d633c08b7 3b92a88e-8e54-4335-809e-f77e136960d0 93e64645-ef83-4697-996b-f68235e58a69 08d2942c-bcbc-4475-8d1f-e6e468319724 133c298e-6f23-48f1-a9f8-cc065b96b4e7 c0acf14c-a67d-4b7f-89cb-46d4f279a955 bc737365-2c88-409b-9a17-72941a58e6d1 638edbcc-dd8a-475d-b150-91fef2c03d73 66e8af25-e01a-469f-9301-4e82431bd3e8 2e206262-d471-4513-a9c7-88da753f7e3b 7c743069-4a85-4da5-8411-96307380692a 93fea77b-c30e-4e69-b661-f052f40fa0ee 632fdc5d-f72d-4bc7-b007-ad66b9582b9b c114b55a-5ee7-4e1d-a4a9-62a85aba5168 a3b57adf-aadd-49cb-8629-01b74f121add ff7ac946-a021-417f-8e59-85ab08fb541c 31e872d0-4e8d-40d4-83fc-a668e73fd152 702568b1-4d23-4733-ae37-ef118d834188 72f03bb2-fa98-4cd7-b581-d9c79ff3cffa 67aa373a-b96e-4110-a160-e5861b9629f0 4c697608-ff83-41cc-9db9-13082ed08755 6633149f-09f1-4b19-bb7f-da42b6a5d078 21b90eb0-ceef-490b-9243-9f2c0ba7ee5d 52e83b17-fbda-4e42-9029-b6b9b920ea08 c72dadf8-b14b-4a07-a4e4-553fab578ffb 3595b8dd-c992-415e-9f57-6e377f7c3728 9f97ed0a-4abd-4f5f-b58b-7f56fc721bf7 7c6ce2d3-5c5d-45d2-a8ad-37d5e36b3787 8ee711b4-1ffa-41d9-8085-ac2f362459a5 3e2b5af6-847a-4ea5-ba02-c2ab78e0e49f bb0bb620-9d48-4e51-a897-460ef79a7800 9739bcf6-a491-401a-bb5a-291ade67723f d0e46d53-fb2c-42c9-80c7-45ee505da4ed 24302182-72e3-47e4-80ab-86d615273a6f 136e9e21-d6a1-4a06-bb22-1c9c2118572d 8a726ba0-dbcb-4bc9-9311-56c4174048b1 70718faa-1e46-4d4a-850c-f79af650850f c1e39e27-b1a6-4f8d-8d16-7c288ad61454 325d45ed-b523-437c-bc6b-67555acb075f 3f0105b1-1a55-4da2-a6b0-10ec5bee0003 a947b6a0-c1e1-4533-8468-3ea490a08a5b 6dc0169f-e045-4121-a797-9437d984039e 147eb9d3-a028-45b3-bace-5a8e2c146a58 4b04d4cf-9d19-4129-a681-97754ff95a66 59129f69-4be2-4dd4-8d06-2188299d593e 2f0d83bc-e2b6-4b65-9f3a-79ce8e75d75b 5451d805-3799-43c6-bcf2-948e9b331db5 0c8948aa-ef64-43c3-baac-670cbea9f311 d9325924-9d09-4b36-8e95-a9fa6fd9622c 77147c94-626b-4d2f-a34a-239919d7f9d4 ebf9632d-a5c9-46a5-ab8c-b48e5e26762a 55991265-71e1-418e-990b-72002cc29657 9f03e191-3c68-4e50-ae66-8737e0aafde5 9b213d32-3aa6-47a0-bf0d-9cebf2c6665d 40bc182f-1ba9-4966-b5fb-476524de33c4 0dcebbf3-c1ed-4531-8ffc-6a101814f22b 1a6b0cf2-361b-4e34-ae5d-5ecd2c1cf5c9 524a48dc-4fc9-4228-ab40-5da530469293 5ae0d17a-654f-43cf-ba70-6a678508af00 72cb6a6e-c794-40fb-b636-3dbe1b564093 210debc2-2ac7-481d-a1fc-5715f2cb74fb deb56abd-ee9c-4b7d-8617-96704c907c7f d16b8e4a-6776-47ce-93fc-6cc4cbec0e85 968b270b-974b-4959-9622-56621cec6a24 80da288e-9745-43f7-ab59-aef2aa9c0f14 fa5326b3-2eff-4c14-8030-5294ce52522f f467be56-b82b-4ddd-99bc-bedffe13df4b cb241a0c-2661-4223-af80-d8a9826f54b0 7d9d8113-1408-43b1-9d99-d035c969c592 e14dff3e-dd3e-4caa-b10b-343995374aa7 042623dd-e299-4fbc-903d-41ccfc2f0df1 e366ae01-63d0-451a-a607-6b294beb654f 7868824f-d850-4724-8c45-c8ac911755d0 b06cf34f-1dd7-4269-aac9-bbbbbcc6313d 4bec91e0-7ef2-4194-8f14-a7a429097da5 9d6bdc12-1acd-41c1-a6c8-28065d048900 f225a7de-2911-4e45-90b6-85e253619236 4f862e31-018e-46cc-a07a-16838deafba7 073ed86c-5378-4a80-a02a-b2916baed940 008e8249-3650-4353-be5a-a418c8f49856 93f15e73-244c-487f-9f36-ee920c71854d f01e3166-90e5-45a9-8737-52d0155486b8 1afee8e7-bcfd-4921-a3d1-d763c670b04f 6a39cf66-f65f-4384-9bbf-09794386da72 016c4fe6-55c1-46d6-b10d-2cad7bec4ff7 586c33d9-1236-40b1-89c0-fcc9127ae626 1afd08ad-c988-4c95-bcda-7f82d299d181 f6ab5a58-b5c8-4cf8-83b3-e87cf477a505 ddf10158-dd28-4ac8-a147-5159fc3f5e3b 8256ac8a-723d-4586-8b5b-4d25fabb041c 47ca92fd-1211-48ab-b35d-0bcd29522234 fe84d5fd-6bbf-4ee3-8c40-59e4d693e4ac dc2c3fe7-e1c5-4caa-8555-cd4b13e3eaea d21b3d75-f84e-4ef9-97d9-ed85ad447149 f8be9da2-2991-4202-9b55-aeb04ea2f463 0734e17a-46ce-4e0a-8733-d1cadc129a40 670d3241-1da8-427f-ba79-ef178eeaa4d7 34e06a12-a677-41c5-b76a-de150efa3716 47ccbd66-71c7-4ec3-a318-06ba8b7262d4 f677fb23-72af-4503-9c18-a8c07c8ca89b 748af810-0480-4f06-95a5-b2cf5b95566b cbf00283-4382-4f0f-87b2-871324f35872 32aa8eac-09a5-401d-acf5-61dc87e15bd3 44ceb27c-c6ba-419e-ad29-18528f3a013c 20ff5bcd-cc80-4b65-8287-6d1e932acf91 8b18e1f4-f75b-4915-baae-7af043ecfa8f 22bb9a6c-6352-4bf0-9aae-db55dbbdcb45 1f6404e0-0423-4817-834d-53630bbcc2bd 25b3e598-63ea-4080-9ac0-8ff97cf4ff82 0304e2a4-f8d9-43e3-98b1-eb251c5cc73c b40016c0-0720-464a-8a63-e35969a3d9a6 962672d1-88cc-4574-bcfc-027ff32cb29d a8fd89d8-f867-4038-aded-9af50db21918 3a06721c-6ce8-43cc-9906-0cf3f711a185 57582cef-7ae1-4ee2-b7d0-1e83b28b7a84 8406d527-6cc0-42cf-8761-9b6348e4b67f 21eae5ad-6f22-4064-a74c-208f54d9eff4 1b22c76e-2ede-403a-9584-1f68f1522fd8 0b325cc1-8ae1-4e70-ba84-cdbf6e7dc2df ae9e89a4-35a5-4d02-a082-4e8c860c5ede 3516160e-327b-4ee4-ae4e-3a1247036959 9909b9f8-d45f-44b4-bf86-8c3c701c51f5 33c3ae52-73ea-48ca-af3a-b045cf4c2dba 483d6a73-91df-4a27-b399-337e1e03583d ad159b60-949d-40b7-b7ee-619b35830d0d 5d8ec2d2-8b55-47ce-99f0-7e34921596dc 9fe95b83-0f49-4880-8c70-96a9e6351cbc 2154ae9e-ef08-4ac2-b7cd-5e49ad15ef9d 69112773-753b-4409-957c-5d0947f04b31 c5092d2e-a31f-433a-9573-4d108e12b1b1 fcbd6079-c8fe-41cf-a4d0-627f5304304e 665af933-1171-4951-af43-23add0b11341 d8e84aba-1e62-4662-929a-e83ac996da9b d88cef95-5e17-4e7b-83f9-318d625b5893 aa928673-c19f-4431-a3cd-74432907d89f b3865724-f9f0-47f2-888e-f4981654bafe 4d731957-0342-445a-ac19-5c9796250977 03599837-5a91-45a6-8bf4-fa5d5c4ca133 090e4c39-a442-42d3-b533-ce8e53456893 daebb941-15d9-482f-90a0-fadf052edae8 7d815afc-e115-491e-8ebd-0ebb91ad3caf 60199a5e-c311-46c4-88f6-75626a62e2af 1110cd09-2d76-488e-b01a-c11cf71d5703 1081e7f8-c941-4704-88e2-56eb80dd035c 08d98949-845c-45a4-b109-7fb5bba89405 b64b80f9-e127-446f-82aa-204fe71a3503 469ca29a-0bb4-4a74-8ee1-4be9a1388d02 7b76f0f6-6c09-4fd0-805e-4c2b62eda7fd 6ffe0f68-f73a-4072-905e-da9a5fe22ff1 7c972cc0-5b12-44e4-bd2c-2d011630d9f2 b417dd09-94c1-44c0-9714-14d5331a02c5 51f3dbf0-b4ce-4a94-be9a-af46fc2bbcf6 688eab9a-f247-4288-a72d-7f309082ac85 9c1d3a9c-3e58-4184-bcc3-834932749454 7a1f0bbc-f795-4a3c-88e5-dd878e98dbe5 f141d39f-4594-477a-a8fd-162627cdc395 f0447964-77a0-4564-b438-a6419f28d4d1 3f64f9db-d700-4697-ad92-d25d7e799be8 14fb07d0-ac93-4722-bb97-af4e7bdbadb3 e6b57703-b79c-490d-8735-5a27c42f3d3b 59623def-7c3c-4bec-a303-0a3020ae2ae5 9d23f840-d019-4ceb-91ef-d71c7235bcbe 69d7fbef-e664-4301-9c36-c174f28b5193 ce511b5f-782c-49c9-b725-d6b9a3e53438 aa2bc099-167b-4094-ad18-e8caf0f9acdc 7fb61ba5-d5d2-4625-a660-9ff339fb7c86 43ccd268-ff14-4eee-9229-a224b24978db 02533872-2289-406e-b478-1750ba276472 f7f6465f-36fa-4cab-8f2a-220414fb8d82 3ede1ad9-f075-4659-8508-06a568032b66 1c21f235-1988-4159-99d6-70dd07b4c65e 0b75ead8-fb5e-41ad-b8d0-ed64a888120f f2e476c5-f02c-4329-a8d6-eb0098e48f68 e6bd6fec-dfe2-4da6-9a8d-35d2f5c93ac5 8933f3e1-444e-40f5-8d1d-15de3050269c 7ef01aa8-6e0f-4353-af90-083747517b7b f5332421-603f-48a1-92e1-969598edf728 abe1f936-dca5-4802-91da-07080fa596b3 b614e93e-46c7-40e3-85a4-c03a19aca70e 06b45f4d-bcb3-46fb-bd4d-061692497f19 d7d9bd2a-9b38-4228-940d-08f05dab9ade 411352d9-53f0-4cb8-8b0c-18f061e26367 b6ab3b09-0582-4262-8b13-718e78885d15 fc37224f-55bd-4025-9402-4266c1625e36 b87b5cad-d061-4527-ab46-3d8fc805f913 86b5bf6f-a641-4c84-a54f-99786161071b df8eebd2-c93e-465b-8605-ecab56139c6e 55e34429-8cf3-4f40-a786-ab286cd68bd4 66d79ca9-cf9a-40a8-81b8-e10e14d2af6a 55a06098-f7f1-41b1-bcb0-3fde4496e87d e771d507-bab5-45bc-bf3f-8ac49285c683 64aa2bf5-2dbf-48dd-8e50-52894964585e 06e964a5-d56f-40c5-ab70-9a60af5f60ed 320ea39a-b661-41d5-bf3a-81294519f508 73697395-750b-4a99-a143-f09d3382fe0c 00288ae4-5799-46e9-b581-fc7413e20d67 ef8b8310-ca93-4192-bff0-a1a48da4e995 be90c649-e54d-44a6-9d39-553ab802a310 ffe510fe-87ab-431a-acb4-77b633380fbd f4dc8dfd-00e8-449e-a3bf-f5caad4a4d8c 10e64a8b-2821-483f-8d2f-550b16469e7f 5313f9f3-9693-4ad4-a230-a02bfe245146 c4745c32-1237-4a65-a89d-c977eec8b745 58ed319b-bde0-42eb-a72c-c23d9eb08068 67c6d032-127e-40d8-95d7-06c4972b1b6e 9f200a59-17ae-4aeb-8b2b-0b8a4a7393d3 b3855657-3884-4dc9-9e4a-cd2ad334a657 d42634f4-db7c-4efe-9331-2f7d0b5ff0d8 4e67a0b2-bb2f-4b92-a1f7-14d08c85bcd0 5bf5c71d-76ed-48c9-809b-246b1a6b24a9 4d972f74-64ec-4740-9c7a-1eddaf06af4a c828d85a-0b1d-4cb9-808b-87696f0a5721 fac42c78-b9f9-4e9f-b7d7-bac379b4d353 75ca9bef-3589-4e18-83d3-ee70b9d6bc00 2af42ac6-c6be-4028-a1e4-7fb987fcc17a 9986b95a-fdbb-4073-8242-c3632b9393e1 d8a70988-532f-4bd2-be61-65a1fc6f640e ec1e7aed-8fae-41dd-95e7-d54f39f205de cdae9225-03a9-4891-948c-f5473fc2c8d8 7272b5da-9cae-4ca7-9abd-a9c270bd77b5 453750db-6fc1-4a2e-966b-0c38163d9b0d 578c3295-8c01-4c85-bb19-e0d1f55583e0 3555e8a6-c80e-4d6d-ae83-74caa968c6dd eaa35c6d-923e-436b-a334-2a75d5565d36 81e96ef9-643c-4621-8451-68f171969c07 01244464-1d38-46f5-8b70-685594c35c75 d2254e2d-8315-4bf7-a32e-24de1dc007c8 82cd0d71-51fe-49f3-922b-b0d0bac01e38 a4a50da8-8432-4065-96cf-f6df5f4b9928 6944b428-ff5f-443f-8b8b-481bf5025703 1b1e545b-b4fb-43c1-b45e-7e5b6755a874 e1bbce8d-214a-426d-8af2-3de331e07401 dfba7f51-ece9-4fe7-b413-d1f19cca4088 687f4910-e80b-469a-9fe9-7dbc861b8abb 5ccc4aba-57ad-41c4-af50-2e53c0288351 fb64856e-c901-410d-af92-ab951881947c 6490a24a-967e-488f-a9a8-ce87edf8cef7 b45e24e4-2999-4338-bc46-393599995656 179c8e4e-844e-424e-a18c-23f9079b8962 08b5c7a7-454b-467c-a31e-f0b844fa96b0 7cb31406-9928-4143-869f-c177daf6d6d8 96d892b9-ff33-4223-9a26-215e4cddf652 de0ef5fe-163b-4f0d-9b15-d349edc4afb6 9600dbd4-5156-4bec-aa63-c9d13bfbe4e8 5fa4d524-3517-4456-b5a9-d1dc52b3e166 79ad9e99-adb9-4cf1-979a-01e2ef9f51e3 6ae3aa2e-22e3-44e5-806f-28f3a0849633 eaca513e-e9d1-41a4-b2a3-d91b3f1e0649 63ae2c1e-b70c-44f4-81cd-b7f7477ef85a bd98ab8e-0d27-488b-b689-881b466b6576 f93f98e2-3025-41fe-a275-0509a639ddd2 b1b0f2fa-c26c-4633-b129-0fb72cc6cb00 a7130131-843b-40a4-8db8-24dd2e758f8b 1cad32ae-273f-46f6-9231-2a093364fed8 88145700-402a-48a0-8ab0-d5c8d0e3c664 3d727107-190b-41d9-8728-9f73d879638f f2252707-45be-441c-bf8b-fff2f6184d56 52701095-9089-436c-82a2-bdb059aea6bb 696bab87-767b-4235-868b-2280fe4f6229 8529189f-14c0-45c6-8676-382aebb4356e 480220c8-869f-45f9-b5b3-09a74a17e547 d279675b-7aa8-4303-803f-9ff9c8b00e23 97ba2212-49a2-4758-81df-ed065370d9c0 e0fdd6cf-570f-4351-820c-43f3afeb6d69 c6688b63-60ff-4e30-a194-be9223b84cc3 619f449c-bab4-44ab-9904-421cddd21323 23ae7e13-c254-44e1-82f2-099c2cd3dac6 cd53429d-8132-40c9-97b7-c321e5314d46 85233332-7e74-4f38-8b51-c83f279203b6 fe550bf6-88b7-4ae0-87f3-4970e438c0f1 65e45540-6a78-47bf-9d86-a24613da3f98 c078aecd-f870-41eb-8f45-6f1094d3688a 3b816e3c-1110-4378-863b-ffbba5e48030 77dc4438-0b46-470b-ac02-e4af02b035df 6a8e1d20-46a7-4fdb-af97-d4ec859c0fef 34f0598f-0909-4ed3-8d0d-fdb3a67d72ec 41ee0d10-5e72-473e-b885-2fc9422df4c9 bb9477c8-1a17-4718-99a5-fa8092912cf7 dafff8c5-d7aa-4cbe-a976-f4bfad2d4182 813a829e-c77d-4461-a60e-34cd147655ec 8e1c087d-8ebe-4efd-826d-dc5231517a5c acf70630-e283-4961-a2a8-4280e478ca88 f17fd4f8-0de2-439a-b5bd-2cd95f8ce7aa 2b2dc6dd-637b-4f22-ab86-365e38965f83 9488dfaf-3c6c-4d8e-941b-9e9fb6b37f80 f7211aff-41b6-430b-8b38-5d57582e2901 de388003-5dcc-4982-99c5-b9ce3b551f3c 5d58ba45-680e-4cb9-abb7-e0ffe92abeba 3e31b9b2-72e8-42ec-9905-7ef3d18ef00b b1cfee74-b7e3-4854-95ab-740fb1f14588 76b0a04c-7077-4934-a4bc-73822693dc62 99c4997e-e763-4175-9669-4d10bfaaf807 c05561de-e6dd-40af-953a-ca0be6b3326f 84d6d768-c614-4cc4-9459-2f1d30e9ebc6 e384ed1e-d89e-468c-8c49-5b9f82e67b97 bed08163-c9d3-4ea3-bc7a-8140a43a6adc 2f708d70-89d3-420c-b18b-2dfa52979f5d ae1f5eb3-260c-4fa1-8b3e-a9138185a978 a4d9835e-2b89-45c7-871f-9bf24bf8867a 3d37e37f-447e-4e79-b9e0-196cad83ff30 ba97624c-81d2-4ae3-8748-5b9084acb7ab a9f9e8d6-e047-4c02-b98d-5c6b3be825cb d034dc53-762b-4558-a634-4bc64620cb9c a1faf960-d62c-4ffc-be7f-16708c6b466b 300e363f-5441-4e35-b2bb-934f0adae787 2b732a9a-8cf1-4275-a443-fd50f2853509 05a67b48-da9d-40ad-94da-2733e36e1923 88a2876b-2e0a-42bf-8bdc-a80d73672109 d2371194-9c8b-459e-8811-511d041ab08c 33744c00-3e26-4ced-b961-4437af380c21 d41a1604-faaa-4f07-ad96-e266c86eae1e ef151043-272c-4caf-a086-1c4ca05e568a 27522c5a-8bc8-4130-a999-b59652078ce4 5f9b080f-a332-4117-b82e-afdaef8bc543 652941a8-0d12-4bf3-a25b-d358ebb2b4e2 d2ad6c59-91b9-4c8d-b04c-1980540ea7bc c973a776-97e9-4aa8-8e3c-d74f2b909d00 3c5fb0bc-d99e-493e-b1ee-90a88e89a3f4 d78ab0e4-1a28-4c98-a280-7a7521ea8bb5 a4fbcfcb-41a9-4c98-bcbf-f6698bb4c376 180aa8d6-20c8-4778-a838-13be346b4752 594156f7-f578-4346-b5fd-ade7dc1c92db 7873dde2-6d40-4abf-a314-dbc87d6b1fc2 e49e76a3-f038-40ba-adaf-23525d311a10 01578f3f-41c0-453a-9051-27d12420c96e 370ab860-57d2-4fb7-a05d-391855225f0f 57d969e4-490f-41b1-8f9f-0c386258dd0b 9e38a824-b6d7-42a5-a465-0b04dfe45e60 0935d5c3-ecd6-4a8a-bccb-b5b6d585d159 c7f33f98-804b-4499-bc71-192bd53ce2d1 b963d4ce-3e78-4c9a-985a-df32782e1e80 df80937c-f9e0-421b-98fe-980ec21fe59a a421cac3-9cfb-4f92-a708-ee601d90f40b d6c9a834-d6e4-49c2-944b-adf50975acc7 bd379c30-e241-4bd9-938c-3ed5c167f852 5301c517-e7b7-488f-a14b-7c3920ec3911 f4dcbc3d-b424-4760-841c-a6c2ad2c1213 371cb4c5-01e1-4269-8e13-1974b3c7e00f 79f8c360-48ef-470d-85bc-3762696b278b f6185b78-39de-446a-8f50-600ca2d83a9f 189a524f-c90a-45e7-b36a-5ef7dbe00f64 0e447d21-1fcb-4b11-ae71-84cb6d1f49d5 4e979507-cb38-41a5-af68-49787dfd13ec 2fad83b3-d57a-4e6c-ae2c-73a9a5847015 937d23c1-5d14-4932-a0ce-0c663ca401e7 04e42279-0144-48f5-811f-efbd97792c9f 51c1f233-e997-4a52-8cd8-9d4c323ecf8c ef847b89-ab0e-496f-bf04-ae58d5103136 e7df18b3-8d97-4210-a1cb-b988679c8c67 7aa21892-e77c-409e-8943-16c871a9c382 3e0b0e30-8f92-4d2f-ab02-cbe73eef11b7 2d250514-a76f-4545-9bbe-3728eec32a46 e9386309-84f1-461d-8cdd-39f400d749c0 941e4dcd-fbbd-457a-b8af-12eb52b00ffe c5b7760c-ada3-433d-851f-131ec0454ec1 efeb5ec7-cbd1-4bc3-9ab6-9ee820cf8b77 405c0ea1-0183-400c-8f49-f8fb562318d8 03fa0cc5-aa5c-4277-a133-85f66ed8eb62 677847a4-7bc4-4268-be7f-113ec017a8b5 2abb5156-c3a5-4e82-afaf-02ec1a31eb96 6b14c703-aa3c-451b-907a-ad36ec974e4d 80a068dd-3410-4f97-8d89-cca5d4b83b9e 6b1e4597-ec0b-41c9-8bd5-961eec9089d4 8ed47e16-eefa-4794-bd91-c090ddcf443b 41e549c3-b5b4-4221-85e5-97371b379044 ecb24d04-ac23-48e4-a20c-40356c742827 1db7c128-7868-461f-a894-985b6134a423 c285c428-9eb8-426a-8659-390209ac7a41 953eadda-b8b8-43a5-a110-23792c1bb7da 92416313-dd9e-4583-9246-4812128329f3 bb64f6ec-e54b-4adb-93ce-6746b1dff171 16862d5f-bfd2-490a-a0c5-baf5590193b0 fcb2a309-f21a-4f9b-9986-5f036b6d7bf5 e4e79ad5-0e21-4ef8-ac56-99633cf71f64 4e935a18-2609-42e5-acf1-80b8d79ec5cd 3db9d83c-b503-42fd-b136-4a691715e4d4 e9392a23-54ee-4fd4-a5c1-5ef37f134c0c 384856c3-e6e2-4a96-a676-7dc484bd224b 478e06b9-2d9d-478d-a066-9240e875387f 016597f7-6b1e-42a2-bf8d-11be2ad925a4 ab36e483-d8c8-4cbe-b87e-8ca0c2911d02 4e0f2820-bb0c-4b69-ae7d-17a98b7466e7 a6ac13e1-079e-466c-9adb-fd3a63df802e 39dba90f-a837-4081-a433-e387ba29f5d4 42c5bc1a-527d-4bde-be50-a2e0b427a05b c849263f-7e2f-48d7-a28c-4dbe5db08ea7 b2b3aecf-fb0e-458e-8b85-f72a73ad9a08 a4f8aa94-19b1-4824-8161-b2bbff763545 b39b9cda-e364-4378-a43a-0c2441902bb1 75933509-2a9a-4be4-b6ee-b62214346453 2ca54075-1ce2-4aae-84a9-f631023ba465 1dae44cb-2909-40b6-9b2b-2dd732a040e4 b289438c-df13-4691-b1d9-bcc5d111cf38 5e97aff6-00a4-45e4-944e-e564e2256ebf ef59642f-e7c7-4eb5-9f4f-4ba25af8eeec 01f87cc0-b1a0-4f70-a798-6f153a2e6422 b960d9ed-dd3a-46ec-97de-bc12f1ba60a2 4f3ac768-a7cf-4833-86d1-2cf6a99b2610 cf35a331-711b-4e94-871b-8592ea40746c 601878c4-dbbc-4a92-b8c9-6e2586027f6b 18d2a8b8-4bef-4e0b-9698-815dbc50b8b5 c8adbc55-db8e-440f-8114-cce6033d9130 ba123f9c-e0e6-48e4-a8f8-84cc6633b809 5bd4af52-8a5b-4757-a8f5-b54607c7e1a3 e47267cd-166f-4840-b341-9dbd3cb8065f c8631043-8a22-4a06-b213-9fc882aa9721 45525e77-cc94-4152-a0af-17d0df9121a7 cf2ac0a8-5b42-4967-898c-a1515295b2b5 20f81bae-ca77-4e94-9848-6e507578bfbd 1ab44e83-4422-44c6-a906-58686ab84714 49cce979-8f7d-4821-acf5-a198157cd355 f3de03e0-2987-4f35-8a64-9d06f187cef2 3ad0c740-ee5a-470c-9637-9560c9b9781c 63318442-cf49-406e-927c-f8dd22e6a82e f8b67049-d799-489a-883c-cb1640a06946 54b72f9c-171e-4c1d-97a9-eb4a9ef9967c dc928a01-a12c-492b-882a-10a06b2ae121 b26284ba-92f2-4c3a-a087-f7e1ccfd038b ba877e78-ac4d-4531-801d-63b99aa7d8e7 270fabb7-7d1a-40b4-ae58-ce71cd800dbe 383f43f3-674a-4252-828c-27790fcfc266 8093f639-5de3-4d3f-93bb-338ad9193378 f512ccad-86c2-4125-bb28-9653c8fcb16c a83fce95-221f-43d8-9f70-f370c8504cd3 55822c07-41a2-430f-8ec0-6eac60c50380 0328b82e-bab7-4d61-898c-a99a613dc60e 319da46f-ae7e-4481-90e0-208c97106c8b 66d78b22-0cb5-443e-b63a-43d1afbe161f dc2d6ac8-973f-4da7-b7ca-4d3485356c49 1b1d6d57-57a6-44c9-afad-d76efe8f1879 ba3df843-7b5c-4bff-af2c-4d9f294e124a b990e587-f8fb-43dc-a56c-f7b3a57d825e 92544cbe-0b19-4f55-b40a-edb14cddebf4 ec0c113d-092d-4008-8f78-c1066e0e2ccd 79e7f5f6-399b-4102-b924-2f5ec4101221 e7fbd993-44c0-4b8f-a00e-276726a39c11 3d9b8d7e-6361-4a5b-a2f4-54279ddb7589 2d65ec51-4d92-4eef-bea2-707e6c889f26 f5c4261e-d306-4c75-9738-d4feddba63d8 3e8b9b46-db19-4482-baca-39aaa5ad7e0d 040cf8d7-12c5-4e7f-a6cb-e20d0dbc529b d417005d-d254-43e7-b4af-98d6a7a917d0 45d2de33-0440-4786-af17-1981404f8eb5 13f58863-72c8-4056-8b77-3399eb0a89d2 a373b634-69b8-47e7-b464-faaac6590b84 ba117533-533f-4ab5-a0de-a1f919cc694e 74d5ce85-ed95-483c-999a-9983ba701a91 216c2003-adf5-40c0-a364-e7c201443407 1732e61a-75d1-41e6-86e9-ae3b49611ca2 fd1a3d36-9508-4240-99bf-e953b6f04704 c27b7e57-bf47-48ac-8516-dc7e60f3595b 86957058-1b60-485a-b223-b84ac3423087 ee67c7b0-22c0-4c27-85e3-9c799e880b59 4b039b1d-05c5-46e3-bd79-b988808e94fa 151cbccc-9334-46f7-8385-8f697c6b865c b4f0bbd0-a9b9-4710-9364-f105c670634f 043e08b5-a19e-4606-a8f3-1c4cf74ccbd5 041fb94d-7120-4d20-a71f-980bb6f4dbf3 51d0660c-449d-4911-963a-b2fcd37b88a9 5054b909-f394-429c-9adb-94eb7cd7249a 4e64aab7-ee7f-4b31-a66b-fe4abc1609ab 4ccf9ebb-2c95-486e-9e6d-2f42f066ca88 293d295b-d16e-40aa-93e4-2867fb6b8229 92cbc303-d045-4659-8b30-13c0bb6c3c5e f3508551-cb3f-487d-8eff-46740853c00f 83910f66-f033-4b5f-b333-816726d7d84b b452b5da-9f38-4f4c-a30d-5830e796eae1 e6db5dc7-02c0-4b6a-a810-3f29f8381148 106f2fc7-5044-49a1-aba2-c4bb7d450ebf b36ab9f8-e3e0-4e2b-9a08-362fae5e7102 28fccafc-af98-4daf-ace8-84bdea59c386 63bfad2d-497f-4c70-8b6f-8866cdf8122b 85ed90ad-0332-4864-938f-c0274aabcfd7 c17efbb6-cc78-4c60-a1ff-073b2fc19582 11dd6ae8-3a62-4dcc-b871-4e3979c39ea1 5261216c-7cda-4777-bbaf-4ea8ad99a06b 0590e1b3-d49f-4675-87e8-7480e1c9cda4 4e6a9e33-76a5-4c2c-a655-79d042f3d242 71034403-9230-4d8b-b6d9-09a485df0eaa 7bb1812f-0430-4a34-bdab-b2ef7d0c75c6 901a411d-8024-4122-b4cc-d901f3c5e410 b949cb8f-4a9f-4376-ad65-6a5d49808f12 e5626772-8d75-45e2-9b05-77be4dc1e5f9 e9a06ed9-a389-46e3-8dda-a44ed8863482 f74010c8-dddc-4cbf-b595-dcf86d7fe43e 1119df9c-25c9-43c4-b893-4169b206cb87 13f818b2-8a35-40e4-8ceb-2de9da76c994 470d77ab-105f-4802-a018-be08e1ffd49c c6d14d8b-f6f8-4b8a-aab2-acaa6badc57a 7063d534-7019-4194-a11c-07b68ee4eebd a0aac7e9-7622-4741-8d9a-678fe2106615 68b7555d-9584-47b9-b8cd-f7ff2098e8fa c613f401-aaef-4e29-946e-5aa15b6c3efe 88bda72a-7725-45dd-9b9c-3a7188f252d0 caee34f6-fa96-44d1-af0c-aa4b3ac2ca46 81d5d3cb-fc14-4e2e-a455-f21a8ff47612 8f930b85-138d-410e-a201-7df25bbd46b4 3146a60e-5cea-4e18-951a-b01d08f0d6b6 ac201c75-c8d0-44d7-bee3-58bf584800ec 6ec4f6a0-3348-4367-96a7-3f6cf8f68cc7 c9c1ae26-68bd-4f43-ae4a-c601086d383f 7aa97932-b798-4f07-8c9d-35e7cb143b57 3f91126d-884a-4267-9668-062aa21d5131 43179827-3fa7-4913-94b1-e6b96923f3bc f01e6c8e-8e09-462b-85d6-587595d69f8a 5a5c3510-5e3b-4af3-b71f-f7075a7e40b5 931ed557-3e64-40d3-b1f1-d634cd19b249 670e0b0b-450f-43a0-996d-2d5c1220cdbc bcc57ed2-0770-4892-920b-a6fbacee7b91 0353d316-80f3-4627-8791-7f7d3d191dd8 8fccda8a-6616-4481-9db3-37ea8d7dd3bc 1c1c94b4-0681-42b4-bc94-08dd7669922b be277970-5c0b-4fbd-bfd7-dc2eb3523ea4 65ea1b1d-ca9f-47df-8d03-696e745be434 da0737f0-fe20-43bf-b7a5-847497df8291 5bdb9e73-fb82-4940-b2d0-894b921265a3 d64db3f0-271b-4fb1-bf9e-089ea57bd204 d0c50575-488d-49ee-b150-7f6d517d81b7 0d7f86d2-5065-489c-89a0-795ebe728f61 c94bd9f8-dae6-40fc-9ba1-3f47a42579ac 45a6e1f7-34b1-4fd7-9bfd-8f0faedc64a2 782b6602-43af-422d-9b79-7aebd63647a3 2052ab42-a5b3-41ad-9777-775fd5dea80a f4b80808-9900-4239-99c3-ebfe62aadc7e 4792df61-7001-4787-8572-f7dcab77ea0f ea828dbb-7e4d-4db0-bc52-40d9a9bc91d8 ab65267e-006d-4363-b977-78ca48847332 30c1e752-9bc0-4bd6-8a80-84f879f132e3 d06c0519-d4d4-4069-9018-2bd9e03c31b5 76abf0a7-f6af-474b-b319-7b56664ed7a8 d8e5434b-72cc-4719-8d73-630dd70bc2d0 617561bb-60c7-4473-aaea-fd678be91cbf 5057b402-4166-482e-a4f8-9c4d436eafec b7995388-4efb-4478-b983-ac2d674f8982 496022ff-2662-425e-b048-713dc457fb38 d1323393-a50d-4616-b386-60fa7016eaa9 169be11a-e24d-478f-ad6a-7288d88f182b 9d5508e0-9203-42f5-85f5-3144db2f1ea9 90ebbd9a-8882-46d5-b0f5-c6ec3e791277 970f2536-b309-4f32-a3cc-1215a77ee057 f436cf0c-c480-4d0c-8acb-0db14687f7bc eec49dae-8a78-4413-be79-a61df441b406 1d872bdd-5c6e-4106-b4db-7f74a6ac55ed aee11131-3150-4262-84fb-1917267e392e 1e971b6d-f0e7-4857-a621-25318133ae47 556b8675-63be-4df2-a24b-b015edab4f77 2889b954-70e1-43a3-b283-4ace960585ac 995e349e-3969-4ced-aa37-5fe85405f8a9 b67ed9e5-926a-4920-ad27-82061617a0c2 f79cd19b-c41b-430c-88b3-3dba84c0c1b5 dd151145-d431-4cf3-ba99-976dae4d272d 99d9d57c-692f-4a7e-8eb9-2adb50744564 a138ea70-2a5b-4541-80e3-ac3757f601cb c5cbb621-11a0-48e9-82ca-fc645a30b7f6 41fc3050-38c9-4b3d-b3fd-65a79edb88a1 6e765b14-fcc7-4b1d-a14f-b701006857b3 d4443393-8b0c-4de0-aa06-f8ab8b578915 94ff1119-6030-4214-8957-9ae207127be1 3a6fce4e-ee8a-4f6b-9415-3048a577192f 73b8904b-431e-42b7-bcf3-99173b1f936f d3140704-dba3-4535-8ba1-99949c8ba9ed a153ce08-5986-49c0-ac9a-6540fea60bf4 41dff5b1-28c1-4440-9b79-3a211acad1be 826508cf-9e79-4170-96ef-ee736869c10d 923ce468-5f21-47a1-ba98-a3c04be92b40 f18b611f-3e60-4b39-8f21-c1efc5a56bae 2973a499-2075-467a-9ae4-cb8a8ef5ef15 44387613-8250-4dae-9429-a664f2e5d4e2 80966c12-d0ae-445f-ba56-12e93af3e69d 5d206ff6-2029-41f1-9683-3f2f8537520b bac8ac28-339a-45e0-8fd2-e23b56270049 9a6fb50d-707c-474a-ae03-e38142361c3e 5c0b2f4b-cd32-499c-b9a3-707c4f4e702a d071e1c2-199b-40bf-a7d4-ab91fe0d100b da3d0f30-27e2-49ff-88a5-f3a444c809a4 39d1f521-3a91-4715-b399-d74609a95c73 640d03f5-cb00-426f-a2b5-6b1cd6760068 5a0888c3-f0fc-4eba-8fff-66661f016bc1 dbcbf747-c5ef-4972-872d-cb1867db5400 17de60f9-8e80-4ea8-9314-7c4060fddfa9 aaaff99c-c140-468c-80c0-e789a8eade03 af92a2c8-772e-41e3-bbe5-9259e60e3774 ff5c6af4-12b5-4531-ab51-071c204aa8f5 a197d29e-21f9-4016-9f86-80b716a8ae43 dd27cd33-9679-489d-8d29-242aa063ab58 f8f9ac78-168d-4ab3-8e54-2468dc90bb43 ddce159f-3650-4c6c-990a-97751f7ee2e9 9ec93898-d8cf-4d97-9133-0e30fef5475c d5878fbe-b4a0-420f-8444-f9f097c7bd17 bf77bfaa-60a1-4f9c-a748-468f41822372 00120d6d-74a0-4f91-85b5-9bd29bf2c045 17606201-1026-4070-baf5-3e153a9de6e1 001be924-a690-4416-863a-44cf0906b0d6 860ac429-2697-4fdf-9894-403fed69d078 ef77b3f3-865c-4b9b-ae02-e13010455b6c adfaeca2-4f0d-4e54-8b01-e677206d8843 d69f4277-66b3-44fd-92a8-f43040ac495c f78d3c93-4c99-4257-953e-7d656edf49ed 41252918-f15a-4989-adec-d65619663086 0bd5c51b-ed9d-450e-b3b1-f97869abdf56 36cb0d5c-6a75-4374-a696-0da1a800f278 237cfcda-1f6d-4930-a41f-22fca149b01d b9681dab-12cf-4366-af62-7e54a0b4169b ad8de210-1f8d-44a5-a89f-90d10fa310c9 49b1d31f-0cca-4949-812c-ccff04176633 11fd4fa4-1a13-4f0e-96fc-225e6e9b51d6 ba43469f-a7f9-4ad0-9e21-f27b3c0f5f61 1c13b261-1bf7-4b7d-88f5-bf420cf06b8e 553fa2c3-7c00-4841-9607-0c6407f1e3cf bc4f400c-d5e4-456b-8bbc-dc044d17e445 fca21ac7-6bd7-4310-b861-3dbd870a1636 c0da71c2-3d1e-492b-a91b-b1ab44d8d2a8 34c1156f-68fb-4878-b47e-e751e8f0ea6f 4c99f5b0-f888-41b9-a4b4-051ba6ae0b14 72573d20-373f-4703-a301-77d0b9bcee7c cc127f48-1d97-4a39-8b0d-757f1638e93b c1655f24-c250-446e-a4d3-dbe300ff44b9 e2707029-0bda-48a6-9cba-63252750d2d1 94c9ddc6-1568-44fa-beca-912c2a80e95b 6e6b63b0-025d-4f0b-aa79-1c065a92a898 48622164-4d0a-44e6-91c9-652cc6749098 2eb93e15-00b1-4036-a4cf-3a8a6db69709 501b4c84-3119-42d0-8f4d-8711481898e9 35e37c1c-14d2-48c2-be4d-ed88255e7b6e 0964ec65-ebe8-4f19-a19a-36729bb852b7 d1825ebe-ced1-420c-9f25-6deb6e2b8ff1 d6bcc70a-b5ef-4224-a7bf-0fa782489480 434ccf06-9340-48da-8af2-eea239579c55 19a1a9af-5fa6-43b0-9029-02afe089fde9 01d15ab4-ca9f-41ec-97df-c887d57f9603 ddb91a99-a3b8-4f9f-9398-5052e09ecfac 07cbec0b-b21c-4b6e-bae8-c9629fb12295 8e744eac-039d-4589-b268-4f5313128af8 f1253eb4-3066-4541-adc6-c7c323effdf2 fda09e8e-1721-44b6-ac6e-c6ea8e4a7e80 4925a9d7-cd97-4294-b038-44a3bedfe160 b8d78b8f-36db-40d6-bdc6-4e8c9cd8f69b 5b03b28f-0269-43d5-8ca4-2de13bcd42d2 103d38a7-a587-4e2f-b27f-f1c755c3fe0f ac21ead7-dc9b-4d6f-b2d6-1a97ec911394 fb7ae789-b10e-4f78-ac0c-44a5935c9a5d ac7bf8ff-e8c4-4233-85ed-2832f8cae374 b619e7dc-555d-45ee-9db2-55b63093c07d 6572f140-b1a9-43eb-a308-af1c7b9f8b3c a9564124-1578-45ad-852e-07706b0972aa 76197023-4205-4fd0-8791-53e50ac407ca d1dfc136-d93b-42cb-a3d2-e89d11c51903 32a433a1-9433-4813-a43a-3e8a3d2a1bf1 eed86ed4-6795-42e1-8db6-4ad33e9da9d7 9ca39de4-9dc4-4607-9f1a-0367dcccf1c7 a8c275bf-985c-498e-b82d-7f3ebb8b1db6 590603c7-2af3-4512-acc8-259f324f54a1 14a75c21-ab14-4204-ae8b-a6aea398f368 a2b45803-f884-4102-af66-2372615a416a 40fdc37e-83af-480b-8609-cac1dc2ba92d eea3cde3-289e-4ca3-b392-32e0410d6aa4 f7a21adf-577c-4e41-93b8-5cc0e62c55cc bad9f3ae-f90e-42a0-a4cd-317d8bd8103b c70ca312-0181-473f-ad0e-7bc8350c5fa0 5cb2a9c3-9867-4ed7-86e0-cee03bbac44c c7cb6e8f-f03d-498f-9423-144ed4111368 06a7206d-4b6c-4081-82c9-5472e63a2f2b 924d428c-7999-4e9e-82e2-3050470547dc b2f3c45e-3b5e-4091-9d7f-6a085d0a6e54 66649399-4940-40e1-bf57-83b35dc729b4 6db3e22e-b99d-47cf-a5a6-3857b1848d62 99b07997-a782-4a27-8b7b-c2c364265b08 b0d8989f-091b-4fee-ba86-f621f49bee95 b507b851-254c-4265-851d-1b5fa292f4f4 d5b4376b-ae8f-4af2-8285-99f813d044d7 de2be967-4712-4545-83b0-840cbfabc36a 26911a2c-66d7-4fbf-b404-02a0d74e9892 c75a31db-39dc-4e8e-a0a0-44cb4e32d241 e68985f4-df35-4db7-b722-a364ece3a198 d024207a-d864-4743-9c10-f75a3387fe5a 19e394fc-bdc0-42f5-8e16-688b503972a9 69889fa9-e77f-426f-8f6f-757b33cafbbd 2e10e6dd-6a7e-4d86-8f8d-107647a9b59c 6b5fd0bc-7fd1-4045-8fa5-a43df7918584 cd8771a0-b21a-4653-9f6b-bab397864e67 b9a02cc9-6713-4aa8-954f-937bbe6af8f0 538618a7-6ff6-4f05-bc1b-2c77da29cffa 705071cc-9de8-4d8f-9ce4-50101d5e4590 8ee227df-e2a8-46d4-a10a-b5d24b103c53 40ac28a7-d97c-4bc2-a4fa-7c5afa1dabd0 a5b9c22a-1dba-4d32-8fad-8288f193f74d 7f137adb-6e61-44c3-8e43-ec1626881b74 198783ab-b56c-4169-86d0-09fcc2b61840 b2ec948c-9338-4834-bf29-9c4b6a504775 079a233a-9167-4f41-8211-abd12770fb46 0ca73345-85c5-4915-8b1d-c19b7630e24d 8a35c0f5-7ec6-478d-b129-44510ec34ea3 bb16a2bd-e9d3-4b01-9c68-7954559ada99 ba92dc3e-b784-4056-9332-f595254bfeee 1b1310af-6d95-47f2-8e7d-13dc8bc42db7 7d02b1f9-414f-47e9-a25e-a5c2373db43d 0d5e1a55-564a-46e2-a7c8-c0103184e938 b34812d4-09b5-4587-bdea-54dd3fb0754c 67832ab7-d57f-4eda-b3b6-68b4956c8257 2fb7d383-b2e4-4ee4-b7ab-5b999e0a3432 e4661ce4-2cf9-4707-9551-a283d84c0c9c 8f63a762-c755-4197-ae01-2bb45e942e7b 92e79631-96df-4446-a9bf-147da1fc98b8 7d4b657b-2284-42c4-940b-21ef17437393 0f0d0b8b-420e-4b13-b202-0c74e6251d4b af612908-6c05-4a6c-83fb-35663f06d287 dc155fe6-278a-49ec-90e7-27e624807416 d973f87b-fcae-45e1-b421-0ac37c587e68 0150ba1a-87cb-47f4-8f23-ca3f81c45c24 4612f984-16f9-4ae6-87a6-42699a4a0288 08d64f67-323f-4e7d-bf8a-6ca5f8c6f506 685dca62-9e82-4df2-9e48-44707f2546f8 47116db5-a304-479e-91ee-5443213db570 be3821d3-a9d0-41d0-870b-eb67e1b6cae6 94da84b8-b782-43b8-8aeb-5ea440e57732 ba95583f-4f9a-4313-8436-48fbc8dbb3e1 44e9cc77-c1e6-4e18-bbe2-8d0c892afd4e f15ee685-a1bd-4ebc-b2f5-2e0b13b5e9de cee58b24-3baa-49b3-9669-291dbb5f417c e114de73-d426-499d-967a-a2bc3e23b1eb c3e3a645-91f8-46a3-93dc-ea98b1287095 7e61b95b-7074-46be-94aa-6d45641f4ef7 73d43032-fd07-411e-a2db-485137d4c902 0a9bc182-a355-4cf1-bb2f-1bdd34f5cfd8 127cfad3-5ad5-4b97-b0ac-1fd85de00661 0326b317-22d1-4ea9-a4c7-c4fe7209f46c bebb44ba-d2c6-48eb-83f5-54fc01600c5f f960db26-d0da-402a-b392-d76be64a3e98 6aa4ba95-b2a4-48be-9712-0796940be106 5ab48269-3971-4d06-ac53-0e962c02614a 883bb811-5907-4406-8958-2b614514d032 6670e198-2acc-4bd2-951f-efaf661e85c1 75880970-ff4b-40fb-b019-00ff7d282047 8be34c93-d194-47cc-abcf-baca31033440 1a00866b-9c2b-4585-8fd1-7eff581b2a37 9ac61e35-1264-4d82-87b7-078be32a16e7 1c2dc5e8-9da3-47f3-8ee7-154636f9f7bf 93bb9d74-4b78-4264-9866-42130b48da0c 1ea2df5e-0deb-44a5-bb5b-f48b748c015b a51efd35-9627-41bc-8e57-4e635821abe6 edc103a2-c54e-4d2b-8e4a-0c1e2bfb2aa9 c5535663-f725-45ee-8852-18e2435f1c29 652cdec0-c69d-40a6-9c4b-94f87229f455 8c2863e7-2a3d-437e-95ae-30f2442f1dbb d70c2d82-ff2b-4b44-bb1f-54c9221d54f0 eab6781d-8e87-4f17-8951-b23888b8eb2c d26cda55-9d78-43f5-8c6d-80f223744721 2f9021c8-da89-4d22-a597-609a0583cb66 dd44b828-42fd-419d-a2d2-f9bcaf23c2db 4d61945b-b274-4716-8abf-44b45a5d404f 902341cf-9475-46e4-93e6-bd67e7c01cb7 c6586bfd-dee1-4902-a4ae-7d7902587ba3 e3080087-2831-497f-9e35-bc93b34cca56 194021d9-24dd-4e79-a205-7d62b582e725 8c82d072-09e3-4413-8022-135b5fcf1a4e 2f5dd609-5847-453a-8510-ad60cab4139c 1bdb75dd-8f44-4a66-9542-0600975db0fc e556aa4d-1dab-4766-b627-c0fe5c10f50d 7438f199-b2f0-46d6-894b-aad5b9bfc9c8 a27bc2e5-fbff-4d87-b1b4-11124a49acb3 68749199-b3e3-43d8-8a64-815bc10eb0fc 43626b90-436b-4826-8cca-f6cd197f320e 27b72ee1-d324-462b-8ebd-c3b243c8dbbc f7f9f5cf-0ccf-4d6c-8f1a-d23cba01a34f 1e85f36b-f4fa-42cc-a32e-26bc34f03ecd a46eb324-d136-4cb2-a7f8-d3269e5665df 59cae048-0ddc-479d-a456-06f9df541d4f db8a7ad7-890c-448a-879e-ed59977b8a89 8e503629-81e6-44cb-8d23-d232102f07e0 0871ee9a-1349-4144-ae81-b8e522fc3e95 2f6a935a-7595-47e9-9427-347be1cc6e94 8bac0948-b7be-43b3-b092-6ca73afb336d c7262083-e6fd-48e4-a06b-420a3716caec 415016f6-35f2-45a7-9feb-95ee5289212f 2a6b3d95-ac34-4983-b2fe-3ddc390f8b82 0c57d8ab-dcf2-4cfa-bf11-3c72b98226c2 3e3e0768-9790-4f34-896a-a423432f6a05 4209066f-1501-44d0-bfe2-f3601aaae0f1 7b9fc936-b63e-4107-bd50-34b3c951ddba f0f8121c-c3ce-425a-bad7-122987339674 7d1c2a94-726a-4eb8-9adb-80d752af0aa1 fa433e4b-dc27-4104-b431-f14daf3a373b 1a3488c5-b427-4c6d-905a-f5ccfed61474 23a01fc3-5f09-49d6-8380-c9f0a6c5d79e 7c3de0a3-3dcf-4bd4-a978-0a1b042fb4c6 e7acb049-157e-414e-ada3-691f1e6f9720 e189cc44-5f39-428a-9651-fea6b4cf492a 86318edf-3b66-4680-803f-61ed81ac7dbd c0d29d02-2b26-4444-8004-ef97714c1bb2 d03a194f-7d21-4529-be95-32b673f70578 d35bf6aa-acb0-455d-a9c1-d914be7177cb 3b0108f5-5ad7-4d04-9f3c-18556703fae5 9cfc6bb3-d3c9-4a0f-809b-81e856d4e1d3 1f2b1876-de9b-4b5c-a580-f7082323bae0 4f2a8901-2b68-406c-a3df-da864c507266 a8b063da-2be9-453c-8aa3-92d75ebff236 c07d4786-23c0-4648-8c8a-3178dd31dd77 a21bd8de-5339-4be9-9796-838ccf8fb0f5 5d5b00f9-e874-4c70-86b2-775f087a6c8d a841b94b-4811-458b-895b-16f993f78be0 36ae3ee0-e5f5-4324-8e92-6822259d353b 30314538-0f8e-4f48-89b2-3e425a31e31d 7d1956fd-ec96-42cd-b137-ed6e6467c020 26a5268c-5b87-4fc1-947a-d87fee6fa584 63ab40ff-d45a-4eb8-8268-887b4396da6a b69384c2-34fc-4d00-8e77-690ec69a5fec 3272e851-6dd6-4868-b887-7d673c971e29 2831492d-e5e2-4c82-9f06-2aa8f9e3a52a 8a1aa62b-54e6-4efc-84d6-031eba11531e 0cc53e3c-cadf-4e34-a0c9-b9510bc0c2b0 76d304fb-a39e-48e6-8481-e7b5ab59bb8a 24c5f089-00ba-4ff8-bce1-2e1119a8b985 cef950fc-dd7a-44db-9774-0fe7d5054990 cfc2e143-154f-4f32-a571-ed338ec51e39 fa4b8591-590d-4a93-9b6c-00bebdae6aca 5981db80-e663-4bcf-a8ac-20818acc4da1 5618596f-8a05-406a-ba21-182a3ec97222 198199f9-2d9f-4efe-992e-15292e73e0a4 15c47049-b747-46ce-8e64-7b042f13e025 706b93d4-947c-45ba-9919-6bd505b35110 2caa6120-7628-48e9-80cd-c9a239e31d54 0159ebe7-759f-4e35-a825-ec21eb758715 a7124255-18eb-4662-9b93-cd173dea8f2b 60737fba-88c3-4a84-a440-87f6d9999962 6ad87de0-81cb-436f-9138-a21e6910adaa 11a4664a-f0bd-4d8c-90fc-00704094c161 48273470-264f-46ce-9d1f-373e45021fb8 1343a471-f908-48f9-b279-d5169d8591f8 522ed906-b0a0-40a7-b799-c54bd614d126 373b2047-c677-4268-89e9-048eac9acc71 0447a9cf-c431-4ec1-9e42-bb6941a29800 a98ee7fe-f1b3-4997-8b05-e1d8bdba4d80 daafcb50-9cd5-4d64-a209-cf1083775d8f 35948a06-2421-4c52-b38a-e69aaa5a6234 e2c75e63-9475-44bf-8adc-2f7b12ca4bed 47b991db-9a6a-42bb-9edd-ce04609f0971 1b4dff91-bb02-4b4f-b1c2-abf4a1bbbe3d 89e4ab4a-a122-4412-876a-0198f4fba35c 72bbda75-bf54-4ff3-b17b-93f960235d2b 83a44ed0-0152-4d01-bb0c-84493b602fa8 a5b831d7-79b1-45dd-828b-7fb838999497 bf06686a-1a3e-434c-86e1-4dd6b35515e6 e6197064-1446-42a1-a676-c8e959c69d2d e333f12a-18ed-466b-bd81-9f4c7ae8bdc9 8cda2917-8ce6-4a6f-bd4c-7b90890b5cb0 b0b86630-ffad-4364-9aef-4967fdf7455e 33ebf8de-ab3c-40a3-84e8-4bd72dffe18b 5e045f81-9f4d-4ce5-9f9a-cc5ba4b364f0 7d929f9b-5142-4eb6-89c8-1002f5f7b055 24a3abea-ded3-4652-9ac3-d9dfd938ee97 ca453ce2-7994-44ed-a11f-38c4d5ab9e03 34ef0a5b-37d3-481a-8b9c-37560342af59 cc8836f0-19fb-4f69-83f7-ae09fd08c68e bb1226e4-e041-43de-98ea-2729973cbd36 d2a44b5e-4178-4780-8e16-469ba6685911 3497f895-6b54-4d0b-984b-88cacba6f83b a3ac836a-b8d1-49db-a92b-6958b69a7292 c1ed3955-5c56-4709-9955-1541265f0b9d a024b992-d097-4340-919f-28db35025b4f b387911e-4e8f-4d90-bd80-9e91b7afd6a0 09870af1-24bb-4b06-bdd5-03c105e0763a 6ad8df16-f307-4fbc-8b41-a5fa25fed01a b19fbf4c-52d3-4642-81df-de5780d95933 fbf3be0e-a391-44b0-9993-537fc0ef169b aaa472dc-e671-49b1-af08-86a610ea0a27 2c67a062-e8c9-40f0-8764-fb939d50677c df4f1fee-5f44-44c8-92ca-1d19f06c1c04 7e4766c1-8d16-4149-a2cf-97e91ae918f9 c39ee50c-3e24-4700-a449-1d95b058fac0 f64d696b-b8c8-4649-8b72-57b5be6f7d8d 85a51c32-0164-4e8e-91b6-581367f8553d db59a3eb-f365-48e3-b823-56464c4bbb06 8ef2991d-cf8a-4448-977d-51a6ef012360 f30bee87-ab3d-4ab1-b12d-055fcf2f9935 384a32af-9b24-46fb-81c5-2faa0690343c 42764fa6-789a-4e12-8505-a21a71ebccd0 2a6c0a7a-defe-4207-b3f7-516975966cec bd54d62e-32e8-402d-935a-34fe264ce7a6 117fde48-91d5-4ed6-b36f-9b8e71c5943b 1bb96ec5-8aba-473f-a5f8-239b85e5bb97 4f4a5615-ef10-436e-ae73-98c8c2a9f35c 4f5548ea-191b-45e8-85fa-14d3f2e9ba01 95d0b507-c151-4ec3-85b0-47adc8abab10 3e691fa4-4bc4-409e-9dd8-d328673211b5 c6f7c69c-9291-47f8-95c6-4555fb90bac8 365e5f2e-9815-4d21-a5e2-6bb06eadad92 e82c805c-c518-4bc3-acdf-5eb76ea3f202 d023c76f-2ebb-40bd-a08e-bdeb2a35d358 b5136589-36ec-497e-ab85-6b77fccc5446 b84b1030-f175-45e2-8162-465beb5218b2 19e19c02-7d9b-48f0-9561-47831b365090 6f216775-6d55-48e1-b623-b6770be20a97 45f8a0a9-eb17-44ca-bdbb-6dcb4073ac74 2404fa34-1801-4695-bcad-bdb47fb2ffd8 4a7720da-a9f4-4cf4-a831-e1731fa0a79d 388e841a-9c3a-4e84-8d61-81c327243ffc 1c1e9d8f-fb0f-408e-a186-a5582cd2113a 94c3afc7-4ef8-40f7-8b3c-e412fe7bfe37 98dacb0a-365e-413e-9b3c-0737404746d3 491949f1-84d7-4fc4-8aa4-c8f5922adb28 24a4127b-2a5f-4897-912a-2f659492d558 b7b153e6-743f-4450-8b07-8c6ed9e8a5a7 270eb362-d6f6-4f86-8270-c1fa1bfd018e 87982c8b-24d8-41dd-b194-c8ea10260ca2 f79f85f0-4cb4-46a7-a1aa-3ed9bf10b1fa b79b802a-0e2c-45f0-a4f0-438ed446aeb1 2ca30aa6-c285-48e0-a25d-6932e4306b0b 5af0dd78-3f47-448c-bab6-6ed1a3417317 e7aa419f-81e5-47cb-86dc-2ce522d0f68a 13eb63dc-57bd-439f-9583-985a91eacd9d b7e74a51-1f9e-41f8-9bbb-b0af2f27bbf3 241c98f6-28a0-486d-bef4-edc8249027b0 d5b2b88c-e5dc-41b3-9062-33478e954e33 2da22885-7533-471e-b988-e127333df19f 8f229f44-e1d8-4c52-ad67-04ff075d5539 20674140-62ff-4dbc-bd85-479ee46d8398 6910b075-280d-4288-8bab-e287d5c8af68 792fdd32-1df7-4b2e-96e1-a9fa1f5d3a5a b73b7c48-babb-4011-9c71-330eaedce55f 8df1132a-e4b7-4c88-9c80-51510606441a 46fb41a1-07ac-4a0a-b53b-98a6c762c23f bf0bd486-8642-4df0-8ff0-ce36037d6fa3 3413ad70-841f-4d2a-86eb-e72b5e9db1dc 899c718c-115a-492e-8201-0c8f10b28d81 05c6a96f-d65f-438f-92b6-dc359cdc27dc 05ba8c33-139b-433f-b0e6-2572e0f837d7 36ed9127-00d5-460b-81e8-fe7392af0bcf 29ee6996-19ac-4f54-9671-40577fa27894 ca349f29-b0be-4cc6-9c41-139bf9323a92 8ade0760-9019-45d7-b719-b8f25ba3f3f5 ba4b89e3-668f-48a4-81b1-9cda393b922e 43b2bf7f-dc33-47d4-a06a-7c2ef9ccc986 0f825eab-5876-4ef4-ac01-297e535cda27 9a8576b0-a61c-4b30-8205-3e078e11cb8d 662b6121-cc67-4145-9adb-562d8d101d86 d34010d1-15f7-407d-9eab-8bd0fb75476a 04e17c2b-5a9f-4fab-aebc-0f049f2d3fd0 9347428a-f833-496e-b14e-421a2adf6c59 867d58fc-92f5-41ea-9d5d-a09c3d4abcc5 bdf63eef-96fd-4707-9344-dc69c272e5da 1ac874e5-395f-4f99-9788-1e989b5823f0 83de81b7-9811-4bca-9137-c3da1f779f5b 67f7d6b0-6921-4f5d-a0a1-99dbe668d12f bfe95e11-5813-4c2b-98d3-2af15f8e90b9 b64dc2ef-8dab-47c6-90af-0bccc35f5f51 6166d79c-839c-478a-858d-a779caa3ddd5 41d2c5d7-547a-4a3d-bf03-da982f6a7496 2ca0b448-e721-4b88-976c-42fee7e89b84 6177d9be-cb1d-476d-8b2a-24565ad50daa 625ef148-68d2-439b-9614-0ea1f1ddadf0 69c270cf-08d5-4278-b9ce-c10bc411b7df c8c02bd1-8922-4d43-9ca6-7d7ad2b64cfd 33b4330b-99c7-46de-9e1e-1bab0bc76cfb c57fb462-ff6c-45d0-83e1-bd5b290531ad f3ff3f5e-32cf-436d-bbb6-9495a533fa78 3de82c89-2718-4eae-90b1-d4462ad3d9ff 20f3ac27-9a51-401a-ad6b-dcded8d8c55c 39279893-fb0a-4e4e-bf65-760db92bb448 27df772a-b1c8-4bb3-acd4-dc4e42bebf20 3d8717b9-0e1e-4b04-8a50-fbe516f3f28a 73885f6e-e617-4f9a-9c68-18bdb1136f31 0b501ca0-0e6d-4df7-bc94-320ab6de32db 8eed84ac-439f-433b-b16c-f8bbcd721ae9 58f47e11-126c-4a6a-b748-6c454eb9e73a db2ad642-b54f-40ec-b8d5-812124e2bafb 5b0e9f09-eca9-4b0c-a1b3-02d9a648a106 e1ff21f6-b0e6-4ee8-ad64-044697314dab f4ecc93a-ac7e-4fb5-8a0e-9a8d6d0da5d4 873082fb-ba3b-4b9d-859d-9562c68a3df3 3a0ab979-cbb2-4802-952e-a2c066dbbddd de3dc761-d9ce-422d-a7a5-257c1ca976a9 02c8ee49-d24d-4692-9619-7e9cd692d59d 2a0cc03c-25ae-464a-88be-2b354ae30f62 3c3df7ce-1f9c-4133-aa78-31c769626493 cb7188c1-1e49-40ae-a6b2-fb62876a1cf1 0ff39b79-cd45-4fb4-9aab-0aaa2c789e8e 0ad02ef4-6f6c-4874-9351-04cc3b0f9384 9c7a444c-e4b8-4efe-bf37-36df7d7ab047 aa4c7ce1-2c1f-4fa1-8409-6fd33655cf1a 7961e45b-9541-4920-a5e4-94ca7bbb2294 973c5e6d-c6af-478f-a3e1-d8009b47928f 5440cc1c-d19c-4721-be67-de43f7b93144 a3059536-9c14-4dd4-9f70-1d1ad98ff641 09ecda74-3992-447b-9677-299a4e1da738 a1b551fc-4ec3-46c8-8ee3-1e59b3628fc6 2ec46356-b6d8-40f9-a4a2-d5c63b969b03 3317743b-df19-428b-a661-d6bd403c1c14 8bff4cbc-9f54-41aa-8103-bd6266461c68 470616ca-4ee8-43bb-81d0-d330e442edce f9f6a0b4-92a0-4195-8ff2-549deff03306 7550f9dd-a25c-42f5-86d2-4df74108d01d 536ceab2-bdae-4a5c-a2d0-10e6c65a4201 a16ffdb3-eb86-4e72-9086-81823bf33877 8c32524e-ccbc-4fce-a6fb-fddfb80e6ab3 5ec1b61d-446d-4075-a0ca-ceb7ea21469e 98bf3c0c-49bb-4ab7-af50-e3e0a9de0eec de0beac0-813a-4883-9cb4-cec8bd112abe 52130242-5aeb-4d11-b180-9e88636dcfbd d7faa8a3-5e00-474a-adac-968882b9e14c 182a97df-aaec-495a-a08c-9ef6381ba6cf 76919ec1-50a9-4cb0-b6a2-16b5f58fe355 1f8e6c93-732c-4b8b-b508-d9ebc0dbd925 905b82a6-9448-490f-8efb-72a1a14cd35a 362497b0-637b-4bdd-b5d4-5ec34c0fd575 e3462e92-00b8-4af1-8bd2-b77e0b9cb412 eaae9bba-be04-4ab7-a241-b409cbbb96d1 927b2b0b-cc84-4820-bf0e-f78042c27e5a 5837c53e-eb37-4fd3-8e92-850e93d22489 177a9947-5c50-42f4-b51b-a8ef6dcbc8d1 f0c4dbc7-78c8-4009-8a89-ae536cbb41cb 0627d18e-6527-43b4-bd1f-b3c47e87fce9 51962001-f670-453a-8a7d-40db1668930a de2a4b95-37a0-44e4-82dd-0e3784f654af 1341acf4-b68a-4b8b-94a9-2eb30d21c330 8fb6a7c4-2d5b-40bd-993c-7bbc26bb35e4 e0acf4b7-d40e-4674-b746-0fb04c87b091 42dc317a-6318-4eee-90a2-dc4da412d458 63a8ef8d-9988-48b9-9cb4-203976bd5a69 22570249-9038-4749-b6d2-a2d417c4f76c 00095c0c-09f4-48a2-8c29-8890177028fa 1184544c-4112-45bb-94c7-9128ef50756c ef8bca83-3fe2-4552-b740-bef6578ec900 81a6e9e7-2adb-414f-82cc-81e9eaa48b18 1e03ce5e-11a1-4389-8ce7-f1b90c2cebe8 20dc4e42-5036-4525-8e19-e22b54ce4927 f82ba5a8-e7f2-43a4-879d-f394f0655ffb 38f57507-0126-47eb-abc6-659a49843699 be200667-e127-433f-877d-bb37c438f6f0 cc1dc463-8ceb-4eaf-9852-7b0acb8650e3 359c9546-c5f0-4c50-8391-069e50006cf1 01237c7a-c2f6-4be2-9c64-76620c0b55b7 a64ce591-9117-4645-8a1d-39f3a9eb4ca4 005895a9-4733-4c7e-942a-3716b31489f4 6f404dd4-6b7d-4bad-9538-b323e0836ad9 892ca530-53bb-44c2-bd6a-fbc269217e83 8cb057e5-68fd-4a40-88f8-800db1c3bf39 21ed822b-75a5-40cc-8a07-07e9f0f2f72a db621ece-eabe-42eb-add4-482cdf8a16e2 88363763-482a-4eac-9920-34e99851bbd4 a41a5cad-56d3-4dca-8054-5898dd0a92dc 50e0fdfb-b834-4319-8966-4c80908dbcd7 7cfd3074-041e-4ba8-82ef-3438b1eb8f7b 3ec26f47-69a7-4c15-a502-bd56ff3ac7bd 6308d8e7-794b-450a-95b3-0d01807487ad 9b1930c9-9f34-42f3-999e-263631b4d60a f33efaac-4d6d-45e4-ad42-9ba1e2393ab5 be371994-80d9-42a7-ad8b-38f42801b963 4fb27f16-b1d0-4464-a0f0-8210eae28487 5b74cadb-8e1c-42d1-bf9d-c2f6e578efda 372d4f79-081b-4b95-bdea-0c3a27632e5c 25e33faf-091f-43fd-958c-a87555264d55 efc3f177-3848-4fab-b37d-835559296c78 4c56d61a-3159-4227-ab45-3308b3a7f489 ccc3e60d-fe63-4f2d-bf75-8d4b908ba5b9 925f7716-adb5-433a-a720-f2c5adecfd60 2b6788d4-0a76-4fc5-a418-6b11a66447d2 8409e1a2-a428-4ea6-9753-1bbcf733e55b 1bd55e11-55c6-4e19-b282-4c45f3ff2fac 91fb2fc4-5074-41b9-a12a-b03dd1dd57a0 da0ef151-c090-43c6-b0a9-553cd0042cb8 3a1645d6-6160-42ea-953d-fdd0353aafa3 1064f34f-80e2-4b91-b462-db20cac6a2ca 5458ca90-2bfa-4737-b8cb-36d6db825553 045306b2-6cdd-4704-b4ff-d2047ddd449b 50a006df-17b6-421a-bd1c-1d967d20d541 9f182b21-bae4-4f17-9c61-29f5ae1a990d a0f6e261-27e5-4041-9955-5f006d6ee7dd 78b73102-d264-42b9-b6ba-d7060017324c ac897915-3ce1-4cea-af77-ba0d1666316b df3e4082-cdab-45a0-9b75-87d41f808228 8c834d34-d191-48b2-9b2a-c68347b3e133 567e3e55-0436-47d0-a2e7-beeb12120d26 d15d955e-8731-469d-941d-9ced40b4dbe7 24e29896-2948-4ad5-b538-369433145f9e 2741e782-53b9-4f0e-847a-9ed309bdacb8 6a290ee4-23fc-46e9-bd36-b9b276c76a90 1300b2cc-53e2-4656-952b-e579b9c144cc 79440485-f72a-4802-8dc6-ad44e00634d9 2995b0c1-687f-48b5-9f07-f7afe4c89102 64a1fc62-dac3-4272-a896-b12afb46797e 76f6dfa9-476c-4265-8767-e52a9c91a53c 8a3cb414-f01f-43db-882d-046d5e12be92 69f59c10-a091-47e7-b954-45bc3d96e7fb 9cda03a6-2c21-4e8f-8ee5-42a66b1f8927 8dfb4b21-443f-4cba-ba80-418019e1c7f3 4258a7e4-3799-4571-8604-89cbf9cbca2d 2ee730ca-7dc4-461d-951c-900061a51b2a bf829830-f636-4a46-b811-b1adeb7f06e2 1701cbd4-5ab5-4ad0-8acb-9e81aca0a016 10c4548f-68af-4c14-8dfa-8180d752dc92 9897f68a-6c46-4fa8-989b-09c2130a60df 1e281e76-f597-4422-91a5-c7a742381c35 e007e572-69fe-4a0d-bf14-a21378f988df d933c0fc-24fb-4545-9375-ff1bb701a1aa 093b79fb-bcba-440d-96ea-11ca658781f8 3945e856-1f8f-41a8-ba9e-212e6460bbad 0a72dfab-30e5-4e4f-9105-97893abcb2a9 2e1a5c3a-340d-49d6-a5c9-e17c206e361f 00bbc1f2-6493-4914-b744-3335803667eb e0ce9815-174a-4963-a8ce-f379f7aa2eb1 e2e89b3d-3710-4380-a38c-e9a5acd1e2cd 6afae170-c1ca-4cab-8936-2246e3efd4b4 78cad8c7-2a62-4cb5-ae31-75ee80094cd3 ad9a03fb-0ce6-4642-9c28-8581586e80f8 3dfdbd16-8c11-47ca-bb7b-e49148a6d250 3573e23a-10ec-4759-a53d-cdf21d245e03 3fb4d2d1-278c-4ead-8300-9d6119d9e90e 38f01f34-7137-4064-99ec-cfb84bb79a1c d71e969c-69d5-4f04-ae73-e27b9b813b09 f09dd2af-1876-42f5-84a4-bfde490e6516 0868e310-7171-4af4-bc5d-a480afacf9d2 ad280b08-8693-4e72-ad68-f277018c20d8 14c71321-2bc4-446d-9df0-59b552457a92 099403eb-631c-4b45-9cbf-4fdd367858d9 ddd759ed-a589-4d27-bae8-901c38c46971 0637b694-b87c-4fae-8e33-517baadabd3d e002a25a-913a-49bb-aff2-077259140ce5 24459dce-1ef3-4dfd-a9b6-dcb31ece27de 9a3de8ea-9fe5-4d88-8977-62e4dab7c509 58a8ec68-6671-4e71-947c-ad06237b2583 49cd8a8d-6f77-4dcb-85dd-da655436431d 738bac32-7a33-4c85-baa5-2ac826acd4bb 75859593-6e51-4a44-9b75-7d443064e708 e582e053-1f66-4cf7-952d-6294144f85dd cb5fdd5b-1b27-4f84-b4b0-e720691323c3 922ad9f3-e393-4d1b-bb6f-2811709bf173 b2a47325-519e-48ac-8b8a-efca3b926da0 7be544b5-51f3-42d0-a617-95302e8cfed1 5be4292e-c7eb-4c88-8e32-094f7a802132 ab232ffa-d119-407f-a242-b057f8eef5cb 3eb0fef6-33c2-4ca7-ab98-7cc0c48188f6 72720755-77f1-470e-9b95-0e666e667ebb 1fbf1392-513d-408b-8b95-9985a565a791 596aaf85-74f5-46c7-999b-cb3d22f33229 c8f9d5db-25e0-44fc-8ae4-5965f8aab6c7 5cc6e794-3ad3-4c02-999e-442235a5e596 fc4a7731-ef85-424c-889b-3232adaa9ce2 2c01cb22-1c27-4bc4-9a41-96d9e9236ffe ffaca4f0-8233-4d4d-8c3f-660cbbf12930 a2435601-ca9a-43f6-a43b-2ed8e181651f 7c3f0101-6962-4b3d-befe-8088d208d4ce fd409f1a-dde2-4346-b15a-3cf4866f233a 968a3257-eb78-48fa-98a4-25bad581f612 5261a9f1-51ba-4cdd-95c2-4b7b27b9b0e2 9b984d83-abb2-4c2a-82a2-6bb9505547fe 83602c02-09f3-4e6e-b235-e5154cb552ba 03f30676-2ecc-45fc-80b1-7ebd1f0c0b85 7afb2a0e-7c24-417a-94cf-5d46dd13c23e ed9ce0e0-d50e-463c-b2b0-50b41186dea6 c71d6095-bf36-4e63-a15d-44937f19fa23 3008c1bb-bc55-49d8-a90f-e137719a19ad fc95e19b-c417-48c3-ac21-a9f078052570 97effab5-bbc6-4b45-be7a-4ae2acbbdfe7 69d8c889-9fe6-4f65-a0f6-373f46dd50c6 7b1dbe1a-3c81-4e2a-9a4a-56f9a451a3f5 f7459fdf-078d-4127-b575-cb74fc98fb87 6cf86ac0-ae2f-4450-8940-d2ac910c73ae 609c441c-6a44-4050-898d-5c2d7852e78b e3c31394-b03e-4c2a-8a0d-72ee6a44e592 a86f3b86-abb0-4af3-838b-51766192c6f7 838072a9-3792-4c1e-b25e-7e6b5776f48f a4910a60-b86f-400c-b524-96ac17e737c4 25e4ab1e-1b8d-4241-a267-68fdd7d659c1 0ad47604-eaba-4576-a6c3-66fec6677fad dab4e371-331b-4021-9659-cff6512fec89 078fa1ea-bb9d-4b07-b932-20ab5858b1e1 ebea0e88-dd29-4fd4-b804-d962258c9b29 6b563722-a212-4f72-b830-b4780ed89da4 237afb38-6497-4277-aac1-488817992b80 badd29bb-aa98-4ffe-93d8-51bec91e012c 8bb04e60-f854-47bb-801e-025cb9e427c6 c026af10-4d71-493b-a1d7-a2260a0b21dc 69ce0a0e-870e-47db-b122-15c66a3be6bf abdfaf7d-44a5-4552-ac32-4da8e39e6643 1c173440-61c0-409b-9ddb-268d65fbbf61 3afe5a21-c646-4ece-a66e-2f95b5c9290f 23b5aad5-8b8a-4bfc-b180-756181e96b87 254d0ca4-d4a9-4bf1-82b0-aed8af96fc29 139738ef-9320-4046-b190-8c21b841b047 9521c6c3-7969-4294-868c-f16902b0379d 5fcd755d-5a7f-46bc-8697-f72a04f38436 b8b2578d-aff3-4acd-9a11-6d9566a58da0 ca879d89-13bb-4a13-9444-f11045f690ee 0a017f18-4975-41a8-895e-41cfcfe27080 75a01d77-2360-469c-8e6c-e9d19715714c a2e1be92-5c20-4203-9f78-6aa197502948 6ef1f7d2-2163-402f-98e4-c4cf23a22cd3 3211ed17-1362-433c-b00b-27e8dc348d0c 76b5c3d0-5ac9-4813-b89c-03903c511527 dd00c5d6-5eb4-4d85-afb0-ccabf6fae017 671ee292-640f-4195-8dc7-fbe4946deb56 106a87db-8c74-4705-bcb8-a9e594efd286 19dac2d5-6ad2-4603-9971-80d1f355924b 501c85be-8157-4fcd-a155-1379a5cead73 a3a800c5-a7df-4657-abb2-9781376c17d2 e64b9ca3-559e-40b2-b1f8-9529f75e46dd e14ab4e3-dcad-45b7-9b6f-937d6eda5403 00d96fda-083c-4166-9f1b-8ca14fdf00af e6245aa2-04b4-4e2a-abc6-6be3bf77a9ff dc948c7c-776f-42f5-a979-1ee206cb64f5 3445201b-5c0d-4e92-aa35-55c648ed7954 cb37dc72-3d5b-4210-80ab-33d0f97dd0e7 56a5ae51-bb0f-4b22-be4b-08a367f4596c d400bd4d-e20d-4e65-ba57-a620864fb37c 16d39a44-dc0b-485a-a735-8fa2b6b4bebe 2eccc771-cca4-4bc2-9389-188153384c74 4dc2ddac-a8f9-43ef-a707-53acc1761acb 05b1c782-328e-492a-88ac-352892958546 086579a8-46aa-4fa1-8629-cac034f7c55d d66c6f61-d276-46d2-a943-b161f188f2ca d7847981-8171-40ea-b13e-750f5aaf2992 4014f1eb-4455-40c9-81fb-95c4e7569d13 6ee90706-11e9-4ca6-bc11-a9b46a803914 e12080bd-3448-420b-92de-55c2642a9054 86d14495-766a-407c-bc76-673d2ad6a957 d69d2cba-8b62-4217-a1ed-ae397634186c 058c6f7d-abd9-4cfc-b003-d0b582ee8cc8 4f4c4512-312f-4b96-b368-4621e95c1e2e c2738671-ce2d-46be-aead-113a1d9250a6 0f84584a-958a-4c65-82bd-35f15043c878 e231626c-964e-4bc2-842a-c5e22b01a264 7d95cb30-df91-4ec8-af32-d3e970188427 fc0e8bf9-8820-42a0-8384-000278305777 8ea149da-2209-4843-adff-f0b44b14cd3f 8e792952-2964-42fb-b403-0ad06b450954 4d8a69fc-6dfb-4167-9a88-06eaa686ad7a 1eefaa74-1165-4af9-a44e-6817ccf2e4b6 406c158e-6e9f-49aa-a09d-d416ac9ad0aa d474cf66-7233-4641-b13e-a12acb28f798 06c82f94-3c05-48f0-86c5-8d0bb91e8b40 5213239b-fb50-401e-81e5-8d3361cddd1f 9cc21e77-48b7-4abb-a2f9-650faf843eda 66a939cf-0e5d-4b1b-8129-6fa28ec11d7b bebd6dc6-b44f-4efd-9a92-84a25325f267 d8348335-4174-4a24-bd0f-5ed058bab0c7 4311a987-6314-4778-b92f-0e80bbc08f65 39dcb5ab-32ba-4182-b398-3dd7c73452cc 02bc7bdf-7d05-4a04-a468-bc297574cc0d 9c8ce34d-3818-48e7-aeae-9b7147ad5dc6 ad175004-7628-4f07-8292-27d660e8c8cd 76a7933a-5912-447d-91d0-75286baaaf0c b4454247-48a0-4c7b-add9-d0474055958a faed60fa-4eef-4bc0-8dd9-7eb28dc9b5c2 b617ae99-d040-4a07-87f4-bd5034483716 8b4ab624-dcd0-4eab-beb4-9869e9a76253 66a15de9-aac2-4597-9fd0-fe0dbd2a30e8 015c2921-5245-4ead-8b19-cc1c65bb7b64 3a810b3c-a7bd-4f52-951b-0d704c0aa374 2cb87066-9fef-4e2f-b11b-aae990e9a3ff 76015624-3ad6-46ed-bce0-918031bd9e45 56ffdde3-b4ea-4973-ba35-304f7baf7583 613a1bda-221c-4079-96e2-967448c63acb 9e8ef7a6-be1f-4a4d-9abc-4ca178d4f32e b5cd0908-6755-42ce-b6d4-b7abfb479004 bd3c0d9a-2e9c-4b3e-bc70-f73795b7242a 5e3dfd48-90aa-4148-972b-fdb7c4e79808 5a778fb1-ef12-48bc-9f07-2958c83edc80 315efd4c-501a-480a-abf2-434978cd4216 5db273ff-cf30-470b-a7c0-8724a0a9efbe cf11df2f-394d-4411-85fa-394be6108971 d27676e9-1676-4182-a938-a24aaa19fea5 c19048dc-f065-45fc-b395-cc81d811719e 1e279061-cc80-4d36-a49a-71695a32bb22 41a963d1-81ab-40f6-8aa5-860f51fa364d 7b13a14c-9fe9-414a-93e0-832502e31212 70c3b07c-3603-4768-8202-482efcc8ec98 aa5a25b2-19dc-4e94-b00f-a3cf26eb7b99 ed66a69c-76b1-4b81-bd5a-86b73c1065a9 922d61c2-6536-473a-8ab2-a872a63b1840 240dd30f-105f-45d4-af19-d0a7eb63b30e 87bb26cc-cec8-43b7-810b-e6e4379d6cf5 6e263a29-81b8-4461-82f4-7dcecbeb2e8b 88641176-0957-4500-a992-d1bf8b7b1152 c33eea38-0782-4e8d-b0a7-7301c57322f2 5d338ff0-1914-4737-9dca-0cead0c71e33 74ac1b13-9abb-4f0e-a034-21dcc3810b1c 6c400724-92af-4c5c-a3c1-48327198402d f3ea9563-0f27-47bf-aeca-11ccd874cd89 38d1f73b-7bee-4d97-8406-3843bd3bb8ca acef35f3-9cde-48b7-81d5-50ca88052d6b 5a98f458-76e1-463a-becb-d8a004ec813c 1af39842-bd04-4fd1-8511-cd4ad2a040fb 6e1c0691-f527-49df-8d8f-9c3dd24e19ec 8cfe4826-d28b-4b07-8e6b-b22528226143 5c5629d0-79f4-41b1-a414-1fcb242ecd92 321a7803-6ca5-4932-90a3-2f036e9da629 a07853d0-2839-4f64-bba9-8b7704f1358a 874c3d76-7535-47d7-8f91-133aaa966ba7 5d4b8940-4acc-4d24-b5c6-cf3509315ee0 c3b41a51-3c5c-40f5-8a53-d2dbb1ffd58d 78a70823-0abb-4758-bd09-23215137da48 afba5743-d5dd-4096-9e23-1c9c02ea4485 7249bc65-c6de-4905-a536-6f94e4bacbff 0bd3a2c4-c28d-42e8-bb6a-4566fe36d723 4ecf549a-512b-48c5-bd0f-584f8d6d5fb6 7ec9cec8-e418-48f6-908a-cf79cca5bcac c33d7bf9-de07-4011-8526-34ed714d381d 8942d09c-cec4-4dc6-b162-3a6b4ed070cc 822e9f27-d91f-4d8c-b65d-c46a5179cc22 ea6d659b-8fe2-47c3-9175-c63a20334fff 1d68592c-20d8-44c3-8b44-08a3bae61215 2aacf4e3-9972-4894-bd35-1c40ff8688fe 0a4e0326-40fa-4ec4-9691-3389936edc1c 1895af70-a7e0-4f4e-996d-b3a871866fe7 5bb0fd1b-db76-4150-858f-86ad662625aa 48f386d3-5d08-41fc-8b6d-ba8270faa00b 1d8a6458-77cb-4808-a106-f1c527b8f505 4a6388dd-4772-4eab-87f5-425ab8268e82 02b99a85-fdc4-4bba-90c2-598796562cea e8d3a87b-58fb-4a43-8d35-c1347a671711 10a6f1ee-fcc7-41dd-90cd-25a732a9e497 3d7ee418-a29c-4918-9d13-572fc9bb4b48 cb488f0b-de08-4618-8366-e58e045c1217 fb39dd74-745f-4e23-85ca-26296bb3e87e e59e951f-690c-46d2-bdaf-7da8f2135814 bc91c9dc-1a27-4250-b6b7-a2d53d8d8ef1 1e82e551-99e8-402a-9553-4ce124a343c6 a38380a5-20a1-4c32-9a51-b3226fbd6016 78c57dce-110e-4eb7-bed8-ebb7899231ed e4c81cad-1553-45a8-9568-501ca17bbc80 41f1fd96-37ee-4698-9726-484e46abb8de 1c3acbf8-77d4-4f44-a562-74228c2b06a9 2d1e7c4c-1b8a-44d3-a444-687f27c14179 114ba388-9fb6-44a0-bd82-7669c081eff7 38a3bb3c-034d-42e7-9e3c-45688439515a b9bb23c1-bb39-4c1d-a84b-57ad0c671d44 d499da77-5327-49cf-9194-9dd804cf11aa e1c7a435-79e8-4923-a6a7-8c9e8fac0420 a1760219-5670-4988-a733-23e0c3d17d52 0b8a177a-9fb7-483b-ac91-cec5c6f48a83 784aa6a3-2f62-4aee-aa5b-240384188f62 d2dfbed6-dde2-451c-80a8-f5a20ed3dd18 730a9ea0-da89-42e1-a1e3-2d7dc9751da8 dc583989-137d-4b43-a508-70c890d7a48c deac61be-fa13-4b6f-8e21-5eea0e273387 09a4c275-1ccb-49db-ad54-622ccb1cef5d 7e31dce4-53ff-49cf-ad67-fa73383d0a09 0bb087eb-698a-4db4-a36d-79cf97b63fc5 dcb33735-cff7-44d6-a97c-d951d5c366ca b1748a46-46e2-4321-93ee-b24ea310e435 26b2d3f8-553b-4fe1-ba03-c0138f9c0fc7 f0784594-1874-4b30-ab3a-e2228eabe3fb 34a359fe-2dfa-4cfb-ad7f-b240424dc37f ab74e1e6-0e21-4f32-ae58-b763acb8d360 c9641d9e-553e-4077-a3a4-0ea84e05421c fea23a3f-4547-4338-b624-c682fd5dec88 024b69d0-4b35-406b-b35a-8a0827cae720 e5efd8a8-ac01-46c1-8827-40f48fb0569e 08cf0c49-a47f-40ca-8064-f62ffd0ce1fd e5f89113-2d04-4486-a17e-4346120336ba ba1e9e45-a290-4579-af71-5edd6b637b7d 389a69cc-48e8-4fa1-9c3b-f571c8830115 be92170c-58d0-4333-9a39-dbd5b8778f0b d37c55f9-eb6b-4aea-8615-b36eddca7c48 e3ac5231-ca26-4c97-86cd-13e5dd3da43e 6fbe728a-1ee9-4f83-aff7-dad51a2f22c9 c52d09cc-2964-4375-8c11-5868f9f0c2cc 27643efa-26ae-4799-bf74-69f7071f2308 69f2d73b-298b-4c3b-927d-a23b982e98eb cb1f7d11-51a5-4a38-be19-c650dfcee73f 838a4b2d-0770-4c35-b50b-cc29684f9f99 e6bf2598-d3a9-4519-92da-d8f5b22fb495 b879cf77-eb10-4202-8439-3092c02bb2e5 664b5852-07e2-4d1f-a639-f5639f145b97 78a35853-4611-4828-9167-9e5b7d329f00 5b7bef58-a950-4ea9-8827-b77f19cbd340 38e07f66-cb84-4060-870d-91d37b699f04 bcd3816f-8510-4654-8f92-a7a1eed8ebaf 73bfbe95-7f12-449b-a29b-c4f1f673f2d4 142de725-c8a7-427a-97ad-e333ad2eef95 828d9448-8e27-479b-a660-da02287caf60 b7150429-762c-4706-be32-7b69b986e2bf ef38b0a7-6916-449e-a086-771cb9166a43 029fc2e0-9b27-44f1-a262-0d18ef49790d a8154ec5-155a-4f31-8e1a-ffeea5d3d9b4 86d79016-72a9-4894-bbf7-f6ef41374055 d0a356a1-0c52-46af-b218-b73a54d8d620 1c545a27-61cf-4ea6-80b8-ba898db0b07a fff604c8-13e9-46c2-b9ad-6fb60f1938c3 573b4d56-b52b-4b05-a1f9-5dabb4ddb801 4a9b7e93-b8af-48ce-96f1-4359afd2acb8 e2b19550-302c-44af-9b96-95f06ca1bf61 b5ac7c97-bcbc-453c-8784-fba53199a8a9 dff93bc7-1f65-4fe9-b31f-d86945e47545 fdfca027-0a3c-431d-932e-25bfb6a77bfa 32a88476-50eb-44f3-8ab5-570e1ba43861 27d688c3-bbb1-4b27-836c-e9f7dd65b66e a329f7f9-fff8-48bd-98d6-a6ba5463c8a9 2b625dcf-4f32-4116-8739-2e0974e85c97 ff96da49-2897-45af-b6af-542517ea3158 8d2357e7-2f59-4569-909c-a060695ff7a3 51811a4b-ad64-49df-8e64-efbbc0c43cc7 d7bbe5d4-da13-4b9c-be4e-7ba1323379b4 a58d8f43-9900-4664-847b-5659b6fa4003 6326af0a-4ec8-4adc-a55f-b016dc0c5179 82af9ae2-8b09-4c7a-94aa-70eb4af9a850 270d7f22-7fa0-46b6-b604-fd1b5b056b2e ba6bf9f1-57ca-4925-b4cf-49cdf0c3cdff 50216358-20ad-4a55-8a1d-6b5aa724087b 752dfd5e-0b3c-47df-a85b-dd07a5817199 93c4e1c1-8201-4528-9209-0d686dafe979 82dd4d7e-2524-46d9-b935-bbd02f536a36 a8980a24-983e-4019-9fff-4ce1e6b93b58 d38f1c54-ed0a-4918-92f8-2e543fe42187 d6cd89f4-b967-47cf-96ba-14ef3b0b4cf9 4cc8524e-7aa2-4d4f-85ca-3f8dab5ac043 2b1cde6b-f7ab-4380-9300-c2f1de507c75 08e170e5-4ed6-45f8-8a52-4b26377b40bf b6c64ea6-9a9a-496c-a3e7-b906f9ac81fc 75b66776-7350-4516-8928-b5cf3de245bd 071a976e-d22d-4e40-9379-5291e4dae190 2b1b27a0-6100-4fc8-8ec6-3a010b1cf083 051190d0-bc20-44e2-bb7f-f9cd4597555d 93faae18-ccec-4582-8abc-d812b77e94ba 6c9b9b7b-e33c-4063-9f66-3d60faa3e1d7 19296b62-a031-4b1e-bf42-900a87cebb17 09499251-2726-4163-9c0f-37075bf31bf9 fa52f3e2-9445-485e-ab85-7ee4beb02114 486d6655-0888-43b2-a1ab-eaae9d41ba15 ce94fd0e-f94a-43ba-9d16-0991590e6bcc c819d85e-21b3-4dc9-8a4b-e9db46d81d67 05c4fa25-4010-4a68-bca0-369c3d5043ee 011c3d96-6597-4457-9ccb-bb4e719c6020 cba78749-399c-4db1-b84c-e1262549451b 7061c6c8-171f-47d6-97f5-bd43b5751e69 e76458c3-28c0-4e8c-b0f1-9a6104feda26 7cb1995d-a131-4540-b3a2-f55d5350af2d 7b6e6533-eeff-4869-9c1f-83a203d819f2 d6e30686-a6b5-4fb7-aab8-e45b222800f6 a0edc126-b646-439f-865d-07d0361d1c7d f9ef994e-964f-47ba-bc73-77a0f471819c ba9d5c16-2405-47ff-a9c2-77d704a8d1e7 7949b5ea-9151-45a0-b3b0-e7330612c26e b1d2a21f-7582-43b8-bdd3-a45ddf5a3f3e 27e2302a-ca26-4dc4-b28a-e0d9d154e427 33719c62-faa8-4e4c-ab84-61aab837b704 0a980e86-f50c-4049-b85c-f0fc77bf733c 9bf1089f-77fc-48e7-92f9-633261b468c4 6d058ff4-16b9-4f3b-ab7d-aff4f04542c6 328a13b9-eb1b-4c2b-8899-d146130fe66c 4ce1b1c6-a934-47fd-9e36-881d61c41129 79e8815f-395c-4b6c-b518-7ad74a77d523 9359e6ca-9f47-4ded-a14a-22c26e3f2a09 057856b7-25db-419f-8582-c66f3efb0edd 9814180c-6b3d-43f1-b5cc-e94a182ab9ca a37157aa-da8f-4b69-b51f-5c1c0a78fe37 841a1ab7-5ff1-43d2-ab4e-6a13e67e2278 ae4a1b91-c4b6-4901-b862-be5da6058504 3f264e89-fcc4-4a9c-ac4f-7b1ce1d5df6e 3470f02b-22fa-4918-aaf4-be78500de254 c44fa3a6-4587-4f6a-bb11-a4aefbf274c0 be905aba-36a2-4de9-9b19-50f9caec1720 6745f943-92b1-4e78-9527-53d8fbdcac40 d7e20e07-4df8-465b-bea4-a04f6cd24a9e fbd26544-5d18-4faa-945d-0f686e63ada8 0cc548f6-8ff1-4a24-ae5e-0e2d4f68b5b8 6ced10cd-156a-4301-9af2-c34113815e97 5579180a-8ff4-481a-b718-25706ceea39e 4d6a74d3-72bd-4739-9247-7f595136285e 6cf3ec9e-f0fa-4ecd-9ba2-5f188e019bbe 35eef5a4-bca4-40c8-89eb-57b0802892d8 f2939856-2dff-4795-bf0d-26e156042ce8 9e3c04d2-48b2-4c6c-a87c-24c661446f70 fb2a4228-0fa7-451b-97b9-8b981175b14a 683690f7-4cea-4689-8a8f-c1b18125e7a0 b7d24cac-e4ea-4244-a590-26a70578cc55 5d32a2a8-45ea-4668-984f-a8a71b4aae9c c1fedb58-3bc7-49a3-8007-c8c6e61074a4 b9ad2b5c-cb9b-47ef-be26-caf86b775cde 2c3f67ca-f760-4ec7-8b42-7b7e59c37ce9 2009db69-a339-437c-bad7-041355b07498 e38c12ad-6b95-4d69-8e57-f98780bf5f7d f33009a1-fd29-42bd-aeda-655c9b169f73 7ad82c7a-9b94-4025-9901-da4b083f1b36 52425f48-7033-4970-b3c4-45d95cfb8dfc 7f84dc9f-4dc9-48ca-aff8-d37c8a17e042 fcfb104f-65ce-4169-85b9-daa1fe82a9c3 b18bc59a-342a-48be-a61c-3adde3b84565 7ba8a4f3-162e-47c6-8b26-2fca6f4cf9b6 f809181b-ac4b-476e-bee8-4c75c5a5b2b7 4fb7e384-6003-43c6-a50f-1a0de4283bd0 6ac5a4fb-8e94-4664-8b6c-7ce43112bae7 847c3c67-3b80-4b37-a68d-80900b8aef9b 77c0855e-fadf-4052-9fb1-f1b8c1c8cc2d 5a9eb882-c046-4fbb-8419-7475a2f20c61 fc2fd88f-e9d8-4d26-bb1d-91be58ca2814 e047afe1-f51e-4fbf-bc1f-d3f214634eca 529428c2-9ff8-42c0-a5f5-e386e6e0565e da3c9c9b-77d1-470d-a628-3f945f2394bb 24ec30dc-f010-4e19-97f0-8aa82656e707 ff8cd5ea-206b-47eb-bc97-b93cbfce105f 4669962a-7edb-4cea-a911-6cc63b2b45b4 9f172c2e-18bd-4365-999f-dbf0f4f7722a 3647369a-44c1-47d4-a0c1-bcbe2af7e3be 4e79f572-2024-4d4d-a86a-4dad51a5961d 9b209e61-bfa8-4ae1-9c0c-7b3e71ba094b 56d27398-438e-4699-ae9e-1b914de4a15e 8b8d3462-1220-4812-892f-9fbb9bfaa241 b5a6ed9c-3f25-4c23-9977-b261d3fdac2c 6b2c1ec7-821b-4cc4-a7fb-158ef681bf93 7522cb53-16fb-4a2a-8e79-809ef370bfc9 391a43ac-2cc7-4b7d-a6c9-a584f044f747 2f4ad682-8a8b-4f27-a0cf-26eb4dcc1668 c1d18b8d-5d1a-4ab4-82c7-186d37647ce2 7e914b22-e953-42c2-8ed7-78b54b46430f 9bed089f-af0b-47b4-ad08-a4e3fb01f459 29e30c02-b512-40b4-89d3-1ed9a56e66df abacf739-4587-4855-b789-49935444b486 8670fd37-384b-4918-8e1b-19a63fc8c44f dd6a3588-e8b9-4e23-9b80-67b31319a31a 5af31854-e06b-430a-af30-d4f53816cd65 a4036e4b-6602-4151-bc4d-d8e36933a1ff 0d3136a2-f513-40f7-b974-1265215c53ed 63bba4fb-7543-463d-8706-7fe022e3505b 1fe9a08e-c479-4d35-835b-e14c06cf9ed8 0de38eca-6f6c-4de1-a154-f5c5888ba8bb 77c4fa1d-e921-4512-8a26-19e1daee352e 809ce040-4087-4e7a-a02f-7cb439846cdc d8043f59-3770-48bd-a915-98102679a063 7f07bab7-76ef-41c6-92d5-4100f2dd068a 29bf7b15-1420-42a2-b2d0-86cdc9024810 9e54dda5-ecfd-4227-b676-22120d13fbd8 66483cea-16cc-41a4-bc99-bc6634866457 66e822a6-50b2-4eb3-b86f-83176ede50fd cd1b5d9b-3892-4ee3-a6d1-6b0fb8a5273d d2583ab1-e48f-4186-8ec1-177fc42f87e8 25baff2a-58ca-477e-9df6-114be56782a4 1a4f2565-b3c5-4658-b26d-a0076f8f93f1 69aeee88-0d07-4fed-b245-daffc5d2c062 5bb1fc82-6c81-40d2-bcd0-56a3d2127233 dbc8a349-6c73-4d49-8767-ed2518e842fd 83320f16-d344-419c-bb54-3dab2e978b61 6dfb0e24-76f2-4699-94e4-fbfe3a1f88de 8bf431a9-66ea-438c-99f7-ebb6c98f7e3f 0617bb58-8bbe-4d2c-be0c-6c23595feb70 7aba448b-00da-41f0-a0ca-1d75e0545739 0ff37610-2424-48dd-937d-258ba026030d 126126c5-4c79-4077-ac38-da40c8ad315b 42b4a491-c3f2-4a8a-b9a6-55d1a0ad3d83 31b2ca81-c92e-45f5-8ee0-f168516a84fb 15313453-7862-4143-8136-018e6d186306 1e81c45e-d1b8-4ddd-800e-e840ba49d41d 37191462-4f62-451f-8d2f-10cb78991989 878b3fbf-ed16-40e3-bc0a-43cc51ebc089 cc325457-dd80-4930-9980-bee9892a53d3 4727faf5-cf5d-465d-83db-152b2d46cfd7 93ed3b4d-c2da-4057-955d-aa5f190e6854 e0c92aac-27fe-4a90-b88b-c7b3492cb434 189e6091-75de-44ee-a5f4-8db5ab838c82 608e633e-22b2-4e45-adc8-6c8ed8c3ad15 ae6ccc5f-cc1d-49dd-abeb-b20fb51c2833 12c5d6f1-82ae-4fef-85d7-962041eeb8bd 81b3bf97-e024-4a44-94fe-b418d4464a05 1dedc71a-af94-4737-aa7c-838099a11923 c1a7eeea-1169-4e64-bf3c-8abab6436787 0fe89faf-8bee-44bd-ab98-b20d744e9ba6 3a67e8d2-f27b-42e0-a897-85e5bdf91fa8 f4f85404-91eb-4855-83ec-d526ca4a3622 d361196c-f44b-4376-98f8-e93d8817c403 09342a5d-b458-49e1-befe-ef731d88cf88 88061ba5-86f1-4ccb-9ec4-bf7d285f3d32 b4e7750f-345b-440b-8616-d5f5185f2f3f 6cfe9772-e27f-4882-a303-3941f3b955fe 596035cb-1c84-4843-9416-b9bfd66a9ab3 01addd1a-2217-40cb-8a31-dbb06fe3548b 36df8604-8480-4a4d-a7cd-2b4ba86d10a1 5d514b54-64b4-48ae-86b6-00043757ee94 a0e41396-81c4-4252-8688-0bf868dd6cf1 51c71ea0-032a-4ca9-b9f7-b64720a83210 17f1cfc3-e8de-45c8-87d1-40d9c483557a 6d97d8c9-45ca-43ee-8871-656550c0da64 f6f5ab68-eb76-4c17-abff-a31969348116 77da323d-971f-49a2-a6b9-a7637bf64a7d 2a8ab20f-6c8a-41fa-a6d8-7d896c1b4bdd 9a4b2c8a-ed3c-4cd3-b6f9-7647354d997f 82f9998b-3ecc-48be-972b-3150a7ce0f72 9b102d03-aaee-4d1e-a7fe-851dd0ffa80a 5da62caa-ce79-4162-ac8a-20e353b733ec f52ee199-7729-4942-9f1d-72c3281e6b6b b0e3f04d-96a6-4dd7-9ec0-1db01d785333 87ab2b69-8f37-452e-a0ba-5a49f594aab3 5daa45ef-4354-4dcd-9c63-2fa1d086fcc0 789a4588-e0da-4fd8-8d9c-8f5c330cb683 20c33a55-e723-4d65-b09e-337654891e92 2bb416a4-99fb-4c21-90ed-d030e3fbdd0e 96f79edf-141b-487f-8419-52a5677b528b 1089af40-b8d7-42f8-8d2a-709bf097832d e63b77d3-9547-4b84-ae6a-2a97fc2be45d e6960db5-c9b3-4dc4-9101-b842ab60159a 3a12f221-bdfa-40c1-a160-b2e7d3a6f077 6f6dd104-b5da-4ed8-9540-d8c142b948c4 b1d12fdc-9a23-4750-af6e-8c212f6b1b40 3d428a14-ae25-4318-88b4-288b75d3eea7 61cdde89-5f9a-47c5-9774-4af3c8fe3c53 cee0d8fc-1b46-42ad-8712-d968cdefddb0 ef27d58b-6a91-4ef0-8bd8-68386fb7e4ec 679b2ef1-d3d4-4db2-9b31-f4bc564597c6 23d3f85d-a439-43b7-8f06-0808086d2b12 c071e6c2-0cf6-4da6-861e-5a75c92868d0 7eebec78-aea5-46c0-a3b1-f366fa4055f3 900766c8-cf24-4a3d-b04e-5d2af8219464 fbc84038-6df5-4812-980e-9534c6b16177 323c7153-15b8-4644-a3e0-854a6c060ebd 7331a01a-3519-4f9d-9d05-758e8c08f312 55c561e8-2b6c-4a43-ab53-a7a1fe6909be 7aca4253-4a6f-4d70-8068-ae5269d92e23 13fde344-2877-43c3-8e0f-44c3bfe998fb f24c2a45-bcd2-463b-8b7e-e8fc5e2115d6 94b5e2e6-47c2-411c-bb70-0e6cf85f46e9 3c7659bc-bc2b-47e9-88a3-082cbe725fc1 fdfb427f-b129-4beb-b9d4-5e2f93a75090 034f895d-a7b6-4ced-9e4d-f763b8bf7138 6614a2ef-e7c3-4c50-a62b-54216f6c1ab2 e39f87ad-7270-4a25-88da-d120fa8ba2c6 8bbcf0c4-dbd1-4eec-b064-f470092552a0 91a7485a-b74f-446a-8b47-03b1f75f09cb 97fefeba-bf3c-4d09-a821-680b12137d6e d480730b-8708-41af-a229-760d80bf5a5e 4105715a-99ab-4510-897a-1d6792414cde c3545dc4-784c-44da-9872-f34f2320536b 4b8654ae-20e5-4e56-9a65-ecc1308058bf 0674827a-5e58-4995-a7bf-b2307158de06 45bba254-7a9b-4f10-8021-dce84239e03b 15dce73f-8a2a-4d3d-9dea-964e6a8cffb3 0cd3e439-062c-4bc8-8887-0cb86ff6b15d 9d48f6d5-aa81-41ae-9112-9b227108b3cc d1e13b35-bbc1-4461-bc80-89a908000977 2c662f2d-c3db-4d8b-a386-5fd5673d28dc 11b75f68-0bc8-47f0-a87c-0895ddc151f5 5914dd02-9088-4e1b-8f14-cae11bd547c1 f67a818f-1796-495b-88b0-fff9e9e3a2cc 58d1da2b-c062-4041-bd67-9673f2ffe3c0 cf098567-7236-45a1-b5aa-3cb4434d8c22 3da039be-9379-4b8f-ae15-3a914a95e90a 98d75495-873f-487b-a1e3-408f8a1d7bc4 2591f0cf-9921-4a14-8f72-72a2d5be492c c682a241-4c1d-461b-a6b3-43a0d4d9f2a0 8a024035-1acb-468c-9a9b-a265628a306e 20f60ab6-c3af-446d-b60b-5d343ca64936 8d0aff38-956a-4c0d-b233-06c1f4c63df0 3232a4dd-a0ef-4eb6-b7f1-4f50fa22f1a9 b0359142-463b-49d9-8a86-089f86562fa0 532e7329-98f7-4451-8480-1c72badcc26c c4535142-3926-4182-8d55-d54071108ead ab5706f8-098a-4979-9f5e-3ea922f411a1 13485fae-7fd7-4a99-8298-e49007219165 36c3955b-46f0-4c3d-a404-dfafc676f00e 47a5bf70-a667-4ec8-a470-133aea1ca08c 18002b6a-c1ef-4ca0-969d-fcd03dc0cd32 45dba7b5-01cd-4366-ae85-a541cea52563 08498da6-ba07-4cf7-bf4a-8cec773882e1 205e82dd-30e6-49e1-98c6-ec9f5c4f0c35 c9b1d1d6-b6ae-4001-923c-0f6c2b0633c2 c9afda75-4fba-4358-b11e-c5bc4c071944 ffd18436-8f69-43cd-8b39-0e76585af3cb efb58159-01dc-4b97-8384-e2c1285e558f 5890d0ae-2417-40c3-8df6-c848bf5e2690 4b317bbc-268e-44e5-bd71-e84806349668 6eca9866-efc0-4d9a-ab2f-33da28f2ba65 4e83d0a4-43bd-4a94-8237-7fe66a956766 ef2286e7-a6a0-435a-a773-b1e690f4fc0c e3c3d013-059d-43d5-9db2-8f999180f367 73615149-af52-47b9-a10c-33ad16ed05df e5494258-4471-47c3-8b94-72228fc5efd2 44df5a9c-8049-4a51-a55e-de77e540abc4 d0c37ffc-2ea3-49ca-aa62-2873ab32f859 2b785c24-c77b-473a-b228-25ca5725be12 2e18897a-4c0b-4dca-8fce-5c3c3ede9375 aa9d86f3-1fd1-4667-99a1-d2bac9fc280c 9ae0357e-fae9-4b6f-9118-dc6466be7188 a303a874-cda0-41e5-b327-0e9e0ab52529 e6f54e6b-22ea-4f17-8b01-20e796805065 59106f43-d86a-4c8c-a6a8-24635da02617 67fe8043-fea3-4022-94c2-7425474921fa a7df875a-7789-4ebd-91fe-1c1d7b23f335 0003c9ac-85a9-45ec-8804-962acc1b71e6 2fedd9bb-4f89-4476-be08-ecfdb71e0220 54be2a4e-bb96-494c-81d8-4d8953b6d56c 624be748-f10e-45b3-b9b1-507bd7d10bbb 660d3c29-4c53-40e6-b1e2-af76c28ae229 99e6f614-7625-457a-9e89-2e335bc9cd5a 08d9c0b6-1c4b-4547-a86e-b4f638787164 8cdb9adb-5830-44fd-9bb1-adfa2fb9aed6 b1e0e606-e597-4fae-b220-ba049bfa84fe 6a7e1561-6841-41c1-bc6a-6dda264ed815 932b00fd-812d-4262-9b1d-6659cc0d6a27 35011859-fead-4b86-b8d4-5c35fb9bca8b 4bf109ce-0ff3-49fd-ad68-0bae547e6728 1079acc6-01df-4038-a6b7-52636002f8ae 6d58d4dd-7435-4992-a63b-4d7ef5943e00 b276f05a-e753-44b7-924e-996c2df4de85 fb8d0bc4-abb9-4f7f-8151-f61b22080a93 d39b931b-533f-4685-812b-3313e93911b0 1fad5907-d367-4809-9b1e-e16707c0182d 828dd061-99ba-4851-b9e7-df3b020efa3a b8bf1508-d84e-4d53-b842-4f6251946c99 79e9d00d-18d7-4ddb-b6d0-0759afd18e5a 72051ab1-36bb-4de4-85f7-07628bf1ceb8 eb9b0ccc-af1c-4c4c-a451-1ca3b961d649 f1cfe6f9-658b-4125-a85d-57e7eb452259 c066f175-9906-45dc-a95e-a5f92f62108e 54e5c41e-415c-44ea-bab6-f53a839ca39d 88d67837-e9a9-4236-9e40-b60205e557de 0dc23d23-67db-408a-81ec-7e1858a6fc31 a7dc32c1-3717-4d2f-b748-65cd480ace8e bb4a17df-de3b-46d7-877f-a38401ecb96c e5fc7f98-891e-4975-ae04-f3bac01ffdc4 bf203e87-3b80-44cc-9181-de4a22afffe6 69a8f055-adcd-43df-995e-d070666b9ed6 7ab1518c-36d0-4713-b267-b6cde4edcfe7 d0a73621-346b-422a-bdb5-3e1d061a484a e3c11c9f-27a4-4761-9523-c2a57b94a017 7683932b-d87e-4908-bc3a-90a8d30ba673 3780f3d3-a028-4d9c-b95f-d8bac02f5ec9 0efde009-da98-4aba-958c-14aeb3512a86 543930c3-81aa-431d-b804-de72dfcf8e54 c12557a4-87c9-4c78-9598-58155d5c9e78 a67d7be0-7ee2-46a4-96f9-3e9de68cabf3 4ca86f18-8337-449f-b87f-867ba4986712 d8916a85-b6b6-4d72-a302-df2e096a33ec 067f1ec2-c96c-4544-8b8f-51e0e1a3bcf4 6769e485-5ced-4d0e-8f79-13ee0c8c6f1c 7ee090f6-c7c3-4891-a2bc-4956d24a34be c3058ee6-8053-4c8c-8135-e3c084a1c652 aa7b230d-bd56-43d2-94c9-a053a6176871 af434511-b8db-4efa-9a6a-5632358602a0 6b31ccaf-32bd-49eb-8ccb-beccfedb79e9 877f99dc-2d68-4802-8120-b9c18fbcff2e 71a72805-e41f-47d7-ac0a-98a71c8e2f0f 30a18488-1733-461a-a7fb-de48e14211e1 efb52271-e23f-4b42-b11f-6eb15d5999ed c55f7875-8a0d-46c1-914c-c25b31ca6f41 1fdb3982-5228-4eac-95a7-2cae986f6434 a7ae0d15-c1b4-486d-9e46-0f73efbb93c1 ff103375-0d99-4d7a-bdfe-14a8f968d4d4 8f3ad231-a6da-4e0d-a238-a6220f12be64 ebb542d7-8010-4b0b-b298-322c405e3179 ad9106f3-e934-4cbc-8cf9-111d28d0b99d af82307e-4082-4e9f-9ea6-f9c0a8c460df 26b711f5-238e-4406-80ef-2ee51e25d81d ccb83657-28f5-45ed-beee-c23aa90bfd47 358a940a-6ad8-4eeb-a851-9c70618da73a 18b1e7d8-5a4f-4713-a0bd-f52d654c033d 274dda7f-d0f5-465c-a0dd-f378d3d46041 edfe43c8-98a3-42cc-a948-695fd65d2b0a a53beec0-f358-45ee-b65f-089ccf6bdf29 9d3d466f-8024-46cd-95f0-c09e39b2573d d482eaff-9f3c-4216-81c0-c7d0b54b0d9c 4fe49411-623a-41c7-96ce-e50ff777d51d de71fbec-db68-47e0-8c67-d3b868cc7120 cf1601e5-af87-413a-a14f-300714f2045c 7dafc396-3354-4437-a64b-ff8721702f9c 7aea37e4-38c2-46fe-8e99-c70f10c25ee6 e9bdaa57-431d-4d1b-bce7-0dcf051680fd 7c176064-394d-4181-8adf-28439de6fe2a 8610fc07-aa8c-438c-bca7-498069b0a423 705395c1-0311-4aa7-bbb5-72f6c4dd644f e0265d59-ffb0-49d9-bae4-4b18404d1ef6 5e425406-7ea6-4f07-b88d-f658983616be 7e458d3a-4c53-4d56-a14b-8ae7ad349c0f 17586399-52c5-46ab-97c9-7434de1261e3 deca6e99-9c53-4dc3-bed4-2b860ee78a4e 0b2f74a1-8683-4686-bd74-adcf80231ea4 27996ad9-f476-48a9-952b-c7014f9ea95f b47248bf-4839-4666-ab7d-22015eb9ce9c c9597fa8-4944-4d4a-9ca5-9a73114b0df6 aebd6157-18ef-4617-981f-91217ae759c4 b4149c33-198b-45f8-aad9-a49a795645cf 442090e4-1769-45c7-b3d3-891af3018e63 81c8864c-63d7-453c-beda-ffbb96fa47e5 bd762d9e-0c8d-4549-9b40-ca4e369d7fa7 99dd9987-d38d-4619-8240-d32e32f9d23a 1a78e42a-b71e-4943-961c-a2b2450c3f62 f4f2fae9-cd8f-4a62-acf6-ad1c9cc20057 d7ae3431-b24c-410a-ab77-c35a11f34428 0dd8e207-1e9c-461e-b393-d0a86e2741c4 380ab413-4abd-4095-bde8-38ac14db87b9 f1b50951-e356-491d-99c3-4d7bd2c766a4 0b7059fc-eb7a-41e7-8bc7-1768138de3b6 0c32bad2-5b57-47c7-a17e-57986b6410e4 3325b80d-b427-47b1-9949-27ce044112b8 daed7372-2984-4b86-8f29-e5fa7890f961 fb001c45-9e72-4d7e-8b6d-4fd0abd58092 bdad9d03-c358-425c-b6d3-fcf588361bf0 8542554f-5267-4d95-b263-0c3377ac85fc e2ec5d92-ae7a-4402-8143-8eade71985e5 ea9b309b-3c9b-4491-92d4-8ba05903a073 29c6ff64-9dcc-4fe6-a3a6-3bfba373c05f ad98a61f-fac2-4acb-8d6f-ff969d067ce2 903ffb53-2345-43c8-b385-827b8c4f1970 0575fe6d-19ca-4e40-862b-a94337179e5a 427a56d4-0c3f-471b-b91e-2e84516f4675 d24a970f-295e-4790-b318-10654e5974f2 7421c611-6ae8-43c1-b70e-7e3f264ebbd1 e9601e0d-c31c-48e9-8a34-34c4dc63de95 edb7b65d-e138-4a60-b780-557cd482470a 865a300f-afe6-4334-8872-dcf4c3bfbc87 35272e27-0bdc-44ab-8c4c-78b4d71a69a3 69e37543-e122-496d-b60d-314ace4bae9e c52e2d79-091b-4227-9305-04511e0ada1a fae4ebe3-4ca6-4746-a843-42ce87eab10c c3147a58-9beb-454d-86cc-912e2f91af87 3cd901d3-1530-4ea6-b128-39dbb7ab96ff ee3c5203-c15f-4bb3-a7ea-92725a2824d8 391c8e7d-99e2-48fb-9891-a03d6404ba72 3df62bb8-8351-424c-8f8d-00e17f50fed6 79dc1d43-d50d-4565-b621-d7d2a1d55a5b 17aed4f4-485d-4920-8ed8-0f8229a02a58 8f6ce465-2212-4a86-8521-ae54ab47bbb7 16cf5407-3234-4665-b65b-ac723b224493 d7b96823-b6b6-4980-aead-5f3ca652bffd b0677bd5-986d-47ea-8be3-b7f09351cb88 014084bd-0acf-4f25-b313-0f58fcaf1e37 31d00d78-439e-46fc-b82b-ca54ca93881e eba8e7f4-3615-40eb-bf36-b43eb71da73b 6ff606c1-74c1-4af5-a1b9-cc3d58ad94bb daeef692-4481-429d-842c-0d7621941853 f0666fba-0c45-44ad-930b-231f0ef4e15b 47b96cc1-bfc9-44d4-a2f8-1def38bf4b81 49e706fa-f6e8-4295-8141-1661b121e1a4 71be77ef-03b5-4790-abe6-f7969cccfe2d 539d1e2d-0a15-47a8-8759-b2c4a24cdf94 fea3b24c-2204-4e70-8383-c4c19106b8c0 09ce98e1-8c16-45a8-8512-35784ba19c02 e4488e42-914a-4614-a770-13393a16c1e5 b88ffb7f-ed48-4f94-9367-ebaec681864e 9ad6c22e-efba-4951-9b43-67604d1c45c7 ceb64260-3c20-46a9-9497-df6380f259e8 11efc8d7-9cb8-4cc5-a365-da7dad321d69 c1f4c6dc-9c75-4e61-b2cf-ee0b73256769 055087a5-e3c2-4ba8-87ff-c7bded6ac0d1 fe3f1977-6247-4fef-ae16-a8ec6e8d0054 54648a6a-af99-41ba-a043-89cbcb99ba88 c2dac34a-5189-43bf-9501-637d40ca9eea 74290396-3c99-4ecf-9e39-a769180ed833 24a5a6c7-5009-4286-8d4c-5995435a6b5c 2a91179f-76af-4fb4-99da-91f3fb5df4b7 7a22ff11-7406-45aa-b417-7cd4937050ea 21ad96bd-bbff-4a0c-bd99-6ce98df18344 fa1a330f-559a-4bb7-b4cb-f5efc9ee43f0 fa57fee7-d45f-441d-a4f3-c70bba80078c 4840b452-516b-4b8d-9926-ab5dd77704a9 e8c8c8a7-c728-4293-8a21-07499e25d742 6339ed12-bfbd-4039-9acf-06eb9e3fcc66 2a549fdb-035a-4338-9d8d-9f2df99a6a92 9bfccdaf-553e-41a5-a356-8980eb8958c5 ffd5d773-7a55-48f1-a3f2-4391af58db5f 1b4b5459-bd42-47c2-a455-8249c69b592d 9a15f323-7b64-4ac8-b30a-8a3ea6b31857 1ebe9fbf-e772-4473-beef-789bdd36b13d e405f073-ffc8-4153-8ce2-0d383f683729 1526fd13-2f66-4544-8698-ea1180d091c3 32ed6523-a266-405c-9592-174104277d20 28ef28fc-3612-444b-9c31-63d55e731a4d d65367fa-b98b-4308-97ce-64b35e9add1d 1158580e-faa4-46a4-8077-6f47c048d373 c46d5893-f7a3-4b01-9b97-6879b3ec1229 195eb482-8dc5-4b70-9f5d-701fd3081245 9ae79054-cc9a-4846-952a-126f492f01f5 4061cff2-98e8-4347-9432-b06bff65d6f3 0e29597e-895f-4fe8-8530-d76964ecf9fe f6f756c6-0af2-410f-bd99-9e5d806e0e25 96e950d8-2880-4fdd-9227-22ef2fe83e31 35326ed4-ba82-49fe-9931-da0e1bae2659 730992e9-85a1-4ae9-ac3a-2b6544fd18c7 c8fc0943-7948-4e31-8119-320f6d9ad08c c8069941-3e5b-4eab-bfa0-7b889580b782 d9d8fead-a5c6-411a-b247-99bf972f329d 207a349b-7d45-4e6b-b82e-db330fd1714b c783923a-25a0-4121-ba6a-e890ffb40563 b8b74238-0c88-4953-8f21-43d4b68489ae 1f24f971-8619-48d7-b36b-822a88f57f4e 41ac8f60-6b46-4e62-a414-04d3d8579b32 c7b2ee57-e3a9-47dc-8e0c-e9703c5fc5d5 1b26f09c-a258-467e-8190-6da4c4e442c9 fb56eaee-2a91-45ff-8a7c-1c1dc23166ef 193744aa-a35b-4811-b091-e71b93159ec0 8cda7281-2972-4918-9014-803398c5904d 7b37128f-7fb7-4b34-ac71-4d5d4425dc04 2da65090-7127-4b68-8272-ec4932371728 377319dc-413a-44c5-879a-021199baef54 3435c471-1667-4641-834f-83a835974404 a2dd82e2-896e-4cb8-b55f-64cc53b4ff53 cae4b553-58c9-4ef8-84fc-c2c3d7d2ed54 02fd48e7-e612-46d2-9871-9a4b26c7d705 ca8c32d4-6fd1-42b2-b5bc-fd86bfd0233f 5a4665c9-33ca-4458-905a-150445ea2040 73eeee65-39dd-4294-8a7a-ef1ebbf552a5 7775abee-2c40-4bc2-8c29-ee30bfcb9f83 88f6de99-e8fa-4b17-887a-0f1dee1d7610 f8c97a68-2828-4ad2-a829-a5590bae3a50 e818e0f2-58e1-48fc-b022-a02fb432b195 3b94d7bd-63f0-497a-a24a-82de1fe2cca5 676ff4a3-a490-4be4-a6d1-ddea73500fc3 b65cdbd1-41ac-45e8-93df-47695e657956 67b5844e-bfe2-48b7-8797-f8060cbe364c f4f043ce-0653-4144-b92b-48a93e8d1b8f e62c968b-067c-4936-9094-5a1e68c8813b 4c75198e-f98c-4e23-b3e3-5af3c0e25114 bb6ad912-f083-463e-884a-8d3ff6ab00f5 0b136bc6-2366-4232-a88e-508b785e897d c3f3863e-e4d8-4cec-98e7-536e207c50a7 aea47544-0e95-4c8d-adfe-9759bda42335 58e2a17d-50e3-41b1-aa68-e91b54065b48 da81f42d-d7fe-43e8-98bf-5868462bf381 c0dee236-1e41-49a4-ad16-d95351da95fd 6ae28400-0049-4c85-a5d2-ab57001f1171 92df20c6-ee14-452c-bae5-c1b5826303f1 e5a407ed-9c46-4306-8475-41bbf588ef12 7d607da9-c806-42e0-8f16-f0b45948b27d 82fa6e37-9d43-4bc2-8bbc-2c5308f31f4d 5109672b-1eb4-4ab0-a6e6-e433ad58278e 72c1824a-2001-4cc1-91ba-7cf56573e76a d2b688a3-5c03-4f50-87ef-264942f49617 c231bd8a-8fcc-4150-a18d-497f25347823 0e58edda-cf61-4c85-807a-7f87942eca4d bdc37f48-ffad-4034-a579-4dbac2d38be9 8bab63f2-a572-473d-a7e9-a82e21b51a5e a30372a3-4126-4a8f-a67a-434a298475df e1e32e5c-0314-4a16-a98e-74a719fb25b6 97f8383d-f0ac-45f8-8394-932e8a9924bb e70dab3d-0cb0-490c-8387-aee199c0452f 06a71fa9-e85d-4d51-961e-379306867037 b9edb125-63e3-4ffb-a53f-16f7d394f5a8 69908ef1-02c9-4245-90a9-50bf8ebac44a 9efde4ce-966b-4b82-afe8-dd0a8638e9f1 07a0826e-1813-4cd8-a60e-c4db24a21b68 8e3ec46e-8d49-4ca8-8250-a505e17c2009 63610736-b629-40c2-91fa-2272cacb0466 57c420ab-3f54-44e2-952e-68740079f5f3 46306f8b-4d31-4e3e-ba6a-2f4d7a997a9e 2e3d8628-12ee-4c28-8266-e8d0eb485f1e 2ef8be73-43d2-4129-9796-36668dcd9b81 2e1b88b5-48d9-4c54-a111-5314cd0c0e0e 5110f271-0bd0-4505-8241-f45ac7c228c9 ce56bac0-8a1c-412e-9f1d-23352891a2c5 aacf12d6-a777-4cea-8332-274b9a599ec0 6e42aebe-b83e-4769-82a7-cc25a0b517f1 cf5f77ef-1375-45ee-a4e4-b5dafe61d92d 6390543f-e20f-4015-8440-80e681c14db8 19bc8932-36ed-4881-856c-a8bb8abf74f8 3a7a514c-c192-437d-b01b-c974f1f0f0d3 4e8f0b27-f478-47cf-b6f5-822095d40cca 238ff421-3f30-44ea-aabd-3770dee9ba72 8f6b4e38-7567-40e8-b615-3b5b6f3b77ad cbecf49f-501f-45e5-92ca-c8e2ed773334 468847cc-fdc2-4d9f-a5fb-330a95d30fce 7d271743-d9d0-462e-9315-4b43ce94c3d3 33cb866f-04be-46d0-8450-c7c1227ec5aa 683735d9-e95d-4fa1-b445-a7b26897adaf 32549038-1eb5-4aee-828e-44e646b51457 606130de-38a6-4dd3-91f4-31b433a45a5f b59b1193-04cc-4657-9c39-0b8115466005 ba5c5310-64ea-430c-8e73-30a2c2dfd332 987363a8-3e0a-4d7c-a279-5bd657909bfe 97324324-d979-4234-8424-e82401437249 1f1cc760-2b43-4dd2-92eb-4b8cf8b0d416 289a03da-1cda-4963-b61d-b7924af46972 c917a168-4c26-4931-a391-9297bafd4a03 df5b88c9-4629-4729-b584-d2b9ef81832c 2646dfe8-1bad-42c3-83d6-ff0225e0b49b 90784449-bcb9-4afc-b143-48753106bdc6 84485146-a2c4-4180-9ebd-cc3943e42994 234846ad-1e7a-4a80-b1f6-adce3382da31 4b09a546-446e-4e37-9f6c-f2978a28a746 ce8e6521-9915-4ba2-a482-ec2b80132846 cccbc2c3-7d20-430f-b1af-dd76e4d0f86b b2a227e8-fcd4-4f66-8e3b-30f7ebf74f8f 94b6b8c2-81e5-49de-8e82-753bcfe73f91 dcbc6fbb-1598-4730-9ce6-8830a6bbd921 514d05eb-3b33-4c0e-8ad1-c03499dc6262 d147e4b7-b93d-4447-acc7-22a5678a4456 468aa967-1a8c-47b7-aef6-7af71c8dff1c 46ea864a-6e06-46c6-b400-6eb52ad82c4e 66e5bada-b5aa-4651-813f-11dfb27a30c2 78f7fd45-480e-4669-92c2-cbeaa449d22c d3c350e0-c7f3-4f9e-9d54-84c21ffbadf3 14d76397-43e2-49e3-af90-f6df11e2e6ed fe8c691d-7cd6-4b04-ab7b-79f369959f2e ce51d9c3-fe69-47cf-b512-8e2b38fadc3e 5582c6b6-13a2-4cac-b07b-7984d673c1e0 8107f386-3018-4412-8977-bd5404e2fd61 327e2381-16b9-4281-b007-555afafeacb9 34de7d5b-e5ca-4cb2-b91d-b5ec7aaea900 0ff0f32e-99e7-4edf-89ca-4e2ddc80169f dc40f768-14d6-48c9-9519-a8a8965b99ca a31bc422-2e82-455f-bf53-73ee0af1c711 aa57761d-2adb-41ce-bb4d-4d8893ce67f8 f36ae739-210d-4981-a604-ece693ead64b 84c48b89-6b99-47bc-ab38-bab12be892ce 653b4dcc-1c8a-4e1a-b449-776deb2fbd5c 194249ee-0b1e-47be-a9be-64bd6d46b862 72ed0ac4-a454-4474-b21f-248d58359dc9 f7e4edd4-55f1-4575-bd3e-db114e19acff 28ae25d6-09e7-4350-a0fc-555f618155cf 864b340f-eb5f-44e7-a48e-b87b749bb204 269d1123-03f8-4472-9768-b331e87df21a b67ebf5e-a473-41b4-8c49-d23fd31b0b88 48f61e7f-43a7-4205-aca0-6946b341adfd beb56642-6ee9-435c-9782-00c7aa45e918 22fb5209-bc29-4944-ac91-df8156235341 8e60a6ef-32f7-4533-aac2-1283b00ae7a1 f4c8804d-0930-43d4-98fc-ecb8ddea74e2 26f167e2-7583-4117-80f7-121458c536c3 3a97c2b3-6072-446e-86c4-c67b53071fce d27cbefe-8a1d-47d2-8fcc-02022cec4a76 0d011434-40e8-43e1-aa44-ba3e47892678 5b38b0a3-7a54-430c-9e4c-32bd2f1c93bc 090cdbaf-45e4-4169-895c-a068e3e7ab9e 07390331-3a28-4a3f-b2d9-0e88158a77fe 9f3d1e9f-390c-468b-86b1-44a537178f4a e7d06f29-ad37-4a7e-ae29-94239b274935 98337162-b99f-409a-a773-1bc0464655fa e0105489-18f4-4fe1-a6e5-61fc620a0891 275a0661-d6b8-470b-93d0-12fd18989acc fc765836-bb1f-40f2-9c4c-36892c52a71c 45b1ca89-0136-4027-b435-4c3410eaa04c 8b2d06f8-6834-4fce-86f2-8698dc8d8451 3c9feb05-9ea2-43cf-b319-87d9f06255e6 00a06663-56a8-4010-933b-fac244d3722a 0b8c6195-e968-45f2-996b-6a4fc13d0284 90a791cd-d0dc-4818-9b34-a9f4daf761d8 4f207a0b-7c45-4f31-b32b-700d9fa7d5bf 760ae77d-1971-431c-bd2b-d08fbed590c3 7b068a82-28fb-4c78-ad87-6451a25dd2a9 67709c06-92de-4348-b42c-97aa1bee1bb4 e24133f7-d110-4b19-b1bb-adaf03ebd190 b97da5f2-a6d7-4db2-851c-e761175d7abf 1663f4f4-66dd-465f-a5b3-df44effff73b abff44b0-1152-47fc-9b37-3bd6342ca9ab 22f8aa23-4570-4043-b29a-541335ed405c 17b0f06f-3e5c-4454-88c4-a44f107190f1 f14f6b69-2a54-40b4-a4cd-b27be95f63d5 430920b6-e03d-4818-b9b9-c200504f4b6a 30feefd2-6602-41ad-be69-e520b12d27aa 2cf9d148-bba8-42ff-bbf3-9030523c8e48 e843bdfd-b5cd-42a4-9176-f33c64b190df d7702081-22de-406b-9aa0-bebb4b5fc5c3 39a0c57e-3fe2-45c7-910b-28a2af1d3ce7 9edeea61-a004-4171-96b2-a2709105454d 45dfa8b1-ed9e-4cf2-a427-00e2d49c04c9 6fe54c39-f2f3-49e4-8b48-4ba10bb1c756 9f8e97e5-4440-48d2-9600-3bd8a1a3fac2 446d3b58-d93b-46a7-92a9-2a66a7f885e8 db696e06-e482-4301-851b-0abf4e390a2c 8cd12ae7-f0b9-4e9e-a9a9-b8890642914a 7af50784-0bec-45ae-913a-3eaa01b2ba5a d7617190-45bf-47b3-8c69-f73e26d7d3fb 838a077e-3dc2-4869-91ab-27e5207c8363 9b9954a1-e583-451c-b4d2-6de197d4745c d9e6011d-4af3-49cc-b84e-c35910cb9265 b5aea32e-21a5-40a2-b191-e0300b73d7b6 80d6a567-75c0-4713-901e-184750356521 199dad64-33cb-41a1-963f-f973cb08f398 8ea7c817-477a-4549-a4ef-c5e8340ccd48 c5d0ec02-cf5c-42a9-aebd-9508babd0b8a 65f7ced9-7b9d-41ab-a678-6660815e3b07 47623f62-fe18-46ac-8ff0-6eed15c5fdad 1d99d8be-8623-457c-943d-d6bbefd60038 e7201f64-0d48-476e-83ca-bbb895f7cd43 3e3347f9-e424-4083-beac-aa9bfce0fb7d eafe612e-7918-4a6f-a375-4d54e2335d4c 1a0d3b24-e844-43bc-b3b6-050671088110 7497f37c-6171-4f35-b940-42989ed0b996 71a15975-dd15-49f0-a639-9f8c423f5063 51ab8a8c-d6ce-480e-a515-c34d8a3b91ff 48630345-d76a-4f94-8f2e-c0a098816dfb 8e7e09dd-85b5-42f2-a267-16a59c635c5e 4116a0f3-8618-446e-88f3-94c8c78cbc04 350b679f-5538-4138-b3a6-0a891a9b11dc 49f73df1-bf4b-40b9-b6bb-0e0eb3f6a21d 2129b10d-2b26-4a08-afad-8e85eda66376 67f9c3d4-0a4b-4807-a854-4998d6b625d9 aa99398f-3efd-44cb-b5af-2aa2cf06bd3a 39ca6b1a-c72b-4f6f-82b8-192a436cd974 1dd3d890-d438-4496-bce7-4d4a6c8d7687 070e09c9-7d5f-4103-8bf0-a7b19e0e96f4 5a5ef424-cf9a-4209-8cb4-e11e2eb383f2 95d72d6c-0c2b-42bb-9cae-37b438469e2b b5484801-2e8b-4432-8ac6-94b82b65c363 b659649d-70ee-4735-9224-b2808d1b0ae0 ff0d91b7-438d-4e3e-af1d-c5f5f85d8707 62a27639-0708-4489-9e52-d10fae1adede f458dade-a539-4fc1-bb17-bfe43e5c10b3 2f6136b6-271d-442d-96b3-32cba5ba9d69 6fe28c4b-ef56-4d51-a8bd-361fbdae75d9 a9f2ab0b-14c1-4c16-9f57-331ca20c521d bad34120-f63f-40a0-97b4-19e851800b4d bac57610-fea8-41bb-9bb3-d4ff47deb80e 4491ca25-8eb0-4abb-a8a9-e39f2e15032c fce382cc-ecfb-4d4c-ac01-c1d6335f7896 e4ab649f-2155-4828-b2e1-f6ce4612fd2b e2a783ef-69ae-47cd-9098-4261d0ec202d 348c7ffc-b1f0-49f2-9380-36b087bfdc77 a74f8699-026f-4d8c-8fc4-6652127eced0 17ea69c7-eced-42c0-910c-c5dfb0bd9ae8 2ef224ca-3381-4d2c-8416-c3bc03d30abe 95877a45-f127-4faf-a291-7fc39d2b6652 0e20d94a-3d93-4429-a529-820a28c40f1d e2716d85-6eef-4b23-a364-64c858a4dd3c 8dc813bb-2806-4f16-a1e2-86b6f0929805 299479bd-31c8-4c42-a6f1-f4d1caf4c090 7994f4d0-94ab-4481-b2b4-d0b83129464b 2a278db0-26bf-412a-bf67-cc2656f63bee 8110f8be-f793-421c-9633-0235e682dba2 eb88fc96-2308-41e6-aa72-27dada219b13 2b9c7f0f-d9ab-4f23-97b1-7a2f7baafe79 1379ba4e-791f-4173-a0ae-37c0d608c1ba e83adad5-ec02-420e-8a60-c6cd2334fdf2 1eb6025f-a6ec-499b-bc58-4a14b2dbcbb5 9db6ef14-b326-4e2a-981b-20742ca2d6b7 5ff5566e-a10c-4a1f-a3e4-ba8012efd17d f9bbbca4-675d-49ae-94a4-dc9ec70fbb5e 892119d6-3353-4500-9bdf-14a40542fa34 7bb81e4a-c117-40cb-a767-92f7efe17eab 37be5cb0-3a74-40c9-95be-695700220a06 1c7399f5-f7ec-4388-bcf0-e7c5171dfcd3 a0864b85-c411-4ca4-bc83-33e78347cdb1 15ac298e-ac09-4da2-b7e3-d4674edb81a7 f9b2cce9-d902-4b0d-be1e-c83df80a3516 f68c0893-fac5-421f-8282-115e3ba7be56 f2ce058f-801f-4614-bce6-9cc21ba21ada 4dfccaa3-11ef-4bc9-a0a8-6744a34390b6 df5f43c7-29ab-45a2-96d6-ba7daacf462d b0415baf-0b7a-41e0-8dd6-2e2e471bde5d 4b37aa36-1a49-4413-86bb-9a388205fcd4 f765662c-6167-4d4b-854e-5cd788ee6ae3 db41c4af-2701-4930-a835-a1caf088fae1 5aa11c1f-f53f-4ef0-a997-4543b8be1996 f625cde8-120d-4403-8e31-9c8d41fa3bb7 a88294af-320b-4047-bf09-7aef6ef82afc c4346a89-e818-441a-a69c-5def08e948c3 b1cc61cb-b510-4e6c-adb7-97387d256d23 6515be75-6386-4dc2-8552-8f8d6e2b35aa c86fe6aa-9736-43ba-b6c8-3df1df5e1777 5a17bbd5-ec65-4d4f-83b4-f45059b5a554 f6160807-b119-4b93-a916-ed0fabe94815 73fb5545-58d1-46c0-966c-0fef5fc4b5f6 ba4a3d16-2bbd-4efe-bf3f-a9308b15f886 47d16619-4bd5-4216-95b2-a2b5dfc87026 860f02e9-17cd-41a4-94b0-857b7d3f7ec0 69d214d1-2c0a-400b-bf5f-2dbe676fd75b 503a8565-995e-4106-bb64-c441024a0372 78cd5cad-e9bd-4ead-ab3e-e0ad65e9964e 2e21f241-9314-472c-bd87-b291cd57fd05 8f4bc0b7-82da-4ff2-8781-2e101ad4fda0 8370a8de-6dbd-4be7-b52b-632ca8ced508 d544525d-af25-4a05-9cf1-5ad6d7beccb0 acb26f7f-4783-456f-872f-a1f6c75dcab6 833178b7-cbd1-4581-9b49-1087140518cd 6696172f-4fca-4ee3-9aeb-d87925ad7eb6 9ebf2ba3-5f25-40ad-aec0-26e3e2b2dbad 7bf6d10e-f5d5-4993-a3a4-d60c3de3439a 9d4d1083-686e-489b-9789-85d772aa1df0 837b2c59-6ec9-4242-85ed-d55a52478b9a 28663b39-ff39-49eb-8cbf-c60f5f12f250 cadf103d-71a7-42a5-a744-76b12e20a7ed 2fb2044e-a01b-4b07-b449-71cb3b4f77f9 2fd11af7-bee4-4d98-82fd-bf56f43e68d5 a7bbdea7-da6d-40af-87a5-e5bfc77055bb 59eb385d-93d9-4d7b-b9c9-c12dea524367 7ce72856-3ecd-41de-b561-35e307b94ba2 c3eaf740-b37b-4c7d-a88d-db8efa59343e dd5b05fd-b1ab-4245-b000-c6d537afffd2 c9fcc731-bc5d-4d6f-a9fe-9b2eb75cffc8 40475074-7e9e-45f3-bc5c-680a5f3d9769 be81a786-b7f9-4307-be3f-80b899366ee3 aa434e7d-499f-41ac-8426-57565549f315 b26188ed-0725-4843-a081-ae6646669794 098cc826-6845-4d91-b10c-b940e3646202 a579647e-ca08-4e96-8808-71aa8adb576e cea8048e-b621-419a-9293-bb8e0e51b8a7 df02871f-a6b3-4fdc-82f8-66c331edcfe1 2ccb878b-93d3-49bd-bd61-9538236335b7 647e2478-e7e8-4142-97d2-b5f51309a322 33f0f2cd-4389-4e06-9283-6a495d1dd63e ed7f4b59-9b0d-4438-8584-1f801c3baec3 6eceb95b-7db5-4984-bc43-2aa8a15d92be e8a4771e-3a4f-440e-a3ea-f2d51f00c828 ede59d46-2f62-4ff6-8c97-81a68b833743 1ddf5537-aa7b-456d-a100-ab792d9339c7 4ec25aec-792a-46c7-a800-8c45ce72d6a0 ac791e91-bce0-4df9-b13f-914bea746084 64d8bbd9-7403-4509-9e66-3fa108b0affd 47c1cbc5-4933-4069-b105-f63376b66561 d0ab70e4-a975-41da-b6c9-3abfecd4f489 1bcb9e64-4837-4bf4-bb67-0fb62afc9720 e79d03fe-7f77-4455-9b4f-9bd18402dc05 f3396a8d-b9c4-43df-93ab-d40a388b7d3a 53c870b9-bd2d-4596-adfa-14e34b5259ef 076797c7-6cff-42f4-8231-dc7b86c5aeea b957729f-8899-44e3-81d7-1b223b60a65a b66d9410-885d-422e-974d-b631808144d6 74d98839-a894-433a-9a89-cf6f7bbee65b 2d0f3e42-be67-42b9-9928-6eae72c931b1 eaade2a2-3aca-4893-afc8-43e8260b05ac 5b4b3bd5-b1ee-4c2f-b1a1-a2e39333d7ba f8fe76ea-7ca8-4657-a3b8-d615636a6092 181c6949-cfca-4f6b-972a-9a38aa8b7a46 f1bd6115-f596-45ba-8c9b-e587670f975a 89dd86d5-a1fb-4b3e-8a36-ae4f7c43df56 4818f212-0dc3-4c85-b8f8-676bc6267db7 bb485137-ecc8-4b9b-9c93-1e6fcb4ebeb4 79f592a6-bc33-4e19-970e-447c4e75da08 ba1cb775-31fc-4825-9d57-7eaf0337175e a3ed9e27-8ed8-41f6-99cd-cfea3e067bde 622e2c32-47ab-428f-b6fe-5b99ca14afaa 71a7cbfc-7f4f-4737-9639-742596e87f3a 0cc7c445-e6df-45f9-a1dc-84eb477c30e0 f0a6c186-3855-4915-939f-971ed9078097 0acbc1ae-3f13-4a9e-af74-6c45244e2938 ac38c3f5-b231-4e4a-b01e-e3abdf614ee9 021d010c-70d4-4e99-9257-26aafbd8fa48 9d0a256a-b4f6-4bcc-bb0b-3e3e8248dde3 f69a6398-31fa-4de0-899e-f8b2783e1e0c 0c104b51-56c0-4c08-a239-e4d0aec3fefb 1c3a35c5-1022-49be-af8a-1885a6d385b3 c2ca9d00-0010-4dcd-b347-41e1e9176079 3b350f13-b2c0-40a5-90c1-197a7f9b8843 76e26b83-4e67-4868-965a-ac97e243928f ca9ad599-9274-4bdb-b993-589c9185a14d 2ecfd73b-0fe0-412f-9dd0-7df7fb164abc e255ce65-985e-4230-8def-3505471874d9 5c7c9051-d4b2-46b8-b877-640a2450264f 11d288a1-6809-49e6-bcaa-2141d790cfb1 72435aad-2d1c-4b22-b5b8-f62c887a0e3e 3a42c4a1-6c81-44f8-ad6a-647d812aa0ee 9689aeec-511e-420f-9744-935b6913d8f5 e0ce1992-c248-425c-b72a-edb9de30439d 1c00f8e7-93d0-4515-b45a-121bc6580411 4a41a386-b511-4d66-9c52-079bc8cf3f1d ba610152-7900-4861-afae-15701e931c00 29384796-bc16-49d8-a920-465eb34628a5 033dcf85-3f64-49c1-8401-070944e06462 72d43222-4365-4496-8171-ad2ae4eaf79c 975bcdfb-cd2d-4e4c-a43f-15bae08a4051 af3b3f2b-76d8-4b38-b54e-98ebc3721f63 2e46abfb-70da-4fd8-b467-0faabff796d7 b2bead60-94bf-42d5-a5e7-ceef0f0396b6 2d9da041-4164-4054-8eaf-f5d33a01b4a8 fced2be6-23e2-4409-a890-ef984724e12c fe86f96b-0b20-4654-9334-04cd441fd67e ce83e663-cb19-4fc5-a0f1-4669823c5ad1 0a7c6ac6-c745-49ed-9f6a-f95d3b9ad5e8 b6cbee9c-0ee1-4a61-8277-765436cd1acc 3b617aa8-a75e-4257-8150-cbd9d5ddcae0 51b056a4-1ffb-40e3-9a38-1a5de58d9309 838670e0-c9fe-4698-b57b-359e598e25e3 0fec303c-4acf-4d33-9b94-08077fb0d9f2 a2348a68-b9d8-4f92-98b3-a5e783141240 160ced55-d487-4cd2-b86c-6aedc822074a 847e948c-2790-48f0-b9cc-51de4a83e0a8 abf17f1e-ac19-47bf-9a5b-37dd198df9c9 68fd0ca4-c02b-4879-a2e2-092887519282 b24e9dfd-62c8-4e64-8f1d-3c429da5082d 68baaf3e-c0aa-4917-b1ae-0df9c969e35f b000e47e-544d-41bf-934d-ab61f790dc3e d465c2fc-e7cf-4302-b3e9-dcb7cef2c422 163ba6a3-59ae-4d58-81f9-dd05ee9d1ef5 95684da5-ecac-4a16-b698-d54c8cc4d3a6 7c9b785d-8fd3-46fd-9798-c9641ac5a997 c813eb6c-32ba-47c9-903a-4110d06037bb b68fdaa3-f6a6-4242-8f39-5b042dde9afa 88f98517-c0d0-4567-82f1-bb6778942fba 14752130-6ea3-44d4-a0ac-6bd488e86512 bcc4ad6d-decb-4313-be46-199512d5b706 f36be5af-c453-4185-8f1b-cf664e632659 e7c82cbe-0e40-4720-be82-d1961c33737c 23fbcaf1-3ab0-47ae-9d46-b58dc6e8131d 5c83d0fc-ec48-4c87-be75-6ef275da19d1 5327be68-7dd9-4fd0-b35f-e725f6276bfa 67756aae-9dd5-483f-aa7a-aa9ee3684d4f 49fbcab6-bb37-4147-9f9b-000843013dec faf6398c-2082-46ee-9312-1de01470a134 c30ede10-9ead-4377-a759-6977734a2b04 5e75df48-48cd-4809-a78b-b5540fc9bb15 c1b8dc4b-4987-4edf-acf0-cdd1081eae94 75e545cc-0f39-4a3e-a422-82d6d32e5804 1b129252-88ad-40d7-8298-332ea133900d 3da996dd-deb4-4948-8416-8115140067ee dfc11fd5-6a94-4feb-8420-6289ce15f383 a739df3e-4499-4fa9-8f9f-d7dac5950bc6 13ab1acf-d211-4ffc-8e79-221a5efe55cb 7f0afe9f-5a8a-4a9f-a9f6-87069c700f0d 4efd2403-906f-4b38-b4eb-eeafc7127478 dd5d8ca0-deb1-484f-bbd7-d40f5e937929 dfb8cb18-a698-42ad-b5d7-57769454a4e1 3108f44f-86b7-4b44-b96c-27849b0f6cd0 56b0c9e6-b148-4b7e-a481-219d6168a17e b9287aa0-f5c1-43ea-89ba-f648b050d8c4 1ee337cc-8281-45f0-82cd-8d035935cb09 fce8209c-a587-496e-a550-fd98fcd950fc c2097352-b905-43a1-a706-e6d6fa6c0f07 7cb5aa09-0607-4958-af16-0bf9bd80980e acb3f3d7-8742-4456-8198-33903b1e8dac 1681c8cc-0661-4605-b516-f04889558de2 1ef20e97-8ce8-44a1-b94e-7c53866a6523 4c02d428-3184-4cd4-b7b9-789e6f71b5f1 8e2514aa-2cd2-4557-a427-626de208e7bc f5fb00fd-8f7d-48cb-b4ee-a568c2035126 beaeb6cd-bb83-480d-a0a8-80d29fe929fe e424cf4c-cfa8-490a-ac58-51c52e44716f 75f3800e-9b55-4e9e-9e69-351100a09879 ccdbe73a-dfca-4213-81e3-08044c71de4b ba18dbf9-b4c2-4d36-ba56-c2d83b5f2126 02f1c982-eeda-4ad1-b549-29d09ea4b84b fc55faaa-e7e1-4077-a8e4-9c62e7aa5d09 8c9d9e74-0a36-4883-8c51-ff396a2de501 7b2393f7-31da-4d89-a267-b1042ccffd07 90336511-d3c8-4bcf-9ced-54668f519a69 a5ce6215-36a8-428b-8a75-d6433cfb801f 6d9029eb-2628-4d3a-9412-772a2aa24406 2cb0b002-a542-49d2-bd36-76a896a5e50a 8b2443ee-9103-47b8-af5f-ffbb4934613d 6cbf602e-eb69-4d55-a4c6-b0b48086738b e9faa5bb-e0ad-4c52-bd73-7b338d31d9de c262929c-fc1b-4c7f-a14c-dfae84cd6410 1a535b50-3bfb-4dcb-8803-54a77b71f24e 1886f7b6-934f-47da-b257-0520aaacdaee 1a410eaa-76e8-4f79-b3fc-fb00111aa2fe 8c8dd817-d499-4a63-970e-27aaa35716ad 707be601-1ee9-4f12-bc12-3a4abe568ac0 4cb1d721-14ea-4e5c-95f6-7ee08c3a51af 5fee53f1-39a4-487c-aac6-237c9316ac07 15f4f8bf-4ae4-4791-9947-e5770da921d9 c44dd870-cac2-49b7-b8f7-9965c396e352 75582328-9362-4b54-b389-40c7e5a6b9de 0e4c1ab5-11be-4f2f-bb7d-cdb1687a176d 39904900-de0f-4554-adda-e8d018166f42 dfaa816d-9c55-4e87-9a3a-769c1fd5608f f0eeee8b-859f-455e-9ae6-b299fe755f4c 1717d4e4-7aa5-4bc4-b7ca-7ab2a7b6f162 1110b19a-19f8-4c40-8d49-fefb467db3ee 3884013f-1452-4ec3-b89a-4e69923f8141 44389131-cac7-4ff7-be5d-510cf72a425d ab3b69d7-e597-43da-be78-fa44ba1ffb0b 991eb343-8ea8-4279-930d-d4d41d999f49 a9f114fa-d22e-4c3b-b2b1-2d4bc6b1bf31 a28e3a41-6bea-471a-b68d-d27bc4765dd1 a7b973d6-36ef-498c-a226-9e5fa4420cca 4b0aba53-4c1d-4592-be41-5e7c343cde47 ad8a04b8-fda3-40bf-909e-6ffad66fc5cb cf7f6b20-fa32-4e61-b21d-c058408adc06 8fbe5910-3636-447e-be6f-ec7b6ae886a6 d80fc21c-30ef-4183-a180-1e4f13d211e0 98adb98f-d55d-428c-a415-23a4ad153947 8c17d55c-9118-42f1-bc27-6a1ec7085146 3d6276f3-b403-448b-8fdc-2fb6212122e4 04164e38-9a8a-46cf-9b0a-e85c639d9cc6 046aadd0-bdd8-42c5-9191-a808da450122 9ec74110-acbd-4b93-8652-b7cf62407ec0 d34837a8-4f4f-4e6e-880b-c2dd1d86fa2a 2b60f5ad-0b4c-48ce-8879-b2b0b482f566 5db11e17-e1c1-42d6-912e-561cc5999ae0 e6b58788-2e26-4585-a875-ab17bd514c14 86646124-3403-4454-84f4-b62b8105ca20 a5a82a94-f4d2-463d-a171-eb7d9010011e 41a23103-0dc5-406a-a040-66f784b89453 99d40314-2e8c-4143-926a-e7fc966d492d dc040888-e125-4780-9683-cbdd8ee5f150 b5e325b6-ba31-4eba-8023-2394247389f9 a77ad8d4-5614-4dcd-ba02-c1dd16d2301a c2566729-0736-4a66-89a1-8f47ce98137c 07464b9b-112c-4034-9132-6da8991d5c48 dc16be80-5521-429a-a77a-00a3b00ddaa2 5f495e5c-5350-4a78-b787-272ee93f3400 4c7305b0-08c6-4330-a8c3-e204f214144a 290453b5-daf4-499f-82e6-8f48ca1761b8 5dde6f96-3210-4530-978e-512e2e7eae36 c14724d0-1471-42bf-8ab7-c41751a82177 cb50412b-895a-42f2-b9fa-adc05b12c89c b08f5115-9984-47d1-afda-55072bd1c834 46e4ae55-4fcc-4844-ae3c-6d49bf969866 66c8fed4-21fb-48ca-ac62-120bb85c8703 4292ca9c-d439-4ca2-9c34-197d48606b2a 6402abe8-beb6-4149-8d0d-065fb090cf30 5a399744-b9e2-4e70-b82c-31b1ad22eefa 05fc2f9a-35e3-4b77-a697-9baabf066b96 f09d1a61-3451-45bd-82d5-69b06a4a7ccb 23e19443-010c-4b62-a927-c14a93018639 71575036-22a4-4445-ac91-45e8debdaf3d 19e620f6-e974-454a-b105-6ce3189f4f1b 04afdc9f-70ba-403e-9af8-7c390fedadfd f8df6370-50ec-4da6-be41-8db0b228ce62 7cc5d6d7-a849-4c58-8638-8b1822e0bbb6 bb69597b-9477-44e7-ac6c-f36f8d373bdb 5be149d6-149f-4732-9b77-5d119c682a8d 071d84f6-d6b3-4cb0-b03a-61044a4f77c6 c6170c36-435c-4d15-95fb-7d764987e746 a5ce701f-6c1a-426c-bb91-28f369c3b113 ae3daf02-8602-4c47-b62e-5f466bb27167 bf22879d-e17e-49d7-9b6b-4a4d60b7cf5a 4281da8b-9ae4-472f-9fff-45fa8280d457 fe9c9cfd-b370-4b45-9be4-fb277c3f8a61 5746fd35-d4c1-493d-b63e-b119791e8a6e b7e2fcc8-cab3-4b9b-bff6-362baf2c30a5 d59bc6e0-4b53-4de4-a3c5-e02916c7f82a f7cc828e-c5df-4d18-a760-87995e7151c0 8cbda2c9-b7aa-402d-a015-be682a65e6e2 08111ad9-2701-41af-a742-d91be2c8bd7c 0f984d73-9afb-45b3-a44e-5b3a58316b5a e1ffe237-8858-4851-84e1-9dea4d81886a 6fd68752-528d-4ed6-9782-cc769ab4c6f1 8dbbedbe-2733-4cef-a81f-c5209d6eb1c5 16e641f9-c5ba-407a-977c-e313dcaa0c03 a92d62f9-c971-49e2-9e34-9d47c0d5a28e d4abbb9e-89aa-42eb-b986-21634a5cc5e2 03e3cd02-811f-4043-9143-cb144de4a984 25a75c41-13ff-4550-bc97-1cc6c4395282 33bddf76-94cd-447b-aa97-65a117dfdc70 f5f05e12-4d23-4fca-9c5a-cbee3964c73a d918b233-3c8a-4f59-b716-483143e16933 7d127a3c-02d2-448d-b2ea-d473863ad3a1 29705f55-6afc-4c2b-b28f-40f0384822de 88ede2b5-3318-4342-a447-036fe502db70 c34f7760-1f16-4a53-b2d2-286a9fc88586 3ef25271-47d1-48cc-ab71-5c9b988273b1 5529a6cb-7f73-4caf-b102-166dd321fb71 1aceab77-162f-4aef-bf39-6737c27462ab b1851bb4-3d02-47c6-a386-34fdc0d32115 76bc2290-0561-4eac-8b54-57d897dd3fac e8d3e8ef-eaed-41bb-97f3-050ea8f1f5ab 8521e6fd-afee-4e9a-835e-615d7a2cdf81 fdd76f0a-29bf-4208-ab15-022a008638c1 a080f14f-7cf1-4876-a407-21585c63b661 abc883e9-b804-437c-a0cd-c6af3543aff5 ceaf1dad-32c4-4a70-9cf1-db8b7a036dd7 a648b0b6-b89c-429e-9d6d-1c31406b265d 622709ae-a1bd-451c-8294-652eda920b86 e2c83d49-c57c-444b-ab89-37c2606756e3 b7334c36-3eba-4f10-9bcc-3a46f8c7e63a 064f0ad9-ff49-4f00-b7f3-c6091685dc71 f022760d-dfed-46d1-8301-53f5c33e38aa 2fddcfaa-7173-4ffa-acf6-067ba76005c2 b5ca18f0-bbdf-43c5-818e-fa05a56e6cf9 fe1011c7-c8ab-449e-b5d7-7dd3a0fa2647 f194b228-7c58-4db0-b0bc-056d1f3136aa 312647a7-2f87-45a7-addf-f8e3e370b4ee 0e352ab7-86e5-4785-8205-57f6857ae781 4a874d9f-c8c2-4774-97c0-f3d76b929ade 5bb53e1e-3596-4d81-af12-25c017f49519 bbe857b4-c4eb-45be-a08a-a7c43398d340 682f15db-4639-4a3a-91c3-7cb754176367 083458f3-5bae-4684-905b-208d8332042d 05d312cb-4ede-4253-a757-f0edb0688fd7 457c2c1f-2400-4951-b60a-49b6bf5e0336 723f34fd-ae03-47f1-9c77-da54168b87d2 8c473fc9-d879-46e2-9693-5e95915909fd 8522847e-dca0-42be-ba39-b9e64e3a1feb 8b70f6c7-6b8d-4887-a906-dbd9bbc51534 c7a9c003-4f38-4550-93ee-c1d0f64ec2d5 d5dbab5f-1475-4cf9-a482-08da71bffd30 8c7d7bf1-5974-4c3f-b22e-ae54c0f78910 dd00fae5-520a-4469-a1ff-ad9af6921e74 b35c3258-6093-42bc-a868-f759c3bf7c09 d2e59950-d521-4bbc-9855-e5f307fe37d2 ead93742-db1f-4e84-8cc0-dcf0791a632d 97443284-22a5-4fd2-935f-15a1ef600046 a2a116ae-016d-4aa3-a496-7b5b71f2a9f1 1a2205cf-9f1e-48cf-ad92-a611b79818fb 4a7e5d0c-9604-4c60-817d-a8876b4ad054 3f12c5d8-3598-41db-813d-0db166622069 d76b49f4-e55c-4005-b1ac-5260046c8d0a aea9eacb-a695-4825-9b49-89c3b0f52d5e 9bae2ed6-4594-4916-bf18-dbcedcd09a50 9206127d-a942-427e-a4ae-7da3314ddbed 828fb2a8-82d6-49cc-aa84-66bea5b2a1cd 475b76b3-ab4e-412a-85ba-edf8dc8b94e1 90e604ca-9dbf-4d83-8f06-8ea1f9411a82 bae1c900-265c-45a7-a8a5-3163d698573c 35a98f78-2ba5-425d-9d44-19877f0e5136 c2574310-5309-41d5-815d-d8d8d4f888ba 7dd499d5-4882-44b1-93fc-22b5ca7b85b1 1552284f-c0a1-42d5-a554-634940f8f64b e9484746-a022-4d78-a103-53da63b80a08 d1892527-2266-4385-b844-5960fc8e40d7 69ec1973-e20f-491f-a670-fb9b53c92cbc 7a38e3e7-da22-4eb2-84a7-194344b58a96 06a0ff4a-3757-4005-afc2-5a645c30fbd6 a4f9d37a-92b6-4b55-83cd-d0aca85e4cdd e6e0b1bf-df9a-4645-b264-fbb00b15bb63 9a4458be-737b-4c27-b396-dd9b6968c1d5 87963af2-1d42-4ffe-a47c-874cf37c6cdb cf399441-ec2b-40d4-9dd1-94b1a54507d1 f8e14cde-b784-436f-8faf-bcc0c0b3ba8e 4cc8604c-3a0d-48cf-9c76-d4f24b47a93d 6d5691b3-1a4e-48b6-b91b-3ef9dbd81394 c04259d1-268b-4c53-9563-5fb1243a9894 f90e0bf0-4246-4c9a-81fd-9fbd23a48823 eca49e3e-098f-437a-9161-b5e3a6bf06c4 ef0163ef-95bd-40fb-a651-dadc77cf1d24 51d69c57-5ca6-4a48-929e-d445c7b8e959 bd0f32cf-dba0-4346-8cd3-b54e62bb3af6 5a05d96e-0608-4c63-8a45-962b5edd3224 b7e9733e-95f6-4ccb-88fe-4fe4c7bcd16c d6622cc9-615b-422a-a584-2f17ac8758d0 49aa6f5f-c2e1-46b2-9244-6c360c7dbb1a 9addb7af-de37-4b60-b766-ab751a5f1392 44e8fdbc-0f2d-495c-86d0-8bc1a31f1b11 5e34b3a7-16e3-4d80-8e65-4bad9a58f6f0 b88a3abf-d9f3-4ac8-91d3-bd552a15feca f4e2fb90-871a-482b-8a85-09c3c9de48bf 15c64d2b-e94b-4b1c-86d5-a5ebc06d7494 9b72c55f-f5f4-441b-9e37-cdde11b041d0 06741e73-c0c1-4b87-bc22-0eff9cd87f05 52a1e96b-ab8c-4710-9015-62d1749c43ee f8af1685-813c-45ac-aa96-b25caf0107e3 b3dabcd2-7fce-4b6d-a066-580e197716cc ff2e38da-c98d-43ab-837c-49c709d67f58 02e77c2c-fa26-48f4-b1ab-4543d996b4a9 775b2976-c9a6-497e-90b7-1b6e65ae853e c7f30624-8247-4453-93ed-923cb3f1e410 57d413c8-5fcc-4970-8835-81b86c635ebf 7f875747-4751-4981-bfd3-0b001fbfc09a f57ab460-f696-4a04-b1bb-482122a2b1ec e56dcdd6-54a8-4083-bf54-0dfbec32cdc4 dfdfe7cf-1140-4338-b1bf-6dcc1d7f36dc 0d5d98eb-f1e8-4889-9118-e620aaa6d8d1 f53a23cf-436f-481b-ac38-6f53a3332bae 5f689c41-c0f7-4fde-a032-f1a8f201ffdb a49686ea-8d27-4508-819d-f191c4a415d4 cde56b3c-98d3-4568-be62-f9e1fa2fd9f3 2d946579-d0c9-4a99-94a5-63262f65ce7d 42e9d7ba-7c4f-4340-baa1-37941e18b31a 815c05b5-c3ca-4d25-97b2-2305a6b2b751 04b112aa-b382-4dfa-a89f-36673474a38e bfc299e4-6bc0-40f8-8d10-5c3e1367ed48 b01b1e58-445a-4120-8c67-a5d02a91fff5 4ba565e1-d113-49c8-adb3-5abbec7e0be8 5d23e683-74f5-4782-bbc8-4f97bb17351d bba6a285-24e0-4540-932e-b357cb3dac13 22bd598e-1c30-4849-b59d-0c4d6a4c2c74 e6dbc62b-bb2e-4b02-92e1-f1d28493ff16 e6de03c4-0e07-4656-b7ad-0a82ab3fc4bf dba31382-2337-4f90-bcb5-f113da32f0f9 de53721c-44ce-4ad9-89e9-cc883c8d8762 f1591810-fa4a-4243-b3a1-bc815ba1204f 176667b8-cb8e-4023-88e3-a8da794de8c9 f0872e40-c8cf-4600-a002-1c6a90e7f9f1 c571fa27-59f2-4a92-96c5-8ef7c7ab6723 54744897-1ea7-4a8b-bce7-6b576f31a45a 5be22262-c320-471b-9239-21213f3447e5 728a8176-10bd-44ae-96d5-04a4f0ef4f91 75ebea4e-a789-4525-8a2c-4c5a261fdd34 f14e5753-59a5-4b98-9110-0d216c87b58f cf2d9487-03bd-49ab-8a6a-456c3efb0459 d8c81a93-c416-4ca6-8f6f-02a3dcc479a0 2ac346d1-aa19-4a28-9d20-197aa2da2f87 69f18b07-35aa-43d9-8fa5-2d115a99ffae b0f4b321-b6a5-4a87-8d94-e6b8b751e2e0 bcb2d723-20f4-4328-83eb-57b2af274df4 c4b76bcf-3d7b-47aa-993a-e6bab3c56d0a 4ef0b190-ccc3-44b2-90a4-c0a9cacf50a0 63d7eb9d-b54b-4f0c-94a8-6282ad62cd0f 5b124af3-fd15-48a8-a5b1-a7c92a4db1e4 de05ac88-79d7-43e3-bb95-afc7d0a61ea5 37359abb-239d-4b46-8374-0995695451d8 39bef570-efec-4f6a-b614-460d3bce2407 9b4aa908-763e-43be-93ce-6bee51062006 76ac4523-0dff-46ad-a536-6a988b803562 25f8f70f-4208-4b56-85d4-08848805bd93 a4ce611a-96d0-468d-b622-47dd7a4149a1 84016039-b47d-4573-87a4-aec2e93690a1 9c9d8571-6296-433d-b25f-c4c7423daf9e 8a5b226d-835b-420e-b69e-f6f12ab25136 ff83a2d2-d198-4bdb-a014-b18eda98b85b 98c56940-d085-4bf3-b9a3-7f5bf7923d44 cc4ad66c-51bd-44ec-8d42-e91d53c128ed 0bd437f6-0015-4002-912d-c8272036d86a 214b8a91-4f7b-4d45-9d3a-1f635899be81 4754f493-2d50-4e75-bbd0-396dd61b97df 12ebca38-0170-44f9-9d83-471e8f98d078 d5f83f9a-a82e-49dd-ab69-28da883261d1 df5cea45-bb53-4722-bca0-2969c9e1f488 0007173b-f69f-4573-b990-d09bf7b1a5f8 e51ed2b0-4d45-4a39-b7e0-1a0c1be955f0 d1111930-dc37-423c-89d0-7d9db56b4c6b dd56ecbf-86c8-40d4-a5de-aa1d6b5a553c eea0d757-a8a7-4a68-a9ea-488b0fc1b0ce 8ff9f21d-6fab-4c08-9f65-a90405d1409c 3ae825f9-8275-4727-b859-d6519f10beb7 f043c3eb-76bd-43e4-a538-a409d31d58bc 5c1fe47d-7373-48de-b847-1ea885630911 e7d8e76e-98a5-4171-b02a-541f8f7fbd58 e5adc07f-4356-4443-9298-4b2d69a2cab3 5996b1d3-cbdb-4fe2-bb72-45a48df74701 4ea2fa66-a293-4217-a2f3-45ad0a698725 4321bcda-6cdb-4bf3-94c6-2505630352ba 201018bb-3a24-4bb7-b1f9-f09bd76c8a02 e150b789-cf41-4d40-a6bc-291a627ef2af cc22e5dc-5f9f-4517-b1dc-572cef67662f cc78603f-eab3-463c-8818-f4b6f7cf06d6 4ce1638d-73ca-47c6-bb61-61a8dcdfae81 c6b64816-cb84-4987-825f-01d4f4e0254b 70878b0a-3b27-411a-ab41-f75fa0004506 860d19ca-64cd-42d9-a4e2-2236ec1b86ca f223813c-a983-4e40-885b-7bcb53d67005 b6b3cf89-86c1-4f33-957a-74e087e0868c 89432bb4-0b49-4cf6-a990-5908f1e7cf53 b5e63cd6-612d-4e21-a626-f1718d05c614 881d4cf1-3431-4836-850b-f3374f05c24c d92407bf-e23a-443e-a440-0e2aafb19312 51ffe5f5-ad67-40b0-8823-d31e71f3d9e0 ab9186de-c5c9-4aa6-8d9c-e0cca68fc44c 5ef4692c-e1dd-4b0e-bc32-4c5481da9dce 7c555041-065d-47bc-9bd1-f62f932c5b04 fb097313-6015-4fdf-9139-88ce1fa6866f fd4186da-4d7a-4b52-881d-34455cab3ce2 03c0761f-c3b1-4a02-a608-2b65b15da3df b3d5accd-6e03-4e99-9d6b-d4d8fccea806 758d6e71-5300-4372-85b5-d0db070b2348 bcedbd19-db32-4a7a-8d1c-8fb7e2c48ecf d3da5222-6df1-4d89-b988-b9fcb421a105 798fbc7b-a2fd-4d50-9bb2-7a8e2e2e8295 e7989af7-5abb-42c0-9d5f-1bc15f1f5da4 0d137c8b-6fdd-4a54-9316-57b826f97dc5 c679efaf-1773-4e91-812b-62767853ee92 98755a77-5709-4050-b85a-93f0f88d9ad7 09c784ef-74c6-48f7-97be-7f5a0df67ac4 f933c414-481d-4643-84b8-d90745c11dc1 e9927d5d-5b68-4442-9097-ce7ea1928d14 defac3fc-d63c-4423-9c14-168afa141a3b 03382570-6f44-4cfd-a37c-1870c55e6aa1 a2b2887c-288b-4e04-9f1c-1f65515ea745 060e4bfa-aee1-4f65-afd1-8bb4b6d2eb82 092996e3-611f-4018-9916-4c95c83083bb c560fbe0-b342-4ea6-9e41-05d6f47957bd 76070a31-2b8c-42a4-9a85-a9fc317b3b10 91367a29-8f93-4d65-a784-526d733520e0 8512710c-113e-49f8-899f-8f3e41642505 ee266e66-c17f-4817-aa47-a77ba463b0dc 99c410e5-dbe7-4f93-822b-ea3a1cb29fb2 1ad16bad-142b-4748-99d9-53a27436b734 aa49245d-9d16-4edd-b9c1-415a21556e0d 5fe329e1-1aca-4e89-87b1-827fcbe8daa3 b16ffdd8-8e3c-473c-aa0b-f3baad4383b5 60b02f0f-a3df-48bd-b488-a01c1193c1b3 6367030f-fe35-4701-8ac7-8c72da40b81a b13df715-efcd-413e-85f3-24ce13208713 732b66a7-770c-49d7-a7f8-d036a873b7d8 4e97a772-366c-401d-aa9d-123ac52789e6 f1dd6245-c47d-41e6-9bb4-7895de85577e 33ff32be-0871-401d-be76-903bc5a8749b 4b27cef2-29cc-47a6-9c93-ddfafc7e63cd ad1a90e3-e400-4368-b6f2-9d4254c9b48f 0737b2e7-31f5-4e67-8562-d735d56ed6df 1d637bcb-a649-44f3-b013-4d9e90975878 cb069921-1c5d-42b6-a9ad-b8c97222851a 866ccf13-3dd3-402d-8ad6-2652fa7704c3 13532088-0732-405a-bcb4-48e2a05c6378 7809a02b-7b6f-4a57-bae4-3913eef95448 3d7ed3d4-55f1-4596-b718-397fac51f6ea 472093b3-78f1-47da-bd49-d19ef64bf63e 760648f1-67a2-4b59-90f6-393bdc71b27c f1bdf840-2610-4e3e-a362-a9382e202606 86ea0a35-ee27-4fa6-9936-b68b97468300 d6504ec8-8821-49d2-aff3-7f7fbbbf24a5 7fc68470-5e6f-47f7-9441-b0ec0fe8c81f 176f7493-3d96-45f1-971a-afbf12c92d91 13577ab0-0595-4295-8cfe-c749bdf41f98 a624d4f3-18a4-4db2-a7eb-91593a955eb4 15eca56a-8103-4476-8686-b81afae9a7c3 137893d9-d36f-475e-8848-57826d8aa051 44a29547-6044-4c7c-848a-6dd278877657 7e61a2d7-f884-49ac-b33e-053f145a42b4 b88271d8-93ba-49bc-aef8-589dc70d3e08 355e4fa5-a1df-4f18-ac57-cf2459f32c9b ab3b410d-2921-41c1-a071-5d8baeeb91be 1e8fbf5c-6079-4aac-8d36-3533d0742950 35592c5e-4b07-411f-8408-f6d0ce738030 ec661820-458d-48e0-a6ac-1d9bba5f18c2 afc761b0-6d6c-4c70-a756-820aea6945a3 ef1d4401-b466-4ee8-ad90-14157d14d996 a67d233f-5f17-4cf2-b295-5b7b8be58467 6b220019-f0a4-4bdb-8a5b-e03a68602607 51421509-92a2-4e0f-8df1-f92c1d0c229b 8a838d1c-b0b2-4019-b880-daa9f5478a9f ef300a31-3607-4431-b24c-96de8e02fde9 ae5777d7-e228-45d6-b694-d867c0c92f02 b605bbd3-7c1a-4992-9861-d72cb84828ba 89268cb9-c0f8-4638-913f-10fe069f0801 5d34ade7-427b-49b4-9db8-4ce4fabccdda 1751b77e-174c-4cb8-9913-36668b086ce0 8fd9a4aa-47c0-4e4f-b3f4-17446e88f173 fd22b024-d5d3-4d58-addd-04456b8cfdc2 42231f0e-5975-4acd-a234-388a72842b44 128d2513-f984-42e0-b7ff-a99117165507 f1af94c1-e0df-4d72-ba74-853d101342ca 4bce43b5-3a9a-4506-a3e3-62adf4db2212 25879a37-cba7-48b4-8cdd-8fe801372d45 c2cc5b65-347b-4200-901c-2c5b8ca199d9 37999da8-f3cb-4257-a006-813712fa1517 c9a49096-e20d-442e-84d9-54c65c0cd5d5 aeaebf61-17bb-4bc4-b88f-1a0835c9b065 598ece83-2e6c-4fa9-be9f-d833e9a63f2f 4b76029d-0b58-454e-a745-1716a49ff75f 1f74ff97-5603-4b15-8ad3-9f88f13dac8c cbdf5447-0fe6-4e4b-a33c-68f63eb09958 6a0a1ee9-4c83-4b6a-93e6-ce5d24072fa5 f42e953b-481f-46e7-86b1-10fc924ff680 69b13bc0-6bfd-4cde-ac56-5dc4f81e67f6 55485f30-3d28-487b-8926-f18b61b2cf42 76062e41-5d1f-46ad-b0cc-8cd43a4a57ef e2c695a6-305a-4696-8b80-4c6e80e53693 87384459-8b77-4d4f-b875-7564836130d7 03176dd5-26c3-40d5-a4de-24eebb73c572 45ca0308-05c1-461c-925d-aee2cab5d175 d8737387-437e-4397-9e39-7370fddaa538 abd2e9e7-41ab-4c5b-b670-78cb097c54d8 1baf4d8c-2a43-4bd2-b46c-65bb6bc2c235 cda792f2-d9c9-4750-a357-c8804466cfd1 807aaa25-c004-4c76-838e-0b360bf73002 f7907c93-3303-446c-9a8d-1c18b342074b 46bf5010-b8d7-4e28-8a95-a1967afbbc58 760efe92-4077-46f5-ae00-cc7a61e0aa4c f11e7d9b-bc65-440d-829c-a17ec940693d 2e446abc-7308-48ec-a9c4-fbed5b52a4bc faecd4bb-6e59-476d-8f30-ccdce841ca5c 40a989a7-1cb7-4306-b0e8-35eca99578cf aa94976f-9e94-414e-9eeb-8b0292ea3e9d b77480af-dec1-4a59-aa9c-a2e9248dbf36 45d09b3b-a746-4990-a4a6-e4d70f841a0d 04adf6f1-01fd-46e7-bd1c-788f1b8cddf2 21f0cfcc-0a70-4e0c-8831-2d1d5e34418e 50ac32af-bbb3-4010-bcd3-91ac6baa56a8 934cb531-fa96-42b4-ba55-a526a2ec7699 20e2f73c-5779-484b-ba52-9f49616dcbec d6d44290-2e70-43fe-b025-455ec818dba1 70c1336c-3a77-4103-9e55-3cbb3454dc58 1fb993dc-74d6-4f26-965e-ec27be8e6452 cbaef62a-a189-4b05-8817-f3cb6caa7d2c 992a1eb1-769b-427e-96f1-3b498f7e7248 48765ffc-a9c3-48ca-9299-bddb9f8740c6 a17a0061-d032-400f-83ee-d074c46c3da1 b3598258-6643-4a2d-b6d6-61608e48e378 f0f394a8-e296-4368-bc20-52a6a47f67bc e57085a0-fe75-46c8-891d-476dc1574e06 5be38d01-e82d-444b-85a9-447cfd127368 b9acd2fd-0bd8-4fb1-882b-436c026b5b08 782601aa-34a7-4a0a-a5ab-b2fbf8534ac6 42679e75-e3be-4d9b-b640-54db645ed2de 9f3049aa-f6e8-4365-b23d-cb1f2739458c bd43aeb8-5e4b-408f-8f85-5201f0304b99 4c8d448a-9879-4cb0-82f6-3b48168998e5 b744fb0a-c708-4ce6-8c73-8ca787a2daf2 0301dcd5-7df0-47fd-a356-fd3d2169b78e 41b78112-10ba-4b70-a2cc-85e48d64ae22 6d177bb7-cc7c-494d-b66b-bd934960a1b4 6e10fe41-5d2c-4856-a32e-38bac1a61c2a 6d3cf28c-2a44-493c-9f85-1f53fb06594b 38520bf9-5845-4ebd-ba3e-45b2666ed2c4 7820b660-7195-485a-9be4-0cf3447ba93f e3f6bbf2-56e6-4ca6-a3ab-26726218218b 5c8f8480-003a-427c-ab6d-ec1bc2418e98 dba87a33-c98d-4740-8d49-f4a9a668f639 5211ab61-233e-4cee-95c8-bdf5927a2d0b afccac67-9b1b-4790-a6e3-80e0653c3c76 13d601f6-b376-4315-92d9-d69fdb53c7aa 197bc109-a274-40df-a16a-34ad5c4295db 7a71cda1-33d5-4fda-99aa-26ae02974789 d0c9f859-bb2f-4f66-99db-670ca6d4e2f8 e44438c4-7a42-4630-97b1-6a1d6e6f829f ee3bbef0-c4f6-41fb-85d0-dfd2c37387d4 093f9fd8-d033-422f-9ef2-68bcf542cab6 1c1deeeb-201d-4f36-b158-492f034a23c4 1113c3ac-5697-4088-b72d-cd8f605e3aa8 1db1dba5-4c9b-4710-940b-31f37da33bd6 28433d74-2f90-4d05-bbb7-da2f7748edf9 2797bbea-dd63-4c89-9007-afb5ac09c30c 9bf01a6e-6d43-4a3e-8605-e4798408e7eb f6c8889c-e8c5-4eaf-8bd9-6a170340a2be 074a6cd6-3404-4ba4-9cdf-758aa25f67ec 488e1683-6c5c-4ed0-8caf-a8e8046976ef c950bb43-1f22-47d3-b13b-c74919d43903 54bdf501-95a7-403b-bac4-89210406b996 a78c4850-9360-4be9-b891-4a5b229dfe10 f3d8bb72-22ae-4fdb-a1cc-3ed64d413101 8ac0abfe-88c2-4058-8950-e149e5a50857 9edc0d3d-42ea-4249-ab79-1947975318c9 fda9ea80-7a40-4101-a50f-59409573e0f5 889c053d-530a-4f3e-897b-d7de034520bb aeba45db-733e-42ee-b700-a0068b3338a5 b54531d2-26ea-4b3f-933e-784093f1117e c90ec870-4a4e-4730-bf51-8359d7fb15ea a9355fc5-1182-4959-83b6-556ebdd72afe bdd58115-3693-473c-874f-791c01b7bfaa 81fae686-555d-4a8f-bcc8-b10632a81c01 c4d8875f-f0d4-47e7-90a6-5d0d31f6b9bf 31e60ea5-548c-441e-94d9-bf2a4cb1a65c 33a1605c-ea12-4128-9f91-55f9158750b5 c3deae43-f902-44bb-a346-0e756427ef9b 0c79236d-af90-4b7e-954e-3e8f9a0219cd fc2ba3e8-e934-4ed3-8271-64bcb952c795 d43ba43e-fe69-44f6-9d17-04d9440bc5aa af6007eb-21a6-45bf-8b02-02b4b3924133 24c2e9fd-657b-4a23-b30c-83ec2d4f4518 9e1e94be-1c8e-41d9-8962-bfa1986aebe3 167de3ab-b7e0-4428-84fc-36acd8aa7425 8184b03f-037e-4a90-80f3-eca5338b7ae2 97793764-a721-4887-b358-6c0f5957af13 50a4446e-524f-41ff-b37b-b8068a193ddb b38287f1-e93d-47df-98be-cbc650aa9ef2 f000b626-2067-4af6-b12d-2e589a7e31a1 fc548e0f-13bd-4d58-b47d-4e4ef53dbd0a ef19a2c0-6e19-477b-aa33-c53c9e38cb12 18430585-cfa5-4a6e-8128-6f9559541a9a 330db7b1-e756-4a50-bdac-f62d94a9722c 58fc1075-d186-4b53-a6d2-48feb4a4c038 74481f7b-2e18-442a-9384-96dce29018db 218a6909-337d-4e8f-9b90-57ff5307cf69 7918c0c5-4651-413e-b2d3-03d0da8f007f 7d34106d-34fc-418e-9af4-cd464fdf97de 38fc214a-5a3f-440e-b429-fd840a25f58a f6b12a7c-61d8-4095-af90-2641cf12512f a120de72-2cae-44d7-ac31-388a1c9ff24c cd839ae1-ba49-4088-bed8-b27510af15b7 fd4bc12d-2211-4eb6-a225-462f2d45dc7d 1b4038ba-3b5f-4114-b491-aaf1848975a0 0393d695-cd14-4f69-a02e-a46b74ec8659 94ce6434-da42-408b-a942-b87ab2f5bafb 9c7b35e3-1977-4e55-940c-f18a5021be09 f8d62513-909f-4eb5-8667-c98a5ff5b708 eb9e06e1-a269-4618-9462-2755890cf864 d3ad34aa-3292-4da8-8d4c-0ee2073155cd 23923063-4f6d-4291-87e7-860080f1a760 bcbcc2f4-5b1f-4e67-aabd-35d2cafaaa5a 05499880-7e66-4a91-ad6a-a8a323cd9d2f 25480839-f4b7-417e-a0c7-89bec0c99fbc 67c49252-3c7d-4c7a-b420-ee7823308da0 098e73ba-57f3-4b72-8d60-f336c1a86a47 49dca58a-c5e4-45f9-97ea-05e6f801da37 a7882b77-a9ce-48b8-9ef9-9b20975ce580 f0f70ac1-20c7-4da2-a450-ef0d82cbf883 cdd3c623-59e4-47c8-9735-c947aa0a6177 3371b5a0-0aa1-49cb-b847-56d7805e06c3 a5411e29-772a-4696-aff1-927f6008b9ad 9df3f901-ca81-4e68-b59a-8f75d06cce18 1ad870a4-4f4b-4dc2-abd9-614f2f1b3ac7 0bf0d4d2-870e-4eca-8ad4-70ab3942d9d2 1c702dd7-3c8c-4888-a701-195db0c98163 38a8ef36-fa78-4461-9c11-e363c13f693f a18e9719-0f15-4159-9035-a75f57cbad60 6ee9f619-ad5b-4597-8988-29529ed92358 1ae052be-2282-42a5-bb0c-b90d7a147905 456edc44-6f68-4535-b2b6-2736ac513490 d3458e14-9864-4849-ac3f-c573c53aceb9 d6c465f4-178e-4b09-9b7b-114c2e6862b6 1df84679-b22a-4880-b74e-eacab00689d7 8fef7dc5-e63f-4932-96d1-435effdffc8c d0afb7c9-35b6-4471-85fa-8e08c90bdcd4 f915ae26-a239-485b-825c-e09bc8dff2c6 f11a51fb-bfde-4054-9900-9f01322e2935 5dfe4938-6d0a-4c58-a0fd-bd68ed2896a7 dc4b4940-4dd0-4b56-8613-821b65599a35 3370b410-6038-4b63-952c-10ec60328e1b e032ca10-b60e-4c74-b35a-630e32a114b2 c1708aca-b85a-4b95-8106-4b80204a7f37 a1f6f3f2-c4cd-42e5-a8cf-04233ead2dba cc38b95c-34b2-4c68-83cf-d62b339ac30d ed6d4f2e-1d59-4b71-83bc-5bc86a842775 7a5fc453-2e5f-48a0-90ac-a06eb1eb30d0 1c6a1518-7478-45bd-8fb7-2d0acd6f2057 bc000552-e151-4c93-a831-61b78740c7d0 a0d23132-3a46-42a9-88b6-602c84f73d14 a542ba5d-a322-4fed-ae7a-5fab317f2bcf d6e04b7e-0c0f-4371-8892-44da36e830bf d7c4bd6c-3958-4fc8-97a4-75c42e9218fd 8edde69d-96e3-4917-8383-ff25b01f6c0c c21bd6ad-723d-4e26-ba44-98f416e10fde 6ea16c2c-1ad1-4629-bed4-83ae2bd223f4 cfb7c2dc-af6d-493e-92f1-9427ff7e89e8 e48e809f-2acf-4c12-93ca-30b5e37978b1 efb25233-0f0d-4cfa-a51d-8c4681da8000 dfa0b890-6bfb-44cd-bc5c-72271f8a5437 373d0981-71f5-4e38-a1dd-f51327f2ced0 ee4b113c-ac21-4715-afed-83b44b31e697 daab224d-9dc9-48cf-a4aa-c71751e10665 fe3a5349-5af9-4060-81d9-8de135e01b72 e1cdaf0b-da1f-42bd-81af-caa54e306994 68dbdcc2-0d49-404c-baf2-d59e95bd5563 b7090741-e82f-4b2b-8e76-4348da3f4052 e98787a7-b7dc-4313-a1bb-5361f7c5b655 e21326d7-20c1-423e-8d25-d086fb8fe540 19bfdfeb-9767-4662-8782-ad699b64a786 4ee93f18-c283-43be-941d-e8632efb2244 ffb1e584-134b-42ec-be83-f610979d575c 11345e65-d6af-45b5-a780-084821d59421 e146a347-c82c-41e2-9780-27444b548422 e59c3d4a-b2c3-4f1f-9777-85f5e937805a 807b46d6-5f35-4b71-8777-3ee4b7f9e99a 025c9def-5533-4788-869b-49c9cfe8476b 329041ea-b805-4946-9b68-b0f518e701fd 5badf5c2-954d-4806-adc1-4448c05b6242 68c8a932-2a12-4990-a7ab-10d0e66cbc4a a114f5ee-ba7a-46fc-9450-6e6d86e54644 fadd5790-312b-4148-95e2-76d747539add 6eaef3c5-a2e6-455e-ad69-60a6cfae74d3 9a1b408e-496c-4e23-b598-6e0d3777dab6 502da4b8-3a68-4ba0-94a0-2b8ad544f5f9 d89562cf-f425-44df-89d4-3bba9a595d73 9de98f32-b05f-44a9-bfd2-662df8263c37 e2ba31f3-94db-434f-8140-9bee17a3be85 2ec2ce69-61b7-4881-b37c-fb1210bc2b56 8eacea3b-9cb1-4e88-b34a-e2dbcc67ffe4 0f8e2a05-e39c-4e42-b595-984f3cf36bcb e9c2591e-fe2a-4134-98b0-4a4457076142 2f5e39d1-e8fd-4c53-8ad6-ef5e2a0de574 9874a03d-6e46-413a-acbf-f9ae5d16ceb5 f80cf362-85bd-4aa9-a6e8-afd5a5991df6 306c3a81-6dbb-4e88-aa4b-2146e1db6372 653b7a95-82bf-4243-9b14-3bf2e3920830 f5b7b098-37b7-423b-b85b-22dc38ee7829 b2e67f10-f11b-4f05-a4d0-116cf89210f6 af4e9b9b-6334-4117-b30c-466e387e65d6 05ef97d3-0dfe-4ea8-aa2d-087a1663b7b7 d917699d-3d6a-47e3-a77f-9fca39774201 de9d208a-c2a2-4333-ba23-179023d3e2be df52ef4e-d631-49c7-a3a6-c4e9744d0ff7 8b4d7f74-71a8-4bb1-9b32-88f24fc4cc83 539374c0-6eff-4c51-8504-4a746b341de4 99e07c18-3db3-42b1-92aa-bf9123dcbe59 16849ea9-7621-4415-b191-d15ef453559e b4234349-8a57-4d9c-aec8-a4f5707617a0 929e9fa9-95ba-4600-b2d0-0fde717ab901 5fed9752-d8b4-4610-b766-066fb60bbcb4 035ffe60-873b-482f-ab87-e73d0233f43c 70e04206-d5ea-46aa-a48b-b287b7122c2e 7eaf9bc8-582f-40fd-8589-8aad3daba886 76a4037d-fab8-400a-8d2c-71270c0f1d01 76edfdd5-96a1-43b2-af68-79ae09d24ba1 17c9d005-0e33-4d24-ac50-566e941e8af9 b4c18182-68b1-4be2-98d2-5aa83b6bacfc 5056a9ce-d922-4770-a993-b72e7ef99263 0068603c-baf3-4467-9b11-086fa6626149 715f9351-55c4-4ef0-8475-e9b394e3f096 0c9118de-3d76-4b2e-b15f-de2544e71fa0 148a7d19-9293-47f9-aec9-649356a21422 ed9511c3-8859-4473-8f7f-e90fb3f5627b 1c3878a0-010a-4d13-9820-38e8c2a49a1c 2af5cbc7-98f6-40f5-afcf-9746cf6361d0 0cf5b64b-cf2d-424b-b160-cf6f52dcebb6 9370dd94-46f5-48b2-8750-de03b543b18b 0124ee15-5a16-42a4-bf6e-16f246d8b364 842ebbca-9979-4ca8-970e-2427f06627e6 22049474-3cc6-4638-80c7-b4ed4a0139bb cf5f6f11-39ca-4cfd-a16a-60abc8432c2d 64046e9e-f705-4ff7-bdcc-22c692b009c0 e22d5846-345b-4716-8542-55c3ad97f223 d9696744-d52b-41c0-aa1c-2ac1d0f1888f e57230d9-dd0f-429e-ada7-10c1f5839c71 b17e8b23-e586-48e5-a784-eb85a66fdcc1 377ce682-12b5-454f-961b-b2092bad8154 b3671550-9a9e-4099-a7f4-098151977b31 71da52e0-d849-4ad7-8662-3d097cdb5bbf 823bb0a6-1fb3-4804-b3b3-1d4bf2dd51ae 1c05f0b1-9506-412f-bb09-36a1bead7f4d 2b2418a6-b7e7-4233-b493-ee1cdb52fd28 148b700f-036a-4399-94d6-5ca7fffcd534 4a830fa6-cc11-4773-9c82-c7ff57de70d9 0bc9f34e-11af-4c2b-a91b-de44d0895723 04809e9b-6864-4015-a23c-212d5884a82b adcdb19c-df72-47cc-bd28-5c36f9801349 6663a804-6b1e-46b4-930a-ca5bb55d3f6d 6254ea5d-9b62-4d95-aa58-14f52b44978c 30cf130d-c5a3-43b8-90fd-4ca2cb015ccd df8405c3-5f58-4be0-99e9-baa051d2b190 3023a1a7-d702-4800-aeec-61f09350577a 57747e33-3374-4122-a2cf-3bb7cde6ebac 535261f2-0ba6-45de-b686-0366c8455d9b b15830eb-79de-4f43-877c-92791c0ecdab d290fa1a-e1d5-4e65-8703-8766b84c234c a0d5a550-2e16-4378-be9d-10acb5ff76fd 3b8825dd-32cc-4a7b-8e7b-7f3477c3e4f6 f7682f1f-0d18-4137-addd-9b1aa2630f15 9f51a80a-6970-4d0e-9354-49f1ba1cb8ff 83451ac2-d38d-4b23-9aa3-03fadf57ef66 7d77cdad-e252-40e5-922a-487085f31812 1a016a11-ed82-4c05-a729-91f0a932bd88 064eaf0f-86d3-41c7-8bf0-66e44e344d00 e9102e42-e041-4473-b2e6-c2439a3f4bd1 545dac0b-08c9-4e2a-8025-7e7d2a578666 fed7fa0e-a6d3-42d8-af78-020e5f2812d8 2746306e-630d-45e7-bafd-4325eb1c75ba 96714e3e-292c-40c6-b18f-8f2dea17b1f2 13b5189d-a715-4b83-82e4-beb73649540b de61ab51-0f25-46ab-9268-02c8f0144fe7 f684640e-3f00-4299-8021-00e0e6181b4e 26615a12-986d-4d0c-b22c-fc0cbc77e929 3ea1b9d3-3528-49cd-9aee-7f51226df655 34b4a01e-995a-4e2b-bc5a-7240645aa67b 4069cdf2-bd3e-43a9-86da-f643e858553f 51ad762f-7f82-4abe-b91b-94339b64d620 d808af79-dc22-43c3-8e5b-edcbc54e0f15 08a4d6fb-21e4-40e0-bd38-01fa10517789 9b485c3c-70ec-4aa2-96f3-df9aac895031 1ad2a389-b228-4198-bc15-436c709371b3 4eb6b3da-5c04-46d1-94b1-66453fea081b 06c8fc28-7696-461d-8df0-3019bf126811 82750bde-ff9c-472a-ad53-26c445280a91 f21d50a7-3f2d-4ddc-af44-5b68ce1ff640 715dbd91-ef4f-464d-90bc-7d84549f27b9 a14f454c-e473-4519-a4bd-6b0bdeee682a 193fa389-212a-4b7a-8201-a7a6daeecf71 8d3c1a1b-21e4-459e-8b11-196b9e5e1bc5 0e3d79e8-448c-483b-9131-fea12be973fb 1843f2ca-d1f1-4ca9-b960-f12f34902c3a c0715a7e-148f-42f1-846c-a1f204764307 8b8bc2a2-33b2-4730-b530-26d49bac4dd1 ad4dba97-9416-4ac8-a713-6c91074767aa 1bb749c1-dedd-43b5-b57b-38ea2bce3ba0 400aab3a-eefb-4594-a7d8-b156dc4ee680 a9032491-7253-4bb9-8dc6-819908acba91 528b346b-0b5a-4f71-9f11-dafbc39705fa 63b73200-b364-4162-aed1-0ab6532cc7ae 93a35504-0761-4dad-a851-c5e63a6cad45 08fdd400-89bd-4f39-ad99-08d969edaa55 2422d13b-1632-4a1b-8f7f-3a53275d501e fa214f61-1735-48e0-8be7-3347b6ddcb46 277190e9-e197-4822-ad43-7d2aff456fe0 550bf45c-f462-4870-9934-7d1708f3ecfa 40270625-0dbd-42a9-915e-d5074992edd1 5b2f9a9e-3f63-409a-97f9-d261263b8d40 df4d0d1b-2832-490d-b67e-df72e629fb02 511c8f4b-c815-4262-b60c-27d8ce4e5c75 d8c89284-4dd6-4f56-807a-81c9987f15f6 423543ab-d423-41c8-ab2f-465ec7dd7370 8b2f095a-27c2-46cc-86eb-7f9d76bfc115 19b5296d-585b-41a2-a5c6-3ab8fe278d3a 27ae319b-1ce5-4c99-abad-d2cac56ef5a2 50a130b3-fa4d-4339-9092-6938cc9498bc 9c887602-0cc5-445d-9632-6d62c448d352 596f0e72-b9b4-435c-bd9a-cd0f06dfce8d 37008105-c31d-4197-b954-8a4dae443528 21fa3f2a-3c62-4718-8eea-bf687bf2a579 48d74798-7300-41cd-9b3d-2cab760766e7 a1eacfc6-0ea2-407a-b389-6a2582b65024 2f12dbd9-be09-4b5f-998f-2046885a8a98 78e5b57f-a9b1-49ce-9160-2f32fe62570f 87d3f0dd-df57-402e-a3e2-02db953f53fb 09c3ed66-4659-429d-b57b-9f211fd06655 c238fddf-a7f4-4194-b9a1-f08b3a15ba8e 2f3c5d3c-93ba-473c-a9dd-738b77cc14d1 f799ad1b-8bfb-4090-a40e-6bbd5a9b4a27 a9de459b-60ff-48bf-9261-0b27edefd94e 2ae45b16-6d3b-41a6-b37a-ce36732b63fb 86aa131d-fa5e-441f-83dc-532ec66251f8 21976776-f276-4421-8247-dba755956a0b 972c047d-ab48-4e13-bbdf-964795685407 5df755b3-9822-4426-825f-2189e2517398 9cc53500-d458-4150-aa42-9b12351a8d81 e1d40171-2221-4506-b7c3-f52e0f6f7a3d 99bebb7f-05a1-4798-bd8e-d930cea2f468 b3b96717-9181-4de6-aba3-f688132cd28f 1b3e6203-eff8-4af6-9783-6ef88ead6df3 7098e273-9080-441f-a6cb-cb48d7580778 b0a1cb4b-74bc-4a09-b41a-50eca7636278 87b558c4-4e36-4818-b31b-677dc7798ffc c271bcb6-c78b-43d5-a3b2-e32e6063a86c 8dc963f7-f53a-4d03-870e-65081d6276e4 8aa9cb5b-a7ea-4fae-8510-d399eecbe80d 75888a49-04d3-4d90-83af-4cd486907df8 33c9641e-d6f2-450d-9368-d659441f23da efe2302f-5315-40ac-863b-748623435e49 9c6ef027-2ee8-4211-8c6e-65b867097399 8f28850b-60ae-4203-b415-9f14b6472644 2e11db25-e968-440a-b66c-1fc0fd797939 4ff64c72-8c3d-4d06-9a00-500669c7e0b7 1349f0df-78fa-455c-b95a-507db28c457d f1fafe7c-836d-4102-85d4-ae75f1477a27 3131ed1f-e9df-4a36-962e-c0a09b8e8c1c 8c078f32-8313-458c-ac08-d769ba04ebae f6601b85-8f29-45fb-83be-2c8557d91f4e 851e414f-134e-4158-841d-6e9983986bd3 a2044cf6-c3a0-4620-b1f5-4be091fc46f8 ab2e1874-3364-4077-80de-d4d3f2864a14 b7953fa1-a87e-48ea-8727-fb14f5e6a8b4 1d0a3e95-9212-4af2-98c7-964344aca9f3 1f3321ef-fcce-4e54-b482-e53d3af20d23 d8a4b539-4b54-4ed1-b89b-21d79763d9fd 55e5a875-9458-4b34-b57e-5b1b72d39dce 1c9ba84f-b0ca-4396-b1b1-32c24e4dc3ea 6ae0baf5-2135-4db7-b342-986807e886e4 4ba21596-0155-4037-82df-28960792b2c9 37f596a4-de72-4e57-82f3-91d442de27ef 635c583f-3a9f-4302-8f61-bdd8b6819dba 74148790-f334-40aa-ab32-6390f8b0051a d0d26c85-e6a2-4abf-ad6a-e7991cf56724 193e89be-6af8-4cc9-b983-7f997ba375d4 b56a0bf1-be6c-419c-98de-cdfc0cc06c61 36473ce1-c4e2-4a23-bef5-87d86ba9e637 2ed05ba6-f465-44fe-bf64-d4e63b86552d 2cc33379-d07e-4e30-94ab-8f1411404194 7579a33a-3deb-4807-8830-77a7d5bca531 4225926c-0672-49bc-8bf0-93a1041934d9 02d14eb2-aada-4066-a9e9-9fb44815ae8a 6553c401-bcb3-4032-ad12-b25b7d6238b8 0dd81239-3bbe-43f9-8790-c063bb609ea8 39efaa71-bb71-42a8-98ec-ab8575f7ae96 c77cece3-273c-4513-a671-98fdf339e2b7 aa28cd66-c35b-4d97-9fc3-d3f33a172d73 2e87665d-9b70-4f57-a33b-9266937a1d02 1ed21268-7f79-45d3-99ac-5f84ca98d936 6c4c26ba-5588-4894-ba0d-c8c6c9278aa1 2fd3b05f-3ee9-494b-aaf9-755587fa414d 1aaa903e-5630-4725-9b36-b588a2265361 37e73b29-90d1-4378-baf7-18d23938877f 571e4b38-4513-4445-91ac-6ccdc7089fd0 8d8a305f-7af1-4f4c-aa4e-680738666e50 5bd8921c-3e86-4eeb-947b-a7311c90e09b fe4b96dd-298b-4d7d-9777-55e3f2a3fc2b 8478faec-99fd-45d6-88b8-3e99fe6ce525 ea48ddc6-c39c-4563-91bd-0bfc1b3e77d9 a603938d-b687-470b-8808-50a4f4491b4e e99d5774-266c-45c5-a6c0-6c72129084c0 f50a1bd4-3d75-4fb6-aa76-de6c51612f63 9d2bcec6-bfed-475f-9e67-fcde00e4d9b0 8f8b924e-9bc4-4aa8-926a-532ce5c2e837 85ddbce2-0d90-46f2-b22c-e17c87b84fde 14437bf3-560c-4cda-9dcb-91ed611a6f49 8fa21ec9-1597-4782-86be-e25f77f5bdea 35bc9f4d-f099-401a-aa41-3f30cb060110 0adf5d94-d8dd-44d8-bd6c-03cfd3e80766 15b1476b-c201-440c-9c03-74b603c564ec f2b10616-9901-42b6-936c-11b3635a4f1e cba2c9e9-8b53-431a-b779-d18c20baf574 3f71a3ad-b3ae-4592-a3c7-5a97ac985cc4 7ed85243-e517-4b7a-966e-1510816145e0 246b4872-49e6-42ae-9723-9efce0bcae53 011f471a-e51f-4773-a37b-d794aef5f2ad 71e15b74-cf6e-4410-a482-721489afd1f9 bbe5434f-6ec5-489f-96d7-f969be8c7cb0 d7135c1d-8bbd-45f7-94eb-4b96b6067bed 4a12f871-9549-4176-bbe1-36ca845c480e 7360a493-5b00-4f9d-9181-6a730284601a a6042b56-11f7-48f2-920d-0e1be7cbbfef e677a505-7cab-444b-a0e6-b9dda1845f46 2d332e90-a9d7-4087-805f-e8f5648346f6 328f556d-4724-4648-aecf-d8b8f0f1444c 29a090d0-6a65-401f-b51e-35494e5a1a5f 24d4bf39-ebdb-4640-90d5-0ee8a0071bae d8353d6a-9737-475c-b695-2b3c315bfd27 1a5f07d5-4764-4720-b7c9-45d4c34b7680 e5feb72a-6001-4210-a50c-ce5511f0217f 54be968b-790c-43aa-b58f-440267d9611f 4cb1b37c-02c9-46d5-a250-f8b7bf5006d4 80e2ffee-dcb3-435f-add3-b71dae9335bd 90f1f706-9649-4a84-b84d-ebe7e54b3559 23e5eb26-1fbf-46ce-9835-1cf9ed847436 1aba0942-f5fc-4cd5-b4d4-2e7d8eae66b1 67749bb1-a284-48a5-b46b-b830c6d41285 0ce160fc-96f1-4d35-abad-8ed23230193b fa3ce3e7-1001-4ee8-a387-e2cfe5660cd2 758dc855-7bbe-4828-bf89-5eea3e9cef8b 77d19f12-cda0-4696-b0bc-576f64ff0f98 f88cb8dd-ed72-490f-b7c5-20e9a5a55348 db6324cb-ecd7-47c0-beee-7a3166e9e95a 13cc54b0-e152-4cc8-a5d5-0e1a38dd1cee cae014cb-3c18-4e62-b29e-de27d6378626 11928ac1-d37b-4709-883a-2563c1a8a8d7 d3446345-1c44-47fc-b290-40e60e308688 ead442ad-df45-4187-874f-194dc53ee63b e3e162dc-8e87-40a1-96e8-d34ef7bcb3a6 58376d09-5460-418b-ae63-6ddb15e0d4fe 52245762-30f0-45ad-af0c-d93e8b722cb6 8bd18171-c4c0-45e1-8787-fdcd1805167c 08afff56-ad66-4f9c-95d0-15caf8f10138 ad603b9f-b18f-4c4c-87b3-d0601371f8c3 c179f5f9-f9db-46e1-9cc3-376c66ed28cb e7384178-07ae-4908-8d78-961e110088a7 c3440bcc-ce1b-4c0d-a17b-68e54e5659c6 6a1fcb53-dcab-4aa6-a61d-8f9fb5139e6c 0f40b882-d812-4e17-aec0-688d2c967fd3 3c08d320-32fd-4e35-bbb6-75d696e4939b 8a248593-7158-492b-8f7d-9a73974cb9b5 c8b5c676-8bad-4110-af75-6563813d3114 bca696b7-550f-4086-98b6-79dabdbeda58 338e93ad-c8bc-4c12-996d-3dab5a59e523 3ec3b11e-72f5-4e2e-b3d6-ca479b7b7400 abdf9904-b272-4ccc-b866-603ae6c83166 ec57bcd8-4455-4358-8da6-81898a776d9f 70419175-8238-4676-afb6-60be44d73188 74e018da-dabc-476d-a2aa-e81605f03da9 563c3a0f-089d-45a8-a2fb-22849a8d9846 b70082dd-66fa-49f2-910d-5d153b03440d f59fd0ff-f0d3-4073-bb0b-f497e9f05f13 47542c33-524d-4646-86f4-1c41d8425f5d a755e8f6-e93d-4c92-96bc-9c3366c22b3d 1fb9c470-ae01-4662-920c-aa2adc32dcb3 1e328e7e-d411-4fed-8d32-2a59aa8ae24a f810ce2a-5d04-4a5d-b15e-b0cca5165542 4ed209ff-02c6-44d3-a21f-009ad731f488 1b3ee6e1-39e2-4b38-92ec-469a0d8315f0 88283ab5-0bf7-4df3-93b6-28ced6f97bcd a906ab14-0bba-4f68-a49e-9386e72bdfe8 e55998cd-734b-49be-8e60-a66d2d93cc50 e9b84423-d0c6-4330-b3ec-7da7fd3c1b64 48f5e36f-794f-47a8-9d49-0b3bfc4cb52e b3cec539-0b74-40ef-9c82-02cd2fd766c9 beacf619-63bc-410b-95d4-e2335aebef0f ef96c20c-b399-4e68-9193-59ed6e764f94 fc0992af-b61a-46e7-85ce-7ec58a4af515 5e39eb70-d29e-471c-9217-44dbecfc3348 7d7ad131-df01-4cec-92b7-2dc2773c4ef1 cee5f35d-b011-45ad-ad68-50b1575ca260 c57775a4-2791-4dee-a33f-436e723811d9 498d8536-5df3-4b73-b609-be98bf0bdeda 64687e61-7d65-4b86-8b7a-311d4e008ba7 2962b3d1-b7a9-4a2b-be51-527a76282980 a18f9c0c-e198-4f55-b37d-5e7607643320 1da0f0e2-f362-411a-8d49-9057116e6a82 89266ca1-80ee-45f8-9b18-160a226d636b eb64127a-76e4-427e-8670-1e9b83f71ef2 5ccff07a-8f3a-44cf-b72e-391da88c8d18 d489c6fc-7dcd-4a46-aab5-6c470b21a3f0 0cb1189f-a0c9-4a34-881a-ddaf37847a8a 80607667-e943-4869-aa59-6a5927cc0f2f 060b6410-30a5-478f-ab43-522b9eb746a7 c121adcc-be7c-436a-9a0b-61baa09179d8 6958e8fb-4b15-4d84-baeb-80ef6bb5ce9f d73c3994-2aaf-42fc-b83a-444b9ecf88f4 aa777c17-21a8-4647-9928-003984ee43e8 506da300-93f5-490b-9675-10d5e9d745f3 fe64d3d5-e3ce-44a7-98f9-c480148b20f5 a2aad205-805e-4c5d-adf6-725a8ad995c5 00e3c383-8ba3-43a3-9dc0-381f28fd4bcf 0fef2e54-2f2d-4500-b549-219ba36f3e37 5983bb6e-10cc-4c5b-b85a-53f72cf5d99f 01c01172-e68f-4ba0-b7e1-9e6f825ef4ab c521b4ad-c9f0-4222-a5e9-739ac1785670 2a810d90-8f8d-4c37-8adc-01993304ae8a 32720a19-252e-48c1-88fd-debbdb66eded 7a00a9ad-0828-41a8-b391-95593ca845be 5880354c-a702-421a-ba36-08c3d3809473 49eaccb1-6093-4d50-a08a-186bd21086d1 5d1391fb-fe2b-4d5f-8824-848c060f00a9 44df49cd-e00b-479e-b3c4-c460c85f09eb c43257d6-3cfa-4ec8-89ac-c5eec3685a08 02c9688f-4178-405e-82cd-ce3311b3242f d8e95321-5c12-4f3e-b8e3-558094cf2f89 7d1aae5c-9e24-44d9-a70f-aa04bac7cb00 2fbfe808-19d2-44e0-a3ac-5396455c3719 1014a571-7c30-4535-b8e0-e85ab347bc03 e7cccbf1-813c-43e7-85d7-6741577406f6 a3669c33-b630-4194-a4ee-4abc29e9668f c5c147d0-09a8-4800-89d8-3d81331b049a 9b169224-847a-4f12-b9c9-dea1a51b118a 901cd96d-c506-4a52-9841-951f1c8ed0e0 e0750125-ca53-4835-933c-f6258d7882ee ca6dbb24-21c4-4a18-af42-8635bfce3ffb 8d7c8959-1fb4-4718-8242-deeef7699aae 9f56fc6e-4a7d-46e0-b766-c2c434b4484d d86c8a4d-6fb1-41be-8fc1-421ce8fffea8 d1bb7c95-fba5-47bb-9205-641af1314102 10ea7c39-8ffc-4657-bfc1-45cc813f9913 cbead40d-a9d6-41da-8fd3-6e743b8a0aed e9a9414e-1596-42ac-9d98-f3a3e1319784 bda7983a-c52b-4f13-a381-594d3cedf7e4 5860301a-6be6-47d3-a27d-18ad01e0c766 2a45906c-b67f-468e-aa41-59fe7709dcf5 72f7b790-57ad-4257-bc0a-91ae61eb92d8 f655da57-4d68-41f5-afcb-c3c16890139b 255ed2ab-455f-473c-a02a-ec7ab0c869b5 58b4bbb2-cad9-4948-b61d-cccf05110744 f330560e-33dd-4e00-8163-50a87a82fdf7 1474e749-af17-4e6c-abed-7483c99ded61 d1c282dc-ae19-4a54-b82c-ee4617449a41 c0a37173-7d59-4334-b3a1-dbf5f75064f6 2906009f-6eeb-40c3-8f58-8ea93b02ec86 6ec5e873-1f79-44c5-bf55-98886b280b8c 0ee4d896-b17a-4120-902f-24658d352bb0 9112ce9f-2afa-4b59-92f9-233357dab1d8 de8becef-0ea8-4254-a34c-f7731778d06e bdabc881-9116-430b-996c-f0be36fcfe46 06c69959-022f-4b0d-9246-a08969879029 1379cff3-8551-4071-958a-dd6156ba561c 289a62d7-0537-4d79-9d3e-1a1a38e4da7d 2ccfd551-3ab6-4786-8202-ecfd8468807b 52e95597-5e89-4c1f-b313-01491ef958d3 556ecedd-0b44-4fcd-b223-2a9bc3e2cbeb 7cc67259-812b-43f2-905b-1fdf2e28d8ba 97085438-146e-4394-a093-0909244390ad 41f0e642-243b-4070-ab87-e7ad2a688d3d dc6c583a-9e9b-498e-90e9-7daed0df48dd 49614f64-f0cf-4a9a-877f-c107dacd51df b4180451-62e5-4620-b25a-e544ec5f6bc7 fd546fd5-6c11-4ff5-93ad-bcc0826bede7 3b66fc2c-4013-45c4-8af9-0b84c305f267 e37bbef1-b038-45dc-a643-d6956a2b9fb3 aa6df897-3406-4702-904a-21b971aaf89c 93ba6e57-4367-4567-a6c1-843de2653edd 640a276f-6eaa-4929-9771-fe3abf38c5ac 6bc5faac-10ba-492c-a15d-c005bd453bb5 cf8e122a-8d4b-4ef0-bcba-c6976347bbd4 07574d5c-f5da-4344-ac3e-b20d011bcf5d 6da07609-cbfd-4c1b-9cb1-adb4bf462738 b9bac46c-d930-4955-ad3c-02c3ad316e01 b73026d7-8c5c-47a8-b750-18c5bbca3bd4 a5615961-6987-4049-aaae-964f0ee50f6f d71cace2-a60f-416e-b140-6553449de947 008a247a-04cb-49fb-96c9-5e2f213a13ef 653e3658-4590-462f-9917-8bece0fc8dc6 d2a06375-7f43-4999-baab-30d0f128fa3c a2334d56-1f79-4475-9015-9c5be869fb59 5c0b4742-fe6c-4403-bfee-05ac1818b6dc ee295b43-1131-49c6-af71-12c4af6698c2 1fa12c40-7edb-49ff-ab38-59b13bd97949 73a182d7-ba8b-4886-9296-ea0737567e08 03d81c39-20a7-4bfc-8b25-bc105b327f59 601a239d-2894-4227-8d27-0a08fb0c76ac bd92246e-55b4-48ef-ad4e-c2b3edfc5e31 a564ed01-337b-447f-8ac3-060514e2313f a9a57fd1-cb9d-4c83-99c9-642e402f6904 9c9e79c9-5aad-4c2a-8a0e-f7d20ffc7934 d1e51ee7-e1e2-46e0-974f-9b4110486707 cfa85cdd-cfc3-4644-83c1-f988088a2354 ac597331-313c-4bc4-8301-9b1870f32f50 b5e05085-8586-4bea-aecc-1cfdddcd23a1 de816c45-5708-4f40-8990-ced55ffe0c16 81787d48-ed43-441f-bd30-1be845aefa1d 7a933187-c9f5-44f5-b977-4f231de17118 7125be02-92f0-4490-a2c2-6e05fec2cd9d b5a5f082-1a0f-4d01-8c46-30a5f634406e f05f0f51-f7da-4ac1-870a-bafd1a7f8acb 7e4d771e-c313-4824-b702-1e9339050a7b 2e022593-f345-46af-9526-eeca284de3f5 a0239f57-c8c4-4e78-8fb8-317fe95570c0 df707202-5152-4603-b5b7-52063dccbcd7 804792b1-b66d-4b22-95b1-41649478ffd3 a227e1ac-0ef9-43aa-905d-fccf1283d2dc 4b5760c7-69b3-48f0-a67c-32a64be592fd 0ea71e3c-73a5-4634-8dfb-a75e82321e8b 349c0cf7-b561-4758-8155-915d324f4afe d2f11af6-7464-46ba-82cb-ba3b5ceacdc0 fa4774ff-2f69-4714-ac0c-34ffc5fd87a3 bd42bcdd-cb33-4c1a-b92c-10c8952f8461 92657f81-358d-4332-abb9-c3a975350973 fda8f518-3a8a-403b-8b2b-396ae6e25f5a d3ac0698-719a-4ce9-b138-4820cd515437 19e7287b-7838-4087-aa89-17a3dfa0956c c92fc6e1-2a99-4f0c-8c7c-47b229a4c3d2 9c283e33-3cf7-4c48-b523-f7a36528b6c8 a616875d-cc1e-4f53-87af-5443507792ee c3e230d8-6acd-4f50-a05a-a55fbb837580 1606d929-fba3-4d22-ad70-3545b0d7c071 fc141c76-56e2-461f-9a9a-433a06f1d171 681c0c15-eab9-4a26-bd8a-6ce6db85837d d48594cb-7372-4ff7-aed0-c3de223bc5e7 b730207a-4582-47a1-9806-34857afffdba c1542dec-5020-4f1e-9854-f72e8c40117f 8afa9155-342e-4ef6-947c-d1cf162a1302 3803bb01-d8a2-44a7-9adf-29a426ddb485 bed93493-4f5d-4943-b6d6-1b8930ecf2bb 1e15bbc6-4f13-4aec-98f9-d3800404983c 2883a67f-9562-4308-a68d-fd11e53e6029 3170914b-8e2b-4ed6-b592-45307cfb3622 60d14264-0f36-46b1-b1dc-318bf7cc9872 a0d1ee87-3133-4e91-ba66-a5c7e572c846 48cf16e2-1082-42e7-8c26-0074e3e665c6 787aad7b-2d9f-4c57-bb66-e211d00bb327 2e559021-b78e-438b-a3ae-5adc206e37e7 d80f5f4f-e49a-43e3-8aca-2423330f3ab0 e17188f7-e963-49f6-9483-f7b085d6d29e cdb2ec98-c148-4599-80e8-ec0e0466c4b7 b2a77e36-b967-404b-9473-e8652cc1ca4e 7b57e403-a2d0-428f-91f2-9528d7251595 4c90355c-96a5-4253-8b38-512ba2fa1c67 e2b61891-e7f5-4b4b-b443-56bc13b1adea 875b7409-99d1-4b80-ab54-e13b9c3352d6 d1a48f39-7755-40f4-bab1-931ce07dde1e 71d8aaf7-24d1-4742-9878-5e2b75a284c3 a66d4e3b-e6b6-48cf-9a34-37c004a83133 805eb9fe-cde5-421e-9987-4c68b5b973cb 1bca00fe-e181-4a41-86c1-12970654cdac ef00e673-5391-4f02-8bc0-afc219e9001f 8d8af42a-a69c-4c3e-b466-9ab0bfc39252 7ed0d423-4906-4a67-a4f1-0327af3fe778 739b5406-d69a-44c0-855f-019b0a2d4fe4 cdbab911-65e6-42cf-a00c-ae6b075e1dfc d39cca67-7cad-42fe-bd74-d8ecf796aada 4b9de717-d1b0-4d19-ba34-a302b03c68f9 1fb75950-aef6-4ae1-9436-4021d4b6585a 6939c8d7-15ec-4483-a35e-318257a7ee7b 6e934c0a-881d-4c93-b493-496386b12f60 81713216-1cf1-494d-8bc2-f358b5f02f7a 7b44bc2a-cc02-4c8f-9386-5d389b626a1d e9b444fa-30c9-41a9-b487-da5009f93fa3 c810f430-a0a7-4131-ba57-84385cbabf10 7db96df5-ac1d-424e-9195-d21ad7444bd9 cf71124f-457b-4899-8eb6-489329bb02b1 d837bcea-4cfb-4466-b89d-e6180fe57ead 71c2af72-faa0-4959-b471-0cc82892efa0 1398fc73-d07b-4441-a6d2-5083bb4ae9e3 32af7231-6c99-4e4c-bd82-b68f6ce8a138 3ad32745-d4c5-401a-b296-b886b3773f60 3cb7430e-24d0-4049-b182-a3ad3447dde6 72fabc96-e50a-47ca-ac1e-351d1db94e42 073734ab-cf07-4dea-9a55-1370297a7fc6 0f4cd8c9-2fec-45dd-9caa-050e7a6b653b 9883b3c8-4734-4747-9034-ebf3347b9b9c 87bb5de8-b978-4119-a6d5-a09864dc7703 44db1d59-aec6-4836-bab5-fb3c80a802e6 ab3024db-22e3-4aa5-81d9-8bb4740eeed1 1068789f-b64d-43fb-821f-d16a491eed56 885884fd-d9a5-4f06-888e-3d49928fdddb d8bb0d84-6415-4875-88af-61fe02d8e03e 93d0a6e7-e80a-4d55-be7a-6ed9e53a7d7a 19672d56-d32d-4440-9576-75ced7660b81 fb32a3e3-a3ee-43a1-a022-16f310d57b62 2c311b35-55c3-465a-b531-72b909913c55 339e348d-ee84-42a3-8b70-23a60accaf69 ad99eaa3-54d8-4247-9d9a-7190f313d3a9 1e1f0a52-b8b0-4d35-a80c-8f4232849407 84e5866f-27d3-4d96-9e0c-ea605f1b5213 37e64030-904e-478e-a4fa-077ebd276a63 1759dba6-5a39-41e3-bc8c-1fdbe853c6c0 5a67ad79-11c5-4397-b395-5fd33bcc1ec2 7b5e662c-6abe-4e90-89be-0a1482431b07 061246db-80e7-48a0-b008-33c801dfbea0 3265eb73-6aec-43e7-ae78-981d7dd6535e 70c5748e-fc16-48f2-a620-2d8e4ffca9af e335c35d-3b38-4b9d-ad2b-6929250fa4c0 38b762c1-2c12-4c86-8369-0ca13e0cfdaf 48a5f615-e2f5-4a74-94da-66660b9a860a 0697dea5-a5a4-46eb-ae4d-63c9615abde2 1dbbfce1-e6bb-41e3-915e-43fc0eee793a 3acc4d23-9807-4b89-89ca-062776068689 5415cd1a-b1bd-4c6e-b28e-e106e3fd68b7 70c01005-6e12-44c6-9fee-bd5a89e1aa00 9f8b4a90-c878-4c5d-8926-a313e4f90636 3c64bac7-6ed4-4473-a28c-874884da75f9 0b86eee6-a30e-460f-8248-4a3d4d618f26 6cb28935-d75f-498d-b3ad-f773a2a7905b 21fce887-2c1d-446e-a00e-0d5916d5c5c5 1e662f2b-f92f-4db1-bb8b-2d94b5c24d5c ca0a973b-c780-4fd8-8e16-ea0f573d495b 9af41552-bae1-45f6-940b-5653bcf0c829 e6f60881-6789-4224-aa35-26d87f36eecd 670ac740-7059-43bc-954a-d33695c2fa1a 18871852-19f2-490a-862b-fc50529263f7 6b060c1a-4d5c-4e9b-a303-b619da488f88 5bf5e8ac-9387-41a5-8cc5-a8c66a66de7a 5e6f243c-d057-4d11-b364-79b344881415 af83e574-051c-4aa3-8259-7e8f2b3064bf a0217ae5-1e22-488f-afa7-3f8895efce74 65150b1a-f9dd-4af5-9063-25cfaaf71fd8 76f6ff8a-4ee3-4a3b-8174-6d23795fd013 d5bae149-681f-4dad-853b-607a4dc32607 8149dffa-a8a5-44f1-b15b-9bc815a36681 7aa0c155-2880-480d-bb76-f192853384ad c0ba1443-e997-4cf3-90e7-9b86544049ac fe26633b-f4b0-4f24-b71b-d239d5e697c0 fd637adb-dcb6-4df9-bdf7-ce2444c6c391 9bdf84c4-a740-45c0-8815-c99ff5b8990e 81d8bb1c-05d3-4b7d-9fc0-a111961a512c 591c28d5-a565-4e8d-9209-dba4cd96c723 a89613e2-9995-48f7-8fe1-e0642422bc30 93dfbf13-66c6-4c65-80da-c5ec6ff863ac c15e4efc-9462-4f10-9295-aca341ba5470 91299e91-f6a1-4079-9a35-08fa76d2176c 96e08567-e140-447b-a7a1-a6a0c1f7c9a0 0ac0552b-d296-4bd4-9e57-75e97889ca20 fa293086-6e79-44ca-bb8f-017e81d789c4 8dd22e3e-ec18-4a63-83e3-92641c85ceb2 da11fedf-cdb9-4bf5-a9d6-d0b2120d7cda 11e8a8a4-daee-42c3-8f76-05a52558ef58 0fee8798-e807-4f48-a8cc-88d8babf6b7d 4815c70f-389b-4be5-8db4-6f2e1976f277 d451ab14-4cc9-4784-b013-e539fec66133 ebab5dac-da33-4aa1-8593-7750c1f06452 9b91449c-63d9-4fd8-b2c4-57ee44760330 34aec4bb-ce56-4e41-9294-bdfa00b4ddd7 8d59d28a-4d16-4873-9def-fdc007b196ec 0a266e52-bd26-47fb-9228-2c3c7281dc68 e4ad2826-ec0c-4c9d-8ae7-35cb2890e836 a9d762c6-8ba7-4b2f-971e-417004cf5fcc 690bf412-545f-4454-81b0-cb764a6fc629 c9c87621-b473-4480-a293-2fae26dc182b 5ab3e99b-8cee-4985-9033-7b4a7a852c95 e2640467-0496-44c1-b8b2-5cbaf922776b 3d9944a5-90ff-4749-b8c0-2a9010c829f1 65bac640-2bd8-475e-8ca0-2da7da8b974e 1c865fea-ab52-42af-bd44-21a9fc2eb46e 63d2ac20-1bc3-4dc4-bd24-a0d49c988f4d c599b657-3f80-4f87-8563-a47b993d6538 a5aaebb7-e12b-4663-9bf4-29db46958ae0 c23e0d18-5380-4505-872d-2ba82f850464 ee8c70e8-d3f9-473a-b3eb-81f8c9c8059e d9838d50-de9e-4e7f-81b3-0b828b9e81fa 4d77a3ad-31f4-47ab-9b73-4f27ff46cfaa f0ecd583-9d91-404f-b8f7-ecb04bc9e0a3 0d614c65-863b-4186-b01c-84487d5c0582 ad77b532-15bc-4aee-adfe-e80ef74652c0 71e11302-809d-4f6e-a544-15a55cf52780 b6afd838-ec74-46d5-b3eb-3c1d63dbc700 2be03a8c-3659-4e35-8acd-e9c75a0c2995 ae443e5f-99fb-42de-8229-288f148adfd8 015d9091-404f-4a09-977e-6daace676566 8bafcc1a-c806-4c0c-8a2c-67fdf442e16a 537b190e-b3a3-44bd-8ff5-2e61eb879953 7d9e46c7-efb3-437a-9a69-512d972f25c7 fc347c32-1b7f-4817-ad4e-9c65e5d10d69 42151d07-a5e9-42de-ab6b-04c6f779c2ea 5afcd8bc-8edd-4c02-ae50-5369791cc164 3367f4a9-1af4-495f-a4ee-74f43940d5dd 06a85686-7210-4ba7-95c7-7eff84fa540a 0add511f-102e-4014-b5c0-5c6deb6b7386 1b05e1a7-2c5f-4739-8dea-f81c01de920d 15c865c5-7d4f-4a27-9474-34c9ffd2a8ed 9403d037-0126-49bc-ab75-d5c236d62b55 3e78d200-edb7-4b25-81f2-6d7b55b9d273 9774ee7d-6264-4649-a5ee-8c55318be363 7807b842-6370-48ae-b34c-42b6ba8e9874 2c25d77f-d258-48b5-89d7-ab5dfbd33b70 2c37750c-537f-4f7c-9bff-c23b016a2a67 9a9cc8d9-7213-482f-a0e7-b2251d2cbde5 40789361-6ad5-4fa1-a99f-b4789fac0063 f8700830-c971-4508-9068-dbb61bdca605 a19c7068-69a5-436b-b3e1-00715d61f412 0cf1d7a1-0693-477f-9297-efdb101d9ad3 2ebfcec9-9606-4e5a-9dac-161ef049e61c 3481ff7c-213c-4936-83c3-5f5d4b78efb6 3c42373e-871e-4f6f-8bcb-0e41a77ba935 b15c2c2c-2e6e-4396-a2a3-f0bada187748 65151b8c-43c3-44ca-b7c7-35fcb986eef7 d5f12ab2-0a6b-433a-bca5-f79587392ae7 5fe4c48b-20e8-44e0-9e9a-515caaccacfd 4b32c137-178d-4eb8-993b-efb08f2f0048 4fb1a5ec-149f-4d31-ab34-0dafdc9e7ff4 6d4803ce-063b-41c3-b861-3e7f362768db 12b585d1-474c-41ed-b891-dfc57501d317 38186af3-2416-4160-b03d-c726d5ba8691 f4852b45-88de-4824-9596-066f389d0361 b83da90d-e971-4c13-8853-4fb2334dab63 ea17c426-f401-4b99-8183-37a55cb6cf9f 67bb6c40-1cd5-43c8-b2c5-de7e90667ddd 6bf91e62-0cb9-4bbb-9cf8-46e8618359f7 fbc75a3a-5dbe-427f-b1ec-12882eb01e49 50622809-4c56-4fd3-91c2-160d31e12606 a7d1cce8-6079-4afc-835d-2e21eb30529d bb1dc7ac-2a9d-4b94-8ae6-7f548f94044c f2a01582-e04d-4082-b868-7aab081070c7 a812e714-ee2f-4c5d-b31d-caaa8f1f9a0f cc3c9568-a78e-49d3-bccb-0dec18187444 96630398-6bf8-494a-9e2d-a8955bfa08de 770ac3a2-7f1a-47c4-a186-86ee65225dcc b7b86f6c-9aa9-4e38-ad43-363511991fdd d50d274a-7e00-4ba4-ac03-f4feee25a096 dd72a826-7985-436f-8fb3-525e51d7ec04 61d9504f-e8f4-49f3-813f-92bc122cf6e5 f1a73c27-ebd3-4b68-80ee-b4c279f97113 4efc7460-d4f7-4fd3-9c4e-08ffb3131974 a0c4d8a3-0caf-42ff-9adc-b7710592900d dedbb212-f7d7-4aec-bc90-1bd1364ef3bb 775d269c-b855-4ff1-8013-9a757644ace0 e20cb014-2856-421f-8404-5861c71f1676 bea66b22-a116-44c6-a178-bacfa40e43c5 a7ca5e55-3ae4-4285-9068-ad10e7195aa3 e7400354-c4c3-4ddf-bead-bb1de4bd344f 413b510c-b43a-48fd-ac1b-ab8576a3e53a 7a4e82a7-27a8-4f84-8c2e-fd747955bc70 9e858143-8990-43cc-8ff3-022ce45d5b00 8c67b0ae-7602-441f-be32-762367a32503 3652e76f-54da-480c-8e0f-a75b4ce8f160 8de38128-403a-42cc-b51e-74eb18743ac2 e9ed59fb-5f78-4fe2-bf3a-cbc2cbf91b40 15b79bfb-ae85-4f54-9acd-f82b922139a8 d2bc2290-e5cf-42ea-8374-4dabfde0d892 17056904-aca5-4229-89cb-050936340bfb 0183f5fc-10dd-42d1-98e3-95f91fbe83ce e39b1caf-288b-47e3-acd4-a5030800178a ead77d74-6614-4b80-931f-9a7b9821de96 523f9acb-b9e3-4297-8753-077e883d5b62 0a3bd084-71da-4bf3-92cc-2ec54ef25d29 9e6ef062-3e00-40d2-8a7f-7add21a14742 661cbe06-88af-4e57-98ea-decf9a5f3543 573d62ac-e74c-46ba-aebd-ac75f4f104e3 6f9f6795-06c6-4dea-b684-954c533ef707 61b7cf7e-a8e8-41f1-b459-0adcf4c8a604 af10dfa6-64af-44a5-9cfb-607e46337b7b 5673d7a5-8562-4673-98be-9908da0fc949 cff062ce-3ccb-416d-b78a-e3c7da2683c8 ea1fbfa0-2203-40e3-90ba-152b6b711123 7429dc0b-b21a-46c0-9beb-c03a4f40f8a3 723cfed0-76bc-494b-bf1e-6169f15bcd3b 3055a7d9-f57d-4248-90d9-e0e9d613c7c5 9b41a3e8-3b74-41f3-9adb-9d9224433324 0179df9e-8380-4818-b749-4229175f9ecc e8694c65-7327-4560-adab-65b2d3503661 49f84515-8b6c-4917-a33e-9737cc9bc236 f29bb833-8290-462c-8808-d3166ac9c6af 5f1ee311-163e-444f-b370-7b792dd32a3f 75c9cb5b-bc37-43bb-83d2-83163a6fb061 717d6698-11ab-488c-aad6-1b918bc7d77b d1e8673d-180f-47b7-9eef-ec9e197dc00c 7c8252a4-6dd0-493b-b693-1e5c48baef4b 45635009-d918-4e6b-9ae5-068f3156ef1e ff98f5fe-01fc-448e-93da-0b899fd82c33 e28664da-cff5-45b9-8f00-ebc107f2e4a6 f1156c11-2cdc-4dab-a80e-b19887d548a8 35d151f2-ff6d-452e-af41-02b29533d1da 508163db-1027-4b34-89d9-47619ab8f4af 19016524-0597-4e0b-9046-a19648a8dcbc bd07d75c-4ca4-4f11-934b-c63dd67a8fc7 0dea3003-41fa-4c20-ac89-edc87b4d693e 77d996bd-32a2-401f-9389-d276e94fe7c6 6aa39131-0af4-4bfc-8152-87821d5dcd57 e2665d63-e48b-4d15-a255-78903f08de5f 4242b885-4c81-4a64-8659-81bbb6e887d5 f73caf44-c5d9-44bb-aa0c-7d61acc0a1d3 f6eb43dc-7702-47a2-a99b-dbe20b4cc760 2d037d53-2102-4cec-b8af-fe8eccc0b266 10775c58-83b5-4834-9954-8204760127e3 fb8d7e35-77da-4426-9e9f-5ae7db9f1d0c 319cca35-50b6-4766-b13c-3c34d721c6e2 976fb015-5b5e-413c-8a23-db8bbe5d1cf1 88aaa0ff-f9b1-4bd8-a5c1-df9fbccc26f1 f2508870-421c-4178-a8a3-356f64858697 4ad1f471-86d6-439e-9cb1-0e41c98f15f0 1e26e4f8-74e0-42af-b006-eaf6a65b95fb a866b8cc-b773-4aa5-9868-f23164b6f265 4a826a79-d366-4bee-8b56-2a687e4c18a2 abe1751b-0051-4bb5-9008-9f46b80a3f90 5f56744f-4614-4c65-b14a-5973464035f8 3a2b6e94-d2bd-480a-9b91-f6ea84c0f672 c394908c-7ebe-43b2-896c-36b9a5397200 441c3c34-2dbf-42ef-9618-b8144c5af949 54b780f2-ba9e-40ad-afb0-d05ce1717633 8d318da0-17f1-466a-870e-9199c6ac848b 0da29a09-b8e3-4993-9e34-a40be7730a83 c76f0c7b-acb3-4fd1-835f-a2588c084339 a93731ea-f2aa-46a8-8330-fcf7fc568931 5c48f11e-9dd7-4f9f-8fa9-84dad326b10b 48c66a84-d181-4b64-9afd-e60e459af0fd eb76fa4d-32d2-4d84-b71b-5d8d94a1a184 1d6e9154-69e3-418e-b3ed-8e473ed94ce0 2441657d-9ac0-4b7d-ad10-c8b91c05c996 89ac1d6b-ca1e-4a42-b087-f40401639a0b 3c88e97f-b4ac-4ffd-b9b5-7445de5eed06 127cb661-85ed-4e4b-ae29-34d45b213150 b437a741-9c97-451e-9084-2461d9c046ef e4107799-f9b4-418c-8e39-5df1f48b797d 88a7d69d-ec9e-4b50-a965-763796b1c7d4 913ca546-e618-4b0e-858c-c69e3b9eccdf f6147b4c-f91f-46b9-8b5f-d87737b1cff2 fca4fcfa-4c32-41bd-acc7-9e399e3a1e89 e1c84574-cea5-40e3-83ed-f670761b29a8 3325c684-c0d5-4c3b-8c37-f9f585aeb6f0 fa4c5641-93b4-43c0-97dd-4f7229d509d4 9c28f943-87b8-4878-a83e-32a0776ff493 d088602b-cec5-45ff-9c4e-876bdc14dfb0 d634dab2-c051-4963-8e31-4bb29a9f7c35 ae0fff12-86d9-42fa-bfaf-cbe0a1929850 b71a3b7d-9f3f-493d-b6c2-a7c3b5ef23b4 88fc3718-1a95-42e2-b0fe-0b0b99120c81 4c7ab2af-c84d-46c5-a05e-da1d4077c49a 1f71d0b7-d259-4e1c-924e-1572557c8b32 538a9dc8-56b7-4c9d-a258-ee04dffdf7e9 17486604-8e4a-4a95-887e-0ede183d7ac5 2ca32c3e-2970-4b2d-97e5-8c187ef1f5e9 19ed7952-82dc-47b2-b5cd-aaa9375b41dc 270970b1-3402-42e8-b963-c709a98f4a86 f114d879-c807-4c28-b274-971f1a5457ee 8cd6ccb5-fa94-433e-abc6-cd424adc4f06 446def83-bb78-4f3e-8a0b-a33f3834e175 6e11213e-b18d-47e9-95a0-941bb6c5eba2 52e4d76e-0e2a-4a3d-a115-498a15b1cc1f 53334577-81a6-45af-9220-4058311adeca 9c58d786-795d-4ba0-b670-fe89eb342828 f6002eb5-1ac1-4698-84fc-b9c431ff799f 3720d695-3538-4624-9d1f-094e5af435a6 af0230c1-6839-4688-9b1e-71f64642e418 a1a2cfc6-1848-4692-9983-784cb001d2e0 be864e0b-dfb8-45b5-9427-a7950b736178 f61bdfd2-9838-4b08-bab7-ed5345e85906 105b3a39-8cd2-41d7-ae85-6e4698b71de5 317ba704-6fc8-47fc-9593-9b57c71cca17 ba05813f-be01-4a3f-84df-98b0dc0761c1 674067fe-9d97-4aaa-ad50-41d07c496df6 1a7638cc-2a33-4980-b76e-f694273bc216 e7bf896f-693b-4c34-a274-1948547e247a 06adcc3c-20da-4d79-ad44-145d2007d88d 6e093359-7c76-486e-b0b4-ee36a43cf5e7 ed067ad9-52a5-4194-af71-7909b99a1a0e 7281e824-4842-45e8-bc36-c80189effd0e aca0b5a1-48c5-4b86-898b-199ae17b07f9 1cc45f04-f217-4f7e-b1e9-525ba0085d02 88773420-b790-412a-b9b8-0df0f03b1e2e 278b496d-e6ec-4115-bb08-242b6d7002e7 029875ba-4807-4ba3-bfe0-3e126afe62bf b5bd0d22-ce7f-4b08-93bd-add5192b9e2c 7e2412d8-6f76-46ed-8188-5cae1465ddec 91ec79f9-485a-464e-b186-836914f3cb6e 7c228bd5-ac8a-4678-a9a0-67bc2de479a9 c38c4aeb-8470-415f-9438-9d777ec9a623 f47d25f0-edc2-477b-bc34-a392514c2b15 61753f87-7b58-47c4-8b0b-478f4b313386 bdcfef9c-9c55-4ba8-b7a2-4ab716823675 d879c524-6071-48b8-9bf2-8310a897e0f4 0030c6fb-eafc-4f2a-97f9-dac0afccfb7a 20c6b137-e946-4c93-ab4a-96f6f366e48a be8572f0-e460-4b29-9be9-251e414f449c 1f872ea0-c10d-413e-964a-11e39746e557 0ebc0581-ae20-4303-b880-55c574e2e292 287d2703-d548-4625-bf44-56dab93ca351 04c1cb91-cf64-4a1a-9384-afbf94f32c0b 351aa4e6-6011-43a4-aaa5-c12665712c55 d00eb972-44a3-423c-8aa5-06f621d2bceb 3c50046e-45de-4e0f-9984-9e20b04cff18 b11dc082-311e-4976-b2ca-6566edd96bcc e9582a6e-c523-4162-a795-e05d5d3da429 a0506313-c1c7-46e9-8e9e-39c1148396a8 afed4d61-043c-44df-b9dd-bbcd9acd5550 b90a0671-a199-43aa-87a6-559a1850854e 4bfe0b55-6e86-4d9e-ab9a-8663fd6694ef c13afccb-2ed7-4ba8-988f-6c98cf65bcff 66ffdf0d-ad41-453a-ab06-6fe81e5a01ba 83c20c84-3cb8-460e-b54e-2b224e5b963b 81108f33-00c1-4f99-bfa6-d25eb76fb850 ca882928-36b4-4343-b9dc-61e1ac9f6a84 743a44e2-6f53-42a6-bfc6-6fe3c68cf127 0d690253-9d38-47e8-a7d4-3eaa57d89c3c 3d89a50f-f4cf-4cf8-9a84-6f6b4f24873b 443669ec-02df-4c82-8e27-14ca15a84167 2e2b8fa7-dee8-494e-8c08-9544285d7ad5 3b7a313e-f723-4700-bedc-3b9b40c38572 1423cc75-503e-499b-8120-8b32a8fcb3da f30e9f69-0e21-4e03-be66-b74a5cf9e56f 79ba80b5-3e7e-4f40-afff-b55cf67e6a1d d60d4630-5498-4f06-9e9e-2dbc364ed32b b7c353d1-3e3e-4752-bd64-eefaa5eb712f e2d165fa-5574-41f8-9187-1496daee2842 6fb146d5-57d0-499a-9a93-933abae59a7a daeea550-9838-4581-af71-b1161d37a1ca 938f3f84-d6b5-422c-b1e7-74dbb7ba03ea 2500c600-4e9a-4d63-81fd-27ef392795cb 46b6810e-422e-4fad-b71f-b76fe25cddf1 537b82fd-0ac3-4eb3-9bd3-73fc6a4fd1e2 9a524ca2-d3f7-4001-b19c-49a4a6a3823c 4e40b655-9acd-4c6c-b4e0-58a26322b8bc 3ba875e9-ce21-4aa1-a494-864f1e34a45f 6ebe690d-c811-46ab-8950-242e3cb5362b 89f44c32-58de-4bbe-bcb0-cdbc52e314f5 f564ba6e-b9cb-4159-9ea7-0b25a96f4d66 91358b78-81ff-4566-80fb-304f54d3b8ec 59597b1c-167b-4245-b168-c091b0840d49 9b35ef06-96af-4642-8c1b-3c032b5c39ab 978fbd58-a4ee-4ec2-89ae-3ea888d5d86c c052aca5-1a64-4cb1-bbff-484726a7e25f b018dd7c-c6e2-4712-9803-b2ec628eb927 4ada8d3b-6736-483b-ab90-469c5b06e8cb b9190008-cefe-454e-bd46-c914b3568c99 9d65ec32-a2ac-4250-b4ea-3e3e652d818f 580b79c0-33a6-4020-acfe-c238ea87c097 6b2e9677-422d-4acc-af2d-db0700b33147 661aebff-5fe0-4986-8f27-56ba281b28ba 645641f3-8883-4e1e-bf0e-e5e2c9023f5c d986fe38-4c35-49db-8218-7921a603b22b 19ed9552-6d5c-4f81-88c5-31bfcdfefa0d fedf53ef-1c97-4b7f-b47c-57da5b11a2c9 9b5f0c1d-9754-4dd9-ab51-1581542c7271 7f5e762b-981b-4ebe-bf97-6c6deb6d6746 9e494bab-1d89-459d-9bf4-15aa7b589941 9d086583-c884-49bd-b9af-59729db36511 226c0cd7-4dd7-47ce-a248-e678d0eaa27f df4fa811-28ac-4529-b809-3be8f7e3f9b3 a9537412-d7c2-4d29-ad15-a749682c6511 8033d9ee-977e-4276-ba15-e981c8ea66f9 47659e01-299e-4328-9280-50f24448f597 c7f3bd6b-2ba8-4118-8eaf-f65732232fbe 56c87a42-f07a-42c4-818a-5778b9b500d7 2bbcf241-bfa5-4406-ad2f-653184205f73 220a86b5-cabf-4002-94ae-a6edcee1d8da 0a4c84ba-e1aa-4940-b1bc-6460a2016ff2 6058b52f-5e72-4720-abde-78025c0e5ad8 a5e942bf-311f-4dbb-8cb6-e93310095826 0420244b-b666-49eb-ba74-10952221047c 9966b8d4-fddc-4665-b9e3-c93aeaafb1a1 af8acbe7-064a-45ad-a898-7987fa995f37 15db3c33-499d-47b2-9863-e11d0b793c3d 3cb24f6e-9449-4d09-bc86-069cfd95a64d 44c4f631-cc48-4118-a63f-b100a467f597 b7162eb3-c4e2-4fc6-ba99-87bb2bd75d3d b3c053fb-e974-4898-aed1-efc50e5770ab c925e60f-8f46-4902-922b-fe64a6741043 76dbd585-1a42-4fed-92e4-3359ac6624ed e6e12000-6cd5-456f-8b63-1f3c8a3c4c70 67e5dcb8-74d8-4f76-a288-9990b7880e01 22cf0efb-97b3-40b4-81ec-ba87a0388fa1 807fb196-1872-4409-b905-6a72ecb001ac e55bc903-6594-4d72-9a45-b5226dc7fe85 01e31ec5-60fb-4d70-9d86-8adf3feb9f3a 3b7593fd-cfcf-4fcf-a30f-f857ba21b2f1 f7e030dc-2cb9-4ded-a4e7-c20b274b77b7 21e53102-a100-45bd-8114-710264f6a3f1 9902b287-5cf7-483a-8c38-a8be210d2964 2b78c112-1792-4ffc-a3bb-deb52ef14390 c786c820-83c6-4d3b-8f4d-06ea1f5489ab 5f12ef53-d43d-4291-844a-1cbdfd2117e6 c4799633-72a8-4cf0-af5c-c17b84e568c3 1c5ebbf3-6120-4368-85a2-640b601812fa bc17a2cd-8c75-4adf-99a2-e2fceae49fe8 e730aa58-773a-4f9b-8d98-2ad6a20b43f3 cfde0a27-567a-44e3-bd02-787ba27ee8b0 53be2aa1-1c2c-41a4-affc-60861c811a1f c298da5b-d082-47d8-81e5-d8e4542611e7 929206dc-6495-41a0-ae72-a0205be1d63e 795e12bc-8841-430e-ac89-3647b9b19da0 93a88fbd-9d5b-4431-bd0f-96d542cade25 a4526bf8-65af-424b-8338-c6b9d73ba611 c5970ae8-b657-4199-80d3-e5e428f0b219 01bb6888-cec6-4043-aaf2-50e301bcd749 702e65ef-2835-4260-9079-ba64f25f9bb6 9a0c093b-4908-4726-a2eb-0960d95a7e2a 404f55de-ed06-4ce2-9fc2-dc60b1c978b3 a8ba29b8-96f4-439a-98cb-4f2314d4bd82 0baaac30-9a44-4e12-ad1f-d9a63f26ae84 e3ead61c-dd52-44cc-89d9-b71ad3bfc2e1 257d2cc2-bbcd-4102-9e88-2afaa3d5e7cb 2b85cd01-f9a7-4df7-af18-3edb1ab05ed3 7b40a698-fe27-4898-b6ba-94ed25fdc664 c3ea2eab-02f0-42ff-ba94-3f80080d499b d75f5232-1345-48ff-a87d-11b6879b099f 8d0175db-6146-45a3-ab47-c5374646e03e b4baa42f-a6af-43d3-9260-f71eab6107ab 9055432a-5621-46d5-a410-dd886b294513 be09903b-964a-4b9c-978f-8cd95f9a4f9f 0f9afc95-ba53-4064-85a9-2d15e9e22cc3 aeadc368-6fbe-475b-be8a-437ea7a9e223 c50702fd-9038-43e3-9d92-f5f501458117 a80f4b97-617e-48d5-b64c-170b53b036c1 f0debcce-66c8-4779-a593-ba0d5a829b15 ef644722-7c9f-462c-a71f-7a8f72f6c6b2 dee11386-ad8b-4e9b-96bc-950afa4b39b7 d51549e7-8fa1-4f03-aea0-cf6ee48d7695 0d25015c-ba61-4c41-9668-7f52c528d09a 41254e53-143a-48cc-9ddc-926c154603f7 cea8f40a-a363-4613-b2bf-37b37eccd4a8 dde3d0ac-7085-4cfd-abcf-888293a2bee4 55d723a2-4802-468b-a092-d5d01b677439 a0295f49-c06d-468d-bac2-119e2b6b8c98 e0714f61-7579-4146-b507-a9cd109b19c7 cedc7d0d-9e00-400c-869a-4994a27c73aa 9ea083c6-d651-4c40-ad46-42dedc2cc485 81818597-2bff-42d9-af25-fc0a6857545d b72557dc-83f4-4c3a-8a35-c326b130dbca 3f2c40cf-7da2-4ce6-9ab9-45ffcabb1984 662c2166-d303-4ebe-b011-91bcf96ac99c b0201919-c5fd-409f-9eed-ca57124fe014 a99d4e0a-c0c4-4136-8415-4992f8e511df e7120aa4-d3be-4f94-bb06-39a2a79943b6 dcfea967-9fe5-45be-aafd-0b7aeb2e4507 504d9d72-e248-4e65-8abb-acc302227c89 e8768124-3dd2-420e-978a-b71ff5671bb0 b1fed36a-ee20-45fd-8714-98907e99e331 00681785-ddc8-43a7-822e-ac6b8ffa2738 91481aca-459c-4f06-ac2f-be24d50d5b0e 57575e2b-2635-4c7c-ad43-9a63fffeaca6 55d505d2-1bbd-4032-91cf-84d822905d0c 03f0bf3f-233a-4971-b5b6-9fff023e8535 5e997a14-86ba-48c3-988e-79a1e7d436f3 bb1adefb-ce9b-4174-9322-568ddaac202b 341c6c98-d830-4401-8050-05cf7e3dd65a b923a8c3-4c9a-40fa-9ffe-d2312c835463 bd3ad311-a501-4a94-a313-d58727b87013 684fcf44-5024-4b9f-90dc-38e3f93c45e7 f2de2da9-659c-4826-8bf3-7052fcadd9f6 f58ed9f3-ef81-4263-9de6-232996ec8e6d 3aa9695c-578a-469c-94b7-8d378c8e4a83 2f56d104-07d2-4e99-a2b7-3ca9d44fc63e 61976fb7-2adf-4068-8995-dfe9e869f081 fa3a686f-e116-4855-9241-42ea1df7bb41 1035d301-8a76-4319-963b-7418b55e2372 9bcd5382-2cb5-4104-be87-a43d062e6a6b d63aedf0-6d95-446d-9f15-0313abe51e5b 72db9247-6f91-433c-aa13-70911920b4f2 30f51c59-9708-4d97-9531-4b31c0bc7921 35a72947-d8eb-4fd6-9a9a-575b8061e8c8 8e21dd20-b1f5-4bc4-85f3-b80a21e93c40 be0bcd14-b009-4fda-9c93-4a2112d25bdb e5aedb9a-811b-483a-aaea-c21b88d06d51 2ef488d1-8554-4bff-b241-0fd0fc9e2035 dfb3c4e6-47f0-4655-b352-8bb6b5240b98 4f28a8a8-ac16-4a3b-8df9-e696a83ce4ef 466b794c-af9c-40d7-a84c-796da371f5b3 6a45618b-11c4-4c57-bcf9-bbbadc7ca2ae 1236f9cb-4496-4337-b6ff-907ad598e279 945fc8cd-67e2-4ef1-89f3-8de3c515b53e 6a95bc30-3438-4cfd-8336-c12883fff36d b5642906-d344-4f17-b4a6-4a0982ae3b1a 14dd4b02-cb43-494a-a74f-3fc77e00ff5c 34c5f0f8-2d1c-42be-aa8b-decdd687f1ab 6336d4f0-292b-4874-b8f1-3148bdc52c23 94650a46-38af-42a5-b772-bdfafb3771a2 2740786b-7939-4fd5-b12a-3879a10c4738 bf436bc7-d3f5-4c67-af12-c76c3f059f6c aaa724a1-185f-4510-b6bf-5092aa85b601 0fd46db6-aa6e-4381-9b38-f79064700cfb 042e06ad-b6d7-4cdd-a4af-e67e10b29291 37f359ce-a572-4e47-8599-973ff3f6d6be d55562d7-0363-45b2-a1d4-0e3a53ef59aa 007c7647-0895-4285-ba02-0228b4a6df10 82223ee8-e0aa-4f89-9eb0-1650321bf454 dd7bdced-6e3d-4570-a0eb-6c0d6d9ff163 4907f433-19a7-4711-bed1-6d35b231888e 2f8cc418-22fe-48dd-8b9d-904f3d0f65fe 0170de89-c515-4b8e-be3d-e070b7d341e5 487e200d-9b2c-43eb-b290-ac672f887b69 bceadc14-596b-4b55-baec-a11e9047cf02 9045fa9a-010a-4def-ab81-7bd95f80c207 2aff22b7-688e-4b29-87a4-a32cabd0a40e 51fbef43-4ab1-4c33-8eb9-c94f3eb31f29 014944ef-9f0d-44a7-8a9d-995758d53fed 38025f10-de92-4c96-a36b-64afc372ac87 4a2b6ea9-13f7-481c-89bf-a66eabf90467 663ac533-d22b-46a3-af6b-ebc5b973f118 6f28ee79-4956-48cd-a102-5306b0b205c8 1f96042c-9799-416a-93d8-97b4170a4591 7869c6b0-5df9-470e-b956-b790378e559c 7f282954-350b-4c0f-8b24-37a2f6b2fe36 6c24192a-8eea-4f66-8764-204d2018fff7 2eea80d9-2c09-411a-8c41-4d2592d572cc 8efa969f-9db0-4465-9482-5ad679121b56 1c23c416-cedb-4bd0-a0b2-92e6a2239f1b edfd0ded-ee4f-44f6-988c-f76fb5e47263 8dda566a-f12a-422b-951b-cdce7ebaad17 315e26fe-7deb-4efc-b99a-a99bf9b423a5 27421b0e-06ca-4186-bfb5-f288694f3c6e a6ad2179-3035-4205-8099-517f83eb710b f0065b58-73b0-441e-8380-5470830413ea 22464cc7-2282-433b-93ee-0440a5024f08 6f085384-1db0-4878-93a3-86172fb2e57f 9bb51746-9c2d-44d1-92d1-1f362b262794 792bcb0e-c82f-4e27-b15d-c1b5f2e4d3c2 e870fa52-d318-493b-8e16-a20255a5f3d6 ddf54241-a8d7-4843-95a8-2de204b54043 29a54996-2060-465d-9634-f6ac5d18fce1 4faf0487-58f1-48f8-80a4-c4a6f9fb9be1 41e7bf21-d304-4f07-8cbe-32efd04a23f2 54e1e639-33bd-4121-9dcd-4f9c5e6fe8a5 3cc030c3-ecb0-4794-a172-2953f82559bb b95ae0d9-b1b4-4134-b11a-8ef068641ba0 00aeaa4c-d8ea-44d5-ae6c-02c8d4d031e8 b0c4280b-70dc-45b4-b22f-27b75450170c 6fa42c1e-bd2c-41b2-94da-1d37abb630f9 8ec4d528-478c-47e1-9bc6-aa2dfc516e1f a5dbd025-88f7-43b4-aa42-44d1b5895650 2f8e1ee5-2934-4705-a0e2-ebe4405e6358 a10f1893-5143-46b7-9d76-3819a3fdf50d 1190dbd0-d67d-4e8f-bea1-4990811b706d 73dec457-704f-4d89-af50-e293fd3803d5 93662109-b679-4a3a-820f-dd4c4ef3f16f c55db99d-a316-4f95-850f-1311d7b75c48 fc256450-aea3-4dec-a50b-83ef74fe9495 ec2fe04a-2343-40a5-84ea-ed48332d4711 555d6937-febb-4e98-8f8f-d8063a36a094 edf574cc-76b8-40a9-8e5e-ea48cc5cec2b 3d5ab78b-6f91-48cf-b943-b411d8a15454 64853eb7-7b34-41d4-a31e-34a877c4e8eb 3f00367d-c5fe-44b3-92a4-b0f32c79ded1 fb8375f5-1884-4ad7-bdac-18a5bb81efdf 11b28203-b247-4c4c-9958-054510b7a820 96d1f6de-682f-4795-8f81-09fa8d24dc3a e1da0a35-97e7-4473-b20c-3f92934cb306 8775546c-c8c5-45a1-8e18-3cf27210b86b bb393b57-d7fb-4180-9f58-97da5548f7db 8e2f4aa7-94a1-47ab-ab86-8843446b0488 a04320dc-9129-4753-bda6-ed778147ca0f 8620593f-473e-42b3-b469-bfc65dbb18d8 31e14805-f5e9-4a6b-895a-6c03978231d8 ec1260c4-37b8-40b1-9771-d125608f17ae 2ea60368-5304-47cb-b63f-109048bf4b18 a7b10b53-622c-4a6d-a5fc-dda7828ba40f 6f227ae8-40f5-455d-8580-35eaf67d6e68 49e52080-0298-46d4-b90e-aad6d50b4d8c 3d8a6860-5777-4a27-8a7e-bc28633ecce3 e313e436-069b-4f00-bf6c-f4e52e80ac1c 3b10e941-1b72-405f-ad8e-6fa5f781bf56 859331b5-e443-4358-a046-576dfc7e3157 d48b5a12-c980-432d-9e46-31b316027018 82e69c9a-480a-4d93-aeec-2e76fc622fd1 e59185c6-f257-4505-a01c-4b5ee4bbd666 e6698673-681e-44bd-8d88-bd9fe7424746 757525cf-9628-4a4e-acb1-196753d593eb 3220b981-4a20-44f2-bb85-3ff80d343094 0e178e85-48ac-4a1a-ad01-e8bebb5d887a b9e66191-30e3-4ad8-8b4d-2fc3b10f77c7 75ed78ca-57ca-4056-a454-6ee5c91d358d 7263d82e-c675-468a-87eb-fa0340f645ae 938221d6-12c9-4d21-a2a9-be3515007534 7e3a0003-8e04-4719-8858-aeed49d8ec70 0bbf7ce6-d4ae-44ee-8251-a94c170eb599 a5426a0d-ea6e-46e4-9a2c-beb631f4476e 729774ec-4c03-4487-910d-1692e859c0b1 dc4a60d5-8a05-4d19-b687-1dcfdd081a4f 274d0880-46d8-408f-8cfa-37486e3cf6b2 94fc7388-ab8d-4c2e-9ef7-d8ccf0cbe5af 370f7a8d-eb99-4e8f-a416-2d871b61705d e6dfe6aa-4da0-4e46-817c-7313c31db16e 1a3d3017-700b-47dc-8c03-eb7f4b808488 ae4e85a0-4201-49ae-ac14-aa9673a69cf2 232d7f17-6206-45ee-8236-18642e53c69f 95b05ccf-8039-4b0d-827c-a1d90373a8b6 5062f192-5b1f-4c21-acbe-53f696870f34 2c8d0c01-4d43-40bf-a491-a9eb8a767f66 d552c15b-b397-4b83-9c4a-0d6f4d2b1e16 2eff4229-a9b6-402d-b682-67a28d9d10ae a61cbe51-0034-4e30-bcde-3e9a07acf532 e7b78ff5-16ad-4375-9407-e6938e634c28 5654c78d-e4fc-4292-878c-4730e732ddad ef19185a-0de8-4770-84b3-7a2c011d3135 9a952b98-80c2-4154-a45d-e7a8abefcc75 02d3e630-0da0-4346-a280-990e4405c6d9 3295a258-cd6f-4f1b-954f-62bf9607d101 134dad8c-8035-4ba2-a4e2-d5c6a4dbddeb 921dbc9c-57cf-4a92-85dc-110e06aa411b 7ae28711-35ee-4bc4-8772-1054ab882387 718fe67c-4b47-4e79-8237-f12e580f6cc2 b8bf6d45-a91f-408f-84eb-358a409b5eb2 cdc38e5e-3f54-48b0-af48-ffa6dfa9ab59 a1ae5c4d-65a8-4ca1-80ef-ffb83809c702 81beb19f-c218-44a5-bbd0-6a0d767801d6 2b43fbf4-9196-4561-9139-eedab5123093 fdb7cc31-a7fa-4bab-8f8e-3b07dce77062 767aed96-c3e4-40cd-acb4-e9f7f58f8d2c 19d19a29-d610-4153-bac9-a1d0b3aa358d c0cd8456-a819-40f5-8d6b-3b9f3904d73d bb3fb59d-24b6-442d-a701-f54caf147633 572de814-5558-44fb-908a-cf7f1eb971ab 5f282e23-e596-4a32-9603-0a723e163560 b7017fd5-5248-4733-b490-40392c9e95d1 b6c0c88e-2684-4f05-aa91-4d09e9f06c79 92873870-5844-46af-868a-dd5b8ea8094d 146a0fe0-e47b-4885-a3b2-57f6bb5a2707 f600898c-0d8f-47d9-af13-950ea5344995 0c68438f-2a8b-4e83-be92-6819110d12a2 02ad3025-51a2-4fb7-8f9a-15e276476651 c7348a98-f8c5-4bc2-9a73-673278ab3d1a 0b6c6f28-f5d0-457b-a675-66323dcf27f7 7878a58c-75d3-4e7c-85fe-f70758c95da7 1b5c467e-54e0-4ca9-a722-be91567f0e9f ed62e8a0-3e47-4ed0-b6d6-0a2d92bc3050 cc355b66-9419-4fa4-b5d3-9f4fdae81b60 600d1127-9bc8-4c8b-8cb0-bdbef7422c99 8866cc94-2ad9-42ec-bdfd-6ee66a8f2c3a f0e466be-6937-40f7-a834-e3cabc1edfb4 bf59abf1-833a-44e2-bbbf-3918d374635b 44c5a205-f02f-4d35-b6d7-a2c0f4e006bc 4bdfd6de-21ce-41d6-a3fc-753120e2e237 55a621bf-59ec-4482-98cd-9c6029602518 2f1dd39f-7a63-4e57-9d40-dcbbf6044594 9f51cc8f-9201-4e90-84c8-c0affc809e64 869b03ff-9aba-4a03-828b-49e5f7890ef3 b697ba61-fdca-4a7f-98f6-80de0a10266f ac591268-6802-40ba-9870-8f0cf29bd683 d20fdb36-d353-4da5-808e-e284ff0861ac 30f92109-b88c-41c4-ade9-da858f933afd da5006a0-61e6-448f-9cac-04ec2f1e7e45 4f09dcaf-f205-4d23-a4b5-a0e971d90590 a4868b70-0cfd-4d37-9fac-b257f3e8c61a 738c1ee3-8731-429b-9c63-0b06bb3a6b9d d7177eef-32c2-4327-aa00-510601b0f954 daa8972e-8876-47d6-a9cd-8cdd7b7d419d bef91594-876b-4287-9c51-12577cae0510 06f9a0cb-78ad-4b9f-9ed5-41432c698f8d a868cb44-5f58-489f-8434-bf3bbb988c60 7f0d9921-404f-4225-a92f-f4806e27b2db 0d7379eb-0fbe-4e1c-8d5a-8ea592cb36eb c275a81b-ca5d-4ac8-a476-4e266042a6bc 2da5d802-f075-40a6-aa0c-a5f86ed95823 44c8d7ea-e797-4799-8647-4750074aca5a aa43364b-30b6-4b37-9551-cddbe1581d9b 59336563-92b1-4b7e-be5b-720b431c139d e92c0755-9fb8-4f72-add6-d88abe42cfd1 63042edb-788c-4607-b7d5-05ddf32d8647 fd49d5dd-225b-45a1-beb4-dc349061285f 2c544d09-a425-430f-a7b1-a069cb62ab90 a0b7f6f4-a66b-48d8-adca-a6c51fa2c71c 29e2174f-8d84-41c4-8260-f91f03e79444 a2866b9e-1c6a-40a2-85a0-84fbae6ae3ca 2d88bc46-9769-40fe-bdc3-37435a81129b d1ac1881-527b-4c76-bc4e-9abd56026c09 a942152a-7a66-489b-9d78-afe096bcec7b 04e9ae87-1edc-4a52-a846-a62ad03b713e 7589be1e-d268-4406-aa92-f3185f4aaf3f a88262d6-db27-4195-ab5d-178e872387f4 a1842067-e9d5-4e3c-acea-15dd445e6375 5cee2a5d-fad3-4d80-855c-2299be3306f2 58fc73a5-3db2-41e5-b052-f8984b46dc2f 2cf88dd1-13af-4334-b256-0ea8949e212e 557fed2a-ca29-490f-949f-97bcd7f6bce5 bf443828-f3b7-435f-90e8-0caf61d6322b 501a03e0-7faa-4dd0-b2a7-b01afc36e9d1 d6da462f-3754-4aad-8ebe-4223e992644b 9894143f-a125-4c4a-a906-161335b0d2aa 57e94fa7-b526-43df-8f5d-53aa4cd88c79 18722f28-abcc-4892-af8b-ce21770eb593 80f752af-d198-4c51-b7bb-4717d97e4a8c 0ef9a690-a20f-46a4-b7e4-0b8205305494 ccfe3370-9113-4cd7-8988-b6385db5e46e 9685b058-12b5-40aa-9470-7793bb0f4aa9 ec28c020-f351-4147-b12e-aae3f4612a2b 11362259-5516-4a48-a651-197e76b438df 3af49ff7-74ab-4a07-a32e-7e209c9e5d41 a685b683-5eda-4c07-b1e3-68aca92d9af8 c13f56b7-4859-4201-af77-2e32127cbd21 8454314d-cba0-45d6-acb6-058a67411f90 ae5940a6-e88b-4bcf-a1fd-7fde1bbd7fef 3ceab27f-b8c2-4ce8-b1da-16e477687657 d97c71c3-c934-4c4e-a295-0fbf4003bc35 9a005a63-ef27-4894-9073-d198cba8a389 a055da12-0075-4b54-9152-2eec88694f00 b1abc77d-0c40-47bf-9cf7-c2f3e3383929 061e710f-9d6b-4616-9688-521e6fb69f2e 08b75bd8-93d9-4911-b271-b83e9f6edafa 6b363817-3e45-42b4-b367-5920c6744a92 18265793-e570-42ae-b434-f2d6eb35722a c91d8b32-ffe0-42ec-b676-b39119b05462 1eef0bf7-fca0-4f5c-85c7-21be3725c84b cc41e391-b71a-4893-8284-e141ace33b04 bc09c17f-3971-4ad2-a6ce-e32fd65183b3 d1edc80f-a81b-44e6-bc7f-95c2e4780b77 cad12e1a-8fa7-47b0-bd21-fe69e6e11e4e 2e38c224-3ef0-42d1-99f7-cc2657bcb1df f734f0f8-d795-4ecf-bacc-2b747464049e d0f051f4-ab29-48ec-a906-d5adca8548f0 222de957-8c36-4413-903c-3fbdc705f863 13d2e63b-f08d-4dec-a6a9-92554a489d97 4b51982d-ae48-4799-8f6a-54b4fce1aae9 28bf5f91-2125-4e40-aa84-9158484ae536 219041f2-8c06-42ac-9b7a-8933fcc6a8d6 3a84a12a-c0ea-4de6-b4a3-adba98699e7a de38a4c6-bd69-401f-ae46-36d582fa2fad 866d403a-9c6f-497e-b4ae-2cdbac50f532 08654c56-c535-419a-b15c-d4b491ad3218 e2adcc30-c519-4dcc-bf5a-e6b324488bef 13028c1c-a71b-4b26-91e2-abf339120df1 47882c8a-efba-42c4-b71f-247a62d4df75 42617c97-0fba-47cc-b835-68b88896fc7c b88f5ab1-df05-4413-85ab-58049483c08d 5d9e914e-263c-4fe0-bd49-163c06d2b78d 8a6dd3a3-4166-4681-b83f-9e582cbfe462 fa274009-c676-4436-8cf7-89368ef263e0 2eb9a693-6810-45c3-bb19-be6ea502c858 daeaf962-e046-41c4-ba94-702b7da9aeac be5ccb33-2de2-4c6b-9978-497df41c662a a94eb042-7dd2-441d-a1c8-4e7abdb40945 922bb220-d453-472a-95c6-7dae5675ab4c e2df50f6-11bf-4fa4-926f-6f93877fc32a 1e60dc6b-6eed-490f-bdcf-0504da081812 1eb64300-39b3-4b42-b4d6-9a35b3903e6a d2b8fbd4-5ac0-4117-b272-d9ffa043dbca 1c7b0850-4bf6-4fed-bd05-f14d3daeea00 78241ee9-6dad-4f71-9f79-2d812eaa95da edf367f7-23a1-4509-9227-3a72fddb96f4 b59be6cf-1b23-4834-95d5-dfbfa6cf2297 56e3364c-a871-4fef-ab1a-42d25fe86151 cf346bc0-cd02-4f98-858d-082426099a01 80700416-6ae6-411c-aa51-53ef861f0f62 e4809fef-cf43-4e36-b4a7-b85ff121f101 3e2be644-d0ef-4b79-bcad-f53ea761dd82 5341198b-146f-4449-bdf0-cdfc805948a8 50f8155e-3407-4d02-a76f-e9c9038858f4 37c714f7-c670-4be3-b9a3-ae0092d67164 81588cb3-4c54-4b17-a9ad-c74be43b12fc d5657a4a-ad27-4afc-b65f-b5737ce8d0c6 13675076-6323-431b-bf9f-24f846ac0003 b0c259cc-622f-4cd3-90e0-4149cf63cee7 dd2fee0e-2153-49ba-8606-1bd4a0c51125 b3995315-2575-428a-807e-99e7aac7e8e2 e34114e4-1379-4d25-ad0b-54272e54005c d7105cc5-07cc-4f16-a256-ee845b94a4f8 ee90e50d-156b-4475-8e66-c011fad94ca6 5a6ae933-ec35-42eb-8df8-bbe3dc25f755 797847b5-769a-4250-83a3-bdfa75c6f7d2 b0dc4b20-4ae8-4a25-9582-ce497657a877 fd0620d6-c9df-4647-bb55-b2d0911d8448 326daa76-8514-4d79-9680-a8aab20bad96 f8ec9b8b-d10b-4d7d-a143-39af9c0a7dd5 1c86d9e8-908d-4815-a04a-e673a3907c7d aff3c859-b148-42f5-8c01-a38c1ca775e0 4e72ac64-7f52-43ee-af21-6ef46414d3ac 31d17de1-879a-4683-8056-f79fc79fb1c5 4ad99a12-4997-4907-af3f-47b7d72b3264 7f0f84ba-2a30-4c59-adf1-7f176a1acd79 04ec23d3-271d-4295-bf53-cfcd4b1f2d5d 7a4977c1-1df6-4c7f-9da7-0ee9905ea61d 0648f5d5-e687-4174-b8c1-e6ad620ec09a 01c08ef5-153b-4c58-afa9-49c16655613f ff213628-f472-4adc-b985-8a24371f1ff9 483c2ea2-bcfb-4696-a699-39c8994d9f93 1178d1ad-37a3-4636-aa21-3a8b5d765972 4785af51-56e4-4e73-8fdb-18360ab3debb fe4fed36-0bcd-423d-a91a-2c3346ad6a26 f967ff2e-ce6c-4d54-98b5-df72d304072a 8386cafb-34d4-495e-9e1f-53d0db7795b3 dab22f35-80fd-4d61-9118-2eac096cb974 82033083-d1df-4ffe-acff-224a0be2c92b 0d534b71-0c81-4327-b10a-5af9281e777b 034f1c19-1b4a-49eb-b9c0-dd81d4886c2d ee74133f-6215-4870-82c7-8d4d913c6eb1 2a11b0c4-89d5-49c5-af86-bb37bca41bfc b7db042e-8d06-402e-8d72-f82b57dc4b3c a006d307-756a-4c43-a579-c26fa6c0bbd6 0397d189-9be7-4741-879c-7bc6cc4c9e26 58c4d086-8305-486a-bcef-ae572071dbc1 acfb7d71-22a4-4fa3-9e3d-53b8b959be8b 46732633-bb9f-4235-a546-5104619f297b 9c5026b1-9577-4a20-8f3e-20cb30eb5095 e517b924-309d-434d-ba49-80e07fca4112 fa325a4d-8442-4ec6-b02f-65bb1c07c143 4a99dfe0-3f8b-4f43-a91f-f2299a7c1732 a2a036ed-a395-463c-a148-6c703fa482a8 fd1ee02c-cc91-4399-ba0d-479538ed4f95 90b133e0-7e15-4598-9317-a8fe660a69ef 5238eadf-a1fa-474b-997e-099c1985a3aa b61126ed-71b1-44cb-bd28-d54031fb8467 4149b731-feb5-4116-99c7-3b33ae7b452f 79babb6b-08bd-4ada-ae89-1120445945c2 f13bf96d-a2d2-4f2a-bbd1-58dc1eda880d 142e11c7-89d4-4959-b52d-74a84ea11374 9d614964-e647-41c2-9055-603ecda5ab34 0a77a683-81b1-42ee-8102-5d03dbfee3b7 090a511c-21df-49dc-8a01-ade822388c5f 20edb594-3a21-4c4a-a562-5d3d036348fe 91a91d21-3dfa-40c7-8dfa-88815eada3bc 09becb02-59e8-4712-ac0d-01c42541e3b9 55edfa41-e76c-46b9-a7c9-9f30a6e95864 a0c34d7e-d702-47fc-a50e-f1eaf6ead80a d067b9d6-7467-4cfc-9eee-57e881ae87fb 1cf999b9-040a-48be-a02c-605c6b36822b 4dca5846-224d-4386-9d56-3c8ff95919b6 3fa5d85b-32b7-45ec-a4e9-77c76447cc4f b329d1b0-bebf-4e95-8d6b-7289b206a889 40181a34-79f3-4421-ab43-3748843cc2f2 e6edf6eb-761d-49df-906d-b9c3febdf315 853cc875-53a6-48ec-ba2e-7a3dde189fe0 a990ea16-b305-4c6c-99a9-dc72eebf70ff c91f70dd-5f7a-4186-ab70-31c434a64098 0b61b72d-5cdf-4010-a1c5-f0c6c26c9c8f 54b3074c-9564-4f68-9495-c52763e37846 bae7c8a4-6842-40d7-bf69-902e10aee138 c30194b8-5f89-4ed6-9b84-70e41d3be8d1 afcc3d5e-b6eb-423a-bf6e-46b126d7a699 cce76c2d-1f79-4b22-b122-da603095bf08 bbc0337b-1b69-4a63-86bd-50bd7127293b 553f1be0-1df4-45df-b9a6-b1f360f659cc 840deea7-b09a-4980-a1d6-34f8a32228f0 538744b7-a772-485e-8212-6eb970ac4f62 545026c1-3684-49a2-ac1d-978ac52e35ad fb787835-88db-4f7a-b670-d88fa8340fab d09113a1-b1f2-4ea4-8fc5-26a9dce5a476 d94b7cf9-d641-4e29-bf85-f96c184a1f6c 156b911b-9299-4265-b488-15fc9b984856 2ab641fc-84a3-4c6c-a4a2-e494e90ee12c 16643bf0-e134-4c16-a764-3183c40840b1 f499a494-52a0-46c2-9461-4b824d2c44f7 72f5c2ff-4eeb-4e65-9b2c-d4c3298a5cfe 48b71073-3912-4d74-90a4-01b70f1647a6 6825c2de-b842-43eb-bde2-0fed6f2f125e 2ace2496-8998-46ae-99f0-a2abe8baa6f9 c30cab7e-d7f8-4e72-8d6b-7c8bef177bab 024f4b9d-bc0b-481e-acb3-eb45024be45c 39b51576-572d-4aec-906c-9b105233b081 265d1eea-e5d8-43a5-8855-1e5948a9b1d5 92ea52a7-6624-4e9f-aac0-498da2413a6d c1bb6093-96dd-43e0-b0a1-2b1a8afe7e09 40c666ed-cc05-45f2-8cfc-85d3abe518ad cf008d5d-80dc-4992-ab99-598370eb3774 db8e75d1-4275-4a23-8f3b-bfbde5d26fa6 f575499d-f21b-432b-9b3f-7ece848885cd a73fa865-a099-4b86-b12b-97b066f3d9af b401010f-b88d-4e0b-a507-74f8e340c13c 2853a68d-400b-4d29-bcf5-7ddf0189163a 9ec963af-a5d5-4819-a417-c67e77be556e 3b421f15-6a33-4f2c-be11-9810198a87b8 392f1188-5a5a-4e8e-9618-769555c9438a 84501158-3d9b-4b0c-a7c0-57435ba54543 f763fddc-2f61-4bf2-b28a-ad853ea6850e c4648e27-8beb-4a82-b3b9-1992bfc0f7ed 511689bf-a337-4d9a-8743-317e6383a038 c0b02ad3-34a2-4450-b185-0cf6ef6ccdb1 f56818f0-aa0d-4566-9af3-acb8d9bb0762 adb3c4b9-d54c-4471-af8f-ac7f2e205446 ebb2eae8-3702-48e3-9409-cbccd0ec58e5 3027163b-b642-48c7-a871-b1f951c0ee4b a88eadb6-de0d-4192-acb8-31db9aa58b10 5d3d3962-0564-4661-9f5b-a3dc9be18946 a7dc73a7-b5ec-4422-af1b-83c477927598 7e60f0f6-4160-407a-8ef0-bfa8bfcb2a95 9d06b3be-cf96-4821-9f6b-713028230acf 4a06bc45-cb6f-4c7c-a7d3-bc9e9265313c 0814240f-ab8e-483d-83f7-6e6b867f3c6b 3ad07680-d9d7-4718-b2ce-67dd5e2aed08 e6f26c55-7256-4954-bcb8-375bfe0dc9ab 3c8de58d-7a1e-4ed5-887f-f5939a0e9ddb 68223cb9-3b86-4c6a-905d-0db90326385b 051e90ad-3c99-4cc7-ac88-90f7033d1b7c 62ffdb7e-b4a1-435a-87d9-b941e8556178 c5749f96-c827-4b58-baf4-2884cde17705 dd24bfc6-439e-46c9-a391-02aed9c05c69 a553e491-f14b-4dc2-974a-aedd494ce6aa 68346bf3-65d4-4a1e-a853-73b5ee53a0dc 151d1239-69f6-4225-bca0-a57f86f88ef9 8dddb357-b9ab-41ad-90c0-c984ede71df3 1182cd0c-a82a-4f93-8b8c-a14ec669afdf f3e4ffa8-e41f-4074-befc-d65239349e41 ba575043-8345-4e2d-9310-46d5faea25e0 4bb8910b-78e0-4541-9666-f90c3362c5a6 e246cb7c-a48a-4965-8979-804f7475e6c6 18c35ae2-285e-4b6c-9907-a015c57bb865 f22ed69b-3d7d-4669-aafb-dfd1441737d5 5228026b-8965-4ff2-b3b3-8ed97586144d faaae6d4-38c3-4ca0-99f7-3b5a0aa8c894 7cba407c-dcb2-4917-9ac0-9e66b51f21c3 dbce14ef-0510-41da-835b-e23b5e93784a b8674361-c9f2-4e04-8746-6ebb08891a0e 5afcfe45-bb20-40cc-a3ca-15a9b2b4b935 75847772-60b5-4a4e-8e60-0293098685e5 39ff90c8-b8e0-40ae-ad80-de3c446fce49 924ccf8d-dad1-4ad0-8b5f-33c8111a3d50 6b91482d-8e7d-4dc1-859e-7f8af2ea2854 4b27d83d-1dd1-4461-9470-4c1e38781158 a24cb6ac-d0f5-4a58-ae6a-a57901c9b6b9 4ddb36a5-ecd3-4f15-add1-17aede5e0492 da770f60-38f1-4dfd-881e-db80e47a2745 2d5dba12-b00a-4a61-a957-5e82bc50d10c 2243f3d0-fa5d-437f-b3c3-1fa602b97044 8df24089-ff11-42b5-8687-80b06c3007ab fce79ae2-545f-47f7-b90c-f24919ee30e9 6f8fe487-570b-4c80-91da-c5c93b2ed537 57b210c4-98de-46a2-880a-cb1e872b5a84 09004181-7c3a-4d9b-8633-18b71d14d527 a22118ed-35d0-41b9-98be-0696806c1b51 22026d76-f269-4934-bfde-4af0069f11d4 2da7e6e1-dfe6-494b-bbac-f1b152f5b877 1018c27c-d448-47b2-8918-0c16b7803c47 cb820f75-b452-4a52-8153-740545581221 53dd2177-66a8-4691-9254-8fa476169118 012ec592-0b2c-4179-962e-79ec757faacf 3c6f5105-5e15-422b-b224-229cbc9927a8 2abec262-968e-47b4-b80f-c7b54e8988a7 7bc7e191-727d-4bf5-b678-cd647b3202ee e339e667-c141-4377-9992-7a203f749ba5 7c287a61-4669-4ef4-a614-3d9fc35efa72 28f7eab0-f3d9-4359-91ab-1b302c5a0483 e603452b-0c50-42ae-b9cc-2ca8e80fe725 3f8653d8-8106-4d09-a485-790912d7aea3 8520dacb-8393-4a32-8ca3-987f0d970c54 7e7fd4c8-e740-4d2b-bf13-d1f41bdd13b2 3b6499c8-f3e9-47b7-9f0b-fdef79a86fff 71e50373-d085-41e5-ae47-27a2dffa7dc8 b2cfb825-49bc-45a9-b1b0-bccf88956988 e72ac760-67a1-407d-b1dc-ef0597d9d957 c3a381b4-a4cb-4c75-8e7e-4493f453840f d032c645-0808-4cfd-a029-834feec799b9 4ebdd1af-e71b-4f4d-80a0-d364109477a9 bc3f6a59-1dad-4f36-b5a3-50db66ebd1fc 3574444d-5a87-471c-b8f6-e482c03694e0 fdd344ee-80f3-4ff0-9f11-1e894573f8f8 e04c8947-305a-4a47-8aa8-f8235f8307df 996269ca-3c2f-44d3-83a9-6fc8f5a91384 3f2c4073-4254-4d19-a47f-dfc80cdb8acf 106f2806-0005-4d16-8e9d-afca7308c124 9050af0c-385e-4e59-919c-9037264d6d52 b1ad2041-46f3-4309-8380-6dd83e658d9a b61f5215-763b-4dc6-ad12-d03eab4842ff 4d9dc96f-375e-4c23-9ffa-59c42b44692c 61fc9b1e-2abf-4873-887e-6e86f4534867 5bece5cb-ab80-494e-9911-6014f59d331f 313a3e65-71be-4f4b-a7a8-6d7b999f3c27 c6767ef3-8a56-46eb-a46a-8ec3b7fa150f 6cc363be-ff04-41ff-ba6d-31cdfe51e5a3 c13277cb-2a72-4fb4-a7d0-2747b7c805ca eaab220d-6551-48b5-bf1d-d7e3894d5a65 8a69cfa9-f160-4b85-9b02-ebbe2aadf702 a260dcc3-7551-47a8-8424-1ad63df47d91 d1325a72-b0b2-4066-b917-86c26868694c e4f11a02-1b38-4306-bbdf-3552b0c52930 08a72990-58f6-4b96-b30e-179f78b335d2 69bdd045-da50-4c46-a639-424cd0caf30e 60aa9ebe-ed7d-4c92-9d63-479e4fdb7be5 2871cd2c-073c-4043-9405-d3f6750c459a 3396d0d4-dbe4-4608-aa21-e83da1f75d0e 62073e1d-b0c6-4510-9f8e-731966ed0ed3 cebcf581-2aca-4a7e-b0e2-a71d276331ab b549ee17-95b7-43ff-b2f4-2b19921a7abe 12767310-1010-409a-9965-5cc08df55d0c 7d42f4fc-d8e2-43f9-881d-26378403be0b 3b176f97-ed5c-4e54-8dc8-d6ab65240eb4 0f9f94a4-40d6-433f-9c2c-2428312615d3 ec25395a-4a7b-4fbb-8ce4-a7ad5d9e7a0a b21f14c5-c2ed-4ddc-a5e8-f737af50c414 a23a5d2f-6014-4562-b50a-7664c4aeee2e 0d9d225a-96bd-46da-9909-b5603aa3e47b 8ead497e-1e2c-4f7f-ac62-63b9d396170e ffecc6f8-6f53-4772-ab1a-a1ee9fc43f7f 4a7355cb-0c7f-4e5d-9f8c-9e56a0b42dc3 7e0d5b57-8caf-41c2-a008-249c1e754485 fb06808f-46fd-4ce9-adab-42f7652d4aec fffbae0b-8569-40b6-a08b-121ab938308b 460dde42-9a9a-4446-a283-7bc2f3897a3e d1d1cf77-3b8d-4180-9d36-f829a13bd682 8d681d29-c69f-45d4-8b6a-e69a7d896839 98da0bf9-d0b6-496d-bf57-617c3cd4becd d391c4e9-b163-46b9-92ee-7ac8f8fcdeae b24a56f0-bd05-4096-8423-71638f2c2bf5 80f45e87-aef8-4a76-9c40-7d7144757feb aee54e9b-c676-4525-a3a8-d8f75b0420ca 9ad27212-9d4a-4218-8e08-f8c8547f2459 72ec4dc1-cfd0-4d7b-a589-68fda61311c0 1c882775-3502-4330-8894-a4b90ce04785 1bc90664-1868-461e-a8b7-ff5acbe5ac29 255fde5e-f979-4f86-a4a2-dc4984c51f09 562de053-3889-49b8-a255-c919014fd592 7c667b4d-96e2-4d85-8609-0806cea55595 6fb211fe-be7e-46f6-beb4-e52b79eca882 5fe7e9c9-eb61-4bec-9d05-247def12f6d8 9e36ac9b-c10c-4244-a377-a0684d8ce67b 0e0721eb-f3d7-4dfa-8a76-4222cb739c54 bb994f44-7d45-48e8-b766-14d5d484b2d8 47c87e57-90db-4e5c-877a-f2ef6ef84616 2f97daa7-6fc1-4a17-84c1-825481c67be0 06460564-f493-496b-b5aa-e9dcf0b8ff1d 8d4b52f9-cf75-4702-bedb-351445828184 248a3390-5d12-49ea-8e1b-3ce39ae13c62 e60db52c-e6ae-4ab8-aa9f-273bda28ce2b 5ad5d165-e99d-43ee-b34c-8c20ee419547 457222d2-6ff6-4408-be3e-6b89944e89e3 cd93248a-4a23-4123-b6b2-57bba416628e d93a5875-0b6f-4106-9281-0d1a90d1db69 f5a2df10-f299-4917-bb34-6f68e38df301 8b45447d-6169-4e49-9464-baf86b13afbe 26d68cea-9ae0-4f9c-892d-53f15a09b5b5 9146afc3-a11f-420a-81d2-2a6290dd32e2 2a432ab4-aea0-4d54-9c52-bd93a77105f5 763c615e-c507-4e01-85ba-11ad71be9f20 c1769b57-d249-4ef3-9468-4e21a026c98a 4c31b335-2a74-48d7-8f86-fbe00a987d73 ae598665-7407-4fe4-bace-f6febfce4dd3 4a66b380-e441-4f05-8e64-c36d2b4ba10a ccab9d68-2368-4c38-bcee-28097d0dd868 f2667710-2b99-4c78-ab5a-402b28d725e0 bcb4f359-f827-4bbf-95c5-ab3aaa532af0 01174bc1-b058-4779-8fbd-3c05b0a85d79 d5b5c081-228f-4be4-a325-33f55509af66 765c0606-127e-48be-96de-00b1023405d6 18897344-4a3a-4422-8b19-f2c2907e7e34 8c3d4d3c-3967-4eea-9b8d-7e83d246400c dd192f1f-3563-4565-94dd-6b526188814f a1efbe8e-9f94-468f-ad18-293835ff99a0 c4d7feec-39a1-41e5-8b79-6016beb07b53 dec1a118-cb86-4445-bbbd-b31553f46651 9df9f6b0-8c19-433c-a7bc-aaf1d84449c3 90c1fe43-e200-4db0-ae06-4f3bb68c3fea 1b04801e-8562-4ecb-a09c-47859473542d 5dc55235-6c7e-4a83-9e83-b29e3f65b157 43e5392b-acc8-48e7-b436-c2adc5d63d0e 435c3e6a-53d8-436f-a95e-73612c0af37d bb186acc-c845-424c-a5d2-6666d631c95c d1d77d1d-420b-45ba-a61a-12049cb17328 7a85e159-27a8-4891-933c-96243ea40c88 6421a8a1-be5c-4ddb-b48d-1ac301b31217 e54f5d49-da6a-4584-8dea-f9676d9cdf56 8083abf9-4f73-490a-a7cc-ff8c19bd383f 326863bd-72ee-44ea-b0e0-d44b3d878dc9 c5f67625-6419-4651-9bbe-7837d88b668f 1b556809-4d2c-4238-98fd-5c6045e92575 b1f184f6-fbf0-4477-b247-b52594611285 c6176e9b-d987-4cb6-b663-7c057a53ab75 af143957-e5ca-4a63-bc2d-1266dbd4f744 60b9d918-eb23-4375-b488-00c59be609e7 f8ee82e7-a4f2-4ee7-b37d-ca2a71514933 4f6bf1b9-58f9-4f87-9406-34088fb9123d 24ff91e7-dcac-468d-9569-4e141929d32a 6c373597-6379-42d5-9d26-d5210ab7aa59 4f25a908-5c35-4322-b779-3f35d5225ac8 28bb06eb-b962-40a9-8f13-b622f862ad5f 6567c163-a910-403a-b1cd-f92061eeea73 eeb2b87d-e13d-4063-9240-e34a51cae6ff d8860f04-58d5-4674-a853-9f91d97761e3 ed81809e-de38-4886-b4d8-d240ec3ce09f 0e340dfc-3f6d-4aae-90c4-fb206426839f 0aed1782-bdf1-4610-89d9-4695ce98c502 2fe464b6-80b2-4c29-8df5-23baf009751b 3bf07142-b5f9-4434-b8c5-ee198ec0ea63 f122f4c2-8171-4e7c-98e4-2bfe5ba90cb9 1a178d10-4d6e-4fe4-a9c0-78e825d62552 40671aa3-59a7-41c2-8eaf-c8d7996222b3 36297eae-66f9-4a7c-a226-21dc274fc5cf 04071cc1-c10e-4865-9194-498707507434 be493ec1-8658-4ec9-955e-2a2eccd36a5b b8bfe02d-9a53-417c-9834-1cd5c4d43cc3 ab75dede-305d-4351-b4a2-ab7c1db20a7a 2c195deb-fbb0-4944-b51c-6ab6464b521e b5993597-efb3-4090-aa9c-9e248ad06850 34a66547-d121-49cb-8dc9-f922cb189dc4 f9cdcc91-c496-4cbe-bfd2-99ff0544e69e b8a41fcd-243d-45ac-b4cc-ee9cef005184 83755874-020d-47cc-8301-5943e17e375c 0fc0e692-9844-48e8-8093-f143731a4de9 a5055e21-3e64-4a36-b239-c86ff4d4d62f d1e5a916-ba21-4f53-a9b7-dd7cd4f07164 dc35896e-5084-4b81-9ebb-42a2cd89e936 ed365d54-a469-4139-b417-c49e4467f784 c877ef7b-faf6-4a0b-bb5c-cc38b8685821 39baf915-0696-4478-83f2-19829230215f 1f9f228c-b900-4568-bd62-f34564c237af 55f70f53-185b-4e35-9c3b-065580f87b0a 52c07f38-324a-478a-bd1a-9ab83f0d0ff1 63ed5d5b-f0d4-4dbf-82f1-b3cd64799a47 be95dc63-e8a5-4d9f-9067-6c1311590b1b 1d3898db-472f-461f-a458-baa1c601a287 f41c46bc-ca74-4170-8452-92d2d4ca7424 ce17c75e-c590-44bb-9aa0-a8effd8a12e1 ae957351-fcc9-487d-b913-24262a7f4a75 9c0d1c89-a6e6-4edd-a486-a8a126fbf826 a66b3499-6038-4634-9df4-0c17a1d83c9d 7d574a84-6e00-45c0-936b-f6b358121ea9 20271221-0dc9-47f7-a2b9-86ab5a991f6d 495c690a-1d12-4618-a60b-be6b539d9d1e 7856fdd2-a86f-44e9-85a9-5be710ed6150 a1a841e8-0d12-4e63-b0b5-c9288f4daf3e e3c84fef-9ef9-44d0-b571-4e60cfb4785b ac980693-c542-413f-b086-e3b5678c93ac c93a445a-150c-4d51-8c76-9c3308c64fa6 58352d25-dc48-4a28-9a55-cf28b74ecec3 52d1c5c9-f910-4de2-8b40-08c0bce9ff1f 75edead6-2beb-4103-a8b7-f3296bbe9296 a36bbacf-6edd-4b8e-b58f-6a36ac09dcdc 85062477-616c-480b-a570-406123a4740f 856ccc18-91e4-4859-8cab-218a43a269d6 c33744e2-ee14-4f31-9fed-b3d6bc60709d ad9d6db7-3be7-4d15-8656-e3c2a5bd215b 0131b7cd-e98b-434d-93af-2f06ccea42ca 96af0243-e387-459f-8e16-52a3cabb8ee3 3e165765-da6f-434c-8a33-cd068f563270 6f40da25-48df-422a-a3b9-80ee828cdfb3 e84e7725-52e0-48da-83d4-8a76a48dabef 8b184b1f-404b-49fa-812b-5049f6d7dd9f ba951d86-fff0-4e27-b8b5-e29083c70ffb b191c5bc-4ad7-451e-96bb-c43d63723747 90344a18-fd61-4fd5-b142-3876a77bd70e 47c62848-bd6c-41f7-84bb-5d9646098415 db319ec0-a729-4575-9a60-630cbe01b941 7e7b4260-a0cf-4467-a78b-edcec303b433 5dd3f8d0-d825-4ec8-89a4-1ae7c2d1f38d 4f27aea6-14ec-412a-b0e9-1e4a80de97a1 d0beb0b3-df40-428e-a0f9-36bd2938152f 52ec7bae-533d-427a-998a-5b35fd4b3c09 8809add1-5a15-4e8f-abeb-610934a0d051 d9a622f9-3aa0-4e9d-97b7-37d55e1eb625 09b6ae7a-f54b-4fc4-bc34-04206785db1c 098df3c5-fb8e-445e-8cd2-1813365b7fdd 9436e044-17b2-408c-8d13-b31f0d5b1445 7d26dd17-d439-4fca-ad1b-ef005a73f038 2dc24b49-7eac-4d19-8548-f804e1ebe960 e2aa3bf8-db91-4231-b06d-3a69d553e3c0 388a9fbd-df0c-45e4-bd44-74b4ce8777d0 16bcef05-d057-43dc-89e7-2eaf2e8d0b5d 1926cce6-8026-4c02-8743-f750be7d8eeb e64c73a2-84ef-447b-9b99-306ae1f2a6ea 74af6d07-d269-48fd-bc71-8b4b24e98bb6 8745fc68-cd61-4fc5-aac0-688224a2cdc3 4823bcd4-3c80-44c7-b88a-cb3fe703013e ba395a33-e493-4ebb-8519-030a19652ba6 f32ea7ac-b684-47da-b64f-8ce3b98149ad 71c89f14-fad9-43c5-ba0e-d26c2ba84a4e 0874f9d2-a631-4ebd-b09a-bc7aa5cc3c01 38b9b933-997a-4b00-a5bb-b0ca5430ac1f 11d68d48-faad-40e7-a5f6-3348326f03ff 3d75d111-7ae0-4036-acc4-efd6127296da 9927ca0c-9329-4f07-8c89-12b3545648f3 038746ff-eec5-4ace-b533-cd6d008e3704 8b57e041-972f-4814-b3d4-653565bdb778 b0b1b799-023c-4076-a65f-42aa0f011f35 da5f2f79-ca46-4e09-bf05-0c44f997f038 488847b2-7b9f-4205-8140-bc35a08879f3 bd5f9afb-2655-4fc4-b418-b648d0fb99cc eebbecf3-2832-4483-a515-92be6169f37d fd56c0c1-5088-4d3b-91c9-185bae4b1d02 57e4dcd3-edbe-495f-9d12-dba9d19782df aba24de0-4c2e-47d8-a8dd-3f7565733ed2 c2a46324-3d74-453d-84a4-48ff7db71c0b 0e9205ba-4e39-49e5-8c15-8614bdba2ca6 f4241581-7d49-4cb3-baee-79c5394a8549 dd7c645a-f971-4201-b944-ab0d0caa1ce5 80453195-061b-4cec-bf2f-1f0f7f4d7141 4f4b5504-31d9-47b9-a1ec-1524eb9f9d56 71e478cb-6063-4198-8b71-8625110b0e72 1fd1f9eb-efc4-467f-b9ae-5fd88eb4e7ec b8d8cc43-2c26-4be4-9c29-c6868361c342 ce353fd7-33ea-4f5f-8029-a60d38c6d8cb a3a90ad5-b4e9-422b-81c3-363fa9f41c5b 03677ffe-27cb-48b3-8aa1-c8d7e79645ee 0cbdcead-6029-46ea-a1ae-1a0e7b4cc786 ace2c584-991e-4553-9b76-65466cdcc2b3 d8a523fe-0f6a-458c-806a-7ee69972434e 7c1005d0-051b-4c72-b4b0-83bb8a8dc842 cffa55d8-49ed-4163-bae4-709a4ea54472 f5c83b14-4727-404f-929b-7aa6945d233c d3730b44-f7c5-4287-955e-623ecb10ce02 47bf641a-3f4e-4266-9fc8-953dbe7e5619 8f8e9dce-294f-4e8f-a466-f32fee43120e 2fd27c78-1f18-40de-b092-2b8faabc7e94 a228ea43-59e8-4349-8d37-c9263850d225 cc9a75f7-d23e-4424-bbb7-3e33d61a0d99 c2989f95-7891-4092-a227-18dd3c997607 7f4f9ab4-94fd-4f4b-b649-e98a7c734b61 d50590cb-114c-488b-9565-b456ac9dae8b 0a958c9c-5f6e-47fc-8420-7a528517e0ac 805b3b2b-1c44-473d-a4ab-eb77b88ecc88 d6c369d0-fd98-416a-9d63-777b39ce5d05 c4bf07bc-98c2-4bb8-a180-3b3661ee3bb0 3b963ee1-49b3-4dc8-aaa8-669b158c965d 9aab0a7d-f507-4c47-acdd-3ca29f8f466a d6c97a3e-fc7f-4ee2-967f-3e9883d47dc4 41928493-c9b1-4d28-a9e2-cf91307084ef 35729501-984b-4f4a-9509-500d509b2b76 48dea80f-cbdb-4fab-8244-c36ce72fd4f3 453deff4-8c6e-445e-8fb9-02316ff9a558 e4bb75d1-4fa9-44e4-92f8-ef1f44a1f8da 85028444-704b-4db2-a4c7-4b62a8e755ac 32fb5e59-b0ac-499e-a4fe-0195d082bd43 e4d22ac2-cc76-4772-84fb-ef2bf49bd123 b46db5d9-a696-48e3-90ae-7c37739cbf57 a8c1efa5-e201-499b-abf8-9878f24d193e dabc8a41-2e9c-409a-9ec6-7b89633f98b4 a0cddffb-b4fd-4dea-b6d7-5b3d64492dcb eb9ce691-cb2c-49ae-b5b7-aaf542492cc3 4d923ed2-64c0-4f17-8e1c-1f8a58eaf191 f7b12126-0133-4e3f-a253-2b014dc367aa f2300146-8f02-40bb-b81f-08cf29524028 7e4e5577-f58b-4bf9-9daa-b992c59f4894 9675cb9d-ea20-47cf-818d-e8efb5c5cc8c e889ade7-fad4-421c-ae34-655e322bfbe2 1586810d-df5e-41fd-85be-0cffb7d49d6c b0293df1-03e1-4da2-9e8b-f91cc257da6e 9c5103cf-e279-4dfc-9883-7c97e2e0aac4 c1c5baf1-21db-47e9-89db-5cbca84ed265 853d5fd7-6db1-4f88-b138-f4ccb0164d57 4ac0645a-481e-4653-b3cb-3b33347f595c 16964721-1bb5-4806-b0d2-ad2bb89a1454 35d2eb39-036f-428f-b36b-7c3479c66167 8c14cf76-f96a-480c-8360-70554ed9f6e1 1de40e96-6347-4844-b5ba-da8382a3167c 68bce760-a13a-4d42-8d77-5548c5b8685f 33bc8051-5191-4e96-ae74-e14999108665 a3fdd668-bcf2-476f-8f1f-fc27ba849350 7ddaa3d4-8089-4c3a-a1e4-59caffa22e2c 06ebc0c2-fc1d-4d3d-9517-037dcf06aa70 100971cc-c801-41f6-b918-ec48b5da40e6 774c58e8-2de8-4c6a-b656-d28f039a9083 a5e611e5-7340-4b24-a1dc-2a2c36e67b3b f6b8615a-96c5-43c2-b19e-6d4378478a3d bb89c946-29fb-4183-ac31-1056c7c2faaa de81e039-0e45-4bb1-8d68-022877664508 035abb67-7429-4b6a-b43e-8606594f62d5 e23376ab-b7af-410e-88b4-04b777c19058 9b3271a2-f8c0-4847-b0d4-31933c65fa15 01378174-ed4e-4f2f-b3c4-87344a3df70f e647bc5a-5a17-48c7-837f-7b8f806fcb31 939a1d82-2aca-4b6b-8b4f-154062169ded 96e52a54-b5b7-415d-9e89-dd933eac4a29 62e32721-d4f1-49df-8190-cca7d117cb79 64452513-b1d7-4740-9d7b-292a6718f388 d635884f-2924-4a9c-8835-b807c07ffcaa 87c4bbc7-2ab9-4d35-aded-de96a15c7282 70b9c01d-edda-4766-9ad6-e0206dec1bfa 4c8bbc6f-24bc-4695-b354-a8cc8e20a8f4 46d3775b-c84e-4911-b03a-b96c5f3eff26 dec2ee39-d253-46d9-b62d-7ee87f3fcb2a 0082e1d7-16a6-4f8e-807b-33c9c2b6e617 df64d56e-9ad8-417a-a5bd-2cb0b9b8f2fe b9bf1e11-f535-4c0d-9c8f-57331dd2e012 2c5e0098-f33e-4fca-830a-b33d4b1ac46d 683073dd-2a7c-43b0-b882-7844b915c6fb 241f3dec-8f65-4468-959a-09d3e88f6358 f63fd1ce-953b-40c3-b845-4951cd150783 62cbf326-25a4-42a7-87dd-513ae5b3a934 cd42a1a3-7630-4cbf-8e95-9d5bcc87ff9a 31bae3e3-4e31-48df-b53d-0a5362d7a76b f838894e-5725-4fbe-a091-3829cf347fc9 d5b82a15-b713-405b-b04d-f4dc5778217c 9b3f79da-900c-454b-9cf5-85742e240ad0 a96c3703-12fc-45a1-8ac6-edd16c0612a2 71f301e0-f3cc-4842-8443-8a6b7da127c9 d4e9c9a0-2fb4-4d90-af44-0484f0f20952 c08b623e-2fe5-467a-bc6e-17b5a935088b 31b9445f-8e5a-461f-8926-2742ee830487 dc08bd19-d5c6-46de-a6ee-ebbb7a447974 b61ae6f0-f8e0-43fe-ab94-950f53829243 653e70b8-50e6-44eb-aa13-2569012e7ab3 1f576bf2-f1c6-4da0-aedb-ad077f0896f4 b282c26a-8a61-485d-9423-167026e83529 96daf3c7-001d-48ed-9e9b-9632bb572c4e e57d5cc9-fd29-4b31-98bb-4c816d8d3ff8 f3539ad9-dd89-4de6-acf2-00d2932ed71c 3abf9862-eb4f-4c5a-b13a-b6e42c76e666 00ea294b-efc3-4975-b2d3-188b86177b6a 13edc2e0-30f5-4d17-a02f-e8789d083a83 402d44f1-9346-4fa5-9942-e7b130e1305c c5c65d5d-e399-43d6-9d67-0e7da763fa53 81cc84c7-7fac-40db-abd8-400f6ac87ee5 6c855daf-9270-466a-abd2-ea4e90df4ec5 41e4a5be-fb2b-498b-8bed-1e7e6ae3e2bb 3beb9e6c-3f7c-46ce-9164-0cf3b562772c a071d942-66ee-4216-9cf6-ce0e045bbee7 86b03001-6ad5-4534-aa15-4b5eb50c6c12 7a58a0ba-faef-4ab1-8972-c476363fcdf1 08969145-6df2-489f-a762-ee1811b268f4 27a9ea03-cc9f-474b-b9c2-f4dd9ade29ac bead5b06-997d-4e32-bfb9-c9d2b5ea6274 995a3b6b-313b-4e81-954e-658798919df9 ab8f40ff-2ccd-449a-b199-61dc9bbbc799 61dae784-c224-4343-b40f-3de49d1a31b0 13fa776e-0438-4d06-8687-2908ff9bce75 a4e32d9a-0c94-4759-bb44-df2585fe8ef7 f4e0efa6-2b55-4cbd-97f5-2ba80d8d7573 dcf67921-12ef-4cc3-ae94-681f70ec715a 58cba7d5-1a9a-442a-8021-74742622bb80 70af35b2-feb6-4fdf-9706-43a3c1ed0adb 98297a6e-45f9-49ed-8f04-7b94dfe3dd62 ae1cd1a0-c8c9-4157-a871-717441ace924 c3d7d1f4-8090-48c6-abd3-2075f3f75a9e 090a99b0-afe8-4e33-adea-5ebea9d62b47 38d036fb-afe5-4be4-ab10-5a1423d67e99 f9429db6-d8f2-4786-8343-9f89fdccf93f 00fe91ce-6bf3-4966-81eb-f184a0f43f72 a4d52190-c0be-4a4a-9d57-e98592636fd2 27899060-053c-4328-96c4-94b9977b65df 35a2f6ad-83b3-4cf6-a13e-3ee7d64009e0 c8653741-b405-49f2-9b5c-f78b587b6d66 db51b8f1-99c4-4e25-9deb-ebe040acf9eb edd0d5da-e53c-489e-8452-962abc547fb8 b02a362b-a903-4ad2-bd7b-46bbed33dc9f 71fa22e0-9dfc-486d-8361-bf86aa206c0a 566d7cbc-a92c-4c46-b45b-a6ad2eaeaa63 d0c5f64c-04fe-4d90-814c-552ff5f1d089 a4cf2237-a100-4849-ba3b-53cd9b8e6cfa 22af3f27-c90f-413e-b252-612350085db2 58d76557-2014-4ec1-ab97-f0ec955b1098 5591fcfe-ba21-4fc5-bf78-d1bff0f707be 4cbf42d2-b5aa-4485-add6-ca8a428bab93 dbc10d49-5772-4bf8-a5a9-7e987a7f3bcc 025b7a64-a796-42b4-b52d-c9450d234904 ca17338a-c6e4-495e-b98a-e386c63d935a 73cfbc11-eb3f-4f3e-a42b-4179887d41c3 0dc10828-6e58-4341-90cd-542ab7b05926 b57df5dc-25b5-4f49-9276-eeaa917184ba 55393f82-2678-4be9-b80f-542beeadf0cc 57af97a7-1d1b-468b-8ae7-d7a454285206 ca460b4d-c9e4-4cfd-af17-03455c776cfb 2f07d773-7899-40b1-a37a-5eed8be447bf c51344fa-890d-499b-ad8b-34adcd4781a3 a63177e3-0607-4437-bf4f-b50203d34b81 11cc9295-76d9-4cf1-acf7-0642b67910ce 80281185-47ac-4a5f-a446-443af0a10041 44734afd-504e-43fe-9ebf-e6a026c53ec7 186d535a-b4e0-4234-9892-8177083bbfb2 fcb13d5f-087c-4c99-90b4-397428b07768 e24f60df-969c-4b3f-85a8-9e9d77ebdee1 d13437e9-6190-4a03-8ebc-33954a0a7b0c f481641c-23e1-4b6f-83b6-26df6902df51 3fb59759-766e-4700-b932-de822e359ae0 7014aff7-c4d0-4d6a-afb4-ea769369c91a cf91aa21-af87-4af9-8aa1-6abda8118e5d 5bbf8875-d79c-443e-b1e5-fd59afab6b6b 559354b9-eefe-412d-9a3d-9589e4c060c1 758b9ce8-628a-4c05-b628-93d8fa7eb69f a6f3dabb-82d8-4c93-83d2-14e086eb502a f8720927-a4f7-4b0b-bb5e-5af045a00ef3 a4cbb44a-79a9-4997-a11a-3a53f8e8465f ac390ae7-7bfa-47fe-b422-24ca0037bcb6 1f75225b-5c1c-4df3-b191-f44baa683b87 6ed41410-fcdf-4d32-9e5f-9c2f87d1712e 5739f989-227b-48f1-909f-7a364d407a7b 5b8f55c6-f7a5-4046-aa3f-2e7b0cac4cde aca3bf76-7650-41e6-acc7-48c8030baff1 80b7a33b-8ab8-4f49-8da1-f2a7b3ae15b4 e909241b-24ff-4c20-8ddb-610f38185652 d8ac1677-639e-4882-8127-553f283e3391 0bacbb5c-e95a-4c48-98d3-850428fbb714 4e382c9e-099c-4be2-b211-fbbfe70f9a42 b4d7b135-16ee-4d09-9a3d-6303fb5d6f9d 333c8404-fc7d-4fc3-b45a-1f85adf1f7d5 22ab59e6-3739-4d14-897a-e6c0e8d3cad6 72bf0960-f73a-4d7c-aec9-f7a602968798 21b28e44-baf2-4a89-90aa-494af8dcc089 5d880ee5-c3e8-4544-93b2-1c1ecc6f5a6c 81c09128-5efa-4967-873b-07b2b9e83cdd 24c43ae1-c903-4665-a520-bbaabf353748 6a6bd14e-ea8e-4c67-96e8-91a479f2761b 0e9c3256-13ae-4e50-a846-00dac2a42047 1bfe891c-b0b7-4faf-9b73-0da4e9b9b6e1 e4462c56-7b31-4468-9bc8-291a25fef917 38e6a1af-b38b-4cb0-b1bc-5b897a1f86ba 343494c2-fee6-411a-817c-ca4574a1063d fb659ce2-bc79-4d64-b624-7a9353ffb470 856dd157-a1ad-48bb-916c-01f1ed8fe2a5 aefde074-543f-49af-97dc-cec621d85147 536a17d5-29ce-450c-af16-d7e48141e911 7fd0c3f9-e787-4f08-b620-6150ffd56796 6efeb5df-c788-40fb-a648-dce0ed091bf2 677590ab-6829-4604-954a-d1c875717ff6 a88f30af-8c6f-4b2f-b023-05ab40d27b3f 5c3f5446-417f-4e0a-bedc-cf963a29a21b be7da517-3bfc-4c7f-b89f-a0c56b025afd c8c78482-0d2f-4c83-a060-c096f65b71aa 6366b2c7-da58-4b11-b0cc-00741a3c8985 4b4dd66b-af62-4518-b7aa-eefb232d2750 e2cacdc8-2f8c-4d91-af67-ec3f30a1496e 5f7c8a53-391f-4481-b2ad-29fccbee9315 170c4616-54d5-4179-bdf5-09cfd30a0ed7 d541b36f-867b-4e3e-a68c-70d9b14ce088 0e474d78-bb57-4222-b34f-b14277c7a284 4d3ca39b-9977-44ad-aee2-41e829f57f44 9c3133ca-2da2-49bc-88f9-e73a2872a0e4 b1f29417-7c47-4804-903b-ee892957d1a1 976263a2-ec3a-4fd4-a619-09b6a7782ca1 78e4d16a-a2e1-4ddb-bd87-7df50a6e0fc1 9c4a88c5-b135-466d-85b5-679182f072dd 33deebb9-1be0-4f03-ab7c-bca7a73da8b4 2e0f0ad7-36bd-4d79-ad20-803dbd50120e 75fcca86-f330-4d23-9654-6cf18540d2e1 b100719c-d4f3-4b43-a567-a6b3c718b659 e6e93cd2-4761-40ee-aaf8-9fda691a90f5 e830248b-68d7-4ef4-911d-9ef518e11597 6f20ca16-b3bb-4670-aa92-7349da83a83c a10570e8-fe0e-4d07-b97b-688804d36ab1 6a000c47-f3f7-4dd3-b0ba-f5b73a690218 febb2f20-f809-404b-aa13-2d56091b8fa3 a2da5cd8-3e05-4f36-909c-b53581e829f9 e96785f3-722a-418d-99eb-ca8844457264 26ecc58d-e365-489c-b1be-19375fddd89c 7cd9cd61-153d-450b-9b42-512c9f561428 700328a2-2130-485f-91cd-24452c590538 70e3b24f-69c5-4632-876f-235e14d5414f 6873679e-b84e-4e9c-ad12-cc19f0ee1b5b b0de0366-2b28-4c25-80d7-3420093ed098 73a22d29-5f8b-4b10-a940-5aee8bbdce24 cef1037e-f7ef-4cb0-ba49-1938a1997852 07e2993b-ea34-4fcb-a03f-ce5973c3426f bf6f95a5-79e7-4ef8-8183-72522d0fb454 6df463be-f160-4de6-b65c-a43aa307b21a 4c96012c-3695-492e-8b6f-a5ff872f9e86 25333b2a-d616-4d8d-bfd6-c4d5f8179aa6 bfc03d22-f5bd-407d-bd11-21b87e7c1004 8a7756d6-8dec-462f-9d0a-b6a8c85220ca a8561bf4-728f-4c31-9fde-ce561cc45a6d d7f6f210-d24f-4ef9-b39b-8523ef6eb6a1 922b1d24-ec74-4a6f-b060-730fbb345520 f2312c13-256b-4635-a65f-8a0660cb00cf 738f6220-243b-4e57-a57b-1b01f7a98503 2dd8756d-d258-4ad1-9aad-22a0fb124c9d 660af30f-483d-41af-b894-71ab94faadb8 f7b38223-cb6f-4aa9-8e31-4c54b677abf8 ff5f2c6a-2637-41d6-a198-ef12f4b19fb7 3a890457-8506-49e7-b712-4e05e6adde0e 22a9dda5-7290-460e-bc07-d2a1f4b8ad96 a25a4f53-b9a9-484a-a8ae-a83de73a42a2 6e46fc5b-79dc-44bb-b0b0-c8e029c1a06e 20b50b5c-3301-4acb-a6c2-287c0876d2ad d468b0e1-e43d-4e7b-885e-0fdd05c6403a 8c603f27-6f84-4079-b472-710de4579837 ff54ebe2-1194-402b-b19b-39f2bb1fa615 7a5ae394-cad0-426f-a29d-89fdc56e0be5 1109a0e7-d117-45bf-9409-d18909cf6477 2f2c55a5-a3f5-4c55-b904-fa76fe304146 3b8b2d3e-40a5-4e8f-826c-439cfa339f2b d1f45578-d54e-4632-90f2-2c624e09f204 f3b9089d-c8b2-495a-94a4-82869e9a5354 e935c1c8-562a-4fbb-b952-870988a11f35 5f14c736-1c86-4952-b7d8-b4d893d96c65 fd792990-0cbc-4871-914c-e42ecb0269f6 09347243-fc8b-439c-9d4c-dd4e5135bb44 0c8dd937-d75f-4332-a1e5-05c6074495c7 7b1a2ebb-d13b-4229-81d7-82f86593b503 4252af68-8b4c-4dd4-a3cf-6f552e23c2c8 200f8629-ca3c-4383-b151-b7d648472891 ca059df6-c754-4309-825c-809b760ecdd4 5aea8859-6364-4e1c-b336-e3cb8376256d 7b4e4c91-e9fe-45fd-aba6-64a134a40b18 edc589c1-7934-4c5b-9701-1045188abf74 e0ef8230-f2a3-4c1b-b22c-ab5def26e86f 8a3ca54c-17df-4e84-acbc-c23b546da634 1c92c7b2-caad-4f2d-bf5c-7d954cde0fc3 5d9b5b3d-1b9b-4241-a52f-3ec30da1fea0 a78c371b-4309-428f-be2e-446eebdbef09 13c978c5-29b4-4c35-b7c0-6734307d7994 ae035273-b71e-424e-a977-b0625dfaa28a fd4905b7-93d3-4479-b296-a0ca44192e73 39547515-7c50-486c-bc79-0d0277025cbd 5ec1d7ca-3e10-44e1-bc5b-bd4b3acee48a dfa709c5-4498-4892-91b2-186f2315798a aba95299-5446-4151-8f60-a3c9a9eeac96 e1885590-a751-4b8c-97c5-2744b783c7ef 7e10c3bc-6b18-4af3-af07-a78fc095da2c 61fb25a2-86bd-4362-822b-0fef8f7b462f 483ebb3d-e001-4de2-8c35-89f15594668b de4657e1-2c23-42a9-b5f5-8cf35d1de1a5 ab8e2a10-eecb-4019-84b2-6235ababe59a c4828568-fa0b-4959-a2cc-6a36ab7800f1 278d77ce-c273-404d-9b27-0d563feadd75 0aceb070-20cb-4427-bae1-bc4feff12d9c 44a1b410-83a0-42c2-aef6-3ed2ddfe4810 bf272d2f-e829-4545-ae49-a99592613441 5b6f7417-5ffc-4fbb-97cd-83ebbc5da42b f95e4012-f2c5-4f29-bbb9-ef9cee1342db 4eaab41f-1d07-471d-a8ea-a84631a1a35f 1062c2e8-8b72-4b91-b742-6ef6e50cb7e7 ce55a5b0-adc1-48a5-9e23-5fa062685fca a5b8886e-4cbe-4571-a527-8c654303a19c 277e1a96-f2e8-48b9-b5b1-2e843b3d2b3b 999b4758-43ed-4b51-860f-ffdebca85789 3c2620e2-783f-48a3-bb51-89325386de0d e22d2218-8b35-4816-be1a-2f6e942be239 c3161c56-c6c2-4632-83fa-17991cf41e30 ae95d60f-6aeb-4ffb-988e-6b85b096843b d8544e3a-77e3-4ae8-b8cb-6a95cbb474ae 2e03a6f5-67c3-40f2-ba3d-43551585aafb c10ff797-e9c7-4f1c-b94c-721383580baa 14259ac1-486a-496f-b1a3-22666c7d39c5 87e2e781-3661-4d32-8d37-8440c1812d38 f0e2004f-d4b9-4fce-a00d-70356fb177f8 49d5b43a-bf93-4848-80df-3f3d19beb664 8fa20ea3-2ec9-4f7f-baf3-e57bc7a0b82d 385dd405-1e1c-4a88-9303-e7f5d78f9513 488d2c57-0d68-4296-9fcd-3ec115ccbb3e 7b1eada7-e53d-47fa-b899-3e6f3eed7e2b b43425ac-6848-4216-a220-862800f69fa0 51500015-dbf4-4578-b578-ac0752c516d0 9c991c9b-50f4-450f-a4af-a39d97040feb 350225c1-a672-4d70-b5af-629a4b74a2ae c54ca0ec-58d2-4369-b275-831ccd98e6ec 14ff6eae-dc4d-401a-af87-75567007ed1e aab2fee5-aca8-4653-aef0-7c41f8d34fc1 4c7bb808-dd42-4f82-94a1-b2c8ee38db57 70063109-f0cf-4a17-b12d-cf26d32072c6 772982cf-fab1-486b-a62c-64bbe9a1a761 6da004c7-32f6-4e50-9f5a-11a0e2633c06 dc4423d7-69ac-4160-93a0-44135194db5d 8a83b3ae-dd14-4799-b221-44a496d15747 fdcfc18b-bb4c-4ce3-973b-6beb3c511868 acaa2ee8-965e-4050-ac11-b92970aa82a3 240e4360-9513-4faa-a035-ddec4b19b806 72877297-2ff2-45e6-b8e6-14a32549fe18 4e3a0f6f-c8f7-4ac1-ac36-da61ee3c8f86 dae564e3-6235-4a29-a40c-46933ce882be 210bf7c9-bdfc-4f49-b7b2-83b961f4126c d99eedd0-7daf-4f1e-9095-6ee999d20e4b 7a9bd59e-fc47-4435-86bf-0b3808a1194f cad3b6e7-8d3a-4ae5-b37a-2f718eec99fc e3866a20-3bbd-4db1-9a2d-0b88a889693d c5916326-c6a8-4b2a-9bae-7390491c9b8c 0bfaa717-88ce-4dfa-b9f9-d7ef3e401c05 2a66a1c8-108a-400c-890c-e1855b2e713d 6329ec1e-283c-4088-9a25-77dce10e18be 7f7296d2-9aaf-48e7-a729-6795a59d19c2 31374772-f903-4fe1-b874-25e3a50b2a71 289525f4-a204-4979-90b8-59994f2905c3 4010c233-d310-4c58-90bc-c9fffd1f17d8 98c70776-6c9e-42ca-8cbf-125eb9b2c8f2 20c5dcec-0dcb-48e9-a244-e763fcd67590 1267e061-3f71-4af4-a1ea-0c6027d0ad39 10411756-01a0-4ae7-bf22-4f7aba94c366 3f3b1d78-f2e8-48c2-a65a-1e07b34735f1 dd2add63-c9ad-4540-afcf-e6ab9100c9b9 a3876245-962e-45d4-92bd-fcb71dd66a73 2bc44263-759e-43ee-88b6-92b805025386 526ac6f8-b241-4f85-921d-c9d853fc6a0f 6bfb9b6e-05a4-4740-bc3d-66d551ecd406 a6639cc6-e126-4959-8a82-22953c24e1c0 53a38b2f-1f50-4177-9bd4-dbe4a5bd7e32 55ddf9c1-3da9-4a96-9921-7c81472ccff8 29150d67-17a6-4bf9-aa69-0f80563fbaa4 f9b504e9-d888-4590-90cb-630a198aaac3 05bbbafe-4067-4362-b3f0-9d8005a68d9c c1b046f3-dd9e-4ce2-94d6-39d3429899a5 16dce011-187b-4164-b3f0-bb1cba90cec4 57a798c7-e295-4aff-9170-54dbe90fa2b6 88836518-0231-48ed-a486-bb515606e0b7 2e1d74e0-02fa-4237-924e-de9122aafce5 4f40233f-b046-42f4-ad16-843514c5849c c3242439-ffff-400e-befe-efd7c84c407f 2f65f7ab-ef85-4785-9bd1-49fe42d87c44 e2c932ea-37d2-48a1-a36c-2df77a2c2216 e6ef4362-fbc4-440f-8a7e-3d88b6e1a555 477da294-e8f3-4768-8011-ca4ca3abdb46 b4e24334-1c87-49db-8749-48203eb12079 287dec1e-098e-4956-86bc-9a893e0a19b8 6cca4a60-a254-47d0-8a2e-ca5edb139985 c15d82bb-e4e7-4fa1-ab4b-2b15ba45fecf 98f05bd2-cd07-4ecb-90db-199c4288640a 1f8b1f3e-a2bd-4f22-a687-02852c3f49e3 0352c7bb-fea6-4b3f-b011-facc4d925608 48d686ae-ba47-4482-8b5a-52e14d400da5 966fd6f1-8468-408c-a537-b29f7e64bbb5 ebafe36c-eeef-48f7-8275-d3da97ba1775 c6279c72-483e-4c8d-b96a-150617b5fa38 471c20ee-c6fd-4d99-8622-8797d5f16ab9 f46fc46b-22d6-47d2-850e-ee3a383011a5 b2badb25-0535-45e8-bb3a-d3096fabdb0f 3face8b1-d866-482d-9300-e07e21646553 b5a5a804-091c-432d-a788-007d61119ff6 b273f3b0-817d-4bc5-b4c7-5330af404c96 81a6c969-c653-4865-989c-28cc3a71b58b d2eb04ba-270f-46ef-a6c8-936c0beb10e2 e93cc8c9-68fd-44dc-b086-636fd9829f58 b39eeb6a-2fe2-4177-a7e5-c8e10e36e31f e8e88e37-c3e0-4f1d-93e3-6cecb334f9e4 e9a12787-6eae-462c-af5b-eafbcec64a4b ecc54b24-2213-4a01-9d36-e40c7478adcb e09fb2e4-2718-4fd6-9ab6-799efc563c69 94e3c86e-3a71-41e5-8946-55a6c5d67de1 5abf2724-0aec-413b-8e65-fefba4232fce 05175d21-a2cf-4422-9228-6e85e4e29eb5 7ea09421-0c09-488d-b346-32cf9604f9ca 96379387-c5f6-4c1d-bd34-609702031a9d 355d0953-cc54-4925-b624-c9b59604dc3c c9b4b959-157e-43f5-a8d0-629621e64d6a 269c9130-cb04-49d6-8c0c-e4275dd23c83 867cb1ed-cc24-4855-9369-2283e636a284 5592e1e6-94c4-4fbf-b785-5086e049f04f ebe1a5fe-afe1-48ca-be16-2be5fcac9dbb fb8bb9bf-2904-46c1-9d48-0edec7632af1 50b24143-fc0a-486e-95ec-bd04ded654f8 bd0b8e9f-3a1b-4bef-88f1-2e2d843cfde4 31785d1b-b681-439b-a5ef-150c50f73c9f 6d6ea78f-450c-4989-a840-294bb6d20bbb cfb7ff97-1c74-4f5d-91bc-29e3621a2b62 eb8eda8a-6d68-488f-b0bb-4f80b00c13a1 287b57d2-b316-45c8-b118-872183aaae00 e366e484-53d7-46aa-81e8-6cc4f37eefee 425da27e-8623-44f1-811c-c7aec4048daf 37c6afe7-2a0d-4146-ac19-574e2ac06082 2b298db6-b0a0-4501-a469-8f622b2baaee eaa29db2-465e-427b-a55d-be7172959d6c 768a1b08-715f-4d03-bd23-ef2f3d183ff0 61c98cb0-855f-4d6a-9d9b-53b7929085a9 0ebca71a-9016-4467-b4a0-1ea23c4eb516 54da9476-be25-4db9-bd53-e1005778605b 9e773269-70c8-40f8-b68e-804d606eaa50 9283680f-59ba-4edf-ac21-6f2d0702bb3f 3df85e86-f8e6-44b7-a3d2-91c40fda4ba5 592e6c49-b7bf-41ba-89fc-e114a1d46c01 6a7b657f-4d81-45fa-8c2c-e66a33671dc1 a6cd65ed-c43a-4876-80d8-c9b1a04e0c53 cf95d628-9630-4562-add1-1a4be819042d d1493892-4b9d-4df7-af8b-fb26fb36caa3 48fd09cc-528d-4fbe-8f66-20911e7613b3 e32756c6-cc34-4849-92be-ce3b59f0cabd 10974edd-aaae-4cab-8ddb-a4fd017733af cf60cc2f-be90-4f10-bf98-23ae1ba01243 6d13057f-8df0-4ef1-a7a2-fc08ba9442a2 6d3c46da-81ca-46c8-843e-9ff718e2a6f3 aa271b02-407a-4f13-a7ae-e8095b52459d e4f994bf-351e-4cc9-bab2-504f6a1a96da bb18f887-cdc4-402e-97cf-9dd3d651aac2 a0a63856-b880-40d1-90e0-87fac8237cb4 59464a1f-5cb1-417b-bb83-323bb2d752d3 cf9926e7-bcbe-4b6f-b2e5-80bb3d154706 bbb893f8-9108-4100-9452-63abb37c129e 776f33d7-9b93-43bf-a2b0-c24b07c0df96 0f76f99a-16f2-43a2-86df-26723a97d20b 882f9fa5-0a53-4a7d-bcb7-6d3c5c35d60d 06ec14bb-d024-46e8-8cf3-6f68f8fa1cac 44d1d377-750b-4f42-8c1c-6712073e8c41 af851fec-edd0-45ba-a584-86cfbc94e4c0 c12605e5-9e64-4fa7-a583-8b68ac07b363 4f59f49c-2ec4-4c18-b6ba-06c38c1f894d af10a2b5-a399-436c-a150-98412eb18a62 2abf6453-5216-40bc-a187-75923a990c9c 415b3686-21bd-4e6f-b4d4-5489078a3ae4 a9628a95-a666-4d45-b171-5b6c8e7e06ab abceaf92-7c91-4d68-983d-0ba419b1e223 2d3cf2e3-6aaa-45c1-9fb7-352e8109846d 6ac24a78-2cc4-4009-94be-44f2f74df56c c4ce605e-d269-4e65-aa9c-90d62d6359e0 252dc8e8-f4d1-4e8a-b27b-296ebbe36364 5b99f352-b2c7-4a35-875f-9a19e7497b73 2a57568b-3f58-46c6-9169-7d49aa3cc22a 24511885-29b6-4f2b-b64d-990fd53c8ca0 d1b09891-ef58-4f16-9192-56c43030de86 6abb42cc-1f47-4f8b-91a9-4281abf512f1 6e5c2711-c7c7-4836-bdd4-dd0c9ce92a6c 074d95c8-4f41-4d01-b1cf-1fed9b40f4b6 0191c829-063f-4f90-a5b9-1e1cb2ff8392 9bcbe0ac-5730-419c-ad99-87d293456e79 9afb3cf9-6c08-4f33-9aa2-66de6adbba48 f400ec60-4e71-4356-9ce8-c0e2c09f7155 6daf1651-2944-4186-8505-d713248d2d1c 8e9aaa73-e9ff-4bde-b7b9-6ffd76d99028 4143a910-9ab0-47db-aa9e-1d380be48837 3585ca7e-8599-4a92-b6a5-2b7951cf8727 801d28e2-1a84-40c6-b79b-1eb40c57c7b8 f2026ea2-24a2-406e-afe1-0aeb9fb390f3 5910906c-24f8-44be-87be-54e54fb2a28e a9d2393f-881b-49b9-9f06-94397ee57689 85ff066d-90f6-47e0-bdcd-34068f3dc60b 7377db37-c9bd-4813-91c1-b45f4fbf615d f47ef1c6-bd40-4060-bc6d-1dd00447a738 ffb41af4-cc19-47e2-bffb-249d803f9db1 4869036c-adfe-4fa3-8843-3942a0dbc856 5ea72352-7e18-4e11-9e73-0e4c9796ad4b 1932f85b-fbc4-4737-ada1-9fb6004e7726 2be3a61f-6c4f-4cfb-aabb-258f562653cf 4438d88d-6aaa-4261-bc99-6cd0679b0bf2 065ec9d0-0cfd-42a4-bcb0-01ad4dc8f413 ad40501e-4770-4e69-8e25-eade4eddda03 5c0647f9-b4e4-4b2f-836a-6a13c26e1a50 c0cffbbb-4f4a-48a3-821a-379502319905 e0f7c438-b090-4a08-9831-09a0872e2eab 183d7656-32ea-4f7b-8ecd-dc9fbb4b8b1e 8bd7d37e-cda9-4f1e-8ce7-e544686d9451 1fea169a-8adc-4943-9a06-708667f5ba7c c31df0f0-575a-4593-a10c-c73cb562cebf 15d25f0d-0ff7-42b3-8308-a73228ab96ce 61e22c09-c364-44fe-b8a3-19b1d9f72f73 3427acf3-e839-4a12-a00f-70942e5db0c0 7184cfab-e251-4156-a78e-d8576a88d3e7 24df8e9f-982b-40c5-8970-48465c201279 213811f2-aae5-4e85-ad14-e42ec398392c beec85bd-79d8-47e4-ba7f-aa10ba8f2788 bcb3037f-312f-48b0-b9f5-1b32d76049c2 896b229b-77ad-421d-a328-1f3195f2ed05 dc47b541-d02c-4fef-9e23-1af2e6f140ce b996d78e-39fd-4a79-a167-a4a9cf525db4 8b8fdd52-3721-4d1f-8dec-4d7b439b01bd a9afcc9b-f407-4bf3-89e3-928e6368347d b69eded7-e1e2-4a5b-b89f-2f8484228271 12b1ce36-b0f2-4269-a2e3-14b27d2feaa2 4e536d09-cad6-456d-a01e-7627939f51f4 fa0251e2-5b6c-4305-99fe-e0e2b53e2aeb 361a1b55-4d9e-4a5e-880a-43f2b906551d 0be4ad0c-16e0-4451-b1f2-d77bee631d48 17e83809-a42f-4bfb-9bd4-0724c8843b08 c07d1e7a-ad45-4cb8-8544-e6bfa287e97f 21831d02-b718-470e-9f87-15fb03ec71da a561610d-8875-4e4e-abfd-876864fc7dcb 33de510c-5073-4f34-a962-16fd43a064f9 5e813f97-69dc-4c07-8dcd-cb4974a1995e e95c0c2f-cd9f-4ee7-8770-fa529964bae7 dceb1736-8295-4c47-becd-6ca6a8f218ae 9c82452b-a56b-42c3-bbd9-ae8295e3759c 4876370c-3f22-4a74-ab07-a7058a19e5ed cf988373-e960-4782-89c7-7d2f3f9aa309 1435d4ae-3e7e-449d-888b-38486b62d70d ddb2ae96-05e9-46f0-9b50-5e4c0f67f087 263aa886-3478-4a15-a747-9d12a729acfa dd72a447-c378-4300-a7ef-ceca54fe280a 247bea0a-846c-4388-a1b7-847adfe22f55 1ce6f8ca-8d9f-4c35-972a-7a417697cf3e 7e7b1e5b-f8fd-468f-9887-f02442fee266 4bbf9a2a-bc3c-415c-a514-e959c19b5b6b ed5a5b11-a864-4b6f-9127-0b554a267bf2 cf9a3707-552a-495b-b293-0c3d75b97601 10e4fbd9-1efc-4232-a720-fbfc272b3456 ec8a9969-a085-44f5-ab12-0098943e432e 9466997e-0c0c-4706-938f-4367398afad7 99b95df3-b57b-461b-8927-b9665869f446 8cc88fef-5ca4-4dc0-9ef0-73e4b992b78c 49db8260-eacd-4f97-9919-5521232be79c 74845f9f-25ae-4393-8e9e-b7db33ec1d7f ee9e6e85-3a7e-4f90-bb73-55ab3c8f8808 c2018480-ee85-4580-985a-02b29bda4c3a c6a92bfd-b0bb-463e-b4fd-1009c2501414 0657d7ad-d81b-4fc7-86d1-49ec32839ae1 a12d5a8b-9fe8-4231-880f-16d87d479942 a5b3908f-ee15-4614-bd02-530614a102f7 dc9dac55-e5fa-4d94-b8a4-607cb1d13486 cf4631d7-4fc6-43c8-9a2f-361f5ace4baf 6f4b3bc2-c55c-4952-a7d7-d16ea291508c d92e2ecb-6150-417e-a447-1c7b400f0621 e560b662-d9b7-4302-bd1f-b32e352160f3 c0aebb9a-5dbd-41e1-8b4c-01849c9ed3a9 99a20358-c739-4fe5-bb88-094c0f62ad48 4f79d984-7a1e-4504-9b9e-9da6905ce8de 8059c85a-0e93-4449-8d1a-f584b75b001a 3c79c3ca-3946-4c77-acef-c138f985b02e d3d6db1e-f2ab-4418-9e3f-9e4457a0d47f 40be521c-7b0a-4444-9180-259eca2b9087 ede532c4-65d9-47b6-84fc-1869632b0bac 4f075068-9791-4dce-b423-6423fd363180 9aa67551-7a1c-4937-97fd-88af17c4e927 0f32abcb-a61d-4abb-bab2-c93d1b361843 73f4c863-6294-401c-9381-2ea472a3226b a3d2f184-77ff-4814-aa60-ddd1e385753f 0f676139-5a28-4386-8f4c-fdf741585d2a 59d3c6b4-a0db-4a5e-97c0-7b1d3ba59609 dc2ea7d2-d3cc-4bf0-8665-c8a197236b7b 19e8c3cb-44a0-4c57-a33c-4486f782ae6b 3dcf1a5f-ed5d-4f04-b096-d7ae0aec48da 2c19319d-7f0e-41a2-9821-d9c3d32f3c8b 1c444600-aa46-4f69-969b-57a56e2f480f d56117cf-829d-45e6-b408-8ce6f81d3264 14e1b8ae-1264-43f8-b077-d3a185c87b3e 5c7da179-28ce-4522-b56c-9caab34e7edb cd757698-7551-4f45-9a96-bf10cd8c3f22 24891c23-ed3c-496c-9fef-3061cf7d3e97 8a5ee8f6-af8d-42f3-926c-82ec97090507 7885848a-50d8-416c-afbc-50a4abc658b3 23776e71-3f59-4b13-99ab-904147030421 76730c28-b733-412a-8cf1-138520f08d9d dceac3f2-672e-4267-8b6d-9e42063aadc8 5723eb44-d9b1-49da-ba6e-74b97edd6053 8be4cdc2-e18e-4518-9dd1-3549b2b0916d 90a527a7-edc7-447f-be78-b50b0dff8a12 45b7409d-ab20-410b-a1c2-c2fa068f9b4c d9240f5d-b8bf-41a2-807c-a800519abc88 8a8e400d-2238-4480-bd16-34868f547964 02111b5b-9270-46dc-bdb4-abca2d4833d5 82d2c7ee-684c-4653-9abe-65de26a64be7 6e4590d8-f4e8-4a72-a8a0-8ef4e4dd89dc 50db3694-2154-4ec1-b716-2da7b4fc49f1 08ace19f-744e-4cef-8676-858f2060fa29 4790246d-46f2-4924-92c7-3c1ec14abb2e 960cd742-1252-4a39-a806-68abfa769b85 29ab47a7-7d93-484e-b5f1-a977ca206713 318f1307-b849-4de7-a3d4-fd56977a237b 8de42bf1-ee17-409e-90f7-f03385ca2be8 3941bb02-1def-4013-a759-1dae9880219d d01b7413-3fb0-41e1-8f0f-e5bc7b0cef58 4d60ef07-65b8-4c41-a1a9-719f086db7ac 8e775b91-f01e-4fc5-be6f-674ccd6c6ea3 65aa94f3-8e7d-4ca0-8e3e-adcd4edbd4c9 f76c222a-ce7c-46c0-8c8c-b632b06ab8ba a5ed2a22-2bae-4f20-9b6c-fe8b90639dd8 a3a4b1be-f26f-48d4-bbdb-7900db306c67 addf30ea-ad7d-4b8f-b5dc-68cb7c11af0c 48106594-58ec-47d9-bd53-6a8b73ce8c42 dd3ac26d-b0eb-4c8f-adb9-e0b5d64b2b66 5d97b951-5573-465d-a249-7b3bf552fd70 b410f04a-a867-4b68-919d-5e1d7f79c2b5 42913c88-f165-4edb-864b-6df73297ee02 f0bad0e9-37ca-4533-954f-b8d23d718b9e f3d32b58-4418-4806-bd3e-9af6c85bdc6c fb0298d8-8549-4e9b-9402-b818804321bf e67fc188-42cb-41f1-b0d5-ddfd8afef13c 820c693f-6a35-41c5-831c-50edf1f40765 71cae5b9-b98d-47bb-aa74-4fd5ebbb83ec eb8caee3-59f7-442d-9d35-3b2c6bb556fd 4a7162d5-05cf-47b7-8c09-8c8be84a9be5 455a9f21-d2c4-4ef9-9681-826c0b1de1fd 5ef6c321-0e97-4acb-8188-24cf9df70309 990fc646-ff56-4583-aae9-7bbd1147b78c 5822d071-c933-4cd0-8442-d5e4c355b8bd 3e11785a-76c6-416c-a92f-90a2a020bff3 96677ca5-ebf8-4adb-bcf1-9e84b91d5eae 7aee6a2f-8eef-4c7f-8a15-83407c0d2c75 e43ebe98-ad09-4de6-a8b7-dc160e16a423 7e9ad3f7-7983-4bb0-ae7b-1e607089ca9f 747f19ff-9d60-4af8-bf87-984fbd058061 9203badd-6999-445d-8c74-f68559d816d3 c05fd556-57d6-4297-a395-4c9e1dc7a18b 4cf14ca0-e5af-4853-9c4f-b907872765c4 ee0dc5ae-dce1-4da0-8b87-0cd7a21627b7 d8a7f2ff-4d86-4894-bdca-1084578a4795 24cc501c-b444-4ed7-a527-5b0fe45c87f0 8bdda93e-e56e-4b9a-91b4-950c916f9863 c19fed5a-b800-4287-95b1-0bf5a2af76c4 d3d0d433-4eed-4c59-903e-451f888d3261 b6f25a85-611b-46fc-a118-f86c3a7e4c79 03b28f85-feaa-4ad7-8e26-4363c267ee48 6d819d09-a102-4523-bbbe-ada627ac38f4 4e27f299-8668-49e3-8516-71b7751942a8 68bb29c6-d4e2-46f2-babd-864b812208f5 ee88d390-955d-4ce4-a9ba-c673d9984de3 a63ea98f-9107-4c4f-80c5-a636a3fe2117 309e201a-2bf2-4c36-af62-bde06acac23a 7382d428-a66e-4eff-8566-b1b05a5d72dd 80875c47-1809-40df-a042-40fca11bcce3 b75ef7a9-fbeb-487b-bbde-18e371484afd 62097f54-8fe7-4a4c-aa9f-29cbb6ca1e4b b1b4ca57-7590-486a-86b0-1775d4f10fa9 600203c3-7e6e-45c5-8a7c-e9646b853ff1 8a0edb51-133d-48a2-a887-51b4efda393e 96b104d7-7114-473f-8ab4-5aeb67dd333e ab549606-5b75-49df-bc68-776434016974 ffe4cc73-dc70-407d-ba89-9880785f724b 6664fd6a-029d-4cf1-871d-7ac9bbb7754f ecb2f847-ef67-479f-a982-fba67df53332 7a9dc6bd-30dd-4040-b396-5f42406e8efa 53642357-98c2-4d3d-86f2-a2f9aa317e8c bd7e1e1a-79ac-4745-99a7-93f7e0a8ca58 7781a060-2786-4499-b7ce-20b98e87425e 56ec495a-db92-4589-ac9f-3b6c6eb3cc52 db068c61-c95c-4b92-a894-6a8348c86f43 dc0d31e3-7dd9-4f04-aabd-736d21a2c4a6 8d0ef6b1-ae0f-4caf-9714-3fad3eea6f11 0ce1f989-6685-4501-8d10-7622288bfe25 2545aaba-5dd6-4ff4-833e-c7622db50673 c473ffa2-8ea3-4e7b-bd83-af244e84c419 bc60c455-d6a5-4775-958f-306df485cecd 4f034268-b076-49ac-94b6-c2c1bfd8d494 35affbf8-bc40-46ba-815d-99fe415ff6fb 9d36b86d-407c-4034-a154-f6951a764ff3 e67e176f-80de-4e9e-b9d5-abb0252219dc b5722518-a05c-48d8-b7e5-75ef46d93a30 08a6302f-4da2-4507-8d7e-f777c98093a9 151d278b-b1cd-47a2-b2f1-dc79fdb07106 9af39de7-f011-467b-b4a2-cd927bf43698 68af8bf6-f069-4893-8f07-24dc0b37a66c 6d211779-41af-442e-b875-8f335d8dfd81 5acb4e43-8b51-470a-a8be-af6453f2ef19 eb74885b-cfe5-4114-a0ce-f474c5775d1c b43d445e-6baa-43a0-8c5a-2e9aea9d4a84 9c39e7b5-4eea-4f30-8ab8-85798fe37420 a30fc3f2-8600-41e6-a339-753ba4d3fde1 bc3a6904-5594-4435-b942-7363aab72312 9d99fb18-af8e-43ff-8d03-c285ca1e1ee1 e8bce003-ccb8-48ab-b89b-4801490b3743 3b25f5bd-298b-469d-831e-8addfcd90d12 47d15116-864c-4262-85bc-128d6df254b1 a4d16b9d-b606-4c1f-a508-5bec846089d7 2e9aaf76-d7f2-4047-b467-e79c697d676e ccb74748-d90a-4dd7-b070-1e01c7bf7720 9d830196-c024-4707-8520-56795c1b6200 986fb29c-3cf0-4c51-b213-657caf73c130 5ed4b67a-e4f2-4907-818d-c2c235ffee7a a4e1f7ac-0593-47e7-97b1-8531a3b40d86 b657133f-1cf5-4998-9495-bc50d5aa7436 85926692-bf5e-4c30-bea3-7296a545842f a961c5a0-d6f7-4b31-997d-20937b68d3e9 07036196-3682-4e8f-a593-2db397c7011c 7fa3e749-6213-483f-b9f3-911ee4ea4ade c291dd91-872a-4eed-b1e2-a2606672059b 0219529a-967a-4514-8813-39e5fbab077d 8e84877e-b05a-4f21-af7a-d75e629e3824 925e4e07-a90f-4baa-a0f0-bb03b1ac180e 90fb1acd-d61e-49f7-8528-99060766608c 204f3da1-a082-49df-b118-1d6e11301c52 27bdcedb-d146-41a1-ace8-a243dc33f4b7 dd903377-dd58-4df9-90a7-83ece7cfcde3 dd3c20ef-0551-42d6-8653-e67fb6b9635e 4c664213-65c8-4fa5-9bad-22091b3f1f8a e479c87b-5261-426a-a863-5f89b553e95d 1762f3d7-2b0a-4b17-9318-d1e13fc25ddc 595faa3a-0421-4a06-864d-6925fa767d0f 103ec232-d8d3-4bab-a070-81ce5631d098 9acdf296-3927-479f-99f3-43dec55fe919 40f0609c-a70d-41b5-98eb-15ab483de77f 6fe8d12b-8120-4f98-8754-3d176900ae33 fb080a4c-6097-4566-9e96-e37f338757b6 d2a411d4-b92e-4549-976f-5e2c0ba563c4 ac5bd285-8127-47a4-a8bb-54a37020012e 6dc94a81-8eac-4b2c-8e80-63fda5beedcd d223956c-3cca-4da1-a88c-a382aebac74d 0037d163-5019-42d6-9215-bbe8d49e6e02 2a7d7bb0-f916-4928-bcc7-2d5a9fb67a85 07f75fc4-db68-4a8a-83c7-038f7d70156d 4f677771-66fe-4626-a051-1a837505f33a 16b39950-938b-4dfe-885f-579cb13487c8 2a9e012b-5f09-422c-a7b1-02991b4b3067 901582f5-2119-4bad-8e67-2110ce081bf8 8af8df78-717c-4b66-beff-ec68ccece038 1a09843e-9566-4b2b-a358-d422507b21e8 e3e5d9e5-5755-42b4-bc4f-8157c8b89ef7 d96fdfa7-6841-4229-b530-017142714b64 5c4f6989-ea9c-4cfb-9626-64cc780858b2 7aa80dc7-cdb6-4cd4-92e9-242a197a8a65 b8a146d2-710e-4ca8-bb2f-3b2438e5b23c d8ee7b27-086a-4f08-8088-846fbaf09fe7 9ffe3627-90b5-4c71-a995-8215cdf7e3ca 6861df4f-d3c9-432b-b6d8-992deb40ffa9 86130b01-7292-4594-9997-f5d4d927d1fe 5b9ac0ac-43d9-49f3-95e5-89f59219c079 a899552b-61ba-4431-a220-74ab27128c5f ee2f6eca-c32a-4d75-b706-96ef96a73769 451818e9-5688-4b45-bacd-5f23c115c187 48249cf9-87e3-459f-b9d4-19144e8f809a 9fc40102-cc92-4e55-9511-7637dfc10918 6a95cc54-ce71-4a5d-aafe-afb26a4892f4 aa464f7a-5d95-423d-9286-2b1eb0f7231d 441c52c7-0718-45ac-8ccb-460b7b07d648 2ede6a21-de90-4313-bca0-b1c0927ff7e1 fae5ae7e-e586-42b7-a5b7-766ba7cfdd80 a9a91305-e8b8-450a-b292-a2e742b808fe 0d7e2d4b-195f-4583-8dc6-857c8e169e5e bef0a22e-472c-43c6-a2fe-1cef61c4da86 70848115-face-4fc4-b580-22b24dccd82b 019382ae-355b-4fa4-b473-8a5c05f93aee 2c03fd1f-86a5-4737-bafb-c15e5fdc8463 dd975614-56ce-4a93-8881-d1069031e935 8d638c6e-aff9-475a-a29f-3f3a787596f5 f6a443f0-6d84-4c05-9306-98e52a041ae8 48f0b040-95fd-470c-a7dd-3392759c92a7 dd0664f3-d3fa-4dfa-a01b-23030bb8126d e794f06e-0cca-47e3-a0f8-8980257ae434 d34a373a-82db-44eb-968d-37b3f93dd7ca 14331b44-c723-4c09-a03e-1dc6e3a51ef9 78cae09f-93eb-4483-bbfd-2c884d5441f8 d7ba72a9-d85f-4ca3-91f1-a9e0c4ae924a 921edbff-4c0b-416a-9556-acbb6b84c05d 5dc9a071-121d-426e-93ba-2f4d6d7eb7ff 1bb0c8cd-5091-4d58-8fa2-6bb39d3850a1 27338319-0214-488a-afe7-aa4150a9edc0 ebee95f3-f1fc-4f36-89a1-9c5611fe77ef 8867551a-0ae9-4cac-827a-81276f6e0855 5b9c0ea1-08bf-4463-b088-0cdaa96e557b e9234fbf-822d-4439-ab92-7c569b144f77 84464183-97ed-4a68-964f-eb41fe9b174f bf6a2407-21ef-48ce-abe6-0aa46e7d255b f9fa95cf-d490-4b09-b00a-ac9bf6f93f03 afc9b7c0-ab43-4bb6-9614-ef7f30b2e5e9 c12c9d0f-4fcb-41b4-95d3-bdeaab0d24be 6604d03d-fa17-4c7a-b076-cec3c660f0e4 72f6a06c-6e1a-4afc-a006-9a381dc31330 ccb5a29f-112d-40cf-80ad-67a2cb2db6af 8cb462e0-eefa-498c-a153-31cbfe251ac6 d1d88bdb-068d-4500-ada7-27985b10ffb7 98468807-461f-43a6-89d5-ebdd6ee0e1b3 2df854da-95c9-4a30-96c2-126ceca2d56a 3bbdd0c5-a3a7-4a52-9ee0-5a88965fb694 c8b2ea41-0cb4-4b4a-a129-f5ec70b86cc9 f7cbb7f1-32f6-4534-98b1-c0c02f3cd097 0d479dda-7993-4ac7-91ae-40e60c8d5946 0e793d59-64e1-46e7-8300-e4386b37b984 bf363558-0a1e-4a48-bbba-da0903d08259 b468c80d-3f22-46b3-bbab-f26033fb187c 1888b8f8-5f84-42ee-943a-08db09caff17 509f7c06-2bea-410c-9864-5e9920e3e218 7fee3a96-b7c3-441d-922e-94b0b7040ef4 fc20ccc8-1fab-4478-8366-cb0fdcd9ffac 6abd79d0-69e7-4205-b4b2-d4e74ecdbf89 7161e604-a7e7-4516-b559-c7bff2081be2 829f172d-7990-4d09-9831-2a8f895d330d e7ba5a99-fa32-45f6-b12b-caf43c537ce4 b45d7192-5b9d-4a58-8417-5cc83df5086a 65e5926d-7ae1-4f01-a6e6-dc1dd180982a 75b457a8-5e17-4873-bac6-64017b466a49 07878722-1ee9-42f5-b75a-8b17e464130f 416b0554-9549-418e-a272-81a236a2c143 b536380c-0885-476f-8df4-350f60bc2fa7 663beb26-1a10-47d8-a492-9d1d7f589e51 a79d51f5-f9ad-49a0-baf5-e4db77cf394b c3d3377b-2fc4-49d3-b9f9-c2a1c23a058b 354e6953-601c-4a92-a675-347ea6bca679 fbf14f66-1a8b-49b0-ab73-24ac777a4bbe 6e73d8ec-0160-4e60-9a16-2e32b67b1c20 141bcea3-752a-4b7f-8633-81b682d0a4af a9898e7a-e5f8-40ae-9dbf-e35d68f7b96f ac161c20-d69f-4aa4-ad50-c8dd1c34bc75 ed5de29d-2e76-4aec-bf79-4b5cb9034a30 33c00400-25eb-4282-b74b-1e7674e12ad2 0163cca3-9076-4a01-a7d7-5d0a2f5bca93 6d17f7bb-0b07-45f6-a45a-b609c038b8f8 65078bca-944d-437a-88dc-3321ca0e3373 0017b1b2-0806-44d6-8a7c-0600ddd1fa8e 867fc3aa-1071-4ce5-abd1-de4e6c2892f6 39e987c6-900f-47a1-8907-ddce4eaddc89 c1f3f6a5-a95a-417b-8622-13c40a327c12 69294110-baa2-4dc1-a1e5-ab92e5cf4bc9 1c11b1b7-79c8-4fb5-b782-dfad4f34fc6f d09d7a4e-4a26-47e9-9cd8-10b90383a786 90807c25-e875-4037-bd1f-c108d3b624de ddba849a-5c25-4c20-aba3-c5ded74e20f8 a46ad559-5da3-45e4-9cef-37a3afa60dca 9228613e-fa07-46fa-adb6-7778a3a87b6d 39fe117d-e8f0-4081-bddd-b480e7b8a13b 14336c14-74ce-47dc-8010-8148c6f53ad1 74bfeb7b-9bfa-4e54-9189-56aa444f1437 9577e205-2dcb-4ed3-a5a4-f250dea6eedb 6b69b346-ec63-4750-85e2-02b76dc59649 8b38fe04-fc3a-4f60-b98e-d3e42da97a26 c67b55f1-f938-4943-b907-e331a1c50161 2d4a48fd-60dd-4b6c-a0a0-17be911aa7c9 e0fcca70-1e04-4d13-bc17-ed76d6db3931 465df268-7eec-42b3-96e4-ff16431ac879 0eef2cd7-4750-48e7-8a25-6fdeb8b26d8c dca73c78-9acf-4225-8d35-9f031df333ce 787ee18c-da2a-45c7-8e89-3e696dd58c03 0e4c37f5-22cb-4fb2-b963-a5b1f4becb48 5ba9afc5-f3e4-43c8-9c16-a7ff314cb2af c76fab50-4ea2-4da8-bf69-ee0dc851f609 a07f3603-7880-4ddd-b702-89d863b7be3d b2385893-108d-41be-a3a9-e5cbcea57d87 9cc4bb73-f680-4129-a8e1-26acf213a893 4d49c5af-2999-47fb-879e-842032dc6a60 e419f1dc-0ed4-4874-acef-60c3b753939a 92e8af14-f7ed-47fc-bc25-c7c0cbade90c f43b3e52-482a-4fe9-b7aa-c4b3da045349 e860ad24-f951-47cd-a040-d8465a91a4d9 7727809a-8703-44a7-b4a2-9ba3749bec81 051d512a-4e85-4e4f-9427-b5df01cd319b 4653ceaa-d98c-4dd5-9aaf-208ef03b8d84 897d7052-6872-4490-86d2-a6047117c832 2c0acdc0-ec0f-4a6d-923f-90114990af4b 39dd1706-21df-42ed-9491-2221a9010498 f28b271c-69c8-497c-8f63-f0608afdb62c 96d20197-91a6-40dc-b9d1-860ac331bc07 23a17b88-79ca-4740-8129-b18ce477ea18 e50e9598-1273-4445-bb6a-0c66a2ef7134 45e0ec03-b78b-468e-8e25-4ca181c16001 73c6fc9a-7305-447b-b600-bd0f0eaa9548 e7be8e3d-944d-40a6-9111-bb57a82ff7f6 ecdeb95d-40f4-4ae0-b05f-55105b425bc4 4d70cee5-ace4-4fb6-adce-856a09f40a1a ff14f55a-1501-4744-aa90-95f66e711e33 2b0a6b21-c7b4-484b-9cc4-958b34522a6e 073ad992-ca45-4cba-ac0b-d8e2bf759102 ef881517-c571-40fe-a1cf-2bbb52fc8724 a773aa4c-189e-4722-9113-486918bcf4a1 27fc9ecc-4405-4406-a405-51d8846f42f3 b2c4e30d-25b0-4093-a0bf-666455ed9884 ccdad58b-d47d-46a2-a9d2-4a07cd1f3584 8984cf98-14d4-47be-8532-fdcf8a729bb5 6455aed8-571b-4b55-89e8-c7ec202ebd67 9d397f6c-19f0-45c3-a091-37ce4250b07a 6dc7d137-fbd1-45d6-b2d8-3fa8d660c7b4 a361f496-319f-462d-8ff3-f84759403600 3c87fbe3-3a82-449c-a829-5b20f09535bf a13a68e3-3943-47e6-933b-98bd684ea832 bff82173-2c69-4274-aa79-88717a67effc d0425d07-f22b-4e98-916c-087b5d1381ac 1fabb512-4895-4b67-b82a-a0aa24b141f3 59c9382a-7141-4c6b-ae9e-a64f4b2b0f08 75796c09-3fbf-4c90-9232-a253d7d27267 1f20f473-3e23-4a71-b68e-207abcb8c4c1 414774ec-9de7-4187-8dfe-77ea1e49c17c 57c6f07a-ab7f-4cbe-838d-278488fea052 5d8993d2-ef83-47f7-a164-726d264b1fbd 2b3fa6c9-8f05-4df5-8c91-484e941badbd e035ace0-d907-4f02-a29c-d35dca9c1402 499b180c-d4e7-45e1-b9d9-ef103c104e36 7a69d23f-45fc-4cc6-b968-f1113ed844ed e73c1eef-0fd1-4400-84a1-6372e246444d 51de088b-f0a4-4559-b384-b05ef7122e20 c38b24b9-266b-4de6-8687-1665e03e9ef3 2524c920-38fd-478c-b0fd-0ebefc3a12c9 5db2c7cf-db8f-4a23-b9d2-d462779dd401 7ea47596-8576-4ec2-bdeb-fe5f668c86ab 328c757e-83d3-4885-afad-3fa8e30639ce 8eda99de-7057-4bf5-a4b3-652533e88dbd 6d6672e2-b6fe-4df0-9aec-26854f7078a2 e9cae504-81d8-4aae-bf53-c7dc23a5d301 ab87258c-35c3-4b25-92ab-8b19ef7fb1ea 4a0c7695-f3ec-4779-96cb-ae65a5ccabe4 63216528-891f-4d75-b34c-e16dffceb761 f9dfd686-2a10-48d7-9a95-62efa99e4122 32823b17-9771-4499-a94c-42e2fcb8ac04 347b4b9e-3671-4e41-8430-1495e0d35b13 04d694d0-fafc-4789-a03c-88020ec51534 a8d7aafb-3ed4-416b-a3fc-2f7dc0c34f3e 4f240b90-34b3-41c6-8206-a187df542242 0bb689fb-8ab8-4038-8e41-6b98250362ae bb7c71cd-ccbc-41b3-858b-e37c7071fed4 5e8a17f0-42ca-43b5-96fc-2307c2722d99 c68582e7-2579-4fae-ab86-473db66142e0 0c992449-3a77-41c2-8299-da744449f045 aefd5c66-85af-40db-930c-627e6b4e153d 785edcac-1dc3-444c-9993-5ab9a8fb486e 05c7fff7-3ded-47c2-bee4-9e3071536f94 0e7087e4-53a3-4647-a285-381571b4d183 d7795fc7-71cc-4c39-b690-0a2328b9c152 b7668f23-81ac-4192-ae92-bca5cde62ef3 df443efd-72b4-49b8-9a50-06750b6cab9c a55f60e0-74ac-451a-8027-a5c31b13bfe7 c60ee292-659b-4438-a750-c79e49494fe1 c46c8b2b-9fd6-43b7-956d-a2ce3728b3a3 4ef02489-e364-4d71-91b4-080e7e81b70a f0c1294f-58b8-4d0f-9c7a-7749d6834e80 3eb2be32-3dd4-4b52-ae76-1303a66866b5 0b654429-3841-4921-9ae8-c0914d3fb8c4 f760eaf2-01c6-4a9e-98b8-da149df339a2 e71a1a91-1348-42dd-83e5-4d23e6ae080b 1084c8ae-e62a-4621-994a-b3b3aa06014e 47a0f63e-3396-48a0-9d0e-c319c8f4dcb1 a4f03f36-b3aa-42f4-9dbb-36fbf90ea878 8a8f3552-0b15-4375-9787-4cb8e859b90d 7ac754af-df45-4643-8ea8-574331d39d43 6f481eeb-29a8-4957-b7c8-cdf77985d6b4 2c97eb5d-a818-4170-9417-54d86104c204 6072187c-d3dd-4311-8904-c0ab821d470f 49c1cedd-07d7-40c5-b1bd-e5873419e167 85e90794-8e7f-4e39-aaf5-f4fc602d7eaf 48b4d89b-63b9-4b44-b28d-bcbfb008e8f6 c83442f5-621f-47fa-9c12-0c8d4747a12f ce6cf94e-f8e7-40ec-9325-743dc770a481 9dab0475-fb3d-465e-b023-90d302164d66 c3c8565b-b7b0-43e7-8d11-0d9e1550cd0e e931ad6f-0524-4852-9cca-09f7299c6dd6 41304c35-af05-4cfd-912d-34f68830f189 54f02a20-b702-4e8f-9223-8ea91d8cd99b 232ec7d7-9ef1-4742-83c2-0fe8f172eee5 87f6f0a0-b6fd-46ab-b9db-e69c41284f06 aec3a817-6394-4ec7-ad65-829fc250c722 de12bea2-17f7-4223-99e0-5fb72a9a0982 a18f902b-7715-4fbd-93c9-33fc2470a4d3 7946d187-eaf8-415d-897f-d2277f60ac64 fbb84f05-3cbe-48f4-8cf9-534ceefd0488 93466e3c-8e57-4f02-b86b-154b693a3ceb 9178ceed-c2d6-4b25-816a-fc9ef473b888 b17d93aa-ffc0-4dbe-bb8c-de45bc2cafd6 94e6d916-4c27-4387-ad9c-559a04890467 ccd5efc4-f202-44ea-ba73-2d6829c1268f 415083f7-1234-473a-b475-06d81278dbff 3aace6d2-2609-4b83-b906-cdb0ba6dca54 aac789ba-9df8-4d29-a373-21487d56b30c a67cc177-5d16-4687-87bb-1bfa879767d5 b5221e8b-bdbb-4846-8e32-e7ea4cc5932d 2d9b7c71-1e54-4aa0-b2b3-1294bc58750d 614e6ad2-9fd4-4f97-a69c-cfc1051b701a 3cd1f202-c33a-40fd-b703-427615abd4f8 c7ff8be5-1398-49a6-9264-1a7f5ae8ab96 a573c0d6-5494-4cd0-9b59-76177f35603d ef0b1396-622c-421d-8050-379e84a7c47a 5762bb51-0f3e-4b0c-baab-e73b82e7bc50 0e998dbf-6c3c-4fd3-884e-603ae7afe174 50768ce6-c302-4e16-b180-0f40c0292a22 7c54f47c-a2fd-4611-a650-442e3d6b144f b86f28c9-37d9-4787-8d7f-468644ab96b7 9c088790-9db2-410b-a2bf-93784d196659 855e5184-5105-45cb-8010-e8c2ce4b140c 98ab9d16-5342-48fb-a3e7-0d53a8d85366 91ae2a98-3c06-4963-b5dc-c56930214ac3 17385b47-8218-4391-8e72-201d5da1f015 2be15596-d8f5-4ed4-bb76-cfc8846adb1b 96a823cc-197d-4ae9-bd5b-35fad1af9c5b 8ce3b922-8222-43ee-9d8e-62df0dc5aa41 2d35f89e-b654-4827-9a9d-34e167b9f2da 8193877f-c07c-4fea-9d23-44d4d7bc8100 ebf9f11b-1737-4b86-a10e-a81dc4dd7dd2 97c690c3-de2c-4e13-b430-764f0c8065f5 04c71d2f-ada1-4175-9320-ebedd1f0cf6b 15d6a1ba-39b5-42d9-899f-8f3528dd9370 df937305-8d8c-45ff-b265-9619d7f66cfa 825f6e19-af14-4184-b997-603bf2c6db4d a5b8a957-bb23-4700-b423-363e097e8d45 12579041-a478-44a3-915b-4fbde796edfc 7792dea0-592b-41a7-8696-705460cda8b0 2fbea74f-1ea5-4373-9d25-a04f46b825a2 fa8665c2-bf83-4aad-92f2-b95dc233eeff b8c68977-e684-4ba8-b78b-8e3a545b3264 5bd99fec-ba42-4faa-bbb0-6947ebb3f6c6 f041e39e-7041-46ab-9a60-8bf1b141bf2f 777dfb08-d01d-4730-9660-f295a7d8e281 10155695-e866-42a7-b2ee-f1c8b9e0bf02 2b56f86c-e921-4478-9f27-57f2007d0559 6098478d-7947-474c-a060-39bbdf3339e9 a6586d62-e347-4133-9e71-2860923f5c71 f2a2aedf-3e2f-47b8-80ed-2cfa2f952d6f 4507d4c8-0d07-4396-a520-0e3b5ad0d9c2 a912ba69-4f19-4439-9527-b469a27f5682 e5a86239-3ad8-4d52-abe8-15dcb5159732 2dae75a7-a8d3-480a-93a0-edd90996d605 fa258a45-89d1-4eec-872b-c83ed884a4c2 4db55034-dfc5-4224-bab1-20f0bb389d6a a8b59926-a48b-44b9-a7c0-39f85b8a5f14 9d1c38fa-b924-4b64-9dcd-3d31dba9ca73 aa6da9ee-4a55-421d-8bac-190af65016a6 5a86ffe8-66a7-4565-9bcd-f199fd523ba4 cd6a4772-0f79-4a8c-8140-b6d71d7bfabb 23cffd15-b11f-4104-81f2-5c08ec6193ed 1e3e7d34-b61f-48ce-8574-1f8960446e22 89e0f9fc-a5d9-4c37-8cc5-70b6dd827780 5eaf73fd-3e5c-44a0-bfa9-5fd611aacd7f 0ea99a4c-1e5f-466b-842c-762486641c14 79904d5c-30f1-4173-9d76-ff9323ddeb39 8d895bcd-4251-452f-ae12-a3ee8aec528c e32415e9-695f-41dc-b925-a21925c6590e 195a60ca-db4f-4ebb-9a0c-033e0ae52bc0 884b5328-07c2-4d6b-80ab-1f1212ab59a6 12ec06d4-e5c7-4701-936c-84e4fdfbfebb 99df6ec8-c27b-40e0-87b1-0bcdca211c22 d08f672f-391a-45fc-8fc6-57fb6848af78 d279021e-320d-4b65-97ef-b11ca3cfe9ff 858db035-1c96-44e6-a81c-b3662b797cbd 695ded70-e947-45aa-80a9-cfc910e18361 93678886-92cb-45bc-919d-b274a47a34c1 64fec9fc-debd-4f7b-a839-c61d3f356c1f ec72576f-24c4-48bb-b559-38f64b5e506f 341b18a5-7b03-4484-a2c7-0d7628252cad 720951e4-e7c1-4879-b505-5aa4f51ed724 a563da10-d6d0-4384-ac64-4ae4d2e6f55a 1a612d41-f4ff-4145-8e49-3e360b66393d 3482b493-c0bc-483d-b0af-3e98993676a8 cacfd6f0-8624-4612-86f0-9ab0191117e4 c468cc49-bc48-410d-ac69-c4ceb036340e 7fa499dd-36f7-431e-a589-d69fca5d3308 62f94579-f579-41c9-83d4-21b6a396ed6a 2ba4e173-9f43-4f51-8803-0cbba7b08a46 da91cb0a-b592-464b-92c7-ab235782c7b9 1bc590b0-4990-4114-bfa0-e033180760f7 8e123009-5baa-468a-afd5-5a944fba1c3d 6915c7e5-2729-4554-9828-9413359820f0 0edf73c4-80f5-4e3c-b14e-947456f59e3e 9bf1ab1d-53d2-418d-b268-d1fe34410267 32430c22-1d19-423a-8bfd-8aaa68514f8c c03c2bb2-70e0-4819-9736-7c7284fa910a fbf14a36-2495-4091-96d5-aec2c05df236 cd21dc5e-6f41-440a-b3c3-d62efc3b8857 cfeeeaae-45fd-4b01-913c-7bc697824ff7 4a6ea84e-421c-4057-8053-05fc8902a58f 5824a3b2-43ff-4e18-93f6-c6569a98ea5e 2028f02b-4d65-4619-b98f-12678d285fc5 a6699b02-887f-4870-8f2d-9d6acb3eca4f cd8db7e8-86c4-428b-ad8e-8dffdfd079fa 57e937d2-eda5-4423-8d0f-0ba2f6ac6291 db3f9c66-0125-417d-a1de-ed5f9ff0d1eb 839d5196-ea88-455b-976f-91c2dfbfe511 690c2020-c777-462b-b057-e262d8377792 f1c34e45-d550-4117-9882-96fb1a2d5ee8 1922f093-ef96-40f1-b7e6-5ca11e347ffe 663edab8-dded-4357-8223-fed99b0ea9ad d63175b6-86e6-4614-927f-533a53fec163 6eae42dd-149b-41c1-91d7-c14ed902abdd 2d052948-55c1-49df-9a1e-0af14e5f0fb1 075bd452-70f8-415a-a59e-9f2b594dc096 8a745bad-3da3-4cf4-b98a-37cb592b7ae4 3573e5cd-0717-4b86-938c-489209c2a192 49df5e66-efac-4cc2-8bda-39f91d0daa0d a663f7dd-78eb-4a4e-b06b-9410d46c4ade 76922714-9d9f-487d-94fc-5121c62bbf63 b8ea8b67-836e-45f9-97b1-ee261c7b3637 1b2a236e-d7f8-41af-9c3b-627ff1f14c2d 13a85db8-051e-4ca1-9a7b-e4346261bac2 998f85ea-afa9-41b4-ac84-15df05f6c919 d57be297-c0bf-4e0e-8cc5-95c05d2ea22d d9f55ba7-dd8a-48fe-a073-aa0e2dd1a86b 0aadad26-a64d-49f3-8247-ff733fbb7364 dd91e485-f6b2-4815-a3cd-55cd8094208a 2f6a75e9-22b8-4c11-b0f0-cf4ecdb38a52 ed6d2e1f-2c41-4a34-8c4f-4c3fb108c045 322ae0b0-5999-4f5d-a318-48ccc2b80643 6d082994-6d1d-48ee-8248-52f0d8e06d78 d421d7be-2abf-48d9-8964-3449de466e43 43ed9a48-cdb7-4eae-b156-c6fba9dad69d 3867ac65-20e2-4599-bd2d-1c1dfb752edb 3546ab42-2537-4e69-867b-130590c7cf6c 76c198b3-dbb3-4903-9b2d-f1fda6f65097 7e6064db-bf0f-4614-805b-23e96d6c82c9 c1c77c14-ddac-49c9-be56-711619631b96 120ae64e-68b8-4460-8b10-d228c41b33e8 134404ca-93cb-4d4a-833c-6891765ac19c 4f16ff9e-b3f6-489e-b812-dc2702b41ed4 deb350c7-5441-4811-b43b-36534b552014 3d9d37fb-8309-4d51-9ede-d6f838bb7bef b39a814f-5ed5-483c-b47a-0640832ccec8 054664bb-6cfb-457e-ba77-aef4d7b47a7b b482d61b-2195-481e-8e3a-cf21113dfcfc 20c64ff3-99ab-48f8-954c-1e415cf1e8b8 4fe22207-6a74-40fb-830a-bfd31ee95dd0 92d9bb7a-f2ef-4aab-b67d-49116e6d3409 4044d757-eb22-4678-8caa-b21846264eb7 d3c18c18-1fe7-4957-bc25-65a73aa66ceb a6457a0a-4c28-4102-a7a0-4f9ac50c59ff 577bd6ea-5874-47f4-bdbd-44f26bb42a4c 4479da68-3058-4d39-8db5-25b54e09fdad e1354b4f-5534-4db9-8f44-7ae4b5ddbc68 59096602-63f4-4750-ba99-0d3154a69340 cff5ce35-0472-4d4b-ab22-08e0ab3f2da9 2f151760-4fb5-4ac7-8da2-45a8a164306b ef1a41f5-4242-44de-b2ff-205734d34a20 ec2d05d0-1caa-4b8a-b232-3ad16d9329d3 11483634-6257-46bb-a655-b0bb859b2c4d 1bda8b20-e886-4c7c-a850-bf732cae7d66 e50630ed-d045-4493-a226-78758fa09076 eda1c25f-ba5c-40e5-8c13-98afbebf61c7 df993bd6-6220-45ad-bf4b-e432f1836437 5877d6a2-d35b-487d-8833-c84639b25af0 519f57d5-eae8-4e3f-a9b1-77923e1f7198 8ca9898f-3566-43b8-bab9-ab80ce29374d d87c0c2b-3b17-4176-9e3d-8ba58e156e7e 90d30bb0-1efa-4ff6-8bff-83ae0b3fa27a 13638fe9-ce5f-4a1d-8f94-0d4160d4121d 99c4bef5-3642-4129-bc0c-da49b2b8912f 06d90360-c6ee-492c-97bb-7d2ae9d9446d c4c919a0-9412-4384-a6f3-60201e11ae16 609cac3e-1d1e-4a7c-9c5e-719b6cbeb3d2 3cda5b41-a4f0-4841-85bf-0b8e36e8e7b1 d2da65df-197f-4009-9489-01cd0bf77348 44cba5a5-ffad-4f01-8ccb-412ace6a2f98 4e3a6dea-d750-4470-9797-8cb94c10ed50 baa52c2b-1892-4e18-88f7-9310d81464c1 20b15431-4f9e-4f6f-b672-c522933b00dc 4f4ebca6-dbb8-4998-93b2-325dc9983917 eaf34095-7083-4502-9c2c-c81ed41028b3 ff139bb6-8c38-4668-ab3b-8001976b6407 2852be35-2501-4226-a39b-9dcdc069ec0e a7efa3de-b5b4-4ec8-94ab-813f18d2af32 85e0ddd1-08eb-4ea6-a2d5-5d649f64493b 5198198c-859c-4406-81a3-7b216456570e 8e376283-cf9d-4c9d-bdf6-484bfdd481cb ecf95953-4fb6-418d-ac32-a7fa6e6c90c9 db94c993-7dac-4d23-a439-aa14cac340be 3fbf54ae-ad0b-4944-908e-0c3c3cfa855d 6d9db878-d76d-49b5-9471-3f61520e6f71 3aa2edb4-301b-49cf-b20b-3873c8b0cd66 82310784-a587-474d-bf1b-293d5145e811 8c6d4cff-c5e1-48df-a8d9-0fb76a88b86a 6d3f2352-4bb0-45b4-b4c5-11e9bddfa104 9ca82f23-5ce3-442b-9bab-b53edb5029ea 9ff28627-6bf3-416b-8878-41dcd10b12f6 20327732-3a55-4e6e-bdde-787be3d8ffb0 f1bbbeb0-4210-4002-9584-533cbe7d35cb 7482b60d-a850-4508-b98f-5042ee712647 b6e2fb86-b434-4a58-ab36-17492f466f83 adc17685-3d9c-42fa-aedb-392dc01fb7dd 2f4e33df-96cc-4f00-a710-8c0f710590b4 c8798984-d894-4ef0-95dc-0d299591b4ec 03b925f6-913f-431f-a66c-282a767cb699 d437c87c-2169-4eea-a961-88c5eb5ce7e5 98e3f69f-f076-4b25-89b6-8e86f8cc97a6 e006cb3d-2172-4219-9711-58d8028b7c0d db6ce1cf-927b-4dd6-b122-0119fe43d431 ba16bae4-4155-4ffb-88ea-a72409191557 efa67ea6-dd03-449b-9c23-eb84aa4fe1f5 f50675f4-3495-4e1a-b1a0-656ed8082ed2 8d009256-c805-4f37-b7b3-392a12b2a80e 7360db75-8ba1-4f85-b647-9fd103c66379 2ccea5bc-325a-4fb9-bb13-367e2870fc70 a939fa78-20e3-4d26-8cca-2deffd9231ff 0bfc0fb1-f54d-4e6f-86d3-d2e9e02aa4e4 ac7c3cfd-63ab-4c37-976c-290ecdccaaba 65ea7154-bd67-4324-8afa-4f13fa40710f 9e83c221-e6f9-400a-aa76-8f84ff48493b 891c0650-9884-4a53-9423-e5b809a8fa79 a100cdc2-6fc1-43a0-be3a-1e6dd3f8063f a67a1c52-e1f3-451d-8c12-b6186dbc4663 6473b227-b868-48cf-a2d5-9c817ce60ba7 c70c7a93-5480-48b7-a6fe-a339fe3d6bab 33d6f5ae-1922-495c-b104-3890350680ba c646acdc-ce62-4775-b720-29d1be6d2ffd f7e5e0d5-26f8-4195-ba0a-a0c36285b106 4cfcfa63-9ed4-4510-946a-cd1616bfa292 e9929696-4656-4791-b309-7f5bdb960dd0 194c2782-d3d0-41f7-ae15-c13e6abb50ed ad046181-b8b8-482b-8f83-cc76460131c6 ba749921-79f9-4a82-b67d-46adae602f5b 6a238ecb-a0ce-4444-88bc-d19b089c1ce1 1717f987-6092-4ee7-b03a-7278e94016c0 776d23a4-0e7e-4ab8-9a10-709b39f54a60 236aeb28-ee64-4357-901e-2c092d7f8181 23c7a5a0-5db6-411d-8a87-ca00c76b625f cf55f89c-38c6-4d9e-b0a0-4ce479de38ca bbc4c293-33a2-4a59-abf3-ae9bb7eacfdc eb8e65dd-d766-4d3f-9eed-b8925e001a3d 369a24ef-f2d2-4f00-94fc-318b165ef621 8a14d2e2-5a47-4db5-82de-766059e768c4 32a8ff89-ac3b-4a0b-89c9-2d0580c6da2b 23244abd-6a61-446a-abbe-d5f47b0fd864 99912f7f-c649-4f65-9af0-977b77507b45 394b6604-fe43-40e6-a113-00a7ff11f9bc 039a7a07-b1c2-4029-a61d-df5c12a4874b f4aa313c-3bb5-4179-9b8b-8f3225ea1c43 881c8861-e8be-47e5-8fbc-3c3ac78cfc1f b69a1141-afeb-44cd-9465-b0c259fd664c 71960fa1-9e40-4cce-9da3-23258dd7e477 8fc92bd8-b5a8-41f5-b96e-186f68910cfb 3ceb52ad-f588-4dfa-9480-dbf5435bce9f 78da47de-a490-4848-be06-8e78fd24d008 b8ff32d1-7cc9-4dc4-833e-7e3921ad74fd adfd20fb-717e-43d9-a65b-b9522865d924 2da514ff-c1c6-4f2a-a169-89c5ee360301 3bb02a9e-9a74-48d8-abe9-b66104de22cd a9468d87-c94f-4fbf-bf1e-f42df6be08d8 8565ae6d-1b40-4462-b1dd-bd49554d50e5 f874297a-2f11-449e-9bfd-b449d68b70a9 f6a68d74-7295-4ba6-aa26-0924849a6edd 1bb54af4-fe41-43e1-8560-9b80652d5880 0b573d50-6d21-49e3-a716-2fa1ec929b9f 757a903f-40a6-4fd7-afb4-530133c50eba 922872ec-2d6e-4c1d-a1c7-a2f9b24f8cb1 5c0d8d4e-477f-4ef8-b3d5-6fdac01bc6e3 a45cd4ae-66d7-472f-9a54-1896682fc354 57aeb9e2-60d9-4ec3-8d67-e54ecb15c00a df373b4d-5e99-4583-a114-715fb5641c90 6f228af1-21cc-4908-82f3-0503fb2cbe7e 1aabfa1b-12dc-463f-ab5c-04418ac49765 9b0f3a3b-c1ab-4ea4-af18-f7c6db84fb27 004a3a26-4f43-4dca-b1ae-bbfaf9da4da3 4314abe4-d511-4997-93b3-efd33dcdf877 92f458a8-c5cc-4ece-a305-986d1ae5d9c9 22981387-e6ba-4ba0-b7a7-c4fbf480e299 1808674d-1960-47c3-b245-a1eedfc87563 a42cb62f-1445-4bbe-810d-612149bc2efc 37d6a219-ef98-4e9f-9f80-a5e927204b68 7241262f-6286-4a57-b246-57ecae6fc928 228eed56-a599-4598-9908-01f924460df9 dce672f1-522d-4f4e-896d-2082cacef34a 5bbce872-8e44-48e6-ad43-f1e056159f6e e3fb3c33-014a-4a6f-8f32-7b69392821bc 9e48c953-f8d8-47d8-963d-042e820d51ab 50e86799-f7a7-4e20-8641-a05a0d94fdfc 1bb60f2a-e752-41e3-9ece-aa6a6d767a61 e87646c8-267e-4d00-95fe-21069cce34dd c668c1f1-d71b-4cc1-9c84-c7c8b699e79e fe5f9d48-93f7-4a52-91a7-a921251f7785 1a2ccd7c-2833-4f9e-8406-77cd4abdb5d7 3065615c-cde5-4aae-8199-fb9fbb57abca 3e1f32d4-bbb2-43d6-bc5e-519b143b30d9 522ff6b0-0435-4869-b211-e39d82ebd9da c04331e7-3489-4ba4-af65-67ee4bba5556 ee34591a-a04e-4943-935c-799585650141 cd5c3f41-bb56-4977-9db4-1e02403ed29f f6b57694-e26f-4997-88fc-3eb58df7bf9a b76a7418-e920-4527-9067-afd1906f0048 9f7719bf-9c4b-4458-94c3-1eadf8333297 63fd02c0-7b73-4e12-b348-3a0d71724654 aacda823-0c22-4732-8da4-ea65a3bbde79 f7f264ad-f1c7-48a5-917d-c0066837c44e 1bc6716f-d314-437d-bdf2-c33e5d366d31 53e8df3f-31dc-453c-ac33-ece04f7f6b8c 010eeaa8-8fd3-4d21-9b4f-09508561c366 1afff089-9baa-49fe-a150-29f42f2e9ba2 7defbf97-8076-4c09-b6c6-dda15147366b e2a8aa7b-e9dd-4211-9fa9-e45cc4a727ac 0371886f-e425-4f6e-bcf7-99bc77ac526c e2bb6a47-f311-4647-ae4e-d0238afdbe54 9eff17f0-fcdc-4895-b714-57ee8a64bcaf 960521b5-17e3-4878-879b-214404ea22f1 2061464a-89f9-4672-bf1b-f1896df29098 c917f8c4-793b-47ce-a3e8-03a0308e62b9 25e95462-d368-4e20-b6f8-11f75c45abf8 d6bca7f6-3f44-4080-a360-ce02480bbc9e 896ef3bf-405f-4f11-90a8-f4ba2d0a3b2d c8771d25-1510-4c07-bfad-49b41c4c8b09 ec588461-87e9-4a0d-81c7-085ae3be8b10 1c9eb3ad-217d-4e72-ab18-2cd7104e5f8d ebb7dca7-962d-4853-8eaf-caef9b98918e fadc173e-ab1a-4b6a-813c-2b7808ade07a 180d61ca-0dc8-46d8-87ca-32b76853237d 8369970c-c0f9-45ed-aad9-88e908faa23d 5346f482-f54e-4762-8d85-d33f475c8386 f650f8eb-473d-4733-9b38-964f85779494 d1a1172e-bedb-4770-b5be-b7456e584968 3014eb06-4c46-45dc-9339-45765b286c8d df9d38f2-a2ad-46b8-8d79-e09fb568229b 82a399a0-ec6c-4f3e-9aea-aa599cbfd530 2157367d-ad6e-4431-8db0-a8c9d6f492e2 8a291265-4406-4462-82cc-5135bd972c55 39eee98c-88c8-4b49-ad5a-6db7cd129d3a 940a1d16-bdac-41cf-8d11-be96d684319d b240ab79-1f88-4cd2-9069-e60e3f4eaff0 fbf2383f-074e-4266-bc7c-9583f564b327 7140301c-133d-47f4-8e63-3b2086b88084 80aca08e-96e3-4b55-b16d-32f658a79753 56ea1a8b-9bc9-48c6-878f-ecdc9a31cc8a 6cd04388-70f1-4f77-88fd-8380fdac1e5b 11543736-f575-435e-a56e-2dd3482bb548 31c1b309-7357-4619-a7d2-dbac71933f00 4ce8520f-3835-4804-b482-53650be1e14d 1b344c47-3fcc-4dd0-a125-8d2d86829d24 cf5c1230-1231-438c-bb35-bcb3ee01a7a9 c04895d4-6e51-47fa-9334-4244d76a8d94 357ca9e9-8761-4cfa-b852-e27cef75b52b 7b3c7c99-ccd6-470f-9e25-286e0efa9102 5e574793-fc30-40f7-9607-9ebe9065dbaa 9b1698f2-dd7d-4c89-b886-1e8ad9c07d74 514d07c8-abd9-437c-b4c1-e587a00cf3ea 1ad1a632-b0e4-4f4d-a814-b0596878881b 32faaf9b-e72a-410f-b6b2-43cb63854e28 5cf53918-0c80-4f09-811f-97a9159b10a6 eb4a43a8-36b8-4382-a7fd-d591797ad02a bf94d467-0e5f-4679-92a9-f12212789151 b3df730d-7903-4cd4-9ecb-9209ab61f03d bf2a2ff8-be52-4b18-9aeb-69fd02e31ec9 81467e03-5c32-4b3e-b0d9-74aeb3569134 b51de62a-9684-4003-8a79-2611d3a3f3ad 147d1240-d981-4fa7-935e-4d5e8fe5aed6 40d9e42d-e466-426a-9e17-6e6e329f04f5 fb1780ba-86c2-4451-a00d-3d70b77e271f 90706960-561f-41ce-9f74-21d41c3628af 5b4a559e-2449-4033-9cb5-99e63a48611c ef7566f7-200d-47dc-acce-55945c9ca195 4af9f5fd-99ec-4485-96ab-d6ecae5f6798 29a7ff65-1ccf-452b-8add-4b40e5ad066b 8bf425d9-58b9-40d2-967b-7194864bbb4a 738800ab-9c77-43d4-8e2f-25ae2eaf669b 64af0d47-1ad4-4ce7-8a63-80b12b73855e 17bc20b9-897f-453f-89fa-17fbbb0d7a2e 0196cac5-2dbb-4dd1-9456-09a5f03e1a1c c7ad7da4-e621-4a5f-82a1-5c171ff1bb50 c0696222-e63c-473b-b18f-c69591ed9cd0 4f6a04e4-64e9-459b-8c42-c12920d5b73f d3ba84d0-f140-4bfa-aa4e-9b005c565584 f541c072-8b36-4303-b1c4-a32298c4fc24 466a3f9f-404c-4aec-bd84-694549a0a29a bedca37b-3ffe-4358-ba0d-2bef651d49bd 4ddef5f3-3512-489f-abbe-809d7ce0fa54 2f604570-22fa-4279-9fbe-14c607a0bb30 4b178d9a-85f3-4e2d-823b-835b20e90edb f5528766-e72e-4e1f-b424-2e6e64368b13 d0b7262b-aee6-4409-b727-c021fd11089e d8cfbb28-2ec6-4175-8edc-cc1447812e79 276b9cdd-b528-49b1-bb15-c642681c1c62 b464df28-43e3-4a9c-9d16-e0289a5943a0 0703b16b-38ba-4209-8fb1-b68f0e3c49be 36bceebe-21c3-4ae0-9849-609578b12973 cdfae132-1e45-4581-af84-fc40f74daf4f c9d49f31-ed93-474b-baff-636bca344a68 722e0f1a-d711-434a-b7cd-16e356d2abdf c9445618-ebf7-4f16-8dd9-f403ac31ecbe 16934e25-bd0a-4ac7-8e84-05317b9bf8fc 94a8b335-cdda-4ea9-8be7-3e73c9316e05 7d14e0c6-6394-4150-9013-5c0814e14b0a 8440c158-2ee4-424f-ba44-db1dadfd70e7 036bb163-7e57-4831-8899-847445c1c0c5 5a481cf8-8c24-439d-a7c6-1a41eb39e1a0 671840a4-bf9e-4e49-b0fb-f85e7e065cc3 64368c4e-99f5-4323-b3ab-2f99d926f840 946f53d5-11a3-44d1-94ed-7fe8c34dfdf4 bc0ecec2-557e-4b6f-b15f-e7db1507280e 675bda3b-a4a5-4e2d-bc63-a85f274e661f 89a3b0c5-b738-493c-ae26-2710d2e92559 af95be59-983d-47b3-81da-70b4597fa2a2 55143d8f-1d08-4114-90a6-5ac038ccae82 705f648e-d53e-42eb-bf58-1b4c93360d2b 48a283ac-54bb-4d2b-a3a0-59592180e412 723463ff-8c3d-46dd-94d2-42a9df3dbf0b 19181937-0301-4650-90b6-d2c6ce5e6777 a9dbb046-7159-417f-9c85-c222f381740d b0efb53e-b715-47b2-8fc4-1fab379337c1 563f461e-141e-465f-91a7-5c3b63252ef9 7b6cf7d4-6bd5-4e54-9208-1483fe382531 dfb3a34a-eacb-4313-9def-4a5c92d40beb 2121bc2f-2db8-4416-82d4-bf43e3f14a34 eddf5a9d-28a1-4ffd-aa2d-e4eb3753b80b c63033ea-9776-41d6-b28a-17d915d0d49e 00544c2b-7282-4bfb-96f5-74e8212cb735 3843ef99-ea7c-4238-8939-e150bb315c06 8306adb2-1332-4244-a7bd-30973d2d4436 525a5dad-286c-47fd-8145-2340d030dc94 8184ff0d-5279-45fe-8bd9-ff7e19fb83ff a19fa896-45b2-44aa-8304-c153b8a9ce5c 7f5279f2-9316-4328-88eb-52bfbcaec7ee 1c01bb4c-ed5d-4445-8aa4-1031b6c95e5e c077c16c-bc55-4f7b-a762-212a417f0925 1f961060-7c6f-4eed-bde6-0b2c08c85141 22cc54d0-40dd-4b87-a329-dc907db71f6d 09610a15-ff99-458e-b755-a4eff6721768 3c1ad15f-cec7-411e-9f99-3972ce4620a1 700c1621-70f2-48ce-ac3a-945cd23ef7b8 23843289-f04e-44ef-907f-423ea155d918 c324593e-c714-4d6a-9c2f-472e0b52e355 da896aac-3c0d-49a5-b50c-f37e574a9f65 36a25a71-652a-4fbf-bd06-98bfe090f3fc 203f1f15-6901-409a-bfae-2aec4ae434de 81871a32-ec47-49ae-9e7a-68659b83979d cd2c5799-4086-40ba-94b9-09f313844955 5c843431-68b8-46db-890f-9e740addbd0c 2b29da1a-06d5-4bab-b63b-e61e763f3bca c28326df-cd72-4dc2-bd87-a22dfee011c7 a7e11ee3-2699-40be-b0bb-889944f2946b 4db5ef7e-6bda-4a03-aef1-5ca31a887ed4 3564e322-0c36-4982-9f8a-4cf3f8ffada0 0a366c03-7057-4974-9cdf-3a72b58a7c06 f95b4825-61a5-422e-8ff7-5d71afbcf583 97909da3-fd7e-4c63-b6a2-df053de61b2f 0030eb88-8505-4aa5-8529-31c7a4437a60 eff78590-67b3-4ab3-9711-a2bbd3c04145 46644b30-43d7-49ac-ac99-664c8f674308 7f0ff6d9-85df-402b-99b9-62f18b114190 6266ab45-e1c3-41d7-b282-f82b7934d9ba 4980f16c-32c8-4938-aaeb-266a1439fba2 7e80ce72-f11c-4825-9491-bed6c0c9b86f 035812d9-4551-49be-91a1-8827099f88cb 8f1be227-4b8e-4309-ae08-cec35c3fcc67 7f699f34-2017-4107-81f6-b04430d40a60 af0f0c48-d110-4415-a8b5-801db67e008e 7bcdcb7a-0712-4c59-96cc-961b19f0a245 94337363-4cf6-472f-8087-1d0edee35621 85364947-e2a5-4a13-b595-f914bc8da013 2eebbcd3-9864-4b2e-aadd-1c76420fbea5 e6726e25-4c3c-4cac-ab80-e9829c9d02ef 0949de7c-e495-4561-81ca-e4714a29af40 520764b3-f86e-4fe9-992a-79389263a66a a4c6afee-2e41-4d7d-b31a-a025efde6314 079e121f-e762-4535-a692-2517df3c7bd1 87a05ed1-17e8-4a32-bb6f-87859bbd9873 01adbe25-0152-4dce-b810-d6f541ae2a4a 768dbd7d-7314-46e2-823f-e5a491a69668 e9d79310-ca35-40a5-85f5-0930355f2861 feb1b048-4806-4afd-a9fe-4df94a18d4c0 4c5613ae-9712-4111-aa1f-7002e3bd8dd7 3f59a374-7cd0-4e2c-89aa-ae43d08362ae cdc46d4f-465d-4c56-af46-1cf6e70567bd 491cd5ed-8367-4e7c-9bd0-1c7c9c13b52c 3127619b-d0a9-4e7a-84c2-5b6436f60dca 38602a19-4b2f-4969-9134-67c4d68bc182 2a4a864c-8b48-4d1f-bde4-82c87a81148f e7ee35ec-d2cb-4766-b10e-dc965aa40fa0 64dc9091-1c60-4b89-aa76-b33c5f38e4e4 b7dca50b-b682-4f90-a0e3-494a3c51ca53 bd591ddc-501e-4566-81b1-8847b3ae4a1f 0ff9eec0-1388-4571-9c47-a976f485c443 9cdcd156-2360-4904-be7a-68a7511f50bd b8dd6da1-8c55-474f-81bf-03d7a01cd0ed ede0df2c-13a0-40b1-8a87-93269be3a1d6 ff25d460-b248-4191-8058-f0a23bb3aee5 01a5d38e-8fa0-478d-ada5-371b0a4bec16 84bb5dac-64be-439d-8da0-881757fedb4d f87f3a14-93d6-4a74-987e-2f3e6bada8f4 2c3609db-e01e-461e-9c7b-cf1ca22865cb 1988f71f-ba8b-443a-837d-9f42e6f28e0d 6ea026d6-b285-49e1-9713-de686207f415 6910656f-a0d6-4d54-96b4-841167a8f1fd 2aae3a1c-96e0-46a0-b939-40722d0c62c4 adabbea2-0bf8-49d1-baf5-40e6031df151 b9ff8d3f-218d-47f5-99ca-720f116b081c 470b87c8-a087-4478-9a68-59034ae03084 afe0cd07-bb13-423a-92a5-c405a7826b12 4bf0dc0f-fa01-461f-9f54-cb2fba9954b6 2232e290-77f9-480c-866a-41d6dd70ee5a b9621cbe-4679-4482-89a3-ccb2eb2acdc6 32ca7557-33db-4bfb-82c8-b7552b549c5c c3b5c65d-aa0a-488b-af24-b7adfa81b328 b61180cf-3d24-4053-af69-9b16b410838d 40840853-2b94-4965-a84f-8ec8507895ec 701529d4-534a-478b-a898-f877c6757149 07d4a9b5-583a-4813-b788-ce9489aebb86 3b340013-6b29-4631-a40f-14216d8c18f9 d559fed7-0b76-41c6-aaa6-9ed5425a237e 64d7db01-60c1-4b44-938d-881e65435f58 63ce7a82-7d9f-41b7-8f7d-c8dc2ed35cf4 e6c5a3ff-5e20-4c55-92fd-bdbfa27f219a 006e96c2-82c4-494a-a309-2de7b80ef420 e08a3c53-964a-4d4c-993f-8531c9fae7ac c41a6c7e-b55d-4b8c-9d78-f72b99a3ed7b 6372d913-ddde-49b9-8698-35e4802081be 66284303-f7dd-443b-ac4e-be0cb007ab21 93863a34-8b03-45b9-9653-12d990f96a79 e90cc955-27aa-42d3-84a3-60de3bea10b6 ce6eed49-b508-472f-af40-be34b8e9dbf2 0fb05672-e931-4ae3-a461-b6ab5b98b356 8319826c-0b85-43ec-9230-f9e3d46bc822 40b9aee1-a4ba-4154-9e31-25d907ed0a24 c04019d3-e104-4515-8b61-1ec2196adc25 2126b591-1fce-4f73-9e1e-b4ff8aeccf0c 5d03dd43-0341-46d1-bc9e-8b997c180eb5 a33df15c-ef70-414d-92e8-a9f2cc0f6282 ca2bbf75-27b8-48f4-8fc0-7f13dd156842 dc03d15d-8cd6-439b-9148-e2472ac7bea9 69bd11ae-e8f2-46d7-8c43-b687b8639c47 2e15ac67-bb5a-4cef-aa0d-91562fef9055 37ff2c80-cd92-448f-9c2b-3fee4703870e 3d872965-e846-4cc4-86bd-97ccc6eb3a79 109c0c3a-6741-49e2-a3ba-9455bcb93ca7 08993c4e-b97b-405e-9182-b13120cdf0c5 fca6cacf-898f-4121-8e04-764c6a765adc 43fea8ff-a67c-407b-9bda-214b9329cd22 eea3f48d-21fa-4048-abde-374f74ce6fdb ba5fb38d-7656-4240-a61d-cf5ca3e5240a a9eb92e8-898a-4c6a-ba7a-663dc5337de4 5dd42e8c-b870-487a-ae9e-1f3e3d844b16 8dc53b4e-7659-493a-990d-b7286a46eb48 4583abf5-0221-4681-a628-acd06212f1f6 18854ebd-c8c1-4c8e-b1b2-308b341f2b8e 006b6ec2-9ad9-4f8f-b8b8-9c7708b8239c aa16189c-95b7-4c65-956b-759128413508 0353d1ba-c0a2-431c-a594-25b163d38df5 dffd8ee2-4f3f-444f-bccb-9b4042393c29 e95c5526-36f7-4d86-bcc7-7489c30c70d4 6a96e9a4-3546-4074-8afc-2d95b2342f99 26958dc1-6f91-4142-9272-f4d1903b788c b568ab9c-eb6b-416b-ad66-df7330cb82a6 8bfa3eb6-3d11-4c4b-970c-643ce8b9494e 8d39c5b9-dd75-4d08-bf27-0d72cd8b654c 94e8ecf6-270f-4b0c-858d-aff1e4443dc8 b3ebcaa8-0a31-46e9-8966-f61993c17b09 ae33e890-c039-4a6b-8560-97891671675c 2cc4ff3d-5053-4045-9767-5652c6ee64fe 6ace1b11-bc88-4d02-9d05-1f79f58e9bf3 f6d7c75b-fc6d-48d5-a1dc-df55bddfba87 931a8b2a-a281-4f39-a69e-b7f512a0e18f d91efb9a-8573-434d-8d3d-84690a36849c e8332b1c-d16f-4fa3-b35b-653b9b7c2245 890da45a-0534-44c8-b172-8bd5752457e8 b9f9d98b-b57f-45a7-a306-d45475634597 f6d7cf69-f051-4d15-8873-c39fc8644601 6d85767e-a619-4f7c-88c0-1fe4adc5435f c3cc85fd-7be9-4aca-a1a6-5040f0b91294 d4bbb224-f94f-4139-b744-a6db166b7807 3321bf8c-1110-48b5-8f4e-814fb3dc9646 537f416b-58d7-4234-b3ae-3960d276ce70 1630f1f1-587e-4f63-be16-bf9d202a083c fd06b3fe-85fe-4015-952a-978690776549 9a4d967a-957f-4f67-862c-c10c671a853a eb9ccbfb-d94a-4b03-9b5d-4aaa14012549 0980da2a-9304-4d65-be4e-620a02a4825c 7a810624-1731-41dc-ac24-34d25334f3b4 160ccda1-0926-43f1-8e2e-69110b965184 57aaac9f-8acf-4124-9371-1750e9685b4b 80928388-0715-4634-9a1d-61de99d6453e 5280fa8a-c171-4a01-81ed-6409c0d213ae 1385af9e-e5f2-4082-9d59-2c3e45e3b9a8 fdc3070f-dd0b-4949-bb7b-505f0007cc2e b70db2b2-7175-4726-81a1-557a172e3cc5 23d1d729-dc6a-40a6-9091-0ddadc567e76 9bd8c264-d86e-402a-ab6c-d43a54173e0d 16d5e4d2-a4c7-45bb-ba54-d0ea1b483315 867293e9-d00c-4e46-8c3d-0a4e79c64687 d45c656a-d612-43e0-84f3-9c841a583b95 5ca331b1-f076-465f-ac20-fda810a59e14 e1d7667d-714d-476d-bf49-fdb37dadc99a aa8acc72-d3d6-4c56-92b0-e69347923980 b3223a35-1d38-4c73-ab0f-942e7d6ad35c 2ad85d75-8f37-47bf-9428-5ddbcabc237c 77d9fc47-0fd9-429b-878e-2272daaecf80 4cd5bba7-8645-482a-8485-43e2d2e83983 ab57aea2-24b8-4cfe-a4db-de7632baf07d 120b7500-e61a-43df-8ff3-06a2a3d75c78 91f97abe-b2e5-4542-8622-b1dd78bf8f44 79ed3cb2-89d4-453b-8853-76797f4cd9a6 4818ab1d-a847-4f47-860f-d9fd17cac686 3049a06a-5752-4380-9371-55573ee61420 9456c789-ce32-4d2a-a668-068d2d2b658b 1ec5d91a-8f8b-49b0-9f1c-f02fec342801 bc1ec3be-a8b8-4b2b-ba41-4e5bd3b3e1ab 9f597752-9cdc-4a5b-94c8-ff152274a8d1 abb8befd-c78a-49d2-b919-ede0038339a2 d4615d52-f8eb-4cbd-a103-d31a51e53dd4 ceb705d2-9c12-4c09-8306-27caac61fe6b 9c574aa0-7c5d-409a-956c-18642d26cca5 53c881e5-402f-4bad-9f4d-e8470b3ee2fd 188a98d6-d674-4247-aa0f-dcf2195dcf53 38e1a6ff-6e42-4f9f-b94a-3335fc36e8e2 1d428208-5be2-4c73-b432-55358dd2a835 f04bb762-cadf-40f5-86ac-2a1ef7db7173 941ce7d3-ccb7-4275-b5a2-7577e6839c64 216f2803-ae93-4feb-9aee-2a03c167112b d096b962-1260-4c1f-85b3-f6c1be5b83e8 e469687d-120d-40dc-996e-cbdcc6d2185a da444210-9c44-46c0-bdd7-ff43f8eca055 f83ecbe4-431b-41ca-9927-ee22aefa11b9 ae2cdd7c-b4d0-4b91-b3a0-347661bc9afc c1f14c53-3be5-460c-b775-88d66c777fae ba3f66a1-7835-4e31-a34e-f768ab7e23c0 1bf579b3-a7f4-4421-b55d-87f38604720f a0f2af32-9820-4574-bbf5-cba4d76f2d2a a9d653ee-96bc-4df6-b750-d2dade14d5ed 0a3156e2-06e1-4634-90ae-a1e1b1106c34 ad4951d2-530b-4942-8511-39fc4057eac1 a2263f26-8fdc-4a51-8e43-5a53ea4186e5 c2caf3e9-06c3-4bb6-982e-611130a9596a 463c7f88-fe3d-41ab-b2a7-f5abd038d6b6 11aa29f9-ba32-448c-a249-d6311fc29cf6 98c22dcf-f744-4287-a08e-919155035eba ce676a89-c881-41b3-8494-a95e51d7f88e ebb91239-8be4-4de3-a5d7-07c71b5d0ffb 820fdbd2-70f5-4a74-a27e-be58a72a14bd f38a291c-cf1c-447f-953f-6867aa9076f8 032dd2c3-d5ae-4771-99a7-8e542ea57dff bb9538a2-0344-4830-9102-e6c45f36301a 9cbbe08c-843d-443d-b454-6aa886c1f07c c83754b7-a22f-4f9a-a527-ec197d3089f5 d4463f78-8a9e-417e-bd29-334fcc7dc586 7899fed3-2071-467d-b916-57a5280e64eb 023b2d21-0a24-442e-90ae-e027f6b836b7 6758fa53-ff31-45fb-aa05-4e6a0eec96c3 92eecad8-bf93-4103-9fd5-c68b6d1686b3 53796a95-cb8a-4c04-b7f5-8fdc64340172 8a322562-9705-4904-857a-fd5be5158032 b5c96fd9-b0c8-4411-9635-49d414342cb6 ae43b786-6675-4766-a5a6-665578cf120e ae2a31b7-7ad5-44e2-98ae-8679b98de90e 8a2a6ac3-cd01-4bdf-b8ff-1d703a49e0de f4763b4d-d0be-466a-ae2f-6ed511140afa da1d3706-840e-42e5-a88c-f95614dfa861 fe12fe04-c411-43cb-9afd-961f9b685cd7 a10304e5-be33-4e51-81f2-d6cba6cc7f5d 6328689a-f289-49db-8a83-334b21351093 03ffaafb-3deb-455d-9ac6-b4d7fda5ffb7 54300806-7d57-4afc-9b40-d4e92baa6708 ac8f37de-6a42-4966-81a2-ff6d48e0cc07 1d3e0b35-69fd-4bad-b2bc-4bd9bb9a82ff 8a7abffb-4209-4e25-ad8e-8ac8e44e9dfa 4c79111f-4d6b-4c4e-a80b-a82b370d4386 58cd9e4b-1c60-49bd-8b5d-d1b1af0a6f00 0318df3c-23b5-49f3-ad0d-610c91ecdaa7 0983068a-060e-4ccc-b536-027b58a0fa63 81e70245-314e-4bc4-ada2-47b412375d1d 53516f51-873b-4fc0-9b63-c6c9242c892e 80856951-a817-4c00-8a56-2216bfd4696b fa4d63b5-b5c2-4999-a063-c22e08d11994 88827fec-1c98-4577-a137-18d8e84a7209 a4bbb0f3-b792-4908-9812-12e76facd2ba 2b0af919-2301-4445-8d27-b5a64b71fa79 0968a663-c576-4b44-b238-1b8c5b9a61db 89c3c969-bd02-4a35-ba21-d1a8f11beb98 d9935452-c876-470a-b9a6-b46cbb7b73da fbd15193-3557-4143-9507-b97ac71a6ad8 ac8aa2e2-1fc7-4773-8b6e-b99b373e0ffe 67ec5493-4945-4794-9a78-274f088b75ef 69f17f27-7832-44f2-a52e-aab27c7ce5b4 cd9fb9d6-90de-45c5-a707-45b200357b08 cd018499-359c-4973-9c50-500fe9550795 b1f808a9-ada0-4279-a4d2-c5d45403596b 95f5827b-dcc0-49f0-9705-4e792d10e795 e4171a9b-c500-4b8c-9e00-a958f97e9bb0 125ddef8-7649-42a6-b546-56d14755acc1 b87193ea-edef-45cb-b2f7-6dc593d9721d 7a643b18-5e75-45bb-9310-bbb244273b8b fdefdcb3-24c9-4579-ac1c-e4b4821b0372 4583231f-ce51-4ccd-af15-91b40606a9e8 f1c0cba3-9212-43d2-816a-61d751bc0307 3195c128-68a8-4d10-9292-10399c3c151c f6cd6472-cad0-4a0c-8c93-f2e7836ab24c fbedb9b7-1450-4ce9-88fc-e5301a514251 4746775f-73e8-4b92-b91d-12e5d6023d86 13795b05-07c6-4e0e-9341-d116e9701046 88b124e6-2818-4770-8f2f-1cee8690126a 3dd4df0d-8612-4fae-bd66-7a57dd8c81e7 e900ab41-b274-4c77-9695-d2ec7d292649 a093e47a-3a2a-4022-9a35-d3e4c150b481 93159127-2c27-4530-aa70-2f5ef1deab3e 051adafa-56d2-4cdc-9686-41254f92bcaf 34e0ab6e-d8b6-4752-aeda-aeb987f913f7 06657828-eb18-405e-a2b2-7faa31a67540 cebefe63-ab7d-4df5-a8c2-97f3fb32cdb9 05b3b4cf-c497-40ce-a3bf-217d309575b1 47e2103a-3ecc-4444-8894-4b4ddccc304d 292d6f69-60e5-4768-bce2-d7dba67f5429 14894018-2b6f-48c6-83d1-14dae10c85ba ab82a8ca-bea1-4f75-8d63-0b9ecfac9785 e7fa6d4d-ba78-4310-9128-c0c0f03c103d 91dacf1b-6593-4816-9178-677d999a0805 18c7296d-e3a7-4d38-b61f-ce23bc7623af c6068b10-d990-4e74-8b41-a77b019c86a7 a0985cd0-4021-4fac-aa43-639eb5bc99f6 f0218ba3-053e-4b7e-813a-6d39a7d60ef6 dc5fee76-4b34-406c-8dcb-0a51ba765fb9 55830ae2-42e6-4e5c-bef9-b796f6dc73a9 65133173-f978-49d2-9f18-da03ec434699 65b307bf-5cb5-44f4-bafe-290af36635bc e1682851-c2ee-4861-ab20-68f7df5cd084 6ce2ce00-65c4-4157-b068-69d3c52a658b 8b39884c-8129-4b73-a64b-fadd81d57716 f21c70c8-eda4-4750-8430-732cce545ec5 671a17c8-60df-4fdc-9a4a-6c040263e46f 68331b64-9617-4726-b28f-a08a82d28db2 e511c978-f7b4-4757-9593-715c23551e8f 4f274861-cdd6-4f9c-b7a4-3412879250b9 eb2b37f5-fdbd-4e20-83d5-173b2347460e b8d6a5d8-b255-4e27-9cc0-d868f78a9fa4 7f1e38f3-591a-4253-829d-3bc984a3ca81 d7c374c2-662c-4684-85e1-eebcfb215956 b11ae7cd-c44f-4d9a-bac4-a7667b45c9a6 2310bc53-7aed-44ef-93df-004681df950b ff7089a8-b5d9-4ea8-9611-6ee7ff5bb73e 678ae53c-646f-4ca5-9971-503b01028609 84bcac9f-3bc9-4254-91cf-bc1e6b9b772d ff87d340-ef6c-4bb4-a0f7-eeef0249a31a a8981a5e-296b-492a-a988-feb8560474c4 4246d68e-d824-43bc-ab4c-fc69205cc175 73e561fc-75ac-4770-8233-a699fc28ae65 7224b6b9-056e-4faa-bf62-43fe5a08c53c 8fd62e0a-3894-4412-aa47-f1b5604ea861 e041ba5e-a92e-4f62-9a16-f2c7dfe53280 23968bf4-65d8-4dc5-b135-bd531e3e60e9 c16a6095-00e6-4b8b-897a-1a8a3d8f36b6 79af4d2d-1768-473f-afa2-37b13ad7b428 6488e123-2317-44cf-be46-841d5fd66242 cd883443-ed6f-4028-9942-d316b95ca6f0 08275478-6587-407b-8bf6-90128d0630a0 0ac78c47-73e1-4d72-bfd8-7432e9d71ad4 f0c4dd67-db1c-4279-999c-7ae328b29532 0c83461c-c404-4c16-be1e-c3cbcb35f194 c4720e69-4d79-4d04-8553-1cc0c10e783c 5707d760-13ce-482b-83a8-2e452fc8efc0 969ea5bb-3c82-49b8-b2ed-d20be27d6950 5bf97b76-2e0a-4d3c-b69b-030d4a272a79 93eeb9b1-b013-4d83-9f03-4c7e3d9aeddc 8245c190-37eb-4bee-8c89-21a20d0af307 cd7ca62e-9bbf-4936-9a98-be0ac58fd05c 6e1940bd-bea2-4c6f-ac66-f4ec9d364cae ab313862-84b9-4b7e-9ebc-45be2e225e8c cb9658f5-3575-4845-ac5e-ad6defa6e188 e5a9284e-c782-4923-a2b2-547abda7af0e 21355303-c6d6-42ba-8110-9c9d6a7fb101 368f0e4d-2022-4d32-993d-37607df1bf4c 06eff95d-2702-4e3d-b7f4-839e96f61aed 1977e3ea-4a11-4cf0-81f1-015db3e68e47 56cc09d9-e969-4e2e-8071-60523be91d17 b9ca1f5f-31d8-4f83-b377-0d116f9a564a 11c563a7-df2f-4bb8-a3a1-f11641659531 745214c6-8790-4127-af98-c9b57d733845 e77ed013-58d7-4728-a201-d92aad60994b 6df06710-b7ad-4432-8b7e-27ee0be50be6 95ff9133-f695-4101-b3e4-349d687f9b77 7bbfbef6-5832-4150-8806-18eb62de9ea7 f25d19e8-525f-46d9-a84e-e2b54d19f8bf 93ae5d1f-b384-4a46-9ad2-fa5bb1dacc73 163c1256-bf03-4810-b4fa-e9c806d693cf 7cb59bcc-e63a-4af5-bfb8-d97b76f7e22b fbf2d924-5016-4700-9b55-4685934217c2 9a360bab-4082-4bfa-9782-294499b5a0c3 3a2f46f7-773c-495f-acb2-589ea5a79efd ec8eab3b-f349-4c3d-8150-701b68d971c6 28579c72-1757-450d-94b1-8ed03bc5180d a8e6de4c-09d5-45bb-95da-42511ccb9417 05add3db-2db1-4649-8e57-8f29b6c5c080 067026f4-f83b-4c00-959c-5a66b46feeba 854b1b12-5d17-4a29-ad31-d987e50a89e0 a6e473fe-a554-454f-8e05-8dab768867ab 1fe4e836-8679-4f29-b11c-983f981a369f 0e01f63e-7fbc-474b-97bb-eb15a999aa51 045de0e8-dab0-4df9-b4cb-b56de7eb7536 dbe9db2b-f808-4467-bc55-6c5298a71d0e cf598afa-cf3c-458d-b222-54d0e8d4cfda 0618384e-81d9-4f81-beed-7aa05ca9a09c 1077695b-2b82-4f40-84a0-be6ec5a74a40 da4804a1-76f2-4111-a163-c1f89e4e70a0 935182dc-507c-4347-a81a-0578798c1629 cb9fd817-fbb1-4ce0-8f48-c943d6aee560 75cbb47b-9cf9-4bec-9e9d-24eed4666591 6a57cdaf-755a-49b6-bf61-9d5baef600e8 5e161dc4-d786-48e6-ade6-8258fab7178f bdfb93e3-8525-4a67-b8be-b3c09998fa02 dcaf4040-e031-4211-8f95-d348de89c833 82890c33-3531-42ec-b24f-f503f2fdbaf1 b463f914-dae1-4926-83c1-702609e788fb 1afb290d-0c3b-4258-a6b4-cf45fb9e1c60 9601b19c-ac15-409e-9dda-801bcccbf81a 30a556fc-3d13-44af-9df7-f7d33991a916 b1f9a064-e3bb-40b5-9f76-6542aa7bf826 292cc383-3f44-4ce3-bd58-9f904d88afa8 ffcc64f9-6957-489c-b631-711a8f6dcd5c 02b68fb1-8a1b-47e1-ac39-0d5a238a835f 2a2e69eb-9b04-4e7b-a3b5-50385657c3bb a94eb9f7-2aab-46ea-bd5b-cd30347a9803 918ea904-1a36-40d0-b8c1-8d05c4e35bd5 e3f8a7db-9d2c-43e3-91a8-e5891bd88c7e 9f1cf052-dd58-4c90-97a7-88834abfffd1 90c9cbc4-6d71-472f-901a-b40205231816 1b37ad7c-b846-49ab-8abf-ef77c6d0c9ed e76653ba-0854-4632-9e4c-b8fcfa61d2b3 ebce44a6-6037-4bc3-be21-2b6edb34329e 60e13d0b-428d-4d4c-9f14-ff951354dc90 fd3c59c3-c41e-4abf-b99d-5877c6468b77 29a75b54-e1c0-4264-bd46-f723b63e5835 9ddd7406-539c-4a69-ab76-1f29c059d4bb b049c412-510e-4669-9644-30199627a298 bb50e265-1f45-4c66-b9f0-23f292925bd7 2f8da1e4-77cc-4085-9739-0ae74d565cdb e98ea7e9-8d56-4069-aa52-7f8f3ca30cba 577194b1-a4df-42de-8af2-bdcec9b428ee bc3daa1d-a13c-44bf-81b1-51f05b15adc6 86b83e5a-088d-40f7-bd66-5f8500dde0f9 2dde0d79-a780-4a43-8baf-ead0e140701e afa76a6c-8f1f-4ca7-84d6-259183931848 29ffd8ca-2ee1-44d6-b891-53de6caa6066 50596e13-0f8e-4bcc-b0fa-9a8bb2498b91 872462ff-9237-4e45-ba50-5521f513e419 ddb2a2fa-b4fc-4f77-9703-665fd6023c8a 32b28494-9d5f-4e1d-914f-b92e09f51851 9a772da8-733a-4494-b14c-5c743e9aea06 ef811012-7bc7-4587-9ea1-4795e918162e c3ed1ff7-77fc-463d-90a9-e22edcd3d9b1 144d2831-6b08-4f69-a2e6-eada93f78250 3f1510ad-e79f-493a-870c-d33f8f4dd5cf 072c7f3f-6b75-4044-90f6-8dc648fe4e03 ecd2a491-d197-49a6-8fdc-61b873c04279 a1ca3914-6ab8-4476-aab6-ec3c0078d5ab 243b125d-aa99-426e-98cb-46c7fad7d7ae 6ae96b71-2d3f-4a5a-b296-516d555d8593 16adc6fb-6695-4737-936d-96b049f94c32 267d6d99-7047-4652-9a75-31e568fe0d04 89de009e-f53c-4bd4-a42b-f1c2606cd1c5 91876f23-309e-45c1-b0f6-cf714f9bc0cb 32905311-aa80-4667-bb87-8b0ce19c0aea d25dad46-5e08-4885-8efe-5e1c0f0f9aca ea3efee9-a369-441a-8b1b-745613fe712c fd823e58-85f4-4ff4-bcb0-db430b639ba9 c430f429-0c4c-4720-89bf-79d0cf818056 1623fd57-1b57-4f36-9619-a6d6ca7cb75b 9ab3b503-aca0-4d2c-94bc-2cb364bc3a36 4e8ed79f-0fb4-4fa3-b843-6742ba28d1c5 6b0f51e7-938c-4910-9e1a-0ceb762eb3ed 3205288f-1627-4ce6-ae1b-e0bf918f677a a12560bb-d3e6-4289-a5d1-03779580eef9 822f1dc4-07ab-499e-8d52-9ab7b0f14146 25ed5b24-808f-43d9-ab8d-6e41647c596d 484fa770-5c55-44af-b16b-53ce965fb2bf f05ffc4d-9210-4a31-abba-f03963726f27 7db0b54a-2f67-470d-9a62-7e083e511ccd 0d55262b-af16-4b2f-b437-3e406e6f842d b585c281-eef2-442a-ba00-3ed6b83ecda3 60723cc7-5cc4-492e-a880-6761403412af 934ba8e3-083e-4288-b9bd-409da922e543 d90af31e-afe4-45c9-bf60-86d40a01a332 8fb432c0-05cc-4023-b331-4cb54febeeb9 ae425d16-7659-40eb-b268-d75fa99f2626 6831d021-dfdd-42a2-9721-4346dae933b1 c7d743d4-fd01-4ee4-a22d-74c99e8bc588 701c2af6-74cc-4432-85d3-19c4ab1245f9 f9850fd7-9e2c-4766-9c6c-5cea674bc540 2c703266-2d15-4e92-9986-7a8b56ef4050 85fbb416-c4f0-4b22-a857-db0bd1e5f59e 3d19f041-4842-4cb0-9189-1f47f33ab1cd b9693171-2f86-4253-a6d7-46c26016fa80 4f15d9d8-b1cc-4e4d-8bf5-adba86ba5a0b ee4f903f-4b4c-41d7-abbb-2a4b1579b9b9 b961bbf5-4772-4e91-8526-1b6b16371246 9f8535d5-05d7-41da-bb21-d86e61049dbb 5630a754-72a1-40ca-b820-8007bb33725f d2b70449-caae-4082-b263-a03c53d9922b 83f6d4d8-d7f2-47ee-9db2-9e9f0d9514a8 dd8f46e1-0afa-4941-8113-dc76445665b9 6160fd34-2ebd-4a96-924a-f38c4f5c50c9 197d8655-2853-4d64-936e-6faed66a06b4 18aee960-f2ec-47fb-8f70-f4a36ca2abe7 5830ce7a-3c89-4140-8166-89ab6ec1f7c9 abfb8442-a81d-4cfb-a644-4208738c71a2 89cdfafd-b34b-447f-9130-e3ef2bf5613f aa159a75-45f0-4121-aa8e-3b3cd5ce0205 f25abca3-f5ed-436a-82fe-e4d354e35cbd ef4bd585-10ec-4bc7-93fe-734db8318b01 d3148aec-3fda-4e06-bd38-7ca9f75d902f 4dcb9e94-c9da-44ca-a61c-0d301b919d3f 0edad822-db84-4591-84ff-90eefe1b836c f064d187-f191-4a0b-9c0d-047a34b9e3b8 42a4a428-d036-4552-b51b-0d9a93fff1e7 11a00a22-07af-4a33-9677-ff9fceed0a96 cb69a5e9-8972-4e03-be52-fc0a84530a15 116ba542-d8a5-4a68-ba40-21f9b0b1798b 2c0e07ad-2151-477c-b048-bb0852f69f13 03a46415-fbbc-4f2c-be33-3567e21f82e8 e7bbaf12-98c4-4613-a9de-4fbb3a5a5305 8b9cd70e-0f27-42c9-b938-bbc101fe6b02 7a5fecdb-695a-42f9-aaf6-c53f5f4fc3be dbe9e036-4f23-4f04-8868-baecd14f35eb 36b1e9ff-bcf8-4e88-a129-b494ea8b623e c9796dbf-d16e-449a-868e-a5abf6594ab9 ddb3e00c-80b5-4ceb-b778-9db136854298 03e34645-fb63-4596-a4a5-70a29a671203 5a558e6c-3a77-48a3-81ed-ddd78cb35804 a9a5ee09-f351-4761-854a-e2265d7bda5a 63011f68-83ab-4377-b641-65f62dedabe8 d840fe0d-9802-44f8-9c7a-2be8292a3429 c5a89d45-325a-492c-856a-cda58f09f854 9cfd6575-a7f8-4d67-b08b-d8e7b597e0c2 06601080-b9bf-4bc6-9a9d-fdddca88ca9c b55c1f44-bb95-4e59-a4bd-da3fff3fa9e5 26f88cb1-decd-41c0-812d-d257578da91a ce061981-fe89-4aea-a68e-d4a49e49259b 0b1017b8-c4c1-4163-9cde-6dc654ebdd94 46266064-fd57-497b-870e-2a6744c1513e c8d0f655-983c-42c1-b986-72dfd77d7e5b b0745685-a5d4-4f4a-8e3a-72af28c2b6c4 ca149f83-bd52-4686-81b5-f9f6807a17f5 4c2ea92c-e11e-4c7d-99f2-d82e5070a8fd 41c1ce7f-c298-4927-afe4-a24606688c43 1149ef81-1eb3-4e42-b12b-6f791c057bd3 a09b1e12-b197-4e83-83ac-0a2a115e920c 37e1cda7-f912-4572-a001-1a13fd94e932 b2522bfc-5eba-47ca-a4a3-df5de7a3ecb9 0a577820-6baa-4e98-b422-01436b645e27 ee8afad0-f7cb-4aa3-9c17-2c431d61402e 6724c154-cb57-4aef-a70b-914cfb4ed830 801b7673-605c-4798-967c-2def9c564ae4 4046e78e-bb1a-41f6-8d40-9dd209e73243 6127829c-b7cf-4662-a58d-5fe6db574e04 fdd83c37-1900-45a0-8821-e56e1ef79d80 df9bc2c4-b083-427e-a659-cf9baa343293 8cece43f-a06c-4e12-903d-48a725d77a45 47b9ebf2-6714-4176-9e46-8220e37652af 3109681a-4e12-48b5-b9fc-a9323df49931 d2c1ad7a-b611-4e12-80d6-77d7e878b769 a476b1d1-a09c-42c6-b851-0be5cd02b0b0 387a234e-9c4e-444e-bd4d-e544c69abe95 17bf5107-6d76-4f22-8b0c-d853247f9635 5e5ea3ba-6c01-4ab0-bf78-d12c2b1cb779 11802c25-969a-4d58-a2b8-9f881d2a24af 5c711024-27c7-4772-9e4d-50cec3b1645d 79211643-d076-4297-9232-77c02625574a dd6a2928-42f1-4cfe-aa2b-00e57142eb04 1bbc0888-3b5f-445d-97d1-1cbb603ff2fb 9da2c221-baf1-44ea-b3f2-3884303c053f 74b593f2-a993-4a7c-9cf2-6a340122a04c 780f26c9-646d-46d3-a65a-87abf185d810 42941e49-aaaa-43e1-87b2-7c1327f05d95 349b6b0d-ee50-4157-b5cc-662a3608e1a5 ffb9f9aa-ec17-4c96-a434-185df14eb933 9967d958-a205-49ec-bc7d-9b5ef7ce05f2 a428c81e-99a8-4e0e-81b9-e03cd96f1da6 e4a5ce01-43d0-4c4c-8586-c4a7c9f3647f 1e649e41-5aa2-4df6-a175-30bfa8be6717 47bbc229-a903-4fe4-b646-65d38ea56285 2dda1f6c-dd84-4247-a263-7ca94f80088b c2900023-b814-482f-8038-3b54c5f283ad 86006e8d-8ed7-4804-aa50-65341f653c21 52733379-3d21-49d4-a3a8-52b0576f54d8 556726e5-6e8b-4973-8f05-f7800e602b81 30e2d1ec-f2a8-494f-a8e9-5e8beec3a67c 73d0ebdf-bdb5-43d2-9154-760e8f6bb58e acc1982d-73e0-41fd-876b-16246e315d19 d7988efb-ac0a-4140-b167-f07a18af85f5 aafec4d9-9a63-4bec-9ba2-41046f3252f7 acf784a9-eaf0-4157-8fc9-980b96b1c7b9 33c288f5-55a2-4049-b96e-d786d95dbdb0 fc4f16fd-de99-4b98-bd30-2bf0a548a6ee a773a510-52c4-4a9f-823d-a62ea18f4c18 764e7d92-6fa7-4306-bf8f-1367bde934a6 d8ecf18d-b95b-43e6-b125-ea5dbadd4fda 1708c95a-1e22-480d-9860-da1cee4995d3 accc9f65-dbbc-4028-8a85-155367c3f069 5593e59f-7b61-4663-b665-32c96b41605e 9bdd369e-c1e4-42d4-b1e1-cb82ed8ed165 88018ca6-b53b-4f86-a9ba-f951f5894b00 edd9dbf0-75d3-4bd9-bae1-2d6a5a5d10d2 00c529a3-4d36-47b0-bbfb-ba6c848ad773 20899f10-9722-4348-9448-e444a7ae6238 5c61833b-03d7-4c72-9f57-35d0c269614e c1071b92-8dac-42e5-8c69-0d67b8e74af7 43128f76-aae8-426d-979b-6599d7e159ba ddbc1287-2669-4c8c-99b2-48be3beeaca3 7a37c79b-6134-4f5b-980f-23d70b6b8932 933ecf93-846b-4570-ac94-5a5467132b53 36e703a8-39ab-47b4-b2da-515d68d0d3db 45611cef-6cb6-4071-a6e3-8c383d9dea3b 401e7fb3-b55a-4c89-a2a8-1f0e0ab0fc44 d4e12cbc-549c-4f91-81f9-ba62634106f6 da7daeb4-b2d9-4a5a-90df-4eb8e2ab1eed f1bc6328-5759-4b43-9fb5-909e1bc77089 dae74250-d32c-4ba9-a27c-d7d339248f38 f5b4ca6e-36e4-4f6a-b935-a60d28a23930 b8cd8b55-2ed6-4f97-a308-b41250b3e29b 3c2ce27e-6579-41a2-8421-b543a609738e 96cdab27-4cba-4e91-818e-6d557b495b7e a4cb56fb-f057-4dec-958a-83ad52033d56 905bbf90-1ed4-4b21-98a5-d6b886e61b42 0938e442-52c0-4aad-943c-526577397c3f 37158455-d80c-4197-a2cd-8d20f77f79a4 763367c5-2611-4092-b30b-e1c0059befea cfb8f1cc-ab10-42d9-8911-54cfb35fbb89 a218b651-4a23-4112-81c3-7cd4268ecf61 756c2c93-d4ee-4cf9-a709-874feccf2323 0c109455-9ea4-4aa3-b353-0ba2f2458462 02c2d860-7d57-4b7c-890f-1fec68cb806a b4506728-d156-4b38-a9de-599dfb1f1ef1 fabff140-dbea-4169-a4a0-cf8c19809f53 87f14d59-3805-4c03-8a6e-86b76dfe882e adaf2fd4-bc16-401f-9379-5e338af97e5b 395fc7d0-3fe6-4943-bcff-e0ef7866e201 88dd5074-ac32-4c39-9145-59d63a6939aa 1e884cb0-e207-4dea-a91c-bfd57b0cecfc 69aba5d4-3866-4a11-b821-14462855bca1 b572593e-6f5f-4280-89d0-e44aed19c836 6b8ae3ba-9423-4b17-87e9-8f617677c11c 453ace39-72e0-4b4c-91ba-5d31e5c98c78 0e08fcf1-5c41-4c9f-8acb-92abe67723d9 e75a67ab-bf69-4523-bb8a-73fd9c4e599b 8d58c418-3f14-40b1-8b3b-3bc50cb12692 9c598e64-f31c-4c64-aa58-eab052d4f030 289de93d-9c67-4cfd-b26e-5f61929d0c52 c2b8ca60-2abe-4415-8fa0-4d1e9b37dff4 88ee8eb2-abc1-4205-aff1-3ee57227e2c0 7b7b8c2e-9549-46c1-96c8-899df0112c75 e41c6404-62af-4a89-a851-40e6e5bf8333 456716a3-e67d-44a2-8db0-d541c80742ee 78715e7f-b016-43b1-bac6-406f483ef35a cd5da8ce-b4ea-4a33-bf16-4b2dce123401 21763fb6-64c5-417c-9d6f-d976a89b41cc a16f6294-b3b9-4dd8-89e5-0c4611019cd3 b2ec1e6f-f1a4-46db-b84b-1b627756c4a7 befe0c1a-706a-4655-a0e0-a66839eb8039 82d7082f-4486-416a-83fd-bcaee93739a4 0d0319d4-7147-43a8-84a2-53917f4737b2 1ecc0728-48b2-4cf8-80f7-b640df830fce af9def5f-f12b-4ac1-8987-d3cb66b6f994 537bf570-fb2a-4790-8352-9783a3a3df29 1b775869-67ac-47d2-86a2-0e02659af3d3 ed72063b-acf5-4ae8-a7fb-21692e237092 5bacc577-790b-42f8-8b05-ad7ca0361e57 e4105795-cdd0-42fc-9df6-0b3f773556dc c40500b3-344b-4434-94be-f3e5aa19df1a 202cfdbf-1e83-491f-9b49-ebea2c933a64 713da37d-043d-4f60-802b-10580369f7cd 1d9c6061-e5da-4581-8c40-6ca326e62448 05a09eee-1304-4dd2-b312-1ad5c7c61645 d820918b-9159-41a0-96c7-5bfaf7833967 ed0f660c-17dc-4139-9782-9b4c46f44fd4 8f486557-c35f-4fe8-adf6-ffc6ed42d324 54f889e5-8656-4f66-95f3-7d9f90188eea 8288eb9f-18af-418e-a944-de4a7490ce03 0f8797ac-04b4-4c20-9677-6eff75f0d932 27104851-abe2-4962-9a04-300f26f3ca72 54e85ec5-3c0c-4e10-a034-aa8a85c97c65 36ec9e66-ac8f-4fa4-a1d4-835adfa989a1 5ec38893-0f16-4bb2-9511-f6596133d387 57b181a4-0e8c-42d6-810a-cbd638fa11e0 d3861765-d41c-411a-a14e-cdbe4e6000fb af6476f3-9fc7-49e7-8644-cd65c9589729 e63d73f2-e556-4088-952d-b20a6c4350d7 595d1a08-5a0c-4b4a-a926-705af707d455 5bf52410-113a-4ffe-adb1-6368cf32cbad d6c7e354-ddf0-4671-b897-ee44db1a2552 fc291f2a-1241-4f42-81bd-995eabde8668 5d45f74c-ce1d-434f-ac1b-723d24ae0563 fd52bff4-0620-4d07-9e51-b118bf049eb0 5688df2e-47d2-461e-a2da-094f773bb949 952b3deb-a473-4d1c-95ff-2731e044b4f1 57544e3e-8435-49e6-a885-ae6b1e4ea28b 3cb083ea-0ea2-4911-9022-9a38556e8ae9 a067bfd8-296b-4467-8457-ddf991d5d8c2 e784bb75-d640-4283-be82-5c63708640fc 0ac42a06-e6a6-4256-a8f7-fb810c0d7a58 98d8c789-c8d0-484f-95be-fd42be1c0c78 76ed3351-85a5-459b-ab2b-73677f6f10ce 3d077c65-7ee3-4987-aec1-f04409e07e73 1e52515d-15ac-4068-9e3f-63539a62f708 27c89aea-9f11-4b77-9dc4-569219ed84a2 86558fa9-0574-4904-b552-1511b65d5a46 737bd52f-6fe6-47b1-aec3-776e0ce11244 5104a0cb-e7cb-4448-964d-f8d0ed524daf baf90a2d-9f3b-4cd0-b841-3ea9d1edffe6 020c0830-d49e-44cd-ad89-872b282abd3b 72bb603b-d901-44f4-99f9-9156bb6921fc 8e396082-b4f1-4283-9c67-c50563b978c3 48e40d1f-a3b0-4f73-a37e-2616827d0250 99423d5f-073f-43f7-a9f2-dfdce813e570 1de2186d-6d1c-42af-b109-34981c011c99 173d4419-2d18-4e0d-a371-c340500e1f20 01bd62ea-6748-461d-8cfe-090491cf3c6c 2c5694b2-7a57-484b-8a6b-e44c55518d74 3752f432-0ccb-41f7-ad31-9a6d9f0d2758 b47aa25d-1170-4612-9dfd-5b14efe02fa0 4f804a4c-8664-4327-be46-a41737b6cc07 876a68be-b60b-43cc-a20c-00ef09fdf60a 6538feda-8f54-4bb8-80c6-34e7b8bd7a04 2072f2a7-0693-4a70-8fab-efcbf14f951d f2f60da6-7268-4bc4-b2df-8770842660d0 6938c1dc-fb27-492b-95c0-9c9d2cc321ea f04f6274-585e-427d-9f18-aa0f966aca94 6c4a1919-3a01-47c6-835a-df0781bcc121 11eacc9e-e75f-498c-93ce-8759f7f2abf4 f02670f0-d0ca-488a-8249-d12ecc6e50dc 8a79540d-e867-4bc9-b3cc-0dcd7b236d03 6424662d-64b2-484c-9bc1-67add075f1fc 3d82f137-9d26-46e5-b8e3-c8ce60175b73 1952de37-76a6-4b4f-99c7-f2157ac360a6 9781dc34-7929-42b0-958e-564f272ff083 43d840e3-bfbf-47fd-a64c-d6e7e7cbe37f 8c290f7b-e1b8-4c03-9bbf-90a74080855a bce6a950-2726-4da9-8520-3d4f6c36a89e 58844b93-82de-4d4a-a4b2-e9959fabf322 3f2c3548-cab2-46ef-b0f2-a878458491e3 272e879d-6be9-4fff-8127-8dc8d284f315 07cb3e96-dd45-40f6-a0c9-dc5d7ae1d053 44d1a0ca-ea1b-49b4-9e65-4e7094401f7f 7cb1c4de-a8da-43d9-b3fc-989264815e96 73ad09b6-5dfe-4fb5-ab90-d9bd66faaac5 53996065-dd4e-4de6-825d-18ec39f15585 ad7f7daa-b7e9-46f9-b7a3-d70debe4a917 a8a52a3b-2422-4edb-838b-2db090c9d1a2 59658cf7-7994-497e-93eb-e6d7c4fcac49 f9193bef-a587-4ba8-af7b-f8af2787b720 c3910ef9-6ead-4711-9a63-7acb09f27310 e6f0fd96-8f2d-4e94-b25b-e6fedd051f16 96e3699e-001d-4a8d-a9f6-18e0347ba63a 107d072c-4b1e-457f-91e0-71b29ca40bab 051b372f-ca43-4b98-93e4-65591b281da8 030e80d6-7894-4366-b7ad-e0b40ebcbade e1a6c7aa-871f-4523-ad4b-50c05d0af680 c51f2227-2d32-4135-9cff-0c89945ca710 ab226681-7273-4494-8721-85c2e275e7f5 c7f10965-7193-4c34-ad6e-e0be51891a2e 33a15d0d-57c1-452f-915f-7f099467f5ff 1a4fe947-4947-4841-bdb9-85e104f3c630 4c37601a-6bf7-47f9-b639-8cc15620547b cf5bf1fb-5be5-489e-b2c3-ff7e1767621d 60dfcf71-d18c-4ae6-9f88-5b14ac27e472 e05cd9cd-d89c-411c-b8cd-dc5abfdd15e6 25d13a34-781d-4337-9f69-7fa92367e2d6 462418f7-9935-48b8-bc4f-d7ec612c4207 8769db1e-aa95-40bb-b8ca-2aa2a6249e94 9067ca1a-e1b2-416b-a86a-d1d76cf1cea9 84f1721b-f2cf-4aae-849d-fdc14f1506c6 5ee3424d-1d42-4728-80e1-d27420e64204 9729ad01-935b-46de-987e-65f32d9f4fcd c8e14e34-5b01-4b1b-8283-05074202bb77 e1bf2f35-f65f-4ddd-960d-3aadfdcbc5d8 86f44cb7-0ca0-4433-81c3-52004e475325 a431c485-34a7-48b8-9bab-a1d72d568b85 bf8a00e6-443a-44eb-8e5a-04ae46d0e344 b70a569a-3074-4859-a9df-33a08cd62cac 751d5d8d-e91c-4cd8-81e8-76291b55773d 96d43182-1713-416d-ad04-e01375f70855 416ef82d-82b9-421c-9bbb-5af89d9f714a 88682d64-3495-4b74-af8d-db60fce9c8cc cbad3e50-fa2d-40f4-b921-6f9e170d13ef 36120773-88b8-48df-90ff-db05182b219d 0dd2a5c2-9576-48fa-8f4d-156d20548b6d 9bba41aa-6b3a-4d23-a011-5205cf8be3f7 00caa977-a3b1-492c-a8b5-4425f5f7e46d a1a775f5-4f6c-494a-b1c4-1426e4eac81d a5257507-a127-4569-9e03-eec6bce9cf0a e5652577-eaa9-4d75-902b-da0ea3425934 f5526d6d-047c-439a-9753-26f3d139d29f eaf11ac1-ca05-4271-9acc-0f216f5d4e39 976d15f9-bd5a-4447-a253-15e6dd6be6fb 36a94fe7-9b33-4d20-bf8a-97853a5f3a0c 7bbfa8a7-8915-4a25-856b-92c1c4cdf634 4a623196-46e5-4907-899e-ebd25fb760b2 114aa05d-e538-4a17-9a6e-78ac7a4b958d 1432b04e-4cbc-472f-a2cb-ece3c08663ed 95316446-c5a7-469f-af21-5bed6cb5d91f fd8b82c4-87e3-48b8-9dfb-38c5c729033b f801a4de-9208-4026-a906-bbe20cd16d75 803dad81-49ba-4071-ba4f-f342b06fef88 9421ee83-ee70-4e1f-ab61-5c222a0de791 9bf9912c-5897-4345-a260-057fa2d8066d c53297e6-0e90-46d7-ad23-7771f37992e8 46c22c60-7325-46a5-9f07-fb38f3744ada 7c67ffc1-73b4-463b-8d76-aaa63f658a27 d436221a-ade7-4f5b-9a48-8f46599e0956 c05c0c01-19c4-4c83-804f-6dda428ab670 d15927e5-8197-4531-b3e4-56775fc655da b3acc5ae-39de-4206-b882-9e0bd9028ff9 6d880200-e2b6-433e-a0f8-7db6ef8673e5 5f92125d-1264-4100-b97f-ba86aebcad2b 4f5fc0f3-f594-4615-9d2b-41c82a34a196 947e2e68-1619-41b2-85e3-c2627ee70b56 68d85c76-5ab2-444f-9501-ccaa79fd9e62 ce833829-24bc-4b1f-bdc1-25a1b6e3f14d 95a98d67-616b-4c47-869f-012680493277 e86073cc-0ff3-4380-8e7e-632d1a8822bf ca2d7ac5-111f-444c-9b95-eba1f49debc2 4925ffb7-e204-4817-bd12-2fcf4d37b0fd d2c2abad-2921-43d7-a89c-bce0ee228900 0fa84afe-2f19-4f03-9749-2874225af73e 2305de8c-2acd-4e47-87ae-acb6207d4a2f 659059a7-a23f-43b5-a8b1-05cb221c17a4 1ad45c92-3ba6-4924-a08c-6c5dc03ae0c6 c5d7556e-1ce8-42ff-8c07-092d5b1395b5 649676ae-fe44-4d32-8956-a9745795188f baa66226-cfb9-40ff-8b1f-1fdcaa3edef3 79251640-6bd7-48ab-97ab-7bc72dc546ff 5565e294-5487-4e99-afab-97198cfa541d fa312394-c70f-49e0-9baf-2edb27a1ec7e d9d03b72-46da-444c-858a-5709afdb543d ea53cfa8-b947-4185-9ae8-2d81d9fad92a b33dfb23-e74f-4e68-b91c-a2b54b15aa84 2f805946-3bce-40a9-9639-88f80cda5def 50f85257-7939-48cd-88bb-556377fa27ee b4f70c15-82ce-4929-9c58-a217b9f2ef45 241de9e5-a2fc-4542-b80b-3b50605437c1 22ef6c49-5cff-4b5a-b4ee-4fe7da99f832 b8946fd4-19d9-4717-84c2-a0d6a79d350c a39bdbfc-efdd-45a2-afbf-d8dff83e66a1 7661fbe5-e458-4434-a8f0-f6882279549b 4496cb62-11ce-4277-aed6-d4694ad8b93a 58388577-e95e-4dfa-b722-66e590a57214 38072f59-9f01-4ac2-b693-07d8805e55fe fc16fd28-f124-457f-8e49-a35cf6e1d4b4 55d8d2e0-769c-420d-8beb-91e50cacf4db 2addec61-9f0c-477a-84c4-ad1228961afb 2034ec83-8ea8-4056-9269-108a28d7fc1d b6626168-42f8-4b58-ba5f-8f9869ab0b65 dc914883-a5e1-4ff0-9384-fdfed91be486 4de2874f-7bde-4656-a799-ffd640dd4050 19e2de52-2ffd-4e51-9366-2d61f25b1d4b d526c5ac-6f3c-43c4-9237-0ff33b11f400 c4df1115-8b2b-474a-8606-288e8aa7c746 06f7753b-0e6f-48e2-b8f5-d0b3a4dd0fda c76f7110-220a-4561-b1f9-553bf6c1847e 0aa31e90-6140-4e39-8e99-685ea203c1d4 bac24994-d8de-492f-b7cc-cf6488d1913b 4e98156e-85a6-48e5-85bc-0698ebb2ef91 1c5ad554-d9fb-4bcc-9336-14a5810fbb09 7fd02ed4-bfc2-4f0f-8171-84d5bc3ecb92 70e34242-1942-4fad-b1ff-6f9cda1d5296 16b41aab-e3a2-4b73-8865-fecd8b36d78e 297beb97-0607-4fb5-bada-1da25f8acae0 c98044ae-3a36-4dcc-908e-655472b0e3b8 7f2815ad-4805-40eb-9ca4-e96dbb1caec9 fdda383d-986a-4547-a6d8-ac924efc8aa5 f8b680c9-b4a2-4b1b-8bff-5cfc69d9e236 f82efe87-9234-4db9-98b5-2ff868a8eb62 e41b96fc-f91d-457c-901f-9f1e0215b883 e8399145-cae4-46d9-ba6e-cbd267ec4498 38c4cdc2-0e87-44db-9729-ad3dec862008 4826d100-f236-498e-ba19-4b023e50c2ed 4370aa57-446e-4a47-95aa-cd31da0b542e d66006ab-07f5-4d5a-919c-2a139fca8b02 a66e81de-b1df-4e9b-be06-2a85eba21da0 0809805f-6464-4a5d-bfea-101e533bad50 fa209665-b4ea-41ee-9a6f-b71ea0e3264b ba0ee1f4-6714-4a7a-be52-9cb121d0984d 8da2cb59-4dd8-4d83-9a72-90b418ddf74c 6ae7fe94-098a-45d8-b396-161f7b65a4a4 ad6add36-c99b-4fa8-bed9-3b4b148e5747 0db30180-bf2a-493a-9a5e-a9863dd24961 b954bf68-c6b1-41b5-b300-b141ac476d9f db234fe5-f525-4c7d-9eef-1d1d40d7cdda 36c2aff7-23f6-427b-beec-f71923cb7d16 6ba525ef-73ca-4773-bd1e-e7fa6a28a98e ee71dbe7-6ae6-411a-b29e-b08a8629a1b3 cd406532-ec0f-4d36-aded-1f4ed006e615 c0763cca-5330-4745-8fa9-03462de87b5c 1f7c468d-000d-4d68-838c-ef98d10fe190 8b8aed19-3027-4611-976f-bb0cf812b8a8 af16355f-6de9-4a08-827e-2ba987c060bd ac0ba15f-99ae-4788-857d-428b16759108 0cbaec2c-0587-4f57-a543-da37f576cb34 e98b65ec-dfb4-4af1-8d76-53d8b17c20b0 c53c792f-66b6-4c54-aeae-d63eda6ab854 bee6aea7-ad90-40ab-9d8e-8f4e8e824ff8 4c94c76c-e7b5-4796-b2cc-24ea8a17a9ae ae007925-b43f-49db-85ce-2215f53a5dde 6cb4bf23-c2c4-4051-94e1-1d506e7decd1 fcbea460-e8f9-41d3-9992-3af0799b1857 1b723eac-f5c1-4c5f-9d2c-341accce88c7 d106f75d-faa1-4319-acd6-891c31e9bb35 c0c7983c-43bf-4419-8704-041932d796e7 f64af013-ad9e-489e-bf32-8b2fd86e6a08 392b3318-f6a5-4c0c-b570-647d328e5c97 8588396c-97ae-422f-80b1-f644bc65871a 51a254be-d585-4f85-976d-9dea6c34339f 88c7f0cd-d934-4686-a372-2081c6f3e4cd 86b9b640-692e-4463-bf2c-1317e10e9820 ee16cb0d-2d83-4b96-a694-4af833282b1a 6f1a029e-8e4d-4fcc-81f0-39ce610c8253 26fb3cd9-d77d-48fb-ae73-bd8d72052ae4 76154382-20bd-437c-9c40-48b0d5eb2497 347c8b8b-20e6-426c-b2d6-0202af1918da fc2ab08e-e04c-4132-abcd-2518016e6547 13188bf1-da58-449c-979f-3a93c0e98e82 56983f29-18d9-423e-90e3-37c476d1195c efdf0755-c14d-4ed8-be83-efc63932bcc5 1ae6ed06-2315-4466-a09c-24be9471be67 89ce13ef-30b5-4311-9be0-14f1a5d63610 6fbc579a-b14c-4a88-b1b9-ff99e163fdad 2288c8d7-15ee-4cc3-8b05-483b7198d023 77706086-0043-4b1c-809e-5fcaa9a4f3b2 b38beeb4-5931-4f32-88d4-211c902a17e9 26e38362-93cf-4738-abac-19d46aaddb00 5b349645-9f06-4cb6-9268-02c565fd87da 33b68cee-5fb3-4b36-9556-a3b3d775fea1 891cec63-4ea3-4edb-bc54-07851cc313d4 54e31f7b-1acc-4410-9620-ab9ab648d62f 07e02dc5-338c-49ec-8c89-3b5a581f449f 7f1b3ae8-4a6b-4ed1-aff7-77d164dec660 f9f8c123-8661-499a-a8b8-b2d00164fb9a ec76661b-8f52-4d0e-9c10-e557b97adfb2 42634f2a-0d72-4489-a098-ac50b977f614 184ab745-be67-4c9a-9582-3af080fc46f9 7bad5618-df75-4c27-8153-c9a4f857e281 5425cfc1-45cc-4567-81ef-f1dae689a474 2c2e4f9c-a9ae-4e84-9fdf-1150fdfaea74 21ae4222-924e-49ad-99d9-f9b4e609cc44 ba0d8041-4dd5-4e22-9652-08b677ecd287 e2dc993b-b74f-4e47-98d8-0d0eb0d24e86 19515585-4c18-447e-8553-a1bd65a25754 32d408ce-5b2d-4b11-b52a-7799ad392dc0 5c67d768-2b2b-4288-b0c7-5ee4111ebf9d b32c0970-76dd-46bd-a5d9-21954d6572d1 ef256820-2528-4f59-bb55-704ed8d40204 aea84eab-70dc-409c-879a-1ec0a72123b2 957385ad-8c35-4bac-bae3-975b4f88cc04 71083d16-cc74-47ed-98d8-95f6f4e3d68c c353e65e-53a7-499b-91fa-6b5dbc6f2ed0 45e37fef-9fac-4855-a922-e02dc305d657 1fa806ee-97df-467f-9ca7-75cda828ece7 13d1f823-1170-443a-bcac-cf54f9b9ca98 fb4aab7b-aaaa-471f-ae20-99995833942d c5a6f853-2f19-4306-b42c-e0c588e79b1f a70c675e-1e2d-4d77-a40e-04fdcbbf4795 a574771f-3dcb-4118-83cd-78e12b6e5bb3 6ffbad99-dd07-43a2-8d04-5702e744c821 b61faacd-057e-4b49-a4bd-1943ac765d18 a7656e14-c3ed-4ae9-ad1d-3db3304b7839 2c19fc62-6c52-4c30-87c0-af003f03f3d5 ab72f13b-d790-42a1-9abf-492def9ff64a 8393ebbc-b8bb-43f0-8b74-a07c9f25a190 fdf3b6bf-6067-42cd-8033-2a19ffe611c3 8ac2551f-2ec2-468a-a635-bd2a9b4c3e00 252c2480-913b-4a91-823a-c2e2d90eee0a bade0503-6da0-45bb-b24d-28a2914a1dca d4b06f44-1d96-4fe0-bf38-549928018d17 ead66110-f73a-46b6-91c1-01ecaa1fa3c8 19f29275-9f33-4465-9a9a-5d97c4ee848d c3397957-1dc2-491e-9cd0-2ae044972bc4 79f9d2cc-8dd1-42c8-9525-dea3ae5e6773 954009da-4d1b-4721-b328-21f701992a64 4496b135-4349-4269-8dc7-8ccb6be17eb2 bb6e51db-2923-4742-80da-93f2d91b7269 c1be5d24-ca8e-47c0-ad0d-70c36a8a9880 e9104766-9cbd-4b37-8aff-4ce9dc22fd9e f0aa5637-28e4-4220-a368-cb5c3256f678 26c9386b-0f00-4a1f-bb97-62baaab426f0 aa3d0b2d-1670-4366-81c9-2de577bda9aa 58fe6120-2a7a-402e-8695-872c597ccf79 93c05887-cd6c-4321-a87b-678611759758 e6cbdd52-1429-4c07-8835-e424e6f4c7fe 9bdf9170-5998-4e62-ab4f-c76a5d21d224 4dbb5480-9de3-4325-b69a-b2eea6862861 c2d22cbe-1c37-424a-8a4d-021020cad2c6 556d2215-f1fb-458f-aee2-1ca8779c6c29 39609696-a041-4c1e-b525-3207430cd4d1 e2d1b59f-d055-4811-879d-00c0fdda327e 1e7defb0-52e4-4f0d-9608-cd2d65fe80e8 554d1925-00bb-4c84-b3dd-065607ff21ac 96309cba-c183-47fd-b341-b1662513c552 d3cb452a-dd50-462a-a3fd-be8f9f16d04f 38ee8c6d-f941-4470-acda-b8a2d267c823 82664ebb-ad0c-4ea0-81b8-b64124395fbc b771c3f7-09f8-4c39-a9a6-a12d8148ef5c 3bb50a95-6014-4fa9-b935-197e4114187c 2fbfef20-db12-4830-8ed0-ae15cff7893d d9e40fcd-2c4c-4109-9729-0f6599fd9c37 14583064-1d53-4163-a15d-cafbebe75975 db31052e-50a9-412a-bfe9-7a8e7b286c14 6f67ea30-e8ca-4b72-9d59-709bbce15c18 0dc49a6c-5c34-4ff1-93af-c76607f8fbb8 b0c2b7f9-1403-4bbd-98c0-82f283afede2 e46dc693-265d-4447-954b-e4ad82bf6310 5a5cc2a1-c208-4fc1-a3cb-fe29470e89ee da8bdc10-9011-452e-bd10-a587d9ccd844 e0229521-41ce-486d-9d49-c793e646c9a4 0e864114-98eb-479c-af8f-564580da41de c925c30a-41d9-4ea6-9125-fa4feac3dbce e399b7cb-2bf2-4109-93d6-a4cc32afe166 e95515cf-4035-4498-a1d1-7bf5d59a6c88 b2694a47-0022-4dc1-8b29-31bb62181a31 02c71b50-20ed-4fa6-98fe-35805bb85405 b4981457-9fbd-417e-b783-14bd59cb97c8 2f9ad43f-059d-4ca2-b37c-6dd80ca1c4b7 5c256dbb-d5db-4de9-87ef-08da384d043c 91e09a89-360f-4d87-bae0-38f1898d3ff7 952075d6-b55a-42ed-a465-ee9c0e479da3 14b0e172-6dce-4991-a0af-5d07d3fabfd5 5d3cc384-4215-4c4f-aa77-12b6dbdc87c4 1057fbd3-3992-4d10-9a5a-e949092c478d 6a4c2c6e-30b8-45db-8ccb-6f768c949ef4 562c5c59-a03e-4485-8399-c2ec95888c23 bcf17f66-5e40-4abd-94fc-a104ec1e5557 f9056634-1f25-46e9-b3ed-82dbfc5b634a 58827ff6-da15-43c2-ade3-b641803fa67d 77c88602-ceb1-4bef-a075-e5cdc50c25b5 92980406-58be-4392-b24c-9e9f6b49a226 3f75d4c7-545b-47ca-be17-5ab05df05e65 07ab4a80-479e-4435-b494-201262a017f4 a22905e1-6148-4fef-ab52-2275f645026a 64f17dcd-45b3-4a01-9511-7cd9289e01ea f15f092c-ee89-499c-ab60-45d1732553cc 390dad0d-4270-481d-a638-19571cdd2d8e 4cdc0179-5cae-4bbe-8ac2-8a5ea33d7ca1 507d574b-9a48-4c0a-9ed5-71ea2fb53ad1 89fc823d-007b-410e-b507-4cd4151b189e f58a4f4f-ce5b-4ab6-a9fb-ffb84c1d4898 0f495c17-6142-436d-9353-04317fc9d27a b4a88537-2d96-4e6d-89e0-5ea663f09d67 3adfb206-6be9-4cf2-a1d1-ff2e9de6ae09 24f07961-de53-400b-b26c-964c09b3544e 65f73b42-c91d-4c01-b3b5-6b794158d178 99347c37-b2d1-4488-ab80-87f6af418c3b c72247bb-ebaf-442b-8b08-3a33e0a193a2 fe5721bd-d35b-4b7a-b0b9-a9b6b92a06e9 09c2e8ec-a68f-4565-a532-ea257870d811 4270234b-371d-4c92-a60f-a9026a35947f 9968ec32-f26c-4174-b553-72720feba2f7 3161286a-d338-4728-98b5-c6ec93ee33f2 305123c3-d6bf-42cd-aadb-e5349af2e4d1 636e2948-098e-46b1-893e-ee858f4f681a cb7c36fd-f20a-48ee-81a4-a62301e375d6 5a54b0a1-d156-42db-bcda-d16f83e4ebae d53068ff-1bd5-4fa3-923b-a69c1e77473f ee786f07-70d5-4c5e-bd66-7d9956309231 3339a8c9-9e8f-467d-bc5c-273e83a422f8 f7ce04ad-c2d6-43ca-aa47-40a8c986b3a8 daeb18f9-bf75-48df-be8f-c494241eb759 6797e80c-5551-48b0-8258-fe85bf9b5cb7 563dd5cc-1472-453e-9065-ba959ba50bbd a5ea4030-77c8-4eb2-ba30-e4a1dd6a9741 ddca40d1-8d20-495e-934a-dbe3aa9b4bc4 917b1129-e35a-403e-9ef7-a1ddf76602dc 8589b2ba-f96f-4f4e-b1d1-663feed02fd1 1f4f3d1f-868c-4047-b2e5-2b9a6d2d85cd 5b51b81d-62d1-48b6-a0e3-a790256220fd 0874e866-3843-4bdb-8b1f-19f823233cf8 9679d565-f571-4431-91c4-7615016d66ce f79cfe5e-d710-4659-a375-4cfe9f5b7a1d 2a5b8485-7f24-4584-825f-ec3fc853225c 3f0545a7-6ac7-40de-8439-77917a52aa8b f1142f23-a7a7-44b7-9935-28333064a8f3 ed1a95c2-3856-49c9-9499-9c483da6c85e 4534e339-108d-40a8-aafe-b8f157204650 678e79dc-d009-41dc-9a29-2a7542a2fec6 04e26bb0-b5bb-4549-a774-59258af59360 8adb7d40-07be-4321-b9a3-18edaa79aeb4 c09c4f95-e428-421b-b0a7-b74ca3b24f8f 9705c224-253d-457a-840d-e2d37374d1c3 8443c388-647f-4091-9ca1-d42dfeafd50a 54213539-030d-412e-987a-886875e2ac64 4c5ac8a5-a1c7-4c0f-abe1-9bfd982b7ec5 dd15d204-3c02-4a6d-b390-ecd964e3ddd8 125e7cf1-515d-475b-9276-61905969e6a7 8de3b07a-b644-493a-b0f2-aa7ea1951975 f9315762-9de8-4e44-ac91-3faaeed9c409 347ad6ff-791b-48a6-8d10-d1f54c3121ea 1ce8d2af-61df-43a5-8a53-c5b1633f2fba 9420f6eb-69a1-48cd-bcd5-31dd0356e5cf 8f34ba5d-3bcd-4ff5-bae4-1bd44e1e8564 687d78dd-66fc-4298-8eb0-77cc83566246 78fdb60b-d5d3-4c52-845a-643d284023bd 3817b7aa-e6bc-4646-b61d-591e105bd671 40b9933f-9e84-4360-8ed4-c60e16bba230 6fc5bb9d-a0ff-4b26-af79-6d76b13301b6 5f532efa-3d5d-48f8-a76d-dc8d6435087f 2e277af9-b48b-478b-ab36-9fffdd871377 36db1b49-29d6-42bb-b0e7-88382a393b42 f2ff0bec-8318-42fb-87e8-fde855a142a4 568b9847-71e6-4f46-b704-4275615472af 394eb350-a811-4fc5-a1ca-38b59e381bfb b2f99cf9-b72b-4345-9b58-e5aead76233a f2c7447e-0b12-4999-a8d4-363a9b2c55ae 8043ff10-fd10-4771-8c58-7712d2c7a0f6 e6be44a1-2a06-486b-afd3-21e04f91dffb b0de7900-b85e-4a71-ac37-66090aaad512 b5fd156b-f70b-45e5-aff0-83fa6ddd0ce5 b29a2550-d5a4-43f9-bcec-a90291d97f62 ac06fa6a-290c-4fe9-a470-fe213ec65506 8367ce7d-b2ea-4caf-a3ff-a016b60390b8 596aa663-74f8-4449-923b-f085e468fe4b 699188fc-9a3f-4390-8f76-86dd4ab10f69 a94fc916-c3f6-4e2a-9f81-1e6b323efbf7 ad281ff7-8b2f-4651-9fcc-23cf8c1f5285 ed503dd4-c089-4117-bdc7-211d60079b14 f29b96ca-5abb-4276-9292-34e01cce5bd6 e27fff97-cf6e-42be-a2e0-509448acc7ae 1e11cdd1-0f5c-4efd-b9f6-02d77e9c47a9 0ae5959d-1193-4de0-8431-8722b1a8366c 9c485c36-fd89-49a4-a99a-43195784cdca b2379b0a-1afc-4334-97fd-838d63ca8a05 9c512967-3874-4d25-bafd-859f73c27c05 44773d86-3c47-426c-b068-e122c8bd2309 dc4e6de9-0529-43e2-a0f6-31917a22b7cc 16ed3a1e-4b45-4763-af3c-f6a26a938ddd 32a341ad-fabe-4a22-ac32-f0b3aadae1dc 43276e7a-131d-411f-b024-94e00c4c5a02 ad08308e-5157-44bf-b3cd-6a11684e43b7 8cd96a5d-31c0-49e6-ab9b-07953fbb4e45 a9566846-a8da-44d8-a2df-0b4d09db7c48 b5739d8e-d77f-4024-859c-bd83ca517e42 c76f696f-8365-4b99-b3f9-b18bb2f689c6 2b929c61-6287-4784-a365-6b34deb2ecbe 6a053a03-ca8c-453f-8d82-f031b426868c 073cd26a-264d-4b40-9ae3-5d171d9fd064 b1de97f0-91b1-411f-9433-1ca8f213ef91 eb288f93-9e2b-499f-9636-4d3b54321b89 d948d486-1d56-4b39-a1f9-121ea21e3f8f 3f58962d-541b-46ba-8d5a-2391fd3b63f9 7e9d2326-2ed3-4ef8-8066-d2336f6e7a60 2951c432-2908-4b09-a5e1-6e103083e77f 5a864559-79a4-4e7e-ad2e-157cbfce267b 49365454-2f9a-4acb-80e5-8c3009ed4e59 18ce65f2-05f7-4c5c-a6c0-bc6676df8e55 190c0571-867d-4665-939f-06dbe1ad68e4 4b867d99-b06d-4b58-b8e9-7faefe58359d 0b7aba2a-c440-48c2-ac78-6577b20cee4a 2d0bada1-e98c-4c6c-868b-2002918ec5b9 972547a3-2135-4808-983f-eba3654d8e21 639d29a8-8244-4844-8fb8-f2b1ccbca895 c05d9af8-2d20-416f-9d57-d0723ab74af3 7cf312a2-bd7c-4b66-8af6-039eeae0acaf fdfd56ac-7e3e-4a32-8c1a-8301929ef2e5 af00ad94-e28d-48fe-87a9-f61254d86abf 03eeccc8-49d7-48da-9479-9e61808dc769 76776096-40c9-4239-9d80-1b4d2d274f2d 7cfdc7dd-a398-4ec8-997e-c4d095b955a3 791813cd-b467-439d-a4d6-e346322af2fc c6f09c90-42e1-4d7e-96d6-667d44ed0ad0 79e3ef95-14a0-448f-bd73-1c9feec229c6 3bdcf8f0-eeab-43c2-99b8-d0442f12d30f 9d56db2f-0bf1-4bf8-9ed0-288c87e35169 32fbe3d6-05f7-4026-93d2-158365d53ef7 a311f752-a355-4d7d-aa0c-a161bfee476a b82d13f7-7976-45b6-8fe4-d3f8ff051572 a1a14e07-cb66-4ff9-929b-b716cc4f28cc 635f90f3-944a-48e5-8727-08589803d737 f9bec1ba-e62f-4b9f-97be-2077a77cbb1d 18133591-1927-42f6-91dc-50c00e4920f6 2eef6ecf-3668-407a-b199-9ea1e7cb1c09 ed1a01c8-8116-4224-adce-04d9cfc1b794 39ad3b50-a1a2-464e-9719-e70705199cab a55f9e7d-9fc4-4e83-a5dd-29b02f73b52d d5c162f0-5dc9-45c2-a28c-c9db36348ecd 7c052fd9-5316-4f5b-ab70-faa875bbfe86 c7f39ba8-05cd-4b66-be56-d8f99cfd6f9f 12073531-8fce-497a-a7b7-b710bc5fb3bb 6851fe4a-6357-4966-a919-f7aff8607ffe 1e7357ae-7284-40c3-8159-bf57b636d19c 4878a600-7927-40ca-8ded-2dec2c898a88 14573053-f982-42a8-9702-93d8658eb9d7 08ebaeef-72a6-4d0b-8ee5-20359df4eb84 5c39e2cd-3dfa-46f9-a488-83c72a91c621 f541b10b-e71d-4e61-9589-b33d1a5bce59 4ff80d79-0c5d-4cea-9002-cf8c64133983 bb782067-cda2-4ccc-a2fb-2ef839be6488 6f8482a5-db15-4cff-baf5-e5c4351c501d d7b3a516-7d80-4592-be3e-31daddc2fc8e 95868028-cb6f-43b2-8fd4-641aa48b6ff9 a4c47fda-13c9-46d9-aee1-59aac0cb1bd3 7467b74a-10e8-41ea-a70d-3621d391ea52 e719e134-59d9-4ed8-ab57-6a347ec5799c a7c339eb-4616-4bcc-bd65-4fd1f69e206b 68217e53-9963-41e7-81e1-6d2c03853a14 cd24e1f1-0cc6-4c99-ad5d-3b085d3db6a5 16f7316f-1adf-4642-9430-0c4f10fc6bf8 600f2feb-ce27-4d1d-a10b-0f041a81ec8e 31847b4d-3b50-4b1b-b73d-0a48afc2a281 7150c7f0-2b3b-4e90-8a37-a6dbf2cd9054 96f31ccb-b557-43f0-b2f9-e3ce62be2e3a a1607276-817d-4971-89b3-277c8abdde6b d7741dc1-3261-4082-8afc-42f4974b4928 0fab8d9b-a05f-4d62-a4f4-9dac5ee43fe8 8bb94e9a-8050-40e5-9878-df4aa0b9a660 fa4e25be-fa60-461f-a872-00495334bc5f 9ff4a84f-68b5-4078-a89a-bdb5e357421e 288ca8b8-7b99-448e-b64c-eda01f32968d a5c5a12f-ab98-4d80-a79e-f9c29390c11b cfdd5e72-2e27-4948-9ba1-08797f1cc078 e08fb146-c3ba-44bc-9cea-d33735567363 a569b62d-795c-49e7-a675-b630aaaa0511 d839782c-fd71-45ed-b27b-ecfa35ac8f84 3e7b9b18-f514-4ce2-9f33-b0c191e107fb d2b1b666-9126-4550-8b81-5287e53ce5aa 92ce7162-6501-4b4e-995c-47a72204ed8b 91674606-2493-42b9-b042-3a84306b3a1d 8dfd067c-3964-483c-b59b-347b4b9956e2 0a9277d7-6d4c-44d3-a81c-2328f13a47d5 45f87a78-343f-406d-8d10-f5cf99fdf6c2 eae75cb7-7bcd-4ab7-ace9-d95efa12fdb7 d2a52ff8-b356-4963-a751-8df5f5c3ee56 87f96b9c-8d96-484c-b80a-7dfb18d0df03 4e2d64b1-6360-411f-8c43-28bf49cd28cf d2f11ca2-4c51-4575-90ac-51b965d69659 1ec8ee35-b5a2-423c-b275-4efa6230e72a 19e9b016-7d1a-4375-bb1e-70bf35053330 6f68d3fe-a5a7-4f5b-93b1-36cc266fec44 caef35d3-1300-4f65-baac-7321b2fee34b b26dcb9f-bebf-43c8-999c-f3887c4136f4 12084109-56dd-4152-9044-c3dc8204090b cd82aec6-5b78-449f-8443-8924ff2a426b 036d31b0-16a7-4dfc-90f4-e093243ac733 5bdb3115-01a3-4d29-bdd2-0fdbe4461a19 7493d36e-d30c-4bde-9d87-8c0bba1b413f c1119b27-4872-4725-b356-0e5dfbafcb4f 63de9035-4da9-431f-9756-5aad3776f405 4e45f46e-eba3-4239-ae9e-4d96d981cf22 9a79dd0f-7b99-4866-8d57-3cddec60a833 e270265a-30b2-452c-951f-42a68d2145ed 955689f0-99b2-429d-a090-d64fa4ad2eb6 4a6e0a18-e26f-4484-921a-9730635f88c8 6ef13547-7382-4e17-977f-dac23462cfbd 70da4654-b960-4dd6-abf0-5ae04e95bc55 d1858daf-ce70-404e-89ec-862f5b3ad4df 31d45c31-0004-4849-8ae8-62e3cf706709 0681c4c4-db22-49a9-9bda-b95b34b740f4 f0dfe54d-e4e8-4348-8670-c190148b9f49 544e495a-1518-4bc2-a17d-92d41982ff83 ff7b8b0c-aac0-4803-be07-2b682772cfc5 259fd322-96a6-4f2e-b3df-3ed61d37419f c3ff096e-ca0f-4bed-bcf8-96e9529a2bee 34851411-3dc4-48bc-b583-d980724f6555 25779ad3-5cc2-4a70-bd88-eecd9f0276d5 6976926c-8d3f-45b8-8d50-c9ac8261c63d 625fd98a-1d60-4e96-b117-c24518df8f69 40f00781-873d-4b81-9824-0a0a8bb13e80 7dcee86f-9754-46cb-adc5-850acdc15fc2 312f0502-4b35-4415-b86f-13e3105ccaaf 53cde040-e377-464c-b561-b80dc3a9d57a e341fdb9-1f6e-4bc3-bdde-a278fc9d7029 55ee8eae-4c48-4b78-a463-1979334bb72f e6111bea-be89-4276-a5fb-3a214c0d5486 0bc38e0a-28aa-4206-9cd8-830d365e7d1c 442be796-e424-4a7d-bea0-2962cc6e30d3 d2d75a95-f1a6-47c5-8a5c-d5971cc7eec4 823ac220-8c6a-4183-8301-01d9615013a0 80c50b0d-4ce1-4fc6-abf9-f4b2149743e6 694e5ef4-6313-4154-8d5f-62c6b6037d27 604cca3c-23b5-41a9-a258-49a40124acff f6aae15a-4d98-4fb0-b0c4-927fb4e3fd9a 76e06b9e-168b-45d1-aa5f-958daea20c64 d06e2c98-faf6-4a0c-af53-f30473f3711b 05d891af-f65d-4529-99ff-aac0d74cccf3 dd84309f-c593-48e4-92d4-fbdb608649af 6b00f804-b5fd-40a3-a089-dd3605683bc5 a58645d5-0677-42c8-9066-17225d213d1a 5ea59d95-1f30-48cc-a104-ca0a0e02ae2c cadd506e-b843-4659-8d8f-1d6cf1f17354 fb068307-c16e-4645-b787-271c726cea6c ddad815e-e5c0-45de-8391-8b8ed34f324b e43f763a-f7e3-4ade-be85-b25b4a5524c4 ba25c1a6-a67e-46d2-b073-98139ed74406 91bc1eba-68c9-4575-abc9-738e6a6e0ee4 956d690a-a6c2-421b-936b-4bca0252a05b 4caa0a8d-07df-43f3-91cd-ba0428d3b75f fd84f1a1-1b0c-4562-8d4e-c953f82d65f3 31e5602c-27ea-48a9-bf2b-ec4a3fdb43fc 5aeff2d2-0470-4740-b197-58105b942d94 9d4c9f31-7b3e-4740-9464-38f214d2848a 43494f33-d10c-42f2-924c-6ac66b0266e5 931f8d6a-1431-4434-af55-a8826df35a45 e7848f3b-e180-48a1-882f-0dff296b1be2 00e9b346-6a05-4e96-8ae3-4c71855b05b4 a70398fc-fdc6-442a-a2f5-52b15235b731 0d49f54a-6e27-4d3b-be0b-e53643720317 0658a623-f30c-4a80-98c8-9e83b148c60b e0c08720-3f95-4493-bb46-a1bc74989cbe 38b06111-5845-4ace-bd2e-97af0a797a99 ac7e95ac-cd75-4c75-9823-88105464d677 ff309f17-2736-4b94-9d3e-3aaf624c870a d5a96c42-9b43-487b-af62-15ff32c80a0d 42ec73ac-d3cf-42d7-9ad0-41273b277b9f c628dfcb-1b23-4712-927e-0416344f29df e29d556c-0e60-4db3-a555-a696956fd448 91c72ac2-6820-49d6-82a1-08d667b1ec8e f2068e88-be3f-4e72-b934-1d3c0547f95c bdf159bc-6523-4bd8-af8e-a9fe52d1f430 6215d77c-ca65-4339-9945-979b918b3bf7 fd17b1fb-faa0-45a2-838a-8bfab9ce9bd8 e00b797f-fde2-41d3-8647-9de0d967bdf9 201c44ee-2d59-4167-a4cb-36f9ddbdf302 2c29b581-ca74-4d70-8565-57751799eb61 1d468862-8b1c-44d0-b899-ee856a26b491 800dbf2f-6582-4723-a568-cecd21512db6 adc54c8e-bbb7-4718-9ae8-dacdc88f4a7e a37e70a2-67fe-41df-b261-939ffbd5842e de31a63f-1745-43a1-b9d2-31c07882e864 490448f9-6864-4266-ae6e-78bd772b62f2 298b514c-6e6b-44b6-ac9b-34a6856f4c6b 1f9caa54-7d53-47b1-ac53-dbaac7254d23 28f8c502-9cfb-4164-abcb-7abaf1865a33 3cb21b18-4510-4406-8a92-2b6920a94fad 373b5cdb-5811-482d-b790-2d82e7c16e02 e4b385b3-e5db-4aca-9798-171bacac026a 5e263b2e-6a03-4320-8eec-36da1dffb24f b7aaf0d1-e30c-4270-930b-f4a24b9aaf7b c14e656d-b577-4beb-bdd5-0d52a4533ca4 5563bf77-373b-40f0-a431-7a8841c1dbb6 8d513d1b-6577-4283-af04-ac6459c6a3c4 67b4f6eb-8428-44ad-98cd-2b53294053c7 678ffc30-d6f7-4c31-8632-60c860d3bed6 61a737a4-e310-45cf-948b-28f103347d1c d7d99805-e3fd-4161-a482-0bc3cd4e848a 147865ff-6b18-435d-83a4-fc45104838ad 6bc9498e-1927-42bd-b345-9dfc9ff0c8c3 787bd5ab-97c0-4627-9de6-395d7dc6a37d 53465b12-cc5f-4af3-aae4-9ad496fc4b56 cd6b531c-d7a0-43a6-bf7e-1db1d35b7850 739e8fc2-8a16-4958-9be4-3ed3a3586ff6 ffa21df0-9607-49aa-ae27-b74d3eb2a441 11dbaf93-61e3-402b-8847-c2d1d88280f2 eb369760-61c7-473c-b020-514a02d1f650 4a88945d-ad15-497a-bc41-df1756f60d67 e7f02ea2-bb88-4aba-822e-e3b32d62cdab a35298fb-0d0f-4a6c-bd74-fced4cc92e11 4f8fce65-73eb-4a6f-8d50-902b26feef55 41d9987f-03a7-48cb-b154-323dd76de29e e1a1981c-8f34-418f-b3cb-d43a985cc971 eb47adce-ffe1-462f-962a-940ca36608f5 51ab7771-1bf4-4c58-bfaf-e01224381193 c2eac556-69a2-4631-a574-3ca4261b9ae1 fd2bb684-1c4e-422b-ba25-22010a5a6116 3433e0e0-2b33-450a-be3a-d50b3ff97569 b423d2f8-ea3c-486f-ae45-ad506120499b 528d08b7-d205-4d5d-bd9f-be950ebccef2 147773a4-0e22-47c1-b500-8b4b0021fb76 fb9b4f60-a970-4666-85ad-2358be808024 a146a447-2153-4f61-b7b0-0e1352ef7c69 1df78876-c2f6-46db-bd8d-028d09dfea55 57472ba1-e3dd-408e-b46a-613a251bd468 a33a10c9-9f79-4f32-b8db-11a88375a8a3 e67256fe-94bc-468c-990e-a93568d6564c c6880bee-8602-4424-8290-c271508cbc1c 0c2db3d6-6a26-4c5e-b357-1ebfac358a70 5ff559f5-d316-403c-87d2-71eb5c731aee 5157ac79-929a-4ff1-a4ff-4bda57d702c6 2fc035d0-a60d-407d-8ad4-d1d2e9b67091 c1518462-442f-4926-8591-652cf87a3a0e 89caf4c7-41d8-4daa-aef1-72aa45851ba9 2e233535-3a10-4ab0-9ded-0a1ee748e589 4bd24b8f-b1ba-4cd6-a12a-68966d651336 aebdfe66-9c57-4da3-86d8-e37f6eff1d17 d38e70be-8707-415d-be2b-6dac6ca70de8 3029db46-b0e1-4a33-b26a-fa6f0df874d6 f51c40ca-2b48-4c8f-97c9-46ea668129f8 bb2cca5e-c8de-461c-8cc7-7f47fe3782a3 39b923c7-cb21-4ccd-8961-10f7a9450bae c2d10d89-4099-4bbb-8122-d58a546fbf66 7abc5516-b61c-4ff6-8715-dc43d706d6cb f6f3b46a-28f5-4098-9e46-e9f7a21dfbb4 d51c47cc-d4e6-473f-9f33-b9835c9bbcb5 528b1bae-41ea-41d3-8166-ad9be2b5d6bd 3d370288-69fc-48ce-ba76-aa1dd1caaba1 f3cb65ea-5dc3-458d-8993-438a188e56eb 03d4aa4e-9a2d-49ca-8eb7-f047b9e555d8 251e4e04-f1a4-4de4-9fe8-1f46acd597e0 b13c2ffb-9232-4479-82dc-5da2810eed7e 6e53da19-b255-48df-89b7-7d55a057bd75 ab4cb9e9-f4e8-4e4e-b7b8-69e535e62839 9f430e22-cf07-400c-a387-4fa0961efc80 39ad702a-0785-4583-8fa8-2a6a3b2c4ab0 bcbca507-581c-47e0-88fc-3a9b508092c8 92f92d8c-5f21-4ba2-a512-078c05c09d00 58a89905-170d-450a-b822-c9dab3e24c0c 77db4b02-894d-410f-9c2e-0fab4467a7d7 d9403e44-d64f-4bc0-ba5e-1b805d327549 3bde743b-bc40-44d9-9712-1e014d07366d c08870f3-c220-4a38-8ea4-e5c8cafa83c4 853c75b5-31ea-48c5-9dcf-defa57031ad8 87e35bc2-6da0-4d0d-958b-e11539417d44 23a687f7-8fff-42ed-89aa-1deffff89343 acf70d72-000b-4c87-b64b-63efef495bcd 59d4b65d-7050-4d0e-99b4-30b3dffda031 677a1ab7-f271-4a62-9b81-0c96065d8f65 a7b8218e-e1ea-40d4-ac54-ebb29cc7c640 58c4bc8e-5107-4612-a9db-df76b26d9b7a fa425ad3-92d1-49c1-b8b4-2cf80c277481 85c0befe-8733-4441-a151-4898ccfc8d5f e29ea48c-12e8-45da-8cac-cb7acf6a7c1e 7397d879-d749-4805-93ef-01c449321bc7 68d2a444-40ce-485f-ad05-c0956697bf09 866d2f7b-5b11-452d-a847-bfc6cb41c91a 1a40bc7e-e663-473c-9190-7ae451cdf71c 01b8b8fb-adc9-4c18-a021-ab1ca6f58222 a631a731-2f90-4750-8bc8-bf573c4f99b4 1a624133-a5b8-45f0-9402-b27bbfc5c412 5105d3b8-1856-42af-968e-a1dcaface628 58e6edeb-a9e5-4435-a1e4-1453109b2933 4fc693d4-c995-4ebf-a847-19a1f5afbe08 a53f321e-e9cd-45f3-aec6-ceddc8d569ac 2fab4de8-076b-4ea7-b3b4-92a26701db31 bee4e0bf-4438-47e9-ab03-74fbc10ee9b6 2cdebb97-e4fd-44b8-9ae3-23bcac24c996 bc749599-d7e2-42e0-9c01-b99a3c2c9be9 67a4b0ca-0215-4bfc-9881-17e2bcb4d095 658d80c6-9039-4bb7-9831-5018e949d726 ca8aad91-b0b1-4546-8d90-63812ce6d194 1be4650f-011f-4f73-921e-b946240bec4d b0a4ce0d-4de7-4252-b714-c9d0c3809376 4c0f0ec1-4519-43ec-897e-5cac954af778 dc66920a-f109-49fc-953e-901f11865f85 5e1ff881-9c81-41b9-b1a5-1d482b2dda12 1eedd190-4989-401e-bb91-82add0da1e4b 857771cf-189e-4138-b103-1e3f40dbc58e db73e56f-4160-4b01-bc91-08c1755cb3f5 c111936e-3e9e-4f58-9123-b69e8c4b7c7e 4d89519d-dadc-48b5-899a-f332615e20d8 48d4ec59-7fa6-44f0-8156-6e4116c24f09 132db860-c85b-40b5-b8c8-f2f7ba9ac853 7286a396-4504-4652-a1b9-8fa09f136e98 3e7121fc-2832-4f16-ba6a-4ffb5fe375cc 75def150-ef81-4082-ada1-315b159c218e e13902f8-1133-42ae-9fbf-1798efd14b1d 83de81ce-8518-4388-8ff0-17516711eaa0 70f5b8ea-1d0e-43c7-8db9-bd1da869180a 4d1e48e0-72a0-4593-b9ac-a0e7506f63ee 70c543a7-587e-4e16-aa41-d730aa99b27a 71ed5097-87a0-4bbd-9501-635b7bf5a8b1 d85888bf-6147-4654-91cc-7acc29e23e3d f4c0dac7-ff07-4b07-aa01-7ed5e66e5cd8 1bae6296-445d-42fb-bd83-28f1d8b900f9 4a4d332a-b8b0-4b59-89f1-0fc03e317e12 dc1dbb4f-47d2-4cfb-9dbf-2331ffdd219c 73a80eee-c2b0-44c3-a6a0-d76f5df72a18 b7a23a66-4304-4f47-a40f-c78f53ce60c2 0023b084-9833-4253-9f4c-98fa17880f68 e68420cb-8fd2-4b10-8478-6029c7682955 f90d8d58-893b-46ad-9a98-aac2d1d0f23e d013bdda-c781-4df1-946d-d791df0fcc2d d60f6703-1bd0-421c-8417-1f0d2ab7b28f 79efea69-de05-4a98-8848-444d8c43e535 d71d07c4-cfd1-4ac3-9136-32d5e104ffb2 abd5e03f-c6a7-46cd-95e9-74f0b93ea8d0 cc5b543f-6083-4c50-818e-68b36748b4b3 a1440f57-1344-472b-9ea8-847a65858d35 e11396d8-c1ba-44f3-81b0-74c8cb672056 dedd8913-16fc-454a-bf32-25abb5e9bf6d 77919eb9-1d1f-4f24-a18a-ac45218cfa07 44dea646-f0ae-4bbd-93f4-26a8e6d719fc 577df81e-9854-4f9a-a4d8-ed30d2be3e21 89ab1da4-22d8-4e92-bbed-ccf5f2ed6b30 b5cb9bb8-ee78-4eba-9dcd-acd94411f20f 290dc06e-2a21-4936-9bc9-7d7e79ee23ff b28393b3-ee9e-4b10-9fdc-938525e67059 48dfc1d6-2701-49d5-9801-3f2d807219dc d4065d28-f7b4-4a3a-b289-803546ec4bd5 6f43e9d4-330a-4735-bd2e-9f0aa194cc1f 534152b4-17d3-4540-999b-a32d894ee686 91d4fefc-bed3-4008-93ef-7597f0e214f8 fbb18fe6-f316-4be4-9665-d86c1e13df45 82387326-7d08-4c27-b978-f23e8a17af09 7e181c8b-bcff-42a8-8530-8838e917319b d51a757b-0534-43a9-b876-6dbd6eb95bff 8d240664-01e1-47c7-9b9f-2ddde5b7bc16 e55086cb-fcda-4218-8247-4ae5d7535959 5c73d9d6-76c5-4ae7-baa0-804aa6defbdb e0134f67-e680-44fe-95f2-d4a94f8c84f8 288599fb-e85d-4113-a3c2-61d727d52a0c 7c006518-1d9c-4434-93ba-4bfa84276266 3fcd1a2a-934d-40be-97e3-09ba3508df52 bb574ca6-318b-489c-9658-341bd66e33a2 51bd8e33-1197-495f-8f88-caa22a41203e 4e1f6400-35d0-498a-81ab-bb10c8c9095c 3e5a81d9-9edf-4faa-be28-f95b89d7916a b684ee67-09ef-4a00-af14-7015e59eae53 33233623-2425-4fe6-89a9-148cade221df 38d1315a-8fe0-4c97-903f-3659eace9cea 41af34ee-b155-491a-89d8-f2004df64ae3 c1a5463c-f905-4840-9d12-cf688a539937 8df8b3f6-d8c0-4b52-86af-d57a7230602c 56dec043-a4f0-4acd-a007-3de6ab8cf26f 0bcbc838-a503-44f1-b055-a84df5cc4a74 9c322f8e-438e-426c-aa73-7704987decc6 78056f48-1dd9-49d8-b739-2de7d4f9f350 21307f8e-e6f0-4c55-9335-47d752c16397 95c5d2f5-5f1a-4fa9-b892-cefc2fcd3667 19336abb-4e0f-414f-b5a5-2341f28b4d6e cf499fdb-b832-4ae0-a705-835b0edca045 99a1a963-1645-4ce4-8607-ce3d75e8f7f1 a674f3c6-7bec-4975-bc74-5b0b9f7ebf92 4c0ffab3-519f-4182-bdae-559acb40198f 361f1a20-078d-4fb9-a689-3bed85d43760 6b75bded-8252-4fdb-b4ed-2f3c62ce6b0b dd58e87c-1d1e-4dfa-9669-dd77526b2a34 2479db45-7027-484e-8a3f-6c288614a83c 164ab8ee-8799-4ad9-b9b0-9e0479c5f2d8 8039913c-3fcb-4186-a62c-02b589afe4c8 b710a76f-5909-4a97-8f04-1b99406b9fad 4da8377b-a8ec-4986-881d-d43db1bcf90a d0a863a7-cb7b-42fb-9248-1a240e412b4f 434ecf91-a8c1-4c0e-8d57-ebc7d6b17ca2 5bb0a3dd-b53f-4efb-965a-2d9e47ffb45a efae2f1a-f218-4fcb-8118-e667eabfac51 8089df77-3089-4af7-a9a9-b01169fa2b22 d6869eeb-850c-40d1-8692-543f35db9d33 fc8264aa-2f7e-4a92-88b5-ecb415393372 a4b5fed8-b19d-4c11-b993-7ca90c63747c dffb3511-05bf-4a98-81ea-12de2cdf754f 0e62dc24-6957-49dc-b268-12082ec2d7ea 2f515283-8f5d-4f83-873b-8bd3353f7633 7305feac-7253-47f1-aeaa-741c93a35783 73094068-0913-49b4-a1a1-2914046d60de fb540d32-d4be-4c52-80ec-934f5f40fe20 d67f63c4-6b42-45d4-8279-598a59039cfb 33f85776-78fc-4007-acff-a9791686c0b1 970eb967-082a-47df-8996-1b7f5709bee1 a73c68db-d562-4e4a-a880-aef461db4098 25b2adfc-08ae-415f-a8cb-1fe8c02edfcb e13966f1-8070-42cc-bf79-2db29d82fe2a 92bab404-a951-488f-ae50-6cb5b6a0f986 ef4ca531-78cd-4709-bca4-810a6e3cc8b1 bce4699e-a304-4b71-9977-8ec9a83defe7 18c6adf2-ded3-4172-94dd-3f15afffa19d e28d743d-dfe3-4281-beb5-663d82e5ff33 87d4b084-266f-4341-a71e-007848c0f1f0 0b39fee7-b5e9-4309-92e3-241bc4a2b692 bca62b75-d9a3-4726-a9cc-f1ba495f11e8 a1672225-76f7-4744-afa8-39528573d435 c207afe4-fe8d-4c37-87af-2507be5f847f ee1fc5a2-e77c-4a1d-8c90-69d0af6200bf 429e5015-96ef-45ab-ab6b-2f6dec7db95b fc611b27-2791-4a4a-b4f9-e0e52014c7c7 2c7bf0e2-a088-4d9c-9747-622655cb406b 4948ddd9-f5e4-4c1e-a03f-8bb0bb88d4c1 43796624-f6ce-4c31-a351-8f0dc080066c 9cc5d891-e654-4ea6-a27d-97d5dc8a1689 2280a3e7-0695-4284-b9a9-5758bd1a6708 3228b0c8-89ec-4292-a34c-9d018e7c2d42 0a9710a8-68f7-4097-a545-b2ae4c64319c 91082139-9fad-4267-88f3-92870d0bd769 13a8234a-62f7-4413-ae12-fc63ea171f28 a283eb49-1385-46ce-ad72-884a86aadc5c bc85f01e-3838-4d48-a559-e3bb77774a26 4456bde3-7d2a-4117-a300-a1544386db78 45a85145-4614-4fdd-a2ee-aec38e90e74d dac6c938-e79b-434b-802b-7e7b4d0d9d51 fbb34968-eafb-46dc-bce2-d218f48974d4 ad6f45af-f95b-4359-a52d-342c960ec619 dbc69b71-8c86-431a-a8c8-7fe997ec0177 e06081ee-4bf0-423f-bd82-8d79a8ff3d34 b08b2b55-b1c6-442a-b6fa-bf101fe5a4df 59627f5e-40ee-4d61-8191-376b5f07abef 5522488a-786d-492e-8c09-53eeb55d3de7 06de426c-c7d4-4924-b402-c1284be376c0 813fda4f-828a-43e1-9994-523c6265bf0f 9228cf51-6de4-47c0-9050-84c47fc3ef1f 6e2c1098-1637-4f19-9c08-242b2fe5aa6b 9165c7f1-78b4-48e1-942d-094db363b120 4c776688-174f-4e73-b9d3-2b3b86ac66b6 301ae322-aade-49b2-8208-91ee19dcb3e3 1b2bd48d-71e9-47c4-8c4f-0914047109b1 9c7d96b2-534b-45c0-93b5-ca51963efff8 77777bb8-aad7-4778-8514-b77952a29595 0e19068c-7b1c-49f0-913a-42fa07d4900a 1266751d-415e-489d-90a4-46e7eef5e528 2b633f9f-1491-41bb-b175-9b4d11ee44cb 7a9b6ca2-2d12-4e2c-aff5-40f6570138c8 98cbd262-402f-4e0e-ac0f-100c4977b906 5a14cf1f-3c82-4baf-a063-0b6d6b54e020 30526e63-21cb-4515-99c5-5376b1081cff 457f16e4-7afb-4069-8c33-b1498dc3b94d 4c39338d-9871-430f-84f5-2defa8075579 04a2a621-b0b2-4c7e-9e03-2c1f284d10f1 4bbb98c0-5d02-4d47-b50b-4008fff97438 dbbbc9b0-01a0-47ff-801e-835f9ca95a53 580ddbf5-5548-47b0-83c1-57d6657dd87b f8a5ca9e-a729-4e9f-a77a-7f2c88de89d4 dfe576e1-e2d8-495a-b43c-c4faf4505d8c 8dc5b2d3-80ee-48cf-bdbe-047972f22f8a 949aa2b3-96a5-4fac-b440-a0de56be2ec5 fd2ac297-0c3a-439e-9294-c5e5783cf7c1 8dee340f-45c8-4e9d-a29e-28c93c42ac9e 1635e04d-5a58-4b98-930e-b2a0a92fe38f 6a6b33a7-05d2-422b-9cc8-33652f6129d4 be0052cb-e98b-4b21-950b-9148254acfb1 517b49dc-43ba-4e82-94a7-1f4e7f8b1050 d074dee9-79cc-4dc6-a051-e1544eb0e56d 1517d628-2458-4299-84d2-c75ce77ca0e7 6e36bdcf-984f-4c03-9ed7-428ac470c323 4a0891ae-cbf5-47a2-87d4-275dc9d1ab4c 2070c553-e6e0-4a79-b12f-6f5478eb235d 28168f2b-a9a2-47f0-a5d6-64b7bbdd666e b481d9bf-099d-4078-bedd-3934862276b2 2f60a15f-3877-4ba0-b261-f1dc97825fdf 42b0d5af-9c19-4d08-88b4-89c1772966a4 fa8bcf88-d195-4bb1-a8c3-3204be6abbe8 c58fe55f-2e16-478a-a7b6-34b57e85d14c 23863899-6b28-4172-84f0-8459db00c291 49a5f9c0-9b2c-4366-bd45-bc776fccce24 e5f8e861-4271-4a95-bfef-45c405ba1435 c9461eb2-5a50-404e-8f98-bc3ae26941dd 3456cbef-c8f5-41af-b0b7-6c3cc868805c fdf657bd-40b2-45db-8867-edc2ffc0d92c a9121b1b-8e9d-4a30-8df1-320a025c17f1 58c0bd19-05af-4943-9361-eba7b9cb2a70 1f242be5-4da0-46a8-9857-705d72a8084d 30f4dd23-b5f8-487b-b305-1bb69e32e9f5 6145c6b4-8d76-4160-9f2a-d410eda4793d e1025172-55fb-4ec3-8afc-90a051d18596 2b9b8f25-c1b7-4636-8917-7e87cc1b6c2b d75c9b78-365f-4d7e-b21b-b433e4eb375f cff8aa2d-c778-45e1-aa36-2881e9a28151 0cbdaaa3-82f4-4db5-8ba6-4dff5908af44 1ce8ee95-4172-4b2f-b93a-b00c64b71b7f 5ec572a7-dc5b-4afb-9601-9b5104489dee 55c89dd0-e31d-4465-8ed2-96605abd2b3b 2589dd09-27f3-4bc8-87cf-81f4f819c53e 86e1502e-dace-4142-b9bc-a35669e5ab5f 4bde5218-d01c-4d6d-b818-3bd42b14b819 310d9e2b-972c-4d31-8799-f48c093a10e2 12cfc39d-bb5a-4ccc-abc9-36c7af8ad629 e97a3b8d-77ad-4455-adb7-71c31cd4ce86 72795bdf-9f2e-4513-8889-27766168ecfa 857d58bc-4e92-4563-a6eb-5def0290bd64 e26646f0-6456-4018-9a96-8994b9e3e51b 0e37f2c8-0699-4e29-a17b-27bc184cf317 df04d4a6-cdb8-4f4c-908b-88fb00e2bb9b 1e3028cd-e466-4b6b-8151-fde00812146d da0c8762-5317-49e2-ae1a-385d779b92b1 4ef66d57-c67e-45fc-963d-26ccc9cecb73 1407b259-96f4-4e05-aa12-ecdf12647c3e a492dac0-2d3e-4bec-b634-dc0faefbeb6f 6c7d48fb-15e3-44f3-a810-81f175c73028 a452abed-9ad7-4b8d-b1c6-daae3d6217fb 16850055-3376-4868-91da-58ef4164066a 0e167e52-c7f0-41a6-ab5b-829b8fc52ea9 6491ee7c-7a55-4135-8f41-99b0f2dad659 6771ac2c-c97e-4a0b-a012-b7072e5fc5e4 1ab3dfa8-5bbe-4432-a054-fe1ef29ada67 83f0da61-352b-4dd6-8a4d-7506c28f3cbb 2f3629a7-6ed8-4f97-a9e2-f4e0b28e776a f65bb3f2-7f8c-4c1e-b97b-decfefa858d2 dbbf9590-7df9-4e52-a119-cb25dcfdc049 de2efac2-a7d0-4096-9d96-2a55c7d99f02 78e84626-cd98-43dc-b3ca-9721e82936d7 cc0eaa46-8f23-4e07-bf72-7efd4158f1f2 1b2901e8-63d8-447c-baa9-f780bbea51b7 ded5249d-928b-4a48-8081-e2bf65408151 6407fe90-84c4-4692-bdc9-5ab40f02d85f 1ab1f9e7-4d16-4af5-9316-af2795be4b7f 24ac2178-e696-4f51-8212-aff0dce2a8e0 b279bc97-1abe-4474-b1ba-e42e24462871 4f13e6fe-da77-4521-aca8-38a2d29b3d7e 0fbc790a-ef49-434a-96fd-7c2086b154be f2ddb7b1-8d80-4101-a9c5-15d730898081 bb2e25ef-509f-4d86-9d7d-428cbc04b9ab a1f555c4-8ee4-41a3-bac3-f352ac77f700 7a7e5f1c-11d9-44c2-afcb-e32806524f05 1e20420f-c1fe-48f8-a26b-b962776ca9a1 7bfbc52e-f758-42ab-82a6-f7be77a2083e 3df1d0e0-5012-4def-a84d-772461c7bd99 42420f5e-cd22-4c60-844d-82da974ac5fe e4cbc0bb-60f8-4d00-b40f-7f5ee4558152 79e2d75a-ef18-45f9-ad61-64dab208a0df c4ed7029-1826-4409-ba5a-56487f52b58c 74b818d4-faf9-4b56-8e06-ed613027830d 6203c69e-adb2-4cdc-b1d9-864854e56581 2ae2dfec-0d66-42c6-a150-14ba792df229 e457b311-4737-4ecd-8387-20c6049366ef 7934e3fc-9591-4cd8-9565-850de4e5249c 6b999872-008d-4cdf-8fc6-2888e14329f7 b728c812-4fd6-4faa-b6fd-83b2ba9ff17a 385b7558-d007-4b4e-acbb-d4fbcd556099 32fee0b0-7cb2-4d8d-b34e-c26cbe50d9d4 6e3e9917-b263-4d29-9770-8d590130527d 63eb6b2a-084f-4bbf-bda4-0d0b2200aac1 7ad49e5c-b57c-4fd1-b9ea-9d8f6df2e762 20ad9d80-114e-4a66-91bc-58295677a001 cea03a77-e1c9-4f72-aea7-43137fef9304 4fe0fa8e-3461-47b4-a8f5-ec557a61daf3 74a7d586-523f-4e6f-8f0d-7fcdac158cd1 c42e9b88-d0a3-4c52-a02e-b9df8947b1e0 371b0017-5c85-456c-97f0-f1acab5db707 80078758-7d4d-458a-a897-b17b5f832901 9733fcf8-d150-4c93-9bd2-2bc18bc7623e bfa66456-df76-45f3-8b6d-ac98122cf766 6cf6efd1-97c4-4446-a5cd-b6932121199e 01bc7f77-0e2b-4d49-958e-31a5e2f4d385 8a13ecf8-a57d-4544-8381-4e86406f6408 2816868f-9cc2-4535-af1d-541b2b1c381a 64c3061c-1e98-4ef1-a23d-baecb4378830 ec5f50f7-6421-4b5a-845c-b4d45635e335 4577aae5-279c-4fb2-84bd-35a11b387ecc dcaf8470-07a4-49e0-8b2b-53f2a34598f0 adf13504-841c-4a37-bfaa-4b4417b7456a 66dc203f-b9ad-46a4-886c-496a76b50604 4a954e2d-7c24-43ec-90a7-54cdc2cae031 afad2a13-fce6-44e8-bd2d-8b3ef2f569ca 592c5bef-e754-4ab2-b985-d05f5a35a4df 8cdc5f86-a3c2-46ef-8088-bd0d76fd2f0f 2eeef31f-ee2d-4e76-acd3-d4e4fb72f9b9 6d7821f1-6996-4dd7-97d9-3b0b5cce435c a739ca9e-bf2a-424b-a402-2f1cd0750446 f7101806-2c72-4bde-afa3-588841c4ba8e 159629fc-beef-4129-8b1d-970eb4d91923 e0e98365-e4cd-4d8b-a5fb-f8f973ac3645 c8abd615-6337-40c4-a229-04971f9c492e ca720cf3-fe30-435d-957a-351974b8217f d9164a9b-f931-4cba-83ba-56bff67af85d 65f103f5-f233-4fc0-ac02-297ada0af754 1384a062-876c-480f-b810-07f9b2eb4d3c cdd24fe7-2f8a-484f-837b-f7aca74fdf9a 0e6aec76-5f28-48a9-af95-a5a7f2b8d248 17c02ebb-816e-48df-ba4f-02a767048452 7d47eb31-7e5f-43e0-b68e-148598c38c60 50f25c04-e53f-4ce3-9edb-dcdc235eb1fc 05c10630-6f5b-4872-bdc4-0cc5af4b64d9 912e0ff5-62fa-41db-81e6-b10e6c03de0a 84621cea-cd95-4027-b2be-47216ff6c838 4ac57fb1-1933-493d-8a15-d7169b50e8a1 f10e5c3b-b52d-4f76-bef8-7bc8982cce76 dc8634d2-cc15-41f9-8d7a-d7c5c3e9987a a5de023b-42fe-4926-84b6-29b7f9227202 400718af-73a9-4070-80f9-f8c8b6171d85 c05485c1-d0fd-4bfe-9ffc-b63b91419a69 6c0ad97e-f1e9-46c8-8ea4-ab317c2666a9 51ddf5d9-ebb9-456e-953c-d2210b375f62 99a5ad4a-ec17-463f-9bbc-9fb5cd7ecdfd 2278c854-3d3a-4a66-9970-d39ab5d4cb7c e78df903-1589-4e94-9bd8-765ee07c63d0 6480e7d4-2188-436b-9e5c-f30bb94371d3 ca2a3e23-fa0d-49fe-ab83-baaac7aa651b afbd8c39-f813-4c42-b2d9-f25612dd4364 d9e6649d-d583-4115-9829-af709bfab4f2 f7477941-1dda-4f20-ba09-1d42d18d9863 cae0a9b0-b454-4759-93cf-60fa3355e2b1 136fa6d1-d2c0-4eb5-bdb5-fc8e6f7907d7 5a84f08c-252e-4cca-8601-15fe174b9185 4f718540-c88c-4d34-96b1-b53a42c75a7a 75ef0ae1-cc51-4a36-96da-a6cfc19793bd bf351852-56cb-44c0-bf03-6e1e40300a7d 7c12965b-7cad-4889-aa98-d0fab729d361 a7ac88a6-4876-482a-b29e-b12c94a0abdf 2652501e-c223-410b-87e7-c3a4fa9c9db8 0008bc60-e560-4f8d-bd58-f7188fcf678d 1ef56609-40da-4fed-88a3-619374806afa 9dcb36d1-a145-425d-9ecd-2afb48de3dce 676c88ce-71d8-458a-94a4-31eb2350665c b3dff082-62f0-444e-919f-8f3e805f8854 f6beae88-4b7c-4707-a694-f8a5f14597f9 d9be1f61-2bd2-4e2f-9d9a-ebd96ebdf226 c3a28646-2cb3-4409-afe2-59d9482e0053 2367e042-0c4c-4c9c-a6fb-0dd391526ff3 63621daf-c3b2-4d05-9f48-d74ef783d42f 07685367-e1df-4a87-b9d2-7a7d96806e28 bffd3f9e-2530-4d6c-a76b-7d8cfbc0c210 9692300c-7640-45dc-8e6b-7f848d76ec48 a0dab4f2-72ea-4c93-ae62-e22df3fcf775 5e6e3887-d2de-418b-80ba-811000ace5ca 5bebf114-f3b6-4772-ac48-1d670366cf11 7b331941-fbfb-4cb5-b784-234fe2c6d891 a1892610-f435-42b2-93bb-23903e1ab722 f1565d8a-4951-47b2-bb1f-df2b04ebd8cd bae17518-c60e-4fdf-8181-2e12cb18e86b 34ccc434-c99c-41a6-9cbc-144514974c40 8fb8c6b0-77d6-4937-a5a4-f2a881fb0a10 f0d35ec9-5309-4767-a00a-41fd9a1a3057 5fc167da-e615-4134-9c9e-cda4ea2182a6 de35b08d-6f5d-4022-9e10-10dd043f5c3c b16262c6-7abf-43ad-a000-1e661dbecdcc 87ab709f-d3f1-4192-a644-d87fb069bcb9 7ca2b8a3-1f14-4a4b-9021-8892d13893f4 3d116505-fb5f-42d0-8f38-d9d4398c2dd9 157cf0f7-95bc-424a-92ef-5cbd7f4db73d 11bc3a47-689a-4932-8e64-b2a27cbe6338 f7311754-a1fe-459d-abfa-743a2d3e24b5 fc6a5989-4316-4ba1-bf1b-5fec5154320e dcfc7abe-778d-4180-8e75-88567ea814de 12ef5ec3-c16b-4f93-b637-f3b728f422e2 6847ba2c-81af-46a3-97d4-e347dc8c59c6 171485cb-6680-449b-9180-f7e2c2b1134e 2e2159c8-dfb7-4f76-bee5-1335088f786c 1be168c0-0e09-452c-b89a-038b78faf5f4 1880ae73-5b19-49be-a399-7989bb271481 6e1760dc-eb51-47f5-9c32-e9033941b1c1 f7c3af03-cc1e-45d9-a2d5-9636ea0b5375 265da503-e5fe-4a1e-b77f-8dc89a716e70 c3762488-7b59-406c-8a4d-e4171692aaae 00416036-125e-4719-855f-bc16940fa4a2 f68ca341-da19-48e8-aaf6-30568ea19bf7 733d4eb2-7947-4961-8ad2-f555cb083011 450a20d5-2ce5-40c1-ab4e-a0e1adda5378 c0d74909-63f5-4551-ab41-0acfcbeb1b1f 03634715-35f0-4f49-b195-af56e84a4da8 14cfc267-d842-40ef-b4af-7f8d72cd53b3 b4a5095a-77ee-4e24-9264-85694f2fd1f8 4a64eeed-c19b-4e74-9086-eac50e1b760a c055b816-e07b-4e8f-ad66-821c9167f805 0bfe864b-e191-49e7-8a28-7d3bb6fee73d ee73b930-fde5-4162-b85b-bcbf8282bb2d 18bf4e3d-37b0-4588-bb4d-bd2f8e9cca76 e4acdc24-6517-43d7-a8b0-4ee139bc5f42 a56cfb55-4edb-41a4-b0a8-d45cbea93df7 2504c4f4-599d-4626-9a0e-0e51b046dc3e 81283930-aed8-4267-af4a-df79c98eecb6 bf354fc8-9c5d-48ba-88ec-9341f817abe8 60989d6d-cfd3-421a-94fd-8dc5f0d4f73d fe9e760d-9d9b-4cc1-8599-0dd0ed53d929 d4ac53c5-94d8-4036-a549-428a7bbcf67b 2692f4ba-ea67-40da-b3be-a6875c010e0f 049c6503-f123-4cbd-b7a8-c491aea1c9f8 786b6460-a95d-4a18-9bd7-ddacf6a8bb4d c778ba56-52af-4b5a-aa85-6a26eabdd0c6 49e5b23a-f9f7-4068-adba-a89fb70e30d4 bbce05c5-36dc-440a-bc68-518c111d37b5 acb52b6b-b6a1-4cf1-82fe-15b72c271f8c 369ff062-8f63-44cc-ab91-0104f98ad630 2d4a0bf5-e783-4bcb-9611-d1ff573508cd d4b179b3-475c-4f18-a5d1-e3dd73da38ac ecc1c9f2-b827-4581-9902-ff248ce098b4 f27419af-28c0-42f9-bc33-89053ad9555c e5b4e791-4a33-414a-b5ad-f19a929d19ee 04651897-6631-4d47-84d0-817227c3ac5e 839f9b9f-31be-4d36-b1d0-ba098616ac08 4558bf12-0914-4824-ac80-6cc8a29919f1 e560c71d-f4fd-48fb-87a6-828d33be447c 1ebdde26-94d5-48cb-b1d5-1011e89ab2ef f3227b63-8c03-4c2b-a2d6-3f032c8dcdcc d2f07885-2c54-401a-8b03-e8b5582107cf e63d8f37-c1f3-47ad-b008-5e2035eeba9a fce9e789-050f-4a3c-9640-655fbc02042c 4d15967f-7920-4379-a337-e8956d80a788 8c9321f4-63f9-46a5-84b2-d1e23d9082bb a52bf1e0-41bc-44e2-a259-186a4bf3caf6 35247cd5-a1d1-476b-9cd3-b6b2f1f4a453 e5c4c865-367a-40d1-a080-7a63ead59d64 9b20d09e-146d-40d4-87b0-2232c316b924 17cd6b79-62dc-4c5f-a321-4bc637933802 da6f2fab-ad2c-46f2-b040-bc06c8e4d778 5a654cc0-37ee-4b49-8259-45eaf2b648ee eb148bf2-2277-414b-aa64-521e787d3ba1 0a8a29f3-cca0-461a-9e74-0f7d9dbcbe48 f143fac8-6706-4615-8859-5f0c9503939c bcd35a7f-7016-4b75-996b-cb8cc969d7ae f27ef617-2c8d-4f69-97a2-b56d22444545 d58df05c-46c4-4ab0-a669-dd0a4314fb2c 65c5dc27-1da8-451b-ad6c-ae1aa56abf4b c355ca90-ae47-44cc-90d2-1c3ce516ae72 cf8648dc-2609-4566-9308-6cd15f3066b2 1309a1e7-4bcc-4c1e-b731-d933f491db71 58b552c9-c14f-426b-98f6-ce46cbc15801 35656211-4f86-497b-89dc-1d3440c129e3 a88d39e9-d2e6-4fee-88f3-54265a5191a6 91dfe17e-5763-4aa1-b6b1-7c7326df19eb 5b3ae6cf-bc7d-4472-b7fd-19eeee5b75a7 7ece0acd-4c51-4c5f-a59d-6c4408b85a29 5d4c8624-602a-4f19-a779-697a46d7bfb5 e1e343e2-9979-43a3-bce6-e0d190a301d8 0517d8d0-ed7e-449b-af5c-35e214dcbeeb 86830bd2-3cd5-4745-b42f-2a3b1fab291d 28bc5303-205e-4f09-8ae7-4342bc0ce90d c01c2da9-d357-48cd-b443-d0645164ca9b a4456a14-caf6-4501-a9e3-d1de2fb60419 8286c592-78e0-44b0-81c6-a332881b9fac aa4be90c-3615-4f73-b271-1c94be56d6c7 6082d5f4-8ac5-4c42-a641-5ffa82cf17ea d62969c2-c2e5-455e-a292-3885a9a396f3 ee158e8a-a762-4826-86c7-b5e0c3624e46 0bceddbf-e6b5-4767-b9f2-9ad7e37811b7 17db8fa0-1312-4558-acd0-6b9729dee7a1 8ded801f-708d-4c70-85de-3f05b09e7ba1 588570c0-5b76-4de2-8a6e-9934e92a8373 52c6892c-26a0-4b32-bd7c-61c2068a7780 54a49053-a4b0-478b-9d32-3a777d5abbe6 8b8f0028-0dc9-4c9d-9b10-bce7a8912689 af1b1783-f39e-47ff-84f4-0c2818655a2d 57d422fd-f2b4-452e-953a-9f58e156ca5a 6ebb6a5e-1d5a-4ba1-8223-c9dc4c82bc19 f71fa284-6dca-4be5-b5f4-17d68aebcb65 99cec65d-aba0-4253-8b52-e9026231d2b3 ca9066c1-0e56-48a4-8931-f3c429ab148c 5a5aa622-91f1-4b9b-bf1c-60ad9fda2039 ecdc3f5c-9a15-47a5-9c4a-0222c0678d43 0078d1d5-be37-4856-afc6-3dec90afe1d1 38bcf8d3-7954-41c5-907d-221eb990322d 39b74ce4-e32d-4468-91e1-54858b2d4e25 a07fc5fa-860f-4d36-bd55-a24dd0b240c5 96fdc1a5-090e-4d4a-be1d-3d7990985606 a775c3c3-ef4a-451f-8a4d-8e38efb388d1 07cc8fa1-8e86-4e22-b23e-25992626d848 9222e89a-13e0-4646-8ec0-e744f9b26490 3f8f5a23-ba3e-4015-a931-cd1547ccaf28 c91dd3fb-86e8-455f-8682-bf747febdb22 248c45a7-ac0b-4ca8-b363-55c9bb5053f7 855432e4-0d3a-4a06-ab00-c4c362025d76 82fe7189-ac7f-4371-b103-67126338bf0d 46d9fe76-701d-4eb2-b56b-0b9ea100e327 72ad997a-2756-4d6b-9e27-3fdf100d6dd4 073af0e8-95ac-4ab8-8d4a-b64205732582 c6f9862e-399b-45fa-94f8-6f06e989bba6 9d3f1918-55bf-4f25-aec7-eabbd866e200 ad5153ce-2c76-4baa-a711-1cb61ea10e86 f26663fa-3de7-41b1-9364-606461cb6616 04680eae-e34d-4f1c-ae33-01d63a72a781 d454ecbc-55a2-4200-a9f9-fea0426134b4 10dc3589-b0c6-4385-80f2-3e6a50a497fc d253fea3-cee9-4d5e-8998-90758bcc76ac b0b0e61d-10bc-4882-9fc1-81a324b26756 25fc17b1-5ad4-460e-a23d-2ccd31b3c49e f1f9904e-fd18-42a6-9cf6-5536a47df1d9 755910af-7281-48b9-8520-0b135f28e234 be70c013-5f9d-438c-ab00-9f9463f8cb9f d17d4fe2-a6ff-4637-ae39-3afbcefa5509 c2af97b6-949a-42eb-bf2f-e10d417d3501 eac02d62-7eaa-4bec-8525-b118f1f585f2 0bbc0679-9c86-469d-a2c0-1ccb349f740f 119b7c5b-a2cd-4e6f-a1b2-523fcc54ad58 e4c44d52-55e2-4670-8a4c-57b80ec849ba 9fb98fc6-dea3-44f7-bc5a-e9bccb91666d 95ef04b2-550b-4a83-a22d-936e115d7fbb db8c6a11-83bb-4e40-b168-b6dcaaf22610 45b64257-e6ba-42e4-b895-efed3608d912 2bdc03f0-d1cf-4eac-962c-fb0aef208977 d8c126e1-2835-46fa-aa04-3f3621a60faa e3a45ff8-8677-46e7-9025-fedcd1d7d6d2 c9f9b196-e2d9-4277-bb61-4757d7a58a92 371aff06-fe7e-4030-928c-486664ab102d 448824d2-af78-4f96-beb2-48a4ec6e29c7 c3252e4c-dbaa-4e74-bf7a-07da697b01c3 0e36e455-92bf-459c-a7e8-897b9a6f2b56 90c8c467-26af-454f-8112-f7e2a1ec3f65 266cafb5-4ffc-4564-b09a-85c306df4056 cb1dc2c8-ea98-4518-ae7a-8e870af50e7d 1654cd12-dc40-4e34-95ee-60604ad08256 588aa367-e860-4a18-ae4f-9c265f6ea0d6 d9677f45-decf-420e-8371-8c7a7b758250 51321d01-6549-4604-9a68-ecc1e1691e80 5fffe3d7-9160-457d-9395-1bf5ed253936 77235477-2e61-4a37-9b90-b4b3367ed274 25ebbd14-0f61-4a83-880a-3a79178e2fcb 5ac2d3d0-405b-4777-8257-18d4b2b1fc85 a9914e56-a25d-40c4-b1f6-274f823a08ed 59ddcbda-d8e6-440e-bde5-e4569dab70b9 650a619d-46cc-4474-8252-d5cd96d55289 8eb27601-859d-4c3c-a49a-846f1be1f5fe 0e1e6a5a-1be7-453d-a74d-890a4d4cdd72 136f4a3f-4ecf-4217-96bc-7b3ae8dfe726 ad7a895c-c76d-4ef3-9c62-3735122549d4 8bd5a246-e878-4da0-a08a-5c90943100ee 7e3fd8ba-62a4-49cd-9832-9d0c26887c40 2a296734-d307-4d69-a103-8e0d88672066 92ca6ec7-3749-4e5d-834a-da8c9c294ce9 20a6e3a2-91f4-40f5-b545-52429779f6fb 579e9d77-84e2-4f3c-b47e-b58d990c44fb 4280596b-23dd-4265-bb6d-f30b7cae0a88 6999aedb-3834-4c65-9eee-0d1ad92b305f 1a0e4453-16dd-4b17-8a28-16420fa272ca 3e889299-a176-471b-bbfa-5bd45fbf5e95 46fd6db2-19ea-44eb-b916-56d8aba1fbd8 7ec6d770-971e-4ff1-8950-5f718f0f53f1 b9308043-2985-41b7-8042-2dce63c3f586 0d1a088e-073a-44de-91e5-a6a961ea585e c671c3c1-0a8a-4dd4-a3d8-b394c64d0a1b affc34d0-a8e5-486c-9872-d4913a73922f b9863822-23a8-428b-847f-f02143efb1e9 06e241bb-9aba-49f5-b058-ac03e8957001 501bd113-82d3-4a2b-bad8-73ace3d0032b 666ef17c-e525-4633-84c9-9865bfb2ac3c 6bff9609-676d-41c7-91cc-1c685f0a07cf 411f8d7e-ac93-471d-86c9-ca5136d3bec2 9042d909-67a0-4e39-8a53-01e0b7176731 b232f13e-66be-46c5-9f2c-c9e927b0955e eb419dfb-8a98-4dfc-8e57-9e5dba86bd1d c1a962a7-115b-4a6b-9ce8-3d5e039042e9 7443e6d7-3884-4bfc-8431-0c741e6d4f17 7f0aa55e-b79b-4c48-acc6-1a69e260a99d 44412fb9-291f-42da-a66a-d7aba116a418 dbf19233-7ec2-4b27-9577-16b680eeadcf e23c4acb-8eee-4bd7-9bb2-9d9457e9cb4a 294af9c5-c6a6-41c0-a8ca-6f4a053439f4 a8a84daa-a98e-49fc-922b-789164367047 aa61432d-b98f-476c-a168-b5b13a726b44 4f561a9e-4583-483b-8b84-b96817e27f7b 78ba5b77-cc01-4008-96ea-0101b04860ca 20c319b7-8754-4e74-a1b3-5d974e631eab b4357f35-980e-4830-b3b7-813d9eb74454 f4fb249f-4886-4a5a-95a9-0ba024113fe4 1db8805e-fc04-4eb1-a150-168dcf2034db 4030afef-65cd-4c32-ab9e-fa452f0fcfd2 7c6ab35b-9d8b-4132-9d93-a9fc1a505128 02acb542-4c6d-4e5c-9b32-ca14a4cc2b7b e8a3e6b6-4746-48ee-8bc1-545786e06134 3b83fef6-cd41-4c22-9119-9032f27d75e0 73e4c2fc-aa97-4bd6-ae5e-a03d918d046a b808e47e-210d-4ac3-ba4e-40ff1d60906c c6d4fdb0-4bf1-4d59-94a4-bc41c78afa39 ca3dca45-843a-4941-83a5-e34970ce061a bd409d2c-294f-4b20-8d46-c497579a1ebb 07cf6358-7de3-41c8-bcd3-472cc1d99a4f 688c27c3-c79d-40b5-bec7-6c3f05c3a269 a2a9c0c4-82c9-4a15-bb14-3de54b96e3c8 3979ed23-fed1-40aa-bbba-daee5a5c9a7f 0064f235-734e-41a5-b2a4-bcbe20ec0d8b 82ae2b3a-ccef-46ca-82be-1c50f20de7e7 6aeff770-c461-4ff4-9fd7-76c189f2d397 e70dd44b-065d-4b8b-9a50-0a50ff669919 8d3b14d8-43a0-4686-89bf-49ec968c1963 1075c169-c7e6-4f7c-9c14-be34bbed8f16 a1faf02b-56b1-43ad-ac28-e6d59048c8b2 7d0f71f3-e0c6-4893-b054-119341d79d85 26b950ca-fde0-458c-a6ec-56775bfa66b4 07988fbf-f7b6-47ef-bcf5-84f4fd38575e 976a6196-91c2-4bf1-aa88-97adc35f9247 b7196c7a-23c7-4f81-8fea-6b36ded5620e 0a43b8b4-82a0-478e-97e0-a5fd4e8cb86e 7548f3a9-c508-43c2-a1ac-cf885188027f 0b7928b2-80c8-4c72-9fa7-e520c9e92c76 12c80b29-6f68-48b1-beb5-8b4531c312b7 d1b72ed5-137d-4c9f-a424-adf6d5c79a84 eb086c00-94a6-4eae-a91c-db6ef39d3c3e 45280401-68c9-447d-b772-4295c2f17e1e 97650de0-a6f7-43e0-89fb-41fa7e649b7a 0830eb09-c3b1-46b4-be09-1a225d96f3d1 03fb73b5-c6e0-4978-864a-f36ff24f0c72 78166e61-1bc7-4ca4-9139-1577b5c6ff0b e6690063-8952-44ff-9e8e-c131fbb998b7 f4ebf173-c543-47bb-acd5-99a814a3b5ee 015a6fad-789f-4ba7-8072-90f5183af995 f6a2d643-bff0-45e8-9b15-968c30dbee7f 506f72b3-d1a4-45dc-b615-5d76637750c1 c3a61b20-0a6d-4729-9cc9-30a138502585 a75e6c7f-fb05-4f53-993d-88e5d7b5c1fe 2bdac81c-0f00-4826-8a25-3ed990103685 1757cd91-fc5b-4e3f-a060-12f708761f2b 77961641-1357-4189-9b63-2dbe41c54d80 ba30e5c5-a1e0-41e6-9665-7d3fadc4c7e6 befc6845-36d5-4b59-ab8d-e1282a9badde 904f7e87-fc21-454f-8438-74bd8dc465e7 dde3b87f-b065-489b-bd24-478a067ae044 7beb7da0-0fb4-4391-af68-13aa5892bcb6 5bb7ee5f-3a3c-47e5-8de9-f84cc106550f 7b26522a-f869-4431-995b-f48f62810557 96afdf32-fba0-4628-98c0-f96801f5f1a1 6414379e-e75e-4d9b-a5e0-2d96dab8dedd 0d1811c4-2790-4cc4-a4c2-64bec08d5b06 33f58ad0-a0e0-491e-ae38-703ef8ba657b 4ea0d1e0-5eb6-4301-877f-2d3cafc83826 2f1de889-d871-46fd-8bd7-68882856b095 51179696-5479-4593-8a25-465ed80b2a5a 1d9f34b7-a329-4669-85bf-0372f625292b 54a55a18-5095-41e6-8cf9-758140532919 f3b058ae-11b5-48d4-9ee9-30adccb75b7a d379bcad-9ebb-44a3-bc8c-8e74e8ad8445 4bf880bc-1937-47f0-b3dc-a11afb8fbe95 1aa7953b-787f-4a1d-9724-d5cb56ae8176 0cc21301-9a2b-4b5b-ae3e-86c8baacae32 c1628a9d-18df-40e1-abb8-5257fd77f399 22cdf240-2265-4c64-9975-a7ee474b3b89 6771af22-5638-4d9b-b253-d1b86ed159a8 66cc17ae-208e-4508-8de6-663d6de489fe b7976d05-b6e6-4304-8715-ab3e940e7d9a 3966b65b-db0c-4b85-9335-ce75c54131c0 7006c1e2-2c3f-4ef0-ad2c-661120f82721 a42326da-df88-4f9a-8004-6b6a36aa8e88 c3d2df9b-0dbb-4457-8d69-06e44c8c3b0d 6da48be8-4dfb-40dd-9d07-95fa5b367786 41a7cf14-fb89-4cbf-bddf-2d0f9f2d8b3d 47310fb3-bf6c-4d85-9d0b-1e7762a27d06 02569d1b-64ed-4084-b092-b5cd5055d097 d4e8a183-5a32-42ca-b1ff-8ab461110643 5b37c879-a24d-4210-8dd0-78f99e60d076 01e8aaa9-dae0-4a22-88f4-d2d41fcc50e1 011677e0-faef-43cc-961c-fd1059735653 87d01290-31a5-4904-ac1f-94007dfc8762 303fa7bb-037f-4f18-82be-fc81e9e152bf 408c850b-9c5a-4099-87fb-20cc98073d0c fa27069b-c411-4379-8758-d7f8cc7589ab 26200b72-69f8-446b-91d8-6aa3edaf1a41 7f2f90e1-26da-4f01-9b74-5d1d9e92e815 f37fc23d-c82b-4e9f-963a-e5b06fe75439 7884d078-e79a-4e35-9550-a06d49ac5a0f be37f34e-3022-4f07-859e-0184832853fd 31fc9da5-e718-418d-b588-025af4d462f7 5a20d749-7af4-4360-b45f-3b62899d45e2 c5aa60ef-136a-46c4-af3e-94b22465c4e7 3548d012-4e4c-4c7d-88cc-39f12ba5c786 56d77b3d-4d92-4590-ae56-7ba9e9d7fa77 1e3f5c64-1cd9-49cf-a5e3-4ceaefcce388 e96a31de-88f0-437f-84ea-a797dfacf81f ac480eba-316d-44a3-a84b-bcec02717032 23a1d6d6-a412-4bf2-8897-7fd23628b01d e0d305d7-c169-4024-9eaa-b1da6dee0ef2 83698a3e-b445-4276-904f-d0917a7e0cf7 67f0701d-fa12-4cfb-8a8e-41711f22d480 acbbe3ac-1f3a-4394-b44e-e89af9b53634 1735e4ce-9f5e-4dc3-87b6-5f3c2a86f206 9ae0c548-be9a-4e00-8b52-83e00bbeb182 d63a3443-62ec-409e-a397-989f45d8e187 0046f690-73f2-4803-8cb8-e7de6298e2f1 d2ed88e9-0b86-4d9a-85cb-f344027be014 79708ca8-8ea2-4b85-a4ee-9a39c3ced2b1 50d2c7dc-01c2-4a3c-aec7-8cacaf272552 5f462da1-06a2-426e-a6b4-b0cc067a7585 1425d8f5-f0fb-4a5c-83f7-85915757841d a8de8b06-bf77-4a6b-b7ec-aabec4ae3d32 ec5b1a3a-fbad-41cc-8763-729a8ca68241 3686764f-c859-4a2f-b1ec-8f878d1d7fe5 712910a9-005b-41fb-9d1c-e2cc9165b506 e4cb2c53-e6f2-41dd-811b-ae787c459bf6 6c26ea14-6383-48f1-9b6f-112f2ed94899 afd077b5-7f08-4902-8713-3ad4bd131eb0 6a3ff23b-6fa8-40d8-9725-9bb754a01b0e 10e3a80b-5c2d-424e-bf8a-c3a87345f69a 481e6019-cc90-4ec2-a9fb-acabc65d1f3d 3c57b383-ad1b-47d9-8119-dcf8a3efe2f1 d77062b7-885b-4e87-b455-b9b1ad2d0f12 a822f89f-3602-4b8a-bcb1-e3f591323761 9b42f2f5-194c-4629-acd1-6fb53d71cee1 98bbf3b5-9cbe-46fe-a5b4-40902dc62b2a 97194ea3-e03c-4ce4-981c-8fc756aa4c84 7d75ed33-8984-49c4-90d2-9bb4b8e30409 e1522f0a-23b4-4440-8a3f-51be6c6318fd 18ad1f53-294b-4836-8d85-6aa3d1b9a0eb fdd603d6-30e6-482c-90d0-de29d4ff15f3 f0295b6b-4557-450a-b6b3-b952c2430267 9d56695a-80c7-44f0-902f-5138905bf37f 728928e0-fc1c-4c64-8a43-98409ede9e42 eacf5e3b-47f8-4807-84d6-c0a0a102c272 a9e4f489-40c6-4215-9b9a-1438acc2da3d 0734652f-914f-4306-8b2d-e8929f5ec6bb 0d94442d-74cb-4bf5-be2c-684574ff028a 4f6b7f01-a411-4e2f-8979-a7799b63fd11 01ac0c81-d535-425a-bede-42e221f1ae6e e1f67e86-2453-4b6c-b13f-ddcc821441bc db33ad57-66a8-4875-bec7-cf5e99c23398 a3f7f4ed-df45-4234-ba35-c1829e2650fb 1b1d75aa-f33e-44a1-81ff-8a700c919b83 d9a15792-b76a-4c1b-a54d-8304d20158b8 4bc48866-da44-4d3c-8b70-4bd85e2839a9 a3de0935-819f-4c50-a6ea-545881bf3fe0 ffde88b8-dfe6-4920-a5ff-3e6996ba3d55 2f078ba0-5806-4d5f-98a0-50d082f81fdb e690e767-8311-4b1c-b52b-075eb9ae5a03 8d3f8043-6346-4bc1-b392-05a4a9ff2f93 69eb00b1-2527-43b1-b923-a5209380b0af d8eabb4f-112c-41b8-88f1-ecb9ec3fd17a d4e51d46-c712-42e3-a664-75ce3301d400 3708ca82-1f9c-45a2-aad6-c90052b46183 c696da0e-4d9a-4a29-bcc1-578566c85542 052d18a0-7bb4-4efc-8d67-a467a32c9436 48cdccfb-26c6-4894-81ef-022cc0470137 5564f005-764f-4a7e-bd96-3ebc6159d49d 93f25306-6062-4cfb-970e-5568ab78389a b845251e-4e3e-4012-9b14-b6515856c094 5a26459d-d2b6-4677-b55d-57213a246a88 9975f3c3-0f7a-4c06-87fc-75fa07314e6b 4568bddb-714a-4c6c-ab59-12eb16da9c57 ca576915-541a-48d0-95f2-025406885d0a 3c89d274-ca6c-43b2-abb7-cb851cf6362c 9965e86b-8851-4cae-b1df-853e7312162e fc71dd16-a804-4fb3-b3f6-a44ecd540ae4 f6c2287b-4005-4fc2-a9b3-ccd68d854903 79bc432f-0b4a-491a-a029-beb10746d495 b69458a2-4ff6-474d-871c-db1977a54c24 5b9a5694-a064-4daf-b9aa-b143f8f34d81 cf7d42bf-7336-4338-96f6-2bfee5a28988 a17fc608-089d-4994-b6ea-c14468c1991b 607b9ee7-ce84-4c26-808f-bb8dc29219f1 b12ef720-c2b5-44a4-824c-d63e2907b56c f4979142-dda8-4d38-829e-00afc4d81641 454911e0-f55e-4902-97c4-24cc8b0d0798 2fd144b3-c3dd-4083-99ed-fa4766363c87 1f89cb7e-c8ff-47a9-b8b6-0b708dc9098b 69da050f-a17e-435e-8b5d-dba554040402 3bbd3cac-ae97-4008-bb43-42ed41bc384d 0fd33dfb-4056-463b-aecd-6f5edf13ec82 abada7b8-5d20-4ffe-a78c-07afe542fd72 d47c5fb2-026c-426a-aaa1-318727874213 3cacbeb6-99cd-4fb1-b190-790c3d591ad2 14b4e1d1-e00d-46a9-b349-cbaedccf6579 5ca46fe6-9dcb-42a9-a68d-5b269465f94f b0e3d9cc-4d2c-4f7f-a457-e59297ffe499 00a7fd74-b76b-46d7-9aab-f3405efa70fb 0a1c4609-6e38-425b-a145-a076f650b4dd 7d2e83b1-a77f-4d3a-adea-fc778a077bdc efcdb0cc-7edd-4340-b0e0-90d648b1ace4 042665ff-74ed-46c2-b82d-438d81208c08 54a36cb6-1fc1-4b86-a40e-c427411af8b7 0ff531ee-56c8-47a0-ac06-df94f37d5f3b 9e162036-360a-4bc1-9c75-ba5058943f97 41863fae-6ffb-41d9-9577-2047b889214a 13f3aa19-d48e-4617-a8e2-84400e7f5ade 07a9412f-95b4-4839-a540-90b9801352c2 6ff59f5b-d886-4a68-be57-8f39775ea4cc f73128c3-4dea-43f1-9e0f-1c7d2a477142 20e6f674-42aa-441f-bd74-03362d9ec7cf a3a74bf8-609a-428c-b087-103906d51b83 630ef360-8b4c-4c39-becd-37d4349991b2 154f4298-6038-4daf-8eab-23a02b8a100c 8f0e3dbc-5c20-4d0e-801f-550c44cec9b6 2dbd6a1b-a524-46fa-917b-065454f9c221 69d203b9-3807-443b-b765-16ea2604947e 4824cded-46b7-405d-b9e5-efe0d06062ef 6f451457-34d2-4eec-9842-aefa1a58d141 40134b05-71a0-4a6d-b420-a092c9544351 17481524-7c93-4629-8615-c3a2a1725c27 1cc76e44-8ea7-4798-bf87-7da289b19df3 6f7f26d8-9dcd-47f4-82eb-d2ae90d99c50 01b677e1-b98c-4976-a2cf-9caea920bb8d 85461ce4-3bf4-41aa-9f6e-d1c1ac4107ad 3d429037-bd97-4483-9731-abe1d16f53d2 5c2ca4ad-7896-4550-ac07-bd82d0509ce1 ef7e7293-9899-437b-be83-e05cbbe35207 19756656-9cce-4126-a417-200ee62cb03c 9aa8becf-7547-49d1-911c-0ac5a9379675 cd903bfe-13f6-4236-a83a-4648aee3f909 5df093d4-54c6-45e6-99a4-4d9191df4e44 cd0631e1-35df-43e1-82f6-27fecf9dafc9 4a2c2df8-8198-4d0c-bf53-8256f27530e0 6b4497b1-36ce-4e86-852e-c03c0992acd8 8d7b3323-778c-4ace-8bc5-be335e23895e a9e73d1d-d0e3-4827-924e-e82f875a774c 0b4ddb89-d87e-4615-be5e-0ca0a3f3febe fbb3edce-ad91-4921-96f9-9f4b8ff16188 6ded6ea8-1b00-4f31-a7dd-269fc9f274a7 7b19a3b6-3de9-4d05-84de-7912934c863c ec5a06fe-f353-45e2-a5dd-80f7f7b17e68 254d94ef-f070-458a-95b1-a915b70107a7 ed4906d5-e979-4da7-9432-0477632512cd 1cc5f356-22db-408a-882c-600d638d581b 452fccb6-2b95-4333-91df-86b78c4f20b2 5f914ad0-36e3-4a44-b8f2-36e172a87d0b 4900738b-a7c6-4385-a987-97a5ecaa12a9 67194bcc-4604-4ea2-806f-6ef7e0765131 c2d0e37e-13f6-44c8-9b3c-eb0304073e30 adddb0c5-17e0-48b1-9699-c3eed76fe9f5 6a8eddc4-0207-4485-8513-79c135e40182 8358c5c3-4192-4280-96e6-053a1f521908 b00d1772-0a98-44b5-8b54-8be55126da6f 1d1ee8d9-0312-472b-8363-19fa99076392 41f4c08d-ba2a-4bf1-b09d-9bc68bea18df 0c3a84dc-f785-4f5f-9fc5-f04d2ac2b1fb 0bfefb24-1353-4bf4-b3b1-ac75f4c33331 03951dbf-8e24-4258-9c76-6f4b92e9902a 8df63398-e26b-437c-a841-7543bbd874ce e41e4fe6-ccc3-43d0-b537-c29452fb7a63 d8e41a4a-e6b3-437c-9735-a4a223455976 70b50169-dcf9-45de-8eaf-65d4397d0792 d7c598f6-3807-4605-89b7-738e822f2784 9f6445a5-26d1-4ab4-9214-dea54c16b1c3 1ff56f4a-1528-4be4-9a2c-ffee134821d2 3b862e8d-cf40-44d1-92b0-69fa3ece29b9 03c57d30-f595-483d-b2f7-682892316f31 9859e751-e1e0-4414-a780-aee7f4d0464d 61f18949-1c99-424a-8eeb-f48ae46e2836 7c474978-e2d8-4841-86ac-19314978c695 c379ee13-556c-4d7d-a400-d113a4b79b5f 787cd492-6b44-4efe-bec8-2fdcd96fbe09 707e5c60-d9db-460d-a491-73651e2b9da3 978d1144-ed77-4b4c-8fea-013f7038514b 6fee602b-8423-49d4-a701-937a3a93d054 30d95415-3e74-4601-8a89-0ff1fb8aded6 cb9d6b38-d9d6-4dd9-b22a-29504f278368 7029e7c6-5730-4690-9e28-d541a071730d d344897b-9053-47fd-8c94-7143bc78acb9 8e987422-0296-46d8-84d3-00e83b9dbf16 5b74d9d9-a010-4958-8260-f9703d59ea4b 2cba3e50-9b28-47a6-8e16-cee79a1c486c 37cd4b21-5cb2-48fe-85c3-1d2c76b62ea6 bb7cc19d-5393-417a-971b-138ad400e24b 2c54e978-b4f9-49df-8360-67e6c4c91ba0 e2b7b800-0394-4f61-b6f3-9b3c1224458e b473641c-f36b-46a5-927f-63dcdeff1a07 0988b909-a939-45e9-8f05-e472a95f4ac8 9c931414-1e54-4b20-97d2-2df90fc5f6e8 916e0da1-cd16-4b09-b609-363864161216 9bd400e7-d1bb-4826-bb49-409c76c33c7a 37114298-7d3d-4942-bbe8-d6c8ce03d6a9 2dc960a6-b444-4475-be55-1954b4148001 002a455e-5d08-4f47-ac37-dc9d5390f618 0f5e69ec-7f6c-4145-a5a8-0ba9481c514f f0b6a747-efe1-4b48-b25b-2a8c7d769210 425a5cf3-8493-441c-931d-ccd1b090d7c4 2bf11a2b-019b-40ad-a27a-aa334800fc09 ff9c6a12-921d-47dc-a062-aa2001ad09e0 9ce5a553-20cb-4f26-9698-46af13e4ec0c 92d66bce-c373-4064-8b14-fb2d1437d9fe 82e26772-7ce9-4e87-b0ce-e6167a89c640 e80c8fd1-a194-4bb5-9696-3ccb35b19d5b 87c6371d-0339-4719-a5ad-d7c8d238bf95 95403448-f319-47d7-8197-5c9f2554d2de 6ab3fb94-41f5-47dd-82a2-52bd8c47e593 b5ff6285-af04-44a0-948a-8b4b6bb78772 f039510f-9efa-469f-a125-3264c4d8f794 6133e814-a4ac-4128-8af8-d9c1562f0d93 6a9f0a45-2a5d-49bd-a7b4-447bfaf0403c 75169c62-1c71-4941-8864-1b6b68631f33 d8f734a2-697e-4c72-856f-0ae2034fb719 895d6484-70cf-41d7-b9a2-f26ed35887bb 0fb9298a-6ff1-4ad9-b1e7-23c78bd5dde1 348e7638-b95d-4db1-9775-8c4196eee542 6d7ccd41-21c0-4b9a-b5a7-367c6db2c79d b9145e81-4125-43c1-8ae0-5f5ed3d4e72b d061baba-4aa0-4033-b635-d0903f1676e8 6dea4ac9-4dd3-4267-9b8d-85e94057a8a7 d2ce89a4-8b82-454e-9a80-3e4cf58197a9 0893d800-7e19-4600-aebb-9c30b842a61e 784246c4-622e-45d8-a278-c60502f2d584 64d648fb-8d9f-4eee-b9a6-43a30a263d08 c0fae0c3-91ae-4480-8b3f-5f9e2078f928 1a213291-97d7-4a29-86f8-e5916e6ad6ea 3fed8d31-25a4-465e-9b06-f8d7eafe2d18 dc7dcc76-59a7-4d9e-9cde-9518cb61992f aac93ad7-3277-4944-8dbe-6e0a8088d9df 05f797a4-87ad-41d3-88e7-4169a49443cf bd2ce8da-89f4-4d9f-ab31-d0a1ff70eb85 ac2624e1-92c2-4bdb-b7ce-cde4f0a11267 3728a539-3624-45af-a882-da00747945c8 a963c74d-81a9-4d6d-aac4-741cb3452304 94fcca19-a5bf-4523-ba5c-639aeb6123d3 3da358c1-e3e5-4162-91cb-70deddc47b52 bb3901d8-7761-4c4b-a458-37055458daf8 571dbf37-74ca-4895-8417-342395830937 83d9a239-701e-4629-a19a-0e045b12b8ac 0b4e27ae-30e2-40c0-a7ac-9db3396784cb e20e3bb3-e7af-4752-aebb-91b849ce1a15 e0ea82e4-ec21-436f-aac2-61089e2d2fc9 c9880104-aa79-4ba7-8bb9-076c43272f00 b1f50021-51a7-47f9-85ff-7b2c7c2386b4 357c508e-d490-484a-a07b-495f240712cf e7b93b64-944e-4110-b16e-0ed9c1e15b3b 743615dd-ed5f-456e-90c6-fc64b7254989 a503b1a0-a79d-4c73-8b3e-48bc6bab771f 76201350-8cb0-4f88-9f5d-8f14d1c25c18 5168dd8f-675b-4e31-993d-630311ef4714 7b19ba7e-6b28-4de4-8138-279156704192 02962f00-8c24-4750-9036-461d656c6f74 9c6867e1-dc74-444e-86b6-818ceac80dbb 0b2f208e-d51d-485d-bf23-1cd23d6af39a ce2d393e-8df7-4fe5-9156-1d4f196e4ffc 7ea3143f-ca9b-489f-be9b-717b3b6004cd 3dd19368-ed5a-4e92-a2ec-8dc9cf32e511 44f9232b-39a8-46cc-b330-f7a7b355dac2 898e84c6-c870-482a-85ed-3fedfdd2ebe5 833ec632-881a-4f70-8229-57d9db6d7ad8 6852c3b9-0037-4ac1-a28d-fc08fa3655ed 79774ce7-3c8b-406c-a0f3-f1f33730bfb0 e32ffa39-78fe-4e7e-b6d0-c4c1417f4e4c f10a1a24-80fc-4b97-ad27-c4f0058ff6a3 39946287-fb86-4823-a8ee-7328299314b4 331eaafd-4b33-49e6-87fe-6a46d6465955 a8eaa221-9b23-4d92-a6f1-51f0f18ff2ed eef46da1-c201-4f50-8f61-750e82c3a3d4 83bd0eba-7c50-4f5c-bd01-d340dd858eb4 a95cef39-005c-4b70-8195-a219f7d97792 59099935-2e17-4b53-9f49-299f45c3c1eb 0a1f7343-af52-4b51-89f1-01d7dc0baac4 ef3b99ea-1e05-431c-b58d-edbf8d669851 bce1b242-8149-4df7-b264-da35ecf05931 4f126a23-1d7d-4990-83a8-05e633775bbb dc65ca05-4de6-442f-891c-091da4289ee6 1cf1703a-d98b-4dac-a871-4d7e12ac2328 08d9383a-5fa2-4fad-bcb1-cc5e76df6422 f16bcc79-803c-40f0-a954-7dd62e6dd520 deaf2a65-65c8-429a-97d3-5c93a004c06d 24750acd-3758-4f68-8f3b-0cde33cc6db1 11ad9b9d-d827-4b8f-abe0-cced3eac2bd4 9968d748-0081-4c80-b154-7ad37e1b2dae ca8e29b9-b0b2-40ee-8e47-ff12746ae249 d4546e11-78bc-4d59-afaa-89941c4b4995 920d810d-b842-494b-a42d-8417540576a0 0a7aea22-67ed-4afd-8792-1896f11c2315 03cecf8d-e7de-4f76-9eab-8bb469d8826f 50fe73fb-98a1-45e7-b28e-fd303c74a023 cde0fd33-468f-4b83-b70e-bbdde5e61fe7 f15bce6a-d88b-49c0-aa99-06f9744770f2 6c5724b4-7e6f-4d0a-ba9d-d88ce657b926 8244e917-555a-435d-94e9-ad519487457e 40711140-6f67-412a-9a3c-07e22d04f8e3 76decc4a-7448-41f7-9523-0bbc60d89f11 42700272-4a7f-4340-8343-e407889ca50a 9f3c97a5-b2ae-417b-8935-db232997af9a 0907f2dd-6360-404b-92bf-17ac5663d9d4 79c0efdc-88be-4d67-a9ec-a924255fa62e 983c460d-5f91-486d-ae44-fa44bec695d7 59baab37-5f8a-49c0-8fde-99d3ae0f29b3 ec837f00-1ed3-4695-b975-a973bb5a82c3 31c62efc-d585-4be5-8484-fc63d5aa223b 9ab8f89d-f870-40ef-ad56-3ff26804e4d7 d4ef5b2d-0c93-4627-96f3-3c70f6633407 f1ea2606-7692-44b6-af7f-8cc2dffed9d3 e1085b59-7227-4eed-be4f-66fbe154c766 54498500-c137-437e-884b-547ab2b2fd89 fbeb10e8-25f6-4866-afe5-22d827c1e17e 9d351e1e-8c4d-45c8-8b83-e4c53df4d11c e6d7538f-2147-4bf8-8a4f-be6251c96f55 7e408b92-1e85-428f-959d-2d4d5d1d58f5 022ef6cf-2679-44f5-8e30-b406a9894963 84d04f8c-ad1c-4b55-8ef8-0ccecb05d096 00f1d9e6-8ec3-401c-a2f1-c1d8b2efcee9 024aedc2-ef8d-4866-ab36-1ca71ef48979 ee6e98c2-3e71-4014-9bd3-b0baa954b81a a3606718-1f7c-4916-990f-6dfcc781c290 223b0f92-b080-4845-a07c-fd0ddd8c7b80 879af1cb-7030-421d-a3f7-ba59b55f1094 bc0fe2af-a6e3-4319-8eff-e86109f22110 78014d23-10f7-4e56-be1b-04a02f09065f f0590ad7-99ae-4932-84d2-f41233950b9c 5caf2cd0-b987-4cc2-9b6c-52baa16716e0 fd67c3a1-04dd-456b-baf1-26e97b36ec82 d05146a6-df87-4f9d-88cb-6634d2c10a1a 5732e4c7-26be-44ba-bd0b-9681731a0fca 2a04c641-826f-4e9f-8688-112761d23ff2 b57bb8b4-918e-4c1d-8878-faf628218383 8402620a-ad7b-4621-a621-17dff85196ea b5efd690-60d9-434e-90e8-68d56f1fa037 c046a39a-d8ab-4f36-8947-a5c4af365c74 5501c772-552a-4eac-b6cb-000c92976902 9e39e40b-7005-4872-978c-9863eb581e3c 91953871-f36c-4807-8b86-b806a49553dc 884786d7-83db-4434-82bf-502038fc30ce 48137a24-90dc-46b5-ac79-a3197766cfa8 38c6fc67-27ac-40c6-9572-b386f64ae7c4 501317fa-1aec-46c0-bed3-12c56ebd6d3f 7654a7ce-1a2b-4613-857b-f774db356adc 14d9a9dd-cf52-4124-9176-a0fb9dbd63f5 bc6f89d1-e98d-4b5e-a11c-2b0e70ac6f7a 252df808-a41d-43b9-9e07-9a71a4ada55a c4a6c1ec-f969-4b1c-b2b2-1767129a560c 3bbfdff6-6a98-45b9-9a00-03d2537868b8 7e169ac6-2412-4f4e-b6d6-60bd36936fbe 740d89f4-180c-480d-8b08-6ac87e0b3cb1 74a73771-52d7-42b7-9b9b-314d4c9f6cd9 f28fef93-24d5-479b-bdd9-c534e89fe413 cf66aecf-b677-4f46-852e-9b4b34f60de3 be0040a4-a9f8-46df-83f0-9c3e3b9f5e8b 6b6fd81b-b941-404d-837d-7921810112a8 59108ec7-edf4-4b03-97dc-cf2b8791d158 221fe96d-2137-47af-a80e-d7f569fa2351 eaa32553-ec93-4ca6-bf1c-f375034fd683 b2311624-db76-4fb3-86cf-9b73219090b3 1f024ffa-3105-4a21-a5ee-e64258bf04f8 8e7a541c-529e-4d47-8097-5b52b5f3a9b6 cd6e405a-ba21-473f-bb80-43b2b437a390 13458206-d82d-44a2-8ae2-440f2618b957 e56ccdba-c0b0-4ed9-8cff-c9ac5e722023 bc369de1-fecc-498b-b296-eaf81a02e9df 9992f23e-7e3f-4a2a-97b9-e1fd710a9ab9 08d7024c-4018-4174-b8a8-954d508c40ca b68a3061-bce3-4bb1-ae35-d4c7f47db4fd 9085518a-0235-4e82-b852-35bb1056d5a2 7c870874-af57-4979-beb1-a7d0197667a4 05a2d160-29af-43cc-9d8e-1fbf0875e92e 738e4715-ea18-4791-8d51-1d3ba84087d1 f9feaa1c-60b8-4bab-a8f7-f96ac867385a c913e91d-4a53-4d29-b037-7370ebb6f13f afba30aa-cf62-46a0-8088-f64be1e90ce2 743ffe45-0028-4dcc-bda9-daa531436666 3772a5c0-dd37-4318-ac3a-6bfaff5350bc c71b3ed6-964c-4c3c-af59-8072f18308f6 62361ce8-53b8-4639-bdd1-1ffc7697092c ac4e5f6b-0c7a-4bdf-a623-d8e6c791831d f7db4e42-a652-481d-902c-b382edabc233 3ab56039-a700-44f4-b38c-466688482979 bade9d6c-58a6-4c8d-9022-baa0dda5b047 47c90529-60b7-4300-abe6-03629c0b40f4 7889975c-1b0f-437e-8719-28cec860819e 2efd1bc0-1066-4409-9f30-e1b7dcedec68 6e4e7420-12b1-4506-9b74-fa22a7d8e130 7018d165-aed3-47ce-9555-6cdc7af001cb 7ab8e2df-a25f-4546-b87a-4d56ece09721 6e529401-9579-4398-928e-f4b5a28f6464 12437d4c-e0d4-4131-b6e5-a2660d513f4c c849880c-dd22-4d27-bb31-e5387cb35e6c 6de5953d-5353-4c2c-b170-0f35f1925361 8dd4b63a-4749-4c15-bfd6-a8527408ddfb 018d5849-0633-4a89-87a2-d4a03a1bb671 b85e8617-53bd-4a08-93f1-1440b3d7fed4 274f72a6-c718-4cba-b22f-414689e6c0c9 678927ab-e7f8-42f5-a774-46e1f6a14411 507bc250-5457-4ab5-abe7-631433edd545 e2be6939-93e8-4506-a845-3376c52ca078 aa87453a-e464-4910-bcc7-4f52d8dfc21c 3f1fd706-86f7-415f-8345-0126552d511e dd124231-67af-4648-8797-3a2f7242d1a1 c6d52be8-93a1-4999-9a29-3942230e3601 042a1d98-2848-4bd0-b3bb-0c1d072add58 63144df1-6a0c-4f15-b322-60a144319942 27e3f099-670c-460a-bcbf-a22e4d07593c f5bc7bed-a386-4393-a1f1-ba06048d5416 067c9741-36ef-4fab-a2f7-38efb8edfca9 ffc37611-3a06-4ca1-a101-dab26a32d0e0 4370c7ef-a42d-499a-902c-e1783ce04150 de828904-5020-4f32-985e-ff0040f58056 af5ba419-4331-444e-8108-75914d047909 f575cb4e-613c-4751-b3a1-14ed72db3c5e f582c264-7eab-4e4a-b72e-32eefe8e7571 242b7428-9ac3-4b6a-a182-97c0d10b01e0 af540d5e-abf3-4715-8871-fa5ed27f4e93 9d008c85-44e8-4ea7-94f0-eb6b87e69fbe d38ed6c0-547a-4474-bbf6-fa356e10672c 2827dd62-e156-4d2d-b26e-d1183d70e231 89b6b339-9b90-4092-9ee8-6f09699ca985 1a9ec033-7c4d-4263-bf22-9ea49a2f8bfe 58322ad2-6596-45c6-b40d-b9b0666e9139 971e2f4f-0514-4b3f-913c-b4213399b3fe 654c7aee-86e2-46a7-bda0-868a3ee2fe26 8db2e0d5-bcda-4763-b180-f32eb54c4e7d 0e1ed1f7-313b-42ea-8be3-4ce06e9d4148 f207b070-d63a-4266-8169-8ec0b1db66d9 61b5ae33-5e63-4b3c-9696-700648e58504 0301165e-45eb-423c-b875-a0e1bbd86b90 c280b066-3a79-4cb3-b842-255e18845b86 36a30809-b976-4e3f-97fa-15b4d5a8f722 ccaf0e9a-1d93-4c8e-8834-74ed19fa9352 398de59f-8b6c-4c9e-b2dd-02107a824a6a 794d3918-8cc4-44f5-895f-722bcd3d3e2e 5265c262-66a4-46d6-a0a6-6fd5de099fa9 6a4f2236-4261-4965-accc-d50679b912d5 247bb520-a4ff-47dd-9dc7-6332eaacd8e6 dc9cc653-0365-467a-b914-d3d2e03b6d71 be24e183-8169-4359-b3d7-dae3f15fc316 549f6e9c-a367-4b35-bfbf-042aff63235a d2d489e7-d19f-480d-b145-0a8f2054b771 0e9165d8-897f-4ab5-95a1-f5eecb413024 994824c7-189d-4bf7-9d10-c3f140453678 9a590b8c-26cb-4e04-b305-c5ef442c8676 74e4f65c-7b18-4818-9cbb-2fcbc0bb9084 e8cdaf9f-faf3-4a8f-9ead-85a169aa75e6 d7c372f0-43e3-4deb-b6fd-ff24e71a00c7 ab39aa9a-5dd3-418b-9c89-833870714f9c 9a196407-6471-4d79-8048-b12f6f61e0cd ed36feb1-9c5f-4154-abb1-79567d0f2fc2 5a85d48f-fa96-4c5f-a022-5a17cd49282a faa9b052-cdfd-40cb-ab39-1c4104ea2d97 dd461ef2-2c3a-4a46-a264-74bbd7d24283 5fbbc9ac-f495-438b-9ef0-1a6a57d8cde1 19371bf9-f28e-4259-9480-3b7762b7cf86 e64eb69c-c780-4c68-9f38-fc1e20fe212b 91085821-a130-4179-a44e-427e2af6b3b3 32778c43-dcc0-4965-9eec-80026a482817 a614fe43-f33e-41c4-b4a6-7ccbd4faf5e5 4ae4b763-9caa-4a79-8c2c-0ef5294ddb65 7d9b9e90-6a4a-4b45-a003-05019184c6cc a3c5c553-f968-4bee-8392-654026b7ed9a 726ef135-2505-4fac-b4c8-87c280cbd907 4b687ac6-2f14-42c0-a889-bd3d248871d1 ed6bfd7b-05ca-4b73-b95b-0ee873dc86cb 3d7d2fb1-92b5-48be-b458-333b10eb7ffd b4ac2b24-c048-4ca0-854b-5da60061dcb8 cf47fe2e-def9-4149-b841-c90122da5f82 a0febe10-8b4f-43b7-87e4-24a857949031 bf0a480c-06c9-4a83-a987-874283ee00fa 28424db4-8f9f-42f7-b284-72fa54db7374 d30ad009-6ee2-444e-a71d-8af9d5f8c44a 48cdd02d-65ff-4378-a677-63a9c98fc53b b45fe8e1-8c1a-4862-8d1d-fc45163e1dcb 16bd9535-a596-4839-8cd9-9d4782e44a91 f868134e-acc6-487b-98ff-e0ad5c0862f3 c6a3e469-a0ca-4afd-b68d-6a7723c0e5a5 3eb03ca4-adee-4590-ba84-25c6b7d896e4 5ccc89aa-3945-4aa5-9c80-21cfecb696b8 cd3d5737-df38-4a22-8863-6853f6b9f127 3533355b-922f-4bd7-a405-a09a6e6f189a 002e6a5c-0c41-4eb7-a33f-3491fa5e4934 af0c8fb3-963a-4ed7-8aa0-dc7e90e35ff2 5806a3b2-f1ed-4bdb-828b-94f96e6f2b1d 671df4f5-ef9f-43c4-be3f-dfc31e9f3099 03104156-a2c8-4f32-b113-c05ef2906ce4 a1057761-ccb1-428b-b234-0505785b99b8 9caa08e2-ccd3-4136-9a2d-139dc3632dad a87b7c93-a75f-418a-b3d5-d370d944634a 124b5c9f-2305-4ad8-91b4-31f6602c4c87 7b83257e-d2ed-4245-9644-5a632f4cec35 6b9e7398-20d8-4c08-888a-491599e311d2 b1d66415-bdd9-4f15-ba8a-9fd6ffde2d74 0595fdcd-d4ce-4d27-afe3-be311dc66a6e 7e1d037f-fd29-4577-8a86-72bc82ba7964 bbe7e120-eaa5-48dd-8773-7dbc39d26a01 0642c22e-9f27-4553-b2a3-78474f09bcf5 fa6a3cc1-f6bd-4878-a943-8b148c4cbf48 cbb6909e-909e-405d-ad67-b4c58e0058dd e8005814-bfd8-4e5a-b243-05c061afbece b18b88a9-db51-494b-adeb-17944d8abaa6 719e8cd3-ecb6-472b-a3ba-6698c1136fb0 a80f53aa-70da-4640-93cf-dd7ea1e34870 789709af-c2a8-4fa7-aebc-79258ac7c9b1 e6a4a5ca-cbbb-4aa0-a744-f1640026b65a 76633bf2-7fe6-4082-a7e9-67ae3c12c96b 74ab65b2-c300-4d47-8b32-ae292d108ed9 5405943e-08b0-47f3-8ec0-1d48f80914ea 5d9b6876-2c4f-4daa-810f-0b8d7f43c76a ded85980-8bd8-4345-9829-aba1a6f9b681 114395bc-fcb8-4e99-a5b7-b80a16afd916 054dce2d-34af-45ef-8885-0cb7532cca5b f07164ad-d175-4855-92ba-d725a090df87 80fa628a-8289-461a-a3d0-c48987933e23 a647af04-6ace-45e6-84fb-0ff0f2cbcdd8 ae385b4e-8d5f-4879-846f-163d98ff2beb d3b7d9a3-8e3b-4051-85c0-b195a312eb16 408124e2-376c-4806-b0b0-3af56c80cbdb d2eb4e86-d3f6-492e-be68-72a0ce732f4e 6f3ba989-d681-4694-902e-23f9b164b686 5a77076b-90f5-427c-b5df-d4d5ddca4557 44f0e091-cc0b-4bb2-a215-5b73fb6f858a 2f25ee9e-4751-4cf0-af63-a3db0f3b11b7 48ed2f0c-5a73-45f5-998d-a689200a9ccc 4c459b8e-a63a-4ff6-8cb5-6cc12c180365 b9f4bdea-78c0-4fa2-9a02-9a04a09e86a5 3486aba1-e4a6-4d3b-9836-3c8d6b42ddb1 1ef5e039-f403-4ce4-9ae7-1bb3073eb83a ef128d54-65e6-4aa3-b5d1-65e2898481dc a4244718-2fc9-4076-9b9a-f4d324888cbf e20e0c2a-9516-4163-bba2-4eab72b0510b 787c725b-6d63-49a9-b758-383e4d1b2585 df50c5eb-3903-40be-bbb3-fd8518d21e36 71278148-5aae-42a1-95b1-3589df2a42a9 e10e0a4c-cee7-405a-94a5-79fb83b774df 96263112-b650-4425-a2cd-c25080e17011 70ebce9f-45a9-4169-8993-4b625b760a57 18f2def4-015f-42ad-9726-ff31d21c534a 2ec30cd9-2f6d-425d-b4c2-49a9bdde18bb 155ea679-7e48-438d-93b1-334524da9b32 545a9c34-8b30-4d87-b424-cec3352935ca 90266730-50c6-476d-a291-333076867a21 eec9c672-3e77-42ca-bd85-479f253744c0 462065a2-7e12-4f88-b26d-d357e8286db1 40998ba3-746f-40f6-a381-02838684f6d6 a02751b4-cf21-456d-8067-886de4e39a78 9f8732bf-43ea-4bc2-8844-c502771d2b75 75de8999-22cc-478a-a277-0af03c20b73d 3626e4b0-c921-415f-b34e-5155374e8020 766c5df6-605f-425f-af51-493a27e47460 a029027e-ab58-49fe-af0a-414176675f9e afdd8d78-ed41-4514-becc-9e5bbf4221c1 49cd91d4-3840-4129-9747-9965d46eddb2 91e33ddc-c7c1-4d5e-9667-7297e8a68601 ef5cee10-0470-4a84-b14b-9e1b119b1e4b c4fe6a14-553f-4415-9838-7242ef2f0355 11ba7081-5a0f-4880-81e5-5f3c1c445dbc 579820b8-a915-4d2a-8afc-db08273c3c08 d461f876-3b5b-4cf5-aa05-bf2ff9d45ff2 1c0a0b18-66e0-4fdf-bcbe-da608583f15a dfe9a080-12cd-4d3e-a297-7418975fb9f0 ec05f3c2-17be-4a6a-b499-40fb9820724a fa8bef3b-3227-46be-934c-c7b317bba979 f12d71d2-5fa2-4989-84c8-98a265bdc184 4013ecdc-71d3-4e19-81a4-3c5c0729298e 90a508b2-0fa7-46f8-888d-60888ff1abb2 a184831c-f4c9-43d3-bf65-d38d90026c55 35650ed6-fe2d-4d6c-af1c-93950510c981 e4095de4-37ab-4375-9c71-de91d9562f2f 0a9f14cc-4476-4e21-80c2-9e054238e37f ad0f3919-c807-4d84-b002-9b2a81f71583 3ab033cb-831b-4b7b-9314-dc8e21504b85 ef7e6e4b-426e-4802-8a12-6f431d04175f 9cfafc8a-d499-4dd2-bd8c-9e3327cffb26 9702c441-bce5-471e-a47a-fc80ce080a06 eb76b488-f5ab-4acf-be7f-af50030848b3 643d991e-adfc-4dab-a277-e43141784b80 38e51b70-b532-4eca-98f0-ae09d86bba47 8cbb7ffe-f495-4aa4-8d98-187641dcecd9 6daf3170-e47a-40b1-abee-f840244b04fc c45cc61b-de30-4e68-a1ef-fbea286fe353 31e892ab-7ace-4275-aa71-d18e7af2d2b4 a23719dc-d3ba-48e5-b3ba-ab4cece1ebaa d4af668b-1b2e-4dc8-a8f6-a423b3dae59d 0b4ce638-5f85-4653-9df6-388c2e338bd2 db2328a4-bc33-42b5-b754-b1e2505c50e9 773ecfc4-2749-41cd-99c3-7c4729f681b0 a5de00f6-afeb-4dbf-ae26-adf81a65970f 0ab17f96-5dc3-468a-8976-a4443f94b23f 14cb7cbe-d349-4e33-9601-c930eed9b4af 64d1c373-987b-4815-9817-6211508a335a ba7fb9ba-7b3d-4ab6-81e7-2be10e8dafbf 02442a1e-6795-4d59-91a3-ef73306e2a6e 500cb08b-e8bd-419a-959f-4d097323aac3 2eff51b1-c592-47fa-bc3e-e42320f9861e fc33e8f3-0f6b-47c6-be3d-8f5a3f49938a fd4220f1-81de-4f60-a28c-178c48bff8c6 269dc505-54c4-49ac-a7ad-4f4612b33e09 6d8c595e-82f1-42ce-8f21-25b40c904674 bc5569df-2543-4bee-9305-eb35f5cec4c4 92a38a17-370e-42b9-a6bd-385f668c613f a3099839-d1bb-4bc2-9ecb-da597d2f5a31 90811dd9-7b05-4b0b-80f6-c01bf5bdcdea 3e55f3d7-5f8f-443b-a844-d50cff512817 dd7e97aa-525a-4418-9bb0-c29db64efcb8 08901914-0912-4f4e-9102-4a8d83c3d51b bb358991-bed3-469f-a1dd-6a9dff81534c 71a31d60-c71b-4407-8317-6f237cd430c4 1b526d24-2f0f-4c94-ae91-a34f6b8f76e7 7b89d3e9-b0fd-44f2-adc4-f83252349956 ef68b4ea-93f7-434f-863a-b18bfebd6e77 7c769681-e787-4449-aa42-ee295dbd7539 778a2569-8769-43fb-a150-a23d740fda2f cdadf33a-5c0c-4099-bcc8-1b93e62dfc03 6976ccea-22c8-4bf4-99bb-a033e52e8f85 0f7eaec0-444b-4e82-b025-0633838887a3 1bdf8a12-24a1-4b45-9512-943b77c8d708 44e8a0d7-ad90-43cb-8ca7-6898e7afc7fb e7dc241c-b26e-4a2a-a711-1a184591458e 5253979f-95d7-466a-be76-c96ee535b7e6 7f3796ee-b88c-4918-9d7a-ecae10238ab4 67a18c89-c34c-40b4-91e8-611d636e37d4 5ab7410b-6fac-4c99-a7d8-1fb55557f66e 16c5e989-a675-4504-a41f-baa964bc504d c6ef33aa-5487-40c5-8a30-6b6aee6ab05b 1aeac78b-d6bf-4d8f-a8d1-e7245ddca678 1b529fff-9027-4dfe-85f0-87d8ce8fbf46 8ba3d3e1-25aa-4f05-aae9-1d15c7607b95 9501f73e-345f-4811-9e79-fae61fe74455 e53280db-1ece-47ca-afd4-c62af4ff17b3 2d2b1720-16ee-47ae-ad7f-d6dd8dfe08d5 0cd70a14-397a-414c-912b-d32a53f3c56d 7577f23e-c983-445b-bc80-f684efff372b f573df57-d91b-4c78-bb7f-5ee409b4c782 ad90b75a-59da-42c9-a651-0e61f43c449d a82e0a8b-2a49-4025-b486-b4b09b29f84e 91cbb93d-27dd-4f47-964e-e9bf21160663 d3628e08-b4fe-4771-b8c4-1d2bd6150e77 60e00f88-9b1d-438a-b63e-ae75683d2636 5b2ce224-e8f2-48bf-8367-747a6a070382 7635e93b-b594-4bfb-b03c-72ee3f3a0f8b ed8b6a50-ca65-4003-a950-efb36e3877a0 106d46e1-62c9-4169-8923-c90b31f51fdf 5f726bdb-275e-4168-b00c-ccb9c82f3ade 24ddb7ce-2f2d-443a-995e-235a9efa640e 7e49adc2-84b1-4f59-95fd-1ccff2c7c0c1 8ca2ab0d-0396-4cac-94f4-830e1a93af94 61a0057d-26b9-4856-83b5-705b2be56519 f2e895a2-ffcf-4c18-b693-f454091c6fab 9a2f0879-b40a-4e75-ad29-348f19c27bec f3e0bfc2-2630-4433-9524-b1324f014a9c 1b4dc462-40b3-47f7-8ff3-14dd3a147e7a de8cb9e8-56c8-41d4-ae87-8b092a9971ff 1b0ca2f9-bd58-4df2-a4d3-7b8210116ba3 2a726b0f-c4dd-42d2-b941-de7a470e0c4a 11874f78-b836-48aa-a398-7c555bf98290 d1623f11-4362-4ecb-a6ee-9a2499987b86 8c7e0797-7fad-42b1-9a57-fb7c427d13f0 fbe55d58-7685-43cb-9b5e-e2b45c2f7b15 9c99e0a2-625a-4c9e-8024-9c79b9b0fd2a cf00c318-2c9d-4f63-abc9-3865c888baaf 7d3c8d67-f03f-466d-a5fb-ae069921afd5 f08cdf46-41b8-4443-807a-4391032b966b 904f2dd5-0892-401b-b04f-e86dab9b0a8f 93f216d6-11a1-459f-b8d1-a0be7eacfb43 65f19992-f136-48fd-b090-ca54ae55a037 2a68cee5-23fb-45ac-91a4-a2e7ec4bc1f9 e53d0589-c8e0-4e12-b82c-d8c08918f167 63e34f37-6c48-4fbd-93d8-15733de3c9c8 00b78ecf-c8bd-4a31-b6c6-b5e5e0ff350c a55582fe-fa24-4e6d-ab28-81411558c1f8 1cb4e9e5-94af-4c97-81f4-ca942fdeaca4 e8159175-cc87-4ef4-9e14-78036ffdc0bf 6f47bc06-acb5-4a70-a49c-8766a8453e85 af46b3b4-5e99-4d37-99c5-291c78301cf3 e95e729b-d104-4e92-a1c1-f90a89f66fdb 10cd687f-89fe-4190-b89e-7f7dcd54dad0 04bdd9a2-c6c6-44ee-975b-bffe74b5968c 38381ae3-edf6-4ead-a1a8-7c1f40a0edcf 6116f38e-1088-4724-b1b4-e95a5bc86d29 f7554da3-e555-4872-a8bc-2d8dcb235f56 695bd6fc-000f-4470-a54f-e0481c09d685 a809af2e-8b79-4a2f-8367-d9a5c23c11a0 5d51c9c9-3dcf-4f19-bc8d-9c2812a3bca9 2aed64e3-f923-4d80-a44f-5d27fb800834 a2ba5365-460e-4cca-8b2d-f7cc242bdfc8 307aa368-1a8c-4ac6-8b30-1b9c5383a231 c4ac6388-d793-4fef-a91b-8c5b716cf905 341023be-c13e-4df9-925e-159908bf88cb 9ac9ab83-0567-406d-b8ad-31142ead4f98 6d968d74-6a74-4a81-bb75-a27b78df94a8 fdf30327-8d07-4114-8ad3-82517838a0d0 a7aa3773-79ac-4b66-b19f-a31a5cbb2df5 6da34891-99d4-44de-9bed-31502299ad11 bbc97d9e-b837-45ea-ae9a-04f44b6aba59 c0980ceb-7e6c-48a0-88e3-341c872613c6 2fbf1f28-2665-4d0a-8e30-11bc1246e40f 55367d2e-84a7-4e5f-a6a9-a744ad55737b 46fc7c0b-f645-4589-9704-2a6cf5ea71fc c2ba404e-df50-4894-aa58-14396ba7a5d7 b7e8d439-31be-44d7-b308-b9f12ee52095 66577fa7-e45a-4f69-ae09-cfe5c6bdf0fe bf78c803-3390-42c4-8c42-41ea014f90cb a10b46cb-4a4f-4713-a8ac-477ee96b9176 8cd85bb8-d57e-412b-8e19-7f91ec818179 59b53dda-261e-47d2-8d34-42fe59e4942c 5e1d0b68-d69e-4001-ab30-65fc3cc0ae23 6bd54b81-432d-432b-97ba-d15cfeb10060 19798450-a43b-43f8-a3e6-81ea2de5deb2 d35c9a73-e092-4eca-abf0-a2c49b1f2b3b 67251680-767c-4e57-81a5-bf6910ee00a9 972f719f-bd9c-4790-ae7e-5a82f533918c cfcbbd7b-043b-4210-9a99-e1378d3233aa ab1c056a-7b76-44de-8664-06f6b1e49de8 f082e4c8-3a0b-44c5-92d1-7d274914322d 0a793372-60a2-45e1-b783-9b4e09a28602 c33406d2-c233-4fc8-ac77-744b29b28298 a52e00ce-381f-47fb-9c97-85256fb9b4f8 3a01b37b-d993-4a75-8b07-5c4dbee372b4 6bad5146-1ef5-4e34-b5d8-b6fef2141bc7 97116fac-a745-4d89-b066-ce67583a4cd6 f410bd2e-6580-4096-a317-b4f53cbc1ef0 41d8d2c9-d960-458b-be6a-1fd3fa10df9f b61545d7-ebb4-444b-8e04-ca129a0315c7 ae8e7733-56c3-4650-a138-1c14fb961df6 eae795fa-bd07-4e7e-88ba-8083c1ca28b2 8299e371-6dcb-43bf-99fb-6ddaf9352f7e b27211d0-5f35-4e99-a9ac-54334ce5d8c5 e3e000b7-337b-4e87-a2f9-7d70d4d1412b 877e3c97-e10d-43e4-b7af-624a49f6a23b e898f559-a672-4a85-b901-103013f133e0 faef9099-2dfd-4b93-b1b6-93ba0c6f0c35 71451471-82bc-4811-8f62-1a015c5bf2b4 5d16ed5b-624c-455e-9d17-77acba8dae82 bf4674d6-0e70-41a7-ac0a-eac3a67036e1 a73e0bac-f0f6-4762-a258-94757c5d9012 650315ed-3901-4bcd-85d8-e8d532ff9d55 a0108b9a-d909-4fcc-a673-705d3fcbc3d0 0b5536e3-8b90-4b4e-aade-27f12fe26aa9 87da0b41-acbf-457e-9206-22235834898b 2ea5b9a8-a2f5-406b-a82d-4962ae8dbf9b 7a83abd2-906c-4779-affd-6edfea97959b fa10a596-0231-42ca-81f1-999d0e3017d5 5801b3c0-e4ea-4ce2-8663-ef2d4cbf4596 940f1bd6-0d63-441d-b9aa-fe2e6578ad9f 847a531e-13c8-465e-bf08-b6f0b2ba14e0 b512b0dc-c42c-42e8-ba58-2eb42adf2354 b1b51c4f-68d9-4d5d-9666-5d6d0b4c3ead cd132bce-9808-4367-97f7-e95691c69c02 f06c5b04-7f3d-409a-b2c2-78d2207ca8f9 db3897ba-ccc4-440b-ba4b-3a9eb06a3c93 29e5d6f2-35b3-4e44-998f-43969cbda5dc 118215e8-6009-4d63-a3e2-4624c77ef11b a0f9c346-8960-4071-98f1-227e2fef5401 2cdf1fe2-366b-4bcd-94e8-b2304395c729 9f95b93a-44b9-432c-96ad-8e5a362e4e3b 45fbec04-80c8-4a5d-a045-420b26bcb896 c55a7349-f84f-41f8-96d3-60c03ef5e83a 7a02f38b-b605-4216-8cd3-005a8d39202d d8e8fef4-6f3f-4196-85b5-cd96fccb919b dda9769c-97e1-4dc3-b2dc-a60d1dd3497c 88022da0-2d44-4568-bfe6-728d64523310 d53899fe-fafb-419f-86f4-fb68030219fb a980bc31-5008-49e8-958a-d836407e194e a92210d0-7d50-406b-b16b-01e4658516bd 5bb62401-132c-4cd2-923d-44ccca1f004e 2ed50a1c-d6bf-442e-b32a-5d07b636b987 97c810c1-ba6d-42dd-8bf6-b3b111ebd652 7b6845c7-4015-4630-8b52-567056ef3adf a0323896-0fe0-41f1-b8fa-cda8a4bebe4d 44ff6984-8ff0-4e71-afef-a358e6f9ae50 432227d4-bdd5-4e34-8747-cd2d4aeea738 6b22cbfe-6a95-4a5d-a356-6516da4240bc 3c672383-bd40-4d3c-aed0-af666274531d af659864-53ba-4269-a6c2-48a05097790d 59e2b994-e93c-4846-90b0-34949cc9aa82 08463a5f-5deb-4f3f-93a8-1485a045938e 2f0b1db8-0273-45c9-a2db-3d60842aab8c 8ff1b500-2304-4dfa-a8fb-ab54bec3d4dd 18f62325-0abd-4154-89c8-e0c3a7028624 77b518d5-926f-4693-bf68-9640bf3eb116 417b1f2a-43b3-42f7-8f74-6bf43418964c 9c443c13-6273-4644-8363-f68b7333426b e2588b01-94f3-48f5-b486-2035321a4cac e2a48dd0-ecb4-4ac0-8d2c-a26ca664bb70 df5c1bc9-9b12-4d60-b4fa-1fd6d0e2c7d4 fdeaba8f-c6f0-403b-aa86-aac395c85dea ce7bda4a-039c-457c-95fa-f44256fe43b0 6cd284be-6a02-4b25-b7e8-3d02f4708295 362397e6-3fd6-4fc9-9936-895b5e64a721 6cf6ce22-158c-48cd-8c29-be8fb03ec4ff 06e2a612-e4ea-4d10-9bcf-dd4b9d9b97cd 169d0675-efb9-4cbb-b3bf-32424067a741 1f358d54-7051-46a3-b56c-591f4e0b33db a8f4e5f3-8bbc-4df5-83b2-02c577db68da d4aba258-026e-4ae4-b72c-04212f07b7fc 24cd8531-3fcb-44c1-a50a-7119ac7de2ed 0d65870c-6ce6-4e50-b114-b08030358863 745f4aa3-cf47-42fa-8d62-995cd0d0f968 7e143bc2-ce27-4159-9a21-049598054859 143df244-a982-4998-b07e-6384abde2fd1 d764f9ce-af6f-41d5-8ea1-18a1105c823b 40a64fae-56e5-40e9-a45d-1d75dc3a597a bc1f1a36-0672-433b-8f56-e9fc9e4804c7 d985a5a5-883a-45ff-96ca-802832160340 16b6c70b-6bf1-4186-80de-30b5602a3a52 7f484764-8518-454c-b775-40173b4a4200 50cfa62e-76d9-463c-a6d8-ee406eda8947 38deffd7-84ba-4de0-bdb8-64fb8f309193 c226124a-fc82-4d42-80da-88356eca4c5f b0c2987e-bf69-40f0-a313-80daf29d6e3a e6ed0a98-0713-4bca-b625-4010e8bfe5ee b8883bdd-da24-4ae0-bb72-b432c115a1af c17f4bdb-27b4-4e6e-863a-cf4a4a293f32 3a701489-2003-4488-9136-7f723eb837a8 fc573e7a-feb2-4d49-b304-8837ec03c11b 2e7d0f3a-368e-4fc8-a5e7-1eaf290514d4 77abdf34-7ea3-4fef-9910-0204d7d4d29c 9742f3f5-c9d8-41e9-be5f-dbc25d288a39 8bd86a42-52b5-4645-94a7-8604c81d29e2 05a99fd9-bfb7-4e43-b8bf-52e97c17fe77 1f7faf48-c33c-495c-bab3-2bcd96e5f3e5 546be879-4050-4e92-9a1a-0d3f7dec1925 f111ca00-2570-4ef5-9c64-acc51e566e91 0e2abc5d-ac02-49e0-bb97-54f679b382dd b8f65409-6f1c-415a-9401-ee12e73e1d23 320fa64a-7537-4944-b6e2-344564502ab2 5d4dffa7-1c7c-468c-b190-a5e00f616230 e3cb8a60-c8b4-46d2-b39e-66a11bdb442e 30bc5bbf-f1f6-4cf4-aeaf-bf2f0a71124d 54831519-e18c-4e31-8fe4-c1fa28234918 e973cfdf-6048-4aa6-8063-3b7bcddc8168 c04794ee-4097-4273-a7f3-1d6ea749fce0 c651e3c1-6b03-4345-8c90-1cf7637aab08 39e50ee6-1f2b-42ff-9508-774786028a95 a1847851-d376-448e-80e2-316793224d3b ef5fb02f-fcad-40c5-892f-f7c78f88fe60 b38ecf93-ae15-455f-8e25-17f03201746a f50b4c10-617f-4b7d-8dd3-a49094abb407 810dc213-f73c-45c4-bec5-87f71aee22d5 a825e153-0f5a-45ce-bda6-0e3e6481fb9a 1a2b98f8-e305-4843-bbb7-803a36c89d92 50e50ce5-fa6a-4c02-b2d2-856932fd8d18 b698663b-fdea-47ff-a439-5b1c4056908a 7e700df7-e6d0-469f-93e8-2bce5b73c8bc 5303648e-fd24-41dd-8901-cb5d95b669ab e8882573-efe6-44fb-b992-ce6c22bc385c a58bc38d-1366-4834-af2a-398f9644b0f9 36d1c0b9-26de-430c-bb61-f9bfcf91b98f cbeb64cb-ad15-4efb-a73c-e17b5b1a3fc5 346a4dc4-ad76-47b3-b9e0-9c983636cf26 e5b9e48f-1488-4fbd-8f23-6712d4a8b850 978b5229-3dc9-45c2-b853-c8777cfc6a22 a5b51965-9056-4620-a0f0-7fc651938098 be9b9034-e1e2-4fad-b20c-58c11837aedb a8667efb-cc25-4f55-aa58-141d4bfb941c db6da59a-752a-4b56-9764-c1b53764b46e 6920787c-b06b-4c46-9a5a-f2971b4a0393 5033b717-5d22-4a5e-af88-a26a4748908a 78c4b5e5-0783-48a5-a2e3-c95b89861c3e 772aa7fd-179b-4a06-98c1-dd0c7d8b70da f0153bb3-8ba9-45b9-8706-b0c5e90e53d2 58b2cc49-9541-4e51-93b2-15cb057f3deb 2a605d0a-cff5-401f-a560-11f6327d8108 f7cf738d-7919-4244-b4cf-c2893bce41e0 32f79cf7-d48f-41ae-ab8c-4ba038ffdee1 62c4d7f5-3c3d-484b-93e2-a140817c816e aef33d14-299b-4d1e-8fc3-b422c1bf6592 3a5f26a0-645f-4c33-85c6-0e8a31202fdf f518a910-bb86-4f82-b6a6-60886d4a3f00 42e78c02-62bd-4d16-85ca-67beca173604 49228c96-d0d9-4fdb-9da4-5561d7e43264 972fce73-25fd-496a-b040-f934c3e2b197 bb0ebe80-cb20-468c-b4e8-035cb232b54f b555775d-e3dd-4ab1-8fc1-ae86e39d6c9f ff42400d-75b4-4057-a6ed-639c85ab7678 aa047dde-a7a2-4b23-8ffa-6ddd3f40f50a 49d6e055-873d-451f-865c-40e792628552 7b308b4d-e56e-479c-8cae-d2d7c5547f8b 880025ed-5b8f-438f-810d-bd20795ee042 9f670202-9327-4c14-a9c5-0232e23b178c d64bf64d-2528-4c27-af17-8c7c46c8f026 e8f460bc-f591-4a8d-88db-36f630b60734 b2752c8e-9463-4aed-a4cc-4bb8b985840b ca795c7b-6c22-4adb-b7a0-dffa10e15cc9 b4488c7e-22e8-4c17-9a55-c591c5d84cb2 d45e5e8e-efe2-4d20-8e51-f2b5acf4256d 39d1d454-19de-4061-beed-7097fcea3bf9 a4700370-c03b-41b2-a387-cb739f3d14f4 a319b827-c34a-4966-b106-dd585c8638ba 682be529-520b-4c52-9221-4c0cef92cb32 d6833790-ec18-4d6d-9164-ded6a7b5b3f2 31b8a0da-19aa-4a73-8c31-29e31b1b3de5 5989aaea-258a-43fa-8991-076b448afe7c 51a62529-0565-4235-9c97-5313f032b707 5449d3fd-15f7-4b9d-a32b-b607a943cdb7 33e7aa96-82a2-46c6-9e5d-61c07b46724f 6967299a-478a-46e0-b5fb-0a64bef63c31 4e67c572-25fa-4792-baaa-d91d9ae37691 24b74b26-97a4-4cda-bd1c-c6beee3913db 4cabf218-176c-409e-9a26-951b05d3e4f4 6ce7327f-6c42-4f78-ac67-563cb097e86e ffe47c41-cd20-4e46-ad7f-4d50a98b8af9 92bcdc5a-f38c-4cb8-b9bd-b3b28ba051d2 ee5b6c3f-23f3-42de-ad85-95d0e3687383 c30a7be8-5069-4a8b-83b4-3775c3b93aba d6cf590c-1e84-4c44-af61-5f3e051d4828 861f3e67-5a01-459b-a114-cc2d39fc36d4 e1dee839-7b2c-40ae-838c-c4713c29d956 6a290671-dccf-4c05-a29a-c8225993cbbf c6b71c58-179d-42c1-b4a5-2397382a2b62 59caf71b-7287-4279-95e6-95bfd584c026 d30ec6a0-6bed-40f5-897c-2779831d6e6e 3dabd850-b13c-4f09-bf90-67b228432147 7582ecb0-e9b5-4e67-8416-1e37b24cd3d1 7ef760d1-5956-46c8-8db7-ef3d0ae11c89 60d7ea2c-806a-4c69-802c-11ed3bc0f780 444bab5d-efb0-4e79-baaa-4927df6ca7a0 109e9819-9f7d-4d0f-b5be-7fa86002461f c7a6c17b-1450-4fc4-ac04-f13d05c5b311 77764be4-e84d-4c75-8377-dab1a6a8d7a8 e5979ab3-bdba-40be-9882-4599721c74bb 11d638d3-956d-4b07-9faf-fdc091cad590 236b6138-f0ce-49ca-a211-9740ccfc1ed3 9b527331-8158-4889-b115-47714377828d 9c0213cf-9fb0-4ffd-8dd3-210a1e65aab0 07f027a4-77cf-4f44-99d2-5c812485ec31 ce4e2c1a-3570-42e9-a43d-f57090b05540 53766090-383b-4a64-a06f-d5c8baa924ff 2c1b3548-1cbb-4338-b06a-10765d91d378 b6a417aa-6e64-47a0-983e-e011c399036a 06d0519a-f210-46cd-9c4f-701ab3a4e073 4b3814fd-9419-4b27-ba05-0c0f017a77ef 555bff8f-c724-4d21-8ef2-e58479785eba e9b0c8fc-96a8-45e9-bcad-4f95057f2713 12cc9b22-2ea4-4055-979b-cda802241e6f 8cb5f006-74ef-4004-a127-2d39242efeac 3400a42a-1e0d-45c3-8d99-0d39b37f571f 841e46be-1a74-4691-9195-c482a0b701ad c1bc7a23-0a21-4324-bb89-f19d65c48e67 d0e9415b-0b3a-4148-961d-c88258c272d1 19b70c16-286b-4c14-92ab-4f9f794eb218 f6266f5d-f8c1-41db-a9c8-9e6ae15abf2d d19812a9-0c4a-48a2-ab00-de7ba71bf502 4e69c7ea-93b4-45ca-9fd1-ccff2f23de73 14f6540f-93ea-47c6-b351-3d758e20dbc3 328cbd80-36f9-4fcd-996b-af4f8725f059 5e7cfc63-6e6a-48f5-9ae3-ea5b8c0024d9 3b1224cb-173e-4f8c-8da7-60938d0d0ba3 6c2cd815-0f2d-4717-8b5c-fa5db2885ea3 61e2a4a3-e523-47c7-a5b2-eacac884e773 8bd36ce0-2dce-4341-8129-db204575abb7 e6e53e5f-3fd2-4a83-9544-da0bb3614a96 a38f797c-134e-4cd4-81e8-1718e8b2edbf cc38b1a4-b654-4a40-92ba-acdc09ac7e08 c45bd834-f16e-4d0a-96ac-d7b9de22d8e2 55d06d10-ff28-4ed8-9fb7-c7337982fbfc bd8af14c-6caf-4076-8b02-0f39a7b8d45d b75b6254-677c-49b7-b01a-1624d9cdfbee e5aea73f-80fb-46e3-93ee-63a3bab7da46 9d0a27bb-21ce-40bb-bac2-ea1404f1138e 3abcddec-c0f4-4e5c-a5de-4c6c1d771cc0 106084bf-0378-4710-a384-85360d7c9309 1318e6ce-be3f-4ca7-ba1f-d0d49fc335e8 4f2dd2f0-b172-49d5-b510-d1e09bc9fa4f 7498ff57-821c-4ad0-b601-ff17f3a00836 d989e6bc-df47-4e4b-8445-564c566b2818 5d9a070a-9e1c-4c66-9ffe-413523605a0e 82a6cac3-438e-4931-aa96-fd3157406827 e021887a-e0fc-4205-9294-d62d097db939 938eda72-1d5d-40dc-8036-97625a25454c 1db7b1ec-fe4e-4d0c-a62b-729ec3c99eaf 7620bcb4-b038-4437-9ba3-23cbd61ba050 ad9e58d5-0680-4358-8493-91058e09de47 e73a773e-1f22-4caa-aec2-f63e52f5863e fb96d200-8a67-4bdd-b5d9-7203ae273010 37fd4c6c-9d4a-4288-94ff-e97c0e9fdbaa 268a96b5-7e41-4eb8-a556-6cd1dfe6d1a5 08f26fc0-1de7-4959-a090-d05c1ef6c81c 26d1878a-381e-43d3-8f71-be2f28485e4e abb7af29-645f-4e5f-bf75-0b4f3c8fa992 ea0ca6ff-d3c0-4349-8942-c666553e0a00 d6f7d2ad-5ece-4c3f-b61d-32b8d79d2f55 85f72e99-d579-4bd6-8589-01f20a4fe11f b5b64c08-17ba-4a43-9d20-669be852fc6b 1a6e3113-bef2-42cb-9cc3-4db5b0dd1ce6 8fb4afc6-17a0-49b7-849f-a1514a56d9e9 70bcf4bf-c94f-45a9-a631-462eef24c755 f6304515-fa6d-4ea3-ab42-4831c11c9c90 695f14a2-944c-4483-826f-2527e2152505 e6f3ef09-eb0a-4a59-8f38-c14dc6ff9031 e7b001cc-4942-4d23-ac64-2677dbf43e2a ccc151f3-3855-48e3-a125-21d79ab45912 9935a967-c423-42dc-83e7-4d989041cc3f 804b5e0f-357d-47c9-b796-7756967d3089 8a9e445e-6796-4525-a5e5-a724985f2049 a1461409-273b-4354-b04b-04be9e08ac93 b7945592-2d7f-432b-bba1-86a6870bb1fb 75c18831-3036-4a4b-99f1-9ccc0cc25c00 0f9c643a-682b-44d3-839c-2cdec00d1c58 b6b8ea78-1765-446d-88a8-06be039fa6e3 a3985f5d-75d4-42bf-8e35-1616fb771210 fcfe87dd-d740-407c-a0ae-67aa7c2b00cd fd3bff4e-eb5c-4456-9cad-ecc804430a0b 16e6a574-7797-4740-8444-69b2d75ae0d5 64d16e84-5f48-4c95-87b0-f89b5abf10fc 0315836b-36ba-4d51-ac37-26906ebb3caa b36d6285-7472-45e7-a73f-75bf0c6f9cf6 151ebd90-baaa-4402-805a-255b9b8bbdb4 ec05a61c-633a-4584-beab-4b11b60cf5d4 7c2a786e-0ac2-4b2a-b824-0b299f8db038 99016714-7553-4646-8e1a-a7935e85f04d dae25430-5358-4490-9156-b2209610b534 2475cdb3-da7a-4632-9572-3eac85ac8103 de20812d-3ec6-41b1-89e8-8ec3cfc70189 986ebf05-df97-4e5d-bbfb-120461ee179d 013894a1-778d-4c05-80c5-262584b2affc c6b34496-86e8-46df-99c6-f4a316a73396 f53035a6-339c-4386-a354-b152adb9be1d e1884b90-a397-44a1-aadd-53638353c2f0 e0f270f7-af2f-4d50-9254-3b93bc0f2834 fd87e243-3628-445d-853d-3ef4aaad95e7 9d89d833-b24d-44dc-9495-87c90078dbb9 13c3fe62-621c-4b3b-b88c-3ed620d8170d baf11bc5-0595-4748-adf0-e7456736fc32 4698e4c5-ebd0-42fb-b6f6-ec7f54653376 8fdc1460-d790-4de3-b909-f2469903cb6c 63c0af58-c0df-4ecb-870a-774a9d0d8f00 a7b73612-b8b9-464d-827c-a94baf103678 cb3fad97-6415-43a6-8bf4-63a6100306b7 bb0e4774-7765-4bb6-8a38-b2bedebbc995 c92a596c-4bf8-4c24-888c-6b351b2f1679 00883c7e-2179-4cd0-9e1a-8895f7821f25 3738f72a-2488-4456-8f7e-45b89f31898a 81f903d6-0c71-4d99-b492-94804a97bafb afcee848-6770-4a49-9ddc-6d7fcc2b4245 023c2511-9e7f-45f7-b392-718da4aa64cc c8badb93-0d91-4b80-957e-79f9b8ead934 a0d186d8-a0be-444f-af66-a7fd60783275 6d8e3001-28e4-48c1-a332-2a5ad1dd9882 7af2e87e-1e5d-4927-8f1b-5a36e57b6517 4ab956a0-d459-4e02-a604-f14a02e79c72 dfd62015-ba9e-4a30-aa1c-da5588684f50 1d8e6086-abdf-45a7-9f53-17a376d2769b 849d5d4b-2481-4447-9848-a1f0d8331444 6239b091-8ebb-4763-82cd-4bfc42d57e8d 179a2324-7478-4ea9-aa59-bd65121158fc 125eaa19-ca7a-441f-8ef7-94bc11706e7d bc703232-1ddf-463a-a23b-83309de32ccb cf577e4f-4639-4732-9d89-dcb3a74d82a6 b34ac209-8192-49b4-a677-ff71b0590de2 fad1c01e-1e7b-492e-b15b-758820f1b8b2 6e4be1f1-a95d-4b21-9926-4317c39a0d45 e442faac-1c0b-4fdd-b2d4-f543679a12ff 76216788-32c3-4974-90f4-d0768ece2584 372eb13f-bc96-4b81-8096-bbe45af22062 ba42aabd-5798-4647-a0cb-614f1b278298 1fe087e9-c833-4431-92c8-49d6caec05cd 8994970f-3750-4f0d-be1d-2548fc830463 1983aaed-76b3-45c4-9bb0-eac564b90f43 914785f2-7eaa-4b8c-b324-4f0532ccc696 99dcb9d9-8465-4d79-aa5a-85346463255b 3707a3b7-7e1b-4f41-b2cb-215cb98b2264 5cf129f7-89f3-4a73-b398-dce0950ffe2c b8240e6b-61ee-4ca7-acea-885253652601 742883ea-395e-411b-936a-964b935f99b4 e753ba44-b4d4-4c51-bb06-18cc2332677d 8432774b-fa84-4265-be05-f945a978246f 538ad657-9258-482c-80e6-0b1b0f7434c7 f7d99e92-5ee7-40d0-96eb-d07134e1bff1 3d50e6e9-6a50-4274-9e71-6424d6b53e52 44a9db8c-659b-4d2e-ba78-5b7b924b0e13 bfaf6296-2b9d-4edc-9fbd-7012ef1e3bfd b46be054-8c6a-4620-8a20-601cd0f38983 23adcbfb-55d8-4d27-8f31-b8cc76458670 41e56da1-952b-4ab8-9319-3d47ed5ca7e8 2826252f-a124-40e1-9484-b8ff63a32c3d 645ad96d-c458-4fbf-9416-82bc834a0de2 d0baf533-c7a6-4a9c-b0ef-357d759b0b3a aacb50cb-7b76-4545-97ec-e156dfc976ca 5b56e34f-9bc9-42cc-bcf0-fea6979634b8 e6506622-8280-4923-975e-43a689200498 2271ce32-0c4c-4a7b-a86f-8e8173ec1c3b db11449a-4322-4dc7-ac6d-4255098206c4 00a3e796-6425-4e0b-9659-859474bb688e 1c0defb8-bbe5-4bb0-80b0-fad0e36194fe f1b22a8b-eea6-4a51-90fa-72831cd35143 e681a80f-929f-4b58-878f-2719fdb2b6de 57d2fd46-36f1-43b1-a984-0ceedb22dfbf 104bfb59-b623-404f-bebd-385f05da3b28 da76114c-86f2-47ef-8678-f098618498c8 cc7b2fc7-0538-4c9a-a732-66e33c3d3059 5df48758-df73-4261-a025-2aaf6dd6ffb9 c6768957-953b-42dd-8018-c35205ddaa5c 8c5d8760-82e4-48e3-bdb3-ac55280975f7 6569ab46-52f2-48a0-bbe0-567bd5547f8c b126da9a-334b-423e-a750-491006c69abb 3569548a-411a-48a4-a1e6-4ba44501b06a b0bff049-c0c4-4aec-b3ea-709b473d7082 f7254fbe-088a-4c03-9764-74fb3f3cbd2f 59c44875-c903-4047-af28-5f44bea375a6 45885a5f-3660-4a90-a0d0-39e67c5ef107 046e95df-ae01-42f1-a4eb-695c58531f86 14eb161f-d79f-47cf-9e71-ef2d4db1eb8f 42c33a05-fda3-4a1d-b4d2-d064de95fb5b 67f2abd3-30d3-4f05-9d20-4582e4eb4d7d 6a726cdc-1e9b-4a6d-adae-506a7e3f6e95 904faf22-6b3e-4be7-ab50-bdf4e7ce3ce2 3a4a0519-4536-4480-ba98-49b04ffef25c 98788959-8a7e-4da4-81d5-c5f2586495b9 f2540091-beae-4cde-a1e0-b2ee2f1475f1 730d02d8-55c8-4738-b611-bc3da682fa05 6385f5de-aa4b-4158-a9cf-565109a01503 f53d4fdd-9e5c-443f-b45f-f6b93c0ca91b 08b2cfed-5427-4e1b-8864-d94d1af5826b d2dad677-4184-4487-85b6-0dc9cfad4787 92c8825d-5cae-4470-b21a-1ca0bba17060 4f58e894-63c3-463b-9dd6-6032f49df9b3 da035201-ab58-4c26-9da5-10f97238749b bb9d78d4-5c2e-4760-988a-22d19774d399 40bf576a-618c-4134-9847-7075e975bc7a c6f9faf8-1257-4b99-813a-0dc10e2a794c cadac338-f216-4621-ad6c-51916a4b1012 1a552618-c41d-4b59-8925-8485233ed99b 932cc258-c09a-4888-b3ef-f8e129e46b8b cff1bbeb-2fd1-4bcf-bbe6-31c6867f6151 4f854781-33fa-403a-8e65-952966e457fe 7b1dbfac-20e0-4c09-b4f6-07140c3b12b8 cc21f991-f597-43e1-a982-c6809a1008d1 96590ad1-0835-4ed4-b6e2-2e7d726b9d21 c542c340-c048-4937-8957-8a101720e088 7c5b457c-48d2-4d40-9c52-2f81b61725e4 4516b534-7bd8-46fd-bdc2-023c70197bee e36e15e3-f06a-4475-8242-1993b7a017ee b4a37097-0783-4733-971d-092302b21b4a accfa9f2-669c-4e1c-b8bc-14428a5cde2c f7692cb7-cf56-4881-ac25-2518db63a0ae 80a55293-0953-47aa-8cc0-5aa381642b10 1ff4048a-57b3-4db8-96b5-25356449fd33 f0b1ec83-5805-4e83-b7dd-03a3f503fb4b 803e15c8-4149-4141-be94-0d88f235a001 f902d3c2-30a9-40b0-9e2f-a0bb0f9f2faf 4bf0221f-04c5-42c6-bd26-8ca3ec6fc324 ea80d38c-a6c0-48b5-8cea-bd00d8d6c073 bb07b1da-2c88-4baa-83c6-1fcd6627b37c 39ca5582-6e77-4a01-84b9-74d6972fb61c 287bcc51-3439-446c-98ea-3513ba0064af 25f2de0a-d050-4737-b88f-3a0fb8b4b72b 3f32ec44-48b3-4c34-ba89-1670a3d91415 0a279dda-d5d4-4f25-b30c-456d8ae115f6 970ebf38-7ddb-4671-bb8d-7693861879ae 8bd40c86-a03f-4c5f-aa9d-2c10717baec9 a3f9e1f3-e9f6-4576-99bc-d9255fcf59c9 6847ffff-b026-4076-b394-029dccc4e662 5bf30323-6f94-474d-b5b5-66dff21222b6 581a9f79-84f0-47a1-833d-8aedea5955d9 fad0116c-4619-4497-b8a0-190a4da26041 6a3ae259-b003-42c5-b6b4-40e3ca731c62 6d1bbde4-3f7c-407f-a853-3341492441a0 bcbe1c59-3fb1-4f48-87c9-ee400f7526b4 09022c68-7485-43e4-9c12-209e20fb6c91 85b9023e-e9f4-47e3-8b33-8207910413c0 cf9d179c-5278-45f0-a587-9e47d42b8e3e acb7c133-c930-4316-a485-bb3c9404355c 9e8203f2-ab40-4e77-ae8d-b3835be2f911 10c77005-4a05-46b8-a6bc-457c27c333b9 810dbf4e-1837-48e7-8403-31ba358b9008 ceabb8c4-6e15-4ed4-9d09-d00390dd5f4a 5bc06218-efe4-4dde-ad21-7fbe3ab37a10 7194f8ee-26ac-44c1-a878-e4ae1008fa8b 5bdf8039-ed0a-4226-bd69-11b877bc612a 4f7754a5-08ed-4e2a-85b7-cc0e07b05a56 6dcbdd03-b1d8-423a-aebf-cd419d3e0f3d b92bbd46-4be1-499e-a39d-59f8eb9ce3e7 eda5a3ed-d70b-4900-bd5c-3afaedf44b33 807a2e11-f776-4315-962f-f3e5781cf7af 59e50213-6481-4dd4-a85e-ec1204022e85 e1a3d132-fe4f-49d3-a3c2-a8b9957b141a 49f552b6-66ad-466d-b2cd-fc51c8d2df6e 3a58b31c-4b85-4365-9f56-7c9942458f2a 13b4c0a6-8aef-4546-a3fc-4dccc2cddc64 3068b73a-6f2b-4925-8fe5-c0fa3892fb1b 51c689f7-ff13-43d6-8f35-21ae6063f8be e455d375-f306-4ee1-a793-bf82a83b63ab 3049d15f-8e4e-4d6a-81d6-0a5f617ff2cd b69370a4-3a39-487b-ab3e-b94e5dad8ced b4a94edf-1c8d-420a-9211-693410b1fcd1 d6e52ebf-089c-4961-a629-5b29af612145 961fe13c-0b5c-479f-aecf-889a19c821de 2d4403a4-964f-40a0-9f75-4f42bf433075 a733a4f9-2169-47e5-a607-aff8116aa9e1 695ea93f-59f2-4ea7-a8a0-3419a565cf35 71b30479-b6d1-48af-8a8b-61cf9af58597 ca8c5c11-c7d6-47a9-ac37-ee006c01d777 c246ca89-ed06-4aba-b70c-6cf0c6c6e1b4 2b2bbdbc-df70-4245-ae2d-c9b0da185876 2c070dba-564a-4861-8ff7-2274a8884a3b f88716d4-0bf9-4c7f-acb0-767c7712790e c14efeb6-f2e3-40a8-b2c6-ee76fb3b7eb4 180cb119-3c1b-4bc9-80a1-b7073eb8dcfe 5f6e00f8-36ec-40ec-b57a-ee4352bf385f 552f4d37-6ffb-4166-82c3-94f243f94fec 910c5fc7-1e77-4803-895f-3f2122b518e3 d3456bd3-1624-4f78-b3a2-dbfcf61f8ad2 003a3061-e110-4457-a1a6-f2c4834475cf 578462e5-7f70-4105-bf72-165acb97b751 c4fba921-7939-410f-a3ee-22fcd69ec91a 9e36b96a-597f-49fa-b6b7-3bdc4640e70e 98736e07-c3ac-43f3-9579-f7f7031a1c4b 40248649-82be-434a-b694-64764101d57a 44e3b4c8-44ff-4b0c-a541-b01abd7a6d03 f5ac607f-b59d-4953-b5eb-4b1b344a5e7a 6a2f4df4-47f9-4e11-8745-d910072d79bb d254e6a5-1572-4a48-80d3-fa3985de7576 46785363-31b7-4ca1-9796-5e0459854f77 e8950d0e-3a95-4d4c-820f-9c0c74e566b0 2f08e31b-1df8-43cc-bbb8-af2a6b01816f 992cede3-319e-4c0d-a054-25736cc1450b 0cb28804-fc86-4353-9c6d-c77f0f6684fa 797c2357-da00-4364-a4d1-a353f9c33a91 453c36b9-9867-4d2a-8903-c0f3f406ccab d9151e59-982f-47a1-a611-87e3d4589115 8e1d0a89-564f-4620-9cd3-c3e07a7fdff1 d28b7775-56e0-49dd-933f-c5176c7b6e5e ca8a74da-8777-4e8f-866c-2211e15e9ebe 57500031-3b5e-4391-b766-2032e91c93bd 0a369cdf-dbbe-4964-b36d-12a8cb5b5782 68cc1efb-d9fc-4b7e-86ac-057774b71594 5a1e9222-d329-4dd2-ac34-1663bed0b221 82a00f35-45de-44e8-9f90-f277ce7c505f e172649c-23a8-46d1-ad7d-9406d4bad6ba 27090a14-dc09-4436-96a7-facae362f71a cf338d3e-298b-4900-859b-125482c8fb74 4a09a63d-a9e4-4407-9e4f-f3276e23a4cd bf96f248-9c2a-46fe-9fbe-91fdce9461f7 14544141-4bdc-4298-8b44-68b015924de5 308fe708-27be-4776-bb73-eb6b835e2a92 5883f11f-4191-49d0-9f14-2ce29a17d564 9be7057b-6e13-4157-82f4-cb2ef4b59157 3199d273-789b-4de3-8c28-f7ed580e9cb5 c1d8fdda-9f0e-48cb-a698-b0f763fefe58 cc5b4ea2-d644-4295-ba64-8ea6c3ac9d84 108be21c-f136-427a-908c-94e9860aada6 04003134-0fd6-48de-8ec1-f172b9995ed8 18286a2f-107f-4dd2-88e7-4ded4a109d20 d6446389-2192-4b83-a4b4-b467d59b4812 93ff4aea-ddc7-4563-85c9-5afdcb60e5b2 0e2438ec-e01e-426a-b7d7-bf8ffd4b6082 d8b90fee-c58f-4b85-a19d-7f3af80fde31 d75bd7d0-066c-4777-b24b-e36111e39165 3cae4b95-b8eb-4a42-8f01-ec7899132552 b5228ae1-7b98-4564-b573-def48d23c43e f5000c16-d8fc-4c03-a94c-641112a63ec6 f3aaf127-743a-4a9b-880a-ea420661277d 152f40e1-ccf5-421e-8b92-c7af55478336 d10e0c92-3026-4917-b727-e678c272fba8 bc33277e-88db-407f-b965-b9fe88903c6b f22c01c4-8391-493d-9b31-e2c8751ac002 7d137977-9806-488f-ba72-bf206e1cbc3d 1d45e6c7-8c34-4888-8f3f-b9815994bb92 f04158c1-65e9-48ef-b39a-dde132017656 9c5a5b35-99af-423d-a352-7dfef55caffe e2db5dec-124f-489c-83a3-6b7059d3c9b6 26c9337d-6419-4e60-9d55-e74585d6ca86 695c9a94-ad01-4303-985a-0df675a6646e 29d9bac4-d0c7-4e3e-9bd1-8754bd151f93 eebab22d-28c4-4667-b56e-0c1299ae9dd2 fcec5474-c94e-408e-b66d-6ce646aa7f70 783e23bb-4dbf-4695-a847-14f05e04c5ed fe84bb34-01e0-4e35-a7e6-ac04c620ecdb b2e3eee4-9a76-4574-a8b6-810fab3fa8f1 47e8c6f4-ba01-44f9-a9ee-82ce9e0f87c7 c9bfbabe-7800-4867-9f88-a6c2717845d6 c76b16de-aa6f-49ca-b7c3-606e487914a7 65c68c6f-e5e3-4f5c-aa58-5ea3f20c807b 7c280a52-e33e-4acd-801b-b5df89e6ee3f b891180d-0fe8-48cc-a801-c7bf144450a9 d2cd9d1d-e6c4-4a2b-990b-8917c93970e1 72efed67-0d54-40d5-8877-9bdc2f1259a2 612769a5-7d34-4aba-8b3a-f44495aa5c78 e51372a8-12c9-433f-a6ef-764f86e80b3f e3e9fbec-6d7b-409a-a55c-6d4e1de56331 9e7b5608-b7ef-4053-8d71-09c1d6298fae 7aab3b4a-a5d5-4f66-81c3-975cbb7177fc fac4b123-fb75-4ae5-a679-f6fc9a581186 5d190175-f201-4a3e-9617-632f381f1419 5f621bdc-d970-4d31-9ed0-174558947efe 7157491a-93c0-49c7-87d6-f10c255ee5fe dccff58b-3d3d-48b4-bdf0-9faa73f5500c 915a8eda-4658-436f-9814-c9119e3ae88a 36ebdfa6-4d35-4693-909d-414d73b5b741 3b9c5f71-57e3-433f-b59a-7e480d16aaa7 06afcf2c-b0b3-4c1a-8e3a-12862b17bd41 4ef81814-c786-4761-b48c-76bd869c234e d0caf083-f5d5-4a6a-8662-6c158560b2fc be088adb-453f-4f07-8660-723f9558e7cd 06a2335a-114a-46e9-b785-1b3c4dcbd352 6d162c9d-a5ec-49e0-a10d-1366905c5b43 57c2623e-9b3c-44eb-97fe-9c76dd2f7fa1 fb7457ce-9c24-4853-beff-5dff2b668864 804de939-eb0d-4096-8349-9e392d924132 22fefb52-f21e-447b-a2f3-1ce01d5b09c8 eec6554a-aa84-48ed-b8ad-3242274127ea 17545638-0c68-40dd-bdde-024c0feb9d9b 6387ba32-9534-4209-b967-d15d52209392 d8761bb9-c67e-4026-bcac-39f5b6d35408 8a48b6be-5217-4c4d-9e48-3648cf3c601c 7633e736-fbab-452c-954c-01c7e5e2578c 930c4f13-4d15-46dd-825a-248a083bcbc4 766734e4-61f7-4625-92bb-6c6ba266aa8f 9414a7f7-e3b6-4936-b3e2-a640c1681539 4378ff8e-48f3-4b19-ab3b-2210275979f5 0538cf6f-807f-4f27-9de8-56fca18517d1 af750791-7390-4010-ba38-f3f047c5e51e 70a8296a-a43a-47c9-8880-65af2c3012b6 125d4276-a20b-4071-82dc-4b77899af32c 333b8fd9-d228-4a3f-9b17-e6caec809c15 08d5ccc5-a2ed-4d14-a265-e81832af2a06 eccb724d-cf3b-4ea4-bf5c-403a8cb31737 adada943-8ab1-4a17-857b-96619c072493 f05eeab4-9353-4319-883a-a46fba61d80e b72d1541-c1a5-45dc-89a6-e7dcd1df497b c156d3e1-89ed-460a-90f2-9f35917d95d5 84f3f747-bea8-457e-b7d7-74a8d9cbb2c3 9ac0a3a6-f396-44ff-9474-405fab033342 5a3b47db-d98b-4b30-8f5d-6f9b58948319 d73590b3-a761-41c5-ba9f-373d963c9e9e de9e4b21-6dae-4673-9dae-1ff94b2dfad6 c24fe19c-6066-4164-8e29-965b7e4113fc ea1f9879-2b59-4890-84d6-6fbafea20fc9 e87d7c11-48ca-4a55-9f04-6707998ac3f5 6138b8fc-bc54-4373-b9a5-ca6bb6673413 ea5709eb-f0aa-4f5f-903a-7dba8c8c74ab 9a9286c9-3cad-44f8-b821-43b578dfbda1 8703adea-b8e1-4b69-9fd5-e9fbfa91038e 965ff125-c9a5-4bed-9b6a-67b11522c1b1 c261f8c1-aaa8-4cba-992a-319a8a0393a1 2977b340-6dba-4858-a472-1c85acd2be44 b5477034-ed4e-4972-8425-38f137f6ac14 469af7b4-cd7b-4054-8aef-1e81f8c134ca 0aa62439-90c1-4caf-b1ea-68870d4da7cf ade81045-49f6-405a-85cc-ab499bc00c8c 0b97a296-3729-480f-9f69-f8a42ba4dd34 260d2a0d-fdab-4aa8-a384-b9cc61377c9b d6b9fd15-535a-49f7-a809-cbf30aaedf77 06c19e40-4997-4d31-b790-97575f5a5388 023d2cd7-f1f6-41d7-aae4-c0748089ab4b 63b6fa11-3738-4a16-8062-1e0cd6f99bf1 1c2caffa-ed6a-45bf-9eb1-16dbcec66157 d35ad14d-ff3a-4d6f-9f2d-2ee6f93949c3 4c46ed21-6a82-4b0c-9724-122496c5bd6e fc31843b-6d7d-4cba-8cce-907d69c1f6e7 5b2c75b9-f15e-4746-9c79-c095bf91df9c 5afda9bd-bd27-4372-a83a-82abb4c11fa8 d6b83229-9a72-4988-81a7-b634c6c6efbb 10f32adc-3ad5-4fcb-8bcf-19acce2e9e19 e5b8d46e-3b1f-4081-8d61-cfc6b031a2ca 131bfc9e-353d-4607-98da-0460d5d21f8b 76a56bc0-0e30-491b-b521-f2f1539595f9 dc94c30b-f03d-4bb3-b8ea-c648389a154c b99ebbff-6008-4c3b-baaa-3cb6b57268d2 a0c9930e-9d56-49ba-b7ca-6d10ec44d990 14ab0261-9872-49a1-a9fe-e16840e3525a e02811f9-d313-46c2-aa3e-4767152602ba 09410c3e-d5d4-49ee-a5b2-4e274401e7b3 a05c316e-6d16-4999-9511-d7a30bb5dde5 00c7e5f2-a787-4ad7-9685-8cc98c67004b 198dc9d0-fb3b-4f72-b95d-bbac90b7fa91 bbcf2ace-b471-4362-b7fa-40f0d7f5a1ad 320b7708-6338-4ced-abda-44169e4d4b39 2a9bcbf6-1b84-4f43-bac1-c07df84c3146 58eaab40-0259-49e3-aba2-88fff2a46534 d155d5ba-212c-4993-a4e3-8d3e0b256668 570a2428-cc33-4fba-a84e-af644e6b8d0a 27395ae6-7226-481a-a16e-62e337f2a587 b6d85d33-068d-418d-bc48-5db8e6785aa6 46ffd5ec-540f-4ce3-a116-3021abc66b79 661f4873-25ff-4c72-96f4-78c1ba35a0ea a5f43f91-39b0-4b21-b1a7-ede1eea445d1 eb6e8f62-bb11-4834-b90b-ea6843b21326 3370ad26-5410-42dd-9728-808c3598621c 80bb6ddf-eae4-4f49-a662-03ceb15c23ad 169071af-b277-41fb-bec9-126a8425fb5e 03f4d1a7-f22d-4354-9162-ddca2e8d265a 1c97a7f6-9607-455e-a0f7-c853bb11365d 3f39dd23-86ee-4b00-8da9-f7a65998909b 9a5cc1b1-081f-4d3e-8217-0ee70352c949 3922d91e-df8b-42f2-8079-ccfa1f3c4946 331f0385-49f7-4e62-b945-17c5fd52fe2a 1b5fae54-95f1-424d-84af-8fd5a667f8a6 e31fd3d9-510f-49ef-be12-a3ab753da116 ada4ac50-0c60-4e12-8028-f27fc9b98273 f78b2b67-e54d-482a-9993-beecaebcaf88 9a80b0ba-6aa8-4898-983e-d744939224f7 38d442f7-6991-4fe6-bcd6-3e6c4b11b6f3 83a45ca6-9098-415c-bcd3-334edc77bcca b3b57ce9-3a63-4e44-a24a-6d5bd64f6cd2 adecf977-d8bd-44c9-9e4a-cb4f5533fae0 ea792719-d928-4230-9f4a-86648bc6bae7 415c28ab-7166-4dbd-a1e8-e446e9f876e6 6b681861-ae4f-4e8e-9a26-20f3bd527c15 17f748af-5e24-4125-a3a1-82929658834c 7f77e24d-2eb3-4c16-a09c-0bf7a08b53b3 9e2ebe3d-ca30-4d05-adf2-c8f7e4920a60 80c07d45-abee-41ee-af7a-89c24ec6277c 116f84b2-9afe-4e81-aa26-044cf384cbfd f95673f6-c358-42f8-84d7-9c731d1a2ecd 358fa853-db8e-4935-9105-9cc0e51a6222 611c2701-3049-468a-bf9d-83fc3399f71d c87b659a-e3d7-4cb4-9b15-78e013bfb763 96b26f2b-d77c-415a-b212-4b5c4ce95386 979637db-4807-4bfc-b63e-9d8405d57f95 b018e6f3-f46c-4ee0-a7d9-a3a310dd394b 1ed3b8b3-a5c1-4aa0-bee0-a65105596fd6 97eea683-eab7-48f5-976b-fe4b808f9fa5 30ad6340-6240-4b9d-ba89-292a9cbec493 d03f66f0-544c-455e-9c3b-c613135a6830 c7337305-d1ad-42a3-ae45-5cb4adf257ac 871acb4d-8fa8-4d5d-8db6-97e8a5c16851 924eeaa5-1a40-40de-9e95-a00f628dfc33 25074ff3-d8a7-45b3-b0ac-03f0885b9794 cb1bd141-eb16-4adc-8f6e-1e26c67f5d43 ef1e7763-d219-4cfc-8e86-111ceccfd206 239d03f2-4ff0-4ec7-94eb-ef23e755041c 6f4e9f10-3ca8-45d6-9bfb-74727f61f213 def49bf9-9967-4685-9492-80fc31376788 94a48aed-9ec8-4c6a-a59b-f3e018136a15 3d84c98c-5006-459c-89ca-3335ac60c2be 457455c8-6c38-44b4-951c-a318902b9ab9 4a049c96-1f1c-4c45-a337-7d8d5f1eb478 54b2cce6-4c33-4ab5-a72f-019b5eebbba6 c2aca666-6a44-4583-b41c-f87c661c76e2 13ff0a40-a641-4e6a-9c52-64623e77107a 7ab374f4-a638-4813-9f09-ef0e58d782bc a9e8cf31-d246-45bb-96e6-74428ff35e0c cb41f775-a495-486b-8e77-a7c8d6ff6593 d71d6c22-66a4-4e4a-8535-33c1b76e4a4f 234c026a-26d8-4e6d-8a7e-aa72d4dc0ca5 1dbe7152-8761-49e1-a801-7d559fb5f0cc 683bb84e-06d6-4df7-8c21-15e15f28c664 81e402ec-0b24-4458-9602-e86d0bc3ef40 80fb566d-f19b-4c6f-8c72-443223817fe0 26eeac87-8cb3-41f2-94db-06abb87670c4 79c78e86-87ac-4579-bb0b-3218dcbd0fee 7a8ba782-9797-431d-b7b8-16ab6531257b f9c60dc0-d054-46f1-95d8-5a1dc9caa2ea 20918f26-78a7-4b0c-ad3d-1657d59d7a90 f1c4ebe7-8e49-4ba7-a3f1-3d0bcba54b90 1dd07b8d-255d-4925-8d4e-c2d2c0e36d7b 892f48be-442c-48af-8a14-aa2e46aec34b 835e6b36-7ce9-4e76-a6d4-bf3f89f942a1 45aa96c4-0fc2-45c1-964a-2027a64ef2b7 88b25e08-d260-4b0e-ad42-242dd646d4c2 a215c2ad-77f1-4fca-b56e-10aab53e4a76 a7b2a317-b6f6-4dc9-9c88-ff252321d72e 7f36cc5e-47a6-4d03-9c61-0bb3c1a2d841 72e6cd26-a18c-4084-955f-f8be1f92e003 19872eb9-7af4-4f89-8633-230d5dd22df4 0ce476e6-2f07-44d3-bc18-97f5871fd479 f13add78-fabb-4a86-ab5e-d83925fd3c62 4732626e-70a4-4532-ab2e-8d9701744807 07de49df-d07d-4b87-acf2-c1c40ff5b446 5bed973b-ddf8-47da-ba6c-fa0262e37f6d 3e70c6cc-e065-4790-97f5-3740ed0f0a17 c62417d6-6532-4386-b027-abb2f9bceda3 ca16062c-7f1d-4c26-ab31-db2282cf194a 69c7fdf4-32f7-474f-854e-de95254b5ab2 e12b0dea-ac41-47e6-b285-90f4a33c780e 360c3e77-d972-4b6b-9864-82cde830c47a 3a72b6aa-bfe9-438d-818e-fb2cc2144bdf c7b62195-4e8d-4973-a487-4b4bd2f0210f 3e92bbcf-b303-4c3d-aa58-d837ba9e23cc 2998cfbd-95f3-4048-95f3-124df5739803 757c323e-ed97-4ef4-bff0-1b998ca52361 abb4449b-dd37-4581-80b3-b3409d738a75 62028dc7-598e-4f0a-b0c0-5c17f9f52847 1c819e6b-584d-4d8d-b18a-d77e99c5cfb9 00dd6902-4554-41d5-9e78-11a6644752ed 428d3cf8-feb2-4d55-8315-7f86392da744 bb59036a-9f7c-43a0-9c44-4a3ba32909dd 131bb9f3-2b0e-4a7f-9fc3-cdf7a844aa28 847742d5-8b43-4637-8241-2e20250bb647 09809d9e-8e67-4fb0-b6af-98532de45d1e 1a79a614-a40f-4939-8306-293ed3ab5afc c3a1febb-f60b-4bcb-b97f-2e11a0ee0f7a 0c0d4637-9878-4072-a2a2-3d8de978a83d e2f198be-e757-4fe2-b9d8-3762085174bc 4de71bd1-84cd-47a8-abc5-4e7c1535d2de ce7b9bea-6a69-4627-9c81-9ac7ff0fec30 d445c710-7f54-4853-a0e9-092ab5a38932 6e8362a1-835a-46ee-9f39-f764b7aa90ed a0c71491-f4af-4d31-b542-09a67fa3fcde ed5fa977-61f1-47c2-bb45-321a2afa1276 76effc6b-d8c8-479d-81d5-da781ae63678 690bac67-3015-49ba-8a47-598600f447f8 d9b9a3d6-6467-4ee2-80c2-67820d2a612f 8ab27668-161f-470e-b47d-0ae728647830 237cb409-f2fd-46a2-b388-f1e09b9a2ae9 81075207-05da-489b-b6c7-a978a05abc12 3d0e03f0-3177-45fc-9396-74d0c875c9b0 889793a4-92a1-4c14-a390-63aa5de3c85a c58ea7c5-bec7-4686-ae9c-9bb9450cf135 d8da12c0-2ea1-4664-b89e-e45c126f4aba 158ef0cf-2512-42b4-bdfe-b3d1c08aecef 28d88e19-4be8-4a62-a930-78005a141191 f1c45909-d3ee-4c94-8de0-5973ad1e7bf8 97f2a6f7-f147-4a67-8d04-6971ec12ea78 da37eb89-6d99-4983-aac1-9c52ca2e62ef 04e433eb-7b4c-4e0b-9396-1956f744c435 0d4fff34-e442-4a61-b6f6-ccfc57e77ac9 3deb7ce8-e5f4-4db2-b89a-1ff86bebc640 a86bf71f-36a8-4a13-b262-e05d4b1c69ad f84bc87d-1a1f-4196-8e37-ba80a7c16ae4 ec483b01-bc46-42a6-8b0c-fd537a216999 ee9a639c-99ed-429f-8ef5-4400dc166b36 6217a136-6b48-4673-9d7e-881aa71d495e df6f2b36-174c-4142-9345-ff2ea970895a eb26143f-1b08-47b9-a337-296ccbd9c8c7 43751ef9-b42f-4f6e-b0d4-e34138e5499f b1fa4a84-aa50-4c11-813a-fe44a0ed6783 5b9b34f1-0724-4e39-a32d-c89d605e830b 20a4e9ea-1015-4d16-8a3a-4ef93b145676 3550c1fd-5190-4126-8179-b37404ba386c 3d464c5c-a1df-4f17-9fec-7fd7e1755e63 43e974d3-d6a5-46aa-bcfc-5d4cd13f607c 802643e5-32af-49b0-b968-71520951e3e2 e711fcfd-3da4-4f32-ba2a-0c0e6135d7c5 eda7e3fa-89f6-4d9a-9238-6da744298ba4 8b0251d8-1bac-4537-839a-9f84706fbb76 a3104698-ba94-4e90-9a65-e42399b02f41 b69c1587-58d4-4ac6-bfee-4a2637e0358b 3313d4b1-dd7e-4ccc-a6a5-1373d19076b2 e5ef029c-36cf-4f54-89b7-00aadadbe78a 52855fc1-83af-44c0-b84c-bc425809becd 9b0de376-6416-4b8a-b012-cde8903bc825 419a9e0d-ddec-48a8-806e-4f63efa28729 3421b5ea-d24f-413f-8170-fb6afa035ebd c9874547-c355-4c5c-852c-b215e7879d57 1cbfd37d-29cd-4eea-92aa-8a55c82aa88e 15148363-9247-4028-85fa-e37c8538449a 32ed0a1a-1814-4a54-b51a-dc8ceb718522 d9a97fa9-18bd-4301-b714-a6aeee64bcf3 420a353b-7e97-4889-8d3d-421cd4f7aab9 216201ff-bb27-49cf-95ae-4d2a777adc76 6489e226-900d-48a3-8caa-c90f76efe3e1 5a8a2873-02fb-4f64-a1d0-88bfe3471095 26962d06-7bb9-4fa2-a670-0e062a3b6ac3 dce087a1-7255-4eae-883e-70a5c6301212 195c8f1d-6d33-41c1-a834-5f14eee82541 c1286f63-4965-45af-81c2-0bdccc4fd21f d3210692-8c08-4d18-81e9-fd7195d51e25 6dcad299-6b89-4540-89ff-fb13d919a269 3b85c977-762a-40e8-9a83-d05a82a65132 adc36341-726c-40e1-9d58-9c1e3913dfeb 4602e995-8d47-454b-89dc-80402e9dfe0f 3ae3c36d-ce2e-4f51-8436-c2098b61796b e4f65097-714a-48e0-80e6-41ee48566e81 fd2caaed-09fc-4fad-a12b-f93ac6b3a6e4 107ab359-695e-4a41-b19f-7ad7091db321 bae01b7e-ff2d-4675-9d76-ad320851caed 8001ede1-efca-4684-924e-e221b2d65e73 e11431ce-8536-4e31-ad1e-45fd93842099 c7987751-e8f1-49e6-828c-c1df187f08d4 c90912aa-5531-4e82-8626-deb76ad011ef d5da7c8b-4a0b-411e-80cb-244a2613f907 166110e4-6a62-41ae-8756-d17fe8af521e 1f7995f2-5bdd-4ecd-994b-37162a9bd48e adcb96e2-77a2-41d0-98f1-7dcd19625a92 6fe7c3d8-f382-444c-a585-8a5a3683d7c0 aaaf8823-d7b9-4865-a7ef-83d92e2072a1 e4a9081d-870c-415e-80ed-1522a9cdfa11 f38de082-ccc5-4af7-86fa-3639d3a07eff 0bc23905-58d8-4ce3-99da-b4d95a5800da 334cba26-ca1c-4e36-9be5-0b2380c11ab2 e7564bdd-811a-4c15-9a5f-c06d0b134f4a cca1f6a6-4895-4b86-9674-0aa8cde87c32 f126e13c-e4d5-4cfb-aa25-5c3362709ad2 be734ffa-82ae-4fff-9168-ddc1e1265b4d 40d49000-ef10-4d56-9dc1-b9a18f4a7731 1d02dc8e-8f18-451e-8e45-724b56311238 a583ee9b-cb95-4190-b26b-b4758a28e8d1 d5edad56-ac94-449e-959a-14fe6e608deb 73dff54d-6423-41fa-8c20-0de0da82ba04 f302c758-630a-46ec-a5bb-8117cd901ac3 0ed220d5-87df-414e-9c89-795ff9ebd7b3 43d29bc2-9ea4-4a15-b758-371dcee4514d f298b7af-f63f-4848-aa8d-fe323f95e9ea 31c074f2-6061-45cb-8368-8e6056fdf190 2a45da0f-5609-4ed4-88bd-dca8d01d9ae3 5a498da2-ab65-4ad0-9bf6-e944c9d84bba b5bebf64-ddce-4b13-a728-bdbe8e956ca2 04ff5f52-efe6-4b15-94f7-042243d71c4f 63b443af-9010-454e-a293-508dab058122 baf7f4ad-7a3f-4215-8ce6-fe1d2b4b22d0 83e2060e-ea20-4704-9e09-709cb379e8e3 b0b842cf-5488-499c-8872-206ea57a0f31 64399617-b300-4408-b027-3d90d87d1eef ae66abcd-78b3-47e7-8273-61c304cd86ab 1acbabf8-7e9f-4f6c-9d45-1366a5446473 be9fba6d-9ac7-45a5-be7d-51fdfbdb0d50 6fe73589-8fe6-4d0e-9e37-b7064f40bebb 715c86bc-c0e4-4ab2-9c6b-6ba719f6a217 1efbdbf6-258d-406a-a31e-bd540efe4bac 9a9150ca-5c4d-4daa-ac65-82eb3a50da8f aa86549c-b69d-44e8-b147-13d26b30e076 e5e8bea6-91e6-4770-a70e-bafbf0212f6d 1e341c18-966f-46b3-9bb8-42f28efd0ba4 0bedcb20-9608-40b7-a5af-0d8e7f08e2dc 8fe12d9f-8063-455e-ba7d-9a0ebe7aaaf4 3529c411-74e7-47a5-91ca-57043d0682d4 c903c938-947b-4f2c-9600-9497f9a673de 12b50516-b6f7-4048-a655-732066945828 9f86c66f-712e-41a1-84d3-12fb95a1a5b7 fed695aa-fb72-4772-9057-6f072b615695 cabbe953-dd48-43cd-8c6a-52ce3d94193e bbf4748e-73c2-432d-85cc-da3d5dde798d 5b94878c-a83d-4460-a436-dfcc44324681 b78ddc6f-eeef-4577-ab5c-9296f58b4041 e856d14e-8ea6-4f33-a90f-c25339f12014 e3b3c999-a8eb-4489-9d86-5a4ede2e42d5 046af8af-6858-41b5-b604-4127d5688865 d20ab987-e0f5-4db7-8b00-46e21d1d7b18 19e9e417-7352-475e-b166-cc15acd61dee 5397e88c-ad5c-4fe6-b104-a1898975c0a4 006b6242-473e-4249-8565-1a6470ba628c b2b4ebfe-a799-43c6-9c83-8bc21d563bd9 7b7aee25-6c19-45cd-85b4-4e24b35542f5 ea64400e-0dde-461c-9813-6b3bd9297873 e6f0e56a-ba1c-48ed-a9ef-d72371eeb2f5 d582a2b5-7ba1-4ed4-8080-24f41f42d781 f2904d22-a486-4d0b-827c-7ec8e8f64a18 6dae91c5-0164-4598-ac0d-49a3f981637c f8ef8999-512f-4e35-93fb-81fbf4273a0f 0f64a73c-fb17-429f-9665-940ed3cf8cc7 2cd7988c-1939-449e-903e-fa3b51b42e3a 2db982db-0c9a-49a7-9956-072155a791fa 268461df-e347-402f-a640-2066ca355fda 6ed1044c-6325-42cb-8143-448278e3726a 48015f01-807b-4c16-8284-757b3af7caae 15543ebb-18a8-4065-a59c-6788d64fb2f6 7d5e499f-1c25-4b18-b181-d329999be022 6b6593c7-4e0a-458e-9050-299b1c1021a6 559a05bb-ab2e-4dfd-902c-d21b09f18088 267ebbb9-5fb9-46a8-938a-96de47e7c555 c9ef9273-9b3f-4d7e-9c9f-f77038bbc638 25ef4f49-d8f5-4f57-85b6-5ef86f0686a4 039baf48-0b61-4d49-8a13-43a08b6fadee 254c0899-aef8-4480-91a9-945b62631a69 6b55ede1-ec22-45b5-9d85-852d61690c96 2f213182-5619-49f5-b824-c82dc123188d ff9a6cc7-fef2-4aca-97e6-262d8f2b5fd6 9d9c9dca-c687-4842-a3eb-d92bcc0e5d8b 9e1bfd63-29a3-4cc1-8abb-aab0287964f9 6a7b9489-e3dd-4dc1-9096-aee01158de11 62e99466-470f-4a4b-af3f-92b6661e0ce9 51387617-16e8-473a-bb74-d2c4654c5e6e dbeddd91-ff8f-403a-be68-2fca0d5c8dc6 ffc2838a-cdb6-4e27-a6c5-6ba7a4f5b152 f7d956f3-3ff8-4e08-a8c3-85b1f05a85df 2a67ce9e-467e-4626-87da-42cd739e974a 013182dd-c551-45cd-97b5-d40137661010 9c74ae2e-540d-4675-b8cd-eb261250c202 567b0d04-1e1b-4e40-896c-3ed847b0db24 2d1a392b-0512-4f9d-a04a-9806e3979821 c989596a-8a8f-4b83-b875-8cf4bf887dde 001b0fcc-255b-48a3-b441-140b7305cdba bf0cca1d-6d09-4314-8432-1da6c2b3ac73 2d8ad663-83dc-4fba-b9bd-8a5ed129f4fb 38e0f072-e820-4854-aa77-79719545aa64 a73df95c-9873-49ef-bcf2-c3cc7781bee8 d05e4a58-196d-402c-add8-a3b421d39b20 74c7c50e-6cfe-42ae-a3e0-edf863afa752 34d8d762-eb4a-4a0f-b2f6-d38fa063fa53 b4d0c87d-4d71-4393-abf3-da59ab2dc00d b85c4b0c-2c73-4fe2-ba9a-4044f5f8e8d8 be6d40db-d02f-4c33-8f71-439150e3af2d 8eccc1f8-9bc9-4cf1-9851-80030c31c884 42a8b6ed-e317-4d0a-b6a4-ab146fe7c268 8bdcc4da-b8b4-4996-b48d-6867913ca29c 7e9b27e4-b2fd-4287-8c1d-9ecb8a56eeab 8fa5acf9-28d9-4246-a2c6-25dade17074f 45e69af2-a764-4712-958f-4ba56f95fd9a 1b3279fe-532a-40cd-8ea2-0e644e8e79f8 d7c0ff40-9bef-4d57-a39d-3c898380c933 f61a132c-c33a-4d3d-9074-1ab437062ee6 7578b471-c637-4f16-bef6-9a6e46503ea8 eebe3ecc-ac86-4a06-8131-319cb2b060b4 75879977-5a45-43e3-a4a3-246429db3e88 606f2df2-a38c-49d6-b1cc-3691833b5e02 46db45f3-5108-41b4-b1cc-0249f45d3a93 e23a2ce5-4e2e-4c2d-b575-59c304d2d7f6 76ba4b5d-536f-4d13-be37-414c88df90da b8cc1a02-3d9c-4625-a55d-c78c327e874b 64337228-36ec-41b1-b63c-dbc4d6f44234 cf5a4f44-57b0-40e6-9078-da0be9b21678 878c4c94-9d7d-4956-91b2-a5b750e218fe df35d2fa-a5e3-4c0d-924c-3ba462749c29 dc848f39-7704-4125-8e88-84e4c0d78856 f380d193-b37d-4e95-af5f-eb359ef977fb 9f163386-b0f6-4e13-ad8b-72b7ab77ea06 938d7eee-38f5-4714-a893-42366a772232 23e5fb55-21d7-4fdc-8c81-56e226b2cc61 61992f9c-3a4a-4c96-b933-9b434bd100c4 dccc3964-882a-4a0e-990f-d2fa1cd6e6cc 1afe0d0a-343d-483c-9b4a-568bd9130939 35da4c52-9dd7-4d75-9f11-d87ce1407fa2 d1aaa753-097c-4d20-ac13-3837a7eb9ea7 391738fe-c4ad-4641-bfb1-a558b0ad71ba 27a7c22b-0663-45c5-851c-9522c7263b22 ac89ae7e-5f27-4c26-9eff-bd31ea5dd86b 61ba1933-63b1-4e8e-a051-058524779f3f 13f7a03a-f625-456c-8ecc-4d91deffac40 14bfb0d7-5250-44c5-997b-710de61e0e58 a539a533-10bd-45f0-ae90-ceac380ede7c 4dd0214e-cc6e-47bb-bcb7-ddeb78be71cc 4ef9adb9-d9f9-4f0e-a3b2-28c6f53b022a a7f66307-eda3-491d-bc4b-b8aa592079ee 078daebb-85c3-4c26-b02d-8864ddaf8574 6ace58fc-15ea-40c8-9c48-8bace874ece2 dd9afb87-c0fb-4c87-bc98-d2239ef57512 b7051d30-8aaa-493a-9bf0-bec05ad61dde 55bcf422-c7d7-4c13-8ccd-6c7362ba650e dead35c6-21a0-40b2-83c8-7fd200706143 095f8300-bacc-4922-8894-abde55062367 8d78cc54-f1c6-4022-8f48-999c76f5590b a804fa70-4c7a-4fe4-a8cc-7d72a65ec45e 3bb8b435-2bc8-43f0-81c2-2b158103f28a f2ac9f0b-4b98-4bf5-9be6-ccdd89a33f34 b29d4cbd-e6c3-40ca-b304-ed194cdbf66d dc8bed17-86e2-4c6b-9b3d-5f96d50832b1 aeabae90-23e1-4800-ad16-fc97c43816c0 4273c2bf-8ac7-40e7-87c9-9559c1475620 19eeab99-d4c8-4aee-a717-3f96fb2ca85d d2566144-aec0-4de3-908b-04e1c263ef0d 86193799-814f-4239-908c-9a845a3f7806 9118f4b3-c224-439c-8572-b71490b58795 22c1caeb-7587-41d9-aee0-956cc705fb8a 97e12cf9-804e-4bdd-bd87-328678917068 464165cd-9cb7-4e35-8fde-a2acb1488b06 69040345-6b43-4599-8281-2494fe574bbf be368fd0-02d8-4b8e-b7fe-c5fdb2b9da4e 770926b0-30d7-49cc-bac0-237239467670 26fc2c24-664c-4413-a7a3-14643b5827cd 05070055-7204-40df-8f30-d6d38845214a 6e93b4c7-2e4b-4d38-8d78-126912960c5c 97136b55-cb43-4602-9cb2-affdf1705716 5e2d3277-b77e-4961-af42-275c8b87d5bb a0465fcd-acd5-44a4-a6a2-7d369570fac5 459c2cdf-4cd1-4adb-85b7-58b815d4d170 fd60c3d6-c080-4339-88c6-76a2844531b3 51e5569e-0dd8-4762-957f-74bb352dd131 8c6819ef-6275-447d-80fd-5d95131ab2c9 82424c4b-720b-45cf-be11-7dafb6138482 4e2c849b-f004-4181-8b88-24ccdeea6eea 84b4a090-1233-439f-b103-2d78a518ff32 ba242323-8b63-4054-bfc5-227297664681 020d1df6-2799-4724-9404-76c314c825e3 5398c7e7-d613-4e42-b596-3228c3ed9ead 5b770cc6-ea4e-4277-a9f1-a8bd85eaf840 a51d1c8b-d802-4d47-9912-20c08a792da3 6ba500b2-f1ce-4f39-b7f7-9d3466a003f2 6b18e9cc-dd59-4717-8f76-0b2dd8856c6e bde0edc0-6ec3-4317-9da8-e8da346d3d6e c29ba8b3-5150-4b99-b365-83ba016275bf 9777ec00-7767-4f9f-bb39-6493177c1e16 cf41f53f-1974-4a5a-9ff8-5febfe821aa4 146c3247-5361-4d69-ae1e-b4d0c906804c 62bc96b3-e6b6-41dd-849a-9251cc9e8be5 e8a08e8e-bc8b-45c7-9b6c-ace189f4f218 6f3d31fc-c547-482b-be37-2e965497fa18 ddd98fd0-b9a3-4ea8-ba82-7261a7847a08 f1661d81-c995-4dee-bcf4-3576beb9e92a 8dc1951d-fcfc-4970-8ea5-94706c8f49c2 562aeb2e-4510-43d6-9321-6af54f160127 89e4741b-daea-4f45-8ffb-64ef761339d6 5e1d061f-2e4e-491f-a6d2-8e47e31e6e9a afef85a4-ad8b-4e1c-97ad-97f8d2b6c33e c77b1d63-ad3b-4a92-83ef-1c91c322003b cc56ea36-51d0-4672-942c-c126e5e072ac d8f3801c-d3de-478f-bfae-0673cfe60722 2dd9106c-1cc4-4818-9533-2db454359eb7 08140d39-2f8b-465d-93d3-8bce8d801fc0 48f90710-91d3-4081-a012-6017b255f4dd 693a4e90-28db-456b-ab40-34d973dec237 6d6cd473-f414-4671-91ac-02dd2b58b2a6 f766ea75-2a42-4d2c-9f46-c8ce12e00a14 6f56e217-3e4d-4511-bb13-259544b44521 8b5fb641-6bdc-4a79-8b20-c9eb3704af90 e5c5241c-f1c2-4da4-a162-acd0bb3296ac 06f73bea-1910-4671-b172-6fe0e20f2c88 09365c20-7572-4114-a61c-f8f0f02c3a9e f2438cfd-ebfb-4d56-88b3-b51bcf7a1d3f 223b335e-a290-4d5a-a8f1-77bdb549c0b3 fe389563-1c38-4c5a-937b-4bcc0f608fc0 98bebdea-7e4e-4de6-b878-21c1fffc5a25 abc95e5a-0517-4cf1-9633-18d90beb3896 952f0b13-5a69-4c7b-a21d-2ee4de88abe7 384873d4-1c7f-408f-86ce-30e0fe995b10 3053643c-0ca8-485f-8695-27a6326cd4b3 61c63c72-5a1c-4e18-81ec-3459316f79f9 b6c76baf-9424-4909-82f8-6cdb4b44aa13 d97c4aae-8bbf-4837-b921-ba7f1915ccea 2258f172-0b8b-4ff8-b4aa-6c00f0ddb723 da1af03c-1069-47c0-b119-377205a92158 f60e8bbd-bbf3-4b65-a32d-a0f7adc129e2 f0ff3979-825e-45eb-bf25-addebb85848a 658fc199-f98f-4837-929a-c0212fbe88e5 f1cc1b4a-ead8-4d8e-a86a-7e6a81a82b91 69a02b9b-df94-48fb-a0f0-825632d5cecf dc2c311c-060c-484a-9e24-58f855e67f33 7e6d43a5-f50f-4ebc-8d57-cf16b6a538a7 142599a6-52c5-4e68-86ce-82184ee6fc05 946a5950-b2a5-4a5a-af3d-67ca3043b9c6 a59f1c9f-21f4-4893-82e3-d051881cdd17 f9abeac3-beea-45c7-8781-4b49dc4905d8 fc19ed96-3f5e-4c5a-a1a6-baf0c18ec9f6 790d254a-91d4-4d27-a74a-2cfeeab16b9e 38750022-1490-4cc4-8869-a3c7d5300ccb d5939358-5a34-40f5-8572-8eefe88548ab 9d2d9ee6-4cd8-4d64-9428-6b4717b04527 89a8d5d5-644c-4332-a10b-f48f5f7f0a03 394ff157-7683-4721-bcbd-7f4f6345bd12 139db12d-f741-4c60-8f15-f3035c8ad904 b586a61c-4385-4496-931e-446b33f22219 6921d250-7e10-4e6c-989e-ef6378c532a5 5274a847-d7a2-4bb7-9c36-280c5613afa6 67ffe424-e2ba-41bf-902c-a3e8216fe5c1 049115b9-70a5-4230-8fc5-ae9f3161dad5 ff1b5528-f181-4c41-b457-dff528c346a7 1ee05966-41f1-4805-95b2-2fdd7821a8d4 cf509c96-393e-41ec-b307-c4518791e811 cd1dd8a1-5314-45b4-89c0-95a80c8ea485 44100eaa-110b-49ef-94a1-ca85b678f29e c987bb59-a705-4cd8-9eac-e0823c149c69 e3f6a174-d486-481d-a948-a5b9facb1fef 5b5b9766-5a59-4b15-adb3-dbf30dd4402e 59b4346e-2c22-4a5c-a799-329909e4f644 2897a23c-3bd0-4dc4-82c5-5ed8d7d07514 6bddfe77-762f-4799-b889-409c55413023 07fb1901-5b99-4fed-b7d2-dc894726e361 5202bf96-dc24-4685-bcaf-7c28e3d26d5c 476dfd3c-4f3b-4cfb-bee2-b25762d7b54b 2fc1f970-1a6e-4bae-a606-fb9ccdcf928e 607327d4-c307-480e-ab84-58b2aea14be0 a579c206-1325-40de-9a1c-2f5a96730704 af0f2817-d669-4989-bd49-af79cab94fdb e972fc06-9a1c-415c-becb-291dc14b2a0c e7a58f40-b25c-444f-836c-91edd44740f9 79fcec5d-3656-43d2-9f13-52b01a723aca 153301ea-fa72-4530-8480-9078788521a9 8d1bb8a5-a1f7-4088-8273-15985a4fcc00 acf7d4c6-36b1-4739-9016-43763f52955b bf509df1-d046-4646-9317-1ddc30e78668 b7b00222-6a17-4f92-a182-96da30525f25 c93c5ea0-1d47-4acb-bf80-35f3cc3570cc f3aaef46-c423-45a6-be45-2ff2518880df 63914709-1faa-40b8-a6d1-a4ba9e57de4e eb73c004-2495-4106-8321-b32c12a8affe 1f40d179-c074-4a2f-8d82-b6c126bae5e6 ba80dd05-4803-4bf6-b23d-d73e74813bb8 b5016170-71a7-4d86-b6e0-2f887da427fe 4c6b6098-1ce1-4995-b28c-d54917ad7cd4 7b9f35d0-b40b-45ba-b22b-c3480f3c4a81 e1359e55-ca46-4840-901d-f5f29168c1f3 ef367af0-769a-4c41-9b97-1a58a8371ef6 c3f1fc4d-e94d-4fd7-8136-2251cd68581d 81423526-d579-4c91-9534-bf66f5d2b4ea ce49ccaf-3bf7-4209-a73f-3a9d102ce3e0 7bd9f7a4-70ab-4f62-bae2-1ed518b08153 1d24acb2-38e9-4919-b7f4-7a9b561d0f65 ec18f634-e82d-44b2-b01a-565bca4d7540 70a49391-c595-4399-9ccf-b4c286147f31 8a582c7d-744a-4bbf-bd06-d722152c7b4b b051c841-2635-40fa-bd80-2784758b6500 c8e9a42e-96ab-4dc8-9dc7-bd0b89da0542 7d180b11-dff1-43ec-add1-5c36dd3cacfa d720cbf4-6d9c-4c37-a12f-4cfa1b167a7e d918ec72-8d50-4d54-b43f-705e34f0fc10 3bbb22b2-85b8-4dba-b584-2ab99b3521af 848e6e7d-3292-4822-8842-c950a0dd7d0d 704084b3-f529-4cd1-b50a-df04b0fda309 c0ca51b1-a1e6-4087-aea9-526a39a1dd27 220eafb0-c6a5-48b2-b9fd-a1272a09c1a7 198c9790-1290-4b58-bf77-c31b10bd8d9b 5e011d75-0a04-4647-b3e6-5e0a7b7a2b54 baf316b8-fef8-4909-b225-04032219002d 6225d559-201d-4289-b066-9b580ba6283b d75a2e6d-0e31-43a7-ac49-f1b968fbe6b3 3cd83f52-5af4-4675-a219-7470a9f92343 9e9f5e34-b6cf-4294-b7de-859d7d1a012a 5e1b1f9c-c146-43b5-a9ff-b5f34013f931 e83faded-9340-4a5d-9b42-c8e09fedcb30 895f2fd4-f7fb-4388-a321-1dbc3e7e038e 834833f9-c35a-48ec-9934-db520bd0e984 a3a44dff-769f-451e-ad15-2070474ca693 8edbe16c-3e4c-48b6-8da2-9598f73da47a a60b157d-ef58-4abd-ac1f-cb423b3587f2 76c86a60-48ea-45d9-bf50-055390bb1dc9 ac64e3ef-0a23-4f62-b9c4-a32356895e27 3679561e-5daa-43af-8846-3794c185e777 5bb21af4-31e4-4cba-a1b8-0001b3d5d7da 545950fe-e08c-4511-893d-7390fedd6dab f1f4a7a9-3f4c-43a0-9a1a-66930d4da1b5 e4c548c3-45ef-4379-bdf0-2bd39bcb5928 27903523-6d33-4ec4-b5d5-cf5fd82e1095 8aae5b8b-d18f-4f1f-9e4e-52330cc0d792 1228f464-e183-4b96-b99f-792b0077b297 d89a73b2-8a0a-443e-848e-ea487a06f17d 6984843d-2617-479c-8752-acbf10a2d86c 22321b2d-b9ef-47e2-a86b-b5becee7d70b b748cfa8-ebf6-4265-a6d3-0a24d876085b 3582eeff-2d90-457d-9e4b-6ff1cadd4b32 fb75d832-2637-4ebc-b45a-698246fd08ac b130c9e8-5fdb-4b96-a081-4500c4709fc9 b0e7ce42-df81-49e8-a63a-425aa6a66696 2bd44b99-82ba-4836-8414-045bcf5a2ccc ae7281fa-5280-4838-970a-2c50f2b5ee5d 19c9e3a1-3ff6-4319-8237-1134c0bf4f7a f0398af4-5f37-41c4-88c7-ffd040fb4f1f 70e4aef5-89ac-49b2-a8c1-9187b9f8f69a 7ff096a4-fea4-4407-9983-5adf50c0a61b e09f9905-04de-4f35-b6d6-02af4c8c819c 84538ac8-13c1-4b02-8e17-1def372d28b4 13f0e942-bb45-4fb4-b3a8-42200847a3d7 dd77f7ae-a595-4a31-a2a8-674aed530b8b 28fc393b-1293-47d8-81d5-92c184f16272 0034d6f4-afdd-4b3c-9e3c-f61881ce53cb 1611a23f-099f-4559-adaf-21d32d1e41c7 2c6a1e09-c241-48ba-bc04-9c1723ea2441 90e3f425-d01f-4c1a-8412-a0472d2f6248 1ce7d83a-c701-4de7-84de-d3e36d4b699b 0994d59b-23c3-440c-b1cf-e3dd4c43aaf1 dfbf90c7-d47f-4530-9228-99dbb435f78d ab759da4-dde1-44a4-9929-7d6c219e1044 150139f7-fb43-411e-8d62-36bd750884c8 a7caace8-0311-4dd5-af1c-9cc3526b8520 9407a75d-5c56-4c1c-8fe2-8ec4b37d002a 3dab2847-f09b-4427-bbf6-d3b794ef196d 136e531f-57b6-4abb-9a1d-6c48489a5b5f 342e2a1b-4c05-4179-b280-46f8d29ec624 1034e168-b876-45a7-ab7e-1455bbf9b10d 2632c4a9-8ebc-4f1b-ba63-500a830967ad 65a847d6-e9d0-4132-b762-843e817412dc 962eb4d1-ccb5-4b23-9e0b-287b24d16d8d 0878188f-7e51-40a7-87c3-48ab4c7986f2 974d008d-3ff1-4f42-9b78-f443bffe28d1 e42b39c2-ad48-44c5-b151-7ea4cc10a984 b49ee749-d99c-4377-a15c-1b84925b681e d908daf8-9bf5-4ce6-90da-e455ecc8dc42 03b2f1db-aeaf-4498-ac0b-3515257cee08 0e402eca-4c09-4616-8524-83622c25c696 5fbd2473-cead-43cf-8930-795f06c2a9db 221e869a-29e0-43dd-92e7-23eaf322ebeb 12c803a4-1cdc-4075-b5fb-7f72038da6b2 e204a2cf-edc6-4597-9c2c-46e3f2ed21c5 20e6e87e-29b2-4679-a74a-c6ce32f4e6f0 898554cb-3acc-4952-a9bf-dc81b4ee5250 5d97d063-1417-4a97-87dd-2df14d0b9d96 aa4be88f-f029-4e26-bb9c-07f1dc727ae9 cb514b2f-0d7c-4922-b9d0-f06f3f73e4da 6c9bf28e-0eb8-4ad8-97af-28af10780d9c a742d487-dcfa-4e80-9641-7f9213eae6a8 8b6b052d-d882-4514-a066-38d4848f8bd3 01083a62-20ef-4bc0-bd32-4edd58def890 4c731503-d305-474d-9130-89fba6be5560 85e5b788-bb1c-4b1d-8d52-86235a45cb4a 4c0ac8e5-c556-4efc-bcf5-fb715db15ffc 54d9b6c8-60ec-4de3-9660-c555b8046d95 58f9161f-b7b4-4841-bf7b-337e14417065 df0d0b72-6ca8-4769-8f33-a84b5884413f 0d42ce92-a9a3-4c76-afe2-e59520aba76b 5d3c2c56-e129-4ad1-8f4b-167709197908 ee714394-2dd8-410a-bc86-dd111211829f e2009c89-35e2-4135-80c6-d95a3879b8ae 0a3ec655-88f7-4991-a6e8-762448869ed6 7b79ecee-7842-4da2-97a5-302f94753ebf 41161a77-1f6b-48be-9f96-cbabcc3f2c3f 188dfe21-f364-45e3-abdd-a2e2954027ac 83108b21-9db5-464d-a9ba-b289f1ff4a13 ed356acd-c8df-40c9-96ba-f524538206d1 acaf066b-bac2-4a1c-abcf-60851bc97b2e 7f4c5bb8-c9c3-4600-aaa3-c0c6b2a5dbd8 e24a334c-ace4-4d5f-adc9-642e5f610628 ce076a9e-dc43-46f0-90e8-c21f3ae9820a 62e95cbd-a922-4a0f-a1b0-d970b6390431 664b42ad-e794-4756-8940-6d42eda0104d 1b6d80a4-848a-4918-9ac5-514845c35172 fda77aac-0512-4d53-9a80-bd5bfa431ec7 0cdb4c91-1600-4e91-8809-d0a2cc19a952 beeefd3c-a518-43c3-89bd-a1b98929a21b a831fa63-3961-4ced-9128-fdcb0988a53a 49619e21-a821-42cf-8123-2fd63806beb9 3667bc04-1a2d-433c-8bc2-d85a9b092298 14fe2383-76ef-4282-bbc6-dc29835240eb 97173135-7551-4a45-9c64-884fe3d94593 d0ebe4e0-5018-4cfd-ba93-653ad63ad040 60ffd9dd-0e26-4598-a4c9-5221e9900177 cbceecd9-0e62-446f-836a-c04f690b565c 3f198f02-3af5-41c4-8f68-0047e354faef 4251a674-5870-4a65-bf96-4c792db0887a 6863fc1b-a809-43fd-9cc4-fef67b255899 50824a86-1b98-4ab2-a0bd-31b5fac62dde e8e0f209-85e7-4e8c-8adc-8ec1dee2d2be d893d625-174b-4d50-9ad0-405bfd60f7f2 227b042f-9c17-426a-bbca-08e306dbe0dc c459d8d0-047e-4752-9156-8410953e1c56 f3615453-0929-4ab7-b553-ceb660cadde6 230371e5-8c07-40e1-b51b-57273eef7f19 89c27aea-7cc0-4e07-b2fd-76d6576b0f21 d4d59663-8a91-49e9-a005-6cd9555cf16a e621993a-8574-4c56-8bbb-875277e09756 d24b6fb6-7e89-4ab3-b137-4c0758959dc1 2ee32774-1cb3-46f6-8075-06a274a5d34c fa3ee971-6e2d-4f75-8456-089c2d896b3d a7658ce9-91a3-4fba-951b-8b0093d2f11c c7d54749-4198-4e00-98af-4a39d6331f34 2a647e9b-d601-4fd8-a901-f94ef97eab8c 40a62c7c-113f-465c-a491-ced13f3f8152 243cef91-1d61-4e08-8614-f5151fb0fd21 b28fc2f9-c614-484b-85f9-52b052500a27 29952c19-0651-4233-87be-3cfed88e3943 5be56b1e-cfec-48cb-bf58-5751e7437e6a 5c807eb7-768f-48b6-bcae-56c9df9ab7e1 ff754926-2bd4-44a1-8112-174c5e9970e3 da76f911-7f1b-47c0-83fd-dea0d8581835 c1a71847-5b40-4572-b4d3-fdfde091e9aa a72e4677-3e37-4dc9-8f9a-c032aa856954 aefaba45-f79c-4e4b-a279-b1cd1ae7e176 5b5d6b88-4c8d-4f1d-8bb5-0515be3f58b8 d24db008-91d8-484c-8148-e5a242cef955 bea763d6-5b35-4b9b-9e62-89e2da45bfa6 828b7230-0760-4f97-b853-d5b96cb578c4 b9803bd5-d12c-4b46-a70a-11464b1a92e3 abe4114d-d94f-42ec-875e-b63a8fd0416f 53f44ffa-0765-4be7-b06d-e02995d2dea4 c8d499b8-cf05-4350-9e9c-7daa32e1d57c 686250ba-4a6b-4bb8-b460-12a04148a929 08d1d016-e126-4b7c-be99-71a3fe304c75 56884950-9d73-43fe-a50a-86a0aa7859f6 228c8173-fb96-4039-8dde-54f28111a9fd edff729c-d704-4a21-97f0-762f9fc21ada ca9cd64e-eac3-42ea-b45b-4ad70dea1bf9 c46877e7-670a-48da-a21c-1389dad773c4 ad0e70f8-01f6-4c2d-8ad2-f4789f22af8e 136777e4-a414-474f-b5ef-1c3259edcf6e 3adc393a-c070-4a9e-a8e5-778861d71a64 e2bddece-c700-44ef-9ea7-8bb2b52b2975 67800983-2e32-4c40-b9a5-ea8004f965de f9679168-d6b9-49ad-8fb5-a3a43f400590 ac1b593d-745a-426f-a6fb-8d76f00339c4 d41b5788-bf8a-4c09-b41e-674166594bfb 6a293736-a38e-4ee7-9f08-fc8a21e08030 497cf702-c0b2-4de4-88f4-421b33f1e53d c70ce350-ec0f-4c4e-8e07-cfb3f43da673 534d9766-c149-4d3d-a840-8ad48352db76 5c9f25fb-361c-4379-984b-322ceab01c9e d9c3a068-b4a5-4607-972e-c829028dcaa0 1803ad41-8a92-4578-82b9-b4c8e341afa6 561bde41-8fea-49d0-91cc-d56831ba9eb0 665c296f-2952-4476-a6c9-4c3405a80cbd cb5dd472-9d3c-412a-bc2a-a700358dc187 237b1e03-424e-490f-94f0-1daffde75d74 f08f4a0e-a5b3-441a-93cd-abc83fc6347b 54e0d355-0c87-467d-ba73-53866191571f 5df57988-befc-4665-92f2-6f75051ef04e 1d6bd59b-b6f8-48cd-bd17-b78c6c431a2a 6423a27a-396c-4cd7-ba21-bbea8fca20e7 1d95b2b2-218c-442d-b1ca-1536f3248bc2 cd737f52-6642-4f49-9c48-50ba07bde41d 27509983-828b-4c24-9a60-a93575e566a3 650e3d8f-a5cb-4271-9cb4-a70ceb52b7b5 acecf1d3-1095-4a2e-9a18-392930d8fdd2 7c8f644e-955a-4b99-943b-0140b02308f2 45283956-c8e3-42f5-b3c6-d09da4bca63a bae0bca5-0793-472e-a920-1e939f0135cf dcfcbb48-e09f-416b-8f31-5da4ae347179 4e250faa-a3ef-42ce-9bcd-c1bce6a6fbeb b2662ec6-4e76-40e6-97d8-6f543e1f3bd6 ac6ade29-c3ef-4bb6-8b24-9d66d8301f23 eebddf86-398d-40a9-874c-ae9378c66138 a83c2898-0e62-410b-8d17-45f21d2a38e3 2b09ed15-3703-4f62-8bab-cb5f54706c60 12176350-2885-41b0-bd45-5e24a61e0952 a5dafe0d-fd2c-4cf8-9190-c391f7e12a0b 6a97f231-3490-4388-9b55-3985d78ae591 d2b508a4-8ddc-420c-960e-18ea6084261e 1f371fe8-297f-455a-87ce-3bd59db19968 60112a53-46f1-4b20-abe7-222ef509e61b d739d766-2219-4988-aa8b-67d12773ee2a 017f0713-28ec-4481-99ab-7b1d4e8ade95 5be98737-4b67-4849-9ae9-e6b0abe0b5ca 883b2eb3-05ca-4b39-9fbb-e4aeccc8191d 5f0c4e60-fc9b-4aa7-91a8-66eee8ba7692 c5fae4e1-5687-44ea-bf44-58e0c23a0dd6 7aa407ca-929f-4492-995f-7268899ed675 8214a77e-963c-47a2-80b6-a55fc17ce272 c3fd7f11-70e6-48fd-acde-aa6b9c9970ea 0feca146-2a41-4472-8d1b-81736dcaa91e 5a9e090f-90ad-46b6-ba3b-518485a59c94 cdde27f7-c538-49bc-a798-f02bd85082b8 2ed9f3da-f183-4b73-9b58-20bd97f14004 3bc4b357-265a-4fe3-b338-4939c23a260a aead7722-fddb-471c-a793-49282f95f826 d3c797d8-8863-4c82-ab91-d1ba36972023 16c7b6c7-316d-49be-911f-2a6e8bab2a3e c077334c-8db6-4791-a674-85a0af974295 187a61ce-97eb-41d6-bfc1-eaa1fa99838f 747cb16d-748a-4b9e-a904-d66b08667bbd c337a1d9-8f1c-4063-83ec-83ebe1c5f578 f123be66-5d01-43f9-a2b3-c0c6d1d3dd03 7f24de87-1aad-4989-a0d3-57629a638ce6 91fea986-9482-4bb0-8dd3-12875c9f067c 0ebd2895-685e-4a48-80fb-ada2ea6347c5 66b64d04-4d13-4b0e-96e2-d7b5d3048f9f 1ad78b95-0fa1-4d0c-9db3-fdf69f2499a0 ad0212b4-86e1-4644-a172-5889d047d455 e63c2594-f1ac-4c65-b857-cb863da35503 c8d08510-0fe1-4fbe-b0d4-a783fcf35080 1774c27a-8761-42dd-8768-4b2ab6089e94 28ebc0c3-1933-4388-adac-35e9c13e11b2 a31bb9a5-d05a-4dcc-ac9f-7bcbded20b5e 772a389f-d9ce-4cf9-b1e7-5a49491e27bc 79feb78f-7344-42b8-9347-2e6174bad9a2 98df1381-68f4-45ea-a7e5-fae48c5e91b9 e0bfb26c-28b4-49e0-819c-039cbbda1ffa c5a162aa-7bd8-4899-ab72-257f877dbd93 82105962-7958-4720-8c59-a24525c318a3 96f99da4-940f-4636-9c93-14ca1f86db02 2f90f5ba-03b4-4322-92bd-63c5384371b6 b3588594-1eef-4dad-ac81-2bed29528e77 228b0124-09f1-45fe-bcb0-99e113ed0544 144a0d3d-e5ae-46b1-8401-e5eb629bba44 bf7d51f4-8c7e-46ca-965c-c49a7c7e3b9b e6d972b7-f026-42f6-9022-a24cb6584531 ce5fde14-8c26-439b-a21c-fdc28e214a5d 039ab840-d7aa-4227-ab8a-9e9f36592c1b bec1baeb-b8c1-4315-a7f5-d674ce93678f ccd29bbb-2dc1-48c2-bb55-b728e3f49c85 ea3decf8-cc90-4a65-9424-4790a729ba8e 9203b19a-5a41-4911-9d1a-c8aca8abac21 7a482ad3-8dfb-4018-8660-e037c5c18452 1fab4092-b3a8-4837-9560-e6b1f9c72b7c 474f74ad-be35-4ad3-be76-6801c8597d0b 3a4852ff-10a0-47d7-ae1b-ce1f3f441586 252b84f8-f506-4ce7-b083-0cfc8d96cccf b7f707bc-7d20-4595-b3d4-fe4dc8b8f8e9 3a3a8f0d-0d11-48d9-a954-c4bc9bccb7b8 95dca6a3-65a1-4133-9c0f-ede110aa204e 9ec3ac38-6cf9-4a3f-ba45-c492b62ec943 8b40f1cc-5d15-47e3-a142-ed50c73add24 bd9119c8-2898-47b7-a4a9-7369d6acdef7 2ff786de-008e-4018-b64e-8e8d50bd588f e21f5cf0-bbd1-41ef-be6f-81ecd0c6d8e9 f8489054-e447-40ae-a034-ae0d0d4349ba 14d862c9-d095-4a60-867b-de6aa92da780 91cd59a6-94a2-4741-90eb-e9658b3ceb2c 705e71da-e732-4612-83e3-83f9dcc808b5 ae15db17-f354-4b74-bc44-d6babe72c1f2 52da3845-b4e9-4eb3-8b70-7120fe92cd26 e864ed51-dfa2-444a-bf99-d52188a8be15 c8dfc352-8f6f-4139-8e33-00ca0cd5adc7 50a18458-e043-462c-83f5-9aa4da7461aa 1f9e3005-5bdf-4752-a378-c0a4200360f9 57b3b4c1-65d5-461d-a0cb-6aa9d22385d3 9408bc34-9a51-4133-884a-af40224f2cf0 d06f11ae-d293-4731-9a57-d5e8b6dab9eb 824da8ef-c382-43ff-bde3-930272292d7c 7a76ad76-d24c-4d54-9824-a17bca64cb9d 996dd72e-3475-48e3-8e14-bb6b5dc364fa 878cf32f-9ad5-44c4-ac1c-6ae38f2f5eb5 736b3a92-19e1-4c3a-aa8f-5c406dc58f88 626545bd-8a1d-4257-8c43-cce46641babe b24b0cff-3e08-41f2-a8b7-b2453237517e 9de1c495-019d-4a73-86c5-cfb37b924df4 b092e59b-9872-49dd-979a-043a6e042211 9a977cbe-7770-439d-8d5f-023f6e3a315b f1a6c75e-34b5-46f1-83c4-b9dc17990b7b 4dbd2eed-0454-4966-83a5-0d41c7fa8d3a 2bf51ea8-1da2-4bda-885a-688dfbe4e78c 475df840-39cf-4591-9279-8b523293d251 14680986-5fcf-400c-ac99-5811a4017893 bf436b16-a1e5-4726-ac65-fe7394eb12db 1470247d-77ed-426d-81c2-007b5d5db3d1 c3d2fde5-0435-464a-8776-400861749206 09d58005-4534-4d72-a965-5afc47611263 922a686d-bba7-4f83-8f87-885e9c0721d7 2debacdb-aafe-4c03-a754-aaffb0bbb0a6 d3970843-8ac4-42c3-a3ee-7d41d013d7cf 894a30b0-958a-429c-aaff-c3daa851f4de d95f13e0-8602-4f68-a923-07d4dd59b966 4c42b4be-67c6-4506-91d3-68096aacad4c 848b765e-39ba-4be2-bcca-885ca659eea6 4660b877-263c-4295-a72c-2b4a28f8a56b 3f014236-587d-4eb6-afa6-8b45327454b8 f2d9a3a4-c6c4-457c-82f8-a5becb1e66d8 d9f82fcb-56a3-487f-9cd0-62be16965e14 7f3daf05-a8fc-4394-a872-bf15396fd4d6 d94f4e88-604e-4534-bdbd-11d0ff186c51 9eb01bca-1d4f-41d8-a35b-d365c6c5b7d3 8b457b14-614d-4550-b9fa-f9873b35ccf9 7659289c-ec93-47ea-b17d-e62ba9854283 21be04f0-87ec-40a0-9f30-3f34beeb20b6 1ac26abe-cdae-4ab5-854d-458be4eb76e3 df1ce5c6-4a13-4e89-9bb3-3cb22d510668 1160eaed-4e30-4b23-a888-b7f4e6e4adec 85691f62-dec1-4955-8fcc-8b613992ac4b caf3b15e-bf75-4f09-84d2-47b1560d1737 050c7e63-c6e5-4c09-82f6-d5070b7c7cb8 1b44a435-9ebc-44ea-9477-6b3fd70963f1 45e70290-8e04-469e-9425-2b5c903e104f 004203cd-1b38-4c50-b786-3b042fe6ab21 a5c9bdc2-5775-42bb-9ff8-726fa209162e 9175c180-afc7-489a-af9e-6242cd3f2b29 f72e0aff-0f9b-490d-a545-b0f63e2b6d7a d810d5a1-2501-48c2-a483-e513d4e6c062 905940a9-fc2f-4421-9b97-00bcf6fbdfd0 1cfd1155-828e-4141-a5de-462ba30a0815 c1ef8854-0058-4da0-b2a0-c82db2d88957 200e027d-2215-479f-afd1-352c15950923 cd985f6b-3fb5-4bb2-a0f5-0ba43f1f1b1d 8224bd0e-c38f-4698-bb83-ef27e0b8fa7f 956d48f8-e7de-4926-8367-746c7bbf6a89 5388a45f-0642-44fa-9c17-c5eeee471174 efb2c4d3-786b-44ca-a629-88952819bd2d 7ba568a1-b349-4f70-bc26-2948c353d4b3 0bd5e076-fca8-4eb6-9e58-1d15436c325b ff479fae-2928-4dc3-80d9-436281b8d187 93913124-d7e9-48c5-9eeb-964999b4b40f e8cda5d2-da66-4ff7-ad3d-9fa21bd1d14a fa1d6e1a-678a-4cc7-9069-62410f7fe4ee 2a789544-6240-4811-a36c-5edaa3c37c9b 32bdfd0b-5c63-4df5-86d2-e9ee721ae9b0 68cc0d14-2ae2-4703-8373-f00c2581b113 3192c2f4-7951-47c3-bd2a-4adebec4039d a74aa214-9cc9-4bb5-8a03-8bf51ff77512 453db06e-ee67-4b3a-8764-182180746277 1269eda8-b6d6-46da-a5b8-acf95de4bf7a 75f82d96-04bc-4eb6-962a-f5656f7b6e2d a833662c-2113-48b5-b8fc-8c66848eefd0 bb8fcabf-83b1-4f31-99b7-b17d2cb68f89 b82c3b3c-e49e-49e1-b7ee-ba674ba29779 dad94f2b-03c3-4066-b5b3-57c49a03a9a1 3a06361d-a041-41e3-93c7-32a247b5e78a f2ab411d-73cd-4877-bbf7-131f2b7c97d0 91965e00-6845-44ee-97d1-803d53194fc9 569146ae-7ab5-41ad-a3a2-fd0837e35775 f4bcc5fb-e3e2-4763-a4d9-b45bd9669aac d6bc2297-848a-418b-a5ce-743f76a006de 1bc116d0-a5a0-4bbe-a2cd-13b0d0acbee2 6407add0-1680-4438-af08-83f24d800b6e 0c37ffbd-78ad-47f5-b03a-583e4581542c 9f751721-c69e-4aa7-aa0a-797c4259376c f61dd4a6-14b5-4632-a5c8-08bf9ea7c996 71d5cc78-04c8-45a3-90ee-f373d17dcaa8 44753a30-8679-497a-944b-1ab87cc85831 26d3db21-7329-40aa-a99b-dbb74589ad23 b7ffa98e-64c8-4a28-979d-fda3115cb2c3 1a118f32-0943-4957-a4d9-82b96f109bef 740b3bda-eaff-4360-ac05-281daf2a6137 9e661934-6a7a-4eed-b67c-3ed5518ba11c f78a19d1-a0a1-441c-8618-4b0be0b6540b 620c62e5-83a9-4e72-9154-f2e3be783dad 79aeac0b-d6b5-49c0-8e20-2cf49d93aea7 762a3d3d-afb3-49c0-978a-115dbb58f0d0 ce2a29cb-9ec9-473c-abf6-3e0d2d3d2110 54946333-b5a6-4d8f-82e3-1cffd9a2ea43 a12491f5-0086-4418-80ea-a79bbabd1f16 5bf60830-b132-4de4-b4f8-7ff4f9b7faef a26523eb-6237-4dd2-8053-689c234e5cc1 d05d68d7-695a-447f-9774-96886ad35e39 40cc6752-4729-4d4f-9287-196baab22ebd 8527da76-c631-43f3-84f8-ba62609f7d94 d7627c7b-bd8a-43db-8078-cca1eb130024 fd93d0a0-6169-4e0f-8470-30cfab131aea 81c069ea-f638-4b57-b223-6d0cc552357e 41bc1d38-6769-40a1-9fda-ce74793760cb 3af394e5-0747-4694-ba82-138d79964566 0fa2eda6-260e-423f-8440-86f27054ad3f a36b6af0-25ea-4a25-9469-84c28d6666d9 574e8551-1ebb-4223-a85d-634d9ae7ca27 6a729af7-aeea-43db-af53-56176fceca04 5e80828f-6330-4d9f-ae42-283ed06cc6ca c6d3a0f7-643b-48d0-96c2-160d9623fb31 2f4e191b-4d18-44e1-adeb-fc2cfd1cea4c 84e06f18-95d6-4ef5-a648-546ab8b7f78d fe390298-4a8b-4ce4-a4de-2a571e4799c5 ecf6341e-dcff-4546-b2a6-facce3c259f5 6415b5c6-c28c-4e2c-8ccb-21c103dc9bfc 005ed999-4903-4bf7-a335-7fb85eccbe44 0d946942-ba99-44c5-9ad0-3298ae5d2754 10dec4c3-5a39-4793-8ee6-3b18d24668e9 db3c8ced-0c46-4843-b7c7-23cd66c2c804 ee97bd01-4374-48ba-b504-3c8563ca6c29 71628ea8-6072-48c0-9ac4-fcddad8c1dc0 fabd3a3c-c46b-48a1-852b-fbc24fe5ef77 5d4646aa-809c-4215-b0c0-e415c045f2eb 33a84c8b-3823-445b-a37e-32b8ab65d0ef 4c399d26-506c-4641-98a7-febf8cd237a7 5e102238-3399-453c-bea7-afab40a7b41b 458d04eb-7ebf-41b5-8c31-02f1fca0f9ac 823550e7-4a12-4b8d-a7f9-d15306450f86 7225ddaa-655b-41f7-8cd8-45ce3769b321 065aba83-9f29-4923-b48f-a854b976391a 9696ce2c-adc5-4b98-a3a6-687d745ada17 9c9e4054-9ab3-471a-b014-1354b0cf15b5 1ba6a984-1bb1-4ffe-b0e6-92bf6012cf20 ad4a0b29-150d-4f24-b94f-3d7e0fbfb327 7982e8fc-ac66-4841-942c-be36c58b3a3c dc650470-2484-4e2c-9981-5207f63abc3a 3ce2bbad-198b-4975-9e44-711393ad0612 34c1c810-949e-4780-8177-cec5d6efd857 3ff84e48-2f92-4671-94d9-fcc5b8a9af25 6d9b0ebd-3fb8-4643-98e3-acc3723f1509 426cb380-ff20-4f4b-b854-1d8273751a12 4fc1977d-adb2-4f26-beff-2025db43d714 0e53e140-a3d6-49d2-b1d5-8842003602e7 730278dd-6a9c-4362-b618-682466be9378 6be8bbc7-0b35-4789-822c-ea67a43fc8eb 90a0ff63-5af4-4248-bae4-4584470e4bcc 816a621a-f5bd-442f-b955-aa8514fa2914 3d200d4a-5cdd-4f3c-af8b-befb47278fc9 7696696d-7ea3-4941-bea8-7bb5be538fc3 9ce705a4-6dae-4c5d-b1bc-e278a2cd16a4 e6b1eefe-85a0-4904-a2e2-bf63b0acf965 05cd47e7-c65c-42d8-8c0b-f34671777091 b76eec3c-e19e-41a7-b4fa-45c23f20656a 50a645fd-c329-462a-8976-44c5c1052c13 da507ce0-b3ab-48db-b032-05ebb56677f1 293a2458-0e19-4f24-b053-02c4b03ea64b adc0c2e3-c664-41f2-9d39-e401fc2d0e01 c5ac2e8a-8ef1-46d2-b4c9-105f3828ab99 07e92a50-bf8a-4498-84e1-fd45b2f44cd9 68189859-86f6-4691-8f0b-df23b2fd796c cd1701df-2c8f-4216-96b6-b38f66c503ea caaa8b77-1796-4e51-8cdd-135e80aacfef 6d664531-9058-46f6-8316-d5b5f6d47618 4fd59920-8414-4eb2-af7d-81fc3a710b1f 0af56aea-b7a6-4aa2-b1f9-e86394775416 e14af3b2-ac2b-4c30-bac4-e30901932575 00e908c3-0414-4f73-b447-376e8a208fc1 63dbf6be-cfbc-465d-879e-c0e5fb388d19 5a2c4ebf-3538-4889-9e54-55fbfc63ca59 036bdcb6-eca4-49c1-800d-6355e9bd9ca4 c5b00f53-4e6f-43fc-a7a7-8efd545cb223 82717a1f-1a3e-4cc2-818f-db5fc468a201 44bb5cce-2cbf-451a-a34b-0bae470a1ea4 175967ad-2940-421c-ae7d-b69adb44e07d 0985bd38-3f25-4b27-aa58-667c33ecbbe6 7a8cf54c-34bd-47dd-a201-c7b32910304d c8a72d50-8f6f-4565-818a-bed22bb73850 ae2212da-cc48-4dea-a79c-569283d8b721 9ff67b69-f89c-4f34-8e77-f0c1c6b30f33 a0cae21a-aead-40ec-b563-8c8f9122d48f b80baf5e-fc63-4593-9dfb-5f5e1780658d 570cadd9-37e5-4040-8d1b-f9efa3fbdced 4ec7b762-0306-49c0-86ab-ec280eaccc0b 9cf64f66-b731-4caa-8e51-2a3cda496639 9d66edf8-4275-472d-b065-9fe0c5bee131 15d93b1d-651f-4c3b-abdd-83026227aeb8 92cd66c8-e21d-4155-ae07-566cd1d3c594 1bb7ec50-1baa-43b1-bcbb-3a294d91b77d 527a6eee-e089-47d9-ae47-ad9b8d3d8264 953afa5d-f11d-4bed-a78c-97976bfa9b3d c2e1156f-1a7e-4d04-bdd3-2fb02d4866ad 9983ada1-0776-4fe9-bdd1-5ce052fa78f6 a1c9f3a7-b496-4e4b-8c51-e16ad2d52392 db3392d5-bbf6-403d-95cd-5ec65e0694c3 ec7738c6-b3d9-4e41-81fd-b4fd89b6ce49 cdb8d50b-b96d-48bb-94c6-1dc31f7df088 3a0a7bfd-accf-4dad-9a37-30be346cfeee 40078070-bdae-4b6a-95a6-5ecee05dc21c 6677564f-0633-46c7-bf0a-3601d11a3358 4d3e90be-6772-40a6-8564-ec50be6a941e a2b797ee-48a2-48a8-9279-0a3c744e7a42 2032dc42-8c01-4ec5-86cf-7cb7831bfdb0 98f83f63-a4f8-426d-bd59-d31c75b0abc9 fc6c4a52-4752-4d9d-8a07-7a71c6465567 3f161dd0-b481-4bda-bdc4-e884c8438fa3 755abb4b-6bb2-4b57-8cf3-0e6e7adf7c99 0959456d-d789-4f49-884a-514ce9ba3ba3 375e765e-2a15-46fb-a9a4-67a49ce0d4da 2aa07c62-7009-4106-9218-ff46cc76d04b 947c5e64-a4f1-422c-bd93-7590cc7dcb94 34bccdc6-244a-4fbc-bd0f-2c3f300a297f e83df09f-b3e1-455c-948e-ff408f5c0752 1f27dc99-598f-4c40-99ca-e4ecb075a422 5da197be-f525-4db5-8c04-cc3effda9e2b fe3d83b4-b0f7-4153-8f9f-2d09e710d7a8 9ea3ee56-537b-4eb2-8161-f4898b3c6b99 de5ab664-8782-44b9-b31c-29814dde97fe 931f71bb-8f94-4d4e-90f1-b77450644c65 3b1b358e-929a-444a-afea-dd7353d1da3a 89f03e35-43ad-4276-b0df-f3e191eb95c8 76607747-c713-4599-b867-6c53d11af703 5ac9481d-305e-4797-9860-d15029552b93 e064a1d6-87f9-4e44-96f5-797f146d4bb4 abbfcfa1-f88e-45e1-8ad5-20cfafab6d2e 6eab7ae8-13d8-45b3-bd22-c6ee35a3f645 a2f25544-6a12-4dee-8990-22eb4c2caf82 b7debf30-8ce6-47ff-b47c-937f19553f5f 0b55770a-8e75-4e18-992e-f675723240d3 4a486c68-fe89-4913-b430-22f9c4ef8465 efced174-7fdb-4669-980d-83229bf85853 4e08db43-ae6c-40b9-b894-9ed8ddf0f07c d857551d-5fd4-4291-831d-b4b5d0e02c63 6a21b04e-2c25-40d8-aa2e-7c62ded9c976 a845eba9-b5a8-4ff8-b93f-a4e917c3dec6 1f6c3f68-0a0b-4703-a05b-f2a1896e9a54 ae2a63eb-f03f-4cd5-83a0-314ec013de65 eabeec49-5aaf-4b3e-9608-eab279ae9a87 33c713c2-7ed1-4238-adff-e340fb046dab 539d379c-7449-4967-9599-21d018839c14 a6f6b6fa-d24f-49f0-a05f-4265e51ec9d6 6d021006-68f4-4791-afd1-0c0bca376d52 98d8a147-5c00-42a0-8cf7-0dd851440ff5 64b2f443-5d40-4b0f-9265-fa06cb48fce5 e85b3c5e-ab04-463b-a685-bf958dd43617 2bbbe9d4-f6e2-4ee1-8e13-e1d972cc8076 01eb48ea-eb87-4f1f-9987-0add47d6123e 8cc7ec38-9c48-4cf2-bc39-3927fb0fc697 69c75379-a2dc-475d-92ac-14a13235b065 45725a9a-92b6-466d-9c88-2299e53022c6 9bd575e7-78e9-4707-98e8-c169eea4b872 75cf3088-2487-4175-aa3a-bfbc82f4e3ee 309ed64e-b320-4507-a7b7-06676650d1f8 5d9aca03-51cd-469e-b578-c79c362bc1d3 b1d51a99-9918-4fae-96d5-c27e1d257c7c de80359c-084d-49ed-a15c-0949ef212985 a30af27a-4891-46c3-99b4-629e48c57e7f 88629b9d-3096-4417-988a-2575e90ca908 a3792b4a-29e1-460c-8652-3b1ec0f631b6 8be7ba2d-2f4f-47a7-9d31-78db29569f48 d7edeb74-eec5-4908-9c27-066d364c3140 6424d022-36bb-45d3-8eeb-f639d6a5ec58 1a5d5c1c-697e-4a8d-8192-4a005fc27647 9d240d67-e8de-41f1-b297-8a5289efb400 8c363f69-6ee7-40bb-989f-2a5b008ab363 f9979f7b-eb32-46e6-bd3c-551e8c6d4bfb 268a894c-3ee0-4f1d-8aad-4fb972fa9edf 53861296-b59e-461c-a8ff-01a5a72de610 c447a058-724b-44da-b018-ab8541c8f4c0 dae2ccf0-112c-410d-8827-ec726c84502d 7d65630a-1a3e-41c8-94a2-47fad8a52fc1 62b7bcb3-9b1f-491d-bce5-311771a93c91 7d2af415-2fdf-46a6-a9e5-593b4990bb0c b6414228-90db-46c3-af3d-268757297ef4 a8006a5b-8f77-4f2c-8ac1-588b6f497b94 003f2bea-c5e4-48a7-8595-7720820da46f 1669f2a8-e504-4ad4-8cfb-f936cf20746d 31e96d82-deb8-48fc-998b-2d7e11d904b4 44789c98-c265-4d47-8c9e-f1cd2ad27502 b16ffa1d-d34b-46cd-8cd6-31ea8ae24071 234f7c81-ba2d-4672-bf6b-63e012979cf5 3061223a-89e8-4769-bb40-6242759578a4 749079fa-a09a-4fe9-90ad-00d9985d56df e6b8c857-2ad2-4246-a364-4d76d7cc0298 2212c16f-1116-450d-bcbb-e9759b1b4943 9b31be68-ac9b-4821-a2dd-6964fdc8578d 42fa51c7-ab2d-4134-9bab-61e2d5082a9e d232e8b2-70ec-423b-808b-dc731840faef 2ec1da2a-d382-450a-846d-427b7f4ea55e a9fa0eaf-b75b-4370-bf11-11e303331498 63c858be-557d-4c81-a846-7eea9995e29a efa1523f-45ba-48be-8a62-5d72111572f3 56218fd9-6688-47d4-ab1e-59ed03b2ae81 b2839dc4-9b66-4698-a030-df87c139ec49 d21b4453-9a3d-4a5f-8384-e7e565c71887 c6cd561b-7963-47c7-beb1-1b829a63ea39 ddbc57f1-b3da-4bfa-afbb-40099d134501 8550f962-9194-41bb-b743-18b214471805 dd3285e2-29c4-43c2-96a4-4b56c0b62d69 8bbdbdca-f04e-4a4b-acf5-997fc9e0dd29 9262f213-9919-4ee1-ac27-3918abd19270 ee6eba0e-f10d-418e-8c55-badbef28bd5b 2e5383a8-f5b0-4e39-ae2e-ebfec0c24cb5 a8de0a25-11a0-4a6a-8661-d6ea0a5ad283 aa7e7486-afb6-4442-854d-843edd418b6e cd3fee29-253c-4c81-88c0-b7a8d6d1450f a6d4ffcb-b0d0-483c-b021-707c5f09b2dd c300db97-d9f0-467c-a526-84ee9af2e8dd 4889b5d0-b726-484b-a437-06ea191c60c2 20eab7e9-70ef-4e7c-beca-e10c7f4939d5 5f08b163-42a2-469c-9166-e7f4099cd786 167b4add-2a25-4409-a8dc-91d92161537e 455d6146-e4eb-4773-9643-0ddbf3f3a59e 37c08ac1-f589-40c7-a7bb-31603aeeb571 7e24674a-a432-4e48-aa52-afe474b5a487 a17834aa-c1b8-4f5a-8926-ff2375a2c684 323cd18b-c749-4cf1-ac03-c8daadd9c2b2 61b28bfe-6179-408a-897d-4f0097fa68c2 6ba07277-392a-41d8-8505-f06cef1e0ae2 1df90867-8a15-409a-9fa6-e95d2f5d5beb 06e98748-8024-481e-bf08-0da026ef11d9 864611cf-6771-4255-81a3-e5a4aad469dd 3479ebe6-5654-4e83-9bfb-c1510396323c 5f74a599-a4f7-4d08-9774-cd80317cb892 c728305d-87d1-4a22-95c9-334f7fd43eeb c7435818-5dcf-4461-ab38-d4fa2e8766f0 530b5473-55df-41b0-84e0-3f24361dc2e4 c507f356-16f6-4bae-b0ac-7d3ad543a8ef 71c0b9cb-fbaf-49eb-b0d3-08ee8aa7eaf7 dbf3bfe2-ccf1-40f2-93aa-4bc32d1f5d4f 191e23e7-f9bb-4293-aab6-f0996b7d022a b7da6e30-ce4c-40f9-822d-b9ce6b8528e3 5e698c8f-a127-4235-8860-e8de6712c73a 87805b1e-c75e-40f9-9168-78e7746d5db5 2e11f113-d17a-4aee-a69b-130ae3a0a3b8 eb22ce29-e073-44f5-bf5d-9c9e0a7f8e81 eae4308c-75bf-4325-9ff6-ee316a8fbcc8 23741c2a-26a5-4da4-9904-862c3b8288ed d722d2e4-5a9c-4b2d-8d49-77867e4b4f3f 89a944b1-e81f-42a7-9ce2-481377906a53 139afe9e-827f-4704-bf8e-bf77977b1172 3881449a-a035-47ff-ab0c-4bca0d22909a 1eee883f-1e46-4a54-9bcf-6c2c16cca17e 85e96a59-fba5-4d07-9099-d78559db0336 53cef79b-c13f-4a61-91f7-648d9c08ab0e 19d07325-9863-42be-a43d-f0672259d818 f3946b9e-37b0-4056-9239-1a6105a5f614 190309f9-7df7-4fdf-99a4-e5f474f552ee 7f2cb0f7-e90b-4ee2-847d-ea33fe9191bd f2306f19-f142-43ef-b90b-980dde64a361 36e5b155-9f9d-45d2-ae24-c376fdafdb51 f24f2828-d332-443a-b26b-daf5d018a222 13eece13-dd37-46cd-b948-47f344c1807a 5c64838f-937f-4b58-b357-b5172cd81def 7ed9f2d7-b82e-426c-8d55-2baae438874f 1be7448a-9f46-4ddc-be04-51e9fe17e5f5 a6fe58d8-362b-46b9-b4a9-b7946e796696 468cd487-001d-46f7-8e2a-b00e21a8b97c 1cc84eb7-934a-48ea-a41f-51060bab2b26 aebde424-92b9-4dc7-b94d-58c02583f085 0aed72a5-4e87-4b25-adec-4b8686ecda99 84933a99-20f6-4a0a-a4a7-b81b9f76a7e4 578904ea-2630-4d51-892d-557fb712dd80 aad8e77a-fc8c-4a02-8544-da0e81b48e5b 4bcfb9a1-adba-49e0-8149-0c8d8a84c429 2694fc97-968f-4042-92d4-293dad514924 fdbb5a89-71b7-4125-8144-78d69d695f40 b13249cf-56ac-4452-b125-92dd7ece6836 b677a8a5-93ed-4c3c-8cf6-7e2fb5806ef1 8d801d5a-35f4-4b4d-bcf6-35b7edd4aed7 6cf6e8fd-8b64-4270-a6a8-aceb51f26e90 2a502dbe-f596-4829-8bb8-7180e227e0af 848ea8b8-5550-4c2a-9377-c416ad64943c a2dc6ae8-8362-4d42-a8dd-e082663f75e7 d3c7bcdb-b3ed-4504-84b1-869f8d0ea141 59a6858b-c708-4f47-af0e-8c4d4dc002ef 784ead98-8e3e-4a5d-a6a5-03d60bd53968 dcbbcaf5-47d9-4d17-af80-732f83bd1152 6b7fc2a1-d9bc-4a6d-a2b5-e7efc59a0429 874d4a76-2d2e-4d91-ac39-68ecd82b1704 a34a6e45-2bfc-4b6a-b329-bd82cc1f58d1 ec97d64a-6e1f-4e36-9057-869b047ddd5f 5261561f-a787-4c2f-8671-e2eadd25f737 bfe637a1-bbb7-4e3c-acfc-f3299b9f2ab2 1df5900e-0c76-4790-8a6e-aef90161239f 65367da9-6c94-41c6-a260-53b752e16868 3eae8346-77c1-4e29-9216-7cc31b928ad4 b59b76ca-1142-4b08-ac85-6625506635be 574d8d68-00d4-4b34-b333-1398b44d16f7 d4808db6-7761-4dda-99e2-f54b3c1c2d04 c9329d62-99a5-4aeb-b314-155972eeec78 43aa527d-1cec-42ae-87be-978b182fca9d 58256f36-87a4-430e-959a-3a8daabdd5dd 610b2138-d1a6-43a2-b4da-3790c5066764 7abf9efd-7693-4808-bcb5-e75774ed7ec2 b28bf792-d993-4720-88b9-deda6b6b5489 28797421-20d3-4c68-a450-51fe0a6ec1c2 c4af0745-852b-4833-a66a-821c1cb0e4c9 310d6fd1-937e-4e2c-a5bd-befd1c99e654 107b538c-383e-45d4-81d2-d83a6bfbee0a 25609582-8ccc-41d4-8148-8d05c53ffee6 e30bba4f-0eb6-463a-9015-a89d84cf6353 7cbdf838-957b-498a-9c91-aecaeb58b32e 6a5e51d6-350d-49fb-bcb7-e3284b8500e4 db78fc31-066e-4b04-b829-595b5de74433 68eab574-67b2-47b6-999e-dee6bfa7d115 0c007613-0720-431d-a239-b0a8915baad5 cf7fd464-7a13-4ca8-9f1d-ccf73d3b835f 6b419ed7-90dd-46f8-a033-011d9f1f7e09 a735ff86-c33c-4bf7-8471-7f153a8f83bf bcce6252-847c-45e7-9081-97715afdcf73 68a2c13f-5e3f-41a1-b00e-5118687cb4e3 5969693a-cb71-4166-a79c-e11a21ea80dd 0b5f0c88-9584-47e7-b2f5-d00da4dffad0 b4a7713c-5e67-4c43-a1e3-52f0d049c7ce d66906ff-94e0-40dc-8e25-554438f8321e b1329f2c-671e-45ff-86e9-9eef3f6fcd3b c90e33b4-d0b3-4d34-966a-a3f3e5867869 ce18baef-3407-48ef-9b30-feec70b7a34a 675c2607-02fb-4b19-8050-f17ee88cdf82 5f5351e1-0e8f-4ea0-b0fe-cb9295fa2c06 d09d57ad-f72a-4fab-8201-3967511dda03 0d0cde72-895c-403f-9f36-46b826d2b8f6 efc355f5-9e80-407d-8973-cbf5b1f26c3c 16958ec9-64f6-4f25-927f-d9fec9944eee 83061966-1a43-471d-8516-77820059e099 3a0077b5-51a7-437e-8efc-1577d57635df b9dcf1f1-9477-44d5-a896-5082c0d114ca 0227a0e1-46e7-48df-8278-e9f6f3c05a18 894ce700-97e1-4db7-b02d-2f306b9a163e 1d7d2c1e-55e8-4f3c-bd8e-e5e8d5e3e5f6 21dfd30c-2f96-405d-b11e-73780c45d951 3549c20c-d079-4a50-9b6d-6971ae5834df 396895cb-c83a-41b2-8849-29ec335c0688 d8b63214-7e51-4251-8e85-5a01e9017003 890a8b82-3c07-4e46-b6a7-0a214592315d 3a49d135-ea16-4cf1-9191-7db3e0c90630 fdf112b3-bea8-47a3-bea5-80b95f83bcbb 5edba10b-3d55-4fc6-baa2-616233d358e1 d0da0549-f21f-46e0-ba3b-316dab68a686 284d5a86-9e41-4ad7-88a7-e0e77a6b6323 c4d7dae1-39bc-4f14-ae89-94c792ca3e20 e45b7529-5833-4b59-93d2-d863a4029c59 7b7669f3-f48a-4998-bbbe-18f4aef6b367 f7eea543-a904-4fba-baff-d019495bf004 693de15e-1b47-4a44-9159-497c82b0dc37 257b68be-7b06-42c5-ba1f-ca5717cf8f69 8fbc2754-5f38-4810-8712-fedc0df24100 c1455e41-fc21-4e12-8a8c-2aed87144001 2c9b4329-7156-4905-bfc1-86e16763daeb e5366d65-4b5d-47bf-ac4f-def673bf8a34 a9b2bdd0-efa8-4d39-b4d2-aa7a3c88f34f e192528d-e75d-4804-925e-21dbd4aa7d02 bb61c6e0-748f-42a8-ac0c-5ac89a19b7c8 c7d1fe66-6b2f-4eb9-bd4a-41d9c1d334ef b282d4f9-e21b-4082-8fcc-339bb7359ba4 7eba9a7c-11c5-4a1a-b7d7-638618c1c7d8 856ef089-c249-4077-a3df-a35622b61e5b 4077e0dc-d68b-43f3-8a2e-8fb160bb1792 163d8950-87ac-454f-a17a-1988f2c352e1 6bdf103b-69bd-48f0-9e49-1aa97166abbb 3cfac574-4cb4-45be-a5ef-f08544d8a108 1604dbcd-05eb-4e6e-8e51-c05052843d61 48aee481-714d-4ff3-8f2c-1db0e5832bfe cda6848d-1bf7-4014-bbd0-32c71fb9c7d7 508a0c72-2a8b-4636-bcf9-cb0d228f69d9 372dc662-ead3-4539-a8cd-f22442eb049f 3f7071f3-368e-4e01-9ec7-ce45fb902527 b19b6246-4a1d-448b-bc29-ed05bc4eda87 c96b64fd-df65-4d4c-b05d-f8680a5ea019 e1edf004-3597-4128-9152-1f2ffee7302a 58767759-00b4-4a0f-bf84-b0effa0c8efb 38b4f6d8-e4e8-4e19-a06a-88be0a963656 b879fbfa-d5a3-4489-9137-2adfd565b18f 66e4b281-c76c-44dd-b22f-60b5a77436c7 9b083506-1032-4872-be01-13aaf6a5ac80 b16443fc-7f36-43f2-a6d1-05fe6b5ba6ff 25d887a1-3d62-4977-8b98-21b38072df1c a501739b-0e3c-4615-b152-63546f87408f f09e7260-1731-490c-a4ec-6f806a953281 b1188444-092c-4d56-b25b-13cb260d2116 f2c32f24-1ff0-4a18-8fea-8d0d18aaffee ea293842-05a0-40c6-b364-27da85c5b2fa be4ce00f-ce9c-45db-affc-aa5ceaebdf6b 90474ce9-8590-4b7d-a8e7-842ea9969bbb e065530f-2142-4cb1-9c31-743dd7e02bb7 e2cb1da6-61db-419f-abbc-6c6ba3c932a4 99dd9edb-0b39-4605-a58a-fefe5ad9b0cb 9e30cafb-6fce-47a0-a5a1-4548a69975f0 e1440119-df92-4241-914c-852124398f99 80078b75-c0ec-4036-bfa8-0309223aaf53 8cd838d6-86aa-4d49-9bf6-23547dd2252c 965651ec-9314-49e4-958a-3b62263e35e5 bcc6c254-a1b0-45a9-9c1d-301a32bb3de5 faa75aa0-3561-4783-b89c-ed09e371a9f8 a0c39fd8-b6ee-47e7-bcf6-27fb6e7d8d2e 57551002-41e6-42d1-b818-3605c5e6d759 7fa91a18-12cc-4bf8-8ab1-bb6ae4080c06 fbba1f75-2838-45bb-9a60-e24efebe74ab b30942ed-fd73-45da-8c3c-e64b43bdf2a7 8d3f2893-ef37-4076-ae1f-0286fccdc0e4 5bfe1dfc-75fd-440c-bae0-4181994f30c0 e4a6cd36-63f5-4e27-aa2b-c91f0810729a 0c65c446-c465-4af8-a9ff-410cd8ac3271 45bfd036-aa68-4b29-bb02-ffcaec0be966 d0eb0649-8cc1-453d-babf-454ec2e6336f 0b6ccc48-e51d-4a5b-9671-69a03cc65d25 821c2526-7231-40d0-a95e-abb72b0c082b cb150331-5e3b-49c4-998f-7ee480dcf921 1f71be9e-822b-444a-902a-af107697e777 e156d25b-5a6a-433e-9ec3-b0f67871a32f 9cc517bf-ab2b-4c8f-8293-eb7cfa1310ff 5c6a83b4-43c4-4fe3-bd24-db696d2d9cd8 19314220-0ea2-4239-b51a-0d95ff73f426 69da1e92-f39e-4d85-9d56-4b452b9eafdc 292c8fc5-238b-48f2-b754-65ded0a881c5 76085ddc-481c-4b43-ac54-eadbc7a15667 25030764-a851-4ede-8419-d8d704a798df 926af388-84e5-41d3-aa22-41b7db331b4b 71d45fc2-89a4-445a-aafa-0393e0e41ce1 dd9a344a-fea3-4895-9ed5-b690c631f9aa e534e9f0-5386-42e4-a6c0-e8d742ae2ea0 470287f2-1086-4491-83ff-cbc4de06bdef cb2d1851-0018-4597-916a-961c8c29cf78 6c9c26e9-36f6-491c-a822-938ab970ca59 bb510a9e-651d-4f9b-af6f-8c72f99e28f3 de9afbfa-8f25-428c-8989-6c84b2590365 66efecd1-c361-4f8d-9ec2-ac7e3209f557 d0a161ad-8e86-4752-9061-2c77fec7bcef fbd1b56a-1ced-4092-b279-43dcbe1f4a33 dc821a0d-aa86-40ee-85a6-902dc14eefe1 1ba2607c-dab2-4a03-bbe6-8ef3aad27049 909a48aa-2088-4204-9167-51afaaabbdeb 6f920605-5a8f-436e-81fa-72527bd22505 663ef1b5-2293-42a0-91ac-75bd2ddce025 a8cd6bae-14b1-4837-82bc-25275cfdd5f7 a1a2cae1-9d7b-418c-aa0c-13f0bbe6b181 8489ea1d-1941-4be8-93c2-0c86ad2596d9 9a59f8cb-b102-4916-848c-ec84b0d5d69c f6026221-8430-4948-9599-f9856238080d 16c133a4-b73a-49b2-9089-de3f260db991 2020af53-1634-48e1-8707-b964698d25c6 0e101781-4036-4488-b1f2-76163cad146d 931d54b3-503b-4a70-a788-022d4d256442 8218c389-6d73-4313-8865-172adcf50994 733f35da-f9c3-4674-9682-10fc4a5a7ed6 f0c0be33-d6be-4455-9f0d-2836ea784108 20345b98-90ad-468d-a6f3-36807fbd8a1d c88c40b3-c0f6-48b8-b018-66e6cbf5f26c 54e967c3-5095-4231-ade9-beca4e9d4112 95cb188f-dfca-42f9-822d-41b531d3dfc7 903bf775-668d-4702-a4ef-9088b4fdfb02 701ae0e3-1cb7-4764-ac18-3a735a5028f7 c023616f-8f37-42cc-b667-ff0ae8e6fe0a 2d673b2d-4e50-4712-9b91-e60066888810 c7f40ccb-794e-45e0-a021-f4b84b97f949 6ce6f9d0-0754-44d9-8f43-c12099d2dde1 5b213133-3942-4525-9e59-263452232fb7 ccc8dc70-1940-4807-a06e-cf3808f49f57 248969e6-1ec8-43d5-99ee-96ed6ce529c8 d9f68556-01ee-4bf0-8c0a-9d06b3c5522d 95216498-f4e6-49aa-9218-79c126a4f7f7 a3781e54-cc32-46ac-a8e8-a4313e3d38d6 ec41b0ba-536d-455d-9ef9-119b8c605daf e9d04158-18f2-455a-92aa-c09bb25ef6f1 e42d6e80-3077-4a2b-a514-fa0f3b3d261e ad8e822d-61ea-42db-8d65-d54b98887d37 f4bc67cc-d473-4ded-961f-e2415319f7a2 8391e46f-673f-469e-8125-2864a6401600 f7602133-92a2-44c6-aca2-ebdaea716260 30a79aed-8da5-4e15-8b64-cdb62e2bbe2b 4229324d-8405-4304-be49-58772386986a 14a7c911-b61e-4559-aee2-941545d0f118 2f3ae6d7-f779-4d0e-819e-dc48379403cd 1bfa656e-5f3e-46a5-bcc8-7ac03bada2b6 1db229ce-abfa-4d72-82ac-df9c157dc5b2 9cc54494-e1b7-4e9a-82e8-9e7de8484ece 79540b52-d678-4b5b-89c0-0ef258c5043c 823fb86e-85e1-4143-8627-9a6b6662c84e da1f8f9c-82f8-4871-afe2-1f9f761768ef c9418ff8-649d-4093-a659-adab9ecc7376 89345db8-5f61-4836-869d-ded544e03dc1 744c2110-d91e-4b73-b175-c97ef6904d8f 6ae3479d-97f8-49c5-8270-a851109630c8 0abdc8ce-7239-4394-b219-f79139f15dbf d7894d4b-bd62-40bd-a5e5-168821093c55 c23d0c64-0c71-4f21-80c3-cd8bbd5bef0f 5f4969d2-2260-454c-aa3d-470a34b2b8a4 481b97c3-1e56-4878-a0a5-a50ef7b0d76a 8bda8d88-708f-434f-b52a-c8e4acebfd06 e85ef145-c3b4-48ac-ac0c-369d6f32bb34 23728a0e-d208-4501-809f-c40948fd6a13 00c2615b-38d6-4166-a7d7-311b6ad1454d 94717d30-f2cf-45b1-901b-75e556dc8aad edc5b154-8c85-4f4a-bf7d-7c4e51a59d41 994b3326-bf86-41b3-9706-1518efeec6a6 e6d51acf-dd6f-430a-8d54-4c3fbf63ab83 248f3f18-4b59-4580-9cec-386ec5245b49 371e10cf-c2f4-4e50-b4a6-76f24c9ca616 3d8c35c6-dfb0-436b-aaad-b3f261931af5 6406246f-e5ec-4b94-ab98-c60509787eee e6009c52-a8b0-465a-8008-cfcafa2c9f84 836ed9b4-5e6c-40ee-ab55-b8446f805e26 f4e7e5c5-0723-4cfb-871a-a503e414b130 bb0f5fe4-b406-4718-9337-3c205136bea8 72417c1c-9d6e-4110-abc1-b507ae6f257b eb769cde-ca37-4444-a072-ab87e82dd8cd 7a4ef202-d9f4-42d5-b8b4-7d98721f36d6 99b560b8-7197-430c-ab23-ef54cf8a3484 4698850c-cc31-4ae1-9413-1c864111a82e 37e8300c-4281-4a9e-b8fd-97f0797e1728 b0834d49-afdf-46c7-9759-c3dc3b973ed5 d75c4d3e-baab-4dbc-812b-83fe05730d25 b3566f87-4e72-4341-ba34-8e9f4205b81b 6a807f96-0409-4bc7-a188-71f35fe05668 bb2cf6b5-6722-4121-aaf0-cf0dd9a145d9 7b5739ff-97b3-4021-b637-d97eeb4c0445 27bb8494-694f-432e-b081-d18e4cf4cd2d b32dd717-abf9-459f-9cfc-c84bbf199049 f7d49c2f-4bda-4f91-8395-a95e4a34b067 0b3ad428-94be-4ab5-b761-307872674d5a ada5d239-e073-4879-824d-bc7bf605a0b5 d6cad6a1-4fac-4c87-ad94-8d4e9fd7acf2 d84ea08c-0b9a-40f8-a88a-3405ed4a6dae afa67586-ab94-45f4-a46c-ad75fee8326d 45d2a1dd-54aa-4212-bf0f-9a1d8898c83e 3f9d4c9b-268f-4dea-8c38-877c02e6c1a0 dabd6b5c-35d1-4f72-b89e-debff2df742f a1cb98a6-3b86-4ade-a55d-618432e12222 18cf5bb6-2a95-489b-812f-71302a997dad 980725b2-4ab8-4cad-ae0d-edaee1b2eb29 3c44feaa-4725-44f6-8815-f9c9cfea0934 8a406d16-a61c-4787-88ab-61931c29f974 6abfd7c9-dbc0-45ee-9665-cd9a2c2ffae7 5797e96f-0a9b-4edc-87fd-137051266b92 bf917dee-e2c2-48b8-a4db-790218cd5e3f 7af52751-ce18-47a8-87fa-30dd61a01c6c b75f764b-87a0-4701-b208-5f16902b3896 fd3aa1ba-a9b3-41f4-814a-b3708ed3f381 bfe79c4f-acdf-435e-b34d-c816b5fd8e2e d3a8195b-8273-43e8-91f3-607dd973c47a 17218577-60ac-402d-8792-8bfb269c5dd7 97b14607-06e1-45bd-b0b2-f35facf679ae dd0646cd-84d5-4e81-af3b-748980cefb4c 6d1d5c3d-13d7-4484-9385-66c25e20cb5a 0f134cbb-3a49-4dc9-b09b-9c20e01b552a a3a0de50-44e6-4563-869c-745074f950f8 107bf254-256e-407e-a723-c3f94feb47e8 8e5c94d2-0cbd-4dd0-a211-85b2b5fc0955 4ca03bd5-22f6-4070-a291-bfc9cf23153d 2bbe6cac-7fa3-4a00-94d6-3d5217226615 94fef1ed-b9a7-48b5-a622-6c8ac636c14f baa66aa8-8f88-4929-8c20-60ddcc362655 2f654866-705a-43ae-bcce-09e4703c4cfd f389a7da-8535-437c-bd7e-520b69688389 19b34e86-5720-45db-a1c7-9afc37b88fe7 feefcd0e-370d-4a3c-ad7c-c827975af701 2aa40de6-2c2a-4ee4-b241-d64c22387255 a2550a74-4bc6-432a-8f8d-94054d5ade66 288560a9-8d2f-4d6c-a958-e49c3f8221ff 860969e6-2d1e-4c24-82c7-86fd0e9a109f 69b4ff65-3315-423e-be5b-f5837a76c131 ace9ef13-9b9e-4df7-a5f8-406522fd22b7 c0c3b0f4-e30d-4448-9b38-75ef02837c28 c4dd6b82-726a-4778-a820-576708d11cf9 d0d10947-2299-457d-8d6d-5b8cbb96a259 45889ca3-e6cd-4fc8-a103-66745d681e30 f68c2512-65c1-4c6a-ae45-b347eb090ea9 8f5c7ffd-8266-414a-837f-ab79c9f7943c 96d0cdc3-9ded-4f71-bed2-fd60c61c9e10 52f05634-63e1-40ec-8c7f-6a20198b6df3 d36f8eda-bc24-4048-a64e-95e4ac4f10ce 025f8409-004b-4f4b-98de-0215ac333afa bbabd57c-e7b6-4597-9088-d251a5e23492 2ac661bb-5a8b-4b7f-bdec-0a8d5fe81ece 996731cf-1711-4983-a36c-7103bfda2563 850d4c3f-884c-4176-a172-f35ad73ba41b ce0afc23-e9c0-4294-bf13-a6dc9f7dafe0 dd4c7ed2-6081-407d-873c-5de50e35a35c ebfb7329-920d-4a0b-9ff6-0c28cc5cfeb3 6abb16ea-8c96-4f52-994d-a14267fa8d8d 5837944a-d6d6-46c9-a406-9bd840491d51 ea52d5ec-f388-41f6-848c-0638693fa36b 049d0f7f-1941-4981-b7d1-d75625f9dcb9 0fc48fff-9591-4234-ba37-77e0b3a3f871 55309f5b-a75f-4d41-8fba-1d364307547c c3efb3dd-8424-44b2-847c-a58f7ca6134d 079d6165-e832-4be9-a67d-e167fd78ab40 a49d348c-a246-4206-baea-c01203a21048 ff3c3b90-d963-41fe-b9db-138f3f930c87 10133a31-0fb4-4bf0-8768-b6b1d68a5e36 8cd877ec-89b4-4755-9ce9-06946fe8cb3a 45043ad3-5e42-4d4f-8c7d-e3acf8120abe 226db8e9-a5ce-41bf-b3ac-6e1e2fddfda8 7b650e2a-54f5-466a-9172-a05db5ad0d64 20f472b7-4523-46b6-aa7f-600220bbb771 e594e759-f2af-417d-95c3-287457a2b8d2 9eea5803-293e-4ec0-b84d-8a45e0932fa6 38fafa1a-0fda-498e-b46b-e7e26b3373c4 3b1faf3e-01b5-4671-922c-420288c84794 d08a3acc-4914-440c-82b0-4f3f4a8687c5 c27bcfad-1972-4411-a606-584c118a6f17 23111ce6-5972-4912-9737-a35cbdb0f9aa f36754ba-95be-461d-9458-f4acbf0c03f4 d808d332-75f3-404c-99ef-ffb760ca77e6 aca56956-438e-474f-b64f-d4fd05d86ee9 74f0c001-fe1d-4d5a-8047-6ed488cfaedd 3a11c726-7d7e-4db0-8702-db3d02091842 f170e90f-d480-48a8-b3ed-f48f2050ca01 0b35877b-fdf7-4eb3-a84f-da28f4c3b001 c4ae9876-9b3e-4dc3-926c-c0a50a5c7dc6 650b8238-5bd9-4224-a2cd-d352e3f838f1 f39a7380-44a5-4e50-aac5-f6ab1706c696 489f83d8-7cda-40a3-8438-4cfe12a5fb83 38f8f5e8-e15c-4bb8-8888-cd06d827d91d e89039c1-1c7d-4640-be66-4a06b711dcac 3a26e242-b974-4400-95d1-41108b679d01 08208f16-804f-4cd4-9c9b-20e45782ed98 a7b81a28-ae21-4caa-8297-195c3bb1003d 365d899d-c679-491b-b0fd-eb1e8e7aca93 f86b901c-d7d8-4113-ae53-f02af1ed9fae 682cd129-b94f-417f-adce-5378a4b1b461 962bbf3d-4eca-4e92-910a-40ca8591ae97 c58d700e-09c7-4a75-8227-47bb679c3aed fc70afd2-1bce-4651-89b0-47aa6d633d85 54b86118-30f2-41e6-85b5-22e2f21c85b0 b756fb9c-a816-4b10-b585-5376518c493b 845e39a9-89f3-47d0-ae66-f5917af3caaa c656e4b0-34c6-4593-a0b0-9e0910e7f5c5 c9b05a65-7efd-4512-a5dd-4385d64c96d1 1d35319d-4095-48e9-a508-8ddb8ec8393c 2c068119-c9ca-45a7-9b00-c075d5bff1d9 eb53b111-5bf3-499f-888c-5c67458c8c1c eed7bf90-b787-48e1-8833-a041d75838ad 7703622b-566e-452e-8314-9706b4a36c92 f4bf6871-4f02-46ff-acbd-571d14945e28 147a5d07-c61e-4129-b5bf-3ec0b5969453 4beae7ff-db44-47c0-8a3e-6069d66f3668 2440ef79-c827-43d5-9c27-c72a6ee500fb c3dbabe2-7c97-4ba0-b194-423e7241a559 81bdebc7-be26-49a2-a437-e560f08d39be 16aa7f9c-2b4b-4264-ac5e-96bdda5e5ebb 26c7fc2f-986a-4b27-a870-86e20c01cf97 6e779a95-b42a-4dd4-96db-6ff2946ee9b9 dcb010e4-a56c-4463-8bf4-84a6802ef756 6a6a0d24-e18f-4525-bfea-b88a8b0d44d3 74edfba2-de6f-4c9b-8c4a-442bd821c501 ba2d714a-ae33-4c85-bb53-77cd96dde4b1 1a2cd152-8bde-47e6-b5b7-e5357450ad71 72b103a9-ce43-44ec-a2e8-afaed68f031c d7652172-2db6-479b-80eb-565d0510ded9 05ed0867-243e-4dc0-86c1-e07761cd1b7a 44487150-747f-4001-a74f-3f6f4ddd1678 f96fb3c0-a5af-4d32-9b40-f5ecbc03d8ac b95e6aa6-a759-410e-951b-8ac923094de9 89e90675-0409-461d-825e-4c7d0c825ca1 2a55c2ad-a2b6-41fa-af6e-1142b3efc9e0 ac7942ea-10c0-4264-8fb2-4c1ebfde88ca c251768c-ffbd-44e0-aca3-f57f969b9fdd a3ebfda1-047b-42db-8ee1-67066ed8f733 9ce61087-73ba-46e5-8f98-46659581d6fe 7a4cf008-eb20-4b8e-8645-041efdf6e28f 5cb57ad6-94b0-4070-9f01-3ca9fddb6925 2436d194-2bf3-475f-9649-6769867ad47b 738d4c2d-8d57-4ccd-b9c1-06a388e43e48 c82db810-81da-4927-b36b-93d09e27b624 24fd16ff-f649-47d1-b8b0-7c80ecfd6bed 4482de5c-83ed-499e-893b-2148169d2b7d 378286a3-ec4e-4f08-83a0-cf8c12e7c763 0056430f-24cd-4726-b8e0-7f04962495e1 bceb034d-2f6d-426a-9e9e-b869cfd2617a 5479d6bf-931d-4940-9dbe-e55cf9ad24ac 2a7256ba-1fd1-4126-a1f3-9e8e593e7578 fe662496-9d60-47b2-960e-bc69c61a45a7 f6bbdd84-bc48-49aa-bfd4-7c431d51739d af09e30c-70e8-4425-beef-814155bced2e 2bdd3f45-89b8-431c-9432-98b635dd7a7e 5d2b72fb-16e8-4c58-99c1-f7a06b5a659b 4aaa1720-2531-4d58-973b-79f67072d011 485c9c50-f565-4133-8b36-a8119301a02e 01af5d21-cd83-41b4-9243-bb7a76def511 fe6aa443-9b75-4bf4-9241-1d13bd225de7 71cb6e8c-b928-4873-a632-8b010fa82f6f d38fc4cd-8f2a-4204-9a09-a04a4fb0f7eb da7cd287-0276-4de8-b8e5-5a8a52e09214 8137c7cc-c861-4ee3-b147-ef9f9f3ec8f9 e20ad81b-2ee2-4728-aef1-4c3e329540fc 5533973e-6e9d-4f78-b74b-b3ad0bef6608 e371b846-161a-4fc9-b4ab-156d2450b47f 96c630d9-b564-4156-a855-03a6787fc813 42b82d45-9576-4a82-a3fe-60e7135792bf 5a03f485-dc89-4f0e-8185-c4a7c6597598 25976519-c8c3-4df6-af0d-addf3705af4a 7c23bec3-9722-46f1-8a38-23bbf91ca0bb 0e9ca7c8-a275-41f2-a5e8-16b49f8aac47 7755b80d-4503-4041-b0a0-342c21bb22e4 25661278-5475-44be-a5c8-f3e30858cb13 1eac7371-00ae-4c68-927e-118801909f82 3ff20def-fe13-4c68-bbf9-4c4f8a0e26fc aeee3167-3488-421f-a1c6-45c815576b52 980d86d2-002f-42e5-8d04-56535d389147 456bef3c-7a02-4b31-aedf-d36ca69566c6 fcfdbf9d-25b6-4574-b301-9463d616113a 6c5f1a91-c9f6-4d06-b9f7-7922520d8694 31d74ec5-f19d-4837-ade6-4cd0f2f094e3 9b796e8f-356c-4028-97be-2e604e2bf1ac dbf59158-55d0-4d03-b9af-9053520df446 4741e73d-65d6-4b39-b96a-a352710a4359 a06173d8-03ea-419a-93f3-cc84116d942a ea03e5de-120c-4617-a5bf-f8abcef57b68 cda94e50-555b-463c-b320-23281b930b04 afdbee5a-3df7-48cc-99a6-14c033e91e87 61f519bb-4238-40e2-b325-e4fd3969e41d 603861d3-7661-41e0-a393-ba54d7b5237d ffbd2183-ab5d-4d6b-a92e-6ab92d59d151 fef0c4e2-be2f-474e-bd4f-677379dc9443 e2548d59-c548-4dd5-9b9c-6328720daa46 ca2c80e1-a4a5-427e-a05a-1dd404a0add7 0fc2d2e0-c061-4aef-83f3-e42afe4311d4 4c2e02f4-914d-41d0-9e1a-ff7ff2f1ed60 f767da20-6d75-4086-aaf0-f7af05ab13f5 ae85f88c-75ca-4e6e-8d08-0ae17ed12e0d 31e26531-b61f-40a0-a03f-d3c1be00c1a4 f00ca8ab-a1dd-40e3-b847-95af07db4165 492d2f27-e1bc-4bb3-a294-3ebc9771f373 815b9367-ed26-4d95-b2e9-e4aa2294eb53 25618a34-3f91-48cb-a5f0-fd0d86a5496d 8cedcd38-14e0-40ce-a26a-33091095f7aa 88b12eb9-17a0-4f54-bf98-319aa1162ec1 811cecd0-a257-4705-9ebf-8485902b910c dd038db8-a706-425d-b023-c0907cc82fe9 0e6bda51-17bc-497e-a324-81e20fe4de25 14c29e5b-1fc3-4c6a-9407-4b9bdec769e2 987780da-1f50-4a54-b6be-4e5b98da2293 67d6a00a-10f3-4fdc-b03b-dd66dca11bb2 10982044-11f9-4b21-98ce-f1b7bd6e58e1 355efef7-edd2-4fa4-a6b6-8b1c8f022281 50a61044-cd4f-4c05-a25e-91a965cf96b2 9d19a2dd-4a6a-4acc-9347-ba89b54775fc f03a6f29-bf2a-47a2-a4b6-92762f1de0c6 da56e7be-7c5d-487b-b374-41af9bb1aa64 ea65beb4-5244-43c1-a0dc-24ccb232d6bf aab9888f-ff8e-4a25-a60e-79ea86694a89 5f0df66d-f978-451c-8bfd-cff1f1bb1497 1211a3c2-27c7-4169-a4fc-2adbaccb3f32 10dedc25-e598-4c1c-8322-7e32d6d4c49e aad42a0c-e25c-4328-8b33-0938db47b6ce 4de6fc79-1d58-4b9d-ad8c-645ca3c137d8 505f1db8-d23f-4fb1-98f3-cfc3781d58b4 216aeee5-60bf-4394-add2-1164ac8e9d7b 90b32a76-e61f-4358-8231-2f54cb9c0d6e 7908feb6-bfab-413a-a2c7-c66365b06f9d dabf2c83-e4a7-4793-a788-7982a965303c 03ae9a00-bb09-4477-b5a2-83ec806927d2 ab54811c-d6ff-4b28-b3dd-ce2df8105cc0 5ce51bc2-67aa-41e3-ab4b-00342fafff25 99a59b8e-577e-498d-a8c6-6e88ee42ed6f 6aac1e45-0f8c-4033-88c2-2577d7b82a64 20d70fa7-07f8-43ff-9228-d0c6787b43a2 ac159596-6a40-4778-b605-381e1fa1cd0d 55a9cad9-4a51-42a9-9e2e-c7a7e12f6b46 d5d8d07f-78f2-4fa9-85be-0aa529eac777 2980cc06-171f-4fd4-8300-56027c047064 7a150051-0af3-4061-9879-ca5cdbbed646 b95b4b8d-f3f1-4ac5-993f-52ae9a956a14 5180a4c1-ee9b-4c92-b014-ca01bbc70987 1bdbce37-d619-4fbe-9468-a834ca5e802a e39f1280-4f67-4e49-aa5d-dc768afa073c 8dd169fd-5ff8-4946-8dcc-8b9ff9ee32fb 40430c54-648c-4ebe-8bb4-db8c64bfdb3e 8d5efad2-ab3c-4c59-8b87-700c86a80052 92910ce0-e380-4bba-a110-edb979401abb b61e8b61-67bc-4336-92ed-25b0c4f90378 db9fcd7b-7643-4441-99ac-f56617ab5275 dc3017b7-bc24-4452-9d63-7f60f3e82764 9a16b34b-c292-4748-a723-55a4a06d0f2b fcae34bf-a1c7-4056-9b7c-19e4cae7cd61 4bfcab84-ed32-4aa2-971d-5f931b2a538d c46db9ae-5734-4430-b273-45a567786a13 54ee9cbe-c219-46f6-85e2-fccb2ebe90c7 fed44b26-100b-4eb1-a337-9a19bf235d41 3cf52688-5e68-435a-9769-268a9641c80b 2055a67e-4af7-45c0-acb2-047dc7f5b30a 523854d3-02e9-4ad6-8b69-2afdf7f2e8b7 73ef6e67-036a-43af-a10d-cd7434bf4f0d a79168f9-4cf1-437c-8033-7064f6c3f040 fa5cebd7-8d5d-487a-9556-eb033124aad5 7c7eab2d-35e3-4221-b5aa-5fe88a712c33 c9969ded-e8d0-4412-a2d5-27a31be6a4fc 66032c67-1d3e-4bf0-8323-21004fc66977 f8bb205b-8aac-4e53-8aab-e141c3a6acee b00db948-4480-4211-b0e5-85725a9d9118 ea201744-6fab-43df-be1d-3815fc82e7ab 721f7a8f-34b7-4885-b490-5ad74a95295a f608395e-ad3f-4fe9-a767-88a578ea1cd0 d4f44363-a95f-41cd-acef-e38629ecec14 8df82d47-f3c3-4511-905f-a35a0318791d e525acd0-ade5-4936-89b3-cb81fd1da045 6883af1c-bd31-494f-9448-b86a2a79e690 78299766-5862-48f5-8206-812a2176a365 a516c985-0a11-4d8b-b6d3-11818ab1e211 d7b1be12-5e39-465c-a6cc-beb3ce54e051 f2be03bb-c80e-42f4-b58e-2981f270033c d412b4c7-e4d2-4756-9bf8-33069907e4d2 4ec908c6-ec43-45c9-ad51-52ae3ef6beae 0264f8d5-6cdd-4c8c-9eba-7c659e6e93ed d19a257b-2bff-4eb6-919c-dc56205c43f6 7562a829-a854-46c8-a62b-e1b3e8a5ba60 4f86b7be-8fed-48b0-9d92-0bebcdece4b8 25e0a415-f513-4f56-b6d8-b676dcdfae3d e80e94d4-8539-4cb7-8a6f-96ce0760f423 fd3f9e60-5168-4def-9b6e-4f950976df11 290e684b-9056-43d3-b8f4-fe4df2f54144 7689be8e-838c-4967-b704-4d4fabd813d9 c158db46-2694-452e-80dd-66be5d3576ba 183b98e8-f691-48e6-a096-eae0b0f24eaa 60677438-8cdb-4757-b5cf-54a81d1a1ef8 d547714a-26ae-4adc-bcb7-7c01e4288b57 6abdb131-53c3-4379-9936-88726f4993f0 fd7c95ce-a83c-473f-bc02-184c71a7c537 a0a7d33b-038d-476c-aa17-823a3e328dd3 2d99801d-5fac-44a7-9d66-2ae0b5729d72 e65fb7ae-3b64-4890-a14a-07e598b7c063 1b3033cb-3b67-420c-b854-21528fe14591 118a70da-3b06-4071-8073-42045c401865 6fc2680d-4c6b-44fb-8943-5bb1b7b1a31d 02aa9522-a963-44c0-b373-3b285a5ed0e1 6bc50308-ad41-49d9-8800-8d21ebd30b99 db101383-e953-46e2-9cf0-527bdd01cf12 75cc16fc-6e42-4ce2-8d2b-722eab1d9c11 46127d7c-bd91-4321-bb52-c21034208723 102db2af-09f5-4624-b5e6-797489e8892e a004e79d-658f-44c8-90e6-26e2805abecc 5357f372-78dc-4c5a-aece-096113765d4a 46e2508d-d800-445e-af60-85cb42adb11b 5c961806-97fd-43a2-8650-89a18fec5e1e ea37b0ea-28c6-47dc-9dfc-927441658493 b390b398-9e7a-4cda-9f54-be1fe7a136f2 968da5a4-f092-41cd-8478-0e42ae82fcbe 8e9d1c17-274b-456b-a135-62c817c7776e 24a7d7cc-0b38-48c2-a35b-0edf81de9ff3 28dca5b7-20b5-4847-b1a8-2d10f14f365c 9890eb9f-c7c2-4420-876a-e57babcb9f17 90426ea7-72d5-432d-b314-16ee1ccd6081 bb58c263-597f-448d-b166-43633b03274d 97bf8320-ffb8-413a-9cf5-2dc1e9de71b7 c8b7414d-6a5f-49f5-b8cb-dca07a556d87 da8c07f3-7979-4e14-be76-56ff16a2c7a9 0e02999d-966a-4e1c-8a58-e33b4a7a5648 0a643a22-0dff-40f3-b473-11c87a186e81 6577b1db-33ad-4a0c-962c-779c7b37889c 7ff57560-f195-4891-9e9f-c037d170146a f6926435-9408-4d90-9e9f-20ef59b48f44 fa28a886-505a-4f67-8859-408d959f512e 2699c565-5589-434b-952d-c7bd5576b87e 1c66898e-a3ff-4413-874a-e0f8283782aa f20cb3c8-65bb-441b-8fd5-2a82a3c35e0a 4672cc42-3e9b-4444-ae54-e8c6cbf12603 794f679e-1f3f-4fe9-ada7-79b247b6f623 29d5cecf-e4c3-4b68-b62b-e403ae8beca9 451bdd69-66d5-4afa-9ed3-575fd465e6df 2d5e0108-2cd3-4bdc-aab1-6af4a1d926e3 89fb0e74-118b-4768-9c45-78c47169298a 36dff60e-7b3c-4455-973b-fb92db6165e2 baccbae0-149d-420a-a1ab-dc7b9d83fa73 f9e2acfa-a16f-4e80-accf-eceb9d20fd8b 31761110-840b-43d6-b5bc-5787078e7afc ce6af4da-586c-4a51-8541-2243dc9a56c9 6800c7bb-c5bd-454d-aedf-e2fe907e84a2 253f2c99-faa9-4839-907b-30b9223f76ae 004d7a30-a84d-4616-bb1d-833cfb41a066 7d93fe6d-ec60-4c3e-82a8-7eca6975c06d 0a758f4a-62d9-4fba-bec3-65faa57acf77 d19810c5-39fd-472f-8cf4-4c9b3222d870 4d2404d6-9c55-4f51-b5f3-0a613b0d65ba 06dd2975-cf6e-403d-a545-34b1f8830ee5 64f3da88-0746-4a25-8026-54de9c3aaeff 8faa2f8f-f439-435b-9014-2aa6e196964b a684c884-5b72-4fce-b193-85170e95891b 551d2dea-3420-4ec4-a92e-9086423b52b9 50c50493-d4f0-4813-be38-3ed3b825c0d7 ef7fd8b9-4a35-4315-a037-e5d466695e0f a14338e0-a093-494d-8dff-64dbd757802b aaf0b446-8502-43b9-9a75-4010ef6322a3 87fb2eb5-d5e6-4225-9b21-2e647b6cbaad ab0b3843-0b80-481f-ab0f-29d55c0e4bee ab6302d7-1025-495d-86f2-56fc6cf8f2f7 a176c90a-0638-424f-b166-6bd75a66f82f 352e6132-b530-455b-a6c8-9b4b99b53e7b c06499b9-22ed-4f28-bcad-a1b271bbf03a df4b07d0-8bf3-4c22-9cf8-4b8ddf8959ea 236e537d-66ad-45f4-98ff-a3b0d386c040 2667dc00-ce1f-40be-9ba5-9a71144d6adf 99fe1b5c-ac9e-4126-a730-ad215185b8e9 57a5d971-f6d7-47c3-a9ec-6cc72589176b e6ac3edf-24aa-4746-8179-3f5315d00407 9f005eb9-a2fa-4b36-985b-1a07bef6357d 1b508e18-a217-4b43-8f23-a0437d090c28 7ef5c8bb-9a81-47d2-8f39-3d70770e2933 30cf348c-89a6-42b6-a3be-40763243427b 3e554379-4c14-4ae8-be6a-c3330a1f5013 54cc2069-7b2e-4baf-9ef0-621e2d764c65 4ad9d49b-1887-4839-b352-8dad883676ad eddaaf12-5b98-4cd5-9d69-02b207ca30d4 250a52c2-dca6-4622-9eb0-deefdc61460d 43fc6f31-2af4-46d1-8bc4-089cccc498f8 69bdb4c9-63e5-4189-98f4-caad594dce40 ae454cea-ba9c-42d0-a430-cecbb71b2276 aa5a4921-86a7-4863-b880-2ec06d9469b8 0ac55b45-e203-4ee5-9c0b-2347e4cdc581 52ec88b1-7eb4-4934-973a-00edf5294bc0 aa5cbfd5-53e2-487d-be9c-bd40b8073fd4 e4bf8d8d-89a1-4fcc-9b05-5e4962c6c603 6c0e3ad7-6496-4a36-a0f0-5998671a5a16 9ed4b5c6-c5c9-4f5d-993c-e39de5472e0c 43095d0d-081a-4618-ad78-5eeeda8fdab8 9187e206-97cf-4fc0-9f74-576055df0f1f 7745f4df-7618-4812-a64b-8892a66b3622 89efb88e-9f2f-46ab-a443-abbff600ded3 11d6c804-eea0-4cd0-ae19-e8bbb5fbff40 093547e3-8826-46d9-8beb-e5e40c09ed30 c18fed28-b285-4a18-893f-e6d707d4a318 0ed83f60-9ec6-47e0-a9c6-1f750c66ba66 05c261b4-4771-4832-845d-943d06fa026c 61bbc788-91f0-4de8-9fa2-ed4ed6c13f57 e7fe1dbc-8874-4380-8853-cb8d9cf55f07 0c6b2ca0-18dd-4b76-ae94-d78652b61630 69f2acaf-4ee0-4182-adf8-e4b423db7888 b7eaa89c-2245-4cef-b955-42a40f7b2cb0 bc116c36-439d-430d-9c37-e38db665e69c 25988950-146b-4774-bbf2-69511c35565e a77d0047-1d5b-4cce-87f8-d80d34e04fb3 97d3bc55-3dfc-42e4-ab4f-26a96aa23bd3 a772e622-526a-4891-9a6a-760bb5fe3738 76e4b180-6d75-484b-9267-b38a6a46c5ff 97c61e66-983e-4caf-9756-251dc1ffd7c9 b2b3f881-a8e6-434f-9c67-8243e98a26e1 42776ede-e719-4566-8cb1-d22ca191b02e 28fffcc2-5885-4db9-af51-0a8e04ff675e 8c6bd0f0-4eb9-4c52-a239-ab403b961b55 e8e1e7de-a5f7-4b44-8400-811a058e940d 50361995-5b62-49b9-9e7c-05a1eeaf000e 5fe699de-30d7-4566-9406-8663eb00fd7b 3aea3b22-b252-46d3-ad61-2a6a9f6b2564 6b47560e-acda-47d1-9c32-d18988a6595d 3526b19b-1211-4428-9dbd-41dfbf500a92 b17eba7f-ad18-41b7-ad03-b1726d8c1dfe 3798ac65-c4d0-4997-9d15-c697c68d68b2 6646819a-149e-4480-aff1-8502b807a73a c5940dcf-4a4f-4e32-af23-f083d4e207e9 7427c7bf-c4c5-46da-96d0-4a3c1163a31f 77f1fc23-ef65-4a5d-be2b-34bd837a5086 ccf68628-f468-4b10-92eb-828fdd4447b2 fe2bf2f9-680a-4136-9c61-ab403b06c76c 4c271e29-4c41-49a2-8f48-4eeda4ac310c 2c6af2e4-d878-46e7-a874-021ca38f7a4b 901cacd1-ad34-4fd9-83e0-3d3c8ee8223e f653e312-4f6f-409a-9161-29c970339a26 aed0b800-10a7-4f04-bb3d-42a90425e017 5c5966c3-e6db-42b7-b460-6201c650916d 6df8bb3d-2573-4b97-810a-37832986d3a3 5868eea7-41ef-47a7-8f6a-916ceb4e0598 06af1775-d19b-476a-8025-bbbb2b6d822b d503e238-0719-4fdd-8438-fd9f273da2ce 5a963e58-1f28-4571-8fd8-aa0f25040d08 82753152-2819-4798-89ef-aecb89a26f12 30a4247f-9c07-460e-a1f7-79169369d143 5182e476-de8b-4a9e-a62f-835d98c72e16 82472661-25f0-4602-ab49-8a85730b8eb7 cfe3fe25-11eb-449f-bb0c-47a57ee77e80 b7a2174b-30ad-4247-b062-dd83a3c81470 ed7be615-61ae-43be-acc9-6fdb78a5c9d0 cda2b7da-1a08-4196-a36e-faa9f1c7f628 21151ca6-37a7-4567-855b-cab114e6df6c 23169e7f-5190-4471-bef9-29ee96edef42 c505a5cd-0239-417e-9524-e09c8c957549 67cc6617-fba0-44bd-87e8-8ce7e25e7b2b 060f86e3-0377-4ad7-8e6f-bbcdac533112 bf138be2-b424-419e-8f15-f5820c29d6ef 2d3f4062-587b-410c-8360-ae50d3b2b25a 52d38077-01b6-42cb-a97d-21ce88c019a2 8b75af0d-217d-4030-8464-cb8859484bbc f496e685-3970-4d05-b77f-e19c5021fe74 615fd421-1a0d-4c64-8cc1-a86542d75616 e2f74830-3c8d-4c0c-a06e-39d9fbe686ea b62d8e7b-1f96-4930-b152-542224536849 acee4bdc-0970-446d-9478-41cb969770fb f5a6e27d-3b6f-48b3-b92b-11d9c7a1b248 4ac0a846-b515-4f47-b707-4ba5b09d7ec9 4d2a57df-a7ad-4d11-a293-dcdc9fd3d5ce 9277ec9f-24d2-4a07-b6a4-64bee4b4bf18 14728f8a-e17e-4490-97a8-00444514da6b 4f9bfb55-45c0-4c73-ba1f-677e9ceceae6 21b8f3cf-26aa-4082-8590-2af041a96acd 2de70bb5-fa08-4437-b12e-16447d98e834 22c986d9-e3e7-4adc-8c2e-ec44be09539d 13a0d94e-eed2-4963-93f3-fc2bd65cb896 aa6adc9e-4f6f-49a1-ab4e-0ec68f4f6aaa 6678ee2e-af4a-4189-8014-578efd7aaeb1 e18105bb-f96a-46eb-8de6-03961d7a9cc1 3f51b9f2-0905-46bd-b7f0-a592320e279c 5a2c7bb2-c02a-4074-b6e5-2f6303b06095 821913d2-c061-47ea-a2b2-c985467a2840 54d9efa1-6f82-4859-b50e-20b706ef2f65 3b98f333-813d-4623-b5ce-00fcec6e05c2 22d07be0-b649-4eaa-a9dd-07a67008483a 5cea0cfe-89b9-432a-a7ea-49d4365ea5ef 4fdeba7a-6cef-4b8f-814b-0279edbb1165 26fe46c3-309d-4f80-be7f-33a10c104fd1 4c00265a-4119-4f00-931c-7b0bebd114a0 f8beeedd-3163-4f4e-b64c-91cae2b3576d 85f9a468-3540-456a-8156-b30c2e72dd84 3b82e6e1-6005-4c1a-8ab0-ea0956b8d444 5c817425-a89f-4695-9d34-651d92b9f613 c6149697-29f5-4db7-a544-9ca50b1e67ee a7c84465-81dc-4b6f-b05e-ef991be73301 55cd879a-5f55-4aa6-b706-3b66e97b8ec1 7c90825e-7746-41de-987f-6c34192a1ce2 987d58b4-c70c-4243-a2c5-9301827b1580 68371ed3-2fc0-4e56-85cb-a310fd8d5f65 b83dd2b9-f569-4cc0-9dd5-440f91080265 04528fa7-5871-44c2-87b9-61d57b863881 27ab64e1-4a26-4783-93b9-e0457c22b9e4 36259d45-e57b-4064-87d1-44f6be0c8a7a 562662cb-1cb1-4c95-8c16-190dd83c205c c65bcf3d-4906-418e-9261-9b175faa94dc bb3a0259-a69c-4813-afed-b7a88e66953e 01123b53-4d30-4175-ba53-bd9ca204b00a e39ef8e3-0329-4886-8f5c-eb8ae265fc43 e9e66f95-f5fd-465a-85f6-ea59ca4ba091 667401b0-8ef2-4e61-99b9-414113f758c1 90d22956-926e-484f-bd10-9675ab6fe5af f5e92bb1-ad9c-4d92-adee-8e09ed69521c 8350d602-7a38-42fa-946f-a713ef5adb39 d82a6f25-c0e5-4a26-ac70-9188bfb33d43 2142535e-71c5-45ce-a59f-70b496b3d8f6 104712fb-f575-4832-966c-821c5482ee59 b50554f1-be9e-4b1d-9476-bb5c3fd1eabd 627568c9-9986-4314-899e-8be9f24b7683 fc1a36ab-d5a9-4b8b-8381-e24ece5be9e9 7dceeaf1-364e-4f5b-85dd-895cfd785585 e85270aa-aa9a-42ba-a813-e74f819c4770 72a9ad8b-0664-417a-ab78-78bd5c437dbb 21300a49-6ec1-49f4-b8b9-5c2d25670d09 1a952c63-9994-4a9e-b48c-ca3f427bc4d9 aebbc2b8-eaa2-464d-8c09-56871219e46f bf7267d1-b93b-401a-a5a9-d13ad79bedaa d976ce5e-1b9d-4f83-9584-b2bc6e7cebcb d75f08f8-0dda-4ace-91ca-8779f0cdc267 2a719fe4-f0e0-45bd-bd74-c36e29eaf451 88e18a0f-68fe-4896-81cb-f00e188b660e 9d9def40-81ed-4e06-8ba8-9860f80c2169 79a24f7d-3e69-4b2c-af7e-02233b658be2 90b5592f-243c-4dd1-b309-4853b300b331 645afbed-fe02-432a-b319-6e700cf747ed 1e0cb9aa-678d-4326-ac41-df65b33ddf64 04ee807c-0f29-4f16-a0ed-daad2e200f78 44c82a3b-26a9-4eee-acd1-32b4b7ca5bab 549c5376-f6f1-44e8-b396-f4b875bae06a 0af304a9-8321-4cd0-9f84-0a8f885cc060 00242ce1-801e-4cac-ac13-fbfd7a36af22 1630c05d-7f7e-4a56-9942-b2cf5558b37b 9cf3fdfa-71ac-4aae-ad32-816283038749 7fbd5f00-c564-49a2-8a15-d4a7bf8f09ea 601cca5f-bc0c-4d33-96d6-b00fb4b17c21 8510c680-936f-450e-adab-1a101fbf0015 5a4bc542-c014-4f48-9ee4-c0aa43e497fd c695cf32-d400-40e6-a16c-6ba490051fb5 369dd4e8-5bb9-48aa-96f7-40e46019f125 a8ad9b00-3faf-45d6-b8d9-3428d74bf346 6b8f21f3-6c62-4a85-933d-338f4ea4b211 09855708-10ea-4664-8ad5-77925cfe43f8 048d4218-62dd-4f7c-9e8e-97e4fc7d2565 1dfe1e30-6464-44f1-bfbf-651e533ab397 606f725c-089e-4621-b360-7aeda4978ecc c431910c-eeb6-4b62-8f3d-8d8f03af233e ac666942-46a8-4914-89c1-0d57f4411721 8e45fbf4-b158-4971-aa68-c257001dfc9c bdf5bf33-0f24-45a3-85bf-84b1238f9cd7 7e119aca-f783-4dfc-ad7a-f05f62b5348a d32a81ab-729e-48e1-9195-958211ac74a7 9bd54ff2-00ee-4aba-b8b3-fea3a6dff2b5 4314a4d8-a618-4cfb-a1a6-79007606fb73 ac3ef16e-9092-4a73-a7b5-22cca6068c3d 95518a40-940a-44d7-b516-42710d0f2c77 2a66a642-9bb0-4ff7-a4bb-f0f46f4b0745 9cd2e75f-a233-4989-9d73-af0691802192 b3a322dc-1b65-4052-bed6-25e51861d616 3b67d378-baf7-46f5-89a5-12c5861295bb 5c0c49e6-20cb-4d5e-9e89-a92addac81ec c06d90a8-640e-442b-9007-95dc9f1e0beb 56ec63bc-121f-4f3e-8fcc-8ed3f57f32f4 f31912fb-df8c-49c3-aee7-d11b5bd7c556 fc494f0f-6e51-4bc5-980f-5bef996fba86 a4de63a5-e9a0-418b-9cc8-914033c5ca1a 380a3ed2-c9d0-4789-b5b8-9cb7ff79840d 22abe5dd-734b-4ad9-b4df-ff6a1b530a98 13d9f40d-6558-4fd2-9a73-136e6c62d091 8397c680-8815-4bb8-9540-ebb8c3a52738 4f974bfe-ba97-4b7f-a8fd-fc531bf8e390 1d3fc711-e419-44f4-bcaa-b2ee9a4dd91a 5d2fc043-9353-4eb0-be93-51f6b08a6e62 0cd57605-7765-4ef9-be7c-9528854fbaa2 9f7b385a-ca16-4cf4-8921-3ce940ed32c6 c670ff80-ac96-4d1c-a05e-7463251b9ce6 475d2edc-ae6f-4ee5-91ce-2467b1beadde 38903c75-57c7-495b-98e6-6166f17c1d7d 81dca277-46ad-4ce3-8cb3-759365a32181 622ff4af-3005-41b6-9bed-83cc0c5fbcd5 97dfbda7-6801-464e-acf2-055ed0ad580a 1a1bd0b7-6083-4982-ad57-223d70178441 2f3c471a-2566-402a-a0e5-e94f5fe5073d 9b6d1d66-c815-4de1-8b53-c2657e104edc b4405d37-0648-4723-8b85-776929d09e9c c8a4a7b4-f0ba-4fed-8b13-0d24bab3aade c8a7d14f-2369-4efb-83e0-b7c709397d6e 1f719962-80a8-4608-bf1b-01b2b3906b98 d4aa7546-3d07-4bd9-b5a4-f79e832a01fb c1901993-9ec8-463a-ba1d-68cc51d41cc5 dec31ad4-664a-409b-9d49-daf3b4f414cd 72c74be4-faf5-41c3-b256-82456f23a613 2c78eaa7-f3a3-4d42-99d8-c2890e614916 94884ba5-4db0-4844-8624-59b5d866a993 a7bab270-9aa9-4445-9f9e-80749f65fd7c 700e4605-30ca-46d4-990b-26e40fe4aa17 9e0e5d6a-41f8-4898-9aeb-1d720559afae 02081e95-7ad1-416a-8e43-9d9ce33ed353 4f0301e3-fd98-4001-a951-e1492ed8836d 1a27f85d-2adb-451e-8a72-1c8b6ac809d7 142aff00-ee9e-4f45-a9d3-25e4ed7c38cd 070e2fad-5d07-4149-9a9f-5a0a904ae26c 73ee6f2b-f4df-4ea8-9c21-85f096f0a0df 6c230f68-2cec-4ba3-bb61-3e1667b3a559 e11c0e4f-8876-4959-8669-a046e6b96caa d5d07c73-f8ce-4d38-914c-94ea316b3886 a4a85412-e2bd-4f6c-8f9e-dd911d5484f0 d8f061ac-c4d4-438b-9622-3aa64348cb1c 574c2f20-672c-4e10-8de5-2fb2ee7742c9 246ee242-7a97-4cc7-82a5-4b454f38c01a 365c6246-dd0f-4cb5-9663-b8971a831b72 ee9db9e3-d133-4353-a213-e9a20104cf01 464a96b5-a8cb-43b6-a11a-d06f2872ed9b 7ceeee93-af47-4673-87a4-ea48eafd1618 9c2b9961-c365-4344-b718-2cf064fbd076 e1dffc58-3ff7-432f-85c0-9f3e25bcfbaf 24565264-9e05-4afb-a647-ffd97dcbf62b af11e686-4f45-4177-849f-25cc009ea7a5 b60a7dd0-9c58-46a5-8755-ff145ed5bd20 296c37ad-5e18-47f3-926f-79b1713a0e0e 9f81a07d-54b0-4218-a383-0cc96008478e a724fab5-f13b-4b81-821e-cecea7869bbf 741792f1-5cfe-4f3e-829d-2d5f038b4b6d fed0df39-c72e-4794-a7fc-25d49776e09a 6c0f8369-00e1-4ae0-93f8-bba8a1eeeaad 8503e23a-6c6a-4e15-9e7c-e80ff2bb7ae3 e103639c-8046-40e1-824a-b7c242023c89 806d7369-dde8-4fd3-8fb2-52f3082bad88 d7823a2e-a53b-4e7f-b446-d5af4025ecf1 d7f8c705-5e42-408a-90fe-384b66dd0c20 393801c8-9c1d-45eb-8010-b1584465d134 cdfa82fd-42a2-4a2a-9622-a8d0bd39cbbd 01433554-8c1b-40de-9416-8392ec167935 16b86d53-8c30-475f-9e0a-6bb95321ac10 6f54eca9-78e8-481a-b46b-ca330ac41d7f 151247f7-9b2b-4e5d-bfa2-62a744f4c7ba dae40274-889c-4626-b61b-a6bb2d1df0c0 7e03f4fa-523a-46c5-a192-0314ea58c010 fb29dd97-b18b-4a3a-a42b-67de652f0005 80b5b063-9265-40da-8b60-98cad55dfb5d 4a3258bb-9c9a-4065-8d59-83a72d87c638 5fcf49e9-e77f-4d72-b507-eb95595f0870 ac370e17-f095-493a-b815-413ab645e3d1 f78747bf-b672-4207-ac64-9c9f4ab3bb30 9e4d270b-6181-45c8-a393-9966d8ac8989 70c5537f-fd7a-431b-b524-ed81467f0ae7 cc2ecc9e-418c-44eb-90c4-ffead9d0df07 a12883ad-5215-465c-80e7-38d34f9482d9 8283259e-bfcb-45f3-a6b5-7a2886a6b7de 3cc0a991-dea8-4e74-81b3-260e743153dd 6bbdae9b-30e2-499c-aea8-bb4259df9fcf eb8658e7-9bbf-476c-97a5-bdb1e097c075 a7d8972e-ca25-4b42-aab4-c01e807b91c1 6d2dc8ea-1f8a-40ec-a5d9-2a7d7266b250 eda766b6-97cb-4bcd-9fa3-b84e7ba8cc12 04ac94fd-17f6-44b6-b0d0-455a8a96cb8c d517fd2a-9d6e-4c6f-8a48-a1e8a3701ffe 1ad94d48-2ac2-434a-b9c8-7d485cd52070 6300058b-ac55-4efa-9a4e-4496d2714488 38b09d9f-c448-4cfd-83e4-4870ed499a76 174c3664-b407-4b3f-9b08-0fca81739ecb 99b97a0d-cf37-4568-9c58-089585058eda c38981e9-da07-4870-a620-eb8f2988f2f3 e006a1ce-e8d6-4711-bba4-2bd9a5e72775 21ac393c-87ca-42f9-a8ff-f2185889d03e 40a698a3-c098-429c-b8b1-db7838e543c2 7f8ea06f-4c59-432e-b512-9c49a8bda56b c69ef441-10d6-4bd0-8af0-13d4df5e7036 5e163db8-112b-4bb3-849e-233e9a788d61 35b72199-4914-4000-aa0a-2307786f8bc1 099adcb2-5537-4d97-b26a-4b52443666aa e292eab2-1bf9-4ff6-ac92-e117d9696cf9 1b22b16c-5839-4ac7-963e-ae0f3d1adda3 af89b536-66dd-4576-8a5e-af8d21f8b8d3 0cb14675-bb15-4a94-9762-f78be7e2e538 0853b3c3-ae0a-497d-a9b3-e5014ce1cb0a abb5a6eb-c121-4a3c-9588-3ef6026c530f 2e7af904-aea2-416c-b3c0-795186cde4f9 1bcceafa-b32d-4204-9373-727903cad311 d76173c8-9964-4f87-9b86-4078220bb363 406362f7-5b81-47ad-bddb-19850428ec4f e10dac92-fb2d-4ee5-9476-a14928c1ee89 4eaba59b-ce3d-4181-88e9-570b11498909 3177c24b-d0c4-477e-930e-637a7499a59c ed4b6171-0a6f-4718-846b-b60b5c6e04ba 999e3f49-bfc4-40d7-b6c9-2703c5a6af21 5adb63af-151e-4581-a29b-2d07f77fbc2d c11a5135-c539-433b-bd8c-9e5d2ff41ea0 43ba7420-a1a6-4b3b-9ee6-417adf4e74e3 deaa69b2-2246-4c4e-94e8-b4f6df5f02f4 a8be3c28-f56f-472f-8a91-91d5bb02e08f ad0b0a05-5ca1-4c1f-ae47-5eb7a332939f c123c694-f093-4f87-9c47-2cac93fee1a6 31191831-589b-4b39-afa1-22ed0ea30a1e 62e8f0ad-ab95-484d-a1b2-96dca2d5adc9 150b6b03-9a70-4254-aaaa-4dff5f16b3c0 6815772d-ddff-42f4-926b-ed35c960c613 ba0ea7f1-c507-46d8-9fa1-954250a95782 f987401a-fe70-4d5d-a047-d2411e5dd913 a4f85e9f-9ec5-45c9-b8ad-4163b723e16b 0185353f-be6f-46a5-8069-5fc10647a36a 2a571e18-9802-4f8d-9952-8f8c0e007a2b c6e74be8-0321-49a3-b590-a6813a9b5279 83973b4c-fdca-466c-af58-6923b722ba4e bc630dd8-bc66-4cb7-94cd-69c9ab255bdb 4f21f6bf-b92d-415e-9873-abfda69eaed7 d831d997-a5e9-4f0f-8833-c0f2991d0fa1 1ca03577-4296-484f-821f-47ba420808d7 44b8c7ed-92f3-494a-b7cd-c1de0f3584c5 9504e861-e88c-4eca-9fab-2e8d583522a5 51439e91-ad1a-4eaa-a75c-f70c6270ca03 b100604e-ca57-448a-a521-e57c279d9df6 59881c0a-1243-4de9-8a61-40e0b4e3e417 9aab5823-727b-4952-a0f2-76f4544f4916 4accdb24-f65e-47d9-9037-4c4f5947ee13 ad72e942-16e1-47fd-9c6a-725ba2d91b6e 8c5dd0e1-7ae2-401a-9b16-c579f9054837 109541db-0287-442c-8065-5c7549865115 ab359986-46df-4a97-be0f-bb436c0d91f9 ad8bfcff-c167-4880-8171-dc22a8b74e03 5f2bd680-6b0e-4219-85bd-766a2e3826dd 838c43ca-226c-4b14-aa91-533849275de0 561562e7-64c5-4f7e-b23f-e25a8e810045 f946bb98-a8d9-4652-956e-092e9f6fd581 cb88d400-2430-47df-8b80-db324b5f3e8a a52c72ec-e5b4-485f-9cff-b963ae7d14f2 5bc1c6b1-3c51-48d9-af2c-6bf217303f51 0b28ca1d-03ec-4767-8d32-3d3ed09fd7c5 9b15a634-33da-48a6-9c23-c40e886275de 8dc4690f-203f-4ddc-ab28-51070785367f 3fd721ee-5331-4aa5-970e-17f4450e5f53 c24a974e-5a67-4815-92dc-8ff3fec64149 4cf5a7bc-b5e7-4ee0-8de1-d9853d1e961e c0605b75-ccef-4d10-a975-9f75d340bddf 0e1a8da5-ee03-433f-8dec-0be3a5869cc8 5479f642-2c7e-43be-96a2-ce0deaecabf9 72166033-5aee-4e38-9f27-ba48331621d3 2d925b53-efe7-4c6e-b6fc-2620f9e1b92f 4c1ab11d-089d-4afb-b570-178ff3e056d6 77de1f58-026e-4ccd-8699-9209b787f71e 385fb25a-c5a5-4077-9691-7b4a1e03481c 93e2ffaa-e8c9-4410-ae1e-0e92e038db4c 963201eb-e782-466e-9a21-6b8f8ec154f6 705488f8-bca8-43e1-8d62-4c0aa25423bc 8b8aad23-4969-4b9f-82d8-f67c0bb9ee74 4c02b441-9413-46c0-8d60-44f86d3d5880 d1620efd-18e1-47e5-8999-b7743607afc2 416ef0ba-e671-4ec6-a204-0ca0d4d6f972 acf86d4d-9d1a-4b44-9cb8-af34bdb65a9b 9bfe9fce-aa5a-49e1-b016-2cfc226f49c8 688262b1-2eb5-46ed-a7f4-03e79bd36abe 0477f68d-5bd8-437c-83e5-16aef12f6345 1196e2bf-e570-4d1a-a4d1-fc68a457a8d9 2f0b3fee-5b1e-4f50-a6c2-670010e270b5 91a95988-88cd-48f1-9ff9-97a2989c061e aca2cf15-9f39-4690-b0f7-e76601d111a3 4e353888-05cf-4bc5-b201-4a4ccee78dcb 70c75482-e516-44fa-b376-0f22e0a754f8 641206f0-c921-4d45-8bb5-2e9dd1351b02 47807775-2632-48e5-a81b-2bed5d235141 2e3d0ad2-7054-4495-8319-2d161bab64d2 adf6f47f-9879-42cc-9779-d03dfafa16d2 0b2bc338-689b-4b31-b545-2eceaf5feaba 34d60cd5-4854-4cb1-b21a-75d485f77c20 d8b72dff-476a-4211-a0f1-e8dd218a94fd 2e7363fd-879f-40f4-8cc3-b086b2dcdf44 b6566636-fbb6-4a25-a0b7-58e01bf218f2 e2838693-e07b-4126-a4d1-8b5bbb4cd7b9 c30674e7-b774-4deb-b6a8-6b8306884fa0 b2d7d98c-b79a-4f6b-89be-dc7c3b47aafb ff0bdc83-dc17-4d83-8b3a-a5d3ca8eb292 3ef9ec4a-04ab-4d91-867f-cca0dce176ff 34fb0381-c2d3-4f41-ba8c-d1a430eb3458 58a8638b-b3f8-4627-9a13-fa91ba4c276e c9f40b45-dd2a-464d-ab12-9c603445620c 98df3ee2-7628-4722-85d5-828ae9de3fdd 69526030-7344-437b-9b48-7345df00be12 6b2471b9-a472-45b6-a69e-837dda26ba10 a8edf60c-c5aa-452b-8fb0-f4c1d89707ef 118ccc04-cd34-4fab-91c9-7f3f69bef8d6 1af95548-babe-403f-a186-c90c316b648c 5d6f53f2-aee7-4b98-a128-b09b1ff24939 c747abee-e3fe-4bc6-a969-2e1a82d1ab0b f9b23475-2e6e-4704-98a7-48be74eb9f51 ab58d7e7-6108-4478-a5d1-9e17e3fdf48d e94742ee-f3ca-4947-a520-e6f4097215fd cfcc75d1-f2fc-48a0-b2e5-acd034178f13 1d37ddf2-95c7-4673-8cd2-6c22ec632d06 5ab8b0cf-0f7f-4b64-b511-af74f4ca6ded cbee2a06-a5df-461f-b661-699c54e8c088 6b5f09f3-a642-4b53-a3df-c3cdae92eeb2 ffffcb46-a92e-4822-82af-a7190f9c1ec5 0485bd9b-c011-473f-96b6-ca9966ee6c34 f2043a5c-2630-414d-95b2-114717828e61 32d88e34-f727-42e1-ba12-f06a210b0056 fddeb6cd-0ae3-49af-b764-f2819a440aee 2d160456-0d93-4d10-a295-7bd6ceb1084e dd1fbf97-1be3-4ef2-889f-b8163084820f 276dfeb4-a910-4c96-8fa4-36f4164bd8b0 a92905a6-6611-4ebe-b220-38f066ea75be 105c752e-4550-4b10-a725-ebfad4420753 5ad89a0b-6344-4314-9a82-8bb023b7b732 30f00423-96e4-4224-a0c8-45af79e24778 e193fe12-1748-4bab-87b2-80415b071d35 1061e916-ce33-4580-b286-3a957ffb40a4 7ea966c1-049e-4485-88b5-e49eff7802b9 37ab7b9f-ec42-4d6e-bb2c-071a8be440cc 963191cb-5288-4fb9-9ccc-aa11e89c97e8 b706ff66-ae5b-4f29-a62d-495609484c54 6dd01cc6-4fb7-4dc4-a42f-45859216598e f4f31f16-89e8-4289-becb-3cd1fbd55c05 1ce422cc-e9ab-433a-ad63-791d1154d410 ed5cf596-c88e-46a0-95b8-1f93e5e545ec 0e529efa-856b-43d1-a0a6-91e4e2af60dd 5f75129d-af74-4b7a-88eb-066feead73b3 f62a3c7f-2f1a-4d4d-b3ce-4241394f9b60 7ba59f4c-c534-4856-ad86-9414b6dff04d 94855feb-e095-4cda-90f6-f1f59ae68aeb 9b52dfc6-ea9d-4860-89d7-e0cc71e11616 32716f62-48ad-48b6-a0a6-57231b87bb4d 9e79eb45-b298-493f-9819-d36a37b4eb03 c324e7b0-b047-478b-8033-7f5bceeb5c00 82046543-5fd7-400c-a74d-d24840e1a0d1 66907f06-3b92-4257-ae18-3759dd988692 c7ec172a-7e93-4079-b941-cb90983ee58a f71d2093-350b-4864-9afe-aa580822a9a8 040ad297-d6fd-4cf0-9187-f06c87cf93d6 b15f577d-1b7f-4568-916e-a73d8807b4b4 813a0ea7-ae67-428a-a831-df66aff416a4 73e4fbc2-f5b8-4b86-a9f7-12f824747a76 5d02cc09-73b7-449a-abe6-def6d630c6d4 06aa2b73-2e86-4f1e-ad2e-a5d7a896ca97 5226d521-ab75-4f08-a7f7-cc51bebabb78 4063ec3a-e3d6-4914-83cb-e0f0d23dc80d 1bdb7f3e-2760-4ee8-abfe-13820a9fdfd7 7214c343-95b8-487e-a156-608012a55433 123d6347-e4d4-431e-ab4c-b83f2db82737 90afa449-4707-466e-99f7-1465250c83bf 037a78d7-bda2-49a8-b82e-313cac9690bb f5ae782f-5de8-4410-b1ff-00e552c48b7f 9e302d15-1e21-4c4a-93eb-19770d48d234 fc110ac0-d46e-49e1-a221-87940aaf1e01 2faff48e-e98f-4923-b518-d66e577e2f7b 0a8cb301-30b9-4bf8-9058-b6a923de14e0 ca1cc908-0dd7-47ed-97f0-d72eff8b1bdc 7acfb65a-231d-4115-adc7-895f46aac1fe 3f48af6f-413f-406a-aad5-df64a22d5c6c 854f0364-88c2-4b54-8f9b-2a5804e81fcf 303e1ca6-f099-4245-ba87-35aa06d89f4a f8657a23-0405-44fe-bf40-c2e0a266ca1d 23e03d1e-5265-4992-a05f-017cb17bf697 c8f29f56-bc2b-4def-9f6d-3ddab94b7832 748f1ddd-43b0-4ba9-a53d-082df0c29d9d 7824cedc-5903-4a48-af32-710cfac179e5 2bec1d55-cdf4-42d6-89fd-312681c78756 e426a78f-2a57-4666-a980-c2c2c1ad586c f3e8713f-1be7-4bae-a129-4e31686087da 6d35f7d5-078e-4809-8b8b-e48482120d7c 0f741756-b130-4135-9574-f3d046f8b0b8 d475fc18-b23f-411c-aade-2756dafec9dd ad48c710-0f9b-48bb-ac3a-1060fe91ad33 cbcbd709-f018-4e89-b75a-b05f474504dd 03c8759d-ed54-4a6e-9e8b-8b51e63e6575 0e6917dd-2cf7-4525-9cdc-4bb658765b5b 3e04e16f-7274-4ce1-a444-5f544607fb58 23598685-a910-4ddf-bffb-89c31d558b26 d7fb3237-1ed7-4ad3-b1cc-3631fd224570 3597e6c3-4af0-41aa-8f30-ba2e9e87de25 41ffa214-90e2-4143-9592-240aa2f068e0 0f346950-6889-4843-bd44-b7eed323fe5f d9ef4a38-94dd-431c-b922-467a0c4076b7 1303c21c-95c9-4e28-bf11-955d2064e6af 5393e0a5-c365-4ee0-ab44-b1b979816148 39dc0dc3-acf7-4066-9d00-8cad0a7a56ab c14562f4-5e09-4b2a-9178-d939aef023a2 982ac6e1-ae89-4305-83b8-b3bb2079324c 2e5ab080-6ace-4aaf-9c42-c1625756bdcd 1214d79d-3e1e-449d-960d-f0e76036b8e7 fb296ea7-bb19-4679-ba38-af9b029dd0d4 3fecc43d-2357-4284-b39b-558deccf4662 e026b607-20d8-4b37-a734-caf659961035 32b385c1-75d0-4edc-8a8a-5ca68cfd3cb3 81b2cb22-6088-42f7-8c6b-2cb0c5f6fa9f 754615b0-ec68-4100-89c7-f4a56dcda7ec ed33e8cc-4486-40da-8d57-910439b9ec9e 42e9ce31-acc1-4e39-8f80-16db952c9b2a 54650fb9-aa58-48ea-889c-f8f80b87c8db ae9f0563-2aa1-49c7-8afd-e6d7c3cecae3 7a7ec7c7-90ee-4a8a-9851-614fa2ffc3be 254dfc2d-a999-413b-a46e-8986ddd72cfd a3398b0e-e0bf-41a5-b102-59f3609a7e5e ea743289-1bd6-4a22-b576-035a5c3016c7 59554fd2-354c-44dc-9207-661add3adaf5 f1b0246e-16a2-4c6e-a97b-1bfdddcecddd e3aac2b9-d768-48cb-ad64-6f09b0783044 76f86d94-0b7a-4983-9bbd-0ca8d1bbe0df 86a22336-595b-42d1-b3cd-497faed5611e 4ba17048-8d7b-46d0-b278-b1ab2805dce1 440f30cf-85c2-4497-a662-e9bf551c802d 7d503cbe-87c7-4378-890f-dd18fd08dfcd 365653ac-7f27-402b-8576-a9e5a8120eb1 d2b6313c-ddf5-40cb-8182-4138036cb0de 5439eb23-d7df-4d47-8953-9c4cfb29fd70 c49cec4c-94cf-4088-be4c-e81356e84b0d 2c38f9c4-ab1d-4ba2-b858-454248cc8c43 fa2bacfd-110e-4853-b9e3-402c0a0c04c2 c10bc78d-61b7-4b7e-86fd-12f238588961 782658cc-e1e2-4cb3-a94e-a4344dc12232 6b3db740-ff2f-4c3b-b64f-62228ad36fb2 5d38b67e-fa1e-40ec-865e-a77648ef2dee 08254215-6966-4f91-9974-7aaec05469af 32177775-73ba-4ae3-abbf-af2c00b6f256 e95d78b7-c052-494c-ad0c-5dfa17e0b0c8 1d1f3a2b-f445-43f9-82a7-958fbcf05c7b 2891294a-a1a8-4133-816c-dec32eb57a4b cbf98521-7eb9-406f-b7b4-ce3e182d3613 5ba6be9e-4ca0-4b05-8ce4-e2f2017b2c9e 14b25d67-7ece-4383-bb62-5d97ee3604b2 21a6fdaf-0906-4892-a620-0661bfdda50d 7d9fc358-4756-4b11-b55b-59a85f4c1aad 2141e1de-9f66-448e-8c89-37c7dbd3a2cd 491294dc-0c3c-4719-854a-fe253a055de2 66e8b2f6-918c-47c0-9929-65e4b7beb035 0de888bd-b807-4f8f-9d23-39c693152fed 2c7800f3-f050-4773-8d77-5ffd5e69697b 72d78827-ce49-4ac6-b2a7-68ef7f94b2d8 ea049ee1-cea5-42e3-9262-d07889465514 f122e485-7d8c-489a-a6e4-6af22fc82877 03b4beb6-c8a2-4411-b335-7c98439c6f93 a215392d-9b0e-4bce-8d38-95975664d439 9b11dbe2-f83f-4bae-989a-c7c15ab9531b a5f3081a-aae4-4139-8fba-78a901f0d6b2 3c0e98ff-f968-4d45-b676-1937b2575405 9212ccc3-7b8e-4647-9a07-bb5a256ae986 0f33073f-19a4-49cd-8da5-7e5aaa4428db 8de20cce-43fa-423e-b092-99f03dd00a34 4b8412be-00f8-43f9-86c1-abb93560d459 222c1476-22e8-423c-9746-ce4e07ca7bc2 4b35aef8-e94f-4b71-9d47-68f159f984b5 e6f24c05-2e92-4a0d-bf00-e84bfe18b60f d9678102-e475-4bcb-8aae-967342852929 fbd1ad50-0b6d-454d-af4a-a25c5693f186 a12128ad-1f38-4251-bef8-74d7b44c940a e14ba9cf-b90b-469f-84fd-3a28342c9e41 c4e5a693-57e3-48aa-9eb0-91567258080f 4643d7cd-9496-484b-8b1f-7f46fa368f75 d410b1b8-2903-4833-9e43-ee46f95f1de9 6efaa850-1b05-400e-a8c2-b729272c321a 0061d03a-ed22-4a83-b1ba-8e771383e6df 47c9c697-5adb-49f1-8390-fdfe4d749a16 5ca04f0d-c728-4378-86e1-75eea779213c bcb4e4ec-b760-4bb3-8880-430ed48b35cd 68f47a10-d2ca-435e-a776-688a1059eb92 6923cd01-9ef5-4755-b233-3e498216db02 ba987bb0-c469-4f05-a5de-83fef7243b73 60a5242d-bc4c-4812-a1fd-adda027c713b 10ea1c8f-a8b6-4fd1-a72e-b5b8c64ddb74 7ef3564c-75d7-4e19-9b05-4570231f2f8b a7dc2d30-ccf4-47b2-bf46-8ba48866d60f 7a2e2a91-aea4-4c5e-898e-2207f856a8e4 30c71e45-7f83-4756-b619-8771a9fc0079 ac4d0b36-2b7f-49e9-a0e5-d2c8344e47bb d5c41829-d925-4b4e-93de-7c78acea9c79 d84ce3fe-9279-497c-b860-ebb2cd269486 a5ab40d1-91cb-4e23-a825-47b1768b12ce 3ebdb8a0-b025-4c44-8eb1-2f0fd45b535b 3042b7ed-12db-46b1-bea7-1ae19c085dcf 020ad471-3a9f-452e-9026-1ffcba34658a 44b41c65-9d6e-40f4-951a-eae51005e25c 2a757f7c-8b82-4fae-bf77-e06274f1b368 03deb01b-0d9c-4fed-8872-b4f26e90ec25 cfe55cfd-ef3c-4fc6-ab86-2fbf59129269 bc8f1d25-e9b2-4fce-9203-8af13ffb058f 8d18cbdd-ac37-4e25-ab26-23276228fb9a ef58af54-3e67-4e21-9339-9bc3dd5b454d cf3519fb-42c0-4210-8f89-a1b5a8429bd5 be26b992-c7d3-4f50-9046-79b650f790e1 b1f07532-25af-4209-b77f-9ef16d853815 f5cfb8ce-28f4-4287-a49d-16d79408ef39 3ff3e184-7499-41c6-98f5-0f7cc167a473 e170d40d-191f-40e7-9c56-ce021a8772b8 2526d29d-869f-4969-a9c7-64f68afa14e9 235bfd75-045b-4cd8-b14b-1fcf7cb80229 41bfedfa-773a-4d6a-85a0-d6ba1ce26d97 94c57c3a-6fb3-4f3c-ac64-03d21b46f0db 8329124a-c581-4811-ac23-d11c916cccca 1964b947-e6e3-4dd2-bf50-74cc488cc744 1686a3dd-c96b-45b2-a0af-7e0e276f24f9 302e7cfe-3f85-4878-ac82-c774fd4767ee 8b8b97e9-23dd-4a5d-a7ac-fc00b9077995 0500f502-f5b2-4f1f-944f-1712c14fe830 11a4248a-f22e-4c72-a310-977bab205953 9f67f143-aee9-4749-a398-3f5d3730ffcf fa75d471-1961-41ef-823a-66d6b373ecd3 5523fe09-d036-4c72-81b3-8b250205add4 61172281-0bb2-4dff-8329-59aa73fd1c99 9ef87502-1699-40ce-be48-d0deac5cfb39 40411263-da06-4469-9c60-d5dfcab139de 28eae123-f9a5-4e0b-9bf8-ed7564c62a0b 427aa666-6d5a-4a3f-adff-96e267784c5f 2e20bfce-3e75-4500-9d76-c21740b2631c a4e4ac36-4404-4dab-b846-b005eaf478d1 682031ce-a2a1-46b1-9fbc-af1a7c8b0c11 a17e7b29-9be3-4c7a-82a6-2a218bddc6bc 0a37ec2d-2254-4b8e-95ed-f871ad22ffa7 c53082a7-491b-46a4-b3b4-f9c1c008901a 2ca60e6c-4f9a-4e08-b66a-5d970b20189f 514207d9-e3d4-4814-bdd8-2469044984a6 67c94dc3-d835-4149-a2ed-fb2f36f789b9 f9f54d9b-9922-4ca0-a175-d352e89f7ad0 d78991a8-e3c3-4563-bc41-3d40db3fba24 3a903a6c-0263-49b5-b16d-2b6493520c93 857f1c54-878a-4033-aec4-bce528733037 914793c5-9116-4593-8040-3cc047a0cc2e f4b2b07b-ce35-4fdd-b8f7-ea7174cdf862 be05b6fb-60e6-4e4c-a49f-eb3dd1b0b708 35ad3586-ea3f-454e-9434-3e19850f0857 8e7ae981-4901-4a82-872e-a1cc65a9b28b 3e3b9bb9-e616-4739-823b-0aa7a24214a8 225826ed-e922-42dd-8b80-bf301b2fd3c7 a65056d6-f21f-4c73-b8d5-41b0e9e996bd 6f7e3193-1093-4bcb-bc02-e8084a23516c 612ed510-db66-4408-8794-37be4bb63b46 f3947319-c7c6-4c4b-aa1e-b6f1f171b13f 11ee5a11-eca0-487b-ada4-597418ea5534 ebf24f47-27c9-40c1-8a01-50ff8418d715 9e8787c4-134c-4d8a-8952-44d497157955 ec9dad80-0203-4456-b4ba-e9199d0204e5 1870eb64-bad4-4bb4-a6f2-1697a5b80fee fd0ddd8e-d743-49b2-ac09-b9293181e212 925c77ef-aa24-400f-b19e-ccb7ead3fec9 9aa62e4f-a9c1-461b-ab29-9df225e97a46 84d0836f-b70b-4022-b28e-0e5504070dfc d67ceba2-dd33-4901-a222-8f20c4409675 251dac1d-032e-4054-ad79-ec939c03e30a c11df491-a271-4bc4-a82c-78ea59914325 2a1c4382-39a2-48fa-b4fa-38fd7151e1e6 b5a94dae-40f8-405b-9eb1-bc72d78af12d 5091f534-61a2-4440-9f72-4f4f42282628 d61be9c9-4e87-49cf-9241-9fe73c348de7 1458a134-b61e-45fc-a6db-44122c4176fb d250750a-3b3f-4a64-be6c-8386c4908699 8422b8a1-f80f-463c-8e85-9fa09e8d5449 05d90a41-72d3-48fa-9232-fdf463939df3 1aec16c0-35f6-44df-b50e-d068754f3347 89773d93-6249-4f32-9faf-ec3f6f519626 b17f66ff-994c-45d3-928a-487c669f3fbe 8470679d-9d00-420c-866b-c36049d6be09 29b35dda-3b4c-427c-8622-34d4d311003a a2439aa2-736b-47e5-973a-98daf988f22c 8c2d0a67-0ec0-4990-87b5-5be5cb0b2070 eadd7d39-02d3-44af-89c4-da951512ab96 586e9086-61ea-4abd-917f-63e6a1335498 428d662b-6696-42f8-8d16-e265aab0733f c17df11b-20b2-4e6b-8a38-ae8c5faa4495 25733c59-a359-44cd-b153-a891e941fa96 df29adf2-8609-4121-bea8-4aca0ff2375e a6e03e41-627a-4bd6-9302-45955b138cb2 24da92f7-3607-4a93-9dd2-4872c1d99fc2 0c8d9ae1-2a53-4774-97c8-3df1fd61b41f c0cec1d9-5bbe-4b9b-8b8c-ae29efb9701c a5e52dce-dda4-4b96-8f27-59575856b6f4 6ecccf00-d700-4228-beda-232589acac3f 961fad89-c676-48d5-ab9d-f25153aad631 a657c275-9e2d-4bca-96a7-560c4f60945a 077d7766-d3f3-465c-a46b-e4577d4dcfed 86b5f820-80b0-411d-9063-0bd8819198d0 5427fdd0-e8cb-4d92-9867-85cc499ed5f9 a0597b36-cf08-4f16-944c-3908209afd62 ed65a5e1-2b95-4b08-91ed-f63cc04ff0c6 0bd39537-4399-4532-80d5-68d142e82cd2 ee3d0aef-57b2-4963-92ca-5cb3936a1f52 99128783-f6dc-42a0-b4d5-32fe0feae534 99df074f-2306-454c-afeb-4e2f6d36afec 2c9e9146-e08a-41ea-b13c-2096c0210d6f e6727a89-91f8-4806-9b51-add8582c0992 ba451735-2be9-4f1f-bf96-3e8ccda86160 5ffc2f9c-3d1e-4255-9bff-ab8a0dfb5e68 e3190d98-aa0a-422f-89a1-8e3b7d0da8be a8c11cbd-bdde-4aef-b041-6d23522f5d8c 56c63ae3-b276-4c48-844d-fe2dcfd7f83b 6e17c21d-8774-4d65-a194-2d711054990d 2e8e9ba6-04b8-4c90-8a2d-38afb78589a2 72ace77e-51ba-4bc6-9e42-57312e413e3b 80e28b2e-3f29-40c9-a901-82f3960f8b35 330a8967-a60a-4433-925d-4472be4e4e55 7f1c1112-7796-4de5-a198-21f2096a6c99 9ff33ecd-2cfb-48c0-9404-e21c7afa0fab 5a993549-3d0e-4026-9de5-13701eb730cd 8aef7a71-3259-438c-ac86-1a14427d60bb 6cf00b05-f585-41e0-95e0-8df1c2323852 7e7850c2-bc58-499f-bab8-33db9e3a013b 4bb68a65-b9ce-4e6e-9607-3c183cfa790f 34189b6e-7b87-4a20-8923-e879d084d956 3893d008-e382-4f6f-8953-9b1e35a54004 669dc103-72db-4e71-bdcb-52eeaae91c9f a0ba847f-2707-4b0b-a93b-a4f88dd55e7e d03f3eeb-7c9f-4997-b8c6-cb0536fb3b74 b14faa90-a450-4aa0-9791-975181e0dfaf d600cfeb-fdb0-436b-96bc-1e70c5c1d533 d4c9e994-bfa3-4dbb-8c5e-a2dae167b11a d6e4945e-c86b-4cd8-be43-03cc008ace79 6724c1bd-517c-4c14-ac00-76470596896a 328be652-73d5-4575-a0ee-adb55ee22639 7f6c1a00-96ca-4606-84b3-bc6236a8419e 52f78712-7edd-4654-a1f2-3f049bd1a5c0 a47fcae0-94e1-438e-942a-ad24f1bc887e d8ec9421-1aa0-4772-809e-c0cff4775c3f f7beb95c-47c5-47b4-b149-58ff3ef36ac2 f26e1e54-e31c-42a4-8ed9-a74824dca1cb 657918f3-d1c4-41dd-a4e9-ceba79f674bd df883ab3-0ed0-431f-99ea-5b6ab749aeb0 d9793e3d-7315-4ac0-a73b-66856021e1d1 8517b12a-5e57-41d6-8e55-a858cd17aa2e 2276dfbb-8622-4bb5-87aa-035715538c36 1fafdda3-0a29-4c29-a038-942daff1b1d8 2bfcdc02-9297-4a4b-96e2-6aee28801dd4 d2df4865-c955-4542-8075-18ac9dcf7df9 602bdc3a-8199-4e86-a040-828264d84e69 2b5b5f2e-04d7-4e1f-8dc1-89c0cfed931f eb849639-daa3-476b-9f72-e3faa55a78b4 04ce50c1-714a-4473-b174-65cea48a85cd b8ad5ff9-241f-4595-a5dd-af69fd014fbc 67f15fe3-bc85-4475-856f-6e809b59e4a5 f610bae1-a6e2-430a-977e-654ab13b6ca4 e1abfe1a-db0b-467b-9283-e934b18ff127 c3063b7b-8510-4195-847a-fdd21b103658 0e30e3ef-e9d5-46c4-bd3f-47d1b70a6ad1 65528e7f-fb91-49f9-885f-46f71e4bc628 edfb18f9-e49d-4bbe-b77f-663fbe8675be 90f557ae-d91c-4560-8393-c551f263b95b f0fba6cc-6bfd-4068-81c0-5943b6b62694 d81fc9b3-86bb-4bba-a486-77fbcf5d90f9 4203c482-4b94-4b92-a9de-aab461a6ec47 e21d558e-765c-4bdb-bd33-41e70357dddd b7a3d4cc-cf54-4553-8da6-7d1400034f47 6c882cb1-9bb9-4976-9bc3-e1f05895cf36 bc1c3f54-11f6-4396-a6fc-b1427bad557e ef6538fd-feec-4705-bb9b-e91ce7502867 6e11c726-5299-4a8b-b4b0-3afdc25a6c49 0c000412-ebc5-4bda-8128-c4df26553dec 6b0c5113-aeeb-462d-885b-f5449c1d01c7 3a07dae3-34d9-46ea-a113-7de4c61de346 bcf1cdf5-3086-4c8c-b635-2923550ba1b3 8daee61a-687b-49cd-8d2a-1988e83a921a 34d29af8-4971-4082-8315-6e6b126523c6 35fba401-4e4f-4124-b329-b68077e99722 2f54ffca-8e3d-495e-8e28-8f29a1e5e093 cc7880f8-c933-419c-9bdd-0a5cee7562d8 7bcef7ca-43af-4c89-902d-07024658c296 52f583fe-7111-4499-ad90-91509d9edb80 d0b85255-0705-46c4-9ce2-b3d3355f256b 76a07e6a-2f60-4d2d-8670-37b1b5b053c3 90e4a627-be14-4438-9740-9315e995d0d4 32500495-3f7d-42f7-9ff4-594dd53c9389 083b4e0d-02c9-47b4-bafb-ee16d325748e 798a2a5d-ee1b-46c7-82e1-676ff35f6b6c 2f681f65-6d5a-43da-b7a6-01010f06bef8 c18375dc-eeda-4372-a47c-09c8340459da 0adbf429-88e4-41f0-9b75-49e68af0f0b6 fc451dd4-29c1-4bec-88c7-a32afe5ddd00 c06ff3ff-391b-4516-80f3-cd6957054de8 4ae2311a-6357-4df4-bf9a-ef41812c6538 4b88b115-cdc6-42ef-8ccc-65548514a4fc 11babb46-4631-4c46-868e-2e353d2404e8 b139b4c8-d441-455e-b8c2-11520689b9f6 60fa8b96-095f-49de-9ec0-39f003109786 dbcdd023-4cc7-47a6-b976-a591b5db86fe 32bb0172-a0c5-4921-8d36-3ae81b2d9b51 822d24fb-3ad0-4c41-b65e-9fe1ce3d5019 a927908c-7ed9-4eff-9f54-8c61c99f4fa4 cfc7b222-eccc-4433-ab6b-41c124248e6b 2fa9e98e-917e-4aeb-b57f-0bc5d8368cc6 42a755a4-8661-4ba4-94c6-0e7603134e39 8d02a124-d6cc-41e3-99b0-5ec85e0be62c 759c3c93-42d9-4d4f-ba59-b77d78b79b3f e5b2eda2-7b9c-4671-8d0e-d33bd147889f da409f6d-419e-4386-94a6-b7c3c2ec5d8f 374e2f9f-9f76-484b-89d6-7296370ac60e 249fe4a6-12fc-482d-a941-3e9f4d351178 c4345064-93df-442f-9181-6bd40ee9fea2 c384736a-3d0b-464d-8693-dd0b83374231 41f10930-98d6-4480-811d-8fd0d8c9683a 9da218f4-7577-4fe8-b2cb-477066055c39 1b61d202-76e6-4100-8676-c0cedafd7e4c 16fa0bc1-df53-4b2d-b099-c2103b285c27 31d3a449-9c0b-4326-bab7-1ad13e32b127 245d278a-a993-405e-9d84-45706d80c079 d6c65edd-b03e-4fcb-8bad-2e7ec283d240 2e70690b-75ad-489c-abda-468a28da456b 6f80a2c0-191e-41aa-91e4-b30c251bb469 f84b32b1-5d71-4e56-a9b1-862d41d90c7e f52e03ee-1ec2-4590-8a48-4708e1cc2aa3 719d9a04-a4b5-488f-9ec7-aa1d02fe5945 4f5d57fc-5b9e-4121-a62b-6554abe2038f f288f9bb-24c0-44d8-a2ce-58ef80006168 14d58f07-9805-4d28-ab9e-4aed0150ba8c ec9843a9-c228-4435-83dc-05bd40e4cff7 f9a9309e-9f7e-4336-bc9d-d42b283d465d eda24dd3-8ec6-4bf4-bd2c-785dc515c6f1 901f705d-d163-4b8f-a473-9031e08abe15 edb0d1d4-1794-4e00-9290-5cda445cd7a7 7a33f2b7-a489-44a8-8534-36605f5b8639 1f23ff95-b974-4a23-b4fc-7140033b5af4 c3afb490-990d-4e65-9e90-86bbc38b3b2f bd9f31ab-5b56-4292-9fa6-66f32d016625 fa3fac03-9c58-4ce6-8b35-adaf537553c6 8ed82412-720b-4038-b4af-17d50ed73ce9 4d4ecb74-9bb6-4648-8015-c49b55675a7c 84a94186-c570-4a20-8c6f-cee4e0b1867b d677646c-5b92-49df-9dc4-7f778f1bac98 7a1d7ded-dc45-4787-96b0-61d715fad66b 788c223b-890a-4aee-9b2c-d6c6731fbb35 62910df8-0d47-49cf-b18f-4db8ba048395 25360238-c69c-49b8-8c33-4253d608d0da a191d197-76ee-49ec-b740-a8af8f70fca7 4e686fac-2ae1-440e-b090-838ffeeaf293 84f87a0b-53b6-4fca-a0a3-6fd5f50ce0cb c022252c-149d-47cc-884c-c3b19d111db2 62253923-afcd-42b3-8f67-d67f6cec912f f491a44d-6a1a-481a-9064-be52e3605ac9 06c2a4a0-4cf0-4d81-bf7d-b536176a3b84 d2f8c9e0-4166-48a4-a13d-fc9d1fb3b039 0e29b4fc-d531-4938-90ea-5fc4cdee5315 49eeb41e-b98c-4a39-b87b-b8387ec028d8 c3203ab6-e1a9-4cb5-a859-0b478cffad8d 56706116-5795-4301-b7f8-9e6a4246370d 5758d2d6-ab5d-4e62-baa0-15109facac81 4b641dc3-dafc-4393-af9b-bde995e03df3 eaf43f87-a70d-409e-a9c9-fbc81fe53d81 33726c26-3789-4179-ad06-f27e1bf90252 09bb72d2-d74c-4c69-bfae-e83ff1a89e73 04a62f46-a9aa-4459-9621-1f9b3e0a682d 9d8315ae-3d1b-435c-960e-180b864933cf a58b39d5-b0b5-452b-9735-e081d263a80c 1f38afc6-6601-45d0-ab24-623f2a0c5923 963b16fa-0cee-41f1-9b30-773bc10e08d2 f23ad851-78a7-4018-84a0-f50909248740 f6114004-b157-48a6-bfe4-43691ec6ba0b e22c145c-7ce6-43c2-9aeb-023976376824 443524d3-f01c-471c-99ce-b9cf6060df20 04672c4e-0ab9-4a89-931e-4f4edcd8d40d a571c077-e910-4a06-b7e9-9e385d5ba415 ab40be59-86ba-488e-ad49-07b811efee71 7f175e67-8895-4a8a-9372-288b0c15a781 03426d93-c971-4820-8a3f-ad002ab80558 45ab5e12-16e2-4e6f-8c4d-b4a519bf703c 57d99fc3-850f-41b6-b473-86a97c43c432 466e16a0-b8c1-4e77-814e-6c3d36a0bdb8 371e8016-99f0-492f-9f82-7d7da39ae0eb 780c07fd-aa8b-4a0a-80e3-2c4ee3ba811b 0c6afee9-bca3-4979-8fdc-fcb759ef0ce8 3f9e815d-0dd7-43d4-9102-2288cb4a85d8 e550b0d8-1acd-42bf-bf44-c5695d32590c 4b53f666-0ed8-4f49-82da-9fcf251582bc b9cb4820-a41b-4f97-9b4c-3e021492f060 964a496a-f2ff-4f3b-beb2-bc270ff11f4a 3b2b3f0c-51ad-4a37-b4b9-e6b3ab0a817c 8650cfd2-0fae-4d82-9778-2c829d93b054 caa8913d-4936-434d-9788-f980634b8b86 8484e493-d89a-4daa-8c52-5efc1bd72d87 9654b1c6-e965-411d-bf8c-09a3c8f7c554 40825900-db76-4fca-9794-9b367f314ecc e2770e11-c2a3-4c6c-8b3e-f4163847014f 8f1c7a03-4938-4f0c-800b-d8f6a8223281 f4d382fd-6535-461b-86a7-97576e7ff4c0 3b2e83c3-fbc7-4198-b6e7-af5862887ed1 b3a3dac6-d0fb-4e7a-9b36-fc41948b2998 ac302eff-b31f-423d-9bfd-3603b05a9d53 b4c9b818-a507-4be6-804b-a0980ac42041 1fc9f5f2-77c3-4476-ab16-a2cab69146e2 f5c57149-c1bc-43b0-8c8c-9e0767462f30 822fc47c-c8ea-4369-8df1-62c0952ec994 4cb706e1-1e0e-4540-a908-59e4a2968653 b806b3e1-d8bb-450d-8961-f608a5ae3dd3 7e87771c-4cc7-43b0-98f1-6ad8336451f7 09d381da-22fc-43da-af7b-ea7e3836bc74 bc075f44-facb-4a3b-8826-206b74931b8d 1a6ae76d-f781-4401-afe5-f4d08bdf711a 617b4ca5-46e1-4eda-a83f-89e87c41e85e baa06a4b-b80d-42ba-a930-db004b0e2e70 d1c519c2-6898-43f2-80f6-a4dbe1625db7 df1b5985-fdf2-4caf-bb27-0ca30aa9b4fb 55bba75c-8adb-4c00-b8a5-c07c2d244ceb 6c53e805-b36e-41ae-9319-ebbf6c93d0df 2bac5c6e-a660-420d-b0de-6ab35d7882fa 7eb3db94-d3f7-42ca-be9d-7e8551fbb63c cd25fd65-8e22-49fa-ab03-27e813bfc0dc 2f9999e2-536d-4b44-80f3-a469f4cf2a4d c142600d-d6d4-4e78-9084-c998afed1ebf 50d23618-d11c-4b16-9bd3-d3dfb474619a e59d4536-2fdf-48c1-8a07-2070f693f046 024f9ced-8909-4f11-b497-17d7e2ac4415 b7e973b2-a14f-44c7-b675-08ac99800f28 79c564a7-16f8-4741-8523-e8b39ae47398 cb282ffd-d64c-46d6-8e29-69d258123cd6 026d9535-fcdc-4816-8cf6-248c1393633d f2363a5c-b8d4-47d2-8544-df6ec61b5352 4d6014f1-96e4-487e-97d7-92aa309166a3 7f308901-69eb-4f12-839f-653ee8516d6f a2ea7eb6-df84-4e21-baa9-6c8b4c3197ff 1246495a-d6ac-4fad-ae19-b4cec67fea64 e0a2b1f5-6ee6-49bc-be67-ac33d29146b9 7cf60d94-dd4c-4a63-9696-50439d608768 b07b8a10-79d2-4bdc-885f-1ae6820f6e7e c84bc018-c4e1-4726-880b-eed12f5976de ecc8b225-3162-4957-8e6a-3420bcfc8c4d 8b403e6f-f415-4090-947b-0b1d1eb43758 b4090bd6-e7f8-4838-8262-f9f60cf8bdb8 99157889-775e-40dc-a1f1-780673003ffb 838af92f-b956-48a9-b74f-838c93c48b18 1ee400a7-b1eb-4443-9b08-66c084dbc010 95131d03-e57b-4c07-ac89-533e302a9c91 fcd5323b-d3f9-437f-b84c-68d5aaac1414 09fd7cd5-dbc0-4037-9b5b-56fc9f303696 b1eeee25-82cd-4d2f-a316-f156ecfcc11a 820f79b2-6f47-484a-a1e7-788afbddf456 06eb78bc-320d-4307-8353-dc5f3131efb1 5956c586-401d-4ace-a485-57de0c2d8711 0cfc5d4e-0a4c-4309-8817-d845c4dfd3df 10aa69bf-b226-4502-958c-54648058c06a 9e191383-8331-4cd8-b5d8-7919c82390ef cff6f81f-c98a-4711-b944-ed14c4d9d4e2 fe34426a-0c3e-4e19-88c9-c6ec6a623fb6 44a63465-0217-42a6-91c5-a79fab35f34c 57bccaad-116f-4832-93e9-1ac421917740 2c9118ab-dac0-4139-8fc7-8ca17e2b6cf1 e8006814-7f25-42f3-a475-c6b19438402c 3346b357-bd24-4410-9c44-26fe053c94fc c4804d9a-cedc-4271-b89e-dc79976c14dc b1e91c39-ccae-412e-9c87-3c897f95b79a 7a78888a-f35f-4ab6-840b-f6ac7403b6b5 a0fbd74f-e238-4f77-a2a5-6c1924998dce c66fa7e8-7a75-4972-bfc0-6ea5233d7c24 f3754d96-0570-49ec-8fac-d66e18bc5fe3 f3353204-a707-49be-89be-e05e3bdf287b ce9bf453-fea2-4478-9215-fcc3c893be93 02c9395f-8c19-4bb6-971f-faad28b99afa 8fe35f7b-c5be-4988-86a7-bebb7da15700 607e38cc-c524-4c35-b090-6fc2f67998e4 c16a57a0-06f7-47a0-b9e2-17801b313f3f b29d37db-d1d8-48b7-906f-a57472294d83 5d76c5c8-c07e-4d44-ba13-85e31e8c56bc 8ec3be22-a0c8-477c-ac4d-2f17344fffb6 895566b8-f9df-4b5a-8320-f154c9cd5307 56aa6c4f-72d7-4058-82a6-ea4df7095cdb 621c9630-d0f0-40c6-86ea-7806cc37e6d6 a2b8043e-9848-4f61-b252-493e3ad887e6 875a6370-770e-4ea3-8d7b-7a50310cafa5 b12656b3-e758-4629-835c-26f18c8ce17d 127e4ade-b8f7-4695-bb79-dc5c9dc5a82f 6af98f7c-7b56-418d-bd47-5c6258c2509d a8df1595-1beb-4911-8515-79fb21489ec9 c2c2bbe5-1349-436c-855e-3b8f41292248 78d4479f-c50e-437c-8b56-8a8b1f6107ee 17addc0a-d8c6-4d2b-a235-e2ce8388df78 97027d29-98e3-4be2-809c-4ae8977e69d4 055249f9-50d5-4335-a1da-24798ebf9ae1 b69560af-dcc8-4165-8902-8aebbef904dc 1a7b5309-aa19-48da-8b70-cc7885ca7e44 6b1b4343-368c-4e8c-bd61-27afe0c06623 0e8c448f-39ae-4e77-b5b3-bfa49c09a144 64073dbe-2756-4250-8020-e396ebfa0458 cf26649b-3270-452e-b131-03583ca44e62 d8e9017e-fd81-49a9-802f-2475b1ccbbae 63593baf-0ac8-4fe8-9f37-cfad3d960014 62ff055a-217a-42af-8d2e-2701fa8aae6c a423680a-e656-4c16-b2f7-d1bb68fe5b03 b5c4e9dc-8a66-4d3a-9330-44ae928caab1 e06642a8-0cfc-448c-9207-384fd8021000 3eef13d7-9f3a-41d4-bc2a-06b3120a14d0 0debb750-de4b-4aa9-a14a-bd77437583db 8c5d668b-e340-44d6-8595-a9d75d5f353d 64fcf047-4c8a-44eb-9f81-a50d7afbae0f 13912e7e-468c-482b-84d8-a0df5cd3bb48 4921e9d8-9544-446f-bcf2-7aa1e7c2d7b7 ff393f01-f752-4307-a1a1-2bf4293387eb 8db6dfed-c786-4cf8-bfee-ca7141fcc269 b7145f81-6be9-46cf-8c1c-e67a1fc2cac4 5da7e627-d5dc-4c32-a62b-55fcc71d2962 9c24ec7b-4eb1-4e93-84fd-af523be51f33 4b235eb0-a56d-4807-82ab-64d56b5571e6 bc33e39e-bf2e-4c04-9409-78f2f0384910 212eb32e-2ab9-4f6c-9f38-62f1bfc067db 3a78b0b9-e6d4-40c2-aee4-dd1c51b7c770 61f406f1-03d8-49f3-9a61-b20c1d1180ff 3c5d9ebd-9a8b-4070-87b0-feba63ce1fc8 bada2fd2-5cd6-4bd6-be22-c71143a41640 6f70df58-b2ac-4e0b-ab3c-ddfb72a253b8 cb5960d7-6b6b-4eed-a077-9f4aa6d4c1ad 9c9c6732-6178-484c-9ef0-204dadf18443 18091f9d-7735-497e-9b32-1440c1826784 1793b3d5-33ce-4435-ab75-55ca50b1b928 d0dccea1-8148-4f85-8717-64b9a793f558 1503042d-521f-4b79-81af-7ed5029be352 5e2da8c3-eec3-4530-8395-b3bb2353b4f8 3fe8d02d-0145-48e3-989d-38d368f35db8 1e65a527-f5f0-4a12-83a1-7c72613ec34c b76a8642-fdfc-4672-82e6-3cb497293695 ebfad41f-c1f1-4331-95d2-ee6d5c88ca43 adc46aeb-730d-414e-8998-c47eff4391f8 4b5e5578-86f3-4937-87ba-33df244ed8a2 ba9cd2ae-c5c7-4154-a608-2b67c0798c5f a3466854-45f0-465e-85b3-2474fe8b919f 511fb54e-51f9-4776-853c-8ea18ecafb05 a0c41c15-d169-4c08-a326-effebdd74a1b 88a10319-3ba0-455a-a59e-2ec2b2f0770f 0bc49e93-d444-458d-9a15-5ca3d46443f7 8819e6b1-b994-484d-981c-df2fb17a456d 3f1cefa6-0605-4cf2-ba59-d2477e596a30 ff4a3218-a291-498a-a612-be10d7d57a3a 43afccd5-476e-43c2-8353-437dd3074658 12d6eddf-0cd1-4fd7-9d89-bb4fdb30709a 3982f382-f213-4c00-b168-484d8532ccf0 2ba05b5a-5199-40d9-9247-41570c1b81ed 40649378-c408-4464-8e54-99128150e03d 25130f75-b8fb-4263-bfb5-e6337e5901f4 78265cd8-efd3-44be-a698-3fc33637b30b 36f20ed4-8ae6-42ee-aa32-a43c16b22c71 138dc2c2-4921-4cb0-a917-6f4e837d4e6e a6de40bc-872b-466a-abc9-6a6226045d67 0aba0c67-7374-4288-8fb8-b519cb26bd21 1daf4e35-848d-4ace-b06d-9d9d07dfabea 9ce1e738-8419-4b28-9702-53ee3fdfc671 c0d3ec12-83ce-410f-bb96-a4824845525a c6b6f806-b9ed-4042-8423-8483c9d8c3b9 f361b7e6-fd61-45ec-b4c2-3ac65c4a36a1 6a3f3295-b451-4515-934f-8415f61f1482 3c33bf00-4fc2-4063-ac91-6b51f3e8d929 07b59120-b4ba-4946-8126-6ac1b1620e48 3366cae7-eb61-48fe-8209-cd45196a78b1 422d0c80-ff54-4f02-bd1f-6bcf5ff260ab 17ddf05a-a517-43a6-bb24-85f4eb9ca1c8 dcb60ac4-e397-444e-b81a-7959c4e0956a 5906a768-17d2-4335-be45-365cc4182be8 72d4007f-133d-4710-a2d0-ccc00ad15f75 ef34ab1c-ddf0-458b-8574-d390a32fcd86 454557c1-57de-4dcf-b721-065a55844ce1 d0ffbf7a-857a-49f3-914b-e74eb31cc3a1 65e373f2-8179-4f2b-b5f0-e5a72a0c480d 4e254e27-2599-4e88-835e-a259b004e40c 00fe88fd-3f97-4451-a6f4-1acea255d31e 8f10f256-d812-42da-a797-366861d6b197 bf123d1e-99b9-4d4c-ba4b-bf5eafa0c424 727e1dfb-f224-4689-ae83-23f62f1bb2eb 0b846c2f-dc22-49fc-89e8-110284c68db6 68c7f215-8ff6-43d3-a6a5-e9e53d625c7e 2cf28274-209a-419e-b488-10d8a599adc3 e7cf0d36-2480-4e63-a3bf-f86e41c65861 f4f1ea48-b321-4443-9891-f55d21940907 1d8d9bd8-3505-4eee-8f7a-5f337e198fa7 6c9b5c96-0d3a-4e64-8446-328b69c49cd9 d63c0482-d511-494f-a07c-51787b81a34d 94cccabe-7364-45de-af28-35e99c1a9f8c 7e7573a2-6112-4f24-8225-445877ec3c04 03ef97f9-bbab-4d3e-9dd4-d9edf3d46040 f6684009-dd7a-4ec9-9010-0218b972fef3 07322852-9501-49e0-b0e9-9f1591617471 a86d6d02-2493-40d2-a890-8f024a1037e3 86c6bfbf-5b83-4cd4-8047-948ff268cd74 9149c116-9939-4067-99e2-3c9b19805e21 2c729413-9d97-400e-8f2d-50ac2e9d3fd9 49914bad-4d99-443e-8e56-52d159506100 8868aa64-f894-441c-9fc4-2df3af816220 b4f50f2c-d6cd-46c9-be80-bc267d298f30 d4459db2-4230-4019-a33f-a5e06c304b48 f8a7fdb1-1c63-486d-bcde-d47a49ef3d48 9f1df650-fe42-41df-b0ed-92543980de58 7bb776f7-ab9e-4bfc-82dc-f1d8a52a1876 549d7c9e-f696-4c09-8311-6699f7b3e4f6 2fb33660-cb25-4fc4-8eea-4960832fa17e 93914c30-de3d-4637-b524-9c71f6613d0a 2740366b-45bd-4382-8b5a-3eb2ae3676c8 464a32dc-38c7-4d62-9af2-7c4249a834bc 26fd3f0c-ea59-4697-858f-46e7b92a9209 a55289c4-c811-46d7-805f-92cea1992fb4 884e0211-7846-4359-bd95-0c5f9b34d299 1c18a609-6050-4e0b-b0c7-1602c017b946 0277affb-008c-4482-ab7d-fb83616e433c aff1f7eb-0d1e-4280-b8ef-d8dd55478e4f 55d6fe38-4421-4d55-8a9c-c83e2853f5cf d38f5f2c-5adc-45dc-91ef-e26f590bf063 2a34febe-ab87-42d1-924a-1fad10dca7c1 6c20058c-c585-44ab-8183-7ba995177945 c76cdac6-2475-449e-9c46-8c80e85c2798 1eb5d5a4-c78c-4eb1-9bce-cf18d711e630 776d3d8a-4486-4c17-8c22-226b3a384bb4 1ff7d2b0-13a8-4b6b-9663-392395c0c18c 8ab40caf-644b-489b-9f3b-a1c3f085648f 08e447f2-7fbf-48b9-a61d-54b2ab87f082 a56c4444-5182-4262-bf5f-eb1d00505aeb 912b2ba3-962b-424e-9c05-934083d48d83 d0f81615-8955-42ec-bd19-4fd79fcb7af4 424c3ccb-299f-4ec1-bb53-ff87135e18e3 261f620f-2427-4963-b593-a65dfc452886 9c5970bb-7843-4d35-b0c6-fec3cecb64d4 84f4ac9b-90f1-4fe8-adfc-0d72539a0863 2bd1472d-f0e4-418a-a2df-7ef1a7492c45 3fd970b1-958e-4b60-ba27-683eb3b5c2e8 d92b4249-7b87-4b82-bb92-c9361cf07eba 704829ac-154b-4efd-8508-4a3f44947e09 5aafd967-fdf4-4b1c-a023-75a25f12c63a da2d553c-1dad-460a-95d8-2cde22294176 368fa6ec-0eca-47e0-b739-7e2792be699b 29ea0ba4-387b-429a-8d4e-2320950e6b19 c62d728f-d67d-4b15-8b90-449f97c944c7 f529b078-708c-406f-9089-0080160af236 a9b70e6c-8c86-465b-b98c-1dd6544c0f9e f0480fcc-7283-48f7-8674-efcb6d779cc5 fdbf9a14-76bd-426c-9364-50aafd7adac7 7d1e3798-53ae-4d22-a743-f82023b5ee61 71628aab-dc0c-473e-ab01-9563bc469a3e e961f6e9-d3e0-4a64-bb67-6774aae96d96 029e161d-6ff1-4ce0-9cec-307996ed5a85 958a8432-5864-4c46-9bd6-096cae40a3d1 d9eaf25a-9821-4294-bed9-547148133b8b 4c0ac32a-f189-4772-89ab-158bbcb21c2b 94ce97d0-5acd-485e-ab83-f8f6b4d4afc9 9b47c91a-ec7f-4427-ba1f-4375d8c73552 25d803d1-a39f-449f-bc41-c012671d8284 3fc926af-f324-425c-8faf-8a0e19afdded 79339f32-0def-48e2-b2cb-2d7b0a10d4ca 5504383c-80c1-46aa-8ce9-d66a411903f7 2c6faee9-9633-4a17-948c-2a01f26fe01b 7124b2af-0b1c-412c-af55-dc847a08ec4e 28815f58-ceb6-44f2-9d87-b53f4b334df5 b4a24429-39ed-4ed3-968c-65ba222c3f73 51a619c6-ba08-4b29-90b8-d31d6990014b 7a7057f2-6793-4257-adf4-6dbdb6f9bdac 4a473192-c3e8-4889-b259-713b0975d54b a68be860-950c-4ab4-8dc8-d056013455bf 9a154091-4eb4-428b-9daf-0e0bec1fd6a7 ae75cf74-d695-42fd-8582-68303789025b 986a9a15-b08e-4a69-ac46-a4f1498f9fe5 baeaea0e-66b4-43eb-aa80-aaa216055396 76653c58-1200-4503-b2e5-9ce939567292 1e12c6df-01e7-41bd-8825-e1a9461a9b4c dd24d23e-596a-4b29-858c-dbb28202c45e 7400a538-9c89-4d8b-b5d9-28843934a109 e5239734-6762-48d0-9ee0-a93bd195ed84 3934ee88-36bd-4b54-871f-d657a54b8716 dddd9ae4-57c3-4a8e-adda-7a5dd3fb9769 1286a39b-03c0-4fbb-851e-f9d8a3730470 f1c9eb32-1dfc-4af9-af21-0f22aa8fc64c 305bf457-efc2-48c3-b057-ffc29ae5383c afa44017-9b11-4da0-a7b8-d09ec313e2e6 55b32054-2e7b-4d90-8c45-ebb2e590d1ff a2abac95-41d7-4e0d-b161-323b88724d5d 357fe22d-e917-462f-ac7c-3f7d4887eaf3 34404956-a24e-4296-9e95-7bba443d6f33 f3753d1f-6251-4456-9ecb-23f0d0569739 c242f766-e688-49d8-b643-c7a848cd7d54 a3b12556-00c3-46ff-a907-ce3e3284a37d 42b6dff8-10e1-465c-be71-2e2f782a1f88 ecfc80d0-0a73-4cf3-855f-149f71911240 6bb72626-8e6a-4e91-99d1-c212ef07dd9c 1d046eae-1532-44e3-82b7-e66edf2582f3 d061f30f-36f1-45c7-9a5a-9bc9d6cbeb01 39c8dab6-0480-4411-b088-c60094cea2b1 81db3cd2-681f-427c-b362-0841507b4c6f 2b2e0a69-6adc-4a03-b71c-7280fb0960f8 41f46e2d-79d8-44a1-9c74-c0640aad80ce 174b6933-4cb7-4f65-b1e7-027c7bdf21f3 8688f4b2-6a3b-4cdd-a36a-3a955b972ac9 4b91edb9-3710-42cf-a0d0-057a75eaf44a 2322e3e0-64cf-4892-bd9b-edf3253e1ba6 f943963e-6b4b-4d33-93f9-ef46928c55fe 74ca7b10-138f-427b-b9b0-86ef6e8efcee ef3fd224-f376-4dac-a7df-b3a63bac4e22 8d3f7345-c003-4285-a29c-92dd5dc29eea a0031449-e976-4b2a-a025-79e3dd8a0182 b8b2e6de-c2a3-4f15-85d8-f834fe6da518 28778165-2eec-439f-b35f-e738bb154d6d aa07b39a-00fe-4bee-a225-bdf30c23e461 80c02633-3b57-4082-8062-8fccaac5fa93 093f967d-e232-46c9-8721-9fb2b4ca8573 e5467335-efef-4162-b747-322d0657939c 4ee6f53e-ea80-4524-ae8a-ea621220833a dcc83912-037f-4cc8-8f8c-3145cf3cac1d 706d95dd-03fe-4060-9924-03057abab1a0 c2fffc03-5eb7-4a6a-a47b-0dac7f82f139 22231695-d0dc-4d02-9257-18a876282ea1 996cc8e1-c5d6-482a-af93-7b1b72f7d080 dcb7665b-8dcc-4211-a3c3-0096b6c3621b a863ff72-57a7-4f78-8d42-d51c18a6dcf5 54c52a83-e5c7-4c13-9bcf-f7999b7e3f70 9d6fcc9f-2cf7-487c-b36d-3d417da4f1e7 215a0f5b-3e60-4ba1-b5c4-df07b9b47672 daa0f352-2d65-404a-b590-f2c79aecfac8 ca64d1ec-6d41-46d8-9c71-7acf96ee1f57 c787f1ea-5976-449b-93db-8543891a24d7 5217ca2a-e18b-4711-9d91-faf80f8eea1a 0809e42d-515b-4f23-8de5-2ea5e7863936 bc6004b4-b644-438c-8596-6804308df2b1 821dc53b-3e55-4756-a82c-52cf6c353cf9 ed281be1-2b96-4066-ba61-f56793cef684 38bc9098-fd7f-431c-9715-3deb2bc200d1 e57c4416-a81e-4025-a489-a522cc5303a4 a7c9851f-930a-4764-8a3c-89abd642e9de eb07e71f-5e68-463f-a1cf-cda9f544fcc7 0532ee99-c22a-4676-a957-f6abc1bb284d 6e930c35-9362-41aa-bd25-d997825e6426 a7a4cd88-afe8-4dd2-888c-4a2c61e6a803 5298ab8c-5190-4b7d-9b6a-93f0d726da86 b3cd2263-b36c-4068-b934-5abdcfd63595 6d0457b8-c4cc-4dbe-aeb4-cb50c9e9c81e c8f82839-7a8c-4589-a642-1ca8f0706ade 72518507-f51f-44b3-bbdf-8aeaefaab71b 98d26347-93de-4afe-bd6b-ec08ae1de68d 89dd6365-aedf-442c-9ea7-c1204733bfaf 22c3b222-7f27-424e-8beb-4bfa88088d1f 85cde558-a2d6-4e01-80b5-4338916ff140 717aee1e-a2c4-478b-8005-189fbc24027b 965c3447-384b-4352-9e51-de00a10e8f1b 1ea2bf12-7b5a-4732-ac6e-db18a585d0e9 4e5b5104-a43f-4720-b3c1-15562211c13e be644764-817f-4229-91e1-3edff906f6c3 53bad6da-9975-4ec8-b9b7-b3d55430f579 1f2650d2-1025-43cf-a797-b568471398fb af9ace19-a135-41f4-820f-ab7b2553dc05 bb6daccd-9236-4458-b5bd-f9200fb8e852 5851b3da-c865-4e2b-9c2a-dad5490d0067 5e7a916d-db04-47e4-9a3c-36b2a435feb6 148e55a4-467a-4a36-a1b1-330fbb9818d1 2fe85f1f-a7a0-4186-b100-9a3b7ab1aea9 a46ba57e-b110-4e96-9ae8-cc83323cbcbf 427d07f7-409e-436e-9ec9-4fc372655d31 7c423e7d-cdd0-4d4b-a06b-3cffb1ea7a15 1fb2da9d-9128-4ff3-a6de-3ccd09d949ca 3868bb4b-ba00-44a4-afc5-3b71499a96e4 290f4e70-2d1f-4efe-9a1b-e8139a32443d 25a92e46-47e8-47d0-b835-cedcaee04137 9c4ebdb1-24bd-45ed-ac32-c18cfccd5a90 842c1f5c-e7c7-4215-8a25-85ad4186402e 5dd689c9-aa7a-400f-872c-3a220fc7e73d b7e04bcd-b6b6-4794-a1a4-9897c80b6b27 b91afbba-b9cc-4078-b6e7-c224321efeda 1d641394-8cb5-4174-8431-1b8223d50984 c7669f55-658d-4cdd-9af5-17c9dfd7597e c6d1e0cd-a1ce-4a46-bd2a-9de9c84c3698 82f4ecf3-60bd-477f-8406-01a84e1092ef 272e7dc6-0746-4c3c-b758-ede7cd5e325c 3a91d178-1bc0-424a-abb8-3b029091b0ad 9d06c0b1-9a27-457b-a3d0-d80fb19ed5f2 d27cc1c5-263e-407e-ae85-880956aff1ee 28b24ebd-1995-49be-8a23-2244cb000384 4bf88352-c98f-455e-bc88-71b2ca09a6de 6d6d3828-4879-4716-af3c-2f0218f284b1 3e062883-d4b3-45fc-832c-3c69d87f29d7 420351d3-cb4b-426a-9ab8-340819bd7e96 47d49017-733f-49fb-acca-15654df884c3 0ad7eccb-510f-4e26-a71d-2e61684d8cc5 82c4f917-5f98-4eb7-85b3-4ca5931abd07 d027a2de-076e-4854-a282-6418cac64328 26695c51-fa61-48bd-a33c-2e754533bacf 5a0c9c27-d775-4aec-a325-163ee921a770 3354eb66-4c59-43f4-8e1c-5378e79e38ef 2716356e-d4b8-4781-8927-c9665c591f51 eb0a09e6-b62f-4215-a30d-061ad598144f d481bb90-1896-4e9e-aa62-b34a863f3a50 7779f969-b069-45bf-b628-4aacdbb7ba5e 9a83537d-258c-45e4-abaa-a3a4e741ab29 8c7f5787-0d99-4afa-82c2-94fdc09f26a6 cb28fa3f-e263-483f-a472-01fa416b402f 58251b87-eb8b-495d-ac35-83802101aebc be241b74-63fe-453c-bb81-b33375c9a9d1 e3eede2b-16f2-4b5a-897f-abdcfdd3793e a25e3f20-7785-4495-a56a-b8b5288d3e85 aa2d9c89-2c2b-4a40-8cb4-920c54afc247 8ba9064a-c77a-48d0-baa5-9079a25493ff 7ce0ab2c-a217-4847-a451-8ef1a59108c1 5ac7b70a-c786-41c0-95b9-1d81dbea1b6c 15abf199-cdae-4d0e-8933-5d7a7e3974c4 aefcd904-cb25-4598-ad20-ae496f8b51c9 57f43cfc-a9f5-4feb-9834-c511672f30a0 f243cbdf-30dc-4381-8959-d372d4cea973 17fca837-e5b2-48b0-9105-74006a7e7ad8 e9ce2246-1bde-4c4d-aa8e-49e0bab5d3fb 9fbe8898-4464-4940-9aaa-c440aa5532a3 8e643c88-4971-4977-8571-e6498028e934 eb551930-04bf-4ed1-be0f-62ea04505129 7a7aa462-4a72-491f-946e-8f3ee47d744d 00ff6017-576d-4398-bc5c-214981fdb728 54288115-0b59-4a3f-b8be-78a8dc09d245 8833b528-4334-4eeb-8b12-76e9cfe1b80c 93546b3a-1aec-4a76-923d-1686151e1760 31a92315-740f-49cd-bd41-cbe0ac81d779 682618d0-423b-414a-ad74-60e33f53ddd6 f7f0fea0-67f3-4378-97a7-a8198ae7b11e a9b19e5f-20e2-4c06-af26-a48a547a851b 172c8061-2834-4b4d-beef-abe1233a4cce 16ce0f65-669d-4b7f-9e4d-7da9b3188a5a 7097962d-cff4-4b04-91e2-01d7a0ec62fc 8472283f-0fb0-4b09-95d2-7037f6ed0da4 caf7b2c6-843a-45c7-afb0-1a1c0c80810f 1250979a-7cb7-4e2c-8c57-3a1c6df87566 a7a8ee9f-99a8-4e31-b7db-8294bdc0dfdb 695ec011-fca1-415d-a0d3-8e9fb2a0f8ee 458c0df3-7f4a-429a-ad2e-00cd69a982fb 62daaca3-2744-43ac-9019-05e02e8ca17e 6b49c431-10bd-4a5e-88d3-b8931a58bac2 119fe091-2f4c-459e-a221-ef5887397910 c53e38a5-c6ad-4f79-8ba1-bce5259e639d baddf407-3e98-4148-9e95-ee728d4cc164 ad778481-7b78-4dd2-bc20-25d13e48f0a1 f9e4244e-1c72-473b-8359-69c45a726994 7591291e-3777-43d1-be10-8e7deaafa005 870adfd1-55b7-4a62-9fbe-866970148698 abcd980c-f55e-46eb-a7e6-9de89ad660e1 6082fde1-fe83-4a63-9592-832ce3dabd7d 09f9f209-2957-4645-ac7a-bb0ab87024c3 7b2da1f2-19cc-4c7c-b3e2-cd50c3e80dd6 6321892a-f51f-4803-a41d-0fef706056f0 439b2b51-0df7-463d-90ef-674f17ca7306 61c1d947-6823-451e-960d-db4a85f721ce 7e05f286-9ba1-484d-99a0-d596dce194a1 dd39c5df-2394-4821-8d8c-141aaf518927 4351786a-8bed-4973-bed5-f361926d2651 d4db2741-2953-4bad-bdec-b5db31a30a2c 509e583e-9a1d-40e3-98da-3787004c647a d7313ed8-e42c-4f80-8ea2-7d321e0ec566 fe84e608-f3c8-4281-bcd8-2a9e37afe220 79da6e01-a89c-4292-b57b-d1971ae26db3 aff86db0-8a01-494a-8a8e-4619718f307c f69a89d0-8e31-45a4-a643-67db5a3969c0 777dd99a-5335-4dc1-a3b7-2f6943d67255 2130b533-de2c-45a3-bff4-eda342b3d252 4f4baf72-735d-488f-aab1-ae27d21e2099 cc542d6a-f310-43f3-990c-efb9614659fe 0c50bf29-c17d-4b8d-9a35-6ebe77e30943 fb85c189-41e0-4a74-9924-9d905c2d2213 dfd61c2e-f122-4e69-bb89-dd27960fb891 d83046ed-f045-4c79-aad9-0b58abedfdc6 ccc16959-7580-4877-bff2-bc169d0db85f 494fe60d-be6c-4c9f-993a-58e73144947d a107acda-1e63-4ed2-b2cb-0f7809aaa2b9 9af12087-0edf-461c-9d9d-0197d8459d45 eafb94db-cb6e-46aa-8e2c-b2bfd18dff7b d2d2a365-e67e-40d3-bcc7-0a5de1a9dffd 11a1a518-6954-4028-8e2d-a84137b729ab 071dc2a6-314e-439a-8a01-0e43c4a0de77 0d5538c9-4e7b-4267-a9fc-d61521bef8c7 9f393997-e26f-4934-9371-3fa8ada890f4 d48d2d72-c311-476c-bb9f-7e125cccb8fd f9acb8f0-e089-46f0-b0c3-8bb231961902 85c46d3b-2d26-4f64-8e48-59c808035d91 125ba813-31ec-4411-8edc-a8df77d0df94 bff305cd-6edc-4eed-ad1c-73d2d153e452 3b0be01e-343c-48ee-bf8e-3d17504f86c9 8d9d196e-005d-448d-af8f-50573fabb9cf 046d9fc2-0df8-45ca-84af-de9c425b96c3 186f6d70-51f4-4ffb-b06e-3aa561976305 2b307448-42a0-4a79-8e2b-9805902ff7a1 856cbb48-f9dc-47c5-af21-53c27b3baf48 0fdb996a-0b7b-4abb-b68e-566e0825709c 93dd0c89-b98c-47e9-9397-c7efe225712d 56e1fac7-6150-415f-8348-a5c31a9ca360 33847e47-710c-4650-b3dd-60e92f6fe0cd c9c618e9-ec40-4029-8baa-fa394b74f40b 71849faf-26f8-46c1-8bcd-d46541931bf6 7616209a-d541-4037-9d5f-fd1a2ecf52da 26f93e78-160b-40c2-905d-457321cdf0b9 a4d446ef-24f0-47bf-bb32-6f8afbffe13f d3551ae0-639b-4793-94ca-4b05a144b918 80a0b1d1-0938-45e6-a659-234775c064f9 940a5e3e-63ed-402f-aee3-f34b8d78a596 6e633991-d2cc-44ad-8f1d-75aff53220d4 0573dc1d-9d28-4c2c-a4f7-c74bcd6a9e97 d1478a32-608c-4a1b-b5a9-72b0c68fd979 6fb79ae8-99cc-4fe3-a3e8-d5a9e8eda068 eacf7253-59e7-4876-b3a8-e90fd8ed926a 40cde969-ca88-437e-b7c0-d544eb9a6b21 c296638e-822a-4148-b65b-dbdf3964c377 e5b7474a-9570-4318-83ae-2a157938b7dd 9d4c668b-2ac1-4e2e-b9f4-71dbb39d11dc 53b480f5-b74d-468b-891e-44e598ccafa2 f1cb8e02-0d4e-4e3d-861b-416884bb4a7f 7bfe83c3-8ae8-4002-9885-6bb34c9a7fda 75417062-a039-4dc0-9ea0-9a656daa9ead d0f335d0-157d-4d3a-ab0f-cfcaab989b3e 3d442d4b-a3c5-4003-b59c-019d8b92ade3 a69974d4-ddc3-4879-824f-82c70973dad7 0103b1b8-6da2-4960-aec3-6ddf66e18447 88fe6064-6c19-4798-a609-29217e42885d ec55c84a-1385-4b1b-9ed2-814c868fa6ba ed7265d6-f1c1-4b60-827f-4e89e2add386 8744089f-e231-4187-9e28-849233ef2e01 57607422-dadd-4c34-9e57-84cbd4da5cee 536ec430-c07a-48d7-8cf4-ee28914799cf 76f30864-68fd-4c37-9fdc-0ca22d627111 a84d5f5f-85cb-4cb8-9d12-d83f76fb7ffc d23e413c-52b0-413e-9f2c-3f62e61a84b7 8d06c8b0-cdf2-4d5a-af23-06c4fc5d883f b1fb35b8-2418-49d6-b370-dd1fa45609eb bd749853-3e40-4ff1-8dbe-6c408ee69dcd 169f7c8b-f034-4ebc-945f-a6c8d566c06e e6546d9a-cf5e-4c47-a919-b12495a7eaad 541e30e2-bd80-4642-9633-e7384e11b43b dcb1b30d-c823-4fac-9f7d-2e1558442a77 51c51a8c-e88c-48d6-bcf8-d136e0575cb0 8b56e666-2a3d-461d-a2a4-cba752580426 f367e656-52ad-48ce-bea6-7cbeeef1e089 1673eae1-0e50-4de6-85fd-8f45ff930fa7 3dc803cc-63a6-43c1-8e24-c9e02f4b5a7b 869d98b7-fab4-45c6-966d-171e1363c2c4 1f01141e-734d-4fa9-a3e0-f8a2cea9a03e 4fcf0e2d-ee90-4b05-865e-98a9fcd007aa 61edbb7e-dfe5-463b-bb59-36a2dd1db8b8 cd637820-025b-48dc-91f2-738a48bfa644 9c022e8c-5dd0-4d4e-bf80-2c52313a14c4 3df26fa7-3e5a-4a7d-9818-dcb214ac404a 073b6cb3-4132-4bb1-8f51-ba1267357ba6 293cdd91-f8f1-47c1-bbd9-2090c86263c2 bac0ef61-02e0-4935-a59d-02bf3b064f4c d82eae1b-5d41-44b2-a0c7-e6e365fa9158 64101557-a373-4ef8-84fd-5efb9c79836e 8ed00ce0-f396-40c9-8b52-c480e0b6c2d2 155d5433-0c9d-429a-8e30-fd9894328156 51275eaf-cb76-49aa-afa8-ced291032666 d0d7f972-bc12-4bb3-9861-aef01beebb4b 457263a3-46bb-440c-8ebe-a1eb53363e7d 3971e0e4-afa6-40f8-b49e-2bd6653c3df7 64cc2ffb-1c46-44a6-b3e1-bfc043f22268 23ea3dee-667a-45a1-b143-7f7102f6be6e f74de5e9-128c-425d-9539-1f3e2700defb ae51d560-0ab0-4bac-a0c9-cac2bd55b2cf 9a2c8543-2744-4832-937a-08dec2752e71 b6320477-abc4-4719-9d4b-230b7374deb3 221fdc1f-9ea6-42d4-a484-4a7608798b1e a31eedc1-acf0-4313-bc2d-7c4bc68d3a93 8edd8863-e45a-4a0b-a65e-21d17e3e9d48 4fa44364-ebed-42da-88d5-e39e73fa0ec3 9060316c-cc16-4911-9e21-c0341e8cae21 95adae6a-fd11-4f7b-8f3f-40ce7932e9a9 4132ee7e-fcf6-4f2c-a1f5-ed0a11e1fc20 6f40de1e-994a-4b17-86ff-9404cd480f75 f57c0011-30b3-4cbc-aea2-3375aebec281 123b257c-c0e0-4577-8f88-12711548d1de 5e0e036b-6eae-4e7d-a100-7dad58d63984 89006157-4729-418f-b37c-be61bdde1488 e044828b-39ed-4064-a03f-b71e61ebb2a2 c24d6a61-df98-4ac7-8537-074b20b6800e b7e1205e-3a66-42b5-9774-6cdef5db3f62 1d34a19e-bd40-4dbe-9d69-c8d2f564a144 130544e5-c794-42cd-8402-c041f3481558 5801931c-f891-448e-9919-28ae091ad6ea 6cfde965-648e-4085-96e1-62c6e030e688 a1f34c14-7a6a-4604-abe1-9b7c2b5a21b5 35f21151-27c1-4b7b-a1b4-93ac18cc40a4 18dd0562-605d-4554-ad31-db07adde75ce 8a9a76aa-3cdd-4f80-a1e1-0ef3d9c3bbcb 392daf75-cdc6-4822-8911-f4e48abcc980 0206d11f-4476-48ff-a5a3-623697fb09e3 b212927b-d8b6-4918-847a-42a0e681c825 7f21b260-154a-4864-97f3-506b41992dbb 26d1d2ce-b997-47b7-8db2-e9bd6ec88c71 ee7b360e-045c-4d34-8f5d-4c8161209f59 c02a79ff-7ce7-455c-8389-9af8bfb31eb0 275a74b9-687e-4ff8-ac8c-37155d0aadd9 9b3e8620-5973-4ffe-a7d8-2ea08e6fd4d2 890e21d7-745d-4ee6-88b1-96ce78495c5a 88704c59-894b-4b6d-bf22-b6c5e2f3d16d 02f91cc0-2786-4b09-ac30-b4aab0ea0459 5237894e-0202-4c4e-9fa8-2038ed4fbc91 e51d5b19-39f1-4593-88ef-7839e657143a f5ead3dc-b971-49f2-8cbf-406e0d8e0220 0d377395-eaff-4e62-8fdc-aa6fb571c609 1e6e491d-3f4a-4853-913f-07ea0afd88d5 ff1a989e-32bc-4c69-9c0a-0c2eebecf86f a00b7f23-a0d1-41e5-afa9-53943349e4b1 40eb9c34-994f-4bb6-ad8c-48c93cd3b2e7 55d837a5-a354-493c-98bf-3adf3b238239 0f78de53-401f-44cb-b427-e611eefc2561 7e18517d-4c64-4f87-8665-ea157eec053b 27edcc7f-88e1-4d67-a686-909ae204881e 186cdc77-b299-4a1f-9861-ebb292679b50 939a7a52-3f3d-4b4c-81b0-948e6566fd62 80e87e83-496e-4df7-83f3-e89aec26fee2 6f3c9b32-c673-46c9-9f41-15a47ddc90d3 06c7cf41-6d57-41d5-a5cb-b91d533c4c87 129522bd-f70d-467e-afbe-72b5b4637cd4 2ddf3e5a-ee20-40e7-afe0-1400c67dccf8 b8414d35-3385-42c0-a3ec-3582341f32f2 b1ee4857-1482-4396-9974-1ecfe7987181 f86d3ad8-7686-4588-92ad-3590d6432b0a 6019238f-d45c-4e86-9f72-6f4e216eed28 280ed56f-4409-44b4-a336-9298c31f4937 637c959d-99e8-4b51-8ed9-5dfaf0b3db86 f02cf38f-1924-43d3-82cc-6c12ee6d638d 71aa349f-13e7-488b-9084-74b1d95d34a1 de2d7ea1-05e9-49ff-9bcf-cb2b3f671928 3611433f-90b3-44a0-9a68-c0e1401f562f 2dc2cea5-ca0b-49ad-b996-98a59b8859a0 4cc7112e-2c50-4171-89d2-6b2ad9f82e31 79fb6224-3bf1-464c-a637-68d396959c6e 764721ab-d9e0-43e6-84e9-7eb1d8dd8ba1 3aa65eb8-2edb-41dd-b017-a7a7ecd01f7f 9c8668c2-bbe3-461d-978f-846d62de47a8 6c329d9f-74fd-4b07-bb3c-6a1788846ba5 2759faa7-4f98-492d-9290-cdb2bfe0bc88 9cbff607-483b-4ab2-a9ed-159b728b80d6 83fcc426-924a-44f9-b2b2-e2612c27d899 e9d84101-6c60-4b3c-8002-1034881ff07e 5452af1a-0e46-4d4b-8f81-cb351582b729 c1fb1280-86c4-48cb-b1c8-b77e48882187 e735de1a-8407-4930-bc40-2616fd383f46 769f6b36-ef03-49a6-826f-04b4995a7a0e 30a8043e-0c5c-4c3b-8f43-2fab5cbc159c d61f0915-4cbb-4549-9efd-6017893b43af ed120505-5aaf-4d89-a742-331bc2187d20 e5cccd2a-e123-411a-837d-86da8253b6f4 5cf31355-5afe-4e76-8063-1d80a8915b70 0b93e109-b781-420b-b65c-e194f9cd75f2 05f07c68-5aec-4b75-b352-381e2b8850ae 21f5b8a3-603e-43ff-adea-a6273ac62ecd c2fdc08a-998d-4e23-9239-4c40601a86c2 c319f04d-b803-4d34-bf82-06fe190637f5 7faf529f-27d4-485c-b60a-0738a4aa63cf 2d7fe226-4db9-40aa-a3a9-ee855d6eddfd 8163d0e8-9fb8-4fa6-9df1-ba1cba3418b3 38820671-c644-416e-ae61-f5ed6ee7e1d2 de393a6a-4b04-45eb-90b1-8379db23d92d f7fbe1f5-27f4-46e0-87c9-1e13c9e4deee 86d1e2cb-7aa2-4e77-a8fd-46834a8cb114 65cb5b33-9097-4f36-9a9d-c9991c88cde8 91600f8c-822a-4a7e-9df8-476601e1e648 099ba1ed-b4ca-4701-b8cc-b618a7ef0219 3774040d-4593-4761-aa47-404380e5ff27 9a30a5ee-41de-4b28-8400-4b3f9f6c9b57 daeda5e8-6889-4312-a241-be1e3c21d2ee 98de2a0b-29c7-4bed-9f6a-0fba72f29a50 6818ba89-a1c7-411c-b840-219ed3fb5bd0 38d7b32b-b3a6-4b16-85ac-54b022aaf05f 65b92ab2-ae24-4125-af56-8f83ea02f92a 2749d9d9-d925-4d80-a786-83a55ae019ba b876e2f5-2e7b-4675-bbd8-3762cd617651 692b8f27-518e-4ad9-b8b9-ea28b2452729 8444dd93-5ec4-4a90-9914-1cf4123116d4 71d6189f-d813-4987-94f3-86db8e32b958 4345a7bd-2c3c-46b6-bdbd-da025746510d f0bb1c20-60e4-4394-86bb-7dd90d861d28 ee9d5591-ec9c-4839-abf0-48a2b74aca3e d66b625e-b2c5-4a82-8a14-654acb37bf82 d5be6294-0953-4a73-a00e-4b0d7f29dbd3 d04c98cf-d157-46f5-8237-d4747411f412 06abd524-55ae-4b2c-b862-7aa736edb1c9 5c9e51d9-093a-4814-9711-d08a3b295af4 724ba5ee-c4fa-40ed-b414-634aaeabd8fd cfb1fd46-ba0f-4861-8efb-61638d175218 7126fe85-64cd-492f-874b-1e996c212019 0b90506e-6c86-4126-9f97-2f2bdb72ec9b 87041400-e6f1-4dfa-bc81-86c200c2cbe3 68ccbf97-77f6-412a-83d1-50532c892c1e fd44c293-6800-4ffc-b192-7657f5827d8c e2e76e90-ecee-4411-bba9-8388c95d2278 d97450bb-5090-4e1b-a056-4c22d0dfa7d8 02baa9d8-c5c5-4c80-a0c0-1d7fd6621892 d7cccad1-3d2d-4318-a475-d11ac31b92ae 7c80ffb5-eaa5-45ff-ac14-4971348e63f9 5c1f704a-4553-43c9-8b48-01b8e70d13ab e4053192-d9a2-4fff-bf00-336108c277d0 03332b67-31fa-4a86-97ee-547650b75365 0130e43f-9dbc-4d3c-83aa-42c306793e16 f15051d8-c367-4731-811d-0dd9730c0028 ba1e01d8-e315-4339-b3a5-48e826777d0b 1fc6183f-287c-4e35-87ba-fcf98fe28756 f48eeced-ff4c-4004-8aa6-7d6b346b11ad 767ba794-2c60-4faa-9415-652d8b9f7842 415c4801-3f1d-4181-9903-25e0f696f8a1 ee192e0c-c331-4692-b0c6-e832c669d106 e9362cc2-ed08-4405-a195-afc913c7e58e 14a4b5e8-5963-4d88-b3ed-995d87e7ca5d 75a71ba9-e8c8-4ce1-8045-07ee9d875e34 ba8209db-bbf0-4a36-8462-1fbc6aa36d97 970f105f-fa0d-47db-bcd2-1f45769a9732 ea151e2f-69a7-4153-949c-4d8ccefe57d7 77d36f7f-71be-4318-b021-e563351981c5 7fd1c00c-2402-4a52-a50b-147420741c3d 559b977d-10e6-425f-804b-f45c7be2c889 f750ac7a-4e05-4a79-bbc9-bccd909a3aac b7133eca-959c-4eef-bba6-f7491bd6ec59 0e2e2e24-7856-43dc-b274-89bc2314de9a 956542fa-966b-47c6-ba19-4096a56ad4f2 46b88ada-1f62-4586-a04b-6509dfe4dbdc 41bb09fd-c708-4de6-bcf9-43f2bba9c25e 23f4a0c7-3b8a-4b5a-88fa-6b1044a54249 72f94aef-b8f9-4f5c-a036-c54623785e60 656dfe23-8b49-4449-b738-98a97ef59d11 607659a7-125c-468a-a6ab-3672825fab16 3c0b5648-bd06-4576-8dd8-87cfdfd5c8a2 8fc85e3b-cd67-458c-b1d0-d76410bc1df8 97228bc0-6607-4bb4-af2c-86248438543b 332b4e27-0eaf-4898-aa7a-1fead17df180 bd86ebf0-e597-4309-b7d1-92917e80b2d4 9bf99c4e-bfbb-47e8-8a92-6e515ff9f4da 2b83c5ed-d8ae-48be-9f48-eee74767d2ee f79a30bf-b39e-43e5-b9af-6aa9983ca9c6 b9dc4667-0f21-4ecf-bedf-1aae44793491 02c2bc7c-c68e-4f82-9570-7f731541d882 541ab33d-5378-49f1-85fb-8d70fc1bc12b 6403e6e9-1e5b-4fc7-b100-0b8a02f51307 83a78c43-9be7-4abc-81aa-488dfd3ce921 976e85d5-627d-4bd2-a114-3510c0b967fd be9a4d35-f14c-4505-a005-7e3ca2f6e5a0 4cd0a7ef-e2b7-421f-92fa-c1d50db589fe d1b284a9-a785-4966-8e23-e48a5e6e5982 079d964e-8e48-40c9-bf30-87a3f3416e2c 07ab92b3-eebd-4ae0-8f42-0f60b73cb08f 31f99ddb-3140-4980-a173-236f2cd37e72 9811680a-e859-4d40-bc02-316c34e7acc9 402bd170-58e8-4f38-8358-330eb69de0e5 2868dd85-a347-499e-8339-f22e8e0841ab 35721704-a87a-4d7c-8520-5fac62576228 cda58262-bd2a-4f7b-b93c-a8bf9062fccb eccc5c6e-e2fb-4c9a-b772-14715ac1fc15 cff3fdda-7145-431e-9857-c22ca9f3976b f31346f1-bb7a-40a1-a608-b50fa8d712e0 6b235fe7-fbfc-4c50-b9ee-e40904ea067e 7b2346c6-0efd-4f16-a445-5b6a81643643 a5ba13d6-e52e-4b07-9cdd-71e7a74d6161 b1df2ac1-6e40-4dda-90db-95cd78e9958a c5fc89ab-bbc4-4199-a9bf-fb9f5a3c8103 fa1dd9dd-41de-44b6-8ee3-909c1257689b 574af46d-c600-429c-bc03-c9859cda95d4 c9c84105-9334-4416-a596-8112fea79b8f 3cbaf64c-c26e-4396-80a1-177a98511fe0 787e17b1-8fa9-42e4-bf75-ea586ef425d4 796e6714-1b9f-4ac4-9784-a5a1fe13bc6f 64f7dc89-7ba9-4e75-a0ba-bdc5e16ff58f 83e33cb3-91ba-4298-aa65-498aa6a408d1 cdedff08-bce4-46f7-bb2a-2b60fd46b79e 18a077e7-b480-4158-90fd-45ac3d1bf01a 51168eab-6cb5-4cbf-b38b-ae88db3b7e2c 248bdc39-cc11-48e8-80de-fac955a48e5e a97377ac-a342-488e-bd3b-30c4897b2d36 202998b2-5f8b-45e7-a571-cbf6b90c20b9 00344144-84dd-411d-8f3e-e6088996b18a f900cd85-de98-4187-948f-bd1ed81c7a01 c7a14c11-47f1-4c06-9a6e-5de7e3ae4805 8d805c08-a8ed-47cb-8a95-262ef58d93bd 79880e3d-f41a-4e6c-9c56-37504f0e4299 41ff1791-d675-4cd7-80d9-199a42926506 ccc8a853-1b54-41ad-962d-05a5fcf62a83 a69fcfea-487b-4b75-bf02-9bd3ea09a60d 5345b47e-eca1-4a27-8187-8df7bfe3775e 814a18e5-5954-46e9-938f-567a2ff4fbfe 4f802281-3692-4671-bff1-118fc3bc84c5 f1082bde-60cd-44f5-b7ed-bc80c8ceb49f acfa42ad-dc06-46cb-a689-f8ee024ec1e6 cbb11c75-6942-4842-a836-930d229435f5 db413455-12f6-4abf-b8ea-7a9f08ae1d5c 1791198d-f290-451f-9b64-a33fde15c1cb e9c55193-61a6-439c-a7cf-05448a1466e9 96b81194-2c2f-4292-9547-fe590e1b8132 ce268fbe-ad50-41a8-9171-28d7c7d64271 c888ac10-6f9a-4cee-abc9-a62237931354 d23f756e-7b5b-4472-8122-d0cc332c9a7f d944edf4-bfee-4dc4-8ecd-a65b65252f5d b9a385c4-872c-4459-8bdd-325da1fce007 e3802673-2b78-42e4-97d3-e2e681efc6dd b1487d50-9165-4b6d-ac0e-4d1588083b53 fce1c28f-f3fd-4470-83ee-9d492ca6ba71 5866662c-ff4e-4154-98f8-6af40e1f536e ac664baf-ebd6-4063-bbf0-78e9abd0c5d9 74f4a19b-4abd-445f-a0bc-423390180e03 e19f68a5-e2ce-44d2-98c1-7a0d3cc12a37 31223c68-234c-467d-9d53-4377b1b2ffec d6af7363-1706-41ce-ad31-5222c5829877 3b24c7c8-e711-4d35-b2e7-e94a691813da feaedc73-818b-4d76-ab47-3e5926452e3d 3e43fa93-49d7-4df2-ac9c-bdf971d64285 e11a0037-6a6f-42e0-85a8-f33170f0d5ac 272d3943-292e-4996-9f46-adfad591b777 7766f020-d976-4a03-b6b3-be76d38c67e4 2fe83a9f-1be7-491e-be77-4c57aad5295d b19116e1-85bf-4e6a-83d1-df61c1e17aa1 90f37399-da4b-4e77-a7dc-80b6f148fb20 b3b3bfda-e295-468c-85a9-180301a49d10 b2007411-fb89-4ba3-afe4-fe87048d8bd2 a62a72ea-3824-4c84-b126-61580b7cd7f0 9b27b9f3-2b49-43c7-8946-815122a55bf5 96ecd5b8-c08e-49ca-b8c3-e18d9e53c4e4 39cc349f-1970-483a-9830-81c3ff4b914d ad819e8e-c418-4706-984c-7891466642ba f530cc98-a254-4e98-a5b8-2a65e7b999c3 aec6be11-6e8d-4514-9af5-b22a0c178468 c6974e14-34d3-4fb3-a0b5-59f4d101e135 35544a21-f318-434b-a731-7ef60487e2d2 dade76c4-e1db-45e4-b619-c016a9b39f18 e3a31f8e-7962-46c3-a2b3-3cdcc21a0b14 bcc397a4-435c-43e7-80f3-744160daace6 8fb163c0-d6fb-4cb2-8b7c-8945e95932cb 7b2c0d09-36ec-4e63-ba88-f218801fd1da 6939036f-bdaf-4c88-83af-5132e78a132d 56e60d1c-a475-49bd-a2fa-04eb941c434e f9c0df9b-7644-46d4-99ca-c388e5b9e2a2 47906464-4f74-4e8d-ae36-b3f7fa5749fc 981667d1-6495-4574-a065-b5e506377859 c3857982-cf21-4f09-bec6-f92cbeda4254 31eb4ac2-9292-4adb-950a-288d43d1f0fa f9e75f55-8873-4864-ad01-d3570b55d369 7330dc55-78cd-4f9a-8014-aaa2910348c6 03b7572d-5a00-4be4-a2cd-91b16d1830b7 3c39b96e-d4d0-41cd-b179-fbc7ce0310f0 095be242-fc87-4338-803a-fc9f831449d6 35316846-d093-49e8-8787-bf67f4b51c6a bf6f9b0b-a1b5-44d9-8e88-17731924e291 44a1bf86-c4bc-40af-b596-8d251de90831 34aa3f57-85dd-489d-913b-bb84554e0baf 4bcde202-d846-4b73-9d3a-f0560b657901 84ec8de3-5525-4153-b1c3-71412b534acd dd19adae-0900-47a4-b9b8-3022b053a8cc 4a5a9717-25f6-4100-be3b-f9523dbbcb0d f83bd486-d6bf-4c21-ae0d-21b77803e566 b152944a-55ef-45a1-9bd4-5355165d512a ed4916d8-c439-4dbd-8ee6-087b1a6a798c c19eb14d-4d01-4a94-814d-225b059a3371 82f96e8c-28b0-4179-94a2-4e239ec6dd1f 685f2b84-6dfe-4e13-86eb-01ed132e699c fee19fba-9ad4-47ed-bf6a-9d0530b247a3 ea75346f-8b08-4063-ba19-a35df4bfbf33 2015196d-6c77-4277-b35d-6983a83973a7 05921c10-03e6-4ab7-919e-564e5c7e33b7 d4ec7ae7-1e19-47cf-a9a0-54b6d93d0c59 656ee991-e741-45d6-8a49-33c7326273fb a1c6fbb2-5c14-4eab-a58c-6c41c98e353c 096d5ac6-4cc5-4a80-b086-a41b23b7c5dc cca89a7b-855e-4c0e-be86-30e413cecd2a 044bc658-0b6c-47c2-9b7d-350a5acec84a 3323c7e1-121f-4647-81e7-ae2005b92d67 2c666288-7c22-4bb2-a7f5-f78f0996bec6 55afc374-faf7-46c8-99b0-99955d149485 6403700a-eb6b-4191-bdeb-a6dd8d59e6f4 57b4d479-9bb9-46e1-b6e7-ccbaa8be109a d3e29c49-209e-4d51-b79a-742d19cd65e6 43a22b05-6420-4fd1-a9da-00af48ec08f7 59fd9ebc-b0d5-409d-9fd2-5b520c4516f6 44419d05-5fb1-4ad4-8682-bc397b555b99 9f70307d-ff01-4de3-bf72-9ae3df3946bc 2f508504-ad13-428c-a96b-52a62442977a 7cceb23e-2a49-4c7c-96dc-53524ed8e0b9 0e059ef4-2108-4a28-a37a-d3c7ce1091a0 7027f00d-e23d-46c3-a990-b9bceb2d0eea 63e325e6-1fb6-4fc2-b381-2e306d364f06 4f60de29-6531-4d30-b94d-7ba55e9fb26d 2b511c8d-b37e-4fb0-82e4-b754f4287397 38f113c9-acd7-4fc0-a0af-67db7a522718 8ad2b11c-7d9f-4744-a0fc-d9ca6eb556ef 7935e506-2c13-49ee-8583-d31b2e275541 506cedac-d648-42e5-9289-27d092c7023b cb8169f3-712c-41b5-b37d-fc4e29323b58 19a75b80-261e-4260-aeac-07637f388fdf 5a8f0d47-66aa-4a2e-a04b-5647444a8a9d 38e69439-4572-454a-a2b5-f264a7559e5d 835dedac-226a-49bc-89fb-9ee34e998d58 6cd3e54a-c7f8-40b9-9477-56000fc35260 b703713d-4a9b-40b1-ae2d-1f4f50d8a9d7 f4eedb0f-82a1-43cc-8290-1a7c9421bc2e 5858c741-b7ac-46a0-a992-4d8603dfe3d0 757028fb-1f6d-44c7-9481-5fca7b0590a1 dd8f33d0-82ca-44fe-892e-87970b69c272 5437a236-59f4-4b54-9ed7-d615a04990b3 10f908ec-adb7-43b5-8e78-bbc7215a58a3 149225e2-d71d-45b8-8cbe-0067cc898ceb 9b47409c-d49c-49e2-be5c-1cf622fd1577 8b97f7bc-b18f-4ee6-ba5f-5747cf18e47f 1412425f-1261-4a99-a2b1-6d422b44d8c5 d0eb4f7a-9a5c-40b6-b11e-5aacf7cb4db0 663b1fc2-cca6-4ed2-8e09-288bd40434b4 277322b3-8fa0-4ea7-b9b7-a1f8c38ddf9c 6e3f63c4-7954-4a5d-b536-87412457076f 442a9bc2-0c2f-45e5-b84b-269f0adf26b6 0c7e5278-488f-4ed3-be9c-f69f6948e20c 56c9d20e-cc56-44d2-bf7d-0bf4994f496e f2fb1ffa-e59e-40a3-a6fa-f088a350ba11 79debeda-aaaa-417d-a524-4a8443b5ab0f 32fd1b93-4e4d-4689-92c2-688603d2701b c3a58df9-d3df-4127-bf04-102b1bc2441c 65ff3fe4-fb4b-4a1b-ad59-116b97c9a390 e2d02fff-a177-43f5-bf3f-3b6e5268a2fa f7c9b0ff-5d03-44ec-9adf-f5c24bfc0ae7 7d24d01f-cc47-457d-b0e3-80616f259003 d52fd8ea-04a1-4ecc-8949-56463a5bcdf1 87ab0db7-8a1b-4780-97fd-a586cd1ab802 7bfc0d36-ffc8-4b3a-9bae-e40adc2b634c 1d7b0a92-6847-443c-9438-7d9e7110d146 4b54b944-6694-4701-8531-6fde3e8b4b2f 26380706-0261-43c5-8c69-f7dbccb3f40d 2215a8ae-8f2f-4c5a-8044-2430a198d5af 7037a598-75ba-41b2-88ff-d8a7eabe463b 30dbb057-bbe2-4ed4-9fde-b1030b9bd7e1 0d0cd986-e86b-4079-812e-5281bc00bb95 21f698e0-aabb-40e9-970a-1b6744ebb93a e4208291-d6cc-42ab-bf81-2aefdfb64d64 163497eb-3d96-42bd-8cc7-ab87eb290d18 a15d2cbe-b003-4a85-81cc-fb4e2e8f13f2 d37fd749-ac29-4413-9104-f7fa725814bd 11e13910-b4dd-4db3-b4cf-6f8b90f0fe7e 43857cf0-cbe6-419a-b201-def698771e03 d8e17bc8-0eab-4acc-91bc-863f2df2b9e2 b0e9d245-0ad1-403a-ab5d-afdc607ecd10 9685b329-7c35-4779-9b10-a799801bb01e 9714b7ff-96b9-4eb4-9642-64da57a9b697 5ca51428-2669-4595-b174-f9dcf97e06ff d3e68d34-d8d8-4b92-bb32-3f2492dd9f4b f1851b01-1fc5-4d31-826c-e28dbab14134 36918b33-48f1-4537-9f82-855f7770957b f13ae989-7ac3-45b3-8a76-6322065a1e5d 0c6d9428-98f8-4b95-b7f9-dc4c876e458d 0aa1d1ff-3a27-414f-828a-2cf09899a2b6 9bc66721-6e90-4912-b151-528e901bddf3 a2210dbf-f078-4673-bb20-4ea9fa7e75a7 3f61231e-d025-4531-b17e-39992b0a37a9 110af13b-01b9-41a8-9e45-8deeb240246f 04fd2a53-a62b-4dcd-ac1e-5b42201fb81f d33c4883-3ddd-401e-a94b-e2c2a329c233 18402d01-403f-465c-a6dd-fb96733bbea5 85c2ba62-939f-4eba-b598-fa58287e843b 14b32297-5e26-49c4-af31-7992c1590585 f732023e-d7e6-4667-8277-97c5b8cb831c d42f621d-674d-4614-961d-156074c54480 1fda719e-733b-4d94-8072-b7a309b2b381 2adae49d-6ce6-4dbe-b8ec-1519e1f89a85 fa18e243-d6ca-4e5b-a7cf-d30092f3c8f7 959a37c8-71c0-4a08-a1ab-9f78a5b1cfdd cfafe99b-078e-4acd-8d1a-812ad6fe7490 466318c3-adb2-4ea2-9825-ee5fe4f52133 31856cb3-0dcd-420b-a359-787e8f2d7183 55c9f78a-748f-4736-aeb9-35d363b06ac4 1e17cf4d-5445-4d27-bef3-74a8d3e478c2 1fabf512-dd6c-4ea3-bc28-04893fbab4f5 66ca3314-20ba-48b1-be14-5601a236482c 9c3cdb2c-4935-4c16-9418-7a83012f1cb8 2c8c4f35-fc6e-4cc9-b9ad-caf37c0f7f7e abb31f13-b05f-476b-9589-88b3fae23589 46458c39-cd4c-4be2-af44-b29d7e4663af dd0ef237-235c-4caf-a897-3cf2f115acf8 a62efa51-e758-4fe4-a557-218b3324a1aa d9958244-bccc-42ef-af06-c5d4acd43dd5 2d354eb9-17fe-4c52-a349-6cd99b3234a8 6d45128e-556f-4d8e-ac75-516897e24b66 ab2f5c6b-2c28-4f53-ac14-8fdee1a1bed0 a4462b79-1251-49ef-8f52-d464c151ecd9 943fb9a7-685f-49f7-92db-39e08ba994c3 ea0dd74b-7a49-4b7a-ab20-091aa29ae43c f7442b23-3f01-4a4d-b5d0-1762208b39a9 e264cda1-5016-468f-9dea-8ad8da675539 04aaa9f2-d4da-430f-9e2a-c80c9f14f3bd 7dd4dae7-8f92-495f-b361-3de16909f79e 0ae2d3a9-4c21-4b48-a383-48f42b5f3448 ad057897-9b16-4485-b018-e35871ebcfb3 112727e7-b9bd-43d4-9331-5ea78ce38927 5f94e5c8-d360-41fc-9231-051222e6edda 8cb57a73-d928-493e-b07c-e9f8f651cdd5 d14ab803-8d82-46f4-9821-6127228227e7 7efb4c90-e9ee-4ece-85f6-1f6fde6c6b85 cadf2ab2-18d7-4dd1-b039-f9039a07f2c0 96ee94cf-1bcd-4842-a203-9226b945c9ce 8cae8dd9-901a-4622-b78f-cc66a2674863 0925bf62-e7db-4a28-81aa-7f117a243b82 35f66a3f-7af6-4b68-ba2c-498fd6f5a1a3 879a085f-93c2-48e7-8b33-75949bf384d7 41c18352-46d1-4024-b369-275cbdb79fae 1eed7252-ca77-4a36-bd99-e099e6f20a2c ccf305a1-51d1-464c-879c-b836ef40c2f7 031dc499-ffb7-42d2-8186-02947bfc855b 9588a7c0-64d9-442f-8ef1-3b808150982c 91e20e7d-4d18-4448-b293-934e61465bae 07d2a816-e81b-463f-8662-5e69c386dc92 d6e4eaba-b243-4a4b-99fe-66a894aa6e9e 632d76f1-da51-44fb-9208-d92fed382cc1 5c97ef47-38b7-4078-88eb-08e2fed9355f 6805cdbb-2e43-4be3-a459-3593490d0838 202a314e-5f8c-40c8-8220-bd27b314f86f 58245d0f-34d5-4caa-81ca-f5261855af2f 1528ec99-b724-40d2-a937-97f08000e353 b8aa72fd-482b-4841-b467-2aab9b261223 89c494d5-ac36-409d-9fac-70d3fa53d9ed dbb7bde9-d3b8-41fc-93d6-7e30d4f803ac b4f02ac5-764b-4e6c-802b-342c71cc5632 f952ecde-b4fa-41f1-a601-dc8172ff9af0 d8f1395a-e7cc-49c0-8359-eaa13bb8f71e 59f113e1-0069-4541-b1f1-40b345004dbb cee478f9-9e62-4624-87d7-e3e61b63d098 bf59681e-d9bd-4083-b5c9-d3cddad9d66c 3ad00a22-b35f-42fd-9621-7c0102578543 d643deb8-37b7-435b-8c53-e77744ad0add 6f155fd3-f817-4181-a5cf-c914761e08ab 239d4817-a291-468d-aff3-4b6296bfdcd9 fc57230a-ea96-4220-8f47-3bdb871a1c0b a5cf20ab-d4b7-4f32-a276-02692ebe26c8 d1947861-6437-4a16-8a9b-e04d3bd058e2 8ba9a2b2-e411-42ba-be13-56c606f66a85 e6157e30-e597-4b03-a48a-5eabab4addea a4a3ffcc-c8bb-452a-a22f-41b693942354 d9cf43d5-2841-48ca-946d-75704001b498 ed9fae9a-b105-419e-86e8-66d2359c31dd 05b9ce7c-e72a-4443-a8aa-e5f3aeaaff5a 6b8a32c9-3cd6-4973-94c3-114151b0d8d5 68bbd8f6-13ac-4a67-b43e-08eb63a2edb0 b4efcfdf-59ab-4f65-bef8-42f1f667114d 4c80a3db-7435-4414-85ee-f5b74b17fb49 e069624c-5a61-4183-bffb-eec6f14a0abe e4aa8215-0ec9-4a25-8d85-c82eb25f7600 0d9ce35d-66ed-4aae-b37d-9d6cd1681700 afb5ef82-7fa3-4fec-b601-06bc1d5c4481 90d277e4-e696-4744-9908-b1c73b1cfd85 94bc454b-4d69-4d50-8cca-d42b6d27cf50 1cfffbff-032f-4442-8530-1274bbc57230 7a13127d-1eee-47e9-b041-061407466b77 62e15f25-c831-47c4-9b2b-a0abc533a91a 5961123c-ad88-4ec1-b110-7af5bae24b73 5df473ce-e46d-4c4b-9744-6b62de9b34ee b6d414b2-5724-4749-a06e-db18721ce78a 52152d84-3fab-4df3-9b62-0cfba99d5921 80413ae0-df36-4746-9e16-c2a3be49b097 583579e9-0b1b-4e88-a6c0-656116bc82c0 398c7d4d-dda5-43e5-8e6e-193eef6358ac 2577a000-8822-44f4-825f-fa2beb7cfbfd d159a0d1-20c6-4411-903b-d34654e71ce0 fac74d33-73f8-4a89-bcfc-1e5bb991e506 961df504-1002-4bce-9fc3-ca8938b25d19 15da435f-ba2c-43f3-a4a7-a4852788299d 5dc5b272-6a87-4804-924f-6a4863035699 5223b912-982e-426b-900c-ed55aed227e1 0a3a7293-9f24-4618-bc94-ef4f4a5fa761 4fc5452e-17a6-4685-b35a-22f9e94f18e5 fb8a8bc2-3a92-488e-ac54-2c3f7d144f0c 823f0f49-9d4a-45f2-a437-95a078239f64 4ecb4b75-56bb-4c7d-944a-e57bad177269 8f1a67a5-4c4c-4cca-9412-e35790208b8e 5f6358e2-5370-4954-ba8e-9bc1244bf6f0 c5a4e983-4c7a-4249-bfab-65000d375442 4f2619fc-af66-4050-af9a-be3c888a1e7f 42d20c0e-f874-4efb-a599-13b98628a231 e9283bce-c34f-47c9-832b-b19700d315c0 96c3b68b-ce34-4d74-8e8a-715707a248f3 68fee913-87f5-4099-8748-a5a1d621392c 8ae26f2c-9d11-4715-849a-ce21adc41bf7 b46cabe6-2915-4a29-9fc4-4fdcb39f6bdd 04d3da4a-bc86-441a-b9b2-00951c1e57bd da399ebd-2f07-4c34-9f91-ebebc79d3d92 f4ccf1f7-03ba-44c3-bc8b-cbbbd0840314 2d98e034-915e-43dd-81b0-d2b498ce3186 e1c45f50-553c-4e9e-96d9-bee58f038549 849cab58-e961-4fb8-98f7-bcfa404c4af5 3771021d-65ad-403e-9b45-542210bf7de6 408fd72e-e3db-4e47-9d35-8cadfc0a13a9 5bc822f1-3c6b-43e8-ba7a-8eadac7858ed c26f6b5c-1254-4543-9291-9c20e567d0ca 511ed9c5-c3c5-4d4a-8a44-92f20e6b5eb9 15de74e0-fc4f-4cb8-a604-616f32e6a801 df78696d-4360-41be-8f0c-edf1378996c7 3bd3a51e-fb4f-496e-b4d7-24d83dcee9e5 05952b2b-b99b-440f-bf7c-455459968a04 347d7fe4-a954-45fa-9ee5-3a8c1b3fb0b6 94cb1699-766d-4db2-9699-24f921c232f1 c08cefe6-4445-4dca-915b-acd3e5d01d56 d1e8da16-726a-4a2b-9149-28ffb212035e 69866b6d-75bb-4d25-bbd8-98f2146f8456 330731b1-3667-4ee5-8015-7d53f1fe492f 30c78fd6-6011-426f-8c73-b36a0e3fdebc 39e8e24f-6542-4c8e-baac-03c334d51162 d613708b-78c8-4d4a-a113-9ca3cc674a0e 67a3aada-0eda-48ae-a4a6-9e39f2650757 ee909876-02b5-42b7-b856-f9db331a5fe4 15b5b118-dd93-4add-87d7-7549f47cbb3d 7e08f958-eb95-4c79-8c9f-4ddcde0515ee 2a88d030-0e05-4eab-b27e-3fb817f19158 dbc3f149-1568-4e0d-9e51-9beb1e2c413d 3c01d5ce-cba8-4994-8be4-65c6a5ab82b9 d4ed138a-58fe-406e-b92a-377a1f6a2470 169599b1-bcf6-46cb-8210-9620b4cdcf0e a93f0108-8d0d-4023-b409-81a9758c2969 b28c62ad-ee87-471f-8535-0463a630cf44 d1baa198-d5d5-4f44-bc48-b2eef389d4a1 6a1c99f1-44c2-4ecc-bc85-7e63a2428991 3867d2f6-6588-4a39-9ffe-85b660f43bfd 6ece4172-2822-4434-bd7d-d13939e74e6b 93b293d1-45a1-40ba-896a-00fd9f8539a6 151495b1-88e1-4ec2-9d06-29e398cf7ef4 58ef095e-e324-4bfa-b01a-c7a174089a42 5b6cda62-9348-46bb-b141-78bdfcf987c5 58d7d53a-d7c7-43b1-8a2f-fdd647f5e9bb 8864eeea-a2e6-4dc2-ace6-07b925cbcd2f afd6bd34-9a03-40b2-9355-f1f19622798c 4c129868-9661-4442-b313-3546fb53a479 762759d2-0c13-4b6b-ad50-e7fc38c8f287 bf56164c-f79e-4366-8f5a-a6b860e197da a2cbbfad-cfcb-4083-bfaa-ceb5bcf28857 0ce6474d-10ea-41b1-ba0e-2e9c7eeef02d 833449af-b464-4b75-a8e4-fec8b2af08e6 448526c4-4e1d-4612-90e3-287eeb64e2d7 3fda3289-c3bf-46ae-93b9-75d74a7d62c3 d047a7f8-34f6-41d4-8cfd-96c0ad20a64b 8ecd64c9-09eb-4b5b-a3a4-f0de4bfb6f06 1f344019-8203-4ce6-882f-a22ab0795f76 40c8b55d-a399-4ca9-b293-9047455e5a11 ec8a29d1-dfd3-4059-b59e-f593a980119d e4d92b76-b0bf-49c1-ad94-923ada718352 171d0148-9613-42c6-aaf3-7b7e6ecd68fb f17c0407-7ba4-4149-b216-15aa10ac1e05 4bfc85e8-47e3-4ec2-96e1-e4b596f6e769 8550a21f-0aa9-41e2-ad6d-999e85f63b1f 8ea9c2a8-b418-484a-bba0-f636e3572e3a fe9824da-50c8-416c-a040-18ceee683cec d1bc9029-8316-4c3c-9c46-2f6fa0c1750a 06d58e5a-4d62-4ac6-bb5c-3bb3e0103d03 9b0f9632-02a3-4256-8ff8-bdd1361d03ab c0025700-8192-4dd0-939f-20b067a841b8 52e89950-25f5-4d9e-ba5a-610ae1c295c6 b67be60b-068d-4ece-ab72-c4aa8ba5dfc0 f7c38445-2253-4b9d-b0dd-5108edee4bc8 644c5696-99a6-434f-b8a1-977dcea6a73f 2922b416-8ead-4a56-bdd8-13d37de6efd1 1f473fb9-3154-41ec-840c-b9ecc46693cd 8b816f08-c572-4e67-ad61-ab2200f3f6f3 90d0e38e-6e96-4cff-95b1-cdf88fc4658b cf1ebf8e-925d-4cd1-893a-24c4f29e474f 78f39d90-f20b-40c2-9039-27602a349249 ed71e45d-3506-41fd-83ed-4977a92c4ca1 a915e260-3a0b-41d1-a5b5-722ff8f21f7f 0616d207-fbf0-49b4-a38a-59c7e2f80b58 6e683ca2-bb34-401e-a20a-9ddda2fef0c7 5bc47334-cd13-4382-a00c-322217819e82 cc4e7e3f-1644-45e0-be39-82926676e48a 6647e05a-bff3-415c-bcde-ac7a48084c8d 443cfb9a-246a-417a-9eb5-67ca3b6d0106 d5ddc538-e42b-48c5-b070-2fc297e04544 d2f9f57f-70f1-4068-b03e-c5861c75f9e5 cfd9ffe9-31ea-48b5-8f89-0d4bf2554020 290d8df6-7bec-4274-88e4-1e10d0f8e170 4f1d8d49-b4d4-4d3e-8869-c1ed2afe8d16 8c772049-54dc-4c23-bd94-f12d0df26b16 c5ce97de-499f-4f73-a734-a54abed3490e 9dd29086-ec30-47c8-b380-96f8174e0007 5110894f-d629-40f2-8608-2a8bec5b78bc 651dbac0-2be0-40fc-9ff7-88dac1bcab0f 2c4875b9-b690-4039-80ed-c777b477c7bb fcc5c3ef-db7e-420c-b89a-83db28b35b01 ff071fac-f30a-487b-abed-3f1072aee6b0 506619cc-a58e-4f7b-8a00-fbfda1160fbc dce8a3fd-a0bd-4ebc-9f88-1f20181a1195 aca3c436-7e55-401d-824f-b6963ee04a04 a3f227d4-b94b-410d-84ce-c156653207f1 55465dd6-ade8-4a75-97f4-7c050157e5ab e5455623-5d8d-4e23-8f66-383b4c78ade8 c5dbb9c3-8418-42d8-b300-994f1760694d abd10804-9810-4cba-a4d9-214b6f09a7ba fbdad49e-b767-4125-b7a8-1d492bb812f6 e27b885a-6b6c-40d0-a1c0-6e26a62a5776 df04ca3c-e573-4baa-b15c-245120dc4312 b3712598-9414-41ff-9d51-c0d6c0eb0385 d453d2c8-0ba7-4e47-b33e-fe07c196352e 5ebbdcd7-7e98-4e38-ad53-c9a6fc9e10e5 2a187efb-893f-4157-a6f2-3067673b1739 41d6dbd0-7145-47fb-9b31-0bf4e9e47ae8 56bd7a11-b8a2-4f20-b259-431d98c7bf18 586e6ea1-7131-4569-8900-5ae50960772e 16bd3b49-81bc-4698-a956-c752a58049c6 682e43db-bd93-4a2a-8738-513c2d8a71d0 590b35ef-87d2-4a5e-a426-bf3b59e30a4d 9811b85a-33c0-47c2-b445-b779a30b1222 8905cce8-af95-44b5-9e0c-7287190baba4 c6dcd0a9-9e1e-47ee-a512-0aaed7ebdb80 87bb6422-6387-43c2-89b1-c6cc6f847507 5f366b13-9c73-4364-af9c-0784879f859d 7f485a10-07f1-4d0b-b491-83af2ab47406 57c1b783-c2e8-4528-b6b9-d8a3b93106eb 5ec0be02-44f9-4d76-918a-fc6a0872ef87 80657b29-a440-445c-8d8d-5b4a8d74187b 469ccc25-b12d-473f-8573-3c760f445fb7 d389286d-4ff5-41e0-baa3-766adaf6aee3 74f10015-78d1-4b49-9e8d-4b257a9f37d5 ca7c798e-2ccc-4282-8010-d76c3add3318 a9923f37-2ed9-44cd-98df-3892ab85eb8a c5a6f975-c199-4817-8b2e-7e8592030f74 f2d7b002-2dd5-4852-b2a6-736cb13e6047 a7367200-094b-47fc-bb9b-fa4ef45b9d62 eb2ac497-cd69-423e-b382-3ace1eee0857 5641e5bd-cc3f-4b96-9428-cea4cf0122f9 893a3568-5fb2-4bd2-9992-0193a7860337 ec2775dd-cec5-4c0b-afe0-0c59df41f9dd c61aff04-4029-44a2-b0fb-4ea6f448ace2 8540fcd5-4dae-4b8b-8765-395a9e2f870b 9992d644-95d8-405f-97f8-46700b786c94 8627a721-47e0-47dc-9235-ea77bd1042b9 cd6f139c-3b6a-4f41-8f21-f3f0629cad19 171e0847-2648-45e4-ac7b-69861dde2653 ff47c82f-e4e7-48b2-9b34-f1c9db4affcc ef7e53cb-8e1f-4807-9475-526f724cc993 eb71139a-5fb0-4ddf-a839-4955ff7d9016 0472a331-48ed-4b2b-ac62-c74c4d7939a9 db5dad08-7575-4570-81ae-fd3172b151ee f6bf81ec-11f4-4f1f-a50d-6772d5d0cdb5 0971f173-3eb3-4e8e-b89f-b04343c52977 2721ea02-f29b-4b7f-9b41-dd23c31b8be7 43d73c9e-38bb-4b9f-b17f-b878d014481c 685976cb-6106-460d-a423-08818aced11c 0a3900f4-c1f9-4b33-8e57-c71d1ae4b49c a2df10b4-281c-472e-b35f-559597ff5f99 ca0b71e5-696b-48a2-9cd7-4b80bb3c8a0d 29ba1461-1222-4d19-92ce-9ecc669646ca 7d6bd085-3b4f-4024-9747-eba97e9a632d 855ff75f-21d1-40fd-a8b0-43729631e1b5 c0425661-9b60-482c-a7f3-71b57f5ba662 dd2a5aad-013d-4a2e-b577-1ac42826f422 dcb42407-bd50-48e6-b3ff-02200eb58565 8b46aac3-6ce3-4373-bfa3-a0cfd9940ba6 4ced9b1f-05c6-4546-8807-64840e902d3d f442bc4e-4f09-4160-a26c-9a6ddababbe7 8813ba93-5e8f-4cdc-8709-37e0771c9673 c39fc537-80fa-497b-8bc2-271fe4335f10 72dfd4a6-f2fa-406a-bed9-12e195b6574a c6c9ea66-f13c-40f5-a551-ca886153e313 c5b638f7-95f8-4ae5-ac22-d5a36e9cb66f 92c2b771-5416-482d-bb43-6f4ddb5c2318 2d390585-94d0-48ae-8cdc-dcfc72505b09 24efc9ba-f527-4ca8-90b8-fb82091ebad6 e4dc943d-8196-43b3-90de-d36e36183034 5f54bb84-2d6d-4edf-8f85-84dfdddca13f d1506397-0915-4b17-8884-c793ec851e02 faada647-2ba5-4df7-a6cf-f1ae909044d6 7c1d0371-a15c-4943-8660-2646f2da73f1 5a476de6-3a5c-4039-a815-07db0f167823 6d906718-688d-4769-a435-022b1153553a abf34993-d8e8-47f4-aece-9dda691326a4 7cb49441-4e6f-4bc8-9b9f-3267f0d622be 8d5197b8-2108-43ba-ab65-6396338ce949 4dd28054-76fa-4254-9a6b-1bbeaadbafd5 0dc4ff74-2cae-42d4-961a-2989ad66a65e cfc24e7b-92f1-4e8e-b3c9-4b6af48b5755 a3d7367c-44f3-41f2-819e-18238c0cbe3c 13501ec6-52e1-4459-b439-ff78ccac70b1 68e935d5-f363-44c7-b654-e56b5c58efe7 7d6a5027-b4b2-40c4-80ac-21682ca64c35 71e30403-717b-42f9-9688-2f8280913d20 da17aee8-6d70-42a8-8a68-8ebea94fee1b 67d4f5b5-763f-46f4-acda-6f2f5906988f 6202dba7-6d0f-4fb5-83d4-4b087246cc69 b99a3c25-f2d5-4b96-9b38-53fcf6ec6879 234b0054-4f58-493a-b6b6-8f9526820312 171d3217-a673-4c2b-8c7d-5af9e7f4df57 21c08010-8597-485e-b9c8-fc93cc5508b1 59a573bf-dac5-4e14-898b-f2d03ba43e67 6ed28c81-795e-4bd2-b370-ad7c21ba389a 717be92b-f6c5-4a1d-9375-39b8fcebb38c 67a5a7bc-9b66-4652-992b-9a323015ebdb f3869c35-0df6-4dd3-b34e-c48ac3f22020 38a7791c-1569-42b7-af68-0099ea459200 a5888639-f179-4dee-ba76-3c918195ad73 d68f73c2-c510-48aa-b8f4-477b3766e774 5f984067-7bbc-4629-a9c4-3a2d52b3b4ae 699fe035-f8c1-427b-b2c2-10d49f6552b4 9211678d-4bc6-4e4a-a5e4-c74b7fb11396 f142e1bb-8daf-418e-b145-6ac30f890e67 0a1e5ef2-73c4-4bf7-a8d2-eba39e5258ae 970b2f09-65d3-450a-b349-8079c54d4896 1c2a0e62-98a5-4bea-9db7-886390350090 3cfa3e0d-9777-4196-a806-263a85ec6d96 c489f81b-a97f-4bf6-abe0-a79354c4804a 27ef089c-518c-4b74-bfbb-643cac0070ff 7491a902-43f5-437f-859d-c6d994a68539 00faf227-6a44-4dda-99d0-c55ec70e422f 8e7df346-68c3-41d8-8edb-bd39a1408290 7b5096af-75ef-4f99-954b-7a725a6683e0 652133ea-3a48-4767-aa98-b80039a69016 2b7e9fc7-0f9d-429f-8719-cadd3020a320 c4c947ab-4ce3-4cf0-ab99-a7dff4c9213c e9c272af-6109-48c7-9a70-e1f697b125af b1e4b0a8-bb9a-4fa9-a7e9-8e59bd6fbe27 a6110dd7-6f96-45fb-8dfa-6d582f1c3e61 ed09a8a2-cf02-4157-b836-337845704be9 ecd611a0-ac4f-43f3-a3b4-d2f07fa5120d ffbe790e-f69c-4cd3-8003-9ad70858acc2 230ac2e0-dc8f-4224-8350-4b331fbedba9 a0766951-1703-4189-88a3-90bc21d6d03b d8acd6a0-7008-4b76-99e6-4d2bdb7b510d 987755dd-a5fe-4e8c-a81d-098a7c029333 82bef42c-243e-472a-80ea-550d3075faa2 e6f1a0b4-c5b7-49aa-acbb-9f2e4e9e637e c8e4c2ae-e514-4b9e-85e4-a88bfbd2b3e1 d2e71b3a-46f3-4ba5-9c70-d9280b116e46 87234815-212f-4adc-86a7-c9037fedaa46 f039c514-2f39-42b3-94c5-4345a11aa988 a54e2da0-e0cd-4db9-bf0a-3072228f4794 0379ef10-8ba2-4bb5-b446-b2bbaa3b637d 39eab70b-545e-4364-949a-35b401417af4 789c4cab-4a8d-4c2e-a037-447c0df12e2f 4fa70f3c-a216-4deb-929b-16f728e496a6 3f4deccf-4747-4c32-ba98-8f7bd1244849 2b0f5eba-eb5d-402a-870b-9618a76f0765 554a96d4-ab84-4e0b-8382-bfa722162a25 410c077c-c5da-405c-b41d-b611b2961a3e 643420ef-ec73-4e03-8395-66c1f89b025e 7e659664-702b-4a10-8d35-932c2bf4e4d6 fa7bf2aa-9bbf-40a7-b062-1319b37a19c4 c6549cc2-95e6-4f35-88fc-06af3e7da9fb bdbb2a3f-3f05-4ffd-904f-7c6492b1ee72 46fe4592-0579-41dd-8ec4-ceb12b5b58e7 29fcd4dc-fc37-4148-89b0-9eebbb4c3f8d 66b992f8-e527-4db5-b494-e662d0b35748 9da8482c-410b-4fa7-9853-c254a1037c50 ed15352a-0ab0-430b-921b-32ee0e55357c 9989e2fb-6919-45cd-ae0a-21818d515ac9 041fa089-8893-4560-9f8d-febc3b9c64b0 c92bb057-3b31-46f9-922e-58111f48cc11 11b91eb1-df0f-429c-b64b-067d837f6cfb e58e98e3-73c8-4bd0-9c89-dbbe93e6c345 155b6d8b-9d16-4287-902b-e9964bd65a28 183c02a6-6e6f-4560-b133-93c5b54c0962 f50ee156-e220-4e03-8e08-c78f12ae366c bdbe2d12-b11c-4299-b2b7-a5f805e21899 1e2ef2e8-f6b1-4148-8b11-b4f16658c209 086fd6d0-4061-4a43-bf45-021a47d0852e a27745bf-a405-431e-b684-85229ff54261 5b62a47b-1457-4ff9-8e11-ee382ecd4edb 8035217f-731b-4ee0-b25e-94fa8f35d6ec f144d7fc-a317-4bc0-b73b-3822cc93859f 382f63cb-bc6b-4b55-8375-4ebfde1cbe5a 2f72f7ad-6261-4666-9ef1-831fd3401af4 299a8da3-671d-4379-8f31-a3de173e7567 c77ac332-359c-40ce-b069-556c9a8e9bc7 b6810f2a-4609-49d1-8fe6-c8ff21fefd39 32ae0648-8f0d-4423-b4dc-c45265aa2b3e 954f8d11-e3bd-49c1-bc37-af47666c4845 de7e1ed6-0696-472e-9f65-8715c74b8125 91f77c31-604e-4c89-8d96-5a983a2f8d8f 7964e921-9219-4388-b910-a5143304058d d2b1b42c-2ff7-4fd1-9e76-66eb5921ca02 1dfab9bd-bd1b-4ae7-9e74-8cca095b6f3b a3971cee-2617-4d9a-8bcb-a63409f229e7 799661da-f6b9-4911-9273-bee6b9efe76c fdc77c60-b2d5-4634-96fb-5e27cb1dd23f 5873295a-3ba1-4606-af98-0153d0a61da3 97885d64-cfab-47cb-8b8b-b1d127b7b636 b0cd1ed7-69f7-4413-81c0-304a611e23a6 8356e319-2cf9-415a-96ea-15bc9d783f38 7be3410a-d20a-4d27-b14f-33070bd694ee 110e2b50-7126-4325-9d9a-06922f4225da aa3d57c5-7dce-4f77-a816-ba768f187dab 94a55290-b276-459b-b3ac-b99450c34d62 29a54380-eb54-49f7-93d5-4960ca78571e 0bfec91d-006b-4f90-bb46-cdb9192bd455 cf45e58d-a3cd-4947-84f3-e6d36e34c31c 73df62d8-640c-4cee-a761-50e95d8055ae 89cc0e3d-8486-475e-b749-949284253068 7b14819d-822b-4e84-9476-db6309784dc6 3ff5e715-b121-4045-b589-d886ffd51b07 16c81350-24da-4636-b8c5-cba348610860 296ddfe8-0789-4a6c-86f4-1af6513db08b bf8223cb-56d3-44be-a7cd-ed2df032e150 251fd584-407c-48a9-873a-eeb7933c1608 905cb9d3-8f21-4760-93a2-f0a8f5c61b5e de6c74a6-178b-4eb4-a262-fd689e3b1a07 1f9b1999-27bb-486e-a7e4-0a1de36618cb 5d436c32-9957-4fe6-81d4-00ac7e2c00a4 b227d444-3fb0-43f1-ba7a-83f1d4b5514e 480abc92-f222-4163-bfd9-398bc46402c3 83ba7f8a-0449-4b9d-b547-ff50a522a190 191ed82e-62a7-4896-a52e-e7b830b22e79 d2dc7837-ba86-4bf5-8948-f9a5b4d39c45 8098a577-ca66-4d8c-afec-12edc5fa0cc8 362f0f20-0fc7-4192-beee-85e6e039779d 0bf94cb1-df5f-4425-89cc-4f3711a54f8f 4244e752-9a08-4c36-b7a5-1c6a3e4a5381 b0c35060-e3bb-4191-a7aa-cc3ac05788a7 291eba5e-dbad-4340-afa8-6fd7854dba85 3dcf6752-0eeb-4bb1-bb2b-a021073fb4f7 14e59829-8332-4982-9eeb-e26ef24107f4 62721a4e-9c9b-44b9-95da-a80b2118578c 88091542-594c-49ec-aab6-f034787bd410 4a8d5fe3-3efd-4a82-aaed-526a5fa030a2 3eb05488-297a-472f-a490-e60486f0b2ea f0cf6153-0c55-42ff-8a6b-55567ac2d293 6edd9345-c621-4c73-abf2-b64b5b823790 921df5e2-8840-479e-b27a-1ab7b3bb7ad1 823a4c40-887c-4175-bd9b-22a46d074677 6e905111-f741-45b3-990a-44e2a8070c56 5034e619-f1cb-4041-adfd-2ec3926cd345 254a8eff-075a-48bb-ab39-4f852e7d815e 03676028-53e4-4c2f-ac99-1300ddb75dfc d05d53bb-6d79-4f29-abfc-37afaa18d1d1 e0b9daca-db0c-4dff-a61d-4386d04cc2c9 e57e0153-00c9-4a9c-a821-04286bc9059a 7bcbc91c-4c0d-4777-978b-49da91f061ae ea756704-c5f4-4677-8a17-941d641c9010 19ef2f94-0cd2-4927-830e-697a8665d713 21d448a0-ef6c-42f2-9718-3345865be798 67b78362-31aa-4d8c-b24e-74151bc93a45 9705d461-d40a-40b6-8f66-cf6dc92de61e 1ec2df67-beab-43b1-855a-0897ea3a275e 2cc1ebb6-2e3b-44a6-9786-ed9df5ed5b11 61ecbc32-12df-484d-b824-21da0b0e708e d6ed76a0-cb81-4b67-8f45-77efe30ef0b7 11ed0a29-f86c-4f36-9257-824bfcbcaaf7 14c3ea62-c4fc-4321-957b-0da93352f7ef ae71d767-2c5b-444f-97bc-301e949e0b89 a5e7ac89-01b5-49fd-8a5b-d92875ae76d9 157f087a-f33d-4ce3-a546-3417e9d53336 fb0ed4cb-7cf2-4a11-9ebd-39c246441886 abf76b59-8695-48ae-97a3-d94316edda42 f60d8229-0c58-4be2-9f82-18801ee92a3a fdb22f51-15d7-4fd6-85a0-9fbfeeacd4d3 87073d9b-9ef6-4498-b0ed-15045372ae8d 3117f5b5-71d3-4c78-9ed2-656f910f7d3f 1bf7ebc0-5385-4b42-9e95-882fd195340b 27d3b60d-46e4-4fea-abc2-defb557c20ba 19b0a532-542b-4ee6-a83d-76c626c8dbbe 58d3d1dc-1ee5-47d7-9ef5-c8b87d4f1e6d a10d9a15-a95c-4f1b-842f-33b2ae19c7eb c1fabe53-1342-4a25-bf7f-8a5ae3a27700 59c1a142-d9d4-4734-bb73-e9cb5c63c4f9 c9ada799-a03a-4329-b701-521ae98ca15e 9bcd0e61-d845-4fd4-8a49-c82657bc0e19 3968f42c-1e8d-4c83-b71e-0fd770e3e045 9166adf0-df82-42d6-89da-8138b880076f e5788c9c-3677-44a8-ac11-34d668766088 d2c9848b-c81a-4fb2-aafb-efff1d6018a6 fa447693-3876-49c2-8557-d5ed37ce341a 13902770-278b-4b36-833f-f3694bdda358 615facec-d938-4481-9bb3-1a0fec4c96d8 a53b8d55-d819-4dd6-949b-8aff6ce492bb da48d83d-4d84-44d3-a3b7-d1f5116a5ef5 f38ce24a-2338-49e9-9644-be30ed71da62 4ebc82a1-2c2b-4ef1-a5e5-d940555faa1a e8c16308-29ed-46b5-8f97-19a3cb2b300f 94b1faac-3891-4d8b-be59-ef85cb240df1 b1ddf284-3d7d-4ef1-a70d-587c7e03126c 81e6a192-4605-40ef-9cb9-9db54e9a8918 2f8c8a31-d4a2-460f-ab11-908211ab23e5 75790b90-4d05-4e37-9686-376b7cb50839 7cd5a8c1-596d-44bb-a4a5-c782610c70d0 d3585d6d-6a7c-4aaa-b216-5f79e3f4810f a1072708-c72a-49d5-9f84-561f57b5f888 c1da157d-eeb8-453a-b7e1-641950d899c3 c5b9d077-ef86-4520-a366-2667919e978b c514e336-0554-4b6d-baa1-27a3ff6d6a68 e4c29dc2-e3eb-403c-8184-67f3df51058e 38b5038b-7e0e-432c-a6e7-af92f4bdd900 02f283ca-46b5-4fe0-bdc2-c577185ab825 3a741d32-88b2-4acd-ba3d-57c72c0a2bf9 f6c6677b-55d6-4d90-82bb-742ea141f25d 92f1b1ee-8745-4627-adaf-3087f86df677 b1bc0237-2f1f-480a-9f0a-c5f5541b58cb eae65fac-5423-476e-9a2a-db7a32ba22ef b68bd2d7-60e7-47e7-b81d-07650cb0eda9 c228d8d3-b82d-4257-ba34-e3d49a6f1317 c95865b7-1496-4e6b-bcb5-860f132c5f91 54f2c4d7-f665-449a-b94a-764bd1ef84b2 8119c6d1-b2b1-42c6-9d8b-f496c473b91d db836a2d-c353-4808-b358-464fa8c1d96b 4cb2e80f-cc0e-41ca-bad9-1646ba3e2209 14076d88-4f65-4fe6-b167-33782df24e31 7bd4e4f9-f648-4d73-8d26-f98ad9b30663 2b586a01-51f7-43f4-a399-32371dc9b739 97d78dcc-5d23-45ac-b085-77254bb45013 d6527ba8-ba9a-4524-af69-e428efb0d020 1232a5aa-c1c0-4f31-8946-476e3a421f7f 560fc215-1a95-4876-a1d2-fa38b155db0d e1bb1d3c-6bb1-4184-83bd-a7d4ab4ee189 b6c1df97-673b-4698-80c8-a3ee79a532e6 16f0d272-4264-482b-abb5-82f5f0f597c7 441dd476-edde-4d34-a901-4907af7679b9 67cae38c-9832-4cac-9f81-5f8f89f71367 d9fb8913-84d3-4180-8521-80a04c860c5d 978e7f49-64b9-47fb-a66c-ff74354963a1 9e9c0612-4f0c-49e1-a731-d2239d9118da 82cd2df2-fb5b-43ed-9d9e-3c352e188ee1 e1975001-2988-4fe7-a64d-a1d4e51969ca 99dd9bc9-b5a1-496c-bedd-7b4f13dde83e 942afab1-e004-45d1-a36c-80ad701fbb2a 6991cb6d-096c-44a9-bb3f-2e20a0421452 d86b12a4-0af0-492a-98bf-bc560ef66de9 52432b00-7ee6-454d-92ae-0ac5e5be190c 7b62c606-e9f8-49ca-924f-798622864e57 97134aaa-5117-49d8-977f-2cf31df25497 0280c871-e569-4f2b-b478-4f6e4b20ab94 40720487-c4b7-4aa3-96c0-d0f430366c4e c863c9fc-ea44-4e1a-9b4f-abeac5d720f4 b4893a2b-737f-4c93-9475-aa9326e3bce0 fb23b304-c3bf-4f2d-bc1d-78647a7b8d1d 947f9762-3d8b-4221-8710-3aeab24af324 1bee086c-afd0-4cdc-b7e4-ca1275b04272 abf66821-571c-4b17-9ac3-8fd9b1c503e7 3ebc26c4-7439-48a9-922b-da502016f585 433eefb1-0f6c-4bad-91d2-e114ff6acc01 b75bb464-72e6-4f91-9046-85653c94e4f3 f6264b2b-e3ab-4626-900e-716a65d8fbc7 8526e239-9c43-4a02-9e41-931d530de138 627bef82-5ab9-4b74-b184-1cd01af91e67 df5a7b5f-b290-424b-8175-5811784a8a9f 7db8a6a7-41cb-47c3-afd2-54aaf03f718a 2395812b-c14b-4d88-9cb1-c3b1bbcc8ba5 b405bf4e-2904-4344-ac31-d0056e587e0c 8cf535d9-c622-44f1-b8ff-b9299982cb81 803cd2b7-1658-4694-8135-f7ac4d33ac2a fd47ee70-15a7-4b77-98cc-f9e3a5929759 df0319dd-9638-494c-90d0-7296c19e550e 088a568b-e0dc-4743-80c3-80a13c683591 e9fd48e6-3a02-4848-ad94-75f682b9497b 4c0e7640-961c-4a85-9766-79f28eb59900 27f7d30c-843d-4cff-8cad-9f4640cb6d00 82d4c1f4-243a-4f06-949e-86f39620548b 262cc625-8ab8-421f-93e1-27d5ed6a768f 74a4d00a-799d-4d33-81fd-6e882b3706dd be70a91e-f65a-401e-8d15-bc873901d3e9 f9948c07-a60d-496d-9d15-386c787c3ecf 5382af92-39b0-41a4-94b5-6c3ae1e85fc3 2d4a95d5-41be-4233-8595-6a9f242fffb6 9b9368b5-a1bd-4225-a18d-a0e5258c2bd1 954bf977-3d41-4e1c-9e95-09b628745e0d ed9aa613-a1f2-4898-be41-c612aee45404 95a0e0ca-95f1-4089-89f4-544c42099ca9 e8b6267a-0577-4204-968d-63f68980fe25 b9aa84e4-42b4-45a6-b173-865ab03d6696 fdd7b91e-05df-42f4-b88f-0f4a4d7733a3 dbd4e46e-39fb-45b1-a789-acffe69b0ab9 56974269-be33-49b2-ab3a-783fa77a8dd7 438ac2b7-eadd-4e80-b957-b400dd3cf11a 92fd0f09-30fb-4053-b3d5-04585e7e9c9f a262cff2-0e18-43ac-92fb-c1f275d5940d 4a008200-c2eb-4ce2-869b-e6e2f91d4f82 e31e2e90-1f28-432f-bfe9-a7515524033a 045a2db0-6d10-4af1-97b7-b2fb0ac62231 19cfa2da-2ac4-4a24-a510-42b9f89967a5 c166eff3-a6d1-45e1-9103-866bf0a50087 129fb8d5-07f5-4b8f-b0b9-ec7e33a1f593 763d753f-9a5f-4bc5-82a8-39f62cbc46a5 ba14ff39-3990-4711-82d3-406205b7b12e 2a04372f-101d-42d9-b8e3-d3cd73c34d29 fc58fe2f-126c-40dc-85cc-7c9e6227f74b 603d6360-f2f7-4fe6-804a-55423364a02a e1853309-f7a8-45ca-a00f-313138f4398d 33913cc0-3808-4e85-9e3e-ca79f866a41c 1a5c1b39-8586-4f1b-82c1-7de81afe3bf6 e2c7a05e-d685-4eed-94c4-ebf5df70bb57 4f629d00-4a8e-4393-9bff-507656c0eda1 f5a38175-b5ea-4bd3-983f-676e29c135dd 8ea242e1-6f03-4e38-9171-fd56b955fd3f e223239a-f6c3-40e5-849a-cfe7ec8b77ed 77ab1ed6-261c-4a40-9280-c3d55a7a117d 3d3bdce0-bc1f-4e25-a5a0-3da801160a6e cd4be736-571a-4c0c-9c8b-a95824997108 d1deeeee-9f2b-4ce2-9941-ca92af505281 e890688d-3bd7-4b42-ba33-f110c16a61a1 366e7b9d-c6ca-4b95-a47e-23c55779082d 709d3264-0c5d-4e13-95d7-196365bfabde 0f41db86-ce56-4b19-b741-b79e20e2a3f4 aec0d6b6-6dd0-4696-8f8e-010f111577b5 d458f238-d910-4940-a96b-a2da6fe42bc1 65f3cf59-e12c-4e86-a507-608625fc65ef a7c2045d-7cf1-4751-a414-e073fca989ca 49797ff0-440d-4f17-8063-007cb187291a 5ae89394-6797-4357-8bee-4d0cd73312fc 4d2ad5d3-8905-4000-912d-e93a0834cc1a 593df622-5221-4f58-aa92-0e46574e3731 87a7329a-9e4f-464f-bb87-94bb38884282 6b9494e1-9701-4464-bcf8-a5b174aa030f 3d7adc55-30f8-433b-902f-bc826da61ffa 054bebe7-7ab9-406a-b7f6-749a4fca7e76 c589d8fe-23e0-40df-af8a-343eeacfae71 10f0d778-218a-4214-82e7-93bcbe9e8c72 ce879ff1-cce0-45a7-8bcb-ff793b6497df 6df94969-d6b4-4859-ae3d-7ef03186043f 902c32fb-01e7-43a8-ac6c-af3bc19e8a1d de155538-24e6-476a-a89c-1af0128f5aba 60dba684-e5ea-4bc4-92c6-515bdf36a271 9b9d9beb-d2e6-41a7-b49f-05d4f2b97053 cb27d097-3820-4b5d-b720-ef7953a334a1 830e4744-23ef-4444-9438-34099b8dc8db 8dcda148-75f1-4326-9566-1cb25ece5dd1 659a28ee-90c3-49fb-b297-6fe7b1c5e8b8 741023d7-f105-4f86-895c-883cc382d917 14c33909-29c0-4e63-8e3b-bace85098773 570d6b57-46c3-41c4-b8ac-3c0fe108bd7c a5a319b5-85b1-445a-82d8-59f4eb8d426b 388a60d0-7170-438f-ba4a-e85ad5134ef3 982ae636-e150-44cd-bb15-dddc7bfdaab6 5fbad5eb-f611-4dc9-ab4f-9e033e30f169 be8f4877-0140-4fc4-be05-ed8e9d546f22 fdc63424-d554-4e1e-9d8b-1fd89d9d31f1 e82c8d63-fb33-4496-8002-13cd48b66157 61518706-dc66-4e49-aab8-45d0c15dd99e 651033c3-384f-43e7-b820-5653b705908d 2b2afc62-4067-4d3e-a9cb-19e41d27e9a0 a07d236a-904b-46bf-a9ce-ef6c7f099759 ddf51ffa-6df7-4a1a-bd50-59b452718e9b 9920cff3-e141-4011-8c53-7a7168f4364c 64299cc2-2965-4b34-b2d3-d0a05123f3da a78b786a-f5dc-422a-ba1d-e9f8a95e3b5a 8c4c06b0-8691-4ed9-8210-d4c107080516 290e6ccc-c9ac-4b62-8c04-407972d8138a b80b1ee8-a7cd-4933-9618-c7eb93f4651f c7649cd7-48bc-4076-840b-6d5b318f9ad5 0ad8cac4-590d-41b6-9c22-10e35b57d18e 7ecb2c09-3146-45c1-a30c-5b700337143a 3ed251cf-a8ca-41ec-a67d-06c2c324ab8a 3d7c7221-fe6f-43a6-b623-c99d03053d9e 1df8571d-c2c1-4bc1-bf73-a2cae32e5d06 baaea906-c086-445d-9959-616583f83631 093e3166-1586-4684-982b-72491e946c8c 3d3d4819-f87a-42f5-93dc-e04b8d254d14 2d957759-a503-4d39-80a0-735076d24eaf a97ddf33-0d0c-471e-ad55-524c616cc27c 78bec00c-d38b-41a2-af4f-f6496935b843 aece0b44-928b-4040-9b1f-38065e458f30 f1a6968c-4443-49fb-8cdc-23c87fd62cb8 fd85ba58-b604-42f8-91e2-3b1661503a26 f55a5cf9-fb2a-4acb-be8c-ed56b2f72966 b8a6ce6b-7864-4e79-883e-074fb91164a6 1c91233c-537e-4936-9975-ddcf4d8ed661 1a5f2332-09b9-4143-9a5d-8db26867e76b f7243c9d-dd1f-4d45-ae35-5971261dc5c7 8a1ac650-a218-4027-84a6-f9f6242e5443 cb1dbc30-8712-4bae-911b-d89d8dd6ea53 c856a761-8e10-4a4f-a241-8a0405c92d1b 57fe6b73-0d8e-4d56-af93-a330bf88a2b3 07bdfcb8-c4dc-4169-8362-5ed04ab49032 97834990-b9fe-42bb-bc13-e2c0419a983e 5ef361ae-1c5b-4e27-b99a-afea3aa66114 0542e8b4-76e0-4e1b-a50b-d729e3fd4bfa b74e84a3-fa7b-4ab3-9773-8f8aca44b5d3 759af495-13e9-4c12-9bbf-e7461911a5bb 6f6334b5-a137-4c1e-8eb8-c1706039af93 b893bdd8-c8ff-42b8-b2cc-a55e6b3c72fb c97cad17-5a24-41cb-ba8d-6da9eb2c91ed 47ed6485-50bb-4a48-a71c-1e7fbb77af6f 93efafdd-e469-48d3-a0da-60c1f0aac93d 83e0cb68-bc91-4071-abed-96f59b80fb8e 6385dc17-2d6c-4695-959c-dd2131b673cd 1a4761ae-e687-4b19-a060-e4730a360df6 bf5495cc-a4cf-4534-918f-4e23a605d201 fc18a6d3-a2e7-4936-8c6c-a6cdb23bb2b7 3bbf3059-19ca-4ca8-9e8d-4de23fe5efc9 98edd33f-c1a5-464c-a15b-be7ef8a6f3fb e5f74559-6eff-4827-83d5-7474b0f80b5a d98fab56-65cc-42c1-8ef6-b5d2bf8264cd 72e5a58e-d527-4957-ad8a-093f6c31371a 1a57b827-98c7-46ff-8765-d57515d0532e c5363797-db48-451b-97d9-24f2b747deb2 b9165aef-2698-4af7-b0d0-af281d1520f4 4b8fff16-8eed-46d7-8d9d-64c451835d41 95a222bf-b16d-4b5f-855d-6ba497f344f8 74fd79fe-1d7b-478e-99f9-c2b9d2d3276f 4e4650bb-851b-456b-845c-b9299c76f845 2c278229-d361-4627-8bec-1061b06b5b79 da5bc6ef-be6a-47ce-93f9-e5870f1e9ca1 5a6e39b3-5b95-4d3e-83cb-118e3669c0a3 9303e9c0-7830-4e23-826a-8904b49a021e 18b9ecb9-df66-4613-a5cd-13524752d167 95c9630c-9a9a-49d1-b0e4-56f918b40175 798c0bfa-aa05-410b-a536-d7949d60d05c b385bca7-c47f-4ac2-b0bc-da89890d21c3 ff3dbcfd-bd81-4f24-b8e5-2abeefa90b49 6584adc4-11e4-459e-9ea9-60759dd5548c d016e3da-b51c-4322-a89a-bdad4b040a45 93cfc11e-1fee-40f2-9b71-763a5627125c d9271c87-a720-4131-b5d7-c2893d5a1e27 56196ba3-08cd-4728-b60e-9e816b971f91 faa9ac96-d6de-418d-b8c2-ea8874b3f9e4 7affe13c-334f-49d5-9ee2-460c07d84456 75fc83ef-8b95-46d5-bd3e-1889be203762 34757409-94c8-4fde-ac65-84b0cd4a2b7c 68711bbf-5502-40b1-b710-9344fae2cb22 3f39d9c6-1e1b-400a-83de-75d7de1d20e9 27558618-8cc1-478b-a502-1827947fb4c4 ef187168-fddb-458b-a1c3-0e66843e90a4 129942e6-ac85-4b4a-9c53-0341ceb3210c 31b7d56f-cb11-4db5-aca2-12607b4a3219 2c5e435b-808a-43a2-a49f-2a355a740449 7dfafe64-a622-4e2b-99b2-4237920b9874 5b72e70f-7397-4594-8a55-0abc6ab0cb22 47d078b9-7428-4c6d-b5bc-df74cece012f d1d05350-fa21-40aa-bece-b81478473c94 e2da31f0-aad1-46dc-811a-3cea180e3b4f 5d130bae-1b9a-40f2-9bb0-e0fd7dd033b6 a7054ae4-c24b-440b-97fb-338fdcafce21 d5a603ff-fbec-40f4-86f1-ea5a6e060690 04e3f037-8ad2-4570-9758-e3b89ec299ee 4084c7d6-26aa-4b0d-ab60-0bedb7c27103 81d1b1ae-3629-474e-b35d-8736d99dea82 caccd5db-1ff8-4d70-8337-7c1c1a8e6d39 b4b95a70-d321-4004-88c4-41a4a1a27ee9 7fb6fa36-71d9-4159-9fe4-2f0183960cdc 6f6af748-2113-463d-9e08-5446bce27c25 ee0efdca-f202-4af7-8c97-1238a350c358 8150a964-6b40-469a-a70d-159f9032e2a0 27f6a9f1-826d-48a4-acc1-76f21e84b8b2 cc62e44a-e7a3-4934-8ae1-87b73ed7ab43 8b13db33-1ac8-4a1f-a251-093fc4beafc5 d901cb11-f83b-4813-b751-a5be8ce2ad36 dcbcd35a-6011-460d-a6ed-8c072f09b44e 654fe1e4-8665-4208-94c0-28313c63a6cd 7f686c0b-085e-49bf-8637-63734b0b1a40 6a82ea48-b7a4-4fc4-9446-9840c2d1fe57 22e2a4a1-aaf0-4193-a2f7-b13d82e2b2ff 3d143d63-8d86-4d1a-b9e9-537127472884 e519e41c-f9d1-4cfc-b830-12d805520567 3e19a4b0-e54b-4b76-8813-9f20defefd16 8c2f3011-a723-43a4-b58d-1a2d0fe7b2f4 760e3142-be9c-47c1-bd56-d31d528eac70 c7f3c397-7fae-41d3-86aa-a6c15e51dc74 e5d3f5fc-69e7-4b36-aad0-319c4c003b8d a2475852-763f-498d-bfe6-d811135ff3c9 6801ffe1-1495-49e6-8e67-3ffd553b4201 76a46ef7-f42f-460c-90e2-a3b7b8ca427c eaa0bcf0-0a56-4a19-a872-1f01d34c555a 242107c2-6a62-4042-ab8c-dfbc657d2c3e c51a0042-3ae9-4803-9db7-4c8e0c1f9b50 3ee0b1c7-fcf0-4a3c-8951-528915a572a9 0f81913c-cbb1-4e89-bc87-954b8b7cb08d f3800c94-1212-483c-94f7-7261d870d0a0 c09b6bcd-40b0-4687-bdc5-cec2d22f4265 c286fe75-33fa-407c-94e0-748036d0d565 809d1438-2e29-49cb-b39f-5c01f5fd82f3 3e2bd57d-5932-4e42-9b3b-cb1b1d610aa3 c715806d-b42d-4200-a12b-45092dcfc23b 644dfe36-52c4-4fb8-9326-4145016b42dd 295e16ec-5a79-454f-80c1-a169530b90ce 3bc4af39-dee0-450e-878e-3c4a4368aa54 34e268c3-bf62-4fb6-82a2-7e4eebd5f888 6c33e641-6956-40f1-b519-c75eb047a9c7 343c1779-020a-439c-bce9-5d237f5ea6d2 0ec57a2f-3d87-4959-83d0-7b642d4b157c 5ca628dd-f854-4cc8-a2e9-cf8164b1cd9c c36da6d1-a310-4fc8-a185-287d1455247b 61ceae93-5687-43cc-903b-dbf2b0efdcdd e377d9eb-023e-44ef-b7b2-9484dd7dbd40 8597f02b-b9c1-4b1c-a1e3-7bb5d630d686 ebd18ec3-9545-4fb5-be34-a20cbb6906f7 6acb35fd-85db-4d89-831f-51e5965d42a8 6c37e028-ad25-4a39-9bd6-809528b858d4 a6e3cacf-e165-4122-8104-69db9f770060 711c5b65-69a5-4671-8993-fd2e4094162d ee2b34ab-acae-4c05-99eb-ae0a762d5ae2 1f0917ba-c6fa-4aa5-b4a8-84140a9f2de9 b50b62c8-5825-4139-b4e1-9af308930d67 c816d466-d4ed-4d56-8f4f-90ec977d1219 2e925fc3-550e-45c2-9ed1-29c640992135 b92e4365-d9bb-43e4-a5fa-1b8cf9410f32 447a0343-923c-4d1b-9a39-134e8e899731 5037b020-b9fd-46ba-ac8b-b71905216b01 64f273fb-87c8-4094-947b-64deb0725bbe ad06e6f9-213d-4d9b-9b1f-3848a37011a1 e9cd9dc3-406b-4c91-bd4b-6dc6c2536c66 9fc4680d-363d-42f3-b768-bb8d6c55ff47 fc26773c-2134-4d69-9c77-370931c129f5 c5117985-1398-4aae-a02f-420db915fa6d 0b8aebaf-a887-47ee-98c9-29a2d4241a43 78400b6b-55c5-40d2-b864-ada4e18616cd 42654c99-7972-459a-aa41-202f48e30537 a5ccaf64-1993-44e0-a8c6-716f4b32e9cb e5aee258-cfc9-42e7-8db8-ee821db477d3 f623b1d0-cf65-466c-9c1f-32651b68d925 4dc3fc7a-6919-4eec-8254-eae28b327a1e e0b834c6-bc0e-401f-baf0-9666d2fabcf1 89d70f3c-a4ad-4aac-9736-9db1bd420a84 7bda813f-8809-4c4b-b76f-facafb9244b9 3b58e178-b223-4ee4-a617-b75c1873128f 39316404-5f74-4534-bf10-a34aea212dee 55e7b5f0-ab51-4c2e-bd51-cea45a0b386d 22cd83ba-c1a0-4910-aca1-7911b87486ab 4a4ff6e0-a7c1-4d2d-b889-e7c539204a89 d9bd132d-ee63-4e2f-9808-6521bd8f9c42 9f6b818b-e573-4fad-a1f6-2cb05646ff32 ff72609a-0e16-4a1c-8fd6-008dbce7b36d 37426ba4-c1b1-44c5-b355-c35befee9f22 5f3fa51e-ec62-4f30-b45a-965c745867e7 187206b9-c675-4012-9e9f-2ecd00440650 66a4a691-e86d-49e2-85b0-e869674532ae 6b85ce2d-941b-4a16-9d81-f878caf221cd 58a450fa-8564-4828-bedc-7df1ef57db1d 5171ee8c-2d87-42f7-995b-439b687d1ade 20a18365-644c-4475-8421-2aabab21a079 dc783ee2-b126-436a-af94-eb6482df6a10 d3eaa91a-9ed5-4e41-ad5e-8cab79024d39 9c904f94-c1eb-4dc9-b47b-218965edae4c 739ab902-ccd9-4425-b334-fee05e7b653a 68248745-3328-4531-8c25-6e6ba92669b8 606fb214-df6e-4bb1-b14e-edbf5b6ce1cb be6c550d-8898-453c-b51d-9e5063d4146a 963c5b20-6135-41c5-a0a2-0fb4406a832d 21f7bdaf-836f-4199-8b75-d356f8fcdcf1 8d09882b-eaa4-4428-b6ce-3323425647de bcb881ca-b86c-468d-baf1-134c3a4782d4 0a801c6d-06e5-4c28-bbe4-8f2b0bf8f626 23ad5270-9bd7-4b00-8041-12f341875410 1f0cfb65-b259-4300-93e8-0d47548e3aea defe221d-f87c-454f-95d1-69d68ba9824b deff463c-9b4e-4387-a29e-616d5b8971a0 d9202947-e6a2-4c9f-916c-a729d2bc00db 936ffa5a-bade-4b41-923a-351167fe50ce 7e8d8913-1e4c-4a42-83b9-7924563525cc 08ee2bc0-cb4b-4769-91a9-8d83a0e6ec4a 81cfcf98-b7e5-401b-b062-679b50624542 8836332a-1503-4f8d-bbfd-c6a15c13f5ba 5ef5c9a1-bc68-4f9f-9393-a20117fcd1c3 6b93810f-e7ed-4395-b35c-4cc6fe98482f b086b514-b5ee-4c5c-b925-7c740dae78a4 850b2bf0-6752-4bd1-b371-f8a9e3df57b3 e54c32dd-7c4b-4b45-9105-c46eb9ccb831 1fb426af-941b-4386-8831-72b2b72ab4df 435e1f5c-5dbe-4561-a3b9-b830f18e7405 b8102262-1b8a-4e9c-b825-edc7e759b682 9750b41a-4843-4bd7-ae39-f176817f580a 8c7f4604-6e7c-498c-8c50-c446247ce6ea 0530a722-c3de-4451-a2bd-966e1595049e c13f7d75-c334-4e00-9d3f-f655c4a4c901 1adef3d6-69fc-4560-84c4-f0d2d147e769 28530696-9810-4503-8627-fb48b26ab98d ed9c4102-8a53-4f95-911d-165a3f30162b 0c78805a-8fc1-4e43-b5f9-278d14604c36 1b63e4cb-13dd-40eb-a4e5-629a817c0f8f ed3945a3-2972-415d-91dd-ddd4df49433f 533dcb31-a0e1-48bc-b729-b65920606869 8cfc0281-7e28-4e3f-9d12-88aec89ad6f2 17ce51c8-24cf-4e56-a72e-6b47c5c48135 5d5cbb44-9017-4dd1-878b-dc23fd5683b9 3d1927bc-8bfa-4ee9-a908-950d89cb3d2d 5bbf2917-1d0a-440d-beea-36b27b09b0aa cfaafcad-a410-4f19-ab71-87bb40673394 95f3be33-af65-4b26-8d48-517a1cce77da 256160e5-f508-40da-9ca2-4b41063abbf7 3cae7e0d-78b9-4a68-89ed-afbc3afce9ec 33920abb-b5eb-497d-be9c-47cf745a0e33 1bde553b-6fa4-478b-8223-a872973e016f 971c2521-f7be-4295-a233-c439ab9111ee 4bcd80a2-5bf3-4f62-9169-9a6a93a51717 5daecd6f-a280-4312-b7ae-47767914d773 1151ca6b-c456-4ec4-8598-24ee8fe85302 8b5b162c-42ed-490d-aff8-d63a3b89f202 8bd17d66-0b9a-4230-9990-d2fc881a03ac 0769047a-f2b8-4a53-9720-b85a69a512b5 601b6385-00af-470c-a9c8-9dadee92f45c ff835956-2e94-4469-ab69-4b6b1615d50a a8be187e-cc47-4154-a865-278c04d88945 3ae0192f-d28a-4c6f-9e09-62fbd8870651 57bb9af3-113e-4478-a847-7d7e18c7b850 f6fb069f-2fc9-4890-9cec-2fe8a7a705f3 8682b286-d8c8-4461-890d-1f86c7b33c04 5a089c26-f6a8-4cc3-b2ec-3b695f33e99a 499e21d9-90dd-47ce-994b-fbcc6d100382 a321a3ad-fa5e-4203-8f6c-2a3982e2be42 329a7e0c-6699-4b93-929a-93934b794085 be479180-0806-4e48-821b-d1b42c2bb1c1 031549a5-74e0-4110-bad5-63bcb756aba3 d906e83d-65c1-4789-9100-9c93e6c41470 3b6690da-3369-45a3-bbb7-935adabc7bc7 caf96c70-40d1-4d71-be8f-01aa22e1770a 6faa3ef5-fdb1-432f-9f47-89c70c0d1a1d c80e099e-cb0c-4440-b10b-87a9837546df bfaa89b3-fd62-484b-bb4d-0cf69227656d 97811642-1ab9-4795-ab3c-90b930ab28f8 579c911a-6fa7-40a9-930e-a13ca83e4867 8cf51c8f-8791-48db-aaf9-e2016982aedb aec97e20-7d0b-4990-8bc1-ec8dda799431 a06ec9d9-999f-4ae2-8b0f-86ed76255ea9 fda42550-69cf-4b5a-9573-2111cfb91693 cfb7f544-61d2-4e8d-a557-07a8ae27d5de fe71d7f9-194b-48da-b97c-945c1404f50b a9f133e7-950d-45c1-9d51-ff0fbb98c97f 71ef1627-f620-4e90-8511-5f7fa1d693bf 40a16aed-1ac0-46f4-92fa-4fe3629b2011 fe075d8e-9d75-44cb-9a4d-6bfeb6494b0e fce733ac-2807-419c-be9d-1431ada9692e 5dea0be9-b715-42ff-9c4a-f2d00a8191f4 1390cde1-b0a5-4883-a323-99d35d443a0f 9043ef7e-5e0b-4818-a1da-9ca1271e644c fbfcaf7b-9d36-4912-a1fd-a4542c8283b8 9356f96b-8b70-440f-939c-270f43a06906 a661bba3-125a-49ad-afb9-bb3f8695ac92 ef025814-2d35-476d-a223-37b6c5923386 fa520e62-4d7a-4a5f-9902-a8df865233cd fc871afe-a20b-45b4-a094-4177fa8e24d3 808e161d-8df6-49ed-b83c-1e57102c19d5 9fe5d22d-3d4d-46fe-9e49-87f9e40347f0 d306b0b4-0891-4018-a7da-da6aa815a357 94c40221-8b96-4b06-99fd-dd348f67cc3d 30f8acf7-2e93-41ba-9116-8dc0c8800fc1 e0e9c796-ef63-4ef2-8bb5-70391a75f0f8 e908c94b-e29f-46d2-8002-0f77ff17f842 04e36bf4-d5e5-4b87-854a-387dbe7d9516 42414e2e-1f19-4106-baff-542c8774fca0 6c7c90eb-8148-477b-843d-26c9c47004c9 2328efb2-f286-437e-99b8-46dd51fc2aba 60a097bb-e411-4866-81bb-d10d9e0d17e9 93a7cc99-9099-4e30-bde2-7f0a00555d4c 242e82dc-98d5-4dba-8110-6846ad49c1c0 24d8bbf5-5699-439f-bf87-08616df00ac0 b66120ba-5d0e-42fa-9a4e-d6bd1ebea22b a695a622-54f7-4346-aa51-3733581a8ab2 02daed9d-fad6-4f71-8a9e-ddcc956fb574 1e785523-15af-45c7-a1e7-1660058fa313 bc273bcd-3212-40b4-9a0c-58bef300f56d 52184550-ae25-4044-995f-8c11c9f7997f 7f11ebaf-3877-4d4b-81fd-48c1e80f7cc0 7ee839ec-2b15-45b7-bb91-7b6f765bb88d ad544785-2f7b-4717-af18-c650faa902a0 0d244d44-c05d-490b-8de8-66f7c9164541 7bb4798c-7930-4e6d-9f73-c074ed578493 3956f3bf-9a15-415b-95ac-379abb14df25 cf790636-232d-4af4-9758-82364ef1cd23 1c5b600d-1a86-4fe6-8ece-6f04c68ebe46 8f634721-0119-48bd-bb05-e8cc599537e6 85f73e56-793f-4b0e-982e-3a8b06fbf5fe 0c27683f-acd5-4bbf-8e8d-337c2cf1be0c 40e14db1-2603-4349-b45a-55e4d210dbf0 743ef236-6ee3-4050-8bf0-ff08c54a19b1 21dd0a88-926e-4fcd-bb85-ae003aa9527c 11677a16-a13c-4537-956a-ce16fd59347d c453f20c-1302-4bc8-a230-6c43b349e195 a0a18abb-4efd-4cb6-a4f3-9c1033185efb 3dae89ce-b567-44f9-88a1-1bc0b5f43be6 b774838e-2a17-4b16-b8c1-4d74ff32c43b 736efee8-87f9-448b-9467-9c4590b972a5 6d7bba1a-4af7-452b-8090-905fec268a71 36d5892b-c0b1-4ed6-ad69-23c0b72efdda ffce1139-b1e9-4c2e-99a0-2081713a098c 6eeb4d61-845e-4191-90cf-b3445d4216a5 535047e2-9988-4cfb-a37d-a4cc8aa8ec56 9a85d7ae-cbf7-4e3a-a80f-6282018833aa 84e9077a-d975-4e71-88b4-0924bc2edd2d 48e81259-4deb-4fd6-a59b-9d56e0988ac0 dabf08b5-139f-4eaf-b42e-6a53b2a085e8 d07889ae-2cd8-45ca-8616-a609739c594e dc397b3f-7b37-421a-a1f4-b76030be3048 af86e897-aef3-45d9-bac6-7382d042ded6 f6d53026-1b76-4ae8-a7cf-296b1ec4a02c a5ae2404-e8da-4db7-9698-116a7e400885 8adb84fb-1ee6-48d5-89db-ed73f25891fe b03f12a0-71d7-4b85-88f5-bc842f6fb1ca ba2052f3-acb9-4cb4-8168-8d7f6fbdf826 8319eb0a-a1f7-44ca-8f26-653076a3c262 b32f68f4-e870-4d49-a5e9-4a07ab4ee861 4254cb1c-759c-4692-b3f3-d531ee3fa979 a7a0862c-f584-4e89-b939-d65334408ff8 82f00461-ea24-4343-a3e0-b889c75d53c0 ab45f02c-fd60-4c16-aa55-b2ccc6b73d1e b8303afe-3ba8-45bc-b546-e6ac67bacc96 3d9c96de-1955-4234-99b6-b33017726ad9 f9ed851c-0eca-495a-8857-02a81fb15dbd b6fa0d35-a314-44ee-9c3f-a8187589306e f96e1f1e-0903-4c5a-a1d7-b1dab26fc210 13372c4a-a550-425b-b252-ef63eb22dc27 7d774095-b928-4728-9888-ef398ad62993 faaabf6d-b71c-4a99-b448-718594b5e6b0 ee659976-efd3-47e9-acb8-ce51b65d22d6 6366e9f4-95af-42ee-87d8-5656451bc418 4b0e7534-1d40-40c6-a50e-64b4447b4f8b bdbbae64-b4b0-4af3-8487-48e38bb5aaac 98cd4f29-a4d6-44f2-b2e2-620d16a467aa 374b8011-6619-40ac-bef9-d698a42341ae cae42c11-afd1-4f35-871c-b96fc4724c25 c9134c05-7020-43d4-b4a8-67bda0d129f0 9d7b0235-1676-4207-8149-15e80f7dcae1 1a9aab20-bf65-460a-a2c6-83d46d443a57 1ef89bea-d293-4d5f-a728-f1f4c4ab0874 a18891a0-9fa7-4986-8001-f4bb5c73d764 bbac369c-01c5-41ab-be13-298234748759 3819d571-55a4-4430-a6d8-444dafc65a54 03e13458-7f91-4c35-a105-dbf1d3f683e5 828a1502-3c6f-4f61-82b5-6cfc76b59a89 64d9e601-4c53-4147-89f4-96875a43faff 74d18891-5e72-4279-96b3-4fa84a01ac3a 0c59731a-7ea9-46fd-99fc-4822bd664288 e116d830-51e5-44c1-856f-13f0a49a359d eba55090-6ce5-4f6e-ac73-d96b63a13c67 5fe5d22a-f888-4358-bd2f-f736099f1989 90d23a86-8a38-465c-80ca-d87855bc4726 8c1b6b82-11d2-421b-97f8-00333d4b316e f8c63203-404e-4c7b-941f-fe7c93e930e4 fd2904d1-a8e3-48a1-aade-1a96515c9681 27e5469d-1ae8-439f-b6d2-67b70b09fd75 bf6d488a-7d58-45d4-823e-f1b326563114 e330dc50-236f-4886-8c74-d9273a7faa7d 3200a758-d86d-46fc-a023-77be8b560b5d 6934aa2d-8ed5-42be-bf61-ad41098f9da3 a87b81f4-530f-446b-91cf-44cb64d66f6f 8e140158-ea8a-438a-963f-e9f5fc6e11a7 224c25d4-b2b8-4a28-a2a1-49cf50d3468f 141abd22-d3dc-4a70-8e17-1b798a16aa77 f93bc859-adc3-407c-8fe1-b0e9a2606511 a4f108a5-6394-45a4-bf9f-56f999bda69e 15f69bb9-cb04-4b77-aec3-c95ebe22134a a3716fb1-27bb-465a-9b34-3742a4887c58 697b6857-4436-4edd-9765-4ae6db0d998f 97c1e5a2-d91c-4f05-b646-033699f55df9 ac59a6c2-8ca1-45f7-a5e0-f8b5dd7bd07f 71765875-9254-422e-bf35-be7d79f65316 29201270-8fa6-4f34-bb2f-4b8ef2de6631 0c9deff8-4e53-4383-8db3-f96514f75b7d 44e67d67-0be3-46fb-841d-703f40ba7760 6f4f281c-fee0-4756-a1d6-fc518ba5efbf c1013edc-3d28-4186-9037-088690de5175 3737970d-0ea4-4ba9-98fb-9e8a7047e5d9 f7fdb064-e099-44c7-a4ec-2ae0fd1df046 ce27a682-1425-4164-850b-d880f7372556 e3958b03-02b6-467a-8f33-cc7bc5da55f3 bb1ed5e6-7e1e-483a-8b46-173c5392c322 59538c44-c325-4ec0-a1ed-ca01858cfc08 73b853b8-9eb7-41d5-a8b3-598a325c567a 6ebeebbe-9943-4695-92bb-7a14f6ecd87d d788d843-806e-4f8b-871b-1b7703760e62 cd325954-7483-4adb-8a62-cf2352d55ccf 6e3c3bd5-917e-4320-ab88-4b2f6d263db6 5a13c763-c5f0-48bb-9389-81df7ec776f2 96a8de04-b8c8-4a62-8d94-0da6a50dd7c2 85eda472-2236-44f9-8016-8c2f7da99978 a595f6b7-e81d-4317-a176-b439de6808cd 49b6b682-5ecf-4b46-828e-b91406f27db8 60a18a90-af25-46e6-8ae7-2cb97455abe4 696f9f1d-78af-43e8-a906-25f9ad2bd48e 02ad97ec-a6f4-4690-afeb-d2805ffcac6e 0eed7a43-6a1c-4205-90fc-7a2e1be3c555 d2536466-28b7-45b3-94eb-246541262d6f c589b112-82b1-4647-bad8-40129e52c32e bdbd5af1-9280-4c72-8acb-fb735e0905b0 05868d1c-35c4-45bb-9287-e90de11b1a44 d79240ce-5c93-4c92-bfeb-ab4a06aafad5 e486230e-3a8b-46cc-8b96-e53b0932e41e 25199535-f07a-4d5b-8a95-229a1b7bc9b8 774dcb58-5338-4464-beb4-d19db320e306 7e58e2ee-3a10-4390-afa5-3e0bb36502fe f86b36ef-aacc-4f62-85ac-6fce7994f412 d9574fe6-796a-4dc2-9b51-659727d2fb13 f20210b9-9057-42ce-8a38-b92fa8a85b58 03fbdf15-a2c4-47dc-9918-753a936b7919 e96f62e3-0ef2-40c2-b411-215b1ea71733 c53599ea-8afa-46fa-ae12-b88a28572c97 9665f972-d60b-463d-825d-776b4b87c14c e7a2f47b-35b4-48f2-9a27-2946af2debd8 d68c1cc2-549e-4abb-a72d-3eef598ea76a 5a0730f7-972f-4b79-aec1-d5e2236eec58 64a61e93-0577-464c-a5cf-472159ef4d38 ebe91bbf-b57b-49df-ac76-1440e45739e1 cb4d076c-4df1-4514-9a49-f1aab2639c86 dacaacb9-7c47-487b-891b-9e0bef4d04d5 d7261ca9-444e-47cc-8092-c7758e6ef4ea d52773db-eae3-48d6-b5fe-e5728e18597a 04fa5184-0867-40fd-8f47-a2571e251060 50413e85-36da-4af9-a48c-2c36eb37c96d 7215caf7-b8a2-49a0-b81e-0368d091c8b0 f8e58644-9461-4b66-aa89-487e9328e7a6 09d8d15d-c717-479f-a4d1-0fc2dcf67185 c85acb92-22a5-42f9-aeed-f79e4ae533cc def0de46-615d-45d5-a3b3-81d29ff8f55b 8a0ab5fb-cf2d-4184-b04a-879922e56b3d 0f42f83e-486e-4ca1-a686-2fc816aa4189 d32c81ae-f2dc-4aa2-aaf5-7099035613cc f8e3fffa-974c-423b-95c6-67951252074a 22045a1b-a3de-4e71-8609-f3d322d475da 5b71829e-2025-48b0-aab1-cdd8b78b3903 df8be998-047d-4e5e-ae37-da9c7214d67f 40bf3f29-3042-42d1-b522-d3745fb4cff2 305d8300-83dc-4d1e-ae81-5f4fa3622036 f5c6f932-7855-4939-865e-c9bcaef50eeb e1b87c61-4239-437a-8cf0-a305a36e183e acc94cc0-a0ef-4867-9a83-e0fb53568cd8 542fc5f5-cbd7-428c-a22d-0205c2d0a1c5 d4b7e705-cde5-43a5-9147-94b82906fcdc 2ef59678-3037-49ad-91d9-c2a2850d1e47 b9d0b25e-c246-4c20-940c-9fbc1441ae71 9bf99067-82eb-4abb-ba3f-a8cc79b072b1 1bda7dc7-703c-4af7-b3a9-fdac7722b778 2b4494e7-4f92-4fbc-aab4-507a7c27dbc7 66049faf-c2ac-40bb-a6c3-2cebad4bd23a ed364433-75be-4029-8b25-7f857023a575 198d597a-2564-4eae-a2b4-e419472b20ce 83e33163-27fa-407f-9c8b-ec1567862a7e ea482d89-1df4-4761-9392-8836d8eadd9b ecc56bbb-48c4-4ceb-b6a6-a41c85c4aaf6 18e2189b-a2a7-4816-99be-0a1581821b8e c5cc87c6-b00f-4726-9527-4d0e4cd7a5e3 5e04c3e8-0083-47b4-861f-1bed13899ff5 afd8a6f8-2433-4301-8ed7-6ce30196b82f c7c1f5b8-5344-467c-85a1-94e846f75fa8 3fb1aeba-30bb-4f8e-bc7e-44dbf23eb73a 3c74c7c1-00a6-4323-b1b1-75c5b500423b ccf95010-e0e3-4c32-8ea1-d4d773c0b13f e8b795b2-56e9-4657-8b35-cd06abfe5d2f 0137aad8-a916-4115-b1c8-aead7b427898 49408c40-c0ee-4f95-9d2f-8c91e74f2bf4 25ae214f-1833-4096-bbd2-8d053890a9f7 91d35e50-c791-4b46-81aa-dd13eff08473 df69ca03-d68e-421d-8f83-341e6bd1f9ee 290b31df-3a24-4c05-bf2d-4a290f942009 40ead3f8-3e45-48e9-b0c1-0d2c37ea67d1 49759720-56e3-45af-8715-6ec55ac8d385 82f2d6d2-af7f-4b05-8119-78bd0f336598 3f91a329-833b-4570-87f4-59edc5373cd4 f9e6787e-a2c6-4156-9ac1-fd67f0709987 4c87124d-a1fc-44f5-a563-a6ae7e98bb48 3a4f6178-0bb1-485e-b7ce-d7275d2f89d7 9d469908-c60a-4363-a1c0-113549ec35fb b4514cc5-7007-4b71-bd53-8b432534fc98 ee7b977c-740b-452c-b724-87951cccdebf 3f7a32a3-4a15-4249-b153-396397738ca1 fe284b39-6a67-4e81-92bf-0718c7dc954d 865eb102-6edc-460b-aab2-f968e3655cff 30c8aa2f-87a1-4198-a978-1ab121c7b0c7 8999ed4d-f082-4db7-bbf1-98a96fafeca1 a591f3c3-df6f-47cf-82b0-c1acffd199b5 7c6c2f99-45b2-4b8c-894a-21a370b8605f 0e9328e5-13de-4528-adb6-b2e3f3a9098b 4e5f0c2e-a416-4930-bca6-e9060be335a0 4066a9cf-fb13-4d24-9c47-1e6b9b803cc6 fc0e4704-2fcc-4a7c-a018-637bca6f45d7 a8ee2c3c-1d61-4c60-ae97-bf7c138261f0 290c6dbb-63c6-40f3-9726-4ace36eb530e 2c8c9c0a-865a-4ae5-b0d6-4cea02a821c1 3e2365ed-169c-44b2-b14f-2c2b044ebaef d51b2e13-0b9e-4090-a21c-ea2721e21b18 27c0560e-ad56-4eb2-a478-8e7d8ff2d86c 283f7168-82fd-42c2-8db0-347831cce519 4643fbc2-8297-41c3-bf36-b3be7a9f5093 c0c6e7c7-879b-439e-9ed3-af11611547da bbc21999-3466-4b3a-9570-799d550d4882 e09f644c-3be9-49ed-861d-f08dd3294118 10844de7-9a35-4f14-b9da-dff2e3238fd0 50798144-98ee-48dd-8760-44a4d0bab6b2 4e491a0e-af60-431b-8b2b-06e330cb5953 2ce2e605-2679-476e-a7ef-47bb007624d0 cccd3660-e616-4aa1-b7dc-9abde3c738bf 82d71eff-9e01-4a97-9e6e-8b60a6fa686e f58fdce3-8f48-4df7-b812-d0a29694af3b 32f3b34a-5f72-414f-9778-5a985ac0ebf8 fc60c6d7-4984-40ef-bdd2-4ae517923bcd 7e1fe57f-7d86-4fea-9af4-5a6e31ed8c45 32e96393-9b59-46b7-998f-afce3abb8aab 1478353f-7e9d-44ea-99ca-4e46073cdbe5 f6c90180-4b93-414e-b0e6-4d36acdc33a0 be7584d8-b148-4d53-8d68-4566600da16a 727b538d-7f65-485b-9af6-7aa3f595db58 34906c06-09b4-4a96-ab9d-e17cea3159a1 474f5e8a-6014-4f6a-b1df-1d02fdd1d0df 2f2fcc8a-553b-4c0f-bafc-6a22b94b5b74 d0788711-9685-47f8-a1e4-3f82800d8518 5ca583bf-7a9a-4981-b1e3-ca55ae273b9a e1b1799d-8aea-43cc-a852-aa5cc38333db 867dfe80-4122-4c23-b0fb-13470a9a08f2 8e014355-c3df-447c-acc8-1b8df44760ac dd3ded18-cc20-449b-a087-c8de0250d340 18396ca5-aa61-4a07-a109-63eed7e4d057 3b87fe0d-10ae-44a4-a69b-6b0e825fe178 0351102d-2a96-4d4c-a1f4-a24e9b9e9856 72463524-d47a-445d-8659-0902ce24d3bf 0986fde5-4fd9-4ffb-a3c2-6771c347c9bf 6d28ba1d-5815-4e0b-bc64-4e5fb62b9b45 5c8f6e2f-e946-4118-a159-d424ae8e96b4 b3bd654d-90a3-473c-88d5-96e8ebecd202 e42469fd-1ba8-470c-b07a-79fde70deba1 bf8ac3bf-4de0-45fe-9ef1-dab9249c3994 85eb4b1f-b09e-49b4-a409-e0e7216f96a3 2d9e1248-4f2d-4ef3-bbe3-a6c70a1a192a a6b151d3-8a9b-4380-9ac2-95b7a5ca2593 bea01047-77da-4552-8f04-66d36438f896 93d52381-3d24-433c-8179-ee3b577cd0b7 5bd440e0-0c2b-4ea1-a10e-30f2e5285316 e1603217-b57d-42d3-a341-b03fd6271f13 c563f4c8-cb55-40d1-92c3-8e33758157f5 e4b9e1a4-f8d4-4079-a2ec-82dfab63c68a d94f2db3-2158-4ba4-82f2-96e97966812e ae9bbc4a-82a2-4206-8511-4898bb96f63e 2881e560-e7f2-44cb-b19c-69fc374f14b9 8d607fb0-0d73-4e65-bff5-44c00aca271f 2d7bfd73-cd0b-4fc8-ad49-e90598de309a 48673e8c-8079-40b1-8b90-1310a81114a0 41683fec-1498-41fb-b1fa-253e3290868b 974cc7da-a002-410f-96ce-a22840185d0b 4885f7e7-cbd8-4d0a-bac8-e6a4833defa2 1c617030-fae3-4d6c-bb87-7ca47aee08df b2d938de-5b3d-4f47-88bd-06b479936214 60ad5e17-d1f2-48ca-830a-bf30e28a1eb7 cc740f2d-0d27-493a-8498-f87c39de43e8 48412da1-66e8-49d1-ac91-75d809dde6ca 6cd7c27f-70e2-4238-b5ff-4fe08f0e41ae d66559b9-8e14-419a-9882-6cbfa86fe8db c408e4a1-cee6-43fa-aff5-84d2356197bc dd30545e-0147-4ac8-bab8-98af9e653400 5a357530-6c25-45f2-acbc-7148fae25cf9 cca255a0-51f0-4a44-a274-b8e291d94c5c 76ef56f1-7959-47d2-88d3-90785af58065 e1fe389e-8a0b-4814-b816-8c29d1720c46 dd39da91-c8fd-4a35-b6c5-aff5c173e545 a0d6d3d3-d7f0-43aa-b95b-354e3f5b3ab1 99516836-15f7-4c79-b0fd-64ce592cad16 f9ef8910-4f9e-46fb-90e3-011df767acff 9bfd0a83-8ad0-4915-9720-649f728db859 951341ed-9e4c-4f4f-b45c-aaedc68745fb 293c7949-ecc9-4c70-88a8-badea0b6e8d2 4f81f72a-44d9-4b12-b182-28c04e4c4553 6e8b2289-53b3-421f-b5ad-fd096ae5a359 f7186379-0132-4ee2-a849-ad0d39ba0821 5254b16f-eb89-49f2-8632-e88b2c4ba5b9 134568ad-89da-480c-8a5b-2e2f719c1f61 aabab89b-67b3-4c79-83ad-4fa4085845fd 56fa25aa-b1fb-4b89-8ea9-78c213666bac 8c39e935-d527-401b-8a10-21d7fbe4b493 2305be00-8f93-4734-aa05-5088be0dace2 169435be-ef2d-4bde-924a-967f87aa1f44 b79d3e26-8f59-429b-8548-fda000b69310 f7f1323f-4253-4435-bd00-0882059ed5aa 6dcf970f-dd4d-4f18-a9a1-d859ee9c52ac 77625b8a-619d-48f4-ad47-ffb006c20ff6 3c487c26-3e13-44c7-8ef1-4519b4c277c4 d24408de-5b47-4412-a5d5-4f9c4a9fa7e8 6f1259e1-e758-407f-a7cb-c7492dfd4e55 3cd28838-883b-4310-b1a5-ce0d86b5d4fd f5fb4de4-915d-4795-a761-ff9d756eddc4 b886becc-ad98-47d9-8320-605821b2bf9e f974b2b9-5d42-4ae3-9f53-0987386df243 af446f88-3fe4-46b3-917b-0b62bb1fb58c 07cf2502-244c-48e2-a5c9-5fc56f9d0cef c1df8580-d25a-4a4a-a72d-e8f847509f2d 69a22ac8-f3b9-4676-b26d-6709810167ca af5c43f1-beee-4bdd-be0a-8f8e58db98a1 0a34c9d2-3fa8-4f5e-ba56-784dc8836779 62798c41-727c-46f0-8502-9876d8754373 2100bbba-9b29-4af7-a194-b8bd11ff3f8d 7b39592b-cf29-40d3-9317-0c9c6bc64042 c9f39563-bf2c-4f0a-b4fc-1993fbd2f1b8 c8027967-59b9-4abd-a8f5-074459f7f435 1b6f101b-a85c-486e-8156-dc06489936c5 ce98493b-e561-42eb-8690-b280c5170626 80c63351-3909-471c-b0c4-69b9b57bdd46 072da6db-e6fa-476c-ab60-a02e5315f2bd 182b5068-bddb-46ad-a2a6-e4c7ee4867b1 bbf512c1-1996-440f-b8e3-42d6c2866313 6f496638-8405-4a0e-85fc-2af4ae45ad1e 9c9cf9fc-2691-4821-b8cd-59f9e9aa6972 037fc86c-b4c1-4235-a6da-3760a03d9f49 66ab464f-903b-4110-b3ca-f3e9f31a4757 7a146ce6-5637-4271-ab02-cc0a5671d0a3 9e56904e-7703-46a4-974a-cc1fbfac1d38 17eee190-14bf-48fb-84f8-aa104ba3c032 4bf1d63b-ddf9-40db-8527-8e7a7bfa75de daf5ef09-1630-4274-b28b-b39e7e496779 f60a650f-c820-4d0b-9964-c0e88fd7e7a5 1e95c3ff-05db-42a0-84fa-465bed916754 a75f4c29-95a8-4b34-a013-da6d05af339c 61d85065-82c1-4be3-9478-2ab2fcf54842 380c32ff-21e7-4d1f-8820-98b0808bf534 37f0c753-9f49-4620-92f5-d5db439246d5 3201b4f7-3a02-466f-96fe-65902616942b a4d534ac-fe05-4163-aeab-f3b50ce7a05c e53000c1-bc06-4983-bfa9-1336ce597216 5c3da420-8b49-45e9-873f-3a892ad3b931 c41d61d9-fd5b-4517-b552-04c5752aff9a 41610832-e1e8-4e95-9266-0df50f8a4b3e abce03da-6826-4b7f-a4af-a13ce8c95cb9 4ea28d85-ec50-4706-b88d-2367680f8a5a ad9b9ba9-a0d6-4a04-9cfb-04756641a5fd 724e6307-df0b-4036-8fb8-537971094ff1 3bc20b51-c7ee-423d-ad6f-94ec51cb0bdd 384f32ba-d441-4631-bd45-9c37fcbf5628 7c61680f-e544-4fa0-a5df-2496dbf5735c 8116be90-3c5a-4b77-811c-9677785f9216 7f9e12bc-be47-4a5d-8452-e77b9441896f 2cfe646b-76f7-4b37-8491-a3550e1d12fd 51950578-fadf-4c40-9385-307feb8e81ea 58365272-a2df-4ffc-9b92-bd19b613a228 5c9ea5ae-8743-44a1-b11b-1e989cb3c94f 52d38727-82a3-4667-83be-0d8df32e0414 94655e03-9960-4746-add6-e869b501b9df 9a5e1a67-7268-49be-9cb3-6aef686b7255 620154a0-3ed0-4b69-a955-f0b33dae3b21 a05ecbcf-c4b5-47ff-b9e2-187b5c9594d8 a95c056c-75f8-466f-a2d9-8993e7033a05 50c44b5f-8320-4856-bcb4-1cde4a943e8b 6f071c4e-4afc-45eb-bc03-92571beef0ef f3611e75-2424-4ce1-a2b9-1a058972dba4 0a982d15-875a-458c-9f6e-eb71d113fdd5 7c9f53fd-8a91-4483-ad7c-b7e045bb7feb 539a8b7b-a16d-411e-a890-e3ad4b09566a 7993ba59-ad4c-43cc-97f3-6085aa17fbdf 7683a19f-712c-4984-a17f-4797a0a66a2c 8f4120b3-2385-473d-879d-7b44f04af07f 4a2ca392-0e59-4763-a4d6-e028f41bd6ab 3744b6de-4b41-4f8a-8c7a-dd5d0aafdae4 9b63c7b5-ee5c-46e8-8bfd-b974dbf9c4b4 4683c35c-9b14-47d4-a779-4dee5444828d 52ac6d68-0891-497f-a2fa-cdb45ef56924 0370df21-4b85-47f4-9a04-6d74210d20be f0a11846-837d-4fba-9028-2f58dacda212 7771276e-f5ef-417a-a68e-2514d5e79c2e 9261a092-07ac-4125-b01d-8c5610007213 e4248f1e-9e44-4241-96a9-5f5d018cd7bc 5b5b7371-a3db-427a-990a-7eb502e1d4da d6f00b79-4f3f-4bf5-9c02-20aa83476094 62e4f463-c8e3-4c09-a36f-4c6c7d4c19d3 adb85d56-0fc6-452c-aaff-bbde22f16fdc 906328e4-6e9e-4abc-a8a9-4ab0ea8ac389 ea456490-8610-4fc4-9307-53a6c3c795f8 c38458a3-dbf2-4d29-86c6-308a3702a241 e3253343-676c-4e1d-9e9a-d78f633e99b5 dbb8ee66-44da-4e84-9ef2-421c5ec94c81 44bcb7e9-bfc9-4cb2-ab4b-f1e211c15785 87bc81c3-a0ac-4f6e-8046-79df015615d1 bfc0eff4-0fd6-4827-aba5-8d5ad3a44120 b2e0179f-46c9-4eba-aaeb-dc5f698593d6 121c649e-d64a-43a4-a96f-7699eee0f269 9f88b36c-4368-4613-ac04-dfabaf8924dc c1902e7e-69e2-4623-8c91-a4ee76e73cd4 1a8ea0a2-0047-40b2-af25-64d5f07f80a4 74a4e1b1-4011-4d29-8fa0-cf8050c36138 bb536c4b-ad2e-433b-b80e-61824a80b704 815f0f91-b0da-4ec7-a562-6fe7b1ee3e05 3b1a2741-4b85-4132-b813-960f6f7d01d8 987f1905-6074-45f8-af31-f417e7d35095 3c4588f0-775c-4f1d-80f7-fb65edbd8105 56707817-591d-4670-954a-a507163e692b d5908afc-4432-4ef8-b82d-944c422501d4 eecfc37f-9553-4e64-bab4-4cd6caa6e082 7b512a1a-ab7e-4c4a-8a05-6f5be00f8a70 48ee1eba-9dad-476b-9501-4f218ec3959b 2770b133-6d1d-4cef-bee2-fc8d75228c03 14cfd30a-852e-4b4a-b606-753d22867ff3 40c790d3-ecf2-4122-8ab5-9ddbf26d544c 0a16d8ba-1c60-4428-a17c-896a42de9cc5 9803acf9-e96d-40f3-b698-ee85cf0be35f 98b28d0c-8a91-4cc5-b8a2-df891bd17f29 539c760b-275a-40b7-a678-60589784430d 2a402833-a4df-4edb-90a9-d6cf452de87b 87feba71-c1bf-4886-ace0-f3a65fbec28b 18d04167-026b-4e9c-a8aa-b9065bde2e2a 697b04a5-c18e-476e-882c-e60e58012c72 10cbcf12-23fa-41ee-af5b-0f26736ef229 8ea35e55-ae55-4d98-b469-86f5961e78ae 56a572d0-5db6-42a1-85b9-ea76939b4ea1 78a6aefc-56d6-4345-a248-52ef75133f1b 6e8a301d-e908-48a1-a55e-dd3e5cfd45f5 4c7b562f-ead4-4880-bd53-6a6e1e82684c 7c9e8d43-39ee-408d-bb9f-789a413af847 325d59fa-4f56-4b51-8eaf-61bc5979bf38 03192b6a-8986-4750-856a-be04b9b8e3fb 43bb1524-b390-45f8-a108-e09f31a8467d 181bd391-361f-4f1b-a698-dbf3528aae7e dae02ade-da9b-4f37-961e-e72cc1df204f c17a71c7-0358-4448-ac08-5b1a85dc8ae6 5b58aa84-20d7-4247-a1b2-e50794404761 567be9e0-f975-4b07-a399-de8d79a8b777 670b9bd0-dba1-4218-a8aa-8e0567e68440 ea1188ab-0800-45ba-8ab1-d39463889aa3 0d9320f6-5555-4cc2-99a8-89773d236ebd 917543c5-ce31-46d6-92d6-277a00e6cb7c 292c2a55-f610-40ca-9fe9-a1b8950a7211 b922454d-3d49-422f-b97e-8cbb3640f92e 5fc0843c-093a-4e91-a709-70ca59b01902 f6cbcbe9-22a2-4948-9ae9-25d48ace0f36 fa1b4e81-c53b-442e-8fe6-ed06da1e45be 9780201e-29d7-4951-89a0-01008e774c02 20b01e93-0cb1-4b4e-8755-9d7681ae8bb1 786ba225-0daf-4c24-9896-8b72972ae208 c37a581a-fda5-40af-9c13-972287ece2b0 91b14171-e8b3-4b89-9e0b-b68bbf8430b5 13965470-991b-4f5a-a0e6-604fd4f2c5bd f2f959e1-f447-42f3-b616-efd4a76d3232 03314ff0-cbe2-4a3b-a2a5-ddfdef0b145f a454834c-a169-4621-97bc-312cd6303343 bd9b8d79-5575-4865-9c40-6f0b14459c46 d60423ad-af89-41c6-8c2c-52d951269bdb 3ebcfe7f-cbfa-40b1-af9d-38fe7388b659 7d3603d7-fa20-48a6-a168-d443c20942c5 7a477fc5-c2d0-4459-9af8-ba756e5e97ae 16c67153-04c4-4107-8cae-fdff7f30e15d 9b967a4d-a4b8-43e9-acda-8fd716f404d2 ce2fac00-4208-489b-850f-4726c8833124 f22ba05c-8aa3-4e38-be4a-0f900f602604 b30f7e79-e709-42e1-bb51-0f681c58e57b 8c8f555b-154b-406c-b520-cfd8a73e4cfd 8fc885d3-8d09-42b7-bea4-18804ed18fb8 beb098de-9eac-46c2-a62f-38de26e0bee2 df33e03d-bbf5-4ced-a5d1-53b3f1ef1e2e 6db19d9b-85c8-40b1-9c17-8e6deb0a3d1a 87c618ae-4553-4ade-92a3-92beaef86454 a39a8e7f-8769-44ff-9f84-701315095009 caf24257-f4c6-41d2-ac5e-e30d1d278d23 ad981137-ab94-4f70-8855-d9145a8f5067 0f3a5619-b0dc-42bd-8b5f-9bafd32db77a 3923211d-5b31-43e4-9a65-474f6121404d fab63d12-6206-42e6-b656-41859b522f40 a30cbc91-ee8a-4e28-9ea9-91f4f8b89110 7fbb1590-62a5-4175-b670-0c390b6f8281 830bffcc-8f04-488d-805e-f69b6b6f46b0 77097ecd-da92-4b92-8e93-da8c79ca7e77 eddf3c5c-1a62-4cfb-938d-4a64c4b1a773 30cfbe8e-faaf-4161-a96f-1973207ef559 200f65ff-7d49-4fa1-84d3-11313edf9916 93827b7e-c2ae-4304-9058-b2cfdf17ef04 bd6f0c74-009b-4031-9b56-a3a8c7afdd46 ac3a541b-6449-4d76-8321-e552eaaf7e9f eb39b649-5e3a-441c-90b4-db43efccd5b4 635d9a3a-132a-420d-9140-633214464385 77a5d553-e4cc-4712-a8ee-80929b946d0c fe636b3f-b546-46be-8264-651afe7eed6f d0839f4a-c2a8-4314-8eae-fb60f33db319 3350288c-8122-420d-9ef3-a5ae1c58486a 4d3bba91-525d-460e-a0a9-aec5992a4d8c 5b6a9ebd-ec57-43a4-a267-9a910a90e676 737493e9-f573-40b8-b331-5afa844f5dc7 1573717d-9145-44cf-8e5b-8f4decd131fe 88932c0c-5f3b-4ca5-9d3c-7ccbec8747ef cf412b9b-43e8-4ad5-b945-cbd50ed141c8 9d632e0a-9760-4f45-867a-749cbd9ab23f ee8f8d83-ddcf-4f8f-aea7-c11d76f9a6c2 dbb7d7fb-9f17-4a95-b60c-55156563a327 74a05d5f-5f3d-42af-8090-e88fc6e79848 5b19ce4a-2634-4c87-bf0c-a4a814eea593 05593ecb-390b-4251-b150-aa0fb879db31 5ee479f3-b7e0-48dc-87a9-148e9109d789 f12aa30e-0197-4fdd-ab30-4da6321c8c2b 0107330a-9e43-467c-84a4-b7508b48df6b ffa2333e-517d-469d-8fc8-b8e048355581 7e0cafd8-b1a4-41dd-80a5-1d54b5298b6d e355c64c-fe09-48f5-9f72-399314f23cc1 6d783081-bfb3-4d49-ae5f-14671afc4ccc d0ab5d59-2869-4586-9286-b99c9d3d31d3 c42f2ae3-2bfa-4ce6-a5ab-a971aa2519a4 b1e26d89-a4f0-4127-9075-df62467b449a e1b96538-e1a4-4f9c-8723-27eb64329c55 66dd61b1-bbee-4887-9397-ea5c1544ec66 ea3ad390-b056-4320-9f18-38b2ba1fe926 fc7a6031-c7b1-406a-ac12-b0e862afbacc 9344163e-6791-4763-a220-c35f13472f98 66ef0d87-ac50-4ca1-8a06-ed8072d9f62a 7568bff9-76fd-410b-af12-6968abfb32ad 71fb088d-a66e-4605-9987-df96d7cf7002 dcba587b-2f5f-48ef-a789-dc97cde58201 3ba244bd-5625-4479-94c3-ed6521bf9bd7 f72465bd-a2db-4a0c-a7b9-505b29ad2359 a8c4227c-3cf3-4f17-b01e-ba5a4ee7eb3c cb2481c7-e1b2-4619-9604-b558a3aa2d99 c0b44fdb-4efd-4e7a-a3e2-4d95174810cf 63215e23-7a24-4c11-a238-29e5ddd61090 258ca8d7-21da-4ace-bcf7-332ff7948179 69a34ad8-608b-4287-b466-7901e242a9b9 ca8b25bb-2033-4c30-853d-dc8aecdbb51a 32df04c2-2f85-4d35-98df-64c4ddbd6c41 3c981f16-c572-4c62-83d7-569237565a22 713c4491-6c24-418c-9e03-a8d32c2ab6e0 4f24ab15-2478-4cea-b198-44ec1620730b 101c929f-c09c-4a18-84a3-948d5d6f75e0 1829270b-ef3d-4e9c-9d08-a222201ddb28 0de02209-4ef6-4b50-b803-53e81de8678b dc6a8979-c215-4284-9c4a-c4490c70a5c7 7cdffbde-3cf1-45f5-90f0-ab65eccc529e 54c6bfb7-1c9f-4102-8f9d-8461fd7ac70c cb822a8e-998c-44cf-b209-dc74571133fb 2d8cbbbd-0d5d-46e7-ad73-9ef515ac5e73 08c08219-07b3-4d4d-bdeb-bc67118f5d5b 354b808c-39cc-48b2-8fa4-7596e45946d6 f9c09231-dd1a-48c7-b96a-eeae40217ff4 00026bda-e0ea-4cda-8245-522764e9f325 7b01ccaa-6e50-460c-9018-aefaa5e79e31 1d5df832-f565-4a30-af72-a65706e8cd63 89fd26c7-d2f9-403a-97dd-e6b144ef6865 be14091a-d9eb-49d3-a991-9ad4b0eb5430 05f0da92-574c-4052-99b7-0aab96180007 3508f244-9f51-4e38-9a9c-0d5b602b7bd7 a232262d-7fb0-40cd-aa57-7aa6233b48ae aef2b3fd-4e73-46f1-bed3-5c23f0c40822 1506946e-c5a4-4765-9cee-bbb72dba18f5 b4606091-7692-4326-a39d-654c175fe76c a8590fab-f80d-40f8-b37d-a4e6ee601298 184ee145-1dfd-43f7-a6d7-e5fecf047204 68041bab-4092-4696-94dc-02064480ea02 92816df1-a50a-4349-81b9-70467643f83b 24368cc2-ba57-4bd6-8adc-b43f1f3002bc 334c2007-2c33-4cff-8189-a7af6c8d15a7 fb77ea8c-8b94-4458-81f0-b834493e3fa0 a24f0dec-fddf-41d7-a25a-e522b1783e4f 02e8634f-243a-4516-ab2d-dbe8eb5a100c a8341dec-0868-4074-918b-a538659627ef 574a9530-371c-4611-b380-7b19a6f3e2f4 1db47b42-bc26-4807-b4ab-317ba21af7be d685441a-e399-48c0-ab2d-19df4bad4a2f b6381e5f-16f8-4b37-857a-afbbb3cabf3f ec951370-2323-46f8-9468-3b1998448991 dc002b4d-4619-45c2-bd36-896a83e94fe5 48875f36-e58a-4e04-b116-3ed4301922a1 40c522de-fdcb-4a3e-b1ee-4fbb9a4d9e71 1165b02e-c0ff-474b-9bf3-3622923df042 d83ba399-7ea5-4f7b-aa8b-c3d935a16cff a41d2af3-78d2-4d83-953f-b30a12d560de ba2221d4-987d-4ab9-bb3d-3d7f074e31a2 9f8c1340-3188-4499-8c7e-4c8c5d30bb31 1caa7ff3-9f78-495e-8393-0e00761d0433 e2a5d9b5-22e4-4110-83bc-61d91ddb8897 52941373-4bc4-40e7-8b2a-5373c6dbc79f 2726db0a-70d9-4243-9e47-65bc315aeda8 61bdaef5-bf98-406b-b577-52945ed5553b 28b81034-e377-407b-95dc-289cdcbaccf7 bcddc318-0291-48d8-a734-11572fbdc6f9 0908cb79-1a0f-428a-b81b-e20396349653 d09bbe9b-484c-48eb-83b5-75ae2b04576c acccee96-290c-4771-a919-0036da09512d 98757e4c-1198-4194-9fac-e0efe1134aa8 72f3321c-c297-4c6b-9171-25fdc846e051 2f156651-c1d8-41ff-b470-363c55f0d910 cfacc3cc-c599-450f-90cd-ff9d148000a3 f85b702f-6ecf-42b5-a683-a5ade9e0bfe4 8ae24115-19a2-4a77-b260-28cc9948f5cb a9897531-15fc-4569-94b5-5d94c3ca23f9 069e6838-7fc6-4ba8-8138-9b10da1ff5ed 3ccf85b4-a582-4963-bb9b-091aad9cb87c fa175b1a-3c39-4af6-bd51-0da2293c341d 4c2bc380-d0d9-428a-9926-4c076eee8eac 239dd08b-1a64-4476-9baa-4860d8bad61b 0039e168-bf62-40b7-a25f-3fd3ade17d58 f17ed374-3d87-42c8-b962-c451756741f8 4e409989-bc1e-4376-b1ec-12483a529b38 fa19afda-84de-4cb4-8b8e-a4aa4a2fa321 e27b7afb-1a86-46bc-aa34-7a1606d06756 45f39951-9db4-4ef9-a95d-3477432d2530 44b700cc-b073-41ba-842e-47a0ef005690 d0dd7505-4603-4f7b-a6ae-dde06e246cff 0845f469-d982-42b0-89f8-3458124824c3 9c86625a-8e96-45a1-b822-cf568267bc03 5f2dc607-8dd7-4b7d-86ab-049ada32d4ff 753fc5ad-c9dd-49c0-bdbb-012771c827cc d3446f7f-bc73-4615-98cb-0ddd4bd5879e 49b6db0f-1691-4483-b493-94110e90d32b 196fe437-cb69-4f7d-9b6e-3f7f741c8fd9 d26131f4-336b-46ef-aa54-819dd6c49821 66f5dc84-0ebb-4849-bd4a-6ba3478f2fa8 a01050fa-8d21-447b-9ed6-83a523da0c9d 0bf31d4e-bbb3-4046-8505-22f355a88361 dbb0b794-7786-4b1a-90e1-3f527754441d 58da74d3-8cdd-43fe-abe6-556698dbff8a ee66a7c7-589e-4bbf-b4fc-05fedd972d5e 304f6b39-8cfa-48f4-be7b-b2a68bfedbe5 015ecf97-046e-4db5-827f-f2628a83695a 4c7b0908-72b5-46dc-9ddb-5ddea554b306 7f60ea43-3cb8-4ec1-a74a-5e96045af53b e4178cab-56e8-4b0c-bb8b-ee125b09a5e1 67b94402-b79b-4a79-802d-1da48f26b733 a2b79b5c-ba0d-4a7e-b82f-512ff3705bfe 017198ec-83db-4bd7-9d7f-9ab29b5f7d2e 30c7f681-8d9b-4e72-8798-939d8a256c9b 9a179cdd-c3f5-41bd-a1b5-c033fe52119f 3ce71b3f-62ac-470c-ad2f-7c9e658e7894 a4d0b039-bcb4-4846-90ab-2cc76f380444 58507f07-fd80-4d93-a7d9-289bfe23c0d5 f729dc8c-a839-4286-97fa-32a75ca340c6 ccad68cc-8cb4-4373-b8c7-8f08d2a41df0 b89445ee-1eb3-4b94-b4ad-14f77fdaa376 24fd617e-fd21-44e2-bbbf-de432b9cf6b7 ad3a31c6-2c30-4996-b49c-a939497a6ad7 25930a5a-4468-41ef-9aaa-5b0393b12ecb 93ca0507-539c-4a02-8bbf-45f116aa0352 23e44f6f-cc72-4de3-8505-5facaa54a985 7da32596-df0e-4cdb-94e6-6f01fa296e07 a2c54052-d009-4ab5-8b1d-c0f95955eab2 500e65a0-fd6b-4e17-aeac-8e5cd7be0add f7c421b0-5036-4b75-9205-5d902b15d3f2 f72b3df1-68c5-47fe-b3e5-16e3655cc7a0 bc2c947d-0fd2-4ea8-a399-abfd88b3c863 7aedc1fe-bcb6-45ba-8058-6c6e14873bbb 4bd8d516-2918-4b7f-af4f-b6415dc42e93 f582dffb-44e9-465e-8f0a-94b9e797355c 0ce1245b-c491-4e1f-9783-9fa3a3d3fa96 e5347403-21c5-4842-b1bf-3bef103d984a f5e31bd7-30a8-40d1-97d6-0116d68bfe21 b449278c-a1ad-49ed-b6ab-1769bffef7aa 8f4d43e0-f30e-4971-86d5-95af0e367c3a 8bbf9920-559f-4fe2-9fa1-825181fdb136 2bc2f8cb-03b0-4120-9b4b-dc61b4138dae 934bb0da-7fbd-44a9-bd9c-3cece1d934c1 c0c4da10-4607-4fa4-b4b9-6b4c3916c907 351b68bc-e5c0-49f6-b618-d89ecb7d76b0 143330d3-d7ec-47b6-9a1d-e485781cb83d b604051f-0364-429b-9235-6acb4978bc3d 57e1018d-2005-4305-9d1b-d92d8e361163 e53cb0e0-fe8c-4d8f-a5f6-b91680bc5cb8 ef5474fb-2aff-45c7-a6c1-83ac3d611968 455acb65-de51-42d2-b39f-351dfde9e2da d8bf04d0-0a9b-4669-8eaa-881301c9d479 633e8902-8e7b-42df-b6da-4caf46b8b69c 93265afa-a648-4289-8c00-1a7d37d86247 c08adcae-871d-4e6b-9d26-dc3b4b5d0f36 09b01b70-d175-4b2b-b92d-2ac0337a054a 7e8c3e37-01ab-4378-a7a3-7e50964c61ea 60f7618c-d05f-4510-b269-57bb1a5e29f6 920f6232-34d4-44d9-8c07-27f69ca107bc c3ab135c-944d-49cb-9d24-8a0e6b0cb32d a34f73a5-c3fc-4142-ae51-47f7326d7b42 d0f6f606-7a18-4911-a586-539bdc12e13d 5278e7c6-5e3d-40ba-a6b9-88b2ffc9dd3a 9e8f5188-462e-4820-8a38-7e695b59efc9 6aea63d1-677e-45f7-9e46-f2f392c059b5 30834b54-c99d-4f43-b232-e786bcfd8c38 e578dd04-f12a-4f4b-865b-1876fed56aed 46aeba69-ba3e-4d1b-a2e4-0d194957b812 788d29d1-f8cf-4aed-80bf-1a93e545ea34 bc793d0c-a2a3-4dcb-b346-fb719ccd7166 8492f7a3-dd30-467a-a6d5-b1012ce48285 fb1fdb17-bb8d-408a-840b-ecf6ce30929a 7d96d5b5-fca4-426b-a6bd-69f5e4376e53 a0e8fb9b-ff41-4b4d-99bf-d2d99c3acae0 f36ec96f-e1c0-4c7e-9c8a-cf1447c13032 b6466d18-29d4-4e2d-a6f8-9a5e3657345d 2bb9d549-a2ff-4678-8bb5-c80fb77a2fa6 8e3ff6f4-985d-4c96-b14b-2bcc051b9a83 5e8ce9ac-8f4e-4915-a165-e0a5cbffdc35 05a761d7-32df-43e0-9818-6ea9de8409f4 2fb7bde6-0dfc-4178-ac9c-41d71b1e5479 c24edd9d-da66-41bc-8c5b-b3d891b503e5 d97026b2-673b-4b09-866d-842d04ab89d8 137ecc82-7ec1-485b-85ef-d0d075197b19 c5606595-c9e6-4d5d-89d7-47dd7282769e 5235f24b-a6c2-4cda-8c14-c0fd8b5ac589 4f3b66d4-8ec2-4661-a573-82d2b4c103db 29325dd4-a952-4d3a-8c4c-708774b24924 41815979-83c0-49d5-b6b0-20434eb73fa1 7d2fb27c-abbb-49c3-b424-3aa6813d4d7d 777ae557-ac51-4ce4-afb1-fd7488fe0eb5 5b5323b2-9994-4c00-9f47-44d640d6f788 41bb5f84-6a7d-4921-9570-2ce1f25d8511 a5c6bc48-e551-46b8-aec8-dbd76097c5f7 548bf9ce-5257-408e-9d28-70e3724edeeb 16995e42-26f1-4bca-a42c-a63cfc56d6a9 a514d012-6c11-47c7-9c71-7bf0d78e12a3 9e23de8c-6ea6-4e14-aa3d-3f8d84ea6e71 7de51b10-b4d9-4ed3-bb4e-280aaa1482b1 d697a672-f576-4ddc-98ed-c35c227b6f83 8dd2e9f1-d52c-4746-bb7f-227b17ddfa50 f1a1a6ba-d298-4dca-969a-ee1d5d6b14b0 9907cbb9-8e96-466e-8a01-dd4dc63d979d 48ce5276-e40e-4e45-aeb7-8669b1b890cf d3872f0d-0aa9-4650-ba50-9d64a61c4e31 8b92c2f2-1949-4c64-9df0-2e94d41bfe5e 95789409-6ff1-4140-8fef-7adffdb869c9 0852f53f-587b-41b3-9c3b-e1c4210db584 8f47c81f-19ca-400d-8707-95d25b505a78 5d6a52dc-347c-4e76-b3e1-6061dedae30d 8c80e968-8e7e-4402-876e-465e65178c05 6df08d62-e797-4a03-8d8a-49fced675fbf ad882932-55de-42f6-92fe-361f33fee391 d2ff598c-a735-4eb5-afd5-d37be9a2471a 2262a374-aeb0-45d9-b3c5-3c770736f6ea 631ec953-5c8b-4291-9379-b496f3871feb 9eda9cb9-6b60-42c6-9d03-e7ef916c7ef0 7a07faad-960b-48b9-bae6-6297a84a9f5f 40fd4b96-679a-4395-8daa-4b55a8a32084 098d682c-0280-449b-98c1-a7380c76da5a f96a19d1-24ee-4b98-9b00-f5a09f5ce50f 8b0accd1-590b-4dc8-b85e-9a55e92225a2 84594c9c-a821-4481-8bca-d5231d7f8e5f 9ec046a6-6156-4307-86c0-2c0b4a25ebd6 2080279e-609c-4ec3-9fb6-bf3c592cdffc 6a990632-1214-4241-94a8-b56bddc6be04 1252e789-1ed2-4bf5-b8eb-5023f6ddfff2 a7bfc32e-7f21-4630-888a-3ba57a94273f 897c4435-550c-4b6f-9b44-caff491067c1 c44daac0-df10-4149-8b21-abd18395908f 79cada13-cdac-4573-92da-d0a634b72675 87b441bd-6062-44b4-a96a-27f9d93a6c9c 964c8184-77a2-4627-b7ec-c25c25e29f82 f9d8e265-bab5-455a-b0a6-296fb0001de2 282bed71-bf90-4c93-a57a-b5f3177922df a2f7f95f-df84-4ebc-88f9-22d32f8145fc d9bf16f4-4d5d-409b-901b-242d59615438 0134f63a-c932-45ee-b926-d52eac99884c 1a4e1e83-21a8-4653-b0f2-ef80b79f993a bc3e99f2-9469-4b2b-b97c-13ce557d510f e36cc51c-50f4-4687-9a24-3fa47812562e e896d897-5a0c-42ab-8aca-c6e92d0d26ae 6af98560-93d8-4ecb-92aa-f5f39962c0ec 66a4aebe-e49b-482f-9da2-46b9697d0d65 5867c564-3b4f-4972-ba90-e442e5e24c5a e1f76f63-7837-4c3b-b7ad-df3f937afef6 e0b04075-6b40-4edb-92da-67e60b070bd3 ec5d00d6-53a2-43d7-abc3-ff0447de1f08 fdd62eb8-3d93-4455-9cde-332234dc7612 a7aab64d-832b-4aab-b037-ffaa554e35d4 660f474a-1c09-4886-9134-d2d2fac71462 f5fbf031-8919-4c42-87e4-351b6dc61dc8 e2aa1e8b-cffa-4cf8-8ea5-fc383ffe991e 881834d2-61fd-44d8-ae29-13ee92ff77f3 72673e07-1329-4286-b2cd-8482052bbab9 980d0f9a-1600-4286-82e1-b5d5283679d7 499007f9-4c11-442e-9280-991c0c017998 373cc1f8-1f60-4bb7-aa4f-a6eac2b1c952 7bc1af79-f3a7-48aa-84b3-744de0d5e9dc e41b2ed5-f9c6-442d-955e-9c45f3fbc942 3909a7e0-11d0-43ba-a103-3368ba185d7e 5bacf0a3-a6c5-44e1-b48e-416ee4ce122c 1cefa2e9-2ea6-4382-bd26-9a0dad5f681c 68a2d92e-1842-4bf1-ae82-0402d9947cae 27979105-b7ec-4886-8b24-b0ba1a04a17d bb7a21e3-7b4c-40d7-b94f-b63e78c9ea44 be76a3b9-afe3-4b6f-bc69-38b75bee4904 b9b4ec02-fc76-4c0f-ad33-d7be0f590a8f 654cd9ea-e859-4f72-861c-022101c52c78 f97d8239-7649-40cd-b8a2-adc0ad76b368 25ae8d22-00b1-4e1c-9bab-1c43cfd50871 5fe9a09b-dbf7-4a73-b535-32e59a878c8a e96a3a9d-11a8-4941-af85-27f258fdb6a2 1f07c855-dea1-40f6-97ff-fe467ada19bd 9c539f28-6296-4303-8d6a-1ad7644b0a33 214b99e3-0bc9-4469-94bf-2db443fe8ae4 dbda44e5-43a3-444a-9138-bdf76d01b74d 8d50637b-6adb-45b1-af15-89b71aa2d811 265c07b3-cfe6-40ae-afa2-0fd9718174fe 34c41001-c7ab-4c42-b2cc-8651cfd8f66e 732bb967-b594-42a7-8f1c-96334ffce682 1579d030-3871-4883-8128-cecad2955472 00d272dc-897a-4bf6-a8fa-0d45985c1f0b ca5414e8-f626-4da8-9460-a4e6023c4a36 4f31d1b4-0ee4-4121-b7c7-98f6aed54599 67f243f7-6060-49d5-83d6-322f5f83d91b 1f176383-c2a1-42fb-af99-77a3a0d07ad2 47211050-a614-4c0d-9339-f63351e63733 4143f253-65ea-4210-a9d5-9da8e28d173f 16b10200-a41f-43e3-b261-6aa50cc080e0 e6b91150-6ddd-4b0a-b334-29ace6b7a826 631a6ffe-8e8c-4977-a0dd-f0719826d32b 0669ffb1-089a-4962-8c21-d5cf2de24387 4aa554e8-6101-42dd-b97e-d00c782b077f 5266762b-779f-4fc6-b3f8-33a97591badd 1540e07d-f835-47b1-baf8-0ebd96102699 a5e8a300-8f18-4882-a6a7-b76dafafc3ab b390fda9-831b-4738-a7c4-11406b0025c5 ea582e42-b6ac-4964-8d41-ace9876fe56e d4761f42-72fe-4a96-85f2-6421aa0add4c cf73505c-515c-40a4-a5d8-7c97e49f85a3 f3cc9032-7782-4f54-a107-c9ca026ebd29 7245d80e-5bb7-411d-9360-4ce2dd2c529a 15cbe15e-7661-4fab-824a-8943ff0318e2 a141efe2-6314-4074-a1de-b5b8209e5df3 2f44a223-f99e-47d8-a795-32695a544c1b b249bb48-3c98-4a6b-a359-f1cf21e9e996 8dfb008d-0ef7-4112-bd0f-1e68ec3947d0 3cc2d009-4dec-48de-8ca6-d78c1af94379 c9a35f03-8642-4a72-9d67-d48bd69a8204 023a8624-35dc-415f-8586-a8c527188fa5 ce53240e-bdb3-4308-9091-1d2346da1e4c 1ee17059-7294-45db-bce7-b95f54c958d4 49b999e6-9322-4002-aab2-2f9f29733a4a c932adf2-32be-4aa3-b2a1-0c0ad6db82b7 50fdc03c-bc28-45a9-a5a4-ab8f86fcb17d b99d6512-16b5-4554-9c48-091cdfa78278 e787af67-2c61-46eb-8d81-773767acc927 8feebeae-13b5-492d-a850-0e35e1e0461e 3b06b68b-084f-4391-ae66-f43cb3c63a92 da576b42-6067-44ee-9376-b7c432cdb54e bd3c1cd6-07b4-4b99-954d-6c4dfea6b37a 6705e288-0666-4d7b-a771-d598501ca4f6 5b71b15d-d473-4265-ac87-38aa18ce2598 820a8b09-7a4f-4c3f-888a-a024c9bb9aae 115d8be4-6302-4f99-9f7e-ed87cce5d073 d0a6aa4a-05c8-4ff3-879e-a00230218db0 2f97b3d5-29d1-4f57-aaea-2ac7aeff4954 fc904eca-834a-4b52-b660-6815d8146702 4783f9cb-a7f7-46c4-8512-f77c5726e0eb b6a9e34e-eb91-4172-a975-f38fca6b7a21 95357dc5-2eb4-43cd-90f6-a9b41bb0c679 82a77728-3804-4966-a91e-6debebcc6b6f 2db4ea9b-9b0f-4527-84a9-8c2d4221d6d7 3a4eeb12-64cf-483e-bd5b-1d09c3746356 a984b759-fdaf-41af-bfb9-e3739e94af9a 8b9a2ec0-2d00-4ad7-a97e-fb7f66eb0bf9 61e4b912-d34f-4aea-830d-bb38d60463e3 7f095147-33b2-46d8-8310-93ecf85baa86 4ba18e82-f560-4105-b98c-5e462309cb0a 654b4ab7-d756-47f7-9bfd-d09263261391 6cb2f058-bf86-4d2b-9684-81b26fa85fb0 433af5ed-d24c-45db-ac61-e9cd5daadfdd 1c1a1ff1-5350-44a6-84c7-286e84c7f600 254f9844-5043-488d-9d47-ea1cc57007a6 c565e3e7-b2ea-4087-ad51-9b250403b08a efef7a9d-87dc-4ff4-b79b-a54ffa1d6917 c1fb41b0-ac1d-45b3-aae8-63e9c53c26bb a3e0334b-6a34-4219-9213-434f59e745dd 76ad5199-226b-4154-9029-fd7cbd9c8434 7b95337d-47f9-499b-9436-604c02802dfe 56602c74-73af-4b9f-b97d-23b35ad6b392 5b7709bb-8687-4cbc-aaab-22a553236f79 003277df-58e1-4124-bd7e-d2ac1d4acbd0 4db3e813-058d-4325-abac-c453beff7e13 96e779ec-1f55-443a-ae68-c117e380de38 0b9cb254-3213-48c4-b300-22bfd1c75a1a c5963f20-b8a4-4f79-abce-604f9649c2c4 8e210c6e-48b6-40ce-ae58-0ac0b36acb58 50fe0f50-c642-4e06-b73d-69a2f6f1ed8e 52b4b40d-9762-4a71-a6be-9388c796f5bf ff655fc2-09bb-4653-befe-abd0b42e4d7e da2410d4-83b6-4715-9e3a-48670d567d9b 8c3018f8-67e3-48a8-82a4-c6fab2ff5970 2bf6bce2-00fd-40d2-8905-501cee03785f 1c813b84-0b33-4e3b-87c6-ca9a7222c700 0bdf76cf-31d7-4dd5-9625-261a799f4604 75be6c36-3117-48fa-8943-ebffe58b39f4 f79a572d-b446-4d67-8acc-6ba42a9490ff 364ce9e3-b5bc-4672-8db0-b11de99440a9 394e8f86-da7f-4fd9-a6e6-5546e7ed7bd4 ef167c71-d11d-49f6-be4b-22d3a8f4325a 4d1b7261-38d3-440c-b13f-6c5d224ea617 3df88fa3-e531-4009-9e1e-0b19d31a2345 baebc9e8-92c0-4a8b-92b1-c28f6da6b93f 444b5c0e-3f42-4adb-8340-aec6cf6c90bb bfea7174-fd20-4353-9ca3-2c0f591eb3ac 23cbaece-0f83-40f6-b270-9f1b69781fd8 626eb9ef-105b-420d-bed4-2a7fe8cc0587 dd5e4cd2-6212-40fd-96ae-c076cebd7810 600e28c9-f085-42b0-a673-bc07d3ba0669 e6dbba6a-4e0e-4358-88b1-ed74407e809b 7bee64d7-3c24-45d5-828c-542b82bc76ee 16ba4d74-5f53-4ba2-8fe2-d6a49010e5f1 a181d82b-0298-4a82-861a-b5c9eb978355 7eda04bc-8ae3-47bb-9281-e8e3f5966f87 3ab048b2-0a2b-4f3b-97dd-c233231b9459 8a8ec42f-ca00-4262-9f75-a968285e115a b6672c7a-1409-4799-b25a-cdc948e248dd f373e7b6-4681-40ea-8ca6-8eadea6d0533 6ed961b2-2f6f-4790-9b1d-1fa51b232865 93724824-a8be-41e5-ba41-a6ac6f4eeaab 5e0e99f5-2dc5-4762-9e6d-c2720bf56613 6db19b80-eb6c-4287-8235-6131c6ba96de e85b1f89-da41-44e0-82f3-864d3f2b2251 140b36a3-972f-4146-9152-926c78f9b944 2b2abc98-6e42-4461-b300-66104d9ebfde a0e11db6-58d3-4135-9269-6e4e724044ec 5c7f7250-9310-4823-a6fe-0d656c087521 7d515335-16af-49e8-9803-00f94d399c62 68987c91-402b-4cd4-abfb-03341410b89a 78367d3c-a847-49c1-b42f-ac11cd6fbc2f 293728bb-020b-4758-a652-f9b382a4ab58 2aa8cb1e-82ac-4653-ac49-4e42fda603c6 d735e7b6-20fc-4b66-aa5b-0eeafc996928 6652ce55-85c4-41cd-94b4-1020dcf5e18f d05577e3-db7a-48df-8776-438add3ce87d 7e51a8a5-b208-447a-a5dc-baa1d77e61fe 8548ba61-0f78-4495-a3d6-4739072b41fa 3ed62081-be6d-4404-9972-0b46ea65505a 742fb7ee-5215-417b-8a10-50f0e5b68ced 0550d72b-151a-441e-a460-c32bf2e0b0de 5ec8366e-d2c5-4d52-accd-1df273bcd6c5 fa477eea-8564-4b46-8867-1f88c0d3f579 35550fc5-1ea0-4825-8e3f-faaea8bc4701 4a89ec33-f304-4eb3-9463-e9a5c15d9831 76afa806-7758-4a9e-a722-26e7f88e702f 5f9105c1-8a64-4e4a-869b-27f6e287b180 727396aa-3b96-4e0f-8f66-417e0403cda7 fe5fbb09-e06c-4ccd-b3bc-04cbc7e4b980 2d6262c3-d11c-4eea-8ff8-306328a80610 d4499a5a-9f63-4cad-bd24-583c0f69c085 7ce63b13-7856-42e9-91cd-f2a0dd7fc28e 28ddb6f4-2995-4aee-b21b-0496af8e1892 9cf37f24-5530-439c-bc16-12472bc54d8c bba481de-3752-4afc-a85c-953dbcac78f0 71e0f618-1360-4a26-a79d-6f4c2e11e840 00d4de7e-bbb1-4cf0-ba08-2acd18e0735b d1c75e75-768f-4c1b-afac-c60484d66ddc 49c42de0-048a-46d6-a122-a011d954b255 0d088f2a-9219-4574-b28a-1d7906ad3dd7 e8eb368f-490b-4da5-99d8-16d8c267756a 2848dc05-8c97-404b-a361-07bb1c85d3ad c05c1e57-21e9-4b77-89b8-bcce04297be1 830168d0-fec3-4b45-b6de-2ba470c608d6 6fcb136a-f34d-4fdb-b2cc-897da4263e18 90895955-1f5b-494a-afc6-808760027684 809b6f87-fef5-44e0-87aa-80bb82148569 295b2d97-e25d-4293-92f9-90fd37154648 d1dee251-9dd4-46a9-bed3-b664b063dd4d 79da7f7f-19ca-40f7-b38d-87b01a0584b4 21188ec2-9442-45e2-8c41-582f1e3e20e1 16d5a6ac-c1e7-4977-af64-292b2fc9562b 84ff9db8-56f3-4b66-8a38-a64b335481a3 2e112933-1f71-4dd8-bf58-be77ea59f899 ebd420be-0823-49ae-a702-8d09048da577 28627f9e-1d5a-4e1b-8a12-810d2edf01a6 6ff9fbe7-a532-478f-b13d-4a37df06573e fda31ed0-b9d3-40d3-83a8-b04c980e4bbb 307e68fb-659b-4ad9-97d5-742d73f51b25 2c699cd3-e6c1-4d99-bbcc-38e2fa09c55b e8910f53-062b-408d-927b-e746a12dfd89 82f4bc84-6736-4aaf-bfb8-359c5b6631f9 88826981-cec6-4b29-af48-ccf872b0c082 e0eb025d-f577-4f71-ab9d-c4f3d7d9cd32 43fa3d6c-07d4-4dc5-a9b9-f52817cfdedb 8ae12040-da81-42ba-90c2-0ae20b4e3755 718505a6-0e4e-4d2b-acb5-5c01da7808bb 4e66778a-1a55-4f0b-8775-b80b1115c927 35030ba8-a596-4548-bc8b-0bfc1ae07011 71a5b343-2aac-4544-a647-c050cf5273bd 98d91dc9-f04d-4c18-b63b-b38d864fb70c 05b20744-2e54-44c8-b404-57f3b1ac6277 089eae84-ef20-4d35-b525-f166424d51f1 8f1c2229-6589-406c-bda9-bfcbd2738538 802046e2-0a85-4fb0-8a45-bd5f59e976a2 7d74a350-5158-4d82-846e-a62f5edd4abf c574edb3-bba1-41ed-a93c-518be84a389d 0bca27e1-30b0-4e8f-a651-ba626da07f0b 26245bcb-88fa-4104-9a37-92e221aa4b92 27338dae-51b9-456e-ba2b-271d272fef85 77d239ef-3e84-4348-9253-53904735b1a8 c602c5f7-7547-4892-9255-19ed7ad6c37c 69592b76-5d2e-4db7-bdfc-cb5743cb6c67 63c50d9e-eb8c-4739-81f2-3a2539cb2eaf cb48a787-be90-4434-b590-1f68284037b4 ff3f718a-49b3-4660-a348-d01d7b0059ac 01b5109a-0f71-4267-a9b4-27956cb389f9 e27aa5ef-173d-40fd-b3c1-950d69a027e0 3fb56883-b1a3-4ad8-acc7-454a87a65435 d3249325-de7b-4e26-ab9d-8d7b4999c8ce 5e24604e-650e-4691-9901-f55d8791d1f6 4738c3d4-7a7d-4590-9d9a-c3c39da90760 fca25e36-776c-4f49-b5e2-b763c0d4c859 51f4bb49-9387-47a6-8213-75f181b99a88 ac3322c5-9886-4da3-95ad-ce267da2a651 8cc7d6ef-f529-49b3-a7bb-2d08df378644 73a58dce-1329-490b-93aa-59e11393dcfc 6aaf20fd-97ef-4e61-8ff8-dc095fb98e7b 39390470-95c1-48ee-bb6b-aaff1459cfd8 68ce31e4-8636-4af8-a3af-de02f32ef46c dddd354c-026e-47f4-9fce-343b80e087b3 f8779ea6-8422-433c-bee4-d43920f30f41 476b6daf-e6dd-4915-a417-4d554b2560ce 9713dc4a-2cf3-4642-8704-d8e3b4cfaec9 56afee78-1463-40d4-931c-4a4f78dd6653 14c5f292-167f-441f-af7b-78163d880a12 7b56c3b9-a6d2-4194-bc2f-4bbcfa9d2ff5 b92559d5-87b5-4f8c-a98c-84ac1d08db8a 0eb4b926-ad68-46ef-b067-9c95117d8fd0 426d597c-7c02-43b7-b297-34735239b0f6 d57794da-8342-46f4-8e35-1cd619a2da3f 6c752b49-175b-4c6c-ad2e-fbff3b95c0fd 34d03c6d-5421-4b3c-a253-23384e7e65cc 34066eab-7960-403d-a3ed-064bbf0a9307 6dc7daa4-4bc3-45f2-93e9-f392a0de86ac 4241e27a-037c-4adf-a29b-fea97de59ce4 416ff653-1d70-462b-95f1-5a29c2ce0d50 b55f13ee-b9d7-4658-8ee8-3b296ad13a2d 08db3d8c-317d-41b0-bd7e-8d15b6426833 8e2a5ac8-be70-4835-a7f3-da3fb3d252c2 50490b6d-4f70-446b-9026-3d620fca0a21 dfd6c387-491d-47f1-9cc5-b64f281cd46f 2a421efe-f1ff-4759-b0c4-9b271a4ba62f 8fc25bb3-4402-4a5b-bf4f-72a68bddf610 a709dda2-a257-4405-90de-019b1006fe76 cb399ddd-c0b1-4b55-9a8b-2c0652a0f4ca f3886725-ea7e-4b28-8e6e-eb4637bb8ced 7ac4c747-9f23-445b-b186-71e18f8ce339 7def239e-00f1-47ae-9668-1aea0f23144c a71e81bf-dde9-4577-8f76-c085b5685c37 ab1157d1-92b4-4595-98cb-506416a3031b 1a101f5a-5c08-4c17-95af-db0a086c38bb 480f8bec-ce70-4bb0-85ce-b270c1fc7c4c a1a3ae4d-b89f-482f-84f6-29e5d9accbbe 5325d5a5-3198-4336-8c6d-0d78eaf25e7d d132e9fd-dd5a-4179-bfdf-8c6e66c52e9a dbd08c1e-08ae-4260-8251-72c75b97f37d 19e6674e-22ca-4534-9d63-daa52b86b594 c86717f8-bf11-4ae2-9c90-40ce96a0fcc6 b1d116a1-9bc3-4e8a-9135-8f9108931044 e1893fd5-2620-4aa4-b007-5b279a1a9b3e 2f13a10b-3aa3-425e-ba7b-a4d623d69fd1 427b1024-2e07-454f-9538-bd1da1976f52 07236fda-95c7-4b53-a1d8-aac553048462 3293d224-c8a4-4511-85d5-1a704eece683 b92d215f-9e59-41b8-978c-943aed9bd820 05b13985-8ec4-4bde-9442-5898330eaeb9 bc4a6363-d990-4243-9ac3-a932f9139493 bd09480b-043b-439e-8ce8-dc91420e3dc0 0b5475fc-1876-4452-8b94-01accb3c7d2d 39e46a0e-1892-4ee7-aa3a-f03e9f97774d 47b1dde9-635c-47b6-a9a7-1cb2ff10de26 a486bb7f-e223-4339-9aba-8de0ee921386 297b62d3-9e14-4fc3-81ff-16c3a91fc71e 5c8c03c3-62ac-46bf-9218-524e8113c055 3f4b7ac8-6e4a-4298-b1ad-faa04b3d1710 2746a0b8-8ee3-4b18-96c5-07a3ef2d5366 61f813e0-bbcb-41e3-93fe-e763eca356d1 3acca55b-34d0-48b9-a77d-ad2afe1d2c8d 603484e2-7cf2-4d17-9764-78f4195eb26c fcaecf8c-6fca-4891-ab4b-912f119827f2 1b713531-adef-47c3-aaff-54abe02b3f40 6f8bee8d-8cd6-4fae-aa00-1be44489bdab 0010f4ce-1180-4dff-9e63-6f6e1dc40815 3f2a4a74-ddf2-43e8-9a96-8b1025f2cae1 25e9974a-9bb2-488f-8e1a-6ab0ad0967d0 bea2e7f8-8e07-4fa3-9b9e-978c6151e947 5fb22d3b-b8c0-4e42-b5eb-a5faaf70e385 eb497ab1-1c05-4ea3-855a-cbc755002fd4 48252b1d-a090-4080-b5f8-c20f7d47ffe0 34a81c7f-2f58-4d97-80c7-8fc88b498cd9 dd4acfc7-d1a0-4346-b73a-5f3f22bc9096 ae79e32d-64f4-40c7-a48b-9da2c25dcee6 4c4b8171-0195-468d-be1e-9e4951ad927f 2173a7bb-1b2e-4f7c-a18e-641ef3cccca0 f58ccb5f-effb-4284-a61b-31176bba9c86 2ad92346-b216-45ca-9a55-7d99c4caab95 a437e261-ed3d-4409-a8e5-d2c4d39fb994 1368bff3-84b3-4643-b78b-2b67e3eb4b0d 6dce9a12-abb5-4aaa-add2-ede57d328739 56b26eaf-6ead-4452-b47c-2186990833b8 699983b7-172f-494e-b365-a7ba30bc9b61 2d1414b1-bffa-4934-88d9-e03221450a32 7a4162f6-3230-4053-94f3-8093a48d8450 ada565b8-8b9c-44e7-aa7c-c9117fc4fb80 c4eb899c-6bd3-4c93-9619-0b9083c2fbc0 edcc40b2-bece-487b-8b40-bfcd1b070673 06d80af5-d309-44b1-9928-39da72a99ac1 c2f1a910-e0eb-4007-84c4-8096c2037a52 797d32c6-6eb0-42ca-96ab-77dfe5832b50 ef4c1cf2-81bf-4a09-8749-9eb2cf7d499d 0258736d-497d-4139-b39e-fb54a76b1a0b a358f85e-26ad-4053-aa73-e63d98584cd5 c5b476b3-1d65-40b1-b17f-320865d73f37 ad52f32b-e4a7-47bf-b902-35984f5ebc55 ee5ee0f3-fa1c-420d-b220-9d8752f7b7a5 024e3946-3df8-40b6-810b-5e6073e7691e 4a991f9d-7470-4b86-98e5-7b30273bc4eb dcb7a280-ee7c-4c69-9c51-47cffed321aa 93f4fe48-2d73-4c6c-bb09-e5d05642898d b9314684-e850-4299-b41a-e67a0b2dc176 f2eece01-b660-45b7-8d71-de0735684acd b3a572e8-26ca-4911-a2b0-8c37c71fa237 fd9d0f98-8dc8-4868-ab4f-1e95d637773b 57e92896-b21f-46ca-a15f-a8ec85a881ba cdeca514-2366-4e5f-ae6f-00e1bd60a092 60a830e5-0502-47e9-806b-eec4eb5c925d 6a5aaa66-353b-4e70-a904-b33ec2120e0b 75002c16-6421-4ca3-94c4-d60711124ef6 5fcf74ee-e47b-4eae-869f-e27d7684d831 9123ed9a-15d8-4d1b-a5d7-abfbf805d623 89d9cf76-6d1c-44ad-9b9d-27375a980b8e c07e294e-426d-450e-b249-62c01b934b94 64273ab7-b4c9-4ad8-a784-6498c769f306 344818ba-9c10-4b37-85e8-cd0ee487d557 5b594f5f-846b-45ba-8c54-2af52042d00a 23fa38d6-5b28-4305-8f6e-fc09dde7b71c 224712d3-78a5-4597-8d8f-ceffb940faaf ce31a5be-51a2-42aa-a401-7323c0e2053e d3b02182-eb43-438b-ac24-780b8c41e387 6ca041d1-5b33-459a-8ba9-3a70284adda2 f640881e-8500-4d35-83b9-0a6971ed59b7 6fa27142-1eb0-47b2-897c-5b3c5bd57888 aa07d31b-c5e2-4ce2-92a5-be7b01d06305 5384555b-7d68-43f3-a1bc-8f242f3a0dd9 1ea2443f-0e6c-4066-aaec-0874e55d63f2 eeb11767-1f8a-48b3-9faf-9802df65363e b026805f-27f0-474e-8165-b531ec2ba9bb 58f029ef-7939-41d7-a6d8-9a52e60e3c32 e752deeb-d354-4906-baaa-4d4a79205d25 126b9c17-e48d-418e-98ba-1b1f102967d3 bbf91c0d-9a4f-4c5d-800a-ca36e2b1cf74 fed4e916-4461-4de4-a213-80831b633922 f593d96d-94f1-4322-9da1-a9a334154562 a7ad7496-6ddf-4917-9fd0-dbf3ebcced34 5d96e36c-a475-4815-9076-94934b21374a 15c8a0a7-aaec-4755-aa68-f9070fde3328 71a006a6-b8f1-400d-8ba7-03e613e28c5b 7cce9f43-9057-4b2a-94a5-df41bb891747 ba31a650-662f-43d4-a36c-a55da67073b3 94a09cb3-78a3-4a7f-851c-3c2a47d3fad7 bad06fb4-9260-42e1-8fa3-4d91b2722801 a08f4a86-ac70-4df2-99c5-42172d958db7 93143255-f450-4306-acfb-64e2cab35e07 ad96d8df-c15f-4e76-8fce-05f2bf09174c f6e5fce4-61c6-408f-a042-2da90929a66b 451321d5-3539-4e91-8b4c-0326afea7e8a ebd7ccc3-6c2c-46e0-b17d-ec4a5a1c271b 37210a83-30c2-48e2-974f-11504ff15b3f c1b36bf4-4e6a-46ac-beb1-d4e8f2089a70 6f2324c0-3036-45eb-b00e-072923546b3c 6d7d1500-35cb-4590-8fd1-f3ed91afa83a 3deecd60-f5f2-4dd5-927a-7836e0f64336 dc3d10bf-e24c-434b-b7d3-6aa9b00c026d bb61a8fc-a546-43e6-b497-b1fcda8a72c8 28ea0451-bd97-4116-8dac-04a7acb1628b d2f801e2-904b-4512-b282-93d42a9ad378 a40ce9c5-aaad-47d7-9eb3-a8b9c0bc7619 49e9bc8d-13af-4387-8c7f-4d3dbc4a723f f885a5f9-f15b-401f-98da-84f1a4f85fae 7f212249-b971-4d9f-8c86-c1bfd26fdede 77ca2ef4-731a-4f19-9f13-c1977485805d 6e0ce066-d98d-4310-b069-9a17fefcbc73 17aff441-1729-46d0-a699-f39729668d6a 9e3869be-15be-450e-8c1b-7a3c5546b662 bf502ce9-a079-4a78-b0d2-64a52c3bb5c2 2178870a-c19b-472d-a6e5-e3b2d363db97 0230cd31-67a5-48de-9868-9ff25afc3a11 e8e68935-3822-4f08-b8b5-68de626bfbc7 eb7d3abe-f58e-462b-9f60-f336096cc2f2 1d1293c0-5327-441c-8c4c-148ee07a28ab 7858eaeb-bb90-41e1-85b5-4292cd030563 2bda79c6-12e7-4266-9d43-9ae34be6454e b3d77c69-32cd-4751-90ad-0eef8a534388 cc8093f4-c6ec-4762-9282-12fa66a3de30 f104c055-f2b4-4056-bfac-2d98cf987a10 439ac6b8-35b3-4d47-ae88-03fc2120d27b 6f0ea370-2d8c-40c4-93c5-ca55160863ae c5e07d42-4b77-4123-9268-0351960411ac 21534c41-b2db-429e-a3d5-73d0cdcf20ff 378eeaf5-3817-4969-b948-99b4e33838f5 7b13565c-3884-4fa3-8185-257a4d1f85cd 1c4cbc88-cfad-4c10-96ec-8aa0e79dd22c f276f3dc-e724-4b8a-8a73-5bc41c653989 cd0c3b50-62fb-4a7e-a13f-1089b60d8a22 19ae1998-4825-4a14-bc7c-8be2669782c4 4b33c9ea-d15e-4f4d-89c5-8c653468d9c1 e003f84f-8bbb-477f-8cdb-93ff42d1e29c d1e0cae3-147d-4586-862d-f440ef3f5024 95efcc4f-4f90-4e49-9795-7866be288558 3387fd04-b24e-4c44-9236-bc1ec0af9ec4 4e2d2e50-6b21-4e66-ae7c-b74c216e5e23 8bf77ce2-cc1e-404a-91e8-58428d0d4492 9e6fe0a2-e1a4-48b3-a441-e5ae6801219b f74731fb-9090-4305-b02c-2e73ffb903b1 758a32dd-acd1-48b8-9ce8-5aa9e5c86e2e 73fb4d05-92e1-4164-80a3-e46f70f14fd9 c63cbd28-2b13-42c1-9437-3364c83f0181 38bbc9fa-64a5-4889-b831-9da15b66e829 5ebd3cde-fb71-4f20-9ffc-43d723ca7329 dae737f8-b28f-4444-a794-fcdfc8fc0dca ea193513-1644-4a44-93ae-d68a86f778c0 11b7b2f6-0e4d-4e94-a03e-88111ef5301e bdb5f489-eac9-4c45-852f-3b33cbd7e2bb 5c4a187a-4d0b-4043-a670-3890a242d374 f2e4fd42-f399-41b2-b1b5-e26bdc19e5a4 c9bb78cc-ea6b-41b2-96a0-1fe894b2e8e3 3adea05d-d86b-488b-9d48-a26950bf14db 8f0d907c-65e7-42b1-af15-e612055ae000 6b94f315-6204-4822-82ca-e660e0ab5521 1a7b9327-e6e3-4c3d-b4f9-d86206e7e75a 48157ce5-a4bf-4d49-a914-aa85fd32373e 688777fa-955a-47fe-82d6-b9a02b6fd99a bf62bb6b-fd05-4618-a74d-c29427cbfb87 c377deaa-8700-423c-94c4-384afc4e370a 0988c845-0b09-4fdb-8372-81642acdcd2b e3722378-ba7c-4e2c-949c-3352a499b24c 17972fed-5669-4fdd-8673-28be628e77b5 2efe7566-fe3e-4dd1-b649-c73db8e3661d 49cd8311-aebb-4f68-a4b4-789103f52937 91c274f0-77e7-4469-bbc8-6fe35980164b 5e6d866b-1667-464f-b659-4ab436e30fda cf5bbb11-e7e4-4e65-8024-7b0fa6132fe9 fabf5bf6-b648-4449-b823-da14b53e7aec b470e714-a754-4491-a7df-b68c4fa6a94d ec1b3d65-1c2f-43fb-bce7-5d128e0f3afb 036e95c2-6bd4-48f7-b59a-9bb4cdd89c19 ced9214e-de25-47b8-a6d3-739b3653f2b1 84908b46-d683-44d4-bb3c-ea9f9bac41fb 608a60a4-bff1-4ca5-983f-89b7c89f70f3 2fb6bfa5-c317-42e8-812d-646bb16e9d2d 5765a653-c451-44f9-be7a-61c1d60ce6cf b653dcc9-edd2-4cac-81d8-4ca48d1da5dc 41800086-005d-469c-bcc4-106c6ae13ba3 77e6180c-c92c-4ce5-a57b-7e01b78c0a06 caebfb4d-c58a-4fc7-9926-637627486cfd a21a4284-dc5d-4a40-84cd-0052ff52157a eb8f0087-c506-4eea-896f-da908e255ff7 a57aa906-19fb-4212-9454-3c39b396d871 0d6ade6e-a565-4c0c-b621-c74441b83e00 fbef068b-7412-4fee-adc3-0cc6756da908 22d546f4-4981-4e16-8000-a9d60d954337 65c647e1-5c00-436f-9eb8-403abc8b278f 4bade2b6-d95e-4b05-bc21-f76cffbaa8f4 f3fdf874-8f14-4d6f-adec-5552e38006c3 77e45f9d-25a3-45d3-9f12-9213e0cb92cc 136c04f3-19b3-467c-926e-b36b2472ae80 2810574c-2c26-401f-911f-c73fcc0111b4 bc6215f6-d119-4983-9eff-ece52de88121 f2af45c7-78e9-4755-bc7c-b06adb1f1454 4415e280-6fe9-4f49-9518-7dbb08420c7a 32ec9d20-b378-406c-997a-bf36db6450c5 67a6d188-8f66-4c8a-a746-be59c016b288 2e97e859-7a7d-441f-a9af-118eef304cae d3753670-08c8-4b6e-8819-55bbb89db685 5732d90d-c793-4a3e-847f-d64879d91c02 ad9c6035-fd35-497b-a068-2802fc3f1da1 bc54615d-6c2d-4c9f-a15a-4d80847beac4 166e4b21-549f-4110-a92c-2fd9c42ea590 310d99be-a948-4f58-98d9-830b6a5b005f c1e5b811-60b9-45e2-a9da-7851172dc22f dbb9fc1e-a868-4bf3-9aa1-77ca5fbecf1a a6614837-9d64-4a5f-a37a-f4db412d11fc 85d810c0-efff-4542-82b1-65235d456e00 7a6c31a7-2992-460a-a324-4798404290c3 4dba272f-8152-48ec-8f4d-384050745167 c248bf0b-20a2-4e2f-8d43-059861e02b36 4330f2d7-f4f0-4ac6-9e57-31401e858100 36b03bc5-04ee-4831-a44d-41f64007d51b b81193cc-58a0-4bf2-8be7-4dbbd7e5491c 82c10d71-3941-4bf4-b967-fcc9c010d2d4 2f594db3-de2a-4995-b9ac-b6856b068f87 975319b9-5635-482a-9c31-48635247cf22 43aeaaa6-4cbf-4d10-9603-2f7e0bb308a1 0dd97af2-9ce3-4f12-855d-635598bb7243 465edcfa-01e3-4f57-bfbc-52b6804bd2c6 183688de-463a-4243-8f89-649eef66d0b6 8cd007fd-592f-404e-abae-004c4a882cfa a3b176fc-e64c-40bb-8fab-45db780355aa 2e37fc63-3b97-4b9f-ae7d-402ea600f0a1 3aaa6462-8f40-4783-96b3-8af38ded509a 848a1c52-ade5-4172-88a9-6aa9af45b2ca b2b39fb2-80ae-41fa-b2af-68182b9e771d 82018236-693e-4c4e-9b73-29e08f566e81 54432015-160d-46ef-aea9-e5f068de70f7 a3c0da27-1b8a-4d72-b26d-b4a5d94ee0e6 382184c0-c9ad-4cdd-bebd-366644438ad9 2b8026d2-de7f-464f-b433-8aafd0de8123 c610416d-87c7-466d-8f14-0d7c48103b0a 747ecbbc-024a-44b2-89fe-d162a7f7685d 3089feb6-72da-4ab1-9d80-9464a3ca3e51 9fdb4989-8629-47e5-ba53-1cd83215c5e1 02f5c7d3-0a57-4efe-a800-8e4f0c09de8c 0bcda209-8107-477a-acd9-b02523ca7c56 026e408d-6c4e-47f9-9c7d-1913a6a999db 3964f2ac-9fb6-4076-b369-64a2b2c03449 58619fee-f37a-4ea1-a05e-6e42e2e9cde7 cf285f42-803d-4a5d-aa80-0e405728e0e3 78b74e50-bc53-4200-a5bc-49c554de62e0 b469cff5-02fa-4a7e-ac99-42d7b010b0a2 3cba17bf-8dbd-4e31-83a7-d0e17a345a9a 78f1b1d3-5f0d-475b-9179-5602a705ccae eebeee4d-f507-4458-81e4-f012ea5ccf4e 250fa2d5-f2f0-4f18-a483-1c01d1bb5d8a 2610755f-36a2-4da2-8af1-2bab18e35df4 5b591bd7-0643-4587-a9ba-abc771eaf14c 80716d42-7f9b-4cf8-bbfa-c8bc859898d9 a44a22c8-4123-475b-b63c-07adc60fb2fc 21d71f26-27e5-4b03-a78c-cbdf5682930f 95efe922-ef42-4efc-ae02-ccb51ac48535 81101e25-7a85-4069-a6b4-95e0a54ca63e 100f82aa-3d67-4146-bfa8-f437c8f1ee73 1e25ea23-4a2b-4ffb-a972-8d7454c70e36 f72dfebe-ab8a-46b7-8a75-cfb0e468bc4c 93520b5c-e270-49ad-9d96-6e9ea93998a0 c50dcb9b-7649-4334-a9e0-7fe86acb06e4 69fcf258-6231-4d97-96ea-a0e628c9ae6a 2cd40f0c-1a5d-409c-9c8c-5b63babe189f 06f1ca90-065d-412d-9612-4268f9c17b5b 7c4a2839-d68c-43a5-aa32-364770d26bfe f10bf317-a544-43c4-a8e5-252ae986968f 27538969-9184-4f01-b59e-f26770da8cef 8cd825b6-6075-472f-9977-d15b766ba8ec 25caa62e-7c46-4fab-b25a-fe533002b75d 3306106e-6a72-4bc8-adb3-e0c7ac890165 d18e80f6-0fe8-415b-9f84-ebc76fad3c36 e577ea77-76f4-4689-96cb-96d628938cf0 fa81bd17-d198-42bb-ba98-165f4f76f06f 6b834a67-9801-4fb7-b704-0ab7872f4db0 d85ac882-0ef1-45d6-a39c-fc1b75d418cc c57102b3-be8f-4274-aada-817db94c42cc 2071af5e-6e05-4092-b4b8-13dd9fee423d d1b85f12-8834-4e6f-aa44-cc44130499f7 f78448bf-9d4e-45a8-8b12-1d65068acbc2 b747695d-ee7c-45ad-a08e-72a582cfa5bd 10b8b565-5f1c-46a6-81e8-bc748796f6d0 602234bf-bdae-42ae-8bc0-805f8d305ef9 a39ab52c-0628-42b6-b08d-de0c7daa3586 85ce8bdd-81f1-4f19-b576-fdcf8fa1e76d 6a9d5bcb-64d7-4c2e-a775-bccfb5be5d33 675db460-e892-44cb-831c-203de630ec37 4b6107a4-b3ca-43ea-97d2-2b286ada3853 a4018894-1b2b-4ddc-b5e9-4ff9a8e05191 13ea9114-b2fe-4ce7-9577-90289768f4ac 4ca19c5b-815c-4299-a36f-0ff0febf9c4e 088c993f-78ba-4944-82bd-f6b234d5bef2 78857483-80ef-488d-ae0f-b5f697fee038 8018ecc3-47b8-435d-ada7-c25b66c4b94d be9d9840-0031-464e-bc76-d476d1016cc2 2d4a83b5-901b-4b97-9ec4-4448e67bc3ec 2c47196a-76af-4b78-ab50-c97f383a266f 4f05edbe-3bbc-46bf-8b49-bd5d374c53d7 645addd4-2cad-43c9-b06d-364745c8ceea bb5fb8ba-0689-4659-9be5-4c9655bd13ce 63827d69-c27e-4818-90a5-1f969a989c67 4aea8d67-c0dc-4c38-8387-ae86064b76ef 92acba82-3cd6-4d07-be0d-1ce355cd1fa1 07088159-8d6c-46e8-9920-619380f23086 31f687cd-83c6-4559-b7a4-f9edb8b2f74f 871c74f8-6810-4ebd-b689-97e527672e6b ac022d6a-7c93-4e95-af18-855045c5059b 5971f031-8316-4c54-b853-6d1b1462eac2 aeb0e4f7-0114-4310-9ba1-bca5b6b9613c 3cfdf8b9-c0d3-4d01-b9bb-78564e106d43 8a33b592-44d1-4157-b5a4-82473019696d e4737afd-fd6b-4eec-95de-f1ca05a56cb9 10dbd04f-f1ec-4605-a769-e2031981b55f 6ebd3a8f-9ed0-46c6-9311-480ef8cdb45f 78c6840a-669f-4e1d-890e-d7d574b05f9f 98864736-b3ed-46c2-9f97-7f9bfc98e1e4 9c7ea5ce-a045-4ebb-8352-b5222bc7e135 53d55ce4-3dea-457b-a58c-f2e18921b0a8 c0aac18b-7f33-4a20-8123-0128862c1379 a984bb90-81ea-47b6-832d-85c2efe185bf eb432ff8-b5a7-4ff2-bd8e-c705725b7d27 06b75e3d-0655-4469-9faa-200b25888b33 bb51644e-4c52-4916-ad5c-edcfb5599113 189a02ee-4b7f-4d8d-95be-bccac196be7f 5497649c-fe26-4e79-b823-afc6a1237d0b c62e5538-2ac6-46fc-baaf-24466be76ec6 e893f726-d18a-4d67-b169-37181be81883 7485e1eb-bf37-43b5-bfe5-7f92bac19f1b 61467e4e-fcbc-48d0-903a-8fe9063e1db1 c36d6c7e-edc6-413b-8865-bb7f4e589640 d61e1ce6-df7f-4732-be2c-464e83df13da fe70b85d-56b7-4dca-b964-d7e91f29b9b2 a074f0a9-a9e0-4fb5-b719-4e091261794a 095b3091-7d75-47d8-82b4-b4ae9e940052 142906c1-263f-4145-8985-5e4f28213ec3 3681c41f-31da-49dd-998e-cd3e08fb07cd a8089f85-4817-449b-bd75-50e34fce52b2 35c0eca3-7ad8-43f4-bf12-ef223b95de69 79af3202-a00c-4c7d-9729-9524a5907c36 82cced7d-ccd5-4150-b504-57b6b57c7977 d34c6511-8fe5-4b73-bc52-eeb3727c0c00 201fb2f2-bb97-4e08-805f-de7ae1af8302 84e38a49-f330-44e9-99d7-485bdd7431d8 0aa574a6-dcc4-4409-8fed-6dcd1c3c4516 d473ab0b-00d5-48cb-8b46-a6cb3b63154b 04068d4a-5b16-41a1-bedb-0997ae4eea19 d2d7e358-6e12-41ab-abf2-1b5cd4e5ae6e 8f6de9aa-518c-44b0-ad84-5e693f074c28 8d7e9556-245b-48d7-a175-5ff8a518a905 64439735-1710-4fb5-a340-9bb297093f8d c10d7f50-3b94-4771-997c-acebfe10e8e2 afe7c3df-5d70-4217-976e-a1562a95b5fc c8fb7d47-d3a5-465b-a459-493f3669071c 5227dff8-bee0-4291-8a73-eba00baecc74 8ec7eb7b-a79d-465d-9f7f-5a791ec4e20d b4e5e5e5-80f7-466c-afc5-fca44e9bc0d5 1cd9210e-ef3f-48e0-876e-a26171bd78d0 fb534702-5135-4287-aa31-8d129ede5fd4 15be911b-be41-420a-b579-a6a6a2e6bb85 f38ed1b8-d4a7-4063-8777-6fb1698c5569 4406e85d-9464-4823-bb23-2765433ed927 14bd099f-57dd-4156-81a7-0737b884a9fd bf3a5fab-a150-4c6d-a8c8-eba598bc1d1a 40766bd9-c509-4cb6-8047-80330447d9ac fc873d1a-532b-4f01-91e2-b7109b39aabf 284696d6-8b1c-4c94-9736-ee070cb3b666 6cad16a6-c7b9-46ab-9ceb-0c65a4ddcf1a 89f533a5-2123-4f54-bc76-11e14951dd56 0d70f0d0-c167-417f-8832-93f1af390f9a 20ea5281-b89c-4262-aed7-355224423867 16249a3a-6d05-4128-be72-8976b0020920 b07de496-c5b9-4a25-ad85-722b4048502d 72a16f03-233a-41a2-bdfe-d0444fd0a258 154dca56-2bce-4d3f-92c4-67980cfa7249 bfe97b6c-56cc-4a44-9c24-66999361ca04 59355887-89dd-44d8-b5b2-9b14c779b90e de0b7408-6bef-4854-aa14-e9d11875959f 0bf7c230-63ea-435d-b979-5bfab0694a5e c8de36b9-e0c8-489f-ac91-ab299de04c39 bceaff82-d387-4ae8-8d31-3007e2f8fc6a 8bd9c9c2-97a1-45bd-9a7c-d9e3e713925d e4c6c71a-4dda-4ef6-8a59-86085987ac54 72647fdb-f2a1-4f4c-b857-573ebd8084e8 cdf2fb65-10fe-44b4-b7c7-1811db11174a 79baa5c6-8047-408a-ba58-fc7bc1f9fa69 a0a0671a-cb99-4b02-ac35-8a142c9fb3f3 500ddbb8-86eb-4bf7-ba6d-410da01fb37b a9528977-842d-405b-8179-a873a0af57ec d0016bcc-96bb-4ebd-900c-8ac0a6b34ded e9eee9dd-b7c3-4872-9fae-60e64d8292e5 ecef56c2-4a2c-4ceb-b94e-b69968e78a1f 07f0e2da-cb21-4857-9086-1436271bfbcf a31df4b7-535f-4527-a1cd-38d27e66b248 17ff7908-446d-4301-9942-fc5d893ed532 62c9d1f9-a09b-4783-9bbf-95b83d21d4c0 6cd83316-f1e8-4eb3-ab2d-ffe700da32a5 a7b923d4-8047-42c2-b73a-7aaab3856a94 7d8b1f62-8bdf-40e4-b674-8cc7109f065a 163dab92-6f0e-4b67-8cbb-118b7b9808c4 e2053c8f-3a3b-45d8-9472-7e264714466f 8c36e6bb-6ab3-4991-8c42-3bb507c047e0 b387111f-40c1-4645-9310-2f3c188727bc 85010734-c3f6-489a-802d-c10136b2242a a0738457-588f-4995-b21b-0b78291c3e64 3a28c5ca-1440-455c-af7f-35e3c2c2af5f 65ac1063-c745-48e0-bdd8-243973ebcb18 df334a65-63fc-43ef-a14e-d2a44a1579d6 dce5f7c2-8f87-4741-a9d7-2af1ecafc89e 4f839a05-0d73-4c89-9857-30b7bc58907d 607a40a2-7f74-43d4-8a64-806a8477cd2e fd2956f9-13ef-49af-8a7b-c983720d177e 9f82d2e1-fc55-4735-89c0-9d095f92093b af8f75d9-9e0b-4cc3-b7f2-8405b9935fe0 fa44b211-4f21-4eb7-9a39-c4b8c8b91293 0475c30a-1652-444f-83f1-a0695505c1b3 688959ff-1bf9-4786-b7fc-0030b7830aaa 2b9de8ac-6bd7-4eb3-b967-7801556339cb 2d1a576c-5e4c-485e-b4e1-0d175b2efef6 83a340fc-e5f3-4a16-8e13-dceec9d8cd46 391fc312-bd6c-40be-8f9e-0384cee6ecb6 3d47715f-9cc6-4c04-88ab-abfa05862fa1 978f1666-a6df-475b-821b-905c112b5c0b 7169c812-ccc0-43e5-807c-78ef8eb017de 8c5d3f24-d774-4caf-a5eb-6d5dda8015ff 85e6a889-bf42-433d-ac00-6bf68bd6f0c0 0a895483-1959-4879-892b-6d2c3ecc212d da823e33-4abd-4075-96a7-24869bc15e3f f6940bf2-e451-4f5e-a290-2176019494c8 02250b67-aa83-4b0e-ba66-c34b513015b4 b7ba497c-664b-4f29-8a91-e6b7d494893c baff251e-74dd-48c3-8678-b71d9ca3a8dc 714a24ed-f8e7-4250-89da-dc5a8cb0067f 40e2a672-d1a7-4832-8ff9-9e9355b8a69d aa41e236-040c-4f95-afa5-e94844bba451 e2168d2a-5236-4b0d-b846-213be731ca9b 1cf9987d-7765-40b5-a714-7541d0430a2c fa9327dc-6e50-4376-8506-06d434181c6e b22c1e58-2205-41ec-8758-5340eda4a31d 016f14ae-d0b5-4422-9173-017f8471994c 0123d339-6a1e-457d-a10a-44f87bb55025 83826c89-382e-46b6-8306-265cf2868515 9bfee58e-324f-4c64-84a4-5888738f62e2 a731fb92-e3e0-4b86-858a-807b68f0049c 0819ff72-b626-4bc2-82b4-483bc1243fd8 c1906305-38de-4bff-8863-1bc558dad3cb 554af535-c353-4119-aa24-98d9e7d5dabb 1696f3e5-47c7-461a-9ec5-9d6cf9330ed8 8d83e608-85ec-4636-b7ce-6aa2bb3bb9b6 3834060f-dbf6-4e93-8239-774666342115 c6dbf3ad-4259-4376-883d-f4649bb3976f db895897-d8ae-4722-80f8-9d5857775c18 427a412a-b470-4c1b-8779-34fd648507c2 a95e1594-8906-4a8b-acf3-617545df0913 c8622df6-6831-4b5a-9161-8bbb7a16f283 030485ac-b1c1-48ef-8bb0-e705bf80e4ff ad4ae2af-3a1b-45b0-9bb1-766c4b3d85c0 b624108c-d74c-477a-92a9-0cf6d206c50a ace03335-b070-4697-923c-e57ad35091eb 4f2a2d6a-3509-437e-a5b1-0944e93f16cb 7c9672df-9712-4b71-99d2-764f14737dcb ede1d475-46df-4835-830a-b3903c53dc47 1681329e-483d-421c-b0ed-e7ae93c27b01 dc676354-e530-4df2-a687-9729c34f04da 8d53e72a-c591-49ca-b920-350cf3d2d9dc 62a9bbd0-277c-4075-a92a-e7d298586332 7fcba52f-941b-4606-8f47-7d94aa100069 341108da-728f-43ec-bee0-6635e97f9c1a 04d496d9-ebc8-444d-9dee-bf76ced6367d 27a3ceba-65f6-4255-8e49-8def98eeda6c f118a7b6-4e2b-4d51-9339-d9bdd565262d 6699964f-2606-490d-b31a-53c4aa5a9a1e 1c5f9f16-cbeb-4794-b733-e0473d821707 1e1703bf-dbcf-4332-b54f-7208a8f4c1a1 a160e993-9d42-4b2e-94e5-1a40d1d68a22 50e7a39f-72b5-4258-a474-59f6395ac4c9 dfdcc24a-1be0-44ae-9468-f86511e59ed4 3b5a0770-1333-4b78-ba4f-c033de29c666 9e663c5b-2f04-481d-b97e-477b6711c082 5c7321b9-0de3-4e59-a084-61da16a0fdbb 36ece638-1a8e-432e-b2c7-f726e6bc900c 94ec18d6-5e9e-4370-8568-e0849b81c51b 9bf8dfa2-291e-4e3d-a299-986bdce25d01 2de13c62-b750-48f8-9aed-fd330ba887cf 9fa6fed3-a0df-4422-87bc-2696f847805e 5853b09b-7777-46f9-bfca-9aa55313d5f9 eb4c4dab-93b0-46d3-8416-df656b139f8a a5f9ccb5-bebe-46ab-87d7-5d40f7fe05a8 29a5a2ee-dd27-48c7-a6e9-9af9ca8a920a 1655f800-b2af-46ab-b87a-035771e80221 883ce72c-58fd-4d05-998b-da6c0bfd6ccc 2257ec89-04db-47ad-aa4d-bc4565688426 7c512675-95fe-463e-9e46-2a20a688ed47 fe89ac51-6c07-4b94-b76b-dbe459d19cc3 34f93870-5e41-40d1-a229-b2a802a764ee 195ff02c-011d-4947-9bb1-8bfd5a5f46d4 1f8c0a37-a564-42e2-9c82-c2deb454a4cb 83d90628-ddd4-4f8c-bc23-6bed5986ca53 6dd53628-24df-4213-96e1-2f674e0bf839 3537b70c-af97-4a1d-aa92-f905ca0b9cdb 97622675-ea2d-47ad-9148-4ff15cc415c4 753e320e-415b-461d-88ea-502ff33e11a4 fc41840b-5fed-42a6-8bf2-2efd7473ad97 905c00a2-1db6-4b63-9584-18652c2beb6e e2bfa541-18b5-4d0a-8ee2-23502082724a 42a4bfc0-6fd5-49c4-b6d0-0fc3c824938f 46ae149d-df73-4f46-8471-aede3220b026 5c947052-d615-46c8-8137-f8bb5a3e24e1 fa4e58e6-9a40-4609-9ee5-2a30b96d4b42 801ab6ac-36b9-4737-8ea2-393cf9c8023a d6e2dd45-2157-42b7-90be-7e00aca67fc4 a4b5ce20-0dc2-4986-9dca-f79fd69a8dc0 18848385-e6fe-4e25-8c07-e01ccb95cdc2 38d63602-882d-4195-94a8-d639586b76bb 993d9f06-b924-45a1-b893-074010dd2bd0 211a7542-8b76-4619-b360-9ccbb4678d8f a381f3e8-b446-4b67-9ebb-36d8ffdca625 eb05e138-8368-41cb-a7dd-f7b530a2d398 9f6157c5-3178-4c1e-90a9-943517fc62d5 4ea2a5d6-72c3-4abf-a6e2-bbc9c6fdd703 9b530e70-ac22-408b-bf45-a4f49fdd3c50 d0c5c85b-6f81-4370-afbf-27e970920db0 0039cc04-50c1-464c-a8ce-0c290dc2a38f 0d9ba877-5ad0-4656-a603-3f0000a9311b c660399a-2bf9-42b5-93af-40138aaf692a 20800fc4-c092-4340-94cd-cc4205f9af2e 05c39336-c77c-4699-85b6-ee5fc6eace77 6888d9eb-8250-40dd-a3d7-7fa30b2541d7 899b8333-1709-450a-85c4-0ae301c42338 320f4369-65f7-440b-a3d7-2e20ed5e8e66 b24e44df-388c-4f90-a91b-6cb42bfbb7b2 c50735b3-b0f1-475c-ab66-fbf8517610a1 c89cbf91-1099-4662-ab24-6cf7a12efa7e c1a8ca83-8046-4c43-a3de-a85cecbf46b1 ff54e54b-08dd-425f-b3dc-ba82ee40b6af 0469ce7e-a12f-480d-9be2-c1a5f8ff9d37 e4f2b0a3-d03c-4dbc-9dc4-905814452528 dfb60ae7-cc18-4523-a04d-9e5df3281ab8 5be26f34-8afa-418d-aa17-70815a0530af 8d1ef381-195d-4b1a-bb68-5e6bfc987124 fcce4b01-2ed5-4e7b-b117-0ec75fce08d7 0d822297-521c-4290-8520-cd0e9a38ac33 49a4c3bc-0ac4-4051-90e3-5094170cd039 3918329f-b290-4e25-84c8-98b10824fe23 fd928bd7-7e33-418c-9ffb-3cd6461dadd9 1488abbb-72a1-4ff5-a65f-1447344fb634 b28fd542-6eb9-401d-9183-bbdddeba54f8 c6f78dc5-fcb5-4f34-8bd5-6a46ce6d0459 7a42ec9d-014f-4bbc-9253-6edfa1c9e5b3 64489663-a653-4563-9314-5f118465d2df 7b256768-ad0a-48e8-93de-1eae8be29326 e7d19fbb-8bbe-485a-8617-75faf9400bf4 06dd4423-ef70-478f-83a1-0523ea3ee1f3 3b43bca0-7026-4d5e-ac98-959178178cc2 306a9d84-8bca-42cf-8c97-981e06ce7728 acab1794-7c9e-41ad-8f1d-ced677d26172 263b9084-5a04-49aa-9e84-66b67b50518c 346f5d87-ae43-4f13-875c-c37e5cc8f17f 28a46ebb-fa95-4e80-9162-f18f7ac11c85 76cab6c4-7a34-466d-adaa-692d160835ec 6636a292-bfcc-4d89-98f1-b814a0552702 bdf7d2aa-0346-499a-9788-eebbbc398f54 d56500a3-afe5-4a65-b116-f7c4c0468b8b 9d918329-66cd-4d3b-a559-bba2edb696e2 ba434975-d1ce-4da0-b4e1-4d56f18c0a70 daecf4c2-4933-4184-99e5-85c221bb172e 0dfd3526-f154-48db-9078-545af53f0af7 d56b1e17-cb0b-46c1-8e8d-676b899d1093 22a78fc7-ec40-4a95-83ac-7476ac28f574 d59a4744-b6b7-4082-b699-c8f01d4f6b21 e35735b3-ac75-4dd0-a31f-e5c09d7080e5 11635f18-a05b-46e7-b8c7-a6ff8a3b0928 59456209-a9a1-4f30-bd74-6a1ccdd87871 95198378-4929-4e18-8a20-18b09f16a9c9 19036d68-4619-496d-9fe4-a9f9a8ab0117 91f080e2-6679-4378-bc9d-5a0fb015a6f3 4cf30447-0fce-4900-8681-05a45e58aba7 ba4a8d8f-4da5-4a64-9464-a193905a036e 7a61e60b-094e-4436-b391-ccf87f2e1a8c 5d01709f-08a1-42b1-a481-604fdb3ba922 b5a8bb14-8489-49d9-a15b-426b524e808b e3411dde-be87-4223-a19c-a68dd3f9f647 22e683df-4198-4fbc-976c-58085a7f27d0 1b3716b7-a45a-4c4c-b939-5d911d16561a 0422ba17-26a4-48fd-8459-3689669e3e75 17af3cf6-ccad-44ae-80fe-c3c6593cc520 8070edcd-068b-45b4-92b5-fcfe05833b6f d247bba3-58dc-4974-8d73-1204ead2369b 653e78e3-cd05-4c6c-9f6c-25815a7615d7 c23cf7d7-2835-40ac-aa1c-bba315f2793d 4af2e640-f88f-4c01-b51f-0a8964cad1a8 7dfc2c33-e9a3-4afd-9c64-904e1a891b23 52a7938e-4932-4754-9e16-a0356b07ab4a 4a852c4d-8a67-44a1-a85a-22475e1eaeff 66b7f1fd-61bd-45bb-b01b-d3dc83b11c91 db7ce7cd-8e13-4311-8f32-8a123688e134 d42098b6-4638-4e22-91b7-6802f35cc733 b94b7a04-e5c1-44d4-8374-b5408b61a6c2 7858ae0d-5a64-46bd-b271-6310a3926f2e 29dccc4e-d213-45c0-8471-d69972b81cc9 f8fa71e2-c2b2-4666-9178-80889fed7070 2bd1cacf-4b9f-40ec-81ad-c2af56f6775a d5899253-0e55-437a-b216-4278ccb1a467 3db54608-ea92-476c-8a98-214151892056 43e52745-fa38-4762-8ae0-4dc984cde857 13d412ce-19f2-4eb1-8c94-d3032458a98a 140789aa-7b36-4203-b3f8-8bf8f49181c7 ea96c77c-f320-44f1-b742-f40882c0b550 080859e0-2b69-4825-950e-9ab191b5711d a0993e2f-826e-4a3e-8156-92c63516402f 01f7add6-300a-4bde-a73b-56578c710064 496eceb4-0e4e-4682-9d18-d2508b617e2e aca3baa0-09df-41a1-813b-09094cffeea3 26b89711-f496-47fb-aca3-5af7cd212ca6 de3e00f1-08b6-42e8-978a-8e6bda3f9b6a 129823ff-4b95-4bbc-94dc-9c7cc06cf1bc e313ad91-82e8-43e1-8232-8a1f489ea324 cdc283e8-0597-47ea-ab58-f80c84ef89c2 bccae63c-f16f-4a0c-aefd-81dd69efe1f5 78b2e932-a79c-489b-bcfc-0a884b39391f bd26a7a8-db53-4987-943a-8305e9351636 2f814749-770b-4769-b5d3-61068ae5c12a 2de0d610-f9d3-4742-b2c7-a12ad1c863c1 bd5bc9a2-df2b-47f7-97d2-1d2ba73014f2 600355b1-7711-404a-8c84-d1add6c09b9f 8c6253aa-1a36-46a0-a158-20815d036b5e b7f66bec-4d30-46c0-af9d-edb90d31dfef 074720f7-f977-4e40-8c83-3f3c90cd8b35 a0f030e6-cb56-4b73-a14c-f6474928fd18 ef78a2ab-bedc-402c-ae7b-70743f0e1191 5fc9a134-05b2-4125-a351-04fdec85474a 32189dc7-6087-4030-b77d-56913326495e 00bbdb30-500e-48ae-8d2e-251ccd7c6822 4dbe66b9-fd4e-480f-946e-68b86fcfd7c7 29697c13-b46a-480c-a51c-fd4f9fe8ca63 3bac44fb-dfdb-4804-b7e3-67dd1131d563 29661e58-9b62-4e5b-93a2-61d261a901ab 45c11f7c-9ac6-467f-a8fe-1d15c9d9dbdc 953355e5-a238-465b-9410-cb108a962b82 e7cf2781-3561-409b-ba15-9118999e459c eda6705d-86a0-41e0-a731-1ae42fb8d0a1 8c94a88e-468a-4b7c-a69f-1696ee5b7e94 2203023a-0bf7-4ed9-937a-d11781990624 016f13b2-c0b2-4289-b2c9-aac5c2777a2a 0309b88d-040c-4ae3-bcdb-3d99bc46f80d 36260c42-ec43-4588-916a-663db1642575 2f521ae2-b41f-45b2-b63a-4ee3ae224e81 9eaba18e-9062-40ab-b587-07c68d4690ab 0b816da6-67f2-45c7-a9ba-f81dd65cacb6 b890aec0-7af1-4e7a-af85-e2d12beccb41 df4b36f0-be09-4461-b8ab-da66635e585c 1d6e43c1-e181-461c-8d07-afb8f2fbf88c f0ae3460-edfa-4834-8413-bf9e123d55aa 0a043e59-0b51-448e-8367-8dfba96463f5 90471504-3041-433c-8ed7-1b9a9a48bbc9 23fa634e-2aae-4ec0-8c76-4470c4c8cc0f 0166067a-18fb-429c-85c4-f506ccc44e52 e619484e-b7c4-47f6-b455-a376027b9a47 555a6c80-bbad-4e61-ad5e-047a59fff6b4 5793fae9-6667-4b9b-a73c-6e3517d07319 a0ece829-5951-432c-9d48-8101ad03836b c4b7520c-c56c-4084-8e4c-3fd02b028b44 e63bfad4-887d-4645-b274-aa01f4380aff d82f268e-a4f3-4737-8ed7-b182f74ff232 45930b5c-050f-4f9f-98f8-5148df940409 c6020a07-1e99-4274-a54b-410b5195f088 1a145770-3f72-44f5-906a-90c43a33254c 001aec71-1e07-467b-85fe-8c95b5875c8f 938622ab-90b9-4d16-87bc-4ee956fe2852 dd128f0a-6b7c-40dd-b04b-546d634c460a 259bf680-fcdc-4874-a27c-a7e4804d3bf7 39d56123-7217-459f-967e-29ed04c34233 7ccf93e2-b166-4358-ba5b-64059f695bcf 5b79b978-c23b-45c3-b3fb-9bb8f680a30a 54825fa5-940d-4708-8be0-ff0b754a228d cfaf5715-9306-4c21-867a-ba542c057cab 8ac9d70e-9dda-49eb-8733-9107ecd9d5b2 ea34f967-b3f6-400f-b09b-435b81d5942a 9621bc2e-38c5-47b0-a6da-59581cda4859 67a7d045-3838-42ac-a911-bad988e95512 6f6282e6-8332-4f99-9966-6141b11a0eb4 4aee2ecd-ff98-400b-ab18-45d898dcdd58 ad3d6ae0-783f-4ee0-9025-01a6e3359446 fb6b9a5b-daef-46be-99e4-ad71c3b3dcc7 1d799e02-32d7-46ab-b2e3-878a9905d694 6de61e77-6fc5-41f5-8287-63d387304d1e d2946f1b-0b80-4a1a-9458-eed41f153028 2bf94b8c-0ea0-46fa-a570-587496140934 504e9eed-dc15-45b8-8482-77d8d9fafba9 086220ac-9833-48c7-b891-8d571f3d7a61 74882084-f21d-4e95-8a48-7ec39952ea86 e4614b7c-a69d-47b2-bd26-5d4c7e155c8a 0c14f91b-529c-4519-9ad3-438e120b91e9 8233c839-4d3b-42b4-b061-5dfa2ee899f5 db284727-7f05-44ba-b4f5-efbd26635dcd 5a062a06-32da-4d00-aa9e-ac56ad48467e da16a3fb-a3aa-4c4d-a1ec-029b90951035 04657f9d-cd79-4f9f-9faf-7e267856cb0d ab4c22db-d19f-450e-92fb-ecaf40cb4f30 aef01a63-eb34-4b4e-9e43-efa9019fec42 2cb43342-c73e-4384-9371-87492797a3f2 ccb0e340-28d0-43de-b7d6-a6d7f1ec79aa 723af60c-db6c-41dd-aaf3-4b3976120dcb 98963363-c590-447c-9f72-281386ae7dd8 ca58aa3e-2a91-47d1-a6d0-b2c73fad7554 4e302f77-a091-473d-9a02-1f0d4f0a65b4 4670b188-4537-4d33-bb3e-8dba154d7d5e f0c7fcca-95e7-485e-8963-4bb57578903a 813464c3-6ad9-42d3-8fc7-dd34fbfca468 17c5d853-2986-4a77-8d16-d017726493a6 adfe21ae-6125-4c38-a609-ac39558e52d7 ba18f550-f6c1-4ba9-a60f-a85e1f50e594 3485ed87-82e9-4371-9b6c-fc9fdd0da2e7 1aeff3c6-04d4-4fc1-990c-1355d2ee0328 9bff9e7b-140b-475f-89df-cedc53e6eae2 e8dc9bde-0fd4-466c-8103-ca0d03b50412 b753531e-d5eb-4b17-a046-b480356d7434 3c25ffe5-e134-48e3-a7ba-8b9ad24ddb7d 8d1beeb6-5079-439b-b475-8765f3e84883 052f39d5-c262-4efe-affb-06af037b358f 9994019e-5ed4-4252-a214-0947456f6f81 1aa9e69e-575a-490e-aa96-8adc7ed5a48e d38b8688-151d-4699-9c86-ce8ba3d0d686 79fca639-9461-4ddd-a925-93bb8002d42f 2cd2ad97-e698-459f-b594-0811217438b1 83e3e5a8-ea6f-4337-a7d5-bf214fb80065 7234cefd-f296-40b8-bc8b-2c4b455ddf99 92c3df90-23c4-438d-9aac-1e800566905c 7102cdda-affb-4822-80f9-4aa65cfff6cc 4781c0fe-173d-45d1-8d8a-44cc229e6f8e 3d1d0cfc-c079-4805-bca3-909f161fd7eb 5bd2026d-cc08-44b4-8e7c-9ac9021ceaf1 43b55f0c-e9a4-4397-ad01-5da6f31fe8e2 18bc4a0a-13fc-44de-bbbb-f4e02a411542 f4ca4ab4-6272-4813-af9f-7f7ae499c1e6 ba4fd785-44c5-484b-a1ee-26bfc0b95ca3 208a160a-3592-4bcf-8de4-2e4f4ffdf20c 3dc9b908-0172-44e2-a746-c9100030743f 0b200791-29fa-4ffb-a483-3a85e36e6598 11b22160-f7ff-46f6-95a0-8ad76557280a d015ac32-70bb-46e7-9b42-33ffb2fda678 9f5edd92-f5a3-4ce5-8781-4af2cb38bf25 b7a45ecd-b1d3-4411-a44c-a6449fdc9958 27e18f09-c6dd-4d18-8646-db8042bd63f5 b4033e19-b281-4411-8552-3d8166df3339 f53ddc68-7b19-48d5-81e7-d4e31a6484d7 71947c2c-3b1c-4eb4-833f-a8e616740a6c b8e847f3-affd-441c-9ce8-b4254d6074eb a8b34f2a-291d-48ed-bb7a-1a7b7b65fd94 cf326367-9030-4664-9242-5da633a7dd3e db76731e-0219-4a33-b7fd-5d31cb93b0a4 7a2d0efd-6d56-474d-9eb0-7abdedec8fea 4fc32fdc-4802-4a1e-8b98-0a7e784a7c00 5f960bc0-5f76-4c45-995e-94fa6ce84990 4fe88074-38e4-410c-b42e-90dcd2d327ed 3ae1f9cf-dc8f-4450-a740-ae4895a9a2a1 cd886d1f-4ec5-4b39-9ab6-44f132ec0992 965be71f-ce7e-458f-9dcb-5ef0a05418e4 811905e5-e089-4528-84be-68a1e98771f2 15dd1b2f-c393-4959-98e8-e051a76be607 e62279fb-ab3f-462e-b400-df6688225297 58c5a0ac-b6d3-4aee-96d2-03341f76bc9b 8655207d-2dfc-45cd-89c4-99ef80b48345 2938b7c1-239c-4778-91be-b707c684138e e220e94c-9b7a-45a7-a28c-de8dfbff5009 79c60d25-316d-433d-9ba1-e738d80b005d a8ed11e3-28db-486b-abfa-f5f7dafe52a0 bcc1e99c-3816-4d02-8316-403001226304 bb77bd42-439c-43d6-971a-a51be233ccf2 70742eb9-121d-4c05-a153-21bbc8b825f3 1606e97f-d154-4682-81c4-3837d7285aed f731acc3-ab89-4044-b167-b250adc26077 635bd38c-d94e-477f-9517-e9a42ec70208 0b427b2d-3c8d-4941-bf31-0757d0328f9a 0539fc3b-be7a-4af0-a563-5c0066b76c58 4fb77553-a5b6-418d-98c8-415fffdfc733 faec0102-1245-48d9-a51d-b866e83947ab 042baef6-2158-4ef3-b8a5-75f1a5b55bc3 e13a6b95-401e-4a79-9734-dd7c82b9e1ab 4f6fb37e-a2bd-4b63-8d51-01f08a3821cb 442c2b09-db92-41a7-9d23-74ec0a2bb0bd e5ec316b-e52c-4037-8114-35f4c632d9d2 03d9bad9-228d-4b97-acde-79a10794126b 5a4f3e15-f8d4-4df5-89b7-9b142d136a08 cff111aa-53df-4e16-9472-fdc0be2057db 96f7286a-ebb6-4b61-a082-18200e320df9 671d16c3-352d-4569-8d1b-4f9e61a81b93 e9ee9504-b5a2-4c8c-be66-8708381708a7 4db78a33-ea46-4eea-8de8-2e072eeccb33 759d4d80-a276-43cf-a270-6409a909d2b1 a2588a05-f168-4482-b14f-02a0d6850eae 706dd5a1-5e55-42a9-9318-c32422f3f279 5f7043fa-b5e0-42f1-9e01-e2771efb2203 b14d7f7b-ee84-4f5d-aeff-8005c807a7b4 3af540d2-2f40-4f88-9ad0-df84c5b40c45 04886b47-da09-4634-b8ab-de3691c221fb 00ac5d29-9059-47a4-95ae-367636cee814 0056d2aa-064c-4fa4-bc09-ce62c01a8bc3 cd1eca26-3369-4ef7-a19a-e17a15c9f1a1 d2b2139d-10a7-46ba-98ab-59b543467497 f7b75c86-dc28-4d96-ac5a-7109cf30e5a1 cff2d815-07a0-47d3-aec4-c02584873d1f 3af7b19a-ce6c-49c6-ae64-e618686a6b54 23fb042f-5f24-4de9-8e58-dcd7f870472e 0baa2938-7ec4-4308-b237-b51e8b7e3df2 292c3639-52e7-420a-8540-82e5c462e29a a0049c97-a342-48ec-a6a5-9a4ec948551b d68f9976-9456-49ab-a6b8-55633f8e285e f0db158a-63f0-4bd2-9c00-5ce79d0886ab ec861eb2-cf0c-44eb-8efa-e7f86d490d06 d6814664-bb0c-44e8-adcc-1f98a66a7b85 5f63b5a7-98b7-4289-a08a-979948a2f075 01bb7484-50be-4572-96fe-980b179b60a5 32437120-e82c-47c0-9768-ed764c1657c1 57e0fe44-2aab-4737-8625-5986ca7baf0d 9da1dd42-c618-4db4-80af-39c6b66af31f 912d0df9-9d77-4269-8a94-9fd3e93eb613 aaf0bcf0-9a3b-418c-83dc-3684c6e806a7 de180ffe-dead-4905-8c23-36e6d43ef1a4 ab16c8c8-8143-446e-98a2-9985e6b7f5cb 02ace542-9b36-4c46-af95-8e5515a1a001 378d87b7-8f7e-4265-8d85-46d3bf22b1ef 3c9e2963-29a7-4172-9d6c-4710c7e2c631 7f629e6e-78b6-4934-9b50-689349817389 144a1607-1f20-43ef-a973-27363e70ceb6 aa8120f1-6b02-46d3-b262-ab1c004a2a88 26278f73-3fa2-444e-a8cb-5dce2888714b 3acedf3d-e438-4161-94ba-7d959c388bb2 4861ac87-56ad-45fd-b183-b7bc24bcfaeb 708fd583-2315-44f4-8dbf-1d8170fe96bf eb43a233-6da7-4dcf-b549-52aa854af4ab 171a77df-dfbc-4346-9bc0-6eb61f0deb8e 45556e58-e35f-42dc-81ab-76accf77006a 7245684e-adfd-4889-9c9b-5ee23a9fb655 102c4511-d280-49eb-a2f7-19dda4be907c 0306241b-a8e6-4e48-98ab-c8fc9594ba28 505df198-233a-4b98-88f7-f539c1134bba efed15bb-7dc6-4bf3-b13f-d1b462e7c368 3724504c-fbbc-4973-abff-32377b6e421e 2f194cf6-968d-40b9-9304-8469b3721edd b471d1ba-f12c-4d6b-ae34-fea1e30d7587 10adb43a-813d-4433-b0ed-00bd848d8e7d 98789ba2-c482-43dc-afa2-426f89357586 e1630b9d-a394-4604-994b-c317e8d1992e 842c4106-c470-4e2c-a680-062fde98e367 0d4620bf-e785-4d43-b13c-3f387bb79649 ab0d62b3-76b3-4cb9-b26b-ce7f5098a029 bd68884d-e6f1-4a73-abe9-9d2efd502b52 3e83efbe-5325-4f64-9003-92aa3fe6f7e0 101e1e26-3603-4761-94a4-a6936ccf296a 83d2d37c-56ba-4fb5-9a90-c8b567a512a3 2304d203-3fcb-4ae8-a069-d14b6843ae34 5bdf8b0d-d1c9-42b5-ad3b-57f9c34b9cb8 10b36363-cf3f-4ff8-b4a1-3b00f487c45e b09b889f-ccd7-4804-a644-d6e8a3364403 eab369fc-4305-4d34-a89f-cf68091d0561 e5f1593e-d5f1-4505-84e1-dcfabc665742 19731729-29e0-41d8-84c5-321992794047 2ba61c4c-b928-41bf-87d5-a87188daffcd 8d67d59a-3a12-4510-807a-9f5d0f51cf19 9b4780b8-c8b2-47cc-9c50-ec16f3ebdec0 28a265c4-f129-4d05-8e66-f6db49c5d7c1 6152f962-0bce-4992-bc71-d90e76e126f8 8b99eb67-1657-4aa2-b7a0-08e9c8e20e39 6afe792b-c7d5-4f88-9cd5-e19cd3dc90e2 5f737086-7837-4cbc-aeed-73036749ae95 5a96e60d-a3dd-40bd-980e-14fe58ac3245 a5fd9e94-2827-4f75-aea6-53dffaa5d2e6 51c04053-2b1b-4be8-b0c1-77a2c492f843 f853a962-157f-49cf-b13c-4643c9f3dbd1 c34bd2d4-dab0-49b2-a799-d095a7e2bfae 9e629991-9c61-473a-820d-24365cfe4b11 3b873cae-3f01-4acf-80ae-4e289780506d 9bd31d4b-d579-457a-8536-d26ff16b5dbe 2a0bd93b-9aee-4f06-8015-c950e906b614 df9fb90f-a93a-4d06-9499-63acf798f626 e5dfce94-ce56-4ea5-ad70-72bced7782e5 0a0490b6-99e1-48e4-9165-a2a8a17078bc b7b12288-50c0-4a11-bbf4-d9edf1458227 ddfcb23e-d2d0-42c4-9474-d415d6463922 e8fa4e6d-e15f-4a59-80cb-93acb94755d9 8729a36c-470d-4db8-8f89-be82cce0f98e 4b0fd738-9d94-46d3-b49a-0942b5041b61 3bd31780-9a2d-4737-af0f-37f7c3e412fa 47e57fe0-09f5-448e-bc6c-966cbdd97a1c 6304752b-c042-4fe2-8f2e-57d3b1ca52e8 95daf563-e15c-479b-8b1e-75bfdbe2ae45 fd34644b-cbd4-4e9c-8537-48aa2152cc3e b17b030f-2b8e-4218-9937-7aec7c46aea3 55909927-3cd6-4a7a-86e5-03ce890a2845 05cfbac3-f90d-4a5c-a7cf-1d249a418d24 f23f9540-4710-4bf7-b10a-63dfd888371a df7f1d3f-1e12-4992-a43b-0c2e54b07895 61710ea1-1c94-4247-80b6-26de59036107 9fae116c-4187-4471-b8a5-e3bf5d188bc9 5637a2c2-3d7f-4663-af8e-b9a971bdd391 0459a2a6-a63a-4d4c-a2af-799287e34127 0c1462e2-c0a0-45f6-b840-fc34b2c18d03 e0223f3c-d49f-445f-994f-8cf4e099e4a5 23ed1e5c-62da-4803-9343-aedd71922f68 b6be7841-9a6f-4967-bc70-b2993310bde8 6ab81835-34dd-400a-9bbb-c4f08c453eb2 bc6edb5b-c987-4b9b-97d8-ab83db7d372e bfe3879d-5c2b-4633-bf27-cbbe7a422681 f4e4bdab-1971-4e68-9438-72cd203b37c4 35019e50-a6b5-4f91-8f6a-e706f55119a6 b9704803-f0c9-4cbf-af92-ec01935235ad 4e6ea6f9-feb1-4751-a40f-372b08458b8f a71a274d-cd78-4b21-a4e1-f0d6faeaa568 bbd49c2f-0be6-4e4e-9a02-226dd1fba996 33382f2d-f8f6-49fb-8e22-8c0eae5eb12d 4146af4a-1c3e-4206-ae86-ecb028ed9be1 efe67a1f-8e50-405e-8106-49a32863d546 51b724bc-eb5b-4861-a115-94fd1ff7a766 3efcdf49-3996-4c89-8a78-00f65bdc348c b6c80cb5-0716-4710-bf73-08bc29db0e10 2c88db15-cf9f-4466-bb80-8726ab02d366 559be8d3-bf29-4b04-a067-2fa46164d117 a5681c1b-47e6-493b-b3ae-39fb0e047161 2b1b0916-8fdd-484f-86f6-96049b1ea721 635e9533-4a2c-4be0-9134-7b84f7b13a76 82b45b91-77e4-4cd3-a7c8-7cbcf07da725 7d6bb996-57b4-450c-8205-8a4c06518640 50287b4b-2d88-4f44-bc3b-a776c9ab2e93 d4b67440-c057-4e0f-84d7-7030f0a76877 9a03866f-db2a-48db-ba8e-471e0f06b7b2 cade6fad-00a7-4c26-a938-1ae414c6a8dc b6e490f3-e770-46a2-bb5d-d26412e85361 ce1eaa98-38a4-4aef-bf01-0af3eadc9478 88091dde-0bf6-49e2-93b4-be1fbd83b585 83f865d0-4b34-4a82-b32e-8b510058a9a8 e9018bf8-c5a9-42ba-8557-383d33d2f74b 6370646b-004f-4c86-8cd4-4e203e88f6c2 5b610a6b-70c0-455b-be3e-2132a700ea02 ef90804d-ddc8-4035-be35-1f035278ff9c 208cb388-b36e-47ce-9079-6c2799aa3348 1352daf2-ce5c-4a2b-a825-f0fb03f607c2 7cb19fce-adb4-4b6b-811d-42bdf95b0da7 9b80aa49-18b6-429c-8240-e01b3c26940b 86a76a04-9264-4b67-9986-f094a57e5516 2d01d427-7708-49d1-98b8-d68ff1d4ce1d 1836e169-73c2-4d62-afe9-40b0d4f0b9c4 328f84ae-b6f0-4949-ab47-37134474b753 cb0bc3c9-4b05-4944-8e68-2dbd05afc9ab 77a14b2e-8dfa-40a8-93e3-60265fda2820 9e7d000b-a683-4b11-bcc9-4c3b383edd21 1a1360ee-e2f0-4be5-a4ae-fccbd619694e f245c8c3-4c4b-45c3-8d53-2916049b01a0 ac8fe59c-6ed8-48c8-ba82-3de88b6c8eb4 20d6afa2-7765-4d73-b1ec-cfb7181e13b2 a4869e2a-6065-4a7a-b391-8bed8f2ff7b9 42913e35-714b-4d30-adeb-46d594791df7 fca2e85b-cbc4-4586-bab7-b4515e9c3310 9361cd44-3ca6-448e-b954-358516adee0e a07dc82c-f80b-4717-83db-59e785a24841 462d8d1e-b9f5-45bd-9b54-423c18648efc 1e2280d6-f9be-408e-a78f-67336d87c404 216dd4bd-e36a-4a7f-ab1a-8318953546fc bc3da9a9-785a-4bac-8460-4ef9971f58a1 5356e080-9f07-4c62-934f-371980f30fa7 01a98e96-6e2c-48f5-a4a7-038d505a385f c619b37b-b94e-450c-b9c7-ec2b8114ccd3 fc1101f8-7c6d-4556-b7bd-8958be515e76 6c645421-94ce-4c2d-a39b-5e09ba816909 1b1252ea-e1be-4f56-bf5e-84dd2abff25a 8246edc0-8fb9-451c-85ac-1ab579bb48dc e3418ceb-0209-43f9-a112-d2c81fc4cbf2 e3f5216f-b679-427c-9173-7ba359886f28 bfe00063-134a-4221-aeeb-5b112d7ef8b7 2e0b14b8-ff0f-44e1-b53d-9130e70b1893 d083c569-1a76-4b8f-8cdc-552d69f81cdc a488001a-8984-4b59-84cb-5abb5a180d7d 8ad6687c-efa4-4209-b8e1-f39af08d5141 05e9634e-7c47-4173-a332-3447db59078a 41f9bac2-77dd-4b1b-9d85-5b898d9fa460 6d361902-987e-49a8-96dd-71f1819721d5 0cf33186-d551-4167-828a-b09aa8cb5db5 1130d181-cd43-4811-a9b1-60722c808397 16b6ec23-f19f-4928-85d1-fc5dbe88cd73 ee722ed0-9e5e-4775-885e-2081de15d803 acb096e7-b39e-4e6b-9c52-2547d5f291f8 e2a1448a-8d08-46f1-bb68-da34b6c305e3 d6cd7e28-0828-44a1-bf9a-0fa70fe18b0b b0466ed4-93fe-456a-b272-b6a645540240 492ffa97-a375-4e5d-be15-d5e833d7d673 0e293319-8d2e-4f6f-80f6-db92f72fc981 d4a222e2-d9df-4d77-a2b8-c8d57e5ef87f 263fbbb4-85d3-4701-a45d-c4747a216aa8 0cb698f5-e5ca-4c06-b515-d060f440d949 3908643c-8bad-404b-aa20-c83b3cf4c56d 6f194f4e-3cd9-4c95-a157-07d8815f0694 9612fdbb-f63e-4318-ba41-4b6058ec7e48 851d40dd-267d-4d96-aafe-85db5fdb8f8f baaa48f5-c8f3-4619-b858-a1100da46e43 5a406db9-72fe-48db-a44b-83a10c312574 cbcb909d-2edb-4068-9550-0b77318d87ae 97fa94e4-489a-4801-b718-5eee9b1c7601 1fe1a4f8-df37-40a1-9452-ee0cd7dac721 24a16552-819a-48ee-8eb8-2a5121f8fcb2 4744c593-80f3-4dd1-9176-a194a9181278 c1fa7a1d-cbd6-4939-9339-5eeb477ccbb0 917e40e3-b33f-4c48-a985-39c9fa329030 7ac8fab6-2857-41b6-92c2-b17b18a7b11d 2d7f335b-4865-4cb3-bc5b-ab548fc36c08 ef0b8c29-aa1f-401b-8499-4d7a75e048ff 8255b663-a0d9-4cf5-b39f-22c449a223ce ca6dfab0-fcbc-4cee-98df-4edd78bb9e89 ee501dd0-6495-4c0a-a06a-3ae42be9b4b9 55c52499-a9a6-4b65-89a4-a21146088896 31844a4b-c067-4a05-ab03-e6f9b0666e30 f52f8a97-52d6-4264-b428-008be360ce68 aad607ae-1b73-499c-ad4a-5b06035842a7 598df408-793e-44b7-b2ae-197028c584b7 01816811-6742-4d5b-96b4-a8f72e978daf 868fe0f5-9916-4fff-ae86-b449570da40d b6ef171b-7af5-4d1e-922c-bfd56875585e 1493f754-0f5c-4f57-a0fa-70d08a8ec266 c25db0ad-a3ed-43db-80af-718d448bc5f2 a7aa3cb1-537e-4c92-8b88-ec209b521c01 32268fcf-9f77-4278-8685-2e3424df3c04 5316897a-4025-4f3f-9d22-c82162e8e0c0 53cd4f6e-68d6-462b-a145-05eec93bb339 b3a31bcd-b05e-465a-81ee-68f13f82f480 407c49b8-f565-4eef-b86a-0cd1c7550921 7b821d17-4169-4fbc-826c-bcdf129e8e36 a50044ca-2ad9-4add-b9f2-291f0da70136 a565a310-a7e1-41a9-aec1-a4062da7656f d1b02c94-ea2c-4309-9d82-0ef8f4187f8d 109b0270-2567-4501-8e9e-f355aceb2d19 e12d3b76-f361-4769-84f6-e9c5f73557f2 c00a94c2-ce2a-48e2-817c-2b552945dbab 79c2c209-1a2e-4a50-8eab-42c3bc9338c2 8d5494f7-f7ef-4e73-889f-b1fcbea40b2d a85169f5-b9e1-4111-abab-5cded60d8f8b 32b03c41-5416-4e7f-8751-91215e846080 80162468-3bdd-4a5b-921c-8472829053be 5457e2b5-7000-4219-ab23-a3821c84fe65 589f1e19-5cf9-417c-9226-8619188bc95f dd4e3288-3350-4be5-8a5f-097a9d12471e 7e63f269-3b31-47ac-bb85-b76aedcf3259 12f97184-7863-4e53-8a11-d550789a102c b1b8f051-9589-4f0d-aa61-1a73da29c3e1 e64a2d0c-4e22-4cd6-b3b3-6780efbe32cb bf122934-a49c-448c-b3ed-7a51390ce813 13012464-ed23-4d1d-8b60-d1f14795f6ba f7c930f0-2054-4c4e-9946-55f02ce4f153 1ef766b9-ba04-4e80-9022-fbe1fe2418a8 050f7e75-9b5d-49a2-b958-426a6733a3d5 d6b8c858-78a3-46a4-b696-144d65774125 5e0aebf0-2f70-49b3-b982-b3b4d4789eb0 1a4096e1-e171-417b-9fdb-fd23ee30e4d3 a7196011-85ba-431b-b191-9c0f588f18cc 5eceabe3-809a-4195-aaf5-304dd532fb10 0dc3ea19-f02e-4635-8302-8bba6fd5ece4 97fa1cd3-1620-43bc-b763-5ac015dcf746 aa7e81c8-6d34-42df-8ef6-4d87f447130e d388ba8e-1b88-4bf2-84c0-d05ad4f6d61e 45612a39-8f99-4723-a92c-b764d6bd2eb4 288b47c2-a97f-4257-87a0-0c96bd1ca93a 62d95f0c-a5a3-43da-85d4-c19e74936b84 5837322f-d5fb-45eb-9d43-2e8e5ec5a109 928bf86a-c87b-4b2b-9fd0-09da89a403ef 1463be54-d490-4e99-988c-129aff1cf848 a0a5b420-c3cd-418b-8a82-aed208aae63f d7ec81e8-ca39-4092-9a5d-642137978cde 51fe5119-8360-49b4-af89-97ef94feb210 7eadb521-848d-4c9c-85b7-c8dccdbc17c6 08048d58-fd46-42f2-95fd-51b3208ebc56 4762d2c7-892d-4b4c-a352-479a768509e5 e856063f-d44a-4382-9268-3b3a59e9dc4c 6eb7aefb-58d6-46fb-86e5-29e405b0d939 1f533fee-8299-47f7-8d59-d528baa8179e b1098f68-a126-46a9-8173-882eb27278ee e43e8312-40e0-4871-a0ed-7f94e4769c23 b7cf53dc-4b62-4821-ae34-60cbf392f702 b9e8de5b-5451-4cc6-b907-4d2f6c299d58 abf8863e-327f-4edc-b091-9d545f86053a d31ddc74-f544-4764-b893-49901bba4c7f be9a76cb-1c5c-4dcd-ad90-7a1ddb59dda7 967ff883-bd01-4011-bb96-6ea0338950b5 09cc9a59-6fef-4e74-bf90-8d7385e371d5 f8e419c5-a57b-4a05-9f85-730b1458026f 680013c5-2d52-4a43-9059-5195c0ea2506 610c4d10-cb18-4d2f-92fa-e2dc960e659e 5606453e-511c-4d61-895a-e2d17050b5cd 8d549c17-b89d-451e-8e79-a4dcae9415ac 106c07bd-2927-4e7d-a3bf-8e0652ceb353 92ec1d2d-ed11-4418-b919-7a4a1ad24ed9 98a0f410-0f43-4255-a4b9-28941b4c398f e1f38ad9-9bdd-4da1-960e-621257d616b6 4b3e6541-5fbc-4f47-9985-84f53bd9484a ec7f2f1e-de4f-497a-94b0-27bd3f00b7a1 3806e78f-1b86-41eb-a610-81d885da2d5f e70c52e6-dda3-41c5-8441-cb7f289c8c29 47c611d6-81fd-45ae-8697-7392e3bcf117 a2b37ee3-d0a0-4f5f-8947-e4661ddb5199 ca27ba5e-c3c0-44f9-84e3-63d9a94ccf99 6d71aeb7-89df-4ee4-ad1b-79c3e603a7f1 7df0a7b9-6302-424b-b07b-e04df05528c9 49d51cb1-ebfd-4e47-ab6e-f0197d84e915 4a598bdf-d6f4-412b-a081-ad4d7204ac11 0d84bbfb-c841-44b9-8a2e-343f77eca25a 03908160-6380-4488-910a-1ae9e811cecd 51aac1a6-7755-45d9-bcc7-aca24486ee8a 72bab0dc-95a4-47fc-893a-9df3ff9c2c6f a26ce6e1-71c7-4bc0-a6a7-cc08a82d1841 2796ad93-8a38-4573-ac4c-e89990d4d03f 74032267-1cd4-428f-b526-f53dc48acb41 d5856700-5278-4f4d-a207-eee34e1301e7 5df51f1f-8c01-46ab-825d-2cc49609b004 53db5439-9870-4318-9b21-5454ca676692 9d437b8b-2ee0-4c0f-a961-3b5aac09542b 30dc1a5d-6cce-4794-b276-8a240543e70e 01200f78-1ed0-4444-a4f3-6e6d8a2b0a39 7d7d8360-ff71-4e0b-bb57-02ad0211bc8d f5aea200-1cf1-49ef-b6ca-a09b0349704a 6f8b1a00-4e71-4d3a-a91b-a4e2b7456bc7 633040fc-c828-45af-b17c-a2eb705f1e02 65ae13f1-378b-4fd1-bf1c-56787c35e072 538e5a7e-4d4d-46d6-9b1c-8c6a2133314a caa964e2-454f-4072-9cd1-b114285c7d03 632449ee-9d0c-4b9a-8a8d-bfcaf48538f8 b9911e50-9183-440e-8d37-4f945442fea7 7f8c9d17-f4d0-4b0b-96ad-7b785f784725 05e97e36-4dbc-4eb1-a5d4-1a8a1f424038 3b19fa0d-e4e3-4924-a6f6-cb6581828010 0bf082b4-e678-4c9a-84af-0ec3fe7f3e9f 5b55bc78-f4c7-4668-8e04-fe9193dfb057 77207eac-73b4-4c76-9e21-c42d53d01766 105f6253-56e6-4e85-aa6d-4bc2622417ca 14afa4b5-dfb6-4014-87ba-d5a483a097f5 392e7f69-27a0-4061-9ad2-dbbc9de6619f df615d16-ad09-4a7a-96e1-1f468fe34e11 a9523225-1dd8-453d-847b-03d0d2dd23db dcc02ea2-3456-49e7-84a0-63dd607750d4 b4508b2f-d2df-4372-afb6-3b3b9d591b69 d76d1414-df19-4ca0-851b-63bb7060235b 2e83aef6-ab5c-427d-a4c5-84b71981dd83 c5d6a560-6ed1-4efd-9beb-08dfd53cba22 e6d282c2-9020-4c89-a4e7-cce8ed3f953a 6a23d4c8-7fac-422d-b797-642b66628d4b ab8120b1-5dc8-43c9-bec7-f44a084d22f6 ad2f0bb4-5f25-4ee9-9bbd-0433061f343e cc27e532-a2ec-41f8-a468-76079544c60f 6558d825-1779-43e4-8fe2-2bc719b3bf35 dffb8b05-24bd-4f92-8454-ef99ce10a953 d149dec1-8866-4a0d-a163-b70a1357a309 a7d1a200-69e0-484d-b554-cb14d9f45e63 ed47e4a8-66e9-4a9b-948e-f4306729e190 22582960-a360-474c-ab08-93d42e827617 01cef9b8-3f95-4839-b99e-f7e94a5eee82 918b4ad4-a0c2-4753-879d-b2c82aec293e 7417bb27-a69e-4bc5-b50a-cfc6fb77e98d 261ca127-142c-461e-af89-f39bbdbc66f9 6f1f0775-a2ee-451a-8237-0b7b970c6583 1b743cd4-9532-4b81-9b15-fe119089b927 01ca0c52-6f99-43d1-9b2a-2b4a2621b077 1b070ccb-26c3-4eb6-803c-70873bc347ff 1c95e845-fe91-4b8f-b2f6-89abc461f32c 157d85f9-6932-4b34-bfda-54cc82290655 b13cc850-74c8-444d-b6ea-a3e890cc1baf bf8d083f-4a5c-4c2b-8fa2-2399b030df23 68ae9941-2257-476a-8616-ef5f2fb01c03 84f02157-2dfc-4bd4-b5f0-439e1313aef5 74878935-2b5f-4d7e-89de-ade86c066652 81b2bc08-5a66-449a-9c7f-7c6bc4cae25a 6af25f06-0e8a-426f-9e63-92de80adea85 3a5f5366-5e05-4d3a-8f9c-464a2f435d74 e6ec4d52-ae3f-436a-9d24-8fa539b99c88 0c1eefaf-e1ba-4558-812a-fa9a6474640a 85efb142-42a1-4651-8f2c-057572991129 38fdef57-b3aa-4ef8-92da-bae4abcd14d0 a0dda9e9-3d06-494f-b8f0-5358ea0fbf43 e9ade98e-7b27-4d9c-9f2d-539178d421ef cfdd7be8-37e2-47ae-8401-5b0e776a077a eaffabcf-4656-4290-a899-5adb769389a3 e4be33d3-e10a-4ebd-8877-9c590300c956 21f80708-0084-4a4e-813c-cddf7de6f2c9 b3b161d0-0511-4146-a903-e55f45226033 7f431244-6e60-4a5d-987d-096010e8aebc ad76f11b-36a2-489a-b27f-99ad3098e757 b08e3839-734b-4770-98d4-cd8c9b013309 a058ed1c-51de-45b9-9e67-099b34d69640 8445d3b1-c509-4c8d-8238-9d019f69fd1f d7acebf0-7e4a-4384-8077-fb7a177093ca 91c8437d-3b33-457c-8ad2-7035f6a027f7 87fb2e95-64bc-4169-ab2a-5d758f909596 bed87599-91af-4e34-9649-01fe2dc41e29 c7b1cb2f-2e2e-4ca6-a2d0-c79f4f4fa5a8 eb6a3dd3-6511-4e1a-b335-f198e0585eaf b970a08c-651d-46b1-87bc-4555c102e460 f141b5de-823c-4204-b3ef-152a35c79072 0ed2ac6a-6412-47ad-a252-c18a363a7522 de145c0d-06a8-4457-9365-b70d724cb0dc 8606c057-6823-4b06-9c7a-60d8d98a8a4a 9fbf3fbc-1adf-4a8e-8360-b2108e291a4d faf12861-c050-48ad-9486-c765db533667 6eecaf50-f6f0-4b3a-8948-d92f7f7cb1f8 1220abe0-4645-46ba-82e3-a7e0c71c82d9 b35d5612-cd17-4ddf-865c-982d281f6c74 39927397-8a77-412c-800f-31ebb9d9bf3d 223bd83e-5d88-4b69-8342-e13e83fc379f 30bc682d-ebfb-46b3-91a2-077222bf4e7d 286756c0-d429-4665-90a7-dafc19f05705 e0b023cf-f1f1-47b0-b050-4abc7b21dc77 bf6be33d-ba46-4308-972c-58bfb3a58282 d9931e4c-6ccb-478e-aead-76295b0d571c 2203bdaa-357f-466f-b4a9-b734813dc998 b30827f3-dc48-45f6-ae17-ebfb98c951ff 27addbd2-3e86-48e4-871f-0922e3ab1d33 825ce0b9-804b-410f-9ac5-57b47a316bb2 413cd4ae-6a93-4d71-82d4-4b768a0cabe5 8756880e-972a-4c0a-9145-e46c2d0f49b6 93e59ff6-f02b-40f5-8f0c-73485eb302a3 17a8e4db-c1f4-414d-b7ca-f5e67f2f9af7 72bc4666-9a27-451c-bbe8-9d75e17e9895 11200d71-b211-4cdf-b1c7-5a22855cb013 a325e417-4ca3-4699-a838-e641f99d3a04 a67d48b3-238f-4a99-859b-56509aca552a e25e8475-7bb1-403a-bdd2-91967a33cb48 3cc73604-89c2-4490-8b67-e77424336f6e 2733348c-b7bc-44ba-b09b-91d1ca96da34 116fd2b5-aae4-4071-bb7f-1d199e241868 e513a771-1b5b-45ab-8f83-c39e1d8ab716 649dcd9f-39e2-475b-b68d-b51037ddbef0 7ea1219b-aa4f-4bf9-8b6d-1be4f12b2c81 57941b91-d5bd-4fc3-8782-edc5179367ad c1b1307b-76e1-411a-91d8-9ebb2e38169d 2abaa357-0b23-4259-b180-44ed1ef94940 9d75ce19-07e1-44fc-92f7-19e3e6af1caa eeff5668-b15b-47eb-87e4-b6a220243a28 08ea8ae9-324e-4e8d-983c-adc19d9da05b 09571fbc-7d37-4484-a5e0-9c123727f2ea f65a6b9c-a8be-4611-9651-aa2af984f268 b061dc98-87d4-4f7e-85fd-1c3fc72b2746 c0284773-faf6-43e7-9927-31113a36fdda dbcde88d-8bbb-4e09-bf93-4b582e0ac3b6 1e7c5052-157e-4dc9-827b-c0cc967aeba3 edb50dd7-35cd-487d-887a-0dda2bd4b711 820c0cae-43e9-44b9-a58a-e93774ff87f7 d6f4d880-28dc-40c8-bf6e-c1c0e8214bb5 ddf2912a-6418-42f7-9389-81d253d96334 94b26aa0-34f3-46f8-a8f0-07bfba4c894a b78705c0-5d36-483e-a5ed-32a38219497d 5b1e4da3-a847-4f12-aa6d-6d091dbba7a5 9b59b384-6a20-4f45-b10c-dd144d233702 8b2b97f3-c47b-4afd-925d-ef17f26db62a 6c2eb7b5-5700-412c-a0df-578be1830181 60b094b3-bf52-4739-bcce-6a1b3e5ce743 db666532-b0e2-4a4c-9699-0938dc628099 5deef18d-0f84-4f39-af95-7b3e788405eb 99a717bf-6af2-4124-ae3f-bac3e2a321f8 fb425bf0-0479-4a9c-bd9d-054152530f82 b10072c6-a93d-4742-9501-433510376f62 70f1a51c-2353-409e-9ce9-c1bd6fcccee2 85216bc7-269a-464b-96e8-d9d337bd1d1d 13176c49-efce-4ac6-8294-3a5cc131b84e 5d15dcae-fe41-487a-ba45-71640e9013e4 36477d67-9331-4ec4-8443-6e911d0a4e22 bbe2f828-8288-4c08-9696-b3c33fcb6e88 4d90abc1-7526-448b-a2f2-ca07a6708bd6 920faad4-cbd5-4f5b-9798-0ca8b80f5ceb c8985af2-a883-4229-9028-c1d326c43331 146a6fc8-b225-43f3-bf2b-ed9601aa8fd7 edfe963f-912b-4573-8fcc-d6c88efe3962 8dabb10e-8bd3-4a50-aec6-32dbe2caaf3b fc9aa2ea-cfe7-4096-9ccd-a66083d848af 77c3ee93-af3a-4d6b-a241-3c091156bf80 6c33d5ed-56b8-41ea-9eae-fff165214da1 e5560112-bdd3-436c-a837-84575ce1fbc9 b0af72d7-8884-41a4-9cef-e814faf76e01 3f80e0a4-85dc-4abf-9b67-c6845d1ef320 d4a00d84-7ed8-4ba4-935a-a8c9262f174a a0658fd7-632e-4fb6-94aa-9b507d2610f9 60341052-08d6-41d6-af2e-fe82919bbc6c 9e422dba-eebb-4f91-b2a3-63e0fa9b8495 9953893a-84c9-4247-80f4-cadc89d0aa7c f0556536-5b87-4db3-afac-b5e0f5f32654 77080a47-ee87-4a29-8882-412030a84ea2 5e319521-35f8-47f7-85d1-c0dfc0583a0f 1b60c299-a5ad-45d0-bc9a-724a1e5f1bf0 176b3150-7335-42f3-9297-86661b7ae9da 32ad9988-8de4-49f0-8465-32886532d68f 7020aae5-08e8-4076-b443-27e26d1f3ce5 bf027c28-ed0b-43cc-a8ac-84b751796fd7 3862d935-7b7a-45ef-8f2c-079b59c32e15 83b52db0-4c2a-4c3c-82b0-1d168214c6b4 6f3296af-9ff6-4e28-ab00-8fb44ea9021d 9dcdf15c-89ce-4d77-8f06-5c76aa756d20 75f3b6d0-df7a-4533-b4b3-ca7cc3f00fa1 5e484a6b-2cba-48a9-b2cb-ccb31b798dd1 8ba1ed79-264d-4769-92f2-ff1d6f841bab b700d7c3-d932-4d30-8ad3-bc1a735cbf7f 9cb82d3a-c047-4bf9-b3b4-8baae7bf454f d5cf82b8-d3ee-4190-87eb-7dd8fefefb6b 3b9863a1-3f33-44a6-a4bc-ffef8f9e4cc7 531f5a8a-696e-49e0-a256-e6cdd1697f2a 24bb8efc-e451-4433-9419-ad8e25df62e8 1d710db3-e4c0-443a-8576-d8709b0b21cd c2c66a3d-cfea-44bd-b152-147d6857bd88 cf9e5174-8faa-43d7-bbde-f7c0cb89c1e1 2c35293e-7dbe-4cd7-914d-4714ca338dff 9e889307-2e18-481d-8a7a-7d066b92b651 b76d76c1-1252-4e97-a6b3-cccb0f0aa830 e81c178c-efee-4978-a755-12e387075b5e 8a9f50a2-6bd3-492f-a4cb-b1ac767ec859 083f8b16-d3ed-4925-9b3c-36af14276423 82459a1a-64da-4680-806e-2ce5d862c098 2d75ac4c-51ef-4e39-a105-d99d5c7bbd66 79f41a8e-9d9f-4dcd-97c5-53b06d8274da 5efdf60d-d86b-4a0e-b750-1cd4c100e084 e85590de-ec95-42e9-86ad-4d0a33cb82d3 8055e7de-5818-4bf7-9656-c8751fd7a344 c07436d8-0aa4-4031-938f-4ea9ac89b5b3 9d9df249-8d19-493e-a3b1-f81e12ffe33b fec7c266-f6ca-46fb-8f06-f8c6f5b81a21 122c082f-1695-44ac-9e66-8796cc936c5a 494b887b-520c-4159-b196-e643adc2ea77 f11d7504-d4a4-42d2-a520-82b744bb1846 ef7b2b19-4cbd-4f2d-a101-f370e31ff76d 4439c9d4-180a-4ebc-a394-a03a704907c4 b61f77b5-4111-4583-9bdb-bd20796b575c 82e39060-d57e-4a69-b687-2a139bae9c47 72890800-0c7e-4761-82ef-fa852646594d 1330b0b5-97be-4c96-92a7-189c03bf6858 194f6628-c167-474d-88df-7b09fdd54f4c 17c84faa-3a52-415f-a7d1-d1ddab04d106 cd592505-2d6e-492f-8a29-fa19c9573172 c47440f1-8e79-4723-bf74-e495fdb1ea05 d0a0f371-91fd-434c-b939-fe49d3868238 02638545-40d1-437b-99f9-21ed488720b7 7b6f5eab-0f29-4c43-acda-f8c2d5d730a0 d29e70a5-a8d6-405f-bcec-c42a3c8903eb b4494e9e-4065-4ce4-aced-47e8d5acb269 f7b068d4-a58c-497f-bfd2-70fade992f3d ee3629f6-a7a7-4892-b7f4-7d53b630fed4 1052c05d-4894-423d-b6a2-a93b0e06026d cd6c8686-5e13-4cfe-83d3-4a54887f7111 4b986f17-7f0c-4c41-b260-2cca798f77b6 215bbaf2-8062-499f-a72f-5310f2722f50 8b7dd287-ad34-45ad-ace8-60753bb74483 ef3024ee-c077-4a76-ae72-0ffa9d060f18 ac313046-92aa-45ae-b3e3-d1a0634dec25 3f12d739-a142-49d1-a801-d24467fa1622 9601c051-bca5-480f-9b1b-60442c4d21bb a9a078a0-3469-4abd-9868-6096ff49925b 28a03e19-e9e4-4a2e-a7a9-2866a2764ee7 0bb3ed85-f2f1-4de9-a531-9907bf362182 6452518b-b5bd-44e3-a866-6b9bcd543328 7b7945ac-906e-4a6b-99aa-1b5c04ae56d0 29ff70c0-84e3-4879-8a1f-d807a51e83b7 bff092fe-0628-4fb1-885e-7e0832f82bce 4e825a80-10ce-4cae-a649-71edd8b7a423 c68645da-53ac-4eac-bb82-37cbd252e78a a629cdca-45d8-4051-8f49-b90a2eeb0579 3eaa8c36-e3ec-47b5-8838-f3a44c5de204 4015c515-027a-4515-9d9e-a7b9460f6ec2 ac97b574-1031-4749-9f32-225346bce8a2 bbf5aed7-5795-4f6a-bfba-73937ba6899c 45ff6e74-dc7a-450c-841e-71f0cf843e1d 833cfb92-1ae6-4a6b-aeb4-4d15629614aa 57b129c8-cf7e-4daf-a68a-4c62192f80db eb5e4902-cc9d-44b7-8045-0185e1b0c9a8 76cc48ee-65f1-452c-bbf2-3d52204b8209 7a8894f5-5a02-45cb-a639-319e91bf50b4 06db1adf-ba11-4a66-a9b0-4ad6b776aa8b 56933a3b-3ddf-4575-bccf-7216df4c867f d6190f61-1b1e-4f5c-b4f8-982a47d5ea34 f520a777-f5f8-40c1-b75e-242d02eadd5c e5999f80-9873-424c-8764-8c2e221bb6d3 196c3414-b067-4d00-8673-e748da78323b aedc9064-ffae-4a4f-a441-4e2c8542a30b 6cabca40-e9fd-4015-9453-a26f3722e537 b280115a-8342-4343-a3a0-fdedb8b011d2 6cbfee33-4f8c-4877-a422-00db8af90d82 193ecd0b-a2f0-4d48-947d-7923a4db0c4b e2095dff-d63d-465f-80a2-6dbdc7dcead2 ce27e105-5087-48a5-920f-265d236b21e5 78e475d1-4785-4d78-bef2-bb1f2e04faca ace924af-c0c2-4497-a66a-e678f4508490 61a816f0-c216-4f35-819b-8fe62b4af11c 08adf2a4-b055-47d9-96f2-517b985afc73 dadd4ff8-1892-481c-97b0-27f3cd3745f5 30d09139-d063-4266-b907-f1fdf3553e9c 19b000dd-52fc-43ae-996c-ae149b262b25 9c6c0718-1e44-41fe-9672-6180b12d7f0d bec7e2d3-46e4-45a4-961e-45c479e2a414 a4a326eb-817b-4483-8f17-ef91abaee56e 671895be-b87d-48b0-9bf2-baa2cdcfaf78 c31de25e-7f25-4df2-8984-9356a5c0e2c9 14703ff7-947b-47ee-b3aa-e8cc991c7225 57abdf15-b9b8-4fa9-88c1-bd4b5ea2e37a e97abbb3-9f62-4c79-bc09-6a519fc959ce c33ad49f-69b9-4c55-bd8a-ba42763bbba5 4ca21e5e-8b44-49b1-a212-b07046ae9da2 701a57bc-edc2-4db9-86b5-412b7531861d 9cdea9c0-a251-4999-b452-32257a3ab866 f0852ff1-614a-4074-a584-f9e5e3e71594 a3acc592-b7c3-4922-9c99-701f5b082f22 2f673981-ea60-4f6c-b6bb-4fdbeb421c6b d6d041d2-25d3-45fe-9192-ce3bcfc8b615 dbb5bb28-bdba-4e11-b051-73818b18ebd3 6653ed2a-bd4e-4261-918a-84db26756fb3 5b8d397f-f06a-4ca0-a046-93078eb96a6e d96287f2-b53d-41df-afd1-e388cbf7a5b6 07921d04-a95a-43dd-8df7-f2ddf3bb2aa4 e9b639f0-5787-4d72-b42c-8c92f992110b f35e1515-d082-4731-adf0-094324292f0e 3fda0a60-3dfa-4175-a503-9d49c108d2e1 670fb6e8-e215-4ba4-9a61-b0480ec51e6f 2d2a352b-9461-46d1-bf36-d8986da03b9c a6076991-4dbf-474c-b2ad-d74709cff29b a0baedc8-b5e4-4bc2-a54e-248cc259989a 11f5568f-aa59-4fe2-bd10-58e7fc4f2433 ca66b586-4aa8-40e3-8880-2fc204368c54 af48651b-27c6-47b7-b407-7bae11b51c3b 913e0c34-7004-4255-9e87-933b8a33a732 118b59d5-db79-4749-a9c8-560fe82241e8 6f7a529b-8abb-4e5c-8447-b176c760b71b 9865e63e-9946-445d-ae75-1e8b774a2da8 719a266d-9477-4f79-a4da-4d10c5b24a2a 196b7450-736a-4dd9-bb9c-65ba2bcb13d9 76d6c430-c929-4b9c-95b8-b271c3c0174e 2a4e234b-6c25-4aa5-b4c1-fb4e255c32ea 6d50e8d9-4d79-485d-ba68-deece729f420 2c88dc1e-9a48-49c3-99f4-5c32c9932a5b cb0a7e24-801f-406c-9e97-15cd3beb97a8 68e69bca-e304-45a1-8fb5-9f41a2478474 b6b2bc9c-1c31-47cb-9c74-cc5936a21759 f114615b-a8c1-4878-8020-23fb29e6022a c2aed18b-5f3b-4804-ab6d-ef41d1149156 849f6d2d-ac63-4f10-98b6-6356dbb9a612 7cb22eb8-aa28-4adb-b23a-7fab2d4ef3bd 4a489f18-64a5-443f-9b00-9769a188d4ce 31e12903-6628-405e-acb8-c6bb5647821b e70709fe-eb5d-4e57-9411-5f42d67e4df7 50cc5fc8-f9b9-4853-880c-02dcec543b43 308f625f-2211-48bd-a26a-0359d9d832c4 2ed1bf91-92fd-4c03-95a2-3fb35c4ee896 f853d147-5b97-4088-a408-33097f872d8c 97450440-cb86-4872-a646-2cb5b8b7e115 0d183535-a7b9-4978-8274-f637242f5ec3 6b5f61a3-925b-4d9d-91fe-346040b23d09 e98c0abb-f5be-49f9-8808-d72592002368 7878140f-2463-4178-abb6-7ff9c278d0e8 f723eb80-6297-4560-9ff7-e0643b381b1f 51b225c3-a468-4240-bee1-bdbe1e656d7a dd5548d9-62aa-4149-b303-d7b63541275a 94637ddb-c32f-4ce6-8735-90f32b8d7553 e19e7396-aa31-476a-8da1-25d7ee53b50f 8fcaf3fb-40c8-414a-9238-cf811b03f7bc f4fb9b52-47a1-41bd-ab4a-85ed6f37336e c06171e9-8149-468e-a014-bb99a5d52ca4 c3a817b0-75ea-422d-b1a8-54a467fc47a4 ffa7a266-d932-4cf6-bbe4-8ceebf58f27d 261c5fd0-3e79-43a7-a49a-cd952fef8b17 d33d90ef-c9ad-4cd9-b57c-eb36b7cfd49a 3704958f-78d7-41cc-8b70-746b7e4b2477 ccd851a1-bba8-498a-b8c8-f7405cd795fc d6b3531e-d6b1-439d-80fc-f55ed5ac98e2 c4b206e8-4164-4295-ba7f-0201b2383bd2 2c3818e3-578c-40c4-ada4-278a39929cbc a47b3183-bd8d-4bd6-9696-c84ee16952bb 38da37aa-03db-4619-9ea1-28492bf1543a 3fe6a9da-dcf9-4db2-a123-6c02e4d05e01 775be8ba-dc34-4673-8e76-1767957051b8 ff27accc-2725-47c4-8a89-36074d87560a 7d660c54-7f89-43c4-90c7-07b2a67c46e2 23df624c-f519-4fe6-b4a1-cd5127cb0758 623a4624-fb3b-4073-87b3-e71dafd19429 3808754c-8654-4a95-b6fa-9857f6599c52 93796fca-2fc2-42fb-a1f7-98e2043325e3 afe9fbc1-157b-42a9-aa47-00249125d087 5639031f-cde9-403c-8da7-665b3ff8de89 36687cee-cf1d-4305-832e-89aec437c032 8a7385e2-1c6f-4adc-a3db-11bc06ea6e86 8f1382e1-ba31-4d35-aff2-451fd6676919 3d0c20f6-2c4d-44e4-a9cd-e91bfc18a596 d48da592-c364-44e8-bf8c-9bc2edbcb407 2e9040cb-1b5a-4a89-84cc-dce3dadea8f4 23308d96-539d-494a-8e91-d7e1ba54ee26 0d44510d-b66b-44ab-bbee-28bc2573a31c d58e83dd-6e31-4013-b8cc-fc92fecf2554 53fe6267-f02b-419d-a4f2-5753a638d386 942a94d2-8a65-4b3f-9495-7fbb8e7b7169 b21926cb-abc2-4538-851a-47254d8127c9 3a343edf-0f13-4026-97b7-3e675ef59184 21113f9a-3838-4bea-b801-0950f46100c7 50a76dcc-4797-4054-875b-9b94f27212e2 cc6ca5df-1d0d-4964-aac7-90f60289cfac a617d5bf-e711-44f6-bdd2-ebec314b96f4 8e6f8182-8a5b-4f30-882b-c75bb38ed81f 676e6caf-5b8a-4678-ade0-2352d6280a68 7503d341-ade3-4dc8-87f2-b25e71235f58 f48f4acb-1cac-4b9e-98d8-c51483ba5cdd ab459a0c-ddac-49ec-bc2b-68b7a2b04846 eb6dc55f-6d58-432b-886c-06fde69db906 879b8e82-11ea-422d-819c-5494ed6564bf bda1181e-05be-4859-bf42-37e8800a4c38 9b3c87a2-6545-4e5f-9ff3-8332d8b7d42a baf52f90-5763-4ce9-93f4-5024907930d4 3ba7bbc5-1cf5-445e-a319-2f0c5c2ca2fc a62bfbe8-f245-4fb6-a460-4961b5c0a32c 695636a8-828a-42c6-b4f2-2d505b0e3d45 f83b1e63-aafc-4b38-bd36-b2ac0237eb6e 266d40bc-325f-4dc2-8467-3e357b6d7553 f2a8bd0f-82a2-4365-aaaa-a4106e187e07 2ec1959e-2774-42f9-9878-6a26f2095527 3de48303-773b-46e4-a84b-74a3dcef68a3 9c9be26b-c882-4064-913d-1a10e4b0349e a85d9d94-0f27-470e-bf83-892138b058f6 10760892-4933-4728-9b60-2d2491cc6155 126c0f4e-37ec-4b22-b4ca-d41593996239 1930d802-d841-46d1-88ee-4d73d2754682 9539a6ac-b270-40ab-817c-89ffab7ae9a5 2937bdd0-7cbc-4f97-b2f8-1e38e686f0d7 d4619e8b-919c-40c7-9c86-4d124e21f79b 17234380-5ac4-4bfa-87b7-aa735756d1d2 2ec91835-5422-4fa6-94e2-028bc6be6bd5 5f17b2dc-d7db-4ea7-b610-e8b7440e4098 08649dfd-82ab-45c5-b444-2c888b3f42a0 88872aae-6dd6-484c-bd59-3f0812f50075 ee6368f5-a307-45e2-8eea-b25fe800102b 6375dae0-2a11-47a1-a8a2-118fda2dc82e 0da7e038-ecb8-4115-9785-6cc0fa4241e9 d3744ace-a931-4eea-9138-022de408e8c4 2e9a7fab-33b6-495b-8b9d-e525819cd302 1414d167-aa03-40fd-b92d-4a6ed54d7843 809d842f-f8e6-4f57-a361-8cd603aad7a3 1854dc92-6e83-4b42-9a34-872f0c048d7f 7ebc902d-8184-49bd-b82d-a415e83718fb 51bf5b0a-2160-4c5e-a0ba-c16e5d9c657b ffd47f37-9ad8-4f7b-962e-f40b556c8975 99109b41-1343-4d94-a488-6214cf2c73b2 76f64a87-1540-4b20-b19c-ba100c276260 b741ffee-9511-4032-afa9-0df09d6fc2b2 5b37f099-082d-4e81-947f-c6f100d4c50f 76d92c7e-3961-465c-a30a-20c04f21ae17 459ab442-9a2f-4dd4-afca-c8cdf0329ff0 2a3143e3-f055-4f3d-9093-4d096575265d d51873b3-8720-4f86-9460-03d9f9cfaaf6 7e6eb000-a09b-464e-a240-23a3189588b6 019ccbcb-a23e-420f-b8ed-5372aba3bfef 3db26c71-ccd8-4ec4-b8e0-7b96ab12d171 33ee1dc1-1494-4e66-a19e-5fb80a1c88bc cc7de0d7-2530-4fba-9180-1bde9f7891fd 735540b8-4808-4dd6-a295-5851a9beaeba e32f8473-8447-49d2-9736-f2c9528f0a91 6ecbcc26-1d4b-4c03-a03a-2c2cb5ad2b91 2f1b6de6-05e9-4bbc-858d-ea89e56b4fe3 04518938-a7ed-4346-b00b-96715e53278a 43909bd4-7bd1-4785-9a0f-671f4d5ccecf 67ed2d4e-22bc-4f70-809d-bf5d8146faab 5aa63521-5d5a-41a3-a524-e5174aae8932 cdbf7231-491e-42a3-afb2-cbc312a1e947 0784b14e-af4f-4b79-9ee4-000443e96855 1a286e43-c3e5-4788-b51b-be9903f5edc5 5d1651cb-6a19-43a6-b9bd-b56f946dd8a5 424fe81d-c0bc-4f94-a803-ae7c3641050e 135d0c66-2d4a-413d-8cec-ce1163cc286f de392f3d-352b-4926-8281-f3274a1cfbfd 79f2fccf-5782-448b-a54d-3b4eee6c51ec e40a46e9-ffc1-4921-93e6-e26c0917ea9b 19653548-d93b-4dbc-b8fe-c11feeb83aa1 519230d5-1c2b-4152-a947-b6d11d50ad82 7cf0bc08-db3d-4c4c-b2c5-43807baebe25 61164768-94a6-42c1-843e-50e56c7f82ec 944df5e1-50c1-4a2b-824a-3d04fc012f7d 64aef445-b10f-4d99-8721-a7781e48b444 b6919a75-345c-4dcc-949d-7431e2d964bf 34527f29-46b0-4a56-9328-22e9b9b192d7 8e52e3ef-ddab-4a12-8247-19d7ae5e6f8f 1fdaa2e4-b38c-4ae9-abda-cb796e8d2d04 5bdb090c-24b9-4ed7-b4dd-0229e73a8ed6 fb56f2db-687c-45cc-a094-5e62ff531d56 67f57b36-1814-4c8b-b182-1fdf15385cce a6330126-f000-4175-b940-8b044cb1ee70 7ce4b6e8-da91-49d5-9301-f774e23e454f 06f06313-6987-4b9b-93a1-01dbdadf3a1b 8de4ebd2-e61a-4d30-85ef-7b6214b33659 a582a9e4-18c3-4475-8081-14028e8d7658 08dc250e-a8b8-453a-9fd0-44445c975e55 902c3ff7-782e-42b0-bcaa-8881d188a992 42f263b4-825d-4266-ba51-2e478e32d00d 5244d704-f8c7-4f1b-9b67-0b208dcf422f f35b73e2-a846-4348-aca8-a2674ffe99c8 88a3143a-07f0-4310-b543-2145fabdbb3d caf9a58b-9757-43eb-b352-14d2f2233e1e 13490a77-ce36-435b-bae7-2334c274c22f c8064a4a-18a7-4206-ad83-49b8a2902a8b 2d5df145-0dae-469b-9cbf-6dc390303b49 70c83af6-68e9-4324-8a9b-e90c1083ad8c 8c583f6b-23e5-4e6c-a749-d171ef0dc666 db0bc82b-caae-4cf4-a599-cc9b513c33f3 893bb3fb-0fba-4e75-9612-7c7390aa244f 450dddb5-e7c9-465b-9a2c-5a71867f0654 e7e45e55-eb62-4763-acbc-32bb800e3868 f54e0b80-4180-4523-8996-0957b57957f4 feea0212-4080-41d2-9bd7-0b4d8c5584cb a1c6e5b6-c755-467f-9882-514ae96740c0 c9190f2a-d1e3-4cb8-8577-bac4e39e2dca 8551ea56-8fec-41cf-9be0-d0a068fda576 ea463cc0-7c74-4716-a232-7283217f092d a4787da1-9790-4e69-8c4d-54dc707b0275 6f554257-6021-42bd-9e61-f5c05accddb5 52f3fba1-70f3-4378-a68f-089c2d071a95 e13667a5-c0c6-4bcc-9ddc-960431613777 17c48d52-9e82-4e25-8fbf-430bac8fbcac d143d7b3-eccb-4993-ac79-66e60523096e 5157ea44-49b8-4f5a-b840-531d6acb497f c2222ee5-70ef-48f8-80a6-ea6fac78cf63 1e4cd44e-238b-456f-b019-0509078665e2 0497027a-6eac-41fc-92ea-5873fcb48888 0dd0b9bd-974c-486c-83e2-a393ff413bea ed8b1aca-a92e-4237-8d45-f4d36eb33798 d53e1869-be00-4c5b-bbde-f4d256b90243 885cd247-1032-4e0e-9a53-d9115c6964ea 68a34978-1b4b-4c6a-839e-5b2c19be1df9 f6a7b543-d7e6-4d3b-b792-47a3185b376e d7c75ef9-f038-4966-a23a-2ef6597fd983 5bafe98d-33cd-4510-a497-e06f744168fe e0ee1b2d-6cf9-4097-b0e5-8bdce8375747 1643e00c-25f8-4fe5-993f-132ef6784c67 11684fea-00c0-445d-889c-e2e68c5a9bb0 702ee46e-a453-4470-a11e-6c8996e653cf 9b3e9095-8d6e-412d-b378-1e75b1ebf458 70da86a0-6bb8-4af4-94ff-14a799fe6078 3ee3481f-9f33-4d40-b30f-a942e13c4eae 3564e2a3-8f93-4654-b3b0-80ebd8626285 c943f5f2-67a7-498a-9eaf-a2b4d5050e49 47f34aa4-5e4f-418c-acde-54dbe87d6dfb 1c18f431-9353-486f-b5b6-581918e0f7e3 1d95666d-f4f5-4265-ab0f-74c9ddb159b6 1534154d-0135-4c7b-b590-374ae17a87bd 6af36be4-ebc7-458f-a221-9ff243d6e505 f72f2ebf-46ae-4584-9b23-164625fa9359 152bda32-89ae-4d80-b60b-6e6d1985c511 c0a92f44-3d84-4cbd-9a02-c6dab99f6d0a af9b45a4-2e22-4deb-bad9-4a45fcde78fd 571df80d-750f-49c2-adfc-6f16fed0c12c 0a4461d8-12e7-452b-96e5-0407609e1ec8 2b0cb36f-65fb-4acc-8fe8-99b7cf4e1002 5b90189f-5303-4e2d-8a4d-8ab0ccb82ba4 ae7b6e6b-3796-425c-84ee-4c9e5231ff89 83ac4162-64cc-405a-b782-d8f3d0c1ca69 5024b38e-b922-4d24-8a8b-dcaecabc59c2 5adfa43d-b784-45a7-ae06-5d30a92a32f4 47893402-2e79-48f9-9a84-ce5718e38e81 265144a6-74f3-40e6-9ff4-b83dae876116 9261262d-8924-444c-94f2-967a5eed1caa 7883cdf7-8471-42f5-bdc2-7972343b0fd5 272af88d-8ad2-48cb-a0c7-35d69dcfcaed 9debdf59-5e20-45e4-87ac-1145e189528b bcb0422d-aaa3-4c5b-8d4d-418ec96c1581 19c47c44-c6be-4ce0-95e6-b4ff234265f3 a0b0b382-7a3d-455e-aaa4-ac3e61bfcbc3 a7c2ee01-bf09-443c-8771-0354c8a7833a 121fddd9-503b-4307-bb47-8036105f8df9 6776938f-2e7f-4a05-a290-fdc8a8000f1e 2d709ad1-3092-44c3-99e5-ec027f82f6f6 0f993bb5-4ce6-48e9-90f2-7db1239b86f5 0d8674a9-1165-4a00-a405-81627bf88d61 3b2ca8ef-1d12-485f-b0b9-5d414660f1ec 2013e791-add7-49a6-8bbd-6e87168392ea a73c56a4-55b1-44f2-bb0c-0c70c4cbd071 5c0038e8-859d-408e-9bb5-e64181608af2 29cb4f7b-e701-4521-80cf-30f948b6cc98 e81e75b2-0e90-46e2-99f4-28bd467f6ba8 fe9bea4a-0ecc-4e67-bf7f-e64861136fc9 7a845a66-6ab5-45d2-8703-a231f1c56680 a86e06e4-9cdd-47ec-bb90-42053208b980 4afacbab-141e-47a9-b7e4-2b1bb22d5d45 5ba47f03-c74c-4513-a4d2-21181fffb0a9 d8ee0567-babd-469b-820a-2268c412a708 0aae43dd-cf28-4377-b9d8-84100858356e 11a4a062-5fbc-46c2-8dba-76a4a9664aaa 1f4a1e7d-d5fe-4bd0-9a1a-be74e0460e12 b0ada28c-2d8a-430f-b14b-2324912907d5 f7c42c1b-555a-4041-a001-bb9d085531a1 4dbaf6bf-31a2-4587-8efa-b131bdbc2653 eee7e2ad-b8dc-4885-a9d4-f128e7ba85e8 c8d7cc36-e957-4ef1-b010-cfed8ad70734 5665aa6f-fbfb-4020-961f-75ea55499d5a 96506041-40fb-4d4f-a035-27c792b8fd9b 0861cedf-a78d-4919-afa6-f5d3acb8e3e4 b7d40a0e-ad17-4926-bc83-f911a1f654a3 118d2c6f-bca8-4ac8-9de3-c5bf342a3937 f00134b8-a76f-4b6c-b168-653b5f62e116 2bafc137-5638-4537-86ff-1dcf53261c76 9679ce85-b246-41ed-9e42-996238bdc11b be6aaf9e-509b-475f-81d5-b0dd455aca09 6de41ff4-6168-469d-bf43-fb6a358cd22a 3cd34d8d-c911-4906-84b1-a200f0fd4528 ae4d54fd-0a79-4e88-880f-9c6263006233 c0ec97bd-7c6f-49d9-bbce-611ad76ae72e 2f7630b6-c64b-42b9-bd31-17655fd0e173 6da2ea03-8645-448a-a678-47391abad820 e91d739e-da44-45fa-8f67-a3538afa9fa2 0002b509-2145-435b-a3d4-c795b9762ae5 b2391169-3bca-4369-9b61-fefcacd279a3 2012b01e-2d59-498f-bb99-cd6301388830 e942371e-8cd0-4cc4-9bd2-e26fc8a82d69 1f6d0eb1-af73-4bd0-8241-8ee7d02990cd 97cd4d7a-cc0f-46ac-9cc6-bdaabe4a705b d6bae5c0-3fd1-4ed3-b11f-084213500764 b0f5c5a4-7f62-4ff2-9e2b-c3f308eb8fab 9b4eb611-55d7-41dd-a181-fae3519cd27c bc45a0c7-9726-45fc-ab95-ebfecd607eab 7557b072-a1ce-4412-9800-fb289d3c2d01 40966ab8-d01f-4ad6-bbb7-4054d91fe1f8 c249435f-0cc8-43e9-b719-248723e46500 ae888bec-8710-4ed3-9324-816e48987086 88e470a0-a5cd-46d8-af79-a3a59bc1f572 dd1415b6-96e2-45e4-b2aa-271870eb3cca 8ae46185-90b9-4f40-81be-ffa03c3c8e7d 07566959-d3a7-482d-b6ee-82099d4bae30 5d6350d1-dc15-4469-889c-0b2d681bce79 1dea2416-c3a1-4cff-b648-f637fa14aeda afb1fb6a-eba6-4edf-b9eb-fdef01a516f1 66cf9b94-c9bb-4a27-8154-65e4c6d7c663 cefb7667-c0aa-4eb3-a65f-9eeaddb13325 14fb6867-6ea5-4a36-82de-868e25e401ac e044327f-c6f1-4fa7-9b41-649244cac88d 2f0fab8d-f01a-44bc-9770-32480483253f e7d9d987-3ff7-47d0-85bf-aaea64d45a0d 28134e39-a856-45a6-bb45-1815a08ba344 2fa726b0-6ae6-46a2-8c33-329d1dcf1c5c 9ea2b882-95cb-49d2-95c1-d3a258f93246 2c32a15c-aa3f-4d19-a8e9-01c6a86b3adb 4727ea9e-d8ac-4029-84bf-6249a0fa5e83 059ae2eb-8c41-4f2d-88fa-ee42dc7cb06e ac5d9251-01a2-4637-910a-869186b3a732 33ed1c01-927f-46e0-84fd-14b0574e2158 4daf3e92-5c59-4be2-bd18-6f1710adf9ad 71eab74c-b482-41b0-b1c9-e932fd7f9243 fd4602be-ab38-4f04-9a81-8f0e8d9d3c35 3b604986-0507-4ac2-9ff8-a3717ac0985e 29bc2c5f-b991-47ee-bb53-da8fdc470fca 660ebc05-0c59-47b5-90c8-5f1ee09d6dae 58e708a2-9f0b-4b4e-aa59-c6c617c6106f 94b2541b-ea45-4a38-8bfc-496b42792eec d3198f39-4893-43c7-be61-2d6b146844a7 8f7dc88a-b8b7-4a70-bf79-d162c4bde69b 32ecdf49-a85c-4d55-8544-8a8b31a2a375 315e8875-6f07-4dad-9957-9ccc817e7378 71bba3e5-42d7-49bf-bab5-3566b88e8384 c6babcd5-5c43-43e9-bb9f-bacc8dacabb9 3db07990-0af6-4377-8eea-3f38269eda59 4ca14a54-eb38-4126-865b-e3be94bbc117 d3859d18-dd62-49e9-b084-072ade666c3e 6a7a4e7b-9457-4e59-96da-38be9d2394e9 2fdec206-41f0-44f9-8c1b-089e5df9a9a2 fc493a1a-1fe1-4d35-aea3-8b23bba65a8a 750bf0af-44ae-4575-97f9-caf818228441 84964af9-1834-4072-8378-54205e4b2354 8dd1d7ed-4ec5-49bf-8cec-63760e0978c3 493bfaad-d635-41fd-a3d5-91532128da83 929e1ab4-98ab-4bc3-8b5a-3c8a9eba4441 9d8a7f44-2ac1-4b9a-a72f-e7ea6257eaa7 f313cd59-caf1-4dd3-80b6-d09d337e3cd4 0def7cf0-3633-4a9e-8e0f-b9554eec4d11 b049eda1-9979-4ee9-afef-c348ae560844 c7a27530-b277-4865-879c-a46925021cf1 a98fdc3a-2fc3-4f65-936e-68b9a84728eb 6165e9c5-02a5-4792-8132-def8318dedef 4c98e9f7-e35f-4cb2-a180-cd0903bba5b8 44737104-bce4-4378-a1bc-815006836630 d64d1e48-7e27-404b-b00a-1de8a4e73f90 61f09e53-f224-484a-b5b3-1904d0bc50e1 7679d831-0159-4dce-9f20-d263f26467b0 fd0e8a2f-1695-4bcf-9721-35524f228919 9a5be989-0986-452d-b67c-a7cdaf2ab133 ea6359e1-a482-4a3f-8db6-a4b0eb707001 329fcea9-41fb-498e-ae71-70e90dda4c3f 39005c49-1333-4f19-8812-0faa82fafe91 c5f80b7f-460d-4dbb-8272-31dbcc9cc121 952f2354-cfbe-4259-aace-2cf19e4f4e7e 1ea79236-c913-450a-acb5-d231604c7737 0066cb26-c98c-4598-9bcc-ddbd5ec8ab18 1ad0f272-c8a1-4aaa-877c-065e103565eb 3993839b-149f-4a5f-a70c-b77ce7c60988 91a60a48-0125-4d5c-98f6-d431ee24452d d2e41d4e-6758-4c01-90ba-141a8736bf3d 6b9add07-4729-414b-9ffb-4dc3d426d5a5 0c6ad059-ca3a-47a8-818c-182fa280c236 11aa8603-a1be-416d-ba2c-f1ba8bfc5408 2ef78d07-a386-4d27-a484-f3de9185800d e49b2695-9dea-4c66-ac35-c5aea6ea3575 e4fa805f-8100-49f8-b6ec-f0d2897cd835 bdee56e6-39c9-424e-aebe-290e66eef4f1 0dd00bed-2f59-4420-89e1-4dde6b3e7a87 a1a1c440-d334-4a81-af5e-43a49386f667 3d5636ae-14c4-424b-a24f-0d7f8207e148 37f1b115-8cba-4846-ba25-e1bf3f5c4dd3 79b8dafe-d771-4c32-b800-18526560e21b d2df8c87-606a-4070-9998-7a06ffa477ef 3affb065-4f34-424f-9e49-da617b25e904 d13a824b-cdfd-4b30-ae37-6431a728a4fe d8d24aa5-a7b8-4056-bc2c-0a90ef7f80d6 c3ddbec1-07dd-4692-8b66-2d9999bd6966 452e2795-f9a3-4c2a-86b3-ecc2e3a1f554 8faa4bbc-5462-40ea-b84a-a9048cd7748f e3e17fd9-2b74-453a-aad6-b08cc6ab8463 42df2bc4-49db-466b-ad0c-001b8990efea 99029707-7a04-4a87-aee2-4110fcab5ad1 cc7530e5-fa72-4254-9597-7ee04ce3c76a ace2680e-a552-4564-bfb9-3441d0d570a6 d15dad79-e0ad-4e8e-81c8-f1a96adc09d7 4ff8ec66-0ff1-460b-90b2-f3fdbced32d9 90238b24-4f3a-426f-abbb-37bef957bfa2 6bde9b34-af04-4344-aa05-ea13a20d372e 2cf96b79-f577-4820-b3fe-8e71a8a246af db1e1f8d-973e-4520-ba48-444b4033a419 0ffdee6e-e0e8-4853-a309-287d01eec4e4 6c759ae3-d0a5-4f22-a8c1-4db61b7ba332 e03c8468-b7c7-4809-874b-714fbfdee362 bb82d36e-6b9b-40fc-b358-c136178a8556 a827b98e-3a9d-4ff1-9f23-6ea42df9b5c7 7fffe65f-d2bc-4673-bfb8-0b96ddc4fd29 98cdb8bb-b328-4295-a2e9-d1b6371681d4 a16e3ed8-1902-463b-b03e-31d2b7bae6ec 1c8a888f-14c5-4d96-b4db-fc4cf52da08c f1987042-af46-4001-acf6-ffe93fecd3a9 b646e314-7d39-4a21-9991-7ec565d9ef88 5ffe09e4-aac4-4a65-8dc1-11700f792d90 10943ce6-86b9-40c1-a7ee-280ad0b16dc3 96baf034-3289-444e-9e89-879d9b0667d6 1dd284a6-1e2a-4eb3-8e08-42155e774b52 d6a7578c-10eb-4e83-87e8-a5d430e9bea5 8138202b-5970-4c6f-83cb-68961e24187d 4077489b-506c-4516-94e3-c27760ab9f42 220a690f-6e4b-4d55-a744-a3d1f3c83c90 0e543aae-0866-4677-b0c0-ca2b4a2c720f 1d29fd5f-7d56-48c6-8b46-990656c7009b a20c0500-2656-45e4-a4e9-54536338f32c 52649fef-21ab-4f8b-a253-9ce323a6addf 377fa427-d0be-44eb-8168-2258b7128b6b cc6baaaa-a5d8-4a0d-a9c3-267aed6c4772 2dd7dcf6-8490-4883-aeb7-5fa1dda4c72e 1d72d211-5417-4caf-b081-ec83c88fdb7d 926cc251-7f77-4520-9e1b-bb5f3f5a25bb 219a4b14-f10d-4c91-8d89-d49fd289e3ca 803f428d-2d10-44ec-9cd5-2b4b91698343 a9a645e5-cd05-41d6-8482-4f3daad8b50e 42d930b7-c2b9-4f9c-8ecb-6ff2868850ca 6c113eb7-23ef-42fc-b166-69dd2dd73f28 5ce961d8-7b89-463e-805c-dd99dd5b35a3 9a33ffbe-824d-4608-b7e1-bcc9e8e8861a a6402a61-48ca-42c8-8703-6de9b983fede 51ec4a0b-5f9c-423d-bfa3-0eda4fa6ed69 4a9d5e39-c388-4fc8-80b1-32f78a7d898b 6419861f-44dc-4c3b-bd04-8a9ed63bf300 213c1e14-b795-4930-a3c0-641689a79494 9d511479-65fc-4adb-b9d1-960bfa7ee9f9 fa933eed-bf28-4f7c-9294-ea89dab83aba 8a69f6e3-dcb4-4263-8874-8d17432c5aa3 a0f693f1-7547-41fa-9f1f-6fcab052dfb2 15602413-6957-4802-bb85-a9ad49e2c334 0344fffd-0bcb-4326-b076-0f52cd963b74 14e04c01-08d8-4b36-8be8-d00cfea5fa1d 9f8e81c0-49b5-4ed8-9877-26202f4b2e52 b1e07a90-d197-4103-a64d-3af9bd701fdf 1b88b615-6373-4350-b2c7-5a103a3582bb 12346a2d-1631-4486-bb7e-af62ea7e0b08 8afbcb60-bcbd-4c18-82cd-1485cfc68190 28e09cea-9f6e-4eef-973f-ce84b6451527 d1f4f1fc-efe9-4ab1-975b-fdf5e55233ae 1276adee-d115-48e3-b6b9-cd5f03639e4d 475a838a-8865-412d-b553-0bb60afe3151 1e63f82d-0ee9-4c44-9180-7f46aae0d9a4 e005ff77-9455-4fb0-87bc-e237c6b8e9b4 fc380de2-02a6-4ffa-b9d3-65eb13e781b1 7d7a6ed2-603d-45ee-a6cf-fae15fa2f2f2 945d9841-3f30-452b-bea0-c8bebf100083 51afb1f8-1acf-405c-9852-0b6444bca2de d5d895f1-2d05-47b8-89b9-d3cab637927b 52f79bfe-72f6-43a6-af01-660abb34b724 e9364d69-e1fd-4559-a7a2-091ba4230069 d1601416-0ffb-48c0-aa19-8bb21d2af12a 52f9e0be-c0a2-4a3a-a87a-dcf5017bbaed c5c499ad-ac2f-4d1e-9ba7-a365c3644c46 cd772f23-6114-438b-adb5-f0618e1f96a4 370a8235-2a7d-42be-9813-09e9cf54531d 03edfd81-4832-4186-b621-5b7e4fab42f0 8bb9e0d8-5b1b-4d8f-8c4b-c0d415e1769f 2f48f673-1d29-4d41-beb1-6ba109b25c15 f8ffd197-53d5-491c-b19e-9e13459b011b cd5598e6-b0c0-480f-9455-54f077c2e2b7 06e6c5dc-e08f-4426-8c91-828e0701a381 c0fc44f5-51f8-43ad-b4e2-8b4250f04024 74cd3647-47ac-4c59-8f77-6ca9e8bfe7e3 d087d7b3-b5ed-46c7-aeb5-9eb26e1299f4 ca559f41-0d43-4324-8fab-51f5ed986368 d8173851-0e76-4f69-8549-e10f405cf621 c5feb0a7-98c5-4caf-84d5-baa543212c90 61347677-4c0c-4c65-80df-b39f9f42555c 40255d2d-d186-4984-9249-d594df0cd099 ea677e29-3657-4ba8-ab3c-4366e8fc7c23 dff62220-7810-4881-8cac-f412b7a8a594 012d7472-90b6-4e38-8ca9-42b4f634869c 4bd0884a-3586-4617-93a2-1b03e1329ea9 06827124-07f0-4d5c-ac75-fcf62c34dedc 31ff0345-bfdd-4026-835e-23abfecfef16 fdbf34fc-8407-40de-be52-db210657e524 6f36e3cd-887b-44b9-bbbd-85d7f434923a bd4fabef-995b-451e-a472-b5a6590d7d69 e5e5b9e0-4054-444e-bdd8-3f52fe0e0afd 81b06c67-bb8f-4355-83db-eb7934e1de88 0412ee5f-0612-4fd4-b260-0a8c27e577dc 948a7ad7-6dd5-4097-b3e1-8089c1fc87b0 49f3eec9-5086-49ec-b2f7-84a4e1ac98b3 ebfe74ed-fe7c-4d3a-8e5f-b1caab645c8d 95e3d33b-2f54-4414-992e-ac93109dbdd6 95f676b6-ecbc-4e9b-95d8-acd1712ba81c 90c403e8-4ce6-4384-8f9f-46163a8be88d 541a0f6b-307c-4036-bb57-4987613be4b8 e4a329bc-a85a-4f41-86bc-e7a1dd92a496 cbf70acd-2383-4f3c-9942-9e4c50f20de0 550324f5-8467-4a71-9cf2-2795d2b52964 4fdcaa73-2087-4062-8608-0870f59629fc cf981ffc-aa80-47c4-ba93-8636e4607fc6 7442fbeb-fabd-4ea3-8856-1e0836f14bb2 85bf5716-57a1-4c1b-b385-462d565d6775 11d0462c-9b5b-4af1-b851-d3e56c542ba7 3f1a9a35-2872-4e4b-b813-0b00d0a2f3b4 849e9e70-55d4-49fb-82de-70e11358988d 9e4ae93c-80a8-4a4a-9720-be33eccf0afb ef20fb39-1b13-46fd-a921-15d8ad1e8728 4321749f-ce46-4eb8-91d2-1dc050d2d4df a629b5ed-fd72-4a73-a0bf-d45f42f6e846 1463f023-1e06-4171-8b12-066271395af8 3789e25a-d98a-437c-904d-200012ce6f50 2b70c287-f600-44fe-9c86-115b88895704 d3d7dcd7-ace3-4a22-a3db-7eb529ff8c56 12579db2-bf02-454e-ac66-eb3122cb8246 33c43a93-2034-49af-b572-ccb8398bc8c4 cca58798-4110-4bbe-95b7-89926576672e 22dd54a1-ef71-4a2d-88cc-42332d1f727c 940fc608-98a2-466a-8cbc-33a7c17674dd 95c3f59a-4ed2-4d67-87b7-7788b9bb5399 d4836c7b-84f3-4d34-821c-73aae813b59a 9957fd47-1168-4887-8c4c-d3ce50cb92d1 6d3086be-e783-4f81-8358-629d4dc5fa5a 36bb7171-2873-457c-b4dc-9f00f3fb6672 f5a096b5-0a0b-4c9c-b449-1a66a5bba1bb 5e102e95-be1c-40fa-b36c-269503aedb6c 370d1e98-a748-4bc7-9ba2-0711249ae8bc a798c7f9-c2dc-467e-af14-95c7bff79a0e 7513b2f2-2431-4586-b0ea-73a66399ec02 a9f3f153-fcde-41db-8a39-4747f1107f54 91077f30-78de-4154-857a-fdcc2a6f5081 c0df3ca1-1166-4f80-8810-7193679f5d52 8a3cfadd-bbed-4c4c-9523-524fcd25fb4b 79cadb4f-fa1e-4771-8c5b-791a3a6c656f 91c062d2-7187-4c75-892b-54aeeca8836f ccde095f-c38a-430a-8111-ce940b87762e 88a2c22a-e76d-4705-9615-1e278dc7f17c bd8b71c9-af70-48cd-a9f7-f544c67b6793 4932532b-2adf-4ac6-b61c-2b6b286fbeae 385b9620-5ef0-4fe0-b4f0-ed713417b2d3 5cae78c4-f374-43f4-81a8-de8a2f81c59f 0a645431-d264-478f-81fb-a6bb49b6a6a1 3ea98991-d324-4077-9340-d297fcf627ef f357d110-c283-4421-ba15-188c8d3bcb12 e3042b08-ed3c-4dbe-8a9c-ab0d570a739c db1f8c77-8de6-4ef2-ad11-eb88ed3a89d4 7d20b6ab-914f-4839-a116-938447acf93a 11edb372-c214-4b5a-9712-e28e63d99eae 2224c3a3-fa7b-40ce-bc75-083e44febcbd 33726884-5c18-4b9e-a44d-cd5db4bb1901 0b721a09-2069-48be-a7bd-bb0c0e136788 09dd170c-8ecf-4636-bc63-b32f553aecd6 d6f420eb-29ef-4f49-ade8-7df0553017e0 241bbb1b-7012-43c7-a5b3-c0fbc2665c54 00200cdd-0939-4b26-a6f3-e182b3715e31 010fc072-769a-41b1-b6de-8545ab8f19a9 95c5afc1-d9f6-4522-9ff9-0a851c238f42 bc211795-8348-4450-a625-a91b7e2c9730 671d7781-29ca-4139-a468-239dac5101cd f64af391-5e59-4a19-a71a-e05a7f242f33 aeeec1aa-7c71-4801-a64f-20337436b0c5 5b6aa81e-b5ee-4fde-92fa-70201218dfd7 b9e87fc9-55c6-4844-b230-e83c0ac98220 94b5a702-1776-4448-be27-b6b4cb38f5b8 630bfa38-5ecb-486a-bdbf-9331e5fc472f 72a8a23c-96e6-4161-a097-f42226e17353 91653722-adea-4286-a00e-3f349fec39d4 19e4db71-75c4-4e7c-8556-cb7608ae4dfd e266c947-65fa-445f-be90-787fa55c8f00 3409649f-6fbe-428b-ba80-cc280b2c45c1 cfcbe779-53b6-41db-870e-73db36fe65ee dc46f551-2da4-4eba-a360-1da88db37d8e ce372365-0b6b-4d71-ae6a-d6a7a3c742e2 baf261c9-5b38-425b-943a-c8739707233e 97a9b975-59e4-4cdb-a3ae-4fa0b9c3661d 7172af68-474f-40bf-9e54-33979dde6f77 b9af05df-37a6-4339-9ba3-b20bdba4deb9 e9416773-fba3-4670-ad4c-a52d4b7335ba e52b5c69-f636-4e88-9dae-c4009b437875 65c9e93e-5652-43a3-94b5-0ad2f0f6859a b566b3f3-34cb-458c-bfba-c4161b4b4a2e 14221849-fcbe-4261-b7eb-17e0c24aa53b 211f8e15-babf-4d8c-8f30-189b6bd111be 1d5bf7fd-34b7-4e93-9b11-8be8145f2e0c a0d6cb81-baea-4a8b-b50e-ab720828298d 41b016d4-b86e-4b9c-b5eb-10de5c4cebe1 04b11956-1d49-4412-b33c-5287e3852118 badde0ba-9e41-48d6-b8aa-ebaa6b44e36c f3abaf5c-5489-499d-86f4-9f5908d4eed4 74026de6-4abc-4d20-999f-7328544b0fa8 e0b21ec0-8839-4fad-ab9b-0a447db919a7 11f573dd-eeb3-4b34-8b1d-e22e32f3e18d 3927e810-f072-40b4-8f6a-8e223ad8ae6d c4ef36a1-d59f-4e1e-9c6c-d226d59e1766 6192f85a-a044-4e4c-92a1-88a78b03a06d 448f466d-58e3-4842-9f4a-7243faa0cbbe 342f8384-69e2-407d-b262-7afb7d6625c2 6534c522-868a-4baa-8fa3-a30de72c1599 b892d2d3-e6d8-4484-8e57-f185925f525e 8a9dd20e-7af0-413b-ad5a-d742fcc748ad 6bbaddda-b9c1-45f3-9182-624d86d4898c 75585791-777f-4c20-893f-4db5a3492c33 54af624c-f491-4430-a80a-a82b3b0b16bd 323cde0d-7359-4290-a99f-6dc64eebb3f1 5232fa4c-1ebe-48ac-8ca9-726b92ae9753 e82a12fd-b9f2-46f7-a0b9-726f7ad5cef7 5c41628d-352a-45fc-9895-853f95a3c85a e7799f47-43a4-4b09-ba82-ff4edf0471e6 378291c0-0c3a-4aae-9e4f-f5c9f8411550 e0e67c30-1aca-449c-a328-ded015b6a825 a235ab3b-f170-48b5-95c5-04c888444f07 ca516889-fa7b-4e6f-b562-2625e03e803e f7117fa4-2603-49e2-a47f-ac6ee44aa61e 514ef68b-b0b7-4128-8a8e-f887aadb4824 4bb011ea-f1bd-4034-b0cf-79a8fdd12dcf 05aeec29-231b-46ef-b440-d3d556ada0df d9f7cb55-e690-4191-a7ec-6608994c96c8 b1b03cc2-5911-402f-96b5-fda618ccc504 2cef62da-b670-4f48-961c-8521f2cec4f4 94c97a65-6602-42a5-9653-dbd91cdad125 546fee0d-da90-43a3-834b-e3fc54dce515 d4d6379a-b0a5-4d1a-aa3a-4205b80f467b bc81490e-30ab-4dc7-980e-61acfedb6d9c 0fbdd96f-00f6-4660-b901-6f9d7cfcfbd0 4d2ea017-4b28-4637-87b3-8aec85840675 b63d57bb-272e-4d1c-9d55-91d8b3fb48d1 e90d2c35-a2e6-4136-a01e-20972c5254c9 6d1ad897-f249-4abc-9551-ec93b77f9e6a cfc6bb02-1ced-4955-a2f6-8e42dd9dd9cf 7beb1fbf-c28c-4145-907b-d5aa2e6fd704 bd3981b3-cee9-4ffc-994b-159fa5d26b16 04410546-e800-4d63-80a8-520c64ef7f07 ff1ec0dc-9ef3-484b-9795-55d54cb71778 536a1c02-830a-416f-83b8-d3831898bfc6 7ab400a1-7ea7-44e9-965e-b3763147c1de 231a9bc6-a382-45fe-b4d0-dcb15b16a5b8 ac242e66-7bd6-4c02-9392-62e379a68297 b102f6f2-f481-4c01-a9a5-5b1d76e12858 c75e7ee2-f9a8-4c34-a55a-f283b2ad4688 4987bb96-652f-4b16-a66f-b59c93b0bb91 87c1543c-3c8c-47a3-add2-f6866f27a075 684dc137-667b-40d2-ac86-7984b410802f 954d2f3c-d430-45ae-b54c-c40184e5aa7d d2b948ea-69ce-41f2-960b-75b9c98cde76 a2a9f5c1-5166-45c8-8a8b-ac93d725fce1 709784cc-06fc-49c2-8116-cdb1bc92cc59 cfefb7f6-78b3-4fe4-b8b5-e484a3a691f7 9678ef6a-a83e-44da-8587-58b4b14bb02b 54d8776a-a362-41ea-911a-c28bdc793570 bbfafaa7-646b-4308-b347-3af0d7b0a28a d97d2130-3732-4657-86ce-5a58a57175c1 2d9ab4bc-1011-4d2c-b9f8-01a5f1e12f8c 586889ca-ca3b-493d-b5aa-de58d1c5ab55 bdaffd01-2cc1-4c33-a830-9b467d88c5ff 36034628-44ef-4362-be88-cdc02c9cc200 768a6197-fd16-40bb-ab57-48b9c772c9a7 e6d4d471-0fee-499c-a620-a2606036b8c1 2cf01c48-213e-4c61-a511-21450100c860 892c76ce-2cad-4ae8-a1cf-374466d31039 e474d9e3-3af1-445c-9761-91fa4d73bc4b 0025bb54-14af-4bd1-806e-b8ad5d6ef9d9 e0a2403b-1024-42d8-afd3-d8d57372f983 b106584e-f589-4fc8-8243-ffc3148a9029 676f3595-5bda-4cc9-9eb2-4c7ee88699fa 0c9ea358-5cdb-463a-ac56-620c40842c4b 22de9930-b431-4c5a-9c59-a70bc58b3a40 ff932dd4-f385-4fda-9daa-817f805b193e 571a8c7e-ea2f-48b9-928a-9358b841f935 80bb90e6-69a8-44a2-9c26-2940f9f065d9 e671567f-8010-484e-a10d-e1a2e08981e0 bb7cd311-3399-4d54-8744-f02b5f6d05cd d3d081e0-0d5d-4896-bc2f-e2bd98155232 0052878c-11e8-4480-b4fd-4fbf9bb2d633 aaeb5b34-ecd4-45c7-963c-fd6081630caf a4594ab7-0b22-459f-8f84-04465cc3c24f 589e3036-638e-402b-9aef-7be3508b6f60 34e4e757-c353-4aae-8b32-414379056af1 65ba09ed-2743-4dd4-b374-5573eb690510 1ac0249a-b243-41ce-8802-60098dbd02fd 69a27086-108a-4c07-bef0-1bda6de64a96 f8e7afa4-90ae-48e3-bd5f-2932c0622151 c22bb289-3c15-42db-876e-0e3172ed8e94 69388b08-7f0b-4b2b-a50b-3f85b7ec2a86 b0c8b83d-1f5b-4f75-9dcc-c4486518c479 3640689b-97db-47d3-9b3d-52275613d9b9 379703c5-4e35-448b-aaf0-c3ba6aaa17ff 77b2ea07-5e29-4280-95c3-6bf5bd65926a 80e501ab-9647-4202-b0ce-9979c6ddc7c9 52bbb79a-2e64-4485-be68-032f49aa8ad1 d3de6af0-eaa7-4f64-9985-f9fe8a98b99d 834e0fb3-6361-4888-b10a-bf1ebefcb582 f99ffc6a-3aee-4604-bff8-4d40409bb9eb 12e6dee5-0ff4-4707-ac24-e0f4174c5004 7c117a84-3482-4d1b-8cd2-2db2c32496de 60270dec-92c5-46cb-ae39-7b43028b4648 464b0831-b555-4ea1-aa16-3bdb7d5ec50f a0d36281-d09e-4105-ba90-aa0ef4338013 2f0188ec-02ad-425f-a98b-6fd618d25ffc aec0a1c0-d442-4904-bd79-926624f8403e b42fda30-7184-48a0-9fe2-993b92933a0a d8ef0605-bab9-44f3-a962-7febf863dcdb d5493e09-4487-44d0-93ed-fd60ce2a9eaf c1c4dceb-338f-4791-873f-88330a50d653 2fb421d5-ac30-44a2-8d06-991939b74cf5 8ce158f4-6ff9-4e36-a062-f07fb2d47c7b aaccb71a-d637-4799-b802-672ee5b312d3 f3f66d1c-97cb-4ce2-9f9c-26e774379e80 c1b5ebe3-adc5-4430-b109-9a0cda85296c 74184f21-be23-4313-b68a-f761313cec50 322a2d26-ac75-45e9-8da0-bf4c52269f50 08f5b200-a89c-4892-bec6-41430d6827b5 9c8f3c24-8551-4142-b2b5-a500524e3f81 d1a9272d-78bf-4d42-a70b-8fcc72d97392 7d4b9dde-6f3d-4d06-ab48-03ce646dd0b0 3a3f287e-bf02-4fba-b577-8bebf9580a81 5ceae267-8f2d-411c-b5de-0f62e13d3eb5 f8e7b7e8-a354-4d6c-87af-30e180a63962 fe993037-594d-439b-aff6-77ad82ae2829 91de2b18-3d72-4259-a0f6-39438922ba26 8790dec8-a992-49c2-9adc-5609bb674c33 ce3e3ee3-ef2e-4da8-beab-4701ce4f76eb 5ae1ff29-5556-4538-907f-34e94a511676 0234715d-6523-43dc-9ad4-6ce125b7d311 ec2453e6-22ae-4bf7-b0cc-6ac0ec79defe c0705fed-bac4-4cd3-94a3-c677494aa87a 35bd691c-d4a9-4714-8978-082a296a98b1 88cc5bf8-b779-48c6-908a-631bb86246a0 a7d54ef7-2747-49b3-9dee-107c8d16ee93 98883fbd-d5d4-4e34-8f43-81ffbe3f9bc4 76ce69aa-8260-4491-9163-da223767de1d 09660831-6737-4e7b-b864-d285f2824ceb 611c73f6-976d-44fa-a4fe-ffeb42ed46e8 c717e8be-2d8e-40e5-8217-0d5e91b63de8 c055ccf4-de95-4ca0-bbb5-2d73cbd6eb1b babd64f8-bc43-4282-9263-14fb221b9be2 f09fc984-7afd-46a8-a123-a99b98c4f10d e5695ced-eabe-45f2-a22c-218387090456 3b8f4dae-2586-4d20-aab8-894b0fa5bd0c 393415a9-2cbb-48ed-a842-ee53781d3188 a5f58b95-2cd0-49ff-a868-c7158488b221 382f580c-852d-46e9-ac6b-ae9b4af21c78 e611fb57-60b8-46d4-8ee0-c3f83f1f4041 30386a10-a41b-491c-b3a6-999389290b50 8d042c2a-3393-4e38-820d-10094ccf9747 5578b821-88ee-46a6-b44e-2e7a94521ae8 d8f4ff85-cf75-40ed-820f-23517ebe9a25 06ddb590-ddac-4801-b303-995893cef379 b3697d3a-4465-4aa7-84bb-6efeb6aa9401 6d242ba1-dbf2-4116-990f-e76e807833ad b558f334-171f-41b3-b11a-caf6413fec0c 7da1736d-7b1c-44d5-9a35-ab54b7aba433 d1395fa9-c80b-45b2-bb32-144c2ad17ba2 b78369ed-4c85-4059-bcd8-1bbbf61e3a62 a8a9b61e-0b59-4908-9978-8edf0f2b4511 9976e693-7063-4b5e-9a47-de5911d38970 80da93ab-aca8-4082-9fde-11c7289ce6cd 6183f297-58a7-41ee-bf80-a9ffb077485b 75b3d5d9-3665-4e1e-ae34-76e961714393 4b0667ee-0fc1-444e-b08f-84b0afc3bcee 7e68ec83-5da8-4081-8a13-272f354c0a3f 487799e9-b324-49e3-960c-b2d579b32f5d 585ab55d-3d15-4520-8f08-aa7ebce8a230 478896ae-2fe0-4dc1-aaa3-10c3ba6cf276 5364e16c-e266-4702-a48c-4d608b29d5de d5585a30-73f6-44c0-ba2c-03428b362d48 80a2c406-9f57-4559-a80f-e44c4928b234 f45e9665-0e91-467d-8b5f-5a6f895894ab f951423e-190d-4f0f-8e99-620d4b0a25da 637bc518-42f2-4668-891b-80c5e42c8eb8 b98e59ed-09fd-4738-84ed-0b8146cc791a 6b40411a-a7c7-4647-b445-b52f38741f5d 54815caf-aca3-49d3-84cb-22b4da677e7f 3e3d9e1e-48e2-4acd-bd6d-3d82c301201c 7dd022f8-2530-460d-9358-69698742b600 86358677-bfff-4140-9fc9-484388d3c340 a5c7bf8f-2831-48ea-9b01-edd8f731a380 504e1209-99c5-4c50-a4f9-3ece280cb393 4b985d4d-58bf-4bed-b67e-0330dfba6603 706599f6-0857-4a3a-bef0-6e74956a8624 32f51b8a-55b6-4755-aeef-f867b98f907e 700e5cc2-94d6-4e90-b4fb-263aeb344e28 d0c5b96a-3fb4-46a0-a084-401ff65acac6 4b54d592-ec13-40be-afb2-4f217d70f4dc 46456ed0-3d86-48ba-8b37-4ecefe4dc458 b1877caa-3f02-4227-beb6-c092a3725783 90972f5e-010d-4a81-9a43-dfc582279127 933ff782-8df9-435c-aa3d-bf2c959a0090 9ffdd1b1-45d1-4d34-8a8c-37586a493822 08a61910-1da8-44d6-8976-8e2344632541 fe8d54d5-a01e-40dc-b102-fedd7bc3693f a5076254-5171-42ec-a6c0-ddf6008ce459 a744c0f5-0b26-456f-8d89-582f4d82b171 ec35ba8e-8ae0-4241-8abb-543a63df1000 19ad0219-bb90-4800-a357-9d117ec1c32d 25c7d4b7-71b3-4789-af53-a0be16655144 33e1fffe-5baa-4621-b1f5-60880f6f7a24 f0123876-12e7-4e19-a5b0-8c05625d2b20 ccaf1cc4-6b3c-40b3-8ab1-13b15ed31971 f5ea8059-316c-4a10-934a-cadb3c3f4e9e 2b86f14d-6ed4-4287-8c0c-be37e0812203 a0fcf862-2c82-4f0c-b5ec-54560b445e6d 9bf4df6b-321e-46ae-a74a-44cd27fa681b 67d7a942-d827-40fe-934f-568c46f1d4ec 9208cf94-938d-458c-a4c4-791b41a1cb79 0515d341-9d01-4b7c-97a0-0057353c2574 2fdf20e9-dd58-4c9c-9e5b-dd3052a0d6a0 ba8598d1-afe4-4ca6-a40f-9d04ef50c7c6 cc796dfe-3ecb-41bc-bcbd-f21a6707e3f1 498da537-7960-40e5-a0f1-819d4ccd01e2 c24920c7-3830-474d-8ede-22b9eb231aea 057ce750-fa3a-4132-b170-4f88d407f973 b27ceafc-9f43-4f73-8afa-56e25bf1ab48 4e818ad6-de0e-4858-9082-23f811c79eb8 f8559614-67e1-494e-97db-6310358d6692 d5932061-f957-4440-9c49-25d22f56391b dc8c5620-dcaa-43b3-afda-c62e31f6d4ed 1b335214-c063-48d1-83fa-b14dcf2de1c6 8f1fe1be-e41e-4111-ac5a-6cc92bf2d170 cd13b352-5e0b-4122-86c9-98b994a94b60 7c961452-d337-43fc-8ed8-3d3f9d4124cf e88172d0-3db3-4e81-8fb8-fc449e0be9c4 3b19005e-ccd0-4773-b7c1-eeab307778ec 736349b4-5345-49a1-b9b3-c11b48e6e631 5de8ce72-535d-4c93-a3e2-28beb6f78847 9b1ea0eb-eba9-46df-ba5f-79c4bb062ee8 f818e2f4-428e-4933-8170-59b3207eadb4 0205e2dd-6ce0-4645-bab9-10c2030cf9a3 6e795c6c-6bdd-43b3-8884-113a690e26c7 0b341d6f-fafc-469f-bc40-d0ccbef4ac91 e4e1e21c-351b-4359-91dc-b9b69c015df2 67e25adf-1796-4ab8-bafa-1cb3b3fd376c 3ee0a684-5e5c-414f-9bd7-0ee5916d08f5 44bd2b64-34df-4b98-b57b-11846e139704 893783d6-e592-4ae3-abdc-665f9f67bf08 84b0ef52-fb2b-468c-884c-35c293d6e141 55c3c0ff-bbc6-4723-8989-271f68e12939 fd390f69-b409-4c9e-89b1-b34990bd7f4f ec2cf2b1-6f40-4e90-a895-1309c462fc27 c140906f-0e43-473d-ba38-24b58a6300c7 f61a45cf-4641-4186-845a-61287fa7daa8 cb3cea2d-1374-4042-a715-13bd76e50524 60c11227-2119-4720-808b-0ee95ba43232 87df9208-1eab-44ba-a366-05cdf461411b 2d80ac7f-c23a-4878-9209-b8aa21fc1333 ec6c801c-575c-459a-95a6-c4074bca611f dacc0fa3-119d-4922-a013-dcb882efc1bf 4b437d7e-19c3-4a91-bd7a-e704238d644c 2658c230-4e77-4d07-98ab-d13ab16b6909 f1b8e436-239a-4f9f-92c0-21c723eda27a 5f949a4f-6275-4cd2-ae1d-903328370159 8b29409c-c465-4507-a8b2-ad080eac40b4 df37cc53-f429-49ad-a6a0-6d70b2238ffd 5edb421d-00aa-4cdd-b780-34a5f2b01208 c1f9ffff-d058-40fc-9531-0259bc784f9e 136dcc20-efb6-4762-809d-b4569240840e fb0859ac-7b6e-46d0-b77f-e37ff6afbb26 e1db5fc4-9984-4733-910f-f5cd5324913b 69085b2e-4e49-493c-a84a-ae9d6e76b1b3 25bb5bea-cee5-4eec-bc47-56356bda5286 2fa55dfe-02bf-4e97-a624-06aefb9d1eb7 167f0f10-a532-4d79-9b2f-460f595c896a c9936576-aafc-42dc-be47-7d462c28a74f 82ce8657-69ae-4c33-8513-ca0f3a1c7682 8b1a6387-4720-4968-baa2-983365ca7ef2 02340711-08c9-4aaf-a5d7-3df56c5cdcdf 70d67296-11d4-4fac-954b-6656aedbc8c7 7bc590cd-6ba5-4704-804e-344527d512c3 f3bd38c0-9505-420f-aef7-930e5e37fa29 d5e714db-f781-4951-bed4-4f2e35b9e3f6 a2be854f-f2b2-4b34-a494-e69ecda5cabb c2ad6519-69a5-4540-a801-86ee4620db4e d968fd5c-c8fc-4a37-a0c4-8725153ccdeb c334ebdd-7116-40de-815a-5309d1044c96 ef17b464-a74b-4a66-aeea-145a57a024ce 146a6680-e39e-46ec-ab97-5d4e7ff05944 71433f60-cdf0-4fe9-83cf-21b65a74425e 417b4852-d653-4108-87e2-d169ea5afc71 c38a567a-8f50-476f-8a8e-8c7f22479f32 3ac2bea4-aa56-4fc3-a499-c9f63d2634a3 b9e21ef4-69b3-4e1c-ac98-3e25b631c285 dc5b445f-2e66-4e56-8f4b-224b6c3a18eb f66f9365-cfe6-4c1f-aceb-7fde8c989f2e 96e47a99-a191-48e0-b469-6ef1b086d312 9be4e52d-f5c1-4d49-8118-32d091787253 04492ac7-887f-4d92-afa9-29428bea67b6 67b9c478-768d-40f6-83ce-21ab9e8ded68 c931845a-e453-4dbc-ac8e-6ab6fcdfb0b5 27ff9c9d-02cf-4b1d-bbe2-38c253409116 781f789e-2b8c-4d17-abb1-ec5290b7ac88 05ed1ca4-3099-426f-941b-160e3d72be24 67c92b09-779a-4d92-bc8f-f30cad731fe1 2d8d1dd1-d5af-470d-b55c-6a3358352fc7 cad8753b-1b32-40c2-893f-5e1f83e92f9a ccad34c4-82b4-4e6c-a86f-8bbb82f61b83 16b20b1c-b6e2-4896-aa7b-21f86cce9df1 119cf2d6-0cf0-4675-9868-f3ba2795a10f 9d0135bc-7137-46c8-9a0a-a1adcaef64b7 f3e9a71e-c949-4d1c-b4e8-29fe8886b578 862e61fd-1695-4208-adba-f27b60214645 b9ed367f-6137-4724-b088-58cc7914955e ac93ec7a-13fe-4a1c-9568-679686f95301 064f8b98-bc87-4bf3-833c-fd3408d5e9cd dc50245d-e484-4d9e-868a-23086896b2dc 2e836497-90fb-4f80-bd73-7103a3812c4d 0fc8ed05-93de-4c7d-b6c2-2c765f029da7 cf8a3db4-a7c7-4fae-a26b-f2d19bbb6daf 670a140c-a2fb-40d9-9b11-aab1893f2699 931fbac8-5634-4055-8d90-c9647d87b389 4731abc9-d766-4cd7-9361-ed4e09552196 db241b94-86b2-4c9e-8309-d76044af20dd 4978fdb1-38ab-4c17-9f7f-1819ac18ae46 a7af178e-c63b-4f2e-8b1c-4c2b00fbc1c7 ec3e2f87-6ee0-4a37-9912-762ad2b7cbb8 d047f655-a851-442c-8e56-0927d7851a67 2a1215da-130c-4115-a717-48f36acb9010 131fda33-1fb7-4755-a991-0403196a9b46 3ebd7cd8-d0cf-4b1a-abfa-607ce5cbccf9 6d8e6fb1-5951-4411-be77-9559d0d12059 4c77fd94-52c6-4381-8973-b6e657080f24 b38c3634-02c5-468f-9405-b1f63617b70b 892ae944-ad07-45ef-b9bd-a52280df356b a0a9b554-cbde-4763-9754-16477ac6bf68 8f7947e6-2975-439a-b96f-b26d4ed30384 e8ef73dd-0ffa-4142-8746-73beadfd3c4b ce441999-4ae1-49a2-b592-456f3116ed29 9e6bc96c-fbe3-4331-bf03-96529feeb673 5ab859a8-895c-4a95-abeb-300170f70af0 de35747b-5dc2-4ad2-ac94-98c222894f01 ee076efe-dea3-4ac0-8b10-4f119cee476d 1cf95e14-3f60-4541-ba14-5d712a6228d1 4a26df57-e461-43a7-855e-5f16938f54bb 215eadd3-a9bd-45e1-a693-bfc60cb65623 2cbc5536-cc73-439d-8e91-88ba984f747a 6ccc6267-1919-4d72-b277-51542f9b8f6e b1361956-21d9-4319-bafd-84176e42e03c ffac81b0-2b08-44b4-a2dc-ea53666ad25c 49ec277f-1494-4e1c-ab6c-9e57c67a86ad ec7c8793-75a3-4e0c-9501-a1addec1173a fdbb48cb-dbf3-4092-96bf-1dbb98591666 df4d5dc8-a86e-429e-9b1e-99a7c0e60904 a33d0509-7ddd-46b2-b230-ec607b791c77 4f603df0-1971-43a4-b3ff-12f4c65c4112 d3e9707e-1dff-4533-93da-76185e44b15d 47caa320-c2b8-4e8f-9431-1b437afeec0b de4f83ea-25ad-4efe-95cc-d2f17a8e4f6a d82c2afd-a5a0-46dc-b17a-f1096680f5b8 01e9ed6f-c389-4ae2-b4ba-ce7a7b9033b7 e463cf44-7601-414a-9038-640e97a55c27 549ab1ae-dfa9-4365-b914-f6a9a18dcc5b 5544d7a0-bd75-4bc4-a915-836048175764 3d4d2099-3757-4b3c-8f45-b6e9f220cdf3 a9e5de89-121a-477e-9bd0-98857c64de28 05237be3-4f4a-4364-b56e-41cb7ebccdf6 5f5e3545-434e-493d-80b6-2ddf43b0bae8 83e03f5e-f7ac-4cfb-bc35-a6d5a18c022e 39ec8769-1a94-4921-86a9-a96a1cd4b03b 304114e3-0bc4-49b8-8aa3-51be1511a1d9 1b4bffcb-5b15-421d-a3fa-72a563cf1096 edfd37b7-3719-4b05-8979-0a43877d567f c9afb6de-31e1-4e00-aa20-88dd64a20d05 e2bceb6a-539b-4bf9-97b4-b40f26286db0 844b51bb-17c7-4941-b559-eafbbf6a4f25 e155f397-cbf2-414e-92ee-8256b9c85f74 23b1762f-5b6d-41b8-b93f-c01d2040763c c0d1fbee-a6e5-4948-a2c2-4624dea3ddb3 35e7a3e7-5613-443b-8b0f-72e60516ac31 77b2961a-e847-41ef-81a0-88070e8ab044 d304d895-cfd3-41bd-bef3-69f83331e9cb 978ccc64-f464-407e-8712-e4021d52efaa cbb0bc7b-e5c3-47ba-98a5-b8b1fd2e58ad 8d3f67c2-1bb0-4cb9-a900-0333b10efc63 36ad1593-5648-4cc3-8170-d4ce6bf84bf4 34e36ca2-40d9-4058-bd8b-dfac7f812bc4 f9511ba0-4f08-48aa-8ba9-01df6cb99792 5ca16585-cba5-4cfa-93e9-87fd0972489b f5a916ad-c465-4d38-82f0-e4aadaff7b0d 8df85bf9-f9c4-4c9c-aa2a-5512ce4706bc 3e0ae3b9-63e4-468b-b57c-fea1a2a46edf 67003c7b-00ec-4e44-bb93-dbcb1a37e747 9113c630-43c9-4da3-972a-aa51b43afa58 51dffd1c-89c7-4e14-9112-b4e70414eca7 e576ad60-9da0-4471-a187-205701a1a94d 8657e2c9-d02b-462a-9e33-0b19bbbc5dbe a5603622-676b-402d-a9d5-529dd458a52c ab7a75bc-7bf3-4a05-9507-b34c7877d099 f7ea164b-3ff2-45da-9d8b-2c8b295d3edb c4e0bbcc-533c-432e-a353-f1ec96202d69 d2a9b84a-be5a-48d4-9400-467deaf6c882 2e7c230c-92e0-46f2-b68a-70bd7fe30aa0 3a48f415-ed2a-433f-b927-92645a419574 1634ab8c-08c9-4424-a4d0-fae37c1477a1 1788849f-20f1-4aa4-916b-aa6ad2296bb3 6749a70d-12f3-478b-9b88-1b7ba396ef99 202e8e3b-aaac-4340-872b-1b711f0104aa 69e02953-8cd4-4dd1-8472-c230ef076846 87c2c846-b3b9-4f1f-bdc7-e43c7fd2d8a5 cf627fa6-9cfc-46d8-b8ec-a23f58afee80 f6c9a2a6-df89-49ba-b562-ac96a2732da2 22b162b8-e0dd-44ee-aabe-2871d20494b2 9955cf1f-ff93-45b4-a997-f159335b7e99 c42f3040-2902-4bd9-ad90-955511b6c60a d0faa928-c55e-4940-becf-5a9afad528c3 6cf666e2-53b0-45cc-8ca2-d91db829b822 eccc443a-f36a-4812-8182-9b3282498bfa f8900503-c1fc-4ac0-bc2c-4d7a72db8ba2 a4d5b81b-007d-4eea-8cc8-80d7a12edc50 09ac9230-dc11-4576-ad41-94c10547ecb9 347d0ce1-6a19-44fb-91f2-0868cfcc6755 b75e2ff5-c943-479d-803a-8317c4ef513b 85822a77-5bea-41f8-bd0f-cda20ea7667d 2e8e91b6-6117-47b7-9802-bcca141e3cc1 c6c07477-f0b4-4b7c-aadd-b453900f3e0e aa5774ea-97f2-41e9-a336-baabe0a48817 b0ad677e-8b1b-4257-b8a2-fa548f8451e7 394c88af-14f5-4380-a109-55b223f96b94 6b50beab-3b28-43d9-8848-d4a5e1debecd e45dda02-0a8c-44a5-a914-0f46a317ad5e d222a48f-097d-46b4-902c-9c70a07ab622 9e714f71-c8b6-4af3-82dd-52a7759c1cb8 f6eddf43-d912-4801-a5fb-4d46f01cdb00 ef28f80f-34f4-4fb6-8015-7107886f51c7 37c430b3-100d-4179-9a08-29c212d26cbd 60a9e82d-e172-49c0-9419-345800b26c32 0aaec77e-ef52-481c-9e30-2ad1a4ffbe9e 3c054bf9-1bd0-4316-9cb5-664f6ccb173a 321b4fa4-8cff-473f-9311-e604726a8768 3660bdbc-2008-4550-97f8-36e177a68519 27f83f7c-03b2-42b4-a6ec-af8683232415 6de0a74f-a976-49d4-8a13-074b90f51ee6 e9e3ce4d-3c4c-4c84-9f02-2a66b43b670d f42d71fc-ca7e-443a-b28c-d2155ac1080f d26c41ae-4014-46ed-848d-88e75c36bdf7 dc83376d-6485-4f0d-8840-751a24a99050 0e96cbd5-07a6-4bbd-8615-670746b4d570 186a3fbd-c463-4033-a357-b9dc9b6f5a9f 162b6fa3-36ad-4278-8dc9-2028ce61bc34 5b3ad103-0e89-4517-b181-32b2fd2db090 e8909958-b4b4-4568-a8a9-01cb27609acc c897b57e-359d-4bf4-b36b-8d5a5c5f2325 99ad71ca-fbd8-4bae-90dc-d0824f038085 6885f72c-af5a-4724-816f-f63e4244e0a9 87f61fed-bb7c-42fe-9ad3-1b5a039df9e8 ea27103e-80be-4a48-b832-22b4f53fb379 b904369e-ee36-4397-8f29-4b1b687e7638 76b5f77e-b168-4a0b-b3bf-707f747a7206 c9c3e851-d663-41ca-abe9-46da1f1e47f3 dc5baeb6-0ffa-4122-8bf5-2b00dafa5952 077abb92-60dc-486c-8c6c-629027334317 7db0b2dc-1cd3-484c-ad06-0729a73a61a1 38f27390-379b-4d5f-8429-6b79bb66d647 323d5bd0-8b06-4d82-a03d-b23673912079 59901adc-ad33-49e0-abcb-fc170ee1a22e fbf8dd62-c71b-4146-9f76-4a434495911e 10ce44e0-4cb6-460d-a852-94ae8a4230c8 66385bc3-ce85-4c5b-8b3f-f41a95ffabfd c391658c-9ff4-4f9c-a5f8-4a181065734f 72dae7e6-2697-418d-b5d2-1242186c1553 82147810-8bcb-4ab1-9bbf-50acdd744fde 05c842b4-07eb-4fd2-8c89-b3ed0efb97bd 2058ea8a-b477-4ca0-96ab-fa893c7ae41d ac32275c-8d32-4eab-a2c2-9f3f11ca5543 bd8c788d-29b3-4026-b087-6cbb5837ae2a 25a3005d-7a53-46eb-8697-05c9a3cbb222 91eb7022-ccba-40c5-ab9c-fefbb6468909 cb2439a5-9faa-46fe-b946-c21a7460cee6 ff8f5e9d-4c84-463f-9a28-bbb0329c488c 107220c8-53dd-44b7-8a8d-a019070a8c4f 0a8fc344-9260-49b0-92b1-2dc271e175ed 68089302-d865-42d0-97c4-cd2a5c7f7c4e d69d6651-725f-4385-ba9a-7c3a938dba8e f905164f-a422-4e84-9d8f-34c379350258 baec3031-657a-4e49-b209-7952457797da 52dec233-8c58-4120-9a14-de50bfa220f6 af6faa34-1de3-44da-9b4b-1e9ed51217f1 16a702e3-fea3-498a-a730-9b1fcd3eb2ce f9d59742-2580-458c-a38d-4c078c6440e5 1b2b1667-29af-473e-a207-06dee81a8df7 19ce24a5-7a8b-40f5-bc7c-980ea19e5c4c 0c832b97-4e55-43cd-bd32-ecc0a3459e71 1a3e43d3-b8c7-4972-8a6e-c2ee29867b96 0e4cbe21-841a-4b46-872f-5a694b05e874 f38812f7-5c3c-4af9-a39e-f35697b5770c a7f1fc98-a90c-48ce-9767-71dd662ffe24 e0f85d27-798b-4ed1-8696-371173ec81dd f8c6c7c6-0315-428c-a9c9-eab60be00d88 615c3b89-2c92-4325-b49f-29ce6e21b2e6 44eb3d17-6c89-41bf-aa57-db0b36c30e65 ff018d28-0d57-4f37-b387-2c1c914777b6 2673fb61-06f0-4d56-80d0-fe55a044bd7a a479e2f4-cebc-428d-bcbf-1b36e58f45de b084b9bb-a6e8-4431-b871-b15bf21240f8 68bf9050-d04f-4155-9bfd-f3a1c30ab749 ee170f3b-b867-4a0b-9111-1c3bcbaa4ad6 176a4567-cb12-40db-a56a-d6b9cc15a17b 19d79477-b3b0-4331-ac3e-83c9dfaba385 33e1e1f7-4dc5-47ab-af22-ab393fc9a476 bae5b7ef-f9c5-476f-b4a2-4e406487afe9 b9c203bd-dd01-405b-9be9-5c02bb4ee406 407f9ae4-4f1a-4719-95c3-33208b945d3c 67566095-e239-4610-a7ca-0c2d1d97340d ff040cf2-5361-4641-b742-0465b757c019 da4597c7-8777-4d8d-a532-e580d384c87f f54ecc15-5a8c-47ef-86be-db6c96c78d9e 27c4775e-60f3-482a-8406-1ec6fce341d7 e11017dc-24de-4896-a299-1837e58ca175 7c576a4d-bae6-4cbd-a589-8283a581bfe2 12865ffc-79ca-42ca-a6eb-2a0033311c0d b87121f3-4033-4207-ac8c-53119b76c1f0 20a35253-f17c-447b-9b97-8add6ee64966 268ae818-1561-4645-bc2f-bc341d90a076 4a490480-a773-4096-9b46-3a58b66b6375 6eabfc62-acc6-40fd-996d-b68ef3a47c85 a213c579-6918-47e6-8ed6-8188c01d9ead bfad9030-9a46-4742-8fbd-04965665e723 58ce5518-7e0b-4c4b-ac1c-b11f523e09cc bea22263-8dc9-4ab2-9b1b-e322c1eb8f16 5a638959-9e51-44d0-92aa-e7de367b5b9d 167cce54-46ff-4ec5-92ea-a50fd0fc629f 93a1d7c4-77a1-4274-bdbf-5ab33111fb94 f61605a9-af4f-4f63-9a45-ea49b7ced69b 8c56afd2-9cdb-4ecc-9832-bcf98114a5ee 261c6d93-9e5a-45b5-944c-7af2bbc10fad 0e2a923a-5c75-48d7-afc4-33e996854514 7dc14b33-7417-426b-84fd-8fd30e0adbf2 36a96b0f-fe7f-4c4f-931a-e54ed30aad60 24fcb177-dd8f-440e-b2be-104a298a1e84 e48a6988-8bc5-4a59-81d9-7f935a142fe3 6f4f3880-d104-4236-bffd-03d2565dfeed 8f7c733d-ee3b-495d-bd21-cb55281adff1 97965659-0dac-460b-8120-2bc2e6a34af5 5188a86b-26fa-42de-a318-483a02fe1a1c 5a32f443-7963-470f-9d98-346326ff4e39 893b87a0-73bc-4c8a-b700-9641778bf167 cf070c09-1c3c-4b10-aeec-b964ecd1c045 d145869d-ba7d-4259-9f49-520472acd308 be4e8b81-ed2a-4b29-ba51-ec13724da1d1 9ee543f0-a7b9-4998-a333-dce808c1c2cf ac5a0907-5d6c-45a6-8ca5-f9ea21482d09 3a013946-6013-4bce-8dc1-be1be5525fee 20bb3a48-d9f7-49c4-ae72-e421c99a1f0d 9ea8553b-fd22-45f8-83b6-eab6ad959ceb 38ca009c-f1fc-46b4-9b9c-035607bb1d51 747b33e5-79fd-4eab-9f03-d42579054fab 83685c9c-c419-4f6d-a879-47c509ea4f22 17ba2b8a-e6d9-4848-aff3-f478eb90d7f0 76f72249-3e63-4cdd-bddf-f2c4f3271cec 655fce82-aaeb-405a-b7b9-8f458f6e45da 74655f01-6575-402c-b6c1-4d651a37e263 72a87d49-5b8e-49c1-a9d9-8364b9fb754c d441ce51-af49-4d1f-a32b-9735c0c8c673 4b5d68a3-146d-4f6b-a4a1-ad29bdd6a1a1 af53f714-0dad-44bc-8a8d-b7af9d42c4e9 1ea8f5a1-54b3-4786-9915-15781f29b30d b6d2672f-225d-43e4-95fb-da5269c09330 effc30b4-2f3d-4256-8dfa-457f7401a94c 5ae07aba-22a0-49ae-ae0c-f2b6053c79ef ed244513-e447-4e8a-8ba1-9fdba87bfab6 53d3a07e-65f8-46e0-b2b6-f797f3ab5a4e e2f344a2-50a7-4557-981a-097104d80310 5e493faf-e7ea-4607-b8c8-49a4d55a515d b74e25f7-f47b-4735-811d-49d468abfcb2 1b45a692-067e-45bc-a6ae-e81648c34387 b956bcfa-be98-4a81-8460-2bf721c627fa 657f381f-7dff-491f-8ba6-91e3b5aaf3b7 a06f20f8-368a-40ab-8919-9fa998d51170 cd4ded6d-857c-44b8-a364-0882cb3843bf a2304779-3421-4d4c-9e56-e4522cd30e19 5bd21059-3d7b-4d11-ab18-ffb3a3c6140d 9a20c952-8234-472d-962a-58ff1605be42 2f312d0c-b97d-4ae6-9987-fac5d15a9f70 651f4ceb-9a91-422c-a06e-19980a95e88a 0e736a71-7cca-4571-b559-d4b6d638310c 42b92229-ec8b-47bd-86e1-8007ff4c46b1 bbdb3727-2b2f-4cf1-be1a-1ea9617f8f37 8e8921b0-d4c8-47bf-9e54-f2c84dbafc9c eae640e4-01b5-4b04-ab23-e876071ff6d9 9523f254-aeaf-47ba-b9c0-6215c9170135 a6c20b4a-45b1-4729-ad88-6da3e56735a2 2bcc8d39-b58d-4df9-a22d-7534cdbe2f30 97640e67-6ea0-4db0-9eee-9ece61db1644 578c26d2-921b-4f79-b1d1-caa01a43dd76 6bb6fe65-d5a0-408a-8b9e-1c20252a6bd2 44c1d0dc-8cd2-4050-807d-6b1fb4aa729c 15ed6a34-8f4f-42cd-b36d-ea2e590a12bb 7c8b7bf3-ef21-4437-a215-1175c98e7d54 5167ef14-e165-4fbd-afd6-2cfc351a68c7 61fcf270-dd9c-4711-a44c-797aca7d887a d0385ac2-7387-442e-a401-99792ebb86af e92c5ae6-1b20-48b2-97c1-bb35c0998e86 7784c1f5-3234-4d91-b1f8-f6038bd5c650 72e1c141-acf8-43d4-8c63-a15ed85ab8e0 4de6bfe0-5b96-446a-b826-bc10a8d05c59 76004556-5416-4605-807b-7cbc69339863 16bc119e-19be-46c1-91cd-d0d3b924966d b49003fe-1621-4212-a5c8-160e461f6641 54cd31fa-9a6e-4022-9eb0-2a00848c6fe8 bdf9bd43-c94e-495c-88cc-6483881cc2e8 269f29bb-3fbf-4a5b-a9f5-d7b273bafd8f 92dd9823-e83a-4066-b6e6-202b6ebe82c0 79c4e2d7-0653-47e0-9e54-fa59b8024a04 6d6ca5e3-2123-4f5a-9d91-f32cbb4f268b 431327a0-b132-4b02-badd-de8511b70864 b10c47bf-eb43-47a7-87c3-0ce5ad3bf909 f703c2c8-9854-4340-b6ce-3bf078f1c755 c97e2a07-07f7-447f-9ddb-fa6bddab5360 65de9978-37cb-4c3f-bf3a-e7b55d58200a cb3f6b00-812a-4d78-b36b-4a3720812e03 6204b0be-a00d-412f-8dba-dac84fcdf108 adb1d77e-f664-4cac-a1ee-360761b72958 9b4a70f6-28fb-406d-8615-881c7908d988 35694570-f410-4e2d-bb68-256b986e1bd9 009766fe-37a0-44cb-86e0-f60ee16a2de6 c1f08a92-ea2d-4c0e-8aa8-1f637b3c799e 7422e99f-8765-41e9-b000-77b44ec70fb3 7ae7c1a3-1920-4ade-9534-4bf4981ab34d b1d05415-40ba-4355-8c4b-ad9a147e707a 0e4e4216-b165-427e-8ddb-fcf4b3aa318a d90e8bb9-d1ac-46b1-b47c-f360e8fe97d3 44a2457e-670b-45a0-b498-22d7f2b1366f d3c4200a-50fc-4b69-8256-f04986ace33f 2dcaa98c-90ab-46af-ae4e-0ea921a8c96a 28c0d376-897c-4da2-8bda-4068602cc7af d0864a1c-9d66-4156-81e4-8dc1a6c29d36 b4a11d3b-8307-4661-a628-cc3372ff0f26 4aa6f8b5-a26b-4146-8c18-d172b8c5fa2e 6924976c-cedb-4ec5-a975-12ed7ed58e87 8f1f9974-fa94-4ae3-a120-b4049eae51ed 371d8652-bd97-4e0a-98f5-01b982a9591d c850b86f-8ce3-42b9-b265-86573ea650fc aef305cd-ca99-4976-b53c-966a6422fec3 2176ee58-3d09-4d65-a7b8-00b5b3e9d53c 42ae5962-d0db-48b3-b914-a95b93464cdf 93ef19a3-70f6-4cc1-a54a-3810b57de7c9 02986051-b9e8-47f8-834b-5631ebd974f4 2d29ab5a-b609-4628-8890-269329882f88 be16bc87-0ace-4aa1-aa25-f6a731feb01a 3a89414e-fabf-4872-9b33-8b183a5a710a 49d32bb6-b666-4160-96d4-b53c3803ab73 9059657c-467a-49ce-b252-b7a94a56c047 053b618b-cd13-4578-9ade-01f5c16ac2df 64ec5caf-d9b2-46ef-bc81-cbf418fd7416 da953e1a-63be-4949-9bdd-73cf85760399 757f8172-054b-4dcb-8f8d-c746da2df22a 54d397f7-277d-4141-9747-d5b523c901d2 08b8beaa-aa1c-4c78-b9e7-08b8628e512f 2478e2fb-b567-40b7-9585-eddcf31248fa f84d7aa3-13b2-41a4-82e5-f47b9447dd50 fe60ec97-fb4d-478b-ad59-9857deaa91f3 ac53852b-0423-4a32-9524-bceab5ebaa3d 9a9ae572-d94a-4d57-a29d-4eb2761f2baa dc1010f3-4d98-42e7-95c7-7eb267524e1e ac18f86e-92ed-41ed-a390-23c489f7cb30 355833f0-de08-4649-ab6a-81cd125e4064 3a646e57-7957-4055-bf72-1f02422c4432 d3969d85-ad21-4c66-86ab-a5a55b1f5ebe 87b3f460-6dd3-4026-b082-a3de6332520f 58d7f22a-4912-44ee-9692-135fa9ce9bfc 5dd09603-1ff4-44be-b84e-7fe52887d32a fa29356e-6949-44a0-a71f-a7710ee5cfbc ccb9f988-1ae3-4dd2-845b-3d7668c0f54d 4ef7ba4b-cbd8-4136-8779-4801ecbe4a5e 12c5fe6f-8aa2-4b05-9aab-aeaf4f9d6268 e15bf7f4-2816-4096-92da-de9673b57da8 bd93d7d0-98fa-423a-a2e2-869b4bb139d1 13dfe598-6349-4abe-b2a0-14d8e231cf60 eabc1d36-deb3-444f-879e-0c87a148e950 47525539-6838-4514-a3b0-7076667acef8 cc6f2128-d39b-4e30-9f21-3f89d2a1d481 ad41f735-ebad-4a07-84d4-1c28990b1c0d d41aaa2c-3348-41e4-af77-d661500d4990 fd4fc57e-7376-4c0a-968e-c30e5e98eea3 442dc209-ff03-401b-80a4-2d8f0c85d03a f7ec2729-168a-469e-9ab3-dc2805e323eb 948c7a4d-aecd-47e9-8063-0b144bd0b296 72584092-d3c4-492b-945a-d23f134b4dcf 244227c6-6414-4998-b83f-af665ee88fea ca8dda06-26a4-4a0f-973f-6b6cd90b17a7 407fb9d3-b373-4adf-b936-35b69d1cb633 f541c49d-10b1-4f54-aebf-7d241b213471 f40d787d-2c8e-490f-8abf-026903a78823 dd62039c-7a41-44ed-a47a-691da4a06ae7 ddf93ba6-7d53-4033-8e8a-63c84cee7c6a ab10ee41-7a47-4ea5-8f9f-121e5ab3a544 92c8941a-ba2a-41b9-8535-07af2dc0745c 68f8a1bb-3155-46df-aad0-f31bb8867aee 8396668a-3927-4b3c-905c-5ea7728002d8 51a2f03f-ca55-486e-9fc2-fef0e12ef375 ae1b6f53-559c-4911-acc5-d6fd7f69fdfc e5ec015b-0cf3-4f4d-9acc-deb82624b03f d696bb5d-d4af-437e-b7ee-5542cc2b1380 c4d7f1dd-bf49-444a-bafb-56e0a8c8fd9f 83e077d0-6106-45ce-acb9-c4a193f38a6d b0cb87e3-6ccb-47c7-b569-7649c8738b58 18616d98-84ea-4bfd-9b76-e22aadbeb013 50a89004-347c-40b5-91d0-28033480ceff a8da2c29-56ef-4983-a83c-5e4bc2fce1f2 904855a4-eea1-4de5-bc3f-4d8415228aa6 e91ef10d-9aeb-4edf-9e3c-c0dec1a4875e 04450fa3-9ef9-4350-a666-4bfd99f5cc9a bf49bcd4-4616-4dc3-861b-be27cdd907da cb888330-12da-4349-b1f1-4a39dea37341 a87f7066-b1cd-4857-a7cb-d4148c39e099 6d46a18f-e722-4961-83fe-88731d36164a fca30d5c-53e8-494c-99c6-db22b33fbee4 7852df9a-8590-4869-b452-de266b78e34d 8cf5578f-80e4-45c8-8879-65db5b3c1d4b dfc6724b-0123-480a-a1d0-6f2b92f7e013 e4b006f6-2cf9-4427-a6e4-ea1371edf836 f4f450ba-24b7-4301-acb9-d92e3f0dda67 dcfa092b-8e36-4efc-a5ea-ac0d5f0d704a 4b1b4a90-2df8-4041-8e39-082fb4875936 92ab1628-551c-4a12-9ae1-a9bd74b8ddcb 9dd66533-291f-4db5-93c8-f77377ab3d3f 05516f4f-1ce0-4cfb-84b4-22d5e2bb8e0c bdc390c6-1f3d-4a95-a563-4cdb57025ac6 c9c568c8-e076-4f60-89f2-4237aa6c2872 d6a52c4c-4aea-43f5-b866-772635ae42be 86986a23-d466-44ae-9e13-8534e9cd3254 13639f98-750a-420d-a325-319e067565b8 4c6c4d10-229d-4ff2-b24b-5640f4eaed0f eb58fc50-5859-44ea-89ca-97f7da139498 73c57396-d7de-4916-8a3f-40c7f5c5cfb7 ad3e4f78-4d3e-485a-8cbd-6e43d5def904 4e5782f7-56e2-43ac-b0e6-e9343049e7aa 05659499-05ba-4c8d-83b3-e0e54f16808d 9f05718b-bef8-474f-89a6-38896fddd512 bf3062e0-a3ba-4791-9762-41bce173e814 42cc1470-0da0-49ec-81be-dd4268bc2176 eded81e3-a4b5-4346-b3d5-6cd507a1d485 809332fb-8ce3-4717-9f0a-e97cee11266f b53af4c3-52f2-4827-990b-8211bb42774a 77c5dc48-3c15-4444-9bf8-0426a5f09afe 184bd7fe-99f1-42a5-8c79-a2496504f855 6c681f9a-0d6d-4cc7-8a10-d6da6c869131 7cfb8249-085f-4919-a8f8-c2d4eba9447d 68c0e534-058c-4395-8709-c1c3eb23554d ab402778-1320-4ba5-a29f-a23c1ba60bf0 4ea1a861-440f-4e95-9bb6-b900d3f4093d 17b81cc4-690d-400a-8c4c-4de382c97b01 8a465e25-1b2d-4ab4-80d7-e770ea9049bf 39f7c245-38b2-4572-9d1e-5dc1f6fd69c7 e7ecdfb9-5dba-4fee-9c44-a6619f05a6a0 8ec82f56-7b0b-445a-97f3-3537b0c8aa0c 9495792b-3a5a-41a7-9eac-17e7d32308f1 4452c48e-05c7-46c7-90d5-209111030640 234d853b-9d3b-43ee-96b9-b28f9617e7ad 55bd29e4-526d-4c86-bc4b-c3ebb756cc7f 1f3a04df-a681-4e30-b453-9d28f1501b1a 3c1bfe3e-865f-418a-8634-cf065c3b4004 82d7f87b-1db9-4cc6-a606-c93d77e73378 4b2b09e6-5096-4b1d-aa5b-2d67776e71bc 284a4d80-5d33-43c1-8204-90ba88243854 f732ebd8-6e90-442a-bc50-2a54037ea777 9f15a0d8-9f5a-4052-8933-8db35631cf2e 2795e0d0-864b-4e32-86d8-49153690a735 ca4ba97b-9233-4500-9a2c-9206a4de1340 57c9fa1b-e380-42d7-b0c1-978350d1ab08 88587660-f81d-4311-8cef-f3badce636f6 e7cf9bcb-cbf5-43b6-86bd-67bf74b2cb20 5cef17b7-d04a-4e21-9024-3adfb0d19523 609333ea-3679-4d1c-88ae-92d5aa1d849e 54d2213b-369c-4af2-a009-b61be0ef2eea d9dc754f-ba70-49e1-8443-ef6b44d3652e 1c1210f1-cd7c-4e69-9611-b0763c1e3157 1ff0e412-207a-4785-8077-9a2475ef6978 206ce3d7-05b8-4859-bc6f-81331733f13b 9ad94499-956d-4ed6-9d5d-1581e6a47fa0 fb149eb4-46b2-4412-81b1-d091b0f86a31 d0417651-4f69-4b41-bf60-363ec176477b 76f0ca5d-f680-4dc3-824d-04f84d686355 1ac1f12a-75a2-4014-9e9a-472845014e02 cc68edbc-8951-41ce-856e-46a5c8c68887 2ee3a7d1-34b5-44ec-a01b-9a6ed31969c0 f74b3032-67e9-4b0a-b8ed-96a2877426e0 bdca9c2e-dce5-46fd-8d7f-245b4865782b 4d043f3d-72c0-4195-9ea8-6189114655bf 5065f20f-0893-44d2-a4ff-1c24d3a44f32 2be93fee-0dc5-4631-88f5-797c2205f2ab d949f9eb-1559-4c10-bfcb-00f31b96f0c2 12e58a97-180e-4258-a637-131114217a21 3c55fd40-3adf-4ec9-ace5-e2690ffc8ca2 af52675e-b77d-4701-8cc3-446c36b5cf38 e6ac9364-c539-4704-8024-90fcb8ff69aa f6f3b4db-d03a-4cd2-82ff-4d10b1ffb293 d3021fd4-7804-409c-8118-fd8e0631d172 8353f6cb-6c84-493b-86d1-7acdbd36f0ad 5c334aef-f0d8-48de-a777-94535711f3f7 87372f81-4b70-42cd-9522-013bd8a23739 dd18d87d-5923-461f-8c63-b88b587f97a1 249d6be1-56c2-4af8-bdb7-3935c49edcbe e2ad16ea-f3f9-466d-9e9d-62ce58d6f7f8 b5446da0-3d37-4268-889c-2fe0f3b72f43 bad7e1e0-51bf-4afe-8165-5148b1beca39 eff281b6-6ed6-4a33-8907-86efbc49fd3d 16147aae-509b-4be8-80c6-3cda968fb263 e2fbb51c-9999-4ce7-a9b7-46a005b57ea9 33d572f8-3224-40d5-b151-5630f0f89e2a 9d4b688f-460b-4f8a-a61c-9ad75ea9de88 037a554b-cb09-4f7f-a503-5b8d2e5493bf 8440200c-fbc9-4b04-84e6-aa91bc3b9ff9 be4ba0f4-8eaf-4417-aef6-7b57c5184396 2caa2de1-fa68-4739-96bd-efe51b8cdb6b d32acaab-1ac1-4fc2-9c0e-648c2ffb18cd 55d28419-6008-43d7-87bd-86e457f41e3b 86b30919-6fc5-4dc5-9c01-4b4820a9c565 c95c3299-b878-4428-8f53-0eeafd327664 185df8c8-0982-4d51-a534-c77e35d5e25b 5738fe72-07d8-4336-a6e5-a1e2389d7391 653f7acc-953e-41b7-9a56-6691cdc0a912 2128c028-1ff7-425f-8cd8-0b1e6e63536b fbd3891a-d6db-42f8-9015-77877462229c eb145974-cf83-4532-a833-1a4db645797d af534e96-d620-40e2-9a21-635f0a11108d 36dc21ca-5af5-4781-aaac-e7e2d35b7f5a ea5a8aad-7266-43a4-a085-323e6fd8acff 9d62ce6d-ae5c-4b3c-a6aa-3093b165f79e 2c87dab2-6519-4506-a4fb-06dc3d468e29 94d28770-fb30-4ad1-9a7e-7dc6be76a1bf 356c25f2-ea1d-4325-a3b1-9e1c790ba211 be625184-6d42-4298-a30e-b02f4b791f42 1eda765b-2d8e-4387-b678-cf78386d5a31 28f1d685-33d0-485f-8792-6a941fec2e4c b634bb1e-8315-4f21-8d0d-80ad9f635ca4 4b8d76e9-9e1b-49a7-b0fa-6857a4001c3f 5d015019-0d15-49cd-ac9e-e7b0215b8175 326d6a61-70a9-466f-8848-42b5da04b330 93f3823f-2d54-482e-833d-2eefb007e96e 917f3697-fe9a-4817-a7f1-633be8ee53d9 fb467a71-1ae6-4fec-8682-0e6c67ffb815 3fa76789-2665-47c7-9c03-28be885ff66f faf18b5a-c335-40e6-848b-cc06d6d58f43 39ff262e-8d81-4026-a15d-02a5c069cd14 f0d791f2-6dd6-471a-93b2-1cefaeb05336 f3385b78-25a0-4baf-a4bd-11b8a00a4c3d 5ff70233-701b-4077-b272-3fed34c06b75 1174ad4c-0e57-4ec8-b3a1-b6db3b0c0b9a 78fe78f4-e231-4768-ac70-e9d1d662316c f8c62877-b890-4961-8454-62d942ae6231 e61abe09-b08f-48b3-aebd-ec94e9870023 b827b772-c286-4ef1-8897-7816ef8a9c60 17993e29-5169-4ef9-a720-8f1540eb8206 b5c64a27-17ac-49a2-bc07-4f249412b5a2 29a8c019-04e4-4c15-bf67-48b6a573f980 2715403a-7216-4795-b76f-6583aebdacee b653d5cb-9475-444d-accc-ab86f9694a77 404cca5e-6389-4c8d-9e09-1a1789126ede 7ab286f2-d199-435f-b88f-3a006a6fb2ce 4ff556cf-5203-4c93-acc7-debdb915cc6f 95fb2298-cde2-4531-a32d-cb4dacf6a042 bc5ad8d0-71bb-4f67-a8f0-6efde566c59e eef4403f-5745-44ab-b473-ae2a0dba59ad 1d70bbe9-b4c6-4ae8-bef0-e3fb56d5ad85 3d44b314-6a5f-46be-9548-49be4c7537b6 00fdc856-1e48-41c7-acf4-c321d68738c4 c61e15dc-9f19-4374-8586-6462fbb95398 eea198db-64e9-4469-9342-ef52e5e960ee 1c9d687b-41a4-42bb-a200-0fb2dee68c89 e6f45d4f-f0e0-4e9d-ac65-af1b0dfb3dd0 31eb00da-1013-4a99-8853-cb66651df794 7f1d9dc0-09ec-43f7-93e9-f81f9c9128e3 6103c4bc-52cc-4d74-9ca4-58fbfb2663bf 0711e27d-424e-4f83-9fe5-d994abee3bf2 05fc1bda-28c4-4e91-8d08-1a3b97f3b6f0 cbddf7ae-ade9-4316-8234-14ef4deb5119 0d277a21-d9bd-45c3-9e26-11fb7ba06eec df414dcb-a849-4c48-b71b-b22f2900a2b1 3d76499b-2dd0-47dc-b84e-c72d6e2098ff 743b9017-e931-433a-9808-2400af22473d 56084a27-db15-45b8-bf55-48533fe0a74a 1b854f3d-2e97-446f-9b08-5ffd1d69ab06 3fb2def5-58c7-45f9-b198-c212e33b1d65 d21fccc5-d5e5-4576-8e5a-9d59ad7c79a9 b414c287-640f-412e-99c1-2df8b3f43456 01cf62ca-57c8-496e-ad8c-258fa8aa8a4c 7134c27a-e5ce-477c-97bb-a36d5d49dcd7 63646c7b-6378-4a3a-b3bb-327b78a6cceb 1318430f-bb68-4d6a-9a6c-bc9c4ba0e919 6adb67fb-2fb9-4f86-9b33-962c03e47cef 5b850dd2-709c-4e14-88de-c988b28f3d4b 15ff94a9-27b3-4c1b-ac72-4017067e9c67 740c2ba4-40da-4acb-8e5e-4f6d19336870 d639c51c-2c2b-4cbf-b7ec-1f1dce47263b 623da959-ceaa-4fcd-b0b2-31002b107c63 8164006d-a5ef-4f61-9621-3eb693a0d0d2 9b139ebd-797f-4c5a-8bf2-c502eea25fdc 8ab2ad86-8938-46fd-bafc-6746d557172f da495de3-5f44-4fa2-8aac-8c2fac2362de 0a70fed1-30ff-4c39-9578-05b05e50a331 955128e6-dc11-4d21-8aea-fc42de7c74d7 5fac27c8-8f63-478e-8ec1-5d331b561739 9ad42f97-4f66-49ec-9c9c-e14cb292d111 83a61e6e-0ee3-419b-b6e9-ceffcfb17e8b fde85b7f-76c8-4d3b-92c9-023fc7115dcc 1a07d9cc-a5c7-4e0d-a632-6f05f6e061e0 91db8866-a397-4dc2-959f-8f46b6ac9fd2 663eb404-5f82-4ecf-971e-aac1e8c4b4a1 837ec7d1-7a86-4f25-a924-9088424caeb6 840def6a-1c5b-4721-8e78-19e05bb31370 11ff1e5b-0738-403d-afd7-b7b6467cb0ab fed30e17-67aa-4e2b-b70b-260d219f4cc4 5429cffe-5fcf-46b0-810b-9717f96957ca ca45a3ac-3859-498f-823f-33a8686b64da f38bac7d-679b-4c48-a078-f3c5b413c662 5d6a6cb4-fc44-4ef2-842c-4a131646c616 2c3549fa-2d84-4c4b-b5ee-24d07c627f35 15cee986-0882-40f1-af86-21b5428d8890 3d92ea3c-4bf7-4bef-8283-8afa85a70c83 f7818075-916e-454e-beea-67c9e9538823 d41c1784-6aeb-47d4-8e38-d2f26e9c38f4 67bfbfc7-b5dc-470a-b15d-48f750502ab2 bc585e30-c477-4fe3-ab21-9e0747494841 36d11fd7-5ece-4184-b622-87a77247ca88 ba3fc4b0-a97b-42ab-a7a2-36d06620109a 5b5616d5-f202-4c06-92ca-542aad6d3ed2 b56e7aa9-44e6-4dae-befc-96888d071a5a be5fcbdf-a0df-408a-86ff-5c245498b36a 03251fca-8d06-445a-a9d6-66fc2052f3a8 6390a70d-5f7e-426e-b0b9-92e55d684075 2b6fb5f3-7319-49f9-a442-af7dbff8570b d7d9eaf7-7ecf-437e-b92d-38598fb429b1 f57d65d7-34e8-4705-9f21-d68cd7b0709d 88d68571-e566-4cbe-9965-c9a009b99732 1890b105-9fb3-4fec-a1f4-bc0e125a88bb f49aab8f-49a8-4ac8-8aeb-c3be58025c73 bcb12bae-d976-455c-9117-8e21a6a70d8a 09a86697-01bd-40e6-9613-16378ecfbcff ecda0d95-9b29-41ef-8e3c-d3a9982e093b cca5242b-fe38-4e57-9c46-f5e569abab1d b057ee52-83da-4cba-b3e6-d612f0daa326 7c8a87a0-befb-4271-be5c-a089fbd625ea 83ee68a1-e512-476c-b170-8fb009441fea ef23c53d-af1a-4639-a4e1-a70d9616189f 336480b8-91a4-458d-8631-1db3029f840f f0969ec0-fddf-46aa-80cb-44ec0eb3dec2 0c4717c5-a749-4ad5-9aa7-209758b87c55 84563eac-c8ef-4b30-9d03-69dde5b2fdf1 52051fae-6910-470d-8b35-7a5e317bde3f 665c428f-255d-4215-927c-1ee599d65ffb df948362-b9e4-4881-ace2-30a8171148c9 058e54fa-6525-4492-ba49-6dfad1aead24 b4f12f31-b326-4e46-b25a-725ff9429e31 b3e116ee-2412-4f9a-b63b-a31d77297d62 6ff02ddb-bf73-43c0-9a47-800b78bf2592 48cf6417-f6c2-4255-89ae-66727791dcbd e55e9a29-8a36-44fc-80fe-d602f268a5f0 0440b308-b223-4231-ba53-5b809916bcd8 dd5cb702-aa9f-473d-b0f8-314c86c6121d 2e70da28-a093-4fce-980f-9f01da30ed22 5a090db4-5210-4325-9e5f-8b51db966df3 174089b0-2a3d-4c31-95a1-ac37544dd72a f006f8ff-c588-4ee4-abbd-7fdb456a6c4a 3a80560b-a226-459c-9597-48d76d7af3a1 9851ff99-3251-44d5-a266-fc57c53a0f0e db5a42e6-f9ae-436a-a220-75d6274acbf2 21dc4042-ae8d-49ee-8177-d4b57ec03417 2483f94d-432d-40c8-bcae-b138c5c8420e 681d000d-7e23-4af7-9025-aec45813aed5 e352fb32-591a-42b4-9b3b-5bb0b0a71cf2 c983b7ca-3bad-4c74-a613-e7a82324794a 0df3237f-9dd2-46e2-8f48-551db1801f6b fb22e86d-9553-4f39-abb3-bd7debff73a6 210912c4-0d11-4e92-86b3-4d03202ae208 1b6770fe-ea2e-4216-9f22-112d7cc2d0c2 59a70b50-6403-46f0-b4ec-a15c0fa94032 ac783e55-bdc5-4b36-9437-121e04503148 750c2110-d876-4b61-a1a7-6f9779917612 e99ae58b-72af-4fa0-9a7c-e47467ac0fba 8b846f64-899c-4955-90a9-05039552f196 fecdd4f0-a1d3-4573-a6ff-9192b716dba9 40bb8790-567c-4ba4-b12f-d85993046a13 d4412d2d-937a-4319-bc87-f9a31f26cadd 1463bef1-125e-454a-a3a5-c028fd345cba 3c1cff64-c399-40ab-81fe-571d502d8879 e25b2ac3-32e3-4ede-b985-460139ead9c0 edca7cdb-bf71-4a54-b296-44b688bb4e4b 311d3ae1-9666-47f7-bacc-c4976c938828 2a291dab-2c9d-4da6-9956-355abce14ab3 a9d96ab6-4f6f-4b15-b997-880476190e98 7313ae9e-f41d-4199-b383-6cbf88b8b5d2 89dddfdc-5f44-435d-970c-4202ae906a7f b7a03a31-9fdf-4049-ae88-f0547c4c504e 9e601efb-6699-4af9-94f9-60b2a16402df 39dbdd23-8000-4e4c-bd14-df02e6dce30d 19c4d414-0aef-4be5-a85a-87ba1b8f9442 e30e6fed-1fe4-4650-aa4d-328e4d9927c6 7b8caafe-56e6-46ee-95e3-8fc527edf510 e9c5455d-ad30-41be-9b73-bf5012894fe7 57871a67-7358-4921-bc09-9bdcf80c4177 c447a965-3c89-4f65-a087-de4b8aed9a54 39315017-9bf0-4f1f-b402-d6f5f1ce649a ba5f1a93-9ee9-4903-94fb-4c3e66107df6 9db0862f-397b-461c-81e8-7ac3a15af911 e5960c6d-4334-4b31-b287-f221be412636 644cba28-1f4d-4854-a9bf-4a66d0289976 e2e9fc44-5650-4aa6-b0c0-de60752b786c 6900b717-a7f9-4e9a-9296-143bfc341617 0a01eb25-c681-4b79-b036-3a52e5ad6f2e 5d4ca00c-69c6-497a-bbf4-1baec39be69f 18d2cf8e-4c5e-402c-b3f0-a7688b7099c4 0564ebd0-2dc0-4dc4-96c6-2d5878626133 2e313359-d866-4276-8fb8-6498ce2525a6 e2bfb9b5-6a60-4ef0-9330-7846c4a51241 608af779-df96-4b4f-9e16-08f90d08f079 e8294d25-36ff-40d1-ab49-7f6471d25401 0a1280aa-3d85-4ebb-835c-37ce539ac7c7 edbc737d-1585-4d25-80fa-18510dd501f7 c4cb2924-e8f8-4240-aab3-ff941db514d1 c588907a-9f57-4b64-97a7-4cd5aaec3cbc a2ad1204-00a4-4eed-9827-16d40e796a7e 76933e05-8bb9-42bd-a6a1-e7f21da6cf2b 93363dab-e2ad-41b2-8e38-4ee6fe3dffd5 f77b80ad-47e7-4c4d-a944-19e5922354ba 3d9f3d0c-0e25-45c4-8f23-adeb3f7114b3 2bbb2a15-04e3-47bb-97cc-f04b814dfd74 92ae15f3-0bde-4ecf-9cd9-bc182f27950d fdb4da98-abde-44bd-8aca-c13a168acc22 024cebd6-c507-406e-b455-a24b8def99a7 a7e560c3-f7ba-41c2-97b8-5d8d4973cecf 35ef6cf7-92b3-4be5-a92b-4cf3bfdf1852 9c085390-df7a-47f7-9073-b2382cd68e57 3cf33e32-415a-4c02-8806-f1ffcc1db6cf 89bccda8-7bc4-4861-a92d-ba883ffbbde5 9cca1948-540f-4722-892d-d85fddc85193 3808b95e-9352-4f87-b03d-39bf014fbf48 64ce9070-eda9-4bcd-85a3-27969d0cf2fb 3b20600e-d3c5-424a-9b95-bcb90227b550 884705e7-f6fd-42fb-94c0-5ff9d93ec343 1524ae60-0180-447a-9611-8c0b6f05dbd3 5e245276-4cff-499c-978e-8572c58338b6 072a1b9f-f04d-4ad6-9c69-f9c9e396a2ed 5fd7c692-80d8-41be-b3a7-dd55e6472315 348bfb56-8d88-4041-80ce-6c07f635a758 6aef10b5-f639-4eea-96b7-11c8e0db1ab8 196c88c4-c903-447d-9e11-b4449575ae84 655514ff-3c6b-4b54-bdc9-3178932f73e7 3615dca7-52dc-48e1-b8e0-e2755f422d35 07af2edd-a736-4799-8e9a-c52aa863f7f1 e7d2bd90-ff2f-4161-a73a-ffb0bd5056e7 e2c12360-c2e0-4f81-9fef-3ce425fec613 12482217-94f0-4100-a8db-ee71be7e3a74 0f3469d3-7642-4681-b68f-fe572777d9d3 9a528f47-6945-49bb-9e8f-f8b7eae838f6 2005f904-6d96-48cb-8e01-ba1bc0b5f426 5674a8d0-3b97-45fe-93c2-e99c58493621 72d780fc-c056-40e9-93a4-9c3ce0527886 8844abd5-ffe9-48c4-b358-58e9e6cd7f84 1cb23aee-1aba-4c9e-b78a-fcb6b103ac3f 094324f8-7ccb-48d6-930f-e78f7b8b984d 0100a34f-a73b-4db4-9720-2c18dcbbee9f fc1c9524-09cb-4092-91ea-bd37359f7f54 5cad5ac2-0a34-4aac-bc24-8c4c7c75c458 5237950b-fc52-445e-a553-d37f0611ff26 163bca46-8d78-4e11-bbbd-bc8952a84c03 faf6be39-bf84-46f1-9747-4264b555e12f cda7add0-de0a-4c65-b0ba-7f7fffbaf19c 13087716-5f1f-4b92-9534-89e9231deb61 0c3fcf36-60f2-4a7a-8727-2944b0fe58a3 d30b360a-8a84-4eb7-8ba2-5a3b84924c3d d3dc8396-2911-4041-875f-bc6e72a8e53b 8c5c2309-8a6d-4acb-bba6-0f649fa3ae00 280aadc5-2175-4e3c-bfd6-7749d6501e70 494eba23-8bc2-4237-a1d7-5111912b91e3 d97e57e3-eccb-4590-8c15-2ba5f89b1ac1 58dbdbb5-b132-43cb-8da7-37b5de56a355 6765f70c-f754-41b1-90f0-afbc64ced941 4f3d2317-f688-4166-b56d-cc9c03f03ce0 9b7e4725-ee4f-4e46-801a-ba84a08c80ed 3a0977c9-1bc6-4773-86ab-a6b45822df8a 23ae18d6-3a35-43cc-a791-366843427373 79749867-5a1b-48ff-9ac5-c56db493f2ba a7cda22e-a5c3-4610-914e-cab874b063fe 126cdb24-b39d-4a49-a291-02c2fbc391c6 669681a3-3134-4590-b538-129746f2d5e9 cabb28c2-4dbe-4265-be4d-593f142a76fd b7faff27-b44b-4a95-99b9-64a31f29a45f 6b8e8ca4-77f5-47a6-ba83-93d4f28f5317 cf2107a1-a7ed-4198-a2fc-1998bcff2121 179511d9-c9dd-4e66-a234-c1ee9963e066 0eba1d95-3b3f-4b2e-b9a7-90256df3f109 2d0d3bfe-9b9e-4be5-97ce-d2963c733057 3f04e455-a56c-4774-bb79-550eb1d0d7ce 20837cad-ff35-4e15-bb11-e5160fae6747 adeec6a7-b61b-4a33-b9ec-dfa664b9e841 28e4cfa9-adc7-41a7-81b7-a6662a74684c 7a1f0e82-8162-496a-adbb-edde72762bc4 6ab24a5d-617f-4e14-89c1-1cf406bcd95d c3564a04-22ba-49ea-86a5-ba1ed77edee5 c7416c6e-ae37-4c0e-81e8-7b7ce08704c4 5fb0a53d-4ba8-43ff-9b36-e4e4b6a1b151 16629648-826d-4976-8f74-3810adeac0ae 73a778c7-ed78-4e4f-a674-28f05244c724 2740e7ff-4427-43ab-a655-c6aeb1cbd553 a9f60b53-8891-4590-9902-c33ae9966e20 a356aad7-27c1-4511-aeb5-d3d83a9de8a7 f9d8d94f-16e7-470a-b199-601322930aba f0242dfe-62a3-4486-bfb4-e849248fe090 95257253-9ab5-4a6a-84e3-f9c3d7d6ae6a dcb8f2cb-2c5f-4429-875c-aaa4f1143e82 3cbba850-dd4b-41b0-b8cd-2ad7a3f07d93 ae817d98-22d9-4892-8733-2e2e0aec9999 e42a8b7c-d1e9-4d20-9aad-4728deb5e05c 6b511d01-d79e-425a-b94e-202366499c28 c97071ac-6609-4b0b-b5d6-fcbf3db0cac8 8c677566-8b4e-4ea1-ba8a-db0845da2961 b910ec71-940f-4a4a-bb10-e42be4f9e5a9 0d86d587-9d91-4ea1-961f-51f1f53b72b5 27ca51b0-ee34-45b9-a2a7-deedb8ff0610 09ed578a-4e43-4fa6-b0c4-6349542016a7 d88c3dd8-198c-4031-92c4-542d62efc840 dd74be33-6521-4022-830d-ac3db886053a e7ab13c6-300a-4a59-be1a-e68d7769cdbf a907b32b-fffa-4a7e-a04f-988f3a9db3d9 c2e66005-a45d-4498-b4d1-e012a0143e26 de038c01-e83a-4abd-830f-19499cf4815e e3f29bc5-bfa3-41aa-a752-d08075dcf46d 5c27e585-d75a-4cec-b3e4-85d74ff90b9a 8510cbf0-081f-4b71-83f0-bd63247377b7 2ca3e413-0ba4-47b1-b7a1-d22464fcb5bf 5c2095ae-a212-4697-b50f-de5d083af9f1 afe7b9f7-f837-4821-b913-8e2b64d5f14c d2c79354-4070-405b-a88d-b7b1ce20383a 08235a4c-318d-40f9-af2e-d8c575abaa61 5d5874d5-3668-4630-a2bf-c84926db52e0 9f87e541-9303-4748-b033-11d1d4146353 14d570bf-7bdd-483d-b856-210b8230b55d 129a106d-7286-43d3-9a79-cab3b1a6449e 1e5a4d60-e6a4-4012-9b51-b5aef77dfde1 b28c46d2-d360-487d-b7f9-e62a2fb82fd2 7657df42-1476-42bd-a42e-16a662b3ae2a 1848f67b-ac34-4142-92d6-c1e820e88669 215b7a8c-318f-4c6a-8842-eef2fee1e6ba 41c12217-ad1c-4d69-a405-ca04ae87899a 7786a616-d1b6-4651-846e-00324f1cff36 c975e1c6-67f2-4d51-8328-8f8d26b8e26f 27976489-a601-451c-92b7-cb44553b7d43 582e5dbc-2474-4622-ab25-519bb9d21389 d569197a-6730-4048-8378-050a4752750f 26afe4b1-abb4-4efa-bf9f-bb54a386ddbb ffcf7cdf-7f64-48b2-8dd4-1fa1473165c9 2f9934d5-b146-4eb4-9c08-dcc7af767a83 e28f2842-ab48-405a-b87f-6b8b37188131 43525654-e76c-418d-a6ae-73f66441d9de abecbf18-5e0c-491e-b362-4496b1d9cbe5 e73a22aa-25ad-4d22-afab-f85746fa36f4 d59badcf-d243-48cd-a4cd-7b1cde047bf2 5b93c6dc-59a7-4049-8b26-5d98632daf93 a4c3324c-768c-4335-a339-428eff158328 9924837d-1365-4ed2-8568-c0b2f0d92aa7 79f3ffea-1618-409b-b2be-43fe5cfb9520 cd2f1115-38ff-49db-9125-3bd680ce432a 4cb16790-dd54-4149-b495-21fb7f702067 8a584ce1-14c7-4f79-a48d-e3e8bf9adbd8 458d587b-1b94-4459-9530-6ee7dec4f6cb 37b50e82-4c31-4a5f-a074-f375ae158845 fa83044c-7030-4e8e-b2f1-cc58125a8cfc 7639b83e-fbaa-4d2e-a0b8-f22199000995 040a6c3d-3d6f-4346-a258-c1a8f3241032 9cdea9f9-e310-4789-becc-0699922195fc 84b70b5a-c2c9-449f-bf13-7860dfafd91f 15a9d021-a3ed-4a91-a67a-6362bac32f66 41ebef44-9319-48ea-a29a-a2d9abbf2bb6 598cf919-ccb1-4766-8fee-4f4c4d38e271 fbf48506-29af-4b71-90f5-3f062261e0f5 97e51215-c30d-4963-bb87-bd7a72a49c63 46b44898-4ecc-47d0-a76b-532e4bb20b94 5d521f00-bc2b-4f96-b629-e76b68514a5a 8566a647-4248-4c74-aa36-c81db27681c5 c3ad71e7-b628-48fb-9bf7-f718c561b6aa da2be55c-feca-425e-912c-69a574b95071 a65fc7c6-5f87-46d0-8517-efe25291b11e e5064bcd-7d50-4b45-86bf-37cb3f777c36 86174da3-a4c6-4395-8360-45fac36f0f16 7b5964aa-e92f-44aa-9f50-06422f31a609 693c6bf8-9edd-48e4-8930-86932b189222 794763e1-96e6-4280-9375-ae9683bd1c17 247cc1dc-cc22-4801-a5d3-42992e7add3a 6a0c2cd1-e2e0-4b69-9013-1bc6c7fe630b e89e13dd-94b5-4b86-b8fb-bbea957eca8a 81fb3c88-407a-446a-b286-b50dbaadce50 ddffa2f8-2ea0-443d-bf05-84aa21a79ae6 1c068a5f-24d3-4c03-a950-294f762f5994 46b81335-934f-41c5-ae2b-dd384f80282c c75a7f78-f633-4db3-a3ee-63465f478998 3d6fd8fe-1def-4673-8de9-8e32308ed592 7b81b8b2-cbf8-4105-8d7a-6bc2bd328cf7 e02b9ecd-f0c9-49d4-b403-2e1dd6bbce7f 41f874b0-59f8-4114-8d31-e67e6813aa33 651eced4-e973-4685-a711-a5276e7abbdd 51955e83-0179-4cd6-986d-5b732c026904 5e86e6ba-b6c7-4b11-810e-8fbd45531a8f baf2ce9b-e944-43bc-8a46-ed479400dc4b 96548097-ae96-4335-b8d4-061d62e56efd a9f336b0-2c7d-4283-aee5-cca6eee644df f9e54186-ed7a-41aa-87a7-7fead124f2a7 d0907bcc-ba0d-4227-a0e1-180eb04b198e f22ab5b3-0cf8-4c45-8fba-3597ceb75d91 1219a04c-ec59-4a4d-89c6-36b56504ef7b e36c9d7b-6951-4bcf-b57a-a085b777be2d 0f151613-d1ca-4ef1-acce-ddd4f1c39bc9 95040526-afcd-4b7b-98e6-ef6c1f7c29b1 3a18ccaf-c1c3-4ac6-b806-ca0b94314d56 1a3520e7-d555-45cc-b405-e57ee3d209bb 9011bed4-7c49-4ec2-ba1c-ffebd47b3dab 43716204-35bc-451c-ae73-b10b9e399bd2 0b4d894b-bbd2-4244-b9a9-9280924e6be3 f936092b-b215-4f0b-bdcb-9f5032265476 88c3a141-7243-475e-a9b2-fa425a513989 8cc2137b-48aa-4150-b485-4713c3d7a123 ef18de66-c624-4a87-adab-c4fd6caa66f5 df0f475f-c48c-44e2-8a82-205abdc48e03 0886e5eb-39ef-4b70-9133-c164c1b19e78 4dbafcc4-a056-4526-85da-65e6b4070628 11abcfb4-45c2-4bc7-9fe2-b6c3a74165d1 1e3d5fd9-741c-4aa2-9398-aa830feecd44 cda39d55-faae-4cf9-ac33-45a3358c2942 2690ccfe-9e0f-4258-a9ae-88c215f3e982 cfc0664a-3fff-449a-8e72-cd6b2569ab58 66a7ba1f-9f2a-4e6d-82e8-f95112b9cbf6 1af6017f-cd6e-4c37-9860-750e063d3fcb 92c96bd2-8e18-4cf7-b7a2-6790f2970287 a8bb8328-40db-4a4e-a313-8fc07ce3cd52 94b4fb7d-a4d9-4c2a-91ff-d3151b45180b a3276622-4b68-43fa-9d96-256f71628739 cb10e5b0-94e8-431d-a099-47a620384cc4 1ce0cd94-0115-476a-97c0-43ca7638fbcb f0ec0443-2abe-4144-a032-231297ce84b7 fc21bfc3-1cc7-4a00-87d0-8fca3514350a 1f44c42f-03da-4d00-abdb-c5950133feec 3f03c96e-8d6c-44c8-ae30-d15e47b49b44 75fefe0f-3c22-4422-8eaa-9e8532f36c84 a3e4b81d-a7a2-4c33-a2d3-f3ccdfe75eb6 f4ec94e4-0f78-4a7c-bc75-0fa992a9e668 7e5b091b-656d-42af-8e51-103583557abf ab29f821-aaa7-4cf0-82ed-e2cc35842449 cc133e60-d3fb-46ab-8da1-55e694b5efb1 6a1c9790-7c4e-4ee1-8337-f0b2ddb31251 7c9bb6b2-1fec-4290-9fbc-26c44e888660 13ac120b-ad1b-4c80-8267-07026fa17cbf 17a49bcf-b42d-4367-9375-9757416cc5ba e116dbd9-1dca-43a1-8721-98659f653c9e c8c3634a-684d-4c8d-9f48-67894b6d5d07 8aabdf76-77fc-42f4-9c8f-5f4e5cb567f1 3430b420-177f-4d75-b2c2-033b8893cd5b 9bc35026-13c1-42f0-899e-dd80b41a407a 6a4c66d1-f5d9-4cc9-bba1-fc63bc2ad7a4 ac36c25b-5b64-4824-ab1d-cd349aeca381 215b463c-4d8b-4dd6-aaba-b1a78aa0486d b51b93c2-2445-44f3-b350-38d84b4e3925 055a0349-a0a9-4e40-9a4f-851b1c3686a7 a7ed272d-00b2-41fd-b3b3-5e632b3a4929 60831872-fd85-46c8-b97b-70adf42715c8 14ae9917-0355-4f4e-bf87-9fbfc8af330c b38ea027-5e08-444f-abfc-22425e4b19ba 1f39844a-7c95-4df2-b550-79989269024f 20d873ba-59ea-4ea3-a887-dec0f9f77974 7b5dc221-b4bf-4ec9-b6b4-753f75283325 9bdfb93a-eb34-4601-8e64-0a99d44ea33e 4804e916-cd31-4925-b149-660e120d4b32 e11789ac-6c08-4a6a-a6e7-0fc1d68ff64d 9ab68ecc-005f-43d9-bc7a-211db173846b d2d5eb83-e823-4c71-aa80-f4921e36bab9 f4a2ad64-1a8b-4bcf-85ce-b869bc3d2445 c1ba96c2-dc1f-4f2c-89b0-2dbd334acfe4 fe664d7d-0ec4-4039-bdcd-c700576cac06 dfbd8263-228a-4f39-966e-59f32e4fda71 820e6f5b-cea8-4f3d-8c6c-89348be1d618 2a60e9d8-a459-40b2-9b49-ffa7a3a21dbc c5cafd16-a575-4ed7-bb87-46cfdd2cb5ed 7c5198f7-80ff-4cae-94b0-4422db9f1da9 b97b616b-dc62-44b3-bd0e-fefbda32574d 63b4c9b5-2cdd-46c9-8e6e-1207752698e0 853f718d-408f-4c7e-bec9-47dbe53c8cb1 e010fac9-2e8a-4980-adb7-8847039e489d f728f4f3-e32e-42c8-9946-8a88b2b46ca2 b5c601ae-1eb9-44b9-aea7-224c6967023e fad5ab8a-39e7-42a9-8432-a68fc4eb50f3 0b2091ac-de3d-4036-bb29-e72e17d6fb8e db280e55-fcb3-4283-8af1-fb39e18842ec 0df66f7a-bbd2-441b-8301-044eccdfdd4d a325ab32-43c0-4f89-ae29-fed645e78d82 8b58f874-57f3-464e-8b62-65ad1f5404f0 e8e619af-3152-40e4-a3c2-e4266081bfa7 80202ac4-ed92-4ec3-8373-e0ba53fd701c 31da5a4c-1a87-48cc-9299-a047af43a7f5 214eb8c3-cb44-49de-a455-2528fc6e7bfa e5a8464f-1bb3-494d-97ca-990263089216 bf2620c5-2fe5-4ea7-bab4-e7fdc6ddd54b 6638652f-946b-4cbd-a6d4-1e0ccf88e5e5 5d2aa117-eec6-4acd-83fc-f5b3320f5a81 09e44d04-41a4-45ae-80c6-b1943285715c 57c4ae80-d3be-4289-8f07-eac14f46fabb eb3ae508-6053-40b4-8156-4aed8f8029ea 042244e2-2ece-440e-8d18-449cbbb1cdfb ab0401fa-10f1-4d15-a1ba-bff558f79cdc 2f71377a-b362-4829-a89a-9ea09b070ded cb9be03a-94ee-4b73-825a-9fce939d4285 3c6eee21-1811-4030-b907-bc0be5820622 15bf2211-f4e5-497f-b263-f00e6f1bc296 2cd93b7f-69ed-4189-ba00-ab212d07f2f0 07690cbf-df40-4fa0-a8e2-972467e0c0de dec39f50-77e8-4f3b-a0ca-3c1b8338d396 16925160-fde1-4514-b498-d99ddc6bd7e6 dad385bd-0c91-47fb-b496-4845687f1cb9 7ba5051b-d1dd-49ee-80fd-f4d9e8ad2ba6 6892f036-070d-43e4-aaf3-5f2fc1602d90 da525e3e-2f1d-47bf-9672-b38bb8e679cc ddf58b38-3552-449a-88e0-c0fb1781aa2c f0343fc9-2223-4336-b4cb-6a1dd98321bc 49967d78-e3f7-4ecd-a619-746c55c044ca aad33ccf-d4dc-46ac-aa5e-c8d871da61a5 f5bca04c-0c17-4899-99ac-fcc3b1745211 ea216142-495e-4e9c-881b-b21c967b20ba 0f95a3b8-4bca-4f80-9c4e-92df0698ec7d c0e0d7df-2f5b-4bf5-8b85-698c45ee9db9 8efb326c-8bb1-49b0-97a1-7e58627cae1a 219552a2-ac98-45d2-8d88-014ed33798c2 4486f1f6-95cd-488f-bbcd-e0f5428cecba dbf5f18d-9c9f-43b0-8ebc-3cb16816b5d9 19437d78-4b1a-4b75-9e00-2aaa8334a65e e780f118-c8d3-4745-be3c-2a7dff036052 ec7e6c82-80ce-41f9-983c-0fa6e43be08e ce976a87-3975-4c70-b713-035e471ad3f6 d7600882-a42d-4ba1-bb12-76e05a63466d 8c4493cc-81ad-4102-9265-2108a2b3cdba df5f850c-bc41-4167-a2c7-f205d0d879d6 3fe887cd-3cee-4819-8db1-4a5092e2b393 21494188-8c9d-4965-8131-c6490b20074a 8fce7f62-14b3-4a60-92e8-72c08b2244c9 52a7810f-3e2d-424e-9592-035241f1401f e0b3ffe4-d858-4ca3-ac58-5cb4716b10e2 b6782e3a-be01-48fa-92b7-919ac7df3012 30a83b36-252e-4708-b35f-d0e96c7f6698 3ff1b326-3d54-4751-b762-5ac66108d008 08012018-6ace-43b8-907e-78826c8c1716 1adeba53-016a-4e7c-973b-7cc44bfdd547 e69120d9-8373-451c-b414-f12d1fb9d977 b4a941f2-8e2e-4576-a7c9-3e190d61c8ed 0c4f3058-49a5-4ad8-ab4a-aa259f391855 d2b07263-34b6-40c9-90e6-6bb288c2fa9a 6d42c929-dcab-4c9b-85bc-dabe50ab5618 d332a3af-8a76-43b2-acce-86e6be1f4f70 67c6c789-5556-47df-b702-7345528e768e 25febef2-b463-4329-bab1-2655d9a9f863 7bb27bf9-e83e-4bb3-ba50-31500009321d ab1a943f-21e4-4289-bb12-4d273c60d2fa db85bd52-d93f-4b1a-b181-7458f8b91206 2be546c8-7aab-4edf-99ca-057de5948ace 272a9abf-0f3d-4a07-a9ab-aeb9e04dcded 83c43036-d39c-4ee6-972b-5f95594892b8 6b3a83ed-198a-41e5-9bf3-bdfc7ac88ee2 03eeae30-fe22-446a-b15f-d98b5fffd7a1 6a45c1af-5ef0-4e6f-a8d7-e8ad03c60caf 6df099ee-66aa-4c7a-a8ee-88bb6344e558 54201f08-0b6b-49e8-9500-e634e3d4c5a2 98c51ce0-1908-46c2-beb9-77cc6c5f87a6 6caba1e2-47db-4da9-a147-3a6ca0b354d4 fcaacceb-f83f-42cb-bde5-85095b7a8ba8 c34c45cf-29cd-42c5-abe4-a796d5737995 73345797-e25e-4d7b-88f6-f66213ceaed9 674764a4-64a7-4b46-bdc0-bfc51b6eeca4 45cd942d-00d1-4001-8c0a-042da460da79 a96a6ae3-2a62-42f2-a627-c97a44ce1a0b e8fa720a-0559-41ec-8ff4-7a9020e23567 292fe7e0-a5d0-4e69-8c92-f688e675fe60 ad946e76-5976-4dd2-85a9-c8f644648bad e7de51eb-444b-44a6-b20e-21da2cf50165 31755d32-4efb-4a61-8bba-0ebc5d7c3cff 8365380a-466c-4086-82e1-369b36bfaf9d 2c2e4ee8-10ff-483d-82a2-289e1bc88756 547904b2-bbc3-42b2-a0fe-fa2f22b0f4ef 48eedd32-a82c-4da6-9aea-204ea6ddd812 49cadbf3-6b31-4f70-9daa-b8cc5f5a1389 b90b6d22-60ea-43fb-8a69-c6e148f69f0e 524c924d-f059-474c-994f-6cce195adb4f d4213157-517e-4c6f-97aa-dbc7fbdc2597 86de48e7-bdaf-400c-bd36-e41c36ad14af a5ab243f-d8e7-4734-a29f-f8371b52923d 2cdf05eb-d3d6-43ad-8ee1-853403b4d6b1 e6cf6bd2-877e-492a-8b3c-0b24818fa2a6 ff14b5f3-6a09-46e0-9343-7961531d8cf7 2a37cc8c-dc76-4dc2-bd91-d1e18e71bc55 ebcbf9d0-f0fd-43a8-9d30-475e7f96f224 bbe8a3cc-a2b9-49c1-942c-56deb39f6409 9419de85-26a6-485a-b1b6-f465fd36c6eb 859d967b-8839-4b50-9661-d4722bb0341f c85be53e-e250-461a-8ff0-e26b7659057a b86dd0d0-07c8-41c9-b3a4-620e54f28248 4ab819ff-f909-4d6a-ab15-087ab1e3b9ee 0b7d66b2-c91d-42b2-98d7-ddd0a62d9c4f e10e1284-f39a-406b-89f5-93cba94591c0 f0d61f56-3e79-429d-ae09-cf66ecc53861 f6f7eb01-e915-49e1-bcc8-a36e143ffecf 6b718d5c-d144-40fe-891c-a61723a1e6d8 d0b03594-cb97-4e59-9065-7a462a36ddb7 62482198-f283-4b9c-bc36-88bc9d151ab3 7c8335a1-cbd2-42d4-a9d0-9ba365bc0b98 9f2bd5fc-d88a-42b2-a3ec-1d2718541e5c 1484eddc-9988-4223-9ff1-0d00d682d4dc fbaa8953-d3cb-4b0f-9cf8-435e68f6f9fa 05da8fd4-dd00-4bc9-a14b-f97ae04c6b91 a28692f7-45df-4dcb-a9e7-2de48ec6a859 13c37273-03e4-4140-846e-897bb5691c63 bcfe8e91-8e60-4f8f-81f0-d66a077b0652 71c13473-a1d1-45af-b492-8267fe3a3121 ac80deef-a371-4381-84e9-1b38424ddb23 48f4296f-3219-4c89-b6f1-0c65c76e4b8c c6258eea-c969-4e5c-8c57-6c6cc9cf6620 e313425a-c3eb-4e73-94df-78c433a8075b 04e8a796-ba8b-4ee8-b490-513b834d5ff5 316de993-cf98-4fa8-bfc7-07ab196f14ba 1d429f54-8e4d-4ddf-83c0-96cd22584f42 02d81285-dd4a-4f11-a2ee-62e934d9cad3 50e42e3a-f932-47ea-b38a-3daed371d3fd 2e1cbd49-8b25-435f-8e77-f522c62ece49 847db9af-6c3b-4607-b76f-283fd67c5087 7a4c471c-c6f7-4569-a597-27e8b8ebcd1a e7b58db3-78c7-4fef-b0ec-2bbd5d524efc 390f6999-5608-46d7-9e1b-757850f2fcd2 647d7b82-1266-4469-8d96-fe857cd9db26 f9a18580-6e0b-4352-b415-b7d87d167e33 bce7a04f-280d-400d-84b1-ac5863441adb 31ce6453-4f64-4e8f-b534-b58e8a0433e3 712a6d5e-e4df-4c0d-a194-9b7d207fe661 647cf53a-69d5-4c16-ae89-ae31b842b5ea 21143004-9ea6-493d-8083-b6aca5ca6815 47ef87d3-436a-4526-b7f9-d024dac87f7b e463f61e-f8bf-4edf-8a3a-e1e84eacfa02 2d6df8c3-2cf8-4311-864f-2724cac9ea4b b9c4a4f0-862f-4b6b-9bae-b6c2814a1cbb 99ebe034-3939-4d45-969f-699d80c7b0c2 20eb0536-9179-4150-8ba8-4307d769d28d 0f67ca48-0a98-416b-ad71-e5671e1ca603 d0722c34-0f9c-431d-bb96-d4a36c802206 f86e5a3b-2d6f-4aa7-94c6-9ba76950ac0a 27047b6d-3f9e-407d-a14f-7dcaf790a00e ee1af84d-0485-4d75-9d52-33b71df7ac8f 34bb4fb8-7495-405b-8574-b2894a0eb89d cba1da85-10ec-43b0-a4c9-d699b53abc2f 306ca999-0bbb-4ae1-b002-5121a19e4d1d 219e61b8-7446-4fab-9e2e-beb0ba5e0636 f625ee30-b880-452a-ab28-e27b5ced0ea0 fd4edb94-cfd1-43f3-b5bb-fc70642b0a57 bf6c0f75-540d-4e0a-bdd4-45ebb418b514 a36da6c8-b30c-48d5-af5b-39fa775dbf8c e5c6340e-4cc0-415a-b56e-c3dd0e2ec500 199e90d5-0eb5-4ecb-9409-0c23b5ff25ad 5f4cddad-8844-4c58-a5db-1345c91470ca 8772f867-0196-45cf-b59f-e8b912644f65 a2e35617-4344-481d-b9ec-e9bc21384130 35151fca-521c-40b6-b958-a0804ec3f84b 7d56b168-f31d-47ac-987d-7dd672d63b72 cc098031-386f-410a-b3de-58a4d85f9d5e ffd77a1d-76e8-47fa-8163-4bb92e73c08a bc78b269-e297-4c36-a722-130254bae02c 5cafa1f6-583c-4c75-8139-0c75b3b4d291 62e907e1-81d0-435c-8df9-55e7e85a1e56 7e8f1741-50fb-4bcc-85f3-74d0a0334e59 7dd6941e-fd88-432e-b0a4-6e074be566ec 57883752-bb54-4cea-bc2b-9275031d0a1b a01910ba-6d54-41ba-933b-c635cc54e90a 535ea547-e42f-4c6b-9958-5a27b3cfed47 090d74fb-bf0c-4288-8951-8b7e4bf6f39a 5df6651f-fd4d-422f-b363-c6d45fe2940f 0c0a5710-e6d4-400e-97c7-51221ff03ba1 8aebc451-0caf-4bdc-ac37-25cbb1103401 8b27cbd2-cc93-4112-ba4b-4f0b38e9ece6 99fa0e0e-1e68-4cde-aba4-2e2d0ee8b55e 25193ae6-2915-4926-b64e-a04d184cec0e 52eb1005-6279-4e55-9963-07f8ebb69007 2b17202a-f39e-47e6-ae13-0f4c9b2a84aa 01fc251e-f3ae-4a73-ba7a-362ea78148fe 124960e1-8bac-4ca3-b12a-afbb552def17 f2c8acc7-c174-4a44-8671-2335855d9ea1 d9e8e850-03eb-4b26-97ac-5c9cf006d987 feb6b268-e3e6-4dec-9d1a-4b52d18116cc d7672ae7-4772-49de-8787-83b7c1278a7e 57693021-0982-4772-b6bc-cc7ee4632d1a 1a62e0ef-a126-430e-a8f5-73adf5fe52ba 34b98e11-34a0-4528-b2a0-f9712082b220 4895f74d-41bd-4b77-9d23-9b11436ff93b 9ce2dd3b-1807-4397-80ef-11e37c40cb0d 6c5ae292-acbf-492e-ba7a-d60c52ce2f24 273c2ed0-5c6e-4213-8b85-11d86157270a d7f05205-3b2f-4c4c-9c77-47dd5494222a 6e2e3f60-7dc1-4e53-96aa-05c604b4847d 59a6de00-9e4a-4815-9d2b-aa865f41f51e f13b4879-aed1-4d66-9a95-d8580f19a16a 884bfce1-ef2d-42b2-9ec0-0a6fe2dbadf0 c0a75561-7713-42ee-9f43-f234ab4d164d d622b94d-0ac8-4cf3-896f-daf5062b01b0 d0a5722e-2dba-41e9-b96e-4f15da763bd4 1ddf1cfe-8d91-4564-94d1-ab23726c9377 d537b6f8-b0c9-43ea-a0a4-c57353acde52 ca67083f-7d29-4815-b200-0e5a7b6fb3ad 4ad19f7d-ae9b-4e5f-89f5-27851f78e519 af970d65-e1c7-45c9-a9ec-94adc3aa4835 eee36157-7e14-4849-8b1b-151d8af31a10 1e8cf8f2-916c-4dae-85a8-f7071ea2cdea fefb921e-1382-4254-b32c-9de54210e24a a830c49e-c5ee-46b7-b1fc-e115bcebd1bb 1cd0e9bf-c6df-4f8b-bd39-aa845d187404 65da4d8a-65ad-495d-a197-725fa09ac34d 2793bb58-80ad-46ba-8f7a-6334824cdb9b f09e72ad-a495-4a33-92ed-861b8783c7c0 e2476b4e-3ab1-49a2-b255-3a45786192a6 27c2b403-3aaa-4027-8cc6-19bd187937c2 4b9c4f00-dc4d-4389-8ebc-b34d29433b5b cd0b8c99-3307-45ef-aae9-fc2c1e78cb6b 7e3c02d0-5c20-49a1-93cd-cde2d8beda3c 231c7074-b779-43b7-bef4-c5dc8e6059a9 4f0f0c60-6030-42fb-ade9-e651007b12dd e8fae242-31ac-46f9-bd4d-10418259dfc9 a9a0ee04-c7c0-4aa0-a63b-edf55b899218 6547ee9d-97f2-41d0-a5ea-c6521afefd81 aec3ae8d-9c34-4c17-bb4c-a8edb1b76fda e6640cff-23bb-454e-8b95-4e2a1c05e00c bb719bdf-4671-4377-b8f3-674b9d868c40 2829ec76-b65b-4600-96d3-e269810a8580 89b4d459-43f9-40eb-a900-c2092268d61c ecf6a935-ef2d-442c-af1f-64bf85a3bef0 fc30a013-00bc-4fe8-8614-b46601b0fcd7 0851bebb-ad9c-4372-8eef-0a885fe7742a 408fbfca-5736-42d4-9960-2b045341b309 ae570a70-700f-4529-9530-53e4e60479d8 132eacc8-aa9e-414e-b52d-cb5485f7340c 1fd50480-4b79-4674-bb0a-809a51d20151 2d52109e-a6c7-49fa-8130-3e50812e3d9e e328b678-c484-47a2-8afb-d46066650393 1cbe4aa7-a637-4d43-bb9c-c44c587b9247 74437c66-7389-4aef-9af6-7202dd20c697 d766ab79-ace3-43c4-b153-ce4c7244f741 8096d126-66a9-45d7-9e48-b9f6f330bd3c c699bd0f-aa1a-4727-8478-50d33275d0a9 05b41e73-009b-4527-ad4e-cf6fa95ee591 a8554bab-f161-442c-a176-d1e2e4417f35 f4ddf1cf-1fc9-4cab-87ca-ce7f74502bfe a9a9bdfe-77f2-4d9e-9108-89a5eefa12be 490868f2-c1aa-4ea6-986f-3084c5cc74fe b5003d3f-f0e5-4bf8-8167-3d0684bd3f2f b3dbe0aa-4d1c-4f5f-98c5-ac5fdaf50820 956c721b-88cb-4d03-a7a8-bc78920e1d27 3bc8ec11-64fd-42db-8b78-5c9f21bb28e9 1a77cbe5-3ff0-4da3-8187-8153a7019191 2d094d50-3a44-4ed0-bc25-2fee0bdb0b8d c0164922-be2f-47c6-b57b-686e36b7b665 4ab322b1-d9a3-464c-b722-552e3345418f 76d5bade-8275-4cd0-b48d-eba063b3bb93 5d4a6383-c820-419c-8e17-73a2419ff867 d71e926f-7f17-468b-8bdd-004f1c609c76 97ea5162-7a36-4c91-a151-7de8e2ed1a1a bbb64699-0caf-4f42-83f6-3e7bfa8eaba4 a6c795b1-e791-4b84-8373-592ad5053086 b3a53740-c3f8-42c9-98aa-fd6698787e07 65896cd0-d843-4680-8731-b3ed96f1be8e a1f9a421-f2fc-4b35-b6b0-0247ac055d02 942bb83d-640a-44b0-abd8-a161f14d2fba 50dc38c3-a20b-4308-a970-54fcf083165a fd5cf2ed-f62e-4c14-b144-561870e822c7 2b8b5a43-e55a-4db3-b01b-7f50524660a2 19ab2b7e-2f54-473f-80ec-ab2bfa431db1 00aa9739-6657-426d-8e76-7e128156b3ce b0f885e3-f266-47d2-86e1-cadef4c969df 8f8c016b-e11a-4608-bb57-6cbd80f2f08c 85f0ec49-c75f-436a-814f-6e2c9e2832ba 92451551-4440-4870-8a5b-767c8582e9d7 55ff674c-32bd-450a-80cb-5a964005f8ff 5a17d5a6-f564-402d-b669-d00ccdfde701 7498375b-3f3b-44e7-8762-5f27e5c333a8 8a5d3355-6c2f-499b-b0b5-1bdc69c72db9 f5dc82b6-9690-4ed5-8707-8980cdf5cd2c ffa42db3-4878-47e7-9a60-7f16413d1908 8e52dd41-82ce-4f46-82c0-ac5926179fec 417ba858-283e-421a-a180-3d2ebcf56064 28201732-8981-42ca-9524-321dc2099f5d 25a11ea9-7432-4de4-b70b-1547b4e733e0 08e9c64e-84f2-44d8-8ae1-e4a4cb722014 79303f65-85f4-4142-b094-86fe1b4649cb 6ce4075c-7a1f-4cf1-90e2-872a22782f13 ca5d620e-d6ce-4223-8cb1-ab0dddd463b8 5fce2c3d-5178-47c9-9cdc-4a21c4a0258e 43717d9e-f0aa-4df4-9703-099c228fe315 95e29505-aa61-4f2e-a2fd-4902e80939b2 f3f3e595-8ff8-48f9-bc34-5862cc93a1a0 1c9e3e4d-cf0a-447d-9487-f97893cc5462 e299e820-1d39-4fbc-9298-da5ac52ecf4b b379975e-0895-4d4e-8a12-a8c29c6b9b96 1557e39d-2f8a-405b-b89e-89ae5f24da53 1cd58ea6-903b-49e7-8e77-0e553cc18df5 d09aa606-e7e7-4a4a-a301-7e9fe8d29f3a 08417581-a9e0-4e24-b095-470050c524c4 af5a41cd-eeca-4916-9f1c-9e4d70ff9c3f 978c9239-45d6-4ef0-9680-e1d656a8029b 1e34bd6c-e96b-4775-aee6-7436735ea8f1 fc818c61-b507-4ade-98f1-2a210a318b92 7ea70196-338e-4a06-b323-e61e177a30ef f3d71d83-50f1-465a-a376-52152fd0a9da 93a84442-e465-47c3-8f09-dd66a2cb946f 3fc9b9cf-79a9-4df7-af65-2613e1addb8f a80130f3-6f61-408d-be2c-4887ef58af61 e5cf375e-dff7-440b-a75b-23e02b6057d1 c11ee7ef-3148-4d11-87e3-fb0e734d128f cb89f315-ba2b-468c-80c3-7d3efdf9b9fd 75e59464-b651-4a66-afb7-a441e0b3bee4 aab7372d-3c7e-4816-b2a8-a2485035a074 19930a57-568e-4cb3-a22d-db8ff44b7713 77901a3e-b7a8-4eb4-b5c2-6d3aa493c449 7c47ee96-ee8b-4692-b641-5f812dc91460 93043f5a-0215-4c6c-9b96-83057c8e5850 2b5bfdd2-9d72-4ee3-9b2c-1590365baf2c c248d548-b50d-42be-90a7-248894634e45 98b9aad5-f0c1-4b90-947b-2e1bec8ec7f3 ca8bab3f-a2f4-460c-8ba7-6f1d5bf131e9 0da8b92c-e40c-4aec-b500-028188249ce2 67f3f996-a2f1-45e7-ab0e-105fd1cd9bec ead75158-94fe-4a39-82a2-053e7aed1fd6 a4a73f9f-4102-4166-b0c5-367f928b55ac bb91be24-7fa4-481b-991d-d0993c54ccf2 6acda975-ac35-4d53-9c04-552958eabc23 5c352b91-f306-41bb-826d-88fd15b2cf38 ec6b1ce9-63bf-4fc8-9773-efe47fc717bc e4d8fe9f-0575-4e26-935e-e6b512022cd3 f10e9e97-f4a9-4a5b-8aec-112110551b81 0d5e9611-1ed5-4f6c-8677-20148d84510f 5b285519-42e0-48f5-aa11-68be7670badd 0d7680bf-825f-43df-84b6-ded9abef5560 d362ecfe-1060-4107-bcdc-28092d791c42 b320986c-c14f-40cd-9fa5-f9343744c7f2 9ccbac53-581e-47ef-8b5e-ea010f72ca4b adfb178b-69cc-4caf-b4c4-7fc2a41c94c1 bd2c03fa-ac05-48c8-a042-8ff347962f25 de7bb137-97b3-49e7-85a8-9cdd925c59cb 44d4e14b-9a57-4f05-b39c-c0bbc92bba3b 85f182ec-4792-48bd-b656-dc4023fc8cc5 ee9a0ae8-a8ff-438a-ab98-73bc84f3ef96 be07cacd-1896-414c-9ff5-11827a1d4559 e5256c0d-6c09-4b4e-b71b-8d54cd34c6da e311e898-9595-4238-8bd2-a0c286b12435 f77b96d9-d447-4afc-9565-883919f6da36 c2c2ba20-e96e-4324-a982-daec528c5377 86399e6e-857f-4337-9836-82341228ce75 9f8738b2-2016-4c45-80e7-4509ede9e1c4 20b2f377-58e8-4e10-bd9a-8385511d50f9 3d24e490-14e6-4eab-806d-0edddfd7b140 fd7c0ecd-e0fa-41a4-a370-c688db286e75 2221ef1e-b3f6-4dd8-8ea1-9ca8ce820891 474d48ee-432d-4826-a63f-e6a08d2e4ad6 84b7a7f4-f76d-4a9b-8b26-7c418e65b208 f3059c2c-b193-46c5-b0d8-f001195ff0f4 7a3a0fba-86b1-4acc-a90c-5fbc5aabf800 a36fd4b5-e0af-4ba3-a3a3-52262d1bf13d 2304aa14-887e-4a4c-b6f7-2f9eeaa4bdb6 38bbe670-3fa9-4fb8-967b-a2ae5a690d85 c336f70b-0a87-435a-bfcd-71a04083d0fb 8331f5d2-79ee-4b34-9fae-ea3cde150ed0 e7957a42-086f-417d-830c-36b19a75d1d2 6fb41e41-2706-446a-95cb-eb07e947f532 51d8dc63-8ef4-4a7b-a809-bfbce1ff74af c63caff6-14e6-4a95-bf39-248b3ec1de93 0e568f5f-8306-4a85-ab24-113b7615f1c2 3a46bc53-3b8f-4135-9648-218f440c55f0 b6063f51-d569-448e-b259-c71dc189c46f d9e766b7-4f47-4c73-ada5-a7d956a2646e d304c840-ae41-435c-9812-b7b3197b416e f448a6e9-f0d9-4e18-9d0b-36bab6a3da82 dd02dc53-e625-4481-aaf5-4b519a668cd0 22d99c90-f868-4db3-bcc4-46d231f45aa8 97a5d017-4807-4a6c-bb27-d7b2aac1a527 11dd43b7-832e-4924-a3b5-1e702b7f966f 17004250-515a-4ea0-82db-15aabc65383b a59b215e-e199-4fb5-beb5-9d9964e153f2 989961c9-9d8e-4edd-99b4-4ea34e4433ed fe9ae5a4-0c99-4602-ab66-ebd0b6b26b24 2371c937-289e-4ce8-bfe5-8d4495495b16 64c554dc-8ce3-4de6-9695-76ef73e52156 9155207a-c2ea-41d2-8cc2-de5d205d8a99 d7985b15-3307-45b5-b298-492f4e0d4a1b 0b644edc-1acc-440a-b88b-807111bb73ca 23e65dfd-4197-44fb-b7f3-b2667eb4630d 7b011de0-97ec-4aca-ae24-65816f52c0e8 a7a585ca-57a4-407f-817e-8f692f70187e 36927b90-0947-4988-8b1c-179a71a145ea d68ba71c-2c91-43e7-9d59-a25af9c6ca03 d0391a2b-bd0c-4e8b-a0a5-72bc4db75d14 216654b4-9d8c-4913-b69c-a37a4cfa9338 5d1d57c9-78f6-4769-a346-329da5aa2b02 faa316d4-5a4a-48e2-ba29-baac740fc32c ad570dba-3751-4ecb-91dd-396ec37a6dc3 78c8f1c0-8da9-4586-b031-b6796a254cdf 42975510-efb1-4543-a17a-025f4b21bc48 9d1f4b20-8122-4726-9da1-feb47c39a175 895f3771-bc4b-478f-8b30-5deeaf02e67c 4fdbe1f0-e79a-44a5-868b-09bcc44d367e 0161969e-920f-4a17-a406-e34435a6bf4a d087c0a2-781a-417b-9bf4-64379db1cdd5 58a01fa3-b8e0-4545-a37e-d8c4379cd620 4ae0ecec-159b-482a-9e85-d808b1dc42c0 7bc8ce17-80f4-4454-92f3-b43f43435523 10992a88-e330-411e-a81b-63d470d15312 9ba2e622-a769-43b4-a767-1a6fac681229 318ddc6e-1391-4059-9b5a-e4aca56079bf 3df27010-673c-4436-a530-d934823a0644 0bbb3640-4dc9-49a0-902e-00573f58f60c 67b8966e-c28b-4dfa-b09a-c10febf22d07 b6672d33-25a7-4627-851a-3d9316399ad8 0404cc69-1af7-47bd-9504-a00b9068b37c fe4933d0-5cbf-4c35-9d37-50f603828b95 9484bae2-2a08-4765-a49f-d78d05515dad 485714bb-09ea-4c58-9557-d127d1c1d2a7 e57f0c58-4cc5-445e-8988-e608087b4ffa 7cd48d91-3db2-456c-9521-65d850b9f061 d61e7a86-cd76-4051-9bb3-161967009ead 9b4ef20b-7205-4d37-a1b7-e45b4b85e518 02f6337e-0c68-4379-9a33-7c9e64d7cc14 ecc5e3e4-918d-4bc6-9c75-1a3ed220185c b412a1ea-0dc4-48f9-8019-70e09c27d0e3 ebc82422-7996-4604-92b2-b77a43084469 24f9807d-f0ce-4fd4-b8be-492df6a79c76 9682b5f6-eaef-44b5-a4c3-07b1bc458dce de256690-4b83-43a0-bff1-ee3e0f6d0fd8 5ed750a9-cd40-4b77-ba09-26fd0f213cbe 4e222195-6812-4ba3-a4a6-6855bbcf4cc3 b3e0fa1b-d779-4dc9-b58d-e22a43af55d9 d4b6e594-0a47-4754-b01b-2aff3c3d8ad5 e4b8fbeb-9c80-474f-97d1-dc75c8084b03 9ad1ea65-b30a-489a-9513-f00b7aeaf773 f2075ec1-586d-4fd8-b9ab-97ed81742b3a 5f01270a-d08e-4dca-afbd-2f8420b41872 6fd3625a-595d-4c10-afc2-162a0544ac7d 72d9f9ac-8002-4225-a7ea-7af416575f38 3239e18c-80a1-43de-bbd3-d55dd4b36eca 655a39d3-4c05-4942-b435-0a01f3d2a697 fabbbf6c-b69b-4abd-b31a-035c0f27e060 3480c223-41e6-48d4-9d1a-f79d20525edf 8f50fcb9-be87-4f06-9726-2a4f68949027 dd361de7-0cc2-46b2-a742-f26538946229 6fa0de65-cba1-4153-a099-ab473e36c8a0 1da01625-7197-4a9f-93cb-6e12d54c0c11 1bd93d65-2f68-4155-9743-f9637e035772 6828ad62-0115-4532-87be-d514264c7644 1d742f8c-f647-4821-977c-7d3320cea611 b016c373-3b8b-48a8-bcf3-28989d8a9379 b0620f52-b2aa-4540-90a0-332e1a30f242 54f8c37d-9c1e-47ed-91f5-2caad4536e67 d9be6684-c461-4ed2-a72b-140c4c041c46 e986d203-a438-461c-9e7e-b31691824527 0865401d-23c1-4701-9f3c-825866152cf2 f9fcc1df-a09f-46ea-82e3-ad6a6430b33b 48f52e75-0e6f-4f7c-be99-0d9e50d79e67 68844d36-245c-4d7b-b2f8-627995d910c0 20647533-7295-4af0-be4f-8f559be0973c c42dea83-ff6a-4d3b-9688-3c54c11222d5 114bd65f-2d76-4e2d-8d8e-513140549f6d 1cdf7612-0f0c-4020-bbe2-8a20a9d68e88 555e7068-f816-41cd-b26c-76b99ed86afc 2b9a4e69-c2c2-4a3e-a978-f955893c6911 78b8a80b-832b-4232-ad94-b59b572902c3 6f033b48-d380-4377-be30-53ef21dccc1e c55feac0-404f-4784-a1b6-02efde744fe1 5734af67-f93b-453a-a068-ba58aa84817c a096dc7d-fbb5-462b-b3e3-94620c126c18 ffd94275-6d17-4be6-8824-d78d8645fb2c 53ae2125-4d65-4a62-a440-5d5d8b54ea3a b540b75c-1c6b-4881-8690-9a56b5db4127 8aea58dc-d145-4c3a-8ccb-9446e229e963 664cf3fe-7d6a-4222-b61f-5760dd45533c ac74e08d-55cc-49d5-86e0-04b352b2b158 9f761d89-1009-4def-8c63-65b044271db6 571825b3-c5ad-42c4-a3d5-0113b23c923a 3746d103-ada4-42d8-88e3-86bd97fc3579 bf2651bc-6c0b-4243-8037-012a902ffcfa 02fb6ad8-58cd-4683-bc58-ff7ebd1257ac 82764735-6fe7-4a97-a4d0-ad4596e45433 227a1947-6735-40df-b8aa-8860db88cd5e 990e04d7-c474-43c5-b8f7-df16beff553e 9436bd3d-ad78-4f11-a430-5e6d293e7494 5e424a20-5631-4e90-a9f5-3d1f3652a062 c10ad20a-9bff-472d-9ab7-d4755026ad9d 18d25cf5-9ee9-41e9-844c-7d8a4f0bdab0 54d0c5ae-e990-4087-a6d8-18124c6a4037 aea047a7-c638-4344-91bc-7644863a3710 4c54b256-2738-4066-a387-8da36c9fb439 23de71e3-fbf9-4e39-988e-6cd59b6c5247 ea1ffe02-7eec-4d23-8efb-898e56d19315 bbd0506e-c57c-4f2a-883b-0b53e8868235 6df4630c-755d-4a7a-a9fd-afca3b8c4e88 c28d1e91-4109-4f51-b38c-7312639ec130 21c99263-cd67-42fb-bf96-5816342c24ba cba39fb9-e86b-49b8-9276-8a1b636de477 a5fcfff9-1ad0-46fd-ab50-2bc68b415486 14da1b37-8638-4112-bd3c-39064b371ced 7cee943c-bf16-4cce-8208-fcdf393b91e0 57329356-fa8f-484f-b4b6-7931e91222eb fc312a61-3d64-479a-b9b7-97a0374b8c94 3bacdf19-92ea-4459-a7c5-f83197d6f7b2 bcd065d4-2f46-4c78-adba-2377f25714cd 9a3397d9-09b2-4b47-bf91-8b84ab0bdb7a 646c6988-d4e3-4b57-8d61-418b124a2250 8faa59a1-b149-48b4-ac0f-5474f72cd015 065f69c5-16b9-4a16-a71d-8a51dd1d82f6 08bd5ce6-e569-40d7-9455-ceae972accc9 f41f81a1-15f3-460b-96ca-f3e8a679ec27 672fff3c-f06c-4475-bb79-7a27fe6a4227 3706371d-e4ab-4bca-9ca9-062d1063ddd6 f0957e31-fb0d-4771-b4fe-e4480313c767 83ba31f8-ba9a-4d92-bd83-bf108d2f7061 48f98860-d4b5-4067-8279-e35b364764a3 6f146237-100b-4005-ab63-99175c8d17b2 6a679e0b-0272-4cba-9971-27554e725da4 cd40016e-b88c-4de7-a1ba-0f84f827ff7c 6ae0fc2a-a1c9-4150-aab4-d055bf2af175 0e2e2778-5e59-416a-89c1-8d15ced55c83 05a122ce-d6cc-49b9-8285-4c62fd265494 95992162-0011-4a80-bcce-f0f8970aa91b 1fcbc7c9-5cee-4d18-8a13-630ecf35543a 2600df8a-2213-4a8a-adf8-03f246866cf9 e6f84c31-66dd-41ac-b7b0-ac48461dfaf7 60979677-39a9-464c-b696-ee899633bd27 ffb60161-8c07-40ec-b222-e25089ad5eb7 a0e4ff61-c76b-40bf-ad83-4c2b0471b53a 2f007b78-7cf1-4be1-b862-a55ae5d7ee32 2cbc7bd5-aba8-441b-a454-70f4abea38e3 a51b489d-c613-4ca1-a93f-c00062dfdfc5 4f123ebe-2413-4f8a-8c55-735d74c1482f b0be642e-4cfc-4d5c-bca8-2395552fc3ff 73cbe8bf-0ca6-41cc-ab7c-0818c3d1bef0 9dae69ba-eb67-4fcb-a267-bfd1c5164cb7 265098d0-9848-405c-b0fd-3ee8a4d4b41e 4ceee385-0827-4ba8-9667-15ae624a35e0 2907f4da-317c-4e7a-bdfe-f7c6827a256d aedbd014-bf0a-40e7-8931-271fad6b2ac6 951f2dd7-dc8a-42d8-9aec-b397a90fd2e1 6ced8544-422d-4dcf-a755-78e7667b19af 43c8f781-b0f8-4762-a526-6b247fde1f4a 01562225-e663-4dcb-9052-f61a5cde2aa4 4308bcb0-c2c3-4b6e-b064-e61e4746dd3d bf4aa572-b810-4e73-9227-31b619a3c510 dde90c98-7236-4819-8574-6374c70ca2fb 99e0dce9-d9cf-4a80-9c73-d658ff456a2d 8c6a472a-8124-4eb0-aeeb-696014dc9f72 046a7184-e505-4411-8c32-b057f06c13da 553300ae-86db-4cca-a54f-f708673a05ee 501dc3a1-562b-4778-b39d-ebc1f6f9ede8 ab3b927c-d70d-4fd5-9d41-ca57f114cc79 351fabe5-3fb8-46e3-a12c-6a5722282890 3d8ed62f-2e38-4b37-9b3e-0e07ace1c80d 1247cc19-5ca1-409e-b951-c0db42e56005 382df578-6d94-418c-97ff-298fa8cfb3cb 4594c73f-70da-42d3-842b-a843bdeb2201 6f4d2fde-81f0-4998-926d-b238636dc4ef a442c6c9-452c-4dc9-9b69-29bd804d6a15 d2dd3002-ffc3-4342-8af7-46514971f3ec 72568fb5-1592-4014-ac68-af219889a043 820f5f33-46a4-4964-9feb-441372a1a5dd d924512a-901b-45d3-a2d6-49a44382203d 4d3389fd-e649-4091-a6ed-8cf1ced34a86 d6a41520-11d2-43d7-809e-1994d2045f71 51a0fe74-7a52-4f81-9aef-853e5122cddb 8ea4069a-166d-4942-b34d-e1649d3aaade dae81af3-de63-42f3-a86a-e29513b4e735 8114f379-ced4-4e8f-b8c1-ab61d97bdb9f 05aba642-77dd-4052-a020-b5ea2ae0b488 a719f8c9-5c04-4e8f-8d97-e58d7f12ae51 b27afe17-b90a-418e-9a8c-5e51f70a2a93 517b7050-5376-4a31-acad-92694bcb4214 5ad457b3-f208-48a4-a548-13154be783c9 f74664e6-5841-460f-a746-3c3535cb6ccd 4c467946-8927-46ce-bcc8-5edaa49a8e8f 4b39c159-5bbe-4952-a3ef-35521ebd19d9 cc07ec91-96c6-4e9c-9e1e-d132e31403bb 95837eec-de63-44c8-a72b-926a3a745ca3 d3109205-079c-4161-8009-717fd8615ff5 a1437625-8a79-4bbb-9c1a-2747b4fe09de 75416c88-5ec8-4217-9360-99c357f87679 59dac473-9d85-42d2-a92d-ddb4327a967c 01ccee7f-c384-4252-beca-96594f71b599 aa113874-602f-428e-8405-e35c1ed254af 43c4df98-f7e5-4111-950b-38859c6994f8 973750ed-83b1-447f-8ecb-49dc16de6876 2f5243d1-4079-49f6-842f-96454ffa05b1 db1fde7d-8cf0-45d4-934d-e0f5112dd97d f929e8fc-ef7a-4d3e-be6d-b2ccf08aa415 8bbebc29-0e6f-4be6-ab59-4689804034fb 6bc2847c-9e58-4b55-9378-ac25b2ad5130 c1e1f910-5d5d-4eab-96ae-60d6b569ad43 935daa60-136a-4087-99d7-976ddee91577 eece5ad7-77bc-4910-bbff-ab6c0a684487 c5b0f4b7-ba92-4009-bab3-ac94fbe070e6 fc878c3b-cf8d-4dcd-a619-5d2f178d4e99 ef9e8d68-76c5-41a9-bbf4-dcbdc56aeb17 23a4e57a-6fb6-4c85-846e-c97077988834 b706221e-680b-45b0-a049-c796166720de c25fb18d-627e-4960-9955-ffa1bac14de2 763925ab-9090-4edf-99c4-96519b96abdb 88970918-a478-4d46-85be-09201d692b48 c7a72daf-8d3d-42b5-88e9-aaa12fa3168a eb4ec611-595c-4596-bdb0-9c2816c30d3b 732e2a6b-f5ba-4fba-a426-f3f7d7c68bea 9e092ee3-1680-4e39-a61f-fb30ff4a59d6 12f25540-a305-4684-80a4-c45faaf0eac7 97f96baf-c947-47af-9af7-0fc3334cfd59 16914e46-d09b-43a6-8991-c4b750f5471e 58ba7bd5-e6f5-4ba9-a852-a191038cc914 a34d8e12-9d25-4255-9dfe-3ffc1b732577 d3eac661-c241-4a97-a5a5-43d87c4d2292 185f60ce-e796-4ffa-aab8-f75f0a6d8612 032aca73-a149-4b03-9890-dc45608d6389 57f8c4fa-76b3-4835-b632-0caa300bbe7e 2b00c029-b23d-4683-b469-755950d555cf 45dd7b07-026c-4c61-9245-59361096515f 0883acbb-fcb1-4d27-acdb-ed92c3d5fd24 a4de1273-7b7f-4115-94e4-82d65f2f0061 3aa18138-79a8-49ce-a051-1b1232bc603f ddbe273c-4ba8-4a52-aa69-a599c2ff27d4 13e97911-f1aa-4ec6-bf6c-81d54a769edd 83e894be-1bf3-49e6-afaa-e04d173fba4e 05cacf15-6731-4355-b559-e4c3848fad03 46ec0766-a47f-4ec3-9454-05e983517493 a8fbb6e5-8e1a-46c8-ad03-fd41036f510d 5cb7fafd-aa4e-43fb-9675-6d12578b0634 da7b620d-e9d3-4e52-b12b-1f9b2b549719 5995c47e-c2ec-4b11-8ce9-fbed05c614fe a2526a5e-f95b-49e2-a95c-6b952e264b0d 07d49b0b-76cb-467f-aa2e-2fc474085174 a30ebc08-3839-4633-8437-936acec7b295 80d30e3c-1781-4ca2-aa8d-a7b3c1d99faa 95a30940-c13c-471b-9189-36cf8fc9f8b9 1fea9ce6-e137-49a1-9461-d6f023ba32e0 28f25fc3-ea09-40b2-9fb7-1102f956a5b1 95e94bb8-5ab4-4a11-b625-ba7d33bda4ea 287e88e2-5d17-4e68-a298-6fde8be3973a b3d4748f-d2f6-418d-9dbe-862fec4d9d18 b51623a2-8a01-45c4-8967-51feb8c09c4d faefe357-8943-473f-8db2-37f591ab4461 72197a64-bc50-4eef-9291-464e6b42fae0 dead7103-9eed-4134-be3e-17a0e9991e43 fcf14387-4eea-4f48-b2a5-3e2f95bde894 cb41bd70-2d48-4a87-8ba9-dd504074fdda ee762ced-12ae-4c2f-8a28-4a75dc511b50 b85d8c71-acde-4146-a821-ea83e006a65c 8414ec69-5fa8-4e93-ba98-51952ff8f272 364b3fc6-f400-48db-8cf7-42eafccb4e36 afa5b9bb-ffbe-4c68-bea1-7f8361f8a98f 9fc93393-9069-4b3c-83da-9b5d26536bf7 63404ff2-d618-4142-9ff9-e31d1953f36c ac8ac9d6-175e-43a3-b7ea-b8ec157f1479 852242f6-26c4-4af1-bddf-ec14e3d50d0a fa3c3c02-a10c-4daa-a5a8-c1cd0cecff57 6218d927-6c44-4d68-bcd0-ba74595ce412 090bbf0c-2fd7-4922-a217-133164e24f6b c069f6e3-59d6-4299-89f3-c3b56a33df59 bfbfb9fe-46c1-45b3-8818-6686d9c040ab 5932fb72-3956-4194-a280-37a0cee69024 19766b06-13f1-4a62-bd74-f59f32e7c042 25630c80-dbaa-4302-9cdc-91ead2530200 4a76d2f2-7967-42b0-92b2-2a149e7878c9 81a7d880-5b21-4131-94cf-46bdab2d8466 7aedac30-e8ef-49db-812d-2e0304b95eb8 9b01c9b7-26cd-4543-bbe5-06cccfe9339e c5e554a2-da0c-433f-879e-e7b145adc355 330665aa-06b0-4753-93fe-863f8beb9bac 3d4c4940-fd07-4b76-b958-4ad2df151eec 99647161-5ec0-4e6a-ab64-9a02132569ac 43cae6c6-aac5-4c6f-b36c-963e8cc57644 b24a2b1c-3a70-4ab8-8905-34880b2b203f 7f41d7af-e3f0-4edf-afc4-d0259537e0b9 ece8d58a-242e-4221-ba54-e3e398c302b9 aa6e3bc2-f8f6-4477-8786-bcd90fd04be0 2ab24c1f-34bc-4995-be6b-b74aa963d977 dd7808a8-d6b4-452f-9af4-5f7686ec9bc1 9922bf49-ca26-441c-84b2-80f52ff936bc d47b84a1-64e3-4357-8aeb-3522187e1879 0f0bb924-9c68-4f08-aa54-a9cdaeb8cbd4 b3791309-6e56-469b-ae02-930b8a03940c d52c8973-499c-4736-9637-e28af54d9ee6 3ace8e4b-d242-4677-bbbc-9999cb857f57 f8810e07-9468-4e5f-845b-d0445905e5cc d95fc796-332b-451d-8d5c-b6f3161d6c50 0c33c15b-21ee-4e78-a6b9-b2385da9982a 15d2efce-bd9b-46cf-9e32-b36d85ab88d1 f598d8ad-9a6b-499d-bdc1-0c4d9d9c901e 76614421-a32a-4a35-b21d-40434ce55055 d21fb4f0-dd5b-4577-8fe2-c2006e68a78f 17dd5d7e-6854-4863-8685-059ebe6dff2a c531e9ec-6737-4174-a54e-55c1bac578f7 6b06e9f7-d83d-418f-9b10-8473c8056926 ff6ba24f-7d03-4355-8f6f-3da251678a31 2eee6b8a-f87c-4b1c-bd74-8b11b3b4e1e6 05361e16-e328-4391-9f22-a397e6f1e327 c4f45ea1-0373-4704-9407-143dfb1c795b 9a840fad-f6cb-47bf-8ba1-43a6e836849c 887a3f25-ab7e-470d-bf5e-dd624582b36e 3d98be38-2f5a-4c93-9b6c-9d3f66d2cb0d 8abde1fa-9988-46d4-b450-019710020d87 d4bf811e-bcbc-4e96-993b-499624472472 b3435634-f0f3-4565-b64f-d2c9ae403a07 02c87f30-0a04-425d-b6a8-bc84cfe30ba1 99b4993a-4288-4536-a302-2cf9123396e2 cba5e2d7-1e12-4559-8652-32dc9f73ecbd 6b5a8b61-36d7-4d10-8ae4-c8a5867c633b b6c5bd2e-bcff-42cc-bf74-450f59151969 16e50823-dc3f-4f78-ba55-bc701a03de57 e3f27dc6-8e45-4d09-8f77-5fc71d23f80d 0ea955d0-1d80-4e24-b13f-4203a03586da f5f2595e-e861-4a01-a4f7-7c3ce2a9f4c3 4a1fa32a-581a-4cbd-9b98-89eb74039090 f31803b9-50c6-4cd9-bda5-9ca9f331b9ce 3ef38103-27e7-4ffb-9ca9-6b3257231861 ac2a6243-713d-487d-a07d-5b291ad13b7f 4e313656-6862-4233-8cf6-60b19a85bf58 ff016980-2e86-47d3-96ce-776bb6adca60 08004592-f351-46ae-ac0d-bfacac0ed6dd 853a2d7e-4b8e-4976-b6e8-57b79b86ef2a 8e5fcf7d-6c0e-4bcb-af7f-11e0e0bd2a4e 7161db3a-7b08-445f-8bc0-b64397d6836c 268d8eed-ca54-459c-9313-9f86847315f6 cb62471b-3f42-4352-b996-2af738528e98 11da89e0-fdde-400d-be64-1cdc9e4dc89d 49b37956-1995-42ca-a710-23387157d920 a21cc243-267c-49d6-910e-1a37b129b5d0 96f20ce3-4c21-4c29-ba0e-a8f7127400f4 66de4ee1-296b-4a07-9df7-fdb93f0189ff e4b95209-c73c-4039-b32d-30be698bb48b 7028cce0-b5f0-4da2-be3c-637fb3ba8d37 ccba54fb-f4c4-4e3d-a876-4739181a91c3 69ebf4e7-2845-4aad-9766-cd70c1240478 6c1e6707-e397-4321-8879-b527e8e21890 1ae0edc0-59c3-4299-abf6-4d9e780cd534 178c4aa7-eef8-4ea5-9b52-ccd1fb0b25de 4792dd0c-a34b-465c-a243-aee44bc7a5cc c5e02883-34e8-4ae1-9bc1-3d593768fa6a 7c2fe5f3-1df5-4335-b749-180f67f50551 963dd292-18b2-4588-a884-58a6c237abe7 c94a636f-6cd5-4cff-858a-4be4e23913db f04ccb74-c48e-4de1-bede-4986c196f35e 42831306-741c-4591-ba61-afd1820e8724 932d491e-1bf4-4eea-a38d-0ed362ae02dd 3a644337-4e14-46eb-a911-2c40111b0587 e3caa383-3a97-4e0e-a8eb-fae62ef6b854 b108a8f6-a99e-46e7-984a-0ddd43141c69 b0b97027-f3c5-470c-b91e-3301486de1bf 2918b913-d3a6-4dc7-a0f0-24d37ff38f82 67645a59-4fe8-461a-98a9-20870450cfa0 b991f801-0134-4339-946a-99a09aed8215 fb5ed7da-23a6-4c3f-b391-cfcef945e415 c1e48ff4-ccab-4d70-aa4e-45d260563e3c fc26f8e1-44d3-4215-a8d5-aa2fadf03a6c 8dae5943-c0c6-445d-bded-206a2e181e92 e6522233-e256-4530-88d2-f5a38caad663 55dbc796-9af3-4586-8cb4-f01c1e36f310 64304120-3387-4941-9a2f-1ebe66da3d67 693a0267-d12a-42c5-b66c-48c387bcd224 1feb5caf-8dbb-4cd1-a125-d85644353bbb 87d6d511-da08-42c3-9d9c-5d28ebcd283c a8ce7f61-646e-4fde-9dbe-c5bdd620106e c221cc3f-c325-4baf-8a0a-ac506ab24c17 c9f7559d-1363-4820-a61a-261a13acfd39 f7f71102-6778-43cd-bae0-31ac87d30f7f cb686433-c31d-49d8-b606-ac979952d76c ff82cfe4-d0d4-4bc6-8dc4-2e2a69dadbec cc9e7d9a-97da-46ff-b112-389d958da3ee e7ffee77-20b2-4cb9-a7db-87c5a0c77076 274fdd9c-2ca2-4f27-be0f-1fd67e77edc2 898369ab-24cd-4db3-a8aa-51f3a0e571c7 346583c2-3314-42d6-b283-05dd0b8b7918 12aceb4e-da27-4c3b-b770-7824d5e0c6bc b73c3bec-fc76-4be3-9345-4a599cae101a 1fa8f3fb-913d-451c-9859-71ec4b850c43 c94d088a-93ef-4e11-9e7d-444405b25a84 b12b7f30-c648-45d5-9455-277f2a9e1478 73b5a819-90cf-4dc3-a98e-8244086447c4 94058363-a18f-42e0-b0d5-78e473ddc885 a8fbeab2-6939-47c6-919d-8ec35cd140d8 e84f9dcc-7047-4291-99b5-35b384261d30 c5bde034-3c96-418d-8cb1-2c28dfdb8ef6 6471e0c0-b6a8-46c4-9b91-1924eae6bec3 a4000a6b-f18e-4dfc-84a4-ad75820c5166 32a16c7b-d4fa-4b85-8d54-0e405f55a1e6 1b809df6-cf08-4fd9-b1e8-5f95620c4b72 f455a018-3036-4da2-b76f-dc1b8e2a3626 b4c7b51e-54b0-485c-844f-c148eb754940 d9d0ff5b-f82f-4273-acc8-c77fcb707155 370a474f-fde4-427e-9ea4-0b4df99cde52 72b25fb3-b3bc-4596-87f2-01fb54f2f6a7 cc1b9667-705e-4b7b-aa42-38a07b480ae4 026eebe6-5b93-428d-89e0-33b2ef2b0a12 32d22f81-84fc-48e2-a3ad-2555131bb57b 5082f154-afa9-4b91-b2c4-9b49d6d492bd 8aecc012-0640-412c-9929-f834e5298555 940ada09-be93-4a09-adb0-a23024161e70 44e41254-5c06-4217-8016-921b9742b48c 55a7bf52-4078-4dfa-8ce4-963d964ba6ce c9eec46d-5c0d-4d70-911f-3a8c3bf10a4b da771004-0236-4301-8507-ebbec30affda 853c421f-6afb-4a84-91d5-08393c2bba37 7dc07d84-0ff9-4bf8-be4c-b5eae3579f0e 22d258a3-04f9-4075-90ab-a012a9c96e31 f08e7ca8-1805-4748-92be-a413098cbf78 fb1ad79f-a6ab-4510-a6f4-40a479ad052b ca8f456f-3bc7-4bda-a93d-bacfe19a1abf bafe339a-4446-4f3f-9cfd-9c0a4c5f4fb2 8bdfed13-b4cc-4bce-b93f-05d2ea9ed414 6496e628-83cb-46c4-baa5-a8dd766f82ca c8b1f33d-23cf-4b60-b393-ecdca5c59940 2d69f827-a08b-487d-b7ba-b51be3c4123b 4df4f302-6a6b-48a3-909e-3aac8ffcb9e8 9bb66df5-5206-4e76-83c0-2d17aa2a8c39 5266cdd8-e694-4354-96a4-99a70b581164 2176fbf3-af6b-47a8-ae9c-2330879c5590 d9ae2457-3864-4e32-ac7a-73880f9a6b67 f0f390b6-c3a8-4e7a-bc8b-df37866ea882 8f3f1676-de81-4b6c-96b4-eef5e243d037 66d4e4cd-4ac8-42e1-844d-4689ad3d0b46 49a6ef85-94b7-43eb-b535-3fe7c388b436 347e9a83-928a-4db6-8ffa-4879e497efcc 537698e6-14ab-4e0c-9fee-caeb8b8ccec6 03522a81-92c3-4005-bb5a-bb43e3deb842 b531e7ee-da61-4aaa-9b90-b1bf6681c81f d893cabc-2382-4971-bac7-c0855d1d41e2 2448061a-d8bb-44df-9d0d-b075ff23d122 be7fa09c-f82a-4309-a970-0eb9bf7436a1 b18315ad-3f4e-4d1d-b7e6-ea54fc0b9c26 bbe48e41-6d25-436f-bd11-1f09b0224b0d 29daec0e-a5fe-402a-95cf-8959a638c964 b1498aab-5265-4a51-8100-9369c978165f 71e96d3c-d071-4a23-b2ad-6ef011270ac2 40414281-7973-4cbb-95e9-45dd12411fe3 dcae10fa-70f1-4376-86bb-3887d0ed2d4c c402a100-f56f-4251-b86a-aa897f05ea85 13df3684-573b-459e-944f-da4083a291dc f2a8bda2-008b-4733-8aa0-9d16c261f29a a623ce7b-4633-4e22-a2c3-603430370b2b 95071d7c-8465-4de3-8f83-391ab9aa8ef8 d7fe5fd7-0852-40af-b1b8-4bb29d69ba12 a3e2807b-bb15-41fe-a51d-e0ac7d383222 c157b0da-07e1-4189-b209-4c66896d65ae 71d1e18c-9ea8-4ac4-9847-144e1f6c9944 0593c9d5-1634-44f2-bfe9-515c1a11279a 656ae874-a04a-4bbc-8cfe-c177cd5fa388 f810630f-bc9a-424a-a52c-eb9685f4a6c7 22bd8d6c-3477-4bc9-98e5-f6677df184ad ab75601e-f71e-4c39-be1f-974738c5cad2 93b4c805-d9ba-4d7c-9feb-601cbfbfec34 eef5ce38-0a3b-49e7-aeb2-c9d1be8bbb9e 025ad360-e993-4866-bd84-1668ccf311cb a1afad56-47f6-4684-ba9a-0e96a89ca5b5 7df71e0a-9cd4-47e6-b413-462dfcbb57cb 70c40c72-f2a7-403f-90e1-c9e986d8f3ec ef3152c7-65bf-4142-bc92-b73aef326ab1 d9c6922f-4fe9-4e8d-9045-29885782ec3c 32df4d8d-def3-4df3-bf1d-9e9a76abf90f 55a2bbf4-45a5-4707-9383-dd0abdf41804 6ba5d615-f883-41a3-9ca0-25e5194947b6 4c4f4e6c-2f55-49d1-be16-e57a69b25cf1 2abf0e4f-4e19-438d-969f-a412a68fd301 f9d1ae0e-b19a-4566-bd2f-4e46359cd3ea 869b50ba-d5b2-4cd7-9c83-bcb2c401f01e 4fb51cda-354b-4039-91e5-01bd968a6340 7c701fe9-e415-4de3-b6db-eddc093ac85c bae999a0-53fc-4310-800f-3607a9103f82 fec806a5-1577-4ce1-957a-27e50d409199 2cddbef5-1c29-4206-ba12-abc8d273e933 00bde372-1b59-480b-81f8-a6511fe9ba5d 46f1aef3-05b5-4145-9517-0bb74dd86f46 ba697ae3-5f47-4e5c-b6e4-fdcf7b6662cb 43504e39-9482-41f7-922c-48f1d1ecd730 5567e14b-ebb0-435d-b549-6d386b875611 8942c8f0-1bc6-4daf-8570-2c2aec488b19 29f36612-02d0-4be5-a149-35d5aed5728b ebb71208-4c5a-48fb-b063-e8bca970a042 0e356d76-d587-4883-8cf1-4cb241cbed04 1e75c648-5a51-472e-b25a-161c19d44e48 036baeb0-f7a8-4757-b5c9-a291778972bb 70b114a1-bf31-479a-a500-9adf9860e2da 54a82cee-5e1b-45b1-907d-3b8d936a1cc8 1ef77490-a9c6-4c82-8dd3-3d5956855b0b 07be05af-9ffa-4dd8-a040-de57902b750f b23d02b8-6e73-4585-a2f8-fe9a47445d44 4e8c8a55-7f6a-4b8f-af16-50678f35e66a 251b551c-9003-4d0b-abb7-38703411952d 7d2df1af-8d27-4188-8ba8-6b91d59dbd37 fa83e4f1-22ac-474f-b484-8ff0ccdd05d4 3116dc7a-4a3d-4096-a7ae-6e3b779f139e 6983a30d-adfd-4a9c-a051-d5a9633e1fc6 5c01cd05-5c82-4136-a7c5-5989f20ca1bb 636328fa-61a1-4624-98fa-54bfb3da1265 b5f86f0b-affa-4127-9cce-b098a9b880b7 29038de2-c3a7-4e81-9318-d23b9b7c6c71 2d19e49f-aff7-475f-8323-7cd8912c88be 9c94244a-e9f8-462d-a6d2-46f7a77178ae a5f6e16a-b4fd-4948-b5a8-394f1c8f85ed 37c53ce7-04f0-4b55-a054-0a5060f9815a 8862d5ca-9bb7-4edb-be08-902e20df50e7 c2b5fa70-364d-4b78-8eee-e40154d5ee85 62b59c38-944b-415b-aeab-dccdb95ecd9e 2bd2fa23-afda-42fd-bf70-2e2e4980c377 7aeffbdb-d6be-4dde-8e60-5f217d75bfa7 24b0dbe6-6598-4afc-a515-1d074107b5ea 046b6deb-5016-4674-8fb2-df1c4d79a04a 6e5fd7ae-98e0-4b53-928f-496ffd609a95 7cfc22d4-2408-40dd-bc6d-6623d6ae025f 2b1d796c-62c4-42f5-80e6-791d44295bae b6c8082f-4794-4ba9-86f6-712085211e90 8d745caf-ece6-4105-9927-81dcf7728b47 4b20763b-ffd4-4ae1-bdfe-f247262ad47b 91f58a69-de51-4ba7-8d7b-dfd5ff8e9826 09d571c9-2f08-4d36-a8ab-8451ae32e205 4f3d5dad-8bdc-4b88-a5c7-ea3e2fa9b0e2 9b113463-3f5f-4eec-9e0b-68a3d13a32d9 25469917-ff70-4d90-a700-6561a811cc7c 1055a225-bb46-4875-baec-89f2ef299ecb 940897f3-7423-452c-8725-8410eddd658e f1875b16-bef2-4676-88af-1b37aaed9916 c4a74124-5552-4d95-9dfe-23f42488bedd 7423d276-459b-47b8-9640-8816429c290a 23aaa73c-0dd8-4d0e-9cf2-9e003f064d20 4a81cd11-bbcd-4ad3-acd2-abb78e3e0675 06ff7b9a-d7a9-4851-8b4a-ffbeea865ae2 6b695855-2a03-4240-a8e2-c84b4333eade 1283cbef-f99b-4690-9c4a-c29dcaab8456 52b52b37-198f-4849-8d28-70f18ba393ba b8578142-dd62-4123-8eb7-1b79beee9969 0d8c8e84-dafe-41e7-a3d6-9bb76f4aff66 3cd327f6-1c11-490f-b6a9-e04dcc4c5865 069a32c6-b6c0-4b3f-a1d7-186b7aa9aa08 038a0862-fbf3-4155-9c2b-425b1570aaec 72ab1c75-00bc-47ea-9a94-38a9a8cfa99d a30a9335-7d4f-4e64-aaa4-f2d3166ea3b9 e1614714-fe21-4a85-bdba-5e7e4c48393d cdfd0c54-0deb-4077-9758-4e9badec0b25 2f40db27-df94-4bbe-87a2-c6e5db27bdf3 0d4f8777-eb7c-4061-95de-9d6a73e0e7af 640008d0-8ca5-44c3-bb88-253f9b66d06d 4e0846a1-6cfa-4c80-986c-8087fe0bef50 fa9285d0-064f-44d1-bb45-85255dec0d6c 89f0a155-d38c-4af2-9542-1dff2d40d52a 6d93a4f0-7a18-4519-83d3-b47101bcc4f5 9a5137bf-e36e-462d-bd5f-78b37df6c588 be71b8e6-cf09-4f83-9229-d0b77fa98989 cbcc30ea-c3fc-4449-8965-daacf1cadf1e d612122a-202c-45cd-bc5e-48b82343fe1c bd4a03f3-fc45-43fe-9a8c-c10c827da9bf 9d454c3b-33c7-4eee-bce8-6eef58806ce3 0fa7d3dd-60ef-47c3-8a3b-9f5bfdaadf09 328ca128-4181-418b-ab13-bdf4c918f3a8 99ff438a-3b88-47df-b365-c76d23c035a7 87f27884-b625-4e44-84b3-565195315a80 b26d9f1f-5609-4428-b5af-4c6161cc57f6 2a1d25ea-3c8d-4e39-b0cf-8bab7c476651 f66863b2-5339-4f31-9c36-5b9c92819096 a6b4607d-bf70-456a-8772-18185e3372b1 c94e1cb1-3e2f-4288-995e-489e338402c6 ed97da7d-1b85-4278-8eb7-866f193dd47d d17516c9-6176-4b5c-a1a4-e7bb2197cd92 61ee2fe9-4f9e-47ea-ac3c-8f8e34916245 7dab83c1-7b3d-491d-b1b3-3c3c3d148939 ba29fce1-db72-45fa-b50f-81e7ffa41a34 914c8241-e196-4eb1-a9ac-5f125584b508 f6f32a17-c9a4-44a4-a201-79986e7fefe1 47b6ef87-fe7b-4abb-9217-1f8a792b185b ae942925-e11d-4a82-a461-5dfbc4d7d4ed 6d821bbe-ed87-4f32-8e96-98ca5dc60cc1 54b72b91-7cec-4f81-92ff-bb0d3edf1fcb 456acc4f-d08c-4a73-9a1d-2573b1262789 bcd9e31a-7622-4072-94f0-b817529c0dc5 cd4d1385-6ea3-48ca-9079-a713aa753c02 adb71fa9-2985-4df6-859b-a80c03f62a79 2ca9a913-cf7b-465d-af80-7b394e834ea9 a8c2c77d-a50c-45ed-9950-feabc062a838 86e3fca8-cb29-49ad-a615-9c19dfa8cf1e 40c48673-6ae9-4f66-871a-aaac214cf220 800249aa-357d-4fdc-8a80-6de58d96a2ab e1a4e295-6c18-43c3-b739-7f29de84202d 0982788b-8515-4106-a4a9-517dedfa9c16 51ced89b-c2af-4625-b52b-f70ce86232aa 9baae06f-cadd-4c6a-9640-1af9e1112634 bba867cd-2eb5-4ee0-8ced-28abe9d2861c dc058dfb-61db-492f-92a8-0472b7a5f7f4 c57e1920-654b-49b8-a1d7-58785d1038a1 1775d4f9-33aa-4a34-a45f-889a3a371388 34a77b9f-e173-4c62-a459-af878697fbe7 a345927f-3bf5-4fca-b981-aeb0f37afac3 1acf299e-55f3-479e-bfd7-2e56c7894d71 b2e9fd68-531f-4d9b-90cb-629e562357ed 88837e96-caf2-4730-ba20-5e64f68fd4c6 3c1e387f-4c2e-47a5-bc02-927863e8161c d31a4bc2-1bbb-4eca-8447-97b0d740885d dbb1a5f4-a166-4aec-be1c-1f42acc9846e ccc61bc9-dea0-4b9c-b876-7d1f95c46c8c 8afc0993-213f-40c4-9a56-663bbb381f2f a36cd385-3044-4738-ba93-7936554153a8 be4098ad-eedb-42d1-8fc4-a63a78307a07 300a2577-d749-4c04-936f-41034d8930f4 2c0c7db8-abd9-419d-a01c-72c2e1fcb6f4 8f2dbdc1-c7c2-4adc-90db-43b1358c8484 21eb672f-a225-4028-b42c-74b5389a7d5d f343461e-7ec6-472b-8620-16ae9871aeb3 c5198c74-b596-4fa7-910b-1214471dcf61 e153e869-a66c-495e-8479-2f7aa5267398 13b21544-468f-4c92-84e7-c2e1fe327b44 25a9d8dc-d49b-4248-9b95-9c46f9b0bffd 72198164-c08d-4fb9-94f7-e9659b2588f9 aee7930a-4698-4661-9a18-b337a2c38d97 8e54567c-15ba-423b-abea-37a0c819ef1c 68280d5c-55e3-49fe-80ad-fd6e3123ab4d e86fce16-deeb-47d1-8ae0-fbea0e4ec2cc 676c0700-60a9-463b-97e0-9b7e49520c3a b64d9c6e-0934-49f3-911e-eee1027beb26 0c68bcaf-4c9e-402e-bb4d-575588956c62 b0380d85-8b00-4fed-b59c-ebd9e6d305ec 9cf22bdf-db9e-4425-9501-6624e6c174e0 6a4e904d-c983-4112-95d6-aa75b239f3d4 6740231b-d265-4a45-8b06-49b4da3627f5 e58c36dc-3d7e-4bbe-85c1-7a79a0c2dae0 47fa3d36-5f25-42e7-a998-5635902c1956 652c3181-69bd-4a52-858b-bbb6d8e004c3 2be77a35-1092-41a2-920a-563f5ff2aaf5 0af68fd3-fe5a-43b3-946a-e7ba72e355e9 5625c51e-e442-4e36-89a6-db6fd529a94d ce14c6d7-72b2-490e-8e26-d6ded1d25872 e43d294f-b06b-4a7f-800f-51876f7ea913 7a6f3636-3097-4d53-a31f-62f3eee96aa2 5c030716-b87f-4ed6-9a00-872acbc8a7af 7485f130-ccc7-41b8-90f5-957843e0fdaa 5247cb0e-19e0-4fc4-b30d-705a1d80ecc9 03d96287-7c22-429d-9eff-64f5552d0645 5e59e725-d1ea-4eed-b4ce-fcd49171d26b 943a936e-c82c-4898-8898-7519f84c278c c13201cc-8872-4ee0-95b7-d6e3d34ddf4e d9f17f4e-4ac4-4aed-b4aa-c7ca367bb8bd 7a568f69-24e3-4511-a906-d1d36458ab20 af245eb0-acdf-482b-8122-6f0125f03fd4 415171f0-1279-4f1f-9229-fc491fb8531e 617ee8b0-a877-4fba-a642-3c3a81acd85a d1df839f-e461-4f5a-b313-82d8a3ae22e1 201f7d6e-56e5-4d5d-9815-1b4eef66269b cba67de5-680e-462f-90ba-3ad2e4f065d4 88e65e15-c0c7-4a95-8a14-c155ebb8b913 44643c0a-93cc-4f17-b54f-8a7a5568774e f2ddc781-7784-4612-9d2c-8c41e7e5a3d1 dba48e6b-905d-486d-946c-c0a323f7e4bd b247caa1-902a-46ac-9a2b-2b1369931110 d2740490-7ef0-4f32-baf4-8637da5fc2ad da40248c-6cc7-46a8-b39a-319301583e1f 32f6e064-5deb-474a-a772-3847bb6bec45 c26a842d-f041-4494-b0c4-cd88d63e70fb 2752b070-879d-40fe-b2ba-f893b2d8c0c4 3e615c4b-0244-4e27-8fa1-3266aa5ed881 c74f2e76-e700-4fa0-85de-28f0cababde8 6adb41f2-bd31-4aeb-921b-fab6d7098aba dfbe3918-13dd-4c26-8a73-d2ee5c79f78d 11bff45d-044a-43b3-bc56-6378a2a4bad4 3067c5df-73df-487a-94ef-309e107e9418 762703b4-cf03-4c12-abda-b2b6d2697509 42411a9d-9e0d-45c8-9a19-528a8810c130 45c21e30-8053-4d13-8ca0-4aa273a21510 aae7c054-bfd1-443f-9044-f469e5b3dadc 81ce9bd4-994e-4d9f-b372-e7cbeb0e00f9 8317af9b-e9da-4186-9738-51dd04c74894 301012bd-7c12-43bb-a3b7-b48b35000289 9d43e0b8-bae6-4658-83f2-789ebcece9fa cf36334c-a504-40ba-8034-5c93bb8ce696 09b1c791-d400-4a9e-9d27-37370f2f8c30 d9cbf93e-22f8-4929-8c6e-042e6ae94ad0 d2ffa617-8c51-4aef-b170-9fea61c4e03a 454cc16c-ddbf-4fab-94ed-1f8c2effbb2e d5fe0977-1a4b-4922-8692-949acbfc8a33 e8765ff1-6cfa-44a3-8a84-89b040c2cf59 4402eaa1-1a16-4181-878f-fa56eda34b42 14b9ed10-0f59-4cbb-9121-10f55b38f243 43774475-76f7-4934-938b-84edf8634086 ffda19ac-9243-43ea-a944-3d8d55f0e937 dd3c3984-9d95-44ec-a92c-45b8f2e9b226 7b345398-ffc2-4a1c-af3a-c6d6c2b43a97 494774df-c0f3-49ef-87b6-c703bc6e2fa6 24a3c1b9-d0ae-4241-a0f0-2b4c157fbc4e e9a04ede-2121-4c8c-b169-8e9d3420971b c7286280-b3ab-4dc7-a0a7-e89cd991dcb6 4a27cacf-5757-4a9e-b598-b5fe467a6699 3b16ec7d-34ce-4c18-9581-7ebda7ca15a3 9acea9b8-2e1b-48a8-a024-8fb3e5901803 7a315834-222d-47e2-a3c8-f5d9ae3c5a1f 3ad445b1-0f70-4774-8ce5-b69c92831c7e 48073c15-8e21-40f9-a2bc-5a4d05b160ab 455a7823-c8a3-46c4-9d35-f13b7d26fdc2 0a695026-04cd-4249-a62f-f5036adb72ab 9f3fab8f-bdd4-4051-b23b-d122b087e85c d52e48b7-47f5-4a93-b0a3-6247b65dbfc2 f94aa3ec-bdf5-4d5b-b70d-8128ed8d9244 81026212-97ed-4912-88a5-3a67555d520b 933530c9-ef0f-4cdc-ad81-59534db56ef0 7ed12f30-0189-4b88-869b-f22a8c0f6aef 9f2341e4-3c32-49f5-9239-fe52062d0d47 2bde75fb-f370-4378-9d88-9c4a8978ec8c b655a0c1-7c88-4d65-8012-87d3c779968f 1bc28f27-6509-40d1-82da-170f817a05f5 896582dc-bdca-499f-a065-d496c9cc48cf bd372316-d07f-41db-a36e-16ab15c47ecc 26f93c73-c777-46db-9fa7-e460ceda704d db871442-7dad-4e74-9c58-a7dc7b5c3d4d 93748690-9a48-48fc-8e78-f5c5110f5406 87ded7a9-1b83-4d91-98c8-733525fc0a50 ef5b40bf-5243-43c0-bf34-7f0fb7e12139 77b0b91d-e4e7-4fcc-8998-829b95989763 47a9a28b-1275-4935-8763-3e0b5b404119 bdc6091d-76f2-41a6-989f-617ea523308c 9a22b9a6-840c-45f7-8c95-d536b3a2c012 08d7ef7c-b10e-4642-be71-476e5cb6de2a ae99266c-8d17-4a67-92bd-73460c56cbc9 a68fa14e-45e1-4e22-887b-478786d5eb55 3bf5214e-526d-4e14-9eb8-6c7743416a78 939b46d9-e53e-4100-bee6-0da8c26de5c9 47e14a16-bd83-44fb-9e28-faf9a148b869 6683703a-0027-493b-b374-7a70e7bc0992 195b4bae-3362-494c-98f8-125471340960 4100a513-0442-4334-80eb-668646121d4f 5ab4b577-e256-44a2-8f74-b3af05f5dcd8 75fa6e7a-803e-4057-ac4d-7f2b53943143 7bdb18b8-317c-4c47-bd1e-33301cf73a71 acced79f-fdb7-44c9-ae53-d4a6288ec384 f9742ff9-f42d-4402-9d4a-4807f52f4614 125dd4ee-b1fc-42b6-820e-b5a830a6649a 29a236d9-4589-45f4-864d-417ce54b74dd 5811cc8a-5e4e-4f4f-91fa-8bae6d7bbcee 9f5f1fd2-fe83-4d49-b88e-c7d4c94abbfa c31d857a-17c9-48ac-8871-30da10fc3547 42b0c297-6b25-41e0-8173-3a76fdb2660c d4ccad9d-696b-4b5d-8ef8-e1059a0a8183 0b80b557-fb9d-4a31-910a-c87f52389f79 486fd274-6a43-4c7b-86a5-14dabc869393 7c17274c-5f46-4974-8670-f2d1915c2693 12a6a15c-e25c-4a0b-846d-993f8e12b84f cb8bfc8e-592c-4c6d-b995-47e3ec064b9a 3cf572a5-1f4e-47d7-8ab6-729a82b3464e 8c7de741-1c11-4353-90cf-26676aa0b650 0b92c809-3679-4e9c-bab9-d501447e626e 8f59c090-6099-4a0f-af5c-1ee21a5727a9 e1ceeffd-a0de-457a-90b5-4950d24919a3 254cd813-46ea-43ca-9633-7207f42fdacd 8457604c-b90c-4740-81ee-091df4693028 e456eb18-8f41-483c-9326-9e33d6c9ed1d 7f31e3a4-f23b-494d-829e-00c13e83b849 fea75cc6-759e-48e6-bdf1-e59598e3cbd0 6c297f19-cddd-4027-a76e-6bab871014a5 383e561c-e9b3-4ffd-8131-5ebbc18999e5 b7a9b1b8-b236-4971-bb3a-6b5a17698865 1d378a2d-50a3-4c22-b933-bba4f79d171b 5657500a-db14-4da0-9407-765ca9071dd7 2265c251-82aa-44b6-a9d2-5b05b96ffaef 241d4baa-0fd4-47c0-b13b-23254c0f3556 522ef9f0-4884-4313-aa38-6bb353f2524d f3f8fc80-51cf-46d6-8fec-4a81f411ae72 4d371c5b-13ca-4a2b-8953-c753780c1eaa d7ab7438-0216-4e6f-8fd0-e4f3e8c350f9 c2c078d3-3ed1-482d-8f69-3369648e552a ec5cc619-b88f-4bd3-85ea-dc17c0acfc6e d0a272d1-0488-4504-b1f2-78cc2de88a86 1094250f-1562-4f7b-9d8b-af73c0398d6c b541e5f6-1a99-4708-8c17-8f7287676929 963459a6-817d-4a10-8b24-830687d180f7 1dc41f89-03a8-4671-98ef-1980b1368356 15dc21b4-d82a-448e-b04f-4432727dc92e dd607a48-4f87-4c65-b7c7-290041f90593 144bd08b-efbc-4d60-9702-cf09bc343e99 67da2d7b-96d2-4862-9ed0-9517365401e0 7c25f619-2c2e-447b-9c2c-cf062c69b5e7 eefeabda-0f58-4ed0-be1e-a83e22ec6436 293ef89e-def3-4ed9-a9b9-8efb7234430e c2739e86-b04b-4af9-8f58-add2c2cb501c 9b403f68-7daa-47a4-ac34-dc4f6ab6e69f 7e979cdb-f0b6-4bc2-8f9a-bff17962743c 8f063613-c9d8-4c2c-bffd-dcab748d2536 ec3783a8-7dd0-41f1-afd0-9115b7c3f854 be20c324-4fbe-4df9-8a95-46f443fb9a67 1bd05de2-3cc7-458e-beac-59cd8d88666e 2ca9abd9-b2b5-4158-8019-53fb8ea0c76b 1819ab49-0676-4b58-a1ce-7b6f608869ae 56a2ebde-b587-4d06-8846-8b118d0eb06c 5e438657-eb9c-4317-8680-36eaa1cb393e 5ee9215e-e675-49fa-b6e9-646699a8c5ac 07c88d31-6804-4a2a-8983-1001fb0c0768 d026a4e8-3c98-4ca5-9021-be48587142f2 cc61718a-d748-4dae-a213-8f08c1214936 e68ba44f-4920-4e18-8d08-0f19c5abebe0 5007021a-8963-4449-bf5d-312a613d47a4 a1a2d8be-6917-4831-9089-60f4e5bcd421 cc7d58b3-8512-4751-bfa7-d946a5a00764 3480f615-0e17-4c05-9f91-1c98cb208c99 15fccd22-5f0c-41fc-9788-3d6ad65cbbf0 eb39565e-5516-437b-892d-2cca9d8b946e 07e801b0-b5dd-41b7-b4cc-1b2814e4d331 031fc9ad-cf66-4302-8b4e-3fee962e96ec 51e687f5-f49b-4c6f-b1fd-3df350b5ca71 e71debb8-c359-452e-9d1a-9059813631be 3efaf25c-5dcf-484d-84b0-2eb97b57466c c1ad9fbe-c08f-4aef-99fc-733c615239e7 c9b8d845-0491-4bba-a692-2462266df060 78cf6f53-06a8-467b-bfeb-09cbc06a0747 e1808df2-470e-4477-ad0a-d45b4e68de3f ce292839-6e62-491b-9977-ed6cbec59fe4 62756136-4b0e-4883-961a-d05bb4b03a07 448d4852-9864-444e-bf62-da3802a35d42 d210577f-969b-4cf6-ac63-e7fb6e040acb 5b6eb6e4-b205-406f-b711-b9c970dc908b 1296e3cc-10fd-4aad-b0ae-83fa792edaff 4ce3dacf-afaf-4103-a137-608adfc4e02d c791bd10-f31e-4f2b-a4e5-5a12c8946305 2b7893a8-5f69-4e2f-85a3-32990f549026 feb5db1a-5023-4c57-b000-84116c0df7fa 3fd89142-98f6-47fd-896a-7e4a0301c5fb b511ec64-1ecf-40aa-a836-1ecd6e5f6d29 dfd22378-c3b0-40ce-ba05-701d15dfb5f6 3c0d2e20-4a8a-4f86-885e-59289e10efd4 958939c1-1232-4f0a-8f25-26429bf07463 dfb73dae-9c8a-4e26-9a96-06c0c5a01959 cd68d6dc-60a9-451a-9668-a6a46145df0c b0e60ef4-9a0c-49a8-b23c-bbd5a475d79c 6ddd3298-fa98-475c-9f4c-945f7216955e 35263b66-72c4-428b-ad3f-3b3de4b06516 1208d5a0-1aca-4b73-b862-e1d0ac3149ce 30ee4114-f86e-4c51-b896-769c27c256a6 fc6b1cf2-c592-4e30-a24c-3a9b0fad9165 2822c49d-52e3-4ff0-bb05-a9830cf544d3 4e5ae584-f83b-45fe-a2c0-7afc5bd206f2 789c2a21-4774-4369-acba-dbd50df81ef1 4052d78f-0b8e-4857-972c-2476e5df6a77 57f064a1-21bf-4a9e-8dc3-28297885f385 6ee42656-567a-42e8-bde8-22731892dfb0 54812685-39ba-47b0-950b-7227f691028e c8a34bf1-48d2-4baa-a54a-cbe906be525b 9ec87ba7-9749-412f-a6bb-08b22699c0f6 08ea0dc9-e886-44dd-84d5-4feb7f9e8d9c 6cd89a74-5209-48dd-8dbe-3dac97f7838e 26cdfc6f-ee24-4de2-88a7-ebd599c50de0 f77d18d7-14dc-4ae7-a595-cd23013b1a40 ba573a9a-8024-44c1-9ccf-56fd8e5d07ee 2fc35e6c-6c5f-4203-9d9a-7d8f3837aeab 2a934b17-ae5c-4868-9abe-399919fc2403 bd4baa1d-ec2e-4a30-b066-15e0425cff12 dd39ed21-aa96-43e6-85e2-2cc3bcce8336 6e221ab6-f837-4dc7-ab9f-8c9e1bbc6ac9 80dcbf04-ba99-4cff-a232-e36b24776dfd 654b9957-05e9-45ea-bf50-183b1dd15347 73b8cde2-c624-4bb3-bd37-dcdf7bf4ab8a 6cb8597e-22d0-42c8-9ec9-6277d901ebfd 3211a540-504f-4b78-86e1-bc9f58755ebf 57fb8e03-708c-4da2-97bc-bbcf0746e52e 27e3ccfd-44dd-483e-aaa8-8771493c69de ca95aa85-36f4-4c49-b893-d5358f5c389c 38a6c25e-20eb-4a23-a621-5c219708d08e 6a48d95a-0996-456e-b7da-8ca62c1d562d 3bbe480b-e26b-47c5-b723-0cf3737cca35 8ad8e6bc-27f9-4362-a729-3416a1428db1 b27693ae-daa9-42bc-a36a-e3ae38534d6a f6dc86e4-6715-47af-8b24-11e557baabc6 86821ec0-3721-41c4-8ca2-b34e1fbe9df0 fd943c2e-bf2e-432a-8725-0a9a1821eb16 ab660334-0c8b-447f-af89-26ead05817b5 11dc74eb-beaa-443a-814c-9b87277a9658 62dc95bf-d085-4255-844f-3c66aefca445 a8ebfd9d-4349-4947-9311-b1d4c3e18296 dc48466c-ad1b-4f91-bc4d-0933592d475e dedef3ba-ef63-49fa-8768-288e90c8c21c a24107a6-f497-4b48-890d-6502a9785dc9 8c4ec8f0-272b-4a57-84e7-bdfb81186e58 9651a9b4-e86b-4115-aae5-dff3997da9cb a589acc9-cdec-4672-864f-f6eea70608c6 61765a56-85d6-4577-93c4-e4a50dd7f75d 3f831567-c4f6-4608-b017-6187d887c468 a7258f29-b555-486c-9bf6-037febbe7265 c41961cd-35f8-466b-abf0-f6cb24b9b3cf 19a5305f-4237-45d4-b130-a3afc383ec15 8f0c2dbf-3160-4cde-94b9-3c8243d7e047 4982b699-c513-4a1e-9e74-83adf2f6a7f7 b9c6d2d4-e043-4061-82e0-ea23f4d8a660 ee3b6fc0-4e9d-4c6c-97e9-c64d39a83365 d3686b4c-5968-47e8-96e0-7b3c49159003 b03e0c64-4901-4d06-875c-37e7723d49b4 b1ce2398-f5fd-4df0-947b-d8b1e2c5fbf1 0f1178b5-30f1-457d-ab8d-2617d65da596 fe2456ae-c543-45d7-81bc-fcbc8eaf73a3 5972f1f8-004c-4f32-be55-2e1cad506fc8 d872f51e-2517-4efc-8087-af45fccdee1a 7cb5f4c8-26e7-4f77-9a52-7aced45d5d24 28dc015a-9c62-410e-840e-656ebdcae206 547c9dbe-9686-4744-b338-096d4d46c178 04254a7b-fad0-41fa-bece-5cf3c1f783ad 63e635f6-bcf9-4a60-bc16-c00e44d014ee fe0d84df-0c79-4c48-8f45-422f415a35e8 9000c0b0-c431-4294-a2dd-d42ad0403989 94fc1318-5be4-440c-b6e2-59ed93758d2c 90e199eb-5d3f-408c-9b7f-517adbbcea94 6fd47f1c-802d-4729-90d2-d60af81f9f93 fb981239-591f-4db6-9384-fd999542c24b dafb1346-9fb5-49a9-9193-d2f93f67a4cc 608f15e0-3ffa-49b2-af31-1d725e757593 1e1de41f-bb90-4cee-99fc-a36af500e6a6 4410e59a-ff4d-4349-8f76-454aa395712e 09d0fbd3-e953-4acc-8c19-eba6bd3593dd b606c86f-8dce-4405-b487-47fd7c4ab3a0 261e77c8-ff8e-41e7-96fe-2bca2d885b51 6720e8c6-fbab-43dc-9b21-0b3acc124579 b2617f21-bd88-45ed-b942-dc0e128a8e38 0bb4b993-9c16-4bb1-825b-3d634a319fdf bc423373-d3d3-4964-8d71-e7feb186c78b 2923745d-3573-4bb6-8203-90045f9b734e acf78759-6479-4349-a9cc-71dd1907dc50 52b36f81-a887-4a4a-8afa-711c7bc043d7 4c791c62-6999-4739-8575-4f49d641774f 958faf88-07f8-4a04-a52a-d211a46d92b8 7c23705c-8da4-4056-addc-247223b51a8f 461cefec-366d-4d73-8a23-d6513b5abb16 3b00464e-57b3-4a68-a9b4-71902a5ac727 d77171cf-01cc-4e2e-b589-5168c1d7745f 5d0b0fa3-acc9-42ad-b82f-b588b4b3a335 a23a0146-02cf-4022-93a6-a5e56e6d80f4 e9866f2e-4e91-471c-9575-a2468f6a2dfb 9eb57ee9-a306-4722-a0a1-d1712596916e a536c41c-d8fa-4184-a76c-71f102106a42 31fe638f-4911-4b7b-993d-5147ee79f39c 342370d1-78d1-4cbe-9e72-c07ea5ff9bc9 a570b04b-e668-4adc-8790-50fc137906cb cac895f8-07ab-4f1a-af62-f216bb9feb17 17212ebc-c970-4423-bd98-1d54c16acd7e 40285c6d-44c6-4ccb-a03e-08f5d74224ab 271f1d07-4fbc-4d86-83db-979df7cb18ac 0c659963-5e6e-48f8-bc5e-9069e910cf42 3ec4315f-7b23-4106-84e3-dbc701c2852a bff90b2a-cb46-4605-9f8a-9e0f8c397a59 406cf40f-c6db-4238-808a-1d2c836236f9 7b21520e-fb50-469b-8002-1a65d9c533b6 8b63e748-7850-4f76-ae6c-c201804f9c3d 4d4171fd-d22b-4399-b3e5-5ecb390cee5d b7d7dc19-4a59-4f28-bbb5-7ca104536492 349e44bb-47e4-47fe-ae11-a5c7e0e18fb5 8397a54a-1e25-4108-bcf7-81f90a830f6d 79b2f592-f6ee-4187-992d-76a03ea919f6 5dd21989-c836-40bc-aad6-be3cce572f81 ba238fbb-9225-4fea-a0ab-caa783acc8f3 8af562cf-db25-439e-97f0-2af446c56c20 8b8cd884-dd0e-4534-b92c-52dd8e9ae327 9cd9fa73-a0d6-413e-98f9-2c57c11d96de b350048d-c7b1-4d8d-8b26-0c74118fb6f9 a25498fa-5015-476b-875d-2373436f4d83 a4d2b315-4c95-4acd-90a0-19244ebe80ad 6b1cb13e-8410-4faa-baac-a2b15ae053ea b9b092f0-fd98-4b82-a032-acb54b466af1 7ecccc4f-841b-4f08-8c90-1b464f0dff6b e4846918-f144-41c4-95c2-655020eeee24 994ec039-6d5d-4d43-8204-bb17f38ec126 9732106e-633e-47a1-be4a-bb6014000e06 2d027834-d399-4bd8-8e0a-adaf69e8a2d4 f2b51340-8834-4e38-bc22-933fd15ae2f9 efd2817b-9337-4eeb-8da2-8b9d497ba75e 8b944d83-77c1-4905-a087-f06171ad4ec0 3959ac77-1e5a-4615-9aee-81e2b7457af8 14ba5df3-4830-4cc8-8c3d-d165df99a992 be348ff5-0b24-42d8-a369-14622db87607 33ab9c80-592c-4a1d-86cc-9d49548644ac 8c162bba-9a29-4d42-a745-644587a59ff3 167efba9-0c60-4efd-8562-93e1ef618295 d186401f-1632-4c42-b119-2543526eb9ba ee4bf659-e092-4eab-a308-c0fa6e22bb0b 4115c751-724f-450b-9f1c-70dd30b68275 d66a8f6f-48ac-4adc-8675-5b56bad60046 2c89c871-4ff8-4c0d-8476-4ffad61a32fb 0c6ec0e3-56e6-4753-b6bb-0751a0b6a128 a658d32a-9d87-4f40-86aa-5c8bd20fe037 62b8d11f-9981-4fc6-bc6a-637371491e6e 5137f2c7-9995-4eee-b256-73e79522a95c 58dac73d-81dd-4bad-8ea7-7e10291feda2 9b8f6f95-fc26-43c4-808d-7fd7f9cd46e3 408089fc-b05e-4a10-bb28-9d142d4fa8fa d309c30f-e86e-43eb-8450-95650610f0e5 a8c5f64f-801e-4eb5-a260-38717e35bed2 c0ac2322-c5aa-45e5-b0dc-482ced20bcda 9dd765cd-1f51-4e3e-b4c1-28878920009f 0dc89173-3380-41d7-8aca-d1d79bd18c31 c2078082-c9e9-473d-8f86-b8ba1d0eaa9e 9fcd7714-5601-468b-bbfa-951080bac1b2 2dfec8e8-c094-4e7b-8c77-2b65a4ec8b12 a5a837d6-7acb-4f80-bd19-de5a6e24b8ac 5d7b81bb-ad45-4e54-ad32-75a7f6b1b3a2 a1b5e9ae-74d6-4186-9378-a4d097ae6467 c0a3b57e-46e6-47c8-b1e1-524f14321254 dffb1e7f-950d-4eef-9409-da00bf63301d e8355b75-1225-45a4-a0f6-e00bd15d1e1e 0ed6f965-1a31-45ee-b6c5-e02f02753f8a 0e599f5b-4f58-44d7-8541-7aa4184a717e 9d75b3eb-7e93-4a05-9075-47077ffd562e fca36fba-47ca-4ca4-834f-55c305c3cb08 bb9f24f3-47fe-458f-b97b-c8bb3d765985 fa33d480-df79-4a93-9f7b-6619f3c4d72a 0e4e9bbd-8ba7-4f23-adbe-c07af90f3d4d 3ff5d1b5-bb59-4fb0-b5b4-8806747cda9a 5995ca9e-c375-40c1-8786-0d9ec901b3f7 b80bd75f-6378-4385-9008-8974224279a5 ec51df62-6be5-40f8-9eef-46665478b77c 644796a5-2620-49e8-922f-372056fcb0fe 729de87b-3e64-4336-baf9-f7ce3068d1d0 5e6e671f-a5ae-403b-8f6b-8c51ffeb2424 f086ff66-d3c5-4c66-a375-fcd67a47e37e 8fda0806-f9a5-494f-b3af-4ac16e7fd067 763335be-e9c6-4227-838f-4bc33044ef45 1cacf7d4-3781-458c-adf7-d5180e45ceba 183a7b97-4cf2-4065-99f8-c88f86269971 c2b47685-27b9-4eac-b84e-95e9af6b864e 3ec45998-b9fa-4a4c-b84c-1290fb97ef88 54c5fbf5-82b5-4982-9bb0-8eb86286b132 acbf74f9-bdf2-4077-9e08-18008855002e 48b34c98-2cff-4884-bb5f-0a790c4b3a2d a2534459-2264-4518-b35f-d39c442a2ab5 5081a29b-5532-4c08-b9cc-a5298c4359dc a5ba4634-6689-4512-8a0a-3f8f504f5606 ed5f736f-d70d-4f48-9e46-ab6fea7666dc b4e9cf91-1279-4326-9256-166459612819 c368a729-48c5-4a24-ac0f-f14d78995c36 9a2c70f0-396a-4d6b-ae91-6055245a0f3f ce0c3a41-e6be-4480-aa3c-224d51f231d6 5aef1e30-5b8c-4e7e-8c27-f98a452dd7f6 7cf7b1df-92f4-43ec-ad79-1866358ed0a6 c8580471-46fd-4ed9-a587-1575312ebbe2 5af5c6cf-f793-4ba1-9a2e-692c4ae07600 bf7ecb6e-2478-40bf-8707-c2c72f24fbc6 cbadb6c1-4c8c-4fed-9f13-3de62843d8da 531ec13f-d630-4c20-9f49-47293295d426 0801f7cc-2fd3-4359-a60e-25059a28b419 3e42dfcd-320f-481f-a176-66356749e024 5fe1ec64-ead3-43a1-ac58-8d76d722d5b2 268d6e1a-aa2c-49f3-b0da-1906aee1cde2 58254fcc-068d-4fef-b5d2-2806ec7ae94e b810b4d4-6a41-485d-8737-946a9a121e98 15cd8866-e0ec-4a11-a511-104bf0a7c915 8c6bb3ad-76c5-458d-a8a9-fb230fe47575 3809fcaa-af78-4638-93db-a260b1e09a08 9a332e96-732b-4bce-b37b-38c22b3e5417 6d32a9a2-086b-472f-b502-caba205ed050 95290ea0-d1ef-4508-b40b-2ead6e1cb09e 4ee9da38-9d85-4af9-bdc0-8c52fc9a4214 49520f99-8aad-4ce4-8a8b-e9df04af406e 7e4ed57b-11e6-43a5-bdb1-c63e9982c5e6 60829549-076c-40a8-b586-7c6f35516095 fec8999d-68a8-431d-9567-72a5c8248c9d def30355-074f-4879-b47e-f977e01d13f2 53a710cc-5fc5-45ba-8be6-f9e34aad4e6c e2c6ccb8-947c-4a76-a68a-3c3e528a1da1 7d03a219-2535-4969-b242-a64f182c5bad 3275e0af-6058-476b-9943-c7e7de2f0a40 78d7daaf-5e6c-4013-88ae-a0cc6d3c5484 f497f3c1-6f91-45e7-abbe-b7d685209124 0c941535-7314-4c73-b3b6-27bd51fca38a db0e1e03-0123-4436-98ed-d0eaa0d04766 e27826a7-879e-49ed-b71e-fe0f4e676b20 ad22afad-71b7-4f1c-8c12-5d371c42a463 2da4d07c-a279-4041-81ae-6491dfab2035 dfb315dc-8907-4978-bacd-5bd00b0a130d 48965571-78d5-4c53-8ea0-a0cb949c494a 84493b15-f045-47eb-9c22-a04a580a80d0 51fe5766-bb26-4557-a9d4-b8fbda19e07c bd31ed3d-b5b5-4e84-87b1-6c32dfe427d2 211e2c9e-83d4-43fb-a6c7-b2f40b8c1337 56ef8f56-66fe-49a9-b06b-1b279bb1758c 7267d129-ab20-47e8-a7e0-e4ae2f5b8866 c65eba65-0653-4518-a3e2-2b2c9aaaf1e0 97fb19d9-4f51-40cc-8016-f1ec31bf3d9d d0bab79b-6d9a-4243-9b0e-addb3b3851b5 111ff940-9b43-4439-bed6-0e910804f807 15e31508-24c7-4b15-b7b2-efd30bffea52 23aa3fc8-b634-4266-b574-60c33f11df12 d35b8978-2e6e-474e-8117-1bfc84a4bf2c fbd42d1e-11fb-4911-a750-9e0373518666 c7da723a-4fea-4c1d-96dd-3a1fc9358139 a66b6dbb-2ece-44c2-b3b2-98567e4846ce 2797dd71-65b7-42f3-a272-0f07d34bfa73 f170addf-b422-4845-a62a-1c61aee6dd29 cddfc6ff-c137-4e72-8c6a-bf3460df11d9 294e8145-b90a-46bf-a38f-e87c22b284c2 43695267-5a6a-4230-914c-dff173d6df9d a229b705-b3db-4dd1-b308-c374a20ad05a 2345117d-3e16-4d9c-9171-771932ca3dd1 5e3f3102-bbdf-4b8d-afec-aa77b239ea12 a972cc1f-6c37-450d-8d9a-4c0a4b2b62f5 7e0aedb0-82c4-40bf-981f-0ea6474ea09e 7724f41f-2070-4421-8bd7-12e0720b0804 e84cf7ad-1d23-4d3e-8ae7-3462f8c9e54d ce867556-749c-4a63-86df-9edccd7f37d3 2d57b7f5-8735-4da4-9238-047312135e9b 1586b3df-2176-45f9-9294-a3be1689509f 43394ed9-2e70-41ac-9a5b-7ff370acc575 438416cb-66c6-4700-ac05-7aa1c7522bf1 ac2fa63a-512b-4358-aeb3-6bd232d360b4 8228ec1f-41d5-41e1-b050-5d19520e8db5 475635b9-da3e-4e4c-8aa1-1391ad17c532 4b1dc4a5-4b43-43d0-91b9-62dee613f15a 1e48a6e0-f327-4f3a-9bfb-0b4509a5eadd a7e12987-4321-4de9-8bd6-5f2e3fcd7d02 f476b8c7-d662-4ea0-bda8-7b1e3c309e53 01b1b112-35fe-4a3d-8f87-7e255be83746 b11009f0-af0f-434c-94c9-06a30525641c 306bbc70-3b30-4f89-b69b-d4763333aac0 fc7faff4-5006-4ee4-8e10-f02aa13d98c9 daeae108-3ff8-494b-9cae-94761dd8b73c 03cdc1b9-1ebe-45cb-b9b8-f894e6e1fad8 40726be7-9c18-4ba5-8567-b04270419996 4c86fed4-a5d9-4f07-815a-bf292f199bfb 0ce2cf29-2027-4fa9-8efa-d8fd04b38383 837bceff-e8dc-4b38-892c-2992e57d0a5c f9c78830-b56d-4b8d-a625-18b6d88213e0 891b98b7-8ca2-4f60-9501-f391f3a62175 200a29a0-2e6a-4c4f-9910-93a2816ead5c ab40d9bb-7745-4267-b82d-6a917b790b09 06ce61d3-6bdf-4244-b267-16e461ee3732 d9a47210-5fd0-438e-9c9b-8d11e0689e65 4df9330a-ddeb-4c1e-9a95-ea16b23f8017 da12ba04-c839-4d39-8c63-0a007f760d84 4ec759ee-608b-458e-89d1-ae81bc37220f 180c9d48-45c1-4d0c-83e1-025c7a96cd80 e84279b2-54fd-47f9-a2fd-7e283cbfeee3 8131ebb3-c6cb-40a0-8fb3-717f15e3311b 34a426ca-83f3-4165-896b-f690c704976c 7b594ce6-7013-4e14-a7b5-beee45a221f4 4013173b-6270-4fb2-808f-50cc69051395 c1d7ecca-62e7-4297-9c17-dc835a6e6d4f 3488aa03-cbe4-4f5c-b424-5a824c8cab18 ffc4c3a6-9109-472e-9153-3b60b79d2790 baafb023-e058-41ba-8839-628f24b05672 8ad467eb-2bd0-4d3f-964d-afdcbce4e9ba 1df470d6-2ac6-44df-955d-49f63ab4efd0 f769bc6b-5dd6-4219-9040-8ef4ccaab850 3e1f22ae-1cc3-495f-a05e-45811808ddbf c6b9ceb2-7bf9-4731-b9ec-33e4ec705b81 20d09aef-c8e8-4975-8821-b77390272c9d e90f9a4f-762b-4572-9e0b-52aa25944e09 876f0e13-167b-444c-95c3-e38b06bad820 6397d055-a3c4-44f7-aa8b-dde2891aaa4b 27f0ba00-e939-4f22-9e6e-10140766b27f f0d61f86-5e2c-44da-8c49-8f274664f02c 37c6ce10-b72b-44ca-b38c-61cb7b859812 bd3b8799-8df8-42c7-bf07-6df9ea18917c 871264b7-cfce-4c22-9465-9dedcd1af936 7d0925ca-bf9e-4fa8-a22f-f26dd538038f 5e00e929-f968-4aae-aad6-9faad4632858 2eb83826-c41e-4489-8145-8b6dae33326d c61c79fb-23f2-4c48-aa55-091b012b9240 5df4cc1d-507d-4881-afbf-3ad639510c0b 873f350e-55f9-4dd1-8e42-7456d8062244 2cc92604-9610-46fa-b693-313f7302ae78 8fa99851-c123-4aa8-949d-8fc05a35935e 98af7357-922b-4240-90d0-14e30ff4b25b b316647f-1602-4b8d-ae8e-2c9b9aaca0d6 cee2cbf8-43fb-42c4-a816-408e62955c8a a2bce4eb-a9b9-476d-8377-9f33aeb20e5f cee0ba75-988d-4404-a556-7e3c5384843c cedf860a-d7c4-4e27-aeae-577c7aff6bc8 7f7c31f1-53d8-4725-9c79-cb1af3e1b5a5 8b948e66-23f8-4064-8f9a-51ec5db15b84 cffb25c3-118e-4e2a-bf62-b53ea38bf76b 95927eb9-f557-478e-9f98-c10c143e5e52 6106aa4b-7165-4cf6-8ecb-7900f26c6e44 fe7ac601-436c-42f1-adf3-ae9f81cc9576 71b86095-c82d-4906-b551-42ada07bb3b1 681df49c-cf22-4216-a67f-430567fedced 47b1cf7a-f144-4353-b48c-525f369e547e 5c2bb03c-4595-446f-9798-17955f8ade90 e719041a-a458-4a4e-bb7b-65f30177136b 5dd029b6-3713-4416-b123-375804d13d89 4e5a56f5-7748-4ce4-82f1-ae1742a4144c b339d4bc-0a1d-4f9f-993f-e4cf0e7c0a8a b1935ae9-0748-4945-a24f-d11d0ba3170f 432d54c3-c725-401d-8c11-4564e933e484 5d356657-a332-4fd5-9637-239c975ffcb1 4bf3fc2d-02ee-47b1-b836-1445914c48fe 96ae89e3-5f10-4ce8-b90c-a96c639689fd 295f01dc-0fb6-4117-816e-f7df17d6b812 63e7ccbe-8831-470d-817d-7aec8ea7dbf8 2d582803-b3c5-4b00-ab56-3127226c7e96 7903362f-3218-4f5e-b503-87be9f51e9f6 4a49e27d-c9f9-4dde-8db0-c2265c6fed5a f419f939-e031-428d-b360-9112ef912def 29e93bcb-26c8-4836-87a7-1baa77bebd86 88bbc313-1618-4c91-bf0d-43595b86fb21 3b2fa7a2-5563-448b-9193-4ab911ddc13d a86952f1-8d0b-4913-94fd-1d5ef551137e 56bf81bb-3c15-41bd-aaf2-24941a136322 7aed6fd9-0f25-4b74-ac0b-259f9ff9d1b9 6ac2994c-0230-47ac-a121-ed9619db4075 a625c7c2-ccc2-430f-9721-17442de0f0f8 e5dea4d9-1c41-4e00-88c6-bb0575391ded 7c31e780-96d8-42bd-8cf7-724eae9bec00 8acb8dc1-839c-40a7-8baa-492a7aa23f44 f3142488-194b-4dc7-9822-8365b9ef53cc d58b0d85-a712-40ef-a369-e010f115c5c5 b8daa9af-bc1d-4ccc-9451-51ca43561495 ee58f2bd-1fe5-452a-b806-4e168fa32dd0 ef5a1014-fc7b-44fa-8138-a2b1c978dbd3 97ea7b74-7abe-4fb6-a85b-2772d1f592f1 0461eff3-d24e-4e95-ada5-2cb9c667b8ff 5c88adef-d2ea-4102-b73e-7852444e5477 90b05e56-de12-44da-843a-a0f9573df54a 9c62fed5-3c31-438f-972d-3f01ca6bf33a 4299fe69-a18b-424c-855b-5bc6d0e786fe 13805488-903c-4ca4-926f-1190c35e82c0 fa1c0260-6ae3-4461-9222-3bfb385256bc 6762a48f-20fd-4789-a1de-afad43512201 c3648b7e-b249-47b6-8a91-9c83c8be7d0d 6c70ed60-d523-4769-ab0a-ead19e8968d3 be983aa1-095e-4f6d-8a79-07d0dd8b0198 32e97bd5-bc80-4927-9271-1d04e1257cee ec00bfef-3b01-44ba-b391-c910d15cb8ad 76d34e9c-190b-4ce1-a9e1-43ba0a471fa2 20faf037-9d93-4886-98c5-386ddba91b96 4ed4ffa0-b832-4cac-afc9-6e9a1f65466c 277cc5b6-4900-40fe-95ef-bf92f000e244 9c0c6ced-23f7-4543-946d-9dbe999832c3 d5fff24b-024d-44a8-b7f6-bd5e70f814b6 bb5181b0-bd00-41df-85ab-31895c46b4e4 1e3d978f-79c1-4341-9071-62088bdbb6d2 4774b27d-bf2f-44f1-ba6f-e84e9710f893 536e3a33-38ea-4e9d-9e7b-78594af32e99 5622564b-30c0-41f3-b0fe-94b434d7a14c d053be50-a4d3-4b8a-9853-f8321ee6a0fa 41c263ed-f12a-4d13-b917-a9c64494bb9b cc914d65-ccc8-4565-8dad-9ff4033c5b4e 48af1111-e312-43e5-bab3-84688239ddab d0e311ab-920d-4a96-8894-9cf71c2faafb 88c0d84f-3877-4147-a72d-bad3e3f0889d 587a5da3-0dbd-4901-8237-3cbb870da812 80b576a2-c520-4e42-a49c-904378f15c53 c25decac-f956-4ada-b24f-7084ff1a9172 d022ca38-4ad8-446e-a86f-c92a7bdd24c9 a073675b-571e-4246-bfce-50237bb7c99b e6db1235-358f-44e0-8db0-47bba0ca7da7 dae8d081-244d-4a37-b35f-fa92956062a9 ef68eb8d-4374-4c5a-9cb6-d07d26bd0ca1 0c9e63ad-56c9-4e18-8623-46fadd44eda3 014d8892-b4d3-46a1-84de-1a54a4e40b9e 48bda287-5f51-4441-b191-30558f4342bb 12b55620-e8ca-42c6-b02e-4d6a11091a67 9fc5cd6e-eaa1-4074-aefe-e02f0291a089 5ce53f77-4822-4ab9-8e7b-49328cafd088 958c7427-0d88-4cc3-bf78-4b378a7dee79 3d46a12d-9c43-4d93-a00d-ecfc36bc2682 8295d2f9-d5fa-42f0-a96b-ffffe1447f90 95c7080c-1bde-4ae4-9875-cc24f7387c17 61a0b801-1aa6-459a-8e8b-3da274837be8 cf2adf56-04c7-4d71-9809-d0ff2500443f e4310bd2-9b80-4aca-aa78-e0b473912e3e c3835faa-5edf-4b9c-9725-bac296e00bef 0b327932-cb29-40e7-b410-05d5dcb45417 0ecb2362-d262-418a-b140-5b7fa5a44053 246c2a11-3af0-4595-8018-415d703819ad 471af9de-a51b-4045-a3ad-02103f2aaa68 dada1a13-2208-4618-912c-c3831d30aa95 f161e117-a84f-439c-a4a5-9303e2656d04 c7b96fc4-540b-45b2-963a-74b9af0a8788 6b1b2252-1add-471a-bce1-395d0d60e483 590d545d-4c61-4a18-aaba-57a854eca764 f39bf743-851e-4965-8207-a718f1e5bb52 1e9be76f-11be-420b-8184-085e7b53f45a 3a57930d-be2d-4bbe-9f14-c3c1b00d8899 94f09df0-1d9c-4763-a4a8-796cf0be07a0 219f90bb-f7ba-462d-92f5-7d0d189a223f b2056eb3-3583-460f-bb9d-4397d1e6d85e abbac357-3270-41dc-8cf7-584a83bbe78c b45dee9e-d8af-43be-b65a-9bfeb4e37990 a551e8bb-d0c1-4cd9-883f-d5b7a48721e5 6ce4a866-ec3a-45f0-91b2-fda8aaa15389 e0274b0c-ca8d-48af-ba77-c4d03eededba b7c58897-2d6f-46fd-bdae-d450b39d3bdd 12e80727-874f-4c2f-bdec-9ec107d85418 cac77e7a-fc6c-4543-8dd0-a7133e7199c5 010c66b0-b3ff-489c-93cd-5b57cec2b2b5 a20f8e42-a86f-4a9f-8b32-830fb7725f1d c30bba6f-30fe-4bdf-acc4-88d5ba1b524a 7680f2a8-d1e0-4a7c-8fd4-95d4b9afa746 0c0c980c-a3d4-44b8-b9ee-c226c3c41d8b bf87b63b-34a5-4a4d-94b3-245c080efb2a fd4c463d-f230-4cd2-b4be-45f9716f42bf eef57ac8-12bb-4dd5-bc94-66f570f436ac be6b37ab-6534-4fc3-8993-a4fd09724f1a 5f780830-c336-47a6-8567-f2e636a65a2e 0593c0dd-ec6c-4c2e-a0af-90b62765b349 77690e44-21d6-4a4e-ac95-ae5a54e598ce c2b2dc31-e1a1-4083-922d-4523e8545bda 3b28cbcc-145c-4073-9e4a-a7a1a5832c07 c7a31cd4-5384-4c27-843b-a2beedac37b9 fc1eb856-eab7-43cf-b69a-109c25b774d4 95aa1877-99f9-4007-8c68-907da81f0dd3 b99ead4c-5658-40cb-b6a2-979b012f3540 ed428030-83e7-4154-9dd4-88d9ea2c1f57 d522b608-0628-45d8-ad51-2a1d711f2b83 fc511a84-6852-4e99-8f84-4b5e94cb56a0 81b4bd04-7f5a-4a43-98b2-53cd89cd389d 14276836-b42e-470d-a3f9-8ba7bef7d97b 9d74d171-5dae-48c2-aef6-eb4969c9bece ff5597a4-b36c-405a-8150-eae6de14a583 766ad212-a8aa-4fe2-a971-9e6d633ed2a8 0dddb08f-5290-4350-bfd4-8806b0601a89 c5cb8005-3bf0-457e-8b6d-6dc02a965595 b00fca79-4584-41b2-9cb7-e4611a33645b 0b4136b9-8747-4abc-82cd-089ca7b5c815 3e49ac4c-cb77-4a02-9033-95f7c1d6a450 2e7cab44-c92e-4922-8bba-3587294ef7f8 4269e402-aad4-441f-abdd-28dad1487792 a0824206-f29d-4150-9fd6-6e63b4545765 a99c5f78-d59f-4aa4-9580-a3ca3b923290 e701f060-8387-4800-b67c-bb4156acc78d 1d29fb4a-3042-46b6-ab39-361c2b74be79 308d5735-3c6a-4119-b203-cd70fb611329 22770849-7ff3-42b0-85a4-216205f74c58 1f614234-1244-4ca2-b829-b3372cb0dbd7 9e684db1-5f20-4ad0-8c9a-68f5c87ac38d f2cd1963-9270-4ca7-bca6-f05835c0d29c 906d5527-5ef7-447b-a30d-b3693abd50f9 03a9d8da-67dc-4f62-9060-a256c13fa508 3522867c-daa6-4c67-b50d-6b4f1e490c34 91cdf444-2bb4-4c5f-a367-a9c089c27d46 db64489a-d18f-4960-b3ca-c0cccd406b72 26e8f82e-9a86-4f0b-88ba-7847d8a4c387 71bcf9b4-1688-4b09-96b0-4a3d1c0199da 4ba33841-ccbd-4bfb-942b-f40b1bc5c1e4 9e76f824-9450-44e4-a46d-927aa21c25ba 34e01a63-2c44-4970-9c89-a4bafeff7274 38811025-0fa9-4b5f-9db9-8aff752fc4b3 460355ff-3ec5-4cbd-89e9-d8f14c78656d 893cff63-b193-4aec-9c84-139c5a74b587 e9d74bb9-caf3-4933-929d-5a8f6ac7c368 68db831f-a529-4cba-8151-3f8b6594ab6f e68e7315-fc9c-4ec8-b12b-b6b5bae49f9a 47e0659c-0cfe-4fbe-ae09-9cbc3cf5303f 9c3be256-6c94-4f43-b4c1-cdee10f68ece ff708a8f-027f-47e9-b615-facf4dbabbc7 c6de5712-8f2a-41d1-90ac-1d24c248db23 f1f973e3-032d-4e32-bfc2-f835dc57a1f1 a3c045a2-4b0b-453e-a076-0e4a5c0b638a ea68e352-7778-4d72-9794-bf6c002c232a a94645dd-6ab3-41c6-8acc-a03a5d487205 ae3841ca-93c7-4c99-b873-229adae00b55 5c2ed7b0-c080-422c-ba6f-248d3ce8c695 dd69492d-0e9c-4daa-bd23-11bf2a4717fa a9089f24-d3ab-4a11-8467-c582f85a86ca 4afa62e7-cd31-492d-9ada-16c27ea1a7c1 69d7e17d-d25c-4ee7-b0da-831b30070c25 0e326f22-9374-4488-baef-56c7ded042f7 a95aff56-05f9-4b17-8815-4b37ddad4043 a78bd4d2-25bc-4f7d-9839-4f7fb020fb0f c4cf7e26-2ae2-4435-a8be-f236358d6edd 353e29c7-4149-41af-b433-019c80e7a9c9 90f263da-5140-4a00-8213-aead3f8d9f49 2a2f8d26-8746-401e-93e1-912784bb8fe8 0e316176-7565-487b-8971-c6693e562a1f d8928873-f8e3-4f19-a342-52262f652c72 9c5a4486-57eb-42a5-9207-6445d365778e 8b3ff6b7-9fc0-44ed-a432-2121f8ba190d 67e2b609-4778-4a3c-9723-372346e72aec a46bcd83-c342-4c75-8f15-8234f4064e99 0f61bf6c-eccc-4e85-9204-a2179951e673 e43231e6-de22-4ae1-b347-05bd36f2de35 7651be51-3e93-4c54-8788-54150a12a9f6 5d5907ed-c9bc-4782-8d89-716247628e26 386fd730-88d8-4f4a-a81c-c5d51a916684 394cada1-916c-430d-bb8c-04d7c8649e86 3f0f25b2-ad91-4673-9e81-625d0d138750 99540905-1fe9-4414-9cfe-584add734cc4 ebff7c08-7c4c-4839-b54c-1a2bccba6517 a614711e-5c93-4606-aef0-103d1d2ca45d 88de4fba-5210-44e8-a1ad-5e0e12e53de3 63ebfa27-f3ec-4897-b9f6-e0de1b9cf816 85b8cd78-4229-4220-8f0c-415001505c7d 0acba81d-d35d-4f14-98bd-43fc881f9f0d 6b0260eb-3965-4f17-ba26-a07bb4ccd3b4 5feccac4-acb3-40e5-ab19-d1bf6dc91ee7 34e71253-e7cd-4859-96a1-0040866f8ffe f0e203ad-e84d-4331-ba45-f83d325b1cdf 7a815c70-a3e4-4cc4-8b9c-0d4cece32887 d0901283-64a9-4f52-b13c-d0f5b1288ff2 edcf7697-04a1-44e3-b3d3-ec69cb52419b 0d1630b1-cc7e-4664-95b9-3ec52a10e54a 04b9a55e-7c29-43b5-aedf-cb1e0bd15190 f8322625-147b-44b9-a641-cb62ec4969e3 f91e3a8f-a5f2-4c5c-8bb6-8b2c10c31fa3 5c123d5d-8de2-4528-97f0-5b25956ae7c2 12dd8b27-c652-4556-87f1-5de48cb39d24 1328dac8-5448-412c-bf4f-c8514d42b829 09008116-17cd-4f00-b6fc-2066dadb313e a019482a-578c-437e-8637-0b8d59b7620d c0932bae-0bf5-4d3f-a8ba-96366acb4f2a ec753e70-62e7-445a-ab7e-b4f6519b307c 9fcfe1be-6aaa-4642-9645-5bd9356c6643 942420c8-4c79-4f5a-8f64-5b2a94680c6d 4c9e0a1b-4365-4696-b888-c13dbed771cd da7c4b0c-d9b8-4a52-83fa-3e8d0abae1a9 039c769d-fa36-4d86-aecc-3d3f594884b4 8d7becc7-8e14-4e37-b261-534eab0595b7 54e32a88-01f6-4c3a-8e53-8aad2faa657a 5fb7fcb8-98e2-461b-9b09-4600b787e40d ee9d8ffb-cbae-4387-97a4-8af8a91a8c4f eb27225b-eee5-4d02-8e80-086d35181dd3 67bfbced-c3cf-4e70-97da-d4a6211ba46a d2a111bb-4e1b-4293-baa8-32187bd1bf52 e82fdb60-c3ad-47df-a3c6-6fa97fbe71a8 0902309a-0704-462c-b619-ba800e2fe5a8 f15cf583-ada2-453e-8662-2469a93e021b 50cc134f-309e-4feb-b9b8-d4544a4489ad 935d144b-273f-4571-9312-80f616666ffe 347d1b04-5bc4-43f1-9357-c1b7047c80e5 d481e7a1-e0f8-4d8b-b3e4-e6213bc45597 966303e0-9fcf-4a10-bf70-afa7c1660fe4 978a2f45-a988-4597-aa00-3d7b63967b55 818ace7a-1b84-477e-b276-2927ffe323ee e9db8317-b52f-4716-a8db-bbe2a4a4c1ed ace22267-9789-4286-b00d-bcd137a85a11 4ea0dad9-3105-4edc-83fe-4b19106277c1 c7f1f534-7d67-4f89-b3b2-6031abda5194 32089e40-435a-4907-a0bc-44eb477f8195 87d1e76b-8867-4271-9219-c6ccb3a9c6f5 db464234-cff3-4124-b123-9de7442a203d 54e65407-be8b-4790-81b1-b44547c763ae 36161744-6339-424f-b63f-a0696a8e6c9d 9270eac3-6ec9-4ab8-9de7-7c3fd94d951e 23b7b754-cd13-43a8-8b14-002576bce224 a85e8840-0901-46f6-8c2e-5b454f7035d6 95e3fb8f-5a3b-4c8c-b48f-2ad3c120eb0e 3dc14430-7d59-4892-967f-c903b95ff04c af3d3902-4ff6-4d69-9169-cdd602956895 61efbf87-06ba-4724-9d54-ca2b63e78ebe f732b3b3-4f3f-4f92-a2c2-e75895a22b51 636e9eda-0ba7-4261-b316-3fef5d2cb04e bb864000-8e0f-4c11-949f-8f72746a8587 ebe9c766-768f-4c26-b896-6fe52c0618cd f9493ac2-00e1-448b-811f-61251d684fea fe6fd1c8-9868-484c-ac12-1a85abc17a87 f27d2df0-ec91-44f0-b46a-53b623a2d410 680ffe65-39c3-4aba-aa47-b5029989863f 0b20d659-c5c8-41fa-9641-6fff153b2308 0dbcc14d-14f1-44ec-a1b4-870cad1bcc6f 3b18b780-9d84-421e-a665-0a51bd0fafb3 0d59902b-c536-4255-865a-c2e93b168c4d d94f27f9-9a31-41cb-b138-ddb5f15bef0e 2d9a45d6-25ee-4bf1-8a71-4c64e4959943 0e0b59b9-d17e-4afe-8737-6697a9dcef66 7415fb0c-14ab-4ec4-acf2-ca34ec11a9bd 2b894e6a-6565-4bca-a516-55dee03e7f55 5c9cf8eb-c437-41bd-9278-6dcd0bcc1099 6a6a39a3-5e28-4998-a841-29678527596b 77755989-6807-423d-b5fb-8b3f9df135b0 1110e77c-31af-400f-9879-458502a0eacf e89f1718-5c95-448e-9e7b-0a419f3dc296 3d1c3647-108a-4627-8060-8557835b568e 4e53b286-c889-4978-9bc6-1fab4b262e45 b750507d-a0d0-4af0-84dc-9f83a509868e 6d5f1e17-0c5f-4186-acde-2f6c43de0f8f 2877d45c-bd3a-45f3-8eae-dcf44c47dbec 7c6d7189-f1da-400c-adaa-1eb338be624d e749d173-1e03-4b55-aa66-3f8a7a9f12bd 7efd3c95-dad5-4cb0-8c91-aeeb69755aa1 a8d85548-6e7e-4084-88c2-c9a83f7f0611 167379e4-18aa-43ea-9e6e-45fd757218af 8a43fc58-f374-43ed-8128-2f7ccef74608 09329c76-5962-4692-9a31-101dad9dc071 86c4991f-aa71-4423-be39-98bcead79fb1 9b4bc1c8-a273-4720-9d3d-5f87f5e82085 44f5e9aa-a423-4791-9e5e-94a6e7330b1a 9320446e-7422-4e33-9b2d-942ec1845ef4 03f1f1f6-9c53-4ae8-83c2-75ef54e22f29 65d2bfd0-aa44-4733-9a57-4dc0870fb3d1 bf69c8c5-e2a5-41ae-9488-9d43985b4d10 6281c0f0-cdf4-4388-84ad-f71524a74945 aa7a80e6-5191-4d7d-b345-4e4a1a05b36d 60f35e17-f099-4e21-bf35-f7d27673984f 268abcd9-4df0-4e7a-92a5-d912055defe3 8d2442e6-f182-46db-94c2-63b0f422abc0 11218444-1d7d-494d-a79a-438b2593d465 2c557dff-0140-4402-b7f3-3b59de777af7 759e889e-6a07-4edc-abc6-16caf9a6d8f1 2e7af801-10ec-4142-bcff-4b5f3a511131 d63862e2-806d-4309-b1a3-5f63397e6158 8aebb0b8-3509-4d11-a9b0-fc514023d266 cc05d61d-8195-41a7-813f-39687f3b47b1 f14bfee4-0396-4ea7-abaf-55710d6992ec 46c37f90-1740-4b34-b9c6-989706d8af71 55a37777-e748-49e1-b706-1db830757e72 0770c5a1-5aad-4b5b-9708-6ba122f44d9f d0a4ff54-6581-4ef6-bd73-e42811bf264d d26003e6-9e43-4b85-9ccd-c2bae6c351c6 c2db9dca-ec2b-429a-80c9-1c6c93f41bd4 b8960a60-92fe-4001-9e11-cd41f66f5ea1 a0c3a7fb-0610-407f-96d5-92c7b76eed6a aabf2759-115a-42f3-bd65-651fbccfffc3 fa3626fa-b0e5-4986-8c2f-d59cac41c896 cec3063c-2da6-4449-a121-2bf32faade39 95b1d7e7-03a5-42d8-9a58-3f0e46fb2e5b cb10d708-327f-463b-9c73-4ddc40ebcd12 fabc20a9-4342-44fa-a373-974a575d1b00 156b3d92-8b82-4f68-adc2-13f595e9347f c4a037cc-d9f4-4826-b918-c04518246c1a 530ab64f-145c-47ff-960d-6d6959323e35 e9c333a2-4f0f-43e8-b7ba-e14ff2ebbbdc ccb0dc03-afe0-43b6-a4bc-72b4eb4f95b1 f7238f76-56cd-4901-9fa0-015b3a7d9c8b 46c9efd1-3ecb-4265-a271-d4faa18c84e7 a1dfe567-1ca9-4fa4-a350-32254dc192fb 3699b580-437a-45d5-a7b7-30eceb2d6b15 a854a344-62ae-4807-85c8-c95035254223 59bd1a22-e8e0-4651-b305-ec0d5657b2f2 fc8789e0-104d-4a5a-aa6c-fe5c5042b3cc 9cbaad97-0b48-4186-b074-957b8a9d961f aef6a542-8339-49a3-ad22-7dc35d77057c 494d2d5e-6354-4096-9a57-300e5c5653d6 88358cb4-1dd8-43ba-a736-533e3b893126 cc4376d2-f92b-49eb-a4bd-9ce80d59140c 877dfc80-3dc4-4448-a99c-924b7b4e6879 c49b582b-7e15-4e0c-aa9b-3de86d282f2e d44d02a3-4af4-4732-ab49-cbe84b20282d c8be3081-22c7-4668-ac50-e3765f74e4da 5c9aa74e-f12e-413a-b5fa-3bf6439be826 dfd9c30b-a19e-4c8b-b8a5-5d5555df7658 3c642d43-03f2-463a-9906-b3e106fc8645 2a5d0343-b4f1-4e58-ae2c-15c57036941a fdf5c8c1-c867-4c0a-accf-c30480c8e4d3 5d71c48b-e1e8-44c7-8a68-bf5ae8b8ccd4 0d0a0073-2b0c-4fd3-9e2f-c146e406362a 446513a0-8da2-41d6-b740-e0422c0e8c61 9db37b3b-c288-4c3d-9d62-c85b1b3a2a63 73ee7c71-fd8d-42ea-a37a-6b9f243e0244 5fd8fc4a-e441-4a64-85f6-06dbdd9a7f2b 080a0661-81ea-4161-930f-6e98cedb2cd2 770d6d0c-6e8f-461b-bb38-097b5bdb925f ecfba3f9-b8ba-4d92-b827-a537d6e09a4d 286cac8c-f22b-4a55-a51d-b79a94f07255 6a4dc451-43da-461f-be27-ae546f69cad2 53be9eea-001a-4293-a018-e4950cdf6514 fb14f3ec-26ed-4d3e-893a-ec37625ac403 dcb1702b-c996-4c18-a19e-e0bd4b00bd1c 544e9def-29ce-4dcb-82d8-5a2a575db38b b8ce3363-2186-43fc-bb69-99c40681cc3a 05734bd9-4864-460e-a4ec-ee9918070c6c e480c7ad-e9a2-4eb2-9dc8-fd94c7ff3934 b5715fd7-9b74-46f6-86b8-2a5bcc9f8318 8ee1d52e-bbd3-4e1b-94c8-cfe627053e92 c1e9fdae-3a03-43c0-aeef-588952923db0 0acd3eb2-ab41-45e8-91e5-793e668fdb5c 1d86ec56-ecde-4e69-b881-6dd6d77e45aa 699aca3a-b398-4da0-949a-9bf2ddbdc3ab 112a2e22-a1f3-42cd-b0dc-b73513249aee 275413aa-cac1-446e-8ac8-e8e0e8b43e25 fecf4a5a-2fb4-4dd0-9990-d11dc654fd93 578f1fa0-47ce-4568-a986-af7c27dccd56 2a2d3cac-c881-45f3-921f-2008bd0bf44e a6f9fed3-edd9-4c0e-a749-b2df43c0ca8f 2b0474df-f9e8-4b53-9be1-539b2f7db505 02086ec1-e745-4829-bb2f-ef3c851c1c95 8dd3cd9a-13f0-4dc9-ab93-24f721ebd8f6 d48b310f-0b24-45e5-b776-4513ad89519e 2ed6d47d-6b12-4f3f-b963-06d1cdf32bdb 9b9889de-e163-4503-8cf3-630bddf43be2 47ef412c-e83b-4b99-9fef-f6965b61e318 8aee61cc-ed28-40e8-b1c2-498d7ca8e2f1 b9769d2a-5125-4236-9bcb-f94745df1b9f e74091c5-bcb3-4cc9-80a5-7250a72cf1fd f042d6b9-6d37-4961-9dbb-dfdf6532edd7 cce03bf3-a258-4f39-810a-8b7977c0d216 17df6741-81a8-4873-8920-4d4e3f87f275 d2d91173-ae12-468a-8cb3-cd79dd8e2eb7 a48f241b-9725-4b8b-b273-2131646cadb2 52e9fcd6-a8e9-4111-b5be-8baf43d3ba48 bcae8235-7cac-4588-81bc-b3c7193e3448 336eed70-08ef-4bb8-b07b-02a06fb4ffff 81117ed3-c7ad-42ed-a601-f641215a7c54 da054822-824b-4478-b32e-f25f652e72b5 5c7a7e7a-6290-4f03-94ea-8b0390d95d26 6107403e-b1cf-4fef-9a4d-0d2e307cd734 4689e6fc-aaaa-410a-b32a-f173a7a5aa77 5b077335-d855-4d2a-af55-0afc1a3d0e36 aaa84b65-e974-4b9a-8360-fd20c7dee40b 2c722d9f-2e0d-49dd-b017-1f95d7c64647 1b0da58d-653b-4c72-a9fd-e9271bdbd28c a79c46d9-176d-4e59-8a2a-d33d0abfe47f 68528d51-0aa4-4359-9b8b-4eb515ced7ae 81362248-1a2a-42c2-9aae-2b307998b519 cc4cf4d4-f048-4634-81c9-1af5d847a7a8 d155f0b4-402d-4c32-a3ff-72ccfb891434 9686e70f-371e-4d58-bb50-e79202f13c38 6327990b-8d69-4f8e-9e31-2b45a2e74f2b 9a3bdea4-f371-4f2b-9c1e-cdef1f1ed7a2 007d812d-3d8e-4fbc-955c-8bc217df36cc 0ab34860-4fe6-4c2f-941e-7c2fe796b75b 997c4926-c325-42d5-9b7b-eb3ec922d248 67c358f7-648b-4ab4-b4cd-3169fbc90b63 3e5749a3-3d7f-45b2-9d55-bee7ce1085bf afbd6dff-8d3b-4686-8a52-505d3ce6686a 3f532288-c0e8-4eac-9940-2c1cdaf612c7 56a4f3e4-2b5a-4853-afe2-03a657d9dae3 06f24757-d307-48b6-97d1-4446faa56061 d2bb2c0c-e063-46b1-9213-57116d149ee7 0062564a-8dce-48e8-923c-7ee630a97d3a 5318bc97-df40-40cf-b7c1-4fd36a152ec5 8e7dd27b-2861-466c-ab88-415148c2a5c3 4ccf0fe9-6c17-4480-a928-671887083444 b0b35b42-d553-415a-9ca5-eae327e1e8a5 635a7f0f-2ffc-432a-98f2-801bdfdad2db 8e539a6a-f8cb-4d95-93a1-ab594521f7a4 40a4a44d-f5fa-41f9-b696-2dc87c040735 ea82be12-5bd6-4290-a8c4-9653df650518 92f6a0ad-4c6d-4b52-9d12-777f8381296f 300300d1-5fb3-4936-a7e6-63459df7a5e7 f94398e2-b34a-40bb-87d6-3b28edcad120 95a76441-5002-4655-a534-4123520f6452 f15c86c3-2d19-4cf3-b811-89a9c66b270f 5a907362-bd89-4607-9b88-57876e114a66 43a1095b-b95c-4ae2-8c69-b79fab438acf d2268d8b-49d5-4ae9-b89d-dc49c97ea916 912b98f4-4887-4590-9ac3-0470f5f2c442 767b0d25-13db-473b-b767-773a2de43430 381790ec-5d4c-4c96-929e-b2960655707e 67f063eb-d27f-447d-9b38-609ff26f679c d567eeb8-1d80-4a50-87f1-4155cec6282a 929928c1-4a34-403b-98a6-562ba46408bb 1c608daf-c305-489f-a4db-05f4a7d387d0 51a3bad4-f599-4cec-9cfe-fddbc3e33c2d 081773ee-5454-4e27-9ffe-67be0a2b2c64 aa21d014-7181-46e3-be0e-77cc0cc3a12c 2e44e598-1112-400e-b72a-4365c7afa119 0e03d019-2592-4306-832b-fcbf544d56fa 0888d1bd-2b6f-4527-9eb8-5a852f091265 11f37356-9db8-4f00-b7b2-d346f67f2848 ce85717d-0676-40cd-95e8-c7a635111c78 cad9d910-4e83-40a1-b95c-318872eb2405 5babf4ed-6c80-4b50-89c7-d65f883dabd8 37e68b08-8bf5-4b64-8176-7d8437cb6729 7e84252a-a1ba-46fe-ba69-2ff3ac600454 94819c5c-d95f-48c2-be29-e492fa58cb86 5d13f985-8bf4-417c-b493-ec807eab7d1d a161e752-506a-4ed2-ae85-2a4939098325 c9d53ceb-af12-4cb4-be43-655561b98d3a 4fcc4839-3754-45fc-bf62-aee73df8e5e7 290ee283-d5ec-42b1-b1d2-210e87b96077 30a10657-a7c9-48a5-9743-d7d35858654a 0ff78e42-9923-4168-8619-407056442ae2 a255bd13-8657-44a3-b03e-6120f04029c8 ffebf3af-7638-4c0e-948b-5a5d8dcf2e08 3f478c4f-6a2c-4d2c-9611-d005a2150c69 3dcabc42-299d-4628-9974-5913dafe2ff0 06cea0d3-dac6-485e-bd60-e65a4c1416a1 31ba5e76-8173-42c7-8e72-1b20c2340301 6e1e03b1-3bf2-4bc7-9aaa-b9b06e527361 df407cd3-f3b1-47b8-afc3-5355835512b6 8ad52cae-2194-4202-8a35-c042800d7e34 4dc42a80-13ba-4e13-9185-29492735d9bc ee813203-4526-47d2-9d82-16c0b9101354 aef950d7-db66-42fb-975a-39920a1c7736 f6eff6bb-1fde-41a1-8e40-3e7e4c04a851 ffb1013e-e867-41a7-9882-99a0e511fd47 348e9433-2e7b-4873-8197-dbb79589fff9 8f6585ae-236c-4b04-981e-9db0fc1ffb3d 47c1f73d-4c85-41ec-a238-3bcf7f6d1f73 7d1b96f8-4142-4e33-968d-19aa11bc838b 13e58b63-f93d-4a73-8560-08d804b85bfb 6478952d-e8ef-4a0f-abd9-91689453919b 2284a2b0-3f5e-4821-80cf-eeb6178686af b8fb7394-833e-4baa-96fd-6f92f2fc20fe e28fe12f-fe2d-4a63-908e-7cce45fe5bea 9eace93a-0b9f-4c58-87c7-97d7a801cd4e 92ff58ec-1af2-4b5c-81e4-3dc7117b397d 8e8008cf-e24b-4baf-bb16-7f0e44549f24 39ed78f5-3c2a-4af9-b470-034a29650cd9 7cd7a10e-1bb5-4c6f-bd1a-4d5db5868545 674fa337-a5e9-42cd-b413-be2bd51c73bd a20da321-0fba-4780-9a93-ce0bba58b8f9 b15265b1-b8a8-4d76-981d-22e57b234e92 c742a0a1-98a7-43ed-9a36-88e299e7be07 19600902-188f-4548-b139-dd4c8c9b92db 2c06cd4b-0585-4859-aa41-98d95f360f08 b9590801-9370-4780-a67a-8d3aa1b777d6 31873ee3-c60b-4ca4-957e-4bddf07277f9 befb9439-37ad-4568-a564-e1d1434ff5cf 6c8ee0dc-6fbb-4ff3-885e-1af51e30ef87 296f98e2-b8b8-47a2-8c98-6e7d7633bb46 004b1093-b0cd-426d-9c50-1cd665009ca5 bb35e114-f9da-4d96-b370-f75a974873e0 dc847071-248f-439d-9c6f-b06af9e623ff a7d3d671-90be-4c5c-b756-a89d5b533f1a abbb0b9d-4d19-4fc3-8a3d-e273394dace8 b8f9817e-8434-43b7-8973-4395f6e217bd cc06f285-3080-48c6-830c-6e714abea7ac a9fcba49-d1a2-436e-b1e6-612a26d8ab25 5f0fcfcd-2a1a-4c5a-b356-77cf1e54bb32 d878880c-83a8-431a-ac10-9f7fba551cd9 fc22f334-d9cc-4a6a-810a-2ebabec59bf4 7b7be1a2-a00e-4e60-b2a0-b18bbe59ffeb 6e6b845b-4d93-49a1-83b1-c3d90edd7079 b1ee26e6-2bf9-4e72-97b7-4c340cfe390d d17ac6a6-a28e-49c8-b9d7-07c46d7f9d02 2832922d-82d1-4dd2-a52e-07332cb340d4 5a8aabfd-15ee-49c3-abc7-78f17a476e42 4627e114-c892-4000-a4e4-aae8912bf78b 233b01d2-d4b3-419b-820d-57b63bb1d940 0b1db1de-8959-4825-9bda-7b74c019d7a6 d5e89e72-b501-42ef-a791-e93897eb9ccb 7a729499-85e4-49ee-b2fc-c597e9ff276f 7d54459f-02c1-4ddd-8d8a-4289a2f2aec8 a5830906-ecf9-48c0-bfb6-99a44fa7e1aa ee20532a-d7f2-4b1b-bf89-a512cfb9a996 2269faab-df38-47ed-b113-464df06c44ff b5e4daa3-ec69-43fe-8600-a26535f180a7 6926b672-c728-4f2d-9052-0d83d80c62d6 8aedb192-6e37-4593-b194-ab924da3d867 44fbb82f-b9a2-424c-9286-71d438f5d085 bff6b0f8-af80-469d-bcef-9b47e5a6b735 27bd1649-cdd8-4165-9088-34f11c7ffb64 b377bf96-0d11-4ea6-a5eb-ae120de1a8d3 e5c3796b-70a5-4e66-95ce-774ee910f348 a3c28fe0-6278-4188-93f0-a28967212f56 fe77a1d1-5fc0-4444-a9e4-80e2c64cd75f 115fcf8f-3608-4093-8096-a77e07859f2c 5359b91c-dc97-4e8d-ab38-d911c37a85d5 f7ebadf3-7348-4bad-91d9-434bf7dd48d5 35da81ae-42ee-4cc7-bcf6-ef4197c09aca 975787d0-d54a-4327-b24c-d32fdf6ee1ed f8992e10-9cf5-4466-86c4-8b1f1d22d070 882a56a1-91c3-4791-bedb-f79eca2f7cb2 a77df3f2-d36d-47b9-ad5a-3c72d9e396e7 a567ae14-356e-4988-b09d-2aa493004085 2b328456-c8a6-428d-ac9c-1b2d92fc41f6 d8b64786-c0cb-4709-a203-80fd7ec073d2 d6b20405-f578-4290-b830-87d95ad6276c e30472fb-1d39-463f-a5df-9e0107dc9d30 2a63a5b0-fb7a-41f3-80f6-e8f27eed772e ee0c340e-63bc-46d3-8339-40b16c7a253f 28838312-4eae-4446-a948-1096875036c8 ac61eaa0-f095-46e2-aefd-a2c2f142715e 929ac9b6-325f-4bb7-bac1-6a016cfcc07c a0ed9204-3a3a-47e4-9d52-28402138eab2 efe36a81-47a6-4c94-8c92-6c6976911753 1e1c3a38-7add-4cc2-877d-26a8eec910b1 f21d2156-d196-4a06-b47a-d55f4b48c861 ef7d9f4a-d61e-4d8b-9dc9-9224fd1d6834 00d591c0-863c-4d5a-9b82-b98e8e40bbc6 e84d3560-7218-4b38-9370-5fdd19f0f1df 5de8f647-ebab-45b5-9ac3-74eaa434da58 5ca038ea-9df7-4cf6-a8b4-5d5a0bdcb187 a20cb4cc-215c-4fad-b3a4-313210565179 e54a8cd4-a1a2-4388-a267-cf424fe34ca4 e98086e3-df2e-454a-9510-9db58749749d 3f27bc42-2c80-4cf5-9e51-0d8f60b9fe61 b669ef79-05bc-47cc-80a3-431ea0a43a7b f6505cf5-462a-4d2e-a20c-cda2188e282f 4a8554b6-69af-4fc5-b5ba-1b4195891ab2 ec2374e5-43d9-48f3-88c8-74a529ec6e59 f0f19e52-73cb-41bd-b0bd-f7dce2679ff9 2dc7ec79-7209-4e39-8c6d-3877855cad41 c2782d04-21c4-4343-bd75-4c5c2b5a40a9 957294ed-a8d0-422a-b53f-fad1224bbb75 2f4fe7bc-3e82-4e94-8070-2bcadc1c6a7d 2ba0df0d-48ec-4578-8e91-9ccb30ac00e0 86c90268-01fe-4770-89ab-50822ead13fa 1ca39ac2-ff3d-4f22-b29c-1790846af00e f2994da0-e500-4981-bd17-b8a8e8815e69 dc7fb81d-ed43-48c0-b054-cdf8bcf6d985 66e259c8-15cb-411c-9a81-8189f21d5834 1d11129a-d061-4cee-8177-474f30d97424 4380abc4-9c76-4945-b227-d42e7ae26164 e47cd74f-d6e5-4cfd-822c-8ea5edd2ab4c a5802b9a-56fd-4b87-a62f-12a93969a183 21eda935-f252-44da-aaa4-e799e8ca5a5b 781d988f-6afc-4d22-a557-87cd50a6d6cd 03eeb18e-833c-45ff-9872-2bea33da1a1e 0ae21777-9118-4299-836a-172fbde2b73e 8be9dd9e-d2fe-4a8b-8db7-bf319039ff73 d0a6cc48-d42a-4a7c-9ca6-e4f67d402098 6443c65b-84e8-48f0-9be6-807d86f67ae0 e22d5c5e-f082-40be-82d8-9511a8fa8bbc 37cc6ad6-871f-4395-bc7d-0939642e27a3 72fba741-9455-4ffd-a0f9-b3f573cb7509 1e51fa88-3945-430a-80cb-822435aa39e5 7514da36-d703-4230-9f10-e0791bb0066f 4ff4e472-f94e-480b-a8cc-0512c8ed3caf b074d8df-27d6-416a-b9ee-086fe97b5737 69edc32b-2fd2-4aa1-adf0-fd35c033c06d d3ecd751-2ab0-433b-a184-b3d7b8286a62 6036e8e0-8398-4828-8d5e-1661f60514ee 521e9558-3875-4963-b23d-743431584b1a 90b7eb10-41f8-4833-9a26-d35e0e6db794 f4a5708d-ac06-421a-b9f7-23ba99843606 771af6e5-2468-4e56-9226-fd115df61321 a5eda27a-9d82-468c-aac2-b9a5678e542d d09b6462-eedc-416c-bbad-babff35c202b f9904348-7083-4c1b-820b-d5b239fb55ce a0600538-d230-4dd7-8242-a7b527b883f1 14dab610-8555-44b9-acb4-c1e603ce8981 92498469-6f8e-4b1e-9b6d-04de9b376280 2fcbf57c-9515-448c-8090-b7f044530341 7cf111b5-874a-412b-a2b7-5c9813ea4bd6 f0d533b6-f1fb-471a-823d-ff4371cfa93f 8a001796-7ffe-4d44-af6d-cc62527fedfb 6b06c8f4-93a7-4722-965a-120a30cf5ec1 84ed7a16-f18f-42cc-9972-db002b3a04d5 3da3d816-0bb2-4ab9-a8ae-73bd8861f94a 71e43095-7e18-4ae7-9b2e-e69c9008d2f1 9b93749c-3d36-462a-8da3-2bd49be803f0 b8818a71-8192-4464-be4a-80132628cb78 ffcd1999-57d5-4ac7-9450-5caeb07630de 6e7cf29b-7a35-47dc-880c-e92975a59e7d 0f566abb-76f8-4459-96ef-f0c493a09fc6 fb826063-5022-47aa-a2c7-e0c60ebfbcaf 2499d4db-d2cf-49c9-8f37-0d34a1d4ca7f a0d40f59-99a3-47aa-98de-14786a5e5e3d 662a395d-95d0-41c5-a000-8210dae5b9f1 db80e003-49f3-4328-9833-ecf68400b18f 3ce2882e-32f5-4d08-8077-2915985180e5 1de11f73-2516-493a-b813-10ea1b55712e 5dbb0a98-f0ea-4f3e-bd05-a696bc47ff1d 723b486d-708f-4cd3-93a0-4054f611fe97 8b798699-9a72-4c5c-890a-9510ffdc951a 9ef10746-2031-4269-bac0-e18a8fe2710e 1f545723-92ad-495d-993e-96c2cf2b31ba 18daef91-0d75-42aa-97e1-de258375b696 363f5afd-2dea-4600-9f22-2a9dfab5162f ae3c742f-883d-43e2-8ba3-662c440dd298 20a5eee2-a842-4adf-8f9a-fd5eae5f1df1 36716cf4-128a-4379-9745-35e151c0eefe 6cb52971-8af4-4ef5-8634-1563f3412b95 7df98084-82f9-4a9b-b99d-359bc53b92ba c4891f5d-90c6-434e-8ef6-adb75d93027c af70f5c9-e5ae-4a0e-ab79-e387c74893b5 acff3c13-3893-4528-8f54-73915599830d 27cb6669-c07b-4be4-987b-e5803676fb0f 60e11fbe-d6a1-4d07-8dc5-e07f561a69af 74808acf-a65f-4292-8b0c-a165038a1aa6 28a64eb4-82ea-4081-b00f-6537b1e5c4f5 6ae237d2-5542-48d2-b263-3ab14390b647 d0e18e56-c9e2-4aaf-b46d-b9674c9b94ac 19ddb4c2-b6b9-4f6a-8c5c-eefcf09c6762 ca77cec0-e1f3-4696-a83a-f0777fe44a97 0cb7b7f2-a564-42bb-87e5-166b45f7f5b7 7583f1c1-d93d-4156-9485-0af4ad7152dc dc0ed97f-1a3b-4899-8ddc-5da53757ab92 d3dcf0b6-760e-4f1a-bce4-3c1bccdb30f2 1cc3767d-770e-4cc3-b278-a72ff04a7878 77c4e415-a7f6-47e3-8518-2905d874ffb4 b005912e-84e6-4ec5-8c3b-82c826579b36 e7d553df-a8d9-4b69-9e3e-2aae749a6c60 28dbfc75-c10f-4394-a037-e52acd1d9767 d382a877-6598-472c-b89c-7e3ca4ee19d4 2e78620e-1d8e-4031-89e5-9dcdd0483733 19b102c4-0da8-4138-9ae4-0a07d4366d21 e9e8bd22-7657-4111-b7d0-d1802e5246af 05020c6c-d417-4806-8870-0f2f74bf9293 c38376f2-d51a-436c-9dfe-60138a9ea191 49956627-f3ca-452b-8a93-f2cdbdd4d984 caa57862-3b0b-4407-9dc7-98eca92438c1 7065e717-85c6-476c-a9a4-97ac058c933a 3bb44fe6-2c6e-459b-b2e2-0a98e0226633 5e7124cc-addc-48e7-8e30-52763b2636d7 3828e808-af06-45be-b889-12014f93c880 574a8559-40b1-49f1-b3c7-107917fecea8 ebfae05c-7173-439d-838c-1ad8bcd02796 01f7f701-790a-4e0e-9c21-09e86a5aca73 1f1f07da-a1a8-4067-8b74-63217a36da56 e1608147-54a5-40c0-9a5b-72734b09635b a997c636-c07c-486d-ba32-a01a61597d6d bf667b10-c7e5-447a-84d9-90e20507edbc 6f25ab06-c29b-4b6a-9132-6bf51aa4c967 16e38f6c-5f0e-441a-8a08-d5991942e79b a2ee8dbd-f92a-4fd3-b6aa-4e29f5d0cbbd 5c6d7224-81d4-45bd-8802-a449c9bec985 531444ea-ba27-44f7-8a5d-76065b32fde8 66e3f924-6140-4713-86e1-ed0aff40f3d1 657cfe55-1cc4-4f6a-9536-6ca84e15dd63 c409f262-0546-4ca1-b8db-c0bd05120d62 83999514-9703-4581-9016-e897cb8fde5c fc0420d5-557a-4b46-bc22-18e2ebf0d216 4d8b69cb-508f-4920-9789-c3bced32a5ad 2ea920fd-4dcf-486d-9afa-d6069cf09d2d af2c9219-2ea6-48f0-8d6c-034e73fac665 342a52df-3ae9-4077-a4e6-16e1ae8628ad 431719d7-d3ed-4d4f-901d-e0b9d95106c2 79aaa082-17ab-4ef5-ac02-42c8c0c74a45 32089565-a4ae-4fe7-b399-6051e8025d2a e7d9769a-17f1-4b28-bf4c-1704ad306ee3 70730839-1f8e-4aa0-9355-917c8c13403e c40a54f6-0ce7-488d-b95d-87ed04450fdc 2007d475-1d4b-4b03-a166-9a6ec5b71c39 4ee88288-db81-47a6-b4f4-3078b9ac36cc 1e303e4c-bdd6-4fc2-a404-cad00d86bba1 67a7f234-cce3-49a2-b12b-505ef7a3fadc 5695ef33-005b-43b3-94e5-8cb37cfdd85e 5c00f7cd-9bf7-4ab3-bcd6-c1e1671650ae 2fa3595c-8834-47c4-a7da-289422488bcb 608fe38b-f66b-42ae-bdc8-05dedcbbf263 ecd2c147-f4cb-4882-ae1e-c3e6b9d5df47 07002e77-e363-4170-b720-53c6a2d251d3 6aff4234-40af-4543-bc1a-facaa12e9b6f f2c8d9b9-f978-4136-9ab6-4931fc9bf765 c85f2b8f-769e-4d0b-a9d3-c349235087bb a21478fc-ef27-4ae7-862c-ad98855b44e4 5ed7c5c3-b356-4c96-9005-50c3827690b7 3edbfa97-0d9f-4261-a841-7d90ddbd8ae2 13787a65-629a-4e87-b35c-d8d56cb272e1 f0541825-bcc1-47d9-82af-fb3afe581505 0db725ce-fdad-4f04-acc2-1b86bb0428e4 cf1c341b-ec82-4691-858b-21df89f92e34 80bb3ddf-176a-4968-9a8d-b90dc5887e95 ce42c287-3657-46df-af5c-12f0eb3ecee2 df3cd72a-0cf2-471b-a46b-a22b343c82f0 35a0154c-4fe2-4f08-a936-628dd941b78c 5213b8d6-b725-4e61-909e-7340f72125e4 7e1209cc-480d-423a-9478-db31a801009d 1f464092-bbc4-48d9-bb5a-2fdacf68f2f5 6dd93c9e-fc16-460d-a053-214673814785 3778ec52-42ae-4b73-8bae-a393dea88e62 0208b2da-e032-44fe-baa8-30fd4baebed0 196449a3-c5bc-48d2-b169-c5c91c9ade6d 28a410f0-494f-46cf-a163-103a289a14cd 8d86cee3-70e9-46f9-96c8-5861d5c11948 beab84f1-bea1-4e74-aaac-c5bc2416a637 db96d17e-ea10-4609-9069-934d508d4809 8a05924c-617b-4883-af22-ad3fe30a4e4f b0c5c698-d26a-43db-8383-c6db81792ada 588b0bda-38f4-4bca-a63c-9f384900754d 880d7949-07e7-4a25-8ee5-dbc5eee0fdbf 0cd78198-0a76-449f-853f-f5742d954f79 541ada60-e9f9-4fc9-a5f7-516b8eaed6f6 1dd40d61-a2a5-455b-961b-fd64d14852e9 335965c5-18fb-44ea-a0a2-b6add623e085 e4ce7984-93ae-4ed9-a203-9f41e3ef3f8a 5b3a7273-f8e9-47df-8c10-55cf2ef2e61e 59f039b1-ef99-478b-8544-21552e757b5d a2d46857-b8fb-46de-8668-c7f7aaa99acb 038ca338-0a61-4ca7-b66a-5627a1760d01 6c3e681d-1dba-4e73-9286-03e2a44fc9f0 9da47b0e-b1b4-41fe-b4cc-b60e519aa4d4 461327d6-f316-49b2-b972-03bd664a9d26 8dc45081-0f26-4c90-9311-7dde91008fdd aad6950d-7737-4edd-bc94-3d510618b5e8 43a5d3f4-2d8c-47e5-9eef-52097bbb2929 dacd74a5-017b-4322-9a7b-c9b1373c8fb0 07d64605-9537-4d3e-92d1-735047933a7c f78f5410-28bd-4c07-919f-4e4acfe0c957 946d13e8-8e69-4fc1-bf5e-baebad952675 4ce6985b-7c95-4b7f-91b1-f9efb7ef6cbd 039afaf3-0b4b-4126-8b47-75277d00dbcc bab28d86-bc81-4161-a344-702f7c600042 e10e4632-b252-4fba-b445-8481944e46b8 824b1843-46e3-4854-a5ad-ef5301119b98 7af60aca-7d8a-4c2b-9691-c3124ebf1ae5 e45f1b72-0b40-452c-8205-841e7503fd6e 973fe168-1140-4fa0-b9a5-a8f8729a6f8f 470d5f9d-aa6c-4163-95f8-9d9cc1e1513e 1becee90-12cc-4333-9170-47d0dfc4e4ad 5652a1a6-544d-4499-8c51-e452f5293c8b 3d6bf76d-dc5e-4e27-9467-72fb38ce257f 0af41e47-7eb0-4bde-94fc-598787e76888 df256e79-be6d-4201-ba2b-879251104a7d e1732576-bfc0-44f5-9089-2408118a74b1 82c0ac4b-a4fb-4376-9339-21167ed5a5e1 88ef3019-b267-44f9-a1a9-24f98795e5a5 616def73-df3d-4ca5-b202-44f3deb5ff9b 10459dd2-8f51-4537-8c85-f7b608e66336 e72699d0-3395-4a4b-bdf1-12c01ae9f64d 09d1f8ec-33af-4f9a-9e06-1cac10caa4bd c40c2a98-d4bb-4e9f-b268-65e197fc100e aa7175ed-0645-4a86-b221-b91e25449c07 b113d34e-c686-4d07-8c1c-8fe5e6f31ae3 80b1032e-cf31-4a16-b846-129e02122722 7615e21c-2b4e-45d0-9990-e03155cb3bb1 aa4e0045-bce9-4e6b-8619-6ac6424652a3 090ab159-d222-4fc1-886d-a239dff8b17d 7056637b-17b3-468d-aebd-d3eb1b20f5d9 ab3f30b7-486f-4812-bc57-5971a810827b c248ac7e-4e7e-42aa-ad83-3d993dca78fa 0cf0d4f3-8205-4916-b8ed-ddd73752b08c 251502f2-125b-459b-8d3a-4aea9ec11327 f49838d0-d5cd-4b5a-bbac-3e480c6df4e3 04f8664d-496d-454b-be50-6423b27e9464 dbc66c58-6d8d-4813-addd-63239ac3e720 3ac81c33-cc9b-4f6d-8b7b-cf02576f888d f0e0f767-ed1b-4d2e-814d-797a7d3039fa 7202028a-7451-481d-8850-6a4a8ddc2538 7437469e-a937-441e-b85a-7110e5878cd6 80deaa0c-187f-4a69-8355-7958d6c04c4c f77afa21-98d0-4d88-84d8-ce62bd07dc23 b97a05db-5e25-4d3e-941e-3895c6818965 bc1d8bf9-b82d-4cb0-a882-4c7ae17f4d0c 8ca8cd0a-68ee-4e7b-b469-9846abc4ba73 22e610b9-980a-4c2b-a219-90f835bd1034 2b1bd85b-aeb8-4902-bb7c-40bfdd3965d6 56aa07fe-0257-40a7-8752-76aec1045baa c9518c2f-6676-46ea-8ea0-512b9a7cea5d cf822bd6-60e3-49b6-b288-f8b264993148 60b7c3f7-fc7b-4f1d-90bc-ebe9774988ea 1a80abd4-2dd1-440d-a8ce-057a5b46bd72 4d627524-1ed4-44df-9f18-6eb2459c4cde fc703c20-ef8c-4dd6-b3e8-d6653f9ec256 aab1d543-75e0-4e7c-bfd2-20b8a9a3e7e3 d7b8821a-0569-4f18-a432-e1afcf6bff32 8f0e8791-3c76-4a47-be5e-9a6a3e66a35b 7a25eb12-f903-4f44-a0b8-92636813d6a9 557359af-58b3-4db3-b7f8-3d75aba57ea9 ac02c38a-6fb6-4ae9-9b24-93b46b80efe0 32d90ddc-2937-42b2-9196-9efad3ec4588 df2f183a-0e54-44ff-b5bc-5f99ac99297b 83aa56a5-cdad-4082-aca5-16eb16b39143 647021ff-b56a-4cfb-a05d-faf132a507c6 8749d7d9-f687-433f-baf6-9f0e32de190c d5309ccc-b832-40cc-a958-ccf02975e278 de8d3244-eee0-4c68-931f-c08472e80ae5 5d633e7d-c8fe-436c-8df9-bb3b8432e757 0b4761e7-0d85-490c-a93e-6f17973b5915 a6ab06e8-e8a0-41f0-9475-aec48c6451a1 c967dd12-a10b-4cf1-b7df-949b024ec7be 4b04d3b9-c7c5-4c44-9fe1-c982f206dd0d b5554b1b-5891-4960-8412-e6175e4385e0 ca2b8e77-ef24-4dec-954c-81c81593eaa1 402469e1-7c53-41c4-8720-4bd190fcaa9a eacb2dd8-f6c4-43df-b6c2-3495b69aed38 303edb52-5d4b-4007-9201-0e3c7fcc33d5 08b9a9a3-1160-432b-a29f-0bb15b396e2c f392ac19-e4a3-4f43-9d4b-03f1f58fa019 b83c4033-f5df-49ba-b1bc-125e0634c545 5e4c1b7a-7e59-4a50-8dcd-b13d417ad0b1 b0c1d925-509d-410f-bdbb-a436c657c5d0 73d5892e-b948-4af2-8a1f-31f2c98eefae f254b9c7-38eb-46ed-b2c0-540bdeb7a532 03b719f3-64ae-448c-8af6-8bf73e2b76cf c9f9b913-3663-42d9-a8b4-e7c114764615 4b47d181-7f65-4f2a-a10c-6ee51fb3f1a5 6bd6fc49-7fbe-4454-a7b1-09c2dc97e3ec 602dd25a-4ed1-4347-b05d-ab4a6db067d3 4d6dc24b-adc2-4f5d-9fff-cfedd7c95731 455d2acc-26ec-47c8-a4ba-f4d6b74933cf 690311a4-78f6-40ca-a940-e8b45eea3881 b7cb56af-8aff-482a-81f8-5792b4de62cb 8aacc6d6-6ace-4b2c-8305-601667e2310a 2c6ea9a1-8afd-46c1-8a4d-85588a4414ba 588baa2f-5a57-43c0-9bbb-703d5d513821 d4a1e0e9-6ca4-4b31-9bde-8dca0e0885b4 c8cb6c94-3b34-4a3f-8b8b-e9b4dcd77def b56867da-9919-4ccb-aea2-604ccb4c2387 074b45fe-56e4-4096-879f-7543073c60d2 92b1ee31-d73a-48f2-846c-b46a9effdbac 163b97a2-65f8-4497-bdd4-70cf6cc9368f 80fb4cae-cc80-49c4-afd7-4df83a03fc99 7d7fcbb6-fb94-4e14-b480-eab056573a31 b73de493-6451-41ad-9ff9-4ed2eb15d4d3 03d30a65-15e6-486b-ad44-be9fdbd86001 336996ba-cf8a-42b8-9fdf-2c71cfd6076b a473f7ef-ebf4-413f-8f97-1cdb84d29969 f438f452-688a-4a90-b184-5287703671ff de7a07e9-5341-4a96-a514-a62d9102fc24 d9c149f2-468d-4aa0-9764-a35b3560ddb6 73d93798-818f-4507-88f5-3d60ec7db26a 715f56e0-cd0f-4154-b141-0a2810d1a306 db4ab5d6-e923-4f48-b00d-13aa2330085a 74dc7818-f5f2-4326-b28d-b377023285be 6490b08c-da57-4be2-8477-863141f3323c 4f4253e6-5225-4cc1-afbb-e3fee681661b 0dddf17c-b756-41b1-8045-e6fa39e3e4f3 871d6031-09e2-4953-9ad7-5d677f73089d 477b31f2-53cb-415f-8b5b-3400777341c7 42e06c90-84d9-4d51-a397-ceaa659021a9 3e954272-0100-4a31-8605-f5735baa1b9e ca104c70-a428-460a-bb57-6914fbcaa764 4435138e-12fd-4a63-adc5-1739616a00d3 17e77da6-d847-4422-9479-0663b164cd69 2728ea65-d640-4c55-8cb9-9e113f3772aa a8022dd7-764f-4214-8134-71203cd98f7c fe287e38-2971-4b9f-a34b-25e5a50640f7 25e33eea-ccc5-423d-94d7-c44d5a34a27a 58a5a6eb-d4f5-4dee-8eb1-3a2f694cbe90 aa1e99cc-fd58-4ebb-b401-f539edcfe9fc e8a43af0-85b2-49f5-8d71-4231d6b2ed57 1ed054d0-64f7-4ebd-a1de-f01fb5f75a1f e021d7d2-a67c-4737-ac0b-b8568640e33b 2a66a1f9-6f56-46b5-b60d-3d466424adaa 66a98c14-b0ec-450e-9048-887ccc83b4dc bc56fff2-84a3-4cd0-869e-a4856008c9ca 5e285fc7-3f50-4028-90fe-054fb0ee1070 64c822af-64ce-428d-a876-4a62899db32d ab6071b4-b700-431f-b481-67c73d300979 a0cf04af-793a-4711-b69c-b632d9cd6885 43216bab-7676-40db-aeda-1af122f30e3c c741190b-e939-4b32-985d-b4df2f74a467 8652c90d-22ed-4799-9e2b-144ea1df2709 d2b13a56-70fe-4525-be16-5a071c01011f 6e08e67f-f9d2-45c4-b559-c6a9545ae2b1 e10239b7-90f3-4956-8445-85cf73533001 32c1fbb3-9a8b-4c07-a9d9-c7e934050070 aed71bd0-1261-47e4-948e-b034b7b5d4c1 3508add8-487c-4eee-ba46-0755ebdd9a47 5f02fa63-be28-4613-83d9-88fa18d9fce2 68d5b474-0f53-4b6b-a635-0c5ea684c397 b320d549-80e9-4393-bcf7-6995fdca4ca8 02deebf1-7a3c-4b22-bd21-4a5d0f497200 90208c05-f87e-498e-b4ec-c21207978082 6677a669-3375-4f45-b65c-70f982171a2f 60d4a5b5-bced-4c22-ab2f-8ee05076ceed 0829138a-f06f-4bf0-9ebd-92fb66ccb5d9 ce0cf6a3-65a5-40ec-a166-c3847c988c5b 5273c29a-0e16-4abf-b331-8527af2abbd5 926c9d09-3835-4f9f-a359-289a35e3b008 8d76488f-6c88-4d9b-a848-af66b58275f5 b3df1b3f-152b-4994-88c0-eb8bd2573f7e 8da897f9-6727-4e64-8a54-59fa1f3e0d5d a9a29a50-6852-468e-a500-a25b27b37af8 eb970dca-6fbb-4542-a792-2d6d1f3972df 0eb48ecc-7d5c-410c-a294-7c9d8616fa80 b070c584-8c9e-424f-9917-809f715abc3e 3aef533f-22e6-44fb-b9a5-c3a73ecc3b70 5f68c74f-dbd4-44ce-956a-e9c783045d9e 853f1bea-e10c-4773-bd09-fa2106565349 989dc258-04de-4a63-9d58-34aaa8735fc5 2e232210-7ece-486b-a27c-6f221b7587bd e10da5e1-2288-4431-8af7-2a84753ffc71 e9e7eb25-2903-4f7b-8e01-45dc3d4e4e5d 9f68034a-ebd5-4677-ba4e-40680bf2a65e 96c2515c-8173-4fd6-8a3d-c821ce670586 6a6dec81-df4d-4289-b036-1a74948fae8b b43c9862-3333-42ff-902b-0ca4b10776bc b4f2f17b-e2ea-4259-899c-a36d09483299 ae9c1bed-23fe-47e5-806a-792073557acf dc3c8cad-0086-4682-a7e9-1209f6616e9f e2eecd30-a43c-4266-aec8-d15581c7a14d 496f6578-e87f-4f99-9416-620b0dea5481 d065bf46-e2ea-4d0e-ad9a-a1a76606f9fd 3b4281d6-330c-4b5e-8f47-847590b76924 85bbfae5-d689-4cac-bef9-f98c800d2b0b 85ee215f-825e-4aa6-95d2-e0e5e40082e8 ac4858f2-7194-4c5c-8e92-4ca34d83c448 47fef6ef-9e4e-46aa-b2a4-aefdb2dcf021 6593ffb5-625f-4a05-b9dd-6e5c37c8b17a a114c663-7242-47d9-8468-b71d1b83e4f6 027b355e-0e0d-4ef0-ac6e-672a867766b0 a4248b4f-0b08-429c-a4ed-632b9e2357e7 ee4b7c3c-f360-4d4e-a049-6b4ea8fd7267 23620155-c8bd-4e5f-a592-13d7ccd81093 88295524-f383-449d-90c8-443764ae3996 7e64eb58-4cd9-4f2b-bd81-005226bb55d5 8046ae9d-4c0a-495e-a168-9c49a50c7047 05e6c176-46bd-4b1a-8f37-0ccf0a8e5ccf 62fa11f2-74ee-45f9-bc9a-1d8b49e2d705 e0a876c5-d102-41bd-baae-61578ad507e9 eb1288a5-24d1-4403-a7fc-89d8af05f14a fea47fed-45a7-4967-a045-7e3eb987b22c 1fa13284-c4fc-41f8-98ee-bae559c3e3ee cebac757-810c-4fae-83e3-75119de5e107 298bf380-d59c-4c3f-a419-a0413db34072 9e8973a0-6a49-45cb-9457-7b67f05ad292 356cbe07-4bc2-4656-a321-904cb220132b aa83b29e-a02a-4a13-9f1a-6a06ebce8b80 98a54fb8-3d86-4701-a446-0a867ddf67e3 ad6ebe11-0d2e-494c-99c4-51a8622e8d59 e63adc2f-e5f2-4b44-ae6c-dbf1f55ccb6d 9fe7e1c7-0c0b-4822-a79c-8e838a6d042b c9164f6e-f751-4400-8217-b9b955bdb179 9221555f-7eba-4aeb-94db-064b11a8b167 55e98da8-0bf3-4dad-81cc-5ee2a6e9cdee 5d9be992-a3eb-4b59-a66a-155679a4de5c a1f1963e-e819-48f6-9f1f-0f3f72c03cac be0ecfe1-bf01-4d32-b727-f85214de08f8 9fdae880-f75e-4c14-9d23-8e5fce3e326c f2eba8f1-f828-43bc-9841-c1b2c8e9207a 79afced4-827d-4556-92aa-223545aaa744 650378a5-7657-4896-bdae-044272db80d0 261bfd88-f9df-4b70-994c-cff9fceaea2d d3220e29-1f66-429c-a529-4d6536c80b2a a46f157e-2988-4fa0-b636-c523f30fb2b9 8b0f46de-696b-4614-8efe-da2b8b1cace7 53ebb34c-adb6-4f8b-b5d6-06ab3647173f 2aca4330-c7a8-42c3-8382-b7dd2cc25817 849ec044-b1fb-42e0-9713-fa76dc1e4187 061e1bec-9930-4dd2-9815-74f13b71f903 bad96a2f-efd5-4ac9-bc22-45e533ee728a 5ce20455-f4f9-45cc-8984-c116fa4f24e8 0a00346b-c9b4-460c-9fcc-1335490c16d0 fdbaaabe-e7ee-4264-8e7a-808614bb1d47 5dcad11b-49a0-4667-883b-83928615f5e7 e416698f-a65d-46c7-9a5b-b2c18c1373f1 8ebc74ef-1e35-4213-99ba-9db5d0025f2f 20ebe854-0999-4277-989e-bb720777cb17 d62ab594-d7e1-49cb-95ae-3774c5bbb7bb 1ed669ca-b329-4658-8a8a-ef66fda518a8 7faeead0-8bdd-467b-8f96-814a8bccfcb8 7685027f-a3c3-4430-a788-938dd201d549 0535a6fa-1d0e-480b-a4f4-e3fd8087a33a 704583dd-4253-4575-9af0-483f1f50098f 641b59bb-88f6-4302-a5fa-085811fb21c3 8994cd08-322c-4a1e-8d64-a0aa99c9edb8 05958aad-0380-438a-bd13-e1a669904f5c 415e5f8e-f82a-4668-be2c-6fe81a1dc4f3 94c347d1-00f3-45b0-bad3-51df0a8a7f4c 4c38df24-0dcf-4ee1-8c56-76908424359d 092abcb9-f4a6-4443-b2f1-132283513155 634a7f25-2491-4473-9293-d20279bf60c7 369dfb78-cfde-4547-ae48-d1c68405d578 fe4ff6f2-baf6-42c4-898c-7a24b1708cb0 0b9d6ba8-aa92-4e56-afd9-c07cb68fbd67 0da59c02-ff74-4d35-a590-94d58b3a5123 e2384cab-a655-4152-88a7-a94ca146a250 b30a460c-d642-4c26-b0c2-ed9fcb0c14b8 f8ace30c-d095-48ac-a514-11b84fa39271 eb742fd8-b2aa-4f1a-9d5d-4ad0beb7cec4 c11650d3-7afd-419f-bb45-418d3324319d cfbaed9f-350e-4eee-82f1-16c2764bd6e4 01151fe7-a953-4548-91b6-3dd816f480c7 b5603a10-1f74-496b-952e-63093f56be68 84a5a325-0fc3-4d0b-a8ae-9fefd616562c c0ce6e7f-455f-4ce6-9c2a-404eaa88456b 23622be1-ce2c-4215-a4c9-599aca2846b1 ad0cc3fa-23a3-4d9f-a6d2-44276164bda8 26e4e2cb-855a-49f7-b6f1-63ee16584abe 5f59dc4d-b3f5-4906-af7a-d86f03fda97e b08b5e19-6b34-4a99-ba70-456c6954d893 a7836560-397d-4682-b6ff-4a65e8c10081 91298006-cece-4301-82ae-819b412ec37e 848c698c-90dd-483d-9999-6952e72d885d e7729b89-ca8e-4af6-a9d2-a89cfcf0ace6 07346efe-1ec1-4895-985c-2e0df3da990c 25c16e92-a3c8-4a42-a5e7-ed20495d7862 8a49eb5f-a65a-4797-9273-ce492b6dddf7 192636e9-24e6-4479-90a8-032578cb9289 f38d5f5b-4657-4a47-bc2c-ca4eebf1dd43 b09e6449-9be7-49a4-abb9-09b66790f7fb 9fba1fda-3006-4f4d-b9ff-bd267e888a1c f4536da6-af7f-4d8f-9ef1-fd873c6a23cd 178f546b-bdbf-4608-89f0-d38d137df56f 5a0a951b-64de-4eb0-961b-d3445e898745 6bee79c9-21a6-4c97-998a-b203c6a9f6a4 5d85b543-b59e-433d-b3f2-b8f22a7a6708 58330381-c0ec-44ff-86f5-7b4f6681233f 6c2eb44b-8b45-4e71-893a-d756c995b1ee 9dd7d268-1905-4f2e-ba11-cd01ff3bbeac ad00e9fd-4b32-432a-bb38-3716a0277d36 bec68ee8-bad0-41b2-bb9d-b011860833dd a3905ad3-6bdd-4843-a6e0-a48f971d972b c01e6391-65b3-48fa-a5a4-d7b1d791c31f d3a5fbd9-cce3-4e83-8702-ec55fa2aa76a 26d12cb9-29ec-40a6-90d0-a9916ab7d71f e1542d95-baa1-45f2-81f4-ccf605c2a1ca 29f64d2e-e856-43c0-9bc3-6019be167edd ea17b0f0-2b3a-4df2-a8c0-777a2f906026 2293efaa-3864-4356-a338-2404c45fb140 b712554c-b6b0-4328-83c4-ab76b195fc40 1c92b777-7daa-432b-b871-1de4051ebc73 d285628b-469d-49be-bf2e-bd8afe3ea3ef 6f34acad-31a1-448f-8fe0-abac7837cd3c 36310bdd-6abf-4269-8c40-f18f2d406bdf 08c52cf8-2400-4d7e-8c95-02ecd1d88413 904bedbf-c8aa-4923-9e00-c24327343c37 3990110f-3bd0-4224-99f2-d3176105b980 716f672d-5a75-4d51-91e8-d4ce0a923631 591779a0-5437-495e-942d-6ff0055579cf 7acc021f-57ec-47e0-aeb9-473e73e8c755 5b9035a1-2f87-4f40-b058-29907c676752 676ad174-df27-4a31-8ab0-354d1a4e4dc6 013f5b54-78aa-4a99-b185-4d814830d02a a035d320-1a08-4774-8743-ef8e104fae03 24bac5e8-494c-4614-8929-0250ed3799c2 edd41b72-a812-4f42-877e-a3d99bd17d9a 0ed263d2-8b4f-46f2-921f-48babb929e07 085c377f-af65-4d10-9ae9-64f9144b7d69 2e427bd9-ff28-45b5-98f2-b627d50f823a e50ea25a-6599-46c0-bc87-98d08ba863fe 9c6cd7e5-ea1e-4b2b-94c5-28a51d0b965c 7ecf740d-27ce-42f3-8a2f-7c064faf0901 c94b5306-a124-4de9-9343-12b9aa97beb2 73f39348-79fb-499e-bb91-432b0fca22db c46ac9a1-679d-4812-ba5c-cc293b21a9be b1c916c6-08e4-4576-b326-8ced9ac0a531 b39fd319-6bcb-4a87-94ca-5157577a4a6b 572ac440-4236-4269-a43c-441ff0534809 e2701c0d-350d-4283-8064-c02cfd26ea22 a5c6a98e-134f-4857-b7ec-4b7b4861bcdd 8ea507e2-58ae-439a-b452-07705521f474 e78d300d-1012-4078-a82b-3b4b904cf936 61847b29-4073-4edd-afb3-57896ba81620 64356673-5dfd-4e4f-b04f-f780b8498363 234c03df-4cc2-4a83-b268-350a1ec0d595 1300cb6c-b24a-4d48-94df-919edb03dbc4 8e6beb44-c913-4e36-b986-989a262f0269 42619929-c1e0-42bc-9936-a3c9638a323a 05573f42-1c21-4098-9584-448d1564c693 8131b074-e34f-4f86-9c19-5cf96fac4bc9 19cee09a-fc19-48c9-911a-300426538255 92f55e2d-a4ba-40b0-a5ef-32198d616612 215c949b-e486-4b2f-8679-7c80a63574a5 f95b4acd-805f-4ea0-993f-c20bd5a8d19b ad642b1c-a0c8-463b-ab19-98815bc158a4 5bf77b67-97af-47c5-930c-2483882d9127 4b73b82b-9e64-4a38-bff8-776a6473249b 1f5372e6-c19c-45ba-b35b-aaa51246504b 3277ef9a-4c1d-44dc-b76c-98e6b33fe949 b07f39dc-569a-4c26-85a4-4b1f8f969b87 43c37e7a-7d81-487b-a682-ad9b5d3b37b6 8a206d3d-7f56-459d-ae90-52b2aa0ac7c4 bc4a36a2-809c-4a30-b13d-789940c728a7 11136fba-7d80-4195-99a1-6a7dff300ad2 a29987de-f1c4-4ad4-9b4e-c6484afd0f5e d476d713-6e04-43e9-86d8-a3ced0dbd864 46c6857f-f153-4ee6-8c59-80603de86cec b825d994-566e-401d-8a72-7159ae246553 d0de242e-5485-495d-821a-b309206b1068 0362d649-5469-4983-af4e-627ee22794e3 458d65f1-f688-4d34-9c49-691cf8faec68 03933b61-d7b1-4cf3-b801-7b21ed4ea44f d8612906-25ce-4523-b536-c4142d7ffbf3 935d97a5-5816-477f-b142-cc90efb1a4df 0445ee99-5855-49d2-89a9-6efbad4332e7 0b2c594d-4f81-4ce6-b716-97ee9b0295af b1b8c1e5-5788-4b85-904c-bd90b4a11ecc ce0c3ebc-7d99-453c-ba9b-d3cec40b3b8e 5b0f8065-45c6-4927-b6dd-a0559fa0f444 3087af72-2bd6-43bf-ab97-b80fc77e8736 16cb5e21-1420-4717-b2f9-d9138e9a88d8 22d4bd45-35f1-4445-9fbf-7c90f984e6ad 57a5ce53-6836-4c27-893a-ad86aba578a0 d5fcb493-58e1-44b5-ac00-fd05a74d08a8 05b166bd-b33d-4948-9b69-76e1bb873272 75b77b7d-bd28-4a29-a519-5758d77ce964 a4c4df50-08e0-40c9-8285-65c61d47f3f9 7f74bf27-8074-4880-9f7d-df78c533a9f6 4452d56c-97cd-40d1-9a47-50bbda9c6d1a da34ecc2-b3c6-46ff-b7e6-79d9acfde2e1 63ec2a62-58d7-4d16-94e0-7b52529d3797 81b55fc5-fa50-4eea-9139-89b87cb10a9a 36cbf6fc-330f-42ff-83aa-17e8751d983c a938a9c7-35c6-4480-86d1-64f6e55581e1 74885965-fce0-4ba4-b7fc-52e37fe99600 cb3613ea-10df-4455-bed4-37c08cf8f615 f2e7cd19-1a4a-4cef-b78c-5a25bba9bdac cd25f5b1-1a92-49d4-b5c8-1357e187e591 f4afb42f-0cff-4dfb-8d6e-71342ff95392 e10bc004-3b88-4e94-8aff-c6a282af9168 4947859d-8041-4760-80f6-01673266635d fb930383-c256-46a5-8d83-ed3ecf90080e 5b055938-e088-41da-bce8-93f266371d31 92f80584-2dff-423e-8ba0-277905746b2c bdf84911-33e3-4a12-a1d9-df23a4971e67 5d9dd5b1-39b8-4529-b489-dcf94715606a 285b406e-d92f-443d-ab3c-b9a3496db4d0 0813b72d-3889-48bb-98ad-d80d7e03f81d 97dc0034-e02a-4bad-8f33-38b5bf05fdd5 fd3a8ac5-bd06-4591-a87f-d4302bf555c2 1885a710-1d3f-444a-9e38-f286a627d590 2688f093-6993-42e7-b649-a6906bff7db1 1c3ba206-be7a-46ba-b9fd-28b2fa31f12d c057bb51-7aeb-411a-83dd-67506a2eea41 65b3b715-af9e-4d36-9d58-73470bc2a9cb 1e7ebab7-124f-4d2a-ae5f-e9e000997d1f 076c04a0-4a2c-42db-91dd-150c767d4dc0 769a43ed-d7e7-4200-8bca-c803accd8f16 7fae1102-998c-4359-adf0-402e72604ff0 4aeb2910-cafd-4d14-a5bc-93299689a506 c9f30652-dfaa-42fc-8458-2f0e090da2be ca4e216c-61ed-45e0-9d70-3c64211aaa94 0baf0516-0e1b-4b42-bf9a-208d5023ce2b 3b5bb14e-b613-4e80-818a-686f5bfb565c 7b30c7a2-cdc4-42ab-ac42-45befdbf8c67 80d60d91-4cc9-4723-ab1e-d1d45c6c4ce9 c1040367-1ba5-4dfa-b7a5-bc1c406a0796 09e8f87d-1609-4bf5-a74b-ac3fe8793c07 1cc74003-b52f-4e51-bc47-b4b53e0ef950 6e1a9278-934e-47e4-a85d-de10f45c3540 84ad347c-c688-45bc-b86a-da204748ca79 bdc2f665-48d9-4c02-a32d-db4debce877e 9f7dea02-73d2-4375-83c8-9aca74a553d4 799f5b3a-f6ea-4506-bfbc-e90ca91031f2 927d65f4-e42a-4d3a-ab48-4701e2119989 8ae04c49-1e81-4f4b-9c82-2f34c1454c04 63041f2f-2167-4537-8f5e-7865307274e1 190008a6-8778-43d1-8ab2-643e26119e05 89538834-3368-4934-b96b-8de0d2b61eca c0559651-66f0-4237-85e1-8a02719517c5 045cffbd-7742-43f6-9e0f-943ce185753c f263c241-4034-4a71-b704-29233d775bfc 7b12eb95-0333-48c6-9958-d566281a0f54 651c40c0-b148-4c5b-9ea0-a0637ef695fe 90e0bd8e-abaa-4060-879a-1a0c3ed5f996 6656825c-780a-43de-8b1e-63c3d56b736a 6d1a6ebc-2749-41c2-99d5-0aa6b998d329 65396fdc-27a7-4256-99db-e7804891c6a7 6e4a6a31-856d-4ce5-b9ba-b085ea2ac5e4 89c21895-1f02-4b0b-9836-d36c02a60f38 9cc2fb0b-6779-4838-a478-b387c4df20b3 386885d8-223f-44cd-b9c0-526ec4484b8f 4a63b1b6-3520-478b-a820-20bd1c11000b cf1ffe9f-3d80-40d3-b4ff-69484bdc8cbb 4c86b5f1-91f1-4767-8adf-fbd52ffe160a a14ef850-6a7e-495f-bf1e-8842d4b81994 100443ce-d512-4adc-b73e-3051f085ffde 19c8cf66-a763-423e-b60a-8cf181c82bd0 8b08fbff-05cb-4e2e-9ff8-2a4b4ced4d60 7146de03-16b6-4795-bfc7-8bb2a3893749 2a000bb8-06d4-4828-bf41-fdefb7e2df84 4306fe26-279d-49d2-83e0-711b4ed14418 09b3c9e1-d231-4a2c-8f69-1d55b72e31a5 45a2bd0f-4d0a-40c8-9eb3-2278fca9b7c2 4c1c6e9b-04d5-48a7-bfe3-06a931d7d93a 52c7d260-da22-4ac4-b990-a544c3218811 51691c9c-d6fb-4e83-87bc-5c2472ed9b9f 15b92ccd-4342-4783-88fd-c9ed2c5351af 6232a4ef-1e94-469c-9c8b-2e87615a6d8d a941e9d3-5c5c-4aa9-89f9-2efe23049066 02c418c5-790c-45d1-9b55-e840c809cb7a 1d0fa5d9-35d3-49f9-bfdf-ee5826d60560 4ef633c6-f1b8-49ee-b08f-eb5181661818 5536fd1f-7102-473d-92a0-65adc11b76ea 0f92f6cd-d42a-4522-9583-51a8ed65025f 22457003-7c62-4823-b5aa-2fa32f4e4309 681b4d23-092f-41b5-ab37-6283a7f119f5 acadccb2-eef3-4aed-9f16-36badb82a0eb cfa44761-2e57-41da-943e-d016647ab8a4 46719b68-1b6c-42b8-8b26-f0a7a00d2a7e 7fc04633-6435-4e11-bff9-50f495447a18 1bcc9cf4-82b9-4599-8cb6-9c0c6cb70ca0 013ce620-35c2-49cb-a08a-e3c428bcb8dd e9c39611-bc44-41d3-953c-0e3219852b6c 89c2f53d-2266-41a4-990e-bc55f12acec2 de9ec2bc-a9fe-4b72-8849-4701d9ca8bee 5019b233-62a8-43b0-bb0b-e6b415d711cb 15607b8b-486a-4d24-b26c-454e09d4e034 7de9ab26-4e37-47ad-bd17-ca77ee21e71d 666e73c8-ca89-405e-9cfc-61e30ed75329 b7c1cbc2-c7b5-4bad-91ea-89c727cbf8a9 62f2c4c6-044b-4537-a4fb-9bf8d8caf152 9453177c-ef39-49e5-8ba3-4092483d7ddc 356ba491-2d50-4c03-9824-320dbc4680b4 88c1cb67-1274-4af5-922e-fc641132a500 a37c29cb-167b-48ab-bb86-80ff0dcfe0c4 c73f86ee-e73b-44d0-ae1d-85edaef6dab0 67b7d4b2-b800-4935-91e1-16720903fa50 746b7524-d3fb-4536-a91d-93a0f63d5089 6c8c2035-1792-4549-9cbf-d722664f8b97 5b2079a8-7360-41ec-ad73-e2ded259b490 fdc0ef3f-d523-4bf2-ac66-974d89536b69 754f58c8-312c-41c4-83a9-5744c216bed7 bac2644f-2780-48b7-90ea-5ed3c814ff92 e33db577-0a16-4f68-af1a-5b5f8eacde18 ac179946-c19f-486c-ac1a-642c051ce144 8d0af804-8089-48f9-8210-8c79fef38b63 8a40c09a-84cf-4a56-8764-72fdf04434cf fddd712e-aeda-4613-a345-82ca2d8aca15 a5fcaadb-f170-49e3-8d39-9fa73956c93d d5ce958f-d043-43d2-8a11-51445e46671a 409a2cdf-9841-4476-87d7-5008a8e386cc af678610-b933-4d46-854f-9dd06974ef92 b8ef6ce4-428d-4dd6-9228-adc23fbd71f3 baa2b9c9-bd3f-49f0-bd19-43b7b8e87ded 597e8bd6-e001-416d-b62e-9977727849c5 c446f4bc-a74c-4ca8-ad23-6b807012a094 79acf878-98be-4295-8490-edc67010b8fa e9461405-ac94-4f61-be89-6a15a8292c86 90fc61ed-99c7-4a3b-ba89-bbb7012f2bbb 82c7f5cf-1696-4d44-9320-c1d3ef77518c 73f7fbf1-5bd4-4a28-ae77-cfc02345df9d db9f1068-a4a8-46f8-a500-78bec97d1c0f 3d4524d3-a6d5-46a5-8989-731efd267fb3 739414dc-4e78-4cc3-8e61-42224945dd89 37c1df3d-7490-4001-89c7-ad288261b80c 97e523fd-271d-4917-9fea-8e365561599e db0b2149-e640-40c2-88e8-d0da673c6b9c f8f35863-8ddb-4ea1-ba20-7429b3af2e9f 13dab8c3-b293-44a7-960a-811a6818caf2 6fefc3a9-70b1-4246-aec2-b8ca303614ba a62f30d2-b255-4eff-9e3b-05652f74ba36 2dfdf22e-53ec-474b-a378-db697b9d233a 2d6c01b0-a9f1-49a0-b426-df3d61c87f02 6d523c05-4640-4325-9ca7-c6b7b957e650 bbc43f80-7dfd-4c1f-8f6c-eddb28afbd78 75ab9163-6792-4006-8e10-47f98e5319b5 a72f219f-3d7c-40a0-8993-976f62b8772c 1ffa05c9-3230-4446-bda5-dda977aed4b1 9a98cf62-59b7-4039-9ecd-b4889f4979b3 85051429-617d-4337-983b-42d3af7f1f9f bbf71488-6f7f-4aae-8062-6542c7517171 28d03b6a-c99b-4f0a-9834-bd6d42ab71fb 74fa512c-1773-4c16-aae5-ccc1e53cfeb2 754fd5f6-5864-44e6-8d5d-6721f7ab52b4 b171d144-407b-4b37-97b4-d6706d6689eb 9cf7f65c-e9d2-4e8c-a0b5-b3525f51955b da7c4916-08fd-4fe8-bcd3-99e0d31af011 9f14f03b-7b50-42d9-adc7-2a5cdf7da89a a6d28332-33fa-4b9b-88b2-368cd3306376 b00369a9-6b96-4d71-99a4-4b0dc33c1163 379a6503-5c00-418e-9b8b-d6d4ca02d4bb a6a42366-60d6-4b27-8a02-d78f15023ff1 90c6d871-6ebc-46bb-beb4-7a162006a141 2b2cd6d3-3093-45e7-93ce-4e1ad4a49f3b ef8d88a1-c513-42db-90f2-dc1e5fac27fd c6a4b3c1-6230-4a1d-a363-5494b6eca5d9 999970be-b985-46b3-9468-87279be772dc 3ea0157d-4795-4431-9c56-671838feab40 77eeb96a-a65e-4758-bc31-1c63cd3de23a b56a040b-b587-4a24-9863-7f707d8b1336 14db8b2a-dd9e-4163-828d-e1d399a8c04b 20fcb2c0-72a3-490d-b0e5-e523c83d294e 6d08f848-bf36-4d2d-8fa5-aface5d6c328 39560df8-d254-4179-82c8-3e5ecd311319 e09ebaae-f224-4b21-965d-7233465f489d a689f438-c79f-4cb1-ab5b-cc44c048ae41 a6c8f9ce-82c5-4667-8a90-5867ea0f99c0 239b7a5c-534d-4a6c-9cb4-50cc57dc0a3d 1c407e62-1e2d-494c-9986-952566777ce8 157e51b1-8496-4ee0-a956-fc332c2531ff a0c94abb-d6f9-4ae3-866e-ff4c5f99eacd e440ee6d-f66f-4cab-9521-9737dca7713c 457ddd36-249f-4899-a2eb-ed14b3122c8b 6635b10f-b57c-48f8-9d6b-bf526c2397ea a2d65968-deba-4eb1-aa47-a7b53e86703f 4f67abb4-fd69-4057-994f-5e50861115ed 507c0ed1-21ee-4314-8002-68da362cebd2 aac34018-87a0-4655-a6a6-1da093b2844f e873ca8c-9e52-4478-92dd-dc32c8631b05 d6502837-10ea-48d7-baf3-7d729920f99e 8c1cbf54-aa1c-41e2-96e8-d2c844dbc4a5 7e7283b7-42fb-46c9-b9cc-ae188bd44f47 bf5d5664-d7e9-42a3-aeb5-55058cc01284 92212d79-9870-426b-a1fa-1b7a00445821 2687995f-f767-49df-b0f0-1500f0a8dab8 3dc13a66-93e4-422b-a680-b7711ef71120 5d8a0f0c-9f44-4e03-9e91-e537ff0d6b0b e5473efc-a417-433f-9659-2dc6524eb4c7 da2ecd19-66d8-47cf-bd23-51a1c6caaffe bdb4776a-f3b9-4f99-996d-313a77e44824 2ffdc797-57fc-443e-8aba-01285cde802b ef1c7cbd-276c-4e4b-804b-c05248c18781 0c8d850c-12f9-4ea9-b375-2fe584f6b10d 8e489587-5908-4d21-a134-9d2a8526da8f 3d97c98c-2a56-455c-b743-f163ab2d742f c6000b52-c490-49ff-88ab-a7d453207416 45e20713-c17e-4c91-af3c-a16b7d019fc6 e6d42250-cec0-484e-b090-f6d995dd3887 5f364527-a301-4380-abb4-58422b260ecb 132ad5d5-12cd-44c3-8642-40129bed48f3 38f01439-66d3-4039-b6ce-b43d572b8ba0 057ab2bd-02ca-404e-86de-34d94df57e38 0676c387-85cd-4f10-a107-0fd841194936 244aadb1-f5c2-4db7-a0d1-1a4821774deb ecdda12c-662e-4e65-a591-a9f1d9f6361e ff588a49-26e2-4bae-94a5-d9eba9c46b4d 798d2be3-6d8f-4b13-9dac-f6eece53b323 5d8e4b6a-8b19-4505-be3c-6e0f15990312 c34da258-2166-4d9d-9cd3-89d114cc3071 5ea127e7-7033-46d8-a827-06692fe7aceb 89f70000-fa61-432e-933a-087b18e48d05 64922997-6c46-4fe4-8ac9-9cda0be84087 0d9f05ff-f4d8-4cc3-b300-8d9f7ca30c93 539cfc2d-f6a6-4e80-8e32-29f4734a01f9 6d2e9606-1d1c-4e1e-83f1-117154f50835 546c7c01-3a06-42c1-9079-5b1b399b49ab 85c78b14-0458-4aee-a8d3-99b2a4650933 a594d64a-edcd-47ee-b256-fa877919de7b 3683d35b-bce5-4ac1-b154-81d0e49368a8 b4502df3-492d-4084-87f5-066ef8668dc5 a368480e-931f-4416-bf29-f320cfdf803e e93ed532-2290-4495-9c71-6248abc3bfc9 468382ad-097e-42b1-b060-475bb7bf16f6 556f048f-404b-4753-943f-6f835b915c46 cbeb850b-62e0-43ff-99dd-eb1c3f67ae29 eb4059f9-9d05-486c-90f6-f90c6f67b49c f6b0bc35-1790-44c5-aa67-0f7b696dea38 b2069e04-5802-4d68-b07a-2cab5971f9a5 b79f7957-2407-4b2c-96d3-15b334c0b606 ede1912a-93b0-4a96-bea7-78651c10200e 2e213b8d-4845-484c-ba81-c5de90177552 ad943c1c-8e35-413d-bfc8-6b62b77b81b1 0ca0c937-ddbd-4a38-8d85-aa64bd4a1577 7860a377-e7bb-454b-8916-48c336b18863 1088239e-cfcd-46b0-bf78-8edee3dca3ee d6d941ac-d2d6-47f5-b221-8a837c0bc090 d0ac046c-30c5-447d-82c1-ec900a0ba589 1fa3a2ab-34a0-4f11-b028-24ae0c8bf2ea 6ee7ddf2-6901-4ce5-8a05-3051fc82df0e 74e2a414-d63c-479d-8201-e9a7ddb1c7ac ebab544d-c5dc-4d9e-b225-ee63621cc8d1 f48a68dc-a4b7-417b-a92d-0afb55c1ffc3 32b128d2-89b9-4802-be70-20186b485954 932a32e9-5ed8-4238-8273-603371697775 53048ee5-81aa-46fd-bd6b-05585f48980f b41a87d4-2795-420e-a88e-18fd2c1cd316 d38585b1-8e25-4456-b315-bfa7b4e7c6d3 8c94ff6d-bcf8-4e8b-b482-490216dd40bf e21bf68f-ebe6-4b55-9227-3c3347632341 c86ef41b-dac2-4593-9fd8-f64d2652ed43 36870f25-452d-4e63-ab14-42df05bb880c 9302c94f-f61b-4ac6-82e4-17be144838c4 e1b9cb7b-b423-43db-9ae1-b94d455c4960 02655120-abf5-480c-8bac-714e764eed06 e8d10886-b1af-4055-8bbc-d63ffac4044e df3d59a1-763c-414f-a596-a1ecc9cdf06a 9961f4f9-b5b4-4778-b9c0-9a5878ce99ea 68ecaab9-a18b-4b9c-8ff9-2ddf2ffeb825 d025e986-2ef1-4f47-b6b5-b822984dbf39 76f6d0cc-c53c-4525-8cec-561009fe9472 06c33d20-adcd-4088-9640-4326aaeddb15 039c52f8-bc48-4c62-b890-2261fe84fab1 a8cc7c44-08be-4edc-9c3a-9c3529516d43 9e218b6f-1cea-4841-913c-24a95737febb 76d9c5f7-9564-43a2-94e0-11a27a26e0c6 707e9f3a-9ec2-44c6-9b8f-679d59d41040 27f389f0-aa12-4192-b1d8-2ae82eea2ef3 428ebc64-5d68-4d1c-847e-0130269de536 362ed99a-0cb2-45af-a70e-ae97f7d5cd58 cb626c11-b7bf-40a3-bfe6-a84c3486f7d6 8aa08b18-a37d-4df2-bb3d-79f0778b7894 d6859c32-7c86-4ecf-9143-e73ab01385e1 fe2b9f1f-3e9b-496b-bf6f-f057cbc4c287 75381564-c471-4893-a0b9-40949cbf5593 7f103ce4-e839-4163-9530-1f6b96c02c9b a56d4efc-4397-4cba-b986-18cabefe83bc 422e6583-7b07-4a24-bc08-dcc0918a9607 1b49a274-4ae3-4a36-a9d7-38d982653c46 29769f63-ef05-4aa4-92dd-4f62de6a8497 fc3537ae-7775-4cd3-b872-d92f4abf1ade 2f778a95-ba60-49dd-b971-eac4f6d75ff7 71c6e6cb-d590-4f7d-9bed-f57d16cb7824 92cbd265-67f5-4203-8860-2ecebc2f88d5 6014fa2c-8691-445f-8517-c84a45da9fa9 5fc27f4d-0b69-455f-a0c6-acc05405b05b c19ab94a-265c-4218-bdba-576811e26f13 4d65ea61-e0da-4599-8923-3bee77ba980e b08ba291-11e6-4100-95b6-dd84aebe0bc9 8b764720-ab8a-4e56-bc6a-82a11d5c5ee3 87ec2ae2-79cd-43f8-9218-7a8c81957319 b3aa9028-9732-4805-a675-994c490934b9 f8aabf6c-eeb3-4b54-9a95-1eaad853f359 cda6a14f-6ce5-4bf4-b154-04b04637b41b b0145c9a-a503-4fdc-8eea-0bb952e3f81f faa7a2bc-316b-4209-aafc-eddad3fb7d55 ca995f63-ddb2-4bf7-9d67-4d4faef1668a 93740933-f09d-4a68-8b41-5f24ef26afd9 085e095b-ff3a-4a05-a532-df39568815a1 fe2abb4a-26fb-4326-97f6-a557f2e40c22 6307a30a-be5c-4892-a2e4-2771d87e98d5 edf039ca-1b71-4bdf-9214-91bc9b31a93d b45c02f2-91da-46c2-9891-465f3cb5823e f32ddb22-fad7-48b9-b102-26497243a27f e96dd769-5e50-440c-a407-88119e25326a 82ec6b74-da6f-41c3-b8ad-2d1deb376a98 15804171-43fd-4dd9-8768-bd483e93a50f 4dc2a55c-938f-4774-b02a-9abbeb6e37ee 4856926d-85a1-4c86-b3e9-11476913f5c8 d4b1f0df-490e-41e0-9be7-f3cd152bcbcd 383000b4-22b9-4bf5-83f4-d50b3c907f62 816e2403-a4ae-42ed-b75b-2a78fb12772c 3ba23396-15ee-40b8-9010-22dcde66962b 9103a237-a534-4d28-b914-6abb70fae2c5 e63c1e8b-8ea5-4c8a-9855-28ffa7df4b21 93be5a8a-1423-4c41-86aa-139adde13be8 3580a7e3-9574-43f6-a98a-ea8e8aaaa1a5 c12372b7-9753-4102-9eb8-54f436bd80e4 3e82db00-0db1-43d4-a4b4-8fe72506a8ac 0fdb9370-ddde-421c-893b-67a997082f73 4d0b115a-04cc-4253-a598-7e6bdc7c665d ffe08a31-a162-48ce-8239-8e3bfd4dac32 327a2017-10bf-4e4d-8a2d-bdc6064a86a0 81ea44ed-f652-415c-b65b-04a2370948b6 6d3a26c8-72ff-4b83-b93f-3d71b2cd562b 9b374352-7858-42a6-8f47-4cedeb1dc66b a16d5a9f-f96e-4c6f-bc40-392ee98ef424 b19e0984-9e1b-4825-9538-9ea58fbc1b27 c03fd87d-97ac-4813-b959-0c3dd06618e0 cd409c7b-27b9-4766-821d-0f72b65ee9f8 86f39952-4edd-4fe3-8d5f-b1ffdcfbba6c 0ea9d16b-a8e5-4201-b74b-079afd76a297 76325ae1-dbd6-425a-851c-2e8b97b0f26f 9a5e1d5c-0ba9-4b3e-b077-450ffd96a486 0a81216b-e5e8-4cf1-8892-3c1710cdb5ff 09719d8e-1bda-47cd-839c-0bc90ae82d2a cdf340a1-3b5e-4a62-8e56-5408a0a466e8 d24b398b-a32a-490a-b250-112b9f00c01a a105b22f-d487-45f8-806b-3d8e4da36cc6 d638b2ae-2521-418f-a39e-f2faa834aea2 c9179e24-2b53-4360-bd53-ac6b0071f214 4a739641-e800-428b-97a6-502d4750bb00 3121fa39-b3d7-4417-acb0-fe2f85ef910f 123b2099-4d90-45a8-becc-a8bb06258f82 2fd00475-7694-4f2a-8a41-17e01f416d1b 7a60c883-6d12-48b9-a8c0-bd5f148bc778 d5eaf09f-8507-478e-af9d-1a15449d9c2d e4694e32-7018-4093-a66e-42882aee3eef 8f8902ef-4c7b-49d3-ab55-f9e738dfe4f6 b6f46dd3-8e9f-497d-a5d0-f538b20356e5 918fc283-03e5-44e9-85a9-c7c1760558f4 90e08921-e5ca-4912-8715-7e21131bb5bc 54e7dbef-0600-4833-b04d-251a2bbbf472 9607ffe5-1fd2-45a6-ac92-296ebea36b23 838b70e8-d63d-436f-947e-7bc2cea8a2d5 056c613a-35c5-4781-ac09-fb706b92c328 830fad69-dd22-41a1-9fa6-6889c9e38e6f 9429a839-6a0c-4dfe-87c6-82b7cc65b25a c3b385be-e6f2-4c9c-a34e-6ae6f649539e 9ef59550-e7cb-48c5-a486-d96ddebbe4be 86489d33-939f-4469-8f49-fe060f2dce3e 6a960ac3-d1aa-4e5c-babb-520c3be9aa99 3c3e42e4-350d-4b28-bdbd-8764b87e5018 e4eecd5f-26c0-4dfa-b268-1fa2be3959ea b4538d29-344b-4e89-8bfe-3b9e550ab86f 9c45c7b5-c2c3-4bde-8da0-284d73e2138d ed8a3ab9-0948-46e3-a70d-49a692b218c3 7bfa3c62-83ee-48eb-8195-a0ee7355e760 22c9b12f-3b77-4a78-8ce9-ebb99259c133 34b752e5-0efb-4aaa-941b-eeb0dc359b17 4fc9b132-3b55-4f32-9ed0-529e67d17e7a e9d8e833-2c49-4230-b83a-9fd6756b260d 545d2ae3-03c8-4c1e-b2b7-fa26cc7c63f9 55458d50-861e-4f93-916a-d22fcaab1475 6e5e2e4a-637c-4904-97e3-b0d322f42310 0c4ba5bb-ca24-48d2-a4f8-b587fd91f8cf 784795a8-793a-403d-acf5-4791459f251d 29c0fec5-4add-4615-852e-4be4ad19a468 e85d1328-fffa-46dc-8c44-93940c6b9b4b a4212774-0f7f-49be-80e7-f7ad7d2c7a37 193b0ed6-64fc-4fe4-985b-6091ccb2d659 6e79517e-50dc-41fb-8f09-381e9decb33f 3e7731d6-3660-41a3-8762-7262d981e944 e2a21cfd-352a-4607-b747-8bcf81d9d00c 91429d9c-2af3-4ebc-8caa-e08f561e1af1 328316c6-56f9-448e-92bc-a7a99252b0eb b978f0e1-568f-4d6b-b49b-713ee212ea8c a80f1f33-18df-49c3-ada0-99e982264071 979932c2-3575-4013-ac54-7ba6396007cd 046b05f1-4984-4880-9e31-2d86b1789cc0 6397b2bc-1184-40ce-8468-663cbb03afcb 4c9f1067-f5fb-48bc-9bc1-f9f15184dd1e 9f9a1562-5dfc-49f7-ba4c-d85867594e77 a2e2e862-43b9-40f0-b928-2e1087919696 41668d84-c467-49b8-bb9a-916b625ae1fe a4eef42a-4e97-4dec-8604-0a397d55f2a5 464e8943-0297-4192-98b6-e444d1abfc90 afdf31ca-df51-4ec7-9ed7-e640a084bd0c 07e3d6ed-bc10-4948-b453-58e8b1367af4 447950a8-cc7b-44cd-a463-5e4a7c355845 7c9b0178-88bb-4228-8a08-5cc59c2d048b 4f7296ad-d197-461f-9b99-27939228d9b6 e97ed06b-f415-4938-8681-d128f253dfa5 112116b2-221a-4600-b28b-c28acb02c3ee 098c03fc-8fec-42c2-99c9-7413f1c1c29b b45d4998-d477-4197-aa45-86bbe72331c7 c5c79963-114d-4af2-90f9-0fe23b2fd757 68202636-d727-4b5d-818c-1ba05be727b4 951b69da-7887-4fc3-b1e1-98c1e9f90f26 bfb4b198-eb10-40b3-a6f0-d1c315b87b01 d88735cb-b6b4-4a0c-a679-96860c814e89 4783711d-09e6-47ce-b519-948c6d94fd56 5b008e6c-4441-4069-bbd6-09462235d707 7e75f390-9727-4d44-951c-09267be838d0 1a6e2086-6406-4e88-93a5-faedb2042c15 9b6aa290-a78b-4eb3-8442-d4e019b2402b 87b1d6ba-36ea-48b5-a61e-2300934a4fce 45436a5d-8066-464f-8b3c-9e00575cd9b3 9f3633b7-7259-4212-856f-3d20ea120b4e d07f9ad3-5943-4f2f-a396-b02e082641e0 bbfd78b9-c33e-4204-861c-286868ff8e21 edf57f81-055f-4463-8f88-b36318ace12e e390b0a1-faa5-4334-9964-2aa81a061013 d166af59-8092-4433-8990-f3fb4b0954fd 6e5aba10-88c4-4b67-8731-b5f1f6a0309a bf389910-bed3-4f72-a565-41fb7d05b63e 1ab5715d-f72b-4660-90ef-6b9f89fd1fde 121b71d1-adf8-42e6-a999-f6635772be78 7226f8a6-3066-4fa1-8ea7-9244a96d5c52 898af535-8690-48f9-885b-e2695df4d867 d08e2b2d-ccd6-498f-b58f-d891581557a3 2f25c1b0-b8e8-4a8f-abb4-d173147fa264 57425f0b-cf8b-409b-bd6d-f601d8184652 547d6249-9867-42a1-890e-2947ede09828 7c71bbdc-ca2c-46b2-8dfd-7684c313321a eb548929-d14c-46b0-9112-cc047d0ee8e7 2accdc69-ecb9-48ac-b48c-012de954a2ab 43887fae-48ad-4f94-be65-749b8274837e 96c1b47b-d3c0-4575-9b04-3bc9ea928617 9381813c-9a0c-4e36-8c00-b848134795ec 62427b03-f1e0-48b1-b538-d969dc85edc9 c0b42ea0-f31b-47b1-a737-4ab0fba6dc07 94b34d12-6039-4332-aed2-4d823b4078c0 7793b4da-a6dd-4464-82f8-a423959860a6 5090893d-62d9-4e1d-8948-3e6c4f6fb088 c4307371-3c3d-4371-8c3a-0c2514df8794 71842ed3-687e-4ccd-aeba-366cb8d6b242 e7686e7c-7d15-4801-ab5a-27c3493bf2ab 2b9c849f-57c1-409e-b935-44d58452bf42 c4738f35-4682-4ed0-a6ca-3a9e621462c7 89865f87-014a-4764-b5e6-5766fddf0f6b a0f17ce9-cac3-4bc8-a66a-ba551d42ba74 1746fe9f-8616-4779-a530-7d20a3b7959e af9eb693-a5e9-4962-9a23-7d04005913ce 2352a35e-f62d-4734-8e30-d4a6ef229e41 e97febf9-af70-4158-a804-c446776a01a8 5dec696f-325f-49eb-ba99-47f17184f470 873200de-d240-43ce-9b07-8b058ffccace c52a3ecb-907a-4c78-8919-8fa54222e660 7eeee44e-ac23-4bc1-9f22-80ce9c21df53 46cad835-2b82-4de7-8fa5-949fc977b855 9b00c066-c1e4-43cf-b8ff-bf60a380a68c 727e29a8-12bd-4785-b533-6ac1198558a7 49e245a2-3cf1-4f30-afbb-2ea39303ab91 55cfbeab-6f6d-42c8-b83f-aea87d0a1637 952888dc-fff3-48f9-85ff-335ea68910b2 92b6f842-4444-45a0-97c2-445f00679093 240a8b4e-c974-4908-a57c-da48529edd59 2a1288fb-69fd-4b05-a949-d80a9320aae6 20f243ec-f310-4cc0-a437-86f3a5f1dd74 2e661261-c1ff-4b91-bd1e-2516e80449a0 acd98b46-8b52-4baa-9c52-d043aab7502f 07b7bbd9-a404-4503-89ab-18ae888c62db b6f6edbd-a5e4-48a8-b338-38ff265de2d3 bee7593d-81f0-4a2f-bde8-9f2d1aa7eb64 d5dcd0a9-1f73-45cb-8eeb-d3637e98b7bc e1460afc-e486-4e79-876a-53f063772fc5 b27531de-d15e-41b4-86c7-6a731b2238ea e688d735-de26-45d4-82a2-af35fd9b4c1a d9973dcc-7d09-4a79-a801-058c250ee1d3 32355e30-bcfa-4eeb-929c-528f34a3c05c 9657dbc8-98a5-4156-b00a-cc293b6130e1 3c4e67d9-7287-4dc4-84b5-99a6d63ff42c 38f16735-cecc-4bad-8528-e0c1716ca355 c2912905-f2c6-4d3b-92ee-9dfaa2d5170b bc3f9a43-cba3-47fa-8cbb-e50aaadcd0de c6443c34-b511-4526-8955-1ddc0f5c320c 1cafd63b-9930-4305-8824-f4fc12268370 fc20b8d2-93ac-4557-b96e-a6f2da34c5a0 6f2dee51-f275-494a-aa5e-dd4e9fc0df9b 2445fb5f-d54a-4f94-a816-04b03a73190c 59465a44-df9f-44f0-8065-472bfdb4d9a3 e070cad9-bf74-43e0-b929-31b17459b9c8 64ccf911-809c-4506-bf8b-7596d3270d1b 512e7e94-226a-49dd-8b7d-804faacd4fbe 2ae2d467-1528-4b15-a660-de650c8ad2ad 8af9897b-a1fc-4a18-98f2-ad0be6104feb 2f2ec610-1b6c-4691-8fd3-09425f2d6db4 117a43f0-0ce4-44c8-9c61-5d3add0a0a32 d38b6576-8b23-4e63-882d-f5de5322625c 34b23120-633e-434c-8b5a-d8f471176cee 825e0398-71b1-4f46-bda2-da4ddbe01a41 f79f15b9-fe5c-4648-9c07-8c268b293ed6 11025cb7-2533-4a64-b292-9d30b7de67b9 419233cd-aec4-49fa-a459-31f263509c11 3eea34ee-c77b-4ae1-99e2-0e136ff8ce46 ffb96902-6366-492a-950d-8202629adb01 3dc28d8f-60cf-4ba4-8de5-26121149cf79 4c7e349a-6016-4e41-a230-8c82a9e82320 84bca5ed-578d-4ffd-9074-1d472426993a f3c82af5-060f-4ea8-abb0-5413eeaca5ec b2cf5f81-e80b-4c8a-b9ad-d82183cfdf14 ce48a7d6-41aa-459b-8ce9-47d8f3bdf36c a730a678-a65e-4ab1-8ea8-0f6e586aa9c1 9c680f5c-b46e-4720-bb92-14b4f62dd450 798be48b-a6cd-4c3c-999c-8387337d2edf 350d2d11-8ee8-4bc3-aef2-79f07f0f33fe c02b3fc4-679c-4a72-929c-ca07e1597543 39d2fd9a-cf96-4a17-882c-b41abb1e4bd4 1f421e0b-fb38-4e02-99ba-cd2fb9f8e54b a9ce28e9-b5e8-46ae-acc9-c263dc3f1f15 e2c372a0-32d6-4950-ba11-890b59fe6e9d 4e7bcec2-d219-4468-bd7b-fdd5d5f2c648 78d0f902-27b9-4853-a25b-f579e85ddab3 33017ca4-b33d-4021-afab-684586bbb441 11da2b5b-b429-48b1-a57e-9edac67554de 9d6f90ce-608c-4e4b-8147-a39d113f9d45 09c3c74a-70ce-431e-a92d-ae0d8b878c3a e9a6e136-53a3-4151-bc1b-533eda6e07a8 5361a2ec-8760-4753-887e-454365e0df0b d3cc5de7-187c-4d02-8be7-48cac52cc991 85817054-d2df-4480-8a0f-fe68863d7da4 04a35ad8-e5e5-412a-9ec5-b44b7faae99e 1827ccc6-9dd6-46ec-8f92-366494b0f694 4cf3a573-624a-4151-a1a2-abccb2b9832f bfe00c1f-0a30-4105-85b9-957ad8d8bce8 2223f528-6a81-4cba-848c-f921a696455f 1dc777e0-6879-453d-9739-df6cfe4c4470 bea2d430-dd67-4201-afa1-652484b6ca7f 2351aa42-b7ab-4c1c-9724-eb1b3b4d32a2 857737a6-332f-41d7-be08-958a70e6a893 3bdc0c68-b38b-49d1-8587-f2bbcacb7e6c c1325009-c14b-453a-8d60-fa43d6bdc67b 5f797133-4db1-4da3-8eb4-cf7837806b55 3a06e8ef-0bbd-4ac3-a5e0-07709832af94 6d9aff16-4f30-40c0-9c88-6a0cf217d556 c64dba89-1b42-4e4b-9164-4b6b7872681e a5a7692a-733a-4b77-9d57-d8248846ab68 3406b3a3-3de4-4556-a6df-c8710bbbc4bc b07e0d0a-a52c-4852-a149-d5f7053ede0d de4053fc-dc93-4e57-a403-70a668c6e8b5 3fa3c7b1-2b9c-40c9-86ee-1e657959857f cddca91b-19d0-45a0-835e-4587370187ac 1c281fd5-cee3-4b13-a0c3-0a6708795bb9 c7d7e0aa-b91a-4224-bba4-c20790f9bb94 0a838421-ea0f-4494-82ab-e8ac7cb690ac c7e49923-c18b-496f-b93a-de1d0d6e1347 36b70455-bb78-4f5b-a09b-dd6e4ee6b46a 44e87df3-8ff2-430f-b415-9787ab7ac12c 3a98055e-469d-416a-9950-c4229268c663 f6474ab8-aa41-4d08-a8aa-91616e3e57c3 9739516b-2d91-48f9-bd38-303a50bbe2d0 2dd9dfbb-478a-4b64-a30a-9f8ec4d536c6 c917bdf1-9261-467f-89b3-0c779a466db1 876f2ee0-9b18-44a5-9ccf-d0212ca5d540 f1c45875-1369-47d3-91a8-a312ec2ee426 cca076c4-0a76-43b7-8954-c30954fb943f 7a4c099e-da6b-4df9-a76b-b43745a09b07 2745a04b-bfe0-40ae-930d-a79b61622520 a20acdfe-53e7-4334-889a-3f3f090a220b 8af03c0a-9438-4a8f-b588-cbb704defbd6 87abdc5d-f686-4cb9-bbea-20863fdbfc54 158081f6-a562-4f16-87c5-deb83c757e72 79e891c6-d799-4d39-b817-5252cbe63c0b 0fe5a957-6519-40e7-b8f3-94c90b6c76d0 4ca3ccec-acd3-43dd-912b-c0c9e4510d71 e23f3b41-d4fd-433b-a5c3-8a6dc00593c4 567d55a7-038e-427d-96c4-1b383e3796c4 ba203fca-96d8-4e63-a157-c818987a9de4 41805aee-f11d-410a-a9d1-348610ce73e9 9829ae01-efb1-4e52-a80d-26fde6ba86b5 5d1ab81b-2337-41e0-bfa0-779720503ee5 46bb1943-d067-42c3-a987-9a1ad27fb4ba 1c51cde3-bb56-49de-a065-c9bc1417deb0 df8f81a1-fbf9-4b40-a1db-5a34a45a94c9 2690e914-4bfe-4477-8992-c109992a75ff 06b9e2ad-8e17-45a0-aff2-b2f580a6484e 1d211817-27de-4cef-a25d-14a7c7923d4b 753bf699-2b52-483e-989f-fe2949bbfbd1 5931c8ce-994d-483d-bf6c-7c78031a1a8c 0cf30632-f7f5-4b86-825c-63b8fbff985e 9a6fb452-b898-420a-968a-f4a65c1b9034 0d5c528b-b47f-48fa-a29a-bab815e45b45 f199fdbb-5647-4f6b-809f-4a83fc27f6bb e0df3c6c-ab07-4fc4-af77-0a3558d26aaa b7b0a145-8790-4457-8631-ce7e5b05a070 29444269-d3b8-4edb-85b3-a3da58ae0d5c b672097c-d063-41c1-b706-8e78fcb7d78c 9fc76df7-f7e2-4d57-8f71-a9c6afc8bc62 99ab50dd-1158-4581-aa0b-a30871965eed 4e54e216-e8cb-42d7-8f89-11996bb80b93 abf3e52b-0ac9-4a0a-935c-7f43b42f00b0 b58810ec-17e7-45e4-9c5e-7ec5f7afb690 4afc7595-7255-41c4-9362-dbd9a88d008d 07c5152e-5b3a-4fd7-87f0-92039bb7b520 6f60604f-5418-4274-bd50-454fb3a96805 4fe682ea-69b2-4ac4-9092-cf73e44ea09e 4a89e4c3-1555-4cdb-b3da-c29433022598 b71a270a-67f0-4ded-ad76-da4df81c6b25 850e589a-84c8-4394-91bc-44a4f70eb379 35c1e721-e20e-40f6-9ad2-d3c1f96a2cef ae3480fe-d5ac-4474-a5f5-56fc62c5eaf0 e32744d1-ad5b-4c68-a03c-272431e5ac54 2950ba90-a684-429d-9ded-d84ffc318b0d 27a535a0-3039-4ca1-884a-0c15bf81dc97 c53a3a2a-55cd-48c6-8721-c6be3aef1152 e93486a5-b9be-42f2-a9d2-88c4b8c2dfae 6ae63936-37c0-4321-bcd9-836b7999921e 24f593ff-88bc-4af7-b0b9-f850aaa479a5 c6c5907f-284f-4c47-807b-00326d3a8b14 e1f4227b-c91b-4823-9c7a-9df6560464dc 266125c6-9c70-4b80-9327-4752ec581cc3 6f37b4a2-fb06-480d-94ad-e659738ffbdb e58dae3e-d4dc-41ba-970c-53ae265817fa 83383ca9-8d27-4d5a-a14b-576133592879 79fd852d-a3f4-4105-a06c-5708851eb6a4 760bfadd-026d-43fb-81cb-1b6a2064529e 7ba1f5a3-f29b-47a3-a35c-bbd885684b97 d0aaf4a2-581b-49ec-a2b7-fdb853eba43b bc60641e-4508-4737-b2f1-154fa70bff41 559a91e8-f5c2-45e1-bbf2-6fd235c8b2c2 efae4471-da4e-4159-8d99-29946c4ec44e d73213a0-5487-4317-8b12-186c2e22da0c ca61f294-d7e8-48f7-bf42-671c3ebdf2bb 27ab5891-fc13-4241-823d-6c1724e84d4e c843ecfc-a44a-441d-958b-0a4666aae0d9 f5ac7421-227d-4372-9d20-c4193d9b96b7 ab122443-7299-408e-9dc9-cf86a1119782 347d20de-ab79-4315-a317-05e95c600055 d5285764-4b32-43ee-9315-c27213c920ce 5332118d-75db-4254-b948-c9e3b264d36e 71b02ec1-ec60-4627-839c-c66435d48dd9 f25c7cf4-be01-4d9c-8214-d8eb3badd185 3671dc40-2812-4499-b222-db673e8a3e18 188e23c8-4622-464f-8794-4f0bf1dc569f 50277c7e-2801-4c3d-a81e-09524fddd95a 7ee7b405-9841-45a6-97af-3f76962122fb 5bc5370c-0746-43f4-80d5-580eeb61a33f 6856373c-9edd-424a-960c-21ab36729c2b 3bf6d48f-adf1-4eb1-82be-6c93a4ca2601 a8a72a09-9f1f-4188-bc62-1881dc71f4e7 10b4535b-cd16-4d0c-9cc5-78cfc7d482dd 2167c455-6b1f-4332-aae0-cbddb871b625 cb789885-1088-4301-a680-2e0248079e33 be48e67f-f3dc-40b3-aa9d-404ec0d55e01 f528ea63-4fa6-4ffe-ba57-fa270dfb2530 7f8a97fc-6b9c-4e8f-8579-ba1289369554 58dbeb5e-6e14-4566-b3c5-bb8a7e8a9f4b bbb50f6c-b7f7-459d-9dcc-e1437103a135 3b13edc4-5955-4037-937b-cfd51af68087 fa8ff847-c3f0-4a91-a1eb-be4b868029ed 5a86b5f6-4616-41fd-aad3-18884edd05de 03277172-b14d-4592-9547-1949127e9962 f0bdd5e8-501b-4e2a-8cd8-2d5b703efa06 a081e708-fc42-412e-854d-935418d9666b c8fafb7a-900c-4f71-a04d-5d4c5fc72e7e 612e7b4a-74f2-4e8e-a4a1-a3e35cf7bf6c b0b90c44-c02f-4557-8083-a596a0432997 737dbe66-5cd6-4244-8126-53ba9e40b760 5d568966-b086-4727-a07c-9ddaeda70f34 5d2d16e4-5b5c-4da6-ab65-e27144abc46a ea882cd6-364c-4966-b193-05116bc2d41b 35de9804-420c-4b94-8f2b-51e776599b63 cdc0e72a-5b03-4c7d-a366-8182152ce458 a73a7e67-b092-445e-bbe1-e169b1e308a5 640f5004-deaa-4667-8d6b-d195dfae74f0 f752c332-9bb3-409e-90fd-f7b6e66f77be deee55ee-308f-42db-bffa-7c0d0299d60b 9cc9e18b-0d46-4443-b8a3-fc2a1239af8e 4587b2b2-f262-4dbd-b6b5-8727b5dde5d6 eef2873b-78ec-4eec-8ee2-2a77fb804b85 0339143e-f2a8-435c-b719-bba249076cc4 2df92704-5486-4d78-b83e-d6af4ccc26ee c9103fd9-182a-4219-a1db-84ea8a096095 932548b3-3a0f-4e4d-87c8-aed2ea9a1d21 21c63e7d-7010-4a7c-aa69-96e09e4222c9 788462df-31be-4a67-ae04-d4444cdb0368 01058e6f-1c83-4474-a983-61289d181adc 9e8c31e2-5f6b-499a-9647-9efebd234d14 f6894453-95dc-4ad1-b600-63d5cbfff350 e9a6859f-8e22-4ede-86b8-4508388777c1 a2659780-a1e7-43a6-bbbf-37ec2819621f 67d97850-0e4e-4ae1-beb8-91007cc1c178 eecca3f2-54d8-4abd-9da5-cd912ebaac18 8a2f6822-13c5-4888-ae46-5e88fecf81ca 439041c8-fecc-441c-9b80-6aeabbd88994 2100aaba-c8ed-4098-bb79-0712c045d941 cb7ced1b-6a04-4df9-905a-8396a5cec2bc c677d231-2143-4176-81ee-b168df5a389c 1c200727-2430-4e63-9869-9c1c80950889 6fd8c0b3-c6ae-44f5-977b-6a331cf700fe 6c198f57-c911-4f70-83a0-333ceaf9ab9e 5a75f924-77db-4eed-a4f6-74be2f2d36d6 f47d0998-e6d6-41a4-a726-51cbf8722961 2bf10b50-bc43-456c-9bae-43a98d9a3c1e 7cf00243-9e19-45dc-a884-1ca52bddad33 5114b724-1ba4-428b-a9e1-8819dafd9ed4 1c1ec1ae-e389-4abc-aa3a-7cff54045361 dbfa5f12-7cc0-4751-baa5-983842478004 162f5d04-5f1a-4635-9784-218da06db344 fd47f349-dff8-4fe5-a297-024bb8b95b81 ebb6f39c-ee5c-4d81-a10a-19f0a55fde4c 89fa269d-2b7a-4206-9713-1b3f4b956b03 0f91ed8a-31eb-4db0-947e-d07a1a6945a6 a9dfa632-e927-4bcd-8185-0f16d670f2d2 3c61867a-8383-460b-bbbf-cd5b1c78f9cd f9e69153-75da-4094-88d2-e6c1d0a8bbf8 9f31744e-a9da-4f41-840b-e1850adde921 d8009cb4-a4f3-4f37-8e16-484f0541fd67 f4e2ab7f-3979-459d-87ba-44dba9e0b3fe 91876838-2977-447a-b513-8901a3b86890 bcfc0942-2b6e-4ba4-890e-7aec3864bbe6 05cfd71d-5906-4abe-b054-923bdac909fc 523e6805-4799-4496-b3d1-2fedb088a18d 52777cfc-6b7c-460f-8267-93989a96486f 622f5e83-05c4-4e64-93cb-b55a24f775bf 22d48207-2a9f-4f9a-a794-da9741432cb5 de5f98a5-2a8b-45ef-921c-b6a22fdd2752 bf05cc93-fee5-455f-bbb3-120c8c289eb9 87056411-cd38-46ef-947a-75bf14db399f d05010ed-6d81-4905-a969-633340006aed 8f67ee88-4ff5-4d4a-95b1-b7e1def40d2f 5e2fc4f2-7a6e-4b8f-9f8c-d8c1f34ab704 d276669a-89bf-4e60-b9ae-3355f0537bb4 686ea09b-a7fd-4630-bedf-29c506f19205 2576e55e-22a1-40f2-88dd-f526f732ae3d e486555c-0dee-4247-b2e1-e019c294f4bb 330a5f78-ee33-4905-b8b3-50b60add5a24 e3fe8e17-0392-445f-a3b8-518e90f0b226 529878db-38a6-48f3-870f-c0f44cdd2eba 73c32c38-164e-49bb-82c1-0c562a8ba1f3 320b5b6a-7901-4030-97d0-efc6f26be5ed c1ca67da-4339-4fcd-8e45-d2d9dff623ba 9eaeba12-83f5-4b80-a5de-e62cc82a3bec e430046f-0ecb-4fb2-ae93-c9adb33afbb9 0e896634-07fd-458a-882c-f59afcffd66a dc75c603-75a0-4bf7-bff1-0236896ca997 114b2213-7b48-47cd-9d8a-767d0bd72b63 b1596986-8b7d-48ce-9d09-4a9e98d6e586 d75a5ef7-5a5b-4c4b-9f28-300dac8c3b38 7e1ccc10-a61e-45eb-8ed8-b0be2ad663a7 7fb82573-5f6d-48ab-8990-aa31d8133751 ca9eec5f-f257-4085-88dc-02343995bfde e7b75874-bc75-4628-a98f-970d6ab04b66 346b08b3-9196-45c7-a7fb-d7be29c858dc 3f76cdd2-4dcf-4075-8789-e0e3b3f76245 e3ffdbcf-d956-4d81-9849-0c72cffec4e0 db74629b-445c-4f0f-9dc7-f34703ff7d8b b440650e-71d6-4def-be73-2055db9f2ea8 478fc3c0-9a15-4c7f-8529-bc3888647b80 8603feb2-d842-4445-9e95-4886fd312f33 e8a530ee-41b6-45d5-beb6-d629833fa310 1c269108-1647-4b30-b633-d5f9f05f471a 7f3f8b67-993d-4abb-bff8-a74ad7a1a858 89936f89-adeb-4ff5-813d-abc46ecc0ef6 b7d465eb-31fe-4486-8619-2b439cea8be3 42a75b9c-b843-4bed-8840-5b20a1c484e0 766a163c-dde4-4eb4-843c-16513522decf 9c429444-0db4-47ff-b689-3df726429cd3 0e4a868f-fbf2-45c7-a0bb-5b01ca143882 9559e9ae-0130-4e82-b43d-a7d732aa8559 982a9f28-cee0-452b-ae9e-63ec82d706d6 d3c85463-652a-488a-8349-46773accf393 09520997-052d-4d89-a13c-0ab5ad62bf7e 82591618-611e-4683-ac76-85fcfa78a6de ce43b394-f432-4f29-a49a-b98a246c49d2 40500ec6-7207-476c-ab0e-663a5be72da2 a31de61f-6740-4e3b-abe5-02b145b7150f 39d1630c-149c-4434-a6b3-ec1a8f85c03d 8215e34b-65b1-4275-82f9-9e5e3888b95d 16491896-4771-42fb-8ba4-9c64491a70e9 43c078f1-e1e4-4401-95a6-1d120028b9d6 fa5f2c78-2ab4-4632-81fc-0766e98fa78d c673513f-372a-4a4d-bb15-bb99f4bb48eb 4ed793a8-ddb6-46ec-9219-efd91133a1a2 420b79f2-4c9d-42f7-896e-94f1037f13a2 4df2325b-1375-4e59-8c63-5be2b43974ba 01457840-ba39-4c95-9e0b-4fb7f906b128 c0a90f17-3afd-4117-8284-9367be270fa3 820df462-eaa3-4490-9d34-1a09376f7caf c4e26d96-780b-4fdb-a5f4-60a16ad6c812 c4c21672-2ab8-4958-8608-aad71fff1d7b 7c2d0957-b8df-47e0-a955-dfffa35485c9 fb9945cc-1329-409b-8ec0-85755b91a4a0 217c27c1-61de-47b8-9834-96cea19de17a 97051542-61b4-420b-af75-d91787c43577 62c5a399-cbff-4e26-b0fc-72474b16b92c 774922b6-c3cb-4214-b148-4703043f2dcc 1d719ea0-12b4-4af0-98b8-572320f82e02 4748b9db-330d-4f23-8c75-4d23bf784274 dd8f15ef-d04a-4ac5-b8e8-5a6fad85b06d 05d65c42-b37b-44d0-8672-7bc690551108 fe9e9170-834b-4685-9c88-7afe6d237d11 e7b867cf-1b2d-46c2-9416-8b04fbff29ea f10e0d52-d652-49e3-8e39-3f7330c6c265 193cde01-4497-4d11-86ce-25f0e1ad2892 c9ff7d6f-0ae5-46d1-9234-2552c070082b 43d1b2ab-5f0b-4638-8229-bbcc5a23f9b4 b93e1663-e8c5-4808-961e-54d752ce4a61 14119bc8-06e3-4f41-8e96-69b912981c1b 536a97ac-4f41-40c7-b6e3-558f67eeb073 88315548-7ff2-4d22-ae50-fd62afeeaa58 2c05adda-9cbe-440f-a879-2f6bd6c4c818 3c4135fb-08e6-43cf-a612-9fa8fb4d5192 4eb6567b-3e11-4495-8ac3-98df12b0220c c9a2f6b3-e937-407d-b102-f6d208fd301b 08a85ead-0e58-40ff-9520-7e601f730545 4a5a89a7-6152-460d-9478-500aaafce916 d5f4be7b-96ce-40c9-a5ea-5c275c7ef606 ae4af6ea-98ac-4606-9d3d-69d9e3efe7f2 ab1f3c7e-22fd-42fc-bebc-e6bf213e45ea b3ea7001-34d6-44c5-9f6b-02be0e2dc5ac 367454ba-a6e2-4ec1-a8c3-a527879df052 1ab6ab74-821f-4572-b1d6-f60eac0a1ee2 c5224c19-44ae-413b-b54c-a7dfb3e9dd0a dec4f628-8e7b-4799-99e4-e089b12e0866 43c2e1ce-749d-4a3f-af39-95b5a76edc9c f678fe3d-349b-46d6-8e4e-424f5de0562e 69abd2a6-04d9-4d5e-bccf-47df85a65223 e6d9a438-6781-403c-90ab-a30283c9aaaa 82841289-af83-4841-8032-62f8be827cf2 f40b004e-b632-4e39-ada4-4c31d7ab6a86 121dd7f8-0106-4716-adec-941571cee70c 14bf32d2-9436-41e7-9df3-a42aac28a366 ecd51eda-cb49-43cd-95fc-ca875969e801 359b9ea2-ee2a-484d-a5a5-695432b50888 ffa4b840-0e7f-4f92-8016-d7879abe773f 27f25df5-da1e-4160-bbe7-dbc01a329bbd 629818d4-c930-44ee-a43f-b8b3eaf961e7 3d0a7c52-4abd-4142-950d-914c7f60e582 7716a3b6-9f70-483d-a6b8-cc4200976010 fac4d5d1-f16e-4dea-9979-ef3bfb07dd3f 6c24bc08-9dae-4ad7-8c4b-07102f04f909 f31e5c2f-bcac-4755-86b9-8fb37e29442e 2bc6c3b6-06b3-4cff-bf25-34bbe96fe6b5 1aaf81a9-6f1a-41a3-a111-ad2e08ae00c5 8d18295e-a6ff-44ba-9670-6b45a95a2e16 0377ed72-f504-4291-adcd-1044d6696873 97d4743c-4a70-4651-b1a8-9079aacb247f 9852d47b-0d2f-4905-a160-6c7553649809 bc1be856-a00c-4c99-84de-a5991266925c 8cf10a4d-dc7d-4ee1-8359-ccc265f8b643 c3d75cd6-fc38-4d9a-b158-560ed4d6c558 d56188c2-6335-4780-8e0d-84110bf69de7 c0467850-165c-4e8f-b743-6579a570cfd1 9df235e9-e9c0-400a-81e1-0798162f5fac 9fb222f9-ca6c-4d45-8c02-eb278567348e 6704d48c-4d36-4c7b-bf90-8e4a804cdef6 64249487-ba39-4d57-ac48-d01df93fe30e 447d719a-a4d0-4e53-8fce-bc2aebc20262 6fd7befe-96fe-4db2-ad17-b6a6e073044d f0e08e93-6910-49d8-87e3-3e6e7814b39e fff26647-0159-4173-864c-5fe91894326c 0e6217ab-c555-4630-b6c9-15ca40d58259 38d689b9-908e-4e5b-b673-24efc0ba3e1e 616bf220-71a2-48fb-931b-5870d8068af6 d3bb8d44-ef9c-41a8-8758-50bf0d8c9207 b7a5d6d2-81be-4d2d-a614-fb736a0df851 a14b07a6-b3eb-42b6-8061-468336370dcb 82f78f1c-646c-43e6-bbed-99722eb00472 4521b813-7cf1-499b-9430-7d3141450065 50b69b03-3450-4e14-bdff-4dc6f65a3f63 8255a03c-1e7a-4a9b-86ec-26bdf82c081f f03d16e3-c2f2-4626-b8eb-a672fb81c1d2 f82995b2-5408-40c0-abb7-5193cef09a24 d5dc17a6-fe34-450e-9ce3-ea7b41fa1392 fd401da8-26c5-4013-85bf-ebd439239966 01e55d81-cc47-4935-b743-20eab7ee8392 4f7c59a2-bc5f-49e5-a39d-7296cadd9e87 b23c7d21-4978-457c-a74b-9beddcf077bb 5f04a6f9-822f-4fe8-89bb-d24fa32b7274 497b7b64-63c0-4594-89f1-cf9974f01cd4 db8cd597-51a2-47c6-9f98-bbf2bd6c823d 63b24aaf-a3e7-4ab4-8ee9-7d6769eebdab 9838d2f7-d619-4482-b3e8-5538a6a4cdf1 602b5191-7878-43e6-ab48-1c02816b0c51 73746bcf-e771-4d5b-bfac-6a391a4ef2ef f7a14941-3b9a-4293-8c9b-65c02b9a3a2d e20ed8f0-e895-4b40-887b-31eca1ca534b 08a47632-c0cc-45d4-901a-e7114581d984 707696a7-561e-48eb-ae26-faf4a1049686 26fe18cf-aa97-456d-acaf-ef2548542e91 584c2645-a7b2-4341-9255-770a94bbb732 cb039d3b-665e-4635-b8e2-e12be9bb3bb7 0cf80564-3a0b-40be-8978-05ed2f3b5d82 e80dadd7-6635-4d22-95f9-51fdb62ccbcb 9bf32d89-d03c-42ab-9d81-fe100bc0887b 3adf29ad-2c9d-4c88-bd23-254d5caf8c7e 0eae7e1b-4d2d-4cae-9c38-3760bade0fbd 62c5f733-d770-4fa0-9e32-3b952da88f5a 230c5f47-cbc6-4b22-90fb-c6fdcdb784cb 057fb62b-9a0f-4c20-9412-4fa6e064c76b 4fa3dbe8-2fb4-48de-96a8-5f2d597800c8 034362de-2df5-4d7c-b75a-8859ec62f955 c74b62cd-544f-4a1a-8f24-8e136d19bab2 d48f03c1-660a-4eb9-a15d-a02fd753b80b 93290c2d-c2ee-4d76-8751-9529f97f91e7 86629659-ac29-4b93-b576-83523d4a5816 433aaf5c-f821-4dc2-b4f4-847fadcdcf4f df3af233-4428-4eeb-828a-cb8732c8c8f4 17384914-b77c-459e-8d17-073f53a48801 6fec6650-155a-450c-9295-1f9f66a98925 ea9484b9-3b75-4873-a510-f58fd133246e 09f52c59-1bf8-44a9-b41d-b2893bffc8e6 f7cb1ab8-dc1d-4723-940d-71a80f26ed72 be2b48f8-0ce0-4050-a4b0-40b67a89753f 24ad130e-6fdf-47b4-b285-2467f61ed8a2 26a7f47d-eac8-452f-9e86-dbe6e7d32400 75227301-09c2-48ef-98df-a6f3481aa4d1 526aa2e5-c6bf-4e54-bf74-325343994a81 4b232eb6-a3d0-42d6-be72-50346fa53e0b f79ea902-3a35-47e5-a557-2ca95a8f128b bb91c51c-4e91-48f7-b6d8-3f077d79ac72 9bc84070-a13b-4a88-8cdd-62badb34a5e0 7d36cbd1-7110-4091-81fc-d442a6edc70e 4d384daa-e181-4731-93c1-a65e637a6ee7 e2ef62f9-4d89-4734-b904-d7359991f351 d3e8eeb6-db56-4e1d-b323-457a50273c03 fca9f813-0d89-43ea-b5f6-01267fd7f2f2 0a9a6ca8-54dc-476d-8293-ed7774500416 bc4c970e-9b28-4f44-8ca6-42d6cc212ece b12de261-1067-47d8-9167-77599edc55d0 c7e3df21-1335-4f2d-93cd-4b71b09eb0e6 32bc0689-8a0a-4a1f-a0a7-7bda3b40e652 ca4c2309-b891-4b72-a468-daee8002b227 59f0ede7-0484-41fc-90eb-d86d4c268bf9 2e3e1505-5bdf-4bf4-8d6e-825135ddb294 d404eee2-2c56-4eeb-8c91-babb52539778 fb03bda4-14b7-4406-8f26-fc787d7fe817 eaa03847-8ccd-44c4-bcf8-c8e12ce25766 e136b3dc-b4b1-4017-a177-b4867bd593aa c0d16664-683a-4615-bc4b-85eb9f58fdb2 05feeac2-a566-4c53-bff7-f82b0d847fab c5537c78-ef96-4815-a806-79ee8cd519e0 5f7021f0-5b4d-4ebf-8863-b5f60633fe97 df6fe722-caec-43ed-afbe-68081a72f92f 5c7fc805-72cf-4ad1-9cd0-3e06d039dcca 12ba2dcf-dab1-4d49-ad9a-f96a53f18201 74e8d197-1986-45f6-a4cb-3e77a836eafa e426bbeb-fdbd-46ed-8cc7-af6a7b4fd948 f56d5ec2-5afa-4fd4-bc53-c35145bb9242 48763d7a-b6de-4735-8739-ad5194a98266 0a8ff6b8-20c7-4a16-8fd6-04e05775e3c1 384d292c-456f-4ee9-a826-d4a74b8d0d4a 0f536278-3030-4119-b299-2c5160c05ea7 98ae8056-0fa8-4ef1-b69f-eac26e9f6238 8881be24-a625-4dcc-9981-38e6834780fc 125bfc28-afce-4674-bb9f-851e6b7d65c8 db68c82c-3533-4a43-af7f-71f0d7ad7697 ff105fec-a800-4385-8128-06c92b20c959 d9bb940d-aac1-441a-a30f-b3eccfdc96fc a70c511d-ba55-4379-94c9-ecdfd8204ce7 5a548200-57ae-46c2-8d63-2c7ab0bf4fe4 b34000e2-be5f-4e9e-932b-498313f029a6 46cf37aa-4988-49d9-9fd8-d3156b54c2ef 641aad43-f048-41bb-b897-45eff2ac3990 01032910-612f-49e9-9928-f0bfe957b53a 78ee0f0f-f8d5-48b4-a003-5dfa210398c3 51d5797f-52b8-4828-9447-238cdfc087d6 ef2d7139-b0d9-42ff-b495-f8f0b142506f 35dc12f8-125b-4302-9103-4a33898da6b2 8aa98367-9c27-4ddf-94d2-9b1437c14160 267331a9-35da-4cb4-9a4e-d7bac2619f8a ec27d72f-4d8e-45c8-9be3-201fb7b423f2 b4fa323b-0483-482b-9d48-ccff1101ecd7 cd4d53a5-1f4d-456f-8fff-47b6c35f4ddc 5508a9ad-0dc8-44b0-94de-fdb69f7d6ccb 6205c92b-aee1-4363-9496-05c1de24639e 434767f8-f9b4-4b22-90d6-ee93286876b9 dd5515e3-1d87-4808-ae87-4f26c8956582 a9fb8efb-f7e3-496e-859d-bf9055ee9967 39a1dbd2-feb5-4819-a4f3-c48b7ec4bf23 8c788897-669c-4436-9494-065fee9f5fcc 0fe4b138-ecd5-43e6-9d4b-9ea34e36badb 6c38e1db-cd39-41c4-851a-e705961792d5 9e326cc5-2a20-4a9c-a30f-71f777e17462 724502fa-bcea-4718-8a1e-27227c2d9838 e9d38634-5010-4d9a-b8a0-b6f9cfb0e458 abad317b-e329-4853-846e-be66163c0c0d 682f6c66-8d07-4e59-9f88-b05767aefc61 c8370c30-9136-44a4-93db-433130c3ac34 f7ffc39e-efe8-41bf-8cb7-6c55d04fd57d 37400012-5c92-4ddf-b45d-a81f6a41b63d 99d8721a-4ab0-46d2-a05a-1a8cb87178d5 22554ffe-a0e2-449e-bdd5-28af5c4825a8 c8e13273-51c5-47a5-9565-0a68946cc9bc d7dbd282-68d5-4208-9f52-920c72941e6a cbc0b263-0618-42eb-8c7f-c5ac090ee586 461e405a-e15c-443b-8a96-b47998389153 eaa8d803-1e0c-456f-863f-c00e4fc9e6ea 29c7b0f4-94e5-455d-9d2c-6757eb656fec 380fc4ca-f1a2-44bc-8ac0-b4dd3b203d94 d55181c3-a7e2-4233-8f03-3456635e6ba4 cc3f789f-b6e6-4262-817d-1cea2428e597 e54fab4e-a3c5-400c-94f0-8d824ec7d613 69815f89-556e-45a7-8422-9de678056d17 ebe636ff-e89f-41f1-8558-f9bdd3eac1a8 650f3b7d-98bf-45c5-9d94-c33899d1b45f d08e6edf-c9e9-424d-9376-997d71ad331a e8fc3354-c9fa-4c37-91f3-f6074ea129d9 7913954d-cf4d-41c1-aea1-6c4601915593 e47d962b-218d-4420-975a-e80578f51d43 5ff91c26-14d4-4f5e-9a60-56bce69527e4 812ec24a-fbcb-454d-8f37-a23eefa23d0c d426bfb2-0407-48bd-b789-fbc9ef008ced cfc53181-20ae-45ae-97d9-d6c14695a46b 907f7b46-58ce-49f8-a7cd-b30a24f85869 d199928f-3aed-40fd-89fc-bd296e83ef63 21903134-204e-4f62-9f9a-e5d7b542a5d3 0cdefe5b-aaf6-4f28-b843-128a0dac62d5 d5e20ccc-3dde-4b92-a19b-2163ebebbd21 61adaa84-1101-4c0f-b0a0-f7f8ae5899de 9f102606-cf31-4ea6-8347-11a4f5f0ac2f 4e0e5fa1-3e41-44b7-881b-55c1f0a3f77c 516eed10-2b55-42ba-b018-c1fff750da75 a6a1603b-fef5-42e1-bc8b-c48465540ca8 3ff65c8a-91e5-4a1e-90bb-082a6d4591a0 8cdc6c13-2a92-4bae-9b71-e6613288d2ea b5e01e14-8cf5-4958-9cab-1ab8936b83dc 03dc2560-96a5-4597-8268-0c867300ae3b 00ae6357-b4b2-40ee-8b3d-5f23b5e07d5d 493a63cf-aa2f-4a8f-b439-a409d601177d 382359c4-d8a0-45c3-a34b-fc2c1f73e670 421e669a-ea1a-4956-91a9-61194fe4dbad e75d170c-ecf8-40f0-b453-8c89913e4455 c91284f6-ab15-42c1-8af6-5aa591a81328 389c0467-9736-40e8-baf4-c2e71f4a5178 37dc9021-18e3-4241-8af1-2f9b11752650 14b1c26a-2007-4569-972b-77dc2e16931f 2510b790-834d-4ae8-a530-59a2fc4470a6 94665dbc-78d9-4094-bedf-f2eaa8884f33 2cf70069-c10c-44bd-b67e-436119c37b2f 94f2b165-3651-4bd7-839c-1f9cfc5dcb26 18ef4d06-149b-48dd-9223-a9fbdd1bcd89 654cf798-7235-45ad-a668-e79bef1b025f 55c6fabe-d8af-4e2c-bd41-b78c1ffeb011 4923328a-538d-4b86-bb14-443d41a727c2 db7754ed-3cb1-4a09-8e00-64c4406bb437 807bf0f5-4a12-4ca5-a5a9-2bec80e1c777 e88aeed5-eb75-427d-97e4-eab35c1e5fc1 96373515-2107-4857-bb0a-01edfc63ebc2 e25f9a39-f6c9-4b3b-93b4-87e5d733bf51 72e98746-9478-4fe9-9837-9c1847e4b0c9 f3e1a472-d7b5-4065-ba89-99e4b09d2043 c8657ef7-cb04-43f2-9a33-97a1fa33be22 6d015c23-10ba-4b36-bea4-89433362b9ea 202dab61-1df5-4920-94e8-18cedc614b9f 64593999-be0b-4db1-ade3-a0bcfbfe714d 10fd206f-bcca-4c96-be6f-cab479fa2981 860b5ff3-0e8a-4768-8afc-91a88071163c 6661eced-6388-4ae5-a4a8-c73c8815e7b1 8a9626ca-a340-4854-a38e-a490c1526b9f f284a77d-1a6e-4238-8dee-21af32a2914e e5b4f572-0195-42c0-8d1f-ba961a9b72b3 7fcc44a0-228c-4984-9511-eede66c7e2af 32419086-54d7-440f-8210-da760b9f5174 e5e5b16a-3f8e-4d79-8a5c-761bef1856e1 1ed4c599-ea10-4b25-b41f-1ba95f7a671f b1df3456-b13a-4120-91c2-e51dcf71ee85 b4b41e1e-79eb-423f-929d-f551584d01d8 f9ec09a1-fb93-4f61-bfa2-7c86532f9066 2fc2dc7b-b227-4e2d-af0b-654f9ca98513 c2af9317-096e-469d-8a0c-664f68a4b656 a35af2b6-f6bb-49b4-b6aa-1e6d530f7cbc c084c178-4d89-434d-9269-3414ecdfc3dd ff759a2a-2d0b-4f2b-832a-2bdeb7c38cdd b86e7fad-6955-4891-a486-03860ec16199 4dd38796-3647-4407-8741-52c0c26b518f f2df6af7-d1b5-48e9-b397-ec260df4f05d 304af0ac-c018-4fc8-805f-53c056ab922b a8f3192f-03a4-4f5e-9ab7-523778c52060 16bff9d3-757c-43d9-bc0d-bbdd50b4263e d730a084-5e86-4ae7-9b78-575cad0529fd f4418e01-7849-4d53-b978-1681a0d5c781 24b464fd-a930-4afa-a1e4-f17772ba0f38 c731c619-8aa1-4b80-833d-56deafb03c55 136ab5c2-5783-478d-bbbb-9d40b1749fd8 ed23eff0-5f2b-4337-a2fa-06248e266f7d a9d3b4a9-013b-4fb0-ae1b-d1c625398870 f57fd8a9-b04e-4001-a003-409f7d11bb4c 4949b5f0-c7d7-4e93-8bd1-d8fc770e2127 32d3407d-4f37-4e37-9d38-3cae60250550 54754a6a-d87b-4d19-a108-753164e74479 30dce6e7-ceae-4ba8-9dd9-24e4550e53b0 c909cfc0-b78e-4071-8bde-0f8868356f8d 0d69a02a-4a19-4a4d-a8a6-255854898c10 9ac9d733-4e5e-4a61-84ec-16c3b1b13ec6 02fe612a-1f76-4f22-a3cd-3157cf775d22 a15cd91a-d228-4dc3-bb05-447850ad1426 741c1720-aeeb-4238-805d-d1da4964c38d 6c1fbd07-cfdd-4376-a4eb-3bd461ba9fe3 d97d6eda-754d-4fd1-b5da-8977cdde53dc a4804149-2f32-48a2-9327-a59e904cd962 687f26c5-6682-4ef0-9877-04b1fd8a7e7c 3eab6e67-2fda-47a9-8754-a12dabda1743 db216dcf-0063-4562-83c5-5650183b171b f822aa3c-83db-4803-828b-2de85b83b327 a59ec3bb-eed8-4c88-8318-5821901853da bd6b3ebb-5289-435c-bb31-3f68c10b83d1 99d505f2-9458-4f4d-9bf0-844a4e73eff6 6d5ea4f1-4f88-4566-92a2-3ede6190c9de 4f713d22-96da-4e5f-a2e1-41c6e905e264 6a7ec6db-a165-45c8-8753-dc2d4fa878c8 8ba89798-d744-4235-a9b7-86b464cb5959 b54af3c3-a105-46cd-a757-ecfb00179471 d4eb111a-cfb4-4a89-9def-47cd55a43f4f 982f0d85-fcab-406b-a8d0-9c6da955dddc 43dbb725-405f-4386-b16f-4ab3c4dd0b66 250936d1-dfb6-4c73-9a1d-2c3eafddc8ff 6db32ad7-26be-4ebd-9b75-25df09f458df 38ce556a-a9f8-4fe8-87a1-bf3f3500f5f8 9733d2ee-02dd-481a-a2c9-f96bfcfaaffb f9b184b7-ba14-4aa5-9f33-4bd761da3c7a 21004aa7-90a8-4404-9b66-096c16711343 33aa2721-2742-4b20-a054-47cc9ba1b2ab c6dc1d17-d79c-4ef9-9305-f1afe2faed05 7cf6414e-f636-4230-9831-a85421862e88 ea81f543-34e4-4ab9-b825-8d6a1bc50bd6 dfe9b782-fed1-4fe9-bb51-2b281ab55d3f 8fe8e1ff-da1b-4d4d-8447-f9ce1ffc630f bde5b1c2-1809-4ebc-b6a6-acca9b6e074e da47a94b-984d-487f-bb4e-59a59703806e d1981a63-b56c-4722-b49b-1dce6ea9c2c0 713dec46-a272-4b9b-8664-f96fa5a3e933 714dd040-840a-401a-a8d8-2e5392f8d036 2778edfc-6b58-4231-b03c-d491b5615d24 e0177960-6eb1-4310-842c-e6d34413bc4b c3f2c151-05ba-4449-bf24-d21bb2e0e306 6a0f5ae0-d7c0-4c61-b03e-5643d2c190b1 eaae9296-4f4f-4f25-bfca-323c0c9a61d9 32614750-71df-4af6-8590-034b7dc4d892 fa0a5a3e-92b5-4c22-8b38-05e7b6ed67b9 22500262-5c01-4b73-9420-4539e97d62ec e7044e51-448b-42ca-8bf6-f2e89a6e4866 8ae8c655-6007-4c44-82de-5cda7925c967 9fc661e2-efab-4d2a-95b2-e5208ebed591 fb48b2a4-4830-4df9-8eaf-791e083df807 6baf2e17-8cd6-479a-9bf3-3f83fd9a3474 b82b4134-4ceb-4379-81c5-7c26b9049815 d8d64ac1-5814-40ca-a3dc-fbceb1aad156 8981f783-8b09-4114-983b-87e27a4a7a8f 59e2dd92-110f-4d9b-968b-a010d3253ad2 e6b8684a-ab22-4d06-84ac-9c57f535777f 058463f1-85bb-498b-a74d-9623b26e4a38 5b60122e-8f81-4326-aaae-d24fee39b259 30ba7873-d0c2-4a6b-9a1c-db0ce126f66d 82aab256-2134-4b20-96a6-0689731033d4 c130d9ea-d7eb-4fa5-b9b1-b183b07535a9 b924d690-84d4-4b42-af03-953e8fa841c9 ec72bd73-7d22-4315-987f-01cc183908f1 be891ddd-717b-42cd-82ec-bfd1e3ae63b3 8b9b46c2-1ab1-4a06-95b4-930a879470a0 61af0de5-1fb4-4965-bd69-97e9f30bad9a c883ef7d-62e7-4cc6-be78-77cfd356f26c a42c691a-9434-49a9-9414-b1fd95450d88 aaa26af6-6361-4af1-acdb-5bbc0502a903 0724c6f2-1df5-48ce-a81d-e4a1d6ddaf43 e7d4ab9a-c746-4b9e-8015-736bc078817f 66d4fe7b-ec13-4c4f-a58f-c87662e5e139 f4c4da54-f9a4-4a9d-a512-0dc85f356378 5cbfcf9a-2215-477f-b959-b739f997180f 0a430a2b-9eb7-42d8-aa29-9cecadda9b35 471f1833-b8dc-4efd-bc00-fb009c851f7e ed4d685d-e10b-4390-9751-68a3865f036f b8660ffa-dd8c-4d8a-bca0-8e57cac67240 0d3f5dd4-9fbd-4a88-a921-6e28833f6708 24f8cc8b-6607-4eef-88fc-afb046182993 d39e4baf-b919-4c56-8b00-04f237e6d61e b0f1152f-d1ef-4b50-8329-38cfb91f6a21 ccc32227-613c-4d42-81ba-00eecc9aa976 5f7f32da-e6fb-433a-a810-5f172928dd94 b13ca104-08f4-4619-b88e-becf65afd05b 0733d794-0b08-4a86-b13f-4f4bba60602d 8ff6faf8-893d-4ecf-803c-f32942ee2525 5d0f87d9-081d-4d3b-a6d3-3509469c0f0f b1415aba-8041-479a-bd5b-95b3ea0714b2 73a53f18-b307-4ec3-800f-7fc14bb06d8a 6f5f782a-8456-4bc8-9a5a-68f26639aff2 d5507c8c-6fe5-4971-8133-6d7ab9d59f08 3fd2755e-78f4-4fcc-9e92-420f54d0ea93 2cae092a-3d23-40b2-8dc4-e1cff0efe710 a7833a06-4122-4d93-a6cc-1588decb9354 fd571d87-a8b6-490b-89d5-b4a11c19361f 65d9c8ac-4a0e-4cd5-8d85-bc2a916c8416 43455cf8-2e98-4128-9143-1a872170be02 52db1071-f141-4001-9313-31b550dfce83 f1bd9a5c-9f7f-46a8-90d1-c7f680cb11d9 b6e41050-2f62-4f99-b3ff-fbcf080436bf 0946533a-8c7d-4852-acea-2457b5c56486 be969aeb-80a2-4ece-b736-ca5d3ba16b22 7bfa48a9-2e13-40f5-89ba-991b6d2bb191 d301faa0-ff4e-445f-b809-21f2d9772dce f699dce8-7248-47a2-a615-6907fb718e2f a7edc5e2-5be3-43a9-8374-b83c0137e0aa 105bc5ec-84f9-412e-9ce7-a479ac101e41 2559503b-3e1a-4f02-b059-517b20d89928 ea6f17ca-6b9a-4a14-8bf4-1929c24ca190 eb6b308f-570a-41b7-99fa-36ff279323ca 6ae3e54a-e0c3-4206-a025-bf666eca855b 2137a7b5-8526-4631-b056-57208a41a84c 66b65853-47b3-4c99-b321-e7d9e8dd7186 25f7e71c-2e88-4ddc-bead-2adac4c1c56d 2ae87ca1-4727-4f28-a9d5-c4ecb05daa33 f07b7308-d9ea-4603-8bea-57302a9eeed5 891cfd22-ed3e-4404-8a25-2f15fca1bf3a 8aa7bf62-02a3-4488-9f60-20c518d38ea1 2df2bc89-9a27-4245-9994-6a9d688625d5 3f2c3bab-d468-4823-9572-810261d5da23 5d10e4ed-fcff-470a-adca-a45269c1330b 54f3ebc7-c0e5-46e2-b424-9554df02fac0 4de8006b-ac75-49f1-9950-2d200ba5ba24 7d809051-198c-4af3-806f-0b2d9bf6ad66 fb3ec70a-351b-4137-90fa-9cff37639286 dc35a25f-05ab-48c0-a5c3-e7379d7f393c e21430d3-946a-4fd0-bebb-9d56ff351a50 b65938d8-1644-4274-b95c-81346146b828 93fffece-c5da-4f31-a5ac-e29f6218bcdd cedfd189-6410-4f5d-aad5-14f6b387d738 c8934629-5af9-4ac7-a36b-9fa2fe5bcf0e 518cc3f8-a5a7-4e96-8e60-d7950ef15ad1 a6fff9b7-be41-4c30-9a6a-0d94cdf2fc83 9f67883a-24af-4f66-a0a1-c50409d4da50 3ead0ca3-7852-4198-b6ed-2ce7ec737ceb 15a3dfb4-f5f3-46db-95d3-828992a000f5 81e3516b-3cdf-4b7d-92c9-e7c6401dc102 b179b507-df61-45d7-b3f7-f20b7e79500d 95f5ac37-f159-4370-97f8-526402460fef a0dcd885-d748-40c4-adbb-96308bb0ef6b 3f3bc3a6-f228-4a0c-9157-f011938ed40a 483218c4-b054-480d-a65a-abca289c79d3 7d8a34a6-abe6-4cfe-a350-edf26af344cd 1b24dfee-1893-4259-b6ec-36fa497cdd86 b23903a9-5a21-438a-9cc4-e4a6858991eb 0e044c0e-ea9e-49f1-8f6d-d7bed851fba3 0a811ce1-5193-48cf-9ad2-5e5b6bb43e68 b218717d-7b04-4ab8-8ef7-92f23f177417 de24b386-d138-4144-af48-616966e19cd2 1cb8c2de-6666-4712-a119-010ae651e5f8 93e30bcb-fdac-468b-aed3-1528c6bfd766 f57b2c56-b007-41ea-bbf3-fee50adb9cc8 8f827828-b16c-4150-9950-b8bd3abe9442 56f06da9-412f-4669-8d51-78f4a141926b 0391b26d-2811-42fb-9b6f-08a73b3a4ec9 ea2b08e0-7514-4821-81e3-b981869857b0 9f05e4ee-12ca-4776-8543-b0c3c3abf5c8 56de6025-4075-4a34-8ce4-0f04023d051d b2015e0b-cd50-4efa-8e99-4ab7be00ed9f 1f3df584-ea84-46ab-bcaf-813262e6eb54 6dfadeee-4994-4b19-8276-a0a610680c4c 67cd1664-eb84-426d-95a9-b63e31c7e368 0b60a719-64b8-49e5-bb8a-813deab7b86c d3a8c16b-3d14-41b0-b39c-500723b88422 ccb1389c-262e-44f6-8383-db098f710472 a5306322-46cd-4ee8-ac9e-b1b2ea50152c fdeb5dc3-d707-4938-9b24-264a537b2b41 4cdf11e8-1262-41ef-999e-10b127dace5d 2979bd58-26c9-4935-8086-8b6292e01a53 3727e634-45b8-4cdf-a8b8-2e97eae6ff1a c14599a8-db85-40bc-b2a6-3a629cb037de d70f51f3-54cc-4f75-b6df-ba451b564e35 08993d50-dc4c-4ef8-98b6-ff87f4098289 b3aa61d8-79f2-4b68-8760-e6da9ffa4ca0 34fede0f-8dc0-4984-90d5-468fd358aca3 1f79c064-b956-47f0-95d1-28c3bae49e40 920a270f-fe6a-486c-88af-132864ae2dce 8cfc103e-74e9-4e94-b8de-b49a6ed2816d 33aaa640-3bb6-4291-b5a6-9d0bf501e978 f1d7cd78-d86f-4fb1-94bc-847ed4661b3c cf1e22bf-3b00-426a-9e83-7a0d3ae6ba4e 6a6176d4-583e-4849-b9a2-5399d8a92ca0 5cda2c97-9a89-471c-9160-1928d2fdfa1a 971b97f1-83e1-4687-8ef7-fe3c9d4ff07a b511f82c-3704-431f-bf8d-9b6bf4008373 fef65204-8908-46b9-a79c-f11b2114e02b fed04a0e-5426-4ee7-b823-5d2f9bfb6732 eb3a7958-509e-4fb3-a90a-3e89150a12ff 747d4f15-353f-4648-a21f-cbfffff73c90 286f173c-7407-4e9a-9d4a-9b64bda4126c 01ab548e-47e8-4b21-b5d7-0848a1a9193c 19cb60c9-3d2a-4abc-b487-2d07c8a7b403 d07afbd1-bb14-48c4-b10a-d7ad42f7b90e a33d5c7a-26b5-486d-b1fa-3c519fb2409c a4d7485b-079f-46de-ab75-2c408d77f8c9 230baa44-9017-4efe-8970-b888530eae27 51837025-846d-4936-906f-4fc50a9ac8fe a64b662c-a427-4e59-b5b8-ec8376b6fb2a e1e74956-7e8a-43b0-ad7c-9b75296b7dee 2e722d3c-7be2-427f-ae00-c4f2e51df113 66641b0e-a070-4ea1-b582-369ce5e4ec31 a0ccc18b-cc74-417a-9eed-b9b4af3e883b c8bcbc81-4dc7-4a82-97e4-d380c8bcc494 2c967c50-8837-48b2-9f29-fd8dcec9545c f09f3954-b649-48f3-81a1-7ab89c5dc653 7ea48e27-2de8-4cf8-81b5-bed7e26bfbea 98cf0374-dc61-4c08-939a-8154f6404886 32a2190a-7b3d-400d-ab85-3c1913b037dd 795a99e4-ef64-47e3-80d9-7dc4082114c1 23dcab0d-f909-42f6-b73a-2f7adfd40497 92aaf132-973e-4164-8db1-4f86fbf2db8e 45d45e39-fe3d-4a19-a6b7-edce5f8f074f 512b6a89-75ab-41a1-9a3d-7fc3590a708d cd46803f-3625-4b24-aaad-f2ca526b1c77 abd114e7-7f4f-42c4-b391-963b21a79c65 47191292-d7f0-4f13-8d21-58dd04ec17a3 6bb1cc74-7ad6-4939-8697-583f17fc3239 f9b8864e-a645-4fc8-add4-e0e076411d0d d673720c-816d-4ff4-8390-39dab227bc17 d05f2153-43bd-4469-8751-b4a030a3c06e f17af253-2f08-4d59-ba12-bc9a44cb2476 223fc091-0738-4505-af94-dcdfb7c58a97 97d309e5-809d-4fa4-901f-f1151bd9299f f5fc2de9-1b21-40e3-ba48-d3cda4c62282 9c659e48-02e8-49f0-b876-5049ea115bee 0f44d5be-16de-4e0f-a2a8-c9658a7edd69 9be7ca83-1aba-4649-a0b6-d371a580c995 228edc7e-0554-4fc9-b73b-3950d837a38d ada65620-d443-4000-8b65-e02e485c21c0 e878cb99-e57f-4d87-8eff-045e2dda526b ae0cce09-1d5f-4af9-808a-985c7fbea872 2ced919d-fd73-47df-a438-d2088bbed645 c0b5fdbc-60d5-48a0-982c-f1ab2113fa0e 49f86443-93a9-416e-bd94-857963020a5a dd871b38-6492-44bf-bee9-ab827b23c7fa fd696366-7aed-41ed-8386-9c1fee3b3aa5 fa045439-b7ef-4b70-9b82-0d3a56fc4609 062c2730-20b7-4243-b04b-31ae4044a266 e575f024-9b26-4b0c-a13d-df52b3487bbd 5ab77209-c829-4bac-a7a3-36d21930db87 9c44ea8e-e7d7-4a3d-a8e4-69cc142616a3 af23222f-8aa8-4368-b8d7-5c90c7320f14 75a10517-df81-4ce1-a663-9b8723f51638 2fc39f30-d7ca-4991-8b63-5f5496fa390e 17165dea-85f7-4443-9450-b143045ac1a8 485b5cec-b30a-438b-a927-15ec6beba9f4 2375d76b-af23-4b28-870d-7b320a6edee1 4a72965d-9bba-4fd7-b64a-3129015ab272 f110b4bb-8eea-4f85-8f2e-26d07224d022 00382acb-0d47-4a60-a5ab-156124bf40a8 806557c4-c640-4e04-9d9c-facaf09e1661 a2021756-4dfc-44fd-bfd3-ede8809d3e8e b852cb2d-a53e-4a85-8ab4-d420d272bc55 91996e96-3a6c-412d-95f0-0fcef065567d 522a9b8c-cbbf-4ded-b809-a11d64b8a5f3 ba06b06b-9fdc-46f1-8581-0b819687db08 da1e0d74-0bdb-42d1-8624-148bff911da3 5b923bd6-7962-4502-aa3c-2452035268f2 caca7c2b-f678-4599-b6dc-912b79b6fcab 1cdfdc8f-4920-4237-897c-69627a7164d0 6fcb8bd2-6571-439f-aea9-80ad4942626b 0a8b8cc7-e75d-43c4-a4ee-c6151f36b011 87357adf-ea8b-495c-bde4-405ffbb75bd0 35c169ee-d4da-4f48-9f6c-130ebf39bb3c 609c75b9-c3a2-47eb-8513-9afd528e1395 4351f04a-acd3-462f-a855-5e4347597a5f 3ea63289-48b0-4c71-9693-e54f67a878a7 088ee068-692a-4daf-b32b-1895c27bb2a7 9f97c146-eaea-4262-9769-a2bf139f703a 89d2d1fa-fd12-439e-b633-3c1a88ecae27 ecb5e12f-183f-448f-b5da-a1dfbdc9632e 88aba9e1-b86c-453b-9fd9-2bbd5a58aa81 df04b917-6fd9-499e-8b10-7fec92804325 b26e416b-c753-455d-b9f0-ccd9025352ed ba10a0d6-6029-4a5a-8d69-7b3e4b3902ad 2048b787-90f4-48e3-b57f-185b6b515eaa 6e6a2f72-4d73-458a-9668-1d5efa6295a7 801f4234-6a93-4082-8365-5387c2eeeb2d 17adbb12-a3bb-479b-b13d-a4ca25bf6321 b6ba43e9-b02a-4a9f-b70a-9e915bfcde4a 9a59e47a-66d6-477c-8985-50b01785bfbb fc8f3a30-e5eb-46dd-9bd6-538457e9b5dc 41adc3fb-0a6a-400c-b316-ce64a2f03452 55c71a7c-6cd1-4789-9ba2-5250f5ddf8f6 266c7535-9766-4bef-b981-23ae56acba39 324b4c36-fc0e-4d23-bd1a-925a9f257685 e1e48d1b-f8ad-470d-9c0d-4475ec0d6de9 8768615f-3c48-45ca-97b8-36d59492fdac 2add7271-d71e-4b34-94f3-dc4c61a4475b a3d480c4-01f3-48a8-90c6-761c2885efdc 4d12cc73-e429-4bdb-ac8c-ee44fd32cd6a 429afded-0110-4a64-8007-7b2073489546 ba27eef6-d73f-4e1f-b746-df44c81e61fa 84ea7f13-f86a-45fd-8673-c149beb2a903 85f2e689-76da-4910-baab-bbc5c86859ff b40e4f37-09e4-459b-9a58-eba87b8bf958 4cfa6840-4546-4296-8d7b-d4f8621cc03e 069efdf9-7acc-473f-bc60-73fb5ca2b38f 5b4824f8-269e-4e23-8dd6-b9a30c77df87 b47cff8e-7cf2-4494-9e71-6c91b3351380 733f356d-82ee-47d3-a7be-8a978f940f4c 7a6c94a1-7cf8-4ced-b322-51230c77d80a dda0def1-de4f-4660-b5fe-f5ef2e9ffd62 78580520-2736-47f5-92ac-5d6b596a140d d137034d-4092-4a34-9893-8f5aec4d3193 b725ece8-0d95-42ee-8350-54eafbc76548 2b03071f-cb62-4d95-adca-b1c8a8d523b7 2782b1ae-50eb-45d3-bf9f-5572cf286f0f 42f2c212-78c4-4ea2-ae21-f3ef7f056059 ad74ceb6-f2f6-440d-b311-661571211813 79616ae8-af98-48a1-b927-a9fe9bfc48ff 4255e8ae-982c-41f5-b83b-64ee7b327b2c f9b64962-7d02-430d-855c-04803228ef76 5bc2c287-2dc4-44ba-ab4e-13f87c96413d 598fb24f-984e-4607-8510-5ed2bebeb40b cb09fe76-bab2-4c03-9eb8-443c0bd9926d 40c01348-ebe7-4734-beb0-b42b56927ed8 69073ac2-1983-4010-93ff-9cf40f02f85a adfaf258-92c7-438f-850f-d739b3a7e4b5 66723fd3-adb5-41df-a3be-1a95ffe8b482 fd1948e8-ab72-4ebb-bc89-5837586e2bc6 6ff57445-bc89-471b-9a55-8a250f76683a 6152372c-134d-40b7-b3a7-eaa43960b244 83cc64e7-d173-4f32-aa3f-29f30db6e154 3b1f65ce-9beb-4952-ac30-edc240c09bd4 b8dffb91-f595-46e2-b813-65656ae81bb4 ba22b88c-0b79-4327-ae04-c8c685feca80 4028dfa4-6c48-4fa2-971c-295bf2e6f6c9 aadd1fbc-f803-4abc-b1dd-bff883483559 717b50f7-f53c-4ca3-98d0-ec96a123cc39 5483a07e-01c6-4fe5-b66f-9dff77bfa4df 9a3867f5-d4a2-41bd-ba97-cfd7a81ae06f bb3fce7a-85e7-48c3-8d1e-85d4af5e1407 0fabcbe0-a7a7-4419-bc6f-cb183681750d c5a3d1c4-0079-4c73-a9b6-58a0901062df b9fe8be2-6176-4935-ab41-f88f5aede94c fa793a95-146a-4151-82ac-92bb52ae39a5 4ba865fb-7589-4f25-a3ac-07f74969ac1c b7a11a8c-7d64-4358-8f2b-65e8a874ad09 5d22d891-2dd3-4df0-a120-0a7208e7d2f9 0cfc5aac-dbcf-4a3b-8dfb-34bb83473b23 b76536c1-2023-4eac-a193-305bbfbbb8dc 4b866501-a245-499f-8988-13c3fc5378c1 d776cc56-40ca-4247-b8d8-e077ad5c30ac 5019ed9d-f980-4888-baab-3f44e01b4106 d9117d2a-e473-469b-ac75-1553254ec13d 48159d1d-f4ca-46c2-b0a1-d620cb3ce75a d2c1ce14-2a60-4cd2-92f5-0e3712e82611 c0ba586c-0b93-485d-8034-15cf9c4e1969 4861e4c4-6760-4c85-bfda-5190be28d3df ce415268-9b6b-4076-abf7-d637f0a7f31a db83576e-af15-41ca-9590-724e2e24bf4f e918b02c-7064-4aa9-882d-512d3eb7894c 8bd1845c-51f3-4b3b-b265-758dcb4a12e6 e8fe8e1c-bb2f-4d16-92a8-f301d18aebf5 93a64501-e3f2-4339-afad-90f53b628a9b 501f93fb-8232-4742-8ba4-d3fc02d28238 aedba3ee-9201-4dd3-9f48-ab20300380f5 a3e576ca-0e52-4798-98d1-60ddcca66376 1466c0a3-4c06-4752-8480-6d319174829b 714eea83-f9ad-4895-a700-e8b9e3cdaa78 81f07e68-9b18-4840-9f47-10f6d9d5a102 ac02efce-0de5-41e7-9fd2-352dc7417541 899f8539-1f21-4a25-ba06-e0a042e1e1e4 62e96054-4361-4162-b5e1-17bd37976b3f 7bceab57-5db3-47ca-9d3d-8dfb3ef2bce7 aaa7f235-f28a-4aa9-af47-10d3702f7e6e 254a33b0-9fe3-45d7-877a-ba6572f7976a 6e0e6877-98e3-4955-9834-687ce502bf4a e0ec4dd2-a9c9-4d11-8db7-3befdf483aa1 1f447e29-a49b-4089-ab42-32d00fc8c67e 3143786d-cf99-4486-a05a-2e5ef9f367a3 ed1246a6-27c0-4caf-b4a4-2aea7eea45ea f350762e-9b14-4aa7-a2ef-f16e2160e3d5 9ce5d068-2a81-4ef8-a142-a88a8ce20248 8a12b676-ff90-4260-a46a-6032b4fd95a9 49faa561-47cd-4bcb-9e85-fd874c2f28e1 12c9c58a-95ad-4a4e-84c7-5afc823f1af8 8a0dd7cc-9e90-4c7c-9a37-20ad78a7c160 93e5a13d-3ca2-4f1e-afd5-dbde3500adf7 0ad14d6f-6027-40c4-9467-e0962fa599bf 66b0e35b-985c-4507-9a8e-55c75baaa551 0b41957a-e57e-4c56-b83b-e1c4b290e078 9c02403e-93ca-4459-8a5b-9489481017db 7e5c9015-3db9-4151-892e-68b1a64649b2 6336cdd7-42bc-4067-831e-172206d668e9 1656172a-bf8a-4db8-a8c4-03fae3af3128 27c37153-1abe-4189-b421-7af47b5298ee d4e976ee-53b1-497b-b8ab-cf9056988c26 eac5254c-d316-4389-9590-d20ad051d4a7 95092da6-8ae3-4e13-9a02-c210e2abf902 0b41c9dd-806a-4a98-9f0b-64a05781cd7d f7e300c8-8353-4525-94ba-c1b20f9d026b 64a93996-b196-4d1a-964a-4edf825d8326 c11282d2-7c7e-4de6-9b44-90d5f63865ee 91912adf-4599-486b-ae1d-1a6a91da761b a87afe01-89b5-4292-8240-c3943d0a2709 eb40f94d-e9b8-45e9-a21b-861e70b5120a 8160e70f-c5dd-44ad-84ac-9c34941e9d10 e01b047c-a4c8-4c08-906c-fb9478b81fca fe3d548e-991b-4e67-907c-ac84b70fa929 01853a3c-f167-42b7-9a82-741414ab0d8b 49e67a53-807e-4fb6-aed3-fd6c56d6b5f5 157216c2-7eab-4ea0-8b15-f76ab1c30d72 61fac8b5-1617-465b-bb68-81a17cbd4f46 31496b2f-aac6-4e97-9e58-7decb2b4e102 cc27b2eb-9365-4823-a9fe-f935ba43ea8f 21e2309b-1321-4346-b4df-39412cb5c401 1f2cff5e-75c9-4b1c-8b28-76eb2ecfe897 81f72790-4d33-4163-a5a1-67dbedb48cb6 d964af08-7800-44b0-88d4-f0da2adc9c38 6a2bb6ef-17c0-4ce8-b611-14ddc3446e17 7153e94a-cd1d-409d-ab24-2420da7f2dc5 1a14692a-0b56-40b8-91f8-6d33cd490141 59b808e8-a600-4ef8-85b6-dfbf2fad28a9 929d88b4-67e4-4561-a57f-5ca4d4f4e315 0d56c2ed-0b1e-4b43-ad8d-882a8659c52a 80bfe050-3c96-4a7e-8431-70027cca892a a614c42f-066f-4bf6-8a9c-dccc9df4b213 e6a2fc05-9275-4560-93e0-2065f6aabec9 5a255835-2ae8-4e09-8359-537b0c321283 c8fd8007-5c32-4073-94a7-c72b34d6530d 5a88cc8c-0e83-4a0c-86d4-27e785beb956 84fccce2-8bc4-43a0-8191-a51d53ce02c9 d2801c2a-e431-434d-a1f6-942cd3d4a3f3 2948ccf7-81b6-4a3d-8896-cf13fc63d8c1 4475dbd3-d9fb-4762-aa43-c10529805afe 2cec1a6e-f47e-44d4-b7ff-6a2ad5f21302 79a35d21-bb23-4f47-9b10-8801b7305f05 798f41af-fd8f-4615-9fda-8ebedb1f0c13 f9487727-e1aa-4084-a29c-82b4e716f0dd d23c00b6-08dc-4323-a2aa-613b83b145be 5e7b4941-edf7-4539-9be1-3791441f1255 4af6f350-5e1a-4fdf-8b2a-4abf9c42d458 1670f564-414d-4469-aa74-28475f98bc44 387f04af-6347-4d24-83e4-206c18aeb32d 8830b833-2e4e-4432-8de6-acb1cfc2d8bc c64d85b3-0128-40c8-bc15-4bc99d7c9150 f75ae5cc-5a63-4e42-b9ec-120bafc1e83e 6ab01a1f-7e5d-4a9f-a339-e4a7d32ce155 7d468cca-0d18-4159-8286-dd548da4e149 831a0c28-c084-49cb-ad97-28ea70bbb653 e2a3e21f-b07d-4217-82c2-c1decd8085a9 3dfc5db3-6b42-4cda-aecb-9216cc788d43 b10a4a66-5d5d-4093-ad1f-447b4bbb848e c125da3f-2342-4c32-8f17-a890e683b547 1db42029-38b0-448a-b243-356ef7376ad3 aeef8fa4-c698-41f6-83ff-a9916bcf8f3a a94c5270-0ba6-4475-a88b-251c8b4551db 4ee510a1-0120-4930-bcea-a80ed3f9151e 0dc3f4ca-f3f2-4cbb-9f95-f19b3f01cd86 9ceb1b65-92bc-4069-a12d-69a14d69aaad a8738e5f-7049-4d8f-9a13-9fb992b746ac c0612ab6-5030-4491-8ef7-077b10b7cb93 3417c1d2-0ee3-432f-8c36-fa3b29c1d84e 35a55344-c3bd-488d-b792-26eee749a204 c586db98-a102-48bb-b600-3ca123b22d33 cbdaa40a-1b9c-4c90-9800-bb566ae44117 afe98973-3627-4f86-8235-aa193006aef0 5cc7bd4d-5d12-4081-a4b5-02393108a91b 28be5b7f-f763-4237-b7b8-875624677fb8 930cd27d-0af1-4d20-af8e-e404a6ce15d3 47726a07-d981-46c7-87aa-59d506fe474a 5af1c460-72c1-418b-86f4-99ae952fd71d cf0b37f8-b989-43f7-9b9c-c20e3b62aaca ec2ad652-bbb8-48fa-a688-093e9fc451ce 31fd15a5-53b2-44bc-9510-dbdba2d4953f 44b42afc-9dd0-4c0d-a398-745977701828 91c7939d-af64-4d52-b2f9-8dc94c3d96b4 b40dec85-3f87-44b7-8b74-ecbfd473fdbc e55e85f9-a196-447f-aae9-06320e11514e f2117fd8-3026-4d07-97a1-3795fd6200dd ce0fe7c6-7ab4-40b3-86d3-4abbbdaed067 cdc22297-6654-4b9c-81da-174955b0d1b0 d782935a-aa43-447b-8787-85a451f7b021 3b333193-5e61-405e-8705-bae2041268c4 f3f99611-52f4-436d-b5b2-e0d0e8c11653 460fe73b-1ebd-4cb5-9e16-308325bf5d39 dc80778a-a877-4c07-8f3d-e6769bdaf2b3 9589c69a-e674-4774-9f3e-1bb5f7fa5abf d1f13bd6-abae-4e10-a56b-b33c66746ce6 26cfb04c-4bce-4540-b38b-655d292166c0 fef6a0a0-ee42-47cc-a1c8-5400939d6f95 14663588-1e91-406f-8f1d-e1be2705c3dc 23764017-a3d9-438d-82d9-9e1d2467b8a8 b42e58b4-e974-4c2e-a197-5a05b9b3173c 0118bf51-c5b4-4c94-b9e6-dc19a4c0506f b0913363-e0d7-4b52-b118-f2f9242b50a6 082050f3-b5c7-433d-b09a-4fc3572e6ffd 28805d28-b35a-4825-8ba9-8399cf44823b 4738ff8e-2230-4af8-bbaa-32a208b31ac7 992e8ebc-52c2-4c14-b4b6-224871e54199 c6f65e03-5ab5-47d1-b23f-694e9d629138 5ee35131-169a-4755-8256-26d3eef39547 a1aa481e-c579-4df7-9b0a-c3f099b9271b de39b6e0-672e-43a0-a0ad-e24e2fe54130 1a2bc8a2-d909-4e96-8975-1453bc172a72 00b38ef1-d52b-44b5-8823-6be72dc783f8 64de7ace-b714-46f7-9342-59bd8930f703 b90dd843-5495-40df-9ad6-dd30b1076df0 07342ad5-482a-497b-818e-b807a15dffe4 f747e6b9-7b84-497d-bb17-8b28693c60f7 ffc57497-e977-4814-9242-028605e9506f 5e61e82c-8b29-4f95-abfe-5de4e5ede1c6 8614f000-579f-4efd-9bec-5fe6786fa625 bbfe9540-6274-4a65-8445-874ecb3013bf d605f007-378a-4e34-ac46-6d41051b5843 176b5a95-7655-419e-bf17-a9f0950b9167 c67f749b-ce0b-4cec-b13c-fa19dda446cf c9d33939-35c0-4804-80ae-c1ea716ce8f5 59fe8881-4aa7-40ec-9305-2cbd6be4f9ab 57580f27-4c2a-4245-8d19-c1f289431765 2a4269a4-89ff-40ea-8461-4609f271505e 730d011d-634a-474d-9834-61d106b19981 03c257fe-9b89-4254-8ca3-8f9d9eac9cdc 27e4f0b2-13b5-4214-a8ab-cc7c19cec0f8 d730c614-359c-4100-bd9c-63b8879646b2 61da6ef2-0242-4745-84ca-edee221f1524 766a4732-9929-4c3f-a08c-9c03a9bb6769 56bd8a2e-3f59-4b86-8b1b-096770fafe68 f86c15aa-1b06-4cf8-9d79-7f450c292d70 9f076f28-e91e-4106-bcdf-5a7131fb6e12 71eba529-97de-4a45-917c-3b984603d12e fe55c708-3609-487b-b048-1d4c05ef7941 f470430a-8c75-4fd1-8806-5c3a847ea77c 6e3956f8-8110-4b80-b02d-369a8b84c8cb 1f997eab-3e78-41b0-8622-84a2ef38d5fa 3b2c01d7-77a2-4c20-aa56-66c43a855245 36bbd730-e730-4fde-97fa-68efb7308996 a4d63c8c-b384-4161-ab34-5ad47744877d c3d735ac-1e4c-42ff-a7c0-f4a92ee27dc7 eee7bebd-d5df-46b2-b405-7da1b56622dc cdc90051-d834-4e55-9ff4-11f6d7715317 6a69e1f5-478e-40ac-936a-783e31a9bde5 27864110-97e9-49b9-8424-8d6a856c2e31 bdbea862-a2f3-4763-8c34-762f410bab44 f4fab7a4-3403-4ed7-b54b-3152a3435f2c 0ac20ef2-1cae-486e-9064-c24950027192 9dc305ff-4b5f-4456-9dbb-36d8d5f4d55a 118f621f-4504-46f8-8cea-35d05469fcce 9e5b4ec4-3135-4247-9a10-edcd438e54dd 7977ebd1-f371-4539-b7dd-807f94ae141f 65cdb639-fea6-48d6-943b-92f4b6eef111 82705730-fed6-4ddd-944b-a0b61a8ca523 b122c5ad-19ff-4f1b-8201-7dc2a170abb2 b09b7472-3f65-4712-a8f3-036d626c99a5 35af92e5-69cd-4599-b72d-8fa8778d14b2 88baa16f-d48c-421c-9f34-dd6a760e1b07 eef5352b-eaee-4688-85c2-9594890c668a 2c7a23ba-0e83-48cc-98b3-53fd8df5486a 0edbd159-df0f-4118-843c-33ab36b46ba7 d8d1892c-412a-42aa-8739-440fc0ff1a07 fb39354a-4829-4a26-99e4-a0d24d12afde 16d50234-3e34-45ca-b4ed-5617fdc521e6 0c0a8470-d504-4af8-9d0c-46773e5721f2 bc977933-7093-44b6-807e-b0994c14c5cb 8ad5bdb3-0966-45e0-8ba7-81f6c8f7ed5e deccba76-9bf2-4ae2-972a-058c948675e7 52f7e03f-43c5-4536-a288-06193b24ad15 087e46fe-fa1c-4e48-b17d-ed84aaf249c6 f69bc8ec-b29d-4c34-8986-07653eb76388 fa9a6a71-b4f7-44f2-8293-cf5fb15b16a4 56159339-5510-4170-86d7-924233b99768 740cfd92-e055-4c26-a60a-3adf63843015 bf68ad33-a00c-48b0-9ce8-d9c806c60f74 a7d888f5-2592-497d-a9c9-3b7820c1f063 56e0ee32-b59a-4b72-859e-3460833a25aa b184bf81-3423-4add-bf59-36d26f82d9e4 2fb45b64-866e-43a2-8fc6-54407fb62830 ffe6b4e1-b583-4527-97fa-75f9d403e305 764f81b9-aa51-4643-a2b1-d88fccf1fb1a e3ce1758-9513-439e-a02a-5b6e94bca2c6 75270602-a9b5-4ea1-a96e-9c2440d7af97 1e513c02-006c-43ad-9a77-d435b411ff40 5c68f7ab-d44f-47f6-ab33-81f30af69ec1 c0757e49-6b3c-43fd-adbc-98664115c884 14c41492-3ff5-43a8-b658-4a63e391e39c e6fb1dae-4bf0-4846-a5b3-6c16db64ef89 e0f12991-ce1c-402d-873a-346b36debd92 58ae8137-9708-4d02-9399-de6e33dbdd95 8d28d17a-bf73-4182-aeb3-652a6dd7629e 91b67935-002a-4a63-a026-53cb830d0dd4 dca3e186-a73c-4064-9ac5-47b04f6b99c8 340f00b9-1d33-4e0b-836a-c62e5a07a03c 65f18465-9b98-47a9-b285-b52345a613a7 9f6a77ae-a6e7-4eb9-8228-75893023ef47 e71ba9e6-521f-4de2-b29d-6a66f1250a87 f0e91b40-1620-4ad7-8cf4-e380ff2b77d7 b049f191-213d-4f55-9572-22262f66940c fd2245d2-e54d-4ee4-ba8b-c5978f465c31 be2926b9-5ec7-48a3-8b5e-531832c654f5 bd26ad64-4742-462a-8bdf-8f673cfa141d 81a421cb-749a-470c-9b1d-d3d55534aceb d6ab4e0f-8c68-4e7f-900f-e13d76897117 702c26a3-83f5-447d-a72b-a2b0520df8ca b8b87890-6b27-45a8-889d-ef8c6077c215 989fb75f-4996-4e0b-b741-261e380d57bf 8920829c-60b2-445c-bbe6-4de7f6b1b5a2 5462f2ab-4dcb-4fd3-8220-75fc5400d103 7803f9e7-475a-467d-af72-a6afc6a081c9 cd082ba9-85fe-41da-81d0-5c64c004d731 69b48361-2fd6-4bb7-a4d8-5d3b05d661f2 33228f76-b7b6-4c90-b8ba-32e7064a7a57 cb2c363f-a884-4047-94d8-105b715e02d1 39fc11ca-814e-493e-9025-18a2f31a932e f93d2737-beb3-4c71-b87a-604e3fe820b3 9d156787-1238-4ca1-821f-cca7fad61122 e0e0d790-7a54-4409-9290-90379d04bee2 336bed58-6e53-477b-a68e-6548ca48b41f 25eed0c2-b103-4f3f-8a37-6d640e5ede01 790209ea-d45f-41ce-94f8-76f5d1986fca 970b89c3-c91b-49c2-abe5-32990dd1a880 dae15b35-8fd7-450e-859b-9cf33125af9e 4ab560ef-5d98-4e6d-9e9b-db4b809c3794 632c4a97-5049-4a6c-9e2c-cf84212e1a5e c15a74a2-6ee3-47d1-ad73-8c173404719d 2a8f108a-a57e-4afd-a221-2814b7228e11 5e987771-e006-4a65-94b7-79853afd25c2 84b1b349-ae01-4394-bc70-87f09e5a05bc 19dc6673-63e1-44db-9ba7-7721541c4d19 17594f0c-8751-404e-bb49-64f93a301108 4b80cbf8-579e-4a6f-8f1e-3451a9d3f12e 5bf9bb9c-2e7f-4d59-9ca0-ac9c19db208b f48af2bb-3365-4a8f-bebe-5710895f542b 37c35957-7d71-40be-ac49-cb5b0608f116 8ec5aa77-d090-47a6-8999-8be7306df9d3 76e64ce5-de6d-44ce-8c77-f10c5789f76d ccdd23c5-2c52-40e5-9623-f527c70358b3 8fdedc26-da2f-441d-944b-bb8adfc47bcd e7ca0d96-b164-4c4a-8dcf-b4dc4970ef09 a6dfc3c4-92cc-466b-9826-dc0a22e60a8a 127ebb77-d2eb-423d-844e-57d49d9ff2fc 71c2d5cd-e869-4b3e-9720-a74b9187a98b d1e9c01f-677f-4c52-9d2e-ce5ded5d0a8a d85af760-f011-4393-b2ed-aca05dce456f f65566cf-adee-4f66-901e-974018a2e07f fd3537c1-4448-4c39-bea9-3adc2694591b 7f4ad36a-d74e-4fc9-90cd-41304c65c01e b8e61aef-ec0a-42b5-80a5-71f3a17f52a0 a58f1beb-ee01-4733-81a4-f7cdd14c35a4 254cc17c-f513-4b80-9633-bf0a8facc582 46c6387a-b447-4276-b52f-7deab21c068f 71f8e73d-a6f4-4eeb-89ae-3b6a26c4f4f0 01afd7d6-4e59-4831-bd73-1f54c91c3bd1 a38bb92e-b27f-44ad-8e42-4ab2dcca57ca a0796adc-a803-40ec-90dd-6f022f292018 9bc75bb6-8fa7-4b85-ae8b-6a3facb408cb d0ccc5f4-8965-4e54-ae2c-8242039d153b 647d3755-b4a7-4f8f-9bc4-1b94b6067436 c783868e-1250-40a1-ab6b-e6a8a21210da 2ff8e7d9-c7a9-4576-90ec-79a45b3c56a6 316da82d-5515-4d9f-860a-62e2de6c5972 13552d1f-48bf-4dc6-b78c-46cc3e69de0f ddc6b413-306a-4b0d-aa8e-6178407fc926 672cf276-8f98-4f8d-b296-cc6d32ae4d20 cb8f0a80-6cb4-4929-b629-fd2c8c6eae68 67509e23-d570-4eda-98d1-194a72a5a5bf 969c2a84-7da5-4d0c-a3c0-26b97ae1e9d4 7f13f114-75ef-4058-a939-1a2647acf8d8 10428322-8c53-4c4b-bbd0-6389774b3542 353201d4-75c4-46a0-a2cd-2cc5d5fafb75 4e66158a-d4e5-419c-b473-e21fabd41f30 3583606c-991f-4d8c-b198-cb8ad91ed746 afe7f428-bd77-4668-9fca-14ea453831bd af286c67-f89f-46b9-96e8-6870f1202254 066dedf6-2f09-4bf3-8b60-4a9f6c5f40bd a03d6a20-cea5-4541-993d-051bc195d618 3b4bce86-5d8c-4fa3-b13a-8322771d391a dc7f620a-5649-4c82-bebd-c866911baa32 2c1db13b-20b1-46ef-86e6-355cb1aba589 1abe9462-2951-441b-b775-46360aaf5a9e 4e01a8fc-b345-4bde-b429-0ea1bed1a950 621b60f5-fb13-4e06-a5e9-e41f47475080 5f20057c-1ae3-4083-9d97-a213c5090589 c7886871-8637-4fa9-881f-0f682b0a0321 0108e515-2c32-471b-b87c-81257cd35068 2a43a358-101d-4583-9783-7f5aa5117c56 5eb6edbc-f6c8-47e1-b3fd-69833e7b60db ddb1688f-a8c4-4148-ba3b-d55b93413fcc 78955c75-5d22-4fca-b457-052cd3f365a9 69bf053e-0a3f-4125-a9e4-7a77af44604f 8d55ec2b-852f-47c0-9dd9-f368a2864cd5 4bcf95d3-bc9a-4cf4-9355-a0a0e287feb8 3dd698ae-41c1-4f60-9277-0252a1c6f37b 2fab9d28-7d38-4737-91d8-162dbd8e4c3a eaba1ad4-5c65-40a7-99a9-44b142d1967b 78a9dfcd-2b78-4492-8756-0b6fdbbc3fb8 1363431e-b213-4323-9344-ce2e3cac080d efe50ed3-d9a8-4b75-9cc3-2b264e328910 b50044b5-eafa-47b6-a8c9-036d6f064c90 0dd4a64b-23cb-4851-a080-3c301f9fc349 2dc7079f-57f1-4971-b8f5-3e9d5a1dfe46 0c0f4c13-eb35-4d83-b21b-3d984598d66e a168773b-3b93-4fad-b985-a8b91af588be c760b3cc-c4d7-417d-afce-3e0b3ee1d307 bcc9133d-6691-4e61-b94d-2c33d914afd9 3f046c3b-1963-4fdd-86ef-35d06db01c49 be96fbe2-7eeb-4d6e-8c4a-886761c3b5f7 9c338158-ac16-4fad-a757-8dbcdf7a5cea eb504c95-ff7b-4185-85a3-169ecfe5953a e4102fc0-a71c-4178-8484-454c38ce04af 96322337-e611-413b-911f-2c1cee5e63f8 144e844e-adc0-4219-ba31-a6f20a10908b 7bdfa9f8-789a-440a-8221-11fdc720b7ec 74cb569d-660f-4df7-95f7-9be1d4dff86f 0e35920e-b61d-4785-9f5f-810957b1c436 cd7afb7c-8022-4c7e-89dc-beb3497409d2 75b41f70-bcb8-46c3-b1c2-20e07e15a7be 3fab69fc-f438-4bff-b4e6-2e4e3bc6262d d198bbd1-f163-41b5-82a2-b5d5ad62a18b 6f0ce6d9-819c-4dd6-801d-1a0bbeffc2fa 342d9e3f-cad6-4ba8-b07e-ad8779ccdaae 46873e43-f551-4f92-9931-381002a180ab 46dc8bac-edba-43a5-a105-53b78b19f9dd 5d14c7f5-ea65-4c82-bf5d-6b2a521cc775 f09a9248-1f20-4a04-94a7-743547c51ef3 effe976e-6995-45cd-82b6-8ca3f40b05b8 4030f227-484a-4f7a-8568-20e62e0b3d62 910790c1-814e-46cd-97ca-adb112f26253 6045d24e-68c5-49ea-9ad9-36e6ce63b9f1 d66e87ea-58f9-47a2-b709-36c964efa3aa bf67481e-f103-4722-841e-bef39d5f0f8f 0a322640-b8b6-4419-857d-1f7f834bfba5 4bead369-abf3-4443-8975-8d722e89f0f8 dabfb053-b497-4906-88b6-d6d5c4f97fcf 6cfef513-0d96-4b6c-922d-7e8352bddf67 ca5dd564-7068-4b83-8782-e2daa176d37f a2461509-6c16-404a-a7f9-dcf6e44c064b 48ab673b-652b-4daf-83cd-10d8398acd6a 6267f60d-3fdb-45cd-9089-79e03e715a12 0b63ec88-62e8-4075-8294-df1a494e60ee 6c28bbb2-dee6-462a-9b57-ebe04e99c860 089f1cf4-64d3-4927-9b1b-9af20b9c480c c3db0412-e119-42cc-9ef0-04024664cfcc 1ff00bee-2286-4f90-9b92-b90405d0ca4c ab7fa1ef-9f16-44e4-bd01-447756340a81 c009f966-ed73-4e24-a024-fb684e6bbd18 cd33b203-d050-4c9b-9457-bd7107e53c26 e8a7942a-46db-443e-bb9c-0613d6a1ae99 199ebb51-3f3c-41b5-8250-b4f24bc1b5ce 20dba0c3-9307-47e3-913d-c8c38500cf95 22a832bd-e683-4f4f-b630-eaadb740900c 51c6c85c-a398-479b-aa77-be08811b7126 f8b25ed1-26ca-4389-a6f6-03f10d41a3d6 c551fb80-3d65-42d2-9237-ad42984e350d fefea18f-32d9-4132-8faa-1aedf7150989 e0eb64ae-fab2-4068-a229-d60ab8cf30ee b0c4b4e2-aef3-4033-abb2-7c78c79fb35d 4bdd9125-21b4-441d-9b09-c97e5ccf3710 29302650-ecec-48ca-90f8-71d86d8b232b 781087a9-865e-464f-aa82-5ad310172a28 de91f3ca-a72a-4876-8c1a-1f08e511e951 b8b0e173-daef-4abd-bc68-7f5971cd96e0 35a79b2f-289f-4780-b495-a95c3d5a6946 7632c988-06e3-436a-89c9-2c9726f692a4 03f8db48-bc43-48e7-9fe9-c6f02e994c1c d31f1866-d818-4793-bfcf-4a3807d7e980 427b699b-9e58-4a90-b30c-808d78a6c69b 92c85e3c-8cb2-471c-9652-938465444c88 99bee72e-8788-41f5-ae00-fa84a0ce3d6b b96ab523-7b46-491f-98dd-67a253a033e8 b7b1412d-64d4-4c20-bc0e-66b3f70274c9 82e1f9ef-e118-4f6e-9d26-7d7611f50694 0fd326da-35ca-4e4d-a828-039f36b64581 343b83a1-79c7-4365-88c9-b08f2beb294e 38d167f5-ddf6-45b3-a0c0-a05146d49eea 09f522db-06cb-4eaf-a5db-b34abad7bace 6ab5ad37-5bbf-427d-8f6a-8fc4fbeedde9 eaff7544-4412-44b0-8d82-a9b5417945c6 df235d7b-870e-4f82-a817-b2adab4605c7 bd69e958-6746-4909-adf3-cae1fe5aaa5b c3a70ee7-0813-4e30-bdd3-33a57b612eca ac7f4aa4-ad61-4fba-a839-5b55376e6e97 a34ebca8-54b0-4f2d-b850-3cb4ba98462c 5c341f34-443d-4940-baa5-28f053f42a52 67be72c5-95ad-423a-b5d4-d94569db648f 5103678e-926a-4944-a34b-a865db7fe48f 7bb9c431-91ef-4f5f-9784-cf5c851ee218 4c63de58-8fa9-4e1d-8cdc-d2c92cbab38c e130e39a-19b7-40e1-8ba5-43464ac99aec 732f1d2e-0ab2-4a44-8518-044ae8ada07e baae7d28-324d-4e61-a87a-f580656ae1c5 4482984b-53f2-450b-92d5-da5c8afb41f3 85aeaf78-8109-4a98-a079-5572f97cce0f b4685976-0bf7-47f1-90b6-f241fa3c1c1f 591564ac-9433-4ddf-bb9d-8d41015be270 2a5abca1-8216-4569-83ef-3032f6ddf01f e6a9e645-fdbd-4ee1-966b-ab1063a69150 0260f9f8-c4b4-41fe-a901-b5bfe50e5237 b7da9ff6-5efb-440c-a696-a36003a5b303 953fc0b2-4e69-456e-bba3-28a3c026cf39 8b2c4337-172d-4874-9e48-35cf0cd93db0 c23378e8-473c-477e-b54c-ca95c4f85a87 2d81c9a6-9ff5-4805-b7de-8cf41b33fa8e 108fde77-615f-4dee-9cf2-4be47deccafa 8e34c402-79b2-411e-b9de-c652d60ee738 2b404238-d23b-4214-a561-4d55250eb091 f0dec296-b241-4178-97b2-5e54541565a2 6204d3dc-3466-43a7-8487-a0f12bb6f96b b56b8af8-630c-4e28-8578-0a72d2791a76 dd74c466-2369-4c27-9f92-d6edb6f1671c 6ffec8a9-c5c7-409c-bc57-6c5bedc1e161 060dd9b0-cd13-41b7-9e68-a09ced4b0366 860d02d6-5721-4448-ae95-f6d25513cb59 ae48f447-0b50-4431-af7e-4a62d2a19d14 e3f168b3-517f-48b0-bb90-bf5f595886b1 7e2dce98-8bd2-41aa-995a-64f08c8fb267 456dbee7-1e7c-475f-8eaf-0e1ae33d19ce 69f4a592-508a-4f50-936e-eced9d488f2e 077acd4d-9b3e-4a55-af30-138cc2a800c7 d97c382b-ab68-4ce8-a459-41ae68fc0e8f bc4695c5-2808-4086-b855-30a3f249ba9a 1ec3ed21-5780-48e5-a050-6271e7dde2ad 6d62f568-8915-4fa7-afaa-801989f5d79a b9ec2f72-9f2b-47da-80c6-b61c85eee1b4 fc5b6928-3894-4c3d-b619-10aceea6f82e f9a29588-14cc-473c-94bc-282b3cb05d93 62ca4335-ffde-4c14-9e8b-29b4b9dc516c 65cbcedf-c092-489c-a52c-05f9f617178f 9f36f70c-6edb-40b4-8bff-b1b70fa5b688 688f4231-2c14-4f05-b790-f8828c2c474c 3ebc6fc9-fdf4-4a0b-b870-8b36856b2ca1 5ad02c6c-9f7a-45c5-863e-41560d82f814 ffd9f0f7-ca26-4167-b25f-3e16bf43e23a c67fe046-e82c-4a48-8486-2874e6ae71c7 9fda6259-b00a-494d-a9bb-358d00e24072 e4c9c685-f430-4a51-9e3e-70315496c86d 82a531d0-9224-47a3-9290-ee8a14ea4913 035c4e00-094a-4852-b340-aa8a9983b424 7aaf1c03-feaf-49c2-aa07-11f5a67bed09 d091fab0-33ce-4bcb-ad76-cdd341395a61 36716930-76ac-4b1b-93ff-df04a0fa5155 a26eff1e-1636-49ef-a7a4-91b8e41a8563 28f00d1f-d572-4b09-ab03-0cd27029d389 4fe2adf4-6dab-438a-9f1d-6a95bbacfc35 22f92f25-8656-4a82-b2f1-805c6d540fc9 ab9d38b9-31d5-49bb-9ece-c35e5e804dae 4416abdd-759b-47c4-afc9-9ca0e260c3c6 42ff3762-e322-4cf1-b79e-2c931969ca26 d29c85e7-8b45-4914-991a-675fcef67fda 8ce8237b-f18a-497a-a71d-03345d10728b e810838b-f672-4022-a93e-48da854c6ef2 f31aea99-6bcd-4d8c-9883-2d0bb14b6cc4 9122ec88-8fb0-47b1-84b5-0d1ebe7f39fa db6e1d22-1996-4448-a155-1cda6fdf46a3 3ac98d62-5f55-4c6c-aa13-1a872e8c07b7 1443b1bd-5add-4d72-9695-5eb6786d9224 9a5be08a-f68a-4b75-ac12-7737c9503a3c f1460cb7-6411-4cec-bf19-e6e0cc620097 1b612148-d707-4652-9e0d-218473c9c6dd 4c9ae2de-b887-4d6c-a2f6-d0d544f33ff6 9f5fdca3-e415-4ea4-9a01-a8783310f2c9 4e65393b-4912-47cb-b9d0-5c010e67dac2 a1991d39-3446-49ca-a0d7-d37e5c1f07b0 24431983-23fc-402d-9a7c-476f3dab9e3f 11142d30-3cd8-4a94-8b6d-4723c6819c24 1b6b4954-fdf1-47af-8cde-b0bac702b45b 9037278a-99cc-4482-b242-d104139e3852 b0656b1b-c6e9-49bf-a92a-babd6c0de50a 4a8c7fe6-81bf-450f-8631-501938baf0ea 456940c6-173c-4572-aead-fcfe5bda0d6f 3375f851-218d-483f-80a2-cfb47f4970e1 2575b353-e9d1-4f02-9d6a-fef0ccfc6842 bceed0f6-704d-4e5b-becf-8fa004a7d373 19a91a0d-fded-4e6d-a882-754706f35775 4240a28d-9efa-4b3d-888f-2f7946019850 407737cf-00db-4204-8474-bed5faff2217 73c757b6-7a46-462a-8b31-bf442c520156 fad848c5-f446-48d6-b18e-abd25f218efc 49978572-e3d9-4cb1-8045-c98d0acbde6d ec7e213b-d7b1-4e07-a8d5-aac2bdabc9f6 f86d1660-028f-4dcf-87c4-bc9daddc1f8a c65c3f97-9463-4838-bbb8-7aa81070e8c1 2b352e60-8267-4901-97c2-c9c735a98af1 6326b518-c6e7-413b-b631-690aef874005 d0d3a623-0fd7-4e35-b09d-e8acd0dc03a4 aa229e49-7403-48b3-85a0-5ef8f3047f44 17015d9f-ec0c-4e19-ae71-e3e41b314e5b 99e91026-77c4-4d55-b5b3-bcdf7000942b 5c396c17-85c4-4a22-9848-943d85f6a77d 82475fdb-35a0-4fb6-ad81-6b70e4665626 f5fcb4ae-1a90-4526-b43a-5f0310af0be7 8bae05be-7d60-4a2a-a735-565eedbde3a2 81f6e656-24e8-4046-9d8f-769ea6997a0c 5a9049c6-e1d8-4066-b0b3-34d1878ade21 b24d9b4b-9302-42bb-8627-7c74bf377624 d643dcfa-6e32-4ebe-b007-b1befe646ca5 c5ec0bec-4efc-4a63-8d59-2e4d5d957107 40783053-a7b8-41ba-a1c2-36dab38a345d 9e96b32d-3ec1-47d8-b12e-fcf118e2ab17 3bbe7f36-bcc9-40be-8bf9-2cd35ad1b968 ddc81657-30ac-4b87-8ab1-dd12f97df1d0 db06de76-908e-4bf3-ae1f-49c8e0e5d016 cbfc6ead-dfbf-411e-9925-451c8bccbe9c 544af052-47b1-4fce-9e8f-8d208e0f179d e43e2615-cf7f-4a09-97df-d93aafa81c6b 28c189a5-41d0-44a7-9392-a0ecb5032289 27e1a974-1e29-492c-a1c7-71e155e0df79 4685949d-d769-44d2-8450-b6ad422beb9e 13330120-6fad-4224-aa40-b9b648586e34 8c6e8309-48e4-4c37-9919-b6ddf92ab8cf c0fb1c3b-fa69-4011-9782-a149675d9b57 89c3f390-a86d-4e6f-9135-31808137df75 bc34691b-350f-42c2-9986-fe02bd79f208 cd0ea33c-24d8-4a0b-af33-032d4a4792b6 dae320ff-4076-4e7c-8199-0d63e318e0ef 77dbaf20-df5d-4656-a205-2a4d90b7353f 209f35ab-f862-45a9-aaa7-88eb73edc06f a5851601-dfaa-4557-b682-e50b158add26 0799f177-fc00-45e7-b89c-67726503d0ad 26df2f64-1769-4962-9469-9e7aff55d2c1 be6d4acc-5a1f-4051-b886-538ccdffef33 30bab9df-9a4b-4246-b8e6-27d299413141 289f8f04-8e92-46b4-8d02-3a60a52821db 1619dfed-9d1d-4741-90ad-29309ff47b55 4da7c63f-656c-4e74-8acf-ecb7f075dbbc 455842db-f892-4887-85be-2dec0bfdfce3 615d4a3c-5013-47fb-9d49-cf59691418a9 2c928c66-580a-4273-a02f-148105ac3cff 5854ab5f-9d53-4702-9179-d888e79248d7 198c8310-5e49-4bd7-867b-f069eebcc9bb cd40d487-e959-4f38-91f4-3aa79f879ee3 a81f5ccd-493a-4f59-a6f1-7b8abb6891d7 c763909d-6177-477d-96c7-af55b75495c2 42c820f0-3edd-4d7a-a1cb-88826d1cc4a6 f00e5ac7-928a-46d0-8f08-9ca435507e64 04380971-aadc-4e5d-a295-b392a9b43d86 9e9c879a-8e18-42f9-82a1-91f37a894901 30a08aaa-a995-404b-b32b-8dea93c31898 82ede99f-a882-40c3-b66c-2c5e35ec560f d457592b-81c7-47b5-bc95-e290c20d8766 c0c6a870-479a-43e8-9cc2-e085c5d925de 0c3d5579-b9ef-4790-ae86-7cb8498c7825 2b3462de-cdd5-4ddd-99e8-8cc154fb17fc 4c80408e-7371-4ac1-aff5-e801b56ff029 0363663a-57a9-4136-a005-96f0c3179494 36201403-4f51-4021-9ac3-58cc62cf69d4 0e6a5354-5431-4001-8cf8-79653fbe2422 046cf7c0-fe2a-4508-a354-09a4200f9752 03b8a257-0f65-418c-ad70-ad2516d63205 63754fea-ceea-494e-b553-a61b4973eec2 1b11c0da-5648-49f8-8436-dd39b0edccd8 8664c31d-c0a9-44a8-af53-d896aead44b4 06accfd7-39ed-4894-87cd-e6e1ca55997c 277cf024-d76c-4c6f-b9a0-60fb87b28675 d8efc430-b731-4e28-9cc3-58c79e9f979a c53b9eb9-c17d-4020-89a2-33a0dbc1020a 852cc6ec-861a-4130-88c7-0af098aa6302 57084c4b-e927-4fff-bc6e-97ce3f8b0a2c 0137d102-cf93-4d6c-94f9-992b6c994df4 a006b12d-ef86-4d0c-80e4-55ec53eb00b9 ee071aba-165a-41d0-af67-451853352ba8 8dcabccf-ca88-4425-88ed-7eb004c88211 962ce1df-0a20-480a-9adf-be4c3692d87b 32659931-185b-49eb-be25-72b35dcb9da3 06288fb7-e914-4cd0-9b23-e99db398fb3b 1af2b033-c83b-4a28-a3bc-5de8eff32297 d9940ce1-5259-43bd-94b4-2dfa600262c1 49a611da-0e2f-4760-b196-7cd52461b948 58e4a0a6-f9fd-431e-bd4b-f14f43edb1b1 b8996c71-7690-4714-8b88-e714a1f0d30c 1906462c-9475-42a6-9e1a-4bed59fc2250 07f2dc8e-78b6-43e0-82f4-908f7082470c fc3a63b0-51b6-45c7-a151-eee7e76e5fa7 d325262d-34b4-416c-af1b-fbd292ffd5f2 fbe3d8e1-945c-4952-af65-da7bfdaa9429 2c95d3e4-1efb-4c27-9827-43febccb730a 5db5b411-de04-44c7-b29f-9acbd05d7de0 233637cf-3435-4566-994c-2c3fe8b8c362 613f215d-0549-41b6-b88c-4a9b51196528 e1b18ce7-ac6e-418a-a55c-441eec9edbf2 ed2c75c0-6be1-45ab-a417-7f0b57713014 d1393354-9821-4b0b-999d-3500461b29f2 3d2611df-8699-4b79-bc04-d36c0f395abe 9f33e015-de58-4cdc-b660-336e526e9bba aa1a06d2-a3bb-47f2-8647-3b83060287ec 936f982e-d2ab-4b10-b9b0-c95e2fdcbf59 733da6bd-e5da-4814-8fbc-912a9c8e2a03 26eeaa2d-d54e-4f5d-9eb1-48362b443703 ae6d0f08-5e9f-4b7e-97d2-5e67686a7307 b0d8d73b-f90e-4fe1-9546-f0f3f44dee74 82a72e4a-845b-45ab-b9b2-53d0a342af89 df05d72c-9acc-4d00-8251-d51e800f40cd b0b564a4-23a2-4135-a63d-29efcad23825 525dad6e-d520-434b-93c4-28c62c8a52a1 54a89bb2-e0c9-49fa-b60b-5f39ccb0125e 072107f1-4e17-49fd-9bf3-867b5e07adb0 6f8515f0-81c9-4037-a06a-abd60dea53e7 9cf9e1ae-0b75-4485-9a53-2a5c30ee7123 754af39c-2f9b-42d4-94c7-100be3312730 c0e6a0c1-8ba4-4e51-97ed-88d1b5a2c779 2093ac72-f9f6-4224-9f46-98cc2bb11350 5d7586c1-8e57-4615-947f-7509e339cfac 37113ab7-a2b8-4938-8be9-676addf2d4aa 3936934c-819e-4d80-8505-05065952aca8 75039b7e-59cf-46f6-801d-cf641e8191bb 0cd0ec01-c851-4cad-8e3d-e1ba1ac890a3 99fb2aba-2167-41c2-afeb-50ef29145db8 87dd90a5-9bf1-4016-8eae-00dd02eac81a 37b62b58-0446-4676-ad96-bd7d04cad6eb e0a1ff93-6d2a-4ba9-90e9-7c556275e79e 33779d3f-16df-4235-8e55-7eacc6842476 cb65f77f-75e6-49c0-9fb7-4c02f2558fb5 450f09de-60c9-4030-af7e-8d711b047138 a068a29e-3de4-4f10-9d72-677c73a8fb78 7af0fb99-f88c-4cb9-bb7f-91d9d4730a9a 0c5250a2-90a6-4670-9de9-f7b78e4cb3b9 1aa69947-2bab-4841-aed1-ac1e0b2d5fcd e09809a4-3295-416d-bec1-a85f0fedfbe1 59a19fa8-c416-4126-be6c-faa441fee6e0 2966161c-ca96-45e3-b55b-53d143f477d0 784402e8-06d4-4642-843c-4f4597af92ab 475bb976-208b-4798-8f83-6228f18309bb 9a87ab87-b3b5-4bf6-8a70-2563998ec4f7 4dbaca97-7b42-4b52-8533-1b201054348e d507e261-1df6-4e5a-8a69-cf78edbe5e27 64f94e38-c2b9-42bb-81d1-6a990b49f283 4868ecd8-be97-4af5-a88d-22e350012da0 17130b74-851f-4179-a81f-dca4cea97f22 0a7003cf-39f2-4ffc-92c8-4714405f545d ab43e2cb-4183-4862-a164-ecc9ae37dcfc 09d41553-f553-40f0-b5c6-3a75c7dc31a2 34615208-79ef-40f5-99e4-333fdc256261 992fb7c8-e92f-4f1d-89d4-7f4b0772a7fa 7247b252-72b9-41ba-8d65-a1283b950313 4e95d6f3-5fdd-4cd9-86a7-bb8585a4aa8d 510a1caf-d6db-4408-bcb5-fa7f6726d6f7 ec681e45-dc71-4417-beb6-e5c684e1b2a9 138d3682-ed00-46be-8399-dfc3ef3472ca 65b94c2d-10d7-4fcb-b995-6dece0d57ff7 03fdd077-6a30-41b2-8292-53b473f0859a f46b9e94-95e7-44b4-ae68-26f39f771e71 1e910b6d-f267-413a-96ff-efa1dc9fd9c8 ef2f6aff-c58b-45ab-8937-3470bb6048b8 41735d4d-69f6-483e-8c21-26808a4d8ef6 0f892833-9baa-49c9-9b28-93423d74de01 8cba614e-f963-4a76-b0b2-48beff83ff49 6c146b77-fa46-471d-aa27-54de6a03715d 624b2acd-b491-4cc7-bc07-97b674f074ec 88bbffa7-0c81-410a-b404-9d714398651d 0db36c65-6a08-4e12-9866-d3238d254b49 04a42c81-2d94-4196-891d-2523c3aaf316 3613ae56-7334-4d9e-bfca-f922fc518987 eacb07db-23dc-41d0-9dfa-ad137154179d cd441489-e5d4-4120-8988-9bf9fa31cf60 fe6d0798-7e21-40f0-bed9-70e3a4254f14 f349b310-d365-4a6d-bbbd-37b7b5c09295 a9719cc0-ffef-47c0-8ae4-13a95295d42d 31cb0d76-b22a-41e2-9786-98bcc8b4af83 a87aaa3a-16b2-443b-b5e9-82e8c8a4cd55 110cc5f7-4998-42ba-894b-bdaedf4ed7bb 17c7cfb5-6a5e-4808-aff8-2aca6e3786d6 f42d5194-e199-4333-a5f7-f5faf2f61955 050efea3-e2a8-423b-adfa-0bb1ee0ae059 0e096a2f-5a0c-4c00-b88f-ebce8097fcbe a102cb96-cccc-4ac4-8262-6c69d50936cc 71eaf25c-8331-4c29-bc2f-4ac17ccc4c1f 2a859024-0c3d-4ca0-a10b-082aba75fc6c d45135ba-3e92-4288-855f-eeb35ff8ce7f e1e9bd72-956a-4510-af43-98c05120ebab acedcbb6-0c39-4b9a-b333-350b2c309435 b395ec92-06d8-4511-ba17-ca2983ae523b 72d31122-0f8a-4242-be01-6948844df2b5 61205533-b232-4e4a-bbb7-560d73a467df 1cb62c13-dccc-4e84-9b27-932d2201dc2c b3aa952c-45de-4377-9cc4-9b52507f7aac f2757f24-daeb-4771-9c08-4b03ce56a941 08b065ab-d1a1-4f90-a141-48cae74110bb 8db079cf-f3da-4af2-87db-b9ab73309a86 745e196d-96a7-4a89-a57a-7c1063ffb974 11342c54-31a9-4af3-a9b9-2bff72715bf2 e2afdd25-0dfa-413b-a7d9-ce180d2258b2 9fcd5deb-a6d8-43fb-aa71-244ad0fa16a1 24559270-1b66-44b7-9afa-72cecdf824da 9069caf2-4e8c-42e7-bb35-e7a1e97cf82b 8c5d5930-77d2-45e8-99f9-810dc03dd4c6 21a29a0d-e2c1-4845-862b-5567270c2576 d0f0f604-0850-497d-9ba9-425012a3b3b3 92186950-0903-4296-b771-a6c3830ef6f8 abd063cf-bc3b-43cb-9f84-4954274e287f 4f9aa07f-6fc9-40f4-8100-35a8f58f9cc6 d1afaedf-72bd-4e2f-9853-84a59a6d6046 d2ad3ca9-7165-480f-bdec-bf572872234c ba51c901-8c99-4c29-adce-c721a5e3156a 00dde34e-2ee7-45f0-9bd8-2d7998eecaa8 acae7e6d-2cab-4b9c-a3e0-448838f1164d 72e816dd-64dd-45eb-96be-61cf04e5aebc 80346295-1a2f-4356-8739-d7e37de1b915 110fb340-e790-4ec7-b21b-0e306ad1b31c d2158a95-9348-4559-9e2b-7f593332c3f1 ed91584e-e96b-48e3-b7e0-b7d867929c7a fb519f98-b6af-440a-8ed2-99cb17095a15 1135a58e-2eee-45da-b864-4d0bcc9de0aa 3517162f-a553-4d8b-9a14-f05aefb2dc5c d5aff42f-3e99-4803-b689-a54e7e78430d b1b3d4b8-8110-47a9-a381-1e7cbacb67e2 9448c380-c2c4-48ce-b340-ca80dc7f04e3 c10a22b9-52af-403a-bf07-a38ef0d7a193 70d133a4-2b52-4165-b2a0-acf6166e5b1d 69248a82-27da-4e79-ab84-22d6580dc9e6 8cdadcfd-0e6b-4989-85d1-029db1299c43 448c0297-01ea-4c2f-8b6b-066ca19156d0 d301c2d1-5d60-487f-95d4-9b61a945430f 3b67c30f-d5cb-406d-88d7-b8f71d283a95 8a4b69b3-df87-464a-a340-f0209856a3b1 42d4f8b2-3e27-4178-8acb-656ff914527a 648949d5-fecf-4635-85bc-dd309677e3c2 94249018-3d99-4d4f-ba04-5fec453410d7 4d016386-2c41-4c40-b98c-ecce27756714 9df9d76c-f441-4ecc-b9a7-805704b6d2f6 f3927b03-d5db-4fca-ad52-cf31dc628a44 e8261892-56f3-439a-bcf8-42960a66fbae 1dd164c6-5aef-40d8-9ef4-d17d37755a2c 3d74867f-0411-4ce1-97da-550f3a0dc583 158a9b67-35fb-4fe4-b9d0-d5d23a86d3f9 55b251ba-168f-46dc-8953-f4c1a90d169a 60def65c-82a2-4b57-9c3e-8a1d75fb93e5 fc15513a-b33d-416d-831f-a24e31a67015 ade40210-bb2d-4594-b14c-d622c5d115a9 74fafbbb-c00e-4918-98f6-4f8e04576221 fd5d0b2e-f7a7-4e55-98e1-24128172e5a4 9e9ed4f7-705f-49db-b6de-53f62dc3d59b a1430227-6f96-4db5-95eb-54c602889f30 1c4dac7e-baad-4a27-b5b5-debf303db7a7 442bf8d3-5229-4b62-85be-0b478e142e87 f2af567c-dc54-423c-916f-51dcc2ba8624 2f040cce-2999-4b99-a755-61a21b303aa1 39e1f72d-1051-4809-a626-77e422fbeab2 62151243-9aed-42c3-96a4-d0614b50f6b8 48143227-64a0-4c26-a528-d90df810da61 aa86d2f7-3a2a-480d-884d-31c139f19a12 db47f7fd-aed3-4e6a-8f18-169f5a6cba69 3cfaf886-dec4-4180-83cd-b49f12a28be8 0122fcf9-c4db-4e0f-a07d-4ee78257867d 11ec38e6-e31b-4a29-b460-1f838ccaa047 79185455-8373-43df-bff7-2951742201db 7c24f509-597b-45ea-9ffc-48367afd9a95 59505b92-e799-4ecb-b2fb-38d24c1f5953 e5f5a750-168b-415a-bd2d-2cb30786026f 6918e7ea-ebde-47e3-96e2-445a378863a2 91cc632c-d60b-4a13-ac22-361c24fb9612 f6210c4a-68ab-4d14-b49d-acf08892cb88 c90ddc13-9465-4466-ad68-332cfb5cfb2a fd2ded42-9d9c-4672-91f0-abaa92da388f d0a349f3-01f2-4807-8391-a8d2510da073 0129496e-1a75-4169-97ef-d2e0f997d786 36987963-152d-475b-81b3-2680f57a3668 9c317ebd-9d71-43cf-beb7-a5dc5669fd19 9d7ad290-8533-4789-b40b-caa531fa609d e60dd8b8-d856-4212-88e9-2ab4cef3ef4c 76185877-6321-4773-a42f-47347ba094d2 4f2cc780-7a3c-4b10-aaa3-0b551fae424d 229baab0-0f83-4519-99a0-c0a651e71bb8 f3b05545-1948-4f66-863b-28246b2b0694 10d13f5c-c074-4df3-ae92-701928c0368b cac8cfe4-cdb9-46c0-90d3-4119b979b172 cd06df9d-79fa-4e01-813d-620d90d459e1 f269cb70-c092-4aa7-9e3c-848f6d106fda 123a48f7-d273-4a95-89a6-0120082a15e6 bd22fc27-5658-4912-bd2b-9333de57c507 831e8cfd-0876-490a-b222-4c0a13bb49b5 46ac658e-486d-4833-a71b-efabd4bd53dd aad98a49-ed12-4101-9396-36c81417f220 07329730-3d88-4c51-951c-c5dec219c7d9 376275c7-ee28-43ea-8b4a-92f9d1b5234a c310c386-cf4b-4a79-8d0b-468c9d11aa45 1548c851-b18b-4ae3-a736-52cb8c679443 75d9f5c5-86cb-4701-8bf7-429d07fb2c5a 77cfeb84-ac04-41cd-b135-134d189da46b 363b435f-2dc2-4893-a749-2a8800523d89 8d70aa24-5685-42b3-8f82-46f2a1ddfc41 46e9bf26-7642-44e4-be4f-992cbe888d64 386558db-1749-47fd-a56a-9615b269de59 49a7557c-9759-456f-9051-0cdf755634a5 a041c3a9-511c-4e0b-b09b-7b083249cd01 213de020-0bfa-4e8d-800f-b0e02d03f635 2964d458-6fd0-4cd5-ac4e-1c9112af8abf 1affeca3-bb50-4930-bf32-23f77b0c202c 13b255ac-f83d-41ab-a8d7-1ceb4e4d0398 33fc82dd-98a0-4f5f-88e4-4587101abdfe bff29e3c-7d2f-4c79-a263-707c1ebd6151 c560d0e8-902d-416e-92d2-59919090837b 4297f8fd-074c-415d-874e-bd26f71ccbe7 853e37ee-b998-4936-b22a-9b6ff4972a87 f5083c4e-21d6-44f5-8138-59ed372abc26 25fe91ee-ebd5-46ff-be13-90328f62e3b7 db7ccbb4-5196-48d6-a70a-f959109a4af9 adeb22ba-94be-4a89-9f5b-d78fe0a0f237 7fb6cba9-73f8-4421-8b68-dee7ae4bf079 55abc2ad-0bc1-40b8-9725-3bdba338a4e0 88817742-2677-410f-acef-46783b2b96e6 75329953-a9e0-4f78-81bb-c573c3836d31 efb6ba24-e9e2-4152-82f4-0f1699b2d8b8 6d13a711-4abc-44a6-86db-89fee61cc4fd f674819d-5424-4fa0-b8da-9ac5492e0793 6f34ce7d-4c06-4836-91d4-3b2934423f68 77fce2cf-eb6e-432f-a4f5-c298d94ec5b3 b858fe15-a4b3-4edd-9d47-eeaa2a4c8f9b c9f1ebda-1e0c-49e8-856b-4af64b182fa9 54fe38c7-19d5-4ed2-847b-b5c19aa60d57 295132cd-63b5-43d6-a029-f738d9378bcb 2a2c88ca-5e01-44f2-8f0a-dec412bd1ceb 56bc54e7-38ef-4e80-a0e7-9c3fb47acba7 32c2f2b7-88b7-4669-9ae3-2ed73c87de05 5ff5f000-b4fe-4170-90b8-01f3561ac99e 6ab4fe19-37f4-4713-b237-12bfb4250fc0 cb042b29-0bb2-4ed9-a075-eea32300c37c 00947742-1c1c-41c5-aa09-92ac6a899c80 ba42213e-296c-486c-91ed-567199add373 c6995d82-31c6-4a9a-9bc8-1f5fe8f45515 7705bdf7-cbae-48eb-96c4-95f96430f121 7d20ba31-add6-4136-8550-b44a63079a40 c6319749-ce2c-4cc7-ba0e-748b6f003039 de3a541f-e08c-48fd-a0f0-ac3c8e4dfc73 2e4548b6-3320-4667-b533-baa66178b722 1dbdac16-1dfe-4bd0-99e1-6858de43ec83 1423a41f-609c-47eb-821d-a3dea2a9b554 761ed2f3-05af-4c16-b3f7-73d33df6227b 9ac704d4-6477-40c3-a1e8-a6da7d607054 66cac18c-c032-4fc0-ad77-a3b0c0864fef 60cbcde2-3d5b-4bbb-9fc4-58f20e83624e 94175b04-34e0-46db-8e68-1a213664b60d f3c1dd12-3f7b-4480-b12e-0abb25a8b969 8d8e7953-35eb-41e8-bf4a-dbf1921f2719 541b0edb-556a-4118-879c-a1f029504ff2 1f36d854-2e5f-47b0-a6ef-ed449c00bab2 66315c9d-588d-4009-845f-923e17942d20 c05c738c-4b4b-4826-a1f4-bee90938bf10 c4c1d911-47fa-4a8d-b780-1789ade2bfab a11f749b-6e81-4a5b-8c2d-ebdadbb02e47 9cdc8712-61ec-4665-a8c0-71ea52343f9e 432be3c5-fb59-4421-9a58-ad942501d419 ef35aa67-2aa1-47dc-af9c-d3c3e6009312 f3711856-18ce-4263-8118-3c12b2e58b2d e2d27f52-5468-4ff4-9c3e-3391b768b4b1 151e112b-ee38-425d-9632-7106370f1018 0d055298-035d-4a9c-b1a4-808f0b94ca47 6e6e2cf7-0a1c-4bbd-b229-4e793620a28c 7403b03e-66a0-4a52-95ab-4b066462dc40 fd9eb08f-7f43-4e92-bd92-672dd3e9d357 7661bd58-895e-4167-a172-fb15f1ef4fd6 4a94f666-1e57-423e-948c-0de8c2bde256 da46c136-d184-4d30-9c6e-cf8c97534f3c 2221faf7-2e86-4d73-a41c-c0b51c0b30f9 f768ca58-dc0a-4452-9e36-9336124e114b c20c7c64-fbf0-4569-9efb-b19b5c37a723 4107cd05-146e-4fee-867d-387c81e897e6 c15f3b77-6586-47b1-bd41-82fdb315a5a2 f324c507-bb96-46fe-be30-5cbf6b845570 2d9e44ee-237a-4186-acb5-a53567ba1ce5 6fed4b4f-9732-42e6-be46-097452f414e8 d7ba774c-6497-481b-8461-e8e68ebba84c e685e9c0-4cfb-4cfa-aba8-d605239a8cc4 c4ebd389-5931-4f92-a700-080cf1a74826 0e4d58b5-07af-4276-9c94-597579c59fb0 d8b423a2-3d2a-4342-85dd-5b7d0167fc0a c282ed71-42bb-4396-b21a-152ab58c9ab0 43a228ce-6d3c-4a32-a45b-164437ba150b a3947deb-df27-4588-b35d-537cb2896fd8 fa90c6ca-2d38-4252-ac36-476847e3c92d ea3674d8-7774-4729-a89b-21da708a40fd 2e4a3867-9647-4344-90d0-31c3495309fa 4ab0760b-bc85-4893-93a3-02387aee6bbc 0e6d25d2-edaa-4bb3-90cf-600c2899949e 4f1e1961-4825-4df6-b217-64e9eda7beb0 79e01813-ba6b-4d74-86d8-26495acc5aba d73cec32-ae15-4d6b-8ab6-10ea95190da4 5002fdc9-48e9-4bd4-940c-b0bc3dd5d3e9 8baa683a-7bc0-4d6d-8513-aef9ad4a86cd 7744f35a-801f-4b2d-aba2-7418e3761749 e80fa23c-8a75-42da-b8c1-16a9cd8b8951 4e3941cb-6666-4011-98a0-df5201b77709 6d190711-7d17-434d-893b-69e38882d1ba b9ffcd65-98f6-46f6-a831-a9f064752212 0d64a823-ae06-49ae-ad16-9906fd9184ae 94158994-78a3-4300-9f70-2e0368ee4feb b57e4e27-2e14-4601-ba29-9d85084fc908 35479232-dfa6-4533-9605-12363dfc4de2 00dab50d-95d6-4220-947e-31975c0d8404 5b88a785-7b74-4241-befd-90d7ac278dd7 9f5b2fb0-cbeb-43cc-8a17-56c5c1bbeafb c7eb369f-2f4c-4a2c-b853-1b1817aa1011 ec24f42d-f090-48c7-950f-0f6a16714d09 4aade078-54b8-4bba-9add-6e74c4a89803 706da40e-0c72-4ae7-b15f-70e995c257b2 85f41918-e029-4e3a-ab40-1649642ef021 ad11252d-3a98-42bc-b38e-b5f0e476f363 aa0c182d-1534-4610-ab8a-096d73407116 f65bf281-156d-48b7-87ca-51b92e3e2f3b a40b799f-82ae-48fa-8403-ba7511448668 be595f13-d7ec-4e85-a194-6659a74e2736 192d07a0-60b8-4bcb-bd08-33a645637b95 72e757dc-c0d6-41bf-ac43-9d05edc70933 7926ced6-c799-4710-b937-1e7afc6418b9 13cc8838-d793-4d50-b321-b9c5fa298eab ddd4dab6-bfd3-4d24-880b-7cc75bf31238 30eb70c3-59eb-4ea3-83d0-05b1ec842642 eb0ad8f5-ac47-47cf-b6c0-d7c85f806fe8 7c8ef81c-9e46-432b-9e7e-f27b7a2f42ad 543369e2-cb41-46d5-99a7-89d0699a080e 4769b0ac-33d7-43e9-b7e5-9234324f90e9 2acc5a50-bb96-4579-b33e-ca0b6beeaab3 8e9b83b4-e2ad-480c-8801-8193b4f495d4 e9c85603-7796-4d68-9cca-cf9fae71daaf fb2f478e-9f58-43c5-9d77-de248ca2ddb0 6e12e941-02fc-459b-bfd2-df7b227a2854 eb243421-1155-4d4d-b21d-d6f97afe119e ad6d8ffd-e345-476d-be38-1681e005a3a6 3a7b27fd-fded-4f96-a7e7-4810513d5fab e9c47035-6dda-4239-aebf-42fb5d69b942 6536155d-f7ca-462d-9e79-72cdb8517125 ebf964f2-d941-483c-8a6c-7d79d86dacc0 5b29f3e2-caeb-4ac1-b005-9acdb570a474 f20404a5-68bc-4463-9d93-df1634a5db53 da3c5e03-3766-420f-a10b-1369191a83d7 76d183c8-ad4d-4f2d-b0ce-76355b1bffc9 9fa9b590-3a64-4f87-8716-0517a0d6cc93 6139f1d1-c858-4494-835e-1887524a1cec 826a1a46-e3bf-440d-a3d5-b60d2a9242e0 6ccf6056-92e0-4612-8839-ee4c04b1f8fe 3a3ade1d-7ca8-4771-ac13-08fefdda0393 38c36c21-da21-4e38-b98b-35d3fd12ff8d 26e306c9-d833-4eea-b625-36184c1e880c 995bf449-7186-41c0-8867-b2e7579541f9 e1fb3c76-a333-42a1-887d-c5602c5fb399 e9bd8855-de78-4532-bf0e-ce94b4420cd2 8070da4b-46f9-4b51-842d-1f5bcbe0cffd 1f2274d5-98b4-4b3b-961e-7f7b5a1c71f7 8a589cb3-687f-4a0d-b4e5-a5f02612502b 5fe33edc-a7f6-428e-981c-386f64161c52 6076d2dd-6084-4240-b569-a85879563701 678af534-53b9-417c-8b71-62a930503404 642ac0ad-8991-4e3c-a894-8fd85ecbc3df fc0cccbd-aac0-4e9f-ad15-8f36b4da5f31 74c02936-ad3d-4be8-a8f3-d4348f65ad70 34e2ef7e-d197-43bd-aac2-424d8104c718 5c3a3260-748b-431b-875c-f619e033b049 0367b749-760e-469c-97e8-0222bc97f242 4fb39be4-57d8-41d8-9994-db4c22064400 fda8755a-6cfb-4f1c-822d-b1017cdef7c0 c0800055-3b29-48d7-836f-59be21111afa 1ab9862b-7ed3-48ed-ade1-b394e74033bf 0b015e4d-7733-4261-aadb-5d41cd630edb c293c10f-4943-459f-8753-3144fb39a0ba 3315e42b-7a1d-492b-b3ba-ef21f5a3129f 257b924d-65c1-45b2-bbe0-ae7a896476b4 c821f6c3-b766-41d6-940f-78d72bca1667 d1115523-7bd7-4b77-a9b5-084ba9b94b39 9d501a89-56ef-44c6-8762-15a88afdafb3 84bd73fc-0311-4684-8412-37e980b21490 1053de87-e5b9-4bc4-8b07-2d3fb5ce9399 f3146a2a-a717-4ffc-9823-3452b353cee3 ba043a2d-ae7a-4e27-b8b5-8e5d8af7730b d1908fe7-5fb2-46a6-bf39-b5cf000bb426 4ea170ed-262f-4fd6-b3bc-23867ec6057f d62550d5-cd05-43f4-ba1f-9f32efc014bd b6b5e08e-3497-485b-aa5b-abc61f95a707 75339d8c-281b-469a-b334-012cf4a56467 83acf5d9-8375-45bb-905c-337221beb72b 6411ac49-e453-4515-9763-7e0672fe81d8 1bfe3bed-544f-49b4-878b-2092d52590fe 1e44e106-9280-464e-a552-a9208bdf903c e86788b8-6829-46a3-9d3c-f6a50b420e4a f614451f-e8e6-4d41-be3f-4455c1ec9ca2 dd914ef3-9114-41a6-b429-f6e1f85dd1b1 919a4dd0-652e-418f-a9f4-3caa97d60cc1 d1f8417b-106a-44e6-a982-fd9d40e22042 365a1eb5-2c36-43b5-82e9-066b604d043c fbcd908e-7864-4660-ae80-c32f985cef81 6d013a1a-c93c-434b-99c1-e9e46c5c8e92 ca7bc862-19a8-43d2-a92b-9ca2162b55cb 6970daeb-a718-4f00-a8d0-62a317aee5f3 2111bc32-0d66-4b77-a51d-6256bbd53b16 7e9cd18b-cf15-4aec-a49a-f456df585d8b 15cacfb5-c9a7-4fed-bed8-d4ae393c0065 de8a2b57-ff26-476c-8815-64e30225ec53 b7e734f1-6184-4dca-94f6-acc14a928c25 0a1ffdc3-9916-40c6-a299-453c288dc6a6 da905bda-b827-4b5e-bb4f-8c29d2a625b1 8beb4ade-ce67-49ec-8a77-fa356db5865c 73b09438-195d-4e8d-adfd-95d45938afb1 bf3897c7-acdb-462a-9c9e-7142dc0eb41c a5b08c6e-891d-4d49-8d2a-f3982ad6635e 430e0564-2b37-44f3-8788-cc513540da8f aa0a03c5-047b-4d60-b38a-e39fd6006b1f f6ed5694-b760-403f-aae9-145ee0aa3083 f4fa7921-f6db-43c7-b6c3-ac7639baf1c0 f902b2d0-d5ae-45f4-b6a9-76c314faf286 a6cae441-5238-4f22-9478-3b99528fc620 0a241445-0c71-47dd-a84f-54741e4622bf f85b18ac-26e0-4746-912c-003a0351b859 8781e86c-5586-4fc2-b90c-56933d1ee4a8 21e26261-5a26-49e7-b469-58e85eda9f98 2dceb087-1f8b-475e-ac5a-87c3fca54d8e 1f21477a-7ed2-4ec5-9dd9-3784added8b7 beba8873-5e6d-45be-997e-9356dca52b35 fc4e2805-0246-4451-a2a8-2e8ac9207a51 7789dd45-0678-40e9-84b1-8cd74b4c9311 76557f9c-2638-4785-ad2e-14f091596e65 704714a9-4507-4162-95e4-5af4e1f5c4c7 4615dc96-72e1-4501-a93b-335d015826c8 c8dc11a4-97c3-443e-b932-c94599689d1a 52412cec-fb35-4d1d-b604-c8e7993d54bb fff5f046-d881-45fd-a625-06dbb97cd7c8 33ee8c23-56d0-45bc-952c-fbfeb285364e 954c5ffe-e5d5-4424-9da8-7140f68eb3c5 956c7145-fd5d-4191-8d74-35c1664dc6b3 8ae0ae2f-43d4-48a0-a00e-a521ed4cac67 e56ca4cd-70c8-4d51-a8cd-45923d9dd731 9d3d87f3-05df-43c3-81eb-464aaa0fbc37 94fbd6ea-9e6c-4647-9396-b1f0abb1fb92 864c9584-407f-428e-9cdc-7b509ae3f857 904e3386-de8e-4a3e-8b71-8b108be3ea24 a048dc32-78a3-41b1-b4f6-a66af089aa3b 77819273-78ff-42ac-8dfc-7ef8f678ea3e 8959431f-5dc7-4724-8fe3-c6c8e5c260f4 77a6e877-bc71-486e-baef-1dfada5c9d9b cff8bf70-3941-4390-b037-a12d9e02f2f7 c2f833c9-8298-433c-a1c8-4e287abdd4ce 6ec221c4-7fe1-4a3c-9088-5475cb60c87b 01d0bd4d-a484-495c-8f55-c8cb3040100e c1ff1584-d5b2-47c0-867a-abb0b50d008a 7bff1466-8ab4-4fb8-8735-8004c943436b 310b3f5f-141e-4934-9371-4781d4b05e0c 0259eefd-7ed7-40aa-a0b6-d51a9f549d06 69658ddd-c455-4fcd-97ab-0aeeea0614db d0fa6e5b-d168-42ab-96ed-29cb254622a6 2b564577-a84b-4ef6-b390-90a51a14f470 5014988e-80c6-485e-a69c-661b87fe5f74 fe4a73e6-202e-46b7-b8e5-0bfb9ce4a849 c4876224-35e8-4e66-bee3-3180708932c4 e8c5d74d-1c4e-49c0-8376-9ebdb1db7395 00cb5891-4098-49ea-8a50-f63b8c3ac24d c77d3770-22cb-4dc5-b0ce-64d620e71a6a 3c42c6db-ecf1-4d9c-a983-b97d3f4c3b76 84868970-202a-4f40-ba65-fbc8c0caa9f0 e805bb2a-8f68-46a4-9e99-31fa8d21b0b6 c59757c6-3f10-487a-b1d9-77c3f8905058 24fe3f14-eee4-4eb3-9259-6a64c69944bb 3923191b-3ca5-4cbf-b012-c9325db5ac58 a19360df-6bb5-414d-8d51-6ee419c2d0d8 3e52b372-728a-4ea0-81d0-c2dcb4bdf3f8 4539f0b2-ee11-4384-b25c-0ee18e37014c 19bfc578-6413-48fd-b8fd-fb169d7be36f 5fc98360-4d0f-47b5-bd0d-04e4e3e1eb26 44c0fb7c-3026-406b-880a-cb4c9d9e9b11 4d2b4c5a-c4b4-45c8-b227-eea4751faa0e aef9474e-c8a3-42f5-8243-90e2ae07154c c44289de-2e28-4e8c-a50c-94b4ffc0a3ab 6b343c03-13b2-4de9-8b03-71a092389c9d fe18f067-8f7d-481c-9028-6dc25be01a75 ffe0cbec-cd74-4d99-9b42-0b0011884d64 cf180fa6-e256-4dd0-9a9c-2909fafba774 f70a0b61-6d7d-455e-aaf8-1b4b29723ff9 5e09206f-3d0e-44ed-b867-89d3f442a9c5 0b51a42f-d808-4e95-bfe3-56aa24241d49 ab65f574-c2e3-41c6-aacb-52c62fd3a9fc eec2b8dc-2063-4f62-8faa-6a3877aed42e f4fa595a-5eaf-4866-9f10-98eac09eeb57 9d62d99e-ba6f-40d8-b1b2-336c0804956f 4ad98684-6285-427c-a90b-227e70e50e56 4dd30e2a-4b3d-457e-8d0e-8419245e5b4f a9043dc6-f040-4019-9dd2-89740d351ca8 e2dad074-f2bb-4eba-b4a0-c87c9a8004b2 57fdd155-0d44-406e-8a9b-72e78c7fe092 36086f3b-1966-4b1a-8eec-5f0b8ad6aacc 7a3507c9-853b-4972-836f-af4523d9db03 bf45e027-1607-4a2f-9ba3-4a09c4e36f4b d18b204f-0577-44de-90d6-c227f33db8ad 4d6f99ef-ea28-4e57-8cb6-e25f9769a969 adbf9962-8380-4b99-be3d-0e9101319593 2004b6d2-0c7b-46ca-aad0-9b6ab650c1aa 89f1dc83-62bb-4312-ba69-2b41f09be2ce e7326185-5e3f-481d-ad29-5b0cf82101e9 f226e351-bc3b-4bac-b595-3772ba405848 2aa24f75-c7db-40fa-9667-8758892435bd 818bb52b-d619-4299-a729-6c62d6e31b53 c634f322-a59b-450f-a21e-9d721b347d8c 259321b9-14d1-4f70-a32e-e2a9c0cb4440 43c9c82b-7fee-4767-b8ad-6c1c86250b16 c9a64999-d452-41f1-93a5-86f51db3fbcf 20a6130d-cde1-431f-8c80-db9e56949491 6a1fe48f-4883-4988-b10f-d85f24cee585 8ddad32b-755a-43d1-a047-5ddf07025db2 f8728732-0005-4951-8b6f-819f69fd46bf 10b46985-2891-42e2-ab89-1a651528f30f 92ff5433-78f0-4460-9b9b-52273ded15f1 fc9abaf1-b8ea-4c00-ba7c-243f3bd6b57c 9c746d12-2917-4b86-8a42-b4403c19df2f 84d62c22-3b7e-4529-ad2b-c134494b72bc 21489699-822d-4101-8885-92a63d6f0906 b758d690-1d5e-4122-a371-945cfe6ae58a 7610c789-305a-4c02-8c2c-186a547d4cf3 75236357-65b2-4d00-af08-3c95e51a6857 cc0eba83-c7cd-4a0d-94a6-323fa2a872b7 025b1732-2714-4ca2-a3e2-9a10625745ce 801f8166-804d-47f7-a7ae-ca9ed594933b 3a3d8cc4-d006-467f-848b-7c02153fd69b 901973a1-f7e4-4751-9450-e7ec19fa6b74 3a7c0db8-4e5c-40fd-b952-713d275991ae 0f32435f-d5c6-4a10-a81b-54cac968e81f 6b3e3346-f2c7-4526-a179-eb18803a07b0 ad348c65-bb39-4c83-bea9-0ac482ea85c0 cb44f5f4-9218-4919-af12-953770002b1b 312af3c8-616d-4d76-ab01-215b283702c4 57f860c3-be30-4368-b7ec-685936ff4251 7a472ba5-4d38-45ad-810e-c98410eda8af 97f1b1c2-e98a-4bc8-84a0-257ecf79fc7a 69bf26d5-8145-4413-9418-f314ad05c625 9470b606-76e4-490a-be4e-e323e63b2934 065d269f-968c-4d04-b341-73f84b02af0c e935af75-a97f-48dd-a7d5-79c3ae3442cc d73c35fb-6d60-4ef3-a34c-02ce8cdf7d09 8b722345-733f-4097-98da-1a490b569317 cba940bb-e0fe-4e46-bd9e-a9a3f94c9d7c f5a1c9a6-e447-435a-b644-f96fd6d175df 6a73a9b9-a10a-4e38-a1b5-58610025c3bd 8c0035bd-3899-4994-839e-69f3f922f10a 1ed2d720-5f22-4963-a6d3-bb248daa3459 6877a2a1-6fe3-4df5-9b0d-933cb2ce4379 c47c221b-dc7e-4072-a313-f86e8c445151 4a329b72-9696-4287-992b-70ff4989dbb2 d4b2bbe0-cf62-4c89-8806-2a6f8f0e3060 8dee4ed5-6d87-40bd-bda2-dbb965c785d2 8f6480dc-43b5-4027-a11c-340acd5d7c51 80ff8d1c-80ce-45aa-86f5-e2a6f7098257 554be057-7eb8-4506-ba87-c787f16308f1 0da2fd0b-2420-4cfb-a160-3d71d9317404 666b2f97-1528-49cb-962d-b02abf9766b6 695ef1f9-3ae3-4fa7-ba8a-cec7966fcd41 f61467e4-9a62-4044-9856-fd1d1f5bcbe7 f5175497-950d-442e-b650-a02f212997d9 90524d35-05c9-4716-8989-917f0216eebe 6be4e74c-4d17-456b-90bb-7c1018131522 7fd9324a-1468-4cad-ba05-0b93c1504022 5dd437e9-8255-48ba-b59e-a52f87189941 1edb504d-7678-4040-a123-8a7170d028e2 5108abdb-43cc-42ae-95a9-c7c785090f00 7d39a121-bd33-4d85-9604-dfa295bdac6b f92c6a7b-9921-4353-96e0-6c58d85190f8 d470bebe-421a-4ca1-9354-4c22c42fff34 6bee3202-dfc5-4d8a-8df3-2cc6a88e8872 68d6f652-cb42-4eb0-8bb9-1b86b3705da7 d3ed0afc-4771-45cc-a913-e6a30504b815 09f77af3-0c13-4c20-91cb-992caafdcf5e 941a0be4-b741-41b4-8d8a-26505c0e405f 379d92ca-b966-40bf-b54d-f8b22f6ae86e 1f0776d1-bbbb-41f6-8d79-9ca3eed6b947 5ac75419-f235-4146-aa7b-e905fdd5a161 70701eed-5f10-4f44-b71e-25aa0935b337 58f77562-1d9f-42ca-8a5a-805dcab25344 eac0db0c-0c5a-4649-909e-17efe8a3163b c3f77983-b0a8-4f9e-ae90-b4dbf8c5f94f 9e4bfe87-6534-4ee3-b115-0fe71fcfe033 5d431ab7-3292-4616-bc9a-9f3cd3f5ee44 ce180762-20b6-4e17-8e40-fb95489c48d6 59cdc6b2-b055-4a62-a08f-fab5a866f52e 5e130f6e-ec88-4248-ad2e-82a0bf1f25e3 a5d0caed-a13a-468b-858f-74b31d682142 894797c7-0a73-4587-be44-9dee03b0f821 e5ede4d2-771e-4b55-890f-5f95e18d9f4c 9580e791-d239-4fd6-b978-e58fa9a5ecf9 30de89ce-32d5-44b2-b577-5b85da7ecc2d 86df9dc9-5003-42d0-9d23-0e223218f075 b3ebfb2d-c81d-40c3-b1c7-3b8d37e23a9b 15c3faec-efb8-47ff-b73f-40424afff7c8 38d634b8-f8b6-4028-8645-9b5e845ab10d e0f3e24b-8f61-4e15-a687-0b696c0fd62d 351a6c1b-aed9-497e-99ed-11a47a359b87 5b5b9361-fd8f-4066-99ab-7d898d2d73a5 ef1c38f2-f1bf-4388-b95f-287900d8accd 18e0f2c2-f1b0-46f1-97e8-2179524a12b9 acb451c7-3670-4e0e-93c2-f934920537f9 0b19cca5-46e2-4ead-ba09-cb7866acb2a2 ad5c4303-4ede-4076-9927-d234ba302923 cf1aba22-27bf-4a20-9260-e511a8d49ac6 928451fd-5623-447d-a47a-471c56051973 6b3775d1-fd67-4498-b4dd-06970f6ca083 b9136c0d-111b-4971-8af4-27f0e0663b47 70129422-01f1-4d47-b7cf-2bc3d84d7609 f7d77484-dfd3-4e48-b764-9a502be535f5 96e4a0ce-8d21-4be3-b92e-ad07864010c9 c52c0757-aaab-4f21-a250-dbe7bc35821a e1b55cf5-ead2-4617-bcc6-976e3543068a ae88bdcf-ed3c-4582-b0f9-3dacf8db1d0d 57c47c43-6c42-4e4c-a4ba-4acd4b7e596c 71111f09-7cb6-4ea9-b978-68e9253bc156 7572f7b0-782b-4ce7-a0d3-5d038827e86d 4735f77a-743b-4e7a-a331-e65222369f56 41330fc5-339d-4cbb-8de0-630df86870e6 e2601752-0320-4855-bd75-df59285d1b3b 3468c474-ac97-4205-b66b-48b8d67d335b 9b70c1d3-b006-4708-9a85-50d8033e2107 18b2367c-b911-4e1d-9c67-279f44b5e03a 5726870e-e94c-44eb-99a5-20e50f3b0b76 9a3176b4-1c59-4c81-b443-3ceb9cb7bf97 8a679c43-35cd-412f-9aa6-290b5c81b678 03637b2e-f3b0-4b05-8aa9-37d0d0b51595 4f80dc60-03dd-4aae-885f-58c69403d494 b5892de6-12ed-423e-945d-05eb5eb27de0 6059b98e-7f77-4f63-9816-1e8ab6999233 6300ed2a-0d8a-4705-a8ec-2b268c5e9218 02ec63e3-0f12-4c88-9151-c719c914284a d8c5bd37-be91-40cd-a99e-36b10d0e79ef 9d3841c8-4480-430d-8864-4ea983864675 37fb625a-7f9e-4cc7-ae05-b574e0b997a6 c6ae5327-d1c1-409c-a08b-7d0433d328ab c5f7f622-3948-4d32-ab4b-4d12567f0c87 a4e2bfe5-4628-45c1-a74a-cd3ea555cc06 dfb8f278-8fb3-4b00-8725-7bfe1b9d112b f49b00fc-e933-42d6-86c2-34e23e0c22d1 822dcb17-c439-45c1-be4e-16be3c4f7f3a 971866f9-9f01-446e-9485-0f9e1e4b9085 d0e25d0e-8b8a-4c7e-8fab-228e87984c58 46fad25e-0a74-4cb7-bab5-944292e28f57 f82d6651-6009-4a7f-907d-00b20df03a3b 81d65511-4e16-49b5-889a-6dff8b0c43fa 62fee5db-d2bc-4e55-95bf-1ad72f9dea11 6a6f780c-0027-445c-a573-cf3260114062 3d5ca243-c43c-4ef5-98fc-d9b685fb5940 4902dc8d-1991-4a82-bc6f-b43d9195b65c b6c293b0-d1cc-476c-85ee-7a552843e88b cb94abea-1518-4d6f-ae31-8a80d7beb206 3a2c9227-cbfd-444b-8c0b-c797cc73ff20 9d3934d0-c5d7-4d7f-be3f-3d01c30391c5 00af94ec-33bd-4ac7-80b5-3dea6e95b0ac bea6961b-9145-42a7-9445-ba0f2eaae1a2 4a59bd38-ec62-4d91-96ef-a616458e7200 a856b7d2-86ee-442d-b7af-e5ace3211c33 2c25f2fd-d898-4cef-8f14-ecc2b738b333 10678b9c-1f4d-4470-8f2e-851acf86709b 3299be17-03f7-4a79-b37e-cf80023a20db a4142349-698e-4432-ac52-f231316b8add ce493f30-3b86-4700-93ab-e6c1b2c5c7b0 e7ff3270-ce8e-46ef-9aef-13efb769a69b 5a5fa0f3-a756-4b56-973c-ae942c5b5cd0 a35fa720-9b18-4484-b55e-4ec859a9e08b 51ee4cf2-3f00-4e73-83b9-3bfae8c8e296 33df801d-7172-4912-8a1d-424ea4cbcbd4 a66d0edf-4150-4e25-9ddb-8fbb2bb60608 2467c559-8d6d-4402-8fcf-59ea42f064f9 b9545c3d-51f5-4aa3-800e-af0bc17b43f9 1febba1a-f90d-4096-926c-8df7bc179b62 8b5c1455-727d-49ef-a091-a34f880a0d36 c1ae66fc-f7cd-4d0d-9e84-72e61e7a8ead 52bf2762-4359-4266-9793-ddf5599ddaef 9608da57-8fa1-43c0-9801-8c2adaa8bba7 2c46a93d-ff78-408f-936d-c23d90b70c05 46764fd6-fdb3-4ae8-bc9d-c2978f0b6c09 8ae243ef-ab59-4f0d-a48c-904df063eadc 1f71f2e7-b23b-476d-8a90-d02ab98c8999 8a39d4bb-46e1-43ff-a5e1-b9b813936047 b376fda0-aa02-4451-85e2-f8a7d1fe23d4 fd84e8ee-5ff6-47be-a8ff-cf4855f53c28 f51f74f0-59c7-46fd-9cfa-fd18b7522339 ce7adc0f-3aa8-4cf0-b4ea-f9aafcbaaa06 753c9c4d-8925-47a7-b6b7-270af990c0e1 af0288e3-43c0-431b-86b4-5b784b660af5 7abcc94d-2e83-4b05-a4c5-38f89bc12996 8a0c2ade-30a9-453f-847b-6fb54ee5bb62 cb665a46-f459-4ffb-b913-f5a8bc0eab29 251eef31-22f3-4082-bbea-eb591da8ca72 cc0c9b7e-98f4-4de2-aab3-50159861c1f2 d64a7efa-33f5-4ec9-a2e5-8cdbfdeaa563 b6a2950e-7822-4620-b79c-3dbbb3432447 570fe851-cffa-4d53-b9e4-cdc62581ea4f f7641f1e-b501-4563-a1f1-6411fa497904 e34b72c0-062a-4242-acba-d8aac7ac945b 588b3192-754b-4177-b26e-d118b194fa8d 369a7ab9-9ab5-4608-a773-887b6527e3f3 823bc717-3a10-48c4-ac98-452d6483b083 13ebef70-ba8b-4316-a51a-347100b427aa 7875f885-6452-44da-b524-07efb827ea80 c51253ce-1912-4fb0-af86-7ca3a205bd27 c2eec1a0-5eb4-4576-b420-df234032a5d6 b9719566-a047-4356-bbaa-54cf0f2a7eaa e36e8d76-e8c7-465d-b3f5-3da781a04c8c 1ee0aea4-2cf3-4116-9fe6-7db237676f2a 244cdb20-5d13-4108-b0dc-037b436bd6c9 ce288993-577b-4f36-9dab-bba7729aae43 ccd158c7-dae6-4eea-bc79-03cf2e5725f2 56eeb95a-daeb-4ef7-9e8d-75a20e0d1e1a a1e04452-5b4d-483e-935d-6a9c44922549 600faced-2121-46a3-9607-7ce36c91d6b9 2c3e16da-6335-4d4b-a737-eab7c819ca1e 953f4f2e-5fef-4334-82b9-6eeee16baf22 c1bb911b-d5c2-4d91-851d-02085f4babc9 057ecc9a-fcfb-42ff-9fcd-df98b5c911f0 0e49db8a-bf2a-459d-a425-ea7e68909a41 b3bb8cc5-75ba-413e-ac57-0d31ac16c93f 195860ae-5455-4618-b005-9ae0bcb56da5 d7adf737-9a12-452b-b378-107335fac64a f8d71b18-0a2b-4fbe-9cc5-a99a9dc71da8 407ee42f-cd0e-468d-9cb6-0a68a5b17421 9f48b3f3-d850-4d3e-8651-5e750d58582c 50176dba-eb70-4c04-865c-b81f969c7dfa a32b0bce-81f3-425a-923c-227d1875a372 a109eeb1-15bd-4543-95b6-7deb0cd5e42c 710604f3-afa9-4a94-8566-3a61adae2712 f8ea86aa-ca88-48b2-a623-7403a7a31480 3143e8b2-43ac-4389-a92c-1c8aeeca18a2 7fadbc30-6291-4636-8f6f-12e34af0944c c1e8d5b9-bfc1-4b48-87d1-05e1cd5d0538 89be1c8f-ad1a-4216-8ac5-5938975bbc58 77065738-2dd0-4e9d-8099-a9d6ebdf353d 2aba08e2-68fe-4d5e-91b8-8b4770eb96e0 bf6e302e-497f-4d9e-92ef-a9d4e80e81ae 4115b45f-1e45-4ff3-b183-07ef61bff7d7 51f8b2cb-7d09-492a-8b3f-ff2e4f4b3191 31fb3a4b-844e-4511-af3e-3530b622cfe7 d1cd50f8-9fc4-4997-a2ba-9c82d285f740 f85a76dd-def0-4dc0-9d95-6af12d4e1cad 2fb304d2-c448-494b-8187-b81f3d1fc202 f141192d-1536-4c75-9f5a-4b25e0d271fe 6ef512d7-3103-43c6-b3e0-4dc5c63fa136 1f5931bc-31f7-49f8-ac02-867b6cc4c24a 4f26066e-062c-48d4-b5b8-63c515fd69da 46caf149-3158-4533-966b-3cd1964d2aaa 6db7c6c1-e875-44f3-b1ae-94de17f83f8d b763a63a-a354-449a-b7c2-ac6522a75777 e904f761-d78f-4006-9e62-c2a30e3a59ed 86114433-6b2c-4262-88a0-dba59862583e 2137631a-64b1-4224-ad71-5bfb8942d49d 2afb8dc5-b159-4c21-aaee-a43e0a4e69aa 2fc0e3c9-4691-4e21-a69e-b31f9ecb0f50 30972907-5d62-4ddd-9947-9edadd4e0357 0bee8cca-f387-4570-a853-197a03050270 ce53ea18-7334-40af-8012-8bb4e1231f15 55bf92c3-a0eb-4d25-b014-1f1d6ca5b9c4 917b582f-ad89-4f5f-a1d1-055278e13a86 49762ccd-4289-41fb-8bc5-2c6170e332a3 913c7e16-bd8c-4bae-9643-f6fdaae0ad1f 122cd9fd-3930-432f-b588-9274c1e0ce98 cd76bede-72b6-4b96-b028-bc3a41e2d01c 2a58d8f4-06d6-4ef0-a1f1-9e1b0106764b dd42b9a5-387d-415d-84b2-312064dbb932 f0da9146-cd24-4898-a6e4-96a49b31a233 4522fee8-f8af-4240-ac67-c661c8620224 460eafc3-52ea-4de4-85d1-0e7b1575dec4 cc04e2af-0fca-47ae-9fe5-e88e5c049aec dd05a025-032c-4f5e-b650-48a70fea6a4a b2208396-19d1-4ddf-880f-27d3f624fad5 94716309-5047-4d53-8522-a80dfdfc1d63 630198e6-5860-43c2-a782-0f849b8b15bb 6a02ef3b-622a-426f-ab92-5a998a566c42 2d4c965c-610c-409a-a9d7-42b4aff24c5d 90d703f6-859a-4e03-893f-eb43d18f2931 30d823e8-e969-460c-80df-047d63620e28 6e318796-685a-414e-928c-f20d8b145dbf f7f0f260-6d17-412d-a44c-8a34f249e581 2df105f3-f3de-4942-b9e1-3d94d4a9bec9 4132b679-a90f-4b86-a689-1abc045f1068 5414bbf2-1b54-43e8-9b7b-08fc3c93388d 9f73de00-e52c-44c5-9fab-08e01cbd4a16 9c74b7a5-03b4-4963-a6d5-29a2800992a6 3190feb5-c02a-4d33-899f-f2a5edbba9b7 ea16c577-6208-416d-a4d3-060a31f40490 4d32dfa8-9ceb-4ce6-a062-fb6096ceb896 1e392867-0203-4745-9780-41ffbd0ef3f4 971e25dc-470e-4ac6-b54e-4620475c8d72 a63e64f1-bbbd-4d0d-aa6b-bfae6a0ddb1e 5a9f18e0-4f3c-4015-b1fa-9acbbf07e871 4ddb0a0b-e088-4b50-92a7-624ce818d612 6baf1b94-a902-457a-8bc2-41edd8981dc7 1382745f-64fe-479b-a96a-89d88edbcc17 c62526f4-f9d1-4cf1-aea1-11742a209041 c379b77b-6d84-4bc2-8c78-dc130223ac78 5335c433-b7f6-4b9c-9df8-49cc6f9cd270 6d6af34e-36fc-4726-9ddb-956240e0dc0c 87bfc440-a883-41bf-96d1-fbbcf09f4b83 93be2a02-53e1-4f12-bf31-885f28283fe9 6c298334-74de-4421-aca4-798db5ecce6f f8409340-7c21-42ac-85b2-f802f9aab45e a98d6735-b38c-4f9a-9b4d-acc466a5872d 5a57dae1-9e8a-414c-8812-e943db98c473 0464a5d8-7b4e-4abf-bb50-3b975bff7627 aea2ed2a-12cf-4aab-949b-7142cf25ea2d 14c8f42a-39b2-4d13-bba9-cc3a3c7554e4 54bbebf8-704d-4404-9bae-c101b5526fb9 0b83abe9-dbc7-48fe-b3b5-3d6d58b4a056 438603be-e624-47e7-b106-b80d1122c33b eb357008-ebc5-4bd1-ac02-51cf72c5cd17 818b9a13-1b87-409c-aac7-4c6e8c734af8 d1edc314-5f3f-4939-aac0-ce3fcc77c45b 5aa8d034-cfaf-4b71-a505-ad6751a7614c 43e00458-50f3-4238-bd04-c9bff2088454 eeaab677-35d3-4ab1-a315-af8d9ad0aa0a 5b12cb7c-a3cb-49fb-8059-3de30c5eb50f 12ca832a-4a30-4644-9219-cc08f6c13152 746e9405-3fce-4641-b159-522e6cb145aa fbae5c8c-3738-4179-b448-7e4c56c68583 4c380733-b87a-4888-96a4-61791d4727fb 125b173a-6b0c-4669-b049-5f2a428b58d1 5427dacd-949c-4cdd-bd87-a648a2fee748 9d1bb578-489b-4c97-82e2-9d051625df8d 9df81094-9298-456d-a365-e7d535b40b4f 09d6a244-08c4-4f31-bea2-e7d250aff6e7 378fe791-45ff-4ee0-a229-8f3950d2d3d8 db3de581-d2d0-4ba8-ae1c-f28f779612ab 8d58b813-6186-429f-9240-969c041954aa 2ebab774-bb09-4e1d-b0af-cd77b7b9707e b3dd5373-0973-4e47-ba85-0b6aef5adf4a 1a1c5cae-a9fa-4db9-a7b8-f573f5fae149 25507aa7-87f4-4f56-9cef-415ad9276a8a 68fc77d3-9cb2-43e0-a138-11ab4f63903c 31c7e611-db3d-47db-8216-eb63d18691c8 6d288e16-f1c6-4dc8-b904-36d22548ac00 e127a686-8d8b-4f02-8306-a4eff3b68cdd e43c7cc4-4328-4cf3-b437-bf3340ee2786 21c20700-6b70-485d-a7c8-d78fa2c12f1b 084e2ed7-be6e-4324-b7f0-4592968ae299 9c4c7aa5-7145-4be2-9680-f5a7fe76ee85 d255cb14-892b-4c6c-b8f1-49a8400f6734 2eda2858-730d-4190-b59b-b218102a6a27 24fa6c31-961b-4efc-9a6c-15fbff1b1032 2dd5adba-5877-4899-b199-7b29550e2872 8aaff207-e745-4bfc-beea-a3bbb5620092 11f94400-e55b-432f-94a1-12c9077ac3df 4bc3bcd7-2d1a-4fd8-8e3f-c95ed15ab2ba 269d6e94-bc0b-4fa9-b32d-90de3044504b 071b3655-ba99-4882-a892-22dde70014ee 088a58f3-436b-4548-9ca1-7c95c8ea026f d2dcf730-d015-4d77-bc05-a0eae4638f8d 6d252716-bf88-4709-bdd2-f1a03770b49d 38df7dba-96b0-4895-a471-f82a8989db45 a4a1b48b-7462-48db-a97e-4cafdd9de598 8e346bac-4c42-48b6-b6b9-9d837e1bb3d2 0d5997e8-76b0-4d9e-a7dc-ccd80b0bb150 ebd6db55-4671-45d9-9603-42594c36b610 617800c9-e141-4033-8c0e-0cfe1740801e 201a66f8-30af-417c-8076-eac5de1d6491 6ac2f6e4-4fb7-42e9-91a0-3d255bafafbe cde52687-571c-46d2-ab59-dc0f3672e3d0 f384b2ce-7ef3-4127-9a17-f785c33b5ce7 01ac42f6-7466-46ec-9462-340067e84f8a f573f9f8-948d-42ff-9279-28e505d471bb f784abae-25f9-434d-87ad-3bdcb1502a8e 068c5e27-57bc-4a8a-b965-b1dc26332ca9 a6007acf-6860-43c5-9fbc-24414ff33154 5048c2e0-672b-4ac5-94a6-cedb068a1e46 5d7a02e6-1d76-4f71-afc4-979440b1b2d2 87a8a5ff-6f7d-456f-a08c-7bddd01f5ef7 685fbbc9-0026-4b31-80f8-88116bc64701 105e6ec2-1f2c-4051-8b64-3c694699b538 e9e5b4b1-813d-4d1d-8239-194646e993cd 1c64e216-62bf-4f36-be2a-75f4fb6e000b 2d73b581-50ea-462a-a8b4-22c0d88624b0 f0f2c78d-0ce8-4d4a-866c-7eed74dd1d64 534cfe36-bb56-42a9-988a-ab83b8227264 bf6e0caf-b949-4df9-b0f9-e63ba0da33dd ce8e7719-2388-4269-8c06-6c01a03293ed d04751c0-2b3b-48e0-b283-b0095e8d1401 db25cf9f-ae6c-4708-9bc9-0c093ccf02f0 da254c31-f7a2-4a80-b93d-a429d5ecc7b5 e528d4af-12ee-4abd-aefe-1072ba1120f8 d633772f-13c6-4d37-b8d3-53943d72c0ea 5c5e6694-605a-46d8-a548-db62a13db0ce bb9d240e-6a16-4e25-a013-f977b349113e c615d5c3-f4b1-4a8d-9ff4-200dfe424a9f 08cf3100-a146-4a28-8344-876588a206b2 375caa52-8b46-4223-85e3-5970b82d79c4 0d84443d-f623-40ff-b926-96c8abec07cf ffc388a5-995f-4fcd-ab62-05962767b886 879e7169-0c19-4c7f-96dc-175fd8b0fd43 b6787332-b9d9-4332-bdce-a9ec2bec532d 5382d82c-f9b9-44b5-9bbe-4d637b13bc45 198ae136-3f76-4dd7-b1bf-9f350b018239 0820befc-4415-4f66-96ab-f8c9aa5682e2 bbfc7696-1b14-4c2e-81ba-80bf98adc23e 1681033b-c2a8-4c6e-bc06-971e2601bb67 5082c3a7-665e-4bb9-92df-6125c7f327fb 5e9b1a4a-ce61-424b-8cc0-1061e5a9d35b 986c3c8c-eab2-4d5f-aefa-fdd805e438dd 40c58f50-56e8-4810-978f-431a85e9653b 36949588-48c3-4f65-9604-d7d1bf4ca31e 93a4e8ba-9b54-4ccb-a5dc-073018b2b464 df40cd2a-1d31-4a03-91b1-11147b623c1a 16817d18-3767-406f-81b9-0aa0e51a47d3 c9121ab9-b2cd-4ef3-99a0-5b799aa0c87e d4377060-6bfa-4d6c-8589-f8a7c8145e1e 28be0fb6-5612-4cbd-a7ad-7d46883dc135 6d599599-759e-4fe9-985d-2f07e149b9d2 a2508514-4d15-4436-a573-9bb83cb6dc29 3fe76a3b-ef45-4540-86af-db92052ba672 d89c925d-bf4b-45a9-9d51-c305942c29b0 a6a0acb1-fb48-4503-8ec7-2e36b00192c3 398979aa-4c16-4eab-aa03-c57b5e53d24c e8287fca-1212-417e-ab7a-38804d69b0cc 021aa180-f226-4b7f-b930-70b8373fc038 4f1fa592-1e52-4d35-a4da-cf107ccf34f4 cc255996-cb95-491d-837f-c9d337f85a39 f1a13d12-9806-495c-acfc-3e91a7e7943b 0b5e179c-3fa8-4f0f-aa1e-e52bc2a26e9f 9613647b-5e25-415a-883c-62756f854634 fc7a196f-62c5-4245-9893-22ae85c19b68 49901b52-fa31-46e2-94c1-21bd60aed9c1 fd91eb64-e407-4378-a59d-a9b7de4f5f22 7ffc0227-e0fe-43bb-a7ec-1dca04f04549 899ecab2-d484-4a54-88a2-810cdf4d8235 86991980-c9bc-4243-abe5-eedbfc6aa92d b3e9a950-d665-4240-a6f1-04e3dbdf672b 2d882289-5b07-4126-8e8a-f5b1ddbe23f8 ac37e99e-bf00-4b81-aec9-f8411a54f615 9924e6bc-3172-4eea-97fd-dc257a9febe2 5aeecd02-a103-4ff6-8a87-6caeff4541a6 5f52da69-dd4d-4cba-beab-2f0e03a038ce 401a07c0-99db-40f6-8741-26a5b56ee09c d80c9cc1-cdc7-43b8-9a89-75e4fce62e62 6efa7d2f-9c54-4c94-a87c-2d010b0bd358 f0680090-d7b2-4f7c-8888-ee048877f7da e76da65b-3d53-441f-9271-3483d9d56dfe 94414d56-b946-46df-b7b4-de7f37778a06 c831538a-ad1c-4bfb-b880-640be874a080 c7fe914e-8653-4c61-adbc-4555e5a03e60 e6c9334f-efb8-4411-82cc-69ee5a045bba 365545e8-e2e5-44ea-9832-dcc86395f163 e76f4d50-c2c2-4081-80df-d99c03cc7c28 71a05557-9dd7-4bf4-a519-7909c7ecfb9f e3cf8e9c-4266-48dc-ac16-467fca3eabdb 838e8407-5b3f-429a-8eee-90360f462e8a b17c23de-8178-4d8b-8c62-770b0f8a16a2 1746cadf-4e47-4315-b1d6-60a6527603d3 e035c0fa-6a01-44f2-878a-40838fe19b04 b70b30ec-4767-4ee3-a2ec-5a885bc22fc3 69caba7d-2439-4cfd-952b-71db269057cf 8a92b34a-d4c7-4dc3-b782-aa92d1729efc 2baaadd0-8b1f-4602-8b37-613657691644 3ff1f806-59e5-4145-86a1-53e482f17b2e a49898e1-5891-41f3-bf20-eb6a1f586d80 c115dabb-f42d-40a5-b48c-314d8fece280 e6df2fab-69da-478d-be95-d697814b87ee c28a53bc-1925-4d56-ab83-0908613870de b791dc61-14aa-457b-9a08-b03fca9055a7 72aa265e-b006-415d-a63d-0c75fa4cb6ed 518d59ce-2b30-4c02-82b7-b7aec7f3634b f816fad4-2a28-415d-8bba-efaa1eb90082 f3dd3982-1445-41cd-829a-52cc0b2284e6 1c68c002-e006-41e9-8682-107b27f1d01e c129c9b2-f61e-44c3-a372-8e899f828475 c5bf6462-9242-4490-befb-e5150f8a45b5 4a9aac97-7e43-453d-9aea-98761a95963e b8f1ac6a-eb1b-4748-b71d-63e7aba95497 515b3bf0-fb1c-4e39-b225-39106c47e847 e6b25d76-f202-4939-9770-70a6cbd27cc4 c80c969c-72fe-44d2-bf8d-f7ff75dd52a8 a1fa1324-b8e2-4714-ad6f-4759dc6be879 64758e84-9c9b-4c67-bbf4-5047698a2b13 9229b442-5cd5-4104-847e-2f29c83ebf7e 9eb3ea32-82a4-4454-99a3-380b612d17cc d6170514-b03d-4b24-a058-e7238d9d0b92 eca6b0d4-7fc1-4fca-988e-e8035da0b81d e7a85894-214f-437e-91d8-d1a65eef91ef de35b960-6bb8-42dd-91ed-a8c48c20b29e ca77ce1c-2b63-451e-b733-38a606f01c85 bf71375b-72cf-4147-a314-346758611725 b433e016-d367-4b60-a482-f1e2b17b200e 7b232e3e-8f52-4331-a4f7-a33cbf949d49 7a7b7ac9-e4c9-44f9-88ba-e10736d72564 56aad848-21e1-4529-9e77-0014b8fb81c7 ac921052-7473-4707-a8d3-cd95724a8024 fbab9c55-74c1-49f4-9fbc-5b663d826335 a7c57ffe-fe15-4998-a127-9508f35af4b5 fe159516-43f4-4b66-aaa7-d4241eb21a61 39e434eb-33fb-4998-8fd2-cba37115c9b6 7c6e80b2-4991-40cd-977d-89382bf8a2ff a154a53e-9849-43b2-92cb-b2dbbf171548 e52f7426-a755-4c6c-a3b4-e3c11675e0d3 78d49e76-30d3-4a96-8236-3a11ac579229 53692385-6ba8-4afd-b861-1de8adc5279f ffba08b7-ec98-480f-b37b-f7ca3ce163a5 a8fdbe34-e751-434f-a322-bfae5efc13e4 d72152aa-664b-4c18-b85e-52f6cde2f187 7adf2361-dbb0-46ca-8fb5-8d38e4a4ad8b a087ce61-bb9a-4384-ab83-57a42ae141c5 5e140515-8bc0-47c4-9f8a-9d038ba1a2b1 28a84ff3-d063-4b3d-9b5d-8fbe63d878d9 302aca7f-1877-406c-8664-4fc847eb2b51 f4e0a7b7-7a0a-44f8-afc8-07ecd9b21b7c fd6a7403-bcae-46c1-a436-a869eeee9bc3 920ca0f9-85d2-4c78-b5e3-5b33e033f88b d0c6f6e9-8702-4922-9e6a-263577a7cb2a 870625a4-6d23-407c-af1c-149c995b6819 2ad12900-7b45-41ba-9b46-f43e628d7496 b5de5042-78ed-4108-b1dd-56cb7bee6630 a7ac0d8a-3eb5-4c0b-bf90-adc517320f07 ed95760b-26d4-4b99-8a42-b7628dbaf846 a8dfc7ad-f005-4822-a9ee-41a0e3ccc5a3 7504e385-e568-467f-b3e1-b515cee27afb 72a57e1f-b0fd-4548-80fc-235a716eee1e 56610997-768a-4556-89e9-be7915229f12 243780ea-6f50-483c-8bc7-6e76960b2bf2 f30bf035-51c9-4489-bcf7-c0ad129ce12c cef48c5b-91e2-4261-b820-0b8abf0d1f9d a55e4f46-1051-43f5-86da-ff6749422a12 28efb0e2-fda8-4e2f-956d-014d0c5d2ce6 b4cef053-c28f-4294-8c24-27ec1a9ed79c 0b78b68c-5950-4abb-ad01-6a5edf666678 8e0ba6ca-ea87-4def-9e78-d2b85f29e27c 23cc4fa0-e2f6-4039-b3ae-14911419fea0 8342b382-914e-40fa-abac-e55a36e3cb5d 8dba5728-0076-4835-9b43-3d28ccc3c587 df1fa63d-04d5-49de-9dc5-b607a7c27989 68380fb7-eed8-4e4a-b8e0-32410d174431 b55a735f-b8f4-4f39-91bf-19b5685dde07 f598cc45-ad24-4a52-bfcb-1187690314b9 31027c10-30f9-46a5-b637-874b5b18abb0 292983b9-68a0-438e-ad3f-04d2b0c3ffb0 68e42cdd-c7ab-4b96-96de-cc42f7dd1d5b c81b84ca-cd01-4448-88cb-1e50cd749e7a babc78af-2c91-4982-af0b-c8e7978d1560 4a9e45fb-0772-4a79-a8a0-6b1b101e5889 5ff8894c-dee1-4d0a-93f6-ed2cf80cbb4e db85403f-4200-486d-8c7e-b3dde83a9cad 514d76e9-c917-4ae5-8744-7bda52bd5552 0109246b-1fc7-4db8-859b-bae624947eee 9a42a3fd-c124-47dc-b255-847f6f2d4760 5cc0ea27-68b5-45bc-97a9-1ae2d8ddb042 74d53bee-4f5d-40ee-920f-7d4c5fef458e ef0e6e0c-cc39-4801-becf-4e0cc6895ea5 0d39b0d5-9a20-41ba-a259-948ca3cd3630 546c087e-1126-4136-8ada-c8159007251a 2570a82d-30df-4bd3-8090-b679fed0d6cf 0aa1e6ac-121e-4f90-9b57-bf856fd0ed6c 9a12f331-3af3-4ec5-ba36-3a3728d37d3e 23d381b2-080a-4c6f-86ac-b218bb5ebd87 609301b0-b205-45dc-8f4b-f0708d4ef57d 792bc204-b568-41de-87f0-b16e2ad8dbbf 921f2904-219d-4eb1-9a1c-da83db17d872 18f6ead8-da07-410e-805f-c33bcbaf84bf 65e65ca7-b42c-4119-95c9-5236ce74a5a1 3199db1d-3413-43de-95d3-cef51bc47bba d1f1f261-5ab8-4b02-a9b3-03c939e33f7e ae0a3151-aa64-4d49-8e06-c4375ef94368 f525c44d-a4c8-4b7b-a9ff-519ca85f0e07 8d163779-0a68-4d29-bc29-5756d19dd7bf ce523b81-f2e0-4776-959a-367e905c770b 7d3fea71-784d-4890-958d-973b542deeed 1c3e6c19-f723-457b-9cf5-4fce0bb31cb6 d3f45a32-06e5-4bc4-b064-b9edebcb85a8 7bc1efba-f88d-4789-9aec-63d8f7469e04 11c7ddd8-70cb-43dd-8f1e-f7f79b3638e0 15bf6ccb-d57f-430a-91a1-8854e87012c4 6fad05a4-eb51-4431-b2b5-8ac02a49c9fc 3087c150-5a08-4d88-8d5c-c9c947421ce3 b3d74e8d-f619-4d49-be20-28acae82f940 cbbc349f-4b1f-4a07-a5f4-f806d5bf9ffa 3189259e-8bcf-47b8-b234-2f046a001f10 ce421a1c-3455-4cb4-8d4c-1f97ee44eca3 b8cddf79-17f5-4ca1-80f8-92875a07ab9b 215aaf84-c706-4984-a8e4-5478a87224b9 f6e2b9b6-293a-4591-9dac-704796d01051 bbdf2b94-0520-4588-ac4c-57597cfb750a d19545be-1a85-403f-b945-0b7332f6a122 c52c413f-443d-4109-a630-95106c0a5bcb 5d7776ed-a91f-4c2f-9c49-de650e64086a a6054a64-e890-4fd5-943c-efdc0f77dc81 bd887073-8dba-4772-a3b3-6c4008d44b36 e81237ae-45c7-40ad-9f62-2c55aa38aaab e855a49d-e9a4-410b-a78c-5fe8fd3bf28e c4f055ba-8e7d-43d8-90f1-ab1a9835a855 fd8e281a-0f37-46e8-915b-b379d12ab724 b4c53ce9-663d-4935-981b-b133bbf600c6 9a00366b-7c80-4943-a796-e7d7849c7e7f 75d1c6aa-e293-45ed-ac61-50f6a809c32c fa7d2d8e-2c42-4558-87a1-22f2bce6d130 52608c53-fce2-4957-bdd5-78b72003a37f 65ede9ae-9aac-45ac-afd6-07502ba4a43a 6290d5bd-bb63-48d7-8217-b61aec51d82c fbcb1fbe-a4c6-4679-b215-c74a927b02b9 fbcfdc9e-5b7f-4dfe-8ee0-a019975b4401 d97cb096-1154-47bc-8777-da8b6b50d8ad c4ada0b7-5720-4e65-b4df-d7a4d311f80f 78de5b9c-f5ee-4a82-affc-21306c7b7003 280a7faa-29fb-422e-a3a6-8edae6db4e61 e1e8c8ad-ad31-4a08-afba-0b1ad0820282 142fc3b0-fad9-4386-a4ea-e1b0dc03a455 f67d6dac-dd8d-4893-82d8-29c4f028908a ac3d4edd-f89d-435b-8182-f7d0c4f0a90c d9a8808d-ddf6-4b11-8d7d-7c0fe5c3513e 8c7208e8-a99c-4da8-ac1f-3100a78e550f b34d8371-bd41-4655-b86d-14a9d1fe6451 8ba85a4f-05db-44c0-a7dd-36bd492e1650 f41912d7-5e0b-4200-b204-9f3f47bcf7d3 7b92b661-a8b4-40c7-8e92-a9100cd75beb c48b5031-4f59-4ed5-9f1d-70827fb43e82 a60b85c6-e7de-4770-ac2e-68606e250a16 c26d9543-63c2-48c6-9327-5c99a14572d7 3d1a0ef1-2d7b-48a5-9352-0ddee46448d0 85f3c701-4be6-4211-acc6-074b043b87d8 4c30d642-fe5e-4332-ace9-a3e7acef3a32 07a5ec1a-30d1-430a-b9df-e27bf2fe7443 b854b1bb-98ce-48a5-af42-3bddf25b73e0 6cc96a8b-08cd-4284-82d6-5fdb40f71d76 f3e6a3df-73e4-477d-aa30-852eb2b15356 f0f1b12d-f72c-4bcb-b560-ad5805496a0e 1ad88b1b-be3e-45fc-beea-5ea299190b18 dc1ebcf7-1575-4fbd-a0ab-0721f266374e 04f0d5cc-66d9-4681-b56e-9fd0cacdd693 bd7cb506-d6f4-43a7-b9f8-de4a503bb1b5 7aad8086-ed9c-439c-843a-628200ca88d5 679d2533-23c8-4d23-9e9f-50b6ee07a871 4546ec5e-c9d2-497e-820d-b78dc558b6a1 80518645-7771-4cf1-873f-523f6f289745 35c5bad3-31dc-4622-b8cf-7ba949bf6c14 83b01d22-eaa3-4966-9188-126e39fee88c 26df2dce-25bc-4956-9e47-6a3e9e2eca89 bfdecccf-487a-4be3-aeda-cda06a016eb4 58883ffd-7f7c-4bf2-8dc5-19ed3d568dc2 aeddafa1-cf8d-4ff6-a9eb-119de41f3c89 432bed24-40bd-4b7c-b667-751aaaf6da36 fb51d36c-e2ed-48b9-a00c-07a3594c5f79 d1ae6739-ebd4-46c7-96a0-49ef8d14309f b2d17993-9b6c-4e67-8479-c980a1188aa6 450eab42-c15a-4a98-8f2f-74d8f60acf73 ae02c0bc-02f8-451e-bc92-2429ec50d80f f1df7300-ef8a-4b2d-8aac-870d6df341a0 412898aa-111f-49f9-8259-ce53d16aaf2f ca67c6fa-1a43-4ec3-8141-b0e921c3378f 2b76d600-d919-436c-b3d1-71f964dda38c a9cee66f-9690-44b8-a6b5-57ede9f240db 5f0d61e2-efbe-419e-9d95-66e43b995e28 e24b0f47-4d81-4d44-8b69-f8eb361c8337 2f708882-ec95-484f-81dc-91e0260cc7e1 919049d9-0de5-4248-801f-dfa0d7b424df fe7b44d2-07dc-4941-b0e6-7e7dfc3eaa64 b5e3a4bd-f061-4f2f-bfbf-98a0ff571d85 9827cfe1-ce68-4ee9-8607-a542fd951048 efd0af4d-e0cc-41fc-bd0e-77bd1cec9eb8 72741efd-9d65-4f09-812f-476967a70dbc 552c32fd-bee9-487e-a79b-7cecea101988 456b6cd4-348a-46ea-bde1-fd4f31bd185e 83d5a982-e2dc-4d11-8cf3-6538b9d2c2a3 d443787d-d05d-4b6f-9e9c-9cd3ce57ccd6 ce8cea7f-0fee-42d6-b641-31c21ddfe573 6e5da1f7-ee0d-4667-8bbd-9ff971e5199f 61bacb60-d26d-4f33-8ce4-59634a2e49f0 50adc185-7d7a-44ce-85ea-4b4db8d792cb 9ec718e6-c2f3-4281-ba19-a6219ad7673c f509a6ae-3c51-4ee3-9be1-6b27ce4fb2c5 3b43577e-3388-4256-9b3a-2c1a96a239bc 8c8a6a88-fc27-47ee-a4aa-062e67778be5 b666d3ef-6c45-495d-9809-efcea78cd4e1 2f9c3517-4981-4e3f-8896-98c33bf6020d c35b5adf-797e-4d31-8fbf-d6c8ae4d60ba 313b91f5-6075-4a3d-8285-e95d6e1b0de2 31de4387-1391-4257-9777-c1a4949010ff 97a5325f-d497-4990-8ef0-e2e1df89f01f 0d9ee11b-cf86-479e-b792-bbd1a4a8ea84 4e0514fe-c243-4de7-99a3-3029a8509140 4b176b3d-e497-4a14-945f-909c7b4d4fc8 f3f35568-e760-4586-a464-cd143e29a983 65ac38e1-161e-4113-b1b0-43d6e5c7adb0 ad18f54b-ecf8-4c21-890f-b7db5d8acf8d d0fef674-fe35-4b30-afb8-c483c9715117 1e390493-a253-48cd-91f1-3cb54e7a513a aac00f45-bbc3-4b68-8586-97fe8173fb61 b0415829-dba8-4f56-a55d-eed43abdd125 3e96d50a-2f3a-4410-8806-20d70563694f 44e45e31-8fed-4841-97df-9ceabf2dfacb cd65a56d-e1d2-469a-b704-0713847f9cee d23049ac-c457-4b04-8abd-b810fe3c5f9e bc603e61-cc1e-47d1-be7d-164e5d1f5675 0f1f8bcd-5206-4b5d-98fe-2c07b1880331 6292810f-9897-4f4e-a99a-10f4b2b65bf9 61cd6944-8f1f-4a78-8ac8-b296180295ae 2a239656-97ea-4fbe-b9ae-cd82cbc9dc7d e39e2f30-fac6-4d99-a0b0-4da20497b4c9 8339af29-5974-40e1-bedb-727c1af35b0e 7dfb18af-8b02-4728-a277-f8d406247db3 62d16264-7c5f-41be-bd20-ecc4f3121844 605a3149-6d98-48fd-862f-07952bdf64b1 77bccfb4-f18c-4b62-8580-009894e766c0 8687df77-e145-4403-ac69-d3c2717ae63f fa147ef0-067b-4e32-975b-6fe3e8527e1e 17433ec5-27d3-4957-a152-d018e6f60a52 b79a57d0-2504-4eaa-a40a-91f8dac79dee d50de793-6218-45ea-8ce2-6b19af09dc91 afccde64-f73c-44eb-8abf-06dcd89ff004 ad550d6b-b00d-4e04-8200-35a7683dfcdc 744d8fa9-e8e5-477e-a8a1-792d1b08a0b4 280ae6c2-1833-4dcf-ab18-dd6b8a8eac87 b1b19bc6-1ab3-4f5b-8db7-8dfa2ca374ca 6ce685ce-97b0-47db-bea0-06a5c649994b 03c220bb-eea0-4a91-a773-7268dc08ca89 213eccbe-1889-4bb6-af5a-0481ade64f71 77ec56a8-da9d-40ad-afb6-c6a079950325 01b0647f-f69a-46b2-a926-bbcd40a35351 9f3e2510-3bc6-47ff-a3ab-afbe8dedbc37 3403ef60-92e7-4cce-b1f9-05f72962b5fb 9aaa73cd-4ce5-4126-aff0-bc9bb25e8ec0 723b3986-a55b-4a30-b55f-0a9695804a81 7a623b36-89cb-44ca-90f9-3a2124727ae7 4f50d66f-779a-4ad3-89a9-c8eb2281ed2d 70dfc4d6-ad9f-4c4d-9bf8-20606a8ea5d5 6c49b071-1c9e-47bc-b3f5-37cf309d208d db32e8aa-adc4-4c9f-8851-647bf14e5b86 df379568-557a-4381-9fc5-f241dc328bd6 8137847d-de36-4935-abad-587e8decc365 0c00739d-37e6-4f45-9fc9-ad566b9efdc2 4c65b7e9-5ed1-4988-86e0-1427cbcad74c 0a6fd60d-670d-494d-a2f4-39c9ce90e189 dba866e1-3d71-41ec-ad83-c2992a2ddd1a a48f2ee5-caf1-4853-8f83-615b785e3592 362812a8-f5cf-4279-82bf-cef8382371e2 486ee779-643c-428b-8043-0b5ce1a97205 22a7212e-ac16-43f5-9a68-512a41fcf141 ebe67407-6966-4a2b-9970-943f3daf4602 a04a85a4-79bc-4ceb-8f00-f28100d63027 f9d952e9-c162-4147-9a09-e0775685f714 3de00d24-b473-4638-a236-19ca393b169f e401e332-24eb-499a-bf53-5cc833cf9503 be051ec8-706f-4e4e-b17d-98b656d83d32 4c67e784-8210-472f-a408-8a6c048b4a21 79379b55-8a68-47ad-a25f-ba0896d4b356 56c74642-06b6-4b6b-96af-8bb4b1dce7c3 f523baeb-aa73-42dd-9471-1ddcc52761b0 485f0e94-3e05-4321-9c48-4ad95de909f3 8e18f7de-8b8e-418f-b106-44727d148e86 007d57f1-2410-477c-b7f5-dc36414655e1 de0d9a17-89e8-46e5-99d5-0e538b434854 d634fa9f-99ad-4b52-b7c7-ac9ff660dbaa 7b1ce4e1-45fe-41a9-a954-f564d1b58913 9d072cf9-26a3-4103-ba9e-bcb30fbbc7b3 20b84896-4361-4c39-9b7b-11592b000dd4 53e24801-8a5e-456f-9eab-8bd69421cff3 a99d1b24-3388-4b4a-a859-c63cb9663931 1950b5ef-6eaa-48fc-bb4b-9fbe86e134ed 48e1f7ad-374d-46fe-926f-a3058b02ece3 3116784e-9c22-42f9-8bb6-1f55ea48bfff 3ac80074-1206-49b5-9c94-331275116b87 8f5adc48-5304-4f25-bb7e-ec5be7b42ff6 6b2303ca-e64e-47e4-865e-eb48c521b6ce c3a1bb6a-8835-4c1a-9425-18fdf4ecf6f4 df846abc-f6cf-4689-8412-438d302221f6 6cd37e94-2ef6-437b-9976-0afd2e045c6d d066b5a8-e72c-4cea-8959-8e27b25a1f82 31a90f60-1b2d-4dd0-b06a-058c1f4a4ca6 37b821e7-f4a2-48f2-8dfe-010ad25e56ce b970babd-8d5f-4c34-a397-0075fd025d81 0528f72c-e965-49ee-b14c-5180b191c4eb 709f539b-89e7-4257-99aa-426f0caaa10d 335502e6-1d71-4562-a809-f8544563a07f fd68c0b4-45d0-431c-b8e9-07e689d58d21 cb9461ee-d3d4-429e-a58a-5074dc50e82f 9f875c7a-bb32-4871-802f-683de1f8381e 8ed05317-03a6-4410-a333-04e41f486021 beee40d7-0f2b-4ef0-8572-9d5b6f740fb0 3df60683-77a0-4e38-bc6d-7f80345429f0 74a9a0a2-3edb-4f3b-a14f-3554b56e25ea 4a68f0f7-3d51-40c0-9962-7f29d1a5a9a0 707bc277-2cb6-4476-8420-77b3173cd3b9 488ece06-a37a-4292-a76f-523f3d91af52 0d0e2d44-75f6-41c2-ba4d-4898c776ebfa 427fd16d-86d7-4867-861f-b42a1246621f 47a90e11-967b-4f53-b2e1-8d1f7df7e54c 8cd6f8c5-fa0a-4f4c-bd77-084705ef9269 c8d5172c-4c34-4c11-a044-62d27de2278e 6340f2bd-9599-459c-88de-593dd836d247 1bb28372-7152-4a16-adb1-a0768ff3b82c 52ff3e99-2ef4-47b7-9eba-4e96de37958a fa4681bb-dbd9-432b-bf4a-6353de49e928 015b62d2-9520-4a0d-af93-9013eae1f7cd 0faee844-e6d3-4bdc-bdc5-aa4252d502a2 ed033612-ec0f-489c-8070-ef9a66a4b4a9 7eb632b4-299d-4d65-9b07-e081183aa9b4 4931eb44-fa4c-421f-8f13-259f5aad68d0 72ff1a03-785a-48fa-9c57-9cf7ab0f96a3 fa5b70d4-ed3e-4d58-8c14-c2768b469e1f d3641a97-0505-4961-9234-6b8a61d2f779 c1f0b1de-0a63-46a4-88e6-b16c01be43e1 cd11dfb7-5338-4393-aaca-9f1039050e08 f5158e83-b7f8-4072-9da1-0eb0c421d781 b06bab87-899d-4686-b8c2-2afeb2f52d2c 11b138e5-c0ee-462a-b086-6534300556dc 660bde55-163e-4970-ad81-e1d4408b52ce 2bda8e27-3d6c-4e94-99ff-6b9f30b5558f 772f6244-68f1-4271-b54a-3f8f8f93a12a 677dbe29-2fe5-4853-add2-c7d163907e11 485b2aae-a3dd-42b7-9808-b5bc49235721 f3be33ff-2d47-435c-ad75-f2517b8b3526 77442dab-8e56-4e3c-9b2e-0ee5545158fb caaf6da2-65b6-4778-9f27-093dead82340 d72d08f7-880a-42c0-a0d4-68bcee285664 40379871-e6e6-4b8b-8015-fd26e6877698 f84cb382-12de-40f1-909e-23c0664a5eb6 b2991e2a-a428-43f5-b5ca-b4fe7fe2f9f4 8c330ebc-c48c-40a6-933d-65e6b883e215 7d48e158-fc21-42bb-858e-0fa73fb02d30 cde0644e-dec9-43f1-ad9d-e68cc090cf51 92269b84-571e-4592-928d-1cbaec71c262 7c58b685-de6b-435d-a3e8-f2428539c4a8 f9c6a7a4-cfbb-44ac-9565-8241b7a29c98 630abc05-48d8-4146-b93f-8705c889e484 a1be9be4-8f70-4d90-aa5f-c2790ed90320 deda68fe-72c6-4bc7-a3e4-01d672a2bdaf 1689df6d-1627-4074-bafa-5998ad9aceff 647e4caf-68d5-4554-9468-aa0ef067cc32 59637745-eefc-4e72-8a61-e38e342ab6d8 dc6683c5-9e1f-40c7-a6d0-4081afec27ca eb6ab506-d8ad-467d-a381-2a0956673e8a 112b9a0a-4c1a-42e7-8b0e-ab24e3634e31 5fb296c0-8e5d-46c2-aeb3-762667a71717 a56462ba-25ef-42f3-9a04-1c80eafc88c4 1a9b7973-8098-45fd-b700-db18456269b6 3ffb393b-8edf-4c52-b7d2-f13dc96034db b7809d14-b9a9-4ede-b39f-f37ecc112d02 d2c0ba76-7725-44f5-9f0f-752bd3ae2e83 2fe17012-abb5-482d-8f38-a9a2d7c9f58e d23da5d3-26a5-4df5-853d-9c33e9370872 cc3a5950-bc05-46cb-8cab-5c9b3bf7cd45 10418d3f-c113-4964-a29a-8a5e3d54b5cd d08df0b9-8e65-45b8-b12c-c8a8859a06f1 54fb4851-c01a-4d49-9ab1-2ab42e68be9f 40aa060d-cad7-42e9-ade9-b24ec00c8c40 a9c6376c-aed0-4ca3-86a8-53d1de3d94cd 3b212bec-568c-4440-bee5-db9288de515e b92b5784-a3c5-43c5-a0ad-f175a7835ad7 57984571-34ae-4aa1-84ee-bc795f8634cd 33da8012-7f97-48fd-b52c-e27b612abf09 2e5dd5b1-ebf8-431c-a7ae-245431bb2b6d b734fd73-647c-4841-8950-c03c80d51a6b 5fb5ab07-2ea6-45a7-a478-66ff0482b21a 0c13874f-2957-43c0-99dc-c5696da4288b 9b69e9cd-0337-4566-b97f-c4f45db28d7a 268be28a-d7af-422d-8a89-c4bccf32c478 0949d0f5-cf43-42be-a235-754f5b56f66d de04724e-6b25-486f-9c62-4a15ab1875f3 7bbc2f3e-adc4-427a-8215-3c374a477884 9a2eb34f-d03d-4546-a0dd-328ce489ae87 b10f207c-9467-4187-ad72-8e07bad83f3f 6698dad8-b4f5-4d5b-ba43-195a57a833a8 966b502c-07f4-4101-8ca4-0ebd885e8955 39456441-dc31-4c5b-9921-9d177a260518 d4da874d-9e5f-40e2-95c3-cb5007ca94eb e31e1fdf-3bfa-4e86-9fcd-c7995783228e e14e4842-e945-490c-9d2e-e2fc59c52b7b 0a6a876d-f16c-4c27-a577-d171742e5365 237a7c2f-8705-4ab6-875b-87d8b703a5d6 950b231b-1e70-431d-9b4d-dd4f90b63261 ee4398dd-8aca-4171-a645-6d780663751e eb5c6763-bd7e-4635-b612-7cbccea258c0 f4867ace-5c48-4352-bd23-40467fa00baf 42789aaa-730e-41f1-aafc-0bef80ec37ce ceb5846c-a95b-40b3-a45b-6d965f4a6a46 834b71a4-bbd6-46d8-86f4-dfd6d2528e03 c0b2acaf-dd82-4bd6-855c-f53aaa7f0498 16d6f750-2aa5-4b27-a0eb-42f75c556c79 21271df3-c085-4719-9334-0ba98885bae9 10787a2b-a320-4cef-8644-ed0fb9ebe287 c33d7c7e-4d81-4119-83d2-48e3077f77a7 4d69ba9c-949b-4f2b-a1f0-be55e169a498 ab3d94e9-3dd9-453c-aef0-91c9f59d5e94 17d7708a-415a-4a44-92bc-dbde83238563 79eb6317-bd96-4d48-83b7-30958c977f65 82b7ca4d-98c6-470a-a9dd-e7aeeedfd3df 355287ee-85e1-4ac4-808c-9b39c6d03513 8ce1ef9f-efdd-4d4a-a86d-e3ad94f2d5e7 aa62c470-b89a-4d8a-ae2f-f5cd03dd3fd6 fc2d98e2-a7a0-4c3f-a2ea-c59a2f9fd11d 8d2ada86-babf-4525-88d5-44d46c082778 c9558966-68c2-4cff-b7ef-37d312f847af fb5b372e-375f-46fc-abda-f25e9fdb6d97 82ee3235-a006-422c-bb79-f06600439b36 3e8cb0c7-c30c-4c12-9dab-5270d7b32658 1c8d7e39-8f5c-4e99-ac1f-7d9571795990 0c03ca29-f5bc-4f03-9de5-cfe9e3ef3163 cb49716c-7c92-47d4-a3f7-7cd2012bc0a3 0fd528fd-0ea2-4214-b044-083799cf0220 a245c269-0f4f-4b83-a94b-337f10c87876 b828d0a9-7e41-4054-a607-1f40c8a2aaaf 6eab7b9d-f3c4-4bd9-88a1-497327263644 4f1c0629-d987-44f4-a76e-6d4dc1b1850b a84fe73c-e47d-4ba5-93ae-151c5bd5784f e246f39d-bc6a-407e-b825-4dcc113a80f3 71d4bfca-b67a-437e-9460-c458e8e127b9 639d8184-194d-4aff-93cf-4ddfef799b52 02402bfe-2393-4425-a8fb-b25536cce420 2dd96e20-d5db-44f1-b8fc-14d928a02c3d d05fb36c-4a4d-403d-b88e-6fbdccf34119 f695dc72-82eb-4e85-b6da-5fd1b9938330 780bc0bd-7b61-4867-a827-10d4d6ebbcf6 88655a67-b776-4834-91e1-13cbf3bd400b 20c997b7-a2b9-4c0f-812c-f8eef9a15da8 6fd635f4-b0e0-41c7-8f14-f74c2108ba5d 07f310bf-d5f7-4ad1-ba3c-ece8c97ccd00 805d2da5-49d3-4fef-ae22-abfe1eb27c00 8c98b59d-71d2-4af6-9b73-4822f9b124ae 35c3aab0-9f37-4005-be0c-c83fabc5bb98 ac0b6fb0-5a86-408d-8e6d-eaa386a017ee 55dc8ac4-7c50-4d0d-8bb8-e64406fbd22b 60e95a56-09a1-49b0-9a16-5f5dca6af6d7 fc76b4c9-9efc-492f-ab49-89b1456d8db9 e8d35869-e794-4a18-92f3-aea119c8ba9d c3c669a4-a376-4d8f-8d57-b301800b4ef5 448fa7ae-4f4c-416e-a3c6-fc39650a35fa 6d8fc312-1d85-4b6f-b9e6-d8ef4a59280b 613d727d-03dd-4fc9-8bb3-08b8be7ba0d9 a2561563-fa80-4e5c-9dc1-e42bdc5f99ec edaa66be-89bd-446a-9aa4-c4e130c8a701 a38ed61f-0326-4f4d-9893-97a689e64092 11e77ac3-4b28-43e9-9edd-4cdecaee97e9 9a906c1a-3f12-44e4-a159-540be84175ca 1e7bb134-993a-4b0c-9861-eb744630af04 d89cc551-6917-4be2-a046-1e72badc86ca 08a9c59f-1dbd-4f58-9281-0abca644a7b5 fc23f338-7570-4baf-bd12-55bec3ba353b d4971427-5077-430e-b34b-2736dfa1a77c 7bd76d4a-b309-43f4-b111-cf3198d29a72 84f252fa-1ab0-497c-9439-28edf9c5302c b84af075-8551-4f75-bc5b-039315231b02 cee2aac3-0d85-4ddd-aa27-0d86aeac1eb1 80342bc2-edcb-4b15-b3b5-a97a200eab38 ef6f5aa6-d841-421a-8b34-0f6199c3c505 0c5c6399-02e0-4dff-8d55-0f14b936f333 27380f06-805f-4b53-ba61-9940afa6d74c c13261bb-fa45-4c3a-96f9-e1fc7cf8b866 e6f5ace2-8e6d-461f-b00a-9c0d41909546 4a6c3911-c0b3-42ab-96b3-47873577dbe8 e26750e5-3456-420b-8227-be19e4576296 cdf30531-81ee-4325-82b1-8087745811d3 fa42004a-f8fd-4b9d-9ffe-1fa709bfc505 9d005b65-6442-457a-8588-4cf7fae4f407 c620d758-4d28-4e12-8ac8-b36f2bfda440 be502184-6e81-494a-b236-061cbf9d45d2 8776194a-43bf-4bee-a666-8564f64d8110 6f3a1164-d330-4816-9677-123d57c9b2c1 463c0964-fd73-4659-9a59-b5e8372f97d7 afbf5d22-736c-4ba8-93fc-b9d05756adb5 7763948a-7eb7-403b-91c8-e1ec1b61ed9a 21679aa7-db89-4820-9d59-7c7df26636b7 ed5cec0d-cca6-462a-939d-5539630d9f0c 3c8ac785-8af1-4229-816e-d0265ddf73e4 d2aa725e-63c8-4970-918a-fc0b5c30761a 76b4d3be-dc7b-4097-a0f0-e9b5b87f99bd 1f5d2efc-ba42-4fda-bc1a-9a2cbd20e9d4 83982eb3-b9fa-4f1e-b3f5-f0a328fe087c 127ceab6-0b41-4943-9f6b-84c68021f8eb 659a832f-f5bb-48d3-8038-4803a41d5308 194964fd-1681-42ee-940d-b8ec46f0d42e 137d7f03-e836-485f-9b11-237e4622cbb8 0978fb99-37e1-407a-aae3-98c1dcd205c3 72bb6748-ee5d-4b52-bf40-8bf72ba473e7 208b01e2-f0b6-4581-9602-29252515e062 e9825263-3003-4308-bc48-a95612a5639e a607b63a-9b22-49e6-b42f-749adf239250 2e2e4546-d74c-466c-bca0-c5d7cb3655d1 a8ca6fca-1787-4bec-914c-b3b0358400c0 7a02798a-5311-4b5b-b7ac-ebf6e282df9a 17534ee5-98fc-4176-91ff-62fb9a223cff 6b839025-c36c-42ae-b7bb-4156a50d86e4 952f87f7-5c5f-4738-a64e-5c2fc3fafaff 2f5674ef-5677-43dd-bcf7-070b8f24ff7b 7fda78ae-c188-429e-86bb-5b66b83a7e26 1457e361-9def-4cca-b53e-2831abcacaa0 202dfc6e-9d91-4a76-bc81-ed3c5cf6481b f2841863-43ab-45b7-9047-ce57ee5247e5 4be7873f-c228-40a2-a0cd-699b4fed9cc2 cb7cec56-ee21-4545-9770-e9c1cfba390d 0f993c81-dc3f-49d6-8225-bd119782edb6 dcee0ca4-7adb-4a00-8e6d-c7a6abf79e63 797aaf4a-0248-4367-9126-a25433dac4d8 c447c2fe-21a6-4a05-bfa1-270788f4a654 06347c04-e729-429b-be05-427c50281a14 8660a0ae-23fa-4d34-adfc-ee18988455c0 da3f31cf-ad23-43dd-8d45-e82a6578efea 83c2c8df-70d6-4127-b409-f73c562b09a2 c8fae4a4-c659-469e-95a1-853ba54468f5 6fb04f2b-eb5f-4f3b-978e-5b54530eb579 ce096538-49f6-4b98-b491-b809294325d2 2e91e96b-d777-42cd-af8a-ca3334a90a96 5f4b80cf-a8b9-434b-87f8-01bed8858146 12077c20-a570-4bec-9eb2-4a863af025ac 60af4655-a836-4143-8692-7d468d9126a1 b1041705-af48-4512-82d9-a3bd071a9466 88a87d7f-ef9d-4bfb-a273-7b83f659fd98 1e3a684e-e9cb-4e68-8825-a725ceb60bc7 4d0fefbc-3cf9-441b-a328-88f98a50dc7b 364ebe4c-b553-48aa-bd8b-facd52304e86 456a452f-0cbc-4ce1-b283-6f9e3774cbf3 3a8cda2f-0f89-48a7-b029-1e3c6e47282c 1893c8e8-f74a-4951-804f-1878c6c5351c 79cdcac0-af44-4375-90d3-82912f5c501e 6e5ca387-4b15-412b-9105-1ac2be4b31c7 1912d88b-8cf6-4217-afe3-cca39f58d655 514a8ecf-76e8-4db7-a1cb-4eaa53ea89db e0e8dbee-57f6-4230-9da2-36ceb9a4136c bd299f61-ab03-4529-9301-4d142697a058 8044faf4-e251-44cc-84c6-ca2125275f99 ea6f81c5-3a7d-451e-8333-265cffd81038 9b5a6ad0-24e8-4985-97c9-c441bb8418b3 c7b10e00-3d66-4bb9-a537-ac44aa128dd4 db36a2f2-1b9f-427a-9a96-59f90a5b5e83 6441b845-6718-4fa3-9938-b166104df968 d6159d79-290a-4007-b7b6-50e20e17d942 c8151f05-325a-4214-92b4-481170daa42b 7788c201-a973-48ae-acc8-92913e38b13f e51238e0-87a1-408a-b696-5cc34e87c1b8 de499f90-2ff3-496b-88f5-40c16cd5fbb6 0dfef45e-d95e-42ba-8f93-3f69324a74ab 22590ad9-3b5f-434a-8f7a-e65ae94efe34 1bbf0f8f-3bb3-48a6-86ae-d774a6b1a1bd cb7ea00a-679c-4d82-818b-6798bb66acd6 2d06eb10-5a9d-46af-aa26-f815b09acdd6 d18109b9-094b-45f4-b229-a1088d62f2c5 699bdd91-c290-441a-a504-22b48484dccd c563ab79-9dd5-4f4a-b97e-5afc7485c1a4 59fa77bd-d013-48ae-add6-70076c0eab07 8829a60a-a38d-4061-b6c7-e79c1aa415ea eabf5abd-3ad7-4460-b614-3eca9bc62230 e395d792-875b-4e02-ab54-ef0619652edd 36b8d1d9-0438-406f-86ae-6689a62c1bc2 e7477ae2-498d-4b8d-b1f6-876116272c04 f4ba5206-0a38-4f96-bff4-f1e9d93def6d 78f10437-fcb4-4080-98b7-41599ae994c2 fbc481b9-af3e-4d75-8e01-131d6a2bf9f4 47115f30-6fc2-4c57-9a75-2d6c6c0a084b 104b67c7-1703-45ad-ac11-a1035025b8fa daf3ad5a-2b00-4298-ae0e-606d956fee1d fcbb7470-60f7-484f-b37d-2f5a5faa6d34 c9d9b1c2-b4e9-4915-b6c5-200fc20ef388 2085a4d2-e256-4534-b9ce-e0b2bdfbfec5 3053615d-0a6e-43a1-831b-5733690b64c4 0f89a65c-6bca-4353-8a5c-e8f47ee5804d 8abaf8e3-b4de-4be7-b788-b2759d8bad33 ce958aa6-fecd-4653-bfaf-0be06ce94c96 adc65151-c9a7-4870-952a-3f7f268e313f 4bd47a6b-bdbc-42d1-91ce-e883f20985e0 515e72a0-7901-4ba9-9200-50200f112182 ff5ade1f-c528-4143-9a76-766c33cf3913 6c343603-26ca-4c2c-9e89-e7bc52d8b0d0 fdd28137-481d-42d8-a744-97ab777d427b aad1996a-d000-408a-a38b-e63582b6e004 87ad63a1-21fd-4768-b22c-5caf16df2879 f8cc7d91-55c6-4b6e-a4f0-cd54d02db4c9 5a2d2377-b7d5-464a-8216-3deffae313a7 c215c2f1-6f3f-4330-a7d9-6a50a20af278 85b68ee4-78f6-4f4e-a20e-f5059b9bf3a7 bd20dbf4-ad04-4b96-a5f7-1adb30cb4242 2b818887-ba99-45bf-83d8-91bd370da191 387307aa-3dfd-4e12-b969-24ac44e80050 5a96bc77-7eb9-47fd-a2d0-8b1abd9863fb 61f4b96a-e6e6-4863-a881-2a295544ad31 168e3e90-3a6b-4274-9523-9251b676b8eb 1b41f656-f206-4e47-83c3-bad8e80c306a b7322123-ba09-4692-9ac6-9cbeccd94544 5e27927d-c1a0-4a47-a482-4bbd50e8e806 4bce2430-ccff-4986-b286-35462508f70f fbd5ea40-c450-449d-9f2d-e5991c4af0c1 3c7142e1-6805-48ad-8f7f-16e9b7bd9a5d 40aabbb3-ca92-4bae-9bb7-6b51fe77016c a7f50ee7-f080-4759-9cb0-0d2a60c38ec0 c4cb5e4a-ca88-48d9-af56-d6c8705e9357 272d50cd-0978-4cc8-be74-1083d877a946 c24035ef-3c5c-4297-b724-9a9c6fce1b90 b2cd8083-0e9f-4fc0-a1df-10e0a50ddefb 2015ff1a-5e25-466f-bfe6-2cf42b68f4f9 99b68f77-46be-4659-8ca2-ead54b7172c6 450687c9-3162-48f8-89e2-7181f1a3d49c 2d7f6653-fe40-425a-a0e8-63f49f7b6688 58806e25-2f80-4e33-b82d-042d1ef2df04 c520870c-6d32-4a66-a0ca-d470042b1900 d04d4330-b36b-42cc-97ed-110366b39d41 6756b8f1-2ca4-4e01-aaad-3db19fda78b9 90664627-d04e-4b73-b1ae-57a822998033 7f87a97e-c5ed-4c11-8f52-a4364c532c54 d6c3ad7e-21c5-40a6-ac9d-4bd47a5a9ee6 e409c813-66c7-40f9-b7fe-c05b2d0114f4 2c962264-8ee8-4d94-b57a-c4038b60fae5 d1ef3c0e-baeb-4521-a176-90c38af632ef 45e6600c-8213-418b-9fc1-30ad9c6bf5ae f3c666b8-053a-4025-a552-325eb5bf61af 96267585-d00d-4d1a-8d71-8c8ea153a43d 93924be4-5980-491f-975a-e4e15a184c57 47ef5ca0-dfac-41a6-8d89-c487590e61c0 6fd369be-1ca3-40b9-8b03-d89ce1c0dc51 41009d2f-03c8-4d16-b95a-5ad82f7c63fe 013402f8-4dda-42ae-9ffc-92f9db0216eb 00950bed-2daa-463a-9f8d-c493767beeed c3b50c33-662e-406e-8862-e172ba3ba2d3 79ece7bc-38fa-4d06-95dd-13dbdf4dbd48 dc570bf9-12e0-47fb-9437-a5db6e451cc9 d6257cda-e30a-431b-9364-6e325ac280ae 7ed7f23e-256b-4a1a-97fc-cde5558b4ba8 0622a609-3e20-426f-95a7-d20683e4a15b 33990325-b1fb-42da-ac15-0a21aad11b60 3fd0bb9a-6c82-4d53-9258-ce7a1f4df9c5 171a6524-b4f2-4159-93a1-9ffe658a87d6 5da63c33-f58e-418c-a6d4-36443ad07994 2066474e-fbe7-431f-bf43-b2885c02372b 8fef1f61-ade2-45f3-9409-7f966308a2c2 65089a82-2769-4466-a779-32cfc92c82b2 65d2d91b-57d6-451b-8544-835fc8fa08d6 ca3eaa90-a612-4220-92a7-b2f7dae3c456 67a28502-3783-472e-a9fd-9b35457286b3 6e0b1edd-ad4a-4fb8-9edf-0a685912ab53 078bb57d-7f36-4bd0-bc1d-39c62ebaf016 833a891c-892b-48c6-9a91-52f41dc557f9 94e70b6c-3f91-4d75-8d7e-b3e41f9591e8 d3b571d2-aa41-4e9a-b005-dc6fb37b8a22 111d6907-cd06-490f-ac60-de39e761f13c 3918ff67-9b98-4ff1-845b-8508bbbf3f84 ab454a22-263e-4f81-8180-674fe9db95a3 2fdbedaf-43d3-4823-a737-0cddd908e911 04216eef-7f25-44ef-81db-b30304023aef f94e4c30-5e11-4f8a-b7f8-9e819d27f717 22cf52ea-f7c4-4e49-b6b7-e4a47b70b285 f57a7d61-af27-4773-b62d-c87fb03dfd1c 060199e1-a02f-4776-b521-8745ce616922 ba0acbd6-7b27-41bd-9ecc-e3263500c404 c5675ede-b90f-4e2a-a4c0-c361a9bc4dcd 0072942d-157f-4fb8-a516-50b44297bbb1 1f8ed30b-faf1-4b4c-8f3b-36b0a9519b64 27ea09f1-703a-4f48-be9b-467cbfe2c683 203de515-c705-4ff6-ac4a-5266cd07af9f 66950109-3a53-4c36-8554-fefde2f350b6 24d2edd1-0e7f-4718-841f-1bbde12a19a1 b1e7fe6e-7b48-4478-8aa4-e11a0ca5df64 94f2b661-db6a-4440-a5c8-de20499c54ff 2f23f69a-86f4-45db-8da7-a4a51d983030 e2249cee-4f56-4027-a501-1af1d71983b7 c172ac77-0968-43df-bfd0-1f770b22ca32 56e7445c-eadf-4dd3-9dbb-fb2259ac60a6 7e91a47d-fd44-40fd-a63a-5abf31965fad da444b52-b8e1-4029-913d-c2579d62cbc6 84ba685d-14a2-45a6-9396-0d1b124ccd6d edd6936f-4b74-488e-9359-31d0e4117fa1 0ffa0572-5049-4d45-ab68-97082bba3cdf 91bbb158-65e4-4684-b60e-0af6ba1c49c5 a62c8255-4504-479c-b89f-eaf427c87a6c ae133529-b879-4733-9a8d-dded91fcc890 6275219f-d993-4441-a532-154e5eb487ce fb5daf29-ac0a-48e8-b92e-2ad85ed3fac1 46da57eb-afcc-4ace-b816-64746c425e36 04f5bed7-eab2-4719-9dd3-0c46d51cd688 e9374d58-ee76-43df-acf7-0a659a6352be 7100587d-733a-49a9-aec0-704efa081ecb 56b4bc1d-840d-4948-9dae-e5f90d2f3fc7 76ea8773-5e91-485b-b271-06fc9b3f4e0f a815bd0b-0398-4fa4-8d6a-692a7cfe2a6b fb67e478-f7f8-421b-bd8c-422b09f6cd4e 37c5b476-6a7c-4127-b149-73af31383df5 066c3c26-82e0-40bf-a6da-1401fbca71d5 07cb96b3-6f00-4927-8ee6-d98377d0a140 926f064e-d132-4621-9451-456386824bd7 dddda20f-914d-4fd8-89ce-9adedebffa3f e35af44f-fa5b-4022-b785-adb0120fe0d9 d05a3c0b-a8d9-4695-af72-657af333e96f 8f1e1bac-6bec-4367-8d8d-471d6ba47b35 7e0eab25-dfc0-44b6-baa9-41dca6781bf9 087cac66-46e4-4097-a2ab-658d677c7f98 f28c45f1-2a59-4287-86e7-f7b81a2eeb9c 1c4501cc-8b12-4104-8e0a-188176b42b3f 200815cf-3418-4c52-9781-51e3476f7b00 cf1a2548-39f2-4a31-981b-7bed88b91c49 676864ac-9d43-4fa5-8372-55ce95f7bca8 bfcd8b3c-125f-4bcf-99ca-9b49650e2a82 f1960e47-762a-4352-8bc5-09dab7ce4343 d237ac1b-aa3c-4f66-8d8d-7a9e972bfef9 b6fef039-a266-4b2c-9295-8d0df1780d0c bb171cc3-9f0a-4e70-9c1c-f485b40da7c7 541d41bf-935a-472e-99a2-a14121f4f336 d65c8007-9e6b-46c3-b45a-2f1852f1f5b8 2d84897d-aab5-497c-bb7c-b7cf75d9cce2 455fe7a0-f73b-422c-bfbd-992f32788b56 1bc96c1e-b2af-487f-b499-8e3902552226 73d2bd5d-537b-491d-ad7f-dc9013dc95cb 9ca14999-65b7-442b-ab0d-e26e7386085d 5e35c418-672a-4a18-8310-8b185e1600ae 35d993ff-e4ba-4002-8309-28870850d8e8 7dbe6a69-e9d7-4e7b-a178-9900c608a519 dde2dc5c-c568-475e-836f-5981549dc5ef 91664661-05c5-4e63-bed7-b3e537b64168 1f9d21ab-6eb5-4a6c-95c2-3ff93c9acdba d765ded9-dc0a-4b9a-b8a3-300f711d5e7c 10b0336f-118f-4a01-83cd-f6a9b5754388 64012816-29d2-42a1-b422-922d7882043c 66e795d1-01e5-4e14-a6dd-2c425738a062 d780cda3-6aac-4061-8a69-aa0729aadb73 3017422d-0d42-428d-beb4-963f481d9e02 d8dc4191-2b66-4bef-82b2-4a9a7b0495dd cbdfe072-e40f-4b74-9e43-8d55a913df5f 36f86b40-37aa-4ae6-9208-1d87408ede4b 89ebac7d-1eae-41ae-be71-ca9312579265 50c91d5b-8fd2-4520-9823-92a4f377f20f 823c2072-2e6c-44f7-b665-0fde92a3914b d556a4d0-3be1-4752-947d-6e1564a2c7e8 644c08e7-6300-4dbe-9ba2-af71936a6ed9 f2df6dc2-bf8f-418c-9752-304729176302 a936bafd-7d5a-4498-a467-10b004889e32 c54c1fb3-7846-44b1-a59f-6a4ea496b770 689fce33-7786-4c91-921b-3265b8f5d9de fdb6a4f1-9885-4c81-8a53-b2a7eba4fe3c d6dd2428-7e74-4c71-b3d5-c157c4ae0202 42bb5d59-5caf-4f77-ad2e-b6da962aa005 19f6ac9e-ffc8-40d3-bbb4-117035ebcbcb 9232ba80-3eac-46c8-b69b-3a0905bc71cf c3832acf-9006-429b-9fb4-2fae6a33c0fc 8ea398e8-d898-4fd8-8734-605c11620c47 82adc9df-4e00-4b3b-b10e-0def633f270d c0e43d70-2ed5-4b9c-955a-42794860923e 7b7d4482-69d0-4ead-90a1-cecb8366b901 e94ea0c5-41b9-46ee-9ef6-6bbfd1ecc8ea 4dc34a85-138a-4ef0-815b-0bd3647ff28e 71bd4e5f-5869-4497-9c2e-79405b35d38d aebdc54c-35a0-4e28-8a8c-3b201f1b7a63 a58fa6d5-a6d4-46e5-8d9e-d00f3346d0df c34a8969-d3ae-4c7d-95af-fbd5bdb44e93 efaec864-f26c-48d3-802e-b36e8d34d849 9df745e2-56d3-460b-84d1-d1bd7e065a30 4acfc00b-86df-4683-bb14-a6d8e892243c 5e8b1e1b-5432-40f4-8d5d-6ec0429d164c ca22d2dc-d015-46a3-a83d-6b0e88895206 c83809c5-d758-4226-ab0a-a0c90aff1417 516a4183-d927-408e-b0df-2413a1e850aa 7af0547e-7f68-498a-a97b-664552b284a3 ac93baac-75b0-4aee-b5fe-732c68885920 878555c4-0169-4573-9970-e39041a21c09 91810a77-3c17-4550-918d-1f104851d1fe 30026583-2e4f-451e-aaf0-bf5013186c7e 5a7b3ce9-82d2-41cf-9f3d-705ea0141df4 60b684de-3116-4dd7-bbf7-b79eeae786a7 1b649c77-bea1-4f4d-ad4f-b925cb7a1320 fe906050-b9df-4558-867c-a70b788fc281 642ff2f4-8f19-4157-a6ab-65c7474e06c0 75eff250-4043-4762-98c6-9876a10d9606 2ea387c7-b11a-407e-81d1-9f1fd9c3f0c9 0fba3b58-882d-4e7b-b1de-518bd42696cc 516fc4ef-e22f-4289-8949-530f3f712288 3262c27a-d399-4627-aa2a-76b7818f0fcc 683e3d41-82b0-4953-a264-43207527289c ff4bbb56-edb0-45b1-9991-ef40e7b421c4 4bcceee1-6648-4de8-9035-498685c4d316 b17ed1a3-ba2b-48c5-9083-10e4c4fdc957 8beb0732-3891-4f0e-954d-be3e146c3468 ece72189-e2cf-46a6-b3b8-311b55de8286 5632d49f-e89c-4767-b4e1-704329262f2e a9dd0c6d-3968-4d32-91a8-ae7d969c1294 89e0e128-6db0-4361-a2a2-44f624e5209f 2862b1b7-b901-4853-837f-a9deb3fc6b64 8084c9a0-bf15-42bc-be8b-cbf811399b06 e38c76eb-8469-42ac-8164-5690bc9ee525 00db1f4f-a1a7-4a45-8d11-ad9f1c9e3590 64c719c6-c23e-4d7c-beaf-3e2c992c346d f2ea18cf-3e7f-4486-acb8-999822c84d70 ac66425d-8c54-4ba3-84f1-b4d5a409eaf7 3de0ed86-a2d8-4b38-8f1d-03c6191fb796 be5e96e6-ec3e-443e-819e-afc656e9f9bb a75e70f3-a16f-4d50-aae3-9624c091899b 5bfbdfa7-99c9-4814-aabc-49fe8b773524 ffe33db9-2af0-486b-918f-51eee7f19c25 c67bd623-0f73-4526-8a4f-1376156ab9c6 cf2aad33-174f-4e92-8924-7bad9a7f026b 65724a19-d09b-4d6e-97cc-0996717876c7 ee06988e-d020-43eb-b03b-3bb7952f22d8 1f282d77-3491-48e8-9b59-6e3ef5add60d ad4eea0a-c09a-4c39-9b4a-a59b64e5c793 168fffce-2235-4764-9ead-41c85db42a23 3160be6b-6e7c-46d9-bd5e-bfc7f31786f0 0c85a0e7-d122-497c-872d-47343b4a2794 ac4c90c7-bef5-4613-a2d5-084f860ac3d2 48878a12-b562-44c8-ab9e-cb2b7ef7e68d f870aa4a-ba16-456a-aa4f-47ee9b79c841 1499b7bb-6430-4ddd-924f-bd4f2dc15c7a d868d2f3-38ff-4518-a7a2-9d090f85578c 750ce7b4-cfec-4331-997d-7ad3d06fe057 614c690f-72dd-46ec-a871-711c829fbc4f c3f73870-0293-433c-b41f-340c90a84883 d1f8d7c9-fa3c-4f62-b34f-819b76f10e38 643d1f86-b348-4045-980f-ead782b58831 d879d5e4-5b66-4c6c-bac0-f6081c6956d3 376f286d-1577-4270-a281-bbffc90ee63c 405961e2-6ae2-48e4-a711-312d4dc6d025 8267dad0-cdc8-410e-accb-6eeeaf7a0a31 6f23f61d-cebc-40af-b676-117adb543b92 42728256-13e5-4550-bc52-e630e679a74e 071ab342-f9b9-4c1d-afdb-d915854dda09 b36d4dcb-e838-4add-8c15-dff00f64580c ea8ca680-aaf7-4062-93e2-552f97ebf67b 00c2de13-a6d8-4f9d-9dea-84b22d73b53e 7463a6a7-4de9-4fb0-ad35-cb8aebb9ccca 3143f140-3203-4547-91f9-feea53717eea 2545a675-bfce-4b7b-a47a-95ee69d66c8a 542ba50c-16ac-47fc-882c-f426add65b38 58113a5d-5f59-415c-ad1b-f76c7947bf39 9781e133-a180-488e-bdd9-6798d6f9eb80 44fe391a-b05d-4bb0-b0cb-53ae59726b7b 25b61bba-11a7-420e-b7ff-24ec1032df5c 86198206-f5dd-4a8d-a114-45ad4982418d 22f3d33f-7cd5-4b5d-bb4b-687d4e6551f9 6398c945-586b-4ca9-a996-80900f3eed7b a64c68a0-76e8-457c-b15e-230b258d143b 495ff85b-4f90-4a9f-975f-86a2341ec71d ae312308-df9e-42f2-b278-0a73d7d965cf fba81e4c-926e-4c72-879e-64ca81480c40 e3b41bf8-e9b0-466e-a1b4-797141cae7e1 bf8d4d28-228d-49c0-aebd-e8f67f0e5caa e080d40c-fdc8-443b-b0e5-c90b53e331f2 ed720290-44a3-4334-8d7a-49a92e40a807 35fcb4ac-36cc-42e2-b4e9-2e1b8e56f912 c9882aa6-20dc-45ed-9d30-1e3286f7b084 291ffdf8-9943-43de-a4cf-b376a4a0327f 7f5763f2-26da-482f-b843-fe943780d45e ef67abe3-b584-4872-8825-f9d3af8e0a38 74752bbe-7b45-4cff-a372-b7c307b0bb7a 1b24b7b2-c1e8-4ce0-a1b2-293ea5ce092d 2537f2c9-cae9-471e-84fd-f805a52ff83d 5f18842a-52ec-4729-92ab-23d8836b3582 0d4f7943-953e-4447-b2ed-695cfd102642 32fa7f56-44f1-4294-8359-19d9884fe13d 9db028dd-1d7c-4765-acbd-dd7bbeec8f3a 5c02b8eb-f9b3-433b-b768-63941f246b5e 2f301bdd-08f2-4c4c-8fe5-dae8a2e634ed 382706a2-9543-4d4e-b008-339c11ba3d85 e82bb1d5-a1c8-4259-9970-39634b107fa4 749df9f9-aedb-443a-aad9-8617c3263b81 6bc7e943-83df-45a7-bd3d-cf4c511ca77d 8b4098e0-8180-4898-9e15-1bcde4254e2d 75c1a452-61df-40f3-8da5-1e424ab58d39 76ae523a-9eb1-4b93-b4b0-ca75924ab2d4 9dfd10ef-0a88-4bed-8f20-c7558c5f1e41 12ff926c-9f44-40db-866c-208ea760f69c d33afb31-c9a5-4cfe-b43b-1b9670ef10e1 ce9a731a-821b-41be-b7ef-ff892092005a 74f40710-f056-45ff-b94e-97e6d998d0ee 8702d7d7-c48f-4ce4-a625-ee2aada68ca0 1832e579-0a0c-424c-b6e4-9189609d61a8 13c16c1a-5a23-4a55-b405-d3339afd7888 1a113beb-d9f3-46e3-804f-d3312c0c92d4 30cd4a45-2244-47dc-bc5f-995ac6deb518 9a9084d6-0802-4d84-bd0f-c580b994c84b 876e3ca7-1979-4115-9729-76f9046a24be e90d1ef3-dbf7-4418-bfc1-5f49fb319193 e3f18aac-ae0d-4151-a6bc-df525f30b87c 36a19e5a-a8b0-4f80-a4cb-471b398a0bb2 c19d3d9b-a15a-4193-99d5-0ac6839c0582 6ddc50eb-e1fb-4cef-b46a-0cb76cdd3f23 168a27d3-297b-41d7-94f7-04dc35aa1194 a3c7965b-cdf9-4d3b-b78a-81c66368c9b7 7239722e-27d1-492d-9fd1-57bb20d5f19d 18cf1534-11d0-44b8-ae5b-8508d2e2b9bb 25834688-96ce-4214-8606-74a6f99f7c7b 20957c3f-3b99-46ca-8be9-687a87b48bc7 e4cf24e1-58b1-4985-9d9c-fc243bee6279 78b216e8-3c53-4305-98b3-dcd8bd7ac0c7 c6e93f97-a9ba-4280-9ed9-8a3a54428e5a ab1cb083-1d8a-44ae-b5cf-e745acd92ae7 2bd39fdf-ec83-433f-ba29-036813faf13e 43e34b87-b40d-4793-a2af-41a15344581a 6171a466-fa91-4185-a60e-4d58e5b0050a 64336ff9-5028-4e93-8df7-55c62dce063a 32fdc17e-4432-4e67-9643-e7da72b0ee1e c0d6fd52-5cbe-46ed-875e-5303a90d2f65 ec393b30-e014-49b9-9133-255095aebf52 8c1facfb-6fbd-4a07-995d-26aa7b2b5517 c6e2b7a5-4569-42a1-8682-474fe627faf2 dbeb1699-b2e2-4f12-a064-9d756eb955b1 d1c20e33-6397-44f1-adca-7d07a24a3a99 ecfdd7dc-3024-42db-8daa-a54b85c5e0ae 8a9880d0-88a1-4edf-ab44-a8038becb681 f31b31ac-3f84-4b13-8f36-d182ff6e366d b16aaafa-1b18-4944-bf67-8a094c6f6c9d 547dd68c-b785-4e95-9a36-75cf26c22cf1 78c1ea4c-c456-490c-b112-c4276a653982 912aa891-6458-4701-afc1-254821195f39 1bab95b3-1c02-4de4-b450-224b247190e3 58cfb05c-ae43-43d2-b2b5-e1212a0d672a f8feed0e-101d-413d-94d3-281a7778bfed 56de4aea-0026-4bfc-8c43-9ea23bf39359 4896000b-7db0-4273-9e54-e118f5809dfb b0ce626d-9ba7-4bc3-9d88-c6ca36b92a34 893a37df-a3dc-474d-a537-37b96d9ae571 fc0a581a-ff65-4cce-bce7-a494ab432423 bda8d270-7c3f-4d53-aef7-ab817a000e36 9346cbcd-f55f-47f3-ab12-9f2174373052 c53357b4-59e9-4e5a-8e60-302d654b06ad a78aba6e-0fc6-4d49-afec-602151242577 ec6815dd-a8d1-4ce0-b67a-4c4d1f9f6060 873342cf-ca89-4b00-be0b-71edfac07a41 eff236e2-db88-49f8-afc2-5d79456d186b 31d20252-5564-42de-85a3-ca3ac031ca73 cd67cc63-c68d-42ec-86e5-4baafe9d91ce a5305aef-bbc2-4672-88cc-c4e1e83a82fc 1f78f904-67d1-4a5e-b8b8-e917b0b99ec1 30ef1399-6877-4cde-b0bf-901878fddc3c 52dd3c4b-ce4d-4d19-b3df-9b96b26d23a4 0bc8dd67-966d-4336-96eb-3ac15d35e355 9c0065f3-982a-4fb5-80ba-e6ab02365847 394be73c-f30d-4b9b-99d8-371eb8bcedf4 e02fa7f2-55b6-4be0-a0b8-e1d132a1eb09 b4a67ff0-6d3e-4ed3-8c06-7c0d32f90dbb b4509257-415a-4ce5-83a8-3b687c102274 e7d7d31f-64ca-4da3-a34e-26bd2c48776f 40071ae7-ad0d-40a9-88b7-7e4b8e7fd153 787349de-6c43-489b-b6de-56c6df6f4117 ae09593c-0b2d-45a3-8fed-d05dd911ed8a 55fee1bb-26ea-4af5-9449-34078e96ec6a d3a402ca-656c-4fad-bc69-8d112ee9164a 3c43d003-a546-4973-a9ae-140cc92ef8d2 7cd91e08-66db-4a74-ab58-f3e25a6ad50e 12f1d975-8938-41a6-b9b5-67499cefc23d b7fd6881-8d29-41f4-9758-f725d53a1ed9 d3e61bcc-ddf3-4746-a870-7375556377df 88e0c623-f667-4b17-bf77-fd2aa5e82adf a3c0bec7-a6b5-42e1-8e17-21001fe4237a cbd0f636-b3f2-468f-8aee-aeaf1a5024d9 162cfda8-d93a-48e2-84a9-d473647f4c8f 9914cfc1-6848-4229-9fac-aded9f46b234 d2f2b555-3ed4-4fd4-89fa-3923a17e0b64 e33fd9a2-167f-47e0-b774-b2b2c0dfc5d0 0434b747-796f-4681-8f6d-86c3d5fedfb5 b57bb73a-72f9-4346-9930-805c55ed72c5 30616c6b-fc9d-4cb7-abcc-f1724c973d57 b50a0d31-2180-4d6d-966f-5941a07bbe67 4d02429f-057b-46d7-b33a-5ca2884d3d31 bd6a3105-fd72-41c1-99fa-caf4c0c5f958 25d39c1e-3693-4136-850b-deae8310de62 8cf4bd2b-f3a7-40f8-b903-3c6f5d1919c3 e9445eca-f2b0-425e-b86e-7c37d4195bc2 d99239d9-e6a4-4c82-a4e7-7df79a4da64c 79bb9790-a705-45ed-a851-bc06760b599f ce1d3f6f-6b67-43db-ad44-ffbb5343b9e6 c7676352-db59-4dda-ba37-1193462e992d 5e681633-bded-4585-af12-ac37a1d13eb7 472daa62-c7ac-4bb1-90d9-1e44dc8235f0 d3815627-fe6f-466b-9048-936f0f2d7c68 cdf35b0b-4239-44ad-b530-4f6d3ef75144 d66ed7db-b274-4d49-bad3-293bb91bdc33 95608e38-f6c2-4f1f-ab9f-3608cb0b5ede 51c04ea8-995b-4e62-90bb-fa540afd4eb0 9b3ddc2e-43cf-4aa3-aebb-a5b2feb80b69 208768ea-a026-4147-9f8d-80947b1ad88e 1d14f6ff-0d26-4b7c-bae4-4dcceba96a99 b6a263fa-9b7b-4527-a390-ebf03349aa97 1be4a727-2f88-46c6-ad3e-a05152c4caea aa47cc20-5485-4c08-a003-0a2180cc2baf f1bb03ba-e70a-4ce4-98e9-742f490e400a d83eeff3-3be1-4127-b910-d0b7fc2577ed 89add72c-6dfc-4c43-a95c-3fbedd33d9bf 7135c334-ec63-4f2b-8883-6456b2faacf5 102e5295-8274-4ffb-afc2-4a5c05971826 e4bca559-d87e-48f3-bf94-ba93f23d5128 494ae494-e205-442f-babe-0ed4b0148e2e 902a9f27-50e7-4561-9403-78e2c55c6760 cbe1fb81-3484-4d8a-989a-9e5f4d95aed6 cb995a54-55ae-4dd5-9e68-f9215463af64 f52f2913-bfa0-4e9d-beb1-439b55036581 9c03d71c-b79d-4ba4-b5cc-7e7f187e4aa7 84693a3b-5a34-4d97-838f-6ee36bb5395f 0458430d-12bf-4f90-88c1-cd2fb2bfc10f 5f187e0d-cf5c-406d-a3ed-6dea71b918d0 d4fd3ca2-9146-49b9-9f24-1cf351927673 2a57fa07-e39a-49f5-b4c8-72b310ffc7a4 b1eaa659-c4c1-404f-88ea-cfa8da4fac04 429da201-0dcc-4c60-9b8e-556b5ec03380 644f4c00-d215-48a9-8470-275260200a86 e3540f4e-b724-4d04-8ad1-8390e6e2d2f7 a85c1261-64ae-47d2-b726-2a92acd14e44 97ec3e74-cdbd-402f-a1c5-3b7e5a69e17a b1b75145-c5ba-435f-ae30-b83f89bb21be c1696759-5894-4357-b79d-955b87493095 5dfc2339-3c15-47c9-bde9-ef8bb4d45b26 7a10e7e6-cdee-4676-8d13-63f83a608595 3c446f5f-4133-43cd-9463-e6108ab97b34 23c62a07-0d78-47b2-9280-318928538f65 73ed333e-e963-4b2c-80d6-2ea34ea08d7b 284b8f2a-67f2-49a9-80ef-2d4d1bc254e7 0a62ed37-8e6f-4ec7-bf82-cf63933a48f1 30672176-a9a7-42ef-a996-0a4592033323 6066f180-8711-4dd7-8fc4-a24cfdfd1a17 4d179768-1909-43a5-9709-af1098dfaecb 0a836c76-824f-47cf-9c29-22b93bc475dd 5d80a0ce-90d6-4473-8ead-803773df0ede 156a4893-a1d8-4fe8-97db-15c21fb67fb4 33077d67-238e-447e-91db-66e2c8db7928 d5e24c5e-a1a0-49db-9774-09d0c26bc6d5 d490ba97-0d4d-421a-b52c-12a874d34172 3e5e4a29-3f52-4b42-a61a-0fcff91d2593 87c397ff-7410-4634-9618-2008c1844ebb 3e0923b0-6f43-485d-9837-af2ec3387002 47397586-91b0-49dd-92d7-dc6525e34ee1 c5e6b2d4-6ab4-4cf2-8368-44be0b7cbd95 8fe0e9aa-6c6f-4036-808d-3ab8767384b3 4803ca86-0858-4168-aa01-6326c4a5769d d47b5b5e-2969-45d3-9475-053dd9607d86 8fcc5b71-dfb7-4cbe-8b4a-d40839061588 15a51970-02ef-4625-a7d2-ab2681c0e679 9fb88701-c8b1-46d7-ad4b-d9f34a9c49bd af0747d6-0337-417b-b6d0-553248bf3288 3b38f974-0678-47a9-b3ca-19a2cf06db16 54f00e99-4da8-4744-affc-548360e59393 c3e4667d-fa04-47f6-9452-80ff00fd9fd8 b6437497-9c8a-4087-84c6-2a0ce6415100 1172811b-ac0e-45e2-8857-d8b4331004d7 a1be09db-4ae7-4148-a9eb-90309da27339 c0f4c9df-0b19-4117-8554-52ae3d315812 2efd0483-dc43-41fd-ac82-3d3cb30458dc d3e510c2-bf7b-4549-93ea-8ca00a1c0b90 cd16fb53-982c-45d2-9337-a14fc76da96a b09c513e-424d-437b-a779-f37d2155b90c dec96e96-2ec9-403c-9f3e-e784169f81a6 115cd466-b285-479c-949b-d36bfab2b2f8 146b2900-8332-4a1d-8385-fb9aade5e6aa 992dddaa-4c68-497c-907f-96db9636dc24 537d420d-e789-4e4f-9381-cc2204db2083 7bdfbff7-a29b-4fb6-be6b-0ca7803f3a68 7813aed9-dfdb-4458-b793-640540123e8f 60e171b3-dcdb-48d9-be2b-eb4ad3348df1 44232542-9a02-40db-81f1-01d9f25efb02 a9b991f8-b376-494d-8e26-3465a63ef3fc 8b8e35c0-3094-426a-b3a3-27347d7babc7 a13c268c-b22b-49ec-bb7b-be5139644298 3925bab4-9750-406b-a520-6e2d5a100ac9 34849cfd-446b-41ce-8d9c-83f6b4001af4 0ae41fe8-aeb0-4d07-b51a-131e3b3eb0a9 cefee7c7-e267-4f97-99e7-b3ce7dc3288f 848f9cd4-cc4a-4da6-ba24-a773e2a66261 d5cd4e61-5d99-4ce4-bd35-3cfbdadcd9b3 3a98baac-71c3-43d4-8e68-5b53de7187b4 48763677-5c82-4338-a9eb-9dbea7e96eaa ce9ee6d1-45f2-4290-8e04-98cbcf4b0e8a 7e25bce4-c45b-45cf-9730-41195fcb722e 6d1a4d4f-aba9-48cb-b222-7c259e5cb238 d690db1b-c2c8-4151-b298-3a48a6eb7b1f e7a4e0f9-339b-4c35-8fcb-b9ae055eb700 935cdce3-0371-4f75-8a70-8c836ace4185 616ae6d1-00d4-4cce-a0bc-6e3f48559a13 1d780ce6-9f05-4ac6-af99-79a3adbbf3b1 c845522e-53ce-4f34-a513-96c85393dc1b 58ab9fea-fd82-46e6-a7df-6d6a2e10cd25 f1b1194e-d8fb-40d1-b0c4-2fc664a5fdcb 325f0b18-7161-47bd-bef5-5af56ba45d4d b6746755-537b-46f2-acb9-e20ddb13ff40 baac4dde-c257-471b-a5c6-9aa5dd318bfd 680fd341-df2a-4390-b06a-e6f3d451d1e8 f9820ada-38e1-4893-ae96-bcac7d4fcdb8 2e7fefe5-4f53-4690-a632-cc0628f07eb8 77ff3eac-6527-44c5-a91c-78c1dfb848f4 3b755e53-4da8-47da-9786-dbb6b82c209d d1fcdc1f-9114-4901-ae90-74c4a4ea5082 b06d24f4-e625-4e16-81b5-c44dd3528aa4 68160db9-32f1-4249-a8e2-2d3c7996b17d 914c4b1f-c588-4cf5-98fb-92a4b5b1127b ad6fdb1f-e027-4338-93d9-6f919a4b6dda a4ba8493-8568-4347-8fb3-566d95b123e5 965bd4ee-cfab-4902-8bfd-cbc6193f6eab 27983710-4d0a-4355-8709-568784c0a612 d9a9dc89-4742-47e3-828b-e8859f59cad7 7b733e75-fecd-4c7b-a1a3-e46d7861399f 7c95a5e3-a066-445a-84ed-b6f6659d2b96 7db03235-e65e-4f7e-aab5-9c457e98683b 552477f9-46fc-4a47-a177-5c93018a628c da7c930f-4c38-4615-823b-1d19b32db3bb 0b84d83f-1cc7-4427-b2d7-228b6fd4104b 161fd646-146d-4821-b146-9624764b0ab3 b77ee39b-2d0f-41a0-a6d7-aef2ee44f3d7 7e77ebd6-a120-4c72-8f17-652e2a3431e0 fd56af41-d51a-4b49-841c-dd82d468fcad 48b851a3-c653-4951-bcfd-2c3e9e396690 6ad256a6-9482-4f8e-9790-6ae82338d476 8d1247ae-564e-4c1c-a7ff-f834d69f3726 1cb64803-4bce-43c7-bc33-3e90f5bf8989 37f43e82-18b5-4bca-826a-8b9376b17ac8 6ff3f71b-a06d-48c9-a7e1-7a51d0d7a38a 71e7300e-d7d9-48f2-8d2b-dc09db8e5370 5355e307-52ea-499c-883a-2c51a30eecef 8643582a-c1e7-4167-bc13-c321c4a5d6e7 61da3811-0035-4fc8-b299-3d324d3c4658 bfc5f26d-8649-48ec-a0ca-2acf6a245c29 d509ce74-5595-4427-949c-eeb14ad6160f 8c2a737f-7bb8-49c7-916a-068d6843d0a8 976b1a01-57f5-4c7b-aae5-188db246ba7c 2cdcbf93-394d-4bb7-8652-d857f65c62f6 7021eddb-42b9-4356-8d71-23676a55fa4d 779bfc33-f196-402b-b189-c104a39face5 63423f02-aecd-482d-8ce4-8919f14d9817 657e5821-e145-4186-bf1f-1867e43955a6 d6de3a28-8dc6-44d8-bb31-49313e9bd79c 79111440-2e68-4223-9d72-87d59a3ae462 64e6d68b-2964-4005-954f-1f38eb2dbd49 ae193ac1-41b1-42e8-8c61-9b94fb92ad46 a2048522-91eb-4660-85cc-906c1fba3608 67647814-2346-4124-85d3-35e8e42e1da8 3ae297ea-c04b-4eb2-97bd-b72cea125e09 4502db95-50ff-4462-aa97-da47d5a7179a 8df7991c-edea-4452-9418-1132b2e5ecfa 2bf142f6-8983-4614-bf7d-9f5b9e8c9115 fb84ddb7-44ce-4bb7-b499-05e2adf4640d 1fde0f9e-43f1-429e-9d25-819d15bdd9b7 0f9bd22f-08d3-4e07-8995-ab38d139b8bf cd4a2261-eb00-4999-8bf1-dd21beb7f42e e5190941-de05-4bec-91fe-05e16ad3e14c a5a35d15-146a-4d54-ad7b-d9cac686154f 4f37c411-acb9-4686-8948-f034c00c823d 3d98c837-5d5f-4085-b58b-af5face8cd67 3c9823a1-a109-4e22-be73-f251f8f9ede0 2c3e94c8-eb7f-4d90-b2d3-1b232558aac6 5add0fe7-6cce-48cd-b687-1625e8f12afb 3b847706-b0f4-4f51-a29e-a9c37f014402 4e9c3fda-0cc4-4738-afaa-937283e0d111 c6f71753-8310-400a-8004-65931ec76871 099fe655-7f39-49a6-95f0-563f9043a4b1 f39bdf71-2055-487f-bca0-e08adb71656d 66493eb6-8e5b-4767-ac6c-624866f1710b ddbcc469-70eb-4971-bfb0-d2f702a9fdee 1b0ad263-f25d-460f-ac0c-675673a2b906 d608a5d2-fa6a-4537-8ba4-b073858f39f8 d930c256-9461-40ee-acd8-a47e35cece07 f18596ee-1f05-4b89-917b-ebd57e76061d 1d0fa4a8-98bb-4099-8ffb-3d1eca00c15e 6d3ca42e-7966-4fe6-992f-3fc232be72b6 96b0d2fd-afa9-409f-855e-2c7d1630475f 8b601d54-c350-4392-b07a-1af47c04fbad f7bf5c24-e1d7-4de9-ab08-b8a1150c6361 c4f1b0e6-0ab4-479b-b15b-0b860285840e ff4160d9-97e6-43f9-9561-cfb9169eaf64 10df63ed-73a7-4ad1-aea3-80949d79c2b2 b081fbd1-ef8c-4c3f-8d1b-3380bc8760ad d48a4582-911a-4494-a0b7-b34e78f3d17b 33a69f39-04c8-476e-8c2d-f522494b3c82 1bfcb482-9229-4125-9ce4-e1e1403e685c 7f987073-1407-420a-a5c6-433065d45944 187d44cd-54ff-47a0-83e1-0bb4435ba2f3 88a8999a-d33b-4337-be03-7496f18784cc 450f03cf-cfab-4d6e-a9eb-e307affa7470 bf8a7cc9-3d1c-4884-9e4b-15dffcfcf298 62922908-aa50-4e3b-93d3-6096305971f2 5ceab507-54eb-4350-80e8-4c348a6ffd0f cb2fd655-bde6-4903-bb37-fd3c07bdd605 b2d72703-3383-4566-b6d1-3758da411554 b7d59a17-a1db-4439-9187-b873c1dd9348 5aeb93d4-8b24-40f6-8edd-eb17a66d373a 27010f38-4c85-4676-8b9c-f083cc524de8 ef26d2f8-ed69-4ba4-84e4-a6b4697ff8f3 d441f3a4-92c8-44ba-98de-50b4c6a709e2 e6c9f0c6-342c-496f-aee5-4e031d3b4065 2c2d8598-1a31-4370-bbb2-7c7f837d0ded 0b0d6e8d-91f2-41c7-8c04-30697ffc60fc 3b70efc8-16fe-4c9d-8c43-85d4eb663c73 30d64306-4980-4074-bdef-b6d24b01c29d db8cc2dc-66e0-4767-a5ac-4cd76ba1ffe2 8f1e0d10-a0e7-4465-9347-318009bb545d 7a02e563-6192-4085-b15b-40c11baacefe e804f5c3-df46-4812-88b2-3074300de403 cb2047d4-deb2-4ccc-aa46-9654bcc03a1a dd9259bf-bf6e-42c9-8e49-6ced65361436 dccf5499-2dad-4b9d-a42a-cbe7cf7ffadb 1588411d-78bc-43bf-95f0-638c6b997606 3ddcf8d8-1283-4a5e-a31f-aea83a1f5ff6 62d3b47b-390f-4ed0-b79f-3ab39bf70963 5bfe0d84-54bc-47f0-8d81-458a5fd97d92 24aa9d38-80b9-45f1-8dc1-e77d41f40f27 02de411f-b7a7-41de-bf60-9c122c11d476 db8ac5f7-7e88-4b11-96aa-468d5b8d8584 54f1acd4-efdf-4bc4-aee3-e67ff5042abf 74cd568e-9fbf-40f8-853b-6620d6460402 d10366d2-ac2b-4308-89ee-29c678c6fd26 ecd90d93-60a2-465c-8a4e-9d83dfbe9e71 25adf17b-b387-4639-90b0-aa3f787b9e45 0438147b-8345-45c4-947f-8582e303f2f9 294126b8-7745-4104-8f8c-f8049cb2fd0e 53ac169c-a655-4df5-8a9b-da3a6c6bacaa da869f2a-1f2b-4b8c-a988-4b154b801711 cdc6820c-d5e4-4707-bbe0-8cddbf4147d3 2bb2afc5-8977-4148-89c4-4eac32abc2da 0f11cc9f-4ddf-4101-ae04-ac10b7ce3103 7f5bf7f5-1fbc-4cf8-a37a-c5ac9848324b 8c82e5d5-67dc-4537-aae8-649cb21f8b38 3f5fed89-daed-4c0e-b126-6cabfa06af7b 063fb900-fbf0-490c-ae40-8f79beb0844b bb6593ea-dba1-4700-a757-8df5ccb2fa7f 0ba7f7b5-3cc1-422f-bbc2-fa7e370fc8fc 858262f1-f3f4-43df-9f13-66c680562016 26a13ba5-c883-417a-9bf9-e6944db54bc0 873fda62-82b7-4546-8b76-a29ef73102b8 2373e6d4-d307-4189-a60d-b09239c97c88 3b68cd92-813d-4478-ac23-4c28124db706 1f1e2364-80f9-43cd-8cf4-44c0d8d2ab59 bf1fcfa9-d4a1-4698-b842-8e847cf023e0 a7ee7a77-a1d6-487e-8a4e-bc0169be7ccb 6d720eeb-0c71-4fb5-afc8-50b8a23c7006 2c5aa5eb-73ad-4484-bac9-e8bb62703484 ab09bc5e-1af4-48a5-af9a-037509f61d3d 5abedfc6-59fb-4f28-a53e-aac10445cdb7 fe0f8b61-f18f-4d9b-88d5-a47cfb4142fd beeb9237-3c65-424c-9700-8fff714772d5 3a53ebbb-2c38-4985-864c-e5fb4b9de898 b88f9aa7-7fa7-4d43-8f17-7a8096b29e4e 98034aac-a999-48b5-9b6d-701cc830b6e3 74c379fd-ae4f-4e58-b2b1-8a41c9a16c6a 0f487159-3658-49a6-a26e-5ad1d70e8e89 1bd76b01-e5e2-4cfd-a6bc-c3f276b2f6d7 56ba5005-9039-40ea-a25a-792682cba2b3 efbb6364-f00d-45e8-90dc-6a43b80dfdbe 5aff3b9c-7eae-4686-ac1f-792df2cf258c a94e8eac-2c0b-47ab-9efa-e6e98c42e824 56f4171f-2926-4bb4-9486-6b567d83d8d8 d1ab0447-c60b-44f7-86c2-a0fa57ee64d0 c1f20b96-801c-4fe6-a8d3-58ace9bff5a6 57d6668f-c56a-4a2b-9e97-de8d9e0343d5 574636f9-9ca7-43ef-89a6-845321cb41f7 c603b376-1baa-4061-b9ee-1b34decdedf5 5f8493bf-c433-45fe-b8b6-3347adc16cc9 8efe1a8d-f1cf-42d0-a027-41270f37f79b 18c15874-ba7a-43ff-a22e-9640a986c2c0 74f344af-4e75-4bec-aba1-7aa677f0bde2 1044556c-3973-413c-99ff-6b6a6e649ac2 14b5a144-b59f-4f7e-91d8-a7141ab5d31e 30471306-001c-49a1-a549-a34cc2d416c0 6c41ac5b-ab1f-456c-be38-42a22dc311ba 45649591-9d34-4760-8b7e-666ac1d4f6fb 28bf65e4-6b56-4763-b81f-b9726a9a7263 f4defec9-4bc4-40ea-b068-cf7ecc74bf67 59fd0999-efda-48ff-bbef-49ce796c895f bb5d39cd-817f-49a7-8023-679232327e73 5cd4f300-24cb-4a36-96b5-d3b37fd2f70b 6e0891ef-7c9e-41de-b119-7c195ba8f999 e6b045f8-a8ce-4767-b6ab-94a9daae0d09 c3d945f4-1b4e-4ee5-9ac6-a74525030dcc aac01375-fb8e-4dfd-afa5-bc8c187e5992 ba99c359-c5d0-4ebe-8c0f-91f1b29c1ff2 0366760e-0362-4cb1-b947-bdbfd12fede2 65d048d3-656f-41c3-86fb-07465a257edb f868ef22-1542-4ce0-831a-e5ce9be95e87 c5d2ede3-74d9-4897-b40e-b25d7781f2a4 625eb5b4-2588-4734-8ea1-c7c076fa679b 241f8064-40f9-4db1-a1ab-37fe9e3d6ad2 3733516d-a1d2-4bc9-8d4a-fdb2f6e0d617 9791558a-7103-46a8-bc77-805b623b04c1 00edee27-ad67-4a40-90df-1f441b93f2eb 2788af7f-0bb3-49df-8f1e-a25b2650cbba 019c2fcd-4a1d-4b46-b499-e717572eaea9 a264c672-200e-4c8c-93e4-9236f02be626 e052a641-02a5-49ea-8d88-1c14a2efce9b 00a5cd90-24d3-45de-a107-71bd0150ce62 31e82ff0-89f6-432b-889b-2e813be6c2c3 5bb95d0f-6ba2-4a85-9842-73ad38a49a3a b6e97240-92e6-481e-b3f6-1aa81cd6b3f8 75e78ba0-a205-4fad-af80-49000a24f0d3 7c62750e-a097-4e8a-b19f-4f011f6ec919 3c85522e-a4d7-4bb8-9640-b3d2f407af91 76e54b26-6be8-4596-8623-26df85d49eb9 a194b222-13a8-4d72-af13-9c1b7c4f42dd 8dfc4506-44f4-4fae-8c8b-5b55d3859bba 8365bc6c-369f-403a-b08d-1cea8bbb466a cf751f75-6c35-4f3d-ab4c-5e77de497b65 03dc087e-d728-448b-bc88-c406b88d931d 999b8f5f-b0a9-47b9-88f3-7ba5b0aa0956 c103e53a-ebd9-4c05-822a-12516cfd8ff8 93bc390c-4e81-4169-8264-a41571ce8410 e5a6a7fc-caf0-487b-a5f6-619b9bd154fe bdb545a9-be28-4f72-9c0c-993f3a8e85a1 73e3bbaf-74a5-46eb-88fa-09a882b9b9e4 1f38bd9f-67a7-46fc-96d6-cce062339c9b 1d991f84-c1d2-4970-b481-d77cbbf1a995 e517c1f1-2514-4084-b23c-ec1bd5e087bd 8cbba306-7411-44c1-910d-9d019c6fb963 e51ee90b-a569-45df-ad39-4966d9ae8153 fe7a89e0-0d3a-419e-8c56-6a10a4378676 e8d21352-db19-4c73-8c7a-4e76676edace d920e3ee-df86-49d9-966f-3d70f435727a 105e6ab4-16c4-4db2-86fb-7653d0299455 e1f7f682-632a-4928-8126-5156b32ad825 2ab36de6-3d32-457b-8bca-89f2634702eb 0784761c-936b-4da3-b5d3-0f76bd9f732a e94785d3-f126-4c2e-b2a8-1e6722872c43 89027680-59fe-44cd-a872-98fdc3615083 a7aa04fd-496f-4d04-ae6b-efa78308fde4 2c297cf0-5fe6-488d-8fcc-5f63251058a0 cb583791-dc8d-46f7-921a-c91526186731 8bb02488-2db1-43cd-946a-9f16099c25bd 181c371b-6216-4a83-9dce-b8fb585bc4d0 2dbc65f6-57c6-4d4a-ac1b-67f04950f06d a38a77cd-eac7-4253-813f-f86411508952 3cab40fd-9f4d-4c64-9a3b-cc0eacd27957 d1540537-2165-4c19-973f-92e15143f687 adb78a3c-3c18-4cf9-acb4-3016eb1819f0 fd33ca19-6605-4367-8ab6-6b4fc1ba3b72 80ce55f1-94c0-45d2-8d23-880a16426b2c 1d5940af-7de1-42a3-bafc-a86f0064a5f2 dd56e590-eb69-4375-a031-95abc113172a f22906a1-2454-438b-adc6-15dce2294b66 e22ea732-b4db-4dba-b561-2b14c5bb59d6 9b89c695-c002-42e6-a3df-164ca37a3bfc bcb61a77-1e0a-461a-8a74-d517007525c9 049f1f3d-9c38-4a14-9c20-a04c011839ba 81b43823-8f32-489a-bcaf-0e31bc98abe9 312832dc-ad2a-451e-9a33-7ca0ffe65030 37d4b571-e765-492f-bb68-f1c888677706 eb2603ce-9622-463a-9491-75403aeb6b96 2746e73d-95c8-42fa-8749-93c4dc2f8c9a d01b7c90-86fc-49d6-abdf-496833780d9a 53abccb4-d6b9-45c9-a2a5-300d144bbfb5 f53f1510-b7fd-4aff-a87b-9fa2f7da091f fd0c4336-f6a9-4323-8edb-40c3c536e432 9038e57c-ad3e-4878-afa2-3c889a2671e4 7b764205-368e-4aa2-bce1-d26d60e16e00 d7481a34-30ac-4eac-83fc-5047f965d689 9a478fc6-811f-479f-8c32-1e57d9176e86 b130bd04-5db3-46c0-8dd6-6103d9f25785 99697810-8ee1-4541-b959-6c9bf2f63bf8 80a530fc-1e47-4933-a044-fc03baebe82c 5540fce4-3579-4ce8-a861-2002038508bf b4dbda03-8301-4cf6-a706-bc2f7d7d9ce2 43220216-f589-4538-bae9-cfd911a228ec c1cd99b9-92b1-4485-9b3f-64cd09ca23fb 410537b5-94f9-4ba7-9e74-ecdb14bbb1ba bde82e0f-663f-43db-80c2-6c044b8d43f5 b94f7581-0c6d-41ba-837b-7e748f0a820f c0fa1b3e-a452-471d-8a7d-87192bfc8bee a91f4f8b-d139-40b6-9889-8985ca85376e e6bc7ea5-7cc4-46b6-aa7a-a39cebba0e34 c48a3754-7dfd-4964-8968-0a77f270d0ca 05dadd52-5b71-4dce-8bc8-fabc7eb1e34f cc0d47e3-2afb-4a83-a77d-b2d899c4c63c 03d6bb8e-2141-44f1-a3f1-b1f4a984befc 65fb6282-ce88-498e-8ced-7d061122a1f6 75559a1c-0f15-4e8a-a2d5-5c3564a1019c ef328c8b-b0b4-43db-993e-b8d319981fe2 10c1f6b8-bf18-4220-8853-d33751b3c789 10c8df17-fa4f-4706-b127-68a6729cd3b7 07c610ea-7a4f-4496-a9cd-d6e6056e01e9 289c9219-9b61-464e-8daf-a7ccdbfc6990 b91a0e37-5f4a-4609-938a-925092d46b49 5e3b8e25-afac-4b27-9baf-825c35e69e93 221a24b1-4b18-4d4d-b225-0cb483eeb03b ac087c01-f4aa-4c6b-9106-e73b5ea0919b 163ff349-0403-42c1-bc2e-df0a7051602d 8de261bd-a178-4bb4-aa04-6d1c3d71fc5b 23ffc970-011d-44cc-b851-c2dadaaf7caa efe681a4-8d1f-49fb-b8be-b28ffe2dd223 f0c7e3e6-4a01-47e1-bef2-aba9dd245e57 dfdf5dcc-afe1-4054-b5c9-13fe8948acce 749e2214-ce09-4774-a399-b18b1ada7699 b3e230ac-8c88-4a6e-9639-710db7e08e3a 5e0d2e6b-95d8-4c74-bc4b-46ff02cad401 36d050e7-7d82-4fb9-bcc6-85cf4f4859ba f31c1d33-bbd9-4273-a05f-beb9673402e8 5115a235-15c7-4779-8ce6-0edb58ea5205 a6ac9905-6975-4d9e-a983-ab341eacf6cc 0fcf6801-a444-499d-9405-e9e977a25862 2c506cd9-b08c-46ac-ab8c-3b8566843a7e 0b843fe1-f688-4824-aa33-4b9a15c57faf 90c2e9a6-6bd0-4ffb-959f-433a626453ae 5e3417ac-9875-4afe-8f47-e4c193fb327d 9e68bedd-d0a9-4f46-b944-37b91fa6a262 77051ebb-5a3f-4a3b-a765-7b5a7947c2cb 4e980470-7e11-4eff-b193-639b52cc002f f3009250-4c69-49d6-9be7-e65e70832193 58d5a546-50b1-473c-b6ad-ee7a94452973 b1132f72-5e7c-453c-862c-a43b9ad4b5c8 5db4b691-e379-42f6-b10c-ffac0cb0f891 ea4fb737-0366-4d40-8915-bb5b7352f685 63343623-c3a6-4a53-ad0f-3ba643f86712 19b104fd-5756-4761-9213-037b4fbd37a2 33ac64bc-6a60-49a3-9e23-a67368147703 afbaf158-a57a-48e0-93b1-a2d13fb42a77 1bd0dfbb-0a52-437e-b968-f148235710b0 9777ffae-7be8-4b6b-a82a-4c4cc134df2f 1a3ae86c-7f30-46d2-86d2-696d032450c6 9eff5a51-79bd-4cb6-b7bc-a3dc008af86b e91f59b2-8f0a-4040-8665-5ebe963d168e 9eb9ff68-a2af-4170-b170-033ba32f7f25 6765829f-60ec-4be6-afe7-7e2cff5aafe6 ec7cae4f-24a5-4977-a259-829a8aae2672 0a77051b-a35b-4b01-bfe7-859739697907 e1d6054c-269b-47d0-995e-807e8acc5eab 0a31ddf2-cec1-45ae-adcb-3a54897eb47f 9449cd52-532a-47c4-a31d-ef2b7d0b9252 ae97aab1-23fe-4e29-bdf7-92bab1f11f32 2aea47bc-4006-4ac6-8b0a-59de35e81637 3ff19614-0abd-4408-81c9-06cfb53e33a1 298c30bd-7717-41f4-b5da-f92436d9e4a3 e7e37fe0-df67-4306-a780-4a340df8cce8 83af4248-c575-4a11-b749-4e623722bee9 3e4849ca-82b8-4062-b490-eac9583f34b1 20da7eae-cfbd-4129-a723-ba882a93978f 45dcce93-d673-49bf-b6d2-2eaa276c8a2e fe7e110b-16b0-4d28-9401-6f8d6b0b12de f0664029-f759-4128-86d5-4ccadd9d2523 0d249fac-ff06-4cc1-bb7b-a8a914559f5c ab6af2c8-aebc-4483-a8c3-44fe94609865 a77a9ab5-ce10-4993-9d18-a87cae2ec0e7 18c7dd7f-6116-4b6d-86e8-8084293cf856 0c1999fa-061a-45b2-b0f2-8d52ffb75a11 2e2c4db8-97a2-4880-a6ef-449031696629 cad6655e-4ccc-48b2-9fda-1a6d8f52623c c41ec354-18c2-4f6c-ac8a-09ca427cc434 7ad8ff02-1950-44e8-a899-1a406e44243f f81600fe-d659-4d17-8f0a-0a84678e4440 ffa21186-d2d0-4507-b880-28430450d8b7 be2736de-e6f3-4434-a84e-3c8bf9d390f8 f51b0679-440f-4efd-888a-800703e8d572 c92de3cd-34d8-4852-9e13-974aff5beec3 7ea33102-5efe-4470-b575-12f99ccdfb31 2e35c96d-f353-4bee-ab95-50e89c7afbe7 94062e85-9012-4e7e-af33-a2761d358b87 a849191e-2a39-49cf-bebf-3f4fe4190ba5 0c77669b-47ce-4f41-9eef-7d5102dea6ca 8b545b5d-8afb-4e0e-a407-a8a8c1875a87 890b189f-1711-4c7b-9407-1feca51c720a 6a5a1d51-2817-42bd-a3e0-07e4fb4918bf b3a8dd78-0f90-42e9-95a9-514f7b684eb4 ae3ac049-41a8-454a-bf66-587e7eb989a4 e21f1b51-2737-45e3-8ae7-235d058c2e01 25439808-98d1-4a8e-a49f-3de90d264556 975a1ac1-0208-4991-8801-e845fd31149b 479c21bd-ae51-4f97-bddf-3287e5b8f8a2 59d92167-182c-4b7a-8f68-c50b4d5d0282 efdb0454-b683-4f67-bf23-e3c81ca6a524 072b5418-bff7-43be-a151-ff0d57834f0a ce4e6f00-471a-4263-b624-264b0c70a7be ed42fcc6-c8b9-4f37-ba82-ecd44cd01abf 617873db-1017-477c-96a8-d6296554f410 196f4743-a387-4535-9fb2-e68bdc7c3088 b9cc0822-b1f1-4b3c-8347-4eaf8e9518f7 38fb7a3a-2f7c-4731-ae2b-17dfdc36da23 3c274227-c277-4ab7-aa0e-f77b1a4e8d49 34267b66-2475-4d9c-aee0-90e3264d0742 14956d8f-fe4a-4e60-8c99-8041666072f9 223c85d3-cbb2-44b4-bcff-4f9e8a66485e 34b8a447-60fb-4152-ab1c-0ced7d60b61d e466d7e2-04c4-49e7-8a9d-6426cb0e3ed4 80b5648c-ab35-48c4-9702-104d6bc82bf3 92d927ed-579e-4464-8501-80fb99dd9737 520620ea-57f3-408f-a222-99314d3f692b 78afc50e-3d5b-4c4d-a03a-8cfb91e2d4ab 0aa9a4eb-99ca-4f22-a676-718b6c87cc35 90f6307a-4e68-4168-b119-2a501b300d84 34c35def-bae9-4980-8c01-8b8b1336de72 6a7d403e-0643-4953-a2b0-abbec903fef3 d4cc19cf-f8bd-435e-8180-2e791ec2796d 5dfea04a-6879-4950-aa72-e2690cf40522 56962bf0-a791-4964-b186-901cbee0d139 6a0ad203-693d-4cee-a624-9a3f7d570920 13f4f6c7-cf48-4398-8f8a-c8b9a1ca8f59 7b43819a-d7e0-44d3-9413-7717dda23b8d 5db8c9f7-52bf-4eae-b33b-10085a8632b7 a814b56e-1773-4aba-a48c-42a529631423 2fb028e3-9d88-47d1-8a99-a583f248f02e c13d0291-8053-4e0e-896d-cfdd8074804d 67272816-d81b-4eeb-a3f2-b8f54fe900ab c02556b9-e206-4a2b-83c3-1146b67af701 4b4872c5-bc11-4ff8-810a-bd569d0e75f5 c1d7d59f-4df8-466f-82f2-95f66110a7fa 200c6b9f-bb0e-4dc2-972e-c26b0d02c18d bbd527b6-5102-413d-8841-d87f615cbddd 33ab52ae-6537-4f07-b5f5-0d5c8b07ce9d 3367b673-b04a-4da3-b4db-d886d3582dc3 8f6d0d3b-4a66-4f00-b553-e421e04e3d24 5b6c68b7-1cd4-4827-b5fe-e138617387af 678670a2-422c-4ac5-8ea6-057af0400601 904357bf-d773-4e13-bce9-e23124f48e64 3e85c045-7601-4eaf-99da-c1fa458029da 61fac69a-bc3e-4200-9a58-cfd4434d2b99 2df568da-6e34-4907-9d8d-8414788b737e 1d027705-9d8a-483b-adf2-00c81e30c232 dd72ffcd-db7d-473f-99b2-75b561b884d6 20e37793-d939-405a-8fb9-84673947fe24 01985b37-1f08-4dae-b41e-c183aefc7473 02f4424f-0ddf-4e4b-908a-730409f59eee db58e30c-ef31-46c3-b4ab-cff11f88a069 196c4b4b-f7f8-45be-86b5-c4be25948b13 2b6bf15e-c8c0-4fbf-b9be-672ba70858fd dec76764-5697-4a0d-a451-ca4f071b3447 2eca090a-15c3-4bca-8734-156ab06fc9cf 2218cbf8-3bf2-4086-8ee0-ed5c9eb68c49 c6d71359-6c7c-4c75-a23f-93f56762db8f 01e4e07b-34de-49b9-9891-f3d3c2a8d96a 565d0752-c3d1-47b8-9a70-0332d428e340 31f0f6b7-ddbb-47e6-b532-47f5a395306b 0fe84195-c9c2-4c82-9bf9-c3eb94610b5c 91f59f8c-b53f-4ce3-ac9b-048991fcbcd7 9e124240-92d3-4a2f-b87c-c79c901da544 98678197-6f28-4835-b7bb-1ba3e517bdcd c22508f1-c48b-42e4-a8d6-f9669f7fd470 9eb9a6f4-2435-4d7d-b01e-3950efca74e6 700e71ef-7aab-4dd3-8052-31b42286cb68 1fe621bd-03ce-4088-a29b-dbc69f274c29 cfbe5cda-e3bb-4d7c-9c64-96eb34da4162 daa2b47e-773f-41d9-91dd-23a83b108a59 560a2f5b-764e-46f7-a2e8-50e0032c94c7 53b8ec67-7942-42fa-888b-d6767de67aee c3aec57b-c2ab-435c-89ff-0ffa3e6beee2 58de7c66-bdfe-45d4-a59a-af2cd086bf6f 2d7e6039-0244-4209-be2e-3bb91600b282 0d0b6400-d956-440e-91b2-b338dbb0f06b 12c8d7c8-207e-48b6-a0bf-c8a5915ff440 fa0fb11b-5cb6-4b1b-a4e8-1e53ee5583c1 0198417d-b942-4495-8592-e157f5bfe6ee e8ac0cdf-c2c6-483a-bfca-3922ab896347 f9e35ae9-39b7-42bb-8f9f-969fd39fc7f8 bc0d805c-bc0b-4af3-aa5a-9113568809be 5a975751-d19c-4a5f-9a6d-db53d22bd685 4342ddd9-3013-4dbc-a7fb-614b0e22ac8e 3103582d-0b38-4a2b-840a-49194a15242b e800155f-35fd-4e66-9549-d3d1362afafc 32bc25e6-6991-4f2b-8ff1-e4bbb792d509 5e5120d6-1465-4132-bcc9-63d387f4ed20 2ffc7456-494a-437c-b58b-2681193085d9 a9d15d52-c2fe-40ed-97af-7a939d7af299 44e47e96-f020-4a0a-8b9c-09990a6791e8 f0f9bcee-97c7-426e-8560-9b34221bb8c9 21d86a5a-f2bb-4948-b43c-16c905b5ec15 feca4071-3c1f-4d64-a926-a50d2ead59f9 c13130d0-c3e9-4697-bb2a-36f0b71db67c 991b54fa-b90c-4e7c-8545-0c5d2946f9d8 1a3da79c-63d1-4420-a0ff-d6ef689d3876 1c158dad-acd6-47d2-9501-4182e02f53d5 cb87c348-fcfd-463d-9a10-f7d22b579875 84c6d582-b8f1-422c-90e6-e93bd3a8e474 7d790055-1a07-4bc1-8c6b-b3218cd84abf cfbbf3c4-e093-407b-947a-14e581217c79 0b94d505-878b-4c3c-b9a4-67fe87b5adc2 7b2fa95e-35b0-4110-84ed-656c08efc55d ddc4446c-fd9d-4150-a7e7-aa001c860558 b0dc00e2-c694-4c70-a7c3-5c54e1885e70 b2e43142-8d5a-4797-9f8f-be785890866c 394d52ff-9237-4247-9076-38ce373a1e7a a2ca26b9-2461-4e3a-9eb2-15de78e53d20 dc231df4-7b1f-45db-952d-3dd4e5c7fd32 d5b00933-15be-4942-a524-70f38a0df5c5 7faccdfa-9e3e-4ed0-954e-517289debe52 7f6a8ef5-e288-4d60-8fbf-3376489185a5 4db86d7d-ac4d-4ef4-8e1f-e92463a9b41d 3b3e6254-32e6-421b-ba70-6a0a4b03e5ca ecef8e1c-ec4e-4d2d-bcd2-1fe69c3daf8a a6c6c370-70cc-4c3f-924c-882a40e9b564 3e06ca0e-0bc8-421e-8db4-241f7f3c7ac3 7717196c-aa4a-4271-ad25-6cb1a72c3456 d156e5e6-0b5a-460c-8bcc-a36b75f62294 83f64f37-33be-461c-bb10-f16a2c23ecd6 048ddb98-d2cb-4b37-8e4c-83fe9eeb5831 af8dc610-f58c-4e94-8221-7861d95e9fa0 96242bd0-8293-41cc-9a37-3bcb23b20e42 9817917d-76e2-4dd9-a013-581565f64556 fe37cabb-4c0a-48d6-9a45-14a19d6a1151 f833655a-e7fd-4fe4-879c-68c8b5ee1fa7 ce39e1f7-b8a3-4d04-b4ca-7505b70e9f2d a4ac0613-665d-4b92-b449-ed5dd4b5d53a 6a50fdce-769b-457b-ac9f-011a5c4ae36d ee8b4c68-997d-4d4e-8b76-49ac12162b8d c57b6b2f-b5cb-4ccb-b2f1-232a43be7437 7b78a55a-e3c3-43d6-9409-92140e223b7f faf452a6-b974-412c-90c4-3199a286bc79 6590f78e-a6ce-4cf5-90a6-edbafa9af937 33577f24-57d6-4e87-8fe4-9dba24d05438 1eb884f7-c4a7-4fed-a2bc-53db8912226f 86b02101-9df0-4761-8c44-717cfe203d7a 61d8c3cd-3b27-404b-baae-04939310ac72 19bab941-830e-4628-8ddf-8396608ae6fe c2d25073-42a5-4e74-808f-2e80a6dcb4e0 58179966-8201-456c-b417-90226e5abf02 e944ec7f-27ca-40a9-8675-5bec51b54c4e 854b0c52-d13e-4641-9040-15e88a27833a 65639ea9-97ba-45f5-83bd-73198d2c2e1d 9b5403a9-dae5-4cbc-935c-27979f600b30 973d2f35-a36d-4cca-8364-ade3f5017aa9 635c500b-a1df-40c8-8c9b-4fdfc3678d0d 6e4cf4b9-5af6-45b2-8ee7-06c4addc9c0a f96f8bbc-e1a5-4778-8ab0-d6da0c2ea905 1b95640b-2108-4f1f-9dc6-cd787100b6b6 6e409543-330b-4194-ad83-ec52fdcce1f1 91ecbc66-fc41-43c9-8c6b-d24527615521 6402c4d4-881e-43a7-a5d8-c58ba777c986 8425a09a-ca11-46b5-8c68-e8885037e480 cdf289c2-22f1-45be-bed9-b378e4fa9361 477316b7-ca3b-4aab-89cc-3196207f44a5 96b6d96d-f861-494b-8805-aabcfbf4cb59 5c75dca4-e606-4e20-9051-39900c3c320b b16b10c3-0317-4bb7-9b5c-8dcb3fc75a44 d1af5a02-78f5-471a-8d26-0ed33321d296 45665aed-f8ea-4fd2-9f23-4e28c5e4602b e709ed2a-eae9-4d99-b471-738128f62cd1 9a6041c1-7112-4cd6-bc6c-d79bb1cb6d69 f94a5944-db64-453b-b2e5-aca97cb70c8d 65f3fb2d-7d61-4d03-8fd4-26f2433ef0b0 b335d5e2-c5e3-4386-b576-3aff97725cbb caaf5cea-cad9-461a-8bdd-f69a6e7dcdd5 c00bf7d4-0c1e-464e-be87-0125479a4ec2 d20f49be-1ea3-4f0e-9e2f-1decf03ab15f be4ffb9f-43be-4b2d-a970-a714d3ee895b 429242f6-af4d-47af-817f-36952ef7f245 e2814488-de28-4784-8f72-d1225f6da891 7b4d688b-ba0e-4b1a-956a-36599ea7ab06 d5d35aba-a130-475c-9509-a8b8dbfecafe 698386e1-c680-4676-96b8-7f422640a56b 35f5a6e2-e1dd-47be-8cae-8dd3c032ccc8 fefb7c20-ca46-4cb2-82d0-9862982ac19b 7c5a1709-e7fe-4564-b1d7-553a74916d51 6fb19b28-32ff-47c7-89b1-7dcb41e45989 c059ccfc-0cba-4d06-b03f-0b98d08aabb6 a6783dee-8ef2-4785-b372-dcd0414adedf 69ae94ad-aaf2-4b7a-a2d3-72b3786e88aa 24ca6771-adc0-42f9-bb67-607cbb4f7833 6d84e03a-9658-42ab-8f17-849a6bab5df2 2332bb6e-f68a-4023-90df-5bac1ab33c29 9d64145b-e681-43c7-9f60-90dfa55aa71a 4b66935c-b15b-4b99-889f-c5d305f0b817 7e98d432-29ab-4fc9-a061-2ad550ec5d38 e2ef00e4-b430-462a-8079-fc58f8bdc398 e3ea7eae-35f6-4d06-8323-173afa493dd9 3ad57bfd-3921-45c7-8b68-3765aeac677a a90571ce-03d0-44c3-8a9f-a778491de3f0 7a69b8d9-0dbe-4702-b7fc-7b92876e31b7 d677679e-d5a3-4010-80a5-7e57a5afd30e 92665494-5eea-4edd-8758-bc98403e1ae3 a8cdb97c-9177-4eb0-b381-98ab8b3ce781 d4824d3d-1c06-4971-897b-f63dda7aa8ed 44bc06c5-349e-49c4-bd53-1388c8e710eb acdc8188-5592-4b9c-b094-a4b7d466286b 731146d5-10b0-4064-85d3-d1af6508824d 8c3dcfcd-1d52-4bc2-afa9-c903410ef1b4 84630aca-119b-4e19-8b43-aa37842dfcd2 99830c47-8e4b-4a48-ae81-0799802752ad 2b825107-8c13-45ed-9dc5-d32ffa30f2fa e8092086-dfea-4bbe-8bfa-1a8659dc2ff2 38a9bc10-539b-486b-8e8b-27ebec4607d1 508e2e30-063b-476c-bc7d-03949ba68fdc cb68ccbe-cc84-4289-b24b-e2f13590d28b 81e1c990-d7eb-40a7-aba8-a15beeb7c4d8 4d8efc53-b1a9-4717-9e9c-80e224eaff68 0d66c34f-721f-4f33-bd6d-571bb93e85b6 f3217658-7941-49de-9327-e2b617851640 164f9ce5-1df6-4663-97f4-6b5f4d4b7ce9 873dbb0c-68ee-443e-a9b3-5c05e41d10ad 3a172141-882f-4194-8707-a5224ff9fefe 6ac6998e-0a53-45e1-8dc4-8a818706b6eb c9794b7a-5c5c-4c75-ade7-d1ac7005df96 3a13ad9c-eea0-43f8-bc8e-edd601493c8d bbd5e535-028e-4dc5-8c99-68ef198d9420 0196300d-a2bc-4174-8c2f-033752c68f2f 91681531-f9ca-4e5d-b857-709937cc7438 3dd076b5-9836-4cbc-b926-348ee95ce82c 39c22e00-e9b6-4614-b64d-02e596f37a0b 9b52aefe-fdea-45f0-92d3-cd795e80aeae 8c517275-dc14-45a5-b7cb-f441b3511987 6ac23397-a587-4432-b583-9391c263d5e7 98d24763-daff-4d39-93ee-3c09ccc287b4 5e842956-41f8-4b15-adf8-a2b12166a077 36c0ecad-1df8-4669-8e50-c321a3bd1692 c42cb861-ec77-4072-9e42-81bbc04ee0a2 a6b2dc72-2886-4c82-9b8b-4aaf22885116 db22a2af-5211-4edb-bae8-a678b0a957c1 8bb77244-3012-45db-a36e-2bb54a766b18 c4d9f899-fa6f-4a54-bd0b-b278ce725e9a 53292a3d-970d-4391-a056-04b91957b1c7 e2efa673-5028-426f-8481-6882034eedf8 dbebe2c7-6cde-46eb-9280-d6c35393e2a9 cbb96b3e-52e9-46dc-9fee-66e73aaf726d e18bbd44-2b9d-4f38-818d-e692b1c8440f 42448cf8-d830-432c-af8b-849886612e37 6a29742f-478b-4c59-963f-2c666f9eb517 c11d7768-9d4f-4189-bc27-d31a745f5413 e0bd8a04-c9fc-4c0f-91f3-80457ea12605 f7b38f9e-369f-4f5c-9846-ba47131c88fd 9b0283be-9704-4cda-884f-e8461762db3a a2e39103-1dc4-4212-b403-10ae5546ac6e 17b17f8f-6061-42f5-b1b3-7ae84febf5e1 251db26d-2a3f-4226-8b60-e7beed18c78a 10bd188f-87ae-4812-86f2-1069d67e11db cdab070f-d582-450e-8c29-aa048ea1fe3c 12f6199d-f4d1-495d-93a2-5de92aa36240 d26ebe89-996b-4ee3-9ff2-f3ae1146f98b afef63de-020e-4d18-b6e8-830f075b42d0 46cc3861-5ca7-4809-a45a-a241f8d25f93 99b03bd0-7bca-44da-9860-1dd2ead955bd ab9b5d73-cc26-4134-bc5a-e9a75f2fb864 dd1ace34-dfbb-4197-a2d2-14d332046678 4ec1e629-1325-47f1-a313-09842d08197d d9518369-1fb5-4f5e-8abe-9fd9380c538b 54f234d9-309d-43ff-b7d5-97f9fa324807 513c7790-a75c-460f-8719-e9a94efa5347 fc6df1b0-81f4-4676-8334-fb89a07133da f9425eb4-846b-423e-b893-d4bebab0c93a aa6f441e-9a03-475f-ac3a-08460b9e6505 5fbe8189-a4dc-42ed-bffe-efc05b971462 4dfa45c8-f5c9-415d-b3a6-f5a0becbc502 37ec1b0c-130b-46d0-a5de-25deab62c232 58b4baa9-bf8c-4baa-90c5-dfae65216242 f1c8e4cf-d2cb-4925-88dd-5655e40ab29e 31f77dec-9e05-4888-903f-134c0b948a36 2b6b0650-4059-4bbf-8270-6597626059bd 470f18cb-f250-4eef-bc9c-31115235cc52 a4a8e429-e85e-47ad-9feb-43d00d33af2b daf8d9bc-d27c-4c61-855f-bb60d8e232ec 866f9208-5147-4382-98c1-c427f9135604 3255a04a-a95f-4f43-99d6-a5c7ffc93313 1911affc-c1bc-4bb8-aa7a-5374108a2f82 cc45925c-66ef-47ac-a681-a7c2b953ec8a a0f33fce-0b20-44b9-a863-dcf6b428a42f d21c8544-1793-493e-bc1f-75b0ae9a6b61 c594772a-ff95-400c-81e4-f08bfc98aea1 99ac9e50-ea97-4b2a-9bf0-dfd8f195b283 a76d5954-fbf3-43f8-a639-f51d67469f2d 68bc2414-7bee-4a1b-a701-e9ea810d431a 81f5f246-8068-4f42-85ab-32fdef5b1152 25bbea0e-40d4-45ca-90a9-7a9d4998ebf6 276c10f8-5def-4bdd-83f2-189f970cb7df 8ab98504-25c6-4232-a140-a90187b5a54d 6dd5eaee-8872-4b7c-a862-6bbfb0621429 c151d71d-a3aa-46f7-ae7c-087076c20e60 c111ec7e-56fc-4faf-b0b5-cc7302523708 24361cda-ec12-4949-b358-eac71755bef7 48376301-9038-4ddf-bf3f-93f4fa4fdbe6 1463c0b6-1e4c-485c-94a3-2d373f9d9f70 d7254e94-16b8-4f4a-80ad-52c6abf4625b c268e435-adc0-4bcc-9b57-a9f35620aa54 a52018ba-d20e-4d9d-a277-f670b4388ed8 6e076443-86da-496f-bc77-d8735510bf02 e83f04d3-3566-4ee4-b2fc-8ca55be8bdef 6dc5f19a-1b28-40cf-86bb-ffabcd1d95c7 295e97ae-6add-4600-962d-7507a49a8c74 6716aa4e-be1e-4adc-a0e7-d79586ec5e9a 6d66079c-feb5-42b2-b075-2d30d1388805 d5b98dbd-354f-4207-a429-d301adf0443e 2117baaa-6fa4-4739-bcea-2c990049b2f1 0098daef-0f59-43e8-9723-82d5b4ad67e7 0a865442-2955-4497-945b-1e100319ef64 9172fff7-9b17-479a-bdaa-3bddb5b768a0 9a87d8f1-1724-468f-9f6f-0a914c46c90b f589e73a-3a4e-4bf2-8f2e-18a39f360490 3c491656-f6d3-4bc7-982e-180c9e98bcef 9b8a7e91-a7bf-48a6-8da9-aed816582868 0c3b67af-d888-4d14-9706-37a4e77391df 7c7bb49e-5d7f-41f9-b5f2-a6e8a9159207 99dcb534-f33c-447e-aa33-111165756c0a b9dd8d96-1b75-47be-9342-0cd22cc52612 078bb1cc-1782-42aa-bd53-258186beea5e 20fc60fa-0cb9-494f-bd61-dc2e386bf001 d8e482b7-b793-4c74-be30-8f3e6040df96 4671c190-aa5a-4802-80fb-8fe35a7787bf 000cb09d-76e0-4993-bc77-eca2be4c9aec a1bba4bd-2a02-478c-ae89-bc644dc7fe98 fdc95024-17bc-40be-a5d9-79d06a094607 ca34e827-0928-4a59-bd26-0ec4f60acf45 dabc5d3a-7abf-4087-8c50-8750f26c95d8 3fad0e26-58b4-412e-ba84-a1b8850c2507 843f91c1-be99-464c-8b5b-51bfbec6aa88 916be975-9702-48ff-9289-57a0343a5d03 26cc77ce-b0db-4aae-be2c-3a7c6398d904 7d4d0c58-7222-4252-b330-8c07b3e0d4bc e17e1b3c-0562-4fa5-b974-628266229956 ed0f8f06-6ebb-45c1-93db-f5b428637d95 ba40925f-f80b-4510-bfa3-bef4e074b54b 1eb1fa7d-7a47-4a6e-9745-2f54d6a99dc1 699dec30-6c4d-4e54-8e5b-084713889fe8 3f871aab-490e-473e-8fd7-2dc0774e46f0 f1029cce-b384-4eb9-81e1-2129c6b7d3f6 56c34d1b-6afa-4c3a-9589-6213123fa1d6 4e79670b-023b-49b7-a9bc-75ec306a4bfe 1f75dd2a-83e8-48b7-a330-8f804852e3be fccaddb7-150d-480d-b367-6319eeebe536 7b8b424a-1481-4b11-ad99-37d2d19c3718 88d3ec82-91de-4ef8-9eeb-242288308162 efec5fc7-3daa-4b20-af07-68b8f0fb6d2c 8201d673-9363-4aa3-b5cc-fed9b926232e b89703f5-a365-4a72-a399-409c60279576 c1ee87a9-0438-4f24-ab6b-7d0a416969a4 44126187-b0d1-4be3-a486-927187199325 267e53a9-10ec-441b-8a61-9e4d2fa63901 6380e52a-1263-4397-a6ac-c99e6397927d 1833754d-7d25-4f3b-b693-a70ff929933e 393dc7c4-675e-47b3-b5ae-a5c19f60c348 1f93ca26-6c94-43b2-8888-8775f0587b2b 7216fe08-2e95-48b1-a1cb-e34cb4f13dd5 cc13a54e-5065-4d9c-bf50-ab90eb58323a fc2891dd-2f6e-451d-a975-f48889098e88 e8967f4b-7a8c-43c0-b3b5-21ca42217141 339d1778-ce0f-419c-a38c-abcd47f9f0ce 8fa8b47b-3bc3-42ca-9b0d-115158907391 4e09b3ff-3ba1-4e6c-97c1-b26bcccbe740 4443d158-1926-4eef-a1f6-0f09c164fd76 2addac38-c49d-4f96-87cb-e30b429532be bea53c3d-4be8-43d2-a15d-2546a29267c5 fabe7b1e-f11b-4463-8731-a6c239382c7c b3dc1a55-ad63-40d1-a96a-1334437c1c7c c01b854a-6af4-4640-81ae-97df330d9253 de34347e-6a5b-4c01-bed6-17c91cf66881 c8ad8e3c-b883-43fd-8e87-826ed4630c84 b7c4aee5-a60e-46de-b9d0-e992493daab4 5055d517-a6f7-493a-a010-ee2e30d49d74 ba4041a4-b2f3-4ad8-9477-483f127c3d76 fb200032-fa23-4117-acc3-18972add4d3b b714438a-afeb-4379-82a3-c8e6d8d27d89 a7ba02e9-eec1-42e2-9b3e-2d35e91590ab 5f1165be-b31b-4289-a2ed-395d165f79d5 2ee02c65-15d1-45f7-bc0f-6f8870c9ea0f c7e31966-e22f-4120-87ea-5388fac1b834 25dfb265-b69f-4c98-985b-c3570450b6eb 373d35e0-bc6d-4077-9647-1263d0bf0725 4f406642-0627-45a9-96b2-5235262e9ad2 ee7b66ab-f89b-4496-a05e-ede67199a2d0 35910e00-48a5-434b-a9b4-58bba2d99a52 cab41a7c-a23a-45b2-89ec-351cdfabbd19 bd684aca-54c3-4ccc-b36a-a3204c580ed4 e43a356d-fd0c-4a9a-ab21-681ea9d72459 0e72f326-881a-41ac-9aba-f7e042856196 61069a5e-0daf-4631-a5c4-f6a7de0d972d 3e9020f2-92c6-4d82-b239-d8985bba582c 8249c00d-3e27-4f06-b902-00e931852780 cccdb92a-01f5-409a-85d9-06a74640aae1 fde0bc53-ca5b-4b50-85c2-141857161f43 4d8e33f4-04b8-4002-9be9-319111f1d7f8 9491feea-feb4-41e1-a831-25670e23b0d8 dbe4dad6-b274-477d-9e7f-5c21a8858e13 b75f2599-7099-4c70-8969-3cf2ad551467 da593d25-3431-4dd7-942e-25179a7692d5 90ca8d39-7bce-47a3-b637-2626d22118b6 96cfcd6c-f653-4552-aa2f-c8d6ac54e855 c3ddb83c-d2e7-4a38-970f-ca8cf4068c70 536d2b71-751c-430d-bc63-8fdee6890aa2 5abddf12-ce37-4669-be07-ee5cfc3d6288 464ddc91-040a-439e-84da-46d03664c592 c4f5fcf2-e98d-473c-a14d-172e329f3aef b1862e2a-5c60-4d47-b515-e82b9fec8a3e a2e8dca2-ab87-4774-b2fc-a163376a5060 fc4653f6-ad77-43c1-a4dc-0a5c334802e5 826f7ff3-b2c7-4ab9-ab1b-38794916a3e4 4f8839d8-c5b6-4c24-83e3-5cb87bc40cd2 05eedf5e-82f8-472d-975f-7cbafdf89af6 170b87ec-3f33-4bce-be75-59bcf3d62731 0b3ce4d4-7b69-4ff3-a236-986900c76923 d0b4fa8e-e362-4ce2-b628-933c0865c097 ee80a0c7-d4f9-4346-a009-9dfdd95b816d c467e275-6b7b-44d3-8cf4-3e372a6e141d 44c8da36-3d40-4dcb-bca6-39ed332fc269 4b6e01c6-e080-45bc-be99-3c31996a14bf dc18da4f-378b-41fd-a0de-5c9270d66642 5d93567c-c4c0-431a-8717-e4161f4b807b f2cf7e6d-2082-4df2-83a1-c1dc5f5286f9 9e15a7ef-2623-4377-a37e-e0e8fcf0d0da f6b73579-f1db-4365-8d3a-7c7013953926 77419735-2964-4de8-9378-36c68d54bdc7 a6d2a6f2-5808-4c79-b83a-145ffa760f68 8997d36b-fa2c-40b0-8d73-0808be5a344c da0d668c-64d7-469d-ba1c-9a4271c85b5a 6d6d573e-9f33-46ca-9fc1-b46e8f9267a7 a1d9ebef-2375-4906-9717-9349979871f3 d769d76f-1dd1-496e-af94-6d532f8286ee 119f630a-5df3-4e5e-a618-f01125b657ac 5d6e3fe3-c100-455e-b058-88a4028a2169 0cddc5c3-95dd-44ad-b7df-2190e70be598 e14cdad7-7b0d-41b7-9c7f-61f87c0784e4 35b68d32-efd3-4675-9292-79c3a695d293 52a12db9-b664-4b11-9453-622b16c2e28f c0496a6c-123d-4c7e-b9de-7acd1df66eda 141a54a3-7c70-41e5-8581-8b42643204b2 7152a889-6594-454a-b688-0ecf2897a28c a9069f36-8627-40af-9a99-2a7660e4f1e8 ebbf39b1-21cb-496c-86b9-d062cce9d185 1feed0a1-3f69-4726-ba25-4c309cfcb66c d9cdc487-c2aa-48af-ae51-003d2b5fcdbd 705e32cb-fd47-4411-9158-237ac344878f 4e3bd581-0435-444d-9f01-2b1fd2ecbe54 055dd561-a539-4ba1-bc78-ffaf27f5320b a56097ab-0c7c-4bf2-bc6d-08ca6417818a a5b47ce4-8033-40e7-b736-4479d6f40208 51a8a1fd-454e-4b79-93cb-547901ed186a 46248a52-b355-4d12-a381-48eeb768ac09 06ddc37e-ae8c-4c7e-a13d-17d25c9d5c04 be4d8aaf-84c8-4bd8-8e4e-d6b8a5a54451 ba98918d-d66b-49c9-9069-3bae77da420f ee66020f-3e7c-471c-91b6-1b61b60bdf64 68f5b9ee-e4ed-4ba7-9947-3b9c9372360e 522a9e56-8219-40d0-aa61-f1ebe4bb718a 501974a4-4abd-471b-b720-16757a18092a 03bae108-9905-450f-b351-c7abae9d4c8b bdc3b9c7-1bd1-4132-85a9-0a6aae55afd2 4c17d671-b3d6-4c9a-b452-5873ace25312 989add0d-1894-4dd6-8f86-227cda9611c1 30bd05d3-8125-493f-8465-9f12e2ace54e 7a969b55-e99f-4635-866e-977d3b5fa2ae d5c64b83-9b67-410a-980f-b607218ebeb4 617cd2e8-b238-4a6f-85e1-d8aeda784dd1 30d353c2-166e-4cc9-8bcf-bcf00799c36a 2862fd08-3d43-4cdd-a84e-f6726c4ca8cf af24ca15-588c-4aee-a0e6-fa959ee1a67a 89083d27-55c1-4979-97dd-f2d6290c93c9 f3ff8d1a-d542-41dc-b7b5-b44ba26377d2 585d19f3-7942-405d-b9b6-cd9c7910363f 5d7efa8d-c30b-403c-b4db-8ace476cb7ca 5de8847d-2b24-45fb-b744-9a85dc1a7695 1e095c0d-cb83-4999-a620-250c9f9f6715 59e28a95-1b60-4588-9239-d646d09c0473 08f8e89e-18ce-453e-b2fc-4b80d27f0822 37a80250-8ae6-4ee4-8c97-c3712c9137ff 011dfe66-5fc8-4939-bc20-b25c3c27c8ff 1b6d4942-7392-4891-bc19-ae2f0fbc81ae 74ef0c69-b92d-4098-ba17-9f6017aa39c9 df39d9ad-a36e-4f3d-a2e9-791c087373df 557894ed-7c8c-4363-b398-0509dd82f618 cd0e49ce-afed-4038-af30-0e7565bdd1ad fb58590b-d5ab-413b-8647-d6841de8ab05 612d2462-39df-439c-98af-443ea40fe16e 5a0e0512-75bd-43c9-94c1-bacf80fd63cd 514d9216-e253-45db-b6cc-6e83cb067cfc 3150eb58-634a-4cba-bfb0-72a19d7e1d6c ebe76949-b927-4f94-a6f4-da999c2f0d88 6ed39ce8-123b-4a7d-abcd-4518e45327a0 0eb74e0a-6dd2-42af-a62d-cfeda2bea7df fe82e336-9e1f-495b-bdb6-f087ce117f6a 68f39e31-3b9b-4d39-bca5-5e0ba6cb771c f27d2a80-ebeb-45dc-bd36-06494a8b1337 f4960b2e-aad2-4c00-b364-7c13fc50d891 be9329cd-8b66-4398-9e07-0f8ec2f7ad39 87ddfd1b-ad54-4f54-bc7c-2d3b2221b626 a517c4ca-524a-43ce-a902-bb489d90bc60 d65a2160-929a-4e6d-a0ab-dea800790e0a e192c343-c6ef-460d-9b2e-0b3c6c7e38cc 8cec464b-402b-4951-b251-7f369b4c023e eaed41a3-1f3d-4728-ba4e-b8d79606861c f6fefcbc-3d11-4912-b3a4-792f8463da15 fe34836f-f45f-4677-8469-c1180554564e 24b09ea7-ff09-4352-9a10-9f7f1786a946 9e5a143a-821f-4c84-8b9d-e366c7a3e8d6 24eb9330-e6ad-402d-8ad7-4975b360d9a3 4a07a0a4-34a9-43d4-95c3-968aae4c72c5 6616a16b-b2cb-46d7-b2a9-bf6cf34628db 44df2d6a-b027-4596-abc4-d0c1ba9d97bf 5824d453-1bca-41d9-a6f5-41255f16fd96 0bba2705-d20c-49ff-a9ea-99ec29fe4510 fdd880ca-1997-42b0-9ab4-9aa7ce0bce06 709a2728-c834-4128-8bbf-3df0cd17edca 23b47aed-d142-4f88-a142-f734ed6891aa 23be96dc-2fae-46fe-911f-e148d488d724 29660d58-7db8-4714-bea2-fb83da384f16 0b601abb-7ea1-4aad-9242-38e2f4809930 a8038d0f-2e1d-4a0f-8ea3-344c49fcf34d 45f3e43e-1ea2-4976-8098-53c0a0e2c08a d079a2b3-d4cb-4bf9-a7fc-0173438c4712 6e1adcfa-6342-4f4f-ae6d-4c88e3fb0db0 27a569f5-2c16-4dcc-84b3-16a3e4491a6d da9eeefa-30c1-4d60-84f8-4b18d8ac9584 c18a2497-c2d0-41c2-8059-97edd7694491 e002f0d4-beb2-43b1-9b58-72a962907149 2af4f2de-dd32-4399-8612-e3a00dc7fb11 e152b6da-f191-4a0f-9db8-8f7657e154d6 46928be9-8123-44a8-87f1-1f0b6cb62f4a 2d17e20f-8ecc-41c4-a361-8a5a4a5b4a23 ecf54d41-2f8c-4ec1-b568-a993a44f7bc4 0164f449-ce67-4e3b-b85b-7b5c9a4c9476 8df77937-c38c-47be-ac09-239680e18ce9 d2d2a6b6-4c8b-4e72-9a79-768a7cb09d6c 5eba914b-cb37-481f-aeb7-2425d4b9ff00 e6d0fd10-e798-4e43-9376-3ad9cf7b09e3 5843afef-c424-45e1-911f-6500cf9a6b78 c18b8409-5285-4d09-810a-33723128acb1 82e126a0-ce2d-44f1-bdfc-281699bfd5ff 868bee39-e840-4742-a25c-ccbc38fd6660 b8b3597e-283f-4dc8-af6f-da5f6d2cd68b 6030af9c-2748-4942-89ac-1950598a6c65 7881fcfb-0335-42d0-a8ad-a44c7dd81b99 596e1522-cf01-42b7-bf54-527908ab3b90 0d3381c2-8560-4554-a721-07fb38868b93 d9e41b35-3a20-4f42-982b-93c59f6716cc 321facd1-147e-491b-a1bc-2cbfd07b6a35 0ef293c6-189b-4d57-a987-c4d9e3f25096 8a836fc2-d6e5-4260-994f-0d3912468e7f dbb16b0e-f730-486e-9ca2-c85cce1249f3 4fb64feb-808e-4a54-aea9-d6fc45fc504a b5454f1f-7a01-4e3d-ac25-4a4e9e96f7b8 2059389e-d030-422b-ae66-3208908a2fb8 a8c4b11e-9d85-43cc-8142-34000194d3ec 4ec60e7e-6562-4829-973a-1422c2b53fa9 a81ddfe3-bafd-4b60-b65f-5d8991e4cb82 bb210994-f520-4bbd-946c-bc70b4cd50da de7c01f5-cd37-4d74-8599-d21ca9d4acfd 9e832aaf-1dd9-4c53-8e34-8fbbd2d8a07a 2fde0976-138a-4b5f-b896-6f6a3f3915d1 716e28e8-b1b9-48c8-9c60-22afd3bcbead c46d3eae-9ec4-4e57-9af7-43ec4b12aae4 3036af5b-d6ba-44f5-a874-9b522cdf2816 7a02e0b2-05ee-429f-b849-e38ae1292376 218beb4c-b94e-4466-a9bd-b313e9f43797 78177129-d080-416d-9465-83befcf5adc3 7904f206-e7a4-49c0-aebc-572cb4aa9247 15aca19a-4647-4250-8199-a698f78ef121 a14e3415-8ff4-4b07-a0ca-0456d4124457 847ee564-55b4-45ca-8b46-bd90bdb44455 59e58699-d125-451a-a977-296526a70e70 c9532424-0f03-4c30-9c2c-0beb8183533f 8695642e-41db-42f2-a5bd-4a25e3b56954 cc7a00ac-b790-48fe-80bc-c7de96081463 0669e962-5e15-4a84-a5e3-0e5ea100e6d1 bb8ce4e8-06eb-496c-8305-da7f6f902121 34bee8e9-46e2-43b8-9521-c1c06ed7464f 3eadb41a-1eb2-40e9-adcc-ff38297aa98b 2770f147-39ff-4961-9d5b-c75af616bfd2 ffb8a412-ed99-4991-b96d-dfcdb6708a20 3a973f4b-f240-4f4e-9c1e-2a41c259a47e ca153fb7-73b3-4488-aa30-51042d13ea1f b61c8c08-59c3-472f-8211-43e27d59e9e8 bbb25b9b-87ca-498d-8651-6b5d691d945e 0f8e703f-69b1-4682-b1d9-e13b15aa64ab 31bc468a-1d2f-4d3f-bfc1-b19aa05ee714 4cdc0178-5abd-40c4-9642-c95f3b190e98 94ace269-c90f-40cd-847b-9ad3f0bcb919 cc541b44-036c-4449-90bb-403e4d2ee40d 0620073e-febf-454c-86ee-543051f7f4d8 b218e0e1-1dea-4455-8166-3eeedfbffc4f 317f14dd-ac1f-4926-ac68-90811164c036 81c420a8-e366-4c76-8329-6a7d4f600834 9be08a46-cf68-4490-97ff-292dbd4266ba 46fa5b48-45a0-4472-b4a4-f25d90923ce3 a97c5349-33d3-41a8-ba39-ec8109abf6eb a62b1375-82c9-4246-8b6e-8825af9080f2 885da953-6493-4084-9106-b8d34b8028e5 6cc9ff67-7eea-4b20-8ca1-ad1c450907b5 5810166d-9e61-41f4-ae8d-e767604d03c4 531f5695-e6dd-4f05-a282-9699e8bc08f8 2685ffb2-d60e-4f96-9cfe-8fc1c83a440b 0f35a7d3-969f-47fc-9d78-15c9b3288dd7 63b4f87b-ab8d-42b4-88de-2f073e90913b 61a01e73-51a2-4ae8-8bc4-ff2d10a9ae4d b0a9c7d6-6138-4c4e-a0e3-41a2eb421eb3 e30ad52f-ddae-4d59-982b-32876e1db176 9cd3f2d0-71da-4552-b525-59562f9b203a b6e6a36e-db5d-4ce4-8620-2a75c471d4c7 dfd336cc-f77d-4352-be6e-be542ef188bc fea36147-cec9-47f0-97b3-a35b12bb356a 2eefae57-7859-4516-99b4-e58f40619369 c83a6378-78ef-411e-a8aa-9288c9104fee 80855eae-49f8-407d-8d4c-7b94ee129cbd 6f5bd56f-2566-4804-867c-a9b2a425cb3f ddcd22dc-b2e2-4c93-876c-b0c1570fc001 6c60c364-b7ee-48f4-81e8-47a47e096bfb 59db3d82-db23-4640-9761-a37312d32217 ab94c8f3-bb3e-4c10-9200-44d2dc3b00c8 3c2c9bfc-7aa0-4588-a42f-74a15d69dfa5 3b7136ee-47a3-4793-abd1-2ced7146667a 11626629-7d3e-43c2-bdd7-7472be0d30ec 1842c073-63d2-4565-ab33-182c8430056d 5d4839df-3115-4729-be27-0092e9d4346d 52807669-cf24-4027-a1a7-4ab44b470646 f4ff6a51-ad86-4024-87ea-254fa3c3d03f 3727f144-698b-4ebc-b631-e5f6a081b275 b1ccea0d-d493-4d5a-a3ce-ee8810c2fedd 2d4fe8fd-3691-4377-8916-90d414721483 7bd77bdf-9901-4c55-aa20-d60955d97cee 5c33ba34-ce44-41aa-bf81-ba3711401c87 69f0df8f-c603-47a2-891f-48bba06dcc5e 90914914-f8c5-4a3b-b235-93b99fba53b7 a35f4aea-de87-401f-9932-290a651c3578 cb50debb-da77-4d44-8021-2a07ba78348c aa646139-aebb-4a01-a6fe-3ff6cc49d8d7 2a79d5d1-ca8e-42b1-8a7e-7c7b9ad35a1f b93b4016-fe05-420c-b3b3-a55bd1661781 8d7093f5-b7af-4b66-99d8-be26622877d7 de84f653-bb9f-4734-893b-c114944d8f86 5de3e77c-7e19-402f-8606-6c4b365e845a cdc21622-e575-47f5-89bd-7f5d459a3dd8 28edd545-90d4-4d19-a6e9-2d07051d66af 884f010d-2c20-4085-949a-aac3ee3c412b 227a1cda-efbf-42ba-9f39-771bec014f9d 48f63719-f61f-413f-9cf5-3ec458ab8d38 ae9980d3-d297-49b7-882c-6bb08e14a442 4b00b971-5dc8-4180-a316-8c7efdf2d99a 97702770-a3a0-4f96-a8a4-c4390e6a3e00 552f6e34-e52c-41c8-86c6-18b9436663b1 7749e926-c7da-4693-b201-6dc8943bef33 4712a1c1-2679-4da1-a2a9-c1e91a37abe6 e1faad41-6a2a-41cb-b879-0f02e6100c2f 5c45d967-aa2a-4012-be43-df94339a49c4 5b31fe21-7ce6-4ed4-9ee7-adf1222e2762 10786e7b-db29-408a-8ee5-204713eb8e30 44c647e0-274b-4aa4-a7e6-71217be56f83 72d494c5-cf42-4b5c-94a3-a7d74f6c663a 61f9f7fb-698a-4972-97dd-872a216f0732 337d23ef-e8c6-4d5f-bf2b-cd579c4cd417 8ded66c6-9d10-4bc3-9ea6-dd53f5ffdded 432640ac-6406-4fb3-990e-006055fa1758 2d2eece6-b740-4832-98f2-5e2ed68d0b15 cf084c63-651c-4506-8b99-06a0fb431ab9 d4fee794-45cd-4714-b92f-184049b5304a 0f85489c-a2c5-42f2-9570-f5d5c352b368 5b9d71ff-15bd-4863-b53f-eb54d528b12a 06b4bba6-f456-4abd-b5c2-eebd35fc2257 d3724b5b-c642-4754-a69f-d8c6dbd19e51 46916d1d-c783-4236-9391-50fb2dbf7527 8d84efbc-1fb0-4a3f-9713-fa3f17a1553a a0633d8c-a619-463b-a0c6-aa93e832029a 5f970c45-9084-4e69-a931-f236ee86c03c b049b9d0-b781-4c86-933e-044920bd167c a9d3a50c-7caa-45fc-a3e1-eb4effe97b24 43397037-6f7f-43ed-8a6e-74a0cdf20cae 82db7ed1-9a3b-4182-80a7-eff91eeaa213 f60f6c96-9d59-43fa-96c9-209cb8e36749 c0bb11a2-ff40-4811-917c-86ac634debc0 80814a2d-217c-42ad-9a8d-3febbbed5d9a 6d03fc74-a5fd-48ae-b5cc-4b571310d5a0 a1ad7e40-dcae-430b-826c-78367bafe615 9fc1177f-e189-491b-bd6a-d67cc1f061f5 07767a71-1464-4ecf-9962-56883db7d4c2 8e00f275-40f1-4ca7-920e-11e61b842109 1ced7e90-e23f-4755-b87e-7b3c9d0169a5 0deb7dcc-6eb7-4b71-88bb-aed92994022f fd3ea3a5-d6ef-45f1-b381-87788a778b09 39a636b1-d82a-43f8-be04-1199301119ee 6676f94f-e1d6-419e-8e57-f33a6c68eb92 b6cd61f9-9cd8-447c-bd0b-5adac547bf69 fac743ad-552b-4a31-8308-b6f011ef61ce 2adedc9f-a8b2-4d8a-809e-c805cdd66064 23bd9bbb-192e-481d-8464-970f996b901e 7d5e88ab-6e4e-4713-9743-dd953dc85c5c 09312e0f-8bd0-4e89-abba-fe1d95a5136d b9e6337a-d531-438e-b9bd-b01ebffb90af 569e2341-f91d-4dc1-86d5-ee5448340177 4c3fc5ef-5733-44cc-b323-a2b71b9fa51c 8209f6b7-1f85-4df5-9655-80776ae54f51 c920c454-4629-4cf9-b663-3a6bb5cf70e8 8ea119ee-bb45-4c17-b967-5d50b3707566 b8f0a61d-bac0-4329-82cd-5a1c1130c497 6ea91984-668c-4dec-9656-b9408d07e696 574fbb2b-e432-4d42-8d69-a44d7834479c 8150504a-3394-4a3c-9b6a-6c59e67dc1f3 cc7078b4-0427-4fad-8c0f-d6b137d1d98f a821c789-0981-46dc-b5e6-2d10aa7e95f4 782b9b42-e77c-4a06-b916-7be3686476cb b033369c-7afa-4c62-9ec1-c418f7c46fbf a4f21558-a9e6-4f3d-8986-9744168b5353 5b9d90f7-012a-474f-b111-5a1e78e5c357 dd17b32f-9d9c-4448-9175-b01a5018e7f2 0adff703-89d6-49fe-8ecf-ddd05922ffed e10709ed-ceb5-481a-bb1e-60ec59a74fc0 6a00b24c-98b8-49ce-9ebc-9768951beaa6 53bc776f-969a-4f76-8e6b-fbf9f7d5c10c cfa09d2e-dc5f-463b-b209-1c716dd3bef8 515e84f1-b990-4273-817d-d8f025f773ea ac317535-f52b-48c0-b40f-af05b0177c7a 799c8e19-636d-49d0-b644-e2f4a3d698f0 99e50321-84bf-471d-b755-a50c1fa14668 8b386699-bd5a-4b28-851d-283fa65142ce 5d8f6cca-deaa-4c93-b9af-3530021fdb7e a69b2354-f21f-42fd-8855-e091f0f64f34 8a7ec28a-d391-472b-9fb9-3e69cdad38b5 e7067685-4615-4257-8974-973dd4b838b1 ae7203f2-6c74-4d12-9da1-25c38f60ff3b 2f34aeee-e9e6-4ad2-9b3d-ce275e59a4f7 6dd46e9c-3f40-4c55-8b3d-e07e8ef59a55 38312d1d-14a4-4bee-93b2-4a961bb24a68 7236c890-9ad7-411c-82ff-9c4b8b0217f5 a742c39b-b7ac-4252-8257-86a165a0975d dd60f21d-9788-4471-b921-bbf2762779d8 be73bdd2-faeb-4e9e-a7ae-ff4f7001a8ed 81a57dbf-e6e2-4126-a5ae-ce57a6ba3b31 94bec185-1113-492b-aea8-41973abd00ba 3d72c016-944b-4eb8-907b-998741f68235 6ab2f87d-6691-4b58-8520-181b223243e0 a22c6a7e-ee9c-4561-bab3-6c7ebb38ec17 f03393ed-278a-463e-ab48-3c6a621588df 4d52e12d-f67f-42cd-99f2-fbdb0db6f7e3 e5266ed7-ce0c-468f-a18e-78f651f659a8 a88b5f2a-740c-4b6e-8c05-1c5920932a88 49c779e0-11c4-4993-ac55-beebc7d0754f 52d0b6e5-9662-4029-b3e5-ef6e7f5820a6 0978ecb7-8e62-4239-bf19-23296aa2943e a4859a00-ee18-4d96-95a8-27b7664e66db e651c2f2-c212-434f-9e11-2309898e2205 abd0ebc0-cf0b-4a1f-81ea-ecd7a125cfc1 e20141e2-aafc-4091-bd14-556db895da3c 8da1df80-3921-47bb-b3d4-a030a786b3ee 7a6f8fee-5c71-4f28-9ee6-882e5aa6059b 064f07a1-7ed9-4cfc-8a9a-d2969a08d3c4 d2ca0724-9b9e-4902-8616-199863e34f82 388c37ce-c313-4e17-8e22-acf26def6e99 f0eb2d09-e2be-4d6d-b016-d2e341f33b1e 09654387-437f-4d0e-9637-4115af12089a 4196fdcf-1bf6-4274-9dce-97e09b9398ea 70be4f64-25ba-4888-8f36-396baf883177 460681f5-c16b-44a7-abd5-a5b0e37d448f 57c9fd4a-e093-443c-941e-cb7f44a57333 699bd82e-d72a-4322-aeed-adec1dcce49c c0b1f1c6-247b-4511-8347-3dd881fd1a29 c96f394c-134d-42d3-9964-970f0ad25818 654ddb80-39e9-4697-9360-e8cd6a08cd3b aa82624b-006f-4ec6-b879-4e566dd35339 339fba99-ffef-490d-bab4-4021fb8023e2 36adb747-24e6-4be7-9b96-50badeff0217 0a21b1b3-38a8-4cfa-b33f-7bb38ac20e1a 68965bc3-39db-4189-b617-88c0e9696466 7571fcae-9227-4f73-af94-fb2946eb6893 3720dd1e-54e0-4d30-925c-7d96e8e325f9 c6835e6b-11da-438c-88b5-64bd31554646 2c0485db-24a3-4cbf-bfa7-303074c3d175 7abe4614-68c8-475c-a4be-2e41d86a09fc 2a2a9bb6-0bec-475c-ae38-960d7dec6a91 f94284e6-bcaf-47dc-9c79-4ebcabd75c96 1a38bbb0-2987-477b-bb30-fccfeef5b236 e0f5cdf8-6e7f-4a50-889a-f97dc0017434 69383263-d17e-434e-b807-3c35d560aea4 ba6fb0c9-8cf7-4383-bf81-aafe08a9aecc e39fcffb-59cc-48eb-a2ed-a07a4c401783 2c62d94b-d6c5-4d4f-8a88-615130c9d122 1b5f8195-88da-4cc8-975c-afc4bab3a217 dbd3c141-c733-4ba2-836f-e07e1f5d8652 517b0572-b10b-4ec1-aebf-98532158cd0c ff7a757a-1a8c-45a6-861a-e59bba31509c 084d6985-a17c-4ecf-bb9c-c4cc2bee9573 9081bd46-6345-410b-a099-8f8aff26e609 1acdc1fa-3d14-40a3-84fa-7db0a167c4a8 2dabbfa8-5fd9-4414-8bd7-b83ad9ffd531 54d716fa-c847-4676-a44b-b10638bf6dfc 8ecfdc30-b8a8-41d5-b2a3-0446d607164b 43366a8c-5fd1-418a-b1c9-8a92062bde55 42928491-037b-4b9d-9ee1-e1c853cf6910 78e221b4-eb8e-4876-8857-3ef7724f242f 91a869de-6d27-4a0a-9bbc-40aeee3d8163 14e5aece-de0c-45ba-94b5-4c66bf9dc596 bb889b80-8f3e-4068-b2d5-a4138d7b309a bfd5738b-2b16-4387-a61b-6d3fedefcbb4 a9464e26-0bad-4c81-9a10-7e8387f64281 e698bb3c-cab7-4bbb-8a7b-aa9ab6dc814e 34456c47-3783-4a24-a2d5-cda4bf5de752 2c0072d1-e028-48d7-96f6-3a3a5c4c8339 615969e5-bdf7-4a8e-b45c-39cbdec0ac54 a4123c64-cbd2-4461-9c69-9d2cbe5a925d d2478736-d732-4af8-b6e9-5287d37b18b8 9830e675-891d-4dab-920d-c977edf5ca89 3b121779-103f-48db-9c90-d129889f0552 c2f8e4e2-dbef-44a0-9c1b-4dd47b4aa86d e15bfe41-0015-422a-b497-054812ad872d b900f1dc-101d-4532-9056-aa863a4d23e9 79d7feaa-bc34-4dcc-b39f-5440c9d1df47 53869c49-10ab-493c-b13c-2a573651dd3a 65292b92-cc5a-4df4-a043-ebde1812d3bb 6e7bdf00-9c46-4a70-9a40-53fee82d25eb 113ae854-400c-4ddc-8b80-132c483ec551 98826015-31c9-4987-bd7a-405833e8190a 3bb47d68-8f25-423f-bc3c-b980a84b3004 7cf408f0-d966-46a7-bb47-44755ccddb8b 11ab0abf-ef2c-4a7d-9a58-17ed668713fa 7f759b67-c8fd-4eb3-ada5-d2b1d78fd388 217ace58-e3d3-48e2-8e9a-7752955bdadb 171e577b-0873-49e1-8281-c8f2a90db092 8342e4f7-a183-4658-bceb-d69998996229 dcefcc02-e8ad-46ac-8406-dcbf3df845e8 bb7da1e7-669e-4680-86f1-b55eef424007 d172e884-0dfe-4632-82dc-af8e2a5a9d77 8f5e13af-1f48-499d-8fd4-4951b4fca0f8 def1e0bf-3a9e-4457-a18b-6d19acce38d4 b2c68260-c354-4a04-b983-7137a23d6de3 281d83b2-9b53-4057-9f7e-450841c9aaee 374c41f5-1615-480c-bec0-0b35bf56dc98 e63ac618-9176-4167-8283-59653d21fa3c 755d5d4a-c177-463f-8c99-baacf77262ab 8e905358-9ac8-4d35-92e3-0f9894811164 03c07853-4110-4a17-b25e-54154102bb78 f9272977-1c6b-4cc3-919f-1b872631cdbc 936732ec-f9c8-4c00-bb96-14f8dca8ce6c 5fd9906a-86d5-45fb-98aa-94dc13a5ac4a 483ce3b1-a343-407a-94ea-937fd9d0e40f 2e93cd0e-8dbf-47d1-bd2d-cc957d607f10 e3e64b37-fd7b-4518-b7d6-3bfca412c8b8 0dc92639-92d1-4c1e-af07-310e39c9d414 2b5db34e-de2f-4f0b-8d18-6284fa43d0f2 1281475a-71fd-4ff2-8fac-23e8a5b854f7 45bb38a3-5989-4d4b-9fdd-806173eb106e a460b80e-b532-4670-8bac-58f5e92c3773 f4e32762-c3b2-4d8d-b7f3-57c8fe907c7e 180a66db-9a64-470c-8d3d-604e26b825c4 dff2e5dc-e31d-476e-82a1-87ca04d1453d 5a258565-ea33-4a10-8298-549c64d8a078 d24e25a0-ed8a-439e-95ea-21f30620e422 cf5dec18-7bfd-4a70-b2c5-cca8b44b469a d3130565-0206-4b35-9a59-73541bab366f a972b392-78b2-4390-85c9-7c2e2787a34f 5434a9d3-9a34-4cbb-b6c6-ff65aaf71e4b 41eea244-8358-4934-9d69-bc31fabf1cfd 786f034b-725d-462f-ba0e-91822e035ea9 22554c66-a83a-4296-a724-208e0d18c7fe 7ee6b73c-6fab-410a-a640-aa6d41cc8050 7139e77d-9132-4884-a616-e230d2be99a6 8d46d83d-e71d-44be-ad1d-a4edbfba1aa2 a78e3f60-557f-4735-9fc4-0dc8ba6ae6ac c3a30dee-d5aa-4619-8355-1410c862575e ff3d50b3-43ed-434d-b92b-f79959296f61 db0d654b-2d43-4711-81fd-77e0ce8aee1f 89e67179-f35d-4949-b83b-b6ff8d7d90a5 01a09e62-2aaf-4953-adb2-d7b253487a9a cb8f3d18-f256-44b8-a541-276b29f8aa4a 1c32cca5-5e8f-4044-b9bf-121ec472f62b 69bee11d-a7aa-41cb-aad3-3367c5be628b 9b703074-608f-40a7-b05b-701256469103 acf55e37-188e-41fc-8838-58457634de5e b4671405-4121-4a70-9731-4d0718c41fb5 08deac9b-339e-4bd0-961d-7dfce5b5c035 4f066cd1-5386-4241-9914-4bdf2ce0f7da 9f4ad636-a06b-4932-bef4-bac77f3c7844 22da365e-eb81-4e99-b504-6f3a223e96a5 97e2599f-fe7f-463b-99ea-b048b97a4cd9 9d5c4671-324d-4458-ae1b-2cd233d6dbaf ebd26237-38c5-4660-8974-620dff254141 ca2dc39f-72aa-4852-b7fd-f4c328941dd8 a3b0c881-1c5d-40a4-82c3-fc421c711e9c 600651b9-3308-430c-a004-2eac99f5c140 bc01200d-b6e4-4aeb-af74-f5ad91a89f95 b4488878-e5f3-46a6-8171-41319b473960 e86dddb6-468f-4ec5-95fd-70b5b87a0ec4 9021457d-4a2f-48f0-83c0-06b9c3f0cdf8 46293bd1-ea27-420f-ae47-eb5a621a19db ce748fbe-66d8-4a67-8926-08311b33264c a7666947-9301-4fe6-8ce9-207f32e6dd2b 4c9519c9-c786-4d30-9fb7-766b83cdec6a b168ed3b-2e73-4c9a-9665-0065ae24c422 0fe30173-a08d-4bb2-8165-525cb9b25c8d abb37e55-222b-4ab6-9db9-71e106a2f10f 50e0acd0-0516-4a58-b0d5-1a874ba61bfa 34aa3905-0e56-4ed4-8a50-38641a49d5e3 75f1fe4a-f210-449f-ad74-d0a9d7a11b1e 28fbaecd-0fa6-4655-ace0-d3ca129386ae e853572d-b449-400a-af4c-dbb14b001dc0 0c4a8d04-cbe4-415a-b9e0-8b554e147066 d446f2bb-642a-4f4e-90f3-72d29cf09dfa 701d1da1-e3a6-47e1-96cc-e711d8c47519 6e4bc7a8-e953-40a8-9377-47e049b1d4a2 3059656b-b8dc-48fe-bb1f-aee794e3440a 5c6acef4-d238-43d4-a5ba-bbe582393540 4db14803-3138-41d7-9d91-ad1cc5923f62 9ed1fef3-1dc4-4d6c-acee-8407cea6ddda dfe47208-c859-423d-98f1-af18b2926544 4c3042cd-c67d-4b8b-be3a-3e7978882da1 9f49613c-fdbd-412c-b4f1-3d4c016c06f8 d054feca-ca59-4e97-a3c0-69bc32367777 3236fbea-c83c-4de1-82fb-0571d6b67478 75961157-9b2d-445d-9bd8-7267189f9a4f 7c276f1f-9408-4dfe-b502-16a78a7e8225 cca26c80-20e8-4e21-a8c2-b1bfeb1647d9 c17d8f19-dea8-4de4-a4d3-6f2b8384589d 8399bb32-8d74-47df-8321-7ff5c4631fc7 2f07b416-f78f-4b8f-a6ff-9f465cd65fe7 b24b3388-5203-48a3-aaa9-1fcceef332e6 b1ad2486-70f9-4c76-bb55-24ee7556f0cd ad4ec5dd-371e-47be-ae90-6ec810fa8996 0e17a96f-e0a6-42f5-8591-290fb88f77d6 fddb97ba-30af-4210-a8e3-c9e2d1e33ed4 876a24a0-e49d-4865-9a52-ec05da65a2d0 633a6929-5178-4348-ac55-50bab68bd10c 9cbca15e-1970-43e4-b92f-0ccecf0f7288 c239d68a-1f81-4300-95dd-b0f573c7ffc5 68cbc5a9-5582-4b5e-885e-5383dc548bcf fd921962-9c7e-4eb4-b314-a8485dfd21f6 8d617ee3-6996-40e3-b0f4-f1d6ecefaf1d 147c9aea-01de-475c-9244-9cacc0e50407 8639baad-c2b7-4f3c-bfb6-b9d7deb33f25 32d5eac5-b4a4-4a6a-aa1f-c61d8791a515 d49f55a9-c05b-41cc-9031-bc9e0cad2e47 a74c7b6b-4e2c-4174-b35a-ae308cb8911a 2560277a-37fe-4db1-ac24-7fb7c8710232 30e2edb0-1c4c-4fe2-94f4-22a3c83a15c6 c43ab801-5309-46c1-b0cf-47ef9cc11038 8e8809ae-d01d-4901-92d3-b09d01c1634a 30dfb384-e00c-4126-9642-5b6b02233615 7c309cb8-ac79-49fb-8a41-99dedd2e5ce9 27d74b3a-3452-450a-9826-e214c5ca176a 6d47ec2f-5b5e-49e1-bf7e-b28b243e4410 039ebb33-6790-4e17-88e7-a86ac4c4121b 15d4c682-6a1a-4ddf-8c3b-e12bb8861539 6edd6420-2beb-4764-a09d-ab0f38075b8b 2f797495-90be-4d24-b013-1f7f843b07c7 8d6dcb2a-4f12-42ad-9ae5-6f1ec07b3bc5 8add2cb9-851d-4c72-ace7-2e0ffd9b205b bd7ecbdd-293f-49dd-9d20-570b9570b059 a140218f-fa0b-4a5d-a0a6-3843ae35f059 98ebfa0a-edeb-4bc2-83c5-bda93ef090c7 ad2f7f8e-9649-489a-a8c7-3ae70d05b0ca 7fadfcc8-a886-45db-bf7b-2a5351cf3f1b cdf88d35-709d-41fd-a117-fd58e80aacd9 deba1f8b-b935-418f-95e7-dba7239403b9 ed019dac-ae8c-40ac-afab-c98633b78b53 d9117b2a-1b24-4521-a804-94e8506ceaaf e54a1d5e-a543-4579-bd39-6d67db902831 9085345d-72e5-44a9-92ed-538bb9e1463b 88f1a69c-bdfa-40a1-a662-b63f28dd34d4 fe65ae77-63f7-42dd-8ee8-e1fbe1f402b6 491487c2-4df9-4b2a-89cb-0ceb5e27bd2f 0da7a97c-75e6-41ff-8a6b-defe9856438e ef2c5f84-443c-44b9-8b68-43f0d4904cd7 defa4e8f-2d33-474f-8f22-c849a667613c 545c6087-5e32-417c-b529-1551cc8c02b5 e5a5303f-f1c5-4208-8867-4f6fe08933e5 04296205-af6b-4477-b9f6-0190e8e0949b e7716c61-e921-433c-a33e-5536a2b739d5 5fcaa72a-49f0-4978-905f-de1851a0babd 016f36c7-0fc4-4cd6-b008-ee185d701ed0 15ec618b-d24f-4b89-aa3f-fb93b90244aa 63929065-6993-47cd-bf5a-1f984f238ae2 c2970c0f-7855-4c96-a101-23bcd7e1d59b a1e64fc1-b557-4672-a064-6f7e9e769f8f 8ca57956-40b7-406a-b9fe-d828488c05ae 8e95bc9f-6f71-4fd6-b09d-9a5015240210 5203d855-57e7-4402-aa72-6f20c84705b0 5d4f38db-158c-4aad-9f63-290fa7939eeb 9444e3c2-7a86-447e-8558-bb7774211896 21bde4ca-20f4-4a80-9a8f-5ad39fb4ec7f 7e1004a4-60a9-476e-bd92-5dee875a39b7 e2bb0a15-6f31-41ec-a0dd-eee42c89f7c9 a4884564-5fe6-47ef-a281-f7b70ce6314a 8da6de59-72ca-4af2-b121-b596b111d459 0f42c7de-08fc-45b9-8eba-2dfda8a0d401 9725a885-c5f0-43b0-901d-3aff9b00a070 cdd8769c-1595-4ee8-a2a2-0678199952c6 93071d1c-11db-4ecc-939b-62638cf28d96 c8350810-a633-488a-8820-0203f312ed13 7ff03390-0194-47c6-8f84-56b13864ac29 2353cf1f-1bab-45fb-b39b-3261a1d5b78b 2351f0ed-6c95-4bd4-b16d-08acbab8d491 84f34af0-2c0a-4632-825a-4f1d1388cb3e 7e7430b7-b023-4f4b-bba2-7b6eeadaabf4 745dbcb9-863a-4dd4-aff7-8e7607504aa5 a6182f4f-80fc-48a9-a720-19d1fcc67ee7 b2a2559c-b972-4116-850e-0faf30b5fe45 b2acf347-cc1a-4a2c-a6e5-417bf054cdcf 2afdc4f7-f088-4e69-b211-385023413996 6242ead5-7cbe-425c-868f-b5ab862ed742 1d690bf5-c378-4c49-9035-cdcba9f2be8e 84a7bad3-ab9b-45c9-83ec-747b5fc02c1b 4dfbfd5d-0059-4a65-9246-4a816b734b47 7bfcd84e-d86e-4883-aa76-8298a012a085 2a4bc817-c416-4c1c-a9ae-a9cac9121983 f57f3413-b137-4a6d-89e9-cdce86a78791 c6a94261-7e90-4f3d-a11a-963d3ea53eae a80ff724-fa1f-414d-b2ab-3661b4362f69 58e142d7-02e8-4868-ab3c-ca4024d8b548 7f42d55e-01a7-424f-848a-c35c8cc30fbc ec004c4a-dab2-413e-83c7-85863825e615 5119e6f7-bff1-4ba6-8265-e1a650f87662 1fda0dce-4fcd-4bfe-9f21-222309eb3a8c bf674c19-01bc-430a-b592-ffe18cfff553 12208aca-b38f-450e-bcf2-dc512ae24578 89072f96-f60d-4b59-b743-24fee65b4b61 c8d45f38-af5b-44ab-b52b-029dda85108a 4b6743e8-0ae6-47ed-ae21-3b17d6d0f89c 40f8d02e-1543-4451-9e60-27db1313b841 356df1db-d672-46fa-a672-9b6fe24718c0 7cdc9628-c6be-4a92-b53c-e525d8e52041 33ff8232-8f7c-4ec6-accc-54cefa52fd1c 528f9bde-eec3-47a0-88bc-0b3cfdc692af 20f11dc4-7fe1-4a85-8d35-3ff25333a251 13b5a780-c38e-477a-9650-0a666400821c f982341b-561e-4583-95a8-6b49d95585cb 77ea3a24-0b66-4f68-b327-90850bf5b68a 3d657ee3-6f93-42c7-9af0-4d12118a6605 5253a825-59dc-492b-8405-ed5acf9a69cb 809e1448-09ad-4eaa-b875-043e02fb689b c964765c-03c3-4366-9838-bf80596f0057 66c4e483-f5a9-4b47-8abe-2ee2d5884bfb cda67bdb-ed5a-43e2-b149-5f9347d13ebe c103526a-70f3-4c11-b1ef-05df213f7d8b 1e51c9ff-b19a-4bbc-9126-897ac93662dd 03fa4421-f3f2-40d9-b582-8810731b8304 0f9f064e-b77e-4c8e-8e77-38d2ec3b79e3 cbb5f696-1058-48fc-80e1-5305a7e274f4 67146650-4c84-4fad-bbd2-7ef84e1276e3 19a30bcb-7179-4b3d-a9c6-bd5d0ab40673 6f32266a-af0e-4805-860a-4ca1c25d3eb9 ebb403cd-4937-4888-b6d0-828709d86c5d 9dbb88a1-7eb0-47c9-9b87-3af9dac2d9f2 d331f5e4-f55b-4d1e-b11a-54e16ce3774a dd764399-5909-4940-a1b7-0073bfe4501f 02d9204a-ce0c-4629-bfb4-cc485e252110 ad051c5a-e528-4710-9e2c-47d07d9278cc d0a07864-0c58-4afb-9aae-46b796313ced ddab172f-dc22-44d5-abd9-a6fa3e06cd27 aa3bc3fa-404d-4751-8d62-048abdec2f83 c42ec8c7-07a7-4416-8dae-d40f9a7e11d2 f967728b-2802-4c49-9be5-611a3dcf9e7b 584cd89b-02cf-4d0a-9732-ebb688592c7c f1784037-eddd-4ff6-80bd-716d5c4ae583 e7c2d4fe-a58e-42f8-938a-8c08d207dba1 a4bdbc23-a8aa-4bf2-bc3c-611097de9fa6 a1ac84b0-8274-425b-acb6-5a2bd1976ab9 ac1e8741-5ba1-4b89-98cc-4c5b5f3c77c3 90f81ea4-c6b8-4c2c-a916-b712074fbb7c b4629acf-e81a-4f4d-a49b-3da1523d0476 3de6b120-ac8b-4dc1-a798-33f95bc1cd80 546f4992-8135-4d57-aefa-920135b89abe 6420c916-6ca3-4ad7-bf06-aa3cbc62f644 b5ee4f5e-ffa3-4f72-9cbc-d9ed2cbc646b 8fa060d6-13dd-4354-aeeb-ff0fbb2c4591 2f58a9e3-c510-48b2-b080-886f1d0648d2 097ec758-340c-4d57-9b0e-d36eecbc9f89 8292036b-df4d-4ce4-b2ed-06396af5f013 f8da0e23-1496-49fa-a7f4-7c243bf92737 9fb8006d-3f55-42aa-8d5b-d72ddcbd40cc d51269c7-ca8f-490b-9571-6f863852eef9 8133e803-85b9-4956-a411-0c0c92d3b90a 28fe5478-c858-4c66-92b6-17b229627c03 9c4a1955-52ea-478a-a9fd-294beb9f8a2b 8916de7a-346a-4339-8fb9-16f0354ef0f1 e0416915-81f4-4f55-93ef-1a6af88beaf8 b87ed7d6-99a1-4500-9a11-beba016eae90 919141e9-3a37-466f-aaff-9a472686b275 eec2ea75-46d8-40e2-bf8c-f133ea5b59d0 c1478ada-5c70-4227-a2c5-0d080cb1eaf1 66c0537f-c53b-4eb5-9504-1a607f19f26a b4a5f371-1054-453d-8d79-cf901c7f10db b12368fa-41e2-49af-84e9-9aac919dcc34 326fecfc-bb67-4754-9e0b-0445444c280b 205a5ebf-519d-48d1-902c-167603b9fc46 85c81210-fd95-45a8-b5af-8a8a2fb8e323 6e9df64f-9f99-40c9-b731-235780935838 83cc7440-3601-4d57-a964-a4b7bb32a92f ba32e2c7-4631-4758-91f4-2838755b05a0 41486626-299f-4aef-a8c8-acbd4a90e767 b362a645-3a44-47d1-bd14-d8c74181e895 bb60f16b-172f-4664-815d-2f0bb0e3abad 5c81c02f-9b9e-43e1-8125-c3435adce7ca e938ea73-e6b7-4791-9382-78a6cbf65f83 8867c37d-c96b-4ff7-bd29-92f71df3c249 a7fe2767-70ef-4869-8cfa-0b1a61d2b6c3 24fd2b8d-7958-4cde-a324-d8dfe0f3794b a0a7a16f-4f6c-4eef-b70a-f079b75b24bd ef712c68-9749-413d-b049-d5234e9ae023 ca703a99-7863-486a-b16a-04d5a396ea5d 4679f16b-3170-401b-bd53-95859b494566 1c2e0e4f-ecb7-4bfb-9d15-a302420b15ed a9002fd6-8e08-45a7-b064-80c9094b0719 a06af877-048a-471b-8fc4-4b902487bfc0 74b3cf16-c84a-4c0b-80e7-aacd4686636b e94ca9b1-60db-4586-a2af-2a57ab68c325 dfb4511a-aeb8-46d6-ae79-41226ca7aca6 624e764b-034b-44d6-8da2-14e651aa8fcc 6fa7a18c-ef56-4d67-b190-45241edf315d 90e10a58-d77a-4a50-8c08-bc9293b2fbe7 5f6f0fde-24bf-4736-a3cc-6e6713b391e6 c647b779-619f-4394-8a12-a97c5b0ae969 71e5ecd4-711c-40bc-9e61-6f529401ced8 53f6dde5-df0e-497f-b70b-fd3eda7e3fbc 1d0d0738-0d4b-43bc-b577-1691943b05ab b8340f7c-0fff-44a4-9512-d9b97a2033e3 4ad37e36-14a1-49f1-a30e-013055dbdb64 1840b4d2-1170-4e9b-840c-8cd1cd5162cf aa0cba50-a8ed-4516-89ff-54dde6735e50 1ac0c4ea-d36e-4aa4-907f-cd238cba78de 259255fc-0129-4b66-81b0-5c9611462644 7e2c0e4f-7d48-437d-97f4-06fdf8591fc9 5066674d-643a-4da1-b5fd-dd684c5ed8ee 819649ac-c8c2-4691-977f-4cd524c74d2b 65ffb85f-9164-4323-8573-ae5004b91ed3 951e3d71-8be1-4015-ae95-3c8bd1b95487 46bd7f7e-7a16-4c5b-841d-294e8b12f149 6bf31ad4-702e-4883-bbd6-70f7705cdc81 a10c6a0e-275a-4ede-b092-f18b73125076 30607f05-66a0-4439-a4c1-f10d0d727391 1d73119a-cdde-4364-a620-fb02dbf05e1c 7b10fe16-14b3-4086-b1ea-276a84c52026 6565a914-a32f-44ff-9c35-c0b9430c9103 b5929a11-abb7-4355-9e08-75af69870c05 783152e1-15f1-4495-ab9e-19c7305bbef6 13d3f52a-fae3-4be5-acfc-9efe6bc8c388 14f2bffa-daed-4519-893d-9c30442eb485 00e5026e-e0c8-4a6b-b476-47f83604ffe3 fbec4896-13fd-4da5-9a4f-19133b050e1f f731b2b8-6f79-437b-a995-5a1a2ae41832 d1bae475-9f92-4537-8fca-e1640c2c1537 54905198-408e-458e-b96c-b8b548a63f3d 84cfa858-da7a-4a6b-85ac-f9a60877d092 2506eae5-2527-4b98-9157-d29fe9377c82 ab91c6c5-eb99-4df0-9d07-44b1c7fca6c8 df040f81-111e-42ef-bbe6-41a7f96050e9 d31e4500-7ef6-412f-b835-18a66b061c04 c9e819e4-7443-49eb-96f3-0644d06167ad 4e6204be-36cf-4307-b7b5-4de5b8ff6daf e5ea87a6-ae47-4f55-90ff-7a3e141c3fa2 0e73d728-9d82-4832-9201-960c861fbe4c 22c94f6b-6c74-4350-a82c-0dd2efd325d0 5fbb4577-4f02-45f8-93f6-d726300bceb4 fef1fc78-d166-4c6b-b10d-447661c25bd5 bc5ae712-43fd-436a-9229-4038e781cdab 7d8afb60-b520-4678-a6c1-a51d1b6041b4 43121378-9e74-41a8-a7a7-675099b54341 e0705e34-4dbc-44ad-b17f-5152fc019cb3 3abc4459-9062-4b43-a0f1-432f949d83d6 5c4d2fca-5ccd-45d9-831d-b0e1b9a5086c 0906d704-7aa9-4ed1-a280-2009d4fb053c d50d62fb-c12c-488c-ad41-438d2a52a9bb 205e785b-dfc6-4d69-8f55-80c84c0436d8 439b4712-09f0-4479-a95e-cbab74095e8d 3f6440cc-7377-46e4-90c7-4bdbb099e341 667ea932-161e-48b4-b63a-06c5b67f8b79 2cebde36-a18b-4c0b-90ae-aac1204b47db 8cbb56b1-2b90-46d1-b552-00c532e7ceed 12e899eb-41e3-4057-bbe2-078d2bf85dec f03fd39d-1e5e-45a5-9a39-f0638bbdc822 6c30746d-a247-4312-b440-6e4194618d44 f85cddcf-9e52-41e5-8a74-c673b620eaf7 8074e895-1061-4cd4-9102-c75fe3d30f2e 5a9167a6-374b-4d0b-9f82-6427ee7c3475 00c23711-1ea6-471d-bee3-89826bea1895 ef9f9f45-fbd1-4ab7-b538-9a9b06b0600c fa8afd57-6921-43b7-9276-ee2c6bc4201b 4bdbad89-ef9c-41e9-abfb-7cfe205e5915 23924682-a6b3-48f6-94e9-b2f85618096f 7dc89898-d1a7-4403-887c-642935798e60 12c6ce39-1443-4417-bcad-f76987df299d b2e1b0fa-271f-4560-80f5-f36ae33f1641 6de4049d-f86a-40a1-985e-74f983f51d03 2fce3e22-ddeb-4a8f-9a57-5a8606d87d7a f0f25f95-56c7-4d9a-838b-b18698da0b05 e4823c88-989c-405e-a5e6-8de68bf4c174 f256c2a7-5e9a-4478-9b04-c9f1d52389f3 b2baeb05-6f43-43e9-97b7-575baf1fb5ac 0a9b5920-9391-46f6-a37f-f668a2978dbe 372bd9f1-a8c6-401c-8b85-be169b228fe8 bdb6fe86-a24e-4fe1-bd8d-6834b333ba93 923f98bb-dc02-4b28-a4ae-e45e8c6b35b9 388cc677-f401-4bf6-9fa2-9ffd9b1a06c9 6c8cb76f-41b2-4d39-9c24-46599e320307 8cb8e672-344c-456d-b373-76d3c8e29d76 d5a68ce6-5d16-48cf-93f3-0be194e0813d 8a7f6023-b8e6-489a-874f-32785a680d99 9833b1e5-a447-4df0-ba40-497af5b9a228 d863de51-5711-4ad6-b088-aa555838b785 5e666970-fa69-4a93-9082-a3071fb56fbd 7700af18-38a4-40b1-a40a-69e4c04c1b1f 65c439b4-89c5-4bcb-9535-5d6127235c41 f2626004-91cb-4694-9cc2-5f76e3570659 f099e453-d40a-4a8f-b88b-6de6da980017 a8617874-1f21-4000-9b8e-c92571f7d643 dbfcce2e-783b-4a17-8049-c93fa786bdd5 b9a02449-8628-4e85-b88f-2fccabf416f1 0dee2f4d-eafe-4fb5-b774-3038efd68985 acd09be8-cb35-4460-ab7a-e65dc51897a9 f3d6b273-3b71-4073-83c5-9be3d814e7b9 9e9c9744-ba1a-456b-9c3a-0c988767bfcf 88e0f397-d996-4ed4-befa-fc2cdd0b786a 2ae3ef3b-f48c-4de6-9799-40c847bf7932 f7e2ffcf-15c7-4862-b990-d62adc15fac3 098a527e-773b-4bd7-a146-0955ced47826 3ed9e530-d895-47ba-8caf-822b8bdab7c5 41e355e3-0752-4a6f-bfbe-5946b8e93f19 b8062e1f-1b3e-43ae-a33b-20cb7f821e09 66ca437f-a847-4b89-8201-5ee3aa043e3a fbdaae17-2da0-448c-ad55-5e032f23dff6 34c8cb7a-4c94-4da4-ba4b-a127d766ee31 1ca1d4de-8623-411e-ac88-964c1d025309 12e34b26-98a3-4153-b540-3bff877f90af b93d6d09-06ae-4148-8280-5f3f1e5544c1 243ab4c0-d499-4b54-84d2-13265b54abd9 434b5af8-e8c2-42ad-8b22-82044dd3b979 cafa378a-c1c5-4a34-b175-1c3c4a5ed878 daf78ec6-ffb4-4271-92ee-024666bca31b 7ec64489-bdee-4ffe-a01a-0bb76c6a669e 6ed04e55-2a7e-4556-8b57-c050a5070028 b615f4b0-5f41-4ded-af55-997d988bbe27 eadeefcb-f5d2-4638-8264-d50d766e9c19 0cb1faf0-dd36-4ea3-bbda-5ba2a1d4412c 0b2a8d49-0700-43cf-94a1-7e33026cb955 4f1b9655-5e1b-442a-88df-3a4f8775291f b8b23110-e916-4345-bb7e-9a02f70d0fc0 9e568a0f-ea9b-42ff-9c83-209c4d46907b 9860aa60-6102-4faa-801b-eb33ab916ce9 20085823-245d-4b3b-8ef4-bebd6cc5fdb6 4df4927f-8407-4bdd-b8c2-62bbc7a6c49e 0dcfe340-f6e2-4eaa-9d61-fde124e6bd54 69944b8b-9d3a-482a-8ecb-dad93460df8e 489b86ad-3a49-40af-9975-f910fe5b51f4 89faf9b3-4176-44ef-a41c-917ff23989de b2bf0f16-6ad0-4f1a-8d6b-3e9b2b7bd4fa 566a8fd9-2faa-446b-8c6f-858ff02dc996 2d5d6e76-27d1-4458-9fdf-4fa976242d16 b4a29a1d-c10e-404e-b272-3be77e508dbd beae3128-5cff-4996-afdf-8932a84783e3 c18dfeba-b1ee-459f-9b0c-ec010389a54e 8f286225-f927-4476-81d8-a4ef796306b0 5c8698f1-62eb-446f-8307-b6aa8c64b475 79b2b2d2-9293-4262-bd26-e02c5c09c27e a26951d6-51a2-422d-b6d0-664f70515460 2c752e06-7343-4d0e-b503-87f4a6fe8ef7 ca806be1-45d8-42ac-9e4b-8a5df9d45003 8a052d5f-a39b-43be-90ed-ec9f4f82f84b e70c3386-87c2-40d1-9d28-2bb8ca780b39 80a052dd-f9d6-4b82-87b4-d9ef95294101 21ebc94e-d6b3-4c39-a471-711b49456344 21b71424-06e6-4be6-b44f-bb9e03ea0892 374fe855-5f67-4799-ab75-04fce63558ef a197f496-db43-40f9-b0a0-03e41ffde8cc 77f917a1-4a57-46e0-8a86-ee98660daa53 a2ca1a60-3ffe-4ef9-b850-c9f98a217035 3e31ca9a-146c-4c61-a13f-c2b771c9e3fe eb75e1c4-8936-4572-986b-de513b7b2c2b 0861e1a1-39a4-44ed-bb97-d940a2d39ba8 e1cb0235-c64c-40c5-9aa3-07d76380f14f 7933ac77-31e4-4648-ac49-666aab49c59b ca494006-2faa-411f-b5bf-91ee6e9fe079 af311959-4c54-4d8a-81fe-35eaf3d70e5b 9e666644-a5f4-403b-bd6f-394d2548ecdc 2d2c1497-a5b1-4a17-9eb8-cadfac21d3ef 1a3b3cb7-2ab4-4a81-a2c8-63cbafaee3fe aebacd81-6977-4066-b57a-5badc4108b64 b6171fa2-eebe-413a-b67f-5b4a6dfa9b63 fd07e710-cc24-4c1d-9fb6-2ac583741e60 04a17119-d099-41fb-b420-b9f8c40a92ba 39d0d512-8824-4393-a446-3ba7d835a580 88a70dcb-101f-481e-aa9e-b2a5adfe271d a94d6c4d-471d-4719-8464-c4bc48505910 d6238597-94d7-4420-86a1-9716ec61a849 c6aab605-c252-44e1-b60c-e6a4e1ad9bdd 8a87540f-d59b-4660-9c56-f66f8e427b3e 3e3f9331-8d10-4564-89bf-f1ef02150f1c 020752f6-aa07-4415-9334-8581f5acc467 e143bf98-5e0b-4183-bf62-72bfa88e7e1b a46d6be2-f4a1-4467-a1a1-711a48c93a51 2edba0e1-a102-4e21-a191-7c7c729654d0 5ac35899-2b18-4c74-8e6c-aee86be89c06 6823167c-d497-4f34-9bac-837a9737a8aa 30ef2549-ccbe-4bf1-a033-6fdeea600705 eabe87f9-3a3a-4e1e-a919-3820d3d3ecae 19e81ee6-ac72-4259-8e35-e2dad3dd53c9 3caa9d4a-33a0-40b7-b167-d34c161558db 73f4b1e5-b6ea-43d9-be51-de87f359a574 fd08e82a-3d5d-4025-b6f5-4c02b0c0cb72 1371e4fd-ccde-400e-b653-5e33cb0ce1ac c7d49897-c218-4a24-89f6-dc0be37fbec9 839ab4cc-b5ec-4f56-8459-a93fbe76ef5b 52723bd9-c220-4e85-8ffc-ea7ae13d333c 80a7d0e3-8891-42fe-8901-34efcb815906 c9a2c352-2b13-4863-a98d-32046130cfcf 70881892-d2c6-4b3b-917b-c35e18fe7841 6eb37302-9698-401d-b78e-a6dd47e24eef a34c0982-ec7b-4765-a32d-b8050dcb6add e46ceef3-4384-40b0-bc0c-1e44b7c79439 d70ebefa-d923-4b6e-8087-95ea375bd94d 4c8bc33c-8026-4469-9ee9-e59fc3df6834 6fe96779-b95f-4b76-8c1e-f987b1aefb7d 5aeb0cd7-9dbf-4504-8bd5-ee3c313fce2b d3a85534-7dae-44bc-9597-2ab9768a5880 8df4ea0b-bf1a-488f-a4c0-26cac1103940 d380cff4-b436-4893-8053-352c7f04cde5 fd12097f-5bae-4f0b-a8e0-65bfc843ac6f 56a88cdb-9aab-49e7-9b6e-6cb3dafe71ec b27cc53e-d5b1-4ada-a7a1-21700fb23bd4 15b54ae0-3e8c-4b76-b73b-d5ecb5147c7f d0818fea-9bdf-487c-9a1f-28c153965c93 fed79801-e2f6-4117-9ea7-4593a956423f bc9cc4fc-9224-4868-9968-e826ec35915e e7fcb8e2-01eb-44d4-8f5a-c47500a84f79 7d18ab42-3a43-4b0d-b952-d442126061a7 ac6abb7d-f36f-4995-8d26-8c2b73a307cf 34ab5e42-e337-4fa7-8148-b9a06dd19363 8b1f9f65-14cc-4882-a318-c60186526db0 b97dda6d-3220-40ce-b779-b8067853d98c 1dad7b86-efa0-4911-90e4-e4ac167f7502 61cd311b-f02f-4fb1-8635-3ac98198c9f7 d2840941-a9dd-4409-ae32-39370d40e5a0 e007454e-dd95-45b3-8093-4c4b90f34345 c8a50442-95f8-46bb-858c-1c698c73202d 6a2f75bd-abb9-4251-9f3a-57e94f5fe5fa 03d529fc-47e0-4af0-a991-7afe52e03167 c095d2f0-0e16-488b-ad9b-fe6b802f82b9 94e805f1-bcf0-423c-a2c3-ca163e621583 0c36d5d6-0dc5-461e-a113-4fd48bb99350 c23dd834-570d-4bc4-b8e5-012794713d48 7431aded-caef-44fd-862a-533926b60d32 da53f9ce-483c-4f29-b087-58fdd6799438 6898ade1-b541-4962-b0c1-7f003373a5eb aeb80be8-2d48-4d2d-b362-898ce724a506 bf0eef6a-7e32-44bc-b688-df320323002a 9979505d-8d92-4615-8cbd-0ccbaf1cd7dc 82aa416d-0262-409d-9635-16031ed98d23 8acddde1-ed47-4615-8149-39c411b83a10 e181f8ae-67cf-40c4-8d98-b3304a36e909 8ba504e1-d125-4402-bf60-24672d1b652f 2e8ce5d1-1856-4d1a-bed5-ebb7c4eb4e33 d26d8a05-3f25-4e6a-83b4-f7b7059a8bf0 f0279645-1dc4-4e45-b758-eb156d13a369 91908c31-bf64-4498-bef9-4276226b10ac 0429b25d-ed17-4420-bbbc-20fcc9667bd5 de01666c-c5f3-4662-ba0e-5579ba7dc917 765b46d0-d6ad-4c11-b34d-54c3689c91e7 d1d2066a-a88d-4c04-b0a2-2a9010c2309c 76882016-2a45-4970-8111-740f426fb105 8eaa913c-e5f1-44c6-bd9c-bb7b5bcf8be5 26409246-9abb-4574-b40e-2c1e2b6be9ba d4666fcf-9677-4a18-bf3e-8e2c67f13a03 7f0bde03-7807-41bd-83cf-580104f461bf 73471898-d4a8-4b86-92cc-eebb80de5d8b eab7f01a-78a8-4e84-827f-356288a4970d d642c76f-c846-4555-8ff2-5803a6c08494 e5ce04ef-6192-4810-b5a9-cc1cf1b61eb2 c01c106b-a50e-40ab-ac04-02c0e9a25e83 c945c064-e5b6-4c6f-a13f-7beee13ea781 b25bdbf9-0b31-48d8-b25d-266322511cee cbc35b76-705c-4718-90f2-bd74b1107e5f b7156b83-5d84-4cca-8f77-0fd5e62233a7 84038967-eb0c-434c-a769-fd3de7645d0b f357bb38-4b87-4fa6-8ec1-51e3ce7d0dc6 30bea1e1-df7a-4491-a34c-2188c488dead 2086fb67-5bb9-4587-aaf0-e1f54115c395 face003d-3aaf-41d8-a050-d0a563f44900 290f6cdb-5fdb-4967-8448-bf73c5966c31 580f9595-e291-440c-993c-b0df938bbc51 6e3376ed-2ce7-4db5-8f2d-c36eb64ffa72 2ef835e9-4a1b-4b44-8190-bb62a009e764 598cfe72-87a2-4a6a-978c-dd442493fb88 e4acdf1c-d0c3-4738-bb2a-848ca946748a cea75f1d-a1b5-46e6-868d-ce4972361a6d 568334d8-8fe1-4602-9e54-5d543b16cdaf 2281b5e4-6795-4a76-8637-73bfcb794d4c b085ca16-727e-4a8a-a5b9-5271b6b8fae1 44d81e65-f789-487a-8c9f-bea4c6ba8e3a 0889fcf6-67e3-44cd-9f77-de384c307db8 47614b5d-8905-4614-96b4-7c71ea291f97 14f28674-8746-4cc1-962c-dfb7cd89a61e 6f65c5de-9920-477c-ae31-c0ac0ef16d18 dcbb7ebc-7f59-4e3a-b390-762a623ecfa6 d10db441-05d9-4ea8-be47-8ee46740ddea 934c1a92-b536-4136-813e-78a2bce07f3b 05755656-7689-4b71-8b43-3dd6b6a79138 829f6bfb-21ca-485c-a5a4-74b54f3036d2 719e6302-3f7b-4c4c-9bbf-ab392a617857 646c7f63-de8c-4568-80de-0427aa8b5846 cec7e5b0-4826-4be9-8cb1-d07c06f30642 fce16118-15ae-4eca-aef0-1d922e611cf7 091be0e7-6654-4c48-83d5-68d58e986e67 03dd1fb0-47c0-4cee-b196-fd967536e8f3 4be91b92-14b5-423b-9f70-02d1faaa3f65 cf8b73b5-3e5f-401f-954e-f3c81f11c92c a132a692-1991-4fe7-aae0-ef256c97e4d0 367b111d-5ceb-4c16-ae17-490540405bae ed239aa7-919a-40ea-8c9b-73669477464c 65b291a9-aa02-406b-9f7a-e9e1b134c906 16877f5b-fa36-460c-ba4b-a45a94ab6e6e 7457fffa-8322-433f-adce-16157b26f99b 33970212-cafb-45b2-94b5-15d8d8e6fede 15cc3147-49b6-4157-b618-504111f39dae 46de2e36-203b-4e7e-8085-330425cdde47 572cd436-cc10-492c-9d55-90f05a231063 40503370-47c8-4dd7-a09a-fc0f64a77919 007c8958-63a9-40a4-a016-cf1cedb6c202 335bd324-0ea7-4cc4-9958-9c48df7cfaae cd06b26f-1f2c-4688-90cd-962a153a552b 5882375c-2369-40c8-805b-032285dfd36d b8c81fc2-2d11-431f-ace1-5df26ab31f55 115b351a-8962-4dbd-b659-aac4af19c98c 35365cc1-6c97-46ba-8b90-000ebf16a8e1 7f07d4a8-149e-403b-a54e-f9c49a6694a4 8fb3f095-5199-4f64-9e76-e66d32d80543 2a57d584-f5d8-41ad-89bf-c33249c5473c 29367232-094c-4643-8900-5b6403862789 6f108f14-a2f1-4c8b-9b33-4138f8379607 6bad8a56-fccc-4f7b-86a3-668f25321663 d0d08dd7-5f43-44ac-beb5-11b0fa9cbeaa 682906b1-11d1-40b6-9ef9-7a67ae89f3d5 8b208ee0-fc64-43ec-a287-08f518840b70 808f959f-9e5f-4bdd-89d2-e711b3e89bc2 52054076-6b77-469d-a172-1f814e6128d0 e53ff376-fa4c-4938-bb84-23fcebb80288 d835bfa0-8f8a-4471-86b6-5a6f2645a5eb 2dea1624-d4a2-4276-89cb-e29ac7c64f25 e16f68b9-2fe6-476c-a677-621119a5df9f a697e40e-8919-4b65-bd70-8eac0734c616 2cb7cd4d-6c96-4765-bf3a-99827a122ecd 33537bed-e962-450f-8208-36841699af4d f560647b-412b-4a24-87ea-7e1cc9e5cf30 3f05a0a4-a2ba-48f5-bb6f-e4a0ed12627d 5d740893-0629-450f-bb11-e7227ec292b7 5ec45769-5510-4dc3-a44c-fad5522c28d6 e702aa56-2c96-4068-a774-270f42bec1b2 a3a75b5c-c3d4-45d9-acf8-2d1302f6b381 40b45a74-b191-4f57-adc5-5703d59aca66 7d1f426b-1052-4989-8ea9-9cc316b119e5 aec6e8e9-66fb-48dc-a21c-24d98342830d 13f389e7-29f4-46c3-a0b4-57b975df9177 65c4316f-9d3a-4af4-9cbd-6e4f9f261084 cc0981b2-b5a6-4edd-87cd-4c4ca2fa226f 0861b7c4-ee57-4c61-86fd-c1e80d31ed8f 9b568ad6-7e6f-432a-9590-e3d696816224 13469483-2a0a-4afe-9dc3-918b4081fb32 51c74a50-63b5-451d-856b-9b86bca38a1c beda86b4-ada4-4e29-8ee5-0a0f125722ec 895ac89e-d5c2-49f1-82bc-3eebd8fa1a41 df04f368-8f83-431a-a4d4-888bfe911022 32c6347e-b178-475b-ae05-4c039a686c0d e2815c2e-58cd-4d07-848c-fd802e18a7a3 35e5ff3f-3486-43e2-98ee-09f3c5ca7c12 1eba7d84-74d5-4cbb-bfef-f9a3fc4a0691 e6a07897-0617-4193-ae8d-92bb0d644935 13854079-9374-447b-9293-66b5bbd7a4aa 9db129d2-02e9-4c61-a39d-257990fd6e86 3ec8a9d4-0cb1-49c4-85be-e5e69d244fdc 02158d45-2b0e-489a-80eb-406a806fdfa0 5a0a0f01-2087-4251-bfe6-a13e2b575ca5 ab5af90b-08a4-4253-92e2-8bf508d89aa2 bc87193a-7aed-47c8-be3e-0dee196a79d7 2bddb582-dad5-448f-af64-56bbe186f5db 76920768-068c-4543-8674-258c11328cc7 0a594d6a-3d26-475f-8c7c-c72eeaba74f7 e775c365-f8d1-4492-92e5-5acfa3bd77fb 139d1e8e-cbc8-4dd8-8d25-aefac7953c04 c69e7165-c700-484c-bc7d-16484a50a2d8 391f1207-a122-4548-9acd-9ab11900b9ee 86682edc-2935-4c6b-8b60-8c722a9b4323 443f5211-0823-42f9-bb3e-a26c0972b68e cd30e530-5caf-4aa7-8e5a-b71a9b7ce80a 2d75a512-d52a-4a83-b69f-2909f8a33120 5f2eae3d-4f7c-4441-ba09-d83975f175d5 2d034d63-1efc-4cb9-9b11-c958b829c036 432c2a1a-f77c-4c1b-b8c1-68b34fdd4ad0 67b18a1f-40f4-4db1-9179-b42a9956e8d2 ddb5ba94-ccd1-4f6c-98de-43fb8e32f97f 90e690f8-2f33-49bc-b158-c6f0c77b2e90 50191f4c-0cce-404a-879d-242a698321b2 5be7e9bc-1e86-4705-ab21-0bf893f4537c ad09c5cc-02be-49a2-8bf2-20121d772c96 82126466-a6cb-49fa-99c0-75e63c546433 60f71116-610e-40c8-a3e4-7d6204b24a9f 60c52827-a5ed-432c-9dfc-79516179559a c86b0921-8b44-43aa-8778-d15ed4be46f2 2da91022-44d2-48d6-9636-f8218c46b448 0508b2ce-239c-424c-ba6b-b5721bcebf38 3e02664f-f0af-4255-b742-a23612620ac9 f38ff57c-cbc6-4d27-b38f-7b5d2363a60f 5372c3cb-4626-4ec8-aea5-9e50ef2eaa64 1ee76b69-4712-46c0-a98f-7b2e71d103a8 b78bda26-6d57-4716-bf77-07b703ae882a 196caef7-5055-4b5d-b8c2-4d8a9847251a 78fc5476-ea4c-45ef-9a5d-892ef5bd51f7 ce501ef7-cc26-4ab1-b967-14fe997bad62 14f72937-fde5-46e2-a27b-362b78c0b6e2 7de686f6-d03f-45e4-bbf4-0a4ec961eb95 2d4defe3-38dd-43cd-be4b-43a6ae5a3bc9 f6675097-ed43-4892-947f-74d779dbfaaa 65ebd695-c1ea-4fab-b634-8afb1ad4e59b c687a9cb-7b10-41c3-907f-98a792ebc290 4f0f6af4-29dc-4a2b-b395-edc931f713c7 5070561e-ef90-4ddc-9fac-6f7697878664 b9bdcfd0-fa25-42eb-8d37-fc6b4b40f07f b00bfcba-39d0-4e72-9c02-177cd2f3d6f1 98de09e5-a336-4fb7-a715-1f02da14302c 2426691e-6975-4873-8df9-b29be7ad992a cfee0955-2e3c-4b90-9da4-f044ebc33877 a7a54d1d-e0d4-4995-97ec-686ce966bb1b da20734f-8b80-42b6-a606-2857a8b2d573 dfc834ef-1cfb-4d2a-bcee-efb00c2d6f7e 8b601975-1f63-4686-9b75-ddd4ba9f1f25 eba575d1-9ae5-4663-98df-9feca151c7c4 fad4942d-ff55-467f-8199-3703b81fc6ff 1c8a1862-4a6f-43d9-8a87-c7a9c4b1c2bc 0e7bffe6-3771-4f3b-9361-2ac4f3412fc6 bab2262d-afd7-4b4a-b685-0f8b5a759d6a 26c3764f-6085-4f45-b637-7448129a236e 7bb3bff3-0648-4f84-9612-941ac0ee0a84 43c7153b-144e-4bf8-ac54-270cf2b31b84 887a9c0d-4573-4a5f-af88-92e1b6f8853a d37cd100-9aa6-43a4-badd-8a7f153a663c 7fc544b3-c034-4a91-b759-02099a94253b 421f4f83-f8ba-43cb-96be-bcb97a71c731 4b707e37-9499-4fa1-b388-e428612b1fad ecce6810-42c0-4daa-bf69-0d3da47e5706 7f36fd07-56f8-441e-9d30-a390523c7bdf 297744e9-d76c-4377-a51c-0c31cee707af 073afa6d-1bed-474f-b2e9-2c4e01fb1016 f5ab7aee-ebb8-4c87-9994-0e70732f2677 aba96882-5153-4347-a1a9-07033977cfe1 a3479c08-9d5c-4c14-80e9-24620119af4e dee32f1e-c788-49d5-91ab-fec72ca574cc f1be147a-4e4c-47a1-a6f3-dd569ae9d037 41bda23a-5f30-4929-b861-9c6021349ee3 94abc6f6-10b0-4a2e-9609-dcb4129b88d2 cb27b653-2dc2-4eca-a230-13295cefe151 f5f229a1-e7c1-4e62-9d42-10ecd9aa4ac4 4d39ed69-f04f-481e-b7bc-d0b0c553d03f b075e32f-ca0d-49a1-b2c3-a70b5ceb9780 aaf63e39-6838-4e01-9a44-61dce38ad828 86dcfa05-3cdf-46f1-80b9-d2da3d1fcd5a 3613e5ee-cf51-4d9f-96c2-45f348319742 8b096c5d-2af9-47a2-8774-faa3e7322433 86e538bd-fd25-436d-9122-22799fcbf362 86fa00bc-c234-49e9-8f20-90daa63a66db b8ce41d2-be28-40ca-90a4-34aff0060e3c 6a2e8918-9bcc-4c8f-af1a-5bdfeb9a6751 75be0b0a-79bd-4072-9f82-093932d67fdd 2d8608a2-5b59-4937-a81b-810b43dbaa91 7236813d-b40b-43ab-ae14-e9c91f1f896d cb9f9cb5-f32c-448a-bddd-e082dc12676a 6105981d-77fc-40b8-be7a-e08ddf8cc8ef af1ab9ed-ec0b-46b0-b3eb-2464e157aac9 da129826-9e5b-4831-8eab-092a14c56712 bd59c5aa-da65-43ea-8f1a-1b84d771ddc5 bbbff518-571e-4539-a468-2b5ee67c3919 1b35e4a6-b797-445a-99cd-856201217b96 d9678ad5-746d-43f9-925a-ab6d0b0a96a3 297b9915-db04-461d-bad5-5ba3a7a5cf97 147dc456-5cbb-4a84-a6e0-789b8a462ee8 bad986ee-0993-44fe-8954-c386321ea418 add57d4f-09ca-449e-85d4-bdd8a24d36b8 570630b4-0fe6-44bf-9db3-fe1357902657 ca589adc-e59e-482d-b1fa-d61c94777d53 c83a9819-299c-4067-8026-0320c8b15ec7 a84d04c9-26a1-49b6-8134-b5e034fb0b00 fc8c989d-011a-4f86-960d-69946d2727ac e9803090-9e37-49f9-a126-506c0f2c32fb 52bb51cb-cc45-4628-b079-aa34bb310f19 07ede818-b143-4a06-919b-4ddbc2b45ff3 b3272a44-abdf-4762-9979-bc587f224c4d 12413aca-8fd6-4de8-9b26-74466de31133 63fa624b-2d2b-40f5-b326-fbab368fe1d5 f2029ad2-6474-4e79-91d2-888fcac8dc70 73de38ee-7d67-4580-8821-1a63e3238196 f0e0a47f-b431-414f-b1cf-7273c3fa48b2 ce9408a7-6a15-4195-b6d4-ed165f22875a 086faa2e-a50d-48f8-a093-21e54e015620 818a78e5-03ce-4c4c-86c3-ff43f3016d3b 96ba7e1b-928b-48d6-981b-82d609f1b151 77430523-5ccb-4648-8b75-9d12806934d0 b37eba32-1a66-48c9-9bb7-5ac0a6ec5955 0c564804-c641-4a4d-9499-b7859fb7a74a 5854547c-6ae4-4c06-a6e3-0e922d8d1651 477dd6fd-6eec-4f98-b37e-7acbaf7c7695 620063ac-ad14-4be8-b8eb-0eb3f325d68f 68bb505d-5b8d-4cfc-aa49-e6e254c4ddac 233ce905-433d-4df9-b758-dcd1dc81846e 743ecf86-cc6d-46d8-b1a3-c5e87be83330 75245c0a-c085-483b-9a55-a57539ffd823 05652cc0-fa6e-48b7-b705-f8386fa5f4ef 2132462e-0be9-4c47-b539-67eb176b0573 7317449f-7bc3-46cd-8785-cd03b078791a 2010671e-f5ed-4d38-9a10-bb2b90f017c5 84aca191-71ac-4043-b65f-33cec82960bd 7ac347a1-f999-441b-b538-777c8d433b3b 10b5ebda-57af-43a5-bca4-e6e90c6d3a7b ae0c94f6-09f5-4d79-acf4-f8bae8f46210 f524690b-8a67-479a-9b3d-cf6e94b6e585 807d5eeb-1dea-4765-969d-ecea15dbb392 c799654e-acc7-44d9-b46d-7ad3b933bf2f 1f9c16a2-b2c1-471e-ab6d-a056961e8c79 d3f3d983-2e9c-436c-92d1-a150865236dd 6a5ecc2b-22b0-47a8-b7ec-7bc09f1b47fd ad7e7c36-6e88-411d-bc02-a43b63a6956e 9fa536af-f051-42ac-81b2-dae1e1826a26 9f303747-0662-438b-b00f-cec20bc7c5be 5004ebba-8030-41d2-a4ca-9013ac0c59b7 08fd48c9-4962-45f1-8a20-e6ff9e34b527 5afbad8e-1d1e-4fef-83b6-addd2dfc4a63 9fa9ce95-419d-4e7d-b3ef-fa9b10a3adfe f85a360b-b7e8-4085-9c1c-43443e33106c 7c2b4de9-f84a-4529-bb05-b54f7f1cae43 22c29814-9d37-4721-8576-8aa0803e84e3 96abf407-2768-43f6-87e4-27f598f7fa63 349e3d0d-fff6-4036-a1d3-c853be7611dc 1ccd32c8-7471-4b16-a642-52100e55333a 3c3f5375-50c0-48a3-956a-5e0d36b48a28 a4600132-d3c0-4fae-8471-25f9c2938b39 2537012a-d7b3-41da-935d-99bf50d7fe40 036e7c4a-6d70-459d-b9e9-64edfc15944c d8d0a88f-4d59-4139-851a-2cc705cc8c37 ca8d320c-f515-42ce-ba3c-82325172cf12 dc44c313-c595-4b65-a31c-1d941afdda8c 5e26f0f8-0638-4230-97ea-408c411e439f 6121aab5-be75-49e3-8ac6-ef0411f2071d 51f50f77-a42c-4aa4-a731-e4cba6de2385 68315c9f-3917-41e8-a332-d8144e15adee bc37d8eb-b9c5-454c-af13-2b47bd1add2e 1067b5fa-a4d5-4b13-bd7a-4cefcd7030e8 8a7ca076-88b2-43ca-825a-96026b0f0899 3779cca2-9fc9-445d-8d1d-1b1c7638c83a c9c14044-d1a5-4172-9b9f-cf9f1da8ec1b a04008ca-8c1f-42fc-99f9-5afdba6740c8 872bcd57-4648-4224-a2c8-e2380481dd85 717a443b-a22c-47d5-9ed4-d29b1a59ffe6 e2cf85c1-c89b-4265-9abf-0620cb180fb5 62db6f2f-e2ff-4f46-85e0-688cb07b055b 7ac9e379-0b3c-41b2-8abf-f59b9c89bd5a 35c6ab66-fe0d-4d32-8676-793198ebfdcb af833c69-88b9-4f7d-a5e6-8c984b191277 85922d0d-9ac1-4549-8c82-866843aea66c 2c718c8f-7fa3-46fc-a17d-a2cdfab2f6eb 5cdfbda5-ca50-421f-9030-963cb7339580 748f543e-dc8d-4334-a84d-77af7b8fbb20 73f848ea-7d3d-4b37-996a-70da6e324843 e0637320-1357-478a-9140-4f98825d7401 8d6e7a70-13db-46c6-adf8-73601f849ab4 a1973b22-0d85-4aca-9064-cb0a201407d6 4a56cbf5-651c-46c1-8f0a-c9c3329ab042 c9a02eaa-31f8-47e1-9f5a-9afdee1e984c 2b550440-2460-4911-bf0f-065fe7c33e1f 8f21db07-04e1-47af-a276-fa1909a6235f f6fba8d6-2210-475c-933e-7cba93a6648d ca38d44e-d0db-4809-8e12-b22768bc029d e4bdf0f5-bc1b-44cb-882c-02582902bdd1 a4f6f5de-f6e6-47f6-8648-f3c5562fa8e3 a9b32fb0-941a-4b6b-8ec5-972750fef8db 8bd51f97-e882-423f-b300-972a2b6dfa8b b1f4b811-b863-43df-a7db-d536df3855a0 1509d3f6-9b4f-40f0-8f02-422324a1c686 c5671b09-7dc3-4bd8-82d1-44c888c9da09 3c31e66d-0dba-458b-9b30-421c14cac06b 6c648e96-f20d-45a2-9387-04dab7a10dd1 26ed1309-1628-46a6-8cec-69c975dabb88 bcff30fc-53f7-488a-aa03-f4f5dd88d185 5a318624-2f2a-4625-85d3-ce30d4b924bf 0ad9ab9f-300c-407a-8725-8ad64c481f2e 2752ebb6-2fb0-4fde-a527-519e42c62cdf 1dde2304-415d-4979-b045-e074e5239973 e7c24042-5665-4591-a79b-92f10d7858c6 74e00939-7ab6-4f01-a7a8-f4605ce14d3a 60eaa564-6ee5-4515-bbe2-7f9bf6048e15 66f3109d-ab38-42ac-8a16-fd26008220f8 36809971-e5ae-4c3a-a8cd-f1629b440885 68e44d00-32a2-499c-9b75-68e4a3e33e88 3ef5a668-300c-44b4-9314-84063ba4f956 c6bdc764-3991-4425-a09b-469cd5760070 b0125717-f5d9-4bc8-80e0-daa2b29f4d61 9aea899e-f4f2-4d6e-b240-679334adf660 2c39d215-5b44-4a71-aac2-db7e59641343 d791cd81-198b-4fcc-ae5e-76dae281c65d e81c586f-497e-4bc8-b755-ec62a8815fa9 d936d2aa-6d16-4ed7-8178-0bb15473d581 5cb3f292-4e9b-4ff0-9209-010a32944b2b 825e56ef-1003-4caf-b88b-7097902ae6dd a837ae82-21a9-4325-85ce-cc0b24921fcb ae5e3f26-dc50-4d1a-8b4f-4f1e8586fc56 91132bdc-9fe2-4489-b4f3-87c0582e8c99 4ef2d101-bd5e-4593-b7d7-fe29143cfbaf 0f0e7540-f87a-4fb8-97e0-0a9d87e070d7 c1145d51-24c1-4fe8-8436-f74f447319fd 0608b0cb-6575-44f0-947c-e6e5218775d5 34f88a7e-f7cb-41fd-855f-78cd78b38334 039427d4-55d1-4789-b3f9-c375367b0666 7caee842-deb8-416c-bfdf-6942aaaf2f71 f33e24fb-4282-4d53-89d0-ba0f71647d2f f37f59c6-385b-4117-838e-8799798be1b1 b973d70c-fb16-455d-ab5e-3e6332b3a65e adc091d6-c738-49c3-9dcd-b78cc0cd642f 5bac1faf-fda7-44ad-902b-23b9fd9f274d 270d3015-e889-4369-ba8d-3b25441b1f92 dec52807-0598-4662-9323-fac8a37234c3 cc80b67e-d35b-4c8f-9bec-28ae08750cc6 cc54d1a1-ef59-453b-9c4e-08c382c38d6a 91476171-9754-446f-abb6-be31065dd1c0 d9d45aea-e074-48a4-b56f-01b40d2b6bbd 8b36fa2f-d594-4012-bd82-736a4dd80238 631c577b-8100-44b7-ad9e-3ca0dc90cfc3 9e96e315-a0e0-4de3-a871-415fabd0ca20 f702ed9a-0a3f-413b-87c6-5454a8381d17 8fb07e81-927f-4396-b1c9-502551c86a9b ef26f0aa-7fce-401f-a961-6179addd3902 ae95d7ae-3ec8-44a5-9326-32c0eef1cb3b ce25a540-c72b-4083-b9c0-7907e1bbe31a 100eb8e1-5d9a-48c9-95e6-87215f9fafa3 fd8966f7-708d-4678-982d-1c9835334cec 3ebca3fb-5b81-48a8-ba29-d6ebed90e763 5237c0ac-4704-45b5-8f58-872973598a12 90e975b0-4631-4153-9f12-b90335db90eb abe88c86-4f2e-4cb2-ac78-70cb74e71998 04ef687b-7ae2-4039-8c46-59ae12cd0534 113ed997-630a-4546-b960-2024d03e9cbd d7c6c877-b268-4f1b-b419-2fee567a1b7c 79cfda38-3073-4f83-a3cd-31b854905575 3bf24b7e-9e8d-4bd6-b343-dd5a613f63b5 d000cdad-028d-418b-9119-a0d56e70bd22 87e1e55d-b106-4c7a-89a8-b90c4bd52ffe e9b76662-3970-40b6-b9e7-ca9f9eaa5644 1e5c4392-3307-4267-811d-17ba3e99d07b 06f76166-28ca-4d58-b9e3-b6905fdde7dc f5463688-ed18-44d2-99ff-412742ba2917 6aca8724-f53e-46a4-8bc6-2280d1981da1 10c5b81e-9a51-4ecd-9ff3-e72fb186a30c 0b7eb364-d978-4943-9877-25eef6f134a8 37129f4d-bab6-4c33-a0d6-624b79ab3803 ed3b418a-8559-459a-a07e-e19b0577d2ff 57066f68-0c26-4185-aa00-bbb9acdd4c67 9c377aa4-1ccb-4c4b-8746-604ae3231b7b c0a6a85a-fe7f-45df-b4fd-2bc4dc4429b9 da29c6e4-feb4-42ee-9932-6e6adffcf88f 181b6342-d93a-4afc-b749-608b786abd47 a3fa22a7-e44f-46c1-bc5b-f3e543c38430 3f3b6f9c-5395-4890-9b3d-c45a944e075c e5e77b05-4174-40b5-b4f5-dc5969374ed4 99ca34bd-c399-4e55-b8eb-4f311962b8d0 9ff763c4-7b64-43f6-8542-2d493efae265 8e386c8d-3677-4b12-8aa6-c770c66a23f7 d39a3b99-27af-4926-b005-622d38aaafe8 3283ad38-cacf-47a1-92f2-b7d93970f909 25bf037d-a9cd-47d0-8d7e-49965f66c8cc 1fcbc91b-d8d2-42fc-b4ef-78e7e1d7f1df b0c1827c-f6ad-4d7e-ad89-8d71799be437 e03630c1-502f-4695-9177-fc8a53ab16ed 2be38b52-9c9a-44f5-bea9-0067298003dc 7725ee41-b1cf-4e8a-a397-a68a815a57dd fdd54592-034c-4cb5-959e-b1c66717a337 110c0133-c806-4586-a217-8f41e4142f2e a63ea11e-6e4d-45e7-8881-3bd3bba2fe0a 2cc66e05-0c07-4cfd-a90d-ed5e4a0ea776 5de3ab7c-53ee-4b09-b6c5-f8c708f3729e aa172ebc-2487-41d7-ac32-8c98e7134e6a fed18676-5ab2-4558-bbd5-8f6c9a3281b3 9447d704-83e2-4e78-aebd-c004ee490dbe b3c9a5d7-d3de-43b3-a56a-2d7125505c13 619f4bc5-87ef-445c-9702-46618b3c97b8 4b85219c-c5cf-4d7b-81b6-02efe6740c40 76724835-dbc2-4083-ad3e-156fc6accda4 15dada8b-ea35-4504-8f55-4f13922dba87 84c3e800-a1e0-442e-894a-ec0ce8c4052d 5f1db6dc-61b0-4236-ace4-f889133dffca bf66fb15-bb62-4038-a756-529468db372e 4d10328d-da3e-46f8-ae07-7417fef4afc4 54e45d33-cffa-464f-a227-6de2dd051f02 7d210e70-32d9-431c-9987-67c418727132 fc08812f-263c-4f3a-929a-cca62654e531 f50d6625-3a72-400e-afa4-82aa690a4c93 35e2084d-6dec-4bb1-8408-2c3545db7156 ab9c9a8d-a314-4fd6-9dc9-45e41ea42e16 8ef9af24-e104-48f9-ae56-e96d55853481 e11c5110-5c53-4437-85f2-bec846c3befc 937acc68-5e79-463c-970c-4c45e769256b ed152c29-188d-4749-ae36-6e096dc13970 d1f3a4c0-9c33-47ec-8728-2b0539d75ce0 92598744-874d-44c0-977d-f5a42ca91698 e54fc951-3b66-4c08-bcd0-1e9a735ebe60 29ccd775-02b7-4fbc-aaca-3da4ebf84c20 fa5c2ac1-329f-46c8-875e-af6038e735e6 64c8603b-fb29-4ad4-b5b5-2e593a0951f4 20192f01-9ad3-452b-ab8d-48fd1c4886b1 4c24087b-e46c-4820-9af5-3f4a7ab172b5 d507bf45-33db-43fc-8045-f23bf9c1786a 6130d2cd-b365-48b0-ae19-830c25897203 0d7e7d04-63a5-4a9f-b6bf-d8a2909289ab f2d31f26-5f67-43fa-8a3a-637d4e2dedaf d5a00031-4d56-4c7c-8cb7-21bece76830a 85e713bb-c78d-48c5-9dca-3fa143f7a0c8 c4b9e797-8893-4130-b1d5-03bac4c394c9 fd7de753-e23d-46ec-b8d4-d366a8189c80 5e36d031-4c79-40ee-9701-b593fdaa24fe 2d152d82-42bf-4e94-94d4-35c0ba65f023 7c8f4be8-dd36-4d4c-9324-91e87121c0e2 cd497ad2-9815-4be0-b8d2-0c8abe36503d 1b41ace9-76c3-4e2d-9c4c-1f3330cacbf6 289cee98-24d8-4907-93da-e954d912b607 81ef3653-3e9f-4289-8ee0-e8b6068741c9 cd9bead1-ed08-4ed1-8cc5-3cd4416f6e0a 0fd11aca-6b55-4ef8-9429-e7d7e5e387eb 6c357425-300e-4fd0-a164-2deafe20c004 916cd932-0de3-463f-ba23-d2c9abb9e818 7f53451f-e802-419c-b2d6-d29d4ac69daa 16d2bbcd-bb45-4816-9db9-bc0048515b6a 9e9bdcf0-52c4-4d28-84b0-07fa8f95f361 49a11990-bfe3-44d5-a29b-9851ec4d0ecb 8fa6d7b9-0d10-4f81-b323-5da432c70b1a 9cc96eba-7573-4f88-b57e-88d093a8a7b8 35d3b0b1-84a9-42f1-9454-e68339c9b302 4a18a83c-8df6-437a-b3ed-2aad170c5bca 857e5b09-d8c3-4524-8e5f-183e3d1ef57e cd8cc779-3af0-4af3-8bee-db9a0dce8eea d52744ef-99bc-408a-9246-92d4f7e5747f c211369f-f378-48e5-8d12-fabcad5c0df4 de8595ae-7735-4172-a0e5-b820527089fe 27ea8a04-7c90-43d9-86d3-00ea435f8fee 4e6cb9b6-f094-40a0-955f-c063f65a58e1 49f6be97-976e-4956-97c3-dd98d458124d 710837f8-c80b-443c-8a45-6751ab6a38d5 d0a99189-cfbf-4a67-b9dc-91e3c207a347 dffa8772-5e5e-4542-bbab-4191fb377582 b2df25ac-e18d-4fb2-abc4-1c8e0bc0bfa6 b6a4680e-4e7e-4127-906a-00ae93ede9d4 720a4b1d-731f-4812-9e5f-3baaa03577e9 e0e1d2c4-53b6-46dd-a30e-08dfc112f3b5 7fe0c4d5-c6ab-41ac-87e4-b9401ee972dd fe749286-c23a-4c36-8f8b-3c8447416cac 63461386-6a5a-413a-ac02-0a0621e0c431 0be81cbd-5757-4107-b1de-e8b0d406c521 6d1ae2ce-14da-4814-86f6-ba608b944146 2b934d3b-50e4-4a96-a6d8-a69cee63d00e a5629acb-23ad-4caf-adb6-0433eb5d654d b4b3920f-b356-47db-8819-11e66b25feba 01a6f506-3052-4a3b-a28d-3155cfc21309 e7c9fbe0-b33f-4e12-bd5f-a7debef20b02 32785133-1831-4054-a1ad-e0444ef5b7f5 3b83a2b3-3261-4d00-ae5a-0bdd82db4b76 8d54e7d2-9731-454e-bfe0-32b82c6bfbd2 b04cea9a-2dc3-4f9e-8893-7b205107e8b3 be45ced2-eea1-44bb-bc71-09e3f7938f09 076701c0-5cad-4e57-998c-18f5a61f2ca6 fd8f4324-c2d3-4a25-b52c-9bc851209111 36bdae40-9b0a-4488-b7ae-05b187fad65c 8040d121-d04e-4ca9-be38-446a684887a9 2d4b3393-e39e-4c8d-a24a-a5fc0ddfb478 cc44f6f2-826a-4d20-bd03-166db26ae1b6 39767595-2ff0-40cd-b71d-5b7f75f17629 f4a38562-e7ec-4446-9a7d-02e32eab5f7b e88ea527-4ae0-4f51-a10c-e1af7766764f b26d8d9b-e69b-4d47-926d-5d3b25ca8421 00f9cde6-a0f3-422a-885a-f5466615c8af 9682c5bb-d02b-403e-af89-c28009c4caca a869cedc-bbf0-4713-804d-c3c410ea3f0b 0f87cfa7-f83b-437a-9465-7ea10628a595 df370248-255d-417e-bb08-bd3c6032f377 6dfc6e62-a16e-4601-a823-d5ec67ab270e af14402d-ca6c-4499-b59b-06b84d245f0b c3389a11-c08c-41f5-bb0c-83d3fe2c4128 8939a8b4-3f10-48e5-9e83-c96d1f804d9d 8ee9c4cc-361b-45ca-ad8f-ea687fb2eb72 e8e43a40-baa7-42ef-8039-a08c9d8bc456 903bfa32-c945-43f4-990e-f5c81c736e40 655f0d0c-8825-4950-813c-d93e6ff032db 5f575820-cca5-4d8e-a77a-c3c545703d8e dc599a1d-47aa-4cf8-9c0c-d39e52e44c84 144febd8-eaff-4f25-8bc8-9a32d9265d3f c8948647-1a32-40e8-8763-a4251c8812fe 68b48ff3-329f-4ef9-ae56-4f251bea0858 7b5db670-060d-4f4c-964d-0ad3be2bebc7 aaef7e9e-86a2-4d1f-9333-ee7bebc37b85 16685a6d-123f-4a2e-8102-12c61d1f501d 58edac54-4351-4e62-afb6-35805c238279 9169b18f-5932-424b-b723-2a10a18dafa9 bccdca9a-c07f-45c5-8c7c-b55ea7b8202f 008f554b-2bd4-4bab-982d-5f43623078b3 37f07c85-54da-4994-8512-2617b1ec00f0 860e6710-7c97-474f-b3b6-2ce420f2f125 d40b0d74-82f0-429b-94ef-285e0eaa3e8b 1c604040-c350-423f-9dee-4e86831d1818 9fbf1c3b-7887-46cc-a78d-d0c7d2284c4e 80591c15-da6b-4525-90ed-cdd3e4dbcf8f e739d18d-b192-4782-af66-b1d3d8f08bc1 28ef239c-9abf-425e-9073-261c05a0513b c1325a21-b4b9-4db1-9c75-cd773dfa0974 74ecc25b-7e81-4c36-9deb-f0e058a154d6 b190ea1e-2ce1-478b-8dc9-e6efaa7a84f4 be8425a4-5cb0-449c-bc4a-6dbf8ac8c9cd 37bf2f6b-97e1-4cc4-a659-5660045362bf 0f87558c-373b-4745-b504-710ec2d5a2c8 f1ad11d4-bd87-4690-b7a0-4c6603e25f58 6b8e3d2e-decc-43d1-b60a-6b47d101669c 2ec43967-323a-427e-9de0-8e4035e1e3cc 6c0b6037-1603-48dc-bb35-00885a1b300c 3e5fe847-c816-4143-92c1-75689fad55d5 a8811a0b-663f-460a-9d1a-80b3242ba48f f0143fa0-8a99-45b8-bc88-9a901add2f2d ad962a4d-0b79-4ce7-a7ba-247425b32933 b6231bc9-5b34-4aa2-b6df-4b5027933c58 8e035ded-9a10-438c-ab14-ba653ce89091 916f6709-7422-4cfd-a60e-2476492e4b5b 489fe964-e6b0-4194-84b2-a15f8a0bd28d 96e68e98-d433-44a2-ab66-58e5d776debd 27646a01-d4fa-4192-95fc-910e58f1ff08 e2b0447f-d24b-4816-8906-c55d8c765535 044a097f-393a-44cd-a909-d19388af6ef2 596f1ef1-f798-4e82-b3f9-24d7306c0a62 e27466d0-fd60-4d4e-9abe-5603cfef3966 fe6dc5b2-54a5-4bd2-a358-44a8a241fd05 e2283291-a1da-4fbf-ab66-650b1af9e892 cf3db91d-d600-4708-a146-729382f0e80a e595f2b6-e426-471a-af91-9cd43a18587f c43b88a5-0c3e-477f-95ce-664cd2e701e0 dc35ed91-9bab-4b81-8155-2eff216b2819 4b80db2b-bb71-4832-b78e-86018a2ce53c e281f04f-51b3-4157-b9d6-078b624cecb0 0da5437b-44d2-4e5c-814d-6cd32b1a3af8 1b850033-5239-4611-8518-20bdcb0e5cc9 89388c8c-1b99-4dfb-be1f-a33a63264582 d0c716e7-dc3f-4fde-8315-f339aaffe0eb 693ab5fa-24e1-4ef2-80ba-3aa5feb787b2 1dac7847-7dfe-4378-b37d-e2a980c966ea ae6ad232-2fa0-4935-936e-89775789bf60 7c37d1af-c8bd-4985-a8e3-f44dca10e5cf dd42645f-ea35-4049-a3d4-aaf8144e0147 286a197a-32aa-4aa2-bbc8-95ee4f8d7215 31e9ee08-e64a-4b15-a50d-4e98a17ebccd 3fc3eb40-9d56-4655-92b2-bc1410c1a9a6 299aa76e-0738-4d71-b844-628efe63dba3 afa1bc60-2aa4-466a-9c0d-f661cd8342ff 2ded7858-1c89-46d8-9464-095c0bb28f84 1ccd2dc4-6462-43cb-982c-e4138d54ec1c e4e39ef6-cac8-48f0-8124-466258b2ee4b 540e7dad-94dc-4e7d-a2de-cdd56b8f5b35 4c3fa3b6-0fbb-49db-96cb-827b92cf7b1f f1d29a80-09f8-4996-8df1-2d41dd4dc9ec 45ee7bcd-323b-4335-a2e7-0bdefa24ce8b efe97cc2-df34-44c3-9163-3f2c13658cc9 41574b15-0a07-47e6-b620-b82695d95562 ebe26852-e652-4b8e-8f56-ae4a0b619356 b2c31f88-ddc0-4187-adbb-3a7212516680 480e6fca-8735-4203-a3b9-51d6fda26a82 4f174db8-b7a0-472f-bb5e-d68c2360cade a9ef6be2-3644-4396-8888-a23c5bdfb51c 227560c1-4922-442e-a990-a396a7d2a842 4806af13-1c9e-4fe6-8322-6810aa936427 fe8866bc-1e08-408a-bc9b-1854b08e2b18 cf9b3189-0f14-4fd4-b2d1-7b1a86a4a7f8 06d323b9-0de6-4af8-b510-b87f954f67c6 c98f47f7-37db-4520-a3de-714386e3084b ddda9724-6294-4c0c-97a7-4a7d400f628f 9965661a-e8e7-4b0f-a739-5f354c084962 00f4f1b9-2b11-4659-8648-4e1d5d463f0e c827bc3b-4a05-4929-b102-fd95c411726c cb253242-595c-463d-b5cd-6934b3c339bb ac368fec-fb38-4159-b86a-c55a5971bd4d c16633eb-c9db-4458-8f6f-23343949b7e0 fab1607e-d08f-498f-b9ca-f6f5a62359ff c80d1f44-0d07-4c66-8333-df5c5a3400bf e1ebb0d0-030c-4f8d-acfa-dab845770b02 f5ce7159-8929-4e21-9af6-c28cc44b4d05 8aa0487f-1f29-4604-ad9d-42b1d161c30d cd451f23-4fe5-4955-be13-81dab830fe75 a700d9b1-12f4-4edf-8a5f-d174c2b025de 78e646b0-76e6-432e-9f7e-ff959ce34cbb 8c192200-c736-4d92-973f-a7cc5d037aee 54013d6a-936c-40ce-a9da-2813a615d403 65903b7f-d958-4b90-8f31-aea7087ebfbb ac6f1e33-d70b-46a0-8f7a-8572413c5316 6132304a-6083-45cf-938e-cb133348d3bf c6d1134a-f12f-4a3d-ba3a-4e25f4d340e2 2772b49b-8a56-4948-90b8-5f71cdcf7953 5a7c38d8-7ab2-46d9-b2cd-61a1cdd20d9d 175b3a24-d070-4cfb-935a-a824c541e84f a1b808d3-d1ec-4c1a-953f-05c9d4111496 cb80857f-b538-4cf9-9b4b-ed3cadde5c41 d9faf36a-10e0-412d-999b-ec79369c1989 4bd071c3-9eb7-4caf-8517-7c114b92c979 f97a8ad0-839e-4343-a5b8-bd8e14623a6a 7aa01620-cda3-4880-8007-bd0e3335f197 1179e055-4427-4342-b7a1-a78ee87a47d2 08408f93-1633-4fc5-9b02-60cc6a460061 3ceb3924-48c1-425d-b268-9e67ae2469ee 3f2e6a94-7b9f-4faf-89e2-5385b6ae4780 0a62d0b1-0f55-4000-8499-5e955bbf558f ef3390b7-8096-4c6a-8808-ec390f3e4806 c3e0b55d-4769-44a2-8f65-21f1702a11da c18bedc1-3ee4-4285-aead-519364021b1e 6785ed45-6469-471d-b0fd-748abafa01bb ecd5ffe7-5386-450a-8a58-c185ffc8b4ec 176f17a6-a16b-4df8-9a85-f48a79a9db63 d819ee68-5de3-4f92-b7d3-7e4370389dbd 58430fc6-6135-41ed-8aaa-dfedde37cc9f 05dace4e-4142-4a3d-b55b-27c024ef3260 2c18ae77-a14f-49e6-9059-f148a01b9cc3 fdb82b86-cee2-4001-bc02-1071889d2029 4a370e3f-1eed-444e-a8e1-db5164c596fc 996aba68-7ae9-4a40-b5a2-d747ae1186e0 8a22aed8-ef33-42a7-9392-59fd1d0a196d 76f6179d-c122-4304-8825-a9a47bb8790f 8b8aaf4f-c57d-4908-bda9-e58e2077b633 c3907183-2259-433c-bfdb-4a200d5b5ba0 a66c672f-b385-4cf0-b237-367f66ec5838 ba38583f-3322-4b23-b255-d77cf430dd2b 3e0df753-b159-4d9f-adf7-b53a551516ee c3f39d93-b0cf-4b63-9c4e-23f0fbad98da eec42941-27dd-4dcd-8cc7-b8e02fc5fd74 4c00e70d-4d9d-4700-903c-49b290995abd 5dc845e1-714d-45d8-b543-1798a1ad58a1 20782762-9ebc-4b98-b308-8c3d41676980 93dd8fb0-6e24-4166-878a-5e4b2acd1244 b7b46023-958e-4744-8006-6dbfd3954aa9 3da5869f-a424-4b73-8bdd-3884f699f41c 82792cdb-86c8-43f3-bac1-a80dfe43aa8e b84af53e-2d32-4ce1-88c0-596a0c1967fe f1c517f3-5512-4c8d-8925-7608885b62b8 b0ada44e-3fa1-46a7-8d04-7725cbd5728f 375417dd-3cad-4e8f-908e-64ee463965e5 f627b054-013e-4c69-b2e1-3b1c6a84e93d 2233c0cc-f271-4324-a5c2-4560f90ea930 4c7e442c-3a03-499c-82ab-2d7421996f58 63c88500-30ae-4a2d-86a7-f1e6a7ca8ae0 eadd01c5-e3ed-41aa-bca4-03abda3b81bf 4c5b529c-70e3-47de-8697-953a95610419 5a46ce61-2371-447f-a967-0f4398453d1b 7f6ab148-07b3-4970-8ad6-9d405c0ef5f1 fed96a4d-2d9a-4b00-8a17-e43d42c0e80c fee31185-faef-4998-8523-136d149c1bda cec5d874-3a79-401a-b31c-b4d22719532c 64844f38-5c14-4b16-b5fa-db4594c19638 d8aeb949-de29-46a4-ae7e-9198c1870569 0a688320-be5d-476a-a63e-d0e5cce4e448 627532d7-b3f3-4359-adec-eb286b2e11b2 b2f9d546-7dd9-4536-94a3-f01697f7423f 5e4f3594-e6b7-4907-bfba-a9d3e876e6b2 f257a4be-0469-4802-9a4c-a60082ecdeb9 727952d4-07a0-4861-b84a-13897901f07e 8568e29e-a03f-4329-b481-03c7064b745e c7294e02-fa19-47b0-b8b2-dc60f44f14e8 05d16e2d-f665-48e3-a559-2f635fb4be7f 3e2c1d52-3e36-4949-848e-3188e8007d3b d9ceff0c-db4f-45a2-ab5e-b3fdceda763f 406477ef-d675-419a-a543-d3dd8c2e3c8e 54f6a414-4d4a-48d1-91cc-1d6f90af40b0 b06d6e66-2680-428a-8ca5-b1e3d31c7507 16cc13a8-d3b6-4a40-b7f4-fe88349e8e0d b8437a71-2439-4f31-b92a-f265304efb13 c838e5a8-1b5f-4e59-ae4a-bd7243fb816f a673d254-dd05-46cf-8c15-4f73d3f76f17 861f4894-66aa-4086-9158-77d1acd75d3f b2a08d48-219f-4a38-9f53-097d721511c0 9f1d6f65-66e6-49ee-b570-644e6c5f5851 9834d144-92e0-40d3-a002-4b969622a4d2 7ae95eb8-f6e7-4621-b07a-6bcc1eff07cd 49c8129e-fea3-4614-9dba-dbc77aa5ce6e 7a30ce8c-61ca-471b-ab2d-29800c57188d 24c6a8ad-030a-4742-ae54-f27b30713a98 fdec27dd-c481-46f4-ad32-ae4a0c4d5244 5cabb38e-9ff6-4d49-ab9c-87a1951fa598 b2c71754-39da-45c0-ac1c-6ea1c6399316 1d8a0296-2958-425e-97b1-e28ff1db34b6 547f3fe9-3958-4b3f-ba6c-d583e3f5c64c 9b068eab-5046-4b5f-be8d-cb07ff380296 751ea082-aba8-4d26-80f1-6ab06dafe573 76eb7d0a-8ed4-457b-a8dc-4d09eb742afa 85051f6d-bde8-4c25-9287-75e45f621c7a 9543be1c-2280-4b3a-8f40-3eef87182429 f2b07beb-878b-4f9f-802c-37ee558349db 85aba36e-e31f-4750-97a4-e29c631ea8b9 31ac5019-2a35-4873-a082-f409a4e17fea 8a6cdfe6-1ca0-437c-ab93-14fcbadbf75f ec118646-6a67-4be8-8716-deb57eb38006 46166a99-8364-42fd-8b1a-0dd4f520ed7f 871ae73d-9d55-4076-ae41-bca6f51564f1 bd4ad24c-63b3-4101-8d26-eca82bad85e4 17cab6c9-a13a-4a5f-be18-bbc87d1314c9 343b5fdd-d837-4b9c-bb18-5179aac11a78 cf572527-1398-4f3d-bd26-36c728a8d152 70878a36-e9c8-4f1f-9e3a-268930421ade 4ba6e356-bbbf-463d-a5f2-4278f53742bd 1fedc7a7-3604-4722-a7fc-3a5bef49119b 172e8458-3c22-49eb-9b86-c13df5b08aa9 70455709-790f-4f7a-b1ff-ef9b5ec93cce 484b1a2e-af51-4123-a69e-c21816a83455 1831a86a-b7b9-4696-b872-641653cb532c 7874e06d-9067-43b7-90bb-4bebd8cb47ae 4b8147c9-9789-4faa-be81-5f7cfd92393b 32f937db-da8b-494f-8f05-818981e1fb55 fe2e1a72-4239-4d64-aaa6-40d6d678eb18 221ab7f7-53e1-4cfe-a0f9-13d12e545955 20267065-31d6-4a49-ac9c-4ce6d583f168 7ad51aac-9061-41bf-8610-2d2f8cbf45e4 dd18a8db-b81b-44d2-aa41-f45a86e5a58a 11a77368-2804-4b6c-810c-97e5859e2be7 2f13a052-d38f-4fe5-9414-69114ae2a2b5 c97bffc0-cd9b-4e17-82bf-6c196392597a 42916274-4311-4a4c-9436-650e3861b743 d2a44046-2dd4-4a0a-8548-942b0301b36a 80a04f48-9d26-4cbc-83a2-10115bf6d4c2 ad91df27-925d-4835-bb51-bb4b974f421d e078a7dd-0149-433f-93b5-c3392698f390 37f107f0-4519-4daf-8670-85dea88792c4 78ef8d49-0da2-4881-81e7-3eadb56734d1 3cf19998-25b3-4d0a-a992-943b338fb930 0d50cb16-39f6-4129-bab4-905518fbc880 c7334c3f-8ca2-4134-b3bb-952c7767b8a1 89b264ff-43ea-44e5-a055-05d9c8315803 fd458490-efed-4b79-bc88-5e8b66fd4df9 28067d29-42fc-4598-8b7c-92ac86dd9324 ce91a744-4178-4a90-bbe0-3cd53908f9c6 d35f8442-f052-467b-9f7d-7d4449d671c7 683c01ef-0bcc-488d-a236-df7c332e3da7 69979c1e-e3c7-461a-b6a5-a520f9a0441e 7eb4aa63-a92a-4aba-8875-2d5d80859f5d da285545-8fed-4f5b-93d6-8a98891e1390 34ee31f9-29a9-4897-a435-00ee9dfadab3 665823ef-2040-458e-a748-9bbcd093f8b9 4ba5fd91-3563-4cdd-a1bf-dc8f21539881 8e2188c7-14c4-4a63-b549-a08a8628dad6 b6e14fdb-3ad5-4d6d-820c-59c3dac38d59 cc69c08b-11d3-46d8-a225-f5426f4a2c1e a036fa03-36b3-4895-a7fe-75b683376770 446018f3-5480-4c94-8d84-2f2d253ca517 8747d8e3-1f36-4a49-87bc-af7aeec2e0fe dd963a52-deb6-4bf5-823e-f3f1cd8a00ec 94cffcb3-b788-429d-b2bf-1743712373b5 7756e75b-7db5-4f11-9482-b66a47ad4a25 58dfd9ef-61bc-4cd5-81e8-cabca6bc1e6a 6394f02b-4335-464d-a6fa-2faaaeb81b87 ff75f89a-0cec-45b5-8e21-a67a8ea3e0c8 741094ad-2d32-4504-bd3a-475b024b140c fe71c753-fc7c-44a5-913e-abbb7b8d1c2c 5125cf5a-60c0-4827-a587-7066f026eeaa f9f07e48-406a-46c2-95f3-1a796d05fb32 c5659acf-be56-40b8-883a-3c82e455eb07 fdb2cab9-14f0-4dfc-a8e6-774b1e181efc 0738c9e8-a86e-4b45-875e-92157a199abd 8f774166-e263-4cbc-89ba-f5681272364b dbc5fed8-2fbb-4222-9b53-02a9be64bb70 b299527c-e4c4-497b-8c07-0c1585140e31 cb16e436-837a-461a-afa5-278655c257e7 212a7725-5635-4b7a-b4e9-2ae8c6acee21 32ba35ae-5495-4e87-b863-95eee4bd3a73 0e0f838b-94e8-4d15-850d-27164517cddd 1c769282-c658-44d1-b2a2-01bfd9567f00 0d143049-565c-450e-933d-19e60ed53efb ffc73895-7d91-4e78-8b6d-4bea5999c392 5ec12d4a-b515-41f5-b0e7-d9cc328f15f2 02d37959-b690-4fce-946a-ef42e836bc36 b25a9d3a-4050-4541-8947-c25252303f74 a2c83c65-79ea-4ec9-9432-3811a84c3acb 23026513-f770-4ec4-bdba-5925f0cb0424 93b10068-6be3-4373-a297-8cda0b737ce9 92c27cc5-922b-4cd4-8fe3-347eb8d7622c dd143719-4a65-4019-b465-a11c3e3534fd dcd39c43-85ca-4cff-a5af-8f0cab9dc8f9 ca02088d-1c66-47bc-9564-2d3b41e54ce1 731f39c2-dffd-45b6-93fb-fe51047e8ae7 d4223784-8925-4d72-9699-cc91af4a7ebd 8f915f1c-0e96-4bc5-9d40-8f80498f51c7 113f17e2-d6aa-4c7e-ba85-3690e276e7e9 40e41d10-efe7-464d-ac95-70fec26b2aca 98cdee6f-b441-429f-a9d2-de16b63d6b51 7abd8a8e-e5cc-4853-b689-0b6cbd40fcd4 9f26e8d1-d4a3-4eb6-b909-a4c1ad8dd022 064301aa-760f-44e8-b660-059c3b2f3674 b4c68a47-5af9-4422-88e9-df54fc15ab28 af562730-1e9e-475d-a3ee-8ef921732671 c5e07087-a260-43ae-8cdf-bcdc5871d86b 0f1e13e0-1b8d-4f03-9bab-06ae35a659b4 2d5c7eff-2adf-4895-ab87-55ef2df952d9 798a3ff7-1324-44e0-a712-7cce5c0ee5ea b675aef0-aa14-4f35-b363-6042399b1d68 0307f467-6c1d-4339-ba84-7ff72b205d82 343c9f5f-69f7-4b81-bf84-22b9489d6ea1 729275bb-f41e-46af-bad1-e0267bb31177 b9ca26da-91ec-41ab-ade4-118abed1c085 176f420c-8d91-4c53-ae1f-948848f0f170 aa19aae1-bfdc-42bf-8332-c1f0e0f72921 567c9345-33b5-49ef-af04-2a76038e96f8 713aee58-baa0-4729-9a07-a19b910158c7 47a19515-9a95-401e-b02c-e925dce42739 d9d8f316-a8b3-4b0b-a67f-a565615c6f31 ffb8a9a2-cf60-4d84-9027-9a1e303d93c7 02e1a215-39f8-41d7-b1f2-721d1b78fd6d 4dc0e48f-9133-4fd7-93ff-3bf17ab56b8f 7e551e50-5083-4849-a2c5-e4d7098d59f6 59ab1a33-c386-49a0-ab44-3f3c57e024c9 801ea1b8-24e9-4aff-83c9-6574fdf4a4ba a84ee974-5e2d-4739-9830-9df66d5eb4d6 4ba7d431-321d-4dae-b793-5400d25de7c8 5121d3d7-d6a6-4eb0-bbb6-541c3b575db2 51173f2c-ec3f-4800-80ae-b3b84be057f2 c9c0da05-0212-4860-98a8-dfdfb66008e4 6d2bb5bb-c03b-4564-8202-af9142bcfb05 1af5f589-ef54-4921-8b87-4368abc6b885 26f2e20c-20d8-4b05-9635-88bd8ad5c4f7 115a34dd-2081-4fda-a0b4-038082b9af3b 03a90939-6080-448f-9567-41614682ae59 4f033986-afb3-449c-b55f-41dcd5283328 21ffda85-671f-45d5-a565-7f550775583a 1593000f-6852-4a7d-bc93-2b7105f2846f 80d6f49a-c6e1-427d-8f7a-71c5f70e4013 6dd6f9f2-9dd2-48f1-b331-1e37ab808065 29d44e6b-7f13-436d-a64b-15cec3f56523 d5a2aeab-de61-44e3-8082-7e773152683b 8f2b85db-af6e-4a3a-b890-28bbe469e7e4 c2f860d4-db72-4cb4-a96b-2a64a41e2ec6 a925a032-a814-4e95-a8b0-2bad3eb9577f ec2b276d-24bc-4c28-aa60-47d973ce134e f871119f-7eae-4af4-9cfe-1a873f1925ba 8702436b-0961-4d2b-8082-8f2bcb71b9c7 91d1f2d8-2c17-44d1-bb1a-07d4a7ad9b75 da7f34b2-489d-4bce-a042-5e7287796bc8 5de79a55-2a8a-48a0-80ba-00403963dfe8 74afcdb4-3972-4450-836d-d50572ba9d8b e1cf9d59-4851-4d4d-9f4e-31babe87e6e9 41f7abfb-aec5-4e52-b5b8-e5aba3ac0c7e d3b2393c-c8a1-4858-a5d1-443ad199017e b8c904b3-547c-4f51-8968-cd7272e3a152 13bfe4dc-1616-4cca-b1cb-24c5bc7454e5 be20e84c-9132-43c2-879c-8482d12b31f0 5fecd853-4ff3-4b5e-9695-58102cdba2fa eb0baa9a-de47-42a2-bb2d-c0bf753fe1ee 3324e79e-1163-400b-9ae1-b9e3ba8e6b2c 7040306b-24e7-48d3-b307-63874591fddb d2f2a364-362f-424e-8dbd-c1e6b0aba2fb c00c53ff-1f0d-4aa7-892f-0509f51a50ae d37d03bb-2e31-4b4b-bceb-bc93e6ba791c dd252614-5a55-45bf-a629-a502d111395f 6d187044-c131-412b-bccc-5dcc70507aee 92987f8e-6d58-4466-9396-a6a480d887ec 0ae91033-f886-4a05-b0b3-a6aacecbab3a 6d6097ba-c5ad-4296-9088-3bb8045e6423 d68bfd30-c521-415a-a303-e8ddff045e5b a8615526-89be-489d-84e8-cf1cb2cc829c de06b065-bb53-48f0-97de-c297101cfc5d 42053773-9f51-475b-a930-cce4fcc29c95 f6edf2e3-0a54-402b-a9f4-135c199f4134 3aa422ce-a933-4552-813c-a58efaa567c0 b092343a-b4a9-4999-b537-8779a2560545 68c88538-dfc0-462d-a5af-d95e161d0fa4 d009803e-311e-41ad-b174-6498d1e29351 c5dd0ff8-487c-45c2-8885-63ded44081d0 0de078f2-d625-41c5-8ce2-4db599df7625 76697042-14c3-44c4-8439-9a315b980fdc 3bada129-dcbf-48c5-9797-15c1932b23df 9fb5fe1d-6dc0-4f19-9801-e4108175ab32 eff3376c-9161-41e8-a3d4-fe4835988e4b 6cdc0891-1bac-4a7c-afa9-2b2aac62defe 8659eac9-2407-41e9-9f89-4cb3d7c360e5 7bb9a45d-fd5d-4b26-8956-2fdf92298b39 c1406061-16cb-49ed-898f-a84a91827ea1 6aa4c275-31fc-482e-b6b9-18022023fc82 9a8d357a-e633-48df-9276-76c1ea9d7251 3367ffe4-fe8e-4bc0-813b-969af8c6dec1 385168e5-496b-4d2b-99cf-077f08b1b5fb 8e567f5b-c757-4928-8e06-8d1679989e30 3b855331-e0d7-4cfe-a36c-c7bc7960b7ff b15e7ee2-431b-4238-98b3-76e7c2fc094d 7a7629fe-a82f-4cc0-84f2-dd0b82472403 6f5f1e56-d6c9-447c-8abe-1da510e22e4b 888ac485-9f99-4d9d-aa78-dc695464390f fe78b461-5c5e-4b8f-a7f1-bb90056eaea3 2ec64719-7521-479b-9d09-6734fec2b0a9 63fe1894-76a8-4d52-bf04-cd6cf01f4146 46508c8e-c199-48e8-9d4b-7046ad3c3bd6 3e1cac02-8d0b-432e-ab60-b6b344e5e446 9b690288-63c2-48cd-a627-66ca5710de0a 077ba768-bde8-4021-9c9b-ab621093d9f4 3670ff37-0ccf-430d-af73-66d3f5dae7f6 879cbf85-cd9c-4aff-896f-acf3a32765ae d63ea206-0d23-46a5-a5ee-4ee09377c38c a058a0f1-adeb-4fdd-9d92-74ad6e5df632 a2845a55-95af-4c75-98da-8554ccb7d033 afab17b7-7677-4f06-9c26-832f5f102948 54345cbb-5b8b-4c92-b948-fcd7fa34187e dde479c0-1ada-46c5-865b-4d2e48ecfd3c a7886436-fa03-4b7f-a051-f4ead06a37f0 139c00cf-b9ba-414f-b3df-670dbf94109c aac90119-5767-4f10-9d3a-6360d906f3db eef01aa7-337d-49ad-ac7a-c867c87e3325 20d07641-3062-4a23-bccd-7916a9e4e14b efed88a4-1fef-43b8-888e-de56c4058636 8a7ece81-4085-4790-a6f7-3fcbd02578f5 6358389a-796f-458f-adf9-97f210f5616b 8833a020-d2b7-4dc6-99d5-db2e97864319 5cc65fc5-730c-4a85-8818-bceae3ac047d d38f3abb-fc80-4a07-94ce-7f86fcc1dac5 55fc55ce-332a-41c5-a653-1959eaa03c79 a133322c-21b9-45d2-8f2b-29997608ec18 67ed063d-b4e2-42d2-9e79-c10d0bc9ee45 65405c2c-7e02-4897-82e9-94ac81213d8c db6cf616-7554-4174-842e-9d3c36dd8c3e aded6ca9-2ee1-4420-86f8-a05b6c83021b d6db5dd5-343e-4baa-88a2-fdecbebab7c0 9d9afa26-ac83-4cc1-ab58-c61506f8e113 a5e5192a-93ea-4ee5-9a95-88bd67f951b9 13dfe699-5980-4ad0-93ea-571d647683a7 e02e0ee6-ece8-44e4-9fab-096512789cf4 40cff6d7-0f62-4ef5-ace6-1ca23117e307 2736b4a6-82d4-402b-a817-d6d186174e90 74872233-4f64-43ca-9a23-0b7b14710ff9 a89a59f9-1024-4171-b2db-a59f9241aa6d e3ba2667-0d43-448c-89ea-cc9d2e29d923 71fdae6d-1ec2-458d-b438-29a766ff8d01 f13c4b3f-c9b1-45c1-876a-e7581ea54f09 b5241802-e9a4-4ad3-b11e-47196df41f43 0c30c0c5-0d90-47f5-abb1-0e3c8df3caae 057f91ac-21ec-436f-8eec-060f6438aab7 7656f5ce-879c-42aa-bf25-517542949516 09ee3040-2c30-46ee-baa9-8f80718d450e 11bf63a3-2f40-40cb-a21f-83fec0bb1a6b 15779961-ee7f-4289-9cb9-e86f5b9857e6 36222e99-bdd5-4ed7-9757-721f1c739560 36829c7c-e38c-46f9-8ed9-3eedba354ffb fa8cbea8-5e84-4d7f-aad2-7419c90d4b59 91ba24de-b970-4978-a1f7-c571d43b84b8 f4446ee0-928f-4be3-816e-2d43592089e1 d4b94c19-bf89-414b-9c0e-dddb956d54df bc64e40c-097a-49ad-83bd-0b7c0873a467 e10c1f94-6da2-4c9b-8e03-588d991d58b9 50bfef43-3c0e-4449-ac70-4616049238de 52e4a890-8440-45ac-80b9-df63befaf756 b7ce04c2-ae9c-45cd-8a8c-353c60bbcfc5 7b978441-a121-4dc8-9f2e-5a895f2ebfe7 79e0a2e8-20a8-41a6-ba88-25b0e4f6b22f c57ea569-11f5-4da0-b0aa-81df89e58d57 08933867-3e9b-462b-aef4-5c41ec8a5dd7 339ddd7a-3d55-4502-9060-ccbbe77e3077 f99d6ac0-237e-495c-b79d-4940685c6026 c4885596-bb97-49bc-ba18-b33c4f8be658 b4c745da-ab0e-4530-8482-3995bbe5fed9 c09bc9ef-bdb5-4340-9b8f-2ff55951a7b7 9ba9b1f9-3c7e-4a94-99ed-e5baa0ddec44 be0a5439-4562-4832-ac30-9d1c2c1144c1 d62429fa-abd9-4737-bff5-13b0e0ee4e4a cf995dd7-85f1-4cc6-8e62-93ff556227b9 e73a16c3-3105-4259-9820-dcd39b647a8a c167720f-8431-4db9-be73-282ff7e25e4b 1d0aff83-699e-4c1b-a827-c68c904905e2 a2f69f39-4c75-46b7-8599-926c38729cd5 a1346922-c6fb-4531-9637-e69b1046bb63 689ddc1c-3872-4022-8a37-c37be514c926 fdb614d0-f181-41d1-999e-7fb13b1ebe62 09d46fdb-096d-408d-a809-76993c247594 e5c70b50-5801-4be6-9210-94830572daf4 681a6a82-0688-4d66-96c9-73bea1257115 f1f2592a-5b17-416b-b282-2e2bf3d87e60 c7d96b1a-81ba-4291-813d-b848f5f0d9e5 860c3c70-cedd-4e8d-8978-a2514ed8d505 43c56e7e-0536-4409-b217-5ad0f6e9ab59 e78b897b-9c7f-4c3b-a16c-2b1a7e0b7f3e c50b4703-37a3-46f5-a742-b74a64d9790f 36bf0f93-1274-4e67-a49b-3000413a4117 a9c50611-0aec-4076-b0e3-9374983d0256 222838dc-2843-4773-9748-9876800138a3 7fa36a19-ffd5-4555-a277-aa1e8acbd3be d2c5d797-cc94-4ce1-ade2-c9140b071769 7ea212e7-61c4-4d39-8891-b352ef87ba81 58becedc-9310-4583-afc1-5f4ba0c131f6 37985408-bf1a-40c4-870a-bc3553e3bbd3 5937e933-277b-49b3-900f-098a39f40571 17440bd6-13ba-47c6-9234-2b17d9d76542 6d8ae816-cc0c-4d4d-922f-e5f8fb535421 1b3f0ed1-4953-4119-a14c-37cfe8dd8904 bc52c04e-82c6-4cf4-bf82-5ac4d36f01d8 aff993bb-178f-424f-bc22-e29aba005100 2e341d18-8ef3-4f95-a0e4-0964ddb411b1 73aeda4b-6a46-47cb-94d4-705c10d17e96 9624f0a2-6d44-44a7-8851-ba5835bb5678 4f17f60a-e536-47c5-9647-c7d25ae6e84e 1ac06083-1e29-4ed2-8b76-3946092ab711 9a27ae65-7fb2-431f-98fd-6bae652bf4d1 05067aea-33da-434a-bead-ef42db06b993 613db4a8-60ee-49c6-a517-423a9e9c2c30 12a1624b-c6ee-45d3-abaf-07851c5c82e0 8213e1e8-2ce9-4f0f-bd65-32663a0dfe64 de1ece47-8a95-4388-9696-b25e05eca1a8 02d49306-ad2f-4fac-bcfc-72a074be378e 2d1e1f12-5f64-4ffb-b6d2-dab0edca8a46 4fa808c3-4126-41b9-b1c9-79f9a6ae4e97 9868ba55-21ae-4cae-88eb-1d2f8299d842 88ddf2b5-5826-4754-9bb4-ff377cbb8021 0f219e69-9286-44dc-8df5-2d022a31e3e1 c03eef6f-675f-4127-a558-2ea0548b85e1 de57e30c-7861-4342-93e0-9a80135ed1f2 3997d7b6-99a6-4b0e-8d6b-677daa256edf 924f8f7b-2341-483f-9dda-96a3aa050733 f2eeb380-9d80-4057-be79-e6245449bcac 35364bbd-3352-4acc-91bc-b3a5b0702433 3370e912-916a-4619-8298-cf8dabc3e3b5 13ca5136-d723-4121-b368-c1f4bde1353b d9b745a4-202e-4f6b-89e7-95fcd9cdb0d8 0906f1d4-dc4c-4d6a-a2c6-3519b4397e0e b4ccb9c9-548d-4b8d-84bb-ec43a036d872 d324e78c-8ec0-4a3b-bb31-d345dbc6c29b 8ee05b17-6378-46c6-886b-6b05830c5549 99b80b14-2c47-494b-bf16-4fadd6c4538c d2e015f4-6891-4974-ab62-1db4b1f4af7e a83e3c51-d4b7-4401-ac53-efaa31a2f647 8cffcbe5-801b-45f8-a4e3-c76db64098f8 2f04e469-3387-4480-9c11-0fed5ade1599 bbb67744-9ea5-4866-ab36-bb6c629040b6 79cf1556-baca-48aa-9cfd-225ba01905ac f3120aa5-34b8-42bb-bd1c-0dfcea3c818b 508b69e8-35a8-421c-9ea6-59756c1adb22 5666ee24-4386-4434-950a-ed2ef16ab768 46a52b07-bd34-4474-a13c-ebabb3941461 09247a50-de51-4b95-8a70-ca5ac07d0462 cdb34abb-f607-4a32-8dd9-e62cde6803db 5aaa4fa5-51d0-4733-b2fb-50e12ec1c1aa b33e87fd-ac4f-4422-be93-3e5c1deb6f8b 309a1049-2d17-412e-8186-d523a12880c4 136ef487-0f19-4068-9317-143a6d7ce2fb c8010c47-5069-4ec5-afca-e35e6216c7da 552cebd8-2fdd-429c-ae83-20bdc6d782f4 e10cc156-4818-4b20-846f-a74fbe8d455c 7f359b14-0240-4905-ace4-d75d7745ec78 127f1f1e-85e2-44b6-8ae2-be6e901a0f97 4fb74b0f-86eb-48c2-8f29-872d77f365d2 ea2e0c00-bdf4-4a9b-a50e-dc76709fac4c f6c76aab-e52b-401b-9297-ef4f5f335a0e 748e32eb-b583-479e-962a-a8ab9ec7b211 a079e3e7-97e7-4002-9bcf-0dc73ede3929 8c3473d8-c4d7-4f3f-9542-a080bd422515 06845927-93db-42b0-91d9-486fc90d5d20 13edab62-98ec-4b27-a703-8eae1fb50f49 9c0c1786-0a34-4409-91f0-a05fc9b05100 5c49ac60-7b28-40e6-b25d-ce3140d2e95b a788ad1c-610a-47ea-a515-1174da47dfcc f5a202a7-2e7a-4599-8422-397618777b5a 1c813504-3c8d-445a-930f-965de5628900 fc20199d-3e13-4f65-be10-278c639944dc 73054bfc-30b1-4b2a-a7a0-c87d258d42f8 4f741fae-33a4-411c-8008-52214eda13d1 d9595302-24ea-4033-881e-5815aa0d500c 4e7f1332-0751-4af5-847e-2e774521e333 ca4dc848-61d3-4bfa-bcc4-9c18eea02923 7f0a29eb-e1ff-4c20-8594-d6594fccf336 5dbd3549-655d-42a9-bdd7-7fc26956f2b1 e21df8ef-a441-4a29-b370-910b36b7cd03 8d66f82e-d848-4fae-af72-46a17aacaafd 31750f79-b18d-4439-a919-6a12dcd01cb7 b7f3673d-20a5-40d1-956e-8942956406c5 b63b3b86-1935-4d67-9ac1-b7d4c1018023 9fd7c27c-f3de-474f-98e3-195c87bd9889 486f99aa-8b29-4670-b757-274c873e2665 14eed95c-eaa0-4d2c-bcab-7974a4593c03 8974d7a6-e2d3-4850-9a5d-11aacc8695f6 0d241d41-1793-4e58-9322-4219d52ea566 f8c7357d-9132-4077-9531-8ad6f013a892 83686d8b-d000-4952-a00b-6382df200b78 a7b4b317-3e92-4837-8af5-2b7fa407b952 bf6b87fd-9225-4a32-ba38-89c8c22f7f97 94b09099-4e61-4fff-93a7-a35ad79246ff 8c895aff-5441-40cd-9824-76f3e514be5e 8a359094-3850-406c-b333-3aee5b875ae3 c23907f8-527b-4c41-a070-722a6c26b5c8 5aa01ca4-f074-43b2-b047-14d1626544e6 5b1f9286-a574-4fc2-a25d-aedd50a3454d 45823aa6-f086-4f0c-8ea0-e11e258958bb 0dbd75ad-82fb-4270-be0b-68e14f6b72a6 04e32765-3444-438e-a59b-7f8c75b85060 8bdc902b-d94c-4ce7-81f6-eca48ff773ea 4f3d729a-1ec4-4730-8b8c-189f8db0acf6 4d116649-064f-46ab-bd0b-870a87afa9c9 68aa7439-f911-4870-970b-e23fcd0de08b 4cabde13-7a48-4e52-b65c-6f7a1df5ec88 6abcfe7c-ccff-41e9-9090-1ffc9a1286d4 b636d4ea-1b47-41a8-9a18-e51c8a27b216 a91e0d8f-3a00-4d6d-b012-c7d91a3d21a3 9e593363-6bd6-42a4-9fbd-74170249fe55 19a80caf-167d-4e70-953c-a183504b6225 d18e54d9-ee3d-41ca-97e8-0a90aabe0c85 d14826c9-34b9-4f1b-8623-be5bcb73f1a1 92664b1d-57a4-43cc-9d0f-4b2698286a03 e2ae7bdf-9526-4632-a126-348b3bc2d019 c4eca48b-2f19-4571-bbb1-b1741477f6af a153d928-bb67-4fb0-9eaf-92d7cd7dbb60 df3df93b-c2a3-46e2-a1ec-b5b510fd75e8 59d9355a-414d-4f83-af2d-6270365ecd8d e891706c-0b64-4399-b506-a2fc0cf00c4e 6e38d36d-7c63-421f-a059-3963292ba75c 07df85e7-be45-40bd-b508-61d36d780e64 d7dd89ae-9831-4cb1-9432-4d115aa25d3c 94b7971e-04e8-4c7c-93bf-3e8fc90f46f5 ee76d183-f621-4493-8743-60e927c3a65b 27ea0646-d6d0-4128-955e-e657da005221 6495f8e1-24b1-4726-a77b-660d1fa7c282 94813a95-2ebd-4819-bc06-2710b1ff5b49 f289d303-4b61-4bed-b357-09699939623c 8c4b0190-7893-4122-aa0e-8435c8856b45 075bf17b-ce1c-46f4-aa50-62237b60b7ff bda1abcf-d182-4d89-a9be-96a12bbf0af9 ec45ce01-fe9b-4125-a992-e5a5f4acbfac c33e5f93-1626-4e9d-b8c0-454b4de91a80 bb96045b-9d68-4c4e-a27b-bedc6f7a76f3 856e88de-00f7-4f17-a075-170402c8f7e3 100e3cfc-7cfb-48db-b0ef-267d6ba3859a 4f291584-c852-40a6-85ac-f7494be273f4 81ca6869-22bb-4a61-a484-2e4964e84335 b00b3be4-06ec-46c8-992a-e19f4b2c973a 220d9b99-d086-4160-9626-b49d82121c75 d12d0a67-5c3f-447a-ac98-94769c003fc3 add7c6e6-e194-4d83-9ff6-a16d35acf806 e348c9f8-29c4-49ce-9fe1-d610f51e88eb e4b26bcf-1a73-4ded-81a6-7399b3820d23 90a2df48-508d-4d39-b80a-b2e948c12b15 baf489bf-2bbe-44fe-9c4b-6f5aacad894e 6f9f9634-67eb-43ac-81ab-c23f029ceedd f50e7860-117d-4825-9606-2e95f1edb1ac 9d0edf28-e2e2-46e5-babd-0d0184156ce1 980c9297-77e7-4ef0-b31a-704b695f76b5 f6bb8583-7108-42a5-8387-07ca30550586 03f1f6b8-6d3b-4ad9-8aef-570ab051805c 37807b1c-93e4-42b6-9ca2-a8479f5960e2 5db806b4-17bc-438c-8437-fa47194e3cf6 8fc71907-5201-4c5a-9904-3cbc058d6bb8 bf8f3f0b-b6e8-4427-809a-cc54dd8be600 6e3d270d-074b-45a6-9ae8-ca6927b1d071 e577673d-00c5-4358-8e73-a70c937128d2 344e77e6-1670-422c-b4bf-2dcb94db949b c4770adf-3a91-4385-a351-11c699316ed4 4f7f6cf6-0d37-4f77-91eb-8b57147770de cf12e8cf-8aee-406f-8bea-2b831267d8ed ae9dfffb-2060-42e3-a5ef-000ce7fd330a 0813689c-7214-46ba-8daa-d39f1bc6cb91 64c5564f-68d9-4812-a16e-a3b3f0416faf d237e76a-7d9f-4a83-a351-b219f1949ee6 5b9b43f5-5af8-4935-b854-115f9f361b9b 0350d591-3418-4989-b3a1-475286ed2d01 315ebce9-5b65-4e5a-8f5a-f4327b6deb04 bdd612ea-04e4-40ed-a9bf-e8cff1ae78ad 1deb9ba8-2276-445c-a5ac-9df3891cdaa2 03685e78-bd44-401d-a709-8f36d430577f c6bbcaf4-ebdc-4cc2-8993-fdcc3435b61d c965a28c-18c5-4856-a7db-c04266b51f48 ed1a1ac0-959c-4de6-84b3-9db7f3f9be49 9c7eaf54-65f7-4287-ab35-ac4427b9e446 e9e0ecc1-c518-4537-a3d6-2510073bd9fe 0f0f1ef7-003b-4bd1-8a40-704a6c50b3c7 afe44d21-7ee9-45a1-bb74-d646424c12aa 56fe8600-f454-454f-a416-848b8df78d85 faddfe89-eff5-4fdd-911a-4fc82ee4a1ed e880efc1-00b1-421a-962d-274cb393c50d a4911b6c-93bc-4501-b45e-d5e555007fa9 c815d4a6-1461-493a-9959-5fa6aee03229 dadedf34-3257-4226-8a60-d6dd2622248e 4fe1eccc-dc2a-44b5-bee2-d54d38938004 e576f6eb-ef16-4413-a951-4569bed07f0e ff173ede-0366-4717-b9df-ea09ac1197e9 99399d67-427d-4d72-8c2d-46cdb2157e14 ed5d8fcb-ca2f-4dcc-9f26-1a4feda9c0f0 0e12704c-6312-4409-9358-4bc64814dc71 e9e70770-26e0-4ead-9bf8-1566e28fd052 ca4db20b-5fd8-4a1c-9b04-7a1f8658482f dd1449c3-2d16-4b85-998a-62941321ca3b 4eb95fd8-a2b1-488f-9a72-702ce159b299 39b96933-9037-4361-aecf-42b5d56e07be 2b328287-dde5-4508-be23-3b1e6c6ab4fd 67d70363-0eb2-4617-abe1-ab19c5f1fbff 24792c87-c359-493e-a9c4-4be495d3c4b9 c987c661-cff7-4e9c-b9b7-a4dff7fb82a1 87900459-a81d-41a6-9ef3-95bb1fc0a84b a38e1add-e037-44f5-b1b3-701039174edf 109195b8-3ac1-4bd0-a7ea-d7e273dbef11 fae16159-ff66-4608-ac47-a9b07fde21e0 220a00e3-35b8-42dd-bae4-c73b99146e79 9a19228f-c533-479b-9045-d9f0bbe7c9bb f73c25fe-d774-44b0-b8fb-cdbe42f699ea 9ee19956-4a37-4120-b372-1ea7801fd427 f9fa92a9-be22-4015-b533-3e0af5d5f490 808dcb61-84af-487e-b5db-4ac35a9f5f13 d2ead510-9bf0-4cbb-9f06-8a0c30d01099 1792cce6-cfbe-41a0-9446-06b0f091b878 52f04b3b-36ba-45ae-b921-94e2c87363d6 c40cf668-49a2-4622-ab38-30ddabce1eb9 143cd1ec-88dc-44e1-9987-5aff22161619 a5b9b24e-4822-4e26-a3bf-b1ecf26fc083 05e868dc-0c09-45ac-8b58-704bae2b2639 454c62c0-48c6-40cc-97ca-2c36c91841da 9a4715e8-0132-4c70-b260-1b28f0d25794 813fbc74-221d-4c98-b955-8562ba8ab089 fe9b7097-6d51-4926-aa49-963c1e726948 8877eded-77d3-4678-967f-f6b942c57dbf 6d70d7df-a575-4401-ba44-289fbb825293 d70ab7ba-8bdb-4d4a-a1d2-cfd0061df1f2 f1f34027-f457-4bb2-82bd-ec07fd1ace85 348cc64a-de0b-44d5-b4fb-e768021a6d02 8dffc6c6-e1ad-4cb0-9889-c3b3c3c798b2 9207aefc-891d-4e98-80b5-3a33a662073f 35695496-5708-4663-8747-1ac3b773985f 1fb638c6-ed53-4351-8c22-6b889d419aa6 dd2302ca-182b-4269-b6b7-67eeefbe0a32 10093d7d-3d69-4c1b-b553-e7ed36b7b012 b64c6793-4d36-4ca4-ad41-b06f1e785207 25e64e18-b58f-4ff1-a228-d221b54a0464 5f08b5da-2cbe-4c22-924a-b64b517c42ef 818b2191-2bcd-4475-8656-1cb69ebb1085 f24c4ca7-1a52-4cba-86fb-07cead4c3673 8faf449e-c80e-47b4-bd9e-7337f50d3794 52e4c8e2-72e7-4ae0-9fa5-d50b04d64b4f 8fcba9bc-e394-449b-8ea6-0227772cc9e8 eb012587-cd83-4f18-9625-11b80ac19d73 44cb7a62-1865-430c-90ff-1e7348e26f4c 800257fb-3ec2-4fda-b283-2dcbd497fc1a 903a2ef6-dcd0-4849-b449-ccf593f3c135 c963fc9c-a363-445c-9949-83cb14b84c77 60ab5eaa-d108-4e23-ae2f-201774e6d417 4057b45b-3d43-424c-8c32-037039587bb5 3d531ada-1949-4fc0-8c20-d1c73ed0c665 2981f686-8a4b-4fb5-81f0-2a4ca216a932 86975dd1-3bc9-4514-abd8-facf17a4608b 71d6f366-5422-4f63-9eb6-8d4ad63080f3 529ff5fb-e69e-40dc-9808-1a1c43bdedc6 d6fe3dd4-54dc-458e-b6ab-f7f302b2003f ef979633-63a7-4838-806b-51a888f492e4 30f4c599-155e-4061-8ae1-60c2c229d8a8 3c102acc-546f-475a-b9d3-d52498c64a84 78742e81-4027-4a2b-bf1b-310d4e45ec06 bc95550b-1b9a-4155-b16c-4fe185f73844 f162f6b4-6756-47da-996f-5f95a7064960 ac27efd4-83b7-4c59-8540-de5ef6770299 49866cf9-5428-4f8e-b5fb-9040173e99c8 ae144989-91f6-458a-b5e7-36c7f4067b6a 828cc71d-08e9-4c5a-9745-8a73af8973db f5bfbf56-516b-4a0b-9f4e-49e74eacc7ae a6e84a16-45e6-472e-aaae-64f52b62ffff c55e2936-5f66-421f-bdb3-917e0c59d586 ac4cd97c-8319-4b30-b4a1-abf872802f78 5e797472-014f-4a15-ade5-3851973758b5 16a27dfc-2545-427b-ade8-bf7cd5e6d0e8 513b1f2c-742b-4208-9e75-7715e959e5ec 83c58fce-4fea-43bb-9860-5cb69545fec9 c8a0311b-5456-48cd-9788-48ccf7c54a68 25f44f19-eab2-4c45-af8b-e84fc5aff26b 31632dd9-d795-480c-93dc-34ee4355074b 7d59cf49-e4d4-4bcc-a2ab-8e60fdf6646f 63f9fbe8-1825-4a91-a7d0-45e19622ba44 98bb8410-0bbe-44b3-8ac6-9befb7e315bd 402f9c23-7838-4e12-8e99-fb04763fc0f6 6e592e72-d196-4b6c-9731-690e98c5693f 47dc06f4-6ecc-417b-a8d2-665978dfc5a5 7ce33ca7-7702-4ad3-8990-41d55d05ec2b 4e26858f-21a7-47b7-ba28-1367c15bf058 7e01c85b-1a93-4b6f-b627-275eb812d8b1 cd04b41b-5e13-485e-b13f-f9f6594dca61 abf95f99-f640-4976-8357-b1acf57ac23a 4ed7da82-e9d8-4c2d-8ae2-8fa0ade1a763 7c945db9-2338-4fa3-8bc2-b3dbb209f90e 53b78108-7c89-4348-8964-c0e98558e05c 72a3095a-f6d1-43f3-86b5-1db6c8853d7a a1bcf4f1-efbb-45f6-bc54-86e96156629d 083518db-281b-4f31-9174-ee25da31d5aa 43b9be1e-4b4e-4cce-ad06-39f70892cae1 9ad46b7d-22b8-403d-afbb-c8301aa0b8ce 8c3389bc-b5a4-4ac2-80ba-895e1d284f17 ca669f6c-80c1-4c17-b260-d8f0c5121d87 46b13c4f-af4d-405d-a224-70376ed431b5 7e7588e0-552f-446d-84d9-5da4dfecf6e1 aaad0fe3-79ca-4462-85f4-6e0a70683c37 3b0d8b70-19f1-4a88-a6a4-c4b493ea98ed 772c4261-f7ec-4ffb-92e9-6cbf8ef3bdc8 f51a8c86-ad60-4ac5-b431-dea802f93072 66b95f39-84d9-4731-a6ae-a67d6590062d cf0333e3-801c-4b9d-b0ea-c8ee00978522 01f3862c-de76-44f3-a46c-dbc45df6fb7c e2730d84-14db-4e99-85e4-8860a223d44c 1db15c3c-f32c-4f37-bb11-aaf75d4d3c6f 22166cb8-0b1a-4040-a01f-58bc759a392c 9150cc6f-7181-4e62-bd77-a5938677302b c35174c1-4568-42ab-a34c-6999c3338119 0ad1bd92-dd30-4089-9f2b-439f789dfacf 28bdcdcb-0525-424e-92f4-32d4fc27adbf 4c8f47c3-b624-40e6-bc12-d761c5b10362 515ba1cd-04ec-4cd1-994a-f9c93c2a710f 03d82ff2-bc15-4303-929d-09eb71bc6496 17221067-9a44-42bf-8581-51a6a4f58973 c25453fb-4cf5-4b8e-bca6-8a9c31b672f4 7c5f08fe-877a-4523-bf74-24772f50d097 91111c32-09fe-40a7-8fef-daa960df72d3 fc94155d-b732-4d7d-b0cb-567cb231cf2c 0260b8d5-3364-4a00-ac90-ee7df3a9d482 b7cbe8b3-d1a3-4b91-8332-28b84db84d5b 26d0d8ef-f0bf-4766-a641-d10eb0f9dea6 c1ce797b-9c63-441b-96cf-71ce771eec5b 8d582b25-1b1b-41ce-abf3-7a2eb24c9088 40182316-2de4-4808-8a4b-840cf6032df4 af72cc72-92a3-4b62-a8f1-d6f27605c033 60a252a1-d6ee-4932-9a65-22e500b78fb2 93815341-fe56-4eaf-b373-b33aac961617 fdd572e2-db12-4d5b-9862-eab4faf6dfb4 5396cf72-6833-45db-9a4f-239f74f1d163 62488d6c-8bc6-48a9-ab91-546b3f82a73b 7fe33045-ad16-47ef-8707-fe33c204eee3 fbf34abc-f425-47ad-bf16-3b64d909fe91 da3dbb49-2214-42fe-afc5-b5ad966cc4de 1fe19cb1-d89d-45cc-a8ce-4c6e0b02bc5c 26d6dd96-5a8b-400b-98df-dab2b1edbc34 40412f3b-4261-48fa-b77d-b7c4573bbc42 86618d5c-7a37-4c31-8bef-8aad74f76ea1 be9dd2fc-9d5b-4cc8-84ce-3b2bcb5d38a5 5862e3ba-0c33-4d7d-91ad-464e5ec1f729 d777a470-7a3c-432a-aa77-332318642f91 fc95cd6c-fbfb-4d88-8c2f-ead700071976 3ef0b27d-7a1b-471f-9b1c-edd87dc6ded0 6e58302b-fd2c-42fc-beba-4391d6502efa f79a4609-b4d2-4c58-9e70-365d82a06ed8 360b3fd2-1f84-4fc7-9d35-fdc651bd48d8 6f6d96f0-5cde-4bf1-869a-1edd19978d0f 42da8eae-b73a-478b-9296-19aa08922ea4 5e1c0bbf-eee9-4a3d-bb8c-f2f6b8a8a437 742c5864-e824-49fb-b467-db80b71e8320 5b42aa73-443e-4854-88ce-e6d82664b8e1 4ea12816-8676-48be-865a-58c58e7314e9 70763b6c-0dd4-496a-a2d3-41df1311bec4 a0e1f5e5-5c53-4c01-a5cd-553797cc31a8 e58bc569-111a-47f5-b244-07f28dd189cd ad301702-6a94-4d04-9245-5fcb5a1899e4 709b61d3-31d5-477a-9982-8742eeb94e37 a7dd3b16-dac0-451c-93cc-89fe8676bed9 ff743200-6299-4bdb-875c-d4710efb7f8c 0392fba6-aa97-45b2-a139-ab11c0e58087 1f965b39-8b00-49af-a367-97b55d15ef8f b3fc3e6e-ea53-44dd-9641-9b3b7e5ab072 40190ada-a774-499a-bb95-9a66ff81f1d0 48754ba2-ec58-4352-9698-1d1686b9d637 b701045f-0f33-4e6d-acc3-92b32b325259 bc6189b1-2b8e-4ca2-878a-36558e35a5b1 04edf068-491b-4653-9553-5d6dd350b17b 7faf45c4-d41d-4bf5-b418-9cbaf87685db 9924d183-140a-43b8-a2a9-5fae550c5c9b 0bf4ba84-dcc7-4ab5-b448-973336512574 68c89978-87c3-4d07-98c3-b5a437b54f35 119cf868-dd91-4a7a-8d70-0a80804be448 333b7e25-9cf1-452f-8ad2-2faf933e0026 b8c96d55-572f-4504-8b5b-cdd804849159 11b491b4-1f8f-436e-8481-cd909e3d3c37 216bdca0-bf8e-45a5-8481-28abb77970cc 98881d54-39cc-43ac-8961-73a1f4ef69ef 4cea773e-6be5-45a3-ac0f-a20f384dcd08 0b8bf885-a613-4b32-a9e8-78a6ae3c6b2d 82a79729-57e4-4b39-9466-b4fa9d00307a 16a58413-8ad5-421e-9828-6dd4990176bb 68c49cc3-3f08-4d33-b13b-12de4cfbe6f8 21b52028-0171-421a-b1dd-7b99654ce214 e8918aa3-145c-4e6c-92ef-9ef8317cce54 928e2e91-38ce-40d2-972a-0c35edaa6706 da0ed69a-5af2-4bed-a379-52fcb4cb3220 5c227634-f49a-4b95-99f2-5be6ddba430b bc48bc26-2ce8-4011-acc2-8a82c16e08f4 36f47f46-a5bd-4953-8410-52acf79e7e81 f2c7c25b-5faa-40dc-a6a9-46629bde46a9 147c6225-6d2e-4188-b122-d532b992534c 82db7cb1-5b95-4ae8-978f-3e5a1163d255 b9b5ff8b-039c-4f4b-8ea6-0f0b786cad5c 132b4822-c226-4e09-acbf-f9e4240a6b9f 47d70271-a605-453d-a895-35c1110ce0cb 2a13875f-99f6-4cb7-b7e3-10014a426ebc 8ee5eb6d-67f3-40b7-9087-eb898e5fb436 c9bfb9df-fed5-4586-8bc4-7482f2c55540 e74d3cc9-1391-43c2-a515-f8c0e43642e0 fc19167c-d12d-4be0-ac97-e03dba119c13 93190679-402a-42f6-89a5-e8d9ab7f948f c1be2676-405d-4d19-8302-6ff3aba78266 a3928437-2cc9-4eea-86e1-55424e11a0e8 4f025c76-2d20-404d-8c7f-66994c3cd815 ff6c5b16-2e9f-45d5-993d-31c13d063c63 0dc0d8a9-0b42-4cb0-9c0c-d8e899e5916c 5b78fa20-db7c-478f-8fbf-9875437aa895 93601bc8-1bbe-406a-8b9c-94d4df4e1b1e 93efac8e-f594-4207-afb6-d7c85756f3f9 307a9772-b9e7-43b5-ba2e-9b253e32b9a6 b7fce23a-7b48-43ba-9fa0-fe0d43fbfee6 06979edc-a0e8-49c0-a90e-8b6c3789c412 d20a2ad9-2e50-42d7-9ba1-dabaca70c34f 86ae6dfe-87ba-4f39-9896-f43d25e7aa91 5ae115db-e75a-49d9-ba7a-d0ac9d39e537 3cd3f0ad-1f02-4183-a182-5d7c061d6486 ce600072-9e20-4e92-bc6c-0c87b1803167 cc0871c7-2979-40a2-ae2b-cf254e982ed8 bf240bfc-5cc1-4187-b584-68640df92749 65545991-465a-44ac-8dca-47fa49798da8 d9a30d0d-ecbd-47a0-a319-bc251678a51c 032f0070-881e-407f-96c7-2e3509788421 14027203-6547-4895-be50-67caf3a2fc4d 0beae65d-981c-4b06-b103-9f8662a7ade3 b5a48f2d-90f4-4cf8-86ad-9d5e9b73bd32 0a7ac979-cccd-4f9c-a5ec-2d9e8ce4374b 9fe1d80d-609c-44a4-9561-32bf0b50ac1a f96a050d-d7bd-41f9-bbe3-e36a3926ef47 0770364b-6f69-4593-b37e-d8e077d93cda 7e522fa2-cec3-4887-9efc-4cc5c47e007a c95cb302-5bdb-4ff0-a572-ebd2537db23d 00fd1246-68a4-44dc-a9cc-d21e2c592dde 0e6c89d3-9b7c-46ab-9462-8ed07672e4e9 d987b395-acfa-4db2-82f8-194e70c3e136 6d3e68fd-f505-49ca-857c-08c9ebcb5e81 c43d4249-33f2-4ddd-9e3e-927261b0d74d 8e939a6d-553f-4324-a5e4-5b28e84ac390 16a17d83-3b60-4f13-bce9-46d4529ddea5 51b6b778-9783-4b4e-923e-b10846637cca d04b3cc9-c1aa-4baa-b842-470785ce12ce 3097ed81-2043-4432-a63a-bb589bd8c91d 77936b5a-ccc3-4f80-a043-84fa65b6fcce 08818511-bb84-4d14-a4ff-c2d1ce0bb633 4fe3fa4d-f4f3-41a5-b83b-db01bb8c2a88 271b0f70-9fe3-4fee-98d1-3b00e764d38b c8087cd2-5ad3-4a4a-a2e2-fa28a12a9680 ffb75a06-4b64-4053-925d-04cad7172aff d63ae1cf-3cce-4499-82b1-4e06f39409f8 04aa73c2-8e31-481e-899e-d3ef3e37d09b 7425e9cf-298c-46ae-a055-88346c43a41c 39b385c2-44cd-44e9-9a20-a2af4652f9e8 42503418-18d0-4d20-9a5e-0c2850e9493d d949070f-5e75-48aa-99d8-bb99dcc6b5a8 d8d5639d-3c68-4cdd-acdd-d0392c290355 e0e08e52-4b7a-4301-b603-0f2550cdd7a1 77e88f8b-0f82-4a70-a656-19a9624291dc a9bd5a50-4ad5-4cda-b117-2a36921f5504 bc010697-d3c1-41b9-8a54-0ec7a22a0f7c 913e95a2-87ef-45fb-b715-35d4446ed2ba 330bfb33-9bea-4275-8b7c-b343ff664f18 e843a524-c34a-4831-8f6d-3536a16c9dd0 08c21060-f708-47d0-9525-5b410b185070 3537beb4-5cfe-47a6-b900-89da21794b01 66797e73-ce6f-47b2-9298-6c6f84f99415 b85162ad-c8c4-41ab-82f9-42c61a483abc ddd6a932-0893-47b5-8169-00ba792bfcd5 af1e0943-a7a1-4220-ae1f-9244909bfdcb cb08f7b0-700d-4b2b-806b-f270e43b982b ead409d9-8c65-4e56-ad5c-fafe51b1d19f 326ab0d1-23c7-44c1-b5fd-515e09189b53 5df9be01-a4e9-4747-bf57-3253923c1b9e 54e102f7-84d4-4bf2-bf04-c6657539eb0a cddbee64-12c2-4789-bb47-6bbff577c1f7 04c20da6-ecda-426e-9c5e-dba621338c78 7405094b-64f6-415d-952d-a4c0191ea0ab d24bdc1d-8b45-4ecd-a780-606cd81838e7 b0672051-eb8f-473f-ae1e-f28c00ebbae1 956e6c6f-33e6-46a7-bfc1-c7eb923febff 2abe13f9-80c3-4860-903f-58d3bd86c031 9c07afe4-7706-445a-bb82-59194d399ad1 da4e813a-6ead-4776-b098-b14c75600a4e 4c5b460c-c1ce-4d28-8459-225e32a9ccdf dcc0933c-e9e6-4573-8b0a-7caae3519a88 5a1dfd0b-3b1c-45be-b64d-7c5ca83d5a5a 5fda33c2-82a4-43f4-b2f2-cd66c047c9e8 0b0372e8-4fbf-411c-9653-5258cce44992 1a789437-cfb8-4914-bfca-26507299aadf 0864bfd5-1424-4816-b89e-aefd25abc775 d4a2caea-4ecf-41d3-90a8-bfd74ac5d969 877e70c7-93d4-42be-885a-b55bb963ea24 de6bfa87-2f1b-451b-9775-f25014bc31ea de904818-97d9-4b65-8767-24bb0c37f7a8 e124cb43-b6cb-4b2a-abb8-8c4b1493ac38 65b3b25c-3813-4884-aa16-a6892a2f4d58 7ec7a5fa-b8e5-4203-b9e7-b1b573cc51de 634ed9cb-7455-40ba-b18e-6e37e5949e57 ad1d956b-65a7-48b1-9f1c-f6e862a2e69a d999f21c-df9b-49e8-939b-c932f6c45aab 2919a8ed-0297-4c1a-8d79-c20b22384c78 8935382d-7893-4e59-974d-31a366b817e2 73359ba2-68ea-4dd3-8091-3fdc1070dabb fd66facb-535a-4760-b9ce-b615b951975f 04b5a184-7fac-4689-ac99-6233ed97ffd0 ef9364be-2b26-4571-8730-74f7d86e2bdc 0805f347-96bc-4457-94be-6be9b3beb1d7 451e826e-0fbd-492a-a381-4f58146aa9d6 ea43a5d8-fd10-438e-ac60-7ea9471f90f8 a2f49b75-768a-4cc0-bbb1-d944ae64ad57 8a755842-df33-4102-9fbb-20347be1d74f b87aee1c-e674-4b24-a030-b674a93ae4fe 76be313f-aba5-4ee4-a471-b9717a7ed59a 12b6552c-5576-4cd1-90b3-6622908a8065 558c6e33-0d38-4440-889e-9833bbc9f270 37ffd823-5ff4-453f-9e0f-7df5e272620c 293fbde5-ff00-4300-b9b9-afc455a81c1b e0565dbe-951b-496d-bece-2b0884d625e8 efacf5e7-3a54-46f8-bae5-07bf21bc7573 f6c65242-ed1d-40e9-81e1-7df2fb97ace6 51693045-5083-402a-983d-fe202df5f224 9e4c090a-a974-46a1-8fdb-c4319ed69910 447754b7-7e9e-49bb-9eb6-72e1cf2ec080 9abe5c4b-2cb7-47e6-84ca-88a96585a381 d7351478-52dd-4747-be0d-67888b316775 37725a07-daa3-487b-8598-ba584f725920 b433d708-c301-4746-9ae7-e5bd95512d1d 0a38e722-8ad4-4798-9915-9e2ff111efd4 d8942fee-4673-48c9-ac5a-b4dfb5b519ac e0bdc337-395f-45bc-804e-111a960f661b 7d06dea2-54c6-41ae-a890-846085ccd606 90e1df1a-27d3-4486-8bf1-5e46ba084d1a f3714e66-1001-45b5-9fd4-6bc1f6210ecc 4b1b7089-11d7-42a1-9001-a51088e81e3e 3d4985f7-4361-4b79-af2a-59642387b42a 10daf001-7c82-4469-896e-2456920d4fb0 be258ece-0f5f-4762-9619-8fa5161e7139 1e43113a-60a0-4e57-9cde-6d8d5a1d8fbf 1a79f346-b333-4990-acb5-8c018b8c1ecf 4d6a004a-f94e-4225-8056-681e2fdad3ef 59654768-79f4-4958-a787-4680286fe44f c226fa51-39f7-4775-b3f8-0f639c230551 d8474718-095d-4d39-8c73-f07922b5952f fee4148e-c225-45c0-8314-c5aa3102357a ed26d143-2bcc-433b-a20b-fe6c0382b8b6 a09fed58-03a4-4001-aecd-12455ce85e10 26365a39-47df-4d9f-a040-e87fd2682ce6 e30cb916-79a2-4aa8-bff1-4aac14544c43 55ae4aa5-c759-4884-888b-c975c1a6c9ea cdbb92cf-fa53-4c45-ba80-57ab4b2256ea cb823501-b40a-4ee6-8df9-14ba6f0f1a92 c9fb3310-e4e9-4ac1-86fe-3d0a49617aba 59beee13-db44-4787-8e30-22f3be3191ff 3d770c5e-e317-4f2a-969f-adecdef1db5f bcb8cfa2-4f2f-4b17-b341-16160790e300 04a56623-f616-4ae0-872b-183c951164fa ca463e6d-d4ef-4244-8c55-e639e4612cc0 8e2a3bad-a9ed-4906-b0cf-f9f4555f63e2 50e51934-6e86-4b8b-982b-58128ce331e2 8dc5c643-13fd-48f2-b057-8287b934dcdc 45473cc9-f599-4b2c-9234-26413be47938 23d1eaf9-1fe0-4d3d-bdf7-b0ab98d31ba2 deb859d8-e70e-4046-99cf-83e4b39010a6 b02455da-f18c-407c-9c7d-7d5b5d8c2ede 2655a21a-42d8-4c7c-86f6-dc25b5783a1f e6bed04e-194f-4ba7-8127-9ca738a85c2c adc9ce22-f622-4609-b2ee-45bb7e183cb6 fcc4b653-f64f-4295-a308-2bb26efab96b f93904b2-5c3f-4715-b8c2-3b49bf17c1ae 68fd1e51-2827-48d7-886a-ec51e2684e34 3ae20567-c50a-49de-b734-3b7d0b525b89 e1581b2d-a1dc-47eb-adc9-1656e6669c64 3960a732-fd15-4c36-978b-58c356ed703e 91d11564-18ac-4cc0-9e78-e22df874461c 6cfdea45-3f90-473f-ba54-6ac648900a0f 12ff0f5d-3eb2-4338-b6a8-f7e675828960 3eca6e61-3c0c-41ca-8e05-0e9b256e47ef a15b01d0-6f7c-407f-9e61-5b0250e5420c 4318cac4-e3ad-4ce3-9e3c-5eb0012882c3 a88452b9-152c-4b14-8f8a-e4f952d541ff 1c4ca272-87c7-4596-aaf1-b1246d68dc77 ac1910c0-0a7e-4914-a265-c96b41bf30d1 2a0d83e0-dd1e-4567-93bc-23854e71797d 43e0a289-ce43-4700-ba2a-00abcb29e4b8 f0664173-862d-40c3-8098-c55c7ee0b686 75c3b8b5-af92-4d24-a589-381d81d75351 75061fa5-7baa-451c-87a8-5d79cb123e95 175e1a4d-3e7c-4a1f-8e35-2083aafb2586 8476dce0-0ced-43ad-9fd8-b7528e614041 ebc9c0e4-7d44-4cc4-b82f-917b44b41ef2 25da66ff-068b-48f5-881f-56e97c565a15 cacde220-4667-4965-bc9e-29c8d25143a7 eed2459a-fe43-4ed1-8d7f-7756c5d2be90 4dc7395f-e51f-4263-a976-24b9128c2a89 ad614067-e44d-4524-a6ce-cd65bfb7942b 51083533-be20-4f92-9a9f-4d24d40b7891 d9888fe1-6bf2-4dff-877b-dab5d08e1188 2caf7747-313e-40ac-bf1f-4584aa67d275 7729a465-e7a1-4bbf-b40b-20695adb79b6 394de6ea-f229-4516-bdb2-8acc17fc7f27 fbdeb5bc-6127-41a1-9148-0b349f309d79 d572b7ab-292f-4892-8ca7-424ef758216e d853b20c-3dca-47fb-8f85-4f03a1fb2746 75eb0154-8a8a-4ba5-b98d-aa0230432d05 2f28a9c4-fe1c-4360-bae2-1bc21ce7fa4d ab54248c-b34d-4c7a-9efe-e43c9b291dce 283ebb65-348b-479f-ae0a-83c79d6c88bc 6f0315ee-735a-4de7-bc97-342cb74a21e9 f2ac136f-34b9-45bd-bedb-1b0fdc3f9bfa b05e9625-d4c9-497a-9d0e-924c91fc3414 48354dfe-18c4-403b-b139-7532428a4207 9bdbe2a3-28d2-44eb-bb2a-dd305bf483fb 3e0d0442-c457-4485-825a-e260261d2e9d 00cc6289-8930-4488-8265-b9de0c2ecbc9 1c7061fc-e445-4cf4-947c-f84b1faceb44 3b14074b-2dd3-4e9d-843a-a78c692e64e3 d7d89df9-d5de-4f07-a6af-a857bf1c9fae 0df9b6f2-631f-4ebc-95f9-e2b0fb9d7256 f716f03c-c0c4-47b7-87ed-72b6df4f6bfd 1a00d51c-02e6-4a26-b6bd-58078018a09a 2264ccd9-743e-4d9c-a2b0-1e8133390813 3141d76b-f383-47aa-8855-a7822bc2ef04 3fbefb08-098a-4247-9f65-93c0497c047a d29275a3-394e-426a-abd8-dd2c9e83cfe7 188bc86e-1cdb-44e5-bf45-f44b47f9c2be 353bf47e-8d7f-4451-a72e-9a1c5dd0e4ff 17a3ccb1-d97f-4108-8785-ba242208880a 6e9a17fb-ae2b-47b3-adeb-168938e72ad2 d0849fa7-3bab-465d-9031-982aefc5af24 35fb8b72-bb80-4754-b051-d3971f4a7e3c 64434672-03e6-4ab9-92b8-1abfda3b956d 476a8fa4-43b2-47e8-a703-c4a429134503 292c596e-b976-4474-b978-f8f6f0e482a1 fa03195b-2992-4329-a671-0ea57d679294 66fd7dce-76e8-4a8c-81b9-7f1dd8069293 10b71d92-156e-45f7-aa66-aa5e006d46a9 893365ed-257f-43a4-9fa0-f0b89869ee3e 41b220ee-84a8-4807-8674-f81a65beb247 2d768d17-6df3-4b3f-9d93-fa410e26ee6f e528708a-dab7-4b31-aba6-56eb3391a456 d86aca30-a906-4209-9c3b-3a668babfd2d 3b9df2d9-3855-477c-8714-c5e969814c1c cabc5b06-f897-4871-8c84-86d034ae386a f0da892b-bf4f-4616-b48c-a73538ac9c80 da4a9293-1c38-41f2-81d5-d91a587cba03 23c720c0-6c0c-46fc-8b9d-26660a38b143 73819230-0d75-4a1a-960f-16406aa882d2 5e425d05-5d7d-4725-9574-4bb5ce483821 2a511f5e-b50f-4e8f-b65a-58a2ff74a3a2 1c325deb-4c52-41cd-a5c4-6fce812e38d4 a4f25f1f-9cfc-42df-a0e3-72642ac30669 13d23417-3155-4873-8cac-5998524815d5 6bfa77b5-cfbf-4532-9693-d527a86d2b15 8b0ae7ec-4eb9-4cb5-92d0-959fa0dc71de bc8ad7ef-0a71-4d99-96be-3266ec3b121f 27fcc4b0-6fb7-4c40-83c0-941b41c2c88d 05b163f3-e95d-4045-b5b2-91567335b510 ea8bc229-28c5-4714-b93b-1ad04c38b1b2 eabd3828-235b-4a66-ade0-5a368e726d0b 2e174d88-74b7-491e-adce-e09e3265e649 d9481af5-7bb4-4139-9a5e-9d4a1c60eaa9 a958124c-55df-4cb0-98a1-23f1a3fa742a 42b9a387-53e5-4a1a-adec-d95a5e145d8d f841fb21-eee9-4967-84a3-d2be03dd4615 b44db517-45ed-4904-a373-d8aafe451214 f1f6ccde-9e0a-4336-bb49-27d95eb7beb5 96527c89-c0d3-46b7-995a-b3dbbbe63817 b3c7447b-ddc8-4f2d-a30e-44dcf848163f 7bfb0c0d-0c3a-4793-9486-3ef3603bc34e 3c8104b2-e7cb-4b3a-a14c-ce4934261ec0 5068c36a-26e1-4795-a08b-ac9709711d67 cbf0406a-3a5a-4e7b-87c7-6cb0da22e0c0 6e6d103e-80f9-4d68-8f7e-ccdc22d2f995 072f5ff1-f37d-4301-ad91-6c02810618af d906b5cf-5c48-4ef2-84c7-d319bbfccd6b c279f36b-dfd4-4e66-b427-acf612fb003c 66e56f5a-1b08-4a0f-8393-f24373ab428b 445e2c40-8c43-46c3-87c0-5d5bf2790153 3fd9796f-0645-42fd-95a9-75c5f6d525b2 23d79f43-85ea-4de5-92af-4ad81de8b854 8109e8b1-2bbc-4532-a624-24985865e175 0992ef1d-07a0-4fa1-bf2f-6ff98adc7bd6 c16224cf-2bbe-4310-8af5-3ea3dbe3860a 3d11882d-5414-44a4-8e74-ccefcfb0bdbd 3cfb29b2-f52c-40f1-bb9e-423097128cda fe0a7311-2c7c-443f-8060-47871d02b7b4 bfdb6a49-ed6e-40ce-a89b-00300dea5d34 59e0c592-845c-47f4-aa42-dd4fc2cee7e4 180ddcc0-d85e-4703-82b6-877019b908c2 5b30e78e-806c-4573-96fe-256c17d57605 ffe94dd5-e5d1-4d74-a54b-212449d8df93 498b9839-e671-4bd3-b222-8a3019b828fd 7ac799d7-6c47-4661-a9b8-cf470ad06e66 6e1dd35c-8861-46a4-9954-3b25bc99d365 a0ac811b-78ad-46a8-9db1-8f929bae4d16 69632036-2f75-49ac-990d-1cb3211ebb28 44e88391-e400-4706-a7a7-963135e7405f c9486607-e4d0-41c3-a4a3-60b6800f5cae 4f69d347-a93a-4d51-bedf-16b4ce1bd7d1 731cc9bb-cc66-458b-8988-744dcee882e2 3ef31d22-c206-4958-a168-9a472f6d1b4d 78766d20-1164-4fc6-874c-5f29c054cb7c 6847e007-0117-4449-8e2f-acd79ea65c43 a7233666-52bb-42fe-8bfc-b889ef0f8eef da97ea63-84c4-40ff-b2d9-5ec40f98cd27 3eca0b1c-12de-4dd1-a1e0-c5d476de95fb 1117c163-c6f0-4d65-a119-2cd98ede4120 4b5c9659-5237-48b0-a71d-72beeaf54bbd 4aa0c0e1-6e2a-4bc1-b8da-d36d43cddbff 565f4d10-921e-4cfd-bf03-ccbf259dd1dc 7dd3d3ae-708e-4372-8a71-aabde773f704 79e9e532-c128-48d9-aefe-6507969edd7f f6d54b1c-fb0e-4fa2-b174-606ac14ef9e7 09bee545-689e-4822-b6b5-66539871bbcc 0c1ee938-56c1-43d6-aa50-1d20a052f49a da245771-8f47-4e7c-b7ac-c6567ea192fa 2e6e8e07-d77f-4892-877f-7d524b83a88b 2d89edfb-6822-4ff8-994c-acb366ea571b 8176979b-cda5-447c-b834-989ce5d6a1f6 6a1ec3d4-5407-4793-9498-b7add125b46a 072ff7c8-0145-47ac-9948-c2b51508d09f c991618d-7a5a-4267-8767-8d8cd8658b00 36ad10ed-53e4-457b-8fbc-a6b3fc75d35c 880db881-afe5-4c7b-9be3-8e349fb8a1fb cf3e6630-3fdf-47b8-825a-9a36998e4224 23e14ac2-ec77-4c1c-805c-6252edda3028 a591aa96-3dae-4a81-9f87-eccae7d4a724 ea51fe38-3ff3-4e34-a24e-a7a307dd085d 255e56bc-6b40-44b8-8f54-6b997d1bbc2e 1ff5e027-fcdb-480b-a013-3d8f2337b99c 6fb82f0b-01dd-414f-9c8d-4774e4d9d8af cd140df7-20c4-4fa9-970a-0e582686e0d5 bce50375-5928-4387-8d85-b4ab61b0ce6c dfe7b5f3-2969-4b14-b7a7-4f4c548209ee 833c9e9a-dbfe-4b0f-8f81-d0ce4cb09ad3 65e23595-851e-4fec-818a-9fe9a98c5b22 aba28836-4c9c-4621-b1c6-71d68864724f 032d7e59-2687-4d14-bbef-4811a0e48c74 5befe64d-da0d-464a-ab3c-9f4adcd60a4f f4786049-a4ed-4167-86f2-65ba649f6b5d 0d475a1f-ef81-4b85-aa6d-f2f7482e25d1 d71f5187-927d-4ace-9e1d-02c43b7b3528 5dfc087b-1a2b-4fe9-ad68-7a612818a723 763575bd-feb6-4a6a-bbd0-43d5e848ae96 ae65839f-603d-40ac-a36a-067404c348ff a50ea005-6943-4ae1-8f48-17a348f0fca2 763c4cb0-da53-4170-be01-e56406ad492b 714c79bf-e95d-4588-8b79-474d3bcd01c9 aeaf9931-9249-4bb9-b830-563532181da3 40c3eaff-574b-4792-9c05-489ecd1670d7 385d5d46-ed67-41b6-98f8-6512a05aeb0b d880fab7-fd4a-4985-bdef-8689238bcd43 dbc20cfe-c5f8-4a4a-bffa-5b43d680cead 251da26c-76d9-489e-b268-ec128bd207b0 bcd75178-cbe0-4342-8fb3-a8083d56e062 0e58fba3-9fb6-419e-9f1b-c4bfa84f567f 31ae3e66-0895-4515-b747-cdb22bcaddf3 78079eee-0697-4ac9-abfc-0f89b6b34e06 21f7dec1-332d-41d3-a095-2a85fc9eb916 8f7f3ccc-26fd-4fde-8d4f-5ec1d25883fa 54a4efdc-2b28-44d9-ac35-d3cdc94f0305 7237370d-ee8c-4635-8379-63e39c91d9da 6ad8ade2-1854-43d0-91d5-3cefc31d827d af3922a9-5ea9-44e4-b3bf-69bd454ebc17 79796d5d-4a7c-4afb-a2ee-6259e672ead9 c00bd256-2d9d-462f-a29a-6ae2d12400e6 f5914032-5829-4b0c-b976-7470a8f60d63 cb534d4b-1ee0-4ac2-bf2b-f01de7b3d2d5 a466ff8d-e038-4d66-9402-33b273ab5c19 83b5086f-df03-4867-95c4-5ded2141bc4d ae96a047-3cfb-4059-8732-0659db8b870c d7b658f1-5398-402f-abc4-e216b435cfb4 0c49b022-1a7a-450f-8a71-22072af0c4cc 0ea2ecbc-0143-41c0-a6c2-a0ba3d3cdc53 f8ed068b-6616-4023-bd68-08712a501630 71f71228-4089-4e76-bb2c-6927f92eb201 4f195aea-2435-47da-8220-e1f8a9441693 7bd26c3b-b96a-4216-bcf3-aaa1adbb50a6 314969af-44e3-4136-9f5b-c74bceb5d850 9a9c8ef8-1867-4564-a68a-0b469b61e400 a1bcded1-3eeb-4448-8621-7585326c5f56 4f7b188f-2a1f-479d-b891-0e97c5a70adb d8f767c1-e4fb-420f-b965-23cc22795336 e927a84e-da2d-4e08-97fb-e14427f5b655 f656f1d9-143c-498f-85e3-f68a798f5336 ea4e6345-d090-48d0-b475-7a6d26bdb2ad b7776646-8d5c-458d-bdf5-ecb840e8fa39 df6d6b76-f1a5-4bb0-8c50-cd2d85e1ba94 b76f2cfb-591d-4e3e-a92d-c6cd33960a22 c385de43-5ac7-4dd1-8951-830030a6f0cc b0d1374c-f612-41b5-912f-6ae7c1787a32 42eb78b8-277f-469a-b012-5639570f1072 dd4740d9-dcf9-417b-b310-8e9be7e40f86 5759eb28-9a5f-40b2-b6ab-e71b8c4a2475 3cf04bba-1ab8-4c7a-bc24-c521f7cb4d36 05941e69-c573-4fee-8d00-e0a1e6e3780d 2eb4cabe-2bf7-453d-8ea1-73773c625cca 383501a5-9d82-431d-ab3e-fdb9878e2995 70edd854-fb28-45f0-9b74-191c97998cd5 84cff610-0562-4c00-beeb-cead58457dca 798b882f-d42e-489b-9461-f69be20e0741 05d4a936-8e2e-4781-8ed5-68709d1c3bd2 1626f68d-f56e-4f97-ba20-e2add5f5050e 1ddc86a6-6916-4d22-b48a-da9aaa8c2c48 a127b310-b9c5-4064-a619-1c7b89813cd6 74189a76-6880-4241-bd44-81340c4f5d63 394dc822-710a-4229-9797-52476ea9c4bc 761bc701-3c03-4e77-9873-a2c4926aa7a2 a82ea7c1-bce9-425b-8aa3-4b2e127ac927 edab7c38-1b2c-47ce-bd15-52a6b9480429 a2ed9d4b-6c83-4a19-8976-cd2ca1b2f656 a3d491c9-8d44-4053-8170-4f3525ef4588 12f0bb5e-14ba-49e5-8334-1f914a968bb8 a7db5aca-8e4d-4dc1-8b89-6a66263d9d23 76b80648-ebfa-43f0-8f1b-81550a113c47 2cc348c2-a872-48d7-bc7c-619f57cb58be b46f7b3e-9676-4b5c-af87-3d461f71a6c9 acd1d929-8341-4619-8885-59ac3b16a04a e0a2382a-b0d5-4a88-a5d2-35e48cef58c3 2fed5331-919f-4b27-87ca-c907f8767623 471ed458-f404-4bf0-b718-0f79935cd7a1 d936f153-1ff6-4efc-907a-aa45532beb84 2e6b14fa-0788-407a-a998-05da65b82c8e 060b580c-8cda-4342-864b-a75ec38e1e1c 5b14a2ef-0cb7-4c8c-a2ef-7269da9e474c 3f05bcd2-074f-4f6b-8375-2053dd879c27 17cbd365-ab5f-4050-ac92-722f0b9afd4e 7ad9c817-ba29-4c5d-893a-7ae4a7c9aaad b7cb8de7-7d3a-4660-b6aa-0b4618342c40 c3e148ac-c981-4653-84ea-73baaabde840 64622590-32a7-4dff-a4d1-08acaa79708a bc30c05e-5427-459e-bc03-55d4065b913d 8d0e4709-b3e0-4962-8bbb-a31998484038 b1d764d5-3fce-4971-8c15-d8f9385bf1cc 20b93c28-df81-4db3-b063-b8b9dda27c28 1243a2d5-7041-432a-a776-88339bf573fb 2e475b2a-2ab6-4d96-b6ef-8520da53e93b 3f86fdc8-791f-450d-8260-ff2b852a613a c3e8c1ff-e11a-45d4-8afa-59acfb11c564 ee73c307-8e1e-4685-aaef-fb0cc605a8c0 8cd9af88-29f5-4242-bfe0-028e3f6a78b1 9d2beceb-89fd-4198-ad68-ba6e1bfc81d9 47eaa5f2-c9f2-4b74-9857-8acf19ec98d8 232044a6-3ce5-4b8f-9243-61097c8e11fa a4cb8eac-df62-47cf-b9e7-4f31bc67d480 d2e45a46-a4d3-4d44-b25e-d180ee8e40da 6889d703-ccc5-4750-925c-73cd4c620ae0 77dd2e17-93f0-4d35-a5d7-3e6f972035f4 73086a16-2ccc-4b4e-9fbd-8c4e6bd5c115 96d60fb3-f0f5-4132-969d-1e57b1fe4473 c702af28-0d8e-4dd3-b8cc-8ceee144bb5f 8746d85e-5125-443c-a888-d163177a8151 161a5f8e-20b6-40b0-92f9-f34ed14e8fd3 a55e051a-56ec-48f2-bd47-3f9d7ea5f1c6 c00f3015-6f6e-4ba1-9c0b-a4f03b755fd5 d09621cc-9fc0-47ce-9cb7-66f79467633e 7a5be082-204d-469b-9fae-24f6e6c2e3b7 fe422458-5b0b-4566-a1d4-d5bc9b0f5ee9 adb93811-2386-4232-bcf3-a029b49f2bfe c6e56d7a-cffa-48ea-9c81-46f0dbd3ee10 f8c9ad31-b73e-49a4-acd4-af9db0faa6c6 7d984e8a-e72b-4bf7-8554-86c08bf9c47e c54a594a-0319-4e11-a8b2-6383995b272b a2c35b26-8ee3-4b24-9f0d-ef87a5766737 88679e21-4e4a-4e46-8d8f-2fc5767bc19f ff2387cc-3b7f-4f9e-b3ab-fafc36f344a7 c0b750fe-d396-419b-82ae-87b39ff90bcd 221e3f45-56fb-48b0-b90a-c487ffcd5b50 690689aa-0fd0-472b-a566-3a877f4e8cb9 8001495a-200a-4d7d-ac02-3acf8577c119 85948e14-b500-4bc7-987f-e992d2a2d3e3 7451820d-88f4-4f37-85b6-74e9b37f5063 5cfd8a75-18c3-4003-aa76-280dc8fcf18b 94f0bc9a-820c-48a5-849d-b152a1af2a72 0ece09cb-f595-4063-b47a-f5e90ea49dd8 e0a4c764-8560-4384-9ae6-7a7d5cab0a30 02bf50d6-cdf3-4df8-82c2-26a374412149 ca99996a-7690-4dbe-bd61-0bfb8728cd18 1518792b-a23e-4ab0-82e5-ab091febe14e 005764de-d8a6-4c25-b9d7-f8d8f760b96e 1567b66b-febe-4f03-b559-6b956fc39d02 d35ed62f-6e20-48bb-be34-f77fb800ba0d 9a00827a-7c91-4dcd-ba5c-a2c75a483fed c8dd6671-5e71-46eb-bd53-279eb1ded119 b049f140-940b-4662-961e-6b6f946e9bfb 55b53eef-39f9-472a-bb3d-da16a1368b26 d204f342-9606-4a6b-9459-d094d2dc64b6 4cbdd513-3bd0-401d-b36d-c3c9378e218a 1a26e0eb-0492-4abe-87be-dfef269ec985 7d25fd80-47ff-4c7a-ba5a-c81c74360c67 fb141a11-64d0-4473-9872-a772aef946a7 735de4be-e64e-4b0d-9247-481e6dd95dbd 96aeaa34-682a-4da2-9096-bbb38f974af5 3390900d-2db5-417b-b070-bda65b167334 b9356972-671f-4263-94d6-0ea943f1ef94 d65de764-004a-4f7e-b53d-30d1452b04d1 dc927c3e-d755-4e51-a34a-df82b09df0ac 97203ee4-42e3-4c69-a70e-39c04fd8948b 26430801-8d93-4c81-8c7d-5c70f6efb541 baf38326-045f-4b34-a553-401134dd33c7 848ab0c8-347e-4ad2-886b-ab46ed72cdfc 7a160a63-ff9c-4b39-a935-d78bde766e2e 39581622-3acf-4270-9bdd-635f44a9d438 34d4730d-6920-479a-a782-af546e8b1566 b207273e-3626-4350-a1ef-636154940260 a51cd1ea-07fb-45eb-997d-c9f606e84949 e694e97f-eb29-40ba-9135-f3ba3661a780 14c8f1e3-c316-4c74-b735-bdd696541c90 43987666-d76e-4d0e-a20a-2f3615570612 ea86377d-4d51-44b7-9f9a-8293d0c04656 9fcd0f18-d56f-4a55-850c-18111aa10e84 4c8f3c7e-73cb-4364-b98f-7578f4d459f4 16f44259-4a2e-4541-99ed-32d8291caccf e0695708-0d81-40e9-9e87-696ac135312a edc6ee2c-216e-43ab-a231-7d3ff73d9f00 583e4c4b-c1ff-403a-8aef-c809a891dbcd 63f18b8b-fdbe-48bb-afb6-3d8d579f0e81 8ca62fad-0018-46b4-bb2b-e7d91f8825cd ca2f6b7e-04a4-494e-bad9-67622b6e4301 432b8649-7ede-48d2-a599-8c017f678aa1 e7b9e03f-098d-434b-8186-9365a0528043 a679af07-9550-4607-9c4a-255680b156be 7fc6b78a-cd0e-4855-b92c-512582e706ed 24497d5c-6e55-447f-a8ec-5a856d74ccfb f2d63aa7-d21a-46c8-a803-c8d3d4d0d365 5ca63ff1-57ef-46fc-bacc-d89e38a72a1c 21b49685-e3cb-4c46-a9d2-dc31e0fa5253 8e31e7b7-de07-400d-ad41-e233e4dfeffc 3a7e4ae7-2042-4580-b6d3-57beffc303e6 0f6a13d1-049a-4a5f-aeb8-cae364cd2c5b 0bc68f90-f38c-423c-bc60-ac277f5594c0 4eb27dac-9ba2-4147-9c5d-8f7a0f7d791f 91ebaa36-8578-4e5e-8e03-b99aa8ca5afb 2808f54c-87c4-477d-bd21-0a1f13cf6da4 362efacf-0a17-4f1b-af96-43a7bc4b25bf 1b1ad852-a650-4c0b-8286-7194423cb441 f4988894-762f-4747-80e2-e5a7fa1e41b3 e1559660-ba88-427e-8635-12f0f5244fba c23b6994-e441-4616-beba-5b3a413c5fae 85e9f00d-f97c-400f-912e-3fe440e0df8f 24040235-aad1-4252-9695-6c84e71732d2 f55be97f-98e5-4b0c-bf83-1446cae90639 de2be1e0-f2fb-4a39-a30a-8fa73471efac d880679c-bb49-489c-8ad6-254b0ad0bf64 66ba27ce-7f89-4066-9e42-b5c38c03422f a65fc920-afec-4f4d-87b1-76dab429b232 59a9cd37-1286-4ff8-a12f-ccc71bc4a68e 2457f9be-7e78-4070-9e3a-def7aa0c03bc 00f78958-5af7-4d85-bbdc-885d49c3f09c 5ad9f03f-debf-454d-95db-14a15a3caa4e 5be94ea3-81c7-444d-b871-20569071e4a0 4b45944f-41f7-42a2-b399-512d6d62a1c3 1f789eed-0bf0-4401-9677-94e469fe9b8a 38f03456-382b-43b2-9783-a015f005f6e9 fb8807eb-2d34-44ed-8757-242e5f0a58fb 51a75bd5-36fc-436c-b95b-7742ea5adde1 6ab5e418-3b0f-421a-aea2-81c68758fb22 732b75da-30f9-4a3e-8276-449ea0838687 5aeaf5a9-9362-4a70-a75c-544f48dad6b5 36dc1ddd-3f55-4254-9403-c05125884d72 34fabe9a-fb0e-49af-8971-7fb99f3b1c25 1d4f2148-f05b-476e-8c5f-b1a9e6854938 cf24c49c-1883-4e5b-8d51-6edee058999c 58c15cda-4f3c-485e-973c-8ba2e769bb3d dca12641-92da-44db-86a6-e48aba2cc7e2 e8235baf-abd8-4cc1-8f0c-55242034cef1 458d01ee-4284-4a6f-9aaa-1daa560468f4 0d08613c-1c62-4ebf-a917-d9864773177e d082833c-a60d-42bc-bbd6-6803137be19e ddf566e3-b513-4011-8415-740e381c4d93 efea927a-1586-47eb-a169-6ec2552f7641 792c6d52-8a8e-43e0-b607-6c91ef610493 53a2bf60-df9e-4ec7-aa97-2199cfed217b f831432f-05d1-46c4-b329-e9558625b34d 4b760f1a-dd57-4c16-a9eb-07e6cfb8f41a 1f2f36ae-868e-49f3-8f37-f72a5fd959ad dde5f230-4618-4d55-b189-2500acac3211 b653b149-e483-4fce-9595-79f41be385a5 94359512-9ec5-4c69-942d-c3fe64ac7e17 4e893449-d1cd-4180-87c2-5492186aa1af 0e633f3b-5499-4265-a382-459767ba285d b78cbd93-8f08-4c11-9d74-1cee77c97af6 40f860d9-4743-478d-85e3-98e73126126f d318bbf2-0a6e-4ac4-a817-ab39fb858248 8df383d0-2b4b-44ce-b48c-27c859fc5a10 9c652212-b717-4ee6-bdc2-d895052a45aa 8396e978-f225-48b4-9bc8-65d570cd50ee d318e158-c7f5-45ce-82b5-88d17521ec3c 532c83e1-8ca2-4a95-acc6-ceb5c2edaf2e ac9f8793-58f3-4ca0-8420-e5f9aa4f8118 098660c9-1c60-41aa-8ecf-f5441d918648 02ca1aa4-ce8d-40d8-be76-6bcb8b4d3dd2 cbfd10a6-272b-4324-bd33-53d6fdb52355 735998e5-fd27-43fd-b317-9aa90eac6df9 827e91bc-1979-409d-a18c-80dfe80614d4 4f83f097-af5f-4c53-b8eb-841bd3d1aa2b c795af3a-8c45-480b-a76f-b2ab9990a270 f93a49d5-08fe-4e92-98d1-03467be52bc8 0f88202f-ee1b-40bd-a4af-de7bfa0cacc6 2354bdfe-2dc0-4497-83a9-5df01f052976 f9485346-c2a7-4d50-adde-7727b5c9eb8c b00f7fa5-c7bb-483b-aa40-dcad97bc7024 09f495e6-7e93-48f8-9ec1-953d927ef9af a24638c7-4eb9-4b42-b732-c9dffc6178cc 4d2744fe-b1d6-4f79-aa2d-cb96f5605067 0cbedb50-643c-42a1-b6ee-dab06c71b714 d21d305f-2cb5-4f31-b61b-a22cf9e1df55 4ee36d64-77e3-4825-90d7-02747bb438c4 f7c0cc37-f82d-434e-b138-0562c4ca3d6e b25cc450-d04f-4657-a9d6-91797121ffe1 eb214220-234e-4686-b604-d66262c57219 af3b70cb-ceca-4b12-a741-d70aff040d48 cd7b363d-a36c-4003-9a70-01e42e289dd7 cd352839-9632-4804-b94e-f0727ff0fe08 50ada192-d513-463c-9c1c-d2c1aa364dbe 28c0da28-a5a2-498f-ba3b-6729d4030fd8 e3aaa508-090f-415e-82db-3be79a4baf71 027e0e06-f416-4fc2-8cb5-8055d3bfb249 b8e31404-e832-4dde-b2cc-747326e1d63a 2287190f-e3f5-4199-b77a-91573203ea19 12e464fd-3573-4e73-b713-790dd05c80db a357e4d9-0f55-42b0-ba60-daabc75ba572 082ce70c-3280-4367-8672-4213da11a16b 736a79a1-f8f1-4d75-abc4-093017fb8ca0 00e11523-d075-43dc-b0ac-a01061e3634a 0d5b886c-82f1-4ea5-895b-23d48a123708 1a191e96-c738-4bb2-bbc5-01f06eb6a2e4 d0db91d6-0ccc-400f-9c0b-e14897d0cb34 137b0c36-10b8-478e-9240-8f9dec9eb841 dae4f54c-7468-4143-976f-f3213cddcf46 1deeaf12-0b07-4d06-9407-21e4b85d13ed 66e43596-faad-40a3-b53b-987b69c6f810 b9daa8f6-b1bf-4e3b-806d-16ce517c96e1 5efe2071-7e25-4c1d-8daa-b5170ff100a1 a746c7b5-fc28-4308-a17d-9838e6487b14 e366467e-6a12-42a9-8746-835a2a70932b 8025e434-5fce-40d3-9891-600b4b0112af 8414f92a-6810-4b1c-8813-f8c53767f584 7822760f-5ecd-4b0c-aad2-4a5945f63084 1acdf1ed-9cce-45d1-888b-7eaf35471eeb c18576a3-5e0e-4c26-a04d-2a174d40d1d6 36d2610a-1359-437e-a6ce-50496eac8fc6 d5408212-065f-4352-a787-4d953273917e bb7498c4-80ef-4930-9977-44de8e4e1129 c2385a9e-5ac3-4f17-8cf8-712771f54421 274de133-7eee-4484-819e-635956418458 4252d7a7-f944-4d7e-b5b8-010500e18e28 c141a71d-5bce-4190-81aa-1402eca6cdc0 f1af70e8-3888-4585-ac89-a997d1a6f79e 501f06ff-ef8b-477e-ab83-0d53612a6caf e4d8d2c5-3244-4b0e-8b49-ea24a6a219b2 fb9e16c3-84c7-41e1-893e-c72cd71c2682 f6878453-0987-4a85-9cdc-5c5f22b920d2 3be1505d-7b17-4b02-9c8a-27e3e60666d9 e775bad3-7510-424a-8a7b-973bd48f7061 a25e368b-7360-4170-8ab4-af8a2b80e3cc 214e7c9b-9334-453c-a6ce-95b020b3716c d2b79c4f-3983-4ab2-bbce-8a823817e3df 685280b2-35f1-463a-bfd9-5de96e4dd67a d6b8abdb-498f-4d07-9d5c-2aab92dcc09c 3ee89e38-c014-4eb6-a430-fb14a36f34df 3620783c-ae31-4b66-82a1-42a3104d5947 8016fede-5cda-4f45-83e4-56a37c53daa4 0a728ba2-55d4-4324-98d2-ad3aaf4dfcb9 56add98e-3cf5-4048-9522-b7b38870bbdc 704ed96f-e306-4348-b5c0-5c9f7638aee1 01eda77c-e137-4328-abd9-9e2823c4dd44 ed43edad-1844-416e-ace5-79a3ef039950 046b5c2a-7f9c-415a-81f1-10974b7f47b5 f8581113-3684-4868-9635-7cf7aafa170c c613cbde-f768-407a-adcf-73c804691343 17e319d5-4449-4109-9e1b-10b08296e07d d79cb12e-68d2-43c2-b3ce-4573a1f08581 f2d77cc9-e0e3-4ad0-b952-f49880ddfba3 2f623f4e-9cd6-4f75-947c-c79ec4f1e4d4 18915feb-898a-4aca-adc3-8d83e80d4bb7 4cbb73be-a8df-4490-b1f9-43be76fa39d1 e01cbd14-0406-4eff-bf75-43c9924534ec a7e4bc53-a66b-421c-949b-3c7c0cb0f6c2 728f47fa-00c7-49f9-8548-25062e92bb9f d3ef8e4e-c175-4d03-8cf3-c5ce150cf04f 72a2b35a-62dc-40f9-ac3f-f8f667d6cce5 6a25de87-d035-4b66-a36a-eee068d776b2 27af3743-f4ba-42e3-a24d-856ea4655f61 6f4b4dfe-2a7a-4f0d-baeb-bae7a12c085b 73c12dd1-af44-4f1c-ba31-d4554ce60108 07da4842-037e-4396-9412-67076e4b2b05 d6a26ee7-26e1-4c67-a296-2b169ee70dbd 78f27c38-2231-4dd7-92d1-82d0fd9e23be 04549a9a-344b-457a-8559-855a50435ead c02ff62f-eff4-46cd-b26b-8fdcce47eecc 2590dd3c-4821-4530-add4-d5b805a650ca 477a26b0-04e5-48db-92f6-0d8ea90a1a5b bd502131-55b4-4f46-b2aa-0473c7c96437 191ce61d-25a9-4107-bef6-8f5359967f75 0790aea5-b4ab-4ca5-9e1a-b5bd0341eff2 524f4c99-b157-4404-a93f-45cab5031c49 45e122ac-7e15-4c94-9e56-e05dc870be6f 89207933-b552-416e-b3d1-10286c16198c 642b54d4-9dab-41fd-95ce-49a14d1bed4d fb799031-f4f7-4ef7-87ea-ca8049aa42d4 f1b0bbeb-62c1-4f9a-9649-29f8cb43c39a 8ad3cd51-d0f9-4b98-80de-a6d4f0d3a294 9d61b3c8-845d-45ea-888a-1d3aae3cbfad 12ccd425-b9e6-49f1-bc91-79afd29f9971 f4ce2f92-1286-46e2-95ef-a95da56ab76f 62188708-2e27-44d3-9585-8a4ab9cab56d a3f58cf1-c0c2-4b4c-a23d-28e8773b6e2e 7eff3b49-4cf3-4f9d-a8c7-1daaf316fd15 c64fe251-4c96-4f46-915e-f192264988a3 e11d496f-2d28-4e44-8cdf-de4517a2f701 0dc01337-11c4-49e1-abd9-22627353eb76 530545bf-ce5c-4a7c-95b0-4b5110ef4602 0e0c79e3-4561-471b-9dec-d7ea491e3348 ce033446-78ae-48da-8e41-e7de9be38a6b 3d533530-e59e-451c-ab14-bf76a4e97da7 7714c2d1-296c-4c94-8dd7-28bf1f7f0832 5d25cfc5-8c97-45ef-9626-b38491fbb2d4 60818711-3bc4-401b-b600-b1d7a610aedc 233e2848-28fa-4894-a378-f931ad9dd746 5b1bb442-19dd-4bfe-b99b-5272c6ba7316 2bd8613e-c1f0-4c33-ab19-aa297296518f 76512fea-34a0-48f1-9580-be3f35060a61 6309bbcd-68b9-4996-9416-b387516f4eb4 2bb1f8f2-55b1-43db-b9ee-49c7a798d75a 16776bcd-90cc-4004-b96a-c239f1ebd882 9bf494c9-b690-49c5-87a5-36a11060d636 79588cee-d645-45be-8eff-9a25ed83a678 53ebcd03-2169-4787-8f32-b2c1ee05fc01 828e3706-fcf1-4b9d-a0b8-ef392dddf1a3 e9d04478-ccab-4ee0-ad1d-8cb219bfe4b8 1a5a0361-357d-4d5d-8659-db0fc8ae692f ab86a546-9a0d-4d16-9f1e-cd527b762aec 8a046243-f300-43de-a431-e5b13f6fcb44 cda45820-4b5a-4e71-abb1-ef6e12f095cd c8d37934-3f8a-4a34-a99e-1eb9a797f79b 562bb48d-5cc0-4b7c-afda-86c5d6cfe198 32336dab-a6e0-47ef-864b-29c7d647985b 7b913fb3-4eea-4a43-9e9e-6c1efa97cfdb d55094eb-3b9e-4d32-967e-42becb35bb83 dca1f364-a3b0-4fc7-9db9-c5e6a287ed07 a259b20e-0c4d-4f45-a90e-cb4c20cdc76a 8c2d6530-6dac-4025-a3da-c5f73829763b 5f626854-2a08-45fa-8b6e-da27bfc52e9e c52a1974-bff1-4378-b499-e9fe7091d421 0fe4d422-57ee-4689-8435-8616c04e6aaa 98e21536-9ae0-4352-8110-fcc4217f3bd0 d83d6185-cff3-434a-ae8c-2f1cea5bc54b 43c565af-d8cc-4cc0-a5dd-addc5cc1c471 9c1ffdaf-e5ef-4c30-94af-5e1467315020 fcbcdb50-d26c-4771-8d3f-a2dc0fcc781a cde4e7de-6229-4180-b7f8-ffbe1a954465 0cdf9a3d-e8a0-496f-9cf9-4302421dc170 087684db-5616-4582-87b7-48c24636c5fd 2ee74383-6272-40bc-ae49-3977c278eda3 123338ef-f83d-4f24-9ef0-f2ab0f352fba 71f8baf3-371c-4ea7-8938-72cb840c151c 40ba0fec-b12c-4e52-8bb6-93d636ff3fec d0a8893a-0572-4caa-92e5-a633033d5521 f6514c14-1a48-44aa-aace-2c05acb5d831 6e561e6e-1018-41f8-bfc0-7cfe6efd0d11 5b567173-0f9c-486f-91ea-ab52b17d123a 2c6c7eb4-3b66-4512-bc34-563a25780c9a 116b302f-eb5f-4262-979a-88f7947344e8 24ee2be2-b955-4904-baf5-ac277e4138fa d516a19d-abc1-4321-b3d0-bf41f98ba9e7 8d164b8f-aeea-4090-9421-6f811d95250e cc9d0836-6a6a-4020-93a6-82a87ecce892 cc0e4fb5-c299-4376-822f-d14788157f80 813fdf54-7460-47f8-abbc-df46f33e39f7 03d46336-a5fe-4778-b5b8-63127baaa8e8 2ef68e44-4b1e-44a0-8689-a1bb722cd856 a05c50e6-24f3-405f-8be9-84983cac61dc 976f22ab-d239-46e2-8fe2-467903b0a23e eaf2b7bd-1707-4c97-ada2-cd56115176d9 29156da9-5859-4c27-a6a0-65ae13475bf9 d7a6c002-bba0-40d7-9e26-d4be9460c3af c2c697c7-7353-4d93-b3e4-546193ea6f63 7330c641-083b-419b-83a1-02d8cf1b7010 bf4bedbf-5911-4efa-ae38-5c4011c6a856 d8adf88d-a6c3-4c9b-a88f-4c8b6bf94373 ba42ecbf-b4cd-4cac-94ce-b70c6adb0a47 0ae8cb91-3108-4464-86f5-3e19bbcf9691 09a59ca6-94bb-4849-a0f7-f6e6c7e019c7 86666c09-374b-4f94-a08c-1df70b35751e 6d26dd0f-05f7-42d5-8c85-2f48bcc251c6 1bf24356-6f2a-4e64-8308-3f3d3b948393 0fb4e04e-37dd-4208-8ae2-ff129c315620 e17e3c19-7a75-4ae7-8b47-cecb1ea77475 3ceff127-fef6-416e-bd3c-c5430b6cf23e cf46ec8b-4b8f-4cda-be7e-8ddcd0f15d61 e717db1e-1f45-4158-99fd-6f9610324c90 bbd20619-4f22-478b-8611-36bcbf9b865e 37b7a6a7-13c6-4954-a9af-0ec5130d7e21 adec02f5-0ef0-4b4f-9424-c1f3701420dd 14509454-8417-4246-92ce-14c92514597c 0b607eaf-faec-4640-8e7e-ff0b2c7ea63a b1eb40cc-dfa9-4efe-8d27-24a0f0e56c78 0a7fc705-7974-4e74-bc7a-e77ef9abcd15 8ec0237f-f281-4316-9ccd-c7a97b129018 137123c2-6852-4fd8-aeeb-bb6bd6d27c56 6e1b9062-f71a-4771-bb26-f446b00d3ac3 5359306a-87ee-4c22-bc8c-7e57954e14ae 9b9d8a9a-4000-4216-a982-89a958ddce3f f153ab58-1524-478b-bfbb-eae6945bc9b2 78a6c877-00f8-4e96-b850-22a90374f6b1 00336a72-c039-4c27-a7bb-45ac49f1453a 6755d5e1-75d1-44f2-b9a3-7ecf75c3cd41 b74bef6c-9f03-461a-a0c4-d63c476838e9 95309a85-1e80-44ad-98c6-155a904b3ad6 4c1e3a5a-28ca-46aa-9b54-4fa932945144 21fc9ba3-038f-4006-b601-4841296836ac 8cb20b2c-6eb9-4271-a921-ae126442fa85 34d9c5ca-5027-45b7-919b-41c1684a4aa2 c363c329-fbdb-425b-bee3-cf24eaec4910 d143f0e4-0233-4ab2-b9ca-5d14e6f51a33 f368ad36-0e49-4941-89e7-fec252f4fb28 51dc1ea3-a30b-417e-bdd3-7b768d524735 ebaf04a1-5ec1-4ddc-8908-8f4931a51af7 ee6b1ea1-29ee-4e3d-afc8-5200600442eb 08697c02-807f-4611-8ad1-e4142d175cf6 6b999d82-2fde-46eb-a482-25c51584f0d5 35fea379-504a-4dc7-b64d-b3fcde11a414 4ba04eaa-ddf2-4c7a-992b-24c062acac30 5e185e2b-25c6-46a6-80ef-9ecb2aff4a98 f9ef251a-2cba-4bfc-903b-89996b2940bd 3b731277-5b10-43f1-b463-7b617b7f995b 092e2d8e-4f5e-4771-b2c9-0623e590faf2 39c07bfc-5ac3-4659-befb-a0de040e30b1 a1f26f2b-0d91-42e8-bbe7-e7e038cbae9c 8688262b-39c3-4a42-a22e-81d5468f79af 9a6192f1-7512-4bca-b914-724d8eee9db0 c4f1b8f3-c850-47e3-9b85-dcedc29fd550 bade214f-0647-4eee-9d91-37fbfe083466 5c8250f5-b14b-4285-8114-09c9efea3ce3 d9e0ff4f-6751-4091-86a9-064d318e3564 a1bfe0f4-d5e8-444f-972a-90958c2699e0 d49df04d-1d73-41f4-b2fb-a687f84ac366 cc05de31-c41b-486f-b8c8-1be30845ed8e dde5b0f5-8ddf-4085-b534-ae58dce0278b c000a9a1-e917-4f67-980e-7f0526f8dea7 816198a0-0818-438e-9ed7-99383d231aa5 ebe79d30-63be-4be8-9539-1d09c57b019d 3a5f0469-6f63-4d9c-9199-45be28f0bc88 227b233d-0142-493e-9bd6-9c21d4784f74 1a08e4f6-265c-4b10-9416-3e4a8e10eb6c a216b50e-0451-4e38-a567-10750c162e8a e9f6e441-d8f0-4c83-9105-d1b3078f4eec 380eb2a8-4d38-438d-91dc-2d22a11cdf24 d99fe6d3-332b-4cbe-9a8e-b1ac756a4d88 bb90023e-2151-44e2-81ab-a24fcf0d3fd2 809c8f0d-4db1-4261-83e8-799970d2bb72 ef09c718-1c7b-400e-9a79-10d1e69e6fa8 63ce01a5-3e32-42ab-95e9-c8c4cce6f144 5f56aebc-3349-44a9-928f-62e6257810e6 6adb2e9c-a31e-484e-8d97-b4d5c903f46b 6a1f0644-8550-4baf-9a2e-16edb79a8a1d cc6f3186-8fe8-48ed-b5d7-8a371185c7e8 7fd7b697-7962-4d38-bd47-c17113b00fd4 798edf49-705e-4d1f-97d8-c919f5de0cc4 8aaef63c-9d16-431f-a257-0e9f92cf9796 72a6f7da-987c-42fa-8fc8-c4e4488ef229 458ff6c8-1fe3-47c8-bc9f-ca906b49547a 8b26c64e-8378-42d4-8cd4-37f7bb3dbc7c 4c954ff0-c7d2-4504-ab57-52966021cbe8 5e2055a2-375f-4e56-bf3e-c0db142d7c10 382063c2-c236-461c-9229-ba356f759e93 63b88c4b-6ac9-483d-8204-6d2f4d8e8eca 788882c6-05fb-4573-83ae-e00ffb97dd2a 50b464ce-6600-4098-b451-b0a387332041 be996b5e-991c-4cc6-a892-79ecdd9be025 abb037eb-6c4c-484d-a733-c089042f1ba5 bd61eac9-c7e9-4a1f-8354-03efff3c6b07 fc79d261-aac7-4e85-bd40-5287104ffc59 f34cb58f-d093-4418-9450-be86d5a2a4be 61d9fd2f-defe-4637-9bc7-14682f58c46d 8105bb09-7cf6-4d1e-b17f-f06afbeb9fc5 d812cf01-1990-40b1-8bec-e8276a24393a b587b99b-998a-4e8e-8c33-94d94691a18e 7693d4a0-9576-497d-bffb-1d521a84e4f0 c5538547-58a5-4d5b-b021-03d499401c26 4903fde3-7317-4d83-b597-570d45432683 bb29bcd0-cb0f-49ce-8c1b-fdce0fe80af1 4c4df6bb-ee49-4cf5-be85-6cc187cfa8f3 555f7822-aa26-4865-b32f-26d29c5b1791 0bbeb822-3e8f-48dc-bb76-477411c697a0 3a19e8a0-3d85-4f10-98f4-cafa9952cae9 0943e40d-4ed4-48e5-8cea-147009d95b33 c7e9a403-dc97-4302-b02a-0ef0866890ef 3b52e517-407c-486b-833b-a63fc82d4147 c9803a28-fa1b-4704-8500-651dea160774 f1e3708a-deb5-4a71-977c-91716ca94030 1ac390e5-38cf-40d0-b3ff-e3a4c837b838 a5273596-459a-485a-bfe1-d5fed0885e0c cf57125e-5687-4298-aeab-d8f4ad657c51 a3e05688-07eb-47ab-9858-28de3c3cf68c d560238b-2343-4c32-9e3a-f79141b4e6ce 4f51aeaf-2692-4e6d-85a6-c9109eabfd96 f9b61d07-0f54-4f6b-a82f-711b1703557d 54db3d72-795c-4ec7-ab07-d780cc53af7c faedcf29-4851-4654-98c7-ecb2b0c24b5c 16a6fa25-d262-471e-81c3-fd2344ff1278 150a4412-6b88-4471-acf4-af89fd4a9f85 72fce277-2083-4d31-8e67-be5c596faba3 ac5ba553-303b-4d5c-a848-dcb52f1d63b2 5d914373-e3cb-4734-aa70-61ddbd3d70f9 bc51c13e-eabd-455c-9b3a-40d50bd812b9 87c8f8d8-6e23-438b-b023-f36e43075cd9 0fbfd808-d22c-46ce-b49e-94aab3958138 1af581f7-5733-45af-8cb9-8f89b3309d76 c2a138c0-65b2-4981-9c40-061649369154 2bb116c1-db35-4bbd-a353-4a13bdc5ed32 bab9fb84-e00c-42b5-8162-d7a32710ca24 5d59150f-ae90-454d-8aa4-3462dba132ba fe182eed-f185-4d17-8e0d-044931096328 919c4001-5232-410f-a67f-c052100deac6 503d11cc-876a-45e5-9709-96902c7ee85f beb03ee8-ea7d-420d-bb8d-68b071d5484f 43babcbb-6374-4e3c-b6b6-96caf6bb4635 0e18eba5-7036-4b56-8595-14fdf89366cd 4174708c-fbf6-4989-90cf-d39ef7ea9d7e f171bc65-d2a4-4967-8822-ac76a77ce82e 7295fd5e-a259-4a04-8497-97bf4c07ec39 aeaf33dd-60ef-402a-9993-2b9468f28b82 1da4d889-e0a8-42bd-9da5-1044c17c12c0 f38fb996-4667-4100-97bb-442944202538 a015b2c3-9383-4bf1-812b-22a5deb09f59 2e093805-24ae-4401-99ce-56eec1523e28 73e62c25-b187-436a-a84b-6e71b383fffd a15aad34-5648-4108-95d6-c41262a0a3a2 9d451ddc-f514-4593-b170-6d0c8994d56d 3f4f6528-adb6-4cab-99b2-41985b4dc241 7e129392-b035-40fb-8f64-58c70271437a 6570cbdd-e5ce-4df5-bc86-c134dd3a0b4e c2e82f84-67a0-4ac8-9375-17ad3d6c0a38 07acab18-6870-439b-95c6-0cf4641cf2a6 9ff355a2-5cb7-44e2-97d3-260944f13926 fc24344e-10ea-4af8-b12d-c463cae2d446 1acbdaf7-9315-43ee-a2d8-34fc22cf4b06 1e7c36d4-5d3e-4190-aae6-fa6d67a4c831 f75a8327-4ccd-49f7-b792-ef2bbd7e290b b525e27a-1525-4e09-8d2c-8dac5b0ce951 3454c9d1-86bd-4b1d-aabd-b024b8b2ece8 f6ef9f92-6b7d-4b0a-b4f2-2ae6610c3307 40e6db27-7b9a-4a4e-a18f-bccc1f787f11 5c278542-4252-4af1-84fa-47d76ad9b729 392e989f-3d48-49af-8a42-58e4761e3138 39a19f44-8b21-48fb-8b38-384a4fa95893 85d0ac2c-73a7-4a90-88f6-63651997c8eb 676cf054-ab2c-4b3c-ab1b-0219db37a2f6 06044e69-cbac-4fe9-b352-718e1aeebd80 d20797db-b877-4927-8592-c79e3128d448 56b3c20c-81f9-4bbb-9bea-1c9e1734e9f6 5ef28f4f-5961-4190-bb4f-542fe7d23f70 c5fb5d92-979b-4298-ae8e-e57cc52a0fa7 c1dcef0b-5013-4811-bdb2-f9613f1050e5 efa44fec-488c-4c3a-bebe-6c26b19658fe 5b47c55e-a84b-4207-850a-489c586ca564 c8121338-cc3f-485d-9777-8359fe928c29 6c1d26a7-8e05-4769-bbc1-936750217741 f02a63db-6aca-427b-94ae-0577a0fc6441 2cdf7027-c190-4d5a-9eda-71c076f7e1d7 11a34606-27cf-42d7-b826-3b36063a2faa b17ac0b4-e2ec-4331-baa4-57e6b5bc1e0b 3d610bd3-564e-44e8-8c76-99a4823a0043 762224ef-a430-4967-915f-b094d14c1263 e289384f-4866-41b6-b2e5-f2460b483fc9 88f04abc-cbb3-4182-9ece-194b82424ada ae0ac023-f3a7-4c9d-9788-fcb051e96e35 1ed0faae-e1ef-4c3a-877b-6aa16d34cf3e 3551156a-a9d7-477a-8cec-da53e05da931 79424965-ed11-41e9-8fc0-4fc94a7bbf3c fc54ba29-f088-4ea9-aec6-9283c52485a6 74afb400-5175-4139-b303-398e97076e8f 662172d2-d405-4e41-9483-de138c94aaca 116511de-e49f-441c-8ac5-142ec01e9595 fdde0e07-37d6-42fd-b86c-640794a1f93a afaf5c2e-8730-40d5-8422-d29969916280 4d398712-7da2-4e22-bbee-721cc35616fb 32eff0a0-8785-49c5-ab27-648f16361dcc 3513df0c-141b-4bd3-aab3-67572a89544f a080cbbe-4812-405c-92c5-faa698d380e1 ded71cbd-62c9-42c1-a9fc-2d21d7de5359 2b97ba45-ee22-4133-8299-5941df695323 889df7a5-b633-4577-94af-a6688a5759ef cd3126f3-9fc3-427d-b7f3-2109688a4f08 da38c363-0e31-43fb-93c9-96486a632e46 42463c9b-4520-4188-a346-8c230003b0c7 2ff12cc8-ddf0-4726-bd97-0c8190d0f389 adc8ee61-0778-4600-bc13-cf2dad5f3b3c aa1b873d-ec92-43c9-a8de-3d4e5527a396 68099885-d47e-42b4-97d2-f8340eb0f973 6fba7b05-688a-4608-99b4-a240948bdbe3 bd122deb-e846-492b-8831-78aaf473a450 1baba5bf-51f1-4719-83bc-b7244ea539be 9452b130-9383-43a5-a618-5f77145f183c da70fdf5-8cec-4b0e-b517-0fd979220b48 219c0be8-04ae-4bb0-8673-3de107818b36 491ace6f-e4ad-4b9f-b743-5fcbe0fab46f 556301e3-f7d4-4084-b750-f870d31ede42 ac63fba5-234b-4f33-b7bf-b7c43ea2403f 7c49a2a5-ecfe-4690-b5db-ffab8035f32c ac1181b9-802f-45b2-8b8b-2406c9e57f49 6b2f466e-5898-42dc-b444-29f2edc8f388 cb5f6907-268a-4afe-ac82-d29ce2ed6666 6d8ce885-a221-4a85-aa59-f313e2d2a425 af011f79-6c35-4e6a-a439-c6679370c86a 2ce8625b-53c7-4404-b28a-7b2de1db9e03 0dd34e7f-8059-426c-bef5-2699b57a1cad 46d4e2bf-7379-4065-84aa-16dc58a2e9da 53c3f3a8-6906-4547-93dd-b1fb2d46aa5d 225d0fcc-978b-4ab7-a529-97c0c80c337d 6d866d29-7c29-49bd-90fc-1d13fd7c8a4f 87f24c52-fa5a-45b2-a2b0-5a1a9ef34d06 46c5b849-76a4-4692-b1b4-e75d08bc5d85 705237fa-5c17-4405-874f-872ce75feedb d74493fb-3b62-49dd-ae40-31d442f3b817 5af34878-41f6-4d94-8cae-fce029c69e6d 7b1a9ef3-fb59-4059-abc0-cd14158ce851 e96f3827-5bc2-4b5a-9342-796732ad6446 9b0eb7cf-ce0b-4ef3-a48f-105edeb7e20e 0f6d9f98-8b6d-483a-8ba6-3c01ea5c4084 6b333dfc-6653-4cad-b766-6d3e8a812825 8e0a741f-37cb-41a5-8326-7dc8b6ff4bcc 9d8f784b-ccb1-43bf-acdb-7de2248dcdd8 cc05aa2a-8624-462f-a143-b979e30f43a1 14e0534c-b47a-42f7-986c-6d81d6d97d9b dc2def23-ee95-4005-844f-b4b6f14b58d9 44f14605-2fdb-49ef-8239-d0179bb26b06 0c263b39-6501-4e4a-aae8-0dc6779c4522 7626103f-9006-45a3-9163-206b6533aacb 4a472f23-c531-4c82-82b7-7e469d689c66 5cbb8aa3-a1fe-4e68-9bfc-942f35423086 d2387c6c-13ed-4f39-bbe6-3a8d9c346faa 65c86b34-3d1f-4eb3-960e-b327b037ace0 b1100ffe-f9f0-4bfd-9158-5cc37cc0417e 651b59ca-00e2-4732-b1e6-fec3fc6488ca 6a7b205e-eb20-4503-8f4c-a1e355a8b703 2017b4f1-7524-42af-8db6-a6b67d1881d7 f04663a0-3be4-44e7-99ed-9336e6cb914c 0f192c50-fe1a-451c-b96c-63bb1f794199 bc3e741e-6a3a-4810-8259-e53699a557bc a75b3c77-d726-49d1-a05f-6b74ba0e3650 8657e3c7-9dfe-4f1f-941a-b367d202a349 7e7f2ea6-24d2-48a2-9bd7-9977f1dd164e 136b0ce0-31f2-4c59-b270-e2e1b9699ceb 6be2758b-1c2d-4642-add9-d9cb3936adae 87dd9e56-6559-4a11-a339-e4e36973bd2c 124e59c1-f508-4b02-8c21-407e931bca9e 2cb8f313-9eca-42fe-bac5-e506ff1a835e 8f284597-7a2f-4390-ad41-7b8e7cac2503 0ee9debc-0952-4570-a6ef-d7c92c912bdd de37bc82-d8e9-4425-8499-5611435dd090 edfcc121-4784-4000-ab5e-a346caef0caf b69034db-1b34-467a-8c44-f08051e8e455 092a63f9-59db-489d-a457-fa2b3c0072d4 4d8685bf-ff46-4964-ba5a-e3892b548b44 f936fae4-707f-459e-876c-c329a2a9927d f007f56b-5836-4728-9bdc-b81e46639d66 38bdfa90-1327-458d-ba96-8a7dc823344e f059812f-a1bc-4d10-b90c-f4a6d8eb00ed 0c85e39d-366a-4ac7-998b-5f586d079b42 9b5f3c54-d739-46f4-8614-48756134812a e6704f09-76f5-40a8-ae17-b2861abbb45d 440ba263-c2c5-4324-ab31-52d2910a3f84 fe1fe6f0-8db6-4101-add7-0594261a0499 dd316bcc-7c46-41b0-bf5d-75cf4973a7d2 ee628047-31a4-446e-86cf-3c65666549c8 f49d6c92-356a-4d86-9fd3-8fec43187ec2 c70bf9e3-0952-42b0-ba94-2ae9721fa580 85b98371-f495-407b-848e-b7a703d3fb73 b466c9ec-0d0d-4a49-9a71-b9a1dc62c81d 9d5abca7-35da-47e7-b9d9-824263d69979 e4efead9-937e-44a0-9228-84056f4324e9 f7f6a9bc-084c-406e-aa3d-3e0d3d465571 6c02007a-cba3-4f56-82df-4ae06d433f3c dc56b138-7133-4ef4-835f-bc876f0b3e2b f309a8b2-a44c-4fe1-8bb8-d9487b45e972 86699c97-8e2c-48c4-9557-5b903add65cc 8e6b1dcd-16e0-441b-bbae-3e6f185927fe 7a5d11c3-4ba0-4381-853c-d839ecaa5629 7f41c836-34b2-4d3c-accd-7cc6166eceee 1c18eb29-ef52-4f0d-9279-d73a2a9a9ad2 60df88cf-def6-4ce2-b786-18bf26d972d6 6ef3ed74-72b8-44cb-9dc2-538b4f314580 45a7a13e-9a33-469a-9cc9-d38336d72f00 1669b594-9633-4a52-a426-34d4613a2b5f dd2040ce-821a-4265-b70c-f8d42ea34a17 a1fc51ea-f0ef-4e97-8c1c-bfc1b1cdadc1 5e8e0079-29bf-42bb-b33e-34102286b5d3 3e908910-a1b2-4e25-b0d3-b06c1ac8c15e 62cc554e-2200-4005-949f-0eeb5803cfb0 759a4ba9-ba32-4a09-95f1-40d5135ea53f 1aead67b-5556-46f8-92bc-2b4aba919c87 f8eb784d-202c-4051-a4e2-b5970783dec9 358b805f-b841-41ce-a070-903dae52e31b 50b9f699-4e6e-4476-a3ef-8187f49c1948 a8e58252-f3d8-457a-b28e-86dedde2bb92 d053ae84-5832-4536-b158-4e9ab0732998 465b2cc0-8078-4adb-9825-4b1814ae0a07 2a512970-ff50-4e59-9aaa-f21e7a67d37b e47eff9c-3249-48d0-ab6e-cf756e4c93a1 0de71d18-c893-4c87-8897-81478890ac21 649ecbf9-dcab-4592-ac86-5511301ad806 97dd1c2a-292c-4d36-bb5b-a1a6aa04b714 e80a7130-e426-4421-8921-83469e752746 41cf475c-f157-40b7-b3c1-5aac7e6df43d f0be1199-984c-4130-9eaf-b237f9d68e1b f4036b00-3f7a-478c-bc24-66d1f0dc5e78 7f528347-65a8-4d0b-a5eb-ac79e5ecd86c db61c51f-2d3c-4cad-aad5-1304f41cda86 0ea651a3-4f4d-4371-9933-5e2ecd2af3a9 cdea0635-5752-4596-9eed-55ba0cf1d41c ffac83de-f1e7-4846-af35-4a0b3e178e9d 33cf99fe-243f-487f-9bee-f311bd39164a b86a0543-1ca2-4997-b018-2b2671c4be23 dde24140-6992-41e9-b80c-74405d5d1560 3f55799d-94c5-4e07-9a7d-442061f9f156 0622dec4-42a2-41c0-9203-13dab0d6c954 da9adad1-ce9b-49e4-8b0a-568bb2d960a8 395dd591-d3b8-47d1-b422-dd47a21180e7 004693ac-e661-4c55-8af6-0d1243187e5e abfaf5f1-5201-425e-b1c9-31029ec7aa22 f2de16e2-9c31-4463-84a5-69e25d66a4cd 07a94c1c-76c1-4d02-852e-31393a13e408 8271a503-f5ce-4ae9-8d2f-1a28d84b2906 d00485c8-2911-487e-a2a7-f12df4f643aa 61e93e30-c8f4-4952-9f84-b09cc7bd2ade 3a04348d-e03b-41ee-9810-48b4c2f06a1b 671c1e28-1acc-4111-a7b0-1b521be4c839 52930879-024d-4a17-847f-b309f25d4abe 68599d8e-b813-4608-a5cd-3463dd3ffbf6 1ce723fb-521f-4857-b6c9-4b0a35be560d 51916f80-18d1-4a68-8d0b-08dc55198dbc 059533b9-8754-4ce7-8440-deeb9abfe4ba 15774187-fc49-4e89-81ef-c7ed57d821c4 84bbf70d-a990-4bb8-b926-8c7b117ed353 e047cc88-6ed0-437c-a750-616e4a82d23b 017cbc40-8436-4566-831c-4d1edc8ef82c bfd657a7-f92c-42ab-995b-c69080e8c1fc f7e90285-1483-4412-bb35-169d0f71f861 b6dfcda2-d072-4638-9de7-cf4b5737471e 4847c928-bd33-4960-8b3d-3960d80f74df 459f5f7b-e0dd-4acb-815c-93b6089be1c0 6efedee1-6c68-4c76-9c81-525524a8de2e fbf1d6e5-daae-4fee-adde-5d69684bbf92 fb0caffd-9ff1-4353-8d1f-f743b1a96980 302bf841-8d2a-40ad-9310-29092b2620fe e9773080-0d66-4a94-9c5d-5aff7f105018 2c5ee2b5-5890-4e3e-a221-0450adcc1a71 fc759062-63f8-4dc4-b42e-bd11fed9ec2f 68f413be-7659-4852-bf8b-3d584793d0c5 2bb230b2-1db9-4eb2-a78d-07c59dae1e90 8246ec53-3166-4acb-984d-3e3013aed8f9 212a52b9-d599-484d-ba3d-c06da33a9a87 31bd2f4b-1463-4093-aed4-9e723271a6ad f32831f2-4ea6-4394-b7d6-d7427ca980bf 8a0269d2-7610-42a1-94c0-22dd64564e93 371cca47-cf98-4dc8-b61c-e094274711c0 472271ed-2c0d-416e-9334-3347847537ea 439e39d6-028b-455f-876d-ee208759e8f5 82bb1b73-1645-4ff9-8648-09d67a224ea9 9d615909-12aa-444e-8815-ae523623b804 43d7defa-462e-4f74-b87d-29788e8dadf7 38bf3f76-5304-4b52-a92e-bf64d102a03a a19bb0f2-ee90-477c-8bd8-ebd8af64d4a2 cf263524-b442-4b3e-8e71-5d64f320ad6a e1234344-40b4-45d9-8137-8b8fe085a124 c2dfeda5-0f20-4d23-8684-1a4a95e47fa7 8271b38b-ebc1-481d-b5f7-1c555e1b3602 684f511d-aa72-4a14-bbe8-07abc9fd7add e503da81-a271-4802-aadc-759bbc1e5b96 4977edcf-65f2-41eb-ba0f-264c079c3a80 ac3c5831-3b0e-4c8b-acf0-cf156fd6ade4 3802d396-64e0-41f6-8329-b4fe62dc22f2 339fdc8f-c21f-4bb3-bffe-4bcc45d9db3d 7916fd54-c44b-493c-828c-ee964bd88e3c deadfd7b-2d1e-4f45-a4f4-4f88f3ce6d5e eeb09734-4497-4e7d-9b35-b161816c0f79 22352a5e-d077-46f5-960a-bcac69f0044b 858d4087-c216-40d0-93e4-cbb257880ff0 54dd51fb-1758-400f-9d96-4a79eb80283b c38e1b98-a0bc-4101-afcf-53311ad9a009 1db1c7af-9b5b-461c-94d9-ed424bca5ff5 3556564e-6db1-44dc-9763-2b02459c27d4 4bf203ad-43a2-4378-b06d-3850e59ca6fd c0d9f622-019e-48b1-bb1b-71c8daa1cd67 29e5c96b-b1ab-47b7-882b-70cdced44063 6208641b-a3b3-4e27-9d9e-83da06be0c16 3aedb2e5-315a-41a0-951e-c1be47ddfbdc 33cf0569-07c8-40e9-bfc4-c51a2c460f23 75151093-237c-4a78-80c8-63657e855832 ee836955-68d5-4910-a662-913cf646a7c2 889ce9ed-1422-4da0-9ed3-e0b0efc830f7 95fed5bd-3562-4941-9645-c6c4be35314b f66d0a9e-5753-4953-b449-55bfb4073af8 fce20306-03e4-4109-85fd-58c1713ed603 7c45960d-34a8-422a-820c-22d37f9440c9 da94f05b-f0e9-4063-8b58-0de5ae6de7d6 131b4bd6-5bbe-44ac-aef9-f6293aae3783 b50defc7-9662-481f-b977-54ef0b8d072f 28c8c3db-ef83-44c2-b9c6-58be4eb73c5b 167253e0-d0e3-4d37-98ae-e969e65df3af 47461c12-ee92-4779-80db-f55710561e98 e78bb2f2-f954-4b4b-9b53-b1893f2b69f4 f7fd3fb3-43ac-41fa-93ac-6202ee3b2e6f 159ffa7a-1ab1-41c1-8994-ed26f5137ff1 ae78ed2a-4cd9-4722-8935-a2d106ae5785 6b18e47f-95b8-4af9-be05-afa419701ec9 09e645ad-a320-48f0-b5eb-3433448cc199 1143123a-ea75-457b-99ae-88e710f8073d 42f585b8-d58f-4583-b594-c1ba68f80912 fa8fcf76-5040-45db-a578-a95af6cad133 3e4accaf-b108-4389-84e1-6e6a59801b78 2af70687-97fd-4c71-80f1-89eac4e9e366 8b57d11a-1605-49c7-a066-a8dd7eefda4f d7321983-8a92-455f-aa52-ba099ce7f06b e5597572-791d-47a5-8e2e-e8300939fffa 46547580-b602-44f1-900c-6c7fd6430431 d1de3891-e84f-4a33-8067-c1a44d97eeba 454da843-0f8f-43d8-a2a7-dbf43d7dc005 217c801f-6c84-4abb-b54f-74709e00089a d3bf9183-9aad-4692-bf0c-9944928c5822 621f7152-8d73-4f9b-83db-3823cc756678 96f9b682-b577-4238-961f-df8cae186da0 5fc14852-d8e8-4313-8a60-2461c3ae24a7 9788a214-9a30-4de4-9a76-a830859edd04 dfcb2693-4a69-42f1-a8de-391084498524 9f86d808-c4c7-4503-9f3d-0061d47f1d47 962f43b4-9036-4749-b47c-e086861b6dc3 738a83a4-4742-4ea8-9f30-5e85caa9e15d 1e71800c-bfe8-4cf3-820b-72bc13efd232 3710a7f4-ba10-421e-abdc-921f85cae415 a2cb140c-f41b-43eb-ba3a-5ee7a6d223c6 50341cb9-895c-4105-952d-f1fe1efedf76 364f96bd-c224-4c45-bcd9-eb44e60507c3 c8ccbf74-ed08-4799-bf82-45330d413145 69e7f7aa-7e19-4c46-890e-e30865824810 31572264-7ce7-49e6-bb54-e20d35db6cc0 546d1469-4d4e-47fc-897c-6c2eb8a703d0 0e42e671-e60a-40f8-b36d-93a1fd448c99 d21c2cb8-9636-4a6a-ba06-5c914804aae4 80ba06a0-40e9-463e-9d69-2fb78d940874 88d743c0-2027-463d-8e8f-ad91f7f3d0c6 ad8360e8-f12a-454a-8ee8-229eefd026a3 714cc35a-7e97-4a19-b6bb-90ccf43b0dbe 7c45046f-fc17-42e3-ad6b-72975f4cb824 20fe0524-edea-4663-b226-b5e1da5cb812 5994295f-daa0-46f5-91b8-3bef3dc25c04 3180f2e3-991a-4644-968e-f1a5af2d4a6b 3bc07b40-2f79-4640-a8ca-0d6709c0087f d7ddade9-5e4c-41b5-bd40-3f0d8bb96df7 e8beaa14-052d-4ab0-899b-c11ad523450f 681a667c-ae92-4e0b-ab55-cec33c31f09b 81e8ddb9-1127-4c45-8520-2b9ca4ec8277 b0010868-6fa2-4c7b-bed9-bd736faa8318 6b7572f2-53a3-4518-a1d6-458635b89094 7f88dff1-d3bf-4b90-893d-a68822422012 57fc1d6a-fa2e-4180-a0d8-febd808aa304 2e520831-25e8-4e14-9327-f9afbb727892 857ec840-f2b5-47e1-a5b6-b96c4f31a0f8 10a594cd-49a0-4c13-bb54-35bcd559b933 5e5a39f3-75c2-4b1e-a7d5-c8275ec4a52a 1e340a2c-9548-4f43-a746-cf8696bba24f 24b0044a-002e-41b2-8dcc-64c70f6fbc12 e2c42301-90fa-4e8a-984f-0922b3b6b784 15461908-9de9-41ee-a714-b14943aa5803 9b5e1c8a-49e8-47fb-bf46-2420087736ef cde28735-953a-408a-a515-83cda55de6b5 2cb0239b-f159-4faa-acbf-e660a17a638f 6046abaf-b714-4d7e-aba9-bfe6547e1304 5b06031e-839b-4c5a-8496-734ebfdc81ec d67fbfe2-22d6-417c-8f86-778fd4a16abc af3c3f24-8129-4620-9564-74a78d393459 c45f687c-5d54-4b2c-8381-b9b04d7d5b04 985fc1ee-e500-43ca-91d3-3ff0f4117465 17ea1745-c8ec-468f-94da-26160fe93561 90df6085-ab2c-4779-84f5-b7c7cbac8dae a9f01815-7bfe-4a5f-9ae0-fb46287364fb de6a5a11-1729-4a06-9dfe-ee9473bbc904 bfa4a02e-d6a0-4feb-b13d-042b36424b0d 4600138a-efef-409c-b32a-6c25ec00bc78 a015eb7c-e7c7-41f6-b5f6-4a582ae4bbdc af2eb6a0-5761-445e-93e0-5919c44efa09 cadb3221-d0ff-4dc5-b685-e69679f08d12 e5494ae8-97e9-4deb-ac19-22e2b41a0a5e 37f853a2-109a-4758-898d-9acb2729ff0e 752ef316-80cd-4ca0-be35-5bdc5f482558 053cc6a2-35eb-4665-bbc0-5addcfffb43d 01bc2446-d7ba-4b8b-92f1-d668af4eb7f7 5b6ee618-ceb8-4f32-a4d8-8d12e73c4630 685ac018-f723-4754-b2aa-56fb6e628654 e5f78dc8-b236-43cd-802a-cf3d4cc3312d 597de5d9-eecf-4ec5-bd96-ebfb6f879a5a 8397b44f-a39a-46c8-b390-cfa766e29c14 7a2c88c3-e197-46ad-9eba-a71358f4e28b baaaacfc-c1c1-4423-ba90-e4ecbebc4c6f 01dd1a61-6695-4dcc-9f26-572ccf9174e4 f71a94b0-9d08-45fe-882e-6f3dd3953d11 6d8f1eb8-497a-4238-989a-5fdafa419bc1 b2ffb537-172d-438a-b489-91ad3ff6616e 891fa25d-92ce-4da3-8db7-9f2b3ceb68fb c4e1739b-4ac1-432f-8316-765d45915b67 17e0a39d-3075-4065-bdf4-7b3a59f9cf95 c68bab27-ffa4-4a23-b8c4-cc14fd97fbf7 110f996a-b525-49b1-b42f-e0b2b22cb12e 77d4a811-23b6-4fc6-9f93-4b480f27a4b6 447b5e2f-770a-41ef-829c-abe8b044b31e 9b5ffcd4-e984-4ff7-9bd6-a86d81c58152 716088a6-e6a9-4778-9a90-74422090d857 56708ca1-1bbb-41a8-a125-9c634e0c3840 b2f599a3-60c6-4691-9ba1-d68e3c7e8ae6 f765d9d4-0cd4-4e54-8641-86092755af62 c2dbc862-165f-4ea6-bd3a-76f3517f4595 c1bad3d5-1bed-4366-abed-b08a0048902c cd7ffb74-a10b-48c3-b59f-1f418991b054 ce50b3af-9383-40e7-b8b7-552bd24edd0f adb8181c-57d4-4f86-a507-6190f19a06ac cc62c4a1-62ad-419c-b29f-3f1c0fd63315 7913c835-6cfe-4c49-93d5-596f019e6647 6cc40f76-79b0-41cb-871c-d221c3254551 25666292-1d01-4f8d-bb02-93542aaabc7a db58e804-4bb9-4427-81eb-127521926c7d a7a58437-def2-4a98-9c41-cecba985fefb 80609b81-bf81-4657-bdb2-d0eb27501f3c 599286d6-f308-462f-93c1-1376ab9f668a df8e8f9e-a026-4329-a05c-fe59f441ee15 247c9732-ec4e-4d3b-b2de-38dd5de30c69 2409a4d9-cf02-4b8b-b73a-59b03920d0e5 735bab55-f299-45ab-bf6a-a52f37b0dd6a 256e28b8-06f6-4975-ab55-a9f8bd2ef119 0578596b-12a1-46a0-9017-f2e62408ac28 a3a8bfb9-99ad-4bdd-82c5-33eb7276ce41 43a96556-2193-41c8-9fd2-8427c593b624 54066258-062c-4d9f-86ae-035c077a3b00 cbb5b28a-20df-4644-a9ea-776c0082f269 edbf4455-2873-433a-9d23-c19bfeb98a23 57dd6932-0234-4080-b60a-fcb588e6e736 d035e4c4-c237-40e0-bd5e-9512f7024272 9fce04eb-8c84-4d05-8bfd-d7519dd1a0b6 fa26a6c3-0a74-48f7-873e-51f1fea1ee41 d479067f-f85f-446e-9dd5-74bc29114cd4 50d8bb54-af1a-49f4-a044-87a50131cec1 91243f28-deb0-4d4b-9ee3-561a5fc77dc3 f98e3e25-187d-49ef-962b-ff00dcfacc34 2be0f8b4-dcc0-4ea0-badf-59d70f736be8 a2240fff-05ea-4373-8707-7f19d1f1cb76 a4503e63-115f-48ac-80ee-8cd7cae34e40 5ca5b06c-c59e-49c6-9441-290974923f82 7bfbf598-4978-43b1-b139-5a631883ec22 35303e82-118e-48c3-a918-764c5f92336a 81f72ebc-8e27-4bf5-843a-608e252b1496 25473462-6119-4ac2-8b31-b079d5077da4 955a5108-b739-4cf1-8e7d-adcaf188e5f4 35805835-29bf-491d-a8d8-9e93b050864b ddbaafae-b827-4f80-8b94-eadf96c601f1 13e82032-654e-4956-a4c7-4be2bf79e192 64c41c44-a3d0-4a95-a96f-453850d31305 ed5c55f0-61cb-42a7-81f9-f907a1921a5e 618666ba-2c54-4c67-b247-9185a8c4ef32 b70102fb-8519-4098-92bb-bcf8499427a7 b9b3a08d-636a-4618-a8ca-5521653f772e 4c8f4734-83cb-4fd9-b12d-3b02a691d71f 675a7b72-aecf-4787-8b08-4c5bda2c92e8 cb97ad8a-8deb-47ad-b1ae-8091a6356319 f3a22c59-3d44-4f80-b934-026fc5efaae3 b0075ab0-964b-4ccd-ae08-7e12ca5bd4b5 8a763ff6-b840-45a4-891d-8698ea66ee05 2acd054b-6284-4ea0-b19c-1b627c583f65 aef31373-5f46-40f6-9206-e81cdd934424 0df942c1-4203-4151-8dbd-877ddfb853d1 235a3039-57e6-4aa0-9771-b1d5df300dcf 5feacac3-46bf-435d-8381-a1681518acb9 f1795f3d-c57b-45c2-8474-76bbceff9573 0365340d-34ed-40ba-94f8-4b857f4e9e28 31064316-1236-4dbd-b6f0-1325c23edd07 c006d6f3-67b9-4146-9af6-98d49c2d4e3f e7648b10-f4b9-411e-b7a0-b0551f4c958f ad4d2168-ec6a-49ca-958f-e0c693a04f53 7e7d77f8-bba5-4a56-9e23-515860dcdd07 bef8a6f6-1225-40da-987f-8702bbb1d5ea 93ea3ad9-6205-456a-a18b-6842068bc230 b8792bc2-8ee8-4b1c-bc64-91b9095c6eaf acdb666f-bf5b-4c2c-b349-4aa1dc8cfae9 c57d67b5-881f-4789-9ef6-20355af2401d 140bc7b2-d499-4e5b-8d94-adb6502ff039 7144125b-9fb2-4b22-b78b-00123290866b b8092b3f-2e64-428a-9e6a-dadf7c125bc6 7f57ca42-8283-44c2-9056-2e8d3e1ed4bd 02266607-8ce4-408b-8c28-82ab83260654 1dff24de-2344-4c37-b32a-3f9f7753eb34 fcafb2db-fcf9-431f-b949-36a8a57cedc5 5860f634-7070-49bc-aa1e-f1eb3915e801 757bc0d1-c4ec-401c-99f9-33f86760bfff 43314301-9525-4f7b-967a-a69e5f5c1dc6 3b00e27b-d46f-4d97-9395-1a1a89083a96 c2dad078-6f21-4ca3-8ffd-0ea06434ba74 87d5243f-1923-4b1b-9f39-7cb0539d4d0c 49f65a85-4242-4b09-a994-1a074d6f771b 6cb945f4-ab06-4dff-af2f-a972916da8c9 dc554adf-762e-4a39-a0e9-d0f4db21bafb 860dab5a-b1ea-4336-8cee-a2a1913acc2b ff1abbc2-aa7d-4593-a125-7ff929807771 82ed49c2-95ad-4ee5-a3a5-8dddac6d547d d019fe0b-164a-4006-9d7a-dfb86d2c3d44 b57708a4-f837-47e2-bd16-aa90b11172a3 a2369055-0ab8-4f15-a361-36093422b95f 99521254-a27b-4e83-872b-dab1833b58bf ce660ca0-7090-447b-9101-0a5be1a638f9 ebad03b5-2f24-4b62-b64a-e17bb2efa28c 79966823-141b-46b7-9800-c2e94e5799a0 673ad424-78ad-443f-a3d0-8717896e3162 61a2adbf-0483-4218-af60-69d8088d245d 258f3028-19f6-4348-bcca-8edc11ea19ae bcc2fc2a-0543-4e51-8d55-e3d98c40b112 c0b90ecb-52b3-4de4-9d70-48e5d041b5dc fb0dc19c-f972-49d5-9ab8-9596a58c89af d6f5b5a6-8cc6-44ea-b161-13ab62495a96 a6d21f5a-4596-4d37-a262-919af1a40acf 15ca095e-32fc-4b88-95fe-5239ed7c35b4 3a972b70-88c4-4a4d-83c1-1e1ec8158154 6fa71554-0f2d-485d-b8f0-180fba305dfb 3f138301-587f-4fcd-8d12-de3f2fa474b1 04d972cd-1279-472c-9a7b-711ccf8b9f0a 5c7d3457-b38b-4e76-87eb-e164ed20b74d 399c94fa-a39f-47c0-8b27-77360a0ed5e2 51b8aa3d-2f30-4792-8221-5b40d1394539 d327468e-ff13-4cbf-929c-6fbd4be01bfe 38e831d3-6f50-4bdb-8f13-f88ed0838fe6 a4510d12-07c0-4775-bb67-af2b5f4d4934 cca890e4-827d-44a9-96b8-12ff35bb82ae a82259ca-075f-4976-bfb6-198f06e26ed4 ae6e2c2e-da7c-4e82-9475-7e431b0b8c60 3a4e20c6-439c-415e-8f49-6310b4417557 e2130519-81bb-49b5-840d-bdf31cdb24aa fb5850f3-8c51-4f6c-8435-ad138c176a4b 65a4562b-fefe-4abb-ba15-27b39b2022fa af0c81ab-d2cb-4c8f-9385-e97a5f0b215f eaffd3ef-aeb2-4f5e-98f8-08fcda507d64 ad570029-ddd2-449e-83e9-38647807e914 ec83d3f5-d65c-424a-ad0e-ce65f3db7374 bd6f43e2-f326-4b6c-80e9-ebdf2392eed5 19fe6a17-fe60-40fd-b529-ee968eebd291 16e6dafb-96a5-4093-8090-ae7b27dd01b3 41619c79-4781-443e-b64d-43ab7638ae3b 52350280-4845-4a03-a306-ad8be0ea9f12 7ab14db7-8110-4cb1-bea7-89e482c1a776 ee479c7e-9067-494a-bcb9-13462a3295c0 42da90fd-948e-4073-a6e3-8f1342368b98 8565f30c-98fb-4eb9-a885-104660e61e1a 97ca42e4-56d7-4dca-ba49-30941b64d49e 8a767020-e1fd-4c7b-ab3e-dfd2d4b90d4e a10e1517-1aac-4cc5-a98a-484670c4da2d 91d54897-8577-464c-9fb4-d579ecf70a90 ceed4527-7a73-46fb-8099-d4ff0fcf65ac d80d751a-d34a-4d33-8fb0-eb2ffdc0a633 94199ed4-9027-485c-ae5c-8eb849f99cef d64314f7-aa9c-461c-9a70-285e4f91f595 2eaa3699-aaf8-470f-83df-dfe9d858f87a 1287fd1d-3fe8-43eb-ba1a-cb98bf4846e0 b4c17391-14b3-4b83-9f14-09f6a4bb786b 8c368a66-ccbe-440b-aa50-6a3215e83cdf 05a09c29-d805-48c4-afd9-b8885946f1be 67c85cb7-e489-4f06-9539-a550b34db479 ab73fa0f-6510-4afe-9a74-0b0c5c779b1e de9bcf94-f92c-4f46-a5b0-1f147d7987b9 3b4e3198-223b-4699-83fc-e68c788a2a28 f51a8be8-4d75-4e6f-a219-90b35fdb4f4a fb6a0fb9-fa4b-4327-b19d-2f9852e8553b 62be82da-7503-4c6f-8733-f537e7bf8ecd e14fb5f7-703f-4315-8981-59b6bebb359a f30a6296-cd19-4ee8-a3a5-3a4bd7becc02 d5c41fea-3dec-4a55-b770-caaf02a31a88 05da0fde-04d8-43a6-8921-e22998014b4d ae9b6402-1d40-48fd-a7c0-7752d3c60f47 eba93a81-3198-42fa-9374-a09a31cf580f 09628199-d13c-4cee-832b-db08744da21f e575a60e-3eda-445f-9c7a-20d4626b2386 e38924d7-836c-461f-9633-e0aeedffd3c1 703b7aa9-f2f6-411d-abbf-d717edfd33e6 ee507fab-debd-47d5-88d9-0dd7fc0c1972 56d6b545-6955-4989-8b23-5b0c00cbdfb9 f1eb08bc-04cd-4420-b4dc-0628c7ee4451 3b4fcecb-62ef-4ad8-919c-a5e55b5782f1 fd2e3f7f-71b3-4c93-bc5a-2c577a252022 110d6656-6de8-4294-8409-d41dc1e52909 d183f3b7-6cd7-43d5-adea-a9db3b6a593d 064aa159-3d8e-4802-9c08-27fbbe4bbcf6 4b6e9418-1412-46f8-8ff1-486f6344ac0f b014fd8d-91a1-4d28-95c4-47e4be34d553 5c46886c-187b-4dbc-83c5-c854e4282786 d4c68327-4db7-48dc-ae41-970503499257 5c66ef2c-d2ab-4396-8541-e655f69b4445 1ab4e5ae-dcfc-4885-b849-d9ef90d46036 05994966-712a-49aa-93e0-0b2480c502d0 d576b123-60a8-4cfe-9f8f-ca4f45a7d736 7735a96e-6a98-42e1-b9ff-ed2679e7c8bb f5a2f2f5-692d-46f8-bf32-2424f2f4275f 55ceafcf-2bba-41b4-99dd-acfd950b54c3 2c77330e-c5a9-4711-82a9-355ad736be03 58f9cdf9-4e25-4e23-9168-ad6f2cc79654 d8d34a8f-cb1c-4f7d-a904-05914900cde2 1471e39f-131b-4939-9b8a-5b840c99566d 7cbe5e6b-d919-4939-9132-5f2219e2e0cc 33e9a538-0ad1-4c6f-8b9e-37ed5924c2b8 fb7de675-d825-40e5-8dfc-e948216e7513 3d569ccf-4e1a-49c8-bb01-a5336fea9a4b bf959e70-d53f-47ed-aa89-167d6e0e2a88 b3fdd4d1-8058-4cb6-a343-cd15378bd40e 7b041101-72a6-4898-94ac-e2328f2e31ba 89d6c8dc-8782-4275-8b4c-484a53ddd208 bc9b21dc-a23b-44af-8073-25e32fa630fa af359530-0a92-4c32-8415-75fd55eae74d fafff4bc-b823-467e-a979-fb75bd0449d4 fa09b684-0a3d-4afe-8108-53ecbd218aae 7c69d73e-55df-4945-a8fb-18c5dd56c47b 55f1c4b2-c714-48de-81ed-55ece515b3d2 120dffcb-2796-46b9-99c1-df71293b1108 fa24e5f8-da9a-40fe-9405-48e07836f615 20a5ff98-e91c-4a90-bf65-067c1e8f53ee 8239afc8-ee10-4998-8faf-2d98f6a7cfc9 026c97fa-8a1a-416a-8820-288cf80662a0 242201b7-e43d-4bb2-9581-4c2c4d7f7d20 be1b0a88-5e53-47c9-94fd-5428bbd89857 cfee7c2a-bfb6-493f-99a8-b3cfcafff2c2 54ee2628-2d7a-41e2-b859-d746bba2a054 52122346-3888-4df1-9444-32a2cc008ae5 08de712b-2e1c-4a52-b136-11b6a454dc6b 72912357-08cf-469f-acf4-c2ec266f983c 4f969571-ebdd-473a-b020-8ba48a9269d6 1d72f4bb-3d9c-44df-9047-02eaeaccaae6 0e35a393-0079-4c37-b902-5ac56966c9a9 4bb18eda-c10c-4c5b-8710-4906fe7ca367 c2555e5d-5d1e-43a7-b39d-9d40f76dd3cf 8996189c-58bc-413b-a5da-be86effd26bb 638fe74a-0f71-4e2f-ae58-890d9d60756b 871f9bd6-3370-4357-9b4f-c4b1e030bd0e 2bda64aa-3f0c-4a58-bed0-1e03758510f2 baa2717f-a3df-4426-8cdb-2c6bc83e6649 612a65d1-eedf-4ae2-aa81-8e512de13617 0ec28155-2a89-4da9-acf6-bb8344334357 1aac987e-732f-4db1-9663-1ed3fe639ec8 6f8eec1e-df0e-4b52-9e1d-41580a07b926 b54ea8bc-d0b6-4b2b-b5c6-21b047d6e207 b4d8e195-c3a2-4685-a574-9fb034047086 651587ce-abd4-48fe-917e-5d10b451716c 73b937f4-58dd-4491-b3b3-138bbd10f6ce d84ded3c-605d-4fdb-96c9-0c425861ebdd c0cf2db2-0bb0-4165-adfc-30bcc1b707c5 413a0314-057c-4432-9c9a-49c64ed132fb 881c5ee2-a453-45c9-bfc0-317d8a0fb518 b11fd1f1-692b-4e3a-be76-bb75ca7d81a6 aef739fa-4e51-489c-8372-87def4bb4f52 738d7973-063b-42cc-acb3-da87da497b60 4dd7cc65-4961-4886-8e84-1a26583648f3 6fe04581-62a7-4978-8aba-9cee77253d7d 32c517e3-0a03-44e1-b38b-d21bb6ad6482 04c135e5-da32-459f-b980-0706cbe274af 0ace7f45-43c2-4879-9f4b-830ac231d5e1 94805c7d-2885-4866-8126-98dee26b6d38 dee1f07c-8df2-4b9e-b069-eb3c280b6b12 99d8bc3f-e14f-4a6f-a017-df70091650e2 ff49fdf6-6226-4c98-9028-f4771c74fd1a fead4073-f2ef-4f97-b1f3-296614295371 3b9d1b75-944f-4387-9cbe-d05c3a4f5a57 8aaeac2c-2ab7-4804-bb4b-727e291bf695 638a2482-139e-464e-9de7-ca46cf8d71ac 440e4a57-4a8f-44a3-ae38-ead19fa0667b 760262a3-1efd-479a-95ce-4283f0dcf7b3 dc7578a2-a695-46f9-bfee-b020e7feb779 4ab6f0f6-9043-4810-a4f9-2f754aa20909 24db7df0-75d8-492c-9483-d484dd66763e 889f3018-2e96-4d80-9ae0-f3b3672c17c2 af1e1340-b1b3-45bc-912b-e80afeecb36e ab766ebe-bcdc-4282-b6a4-f52121f3086e 905ba560-ad4f-432f-ba89-dfd80906d332 6aca9c16-fd41-45bc-905c-f61a0a603268 fd089bc8-20c4-40a3-bf4f-718393a58ed8 20ba02b5-777d-48f3-ad5d-d5248593d5c5 d313bf44-4bea-4bf3-b956-10a94380fe95 b7357b3d-ccfa-4ea2-8ef7-709959cc1a9a 79b873f6-cf53-4075-89e6-cb9ae2586580 4ccde672-8217-4b7b-837c-eb1b4cf7f620 6bbd635b-ef58-4388-b51f-f4dbfcd4a4e0 52ed042f-951e-4cce-b421-1fd87930e11c 24ac7027-7ec3-4f4c-8458-f0255bbcff1c 62940949-9247-4f3e-926a-fb3c511744f0 96a8a5ff-21b8-4ec5-9ab4-f16b6180f075 4aff1f8a-4855-41f5-ae5c-28b51a1d33e3 6c4bb5ec-6e4f-4567-aca1-49c0e1dcee85 75181460-a5d4-4ca2-bdbf-d8362cd3a340 cd7508ff-a64a-4d99-bff2-b49df31e550e c6c99021-0235-4654-ba61-97d455c35f2d 8a56b1a9-507e-496e-86f7-00104b21a4d9 4a16372b-f812-4305-8628-7aacb4fbe770 36030f38-0c1e-4aa4-abbd-a7ab3097b48a 32d55557-0028-41ac-af31-82a53d4eb7bd cdf50010-a6b7-4c1f-8177-9988128178a4 f5cbf5ac-a60b-4439-89aa-b94065f4aad5 966c5b59-5bcc-4d76-b3fa-e0e77b3817d3 86a8c13c-7ab8-4808-9c89-44f08a2746ce 8c60d3b0-6b36-4ca7-b7cc-b6e6afb936bc 4986a099-f544-41cd-91a6-5410effbabe5 008c9b5f-bb94-4531-8b92-5bcc615f287c af596402-a305-4922-aaa3-718275203199 50622786-4f79-496c-a3dd-9bd6793de44c 222af525-9e88-411c-a7f9-13bc4502104a 131874ac-24f7-41a9-b2fe-92ae016afa66 d31c16f3-e5a6-4cce-9f93-14b23f595edc 322dcae2-019c-44a6-8f1b-8d733afd5970 151dcd25-53f5-4cd7-873b-55095a44053e 039b8a8c-4ca5-49ab-9040-78bcdcdf7a9a 34e5143c-f96d-4b6a-b770-f0368faa2b20 6699ca92-45b6-46e1-8bab-72e4ba5a5f50 ad5b8bd0-efb9-4b10-9ea7-90408a524964 ba64d223-e3fc-4dc1-8bc4-701dfdddfa50 3d1237c1-51d1-42a9-863d-feb854df3b30 4230ef03-c2f7-41bf-9d68-4989eaa5d924 b0820e29-755c-4438-9247-bd1f18f5272f 8b0a93dd-5684-4a53-a7f1-f34475194a94 127108ea-9a75-47f6-b5e1-f68d0d1ce490 ab2fbb74-408c-4281-8ee2-91491b1f836c 659bae5f-1f6b-44a4-bbd4-238627cff1f7 c32bed92-ea2f-4951-ba82-e0076f33adf4 3b0ad09f-711e-4e5b-8ac8-8b777f51adb3 db74834d-38b8-46f9-9e93-f430fea49e72 015903e7-31e2-4116-9761-a2b2ed1a7e41 a4aa922f-7ec3-4fd3-8665-1266e5de1020 3c9334a6-0b53-4363-928f-89449d0fc693 835672da-e8a0-4043-9bc7-730d2a6ed678 0e71f5bb-8de5-4d8c-8237-f91d32332772 ed51e02c-a33e-4d0e-a91a-c38dc8510fba 29028dd8-a494-4304-8907-3ae795718ec4 af01b28e-2ed3-433e-b3a6-d0e5f3ea0ee4 f9f6b4f8-56d7-4f82-8694-c8d80a37ac51 78eebc5e-4b73-413f-8d87-b0b6fab251f4 0e91e147-c6b2-4367-9d68-3e13cab4e8c9 51abb22b-cecf-4e62-82a6-e56e6c1c815b fc7d7ff7-46c7-4f81-9ba3-d6c5a7b29c23 44000904-30f0-4acf-8cf3-99ba2acabc51 27ea6adf-7e91-47bb-a70b-940a60c2d8c2 f9450ae8-dbf9-48b3-a251-cc43b2c4a697 ddaf07d1-4cb7-460a-9c55-327da1670ba9 37af9daa-961d-40c9-b7e2-82e442aeea91 62d9d4f2-7b0a-40a5-995f-beda8235e481 f7cad375-adc5-46f1-bb22-62e39e4dfd7d b3ad7123-f17c-4b45-9750-0dbcf1863900 3f47e88e-c02c-48ef-8fb6-8ac3634ae453 b44475e6-5298-41c9-9b83-1f6e885d53b4 fb39ae01-a7d6-44e7-8811-189d0d3836bf 03551ea0-9fa4-44ae-8e80-3d0b7e85f14e f66ecf32-4d48-4d79-9079-d0560befb900 e63d183f-272f-4d75-ae8b-37e8ac2278e0 28ba7ca1-6b00-4626-95f8-95d2d98a4f82 cd1d9f3b-c898-4865-80bb-a7e365386bd8 a52ce34f-3f9a-41d4-935b-10765a74f03e 94b9402f-d43c-4849-9514-1e79f0d62f38 fa949445-574b-4039-89ad-0b053c4a34f2 e6d53113-754d-4a50-8115-b0f47090db65 8ee008ba-bc95-41a6-b394-452a86c3bd39 ad0f4c6b-3204-4ca1-9f93-2c4608a2d81e 86408511-93b8-4660-9032-5ed2708be837 9dfd3b6f-acdf-4e7b-aab8-a7d09d761513 94ea8065-c45b-46e3-8fa1-c2ddea4e0739 dfda3a03-fde8-4613-8644-9629c75923b0 c738cdad-ea7b-4afb-aeeb-7a8b8c644abb 41979438-3f2e-4ca6-8950-8c28240d9868 921c6cb9-cbd6-4505-8d19-50919bbbc474 95d4961c-4083-4614-886f-4e4e7757203b e4f86d82-4cdd-4d9b-b112-11f6d551d455 01c607c1-65e7-4500-ab19-9337cdbfdb86 bc6df867-8cb1-43ff-86df-a9405565aea7 08e37a37-06b6-47bd-a083-186ef60844bf 3b7f3250-b597-4838-b0c4-abdccf847eab 8c1d7509-7b4d-4034-9cf9-21a6dedf95f6 93cb678c-58c7-440a-b33f-a2a936692685 90cc1591-2185-4e50-ab96-783cba365515 292d17bd-1f78-4835-a36c-a781aa1182fa d089594b-041a-4c0c-ad5e-61caeeac9cc0 2aa2eafb-7e3f-4268-9c75-878ee97de44a 735127b7-dad7-46d8-9db3-6e06b585cf7b 0b66eb8c-327e-4f62-a993-94dbc6c3eb66 dab5bba2-faea-48a5-9ca0-8c83631c1355 e9ecb3bc-6e30-48cb-8aef-d87a80f227b2 7f53906e-5e99-4bbf-a81c-921520e5d54a 5d583f9e-aea1-4a43-b988-68ae400043b2 c04e213b-582c-455c-aeec-e8cd23055c0d c29263e7-7a29-4133-93ef-0bee3fb2732f c4c314a0-ffe4-44b3-b02f-a2cbd0ab7e50 33d45f98-3fc1-4a84-8042-a678466240c9 8138e86b-e981-48aa-a550-cc189480dc33 f1ef84fc-f8b6-474f-897b-1010a7f8fd6c e0b0b66d-60b6-44e7-a5d7-5c71815bff9a 40725a70-11a2-4fe0-ab85-5c5495db7786 a2839bd6-6bc1-42f5-9ac7-196701a9f1d3 a6b62cf0-5638-462c-aa7f-9e359c736bf9 0aacebd3-599a-4fbb-af3b-618ed30d51d3 260a7eba-6022-4b0d-9b2b-5da303dc79e7 54a7424a-36bd-4ae6-85b1-9ecaa31ee787 a3e42d7c-1ce0-4ffe-91a3-c9bdf04228b8 1fd62d65-e54e-4752-9a49-208b341a66ed b7c2fe00-ce10-4486-81b4-4d13116523ce 4bd24fdc-0f8f-468f-bedb-e699adafd8c7 5b73104b-bc3e-44f0-9a2f-2be54c4d73d9 394d216b-f69a-4211-9443-ec70ebaef34c 1a9ebfab-2ff4-4646-806a-9b079f64a51c c196dee2-1b8d-4d95-b118-78025a6a6654 fd9fdc7f-7428-4608-aba2-28b50ceb66a3 cf31db3a-ff18-4384-b167-1fb84d469bd9 11962ae8-5e5b-416e-8b2d-8c6ac69a0b28 dee76c6c-6ac2-411d-949a-2be8d6c205a8 253de520-084e-4a18-b3ac-151fbbc6f140 09bdb901-2db3-4b98-af8b-d7633168a261 9dde4dc3-a9ed-4ba6-ab38-54da44a43df3 032c59a9-7189-413a-9be4-c4268aebacf4 6ac9abd8-0fbf-4085-98a0-aa156f989bcc 325eeba9-643a-47bf-b706-96dae4b2c903 d09ef778-03a4-485e-8028-15fa02d90992 737916b9-bfe4-40b5-b6c8-3f570c42ad2e 88d6b98a-f6f1-4814-ae1e-0eb20acb7444 d376b397-0cf9-4660-bc14-e0860abcba1e c94c0f6c-cb0d-4c79-98f5-7cebf13e2889 d85baa76-1ded-453e-80fb-c7e2f8be5c78 7ecd5f5d-0947-4c60-a51d-198cee824fc4 f5cff3c7-333f-42b6-afb1-2c297edc30a4 1e3919ab-e01d-4ac1-a2f5-de3a5a0a9864 96908a02-5d34-4085-ba6a-dc6eff645245 bef738a3-aa6d-47b5-8616-88f057f59489 3a9bf90f-c9ee-48b0-a963-99923b723468 e964e846-5a20-48c8-9d61-2047baa7f9d1 e8c3557d-5e21-4e69-9b61-3d67476946cc 3507a477-e304-483a-a811-9e9598bdc56f a52f6de8-9908-4744-a0d0-058e3d0e26b5 c8f78a1c-e3ee-4e54-8949-607fd6cd780f 03852746-de38-4e6b-82c0-5e6bbe878a76 f6186f1d-efa4-4c7e-8840-41ce0107ab63 ae6efdd3-097b-40bb-b892-de9c7be086c5 b351b1de-de36-4872-a069-4ab88dc1639d 34c2163c-f39f-4e27-a604-0942becdfdce 632e8ae1-6161-4d14-a875-749993cce423 8c75fdfd-80c2-4df9-bf7b-d2360c0d66ff 579d1d34-c7cc-414b-8ae3-407e62189bb2 f1e00e01-abba-44e3-9ce7-56ceb0db4d6d 2099c4f1-4127-4aba-af5b-3c68ae4c840f bece7a87-d9cc-44d1-a8af-3739c950ae88 b7d46a16-e5be-40dc-8700-f4b8157a8d08 4aec4aef-07b5-42d8-9fde-20654ff62ddb d50a5f03-feef-4bb6-9c8d-b48988099b40 a4ae1608-188f-48f0-97af-7bc76ce15f12 cc93c089-78d5-4057-a799-86796b8955e5 e8044e1d-7aad-422b-97e7-d406edf74dc9 2335bb13-88e7-4a9e-ba68-53640d89b338 8fe73c52-b3bb-4455-839f-a0e1a3157517 36f8bf42-0773-4d47-ac50-ce453a6c5b78 a5271e5d-89e1-40ee-bb38-806ff486e121 facc62b8-eca1-4aff-8244-0ba6761c9fe8 906ec03f-6e27-4d6d-8833-f1c9f441ebad abdec7f7-90d5-4b48-90e3-34360c93a188 055fcdd7-4d10-4574-b1ff-275390da75d3 47a19ee2-2fb0-4cca-8f91-baed5d4fd033 232c8b53-b3b8-426a-9550-df48048d6c3d 50d88a62-052c-4700-92b8-e81c4e38fef2 2a188bd5-040d-4624-8d66-89b97a040d19 4ad9df22-3974-411a-8bc5-4e9df1b59041 4f273a10-e953-424a-b708-b0a2a4c4fce6 43972e2e-d4fb-46fd-bdf1-e59a996ca929 86fb1f12-6d4d-440d-9275-cd8132cbccf6 4282a1e0-1707-4964-b085-a54690da8e63 15fed24a-31d3-49ca-9680-c60aea7e0c63 034eb1ae-d562-4bdf-b71a-a0f843169499 83f46861-fa6d-403d-b108-a9987f337c00 c6a0873b-3ab9-4fe8-b9f7-65ea023c7f53 62758993-ebde-469f-b7c6-ae8ee13330e6 11b40196-1e45-43f4-a860-e6c8e33d3636 88dede7e-5ee2-40c4-ad25-801e1ff839f0 de0dbdcb-9229-4ee7-bdb3-3642a4926a62 f29e1986-4918-45eb-8f65-aa80fa88b82d efa7a07e-9292-440c-9868-dd91260c3e3c 7fa78037-c764-4c38-910f-be7c4689f1e9 d20b915b-c668-4df0-8953-c58b307d2b41 307dd20d-49f8-4f31-8342-f0ec78c023de 095f5c6e-8f47-4065-bc26-2257fa8084fa ff1184a3-6ced-4a64-9761-00e887145068 fc1e2a84-7f0a-496a-acef-d18752f23e59 19a73762-d897-42cc-8e35-a8e78bc670ed 255de7d3-4bc2-40b6-8244-92bd455bc391 ef6d59d8-c92b-4de5-8d69-9c49c42c594e cadf5d7a-20b1-4ed5-be7a-fa001bb45a6e c8751047-26c0-464c-b611-04bb7d5a4aa0 dc05ac61-5f58-47fb-a789-9806bb41f29d 4a9010b4-7b6f-461a-8e31-3bca8393c0fa 99a175f9-2d0f-457f-bb55-95e6ac1b798b db2aaf3e-9f02-49ae-a20b-7a8ff1d74e3a 6767f05f-fdd9-474b-85d5-1b7d91c30517 bbf5771b-2843-4848-84f2-83c70a7ccd44 5e3ed893-f369-47ce-a565-ce04a3477c54 3c285bf6-bf7c-4d97-bab2-6fc665173272 0070a444-78db-46ae-8f74-9d2582d2f9ec d4937d8a-c45d-472e-86b9-c3b32a3923ea f6060257-b95d-454c-b7ca-adbf383d220e 4f81bde8-a379-4f29-bc16-6f4192c57ccc 93876f66-0bd4-4138-b4d9-c908da626a30 284651a4-d070-4519-85a5-3b9cf0742711 3f46dfd4-a757-42c1-9921-3f88d014079a c04d571f-a7a8-42e1-8be2-7013e53dd8e6 5424aad3-0303-472f-abc5-84362e421f4b 974107a0-126a-4f1e-bfdb-ae53a5d40a27 0c923af8-fe00-46fc-86f9-cb648910f698 8b04dd06-fe66-4489-a7de-311d4dffbb2b 204a1c67-9c55-4a26-bda3-a41fc1351447 434c928b-5e17-4874-9fa5-32b3cfe39428 8e8b0a28-c93d-4d32-9368-ca82faa04da9 f5e2480c-223a-468c-8c68-92e1f77a6c68 4ea1e636-3506-4bd0-96d8-ad0001a43d1f 9b21ab47-e82a-48b0-b95c-bee9fe9a51f8 6dc05c8a-b780-469a-b7f5-3b62104a9ca8 fcfd88d4-4300-4c5b-a469-5a6b0bc47541 8b6c0ee6-ce17-4d6a-b32c-ad9522b1ac63 f25b6f6f-770c-47a9-9eb2-4175305ce650 0a7ef21e-44f4-41bb-b61d-63f36e661779 f2b00abf-047e-4344-8494-ba572203836e 70b33c42-c75a-46ce-a8db-b0472d348eb8 7272a689-f3aa-41a1-80c0-7546d5ac23c4 075b4d39-42e6-4a23-ad31-735810c231c4 bea0a1ad-7a54-44b4-b893-82b4e1d8cc88 12f0c110-c0fe-4347-a45e-9b58d239ca4a c85dd4b6-ed84-482f-adf3-849d3e79a062 fb8cac05-bdf6-4172-803b-6305d33530e0 f042c2f2-c8fc-46dc-9c4d-c3319a74e4e3 1a150f18-6a5f-43dc-ad73-2cbfd31f9794 a4e1b0ee-be6c-426f-8520-0965e397ae81 7814c6ca-8993-409d-85ff-46dc4fba4993 cdad0f79-b17e-40ef-86ec-c1fd1fcf8985 d2ab36cd-10e3-441b-af7e-19ade187c5e0 2b1ee7c2-6815-4f15-80ff-cbe96397aa0e dd96a341-5a88-409c-9336-cfd912d619f6 aec047cf-541e-4f6e-9065-3e8be4fe136b c421072a-336f-446b-a39b-73f51f9f5a47 28787857-5660-4f26-a7a2-2df4d31a0cce c3b34a86-11eb-42d1-be82-1e7a09d9689c dc245261-a35f-4502-92de-28d52f55f30d e8e67d78-dcc8-49ae-afd3-89411ed6d0be a289f815-cad2-4f3d-8511-ee38328b4ca2 44b97cab-f96e-419c-97a3-045a5a4246ae e8b468b1-32dc-4a46-b48a-235a5b4806f9 b1bda039-3877-4e54-a9e8-6c42f3088f31 ad917208-1139-42a1-afe1-b9372e1df0c1 32fd1d97-a3d5-4e8b-bb15-d4147890171c a3e5bb96-568e-45bb-ad36-06d90a6afbc5 9e2ea1e6-20ce-4221-9306-ed7b5a2162eb 190dd235-1720-4472-bf3e-615a2b097f20 ee3e08f1-90ae-4703-b727-ab40ba30db4f df40e57c-1829-4019-9c4a-a5c72d0c0024 34162046-25c6-4f56-b996-4af56d0c32c3 5df854cf-5954-400e-a53a-28b894c22da4 1ceb8bcb-f381-499d-a0ae-eb14aab7170b de02e7fd-9644-4e7b-b0e7-c7e9a9d6d081 f5a9ef77-e07e-4fc4-b19d-55f0c01c22c6 0e85d4c2-b1d7-41d1-8820-88c8c8b674ff f325f10a-6e51-4ad2-992d-16963e932286 4edd6b71-a19b-45e6-b2ca-e6fc33577a59 9ae87120-3e06-4b36-ab1c-faa555b9c659 c0f0576e-1fb0-4d19-9954-fcd4fc9bd197 be2766b1-0091-4848-b9cb-4eb69cb47fa5 b82b1663-11ca-4c5f-860b-19b585acdf4b 1c83c2e3-9f59-44ac-a50c-b2c3324cfa7e 9b9c9eba-749b-4fc9-8d4f-d22173ad855c cfbb2a37-470b-4b68-a3c2-7576b140e51c 61fb7300-2062-4718-9d17-599105714402 36e9c145-b62e-4645-9d45-68a294f3c3c6 f2da3fa3-44a3-4c06-a631-ec67f34cefb0 d5d6546c-0f94-440f-9e7f-54044e23903a 495964fe-25fc-45a3-add6-112d13e7da49 cdbf0ed6-cbe2-4e7e-b5dd-1fddde34cad9 4f9c18a4-b5df-40a4-970e-e51153dfee63 c0c45167-464f-4ddc-a932-ebfbacd5cce5 24232eaa-e48e-40c4-8434-ef523742a656 0c64cece-9ba4-4f8c-9312-fbaec9ed1936 864a8069-6347-4b4d-b587-6a7ef9e65f38 fe3f27c0-a07f-46d1-9356-22be6bacc41c ef603bd9-025b-4664-afbf-7318adf654c8 47647bcc-7f1a-4b28-b874-bb1bab273b0b 7346f20b-7842-46fb-bbfb-620e8b45e5d8 40edcf64-fa93-418b-ba0e-94d7257677b0 51e5f3ed-79fe-423b-a199-8da71c4f345e f21f80f7-dc23-4596-bfe4-520a39e92d65 a1d17d55-f81f-4418-8238-1fb7daea9e4d 2602ff7c-623c-41b6-9b98-57aeeffdad05 0641a6ed-ca19-48bb-9852-b587335940a7 69dd3faf-9481-4e00-8218-76271f001568 6b8f726a-3ae5-4fc5-b3b3-a10e551075bf 437c5933-8773-4c02-b91e-883f345a68a2 3a208644-ef1c-4167-871a-4f0eb0293fcb 29b77034-1392-4287-88b0-ed4430ea13e9 523802d3-3e0c-48c5-9123-c2baf081841b 17b72ead-b992-4b40-b776-df96a21e7355 8aa33b9a-bc31-4bad-bb97-3f215898de4d 8b1dd511-e051-4acb-ab31-e80f73d2c7cc a2583e34-aac5-4923-b8d4-4968216de1f6 81a62c86-71c6-4343-ad6b-d701bd56b82c 1578e893-f01d-464f-a45b-02cef66ba8bb e21f5a1b-cb24-458b-9ca6-df9d134cc826 0591da0c-534d-42e1-9b88-135d1bb31881 d01e5d4b-7215-4767-acdd-24c51b81dc9c 3b2eefe2-8a8c-4cb8-b0f4-4c5c47ec24d7 cbc5ebed-50d3-45d2-8a13-5a851fa562f6 489d5aa6-b8b9-402b-b16c-e34846632eb5 ad231895-18b4-4d6d-b83d-700d0bf539ef 6d04d539-1ece-4eee-8a85-cd3f8bdc2981 5778513a-e760-486c-a906-71a2607fb94c 0fe54cdd-3f8a-42fb-9a08-c504c6de1196 b3a3b904-f478-4ab6-bf34-af1e476fd856 68c19f83-08e5-497d-a44a-e5e0161812c7 c8d6888b-cf1e-4d23-8305-a6a734de338c 75d1a4c7-cee4-46ab-9b84-e0eda7297676 c5c1d381-67b1-454b-a3c7-d4c32ef097ec 203a2871-030b-44f5-9789-b3ed105b7b0a c8e07fd6-5607-4315-9929-f95ea1906bee c193373a-0f27-425e-b5b0-6f263c2f3cd8 88b06a99-f858-4b9f-a183-2abb04f48aed 87f13377-a4b2-4a62-b0b4-5786eaf9d828 c9dc4854-50d5-481b-b6b1-aadabcc26d20 cc4f490e-e204-41a0-8254-5552545863e6 496ce849-82ed-4f67-adaa-bfaceebc70b1 72357b5d-8821-4109-9565-15a55a4f1076 569273a8-b502-4da7-902d-d8cf7abefddd 9cfece60-93c8-4371-901a-4d95c9c8fda0 47f70fcb-755f-4b4c-93d7-3b99217975d8 dabea63f-f81c-41f9-8ee1-fde62a68edc4 207ea40b-7cbf-4b9c-97f6-cc4f0d71f939 34ddb848-3382-4d1d-b6e9-eb404f8c118d 3ce02521-070a-45ee-9c96-c4475e5970c2 cd490d0c-c1b1-4ab8-bf3b-8a3f3db2a876 85d1e025-7974-4362-a3bb-169bae01e71f d5172a95-0a6d-4271-8b0d-b2333bd57d26 3acf4a08-0baa-46b5-8b04-f880f0fe4010 5cbbabcb-3421-4006-9cd6-ba6557cc52cf f23f8315-8884-40b7-97d5-73f1ff2fb8e1 698eae99-9d07-4b85-855d-07fa2ef539ba f02d6dea-0eeb-410d-a97c-1b2086aa7e78 a343d6e1-9597-4b8d-ac69-4ba65262ee4d 9e28a727-f0b0-452b-b8dc-4bca81444d52 21fc487a-0f9b-4991-ae89-e3e457b2494c 3b517ed4-d101-473c-a7ab-3422a0b3e466 cad331ea-eb75-43e2-b580-79ecd0fdc44b 9441df40-85ef-4288-92ab-ccd8e61da78e d6a73d22-5bf3-4f18-8baa-0b2ef5e89ab4 10385a35-09d0-4121-85a8-568ba1fcfcc5 c74e19ef-8daf-4497-bc8d-e6dd9fc2cae6 ba794c52-b8c1-4737-9463-5d03abf52ea6 cb6e9d04-4a19-46e9-8fcc-45dc7a1b7071 91334b8b-6a0d-4064-901d-32d81714ed9e b18d39ca-a7ec-4a71-b4c2-4892e90ef6af 22b6428f-99ce-4d3d-92d3-8e8d104eaa4b 48f08698-6d0d-46ee-a224-6a9764ff7ff6 09349274-261e-497b-97b1-e1b469cce344 2ed95e12-cb16-4d10-93f1-264e0257ca64 90d74408-3fd3-4d51-9f2e-95e5c1636483 89eb4e6d-956c-4f15-87c8-aa59f202e360 4eb8cf35-a38a-4221-a906-9e220d9514d2 0ca17aa6-e114-43e9-883c-45f64bbc1c01 19e70555-cf92-4dfe-875f-33c31485ba46 0ec0e426-125d-413c-89fe-61f0270966bf 5e3e4f4b-5c3f-41d3-a5c6-b19a4fbc5352 d1a16372-82ef-49c8-a611-351d435e8c94 4bbe9e67-14a4-4d41-bfdd-856d9131c661 1c8efeed-e372-44dd-9b46-6a0f3959652d 967c53df-b4ce-47a0-9f2a-5f0ed2671620 6b827d1c-06a4-4a86-8edf-5452a61070f5 da669391-5367-4bb0-9a3c-3687bfe24734 b4bbda20-1b43-45e5-afb2-c217eb8642d5 7133d870-3ed5-40be-967d-c0748e880486 c763b64e-d79b-4210-a43d-9e31e7346743 45743f74-9e51-418d-9e8d-7c171092f5db 9a9902b5-2591-4201-877f-48a452cce067 11abeb35-9ab5-4e0b-ba37-26f550f865b8 cde87e26-b4d4-4e39-a1ee-5bef9dda3331 e1d37a5d-4a75-4622-b681-2c5e6f861bf2 179b5f2e-b505-4997-a615-7e85bec14664 b19c1fa1-aa12-41d6-8ee8-e9c6857649cf 36b33052-e577-4ba4-bc98-945e5ab4ebe6 fe571b1c-bd08-41a4-8983-0899e30c0df4 ccec490f-289f-48f0-accd-1b4ecdadce83 6bd19874-3316-4cba-b27a-a51eb5ae8358 f5001cad-12e5-4a30-a05f-25b07ba16c07 e5a3d3a1-e430-4d8a-8fdb-71b22aa761dd 7e9a616d-32eb-4f54-acbc-292edc6cbedf ca37dcd8-3db7-48f3-a788-5b75fdd35a85 d57ea1a9-8fca-43c8-9c29-19e4fd7f9761 88c1c95f-b5f3-481d-9bd7-072c3751dd00 41e7074c-8f40-4e4b-8fb9-35535b212611 73363cef-ad00-4a23-894e-1ab8992166a3 b1832415-8e58-4f07-a7a4-9313240cf21e 893c3a20-0480-47e0-8c2e-be45a5b10522 fd8bcfd0-e3a3-47ec-8339-187fcbca8349 1272178b-bc72-4222-8539-60aa547b8ba1 6ec648f1-4ab8-4e41-8596-d7622f594402 9407cd04-a0bf-4814-a9eb-0846beb2fecb 2a335498-402d-4285-84e4-d8a14cb70f0d f1f46e3a-5ef5-4c90-8ee6-ae35e690b06f c5975149-77a7-434c-95f4-9baeb119dbe8 103cae20-cfd5-4c2c-a527-9d0e3e81d56a 98641d2e-3a4f-4a25-a9e8-2db7305141a5 e775308c-55e2-4023-b6e2-e6ad1bcea251 bae9c864-1b54-4a36-a47c-3a4818bfae72 bd068396-e16a-40b4-b274-3cd3930753c2 c0e9931a-8ffd-458f-a997-26736a6ff288 6fbad6fd-34e6-446f-b200-6015b3eaddd4 520b2c78-ed02-4a05-b1b3-8d2eb1087275 384c7f74-d391-44a7-845a-955491a7a29c 3ff04e1b-b072-4d70-acfe-46e25ca6f140 3ab2a4ca-7853-46dd-bc6c-c022ed5dcd95 f5bf0d19-0ba4-4029-8eeb-c5c0a760a517 e09d3cd3-3e86-4652-85b8-6f342ac73606 8d6d9904-4dc5-4cfb-891c-2cd050115b6a 614969ae-4865-4bc4-823a-6911a27a9851 ad6e2cb3-0243-410a-80f6-6b754bf92364 69a6dab1-6d60-4533-b4ab-0bea8c3fdc73 15c71aaa-3a63-437e-a2b8-6c1d7cbacc24 b036ff2d-0020-493b-b283-7639a0dc4db8 a5fc8845-70c2-4667-ad8f-eb35406fca83 f371a38f-e66f-43ed-bd67-9f453814b5ac c73a1543-9ed9-4a0d-b0f3-412238d7798c 514b7778-8619-4bb9-be6a-e7d87827418a 332e4506-4e33-4193-830c-5373f7e0345a b86cf248-bae2-458b-abcd-5acf93a0798d 589086a4-42aa-4f09-8c1c-c4683ff9395c 7da6f897-acbc-4df0-b507-f9480e3c06ac db89a23e-805b-4b98-b517-3951cbc3fd0f 31a870c5-c445-4d44-be74-9a2de51632a3 b2a5ee0f-d9ee-4c6d-b1ed-579afbfc1d15 9985adca-8afc-4071-878b-50000402b50f 55d7d6f8-a135-4823-a8ff-5b34d4b296e5 e48a43e8-64b5-4ffb-8846-554b8338b090 db25eb81-819e-472b-894b-205cf09eefa4 8817cd98-d616-406e-9e39-738401ac982c 0fcb0e9f-b14e-4549-beb8-49d4c3e4e3be 3374f4c6-0d3d-42ea-8211-f7ce434f8b4a b4414f11-d87f-48b2-bb61-5e59e64d5ca9 0020ab30-9e7d-428b-a04e-dba30afa496a 872f4ea2-cdfd-4c8d-beb5-b1e1e05c1529 15fd34fe-b21d-4b88-801a-39ebd2f72383 bcd0d546-4ed0-4f2c-a920-7b376911a7c8 2f41c9ad-be51-4dc8-8955-be181ee2e18d c6f00f7a-7e9e-4156-aa01-7026ba80a23f 5383d437-54d2-40ac-9acb-f3fee05fc9c6 698858c0-91c4-4613-a2b3-39a0f36e3b8c 20a1a9c7-7ef5-4076-b811-2d355ae4ef55 94b084e5-5df7-431e-9913-0dab00c5d450 ca5b5cd6-cddf-49e9-8870-e002a2654ed9 1dddd29f-91a1-4823-a84e-a08268571052 25077b3a-758b-4962-b0e5-de6aa5cddc34 ed13f283-7385-4d43-af97-9f8b686c74a2 75e6ba47-64c2-4761-b7c5-4de0bb89a6ec 7d5fd464-1fc5-4f28-8eb3-339eb7df63c6 2d50992d-db11-4556-80a7-57a9bb2674b0 ca7e0323-df16-4af0-bd21-547dafb51b32 3fafbc13-cbfb-4ae6-92d0-80964f2242e1 5d069441-e4ce-4c35-aa80-6a613b924572 8f184b32-4cb9-41a7-9aec-a91614f5abee 2ba2ffd3-86c2-4662-bbef-9ef3c0f9acb3 c48b91b9-106e-496a-80d4-c8b9a2621a6a c520af87-97c6-4894-b3d0-c4332e43c294 be1edb9d-b115-46b8-8ebd-f8bf44cf253e 5e9b3753-68ce-4ccf-9bee-056276e8cfd1 4d33f90d-3399-475c-b83d-0982420da0f9 698594b7-3c39-4ab0-96b1-eb79d90c5762 176f5165-84b5-4b19-be5f-2cc9fd25d727 8784ebfe-e07c-44cf-95f4-2bf48dd2326b f253b306-aa0f-4950-b8e2-3e13894a3d38 509b83e0-d6de-40ff-9aff-4b4eb1ca4f9b 1d17dc1f-f4a4-4ec2-9b99-08d2793a3848 61a5be28-f4e2-4257-b053-a50e42d15b91 2bb61686-709f-4067-a668-ecd6b5445b95 7aa774c6-30c2-4e5c-af80-2b432747773d f853780e-3ac5-4a46-b7be-7ff36348941b 063f39d6-7cf7-4eff-8bca-6b8259ddfa7c dbf21e9c-e36f-485c-920b-57f3b86ac765 e66efc55-d1b8-4175-adb7-44d2fdc1c050 cf4c8eaa-1471-4bdd-bd5b-09ea2dace8b4 766d171b-d3de-42ab-ab47-84a2d781181e b6d2df95-e700-4d49-b181-9bb1a94961ef 4ea958ac-63c0-4cf1-95c2-1441a178d491 32929b83-dc4e-4f45-a8f1-a4d628e81c78 a6c890a7-4f3e-48b0-9363-4115dce07a49 63a936a0-cf96-4453-b2c0-172b1e249125 fa8a2d81-6fd4-422f-a1a4-9751c758534f 2852d6fe-36b4-40b8-b435-c0a437c242f1 e751093d-b7f5-4499-b760-25287b8b66b7 f3e38f57-b24f-4cf3-8f27-376c999c601a 60a11293-6b2f-4f8a-b473-2c6af273f97f 7fe402e5-3bf0-4df9-b57b-199c55257ca9 de213efa-1dbb-4be1-8d8f-cd5d9115c28c 82f05c51-b9c2-4562-9a61-1efb72c3ae7a 54605c8c-df57-4321-81c5-0798cbd988d5 777dd8a1-0041-4ad2-898c-a80dd500c648 e2cfd3c6-da82-474b-8adf-0bf3a5330e33 55d1ee9b-3e8b-4808-a355-2849fa86e4ea d7f346d6-93eb-44d4-9e2b-3720afb4996f bbde20ae-2778-4aba-ba96-39dd8d795cfb 95839842-eff5-4259-9b89-414c6c0ed1b7 64d23f92-21d7-43be-a02d-90364b09141f 8aff8dad-0ab0-4c5b-8e2c-b09e7b84a391 21adb7a5-62c9-4ec8-bff8-b22be14e60d9 02d0fd38-291c-41a2-960b-3c33d1eb1c59 83110434-d10e-4750-a2e0-8b039528d7a4 bf9b5787-6160-4df4-9dd5-28dd99bb8219 d08fafc3-5142-4a56-8d17-595bed49b79d 37371400-b1a0-4a48-90c2-1f386c86cc57 920e96a6-f25e-4cbe-86db-566d82c232ba e3c3e176-6df9-421c-9b93-c9f3857c853d 5c7e74a3-08cc-4b82-b2ab-3e82fc44ec79 83bf078a-4595-4af6-88d8-a4f12cfe7931 5fb1a944-6205-4d17-a11b-2c2bc8fa93b2 b4ee4d01-432a-4af5-8e3b-51e0959e4d14 f24dc82b-88f2-4e06-bfce-e37fca1266ca 84b193ae-5b54-4f85-89ec-a9ea3797c35e c2754249-07b8-485e-854f-4431692b73fd 51aad7b8-3a8c-4307-8e79-898f45d673fa 94f18bab-5a93-45ca-b942-1600a526eda1 5469afc7-fa42-432b-9b79-c3fc7b96713d bbb99ee9-dd52-4c7a-992f-90c1ea6eac3c e9548ffc-aca0-43c2-b001-93e020089460 3c4e2b47-f2fd-40a0-9ec1-72b1f8903099 78ee45fd-8870-40b5-b570-6f232abd14af a8ac559e-33f1-4e72-9788-112489df2ea1 623ef037-7be4-4c0a-b609-3038f9e821ca 986b785f-3ace-40da-8097-70f00e906768 ffd03dae-7c8c-475b-83fa-234d4bae78d6 00d21c79-d150-46bb-8d63-3019fe7200ee 98d3e472-5a3d-4067-8225-f49e4910fce1 6ebd685a-3b08-43c3-8627-ae887bf58dcc 64a328f5-6f01-49f4-a4d1-9ca85be3f1d7 4f97a289-511a-46c6-ad27-f7667612e91a 7976e2a8-fdba-4360-83f5-1b9455bdd57a 5a53a4b3-8a13-46bd-b9c8-8f66d77c066e 4592b89f-ae68-4e72-a6d9-01c1820befc1 b301b0ca-a000-4191-9cb3-ff0f76765d78 35c55110-cf7d-418d-b449-ab4174ad6770 318e9b06-08ad-4f7e-a7e1-ad6cf0171dc8 e61db8e2-d145-4d9d-9a6c-64c876911731 fd040f77-b2da-473e-8e09-3e9b5b917068 403513ea-994d-4c4c-b098-7f429578947c 85a1ab36-8073-4d89-9b35-aebee086e4bd a4e21849-7981-4b27-af65-1753d064e097 3a849eac-dcce-4337-9931-63404861f1f6 50d8110d-87d6-48e2-ae56-c8acf7f1e27f 77611c0c-9eb7-4e5c-8dbb-3946f533fb09 d0a2f93e-3bfd-4550-a704-889c0d1e6f8e 20ff7598-f0ad-49fb-ba5f-9e0c5b54312a 76423c0a-a982-400c-a836-21dc2b4467a5 c56a7b68-b405-4975-b37d-f52e837c8430 8e024878-284b-48b4-93cb-3f3663b3c97f 8fe511a5-4003-4038-86c2-7713514a96ef 7b583d28-3978-4ac8-9d67-cbf3b3dd135e 2decdef3-d3fa-4661-a516-6fe8e06c3567 6fe7b0dd-c5ab-4581-bef2-453df458f687 2fdf7cdb-efe9-430a-ac5f-0265956b7325 9efd926d-98c3-46da-9485-08d96c01808b a6abca61-0fc6-4b91-a742-e967cba9a9fe 0cb85617-f43d-40e6-aea5-04a2aec26b90 684d4c1f-0a55-4958-a8f9-6ed17030d4f9 f1652884-9cdd-4beb-bbd3-5712a067864e 3bee50f9-0df7-45a5-a924-72db815d5b69 25678ce3-b1cb-4052-9756-1708a74938fa a5328e03-2d88-4990-ba12-96b933d3e9c9 ca29d60e-3c8f-4619-9320-c4adef04d89e a98bc0fd-1565-4eaf-8fbf-bd6070a4870e b010d6a7-87e7-4e8d-80f6-f5d22463a550 c458a540-7de9-44db-b125-9cccdd8026e3 9a408bab-147f-49f1-85a9-59018db5cd22 8d72e325-a02f-4969-b413-4fd597aec66c 5e498541-bdae-4103-8d99-d730b3998abb a23cc2d8-9825-4d11-a01e-1afb571b38ed 83ad35b6-fba5-4c51-a15e-b808114ebb1a 8f1922eb-3124-41e0-b1e8-450fed6b8564 40de17f4-624a-463b-816c-6bd3300367d9 9aa32b5d-107b-4060-ba3d-df6dfec0a95b a68d6e37-66d2-4af4-9b55-aa4155af4a90 326b7084-7c31-41ea-9500-1f979a8a3dd9 bf5f1f16-3630-4e0c-9b7e-127f3e27e6b8 6cc3d44c-d5a8-46cb-996c-902441c0212e 78b62f23-46fa-409c-9aba-df2dfdbefc4a 42b38ca0-f6d2-45b1-aedd-fe13a873323b 7c83fa5d-7148-404e-b379-8b6499262b90 389e4361-8805-47f1-99cb-ddde6fe84288 5f55ff17-689b-49cf-8f9c-e9a728378944 d71837a1-d4f8-45fb-a02d-33f2e6bdd413 4960b53a-62aa-4b3f-b05b-c8a9fcabf18b 3df40c2d-f271-46de-88a9-9e6895e3c168 ee492e34-c392-46bb-8c21-41e91aabdf53 164b2143-d26c-41be-bb96-617bb42007db 57a1a734-ad23-4376-bc4c-86d53875a7b7 f0ecdefb-4691-44f9-b120-2dfafbf33f0d f0050c9a-fd7d-4fed-91df-7e864f30af81 3eee6664-715a-495f-b7c5-8b73bf1593b7 c0908309-5d70-4187-80b0-9c26adb46d94 91151903-69ca-4e9d-adbe-20b397d3223d aa83b0e9-ac2e-4c14-9823-fa3824793a69 b7b481e7-c324-4ac1-97f7-9c60adb53dcd 0f546015-fe5c-48d3-8a29-bc5ee2e60134 fc8212f2-c2ba-45b8-ae92-b2faf7184001 1b65c4b9-782e-4d3a-87ae-f0f2ff3b1ed6 1c14e260-5090-44a3-8b11-9c24d6c6bc6c 83aec762-836d-4ab7-be05-5f250aaf2476 758b7a50-0ce1-481d-b706-6c00675f9692 2155bcba-e6a9-409e-88d0-6d7244afa8b5 c8954336-0ec3-481e-9ab6-b4fd51028a46 ba9a7069-75db-450c-aec6-00c94ac22e1d cb045c41-4320-4803-b6a7-303ccb0b85eb 785b978c-0d7e-4f9d-bf38-0b310d80f54b c0e9f47c-7e89-4b8f-a6e3-03d6b62b5fb8 5fef7a3a-069b-471c-b685-3f5aebccb4f5 26c46c3d-a184-466c-b237-951db1e24af5 54ec2043-af4b-456e-b89c-81f214ce5f7c 54856cec-f9cd-40d8-8882-225788e59d39 79dc1f4d-c655-45b6-9928-fc9954ee0d00 61696ea7-d13b-4b68-95dc-5abfc4d51dd5 8fc53ae4-50b5-4dbf-8e60-4723cfd7bca1 d217eb7a-5c9d-4db2-b820-3761cc67ba01 da554607-bf45-441b-9fb8-d90b16cd4293 63d170ed-1543-4015-8bb2-3706e655bc48 48707293-a66b-49e2-bf8f-2c095525ea2a aa8e51c0-b66a-4545-9827-1102104397dc 9774c4fd-5104-4ca1-8a92-a597aa8c933d 50bc3c35-df59-4d2f-995f-3c64cd39083e 1c18e37a-938a-4db2-bc49-878e27858650 44d0be1c-8fc7-48bd-b6d7-9cda65b2b923 54595a90-5313-4a2e-b2ec-238e01e074e3 f83f8fa2-d8c2-4dbb-ac2d-087af0dd1b97 bb722569-b95e-455f-a4a7-18382d0bb881 ee87b4ac-1bfa-490c-9274-efa56e5f783e 31fafd63-829d-43a8-a1e7-2b02bca49b65 5612aa38-7850-4146-8995-25939544ba30 94fa3cac-8363-425a-9cd7-e29a69f8cd78 ec4770f0-0c78-414f-8c09-0e2cb3708ee1 df53e987-c2c3-47d9-b004-92fae9108729 f12c156f-da3c-485c-a953-8c2c283eb4c8 f51ad964-6fe4-4979-a6a9-3cbbf17e9588 504bb38e-af40-437d-a8e2-b3a92cbdacf8 77a8e620-05a8-4289-9273-40fd78bd409a de47903b-b8fb-4845-8c14-59505b09de3d afbe2846-3059-4417-959f-aa077aa68b88 a8fc734b-2078-48b4-bfad-9479e94cfef8 2bdfc642-4cd8-4ba8-8c44-deed8d76ddf8 beab41ab-5b69-4ff5-baac-790c8adcb283 4cc45d68-d97a-4433-a72b-636c7ac08d1d 6f9bfee5-4317-4d89-8cb8-472b16d19d09 89d83f77-1185-42fd-889c-61d74e598e2e 07959e90-8835-48a5-90a5-a8a17c6908f8 0bf5c5f5-f1e8-421d-bc10-296a65e6fa8c 39e66d13-e6de-4f26-8d12-2131d65be5b4 36f03fe0-6668-43bf-be9c-2e12ac85ae39 c71254de-4975-4c67-9c3b-ced8012cfcc7 2f94e560-1541-425f-affb-1b652decfe3b 4f5a4916-d8ad-46b3-a92b-a0f519885653 16a376a2-68f1-4542-8928-f071e3a55f28 3bff6838-fd00-4a24-9b8e-b562bc57dfdf 5d05d794-6872-4fe7-8c43-a0f1c50e6cb8 7253bff0-f0cd-49ef-a3ac-48280fcd4772 80f303b3-2d64-4815-8b42-38cfc96c2f4a 928f3c43-f5b8-43ad-9a09-875b80770c7b 18f7ebda-71b4-47b1-b6ab-0e702052aa82 61b4faba-a254-4da9-833b-710af131e899 d5032bd9-43dc-4d9e-89b3-01304fb6d95b 28e7f36c-a4c4-4de6-95a2-fca91025a400 68a59a27-65af-4493-913a-e7ef71761012 774924a0-c579-48b2-96af-c3e82c518898 39943e71-40a2-45ee-9211-de5241b3ef20 87565e35-c61c-43d6-a4d0-35d9f817d834 ab4ba1bc-a07a-4dac-a89b-0e41a5838507 311605a8-0833-4389-afed-d18dd3ee5a26 cb0cda40-26cc-4d90-a58a-0efb4ac4fc95 8ebf4036-6d53-487c-86eb-eca7205cef86 4e0845cf-efbf-4acd-b5ea-c917e7b6baf3 f88bb212-cb84-4ae6-9820-34b4617726ef f2547007-d734-4cdd-b6b9-803994d6b549 7f63fbf2-2c72-4f23-a282-89d1659cca91 50a11878-238f-4988-8184-b8d665f11095 6dab4dff-9af9-4f32-9413-415641fc5d91 f92d8d23-7b12-4cb1-91fc-0a5077cb4736 c2475947-aeb2-460c-877b-591bbca76590 1da70da8-b257-4915-b361-d045b7aed321 37256240-44bb-4e19-a70c-4f34f1bb8bd0 9bce1fbd-dd10-48cc-b144-f3a945fde927 4728798b-2269-4e3b-b55b-156447a4802c e8aadb11-8e68-4e59-821a-dff829236294 5ea71f69-363b-496b-83f6-dd40c8a4ce99 fb633fd5-44cc-4130-8c48-c3758b203ee5 2193d88c-6946-4bcf-8123-5d9131038fea 918b8463-6b32-49de-9723-50012e60453e 62207277-55a2-4065-9fde-cff223bb842c 2da770c2-839c-4910-9ed0-a6d67766fa3f 92ee6efe-61d0-4d64-95c8-b2ce61694c87 5e4cb4cf-c718-4bb8-849e-15d5926a18d9 1f010bfb-0ec7-4bcb-9147-55c00e854fa5 b4792600-b8a6-4272-b374-7bac8450cab7 5eb767d2-70d2-44ba-84dc-7622a18411d4 8fdbc0f2-418c-4d23-9abf-7c965bbb1671 cf8e3b80-a721-4761-b9cc-02e3b2e2ca96 903f8e2e-40de-4715-af53-ea693929ba25 8a2bc93a-9779-4e3b-8cca-8f375d7fba46 999b9727-1f3d-4de7-9b3e-fbd1ebb83f7f cca33673-3e1f-4e45-92aa-1b3d5aadfe38 51ee879c-f406-4c1b-9efe-119c31f7ff55 0236dd9d-164f-4834-ab77-dbc49071df2b f00e6724-2562-4d5d-91a8-37cb5c858d62 81a78b2f-5ce5-4199-b8f8-5bfccaece9d3 31030c8c-6397-44e0-b630-8da7286519f3 c34442b3-ec45-45a8-b3a1-d76a07f708cb 229ce7be-b772-432a-b57d-9447f519a23b cb6bfcab-dc19-425c-a315-203cffa6076f 21201ac9-5b33-49c5-a304-3833b35700df 576363d4-6d50-4e07-942b-857d1ed32fd1 26830ea0-d667-4f8f-b7d1-a449937177bc 779bf365-8f49-4347-8b55-09c4b78c38c2 3bd24b09-b073-4551-aaad-9850ba5c1f89 c7ae5c3f-630c-4de8-85c3-db4d3cbdc736 5ee1e8c1-59c2-4fbd-bb52-060508e14eff fd7c7cc8-f3f2-43bc-90c1-49c81deacb0f 3762ad66-4fe8-44b5-bf56-1777c0b2865b 2884bfad-3d35-4441-a649-f44689ceefe2 5d5b5ffa-83a2-4c3d-a273-699320e19d9f 29a8b5ca-4a38-4915-9b6f-c2ab951dfa73 74e04ce6-f6ce-4ec6-a0dc-5b7dfc6fa05a 2dd38d86-1eb0-471e-80de-53a96f875de7 34d431ba-29e3-4f27-a5e8-f9cc55b2f447 c4825f5e-45a6-4de1-8a28-59601f7b30d2 0ac8aa51-21e2-43a0-8a14-0b0a286c2e31 417afcf7-465e-45cd-94b1-e7030cdaf048 74e3f025-7cb3-4717-a645-c1be2bb1b610 b9d174ae-2ed6-4395-bef4-139adf1be71d bc8e0a9b-7311-4edc-94dc-e2758e78f76a 1570cbe7-de35-41c1-818e-ea98653149f7 5db10633-15ad-4961-b999-14def5d5ec3e 73778ec4-bc69-4df3-88c7-a0912f0ebcca 739a3abf-630b-4855-89c9-eb13c342a7dd d6d1eaef-ac9a-44fd-a4cd-ca03aa1a7147 c60116bc-0789-4b04-b35d-4c44970ab5f0 ab889693-0e48-46d8-8d48-100230b8fa0c 5af4a2c0-804b-42b9-9bae-22aac91bee7c 0e2a08af-81e9-47e7-a311-5a66c600e15d 7779ba9b-ef69-45c2-a6a7-0861256330f8 c134068c-926a-4e9e-a5fb-1fea39fa9479 20c28b1a-f759-4d9a-b95a-8500e7a7e6f3 9ccc33ee-8cbc-440d-938c-5bcbd3bc9049 f50165dc-dffa-4501-b272-c1e368ca02ce 4e3e8c14-a167-4ef8-88fa-695c36e61468 0e2e090f-ea30-495d-91ab-6ab6d9fd85d5 80652ef3-c541-41f3-9442-1c3524aa5cc3 8e1d213b-f620-4897-afea-b359a168cfb1 55947cb6-5c35-44f7-a8d8-fba2134d1810 cbd65127-2e0c-46f2-aa4c-515d758497e5 da91d565-14c5-4ed7-a48e-a6bcc42cabf3 66d35b21-e9de-4595-ab43-35e54a67a0a3 6f20cb60-ae37-41fe-bb91-452c86dbcb5e b3e12937-ce4e-42c2-9fe2-6df1292fa91b 23f85cb8-4b47-4da6-8f41-38305874a3f9 7e7d50ab-39f4-40da-9b28-97be0837339f fb9721da-498a-4df2-9bb1-01707d0b4bc4 a6509f61-1739-4bce-800d-9211c8a1ba36 0166c656-efe5-4be3-9004-6194eb822e0e a9d18ab5-5d53-48df-825a-3946f16043f7 748d809e-6cb6-4610-9249-c1026f768a09 b787dfaa-8c36-4e61-9024-fbad856af65a ab40fed3-29ed-410c-9f16-f97872fc8f44 5b4a6103-16da-44b7-9ba6-31823b4f7c8f 5dee6b7d-8d25-4d81-a873-64636243c7a3 99ab7c27-286f-4616-9016-0f4069277b2e 91322279-c179-4bf7-b054-6e3edfa6a723 176b5f46-7031-4826-ab09-00b0fb4750ba b2f487b5-8108-4665-904e-059616a3d4b4 1e113818-b9f0-4e7c-9836-d77423ae5be1 9cf8601e-8a11-4d6a-a894-b11f93b0e577 4bc4037b-5727-4b0f-9b30-cb192a6063e3 c6e3565f-638b-4f5b-bdef-dec0a0a49aec 8ef8624d-feed-47c6-9cdd-f09dc52722b9 06806408-aca3-4b78-9bf8-59b3518b37a5 ee481132-03bc-4f0d-bd92-30453a85ddf9 29ededaf-41cc-44d1-bc16-c964d5cf6b0c 6d5e7af0-4002-404f-9163-4a4b3f7bd334 a95bd5ca-8111-464e-be7a-807afcfe4a52 7495bb1c-7fff-4478-8d46-dc80ffa961f2 2a379e12-8cd3-49e7-83e4-0a5f12654005 59772b78-43a0-4a01-8000-b7a466e89236 8a989f6b-55dd-465b-9c37-70eee7ee72c8 be626eb7-74dc-415f-a826-42bb4cbb50e6 4dfef57a-0e98-464e-914d-b929f86e8cee e7670e29-6a80-4502-ba4e-29a8489a411e c6a66659-f01d-4225-9ec8-102c330a19b1 4d3b360f-3030-4196-b942-e47a2b1d6937 f1d4f7c7-fed2-458c-ba12-52c8cbf40ef0 42a83ca6-0e2b-4f84-b804-fc182dcdcb29 3154c7d8-d119-4ded-aea3-d92ba0ba0597 8bde022e-906b-40ea-b322-24cbf42cdccc 26e0e87d-e6d3-4807-8081-63cc0ac6920b bb4a8ad1-487c-4d9a-bee4-9a03874e19da 2bed40f2-7e0d-4f7f-a3c7-1f1ea09b9a89 c154c2b6-acda-4d15-a9ec-3b5ce7f91764 41200460-7d05-4894-9ebb-afa5f259b20c c2434bb3-6c21-457e-8487-7f9eebbf18cf b6bae5ff-4332-4cea-8b21-2ec4098de367 d568d202-fe8f-4cb4-8708-9983b1af2c0b 55593c6d-3b81-4036-aec2-e323a4fa0056 1cb54610-bba5-42f4-8276-75f94df7b93d 4911c2c0-56e5-40a9-b994-d33b5114c0ec 71375c98-e475-4e29-85f2-456beb348783 a94e63d3-6292-49ad-92f1-9758ef8b38c2 ea16cec1-f8ee-4f19-95dd-5a9f9ca72c52 1247e369-4793-4f2b-9fa8-df1a55f541bf 0ece635a-07e4-4335-9ce3-f78068bb40a5 891b9c96-7f39-4750-8d94-252a3067e590 fa4f54f3-8036-4b96-a319-9f98802e8567 2b3ae782-2013-4a08-b72f-b5bd71bc8523 032b87c9-a612-4e6a-90d7-1216f6948e82 6462cb46-9c77-452a-b94d-20ddb27bbdf8 1975d52f-b374-451e-b4c8-8d2d78907009 0478ca7f-6929-4a2d-81de-0bf08f7525ca 103982c2-a262-4384-ac17-c4e63feeec91 8e066c3f-4a1c-413c-bda5-5b09228b8267 038bc403-5a26-4a17-b317-f3eff8e7b6a5 ab25ef3e-af69-4659-a71b-43ea777d6bba b437862d-480a-4d1a-9b26-fbb020770210 6f42b660-1f71-45d9-b9f3-7795495ef1a6 2ca2fa66-7631-4e80-b1e2-fbae4ecad94e 4fec1e1c-81fc-4049-abed-b9dad2b5c434 70c9c498-13af-4264-972e-070f0a231b4f 0bbd0297-fb4f-44a7-a72e-f269a2ce7a5e cd20bc1c-9615-4771-b494-09133922a4aa 06a618c2-c59e-49af-8b53-743217e2fbee 9af1c25b-2027-46a6-b695-9b1f883802f9 a8b4ab01-2b01-439c-84fc-e364d61c12b5 ef0dc3bb-5a56-4a16-b4e8-6b93e348ac5b 30d61d6e-bafd-45f7-8f7f-1ba02132e86a 4b3b5a7f-fe76-4c25-beaf-aa537f290b00 063473eb-f9f4-4f69-bd63-195c429ee1ad e3c3ff07-2a7a-43c6-ad75-b21954f89466 f3b13d3f-f838-4c77-97a0-1acce20f0c4e 79130f08-9535-4298-a1c7-822423e91ffc 60d5bc7f-c59d-4202-a1bc-0dd73ee4706b 07e0c15e-c7a9-47a6-aa62-88c174cd19f3 a65dfc6a-8004-42be-bf9c-b1a8bc4ed2e3 84809261-fb04-4e1e-91a0-01ccd94604e1 ed85a6db-0e5c-47cc-acb6-d205d7ce8e90 b89c0cf1-02f2-4347-be66-a1b27a75da45 102deba3-82b5-4bc1-8697-c738a8912a8d 4f8edee1-1f97-4be3-a2b8-6cc3afce6383 e222d369-437a-4e09-8196-c4c846e13833 c549cbbb-4c24-4919-b141-3a6f9ffb0bad 621c1a7c-31ef-41fe-9760-38b89bcec19b ee156abd-7603-44cc-8d63-ab325624f0ea b388545e-aa2a-4585-99db-cea4ad8f5f5a d89741e8-20ad-4a6a-a300-d0898f156dc1 bfab7191-c84f-4d2a-bd88-53365efa82ed 72ae8d1a-61fb-43b9-9ef0-9a27644be24b 58aaa5d9-f956-4036-aac6-00b6712a0592 890ef84f-e214-42f1-8650-d3ef3ceb96f6 23489baf-43a4-4073-b351-69bf42f29263 8785f232-f597-4fd6-8efa-50db18f54b6f 8fd3d21d-d7b1-4273-bb6a-a8fe63d92e5e 12e70a1a-186c-4ac1-9cc7-e33e25d87813 71bb2a31-8e04-40c6-adf2-f419cfaf7a39 f363e19a-e21d-4cfc-9cbc-a4f593983579 b7a4bb9b-5167-47d5-bd18-be641a4a1b56 e149375e-0d0b-4c0e-b028-fdd65c1e4f20 ffed8397-e9ab-4380-8188-5b2eef2588f0 5643d16e-d971-4c07-98c7-5506f08a3d39 2175f9a2-5ca5-4a2b-982c-95993345210e 91a3125a-ebd2-4cec-9897-cbef73afce4f 8190df8f-1914-4648-b784-84adfb64cefc 9cdba9a7-30c2-4d34-a5f9-4fb1981c06f2 9bb83a0e-9069-4e96-bf48-3b76884a3925 353d8f66-7cba-4231-a8c4-58d46412faf1 e71a7659-87cf-4698-ae92-617921fd8ae7 0a80227c-a4a5-4a4b-90dd-021b14b55986 08854a93-9d26-419a-9d58-4c56e86eb27b 86c6be7a-df64-470c-bb0b-60986e4945d1 aec69e3c-00b9-463f-9ea5-575c8cc87c9a 9efe61bf-9796-4360-8f84-dabf8b3f2bd0 2dac3ece-3623-445d-975d-a0ea7b6b0b97 ff139156-b71e-424a-aee3-0e098c350d96 91d5a92a-4057-42f2-b20f-28a957e139c4 682fbb70-bdf0-4dfa-9798-c4d8799d9e17 92f012fc-66b7-4197-8408-d211e4e820e5 21d983a4-ff37-4c55-a63b-ea53e95aedb6 cca246a8-650b-44bc-8cee-041ceeb50724 096f5b40-44bd-41c5-94b2-1f3a87d7df18 cdcf765b-6de4-45dc-8e9a-bc23ff29082e 69ac6456-825c-48ee-9817-d4efce626d58 e798ade9-831d-46b8-854e-3add3936f888 1be12bba-d29e-4876-8c7b-a967d815cb84 efd407ad-4196-4182-ab69-895d8d669321 5f7f060d-52b0-4a6e-beae-85c623a2d043 6e62df0c-61fc-4fde-a8e3-9cb7506cc594 9cfc2978-2084-4d8d-ad9b-a5531c3a3177 1f5d5a0a-1f08-48be-bfc0-0989e7154acd 377bc00d-f276-47ed-a6ee-403317065207 3d3a022f-4c03-44fd-8160-6bfbbfb5c9f3 01920f1e-f27c-47e5-add1-2ee5ed0c81df 1c8ea85c-f776-4d03-9fdb-879af8b2457d 07ee645f-607c-443e-8b37-91d42f24c493 66569111-7657-4398-a6a2-439f13e1766f 6ea64202-79e7-4197-b6ef-d24fed91dbe5 02dced97-c85c-4d9f-b2a4-0249e5d413dc 6d9cba32-8e6d-4097-b4b0-e2ab7a44359a 192fada5-5285-4b34-bd4a-8c763437c809 1c0278e9-11b9-4339-9031-60a286a06404 411ed56c-4125-4c18-b8fb-c2d1dce36516 5f1fbc73-752e-4d38-ba3d-785889a7a5ed 5bddddc0-1856-4a19-bac7-e9c2a679c565 50cd6040-bb40-4de8-9b7e-bdaa84e2fd37 cf78e437-b661-4b89-ac38-8591d78c13a5 fe369980-0df6-40b2-97f0-2d86ebe1f303 635215ce-c561-460f-b736-a9281ea142be 2a30d31b-9ba8-4fec-a9a7-b53600fff3c6 2097d789-e27f-4a9a-93d9-fa0c3efa25fb a8a0b6a3-9cfa-4285-be3f-63c82343f0a8 8aa6bb06-8e62-4139-ae0d-4cece3fbba00 fd43f6d1-9a42-45a6-a8af-ea7cf76fa43d 923fee3a-568a-4417-bb21-c6418c75d019 14a7d328-7684-435b-8557-6c3fcf5c8a02 fedc0088-69e3-4ceb-9514-a0188b8c178c a871fffb-c723-4592-b18b-20ba7ed42eb2 b3bed17f-7868-41ab-a7e6-5df5724c7190 b2592b74-ec22-4990-8580-b4f150529cbe 41f673d1-dab1-486f-9807-be1e1077f33e b3eecb89-58ac-403e-8fe2-ed6b9b2d6029 cc7872fb-c737-4c0c-b9fe-e43cbac9480b 393e06c3-e4cb-4c40-a515-4d6c89587833 3a38d1bb-8149-4b56-a363-ca8eddbad867 35d6a8bb-f5fe-4647-bf68-dde1d9c07171 cdb806e2-0f3f-4286-8ec3-01ab11eefdea 01a26af9-34f4-43ac-b187-db9cc0711f02 4ce0de00-b557-4ec1-966a-844833d07a8a 33d6316c-901c-4dc2-9371-c5dad0ef75dc c7c3b7cc-1abf-4d00-a2db-09fba196862f ab5c25f9-5c3e-4720-bf90-786eaab947cb 1dcce828-20c6-4cfc-a588-7fa074ed5f7d 8605f901-a3b8-41c6-907d-ae452ce257c9 0b0b110d-282b-4794-a941-34a99755262d ab08f8de-7763-48fb-8550-1374d4147db4 fc31e98b-3b58-47bc-8b41-96230e812b34 09977ea5-07d1-4532-8895-5949abc02ef8 701e3c74-31b6-4d23-a4ba-a00de7456a98 a29afbef-d554-421e-b6b0-86a968074539 c0042628-6298-4633-a5f8-92f9dcb397bf 5f4372e2-1e8c-447c-ae77-77fde5def47e 06701105-0432-44d1-a1af-bcc2176ed81d aec2f6a6-8551-4f4f-b046-9c8017546e44 130f0514-dc00-4227-98e8-115711c293a7 070722f1-af9d-4a9b-a5e0-f9b1cc6f44b1 3293c00c-4473-4742-a448-8eb3f33b25e2 ce6f2d61-7d82-4ac7-b489-acb47043382c c259a7d4-67e6-4ef3-b867-c90d20b1a6e2 393e6f5f-67e6-4994-a7a7-e68cc41470bc a1794cb7-8a5e-4862-97da-ee6e1377795c dc906c96-64e7-45f9-aff7-70a8eda4d848 70213c77-d0d8-4de9-866c-429d0198f4fb cd14f4a4-7f6b-498c-ba78-abb152914db2 7f84a0c0-6013-4337-8c82-f325661b6ee6 e81a704f-10a6-4a67-bd03-a660013b30af ae025519-14a3-4da3-be5b-5ab33dab4e31 02bc5eff-c200-4349-ab7a-227a513b7214 a45c8658-5c6c-496c-8def-a7e442f45b7e 1c78e425-4f5c-40dd-9057-0802491863fd 3cb9fdce-1c52-4b3f-952c-23cbfe731b84 2c27fb6b-5b18-457e-87e1-28216fbd5a27 18ac43b5-8839-48fd-8698-64595123eade 653a4cbc-77e2-42bf-a053-a7324cde0841 d7e9a982-89b7-48ed-90bb-cee13b78c8a2 701c45e0-a852-4a88-9dea-c1c6e5597bc4 b6f5abd5-a6bc-4019-96ab-27b8584f0c84 b69e5149-95b0-4345-ad7c-622213cb8f1e 51f758a6-cc01-409d-b47c-f4e5c5c15af2 238b2a46-7d5a-4b3b-be1a-82d1abec4e6f a13cdda3-a9ba-4980-8e73-69af579c7280 26695c9f-1601-495b-b333-74dd3f7b2a33 59a08469-b67f-4d40-a75a-cdc7b4045423 cb73035e-1fbf-4fe8-9929-018fbeaf8248 0a697ce0-54e0-48e1-88a0-221a8d9ba99c 2ec6ac8c-3ada-465a-a28f-cd90dfe57ad6 d65c417b-9b74-4d1f-bced-06793c8f136e cff26609-793c-4737-987b-9323684a6da1 f1268150-705b-4f81-acd2-005343298613 9b076a4b-c18b-4fb8-8b92-18855329973e 8c2a8744-9b30-45b4-b12f-3d7dfcee6fb0 ad7fdb00-9b35-4bb9-af61-05da35bd68ac e706990a-24a2-4a6f-a796-6628f00476b4 4a3843c8-6cdc-4372-b29c-0ef24b9ae0e8 c3517991-4f9a-4ea0-a02f-0537de4eebdd edc442a9-af91-472c-ac07-c128922b38a2 d19f5d1a-a4e9-4eea-bc0c-39f98c6c918f 67485ea2-9585-493a-be98-5c1f609343d7 c5e380c5-e4d9-4852-a575-567beeeb2bd9 bf8b00ec-68a4-49fd-ae3d-60bcc389b306 f1bddd46-4596-4d75-9935-62e82f56303d 8bc94198-2f3f-4a6e-a94c-4e55a64a3ca7 73aff452-49aa-4659-8fcb-1b68606e9463 385f58dc-c145-46d2-a8ec-85da8a39aac8 29c2a5b1-d140-4c87-866e-5bb23dc59786 223bccf6-9134-44f7-986c-72c5ef5e9dae aa3a0665-cfcd-4673-b2d6-9f1db5baaa7e 390af74a-1a2e-4973-be53-f8852c55a15d 38dc31a4-c0e4-449c-a5b6-1930054eb36f dab984b1-55bb-47b6-bc01-ae59c2276b37 f34a8ba3-59f0-413d-8124-e4cddb975763 889ddd34-8882-464f-bb5a-54a918ee613f 333006a1-ed9c-4b94-aff8-746f4bc48d7f f536c14f-e57d-497d-a26f-90af70370cff f692b22c-963e-46d9-9433-2efdd11fb4d9 5089980c-c53e-45d1-a494-13cb9d8eb93b 8761d7a7-b782-4809-a1dc-9e2809c93675 cb738cd9-e4bb-49e9-94c2-8bad79be61eb 35a62a4e-9b5c-4e50-bd94-c86de94da8ae 872acd4b-2f43-4453-a395-b0eda9a7a46f a4b627bc-cec4-45df-9e30-3353b1f73680 2fb33ec4-24f1-47b4-838d-f6aa194dc1f8 82a7dabc-729c-4d10-bd32-1ba338ac66e6 b44c757f-9bfd-4347-b630-8c5398a35c0a 4eafdd1e-e3b4-454b-bdff-1fce163b1c01 384d0122-79c5-442d-8f94-b4dbdd6300b1 dea6e275-9359-45e8-9046-e6f87342fcef 77291e7d-82d3-4107-8e87-cd27bdc6c5f8 f782fe38-4056-4a40-a66e-a9dce91276f5 0b6448c6-401e-49bc-8ace-5ce79d074837 2f2e2ca2-5f74-42d3-ae2c-093f3d241a8a e6e9ec35-f15c-45c9-ba24-c249f1e7632c 980f25ed-3d94-4e8d-9328-81bb3569734c f209315a-0217-434c-9137-e486f5f0351d 8aef8691-d93f-4b2a-9351-11b2abff44c6 420c8473-1ae6-4b73-a9bd-5bc70f0c4d32 cd5f0aaa-4bc0-4e70-bc60-d1e761e4d8e6 f224bc90-075f-47a6-8cc6-6cbc1d25c8cf 813bf987-7063-40a4-a1b9-7c25f7bdbf07 ce860b57-c60c-46d0-a395-c14b7b9b74fc 4f1ea9aa-b1f7-4824-8053-b4c3c60a6499 ede7a39d-3cec-4ebd-aed8-f8bc29decb5e a631be02-4c46-45f4-88f4-f97ef1416ac4 d9089c77-ac04-4368-a3ac-139f4412b338 b3331173-6996-4343-8abb-0d877c03ee29 d59e9352-a99f-4903-abf2-a48709470064 93b045c4-93a3-434b-9936-79e793c29193 361ca4f6-6d0d-4c95-bbbe-348ece01e75f 5f78cbd2-1844-41cd-8cab-61aca31d7a54 3561b7f7-1b9c-49f0-b900-21e08fe8df88 26d3066f-d575-48dd-81f4-768aadf910b6 cf4e4d05-2383-4886-9bfb-9979d1c74081 3bc99ca1-4d2f-45e8-82ce-1ba1e60c59ea 39b9eda3-6b56-4aeb-ab15-c768f4a103a6 a5db477c-e084-4455-a9d0-fffe9931e5d2 4010209c-d269-409c-89bb-e33c2493acf4 f19b0cd4-39dd-4b15-a541-5e8f0ddc20ce 726ad5d1-8d76-4fd1-bbe9-266a33c89663 5cf0a85a-d57f-4128-a2b5-90766fe29f81 095727a4-b298-414f-988a-358bb496f33e bb81c45e-fc59-4957-a658-2eab74d74449 3c6c688e-bbf5-4287-9f18-7e2d6ad16c7b b8958208-9482-429a-82a1-271722c2d8f9 7b9961d3-a458-40b0-a545-2bbdcdcf675a 564abe61-2f32-457f-be07-1f81446359cf 8af5d93c-084a-4c91-a51a-e5c82ebc9b68 17e5a0a3-0536-4305-b416-ca17f126169c c0bbac18-3b33-4852-a38c-e3fd29d7856c 1934bc63-faa8-4af6-ab18-3e8440089b07 8ea668c6-4a3c-4745-9a4f-23a9a97206df a9445789-1410-4698-b364-e07577da2320 c2a35865-1ed7-4df8-abfa-34eabde75594 26b35209-5415-4b04-8441-64979a64048d b4557517-ab78-4115-94c4-36331870800f f380df71-5c21-4cd0-a64a-e5171718b44e c84ab721-f664-4714-95b5-f91e58228913 e92a5727-4b10-47e7-825c-f6b0d6b6662a e6aafc85-203d-4c10-acbe-8ed3dc17f654 7f095b41-a3d2-4554-bca8-c60189b270b9 aed0c0ea-7e73-402b-bf9e-14c883612e9c 51ea9223-ef00-455a-80f4-03e8495bdfb4 79dfddb0-9efa-4ad6-a370-b8cd58e2f6b1 3efc408f-8aa4-4b20-affa-d80f36945785 a3f605a1-0b8c-4d9f-9ca1-0cc835205646 9c019283-8e1c-42db-828a-e550a5558fd0 60f26538-5c9d-4da1-93f8-0e38a333cf01 053abb75-982a-4074-bfd4-6b1ba00756f8 4a0784e5-b568-46e0-b636-9786d6cce514 29ffd2f8-a2e8-4904-a322-99dc38e8899a 355c7987-1d14-4736-ace8-6f9498029ab9 9279299c-5102-44d1-8e1f-1aa6c425938d 99534bb7-7668-44e1-8290-80b0bd2a274b 2e163dd2-6977-48f7-90c8-2eb3ce136dbf 00567982-0f5c-4867-a6ff-eb47736a32a0 613f05da-16be-48cc-8d02-3c85011c6b41 6acc8a49-d7f8-4d62-ad5c-de3ac3ec958a 76c714e6-9857-4c76-816d-0a0bdddd99f0 8ed56f71-7bae-4b6e-8c13-bf304460ebe3 678efa89-e071-437a-9c7d-337005f8f469 e5d6e301-3049-406c-ba32-49e18746afd1 9b713591-2738-43ed-a870-780b29e5befb befb9328-6f9d-4c02-b17b-4da70ece757a 8232af82-131f-492a-a84c-d1835cc3a2e8 432384a3-c88a-41a7-a4c7-b93680aba4fb 4a68dd3b-a2b5-4954-8141-228798e1bfd6 d221fa95-4534-4feb-b826-d0d5be79f36c e20cd180-ab6e-4cac-86a9-f5fc75c16a28 db93e349-9a36-4985-b08c-452bf7c01660 b29e7290-c909-477f-947f-8fb2eff5c96d d57bf141-c6c5-4cf3-ae67-111b9269bcd0 2736fd68-e4b7-4423-bea3-d87c2cbaaaff cd97f7cd-b134-48f6-9c37-368146af797e d9f39658-f836-4429-b79c-a078f97588b3 8b195ffc-22fe-4b41-ae9b-2d87d35f54d8 bca0e9ce-6b29-4dfe-9119-792adf55a227 59a73af9-62c7-4fa6-b1a8-15bb5a1938d6 fda558c9-e0ab-4cd8-a3e5-e63b86f058bd ea7ad8aa-581e-4f3c-bf27-c670e6905e61 704bebd9-42e7-4af0-8c3c-2f46ca2b238b 8670f357-db33-46be-a418-e9b9ab8bdf53 7fa81be3-abe8-42fb-98c4-9da806bccc68 915b79e6-6854-4804-ae88-2b6a70ffeeb2 50854fcb-822f-42f3-a70d-510a0ec0177b 477877c2-0502-4764-b48d-bd0618491f7b 50e62544-edd5-46f6-9d18-133a93b2a5b8 ddcea7f8-7114-48b4-a9e2-a939b84a482a 5f67a0a5-7303-4f12-92d2-3243be24ca7d 7513c59a-4ec1-496f-a040-dbba839472be b5e6bde4-b6d8-4941-8e5f-0317a266fd0d a6501a6d-a2dd-4c19-8055-c6438233f898 b363d8a8-91d2-4b36-ada1-b0f484516389 ebacb4a6-268a-4029-aee2-54be6eef8fad 17adb2d0-b328-4729-87d0-c38f97414d22 ae919238-ac9c-4a02-85e0-1f57ec438fd1 d8a540c2-772f-4859-a6d5-6a5b4343795c 907caad7-407e-4612-87c5-5b4dba8659d8 5792b7fd-1728-493b-b968-f633f06f3b0b 5ab1919a-439c-41f6-9f3a-f6d29461186d a6770e48-e74c-457e-96e9-17121dd21117 ae744bee-7e1c-42a9-8a04-644941ff58e2 1ca71fff-57c7-4e97-9646-c1d80751d22c c6cf4dcf-817a-4297-831d-9a6c45c2b447 562d8556-b633-4365-9f8d-4fe4f274975e a391e24d-71aa-4bd0-a287-0fdb7da1ba08 5f9bd958-18a4-4c02-bc40-4dafa31ee9e1 4a1f399b-ed3d-47aa-91e3-e85ce66f8480 0277113e-0388-43a1-b2a2-dd84aa6a7411 114be941-98c4-4b41-8e61-9520a5a12750 68a878ee-feba-4b45-9700-56119fe247ab 3a9f5e48-f95a-4f41-bdd6-730fd75da201 8b87c065-2742-4a51-94c0-7e5d8582a4df 4a6f6e93-7673-46b3-b4f6-fbcfbd53c754 98f0a289-eea6-4b8f-8b93-22d68a85d54e 6b06060f-acd9-4b45-9c52-fd26ea7d3916 8bb6f622-de95-4140-856a-7b54bc4f90c3 38e77ed3-b093-4a96-9538-efa25cc1c424 e00a929a-1a54-4e7a-9095-4bbe2f4be2de 29d9a195-3387-49fc-bb09-66b0fa52c67f 5f40cbe1-b679-4c90-91fd-88ff338c7e62 f3ce85f5-bf97-4781-809f-d8e7014abc24 63cc9a97-e318-4865-af1f-482f2ded8959 f536d223-32b8-4182-996d-f3ed11eac29d dc5152e0-df72-4e2d-9e00-3537688ba613 63b4893b-8406-4dda-8544-fc540a66963b 476b31f2-6165-4fe7-aff3-0f13eec2aa2b 8c42e1e1-f20b-48d3-b833-bac77b387dec d9484d3d-98b5-4cb3-8743-38a97f9b4acc 3193d29e-d79e-4d0a-88e5-33f728279fa7 215c8960-2869-4f2a-a96c-4778c945665d ff3b23b2-0c96-422a-9338-05c95c74037e eac9132b-e7df-4de6-bd66-36b98581b07f 7066bd39-4954-4239-bbd5-3d3f4042390e e30a4cba-cb20-4a7c-950a-39bbfcc05773 ed05c581-834b-41e3-8a8b-3542bc457c40 0ad780d3-10d7-4b18-b53a-c1bbf41b5979 c0adeaab-63e6-4f14-96e8-b52f498c415c bcaff8b8-ee9c-4d46-92fc-0ee9b9f07df4 adfe66e8-d5f6-492c-b82a-47c1e71dfee9 8278130d-2a12-4e3a-b250-0b7bd217a8a4 67587305-ce0c-46a5-8aa2-004d1d949ae3 d25a7a29-96a6-478d-b325-4e8f04fc5579 03a41168-f7d4-471b-a8de-0210c89a6b97 8c6178d2-ddd9-43c3-a3bd-22db21392117 1c118a1c-689a-475a-8952-52bb8761b767 7d17dcf2-6e1d-425a-8044-a2fdc9c001da 4282d108-7d66-4cac-bcb6-16711d7062af 9c004bd5-a71f-4a9d-98c2-b63db3aeb0a1 753526fe-503d-417a-90dc-2573ad2482db d13047b0-1164-454f-8bf1-eb5a5607ed53 4a27f3bb-385d-4519-b20b-f439c7772485 b3805cea-4279-4ed2-b3eb-d52919941e66 fca56073-527d-478c-a003-4082628d06ef e349e8a0-39c4-43ea-a18b-1fb5e44ab2c9 9ff08e24-a1ad-4650-b193-a395ec450454 0f618d35-322c-46ba-87a3-894bf09174cc fe3a17f7-2b32-471b-808d-de29de03cf93 ddf1e8ee-1613-4288-bfc1-c5edf680413b 753b7faf-9603-47f8-876d-4345371a92ad 07e03af8-f9ac-43aa-88c1-493510c02865 49042fcd-02b4-4877-9b89-372c2054d0e3 de01b4b2-b6cc-4f1b-8f92-175f555a3032 341e43f9-9e73-44c4-9f03-d1e7e1967df2 e733e703-1826-4685-a8b5-8c6ed62082b4 b8d1ab22-98f6-4e8f-a07b-7a398efa174e daf51ae9-0143-4915-a55d-9539282bd80c f0147ca8-0a81-463f-abc5-bd2c5fb1db3b 5d7feaaf-7e26-4260-91fa-d0c7a2666934 411a97a4-8131-439d-8b71-5586ef2348f6 1db04355-0e55-4cd1-9af7-293c405e0d63 6aeca95c-6659-43d9-b258-41d3e796bdf2 6c91eb1d-372b-40b4-aa8a-a42bd462ff3f 85bc6637-c550-40fa-a1a5-67879fbf6c6c 02150c16-417f-43f4-a95d-148926b07e82 6cbd4f7c-1131-4730-8e30-0d47c87ba129 9aa7dfa1-62c6-423c-a466-370db3e32b1a 637b2bd9-444b-45c9-b6a9-2d4e8310ca62 19ac9ca6-766d-448f-82cd-87dd27705a55 5ac4eefc-6145-4a0d-a6fa-9cbef8c379d2 217892fb-dda5-4f48-a833-4ef1e5ea929b 6d5a869a-2f62-4a59-a2e0-8fab636a3831 208c9133-92fc-47e5-a4d9-807beaa1630d 5457854a-5cce-48f9-98a4-48bf6fe81cf5 c547a33d-addc-4a23-834d-ccfea3fd7865 dd386943-a79f-4131-9e07-a776dc69bd0e 2743b2fa-e980-47ec-a615-68fcbaf44da3 a502082f-7d84-4335-8f18-8df37d4e17ef 5714cfc7-4e43-40ca-bf11-a1e7263a8fd8 01b76af8-9d5c-4fd4-9086-b7b79086dc14 97b09939-0fb7-4818-8788-eaaeece2ddb5 06cb3ce8-8386-4166-b52e-fc590ccf079a 4a5467bb-2acf-4401-a4da-188c0e24a271 2809549f-2fcc-466a-9995-2768cc25d069 13f8d081-00d3-4f5a-9107-1d5cf6c655f5 d1d56e5a-e9cd-433f-a417-c5a8ead571a7 19cd4165-dfd3-418b-ba4e-5c4d455dc98d e59c14f0-1970-430a-af7a-123f2f98c971 0c278bfc-487f-46a6-a973-89b155bdd87a 7986c0c8-bd70-4b41-b5b2-e0916b4f4902 0fd125cb-8bd4-4136-903c-63afa6c1e7af 8012cace-6777-4670-8c19-25e2f30b3334 6861c7dd-dd12-4aaf-8de9-23f581daf505 015be0b8-f9f8-4b78-91b4-530c2f24c999 b0e18160-9b97-4017-afae-859acd53e7fe 99108c62-7b2e-408e-81e0-08c6eece64c2 df75db09-e2ce-4230-87a4-1103df2c0754 399ba6e5-0c2c-4227-85da-02df030e7d43 b9183162-000c-4692-8db9-e3e07b7e8852 f8c0f8db-f876-4898-b3d5-cb07ffefc417 81c82aaa-7bcb-4c87-8921-90e5fe4b2918 28ea107f-2044-455e-8324-f42dcbbe6d76 bba7c866-cc2e-4585-bace-6b15f5bd1a7a 9380d9d3-d055-49c3-88c8-cf0afe17d04b 73b24885-86ad-4fc8-a4da-f2e0d915f09b 8a2b9096-57bb-4319-b18f-739757afaa02 7e18db50-72e4-42c8-a755-d4744019fd29 fc239717-0e15-4888-b8ef-d82d00d12afa e5c5f302-6e88-4929-a62a-c7f5ed3dbdee 0f58e296-ee53-4456-ba84-ecbd7ffa5e11 4192ef68-7db5-4c98-946c-66317a7ab651 1cff8f2b-fb89-473f-8f29-63deee8a065a 1d55268d-e5e7-4fbc-a47f-b2428a5c87e2 94a4cc7c-2aef-45b6-810c-1d8ef09b25a0 24fc8239-6f58-4665-92c0-a31f7d2fe234 9caa65e6-74d0-43c8-b85d-a171a96ce64e 6333519d-5733-4c1e-90ce-e61ed598f9bd 9b21514c-1931-4656-9a93-ff9dd0dd8788 0c639cc5-ec50-469b-972a-0d972d3b9fbb cc1be08b-fbc7-4259-96f8-ffb6d3e0271f e3732780-560e-42fa-8a7a-cb2a7b240f71 d0823e70-c1e3-4c45-a895-4e632087d322 3f2e36dc-7074-48ec-a80a-a89bb8f8bf6d 3e0c4145-93be-44dc-89ca-36c02a50d59d a3431cd3-133c-432f-b20e-0ac74da920c8 d720d0be-73a2-4135-a3b0-8390875159a6 a0d15de9-010d-4be8-9429-d1dc2bc36707 6b9bc86d-e196-4ab8-a86e-583d9c300dac 590da50f-e65d-4663-a191-4a624fc77b79 4c6c5c2e-9773-4e7c-9744-00cb52c6968a 446b2ca9-886c-49cf-97e6-9a6d0956780a 82c65205-7aab-4be9-a744-447486ce4a37 9ad87832-cd70-4bf6-be39-e7d509c4274e ebaf551b-fb26-4d6b-ad7d-f366d8fc9f0c 59abb89a-4d8e-4629-858a-63b2ba67cdd5 d9cf1095-cc00-48a0-b7a8-fbf6e1b47db7 1ab0f152-cf2b-4572-86cd-e445eb7485a7 fc8bce46-c4a7-4a1f-b912-15ac14a93069 a5b72136-2274-4359-870d-43ca0e7a1c28 548d466f-f721-4e82-91c4-96be22643da1 69a324ca-bd98-414f-acd9-05dcb57dd4c7 55899f76-58b3-49b9-9eaa-319390269a6c cdc50a8b-5102-4422-b8b9-4acc4bc1915f 37f3b9c4-f9c4-41c1-9eec-370e4b2cf29f ed37d629-677b-444d-a09b-206f23388fae ee5b4e6e-c39e-44c1-aad8-11d0c54af2ad 739ea918-e3fc-4da5-8ce4-8896aa218632 0e16ac27-62f2-4bbc-8421-9f05f1ff9e71 212cb9bc-cfca-4867-aaea-a6a8173d46b8 1637afe8-6192-4ea9-86f4-79eb7a34d898 a9a871f6-d7f7-4fac-8d04-d10eb032618f 59f7c9cb-9f22-42ec-a667-08b5277cd790 34a6946b-3d22-41bd-843f-494e0e446411 e8122d30-70d0-420b-80db-968655430d2e e56ed58b-0a05-4e8c-8da6-0065ea959412 527456c3-7227-4244-8dff-41b06d3610df e6f9ede0-8bad-4b64-b6c4-323fea9a7460 8c3968ff-d5de-467c-97f4-2a816d3c17be 52f9118c-1b03-441f-a16e-479f5b69400f 00e92266-5279-4c41-a8ab-8ba92d0e1bad 2dafe7ab-87da-4476-939a-6fd4af987d11 0f853652-b5cb-4178-b352-3e67705d0b05 8b8e6e96-724a-4937-87ff-2d3544d1909a 5930fc32-cb14-4a49-8307-6cac0bbc5a46 46de9df7-1815-4b41-9732-d71d3e69344c 9cec133b-3bdd-4cbd-ab02-bed02a2326a9 ac6f08b5-4fe6-4850-bc01-c6dfce2d79e8 125ca779-9176-4bbe-ae4d-4c5ecd946618 bdb516c1-9abd-4d4d-b562-8c07f3d6f9d6 a45f3989-9446-4f02-b6e7-2d08b269b711 a7d1caa3-305a-4142-bcc2-1964f2446abc aeecb9f0-7c9c-4a29-80eb-9bc2478d6c9f 49976ad6-8b9f-4fbf-ac1d-2358aa20e7b7 60a2543e-84a9-49d7-9e45-7f8aa55215ea 384cf586-7247-4e15-8b95-6b5f289b00f2 7661daff-d45f-4fbb-8771-e4f38e72570e 8d54300d-a56b-4e14-a94a-21128b5113b4 d3a36bcd-3af3-4e59-8753-d65491d48c26 0bedb947-8d36-41d2-be30-4f40444c7bf6 89d77cde-f1fa-4084-b0fc-34ca8a08e1fc f59cc5b3-f017-4243-bad2-9935e9518daf 51508086-a97c-4e17-af33-49f28e528e1e 53a6c7af-39ea-4229-a602-6a5b06ced18b 09aefea3-daff-4a8e-b1ae-a2a9f24fd811 a368d0da-178c-4e3b-8edf-a7910df2e2a1 7425b7c5-5c79-44d4-91b6-1bfb5a4fb7b7 25b9fb3d-9225-431d-9c84-d59ab32d6e52 a3a850aa-586b-4202-8ff3-b5d05752b48f 421f29f0-a1d5-407e-8034-b18414c9cc6d b85a0ff7-3c14-4e1a-8865-e9aa9be65a77 fdf92b84-597b-4056-821b-315767d16eb7 e10282e9-a367-42d4-a1c0-6b30a56cecef a9ace7f0-cc56-4413-81b7-31ed7467991e a30930f2-381a-4e0c-8458-0064e03f5f42 19c8e105-ad1e-4394-a63e-24c5d8e7e4d5 f95b864a-f815-434d-bceb-630381fd8d70 2fd8536e-58a3-4f7e-bbd8-d37dce422521 ce79c6b3-adc7-4ec3-8273-b25699e9ea88 7149c1b0-0200-4032-9672-30dea1b87907 c297a984-3bca-42df-8924-b12d6fac49dd 6600ce23-2e2c-406e-bcab-500407b8e1f4 4093322f-2200-4b18-98b9-5f413c297fe5 fa7c46d3-78c9-4206-8563-c295bbf1364b 4c87d504-8dac-4a30-ac8b-18d301d7d23c a5691a93-e578-4dec-a1c5-c6b5ef7951fb 41301243-a347-42d0-8888-96513123cb4b a8e5dc82-7b9f-4d80-a6ac-09cb91fcc1c9 ed41c217-3f5c-40ec-a0b6-75276cefa353 12aadb82-505d-4ef3-a3ca-1ba941233b4f 85a64256-66d0-4c89-9dc8-939568fd773c 365a4825-251a-4061-8324-d0f8d1cbd03b a2bf42dc-6c4e-4b90-b6b5-6c1328c4d78f 721d27d8-e843-439d-98e3-1fb9e2e887cf cde9e9f4-b9b7-4e65-bc64-c2bceac5a093 ca0e32a2-5684-4235-b1d7-4bab6dcf32a4 bfe23cfd-28a6-4f13-9c1b-1c03e34452fc d3609e96-0b55-417c-863f-96e2e71dcbec b6f9b9c4-cc74-46ac-abb7-1b4515c3a653 ae49a531-6753-4ff6-936b-28b91873c52a 77a6ccdd-63a3-4480-9e02-e7f21ffe70ad 301b972e-92e1-4db8-8f55-28181853134c 93a56f3d-b8fc-42ca-9485-9f45e24f013e 4fd29ebb-efb7-4153-ba71-2ca8ca838d98 376954ac-36dc-4798-b067-dbab470ff0f6 7aa73b2b-4414-4b42-b8e2-7058234187cd 784788ca-0b57-470a-871c-f22b35b7287c baf40e00-e4a7-4dc9-a8b8-48e8f15410bd 56120d8e-54ef-4d88-87f3-b101359c1485 8aee55bb-c906-4a5b-936e-907886a4976f 0f44d053-151c-4914-aae9-e05e7f114576 019a2fdd-6f8d-4332-8708-2d3fd8119c01 95644801-c705-4472-a15f-8bad315efdd1 503db35b-9076-47d7-9d97-5cbe33de27bd 708574ca-31f0-4c71-846e-a3d0274fe65f 6bb32094-1c00-4de8-a24a-fae6b4a85a56 4655f0c7-2c25-43ed-b92e-c26882f3525a 6ae3a2a2-a20e-4421-87b4-bed6592328ac 16a6ebe4-c8a6-49af-bad9-c5e00f8df292 02eaf45f-d6cb-471a-bbc8-9a7d0c5a6e3b 6cb19180-bac9-48e3-b433-827f0d24e612 ffb5b879-2d4e-48af-85bb-a6267ea1e3b9 ee88813f-df32-41b4-9ee3-54cc7d12f95b dc00c6e7-5b3c-4047-81e0-c6c532005aae 701ebd11-0ad1-485e-bba5-d300850b525f 03f1465d-12a7-4c11-8b95-62dc40b4d227 98db1911-fbf0-4ee8-9ba6-d64d304dd425 64b6e4f4-a4a9-41bd-a389-462e32771287 0ae474c7-61ec-4957-83e8-a6f0b6e783cb c1241eb8-f574-410d-89ce-c3ef7e6c3aa4 6a3c9207-17fa-49c9-9c8e-e3e7d8c883ea f23a1186-e9ff-4d16-b5ac-188d9410c909 bd5d568a-7743-4b93-a841-e09650741759 4c298143-da06-431a-b667-861139fa34c0 ba98777f-f5d5-4b29-9891-0d018e7b58b7 d0a81cde-4918-4e18-8d23-baa3c757c495 a5e00a83-cd4e-4cf3-bfbc-a5784b762130 3aeb15cd-74f2-4469-8e0b-0e4003505fca b87f1199-4ff2-4833-89db-e5e3e165402e 7dc77e8e-52fb-495c-aafe-9b59dbf0d926 f6cfdddb-532f-46df-90b1-ee4549580f7d a9fb7cd6-46b7-4d33-9b14-65cec844d59b c0d1dedb-a1d7-48e0-9f48-4b1aa4815408 9b613774-8838-472a-8053-928877d43e2b 344591e4-9639-4287-9c0e-fe678211bb40 6e6b706d-bb3d-4d5a-bb12-6b9c9bf88433 74adeff0-ec41-46ea-8c70-e3af1cd81038 82938359-257d-4c2d-9271-a3efd3798b20 48c8ebe1-0b3e-4216-ab17-074483731f1e cf35fd79-9b47-42da-98df-e8730d7b812f 5179c379-8c41-41af-a9ff-7b58b888508f 9b6954e9-a7ca-4a24-a49d-e2f37f1756b2 9c565ac3-077e-44ef-b7bc-e3854adfd2c2 fea547c7-130e-49ab-9467-9efb009ac2e7 b9963d0f-2c91-4738-9352-667a70770f85 a7774ef7-e283-4229-b32c-d37b456553f0 bee443cc-bdba-4160-839f-b1d92df429ab 70173b1a-5629-40ca-aeb3-6da87aad841d 4d8eb5c1-240e-4a9e-a8e0-cd4f18c434ec 35b170ab-8b9f-4307-9358-2247e5172202 6c06bf85-23fb-45b6-b77e-795c28661428 f6165cf2-8816-4f2c-98d8-b55a1b9f7244 1653a777-b1c0-4962-bb62-20f9d3ad5571 b1a4fc66-7e8e-43d0-a66c-5b3ede556158 2d2070bf-2063-4a7c-873c-9848c00c8976 44f5b80d-3be1-4d74-b308-677453c0dd56 31e2e7d4-afed-4f76-8535-d848d8558f8b e5454133-f867-4752-8809-68953a1f1011 70a6f77f-c3fe-4944-97ae-2c187465e4d3 71286e82-87a0-4bcd-a364-f4e546055d29 9b04ec7e-e78d-4be2-8be8-4f885c8f3e84 09ee76f1-b360-4871-80b3-4c345688aa7a 8f420dce-24cd-4b3b-8d58-50168ebff062 b4a303ca-7a56-4be1-900a-6db411f83856 28028134-79b0-41c0-84c5-2b83a6c56cc0 b2d7ef61-7d63-4f63-be8b-ac7b303dab08 a441d8a1-d800-41d9-a87d-6245c1b1a44e 154cb460-e4bb-4d29-8d78-b0593be00b2f c044e554-35e7-4f37-9c14-bb84acdfd6ac 2d54c2d8-7954-4fd7-b9ed-ad4a922df61c 7d16bb67-012b-42bb-bcfb-a1c36bef654a 8948bfd7-dc47-4f16-95a7-be6ecec86c86 25b678ec-9af7-449c-b474-c6888f191106 c81eac59-46dd-4026-9496-3f0c80424162 7eadd817-30c6-4734-9bfc-d07851eb9997 aff3949d-fc08-43cd-8063-ccbe5ec9c0f6 ba64b956-472f-41f6-a595-b4ed2829d1c8 f852750e-29c8-4aec-9445-f805e3a6357e 95bc96c3-65ae-4012-9f79-420b217401a5 44e2885f-e6c0-444a-b015-a0e5512bd90e ed2afa6b-1656-4572-8e87-21af893e0c7c 7df6eac4-b25e-48d1-be18-de3975237161 71027be3-a496-4f1f-83d3-981bd1c87c63 2a4e5620-5d57-478e-aa12-30865994d494 e39ad2f9-b463-4408-9e19-520c7877b134 89bffcec-0b00-45b7-9b69-f2eb9fdbf897 be88366b-69c4-4d6d-a0c0-3a44641f236b d9328446-21d0-469a-838a-698388037ab8 5eafd589-f86a-4841-b201-6b305c0e623b 400891c6-12a8-481a-b221-5ce384a33902 3b5a8a14-bb01-4ee8-a6de-ec4edf998a49 2d9cc851-661f-41c6-ac46-83790f6e064f 750c1889-a7b6-4e74-ba6f-d612c1fd027c 7da284bf-6c25-405f-b127-899dd79b3676 8bbbb316-8f01-455a-9d7b-9558da1467de 924c7fe5-f8c9-4916-b6e4-27af6942ffea b3cf2d32-3556-4759-ad8d-1722122be257 f3a05b70-12d5-48ac-aa4a-f861e0adf259 82fb7964-ec7b-4c10-91fd-f796b79b6000 0cfce252-9a67-40f5-84bd-4bb7848c8a1a b3ca359f-dc84-4fcb-908d-50adc1510f2d 162c296a-6e82-43a5-824c-3981764c2be7 d948416f-83d2-498c-8420-292977324028 4c472861-4b72-435f-b3ef-9ba121518f59 b885433f-10f1-4290-b146-4a1a06f87882 887978f4-b0fc-45d4-9f33-e5553fbabc32 f3025807-df4a-49b5-870f-05855316b0d5 5aba6d5c-430f-443e-81cf-2b1c1720fc89 01aab3b2-c984-4546-829b-52311a998012 d1abcfd2-77a9-4240-bd87-3f8164f64849 7a9a7722-024a-4205-8195-f547e7d520ca cbc29ce5-3037-4764-a350-2aacd30c46ed e2c2f6b5-c9bb-4fdd-b0ec-4661e0919da7 b9ee9a29-b187-48a7-8d04-cff62a889e16 82a2a024-07b0-4aa5-9833-08cf3b746989 cf3058c6-c1d9-4e7c-bd7d-3448a605fff3 b2f7ee4c-c8ba-4cdc-b114-861d5a6b1d54 feebc3f3-c579-405d-83f1-4f1cceeebc9e cbb8e179-34cf-4008-9345-866a8376fd17 1d198449-c4e5-44f5-8e50-47711229f6fe 059598b4-6ca5-436d-a089-f5483b20f13a 7af20b04-4627-46ec-8b50-107198cffd28 4338daad-2bc3-4d76-afbb-c97dde2d4700 1625e3e9-182a-4ab1-9a57-8d0ebccce0b4 e02f9869-f1f8-4cf8-bb3c-a7a22531e8eb b5a8638d-f973-432e-94d5-b6c7ceb71b95 c7ee6a2e-40ef-4b84-a46a-3a60c6b160fe 82f57715-a9b2-4cbf-b1db-906ce5d02f3e bf072df1-8e4d-4b31-b084-9d0075d3b574 8e28fb1f-f22f-4b8b-b6ff-c839ac315ead ad88d9d1-93c0-4a4c-8c3c-877cd832ee87 8cdd7e9e-1192-4abd-8c80-47fcb51d3cf3 ee18d573-50ca-4763-a322-d69479a683b5 40a05f84-59c5-499e-bfbe-e49aa67c77a2 23d1b7f7-0219-48c8-8324-36267605799b 91561250-a284-4088-8d99-b38535a492a1 adc07714-c60c-435d-b697-b90e7e4e3169 33545b04-fe63-4808-ad7c-6e06fc99679c 0234aab2-07a9-4475-b892-23227df23e2d 7a7f6122-d9cb-4751-8bec-e2e66b34c465 11dfccd4-9920-42a2-94bb-e046691e85a0 f8e3158e-4c2b-4748-8b25-3966e65fd58e 4e7f4d8a-4b06-4e79-8807-7d3f3b211710 61cc27d8-a120-45ad-a240-e66c12f4ce0c ee360af1-ba0e-4559-a9d2-5c800b988a82 51700c89-399b-491f-90f7-6baa1cd0cf5c 73bceb2b-3f66-46dc-aafe-794b34d8b46f eb7dcd23-7085-4d25-97e1-cfa35a9a295c a9b37ed8-cdee-4e8f-9a23-75ba89cd7d80 19db6370-e2f4-4ac2-8acc-45eadea4e4e6 b0d36808-41f2-4ba5-82be-089605b5dbf2 f9028eab-daa3-4d77-a8d9-c0a0a347157e 1a595210-71aa-4013-b373-6aeeeb55e261 67eaa425-e927-4ed8-aafa-c8b6dc54a21a 2532ba60-1071-4384-a19b-0896bf3a0411 b12ea342-abdf-421d-8c07-a5a3b6b14410 c8135565-7ad8-4ea5-8c66-a1e82337d978 232891f2-f2db-44d4-850e-e45563af4e62 d87ea57d-01dd-4b46-ac61-dfa87a3015ca 1752005b-cee1-4d77-9113-fbb485a45af1 d47d01b2-2cd4-45ee-a2ee-d4ee66a76dcc 32749394-c652-4710-8a36-f0c03199a114 41891bc2-becc-4eb9-8897-0312d1f12bc1 4ecac123-8f30-4cbe-a225-5db0ddb90b0b 9307015a-2bff-4b9b-9ac9-2eb630abde03 c50be455-94c9-4acb-b681-1dc7382d0060 33e0e0f2-066b-4bb0-a8f1-49068322d3ac 3e0489bf-37d9-4fcf-ad37-3674ca5ee2fa 942f1965-2310-4b5a-86a4-988d6a099cb8 b20942d0-133a-4abd-9b5e-8249a48fd999 8f93bf95-de1f-4b12-9431-cf064244c9a4 20c8dabf-664c-49da-a684-99cf4f50cf0e 206e2c88-68de-4b28-99c7-b924d35e5c97 71175f6e-2066-4757-b693-9c927355129c 5160188a-631f-4052-99a1-dfeac74c5077 10b586e4-810e-479c-847b-4e136daf9e50 dcd6a677-02ac-4805-a653-9747b1606cf7 24afe0c2-d92c-4674-9d73-44d52e181066 3129d5d6-5cde-4165-97b9-a9c983a856ed 5f5965f6-0c30-44bc-932f-5832648fea25 8e2b579f-d251-4221-aa43-ac343429cc18 573e9d58-4961-4360-bbfd-46ae68a90327 c30da034-3c8e-4842-a8ce-e881c3d9a00b bbbb02af-8c34-48aa-9d8c-8c9f36a13e87 4f0e0fd7-55c8-4e0b-bec5-ed1ef1aa1964 ba3f5a82-d21c-4a35-b274-a1880a624dd2 9cd476e8-4c68-4369-b498-b243cfc8056b 0c7b50b0-bbc2-4ca9-ba0a-409742128892 f801e050-04c5-4d6e-8395-ca1e0d4f65aa e380731e-b081-4a83-b7df-5875e76b10ca 762c3589-7bcf-41b9-82da-77ce8b992381 f5559dfd-becd-4bd5-bd7e-b5db3f480d59 4a7e029c-9e72-4ad7-96b3-17d94bb9f855 92142354-da17-4145-b79b-31fec101d37b 3a65af19-870b-401d-8ea2-4b2fa6411bf5 3c7db8c3-80c6-4379-8a21-147dcbe237cd 66d72348-584c-4cfa-bc2d-ea2ca090109f e082529a-a4d3-4fc1-a3da-1c78d6b9da30 3137debd-256f-4b6f-8aff-b861a9ad8013 8bc73a02-d024-4fa2-9988-1090a8a2c1bb 39d1adb0-933e-42b7-84d7-e58a61a7f262 ec341c9a-240a-478e-bc7e-b04e2351a09e d10ceba8-32d8-4ab3-a891-e4e67ad37068 383b5d64-9bfe-49be-a062-c0b05e75c763 9c9b127e-45d5-43ec-a552-f9da308661ee aad30f88-4e6d-4fae-a68c-a5c1dcd38b93 c97bd01b-82f1-4e3a-baef-8f8a17f5ec43 df8eb54d-6069-4e3b-890f-bedfd4770a3a 6adc7567-43bd-4d0f-beb7-e9d425863f44 95075962-af9a-4359-9862-5c6f40d492a0 63d191d7-e129-463b-b80d-2fa74236595e bb272634-7453-43ca-9aef-8394d5e6f27e 91cc4d48-793a-4e50-acd7-5dc0168263ad 6f0879f2-9b94-4aa7-bdd7-289567b77a5e a3979369-719d-47b0-86ae-9d3e82ead44e 35c1f639-4cc6-4a5c-990a-574d818fcb7b e332c560-6036-4c38-8d21-169458f2d28e 9909b718-e276-43ac-8979-945b5a45747e 509bb091-2605-4da0-9a7e-c7852e757c50 87074bfa-3b8e-4f7b-b12b-0eff7b81de59 4781aa1b-6efd-4d39-8c9e-e1bd389fa086 a4569b47-5555-4f9f-9676-14f0d951a3e4 e4baf593-7d5d-4468-a689-2fc22311ce4d 4d73d7ad-0795-4b0e-8d09-427cd2d5f9d3 41119a3a-cb42-4e7d-9e40-1c47c5d419cf 874a30e4-a77d-4b58-aa51-94bfaaa632b9 3d45c00f-228f-4377-a040-7afca2398193 1d05e06e-bf47-4d53-9d18-ff1e1b6de554 acaa407c-e066-4e4f-a7b0-3227bf0e00ab d46d6a53-2d10-4cb4-abae-b66726a4fbe2 538c4e19-f251-4373-bdc7-ef44ef103686 7a475686-b505-4941-a899-2d872335f0df 755284fd-8c1f-4f10-9c80-d01001f2cbfd 389f1a9d-2617-4e9d-bccf-ecbc6db7074d ceb07bdb-bf9e-40a2-9448-3c594bf8b6f5 25203ec7-c699-483e-8fa5-beb8a829ec47 06e1204c-753a-431e-976a-3c2c08567445 bb910069-6af4-471a-b5d7-1fae17653f0c 5b0fd3cc-f2f5-48f9-8105-0b44c18215ee 8c9657c0-0ef0-458e-bfe8-dbffdf7d339c 4d17b252-5eee-417c-a920-05e7aa953fbd 44e1881c-44da-4037-9c71-3df5b83acf1b cbf0266f-0303-4308-bcc4-da83f26bd6d4 4c886284-1249-477e-85bc-9170accd1769 8dc35f96-824e-4bd7-89f6-3e649c5837c1 255f3918-a0e3-4ed6-af43-1aa0b9c668ff dec2fda1-680a-40c5-87a1-d4cfe9b04c59 cc2ae7b6-b9de-4b56-b9a2-f8f9d816a136 89744cad-c53b-4861-a21c-cedf1410cdd9 fd48fe01-6745-4766-9063-ebb2b30dccc9 037d3851-7e2a-42e8-b82c-28525660d74c 2b2a52e9-b93a-46dd-8ee2-d2b5edd15479 528de7fa-aa91-4bd6-8677-dfea89bcd67d a5865762-b948-4872-a1bc-8e69fb560029 26f4d97d-80de-4102-9303-d7bb0bc7c9c4 42ad1985-3852-4dcc-a526-aff992145531 8ef03a5c-f70d-4e0c-ae5d-7668f912de8d a00fb9b6-09f7-4079-acc6-86ce28c341c5 81f20b12-c741-4591-91d6-791d2fef1787 5971c78d-fcaf-4321-a301-12b7122f3f89 aa701520-1b97-4971-86f8-d1c7dd4f8983 20ff65ab-b5b1-46e5-b7c9-0939ce63ef6d 36959e55-edb3-45f3-b6b9-9588fec799e6 08e70930-9012-4109-af68-49d30cd999a7 be048ca2-ca20-4481-acfd-f4e06bd85b24 51a1bf59-e663-460a-b255-a45055f4785f 0d1cf58c-6d0a-4648-af21-6f4b2e056280 b7f1442d-b80e-48c0-9a70-23d76d4292cf 1299dad2-5bc1-4575-86ec-bfe7e9db6800 bf8e370e-cc5d-4f1e-92e7-2fec4aa323fc 31959e1c-f475-46e7-8703-246bc829f321 3909ed28-65d4-4dd2-aed3-f75e9946d368 7e84c074-5edb-48cd-bb42-b10d3d3e671a 5b2eea90-3964-4d84-bdd8-37dfd8b0544f c1a37d5f-ffd7-492b-9310-44346488baa8 5c05988c-310a-4863-83ff-e920fd075be2 9f1dcdfd-f5f3-4ad1-aae2-42bfb273e7be 14e898b4-6824-4e48-a79f-01d5cc0996ba 11b704a2-3152-472f-8ef6-740e09614004 34638670-dffd-47e3-a9f0-01958e5ffa57 e3e7557e-579a-4b21-9a91-9fc6b254a7b4 c629e7c1-7928-42e7-b8ac-98ccd9e2a539 a5b1c994-ae42-4eea-a2a9-020eec1cfed7 371cee5c-ff88-42fd-b16c-b493b928b955 e9b31160-0d85-4326-8c5c-c3545ef3ec10 b10bf770-7bc4-41a8-98ac-fb24dc459405 d4f93c2b-8e07-4614-8fe6-915863db7ff7 5608d3de-4df3-49a7-bc42-d9616e0f2ce1 42aaadeb-2bb1-4a39-8738-3f2470135b77 84da7011-fa6c-405c-9ffc-985e70403d8d 68e52e1a-d024-476c-bbb7-2360d31849eb bedc5eb7-dd10-45cf-87d1-a97f6685a961 bd53d380-3be9-4b6e-a652-401d58f743a6 901e18d2-43c0-4d6c-b37b-2ce9faa64827 357807ec-6605-4e01-9961-40e8299aada2 a117fb8a-0290-48b4-822c-4dc1232cbea5 027700a5-e114-461c-b84b-1aedb8b30a08 e71acd1a-929b-4ac0-9d53-36dea9a85d49 ea477d76-525c-44f1-833b-4dbcf6c34281 36744fae-28a3-4bbe-9b43-670540cd59f3 99ba291a-8c33-4d19-a303-3d05cc0c824b 70b2df2b-7007-43d7-b1b1-6445f860a5d0 b38dfd01-d5ef-4768-b0aa-eb5eaf3b4b9b 51289fe8-39aa-4a52-a94e-e5708bfc5e12 f9a0d01a-d8dc-4e52-9acd-ae818887d333 532198cb-297b-4116-a2cc-649e450d57d1 04a9143d-fe35-410e-8709-190048ec0273 6fb49806-f4a8-44fe-904d-2c85045f4513 30c6039e-db9d-4936-9aae-8328c431b520 90471cf7-69ab-4f52-b585-ed89c01d9b51 3d9805d7-7eb3-4629-9657-925179327763 01814e1c-1593-4487-b606-6c2fc52f84f5 8d98984e-4a42-4064-a918-d1e36b82aab7 deb3cf8f-1e7b-4dc2-9585-b024eb8271de afe74c0e-c4ee-4901-8362-29591c4dad81 a57ea467-0c19-4bcb-baab-6c0b7e8e7761 5a36fc7f-4f65-4302-adad-ebae5ed64eb9 a509ad02-6111-4729-b6ff-401cdca69610 50cb2229-f9ef-4f96-8ec7-fed0d6d64d05 f72a1fb4-d192-41d3-843b-82f3bda62f20 9013713a-e59b-4804-bf0f-575c1f15a88a 68c188c2-7a02-4c3b-8e5d-1526df7a4465 af35f944-cc61-4642-9d07-d5419d0f6f5d e78303a4-4d1a-45d3-bb51-38491f29011b 2cca5a53-324e-4c3a-8986-6fec843b359e 69905e03-5146-4c5b-9d2c-406c56e7c64b 293961a8-c71b-49a1-8904-c67bc5fe6818 d368074c-8d13-4f7c-8ba6-727f215f0387 a583fa4e-284d-4b1c-8fe4-d70a06a65ed9 71f95afd-1438-4f8d-b4c9-5dc46a85b372 6f94d6f4-eb16-4b11-bc14-6843a2593949 66f03d0d-ed8f-43db-bc10-e77e445929ad 5ad232fe-973b-44fc-9905-63b9d0d314bd 33ca5a61-afed-4616-8ad4-2c332261bba9 feab3432-161b-4da4-8bca-b1e7620ecf20 6191b64d-1481-450d-80fc-066bdcfbcc89 53064fdc-e854-4ed9-b6b9-8521b6256fef f7ecdeab-e80e-4f92-8ddc-002ee9d37870 0a346165-f056-459c-b7d2-6695061c5356 cc72b1bc-7b6c-4b8a-801f-26da6786fd6f d08228b0-ddc0-4c67-8e7b-1a591e6e81c6 fe61b738-edaa-4197-bb42-63bfc2ff80a8 74a68215-3ce0-4fc5-921c-8cdb1866daea 606aa155-4ede-42c1-af4f-4ec93cac18d6 3d9c2c90-72ed-40fd-a59b-e226156c7ab8 5841641a-031f-45a4-b22e-4d58f16b4283 e5a41821-738d-4ecf-b449-633c3e241684 aebbdfad-3ad2-4144-b6b2-a8b1f33824dc 02109e3a-235d-42e7-94bf-1dc588ff2015 02243872-5f41-4ab5-b2a7-39c3a6f0428c e1250f58-29da-43ee-a808-28579efdd24c 2a9c6dc1-d07c-4425-a0f0-50676052e2c2 b2eeec97-c246-43f8-a7eb-ba237d292dbb 9ecab837-5c67-41b3-bd7e-54a38ac0e493 c0d15d31-701e-4d0e-a4c6-d7b5fb417e10 4efbe363-ed1e-42b9-b6af-4ab12015a9ef ad21f6af-6751-4544-8c87-7a0598260dd4 5f06e371-fbec-44b2-a32a-84260b35b7d3 afb5d237-f4f3-43b9-8447-21734d4562b4 5f904bb9-c11d-4b41-9d38-edad22116384 06b01632-869c-481f-a1f9-ca7a7105b0ea 8867f62b-0b71-4300-8b27-14c2bb09aa89 a814149c-9664-4ee1-b561-665f2177f70c d0c0bf65-88bf-4b29-94c9-faa25bc3a963 557f3d50-1b4b-4a93-b2aa-2e0b38d54943 924da355-52f7-4f1d-a7f3-338f82d0913f 784a327c-9453-4212-99a0-b20a78fb6696 7bba56af-5a40-4a7a-aa29-54b1a58fd653 c0f5f9be-ca37-4bd7-9b85-019169ce2b01 cb81e88c-a98d-4226-9722-e466b2923903 4efa7f39-2849-4606-bec2-245e477e05f7 fffd8692-27b8-4051-bcfe-0f55fa1f7a67 68cbf88b-89c3-4672-a8ae-6f4ae1be402f aa153cf8-858c-4ab0-affe-6df9b5c0e2a0 7e37d8a4-f79b-4c4e-a8a9-9d8a66e55796 feffa898-8d2d-4905-b7b8-a6dc57290cd6 a3b05fb3-7e08-455b-9074-a650dd9b8e71 145f372d-39cd-47e3-886d-4878478cf0bd 0b65f6a4-d7b9-4b06-8c97-482456aaaa93 9536be72-a0f3-4065-ac02-952de91f8343 e9dbd07a-1c19-458a-b8f8-4ff91c98f12b 8174ff07-0280-431b-8394-aee9d29e08aa 6531e595-9417-4390-86a2-a43d72d76d79 3d359336-d75c-4ec9-82fe-e3b3d00a0bed f71cdb4e-332e-44d2-87aa-020a5faadf2e 3d06bd33-b801-4c41-8cad-120525608107 7e5cab55-ad8d-461f-ac2b-322b20552ebc 7ed8c20a-f20d-430f-a7ce-9dfa86599bc9 34daf90f-df1c-42aa-8c8d-c0bd7fa5df0f 9623340b-db22-44c9-ab48-827ea5b63f25 2732007e-ef28-4add-8e7f-31086c3ec105 ffce48a2-5dad-4ae6-affa-2d97036ff8b8 7f59858d-318c-4558-b066-7bd2c45d7f85 43b7aed0-9c4d-45ee-a73c-8adf00505913 e6471076-a16e-4727-b46d-1af91cc12424 fd057dce-5e67-4246-ad45-cdcab4eecad2 9559b700-7b6e-4384-aa07-258ecd87920b e26c5664-2c68-4e6c-bf36-bdea8346f435 34cd2acd-efd9-47e3-8a07-a8a9337347f6 2fdad905-ca1d-4ec4-bf4f-ba47732d6111 5b19929b-542c-415f-b22f-98db0cfadacd cc298701-ab1b-4622-a52e-e71b6110ca2b b92adf24-a9ba-458e-95e7-e6d1bea3a60e 36ed0487-2e73-40b2-a093-dd51462cc272 f7e2274c-4dde-4287-9292-49dc5713d7fd aaaa01a9-439f-4b32-bc72-c5ec783c22d9 f327e0ea-cc53-471e-8ddc-32b58998f0e0 17819651-f656-450a-a53e-a503f31172be 79131ef9-10d7-40a8-ab18-9147f1e59c40 ff226189-fbac-4ce8-91f3-c537d0f6d81e f2234d30-a1bf-4ce7-aa84-f9d1af6fa342 d8278e39-fe36-4fc2-b6eb-387fbb4e64b2 b6d8572b-61c1-44fa-a082-e08cbd9ceed6 0c7b6e86-c4cd-43b4-86f3-6833de508b22 54d731a9-6dbb-4371-8e76-08d60bb966a7 d4f4ca0e-53ff-411f-ae5c-a6c85c63f7eb fb15cc56-438c-43a7-967c-2cd32c024f19 bbb7b983-342f-43a5-8422-7aeef41415dd 07630613-568a-4fed-9093-68b7dd14dde1 d19602d8-0104-4644-9e3e-63e650cb6043 19a71a87-9ec1-4274-b19e-010af0a781bb 676febc9-37bc-43aa-bed1-e3e15f769f53 a6f86e5a-d3ee-4d72-935b-b1764351bd7a e6729e57-a3e7-4bf3-8279-8be6e07aba05 c60b0686-ddbc-4fc7-91f5-f769c7f4717a 2539055a-a029-49c8-a221-20861b297025 4de5bcf0-7764-444c-8e3d-d2b4dddc4c9c bb320f38-b917-4fe8-b189-cba9aa461b14 0d2b1921-c16f-4a09-b10e-6596745f2293 61639819-7084-4013-9b0e-4b341fe6f2e9 fabe9cb1-b516-43f2-b2ea-9e01f38bf78c 218eaadc-756c-4538-b753-9fe670827836 5887cee4-eeb1-4807-baea-d351daeac52d 814ee114-f9ed-445f-ba24-707c67ed2ff3 7b30ad2a-e68c-4b54-b66d-9a8416354d11 83d0c9d4-6f32-484a-b670-747549402cba d0b0bbc7-5117-49fa-8cd2-7ee517bc9f61 d34a9838-bd98-410f-8f2d-d8e0b7e7773e f0e20180-d701-4f5f-baf1-c77bb3f1fa67 9f2f5c88-e37c-4e91-9dd6-d1cad6059181 7a0e277d-9795-4cc7-8316-649b3ed92684 12772567-a383-4de3-9f89-7a9c67e414ba bee765d7-5066-4af6-b427-3e8926ed7e8b 0fcf679d-59a0-4262-881f-2dfa8ae1b8b7 48e58e48-2f4b-4770-ba61-be00273d99b2 ff408660-6d64-4fe8-abe3-2a9645c24ab4 faa06bc2-f552-4e2e-8fb8-5fbf298d898c 35b1da3d-b6f6-4680-9ed8-4fe155694716 605ddc17-f043-4a2d-9262-43ebe02efb8a 2a7db0c3-5db1-4f90-88f0-65b63306207e 26c93040-7846-4c7f-9680-715679b97028 1a068449-3b5e-44c7-ac72-71628d0b9333 4c1faef3-6147-498e-b65b-7eb7c948952e 61f98050-df7f-4fac-8d26-412cdc70279a e7f98cb7-5af0-45a7-a457-0a65d58dc109 9d24f316-0a9a-4615-b384-1e8f62ced4b0 0a4d962f-cb1a-4438-9447-60610eabea40 132942ec-da93-4002-87ce-10bfabc485e8 b417d7b2-31b6-4d66-a74f-9b3d3e53c73f c4decc09-fa69-4503-b5fe-8347929d0154 1f698a4e-50ce-4b9b-b28f-2dda2b950339 82e1c1db-d392-49fb-a18a-adc839485a58 96a26662-4073-4cdc-87ea-e5266129ec1f 64af3661-a308-48d0-b2e0-c912fb3ae683 f31d79e9-572c-44ab-9d14-91d17823efba 5ccaa9f9-d545-4eb7-a275-ecc116d63947 4958d47c-6526-4b68-a39d-fdb7715fe360 0c522ffc-7e1d-4f86-9e37-25bbac8b33e0 6c6d50a3-3d43-4d33-a803-a20ca6454a99 b10bd0e7-e718-4f99-b071-31c40f86951a 658ebb3d-3cea-4b5b-8d94-8269b39a5eaf e4bf2fa8-3cb4-456c-829a-62b78b5e92bc cbb035f8-c057-4589-bb72-1d62f02c9e7c 07c7e4f3-a63a-4294-a16e-b24e6ad1f4ad 3944f10a-ed86-4ac9-91d6-fb86b32e0fda 2be7d072-ba31-4c1e-ad7b-e321b7a171c4 24c0b808-cfd2-449b-ab3a-2d7bf40ee4b1 d592a1ba-7629-4836-bc14-9572fa1d1141 5665555c-e3b9-4fb7-88cc-9004214130c4 c697c64b-9324-43a3-88af-066b32b01543 47cf843a-ead6-4986-b025-49587de072cd 75d76f17-2c81-49b1-9dc9-54a517a2ddd5 37ee31b9-9ea3-466e-b421-953799c17131 a1c74557-66ac-4669-9bae-688f6843cd45 9518407d-bc85-4061-9ff1-c83db9747e61 7f4a9557-b2cb-4f46-b8a4-2dc279ace525 ed00f719-ed40-4594-9b5a-b8e22d41057e 057fa406-e6c2-44eb-9907-cbb68ee345c6 428cb2de-c908-4c23-b9c8-2bfe1f24f8f6 bb1db96a-e130-49ee-a3fe-fb7d94790611 3c92ebbf-cae5-416d-b98f-5d68cdf050e1 80345aad-5dd4-4a77-afce-c8279485d245 738f260d-f4b6-496a-863f-a313211d28bb 6d05f340-2e64-425e-bcde-1abfa96d80e1 920a7161-2e19-480f-9b7f-e8e0590fc2e3 43ee884d-bb11-45ac-a496-d0cc6a9d0d67 9f599ee5-4772-4923-abc6-7bf8695108cb 507d317e-6ff5-4e48-8c10-319bc6cdd62c 215458f3-712d-4c9b-ba38-62e887e6a3a5 6adaa2cc-3d9e-43e7-a416-6600ed96fa53 4361505a-5a28-4bc4-9ab4-f95bc4dfb28b 2bd4fc8c-6a83-4f3c-a9db-e2d4d4dd653c 1948ab6f-8dc9-49be-9048-edd1aabf89fa 3f753764-11fe-41b9-8940-f454ca3677b1 b9d989d1-5f6c-4c47-ba89-326d939ae4cc 0a1cbcf0-7743-45ce-b5d6-b71c4c110bfa b2ee86fe-45e6-4e04-be86-209254417730 686dcb0e-b067-4606-8706-975e56491de0 4d6d898f-079d-445a-b838-91aa59d842b5 21dd1295-5695-4cca-8f33-6526146ffd13 ec9c90fd-4938-4ae9-8bf3-cfc946f9cb0f 8ef19e9d-748d-405a-9785-0569f7da4201 ded6d5d6-3288-4252-9aa6-0309a35c7734 7562f204-3a1b-4934-9127-0e26648b3677 f45ebea7-8794-4a38-b3fe-731e83eaf741 6966cbb4-e5a7-48ee-b8b0-7d33c2b48c3e b63d43d7-92f9-4b29-ba48-d4077f2c1f63 ba3ed237-649e-4982-abe6-65fda6d79cf2 60c2a3e2-cc29-45f6-b2d3-da1bd2120bf7 48e3d0b2-e612-46bc-8c88-a57615497795 60245cf5-cef4-425e-8f3f-85dfc3c2a243 517bb586-407f-4f6f-899e-b60ad9db89cb d768bb10-1a6d-430c-8a2c-30342c8c1e6e 14cf64a9-ff33-4d76-9275-6de71e3c1b28 ad2c1e58-0268-4fac-89e8-96ad76ebd414 029f8cb5-4d03-41ff-8235-3f7255f6a88b f1dcd92e-f4fa-4073-8efa-2d3a4c3c30d1 d5bb69db-3c99-49f4-bfc9-5e9f9219a2e7 12b5d727-5f31-4c1d-a06b-4b23689ed3bc 4eb2895b-e90c-4e84-8d20-932c0c5a89bf fb5c438f-c468-4594-bcd2-0f6940c1a59a 2a595670-237f-434d-b156-6df7944953a5 05efa130-53ad-4986-8176-f6577d7e4bc9 84cc10ce-394b-45a8-926b-7175ff3d5ee7 76fca16c-7f38-4bd3-9456-268adf3102f7 c986740f-79ec-452c-b183-55eea39ec526 02f396bd-fcd9-4a4a-8c19-0586a9b5c454 c6d2e7b2-f506-4767-9ab3-b19c4a027b20 4d160f08-aef3-4f66-afc9-c9925b4c25e7 01d775c0-d009-4034-9fab-3f1a3381b826 7cb996d3-6809-4f13-9a98-c9189d1c3bb9 e06d9244-c11e-4451-a179-70b957f1320e 4a2e7d74-9cea-457b-8696-dcae5aa12269 ff7d89a9-c12c-46ed-8359-bc2e735d0d47 7cf52bf3-5c87-437f-9fab-dce9002ec6fb 651b71d8-c826-4564-ad51-9b1346efb4b7 8f71da26-517e-44fa-b999-c4dda8983b77 0ebaa60d-e315-421c-b25e-fe64dd0e6cad 4bb8621b-1dcf-4e17-959d-61271b497297 8a1664d4-6efc-44ce-9b64-cf286bd4d3b3 65741068-0939-43a9-870e-32ac1e6f0c8e bdc24d22-0f05-4d0b-93e2-c7538749b3b7 d52a467c-f8fb-4d7d-8e00-be3c67365d8c 61204ea0-e1eb-4d07-951f-8eb334909b46 c3d469dd-ddd7-4070-ac02-db06632a1076 bf04ea95-1668-423d-9542-aad9999d3e63 d58bdf5a-7db0-4688-9469-828c6bc41b1b c9c9a77f-1e3f-4e43-8548-8d2dab9e7243 c01ed716-a5ab-4d8f-9c6e-4e1a1edef825 b102d41f-9ed8-47c9-a561-dceebbcf1e74 a6adc7bc-d887-4a1b-b9bb-23865e8227f1 974d4eba-5615-47ca-8b23-658e58fada0d cff52a0e-d128-4542-b2df-3b6c41c40679 7b1a3c44-5499-4449-8371-b4594deb6cd5 da9722a8-3a9b-4592-a57e-9dce0ed0143a 1bad543f-9143-473a-91c1-35ac4e383a2e c2e57176-a241-499d-a3cb-a7cf4ea6a127 de358cb7-3844-444c-accd-b25c63b81b39 7a5ab967-89c9-459b-b540-51224edc4b00 d918b1cd-a1cf-4e1c-9849-99988f455f1f 0891c632-b8e6-4730-849a-19b2929efd33 bc146392-7e15-4c3c-b64c-162cf1b0dd78 6bbcec34-3138-4e2d-bbca-ef58211392ed 4e0afb71-90b1-49c5-bd82-5e6db1ee49e2 3935172d-c3cb-4bb8-ac68-738cdc8f885c acfb5fab-7b19-44b5-b5ba-14232c4723f7 3d20a2bd-e61d-400b-800a-c1b09ff2da80 4b051352-1a56-49d7-81e5-6af11d130631 65f6a05a-b132-47b1-9f14-3b950e00a6ff b29f33c1-8ede-49ca-abce-9abbf8e064b9 59049fab-a1c1-4058-a88d-bcf4dccc0b1d e1671c42-0efa-4fc3-ab81-1b153253b58a c93c0428-eaf0-4e36-ae77-fcc140a3779e e0218571-1688-4010-891a-d009528cf4d8 4ea0a9b9-1fcb-48e6-8e95-1404577f554b bfd238f6-df53-404f-a99d-a92872737365 e080670f-922c-4124-9502-b75710f7b191 8201d33b-4e2a-4630-8264-91b2585edf22 a4ea85e7-4819-4004-aabf-86d7b927d85a f8538d01-0bc6-43b0-8291-de39d986e510 13eaff6b-1aec-40da-95b7-e316c0e22b4f 89c6b771-ae80-4c15-8331-90ea8948ca63 05ca7f86-ab88-4fe6-8774-42fe0249fe39 d14a1417-9598-46e6-ac4c-5baac8e754dc 82e11906-74ad-4de6-8b9e-7910b82fa267 089b418e-b31f-41bc-a907-25e5820eb73a b5776441-fffa-4d81-bfd4-fcf276f137f6 0899f54d-4299-4242-a601-bb049588d6c4 e409b8be-4079-4455-8fab-6fd4430e91fc a74e8984-0d0a-444c-baa4-9a503c1f74a0 dd0fe4b8-1ebd-4d85-8dad-89521f022f46 7ae313d8-ab21-4811-887f-0aa3160099dc 077089f6-0c18-45e1-be78-07d2c7c3a7c4 f26590cc-34cb-4c04-a1a5-151a7bbfa3ff 4a1ccd36-5331-4eed-813a-b3d99a09a7b9 bd85ed51-5478-4026-ac77-c960bd543ec9 820ec20d-dbf1-4ff4-8ea7-02236ed691fc 93c869fe-f116-4213-9f04-04522dfbc1c1 980ce65b-df95-4266-bec8-1177e0744419 08f33d74-0967-4173-8b2c-cde3841efce1 bbd24306-f5b9-43bd-8797-3d29ff60d817 3891fc00-a931-48b0-9780-c5c1958e035e f5650d5f-341c-4aad-9d00-be3139ead16b ea7073ba-5788-4bd5-bec3-e8bcf6582006 e05ff064-1700-4674-be48-45cf81833555 2661c600-27c2-4adf-a75d-5aaa7af2d9f8 6fd247db-4c0e-4f20-8565-27ddd744866e 251a0e46-c4a4-44c7-90f6-d05c97c58648 deb891d9-9530-49a8-92c1-87d678858ace 950c5c8f-1af0-4ae2-96b1-8c1121c67599 a5ecbda7-427d-423f-98f1-84b8c376b5b4 4fb9e1d6-86b3-407d-9ccf-08df69b8d6f6 21185c9d-ea07-4a55-9792-8034d1754687 a6b8f0ec-1e39-42e1-9120-c332aa268a52 1c25e614-c427-4ba0-95b1-f40d3ef0e414 ee723169-a886-49e5-92a0-dd1f488af91c 597b0d63-79bc-40d6-b2f5-8bc95044224d cbb196bc-c617-4db0-a0d3-5d671b0a13e5 69f9fdc7-3038-4804-aa0b-ba99f49ef766 ff59c533-fc01-43c4-965c-30c325d1ecca 7a4cd301-d722-4cde-805a-fbbb4ca9902e 6169daf6-968a-484e-b596-a57736e8db8d a0d68f6c-db96-440f-a421-bbe036aa5c19 f394b74f-eb60-459d-ab2c-ddd7ee456c5c 0fc0e861-0379-4e46-b588-6166ab570055 b94328ae-df3f-473b-9681-8d9578341ff2 3bf2cff5-1fdd-4769-a05c-beecfc466ac7 d723329a-0a29-4d89-a19c-2263c51cee8c d1d723f8-e03a-46b4-99bf-a6c599230288 cd99b156-463e-4866-b125-30828c34797c 657111a7-2cf2-452a-91ae-adf98ce6609b d98fd2f4-6244-4c35-ad79-2f6d3aa5df3a 434ae02e-a5ee-412a-bebe-9b1fdd887410 992a260a-9bdb-48be-8f68-8a83697e80ee 393c5b36-29c6-4435-b9cb-8cec2422d7b0 b39c2cd8-8318-4f85-b84d-be14875d2c4b f0875e40-d7af-49bd-ad7c-fdb135d592c2 9bd6a2d6-db8d-4927-8ee7-cb05a9821d38 f79e2824-ed0a-4eba-aec1-7e64130383b2 a8bd3ed1-347b-4737-ba56-eb9e211c0154 c04f2da1-9367-42d1-9349-d688e1a2b13f d7ba147a-b1f7-4bb4-b156-df6aa5f3435f ac8b9e6e-7da2-4221-a9c5-64fc7b75d97c e93fe628-31eb-496c-9527-913a1d63455b 8be495ea-63cc-4ae1-a685-2c2b5c63a8a0 ba85298f-32f0-4fbe-8d74-76bc4c96aebb 8f35b85f-55dd-4314-b45b-76eed807b712 b23e03be-5fec-4cea-9e34-0e6ef86e08a7 0692c5b8-817a-4dc6-b72a-800d1cfb5bd9 3fb1ffc5-8ad5-4eec-b636-8d449ebac0ad 1278102f-c133-474d-990f-77139a7c932c 0c8463a5-30f6-483a-959c-81dc2c11ebfa f9f28d46-7703-441b-b418-a0fbcbbfe76f c8268748-8f77-4149-b3f1-fc4bacdff985 73902180-828f-451d-b5b5-09d8a4a0cffd 8d86bbad-810f-41bb-a020-d23ac1d74a14 bde9a24b-4dd8-48a0-9784-3be7ded6765b 27544bd6-a0d0-4768-a492-b7833e6d8ccd 025df00a-c96c-45fb-834e-6aa42c1711d8 518896a3-5f39-4971-87d1-75d2e100d678 7bac7811-ce61-441d-8b7b-b3cf903bd115 8cf75bfc-a907-4523-804b-d3fac67f957a fdc93458-630f-4987-bba9-eb786b25ef49 389ac14a-947d-4066-895f-f0e3bbc54274 1183361d-0ce8-44fa-9437-c8f08163328b 16553f50-3fbf-4284-8bcf-8e2356d1f184 830257fa-de09-47d5-9695-88a4c6b51f1c 38b79bef-48ea-4725-8929-1f80f02d1cd2 b0cc3c33-cd58-4472-bc0e-fafbdc54dc0e f9a588c7-7029-4180-9f41-f830f14f99de fa71e1d4-de89-4c13-86d9-b671f4cf928b ae9cd502-105c-49cd-84b6-64b34e67dd08 e9eb42fa-be56-413e-887c-b7c97af4e3ac f74e4fe4-c99b-469b-91a1-58a7b50c75df 5ac83faa-e48f-4469-b4ae-abc53328076f a24f9d0d-a46d-4826-80b3-5fa6cc8a2b7f 768a741d-320f-43e1-a502-2e47e38e4bb3 fa26f930-9012-41cb-9593-f88ba3365f9a f58fec5c-c515-430d-aee9-95cf5ac4faee 7e1dd987-1729-49ee-886d-bf3654ef8817 110f43c1-1484-4cee-bcfc-221d1a9ebb00 4f480865-078f-46e4-aec1-a05f92bd2ffc 209c4384-207c-4747-8f05-dc5873910018 9fa04464-23ff-48dc-9f49-dd1e41d0308d 465f4f1d-3ac2-47fc-b944-611beba7d3ec efc6a912-8c58-443d-afc9-b618eff78140 a511cd59-7293-4ed7-a476-483e2088de60 290839ea-63b5-4d55-8228-709d1fefa691 9198dd7e-b010-45f6-a058-e83756dac93e a1bae18d-d09d-446c-b9be-4d1a0f35443b 065ef318-516f-40dc-a88b-6f3c49c9dbe5 749dc0a2-16ac-4791-b20c-211641912afa e9810eef-d82b-4b49-a0f8-31d381c88baa bf5e76d1-48a4-4e2b-b010-a865d1b6d45e 85e06da0-785b-4be1-b66e-54c9b264eaf6 41b8e44e-ed94-4255-8299-dda715ca9ced aa0d090e-9400-49ec-8db7-7a83157b1317 fd9904a3-0f17-4698-b205-af088e092fc6 0516e92b-dd8e-4725-a4e6-16867819e5a6 ae2e14a5-594c-459d-806c-5efa58c8fbf6 7d327dfa-9625-4b87-b61e-aa3e27a18201 32139382-7718-4d53-9d1e-2e20b34948a8 c1cfe8fa-babc-4eab-a6a6-9ce73c67e0c1 53374e51-c181-441e-a166-4a2357c83715 37e836d3-df52-474b-80b5-887214e9e8bb 741ee697-f021-412c-b51a-60a40942b66a f1689b9b-b9ee-4115-acb6-883347f6a240 8f27e484-a982-4ecf-a0e2-f2a06f01d0c3 f83fa019-b785-4788-8d2b-ef8a09cf2a88 1228d892-c5c6-4ddf-b1b9-26af0884a6f0 f7084718-ecdf-46b5-ae66-cf70ad01c972 ee76276d-555c-4f8b-8d90-ab6dc4ce77fe c6743d40-b332-41e3-bf12-3621557b123d fd2920f1-9097-4b7c-acfc-e68c7032e815 c34f4b12-2c89-4bb0-81aa-034a5351b28e 613250f4-d578-4a5a-b130-4688c1e6d0ea 0363ef20-78c2-4b34-8f98-033d6f9de8a8 c81ecb54-e06b-4ed0-9a87-0f1f1d65a339 57714dc1-3b7c-4d58-b3cf-c56df4b4ad8f 45ea5dfc-56bf-4c5f-81b4-e0664f023a7c 2508f2c9-1ff1-4307-abd8-5e90ff7bd717 70a555d1-d0c9-4509-8fc6-9654888d82dc bc79faf2-0ab5-4a2a-910a-368305a8bed1 f318eb3f-e81e-4e24-a55f-a33d2e36f761 d84b3c54-c8bb-4a44-8d97-efcec715491f f7433a8f-a69d-47e1-a863-1767dadb52d6 d320dfcc-ddb4-4b11-aa59-c252453d851f 5e9c84c0-3ffb-4b4b-8cd8-d689d24863aa 4f7aea9f-749a-4e6b-b63a-791c60d2c1d7 2de5209a-5035-48e9-9923-373b41d4a80d 21723832-0750-4fb4-b039-dea2883bec49 5371871e-58cb-4b07-840e-acc45f5d6c41 f9e41fad-d504-492f-aa17-56a3c8a87cb6 e68bc8c1-e227-45c1-9066-84c6276b0395 01c1166d-0946-4dae-bcfb-c5ca7618e2f3 164f67c5-77ef-4f69-92cf-5bb506b2b8c2 e9796080-68e3-46cd-860b-894876738174 4db61a64-e06c-4036-bc25-f368142cba4c 9c1c0978-73cf-4487-bce5-57288def8cef 240ddd2e-3d28-402a-98f4-1ffa7856a5a8 0dbbdd4c-88bf-49de-95ac-f407fb89a6a0 ecc49d80-8e88-4cf9-92f2-dd4bee8b7337 4cd31b38-41a5-4b71-bf1b-58e814755649 ba067c26-f6a2-4e5e-ab1a-ade0d66ce1e8 c3808cef-7299-49a2-bfd8-aa656d260404 8c4b4912-e155-421c-a64c-aabeb3acaedb 19b71d19-b376-4f6e-af05-f128f47a36f0 6de8d2f1-7a56-4938-8408-c5ecdd79489f 860af0e3-d6cc-49d9-8f22-e3ed97f75de8 206e28a2-6a02-47fb-879c-010010c2800b 5551b800-e0cd-4296-b84a-11f24090c48e 810abba1-5334-47c6-b48d-ef32c8a7bb84 2b2f9346-536e-404a-869b-e4858b02bba2 6abb6b31-6587-4cda-8c84-191e215729e4 afe2154e-4c01-4a59-a161-12f4241f3492 8e7e751b-ea97-4394-abe0-d65556d02f62 822405de-2224-4c71-8aaa-f9d54e1caf38 dd5ae13e-2978-4e86-a9f4-85bf19cf46af aec765f2-9405-48fe-8457-bd06be7f5c8e 286fb497-91da-456a-bc6f-b626237537ad 3f482c88-d26c-494c-9827-596270c818fc 3eed8515-29e5-4388-86fd-e2778eda1373 dd368156-7901-498d-8de2-a8207f68ab30 d18d06e3-9152-40fd-9390-6cfc0890f22b 12a9dd70-0033-4133-a19b-af2b3389a1c9 60b7a968-ad16-47f5-b004-a52fb956c233 d0e7d1a0-baae-48a6-ab4a-c4a372ee19d9 f0d77b7c-230a-4a58-b286-1d17c6983ae2 afe12709-716e-4f54-a526-2058fe1baf7b a40e8879-f028-4382-a2b2-7de0b0e60176 33a23a2e-c0bb-4fd4-b0f9-10cf67053536 f26d17d8-8c28-489a-867f-e3abb8b8b24f 680df7c4-220e-4717-9efe-fb7b322d8a52 2c1e85f5-91d4-4a98-8d5d-16e53e0a723a e47a683f-a9b0-4b65-8b44-12b9c62d7fd1 43f79b8a-a758-4b3c-90fa-f67585b087f3 199b4da5-1476-4459-841a-4b063d8704b1 478cfc82-0763-433c-827f-610da4ff5a9a e39292e4-3d65-430b-98ae-b24deff3ecaa 97ee5e37-e309-4773-8ece-758d8bcb6809 66c2f2f6-fed2-4af5-981e-afbf5bdbe50e 82afb04a-6bce-4c11-93ad-528190026b79 da3c1fcc-4d22-416c-a1e3-605a9474931a 9c1124f2-02b0-4073-825d-e97d54bbc353 328ba36b-66ab-4b76-8d10-a2f819de0091 afbe44f5-751e-4acb-a8c3-65661ef4e3d5 5851cb7a-0512-463e-8440-be020373a4c8 1180118c-39b7-457d-a1c0-4130d3773d8c 36323baf-9374-438c-8835-3891efa2b34b 2a2a3693-dd76-4a0f-bc78-f5c6f6675659 2957e9f6-489f-4ccf-8a03-cdd2b92c9896 e5be81a9-b57a-41f0-acc0-602b9b236dcf f51ebcf2-4b87-4767-9706-b87e171a5e24 813df65b-eb97-49ea-b17f-b39d4fc7abd4 ddad2253-8659-4185-8e59-de105a4e36b3 80962688-6d1f-4708-b324-195eccc6a8c1 86ae6656-efef-4f8e-bf7c-841641dd92cb 6a1090f2-9438-4622-a4e5-15e2fdb2aac4 81bcbc62-402c-4532-9cee-82b0e1e1220e 49479db7-02f5-4749-8be9-648bfd9c7f70 52707894-c9f9-4de6-81e2-6f2d3c20ee68 ba7c5402-e7b4-4b4a-931a-19a23b7ee9fb c52b0c44-af53-4318-b38d-43ef625e7128 db201d17-13cf-4896-ab0c-1100af7db08d 4b9ac9f0-e7e8-4ad0-948f-3755b83d8ff3 6aeb19e0-fe7c-4401-9d3c-8d95b6e70ff1 5cea4550-c3c2-4537-ad75-5ed167e26a3b 9a000888-d732-4850-9574-817ecad9fde3 a47fd65a-7401-47fa-9700-730a4a8abbcc 0370ebef-e0be-4b9b-90c0-2fd3c56d1870 a2d61c51-4518-41e7-8d1a-76e7f96cdbb1 6264c20b-50a4-402b-ace3-164ff80bf833 5ca28666-26d0-4f2e-beed-bba1fd882cab 954fcbd7-730d-49d8-8460-ed8eb9deb50e ef6037f8-532f-40b9-bfbf-bf061c78a9ee 684ddf03-ac04-468a-82a7-3ca18746d18d e491d860-295e-4ee9-8236-df2a9c3e90d5 2d0352cf-3a9a-483f-af0e-d389393085ca e7697194-5f41-4045-8b54-2cf5b33e7536 42052beb-1131-4a88-a254-29dc71f11b78 628edfa4-8690-41b2-9e28-032bf62f5ac2 d1603205-b47b-47e4-bbce-bdcd73b59d8d cd67be44-5740-47f8-a447-67eb253bfa5e 2a00411c-f214-4bb0-a173-ed4ffbb49c28 2ce4081e-b5b5-4793-bdc1-42e78757d421 4f4eb1ba-0200-42d8-b0a1-7ee27503d9d7 ec60e3cb-be63-4e56-80f7-dd4bfb614eed b3b04226-76c3-4258-80ea-8758bb94e930 e832f97b-3c66-4b51-9988-e321baa727f9 9eba0bf5-f589-4bb4-b0c2-cd0f3fc0ba0d 480de9b2-fb30-47a6-bae0-9f5859303741 9b81e046-2654-4cbf-82af-3e61d6794332 081c1ccf-0a55-481c-a318-830282285800 4e80e72a-058d-4f16-a293-0d90a30ec3f0 7a2fe558-76d8-4664-b77d-f4717d0892b7 7b7a6a47-0f09-4913-abf9-fa66fc6ee2a8 dba072c6-3823-47cb-8960-c02a9420126d 5864bdd1-a9dc-4090-a83d-b686d5fc1da3 bddafaff-7325-46d9-a109-00a4ea33d42d ffec8730-b638-475e-a4c7-47e2d4287f59 d31ac446-51b3-4082-aa7c-8d8132ddff4d 4f77e44f-bfe7-44a3-b33c-2c546cbfae49 d1171c7c-d95d-48a5-a98b-965e3e720d00 3f19c431-efd2-4585-9eb5-e5449b1782c7 c44eea33-6c07-4b17-9574-ffeedca449a7 41d9f1de-05d0-4fc6-8194-7b38f9034f0e aefd3163-196e-4e0a-ab61-28faf8054405 c3485fb5-d0b0-4a7c-9173-a376ab03e563 52b339be-1268-4051-adf0-90ae08555880 2e708e9b-4022-4953-a896-022944fdb997 6b473ece-f63a-45c4-8c99-5cd856a44642 41902129-72ad-45dd-9719-0f07134d8276 9528c631-1eb3-4f5f-9a5f-6749e4ff6c95 703ff9d2-672b-4294-afb2-780942994d6a 962b45df-5ca3-4d39-9a64-01ccea83663e 32f06fdb-08f0-42db-ba0c-b767404f57c3 7b935497-3734-406c-8428-a8859cde9962 0b291747-6d5d-4ffe-9500-427e52706d41 9f6253e7-241a-4c9f-86c5-408a12d96f94 d222fae6-b7d4-4976-a52a-840e15d81f23 b4acbfe2-f303-4596-b934-2672e6842dcd 4ff4b78f-cb55-4a8d-9a75-6159d9b251de 45bcd6b8-bb84-41fd-8e59-aea2789f6346 4b69ba44-8f52-4208-a5ac-f687fc573ac6 7f0a9a16-031d-4420-85b3-23961295f1c4 4f990fa0-4829-427b-96fe-bf69234f3ebf 49e2cd56-7ce2-4b73-ac0d-5236454a7724 10aa8336-7e28-427b-be29-3216026022dd 6b21b6b6-f117-48f4-a1ff-391faf1ca08e 11e9231e-7c48-4280-a33c-0064e9561b9f d73eddfe-abbe-4055-b76d-21be1936f6f2 c935cbdc-1a01-4dbf-86df-912e29cb9503 ff7c600c-c70e-4f17-b011-60953f4f91f2 3965670d-8271-4aed-9089-14373caea4de df4bc7c7-99e3-40d1-b130-6eb6c534bdd6 f52635e0-4529-4bf9-a4aa-e4c635e89e83 429418c5-029e-4bf7-a955-c7a6a6fe22d2 d6b10f34-8fb7-41e4-850d-aca7b9486de0 83045e1e-80aa-43ac-a0ea-9a461662fe99 057954b2-6e8d-4383-b3e8-895b8e811971 aa2a7c3f-2bd7-4a49-a9ce-08866f3884aa 116704df-47aa-4d72-bdec-d774e48f0a11 2055303e-1a57-4fd4-a967-0f8d9c31b122 02c12d2d-6330-48fb-928b-c4a86d07d280 f40d8e96-a440-4f13-ba8d-5d5c42d6ad33 7a450d80-92bd-4a70-9071-5474c08fc8e6 6b55efd7-b949-443c-ba50-2c4a4d58a526 62181761-bb58-4c33-86d2-be831387174d 7237895c-1d5c-43d5-86d0-9781e76b9f14 9d185845-c0e0-4585-9864-4d594764a8fb 0704565f-e93a-4040-83d0-4f948c44a8f0 eb3da6c4-bc54-452a-82db-f0c9d755b271 dc89c745-7817-4a5a-9675-b0f1ac55b859 4bd5b498-c4a1-48b0-97e2-214987c5dd80 55c9a16a-c9fb-4f99-9fa2-767d346e60ee 2e738eb1-2a86-4076-95e0-72fa5b17bae4 0d8c6d5e-d6dd-41ec-b000-08500a69a214 1c48d3e1-72a4-4ecb-8f87-a7a9bea1d088 bc8cd975-201e-439f-a8af-01a78e15c6a6 ae4be024-840b-452d-8de5-3efbdfbf5798 3977ae2c-42db-4d77-a95e-4498292e9c97 124a76fe-d5db-4a95-8c4e-28bc7e442a53 2caaa19e-5348-4d55-9fff-e4eb798fe85b fac50bd0-28ce-42bc-a1a9-0aacaf2d2577 d70c7020-a6c9-43c1-a82d-531cab7d9f9b 0985b0be-5e70-4d85-9fe2-25117abe918b 7498ef37-29c8-469b-980b-b0ca92bc443e 864fc28a-01bf-43d0-a87d-0f0d7d5bfdee bf9e4f3e-b42f-44cb-a178-e1203e735ff5 b889b399-b16b-4b7d-a515-152048d94424 f5451478-5c15-4c1f-81f4-f32acdf926d5 849fe8b5-ca4f-438f-a4e5-008f3506f287 f9319a81-d27b-4400-869e-c607c61580bc 07bb3ac8-05d1-4d65-9f83-6ac7fda60fd4 a1b84b23-2180-4153-b8e1-77ab8dc8eef8 84129210-5d29-4cd1-aac8-c1a6a4735d8d b94d8012-0572-49e4-bdd9-7546fe1033b2 c1b7d272-1fe7-474a-8fa5-baa6dd996d7d 4f4daeba-484c-443a-b632-ab722cb13ad4 6d3972ad-3b32-4d43-998f-0e54f8ffd6ed b9c76667-512a-43c1-8afa-d9b94886696f 89f8cb76-4450-48ea-88ed-01bcf2c65a0d c9b4964b-8c54-44f2-9a03-597523a792b5 07a72ef5-73ad-452b-9f51-38bd80bde8f1 68b62fa8-1f65-43b8-9852-c2c51bd3aa40 0283f53e-704f-4318-b33f-1980a592f640 8c7e63b3-b288-40fb-a134-cee3d9b95037 5fce800c-8ed2-4960-a776-cae0a7381a54 66f2c593-1429-4c97-aed0-7d3ed398c1de 183c353f-5ea2-4978-8dd4-7fd0ab89ea6a efdc0dfb-82d8-4b22-bad8-46aea5e0c58b bf80a0d4-6329-4727-959e-ce1c6344b527 8d11f23d-72a6-48ae-baaa-fb5f3f145295 fc334c33-fc1e-4988-857c-97385df024f8 f4037cbc-8771-426b-a503-ee81f6dff656 dd3ead03-1091-41fb-8338-25956c85a951 e6c7a3d8-9289-4774-a735-619c275d2e87 04a7a59d-282a-43f3-bf09-63c289c42d47 85c6a094-5d6c-4e35-97bb-a2fa1b5802e4 701be2fe-b48e-49c4-b4bd-1163819f42ef 627a94e1-4620-4761-ba9f-f06ae7f3e36a b8632531-4074-403f-b064-f38b90103ab0 39a14614-a35f-4de2-ac4d-0efb2a776851 1ed85897-e29a-429c-8ca2-da0f74c304c4 3050e8c6-a8ec-43f0-8028-32af745542e2 930ff7fc-48d0-4d1c-8114-f0fb871b5137 3dd54dc2-6930-4ec0-8b3e-4143b2055810 5dc6e4d2-9a90-44fd-998a-3f11c422e926 ce9885ae-6b35-43e4-8cb9-07d2cacb6d2b e18684a3-f0de-4433-98e7-4cf172d74c4f 43611af6-305c-4134-8039-ffe1e2f253f9 27fd4c84-c01e-4769-acec-b49dcf549556 1d068d17-53bf-4f20-abe5-859490f29b4d 92a17174-fb4e-4e2b-be4e-d1a06116bb43 de621a54-8c4a-4144-a454-b58ca9c22ad5 81107494-76dc-4cf8-9cbf-f43f1d8e94b1 9027a3f4-bce2-499f-b853-cac0ba133586 bd0b646b-dbe2-45f2-afc7-31f0c03c230c fcbfaa65-886a-451c-b35f-95e802c60ea3 1677b358-4d0c-4660-95d3-b3fef2fb977b 3a25e2d7-a5d2-4adf-b87d-dfb7b0165729 af03d1a8-017a-41cb-b89c-97770833c947 64bded20-bf1a-4017-af0f-0058c289287e 633e3be2-d96b-4e8d-aa63-d88c32821202 d4319d9a-e572-4c01-a4e2-728da19699af df3c89bd-8312-49ab-9da8-e9495bfe22ae cf96861c-72dd-4ce3-bb22-6a646740987e 8e4e0f3d-de24-451c-b6ba-5f7bf944eb3d 91baa993-16b3-4ba0-b428-142af204697a aec8e93a-44ed-4877-91cd-1a2f3c89c64d 866c3eba-ff08-4842-982f-03befe8a943c 9b67ac25-bcdb-491e-9dd4-7d9b13bbb8b1 10e1fb35-1cf4-4a95-a073-7b0a6e2110e6 95ff8245-b6ab-446f-bab3-63a660dc7436 fdfb41c0-448e-4d35-8583-84e6596ae883 ca8db58b-6e83-472c-ab20-ff3d4ed31907 004c118c-0bf5-47d4-8b13-435c165df1db 694c2073-b273-446c-9118-80fcb3130ec9 2baac554-e0c8-4b34-a85a-4c9930d9f929 ddb53783-d07f-4260-a51c-f05db4b53a3e dd0aabff-e914-4c3f-a315-bf85dc4623e1 1e3387da-8674-4bbc-82de-f8c51e7638a2 ed77ec9e-1f9f-4c3e-bda1-c9091d96c871 914fb587-0cb6-4e60-98cb-c33e458567e3 86490b28-710c-4cc4-a974-cf2cdaaa2eb8 2f11ac3e-e24d-4c65-a3ed-abc4360ee18b 1080c27f-74d5-4111-a245-e1c85fe1cb9c 7e3784aa-931f-48cb-89d6-5d23594c05f2 5ad48597-3ba9-4210-9e42-18611c28f84e 842121f1-7f51-4a3b-8312-6464ba267fca ab46fa5e-f717-4da1-83f7-4026ec3472b2 cb8129de-11ec-4c67-ac64-0441487614f4 a33c5f58-b3ea-41c3-9837-b5a4d1ffe262 8911d488-3b80-4620-be4e-b49e2ddb9299 6c5b0bb4-251b-4a94-be8c-85b0df7788ee 3e3be4c9-d5e8-436c-8d78-9a3ae0bc6aba ce2d5c38-a6cf-4b11-b824-a80d3222639c 8aa718c3-46a6-4f2e-a35a-58c045da3b66 2d717b04-4fb6-4e5a-8291-17879c47d766 9113b554-33d6-4008-aeb3-337fceac4693 3a8f9e2d-0c5b-4b94-b2a9-890d7d19805e f0a248fb-e333-48c3-8ac2-93a9397df87f ab1b125b-da9e-41c3-b391-379f5649bec8 d1bf8b83-5db0-4542-bf52-8758d788147f fcf2ed3a-f55a-4768-ae37-5246b20efb66 de39cb2f-4c97-4ffa-995c-256816bf271a 795a0128-b2a4-486f-9dfb-0f8756f30df8 4abd3b95-bfab-4556-9381-bd805aaa4e44 9905bade-10c7-4fb6-b7b8-9f23a046eff5 e86bb2b1-07ab-4b0d-92f2-75e3efb49160 f683fafb-6816-4259-90a6-9321da5ec512 6cab7234-afea-491d-8dcc-0d510be86258 55ba6c08-7acc-4a84-b476-47bf41422927 8748da84-f7e5-4bf2-8bf7-2e6be59b18c0 dc6283ed-c273-40fb-81d0-2b7912b3e7d1 d974b6fe-a047-48e5-92f7-4d25b6d592c9 5a4e8174-f0f0-456b-9e99-d489f6158f62 1c674164-ae4f-4402-966d-86ad538e008e c8f5b222-63a0-4fe7-8de9-33b1e77d702b 26f069f7-055d-4892-92cc-86553150f6d0 3d49ce8a-ba39-4952-9a8f-3dbaf4ba4fee 31340a10-4bab-4eb5-8b5b-e90782261ff9 f8bf8a98-0685-40bc-9519-ab3710ba2684 beba66ef-78cc-42c1-9a19-25a7fe4f4cc6 539f5169-95e2-4da4-8c5b-da92976cb725 f24da42c-b60e-4e85-913d-1eb90a25f5e7 926c5da1-461e-4069-a270-70c76c8f423f d4d0d497-49f4-4e1d-8f98-8b8e917be73e 4bba8653-c780-4657-9a4b-dc51c4101421 16b1ce02-9480-421c-b37b-30d36ffe23b8 e5ea0c16-fb67-4bf0-a349-2d148bf8fdf7 ffcfee57-5d03-4710-8cab-92d5b76940e5 0e1d5ce3-2dce-4fd9-ba66-047f7b5d0dd6 3c63f377-a597-46bf-96e6-e71cd2335c37 40c51073-425d-43a1-8ec1-6d7f2902b818 c348c97c-4033-40bd-a9bc-6526ca8f7cb5 ee100ac4-f34a-4374-a18b-053c0b53909f 416479ac-7831-4138-9243-6d0aadf143d8 b1e23b80-22d7-40f5-8a5e-4c03ef544742 4b350329-9db0-46b5-a023-1b362981ca34 2b77954d-aaea-4a2e-8cfc-b7eeeb0af8d6 3c95634d-c783-47c5-ac90-4e4d1ec4a02f ab840da1-788d-4ec7-8b54-8a6c8fbce10a f2946401-773a-4748-8c33-900680589b5a 0ce16eaf-692e-4c3e-9b6a-8552a9e81261 bf41b15a-14bc-43a6-9ef6-69df01b35719 9efc6c97-d955-4fec-ae95-b0cd07346a9b 0852519b-edfc-41a1-a57c-cb44822b535e 6e6aa73a-294d-44f8-9acf-f0bc71dc502b c659ed65-6035-4c12-b4ac-66a8362a54e5 08167a74-200f-4b7c-9e8b-1bf847dce803 5e0c088b-c67c-4057-ba68-8fadc0eb611f d20c298d-4b00-45d1-8c48-638a46404faa 02bfefba-74aa-4af8-beca-34d9d91b2174 a2d59df4-b25a-4b68-ac01-3aa13cb1ca54 8389cdb7-2f42-4b3b-8aa3-b9b9dc25fa2d 8fbbca0c-5eac-4ca3-845f-5936ff6a59ec 34f890ce-3cd3-415f-b696-363208b6ccd8 0b79d08a-19c3-40ef-aa63-db821d022046 147a93ce-8bc5-40b2-a00c-2958a7ef9137 cba09bec-238e-4898-a8d7-8c0bf79f3eab 917fe2ab-52d6-4c65-b170-ee3da3ad671f 92567d5b-28c6-404f-8002-ee9ebf0e6590 eef4f107-0661-4d1d-8884-826220a7fd9f f879b14f-5527-4e80-8622-a02cdf528a60 0218ada6-9c4c-442b-81ae-adb17886ed69 8cf77e12-0339-4d57-a408-9a4cb74b5415 aabceebb-57d1-4ca6-81b2-aed910d9f7c1 4cc4d21b-c43e-4c5f-ae71-527eafeb0230 b977b911-2c25-4ad3-9321-8ec6bed8b69f e163b653-c3f8-4153-94b4-ec1eb6452542 3a449869-c4da-4331-a6fd-8bd3e4f6b527 3c71a2df-313c-4408-8b1b-7dcc72ad76f9 2afe4aab-6ef4-448d-8932-409fa4149527 af851173-727e-45e6-8831-c53b6561c961 3384fda2-2a33-4ef8-a5a4-e3cb2f5f6d52 835a1312-ed79-46a2-9efc-c6ddfe233dbb 0a5d03f2-5f9d-4b30-932b-e6ed65f2fd61 ce317186-014d-436d-939f-aafdf5a3083f 783c9420-92df-42e3-b5a7-fafe8e48ceb2 f2c950e1-90df-4e49-883e-19e92aab30fc 97d09c5d-00ec-4df9-ad38-c3ff73952a01 3b377eef-2e88-4c70-a3fa-8a8788864385 218abb43-d1dd-4777-9d22-0440912538bf 0d137e97-8bc7-4a34-b609-a2140e9211de e7501d99-4a8a-4e71-b5f0-02e1da6e2589 06eacbce-7e46-47b1-b15e-6dddf72136eb 8f0cfdd8-6fcf-423e-b795-16d0cea41d2f 542abf90-7d7d-49cf-9f2e-1a4a4825ff4a ad154f8f-d29f-44d1-a933-00785c5f9d1b 0d9c379e-7930-48ee-96e6-c72970304367 7016cc13-4ee8-472a-b4ab-51b0b7c0bb06 eaed56fd-b808-47fc-8123-5018e4cd0a55 598053e6-dfee-41cb-a35b-d53ba51d2b61 952fcdbf-4a53-4326-9621-9e820757fc33 54e4f8df-ed6c-4478-8a76-abd0630c2abf b9ebfd4c-30bb-4c09-8e28-b6b78b50d14f e215d977-9e57-4e77-821c-f6b7d0b3c163 909064fd-0369-4f75-85e7-58e8d5367d5e 40ffc393-b5ba-42fb-b032-393c04855ec7 200aabe9-5a47-4ed8-ae34-c7753ccbf0d7 418f595b-ed8f-435f-a6fb-f3fcabd8da21 d1f86cba-2843-4062-8511-d87751577413 be6b4f36-98b8-4e60-95e0-c31424e7f420 eea7582c-dd34-433f-afca-ccaf831265f9 147b9ec8-2f0d-42aa-98b4-46bf26a32b80 c62b7d69-6b60-4b5e-9b5a-e959488e2dca 9200f02d-0a6e-4954-961f-5fec72a80744 fd708d56-432d-4314-883a-e84308187a83 c0b3ed3c-b69d-453b-b59b-d65f149a531e e11cc252-5603-44b1-beb6-ed7be4a8f282 73a34776-e15d-4b5b-ad29-cadccb9ca18e fb9dfaba-958f-4ce3-828b-b0797683e617 b58b5634-9b9a-442a-96e7-c5d58f59f8ac 797c7279-8bbd-4afd-b60f-3e8a632250e2 6f814606-30c5-49cb-9d78-198c72db3e35 d70cfced-2597-4dd7-8237-8cfabdab8474 33159a88-bdc6-4852-83b8-af3ebcb38f71 865ec9b5-1676-4449-bf94-469afc69c381 a22e22c1-1d3a-44b9-86e0-5aa699e104a6 c9c1791a-379c-416d-a13e-157fb992b529 13ab3dd1-fa9f-43e0-9f54-a93a4e5c670e 2491d5cc-5552-4de6-ae41-d55450715226 aef07e87-7c19-4584-bc35-dc2514441daa 94551d1c-174f-431a-bd69-0f850594b111 baf2aa48-ea9f-4528-bbf3-fea95c824889 83602a50-8eda-4e0b-b466-b6028426f06b 050563a9-6cac-44c9-b875-12517c58296a 65fc19ef-435b-454c-a707-b0111ad1a7e9 16b663a6-fdcf-41fe-80e7-9b05ce3cb819 75023141-fd93-4d82-9495-43da18bc269e 62af744a-939c-478e-aa97-de5c040e2104 7358cba4-fba2-4e2e-b394-2a2700520976 6ad198c6-b3e3-4e26-b5b2-e0de1aae874d 94c14909-93c7-4709-9956-23e0613ba3da 882eb309-4a5e-43ff-8327-b8385f2f6968 93714ed2-4180-455f-82ed-ce2959389169 c5153a5a-d586-4fd7-9e87-7c4ad6b1e0a0 d17906fc-fd97-45d7-a02f-d2c2dfe36d2e 56990d00-93f0-46e6-a8c8-55fc8e53dbf2 0472f3ec-50e2-409d-b99c-219ae0bcb3c5 056eca51-caf4-4aab-bde5-4a4b82ac7f22 896ebbd3-512c-41c6-894f-d6068fe2cb5e a275e987-ee5c-4a87-b0e0-921fe17e24c7 8e25597b-b14d-45bc-b4c2-1d4086f76b89 a4c40b7d-6f38-4889-bb4f-036fc2e7530b 9ac4aeb4-3797-42f1-be5c-75e4f35c9db2 f14e29bf-882d-43e8-b90b-624dbb9949ba aabc3a4f-c587-4c7d-bec8-c11e8f3c8f2d b7fc1534-c2f1-446e-97ae-7c1affb74757 c4a7395a-d91c-46d3-baeb-29dfe4e4bd0f 4b9e3fc1-4943-41d1-8473-08a2242eb3d0 f89ed015-3ded-4db5-9c18-5a5efa9021ab 2b2db817-8002-4fe9-9d95-f6e8c811e256 a885853d-456d-4a36-8f68-3815af25ac75 a4315681-2395-4ad2-a88b-6d0a74206466 57bd9e4a-3ccc-4526-b4b1-a9fe082d21fd 4107236f-076d-46c2-820b-a6157b3c152d 8e1ad4d2-1920-4a79-9a75-b20306472321 15131a02-9f40-41aa-83ea-58925232c923 33384e0c-057b-4434-8f25-ce02ae7375ee 1d6f256d-736a-49be-aeea-838487ef91d4 6b0322cc-0146-416c-b691-355bd2af4289 188b3523-e5a1-4778-a2a8-6d78f95a0e57 45af7214-045d-4a1d-8be3-87c40db01c1b bda6be87-cce5-4331-8d5c-7a54d7c3e68f 4a276941-8218-48b8-99e8-eb16f648971d cb27f549-f4a2-4b01-8c1e-951310acb378 7158aedb-159a-4416-a0db-1c0670d23d64 61247fc3-4bb4-4730-b501-e4566bcd9f0b 5534daf7-b6df-4ddd-b25e-2f78a1d6dee0 a4e5dc82-46a8-440f-9a19-b5405ef13066 2e596224-3e43-4a48-96fa-3eb4ebf4ffcc 10282156-ece6-49a6-a954-5d88fb69b68f 85bd4a57-6803-4318-8a14-59ed4c4dc1a5 586f48e7-8a7f-4c3b-9dc8-ad3d3aa60a6c d64029c7-04d1-454a-92d2-4eaba3a7ba6d ee954451-0fe1-4ada-afbf-9398691f60c2 d0004eec-5dfd-48b2-ac16-f864b05fc2c1 612b3c3e-8e0b-454e-a15b-d841ae8585a2 61878b28-2a6d-4965-8d45-08f4525c0bac fc8103d1-2cf2-4ca9-aada-1cccf3d02d8b c44ce969-04fe-443f-b78f-1405cefe713b 22c5a4d0-c894-4ac7-89f5-8765522b389f 3984d2a1-44e5-46ac-b79c-64ca09dec6fc 5a8ba37e-2765-4430-aea8-1635933af686 701e7a75-c3fc-4499-9d1c-2cd1ae284f57 8c6cc91c-8496-4929-984e-5381319db71e 710c7cfc-5fc7-46c1-a097-b6e42d9a70ba e2c5b3f7-2acf-4cd8-b168-9c2fdb184d8c fa7f33e3-9128-4bb5-9bce-5b5cc3a66eb7 ae023a08-d753-4c2e-be0c-2731a6724e46 739603ba-8451-4c40-a879-147c4490c0f1 c21966ac-2b0a-46e3-8904-d220fb47118d facb22ba-32b2-4e20-ba0f-407030b4ea60 f95ad56c-a9e0-49e1-985a-bee1cf1999b3 dae8e47c-1592-44ba-b9a5-538c450a0dd6 ef5cd3a3-c4d9-4f01-82da-0cf87f2c1386 cc2908cf-d6c4-44c3-a4b4-b924bf5bb060 e0426542-5951-40cd-b4f1-e03bfbc3280a a2b7e0ee-3348-4d3e-9fad-98aac7d86344 58393e41-3941-4db3-86ef-1dfd32720077 15e0ad27-e29c-44ca-b6d8-0da3c144eca8 87c71437-723c-4002-90af-63a4f19c7240 e267c63f-29e8-4a74-8ffd-9a71d62f6e7d 76273b23-0e19-471f-877a-4edabb079448 c5f8e6cd-9b62-45ad-aab9-6c7c76d97026 ca7e2ccd-303e-43c5-adbb-3c172b7b381f a5eda522-1196-4ca3-ad79-d20650ac6706 827d38b4-f916-418d-b0b6-a9474498f7ad 043c1298-8184-4564-aacb-fd64daf2ddd6 4c70046e-cbb8-4bae-9122-22a4041b9c18 7eafff23-4a3b-47c4-99e0-0976630c91ff 7d13d798-c059-4884-92b5-90eccc192416 1085ae94-913c-4bc1-b849-2b4b68abbaf6 1a1875e0-7c11-43a8-ba52-8281139c649a 7e701f9e-0de7-48e7-980e-13c98f10cac5 21c2ab33-97a7-4215-973e-7ee4b02cc1fb 34e118a2-a5bb-4ca1-8a3d-d022441d3dbd fdd0e088-97eb-4f1f-be0d-54a1f9c83e42 f1de45d1-2273-4844-b5db-c52dd448312e eab0b6da-8701-4045-9e87-ed436be938a5 7c31abd6-7671-4e0b-9d8a-b7a88f34cf33 f55e6639-ad1d-4789-bc11-a6683aed8a55 657f0391-59ec-4f89-99fe-f914d6a7a4c1 3364a970-57fa-4a2d-8388-79dd143fc228 ab944204-f6ef-44d8-abc2-0367c82b8d24 8f84e485-a0f2-4607-b8f0-59a1b2f3ffc7 abee13c8-2490-4beb-bfa0-cabaf8322b2a d1955966-6dea-4975-8518-cd6b0e3e718c 86a34223-b52d-4b5d-8011-08dab7791a3d 3b8f0163-8462-41a5-aaad-63026bf6de71 e5c8cac2-2d34-4274-b1d1-03432fa9bd62 e4eb30d6-7317-4a91-b778-57adf8afe232 3d11465b-b4df-45fd-b9c4-c45d985b49e4 a0fab2da-2a94-4361-839a-90c3d0772867 91a520e1-71a7-4264-b06e-d17b5ee1bd3a 2b49f6b6-44cb-4bd5-a83a-76897e4e0399 7310e7b3-832d-4cdf-a635-f564940a0a37 c3977e45-2d26-4937-9710-6604f6ffaed5 0b4bf336-ec55-4114-b04d-86b980750352 0c6ab18a-f09c-42d0-96a5-814fdb347cbc 1c909be4-2744-483f-a0b5-d54619de7acf 35fbd015-ab8e-4a7a-a475-5633742b85d2 f42f2881-10a9-45e6-be37-5650f51318f1 91a61f27-6c87-41c7-b5e3-1d1a9b94e3b1 7b10b4b7-e2c9-484b-9699-280702146c37 20bed599-5b54-4efa-8634-59e0afb9fe6c 4d97ccc9-d9f9-4675-9370-c5b758e51a9e bebfd636-100e-4f81-ba98-8b462d5278b7 b484f670-be64-4c93-870b-e5010f35efa3 e1bc07a0-e714-4488-a2dd-7da8b2814351 363a4ab7-c897-43d0-b87e-f6ef5447ccc5 140c7f35-4895-40bd-8cfb-4e36e2e7c39f a64c3bf4-3e07-4698-bbbb-177ce999d4cb 92782945-f115-443d-9605-c5d7de2f21c2 04082e85-6a9a-4590-938a-24da0ad7f126 572abf81-5297-4639-ae78-de3d86c311af b0f2b137-46fe-4958-831f-2288b44c0f20 0fa06cf3-e621-47e4-b0c9-0431267541ad fe05ea9c-b86e-4a7b-b5f0-5a9b8de755a4 8082323d-0b29-45d0-8909-b8393f8cda58 ea6bad20-e3e5-42de-9800-1d5b0d5242b7 c967965d-772b-4c44-98d7-3e6ab7faef76 115093dc-5a70-4906-8335-1505e44fb8c9 cdfc8f31-32b7-4385-8f40-a390cbc9055f dc3a9cab-d2ca-4f54-8f56-c1d6f6a429c3 9d7339ad-b2e0-4d5d-a5b9-25841efeddda fd4dfffa-5024-4077-89ea-dbfd3e8985f3 db09a35b-9082-49a6-893f-9c0d09c02dc1 1d6b8ac6-5161-4d86-b0a1-e2e89cb5d9e1 5ebfa8bf-5c97-4bc9-84f2-55692f7cfcd9 83a3abe7-6e05-4140-9193-83081e53b033 ded52940-bc68-4631-a975-86b2e3a4a46f 5870837c-7634-4626-b4d8-aafabd75a470 1d630ef7-dacb-4a9b-b114-e8c2952a1160 ecfb6036-81ca-4b56-81ec-f9440484bf9c 441a52d1-858a-4b55-8342-1829b8e5977d dc03bdd5-535e-4319-a780-94d62a7783d0 71947b3b-6359-492d-bbea-7a4a4821fbef 7f7e8ace-25bd-4611-baac-ffb59e4c8b82 7a9d974f-65d5-4113-a499-115ec9e94525 903b1e09-817f-418c-a806-7ad680b406f7 7a894831-ca70-4061-b327-33e527d7ca3e b946faf5-ac02-41cf-b2d5-1be9124e7076 dbddd3bb-f392-4709-854c-8ae2a07a3b74 9f62e529-368c-4fb6-bf90-740071d1d4b5 c854d9c4-32d4-425f-bdd5-830d7fba57d9 0d5625d8-a124-4c42-bc2e-48a26bd1c9ef dd877885-8bc3-4591-b5d9-8fb387ed31d7 16e40652-2478-4f55-8aae-9b388ba1e2a1 0902b3c8-f837-45db-b2e0-7340ec68a7b5 3190e049-e9c6-426a-9cc9-967ccae93dec a3c2c028-85fc-4dd9-8d87-a71ff656db8d 26a3716d-c206-457c-b9e1-a89caa669289 9fceac4e-c077-41f4-9bad-fbf82e1eaab7 95a9ae8f-a346-4b3c-ac81-04768ea5719f db0ec51d-b797-41c9-817d-1718c965f39d d2533bca-ed01-41c2-b019-59e257e3d467 11511a6a-3932-4bc5-8970-a7fc202b3ab1 b4cb79ae-ce3f-4174-9bb8-a29dd361c2a0 538c798e-53a8-40c3-84b3-0d2cbe484220 7d0f6429-af6a-47ed-8a70-6fd68d43898e 18fd55f9-f79e-4a86-8843-72c87e116cbe 7980635b-3ea7-430d-8b71-f78ae2d58ff5 53565c23-cedc-4cf2-9936-47aa58c64c46 e2305d65-72cc-4338-9a45-abeed5224d5b 1d837758-45a3-4939-a707-0d995f1c9fed bb644f7b-10d6-4af1-bbfa-569dc327fb0f 6a13bfc0-62ba-419c-958c-b5c8390c3339 d0e9ad87-c512-4394-bdad-d1c0a896d6c4 b2c127d3-9871-46e7-9cde-7ca36255c4ff 7679aefc-d96b-4b77-888c-7f6d083d7b05 115084c7-65e4-49ff-a0ff-5ab54d0ee11d 6b4790c5-b7a9-458b-ae8f-13b5bd07a94b c4087794-27be-4dd0-8070-1e8532329801 4390bfa9-1561-4791-92b5-19767ef434fa 5fae7a9c-0939-4229-a23a-dbf837cb56cd c97b77ad-4812-490a-9890-d437e7a5193f b3307631-cd6f-4de5-a17a-b6fea391302b 147be2b8-b925-4fc2-ad97-4c63d5754f58 9f203c4e-f5cc-4578-9505-434b04aacee9 91a78ad8-7913-445c-9159-76e6c7ce78f2 fa3303b3-c128-4f20-b2ac-6bc30b01c0ac ce33a305-b45e-4955-a8e7-fe864237d7dd 41c55375-3a6a-44c2-94cd-e490d26e259e 988820a9-22a2-4f66-a778-3db4b836e16c 2948d148-b6f5-44fb-86e2-5cb13fc43e6e a807bbbd-0e80-4431-86bc-ac9eda42d348 92ed70ad-1b28-456e-81b2-eb89e00b85fc e8dd2c5f-9bd9-4e64-bb71-b8e0ebaae627 be4985e2-5fe8-41fb-aada-25aa6aa258c5 e36c6676-db76-4c81-9780-14e8f6b7c242 3ca485da-4e9d-4701-b564-096c29e323d1 c715b98a-d0f1-4a68-9f06-fb93a6c99ca0 7d6e8cef-8856-4aad-a747-ab14f01efdf2 17b41c5a-9d66-4f63-a4d4-bda248b9bcbe 313949c4-b94c-42f1-bb1e-9e4aa96eca97 dcf645b5-de21-452c-ac4e-4c2d59efaaf8 a9f74b06-34d2-4a2c-97c7-d9f4ab4bfd97 dd7a4acc-dd47-458b-8974-386ed3916cdd 737bf6d9-fdd3-4b1c-adb5-95f821ea9d06 37650ac7-2a33-4e6c-ae33-6a677df41f06 e933d7c7-396a-4763-8087-9bda4638ae8c fc5f6717-0e7d-495b-8eaa-2126d74828dd 6e080dda-7986-4f57-b6c7-aef4154ababe 8950ce60-bdef-4add-a307-77ca8ebd64e5 8a83bd1f-ec56-41b1-949b-9cca3d0b9fa1 7ad64914-af7e-4664-b43c-f8f57e56fb6b da499d84-4cb4-49b9-99da-9dffdbed7676 62daa42f-785d-4adf-b593-27e950106bc9 8656d15f-be60-41c2-9241-281251a42d9c 36034d48-2bea-46d3-8d84-488243d1cb62 9b90289c-27cc-45bc-8d4d-4480c3b79d69 7988b315-ba3a-4ace-9b67-0a800af01f90 05e5c890-d28c-4296-9096-27436fdb7cc9 51e96de1-cce7-48d6-a26a-5cf6aba23cab a99fb50c-1ec0-49b4-af46-7a9872378273 6e5ef8ca-3407-41ef-a1a1-d021d5fbeaf0 5961bc01-2ecf-4e53-b6d8-65782eff604d f8606d98-997c-4673-97a9-afece0070ebe ba65943e-fde3-4759-8910-19d59ae7edc8 e05ca6cc-a10e-49bd-b7ee-eedb831823ed 84d28de6-1efe-49f8-9806-6d7f578c2dde 07ac96c9-39bf-47d3-8372-094d4eaa3db2 dcc955e3-c059-4a48-baab-4a5f40e5956c 055d49f1-e50f-48e5-af66-f441f0f2e8a1 8c33b79a-4dda-4e90-85d3-3c9ce65a6fa7 6a9b2130-48d7-46e7-a384-0517b1cc069b b8f4f2e7-3966-4ce9-afb0-433a6b8c8b73 c5900986-27b2-42c1-a021-1ef3fe7c3570 6a6b52d5-9c8d-439a-a49e-1e54d137e65f 30afcafb-01dd-4b7b-ba47-b7af8a2b5e64 8f9bea90-ede7-4310-a480-3254e89804e2 eb5be8de-ee0d-4b85-8407-ab985432f9a3 e902ada9-ad87-440c-aef6-72d9575b9db6 9effba3d-70f8-43a0-93bb-78e19bfafef9 b71a2062-40eb-433b-beae-e453f3ccfa0d 52b000d2-7820-4833-8e1e-6f4e57aecde5 e786faae-a1d9-49b6-981e-3536dfbbdba7 d06aa939-cb25-407d-81cc-53e5a8ddcc7d 87c47da8-0c8e-4ec7-be86-6bdaa5aad8e0 7353e9ce-54e8-4a30-b44b-f2322ad3057d afff5947-57b1-4702-adee-679445a07566 be8b9aba-bcf5-481b-9384-ea8c12a00849 bb117170-94ba-4ca2-aa88-746449e71d0c 264a9326-860e-42b2-99fc-163518f74a8e 7e9b216d-a8d5-4e50-8443-9f503d1ed0a1 f6e9908e-9483-4ccf-9ea6-3fc16ff880a2 a2c861e3-4801-4d24-b9d1-07e792ceb3b2 6d1839d2-5fbd-4357-be05-6a5561d4c3d9 be95e0e8-a0e8-4fb3-8602-e78c11ed6e6d 15684665-689f-4fbe-b2da-ae08348c0c7e 7b20ea43-4cbd-449d-9afa-125ffa37af6a 10ac8b5c-c980-419b-bd17-95e0d928ead6 997aa72a-d6d3-4de3-97ab-b29b18eb170e 5b0fdb85-6796-4326-87cb-aa83576c1fe3 bd9ee68e-cb67-4058-bb79-02dd2e3d12d6 2b17c9fe-880d-4ced-bd30-f3e0f24f0c18 de37d244-e984-4960-9d5a-d41f0cf26399 f90c7f09-fa2c-475a-887f-463cabaf4651 fb67b5c9-f264-4109-aaa6-a402060c8818 a3292ebd-1e80-4a64-9c6f-4861e3ff0f49 54bea1dd-a9fa-4b55-b01a-bc148f1c41ba 294b7216-cfae-49e3-a322-ca1e8ab44a0b 61bb7836-c4e8-4f5d-96d5-750e46bdb088 8f941dde-0844-4c2d-8c18-a57f50822a92 95a61dbc-2ccd-4754-a9e1-efaddf3644de 1363916d-d562-41c1-8c29-070db2651e2c 4f2ba2f0-d613-4627-8722-7b8b8185dfee 97f82e60-658f-4f1e-ae49-bf01536d04b9 815db117-1ddc-4f8d-bb18-ad892a9ab4dc de8c1e73-b313-4956-a0ef-59a2566f94af d3130a84-244f-4e95-a583-6f52c67b66ab 07df971c-7d1a-40da-b53e-eb19cfc6342e 70b93709-ad28-46f3-baa2-8dc8d023d12c c1ae32b0-11b5-4b8c-b147-afab2442414a 0758bd65-1500-4f01-96f4-88706da626f4 426b2d7d-70fb-4826-8925-524457e12574 9ea60421-5170-4cc7-921c-1e752dc7dbe3 82af3258-e524-4d93-90af-0d8fbec5e4ba 00af68be-993c-4f66-8db6-654b483c3661 a436a58d-394d-447d-80a6-1b5b9e86fab3 4d46bdb1-ce53-4c9d-8465-9a952efa1626 e2dfa02a-aba9-4545-85f1-375523f589b0 9021ea96-2818-498f-8ac9-18cdecbca85a caa1ce70-2307-4302-9fbd-895af0aba29e cb7274a7-157e-4411-b0ba-5d5387997e0b 6d110200-9dbe-4104-8807-3dcccbc9bd40 e63e84dd-f2f6-4002-8dc9-30de8ad2eae9 7d1fff0a-52d1-4bf4-bd1a-031ed88d1c3e f4c2db08-96eb-405e-821b-da4f172c5b58 715ea36c-0004-4e73-a3f8-0ff41ba28ab4 b11adbde-d6b7-463f-a198-a528ac38415f 9bc9b689-920d-4867-89de-628889cfaaec 40339456-fa93-44ae-82cd-5d028df7c8c8 4ae50c4d-a876-4b71-b2c5-d98a843b13f4 c154156d-b085-43bb-832c-de9319d8e978 7628fe3e-ef83-42c6-8363-64822ab3e3d8 b53e2e70-bfa7-4ab2-9cc5-9583e159ddaf 2c867d67-08f3-4547-b1d1-336997c558dd 9fe515cf-0608-4874-8e65-b94fe0111323 c97a60c1-8b14-4c14-adbe-ab834730db30 200dc3a1-4858-4c72-a8fe-73ef508324d6 c41153e7-a368-487e-a2dc-7380f68ad017 cd90ce0d-5d37-4987-9e75-e794e5ce60de 2bc1e82d-eb78-4fa6-abc2-8b87c4f5f17b 6d372fb8-acd3-4e0e-8b95-4e56447a582e de109f07-4bf3-4dbb-a212-33a2f80b29c3 d9a4e7f9-7503-4a26-9a8b-361933c243a9 6f25d861-18d0-4bfe-99d1-97fd297f6061 d599e4a5-43c8-46dc-af3b-c2f7471d6a9f 0fa39858-9b4b-45fc-9041-1738605a644c 46ba2e1b-33f4-43ce-8901-21548b6194b2 c0799af0-9876-49f0-9b3d-f6c7381563b4 eecc83a5-d144-4903-966f-8a8842eddc71 f140aa7b-420e-48e9-8d3a-e268f797a0f0 ac406fd6-1010-49a2-ad04-54479ca2c15b ff81c1af-48ae-430d-933c-46dc40c80104 c0c29443-2c93-4778-ae4c-c47380d7d597 2a4ebe90-2603-47e8-9ee2-9178d7111127 91858eee-8458-4bb0-820e-f6528f76d886 3a374fa0-cf9c-4d8a-a60f-fd25a273eb22 01fdd3b9-57d5-4682-8712-d39d493c63f7 6d57ec94-a49c-418d-bdfa-bf1523cb7272 5e507a97-d588-48d9-9021-aae8edfeccef d15da566-66dc-42ca-90e7-8875bacb47c1 4f2b0570-2874-4527-b7ac-ddbd82b6b50c 5864f91b-e186-4bfc-82a2-42f695ac4047 e1365c33-1a5e-4db3-945b-ea72948351d4 b994a5fb-76e1-4bce-80ba-60c3317439fd 307f0daa-9341-442e-bac0-5f2fbcccfdb5 b9747b2f-6990-4790-9cac-632f2635cd48 2331fc95-8c16-4f63-a141-3daf8a3f6af9 a90cf983-b766-404f-996e-0fe1102af114 80907687-852d-431a-ab6d-65a1be9df00c 90673131-7815-4e7f-8e3d-c53795fe10c9 b97e0076-8617-4f50-b5b5-8d90558b8c77 393bf481-1190-478e-afb8-6596cd9fa378 6ec81f00-e57e-4cb3-b8c4-38a3494527bb 498530ba-ba1d-4fa8-8fbc-4af48548cb3e 7ae3b5d1-4b36-4428-9ea2-1e196910c117 199579a1-dcbc-426a-84d7-900188fb4e90 8037a64c-2d18-47b6-80bd-b1994ad5937b 568dd4e1-6fd8-4c68-a3f2-687e4e145b94 c41c977c-52e2-4271-943c-8991d36dd638 c8744bb0-7074-4f47-a1a7-8d5e593800af 169d9f33-4ee0-4afa-99fa-89bc571fb972 eddc742a-7be5-416a-b731-7f74e1402ef6 8e280da4-067e-42da-8521-7802343707bb 78c9d322-af06-4a05-b258-518383f9b643 74871d31-ba4c-4689-a65c-cc98c2ae8232 f6f53489-6753-4584-859a-db1ff87ed6c3 6a84119a-4ee5-47f4-a629-c4cc34022576 6ebb67d7-8803-46fa-8f10-67bbde877298 7e2f62ce-a5d4-4a98-b875-ae8df61f215a 603b198a-1928-4851-852c-db38b78134bc 376addd5-29a0-42ed-a049-6f1e4f7583c1 5af0aaab-bfb3-4e0d-af39-918c8e03de8a 6d011566-8b59-4600-ae71-b0717dfaa0aa cd7f95fc-20a9-4351-bd67-9b7b39d92dd9 432e68fe-ea25-4f69-82d6-85078496509f 773ec8f6-9585-4260-b892-9d69e7963454 0fb17070-abf7-4ede-882d-478e1595e087 4759a5e3-6253-41b3-9ab6-1e63918f8e79 b632dec8-551e-4af1-a542-1741110a8830 becca3eb-e37a-459a-83f3-93e6d0d272ef ad5526ac-e87e-46eb-b17c-457370c5b28e f3173e6f-65d3-4992-9a26-7b33ddb1d074 ed9e1ee0-f5f3-4a49-a09d-f3bedb8577d0 1aaf595a-e010-4baf-ac46-70ce5b9b6266 24bda9a0-4732-4272-8fe7-1fe4cb2b0bbc f6828057-a981-4b34-b4e3-020f452b1d67 33af8015-c19a-4135-9d11-c97be3afe8ac 05e5a625-b186-4d0a-acec-5191cd6abedb 35520bf5-18f6-4cc9-ba02-a4b4efb529a7 9910cd3b-8a5e-4607-bb16-6f7e9d5f3823 51f40fa7-9ff8-4e17-a99c-7d237751478b da242d45-ce18-4836-b428-a11b46c0c4f3 4dc2762b-6534-4073-9983-04ca892e4443 1d381a5d-56a2-4c97-b7c2-5a6532ba0a8f 2f49046a-961d-4fd6-a386-bf8e7c92ad44 6f1c59d0-74c7-4b7b-99d4-203221b76aa7 378fc207-e97a-4539-b672-f1fcfbabee29 dfc9c252-9775-4b9b-a1a2-42a728e67a0d 37c308d6-1cd7-4fae-a63a-81637ea1e0f0 1329e31b-13ff-489d-83db-81897b0932a0 85a01bcc-c1d6-4a60-baca-fbf88cddc305 7085f93a-409d-4c00-aa56-93681c798143 1fea6787-830d-44f4-bd69-8c5631f2e62b 36a4da2f-d9a7-441d-bc73-003b9ff11557 f90c6b05-52b9-4b54-946f-5e92942e8b17 effbb9fa-8467-4ba6-b8b5-c59bb8c5230a a3b9e4e4-670a-4e67-9caa-99a7c47c5a53 eb794ba6-3007-4203-8662-10d911f40086 574a02e3-4b62-44af-a4d3-8915635ba4ee d9d888a4-3d51-4c60-844c-860a8c2c58e2 b95a0204-334d-4256-8cab-b05298f6b7fb aaff0e69-70a9-4bfa-bf85-026a495311d4 28057f45-7dc4-4707-b2ad-9e5042f91dbc 45dfa793-ca16-4b0f-bf17-5abde7471be8 5c232bd3-5783-4622-abee-f9bc87b64cb6 c4e8bcfd-a89b-4446-bde1-2fe77b9eb7cd df408a15-7cdf-42ac-9e69-1c42be1c9487 7f748059-3a12-4ffc-98f4-7924128186c6 60855dae-629d-41dc-a138-b4cdcb9f4ddb ceab1b7f-80b3-4dd4-a69d-4ec1f41f524d a9715ef8-05f8-4ca5-8d03-0fcf095afd63 d111b33f-1f1d-4d9a-a5b7-78c81d923f89 009ea9d9-0270-41af-98ef-ac95aab4da2e 2c2180d8-6b22-48a4-ac80-62f2db744525 c185a330-ef03-4d18-99ba-ded60fa3319a 8724ea4b-9c05-495f-a9f3-dcf23f0af8a9 3e418a33-7277-474e-908f-53ba681ba7f2 a024c637-82df-4fb8-a36e-bca3d640c01c d717904a-5aeb-4f49-8f1d-116b2f2d2222 4ef4b5bb-7dbc-442c-ab65-ec47fd6f0466 8ed46a5b-c2c1-48ca-9963-b7a47c384e16 195ce94b-1502-4f42-8bfc-93f4473ecfa8 3bf398a5-424b-4075-8f44-5b98a2653ff7 6e80165e-ba62-4872-ba08-9e311b2820e9 f6ab2fc3-6faf-47ca-ba52-63c6a164fffe cf153961-d56e-4677-b932-93b36b14bd57 191aa191-67ae-4efa-adfa-1131c494a495 b1b8e34e-62d9-487c-a71e-86621aa54b4a 25c00af3-c3b0-42d6-97a6-25ad74a2221e b440e2e2-3a1b-43b6-8033-3916b9ffa11d 45064b9e-8f09-4868-915c-deb5bdeeca2f a58f35b6-cae8-4eb5-ad52-0afaaeafff98 5e35004b-9059-454a-b83d-193a70af51e1 638d30d9-e8cf-4544-b668-964e3d78399e a61f4fe2-dc07-44f2-b179-125bbc5bdace c60449b3-c329-4527-b119-87cdebcc36c0 78b7c7a1-d057-41b6-b349-0a9f12b1a7bb 1f3c912a-610f-499d-9ccc-894f2215d63d dff8c8d5-f7df-427c-9905-edfa77dc157c ad533847-97d2-4277-8aa8-ef63db36f91f 276d493c-8bac-4e7f-b6e2-f68b179135ae e2156b07-0a3a-4d9b-950f-ac573b810917 175f9743-0b83-473f-b710-9fe0eec89446 fd53a3c5-9734-47f4-9308-4f0b2210c4c1 0fe5d6ff-e42e-4511-826d-dfeb0a0555cc 7b2b349f-dc11-423d-a3bb-acba8bb54bea e5ffd9c8-aced-4f0b-a6ef-1a0ddc2f5229 aaf5ace9-43f5-48c4-bcbb-2322203ba5ef a76478fc-ba60-4160-974f-3da79149037c a0eebaee-7cc3-443c-bb7c-c7a5e3ed0022 1e37a054-f454-4e98-8e83-f9bd4399542a 7f77603d-24f3-4e0b-b948-bd5ebe7531c7 5f8794a9-ef1e-4d60-8bf9-b5fe21fa6a20 9c3d7565-75ba-4085-9816-c146c23af9ca dda45521-9675-4a74-b61d-1d1e55161ebd c8b413d0-9566-41b9-abf2-8853664195c1 b4e20afe-fda2-4705-87b8-756820cb5288 37b267d6-a294-4fb6-8bc6-eb773047719a ae3e9a97-240c-42b7-a678-fb625d780035 b564fd70-af34-4796-8975-b3cdebcebebf dd717139-5f42-4c43-8045-3fef22d8e27c 10fda02e-85bb-4148-a18c-0dd24d4f9b53 0d7be8d0-a3b1-4f57-9a07-d114eee90692 cddf2c08-922f-4135-ae15-4dc0f93e2a98 53dec751-378b-469e-ae68-0e506fffcf44 c8eaa9b6-90c0-4dd7-af99-c7f753389902 36346e03-5925-49d3-8f73-263deaefc635 84855c23-10c2-4c3c-88c5-59e052a09615 664fb908-df6f-4efa-b738-0d05375f9f70 5baa5d09-9a26-46a2-b742-0df36989e21f 1d305122-7dd6-432d-b536-919497bf63e8 6a30d741-ee7f-4b22-9e28-8ac26816eb14 023e6e1c-39ad-495e-a183-8a491069f316 23f8fec4-6ca3-42af-981b-63b37002c43f fff0cc76-368c-40c0-9b82-2bbf2b64702b ca9d6842-1916-4026-9785-f9f42aad5bd9 addf5d53-f2fa-41f0-b364-60906389dd03 2277896b-c364-44bb-acb1-a6cbfcae457f a6190591-5442-43a0-b7ca-e1190bf39aec 16424000-d2cb-425c-bc11-d09c2329bd1b b319f1da-3f33-4f86-a571-f3196476cad7 4b3795b0-ac68-468c-af0c-a856f3056b49 6542e342-413b-4e6f-ae50-e4f6c780b497 f806b674-5e62-4a8a-b64e-34f5c60c0414 a4d5d8fc-944c-4550-b9a4-c9438f90cb85 c167b4f0-2e40-4b60-af2e-b3b080e85a41 1f4524cf-0906-400b-bc6c-779e311630e5 6ea09310-c739-485a-be8a-2a9a52cb02f6 3361cb89-ca4f-41a7-80c6-3132a16ae300 42c68519-4842-4c25-b818-855d3bed0f79 a471d494-33b3-4a08-a50d-d8202d482e90 33205195-c1ed-4894-9abb-d485043094d4 bfcbfc5c-cdd8-481d-936d-2c823a9f530e 23ceb573-db4d-40c1-8787-48db19b2aaf8 c6edfab1-97fd-4a79-a4d2-d9ddbf18d398 eba1a055-5ac7-487f-9964-5b5fdfb43439 55f01204-64c2-409f-9321-792f56d20fe0 476c0374-77b9-45f8-85e3-8546dd121251 ebf3222c-eebc-4ef2-8f11-ebb976456799 9de8919a-3a5b-4cc2-b1ff-01d719d856ca 05a0d3c1-cc27-42ae-ae22-614d3ff25b2a 9d7ecec1-94ae-43fa-a9e3-532c35ba3513 dcdb302d-a13e-42c0-99d2-5bec0d8b66d6 d7018319-fc26-455a-b6a8-732b079a307a 2e9d39d4-d1ac-491e-854b-2aa9ad9c3e3a 3da5842f-a106-4d89-87e3-13ba7c87a5e5 a4ee2377-76f7-4dde-9741-9294ff7f622a 94b8a9d4-4925-41a5-92df-af8b52cd8cc2 149bfba5-e178-4a6e-8220-5307c2b022cd adfaabb2-ac6b-4b8b-920e-622cf7753b1c 3c475d6c-5983-42b7-9552-041f7052f085 adcdb5d4-8f8a-4c20-adde-5b8e92bf6e00 6737512f-1170-45f4-b6b3-e4ff652d60b3 135de8b8-559e-4f8f-8949-5d3133abaa95 3cc96c5f-e0be-4543-81ee-64d2987fa8f1 7fca1e3a-6992-48ad-87fd-e6547ecce029 6a0efcc3-d547-40e7-9757-b01386934f9f fbceb761-0643-42f9-a414-e1a0acefaaa5 bef43d82-5456-4e39-8c89-c14a79dd3a7b 9a9d62be-d99b-46c4-adb6-8e7e74e616f9 c1be83eb-9163-486f-8bb8-c1e29f757c10 46f886a1-fabe-49b2-ac8c-98ab476f9900 1b8ba3eb-d519-401e-a611-7e042f8a8730 44975d27-de96-48a0-8252-c2c35e46614f a3790db5-5e36-4232-a0c8-01b5d26f74a7 132a69bd-f11c-4fb4-afa6-83314c68873a b6987b7c-f895-48a8-8146-14ba598adfe7 9f1b652f-d48c-4b7a-a799-6854b270b926 f5b69130-7216-48fb-8930-6fc47010de99 4106bdfa-a0de-49c3-a86f-33bc941e8834 11d90428-7952-4ebb-9571-6101fd82ac31 15216910-68ba-40be-a66e-767484dc8c4b 6b47ce55-9585-4db9-a349-196c7253b767 06ce3a5e-1211-4880-a9da-8c87ffd53d28 2156f606-28d9-45bc-b692-87bf37df1250 debeb921-5515-42c1-bd38-1ac97c739379 709907b8-26b4-4874-b290-b766461d5873 855be0bc-f0bb-4830-aa9d-6d704f613cb5 a16b583e-c2d3-4d8f-982e-c359dc05246b 86f83adf-1661-4b75-b4d8-fc50bce46a8a 78186e78-e5de-4350-a703-b8bd401b3b82 14e41301-4ff1-4c10-98d5-422f05d5c598 22e33dae-f659-4c9a-ad88-465bbdc0f752 90181cf7-e8a5-4a63-b2f2-eae2844f2843 4f79623e-282a-4e39-a5aa-6fd0c8d3e3b5 0d45978e-7e46-41ec-98a9-da822ce8b5b8 96da6ada-2cde-4b5e-9344-962dca0214fe 3e4bf54d-bd1a-4f04-a64b-1156f62e7a57 078ad99f-6dd6-4be3-b5a8-62092b4a4e30 97e094b8-7192-4408-b39f-8424a8db02e1 f5504ca9-7f0e-468d-a790-0bbea7cbd59c 76cbd949-a0bd-4756-8d21-2bcc8e17aab5 546bc4fa-ba9e-427f-af44-d116e1460078 a7ef47e0-72df-408b-b799-7bbf4cb0d615 c1bce33e-2801-4a3c-8d23-ff4508c520cd ba1d1009-3fe4-4bd0-b68c-41d6ac4c094f 9c3e0060-7d90-4990-bbc3-20cbebc1e839 79209f1d-f130-489d-8b9e-1eba120d8876 d4ab23db-1967-4c47-984d-187b3b392fce 17e0f784-9bcd-4bda-85ae-dd116ad79d71 66b28865-bf2f-4740-8591-ae4a21dd1f22 88260e0d-3a67-4c5b-895d-dd81fc964970 e4ee3082-2991-46a8-b9d5-6bdeae23da16 b13a9e97-dd15-407c-9ebc-a7729157cc77 6f715f8a-b8c1-4511-bfb1-f49adc5c6bca ff9008f8-dcb5-41ee-902c-d3cb0099df22 28e66e58-8972-48c7-b2d9-76b997983899 496c631d-05b8-4d22-af96-a30eb17d40b7 f25ebee4-6c39-42f5-bca2-5ff58da3edc1 c79182a3-d51c-4864-8892-e483a69dd3eb bfc4f859-fe08-4a25-b491-00dded366ba2 5c3c3b7e-9f2e-43d7-9bc3-e0f9aeb7daf2 02531c9f-64be-4630-bef9-bb870139b8f3 15f8b6db-3c1b-4795-8873-1c7f567e0566 e1dcbbe7-f1ae-4cb3-9aed-2e829353cc1d 787a892d-ce58-4476-8adb-10ae31d05963 492e0207-6de7-442c-85c1-8a4688c9574a 6f9f7986-161f-4157-a617-15674289b9cf fbf2135b-77aa-441a-bcac-0d40600f9e53 c49fcfb1-266b-42cd-b4a3-62c033429846 f3233e87-ddba-4ce7-9fe1-720df3a8217e 72b6e74b-600c-4ce7-a8bc-6b69029e425e 160ac219-379b-4947-83b4-959bd54c4575 5fa2b0f0-ad50-4263-b0dc-45b763533a1a cde404c0-6241-4371-bfde-ecc0eb31039b aa9fff63-9096-4225-bdc2-75d18068c8ca d9ebc268-de98-4d7b-8dc7-b8826bc657aa a24af0d2-4528-4ad8-ab09-dad8df5d71ba 5b55c97f-9da2-49f9-9a6f-10f6407e9ec0 06858cee-211e-4ff2-9456-b3dd7d481e6c d8f16a79-e036-4862-855a-7770a7d18711 fe6bf97e-ec63-4257-b730-946e93ddf6dc f92708e7-c3ec-4cb2-aec3-442a123fd645 0b2b0746-672e-4981-9274-a2bf2c85c88a 07233a47-8c8c-4a7a-9dbb-b035fbb13f7b 3ad74231-832c-4522-98d5-e76bfc36cd6e 9698a581-56f5-499d-80b0-2598d4b2f4c5 6e2cd9a1-ee5b-4847-b358-140b159e40a3 f674b31d-0d41-4434-a0bb-c567d8a4faf7 3f25f208-718a-4f19-a28b-63de131a50f3 bb80d174-c1a6-49be-867a-f5e0b0224ed4 4751f627-3930-4510-875b-ff3700a46552 cc7613a0-f4ab-4040-a7c4-8ad19b8fabe3 6594e0ab-f219-474c-86ba-136d699589ba 2fcce96f-e63a-4261-9f09-f0a80091a810 c36b8e40-d416-454d-b69d-c6b59ec6f5b4 d310823f-efc4-4069-89ac-76d7326e12b2 14a5692f-6c17-44de-93f7-43259e9a6ee8 cb92bcfd-e0d4-4bf6-b486-581f2552c5eb eab33f5a-ea5a-4cdb-8338-457f003cf830 34520940-73f9-4b29-878d-248cb5f8cd3d 4be95026-e769-4064-a609-e2e7d065f6f4 24c1ee89-6730-4b50-b2d0-ccbfd47b4d0d e350c5d1-7b43-4ee6-a17f-784db4363de3 e4137f0e-5f1a-4913-955f-222c7b970a5e b612f466-bf27-4c7b-9c67-ce8aeddc08a2 746554cd-9645-44de-ad7d-7a3e260358aa 303d604f-cbb4-45b0-bbf6-96346ebbc36c 0c9143bd-5283-461e-a0e1-39554180f5be d7fffab8-53bc-40ed-8836-34dc47f6b3d5 c053dbf9-8faf-4b9b-9460-7e8d05c87980 74714310-1a78-48ad-b4df-e3c8f70ea1e1 8019b4ea-c22f-4839-ac63-63185c2d5de8 002919ae-2bda-419e-9255-5155c01d4b4a 1d5de550-4ced-4b0c-805e-1bc244ac07e8 eb731004-f76a-4966-ba2a-620e4cdab31b d7b94193-7dd4-4783-b3f7-f8b9380eb2d0 e5996e4d-316b-4e35-adce-59ceb6a52ab4 43af14c3-47df-4648-83ba-8c07baecd8c2 dc4a4bf9-28af-4373-aef7-5e344ca7fdbc df9d88b8-4530-4e8d-b9b7-c54f64972155 ebd361d1-1759-4a32-9894-204407c7e04c 0cb38f24-193a-4eda-b4cc-49c46e02c517 524fda9a-1de7-4a1a-af5f-85ab60961a77 0a9857dd-945c-4596-bfbb-de49ee96f867 f7b1e93c-9b75-45dc-b865-b86809ab9b09 86f0e0ac-2ff3-48f0-a55b-94b581081969 2c726a9a-adb8-4094-8c55-e5bdbf58eba9 d5f132cf-6315-449a-810f-e538e8def9a3 f433e18f-5ee9-4075-aacd-a42cc328c76e 661097f3-c1ba-4c50-b7be-e1772dacef4e 5cf1f8bf-f496-45d6-a5b9-bb15b9396891 ac521f33-9a5e-4f30-bff1-6533e4cc78de c87c9a0f-5bae-4ced-9ea2-e54498713784 449b79a9-9712-44e1-862a-cacfea16c694 9d580001-dadf-43b7-a993-97ff7a2885d6 46fc9a4a-9f12-44c7-8348-452c1e5a3d09 a7203f8e-75b8-46d9-b47e-0c52f1cc4510 64f759ac-12cd-44eb-8b16-9d42490340b6 9fac529c-fd92-425c-a0af-0c86fe06372c f2d25d08-363f-4141-a07c-3d10b0059543 06878868-8574-4979-b166-df14176c1a28 a55f9e7b-d79c-4a45-a852-5a04ad90e821 d36ee670-038e-45d7-9000-8767aacd2846 f8182bcc-9d7d-4350-8760-d19b2f30bef2 8ede74a5-1261-4105-a998-8c817bacab03 c02bd6a3-d399-4a3e-a8f6-04f8d40f5a0e 0a651aa1-c15f-4d11-a0ab-08b5eff43749 75b41b97-c6f4-476b-83a8-1bbc9e204492 fd7e1881-0b01-43a4-9372-c59d4418ac81 39609309-a7d0-4f8f-84a7-856895cf395a 2f39edfe-143a-47e5-991e-bc76fe54fc11 27dc5557-2ec5-4481-b7db-13345a060cf6 c27879ff-5449-44f5-bdbb-5dffca5f01b8 f9fd4451-0d37-4095-9678-bf436d5ec2d3 828c84ff-55d6-499d-9c5e-269d1d81577a b8788690-d6e0-4526-8c7b-af5816b9b2f5 40487d5f-403e-44da-bd44-33d2bcc65c51 e3f4761d-7bd5-4ce6-8ff0-5b524cf26e61 5c565d10-5496-4f5a-9122-645eff946c92 278ff4b9-2c42-43a1-99b0-f430fa325013 362463c4-62e4-4b4e-adf3-52505964b1bc e9e228f4-228b-48e6-8d3d-29fc493f378d f26427f9-58be-44f4-8641-9540785f4e67 a2dad83e-1171-43a5-8d0f-983aa0603ff5 86521a58-4b91-4937-8efc-1eab5a1f360a 5d24437e-affe-440d-9dc6-d48c68973fde a8be06da-bd43-49c3-b2fc-fa408c702715 4ba8b448-6bf6-43a8-8bbc-8e2672d5978b 42f98d01-3d4e-4399-8d60-27cac3b361a2 c37df75e-b7b5-4d7f-b1f0-d719b744ff91 f206927f-ace3-482b-bb10-61d055a98390 6030cafe-5fd5-44d1-ab3d-0c964aa1a5be e0281093-a173-4109-a705-581e1609a16e 027a16b3-c82d-465b-a2c9-1b145372f75e b1d7a2c6-038f-4a96-a7e6-452e701b35b6 cc008cc1-3c60-4594-a3b5-4f7a5d940e2a ad1c764b-a3da-4c01-94ec-ae8782e00609 d3cfc7f8-7a91-4f2f-bb31-20ee449889bb ac9e84e9-1b77-4bca-aa53-fc53654b965e fa6fd8e3-ef9b-4e74-844f-b04877ed651e dfcd4073-ebec-41c0-808a-d652896f2955 c7dcd726-dd69-4e97-8a85-6d1ea9976c48 45d12b75-c4a7-464b-9562-2b0a8f2fe60b 0d9cbb7f-0e2f-4b42-baed-d1d820857588 021fb6dc-9ad1-4cb0-8209-81e37279ff92 e899b8c5-128d-4efa-bd69-077339522d97 1e0ca04d-9f57-4ce6-be53-e0c11710ee89 749530ea-7991-44af-ab82-f5def6679079 8d9b6cf2-9b1f-4925-a5fe-8b7d5c0dcbd2 d5f7f0fd-7c65-4d53-9323-535b29971016 f5490fe4-6d28-4e75-abc4-0ea1ce3dd597 0937ed21-0882-412a-8dcb-ab1746840dda ac3234f1-174e-4c49-843f-55c96dfa58c9 4c64a36a-1323-425a-8175-1615ea631af1 bc888578-1a87-4db7-b6ef-84f4c07bf9e9 d623e8b8-b284-41f1-8097-40fc28947633 fbf0f178-f83a-4040-b2f7-5800a57acdba 7fd861ef-f7f5-43d2-bfc0-a9b27c0eec0e 04d52585-bef4-4f1a-9a93-4ab4eb03f34f e140245e-dcff-4540-bd58-28d50de2c38e d974fb0b-5de7-4843-8046-6d9e84ded5c2 1c91a407-6dfb-4a0f-b2bc-2a8843ee7fdb da56e2b9-dbea-450a-92ce-12ea140092a9 27204948-0324-41de-9f3c-e23ee39ee59d cc1f02b2-0b30-47d2-9f3e-06c766e3c398 be81dcd4-1e58-4da9-9cf4-485878f64407 dc2033ce-5ae2-4e8e-b842-97cd68960853 3243ff99-2165-4bb7-a859-fa9316782912 6db48221-6992-45e5-90fa-507bc8c9fee4 089e0ec4-0912-4cfd-a19c-b643ba3fce59 a563b60c-4c4d-490a-a97f-251294da7976 9a7ef47d-f3c6-42df-8c48-892f67dbd4a5 b9495e57-8ad7-4a56-8d55-df6db07fffb7 87dfaed6-3c15-4983-a85e-b9d51c6e7e5c 5d41aae1-b735-4ae1-b31d-a3a09235b431 83714335-7a6a-460e-b7ff-f28cd6d68568 aa08341c-b304-4a8b-9128-6641367bf79d 6904a58e-1c70-4e4e-806a-689821b3bba4 ae33111e-dab0-4151-b10c-94a18b4fc63d c5956014-ddb1-4668-82ad-4ada4ea81d35 b9045cf6-3f51-4ea3-b8a6-c107ab4272f0 702a9849-9225-4886-ad11-6e4118a8d04d 2c562aef-0b92-47b1-b6ef-649bffadff28 cb6b9f88-1f80-4726-a6f1-b37748bd2eb9 eb0f11db-04c6-4189-af75-93967d7f822c 0dd54716-6b2f-415f-a51b-ec2062981f62 90c46898-2815-401d-bbe3-d0ff4b75cbb6 e86dfa3e-43eb-4519-a76e-b5ce0337619c 5e608dac-2fc8-493c-a078-eed7b4cba8ec d4d48fc5-0066-46be-a496-1a1c5797ec01 1fe1514f-18cb-45c8-8adb-0018eb665de8 696e24e7-443f-4063-994d-7b1d2439be53 9d37db87-26e1-4822-a55f-fc9fe53ac8c8 fe674c9a-7a75-4a75-9e23-43d45a8fe8d3 6c8991b9-6aa3-4803-9f4a-2edea76f9122 51ff0885-3e72-4db0-8291-fbfadedcb337 8f968a76-c676-48ff-925b-dc717a6ae761 e9784b1b-4c04-4fe0-873b-ea736791152b eeac3b09-199f-47a6-9ac7-a749b8da9ba6 19cc8aab-c2a9-465a-8f4b-7fe369be929c ea7b1455-40f2-4bd7-a15f-d5975851ab38 4255da88-2bf8-4b26-832a-cc0afe2bd96f b65f69cc-c7c5-495a-85c5-ca1531d67ed8 0dc63009-3582-4cc1-80ee-89c0e317fe0f 18068c50-1b62-4c9f-b3be-8df512924126 49df63f5-122f-4393-add0-731e1b387aa2 e251730b-d8bf-4fc1-a5c7-817efd7fc944 e46702dd-f10f-483e-a894-d9ef4861d00e 6d0151cd-f3d4-43ad-9f5f-eb36883e810b 54db4715-fb95-433d-9c0b-bd253affc630 3d117e24-56d7-4982-9cbd-c2eae9fe57f2 4c2efa3f-721d-4a4b-9d64-081fb16884a2 9d3b446e-fe6e-4a9d-bb70-cf53e865852f 5c6520a9-7c2b-4cdc-9b01-cfa1e2f9b383 5155ce6f-e74c-4e9b-9e85-b07643974b82 9203ec6e-38d7-49d5-9d0d-154145df42fd 7c0cea02-3633-4bea-8dc4-381d7ca1d29b 19a80cdf-6331-42df-894d-5f37b130bc95 9290216d-372f-407c-bdcd-ad22ca68f900 a8bf8123-d60e-4c62-ac89-9317acb84f0f 14b10a85-d2ac-4288-b3c8-dd3d55e8d5af 082a0097-0897-446a-a5f6-59d3b01b829c ed85452b-7b17-44df-a5d2-b68350a4151c ab038883-e5d4-4b80-948a-195d3c045433 f4ae7dc7-6622-43f7-b9f8-6019ea2b839f 231feee8-321c-43e7-afb9-651adcb5f59f a4318f36-1692-4d27-b338-b3abf90265e6 af8f9c4d-1e56-422b-95bf-3e3784c19641 4f518cf5-23ce-4509-a859-ecf2482e0d4f 8a533efd-e6fd-4c48-bbe4-ebe1355f5040 6ff6a514-5cf5-46e1-838d-c707b9c9285b 33b44f72-4d7c-4eaf-a740-25ef07320e78 8d6eb47f-e054-4089-9bf3-ff0f2bf0bf3c 53361cc3-332d-4f50-83bc-73cf075366ca 92bd9668-78d4-40b2-a221-4066e29c98d7 c165c6ef-3c0a-4889-9378-66cf275ceffe 210975b8-f076-4fd7-99ed-35789f3cf4d1 66bdefd1-c6c2-4b76-b57a-d23a8113a73d 5baca1d7-c98b-4fda-b6a6-8e0a8813ac7a c8583755-fe9e-4f3f-a928-e0615bd7db39 d33478a9-9220-44de-95b3-ff230178d81c 44fbb0a5-c9aa-490e-a16f-83eaf26091d9 a1a70c88-e157-46b3-b030-af379a772296 2162be19-9b58-4819-92eb-962a9dd6c185 af08419d-1023-44ef-a22f-7761d37fede4 96279681-fd47-428f-b326-5b33934f2689 00a40fa7-8e9a-4780-9185-8c044d542df3 fb94beab-6de4-473e-a9f4-5d0ae42d5b43 ea46ec11-24b0-4dbf-8787-523cc2c325bd a9f7e437-b889-4813-93b4-0fb6d577b7c7 51857dad-a80b-443d-ac49-5c0d5aa37fa8 70a5d980-a21d-49a5-889f-e0a9884ee113 7a4bfb9e-a284-4cbc-9093-1f46df0fe82f 817653d7-ae86-48f9-818f-d1bc4ac6baf9 cac839fb-4920-4d04-8e83-6150682653a9 e8ef2a39-85e1-4265-9d37-e6ff7dfa2e75 8db6b1b8-f8cc-435e-beac-0c7a23b4c1e7 cad4639f-fc20-46ca-889e-fe0cd3ef066a 0a10ca31-154e-49e7-9517-6dfca3227302 660f4fa3-70ca-48a1-b09b-95fef10d55b2 b92c12ca-8f10-42fc-805a-1f89356ce058 a10ccb83-ddef-461c-ae1d-5fded90147c8 c9458a35-a117-49f4-a85f-e9029a564b52 e3ab0ae4-9140-4e83-8c51-79d8dd9a9859 0c5d40ca-2605-447c-bae7-9764bbe0d519 e1050708-b328-4eb0-9c00-8fe3cd10c0b3 a6724e1e-e6d4-4572-ad44-4c1cab6fbc48 7b652add-7f31-410b-8649-b425066d58bc b57fe8e0-8087-41f8-8328-b80edd5516d1 a497e3f9-24da-434f-9f8f-95fe28c5c2da 0fbd80ab-98ae-4235-8206-357281002bdc 83236df2-aa35-4d35-9ba5-aa6e91551f34 bdaf38ac-8efd-4dcc-9249-f626673f98dd d29bd1f8-1dcb-476e-97c0-2f3f6520a347 2d6b14b0-7f21-4052-bb9a-f0ca823f7935 d3f57b21-da67-413e-8bfe-77308e68fb15 00ffd7fc-65ad-4e97-a054-86e1732916c3 a7de81b4-ab07-4696-92d0-b33bc6b5ef86 f4659c94-a114-473b-9f1f-18de0647024a cd6d7f19-2bc3-479c-82ba-48f1cbd0c40a 2eb7e978-6866-45f6-b3cc-5114fd8771ca ead4e3cb-2446-447d-81d5-d10de0933908 ef36735f-2012-44a0-a88e-7cf8c4248b28 9591acdd-88e5-4632-a25c-4bb41d0da553 745e1aec-7388-4fe1-b52a-6bb43852eaae 635cfdd0-c5a6-4555-8b3f-757997e4a6b2 1f41b59e-29dd-4d95-8e7d-8b4b95985596 1dc099a9-effe-4794-8ed9-bad09ee920f7 9bf489f8-3f6f-4d5e-9841-fe40eea4ba66 724d5d3c-313c-4a56-8d84-450a947af97c 282493dd-7678-4f68-b4fd-fca5d765489c 7ec2ec81-9051-4fa4-9ad9-8a1e5755fc3b 85fa9c7e-25dd-463d-819f-d7a5b6cc42e8 30bb3697-e8f9-4f4a-8e2b-3bc1f36d5130 b31bad87-9d40-4c8d-b974-66c3df0e1f1c 9881fcaa-0f4c-4baa-8a3d-40370bea0b10 77ba6c9d-668d-4985-90ae-89a7389e9f13 1793b652-c890-4543-bc3b-bef93b5fd66b 6f8be272-3f94-4c61-ac25-33fbb936f237 31d8010c-db9a-4434-81fb-d9d627d40e8b 7dfdde69-142d-45ff-ba18-b039496a7196 df890b65-40f5-47ca-b9c4-ba0c923485ca 930b78f1-6103-4c4f-901d-b567914f0e65 a9ac7e4c-cb39-4e6a-8188-b76370a7a113 6a332b4c-5e85-478d-8c5d-d53ba71f4e71 8f9d1a66-8f46-487b-a145-b64c5672bd0c 42377cd0-2820-4097-949d-ec6ca3427f57 ec9efe15-d87a-4c68-bf69-f0fd6d7fd211 c10a12ff-f3d1-4723-a4ad-58f6375d8d1e efa7164c-b45e-4188-9235-6cf3348720d2 0e9258f8-0b29-4c59-be81-87d9e4113ef2 d191f514-5bb2-4c82-95f4-df4d6353930f e2a32bfd-d3c7-4873-81d4-8f4117095acd a798ecb4-6acb-4d30-8d3c-3bdb3e1f7661 0cddf6c1-6f2c-43ff-9f4f-4e21e0d57274 ce803e0a-0a5a-484c-b315-eaf2907da48d 5e46e0d5-a4f7-4698-840c-ae27915b2f47 44c19ca4-186e-4570-9a17-39e24d59dd74 0e7f187c-1a07-4eae-a31e-127a64ac1930 f6da086b-edc7-4376-827a-e7815d50c8c1 e89096a4-a69b-4c1f-b7d0-251c22d4a7f3 f50dbe6c-ed5b-4fb6-a63f-a43163b7c168 cda34a95-11c8-44ac-aa38-a0bee4b7f605 783cf757-4ac7-43d3-8659-581c310c2aed 464d2850-6cbc-4be4-9e47-8f76ceda4fbc 13fb0923-e765-444e-971c-a12bae27cce0 614e63f3-f24b-461d-a415-394464dff396 bcd7d055-cd3d-40d4-94b9-6f5b375a9a62 b3594e1d-9201-4028-8044-c888101c86d0 7eeda700-3368-4e03-ba92-788186eca53e 48fe20a0-20e2-4a80-8426-451ee2508c94 35f43711-499f-49dc-9532-62dcbe12f5af 90281c28-6927-4fb0-b3cb-3be4ef805295 1c79efe1-814b-436b-b29f-7b38041a38b3 07ea8f99-aa4b-4b85-8a33-62c567952719 2483e639-e505-4295-8215-2df32b235de2 8631ba45-37dc-43b2-aff4-b92c2d6c7c99 b323238d-99aa-45ff-a7fd-1dc94b7405b2 bfdf7142-45ba-4fb6-a730-c4174222340b 5c15f559-2e24-42c8-99ad-4eb8d97623b3 45811f05-d6c8-4001-8d14-592b7f185fdb 7a13ae48-5419-4303-89a9-b24ab34067d9 caaa9cf6-7fbd-41e0-9cfe-e60e723c6a04 43bb204b-c672-4550-99ef-d8c7f8c6e6fb fa83df30-fb48-4f40-831c-68636e8ac398 6dda061b-2559-4b32-b046-f4a4493f2091 feb5bc22-a676-404f-a72b-1b4a5da90cc5 911c58c1-c5f7-42c4-abf9-057e4c3fbc2a 36fd4701-efee-4c0c-9083-0c65c3cb550d d4775b5b-f978-4cc9-9ad0-90da63ce92a5 1e8f57f9-613a-44d8-9e54-2eb226f27f37 a534a195-0b49-48fd-8df3-39595bddbfab 715dc116-345c-4da4-ba35-0df3c82e1278 43919d8d-d5f3-43a8-be5b-cf1b75b2174c 3c6b2715-aacb-4f55-a1ac-0f3eddade133 58a76b58-92cf-4080-b702-2a132f3b955b 6e82ea6c-8af7-448a-8a0e-a90612603d69 90fa8780-7a8d-4a9a-984a-5e2851e73d1d fbfa46cd-8d97-4c5e-9599-962d60ac5979 c5e457a2-c06b-4079-a994-96cd285168e2 70eeb2e1-b5de-4b72-92bf-b1f27f206c9d cb0e942a-2e13-4b4f-b89d-777010a59297 cc606be1-2c8d-4f29-8572-5b8e0166d033 391265a3-c2f1-4118-ac0b-37f6401bdbda cba53a36-66fa-4dd9-92a7-da74a025d851 19189e5e-4112-4a21-99f4-a0e3d6271432 78dc74b3-9f5c-43fb-a89e-80893a136faf 39a270b5-3458-430d-9bcf-7f2bcde03b93 904bb366-8627-4af8-a271-36464ebbfe1a ebebef99-1c24-4977-9afe-b1e8cbc56756 210cc395-b065-4f79-b20e-00ff5f855124 b6a4d61b-3002-46bc-b041-99bc9888a9d9 7c64fb37-34f5-4a5f-b501-363b625baec9 f9bae309-bacc-4328-841d-dd418c1896d9 e15fb530-d952-4103-a5fd-632b9b58242c 94505e53-2b3f-40e7-a01a-ee0eb4d37165 f9620715-b50a-4cb8-b99d-a7fc8de26d85 8d2f7d42-3259-490d-9209-fd491e514229 caaf763d-fcd4-4f59-b061-11b26532e1d6 8cbf7aef-5f94-4a6b-9360-663635797230 be713b64-a7f8-40c2-bf8e-d4978eb83015 2001bb27-946f-4d6d-a29a-5be6156e3009 d75dd44d-838c-49ab-b6b2-8f394e299c19 f20bf96c-dd21-49ba-b3e7-b37b817a72d3 dddf1c18-fc8e-41c9-9000-bc9143623bf8 69c22ecc-e301-4f42-85f4-e3abd06b7af3 ddd0fa68-3236-49b9-98b0-88981699d1f0 1b502ac7-fe05-4e3d-88bf-3ea6b70fa612 d70ff330-03ef-4938-9d14-81662be1953e 77ab6b06-4388-4e73-81c4-8a06073d3ce2 b7464def-88f6-4d9b-8e29-a4a0bf67cafa 0cc10944-6c8a-4ae6-99a2-f64421340ad9 06dd37c6-6e94-415c-90a8-47350dc5f7ad 5eb4c92f-ba53-4ed7-89c2-eed7393d9fd7 cf666e82-641a-4f36-ace7-909f51927c81 66be6e93-0c07-4396-ba33-7685a5e94b24 e69f763a-949c-419d-a753-56583bebe343 d1b0c08a-604a-4b90-ab06-e99da8e352c6 66b424fb-394c-43ec-a2c3-1ff19ecbb306 8b96e4e3-f37e-46b7-8a9b-1c4345af5d38 51268833-8ba4-4176-a990-916422a3d1e5 3a6fcb46-cad8-471d-bb19-868eda7f14d3 e67465ad-98ad-4c14-9611-3890b6625341 2274da23-781d-48e5-89a6-224df3f9e04c 7648656c-a018-4b82-9fe5-55aa3ba2fb42 2ba04ca1-be8d-4ec2-82f6-2e4cbc746a1b 5969cf2c-fd3b-4513-bbde-0d0845698e3c 81e9640a-213e-40c6-b8b8-41a11c344a38 cbedd8ff-8027-4aa3-8b36-dfcd31cade65 25d71ec9-a287-409e-a31e-045b5fdf19c5 6c78c46e-f4e9-4ee4-aaf5-d59b6c1238e8 49097ab8-af5c-45a6-a63b-5cce7f983d2e d498f02e-8d64-4e31-aae6-a2a1433623a4 e9b12d0c-cc46-4e81-92da-8469278e5dbe 134aff4f-6349-42c3-b91f-aba4bb7ee51b b842cc9e-4fff-4b0b-9dae-f8df390bcb46 eff0341d-6821-439e-9c65-830b787fa724 954eade8-40f8-4c44-b425-1e576b23fb11 90051972-21bc-499b-be21-f15657cdbaad bb9eace8-0857-4de0-983c-294b2cd8bc6d 09fac7dd-e43e-48b0-bd21-9644692a1ad8 8c397c2a-1891-4cd6-8549-68194592f2f0 13081b24-ce9e-49a3-9f13-ad4a38669bc0 fabded5a-7d3d-4bee-b08d-5c5f5b9ff748 bdda67f3-8476-4687-9ef6-2e36855c01f8 54e3fad0-bf0e-4371-aefa-9094e1b9b2ae aee2388d-dd5e-4903-a59b-110f3a1d1f13 02ea7b1a-c5e4-4fe9-abcc-26c9ec1f150e 295a031a-e09c-403d-ac2c-c5ea50bbc381 45741643-281a-4d00-8f92-e22d5aae70a0 3ab6043e-32af-4e3a-aeff-3b26cd625d17 71c8bf5d-b341-4bc7-8be4-73dd5ff5bf56 b84ba7fc-d214-423a-9a20-a4f402457188 e990654e-93ca-409b-9aed-be0b00ac10b7 d81b6e42-5684-4e24-9b80-6c369e7cfa7f 6d5e4e34-3653-4e73-809d-1e1fe818ef9c 964863df-f5ac-4780-bddd-daec5325fe11 772c6d7e-7dd9-4711-98f9-a86dbc7bc503 33633981-322d-4f20-b083-454b20b3a8f7 ad041454-6fd8-40b0-894d-1db429ea68d8 615b643f-9c67-4d31-a8e1-f85b4edc9152 83c3aafd-ea2d-4942-ae2c-f269e20d5aae 4f4cbb5a-6e0e-428c-9517-2d07ca71e5d5 a93d1665-34c1-45a7-9f85-473362c39142 3eeba894-de74-4ad9-8645-2bd9e4070e23 b393facc-1ff3-4dcd-9866-ff4456d12bf4 4ddd37cb-6e55-4b17-b474-baac1c9d9d3b 2822b01c-1f45-4a1f-844e-0dee3f39c019 d950c48d-b8a5-4848-a221-8011f1bc7489 82aa2a4b-ee89-47c8-b04b-7beccec4e7c8 69c0af1d-51c0-4d77-82c4-c182cd707fee c18a42c2-e4e7-41ec-a019-96fdf227b3d7 9d02f8ee-96af-4cf8-a02e-c39336ebe05f 52b9b746-9fd2-4c9a-8151-eda7f712b825 402c6d8d-305e-4132-884b-7ac73ff41d82 98ab3ed8-2122-4f28-acaa-70826edc0989 11d8f5d5-4bcc-43bb-a118-6647c8de502b 9fe56c48-39d9-4c0b-85ac-986ea4681a3f 4fae2f48-07db-46c9-abd6-f56a12b308c9 74a026d2-e3c3-4f9c-936f-1cd96439af99 edfdb555-01a5-4cfe-95f2-9e321659ab3d d6ec8a06-4fa9-4cd9-891b-770f075cde22 ba0c9f2b-1c9d-46c5-a5ed-aa85d2fc0256 d96e8f2e-c107-45f4-a660-4ffd12b0ec0a 4263960d-0c82-416f-9b08-64ad01faa437 8046facf-3151-44d3-9aa6-252accc4182d 6a369f8d-a215-4dd7-bf51-c98e1c2728cb 4bec02a8-6570-48f3-bb33-276f4eaa126e 59bff334-6dac-45bc-887e-dfccc6e36c37 bac4cca2-6eab-4cf9-96b7-ea7dffc1edb6 759464e4-8299-4bac-bcd1-0006ef1e4f52 d25a10bb-d2bd-4cb6-850b-ea1ba54b22c0 ecf34bcb-d17c-41ed-9993-7d654287c0cc 95906f63-69ad-496b-befb-286984d29e33 7342b764-e142-4c60-860a-b3e63116262f 2b626e93-36b4-4808-bbee-207f2cfb017e 7312c309-9be7-499b-9c34-c10ad00fc1d5 fb92af64-fcc8-42e6-8e5e-170fccc6b96b 8cb97f33-2f16-42b7-a284-2b4e9b52760b 2ac09780-9667-4878-84d0-b2ff8e860c19 1d556ae7-959b-4d3f-a45f-4288b13b7652 1c79f628-aa77-4dc7-9e03-ff9e83bb16aa f70508f6-777b-4c08-ac8a-fcf641e93486 c45e4868-b1f4-4b37-991a-13d35c564321 fbeb4f95-e9d2-496f-b8bc-9a06caf671b6 60ea866f-31b5-4cdc-a245-414de854c9fd 91df8004-ac14-47b7-abd0-3e06ef1bdba7 7e2acf00-d83f-4f1f-bb5d-8edabd4d32d8 82f2f629-d5a5-41e7-8c8c-b96eb73298bf 8d6cb80a-c9a4-41a3-8e0a-240958b66b06 37bc91b9-ef43-465c-8e18-7d8d918b5ae9 b741f627-c0ed-4dff-96c2-9ee263234943 92355005-c92f-4c4d-aefc-50b9279b1839 f9c66d35-b758-4f17-a8a3-27a108835cc2 cb6d6559-9c5e-432b-a165-d8309bdc5707 c435a9a6-e62d-42cd-92ae-d233083f2a1d 59a668a6-8867-4d77-8896-44e9c8ded1ee ba102dc0-7fef-4646-8d82-1eeb870a2abd 3da2b391-5088-4e88-8b8d-938aa200c13c e480e97c-0c65-47b2-9749-21244f1a96c6 db99931b-19f3-4a06-accc-fbd64a377842 8a7e7056-79a1-4404-96e2-7ce12e409818 9c41786d-76d7-4743-816b-48419c09f266 4193c20e-48ef-4d67-856c-3e31fb25c0e0 04c73a9c-df9b-4c45-b817-5e28500bcc93 11b0e3cb-48cc-4f82-9aaa-7d36e41f8533 2dcbfe68-27b9-407b-ab2d-f3e35f633d8c b3f98038-96b0-4821-968c-553eaacb1b11 e7e7a86a-98b0-47eb-ae6a-541b4d8426ba 73c617e5-05e7-4faf-bff3-eada3017221c 50c54f4a-50ea-45c2-82da-57f3187ef377 4795f400-e75e-4ca1-a432-75f7ba5d0616 994d5663-65e6-4938-992b-ad10b3cb1fe3 7c8f3edb-19b5-4b45-8d43-0aceae390c4d 85af14ab-4de7-4eaf-892d-261234cb845f 24a8ee3d-735f-4df0-9d03-22ca42cc5949 61a9cf57-28a6-4b89-acfb-99bfd2c75ff7 d1c99429-3812-435f-8eef-f96651adb001 f8ee722c-531f-4547-a8c5-49e0f9daf805 b7af8e88-fb6c-4fe5-8fdc-96d9c2274b98 8aab6834-1ca2-4da2-b6b3-5b1331e2057f afa1cac3-a1d3-4191-9049-b9b423144a37 fdbed798-cce5-4e6e-87ca-d6e13150b70b bb37ac34-a394-452f-be22-8573c86f1bd4 856dcab4-10ff-4902-95af-dcd0274ce9a2 d333b298-021a-4158-8189-42b9de67ba1b 877dfbb8-0839-4d1b-b4c3-c488222acaa9 20e3890f-ae33-434f-9c06-2eb150a0a202 55060f43-7199-482e-b2f2-da79ee3f7f44 24a62734-45fc-4f4f-991d-15615c0a3393 73384c9d-8b7e-401c-b79a-fe411a9262e0 6a465876-cb63-4adb-b3e2-1377d16f9337 2754afac-dbae-4153-8f4b-b1eb71432c01 88b45f3f-e7c8-4e95-bbae-bbb9e6eeb157 7402e541-36bd-4dd9-adc0-7bc2497ca8e2 9f7db34e-7b81-4ebb-b7ec-5724ead9c85d b6eb47ea-3a54-4216-9a2a-7907acdc7c86 5c91debb-1fd8-455a-8602-945ce423b6e1 a7661edd-68fe-4bab-bb8e-9984edb48733 b6365806-adb4-4c0e-bfee-348cd6b2bc6a 454a6c6b-cd7f-4524-aaaf-712a29127513 66e5c2a8-daef-4b39-89d4-cbf2f1c33159 905f6981-7335-41e6-a709-d0ea0bce45b7 9172a162-d2b5-42a6-bc44-7495155f45f6 ef58a551-2315-49bd-a428-d8cfeb925caf 3fafedd2-5ef0-459f-8b3d-48f8dd39e176 fcea02d9-b900-47ee-9900-30fe1d9d5c12 c34bfade-8c84-4c1c-9d49-fdd6a8870d89 a260a8b7-778b-46a3-af8a-d42350cd726f 86c144cb-8540-480b-ab36-bdaef60fa003 2b891722-5b19-4624-9463-7b17e41381ee e047e0e6-1bb9-4bf0-b209-b0411ba4ef18 04036e62-1b4b-43ad-abc4-72a5e37104c8 a131f279-3fba-4557-a464-28683cf6fe60 356d8ea9-7aa3-4ff3-bdcb-70f7b30e5810 705e6390-0adf-44a8-905b-2cac94538287 a0b4e010-4f8b-4d1b-9e87-6d69ad50846a 7870484f-f1c4-4a1f-a85c-c92f1dc9c305 48ab5a0b-4555-4353-a11f-ba6ccf4b64b3 fb707f68-e012-48de-8c7b-53d44f7ef213 0e167c7c-ddda-4523-b0f0-bb3ef13cccf8 32b88c15-f522-4bb7-bf0f-a8acca4a2837 273528c3-ccd7-4083-94f3-e7939f963710 22ea5077-b7c1-4158-ac01-7464c253115f 962e0cc5-161e-4f7c-8f48-268efc30be3d 4ddc93fd-9efc-4115-b3e0-f56ce7c83cab 9b1d5445-de3e-4353-a88b-528579f492d4 9d64fb0a-382a-4c81-9e47-6f973d132de0 9a7893a4-29e5-4f4b-a584-5fbaeadcfe70 c4ac70a9-c490-43c7-9b86-3bee479537f3 cb7c2313-3344-45a6-8738-93f16a6d893b 9913baa7-225e-496b-b4e1-e957647bc9ee a7d599bb-4e21-4abc-90ab-4cf242310f68 749e39ed-91ea-438b-9e20-eb06de6035e5 4c3b734b-a6c5-4017-8a56-cac7ba328e7e 2a69fbe4-bdfa-4ca7-92ee-d6aa7a105346 eff23e58-28ff-429c-8adf-4b91f4e9065b 13c2a5f0-e592-47d6-8e5a-2be951e1e3b5 fd609495-9739-43f1-9d46-ea770c694b88 3e7d03b1-4394-4736-a5c9-2f32c70ccc7b 3323b30f-b36c-436c-b251-d5165915e3f7 ae2eadc5-2dd2-4a4d-91e4-77c1837e14a8 308841d7-55cd-4c18-b20c-5b97901d090d 09c2abfb-9ae6-494a-bc95-eeba7e8ddfb0 3cd77904-a2b4-4dcb-b91e-44bba85926d4 ad01027e-e576-4522-bc0d-9766f04da26e 7a274fbc-24c6-4dee-88e9-3d93c7733188 968bd296-6e38-456e-b0ff-396e876f4049 ea0e61dc-584d-4ba6-a568-a2d5b0cbc391 cdbda67b-fc6b-4b2d-a3fb-ebc8ea20527a 6a8c144e-11cd-4f41-bfa0-19693351d85e 9f0203d2-d4d8-4852-bf1b-f37a468455f5 10071df5-d1cd-4ac6-953a-65d0d1c459e8 5219af8d-3026-4d7a-bfce-ce913358c8c2 ce00647f-2ee9-490d-9eaa-8c1480c51d91 524d277a-75a7-405a-a17d-323ce65b8c01 2db6edf5-1b41-49c3-a5d8-f396dc1a5fff bb85a68a-b5bf-406a-b790-a1286bbae876 69b284f5-4db2-441a-8f38-8fada801712d 1181f28e-7a30-48c1-a9d9-86f5a9d4ee48 8720a684-64cf-4847-b09b-d3bc9c81acbb 34b19281-c52f-49ee-80c4-b6359cc35753 e6e116ee-5a10-48fb-a488-6736a53ed3bb 935767a2-c172-4437-96b8-71fdd56517ac a2fecf80-5f4b-48f7-972d-e5b13972ad6b 5774b2ae-fcda-4fed-98a9-5d56eec8e6f0 6ee14ff8-9d54-46d1-9607-c2537d7f27df 546bdd41-720c-440a-ab18-5b0c35f56ecb b1e73138-e427-4212-8fc4-9dd980114c44 8f507714-9e65-471f-a1e6-6bc3b3897c2e 84bc10c6-4944-44f3-bf47-cbbc56110281 8cf5a37e-cbe6-4209-9bd4-f7df2cce826c 4fb5d703-afaf-45b9-8169-ebe305af2d3a 98ea1c73-4f3b-4332-8ac7-59c4f5b6def7 d6d5eba5-053d-4caa-bcb5-daf45b644936 04e3e2fe-2ddc-41ba-9c91-2677eacc2727 b798e4ff-1820-4788-942e-b93a981aa9d9 21bcb9e3-4fef-4613-8f82-a8b157eb9e1a bbe69ef6-1f5e-4851-8378-47e02e3d9052 c51cd851-55d7-48c0-aa87-d326af508882 b88f2fb3-ad83-4e0f-b247-cb80d20477a9 8d2b5a4c-1d99-4ff4-b2a5-f8d6ebea9e2c 8808cf5f-5533-42a9-b135-4fa7089f0a67 a0114381-014b-4807-b44c-104f39f2fd53 b8eaa4fa-99ec-4411-9299-4477f503bb53 b5c03cb6-68a8-43e3-afb0-71eb2ae9112c c5853312-f44d-433c-baf0-707200b9d78c e5d16b22-104c-48aa-9b49-4182e33827d6 59fe601b-bc37-48fb-874c-dedef631c66d 4b94ead8-95b8-4679-b24a-e3a24c76ab8e 4536e437-8c0f-49fe-9dd8-9d83971e2733 ba7d668a-8581-404e-a745-1b70118b7b75 fad37224-cfa5-4bbc-be7a-48a8d6456980 3e59e941-9fec-4f91-b134-84a7ac08d969 66c45b69-6a9c-4d78-95a2-1fc293256318 d0db86df-c0b1-4ec7-8c5a-bc00a24c023b 38a70993-2e9d-4c40-912d-b3db1df68717 1a95d433-571c-4ac6-80e2-d47037000f25 6c60512c-9aee-4abf-bd5c-3a6966e7f778 49505486-f792-4cda-addd-47334a8e1b0c 5d8ec9c6-5832-4288-ac74-a3d2ee44fcb1 eaf298d2-259b-4c43-b4f1-63e7102171fa b398248b-b0aa-470d-bc7a-c432bd1491f1 0c469b4c-9734-4b7f-8ca2-4a44d03e9941 258cdb9c-c890-4f30-8b14-27e9937e5c7f 352ac4fc-f19b-44a2-8d0f-6b4143e8c72d 81597d43-e960-48b4-98c8-85b8ad9099ce 01fe21a8-aab3-410e-b1db-15e9e3d4e4a1 dd41767b-f0fb-4910-ac0f-2f871b255fea f792f054-9382-4b2e-bdfe-82c08ce57808 801bb424-2500-45df-8cf6-5f17e45a11ca 707bad19-4c10-4cd1-b83e-d46155af294d 271fe032-3e6f-4c5c-86d7-73d42755d9f8 076bbddb-6b65-424f-b71a-c76a315a8bad 380f0803-6363-494a-9a64-354109ca10ab 265276c1-7d54-4177-8a2e-b93912e6c980 35274e50-c0d9-4015-9582-13ba33663b6c 80d7d703-5d76-42ef-8b0b-240464043c33 53319800-8a9f-4dda-a679-89481ba125d3 f21c1369-6b19-4521-9c3f-20500404d11c 8af9aa37-a286-4493-ba95-2a4caaed918b d7371095-9641-4553-81f7-a8eb60d5942b af554ee1-1810-4304-95c8-74cd4e0f91dc 6e3ecc03-d0fb-47b0-a307-5a8f3e3d948e a88253e6-9480-4372-999e-b0664fb2fc1d 1f028ce3-e447-4ead-9825-1af2a8f1a53d c9984ffd-480e-4a78-9910-7dec5ceed72f d72e82b3-1696-40c1-82a6-bc527ae3fb9a 9789b932-2421-44ff-b1e8-342a98162967 f3956339-a2b2-4129-9724-f84d982a89be 3b7d8f0b-6c57-4618-90b2-2a499eda5a20 7f8c3cdc-4925-405a-9a03-96a523ba48ff 2814ba17-3ede-4966-99f7-67b177f42144 c8d5d1e8-f238-4011-bd39-aa145fd8293d 9e7a8866-ae05-4d77-a3eb-f353b6b93e8c 111acf1c-6dd0-4c62-9cad-a45bbbf63e6a 6b5dba2c-53c8-4c11-99f9-b5ce33dfa4db 9e89c6bf-f7f8-401f-bb6b-113b004f352b d9f225c9-c02d-44c6-b017-8a1c8ae60bd5 36cefe51-cbda-4a25-a6ea-f284415425f2 927a8386-cff7-403f-bba7-f495361b23bf 87ce7633-d995-46f7-a129-57c9d0fc6de1 593fbd72-b254-438c-990e-beee23ff4b5f 6cd6007b-4639-4153-b655-ef744e2f6d32 33b98005-5bf5-44eb-9e9a-9cfa74e86ffa 08b0e006-cb9b-477c-8827-c49951c2cef4 dd29b499-29e9-4dd4-baf4-3e2a3cb29e4d 25a45ccd-e0e8-4aed-919e-17a452266478 cda3d93f-59e9-4530-a6f7-d0a4aaa2ff89 d3aa1461-8b63-491b-b45e-65b353cd125f 38aa028d-86d7-4253-a195-38ce14609591 1bd5760d-d58e-4851-9692-317c10095e19 4f205453-7c49-4f93-9476-044cf7865762 fbcd7ee5-69fa-4644-919a-ac5d09956f4d e205d436-87f4-4986-8d4c-8e49cfd3babe 4a2cb3f0-b28f-4821-a3d8-97ddbac5e681 bb8c5075-2efe-4065-88b0-9a8471938a1c e314b1b2-a417-4fb3-8f62-e98084230869 1d7833b1-b200-4f7e-9b3c-0bd721dc53b8 92568230-43c3-41af-b359-3436df6e59ef 2f0624ad-ccb8-4fb5-b5d0-93c885154cc3 081ccd2f-ff1a-4a1f-804a-d79084027801 33618556-0e79-42b8-a77a-79931e7fc3c5 1961f715-1116-41d4-be59-3a55217e4a23 79fb3c4d-0486-4d04-adfb-095c552cfc7f aad69818-f795-4a66-bd14-a57e334fd92a e705b9b0-392f-4be1-a3cd-5e1d72d18cd3 8d4d15e3-b7bb-4330-990b-1a445b7f7921 cbbfa779-4fc5-461c-8728-cbf484c38fad 58c33594-c5e3-4f47-8181-aa6761086090 01948f8d-e00c-428f-861c-7d951858d4e7 e9342a33-3e36-4d86-ba88-1bd5985b58e6 9397e146-6b46-436a-b83f-4dd97aaa1c1d d5b574a4-9152-4beb-9e9b-e06e7f0e8185 5399b5e4-4246-4d1c-81ae-13511f4cf801 48d3d035-cc14-4cc1-80ae-e712249d9a96 05233772-3eef-4d96-b8f9-2d78c1d459c0 bf00e54e-9f2a-4dd1-b379-44118030baba 560df9ba-97fd-4d0f-8fdb-2d54cc7ecb36 1327d60c-76ac-4e2d-9189-5c9adc378412 b5e01117-44a0-4349-b7a0-bd362fbec897 aea1ee4b-08b5-4eea-89b2-b2cb235ded97 4bc1aad0-fee9-49b0-85f0-2f4bea9cfdce 2bd7d2f6-bf1d-4e47-9029-8aa3a9944828 de4282d2-8905-4ed9-a993-76faa44e50b6 6ecea631-08d9-4dd8-8028-8388a39d5858 1a2d565f-9d8c-45fb-831f-c1d655c0e86a 2e304bfe-0e3c-44e7-bc52-63d0d6e53ca0 80d1a29a-dd1c-4d2f-b5d8-0812e0882cbd 8fed4b96-ebd8-4372-bdb5-f7ffdd2085a9 545f541d-bc0f-4c98-934a-11c91be854f1 f552ed62-9364-4f6d-8c1d-3a5b03b12308 ec6000af-ae9a-4a15-91cc-8eec49061639 20a9b84c-586e-4ace-8775-14b73f95973a f61553e6-aa16-48e3-807e-53d7e8077015 12b0660c-cf65-4eda-8141-83d7f5d4641e 0fc51814-b156-4a10-aac0-e4f1f6bd5b8e 988514c0-1ae6-4420-8a1b-a1a5eebbdcda a9d1a682-b5ef-460a-98a9-492c4dfdf69b ca4dffbd-d0d1-4e86-a368-1d3c6776a9e9 8ab9c62a-7005-46df-952d-1d72d5767ba9 6d6b183c-be3b-42b0-b9c4-1d8d1996518c fb61b5bc-ad1d-4e62-9498-b4507b5f887d 06d344cc-a1a5-479e-861e-06fb7c7fccc3 3bcd35f8-436b-4877-b7fb-ed267dae96de 7f0fbc2a-e010-43d9-86ef-2ec5a163dedb 3b046148-dcdb-45a7-87a4-655835b80ff2 30ff1988-f7b6-4aab-8674-91bc2f91253a d8071f92-fe06-4b95-9c51-5e1d91764510 12cfd89b-d49b-455d-8d19-8e24384af99e d2aab05d-6673-4d89-91ee-0f9738e3ec65 e2d6d112-e4b4-41be-abb0-a5024fb812f2 33d11eb2-ab2e-4be5-abc9-86f5280b12ab c1a5e37e-83ef-4880-bc45-2890b4f862bb c51e994f-c2b5-4b3f-9736-0c542f8e7683 743552c1-72f8-4fb9-84e7-477bdc1d2147 85ba5fb0-c1cb-487b-9518-99b6be898dc1 3d91265c-8359-41ab-8d22-cf0d69e179a7 d88dc1cb-1fed-4958-a474-6b4cc89a6a96 ea74f222-79d8-4eb6-9668-21b168275b72 97d3a24e-87c8-4684-8818-635aaf9eaa45 11716397-d599-4efe-9e0b-9f68e194a421 0232cbc0-267f-406d-acd9-453613787811 7c10523d-a255-4041-a382-cab29f91d270 c4b63026-6933-44fa-9ff3-19a3641698ca d5880800-3563-4b09-ab38-4d94f4445850 92b01782-db33-46c4-a373-511786e7d706 bd01982f-78e1-43a5-87ef-99224fb36971 4ec22bc6-b34c-41de-a3f3-8f66e057b7fe 3f77303d-0518-421f-a9f7-deb581da9ca3 fd47ee8d-5704-45dd-924b-f1518b2096f4 e2bbb891-d918-4122-839d-4381f4ee40e9 b1b6cae1-616a-49ce-bf37-2f44ad22eb80 ae1e782f-3348-4c3f-af80-7e336b462cc8 6259b019-8729-4626-9cd4-215b762e4837 fc8ce882-1bdf-41e5-b007-0a956cd1f607 f02fea52-fc15-480e-9639-1efae0decb09 4f869055-993f-4471-bce4-3583c904bd36 d5d5c709-3e63-4cfc-acfb-0cea399ac085 24c501e6-cd14-4ba5-bea9-279e8ec32bf8 47ce1f88-6f65-4aa5-b705-b1afbad47fd7 a1785b52-ff4f-4ea4-86f5-4cfe3feff50e cd8a94e2-f44c-40c7-8bfe-9b1ab807ee6f 9b059914-6702-4779-a16f-bc7179af160d 416194ed-2598-4ae9-a4a2-72dbf97e7b11 48d04cc8-f2d8-443b-8141-9c6da0e1c467 8d87e329-0617-446b-866f-92c1c0263137 4babee52-8d1c-49e4-bfe2-caef072e33d4 013bc1a2-87b5-42b0-86e0-9843cf5a3ec1 cd758e66-7169-47f9-aace-708dba7bad7b 61594b06-ab83-4a62-93ef-48db6fd74769 56a25f54-4650-458b-9f09-1fb57d6ea2db 8ca7d57a-d217-4882-a01a-79276a493b13 9d57e1bf-95a7-418c-8291-77008bb0e48f 854e335d-d1ec-4246-ad45-c110cf1e2e6b 43e2c1df-6c06-443c-9b3e-9629d78bc2d3 a26e66ec-c6a4-4556-89b1-2bcc32f5792f 7c942afc-8133-4d39-9196-f842a2e2b00f c9f3168e-e223-49ca-bf1d-0841efb0f624 a553a270-8c27-441b-b5f4-972ac86dbdc7 4fc470e2-0b68-4334-b778-7beba212e87e 80087249-0d66-4e3c-9f00-3cfd32ed8e38 abdb35f8-e83c-4276-a363-ed1a8d08a9fc 860806c4-401b-410e-ad22-20d06a89d488 9acbad78-d62a-44e3-9a9b-5ef2811c62e5 e578d4e0-e54e-4efa-bc8d-8e34476a0e03 bc946b4e-0595-4a04-9e72-8ccdaaa45e02 881dd906-00f9-4f96-a567-943c8e2a5a70 128ffc6f-152a-4243-a371-0cb515283357 e87da840-2289-4ea9-8380-f9ab33e52215 7a2ace61-25b7-425d-a424-f84f3c1c4500 d76db68a-4ddc-467b-a58c-1b51c8af7917 ef948239-d3eb-46cf-bfd3-6d54b4aafcab 09631993-3203-4a98-bb2a-8310ffc321a4 f5a0c4e7-0ab5-4f40-b3cd-bffc305d0c4a 3bcd854e-d610-4cf5-8f0e-6820e5ca7b0d a241a198-0882-4759-8939-fe8767f287a9 4f627464-2d0e-4c81-a7e1-1f7c0a88d78e 40f76b63-a2ad-4a5e-be32-e42a3087679c 298fc58d-753b-4dde-9313-d3a4931bbf90 307e038e-bd88-4b6b-a172-f285e8408130 45fe6317-af0e-4f87-810e-e5772f93e0df bd0fd9a0-14c3-4490-ba51-dc234771edbc 074c7d38-9b99-402c-95b7-8b3e66ffe662 64090713-2394-46c6-aaa8-b9139dfa8a2d 00bce859-88a2-461f-88b1-96c3c5435637 4b5c6d04-d6fc-4953-b781-b231d76a0e4a ccc305c1-e7ff-42c1-8132-1ebe9bd273ac 1bfe80cc-8b83-4112-9ab4-5d00b8a6be72 ff787648-074e-496c-8891-fffdba4a0304 4aa86cb8-8310-4dd3-b778-002d18f23f80 f028deb3-4830-45fb-8e80-ee2220ccce9b cf75bde3-4ba7-4e38-b906-2e5a1ea02140 a822ec11-7461-4b3b-80d7-f540d5116fbb a914f8d4-3550-4519-85d1-807a83a49e2d a0661383-178e-4568-96b9-c265628b9588 fa8d12dd-5fcd-4c5f-851b-a546a08336b4 4680b44a-726c-4c02-9bae-f52bd43e0dc0 a9a8a5ea-ea4c-45fa-b51a-5a224825e261 ee465dee-d24a-4989-975d-d84d34626c36 d4b78bd1-faa8-44b7-a4ec-c274933d4a55 4cec5c31-d831-4589-9c74-71284092b4db 2b45354b-613e-4499-82b9-54e5f014c228 5f09f63b-9889-45f3-845b-7bef8f54225a 812dfbab-212a-465b-abaa-fdd09082c9da 8dab0e7a-e7ab-4edd-9f4f-23f3f84cdc35 a887cbea-87be-4f42-b495-22bee38015ee baf0fe80-37ed-4cbb-a0fa-b31794214a68 af252d54-688e-43ac-ae01-883b36faaed1 fec02145-ca0a-431b-8749-f617e0d56a65 41d73fd1-33f8-49d0-944c-60eae968afb7 af7c7243-97fd-4060-a0e0-8c76543e6433 fe779f4a-1236-4f56-bd4a-afa423ffb762 c94941b7-b539-402b-9577-8ebb1d1634ce 42540a5f-40e1-415e-b038-792edcd3d05f a1cf0828-c07f-4e80-8ae5-dae19bd4e15e 1478c738-5087-4688-a0f1-8e43e3e35965 1c463062-6479-4c67-8611-e86cfd353f6d 1e55ef44-e3b5-4785-9aba-5de0bea1bcf2 a07a1b55-fbc0-4843-823c-d8d6007e6c68 1b0108ca-ad5e-4235-b17a-8ef56c9ffcf7 b0262429-b9e5-4961-bc05-2df64fe31234 29fd8685-0071-463f-aa75-d3e41c9c4819 45258ca5-2a0a-4398-ad1a-b2e3b9b07799 c8a65d62-b27b-4858-bca3-380a3772df0c 2a6c7426-b11b-48f9-abe5-4fb59df1816c 9486ae67-a868-4e8a-b1b4-f687d47e9f42 79fe5ed2-0d01-4e3d-b27c-3faef9bc2d02 6eb8fa2f-942d-40b8-a74d-7bbc6050ad67 6b83e024-75c3-4039-80fd-bf848b497287 49c88702-7519-492e-a8d8-1d100d16f8b0 a5d0df93-58df-4a99-b06f-24ad582013e1 420de76b-98cb-4314-bdad-0d5185bfcd4d 23b63206-7aea-4827-82d5-ff08f799b2b4 69389471-5cf5-4aa8-9469-4fac30394cd2 6216bd59-5047-4085-9eca-2bf58db83806 846f3d68-3da0-4490-871c-ad75d0249cf5 fad6e98f-cfed-4571-990d-a112509dd2d4 d6396128-fe29-45aa-ab3d-2ff35c84bece 037589fd-e36b-46bb-b243-83453da69cac 7a3e2ae2-d1af-4c80-b54e-4c8a523bdf0e 2fd7a460-7606-4d4d-b159-3b6052037317 420e7b69-bcb1-40f1-aab6-b2a9193e917b e82d364f-a260-45ff-93cf-7400f0730fd7 c29b6043-6678-4cf6-a0d5-d06222a3c332 08d06b7f-4696-48d5-838a-0c5bb01ebaf2 f8143cfe-586f-4900-887a-df4a59291e14 1b5fb80c-9bbd-4639-8d44-8550af559872 348d8483-e9d3-444e-9093-2d047717d5ef 79b2c661-3277-4524-8ec9-1b8b3b50436d 61bf1d9b-7212-4091-930e-2d86b0b29f58 386d834a-7d5d-4ae6-ab5b-4189ee9389ac 050a5bf0-8522-431d-b769-ee996c3f80dd a57be0f0-e7ea-4934-a194-c9bc466c8365 f0f1ea22-347e-4b89-a2ec-2a5ae4026937 896687a7-a6cc-4d7c-9b23-12bbb722590c 537567e0-c32c-4c08-beda-1ee1beb88332 56247f5c-6eaa-4620-bb0f-0ad157600d47 4df15275-3360-41e9-9050-db1712b47ff7 04e473a1-e062-44b3-8d8b-3fff1c49471f 87565019-e084-4e69-82ec-a4f32b2bd3ee 2ecb2970-5d46-4432-a17a-6c4e39cd9475 73d7d636-3bf8-47d4-b337-ccb4cc144175 2006a95a-4028-4a2b-8b4f-b4014f6140f7 3798421c-92f6-42a6-b12b-6816b2edf4ce 911ca716-5b3c-4ff3-8130-572c5c87345e 3f5878c2-e7ae-46fb-812b-b514efcd4ec3 ec9135c7-fc22-4ceb-8661-b2c1b887f083 ad431c05-629b-4492-b452-cc0a18c74d60 28e01800-2909-43a4-b2ab-4616bc451f61 f1abaad3-80d9-40b7-a663-bb5c00292388 a5705efe-59cc-44c5-9c1a-221615b5133d d84ccd28-7da0-4356-ac02-c04b3c0e6630 4603002f-7c4c-43d3-8d43-1f8295037e6c 692c2f3b-851b-4c19-9090-a22e920470c7 7efd270e-f8e6-49e3-a642-f88bf0c00206 5e6c8d61-b207-4317-b555-611011df4416 4e9e9d32-0eb1-46de-8954-4f5efdb49cd8 f9e8006c-972e-44ab-bc19-c02f01ff3cf8 32e2d25d-38e0-4dde-a4f9-ae4fdeaded51 bbd3eb5d-2452-4dca-94e5-78ef46d99d07 8ba629dc-1d0f-4ff3-90b6-622dc27d5c25 79b17731-bb97-4776-9c15-9db6dda15d21 d167a71c-d141-415a-a688-8ed527c1e3fa af099697-9cc1-4c3f-8e16-5f41c940de8d ae4bec27-c4bc-4130-83ee-74226018f06a 51872c63-f0e0-49d0-88f0-b2293daf46ef 4930e5f4-af56-402b-9606-6866b3598d65 9a25537f-7875-4aeb-8b70-a6e9733887f4 cde0ec65-6534-4e50-9cb1-ea24022f9e7f 4dd348a5-e980-450f-8f82-6921a9a93360 541e4abe-1c35-408f-8923-a43822de958b f338d0da-86b3-42f8-b4ad-c82b2edfa3d5 c6ddc846-4d34-4b79-ace9-f844a7e844a4 ca053cba-90f6-4804-8ba2-6c0154395e9a b601dc3a-f568-4a72-862d-b7d0a5c3a2d9 4626faa9-4850-463a-872c-32f7bfdb10f5 ec0445ae-f4dd-4bb1-8e09-be82ecf4f0b0 dce7b57e-179e-4260-a16c-b62555d234c8 490a6462-cca1-4f33-82f6-e7a0afe203d6 a1d74460-db75-4831-9b51-cacb32ca7844 a6badad7-55ac-4207-a02d-41e94552f1d4 b6944c5c-2929-4c32-8030-62640b70d1d3 77a49760-fc7a-49ab-b6f3-5141ac380683 0031e790-7a9b-42b2-b8e1-3ad6d0b1ebf0 6e793140-5d50-4ceb-bc47-efe0f32ef6a2 5339c482-c56c-4196-b7d3-3402b4e2ceaf 0d24440c-b1e7-41ea-a161-cae94f305601 6e0a4bfe-61fd-4a16-8b06-48b9f58d1c11 0e2bb072-cd82-4f33-865f-e7db18bd95d2 fb6820ce-89cf-4d9c-856d-a6fab8bbd1c0 f976f6f2-1740-462f-9a82-b1ae2f238b20 4fbe2ab1-cb65-4e15-ae8b-f525869d84aa 4a915a94-94d2-4735-9bd9-e6b28a0eadb0 097b1836-183b-4681-acd2-66f34395079f b02bc048-368a-4b31-9b4e-31befa401455 9e52a61b-2e45-4f7e-a679-f741a0dab630 eeec0faf-487c-4218-8b34-30e171bbd0a9 d7d798e7-773e-44f8-9b83-0229907f68b2 fa58442c-0da7-4088-8c98-1eebb0db44b1 8ff877e2-735a-47f9-b863-17ace1d92390 43023daf-aade-4924-a7fc-3ccb490e5589 6ba16ea8-9530-4dff-8bd7-e5a9449bb3a6 78940dfd-1f98-4e35-a39b-f2fbb742ad7c 6bf148b1-eb89-4981-83e7-7679c16b04ac 1b3e2dc9-01b5-4501-8e83-1b1efac7ca72 c4e6eaaf-c81d-4348-ab85-98f49a698fdc 432147dd-9cc7-4b76-a855-8d1daaca8c7e d53eab7a-916b-4ecc-936e-f8f096691b52 27ca3a0e-74af-4a93-b0d1-58eebdf2de39 ae3e45ab-63eb-4206-9bcb-f9d79efa7519 277deda2-6df0-4dd9-9838-48b130b3b16e f1bb4824-6de1-4a13-a064-e038d4be654c bce4d3f7-3934-4bf7-a620-7009e2ab0506 ec6404c2-0250-4b44-b77f-14590858ce1d 06e426d1-d46a-4358-9b58-b2ee35285dfb f84f918a-439b-4bef-b4e4-fb958d5cd9d6 68c3f18a-c811-482e-9504-fa0f03c8a6ea 1af39e3b-6826-47a0-97ec-e9158ad5acda f4facc4a-9e10-46dc-b83e-7873881e8059 e8694307-5f6b-42f1-88aa-1e0b875c7568 cd1b4eda-49de-42af-ad98-00d29cac4f4c 8ab51ad3-8dd4-47b6-ad77-e1910105f89f 208380d1-a738-4c17-85b1-d2cb692f4265 c96c033c-af03-4983-ab2e-6d7d63d434c4 5c0fadba-2431-4510-a130-1e22eecb8aa9 35ac6a81-eb7d-4d00-9349-fc7bf036201a 5ebda750-4e08-4591-b243-94013e393935 62116f70-cdd2-4700-a292-4dc1a2eab777 5741a009-b425-47d2-b441-19d5d14295fc ad30b74e-e589-43d2-853f-c6c9b7dba8ec 6800f617-a085-4f65-9e32-3bb67ef1b52a 7ecd2b02-d9aa-4381-943f-17848a1a13af a55ed987-faf1-4739-b356-0b93e0113a04 0ba92435-a9f1-4267-97df-85810bbd0d29 f65fe621-5837-43e4-b0f3-22bd28ca7a87 0e04bb3f-33d4-4a72-8e73-fd11817f5a0e c3469a4a-2939-4a41-8b66-ae5ced497038 edcaed31-f591-49f2-96d9-847397595de2 a63a5837-5b39-4964-8b21-b5d6b38c956a 3eabe276-36b9-4020-b789-eac440af78f3 59b04a42-45ab-4d1e-a843-0e66112bb23e 904b584a-7cf5-436b-b508-1066d5a230df 45273976-1d9b-4ed6-b3be-df97a28c7ff8 f87e3bf5-eeb6-4d74-a6ff-16952096749f 991709cd-4f39-463d-8938-97d07b5553f1 fe564190-620a-40af-9ab8-b5aaa5b7c338 f752c30c-1caa-4895-9b4f-851a50890444 b5f4becc-9dfd-47cb-8c2f-67e6f723c525 afeb7441-e72b-4146-bb65-0d9b816aaf71 f0eecdf4-2289-4e85-8d0f-5c69c3a887ae 52debbb3-e524-4b59-9ce1-51193e411841 f428e2c2-c687-4671-b543-da15cede8733 6edb69fa-6375-4b93-9ec7-ae842baa0bc2 7e0f9d2a-ae7d-4a16-a877-a19a2fb7cfbb 24213ce9-8c08-4b86-96a8-2fc463e35240 2ff0365e-2211-467d-87bd-68bc39ed4bdc 1dc2f23a-1e5f-4f5f-a5a4-62ca957ecf60 3100c052-4994-4a1f-98c2-fbb04df7d325 332455ca-fb63-43fc-a0d0-c005a405e2d0 0dac73ab-e3be-4b4f-914b-984d8c55d724 245eca14-9668-401e-aaf8-785cf8e9dacb 568021cd-6ddb-4aa7-a873-25050ed8e08f 34c5c680-e511-4d5d-8c1a-e6be3444cb9a a0b8d38b-d29d-409a-9322-a424bbdd8c65 5d02efc1-1e50-4959-833d-17ef7be59f9b ecaf9f6d-5371-4919-8e07-54293a2aabeb aa4b7495-3e73-4084-8147-2620e7bab9a5 bfc25c25-1faa-4f1f-aa3f-65013549f976 41a604f7-9a40-4f2e-806f-f7f26f5995d9 e3384c7e-fad8-40ff-b0d8-acf066abaa77 4ec619e0-ad45-4e0f-b519-69b863c8990e 8a006370-1a17-4be7-b15a-3c025c509e72 c6dccda7-db75-4bae-8589-b1cd01ba45d5 5e9e51bc-b76b-4923-8459-f74633f9c5f2 1f6dc658-6ed0-48ff-b7f4-389d69c918a1 202c78e8-42e5-4a7d-825f-b1cf29dfc095 e05db4a8-2aa4-4d98-b3c8-6f94f65662e9 7adfa717-72de-411e-84bb-02327fdee473 dc707382-efec-4d73-ae69-6900786c59bf c3a910c3-85bc-4598-9169-5de17ff0fa26 e65f651b-39be-46dd-9603-5eab5e386458 0c07a00f-615c-4b02-8291-e89441aeb901 8a032931-8613-4256-b094-5d5d4591043b ca90e856-8f74-4c9f-8e41-28f6ca77adef 15bfb135-aba3-4e8b-904e-b90d0db1ebf1 6fe16965-6c8a-400a-b6d7-039972a61abb 8e6a8dd7-3ca5-4c68-ab20-977de20d71ca 409cef55-4b7c-4c02-ade4-4cdab36a5cf1 5f4f93c9-a175-45b8-a10a-9441bb3920c1 54191270-5ba5-48c3-8909-d5ccdf79d4d5 1e6df08a-8b9d-4cf8-90d1-9dd6c6c0e9e1 62193563-00ec-4156-bc6f-5f97b012771f 02805b26-1094-4db8-bcee-5752a08e6b81 8382d388-20ee-4eaf-8bfe-ae0b17c462b9 1ef0d542-0f5a-47f4-b39a-fc8855854110 73173e8d-acd9-46d2-8fd2-c7d75a34b2fe 8b712d13-01e5-4aff-a6db-0c9df58ae298 6dd491f0-43f7-4a34-9e8e-b3449e61b2c6 e89f1c8b-770f-4222-9ed2-75ed1e321faf 72ca3297-39e6-4701-a9aa-5e489b12ec6f 9b21ffd7-6735-4f4b-a830-854e91ae0599 c01cbabd-2dc5-424d-8f07-06038c0d2fc6 c5ff6493-9ab4-49d4-a5db-32f48fbea3cc be8a4623-e100-4fdb-8dc5-b4dddc70dad7 19102ecf-5f9d-40b4-9f4c-a8e68d6e5ba4 fb422859-b64f-4240-b8a9-ede802b70e00 28d4b96d-ec72-4b2b-b413-c6afd3390338 2a679cc1-ecac-4824-983c-906d173e7d51 98f942d5-a6db-4f58-8cf4-6f459c46820a c48d7195-dcb0-4a54-bbb0-ac4cac471bdf 91f97156-e596-44b5-8487-a3823a890038 3239c283-ac96-49b0-b06e-d838823f09f2 ba1b26ac-86e7-4be5-8a1a-5c89c7e31532 454b3787-1b3a-437d-987c-b066b5cc61b7 5bb38f56-f0ba-4e61-bf4e-233e6700c212 f8c1c7f2-1bd6-42e4-b9ae-1bcdb8b063f4 3b579283-07a0-48a1-ada4-367a2a819fb3 9998b919-0a95-495c-a7d7-c00c554e67c8 ea6a2661-777f-41e3-9d37-25e1bb184747 5e6899cb-372f-4b36-870d-e4477e318bbb 522028b3-7705-4ef2-a045-a30311319250 e123ef35-e530-4546-a0c3-faf855f51fc6 93af5532-45fb-43d6-bb80-f3247d1e4fa9 95bd7606-2b4b-4f0f-ad81-02b35bf4e735 0878e452-6714-44a5-9b46-766ac9b74a7e e8d1f868-cb43-48bf-b34f-b7fa0c617a45 65537516-7561-4764-bad3-82be246f118d c2735762-9c32-43a5-90b2-f97eb17c13c2 f30bc320-7439-4746-b3ba-8796ac0fe84e cd435089-1dc2-4904-bed5-840eba180190 a3d0864d-8b9a-4261-8f28-c2931cf6fcf6 26951ac8-d97a-421e-b681-5c6f39872976 e424fd92-d288-45d5-8897-59903b86122f d2fed827-ca47-48ff-8d1d-7ee5c10385b8 1c30dfc2-89a3-48d0-aa21-eef2ecce38b8 a0a5fa73-3968-47aa-ac0b-8c678335728f 62654401-539e-4407-acb0-7772d78e1ac6 c3726c86-c11a-40d1-9f13-2650428f558d d7d46567-2d23-4052-8cdd-033e75570b8d fa51182e-0049-4878-a079-5d75da193695 2370aa26-6583-4222-b624-316d49dafaaa 0fe428aa-9bab-4626-b055-cc9705b26c17 e01d2d5b-9bb3-422d-a0e2-bda818b06e77 e2dbfcac-4ea6-4d5f-bd3e-a2518ca0f574 0603d30f-aed3-4e10-8ca3-0bdccfb1afbb f11c4ee3-9479-435c-8cf2-7382e0c3df92 2fdeb8ff-c24e-403f-9e63-70232bba15b6 d6a76d88-6615-4f6f-b527-5a879bc54151 f44b1e31-1ad5-478f-9dc9-dc4b65d37cf4 877c3dc2-5055-4d7e-9b1b-c02a6309bcc1 0f157e16-747b-48c8-98be-4ed24b5ff5eb dc3ff0a2-7359-4827-b123-406584f22996 d09e1f3a-fafb-4f85-bab6-eacf0e074a2a bf4a1c0a-27e9-43ce-b660-ab3ead23011b 5b0998aa-23d7-4fda-8152-d6ad5763adba 5d69e826-a50d-4f7c-8e1f-3b66dc9854ff a6adb8a4-3ec9-4d7b-a9eb-b0295320a89b bd052dec-c715-432c-b0ff-a3845c127fc3 183417e4-b466-45cc-a521-a0a26c51dc37 65cb254d-07ee-4b90-ae5a-6f0bec8b70b8 2886b62e-b68f-49c6-a395-4fbad9abd565 40511480-48c6-4952-a76a-a4327447f349 b9897e25-54ba-4e4a-a967-2b0975f3ff6a 7d911991-e4a3-4764-be39-239abb1a6430 617db667-23b1-43ed-8795-6b101b818307 3146a50d-fdb3-4c5b-9e25-196695df90ad 31eca910-2dcc-43d4-85a9-6224052179f1 4c5ea160-f3d3-49ed-8f42-23a49bc11188 5b24db2f-e747-4f73-bb85-a86168b46b9b fa17ef84-3363-4750-8eec-df8cf8478a09 3dbd5daf-b771-41f9-b55b-68bf4c21dad0 c433fff8-573c-41eb-83df-c52bfe1d14be 331b9b6a-9b7b-4e9b-9fdf-d30c50e45cc0 61d30f48-53bc-4d6f-8b7c-5a0a3accb5d7 7ff1fbf8-0eea-4609-a6bd-40cc84113266 70f5d4a3-fc3a-45b5-842a-9b216201ec82 b43c4bec-599c-4c38-a211-312b4c779690 1cde45cf-5036-4370-ac50-b3a609d46ae2 5550ab3b-e2dd-407a-91f4-2517a2f815de 9c430b86-9359-455e-9548-d4da9cc9b36b 1eb6df77-58f4-4bbe-9fc9-1c840e7c1059 564734ca-745a-4bb4-94bc-c53ac948e00d 35bd7a26-94a8-4a5e-a044-4e16a044c26e 2c174505-bde2-4baf-898c-1c18c6679322 4e83cab5-29e4-4442-aa0e-6436e550278b 724a5818-32af-48fb-b464-5a5fb028d54c 5175b274-cdd2-47af-b2ad-5804f34c3612 678bec44-d89d-4bd0-887e-a1a626f9249d 0fc498b8-df9b-48d0-b790-967d5f3564c3 1c3c95ef-bf1b-4a6f-a3bd-f7cc8207c8b7 3a2f8d00-6be9-47f7-a5b1-d73922fa7ad4 0519446a-3d34-4882-9897-29c339a7f101 c8c32bc0-925a-49d4-84f3-278dcce46a7f 87bb3cd4-d2e2-4e0a-afb0-23296badbcb7 997df367-29ef-4dfa-abab-7b8df63986c4 72d573ae-1730-4930-8eab-20e7e1f24e97 76407a37-4b17-467c-bcf9-3f783d2caadb 093f8655-9c11-4209-857b-bb7e2b90504f a63ffca7-31aa-4512-9bdf-e246f49506b2 55157300-14b3-4854-b2ea-0121c83649bd 346a90a6-ece4-471c-a97a-25931df12692 b6d6c254-0050-49d0-a488-7c41bff31de0 cb84f34a-7027-4b2c-a4cd-6a1ac03da8d2 3d9e9f99-3a1b-48ec-b79d-8eab435c12a1 33e07c6c-0b29-4779-8fd3-60bcc47d39fa e7bf94f2-6775-4621-a181-e079e512deda 0238609d-bc56-4fc9-a2c0-d1eab4056fe5 e53bb6d0-8f23-4ed0-95a2-01226bb6b6b8 bc477e8c-e546-49c7-8cfc-3d13d3c956c5 65181375-855a-4a58-aec8-89e25349c9c9 03bd17f2-73ab-4c05-a2e0-63bc44c86764 80830f75-2da1-4aff-9a28-7aa180359cae dcd2baa3-dfa3-49ad-820c-04fde5ad8fd2 358dbc49-b433-41a1-adbe-ea8cd213ce22 74c79402-8ecd-4158-b108-310159ed6992 4b33acf4-c009-4f37-be57-2fb5406b57ca 9d3e5769-8d56-40d6-a6e5-930e4ded1815 8629c8de-780f-41fd-b750-d5497411ab1e 1c26cc82-633a-428d-9902-904c243de317 dfa0e399-818c-4d66-991c-0515736386ef 2a48f802-69fa-4a64-bb92-e6ab9db8db79 3c73d406-5f3d-47d5-94fe-f00678193bbf 6ac81f31-92f2-4d63-836c-f3efcb2e2b1d 539b0395-57c0-401b-9f1d-991aa159f7ae 377a7250-ac18-4e4a-ad90-fae0975510a1 ec8560ba-9f64-4128-8517-bb75b14322e4 50befd10-a3c2-4979-a734-c5bd7ab0fcee a6ec39b1-c124-4594-b9ef-107825a22a52 68bb7590-6c8f-438a-a4b9-b2afd5436b65 8707dbd8-0866-4dd6-bbf6-8836419dd974 6648f88d-84a8-4a1a-803c-5c18329e0748 6e338aa6-7c71-48de-97c9-1d96be54d86c a7befc96-f306-4635-b5c5-44b2fbb3309b 098bef2b-e8c5-4036-9b52-6c9ddffb0779 d86b8bc1-de1f-4245-89c7-4d2f68a50714 41c852e1-2de7-4091-9c1b-60626c1a9882 2667ae05-7553-4563-9091-d07355f26002 78e3c0c6-4c69-42b7-a691-4956bbd433c8 c9301798-61df-4cfd-affa-3a85adccba7f b92db14f-045f-48d7-81ef-2629394211b8 09d0ef15-fa2b-4db8-a925-25f7fd71b172 819655ac-bd8a-48a8-9219-a2d6846b24d9 d60d7575-ac02-48f0-a43f-b801927653c5 721eb77b-9599-4cbe-b524-a3eabd03c146 ef65ee0f-a67c-4ddf-97c1-46c114152009 7bf51faf-903d-48b2-97c8-16a056295225 53937033-1034-4f4d-b8ce-69f8377813c2 9f90cff6-99d3-4754-b3c3-0baa9a9b9612 cb0d3ddc-5a63-4d6f-9be2-2145c18196e0 4b2ef53e-fef2-4b43-af1c-63b6ef4a449e 25f14fba-185f-496d-865c-3610b5ebc939 496c931b-db25-407e-b837-9479afe82651 a09bd3a3-92c1-43e2-a61a-2af7146191bf dbb9802e-d173-4193-a8a4-b654d004fbfb c37e6c26-73f1-4596-893d-8eaf377c608f 95f4b5fa-5b24-436b-afae-17feb8fedefd e678c141-326c-4cf2-8624-bc9b1fde3126 f6372733-4796-4cf1-9616-dee34456bf27 1e4d6519-4dc2-432f-8734-90eb840c7e27 d4de9f24-b356-4ade-867b-ba62dbd7494c b4b3a6fe-16fa-477e-811f-aecf7651113b 8f693304-311a-47fd-8f59-cbab193ad3b3 effd3673-db69-472b-8d43-58619999fdd1 77f2ff2f-27a8-4d5f-9b3f-576e666ef1ab f1d68b9f-43ae-44e5-a896-1e2b11791ed0 ba5806c3-3dc3-424d-a925-21b99b606dba 19b9e02d-6423-4d62-9553-1c2d26a62cc3 7076912d-0cb5-475d-97a4-dd10963a26ef 2ac75582-f091-486b-8b51-1774d7782e0d 66695173-0b9c-483c-a8ef-803e07abf7f4 d641d969-9991-401f-98ee-2f063d1c8d59 0c4cc57a-4811-40c2-b7f9-16d2e458128c 1d9ae24f-f99b-45f4-bf04-d579085efa41 9779ff27-04c6-47fb-b313-7206d6203441 2c00653e-bf18-4876-9199-6d4dd91613cb 494cfca5-ec10-41e5-817f-ce42cc75460c 57d27a13-8486-44fb-8210-2d4d17544ee9 8f6e137e-18d5-4e24-8c08-1e20a28bd5a6 38b9be94-a19d-48f6-9a3e-5db598b05bb8 1fe976fe-eb62-4c9f-b90f-cb17ad122309 57e2b58a-3f6c-4a61-9d74-5ab4f0fc0d9b 0cb6af68-5aaa-4c67-81f4-deda48f7ef0e 07cb31d6-797c-47a5-8df2-0c9ec4b2ecf9 3d63d771-e3dd-45a2-88b5-abc0d2a6de9e 6a6cc15b-e1c9-4629-92a9-0719bc022b77 45899951-580e-4dad-acd6-8e9fe037a8f1 c340f6ea-367a-4a1b-a640-5d3565574a94 b24d253f-ed20-4156-acf8-ee419bab2b1e 73f154df-664d-40b3-8f33-49e965fa58d3 1d1e0118-5f76-47fb-8afb-cc85a76c52ce a4dad17c-d9b0-4752-8e8b-4b34ccb80ca3 57169fee-85d6-45d6-a347-fa1701bf018c 91037e4e-1c10-47da-8e7c-645c03d6d33a 9e61a944-4edf-40c7-8a13-b4a3215c02d4 71f276eb-2b2a-4ac4-a3c2-0a1c3cddf04b 0b0c5554-eeda-4d47-a804-9417e59747d7 6c9ac256-1094-401d-b2ac-a6caa180cbc5 c09a44cd-3cd3-44d6-9c56-708f275b8ef3 13e21068-d199-4838-a3b9-8ff5b555a3b9 07f83756-eb54-468b-92b9-d198aac688a5 be64c8ea-612b-4cb0-afcb-49462681c466 8b2d3b2a-dc0e-4345-80d7-687fb0875510 d5b1bc76-0485-48fb-9f97-b60825e3dc3b c8d0b064-ab95-4d59-bba1-2846e8bc06a4 7c235513-b303-437b-b794-427e6a037018 321d10f7-6cd2-4b00-903c-2a6cef5bf4fe 9bf197a8-3fc2-442c-97b9-03b20d076956 4271f2e3-d353-4a9e-aadb-cd5ac9e2c913 e58bd868-ea2e-4c24-a518-1b3eba49abc8 459cea8d-f7bb-4376-8821-85a170cdb67a 243b0106-5e30-49a4-a077-2f8b40d72081 8cb12dd7-c945-462c-acd5-bfce430f81b5 b4d34619-3355-45e3-bb9a-33344cf1d73c 86256c50-4560-4fad-86e7-1b1fcafc3e69 ec92f322-f4c5-451e-9026-5ccd3adc3c66 7d802e8d-a120-454e-977d-3ab5cedc6f57 215e0bf2-9e2c-4899-82ba-4e669b428dfd b680088c-a67c-442d-9dfa-a2a843450c9d febe8cc4-f2bd-4374-a885-36603c7b45ea b2f1aee7-10fc-47c7-8ecf-cf43ac7e33b4 1902e7f9-b6d1-4b64-95b8-967786763973 b4000973-0f94-4d11-b19a-887d64c32fde 554e1cf4-24e1-428b-a61c-ce4db77eecae af75377a-017a-4ced-acc8-a4e89f1382d3 df8d0ca4-2076-4332-b0c4-6d7058ebf4c5 72ee44b2-563d-43cd-9a36-3474d3a557f5 2ffbe331-236a-42c1-8894-a91e608ec1d1 4da9cb59-84b3-4024-a421-b012c81bfa1c bfe7d1ab-d2bb-47f4-b488-6e106fb1f841 186bfddc-d78f-4b36-a5ea-b38d6448506d 8cc1f732-a0a9-4d35-a485-10ec8a90d5b6 f93bab50-b789-4134-b5dc-dbb15602b7e9 209171da-4393-40e2-8a70-8227a88fee0f 14f01309-50dc-4e60-9a6a-6acd972c3a2f 46276234-ad74-4d88-a1fd-3c448fcc4f4e 490c4875-c1b3-41c8-9db7-bdbf391c62e2 b1027826-1d1f-4d01-b7d6-49aa1373016f 4395acff-4ba5-4421-a8ed-360b5d31dbf7 d3f8406a-5ea9-4724-bb7a-8137e0a005d4 4bb12111-db98-450a-87d7-9f6e4e8166a2 315b7a20-2ec2-4891-afa8-346beaa35418 9ad5ebab-7831-47ad-a21f-d9a92345cbc5 56979530-8932-454f-9943-975a4e342ed3 4062df45-6484-43ec-9956-103f831afebe 56a32836-8869-4e2a-805c-5d006ab7565b 0134402e-c2ff-4b8c-bab9-8fd135685d6f c6fe650b-b612-4c1b-b37f-d3a5b9df8fea e53e8632-9721-419b-9c17-28246b8f12a4 17955c0e-c9cc-4389-9171-215ca97265ae 9136883a-a311-4c69-a4bb-bf91be54ee37 ba88f3c0-0d3b-4524-9663-f854505b0c0e ddd9f7e4-dde6-43e9-86b5-03c115a7c5b3 8699d61d-79ff-4e44-8a0a-e5a900b49201 6cd589ff-a0bf-4256-befd-6500880ad9cf 8b8686de-0cd2-462e-9fa2-9ec2729b889e 3f476526-f1af-403a-819a-4129e6db3daf ac9fd1c2-f522-4101-80e4-d814c17c4b45 c62da065-6b8f-4273-9ed0-8dfa526349a9 d1ca5691-6226-4f24-ab6b-f84da9491d2f 5bd1b8b2-7dc2-461d-a9d3-638b43926095 41c609df-c3b0-492e-b5d5-256b99d945a0 de12d60e-3da3-4a5d-a2b5-923730239c6f e8a448fa-6f24-4d04-93be-cd06f019ba0a e2e8d6e1-48de-4672-8445-c0d7dba73230 153d2800-4c8e-45ac-bf70-490d8c939584 1baaa309-6211-47bd-81de-d0bcce613eee da3c12fd-4085-4d72-897c-83674fdca932 038b073e-3903-4081-b7ce-a9478a03b4e4 7f836bc0-2309-4e80-ac45-a3ac206f004e a366aad9-ecec-410a-9631-54c685a70b96 83f96578-0644-4fe4-9998-24b278f9d7ee 7e0c3a4f-9865-4413-80e1-3eba9107f2c6 2ed7ff92-45cf-49b1-b82a-c0b02dbaf19f 98545755-3add-48ef-bc1d-4faaa247d6e6 2c4b9f7a-63d9-495f-b4a9-84c2cd59397a 3e12ab9e-2e62-4953-b212-7436d72f7c28 87c4f7a9-9478-4ec6-8f73-021d8dec3585 f80bb948-257f-459d-92e3-25f83d167007 cb04ead5-3cf3-46c1-bf0c-a5d7fba75631 bb632145-a8c2-4ce1-ba07-b524222b91c6 38518a0a-0894-4c21-a08d-912b9c6eafec d20a559a-3718-4fa6-9426-5131d90c3741 1066c8db-99ee-4370-adbf-1dd567116722 c4f2c809-8ca2-4701-8859-b3dbb6e0ca3d 519ecbb1-18fa-44df-840a-7a51c1e5b51f 1f15ec92-14ce-4fa5-a4b1-d881d701dd92 01214163-0162-44c4-bab3-cf55f6fe6520 ae6c3156-58b4-4f81-9408-bfa086770d08 83fa362d-4724-496d-8413-9d1da252fca3 dc657c6c-33c5-4fbf-a6bf-c8f3c665b049 815e4aa0-926e-4f7c-af27-21ae8e2612b8 4a4a27f1-5997-4293-b014-1961bf372f05 340211f9-d701-42bb-960a-c63868ed0784 feda7ec8-8d45-4402-9860-54ebea34e2f7 d056e575-b653-4484-be24-96af373fb77c 154c0352-3d77-4409-b4e7-75ca177781bb e37584d3-6dfa-4f4e-ac4a-b16918601386 e3ed9a78-195b-4419-8be9-8c8e3b4b2a39 71203ee3-3e45-4d81-9186-eae64554bd9a 46063464-bab4-414f-9e5e-cd428c5eb9ec 154b885a-4075-4cca-93d7-aace539f471e 76e03df9-3506-48a7-ab8f-9cf40c49a545 3450d770-a8a6-4455-adbe-8f5fd22e12c2 43ce7856-cd1c-4ed2-9623-03eb750a1cf6 0c4ce67f-03b6-43d4-84d0-dcfaeeada43b 2c65a435-668a-4f83-99b9-1aa57d0c5c25 7462e142-3b48-43a1-91a7-b385697f61c1 c6a0f9b3-8c69-4153-aa4d-e544432771ec 916e4e6a-1b40-495b-ae79-251b6bc861f3 26c5f5b0-27e2-4fe6-8cd5-8f368258d73e cb3354e2-b0dd-4411-a003-7e6a39af82c4 ef36cc4b-381b-45f3-a8fe-d1e92612b6a8 e1baf368-d7ea-4012-9726-70f93036433f 82bff3b8-cd65-42f2-a598-767869fd4b89 c01361c1-4ba7-494e-833e-548bf2629782 f8098e82-11bd-4f2e-8fc5-00c77ebe60f9 a9944698-3a9c-401f-9725-c6937d484743 be1481a1-dbbe-44d7-9123-e44798a8aee1 9b757eba-e0a8-41c4-8bbf-e17204df53fc 6ba0bb1d-90ea-4b71-920b-7491e9510605 89a19ca7-b1a2-4921-bdfd-67a18ca1d9fd d82c61b5-79b4-4321-b4b6-93090560b84b e3c33f07-8635-4b7f-841b-8e86481e24e9 470e998a-511b-4828-a602-f28b81e46fba cfcca2df-5d49-4645-a990-c04cd6c31895 a5317259-e517-4ddd-9e3e-db64e7ab0cad 35127d26-c410-4d61-a261-6d33eaa77b38 5c2b4923-babc-4e88-bfac-9ec6d59633c8 1994a810-4ff3-4009-9dc7-4f8582f5cb5b fd00947f-28c0-4d21-9905-db99f18e73b6 96e832cb-59af-4759-8428-1363595d0332 d0d12351-0218-4807-adc2-2f2099a2583a 9f07cedd-d06a-439d-b921-81f40398caac 40dfdf08-b89a-41ab-b726-4685f594b11b 76c20851-7c49-4dad-976b-92edac5d0e10 8018c3c8-530b-410e-b78e-62272054f9ba c9674163-5536-4493-995d-eeaf2e4dea81 f68e68d9-0a53-4451-8a2b-5b1c9926b5ba fc5d8d0e-54b9-4ac6-88de-30e52f4f9137 3f1551af-8ffc-46c9-8130-d031b9aa7e1d f35fed6b-9dfb-47dc-aa83-cd883193a9be 43d6a4fd-cb0e-4d85-87b0-13949b79f8cb 6c3ab5c2-a73c-4d01-b5c4-57be1b94ac17 befb31cf-4332-42dc-ba63-f016805f3f17 f72dbba0-b2c4-4214-98e8-19541d3feb07 047c6418-aa7e-4dc6-b6e9-c007c00ed35e 5c43ce34-33a1-4977-8de4-864bbff64a03 3ada8372-e72d-4d86-b342-85c31089c7e9 a55e23bd-d689-4f05-898a-529bb25c926d b5440b5e-7680-4123-b0ca-dcb672be5111 a9f419cb-11ed-4c24-8dc1-b46b7448ad61 8d123b15-1b9c-45ec-a674-3fdb56f73203 3b49388a-4498-478a-89c1-70ecb30f3bd3 3bced20d-ea81-4f0c-8e84-19668a7c645b 1ecbb87f-9fb1-4398-baad-d2fd7e97d810 75be6a05-eec2-40b5-be36-3fa1d865e232 f6903459-404e-4d77-907d-f1aeb91fcb97 d0cb2c62-b127-495a-ad64-926dab69a4d8 25d971f6-5f2f-4cf3-960c-8bf5cec48e13 89fe0c20-0838-48e7-a20a-da978821ec35 c7c83b73-0e44-41d8-b827-900642753430 d3a062e4-d09d-4fb0-9919-f4bee837ea74 46582b79-5da2-4631-ad34-d536658a3f42 c76cb370-c279-4eb6-a9fc-d9a39d844ced 1a182af2-320c-4e09-a2aa-fd23c7febbdc bef18d9e-14af-4d90-80e5-cb7cd59e7520 221c9e01-d4c6-436d-9dcc-af42cf57b4ad ed6b369d-7d59-4738-a149-6c87f82ab34c d55e9e2d-9102-4bce-95b0-d9087a2be856 59bb9622-7549-4795-a98e-2ef1f5fa026e bb00c450-9e04-4a6d-9cf2-6a09c214c640 a8e8cbc5-8b11-44f9-b351-78f4e30347b3 e1d4a9a2-0fcf-41a1-9065-f313c7425e88 6983c457-b805-4709-bd08-6c63d31124f1 568d11db-ada4-4252-9d5c-3a132cec8871 1457d69c-1847-4322-b027-e995e65a713d 9a5cdb22-9022-4674-a457-d8d9ae1b92fc d6d15bdb-60f6-415a-bad7-16232d45fab0 bb5a90ef-2e31-4ecf-a617-696e7e46142c 5177ef46-a266-40d4-9c6e-6eecdc5f2166 2091e866-30dc-4d02-8ab6-cf3d06c57e10 ea633d71-d2a5-4232-91cd-edc9e1104fb9 d3d5c0b3-c44b-477c-97e1-d9e428ac813d 8cbaec67-ce3d-46b9-af85-cb834fa40ac2 5a3a7fad-0485-4ab7-9dbb-40ec527f7d7f b5fe97ad-b77d-4b27-b64d-86f98a180988 d144a56f-d66f-4548-bbf3-e3c61e136e10 c825a58c-bf38-4ee8-b5cb-67c5f753abfc 14ee28ed-a34a-4e33-b0cd-67225735cb05 7707be7d-bf68-4732-b243-be23964ba507 01237069-0c51-47dc-8aed-1232cef64d37 4787c05e-88d5-4ef9-8edb-5079e9b4bbcf 18cf6085-2d2b-48b0-9d59-c0caa0e06d2e 9f7dfd6e-d2c7-481a-986b-769ec9bd28ab 60f5d5ea-e1a2-4cf8-8071-c05d88e3f932 4e8de371-f094-4002-85b5-b828ad013240 6412bc02-894b-44fd-8de9-9ec26eafe998 2048e612-be9c-4f22-8273-b8aebd9b786b fa2146b9-cd29-4bb0-aabd-75f49358fbb3 c58d0fff-3dec-49d7-b10c-8d609e39c33f 9390158f-b805-4e42-b9c9-6266d985647b e64a3bd2-8418-4b3f-9e79-917905aac9b6 11ba641a-9574-40e4-a70c-19e3f3f06abc 9da698b2-a62b-490d-af07-fd475175c1f6 3af01383-8acb-4ac9-ae19-7d82d2c48aa9 1931c7ea-7d19-46b3-9a0b-1dcb2add2528 567f8301-af79-415e-881c-a88578b8ce51 9288b594-7c01-44ee-8e97-626d1eba6627 b1b4256e-336b-48aa-bd65-22e7e60b16ae 16372159-016e-4e6a-ab56-6ceb33b30b9b 9b434a04-175f-4cc0-8bad-25481ba67f15 ce009514-744b-45b2-b505-989ea79a75e2 8b7376f3-5cfb-4d0b-a568-68ed076d6c6e 02430be5-8824-45bb-8edf-98d983485d2e d0d2012e-6310-4b0a-aef8-abe963b0c83f 7ef85f83-8a1a-470f-9fa4-9f8f7197fbd6 964f0b1a-fc46-4be2-b1b2-8b8e75aefa2d 87c481e9-5a7c-460d-b844-387f7e46602a 38ad7166-0f8e-45c2-9ad1-f4d960d5b15f 647030ce-ea34-4eea-bbc5-6e2811ed688d 8ab57d1c-f6ba-4296-9c39-349dad28a5b5 578816ea-9743-46f6-9162-1a39e3717847 4156465c-469d-4df0-8cc3-9b2f2f14a9a7 7115b343-ddcf-4dbd-b349-dae3eb600af3 f043c36d-9f82-42e1-a080-be581ed25653 f46159e0-b8a1-4960-b602-e7f27919a755 5f3eb8f8-3294-4478-8a17-4b5b88afba51 33f5f3ea-ef74-4045-a76c-4da20ee7e935 67be2b7b-6b10-4b7d-9af3-5f632dcc129d 1b190fa5-1d94-4fbf-9f55-bf1bb656c69e 165af30d-e3cf-4ac6-8005-e3e0549981f1 440d9d8a-c58b-4df0-b124-603a7b4f73db 3a5e8c1a-bf4b-4612-85e5-c29dac91cbb9 2c3badd0-e799-4123-89d5-70cb836998df 6cf07e1e-c1a2-448e-a6fd-4631039df4d5 5cf21f5a-68c1-4ead-91fb-0712e60f40c2 a215bef6-c2fa-445c-923d-947533088097 d8f05318-dd80-4868-8933-fb62a24580ae e60bfe67-f170-4dd6-972f-a29f1c518e59 2fceb004-c8b6-4dd8-96c5-d4a5d53bcf3b 02ae2f26-66bb-4397-8098-0fad99cf956f fb85c1d8-00a6-4bc2-9a7f-a5906e5fde6f 1591c974-7730-4222-b9a9-a3a7515eaad4 c85f2187-593b-4468-935a-10e7b2e14210 6013929d-65d5-4fc1-8594-b47e618e0db9 29ff3885-3857-4a00-8382-fd23e4804ea9 227e65ff-ccb6-4b8d-bc95-ffd2d22dc35b 7c44ba0d-98ad-49bd-adb8-eeed9ab5a7c9 ae274e70-2ba6-4316-920e-5e23130f7339 33eba827-4686-4620-837e-4e14c8ebae94 b401b152-9567-4c9d-abdc-f5aedda0967c e3cc462e-c189-4344-87c9-f8f3727cf6ca a24a0744-ab60-4147-9805-3ec9d68939cd 6d773392-e7d1-49df-a6cd-4d24ece4d25f 2350d84a-38aa-4116-a6fa-189fd6f76a24 4fd37796-114f-4d32-81e3-051ace5a3753 fd30d50f-8af0-46ac-a917-0144bb181aea a3c85400-f3df-4464-b799-3815c7822bf6 52954e94-1c48-4370-bfbe-e0bc50193792 ea22c3d5-334f-4581-8e81-eb70f9b9a47c fa67e260-372d-4f87-9aa5-61067d9a3b24 f5ede3eb-d4c9-4139-bdb8-fcf60b66eaa5 b47bec69-7bfe-4033-a5db-27f8e5dba717 f46ec8f8-2e62-4e2c-b691-6ae86edc2700 ed7c55d9-75d9-4345-8dc5-45bf432e4b81 1e104cc8-2805-48fc-ae84-d6a39c73fb28 d8ea140f-cb46-4c63-a432-74a906d04d16 7273f8b5-6f4b-48e1-8f7f-4b854363d8a2 6122bcd5-b3aa-4aea-ae0e-fca8beb7ad03 32ca3b7f-e9ea-47d4-bfa2-5981a8922fae 7e7aa5dc-c919-4fe0-b9e9-eb5819badd66 01098bcb-7569-403c-a940-911dc0c3bdf3 16a3cfd7-a36e-4106-82f9-d3bcb0479fde cbe4b11a-2372-4928-9ae7-f855d6d86515 2019e3b0-5176-4604-86e9-c7cb2c273ac6 c451cc70-72a2-48a5-b78a-02df333362ec 088fad2a-11ce-40ad-87c7-396066744f94 38da6126-9685-4ee7-b1b8-781f1eb308f9 cb752c74-521f-4d5f-b5e5-d771846887bb e6b0ddc7-d142-4815-a80d-e263af6ba6a9 107a9a66-6b0d-45cb-868d-c2dda011e266 cd29aa11-74ca-4bff-bd6a-44f3c0ddf86d 22a825ed-0a86-4163-9763-81a87cbe5d48 37e61ccc-86b0-465e-85ef-550ed9855190 298c77ab-d3ef-45c3-a6c6-75a523de5e4f a6259754-93a1-48dd-9d60-38e0a34893be e09dd01e-dd1e-4777-b5a8-91c479ad5ff8 9cc4776f-26b7-4127-b234-653913b4801d 8410f03b-4390-4921-a9da-d3647452144e f82a5117-8173-49d5-8913-0bfdeb502af6 43eb195c-491a-4659-946e-4cf7198a573e 14662a8d-7a2d-460c-ba26-37259cfb063b cf0ca6dd-7a46-4640-829a-e20ba5312707 2d4ea366-9bc6-4e3c-9a86-951ba57d78a9 d338b938-a799-4af9-8891-43614cb9d76a 7cc722c4-8edf-49a9-9a02-56ab248749ff acaa6c4c-a19a-40e0-b7e4-26d23a27f45c 82e562b2-67d0-4b99-af48-074678a9e666 14a74245-6bf7-4b1a-ab3f-f574d44902eb ef14c020-2300-4203-9a60-7bd7e67987f0 be615cf7-8fa1-4990-8170-a3432a877a58 d92faece-c170-4210-ba64-ffebe80992b7 8bdbe560-124c-42f7-ad14-0a390b9e0aa3 720da20a-67e8-4f84-aaa9-82d39e3db2f9 80483251-36d5-454e-a8b5-01131c3000a9 428b25e8-8e78-404e-9bac-adde0d4e3a0c b38686e5-9302-4a6c-9cc0-9711be23b16a 9cb8df7c-be77-4f69-af0c-f71ae5780809 87cddc34-6f75-4bd5-b703-7e590e0a5880 b969fc2f-2786-4baf-9756-f5c894aafd6f 62d91d32-dc26-4b31-a568-662f45ae822d 482bd629-f684-4f6c-b114-6d25bf9d2a66 dc0db942-1b82-402c-840b-cae35c985904 59b232e3-5ad7-4a24-a9e6-d6add81d6b39 6a1e73ec-660a-4cc3-b2f5-b487fa111098 237f9302-29bc-49d5-afb5-8b8e1475f5ed 24ccac24-bbe6-4127-9af5-9f1834429a0a 1cc645ce-9893-4ea2-8864-1e7d526e1bdb d3433c6b-5189-438e-bb93-0091252d0430 c8073877-d03d-46cf-8866-14423b87ae7f 04c0552b-aced-4f0b-9e4f-57ca7cea8f46 377e0a36-1d55-473e-8254-221c6351be00 e6518b3c-17a1-486c-a420-e928a73d998f 9f860f41-67da-4ba4-9575-0a335cce51d4 7877d404-9263-447e-b6b1-3ed0b370fc3a 9547f63a-1118-40e5-9ff3-8b4169e2b2a6 277cf00c-0cab-47c8-88f7-fe48b4ea460d 9bc563f2-7ef2-4d98-b204-cfd3632d8161 4bb4d118-ab3f-4a4e-bda2-756807485a5c 159b25ca-8356-49e5-a40b-974efc53b58f 265362fe-bb08-4d14-b1c9-df244ed7441d b8afb3bc-b95a-44ca-8b6e-89730af4b177 8ce5d28d-6789-4046-8d1e-bfd0e061d027 0aae5fd4-1604-4e9f-b758-51498917fe24 9583ae6e-f708-4238-8e51-632ad4150461 d0c6078a-8a13-4437-9c23-576092a433f6 ef126742-0039-4cb8-bd35-05e2e37b1c79 31cb507d-8548-447c-a85c-58697f9eb41b ba618533-6619-405c-beca-c27413d0f648 23b2ed93-4db9-44d4-96db-54840a96518f 6c134581-d621-4d94-9eff-640328a325e3 fd1540b9-deed-4e65-b209-5d6e1dfd66eb 50aeece6-2903-4c6e-b9a4-291147193387 abc4d98f-d823-4b99-adf7-504df643f775 240d49c9-268d-47a3-b729-840fb7ac9379 78204caf-585f-4081-a392-ba2570b7a14e 9feebb31-d7c8-4801-8030-cd5a06406648 c102dcdb-a516-4106-b361-cb51e1f95b06 c4f21006-6b44-49fd-86c4-371bf3365394 e3652fef-d5b7-4a98-8893-260ffa8b2655 44d8d513-5207-4ed5-a5f1-3824f7f88a78 c0974f9d-3066-4447-ad54-4f14569d9272 34110109-c9ea-4e04-9744-8c10f2aeed19 1c84ae37-3016-42e7-a5b3-1e3c92dcb9d3 ee627fb3-d52c-4c7c-9bf7-36083c8b85c1 c4af5526-1954-4043-abc1-89b4a366f677 587e5b9c-302f-4dfe-b1ed-6bc4bb1985b5 794a4630-b406-48c2-b8b1-584cbde8bc40 5dc91c53-b01c-4b9f-8551-93bfb7d98833 7e9dbc6b-6eb3-4f9a-872e-602e06d6ce2c 0510e9ef-54b1-4b47-9d87-2d8bc1ea1de4 c1cce621-82a3-4046-aec6-a173dd68875f a338e49c-535d-42ba-b187-dd04af820293 2eef31cd-39ec-4d01-bceb-186e44f0a9e8 56a4a383-b487-4799-8e28-1dd226395baf 3688b4c2-c4b7-4331-badd-0c744f6d1af7 fe2f8751-4c9d-4b95-9b6a-5d62f8fca3cf 6937c448-6a1e-46ba-be79-0fda89fe9fd2 40e65d41-889c-4328-822b-2cccd2766b5e 99b5434a-9b56-4c86-acdf-223e818b4ab3 158987e6-df9c-431e-a6c3-b55533e3fe0d 9a18f0bd-d3b0-4494-9d5d-dc9784d24dfe 624e7fe7-559c-4a02-a716-fe5e78c8af44 22f2bf19-b4b5-4faf-aecc-fd174ef23efb b563cf5f-4c7f-4edb-aedb-a36d7be161d5 c38a4a29-214c-4219-9cad-beed14443f9b 9e8aa5ee-9363-4d16-8bd7-a90104825a4c 95ab6381-4069-425e-894f-de75ec84113b 539e31d5-0a28-43e3-9eca-0006b639df5f b68c7b66-f749-4c59-ae45-9bdd403a1c03 9756712e-42fb-473e-b124-f8f7487f83b2 7433035d-e431-41df-a468-0b6f91585d2f fce6cfe0-3a87-48fc-99b9-8a4857e375b9 2d56a01e-050a-4839-ae0c-8b92a56a20b8 dae689dd-67d0-4a43-8a27-d42903b25452 6c648d29-f5e6-4561-9c1c-dd9284c8d875 71da5475-8ecc-4b38-a5b8-bee6c4141257 ef8abb31-f7ed-4fa8-8307-b71c532c5e63 481e2c44-413b-4fb4-8ec7-6069ed3dde12 30e3cb9a-4a87-4464-ba22-e10eb7bcceb7 7b78bea9-ca6f-46ec-ad7e-542b237b5454 5398e157-eec5-4887-a096-84270b989b55 2d1a08d5-6456-41d1-896b-8354f8af81de ea84b865-440f-40ea-975f-155594e725e0 4457605a-652e-44dc-8073-30ef807cd2a8 c00eb91d-04ce-46e2-a819-70fc6ff1e100 7c048cf5-94ba-4c75-b377-16e4eacb60c4 03350699-a417-4594-bb40-92af092bfa46 93f93c28-b708-40c2-93f8-da1f7c05a188 57f04ef6-70c9-46bf-85b5-0baa72b85d12 2a906ed5-a349-4439-9773-459653431901 bf29145d-37e9-4ae0-8d2a-85d6216011f3 84ae1476-5e3c-419c-ae7b-1ad718ecef14 d28d82ab-cc0c-4865-bd3c-fa2908327df2 406b363d-be3b-453c-8d6f-a464d117bf95 6ea10b63-ab30-474a-aaf5-97808aca0a49 20da1318-0c29-43ed-9e07-fb70cf439cbb 1b9bec95-a5bc-48ab-b07e-200644ff1d71 16d50f51-4593-4f21-934d-6b4c21345205 3d3a6300-7782-454a-8560-b623310af6f5 9aa18fe6-9888-42bc-8642-9056d01ae096 9ebb4254-e82b-4926-9850-5bff77dd52fc 1835d948-1a3a-4ac0-953f-c689717c7077 8c06364d-e311-4b2d-b2e9-313a7a6d5416 a337645f-74c4-4961-a2a1-1dc8dd03c7f0 20cbdc38-7acd-4826-8511-3a8ed327d591 129a10a6-e169-4978-a131-0003d07b56ef 6f7c3a25-e61e-4573-b539-7b00eb769bb9 ecbf1408-122f-4d1a-a2a4-fb7a3ee123ac 183f2a42-42d4-43ad-ae0c-856ee605d241 ec5ed03a-d620-4509-9d21-27469a10fa49 216e0e91-e13d-4fb6-b47a-6bde012b5074 db1212a4-bab6-4f24-a3aa-92e56cba41c6 be0cb373-95f4-4f4d-92fb-79d484b7f64a d8a054ec-a6ab-4d9c-9174-ba8cc8a2d52c e43bf74a-fc34-49e7-9517-59bddb6b312c 2cf665f0-d296-4284-a7fa-e1701490d2fb e44716c0-88d3-4de8-9b46-1b6fb8386bfa fac6b956-1d9f-47c7-9b4a-1d84cbf35b73 226802a4-4085-4e8a-a3b0-aa985e6811f0 ea29702e-654f-4db9-8179-47b0c90591af c7881ecb-d337-4355-bbc0-3ed0d98acafe a1297215-fcba-42aa-a332-7024285d6b99 a340da2f-98ee-4617-96c5-9a04f9fc9193 4a291dc2-500a-4bca-b7a4-01f0e9d490ca edfc2f5d-0a80-43ef-b655-8de39c6480a4 7d002953-0dc0-4b6e-b2c7-0feb5389b716 a2e5f7c8-3d0f-4ddd-984e-9de02d06960c aabbcc5b-9098-486b-8b45-20e197e79d43 b1ddbc69-cacc-4ae5-8750-252fe55a01a5 c433ec06-35d7-4cd6-9117-463334faa8f8 7f942447-8e97-49c4-a2a6-f04f4b68ac6e 3c7efa62-8443-497b-8ed9-291449385c5a a799a9e1-8520-47e8-a9e5-6ab13afc179c 1eff4995-a0b8-45a3-aae9-958c880061d0 634fe687-86ed-4e0b-b9ff-da8fdd38fc26 56df14ed-73ee-40d1-bbbe-9b41936ce3a3 325dc8d6-3534-476b-ba78-b46af23fc728 0762b668-892d-4c6e-b03e-05ea1b1793c8 5e8f1ac4-b443-4b89-84ea-18cf7dd646ca b803e97d-218b-4ec2-9c50-f245db9afb9a ae19ae09-1996-40b3-83c1-e270866f5d97 d9fbf5f3-6381-4a14-aa83-5c148dbb5d8d b6225e0b-6bcd-4009-9a89-4d2f1b66019f 37128345-5f2c-417c-b0a2-2f0b2f1fbf09 ada9c75c-b41b-4d57-a51e-73c29dd9bdab bbf623d6-e756-460d-924e-236e1a250c01 a67b8cf9-71ef-416f-9c6d-9858b336f701 b7bd54ad-6d51-4864-90fa-109ae851f689 bbed1ea6-1391-41e0-aaa4-5e3f1a5bfeae 491b3b84-9d64-4c1e-bd1b-1573f4dbb912 ec57faf8-61be-481b-8b47-cfac16d729f3 cd26e33b-adae-4980-9325-b77646047625 3e90acc7-6196-44da-9c45-978c84bebb54 f809e31d-418b-42e9-9261-7f944f2446df c05204e2-4fd4-4b5a-80cc-74738570438c cbdf388e-384a-4be2-9e05-f78e86476e0d 90439a0d-d749-4131-8821-df0697ca2c0f 91b7c896-2bc5-4e2d-ae2c-e0dd552373e4 eea6b637-727a-46ad-971a-3790ca8b6c5c 32023645-5818-4a97-b33f-14a1f0c257db 24bc0d39-3bb5-437f-a5d4-ff7cf5805ad3 48e8b601-fc8c-4634-840f-2b949d294a20 40715ad4-edd3-4db3-a246-b2f8a9957346 228bc2c1-7b05-4ca1-9067-8b6c8c420d8a 7e751199-fbfc-49a7-91d7-564f2e6601e3 c6554a27-aa0f-4f7b-b278-47bb2c03fc1d aaecbc7b-625c-42f8-9e7f-9ece8d577e34 7ba12bd1-7b27-4d2d-b460-12d16c7ace52 4f5edde4-c581-4f3e-b6d4-ea85f1a0895b 420b1733-6fa2-416b-9b90-4b5bbee26d19 f31e837b-13d9-4999-a95e-77e8faf07ab8 650e6b41-2a1a-489c-b3c2-4a8a542bb4ff b7574a89-d62a-431a-8d43-e64d034887ea 9bf223af-d3a2-44ad-af96-9d4eef0adbcd 851706d7-3a64-4989-bc3b-06f7b81bdce0 f12be70e-c8fb-4f83-bf55-46e78616ce4b 8ba93ba5-f342-470e-a707-b31d189edac6 03950928-b5de-4a2b-ba0c-74ac097a30d5 a794d280-687d-4cc4-8eab-5bbc775871f9 5f7174f5-407c-4164-b461-2177c96969cc 0067ce25-1695-4a41-b4d8-9044b15bae75 396f9f1c-a5fc-499c-8496-f7a7ba7b6e4f 6dbee6f3-408e-4c52-802e-2db5d5182955 069ba1d2-3503-479a-8f11-252650ac7a68 7b8d2fd3-4533-4d32-9cf4-e49f5a47e00b 37d4fae8-6b60-41ee-a87e-e1bc707ee3a0 1fa253fa-30e8-4ce6-aa78-3280b37a8243 1b90110e-c33a-45c3-81d9-b6793c41d253 8c2e8c67-1617-4451-94ab-b99b9d8b2356 679bc52b-f8db-46e6-a59a-4ccb8792a7fd c019a33a-296e-424f-8cda-932f1026dd3d e41fab43-8bfc-4ad1-a21d-c282e59da0ca 64963655-bda6-49e1-aaa5-d98171b52e22 425c5ecf-49c5-4fb9-b11b-5c80cc8e53ae 612d85bc-8d55-4e2d-a1df-5515e93dc243 abdf6270-9157-45c1-8c67-5e5c211635fa 4e2a100f-c194-4615-91f8-adf4aa02fb3b ed30c5ec-73d9-471d-adcb-9eeab2b26c32 4fb02826-17ba-41e5-aa3f-1e9b77780a5c ddc6781a-face-4421-a902-3ad411604553 096b21a5-4bd0-4dd6-afe8-467b39218775 d14de87f-2af4-4e20-8245-c00f5604e3a7 00b45cbb-97a4-44b7-befa-4ee192e277d6 b21a3ddf-1bfd-4386-8598-a008840375f7 2d3478a0-516c-4e13-a489-a251d27cf7e5 0d68ce3e-1741-40ab-bbe5-ede9c25f8b81 ad84f72c-8d51-4548-bc16-e8811f83775f a63879ec-1d8f-4bfa-aa1c-daefc13f9cf8 3ee48e58-6cc8-49ff-aeb7-a97cb3026065 1ea34f9a-65c3-4d0e-a536-9c80f2aaf749 d453fa1a-2593-41cf-bbf2-09809435b14d 37e426f1-de60-430f-9098-106d884ccfdf 76abcc1c-03f1-4646-8ea1-ec11b32e8f0d 59ba306c-43e6-48e8-939d-377d99a609b5 1b5cd9a8-3a7b-4573-978a-35fe7ce88fa1 a00f8049-59c0-422a-adc1-482b95f70787 02a0b5f1-d790-49fb-9e0a-06712837a329 2550e2b8-9cd4-451e-b433-d483e8cca345 242caed6-e592-4a89-824c-75bd62f32b08 5945d367-345f-4109-b29a-4ec139a16293 a565b52a-a4e9-4042-b8f5-943fc912483c 277d631b-e2a4-499e-b4f1-375ea624a179 1a499e2a-229b-4b11-892a-d0f60f1a28ad d57a5aaf-5606-4fd7-bfac-143fc2537992 ce95c63b-b07e-4d8b-8aa0-58a33088ebde f14bfcba-41c1-47c4-a9b1-889af1c98f08 07d4fc4f-accc-4a18-a8db-237dd8d23a03 7ac80eac-3ff2-4245-b56f-4ca85397defa 22c1101e-9820-46a2-b195-91a4cda40689 9356c191-30a1-480f-bd26-475448db6daa 04584d38-4dc7-48e5-99a4-1ea8a94c6fc3 0521882d-bc67-4a48-8643-b759e22a67cc ec6f0f6d-b9d9-47d0-ad40-93b301b9eef8 f76f84fc-856f-47aa-8f79-44d1932a9b83 10c16040-0034-4696-a0ff-a922973ab783 3a7c2998-8335-47a5-9743-bd5721cb2a41 27faa78a-ccc9-4b08-b49e-d9f9901c89ab b4738602-26d3-4fd4-939a-65b907428c87 f06d7b55-13a2-4357-b0ef-4f969206ee5d ad3fcb6a-4679-49e3-a2db-257af1b57a67 1c68cf54-bf1b-49de-b005-7729bff1c4cb bbf5317b-94d0-4a75-98cc-0fe7b64c4a7c ce652a1e-36e0-4b79-bdc1-f6c4b4328d3e cc1e4a63-6b0c-4aa7-9bc9-e8e2217907c3 ed857d7c-ec21-4ec3-9c8c-544008abbb5d 12320c37-7c10-4114-af36-720dc37b8892 4a7d0b5a-b557-453d-be6c-3c49e7c79eb5 48a2e5c3-b2d2-4d5f-8ede-7faeaecd12b8 f92eaf5c-3955-4965-8b24-aeacf0eccbd6 1804c241-4015-4076-bf35-53b51f159bc2 8bab13d4-aa4b-4ac8-a9af-83e6457d03fc de6e45c1-0d9c-4b64-9bbc-be6a04374539 628b220d-4ad5-4041-8226-e6d26b90ca79 7582eb0a-d417-4528-9cbe-e0207f0d48ac 4db3b103-f791-4778-b4db-ee771c1d0d64 59ef1c5b-a9a7-4a33-9952-0df5373aaa47 53a2ce07-f625-41ba-92fd-e41e682b748e fc083da8-0ac7-4be0-8613-1846338c3f32 c19e4c77-0978-48b2-8531-928691d0b042 b942b918-9b37-4f13-8b7d-7a5e582f537c 4f4030fe-9441-4cd9-8097-227125ef3dc0 4cc2f360-1afd-490e-8687-1866cf56c721 5193905e-42c9-451e-91dd-3c0f1f1a6ebd 5264cf9f-509f-4d41-bee4-cdafd1e60a09 a2917320-b888-4835-ad00-abc269f28e50 c9eb62ba-6863-4999-b9c8-b7136f914bbe dd40b262-c8c2-4f39-8440-dc09f74d546a 50643893-a829-44dc-9e86-fd8d5a8bc7f6 d5405591-964a-46ec-87c6-677e0b4f653a a4beda9c-4b21-45c4-a839-0b3264af2d59 8cf44c77-54ee-4337-848a-47684099f625 4bea59a3-6fd6-4fb1-b049-87c98c014f41 e69a6171-10a2-4338-b3ec-7830e758e9e8 41f5d5e1-8d6c-4173-b4cb-85ac091a8190 c4aa50b1-ac81-4a6e-8de4-4a911a522b73 3fb77f11-5c85-4956-85a2-fe29c47fd6dd 7f9928b5-4425-4669-8c00-4df439fcabbd f328f4e0-8f49-4749-bbea-27a80e6b2e24 067d594b-202b-483c-ad9a-9baa30721bc4 771aa7b9-d740-4c5c-90d1-06eaf603d037 8bdac9b6-37c3-4253-9316-2e14811c4ff4 04456cdb-97ad-4f38-9c67-e2fb20bfb502 a89a10a8-e6e4-4fcc-96df-3e58bd0ea3c1 34ea9950-1912-46be-89b2-97de86469bf6 159cb807-968c-425a-a221-45f850974f34 e44fd7ad-2bfc-4e26-8eb0-adb679b66f91 7f9ee77b-b010-4d34-b854-cf35b63fd2fb 7c262acd-bc21-4f65-a73c-1045a8475e8b dc6918f4-1e73-42b4-815b-8f5557b8fdf1 5728f827-8ddc-422b-a0b1-dccaa654ce1d 251048b9-5a45-428c-9bb2-60420018fc92 4972889d-f705-4c44-887d-14343802944e 69acaad9-ae68-419f-8c69-607307ff9631 7b7a0b8f-ff21-4519-8afc-eaf0ee548ffe 36de2cb5-436b-4bfd-9b03-0bbfe71d8dfe 07d08448-3fb1-4b72-ab18-faa7e0bd760e d8d29a3a-e3a1-4529-9502-7d72e6861925 41b2bc8e-d1bd-49b5-a34c-a06d697a4c61 4c1bfd3c-e7a7-422d-869e-9ad728c6e987 88f9d6ab-be6b-4a98-bfcd-0b4a16a6ff31 0f6b1bed-de4f-4d18-84f4-d0355e07c2e7 8cb8ac8b-5a3a-443c-b023-8110e6634df4 ded8f62f-cb4e-41df-9811-f099448fbd46 ab492563-9cb1-4b20-94a5-7525a68792d8 c63621e3-10fc-42dd-b84a-f66d13cc7ed4 d7e814f9-29e0-4790-a28b-40c3d6c1729a 34ed9e76-d7b2-4e13-9e35-ada8c27a9c23 81ffb3b4-51d4-4cdc-8407-ac6113d043b6 6e7a3233-1fe0-424b-824f-0f80f588d920 f05134eb-46f4-4c34-b514-dbe64e47fb49 a87cb161-5511-41f0-aec6-2c92492a0795 3eec4975-e1f2-4762-83d3-96dfc11017b2 cd423a01-6965-42de-a57f-6710337e8c6d ed6cabde-e648-4ec1-96af-b3bc910b324c 481b33d8-ea86-4001-9b73-48b7b6766413 b9a6004c-674b-43cb-bed1-6d390b14e6f9 d59d36e5-7902-4d81-a185-35951e63adf0 56726c81-f470-484c-ac90-48a021518422 f28f80dd-c00e-40cc-a9f4-871b5cf96534 ff1d19d8-e13d-4a8a-bf66-ae96af5919f5 28f11c6b-2369-4f3f-a540-12cccf2c74b3 d8c0586f-fc82-48bc-a688-3e3abdf01ddf f4e3d888-8d16-4c8a-a9bf-4d63659a4cfc cdc821d3-a356-46c7-a9e7-0603605d84b9 b7f83a22-8683-4026-9c6e-3d75c37931b3 28ef2f4a-e17f-4ad5-9fb2-609ff3d98ac7 e4e42c25-ee50-4cd0-8585-8e8e53d0556a a026ab00-2ed9-42bb-931a-0299621fbcc5 9f8a48fc-b73d-4583-b671-d839dc708ef8 371320ad-1283-419c-b38d-bc918adbb74b 5796b440-2df7-45c5-9f1b-b68bdec5b68e 3e036c02-9873-4ca5-a2e9-d8be9347cd93 055ce22b-f88e-4ff1-b0ca-e9914ddedc6c 56e53b4e-cdc5-4081-abc5-fcb2b2237812 a7280257-a6d7-45c0-bbda-b6b52b96d944 53d5f773-836b-4c99-b7a1-dbb15952e424 7936e572-538e-43d9-82c2-9fc65b69808d 1d574a8e-0c86-4723-97c2-c4d76f8355a5 c8d51015-dc81-4797-9756-132e44aa39ae 78248bf6-5cd5-482b-9fb5-89f98ae6c6bd 62807469-3528-437a-809e-41fc6fedeb23 d75e7e41-1740-44c5-a889-daec672249b7 8a2f4e75-db2b-4408-a960-d8216553b7bb c78fade6-fbcb-4dfc-bdcc-b1756996c377 b9d71bcb-377d-46a2-9d65-5eef6bee221d 6f50d44a-f59a-45e4-9226-07fec67ea47c 5e75d308-0042-4f07-92c1-716efa98bc72 a97ad2f3-cfff-4b0d-8ea1-26bcd13cd171 577fa30d-fd7b-4fbc-a2ad-b9d3c56c4ec0 571b73aa-46b4-4792-8d5f-495cd0a3d1ec 387d9bf5-72a1-44f5-9251-d8c383c66486 dc4dff72-8b81-4ebd-a78b-e9924d3a75a3 1b7ab288-694a-4cb9-9417-64b56d13640c a3190b0f-6d55-47e8-a01b-daeed9bc7fc7 53872624-1d82-4679-9905-45dc48684f7a 5bec5e2b-3444-4106-a173-32db4fa98166 3af98533-11b6-4638-aa7e-eef545cf5017 4acf3454-73fc-4e51-8fab-2b6c48cfa105 8fc293fb-315a-42ed-b893-6525e652e514 5403d9bd-6668-4340-b752-49424d03545f f927e9df-4ca6-475c-9c56-5208b26063b0 638b3827-ea74-48bd-8dd9-30bc4a005589 6e004916-b46a-400c-bab8-04636af15d6e 909bea93-449c-47a1-8ea0-076eacf80d20 c16e3d99-8b69-4d86-8478-d451dc8a5915 b53f6cc6-edec-4906-9a91-fdf9271448bd 6f052603-b604-4b80-9805-1e4d3aa0cad4 6868f6af-4893-4c85-81c9-f0ecd5a80c8b 6959118c-3643-41ad-beba-d0a50219506a 45575386-23d7-4e63-9b48-a5299da0f44c 6cf703fa-c508-4cc7-8e57-0d4061614adf 4dba0414-80c5-460c-9798-e4262b2af2b6 cc4f53ed-de34-488d-944e-2eca9268439a 45991305-c0db-446b-93c1-08ae9aa0586d d866b85f-68ea-4b70-b5ff-2d4ec0451f76 da4ab8f4-5f1c-4ff1-9ce1-89eab040b0f9 6230fb50-00ae-451c-a509-2f7e9daf7970 fa9b56e6-27e3-4be3-a802-8c9c689776de 5458cda3-8da9-4519-bcaf-812ecaf23c73 21dd77ce-46d7-4b87-8969-a544bcb53f85 e3b6fdde-60db-4bed-962c-44b765bd20e3 23fc8d26-67cf-4598-9fa6-5100932c9b3b bb4ba24d-6786-4ff9-8c9d-3ca9ce3a7a58 cf85d0f1-535b-450a-bfe9-84f8d3347530 ca75ae02-b4c1-4b60-8cea-1bbbf8e1b0c5 1e71fe55-c21c-45b1-b7d5-1bb3484903b0 f31a776c-584c-443a-8db9-f005c4f9e9d5 11a1ef5f-5f64-4cf6-8c4e-bd1177e92e00 569268e6-7629-49c6-870f-5a408ca8f1cb a0a6a7cb-83c3-43b4-b29d-873c75883055 2cbb7b1b-a4d2-4dcf-b558-a83509d3faa3 5947e784-dec5-4864-8865-f43012f453c1 7ba219f7-0fa4-4618-82f2-c734c828323c 6cb37942-8275-4602-98cc-2e4357278968 904baf96-231e-4b6b-a640-1fc246935a15 555c8e93-3410-4e09-a43e-b3f15476273c 9d97d7c9-7a30-4ff0-b79e-e0c778a26320 62ee0748-3d2f-439b-ba3d-f12beb2ce978 1c747064-ccfa-475e-941a-c3c32826330b 815c2f51-1f39-4759-8b0b-b03b143078a5 721f9995-cc91-4e35-b2a5-fc15d162b22d 011ffa05-221f-48c3-a3b1-07f1f50bedc1 f02254d0-de0c-4b61-888c-65a1dc897d9c ff73c204-78f8-4c7a-a6b5-344563ffc821 de91eae8-05a5-441d-ab4e-c32e3281cdee 4015ffbc-4a38-48ba-8470-b9f7befc73a0 d2f0957c-d26b-4d09-9ab0-eacdfad1c168 393a7275-7d69-4458-8df4-c8516af53056 21f0fcb2-d885-4633-92a2-dec100981542 88246fee-ae2f-4875-9433-da06be2696cd b2dfe078-8f8a-4e84-a902-351ad4b62a5c f4f646d1-f5c5-47e6-aeae-04d45d62cf22 2aaba141-b5ab-43ab-883e-e88a2881f9fa 2014eaba-cb3c-422e-bb8d-daf0f339b6ae 1edfbc4e-b428-41d5-9b33-822281685fbe f60a15f0-e195-46df-b032-16a1f20e500f e740ce90-4ad9-4e47-afa8-8ddee241be4c 32dcb406-8c2a-4343-9bc9-8e00ce8d7a74 7b4a4cd9-34ee-4d9d-a6be-9cea7718795a 93d84c80-a1c1-42a2-9468-ca0bccb29c43 fce5348a-7ea4-4ecb-9606-946d8c9ef68b f70daf7e-a0fb-41ed-ac29-d4bdfc0f5b42 6075b0d9-e4b2-4003-832b-7ece8b3d651c 3cee177f-f773-45ea-a494-99fa351aabd8 ce843a57-e7d5-4c2a-88c6-d65ec3fbbcae 7fa0b968-d636-4835-939d-96a00bc95adc 073a1293-66b5-4747-bce2-52550d4ce748 f289c8a2-75ea-4c71-8120-a144bbd4b705 3e026e17-2037-4815-bcee-5952b6dbdb94 0555a5c4-a68a-4de2-bfe9-386697374fe4 c00c283f-2738-4a3e-8dc6-8322622f0047 7de09e36-c352-4355-9781-6253a4b667af e584b704-95fb-4cc1-8e73-da647894c137 8fe9dd39-ae15-4125-85ee-3ff68fd4bd2a 5b22d6bb-c3fd-49eb-8a33-7885ddead19b e932a945-bd3b-4c83-8916-6e2a617f610f 06bdfe36-a5c8-429b-bf41-021c361bb907 6470448d-2540-4f0a-9bdb-2e726f94b114 9ba31666-912a-4b9c-8b77-6962cd47bcce 0075c066-13ae-4035-bfbc-b1a13509a6e0 cc73b76a-c6bd-47f8-a446-f225a3e0ba22 18321cce-491d-48b1-a16b-1d425491cb2d 55e5424e-b340-4a79-a17c-8ddd12236b19 93f7489d-1c6a-4c21-b124-c7d31770ae5d e41c49db-a8e0-43a0-9d75-8a1e23241569 4da23e80-70f9-4e70-b222-9fd5fffdee4d 2492c8cd-ee66-419f-86b6-b91af2e64788 a3fe6b92-e95b-4e4f-927e-7d9796eb76b3 dfd445c0-c7cc-4e6a-bd45-cb1a1c230678 70edfc5e-737c-4f4f-8ea4-29831a3570c3 f15875b2-31fe-497e-bc81-980c92c1b860 f9342556-c587-4ef1-8b3d-9b9e54867cdb 81151d13-8c84-4733-8b81-3a020d0fdad1 1e0ec409-b544-48e5-a67f-0b3070f96bdb 92884553-8c24-4644-ac36-03187e0f17d5 44871c73-599b-4490-ba84-7d69919b83dd 97697c5a-815e-4737-a30d-a97f74ee173c 3234d2c3-1018-44b5-830c-e59a03aa91aa 19188420-e458-4e55-bd82-0da2a55ace62 189ba631-f4c9-49c8-89d0-cb093fb834ca 0f20758b-9a07-4ec7-b919-eb80a689ab97 1ff6a207-b003-4c88-a2c0-eadf9a9a5b4c 71a92dbf-4b7b-4f89-a697-ccb0239c62ec 00a4c648-3bcd-4777-8985-d196220711ff e16a6ef5-1463-4b26-af74-5d65f2476874 fc58ffa5-79e8-4e91-ae3b-7430242bf57d 87fb4b13-a87c-4e9e-8782-bcc5ed2bf8fe e196cd3f-c72e-4741-87fe-3ffd74314b46 3b94eed3-b6f3-457e-ac20-1130150427a9 eabc6850-9ea6-4018-9bde-0fa2fb2498df 5888b57f-e76b-47bd-859c-385c55e7dca2 6c00b530-3f81-4dca-9c75-59d14a383ded 70ed799e-8653-406f-8987-848a0f92491c bc1b6272-1c25-4dd4-9681-936f12fd3fe1 c88f72c9-daff-4052-aa6c-cd3bba53135d 88112c52-e829-4398-a3cd-4d727c618a39 01f580e4-9f21-431c-85c8-fde9f7db9665 05f0ff53-3725-4df1-bc1a-46ddf3c0019f 734e1c43-d1fd-47b8-973e-29c29e5ff125 a13496d3-7531-431c-bcb6-028efe37d38d 455a020d-1cae-4682-b786-40d51d64b88b 0318c712-ce2d-42f1-b188-989c3caf9db2 e0b160d6-7485-4f23-9702-da7896cc27dc 5ffe1513-7f89-4f94-8c20-453242db58b5 ad0a87aa-5c70-42ca-bed1-71d3b29e8b0c 3ab16703-ad64-4b3d-9031-478156816809 347fe083-b550-4db3-9959-e8f585dd9310 6be04a5a-ea2b-4ddc-9972-be99855218ca 4e22cb18-4c48-46de-a6f1-d672087562b2 616bf59f-c008-4770-b096-13fe5a206a21 e1a71573-a45e-41fb-97ed-aae1ba2b04d2 af632da3-88c1-4aec-a187-7158ed630acf 113d093b-93a1-4777-b6f9-44335df35ffc 72c8da41-ea32-4111-9b5c-c40b45c9d903 12b9b3b0-f2c9-4536-bb24-515d8ed29bba 8d42e5ff-549e-49f9-b756-9cc11358d46a b8ddb3b0-d004-48da-abb3-60c111ed6c0e 59914e05-4c8c-494d-b27b-2f74e837649b 50179eee-460e-4339-8da1-5ae5827a1812 1a93da18-51b0-411b-8eda-14433069d5b1 c963b7f2-b39b-48f1-a08f-496e8604bc13 d158b71f-ff78-4428-9c19-e35253ffad3d db6a9fc7-a826-4aa1-a248-59b22d657b26 42c15cc5-0942-417c-ae5a-cec57d3a4da4 281c460e-3f0d-4b6a-a8cc-efc7a638046f 4a84b573-bb1d-4e5e-bdd8-2e430dfbd8aa 71c184b0-a5bb-45b9-aeaf-92af2488dc58 08c92598-74f9-4ff9-81bb-66f212232b5b 092fe968-6f5f-4cb3-9a78-9c42533e3ee6 64336bb4-3010-4063-9be0-f0996da42f21 8d67933a-6a24-47fd-b0b0-de20fae6b753 179479c3-a444-4d41-9811-26124aaf27b4 1c057503-e693-4bc6-ab63-246cb8a5774b d45d47c6-35c5-451f-beab-19b51f0ee1b5 6c55f1ab-17aa-4865-935d-1b1f765f76cb 3338f384-cad3-44c9-9ec1-ab732dfc6a99 eed05046-4c9a-4478-952a-2a85b30e70a1 89edd88e-3cb5-4163-814f-72b7926dd330 c1860ec4-e2a0-4e38-9d12-f91a233325f0 17497020-77ee-466a-9ab6-ef7e969a706d dd0a6962-3cbb-4b4b-8f29-55c0b6876bd0 939bdcec-cae9-4296-951c-157e08e8fe13 1831cd36-a664-4bd0-a0d2-b10762d79fb8 e35989e8-b772-40d9-896e-73218a2433f5 46b7be96-5855-4a35-88a2-5bb9585c5ada ba1dad33-860b-4f39-b806-bf8e16baffe5 2d78c267-e33e-4508-87f5-b06e6e37e734 518d528c-b6a3-482e-bde9-b72b8c0bd5fe d254a800-9832-425a-8c0a-90791b05c3a5 ea91e3cd-3765-4af5-a5c2-eb4ee9ceb3fb e1de86a5-43f5-48ae-b5fd-dd19a6fdb04f d36e2318-d960-4731-9fac-3c492b175fd6 15e7a43e-9849-45d7-8b2e-0204f51d90d2 1556b356-db82-40ad-9356-2b1011198193 3d88e513-d44f-4731-b5e8-0ced3a7facc7 386dcd30-30c0-4247-893d-af02c4d4420d 67471dbf-a945-446e-bf27-61d5713de00e 35dc705d-63e5-47b4-8401-943610ebb31e c5cfe035-2375-4a50-8cd3-174b27381213 f93cac35-bea9-4de9-87f0-7c8b96e74c88 1918aab1-0236-4ac4-abad-e083dad61858 91a0a576-f33a-45ab-99dc-8b9627b59ced 028dd960-241b-4c55-a61c-6b1a70b0e2dd e37ea1ec-b5ea-41d3-b723-918cd4c3e774 97275c08-8062-4bc8-ad44-d9fa040b3d99 b6cd17d9-68ef-43e4-8bf4-e8f3f6165cd7 24f1a3a2-c521-4958-b704-a6901fc360f3 c1f6f69a-4771-4392-b6e4-f46f3fb04f08 4d0feacd-d89c-450d-ba41-fa7d0fe67949 6f1ae706-db83-4840-ac2f-78a24aa7d806 f7da35a3-f186-4f83-bc35-fd0a1cacfb11 602a8250-5636-43e1-98be-0fbe752ffac8 ca593433-88b1-40b9-a43f-2ab172a20c31 d23c959f-f238-4938-a9b7-dfc859aa6b98 a52db8ae-5594-4b44-bb2d-cdd4f783ffc3 b16aded8-90fa-48bd-9695-7a8ff04c7582 372415ed-7551-4755-81d6-2bb3f8d2b4e9 89ac2e21-33a2-493e-8163-fdedde24909e b7bd642b-4d90-46ff-9e69-cc59084e408b 9eb6c971-34da-4240-ac17-10d22642a459 8d73b57a-535a-4b8a-977a-999a9127e419 96e8f242-bd04-45a0-92c6-669902b4aaca 90ac5303-70dd-4b5c-a00e-cc6201738d2b f115defe-de35-4728-919e-52e45d0a212e 06a7741a-04cb-43f7-8191-fb8d6813a7f0 f83e9424-eaf1-4d7e-8100-4a1b6c8043c3 310390d5-1bee-497c-9825-bcc9619471b7 87782572-f2cf-46e1-b5ca-fbd3590ea2be e0701987-c9fb-4fdf-bacd-99423930b873 e5d0cd79-a39a-4096-963d-242246bc4851 71c0e333-da0e-4abf-85f4-bd61b8a71f3d 289038b2-8c90-4c03-9da9-ac10010676c7 a98250ac-33f2-47e3-a4a7-2bff54638c3d dc90a2c5-cd33-47a4-bcb5-7dab28f22930 23de0e8d-ac07-4a7e-a981-01539f79a61e 26b59915-336d-45ab-98dc-55ebdca3b119 4ca1c7d7-6c79-4d1a-a698-5e13bf7f7ad2 eee4b503-aff9-43a0-ad7a-ec3378ebe4fb ac12c569-6af9-4a37-a0ff-916641b0c971 f6c701e9-74d7-4e49-9a84-9c152ead071f b75574b4-9283-482a-9735-67d31fc56cce 3a1c9267-b30e-48a0-af7b-60f45ed2cd6e e600218f-520e-4058-b6c4-8b6f8c9b170f d97ad6e4-5366-4a2c-85d0-8a4d50a8f410 d308a1ba-ab2c-4e83-9494-790ff4298a43 e356b76e-027a-4eb0-baa4-1c64191fe1c2 bf7b7af4-9c17-41b2-b63a-7091c2041c62 f29d7b15-e9d0-4c40-a89d-140a15d7d275 6d6e720d-910f-404c-bc77-bb179fade7dd 92b499d0-31a5-4104-8d24-5933141a7a07 7f371ba2-f9c2-4e00-8f41-05ef5b335835 3b011b86-9f2d-42d8-ba5b-ce97837649ff 832b0cab-ac5c-4443-a768-5a1d26309cd3 1b099e3c-7896-4d3f-9ce0-ef16fe01ae30 ba05c9ef-a795-464a-beef-a93d89fc23a0 3c662bd4-20ca-40d5-9540-de6bddca7377 3132da29-bcc6-4983-9444-d0a488b2a3b4 397d4128-e134-4e65-8e69-8224df0da2de f396316a-fd05-44a5-a07f-c9da1879d1f9 522320b9-b7a1-4877-8670-2128b496db16 fd84f531-b1e0-4dd5-81e4-583ca844df69 63e3f679-f1c5-4e59-bf6e-d56229512503 fe9d83d6-4fa0-4ead-a008-1836f8db5398 c570bac2-d247-40cb-bfd6-85b6bee14483 94e74352-9960-4ff4-ba63-d4e822516f2b 43d9f3a9-e5a5-4a75-a46b-96395bf8b0a2 4e58cdeb-fd6c-4294-82fa-67df768a9264 55b1eddd-fb8e-4546-b2c0-bd11a807ec8a 4018c11e-3463-4b7d-a051-7342b3fa0f18 dd70f296-14ac-47df-bad2-ecc0b05b0d4e 5cd63522-e357-4e14-927b-b07aa9983e3c 26543515-e1a2-41b5-8e36-a7b935f0562a 8e825383-f2a9-4d28-8f33-ade24a15df58 de1c6a6d-42b6-412e-b521-5a6675aad4e3 dd65e0be-5e3e-42f9-bb72-c08e938ff4da 4c170f1d-7fda-4537-b6b3-e3c83f0aec58 1b37ab90-4825-4fd9-8b1c-8a7e433ca609 ebf0aa9c-0a95-441b-9802-4aa5c9e9f2a6 27899c72-507b-41bd-99f3-8e0a4fe3d721 d5706b33-ee21-4160-b325-80714e515ab7 fa0751f2-130b-42f4-bf50-0aa5e46664d0 4969bdb6-c567-47fa-b800-4892993dba93 2da2f5a5-48bf-422d-8dfc-74bb64f3d029 0cd0ffea-19d6-4e90-aa2b-e562393c145b a7ad28e4-4b8a-4d79-a28a-7026abdb61da b53b645f-6eb7-4064-87e7-ead5f64ceddf ed5fb33f-693e-42cd-b8a1-7d6390fe0d00 dcc38027-ba9e-4a69-b3a3-a97956f92d4c 5c6de3b8-2a00-4730-83aa-dd8058f029f1 bc5da91c-46e4-4c5e-a3e5-f6adb7d2a75c 8beab13f-dd42-4f54-b18f-620f66505183 d9290765-77e5-4df5-ae49-e89667a4b6f3 4b91c3a8-75f9-4b26-87ca-6d9f5db978aa 1d4c058f-3b3b-445f-9200-ec55309d382d f620ffbe-0bb0-4c3e-be61-2866be581099 dc03cba4-b751-4850-b762-c9c84039dbd5 91e8d237-f979-42ae-b44d-939666073ed5 02f8dc75-5edc-4c8f-9aa2-e6021e8f0cfd 4059cdd3-181f-4be1-900c-677dfb07ca5c c775a2a4-ebd7-4217-9d67-59f35a9e5ef3 a362cd61-1cf6-4856-9e14-a0be01ad31da 49974382-3674-4c6c-9eb9-05b3340b3b83 8f9f52f0-7662-4257-b29d-83edeab06c90 3aa3f93b-27aa-41bf-aa75-5ba82264467e 3a7b3456-04c5-4d2a-9eaa-4785ec31722c acd13e09-10e5-4a0c-b8de-8784432b6ddd 27001631-06bb-46a6-a965-958156149270 444d1b92-10c7-4df5-b3e5-6a25303a7d86 9d6c0aed-2b7b-460c-a8b6-ba5efcb5a7eb 73f5a153-54d3-4123-9014-80744cbc2cbc 4400f487-9008-403d-b559-a8124ed7edfa f0e1500c-fe9d-4056-8db6-f85492ebc307 e3071696-0958-4727-8065-38590d452a4a 1270803e-7bf4-48b3-8d70-2a354e6c1815 e9172599-5ff0-4db0-813e-d868f9065fe4 05a3deb0-9048-47c8-ae15-ec2517a643f8 bddb286f-a1cd-4355-8b4f-1b19e00c48e4 a3ba4e50-407e-45b4-b781-98ae9c214d00 7a45cb90-673e-4e09-8878-776e049a04f6 3c7ff081-2df0-4172-a462-149e83cde124 fa053c0a-ff60-4a43-9e80-fb8533daa5ad cce95bd4-ef69-4c8d-865a-049595b395ca 29516583-57df-4d4b-a0fd-51a1bf637521 bda48310-008f-4b7d-9ebd-e89e067faece 3b8d402d-a03e-4773-880c-3d8a43cf8bfc 5089d34b-b0fa-4763-889d-31a228ba2549 d2df4bc0-1ef5-47b2-8eab-b0b24023acf5 aa734e01-2aaf-4086-af9d-ae146bd39841 bc194e6c-1449-4f72-a493-05090ae899d9 0933fcba-360d-4dab-a606-a2f47d1092e3 1456d66f-28fa-482c-868e-89572c6a7d2e ded82ede-0deb-46ff-8b42-578d6c530ad5 609fc2fb-696c-4ee1-b4dc-4b1b937a966b 80a29321-a923-402a-9728-5e9507d9b37e d48e6692-c656-4b39-94ca-29451f9ab819 ac3528a4-8152-4960-96e4-de0d8721b6e5 0e7e2abf-b3c6-4bd2-bd89-0e1d51a508a6 33de8202-29f9-45b1-8321-67880f47e84f d6fdd1f2-c9d8-40ce-a8ff-8e0b4312d61c 8414736a-daf4-44d3-94d1-6c585552ba70 407e2128-60a9-4af4-b81b-4b1885c93672 8106fac9-a15d-4e46-bd0b-fb2e9a93dcbe 729da01a-7741-43ec-87d3-60e64a0b4aaf 0326497d-ab7c-4648-be41-68f610d0b452 414c6518-cc69-4815-b76e-bdcc239d5e0e f9f481e4-5bfb-4631-8d2f-233a0cdfc00c c1f60421-2b05-4d9a-830e-482ebb3fca43 9c67abf2-32d6-4776-9c2e-a8b304163d7a 0acb24c5-5453-41fb-87aa-d3129427d14f bc66bdaf-7b5b-4c7f-9201-aa915fa5a897 a8439778-8e53-46ad-b18b-2f4510c0f158 f052f738-3499-43a2-a972-07543be0b664 fc5d1551-11b2-4409-808e-d75144a96c58 17425d3f-f034-4755-86a9-585e3d895ff7 ba815ad4-27fd-4156-b9fd-607a39a4f044 f0f66ee9-5db0-466b-8da1-90c45b97b6b6 89e1799e-d5d1-4a7e-bb9f-7568bd5779a3 abaeead5-152f-4f8a-85f8-6976a53e27cf 0a22b955-8549-4be0-9d05-e3ab262010cc 1a78a22f-83ad-4f0c-96af-2046217cce3b 4925986d-285a-4524-a0c7-c040c8ddcff0 44c2d926-93bb-4d45-b042-494687c0fc66 30a70ae0-74f8-4fe9-ad44-72675b972352 e5029c44-1398-4a90-9263-c4f31748abc6 626e8705-e77c-4d99-87ff-c038b3a44d0c ffb016f8-355c-4a13-b069-bcd1564e544b 17bcc5c5-70f8-40e0-a23a-5bde56c10bd3 04558ba4-147a-459f-89dc-708513d11662 130ca81b-31a0-48f6-8467-6354d2663697 8eb57f35-aad7-4d20-810a-86fa3f89b04d c8f70537-93f2-42c9-a130-b274de873e28 b06736f1-8543-43ba-88fd-ec8393705090 b6ea2b2a-281b-45e1-917d-db369e6372ff 1962f291-318f-408a-a830-525b475e5f2d e7adabb1-b1e8-426d-b60f-7a8b225cb605 38519026-ea16-422b-87af-67828815b1e9 1a1dfe22-b889-419b-b106-abea74a0dbe9 36eee4a7-8ca1-4318-8d42-3d9ba9c6bc9d d6eab983-7d2a-4936-9b46-cbd62f444fbe f01ef94a-ef0b-4db7-8aa3-2d00895e38ac feb3c4c7-907e-47a7-a344-b1c0615950f8 edf255bd-cd08-4ee2-aa51-9ea3e667c76e 279a6ebc-016e-4072-930d-4278b4a8a437 fb84b0d3-c607-4fd2-a9e6-99b0e7a2aa0d 016e0abc-84a3-4bae-aa19-df23fe998501 51391bd3-9e4e-47a5-93ac-ace01b31e6d3 4f7e0d69-54c4-4eb2-bc2b-12eee02912e0 f672515e-e6a5-40d1-aba5-e075bb943453 f6d7a0ce-6560-4fae-abae-9530d5d08d07 d76cfcbf-83e2-47f8-a040-b71861318b61 f3d256ba-ee38-4125-aa15-2848d6f5a55b d3e2f15d-5fe7-453d-9815-8b335f1391f7 4f3ae5f8-33c0-4a62-9c08-d42727ac69ad 0659f909-50f7-4ab0-a5d8-84fd7a63c1c0 6d6ee591-c104-4180-a7be-7cf0ba73f76e 166cf800-51b3-4bff-ab07-3df8254a80e5 413a5765-6406-474f-8cbb-c0a80114eeb8 0aaec7d1-d47a-4494-a9b2-fea505880cf3 7963d26a-c6f5-45db-9134-c9839c0f225b de4522b1-7194-462b-8a1e-aa0a374fc627 a99e434e-269d-49d4-8918-c2dfba3fade8 6f1328dc-42a7-407d-933a-3768384d4142 df0038cb-4793-47bd-b6df-c618dd1bd262 2fbb3a8c-957c-4b34-a89e-0f2e6957c0c7 a1cd624a-43f3-4ed7-ac33-924248e6ed05 d16cb015-51e4-4893-8235-5f2220dbd6da a47ecad7-7a41-456e-b71a-eed48a6976b4 c1019b67-939b-4645-957a-5320b2bd7cb5 89823385-376d-4a01-8a72-4c4cd81e49ad 37197cd9-332c-4cea-aec7-6028998c5ad1 0726e17c-9a85-458c-8439-9e09f1838934 5a1a6f42-f2bd-4167-b243-1b7e4c9c5a38 51175ab0-9e3e-468b-8b9e-11042430dddb 4a5490d0-e77c-4d98-9058-3b701d062ebd e0d7ec43-b77a-4265-b8bc-cdf6f27b323f 0b33651a-58b1-46d5-b874-dfe4b22b8539 56bec837-709b-4063-91b1-98d88a56a0ba c8283587-6eea-4c71-976d-f172b952a08e d90799b8-5eba-4083-a88c-242529d5668f 732d9762-34d0-4309-af13-d4a1d0023cc5 60a90226-7297-4f12-b1a4-a61dd456aa56 521ee977-8c23-40e9-bef1-6eb2498c3127 101e1703-fda8-4a45-8138-e0f3cf8073dd a2cd4204-f9ed-4ead-afd7-164599617d57 b311850e-edda-44dc-b351-fd04eec8d28f 1b6c489f-cdfe-4e9f-9e9c-213d3837ab5e 0c1155b7-b4f8-41cc-bf25-c5748cbe891f d4b147c9-dd3b-4fdf-a486-4f64375a1cc5 d87f39ae-9545-4ddc-a6ff-980df10bfd16 02635a93-8b76-46ed-aaa3-b5325c533cdc 387dc45f-f53b-42eb-8add-299610f8612e 8cb0fb21-2b57-4f05-af0e-7fa723ffa4d0 a64f76ac-f04a-415d-ae96-7e15c5adb4e2 87055cfa-a2f1-48af-8b3c-f59d37ff7343 0286503e-8fe2-4aef-a0d3-872f0d09d441 269efe3e-2125-4842-b9ca-2d1c4655af48 a839fd3b-0b36-4bb4-a27e-5f216635ec6a 2c31f58b-52dc-4790-a1cc-32689723be08 134d0347-1cd1-46a9-b25b-607c81b560e5 b93ca87f-64f0-480f-a2c4-8fc68223f84a e87134a0-a423-4fef-9422-3900e8143ca5 1f1090ca-ef37-468a-9d05-58fcc6f9b35b 2bf0e519-0cd2-4b26-bf45-d0f910d66873 731c1752-ecfc-4a9c-9839-d9958989f25f 5f627cde-9aca-4605-9295-0f987eca94f6 1e234aba-0d2f-4b1e-80f0-af58eeb9fc53 c548d62f-13f3-4ca1-9524-c4cec811b768 3ca27740-fa80-4476-a1af-69d283374925 0e511948-d914-4d3d-bad0-92aedd28b8e0 ea1d173b-1a9a-4485-b22a-7da86bb79ab6 1c638bd2-535a-4803-a833-2c27e0593968 44d59aeb-cdb6-433b-97be-1517a06ea9cf 7ce30d3c-48c3-4bcc-b860-443c3ce4ab20 44bcedab-2a1f-4125-9fa2-90a08876318a 02e6edfe-ab38-43da-a9d5-904a6720cefc 1a304b07-e26e-42ea-b84f-99cea5e6da5a 774f75bf-b3fa-42a2-a9a6-ec4980936333 514683d8-6fa7-424f-a62d-5d9e83e73d85 0c3be96e-4174-41af-a00c-b97f3a750601 ba6d2474-f392-4fb5-afec-1c8928c19f13 f4d64405-1a42-4646-8c74-1cfdcda96c45 8fce4735-b23b-48a9-b4e7-99acd32d6b9a 6fe7289d-b533-4214-8894-ba8a146e035f c54c8c98-79e5-4ce2-bfa0-9fb66d036b14 43bec3d7-3529-40cd-bc10-552e8c013e92 392efc55-4b0d-4c59-ab70-389d76169126 2fe22152-6295-4447-9aaa-9a72e9af48f4 2e6d17c2-0b44-4776-8ed2-b91164f36e9b 59299934-9e98-434d-90d5-3f96a73da6f8 8fcbb8a6-3016-40af-bc0b-75ffbbcfdb9c 0cdc9826-9bab-427c-8b42-28b6b312ec34 bf6d5dfe-4fe1-43e3-9432-1d425a50f4f6 0c7f2526-6a4f-4833-aa37-429630737de5 cc22eae7-7b4b-4abe-bc4b-cb80e8b86f26 2ba062c9-09a9-4b86-b945-cea42a7e23f5 ba5596ad-9633-4ebf-8924-4c312e24b7d8 e5d220d2-0f67-4c00-b465-fc5ed7f4b901 c4fba329-6844-4abc-b3c4-8d16af7c698b 3eee287e-b8b4-416b-a03b-d37712340ff2 c56a43a5-c96b-4a77-afc1-5247f369bfee 803f8dd4-9c05-4b18-9b16-e0c1c953a8b3 b378b341-2778-4e3c-9691-4c2f41601796 5c087ee5-ad0b-4c16-86e4-f334061b8895 f410c237-e6bf-4012-a363-a6182e48055b 557d8ad0-b6ed-4489-8f44-73e510bfcf3c d839d0ee-2c8b-4faf-8ad7-addb6aaf004d cef923e2-fdf6-4b9f-96f8-8cba476af7ce e6932d3c-5638-44ec-be00-627bcd163a23 8703b2b2-51fe-4612-8b44-a0cef3c2feb3 6f5e51aa-222c-465c-af27-0c773156d0c0 5191fb9a-b839-4208-80e0-a6e99f160691 a2079ecb-0915-42cf-8d51-b96e73bb9da5 ab8a497e-ec4e-4293-b438-9365348eee12 a2f5dadc-b63d-4450-bc86-42fcb3b16283 7570ea8a-3b9d-4665-820e-79b0beda2a12 5dacadf2-8320-451e-8c00-981af736972d 9fa589cc-91e4-4894-b3ec-52bad14f30de 59d350c3-646a-463e-9a34-31c726ba6b16 e008aa20-07a7-4dcf-b8f7-1c8cd22488a8 01d5484f-4ecc-45bd-b12a-f2b4221a5381 19f993cb-989e-4490-9308-9045244c4990 9c118133-8d7a-4804-97e7-ea84970e338f b3af2bd7-2272-4102-9adb-ea190c66a9a7 06fe77c2-6a8b-4942-a4fa-a81c45066eea afb86bcf-3e8d-465a-89cc-78cd89120da4 5d1c99a9-6bec-49f9-82c5-36f4550d9c98 5cf73bae-fc05-4bb3-bd6a-dde3b02b4362 398e02b9-c8dd-4453-b0bf-2ce2e946b697 4b23326e-340c-45c5-9839-61ece35acd56 005455ba-e6c5-4584-82b7-209e3415b76e f3282514-f45e-4687-a2cc-1ccb5d65b233 c504e85f-c820-4089-b121-520dc7f6b2ed 458cb23a-f2cb-45cc-8d25-1fde666fd2c5 7f543d4a-e8b7-47bd-9015-ec0439481cc9 bf2fbb45-8a86-4a33-bd46-592d7c9b4aa3 eff91ee7-ebb2-4ba5-8a7f-63c570724527 0cc22143-03df-451d-890c-02b53f8e0dff 206d1e84-2e6a-4b79-b910-59bf4ef8d765 4801b478-2daf-4d03-9720-bfdbc6ca9a39 c65dc5c2-748b-4eb9-804b-cab775be062b dd139233-d794-4c14-9770-e23058cecbd7 52470201-dd96-40e4-b1df-2f80d3c0d637 41217332-cdba-4fec-b8d6-616aa22e56e2 10e705ac-60e5-4afb-92c9-cbddad8be164 98cc6754-1055-41e1-9d95-84735e9e37df e151f3a0-d1b1-4eaa-a710-3a16fd766175 72df028c-743a-4160-ae3b-74aa3bc6d270 e43619d1-e089-464d-84d9-abbf7f124589 bcd8192d-ecae-400b-a741-bb4f049cd9aa 9ba99f63-4b44-4d46-8838-65d35dc1f4f6 4ddc4753-552b-4f71-9603-42930d2864ef a709af46-2ddb-49bf-a440-d0968d4ddf2c 315ecdbb-fff2-421b-a60c-ef4b09ba0524 c7ac2b04-d65d-40c9-8ce6-d694e3036d85 0dfd15c9-e29f-4b51-8654-7138ab3d471f 58773539-8c6d-41dc-80cc-a617235027a4 1d85db85-1c53-4423-ab3c-d78d776f3230 95fccf48-45d3-4fa7-b946-8845ebcc0829 8c3ba37d-ef85-4c11-8f5b-a5560973b819 b19c38f5-e8bb-4645-8e26-cf1f9821d613 c19d02aa-87fc-4397-9d57-820743bd082c 1062d08c-4812-47ca-8eb6-ff276a752240 87a913f5-b6cb-4b47-b528-c18c67df9b22 2eb0554a-ffa4-45c2-b140-56074f30d11d 539df58f-9420-4349-99b7-f2ca59f1a0a8 76485585-3c44-45d9-84ba-f7f8b2ed6ec1 abbb3843-988f-472e-9e12-ec0445e67d02 33bd626c-b5c9-452a-ba57-d3239d5a7993 3de73479-7c2e-4e9d-8b17-b751fe8fbd8c dd5155ea-1018-4125-831b-6d6e5cfac5f9 dc107f0c-e4f7-46a8-a4c1-adfd986931ca ca791318-1b97-4cce-9b9f-1feeb1090fc2 3e9f1e29-5d44-4e30-983a-0a4ed0cbf0bc c0ef4326-b6ca-4214-9d3e-06c74830307c 66558de2-7570-4ac8-aae0-8b63428dc745 917f0e05-7311-49c1-863f-9d6183ea0147 2076adf3-b0a1-47ba-bc98-44f3d0a1c290 1d7ddc51-5309-4be6-b2e4-44cd6ba6fa6a 99be6976-7586-4d80-aae7-2e4a81ab5132 10d6eeb6-95b2-46d3-8e4d-aac5493188da 1d4b5b9f-18de-43c3-abac-21c83129de0e b934eed4-d5d7-4d4e-982f-60eefc7fabca 3c7642dc-831c-4fb1-ac1c-3ac4f106256b fb1eb238-b715-4e32-ac40-cd5acdda8838 717dc04b-c05a-465a-a164-c03d38475cec 5154f278-e908-4639-99d6-ec3d702dd41a 65a20798-2db9-4632-8762-a11f6adc4bb0 e769446f-6ee6-428c-bc77-e8cfff7d91be 37667eff-c30d-44f7-b5cf-15989a876f08 130d79ed-2a45-44f9-964d-ff6cbb3165b0 6b7b65cc-d689-4d6c-9f7a-867d3d1bd63b 2e95a147-f3b7-432f-8f11-04a21601671d 48bacb4a-72e8-4d59-a038-74011ed7b24a 607b3008-be61-4e00-9b46-a34a72be6fd7 613bb1c7-02e2-48fe-bfc9-bdf4157f8b80 e5b7d874-c2a2-4fbe-815f-6ad81f9d6a87 bd89b7ff-75cf-464e-8aec-12218713d437 29a7374c-b66e-49db-902c-95733eff06eb ecd698ad-2d35-4141-820b-7b5c13319635 6be80988-63d4-4325-9202-7bf825dce77b 44cdfe6b-8c66-4950-960b-4249668e8dd2 7239b9b0-59ae-4f21-8427-33d3689a9d12 4b5f8ba9-c3d0-4e77-997d-44078cd82acc 60854e4f-215a-4337-9eb6-7cb4b5105b7d f6f5cb3e-3b8f-43d9-80ee-4c47cbfd0caf 96fd86bf-382e-4197-adc4-4db3ca45cb3a 9a65d24f-8503-4115-8449-70a8f9758091 568e36ed-c7b1-42c3-b8a4-27bc7e3c36eb 98d55bc6-b71f-4129-bdf0-985aa5bc1e49 52a5cad1-b4c1-4b44-a6ca-00cafa77f70f 976da4e8-58b7-4f0c-a21b-e4f3c7e66bc4 0e53439f-2472-4584-9b40-28700c9ac25f c5d293a8-e004-4008-a8fd-fca233e1a4d7 7af12376-261e-4b6c-9677-075386f39ea2 800af3df-8a6a-4ae0-aa2b-3adb03007e5e 82634cf5-3773-460d-9e6f-1b7b5062b00c ec92481c-de36-484f-aac5-a218578d0089 430eec29-b0fd-43b3-9eb2-be4aed9ee767 85a7d890-9b0e-4858-bc69-0d47cc86204e 25d8978f-0e9d-46a1-8773-1d99c8cf96c6 ea253ea2-d769-464d-a5fc-1892b94c990b 797c8d5b-5222-4e98-b06f-30f2a9a1ca2a a6f54a40-3680-4c1f-b2e6-06ee7750e81c 951f131e-8f4e-44b6-a82f-c65d0f0238a3 a56d649d-697c-42ca-af42-5a292ea2189b a91600de-a543-42f8-88f8-54314101f5f0 1961ff70-ffc9-41b8-b690-891b429376a4 ed3b3cec-4670-4f88-a019-026e8ec00ec2 aa2f8227-8d20-4ce1-b838-a34dcb78f3df f00d2ad8-1f9f-4cd6-baf8-2accafbebe5a 0dce988a-e58e-4eef-a275-bf44ec3a5661 90de991f-635d-4e8a-819a-cd365d7c7f65 36a73e54-c582-4cad-b290-7af944a14a30 fae8cba5-2a30-46a8-9d07-c249b33b218c 3344b091-d1cd-49be-a650-d5ed7766494e e6e98c4d-f86e-4bec-90a6-e971938e4162 1301275c-a22b-43f3-995a-efd23f54599b e69e987c-f001-4e4a-929f-b1b355434841 c8631e0d-3119-42b9-b670-d27b42e4f6e6 521ecf93-a3a6-412a-9d94-8745ab977e47 662c2dbe-f0e8-43d7-9f53-ce51abc21621 c734fde9-9f20-4433-8ace-320864fd476f e1a89a49-3170-4bcd-a77e-262c054bc03e a7c56ae6-6593-45fc-842c-0d77f63c5b8f c6249a42-4052-4779-a9f2-fb1848723b63 c87b2844-2cd8-4076-afb3-d0afaf573eb8 91d599ee-7c47-4f09-a14d-5a2fd5dd8793 75d42251-02c9-4ff0-8aff-6cd07c3ecd37 c8a78b4c-7ccd-4c4e-b065-ba779d5aa7ac b1abb5d2-dbc5-4566-a760-022959cb60d1 c1d5de71-1f41-4bda-8bdc-cce14a55dc78 958fe058-afcb-46c2-97ec-ffd2d7e1f578 d147b55b-da7b-4ab2-b10a-62f2e6d5e788 54e5c98e-0a64-4d05-86c2-f535d8fec6db 18d81bbf-2be9-4432-9a96-d7402e433a5e 41c64511-4ec5-47bd-aec7-65deae565ed3 4d4dfe39-4d1e-4223-abc3-7dc67f53652c 7bcf8123-a6f1-49c9-9442-5d272f755033 e2342a7c-21d3-4643-83ca-f8637f6a0b7c a5191958-500c-4a90-a29a-18ed2b5403e1 560e0da1-11fd-4492-9ecb-5282fb552867 02abd2a8-f55f-4600-8b7e-74ca5dc56f52 4aab3c90-e774-4ed0-a192-01773012f005 06d5fe62-9d15-4f3d-b147-b718e26cc404 d7a567dd-4600-4598-b5ac-bee63e9c7104 fb483f35-7a23-45ad-a554-2a2a20d1deaf 41c921d0-303c-43ee-992c-c145a801ad12 b90594a9-2136-4f24-93c7-87395161aa8d 0fe86181-7855-466a-ad86-97e42fb09d22 ac414c6f-fb1d-4fb0-835a-1ceff3d44269 7aa77d08-3200-4261-a74a-5706caa3b880 862ad62b-e0dd-41c2-b94a-05bb7f83aab5 8cdc1b06-f5f7-414d-9ecb-a95d750e2007 ef854865-14ed-4702-814f-2c56a7fc4df1 00db60ae-0dfc-4c01-b439-6fc2cebed907 8d646501-0194-400f-8fec-bdca8f9bd543 3b358eba-61f7-4fdc-92bf-5689aef67ba5 58c5fc37-5440-4074-b2ae-647a18e65a77 427bc87f-09aa-4387-9b4b-322a8258afb1 682fc288-21d2-4d61-ba52-8a1012301cd1 40ecd2d3-dec5-4aab-952a-df127769ad02 99e7896a-711e-4604-883d-d58a4ba42e07 f8668738-d4db-4064-bc9b-40ed5bfddfd8 806a77fe-be9a-433c-b2a7-00c9f5106a5b 6ee9ed88-5aad-47a7-86e9-b5ace14ada44 9f7b4142-5a2f-40bc-8c34-ed30d213a525 47e5a70d-e553-4666-9230-711d416bc8b7 94eeed00-e780-4001-b6a8-7642dbbfe0b4 61e447f8-5cfa-4ae5-88df-209feaf0094d a8ab205b-fafc-49ea-a0aa-58b8596c7d0d 9616b551-37c8-4fda-b589-9b888582752e 0940cb36-d92b-4376-84f6-c9c342f0623b 0c64fc78-2a42-4347-8826-7a1ad922cc60 d63832d5-3a6a-450e-bac0-eb57e83bf4db e96ee7de-c8b2-4875-acf3-244d418ea055 fd99c774-3cf1-4cfd-871b-9770d2025d37 37540ea4-61a6-4799-b965-a5d158fbce66 78707dba-6d4c-4ca9-9d6a-d3d89cd9e0fd bbfbe657-b921-4cf4-8886-9f43607e8b34 c4bea0ba-aebd-45e4-a4d0-cfa96cb7620c 434b432f-cf31-4622-8b2e-3314e72855d3 7116b1ff-550c-44a4-84cd-419716431cea 165d9aa3-046f-4802-9f92-c56964f490e8 8688a830-0a0c-4234-a544-e1c2f4e39f8f 73b2d391-7530-4b89-955a-176098f2ee67 b55f46e4-b75c-42ed-9074-8111d5bc811c 815730c6-e8d7-45e7-9b19-6f81731e412c dcba18db-d1c8-452d-999e-e4979d72acc8 3e73b2c1-3691-4e2d-8362-49467710df13 8fe426d6-a9a7-4fd9-9579-ba0bcb40cc74 8817908b-8ce7-45a7-b3b4-6cf12aaf4a6b 29eb3891-8952-4684-8ae9-d8463c6f0d77 9584dcbc-ae84-45c3-a145-c6a84c9dfc64 24a9a4e7-f527-47af-b3ba-94e9426a92f6 b112a228-2748-4f46-98d5-d7ad6e9c7c08 4e243124-b476-4674-80ab-b11fd4c32263 565682b9-28bf-4a6c-9041-5b20104855b6 f1a77a0d-6caf-46f2-9c9d-fcfbbe5e32fb 5dda8ee7-1659-49dd-a28b-543496820ec6 b0faaf85-82a8-48e4-97a0-618727db6308 19d15816-ae5d-45f2-b87b-4e5a382bd114 71f9263f-d0af-407a-9ef2-64e4ae19bf18 7aaaa898-6ae2-426e-8d6e-baf7bfcfd2c8 c0ec3db9-6cd7-4e6f-93a5-8d47a080ed96 d95a8522-7382-4afd-ae7a-55d209056690 80711529-cdea-4095-89cc-d955b4bc2a59 50c3a788-e8e4-4450-ad9f-a89ab9789d78 c0085bf6-e83e-4f0a-be6f-432f56a30dcd aca94fe6-1979-48c3-b374-9956fc6c1e59 3666b187-841a-4cee-9f95-97cb2f4f5725 f176bd47-3a3e-44bc-99fe-15dd99b9191d 6b08174c-1316-4d08-93f0-d9aeeb8f017e e602aeb7-42d8-40a0-83e3-09305028d03c 001cac5b-0b65-4167-8f02-6d1abdea188f d71bac8a-4858-4417-ae47-8c0e7cf791ef dbbcfb70-07c8-44e6-841a-c0fbcbfa792b 84c32642-b3ae-4b00-93f7-3c2b83c528ba e535d20b-2492-4471-8d07-32e68db65f62 283d83ce-20fe-43a9-a347-58237f7c0063 5f9ab49e-051f-40bd-a881-2b0771d1f552 761424b6-77f0-4008-9cb3-cf8240774e08 2142e68e-64a7-44c4-ba01-8e77a2d1045d 40a33429-5b6f-438b-a3fc-45cf0de558f6 7c238a74-c553-4139-8140-a4c1037d91f9 6432bf74-847b-49c1-acc7-1f7eb4530b94 ee7b747a-6a95-411e-b213-c1e2415ca2d8 df6c279c-0d10-41e8-a1ee-ab63400843d3 8278dc8e-066e-40cf-94b9-e76b2afb310e 91e0ee4d-2bcf-49c0-8d3f-95b315afa630 8abbc672-e430-4808-84bb-e2d718b4a1a3 16242646-d65a-4d60-826b-cb962bc791d6 450fec8a-7963-4d3b-9a05-16dd33aa0fdc 518ce1a1-50ad-44e9-9b98-04aaff37b53d c5b5fa31-3de5-4624-b28c-9b83c7a02eab 742cf480-5498-467e-b1f1-318c47c44ade d01a8d88-efd2-4eda-95f7-c40032d8cd47 164c1f09-c01d-4de2-ab5b-ca6ed43de0ea ff94ddf4-bf95-45c6-8fec-03b7668d1cd2 716468a1-8e81-48b7-8fed-3906716a622e a65a87d1-8b9a-4c13-8107-6bdd56846f3c 7e5c91fc-c961-4591-83d2-082e28bff11a 745cc906-afbd-4a26-b207-92acd821905f 917c829b-691d-4a74-9a58-df31121a13eb 11f91b4f-40bc-47d5-801f-539a308e3b3e 76281acc-3f9b-42a1-8050-094e670f8612 d612a079-b071-4fe6-8255-0821b73990c1 b0c6215b-3238-4db3-8e4b-ee798e3595b7 e7f7f738-30ad-4295-8ebd-f9d4b66920be a8cec467-ed2d-4f40-9bf7-9c6fefe3d691 8f4a174a-2680-4eb2-9bb4-70805854d7ac 93a240b3-0e37-4493-8ca9-a5200bc0ee63 6867a019-6e4f-4778-ab26-4f0f3f3900ca 136e1c9a-1e53-45d2-ac97-5bcb65889b72 e970f030-922e-4faf-a13f-522ed9790c59 83c211ce-813f-4b53-9359-55687e26c4f3 e2205951-08dd-4599-a381-7eb771287ae2 6c555472-03d9-4ef1-bef9-e274db2bc112 b7d11032-5df8-4b54-986a-55b3349bf993 3fbc92cb-7f11-4f54-b9df-354c796cdd0d cb75f67c-0aac-492d-8589-4b81bdd98b57 95a54627-35b7-4e17-b098-c82e24271bee 7c65d5c4-49bc-4b28-94b4-a6a8bda9a9a9 82788f4e-8ca5-42dd-960c-9385c70288de 43242f74-9f32-4666-a74b-067cffc6f7a8 f875bbe3-09bd-4c89-bf90-b50d23f183fe 8e66d6a7-12cc-417c-a755-e2d18ab2d471 7527c8e1-4227-4ba8-a4ad-b56fced9013d 6841cb0b-14f1-4e55-b9ef-3ba11f9e523c 58715f95-079f-48ec-b54f-0425ba3a47f6 0219320d-cc10-4539-999c-166f3e40b463 1d2b5e00-6d43-49b9-85f3-6117a1054ada bc0f6b66-7ade-48ae-82d9-f0376e0a9cbb 7dc45817-9c84-4685-8f73-da3f5c751d21 7493d503-4474-4007-a669-4c6e0bebc2c8 53b3add3-e6a4-4507-981b-e29cd58297be 0e4d7ab4-0d25-40a8-8b73-5bb6d8889ad4 b0c77193-8592-40fe-bdf8-d495c8ebaec9 8d49afef-1add-4860-aba6-dea1ee9eadf9 ddeeba45-f111-46f7-93a9-85bbfba83d7a 19cb3243-7a9f-42fd-87a7-919450dbb125 b3fa688b-65a2-40e7-b30d-ed498a1eed08 8cd9fa3f-efd2-48e4-966b-adbd97e9627d bfdb7075-e9d4-4a3a-99a5-f8da309160a8 6490bbdf-636d-4a36-9d97-757eb92fcf04 d37b5532-553a-48bf-84c9-e91073573488 b356dfc1-0ab5-46c8-afe6-58268707c48a 254d467e-5a67-42bb-ac7c-d5890e67fce6 708f14b5-7cc3-4e8e-9af0-98fd50de8743 e477c23c-c4d2-458f-af99-d26531e70f5b 48995d73-3622-450b-b307-cb101f8bc1a9 b025180b-ff4f-4164-941e-aeb2db32e471 a6d0480d-b25d-4bd3-9f6f-9da67c1a61b6 fc708dcd-a4fe-4527-8905-50ebd520de22 ed120dec-7cc1-4def-9fb4-b3a3213ac12b 8e818792-067f-4d2f-af23-0761918c7b23 5ba679a9-a28a-4088-80e4-e056a5bfff93 a4079b1f-8432-4c19-93c3-55d61a42187e b9becab4-0b05-4f79-9489-2c3923311388 5cd42d28-3d89-47c6-8990-c23ccf49f84e a4a577c8-8421-430b-9bd3-5ffc58124ba2 2b9f7878-66da-465f-88f7-83c08b15c437 beb2d8f1-e796-4c23-979d-677ac547827a 176e15c4-b0cf-4687-8e01-74bd4c3b2ca1 1d02fed3-0a90-4c68-a138-ffda2bc45135 1097ec08-ff67-49d1-a481-dd5913550367 4d06dbed-b8ad-4f4f-95b3-6914636c766c e28cf900-49be-4160-afb2-731dbf1fdc6a 11c6d3ce-a6f1-4a41-9a1f-b2250cd21646 9949e2dc-2132-45ff-a442-27a6f4f23bd6 7dc54da0-eca9-4612-a910-9a893dad31ec c8ae5813-afb1-423c-8be5-83a3869bab20 e3454f20-9c75-4066-bd82-b99b5612000c cfb9bff7-bdbb-4a14-b9b9-4e47647dc34f 371a5cb8-ba69-44fa-89d7-2bdeeccacd5e 21cdbfad-7733-4f2e-a40e-e4c5c0d453b0 13752fc3-895d-4c90-bedf-97e78c079ba5 3b67fbe9-3316-44cd-bda2-4d5627d7ac5e 235909fb-dac0-437f-a8c0-f44d0a4eb616 41ce5947-d71b-42ae-805b-02d2c8ee4d7f edad5c2f-fc1a-40cb-ae9e-b5f5c299b08a 441bb717-3f08-4960-b6c4-df5869d8436d cca8fcc8-ae9c-4092-a252-0de45c203697 ee81b1b6-c4a8-4dd9-9e13-2dc66b1ebea4 c4339d12-f20d-43d0-8877-b1640399d4da 5813f1de-7d9a-4207-baa1-4a07ba98d94b a449f221-569e-4a1e-8894-33badeffabc2 e0ecea8f-729b-416e-8271-187f5624a58c 30265c57-a3ae-4d73-8056-78d1ab278c39 1fde5d8f-84ba-40cf-9643-3d42a4819a7e b48875f7-054a-4850-9653-e58b4dfe5d42 e56f6b10-0e88-49a6-8536-65bc5a735828 67433cc1-6c08-4149-bf81-bb340837d7f1 9d7feef5-e9f8-4690-82dd-382bf60844c9 25fe76cd-4a90-4c76-af51-6a37ea2413e6 696ecb37-b54c-412b-b4a8-bd159d680daa f693a194-2870-4fd7-8aac-f6553adc6fa3 9b00992b-2b34-462c-ab6a-cd1451011914 55fbb06f-6a26-49d2-af07-cf879ec289fd 96b9465e-b55d-41b1-adb2-a962d9571ba8 ed9040b5-67be-4224-9644-71e318d92e7a caa7c976-10d5-4c2f-9730-5937ac8a7548 db4013d4-a7bb-4cbf-b1e5-c30a1a16f3c7 7eaaff45-e758-4bb7-969e-03483a75a639 fbb39e54-547f-477f-a5a9-853eed404128 08ecb81e-58db-42be-86a7-714753cab009 d7905c21-0fad-4277-babf-f4770080fdbe 5e68e0d9-ef3b-4aa5-af3c-f9e239757208 47463b4b-1c93-44c8-bebf-58166df4c031 2281d08c-2f70-4e6e-a0c4-1ff3c6bad0c3 1b05773c-aff5-4e9f-b2a5-09fae4ad1fa4 a674c4fe-8e1d-4759-b723-46ae6c07739c 5570e84c-14c8-4853-8dfc-264fe22083d6 2e1e7d2c-01a8-4030-a9a0-27095753006d abb4b515-5f15-4907-b4f8-2c45f828476e 63463e97-c337-48d8-b5ba-ed3578c2fac0 ffa2669c-33df-4848-b3a0-5a5da99eea25 008c46bd-af81-455c-8796-f8eca67a04cc 29c4acdd-e907-4bc3-846e-e72c6abf385f d024eb5d-f299-4133-b56b-d0863c685620 a57b9d02-a08e-49c6-8840-da5f7fac25a3 a9c42cac-5782-4f24-85d1-ca8a5c80ee22 4fc9a871-2214-4d92-8ccf-d95468ccd65d 086c6c20-2bb5-48b3-9df5-a7d069037b40 25c9f393-03a0-47f5-a85b-796705f97ec4 feffa697-e1a2-46a9-955b-d6f0ec64dfde 5de1d190-2588-4e63-a964-c16c79a0e16d 73281df7-4777-4d38-acd1-4e99c1d42f8f d1cb7a0c-52bf-4bc3-958a-98573024034b 81834a4f-009f-4237-857e-ab9f5cea8577 16471241-ff42-4120-9403-f716a255fb71 18589909-0ae5-4639-b0ae-51786a6580d6 ee5e3a37-1e7e-45d0-82d2-168dc031bb28 e06f6634-4f03-4e65-a2b3-a9b5e9d7ec49 b9a4a2c3-fd93-46e6-a63a-b8c6dc8528c9 411ebb04-b24f-44f5-96da-7e488c5a09f8 3fb0aa7b-876b-49e7-af24-7236467b647a 4ef757f1-3049-4f3e-9c18-d9d278532ddb 453866c5-99fb-4330-95ed-dcb1780515e3 7475807c-aa62-49f1-96ee-b984739ddd0b 1ee53cc6-1cdf-4e28-b4eb-1722021191e2 bc5f992c-106a-4c5a-a760-1a422fe82529 92ba2527-457b-4972-a31f-207312de8a52 fc1d79e3-f314-4748-baea-e22c8896519b ce08727d-a362-4fa6-9c2e-2e9d989c27c4 7b35bf26-cac7-4ffe-9b29-302275d51eb2 118b5ebb-a19b-42d0-bfcc-8dd73e9c8ba2 53b4baa1-a56b-4f67-bc55-7fefadfdad11 7aa03498-13ac-4af0-ba33-ddb59436366f 7161283d-67ff-4bbb-917c-026699f7a5be 608ebaea-32a6-4f05-8cc2-06f92e9312cf 78d2976d-306e-4fc2-92f7-9c36b84dc76a e2eca06a-0960-410d-9e92-9cc31b999c33 87e962eb-a068-4f17-88c0-e59999298f5c 47fbdb79-3b06-48b8-988f-c8e74d1b1d5c def46d09-64b5-4dcd-ba2d-b15526ceee21 f6cc2c31-a6ef-4629-a68d-d732ddfa9325 66a673bf-49bf-4e03-8e4f-67deb129d7c3 a049acc3-fc06-47a7-8ef5-876002d98ddc c8eaad66-7098-4c01-ae1d-2216e8a1913c 0bee2c52-1be0-400d-860b-e012be486edc 953a39b3-aa2c-4572-a7e9-267f453bedbb 0c632350-2f28-4a42-a061-f982630f34e2 969cd9cd-8d9e-4736-a9ec-8e5fa0e32aab c1c5ccd6-d37a-4058-b701-8fc0fc0c4f01 8c7c2f76-2b36-4098-a83e-ca19eb8bed64 38d31dc7-6277-44ae-8f62-e5ef5d5fc5de 87746d98-d445-4d49-bdaf-183a7a9b0299 33a85c68-d9f6-41cd-a52b-43b9de517e27 e8cb77fe-0930-4761-830e-42f92caaab98 8c6a5568-149a-4875-8af6-191d1d7441cf 07b69666-a38f-45b0-a387-41de74511561 4b6d9049-a6de-4379-bdea-eb77cfff0144 76558987-bfd1-4d2d-b775-4c1a519af787 65360737-9c78-482e-90b7-7556a1bb0eb5 ab475d89-9fe5-4014-87a1-12776985209f 239e6b6c-a039-4861-b0e2-f64007eacee1 a1e103e1-9880-4fb1-a705-52b9a00cc100 f5a78f3a-862d-4a2b-b89e-729efea3471a 14823a01-7ca8-4ef3-9758-4c51ed613041 fbf49917-d810-4906-97e2-59234eb61f18 f829bcf4-5963-4621-9a03-98506bcc971f 1974be74-8ef4-4a80-9344-25eef961dccb 799ca5b0-ae35-42c6-a30c-9e9392c7d60d dc25bc18-2dd5-4653-9535-b48aebc24282 64e58c97-d77c-4018-8b22-900e9ce98b34 44ef3ad9-6584-4b6c-b89c-1865968b7532 0c63e5ea-4990-4fce-b22e-ba62af94a60d 2db6abd3-7f4e-4027-9712-7433474665f4 494a1f96-e7a5-4cbb-9eff-44ad268b8e85 c019813a-fdd0-419d-965f-59c0889abe6a 5da9e1f0-9139-4417-851c-ff3f3442bf68 19af3014-86f0-4476-9dcb-a4ac271865da d476547b-18ec-4286-9301-76de3a729ce7 b9337436-329c-4c45-8060-499797ccd9a3 73f26304-ae47-485f-bee1-a27fb1b04628 46d0f852-334f-4b42-ae83-8e88a74d6b5b 0578a54a-6349-4f33-bf80-d85d3576c759 3175804f-8a8c-4711-a51a-8e11b270e9ef 0eb00781-89c4-4f69-a856-70a38869cac8 283f22bf-df23-4d1b-8f9e-8913b28a63d4 d03fd592-b6cd-4772-9a16-84d74d2e2830 369c2bc8-7881-4fb2-93b4-b82944e32979 f6d7f109-9401-4a70-a6d9-fa220d213f82 589b49ba-aada-48b1-8034-08d5740e44f7 50b830a5-572e-410c-8e25-331de5f618b5 bee9be74-163d-4e6e-a3e6-01066af3e3ad 96b934ea-8757-42d0-adc6-6546f261869f e7a852c7-3693-4b90-9841-935a910b0935 cfc2a1bd-1c3a-45c5-aa9a-42f497891379 189d92c1-b795-4fdf-830b-fa5065ea833a 435e778e-e292-4a16-bdc9-14b941f17944 7df892b4-095b-44b5-84cc-1902c044ba16 3ee7d38c-d467-435e-9131-8b7af3f92163 85eea98b-f045-421f-a101-5b694ac25e5e b4f903db-1594-4f32-8422-d2eea3902f51 be2b2004-96d0-4996-b631-25e5f451fe8d 17fd9027-11e6-4b1d-95a7-fbcd8636a6ee ffaa9ba6-4748-41bf-8d33-e0f8c47d3cb3 b8847871-0bd3-4d9f-8a19-14e1ada695e5 3930922d-fb51-4355-847b-021b7daa34bc 088b3d75-fdc7-41e9-ab8b-3116a87de345 c5d56b32-beda-4b08-ac73-9617b4aa586f 5aee09f6-15dd-480d-8d53-85d81dd582db 399b935f-6559-4ed1-bf6d-965da4a4308b 11b9924a-494c-4cd9-b4ec-2ac6cba0feb0 b08f8a28-f145-4cb8-bb52-1b95bff339a7 93f08da6-97f2-4039-ac0d-3042d9178fed 49ccb002-a2dc-455e-9bf0-b16c6dff87c9 658dfebb-858c-40db-a9ea-93600c170c79 0f2c5f77-a2cf-4c78-a88e-d11404336757 8813d1c1-ade4-40dd-9890-208d388f723e d3cf7054-ba03-4d3f-b2a5-160cdfe0a54f 7c54c3e6-99fc-438a-997d-fa9ea282f8eb d0d58ec6-a6f8-4a5f-85fb-813cb85c7e61 fc2819af-c7a6-44fa-936a-27d644600eff bba9f9f9-07a5-4d37-b7f8-58a1e086d06b 660bf59a-b76d-4349-b769-e4460b172955 06fb393e-8c6f-4e85-9c3f-0a6194148021 31a35601-8923-4e97-8422-a9d376f210a0 4f5be9be-1d40-4afd-a88b-102baa76dbed 31124ae0-4551-419e-98db-758e75378564 c7e0d9df-bf2a-4748-a918-73b7301a9b2d ae0f7ed6-efce-4e13-b80c-ace6555bdad2 8777f7e6-3952-4068-8e91-92ffc1381927 8ac924f8-3070-428e-802e-ee52c37bdec5 4b2d664c-b878-4bf9-a951-28404e2ab8cf aae17b58-1ab8-4775-ac5d-ea3e2f195757 eab1c21a-acd1-478a-8abd-1f313937d08c 6c215b3b-2d79-49a5-b28f-0189af8cfacb 46f98405-486e-4fc6-93b8-1bc56124ebca 9cdd0f6e-7004-4ca0-b92f-316c46944189 281e2a6d-ec43-4948-8864-65509a1c7daf 8fc59ca0-b8e4-45d8-ac91-f6f2aa21d3ec d7b4348d-2c34-429c-be92-853e2673433f 3b71423f-a625-454f-800d-651418fef8c3 919fad14-d907-4c96-9f00-46f5b11865d1 8367d429-bbc5-4006-b887-1da2b0b51111 5a185dd7-2e00-4eb8-a4d4-6ea058e6b2f1 af30ca36-7b04-4f2c-b3e6-5d738c077276 4570bcca-a293-4d34-bf48-e60a02c39a45 c1d34495-97b1-45cf-8d5a-ff095ca227b0 1a35ed94-4f08-452a-8f42-949a4bde4eaa 83f60a2b-be8c-43b5-8304-d94f59627f20 9676260d-cfb4-414c-b4a9-f1f549d3618a aca5086f-18e1-40f8-96e9-740e05008b46 15cbdb55-18c5-45d1-bc4b-3ae24104e883 99420469-31e3-42cd-a1eb-c495c9c8977f 52e46070-8e44-465f-8aa3-3e1046adde2c 436f3c21-6fb2-4a12-b24f-581f09d74e40 2ae3ae15-7844-43a2-8e46-3bf552f4c310 e8c6b1b4-6748-4571-8db3-80bda4976f73 faa4f35f-5059-4ae7-92b3-d6a06bf16acf 4a88f035-daa1-4a51-8a50-39efbcf93f49 753c592e-6635-4fa2-8b76-202ab5d39668 8c4970d7-c2ce-46a7-b1a0-d00333d11c16 53c41d25-a34c-43c5-9f90-41e9747d474c ddc67964-bf6f-4f9f-8039-9be49e7adcf7 dfae9abb-1354-4a08-9ddb-968142ae77f9 7ea45e24-89b3-486c-9575-276f669c71c4 3e454e03-4d50-4b73-a69b-6c859668e4f2 4e8fa2a0-8ef9-4bb9-b99e-d5c8daf6f68f f2516b26-4f6b-42b9-a9c7-38d8d24a3809 1add2074-84d0-41cf-8a15-97b7326dc222 a4377a35-2eb9-418e-901e-815c711670c0 0b5948e1-2d50-4f7a-b1a3-f83c406d3646 c7a1a855-141f-4801-aea5-7cd1de4e1fde 117419cc-06a5-4d87-9c87-58fc5b76ed3a 8bc79a31-1062-48d1-8d90-8da490986ece 8fdcc795-1c41-4505-b5b2-2c852fe7e808 4002c648-738a-416b-b30b-2213a45dee1a 2a792d15-569c-4787-8076-5292e8bffbe2 5a0327b6-57cc-478c-aadb-37840f089d52 2d5ca1c3-944d-48e6-abfc-db57c3d6f6a9 27ef4cec-7e8b-45cf-b82a-5381135517ed c6aa5591-f285-4242-9833-c6886eaa21aa 826cde09-e494-4e25-9343-66b2a393fc5c f938cc1d-b267-471d-b0ff-6434c58d412b 1994c56c-1a87-467e-a8e1-c108d9f65e45 432439c4-6569-4fa4-9235-d523efdbe043 e032c78d-4071-4b47-8cf6-ae0f4caaeaf7 22c89fc7-6e78-4fe3-9657-de99017766b0 202ab153-74d4-41e9-b480-45a97c85edc8 63d207e3-c073-4195-9218-a694d0499c70 8cfd0901-9cb3-4f53-a8ef-4cbcfd3b90d3 a8a6c403-add2-462a-a865-5bb7a3b172e1 0aaa5ec5-864a-4b74-b5f8-4fd9aae33919 b9e21f55-ee0e-4e07-be4a-34bb04194150 2ca8f6ed-cdb5-4f87-a87d-b0bb0ecdeb53 a3ec80ee-0bda-4f50-b6a2-2364765903ec 85aa775e-6436-43cd-80a1-ad581a4fb187 8893e831-ed3c-4818-945d-fdf5bb9fb098 74380116-fd24-4a92-b5ad-2e89327c6b4e a23e0bf5-990a-49e0-8935-5a29a88f3f80 216ae187-7d2e-4ca4-9fbc-cccffdab6d58 06eac01a-4119-4e3f-a6e2-c56471ccf546 dc41bdd9-0334-4c76-9c13-0248950768eb 85929825-8ba5-4de8-8bba-495d407381b5 5ad29e51-b564-4e82-9de0-89003906ae35 3ee443b3-ba13-4d17-81f4-ba63ab7649b0 0d71a135-02e2-4b96-a2db-5d6a26f12ee5 3ad68e70-5a1c-49b0-950e-9ed63b876357 4a4062ee-01b4-413e-a033-927798c2fb7d 692ad675-27df-40a6-bd53-6f032c974c79 4de25cc2-ce7b-4f2a-a900-637e780a10b5 56575fa3-9d4e-4528-ab99-ada0dd065910 94c394d4-c187-417d-85e9-16e05d41e4b3 49c8f099-a5a8-45f3-96e1-eb1586efca20 db938a14-8bbb-476d-b714-5b1b3b7d3b4d 5c02cf81-860d-4622-83b2-4516a400af99 9b4ddd17-d51c-4a3d-b083-e56160eda35c 0804aa40-ff1b-4f21-982a-4d72805d5c02 3ea1e0b9-ffff-4934-b61c-4010d7e5a515 a3582bbe-dc2f-4138-8261-a0f6736a3e4a 632bcb5c-a663-4846-8dcc-0435215d66ee 10d4e46b-3266-4c2e-8c7c-10de916016d8 4600732a-e14b-46b5-b86c-2839db6135a9 bf11842f-e99e-48a4-a00b-65c0aeaaa0ee 66329c17-3279-4019-a49e-5da99c9dcdef 284b53ad-2fac-418b-82f7-ed4bd3659a46 84f908ec-c4b2-4702-833a-bc65594ea939 28a1051c-ee95-43d3-9fcd-89cb954531ff 9d95285c-01c2-4a68-bd6f-395a3938fd61 bb784e0b-b7e4-42f6-afc2-87d5181fe4e1 323fd92e-7e50-41c9-bee2-a8b90df49bab b8ad0a42-c4e5-4f70-b4a7-05fc45270329 3313d811-277d-4846-912c-ad6f0c7abdf2 5824c737-c319-40b4-bb5a-0890e4c6783d e557bada-1dea-4435-a39e-78e3bcaf2b98 7ba2847c-a87e-4f65-ae7f-52097b0e67f8 1362c77f-826a-497f-8959-8cfacda7ac57 f8e9e3f2-ef4a-4237-8094-baba694dfead 7d74ad27-21c0-4bea-a91e-0a5e0b5bcfb7 394463c3-6541-4ad7-a8a6-e18745de13b6 1941b40b-e61d-48f3-a25f-36ba2db62497 336b7777-6b40-4bca-8c91-5af78f2ea72a dcb0f17b-a65c-4100-b55a-9463688cb93c e4ed0afa-b2a2-4997-9b93-c6b569d31e68 41d79f29-b842-4377-9d76-a1f3000319a3 27b2dc7c-f93d-4f58-a90c-8c106cf10198 bb95bcab-b191-4991-b99b-bfa929402fa5 224e4282-2232-40f8-8e94-5e4d10bee250 a50bb91c-7d94-442a-a873-7db3735dbe9a 445c7cbd-1495-4b07-80c3-a8df1862c0e0 8dca3cb4-7f92-479d-bfe0-06b94b445c53 7caf7b2e-5ddd-4275-b1b7-b7d1abd689ea 2e6674c9-0fa8-4af2-8a53-d781d2fd71a4 de34a5e0-8fbb-427d-a522-c21005f376cd dee4ac1f-b0ba-4a81-b420-72ef960da9b0 1e943231-dc47-4078-94a6-98b88b55bfc7 0ccafbf4-b43b-474b-bb20-be092dbd0c1d 8f0d7e5d-ee2f-4ba9-b1d4-dfeb46f01367 7bfa1e1e-0b97-42f9-8c45-b081fc4a9941 48766a00-4cd5-442c-9848-ac7daeba1e1e 3ecb7b92-1237-4de2-b883-523d68fad32b ffcac773-0cd5-45ff-9803-fee399313b95 1d7a2b71-50e8-4d64-b774-cc47cac51665 6e28bc90-2726-4209-85f7-4172381399fd f9b24463-84b7-4f19-a7a8-601fdc973de8 5334675f-b2eb-4aca-949a-7b4a89fc6afe 2fe5c0b5-00bc-490d-80ba-b67a056a963f 3fc06b22-1c73-4633-876c-192efeb7db06 84896661-c58a-473f-8664-48071afc51cc 4b985d4b-f5b9-4db2-af1c-91f4fc957ab9 030bf03a-eefb-442c-84a2-9be7a2680650 00dbc027-54db-4c6c-8eb6-af85c130ae44 e67ce720-fb3c-41a8-a59e-fd531d01546e d978a30a-1feb-4095-a123-0626f4b5331c 5944d0b1-854c-4fc0-a4b8-ea84d917a6f2 62219d72-3a3c-4f87-92b7-347b1d9f874e 50ce4ff6-7f3e-47c9-8f2c-8daeae7f523f 4671eb7c-d39e-422f-a565-3307a11ed67f 04a7156f-3764-46bc-a8b0-e133fc49c70a 17a8476b-22d5-41a7-b9ef-57397830683a f39c90da-5d71-4872-91ae-b15894b20a8b 5be8428d-b645-4aa4-ad1c-bc3ac62d3baf f2cfb425-e2f4-40c5-89fb-df96560049ff 3d6605ea-5e48-4b82-8085-a0e1cb82c332 c5f44277-4adc-4a74-97cd-aa0018bfd9ab 3e80b4eb-de2d-44f5-b9e1-2ba48f83aa1c 65aab08a-b9fe-4116-8d72-d4c51288338d f23915db-bb03-490b-98a8-dc54e6644372 b79a647b-9b27-450e-a1f0-5c59ba8605b4 b846ac00-4b99-4332-8d48-c767d60c51af 61e25d73-8c8c-4b07-bf99-034a5efa738a 08efc48e-ec26-47de-8cdf-8669942261a4 22dc0cb3-031b-4a57-8d6b-47e6d4abeaf0 60057ecd-30ae-4cf2-b86b-23a69b56d0c1 5247d6a6-f540-4001-b877-60cfb5ec3986 5e576364-4f73-4c4f-99b9-33bea2782298 7f9fc339-3bf3-4b69-8d53-996a1a17c6d1 ba3d5334-8465-459a-a445-237beebf1f7a 414a0e1d-8d8d-4721-9c68-fab82352c379 359614cf-2684-4d78-9f82-9e2be7434027 66ea2a45-eba2-4224-b298-345d04550feb e871ef49-914d-4479-ba15-c48524dab97c 2899556d-250e-422c-ae2d-4a4f255cd834 1442d835-e298-41ed-97c4-3eb975332047 593aae16-6daf-460b-b76b-5bebee898e01 f9853ea9-bf44-446e-9938-bdeb8f897b4f ed71067a-74ac-4f6d-8b9a-eea4a898979b 67c9ce5e-7311-48eb-8453-05ed452acba9 b4323d24-4d79-47a2-9d5e-1c721a4d79c7 38fca841-d18f-400a-92aa-0efd166a9d64 4476b2c9-4df8-4441-aa3c-8d10afeb0ef4 adbd993e-1adf-49b6-aa8a-dd4abcdbf39a 786b40e6-d04f-43fc-9b0e-624d36bffc1f a43cd666-4ebb-487a-b126-57319c93cd08 a8d6aaef-3c1e-41ce-84c2-62acc451ff68 f86f46e1-7162-4c43-94ec-1e590feb8e55 692837fa-9e30-4d38-a382-0e119bd2a3c3 9a498f12-a7a8-4e78-a1ea-205e88b5b8a4 6df8177b-9a8b-4f6a-bd75-deca3f6d6931 8206e89d-a740-48d9-8693-21c3af7ee38b 274af770-f4d3-4360-ba93-cb8634c34ec7 f6b5ab4b-a17b-40b6-9a83-51f92847a24b bb44c3f3-63ae-4a31-9185-0e85ee6d8286 fa47dd53-e5bc-4f13-ae0e-d8200b54fe69 4ed6aa97-85b3-43c0-9368-daf266a5beda fb3b504d-16a3-4a3a-bb33-2f705392dc7c 422fc5e4-4a81-4194-a6f0-727b9a59460a 83eee717-2a42-41be-a619-fa1aa86d9dc6 7c6854e6-ea63-4b9f-b6f7-db17118cae3a 6692f484-7f52-48bd-8bb4-608a13622b5b eaf48228-ae2c-4a55-b24e-8dae5a180014 d1363144-692a-4fed-9f11-5b56fd7a8498 ec686b9c-0e19-4beb-966d-bfe8e9e8fd3b 757a5d75-d19e-4315-be99-b7d3f5c26292 f0922036-fdd1-4de0-99aa-a4c92f577bc3 7853a8e0-7e96-42b5-8230-26872fd01ec1 5f4d5809-4254-4836-a38e-1bc79dbf92ef 83b1fb81-166a-4c6e-ab64-5c168dedda8a 079eeabe-2228-4e9c-a6d8-d5a15616bb8d 17222b7c-237e-490c-bdc5-8e2ad3df6f91 c97406e9-86d2-4762-a512-460ae38abad9 b0115684-6dff-4888-8197-2a3b350bdafa 276b144e-36e5-46c0-9876-75842b2589d2 d2c334e5-8cfd-42d9-bf8e-4910aefe5dff 916654cc-6074-4467-849e-30d8d5209c90 70d01caf-c4d2-4f96-b2f2-9761787571ec ab6bb0cc-a993-4f7c-ad0c-860b43a378d4 ba9ed587-0e25-42ef-bc94-b1d8fb0c3642 bf032ddf-372a-4f5e-826f-1194883066e1 217d1d70-81aa-4468-93f4-4e8b7fef2f7f d9a9d9d3-99ef-4d66-817e-fd8d7c9fe4f8 0a2d3fd9-381b-486b-9539-0ad8d14cce70 3d1c9170-37fd-4123-b8e7-18ac5441e2c2 85d1653c-c646-455a-bb7c-3cc89a28a2a0 024d1f5c-4fc6-435d-bd50-4eba4eaf2c6b 4533c935-8935-4ba8-9105-f6c8312bb590 2e78bff4-0fba-4f20-bd59-0428a6f5f65b fc12fecd-a61d-4d77-afb0-b8d2391383ea a0a928cc-9851-4bff-bff2-93098b50caa6 c781a4ed-2171-4e55-9bc0-9e7cdf09bd04 df262da1-5863-48e6-9980-602303f83036 67e04a2f-c93a-486c-be2d-1785b117fad5 3fa1cc79-2229-467f-a22a-9536e2646ac0 a7eb68d7-d2df-4515-8d1a-4c4043576dd5 f63c1bfa-feea-4f63-8d33-ef42f73e1bc9 5ccc8e33-12c1-4420-87c0-ad92d2ffb950 b526cbf4-c891-4278-a61d-7babb3c7f12f 501f41d3-4679-4f9f-b53b-fb7dd9853a9c 200783f0-7c07-4c57-a6ca-b8b865eee8ae 143225b0-8d4f-4f55-9cb0-ea795c0d2c59 643a0156-54e8-4130-921c-43ad273b1d8c 3e5872b7-882a-40b3-9567-6be4f5909515 914fbeff-7df0-4d54-b834-c793a9a4f1f8 c92c7ce1-5995-49c7-82e7-39745a74af52 f2ab3ab4-b19d-491b-ac6e-001f66ecef80 3a908db4-a562-43da-adcf-3037b006eb16 60342fb7-dc9a-4079-a72f-48b8692f637b fb6649c4-8b08-4960-a0a3-ec8713387860 2cb5c40e-8c23-4921-84bd-e765b9668814 960170d8-a90e-4d38-9a2b-5f3f150ffaa0 591d167e-20f5-409c-bf44-5d03f35b83dd 1058b7b6-2d06-43f1-beb9-5a248ef4dcfc b812c3b6-a306-481b-b0a6-2b4328e0fc28 7ca7fde4-55f0-4aed-ba35-cb8502cd9104 14da0842-22db-449d-863f-e5b03440b857 6316ce6b-45a2-498d-b44a-0debe7084277 f59c492d-4ae7-4b56-97ad-7c424528b7ef ced2c45b-a4bf-49ec-86ec-c781a58bad8b 0fc738d6-7854-4e6f-be38-471b091475d6 4dba98f1-6678-42d6-a634-6784be431fef dd4886aa-7d74-42b6-ad5e-4a9736155a5c 6873c33c-e6c9-4690-8372-1a6f865d3b6f 3b11b357-9a8b-4b0c-9abb-dbd149e89554 219b1f4b-a91d-4594-b86a-9dde4075be23 c3224f07-3f73-443d-8c21-05a381238992 24a7ebd0-744d-4ecc-957b-92ec2f7834f6 09fb3412-b4b7-4a9a-a968-16e33607961a dc23e73a-e6df-4ef7-9788-59f1b07c90e7 bda92a10-4bd3-425c-9970-22ba6c97354d 7b0a88d6-b985-4b02-a7bd-901970b81b0c 9f674b9c-3127-4330-b620-8584194db8a0 89cdf3c7-e978-40a4-a3ea-06b732e15a6b 78bcf087-8721-44d3-a8ac-5674ee6d17e9 50ccc3a7-3479-4a7b-a1d9-85afb1dd4da1 cfeb01b4-17eb-469b-9c0c-b2f00a981f03 98322d6e-c9c3-4515-8732-27e578067043 76f7d58b-6699-4456-bb66-4cddbb49d20d 061a4235-b3a6-4ea7-ad02-eb0fa3df9d57 529040b1-78a2-4797-a083-61470adbecb5 fb847a6b-f09f-4814-b7df-eb8373f92a82 3cf25539-f599-4116-b330-8de9021b31f6 664e3806-cbe4-43a8-94ee-c555b0689f9e 16c1c57a-2e9d-4dfd-8641-147de5199cdf 828f4c79-7ad2-4103-a6c1-c1e455978956 f4044c19-b102-4470-8f8f-80d781a061f8 78d0217f-22ec-48bc-8659-6927e5df3002 f990fa15-29ff-42fa-94f2-a3f1a00889c0 347d128c-8ef8-41bd-88b1-a79cf38ef1ed 5b2dc8d0-56a7-46f8-8ceb-fac2cd003b86 dbd799fd-a9d6-470b-bd5f-00b383b13fa3 faa7df1e-236f-4cfc-a14d-2e681629ab89 dc9d94a5-b56b-42a1-9634-d6b14ea7e4ee 52185f79-be8c-423e-8d9d-1759f0d50fb0 f322bb14-c4a2-415d-9279-93da975e861b ddecab8e-b78d-4ede-a551-d3fbbe34a5bb b5eff2b8-ad3b-4c8b-8838-f5f1146c591c 8ca96921-91e3-44ee-97d4-9446460397fd 336241c1-b0eb-40ef-9b6c-0a5eeb49bf0b b186e23d-3ec7-41d9-8823-9e9e813638d6 8045524f-45b7-4718-a815-c61abf4b7a0e 28336972-0523-4a0a-87f5-bcfbd9a918be e6e973e9-cdcf-4003-aa7e-23cac3f6ce2a fe429131-80d6-4465-97bd-8b2d0df9d6ab ea5b7e9e-1e19-4c33-846e-cec64f6e6ef8 b7b3792f-a017-4744-a5b4-736c3db165e3 00ad32ef-a0a2-4c0a-9727-3da61e9bf88b 0a090d6e-6cb5-44e4-acc5-7d52967fa6cc ced761a0-1994-4420-8050-01e46a603ccd ef96b147-35a6-463f-943b-4e02f6ce4e84 5ee3620b-1ff6-4e4a-b736-b33834d32bb5 7b4ea044-565b-4cc1-acda-3fce2e4925b4 9188c68a-ba45-4129-b526-09c9292df2c5 8488ce4e-c55f-453a-a547-25db574d0bf5 c683e756-cea6-4af1-827d-09218966bb47 ee13c943-29e9-48c2-a6a1-8e4358cc3481 1814172e-e129-4d21-b804-00e18853cc9f e7c9e613-c54c-437c-a4f8-0148ad3e0965 e4fc0f28-b2ea-4d55-a5c7-5d374fa52046 7786fac5-5d10-472f-9161-d505804172b6 d981c612-6ad4-41b4-a6e5-5dfde3b9bfd3 37aee737-5160-49f0-9dfb-20c1c56d3346 f5c02488-8177-48db-a2c5-b4ff72de8830 d36a2391-4068-4c07-8d08-d6153ba8f6cc 3e28eedf-f673-481e-9a76-535449e54eb7 7b7f4b86-6b46-45d7-abb4-93c6d6622d1c 2281b386-cba9-43fc-976c-52eab9ef42db 25a26ffa-162b-42fa-b7e2-b95503ee1581 83afa442-4f4a-42c2-819b-e97bd95dcc23 6336b336-8fd3-4a5c-b8a2-975666a22b19 8878173d-fb6a-41ad-b578-348394c096b7 b67b1f94-884c-4baf-9588-9fd7a018b608 4d1b6142-11f4-405c-8afa-39ce48c21d79 c19cfc4d-6320-485f-8936-bae2c686c7c8 00f1b78b-d7b1-4e78-acbd-652ef40b6771 0c50ee89-ad9d-46a3-adf9-addf336c2978 2fe9afbe-d863-4fa4-af97-ef36b3da2e0a debf726f-3a43-4d91-ab3a-b812d2a9fdcf d044821c-4078-4d7b-9c50-0fb94f0581a3 e187cceb-b7a7-4280-b065-a4d5e43a57aa 6e2c8528-a040-4be6-953a-153e22f6e7dc e8ae1661-9e41-456a-8db0-befced12662c 2845d0c0-083b-48d7-bf0e-0100c020a2e2 b694fdfb-45cd-4af8-a37e-f3e7d095c79d d575a0cd-d2c7-47ad-be91-8301f470e2f2 f0409451-2ab8-4e6a-9f9d-abc1d803897c 49e1d894-82b0-4736-84da-dd0f23cbc3d8 cd36d585-3c68-41c1-88a8-05efa31f75ba 7f052d2d-e65d-447b-9997-8c4fbea7cdf3 fac2582f-b164-4332-8d66-f618f458605d 1959b207-7d11-4d15-882a-a8cf3a90086d ce84c524-a9c6-47aa-a618-f4ae819214f7 ae8efde9-ff73-44c3-87b2-b5449f109657 c6df235c-ecdd-4e67-b535-10f0757b5a19 9a3b3105-85bf-4d94-9bad-d8d6e4657ac9 0300b11a-f850-4488-9223-baa79f07cc9e 2e3e98ca-3a6f-461b-bc37-c1cac3bedb2b 1976bd0d-8571-40dd-88fd-9e43fdddf4d7 0166f22e-1065-416b-8493-d149a13d9278 f50f73bf-304f-417b-90a3-7b15062192af 87801e42-a806-4738-8eeb-72ce0b41a010 da0b0d13-4e7f-4649-88da-82762cb603df fa0b7475-fcc1-4edd-b785-d17dea368879 5d402223-7f04-4797-866c-28e2ee5b7067 f544e930-9692-469a-b299-19528ee3ea7e a30cac14-a9a1-4771-b142-2346d9a57270 a5896f25-0b19-4bec-9354-3405a534a415 213cd7ab-e80e-4a99-b88e-175a09609f2d 07d89a56-b013-4ebd-80f4-69d8b99c3668 5841ff46-2b95-4805-afdd-8053b7f08296 ec6ce78a-b351-4dfc-aa7f-1cd4dc204622 f2cfede9-2f94-4e27-a1b5-3ae8fcd8058d 1a4e94a3-52cd-4d88-802f-cefea591ad3f 83497773-6cce-46f5-8e1a-5d996773423d 30e31f5c-50da-428a-8b2f-d1116b6f7abf 4b97375d-dac4-4fba-8b82-e05551415235 9df10c26-a9c9-445b-99f2-f870a3b501f5 08c1e4dd-7bce-475a-89b1-93ac44778b8c 119a8d3f-bd22-4a5a-982c-48af15de5373 faedaf2b-ae12-463d-93b4-780bc17a2815 e1a4cea9-75e6-4d3d-9944-8b3fe6666d09 7d24893b-1001-4f45-89a7-ba0a97a064ac c85e3d57-c7ff-4c0a-9e4d-df16ecf83760 2278c2e6-e89d-4aca-a59c-410d1a1bc6c8 e02785e2-61d5-4af8-aeb0-f812d20968ff a22032bb-df77-4b91-af0b-c65f8ba8695e 2096933e-73d2-4544-84b4-ca7a9ff1f39f e9f064c3-914f-4c34-afcd-5d682aa479e1 1dd9212f-da16-4821-b169-964a28fbd53d e9f7d9cf-eff5-4a19-8d81-adddb4aa3564 d7feeecd-53c5-40ed-a18d-0e6f1393a5d1 bb5036c9-a474-411b-9966-f0facf8da2c4 becd73a1-e7b0-4fba-8f37-58073ca72064 1bf76b1f-bd62-4908-aa92-5187a46728f0 79bfcbdb-113f-4a4d-9b23-b71e09aebb87 8fb0ff2c-c500-4219-99af-116367ffcc7e 10786aa8-2d71-4fc9-b4b8-a8c0f39f85d7 40169470-402e-414a-9f2f-a5042ab45622 5f8d7102-5198-4fc2-8d3f-9a3162f5fba2 1a5c7911-c2b5-4540-b8fd-07cf961b4781 f8badb19-381b-443e-84e1-815edf9a16f5 21977e21-ccc9-4dcc-b895-c990f0751297 7ece0e30-098b-4db4-9c67-552713d9b3ff fd267b6e-aaa7-4ba6-aa58-f4e242865321 593c4702-7371-401c-9f1c-55cf59bc4781 99c668de-85b1-4efe-92b6-ec518e5e749e 534978d8-bc5c-4548-b3fd-93b7b2eed3c4 3936df36-ea30-41f9-9b61-59da51eccbda 5acc9ecc-15c6-4b3c-af1d-b254d98406dd cc1f716b-c964-42f6-b5ac-0da4dbaa7b90 415218cb-d360-4e4b-a659-22007dcfaf14 3da37a48-6e52-4266-9568-05b6a3904a6c 0cf000f0-ace0-4de3-bcea-ed75f872fcb0 001578a3-68cb-4eb6-b3de-4a44c0842624 79395cea-6956-4a70-981e-5f70ccd806d4 a5cdf001-f50f-41d8-b567-3dcef677128d 77c56cd1-666f-41d1-8fbe-680c0aa12d16 55d2a2f6-75be-4df2-a3aa-b3eaf6a3b246 c7403c23-9bda-43a2-ab14-e7f6c448b3e9 f240c1b6-0db2-47ae-a261-aca540c27fb9 3992a391-0fba-4a79-9a4e-d0d847145736 47ff5aa7-492d-4157-8d20-ab1e63ae3631 640869df-82f0-4b5d-bb39-bd2bf9dafa62 0afcb3f8-c6e7-4d87-803d-e1f55e9c9489 fa43f0c2-9018-4ccb-89f8-89cc18e1154b f558aed6-62f5-4203-b743-e9904529f520 f8cd84a9-cfd5-464d-a36d-49ffd7ff55e1 87421677-ad03-4334-9662-ffa38dd9f2b6 f30f3f0b-44ec-4190-a0be-05cedde78e37 d414bc6c-178f-4bec-9e19-58f2d785d412 d8719ef8-eeaa-4a89-9190-060efa0a7be8 869ea548-00c3-4d42-8940-c61f58bddc0d 6eec5627-efd0-44a3-bb08-4e44900bb726 26543ab1-a743-4805-88ea-beec3d651b37 fe82a7d3-9828-4483-8b1a-79683ba11b0b fe0401b0-6eaf-4767-8784-b01a986ea732 a49542ba-9baa-4af4-b55e-e07b4444b03b 4007e7db-5478-4b4b-935d-236aa771e102 19d4877a-e40b-4d34-996d-59bb34d4e234 01f0fc27-d0d5-4d40-b270-6f6e5c5694a3 f8d538ab-536d-4f43-9e98-e6ec2ef040ec 22f563de-f32f-4ffa-b733-d5cfa214b1e0 4726b180-ec27-4e1c-adeb-8ca4514b02c1 38e4c537-3874-4fc5-84c5-b1b902d5f5a7 f0ccecf0-1727-40bd-8695-9f79c094e4f5 44c509dd-5c9d-412f-9195-338b24cc4199 bbe4ad70-b73c-4e45-83d6-7c625f5d876f 4747d9c5-8c9e-4025-b822-2df4973b86af a956baf0-03df-4e9b-9034-f4bfbab994de 91de6b7a-7dff-4876-8e48-beed030b441e 59cbaa13-464a-492f-9782-957bc4a2e783 313be5bb-0c02-4b55-816f-f9b4d1c97d92 9d27a32e-e153-4a7c-8638-55d231525f21 6bc01776-71bb-4fad-82f8-98897f53bcd2 be030eb5-e677-4891-a5a9-536208d0fff4 1c73c901-60f3-4fd5-a04a-862fcd573cb0 d981ab29-172f-4d2e-8555-6451b24c03a1 f006f626-a256-46ab-b3a5-bd9a2b11cd7b 42356996-a666-4976-a290-237bbde71278 c30ed6c8-5418-4599-87e1-e33ad0ecf866 52310766-b143-4ae3-92c7-02183bfbb4e7 58ff7bcd-555e-4912-b175-054a8435073d bbb03dda-95a4-4f36-9463-3d97810e97f0 2b3a77e2-c841-4edb-bfe4-3d35e58d1068 7aee598f-f8fb-4c0c-b767-33b075bc659a 908e774a-145c-482b-87e9-67914c84574f 8bd28b74-ef6b-43e8-afd5-6cc400007196 84bce5bf-026b-436d-87b8-0d2ce6240528 86ece181-043f-46b4-b6f5-5227469eab41 29267573-9776-49d8-afdb-8e5f11a17960 8e6d2f07-7bcb-4189-874d-b5cc6aaf5a5e bdbf0ae7-9556-4054-a0a1-79448b64b94c c4461aec-956b-4bc4-ba47-b61149feea42 72124fcf-80d3-439a-8bbe-540d04ca41f3 19ff9096-9590-4f67-b971-bcb8a5323320 4d5900cd-7abc-4547-9763-485c75eab850 2831ae35-7783-4ee9-a7d3-429b1f83f76e f8c28f80-10a3-4dc3-b67a-2259d79cb419 4ed509c4-91fc-4e84-a661-9c3f4a2561b4 a1511dc9-4b5b-463f-a14a-501252862fa1 358b9789-503c-4fce-93dd-acc4d7355125 86c7b55e-0815-44e6-84f4-d894674aa3b2 8fa0f6e3-859d-4dfc-a7c6-00b8f575d1a6 f8da9b95-0ed7-49e3-9a4d-78eba6a0db03 0bcc3749-1e26-4135-8be1-ac4974a10bbd 06264e5b-2b4f-440b-97c1-5cf86e627d22 00b8bb7d-1a10-407a-a4fb-c2eefc0a9ef7 51e3aa78-729b-47b0-941b-61bbfdeec11d a8d911a0-f683-427b-b913-1450cb7c2875 78f95236-9765-45b2-a72b-ecbee62ba488 de2e19d7-d1b7-4572-bfd6-06660b6cdece a808edd7-f316-49d5-b645-f4f565ab1f81 8b9f8c7f-1b80-4233-887c-0fdfba5d167b 350ae1fa-f0ca-4aac-b4c1-52f3f25db46c 7a967dc8-31dd-468b-9092-ba3ef725371f a6c9add7-a4cf-4d90-ba84-11c5b68e2f57 a4b29d98-f23c-42f6-ace5-14b83260bc14 7cf94f5a-6786-485a-9cea-052b67138593 397c244b-9630-40bb-8616-821ed58a6957 cabdb3f7-7c8c-4514-93be-a9341f0663d3 d06202a2-2882-4c33-8f7b-3632660bddf0 890c7c8b-1cb1-46b2-9359-05cab1c48561 56b3d62d-77db-4139-8e80-4fc565204378 884f3a8b-234c-4ea2-9855-af1190691e39 e5daa0f3-edf5-405f-b57e-9d65854a61ff 86d3cc80-1f06-41bc-b7ca-832dd9554583 d57d25f2-f5e5-40ef-b968-44ede61ed2b1 0e7c940a-576e-4d19-9cd7-92eed0ebba0b 3793ec90-ce8d-432f-b5d3-bac40cb98ae8 270191a4-ae9b-4cc6-8a10-dd83b4abafb4 2afadddf-9bfa-4c76-8691-96724b70692d 55f8e560-3fed-440a-a48b-c9ca81c1b33a fb383983-a030-4e68-89c3-3d8be6a37a7e 2ca3733a-4003-4f58-ad81-75ba71e8c1e4 f193c2a0-264d-48ea-b351-81b594e5a8f0 abd6f24a-22b1-463f-9627-3a252c912b3d 5deb704f-50df-4234-9c80-10a2513a0320 012bdca7-e16a-4bb0-8e92-232d9341033d 73f0e7f3-a8f2-4ee5-b26a-526996855b58 2c8c00fb-5b5d-4752-bcef-081b2c14444b eed219c8-fd9b-4ec9-bcfa-bc13adbadd8a 84ca3a43-680f-4a37-89c1-eb80f708e075 062b5f09-32a6-405c-bda1-8692cff70277 1620d620-ccd5-4694-9d75-8c1555ef50dc 1581b116-753a-4557-8bcc-5dbc61ee2db4 749b1fba-d177-4710-8b9c-c3a70dccdc90 04dc8f05-77a5-4693-9cdf-4ca2a019fe1a 4234c107-737a-44f1-bed7-b967c742a38a b9cc2396-b9a3-4573-9748-a0fe87e050cc 809bb2d4-0ce5-456b-9354-560c1bbc40a8 8a131906-1952-4621-9d88-02775a837d8b cc7ad0e6-5add-4e3c-aecd-06c8332d9731 9435e977-41f1-4264-84c5-061493a48c52 187dd409-afaa-4fb7-a31b-9ab8e36cad41 76bb5e75-efd5-4305-88f3-820fc4f157e6 301285eb-779b-415f-b605-f2afcad9d407 a6bca535-9146-4eaf-9535-1c173e2bdf7c 925336c1-eb31-4ea1-b25c-78ad09d07e3e 87888b9b-6ccc-4df7-b5b9-b7cc6801a865 a6df1582-ec6c-4a78-ac58-b9bfc5be612b ea57993a-95c8-429b-b47c-4ae3b1420713 452c2827-489d-42af-b4e9-0190fb013fdf 91591029-4662-4a21-a0e0-09bd4d2fb751 5760dbae-0641-4c32-932e-fb86f524ee3d 60477461-d651-4e41-9771-cee16e33ca53 fd2f4113-bf13-4d53-a24c-c5002ff25e33 f86c6ab2-bfbc-4ba1-8c93-9cf393bded99 95bf148a-c803-4550-ba8a-b8ac77756f87 ec76da02-1fa3-441b-9426-343186319504 0e9507b1-f54e-4e72-9bc5-238420b80899 176c1c63-7a76-4980-9cc1-12743ac5650f 5ce2f9aa-848f-4e28-8bd3-23223d0ae738 7d7a1844-1887-4356-8e85-81c57bb00aec 895e9b5b-564a-4353-93ae-e0c0bbfc4123 f09d900f-20d9-42e3-947c-d3e7f7af5347 9e1ab1a3-cf8a-41f2-b1ad-c6a38cbc3475 8020544e-3d08-4973-8f08-6320fb90f0c2 42869a8b-1226-4588-a079-74836bcf47c2 3751d802-6667-4db0-88d1-2c2ee7fadacc 550e56f6-a962-4081-882f-806b989426a2 0086829d-0c06-4bd6-be49-dd591ae5f327 8a9b4ebd-1787-4df6-9abb-7be7250dc183 5b53fdac-ca98-4bcd-9978-d5b8fb213c69 c7e54538-502d-4a81-9d2e-496a52ec50a0 6f94323d-20cc-4433-93ed-e10766f00aca e66cc2e7-4cd3-4717-911d-e30f56776e9c 4680367a-4861-4b7f-9a6f-c23511e06f33 9ac5742b-898b-4d0d-82c0-c5ac3fd8101e 079a56d1-34a1-4f38-88f1-08b736a7ca9b 358b6dda-51c1-4da1-be8e-5e46280f9d5f 90876430-ab97-4a11-9d06-985c81b91a0a 4182d8b2-2617-4bdd-98d5-e91280333b9e 025413de-7966-497d-a82e-706f1b7026ea 017e6666-3f82-4c1d-a401-e4ccb4b9981e 1da5203e-c941-4dd3-bf3c-b994d7522791 161ae57c-5abe-4509-a2f1-c6568d796754 cc76ebed-64f0-4715-b677-771321aeb5a8 860355f6-a14b-4cf9-b83f-db0e712a556f 8a3adc9b-f441-4507-bcf0-4005b449d269 dfb5f345-083a-4b1f-affe-26935cc35519 984ae864-4b7a-4f12-8507-011f9dcba53d 1ac0bb84-387c-45f5-8dbb-a04796639b53 81c7be44-3be0-4f04-851c-fccd15262d3d 61c88c5a-dd89-4793-8638-323176fdcd47 6195336f-f3b3-4e4d-98bd-200e4f46aed3 b942c578-913c-4863-bfb7-0143384a4cbe bd021cc3-ffda-4a7b-ad34-9ae46f7030ec d84542df-ce4b-401f-9a85-2899a0fbe84c bb3caae8-d317-4cb1-8a2e-789ab6da6189 51948702-7a70-45be-ac4b-065b5ca7880f 831db7c5-c63f-41c9-af39-8b1d1135fc55 45c17cad-8b81-41fd-8fa8-7b045770fcaa d2791882-9a3e-4f92-b931-8226389a7a08 c517d6b6-c581-4d6d-a389-b7a34761c6fa 66f7f625-106b-4bb9-9908-851ef2736d4a 76055272-ea25-4f27-afa1-28b097a34e8e 2b2b0608-a606-4f78-985a-af52c0c21553 35bf98a7-bf1d-499d-9500-fdc38b592780 805094ea-acb0-48aa-83b4-bff121cc2809 cb0d27f5-b2cf-4552-af67-8ac8d7e1694c e20a56ca-16e5-4d91-a2e1-20617044ac60 76f1b767-30c4-47ed-9325-725b52559b6e 60527326-1b73-480d-9a88-4aedd349bb9e 1ce623bc-a954-43be-9c72-145cce572e25 af607daa-a657-4f06-a11c-858e7279181e f67862f2-f010-4ea6-a2d3-4efb480fde59 a6ebee4e-1e59-47e3-aa96-5510d6afd56a c06dfd1a-6605-4cf3-9c45-f2b85f5c1c91 7c93b122-d637-4997-a15e-a1c88845ed4e b6942cbd-c779-4624-9867-1220b65635db f6348a70-2ea0-495b-b9a5-8d99f808f1cd b1d2c3b1-43c8-46c2-ae91-e071821c3538 bf716d12-ca8d-4ee6-8df7-6553b7676c36 4223db1d-47f2-4ec1-8184-ac4071358fb8 ee5a83bb-203f-46a4-9db8-2bf90b98d4d8 50692d1c-3396-493a-ac50-b282f9c869ba fc1352fd-8263-4514-b132-87f363a1d5bd 0e5826c9-c8d9-40d7-9e82-fedbf9b621e4 60a946d7-2a6b-446f-94ac-464d98b9b247 842b9aa0-64ba-4b1c-bb09-bc7f4b322d90 ab879af9-4a20-43d6-96bb-849e0e29b284 da7392ec-23db-495b-a3d2-a6cb6da00541 94cc24d6-0dce-442d-952a-43f98ad5b21e 2f48a1cf-4292-4257-a671-324b0107c067 75fb6192-5a3a-4aa3-bb2e-8ee8a293b611 24e3df5c-29a2-450b-8f20-70fbb92d0d2e fe17f942-515e-46d1-b6e2-2e0d9353a9cb 71617126-a6ff-4311-8fe1-f971a2117884 e0ca1896-e15c-4dd4-9085-d0606910f97e b8027e52-5a73-4762-8764-5728d7f1a83b 52039e76-6c6a-41cf-9aea-f7c15d868100 5ee9bf33-b70a-484b-b4e9-467a4a6808f1 ebee7cd0-89f3-42bf-9b14-fec6305e8c5a fa34c385-97e8-4fb8-b9df-ed11f085b9c4 edae31c1-e560-455e-9895-5e19f09d5e9b 1ed49143-addd-441a-bcd6-6e9ef8df11e8 edf87ac9-19de-4f15-a311-bf9bc327f986 22decbb3-8e28-4b5a-a2c0-fd0c97febc58 99ab26b1-a43b-4f6a-adcd-64710edf5f48 967ff488-ad2f-487d-a0a3-892d03a538c9 94be1622-31a4-4907-bce1-5b8a8537b1af 028cf85c-5875-4bc0-b37c-577319fd3999 3e25a47e-e7f4-4282-baad-2eca437bfcf9 cb5223e9-8fd1-44d8-993b-f4437ec167e8 ce1e043a-52ac-48b4-86ec-2fded3450487 d36d76a1-5a72-4133-9ff9-d60f72a497eb d020cfa0-c229-42a2-b095-7b1daf3c9120 6c35649a-afa5-418d-81a7-97c1de0093fa 05ab5e6d-8e91-4e44-811e-f67c5e2640fe 59052edb-81ae-4f88-9bf7-122737dc55c6 4e98d63b-21a8-4949-9db5-db76788710aa 70c45f19-87e2-4995-a1d9-f11a2a46fea0 fe2826ad-8479-433f-bc58-51a702f786c9 ec5c4cf5-9860-4358-bb31-c536a878277e ad03cef2-a772-408a-ad60-17f3b9a037a4 66b493c3-9d2a-4271-97c3-c323e3428066 5de89994-42d7-4a10-ab38-a675804ab2d0 8bf2fbed-a88a-49f2-8e7e-29a243a0dd83 d6919f7a-21e9-4cee-9104-82d0b4b60802 922857cd-2922-4eb0-b296-a9c7d85bbb21 33ee5445-1e0b-4b33-84d4-93df363f23ac a4492514-76ba-4db5-9e61-c87f05cbd389 7c4c3b63-267b-41c4-bd3c-769e89a1d37f ff415f85-7266-4869-89e5-62736b25d4ec 7d54a785-f4bb-4bef-b6da-df60374e76ca 0a984ac6-31b3-4ca6-979c-4d5b41048f5a 6374dd65-1ae1-458e-af13-9311801560f4 46eda8f1-d627-4924-b314-fa9d9c0e1f52 88b4cb15-da9f-4cf9-81c5-22f1490326fc 3894082a-b5e6-4001-ad7d-d1b65d15090c 4f04e7c3-c354-4805-b290-381ec9373137 bc36b780-0eb3-4401-b08b-ff1988e56944 c79ab309-bf16-47d9-b83f-e0c247bcc899 1849724e-fb27-47ea-93e9-986c0e695796 a04ace0b-8785-48c5-bf09-e6cf22bd8c11 8997689b-4beb-4a28-addb-09590a13646b 91570ab2-4f8d-4751-bcd8-d892c60b0631 a2e38981-43d1-461b-9fb9-6f5423b04f8a 59c258d0-0d9e-41fc-b558-f7e7d2c10d69 00650220-9c16-4fda-a810-033452b82611 9afd50e7-4cbf-48fb-8409-7c54ff30505c 30dd0318-0536-4bcb-89c0-1d50733445c3 86d5bf5a-4037-48a4-8529-4bc4a7b808ec 7c249056-7e69-4871-9cb7-a90605d8d058 062e9389-0888-4139-b962-0b7d7cc44aaf ede587c5-6b99-427d-bfb4-c4789aed2eb9 173724b1-be6a-4738-a601-46719797cfd8 e408c8c7-1e65-46fc-ac0d-4ceb61922754 4425e231-a70c-46ad-bf8c-f39f161b1443 41e32211-856c-4609-b968-d96d55a2d1ec 36e32bc8-b742-4e49-8b61-53534345e051 cc2d3125-1041-41cf-a276-c517cbb90d01 1ff66753-b170-466d-9e8e-d8e5fb8ba82e 2b1212f3-a5bd-4732-be58-4891b2c4f5d6 29ff3792-81dd-4580-8f7a-c731c6b2cc6d e69c40ad-61f2-4aa7-afa7-99bd5f485620 a448b5ec-6307-42b8-baa9-158d822bb0c2 c67452a4-ecc9-43e2-9dc2-75c2b5e74f52 3881d915-4050-4b54-a911-510fe4f1e1c5 298d3e23-a2c3-4c27-a7ac-c9c711dfeaec 66435fc0-0516-4f32-b91e-35fd05ee38c9 66572def-187e-44ac-8055-d54fd058cc5b c92166b4-4aff-4c19-a252-765de473abe5 ede3daea-b40e-4df6-9bc4-f5e09b7af3d0 1c1fc639-4bf8-4b7a-90c7-d0a1f677182a fcd4f4f6-4c36-4c12-a37f-9d9d1c4327ff d45ca483-1f61-4d84-9f4c-6aed9a27890d 5656b51b-01e0-4137-b6c7-18bf05cb2cc5 dfcbe52a-6bfc-4dd3-8fcd-87b5f03b0f03 a24cc05e-be1b-4a1a-b2cd-677e643c9851 a2e4f972-df07-4266-9631-9c3ae599c9bf 257092c2-4257-4b73-83a1-a0ad42920974 65bbbb70-6669-4785-93a7-5838b6a518d8 cb7456c8-3a0e-4ed5-a930-c69ce9cf93ad 23d511e6-c715-4ee7-85ad-95f4b4e8ca04 676df59b-50f7-450e-ae17-c0cc8ed428e3 b267ade6-6e3f-4ee6-ac34-0b82dfb78e8a f4e21d24-80f4-47dc-83d5-351416980f4f 1ee42e32-9875-4574-9808-edf6f783991c 3122f7ed-9062-4fbc-8580-091f6efc9e4b 82358c8b-36c2-4366-94d2-70e19984ce90 7ce90ded-5aaf-4efb-a212-57b253d197ea 788a805d-0b2c-4232-a320-10f340d91191 9c2cbdcc-ecd8-4e76-85d4-3f596acbc831 c929a65e-3469-49d3-bd09-3f42851c9b57 ff686215-044a-43b2-aa03-860e315557fd 74ec0214-c325-49f0-b735-b76f2ecfe8dc acedd295-cf8c-453d-bfa3-11c9dc256901 08202c72-0e23-4b90-96ab-6ccb572a888c a630b7fe-48fc-42d1-8941-d1e4c39d14ea 43b47884-5cc7-406d-96a3-a93b51f45969 d4f2fd5c-0b6e-43e1-8bcb-b2b87c259e7c 18f6b057-c9f7-468f-8f98-eb6583d14f17 c7d3c199-4dae-4701-929f-3e6f77fe84b3 410263cd-f430-474f-9b90-6d7dd419c0a8 bb873f3b-b570-4628-a1d1-344c75ee3012 a2d9b537-e339-4a67-811a-fe921f493344 3b2e2cde-75d3-4ae7-91cf-0e872fec064f bbea5055-62b1-467e-a942-36b3769f3a03 f66e7fd3-aae9-43dc-9b28-995e6efdb841 4de3fd6b-391f-487e-bf8a-b4c087c00cf5 db588b78-2fe5-406a-9c40-eaa60ee09faf e81b7d9f-3123-4ea4-91d3-df3983fa8956 a78e18bb-5e01-45e1-8f71-e7022d196a9b 4abc425e-76c5-44a8-91f4-c6b6497210b0 a38a1f3f-76fc-4782-b829-8bc79cbed8f9 64557ff9-9be3-4395-a762-a10e8ed08853 586c3133-d29f-4ee5-a717-650ca24c831c 057807f0-99d0-4e71-8337-2be8f3572fcd ec873dd1-e4cc-41a6-9318-6571394398b2 34a71af9-f06f-4ebb-aa97-32d59e36d604 26d84a80-92d5-4c59-adcd-9dbf16cc80e6 64bb036e-688a-45b1-8430-d86a7a094c59 90f023ee-b583-4280-ac56-a63d7e4f266d 6cf26a4e-0905-4e34-b28d-af8976cde84c 3b5949f7-2f6c-4de2-8ecf-d1cd19204840 f8baca94-8dc9-4415-a1dc-c6efa3311210 7292307c-bd4a-425d-a2a2-32fb27d40844 0b109b9d-09d2-4177-8324-8fb8a22db8eb 7ccacb37-c0c3-4c5c-8d6e-8502f116a9df b5c66713-df35-4ce5-84e2-659db6ee50d4 bc8a4462-4c6b-40eb-86c0-557a3dd8e9b2 f53043c3-3a2b-45b5-8e2e-878b78336591 50137e50-9bfb-4668-9d99-522e720e1dad 1fab2975-2cd5-40fb-9aef-04c56330af58 288d7852-da4d-4820-9ef9-06d38c5a5394 38317559-7334-47c1-8c15-eb3d7fa1cb5c 1b1f92c3-8272-4f3b-bda2-831425668220 6bcbce53-d663-47cc-b0e1-e48be2d64d13 a326cfae-8586-4879-a1b0-1c7843900de8 d2b0bc79-5b3e-4dfa-bb16-220de8d4aac7 41a7c949-e0fe-459c-8f16-aca824df0219 6b472ac7-5ac1-4f1d-a241-64f22a6d5b88 477add57-17ed-4bae-9263-7f58a507c0f9 909bbe3e-f039-4d13-9d00-43de70c13275 59619df3-0dc5-442b-b6f3-df607ce8a3d7 bec0e650-a859-41d7-acd2-831b43572ce4 e0856cec-efe9-4833-8fa4-ac016253699c 0ec646d3-7631-4508-a2cf-d10f435eac88 87fa7165-f00e-4ccb-9e25-743a7edac4c4 11d8d65f-0562-4734-9758-de6311ffae93 a77d6e51-c86d-4c1b-a402-5c2de6488f94 7f0134ac-e024-42a3-8da5-30ef515c8853 26c33545-0f82-45c4-8d76-5ad6378be7b7 ca04548e-3f87-47ad-b706-ce90c691490e 6909578c-db2a-437e-ba75-2b0a909c01a3 953ddcf0-c8c3-4f9e-b5a8-a279496c764b 58eaabbd-d414-4305-b14b-d52a75da6426 6e8abb15-fd49-4356-a0f4-68759f99728c dc5a95f7-4f91-492d-82e1-0d4d13901812 e86f8a80-b431-4ade-8b92-b904fd205732 64f59266-580c-433a-a455-d556d16bcfac 91b28151-d052-41a9-a5a8-f45253fd338c 35bf858a-f38f-47ec-bdd8-974c6f281344 49621797-908c-43d6-9688-15e8b5f21dea 3c4608c9-6b0a-4d65-8244-9b7bdc894f52 4c118c0f-9f83-4951-8a92-6dc37fce17a6 bd9514ad-94be-49cc-91af-2ba84dc75d17 c96463f8-a36f-4c7f-a68e-2aeaa55c8407 7f4b7a3e-5303-4835-bf45-8efc221ca5e8 a9e1d594-9a9c-4643-9351-b0efdd2668b2 e96d6330-0a38-4f54-a737-b131f23366d9 ab56f859-d6f9-4282-b66e-054368aad061 ed190806-872f-4712-92a8-3dd1e9f3723d b7ae419d-6fa9-4ab0-a9e7-b269e1690278 e49759d1-9998-412b-9439-c78ecba2b0fb 5f7f8c36-9f15-4438-8657-8f3b8baa88c9 67f62182-6a7a-4411-b156-9a93921df2f8 0b0e7343-9d50-4385-89fb-69091f1ce149 e844af0c-9d6e-40be-9a6e-ef267a2ce3d5 742f6cdb-0dae-4636-8b8f-d075a52dac41 093cf2bb-b780-43a7-94f1-3fd28fea880f fb0bbd90-11bb-4832-918e-d5d8a6e3655b bb3378d4-6e07-43e9-89ef-a26937d220c3 d76d3d85-a0a4-442f-9a5b-365d504a2d32 322eb233-f6a4-4f33-b22a-fd5389059df6 d9e6af34-0667-468c-b3b2-f31e043aaa2b e4fb4da9-c00e-4631-a41c-d8d7319770c1 aa349f42-1de3-4576-84e2-5d0e792bffd0 dc949d5f-b715-444a-817b-9be672725a54 e107222d-d3c3-4f4b-b6b2-c5c5d0d4590c 774fec35-9e59-4e4d-aa48-876c76742ef0 8e553fb7-ffd3-46bd-9fe1-fa116da0277a 32c9f892-0dba-4607-be47-439c1ffee280 7d953d47-32fe-45b7-8471-755387345a25 9ec2b61f-9b53-4131-84a6-fb7c7ba0471c 50cda84a-cd8f-43ee-bca3-fbe0de692084 aa7c7458-addb-44e1-9afc-2b59fe24654c 4cea0c23-21e1-4c5d-9f99-96f611495c9d f795ba5f-7225-4802-af33-390ce8c1393a b3234bed-0d28-4fef-b57f-993e013074cd 6b6dcb69-21ea-463c-81a0-78d08ff13cee 664327c8-1e50-4877-956e-e6741c8d39af f7d7d9ef-0207-4f33-b9da-dbc9768901b0 4f0a9b18-f605-4552-9b37-899e4ae35222 0c2c6504-a3f8-42d4-a595-21a6b9450532 7402b34b-f5a9-41f0-93d9-a34337ee8118 b037c8eb-af07-4d0f-911e-e8b89a6cfb2e 9b31fac3-21c6-4c67-8457-b56ab8f62164 9e41511f-092b-4eed-acac-69432e4628c0 0d63fde7-fcaa-4356-a275-2207ecd4775e 35eb30f1-c64d-4c59-9d73-aaa3206164d9 c611bde4-68ed-4260-a547-c12bc4afee5b 920b0a8d-2d72-438a-9bfc-64f175df13f5 e43d6da7-310b-4a36-b089-b91564174a13 3085ccf0-349f-4593-a1b4-5d8996eca377 57a3ed45-8db0-474b-9197-be66d5240c76 e767039d-609c-45bb-adaa-e52ad0dda756 98f36d6a-66c2-4240-b164-9b8873a49e73 78d4e561-ca84-4a10-945f-2e61738c778a a4010f5f-3f09-4258-95b0-7604e60074e9 0255f75b-9676-4213-b482-2d01fa850c4f 13cf2582-8495-4f8a-9ac7-16f6a0a71936 19553ba2-0ef0-4c30-a21f-6dce83247e0e 2fdc9f3f-4dde-4be3-ad48-4f104820d994 8d395744-67d7-4a98-bccf-00a4cacfeefc 9ba8a2ac-e38e-4c30-8677-332eabc8f724 5dbe1907-1571-4021-9063-9d511f622649 297ac6ad-d9e4-4448-837d-fafacc3b67a6 dfd64a31-e091-4616-a223-5e059c4aedd6 9098b7e9-d64b-4ed4-a36e-c2fbe0133214 56581105-0f37-4d93-bac4-b4ca9830df25 04e07e02-8565-4923-b672-0307efc68649 3b5d9213-906a-4557-986f-1dda67d321b1 7ec287b2-2258-4ba9-bf7c-8b510b43fb41 81baaf47-8e76-4f82-83ba-d88d9ec97704 b65b3eea-18b4-43e9-b064-13ae0874b110 c18dc19b-ba9d-40f3-aa07-fd6123241c21 13a2f412-6336-402f-8fe4-e6614a34c1e4 7d1a50f7-f0de-4e63-a7fd-061c5861a286 c9b18535-7aee-4925-9d23-03872194d9d5 2ff47aa9-f68a-4525-9110-6d28cd6ec9fc 8f3f78c8-19d5-4c05-9818-e0939e45ead9 1f49f071-0031-4701-8a4a-9d7ab62efd93 90f87a0e-ca24-47a4-9672-456de972f9fa 18de8491-5998-43a1-81fc-857210661a3e 4a1b94d8-04fa-4bda-b5ac-1dfbf6f83ad0 9b938a33-8128-4054-b2b5-b78f2df4a4c2 a0f28437-5293-490b-bbe4-a607493a8e47 9f574539-147c-46ec-a61e-9e8a0037a859 b87d6229-8de6-4857-a3ba-c4d736ad7a76 25626d5d-d965-4c43-90f6-93ca94bdc47b 6aff5ede-a139-4819-aca6-54c7cbc86234 fbdba32f-8fe7-412f-be51-5a0c6da27b47 35c2ee6a-2908-479d-b78a-7346e6f275a2 ed6eff7a-2cb6-4e5e-b54d-986fb07235f3 40add3a9-665a-4ca2-a594-17f9784e2249 4f61c9fb-0415-45df-83ce-955f6e8ba47a 9cd3e5df-e4b1-4113-8893-88d6d284690c d2bd978b-7dbc-4037-aa03-e1bb138822a5 ce60c04c-b30f-4814-82ed-2b8552b34f51 5d876ea1-5c5c-4f6a-bab1-eb3568326222 77b9ec9b-b609-4c03-9b8b-c9136259394b 7490a5e0-b1a2-478a-8a14-0bbd58445405 3caf18ca-e65f-48f6-9b51-a8b98bf09d32 56e2af51-c473-4d37-bbcb-7a4b150c874a 375078ff-133e-4eb6-b8d7-c3e52a5b760c d6a600f8-47af-46b0-9959-cb2ccbb77b8e 11308921-6004-4141-87be-87a0c0b1a1b3 a24f176e-18b0-4188-a4e3-7abb596e785d b6f364c5-b039-44af-8757-2921a578a429 3fa20709-d481-4143-b546-b01b113f64d5 1403762d-0d20-480d-afd1-abc430d016f7 af8e78a9-e0b6-4b26-b17b-154bcbc62d0e ad09f1f2-8227-41f2-92db-04faa04ef454 6042ce74-72e1-494b-a5d7-25fec49b844e aa9e9992-0ffa-44b3-a99b-df403a153610 ee921f5c-5150-46bc-9f8d-713228050a8a d037e54a-1240-4cd5-8d07-9625f9e4623e 6afc3225-58ce-4078-b1e6-d030fd981253 954bb240-4797-44f6-ac46-38b101e537b8 6e6c1fb9-23b0-43c6-a1d8-bede7a03b96a 4593c62a-6687-4b14-8a2d-a7a81726e800 433e4780-9fb3-4c77-90cc-481f385f72d4 bf02d187-039d-4cda-a31c-41e2192f0a31 a8ef7ad9-d2a8-443a-bdcc-64046b487427 5842ca2d-91b7-43ae-a5c3-b376c7bfc2cf cd912289-f73a-4178-9745-b2df83fa2ba2 02129a20-b056-4f5a-be33-557986e130fe a999263b-86d7-4a30-9181-224db5a2cc9f 2b15d5d9-1abe-44be-8fc6-5e3acbbcac73 8c8de62b-544f-437e-a8ad-b73262b6f35d fa96e471-bf01-4ad0-85db-cfc23495721b 2e791944-9cfe-4d6b-acdb-4faa3a446f99 33ab4923-b89f-4072-b6b1-446e5d66ec35 139d1937-d25b-4c8f-b56c-d9b59125d93c f96fff92-5403-42eb-9b55-a22b068569ab e545c8bd-ef65-4c71-b803-4e4d71281237 adcc4fa2-b220-4a05-a755-b0d2d556776c 202b2237-726d-4e03-aa9e-f2c1d2b81ed2 3ef1ff46-2555-434d-afae-1c72ebdc0608 a3c33f07-eaa2-4522-9789-f8374f926fca 7ef25efd-bdd3-4ba5-ab15-22d210f0587f 1bbe18f4-503a-44ae-8573-726c70cddf8d 7439ae17-5c6d-40d2-abdf-4794a65771c5 8f5104c5-be9d-4831-ab21-f275004e7fdb e3c75907-3351-4938-9f29-5e9d4a39d271 f4afcf5c-b310-4c42-bcaa-8467a27e2d87 d2105a18-8083-4b81-a872-e3e8b4b167cb 458d6e38-a962-4891-afd5-20379c613b0a cf99ae18-2dc5-4276-8aa7-d84e12aeacb9 11a4ece2-5032-4fec-9e5a-aa466c638f74 802b52a4-2902-4c35-a659-5502030e1a89 f82637f3-f5e7-4e11-b546-570793e6f503 9ec31d18-97fe-4aa7-8037-1016290be482 a3496cc6-1f1e-4a4d-975c-6fc36fffa837 ded68c66-bd39-45ad-a5de-8eeacfefef06 21f36bda-bf71-4544-9712-ec6cc134f2ab 92fba088-a128-485e-8474-2b37b0c87768 73f548f9-9bfd-415b-8f7c-e79258753af4 308688cf-b08c-49f0-88af-4e158d6858e9 4c2cd67f-d68f-4ec0-9466-45b5d80a0dde 31191d49-36a0-4435-ac8c-3ebcc4e81643 03d6e737-ab63-4943-aa2e-15e352757501 015d50f0-f491-4f79-8c35-0f782ea7bdbb aa13ef33-67d8-4d5e-b00a-0dee810ef92b a427ab78-3e59-441e-8063-3cbab19735ae ba47a19f-ba58-478a-848f-e28eeae32b7a f03ebbcd-6c9b-43cd-b8d5-5431ae4a3743 943bc35c-3b73-4f8b-ab19-28d4f62a84ce 3004adb1-26f2-46a2-a31a-17bc3d4362f3 0a9cc374-1e16-4369-98a6-4a642665a70c 2882fc45-177d-4375-9a08-2230aeaeed26 2ec9c6fd-cc45-4995-89bd-ecc0c5b8fb5a 06e0037c-c039-4606-8b59-3a488ab45601 0edbf940-e4e9-49eb-9e23-f5ccf0fa9a1e 4ef6d025-906f-4632-b290-2c6875c3b5a7 88bb1f0d-0495-4ca7-9d3d-ed0879263056 fb153b24-c0b8-48d5-8bed-9976e015a688 57c4be56-8b38-4610-895e-772f6f65a7fe f4c0993b-bffd-4d2a-a0bd-1c7917c52e33 c118e500-a109-4bc5-99a0-2775573a71fe c41d82b8-b6a7-4d2e-8d0d-eb43b84015d8 cd082e8a-dd7a-44e2-8df2-54b15bee06d6 e3b09062-c07a-465a-92a9-864f75e9c76a cacd4c43-f7b0-4529-8c0a-41303a6ea7b0 e664220d-2e5b-4fd3-a39d-6ac3b7752fd4 4d6622b9-1175-4cbe-89c3-4fdca2a7c301 d68ac0f8-0529-42a8-901c-7ef9af7ed70c 79561a70-4f24-4842-a498-f61c0214e92d 8dd00294-6298-4e41-ae11-c3fc4ae5305b 88093094-f74a-4a47-8736-1ff1963a6153 b1ba22c6-be29-44f5-b409-8318beebb50c 76577070-4d1d-4d9b-b317-9d23efcfa6d3 037c22f1-73a3-4697-9299-03821f767dd8 9c5f609d-e0e0-4fa2-b1f3-fbaf57c31a71 3c3d09b7-8c91-4c95-a574-48bb8da45fc9 ca2b5ad8-a5ef-478b-a9f1-8cd062d2e94e 58749a0c-d617-4533-a5f2-6fe8da230304 0aa984ef-febf-4978-a49a-50126c71bd69 c7b90f1a-089b-4205-a776-ba91f042a446 1337cd5a-3944-4d8d-aa13-adf07c0179d1 6d057232-89cf-4b2f-bd69-a17a6a3b804e 9f382532-a091-4fc3-9805-be88eb7f3298 0b68a315-7f18-4549-9530-176dffa73625 de94877e-a646-423d-ae11-8c5db3906c35 f394a06c-293e-4eaa-b721-c93d53e3ceda aae41963-84fa-49da-b5e3-9a5408584e32 5d1437a3-f037-46fc-b271-eda4150090dd 26533097-3144-4fe6-b971-53ef3bb5ccc0 afbe9021-7775-4b98-a486-69266287bb07 c0f8071d-14b2-4f8c-b99b-ad2a1a8e1045 7a657970-172f-497b-9986-6003dcbd7be5 fc2bbd63-6507-4e4c-9e4c-ba8f58b78ee3 bda93261-6cff-4810-afc6-3958bb94f499 489c1e47-a2ca-4658-b2c4-3527c1f12acb 85272cab-1e0b-4b6e-9d8c-80f6adcd72d0 6f337dcc-1489-44ea-8359-3d8c52b15b4c 7320a85d-dc5c-495f-98d5-82de4885c8db da38537c-795d-4f37-90e5-60d7a0a61061 d464c145-ec8e-4572-9f2c-b549f83b0f66 eea34100-59b4-41ab-96c4-80df3d2fa0ec 3ec8c940-0712-4d6f-9264-4dd4ae390bc9 4b23be57-8bd7-4141-93f3-03afc3befd07 8b74b5a7-5232-47b4-921f-dfce011d41f4 bf72582c-e2d7-431d-b933-e1a6766bd06f fde6379d-37e8-4c64-8d02-d242b5f574cf 9f55bd04-a337-4896-8ce6-5bc809be8526 39902b24-2705-40e9-af68-c77e1791268e 666a0ee2-c843-4bb9-ba94-f97d124cf036 520090ff-5c54-48ee-a191-8d201e285f98 771813fe-3fcb-4621-b871-00bf2f6a21e9 69c6199b-c461-4c98-8d97-af9ec86969fd be1a3869-aa3f-4dc6-93fa-27910ea44ffe 3b11ebf0-eeef-4360-8071-ebe75ee2e3ae 4b514039-0d27-417c-ac49-bf0a665c9cc3 178bf0af-d45d-4df3-8cd1-f9f97e04057d 7fcf2cd5-639f-4db2-ad5c-9b4f19024626 6d1c72e4-ad68-4171-8c9e-1d9c67979000 3106b2b2-b464-4cae-996c-1558b29a0fa3 bb72949f-72d2-4c76-aba8-022f193011a0 943ae67b-d2cc-42c0-89da-b7098739f99a d71aad5b-8abf-44c9-bb70-cf057fabfdbc cee2c12f-cc24-4769-9271-7b5d4933b479 e743a9ef-fdb1-4551-9ff7-9bd6c26f208f ba93f54a-9409-49f0-9927-30275c48046c 6fafd595-4190-4baf-ac07-8c7c846e037b cd4ac43c-0702-452e-aaf7-0dc5277f3720 3cb329c2-05e3-413c-8e44-d89cf3f93451 63102d13-d12d-4992-9d74-7cf7120177b4 61b2f9d0-df36-49ed-8693-cec9c77b4285 4affcfdd-6a42-41a0-bd49-ba0987efd994 32369ea8-2e59-44bf-bef2-11c8f6da6217 09087b27-858c-4107-957e-4c9b44f93ee9 041f9850-c6a2-447a-850c-ccc9374d5fd2 0ccbef00-c071-4405-81c0-20db434193d2 7ef965bf-7af1-4205-914b-434d173225f2 cdd5e636-9ef1-4a34-853b-634a9cbd7950 dece011d-7f76-42a1-b382-9675cb3f2523 5d16e08e-fa73-4e94-a17b-e4183fea5f24 417d06db-084c-478d-99a3-f083cca7dfa1 c053338d-7d3a-4359-b5d2-1defe4f54d0a 16462cce-7deb-42a3-92c3-7ad1c477e7ec 4bd3b4e0-3d17-41b2-8912-8c44981c6302 2abd66dd-bdc3-49fe-a51e-8c233b2a49d9 b567a2e4-2a2e-42ea-b2fd-a575565c2abe 9f05b4da-76c2-441a-9ebf-03691d6f4225 973b1ee0-71c7-4502-8fed-43ffec496ce0 f83e2131-7375-4a62-aada-4d6d259a8d31 d2f9899e-5c22-40c5-9ea5-139ea648bc62 a0806e78-03ee-4d26-a2f2-5c02489368da b9aea19f-39b0-46b3-ab38-740dc543c1b9 d735e934-29d7-4ef0-90a9-026163c7bd16 9ac9138b-2364-4af6-b539-8533062c48e0 870d8bd6-538b-4b19-ac98-3a77d4d84d4d e000107b-485f-4c2c-b01f-c8ffa11f410b a7fc69d6-a769-428f-96f5-96eae84b6d71 67dceb55-5c0f-41da-8dba-543101092443 f6cb2595-fbf4-47d9-a916-0c418633b46a 84eacb85-9de9-4358-a970-94200259bfe7 b6029d52-0205-4359-a8a7-02baf5475d30 0f770571-0595-4431-8214-f17cd3b40685 dddfe19a-b714-4058-9220-d8c6eddfb5aa 308a0ec9-e709-4e47-86c6-db351bb437df ccb3dc7a-8cc4-4ca8-b162-c75c0fcfa60f 47572b3b-4bff-47f3-9182-aa06384a5e61 4ead519d-eaee-4d21-bf09-685a42606950 c2bc716b-1c28-4b56-a497-ecce2c4a869b 786ab3ca-9752-413d-9f14-90d4d5ca6cf7 4e95a9be-cbb3-4fbd-a964-5dae5b93776a 737894b0-0660-4f76-827f-c03e0236286e ca4a3caa-f241-4941-9528-03a218c5ce19 8683358d-1132-456d-a046-871936aefcd4 69617959-c0a7-4632-87cb-252729bbb03c 0839d302-7ca7-49f1-bdfa-b91949708c9f 9eab8fa8-5f35-46fd-ad1b-c7b3d559d731 72bb4f19-e6b0-469c-88d5-dba031eb0b1a 70efceed-73af-4b61-8440-41caf07d63b3 615b0463-62d9-4e7f-a318-6325de13da6a 1ca7d180-09c7-4b58-bf2d-3bbf9909c4f6 84074b3f-0371-40dd-8331-d9011ca363f5 c9b33291-d216-47fd-b3b0-8fa20a60acc9 eb6f2ea5-3db7-48a2-b35f-f25c2107f6ea 46e55993-8c64-4701-b568-dde264551707 9829da89-5653-45cf-aacb-077ccf489b80 cd4da402-b5f1-4c5b-837d-afbe2d5f169a 14891a10-cd74-430d-bc6f-ba9c7f2ac115 23eb4692-0db4-4bb4-871e-0d10c3dbf71e b7bc89f1-d3ab-4615-95ee-4b8d396f9d32 22688d98-f56c-4612-a2a6-58cb2b46c1b3 f7bd4ef2-6084-453f-9ebb-0e28fd4df9a4 631e2c95-7cd4-419e-b539-fa93c8e8547f 74b35ef4-8e5a-4bc1-886d-8fade153f3a4 03951159-14a0-42b5-b26b-dffa8345d098 454e1e29-de9c-4736-a517-199e8b13dc25 a789db21-de9c-4d44-b9ba-3e1dd7d32886 b3157dfd-f7a7-454c-8e54-528643a9073f 44bcc8df-a1ee-4ac3-8d89-f70cd2b682f6 d2a9fe16-357f-4f8f-8f82-1a5c0f13c72e 3c13f833-8f71-4d65-b3e0-5ad6266def6e 66f37299-3c6f-4ded-9f96-6eb62cd14da4 4ebaba9c-143b-4086-b826-e0eb6a3bb214 bfc237f8-9fba-4c6d-98b3-0bee672a40f3 bf0dbe2c-eb3e-45c8-9b8e-271a78b911da 5083e927-6621-4363-bcfe-99b6c74ebb1e d269634c-b94a-4c5b-8afd-15934be3f485 e54c5afa-bf00-4afc-9305-e7619fc08959 2ff1bab0-1264-47c6-a4c5-575fd7d6a84b ece80ce4-0a98-41c7-9753-7b1cf090480a 4a0d4173-1080-4a14-a9f1-90313dd2162e 059dd90b-48de-48bc-812a-5a759d28ff51 b1e5eaa6-101c-490c-bab0-596bcba956c8 54db8417-c609-42a5-8629-81b34ea1627b 62acb5e9-54f6-43de-9f81-0bf73e22640a 107aea9d-49fd-4f79-be11-85201524707b 521ab87c-900e-4afd-9ddf-4dad29a90fb9 24b83e86-9636-45d7-9c62-6b8ba625d084 52d36d35-dc44-4e40-80a3-8b589219ef76 ff4254e6-a6ca-4978-b668-4a1309b45df5 ea68f656-dddb-4bd0-bcda-10210d812aac 72771f33-47a8-4774-a378-9eb630117607 9fba51fc-5877-4d5b-84b0-734201fb233c 8ae8a4ea-c597-4c59-8a8b-b911068619ab 976e894f-6ba8-451c-87b1-f4a4a6e2a0cd d7147b7a-8787-4bec-8203-ca518ea602e9 b617cfe3-e424-4afa-b7ef-6e4ec5f8320d f75c0d6c-a8a9-40ab-818a-62f4fdc0880f bee67bee-ba6a-448a-b7a0-29e24194e411 2842f122-f652-432d-ab42-fae8607de580 4653094c-c821-4ed6-95d0-e672a2f20a7f 41958bba-1bbc-4551-a4f0-a26a32fb27fb 88d5443f-2c6f-4873-b145-354c7f933476 41ac2264-1852-4414-87ce-edc2e233376d a8b15deb-db74-4502-a220-14269afc163d d48fa94b-5e73-489d-b0be-acf3763d1026 1d4d289e-fc17-4253-b916-a4f251d8cfb9 beb23924-dd0c-4c42-8fb6-7600abc0abb2 7f1001b4-0149-4885-be44-b188806b123d 6fce6bff-6240-44a9-9a03-0de6bc382488 32d2c122-608e-4a47-bec1-cc43c7d64af5 0ea9c437-41d9-41c4-9e70-b313d5b70caa 1d6f309e-8049-4820-826b-3b7273cdd3b1 3bcc49c0-c839-4659-827d-338a88cf0cf8 0d1c9d66-6f7d-485e-9890-a6a511d33338 3077b21f-b881-42c4-b86c-53ebadbf45e1 b0fc63c2-b487-4cae-a47f-59a175707f29 2876ad81-b9ac-49c6-8f7d-28dca81b95e4 ef3fbf92-b45a-4844-a2b5-116ee8df69ba 0187a194-020c-4eb2-9d49-af36693d9ba5 bd597c9a-46af-4e53-9578-f7b139b5c3d7 5d1a4f77-c3c5-4e4b-a981-e5023505b2db 803b9af9-f96c-473b-9d4b-d4f0516769f8 2645c14c-d217-4b79-81be-6f56f786672b 2ad5a918-79e8-4a2c-9247-e8f32baefc90 838b55ab-f84e-4055-a512-8013e24d206b 45ae347d-35b2-4d3c-a5e4-51f093d1dd4d 5a7a900e-2a73-4528-9df8-5c3d57f64b43 de56fdb6-93e6-43c1-8344-d6c8db10542c 4cea87a8-2d6b-45b5-9e25-f8a4ad6f720a 8c81ccde-50b5-42d1-a6ee-96a0295cfb34 8db668c7-1ab3-4fe7-abd3-f58260a694d2 029fe2bf-4cc9-4213-995f-d6c5caa8e2cd c6245b24-6d70-4d35-ba2f-090025a86af9 da70b883-785a-4dfa-84d0-916fa70a0c48 5060db64-6c8d-454a-ba7a-410840cf3814 5c4e07ed-7bf6-4603-8e68-45a2cef0cf2a abed4fab-4d0e-47f3-aaf5-439a8ffb8c22 31f8dcde-ace9-427f-8ba7-17d1997bac4d d400c552-b068-4e87-89b3-fea04ccf16dc 10121885-cf85-4c99-a382-32456eabe100 7f1c905a-888a-4576-b264-14950d9b8553 07bc06d2-7d63-42e3-b602-528c73d56fad 9f410370-8afd-429d-8799-3ee126965ed4 12e760d6-5fc2-419e-8bd7-d2671970c3e0 9a4d3d76-0348-499b-9754-b0d5be0b06b9 f7189258-0a00-46fb-9cd6-f5ec13939d38 ac37bb0f-87d4-43d7-a5c7-6cbf882dd1ac 71645c97-aecd-474d-a0d7-1b132a81e5ad 077171ad-253f-4631-a8c6-1cc10ef27f1d e6601e53-b34e-4c9d-aa76-bce3b8a32567 3573990a-7dfb-4f77-8308-11c12e0777a7 9861b4b2-e5a5-4945-8afb-1cb548816746 80652ca7-0d75-48b2-8c1d-9ee60cf00dca 6a342d8f-177e-46c6-bf21-4120d936b177 bed5a5a3-43af-4ab4-b17b-91ae7e447f7f ebdf6eed-3770-488d-a01f-333ff772a791 4159564d-9960-4627-89ca-2c43204f2a8f 2f706d5d-acba-4f92-be61-19d62d66ec77 f67a898a-0218-4598-88d6-c3eecc0e5108 e54e52e4-f796-4f58-a306-e1e4eff8b955 892b87ea-1f7e-4ed2-9d6b-18514622a63b 0e72da7e-5d87-4d6e-a856-f704eec26175 2b4a375b-38ae-4558-86e9-b67f12f1615b a07e94bc-2ad2-45f0-8871-1e6c4d99a67a c7e51689-20db-4d91-a58f-520d96f9dbcd 0051bc7e-9fdf-41e6-b7a7-f921a41cce5c dbd6f30b-1b8a-4aac-8d43-277cb3f189ad a49ac9e4-d5f4-499f-879c-e111068d6801 2df4ad44-dc32-4190-bf2e-141ee8109c65 2e631ee0-1120-4f23-a489-d57ad9735516 4e28ab18-5321-4c0a-aafb-efdf0fceee42 22e8e0ca-5eba-4efa-863d-6fc0808a744b a42de876-e524-45de-8d2d-f8221f4cc4e5 eb14ad13-da3a-40b6-913a-2af720ae505d 531439b0-fdeb-48f8-9616-7ec8b6caf720 6dc06f69-7a22-4ffb-ae03-0e898b8ecd49 a664432c-25e0-42f4-be76-42dc5ce724d9 e4b80a17-3f0b-4a6c-8a25-dc1a61f0d9f1 501daa67-37ac-422f-9a82-ab443f08cbf9 e4e4fc12-c961-43a4-bdef-35f3c8c7eafb 8b487a8d-f9f8-4501-9215-e94b76e56ecb a0c58c16-6ac3-4d34-8fa5-c0bd326264f8 1e4af601-404d-42b7-a15c-fa11cb5d2e6a 45dbef19-c5c2-483f-aa85-b723330b9244 d364286a-008a-4ded-b4a8-cd6cfa82effe 9d2423eb-cfea-4252-bf3d-b2c4c898aa79 19968b42-77c2-4a54-8f03-b4a64c27832f 3e1f578e-528c-4ce9-b369-b191c65a0e80 6e7ac062-5d72-4906-a639-207d6fc932e1 1995b73d-76ea-4e2a-bd22-e713a68c0007 c52753ef-ee02-4e09-aafd-be98026ec016 2e6c6000-05d1-4ab8-9498-7737e2c74077 73c42579-30f2-4800-a7b4-0af3e32941a2 678fd894-565d-4f78-b963-746f88160e79 6f14b693-989c-42cc-b5f4-e37c714d53be 2c6ed24c-0684-4cf1-9946-92bf109d77e4 fddf4775-03ef-473e-a1d6-d83c375a3d4c 1cb76eb8-cb17-4a6b-8836-492bc609cf48 4df48358-68e4-48d6-a5a9-14d837d9bd12 1666ca94-ad23-40c8-badd-c607a8d86ece 6104cbbe-70ba-4e34-a16a-acc0f504adff e7500be5-9951-4715-969e-883df6254296 cca803f6-bb26-40ba-b49c-049364b45cb6 301ef1bd-fce3-4337-836b-23a5f53ca482 267bf766-27d7-4de7-a925-43a4b80cc80d d608a985-4773-4e87-b758-a211fed2e8bc 26904a72-d981-4a12-a7ed-8839557c9a18 d02f8f0f-8d75-4ff3-a2fa-0fe627331ff5 e357ec5d-1dce-4a8f-bd7b-32c0d53cb4ab ed8217e0-e439-45f4-adf7-48adca427f55 b8b63e7c-09ef-476f-8c76-286a0d60b577 c20ba837-b23b-4885-a282-b5edb1b0f34e 0819db21-169a-49d2-ad23-ecef1f48a94c 35ea2256-2bcb-45d5-b113-266583b8b7b7 c92b5be1-26c2-45f4-a776-7834290c0d9a a072f2e3-91bd-43bc-a588-dfc0c504f07e b4378826-028a-4a8c-bb53-b51d9261478d b5cae15d-5846-43eb-93d8-f23de99cc83b d7020180-0b0f-48c9-ac43-972e511b733c 4ed87cc1-83b0-4b2c-a40c-a9d448f6b9fb 6f656deb-4bf6-46a8-b24a-7e010617cdf0 f18986ba-4d5d-4dc6-8dc2-e477e1134299 2cf4e892-b50e-4f33-8da7-0a82a3733725 c92382b7-8fed-4985-ba98-0a4b27d5b798 0a6b3fce-0747-4344-95ce-243547e25b9d b500495f-1e23-4fe3-a6bd-df97b43adcd3 2bc593f6-e2f1-4d18-b70d-1207866ab927 4649606c-c77c-4290-a2f7-7ef0bae5350a dfe988a2-f7c8-449b-af67-97813356543b 3d15496a-feaf-4ec4-8680-1afef5f99587 857c319f-70eb-4252-895c-01118606a456 b1857961-016a-4e51-b6de-6f2c1dc65992 60bf9045-4e5b-45f4-904c-1e037f3deff6 9f5521ab-7aaf-4533-9409-6fe9e651777b c74d681f-da7e-49b3-891c-a85b4d1ee143 10237731-f432-4102-a34b-a32855800f54 9f5f5f0b-7749-4e6c-b2a1-79052c14be96 469f6dd0-3a4e-488a-ab7b-3207147d03db 09eb569f-76d3-480e-a3e7-5794eac71570 815c100a-5b0b-4748-8d95-9038d3b5c981 718b0fe7-7270-42d5-ab45-a83fa3407985 72814451-bb7a-4e93-8a00-88ea6e4e28f1 b4a893bd-a75e-48aa-ab13-cdca7abd9c43 50cd1c8f-2cd4-4820-81e4-9884dede16de 5970cdb4-20a8-4a10-bff1-b0bea2065ac4 15be5be1-db0b-4f5c-a86a-97228e5bc1f7 d4652e88-616b-4d46-bad7-f5a83f3c6c9d 9a068f90-288d-4fd2-b573-44e329f40840 b503eac9-ba92-420d-b059-7d45bfb6537c 5b830d29-bbfd-4b90-9da9-ec2cbcabad82 af447f12-2bda-4b14-997f-a2c76edced89 fcc53cf1-ca91-42cd-bca6-6dcbff9f17f5 531be38b-cb44-45c5-b7d0-0b139d8a1e1b 54827c9d-b811-4ae9-b51b-c42c267b4bdb d10a6c0c-a66d-4047-91f6-9844db0d660f 6b87b559-d1ae-49d0-898c-84a8b197f56d aa86cef2-e55d-48a0-b813-9a9040c7c893 bf24f0f5-330c-4bad-b1d5-8cb43e829a3f a13527d9-7e09-4c18-a87a-509036b08cd9 479732ae-d16d-4825-b265-9009615f50bb 9c0ddd00-94d2-4fb4-b9ca-e7e32950cf41 46f37722-7f34-4566-ae56-b4505e41877a c5813ecc-3ff5-48aa-8eb4-526affffd4ad 0eaf8faa-879a-4584-b09d-874410245017 2ffa6ff1-e7af-4afb-9c10-cec96643725d 8525161e-a611-49de-b1c8-f569315629da f80eabb1-8a38-42be-81e3-d4833d5de040 62a5cd1e-d49d-4640-856a-eb17a1e28e14 f8931fa6-c9ff-4de3-a096-6c7e29b5ac13 d9be0b46-4c4a-4928-9f31-e6014af89fab 903fb66f-cce6-481b-b074-9064f49df2a2 5241392b-4d19-41e1-aebc-1a843805e5a3 52c72cbe-fb7c-4f1d-8e9b-741bfac83ddf 7d120ef6-29d6-4c13-b31b-3e196d63d497 52c50c5a-d82b-4f47-b925-5e9baa3eaafc c76c0f62-21dd-4524-9a96-5a3061832658 71d09db0-beaa-4078-b930-6f084593b2b8 46232f38-66af-4755-9f47-31dcd5712223 30a3c663-cfbd-48c2-872a-5f8ba5350a8f fb35a1d0-4994-48ef-a5cf-6700b5559435 1031929d-cd3d-4344-ae4f-5bbf175e0eef 897983e5-1061-434d-80c1-68411453764d ab05b2e7-cc21-4fb9-b414-566bb28530f3 501058ff-fc05-496a-aec7-8198839817d1 48635fd6-b151-44fe-b63b-bba4b34683f6 fc2bd424-54a6-4892-ae5a-f27d24384bcf 4ab3e947-185a-4ee6-a653-e34f9518bdb6 2ac47ee9-0dbb-4673-a895-2061aca25a05 a24a1371-9275-48b6-acbc-55e345a57b88 a7f1bad6-6f86-4712-b052-b097a4fce550 d8be38dd-b64e-4872-83a1-ee69f8b8ff50 2720a798-c2cb-4594-89f8-b366a1f608bd 33922a23-207d-4a46-a21d-7cf89803f50e 268eb22a-3f3c-4a72-b455-9bef08bbb03d c56573be-86bf-49d9-9886-9922b5fe6aad 9d5b1b05-8dc8-4a5b-8d2a-ff91adddbab3 bd6e77df-8950-46b3-bed9-c4c503aaee1f a5810ddb-e255-409b-ab29-dd95a9908f10 24efbf22-ad88-45f6-8218-82b830cf6123 10e6bc32-c89f-479e-aa89-fd2c72f69e63 2fb36575-310c-4d8d-ac9f-b809930831b2 b3cff07d-8a7a-4da1-8539-ec9d618bd855 c04ae4f1-c52f-49f4-9148-210e556b4ce6 670c0339-0eb1-4216-96cb-3f9f30ea3735 c68ae9b3-2607-4458-a780-a4cf78278086 5bccc991-6342-48e4-aaf7-adbda92bebb6 304f06df-394e-4405-9408-45ab312a7e45 f25f6455-9fb8-42fc-bb95-34bcf117b7b9 5f8043f1-4516-4198-ad95-1988a8735698 f9a4a3ba-896e-4d4a-b1c2-8d86dfefa165 f3c8b918-c8b7-417e-a809-a165de72cc51 fe755ad7-5cdf-48c3-b18a-2afd647d1ef5 aa0e4a5b-e9ad-4d2d-b066-881f8da9ea51 6f1310a7-b039-483b-ba48-b207a59f8c1c 6da4101a-e415-4a98-9310-d5b23bb45266 0934d48d-47d6-4c88-8534-7b65ad3719a5 82530d78-5805-49bd-94ed-db978b818e19 8a066d55-0cdc-4eff-bca2-3f0f89447d38 88e7a3da-91be-4036-9407-c34318945147 b28e00f1-b82a-457c-8f04-91146915874d 7174ee74-3264-4bac-ae9e-9bac14efdd2b 80c06761-d4ef-430a-965d-b314b11663e4 d7971b63-8ca3-4899-9721-81fd9e8d2919 183baa0c-cc8e-4ba0-ab6e-110523d6de44 fed4a638-8739-488b-8232-533f3c3730b6 61090c9f-c59d-4164-8a82-ef82e07a0806 17959092-8278-46ea-b2b9-5c706f06c249 119f2361-9479-46d7-909d-3575b97de362 4ec6979f-8c41-48e1-a06b-bd495d948e8f 7c78a241-ea52-4b4c-b054-9b8939193606 cb13df74-efd2-4acc-aa1d-34afa1d57dab e477550e-0101-4238-b5ed-e8869db4fac3 988999d1-8f1f-4636-8716-e373b1e32a2e d925ed42-6319-40a8-b2d5-ee542484ec71 f25edc19-d01b-4870-accd-313fd2c19e6b 1d647260-7998-4575-92f3-30d30de9a1f6 666ce6e6-dbef-4e98-972e-e2b77e2d3d8b ca945904-6097-4d37-b882-bc1893cb3298 810ab3f8-80eb-4d42-90aa-f2828966efd4 80d4bd80-0536-41f1-a26d-9013e50f65cf 753fddf8-6c64-46dd-a996-2ea19ef14706 90fa68a0-5169-44f9-9bc2-b0fa159498b0 4061c90c-1090-45b2-aae0-66911ce9f43e 28b47496-71c1-4947-a803-7522d28be9c2 1d70752d-df6b-4fb9-993c-08084bffa4e7 7bbaee4e-cc06-4ebd-b4e0-e89e5bcc18b7 c034ebc7-fad2-42e3-9a1d-333f85be7e0d 828fe40b-2b1e-4da7-9314-a48679f6d801 4974bd7a-d8d9-4c57-b414-f7501de13b3d 4c193dff-b05e-4849-aa06-6fac2d214767 9b389c37-b830-431e-84cd-772bd9a8eaec 45663245-efd6-42fe-afec-8ae64bfd637d d37fc703-8afc-40de-9891-de6a645f58aa b8635b7f-8945-4381-9477-a989be5f8461 4ccf52d1-a2c8-4205-a73c-d00fff8b3dd0 b08908b1-866a-42fb-9272-c5511eaa974e e44ac3cf-84bb-4c26-bb6b-19858341c6f9 8cb8c086-3a59-42eb-8685-9e6ffac8925e 4b71ed8f-85e9-4046-907d-8330c7b25994 e0f9589d-0ee7-4102-9225-288a252a3aae f142cc0b-8b1c-46a5-a3b2-6381ce99028c fb29a828-da1f-4347-a669-7816b9a80c6f 5584ac8d-d95f-4e40-9b0a-80a42663478d 1fb0598c-34a2-4c33-afe6-9458c1471e25 24b3fb47-e05d-4e80-810f-25e95e1c50af f56c7914-a5d3-4d42-8663-277378652008 ac119458-fa7e-4ea0-9033-0b4d8102e169 62a26155-ee8f-43d6-bdda-cc200c51cdf4 48d2b5a3-c1b3-4518-b818-a4ec82c956e0 629703a7-760e-48dd-85e0-c21eb5afbbed 390eb8ca-8abc-4955-8178-deb6a9b65332 9a24aaea-649f-42f3-a194-f740b16ec5b3 fb4d1d64-2f60-4cf2-8333-25cbe8b12c9a 4b04ae91-d74f-4b59-ae57-e16563b45f4b cd747633-7aea-4350-a03c-d3127ff69441 b20cda7d-d1f4-4805-9edf-8e4ec8840ab0 66519432-1afd-409d-9825-367ee801e111 1a2db74d-4825-425d-820d-ffd5b3d1cef5 81ed0e68-9661-4a11-a1e3-3ec1b4cbe655 185e8870-0619-4b03-8be3-d7957a6bfb22 16c46a99-f3ee-4691-ace1-5e851e08cc5e da734606-be78-49f2-b6a6-4dca5d04f193 2f81705b-5323-4a05-b552-381984722cfc b68f4758-3cbd-4290-82ac-7a7be2642717 d0571045-d582-4aa5-a7fc-05e05e537847 8043d95e-08be-42a0-a35c-385c9f94496a d654c789-3950-4ff6-9f22-b19030ac5637 02520f8c-c265-4b3a-a8d6-b66fc712fe23 065e31ad-a1b9-4546-b930-98e117519320 333ce2ef-854f-4071-bc77-46068610540d 29ed0f75-3c54-46a5-8222-9dd11e32746d 4efe8e94-4026-4ef1-9310-0334fe4c1f78 9dc42ee3-6778-43dc-8e11-e0f3a7c3bcbe 1a4a3ac8-0df5-4b70-924a-4ce3b3b55e33 a3c4b3a3-30db-461a-a7b6-fb6d684def10 f9a95f7b-3062-4db5-9feb-914006792a57 71f023fd-c80a-435e-b89d-2387e34c0a7b 0788f7ed-b344-4cb3-a84b-2073d41b018c cbadeed5-db8d-4648-8ab4-5abb985c3293 084e5a84-92ad-46af-aa36-61ebe69f25ba 0d976db9-d8ab-454a-a237-8405edc63293 8831e9eb-d19e-4bb8-9d97-5012c87b73e5 6667400e-695d-4f7d-b5a8-ea5e11041c08 67502158-66f5-47c1-9e2d-c47860c44e76 b4a1e53a-a6fd-40c8-8b70-71e3ef12e4c8 a8e12c51-47e5-4e68-a3bf-255623e80e60 8a6a144b-3cd0-4a2a-8957-f14d4d4d661a 7f986e4b-e2f7-481c-a6de-75083e4acb81 5dd5477d-9899-4b68-877a-46175219ef51 b1c8a1eb-d66d-4d4e-92cf-fc067916d905 b786eb4d-1ad5-434e-b1d0-7b4deb32a8a3 3cc5ee48-74f2-430d-bbde-3c56dfa677fc e1b652de-505d-4d65-bfcf-ed03864f40cb 076aa4ec-47e7-4f40-a00e-fdbeb7dc94d3 1812b9f7-fbb1-4347-bb4c-a6153a1e8357 068a3d4a-d779-48b3-be51-6479088fa963 63f95bd6-61af-4d77-94ae-5d35b67fd20e b8a9be5a-f97e-406f-98e8-3a448f90b943 e7620da6-da80-4aec-a7a6-1dde783ee01b bf67e3e0-bdf4-46db-907c-4b6ff411fe4c dd54036d-423b-4d4d-b97a-7df76a38ac0b 6a1616cd-ff37-486c-af05-c0113e45b1c5 79d3ca55-c1aa-4f0f-9c12-6008e613979f f009c7e0-f67c-40da-848b-2abe55a3d978 912fb95d-ca48-4ac3-8b86-8676d892c699 94d255e2-fd84-4afe-85af-3105e6e55ff6 d92cf08a-1920-4904-a8fb-9dc21a0faacc 2b950649-2f35-443a-b1c9-5b1bc170d247 4cd6baed-f31a-4c44-9dd8-ff523e587afc 647b9bdb-3e9e-4aed-909b-d37e3f351c1f 1fa8a164-a72b-49f5-bb5b-53757cd4e64c da763ddd-ab8e-474a-b4f2-546979b7c378 8ebfa9d5-c00c-4337-86af-97f17657590d 5929f02e-be98-4949-852d-0a4f4cac0104 25793513-820c-4049-b697-5a8ddf1c229f 7d4636df-b4bc-4b5b-9d2e-b16d4f2a835c 0575d74a-d0b9-4463-bd1b-d5f62a0fe33a f30d1e47-6358-4514-bad2-6ee6c3984e5f 3e4abeef-ab6f-4d8a-b4aa-147b77bbf2d0 de362cbf-cb6a-4e59-9708-fd5a31eca55f 8cbffc30-76cc-4e86-89f8-fc635dff6abd 95d90df4-8265-4c36-8d56-28606a75f475 c7124450-dcda-480e-981e-9a1853d08da3 5ff37fae-3ecd-4408-99a8-10587355ba88 4ff6a95f-b4b6-4c44-897b-5ad6aa8d9c0a 1367f118-8efe-4736-8d18-4ea24123dd38 1c9dfc88-b60f-4074-adcf-5301b74eb174 f8ccb76d-821f-4950-b254-b5758112a2e3 1a4ca3d1-5b02-482f-b1c6-ecfaec4bab74 86a75c93-dcaf-4239-9a15-a6afa7c74d07 bdccd57c-bfd4-4088-96a5-d8636f392a21 b6a5193a-f85d-4e69-a09c-081654538d19 43511e2c-3e4c-4895-b008-8586d06a6d65 a90c84f1-e9ea-47eb-8c9a-115a9a684eab 61470399-a6c0-4f36-947e-f96313805c07 7ccfcda8-3f6d-44d2-84a5-d5d6419ac574 cd5307a6-7620-4986-8268-dc75a869bf92 4ba65585-9196-4a6d-bb51-3977e12eefae 8704e82e-b148-424f-a123-303cbbf42f75 7119c943-9c3c-4496-b261-2a7878e55283 9a77391c-1a54-4922-b34b-06b9877ca58b 4e9ef8bf-0831-4c6b-b2d5-cf185a24ffe1 4f038681-b9ee-4fec-826c-b64f1d14e495 fb307c7a-5eef-44f0-97b1-bcababa14de8 19a047b4-0d81-4f34-995d-b0bb3e1280ec c7eed4f0-5f84-4f02-ba66-4ba85f9c2e9a b995164d-f035-46ae-af85-8680c1667956 ae73f6a1-b016-46fd-9136-bcc87178cb79 28e69918-39ad-41aa-96bb-5dcc2757b947 4785b458-8c33-4e85-b411-1c4c98646b59 0f0093eb-0ae0-408e-b50e-2c1824a62c1d 17e6ebd8-294c-477e-80de-f7ad20a383c3 26491d75-ff2e-41c7-90ea-f28f1f2ab679 38b05bbf-8872-4659-a112-81fbc210a09e 2f077809-85df-4097-9c2a-8010bf31594c 39c861f3-6903-40b3-8cb1-9f391999752a 3964f3e8-7531-4bd3-a99e-2a444a34d834 943674a9-34d9-4c98-b80b-46be2af0a7b6 69806dc2-0f8c-44eb-bbc9-048a545240d0 a18adfa0-bfa8-48d4-adc2-91497fae3fa8 151ffe15-904e-44cf-a726-c4e1d36770ed a301ad27-d3e9-4dba-8ef6-01727cdd24a9 6dc833a4-22d3-4d96-847c-1c493a689ef3 1edb6850-5a2d-427a-a2b6-7ba9ef842a7f 01702753-81f9-4839-b6ac-025aed470a40 f297b669-3f39-4a54-9183-fea36159b74a c5334962-3822-471f-876d-739200a7e50f 6288619f-aa03-4b4b-a181-5e8219953e2a 0fdbe271-6026-4c74-8aff-72d0e72df1bb e505d738-0a88-45df-9a29-97d03151e34e b95d7fbe-d73f-435d-b87f-8f10a070620a 3e706eef-cb96-4971-bc9e-8f99489fddec a2d7bd0d-1a70-4299-a8ee-759673a362e8 f1bbc946-32e9-48cb-aff1-19ca3fa93873 2280572b-f9bc-43e0-b5cc-4a6bec95e49f f3b5c469-3878-4cbb-90f1-997f68bc9ee5 6c585e4f-7ef3-4735-8a99-0698ce01333f 0b1dc5ff-39e2-4e32-a9ba-646972c29f64 d3a0885a-5b8c-4f70-8c25-3a3ccbf57d7f e1862ae0-d381-441f-9a21-1ee11953a050 eac86148-965b-4775-99bc-a2bda6f31eb9 f5401943-2883-4ff3-b0e3-52eb49292e5f 2564c539-ae91-42f9-a608-41c6256478c1 7eb12c91-52e4-4fbf-9674-9da884e86f1c b7dec02c-8f13-4939-b7ae-e5c9c429fe28 4de95b7d-0eea-4a42-8b7c-11c75f3b7057 0ce8816f-0ac6-4bc9-ac06-f38cb53e4e2d 0cfe1e7a-9175-4eb9-9964-13553ece908b 3693dd84-440f-4a7b-91bd-e2b60429695f 754775d2-9dcc-4140-9f05-05114c885cd1 bec16171-3df2-457d-905e-512192a10196 68631b58-ba84-4662-83c6-c29440e5d761 5aa23fdd-f7c5-41c9-8528-dd574d73a6e3 f6bf302e-079b-4c1c-afad-7019dd92f63b ffb377f8-1f28-46a0-a01e-b4a62d78f97a 8346ea9b-5ffa-4c02-bccb-bf0a6b8bd37b 5fd29bed-92ef-4dae-873a-099ae3192227 0547840c-b45e-4e49-a01f-65d095d46584 b7c80087-3194-474c-82d4-e9a94fcb881a ad88460d-3a5a-461a-a5a3-354391a42834 9af96251-0bb1-437d-8201-a513d2070a76 f441354b-0706-4834-9056-a515d19d0816 d906293c-32c2-4db6-8e7c-c465b3ce1833 e273d860-704e-4a3b-ac24-1c0dee04903e d520f29d-c1c5-455c-896d-54e5b3afa6ef 91b57106-0c11-445a-9511-2ac800141434 2de561ae-ba87-4068-bdba-469e9ac1d6b8 b92bbf50-a954-4d45-89b3-56e7c1162fdb 14d9afc2-1506-42ed-a210-280cea68c8b8 8239b9ac-457b-4f55-8b5a-478725cfeed6 53456464-ac68-4515-93bf-3afbe24eab28 0d1c2f3a-8f23-4461-a705-9dfe6749e865 834de436-9fcb-4d97-ad7a-f8de51bd0b0c 2cec37c5-1e11-4552-b6f8-0ee06d371293 b2e4e8b2-e073-4096-a476-6ad01f6832c2 63755887-a670-4051-9e72-cc84bc428a61 1efa8972-329c-4966-801a-0d1b4daa78ef 6b7eabc5-853f-4c38-864d-5e13d6f86ca8 49bb9c05-117d-41e2-b85a-cec25af03338 e97708eb-bdd7-4410-b5f9-1d7e011b6a02 ecf18380-fdf9-4f88-b6c5-5ed41e0001f9 03a4ee73-5e05-420e-b49f-5efd5745d786 6f849c69-32de-45f9-92c1-a252106cff1e 845af155-510e-4dcd-82b3-6ad46321eb5d 7cbc13a7-d465-4b85-91dc-021cd7a725b5 583da6e3-9428-4e35-9e4d-29df4dbb4383 0a2b8a84-d6d1-40de-a396-e8c8e69407a8 afecd9b2-3b4d-402a-947e-f61e0a9ab6db 8a16ff11-a611-40a3-8e0a-84129629332b 549df18f-01a1-47e5-b6fc-3cb411276fb9 426b7c2f-2769-40bf-b04c-b834e89a4336 34aa1a6b-f3fa-448a-8182-862e7475d53f 400edf6d-ed24-4adc-bc86-0918040fc2d7 f075e735-fb02-490e-843a-bd6fd7c94f2a 99c824d8-5792-4d64-b4f9-92e31232a37b 79c71c9c-95d2-475f-baa2-15077879861c 9915601d-3027-462b-b308-8daa4ce7358a 12596609-6e9c-44c1-a371-1ec6b18880ec 142c466a-8962-40e2-9066-b6789e720241 27a3271c-87c7-49c1-a5d5-deebb96e09b2 692cf1b9-a914-4f1a-a45d-e566952382e7 1662133e-b240-4865-af78-1d053b762302 40b5fc68-2486-4674-aff6-61dff70ab29c 9d737456-601c-4683-bd69-60b335da3783 2dcea9a9-52e8-4e0c-b740-a09631cec432 c4744ede-4b37-4779-956e-7ca05cac3763 f7d59321-8653-46de-b9a2-280e1aec8f05 8fb3b144-d96d-4545-a8b1-ea5e497b8c91 c9bbc0ba-129d-4a01-b95e-7c7cadc4157f 3d5f3c86-efc7-4c89-931d-17acaceab5e9 b180b6ad-437b-4001-b089-ec1562ad4f35 bf358a6f-dbb2-4732-a0b3-3a7e04a1b00c 0fecff99-76be-4c13-8f5c-0e755c5b3b02 3d6f693b-cf76-4885-9924-151978a17692 f87983c8-dcd7-4465-bfe8-dd0437f36737 8c434f86-21aa-4c8e-9e40-d559944a9b58 a28665eb-68aa-411b-84f0-9e245b9156cb 4a7cd340-93f1-44cb-8a5b-0d37c3e20b28 5ac47cda-1618-4e1c-b31c-3b32bee2a52b b9b7b8a4-b34e-430c-95c0-53dd2e33890f eca71900-938f-4b90-9ac8-4556269b143a 7b4f4e21-8bdd-48ad-8f20-e9982b2f0d55 1d9ee2aa-987e-4bd6-8f54-ed68491e74dd 5a800dcf-2a10-4834-a8b5-74f748fb055d 8445bf12-be86-40c2-8a3f-45f19597e9c0 86a425ac-a2c6-49bb-a067-a663eec91b74 f7ed9a83-172b-4303-b2ba-8862a2e69076 d0f8e3e6-8682-4bab-a292-81a4008519fa f9574b3f-a2f3-4610-960e-09273558e290 97d7aa37-5685-4258-9ce0-4ba76c089500 3dc36326-cd5e-4db8-9ce3-fd9f5ad2e794 c5f6c577-d196-4986-8273-4ea73bcfb95b 031080f1-a0d1-4ed0-8129-c7931c35c83c fe090024-93e5-4fce-b07b-ea7177246e40 85b11e67-b78e-4569-88f1-882cb440a7ff cc5eea4a-c31a-402d-81db-f0d22d561785 b31deb7a-241a-4bfb-bcaa-7cd3d9107b0a f8e8647a-996f-4fb1-b40a-31a894546110 d311964a-fe4a-420a-b583-4785862fefdc 90366c15-6bf8-47fe-a348-35eb6066d819 4f601fc8-68a8-4917-b86e-8298888566a5 26eccdf7-4509-426a-83f1-cc8f50b977b4 8fc48abf-fc79-4b0d-ba47-c94ffbf128b4 173e7d62-efe1-47de-8791-26134903f163 12450bdb-61b8-4497-8646-77bc96c0bd5b 87e78aa3-3eaa-4160-acbe-4cff939dfb0f cae8738f-799f-4bef-a525-c88140fa1e77 9c3da46e-8292-45e2-bef5-555293a2d36a 888545d7-4e10-4d64-a526-c822fafb6f2f fa3f7725-df00-4c0e-bd2b-3dc28f7a8029 8ae22d4d-d83a-4424-9931-57dbf5f6e46a 05b94ea0-6481-4732-a38f-6268f876ddd8 918515c4-dba6-4ffa-ba5e-9fd4ace14470 06f1207d-c567-4f7f-b32b-b3e342d0c5f2 f18ca928-97ca-46a7-b491-403cc9ae7eeb e5924ae3-ba1e-4995-8271-f49dc50d64d5 befde7c6-1b94-4415-926a-095aae0b4f9d a177d24d-a385-4646-902c-56ac0dd6c9e0 2f7b92f1-269a-4ebb-b3a9-4bf6e65acd7f 0a85e8e2-61cd-4c11-995f-5706783af198 5dcc6298-8901-4eff-a85b-4abd78484872 2654bb78-64c3-410f-b5b0-79702d97e124 9a8071ee-4a9e-42ac-813f-45e2c131c243 68919728-d41b-4104-b6f4-8e46b19d04e8 229b8d5c-c147-4ac5-9cc8-94a68b59e41d 888ff602-b217-4e74-b210-4462a9bf8ae4 5c86bd4c-f699-467d-a04e-11ed97cd510e e2d82fac-13a2-4a4e-9d80-6d130883d2b8 0e7ba4a9-50f9-42d7-83e1-73cca61b2c0f f246ebda-b363-4e0b-bc0b-316a11e342fd 8dad6a93-07fc-4938-87f8-e60b01cf4324 39fb1a58-d6f8-47fd-878a-45576279649f d43cb241-32c7-4f21-b0b8-8878c8cc2e38 144b37db-a5fa-41ef-9e37-3940298b449e 94588433-eccd-4e57-a512-7fc6a2c73c01 a7c96ad2-567f-483f-804e-68c57ca670c0 b59776c8-8b47-474b-929f-b084466a2527 da0deb0a-8a94-4b51-b741-05c3270f0b84 8d718e87-71ee-4167-b31d-840f371b3464 f638b15f-06b0-41f9-bf2a-6162be6e4285 9e10bf41-16c0-49b6-bdef-1f90a0ac1938 70ad10c3-f8d7-4191-9a8a-0458e68d4a16 5bebf199-60ea-423c-a702-acd8c5eb85a0 a62f741c-2c7a-454d-8866-f2653002eeab cfa915fe-7f2c-4d6b-b050-f68c6c63e1f3 8697e9e0-0eb8-4de2-955d-8b931b475744 e739364f-2792-4461-ade5-2e6ae7aa9369 f14a6ed4-d00a-4724-b4dd-8e1b58ab4872 ab45e61e-4fdf-427e-b681-9482e95867d3 93ada663-5f57-4d74-8e08-a4aaa53ab609 4faa6ebf-76de-426e-a4c6-aa89653e57af 9edff426-b079-45b7-98fb-3af426f7e082 fdfc6614-b424-4b84-a8ee-39350229e901 69c0bcef-e509-49d2-9e3f-6100152eb38d 50236b78-9d70-4dda-bfb1-8d891c2aad17 ebab875e-c927-4279-9d59-03012a2c374e 78083f45-9fa1-4659-b1b8-cacbd3ad1963 60d7fcee-b57b-4c8e-97cc-c04b181f3eb1 0dcd1b3b-b35e-43d7-9a9c-fcb71edd632f 6d188fb9-aafb-45c3-90a5-7790dec7ad18 f38a290d-cd8a-4633-ab45-c1fada801835 177dc765-2ca1-42bc-a0b1-385f37debca7 45222e94-221b-4755-9791-b167c7efe334 090fafdd-4b01-4d58-8c5f-13db54deda95 8658008d-2ebb-410b-a8a1-76303b825890 ff04ac68-28d0-4af5-bc9d-1f5c85cc3a17 113895e7-fc8f-4b92-bde8-c9ba218d86a5 e2d367ca-3e19-4f9b-b562-019629bf8dfd c5164221-a4f0-4afa-bef3-3db447df9e40 62026442-3b61-4605-85b9-fdf81449a6cb d9f536bc-45b9-4f89-8ad8-b7aa8922a38d db18862e-f61e-460f-aaf8-9a92426dd099 9bc14bda-ac7a-4104-81eb-153cfe402341 84559e6f-14d2-4d67-ab12-e8a94e4a9fa4 3427adc2-e6c3-4da3-9b49-7d3007c1f9a9 0123bf6f-1359-458a-b970-3294cd9febb1 9bfbf4a6-ac98-499a-8307-eb5b9ae3bb0a 744327dc-8eb3-49ae-9c1f-bdae8bd3d280 dc4a1b30-104b-4de6-8b6f-2a61d8110312 08d61dd7-8154-4626-9daa-128521a129d2 3446b7a2-be96-4369-9f20-57584b70130a 4910d61d-6ba2-4973-8ebc-fe9435c6c93f ba36f917-3538-44cd-8425-8d6c2ed9cec8 55402bb3-ba6f-4dab-a177-cfa29e738246 7e3cac73-acb6-46b3-a121-7fab0156d5c8 a4733761-df61-4743-818e-fc75ea2fafc1 25525b9f-08eb-40b4-ad9c-41e7c36052d2 8714aeac-2cc5-4d78-86ea-007eca7a7d76 f2b035c5-1dfe-4a26-8796-35d2c5286f48 484244ee-8bff-47e5-81af-a3d66137d720 34cb6e50-c218-45cd-b356-da32d0a0a630 ee6f677b-f4b9-4a68-90ff-a2fce7dbc621 3e9eefb9-2c21-4a8c-bbc7-7acb896e6bba 6278a59f-5deb-4559-8e6d-417240bd88e7 ba24b8fb-b785-4190-aeb3-d045db88d020 de341198-ca37-438b-a33f-458712f8fab9 fed8f2dd-7fd0-487e-be33-a72a2ccc8ec0 4ff06790-60ed-4f98-81ba-27061fe0a85f b2d2e9ab-ecef-43c7-81e8-b05fa843f19c f022aa2e-013c-4b0f-92d6-e064ee3a9446 14f02d55-baf8-49ea-9349-ef2c795127a5 3bf0c68d-b620-4861-94c2-f7d0931e8d93 cc26b803-53d8-48be-aa65-0ee8309cd959 6191d9e6-3078-46b2-94a6-ada86804d0fd 646ee91f-8652-4f75-9596-3d279825abf3 c38d67bd-ba70-47c6-b475-c18946406473 6b6abc8d-3399-4ab6-842c-9c06a595aecd 3037603f-fa47-4af1-8d96-3d645bed0423 db5905a8-5de6-4631-9ff1-52f28e992a49 08874932-a792-48ba-b6a2-684031574cc2 30956e46-243b-47c8-bcdd-81508217f480 3145afeb-733b-477a-8820-01a93dde1f3f 738f955b-8da2-4b8d-bdfa-018654693378 6d5a4a33-cc6b-4c55-9b31-8a9963101b92 4555c490-a600-4a81-9d87-8c1184965170 be59d49b-5694-46c7-97fb-76d84941eb24 2b601a04-70bc-41dc-9f38-8fa433cc6295 0115330c-1a8f-4442-861d-16730e914cb6 14959e9b-c0f0-40fb-ab6d-fd5cfba17c68 ac3ad6f3-ccd0-4879-8981-78d33a51e552 ffb3c1b3-bcbb-4f7e-a662-eb711aa5eea2 33068253-6b17-4770-9b39-553ccd213951 d1fa588b-b10f-460a-9724-44ae4c716c6f f4569764-0718-4bc0-ab6c-18ccc02ff2ef e0254f73-22f5-4087-960a-616a85da760b c6a9fe0e-53f8-452f-8f97-a1b941fbbe92 0f999cad-9cf8-4637-983b-3fa56a2323b9 7f861d62-274d-4438-a216-08e12f22019c 258c8504-9d05-4a84-86ee-f366bb04a837 8cda50d3-bd4e-44cd-8102-5bc4a440d253 8e724bc9-cae1-45dc-acd6-633596430e26 13ec1f7d-df43-4806-a5cc-f1dc3b8c6ce4 ece50995-cfcc-462b-8819-8a0c1766e6d4 5154a1e5-6614-4068-8f1a-5aa289fd0a09 331635df-caea-4911-b1de-c53a4e0d186f 338f159c-3fd8-4888-aa3e-8f22ecd562d6 2552edd7-3148-4b5a-a024-6201bc8aab3e 438116c4-1dda-4492-8a4a-8b8c946cc65e c97ff50f-103c-4637-ba63-073354edece6 67a503c7-6db8-42ad-88bf-edf6f196953d 8fefe13c-b568-431c-a667-400c8215a964 acfcae36-4f4b-4e59-b1ac-b4d7a9d9d2aa 3eb8bfdf-7135-407c-b59a-8c495484576f 98af32eb-bf9d-47fa-bd88-284fcf7ee353 56e044ce-6fbe-4996-a660-1d676ebafe3f 51dd68fe-0d29-47b0-bba3-7768c1bead60 f2de27ca-02e4-4838-a951-49c39cca035b c1335f62-7948-4bf1-a0a1-dc5df08e257e 8bbeeb98-0042-4954-adf1-392b75f54e96 51da53d5-c5a3-4cfe-86f9-4fcc76bba554 1f19069b-f1a4-4563-a8ec-bc6063100fe2 5d148e87-b628-4bfd-b039-6d1a8498cbad 3c117b1d-ef47-43f6-90b1-947a2dfa2e78 e16429e2-beb0-4809-863f-932ecd6bca32 40df9d0d-f6f7-47f1-8c66-98cc8dbbe0fa 232f6d8b-e468-42e7-ac2d-495fe9735e74 8e635857-d530-498f-9398-7cf0331e528e bfc7e191-daad-4936-94fa-902c21ca8cf7 8d8fd6ab-4d33-40d4-b609-97505aba31e2 b94331c1-8026-46f6-8710-7f69ea1c8131 8eeacd6e-1e67-4cd2-a5b5-630db4d1c084 7798c6a6-5203-4faa-ad34-19087c2822c8 df0d3290-e9de-4fa1-8bcb-d55105073edb c69cdec0-bccd-4432-9b1e-977428836730 a62d4396-56a4-4527-a505-f658ccb4c20f 4dc9c32b-2c08-4960-83d3-3a096c731e9c 9756e2c8-35ab-4694-93f3-ce8296b3e269 db32d89e-6aa0-4ac7-b340-450bbae3fcc8 f3621614-c0fc-4e76-a19d-13a8891380e5 0147a9a4-4f05-4800-83c7-5727d41a16c1 f2820398-e0c3-435e-b4f4-7e21aeef69dd c397d296-af35-4ec4-a356-ec44e66817b0 99900cc8-5737-46d8-b9ac-7b0c17701e8b 24e1e2a4-3b8c-432c-bda9-f3ca40dde7c7 c75ef591-8ab1-45db-9280-80ef710b61b9 6ca43f54-0765-4670-b86d-2c5dfcd7d020 81ad20fa-5e27-4492-a2ae-5db8c5623bc2 c18d4b5e-8ef6-4954-bd5e-f9d97b63ab40 e12123ed-b730-4689-bbc3-5121d1f5566b c3956952-f4ef-417e-820a-38ee9b35de27 3e80b463-7668-46eb-a87d-4ebeea3f39ea 2974789e-bef6-4104-98a1-2a16f1f88bd6 6d39123a-615e-453d-be99-2e12a44b8b12 9291a11a-b236-4125-85df-e6cdefbb7b64 90e15cc4-bb12-4503-8e17-20fc26301bd9 a63e4d09-e6ee-470e-896e-315796f28e3b 0b8f118b-f0a7-45d8-a88d-adfd9c3dd3cc 3502b542-a3bf-44e3-9ebf-1bb11a022324 851ef990-196f-4aeb-bdea-d04867466d66 66f3535b-773a-4968-b185-8251440a861f 81749c1b-56d3-4e47-afe3-f337f3270dec fe2a945d-6bf6-4cc4-b528-01a6cccbba52 cfebc70a-b31c-4648-9446-42d30b457df2 b080023f-56f1-48c6-943a-778b23eca267 608ff20e-57f4-4e81-85e0-4d1719434cca d435c9b3-0d1c-47f2-8f99-06c6f210ddd2 1d91ca8a-4e8e-491d-b3cf-35cd479e696f 37ea92ff-2965-4857-85ec-fdd6f9e91afb 43998747-ffe6-4844-99b3-bec4196da6ea dd21c8f7-65d7-4421-be94-505f1c17c975 c3a40c0f-7adb-4e93-bf0d-6549f059bb0c 6915ff56-80c8-4812-81d2-3f09d88ce88e f65d8104-1439-4dfa-b4e6-aa8e1c8bcc8f 31385c68-c99c-451b-be52-d687caf3ad60 b34c6211-09bc-4f4c-ba72-4a916272e06e a4b02ca1-0132-4167-b36f-b02debdf910e d99fde71-6242-4aaa-bd63-e2642171746f 93816fd1-5989-44eb-87af-3538d5766032 dcd9a434-a84c-4a05-b2be-6dc7535e9fd0 b64402a6-e37b-435f-8ba1-b3872a3953a1 73b7c55f-e676-4bc8-a379-241f3922a5ed a43c95d9-fb92-4a64-b9a9-33424f6b23bd 9a072b00-d65b-42be-92a1-662fc38951db d7aa279b-533f-4d8f-aa40-6102c3f2d830 6d9bb496-30e3-40d2-8944-50fdcc59ccec 7930d73b-07b7-46ff-aa89-efe05f4a0822 19e7e0e5-23c3-4b42-930e-04c80e977611 376e2287-a069-4861-a839-4b9409474fad b17a5a31-2d21-4b3d-9171-bbe3be8ea893 a6c7d02e-809f-46a9-8ff0-3216c08966ca 8e5ce536-f2c9-4b24-9907-c7afa4ee2945 2d78af09-609f-4de1-8ce3-fc45f7c9c08e e29a379e-4747-45ca-bb9a-b16065d92a2d d4ac4d82-e3b3-43f5-94ed-63595686c9d9 fb1dac79-6f75-4641-8054-c00df80b1358 fcf652b2-5f64-4301-b57f-d6df05f1fc6e fe65795d-2c4c-43b7-a5f7-9f32168e2f18 743dc87d-c6f7-4748-80eb-54ca3b8197f0 aa0a68de-f660-469b-b433-978f96d6555b 9919f25f-2d82-446b-908c-2fa183534868 713a45df-1701-4fec-b722-60385602af9d 515cf6eb-e878-481e-8c95-f01b0cfcf294 2a3000f1-09a3-4fac-a95e-20f9c2aad892 a91421f6-85c4-48f1-abbc-02f2d139a43b 95798525-b49d-4815-a11c-f0c5a68c94c2 5c70d248-4097-44ef-a0d6-56387f6b7888 a542cbce-2b49-4142-a85a-27f109d6d2a5 080a4d2a-fa64-455b-8949-5766c7083185 7c73aa48-9e64-489d-b167-56e658c20a47 756bdedd-28c9-4eab-936b-6bf6f7431994 d7a74a56-f397-4625-b6ec-16b1c6b1c616 a2d01659-e5ab-4639-83cf-5ce8f664670f 76c511e7-abbc-43e9-9542-183a5199f056 e5adc742-ab84-43fd-bfe3-c816fc4b1561 8b44232c-8da9-445e-9435-177cd4d5a8e7 b1423c0d-1170-4d2f-b82e-213a8fed4977 524e068c-7ee6-404e-971b-79651a5b1f30 ac596a71-68f9-46dc-a4a5-e29d6ee850f5 06755aec-bf96-49a0-b147-521212954524 6df4431f-233d-4ec8-8d6d-53beefebad37 1f3b8cae-f31b-4e00-8c9c-79a752d79841 aba1f866-ffcd-485f-aa2f-76d4a61de2e8 cef6badf-f68e-4e70-807e-7272253c9e5e e3e190e7-4f79-4d9d-8792-3199e4142446 5fe822ad-6c3f-4324-b59a-d0a5d46eba50 f154f136-462e-43f3-a539-73dcc238e630 4ea3c5d1-4aba-4345-931f-8f246f9fb59d b91a3bf9-751b-4004-8fac-ca9153c43372 11d747a8-dd9b-4b63-b9d1-e41d629ecc63 4773d3ab-21a4-4916-a800-1034167475b0 bdafff1c-f1be-476d-9afd-4644d70df37e f2770f7f-17fa-49e0-8db6-680fea81edaa 3a1b6005-7cae-4b8f-bab7-ba0ef8c3597e 6b66ebcf-7105-445a-b81f-f8975f61c107 989af63b-020d-4ec5-95f2-b591e380b86b 5ee66679-58c4-4779-823b-6098e990f133 7f7a16ee-840f-4883-bcb5-9c318f7b7848 27b80cfa-5f16-4e92-8c32-781ea02f7ee8 2d045bdd-6e78-4330-9c84-6655a04ff410 b75985f1-054f-48d2-b79a-d9a350989756 d23163e4-c419-4a5a-8c8a-b07a3437a94a 8cf3e58a-f1b0-4b46-bb16-f418d685156b 94630060-1cc2-43db-afe9-6267f6e78521 d5daa243-be85-4cd9-bd36-47e5b4868d19 22eb2ab1-b290-487b-8f29-7250979f2b74 e4fbf776-014e-4b88-980b-24497a7066fb 21048f77-e5da-4422-9576-a89fb0ef10c0 6beff243-0079-4587-954b-d24eed6a6eae 598ebcd9-c7d4-463c-be9a-d84c0efb863d 893fb727-d071-4d4c-bc3a-c69f3e57d4e9 adc8db4d-3065-40f6-a9b1-92654074fdd5 915fce77-e5da-468a-b947-e483b6beb08a 84f95ed3-9bce-407b-af7a-e0ab3dad5549 fd390c23-c5ff-4d43-b817-d140619b0428 f6ed2148-6303-4d67-8b64-55c5c937a165 12f9f32d-3d0c-42d3-a014-252687338fdd 770e0877-b113-42ee-b4fe-e96cfc679d17 f124321c-fc51-478d-aac1-65ade14f5f69 1fa9d9b5-1cdc-4616-a431-ce0051f2462b 5bc10515-69c6-4f22-9624-b505ced82456 efd7f9eb-4bb4-4468-8ac7-7e41437aa76f 87f0bcd6-6296-4ad0-9fe3-ea41a229fc5c 4790c80e-16ec-45a1-ab3d-e3e3892a43b3 1db0680c-6a61-4642-b68b-4a83dd0579fa 7c9b1edd-19fc-4430-88f5-d033c94d10ac cec9db1f-c29e-4a8d-ab79-f6eb3e6fa801 d03853c1-e75a-4cb4-923c-20cdeb6669d4 5e97d1fc-d23f-4dc6-b125-d907a641e485 3ebda22e-97c8-45b2-9d6f-16ed4b9d5df0 36f60406-9c7e-4991-91ef-e92d3e326f65 9ddd584b-b4cc-486e-887f-84c898248564 17aff9f5-19f9-4a84-bc02-0b477503583f ff08cb28-cd2d-45fe-b939-88ed2fcb6d06 272d2f54-5570-43c4-bf4b-f5e544d93a38 4d0508a3-e8c9-4717-a929-2cade4242ff4 71b5c64f-4f39-4fb5-aa2b-505b92d4c086 10fecaad-d9d7-44c0-bb12-834c847d01c9 b2ce72ba-443a-408a-b490-2f292da65c03 4f4e3f3b-d045-4c63-a020-8ed8c42083c8 8e8aef29-ba7f-44e8-8cb8-b90e2ddb02d8 7472af04-1c54-46aa-aba5-047750d13f29 ab72b01b-cd79-4464-95bb-bb00f39c61c2 3adaecb8-888c-456b-bcc1-072826753622 986733cd-2534-4b07-82f5-e88f2770c092 e4a23566-2849-4ccc-9305-1423eca8039a 41e313f4-0731-4953-aa8d-6532d0bc0019 ab5d04bb-eaad-489a-b2d3-5e13840c02d8 4d3dea8f-a773-4769-93a8-bb675a60ce4b 7a8133a7-8908-435a-9223-f534ed6751fd d880349f-17e6-4856-81a5-8b3552e8efb1 61713eec-5e64-4fc6-a2e0-03ccd879eb13 073d716b-e749-4762-abc8-776c09b3ab80 a2747d7b-9c70-477d-bbba-4517bdc1cdcd 618bb692-4a97-41e8-b268-10d639635a4c 54e9c02d-7adc-4a58-9e2c-6bc0771d844c 1a6c939b-35a0-4bc8-838c-5857a863d3f6 5b3f7c37-ed04-4dab-9fd8-4fc3adf9adce 7635adb9-a9bb-4620-adc6-7cef45dcc2c4 330379a3-3b24-437c-aade-b156f8d4032e 13564cfc-eb65-4290-89d8-c8dee3f55a4d 708c66f7-d097-4284-848e-ba408c568c2d a277d7c4-c47f-47f6-b7b4-fee13303d456 f1410dd1-ab69-4eb0-b2dc-f0a409b469e3 51ab40ca-5350-4a57-bee1-9a84e567ff10 fbfd882c-c948-46de-98ac-85903295be8c 2fc41fec-9491-4872-b477-7339afb95061 9e442c1f-440f-43d7-8200-528b6045f0f9 5da38ab8-5c7b-4c3f-ad17-665fbda5fe1a 8a70dde4-b070-46c9-8eb1-1b6660c2803b f92cbc08-88ff-48ee-b863-0f73f4b752be 1c3b0cca-e8ed-4ffe-b835-22a9c58f8701 94ebba16-1ed4-4e61-8440-afdd97f42e80 79d21dfc-bb46-4634-bbd1-2efc3b09c4d0 197ebcb5-e65f-4df5-a932-7bd06e2cc481 8a4daca1-8c5d-4f9c-a306-f6a9ccc19f27 228d5db0-d132-46e4-b03c-59aded2bf976 f17018c9-2ba9-4235-9771-49e834069804 c391aed3-3c52-47b7-b5d5-3d0448f43216 56b7ef58-e8ab-40a4-8842-dbb949d85026 29bf1063-9169-4e43-a285-219eee187b3b 9ea53642-c821-46b1-89e3-26f708205140 23d496a1-17dc-4ae2-9f4c-76e515fe1c73 5ad5b63c-3268-450a-b8a8-0ac5cf6ab2cb 414cabc1-5be4-4b8a-9c95-f151db0e3d30 a325d80c-0f82-4577-8361-699e35a8bf55 b21812fa-ed5a-489b-8829-e53f8b2aa068 f96db92a-3254-4178-9b01-6b84a3112806 f80c93aa-47e8-4631-b7f7-bf46bcc7905f 8144a053-c198-48f7-9467-51d971f7c094 c9c9182f-d29a-44cf-a196-14e4c4f5a84e 7f3070b5-f62d-4129-9a9a-2061f2543c01 e08c3401-9c3f-43c5-a90d-98fe1ec4b172 4b393745-7b04-4962-865d-e46f7e20d3e7 a068c553-5f6f-4961-8d99-b5b3c648866a 3d59be66-079f-4c98-b99f-288acdc68207 2c3c9108-9645-4778-9555-6e91c6f2b9a4 1a1214e9-737a-437b-8f82-34a649e920d6 620a2cbb-22de-4c58-85d6-0fc2a3a97848 ec85c36b-3db6-483d-9029-ce8f75f202d3 eb715d0b-6172-45df-9b15-589e01082de5 84a68430-c0f7-442e-92b1-b42c08abccab 06b125ef-d86f-40f2-9134-ed3a7089558f c84cd723-8365-4678-990b-7ae1581f2ef8 d0acafbe-1272-4cdc-bfd1-fa2a919848b8 81b9aa91-10e5-4788-b178-eee39d1822de 59796915-b1fc-4369-9b74-380e08d8c0a2 6800c65e-05eb-40b0-abc2-c27c546fabbc 82982264-3e5a-4e3d-9436-af6c868d5dc0 ba36e31e-fa83-4607-a4fc-251dd4da79d1 87be45d2-08c4-4bed-be11-ba0cb11de34f beff6468-03ba-45a5-972d-7f1a1732332d 400843c5-563f-42c1-bef7-97bd5873ca9b b3b4bc65-4590-454d-86ea-b4f7e184cf78 32958211-3674-4eb1-bbe0-cd2b889f87b5 63c7dda6-92ed-481f-a83f-7a01ec3e6235 c161a4d4-028f-4136-9b1a-4203fda6d000 c59c171c-3d62-4bea-9d3f-56ec8ee4c20a 7d127752-b1f1-49db-8a04-4bf743379f17 6960fa96-9e7f-411f-81f2-9b49a0aeda23 e75f6fdc-a99b-4a2f-bc49-aaae28d9d689 90e1779c-dd0c-47ce-a361-99591f99d2ef e264092f-5b0a-434e-9a1d-56b71527e1ea 57dd8445-2c3f-422c-bf7e-1e2ddb7c7b31 50bd8543-f115-4311-958c-a8b125f6800f 5f64222b-b5f4-463a-8216-2a7bec9d9fdd 98f1ceee-3bd7-49dc-9406-863a374af334 17b3b249-1087-4d53-9c7a-7dec91855950 586e4a86-2a31-4257-a570-b91fb32dab06 e6b1e182-454b-49bd-939e-506d97ea0536 88ab756e-5236-4384-af4c-d78e90c910d5 32b592e5-9f54-4b94-b5c1-61709378ae32 43ed3e5c-a46e-4a68-9de6-df0a66d1d6f0 a51b078e-8f1d-4059-a127-c70f35debfe8 0f74be7c-f60d-48f9-b678-1ae295c4cf5f 8cbc54e2-621b-4cf0-979b-db6643f4c615 253b0072-3fba-4a80-8a12-ea42f961a490 01656b56-7e91-4f46-a3e2-9200cbab01ef 30401ba1-030d-4bfc-bb06-ebc1df774049 6e843834-dfbe-4018-b547-06196fc1e2ad 9d1c9be8-2ce8-4449-b81c-80780b61bb0b 26e343d5-382e-4566-a4b8-d1167438b60a 61284afa-d8ee-43cc-8f27-e32208abe501 cb095277-3cda-4f66-a3e1-30ccba958250 a14ca5f2-6f25-4231-85f7-d8cdbe167ff0 ce880902-1b02-4a5f-87c3-0041d4a6e3b6 b40f7aa8-b13e-44a6-92a6-6550bafa1fe7 aa73a590-a4e5-41ea-8f18-9fec0b718f05 cc9a7d00-979a-44b3-866b-95eecd11cb70 1cd46cf7-c430-4945-8b32-77da5be09953 ac27fc55-3796-4a59-9f2c-04f72bba924f ad89e6e1-79f7-49cf-8532-ba2cd685c4a2 ac07fa42-bf5e-468d-860f-9d6bf57c5054 665dcd2f-fd9c-44fc-9c83-b348bbf7c026 57b87ea4-17b0-4535-9d3c-01ebd73e8e8b 0186c5ed-9341-4206-84d0-f2e87d018b95 3898bf49-29c1-4496-a005-9cec5052e0fb 799a8c42-71ec-42cd-9e70-6e31747d5ea7 7139bdaf-e9ff-4dfa-80ee-d54ffdf80651 27024904-3943-47c4-8929-ddc8ac224f81 42e5eefd-b19b-47d4-9b09-eeda91912600 daaeebf1-a710-4a5c-80b5-d69ffbf0a858 43fd91b0-3187-418c-9092-d0f9e2dbede4 12f3c29f-82a0-4d32-8eda-4125ae14a37b 15f5e5da-0474-4c9e-987b-ae23b673adf7 c4997000-16dc-48af-a115-90532c2e13f3 4555f61f-1d66-431d-9c3c-fb82f5479bf3 9d3576a8-0467-47c7-9725-b132bde66564 6c3d095c-9221-4bed-bbbb-8291f16fbe6c 97b8fca9-5b9a-4142-bebd-740c25c56b9f a57d039e-9708-4345-b4ae-a204538e160d a8d1a1bc-bc55-4b1a-899e-91de1454207a 2e1e27d3-67e8-449e-b039-f06935fa74e1 accf8667-3115-4fae-a008-69352f0406e8 8d6607fb-ab3e-40d4-9964-61d53e698eb4 697c02f0-e3f3-4305-a879-8148ec42f535 aff72057-cf27-4ce8-8956-09573ad3a099 f60a3092-9b6b-4fc8-987c-58066e9248c9 efe864b3-8762-4001-9bfe-febe05d953b9 684cbcc0-6572-4a3a-83d7-dddc1162a6ec 6fa8c8ac-03d7-4cb4-a6e6-6ee8eafda97b fdc25f32-2e19-4c8a-97e1-9c23cf72a3d7 90f5e9b0-a7b1-4230-b51b-91f006201a47 38884f0f-a1ec-45ae-85d2-26ff78bc7518 ee38d1d0-915c-4f8f-a848-d50e92c9d7df afefba1f-df04-4668-8bed-f398478f4ab2 950d90d4-ed64-4aa7-b485-99a61180a824 1beabe16-9471-4a72-9587-374da3f0d07b 5fe9afd6-b1d2-4dd2-ae4e-f0642dc11549 0a0927bd-b11b-4833-8bac-c45516deaa67 8cc144fb-5a96-4576-ba37-07bc2a62c69c 20885081-d9b7-48bd-a6b0-df62a90c221b ddbebf8c-2765-4280-8ac3-6fccda440bd7 75fbb4e3-095a-4075-9c6e-2ff10dab5e6b da50ba8a-0cc8-4041-b130-74792d529b53 0346e84c-696f-4ba0-b615-5f3365494982 33d3a0bf-3783-411e-9247-fc119360264d 0e51d02f-4c4d-4110-8b58-0633db7813a4 c80253c0-661c-4b5e-a83b-ee9553219a97 b82057ff-a336-4704-8b25-68822ce4935a a5b917bf-7dc5-4833-8a0d-9d608f989ea9 535ceccd-7467-4bf8-bf0b-15b50de03e94 39118bd6-e152-4b29-89f5-4d5e06efd27b 85064c6e-5360-4653-9840-1d869b427a07 7fbe19cf-aec3-4fb5-a912-3a2efacbec48 dbc4ea7f-307c-4650-97dc-5cee335e87a5 ebff0f7a-c249-4ef8-9955-9136bada29b7 aefbd9a4-4e59-4485-aba2-b740365f686c 31f143ef-1335-4831-be52-5ace79b24ad2 6bbb200f-4dad-4072-81e4-20da17473ba2 62362dde-0b80-4042-b769-e8c9f1790d51 c17ceaab-e9ac-408a-b580-f246c6e9be74 5e84d4ba-8c45-48f0-9ab6-ad39ff199466 980aa95e-05a2-4869-a542-e4d2b13bff08 2578ed97-0be5-4148-86a1-235fdac93d23 deee037a-d50d-440d-91a8-39eb4cf74b43 3101094f-54f2-4bd4-9195-4408ef8d46d1 b35b207b-90c3-4195-9cc8-a47a3fce41aa 2f45dd76-e269-4e0a-9eaa-1a268303d131 23f2144c-587d-47b7-be98-3e4995394543 d7daea66-4842-424b-a51c-53b6cbea0b02 2fb54ba1-8457-46a4-9d49-3a5cf61cb877 c8e4f4a4-a059-4ecb-a79a-b27fcd44231b 1b82b238-a81d-41aa-8b22-20bb0c1d699f 95922a7c-a8e7-486a-87ff-b6bff7418513 b5bc3dcf-2a6d-45c4-93d4-3e756286b6d7 769c4080-b2a4-4607-a0f3-ffbab098076f 4325ab24-6499-4ab2-8813-0d82b3c676c1 d0438c33-49e1-4afc-ab40-682e5c297f22 a86f1609-fbad-45ec-a8a1-07995e12d5c5 93cf30a2-a950-4328-b29c-d58459955667 7f30fd23-1cf0-467b-a89f-09ee4c721338 de69c2da-775a-4859-9c49-170e3d5dd77d 1db3957d-aac9-439c-9c97-74593e9d6d66 0008491d-0468-4b99-8cd7-7294115f0529 b309da77-3234-4098-b13b-6fee73bfd4ed d64f913c-ae96-4078-bb57-f8f5932c9103 347aae45-3026-4fb0-abde-39749f98767d 6e0ee49a-375e-465b-910f-428cbae5e606 9f9c7401-a847-4f66-8a5c-9db1eb588660 5a8c0990-c98b-41eb-b018-94c46f04da52 f582b09e-bdfd-4087-b5cc-013340e2ad3d 3c388380-8596-465d-a6e1-dd83d8e27d06 0c96ebe1-a9c2-45e4-894b-bb06c836b1f5 2ea695b2-00a9-4003-8f61-ce0b51e04234 12900725-b663-4e3d-ad25-a27615a23c8b da1f8ba3-7328-4dd5-84f0-7648ef87cae1 386e2e64-4292-416b-b5a5-c1ff75f31fa9 ce3a92e0-44ad-41f9-8e59-ef186f497dbc 402f2ec6-b3b8-4d3f-bd8f-31d740139ae4 e54405a4-e124-402a-a62a-9b75768a6f8d c6f9a330-a6f1-42d1-be55-e1b22603b31e 5daf8111-8ab3-4fe3-9034-8642579f3e99 36537548-2f81-4d74-8c65-60888a2d8609 2aed6b17-ba4f-42e1-ab78-fd73966dd49b 318d2d32-64df-425e-a8a7-e5d5c0898693 528a133c-c961-49b9-9fcb-d8d73171e265 ac7adfc6-92a8-4f9a-b881-69afc0b85fac 4dc7fe48-27ba-44ee-bb5f-5ece0499aa37 01add783-18d9-4f7c-8e9c-59f13b5903c7 7093333b-9973-4dcc-863a-c45d3bea4da7 b183e420-2349-4982-9c73-5d78fd641ab0 039f3400-bfc9-436b-baf6-e6431d9a660f 514a382b-4a8a-4029-a53d-1ff6550bc876 7c189341-073c-4607-b51e-136b2fce3599 ee13d042-5f1b-4c97-a890-cdb010c8b8e2 2899983b-dd5e-450f-bbe8-19041967d7e2 5575a837-294a-465a-a7b7-09e39549146e c076828c-37f3-4fa8-9f6d-a632d04d3f5f 05f7a647-eaeb-48ea-a066-b92c1d983440 bca464d3-6f5b-409e-9fa5-040f9523b10c f9c969d8-3567-411d-8e55-fbe14125a70c f86c3f5f-7173-4f5a-b441-adee907f9fc1 99828836-78bf-439b-aaa8-f2fa961ef672 5896fc35-fc57-41ac-a505-219383f8cff4 999c6373-213c-40a7-9392-5b5b59d09548 d5acdd63-fd1e-454e-9411-237f3448a714 eead3974-cad1-40ed-ab28-0aeb9d72cc57 3024f51a-cca1-4599-b9e5-3f44b93e3596 435c0698-d4f0-459f-8172-b2bce154253f f4bfe883-349b-4186-9bd4-f3f0a4c434af 93fbc0a1-bbbf-495f-9e7e-e997901c271c e4104266-c08d-48fc-b3dc-e036d671788a 812c6a1a-dbd4-42f0-9199-01d2ab5b46f0 a51e83d6-194a-41eb-91c0-4890bc8e425c 3159bd6e-917a-4efa-ab5e-156f608ad7db 9d5e2119-31b8-4ba8-b632-25136a699b55 b26c6edf-e719-4afc-b991-e41c2958f9ab 28446537-362e-4a57-ae01-5c2dc50dfcaf 112c41cb-e4a9-42c7-b6fe-bfb21dd95199 4aa1f1d0-563c-4e06-b8a6-c6dc17a51175 879a1d13-f3bf-4392-b270-cef45ecc330b 6425ed96-8551-4f44-97c7-c23f74684010 78245be1-b90e-4235-ad02-659ea01f7457 d26cb0ea-3a24-4fc3-8344-5357ed836898 2ab76a5e-dd7b-4eed-94ee-f72bd564a08b 79b6408c-173b-48c9-ad58-23e9b774169c 2161435a-88f1-499c-92a8-61dd89164eec 5e239393-66ea-4f94-8ef9-b33fa2b634d6 65a5fc8e-65c5-4b4d-98a8-eb09245d0b59 c5ee99b2-5770-4132-812e-62731fcb9ad6 d383ab91-eb1c-4da2-aa96-85f402bf4ec7 64730924-5f34-429f-ae9d-56c1c6587e00 3d66cb02-ff6d-4e5b-8c38-40d3645ecb68 5457c3dd-ce2a-45b4-b80b-c1c9d0a24f49 6800c5f8-12f8-4e63-9d8b-6f7c263ef798 7a6ffdb6-10bf-4d08-a396-cc8f57164384 9d21acc1-16c1-4c4a-983a-78aff838b8fc b8988e9d-c44e-4a41-a28e-0feedf540ab1 b2fec941-91b9-448e-bff5-0a6e62fb6040 6d5e9a3e-1ed6-4335-bca2-0400fbc64e7f 2058358f-36e5-49d9-9a45-5f5e30a5e3c7 483e5020-3645-46af-aebe-d02235fe74c1 af201f48-91bc-4470-809c-cde6b12cb45f 33c79925-0871-445d-9b8c-7bf255d721c3 755cc7dd-e89a-4be5-9619-ebedbc9839ea ea7c5880-d375-4668-8e7d-bc0e40c494c6 fe3ab195-30ef-4892-ac36-0614b8a974d2 9589bd9d-9f5a-4669-b3da-1876bc93f447 16d6d6b7-4584-4bf6-8df2-fb67bf1ba2fa f9344cac-e9cf-4092-a83f-ca715dc71f61 ef1211db-c46d-4e1b-858a-bd9d87e9bf75 4e2ad997-8b4d-44a2-ac23-cf8447fe2f2b 803a328a-74ef-41c7-b90b-7fa16be58394 6f6ce647-a939-4357-a9c9-4a99abb17be7 16ff853d-ee13-4ddc-8219-dbaa4301ecb8 4a9af134-c48c-4897-93dd-b01abfcb420d a76901ab-61f0-43d9-bcb5-65d99b6b9ed4 c358d8b3-85aa-4c2d-9236-58086ba83e6f ae774263-5d27-46d8-abf6-00f3123e02ce b54cd001-5efc-43f0-b374-2f9f0c0667e5 03ba6c1c-a3bf-4c7e-9ffe-39ad52081a95 4b2a0e7f-dfc5-455f-90fc-d6b1bede2b44 676c908b-f051-431a-a8e9-88321215310d 2683b616-615d-4288-8271-e5cca11b60bb c95b7966-9553-4505-8af5-dc8c0c839a92 4d752530-81db-41ab-8cc7-0524a9636bd0 ecf58d3f-3e11-45c7-8983-4a7a6a4cba81 5852050a-0f20-4f83-86b8-84794bbade1b 5ad5be3f-c154-4500-8ed8-2991b4fcdf15 2fdc6e3b-7073-41ce-b131-456dc55587be 8509b8f1-8b43-4551-b6bb-1cc693797565 0a18f0aa-c555-4a9a-a922-ef217f688dcb 069182f4-3ac1-48e0-9c47-2d0866d05870 cb9fc1c5-cafc-4381-a37c-c7d26fa6070f 1fb67f16-ccba-4b1c-b9b4-3757ca3eaa4b 088d5e53-b970-4b86-9570-e10a0eea0930 f8bfb793-d280-4a56-8122-c4401a296437 c47c0070-4960-4efa-9b51-fd2cfb80619e 70d87cb8-4793-4699-b589-0e3592d1aeb1 3d4aad09-2401-49fc-9298-1a8193e0d9c9 29ca50c3-fbf5-44e0-9648-0c2ba5281f17 f3cb8098-fd4f-41f6-9f71-9ae86ddc83af 6e7b2bbe-b011-4294-b19c-ffe147af33cf 30625b17-d515-4897-8bc0-d201c6d83c0a 8bcf77b4-7989-43d2-898a-f0f464a8c2e6 9a1f3347-80b7-4cae-94b7-d9ae25fe8e49 d6648630-a56c-4153-9b7d-01cdbfd4e13e 96062ca6-18e0-4fc4-8874-de36287043cf f9e92408-d5cf-4977-b9d1-87e0bc278428 465ee424-f8c2-467e-b071-d352edec4359 ea8e518d-e138-4178-8d3e-8dbc7491e401 491ebf4d-e6ec-4410-855c-ccbe5fbc2c61 5131e8a0-e97e-43e8-a73c-e8e6deca2b60 6bfd39d4-7454-4927-acaf-f069a989e905 edf7220e-95d4-4a2f-94ed-8eb8cd0aed57 e06ad350-e6be-4464-b41b-e105903c65ee 6726bb00-4c17-4804-b0f3-7ae1f7519142 dfbec940-9295-49f9-b325-9164a4754331 88463ebb-78a0-4fa3-8f78-e3dc1f479ab9 865943ee-3e7d-4a6f-ac26-ab6bf6512a25 f60d5bce-a181-44e6-a017-933054dde567 0f928cc6-dc72-4f7a-973d-4cd2bad37739 c44ae056-a941-4ae0-821e-38e7760b2244 7dc2ed3a-d65c-4fdd-a62a-53aa10fba81e 3c10047b-869f-4c78-a382-8683820afca5 ffdad98b-0cb6-48a7-b0b9-e84def88ac5e aa0fb4c8-0625-473d-a7ed-5b8771f02b27 f923c684-1f02-4528-adfa-87f98e10d9f0 3b50877e-980f-4e0e-b15d-730a6245fc7d 65ca5a6a-b9b3-41f5-8da8-e7d32a5580e9 7b608f8b-c197-4b3b-ab1d-29e55e42c07d 55dffe2d-bb77-46e6-a830-741dfc38f496 39d6a0f0-c29d-4c2c-9fcc-8ce79d25f268 ad527015-e9d4-4d20-91e5-b68f1e931973 6a845eb3-8edb-4414-9853-4d96efa55b0e cf05d565-2a62-4398-9014-e217fee8e60d 5e8debe4-10ad-4532-a07d-cf913879614c f9c2ce35-0741-409c-974e-404f39d4d154 9553b71d-276b-4dd1-9ab0-7e575d4e2490 de353d8b-c24c-41ba-83be-210299dde980 708f18ca-2330-4655-81b8-97159d8ee198 17a344bf-15e7-40ab-aa10-0dda7f2f9a45 76663de4-56b8-4bad-a9b0-6830b6487f12 61185aa5-6ba9-4d2e-9ad2-c750d4e4cd74 473f0551-0ade-48ed-98e8-2193ffd08380 b4c17ca2-3699-4b2b-870a-d193de642e77 d3ac6e3e-aaed-4d01-9922-2422da099126 2aa1b0dd-fb1e-433b-8c2d-a0f3b2542ca0 7614d381-921a-410d-888d-1a7a576b3792 10456b87-fcbc-4ed0-8be4-f2f813e5e390 19098cf7-e495-4255-9528-cb5eb725901e c77e2198-6f5e-4065-8048-1176bcfa5984 cd87e5ad-cf83-4f29-81f8-811beb6cc03d fdcdc98c-c032-477a-992c-cf9aa342f0d1 9b38e778-716f-4584-aa01-8b70069cf53c f7b1a2f8-0175-42ab-8148-c7841cd0770e 08de9441-7c68-4647-bf97-8b4e197ee361 46edfbb2-a83c-4f32-93a1-c42513a72461 3629a3da-238e-4426-8f75-80c893b25c67 4a97a806-475a-478f-906a-b3b734720291 052a68f4-b679-4980-b125-b55497ded2c7 2480c610-eaf5-430f-8d54-6519d3b92001 8f7bdf98-b09c-4e91-ab7d-8182367be6e7 5d50aaa4-4c16-48ae-bd9a-31f44233f0bb 27705ba1-0e32-4bd9-8291-58d2e67f0954 e9d20567-5dc9-4bb7-ac72-1a0afd9e6c09 60159cd3-171d-4b2c-b866-aa39931c211f 551c3923-4109-428d-8c47-1f6f5eff14a6 0b2172b7-57e3-4aac-8c75-d567329aeb41 80c1a8f5-b703-4bd1-a6c9-b4b40bfdc70f 30a2f6e3-32e6-46bf-95e9-f1203f55ed85 540e0253-2af6-46e5-91cd-283a92fbe6e5 0b9bfafb-e2b5-4e2c-a80e-ae6a233f7035 eda95496-179e-4298-aacb-06f91cdf69c5 878129cd-09e9-4ab0-8a0a-25201473cf14 202f0d4a-a358-4b4c-b50a-fe167a53506f 3692b3a5-b3f7-42b7-9558-dbbcd7dba8ce 91915626-794c-4683-893d-cacd59fcd5b3 de8e697f-6071-495e-8ea0-9d7977e5f116 5866e298-2a3e-4a8a-86e7-e0b7ffb28d73 55274d6e-5745-407a-90f7-93494df03849 0c6b2c63-067b-4553-bae1-9002c0772253 358390e7-f90b-493d-a1d8-5ab404f73d37 c0683673-f43d-49a1-8891-0b2d72f20e67 0784259c-4e83-4224-97e2-48a3200ba883 33df5824-2988-4385-a855-41ac3407f8e2 5bb32608-2e47-4600-afa5-911e156dd56e 2818c931-f9fe-4062-a7e2-4838c7d699a5 f4bd6c68-f0fe-4fe3-8a54-3808225f65f0 d930db84-fd2a-4bd0-a147-fde2812cbc69 5da086ba-9f8b-4685-8cd2-bbb6deefa2db 5c033b85-9b1b-4574-9c0f-22ea047d24a3 a5c758c5-77ca-4cd8-aa86-47908b9455a0 458e74b0-cbc0-433a-a0b1-bccb689f3931 e90ccb43-2890-423d-9e9c-84c548e3d37d ffd380ea-a061-4e35-b5ae-5e7240650410 7622064b-4ee9-45f8-942a-db6e19f3b9c9 111ffdfd-0a09-4ccc-bb56-57262dca9dfe acae94c8-f823-49fc-a897-6e56893d67e5 08e97373-0157-428f-9eea-beac81c560bb 373b2a9b-62ad-4846-adbf-cfc0c40374c3 0bf67b69-d83c-43fe-92c9-7de416adee54 56b007c8-b1ab-4d37-8c49-873e953548f0 4e474c94-4175-4eeb-9d06-b83c00d0e436 c8ade00f-afff-4555-97ce-fd876733d9bf 1cfb4985-1cc9-4061-9231-784f218dc106 d891f408-7793-41a7-815c-cc0130e4fd85 a7251690-3587-433c-8eca-ac568f85e381 8aaa99fd-f628-4272-aa70-c81d11f1ddd9 8f9160ab-9d52-4654-ace5-0c3143fc8c8d f78e544a-56c1-4053-b659-3c77378aba74 440c9a98-0dc1-4295-94be-8d02bdfdc36d bef0210f-e3c7-40e3-8c96-439ca5f86760 ecfe3328-5416-40de-b7e6-1ff42744c9f6 b1dc6615-5eb4-48ec-a7f0-93e4ac07a2ce 9e2d104f-da5d-442e-b297-fbf1a4ba124d b85113d2-0997-464f-96b6-6557062522ac d0fa960f-83f5-43aa-baa9-239251c4b9d9 be0d8ae7-beb1-43ff-a796-60c5b5663c74 db33d731-d91c-4c84-908f-bf459b542020 2d84f8ab-9431-4e56-ab75-b6665ea82d95 0b3612d0-b115-41f2-bb3f-6f6938da5818 5ac4e94e-8869-481f-9f1b-2f47614cd2c7 a5779e29-7afb-4a12-aefd-096d1b8afccd 03e0157e-39f4-452e-bed1-36923e8219b8 3caee3dc-006e-46b5-a23d-9bd4def46021 9277e3ce-3278-4bd2-96cf-bd27325c85e1 4a74e646-d3a6-4742-80fd-53506a86ff7f 1fb3f8f8-7fde-40c7-8180-a9757624f36f 1b682532-099a-4ac7-8a6f-2ffd1bd87d4d 026384b4-a72e-49ef-aab4-3938989efd92 d0532f85-795c-4be0-9ab0-df26a222a91d 4e542cee-bbf1-4b20-9ed5-075688bb10cc d1129e40-29f2-4d03-896b-e9001b9ae728 e15f7efa-a54b-464f-b526-99082872da9c 1b0cd0a8-24db-4910-b941-f1cde7ef527f e6aa1a7d-ed14-4165-aaed-8343708fad61 7b39d0cc-f45c-47c6-9545-74a1b06d9496 f7295c8d-2e57-4849-a986-3eea29369cb1 63bf3a11-7cd5-4b6a-ba5a-a2ef02fe3204 7843152b-a2e9-4fe6-b8f4-49829b1a75b1 c7b5477e-bd75-412d-8e94-a00c1afa74e3 615f8699-8abf-4ccd-8516-de7d5dfddc1d 48d196b3-59f2-44f0-9321-df0f4ecf7597 e5816edb-ac6e-491a-9770-f898a0dfbeb4 4b692e8a-b45d-4062-9607-3ac5017e0379 9cecaf85-12f1-486e-bb45-d70a3af7a88e 27273b8c-e527-4a98-8682-29879665a2c1 e3e738ad-9bfb-4f1f-a765-110546e2a919 389baf6c-2a55-4bc8-8012-6e7e13da4542 56b06af1-14bf-4c9d-91e7-e9588e4aa386 bbe16510-2ed8-4de5-b553-aa8a795f073e 9a8dfc0b-f4c5-4ee4-b2bc-0a24a284375d abe4dc40-239d-4e70-9e83-aabdfc76ade4 cbd59e14-1ed0-4377-9958-4b096e169511 53090e65-7eae-4156-889f-ec1d85cb4aa3 4c46d075-bd85-4ef7-8a16-caaf2df14824 4538e1fb-b654-453b-8485-b2786f1d58e7 e9aefb13-dd84-4c16-892c-b25716c64293 9019b51a-5ce8-4bac-9c03-2ab71cab6a98 74bf2424-b4c7-4325-bc65-7a7502c381ea 1659bae9-ccf1-4177-a908-616c07c3492e 80661236-925a-4652-94a3-755b7804f9d0 18122fdf-0d93-4a94-a95f-2d5ff50e7684 3b1eb387-2c68-4292-bec0-50fe8706c8f6 5f9fbb53-d620-41ea-8bf8-6ab9c5af7055 39b8c0aa-9a8f-4973-a269-95d263594bac 15f0a4bb-e568-4a19-8890-73d7137c6a27 04c9eb7b-e491-4842-a396-d00663eb32fa 023c649c-35ab-41d5-aa98-812f9c9d0361 57090be6-a00d-4c1b-9f0d-65ca069b4d41 1a7888eb-3430-4886-bbce-965614ad0af7 1af85f25-7e8d-492c-8c52-0330b02f5809 0a7d0700-6689-4f5b-9d0b-ddf21155deb7 83282cd8-b989-40ec-85f2-d7c594933940 24fd53c2-c6c5-445c-9950-1c38efd50633 72b60e30-378f-4b23-bb9e-3b8f7fc078aa 210cd377-e7ef-4401-8005-dc29feebf53e 85a45a08-97ab-4e29-b910-151b4a99b9ac 7eb6277a-59d0-47dc-98b9-c52eacd71c0a 83bd33c4-2b23-48cd-8248-5e6c4e8cac52 46da9ae8-d700-4066-b277-a4976d80562a 854fcfb8-6809-491c-b888-735bbfa22b44 16707f6d-9889-425a-a635-4bfdcaface2f 900d89f1-c7c0-4306-901d-9f35290feb3f 14e80231-a0fc-4519-b790-d36f61438c44 200a21d8-494e-4bd6-8a1b-03afff2205da 218f04ef-782c-4d2b-88ad-a8a085a3cb9c c4dc7a00-1341-49c0-aca3-13d685c4d823 c67a48fe-c559-4f7c-90ec-60fdceeaeb33 ae37dc03-a9cf-48b4-a36b-21537ddc912a 44b96da3-e100-4814-8c26-90dd38ebd00b c908569b-7610-47b0-b326-29aeede87fab 2250adb5-d336-4fca-963f-aa8fb9a0c3de df312fb5-d25e-4717-a975-52c25785bfb2 4c2e77fe-f3c4-4d58-bb20-5423d6229bf7 595845a8-e90f-4829-b969-af85d2af5466 1149ee35-d9f2-45dd-891b-af8bb50d6bf7 baa6512d-1640-4fcc-92de-190e2ade794c e8657946-8e1b-44c9-8745-05423c562a72 185a9ed1-b773-45f7-9a8e-ae30b3f7833a c4f6e4b9-7d20-4d39-805e-55a597c6dd66 020ffac2-f85e-40c4-bb42-2ac997ddf504 3c3ab141-ca03-4ad3-b2cb-25dff91d30ec 008faa48-d777-4de6-a5c2-9815042c7647 770f7230-a0ae-4639-b067-6c56f2e860bd 55660b26-54dc-49aa-8e65-250b2dbb35ae 2c3df960-f3a7-44b3-aef3-1159d6981bce 400f5fbb-ace7-4ac6-98c9-243ce6eae39e 996921bf-5e42-46c3-933f-8bd61b625591 3b0186c7-8cce-497e-9929-bf2b9aa1a1fb e23a34ba-b335-4a84-9538-d5c83c9aea30 681ec284-9ddf-4ef2-94f7-ce04209e174e 893f374f-49f6-496b-aa54-d914b43d3a54 708289cb-8117-4291-9e93-7d64fe78a74f 01cbe539-3b6f-4243-8446-9bf81703d5fc 70eb37f4-b197-4125-b74c-8a2151312bd6 c6945d7e-42ee-49d7-9f2e-730932a03cd0 57f62eb7-dc36-47d7-b0c9-c29d40e97460 b64a65ef-ed63-404b-93c2-b501da879dcb f9e3b3f3-83c8-4f4d-a861-7a6d31003035 743a896b-dc6b-4072-ab47-e2e2be5b1c2b 59cffa65-092f-47b8-919c-386c20b3076a 80c51e5b-da50-4757-bdd8-27c1bacec609 fb9d1585-0645-4dfd-9e53-5940ae245166 24066c03-323a-41d5-9842-aa1fb37e5362 af775a77-ed55-4d71-a385-899fbba2135f 90bf346e-f010-471b-ba52-cdbb89e244d2 9ae4acc5-c61b-41f0-97a9-696b39f7aca1 61a1c199-9909-431d-b06f-85f2e0b6791d d93d7a1d-0f7d-4972-985c-045db61ccdcc 0ba30c0b-eb43-4362-adcb-2f755d170376 67e8177f-f836-453d-97f3-2dba96b77791 dd48b034-2d01-49dc-ac7b-b61f1d402a71 306cf760-46ba-41cd-b8e0-e2c6e2003b91 39b1ca46-00a8-43b1-8281-b89c0efad3ca a9a12b53-23ba-4f2c-8f9c-067de770a857 7bb8d549-fc37-4f9b-9fa3-4040f95b41c1 1637452e-2580-4af0-a1e1-3eaf68012d4f 18ce912b-beaf-44d9-8ebd-7d22b970a553 dd6b781e-aa67-4834-adb2-ba4ba09b7a99 b88da8d4-4dc9-4f6c-9eb6-530d44c050d4 bf027124-99bb-4c8a-9aa4-ae816a4bd98c fa3f2670-7ef6-4cd2-86be-74d137c62bcd 6ec02871-c4bb-4982-a936-68e2ee3be77c 35d62018-4ce6-45f9-bd5b-7415625aea89 82ee7e7e-d4f8-4e01-9ed8-43a265b30511 068fd14f-1a82-4a36-add7-4b60c905d3f7 b72f3bda-729d-41fc-9ffa-8687339747d5 6774f63e-4e68-48c9-a585-59bde7a6e9c3 7876c706-9b9d-40dc-a4d7-7904587ab608 5a514b34-67bc-44f3-8339-2b22dea735f5 a54f3db7-92af-44e4-9acb-1bde17abd412 31c4b005-265c-47d7-a9c0-3931b5c77145 1ab2cd07-6668-45a6-af1b-215b3375da0f 2f64a219-4e4c-445c-9f63-bb0441480865 590f16f5-43a6-48a2-8c3e-37d2b0b10cdf 65c13162-532c-4022-8c2f-dd7d0d186015 69b7c52f-b4ea-4140-a254-c760068e996e 0a6e7907-ff8a-467c-8923-e3d041773f0d b6af7e85-b2fd-4cae-8162-a635dd2c1913 fd92dfaf-66ff-4e12-b3fc-674f1101c528 c9903da0-a1fa-4bd7-b41f-389bfd2531a3 3f8b81dc-a3ad-4e66-abfb-845391c66785 c8e274fd-7efb-4d71-90df-ce3c1efc624c 1dccf9ce-681a-4ff6-b21d-4355fad07c3f e1eb4545-9dc1-4205-ab2f-2d759b991c0b b6f71fbb-b80f-44ca-9b78-52600c15c7fd c6997ffb-0820-433e-87dd-0ca9ead021c3 ec019ba0-876b-40ed-9b30-28e5d2335c6b 60d65249-d77c-4e45-ac68-f22ec63bab10 78903817-cb0c-4cc1-94f8-31027725d6d9 3d105849-cf04-45a5-85f7-313b08b7e7d4 f042b90f-410a-4c77-87f6-387c8399f3d1 77a895ca-bbea-4855-829d-41a37ef4b6ac 7b1fbe09-66d7-4129-bc1e-9207887e296a c62fb2db-a2c2-4aac-9565-f2f9abfad0e7 c840da5f-2112-4b5e-ac92-bfc7fda75a17 d53589d6-8bca-47d1-bd22-18e60947c3c6 68b070e0-a810-4a05-8fa4-4793f382090c e2d0d5ac-27ff-46d0-b7c4-2350bcfa8f0d 82af8585-554a-4be4-ae33-bd5ce5e6c135 44c052ee-5943-4acd-b9a4-802f29c64930 040fbf64-7fa6-4bf6-a21b-e01ce9130a79 64dd3189-d7be-4b5a-a198-b1126c71be56 bd62ba63-ba73-4cbf-aaaf-b48d7ba896cb 6f1cab45-87c9-4d8b-843c-4aa449792c4b 8248db24-800b-4978-9c2d-95de7b815f4f 94127b41-2dbb-4000-a931-a9d72de16a85 e53a5bf7-80a2-423a-a0fe-84c84e740ce7 eaafab62-ee42-432e-a9b4-300b66bf0aea 92d4ecf1-209c-46df-ad16-52f285fdd9fe 5940dcf3-a531-4bab-b866-a07d97cb89c1 e490e852-8fd9-4ac0-ad9d-7d96e56cf70b 1c5f434f-42ef-443a-99f2-b92bd87c0f33 899695d5-3798-410b-b2ca-223b4d65267b 7805569a-52c2-496e-9b20-7dd98c99679e 5535c68e-6664-41c9-8ed0-cca44db1bd56 8afd0e08-a155-4874-ac42-6bf9bafe345d f7534858-f458-4081-a57f-b4d6dbcf92aa e1a56f17-bcc8-48bd-a378-975e3cfeb320 6a7d7741-f903-4755-8391-a1e610440f08 7b3a5536-52d9-4d03-b927-916424537cef dfb9458b-9651-4bdb-9b2f-cc1ffa2da7be ed107219-0cd6-4eb6-ac44-e1b22de87dcb 9ed47a9a-0efc-4fa6-8ea9-fbda40998ab0 3a97ff33-b4e9-440f-879d-ee6d12949c39 4af32e71-837d-4e73-b9b9-380be9eee665 0a8469e9-e205-4a6b-85a6-cff75cf6da42 bda606d1-8f02-4fec-a199-f370041e34a7 6cf2601e-c496-4f98-a7d9-ca355fc7e066 c3f1b09c-d9d5-40b0-abfd-20d6567e1e7e 9f73424d-7591-4f01-bfc3-eb12e903a30f b4dcc57e-7bed-483f-82db-c5b1184f201c 845306e7-320c-4722-a93c-cdbb4e404167 a62ea73d-f046-4cc5-94e9-043a5af6181b 63929b78-dc2c-4d00-800c-826e8ed04386 4344090b-a631-4a76-a310-cfabadcfe7a8 f9d2c4a7-c84d-4ac5-82a1-99e6e3689fb9 05a1bf65-55c9-4d96-8f8f-6c51619eb2fa fa02ae07-045f-4538-8df4-f8b24e9c0153 5770592b-c2e0-4560-9177-20d42f647815 b053cee9-d910-4e7f-bbb1-d216e669fc3f 02427cde-0199-4e54-8bd1-5afcbc5005cc 25d6806b-9578-45f7-8a4e-997b9b22bdff 7fa637d9-adc0-4964-bce2-3a2b0bcc4941 ef3f3e07-4faa-49e4-959d-a1488bf3d386 b549cdd1-f777-4b15-b05e-49917fefef97 9ee81e7d-2a3b-415f-b54e-fe2541c52483 8bde0f6c-c0f7-4b3a-b970-38c0963f241d 09d2c213-6001-4d31-9cc8-e966a40e6ad5 f996f79e-67a5-4c79-a88f-d08deacb3870 06e72f89-3a55-45a8-ab15-232d94aa5d97 c21d4609-26e0-49eb-929f-3e9993fa43be cbbbd7db-4fe4-41b7-aa5b-3b77bd69a92e a61398a9-251e-440c-9966-872afd9087b0 96517c7b-4538-4906-adf1-c8dbb81dd1e8 fd8cb51a-1223-4a3e-9e68-c94a16530cb8 7d295a26-14b2-433b-8ec9-dbbc0462e4c3 14ccb8e8-4386-4032-ad77-7be39ac75a02 9dd5fe77-359a-42d3-a94b-4a6237ed3268 b99bc049-6cac-4626-82d1-2c31df2fbc53 bc839ea3-3c13-4bf8-aadf-63ce8d404455 d401c661-5635-4225-8f91-b60ea5437341 720109a8-fd15-4410-9d6a-8cfe9284ffca 8eb7e069-6d25-47fd-a64e-f7be2243861e 52d23317-1f49-4bf5-826e-e591a3002c32 c308bdbf-7d56-4512-87ca-08e94b0cfc8e 3a6e3508-a8bc-405e-97bf-4b5904d8baa7 38812941-f2d7-40a1-9871-b6436d2d0a43 3850613f-c664-4f6a-97fe-6afd733d235f 6abf1ff2-6dec-4e0c-b804-95f8a8520001 44347201-00c5-4419-b932-a583c7892837 c314c2df-1c92-4388-bdee-252d70af3c9d cda0f62c-8d7e-4574-a638-2c19dd846e96 300f06d0-c9ed-4f39-b2a0-c7d8c291ddea c9a3bc9d-8e96-4325-9c50-d97da7451252 136f070d-1575-486b-a6c2-94bf7c306e27 eaad1e94-9058-4279-aa2b-99214e281c6d e3d8f6dd-9835-4fcb-b795-8fef15a11b9a e462a90e-d233-4684-8b58-3827d91712f8 63ddb9e5-237a-43b1-9bf9-5a4921dd40d3 d12797ec-1c19-4278-8b8f-ad2cdd7e5f4f d98e2fe0-7c2f-4135-8805-bdc7a961cd9a 13486602-e9c9-4cc1-a7af-432932b3e21f 3ea24f44-7fc6-41b9-90d7-ca8ea56b7d8f fb884fb6-4b8f-4515-a00b-92c5935c6bee d4061338-a5eb-4353-ad6a-99cd2cfa8701 fbb7dbdc-9757-40d3-b318-25b075cfb397 ec8604cc-ef93-4f68-a6ca-899305a4107a 3b43d8ea-dfa4-407e-823c-6b8032afcaaa b04ed141-000e-4eed-ae12-dc06738f9225 3be6d0cc-3525-4c70-be71-a570296b9980 891ae0fa-ecd6-41b7-a77a-d2271d5dfef8 39944ae4-c8a2-4b37-b7aa-74f9649cc704 abb4dfae-8916-4169-9652-ac4bbef81f05 fbcb5b6b-c5af-454c-8151-29d0e7444e64 dd10cbf4-8ce8-466b-8a89-1772462aa268 8736bafc-ba70-49fb-926f-46643aec6542 08d1487f-0ce9-4bac-8f2b-0b54ff6c94ab d5ed40ec-1b3d-4f39-835a-85ef395be13b 7b7039fd-687b-4810-93b9-633926a734b3 797df233-4f71-443f-8abd-32ecc53139ee 42a2f02a-90a5-473c-953d-e4ab4714207c 59d28d22-cd7f-4f45-9785-ffd30f5735d5 1ee560e5-174f-46c8-ba81-b1fcb762718a 54ad96c5-7231-4c2c-abde-8644bf55c04b 28ae7bb1-3a62-4de2-9a6e-78f316b2ff68 8744daf9-a678-4291-8d70-5351ac5395d4 9e9ef35b-df60-4479-8c64-79d869bcc3b4 2746f48e-d5b5-49af-8adb-eb5f50b793b0 d758d56c-324e-43b1-8a93-971c66ec8cb0 7a0e1f6f-15f0-41c8-a9a3-acdda7a9ab3e 7f692235-655c-4f02-97bd-9b250a0c9762 c156939e-6f7a-4344-a876-d0bf11d15a8f 6cee1c10-3e28-4e47-a51c-54b4dda775d6 a33bee7a-75b8-4dbc-90bf-ddfc361bf45a a4e0a166-05a6-40e2-aae1-436e41d3e2d4 039e2520-8bb1-485b-b1d9-83dba7307ce4 6d06782b-469f-45ee-b522-ab28429498c5 fc3218af-ddc5-4755-905b-796cc2eaff5e 7c374bb4-363b-4b09-bb00-096e4891e823 003873cc-732b-4879-815e-0c19c6e7086e a7752cc9-63f0-4fd9-8635-897f3427ab1e 857c4a78-d9d8-4baf-b014-27645f8db151 1597fe60-c4d9-456c-b35e-bb4d86e4ad2d ff0f94d1-d33a-4782-be19-dee5a6641432 c2300364-f8ac-4390-8180-c5c3c8c7a9fe 6378b24e-9125-44dc-bec2-7b89ba20d155 576459bb-8a18-4abd-af77-88c8c94b3644 37f48522-170e-4f52-85fa-71a85763903e a79d9181-f507-4483-83af-7e93e30124dd 19e09632-38d1-4ab7-9025-29fc2da3c075 d93d5a26-856f-43c5-80fd-b1310c35b18e 3919bcf7-b658-4000-a86d-74e65e9a9fcf b886dbf0-9ce2-4a62-b859-1cb6ef4eff19 95436012-7af2-4df5-8c33-a9245fb7b599 fb61000a-7fad-447f-9c53-b19aff3ab2c5 0e836cec-c5bf-4e20-8034-137296454871 8623d9c4-2137-41e3-ac0e-04ed8aba3e06 86689fe0-319b-48e4-9873-301d697d469f ecb876fb-6d0e-43e0-a243-a3b7c49ff1d0 e50b79b2-50f9-4f77-add0-bbe7999da3cf 25a1dd9f-8847-4584-b709-d29de495cce6 07f1faf5-75b5-4d33-95e4-ed30dcea25d9 b0e30a47-3e58-4ce1-84ae-4bc39e1f833e 02c07b40-754b-464a-999c-b9ea3daae976 b3dd2450-a2df-4599-a9dc-4133ccb49fb2 ac9dab3b-7890-47dd-b0e6-07925cd75181 2dec6ec8-7018-4958-9fc6-8ae2d389bdb6 95029043-ec6c-4910-8b08-e5c3ccf49da9 d9111962-5739-4e09-ab0a-6f8e3d94847f 058bf699-b393-47ac-8b8c-98c03060da66 dfa2ba6f-0747-4239-9900-e27be496718d b0068c08-045c-464e-9df3-f86e66987bd2 c72d2a43-d35c-4ec2-8b99-ba25853c4089 1258065f-d967-46a9-994a-68092f1232b7 ab089f40-13d7-4bbd-be3c-a2cc49254799 459a860a-8d9e-4f77-96ae-48ff994af5e0 d7cb4fc5-2532-4186-9c9b-315483f8b3ee 60bb24be-ea0f-45c8-96e0-5a54c15546ff 3cfba63d-94ff-41b1-a171-cc2728389c75 e5406272-f5a0-4fc1-bcab-2b0d2aad416a a76cd6fe-024e-4201-9929-fe681c87dbc3 e0b472d2-686d-4df6-af08-82cf71e82703 ee8a4bfe-51a0-4520-95e1-788eb6784b14 d800db3f-e727-4684-8dc5-75f2ac90b3da 25024728-b8ab-4b2d-a4c5-f46b5c37c494 16cfdae0-387a-42b3-acd0-f5f9f5e06380 faeee7fd-c0c9-405f-88eb-bb6401d86e17 e24998a8-0b1d-4c2a-8a74-8fc55ebe3893 02f6c21b-c5cb-4d20-ac3c-e6ce06340289 254cdd2a-a390-4f4b-95e9-747f983a86c1 9a9fc314-c4a8-46f7-b1b2-a7b3fa3ddd94 5ba6c923-934d-4fc8-b04d-da7ca64e8689 fefe2698-1278-4782-a4cf-b3256035c45d 5ef3f48c-1d95-40b8-ae2d-e7a4c09dd2fa 74f1a653-5dae-40a5-9678-ef003fd4bd41 d3cdd4f4-1799-4898-8f72-f4c1bce0a0f1 0648d7b9-a472-4e58-a278-f358089b2447 a6ff6dec-fc6a-4d22-8da6-dd02b9cb79bd 07ca8636-5ae5-486f-bb56-48da9dd717cc 28e82dce-d4fc-47cc-adf3-47241d79e3a9 73fcb8f1-7272-4004-8773-70017d00b045 4f15cc9f-ae79-4969-b974-eed5e54801f4 b0352e3c-d6a0-4f40-9e8a-a5b8056daac8 5e82048d-cf7d-4fdf-a175-202eac8e04fc 52fb10d2-f377-4421-bc28-8d5980f086e5 a464d758-f708-4945-a762-e71a1c714907 7de91257-ee86-4baa-bc36-f62c2af7742f 1310aec4-a564-4923-b740-66ed0ad33051 1f64be39-ad88-45bc-9d08-f4ace548dbd8 d6625f89-005b-45d8-a999-0c3a8b38df3e 985be859-b0b3-4135-b55f-5797ee326478 cce1529a-dd08-4497-a663-cc619d15f8cb 8ed3a94b-1724-49a5-b9fc-2a92c69446af 0d8ea9c4-fbf2-4b10-89b4-826cfa9ea4fc 9828258c-1689-4456-8fb5-78559e1cd683 3d0313f0-aa30-4714-8db5-9132496fc502 f13764e1-8d2a-46b5-9fe1-556b8bb1ac03 8b8022a5-a4aa-4717-9768-2d96799a1b1c facc78c9-2b82-41e8-9ecd-d055edb6b3fd 44542270-e613-4e00-bc1b-96f85e903449 6a36c4ff-4fad-4845-b7d5-fe33531dd9e3 2e5ba188-b086-42d5-88e3-c7663c5bdd53 5b0f0bc1-71da-4ec8-a081-624e1e47a4d6 8195ab88-f78a-4749-9997-934f29744b2f 4e1b790a-f4f1-4a19-b8cd-e34c2f88ae94 137f5e93-8728-4d1d-8b0b-25a6590cd48c 93a1671b-1c0c-410b-b5da-f35012107ce7 e3c6f996-5895-4d32-aa9f-2a1e86150679 fbd5e430-7755-4a4f-b5c6-42c854d1fa57 b74f651b-5ab9-4dd6-b91a-57e154d568ed 4540c133-5581-48bf-a5ea-6875bc0eaba7 9a83adcd-5f6e-4d97-bd99-46fd6796aba4 a0fc0fd0-8910-449b-867f-78082bdbd5cd 816ebd36-27b2-4d07-bd5a-8b7de6244d4d 98bdd795-0fde-437c-9b28-d137cedfd1fd 94deb61b-5d86-4842-8e73-bb50825eb5bb 29bf4be3-036d-435e-a62d-902ed40050b9 5366bfdd-665d-43f9-8a7a-28399072fd73 15cce801-5570-4bac-b4d2-bb10db2be51d 94c0f1ff-383b-4eb4-9117-4f019af99707 4e3a82fe-cac7-4e53-a4c7-c7b0a75d2766 8a539da1-d4dc-40da-b769-1d8d3ca6e1c0 471d8468-2d05-4271-b17d-2b99c30720ac 84678fc9-20a9-46c0-b8c0-40c67b4b57ac 8a5b14fc-ff75-478a-b318-ce68ad611449 e630d0d2-27f2-49e5-8590-c0923122f83a 51b785bd-0986-4b38-a15c-5e225567faeb a2bfe271-e12b-46eb-935e-855a3b970bc7 1167a300-00fc-4fad-b3a7-2c597cbcfa01 5e975e9c-da75-4175-8042-d5cf50b5d1a4 bbbecfe6-ac12-4eef-8e07-12e57465cecc 1ec607ed-2e40-4685-9349-d2743fb72265 8070de5f-21fc-4ccf-ac3c-fdc745b2b6d9 a8af379c-dc23-466d-9919-c74a0d2af54f 476423f2-6c20-4226-bba1-0bc90ab07afe 9bff9a33-99ab-4321-9533-5214acfa8aa2 1c1173d4-92be-44a7-91e6-649b6a55198f 693dd17c-301a-4938-8174-143c956fb303 23212784-a495-4617-af1b-2f49cecf4e01 338c27b3-eba9-477e-a1a2-a5271e682778 af0135e8-d189-46ba-8d3c-91e323e870bb 895a8903-b7b1-4e79-bc6a-d04826be9ab4 27827a77-0ac2-4414-aec4-c2e68829f73b e42e2236-fd6c-4392-bcf0-5759b5a79b17 84dcb5db-ba33-45b7-ad2f-37b44500ce30 c00690a1-6998-4a09-aa40-b40723dd10e7 fdf8b2ea-49f9-4cb8-8440-f8a21d3d858c 56fb9141-b70f-4642-859a-32d7bea16cd5 de31f706-8361-46ba-8f2c-dc6be43db575 6a74fc2f-b0bb-447d-bc1e-f7dd7bb109dd 978c56b3-d10c-42d8-be3f-9f78aab80bbf 8ffac5a9-cb05-470c-82e9-727fedf0ea63 8e5318c1-6d71-4535-ad9a-c180516a2140 32615a15-9608-408b-8dc9-d7c54d78bdc8 841467a7-d5cc-4199-9fe8-1273b40b05d3 dfe35247-e1e0-44bf-90e4-25ecfa6ac705 b716aefd-0b06-452a-be77-5bec6c1259a8 c58a4450-852b-4523-aec5-8ac34e66e65b 73ec4a7f-7f79-43a6-b68a-623b026e24e1 73018988-8de5-4a0b-a257-800a5357ad31 bda03a77-e42c-4f1a-9143-f199814f8748 5662c44a-8bf6-4287-b022-ebbd37ac23b0 283ad856-1834-407d-a816-11391e5fdf37 c40337eb-20cd-4dd2-85fb-8f851fddbb9a b0571539-68b9-4c5b-90bc-b86c619d50e2 e52bf20e-9972-43e1-aa99-adea09e6b636 68a0c0fe-201f-4b04-9e93-f175fdd97665 37ff618c-9198-42f0-9a95-2ce0ab1812c4 826bf42e-d3e7-4e86-9d0c-adadc2df2394 c67f1b6e-1426-475e-abee-3a1bc4799ac8 65319a52-1e48-4509-b41a-61f445bdf05c 410d81a6-70f7-4040-8534-8a55bd664023 e119515b-4f86-4052-a107-ff00287b856f 50568c0e-b6e6-4ac9-9eae-2f5fbaa805c6 8d0e462a-592d-497c-94e1-e4cd2e438656 2d71eb3c-8fed-46a1-8c4d-0868ba1bc466 e1ac60c9-1977-4b97-ae5f-92858bde0c57 8407b4af-122b-4919-9770-1aca14de5bf0 774a893a-0005-4d00-9d86-90fb30eb41f3 b8448d1b-ce76-41b9-834a-0d1da0da0f6e 9a2d1586-6053-42c2-8754-9dfd42d8472d 522b0186-f9b6-4702-a4f9-69c9a41da388 b3b480f0-76a7-4298-9ec7-fca4533cd5ca 6ad72bd2-b7a8-4844-93b5-9d861ff205bd 4d9d94ad-6de6-444a-a89b-fd3cb8f13940 8231aaec-a73e-4af0-8e14-290a1208abea 0ccdc3f8-b871-47ac-af24-cfce7b2f0f78 61aec660-454a-408c-ac19-0d79c5233db1 4c385b74-dd89-4811-a8af-25f8c66e587b 880080e2-5a04-4596-a95c-3dce713be6ba 09fb2305-6edc-40a8-9517-27fb00940f2c 14b346a7-4f6e-4a7c-9101-2905ed198729 f1ae760a-d1e5-4375-a036-2e7abb696392 ff1d42e6-b8f2-48dc-850f-52dd9e37361a 1508aac1-7016-4baa-b012-2b360c0f3a18 2bf96a5c-f752-4935-b1e4-18ab9ff084c6 ff53c7cc-0c8c-41f6-8955-f62e4617367a aff7ce0f-22d0-423f-a719-953acf004085 80b6c64d-440a-41ce-837d-c9995a774c23 375b3f30-528a-4be3-a59b-521a24a19bd5 23f9bf87-9524-4408-a2d4-0fee86f0fd1f fa64184e-8456-4566-8889-122824fc6265 5ca9c643-a6d2-4e3f-ae11-c61b76d4e42e a9749d62-6f36-43e0-b267-474675281b72 a1ff72c9-11c8-4223-8c3d-39491e3a3fdc 88cb8df4-7c61-49fb-ac00-8e3f8925a5c1 bcc18948-db92-4532-894f-72112f8c8218 2c28e99c-5de3-47d5-a0fc-3b5d02bfacc1 fc1c471c-7912-460b-8853-34402c646743 9c598522-eba5-4007-908c-b086693dadf1 fe356776-a66e-4e30-aa4a-0868836edbd1 03d60412-6729-472c-9d06-732ea90534e6 f10edaa2-4e30-4188-ad05-7943f2490b3c 4013252a-c441-408d-b6e8-0234500fbd20 963bb579-dfba-46a7-b5ba-9ca6e2737461 adf41fdc-495b-4892-9c9c-683b5c050370 78b26cf4-6e35-4c17-a266-4cf7b119e29c 8ee13d7f-39d3-4893-9ced-cb64a3ebf6b2 56fc57a0-676e-469b-bc86-c91a828a1961 3a6a4b24-6b16-412a-967d-d345edfdd172 81c1d439-b9b8-4ff6-bcb9-352fb16f3527 28a6ef3b-1a2b-4700-b346-a20ad996ff90 ec02f880-76a5-4c63-b604-ae6eaa40fe4b 533e46d3-abd0-45dd-bafb-f9fbce46402b 2f11dbbc-d225-432c-8fba-6011ac68cd49 d2196ee3-839f-4442-a9da-6a4b918b11eb cd4f2b17-e55b-4de5-b6f7-e46e583331a2 fac3ccf3-5a21-412a-b92b-1e1259c1663b 6de1a381-0128-4f90-a34d-c25c5f231451 1ebc3e9c-b323-446c-9003-a28aec7b18a3 0e9aab80-4daa-47c7-b865-74e65d0b066f a400c9c0-4dd3-4f6b-a6ce-1a592828d8e1 650f7a0c-52cc-4d38-81b3-763b4692d30c c2822735-18e9-4299-86f3-fc5d75403cb4 2fdfbf04-e71a-48ab-b9ae-6f61bdd213b3 0d67d976-1ed2-4f2c-a5ee-0fe297e946f7 efee213b-e27d-4158-aaeb-943bb0cf4406 0f639f01-a976-4e54-8e06-0b9867910532 914e88cb-89cf-4a7a-ad6d-02fc50adfd6f 59c54905-1448-4553-a578-be089a464f78 55c2ef34-5d4c-4016-99e4-fec4c75dce03 952a8849-f482-42ce-8b12-72c6e574f514 83bd5762-f8aa-4d53-b3a9-6ed9653cf5ad 032f5e41-19de-47bb-a4ee-c45d77db4fc6 b77268a7-3ca2-4f87-ab43-1f2f7d0aa898 fb392d41-c2ec-4e3a-8b41-8d6c82b0dacc 8c9392d3-eada-48de-8e1c-f6532a644f28 defb756f-ed7f-44ae-b779-02d3f3188b1b 1eef52c6-c8ce-461b-8906-253c82afbf91 1dc6f0f3-7a7e-48fa-b47e-5a5700482980 21a354d7-d941-497b-bb48-e5597f3498ff 6a5c8076-02bf-4e11-8f68-82a95672a0e7 763f90a6-77b8-4c70-9983-127a627dc9e7 46395aa2-4a2b-476a-99cb-2d8168fec521 19a94a3e-9746-4f91-9466-af91e9476158 b9464a64-c9b0-4e0d-9fdb-d2629c148aa6 2e58ebc7-74de-4093-b21a-e8c9e696b969 9b0ad899-9eb6-4740-8b0b-7d6a3b310f47 057ca8dc-df78-4723-923e-c818b734704e 1e49ea9d-f609-4fbd-8004-55a17c8315c8 9f6e68f7-3035-472d-8686-0053484b2dcd 5bbee74d-739f-4d3a-b56d-ee214e79646c f0ded499-5505-467f-bcef-d775f4a3cec6 3c490696-d063-4492-ab51-c80acf9ad91d ea81292c-725f-43c8-ba49-5d9b99a6d515 2cc1caae-033f-43c5-b955-2b9348c63ad7 950ba229-855a-4208-9a82-91b9030389ee 01d92f2a-c6d2-4d2f-a66b-688ca8e8be49 fb2e73ee-1db7-4249-88c3-7763cf35dc38 c63c0e34-9a23-49a0-8872-418a201572c9 eb4b3768-51ca-4db1-8107-14001fd5124c ffbe4165-b03e-4a4d-8662-7973ff40bb80 05d7c416-9bad-4f86-906c-279001585a3f 999b3d5c-c79a-4325-b0ee-1338a4b38820 765e3109-3446-46fa-a6c6-fb3981ce3343 ddffb0ca-2224-4b04-9ebe-f088ec75c5b3 a55d89f1-f13a-4bad-a9ca-3d42cba3fdac e62c16f4-82e7-4c68-820c-2846d767a50b a28701ff-2cb2-46f7-b0e3-ef781c068c31 6bda2e76-f5ef-4eb9-af44-9d20c29ef90d 6d237976-a867-4af9-8f72-4ef45585f9a8 649b9f7a-0ab2-4558-99b2-0fcac556828e 7a328a23-0825-46d0-831b-aa52510fffd8 2ec3746e-1a97-4c1b-9cc8-aa2ddd2709f1 2d3abb73-bd03-411e-9b68-393ee795fa16 c7ced715-48b1-4d16-9195-b7c32cbbedc6 d31a100b-79d2-43fd-a67d-87a2516f14f7 25da63d8-9458-4ad9-9ebb-cdb0312a2fdc 78b5e681-7ba9-4d6d-955b-42ef35427356 343326e9-b1bb-4349-826d-78a6aacad967 2a5b0054-e487-4da4-88e0-131ecc6b39ca 33a50572-d25d-4610-aeee-fb3d63104731 49123fcb-6d97-4c50-bc4a-bad84798240c 7e91c53c-0f09-4d44-bbce-0207fb0e48fc ffe4c2be-21c2-4de1-b549-c9294c48a257 7f38c23f-29de-4d6b-8155-9d2060042aae 9b000c7a-b0d1-4fa0-ae85-c40b5b4a1f56 96326cf8-5064-446e-945b-5bc6187e2af9 5731f467-4bcb-4fa7-839f-380ef6c731e8 03b5bf31-dbe3-4ba7-9bff-89ebd5d6cf6f 0a57f805-c6f3-4c51-91e5-eb25da37bcbb 58d46993-8b01-477b-9ecd-82c206702f20 06fcd482-fcf3-4787-84e0-0cd35e537eea 2c4fe989-f5b0-40bd-a7a4-8bf65dcf2a90 24397645-c202-4b95-ab40-2a3e0ec95ba7 d37a8fc3-0f47-4ed2-8931-d44791b0dd3f 28d7b4df-cace-4d13-8bd4-91a143316a5f 79a3cbca-c6cc-4254-bd9d-1e6c880747c9 997b0577-4566-4273-975b-56f6e611362b a9aa9668-bae0-4b3b-82ad-3df1ce79494d ba4ace26-7d46-4200-8944-1179f2b70328 8880e252-bd74-41a1-bafc-2236f19e3584 d8c3f4f5-d248-4de1-b5af-86d55e04d4fc 3e7b2aa6-9c19-4c99-91cd-db3c3ddcec93 674eaeb4-2933-4f73-9463-649c3f2fb76d ef0b5bc6-cbe5-4397-8d89-220f606efcd0 7fe2bb88-f561-4588-a7f5-5a9db6a52510 44b55277-ef05-4139-83d0-1d673d5f75b7 62f35890-1b0f-4bef-8e39-cb29a69555ed 9f2f2d88-285d-4838-9b6f-4b6956ce4bbd 98c79614-2daf-40ae-888d-bcc779eca907 e08f5f4f-0f23-464d-941c-f76e0258feb1 37aaad1b-26e6-4948-87ff-b32055cc9b13 54ae59c2-ff10-4ea8-b65a-4b6f800c1bda 02d1c472-de20-422a-ae35-bceb6a59d865 597443e4-7e43-4894-a347-d1ed615cd38f f5eb1b89-c4a3-47b7-92f4-4797081c0b4c b67f31aa-cd5e-48c3-a89b-677bc5f6f2c6 cc1532d9-c78e-4b37-98de-6bdc6d341f30 0f091392-3bcf-4214-beab-de56471a6c61 6c483cde-bebf-4b72-90a8-56e228d6d456 387e017e-d2ce-4db0-a821-339e39a53efd 0db639e6-696c-4070-86a4-f4bce95f3c08 4b0b72b5-b257-40eb-b056-5f661918c10f 92a9d8e3-8a2d-40db-9467-916961502723 683d28d3-4ab2-4e14-aa68-6e0dfa4c6986 4a5a8fb1-a42e-47d3-a014-1f626ededcb9 a69c9881-6a31-4e2b-b275-aef43547ec5c 1d2fac73-ef21-41c2-b15e-60ba74d75aad 5a1f14e1-81ef-4749-bdba-5240c818e7bf abc8846a-7353-46bc-89ec-ef3ed3d4ad7e 9c69bc33-523b-4678-8b65-073c4d4bcd1e d2b25a16-4479-4b6f-b956-afc1b04a7058 150ab186-0df9-4012-b651-7ffa534c6d9d e03745e2-6c68-4d0e-8170-8a39a34623af caf31e82-9f75-4b18-84c1-d71a73bf6655 0dad5770-b1ae-4e02-936f-6614c3128a59 56552c72-d723-4ad4-ab57-1f30f6776eef 29979ecc-a60c-450a-a437-423fc4d40770 e175e253-6e1c-43c3-b6ca-d31d6803fbc1 80e129d0-94bf-4e67-82ce-dbaf8dbbe6b1 7042aa09-e083-4441-bff0-ff35a4d04867 e6e05463-d353-4d3e-a031-aabdd76eda62 5ee3614e-2a34-4483-8b5a-e227f97334a3 25d4e5aa-f2eb-4e1c-b53b-2ea20ee2e037 30da9f81-59d8-4f05-9b1b-01cf441f1981 12db0d97-a7ce-451b-845d-95c010392321 4de4f646-717f-4bf7-9e38-24027421ef53 4160d18b-4295-4db7-a67d-962b04bae981 2727418f-a5f3-4534-80e3-b26371a9e81e df10b05f-a501-448d-8e01-6bd4c45891d5 ce70d965-c097-4431-be32-ac56614cad44 ae4ab5fe-77cb-436f-9a89-f9d240381fd0 aaed1b77-ff2f-414c-a837-1f63aad232df 86d08757-db14-4fce-829b-3168cf79dbb7 f4c93451-7f35-4f03-9dee-f8c1a085f97d d4ad6f95-6343-47ed-a5f2-208d30676925 c0bf1012-3ad1-4b37-9bd7-cad320d734a3 cf898f6a-9a5d-44fe-a282-3aac186b4e0c 25e0335f-82dc-4854-bab0-b551ae3fbb80 1bab298a-3af0-45ea-89ce-5e18798ab0ed acdea5fe-8603-474a-a239-1cfffa27cfe0 f177875c-d3d7-4b00-a244-e7838046c439 d28b5375-a0c7-4dda-9d29-0a3312931ae3 129b1817-37ae-42fb-9ad0-668b6282f2aa 39fbb686-2c43-4b3b-b357-b9a1512b4643 a8b1565e-b37d-4fb7-b34b-5a7457f6c562 ef6e3dbe-cb1e-4d1b-ba02-165a87821b8c 7a577dcc-fb00-4588-a971-c481507befb2 f720897b-ec43-4f15-bef5-d9e0aaab2a6c 153dd789-0548-40cf-8fe7-d4da6dc588a8 b60ddb87-7ab4-4ca6-9bd7-93864743a79b 9e0e4ed6-effe-4a99-9db2-4d11a4df09d8 e42031e1-8d57-4291-af3d-1fc1657573b2 dcb3254a-df3a-4dc1-a217-fb7866b290fa e63e8490-0d8d-4169-ba35-1ecd964fc0e1 0a985c9a-7e60-4c97-b232-da4cd93ca511 2f0a94c6-9eb3-4f00-b838-9aa5ae067011 f2b78e53-318e-4679-9835-571ccb0a6406 25c339df-ceb6-48e4-884f-009d073aeb83 6acf0a00-2d16-4d7a-a2a4-14864998638e e69480da-ac87-4ab7-8ea5-b7e07e0f42a7 00f3f7dc-9230-47bc-aa38-24070655ef85 bdad7dde-ca45-4c00-b8a6-e12472a0cbfd 63d1efdf-906d-43af-9424-ddc7012e7a0a f920c22c-2057-44d4-8383-d5e4900ba174 a3b8b8d1-5755-43e0-b22b-2c838f8bdb08 65433421-f3a6-4745-bbc5-56ac6e6b52c2 d4046bc2-dab2-404a-ad69-fc196c82de8a ab069982-6081-42bc-ab43-e246e748183d 1bf7437a-016e-4dd3-8ada-3486672b4061 efee821f-aaf4-4024-895a-d470ead64bab ee13ac8f-609d-4ee3-a446-f58cd2565b56 97fa4d57-bb81-482b-a313-254bb185240b 54b4d058-e9f8-4769-9528-9b7ceb7c899b 5ff68238-98e4-47f7-9b95-6e9c80c2b44f 26bd3bbd-2e26-4c70-91eb-603c84fb534b 3c04767f-0ae0-4531-a607-c183f157da3f 31b8cfb3-db8c-4154-a13d-8f2999c6361f e9900f4b-8b1f-4d2e-b563-87e69e61538d 4ebc0d0c-b47c-47b4-8699-85ba5d7d8bd8 9710406b-40b7-4fa5-9579-4d89269b0c6b 176b5a5f-0daa-4174-b37a-247885131187 05c409ef-0057-464f-ade7-5be37e6b25a2 36ca05be-2555-4680-a637-c0e24f40d097 e123a7eb-5e70-470c-a7f7-2c0b7a5ab9d2 680314d7-a4ed-45a1-9e17-bd23998c3c4b 043f244f-b9a7-4506-8da3-bcda1e7191a3 b563fd06-a692-461b-83cb-cf66d1c00b5d ed1a6c9b-86cb-4df6-89c1-8e4a1c450b6e ab7aa715-7618-4d99-82c4-53e9ffed1b2c 9c339930-4eb3-4421-bb0e-e3be6be6fddc 992b4acd-220d-4336-a428-67d2ff87773d 95ab8ad7-ee64-4ac0-a3b5-8eb2228862e9 81d12422-6350-4e87-b72b-4d13ea4d274e b407685b-7472-4ead-b3da-1b35073bf069 83285f19-b650-4bb3-8cbf-49bf83483697 9c430e12-f099-464b-861d-3b1cbfc7ca4f 410c9928-03ab-4cd0-8548-e863ff810914 88d8887a-ef90-4118-adfd-9fb0a6405080 549ead8e-1fb1-4736-8c11-d779289604ad cb2c754b-6657-4ee3-82f5-09079d618e8c 886a3801-c66a-43e6-ab1e-7ba3bc79ac96 4b8b3da3-cd15-41de-966e-fee02d13037f 15752043-a3de-41e6-86eb-68e907563345 19cb2169-56a8-46e4-b343-374f3ced9ee7 aa753da9-8e17-4150-a609-1afc34eae8f2 2e8440f9-7c62-4ed1-9bdd-1f9d63eea62c ea9086eb-ca60-4c60-b86f-640636833a87 621eb9aa-8d6c-44f6-b736-d9f368602b58 525e5212-a268-4ffd-b1aa-f767b1ee4004 02dbf18f-8108-438c-8289-7ecb806284f2 357757cb-c895-4526-a46f-702c0df02f2f 63703781-182d-4a22-8f87-7c3ae16eb628 f7c57229-c26e-4675-a906-a05aa009f170 b05a1fd2-cc64-453f-be6f-4c200b80f7f3 0a2b1bb2-a5c0-49a1-848e-f484eca36477 9ddcb9dc-7e92-4792-ba48-bd906a166176 a852ef89-99ca-437a-ac9e-292b0fbbefad 5278f4c8-4c7c-44a8-b0c3-498ff17049a0 4c0dce45-9263-4444-aea9-2b234141f8a2 1e5d1303-19bc-4415-9357-f6b39b52bb9f fb89e76f-df6c-4acb-82a4-e7f4b0933a65 b9c22a2b-f51d-4281-ad22-8ffe80631833 be25da92-05f6-4a8f-ab63-6c11ad28be3d 9c65070f-65cd-4c6f-8e4e-772a6fefe5c8 cd541855-2a4e-4480-9aaf-4a6005479d7f 38608bd0-6dd6-41ca-8970-40220e68bdd3 f06e0bf3-5dc5-45bb-b7d5-b2ef51103736 ba5eb3a7-576a-4c04-8ef7-b5e061c8f927 9b22faa6-e47b-4c62-bcf6-7ebdf7d1461e b62340dc-627f-4546-b2c2-68a5f84044c3 d4519b40-fc58-4133-972b-d11b575b19e1 ea7e8f9f-4270-46df-9266-d814ef72f95d 02714b60-1f77-4697-8dbc-d5268d034a04 de181285-f425-4ae9-82cf-5ec9ee6a74f8 8fac59b3-44c8-4bdd-8698-542dace64134 03749ba8-3522-4e32-bb09-4225bf9b3993 af9fd56b-b1d3-4183-83a7-0ff13d7b7d16 b3853116-276d-47b5-9f4c-6867abb267c3 f497f4a1-2838-4fda-bc29-3244ac2bb067 211decb3-5da9-4f54-9273-4cff5075ac06 671e0b09-6f1e-4217-b00b-889273aadbcd 2ea1168d-84b7-493e-bf90-6305b47fafcc 13b19c2e-b243-494d-97e9-f04925205054 b34eb892-5090-41b3-a9d3-dfe39ae2a3c8 2fa5e945-dcff-4130-8a20-c163ea928b96 abff74f2-5e25-4ea3-a187-2ee75b998e37 3d9750d4-4cd9-4f22-92a7-d53ee553664d 65843e3c-03be-4cda-b55f-dac6d48b425a 48cf7630-7e19-4b65-98f8-b77dc1de24c3 0661d7b6-38e5-480c-bba6-63727ed1e07d ba793fa4-1809-4d75-9f15-160830fb62d9 feec3086-51a2-4a0f-b850-cef94cc3a4a8 6140c8ec-c155-449b-9a5b-22677c6fbb70 0f48673e-1206-42e4-8191-627147d8d077 35be6731-7215-4ed3-a740-c4c8634a5568 51d3c01c-9e86-49da-8fd3-af35bbe3813d 4033e7c2-dc16-478d-a56a-6bd76421cd69 ed37cc6c-8617-401e-9ad9-e2920a81a6a7 4346eb89-82dd-431e-980b-39fe3384777a fb799a56-a392-4122-9e7c-b5b1525b1cfc a60583c2-9e0d-4fc5-a486-9047ac50ec9e bd7023c2-72de-4711-a503-ecf461fe4019 526c925e-2bd8-492e-8f61-70a65aef5fae 2f8fe554-6851-4daa-a208-f77434cacdce 54ab111f-0039-4dba-8d61-419994523054 96bfa4da-bf0c-47ea-b37b-553220b4acfb 1bb4909c-07f8-4c4d-8bdf-c058207140c5 5137e927-56c3-487d-9c47-b83557f3a6b3 5c2e66e3-678b-4d84-9d6e-f98f63239af3 83fed54f-d9ff-4513-a19b-5f6cbd7f7336 93595d02-7243-4662-b069-8e254a94e2e0 d93ec3ec-0549-4810-8e9e-2ec2671a613e 01fcd4dc-37fb-4b9a-acc8-333f91a81268 abd24eed-c39b-482b-bae3-3be687a8c98b 3b49d8bc-65ec-496f-a2ab-8965155c678a a52688b7-f2b1-4115-a035-a8507dff81cb 98073620-1ee0-4f8a-b673-b1ca6003d2d5 6263bb9e-2a6e-44f6-bb31-7b60600d7bb7 6c70219e-c827-488b-a01a-a9a7c9a29f83 201ab64d-e8b0-4cd0-b857-89e95c9671e5 31d620ea-8e07-4fb4-b61d-cfcb2ea4289a f6479fe7-a380-4dcd-83ba-6dee0f7f793c 8eade917-9880-4058-a199-dd2eab9f5fe3 fe1e9bff-b3d0-4d87-bdce-72bc6063392a 735cf168-6a9d-40ab-9037-f2ecfc88e280 14a64dfb-62bd-4235-9fd6-00ada2e49666 88a8701e-d47d-4471-8f6d-3c227885c88a 34ff56bb-63b3-4589-9c64-50269358f374 8fd0d093-7c14-4c10-851b-fe86a381ea8a 4f4f4fb7-8dfd-4579-9b05-c7dc12eb5e0e 39d6554b-e0f8-462a-8b66-caddbc06d9fe 4844eadc-3522-4773-9ab9-b51012c801aa c1794e79-4724-4541-ab2c-ef4ab6eb6ec1 5cf47132-8ff0-4ae4-902c-d0c4efaf3c7c 240d712c-1d4b-4644-a512-b7c36c5ba587 a92329ad-44bf-4fa6-8c15-7b3c0ff1203b 15b5edeb-11e0-4c82-b68a-6132fd56378c 2119fe12-a9a2-4017-b90d-e5d3fd87a392 c5fdf9d6-c963-44e8-890a-b2b528ccbdd8 e66208a7-dcfa-4961-aec0-c63721489ac8 2976c2e6-4e2b-423d-902c-ce02d75f1080 0ec4405b-0c27-47cb-a299-73f53807046b 24e6f455-4371-4588-88e9-dbbde16e23fa 5236fd7e-00af-492e-a150-82dab8cfc7c1 cb3073b1-5a96-4cca-bf10-8d6bbad40f9d 9d38b850-b5ed-477f-acdf-508e9106162e 773f2b41-fd75-4f37-ab89-8b7a8cf74d0b 883ff9b3-ed25-46f7-9d12-e7af54d8d3f0 213e750c-19d4-4e31-97cf-fc44a7d4e785 a32d1a76-2cb7-4b08-a263-430a6e3e473b ae5fe766-f111-4780-b549-75a0d1329747 cb3cad0b-23c5-489a-a720-931ddb7757b4 c5f6be64-5ca9-4177-8689-c9fe3fe8f26e 4a253913-a8e5-43c1-b1f9-e90387e6a6e3 789fa681-f6f6-4475-acf5-397b46fdfde1 c438f235-f417-4727-b5bd-91c66b12ad5a 663da710-2864-4078-966a-962194c540c0 cd0d4d45-02f5-435c-b154-02ffd2eb982a c94e0cd9-c54a-4628-aa5a-ba8849fc9d97 e2bff618-e7ab-4988-9f66-e76de74afd20 fd2ca980-59be-4e93-9504-253470f80a39 3fdfe5ee-b88c-4f4d-a2ea-e8fa6b26dfaf 88cd3dc2-e7d4-4224-8890-7c18c40ea623 0c1bf1dd-938f-4b21-b6ef-2abdb802faa5 86d23ce6-48fd-46b7-a7e1-a35cd29426f5 6fbf8696-afbf-43fe-9b87-250cec4b59e1 734f9dcc-1c75-41ca-9136-06d39288b4b6 437d4ea6-b2d1-4fea-a70f-c721c54de55f 86b83197-8fdf-4980-af99-f872069a2aa3 38741591-f5b7-4b1b-8396-9e01b58db472 7a3f2962-6b7f-407d-b7df-a8587a0619e5 1f8cdb33-848d-48b6-b060-584f39d35b87 434ec025-fabd-4441-acfa-ed895d111784 ea84f48a-bccc-459c-99f3-e41744aaec89 93befbd5-35e5-4eba-957c-1cea27a70d14 7f56e5af-e859-4342-a847-979c54a1717f 3f874c55-099a-40bb-99d7-6f21a1f8f67d b25fb6da-b4fd-4f53-a803-438ca094de32 e067bbfd-6926-4ebd-a648-0e146f5ba549 f0b77f32-02d3-442f-bea3-fb60291398ad 004a2c2d-2476-402b-87b3-9b0bc6ea37e4 610db4c6-4366-4188-ac93-aaea453a889d f72ddeee-d11b-4c7f-9d89-a5fe9c9cbabc 86a11945-f2d6-441c-ba30-e556c5665872 5e1be519-ab6b-4c34-adcb-6543bf065415 77edebad-0ff3-42e0-a580-ba00185d219f c39eda72-f945-41ae-b659-be80f8a0ddde 62975fec-cf8a-4f70-880f-dbe07bccf468 805d60b9-e690-4473-826e-ce745454b8fa 7e72d1ce-5a76-42ca-966f-c33a30364871 8df9d396-36d4-434d-a36e-b67f30286310 1616ad9d-ebdc-40e6-9dad-b469e1716b01 13559275-378a-46e1-9f26-508ec7ea9ee1 6d9c7004-878b-4bb9-8e9e-118d9878deba 03c5e84c-353e-4353-8bc2-7ac6b156422c 89590cd7-754d-4a3f-a194-bee95527fdbf 47c0bab9-ffeb-471e-8609-8e7ee88aa164 b565d507-e4fb-497c-aa04-5f09206fffb6 812ee8db-0193-44e6-b4f6-cada007bcb3d b17b3f3e-5269-482a-98c1-26d70c8d59ce 6d8d486d-eaf7-40da-96e6-5c6c32a0c0c2 4061a098-4327-4961-8d70-2a2f584d319b bae51ec5-9b55-4564-a670-edf1eedced21 bca19b7f-ad87-4337-9e05-cd9be304568c 6dd12e60-101c-43ce-8073-dcd20f6ee60f 1e94d141-cf31-4fb3-b06f-0661f9127391 f345bd58-fd97-44d9-9ab4-9e1cab60b107 dde356ab-765a-41b4-b619-b930b601156b 82a26bd1-7941-4516-bf1b-c8acfdd57734 ef44c138-83c4-4c3d-afe0-9d2664a6d574 e2e4fc29-c74d-4785-aa4c-7e632a8dbc36 9dccd944-cf04-4538-a8eb-b10c97cc80e2 78ca4715-959b-4b40-a9f2-9631ada83134 10f8e4b2-f6b0-4676-bb1f-0abb6c492d36 c9786c10-1d26-49cb-b3c5-3494819e738d 1aab772e-0bdb-4d50-a002-61190468d08a 8cc1798b-621c-4e0e-bbda-52e09d2f6799 d61a2d58-0bb1-481d-bad2-9051a59e2e2b db9600ba-aae0-4ff5-bed7-8f54b79ea871 610de5bc-233f-4400-834a-b5d9d3d635df f4372b8a-df94-4a5e-b16b-635710039084 a2eb0db7-d83b-420c-b383-80336f7b7cd9 bb4737fc-eb59-48c2-a95c-cd3f44195446 e3232b66-d358-4c4c-8d6a-d80b2823712a 77a6e2b9-0834-48be-b472-0686ad43bc12 179c9bc2-a297-478d-8e60-9f0a0179f14f 9413c9eb-f41f-4315-9fa3-1287c31f30d4 6da04399-e96f-49f0-a9ca-9d7a41b1d660 d39aad87-e4d0-435d-91d3-5abddcf4d4d5 c1596c7a-ff3f-4d6d-9227-3a2efa50151a 0e9fc6bc-ce4b-497a-a5de-8f02a9b0ca94 caee0634-11a6-47ce-b86c-db924a5fc934 57d05c37-5c37-48ec-8b93-77fb4df7b93c ac8cb532-1155-4c01-ba1a-df624748bd02 9c6f3303-338d-454a-b754-7380446cfc67 d9f06fee-8461-4498-828f-1f01a1207539 accb741c-b0f7-45f0-9236-25f5a9fca906 d5661436-3eed-4ef2-8f0a-8581e01248af 2fb003d2-13a2-4b10-8003-ea91fd0e7493 d7c0e292-05e7-4523-a6d7-c4ca8260992b ecc1790e-3754-41f7-9a97-58f8288642df 72aeaaf7-ca65-4a20-bc05-5c298537871c 3a638912-e383-4536-af62-3e602b7602c8 7d9eeb32-30e1-42d6-aa57-34b9631e4d8c 61374d8d-b58e-4699-b211-27a8b48511c4 cbacdccc-53ed-4e5e-8932-a181457cda3b 03601973-59cf-45a0-9c23-c14466672219 01e4b22d-bc2e-4b40-8acb-3a35de07ebb3 716d5a60-6346-4fd9-9957-5b67300e01a2 df1ca474-c8fa-4d31-ac3b-efa042233c7a 91958944-b688-4aa2-b373-e0f74cd51691 c4f4b591-c676-4484-9614-b9fddef33f0b 20dd3802-1427-4351-8c31-b685d979a6f3 04b03653-08c5-421a-aebc-486e9835229c 6bc77b46-3b86-461a-aff1-e5d2e6516abf 14387368-b0d6-40f8-9552-0b6ce1835685 62e04fdb-c533-4bda-8e3b-4d6b9faf4767 4e78a8e5-db90-4dc6-92dc-93fdca3f8ca3 34fad354-1a01-4fed-b5ef-49531c295e97 14b3d0cf-cb41-479a-b210-cddf05f5f5f3 44d70304-8f14-4ccc-8161-dc42510fa484 318f0e25-68a1-4883-a490-a091a8dbf549 67ba9488-ef96-49a7-8d26-0d5a0ed1443d ae635930-9227-4f66-ac38-82b41606f4ef b9cf6bc4-ad19-4c60-bb31-a5ae594a3800 aa923789-1a84-48e9-ab36-59c3a18142df 2b63d5e6-c0fe-409c-b5ff-b9d3be1270cd a242dcb2-7415-4329-b4c5-4a9e053c4e3d 101d7366-3161-4872-9977-8bb2093cbade dafd2ea6-49db-44c9-8611-1e9d1426d26f 1bb32671-543b-4af9-bb45-4fbcb61e9924 dfed2624-bc99-4cfb-b725-33c7478e16a9 20cfc3da-3b09-4e0a-98b2-0212ba33e06e 9517d09a-f772-4b56-b9a2-ef5591713afc 316b4f07-7057-499a-aa9c-b9f1ae23da8f 466a85bd-2ea7-4d92-b4fb-69987d2a9a6a 10d4eaf8-09b1-4c04-981c-6d4b5b3f9bca 38f7fd06-4fd5-4238-a69f-041dd955b5e3 d28dc15a-107f-4f19-b82c-93e23e0d6ca6 f0a1f6cd-15c6-4762-ba2d-a013c6b2ed54 7f371363-6c8d-4db1-9246-31f27312d884 bded68bc-51f4-4b40-ad2a-4b71cd4ed6ce 27c96f28-bb66-4774-a693-a40f84216b5a a29f460e-74a3-4810-ae41-55e752ff4d1c 9da85024-9a2b-4f23-ad69-3eb889effef4 440b022b-a814-4280-a074-b023746df47a 07fac6d9-61ea-4faf-9eec-801d4577796d a0cd20d5-7262-4533-8746-af73bd374a1e 063632d5-158b-4700-944e-10848ac8d482 c27dd11a-ce9b-4799-aafa-1cba8b2cb841 759d823e-62e8-4567-9880-a161bd6db7cc efd31ddb-4ccf-4d1a-aee3-6f16c7319d4b 3b93c0e5-648b-43ed-86af-2b70fe4bd314 c2b4eefd-8a14-4cb1-93af-a5c566566e13 3631a48f-65de-4a5d-9dc3-66d2508c1a05 4c8b9039-cb92-4fe1-abb2-ea639116b4cd b92748cc-9ee0-42a4-8fdb-adcbd88dc13f 0c4b57d9-bb3f-4a30-8a0c-bd73a89140dc 44d0ad07-f6ac-44cf-b3bc-30c0239d36d3 e59f0925-36bc-41b9-aca5-927ede31553a 61089d93-8769-4d6f-83ad-4b1abf5fa2a1 87ef503c-19df-4fdb-a219-8a7674754960 00bfc127-46d2-4529-a30e-94f52dd929ab ec2d9467-44f7-4c4e-87f6-a20b02b2d0e7 49648890-c473-42f6-ae9d-e92c9c56f121 0bfd88ce-fdf2-4378-8e44-c3e1bdbdc679 b686360a-0f79-4303-804a-e89b8bee3fd8 a9e3d4dc-5a65-480f-b146-be6660c9c00d e4da31f3-4f62-40d5-b3da-abb04321126b 46a4fff0-d841-4d30-9894-a674069dddb4 9b06e54c-7126-4187-a871-ff9be83d4e0a 0bfb7d05-a204-4232-ba07-fbcf9060d3a8 67eb2d16-957e-4a8a-b462-dcc8a55b831b bc54d3af-d15d-4c24-b2d8-acde153d6ef0 c9d09eaa-a73e-4a4d-ac25-465f230ad409 12a8d5fe-6504-4b56-9e7e-fa6063c19207 b9bb7bb9-6a33-4117-b844-41c9b2d57d8c d95fd75d-b748-4323-b3ee-abb8b908c8c4 9b7979ef-1432-42cb-abc4-d46d82d8fd4d 018b846c-cead-41cb-b792-d92289a7e77e f8a3f53a-b008-4782-8cb6-b6fa289a09bf 39e88f73-8c5a-4e30-b6e0-b00b2e657bb2 b0332d91-cf45-48c5-b7c0-e4d93c89b0e3 7e289eae-a00b-469e-8ae9-a32663321b87 80fd4622-2c62-4100-80ca-2ad7014a1a4f 3f5e101c-fc24-4fe8-be48-4b4b46b35bbf f5cdbe50-4edb-4d25-9ee7-7c0d6bdabc5a 1cafd656-292d-49e8-a5d5-5d40ecc177a8 310b1d54-a59d-47f3-a132-28d0beed5738 dbc50fcd-9fd0-4cc2-a720-f46d3fb50d9c 951e6e00-d6f3-4a8c-bf3f-a1d3a47aaa37 5a307739-9910-40ff-abd4-6bff7a5458e9 12c97959-58fe-40c7-b05b-7428fbc50ebf 0e1fd7f3-4a1e-46ab-8d5f-a75e884691aa eba44c48-10c6-45b6-ad05-923cb58673e7 e89270bf-eeca-4ebf-89b2-584563b608ea 09ba4250-40d8-49f9-958a-3b9f2bcd5f03 5dd01439-0807-4b72-ba98-760e97e66bb6 00a95b90-1888-4cdd-ba9e-88d62c1411d1 59c31ab7-d5bf-4bf7-be9a-61a6a9122130 95543651-5fa0-4788-aad0-f5ad11554d02 8d63e301-7462-4016-980b-ae19fb47d796 cf6d35e5-2c3e-4488-8855-90b9eb755aa9 40946872-142e-410a-8b52-151501aff050 5524aba8-70e1-4928-8789-f8880258411f 2d524ad4-438c-49de-9af7-8c6025fa5187 d0670f1c-acd6-4108-9a58-443e9ee76a98 f9fa0e67-e9b6-4dc7-b5c5-2954d712979c ef3d20a6-db93-4c45-9d15-406e50010f65 387dfb44-fbbb-4977-8a87-fee2ea019cd1 cb6f4701-9c4d-4d68-a3c0-49827424f485 9cfec0cb-8783-4fe8-9c56-5b745d7b6b5c 64659d02-0867-4c6e-94e2-3dd0ffed9df1 fa0176da-569a-42c8-87bb-f3d8a54e1d0a f5fd385a-09c3-4ef3-94a4-0dd63092daaa 27740ade-17bc-4830-a56f-616b3f15cd9c 4933724f-7417-492d-b527-d1ca6cdf62d0 7d90e115-0c81-4eaa-a50c-e39c2e2ed68c c08e9e76-7227-4ef5-9612-c50c649abb42 9752d3d9-48bd-427f-91bb-eef4b7523dcc 8be56127-90e3-4607-afea-4beaf29fdffe f77ca31c-c632-4c32-81e8-f3c82dc051b5 b695d4d9-4940-48ec-a556-d540667a855a 58cbd69a-bdd4-4f3c-9026-f2a46787f06a 33a723e0-9b98-440a-927b-811fd322f838 dac56552-7bce-489e-b539-2d4eb1ca2aeb fec5083f-a429-44f3-8b59-2b987364cba1 20d1cb8a-5e44-48f0-95e4-2a9fec15dde7 6172b1ce-fa62-422f-8863-2a3efb0db22c d202a80d-7c1c-45e2-a6d8-7573aa38eb60 0f9096e5-2c80-418a-aa7f-08d8f7f05eb9 617a7dff-4d50-43e1-a889-57e11f9ac545 aca2c2b5-6d33-48c4-8b3b-0569e0f4e248 6e539e1d-c92a-432a-a9e5-32112d8ed05b 26b0ecb3-48d2-4cb3-b8a4-0e751c05b2c7 b4dc049e-c07a-46ce-b25c-c403127deb30 cf36fb19-c23d-4e70-9cff-e19b7520860e 88d16160-9ab0-49b4-9431-0dd11a2be328 38ca70e8-6e5d-45cc-b133-43618967b809 64d16412-5360-459e-bfbc-0d134410ab7e f8ac12a5-4d87-449b-9787-74f6c58fcae2 fb01667a-3ed4-4180-969b-532968f5c384 e4268192-fd87-4caa-9d90-a5c34b0fd292 2db5ae01-cc9a-4199-b952-594dbe5edc14 c31bfa3e-3e98-4111-af74-e78afac5226b e962831a-6345-47f1-93e3-6a7ddece68dc 04f937ac-88b0-4c4d-9149-154285598bcd 184b5a64-f1d9-4310-9ea5-01aca87c67fa 1baf0547-7276-46ce-8f1a-144a1c5e0bb3 f7ac7371-0c6c-47d2-a982-e0859088cc32 877428c3-c171-4f29-8e3f-863fd309fa55 00babe48-0e1f-42bd-b65d-7e97ce249b7c b8800eee-f757-44e8-ae5a-d83b728daa47 a836c870-7909-4893-8e2a-fd363828ab4d 89078efe-9f12-47d2-b27d-14f2cfc340f7 3d1a33ba-9541-459f-9a62-34ba37e83b43 05aa9467-d0e9-4da7-b8e3-b6e58da121c0 eb2db2dd-d776-4423-b7d3-8fa7614aea67 a9d8cd2d-267e-43ea-9020-0185abceeb51 fc6a1d44-db5a-49a5-99c0-fad4b8c84c49 b266b592-2805-41af-b0e9-b2fc91897151 2ab747dc-9845-480f-add3-86220b0b0dab 59fb7606-88ee-400f-a9c7-cef8b18088c2 6724d5e9-90b8-4b97-ae9f-fbe033801ec0 9824c372-1a7d-42f0-a157-c215269c716c 57b14505-1a4e-40ea-91a1-01a62cc8be5c a4c8d8b0-4e82-46df-b0ec-de431751676b 074746b1-6f75-49c8-80bf-690b66321a67 4e05c970-92fc-434e-af35-d3889aa5a03c a5fdb849-2962-4cc7-aa3e-26062ae08a6e 9e14d849-01c5-45c9-a4e2-92c9ce47f0f6 d5075c8c-52f6-401e-a6db-093b4897d5f5 a01f9393-05bf-48b9-bbd4-59eccd23fde2 cba3189f-b700-4f11-ae41-da4817e892df 041acaf9-b9cb-45f3-b6b4-0c6398dd0ed3 185562c3-2214-47d6-8bcc-6ad989a2a7cd 5f93aff0-2667-4ddb-9458-5ccb12a436e2 9f72a82d-c621-47d9-8661-0b8429fe16f6 959980b2-7729-40bf-a4c5-ddbc18b7ecfc 159d4fb8-b226-4c77-a8d4-7a44ddcfc250 14235555-93e0-43b0-aa46-afbc08415f3c 48990b84-35e2-4ff5-944e-4b529751eb34 dd7b61ed-7941-4d36-bb23-49c0e81cd966 359246b4-5255-407d-8e27-e3ab42f77df6 0440115c-4bdf-43a2-9191-f798bd9bf1d0 36f317e4-bf83-401c-9a75-23bf87a29c8e f88d02b3-e92d-4770-94bc-5a926b3147ab fbd93c2c-5330-4260-ac69-47be98e38192 449d0389-a2d9-46c7-83b9-7c760eff3673 cb80b386-779e-450d-aa57-e8c27f8714d9 416b7b3c-08e6-44e2-b69e-886d0ba3f081 55cd1fe1-2c46-45d6-b126-5cf0ee953530 a82501e7-859f-4313-8a65-84e60d27ba79 11e996cd-0ee1-48dd-a785-ed00c67c153f 632208fa-9584-4b96-8784-93278c20728e 9da23301-4d0b-49d9-9880-90cf0d407589 0dd16721-bb9c-41f6-ad2a-b4cbac1b50ab c576c960-f905-4711-b703-23c87d5ebaf3 7deacc01-6856-46bd-bfff-811821735872 3c436a24-b6ea-48e3-962d-0ee86098140f fc47b357-8877-478c-92ee-7254a7eb5bb0 8267fc28-4645-496c-96a5-6ab787821a6c da2b9bd3-0045-4702-8ad5-c7b7213d5cc6 3d257373-1753-4d84-99f8-a8fe3b41d303 73bc06dd-f265-47e5-971d-bc3bc7e37afe 579f0352-624f-473f-8751-cdb5f0199740 21f3b546-44c5-4ff5-9f30-2de2f5b89bb2 21466300-d053-4adc-906a-d9e4c8f90fc3 2b205306-0e57-4b8a-a1c9-523dadf459db 0aca1fc8-2a11-45ea-b081-0ea7e9667ee9 663e8f5a-db51-446a-9481-6580998b9ef3 3afc2fd4-e70b-4901-a4cd-1cbe6665c693 519832bd-7952-4884-82c6-3f3b7b35d992 492e5b18-19f3-4c28-b234-3c467ddc87d8 3c2f1a0c-6997-450c-b9ff-4016be03c7af 948ea6bd-fb6d-46f7-bb7d-ae069018db50 3b7ac1c6-736a-4d92-b797-8b362e240d5a 7d6b5703-7cfe-4082-8b27-f1cc9b239f82 6faec583-0512-4804-a64f-ca964b5fc13e 03b5c040-7485-41b0-8294-50ef24c95ae2 bd1eae11-5f5d-4b84-b6b7-9b6b3b274eaf 53b59379-05cc-41e5-a041-58629e0fdc54 df81e9e8-59aa-42a2-99d7-ce0f259b01a6 b9d3fe23-2b30-406e-8cfe-08839b7158e4 8547fa43-60a7-4252-9715-1563e94ab3f9 d3ab8a81-9cb2-44d2-8da9-ed1511fa57bc e1d43914-5287-4576-a9ad-2f51c53cc6ef 16d0adc6-16b0-4ad8-9670-fdfd146040ce 26b03847-8f11-4913-9619-becd5922bff7 564ccc2d-ceba-41ac-b39d-e667c11d9303 357a7466-dfd8-49e4-a72b-499dc0761bc4 078f3f35-a044-4826-83b5-815f04f01a83 cf24ef5a-693c-493e-bbea-d9576ccd5048 67acfc24-e57f-4c8b-8845-9db83bc167f0 15034dab-d9a0-4370-b93d-aa6921b3edf4 fdb665b5-20c0-4dcd-9c3a-858e3ec3a352 07d2f81b-496c-4387-a99d-1c2af76b1e4a 6afad0ea-7b5d-4445-bbea-1471ef759b5b 78c0ec8c-e2fc-4325-9884-090b2a6e070f 43e7e2c8-7132-4589-b174-513e97ff7d93 cb77f11e-5aab-4967-b05a-bdf6da908423 56015a15-a730-41fc-bacd-d514f05f5586 1977f052-bfe9-4e53-8a12-bdd546f8c7bb 3fb997ca-8cdd-49e0-8b87-a798d4d1db30 838b285e-ae65-427d-9644-83a0bd620b86 d70373da-067a-415b-8c86-18d8588f84ab 60062197-f530-4ae6-8220-7a7ca5df1e60 f24ec1c0-739a-42a0-87ee-eaf45cf7b469 b4af9418-168b-4a57-a8df-d4082f2a7ef1 b95c3248-0956-4d0f-98b1-ff9c85ecd30a 22d4b03d-02fa-4527-ab9d-72109f1c4dab 87c842be-75a6-476c-bec0-3b427959f51b 18b97213-da77-403b-871f-831ab726d376 ca18bced-7948-47f1-8543-76c8fc588aed a0656fd4-6bdc-486c-8d46-961e5e63c89d 4d54bcae-aaaf-461c-8a92-a71d4d5a2dd1 90ae9182-9be3-4c55-a1fa-af2bb226feea 693a6873-1289-4a0d-b017-ec34dcd6ed18 fecac5eb-2fb0-4777-b0fe-bad72e151e69 ccec6ce9-fa66-4caf-b12a-8aba37ddcabd bf57828f-6214-4b70-8871-f293b08450ad f5d9f6ec-c8b5-40e7-a8bb-af99f6955174 1d42514d-d913-4ead-a701-9daf92eb5a57 663460d5-cf8f-499b-abe7-c79cd1f08f85 72a38ed4-4467-4667-88a9-4e6eee821dce 233cca98-4a6b-40c6-8acc-56b0364145d1 8026892b-d06d-4f73-a65f-d88d092fc8a4 3c7df27e-a3c8-4fd6-8dee-8be6879de062 09a2a5d7-e737-48bb-89e2-e52c902620b1 355dc7fa-f7e3-4ab4-8202-08731afc64ce 2e9486b2-54f6-467e-9b5c-b6a5dbc474d5 675cd242-177f-4930-9304-bb239b37e8ea a20befa9-51d3-42ae-871b-cfd10ec5b63d fb816c94-1ab0-4b62-b3a0-f2b968f58204 46a0ac60-cb66-43a0-b0d2-69b50ef5fd00 d8837275-348e-44cf-b227-8da6d9fbe66d c6ec7856-2c3a-415d-991c-bec9eb3ceee6 7ae1cb7e-02a2-44f7-ae78-2a2a55c1a82e ef60d052-fa4f-4a18-bc4a-e4a72c2bcb8f 414a05a6-84f7-46c3-81e4-ee1de61271a4 a86be94f-be27-4b80-bef0-0723f0aa586d 8122ed98-50d6-43fe-8258-b6302f1e9778 145ba48d-5a8e-4892-a62f-e81427d4344a bf39aceb-2cd9-4957-a36e-ceb075c6327b c91cc3c1-22c1-4858-ae9d-829220416b1c 057a33b9-d821-40d3-97b2-08d89482b940 b427dfaa-d8b4-474e-ab55-d037d9386fe6 54d249c9-3088-4f80-b89b-db61882d8b84 a30f05db-7133-40aa-b625-d0a37df1412a 9db75183-acb4-4344-986e-3a830784da56 fce1af66-cd35-41e3-bb12-226999072872 0866421b-b693-4359-ba52-ee1d73aa6b6f 4d66b82b-7d65-451c-82f4-e7347d93b00a c0f16bf9-0e1d-4ce2-9ea7-9574a63ab1b7 f07f0c8a-7441-4693-8adc-3e5b4c8fe010 2b015f51-b61f-4d0b-97dc-5ffe76a48edd 521aab6f-af5c-4b5c-97c1-a668388244a1 37e0e08d-32bf-41cf-8970-f81340870b96 ad48c2aa-16b3-44b8-8343-90b8dd2afd2c 3cc8b2af-1be2-453b-b76c-6747441a2838 4effa823-bdda-481d-b9c9-697b33333c08 11f88863-ecda-4a5e-96a9-5d7ed30b8e36 66de977d-df59-4f28-9a0e-fad52d54d799 6bd73e8f-7441-4a4d-a233-4e1900711ddc 8f84fa60-f268-46e1-ad7e-c0ea448ce898 80601353-e73a-46fa-88bc-b43927bb01f3 d0b15c48-b047-4e05-9c21-adcebdc5ee54 7a431129-3faf-4a8f-9752-7a282495dabf 543549ad-dd89-448b-9c19-8980362c096f 56ff675f-b6e0-4323-a6ad-92bc43139cbd 8bae9d02-dc7d-4776-ab7c-e363a99acb3b 92c671f9-c823-4106-a816-c3efa1714644 c1c525ae-688b-4879-bdb9-31052eab6ef8 fff65ee4-de23-4b89-8426-9e1670a6dc99 66302f55-bc5a-4fd7-b2d0-8dc6aafe79af fd68af38-b25c-457a-aa9e-8a49450d62ea fc7e05b7-4ce9-453b-aa73-61ad0cb98f48 1ef1eb4a-98f5-4037-bc6f-bedae70f3e1c 98d5886d-aa4d-4e21-afe5-05a3601aeb76 a9dfbff7-f9a6-4085-a445-9ca7f960e518 7726e435-500b-49a7-a7e5-a1e02b5da656 579a1063-5697-468c-938e-d7a57bccb0b0 2f43f07c-c26a-4211-9ffe-450916cfadc9 eb90e96f-1258-4930-9265-aa07f5dc20d8 b48f1c5d-c1ff-4109-8ebd-06451552c7a0 9c58d6be-242d-4f37-b8a7-00da02623cfa 2c4dce0a-799a-42d7-88d1-ebea7c079882 6d7073ce-19a8-47a5-b8be-bae177f89251 b6b73f6d-b494-4396-93d2-37f38ff36d9d dbe7857a-94ec-4c28-a8bb-310657d135d9 7acdab52-9d11-484a-9246-78cb2fda7053 206ec711-b981-4f1b-9606-c0f3a43940d7 bf0f742f-37e5-419a-befa-d97a7d3c3435 3ecf6482-6052-492f-a432-f7081dc7f0ae b014232b-9044-4898-874c-72a4076ad0c2 fdb9497e-0907-4ca1-b101-7cfedea575b2 10b0743f-4244-47b5-84ec-35857e01cb18 77cd0e4a-ede5-4d19-9388-a924fb2ca416 b4ceff47-3ca3-4609-8c7a-6b1706263ea3 01728117-5dfc-4670-994e-78d4c78b275b 44208bb7-2b2a-4250-8761-1d22125da9e0 cf44dcf9-63f8-4bf4-ba7d-36c1136938fa facce2cb-4c41-474e-8bde-7e45f4690dbf bc34b10b-68d2-4bf9-be8e-7232788926cd 14c01798-036e-4866-98b8-45fd68df4716 d689819a-4360-4d1c-8dcb-f7aab20e2d05 9c48b577-590f-4e96-ae4b-095ead5b78e4 9662d74f-c2a9-4ce8-9b91-c81556af39be 21c7d22d-a4b0-407a-abc8-07d93ea5dca6 3b89cb7a-7b7a-4ddd-99a8-d6e44a9b70e2 2457de86-f945-4300-9432-faa62c8389c0 973ff839-6533-4308-a646-07339893f866 4cab769e-08d0-4aba-8066-161dc71a05dd 8e8fc04b-15be-4a17-be63-bebe3f16aadd 711da565-bc1e-45cf-a5b0-88bf5e8794f6 73317e7c-e592-4e00-896d-be910b80f372 e174f607-aa7c-43e8-9405-393bd66e1532 8e5c3c22-deba-4623-9618-9d7fcf416b6a 5b1812d5-f762-4191-9e35-8f5768382567 df4ef1d6-2566-4171-8171-d1428661f665 3c79186f-5910-417b-be79-185e4a5ef250 eb28167f-8e0c-4f08-a81d-225ff79a6118 18bdd561-e738-44a1-a341-bee8144a1ffa dd9b1211-2fef-430d-b1b9-d4156d35f062 24013aa8-c1b0-4251-ae53-0255b879d0a4 aa0819d3-0e27-4759-ab0d-39a1afe4b31e bbbebcce-703a-44ae-856d-b93580d5aae6 af6e502c-bfd7-44ec-a353-c96ab64ad791 c5b8e51d-8225-4cfe-bf94-ae97ef005d82 4e9a0ae4-ed59-4af5-9d3b-49671133ae35 d5087986-d930-4e3f-8b84-a6e78f08f5d9 073152d3-18f9-41b3-a55a-5e846b847592 e85cead2-5530-4491-95d9-a0ba45f81aa0 f6cca886-6bc4-4a18-8d72-bf6fc53273af aa7c82cb-cbb3-4f47-b60e-4b1fffc3301a 061f6eaa-699d-4eda-af8f-c8583e39eee4 6be6423e-99d8-4eda-b6ec-36ffe37d282a a4cdfa7f-dd09-4e94-abc6-2ab32d1a7d2d 3303cf38-274a-4c9a-a73a-221064edb01f 52e16df9-ef38-46c2-b041-259efddb862c 8463febf-ef96-43db-b1a1-45d74f76d76f ee212182-cdb7-4fb0-abd5-da9a7913e991 923b4817-c263-40be-9c84-030a44c34b92 cc019191-041d-4bf0-88b9-214631878e1a 9a16098e-7499-47b7-880f-344d5cf1661b fff4e12d-ee28-4bec-b8ec-6a53444f4b2f be34792e-76de-4ec7-809c-d2f3bfb174d0 6df5ed68-076c-409a-a802-8e9265371d75 9d97c2df-7934-45b6-8b28-26291ca8144b deb89fde-0c32-482d-8a5e-522a8fdd0bce 38f70392-3b40-46cd-ae99-7424970a63fa 094bdb23-6f0b-4b78-a39f-59cce80f0c0c 77e89434-aceb-476c-85aa-08df2c636bea 55c32290-c87e-4734-a7b3-3c5d4d6a0a6f 8eff9af6-4526-48b3-a796-e48aea09634e 493a3efe-11c0-4219-aa64-325eeca009c4 36171492-324a-46be-a007-5a1598ee0d2e ce2c1428-54d6-4086-bfa0-a3e7ae9c5f0f efbbb71c-828a-4f92-a430-6a59747df0f9 f8ffec83-881b-46cc-8e24-282e5704c56b 3998737b-ce82-425e-9d93-6d43597d994c d88c04e3-a87a-4f8f-8a95-37eeb0cb7823 2333ade9-1a40-4262-a305-d091cf2101d9 e4692a69-4f07-4aec-acb5-728776e407b2 9045547b-fdad-4b8f-9b40-19ec01acbdb2 f0663334-c49f-4c08-a16e-f248e4c0c0a3 96d06ddd-f4d5-4605-97de-78c9cf57f6a8 288ab86c-a756-4c5f-8f56-3cbf161baf51 d500b7a4-3a68-4668-ac81-f418ac3ad203 efa6cc5b-4898-4214-9e8c-be0845df8768 bbb3f3be-abae-4127-9e97-3082ac4c4f70 e09602f5-4f5e-4916-874c-9fae2d03147a 043e0e54-7859-482e-ae6b-59fee7a470b7 21ff08aa-6fc4-468c-ac49-edecba1e288e 78afe43b-fb38-420d-8a06-df3a189f6761 a0d28a85-b83b-4ae4-9242-2a2b8fca463e bf3f6efd-d8a6-4239-bced-cc10ef020923 847244a4-0473-4785-8eb0-96342987fb4b dc043f38-4c8c-446d-9ba0-99d129d132a8 3cd3c830-2b01-4109-9fb3-0e056ed325b9 9763d612-3782-4b66-a58e-4d454e3b996f 526abf1d-06e2-4a62-af7b-15efe3a20e84 9f36de5c-20d8-49a7-92a0-b02368d84c43 adad0852-6b09-4b37-993e-9dc2d8f45092 70ebfe78-2e1a-448f-85d5-e086a5d0ed10 80940cd8-6088-4436-a8f7-2c46b42b5d4f 71659239-4222-4785-b25e-dcd7d2ae5527 aa46c39c-e6e8-4694-95de-a9a3c43a1da7 70f79a7f-dc72-4b2b-89e2-715b5d6af0f8 06ac0e1d-f233-4035-a0a7-16acde21bcd7 e6148106-e1fe-46cd-8b21-1f5282fc0f68 81b83911-be43-4d6a-ac13-78ca1b1cab67 7f7017f1-7b1d-4470-a16e-d9d87462a076 30f538b0-97e5-4c6f-a3a8-2f9113e589f0 ea8b4e56-191c-46ca-817d-dffe5ac2d2b6 6d03992d-3081-48ba-8f68-9b436e8e036d 891403c4-f005-4672-9413-afa0641a5a7c 2585db28-6295-4c11-854d-c70347198cb5 e85cb6be-3fba-47d1-929e-f848c73a0b17 050d0eb6-50c2-42a7-a673-6ab50d4fdebb f7039a5c-9a17-4760-9e25-d6664a883f48 4288d2b5-fc82-4957-b339-b0ffe9ff316c e9153161-c579-435a-9069-9483a8c55531 a399a0ba-d3f9-4ec6-b37f-ffebae8dfcf1 9b2405e2-ffc4-40ed-9a49-6b58b554833a df687916-16b1-4919-af05-4e48fda6c839 bda465aa-5966-4b4e-bb33-6f87e715cb73 e875c362-bb40-466b-a9c5-c9b3e5cc1d17 0a281df9-e22e-482a-8dbf-edae5daddcae 0691888c-0d40-4c77-9865-724c3cdbc0db 154159f6-dbbc-46ba-9db6-7103f0ad8210 b7a66a61-42ac-43f0-8417-055a0d50074c f6b7dac7-02a0-425a-a150-a9f6595a57a8 67bafbaa-e0ff-45e8-9859-9f48e8702e7b b481bfae-bc98-4811-9322-040bcf5eaab3 4cbbff81-737f-43df-9dcc-83652fcc4007 400265ae-a9ea-46c7-8512-65842c2c8656 4dde78e4-686b-4282-a8b4-38067f9b40f6 a627a1bd-6745-4c61-97a5-de54c09394cd 9f0967c3-067b-4e2a-9b5e-a3a9dd4428fe d01a24ec-4e0c-4eb3-8f7c-827cd7f29978 cd381f40-c69f-4f8b-a227-284ba5a024eb cbd16d55-e3ea-45c6-b9d2-66c95869799e 595a1981-d152-490a-a8d4-7e8659214cf5 5109379b-9209-41dd-be58-b905d213d0f1 36f06e2d-7081-4391-8001-f26ef71bdbc5 6fa957db-c6b0-4941-afa9-e48a22c5f129 5805cfe2-45ef-48d8-a603-8a4b64824692 909b0d45-3da4-40f3-8555-335c8a2eff18 51d6b40b-df0a-4afa-9541-59bc6f3ad095 e6a46f5d-ce83-4fdd-87d8-d4949d50df62 2350e449-c57a-41f6-885c-01b07678ee57 cdf855df-c67c-464e-917c-9436d19d12fc af140abe-7806-495c-9fa7-42d0c16dec7e f3a1bcf3-f9d2-4a0a-806e-208f5e4ed865 744ef7f1-6996-4250-a756-a51183498e6e fd027b4e-ddb3-4846-a6a1-5392d59fd74e 8022df22-091e-43da-94cc-9c82fd74157e 79c07e14-d387-4367-abe9-c96726b1de55 14014101-d66d-4ef2-a0ba-928f3224e7b4 74bb4b67-6012-42b0-a2ab-2e7722d762c7 4c01dadb-06ce-4730-a448-54a4732e3252 b0948724-5e94-4967-9a96-e83a4d6acaae c1149859-5b2a-4efc-a1ca-19ad9b20693f 41f77518-b63d-4800-8dae-52c2ab518b60 1aa18659-f82e-456a-b1db-3b5733568401 bb18f15c-8216-4394-980e-02173519f265 5c403246-981f-4e3b-baae-00aff988ae74 8ffd789a-1cc4-4f3d-8033-ec73d514d702 b2b852b5-3434-4220-84d6-00a1a5764ddd 8957ab59-114b-495e-8e6e-767bbcc6f031 c406d60a-97f8-4ed5-8f32-013487b040d2 4d63f7fb-2657-4d71-8713-65fd22fcf2af 191acf3f-e373-457c-83cb-4c0cff1c646c 4d39b0d5-79b7-45de-aba1-e41d45398855 869f18e7-9f7a-47a1-b338-eaec507b3568 c3381a23-6ad1-4b4f-ba3c-ba22ca904cab 4360d55a-eb80-4038-99e4-1b5cb596f8a6 53148ebd-b4d2-4eb5-adc3-f55148c67493 3fc5562d-ca25-4d1b-a39f-11d01fc0db04 d20795a5-ff2a-4e45-94ca-d1aa2aaa61ce 7c9d3f3d-9a0d-49b1-9bd3-a704312b071d d3038e9c-6a0b-4c66-bc29-034a4da532a4 62b83547-aed0-4521-9145-640525a9cee4 e07e066f-8a32-481e-976e-f72f4a142bb8 8d6fb7d9-2a3b-4e1f-b3ac-99e99dbdfb27 74a43ec5-5a8e-400c-ba7e-0e3b5ac5c319 9afe39d2-f745-47ff-b6be-8bced714c06f 0365a6a1-a35c-4e6d-b759-b33fd945e2c7 a60accc2-88ef-4442-bf2b-3b48904775cf 3e1fa4d0-03bb-4bb1-8a66-6779e6489ef7 67065756-dc69-408f-af59-c608b3067359 7b5332a3-12c6-4de8-80cc-2ae75fdabe5d 1f566112-65fd-461c-83a7-b335a19c6057 4b684243-6634-4783-8280-428586a09e1b 98398533-81e3-4290-8c40-92c2d30f8c0a ebfbdd1b-899f-466f-914f-9338c77c5368 ac68fa09-95bf-49f7-b83a-54b1207b0660 35decc94-a231-4356-a27b-254b4530666a 789ca746-813d-47e7-b698-906f5758c7f1 e6d3cf8b-2d51-477b-bf68-adf2676865d8 eb41e313-baf8-4327-9196-1f447e14d9f2 b4de9bbd-f6e5-420e-a688-022ce53786a9 e7e34401-8913-48ac-8e03-7666eff1b1e3 0bfd3778-7ed0-4f15-aee1-2f0bd11e296b b9f81865-f2cb-48ae-b1c0-f53f7b4601e7 8b168390-f3b4-4eae-9a18-1c0e38471485 c4e1c685-5f47-4fce-a7db-282681efd213 7bd7851c-b8d0-44a0-ae0e-960a89368b27 fe79a5bf-a68a-48d3-aad0-3969a0f3123c 73ba1c6f-184d-4294-a12a-bde0ca4b71f7 e242f2d2-7874-4583-882e-94dc40049cf7 8b195aaf-6c21-4f6f-bd0f-2eef7c46b4b5 4fbca18e-b481-4efc-b529-d3f15495ee2f f9704138-50a3-40ef-a755-f864c948e13a 5c67d1c8-d571-4add-aed7-47c1c69756e8 417fc42d-23e3-4619-b861-23a4fca585de 1f83209a-463e-45d4-bf53-631b83f05d50 d4f36889-691a-4d82-95a5-59a34c69abe6 7dbe44e0-3b71-4345-af41-f50cb235475c 27106f03-3294-43dc-a043-a5564d349299 542cf4d7-b10c-486b-ac40-a8acdb3515f6 854e9cc5-1ee3-4aa9-81ce-244fe70df28e 79ab0396-d88f-4be5-9628-cde45be89f81 73e8ec6f-46ec-45bd-ba41-0ccd40313786 f239deee-7353-4ac2-af95-65d59c51a9ea b77a4093-b5e4-46f4-97dd-5bb52a026d53 8bf8c0eb-0cde-4f6d-9b6a-e23511dc7015 fbc7c8d4-50c4-4f23-b494-86df2ec4fc5f 2dab8d86-19f2-4496-b899-f4b906fe4ea9 7c7ba2c1-21c1-4b69-a352-a9e6a5c07b6a f9491616-acf5-43a4-8683-ad338800c666 d5f3830e-ec42-4373-a56f-637c6fde2814 fc6ab6f1-c72c-4a18-82e8-6a77e052c3a8 26383b6d-1957-4892-aeb3-a4c8ea294b0d e16a6bcb-2733-4104-921f-9b11031f74a1 8b653aa5-a037-422f-915f-a399a8011516 bf3453ef-375d-4ea2-ab9f-36221b0c6ffe 050f03ee-00ba-423b-b537-4f0b281e888d 7c8ce56c-432b-4424-a75c-5fc774f5c3e4 b82e0276-6826-40da-8c48-9e185375b8b9 68595b27-bc62-45bc-a290-10ddef82336a 15f9d5d4-f3a2-4459-9dd2-e9badc57f4f6 266a49aa-cd44-4eca-a8c8-420e81b50c38 7ddd97de-0dec-4d3e-a205-9ba3c1e40843 6eba2dba-672d-4bdd-922c-eae8ad2a10a5 4cf7a942-b4c5-46c6-b6bb-d64b998b1672 01e6693f-d885-4ed7-8851-f72861cef4eb fb884958-57e0-4fdb-90c6-dc3ad3f13ac1 fa635a64-a40b-48ec-94ae-0792b69eab5c c04b7f8c-57fa-4640-b469-20bfb10d20f9 685d7051-b633-4486-a208-eabf0b133486 325fa163-c528-4e9c-820f-20cb022d8000 b567ea5a-d60f-4fe7-af7a-a82e64e24c95 0604edb3-f2e6-4891-aa7b-07df9cbebd7c a4a4510c-7402-48a3-9277-45d1135427b7 39ff9ffc-3cc2-4555-a356-7a16625390e1 cce7da85-dc00-4aac-85ca-f834e63f6a4f f86a0643-0336-4362-970b-23c97ce66d34 25d8876f-5771-4111-aa85-72a047de0d82 d34c23e8-99cf-486f-bbfb-5c293a0f5c30 f3c3e7aa-f48d-4d11-89a4-2c208b28e4f7 50341def-4d08-49c3-b6f1-16509cebfc25 656715dc-7db7-47a1-b12c-9cdb7a39df7a 8b8b7d55-2848-4d3c-8fcb-5a08af03d633 d0da9f1a-3eca-40fe-96e4-f9f095f1f8b9 6504a7b3-8349-49ad-85e5-682b9ed3ee2f 924956bb-ce29-4e23-a72a-cd57cee189c1 e3047f86-0735-4f49-932c-3cc8d1fb6df7 daa7d3a3-df15-481a-af9a-bd200133ebe7 c380f2ec-8fd9-4ce6-a361-fc0fc3ab78b4 57059b0f-51ad-4ba6-832a-44924b4f63c0 362a4c65-f259-465e-975e-4bda78977738 d17f244a-14c3-4222-aaf6-5478d48061fe f0b2eba5-fc7d-4807-95af-36255b6fe234 2c614aab-6897-4f58-a472-1defbd7216b4 c03a2384-1269-4eef-ace8-35c46f8f87e3 1b93aa04-6330-40c0-a4c2-5aad607c05a7 401dd096-315f-48d4-a5f3-bc2fda4d750a f26c2ec6-fca0-41ed-a78f-f30a36e4bfb4 648ab780-15ce-4bbc-afe9-8146db948882 3a4ee286-e6fd-442a-a8a2-a001085f3d8a c15e7b01-e299-4a3f-a8a1-ecc9ea8e93c7 c326b35c-3ca0-4b5b-8b6d-7de27f42037f 1c8e8f74-0ba0-472a-9c64-dd678d6c72c0 cf18d1f7-b632-45ef-8ba1-79865f26df79 001ae352-b8c4-4b6e-914d-9a7771f66792 fba6c438-0446-42ba-9c44-349fa755c263 fed83951-67c3-47f7-b515-485be172b9d5 60d0a290-fdd2-4801-a3f6-146a43929af4 dca89943-bd33-41e7-8b62-dcc6217d7238 9ab27fd4-cbbe-40a8-ae0a-592c2f5a8beb 2404a1b5-a48b-40bc-acd8-d205b0587748 fe3cde10-d19b-4824-889a-565a6701699d 15cf5412-8597-4e27-ae7e-468fc32a5cb2 fbaa4443-0f5f-47fb-9e90-0e8f77747906 5cb2a578-b25e-4a11-944c-ef8cefdff65f ba120976-8191-4b8a-8de7-9a8a3f8fda42 2d553523-9a51-4aca-8595-56463cd011d9 11aa92f0-234a-47dd-8802-45e637a99317 c5eb0005-c098-4924-966f-4c5f9af07ffe f54e54ea-e28a-490f-8e5c-7d3b2ceac24b 226ff678-0e15-45c8-a976-9963e8502f27 5395bdd0-b907-40c8-a1d9-34beff362e78 6f95e460-f244-4299-b50f-6c00bd499ef3 99fa373d-dd2a-4e5a-badd-c648c7f2afc7 7d2aa5b6-2fd1-4967-b531-f3f9e96cef3e 317fbb94-d440-46fe-86c9-ecc0a9daff48 92f0a5c9-9d9a-47f1-a327-3a815e51d45d 3fa37a7a-c5c5-4cee-95f1-d8c614d6e599 b3232fde-2773-4284-bc79-516511c4ee45 72fccb5e-afdc-49d4-8473-38c513f82347 1dc922e9-a40f-4810-bdff-e6f364fdee72 96ce947b-75ed-4990-a771-2f488926f057 33d53488-2a4d-4fba-bd35-57d6519d673a 467eea25-34d3-4932-b373-ad361f894c32 f92b5fcc-6afd-4745-bdef-f18dc5ad07c5 90147d33-9a5d-41a6-a67c-3d6a5ca54afe 4edd31a8-4bcf-4290-b010-54724cf4e824 22eaf97f-613a-493b-abfc-607c110b914b 855128ed-d1b0-47fb-97cd-a058730614f4 38b974c6-85e0-4546-8bd2-ab9c9da3fc9a 541bfb78-3e33-4500-99b4-90576678027c 425e07a3-afd7-473d-9376-c9a28469142a a30dad42-5e50-476f-9b40-67bb5ec6b5a4 91b07db4-b18c-41c6-8ca2-ce51c375a1a9 68f772c5-873a-46a8-8a4a-69f6864f41fb bdbdfa17-a7b1-425d-af6a-09aab77e06a8 bf2eda06-58c6-47b2-864d-cbe74b21c68d 2052b97f-5586-423b-9432-e5be922bddf6 ea111f20-1912-48d6-adb8-85ebc599be99 cded0711-c4aa-4a91-acbd-b335663bef9a 01192299-c060-4203-bc18-be2260a8ba17 6cb4db04-82ff-418b-aad6-9e2aa4d4696e 4e8918b2-b42c-4576-8a1d-9e48d9f67b60 d780a93d-1bfe-41ec-b955-91f9c2ceae26 5d740739-4c2b-43ac-89a7-9dd27b5d6edb 075ca49c-4356-44dc-8341-14a05921b6c1 c8ae281b-ef3d-428f-89f1-f5b62b33336e 979f2e5d-40c4-4a1f-ad42-fbfca9992953 0947feec-ab0f-4cb3-95cf-7894b43a939c b22dcd69-562d-4935-8f77-fcfa0ce86c30 6c58dacb-7f14-4e33-956b-8f4ea8ae5f74 6c4eb89c-678a-4e41-8530-ad8c801280f6 327c11ed-bc65-46cd-a069-b5edab6ed8a8 bf60ea47-9e95-49c0-82b7-42674fc2f937 9d253f6d-4689-40cf-81ca-5181b7b85041 c7c78957-469c-4692-9803-ef4ce69c7fcc bfc69f99-5231-4677-84b8-bda56ff5590c 2d55aa61-3674-426f-aebf-5073e0a130a7 a13f1d4a-30c1-49ba-8803-284cf0207b5a 8ee32bce-e904-45a6-97fa-425dcc0cfe58 6a8dd0f3-ca7f-4771-8251-6eac772809b1 7cf5b2ad-3415-477d-bd02-e443649d7efd 40b2cff2-e494-49ff-865d-3a291f3611e3 a7845877-a501-4e82-ba77-340161903ee5 72f2e033-9cf3-472f-b388-5d1656fc5517 186ac332-773a-4525-9d57-16b247e67d6e 991acf2a-e5c6-4ce5-ab39-16fd803d48b8 04ab1301-12a6-4a96-b76d-55ee4bd97bcd c2aa82ee-4dac-4688-926a-94cb1d3ba196 3e62ae65-e608-41e4-b10f-9f63d1f3e986 b136f1d7-9c1c-434f-a24b-5a3f1c69e455 bb45fe7c-f640-46e1-8404-8e7883b3f48d 4816bc12-4fa1-4def-896a-2bf5f2fe5cbb cfbfc4fb-be95-4ce0-acfc-28ec4ecb9fba b3649230-8b93-4cd7-b567-a9a8c2bb092f d9c213af-d358-4fbb-b7bd-365363348ac5 b96d05a1-a8da-4e14-93b7-4cfbca8ac9ce 14904b66-5f83-47b8-a83b-fcb291e9f722 7da77bbd-3184-41eb-901e-c5cb7220d076 76a7c31a-b299-4f7c-ae09-55e298337739 f549cb70-9a8e-45f6-b180-d7245cc187e8 52d812f9-5ccc-4c93-a99e-59f5e5ccf0ce e805269a-a784-4679-b05a-3a456ecf71b2 93bd76f9-ffd7-4d0b-acd5-332c6b17e795 65b6be99-04af-43aa-9088-2c9795dfc273 e2169a11-3d8e-4923-b3fe-79813be097f6 e7267b2a-9602-4436-bd67-845d798b7b57 def0a47c-cc08-4ab4-9075-db8a58e2010f 7ea2b16f-18e9-43f0-85d4-0c41935ffbfb 8f5c7e73-21de-4b7f-be7d-66f28f3b084a b9ecca20-584c-4e9d-947f-7e0e111adfe0 7393d21f-f672-4a5b-ad62-b996231c69e6 163fbadc-7c52-4862-9f80-e6d13d33124a 847afc26-9cb5-41f2-a3ce-f25488989f99 9e5574c0-a812-433d-9f80-537d90672031 531e35ee-9e7a-463d-9226-323e9255a16c ddf0ba91-c4a5-4fb8-a206-447209752b2b f293e0fc-e5f6-473c-a9dc-9c1a7195a541 caab1152-d065-4e17-8028-7c9c38854050 93b3b172-7596-4689-aa77-f5d273cc8080 5dda5d4a-1e1c-4b87-9b9b-fd4097ff1749 e5e87ff1-4a01-44db-99c3-c54bfa11e738 a30e2b81-b9db-4234-9067-72a6fac3f1bd c41b8fb6-2039-4a61-a183-781f09433180 1dcc3b3c-744c-4d57-ac3b-3198d0209259 cab14a26-1443-4fc5-94a1-285477877761 80c9dd2e-96c7-4230-9c98-6575905d8b33 7b7000fd-e7b2-4063-bcd0-cea4b4039946 b9d047c6-5d70-4924-a9c8-04693c83dd05 58da7fec-f5d0-46e8-82cd-c76401e557ef 584eeed7-7b5a-43c4-a72c-8fab6233fd97 129177c9-9db5-4c9d-b86f-eaed30523eb3 ff5435d2-598c-457e-85ac-cb9fe3e56ab3 c8ddedb0-223d-4b44-b797-736a57f47c07 5fa994be-9d9c-4460-aaea-4ccef2914a60 10966834-7cec-4a69-95c4-b584aeb6d2fd beab1d9e-9b72-4074-841e-9580c5dc8ddd 37f6c492-1280-4ae6-9c47-ff8fb58b655a ed281e34-c6b0-4d46-8876-aa9debfffa99 8d3a788b-43d7-47df-a02a-4514ef633355 dc5801d4-68b4-45d4-a47a-527c2c402af9 220fef62-7c7b-41a3-8e97-41fda5656d84 80de3a2d-a427-4c1e-8254-112dd0cfbb0b 7a239413-d010-4d02-934c-98511fc0572a fd1601f8-84fa-4e1e-8aed-c9a31382e69a 49a7247d-30de-4bc3-b141-72f29cf2732f d9b1b34d-e48c-4cd2-b43b-e6dd9859978d 29fb68ca-5ffc-4ea4-ac84-87717ef59c44 7fb87036-b5cc-4a72-ba14-bdb2695f08e1 aabf7796-c33e-46df-8aa8-4d75a26cf74c b1693141-81e5-4c80-9dcd-8d810c6584b3 7246ea1f-ad18-4a9a-8074-680d8ed3e9d3 a8f823a7-2c9e-4197-ad69-cc739f149a01 41cee953-cfbd-4f48-be5e-f8191ebf7922 afa80859-ddd6-491d-a4af-5c4e675b6422 5caf6def-42c1-4394-855e-cd84c090efef a09c0096-b8c7-46cb-bc38-5d6806f78f1a 845e4acd-a8d3-49bd-8a0d-b3ff8c47020a 3ac3f3d7-7f5f-40ab-9d5b-821edf63e50a 6a257541-494a-408f-87f5-ea1972e67ba6 8ffdb833-1181-406d-ae55-132b3cfb4372 fbb4b7c4-4d67-416a-bc66-be29706a3651 a27d4837-cd77-4a65-b514-c56731915f63 44ba9a32-dfe7-4585-a792-e7a94481edfd 34cfc9b4-4e1d-4bb6-940d-185c3b984781 c80e4f4a-7c3e-45e2-8d6e-a5dadb7c57d3 88216cb5-da69-45ba-8165-7d1e67e2cef4 89d36d5e-9282-4dc7-9f08-e1ea6715c75b 695ad83f-87bc-4484-b79a-646621a37dfc f9007a24-6435-4fd2-9657-82ee87caf391 4392efe3-abc0-4171-82e8-526fc040d5eb e9733713-11d8-47f0-911a-c65294c33a1c 43db1aa5-79cf-443d-9f1f-925013add57a 43d3e05f-a4d1-4d98-9587-d4e7ea0a64c5 eeebcca0-422a-44a3-8ca7-6ab17d4af2b0 ff3af203-bdd9-474a-8d70-76156f18c1ab fad073a9-22e8-426f-ba9a-1d97fa9a1229 922e1ad3-7b65-4d43-a367-88cadb279a41 010e8272-ab04-477b-b653-6821904339b2 80bce21d-7c4d-4310-8416-92961ee29eca 4a704b61-2e1c-4c70-a5f8-42580e26e4b6 98fdf998-9d29-4982-b22c-f8673d2ec10c 206cf952-2700-43be-b57e-cf5aff1fe30c 978aa7c7-fa09-4d97-95f4-e73e823a524e 53aa6cab-f0a3-4cfa-84cf-989bc821e96f a7f5453a-1286-42ef-a772-be79592c8206 de5724d8-32ec-4abe-8e78-97bc045c9f97 fd19c715-8535-450f-a20d-7d99e458cd8f 64778190-06a4-4357-a3e6-473a820d3554 7c13844d-8944-47ca-8a0c-2b19ac8e56b8 2fd8587a-9c4f-44b9-90f2-c3c7fd6cf91e 04b1c2a8-3331-4918-a44b-5264b9b79380 cee86cc9-26aa-4fec-ba3d-9b61b04f4f6e 6cb5b3d3-b26e-4fec-bd35-bb3bf96ec313 f30e1ed5-3a89-4afc-900f-349c32e897de 823dc22c-0c27-43e6-84f3-550df52ee4b3 b056c056-0aed-46e5-b490-11725eb5a90c a06e974c-de3c-477c-8336-a1bbcbf8869d 748e01d4-8c26-4e47-8b3e-caa8f7c78dc9 ba294140-d7b1-4c84-af6a-f09dd7134ac6 296bcdc1-768a-4f06-8d59-655be6dce709 ca198050-0d9f-4fbd-8def-b4b68f1c525a e174bba7-4045-4b1d-a5bc-57068f2ccf8e f508728b-bde3-4bf1-80b1-a20961f09c7d 229a1498-c232-4284-921b-526e7d5c93c7 53c1b32c-0b9a-4c36-be77-6b4e4141ac62 98863f2c-3c30-4ab5-9e01-636cc059aa1f 24a17fd4-02bf-4c44-9f53-0cc14754c0cc a50f9391-7c45-4ada-aedf-be991c23b5e4 1fe12104-8f6d-4b31-8010-b5a3c3f95d07 2a6e5dda-9d97-4d39-86c2-f77e6b352cad 89fd20e8-3c56-440a-b6be-45b64e8bb991 6b645d8b-82f7-4b12-8912-470d748b1fcb 1581eaeb-b385-48f3-b06d-045f4134d9a0 1f0724bd-2681-4ceb-8408-1571bc0a89a6 9c3756d5-5a1d-4e55-97a2-d46d15174d62 31445e0e-2705-4df2-9ca7-67354f9bf457 5cbaa195-a968-40ac-9a18-6447075f5e1b 1ff6d7d7-059f-4b94-8fc5-5ab28e1cb51d 835db923-3ef9-45cf-b6b3-5076be6f88d1 b3ba39cf-3194-4c91-a726-d45b8aa42e5d d5a39aad-9909-4b0a-9a50-ea2ad0aaba81 492572c5-fa6d-4297-9aad-f62fa438308f 8ddc0e3b-93ed-40e7-a60e-9efb8303fdab 62982d52-b836-4f79-8a64-a6ed3946aa73 9adbc03f-a390-42af-8496-c84fb2114734 af93c1d1-2b40-427c-8f6b-e0f9e4b9d8d2 b237bc69-7a2b-4c78-b0b5-d489c714e940 64debc54-2bf3-4221-9b9c-5b9888dc2c21 78997a0c-8905-441d-aefa-8d0cc7b5327c d9861d6d-e61c-4ddd-98b5-314e0a5e9046 952a8fb9-9637-4a8d-9293-c09d29e6a6f2 745e3af0-ec83-4afb-a466-bf9bef30622c c5444ec5-8dc0-4e78-add4-3c27e6f83049 4b693922-82d7-43a4-bd2d-6720fcdb25c7 7e96a035-79f5-4dbc-b46f-a079afda2149 2bc70b08-fd92-4c9e-b289-53c06c57a738 66099386-c0c8-4700-a1cb-39b0131e3411 18ba5530-3080-4efc-8318-99fef1e1fc5d b641ab3d-b58b-4360-bde5-67ab8b56e1ec adf06aee-ed46-4a1a-8cc6-14498cc0c42f 69351488-46bb-4d5a-aae2-782d3aa88e70 0d6dd945-ef03-4298-9ca9-0b65e5efd495 33b4ee8a-4b16-44e2-bb86-0865a30620e0 bab31a14-2514-4002-b790-9e97764ffa06 a2860682-cbe7-430c-a1af-6b4f8e6d0903 9c65bb46-6090-4240-9c95-f8641eae2757 3042dc20-fb3d-4c2f-ae04-6a36d310ffde 5b28de87-1639-4408-ac0a-7c55812d1447 3f389113-9afc-49c2-9b81-ff30f379265f 036a9696-fcd9-4dac-8475-955cb62601a9 dc384fb5-5ba6-49b6-88aa-a1b4619edd61 606ee807-246a-44b0-afd7-f06f6f6e6f71 26fe0f03-6e5c-496f-ae13-abd7c0a2ae18 37a02d6c-b211-453d-b606-e82592ec4db8 fa813b2c-dde5-4d77-911a-a82ab817e398 2b5f3a97-d4d7-4b55-be46-0a170e1ede10 e77c4c2a-6921-4363-9f5b-621875971078 9fc2779f-64b9-40a6-a023-e6eb14dc6eb9 6ef22b2f-ac4b-4193-94d8-cd93c52b25cf 12650eec-a5d9-4eb3-8654-11c6c765703d dbd9fe07-e4b5-4480-8f85-5a086f18df12 9c42949a-69d4-47fb-a31a-7d74c7c5f04b 5bf218a2-f6b4-4da6-a92f-a40c70f28022 24c4212a-65d1-450e-a56e-baf54e092418 3fc16e17-115b-441a-8f0c-d307621739e4 542c5184-2024-4680-b19e-5bdb48e6f08f 3a71ba40-ceaa-4c15-8464-6ccb1f7fe6f5 92b28d04-5774-47ac-92f2-4a60b9840578 38d4a257-85a4-4f2a-b618-1e8d0087d3c4 24852f10-ef02-417f-a435-ef83ca9e43cc 8eeeb69c-c4cf-4b26-861e-46a0197cdf4b ef3f4d73-8bfc-4e27-9369-a8bab2e77bf6 181d1485-480c-4b4e-b104-1232722577fc 22476e18-56ae-4a16-ae96-e140f05adaeb 6d18385a-9a66-4f08-b9a4-fa3886f3bb2d 1a984edd-1d73-4985-a3e5-6f1050a9e2e5 a80d9999-32ec-4b9f-aff3-5cf70abf6305 7c1d641a-19bc-4a9b-8d02-c409042b8b82 7fb54ea1-e036-4e01-a8a4-8d2a2d229d59 5afa1976-cee1-43f0-a4cb-0a49ccd53032 b2c48547-fe39-4dcc-871f-42b5991777ed f17c8e8d-94e0-48b7-a32f-cf275269033f de6ba880-a8dc-440a-b49a-8030c4c4b4e7 33c59f8d-6c22-4515-b976-78c5190c7005 8c59b276-7761-4cd7-a347-ad0257248fe7 102c7872-cd2e-4fbf-be1e-c677a4d6a783 ccc6c6cc-4c2e-4016-9277-fcf1231279f7 ea1eaa09-e4d2-419e-bed5-541f195824c2 127007ad-f976-4387-9a67-4154207a0255 22c4d5ab-c4da-4af4-9d68-50b0ebdb6324 a9032d03-2806-4177-826d-e173a377caf3 909294e8-bf62-49d5-9e18-2c6dfa594a0b e2b6dedf-fefb-4afb-b844-7dcfe3bf6b21 5492afa5-c208-4a5a-b6cc-c2edb6f82d9c 0553d56f-2d0c-462d-8bfb-176c56c01bd2 0ba42d4e-eb3d-4879-8a04-58fe50274374 40287895-1b05-429e-afbb-3fe3d1e47260 b30ce1b7-3515-485b-bfb8-11290ecd400a 08472f0f-9386-42eb-9c9b-5cfdd9c001e1 3f60af4c-a1aa-4279-8d12-0bfe93181b2c 9d57e2ab-9d15-41a1-89d6-552f8842d2b4 e8141258-eaa3-4d13-836a-739500380b87 e5fa16a5-022c-4b17-8b58-20197e611af1 9326fd22-e138-4ffb-91ff-f009d9132a6f 4739c54d-dc3b-425c-9cb4-5ae4a22e3cc2 c73f0c0c-5791-4617-8e4a-29412a40210b 278d2955-e795-42ea-b5ba-e37cbb172005 4633f19d-f7b6-4ed1-8ff2-30a062926583 b5770d61-79a4-42f8-9400-6845ff8965a6 cbb89cbb-f023-409c-8f8a-e2e67cb2c379 abdec54e-7aea-4d18-9d5a-af34cb9dc50f 561707c3-95a5-4775-b57d-256a26e3be9f 72cc7268-e70f-4dc1-be90-7f6c429f1878 18a3da0a-78be-459b-871c-10766f7ca433 026ba1e7-e1d2-4bce-a760-018dcbff5463 243f2853-0d22-4278-ac0b-6d4f399297d0 64373d8e-90de-4031-86a4-e8ff6c287c53 c6dcdd8c-6c33-457f-bbcd-f2ca0ae95cb7 be4a873f-0eb7-4190-a44c-d509607315e7 2164498e-dcaf-464d-8bfd-986cb5951a82 2809397d-c492-4b05-93c3-a42c807b4342 b66090f9-adfa-4bdb-98a3-de88c6880ded e4dd91d1-d345-454b-9083-ef6d27aa2225 d8cad527-0f28-4320-9f2e-4c7e85c1cfe9 35267969-1a24-4e95-bd20-a2c494ce70e4 ad0557a3-080a-4414-a3eb-6a9e8b424da8 a5ca29e0-27ba-441e-ba2c-e8fb58d1c1f4 e42cbfc1-455f-40c8-a6ef-4b433836d573 f9c333d4-875b-4220-9e39-27e5a64e6472 38a9e2b3-8e0d-4c38-8f4d-d049a043a4b7 9a4c2ed5-a4ed-429f-bbd7-771654fa33d7 8c1d22a9-5269-4cb4-946d-74b4b5f559bd 85f8346a-2f86-4b79-b40c-b0f9b16bbe00 a3e1d23c-4f6b-49c9-b815-6c47d9f6823c 8e7f9c79-4f7b-45ed-8ca2-9b15e4f1e606 c40e0f11-6536-4b05-ba71-e2591f471b6c e76291f2-4067-40db-ab5f-eb1193ee9572 26073200-dd55-43c8-b1e8-fbda7f79af53 f442f5dc-e9d3-44a7-a9b5-d201f686c976 70c64f40-10f0-4205-875d-24beffb123c0 fa27a2cf-fe7e-461d-83a4-b12cb211fc22 aa4c0dda-574c-441c-ada8-f549ea1228a0 3c7e5012-8848-4388-b42a-0bd1e9eb26c1 4ac29f35-a7fe-4b60-bdcb-a4210b77162c 3decdc9b-0b46-4180-86de-2d394e509c00 35d88453-c7a0-4f2e-aa95-0a038aab58b0 2625297c-8235-4ab7-9d6e-11c3a3021a80 8d014b33-b706-4291-b71f-c45c61745cd7 293569ec-b7a0-4fda-9aa0-8bd3e605bfc7 637adca7-7df0-4dd1-bdd0-951d4d058ddf e5093c28-9074-4e15-89d3-4e981dea1dac c0700fad-72e9-43fb-8dd5-213dc612bd68 26e988a6-458f-4390-b770-536da6557296 f013faf8-cb87-4dff-a7d2-58f281b2ae37 6a42b03c-8998-4109-8420-18e47f9e360a a3e1bf16-9cc7-4701-a188-bd2a5d869262 b58b7fe1-61b1-41d8-896c-fa8606be90bf 4fb67926-cbc2-4661-9879-268156945e0e 4677548c-83f4-4a31-888b-398e19252ccb c8bb0830-691f-439b-8e56-754e6cfd5efc 9d7860d7-3ab6-4078-918f-0f2b4169cda5 79ae11c8-fbb4-4b46-9f4f-8764e1f0df15 23d54320-a9bf-4b6f-b492-bbe07733eec0 1fc615e7-4727-4eed-a2ee-1922c14635cf 4ea51960-be64-4e5c-8739-d986996378a5 bebb315d-7414-45d4-a793-1d102926dadd f624c4c8-c2a2-4560-828b-e09026f45318 cab55c9e-fa0b-4f58-91a3-3e5ad8933bdf 45a7306b-8e09-48d5-8144-9bd5c959dc81 e07a0edd-cf5b-4f29-a3bd-18fdbde2674e e3cfdda0-522d-4d26-8f52-671c7cb1ad86 40e73eef-0356-4f69-b2f3-31540af68cd7 d55f8762-7da1-4732-9d7f-88e0f165c07c 7f414bcb-51c4-4710-855c-040c7227fc3e 5a76c05c-8c2e-44c5-8f1c-e3c0786a8c9c 769acdb3-0de9-4aac-b258-9df4f9e950e1 e94e40dc-f768-457f-b157-98259267fe84 fde787aa-0f97-4566-a01d-945d70911b16 d179be43-9dcb-4e37-af1d-473644a47a3b da9321d3-bea5-41a4-8f8d-2ba0726cb3f8 7668056b-225d-42d0-b57f-c419bafa570b 78547b74-c412-4838-9f8d-5f3c7f3be1d0 625f1ed2-60c0-47d3-976b-d6423d0cd598 1a63004a-4d38-494a-be7f-17f66205ff18 d66fa79b-48db-4eb2-911e-285ee78c97e6 d8b27c65-b775-43c7-b25e-6ad0ca865405 80dd36fd-89c0-4dff-8e7c-3373c9616e52 6cab8a50-f4cd-4e4d-84d6-b039ce807e0c 772bd61a-6f8b-444c-9bdc-eab8d7914158 62a61d96-610b-48bb-9763-e81888a9ff4e 14efb97e-14fc-4ded-84cc-ff6c9b748b90 5dce07a0-c2fa-46e1-b82f-5df1426056a1 d372c994-3aa9-4ded-9e2a-ba7f54813661 1267cda9-f15f-4e32-a7ed-2bbda67ef523 dcd66202-f710-49c2-ac9e-fec797db973f b616a80e-87ab-4021-b53c-1c67c722e285 a20fa0fb-f85a-489e-bb3f-56857def5674 52762a6e-e80e-48b7-891e-c77ebcc49317 82809368-5f1b-4bda-b569-9b3fa119d768 a71c0576-7c8b-40a9-821c-a19a0bbae3d1 c4e32752-3399-47bc-a75e-1dbd3ffb9750 b03d3bc7-4554-4d0d-9770-a6d95526179d 1fbf2607-dee4-473e-a0dc-71ec675fd20a 67ad4a0c-1719-4bc0-bd2b-3211da45b14f 596a48ab-29d4-4417-98e0-a713ea0827ef b9492064-3eb0-4fc4-b500-261d2edcb36c eb5afb09-a6c1-43c9-aab5-50fb9d9f1489 86195888-f9f0-4014-96b0-f7fe8176410e bbbea585-47ee-4a37-a477-6e9178f9a5dc e6694ed9-68b9-4bf8-aad2-6d175d36a27e 1d27bf95-b598-46f8-b7a1-df27ba315739 7a3c8d14-9db3-41f2-a57c-05cab4a8dd7a d4a35708-5d78-4cb4-8439-bf79208c5e6c 1643abd0-6f14-4d43-9bc5-596e40a721c8 d7419ad9-3403-448d-a261-73d5499fb1f4 b5846996-69b6-45e9-a3f0-5c72cde76cfa 72ed61e0-197c-435d-b51e-b4d8771a5145 d7ec796b-a39f-4473-8801-ab3906efc7e1 bad680c6-00d7-44bc-81b9-98682fa61ae0 67bff25b-29e0-49c1-84b9-94bc3e9deeb4 d8263e95-abf2-4170-894c-c220d17eefab 64fce29f-3ee9-4e9f-a67f-5c8f1c28ee21 7288ce78-f13b-4c3c-a8b4-d032a062aace 3a0da909-5038-42ae-b0ab-2c99a1f697f1 c57f4092-f3fa-426b-a9dc-79b2f1096a3f 6a1521c7-c167-4acd-a841-ad009dc85e13 7012ea7c-75bb-4af5-9818-8aa06d25639f 818be423-ee9e-4b39-8010-2b8510badab3 bd7b3eae-6873-4a11-b463-6e0ab15ea584 67603057-188c-47b7-ac99-f562538b7454 5d975e54-8a74-48e6-a561-9a300aadb3d1 07d8f4c7-266d-4e61-a95d-e7404074c282 a45c5b6f-eae0-4acc-ba66-21ed8a979813 b3fcb915-99c0-49a9-9f0b-d61ac4e11be5 a439c2f2-56e6-4719-8aa6-87fb20b4e87e 85a96764-ed8d-4d30-bfb8-77fc5913d7dd 64d0dfcc-978a-4ed8-ad3e-bf5f2cbb8313 dd7810cd-ad8f-4663-ac73-35f4b08c9ede cc6f8eab-d553-4932-bd36-e255fa8d474e e3e5f96e-d0dc-4a40-b622-744c388aa3ad 3104e370-85c3-4bfa-89a8-e4421c7841f2 2d14870e-c421-443f-8a38-508325506424 9e28b109-8a30-45c6-baf7-b8ca0a3aa1d8 239c7b6f-ac3f-4746-943d-4d7272622f2d 9c68039c-ff08-421f-8e48-c022754f470d 4c0898b5-3826-4e29-a76e-0479625d4e5a 4880152c-dd15-408e-80f9-e3d9ef3d6c15 8903a243-da65-4111-898e-61fe16125dba b09586dc-cc85-4bd6-a1a1-490da84995cf dab28615-68ae-440e-be3c-497727b4b0e6 14291e8c-1e15-4f1c-87e4-9853714c4843 380aef77-7811-476b-9da2-0297c0ce925e 03738d80-fb37-43fa-978c-dd06a423e00a b4419efa-8ad9-43c4-9d72-af803019397b 558d8f50-8375-4da4-981a-4308bf022833 c8ca7d2b-dc1b-497d-9196-e9912b64ec1c 5d1aa5cc-aba2-45da-a680-b818b09ec47d 05bc907a-2a0c-481c-8824-523f8db18a1f 44aa9da3-564d-4117-8568-2c0bf03b25cb 6fb1f01b-c839-4aeb-a7e8-5214abefb248 a9e43775-3e64-4605-a25b-dda28fc6424e 3714d169-dad2-47d0-9d25-c7efaa303ef4 bdd40984-743e-43f0-b7b9-e82b8a75c03a 04de9466-923e-4b71-afff-a4a4f4ce6758 9e4f970f-fef0-4740-80e7-0f6033698568 7ef889b5-c286-412e-808f-c73d9f8e1d75 69fe0ca7-aab0-4126-b376-008845e075e0 b0189c23-2619-4dd5-b767-9d24f950b63e 4a902bc8-ef2e-4dd5-b771-011d8725eec2 4797f955-b1a0-42a7-9003-9ca8f0fa56bf 723a093d-a281-48ee-93f7-fac67b7fdf02 1c2e952f-1603-46ac-9ef1-a4a59d3883ce 99edbd08-9531-402d-a059-4ae475bd97d0 497f785e-9d7a-4573-99f2-075b0d61494e df80c5c6-b245-4ed8-844a-f2ad6d634174 2dc1bdf5-a70d-4078-8f0f-a781c698d7b2 8e34b207-9b29-4334-92fd-7460f92e141e 948ed245-ed78-4e0d-87e7-d775954cd10e dfdd0003-b5a9-4bf5-941c-b2b820aadc3b 235a3a14-e46b-4551-8e26-6c9dd33d7f05 607099d8-62f3-47ae-a7f5-a790be73d872 2aad9358-093c-48af-8802-3ef79166d071 5f4ba329-12a0-42ef-9a54-a3f7cb7bca30 77b7902c-4d3f-4756-a2ce-efb400ae6aa8 bc515370-59e7-4953-a3af-3f83434f7251 8046a90f-f4bf-42c7-aee8-268828062889 4c77c78b-a917-4ac2-83b6-ed79bb4bd6c7 9127b5e9-81e4-4ed9-a410-3e7583ed2a38 20460c19-c092-47cc-a984-850ae40786ec 67d18ae7-49e0-4d32-b800-35a0b56bddcf 11527786-a7d7-4dcc-b4e2-1f5011e8919d a6619af6-c085-41b0-a538-3a18d67553f1 12131259-be2a-4cfb-9049-36265a9dcba5 5d60ba6f-81cd-48eb-96ec-5cff4f769582 e58c3269-1cf5-4214-96fa-08eda406e77a 7a5c065f-d387-4124-9602-177d757d3d30 fba8f901-18e7-4065-952d-bd16acc4e977 aeffad27-dc81-4ee2-83b5-101df1d52a1d 13f1dcad-0dae-4add-9719-53bbebcc39f3 574e3287-7a25-4831-aa2f-476c1e7533b1 a33cef9e-12f0-4f9b-8488-5445cf77181d 48399792-da15-4062-baf6-ea7aa689f7f5 a00540fc-b8c0-4dac-8111-5bc0cf799f74 aae21fb9-467d-41bd-b585-ffd02db0dc69 a6c5524f-c1fe-4020-96ce-0773e7d588b2 8fafaf8b-f459-40bf-9b08-36211b64f9b1 3cc20694-d1a5-4d82-b680-40197924b830 b954d171-d07b-4aa0-9545-0af7928f5d83 9799a344-7133-483f-a1d9-a965138d9183 628732df-9fcc-4513-9296-cc30f45f0c3e 788f87a9-818f-44fa-bc0a-3809515222d0 4ae1078e-0123-4985-a23d-4ef3652a37e4 6e68a534-14de-48bf-bf15-4bc9683da52b 39794dfd-c0c7-4635-a8ea-82e72f360b20 5395d31c-260a-43a1-be55-6aa27200e038 4853f164-e7d4-4c6b-9704-e77fe77474a8 8c171c97-22d2-4e88-ba25-d2144a92f6fb df680780-8ceb-48a9-b723-8719226208b3 5f71ac35-1f2b-47c1-8c2f-b83edf190223 9f709df9-ca2b-45f2-a4fe-ee989e43432c f40d08ba-4095-4cf6-b62e-4101a2dfc5a3 2973c628-c4a7-422d-80c1-7f142946ea39 ad1277f0-cfa9-4164-8bd7-30b6ce6651e2 d15d694c-05aa-4b90-bab3-35654770458a 73bb672d-4997-4347-a7f7-a03f207904b3 c53946f6-d9e9-40c7-b84e-9e7d0911da5c f286c9a4-c852-4b80-a5f5-1696f2213e9c 90e988c4-b38d-4339-89fc-9f486a24982f 4d8ea07b-bfc7-4e6d-96cc-f9007ab77b03 acbadf80-8dff-4118-b2f0-22da55594b31 e34cfb33-cd1d-4193-aff6-4e8c9b7cc06f 0c9b35c0-a661-462f-b1e4-2f8864f1de37 5f1988f4-abdc-412f-98f9-faf99524bd3f 4b6d874d-f2b9-43c8-b4cd-f4d59fff9580 4969daf5-61f1-49e0-b9f2-4817969b1b64 6d55219e-7e8d-4a98-a84a-4b8a8ed80795 21153078-f12d-4249-8bc2-710009ea5867 0ad67a10-815d-4243-b15c-444f75b4dc45 3a8255fd-e86a-45c8-b0c8-ce23590c61f1 60eb7196-ad92-4be1-81b6-2fac819910cc 3ae97e10-ec4a-464d-b391-e96d65823d5d d3274534-2731-47df-bc04-440b13d2e58c b89ca28b-2760-4ba9-a6fe-2c7351ed77d9 0adfda5d-239b-4f44-a3a7-44cb291f9058 8f958cc0-04e4-4dca-b931-2d4f3c0c4098 1889a668-0c64-4e28-9daa-b4e6d97bbf1c 55cadf5e-e715-4145-9e88-b83c4f43c201 c3845950-dc99-4675-b179-a1569d56d369 3472fca9-ceca-431b-8ea0-7773d6bf133d b05ae80d-9051-4717-b193-767d4bdd6f01 f4b17b74-0ab8-4344-94b6-b876600ad7a9 2f0e25ad-446a-495a-86d1-65f40ffe0d8d e2159e17-b582-4839-b937-f4f5cb34a420 99115e4a-8a5c-4ce7-87b2-37910b5dc45a dee34b07-e569-4a0b-8c09-b56053526786 e8f9c598-294f-4ff2-a2fe-8d2f23f79b90 99f97040-5905-405c-ab86-05b54e5c9a36 8aab6646-8a1d-4dc2-8567-0e84a73123c0 43b3a738-3825-4380-8d48-14b8a8d9bf0d 20b52fb2-263b-4c43-adf6-909d14de0805 a5aca6ac-088f-4e23-a7ca-75df9f5239b6 25afa7b0-7117-4e57-adde-53ed973d3117 4fd95766-6d24-4a3d-8eb1-b9ab67c7efe3 a2ef45e6-b817-41d6-b2bd-50c54df8eed3 34de71e7-7e36-4b3f-8840-20151acc1c52 e8c9b756-f18b-44d7-bd18-7b8037893bd8 d29811f0-dfea-4f25-95c0-35072ce04117 916cc4c1-9eda-4be4-b8a1-460d1a94718c 2f4f9650-cd72-4d43-85f0-deda54d51ec5 0662c4d5-e8c3-4d83-8f76-2dc7ed40f43a 5e1c4e42-c893-4d46-9792-d520441f8e50 c636d46d-6bbb-43fb-a064-81fa4eb723e7 fc63e11a-8afc-4e34-b30d-864e845dd1e6 5f91c4ff-1133-4853-bf09-75dec3e71747 f4116d83-04ce-4571-a9ca-0c3083a6ae14 aacffde4-5caa-489f-a519-eb03d0dbd89a 4630ad3f-b259-409c-9f84-771b7c919ef8 faef9616-8142-437f-8c1f-dd9d2ea5fe4d ed9d0a4e-2c20-4b68-821f-881ed64da1d3 f53d9e39-5287-4388-a7ff-ad59fd195fe1 51f5034d-b5ae-4cd0-a949-71d357965eb0 1eaf349a-18e5-48ea-981a-117bff9accb1 99d7298c-e750-4461-9123-459511dd5ede 7cb94e43-67a0-4b4b-9f4f-2edef69ef5dd 53121947-a318-4d5e-be7d-2e5db52a66d0 5a39601f-6e7d-4fa0-9585-e2f0c2d99a6a b79525fd-6154-436c-ae56-384e81668d3a 1c265c63-402e-4dee-8772-43637b640d45 0fb179f2-beec-44a8-9cbd-e0b5483f84b6 0c671225-1f6a-4303-a6af-f51afd7b34a2 62ed53cf-69ad-4c07-8b95-04d8115fd119 fab99038-f85f-4e60-9c6f-f3f53fc6774f dc329ce5-fc6c-4324-a3df-4f18bcbf0e54 d09a817b-2275-45f3-86e6-f897f9495320 875bad70-d459-4947-9a17-7c91d07b127a ff5dd780-d75c-4e1a-982f-917a88d2b73a 822a8d24-12e2-4160-a00a-2163b4590037 99afe578-8279-454b-97a8-d1bc2f01c783 c0d86880-65d7-4295-89dc-f981aa869e7d 1d8ce603-d742-4860-8478-6c3a31fecca1 dd7d81d1-10b6-4176-a30d-e4f030662989 37b6c8c3-a6b1-450a-912f-72722f26fb13 5a20d6a4-34a3-4063-9caf-f1fc8d83b2ce 7079ffcc-cacd-4e4b-a871-955a5f0d3f3d 925c6803-a153-4e11-b910-46ec096f01a0 f3da6b2b-e657-4f54-84cb-97980aa0a9b4 c74611bb-9c34-41bf-afc2-9a1e81bfcd50 d920faf6-81fd-4555-a52c-866679c7ae1c f2242090-15d8-4079-9f14-c9229476350e 1aab491b-0156-4afd-a508-ad26c1dc1511 b6f1afe5-c6d1-4301-8a3e-f32ef0ccad4e 00f4d41f-b1e1-47f3-ad19-fb88b2f4096f 88d3cc4d-e5a3-4003-9942-a452b75a4b32 bc165087-0f08-429e-a63a-54717ac2f339 e1eaacb5-3166-45fb-83a9-5ba03774ffa2 75e0478f-518b-4ea2-a3f5-4131f1b14e47 a7569ce3-ed21-4e6a-b1b7-0d0a58a683ab 6cb8383c-3505-439c-b887-5c8f8860b64f 3eddab61-072a-4196-80ce-71a211626616 0999468b-bf22-429f-9cc1-3c024c47335f 9845de28-b84e-4278-98d4-a273ae9c909e 9ce1fc69-5797-439f-ab47-5fa397ba4277 0cd9c450-2d23-4188-8cbe-5b5d9f319736 c09cf2a5-4342-47a5-a9be-855915de348a e21e4802-fd07-4cc5-9de2-fc6ae0d46ece 2a074a64-d20d-4bd8-89c9-171d3bc8e8a6 99f65b2c-0ccf-4903-a8af-673358ad49a7 51c9b0da-baed-4f89-933d-60f4d5131b0b e459c719-bf38-44c4-99ba-7e848ff21a0f a13f40c3-8eba-4908-b824-44850eb71143 98fd6629-eb82-448b-8da1-db30af9c0a07 cfa95e42-ed98-46a1-b329-da3d6c87e3cb 92d78761-898c-4e34-b2d6-b41ff4413e13 743f6ea0-bd1f-486c-a6fb-603d0792674e 00532b96-416b-4e09-bb04-149c98463d4e 6ab75cb4-e43e-458f-aed3-8a4f66f6eec4 d37f33ee-1b90-4b1a-9309-a34e90105340 862fff15-e0b6-48e9-89e8-efe61d3b2bc9 7868c3f2-c0e2-40ae-b6b9-6f2d35e98f84 fda52f72-b764-4701-9de3-718e8331d956 b65f2963-0f3c-4279-b45e-61573d3010b1 5600e006-6cc3-48bd-b1ad-314b8e81bec4 9aa73e6f-125b-4844-9cc0-b8510d29c792 bfc2d432-0019-489d-9e60-2587e7249fcb 52e054be-bb74-4eb1-b191-a8cefab534b8 2abf2874-9664-45db-bd1b-51ac7807ef6b 652c4af2-9068-4fa9-8dbe-9766a034ec66 f63e3751-cdba-4938-b14f-b3baa19b2c07 005ce930-5f1a-4f21-aec0-c97d077556e3 86643fd6-d20d-4440-8074-ad9bf34de119 48175277-2f0e-4886-99cd-1b3b3dc1dc3f ea20c219-e174-434a-b218-48ad4837ddd4 4fae8c0c-8c13-4904-b74b-37ac2695c765 33f87a39-231d-45ef-b88f-1368750f8cd2 21d891c4-5205-4a26-8043-b9d71e883c0a 793e7d57-56f5-4623-aa58-08c89c4fb3f8 9c238870-ae65-41b0-a254-8eae210c4b20 14c910f5-850d-464a-a357-858bea2cfcd1 f02defbc-d1f5-44c0-bc7d-a6cd8f80b2a3 1a5f3ccc-6e7e-4b03-8194-26e6aa045373 fa4a7c44-7bc9-4f8a-b890-8742785c3649 14b2cb4b-ede5-4f73-a2a4-3bd311ba477d ca3f013b-a219-4d9a-b920-cd15efc8e2fe 0dcbb7ba-15a9-4beb-abe5-d46b286f7f5a 410d81fe-19d3-428d-afdc-69b37cba3e63 ca30a6fd-bc71-4266-9d55-11e0f0aeb5b4 f61b113d-04a5-447a-b961-3a07fb94a3bd 045e98ed-068a-458e-8d77-619a2f0949f7 55c6edb7-3c02-4dc8-bb1c-d9fbb7c792f8 6dc2167a-fdfc-4fcd-a0d7-11a8827c40c1 b65355c4-6294-4530-8a48-a546084e8864 74634e5c-b7ea-47e4-95a0-5c505b7d0dfc 631a56f4-7ab7-4242-85ae-e7694887bad9 7b8f4b75-8e9f-4cc0-8516-59d0ccff1631 50e3a10f-08e2-4313-a0a8-d4caab76c532 f213440a-06f5-407a-a073-8bf4dc391590 17c8ee2e-caed-4ec0-b87f-bea17aa0dd3d f4b9ce87-2d24-4edc-ad69-2fbd14855015 6a8acbbc-3fb5-477c-a246-7809ffcdf021 08e20850-0e80-4a4e-a7a9-31e9792b6189 747d1f8d-6735-46ba-a492-e4192381d9b1 b41716b2-e9e3-406d-942c-513e0ef53340 50fdf9a3-f6e2-407a-b974-9ea6e637f9f3 bb5f41f4-3bcc-4b12-84b6-959a907ae525 bc1ed2ef-bfbc-41f9-a01f-99a9d0941f57 a70866c9-e313-4b8e-bf6a-6538c0f9e1f8 71a6127a-46c4-4f9b-8c93-bfcf381302b4 3e75e924-c6e0-4586-8430-eb3227495c25 4a714285-5140-4822-b830-057718ea5239 0caf3289-5f70-46fd-b374-5aba87302f71 a7c32515-7583-4c64-aaad-e1402139e51e 9881a9bf-a473-426b-b70c-5fedc2300ee7 a54c40aa-12f3-4992-b84b-b4a739f3ef74 cfd3ff11-d34f-42ae-acfb-182753725a4d f24e0644-6134-495e-a64a-a21899c2cd80 f5066e71-d682-45e1-8ee5-322d8e6b5822 f24212a8-40c4-4b63-8351-d2c8f25803b0 590a0220-b450-4cda-9220-b38798f8f670 dbcb8782-accd-49e8-b52a-f7c960e2fc85 b3683b52-f02f-40ee-8fca-a3a666590198 601836af-098a-44ef-842b-687e1350397c 703c0232-5281-462b-b9f5-e78df3e7eb0e 373e8b9b-fff3-44bd-ac35-df6e62908d36 77e8633a-c476-4ae3-9c22-6afdd6d61349 e0c6a3c6-885b-4a7a-8cfb-3e9fadf22c2a d064ab8e-c2c4-4b9d-b34a-a6daeba57b45 8ed2b8f6-bc9f-4c4c-8250-65e8f340709a 21e53d1a-78c1-4704-9413-56ed0a5add3e bd7dc479-ec87-44b0-8ab6-af4c620541a7 21197439-6a9d-41f8-9039-3129f58a8c14 6a8f1096-4037-4d4c-ba4e-f316f4c8f29c dd7e139c-d109-4b1c-9f80-eeea2fd455c2 37832f48-9a4a-47e9-af8a-fd1f334be495 735f81d5-9848-4e25-9693-ac215e0b760a fc628efe-8374-4438-9e14-a816cb3d6124 a10af674-9630-4e13-9844-909b8bb3797b cb852953-dc62-4ead-bf66-9877095fcd8a 0d5235ae-6d34-487b-8cbc-5a0e12053c6b fc1e800a-3c5c-4965-8274-375d99724423 6803c0cb-cba9-46ad-9e40-adb15d5d224f bd1f13fe-d619-4386-bfa0-cd7e592f7fc6 a2876b64-22af-4113-ad5d-a871ce74f5e1 35b573c6-9f7c-4690-8ee4-ff85c37c7155 33ad5ae1-c434-4b6d-97be-6617246ead92 7de07e8c-ddc6-40d4-98a4-0aeb78fd3ff0 044b979a-cdbd-4a8b-9e6d-4c694b926ceb d4ae51a0-2f26-4944-ab1c-16c7852f2558 2c566980-2d30-4db6-8c50-f6451848e41c fae75dff-1eb4-49c8-b952-0ddb9a76f0e4 ca576be5-da30-43f3-9332-bad73a386dbc ee19d4a0-7eae-477e-a9c1-9b2dc75ec1ee 6184f8c4-fe46-425d-b5b3-e8e2253600bc f7c006f6-5a0e-42cb-a107-816c8bb15a13 b9a3c966-ec1f-4dd1-ac86-bf6a5fc8f75b d660fbe5-8d5a-4579-9984-84d2e14cd26a c4a4ce73-db1e-44bf-a828-852d423e6452 de1cae1b-25c5-4749-bbe3-0638fe440e72 2ee26654-82bd-418c-90c3-468e2bd221f4 6e7fe4aa-f39d-4201-a409-1a0466e6476a ab5b8fa4-8d57-48dc-a366-778f81f219a6 515b4154-652a-44b9-bcd7-cd6c388333c1 bd1bbfab-fc6c-4a8d-9e19-ce503f41d9e7 38e4885b-f97d-48d4-b1ac-42fdccbd1384 d9060025-e770-449b-9deb-0ca17c899e1b 99e3e6f2-eecd-479d-8705-f8d61def747d 3b3893e8-99d4-480e-b609-aa1fbe10fc97 ff273d5c-072e-4a4a-b709-acfd6852fd9d 4522d9a9-09ea-476a-b677-48aed1001b46 efdc689d-9c0b-447d-b0b8-ee9ced5fd282 e18523eb-1d6e-40dd-b706-b49a59983a53 7ac6f404-2c44-4888-a407-77e4c0b66d86 7985be5c-97bc-4267-b74e-7839df51a931 b17e3b4c-1fd2-49b8-80d4-d014e0b2c19e a153abca-7ce9-4a35-80b9-b9a3f83aa4ed 3b4b43ba-37d5-4e25-b10b-4c6515f06856 4769187d-6afc-4024-9e09-bd971cb0a6d2 99281a3b-b2b4-483b-ac3f-91e09c2c8c63 76aaafa0-34cf-4767-884a-1ab12c72ea6f 7d14796a-fdc2-4f72-a240-f175966d18e2 51f62120-4bfe-4b0d-ba3d-af85ba3a95e3 1820cfe0-93c6-4ea0-a60a-a00ccbbe228e c7f09ca6-d987-4529-b492-40c5b4a8d600 fce711e3-d9f9-4839-8cb8-5d489637378b d7e01523-25d9-4389-b754-8e684e9da2b5 d9d5e847-4264-4ff8-a933-70de50825e52 f7e16a84-3289-4497-812d-05c58777d017 3da908c2-2fbe-4f40-88d6-1795630706bc 13beef87-9d58-4fcc-b465-8ff96acd1bf4 c594f3eb-ec06-4845-9472-ef75eb2f5c91 af21ff24-d591-49cf-b8db-19e0d2708f48 d767779b-6ac2-4bd6-ab25-b21665de1133 04c7ed98-9fc2-4a95-b4f4-957c453b2be7 40954415-2c19-4877-9d84-6c8cc1c8461f 0456b797-2971-4396-ac56-d099a1df730f 4dc52732-14e2-4395-b7be-a7a863ca5c0b 8d4e5745-a5f9-449f-96bc-4aaffa47ca4f 0368d9cc-8400-444d-b373-a01d1b2d61ca dd2ab7b2-8b39-4cbc-9796-4a94392b7ecf 0ac07c7c-d429-4d14-965c-2d56ac59b44e 8f6a69be-f2de-48e4-adc2-cec05ff1edc3 d9b5568d-cc3a-4327-8379-a7e66b6b3d18 8ad942ee-23ec-422b-995c-5d7571aff55a a7889492-012a-436e-8b47-4d261b372d0d 4ebeefc3-9059-47db-95cf-c95c3edd22f6 88c89c45-e7a6-4ea7-b8f1-dda938ca1ceb ba407b16-9698-44b4-829f-4c93dca727e0 873c5b5e-ff4b-49aa-9869-b8086f38ecc0 67c26d36-cebc-421b-83ea-0ce8b3bb03cd 6125c462-fd9c-422a-a381-6acbe2204ce0 59d21fbf-14e1-494d-856b-3f72550a7dbd 7b42ed66-acc0-495c-911a-c7703d94b273 cb7b3253-4075-40eb-bf7c-3e07343c2af4 7f87c33f-ad31-4afb-a02b-32af1849ebbd 94c7c6bc-e5bb-470e-9e35-11e812c3ad5d 9c8e25ef-1527-4033-8769-153fc19a6ae2 15b2f01a-9268-4600-8c0e-1fd1f5bdbadf a8e62ba6-bd11-499e-856b-7ec7d5c37d32 071b6037-c5f9-4274-bb20-cf0e96108a81 cb4a6278-6709-431c-88ef-00268ba876ba 43d2c6c5-f06b-463b-9b4b-7aaf8dd3c68d e8072e84-ca2d-4315-a820-c2a4902e869b 4f707fd7-7024-4f49-9f51-c716bb25918d aec0e7d0-6d3c-43c3-b42d-c2a9b9ff8c0c c4e0a908-09d7-4b56-8ab7-97d754b6d14c c809e4de-3506-4082-a04d-b52285ea8cff f2d5c8bc-e642-4d7e-b906-d1b9f3748078 bdee85a0-fb80-44e1-a9a2-d005fb36115d 89ea809f-57db-437f-b654-f1a377a53ddd 7e606788-1a4d-4b04-a3a6-64d0bb418268 d27ff19c-4df7-42fe-83fa-d5e7a87828af 56826903-7de9-4209-bd30-f3b3e081ea20 d014cf99-2874-4687-9af8-dc52f082ced6 a7048ad9-1d3a-4622-ac2f-7d72c9c5a5f5 c2b90f1e-3747-455d-9db8-518f44c5c086 6e763219-31aa-44bd-a51e-bdc9b83b3d44 b5ed47f8-32e5-46a7-b8da-e730378679ea d98c1cf2-8aff-4f2c-bb6d-84e506c32178 99748e49-cec6-4850-be66-e1227db8de5b fa174347-fba3-4f2d-9098-d3f841db75a7 e31e2117-04f4-4224-b8a0-cf6f24a00fdb a5418e9e-1bcf-46a3-b9e3-17f3f5594cbe 1e58ebb0-f998-4e29-a9a0-740e84616f83 d111990a-ab5c-4fb7-88e2-f8a4d92bac5c 34b2b106-4cd2-43de-82c1-6e94e9339147 5965be94-91bf-4c5b-a286-77b80ee1d316 66c35e3a-4af6-4a7f-b64b-e51d31eb45c2 b156ac4d-5a76-48c1-ab8b-1a13a45ae2cc 1a43707a-6587-4d07-ade4-8184ed951de3 a4f5d3e9-10a6-49e1-95ee-66aa5777ce72 fc16aae5-77ad-465f-aca1-df35e8d8d5d1 8675ba32-64b9-46b9-99cc-189431194a5a 7822900d-48ec-441c-aaf7-bcc1940074a8 600b03df-87d0-46cf-b8ce-4335a4b972cc dca8b2a9-3394-44a0-8a03-240040877b83 fe8f6b10-ad98-4571-97fa-34e3f6125bb9 bba285a3-7b39-4aa3-8157-6e79e46eb9eb 073dac17-5ed8-45c8-8f64-962e80dbf204 dc979cdd-9fbc-4e8e-93f5-10eb4e262ee4 0fbf247b-02b9-4d3c-ab25-e91a99951239 1776a628-e3dd-459d-b1b2-b44987ba68df 9fb2f525-b95c-47ab-83c3-d4daf7651f20 fd591824-2df6-4fec-87b4-c0d24d84cb44 e267bd81-2ca7-4ce2-9040-9f6e8de8f52f 6a4395f8-9deb-48b3-8d50-159b40708073 e62ce630-4157-496d-a325-4ac1a8e41bf2 b5f3b19d-6036-46ef-985d-43fee14ddc6a a85d101b-4a82-406d-ae95-ba90dd7e12f5 17e8a1cb-0b3f-4cda-8621-4a92e5211608 030c1ad3-6976-410a-b8f6-93cd3a9f87cb 4fe7a29c-9cac-43f5-85dc-750bac167450 bc8158f6-5b11-4293-b289-235f504fc698 7cb65c0f-7da5-4f0d-be09-2ab6ab5a90c0 dd700728-c705-4769-a2a2-9c595cc18f24 93318f24-b70c-485c-84d2-154dad9b16a0 b84de6b0-31c4-4f20-80c4-386a2796f47e a771078a-fd2e-4484-83f5-669934c73cb5 793f784c-3500-48cf-8082-cb19ca3e7d5e 3c0b832b-7567-4ef1-ac37-0f46d8f704be e09a39be-0228-4d33-af63-c9df0da4d59a 0ad4865e-89c4-4615-9034-f16b822b5be9 c82e0b16-c142-4224-aab4-d4b8ddc8262e 0a670c2d-55c4-4784-9146-3fd8e2abdc69 e90da8ae-b096-4a16-85e8-2ecc0e8f8757 2da34a91-22a2-4095-bf4e-3dedd94d4db3 1b490ccb-0f37-47d6-9725-46036118b52d eb5152f1-89ac-4962-9095-ab8d366e1c69 5beb51f1-6da0-4985-b8de-598050be8c2c b01abf3d-93c2-451f-8d11-13b6264a6a77 f47660f8-15e2-4e07-9ecc-c43fe2cd7960 8869a10f-1776-4171-88db-07a587558f0d e0a41fd0-9d4d-4f73-93db-d18cf89b42e3 5c43ad93-686a-47a2-a633-6bc4f044b476 811260c7-91dd-4b29-acde-19f2850e1969 cbcdcd45-1bfc-4991-b098-979a3e153ba2 8269aa56-aed8-4012-b7f6-d469c56183e7 abb687b9-748c-4659-b563-e65b2f3837f9 03a5c91f-ed38-4a73-9790-4ec3f7f24ea2 65f30fc5-17ba-42d7-baf6-76ac4d3a9b1c 34833269-e39a-4928-80b6-07178a3e3098 d05ec58b-cf71-495b-bc8e-5c069eb21795 f8139905-5158-4d93-8004-59f7f93c6e1f 4f111f51-0d18-4d28-93ce-c9ff08a09840 54729cba-b563-42de-8d95-a5ec2a09f393 4b291515-c082-4417-bcc8-32acef6314fd 508b85c9-e6c9-46f5-985b-d05887a47cd0 010e7e2c-3ddd-4f45-8c60-ab4b1e0fe719 61b78697-0aa3-46e6-9006-cdaebd96ddcb d1be5878-d9c8-4c2d-bdd5-d0a411d4c2b1 4f9fe4c8-b6d6-4bb8-8a28-6ac1b0de13ac 1339e42a-802a-4d8a-9c86-acfcebda45d7 208832ff-a8d9-4e69-869b-d2da59cfc529 f98048b7-a6d8-4e2b-ab6c-2db0c0b806cd 98a85f31-3e9c-4638-93a1-5240922fe4c8 007bee8e-cbc3-40c0-9167-cf8327cfa09a 522c5bf0-6b8e-4039-ac11-0dfeffd61b1a d369e026-cf1e-4d92-b70f-4be9f78208f8 84b8b3d8-5d4f-4763-95c7-b66825a1d816 fd7a5608-c9a0-4f4a-b562-16579cc05666 1385b06a-221f-4192-8636-abe206c92932 53c253f9-ec8e-448a-8c79-dce7f93a0025 1468bdbb-a6b4-4e2a-8f85-0085ab051437 c0ac1e58-90d9-4256-b0ff-ac582b2436dd e279216a-8873-4aab-b4a0-d1b5d4d1d6a0 3251cf45-7471-47fd-8b07-6488dacb17cf 1c8b313c-c655-42e1-b291-b337fe696812 4b3e55e1-c1da-44ce-bb80-c1e699d60883 32fc4e44-4e57-4aa7-b076-ea0f103c6d70 1abc9d14-02a6-4dcc-8f96-3f2434a0fd84 07c4fe40-34f5-41ee-a184-18de58cafdbc 139bc577-e9dc-41ca-ab36-8d04dcef3cc2 8a5eb01f-4f26-4a20-a5ff-9d19c9c78c23 02fcf0b4-afb9-4a1c-83ae-9a102cf19d91 0a99173d-85b9-43a5-8e3b-38d429de8c05 ff8ab72a-c86f-4671-ba1e-aac6c3406c34 87910e67-2fd2-43ac-9be7-8bf0f263f943 fcd4d266-682f-47ba-bf22-9e2d10f75656 0e0d64ff-116e-4a9f-9fff-0323d59cd50c ee3a2767-ae15-41d9-bf7f-d3365062e4fe dd524fa2-0a73-4591-9213-956bbde405cb ea5b1fb5-1a5d-437c-8b27-e47d3f42303f dbfdae97-d400-4c90-8279-05d9b4f86239 4de62350-a96b-4ec9-b4a8-96eb54857a8b 7701fedd-1499-4338-a14a-8229aaf5fc58 3a351bda-2beb-400d-93d2-d1ef09e10823 ea4d55d8-ff76-4c35-8b05-797948748fe5 dee584a4-0118-454e-b05d-25c7bfacfa2a 7f9091ed-5810-41d3-8a09-ae35fc51a823 4bc403d1-7238-4813-a94b-7194d6bf4ebd 6fbc38a3-c8d9-474e-8e4e-711a0ded1a67 e3d9a2e2-30f7-4881-a0bf-9178bac58409 cb09f584-e06c-453d-8449-4b8b0f71d8d9 9d49a126-9271-47e7-b289-5d1b3eb6db2a 40dadd23-a6b6-407b-a92b-11275611f032 024e109c-49f6-4bb7-bb16-d412c3e594a2 4dc79e62-49a1-4f04-9e60-6a1745c9a18c 681fefef-bb38-40ee-a833-6e5d68ea5664 2cab2019-02af-4606-a9f0-107659a651c7 2fffff4c-132f-4dec-ad71-3e204636fdc7 3083381d-ed80-424c-8c74-b87a1f3fbe34 89407c55-7c15-4698-ba7a-5255e1981e61 0a49c27d-b76e-4bab-938b-de2718aab71f 85d89bf8-43b2-4993-ab81-6ca485468bb2 854a8440-6a9c-4d0b-99f2-7c8e28c48e5a 1a54d12e-bfa5-491d-b954-c41da300b73a d545ff68-d8ac-4836-b17c-0fcc71ffa1f6 e5634c0a-72f7-49a6-97fb-3dc22775c43c f4940365-3a6f-4ce5-a0f4-c5af82468d0f 7b422368-f29e-4493-a4e7-ed1e32e639b3 1083124c-7c3a-4f02-ab4a-253ea64e0a24 07ff4534-d52c-4384-9c44-40bc8641e849 ec99148b-522d-4d08-bdf1-aacf9ccf8873 2258e708-a7b8-47f4-95ef-033545e470a9 11630dfc-0d00-44e4-ad6d-2c9fd8d8fd91 979b5d20-0086-48f8-abdf-5a93dd4c7afe d70fdf2b-b97b-4198-b136-3718420e5b6b bb45b80e-8074-4ffc-9b81-96b3f607fc25 eaef2559-6692-478c-8e51-85d43539188e 558736d2-8c11-4631-8e95-79e9ffa25d76 65fdab51-4542-4d63-a9d0-0ba71bba8264 e47f5c90-970b-49ef-88fd-a7c609c5b1b6 de1b5622-51a3-44ae-ab6a-c93bc7df2c75 9c554305-3cbc-46be-9a7a-68d52469507a eed2a705-eb13-4468-b129-e620be358f27 a6683f00-46a3-40d5-8a03-fb219096a135 5b4a6a0d-f071-40ed-a711-65e208133a9e dec0fbd6-f81c-4e5a-b8fc-9122d4be5848 0d769c80-b72d-460f-a855-c232c20808b0 6fb9475a-50fe-412c-aacb-402a31389c9c f7cbf28a-8d06-4c98-babc-33782ed7e5e9 ffc25599-28a7-4c53-b17b-204ea9d78444 2420d2fb-574f-4a6f-8647-73280c144b69 1f1e19c4-f933-4775-92f8-05ac7ecddeb6 8e4d3f27-47ca-4d38-815e-85bfbb01ddd2 2331f913-901e-4212-824a-61af294c3491 eca3f513-d215-479d-99e8-3ce6eff4f0c5 aabd807e-4a45-470b-8544-cae01574adb5 be6aa6e8-0c1b-46b7-b3e6-8b8ed196c59d 35677114-aeb8-42e6-b5e3-35ee7a472cf9 9c19a3dd-39cc-4284-9e5d-668462132a53 d9852e9b-a322-4da9-806a-87fa11412aa5 2b52ca4d-7630-4183-9f43-3cb6370f7c33 ff820f33-dad5-4ade-b31f-b00e4c1b94ea faa65006-316e-4704-8eeb-f59cc3dc0fce 56677d06-6295-4aca-ba22-e9aa7e782525 582423a9-6310-4ef5-ae87-fcd0a8c5e8bc 8db4285d-a237-4b4f-a9cc-f5db182985b8 7aae5f6e-0de5-482b-b41d-af5385966a7c ac2d9181-d960-46ef-a7f6-59c588538168 3b8172f8-794f-4b08-9b3c-b92bc5c27475 035eeb28-8df0-43f1-8156-8bdb1fcab6cd 72f1b2c8-c3c3-4fc2-aa7a-d6c884cc0002 80dba685-3382-4ae6-96d9-ef33a0b0c2e4 75573795-7519-480f-b59c-ed7f8b2f5f55 d209a946-0bfb-415b-86c2-5ccb83d97374 ae0c14d9-f9c0-4b7e-8c4d-54e902a297bc 00d3e8cc-1f1f-4fac-97af-de7665ed139a df3ff3b5-ca43-48b0-8d36-e84a27b66aa7 0e0cb04a-45d6-4582-bfbd-eb2bd28b0e2b bde93631-db88-4126-9ed1-3474222be4af 9de902b6-8887-4f37-a962-649f2f425a71 d802f3f0-825f-4ead-946d-14a30a4a9a84 a3156bc8-d44d-4260-86d0-9c18c3783aae 8d5429fa-58b7-43d8-9c84-72299993ada2 371b196e-f568-4526-9df7-ddbce149f19a 18f106f4-4f26-4403-9198-0c3db2d1919c b61095ac-ba68-42a3-90e6-b6a0d7aee869 c6ae34e0-e247-4b02-8bd4-52a27d0f9c2e 6df59e32-a107-4b27-af78-103bab0fe04e 57c7802d-1022-4f53-af15-0b518ec72b08 f458206a-2cdb-41ba-b20c-d4b103a7ea2e f26763bf-3ede-403f-92d6-69f33faea730 913085b3-b35d-4806-a601-3774e01a0aeb 7116e36d-a3e2-4f93-8834-1554432fab52 c3184d48-2341-4598-a726-4e0503bb7525 6c3784a4-2fe5-41db-8203-691c0ae01e5b 7c054b07-fd95-447c-b656-29ae93fa1a30 3eae881b-b43b-4e25-86e5-d53a7b093b13 005e5dd3-6437-44ef-bc48-b76c8cca2a9d c0502f91-7439-4456-bae1-4f211f3431ab fcf44deb-8c57-4d48-bd06-dd4c5abada70 a6ec7a51-3939-4318-8240-e91c72350d14 6a7a7ee6-2f5e-4fb0-aaf0-7dd1bf9d63b7 46db82d2-e8a6-493a-a85a-476f3664a6a1 4f70f15f-f4ef-47c2-9665-3d6b6242f55a b8fd6ac4-e71c-4254-bc96-86f3de859347 776a7f75-42f7-443e-8d78-4af7d40c519a cbdbdf30-eb61-4eba-acfb-4847af7ee5bc 23ee5f66-ebc6-436f-93e9-e89a8e9a33af f70ae3e1-e681-4455-9b09-a00c2d588434 446bdf41-b72f-4718-b978-5a67f2fe2799 a3a4e1f5-d436-41ac-b60a-c1d0fc866f76 a59a22d2-dd22-45fc-9331-e51bfa700625 7439693e-e8e8-4847-9d7e-5e760cc71975 23736d36-1eb4-48ea-be92-8cd46e243a5f 6e5893b6-176a-4e8b-abf3-498838d6a6d0 99ee203e-e429-4e82-be55-265d8597db13 39142368-4ceb-4081-acce-a647b994e02e ec3a9a7d-f2db-4ea5-be7d-01bbbb403ef9 3f43d5a0-e1be-418e-94d9-e2d1850c02ed 38c8c056-834b-4771-bb06-bb30a706801a ba70d3f2-ee4f-4457-bdc2-89d37fbc3984 ca0f19e3-9c21-45ca-887d-fb94b61ff4f0 01675079-adee-473c-ae30-5b2b7052d3e8 dcbf65ce-4e9e-4186-ac86-2b9ef912d404 b0492b7a-08e0-442e-8b6c-c69cbccaeb2a 976a13da-839b-4d19-99d8-2449dd247a8d 94eceeff-7a7f-49ae-991a-838085663acb edca5846-9c3e-4f20-85d4-02da89ede824 5b0d49be-77f9-445e-b393-96845eddafc1 8a9c5e9d-aca9-4892-b4f2-8193aa70504c 7cb1f0a4-ad68-4325-a90f-04dc9315882c 641a60c5-bc8b-4b73-8d0b-9e22d4dbcf92 29c1ae14-97ef-4c7a-b120-fbffb4757f3e eb7c5fb2-f0c0-4a39-b5b4-1184b2eb49ae 0696339a-2c3a-41b6-b971-836078d00e8a fe80df8f-4a7b-4cd9-bcea-51b4674f85e1 d11353db-868e-4d1c-9567-6d867e6deef7 9a544b71-a64b-4ae3-a63b-8cc3cd227909 e9210aaf-8103-49fc-b957-507f06abd075 c4631da2-0b0e-47e9-843c-cb65b61d811a 48f0385a-f2da-447e-a0f2-b1a40d1d2196 040dd9f6-d0b6-46f1-9a96-9317aa6127d2 e8c3251a-b275-4e6e-b4d9-b6ea011ebc15 6ac80105-d161-417a-b98c-cfb0aeebf83c a24b0449-ce7d-443a-a0a8-d20831530517 78e20528-8dfc-4be7-afe3-741bc08812bb 18d1af33-7d58-4944-88d0-183a18d4e629 f485204c-e3af-4397-ac0b-2d42a3734971 695fa780-6188-4d79-8272-044cf7ea9e73 ca1948a4-6a04-4f50-8a73-2fe36df270ab 815ddf8e-c4a4-454c-a1b2-5cb04f96f219 bfc58262-a0e7-4072-808a-53d5a6cf4ea8 40a2309c-9aaa-45b1-9dce-5f034fe5a330 387d1274-2062-4b92-9707-495b4c8ebc17 116021bb-e97c-4f15-8612-98237c2511c9 bc41f1c4-a5d0-4edf-9fb1-c432a6b8cccb aa133411-04f4-42a4-8e35-77806ea8f215 491a76ee-0904-4596-bd5d-d56e419d8564 316d1f06-aef5-429b-ae04-f5979689b56a 6e8469dc-b642-4f24-96a6-86f245326643 bcf3156a-ef61-4086-83d4-781f1ef4af33 2af82c74-f6c8-401b-bc0a-9091ddcc8bad e7a6cf6d-e623-41ad-ac75-5fabb3a4bc4d 6fe22b97-3aa7-4cd1-948b-ac8ff227f9b1 8b1c5388-ec87-4398-9f7f-e39a9ef7092e 31a30a52-7984-4370-b67e-d5e862dc3ea2 2697f6d2-872d-41af-b92b-9388ee81db23 c44f30ca-01dc-4088-a965-58cbf9449917 bc79192a-b130-4fae-a898-2a0ac45e7c9c ec4d5ada-2fa2-4f91-8a94-a4af0a35ee23 57d7d700-b205-4f9a-9041-6dee615cffc6 d3fa05bb-4c79-4ee8-a89c-188e1b2ca830 08304494-be48-4ffa-b98f-901653f16fb1 59d9c2f7-7181-4f30-bb1e-693caa83ec7d a7840654-dae1-4aa8-ad43-e2acef4a7484 a076dc97-a1a2-4b6d-8c3d-5c020b21d502 cac5f66f-008c-4cbf-b964-96ec5a1c88d8 838380d2-21a1-47c2-a681-e55fee7dc572 b9f39eb3-0084-4ddf-b050-74ef68c20584 2dc0e17c-8b82-4423-bbcc-df004185cbfc 679dd591-785b-4aec-bcf3-e12be9e1af4b 3f6717e3-32d2-4d95-b977-af62faf4b7f3 c7c40702-522e-4812-b29b-ed5e77d2443f aa2b2b27-c5f9-4ce7-8f3d-1cf7c738e43c 22e18975-3b20-4ad4-96f3-49ff3653ed5e 7c641673-0f05-44fd-be36-cf13996c74fe 8e21c56b-e106-4a1d-ac74-5f1477b9b4b1 a5ecb73a-5730-45dd-8588-d6a9942b3af0 1a69da2a-ad27-4c06-bbaa-ef8431b25bba 17971c24-1915-45c1-957b-b4237c20c483 181ac313-e601-4a36-830b-313c3e80d892 c1091c6c-08bd-44a3-a1d5-e6f41887e1e0 46df8d8b-f298-4224-9b78-1da29dfe2f4d ea13c7f8-815c-4782-80c1-14bbfe69ad7f f5274b44-9995-4c9c-905c-ec0ce0d41c30 cff5245c-8a46-4fa2-bee7-a1686cc4f378 7f65ab57-9391-45da-a1a3-43d81e1a808e 1b5fc7c7-65d2-44c8-a224-33b50d1d13e2 2e97b0d0-9c93-4a66-9e02-1ec4bec37106 9a65d668-50aa-4afb-8d30-c1400a33fdc3 5e5f9541-20ee-4fee-a761-5446217bf99c 40185920-45a0-4221-a548-7cac53fae5d0 1f39c1a3-3d68-4693-b577-9596768eabbf 8b009bea-e740-4b67-9a3e-6c2b6821fe57 5daaf8df-9ef9-4662-949f-49655085e12b 774be905-fb68-48cf-b4d6-a49a682eb877 f3a3884a-f390-4367-bdfb-ca27bb5b0bb0 97716c14-78e8-4988-ac70-afb6c946343d 1ef14104-612c-40db-9f91-53bc2dfe8671 c47a2419-44c1-4cd7-ab0c-51c315211544 8a9e9a68-ccc7-4bea-b604-ff40b9d49e86 3d0892b1-29f3-43ae-b4d9-7b5e1db8941c f8ea2324-e57d-4722-9ac2-793d95c34e70 dfe959be-01be-4590-9258-cd46cf9e55e2 b0906cf5-da37-4a2f-9dd4-c4d42512b067 c30537a9-4592-482c-bc8b-6efb905746d4 e9caf5ab-c838-46ab-860e-964299060416 61c1071b-05f0-4ebd-89c7-f9f4168f941a 4f6473da-e0dd-4cf1-8645-854eb3781fff 1e216074-ce14-443b-97df-7e9155a6fc8e 0bad3c9a-5e70-4d5b-98d5-89d83e3ae363 fb307c3d-6859-4687-9da0-6a11adad8517 f475145a-6bd5-4c04-9fea-2822718255c7 b33da0c4-36d0-465b-9746-6a0c30aee63e ee037a64-272e-4966-bef9-94f219ef1351 76e3d370-468c-49c3-b26b-b9025cf4a1d1 593776f2-de27-4d92-9d7e-79dd466b7cda bf115089-f320-430c-9657-583a555fbf69 44728a77-434d-4ddf-b411-17cee39ec0b6 2df9f140-313a-4a45-82e6-4f25a201e95a 64333140-db42-48dd-bcb9-be9eb56af0cc 49842007-4c70-4016-ba81-bbd843ac825f 86c1d139-d576-4e25-a928-d3f42e38ee1d e4ff25fc-6662-4d36-a3c1-01b475f85aa9 4ce06315-4a6b-49a8-afba-9424184795ff e7a77675-633e-464b-ad68-fbee08eb46b3 f9852024-2b63-4d82-8b38-9a0f726564de 016930d3-dead-4c66-be38-5e9e4c06ae45 93a0e1e0-7c38-4e73-b211-69712aaa5034 31926486-fefb-4894-a89b-5bbeb10879c4 edc587ef-48fb-4271-8b03-a8569937525a 48f13d78-5e52-4652-947b-abc29a901bfa db278268-c06a-4e64-ac6d-b35a9a7f09e0 d0183f35-a915-4161-9c3d-d46d751c5a9b ebcdc5d8-a545-4d12-ad78-f093bfadf228 ae1d4c94-f0e1-4a13-a2d1-91b441b15919 274256d6-6ffd-426e-8dba-b4df9e0bc264 e8452ce5-8868-4ff2-ace0-5014dd221dd8 d1922e77-f08b-48d1-a0eb-6e7edee02f36 054d38e7-6c3f-459a-bb67-847faf974d27 5766c9af-7bf3-4145-bc3c-e6227b11bef0 616068f5-4515-4d96-85ee-09402e97b564 4a5fe56a-fe1f-4438-a899-6db4568763eb d8755149-552e-406f-bdc1-2cc16b90c249 63682129-c379-4f4e-b06b-6836ac98351f ab9e36ce-cb54-4e29-b2fd-677c27ef5e11 0b7334be-4bea-4fd6-9ade-142518a639a2 5646fcb8-da83-4ee7-8387-f8e61fe55837 f8e8eab3-27c6-4831-a87a-df34c935fd57 655d99ef-7a6d-46b0-a7b8-c98acdd32e57 2cd51165-b0c3-4f56-bd3c-e7bafa079478 289b7924-e5d0-459c-85bc-b0c54567e65d c9664d59-da88-4541-ad94-f9f263f03aaa df23ea93-d0ad-4079-98f1-0ba08f6bbd58 ac57b29f-0b8d-46cd-8a9a-f85a10fd91bb f67b9c39-db9f-485b-9592-934c07396736 e7014436-af3c-4701-adde-9cda4c5fcc1a 0728b390-8953-4244-9047-547606daa172 04841ea0-5c0e-4886-93e2-508bef13462a b9453dd5-8c51-4599-a871-d15a8167dcaa 3ee09ed0-335c-489e-8924-e8526544b298 002df799-ae80-4a79-b069-b5ef4ef577bc a938e5b4-8446-42c3-abbb-8d453f26b9eb 21d90a86-f61a-470a-88fa-316074127647 1b35ceec-186c-4d25-8bf9-d01447b36fab 92c76489-50a8-44bf-8f06-89bc0461a687 1a53b77e-5e04-41f4-82d7-8ce52420367e 36975679-b16e-4dc7-b935-dfa23f172e57 3471b68d-8a89-4fd2-a733-dab5c8449ec2 c600605e-74d1-461c-9d33-2fba7997528d 450454db-89b1-4364-84c0-0a839e904746 45ecca2b-340c-4338-a90b-db380868701e d4d4b28d-88ff-4657-bd6f-f9e60235c469 14d99208-8521-4d18-aab6-99bcf85f9fcf 3cb9a44d-394b-48ba-b178-0fbd5a80481a ff910f75-5e63-4b02-a083-e27d51ed2ebf f35b4df6-865c-455c-a35f-82221dace275 5a28fb3d-4066-4ca9-8f56-2bf552b1c235 c9ee224a-4a5e-4618-aada-b153baf3ef77 e314d2d8-d492-461d-97b3-888d5a24b7f0 34dadb4c-172e-4167-b661-8a209b69f6ad 85e7af16-9871-4f08-a9ae-73769f564c87 0ae7af60-f2aa-4bf4-9a3e-f061dbe6ba85 6d8d5da9-5050-4fcb-8198-841deb8cbc77 eac32555-1a5a-4983-b9bd-4ae576d88fc9 44031315-04fe-470e-b8ac-517d03f89d0a faec0a43-72ab-4ef2-b6da-21b466352da1 5ab027b9-5b3d-4513-8dce-833bbd50179f c844d1f0-8020-47e8-80b5-1c575a1a576e dd0c9ca2-c256-4c1b-9a27-33e495132c23 eeacdfb4-46e1-4cde-81dc-52f09392b147 d8036102-b9ee-476b-adae-8af66f8a34d3 7267aa65-374f-46a8-b82a-7ad9cede4282 9d31fe9e-63de-4deb-ba4f-8cf0ac90e198 caf3f129-938e-4825-8d6c-f32841deb812 7874e840-165c-4aa8-988a-3f54ff32014c f32085d3-adb7-490a-84dd-5dc324307b6f 2abef462-cf64-48ec-b583-d6e14822a9d1 9211a35b-c721-498a-9370-0c47a74f1652 438a8b60-ea27-4ff5-8c83-43521c594270 36d8b3fe-4574-4b95-9de6-5898bdbdc47a 0be8fd0d-4597-4763-9026-f1302006c6cb 52fa7cea-e2c1-4c13-8221-dab925a09f4c b8414d94-11b9-419b-aa1d-0b3e97bb6448 bf3b3431-eda6-461c-96dd-dfa2a58c8e2a 183c7ffd-a29b-4030-a35b-67d2632238c8 973eee6a-2a08-482c-b816-d410cb18bdbb 693a522c-1041-498a-89e0-c50b15b2652b 2f7f398c-1c6f-4c7c-8312-b725eb11a5b0 13089251-2c22-4a5f-8e64-be30b53d43d8 61c327c2-c182-4271-be8c-94372d13d454 f7081e67-efd3-444f-892c-8bad8c59ddf2 0886950a-5caa-436e-bf76-3307eb369f23 40aaedcb-88d4-4921-9b78-bf2927f5896f f10417f3-2279-4f3a-88ab-10d6fc163ef8 a7241cb7-26d7-4379-aad8-03cc198a9ca5 ba20ffcd-6a3e-43ae-9dba-23f901540911 54a08b76-5489-491e-a2f8-f1953bf208d6 15f9da93-4565-46b0-bede-43a8c1ba8eff 344eb619-decf-44d5-8bbd-226ad41fad0d efb14181-39b7-481b-8db6-1560d984c595 b66d3d20-3e92-46a4-872d-995f63e777d6 1334479c-7d31-493b-a1b9-dea2ee182c73 30c9bd0b-7777-4a32-bb2a-ba07ebfe3ebe 28d31b37-7859-4b77-a3a2-0a0550d7cd6a 88df22d9-8043-4bf6-bf24-bb1107425a2c e1e8ec97-a909-42b6-9033-cbcb4ccdaf31 2817ff00-ce9d-45cd-bcf0-f911a6bce11d 3aa28649-ddc5-4e20-bb8c-8f2e47676ded bb4653e8-99f3-4b75-a7ca-703e16004ccd fe6fb713-13f7-48cd-9184-91e607de8430 de23eebc-6757-481c-b454-01ec8acaa20c 36d76a2e-e8d9-4d8a-9389-edc40b72fae0 bbaae472-9983-462b-a9e8-2c55b24d0c3a 69b67af8-e4d8-4982-ac1d-4873066aacfc 3363b1e8-cf21-4eb7-90a7-bb1d803ab8e4 9fdf3726-7b88-4563-87db-04e1532dce58 8b82d223-a5fc-4336-b9d2-2df8bac2360a ce0ead92-467b-423c-85b3-7e5cc3cf2f54 916c0b8a-813d-41b4-b69e-ba49554e7b84 454ef79b-9619-427a-9525-7da1fa48e38a 89bb8f2f-c792-4aa5-99e4-20d1fa69f494 884bb2e8-5857-4543-85aa-ad4357bff769 12b7d0d2-0bdf-4578-a2a1-0883e106855c 9a2c8cd1-92db-42f5-a352-5c6aa2440ad7 27195c78-7422-4623-a1a5-27f01301bffb 494ea0c9-8784-4ba7-bdc3-94551948b11d 6292e5b5-ca0e-440a-aaa0-d3bb5adca6dd e681e9db-f97d-4f4a-8321-caecfe3fd494 7d814013-4610-40eb-85ac-2c67293a5393 f3578ec5-f128-4617-b018-a295501ded2a 73655f82-5526-4bb6-bd53-297e59638020 f36d7244-e16c-47e8-b737-11db94847057 28ea652b-29b4-4e0a-bc92-eab3be63c6c4 a5c4a5f0-030b-4293-8b2c-8ecb0c60aeb1 45897549-9219-4064-bee5-0f75d6da9f39 3227dc2e-ad11-42c9-b727-e85116904e66 225e5cd7-f6c5-45de-ba50-b89e245c63e3 7ca4e58d-3f24-4642-b214-a9bc1d46522e 9030ba2c-5557-422e-8cb9-6cbe38e79af0 e4fde39a-ebb9-4b1b-a69d-cb6e31282c44 91565d0a-4ad2-4333-a5b8-e7fc3e3d1f57 47e63a14-63ac-4c83-83c2-d32fccd04b77 11a271cc-0166-4ece-8e31-d6e2e4b547f0 952fd9b6-4d4c-489b-9a51-1ab1e9a1ac11 bc2adb5b-34cf-4fef-862e-108bad2c5af7 334fb1fc-d8bc-4af3-beae-fc3dc1f56635 06f7a746-4970-4130-837e-14086b3940cc ca56cafb-9517-43e7-984a-5251287099fd d18c219f-0115-4150-aa65-5f088c66dadb c7b5ecae-e966-4b29-8eed-6e1a510cbe42 b2e8aa64-0f9d-46e6-b1ad-6a33d2891d55 91ad5c05-9aea-4095-97df-969218abfdd5 889798c3-f1f9-46a3-8d3c-5ec27c458090 7865b6b6-ecdd-4349-8d64-c310bb08f38c a8b541fc-7b39-4cf3-850f-2ad3699e380f 1dc1a16e-2334-493b-84fe-5a06fdcf36ab 28d182c0-d10a-4a2b-a3c1-5f38a83ea3cf 21da08f0-cb26-473f-a2c7-32e33be9218f 03d28600-cfb1-4959-8173-337cf53a90a8 10dd1cb9-a54d-4bd4-bedb-8b9d281c3573 771117b4-0dc5-4f81-ad34-f1bb88c318c8 15e8de67-b603-4e35-9906-72ca11c85416 e6c5ae5b-8347-48d2-897d-6d525dadd721 68bbb0bf-e5ec-4b21-b951-e5ef02f1a918 4b4449b9-110f-4a4b-8f2f-1322f8dca7aa 0ab1116f-c328-4544-86f9-305890a4ad4b ad7e9460-5dc8-48cd-9d38-b4d1a639bf33 d5514fdd-b15a-4011-b132-d21519ffe766 6fc57f5c-64e0-4490-a3bd-fc71754225ff 77b70628-0465-4804-be26-611a7551db4c cf3e8740-2ef1-42a8-aa09-cf3d3d5a9324 fc2a69ae-4a14-4245-ab06-a91ebd6b4b77 4aa95f78-fd11-40bb-b7c0-1c82e345af3a 9d77f741-6556-4749-bf15-c5c3fab919ca cf2a637d-9448-4b2b-9b1b-923c3bead357 d323ad57-7e6b-42d3-a970-72e5dd0f5f2f 1b1e288d-ee43-4597-93a4-2caeda1582b7 9d4f974b-5a68-46fb-b341-cca75eb5df64 635b5226-ffd3-448b-83ce-59feced40faf a098fce3-a815-405a-b095-90ad4c9fb737 5d36c536-929d-42ec-a672-0da868468d96 f1c8412d-52db-4296-841d-9e15e1d108a6 8bb2bcc6-d54d-4184-8b30-7d829ca87385 46666e2d-93e6-4139-91c9-dea582a0cdcb 6dd54509-fa70-45c6-9d15-c1caf63d69df 2c0fb968-7acc-4eb5-869c-5634ccbd127a 3c30041d-f813-43a0-b372-168532d19e55 529ace70-3b12-4598-8856-e33dbb25a41d 19ef3ac8-09f4-40a1-9956-4b5815fc4f3e 3e86b26e-232b-487c-8602-b3846f7d52b3 bb44608a-b3b0-4c02-9368-c6e221d439b6 a6d402d4-cba1-46bf-8e3e-cf0bfd588a68 5ec678ec-7f23-47d9-8555-d600fc653c9a 6f5f05f6-1f87-48ba-bd9f-5ebcf5044381 5f3572cf-6181-4bb5-857b-474b8b5cafd6 5736b79b-de5a-4f18-b8b4-31989f68f6af 9347ec6f-ba1f-4493-b247-b806da69bb1b 9158a208-7133-489a-823e-1ca81ebc701d d98221f9-ff25-47da-8420-664c56f3c69e 48a55e07-1ac5-4634-9079-5c4189596970 6ef9cbed-c614-4f7f-953e-c27b5d122332 213dba00-a35b-4541-bcfa-9ee727d1e37c 55a0470c-c03a-4b84-aa75-f82e98457cd6 74cac471-2b01-4697-9b06-33c024d32f23 b6bf48a9-ae55-486c-b340-a46a26b2245d 063b3ed6-1a42-4dc8-909d-c890bef7925b 4145b435-f56e-498f-ac54-f2f10e858668 63d92063-7555-492a-a72d-6b1cc360ffef be0c53c2-37af-4d2c-b960-2a96f8690ced 87ed9ff5-a65e-485c-abcd-f94bd2ead4ac e1dfe9c3-3cd3-4302-a611-d896a35952f7 cbdf5c70-ea02-41e2-957e-9d286417c782 cb8a9dbd-339a-4684-a895-1422051bc1f5 38e05c93-a47a-48e1-99c6-e3a03f6ea075 3957cec0-786c-4f6a-a462-8a0c351cc5fb 2ee39042-01ca-4d12-bc5a-ccd6e11197d2 bfe266d9-31fe-4c2f-8c74-bec09c153dd1 1e6ab472-4278-4a2e-be99-bb5e367a5820 b90128dd-f0e3-4748-b3cf-f3596f269f03 dbdfb868-e9f8-4d6d-939d-420b4b0539c8 c0bac787-81e7-4049-8374-bbb804825fa1 5591815c-79e0-4a37-929c-0a3106f620ff 46f9951b-185a-4a7f-944c-b1269b6947dc 3eeb2ca6-3dd9-4bff-9758-f4976acb4cf9 b47bbf10-1faa-402a-a34d-0f2f66b8544d a4e3251d-b8f5-4589-a4b2-c83183f69a0d 932c4cff-6d00-47fb-a3ef-45ca49470f90 1f20692c-a2d6-4e87-8219-e027a44305d6 9820ef4e-d2c6-46c0-91d9-326ca3587db2 4a9445ed-50d8-4e96-9588-bd96768f4c6f 16626bd1-bcbd-494a-99f8-fe47b066e129 d42509ba-7bfd-4a8a-b3dd-5219c7ad585f cc9c64fc-c7d3-4256-95a9-fc43ec3842a0 177771f1-cc47-4c92-b917-59f8d4f0bb67 743dbbb9-317d-45db-a65f-eafb8a1f1b56 a8f3db7c-eb42-442d-9535-c9efe2d287ec 8ffe1f76-cb77-44af-8938-ee5db765ba1e b0838fe3-62ab-4e48-9839-303f49991e16 537f8be4-a2ab-447a-8514-a9ea4056ecb6 0fc67501-648a-432a-907d-5e0481dfafa9 ecc4065e-336b-4d23-b161-02fc75ae43aa ff2a128b-43ef-4d4c-9bd4-3876bbe4b3b1 92641922-b229-466c-b2a7-98f05faaadd1 cecc65c9-db24-440a-bec1-8680378e0583 f0f8c954-03c1-45e1-b7a5-c9680b66f55a c7d6b778-22c0-4e77-8701-dcf70c789b88 535d1a08-d629-4ad7-9be6-cf682c2fdf57 42658303-cebb-407c-8b7b-553f98abf604 305be97e-349c-455a-8292-cb6cac27be35 bd96d476-348e-47c1-8cae-c58cefdeb0c4 85d97a40-012b-4881-9b5f-b5e9235a8734 8d4279bc-1d2f-44f7-a803-04528d593825 0b4eebb9-02f4-444d-9997-29b9c7b88f83 4984a64e-e404-4512-8a42-64d270dd4fcd f3690581-d6b8-4ec9-b521-de925bc64e07 aa03880f-9751-4dd3-bae0-788b5e5bd116 d99663c2-a509-4534-ac00-589b9456533c c371622a-f20f-4c3b-a20e-b14786952dd6 f1bea44e-a02d-4c87-b71f-b290527c3f82 7340f38a-30fb-49af-a551-b75938f0c4fc 1f9d696d-a3b8-48ce-9c26-7ee424a5ed45 458e96cd-b1c4-4ae2-9a3c-31edd3ee5c89 ff6588ce-294a-4da0-82c9-672a5c80fb52 45156255-be8b-426b-9736-c98de2ede2dd 855dc3d4-3c93-4420-92dc-c52225ec9cb9 fb666f31-09a8-40a4-9b4a-c985f32b6994 510f97e2-aaa6-42c0-a257-d8abd6082223 f3ffc401-76c7-4e15-a352-4b5616f151d4 6c4182c8-1989-45fd-a956-3f2028159bb9 faa1e143-a4bc-452e-973f-985753ef88a0 75e7b79e-fd42-45c2-9a73-08a3fbad904d 811755d7-673b-4eb7-9d09-57dfcc7811e7 cda6570a-110c-4eda-b7c9-6032f94d1b1d 514b709a-0569-46a5-a4de-7baff083f8d9 ef618241-3b17-430b-86e9-a68e37f2dcd6 3e71f071-976a-4595-bd97-b8eba70522ba dcb8d12d-894f-4544-83fd-5f71b6aed20b fa3e7fab-301b-4d73-a778-3b867acd21f6 b39379ce-6a9a-4938-a2e6-68e8b1b24cfb 8291a2de-66d1-43e1-91fb-8fbc6eee1dcf 9eaccf9c-edb8-4bf4-8ff3-8d282fbb3943 e1712bae-7acf-463e-8ea3-0edd1ea10c85 6f2db68c-b56a-40df-b5cd-1941da215a06 fb2cd15f-0300-4da6-a70f-0659050a8f22 cbc7e8e6-6ac4-42e2-872d-ddcf6130aab8 fda3cd9c-b7aa-4790-a96a-d5fbbc35a179 fb1d549b-97c2-438b-8bdc-6f7cba0fd7a6 9cb97dda-7178-4e5d-8f8a-ed379562e2dc 41b5f18f-f3e1-4ae1-97e2-a3511c551570 c7974616-c74d-4f61-8d1a-d195fa7d4b56 57146fbe-0a45-4ee5-8ff5-aa0d0444ee7d 728a78e7-319a-42f6-914e-dfef958080c5 7636cdea-c32c-4f6d-820d-596a5bb4a548 be647232-1275-4742-97fa-c874c72fd6a3 f51a2c5d-85e9-4e8a-83ef-f02907a5a448 7b5eb59a-f227-4baa-85ea-f1752b3d5b90 d0015922-01c2-4d2a-9b62-aab7b9ead571 752ec903-6e10-412f-a740-1cdf499344dd 4056dd0c-e4d7-40ce-9905-7c28f25c30ce eb5e38f5-a087-464a-b9b3-8be29467e01b c395660d-34b9-4770-8b89-6f30ef467949 1c6a1794-e13a-4474-977b-5c81fa7d1dbb 33d16763-07f6-4c20-8925-2d1f6592ee16 29ffc0b5-7d68-4224-a220-bd912e35db7c 0cb2230c-a697-430a-bc1d-539ec90ab8b5 a6dde2fb-559b-4e2e-ad0c-0296b1dfcfa1 a6ce3818-de46-477d-8c9b-454b4c6c08fd dbdb4848-79a2-4fcc-b7bb-3241f8cf33ec d51317aa-c494-45e3-9870-1c0fb5b3d06a be632daa-4c6d-410a-a111-467e9c3b2d8e 7885d2f0-3bac-4624-bc86-bebdbb8030f1 5d365352-950a-4809-b8b9-2a95d6b2f74a 4b1e5d51-11fe-4822-83e4-62a8f7fbe12c 9a462c56-fff6-4581-a5da-06b291bd08cf 9501fd3b-26a0-443f-91fc-031b79d04d0f 896b0531-b2e3-47bf-9c0d-3e847bdc6401 42e45692-8acd-4233-aaf8-23130785737e c204c9e0-6041-4f8a-ba60-d2a2dcc77400 e69e5622-d5d4-4156-818f-36271183470f 8e008396-9b97-420b-bbb2-1251fb067bba 40be5f17-1e90-432c-b84a-c695e933b8ea aeb387a9-43e4-4031-a5a3-1506de947817 762a9988-be49-4ef0-a73c-03dfd2d57d05 be68c991-b24c-42a5-bfe8-fbe827ade19f 27cc6cc3-7266-4598-9e0b-75dbb1cdf590 3f3acc48-4ce0-470a-8850-2f48b0064301 61547e6e-aea7-4542-b18b-1256686f8f7f 9dca31d0-4978-494c-8ad0-38f3effcaeab 1d9e8812-72bb-4864-b314-d2275e5ef893 195b1174-1cc5-43a2-9ade-94957975b443 7868a6a9-09c7-4ceb-b563-c569ed335a06 fd418bb2-2376-4c01-946d-954697a11e72 5b355013-2898-4dc5-8b1f-a47530cdaf6c c358221f-fb76-492f-8be3-9a5be89cff5c f83bd91b-686a-43f9-b621-cfbbe3e7af6d d2e8afda-be87-4420-ae4e-2a00707cb2c2 67a2dd60-03a7-40b4-bc1d-a1826daadc19 0a9e30f9-9254-4370-8f84-914aabf19396 c4d2fbf7-f1e2-4461-9c2d-f7f184a863b3 4877ecf1-4b52-4d8e-8814-22ce889c0897 cba5e09a-d161-420a-a030-882b265375e1 f4ef5207-5ff4-4de0-b201-99e34969d529 804b7e5a-388a-4f34-bc40-13a43feadf52 ddf597d8-08cc-4d5d-bf9b-f85198f1d99e 576cd53f-3dce-47cb-a2f0-7b3a5fc3dab2 9cd287bd-ebdc-4cdc-8066-2a805f15089d c6883847-441d-469a-8f4c-c7fbffe92ab6 667c35f0-7893-401b-abaa-c7d1352aad15 abde2c99-9b67-48c6-8d5d-f6454479afd6 5ef79c09-134c-42ac-b435-a9a588a5306c c12f8afc-ff62-48e8-83f9-68b416c85c9b 1e027714-8493-4982-b64d-b34a3a26d914 8a53630e-4d7f-4390-9062-6806079f7c8e 5581bd5d-4b04-4e48-b939-8801712d7f74 9a3a4d37-207c-4ba0-8cd2-1195f322ca83 372dbf22-133f-4c56-b34c-f0477420ac65 9ccc0979-be16-4ff6-bc5e-7cc1829777fc 15e5c519-f279-4826-9898-1742c75e36a6 bbb9787f-1583-4d4a-a635-17c3636ef88b 8e9922cf-30d7-4766-ac03-ce5f85ef077c 06f3d252-426d-4d35-acb3-e6bd08595404 ba357631-d46b-4b8f-ac35-e6925cce53f1 915853b2-7b58-4a5b-a0d4-3b0c71b6bff4 f615e6ab-5aa2-49df-8856-8e39c067ff8c 032c93e6-bcf9-4bf8-83bf-e195564af668 0c85f50e-f1ff-489d-b6fe-d2bd13c2a371 87e3ef9b-b48d-4654-a90c-c4d55973f731 f6b10673-f314-4a51-a31b-e3c219d203fe deadc8d3-07cf-44ae-9caf-b8959659bae1 8f5c36bd-cbf4-49fd-8f09-baf6821388d3 dcd5a7fb-b739-4b3a-a381-740dcfe81108 c7294efc-913c-4bb4-b64f-086f3fa22ed6 f9cf5c1f-5341-4450-b0d4-b46d1f5b8798 e7ca528e-ad72-410c-8418-c16c69269132 6826652f-b0cd-44ce-b128-275de6678741 55d7b22d-fe30-4666-9dfc-66d59a10aedd 54f7f379-3521-49f7-be66-6e4561d6d2be 625ef3dc-43c6-4a7e-8c0f-714d38a63618 0501aa78-02e7-4c4d-bf90-65f52c0670a5 d858ac1f-18a7-4c33-8a77-db291d090c70 efa1f4be-d175-45a1-9f0a-d52d8061176a 1350474d-aa84-48af-ac6b-29d0f7fbdf3b 02ec929c-afb2-4274-941e-9c42e053d61a a8cbe2de-e038-488b-8756-4276f95fa203 ae28fb44-7381-4612-b010-e873daa12751 10be2647-ba34-48b7-b87b-6abc0ed97036 06600ef4-88a0-4857-8a6a-03595fe479a4 62783d5c-828d-48ca-90c9-46d18dba3753 902a931e-dfaf-48d1-a76f-feab063cc16c f3d548e7-dd0d-434c-84c0-0bee41460401 56258c60-233b-4e8f-a695-b5fef3984f90 fe27fe22-a125-49b9-b5b9-97c5fd7632ca 2aef91f4-39ba-4a8a-a35e-4a2fc69bb205 58b86120-a0d5-4b7c-ba34-ca78f821a842 a1ba8996-39eb-4d79-a1e2-6a3a32784411 af53d220-54ae-49de-8a25-e6d7a9da5ae5 43624b25-f5ec-4a4b-a6fa-2a6f1e1a912e e7991294-d36a-425d-b2a7-9d6465e9eb0c 41d6261a-e164-450e-a2e4-dde0960d7b4e 349d3717-1cd0-4595-ac5e-e70e06dd4c8d 4d499879-36cd-4a5c-b3a8-b6afba5fe58c 56c2b1d5-cf8d-49f4-8afa-2c4c23a55dc2 837a5679-18c9-4254-8d3a-6bae982036d0 54d9983c-f36c-4afb-acec-fb5ccea8b195 68841b66-a95a-4416-bb1f-bf28a1535f36 373b53f9-6221-489e-8332-87049004bff6 555e5bb0-4358-4bee-bc11-a2937b87727b 60e6584b-7bb5-4c3f-9911-1fbcbea58e1a 01f969f9-f72f-42cb-af3c-952a4814ba89 c164aaaa-6b11-4cb9-8adc-983004697171 a57db6b0-4af5-4f90-9b6c-1ee7b879bff2 7c94433a-3209-436d-96d4-72177c7c1d7e 1bcca9ca-abec-4b63-a882-742c316629bf 28b51d68-5e17-494e-b1f6-20902b2b47dc 43ff119d-08d8-4770-afdc-c3a4f1f07200 a2b8bc56-6cf7-440f-b500-ad76a2566055 c473b369-5b6a-4c92-817b-82f8eb2bfaa9 c3c2e742-2278-4823-9675-98761e06280f 7623accc-c861-47e9-ba0f-d7684b7592cd 30466e20-33c9-48e2-9e9c-a5e60e7a0cae b2a5d919-81cf-4261-8b85-8e5e8eb2c005 a544611a-8214-40a9-9784-0fe2539959ad e624acdf-a8d4-4fa3-830b-0f6c0106ff87 8baf506f-487a-47ff-9bcc-6e3627854908 6909167a-23a9-449d-b9f9-1c0d6f7a5832 c7c74b00-e68e-4c83-b949-a0c4a1ce9810 e954f0fb-4a6e-4755-83cf-8e83af112b39 0d5f21ef-c6b2-4823-885c-5454d4084b7f 8e1faa00-5c76-4a80-922f-a1098f2f45c2 74cf86a8-f688-45ff-8948-ed37e435d2ad 99423449-3110-4074-807e-bbc36842bdda d497ed0f-bdd8-45c5-a219-d81b17960b31 9aa75355-72c5-4587-b3b4-a6678f67f5ae 6bb3b932-2cab-455a-a67e-3c9a772b9200 a91294e3-61f1-4a7f-a91f-148397ed9d28 481c9881-9805-408d-b56f-3a534db2ab1a d978063b-95b8-4ac3-8c0b-98d9dd664a24 f18e929c-9454-4f8f-90f2-f42f928a44cc 727e7c89-e152-48eb-bf0e-71b24c24864f 19e75b41-71ad-4080-b70b-a4ccf28a7c0b 4585fd3b-fbad-4c3d-a2d8-88f544904b61 a23ab594-d7bc-4b7b-8ab9-4d6130b764a9 ce72500b-95ec-4128-83c5-92c068309cd4 a5427da7-bad3-4484-8827-6d8b1996f4ea 41688ca5-762d-4b13-adaa-82072962571d 3d8a4fbe-ca50-42e6-b507-dd263f7bfa5d 220680b9-c321-4cb4-95c9-3d4f1848147a b96256fe-b7bc-4485-a128-0fc7777b4034 6f133293-98b4-45cf-a1a2-0d281f566991 8037eb8c-e073-4406-8bcb-284275f8631e 373bf3b2-b257-443e-ba46-d7aaae2289d6 e20d6f5c-286d-4bff-b0f0-ea02f60dd1ac 756069bd-8cf8-4547-adf1-2d73932ce47a 11ba7467-1f6f-4248-b9bd-d8ad1fc82b9d 3e29057a-c6b7-40d0-beac-5bd6558f6d94 187dbdcb-6b93-46d4-bbef-2cc8b8bb167f 695ffb0a-93ce-44e7-adb1-7ff441b23d3a b9dae8c9-965e-4b2c-b938-d9d0bbcb0f00 081aaef1-88b8-46fe-a783-c74f052fd693 907c02d1-b004-4dc0-b043-8f14cc9d38fb 81e87363-e0b7-4f10-a61e-61aa45572177 4775eb72-7796-414c-a590-cc6de7f27eda d9b558d0-96e5-492a-bbc5-63c22d4da027 891e77c6-e2d2-4855-8aff-167d61814337 e7392ac1-5d82-4aa2-845f-3104a792b9f0 0ab0cade-1c57-4dae-aa3e-0d22864c1cb9 a6c6b5bc-63c0-4b45-b2ef-b6d9ee3624cf fcf1ec84-5a78-48cd-b864-2008f5300068 4a9ccc44-1bc9-4021-bb8d-ad7e3b472545 45b300e1-9cac-49dd-ac7d-23405f34108d cbe30c79-ed9f-4c6b-9644-7bdff6f863ad 0e40d338-5dd6-4020-98b7-7eb86064664a 32ccb682-8b9f-47dd-9369-a2b250b3f677 dff15e62-0d3c-4d9a-8d62-21110701d50d 4fb0c045-4c72-4626-8416-73fa0ff7ae5a 1a7fe901-8bc7-428c-9c0a-8a96f4f87fed 3b678568-b1e9-4112-bda2-3ffd42628b71 90bfa80a-a43a-40fe-a968-dc89c9630992 0d56ebaa-0e36-489c-ab32-6ef75a3f6403 4ea9cc72-9ade-4818-8017-15ab86bafbf9 f9a89ca2-5669-49c7-9a69-6e7a56e5f660 673d035e-0ffa-4b46-8dad-646b591dd164 4cb813b3-6136-46d5-bc2c-c55dad992cb2 df4fa99d-81f9-495c-a5f3-3bdbbf5f6a2c f7660570-06fb-4740-af24-10a36810d849 d20a9dff-c95e-4c30-910d-891b71253204 9501b8c8-b26f-4170-919d-c6be467855ff dc3f8a0f-27ad-4361-b3ac-484a7bd5fdc4 bcc4b922-1aa2-41d3-896e-4537027de4f1 0b4a759e-05f0-49f6-b149-87a1ff7a0f89 6d2dd054-ca65-4d50-99f7-26b7f1850a93 a8465c06-da7e-4a32-b233-19f77633aae0 fdc42671-bc7c-4216-901f-75ea82ca5749 571f50e3-d6b5-4039-9ec3-0d103176c0c4 40436e28-6868-4783-ac0e-1404a269fcf0 f703d81d-e6bb-4be6-9e01-eef00ccbae94 1650f714-3ea1-4450-86d9-471335fa5791 593015fc-cd23-4b19-9173-4cebcb31b58a 574169f7-c08e-46ac-8094-4232b579b233 8becd01f-8a72-466d-854f-4af50479cb82 8cbcc388-7f27-4ba0-95b5-b14be8e0fb85 5e375bdc-543f-49c9-82df-709dc248d3de 3c99fdde-86c7-40e5-a431-f96541b98c2d 725bd303-a982-4e91-930d-a414e47c81d2 5505a53f-7dec-4f3d-b279-20b052a31352 946dd2be-6208-4eb4-b2fd-4d8219a3fb4c ed8066ba-b765-4cf2-a9f4-47572ee5e6ba f615459b-ea0b-46fa-870a-376a5a9f13b1 331c6309-e7e8-4e0a-8de4-4479e940747b c9be0682-a0b7-49fd-b11a-5594fc322868 3a196702-eee9-4824-b767-9bda9332f4b6 6a8803f5-6dd7-4714-8321-8f97ed6b03df 25795da4-aa1f-4d6f-8324-5dc380d66e7e acaabf9a-4582-4fb0-84ad-c502e2dc2e1b ff98dea6-6cb2-4554-b5fc-94f1c464b17a 6ed48118-8283-4f28-9bab-4d9474c3a264 1e7b9ddf-99d8-48c6-ac38-e072725b878f c38acb17-59e9-44b2-9d16-543a7c635c55 eec184d5-b899-4acb-a06e-4a6649ce7241 f7b8b937-2de0-449b-ba22-3d26e0360f3b 03dd81e1-46e3-4c38-a10f-f27155ddd365 9278787a-c0c2-411d-bf8b-e4e5c9a029fa 9fd40285-76d7-464c-b553-3f761dec3a0e 66e3d46e-d931-4e23-8d1e-393819dcdcd8 623cc76d-bcaa-4644-bba7-34ac07e5954a 03e63de3-8304-4ae2-8f48-aa3dcec82551 47078b0e-348b-425b-8c24-006bf2e7e5fa 42a5b52b-9895-4077-b89e-b3a758afdcc6 147863db-4ebb-4d21-930b-01b5d5b9ffeb f7a81be4-aa28-4453-b1ca-2f17481877e6 149ac9ba-d2b8-4c6a-929f-329c9e2c4a0b 636df150-4877-46a0-8d31-af65857109cd 04512e30-0bf3-49df-90ae-d936862f5881 600e6beb-c32b-4a29-9c7a-1d3084d79128 449d399c-2fe0-4f3d-952f-50cc12e0d131 dc8ca004-8bf4-42f0-badb-8a703161ba44 c7038109-a621-47a1-ac66-c6ccec821d23 8e9f1e3e-9702-42c3-8ccc-c5d8cb66cf95 22f5040d-2bf3-4c37-b1b0-13cb5cc999ab 74a0c288-3d10-4247-a717-91990d8842c3 05442090-e28a-4ceb-8724-23b1437d87b9 c0af8b48-1e0f-4fb4-8407-5cf6f2adf1c8 8cd997a8-06ef-4315-8ecd-d912e0786806 4c58d79e-b93a-4e46-9e6a-b3c4be20737c 816b3445-23a1-4f63-866b-1d69093e6df9 a2d39ae8-a576-480e-8d0a-3de72ebe02cf f9ac05ce-b7a1-4ecb-b87b-ec49edfb6d3b 48ed7676-0975-493b-9eee-038f11deaad8 caef9e92-2084-4ba1-a0f2-4c6a950c18f4 bad7d6a8-88ea-45c9-85b0-5fcbc1603046 fba3855f-53b3-40c6-a867-4bc0dc19e334 b42dbbd2-3e5b-4d9a-b49f-f2fce90bd172 47e09b16-e501-47aa-9eee-2f493a262083 545a24db-9217-4460-ad4b-bed06ec8a5fd 3236ab9c-19b2-44b3-821d-0f9961720516 baf3dce1-d5ce-4d06-a54f-58573ba34bd7 ab04766f-0a0e-405a-afa1-b7e817bf9596 f94ea378-f286-480b-9850-b46a64245e4c 605d413d-a9ff-4f96-a373-60bcb96107ce 9dccdc83-c490-48c9-a84f-54a6baf38b69 f2fff998-34b7-46a2-806f-4423fe8e87de e9dca7c5-7017-49e0-b423-4d71519e30b5 39bf0738-4700-43b8-b176-cee2b3d3606a 8003a18a-ce47-44db-b245-09460f5c7e09 d99e6a07-8cde-42bd-b4cc-8d6a9d6b548f 4fd114e7-e179-4200-a18d-428948950668 9dddd790-dea0-4369-9499-75f9e0dbcb9d 18fb1f87-58e7-46e5-919d-b08eb9f61431 35507f38-005b-48af-baa9-abe50d52cff4 29a723d9-0802-46e2-a105-a3513aeb9831 886cc94e-9142-4be1-97ae-128aa932eed3 39dced7f-61fb-4f8f-8165-c4dc4b3579b1 70452396-db06-4048-bc6a-fe18bf59b085 ecd6f007-2aa6-4ac6-9ce7-4b2b8ee93007 41947585-ed8a-4887-b448-b91388eae774 cd33fd5c-be6a-456b-b99b-0fb02342c687 4fb0c747-5f56-4ef9-a165-3cde18a95ac2 6f1a1afc-5098-448f-92ed-8a7df11533f0 0b7a731e-164c-4cdf-82a7-032121515a5a f35c3be6-a4f1-46f2-aef1-bfa4cdc8138b 2795bd07-3daf-43b9-b341-aa2b0e2354b9 1aa74cbd-99ce-46e4-aef0-ac1e616ec971 02027373-e7b3-487e-9e34-15e40630b1f8 e310f774-3092-4d7e-8c85-0ab955861e5d b2219791-bbfa-4a90-be54-1ffb0151d2ac 2b7c0c66-6c31-4c11-927f-55f0be7c9b38 bb89950e-90db-45e1-92c7-8b136fa124eb ed1c6e71-81ff-43cd-97d8-e6f429127498 76f3c99d-7fcf-46c1-90f6-9471c55f6b3a 2957b5d9-2f3e-4099-9216-dea64577a17c b55cfd57-5d11-44d5-81ff-c8fe50fce1e6 08263551-0a84-46de-a8d0-7b758d44bf7b 020ca694-cfb0-4fde-8e20-a86c027fa3d1 473f832b-0a6b-49e1-a721-ede35ad35466 6b6aae1b-f050-4f9b-b2ae-b56fd87f6dc8 678a628c-bfae-4fa5-ade2-86a7168eb99c bf559452-5cfb-4e48-b379-fe3f23aa47db 4a4a63f8-d42a-4321-9294-0df194ab58d3 0321bb33-e9d0-46c5-8677-e5e3057e6a6e 6dc3162a-a402-4380-a734-777d113b639f fff956f3-bda9-4881-8b12-878396742566 6c43e5d6-07c0-4d32-bb7d-f63aae6066ad a0983877-46a0-4911-8351-cee154df5f44 719b1019-b4ca-49cd-8c89-20393c475f2c 28add333-519a-4cdb-b0da-316106f6bb31 38dd8c17-4746-4003-8b45-781ac5554e6f d4d158cf-070c-4264-8cbd-c936a6e99fec accb008b-0a7a-412b-9036-977d10714574 13345958-414b-41ec-9586-932bdd739a48 9f6f7c5d-9a5e-473e-bb97-71fd2594ba35 c424b5ed-3146-4de4-8a8d-257953f868a0 d5ebabf5-f10c-403e-9abd-45b0fe0bd8ec a2903a77-c94a-4ae5-a4d2-4e791d3f3245 2a676c89-84d8-49ce-8f7f-56071f8e8b0e be852754-3a6a-4d09-81f1-d4f0fe2b9b58 6ac8b97b-a205-4769-a1c8-c4170c56f2a8 bbcd3aac-e4af-4211-99a0-b68a594fb794 8f0859bb-7bf3-455f-a4ab-80504394566f bdb3ea15-9d5f-4b99-9cb5-387811ed1a95 d1947a47-6d07-4a79-a0c8-100129c34878 5da0f264-6884-4a69-826d-e3c9b30b5d8e e3d87352-67bd-4c11-ac63-b187b9c1a55a e0caab95-a325-443e-8c8e-c3a495e55730 718bc863-6657-43a4-ac3b-9b023f753d0c 4f3944f0-b4e8-44b4-9483-10835094e4ec 04362940-58f2-42ae-8385-7c51c058e501 760958d9-7829-4bd7-b210-300253f52704 cd516aed-966f-4883-8a29-66d5b25bc3e4 afcc8797-03fc-4730-8c54-f1278b44fd83 2a5d7829-adf9-4251-80ec-4d64bf73b228 1b29b73f-31ee-4aa0-a1fe-333f81628a5e 70176ce4-cf0c-4525-a54b-21d5b3163b52 e4add1fd-d3eb-42fd-b24b-f48432194d46 133bcf9a-babe-4920-af50-04b27c414f8e 24164db8-1f0a-4b97-baa5-ff7520a43e53 7c2c57e7-e3b7-4e9b-b5b1-3133f925fe09 6901078c-7695-49c2-9ac4-ca71f65e95fa 33acf429-970c-41b0-8efe-7a3f27a13c8e 4f4b3050-41ea-4361-9f99-1ac82756f100 f1b407a4-ff02-4d34-be5b-fe833362ced3 057e4302-fc90-463e-a81c-5b1da4df541e cda0170b-bfea-4ab4-8746-4282789fb317 883cfa13-a358-4728-be90-dc359312d8f4 ecd92fe3-c8d2-4357-8e7d-3f989af67883 35e0ba1f-e55f-4d4b-9872-a35f4fe9b99c 1e880388-dddb-4517-8b73-94a22be53511 698ec9ed-7950-405b-8d9f-75c7db226493 123c090c-7426-4cbe-8d71-dab8fa97646b 51be705b-0541-4bcc-bb5f-960354642543 ca04fc4f-8ed4-4e81-bfff-c2b8cc0d2acf 4a205eb9-4013-4dc4-9bc3-b1c0366188ff 92c90d68-50ad-4035-b8e7-8541f7fbbe73 1040252b-ea8d-4aa3-90c6-2039c705df67 77986ecf-b669-445e-90ec-6b685b890b20 57bd5815-4def-4673-be23-5a1ef50a6f57 e8a16a13-a58b-4e37-aa60-2a5e96f9f586 018cc6cc-b701-4c1c-8b71-b6138bd6b5f8 2378456c-bcfb-4238-9046-9901ea0e105f 801dc03a-1a7e-4e13-ad00-37d32ed69390 31d22d6c-769a-456f-9a87-0c64204a92e8 34854487-af93-404a-83ae-5f6ae85233ef a49a61a0-7bf0-46a2-9b03-9cd8096cde5e 813571e0-2250-4266-8c78-c0787c14bf43 08ccf156-e8d5-49e5-8dbb-f0e568d3971f 11808a68-b740-4a12-bf59-a275023ad5a2 a279f689-e7fb-4712-961e-4bbfb86999ae d45a4d3c-c07b-4978-96ff-d4f76551f985 cd0b2808-7cb1-46cb-8a25-7c4484be2a44 3bb2b95f-fe52-479b-853a-a4bc0febc13a 0e458a39-1fff-42bf-9206-a208a3d5fcc0 a90e6d36-6414-4301-8749-b396ef823240 df072bbf-35f9-4a4a-9f00-365893c0e2e5 61d8fb35-d88f-4b2b-b4e5-66ea0af5bc71 00ef5bb9-1c4f-4a8a-8d99-373710cbf900 0f7baad5-248c-4804-bcc0-515e47cc188c 71528017-b6b3-4f22-9adf-0db100ed6c5f 57754b66-b9df-4ecb-a68b-80f6582f0ce2 6f34ddaa-23e7-4962-a3ad-16abcd560eff 511fe482-a49d-4475-bc0b-f683d0aba9cc 90899483-1924-4609-908f-a52dafa00cab 2a1106f3-8c72-431a-b346-c4bce1256c4c 3dcbaa89-673f-47d2-a338-4e4a00318b9f 97a19a67-6451-4792-85f4-e42c0ea9980e ed6622c1-c6fe-4258-a0bc-5b287cb6eba2 d4e6af9d-409e-4fdb-b84d-f305c83bc2c6 d37527cc-57e8-49f7-bc5b-95ac6eebc0d4 6ee373c8-7957-4906-97ea-c0213ae373de ed4cc875-4538-4487-83f7-dfe973fb0eef 625f52f3-8dea-48e0-95cb-65cd91d31467 12ac31ae-0226-4c1e-87e4-faf19a885421 354020cd-43d3-415a-adff-538128ffe4fc d6ab123c-d7a9-4c4e-9356-b4d7dc519dd3 b8bdc0ea-3e55-4865-8295-de6cbad3824c 81d9d675-4401-4101-bafb-d59911ebb3b1 ba436b23-ed74-49b3-9355-bce2ed8a0cb2 30f479c2-14ab-4c16-96ea-bfc19f19eaca 41c9d975-d146-4b95-9271-c9891c21c072 c032ac62-2c4f-4df6-aeec-eec4c2daabab 906c054b-68f7-42a4-8cbc-cd7bb003748e edbf6e24-cf1d-4a90-8332-d3edff81cf0d 5b5ce96c-eceb-4989-abfa-53acf4ec335f 84ec4c11-8ab6-4067-ad91-cf975b94d2e9 5f005ece-6aa4-4dc3-af9f-fcbcf2be8642 0d1a603a-feca-47ec-acfa-0724aee03b9e 3d8eb4be-016b-4fcd-8a6b-9bce2da72c66 6cde218e-20af-4b7b-91c8-315fc3aeb508 0fb00381-cc9f-41e7-8d95-33fe14279170 ee4998b1-e4d7-4f05-88e8-e9e9ffbcaf95 300984fd-203f-4ddf-b064-2de7852daba1 a61d449e-ce1d-4617-b6e3-c2f918bc8e8e 777ed75d-5b27-47f4-8e98-59727ad45b93 a5519c06-51db-47e7-9e87-46985a5cc6ec 02a2d240-b61a-461a-b5c1-b28f74626e93 d57ac5bf-eadd-4314-bbe2-83c1fdde6b0a 72a200e1-41db-40e8-8cd1-2b1694bd6f06 7ac18294-8fff-443c-975d-82b53e0ef496 e2ee8897-1259-4d98-8c44-fa80dcc2e40f a6c60fcb-c350-4f06-803a-1974c4a6f82e 77ec12c5-a768-4401-bf97-03d8e2fe67fa c0f9b61a-e1bb-4396-b4f6-3196291bb2c0 fe5de47e-18a6-43b5-87a0-068b47190765 b227490f-01be-4f4c-9990-50f6805c1d34 afcdb275-eb4e-4465-889a-31a51f6b2b29 12684cd2-6b0e-4837-bde2-316d40494903 5334b1dc-929b-44c9-a799-f873e0ef9c1c 1cc4187a-7dc7-4974-920a-8df45757e8fb bc39a75e-e45e-46e8-94f2-d001a11e789f 4f29649e-fc46-4fcf-b54e-71cca11e2063 f250da58-d9f4-4f26-b591-2dda9f92b2b4 fb39d721-ef10-4173-8949-42245b93de79 1a52b605-3202-4be9-990f-5b5f031b9c0a c40fb558-7511-4171-bbdb-ca75f7bb016a 37e10c60-6720-418a-9949-3b4369a7d256 73dad7d2-0b9e-4cb5-9817-5a6d59782e95 36a5e6ac-6222-493e-980e-6d71d1866610 9e0bc499-fd2f-4447-b6fd-08cb01ab8dbd f803a24a-3e38-49b1-9af6-d612ac83b475 51b96579-0eaa-4218-94d4-ff7a8fd88fd7 e8399e19-1473-4b36-999c-fd5bd48c8090 0aacd30e-9c98-49c9-b0c5-4ec3964fea33 67504c58-a7db-40d0-a13c-4b244a91d30b baad77e7-dd6e-489c-aceb-bddbccfe42a7 d8a40c2e-a040-4977-b213-89b17a233cba 89a7589c-003c-43ae-8578-43436262d78e a19c1f7e-2c59-4aa5-af3a-b9053a0fb4f9 18d51558-6ab3-48ff-8abc-38a64840e2a2 127080cd-0972-440c-b51f-beebfd4d69a4 d67b931f-c400-475c-b0a2-ac648d361d9c f62b9879-cbdd-41ff-a344-b89130f7cf13 9bded787-6dc3-422d-baea-975527067dc5 4e0f91dc-4e08-4573-8b5d-e2bc95ffbf7f ffa2b257-16e0-4c50-9e8d-898618813ed9 13b82fb0-ab44-41f9-b27d-72bc2aba08fb d89e29c7-6bda-4d0a-9941-1baf7e8f96e8 cab0cbf1-946c-470c-8849-8bce95756086 13fd75d6-22e8-4143-955d-f54fd900544b b5cb8597-61b1-4c2c-82d8-a71c7c9d2380 71f16752-402d-4b58-8fca-1b1137fca713 a7de332a-960a-4987-9d1c-9b6509a823ab 07cdc572-4783-4f4b-9d9a-af0237ed6b0c dee81f68-e444-4550-bd16-a40d109f62d7 04d8ba9c-4ac8-4803-842d-84b33adf66b9 0f8a9a0e-3528-49a4-9f32-c91c7568ba6d 04b572a8-78de-4e70-8097-4e6b04528e31 144acd96-00d7-42f9-bbfe-289d4f9e53b1 cc9eff5c-3340-45e0-96a6-cd19b862e9d2 8824192f-4b2b-4e7f-a353-b36c55d2c650 95953e82-d499-476d-a675-01177798e331 6fd11a17-2ef5-4939-ab72-410aa894111c 561b8e81-9243-47f3-97e8-237be926b3b5 f2dbf5c1-1392-4ecd-adac-49117ad2446c d453107c-c07b-4f17-9d37-e088379e79b1 e9bf691e-73c7-4a66-9acb-4be8e4c983d5 e1e4417e-2ad8-40ff-975a-7aeda272da44 f15ebd4c-972f-49f4-aac5-27715f16e9c7 ec3a5a00-1b01-4731-b399-7f0c598157f1 2240a364-16c1-4d6e-a76e-c0a177e0be0e c20d2ef7-961c-464a-8770-cc33323bf671 9fc24f2d-96e2-4655-a7fb-a0242553cb36 7dbe87d2-c5b8-47d4-aa8a-355ee1f1aa7e 0757ced0-7ed6-43cc-bcf5-fc87169c0faf 8076f34a-b5b7-4c20-b59d-f6417f55bf14 c6e21bfb-1b8e-433c-9ba0-4e054878adc9 1203932a-3855-44ae-b3c8-95e6627b9f6c 90bb40fc-220a-49d7-97d0-0795e0ebe83d a5dd02ef-34de-4619-8077-5262bca444ae 8f9fdb4e-d3cb-40d3-bf43-a8acbba135a4 a168109b-3111-43f8-9e7e-c617694d0f9d b58f4af7-0268-46f7-8267-f8fd63101561 d9c5ec81-047f-4898-9bda-ae71436598b7 60fddb23-e997-4800-9ad5-98dda4733ec2 04d7b325-b4d0-4242-8bf6-60c1777a80b1 94ede6d1-9fb2-4c3b-909c-6207189c4b03 b8292000-e8b1-4e67-a6ae-909cbfec3ec6 7b316fee-0504-4db4-8c8a-bc9327a4537e 9b510586-5f6f-4108-8e52-989806ece049 94de73d5-576e-4e9d-bb31-5f26d27c7bbc fb2cc485-3901-4284-a970-7731f74eba38 9ce395b5-1631-49bb-83fd-bf28665e0cfe 7dd312a5-288e-480b-bd52-1286675e9ed3 eb665b8e-2506-4bef-8a3e-ad09dd1499d0 af4df17e-677b-44c7-9739-503dbb27a5e8 70325926-aa35-4dd7-99d4-df82aa67176c 0ea385fb-6b1c-4635-a7fe-b4a67b7e57cd ee57379d-5165-4ff6-8b9d-02ffb128e1f3 4867e645-dd00-4f03-b1e6-f3212e234022 f85a638e-4775-4bab-a79f-ed4aa7fa5730 b875e294-18fe-4ad4-bce7-9c8c540eea7e 3d254700-200d-421a-9a17-94c74e1433ae 646ec5c4-a6f3-49e2-8210-75ab876ac309 ae4019ba-e82b-4602-851d-b1b47d4da49b 44da9ffc-ebad-46ef-b05d-86a431aab17a 8d8fdf3c-e74a-43a5-9e36-bab43c920ba6 866480e0-7efe-4462-be67-a91d6fbc110c bd5b8904-253c-4c09-90d4-16fccd310c60 bcff53eb-41db-40e4-bd44-cc05221fad35 9f2662e2-5859-4fe1-ba13-3152fbeb83e9 fc3dde05-26b0-42e5-ab10-d2bc0ae09aa4 1e8dca3c-d2d6-4415-86c6-726cf4dbe1a7 680920a8-57bf-48f3-b3b4-16b2af59b007 8b9c8875-3b8f-45b0-9229-2f962cfff89d a4563c3a-2615-4b9e-b9a6-0502acad2828 575bcfa6-3b7d-408d-a2e7-dba6ac2cd9b3 deb1fdf1-3772-4a99-8b0f-cdf094a9ad5f 3b2b9cbc-39e4-4be7-a1ea-8b0678c32e93 416bb003-1a64-4464-91bd-3f810a5998a5 18606b62-d163-4620-aef9-6c3bbde0fc72 e04af833-3f8b-4b9c-a827-8258607f850c 85cd4838-75ec-424e-a03e-17eeed7910dd 16ff9582-a493-4ab9-993b-beb21aac89ea d061b390-0dd0-419b-bbd2-10e7b1b712f7 ee97bb32-513b-462c-bf24-d3ecb1f9561c 0caa148c-0705-4736-8d52-8ea18c07f06f 41113ee8-17ef-473e-862b-a8a4df1f80bf 1a05549c-065d-4c2f-982b-9ff7807df2bf 5ef158b4-f8dd-4bcf-b14f-fff326c722cf 6234b109-0229-4cc6-a2c7-ae6b5e990aa7 8f3c0da2-1596-4b49-ab37-e58f6c6ee6b8 9648b9eb-d3ee-4a89-9ea1-1aa1aa8eb0ef e39a0a74-f78e-4e39-b2ce-190963325e2d e4ea1103-b00b-403b-88ef-3c9b9a075b45 3578cd8f-a43f-43c1-901f-bfd8a07fa461 3e2c5337-3eb1-4a44-a793-7dc279a2f73f 80d4b944-364c-402e-871f-cbf1a9418001 420d2f21-940e-43d3-a7f6-eb5af3b92d89 a7d9e068-7b47-4213-bd51-446889d2cf10 39d5d423-a242-4d5f-8ac6-0cafb95b5216 ce50e1ef-8fa4-4a03-a877-fd3dc0c9e1e6 f3f0dca1-73a2-4b08-b588-c98de711a626 0933539b-b8c1-4d27-82b4-5b6e8203e50f b333519d-350d-40b6-b97c-1dd953fdb516 4f2649f1-0808-4fca-88aa-41aa92c1b14d 7d7dfc39-2bd5-495b-888a-9a4129a93b0c 7c9d1964-86d6-48bd-8dbb-a24ee0147a04 f687341b-3324-4bc3-8b03-547b10ca9d9e 6fd4bdf7-3809-4dac-a20b-6a8093cdb847 ff2727e8-6986-41e9-9a01-fb9e3ae6b9b5 2cc3263f-eb0f-4233-a454-d2bff1d48032 fa8d6bb9-4d89-416b-9cd3-6d1e0a10dcd9 53cb251d-6e91-46e2-a8aa-22b05f6aea58 37117ec5-7b9d-407b-a63e-eacc45d80947 05c39599-5890-4906-a7a9-1cab9f7ce580 1dcef19f-fc9e-4674-9c4b-42d8beafaf74 1e87c9bb-d104-4838-b6cc-ad49439d3507 3ebe2847-6f67-48e9-b1e1-d32c37350a22 1b302f4e-3e7d-43a0-93cf-7ce40ba87d25 30d6e214-2b61-45b2-be35-03bd31490442 4a13a60a-9835-4796-a031-211c99a7b359 6ef147f8-61fd-42da-9b19-a7f036ebd14f 97585759-752d-49c4-8a9c-80f45afc6cc3 728a914d-20d7-411b-babe-87f60e7198b4 dbde4700-16b9-4213-8ff6-8916d4d98660 d0a09dbd-8b7e-4c22-bfea-76c51ce62d00 5f723a4b-fe66-4350-9578-c11d6b242f93 d928a9fc-300f-4396-a6b5-3781689d4651 302936cd-7299-4aef-9d28-b6c5b438a3c6 45f61603-261a-4f5c-9cf9-fb18f163edcf cca769ed-bf52-47c9-b856-112f852f8a53 0c728a72-5c5e-4db7-b2ef-a9b869e51335 b3ecb5bf-1f1d-4244-af80-1f9894d155c9 9646adef-b8c3-45dc-b865-2e154f9cacf4 ed83ed30-db2f-453a-b258-5fa3245df583 f335613e-625c-4e53-8755-1d2659b4be62 16903baa-5d00-42c1-9d1b-c447449a3844 9b3a0941-c6fd-4338-a7e2-b2bba44aa2ba 9d59387a-7c14-4620-880b-bf8d70e63345 1e5989c5-a0d0-40ec-943d-7b7748aa9cff f0b2be2f-89cd-4a2a-a78e-449b687363a5 04371258-e3b2-4ac1-acef-d0bae8b90740 38fb36f5-855a-478d-8010-1efb07c018e0 0d615cd2-bf05-4887-adad-68a124a1b499 6853b08e-cab3-4317-9a7c-817ff6c5fbdf 7439729a-6536-46da-a8cb-e1468fc6c6c3 6e8f66a7-1d4e-4250-9fe3-634db8e5b15c a14ae1ed-5e16-48b6-a83f-df9a8cca314c 39bd2388-cc5c-4c03-b43b-19126194fdf3 f8f7ef96-8186-4096-8046-6487ea4ff7f6 32fcb86a-fc85-4d0d-9de3-52c789d2f8b6 09848510-9026-4858-961e-3d8b8cdad95a 586d8abe-46b5-466c-bb34-cb7c84b26b84 801f229b-4b20-4257-b461-6fb53c0f0558 73af78ab-21b8-4322-b04f-a5cd65b6ac02 1f5b0e1c-b2fb-4349-b949-d662b4c73ee2 949689b1-b5cd-4539-a5bf-8020b7b60a68 9088408d-6c8c-4cb8-bb6a-bf6760b69145 8b41deac-06d8-4286-a62b-d1775a2a3526 96d9708c-a933-4a2c-9482-140d56c52499 4c8d13e4-051e-4e88-b244-9d4071dc4348 6491de54-e7f0-4a1c-9c53-2c788766774b 824111e6-6a6b-48c1-993c-685f82373124 9ac61d78-9282-4a33-8f01-c8457d7c5652 0410f510-c3c3-4124-a751-6be3a8274919 4b1e6f92-add5-4557-ab0e-044fae81bc82 37b24f93-00a3-411c-9d19-837d7654ba6d b16dd598-99b7-401a-9449-2f17c145a790 7c77d78c-cf79-48b6-861e-6104141a5e52 1b7a9e02-3326-42a5-995f-3b429cabefda 1b83bf1c-f4e9-4185-9b13-4aaf9dacfa7a d611553b-16ac-4b8e-a1c8-5b9c775039f3 f85273db-a936-4a55-a91b-ddcbcdc4f002 d11a6df2-b122-4c1a-8706-ab2b1848397f 09682a72-41ae-4771-b50f-518bbc9130a3 2f809818-b992-469c-8cea-f2ad7e62f99a 406f3062-324d-404f-a660-8d07ca87f090 3a592406-896a-4002-adc4-f83139a2dc2f d9d8d034-b9f2-4265-9cc6-e8894a1bc660 c3307cb3-a6b7-4932-908f-9cd8ce9fb9e1 f83492c8-7d65-4ab0-9190-041df8d629b9 7f747266-5e2a-4ea6-9fd2-d80a9bcda4c5 eab88ace-81c5-4ec1-b58f-ba6da132fdee daba42db-1909-4a68-82bb-95e2bd5d8bbe 0075635d-7e24-430f-b57b-bd6aa50a1437 10ad6da2-4bf4-41b2-ad71-05b9c491501c c924705c-0929-4343-8a46-df736351864a dfe5dae7-d2e6-4f22-84d9-92043fe1480a 37b305ad-7ce3-4268-a247-5483a5c953ac 774f15c8-f9a1-4fc7-8fc4-7f24a3613716 fd287b20-36ef-4249-a18d-8570188f558a 9f7ea10d-ba58-4823-88bd-8b8a3b89e073 4365f6e6-53d9-4dbf-a5dd-aecfc6fa48f4 5cb7a3e5-ba64-4f47-9764-032464c7154c a08af40d-14bf-4436-acf7-01609bc9c4b3 1f9ec75f-da9b-4849-b4b6-52e5a1c20c9a 936d5e42-fe1a-4373-a760-340d0f214596 fd6e09f6-7e21-4736-908b-2b4208eb386c f3a7b344-2962-4231-a8be-25dc292178b8 7b37ed3b-d996-4ab1-bca7-78cedb43f183 05fc7a0c-a39e-44f0-b335-e33a38bb8e8d 15f9b3da-fe41-4efc-8020-07683af5aeef b82bb998-ba46-41be-b6fb-b557ab7468f7 dff837f5-bbea-464a-ada8-c20e61d0f937 9dedfa4f-6446-4c16-864a-60eb9f6b88cb daaf65cd-d6c2-44f9-b77c-b9f698a53201 92b0477c-c248-4774-a600-2a355d040e77 133de9e3-17f7-4419-9bb6-4b8fea858166 2ff30b78-6ca2-4df0-963d-8376c69e1ab4 dc566bba-a56c-4ea5-969b-5a49991438fe a6b3e1e9-1f81-4078-86f8-45f993a19653 ba3dd9cb-1b71-4a73-95f9-4db47ebadc1b 94dfaf35-95f9-4bc0-939d-4006f19aeca1 ce488b07-600e-46d2-9cfa-b0b544413e64 b743a6c0-c778-4b2e-af98-0196db3d97a7 ecb3e635-8025-4dc7-8b85-a0fab859f0f5 1523e82d-584c-43c4-91e9-267297af97dc b766dadd-1a99-42c8-a89f-a0544b8abbd5 2fa44300-64c4-40a5-b5f5-f909cff12537 a900eb23-1c4f-4f4f-9006-535872916abb 7c0bb04c-59e0-42ba-8e94-4f83b730900b f111cd1c-54ad-4a27-a0aa-d93cc1ec89c0 5e944e4f-9ae0-4a57-89d3-97a3381c9a14 a6818932-8630-41e0-82f2-068f5a85f055 72b6effe-c197-4ad3-8422-53c34386762f 5f829cd5-53dd-4a83-b11e-59b9c4a6be75 91faf884-94f1-427f-8e56-ad74897e7860 71daaf87-1317-469e-93da-7864cf734ef4 944d40f8-66ff-4dcb-ba91-a16adb1739c6 14cd5a50-b42d-4e72-9fd3-f1861ee8563f 3e761986-e7e6-45c9-9518-c18afcddf0d7 44a31ec3-d2fe-4d26-b0ff-543975b9c999 b952bc7d-02f4-463e-ba88-f561770676a4 f78e1679-5c4b-452b-b501-b76922feb995 18ceb35c-90b7-48cd-866b-f9ff1fdc1592 dabc3986-ec6f-4af8-ad63-2722908840e5 5b8a1d6b-3633-4b26-a824-cbce1cd6646b fa635103-9de3-4f44-9c11-d0d6e564839b 86e8ebc9-dda7-4598-a86f-13dc0b0a02c7 00755440-ae60-42dc-b2b7-9bd34ad29a3c e64d22c1-6f09-4bf5-9611-61378be0f499 a454b2bb-62d1-478b-8551-187c29a49ef9 8c19d40d-43b5-4a23-bf53-a32ff2fe84a3 74c34be5-e784-4f9a-b9c1-bc17490bd3b7 41d0da90-8402-40e3-903c-bd8009b9d92a b7ffcdc0-cb4f-4631-8261-f55a104c4e2f 127e6ac8-736f-45ad-ac3f-14ca2590415a e994e2c3-cc32-4b2f-99c9-02dedec2f6ca e45d389c-5060-435e-b805-5bd806fcf57e 8a7f645b-1465-47b7-a29e-4020cf7a30c5 fcc5c205-2101-4fa8-8de1-c8c8271e4614 11e8a710-532a-4e21-82e0-cdf4f2a73c68 d99bff93-c5b2-4d69-b59f-eeca5e0fa295 066e0116-59ce-4efb-a0bd-f3b0e932d5cf 711149ae-27f8-42f0-b486-97c8d0be31bd ecb1d063-e42e-4e62-9473-e4c8e4c8c447 5aca7789-0f0e-40eb-a7f8-128aee90ae43 be632828-062f-408b-b064-2270e714d17b 602dd39e-e5e2-4bbd-a301-bd4b065b86c7 041ba540-bbfd-4b7e-84ae-0eb0780b353a 76aefe40-c224-4907-88aa-285d0298da6f 839c8f2f-5262-41fa-954a-0ab7bfe471ce 60ab976e-0ab8-4435-8cb7-e75ae4e06b4d 3187c8e3-5424-4616-8631-0c9cdf69a14f 96255387-f26c-488a-9515-89c6b209c372 b519053e-992c-4d6b-b84d-b2ec5fed15f8 901503f9-2ac8-4b4f-9d08-3c024ffcde2d e2af9fab-88fd-48d7-b397-44832f755d5f b78057ff-c955-4c83-b6bc-c9c18a734b36 c773ba99-009a-47e1-a0ff-767c350fc2cc b6d7dd73-60ad-446f-9e2b-96dcee61dde8 c2bf2e46-7c1f-475b-977b-b54127edfb19 0a2a18d4-a858-445a-bebc-a964b80e3cfc 66816809-eaa3-490d-8197-058f5eb0aeef 193711d8-bc3c-4ce2-94c7-41d0460eafec 5f37092d-ac36-4a02-a6fe-b21ceb699683 114b3e97-8746-4189-ab06-7794605304bf 76bac86e-a86d-4fef-a070-8386313d25fa 08c68f99-9150-40b5-a112-9b49b4f847cd 711a6848-f7bf-4d11-bfc0-1f266f9bb61a 839fd24c-a5ac-4965-8310-9ef44da49212 2e3ccecc-dbb8-4d0e-8754-e860ef4ed851 9b2584ec-0b60-4c50-9985-1543e232efbc 26a26782-65dc-469c-bc15-9798633ca665 2566b255-c0e8-4715-abb1-14e66c5029de 40ae3eb1-a4f9-49ba-98a4-5077e3e1a147 a545b3da-3862-4887-b18a-ccdd8da3d6a3 eef2205b-20cb-451a-9020-c33df134bcf6 54ff6e83-eddf-4abb-b5b6-e5fe2f7c56bb cd23cfa8-f4c8-4a45-a3a9-73c21a9cbf24 42e61cbb-de76-420b-aa6d-c677ab067414 e8ce12c8-a2ae-4954-8403-6fa68cce50f2 788c79d9-5c75-4fd4-bb84-c0a15227e12a 1b88c112-309c-412d-8765-e098470c2aed a89a7ce1-7f05-4e4e-896a-922a0bb15ddb ba957b2f-43f1-4408-b19f-eee2cbd98afd 27ec1965-4232-4179-a667-02a79067fa8b 4dc65a52-0802-4279-b7f7-c26411566188 99c433ac-a540-4fcc-a337-420ef4a6ce5b 2cbab566-9f06-440b-9248-6186f0133719 378c5e96-977d-4cf8-b34a-70c062f13d94 b220ed53-dbe7-4a70-ad0d-c95008e3397c cfd7477f-24f1-42e2-a317-911a1ba6c791 5e0de40f-9883-46c9-bf18-222ca1919af4 60c30b4d-1cf4-4979-bb5c-416a8ac53655 5c9d902a-c0c6-4ea2-8c46-5da16c52546b 6b7ccd6b-733e-42a3-b22a-0846596e7661 34a5ca06-e7a6-4edd-8060-8a73c783a0d6 c495802f-bbdd-4166-ac3c-e8e91415b9d7 ff0c6268-144a-4d8c-8cba-123917556b4e ac0ed6d7-8651-4a51-a5d6-b8510483f486 32d77cf1-3a5a-4adb-a2b0-0c92c8e630b6 9564901a-f870-4913-88f0-caef3e489d3b 0337b8bd-50c7-4796-9edb-02be68f47157 ac0c1687-be73-404c-b8f5-b13afddf443a 675ca051-9eae-4086-97dc-826d315dae91 a55e29fd-9514-4a0f-80a1-942f6eef0c7f f0cc2ea1-c593-4c7d-9bc4-59fc1845de9d f3ec1627-a2d2-4c7c-ab34-bcb42908c680 076ce6e0-9f24-4597-918b-3c00629b4b3c 968d0905-98ec-4acb-83b0-74d8f11a6f77 3e2ae7b4-1025-467d-b42c-d18d916b0fe3 78d580db-b250-4a6e-87c6-27246fcc5c4b 11e69c3a-d4d0-4be7-808d-e7244141d11f c256aaa6-f0c7-408c-99d0-2f5b96c219a5 0a42142a-c849-44b7-9b71-112bdf6f51da 5fbb5f13-4575-4fc8-b331-b26c1d0f2270 ed97b5e7-5193-4a11-978c-1375107c206e 860caae8-f05a-4e27-b7e1-c55c33407cbc 136ce800-5eb6-4312-b33b-1ba14c48cca7 7ae22dea-5752-49c6-858f-fe6ece30241d 4e4415d3-ce99-4aa7-a732-430039674c8a 4aa882aa-655d-4a2e-8030-b52501055c7a 367ef8bc-b3d0-4857-8522-286feed641b4 f9f76078-eef9-4f51-8b96-c61462e0f497 4b73b48f-72e5-4af1-8c52-187d7ff7b603 5e167320-e62f-4945-8da8-c88bee93599e 4846141a-049d-4cca-849b-6c61423f9309 70b01778-405e-4cfb-babb-764c80adbced 9b3f4514-07bc-4286-8108-ae7a9c5b744c 11fd9c3d-74c5-43d0-8765-d16ffda20f3c 8138d599-9ab3-40c7-a4e6-6fcf6112dc7c 72150035-e687-498c-885e-ee3b524db551 dd8f11df-86c7-4e12-91a8-4831bedb54a1 7094f7e6-fef7-4090-9958-61ca6d3f0608 87e0a322-3775-418e-a024-afb5ca9761a8 e873e0f7-bcc3-421a-9d33-95247777b576 34768506-ac0a-46ba-ae52-56dd873ff30f 4b8d09b1-d4c9-4cbb-a261-94badb982c91 63a2af37-78e0-46e3-b4a3-cbd1bd797c31 48697229-bdc3-4956-947e-3c83d7d8855f ebab0d66-faa1-403b-ab01-3c8423ffd46b de757c57-26e6-4517-8762-51ff6323f42e 8ac092b8-974d-4ac7-a40b-de4736a289ce 51c2ebc0-ff8d-4542-8cc7-de65b56bd9f3 4a260707-2848-4f06-ae45-b486b3c3ca10 313e5080-d4b3-4158-a5bf-ac916ea6cede 392db78b-3e7b-437e-b5b3-cae6316d2001 d0364503-ba82-4937-86ca-81a9a2b03008 9353ff16-67c1-4e2c-af1c-8eaad3848f9f 68ec4e89-099a-420d-a952-1bf2a32089d7 600a696d-fe95-4444-9e34-afc6a999d30a 95b62550-4b6e-49e9-aee1-ac52dfe22fce 895fdabd-8d6b-4f44-a28c-2612123cfb76 d51bb803-aabb-4b70-ad62-865111e60e62 3ae0cc76-2680-4126-88a5-2c8d8843f090 65ddc311-595c-4f15-b79c-92d4061e5dca 133ac12d-0738-4986-8f6e-00091749f2de fbb9bb02-83da-4482-8150-741c82bbd907 1ec8fd0a-7389-411b-b34a-ee0126f9a346 476c659e-6120-40b9-b3bd-d0a5779f50c4 bd6e28f1-a391-43f9-8b79-5c50d3e327a4 ff19865d-894b-47e2-a57a-005d321dffd6 7a6f6c81-017e-4070-96cb-592bf8082f09 5413ddf4-570b-4a59-8d9f-1abb491eaf01 61f51735-281b-4d2e-ad25-42130c3be287 65f401b8-cd80-466a-bcb3-3dd415c9f305 a0e004c4-08a6-48c8-9523-5ca8f5fbb523 5116e69e-6213-41bc-88de-346203145318 ffe6e93d-7bc5-4eab-b617-9cfa978b8094 ee55ebbb-613c-4e2e-b213-fe0970f31010 e33ccb9f-f765-4740-8ac3-48a63587a2d5 dee1f418-c68a-4381-a436-98c1610af89c f4808674-8f23-42d6-b26d-901580862574 0275f9c6-3da1-4bec-becb-69a19299c896 7dbe3940-e90d-4761-967a-160cddc9382a 38a5e7a8-232d-44de-bdca-b49880b85640 4cda7fc1-cd28-4f7e-97c1-086596dab8bd aa3ece92-f9c6-4e6f-b679-eb66f7d0d61b 36cd1f72-a46c-4a4f-b6a2-e9909e519ed9 9423469e-3852-448c-b72a-33f2cae27c66 dbb2077c-2390-4d8d-bb5b-aa1166ea81c9 165ce814-5c2f-4ba1-b681-741eacfeb4f7 0592a5da-ae86-468c-949c-c70f8b415c5e 167aae6f-a312-4bbf-9f43-8023a5249bcd d11e7168-1c56-4800-a489-ab0627f24580 9c70c2a1-b2de-4a46-90a4-89afb569b580 c9b7d1fc-688a-4245-87c9-eb60d2fa470c 2555c6ff-dd42-4806-88fe-08f05c71c5f1 35b18398-e8af-4f2a-94e2-d1ca8596b515 b0c6cabd-556a-40be-a698-19ea7266cf43 7e530b94-e08c-4b9d-8ca2-d77994a0a857 7d1f00a7-566d-4bd8-b53c-1b9a5e132675 402cc6c0-4397-4286-aec7-7caabb3cce85 9bf1e767-8307-4fc4-ab27-3d00857b2ab8 4af4ef42-716d-4f61-8c4c-2f441571118b caa286a5-f0c4-4908-839b-38cb9246dec0 e33d0f6a-a414-452f-943d-820cfa0c2fc7 f5220764-1b21-4b42-a814-8733a104873e 5404ee2b-8448-472f-9d29-0741243dbc51 1b39babe-18b7-47f9-ab4f-86611e9c69f1 3b662bed-149b-4284-adbd-fc99f577673f 28fa15b6-56d3-4ed2-a571-fcce37981e75 33cd0e76-72b9-4dc9-9a2e-cbce2fb8aed8 d565f9aa-b5bb-47de-bda3-71089d9b2d14 7d1b6bdd-e6c2-4436-ad51-020e5c3b415f 67c9dcfe-3526-45a6-825e-699d0958e335 d8846e55-0263-454c-b486-30f021c40e02 b58471f8-2f96-4d07-a066-87eab19654b9 4373f5b7-f134-4fb8-b12d-f5d890573165 6a6d90e1-50a7-4edb-91e6-8e778efeed0c 5ce6a844-4741-4336-b65c-39ed6a881245 5faa68d0-4a5b-462a-b9d9-be4fcc5efd30 429e2343-7957-41d8-8cca-a25eeb426e8b 0de96af6-93e0-44e9-8877-4fed9dc0e2c0 5b95bf78-c754-499f-ad94-280f7334a445 12542bb2-fcf5-4a0e-bc80-bcfe8abcc9e0 d0b09f61-7b1c-4bfe-aff1-9fe1755f33e4 852e0574-81ea-4117-8edd-06e14a239679 a03e1342-45b7-4331-b13f-3e3ef5fe5ff6 e62a48e3-825a-4e79-96cc-e8d36dbc1440 b0301598-6d26-4e5e-a756-1ca8977e4339 ff203f4d-eead-4e4c-877b-86172f276e70 eaf7441b-78ba-49aa-93e9-dfe508ab950e 42b7a5e3-549a-43fc-8e79-6a0f1e92d207 82671ff9-5b10-4dfd-9e43-eed24c812b80 ebf16fc7-13ec-4448-bfb8-45b4a02702d6 2626194b-39d5-4243-a045-85a3001a3579 2aa93385-736c-4b1c-a2e0-dee1e3327219 59d2f190-cb1e-4b57-a82f-3bcfea3165cf dbeb6f2b-fc0e-4984-9681-4bab18e41a25 839c47e6-0b4c-4677-a78d-b5b954999198 5024ad4b-45f9-49c6-bfb3-99bc0561803e 1d68b10d-0428-4400-9a79-09cb7cfa9f46 5d24f3a1-dea8-4f34-bf5c-4055c2648429 c2a3b40b-d5d1-4463-8432-012bef48308a 7548276c-dba6-4123-b789-d17c4d99a872 349133b9-a7f3-43fc-9997-9323f93a32bc 277af426-410e-42e9-b49a-19151a039221 ba23fff7-45a8-4239-b4e0-1d411c2595d5 ad9a9a20-c0a1-4a52-b060-be99562f45a6 94e2644a-cd71-436c-b577-fff5ec8c032e 79866269-c4dc-4a33-a604-e61f3cb37757 f25a4ab0-fd76-43c6-9915-bde887efaf21 b3ebb044-95de-4ada-9626-70baff6645b7 c82263a1-c12c-4441-a98c-bfc84754f443 fba5598c-cd48-4e2e-aec4-20301afec300 004260d3-a5c7-410b-b749-8d116781857f 4c82dca1-b4cd-4312-97df-388e336751c5 9a94d06b-8ec0-4b5a-b390-de7c2111ddf0 3781ef5b-ccf7-498e-9cf0-ed567247b2a5 14192a5c-e818-413d-bc07-0f6faac297f1 71d7dde7-5231-4cfb-9848-4f130fc47887 ea07b669-ecac-44b2-9aff-ce9fc256d8ec 71840715-1ca9-4c10-b93b-bbe80940d780 822f7793-51ab-4af2-9806-06b5729aed8e 3797d3b7-77b4-48fe-9115-c74477d31bec d2edc28d-d317-4b6f-91d2-63e605183774 853b5520-a125-45f5-bf6f-06f85f32e4f5 4d9ecd7b-85f8-4a1e-bbbf-6c4da66c90ca 6fb63744-0110-4321-aaf2-6751b3b381f4 8f3a2b81-f5d8-4d60-a8f1-3b2de7d50270 f8cfc9f2-5e8b-4fef-88d1-ab5b73244a41 2398ed46-05d1-4d27-b0db-ffec43e3111a 46ca433c-036d-4e4c-802a-7e40f99a8dfd 1921361d-d99c-40d1-b550-c2f96aefdec0 3663c075-376b-479b-afd7-de4dca7f2528 caea42be-8a51-48ed-9f23-eed03b045840 08c81ecf-c1f1-4801-85f4-0b3d0547d4e2 10b604c5-8935-4d2c-b022-60da65880fba 27c0d70e-0ec4-406b-83b2-fbaa11ad350c 36418342-931f-44a7-a813-268dca1f1a53 a0a14b43-bb61-484c-9c6f-9414947af1e5 e1030aea-6a28-4362-93bb-2babfdaf7efe ef120d93-3dd8-4478-ba29-5ea1eec4e8c0 2c21faa3-994c-4145-81d8-9cdc902eb234 1c8d8b7e-5fea-4203-b6f8-7fe930d29bdc 0020196c-c8d1-4d37-b1f8-a95755adf6b0 f19f18d9-3dc3-4d2e-9282-e5278d162f5a ac357087-5f7a-479d-8ccf-0ffdea83c65f d7e921ef-11c4-4420-bfae-371ad327f09c 2d450556-bae1-464d-b0db-b6293ae4e2e9 1977932d-daa3-4f4b-9ab5-22c27dfb636c 24add591-c1c1-47fa-a5ff-d640293901fb 81fa7844-6a2a-45b8-9d5e-b68f9ff99d21 c67d1724-9ff7-49a7-b2ad-b1b5690cbb07 92fe3f0e-8842-48dc-a890-e0e26850039c d6bc2a87-5f9c-4fd0-8472-cdd8235db9f9 b39009fd-c141-411e-8181-0cf82e75d805 989f4bbc-423b-4ded-8838-e6a2b9745988 0f4bdd1a-4c3f-4fcd-9e26-1cc8e15e31e2 606df13f-c4c8-44b7-b1c3-a6b80158b713 d9fc2ac8-3343-4e4e-b461-2dbd7c7a48f7 43b58c74-57d8-4db7-b510-fa4a00680707 b5cc1770-5097-4b9d-8c4f-e3e9574905d3 809d80ff-1b45-4e1c-8429-ca9d844a50c7 d31232e7-8398-4cb2-a03d-dd4f739ea8c6 17b4037d-06f3-4dbb-9c96-a9d07793c450 68f7e54e-46a1-48c9-8acb-4c972522c78e 47c9d116-05d0-4181-b146-981c4a53ca8c 6180b5b9-fed3-471a-841b-be9337a2813c 54ab2fa1-8a86-4331-9858-c6ca7e21d3ed d5974ed2-d560-4f6f-adad-9032ec6f931d a01b56ab-d16f-4dc7-add2-b851eac783f6 b0ee7808-4bc3-4393-98b5-c488774fc541 f595752b-7f87-45dd-9dd1-232b0a6ce43b 46c76deb-4dba-446c-b9cf-e36dc62ef71b 04ae7b64-7663-4a6f-85da-3301a2a96907 8ab77c99-0c4e-4341-975e-77b0addecbe4 7f76d9c6-36c0-4578-976c-890c7cc3956f 4ff4cab1-35a0-4253-a623-d929a5949d1e 73b3ef72-fd2d-4c9e-9e35-fa6e54c68be0 bd8aeadc-de52-4066-9cbf-4dd35aa96f9f dd2c0756-76d5-4932-9926-35460e762f73 a429623a-e1eb-4ca2-b309-784139270ff2 5d904dcd-7bed-4891-8207-7db967298caf 389d155c-19a4-4660-b522-4de2dd5d8876 c8833cef-971f-4da7-9f44-a124268496f9 14fb59ec-fdf7-4924-9395-0e7805c775d8 fdb69be2-3d60-4482-ab2a-428ad61027ef 104bbfd9-db2f-462e-8b76-47b67f843685 442a4759-ce22-4283-8f2c-5ed939236037 4bc553b5-f089-413e-a61f-e81dc8d8fdc1 f5ab02df-8f37-4f4d-b802-710867e8c130 2c8c108c-c5a9-4616-9a5f-37041b54e614 80022f41-20e2-48b0-87bd-2f932442d261 cf6cc7ea-67dd-4096-a566-fa8f2e05fdf1 baa67aeb-de0d-45c9-a1b3-0032a3d044a5 8022848a-3458-4e3d-aff8-6d512f200ac1 08964817-2f38-4be3-8b79-1444678f4568 f21d1aff-24a8-41e0-9a2a-1d221f501ef2 122a0311-17c5-41b2-938e-e59f09b0c30d 95b1ba8f-1d17-4d12-8c0e-a3daa884bcd5 baef77d2-f903-41f9-b28c-73b9aeeafe94 64a64405-3f99-43f8-b5aa-887eb0c66cba b63d82db-a933-4185-b09e-fd80ba8a6012 14949f42-aa09-449a-97a8-c21ae4f5500c e6cbfdc7-6f4c-42c9-851a-518d5000c3b6 c5871832-7d7b-46f1-aaea-941cb53a7c7e a15753fd-c2ec-4bbe-8445-1bff12db15b4 499f51a1-e353-4a01-8036-b4049b0a5e2f d63c88dc-3745-4c42-b7f8-39978ff70c37 d0d8d613-91d5-4081-9bbd-33bf48511026 4d568ea1-7e54-4706-ba25-2d1f240aae15 8bc2a327-c1fc-4677-aa31-0576bac45085 9ae48f82-0cad-47c2-9db6-74fe57a27b9d 807d633b-cf27-49b4-9bb5-c65f439512aa 37e74959-387c-479a-801e-11dc42471686 94bda3df-f4f4-4634-bf20-3f07464795ca 0d9e0101-bee7-4fd8-a8f8-1bee8d7e9ef0 984d4787-c426-497c-a7d3-658b1127f792 d0a732b2-ad7e-498c-a742-a9544d5d7d49 3ffbe62b-8290-4680-9333-253c1892493c 0ee0b053-924c-4f36-861d-d86e4bd65d04 951a8420-10cd-4523-9c94-85059b92e3aa ca300d59-f7f5-4e58-992d-a7cb3539b684 4cb24c89-5568-45a1-ab6b-619f258ddacc ddc3ea94-e546-4f42-bf6b-3f6f5928e3d5 284c7f57-87f4-4b7c-bd9e-d1cba5974237 3a8be553-073c-4a42-92d0-7ae0638fd576 91c90209-9c86-4231-ba33-84b3976a08cd 770233ea-a41c-49dc-8c32-8652408ef1ed d4c52e37-eb1a-418e-964d-2b9d4070a2d7 b771b398-f697-4d9a-939d-dbc034f770d1 004cedf8-fa68-44b5-b3f0-86c21fd2157b eb500be2-3d83-4a28-8561-d7789e3f6f18 7b039b40-ed75-42a2-abf1-f2e33e39d99f 6bf3144b-96a1-479a-ad57-ce9a56a332fa 92d6c4b1-d8c4-4748-a497-f78fec222a65 eaf1f849-6caf-41bc-956e-f4c480fb0c29 99d8715e-6c8e-4691-8d67-9d4c303bd0e2 c876bb67-856d-4853-8dd4-603d8831e8ea 79c486c7-59de-4250-be8d-823097261e3a 71b0d04f-9069-4b8e-9429-eadb1d703cdc 3223c860-3328-4926-8518-6773ac924dad a1c6b3ef-d275-41c2-8d82-25b79a3e09be b877d62a-a4a2-4104-b8c8-f0ebea9765e9 6cab6d71-5b43-4153-adf8-aab3e8c16a9f b367ba50-a785-4328-aa72-65d6eef15fc9 c78a7255-88f7-49fd-82b3-a8d5145ebd8c 4a6cd8bf-d703-456f-8c8e-e63a8159b201 9510fc56-e0c3-47b2-b88f-e83ef3fbb7e0 5756bd25-27ca-4652-83d8-12ed0be98d85 40449ea0-fb44-4792-b787-28a1856b3211 99799c89-e094-4cda-b3d6-a0701c03c629 e2868699-23ae-4d49-a6f6-f286e8350b1c da3ae15b-c13e-4cbd-95d4-cc86cf0078f1 90a7de6c-626e-467b-bb43-1ca77ac27d55 dfcb597e-cb1a-406b-ae25-81bc44d88ec5 3f45a55f-834f-42b0-a257-cad7e0be5d94 16b52f27-49a2-4a70-acc4-fcc3dbab557c c8ad6a06-02e8-48b1-a7df-77e9c031801e bc8fc4d6-c77f-4744-9de5-d41904e545fa 15b5fb63-89d5-40d8-899e-bd8d43cd7543 a3dd3e52-2da7-49d4-8238-603cd98f0b89 eda9f2c4-5a98-4341-ae4e-526460c9d37e bf4e5aee-ae97-4bd3-a34a-e99e8f510b9e 3a13d9d0-6dc4-4e01-a459-cab86392131d dada9871-805f-4ac3-b4f3-8def6b2b221e e2d9d51b-2c1b-451a-86f8-bbdbd376d010 6b72613c-4070-4848-8248-167982e73059 addfc65f-406b-43c6-9adb-9f9148fde5c2 d56400db-dee2-4a53-a3f3-647bf577f2a5 f3cc7890-fea9-4a63-830c-a4523232f19e c1e79501-0652-40cb-96c8-4d3dcb604a34 8714e79e-3b38-4b44-ab2a-e12cb3b69f4f 0147cbe6-661b-4e1c-a468-3d023f389aa1 2426d91b-d517-428a-a3f2-d1827d7f720f 1845ac7b-be77-4a66-a2a1-d9d734b28ab9 e5d7c27b-0b58-4436-bdc7-c67267bae000 f10230e7-e73a-4b91-b36e-667dc59ddbdf d183ff5c-d59a-4424-b740-62521b618e1f b6bbecae-523a-461c-8387-aa738fb01ee0 ee87a3f0-4fb5-4783-8beb-b8bd3e04b7db b3250f40-bdfc-4f03-ba7c-3bffd1d60d59 57da5c0a-86ef-4a8b-bc86-f9d2f893b578 fff1e40e-190e-48b4-a165-b7a48c84cd1e 2c29aca9-fecc-454f-92ef-bedfcdcfe6ed 2b927903-6b9c-4ef1-b9c9-c8907a49c639 10f20464-67fe-4ae0-b514-ed4edbf139ab 31306b2f-6e45-4112-bbda-39f415fafb19 7880bbc4-9798-4dd9-a871-95dfb05c625b da2da6a2-8d5f-4def-928b-8fc00815cf63 470e07c5-6525-42db-974f-6bd875bf6ff5 e08832ba-0a50-40dc-ade5-805745cacfeb 1c437842-990d-46a4-9fa9-d88cf5690e8f 8090aac5-d7d1-4e20-a949-ca957c3f1fe7 dda4bd32-7dff-42c7-989b-f0fd5e5a9e7f c04a5bb2-4f25-4c5a-bef9-b110ae4c92fb 6159ce4f-c051-40b0-9096-d6008e08d327 cdb2bb03-b19a-44ed-bd8a-dde11f0f8670 214c3490-9cb2-4cf4-9f06-88cd00582f46 f8dc13d2-79b0-4e67-9a5b-cbc1d8db672c 686aa0ef-4131-41ad-9765-b30267d1bffc 9c0dc157-37a8-490f-8a8a-3f7a04488f6f 8c54899b-ba42-42dd-b2ea-86e33aa28a1c 95d4dc91-ccde-4b34-94d7-d04f4706eff7 8559b8fa-e28c-44a5-bd62-43d731a3f99f aec2f8aa-32ef-4be3-abb2-2e513136cb6a 0a286a95-ebf6-4d8b-9498-4a5ea32a49ee 4abef457-5b35-471e-b154-67b737fe30a0 7a84598e-5373-4a4c-9381-e5369c57acff 58f6b4a4-cdb7-438b-824d-dc82a3829656 11331cfe-e6da-43a5-9f96-e1b77c7e1450 3bf9a930-5caa-4069-9aa3-069432affdd4 01d54b2a-7666-40fb-8954-3422f17bd4c2 71132b58-ff69-4f28-992f-615b1d69b6b9 1f73c9bb-2b3a-4e5d-bf4c-a9a3ff5b14b3 e040da05-63bc-446e-9508-01cc850e6f75 bd2682ff-5bed-4eb3-ba73-78e0ce699342 24f606cb-fd78-4814-9ce4-7e0dea90a068 87d0e685-945d-41f3-ab94-7fd8378bb5de 6a6483a6-3193-4b09-8589-e266f7ace9e8 e7cb70d6-79ec-417f-83d5-9e67f095b2ba 86986393-302c-4f37-99c2-e5a05033d58a a24342b5-748b-4888-b1b8-291589adff76 62cced83-c1ad-4795-8705-380fe6e9878c e2ba0548-6a60-48c9-b93b-13a92bb2c104 362dab5c-ce6d-47c5-a666-83577067ca74 9e1563f2-defb-4e60-b135-0eac146f8f3a 6c52bfe1-6f8b-43e7-8801-c4cbda453cc5 d886abce-f0fb-4364-904b-5e347281e56d f929e662-fb30-46fb-81ba-30362ee3dfba c1a0e58e-2fed-4650-8c82-352b1a94638e 93a5b1ad-60e9-47b3-afaf-6256a5859847 5ea8c039-f3dc-44ef-b768-65744bcc2e6c f44aacca-5a46-4006-8b5d-e2163420ed86 414a7700-ea60-49bf-89b4-331e894943d3 be6201ec-4ae8-4b11-9cbb-e11efb35a375 56079799-21ef-4d37-a36f-0cafda8fc7f3 58a655c3-004e-40cd-b8d2-1007df21b511 f681ddcd-89eb-4ad1-80a1-1718e4e4cb90 89cbb75e-2ead-4a30-bb90-0aef9aefac18 be23d6f3-f92d-4cb1-878d-186a242f3ae4 482dd08b-3044-40f6-af64-8cce5aaaf11d f29d82af-e350-4697-9dc8-df00c9a264a9 a7712284-5f53-4ea5-991b-2aead1835f99 8f166d46-269c-469a-998b-760212c24ed4 ff41d2f7-d27b-4782-8b80-34561440c521 a1e92b67-4d2a-4717-9725-5beb63af4cea 8ce76304-1598-4ff6-bf0c-3cc6df767358 399e3bd8-913b-45fb-9a19-a2de0dc094d6 83b2523a-00d9-4669-9dc8-83c288cece5b b2898875-0b13-441c-858c-2cc0080a3465 99f13fb7-c5c2-4df3-b489-b00563148413 b75669db-86cb-487c-86eb-dce3108b622b d29dbb7a-56c3-4c03-b519-325a5cfa16ab ab68ce90-6f73-49fb-ab3e-ac8504d8a7fc d0118371-4c31-4fd0-bdf7-b1cbab0ffbc9 d052fe4e-77aa-4bd0-a85f-e0b7a880790c ffd37d3d-ee1f-41a7-9cbc-69cb3c9c72f6 897af8c1-054a-45b7-908d-eb86136e1e8b 9d50baae-f3cd-4177-9cc8-a4713457ca96 28cadc99-0a0b-4bad-8c38-627452e8d5a0 59ed4dce-710e-4c04-a74b-ddf1f75d5f65 1a4f0bc2-343a-4433-b622-7e01fb424194 91d587d1-67d9-42ca-a7da-2d6e3b816145 928b9807-29eb-4c94-9e1e-87f3e7432422 0f57a651-1c47-46f2-a566-74abe8fd3c8f d1e935d8-fa15-420d-8ecb-72d8555579bf c0808922-2e19-4321-904f-1b10ef073ec7 293e55fa-28e8-42bc-89ab-3e68a7713ca8 6cc46b7a-939a-42ed-b665-d97ec6d7eb7e 8d5d7879-538d-4f22-bdef-873f0a590e72 eac80f4d-5de6-49fe-92fb-9789f47bab19 e5d9e956-6bb8-4db3-9a28-264d74223462 d69c8721-68c2-4097-a7ca-a3d7f77e5cae 2f53da63-977f-4991-bc14-d38630a041f9 89d4ba0d-6f64-42d6-a2de-91269cd7ab2e 8affc164-a6bb-4cbf-a439-c6f83c67ec7f d057d675-4552-4744-82ce-d1da40432478 b9600347-be04-4b86-b85a-aebb5a78c867 1e6df92f-13b7-4977-b66c-166edeb208f1 e5aba100-3b31-4b0d-8461-bc8dcdf8cd90 5a0c4d3c-e38f-47de-bbfc-ffb7f534fec9 5aee3445-c06b-4465-9848-227160c91a5e 3e00d9c7-3f72-4288-95b1-b6601ba3ddc2 0a215ca0-e416-465e-a99e-685a7e8381db aaa819db-9ab2-482f-a81b-4298142363fc cd7f5e2d-ec03-4407-aeb4-76d08d13fba8 c72ebf02-47b1-42ac-abf7-b13efdb46afc 12e36ca6-bd81-4441-8242-e49e6dbbe4a1 b88c17cd-e79c-4e1d-8c50-7b2fbe836035 89912941-91bd-439c-bdc4-a20a8c0b9516 6e7f0bd8-3ee6-4381-9bc7-8513f0317721 c5e7b320-13f2-4455-ae06-1e39d4f6c87e c12edd05-08bc-4f62-8f95-f5be5e6dcc3a 220693e1-5d14-49d1-863f-bef6a3005f9a 123e6eff-611c-4e7e-a805-a8c3b19e150c 13800501-894f-489a-b3b8-aadf68607dd0 46a950bd-c228-48ab-bafa-e6ab7407e7e8 7f964a29-c369-4f19-8bd2-ec82a31b174c 1e89fd3b-4d1d-4b1b-b922-f4f40909b5e8 8139fc0c-158f-4a27-bf41-19b93d5e361c ad9c8c4b-d9fa-4262-aed6-ad86a99c95a3 97770bda-7b8b-4f46-b2a4-52838d58cb6e ddf3c381-6069-4d1b-a9cb-4174e64929eb 5c161a44-eafc-41bb-a9b9-164525596740 ec37ab36-d800-4654-8f85-d22e9103f26b 33b68ced-1198-43d8-91ea-deb141d6c632 55689d8a-bd54-45e8-ae6e-a6e4e9e900c7 6a64ac8c-cee8-443e-9cbc-8b53a8c7bd1c 99f7d584-6399-4eae-ac98-59218d243900 f82478a8-d675-4b9d-9941-be1e4d6fbc09 dcb937a8-de82-4d91-8199-ed9f00f33f57 725c0817-294b-41e0-9b56-47c5dcec17a6 65c64d70-dfac-4c47-a2c7-e33a8dd952f1 9283c754-c201-417b-9aa4-9f018abd4e97 509fb748-f4d3-477b-8366-42a3a6d44700 3bdb694e-9f51-417e-a470-ae2a99741074 6b03546d-c420-412d-94c3-f633bf88a3f1 ed8cb169-0d61-42cf-9d36-dd23f463ea61 1effc717-8fe8-48db-af0f-f8f710d83ca8 cd2c1bc9-abaa-415f-b3f4-400c8b9d1cdc a1b2a2b3-7dde-4b39-be47-eecb37225b49 4ff9286d-f6cc-47ea-b9f5-f6a68655cc8a 7d68ef76-d733-41b2-afaa-fd52c481784a 30e9f73e-dfc3-46a4-833f-7799478de306 973a0017-23c8-4c6c-bbbe-b1a9c244cb6c 6d2226cd-9aca-4088-a1e4-cf9102860d97 380d1556-3b12-41ca-b112-1a34d12ddf85 ae372915-9dbf-4e1b-83e4-c055720b944e 6e3547d4-9369-4a9c-aff5-80859bd637f6 2b0b9fff-9060-400d-883e-92cfbb6ccaef 33451fae-8176-4510-97c2-d600db443a31 8e44e7e5-bbae-48f2-aa75-97a18e092c73 29df94af-e463-4f48-aa44-665270804de7 cb5dfeed-d32e-44a5-84de-e2a72fee0f8f 4bcb00df-0d7d-4595-80c9-1cbada74d248 678ff3fa-47df-4e27-9ac1-066d3490115e 8ee04fc7-d163-41e1-a2ec-4d0be1bf2f3f 98a3054c-65ba-47ba-a2c3-c4e66744688e 2c0b7cf1-d2ea-4788-9fe6-33c0dfb32eba 580db211-6c33-46f8-8ab9-8c12222497be e790b8de-b71c-46d9-84eb-eb5b9fcec803 d926af27-23bc-4e2c-9928-471c5c910aae 7deda6cc-5a37-4eab-a0fb-6f95320d42d6 edd408fb-461e-453b-84c5-a42a0e55325c bc3365fd-1b62-4c57-b0f4-0bdb5be83da3 66bfb258-899a-493c-af93-933cbc83e0b8 b8e16494-56da-43d3-a2f1-7600507cf089 3867105f-17f9-483f-bc7e-993cf018ccdd 22abf4ae-643a-45ee-a08d-ac218e6b250e cd4f4801-d56c-4329-b0e7-d921a313967c d6eb3d42-f278-4a40-83a8-61dce3e30c66 5690eb41-eaac-4f78-99d7-db2ffa67628c 7f08bb66-c00f-481a-ad33-1869ae153a10 9d323572-9bea-44fb-8356-a2cef1527fda 1877dc50-d548-41ab-b51f-22f674d2aec7 11129d07-fc07-4b33-ab3c-ddd120e208dd 074bcd17-714d-40d9-905d-a3cef0771039 af8b792f-21cf-4849-bd12-cf325e274c85 124fbb2e-15c7-456d-b03b-971787331014 c168aebf-25d1-434c-b90b-844a374fe9d8 92291330-9f54-4fe4-8ccf-edb7c3c47dad 37a7ad21-156f-47ee-b7de-d6bd5719821c 5a2b31d4-7b70-40ce-925a-470a07217842 5a97ab2a-390a-403d-b03f-440d0cb5e1d1 50fb2269-e654-4e8b-ab80-b42a5ce2e771 3a9bede0-b6ca-488f-af94-52c72be6c3bc fd354a6e-34f3-4eb7-b778-2687fcbef1fa 03100fcd-dbff-4df6-a321-de7615ea6ba4 f6d71c16-0803-4379-b4ef-401d79f4ee77 1e478ea6-9233-4484-893c-66a715d0dcc9 7f63aed0-be8f-4c92-9e2a-d3587eebf02a 7a0b3a25-75c6-446c-9edc-141ea3ec06fc e96f8e06-b770-4047-82de-75f54dcccc56 e3c4d34b-fe95-48d2-bad9-3aea312d89b5 d15b7251-3862-4489-affa-992d7fe8079c caa01f68-d49f-4e7f-98b8-80b4e018fcae 7d3d17d3-c8d7-4360-ab05-c962f7fa7734 4d1c10e3-ad83-4033-b2f7-59c14b3149d0 fe615883-70d2-4402-9896-762e4958e09f 01ae69cd-7640-4a0b-a106-67d9e81f0e94 bae9bbf2-c3fb-46db-ae4f-43f1e2d41a23 92a6d542-3e6f-400d-9ae2-d9473ccc6d6d 57e4be4a-5f78-4757-a8e0-37104f116b62 2100e1de-8b81-4527-a51c-1dd1166fe7ad bf7045c0-a44a-4999-9bf1-7216955a7f58 7519d514-fad9-46dd-9121-90644c771aa5 5dbb16fd-70cc-420e-ac03-ae1643544f4c 1501d3f4-0c51-4861-98d0-afaae1a33b35 393feaf5-fe84-40bd-bd48-75c6d6856f10 f70e1557-0bce-4bb1-a27a-fa129e3a3076 223adb23-266a-4a4f-b6c2-d1f422bb917e efa68447-4934-4b7f-b1a3-a9ba0f9067ed e7b9a938-a53f-4c99-9551-d829d3451e46 730393d3-aa35-4694-9edd-446358cca4a9 2040c32f-0e44-43d9-8ed5-a60addac343b 45615e9f-47eb-4658-ac1e-73441e7b8acb 426b650e-7956-441e-b8af-d1fa4f2be82c 2c4215c4-b1e2-41d4-8749-68e838f57aa2 661b57eb-87db-41e2-a6ac-088cb1e85feb 51eefd3f-7916-4e91-9bb6-74da40d0cc3d 8cc5c0c5-52f5-44a3-acab-a45ee20fc2a6 907bf7a0-eee5-4bf9-b28e-d76668e49600 422e6a5b-7edc-4d83-8e5b-203f88cf0b68 789e2f2d-b1c2-4752-9a66-5a92cf489f17 b6bdd2d6-ba6d-4105-8b6d-2b9f4cef7025 c8003d7d-a4e9-4946-89c3-5bf12e7e0794 05bec1c2-82ce-4d28-8da5-5daed227583d 5d788b2b-4f92-4d48-b00e-2529d165c776 5a209d0c-d326-4126-b657-9b2f3b414240 66f373aa-4939-463e-af76-743f46cd53e4 d6e75df8-75f4-4f76-a22d-f6e99f8fee71 d5249743-4050-4fee-a953-2b81fed54f3c a6699828-cdd2-47a0-8418-bb78d6122aa8 daa35a57-4987-4ec0-9255-38c5b7e3be70 f134d9f7-a629-4df4-8d56-733463ac7d90 f0411074-4894-4e0c-9179-8327d55ee635 b3e63d06-553c-4f37-8c64-f508d3014980 25d35f30-184b-4be0-939f-b7a4712c90f7 96a51bdc-a440-468b-8461-13ef7fb0c77a a8df7d8d-386b-4d82-99cc-1301c3b32bb8 8da4d12d-cb79-4f36-90ba-1f75a5d4a766 ee493b49-c579-4f9c-ac78-fa265c1b692a 6ffaa9c7-c34f-465d-9b3d-f4c5bc490f79 881a18d1-6535-4060-ac98-f0c0d694aa9e 2858282b-ed79-4127-8a42-6f10919ef762 9dcd3d68-81ca-45ea-a351-cb49b7a7661b 8c5f5135-7670-4204-96ad-0cda5ee663c9 d61719a4-cd81-40fd-87b5-f61145909ec1 21c18f05-c3d2-421c-b68b-4c2c6a51695a 37ffd7a8-3651-4c1a-b6bb-eee70e2dceff 842f2792-c2f7-4652-af93-963b9bf604c7 4dc5b5c7-4067-4e33-9b9e-17067e424ca9 f1458579-9aa0-4af5-a593-447bd263ea9a 9036057a-5e73-4b84-9213-cd4ff21e7367 dc821e6f-0d0e-49b4-9e56-c6c957ef0cbf 56640b8c-a3d7-4ad6-aba8-489b696d302f 9f9893ab-f7a2-4126-aeec-4d31efda6173 04cb3c97-895b-488c-8b95-e400e8661e88 71fb361d-b1b9-4ae1-955d-11532ac1de03 8b28775e-6bfd-4e33-aae9-44b257f748f1 d1fb8822-1ee1-4831-864a-0bebd65c24a5 8eb36356-ff35-4e06-8c2c-12b2223285eb b98aada4-a119-4148-9006-fba0f0a5cd4a 7b2a928b-9050-4d55-8f09-a69d1f19bba3 0833ffa2-0d42-4f28-9f08-920a98d30faa 97c5d74f-8912-4d8f-abe1-0e55e8d34915 599583f9-55ab-4c98-a79b-228179e0b0eb e52bb5d5-ff87-4f07-bcf0-e8feb2ba2c54 1cef39cd-1b7c-48da-92d6-3c8c75246a68 be383b49-697b-4e4e-a7b1-8fe5644b1ce9 98dd904d-fd88-40d3-a5d2-c842a0304305 2b7dee94-c278-4015-9807-976d0f33446a 89c0b9e9-bc28-4cf3-b312-6a64c3b23f7f ec2e4c6c-2d71-44fa-81ac-91357bdad958 6bc7cb34-cfd4-42de-91aa-06abbe9f899c 9caf9718-3096-4aa5-914e-f062f45aad82 f3dc1028-afef-47b6-92e4-7277e51b38ae 8d74a3cf-e7ea-42a1-8869-ec456e834ab2 0e4a82d1-86ec-4fc0-9141-4cc9f2f5fa49 2c4ff898-317f-4158-8eb3-034a83d8c3f9 094ca266-d597-4eda-935e-8ac3e3dc18a8 8408d520-9dea-4d2c-b550-89f3f6775bf7 82cd5612-7894-494a-be54-e6f594663834 9238e84e-185a-4e27-a493-4b2fe8901d52 52dc3ba5-6d14-4aab-867a-caab1d935fb1 bd6cbceb-3453-4826-bad2-0ec2d6270916 0d7a0d09-0a67-40c7-b401-4204086a2441 bc39281f-ad3a-40ef-9aa7-175b87b06c67 e68e41ea-f908-4f36-b437-917545aca167 bf16160e-6d4d-44ed-8253-f01b682bb1a3 efd71c8d-7ccb-445a-8d3a-6062d623ff7b 9b38c70b-5471-420e-bb77-26fc91e67b53 3dee1633-8f80-4b8d-a649-20d2437424dc 505f447b-4509-4b60-85a1-b8095d975051 bf45452f-7eca-45b4-b04a-95e390d38a7d 12313e08-cb58-4107-b526-761e691c775f f558b160-a2db-421d-9a45-83fc35e7b497 f56ac6ba-549e-4075-84b4-e2a3f25b66d8 e1f4da65-d592-476f-b70d-88014f7bc97c 4709d58b-1e1a-4d42-92e5-06a560a49b24 271b65bb-cc97-4bb5-b32e-fadf4a549ce2 5e1be9eb-51fc-49b6-ba8c-be1803a432e1 4f676ba8-1206-404b-b860-ad7aea7a92b4 ad423c6f-7e0f-4ce6-9614-c49108eb21f8 0ea85e41-36de-4a60-85b1-c40fe3a9f95b e0c2faa6-e074-462f-a858-1be3369c3e5c d46d91a4-1fe6-4e1c-87e5-ae46b97ba631 c54ff8ff-2277-487b-96ac-9f14e11f33ec c5f01b40-2a34-4601-bf02-c2a9a6765046 aa192bcd-aa26-4147-846c-b6f992332821 11c93e95-d330-43ae-af67-e726ebb39967 18387ad1-b8c6-4b49-89b1-b5eefc4cd06d 4349bdab-c67e-48a2-9aac-1bba80c41228 acae6aaa-87df-4697-9698-1b4d36a5395f ad7667fd-84c6-4784-b2c8-7b84149d49e2 f9b39707-d16c-4d79-b414-9ea5251810d2 97812a32-53a1-4199-938a-b2caee1dcab7 f612b746-e6b1-4415-a0eb-1c70d36a4e61 c6c44914-04fc-4b56-b62f-62d7ac6d12ab 7fea8859-995f-43ae-8b84-acdd1c1a8e23 1ed962c9-c8be-4dfe-80ea-5c1f5e11aade 2a3294dd-24b1-42e2-90e6-85ad653cd247 17edd32c-a467-4b36-acb6-90ac64c936fb d97a3a26-12d3-4cce-80ac-8235a37a8228 00345188-0944-4d99-8110-07c2528c341e 057b945c-9c21-448d-8ac7-24545349b453 0fd26c6f-3249-4fdc-8afb-9d0e42865f15 a9c54bde-04bf-45f7-a34d-fc9bf6ae40f8 ddfee725-e3bc-49fe-b075-c1391bb8b08f 381b2c16-fc53-4964-99a2-f77521f72d92 91ba62da-3d9a-45c9-af55-5141bba09982 b8391f0a-f2f4-4da5-b90e-7c958ee7602b f1256adb-2ba8-44af-b543-13d8c0c64caa 4b8100eb-7607-41f2-ab08-7f4998c12527 83e6ac8d-93bb-4e5b-90ef-d05cb0859e86 76b83ce7-b19c-44a1-a8ac-9f44c4e1d17f 22a6d857-1d8d-48f8-9735-5c618091a469 edfb5a90-1d16-4330-8f32-ca09bf07bd85 9258cf39-872b-4566-981f-f16b70ee326c 95ecf9e5-4439-4800-af9d-c967d383884b ace9e89b-b820-44dd-a18d-caf0e7d6b806 cbd4c5e3-e16e-46ed-b571-9736fb540be7 87e17b6d-3171-4e1f-b0a9-d73c6e264ee3 f775587f-9e96-4619-b907-613957d75b30 0cec8cde-8f07-4e36-9273-0178ccfd9574 13abf3ac-1918-4ba3-a335-160f9b9cb095 31fc1d39-5902-4d68-8115-a974e85b032c dc62b794-0cda-47df-a1cb-446a32f0a848 2e3f86f6-9a99-4d5d-ae72-0fa97fbf0f00 d7e38c88-eeb9-4b2d-beb4-97565bec9008 51047597-37fd-4332-bcf6-859321e7eaff 0a1201c2-67fa-499e-9a60-59b2f3e194f7 2804514f-5f4d-4dd8-9d1c-f93d54cd4cd9 57b20e89-e336-4848-90db-cafd11464473 1ea58e08-2b36-4e04-ac1e-23755a55b532 887d835a-fd3f-4058-b31e-d733eb5a0d81 ea687e3e-3c85-49ee-bd08-d3082ceba9bc d6c0faaf-9462-41dd-a78f-259a7d7e478c 71a261ce-458d-421b-8ea1-c4d745b18ceb c1dd82f7-4381-4af8-8f29-0b6f95f0ec7e 345d5a04-6e2c-4590-9e79-1d97bba98cd5 0f0437e3-87a4-4a1f-bc03-27c7d2311165 f886c573-76e9-4c07-a1b5-d697ba5ee0a3 08f1d22b-b11d-4486-bda2-0b55d58aaf79 7f6bc527-903f-4735-a443-8fca81df239e a6ca8388-32a1-4cbb-b5fd-c0c5b13551f3 44cddad9-9f2d-46cb-9f33-4e305d8767af e063e67d-06a9-4473-9893-aba88ad5142d e33a37c0-6d38-4952-9744-619d16c57d97 6dbc0704-33c4-4f38-b63b-6c15d94fa7ca d8b95ec8-15e9-4db7-aea6-9d77decbe56f 48f9e6ae-1dea-401e-8a76-bd532ff0a381 b1e65dc4-fc77-41a8-842c-dfcab8a75023 25eeec13-ef86-4e2a-a16d-68d493caee4e ff840158-8e0c-49af-a5c2-ecfb7d7f5935 99b867a5-fc89-42ff-9480-7b9337982db2 af4aa01c-ef03-48a6-bbed-afe13d6edc75 da0eafe9-ece4-4254-bec1-5ad26cc799b7 fed93cd2-5904-4fa8-b4fb-780c56b0b172 f30d79c8-e264-450c-bd05-c8f54ae93890 863001f5-c455-4573-bd13-3e8eee91eb30 03b13e23-dbb8-4384-ba35-e3bc7735fb01 2346de23-7ed3-476d-8dae-dc200f2ed704 038f19f1-8f6c-4a30-aaf3-607e2ff077b0 4f3be951-0fbd-4807-9df0-64b5d9c42bef 3948c9a0-4b15-49b4-a714-78d9bb3a1514 23b434b5-e7da-4898-a910-6cb206b5bf4b c65285d6-4a06-41d6-ac13-9827860abc9f 93d6572e-c34c-4db5-9248-7053db835d3f dd093dde-c9de-4779-bafa-dfd909229ac3 7881740e-de77-4942-9a1b-834fe0babf15 4971f597-b179-4ca1-abf3-a4fb800323f9 b41307f9-831e-4c0b-a552-42ccfeaa16dc 67bbdd9b-c886-4e18-a1ae-7f1cac3b8510 a760ab84-4611-4b74-a094-287bbb0439cb 80636c2b-63e5-4623-87f7-7661f6344abe 24b19c2b-6369-40f3-9aab-7bc79385de11 133f954e-0969-4c8b-9bb3-a40e06a74c8c 6223f3d3-2be4-4f4e-834d-30887c006212 29bdf31a-56df-4b94-abb7-8d374cafd7d8 6e3f049e-f840-4190-a01d-9311def0b30a 9172969a-ce9f-468b-ba33-acc3b813ac20 4e58243e-b9b0-45fc-ac7f-224d973dd3c1 5649fd39-1c41-4625-bcd1-423009ed0637 872afcc0-3594-4a5a-87a2-e35a52cb1329 72998409-bd37-4083-addd-55275a2fd6fd 0584c03c-e9ab-4e81-851b-db48ea8daf0a 0a3e4fbd-5814-403e-ae77-051f9c4b08ac 4aa6200d-9e4c-4e8a-9d0b-1b503718553d 2533a71d-0525-4852-a1fe-c37239dcccd9 b0a52805-0c06-438f-93e2-54bfcbb9463f 9d0035b8-44af-4673-a090-b29ccaa8218a f7acf1b2-251a-40f7-864a-b6ab8a8313db 1222cbc8-8624-4604-8543-19e3db627808 e7b6a5a6-cd24-4a49-b757-4bf0da9e2b99 54349cbb-e14b-47c2-955d-c812278cf8b7 aacca2e0-8438-433d-baaf-e5e709f3971e 4cfcb028-decb-42a7-a363-7561a871ff4c eb146b5d-e8a4-488f-89f5-26bd39e3c8d1 65d81296-c4e3-415e-8ba3-68f90ea185ba ae206cae-5dc9-46f1-b2c1-dffc06f8bec9 f6be77d6-483b-4687-b211-6bd3c2ca85b9 617b935d-9436-49a1-93dd-6a7ed42d4a09 88bb3637-9613-48fd-94cc-8191bc68a537 237f773c-838d-4b67-85db-ea44d9ddc0f1 9fd72e94-24e0-41f4-bfaa-498f253aa287 d72b3ba8-30bf-4efa-ac34-42445107d829 5e9b1b9f-033c-4788-a863-b9a1f118a899 5de67568-5ead-48c0-9ad4-777bc37b8892 17768e46-c950-4301-8edc-7691a051ad05 5b84931c-77c1-409d-880f-827bc4368d25 3048c4ec-c391-4370-b8b5-2ceba7bf70c4 2105ce0f-eb79-4f26-aa54-882c5624388c a324c733-4682-4387-8ea6-54f7a6569824 d615ec21-117e-4875-bd82-df246b718f42 4f34091b-d442-41fa-b053-978c5346d820 ae8a2b8f-4dcc-4310-9e88-5ad726093223 5f9741be-73cb-4cec-9dcc-7b3e112b9850 74c40f50-88c1-435e-a933-632334ecff9e 77a9e774-48cc-4d2e-a489-088b726e2fe8 dbc138db-07f6-4547-8b20-69bcf9bbfe96 2e15cc55-4f89-47fe-a4ec-73d2efb41c88 fb32d056-7467-4c0a-9695-cc992c6ec161 7bf247b5-01df-4769-9cc2-38a449018383 dd0c95f7-1454-42c2-be5d-2596c035f774 5c312d7f-1f84-43a9-b4b1-0e8e549c4777 660122b0-dcaa-415e-adca-a208fb995c11 f4248e96-1e10-46bb-a00a-0abac6f79036 292212f6-4896-4bf6-92f8-06dddf3ab132 7cc2fcdb-8eee-4f1c-b3ff-cd64e991c8ba 0bfb902b-76c7-4a40-b1f9-e4f46e9d3deb 52be0f88-c43b-4558-9f47-e5b8e0599ee0 67c95aa3-962b-4de8-92b5-201f001ed585 5a431b75-ca11-4013-9496-174c09650aac aa14c4a2-6b41-416d-a2e4-cd4805d95967 579d978f-3367-4d46-a292-0dda136ec82a bc574456-1f26-4b1c-a2f6-c3d6d7914ce4 ecc32c47-81c5-4ba4-b02e-2f612084f5ae d08446a6-3291-4590-87d2-f5bf04ab6fa9 15a02a71-e981-49b3-9f6e-22e594fc3795 d5e8b350-2655-4a20-b141-dd97c280d3bb e52b4977-e1c8-446d-bb47-baf8144d2c22 d59c497e-2e15-4a73-b11d-05aa08579ff5 4a59d6d5-8622-44dc-a69d-3a491c57d23f 73183bab-0670-4e84-a982-d673e865c343 495cc502-d127-4e82-b637-3a6dea122664 2bd7e386-c186-486e-b86e-4f6bb2a6d291 013159b9-289c-4f78-a853-ba024ea9f57b d4ba7e4e-f74b-4182-bb8e-d54bd5cced7b 12494cef-ab21-4c99-998c-32cb16ca479e 387dc1a2-7041-4495-85cf-7176aec8c9c2 032cac6a-7890-45f8-a5c1-2eb9bec08c74 72719f9c-8a2b-4aea-8cf2-ad46bbcc5759 fd029c90-cd91-401f-9abd-7c603350eb11 6610a71c-b5aa-40e4-8a19-334bb04c967a 77b80b34-0d7d-4b77-85ef-c83faef98fac d50d24c7-8c94-40d5-a4b5-41e04363fdc1 6e72b945-7ffe-4410-9937-f6d5fa9b1546 a4759b3d-9273-47ea-9b93-af4b5b10a16a 21ebc46e-19b7-41d2-a69b-a0542c9dcf9c 32fcca73-758b-44cb-b968-f663d715fb2b 544aa645-7c00-4768-8fa1-cc930790e601 42c367f7-593d-4818-93be-cbcc65a86f02 7d8874fd-bb6f-4b6b-b1c7-3ef438665acb 50164ceb-80bc-4970-806c-9471bcd87dd7 4dfca5cf-2468-4d33-8981-6bbc2aa94fb6 11bf4a20-60f5-496d-b2ca-cc66873dca3c befbfe63-5fa9-4d0f-9493-9957ae586f4f 93365bd0-8973-4578-9430-1fe13df762b2 d9fe5a81-6398-4c89-b32a-840202caff6b 3de83373-e2c1-447f-809d-48e1b6db0c70 826b2c8f-380d-44c4-bcd6-10d234c3fa7e 69d48b2b-8e05-4229-8896-2867920b0b3f 1bb52413-2d37-46cf-860c-5b512bab18ab 05abadbc-6186-45ab-8d0a-492da7ddc783 d92d8b0e-8bc7-41b0-b04a-1914af3f8637 82b9dae2-4a22-4976-af75-7c7f2d5ac0c1 0152a2e0-f5b6-406a-8855-a8360074b7ea cf9f2f57-1221-4567-b129-93ba8221622e 74fbe10c-39a2-4bff-a24d-83315975ebdd 6206ccfd-f303-463b-846e-62df69894356 4e476297-8140-4f0a-aac4-6e8b6f2a1bff 77c0fd27-4137-40d4-8d4b-fe68d0c915d1 07050280-5681-4816-a8fb-ddacde2bb02a 06ba3cfa-84ec-4394-9caf-62e9fc74be7d fb2599ae-4939-4768-a2a3-2453c8b4c08f c00c0637-df7a-44ca-bd11-d5a64f0728bb 4bf287a5-be89-46a5-b65d-2872ca8665e1 aec3a0ac-4571-4627-9c4a-842858c64f81 e66b2f5d-a416-47de-9443-1e295d5c46aa b0059bd2-f451-40d7-95fa-cf975f828296 82473177-4551-4eb9-8a17-f4871496fbc2 4ab9bdb6-7c2c-4e41-8d5d-27844bb7ea51 d1a7e50e-f221-4cfc-8cda-94a0454859f1 4d640c1e-84e3-489e-be85-58335ab959c1 f124e75a-6d79-4d12-9c7f-e373f98044e3 64c49f0d-ae59-4330-b7fd-0a4ac086fd16 9f77a551-ce04-4f3b-b534-ffd28c50ec00 5841481a-c447-4de2-ae0c-79eac6860a08 c16825be-1f70-48ef-8ef3-5b02ecf9aa63 2e444aeb-fe83-4642-80c6-150a73740a2a 83b03663-11ef-4c17-b968-ef1b6712bb22 55139128-417b-4f17-b78f-b0632706dc71 c8bf2c01-7694-4ff4-a700-7816470d812c 2306038e-ba62-462c-b03a-734d00d61c94 ea25c474-e435-4fd0-a78e-688dcc55b625 9b847d16-029b-4e7c-b035-e59791e19379 29e6b6d6-d0ea-487f-97e3-cfd9afc5c755 a323500b-1a76-482c-bd9a-c6eda218ed99 02887239-37a0-4ba3-b73b-aece3f355f59 f9d6cddc-986d-4709-b5d7-070a8b726f17 efe5476d-9f9a-4409-adf0-59696d390cf8 dfdafbd6-d1a3-4930-8fb6-caa8ae6b75a0 3b2cbf7d-b0ee-46a9-a5ae-c972a1e8a4cf 8e724f94-4aab-4796-b6c2-4a892d0cf1d4 d748af4c-891c-4e7d-a30e-6d1bf7d61e02 7890e894-e473-4eb8-a31a-06d00d2800ec ac84c9b2-dfef-43ed-a92c-4c26fdff08e3 7b7c3d44-a581-4223-b7b8-4a10656c5df5 0da33be7-97ef-4ac3-887d-b4e21be9ac1c 60701972-815b-427c-89ac-59350fc7acdf 3af572bd-7b37-4a8e-84dd-cfcecd6216c3 872a43e7-b2fd-4366-928a-21444155e9ab ab61d1a5-2ec1-4208-9962-e221102dea91 e498e49b-0b1a-4995-9fe5-8ffbe6252863 34ad10d3-dd04-4c45-b63c-342fd18a4a5d 79a8dda6-3af5-4954-8f96-e6b9021cec88 d82408ee-fe07-43b8-a37b-5b2f86fb113a 67071a6b-286c-415d-9f25-c05751978c10 e9cad655-295d-49a8-ae14-02a0a8914f77 22e59846-2a3b-405c-b22f-90160acd2e6d 550013c8-bee6-4e70-90ae-6165fc666872 e1e72633-4054-4f22-854a-025e09c58af6 2208baea-4d5b-41ec-8a9e-8279928fb63c c7b68b47-7b81-433b-903c-669d18190590 906237b9-c537-4a46-b456-46a897ae52a9 523e0a0e-e843-4e7d-a79c-dcbdd74b58f0 38ad6ac0-6161-4a2f-9500-b380147cad9b 189449fa-fa80-45fc-b475-0d8119ded2f6 5374771c-8e9e-4af9-a92e-fb809567f0e6 fbd92c3d-63a0-40bc-9a80-577f9617d017 e026c51b-1346-44a9-a905-4ca0a61c0e8b ce3fee3e-cf01-461d-88f6-a263ab08c1fb 04df0a5a-e8f1-43f6-b46e-86f96de01676 f67f888d-2142-4a43-bfef-44bb5d67cbb3 c4a54afa-8b5e-4777-b695-2adc4e6d620a a760dd6b-ed30-4759-bd50-8d84ae58c9c9 53832469-5c86-477f-ad06-c0549eb888e8 9be56c4b-101d-4d75-a334-0f81f8a97481 8af1179f-31f3-43b1-905c-1dd9eced6ef9 09fc3e5d-3b76-40aa-b2d9-8199f0c8ad7f 662f2968-7601-4d21-8252-e500a2a7f9db c5b035c1-96de-4c39-93b6-bbdd5df6a5fa e3514048-11a3-421a-8fb3-495331b2e39d ce959c46-94cd-447d-bb1f-dc81217436c5 3b790454-9e15-41bf-bb39-f29e49baa60c bb790bcd-79f1-421b-945b-1c51246e6e8d b4beefac-326a-4216-a11c-f0134b8e90d0 68346f14-c60b-4534-842f-703b82f492aa 20a43ca1-4ae3-4d56-86e4-8ec417bc4ce2 f2b9869c-4adb-4b47-8b53-1ec97fe1df5b f8c4891a-4726-4e5f-bef6-788d25ae7228 d697a5b7-f415-46fe-8125-60cba8195aa1 8ced4f52-de83-4a16-a33f-d7cfc1ed4340 5f988f08-3737-48d5-942c-e8672a0beedb 7ae7367b-9c77-4fc2-8d64-25e1ad51c4cb ae3b801b-f86e-447b-8261-38a696fc1f20 4e0e6e27-e115-4388-8c3e-d1513205e26e add6625d-2103-4e8a-a3b1-664af5691668 438f5a54-cc17-4751-9389-158500f98f7c aab20984-5cbe-4020-bf41-4ae629385dd9 37daac1e-dbf1-4c20-a034-bbf609d88373 be342293-e784-4e5b-a5ce-6f634e68f15c a61e4ca4-208c-449b-9c36-8b4095068bf6 1c38e4e3-2c09-4b11-b6fe-b26e92687456 98ad0957-222f-4424-bcb4-2e96516fee4d 65190961-453a-4493-bf1f-2fe8131b4bca d4302aee-4776-4bdc-b5bd-2c98087e504e 9a626f65-f305-4312-a5d8-878fd657677b e86f9d8e-2df2-40cc-9766-a06637068c5e 401564fd-4491-4208-a5dc-27f849fa5fcc 266a7797-89fa-4ac7-987a-f50b3453d5e6 09ef0459-db25-4106-96dc-2debf2780fa7 f0de283a-ffd0-45e7-b4b8-3da822f88d3b b8088320-9aa2-4043-a568-fb6d21e73ff5 ed3b2042-f988-4df8-8ce6-2b04613879b6 35b99a5e-3208-4822-a1ea-bcc794287637 87d57b84-c2ed-45b1-9c7b-693c3b374e13 18c2f806-ebad-41c7-9d62-19540c47661b 44a13156-423a-4cb9-b406-450b22ca0e0a 7d0517ef-b81b-4d8f-a90f-d1cac88bcfe1 46f5e5a8-f156-4e30-bf60-95a6e56edefb a3160700-d33b-4884-bbcf-59aafc62fc85 532607f8-f349-464d-b9c3-5f8756ca43bb 2f5bb0fb-24f0-444e-b93b-9f178e86057d 0571c4f3-64ea-468b-bdee-0a9b206c78c3 09c951c3-9665-42a2-804e-dc805a38fb40 eed79e0c-d7b2-4303-81da-60492fc7e7f5 ccd5e2e2-793b-4bff-a74b-2b8f6ee55d6c eecedeaf-ccfc-467e-83a9-273b1cd78e46 e2148b00-d810-4e85-a666-229e30bfc5b8 91f78864-9a63-409e-b10e-e98adf8cd859 6506dd51-60de-4a92-917a-232cf4696e33 1edb87f1-2af6-46b0-81de-6781f2cb3905 708e4b69-989e-4a2c-92d5-8d91a2874347 f2eefc02-cdce-48f7-9181-7829bc6dd5b0 0cb0fc66-d39d-4d9d-ac21-233b8c5292e4 6c11b43f-2fc6-4255-8f45-6f4eb489c673 092fbe2b-4041-45b8-90a0-5be8e9367896 9e5608dc-272a-48cd-ad79-7b23288be365 033b6d98-d26a-43ff-bce9-c926b62115b8 21a209d4-de29-4bc9-b75a-e503301b4950 b97ee0bc-d64b-4a06-b53b-d08e00025e66 a4e569f0-1fbc-43a2-a154-15bc8453cab6 a8c517ed-9c20-41bc-84f6-f4a12688dded 57ebff43-12ed-4bd5-b64b-28c84f3436b4 3990346f-15be-47c8-a71d-85e3947ef7cf 6a1778cb-05f4-4a27-9aeb-1427df564b87 996290f5-8cb5-4bc5-a558-e344272237cc 6f06d6c0-04e9-4dd8-8cdd-512103a05782 432f467f-0eee-470f-b2e7-d435e8470411 cae8ace7-4c05-4625-9d00-31477c3a1d0f 8915131a-4b25-48c5-9d2b-69ae4e8fd347 416f3243-06bd-4ac5-a6c9-c247bdb9317d b85a5149-5beb-41b0-a355-4b67437b7221 ac4abb5a-68ef-420d-9d3b-57fe8fb53d1f d806f24e-8811-4454-95db-e7d800897e62 144abec9-4d8b-4699-87ac-f0231b563482 f332346d-0043-4b1f-9aab-a265dae61f82 3d783fae-2339-4043-bfb9-553bffaffe97 0978779f-c17d-4d99-95dc-26876da2cf95 d8c5246d-a3f7-4c63-89cf-c038be750ada 88a4e2e5-35d2-44d3-b034-386a99423a36 fe751579-c8ac-47af-a6b1-fd373687b11f f21fa76d-6dd7-4997-959f-d910953dda33 e1b97070-61ea-4024-aa32-2ec37aae3047 c11891da-3a72-4bbd-b69c-f171773cf251 f00eb927-5b18-41d4-86ff-16bb1ce74fae 451ac22d-4770-4d8f-9b59-0ee73c8aac41 0c7e3eb0-135a-48d8-b672-9868b78a191e 88be177c-9ae0-496d-877f-8c9763cb7e23 8d89db56-9aaa-4e7f-9f27-7de27fa0d410 7ba6cd57-4253-4d22-bfcc-d47083eba754 bba91e16-f78b-40c9-b87c-aa4741f660ce bdcc4248-f33a-4a6c-ab10-af6f4c0ca8f0 048aea5b-a7bf-4cff-833f-018fc98c9136 db17576b-4783-4280-84cf-c174baac58ef f78c166d-241a-4d22-be77-aa87674b4746 cc6aa467-414e-4129-944e-ef23b2ce5956 bad8d1fb-1085-44e8-bb13-7c457a7caf4b edac840f-a8ae-4a91-925b-c09bf80381e5 c4b0e03e-6ef1-4b82-8b98-80d2ba0d3ca5 a2345bcb-4cd6-4f5a-9122-5de37a2703a9 1e49ddd6-d270-4979-923b-8f737bd42b71 34dee7d3-ec2c-4dc2-9b11-30f407f1361f ba918ee7-f910-4614-8795-756af9ec3c5c bfd65d4d-2619-4f04-98b1-0ad8a55b0ded 55e92b20-f88b-4bc7-a0cb-0ff2570df958 20282b51-5d42-4b14-ad11-c5ba9e2306d7 751a7f39-53be-4945-a531-72e450725aa3 4168c794-169f-4022-9ed3-c7a247f38a16 30783b0e-8fb1-452d-ab47-d17029029eda 170fa0df-7286-484f-b249-aac5271722fb d27a6e2c-6b60-4865-a22b-23fb7be270be abbacd06-a59d-41cd-90e3-9930b2460d90 41f5a1ed-c67a-4ea1-91c9-16d9ddf8afb2 c5dbb7c4-ed3c-4788-bad4-171279a7886b 27f932d1-c1ce-4b11-a3d7-bd5746770200 93cdc824-5538-44b4-b29c-a71d535f63ff c16a6d05-c2f6-49b9-b335-8e9386dbf111 2ad661d1-5822-4c38-ae8b-19cba87a81a1 56481de5-0920-4abf-ab67-180dfc587fbe 6ff48b6e-9b7c-4d71-991f-1f08b7597428 59cf1b33-8c44-4174-a3bf-f6b0bb38c8b9 74b1338d-4840-4c41-a150-6ffb6bdac0ad bfb8fbe6-d32a-48a1-9cb4-956e35d1b3ee 4f4ec0b7-8899-4e1b-abee-8a8f1d7bdfce e1e84d19-aa42-4a6d-adef-40df72f252de 0e4b887b-5771-4327-9000-0e2ad6e2bc53 a1f65c53-7821-4f06-a034-010172a9e599 76552092-561d-48bb-a943-bad3633fd32d 01a96629-6663-4318-82e5-39163ba79599 11185a80-dabe-4af3-a4da-a55b61121920 ba3c4c4d-dd98-423b-947b-3ebb2d57e49c 4b8b63f4-03e3-4d44-8446-f86e929441cf 9937b769-b10c-4034-8b2c-81c6e0eb5075 019b0bcd-2176-4f56-94fb-b02ccc76182d b6a5ced8-74ec-4c78-9d44-4482df1b5abe c329b66e-77b1-4264-b881-8d445e6b40a4 3f4da593-f1d3-44ec-add6-5ee0de722eee 89ed5604-df52-46b5-bd3a-72b46f7e57d8 20def014-0a10-48d2-9829-3929f05d1548 04c7a401-c4c7-4020-8eb6-45d45056ff75 a9bff34f-06a6-42bd-bf9a-25bd37df8cdf 399c8933-4b06-4ba4-8120-c0ba7bd95c5a dc76d2f2-8c99-4c57-b314-71eb937af170 fb2b1498-b6d5-48c2-a645-be985cc915bb ccda368b-16e9-417e-b082-d70f4798cdf7 13b25693-fbe3-416f-a189-4752b8651509 25f92179-d67e-4837-8e70-c1e5b4dc6be9 9bb83cab-300e-449e-bb8d-d5e3ca099341 c1701aa2-0165-4027-96c5-2a7be37552da e3a03fb0-1dcf-4b8a-a3de-b28c49310aea 60d3bdf0-6cfe-4b14-b892-0b8c1b9094de 070404bb-7257-40c9-88f3-7b896c82c0ce 2386097c-9a3e-4e92-8e74-5886f6591798 5b258317-34c6-4690-a9b8-a4b39573c413 61f0dfcd-67a9-43a8-9ff9-dfddd2ce67ef 3e1a99e6-7d09-441d-bbf5-a2481bdadd05 ab6e5409-f6cf-4415-85bb-4ea61d145a95 95ec4083-0b76-4a65-84b9-9fba6b27fe66 1c635303-04a2-4794-984d-568f6a2ee945 b362e6cb-e71d-4887-bba1-612dd613ca83 7e555395-f48d-4b0e-9925-4e0f9cf7e94b 4c0ecbc9-9067-484a-b764-c6711674e19a 02d645ca-2218-44e7-9d0d-cca39a120b28 dbc592b5-02d7-4c76-964c-6ee2278ca33e 7ed72f8f-690f-45bd-81d4-5c2ab913d938 a8fcf958-fee5-4c32-a166-198fe4e8094f 63f0fd4a-a9d6-4c24-b9c3-ade539748bea 3af158d3-cb1c-44c7-85d4-cacdc0b7b2cd e90b80c3-8bf9-45da-80d0-5d98c2095eea 412712b2-29d7-4427-9168-652cd3940c4b 74d1b4bb-47f9-4d6e-95b6-e680152ae9a7 3bc2e75f-61fb-458c-b89b-8b4024ed9c70 40b718eb-c67b-4df6-a175-be9d3cb6d78b 6cef99e2-0de2-46df-be0f-7f5c00ac42a3 b859019f-37d2-4d6b-b9a8-33c582a26781 ee1f1a46-c39f-4833-8d27-ec07f08af348 bafe2890-78c0-4362-959f-0d6e31609a7e 6934f1a9-a56a-42be-95af-7cde14b85f6c 80be4dff-ed55-44b5-b1d4-8380d715283c 7b1a5cce-3941-4956-8f44-329ee71d214f 1d7ebe50-3ad4-4409-9411-cee6dcf5ac7b e20f0c25-fb6d-473d-a9aa-cd8d4b372f03 b6c76d25-4291-4063-b7dd-ad05750fab61 b11cd9e2-77ca-407c-9e3b-26c01086c34d 86a0d000-dd3f-4750-bed2-8d0a99a30876 3bc9fc3a-dd0b-4dbc-856b-6821209d1f29 2ed83234-d0cf-4ea1-8989-7b45c760954d 8a2263bb-d0cb-4f20-821d-23ff604f4c4d 6fd70faf-f49e-45c7-9d7e-bc10ceda4085 bab6ba98-df37-458d-b34d-90c7a0e5b4d4 0b84f73e-1500-43f0-aa6b-075bd4bbe591 e2ecebdc-974f-4f4c-acfe-1b82052bbdc2 647e86bf-37df-4b64-a131-882e7ac383d6 c111eaf6-cebd-4f34-966f-536cd966e262 48490445-c8b2-46ad-8ecd-f979af2ebcba 38dd3ea7-1278-49be-9db2-d7b1b938e70f 27478ea9-c172-4520-a2b3-a06b698402c0 58c1556c-baf6-45db-a1f4-e9c4c6ff7aa5 2ea8fe1e-a7ba-435d-99ca-5c07243b403e f122db13-0701-4d9e-83ef-35a0afb584e8 ef3cdb13-5f59-4d90-ad0e-afc0ad66d253 2057a119-fba9-4708-abf5-6c70740c8484 745a50b7-afdd-40d7-8879-34aa65240d01 b5bb37e7-5f7b-438e-9fc9-d4e0ca9c90ab e41d1880-5bd7-4b2b-ac23-eb1e4752569d 724ea453-be80-4123-b5a4-d9f154a6f514 ae915910-cff6-44b7-bc05-6956c399ace5 f02b738d-c478-4a4c-b4f4-e099fc910c8e df58cbe8-c8ac-45f2-bc68-0bc45f19ffb3 f0e4b287-1f8c-4696-bb7b-c27e20c6c367 c163f75b-cc44-459f-b06c-0a8db3142c37 2fb65fb6-bd68-4880-8a90-f55d2f52bc3f 1b917dee-bea1-482b-bf15-ecad7c67c8bd d59bf1d3-4ffd-4da4-90e5-8ff68977195c 0631a2b2-a6bc-4d90-b296-c7bcd9adf99b f6bcfae2-8098-405a-b3cb-b801a6fcc666 747efa0e-d8cb-4188-a063-23631d12d3ef cfc62282-ff6f-47ac-9ecd-abcddf3286ec eb14096f-62e5-4b51-a90d-3a81bb0d6945 cd9e0857-1480-4a3c-a82c-cbb52d9a6753 9f1ba298-d5b9-4299-9380-5fedd0f3b846 cbc4405f-ddc4-4dba-8f82-6a8251f3b7eb 9ea0bd5b-d6ba-49cc-87a0-7f090264384b 3bc1c210-51be-4021-9406-0480931bd143 086221a5-c9b7-4357-9a02-8e9dfcd622f6 86c9db9b-f6ce-4b70-bffb-7bd15fd3f9d1 c0919d6d-5813-4220-8095-581a09596970 f9cee020-9def-4828-bc4c-13f8baa33297 f727a30e-dc95-4c2f-9e7d-b02201243bfb 39f562b2-fc0a-4c4f-9f41-15e16260d0e9 d01c3c23-ae62-4d05-839d-fbca4497175c 8d0e4188-8dd4-4ad9-be9a-daf286305f43 3e59b9a7-acae-48b7-a8d7-558d1ec37571 237c894f-8f3d-4578-ba2d-c0b49847ea30 d3fa7a99-02c2-47df-9488-76257bcb18d4 5b9d2d9e-04e4-4b16-9f62-20bfb74f3f25 ad98641b-fb88-4d64-b4ac-99da8c5ce45e 3a040b3f-d263-4796-8d0d-e11cd5b7733b a576bf1f-46d5-4f67-835d-f661dfff4eb0 e7f48911-03cd-4b28-a488-8e578532a5a2 61314411-8b03-4716-b90e-594031943e9d dcbba72d-6dd9-477a-be2c-f30bab4d51b0 1fcb4b5b-bc70-49d1-aaf1-4d9ab3dd12bb d9042cf9-b891-466f-96e6-ed50abc00737 7011aa59-e536-422d-bfa4-535cf811094a e57a60c0-5433-4e0c-b40f-a8939a7b9f62 cbf34315-30ae-4b6b-b5d4-033d3fac614c 7345e147-df80-40e9-84a2-fe74698eb862 bda1cfb0-7c2c-4d5f-b767-9d5b80e0399e 7ed037d3-b39b-4b07-99ce-093caed47373 a641dc64-a68b-4a1d-a3e9-ad8cfc7a7cbf f4abd349-0929-44b5-8163-d404d2f791cb 0c641d31-1a7b-4e9d-a590-ed481c38a27d a6c5f819-7738-433e-aafc-661d3e4d6ca4 be6f2278-e798-4950-8135-aa17b1c21a7e 2125bf8c-303e-421d-b0f6-54bbbf776cec eb9cdbac-52a4-4465-9d52-e7132eae1cdf 98cc1d65-d708-401e-a81a-a888d17f0ec6 f278fa4d-1c95-4286-b834-2afd4a6c9e75 5ebf2ee4-8ff9-4228-8e6f-8ef1beed4775 865b809d-4b38-4751-8134-6312bcfbfeb1 fd9640d0-d536-4216-afbb-26930c4f27a3 6e2baecd-96ac-4706-a7b7-ea5c9aa037cc 457027a9-1a68-43f4-9165-2905763101f9 d691c951-aa7c-4529-9dc8-93318e3e0d19 656bbfb1-b246-44e5-a701-95a5e4c337f1 7c7e1788-d32b-48ff-b237-dacdd12d281d e091e30b-b584-4531-82a9-b2e0faab7e07 7524a54a-57f9-4354-97f1-2ea48919beca 8650e844-3c11-4db9-88a4-21deabab1458 6e507c8b-0a97-46ca-a87c-6c125326ed99 0f35e7c2-5e14-49e3-bada-1ab7eb22eeea db9c1719-44fd-41e0-9cf9-5bb8d3274ab2 f48c2739-1a62-449d-9139-8bead4685bf4 38ab8857-3055-436a-b84b-f8f84c8df864 3931ab2c-d340-4f8a-9d65-238ea15a5e92 333c8c91-1bb6-4e50-a872-b8f57e033ae7 fe84f6df-e590-4e70-948d-ea60970813a4 f5337be6-f085-4723-bc72-5f496b69aed6 7b5a8f37-6bba-4b05-bae9-8c27d9c819f9 4bd331b5-71f1-49d9-a355-c1a04eba53cb bccce9aa-e081-403f-add3-fb74109d7e6e b72afc26-5674-4b73-bb9c-6c489350464a c40c0103-9626-441d-a50d-2c4dbd719f95 546fdefe-70a7-4c9c-9cb8-37dddd69de8b 61324e6d-67cb-49a5-895d-efe048e656fd d53f26a5-ffd4-480c-9dfd-c1f9509b0fe7 54fe2fd6-8f27-4de2-a4e3-49dc85cb03d4 0998ddfe-60a5-41a4-aac3-3c688490a1c5 07ed8e05-6177-4bf4-ad70-8e89f3659983 b29612f2-7ea7-4d83-bc34-796025c19222 915ce91c-3b20-47ae-8fe0-ef82895f8b5b 411d14d0-8789-4850-ad43-5284ce735e30 97ce65b4-8ace-4bdf-8e76-5a9f992d4a39 b079b9bd-4454-4374-9662-510245811ed4 54675cbf-0839-4e43-9940-1490bae33131 80e3040a-2c54-4f0c-a12c-6b61f01aed07 abd13d7c-1b50-4dd8-8c16-07a02a175939 e619fc65-1989-4d89-8a27-b5521624debd 91e84909-cb9b-4fb6-8898-a471487dffe9 dc65f03a-fb5f-410d-abb2-32c3cccbe82b cb462b00-b08c-4573-8b93-f78756e29e32 3615497d-fe5d-4873-ba67-98185418f1be 47e8748b-a585-4ff6-9c04-05848dab127a 250a19ba-2c13-4a6c-9c43-ca1c48188f5d dd477957-be3b-4346-a466-9a0d7f657d64 f6149661-bad3-46bf-9294-ac9af4ed4e63 45e543bf-ee7e-4b42-bd65-ab3180e14648 466b7790-ffb5-414b-beb6-d766a315ce0e d155cc16-8e3a-4f8a-a63d-6cd1b2096388 38aba713-37b2-4fa8-90e8-bee62920bce7 4d60a829-d2a4-4f95-9492-fee5965f234c 3fe5dcc6-4c46-4cee-95eb-acc55a169df2 95d71571-daea-41f8-96d8-0663fde4633b 4d59f09c-941c-415a-a244-3d5b61f70b6d e99a9e4f-1603-449c-b9d9-8508ca67ec70 1cb3239e-c274-43f6-94df-15832cfae944 80081560-52dd-415a-bcfb-214212471328 1bd504b0-8054-4d17-8e39-ae0b4cae77b3 7ab534a9-cfb9-483f-9d8e-242e7d9e5e59 7aff4070-b66c-46d9-8d68-5937902b7021 afeda248-b8ff-4a2b-91fd-41d9df05b770 7c00cacf-7d6d-480b-b23e-30fc620766da f8fca940-3b6b-4edb-8187-46acb54f5384 af61e936-a71e-4122-9e84-613d696ad1a5 b6d99992-cb99-4309-83d4-eadcb8fe192e 5315264b-7738-4505-84e7-f3694c2542a6 f3eb944b-c46b-4faa-955c-7761460172b6 6bf1c34f-6d60-4633-b968-ea7ef4088cd4 b600f470-13d3-4c46-89f1-37bbd1a208e3 a872bf7f-8f4a-4484-9985-a5b57f630a9e d79dcd90-2ec2-41bc-b093-ec2999dc29f7 c6112946-c660-4617-a43f-8f2bc7a520f4 7c2fc7af-b0b8-45f8-9e8b-e86d474cbdac 550d3d6d-8f2e-41a7-9e97-ed00b3f2169d bcde7e2f-e5cd-4dda-9106-c25170d23c58 5b38564d-8bfd-4844-8faa-80a13ae06006 da74f00b-0221-4b11-b653-f0a1c33660d0 835de4c9-1908-4503-a187-9804b5ead45c f061ace5-0f9a-45c2-b82a-b8230a5cefdd ad6fd8f8-62d1-4e83-91aa-b1058be72022 7fc59037-2767-40c2-9066-039125bb6f98 6adbe805-8e10-465c-8fe0-937d72b5c571 a0b5bb9a-79c4-4a98-a344-2c1d727e6c3d c1665df4-3bb5-47d1-acd5-403a4e74479c 2bcecdbc-23d4-4dc3-9ad1-6032711af865 fcf6a4cd-392e-4833-a842-4fb1f8093dcc 7f73752b-d433-4dae-b6a2-fba6e7ea9100 c9229cc8-e235-4d9d-8aa8-721c93ef09f7 9ff672b4-2fe3-415f-b707-03843d26e514 15e4ffd4-a8cd-4906-8d4e-b652fde30037 6a4b5f4d-1511-4aba-b572-9390c4716134 41afc588-ee69-4d1c-ac07-060b41f0c8ed 588d0c96-2979-49b0-b7cc-bff4fdf4a5a9 2c2a9511-a398-44c6-b4c8-be8a8ce2d54a c8fa3f96-5afa-4abb-8999-8349c2d22c7b 0ee59660-809c-429c-8c86-115f6775c423 8fca1d9b-e674-4d14-bea0-70dc07c6133f bd2c2997-9d03-4a25-b94d-ecfded741d1a cd1b6335-963e-4ebd-95df-238ab2104b72 c3522e32-383e-440a-a252-9135b33503c5 be2ecbcb-1e32-4aa2-90ce-e3ec72e55de4 3f7e8038-dcd7-40b4-8f22-6297a41712b6 c37154c9-5922-464a-990d-a09aa2e631e3 f819f601-9843-422c-8f51-0fcbe0184963 640d19fd-a0be-4800-9352-1d7b0528e72c ab410b2a-3d76-45da-90b2-92f5048a348d e61d0299-388b-4811-9594-c71549374ed4 55aed277-61af-4f33-9f1d-773cae8367b9 9b387e6c-e58b-4eed-ae80-ea516f1a72e4 028eb65b-7d2c-49af-929a-05c2aff922a8 a1b68982-2a6e-4191-bc78-92ac584118e9 7303f9be-1495-4c2c-9fb4-92640922ec5a b284164f-7214-4324-a2c2-7338b0932ce6 fa9031c1-912c-401d-a74f-80ce2455c944 99d5f1ae-fa62-4b82-8f86-f777c5ea5551 269edbe3-1662-44a9-95e2-5beb30149e7b e4fec4f2-b7d1-4cb2-b019-20a03bea5c16 15d9683a-8bfb-4a95-a307-acec4e82f4bf f9cad12d-fe24-4575-b754-11143c8149d3 d96b5954-72a3-4c3f-ae2c-3351b30a7531 68245d4d-ff57-4a8c-bf71-e5b26f6aaf01 144afd96-d906-4f85-986b-54b57632b4a5 662db05c-4f6b-44a6-a70a-f0551de3e36c 4e86b00e-0ec8-4ae6-9c29-7858052dc428 fbaefe45-7a19-43a7-97b2-d18c58b21b40 449156ff-d235-43bf-80e1-5db25962de03 7377f220-d7f3-4270-9515-0580d94ce39e 5496b5b2-abb3-48e2-8381-036a530c343c 9deda686-dd80-4984-b3d1-38a6ad35935d 6afbd3a6-b050-471f-9e27-c4478c954aea ae278116-4432-416e-9010-f6ba79d1f535 3246c64b-f809-4287-b817-a28a5d11bbec f5f9b399-57a2-4fba-bfe7-dbc6504523e3 c2753ff6-ef27-4daf-a98e-43fa7add0fb6 d5f8bb8f-2712-476b-b2dc-02da01df17cf 4370063c-f267-4de9-b740-c4404d8b5fba daff6972-d7e0-493c-81d5-8c3cf74b09de b0102bd4-6b1b-4cd2-b715-b0f8ce0d361a bf6a4cda-102a-453c-90a6-6d2ed8262a81 da7ca95c-72f8-4e19-bfca-8ac42602a4c5 49b2e8c9-8e2d-434a-abc6-7999ffd4abc5 256c840d-be45-4b27-bf7e-306021b6be1e 6138219e-0dcd-4ccb-a7dc-f95354dab16a 94ce6aa2-2722-4c42-b6c0-661093c95aa4 9c4f84d8-dcd1-40ca-b76b-89d018e17922 1b098b3e-45ad-4882-b400-7a4f550951e9 eb92dbc1-93f8-49eb-b29b-3bf398b05357 b3e30f1c-f115-4047-b13e-14afa29258ae b9109f0e-b3d4-44f1-ac31-1fa71e7aa30a dfd7dce8-7d53-40e7-8098-b404bd19c0dc facdd252-2d55-4fee-8371-40fb6e152e93 d12f26c8-dfbc-478f-866c-b38eb59ef00f 1050e512-bba9-4802-b46d-6e0b0cb9207c c392c9df-d802-481d-b92a-bda0ce76c98c 3a767142-5d87-44d4-93c1-b981ee1607f2 41c90e85-9d5c-431f-8e93-368fc0f3e3af 935e47bb-78fd-4652-9907-61319b0f39f0 4b45f165-84b2-4756-9e73-393c8d4e1580 c9bb1bc4-e42c-40bd-96a5-c74e767b97ef faa0fa96-f3cc-4b33-99a4-66798c28cd76 d40c4573-01b3-4a4f-9e68-ef65ea2e1f14 b2a681f7-8518-4c36-ae76-02645dabb90f 257fffb2-8708-49d9-a8ef-6ad29ab66eae 7f310853-ee4f-45e5-bd52-b3172a2833b1 e1a9acd3-091d-442e-9163-81da91bdf3ec f32a3e6f-289c-44c3-86fa-58ad6da8f255 faba55c2-45f2-46d8-b7cb-9b2d71afabe8 b3dea787-9c3c-47ee-a017-bae48d51cac9 bdec762a-e4a0-427f-aa0c-6e03bc4df97a a98c9511-4dda-41aa-a6dd-0d00c7f62430 b9e0739f-cb1c-4877-a205-ea7edf1d14e6 08642a6c-8bef-46de-a728-f9a71951f2a0 df02e036-b511-403d-bdfc-18b0a10a9d71 3acfc404-b927-48aa-af99-3a1e83ea4489 7e964dba-1348-4ddd-bbe3-d421b0c559be 40e17b14-b8a6-488a-a648-b8e47d3d92bb a19eaccc-b1e1-4d1e-b372-24566b2114c4 bb960c36-cfe5-433d-af8c-e6d44d81f4c5 9b137cc7-d816-48da-bc1e-55c6825d370a 4c59804d-7a7d-4164-b18c-294f982c6b7c 0030a5da-be8b-4df1-8ac2-a99e919e3b6f 896d8b55-d224-432e-b33a-99990a3cdba1 b50e281b-96f2-490a-8bbb-5eb480ca24d5 6f28f1bc-bd0c-4d81-92b3-dbc671256d75 2a8b2869-a868-43a6-8f08-b0b612f82c41 bf4ee17c-2cdd-40c9-b3a7-df866a2be76e c86e4cf3-590d-4b1b-bbd1-a14562026639 bc29d6f0-0e75-44fd-a445-d059f3807588 fdb22353-9e12-4e1b-82e8-e7c9f727ecbd 6aa5697a-a054-43e2-98f8-0fea6217b706 4b7b4b58-f8b7-4a37-b525-8bb907df8041 ed738dd7-a14f-4b96-bdb7-5eeede86c36a d014bb0e-071a-49cc-8a6b-67e4360bae95 e970c336-de76-4ed9-9f16-dac5ee418ab0 a3139acc-ae58-4c35-88b4-751131f37abc 0bf7cfa8-92ea-4905-ae5f-18272cc18c81 2d2ca0f2-3ff1-4aa6-a08b-9e017400818e e75c4001-5cca-426a-90cf-4c8f43cb60c2 90535254-aee0-4f9c-a97a-04252d119614 0fbc2deb-1b03-421e-8a11-cf360466a522 91468d7f-ceaf-486b-a146-b3855238b376 2d0de690-59b0-4a68-8136-a7778f726fbc ce42273f-395f-4641-be28-706c2dfa2115 d40424be-0fbe-4c73-94c6-b5af0803663c b3403aec-3ef3-4eab-b00c-e8df7ab6dba8 a63e91a0-92df-405d-b28c-f8a5357170b9 9e6fa1b3-8ed3-4dbe-9d32-61afc14afe15 f9c7ba6a-94ef-419a-ba8c-37fa19941040 939a0acb-7094-4468-8e9c-8905281bf5ea d5b996be-560a-43ec-95fa-521e8c0280ff 0355beaa-1412-4710-b73f-fb5dfee423f7 dba6a98e-70b0-4b0a-99c6-681bd9b65415 dce14702-a99f-4d07-98fc-47d689400af9 b8ac985a-100c-4e8c-8462-a87a317ddad8 b76d7d76-b316-43d9-a5b3-6679f4d168bd b993c63d-c13c-4fa2-9753-10dffde5e874 04dc6cfd-356b-42cf-a5b3-3c821fa68395 f7843884-e9bb-420c-88f9-1d64e9dbbea8 9935f9c9-165a-4b7b-b833-740384042f56 ba833275-e65e-4fa1-9780-631a9504a7eb 43f7bab5-010d-461f-a3cf-449e517d2796 db7e24ae-1409-4f46-92d9-d372417e6d13 8fcc24fe-0fe1-44a8-8306-3661f6749644 5226b308-2b54-4aea-8860-6764fadbf00b 031fcb23-5c56-482d-9eba-53b97c5c61ee aeeb8b78-2929-43ab-8c19-9d916f5b9427 c1e7e756-c7e5-4acc-b4ab-c70bfd183c0f 545096f2-a84b-4ba3-93cd-7a901e9425b2 0aa52774-e322-4c8d-863a-a92386dce92d b92f700b-8efb-495f-84ed-77c30bd4eb76 684edc29-b93b-44d6-bab2-deb3e4d0fdee 4d2e02a3-0a00-4b5f-9034-626f3846e033 8c303318-becf-4d74-82b0-c22d18954bcd 2f2be857-a877-4ed1-adf4-0ea2ac0b7f19 b993ad5c-97c4-4f9b-9b2e-e96b77090e5b 4d406027-df49-4e74-a084-4fc0d7a53143 87232326-d492-4fc4-a9ab-dc24f419f2db c44c3789-cf57-4651-b100-d38e79676f27 60751ba7-6cda-4fea-affe-e136241ba769 f8a227be-3ec9-43b3-9727-3c4b64706fa3 b99fab27-47e3-49cf-9999-860c6770517b 2d552543-9012-4df8-bc0c-4c80b7b5288a a572d483-ca61-43a3-a5aa-3eda35932968 6d70785d-9d85-48cb-aab4-934035e3ffff b0f1cab0-432a-43fa-88e6-6bd19176ab38 70eece6e-43a8-40b1-bc80-74f07555684e 4df4f14c-f2ff-4ef4-a753-dbfca68512cc 4542615c-2b35-4ccd-bb7e-25fde082f6dc ffcd8367-4f93-4205-891f-5d04f0f119e2 8e551298-d03e-4b12-a9ca-210c8daa937c f211017f-98b2-42aa-877f-575198b957fa 08d1b3a5-3aaf-44f6-aa17-3aba90dcc56a 56f6d2bb-7aed-4d46-94df-d65e5a0467b4 98f22c6b-13e6-4c89-bac6-6f15b9b4f800 7959c895-c5a6-4170-91c2-495ac448e422 0b273252-ca94-40ac-8ba3-71a602bd8974 d3640537-c173-4664-870a-1d5ec0bbfed6 027116cd-14e0-4743-884b-17bc71ae2024 e0425797-3ab8-49fa-98bd-aa1fe2b55c91 15c5c4b8-48b6-4d05-9889-d00d89ba8f5e 53c2e8cd-65ea-4240-a5f9-7c3860aa133c 5694ac20-9d21-4711-90f8-d0dc9b16b850 fd6650d3-a4bd-40f3-88ae-ebec0410e8b9 0c759105-b862-4cfc-a7e0-c2b4a669e1c6 2d995067-59b9-4155-8823-db5a723ef99b b287ed1d-ecca-4570-9cf6-f5b0f403442a ca197e28-0496-463d-a354-9907fb764478 7d6259bb-f683-4806-96be-c4f32e8722f2 a0508039-0367-4508-aa47-9a2b58be0e37 4112ac58-bd2c-418d-9099-1d4220a89be7 825fba04-36ee-4081-bd14-4925c88ff8d5 86e05ff3-e9e8-4e8a-be72-729a717b42a2 07a979b2-ae8b-4c50-92fc-ce826228256b 2ae8ab91-5336-4065-b350-2b669dc0abda 0790706b-cdbd-4c79-be9a-25b8b7280117 3ac48c9c-754d-497d-8a5a-5fa37407399a f4daa402-bc00-4ed6-a11c-294009079bab 1b5fbf08-c1fa-499a-8a6e-c632a3ce44db 8c4896cb-b428-49ea-be10-75ad0a25cafe 92f4c6b2-dcee-4491-9b5e-09f064d855ed 98030ce7-7cc9-4525-b64f-77f68e89db4d 9cb02762-8b2b-49c8-9332-9041dc0a287d f9d777b5-674c-40a2-ba29-5c33812ee31f d4645c9f-793f-46bb-a136-1ba6bbdd3383 c673445a-c2a9-49c1-9e20-20f34667a75a 1e067794-e0e3-4fc4-ac1c-d1e0fbd05a38 a6a7d9ea-e744-4c80-88a0-19ad4199d33a a5b72158-89d8-4e08-a8fb-ba0d93ce1e42 92fa86fe-8c35-4ef0-9f11-4c3c47130972 e17a2a2f-26ee-424a-8959-eb51bef311c1 df1bd0bd-54e0-4907-a255-dda157da6462 465a3591-90d4-4cd4-b4f3-7f27f46ff62c 89903dd1-9f07-4694-9b04-4c1bdc00bf18 6f8390c3-77c5-4e84-a157-b34ae9b16da1 689e76cf-6ba3-403d-a17b-d7b5e4526641 286de556-d029-4f21-ab20-a3a47041400d 8f6a09d5-3ccf-4b80-b8c0-5b2ea88a43bc a4f07a2e-0799-47a7-93d9-2290ef434acc 08f4d2ce-09b7-4908-9073-96bbd8484c74 3dac47f9-5f1b-4174-8ce9-67d144237deb 78425ed5-595c-4c79-a688-b12b3a8505c8 195108e7-8caf-4729-9497-9786a1309b37 4e998609-760e-4a30-b4eb-5b39de5106ce 15941f0a-c828-483e-b989-7e945c0eb4b5 ec6d350d-d639-44aa-9da6-2dd102d247c5 bf7170b1-b379-4a57-9be9-3557204b1631 69e79b82-3632-4bf9-9a7d-61eb9ef54cfb 460a13a7-afc7-48b4-a685-0321a129958c 26a10495-2d9f-41de-8c13-ae463be051bf 687401a5-ff34-43ed-946a-f11c5864f5cd 8cbc3a8b-a138-4bf9-81d0-cdc91778ac6a 0366560e-8e66-4d33-bc33-5af911ce761a 737dd533-cfc7-4d14-b020-e3af68f5d2fc 110fdafe-fdc1-42d5-b762-c27bc1cfbfb8 c4dacfe4-7a71-414a-bcd7-f36ed0653cb5 43cfab09-ae14-46df-96f2-72b1b4ba030e 7627c2e6-9023-4dc1-8cb4-0724df3b3307 3e352f7d-82c9-4a01-b351-3e82dae5d340 e5cbd108-5fd1-40a3-9621-377b90613100 2ab1ce7d-d0f4-41e0-838c-d71bc6583c24 6730b7d8-0895-4c0e-b83d-7544cb89066f 937c82e3-a4cf-40fd-aea8-9388d81fa5dd 1529e8af-84f7-487d-965b-145deb18db4b af0bdc03-3b1d-4de4-8fa6-914118b4de3b 53cbf1b2-255c-4ba3-b50b-16ff1c1d26dc 0e125bca-81cb-40dc-a6d7-50fd6bff034b 21dafd16-27dd-49b0-9485-8b18ab259527 ca7cd16e-7f89-47c3-afc2-c9ff0535745d 83e9a38f-22c9-4da7-b66b-357cfefc6fcb 0929ebef-ef43-4906-a9e4-548335eee17f af29281d-4bc2-4e26-8272-5dd444c4681a bfcc605d-77c8-43c0-9ce8-e83e48422acc 8aae6ba0-11d2-4467-ab47-f3fbb25d6075 c5ae5678-6573-409a-985b-197cf0945c5f 8fc55ef0-2949-43e2-ad3c-f27d03902cd4 2e6f289c-c14b-43c9-86ba-8c177232d2fe 74adea01-6a5e-4064-888f-b69c97d7bf41 90186bd9-2a05-4da1-9363-aa7b76346ebd c62a7675-2e67-4dab-b2a3-ec9ea9cc1a3d 89b1c1af-3a0a-4909-8537-19e96ee1e7f8 dcac10fb-f5e1-4c7d-a068-7cfd1313bc82 6cb24481-54a2-4083-a123-53219b734666 d941e57f-10c3-46c5-bd47-a540f722e341 929093e2-0c23-421c-a5c0-b29bac6b759b 4501dd71-39a0-4124-a0d8-75bb7cccdeb1 e2a60830-3fb6-4c8d-a250-8a70630eaacf e0907685-c204-4234-b7e6-1c5ce2289238 fa9cc220-b0da-4ae1-855b-8250cf805ad5 68680448-832a-44c6-a3d8-6ea2783e1984 c872f1ea-c10e-4fff-8032-2942f5bc342c 94a12ce3-17c8-4522-aad1-5d7a4aadf60f 7954ebda-34f3-447f-aea1-398ad59522b3 88a05c5b-397f-45c4-be47-6400761c75b6 42ab3c4b-651e-4091-b781-dce4b40006ad be61509a-0704-4c7e-a6fc-13bfed0bec97 9e292e47-98d5-4cd1-86f8-ee89e243bf88 f549ecd9-6d5d-4980-9dc6-21189e38f659 c1843333-e0b0-4456-8c19-080eb781f83e ca5b937b-753d-418e-bd60-b10d889149b2 5d2cbc0d-af4a-465b-a281-60ec0665fc00 1def607e-d35b-4a01-9bc2-a5d66686c7e9 c54122bf-aef1-4a7e-b257-9c24374088cf 01bd22ab-c361-42a8-8042-de8d925d480b 0e68493b-e23b-4c9f-9099-e50d0609bbe7 8592f7cf-33fd-4939-8814-9d7eaa872536 68dfbcf4-a775-4ac4-b190-280342a426c1 2d1ae775-ab29-4f2b-bae7-3c9cd3a1118a 781133ba-59e3-4130-9957-f6d6a595dba6 f718d7d5-9497-4c61-8c18-7fbde84f6317 4d43b872-7a9b-42d7-8b57-a91c35e78e34 9227b97b-88c5-42cf-8e3f-04d9811454a3 b63a05ce-45a7-4cff-9f86-3fe850993692 4803e177-b65f-48c3-b513-2f44c77cc51b f88aa30b-6939-4b67-a6f2-57780132f32e 5b7bac33-e575-4468-ad06-a4ba3fd714ab d0a1c109-4281-4e63-a7ae-318fda435ab2 af3ebfe1-2de3-4145-ad0e-eba49ce4abe6 784eed10-793b-4ed7-8c38-c3bf7036c7bd 86dbac9f-2a37-422b-bcfa-d8af2871779d 1e5c4e23-0910-4fc9-9708-5e83adce8b25 7f92b9b3-3dbb-4cba-bf6e-50de507d6330 89c4f2c6-881d-446c-aba1-1270114724c8 c4ec1dbc-370d-4807-ba94-97ecd30f1718 6fcc4610-f48c-443c-8769-a67fbc6d12b0 fd643a08-0a24-446f-a79a-4daeb6110ea8 a524da21-258e-4713-a6d3-538664b014bc a00446ad-9d7c-4e75-bf30-da4fa6e5a71a a6f42af2-f49c-4490-bdc1-0a2eac20f826 ff5035d0-c0c6-4952-b968-636c360009b3 b5aa590a-1926-4ae2-b466-f3bd42df1c7e 1b11ba39-3b27-4d77-933e-7a6598f74307 6af6a843-6e73-48f5-af33-9962cfb19628 ff159561-f69b-4aec-a758-ed6edb4c5737 19002395-27ef-4a1a-a74c-7ad47b54d0ba dde05af9-4d7d-4774-bef9-80b0d7d58ed4 e82bb7ae-1f04-48b2-8c88-20555681f336 c07f5dfe-5058-40f6-a050-245adf00eead 260f3597-5a83-4725-bd69-4374c6a52749 819dfc6d-7d2a-4fa1-ba02-771ce9ac42fb 1f084468-dd29-4d96-b368-33f6b9c74f08 bda06f36-fae5-4563-bdb2-a7766dba47a0 8d67a863-ed8d-4008-8875-e7c5d350b2a5 2381bc22-4f89-42e0-afab-7c8752c99bd1 489c96be-a890-44a9-aef8-0872d84825ec 3c74d8ba-e6ab-4a93-a720-df7005022b59 29692d96-bd3f-46af-9a1e-ecc107c30ab2 55f3decf-ebef-40ff-870e-6d247480b939 f0374e1c-fe02-488b-afd5-95bb4ed0cf51 f19bad52-5e4f-4b07-a83c-4f9a3b3426d8 4c2e23e0-67bc-410c-991e-82e18e1cd5a3 ed70c55d-bd89-4672-83a2-9cd183b394dd 008b789f-23b2-4701-aa1c-d8cf3b217839 403df629-65d0-4f49-a55c-bab88dae868f d1980fd7-a3b9-4767-8930-e40e269517f2 f3a0333a-c500-4463-abed-e218090c6e04 19f41764-4342-4a0a-bba0-90d27c6777af 920aee53-a5ed-45c5-b820-1f05e36e5ff9 65de2fcb-b301-47f9-ab14-d09bdeeb6e78 ee352210-a73c-4b13-909c-d6ab695527ca 47dee1eb-1b1c-48bc-b0df-2f486d439ac1 559252e9-31f1-4ec9-8b6c-4c865abc033a 75131540-a87c-42be-b5f3-689224b941f1 e2f87bc5-f3f1-4f7c-8255-cb0776be4af3 e8a7071b-91fc-450f-aeb9-7110df5c80ee d48266ec-66bc-4a0b-b125-57f035354fe8 87b3d7e0-7509-48cf-bfe0-fd4527378c87 02125a1a-c883-482e-8a4f-80f7f5cdd1b6 bb8fb4f0-209c-4d1d-a896-33527073f8df 09aed99e-dd5b-45ce-8213-6c82879452cf c83e4df4-7336-497a-afae-32d49fab68a6 fea32804-081f-4e38-9909-dfeba7d2e0a4 1df285a9-f53e-4eb9-b66a-f3f57b8f6c8e 4cde92c7-b0cc-4d1f-957a-8098c74f3f7b a2e7ae40-9c49-4dee-831e-0409ab8c479a 40abc6a0-6397-4026-ad07-06d689260726 1ad2d187-24bb-4396-ad5a-652c409f8a09 36f05ccf-c303-4290-b558-a8906d67afb6 491491f1-93be-4106-af46-8b05501b85aa 1665153a-93e9-4e85-bdad-7dc664796008 3ff3f5aa-ee7a-4096-9d37-dafe5df59452 6d264d7e-f72d-409a-b239-28b7b4e07992 6682b4ac-117d-4c52-99dd-2b1d08786339 c1eab1ec-9e62-412e-b6fe-8013f9b8243b 80d01487-79af-41f9-98e4-282ce5e89605 850d83ab-2fb2-467f-ba49-01900482b327 26d74819-39ac-43a7-828b-be8a13f41953 ef2e8283-1c7a-4392-b7ef-48c096f8ff75 9ddac7cb-fa09-43cb-b9ce-0061765e8ced 572f4943-cbeb-4194-b520-766002c0ef85 9db27c1c-e18f-460d-9fe5-9f667cf1ab23 dfd392de-381a-4de1-8fb1-2dcc68b8ead2 9af88113-e563-448b-8830-1294a35478d1 0833a1b8-dfb3-4087-b389-93167b523530 4f3f69db-bde1-433a-92ee-7ba35d431273 389dc2c1-411a-43a4-a9d1-53e69a507e2b 296d9178-43ff-4e44-8fe7-5f137dcde9f5 e8c8210d-ed9c-4445-a55a-09a9c69b445d a7af94ce-6acc-42b2-adb3-a2caee2ef2a3 86accd86-8db4-43da-94f3-d77bdf860bae 90868d47-400e-46ce-95c2-df48985a7133 3a150f29-bad5-4c9f-95f3-afbe72da43a9 cfe8ee81-b455-4bfc-88c0-6a5292011b11 871e02e5-e016-4e71-ab81-965192a1cc89 b193825b-b142-4a0e-a41d-fb9d2055337e 7227c667-6ca2-4d3b-acd7-1bf22ec29965 1b06df4d-ad28-4eee-b09d-2c917cd3ae11 335b46b5-252a-4e53-87d6-0b4a0d1174da 1f7c5d3a-1030-4834-b767-f34f24b349d4 fbf776c4-9525-4ff1-a5e8-1eef24d55522 08150164-9bbc-4bae-b996-5a45547275d1 fb4436e3-fa00-49a2-b38a-badff98197c9 c62669e6-00c4-4337-b2bc-c8d19e462319 6c5fbbfb-68d2-4e94-b29a-9ef3a6b56925 804fd385-7725-4c5a-b31d-4a2328aaa97d fafd3685-ee96-44ab-acff-f06df4b1cf33 57e5d774-79a3-48b7-a06a-87b02ff342d2 2871b875-84f0-4827-bc8f-bf6d2c19fbc9 d5fe702f-883c-4417-b2c2-ab2d1b3708e6 bfd8274f-595f-4918-8877-afb8d3450bef b193db5f-ad0a-49f8-9cad-3c8843cd6993 f2414d4a-7020-4df6-acb7-5412cc6cd3ce 8dfb3e83-8f55-48e1-a16f-3d4664d40dd8 61741631-1ee8-4aa1-a413-24a7fb468e62 823b1ceb-c859-45b8-a5d0-47fd3fd2c200 d1f8ee96-3037-4137-a655-155f0f921b04 3643ed52-dacf-4bda-9cce-f279bc91a290 d3f2df18-3c81-4428-8147-6a992c6ca7af 1d2117c4-900b-499e-a1c1-f0932770a028 89d68f0a-1d22-4084-b743-e338a7f6ed61 69ec01c2-94dc-444b-a4f2-fd9f9225b8aa a8f272cc-0d30-4e6d-a0e3-7fe5725342a6 cc64f729-85e4-407a-a084-af5bb8dd0db4 900e6c8a-de69-4206-ab0c-10f248dcec6c fe3649d6-4258-486c-aa7a-eefe804b32a4 2c51c48b-ef14-49c8-90b3-53bdf1ffe0d1 42274882-ec5b-4672-8a99-8d73feb9de79 bc4e453b-a0c4-479c-92f7-3c1299953289 00d92159-c1f0-437c-a25c-9475aa88755d bbf53551-0400-4ff9-a59e-c7328f2b1573 e2d8acb1-6b01-4ead-b06d-19d4b6295e2f db4b3285-be27-4677-8a85-8659d697a68e 610ec902-8991-4bc5-8233-dc8a582c716d 63ee62ac-4a52-48a9-b87d-d38e1d7da2b6 b90cac28-aff6-4e12-b3c7-c405a4ce9cb4 3976af81-593f-4cf3-b333-92f43cbc68a3 02091a92-539d-4261-bf77-8730d1cc9fcb a3795f38-0b3c-4b37-8680-acc384e1c3e9 e1315ce1-7805-4744-a2b0-cf8ec67cfaf4 77c88d6d-3050-4a30-866f-6f3d242c6ebf 161cc1c6-c1da-46e1-bc9f-4b06599c7360 b4052db1-b4e0-4bf2-abe0-4d22b38e5d4a c473ebf9-8a6b-4b82-843f-90c53a28d79d 9cfabcf5-8b72-42df-996f-0d8db6b46a7c 0080904f-4e10-43f4-9f2c-ffa395b39d9d fa76d87c-bbed-4b65-804f-93d4c58e0b7b 06f7ea9e-4a88-4d50-bd2d-25eed9aed47d f837404b-4195-4d3e-b0cd-05d5db17ef10 a292dbf7-9d74-4c79-875c-3c3bdbed8629 ee856e18-b7dd-4f67-b16c-ea5366dd9c14 21174ffe-a7d7-4baa-a356-f45178aa9207 bd69837a-ec69-4740-8c2a-d941a612fc89 2df240c9-416b-4a77-ac5d-dbde3f002e3e 2ff3b591-1768-4882-9bbe-f04455a3884d c266b6e4-d946-4da2-8551-68bb5f877979 2757618e-db00-4ca0-a0b6-3de63ba9360a ac6c6420-05fe-4423-a0f2-3a0177ae2976 8beda8d8-e029-4a65-9008-0c1706b39c49 c08cca11-a1c9-4c81-8e3d-e9f44750bf39 1c413a10-4d3f-4f03-9992-ca4be56ee62c f5227a0c-240e-4def-a2b8-2d0fc3deb4de 8c15b32d-0281-48ef-8e84-c224c7726551 1d8f8b09-2ab7-460b-8d81-2c7a09dcd67a d98a6ece-8b84-4336-8474-3e93223f2a44 585c2636-0037-46a2-8222-56ed9eb5e828 c9b37447-eaa0-4f53-8e5e-57f91738e4cf d4941d07-0bd2-4084-a664-7fe5687b6b8a ef9679d0-0671-4382-abd1-874afe0cf311 2acbfe34-ae26-42c1-8f5b-0d9cb6ee41e9 2a1af572-0f36-4dc4-afb0-61a824563b73 1bed29af-b006-4e0e-be05-49f8b43ad4d6 3bc94e82-d9be-4581-8f90-11a56e394695 87be77a4-8006-4dc7-be4b-c0781dcad4bb e2b8d268-7a23-4704-aaf0-ea772149dc54 10ca65a6-558e-4b11-8241-ddc631eb062f 8f5153db-49ee-4d73-a831-8ad26c75b854 5dc99bfe-0030-4682-bde0-1b38f9c2c837 089eccf7-9196-4d18-979a-487affa21a25 6a31d720-b0e7-4dc9-a14d-d109be1b934c 44477865-e4a5-4c09-b624-48f420613b69 41906525-fb02-4e68-9de5-ae9c8554d264 8419f967-a152-4558-ad2a-894e11464689 944a1799-4359-4206-8e85-f1d73e489298 ad3580ea-5c33-46b2-b188-d8aeb665a533 0a563f09-a781-46ac-b321-c45f32aeedcd a69d081f-8d58-4745-876f-3be03b72606d d93957ad-86f3-438f-80e5-d7b29c66dd3f 91b0a158-623c-4044-b22f-7c8346c7d623 bc25919f-f1ab-459e-87da-5ae5f5a3fdbb 6157e600-5910-413e-a1b8-ca805c9689ff 401a9b9d-e053-4363-a120-c6cf78fa0b69 9383b093-4e36-4a98-ab2b-9719861e91eb c9ecc27f-162a-49c3-92c7-9da5ff59fb98 2deb347d-1baf-4daf-925d-03c80e25bb34 84306e23-0f76-4af2-8b2d-66ca3b823798 76ad2d4c-44a1-44ff-b200-3fe120cb7300 338d6a7d-c3a6-4590-a163-ae0293efac2c 058e97be-0b04-44e8-894f-28be9db421b5 083d9647-ef96-4d2d-8391-85847a2d785f e3df3c06-1765-491e-b2ef-243f0701b2a2 8a57b722-aa05-463d-a4d0-3c309307ec93 86a5b8a7-1ada-455d-9285-c1832102ff4b 7bd44a15-9e7b-43ee-855a-46726811fd68 3d3a5fe3-4cce-469d-a64b-0d0edddce65f 7a5a60a8-8cf2-462e-8a8f-c53760cc4a30 6e905b8b-ecd3-486d-a46c-8c1781d80a8a e3c3b2a0-203c-4681-be04-dade2b28986d 63e7be04-dac8-4967-9d16-c8bf4a6dbb4a dcfcc5e8-55eb-4934-a63c-ad0e94b2fc99 97b7efc7-e4f6-4796-a6b6-0228b150fdc7 fd57ae53-8178-421a-b572-bab519c52b04 32c26729-fd5c-43d4-a9c6-b11f64dce667 21ceb9ee-9e38-4a7f-954f-9cf48e7a2ae2 1fe49a6f-e828-498e-85fc-61c602f87315 56d0f1be-dd35-44b7-8df0-d527e3ddd7a0 5c011d50-554b-40d5-b21e-07f3cc3a327b 0ae41784-5af0-43a9-a19c-524e505da0f2 10c3e5aa-10e5-4aca-842f-fc9a950b90cd 5cc6a52a-6314-4ee9-a96e-4c7746d3efb7 c69699a3-ccd2-469d-8dbb-24a440b1421a f9aa69ae-c145-4bfa-aed3-fef860c261bd 6bc64a75-0f34-42fa-8423-ea896cb2cf52 6d9d1dd3-e010-4fea-9b0e-068a595b75c0 422034b3-8dda-4451-884e-b3ba425239e4 a0b1e79f-c34d-48cd-b83e-8e05e4f13468 e0bc89fc-fdd6-46a4-b1f0-39457bb1283f b1c82f31-cb3d-4497-8404-8af844ddb858 35e94f42-262d-4b73-bc6d-fcd8d0dc3f02 08c72c68-7343-4e42-aca5-4c9649c9afd3 bbf4c6b3-b27d-443e-b7bb-bb039e7a4731 0f8ba8bf-01f2-4d4a-8746-dcb7b4a72f14 5017b71c-b7b3-48d2-ae4a-73a53236edaa 8163437d-5d9a-4f74-a555-fd4a946641c3 87e48d31-a44c-4cb1-b7fd-6993c0a10269 040dfa87-5c86-4ab4-8fca-e2db82f94b1d 8fbf2cd4-f41e-4168-9743-ff45fcf4c89b 8f5d3c69-3dda-4997-ab22-588937a7075c df1b8618-3056-4c85-bbd8-6d4370ee8c9b 81e2127b-4491-4417-8c72-8586a4faeb92 d6c2df45-a45c-4e14-8e2c-9f2fdd1a2d1a 793ad086-03ea-4556-b743-7630c3d0fa04 3e16b48c-b553-4cd2-9e48-d9b82d7d73b8 854d2b3c-08ad-4097-909c-d3873fb10f6a e31e8bbe-c6f2-426a-b02c-fd81c585ddf3 c675c567-0ebb-4762-a433-7024c3cad644 59c6281d-2dd1-41b2-9341-7bc26a3ac3be 4761eb8e-91b4-4915-90a3-d2af52cd170a 931074ec-b976-4fc6-b53a-ccdf98794f7d 753d507f-37b2-43fe-8368-627435004e27 b277a101-83a9-4e3d-9b78-631b9d6a59ff f041c48b-f0f0-43fa-b6f5-7ae625ec9ddc 8e851ae3-cc65-4988-bce7-91a94ef161df 4de2101e-d33b-47d2-8d12-4b83fb5c5b92 f3bb5bcf-c942-4cdb-ad8d-2b39df9c41d8 ef312737-77cf-4d69-b5d0-be5b298f5daa a4b1f149-c4f1-49c3-b272-2116d23410c3 5085feb4-27ee-40bf-a917-4380ae9b37f7 37a6b454-cfb8-4171-a9cc-ba4bdef570fc 827586f0-41de-4f41-910f-1c61b71121b6 21b1b2c8-2cc5-41d4-a17f-ef918d3172dd efa272f4-6e0b-4cea-ad05-ecf521c15209 d21f4330-c731-40a2-8c1d-44bf94d41dff 7c906019-050b-4d76-b0e3-aff6adca7bae 9194847b-d079-4d79-aada-1a29720e09e6 b1d886c2-b688-4c9a-8b64-0d93d4670666 c29233b1-7592-4a90-80bb-84003da0c3f4 2598c10e-62ff-490b-8ee5-f42e39fe79cd aaa083ee-60c6-40aa-8d10-373d7195d7ae e8d9baa6-9783-40af-bc25-5fc32767aa00 d919c2ad-7847-4334-93db-13fcab761a47 727684ba-ba0a-4817-92ff-13a0c3b6a871 c8c5d476-9bc7-4e9c-bfbc-36ad901fb439 cc3c366b-835e-4b54-ae3a-544647c0989d 56ab2f65-6d31-4ccd-8fd2-b55bcdc40524 24417731-8e75-41e5-962c-71550c0329e4 2693a82d-221c-47a9-a641-c1ffb7d6b7e6 0a35c57f-f742-45f6-b5a8-5b5a87904169 831c9741-ebf7-41b1-a73c-539e4e9cc6eb 754de461-bc24-42b9-a817-64a31acf92ba 003887d9-fe4f-4c26-bf34-36d9f61e5964 51607f3d-26f1-4c52-8f83-fb60d9938acf 6f8197b3-6644-44a7-a18b-cb88ee44524a 6c40b6c0-7690-4a86-8091-e0b82d9e8362 5b59128f-33c5-4702-bcff-faa2534e53cf ae10768f-996e-4065-8db1-39282dba6568 b5058118-4e18-417f-8ee2-9e43cbc508e5 1a46daf4-e649-41a2-8ff2-44a9cfcbfd87 7fd822a3-36b7-4480-baeb-cf0c7f6d320f 7c0b2170-faaa-46e1-b8ee-704fa91ea19d dda04a2e-6362-4a5a-98c4-d4720a3ae213 7cecbc79-c644-4794-99f5-29b1faf9274f c4682941-662d-471c-9606-ee8eb5bbf22b a83a431b-644f-470f-ac71-f245ea4581bf 190df5cf-ace3-4e7a-ac23-18e7676f24bb ced8cc49-8a67-42a0-904a-64ade545d48b 151c11de-e253-4ee7-8921-ae4a06249b7c cdc25040-c4d8-4530-956e-2119d6954844 90ae7531-714f-4c54-a146-c62986a0ebfb 9e32caa3-1a45-469c-bdf3-145e35100aed 32af6ebb-4ec8-43a5-8f57-60b17c33b1bc db899735-cd42-4cc7-a462-2b13b3aea423 5d9b89ac-9547-4fac-9224-72db49e9fbaf 7541466f-8502-42dd-ac96-590372aa65d3 65ef7252-d62f-47ad-95e9-9768c8e74b4e 027d8f2d-d160-4b4c-8721-ade8bd62d36f 26cacf0b-fc2f-4c09-99ed-5a2bc72af728 29638cf9-15bf-481b-84c8-040719fc8bdd 00626d05-81b4-4790-bb76-0cb8ea831d6a dc77b1f7-de51-4b8a-a510-b7e4ca5551db 9cc30413-6c15-4395-aa30-7b009af7fa4e 20604f4d-9727-4830-af75-428745b29227 aa3cd79b-3c0f-4543-b4de-b809c6d900fe e303cb80-c0cd-4118-8063-843ff45d572a 7d4fe37f-d5f9-49d0-9b1a-6a5be29603eb ffe53e09-5174-45d5-a8c0-77371e4ccbf1 b3026413-d3bd-4300-8a00-5104e63c4606 07d3e465-01d0-4ade-968e-06033aa5211c 2ec5c7f4-e0bc-4281-b6dd-a2bc4ecaa901 247a0c68-f3ed-48ee-a26c-44c79026f255 bd8be152-1559-421a-a0fb-c7b55a7ffeac 8f86467f-cd48-41a4-8206-e3939711f534 58d6304c-63fb-4670-b039-e8814e98e776 59a93056-1deb-4b8a-858c-518b177f1b3d 254f3e7e-6b8c-4f13-b062-4ebf03239ca8 ed5abb6c-bcd8-4e18-acd4-8e25d156a0e9 5e00e441-d17f-4827-90a3-366a31cc4fa8 d6302254-c444-4d3a-a41b-d8ebeeae41e4 eef414d2-ffe6-4ad8-8743-5fae7ae622b6 ec17cd53-89ce-403a-adcc-299cd77ac4a2 6df5219c-3bc8-4e81-9302-66c5edfdf72f c9c33484-f636-4a9e-9411-95d98ab5a42f 990df703-4b4b-4a33-a79a-fd518506f50f 660e38d4-17e9-4090-aece-3bc2bbc53076 f7939bfe-9668-458a-b6d4-153043e88442 b68c197d-dca9-4f22-bbdc-10d018229d9e 6f5b8ba6-14cf-49ae-869e-a720fb464131 eb981c14-b4f4-4f91-859e-8ac58a47b94b b6efcc79-de75-4b99-a1d7-2f7174cd5fa0 491e1d6d-3629-446a-bdd3-c228ff2c5f86 1b1f8602-040c-4887-9e59-1f8faee5865c c0b51ebc-e410-45e4-9a5b-2653c7d61b40 40494e06-5679-4b4d-8202-1233726222de f05b1e03-3ca7-417e-aa72-972bdce91f80 a75d1552-9c96-4365-8b88-7df49844a7a9 bf698c6d-fc91-45e6-ac63-dd1941692937 594de608-7736-41c5-91c8-3a39a8ebdc82 fad2a599-9a73-4bb1-bf52-7b3162db19d7 f477991c-0de8-4799-9585-a3b4a561d8c6 2f5b18ec-0692-4ac9-8405-3db78d6653e4 ad3df3d5-f562-4105-824e-50da4178f4b7 5af3b009-002e-4ee1-b31d-44bb62fa4ccd 1ef3bd0e-7647-4582-909f-2545d03e517c 1c10b85c-cfc3-4bf7-80b0-18756b6fbc1e 0ddbd04c-8bf5-4712-9820-7caec6fdd762 39c3768d-3925-4152-a45a-01aac37633e5 aed3d166-03df-4924-b9e4-d206826b7376 66b56eac-e9e8-47bd-8add-e57603b50492 3e20f673-838a-4167-806b-b691c9658ed8 aebcced2-2ff8-4702-ac4a-c8eae6afaeb6 92a2bab6-811e-4586-81e6-c34e29b3ec2d ea85c11f-3723-41e5-96ca-1fe7c60effed 635dc122-0de4-4e4e-a7c5-a5b071f75903 2f18da08-f0f5-4aaf-a244-8b1f24859aaf 9e038de5-875f-4cbd-b3b7-cf34b99f49d6 89ed57b8-715c-4a33-95d0-fa3e1bf416c6 26a3feab-2541-498b-8a9b-5f3e83abe836 54252b83-24aa-438f-824a-fe352b2b646d cf0e5285-07d2-44b5-a18f-b62ba75123dc eec3fc53-74bf-4d0b-b587-d413809262ed 999f5753-c1a1-473d-af93-897bc3250138 39182adf-2d6f-4a17-969a-cac5cc9b5658 6e505017-76cc-46d8-a4d9-db07b7384012 5854a84d-0fa5-4c48-9232-c88d98e9c0e3 8bbc8704-d0cd-4d43-b033-696f218cd533 e9374f8e-6d86-4d5d-809c-4c93f9b1e2cd 86c6ad98-8a7f-4eb4-8d80-90f16ebc3350 627efa50-345a-4d45-93db-0bb3a03d4a1a 59d51d1a-d8fa-4b5c-8f2c-cca5d324395d 6b4b41eb-d355-4077-b50b-560623655fde 8690f452-d8fc-40a6-b495-bd12ff2c0e18 2695a80a-f4a5-4c89-b3bc-8836e99c97bc b4a0abbb-86d7-4952-aef5-731e03ad7dc1 292d55aa-bb74-469b-97fe-51a06da19f4b 2d3a5039-4fe1-4f34-9c58-05eadb6868c1 7fe6b7b8-5e4a-4d01-bb08-97a201fbe6f4 5a05d75c-9e0a-4632-8952-8ea0d103bb93 d374bd96-b012-49fd-8190-fb16f5ab96b8 74c0e4b5-aa8a-4bea-ac4f-fb0214c66eeb c67cdeb7-144d-4684-bb11-00f63393f332 9581760b-535a-4fa0-a156-f8886987ffd5 07378adc-df49-4976-8ba0-8c3f3dc71e45 b0de6a74-61dd-4325-9544-f7a35982b96e 9c1d5ae3-49b7-479a-93d6-67e20902b2cd c0541617-5567-41a1-afd7-7c01a56ac5e5 2c242b0f-0daf-484f-a6b1-84c1a8874a03 26cbdb57-6563-4706-9d70-48bd2fbfbe98 14ea2568-6061-4a42-8e2a-3345f87996a8 e54b1fec-40ab-4f42-8043-a4878cd03b2f b02be736-6f4d-4983-8b5f-5db77905ea81 626b3d63-1675-4a2a-83ed-aa627ea48ef5 42da3a8f-42ba-4e43-82d8-f87b8cec7c2e 6ead640d-9629-4aa1-9b69-ca872b6972bd 74c88a10-dbb1-48e4-a4ef-0499f63cf769 08af2e37-9acc-4e6a-8687-968401ece7ce 7e8019c1-f12a-4daf-9403-9ce1215ad3b0 a8047161-f2ab-4d30-9aa1-482e9d897430 89ced49e-75aa-40db-be28-3d6e4c81055d b9230ab1-10e5-4142-91fe-bde6268b4f50 964d03dc-2299-49ce-b979-8b3b122843b9 ece517ac-32e2-4782-ab0b-80200ce35d34 4db271f5-78f4-4aa3-9b9c-def0a9e7f7ac 867cde59-fb22-4ff8-b07d-007fc28099ef 032e6f1d-7986-4b30-bc48-ab7eb413f3ed 7d244d3c-71f8-4509-9d01-e9dce7cb09aa 39621011-f62b-4f75-af36-33e23ed6bfd0 0d886f0a-37d6-498c-8f0e-460ec0a485da 0c02b895-4a5f-4129-966e-41f735853742 aebec2ca-13d8-42d9-ae92-ce918d6a9c47 43021744-07b1-4cd0-8575-b0e7087a88e9 ff5faee2-340a-4733-a220-d9ac43cf0bf9 52398ba7-c65d-475c-8470-be0e84a8eba3 d03ca2d3-9aae-472b-a30a-dad135b19396 b8c81ae5-42ab-491f-800c-800976bf1c36 0722bd89-de92-4bdf-a9f6-b055e1d9ca47 faf6090c-6336-4c85-a465-fde5adb4024f 6d03058d-bb0b-40e1-a300-35bab1905e91 c10b18ca-dedf-4408-86ac-8dbb47157b5d 88ca90fd-8e96-45db-ae20-fa77d8d76d74 19a8292e-abb6-4b09-a1f8-d48af1c69d85 88e7f13e-bc0d-4e22-81aa-de1c7dd3074a f574ee88-a052-46e6-b8b2-0a0512144d08 5a5099af-e165-45a6-a856-725953a213ca 822481ca-e391-4372-8424-c1b7265e8ae7 e97e45ca-a9d0-4afd-9db9-4f66651673c2 f20b84ef-a8cb-4c71-abce-696b61fa75a9 0440ba78-b790-42a6-8664-7da1076f889f ad822870-ad49-4055-bf98-dcb387b9cfab a80b17e8-d6ad-4258-907e-a2e641293543 762c4b68-c82d-4cc1-a347-93a25f73129a e450c977-415f-404d-81f8-929467733aff af3f3a68-946d-4c84-9b87-6736c7e35190 8255a81d-8945-4e13-9d7a-140f99f58faa db2d2bd7-fce5-48db-9d79-aaaa977fc4a1 8020338a-cb70-4136-8fb7-f307989d5323 6e1f4052-a3cd-4b53-a2b1-4c3d0d7df73b e8c4cb10-761c-424c-8678-5c16e60eba05 aad0f7c7-7a23-4783-8baf-3828fdbd9a31 9f281725-9b65-4f97-a296-357028528132 7bf13293-246b-4b1f-b866-c3339a7fac8c 30c28d43-9aa5-4795-b9a3-b0f080672f6a 6f02673e-2d88-465b-b5b7-31a61846671d 2a21ebda-8389-4249-be2b-88923486307d 49192012-1e73-41f9-868c-8f0c1251fa7a 6cf9d21e-ea74-4a21-931f-f7e6fe9a8d9c 3b12d5e9-f639-4085-9c81-e7060ec3de61 4852d7ed-4e69-41b9-a249-2bec1740dfa3 c9e9ec91-e9c4-416f-bce1-222ee1ec6c47 9db2eb2a-9b7c-4240-9e64-953e3780d12d 9d4ce07b-430f-473d-b148-64013541646d abf9a4a0-e6c7-49f9-ad15-2a098786b1a4 ea15d11d-3e01-4d47-bc8b-cf053e69c554 ae17bce6-b6b5-4815-9ca0-86fe0a944704 762260a8-9049-4b21-9cbc-eab1782ca8d2 f9abeea0-392e-44fd-abeb-a9807eea69f6 41ec7607-bc96-4518-8059-813945ca9262 cfd727dc-8da0-41b6-84c3-6cbf24b8c78a 3a8f9d46-0029-4231-9c93-7b3c709aa149 b496d99d-deb1-47d2-928f-03f252ee3ba6 c8397c52-01e1-4e38-bbe6-5510599902c4 afda80dc-73bc-4a21-9d02-40f94a6de32e 13ae0c2f-8a01-4ef1-afb2-990fd297eb09 4ff110e9-b5a8-4f07-99d3-cf07d214a5a2 4d8e074f-66d9-4ba9-be72-a1fd57e439ba 31443960-2ee2-4a35-8dec-bd4b1e097bad ed5e2ab5-2d61-4e47-9324-522d3703df9f a2951796-ff33-4e7f-a68c-56836b6c9c2d dede2277-9353-4ef0-8705-e96ea6268b45 e0338fa6-874f-4df6-83e6-fc63d9bd3a61 f62b6041-9f03-45b9-b678-351a6580b9a7 4c2bc92c-72a6-4faf-b1f5-87348b4c71b3 5a46c4d1-6343-47c0-a08c-7d237119ae3e 9d7b6c14-e421-4fe9-b3c4-69f414c13f2d e1819f6a-4bc8-407e-81c5-f4e91d71bcaa 9e4cd30c-e518-43c9-849a-79a1c5b7f62a a6b430f1-d7fc-4e3d-963e-5719f9d7995b 9da4260c-7856-4ad6-afc2-f75a22a6bee2 5dd9ece9-d615-43d9-849f-be78ce106d0b da3dbdc4-0483-4988-992a-2ceeffce46e7 edb7e249-f9ee-431f-a741-d8706a8a0638 bc3d5582-0d70-4348-827b-8d59272418b8 a7c6d177-f049-4b46-86b6-e3a277c8a1ee 68af0d9f-05e3-4ec9-8f88-6eac9815a95a bb7c0893-77fb-4b41-8ee2-38cd961f0c49 4c94cd1e-c8e7-45ff-ab08-c59000224d7a 5764ec4e-a822-41dd-81e5-079c84c48b5c eb4225cf-c6b8-47bf-a71e-26e2809c52e5 57e40876-8ef8-41ed-aa35-61e80a8c0bb3 af369862-debb-4512-aec2-425b31a09f3e 8e4a0359-5a96-472d-8f7a-b72242ee9e27 9536b52f-2579-4336-8cde-94c336438a3d adee71ab-3e9d-4b33-8828-bb84efc01f2b 1e7b4275-e6a3-4efe-9bd0-7bdfe942c732 af522191-9e2c-4417-b4c1-9ede001b56c8 00b69eab-d30c-429e-ab35-c843d0c675e7 1a79cdd1-4b10-4188-b8af-f3f04fcd9865 74626c34-31d8-493a-b616-5c57963fa61c 974aec85-b291-4da1-b231-3d2d1cd1109e a38d91cc-5cb5-4f67-9413-354c9ce48f29 ad60c00e-9cdf-454f-9446-d27aba1412b3 59b139e5-5691-43c3-a24b-d7eabcc7284a 1f7fd040-1d5a-485e-b312-203a4d614b96 084cec31-f174-4575-b823-c3578a481826 0aedc86b-1535-45cb-ba4a-16ac65a1ab88 84dabbfb-e3e5-4b22-900e-2faf7d118877 08dfe264-a6e3-4358-88b8-2ca350267e24 5bbe5a74-5dbd-4a9f-ab69-ba9ac1120586 18097deb-3ef8-4497-bf9a-78c7c51a6fc7 98057b79-7f39-4ff4-b1fa-4b44789fb94b 722115b5-faf1-4772-98ce-a73b3a2f703f 3ba38a29-e01c-41be-93a3-bb343b056c6e 724acbab-1f70-469a-8a3f-13dbdaae4093 62d674be-449e-41ce-8a32-f326edde2439 2154a171-8a02-4a04-bf38-c47ec325b5f8 9b6dc646-25e7-462e-a9b2-711c9391fa1e 357db2d5-68e6-468d-b7d9-edbd20653bc2 2cea17b1-9d92-4e5f-b81d-cdbda7863b11 e9bfb776-e8ea-48ff-8669-b0a067a4320a 9db9fae5-d654-474f-8cc2-4f41611e2e42 e56b4314-dbf4-4f97-9346-9b971d2e2824 279cf5df-91b0-434c-bedd-0d900ae7206f a6f64a3f-cb99-4ce9-8233-4673606d6764 47314a9f-3a7a-4109-b369-4968c3fd2198 385fe40c-5dbc-4cb4-b1e8-ffd34d32dcd2 d2ba8e5d-e155-4acf-be1f-cfc1e3f5bd82 26091c5c-c56e-495d-bc69-6d2cc8bd9c0a 4663fbba-869c-41b3-97c4-d5ce51c307c5 8cd49bbb-046d-46b7-908f-ab8c27e05e71 693baf18-b878-4855-bf1c-d520b46daa09 7d0b9924-5cdc-4e58-9853-c1c57c83705e 8f70c036-bef4-4de1-9774-e5fb66609e54 785ef390-c0a9-4553-926b-63ee7907928f 5ea14ed9-754a-410f-b69c-b3a97d6be195 b31a8c79-828b-469e-b788-820f8ef61df0 bbdbb344-e172-4689-abe6-0019c9252954 2b7d1444-d597-44a1-b5a0-15e42274ba25 e9bd3726-3c55-4a29-b34a-7975830e5dd9 18f514ac-fbdb-4958-9292-cb2cb6588ebb e07c0f4e-b0bc-44c9-9270-3c7d172acbae a197885e-5293-46b9-a717-da193813bc1c e9885522-52ea-4b0f-be73-c3b1657385e7 bb7e0cc7-3054-425a-b966-bacb25be179e f9453b9c-0090-4277-bb68-67e77465ec3f 39e02796-4c07-4033-bac9-a495d1da7e09 5f722670-bf10-4b7b-8e3e-43f977637942 4d47aabb-301e-4eda-b685-90ae260ab622 2a1f1da2-cd57-47e9-943e-bd1c2becf71e 2f86f81f-6baa-420c-bea4-f47c0bc60597 44eccaea-93b7-4284-86bd-426a6dafb46d e2e02948-73d9-4dff-9774-bc4fb97fe9d6 49d5c132-7d0c-46c8-8997-de8b9dee2874 9d9b358a-4010-4b9d-9f81-5edc26a1d5df d5f846a8-7819-475d-a401-aa9bfe01a0dc f154cdd0-71ce-4376-9cda-369211fe7c0f 714220c0-49a1-45c2-8057-7a63250f3847 0cd34404-40d7-4d7f-908b-9f065fdf7c34 985452f4-0d02-4a5f-b83b-31d2fa1f392f b1836d83-6ea8-41e2-a917-77df631a2d33 f5ea32f9-02eb-4d21-82b3-182ce97c4504 ea93bb6c-18f3-41eb-8a88-3c56b01edd26 b8a9e30e-5a2a-4cd4-91b6-adb2115b268c 949e58b3-12aa-448e-bfd6-f83c55179791 04e882f5-9b0a-45ce-b1de-ff72817aa7af 3fc96225-da71-4c3d-b95b-2806f3430412 79141bac-40d7-49ec-95dd-40f9cfd706fd 50ffd486-f24b-4386-978f-e4c77d81121f 8c6dcf82-3f82-4842-a78d-223988bb49e8 dd7c814f-941c-46a3-890d-7013f852066f fa0ded34-020c-43ca-a754-73890b6c8c48 2a936a42-ff85-4e56-b418-8a54dc835ab5 cc4f2e50-08e5-486c-8d01-b76fc362221a 4ce4bb39-f533-449d-ac89-1b79d5a0e26f fada7980-54e2-478e-b0eb-9bd158f5e31c cfb35b0b-7ea3-4216-bb68-50f8bd648d47 73d05562-f7d8-4d68-81ea-499f4ce534f3 5b8cd280-4f9d-4ebb-a32e-b71d1d3c2a7f 0b49eb7a-a033-4b03-8b7a-4489b5eed4d2 88a252c0-bdce-4aac-9e88-ec7c7f3a0023 ffbcce60-718a-4270-b260-cdce17f520c3 f65ac3f8-c1fe-4b2e-a979-5eb2ea62422b 00a8bdc2-53cc-45aa-82ff-2f79bec175ab b09a9c2e-bcee-469a-bb4b-7c6610be12ef fa9cb918-7c07-42b3-b474-4c6a1864a280 18aeeaa3-ce93-4fac-9826-15fb27d75cd5 cbc9ec74-221c-40c1-b742-b073f4067d89 2bd9a459-f64f-4c15-8859-a0f5fb6f0c27 eb5af666-d625-4e4e-945d-394f6df07e43 bf865b5a-e50a-4c2a-91b0-900ec400d47e 0e832243-e3bb-4dae-8bbd-a058117f52ac 326b67a8-e814-4218-8181-8ddcd453b894 6907d501-077d-4667-9f8c-f02efb58bab7 a25b6c8d-3148-45cf-a97a-3fa9e0bdd596 bfa68856-dc74-40c2-87f1-d9226ff8f396 1307d6e9-b863-4db8-9704-29c48939921a d27bd4a6-885f-405c-8f79-cdb18d01bbb6 7e2177a1-1f05-4c50-b9d6-10c05f476283 231621d1-603a-4772-b451-4a42b2e31485 b1e28346-7419-486b-b9f7-4ddc32bdffbf 1e3d0ed4-bacb-4ecf-b27c-ae6e561b321f 90b1a6d5-a370-4d92-9c6a-a1b31baccf08 7c330cd5-603c-4fea-99a8-939f7bc95e1e 9d219835-36a2-4b99-8508-78d8d798d60c f67902b5-3b41-45d2-a130-77e61e4cffbe a9a6cb61-ee0e-4c7d-baec-d6b294f7add5 6e19c0e3-c636-46ee-b711-0d89bef3a3b6 1dd1ff2c-eb8b-4515-9c52-ae921795e176 5342088f-1ccd-4686-982b-828a32e23beb e62fb401-c2a9-4314-9d73-64163d58e5e8 d9b38ecc-e990-4c62-987b-876d386b373e 1abcc195-0485-4753-aa9a-0908f3337901 a83725ab-8acd-4387-8559-b714542c39cd 0047a0f0-0463-447c-be88-f8adff2590df fa059758-89a4-42e8-b207-84b6b3af0fa2 c005b730-3358-43d0-b1eb-cf22b5734853 38cf567a-b014-4e08-bc4c-80cee3bb9993 1f2a29e8-f86f-4511-8a80-171169f3608d a753c323-7c32-4b24-bbd4-dd92db50e9af 62226144-d68b-44b9-acdc-07578ffae3ed 0ac66782-84fc-48e9-acd8-3478a9eecf24 ae2d1880-ec91-4849-a994-3882fc74e2a4 4420cc9a-9407-4681-9ef7-079b5edce392 37ceb7dc-0306-43e6-9335-a479716f9196 a28c967d-c9c1-44e2-b451-a1db330cf1ed 7b9e48e7-3d41-4357-a8ae-6467bececf4c 8bad584c-7a6c-4afd-aacc-5af41cf59f8b 855ed006-fcaa-433b-a952-2f73eca5ad62 61f25286-b38f-44c0-910f-f8f367f223a0 6e0d98a6-a723-4690-ac5a-72c409a39dc5 03630a6a-9559-4e80-8088-34b8412c236c 102ada3d-f144-4957-b852-2e24fbda4c0d e884865e-0c4d-452a-be25-bb69713898a0 3eb6b496-6228-4a01-aa8d-e9a687481aa2 02c1f49e-c93b-4465-91d2-f8037c8c65ee 5e6190cf-b0a0-4d5b-b489-1c29fba901ca 1a242b7d-8b20-44f5-a140-657a3952a2ef a872d9dc-bcf9-4ac6-9241-1fddfa3d6907 637fef39-f6c3-4e9a-882f-1dce329054a1 98c47fd9-84e8-4020-b798-f275c4f53bd0 7679002d-433f-4914-b5c4-7ca92e3dacda 89b10efa-4795-4b3b-8f9f-8dc1b5b79283 1e772282-d0bf-4ccb-a1ee-c7e457157ff4 d62d1fd0-05cc-432f-9c48-439bdda58d22 ee900820-ba25-4e7d-96bb-b1dc1cbf289b f7df79e0-b26d-4b01-87e3-133dc9e2a374 b9f260c5-a523-46f2-b428-341a3a10740b 4deeec2f-739f-4da6-9577-1fb2178412f5 c0318676-1438-43fb-9bb8-5b9a552157f5 01d0d558-d5f3-44e1-87b3-e9a00c57dfd1 4aff2ae5-0d21-46c9-952b-5a7cf81b5c2a 60c699d7-fd28-4844-9d11-8f66162aa346 45c866de-8bdc-4fb1-9c0a-73d7d8298055 a4480427-ff53-4d99-a481-eeeeb7672fba b6362629-c8dc-4c01-af74-2725b034e5ab 098761f4-5701-41f0-9c5f-d36a947037e6 498d402f-45eb-4725-8f88-efdeaa40996e f221c0b9-e565-4751-b53f-99aafdbf6fc9 f8dc770b-c8ea-4f3a-b745-5f96769c5a88 f74e7d97-5054-4a3a-b02b-f7d043929e69 7aef1074-40f8-4ada-bbdd-dd193e695557 8469206d-f7b2-4d4d-b824-f18a1e53a65c 5ba8601f-47c0-4168-94d2-e20d28aff408 da989761-bd12-4eb6-ac55-226919425e06 c362b478-70d7-459a-a393-e99d1cca0166 f3b569d0-40ed-4ab6-b847-804a9e26f2a0 4c6b0487-0d25-4c5d-8934-f221a7c23c38 40ceb834-ec67-48bf-b454-44f5f2aa9bdc a9d0e060-eae0-46bd-bb35-6efad09697d3 426d8f7f-1cb4-47c7-82a1-a996af14cbb0 1f276ca3-bf61-4120-929a-3fc575cf0afc 3942f66a-9b6f-4e3e-8783-810d77cff361 e7498f2c-97e1-4d0d-bb20-5e4ba3e802b2 0f51e640-d710-4a79-a6a4-1b7a76c03038 efde350d-6c19-4882-84cc-372fe6e080fc e7d4c652-4200-4051-b782-20fda5d9b6a8 b1eec8d5-68c0-4f6e-abe4-0f91f9217c04 c2f40ba1-788b-4d70-af47-e93e837db2ee d300c227-9867-4f99-b9ec-dd5c616b90d2 26c8d031-3031-44fa-a538-eded94b14290 87341d36-e453-41d0-ada6-131e337cf169 58650d2f-1a08-479f-bd84-4843bf9384fb 022fd57d-0383-449c-a5aa-b6e2de5f4858 676def2c-49a9-48f9-b5c9-2eb05bfd3c17 c2cdb56b-31c3-4ed1-b9cf-6a12b35bf76a 4e5ab59f-e2c3-41b3-a4f3-32bce7fbdfee e7df0b43-b262-4ee2-a040-c730fe36bd7a e77ecba5-43f8-4349-912d-236887e83011 45b9ce1e-2897-43bd-b832-b7a42eaf0b12 91439f71-f8cd-41c3-a835-4797d76d8584 8c57e954-0a0f-4cbf-ab81-98179a79bd7e d0470416-31c4-4f6c-91e6-7193de85dda6 22d7d81a-9da3-4025-b80f-4b86dd0ce3f9 7cba11d5-71e5-47f8-94f5-c08755158ed8 6606432c-bd69-41a2-8022-0eca0b7149fd ae3364ef-ac65-48f8-8008-2367ef4499b5 0e97f18b-e298-479b-89fd-548c381f956e 4c038f82-a3f0-4121-b1ce-8a5204fec014 98467d28-91f6-4f10-b08e-b7de71373806 4c0cc40a-2079-431d-b122-4313dadc64bb 4e86275e-5645-402c-b1cf-f1c5f66c1a97 24676b95-3ebf-43a3-a5b7-1dc9839c5a90 d5c08d38-dcc6-4990-b10c-9d071714466e ae3febab-30a6-411a-90cf-e8a7f9406510 a476c5da-217c-48ca-929d-1ed29eb32ead 85ee1124-a6ec-41cf-aa72-d2aacabbd5e1 351e3aa5-af0a-42a7-b66b-7cd89d763e00 d6ce7879-efce-4074-94e7-aaedfacadd05 081f98c9-6d2a-46bc-bb41-eebc91847278 ad232559-92a8-4f89-b35b-420e6f730134 325df6e6-2176-4c55-9442-87e0e3f6a7fe ab90a227-a02f-4e06-85dc-db84bbb6ae3d 1e16048e-a693-486f-97a0-fdccf50be14b bdc0bad7-3661-44bd-b941-8e7a571939ff 78ddf67b-9d6b-4ef3-8aba-8b9ff283ef76 6eb649a2-97c5-400a-84a7-370fe59ce69e 85158a7c-0806-43b6-8476-33905a88c5d5 354b8d11-8f0e-465a-ae15-868583210e79 4113d79f-ab76-478f-ae59-22a4c382de74 7059b963-84d9-4b04-97e2-243132ba0391 a04f2ba1-f2b4-40a5-a905-b89e4faa32f3 beef33c5-64c6-4bc1-b280-95a9c12d5b5f 64b2ef74-9e56-4fdb-8dc7-7027a08a0a60 b1b8406b-1e99-4d90-8b3f-a78d6eab9940 31fd7dc2-f5de-4bab-8a28-32d9e3afc8e3 169c6946-a2b5-498c-828d-2d56133f6ad5 565cdba0-8e20-45c5-bc71-0a83ae2ed4d7 4df88ded-44a5-48d9-818c-5ea6eb7b2983 2c9af92f-3b86-4ff7-a319-23906b1a4b43 503318e8-e6a7-4935-85d5-8a1adafc9933 76f833c1-ce60-463a-a588-d97a329ee413 d8783034-581d-4ac4-88f5-774b98ee71fb 29fd45ce-730a-4978-af30-f261721f2819 0650c38a-fe86-4bba-adca-572e0480e1f5 7c49a692-51f9-4e93-a4f7-4ac9c69fb6cf 78df0632-46e9-4a62-be03-88150557e47a 04108d03-5c35-425c-a44f-55921b600b33 b92dbf0d-f403-4e73-bfdb-cabdf5c2bb1a aa754698-585c-4f3f-b2cf-9548ca31b6b9 2546a5be-45f9-4eab-850f-0c3b13c326e3 ce90faa7-3869-40cc-aad2-2d2f2cfc5001 ad45e11b-0545-476b-a86b-410d4148922f c702b2c1-0f62-4c2b-9676-697987bb9d14 e061b5c6-e5cb-46f6-a798-caca61e0ea2b 875c1eb2-3351-4d33-bc3d-b19867f42d0f e9193aca-afd2-4752-adb3-750e546115dd ea371b0f-9a22-41fe-b848-272bb0bb1b73 f2d2bbca-3845-4053-9ef6-3c0b76c795ca 1ca5a1b7-9148-4f47-b8d2-b239e253e9b0 f2ac1fac-d33b-49d0-b81f-82a604560f76 82fdcf25-a629-456a-a1d9-5941746c9a4c 0d630a09-5640-40e6-b324-5ba2970147e8 8af1c0fc-49bb-49df-8ab9-3d5ba4d63264 2fc23034-63cf-497d-8af5-26cee7a13e6e d65f7a65-8a5e-4f1b-a95e-a521fe897ef6 af9b0eb7-fbe4-4a5c-80fe-9afe313a96ae 5fd119ea-b59f-449b-96c4-93039a1efe70 f837fd13-71a0-4773-b1ec-bb1e45558e55 bd8ea65b-f28c-4255-9797-ebe6ee48b0f6 2022f384-dd16-4e60-949a-c13b11ef27a8 9a38de23-8f7b-43dc-8ebf-d61b58bcad62 270bd57c-d58c-443c-ba11-6e15aeae7420 a950faed-3af9-428e-b2c2-23a2f1bb7083 3778a385-e138-495e-b91a-f888af2cf356 67144766-c5df-406d-be4e-6e8eb7679f16 87eb9925-2d74-4949-9b14-1fec6fc8392d 1a222d64-2847-4504-9ba7-af8cb3eb8cd9 8d0a80fa-2bfa-4795-863e-8f6630fcd30d 4d629a50-6571-43f2-b71c-d3edd4fda61a 475471e0-b7f5-4f4d-ba94-58fdf7601ebb 1758b5c0-ac39-4fb3-be6c-467cb77539c8 dfec8654-0e55-418d-9a12-cb008d85b926 b01e99c5-2caa-47f7-bdb9-9ae9d4ddecc4 e363cc16-bb76-4d06-b30c-d8029e448b39 fd90f9fb-1693-44d8-b8db-df2c4620bed6 a76d818a-340b-49ed-b4a8-00c73a8ad2bd f19bfe3b-7260-48e7-9d2c-7a8279da56e2 eeeb68a1-9a70-4668-993f-69b92c828a49 c28408f8-8ab2-4a0a-a88b-4868fbd7bd8f 994170bc-54ba-4c80-8498-a09fc9f046d8 fb39b7ab-5665-4207-8ca2-4df462face4f 608257f9-1860-4a60-ab79-943a06f67344 9c655150-6e29-4be5-bf3a-f608a9528066 5b9a5cc8-4898-41a0-b142-e89423196f7a 4f993d60-18f2-430e-9441-f4911248f324 62c6d79e-2bb6-471f-b870-2f5988b3ffab d570fa91-de59-466f-abe1-3a1117972b3b 099e1917-22df-4538-9f37-aaf6595a484b d5ff7f6e-9327-4356-9855-abde52555e50 4a6491d7-74f9-4f21-9646-b8283e3edcbf 6cb02983-5b8f-4796-b9fd-d9b72e729147 b24d33cc-6d20-42bb-bdf3-6d739350023a 6600652c-0f7e-4db5-87e8-6022e25b80fb 6a13f6c7-bdbb-4bb7-93ee-7dca94b8bc7c 4e33da20-6195-4215-857f-c9ed22a10401 ad38c43b-0c3e-47c8-b7d7-0459ab563376 cfccd9cb-04c0-4b7a-a240-6d4d84310cf3 f87879c7-98c0-4d92-bff0-def632675c5b 24b6dbaf-13ae-493c-b7bc-5ca9ddd90714 a861f98f-d9fd-4ff7-b2d5-840d1cd5ee15 896fafa6-fd60-46a9-908c-5c8c9b98868f 62c90475-649b-4995-b585-38b4ecbebfb2 9f555427-d52a-4338-a609-d3b69ef0fb0a fd08d044-5a46-4c05-8605-43810c2f9686 76770de3-e1e6-4062-be0a-693bc48912fe ba8e5513-06a5-488d-aac7-87f93ded8c18 60e6ffa8-150a-4a6f-a878-e47b74b1433d b62fc61a-5b31-4273-a11b-3b6855c9594c 9dcc13b8-edfb-47e6-8070-9bd0f4479758 b763f9d2-408b-43c6-ad4a-b2af2ea7fffa ccae322a-0377-4450-89d6-039191d62b5a 22978d97-7b26-4abe-87e4-30fdd87eb8a9 a1e1acf2-48ea-44fe-b96f-202b7fec720a 5b8cdb5d-799f-47c8-9023-8ff317bb8ff5 f13aa715-16e8-4032-b241-532c4e7941ea 1d0ef684-94e0-4872-94d6-a90697f98174 0f77f0ce-c109-4957-bea0-741b6d99db24 15a862fa-134f-4a9c-acc5-c0db0a8d27e8 0fffefae-b87c-49d7-b19d-bd816083f61c ffcc6e52-942c-459b-94a7-958d41001dc5 f0cfef36-18a9-45c0-a59a-699645cd091f a650977e-c530-4b4f-a380-b37ec4691b32 21812bcf-c416-40aa-ae91-7ed93e3b4a5f 44dcf591-33c0-43a7-acb3-56519118210d 269d8bf2-e0e9-4534-8dce-c86ba139adf5 cf32bcc1-8d35-4799-ba46-5719edab2593 f0ef4729-1e59-422d-ae72-de1287fc979b 82b74eee-1a7c-4fc3-a9cd-58508966c17f ca2a2800-3e31-4444-876e-bf0639d4a89e 2a9c8945-dbfb-40e3-a1f7-6c637ea15d05 2f7801be-851f-4021-9dca-e2ae31fbc839 6d7c93cb-935e-4a78-a406-3816f86e11b0 d50fd7a1-0e98-4285-9d43-a7ca6ae8f850 0e586778-2c54-42e6-8879-a93473eda21e 359ad831-b4d2-476d-8def-5b46f3b0d306 4d670e8c-9d6f-4375-9436-b3e60e2baf26 1d7450a7-c235-4fca-af4c-da622449e2ed a57be9a3-d5f8-41dc-99f6-50d2523c62fd a5464ddc-b4ad-4a39-a2fb-2a4a1186b04a c3ed43be-686f-4ac4-9f11-d0e6a606db72 75e8c322-a2d8-4683-b8f3-c676d3d08aad 7f7bb414-6813-42a5-ad91-1c5d0b554777 f51be96e-fffb-40b7-8a1d-382f27300c45 e3a614dc-abdf-4929-8c0e-c0aeb386e31b 90c66a61-b52f-47bf-911c-667b817339b7 d27745d0-3f06-4705-b6bf-a37301c7ac84 9bfb30e0-52a8-4288-b172-80a8e7d9fc69 0ea88b61-28a3-4944-b5aa-874a6246cb4c 1ec8ebdb-021b-43b3-ab13-c596fe2801e1 8bfe5a4b-d9fe-44ad-a2f4-9bc70b5d5128 e7a1bd46-57bd-45ab-a2df-0fe4c70653bd 22200a4f-d5fd-4c49-b08a-ab3ed302106b d46168ea-e34f-4bd8-9858-90cc7b70ef85 2814ce6b-e58f-47ea-a4c0-ac960bc58813 9eb48009-a7f6-4da3-9836-4f96d5a8aa3a 89a43ed6-4426-4712-8935-8a794a0bb874 efc7f2e5-cd3a-4b39-945a-14ed4223a44d 05ddd2ca-bb00-459a-b427-8767cf832110 e8cbf808-ecaf-4942-845f-4ba033563fde d020648b-a569-4208-9d05-13780afa9b35 346f47fa-cbe9-47c3-bb6a-d8211b9fd287 5fd5dd2a-c849-4156-97ad-0d5002440581 9b9faad4-dd25-43e8-b3b6-9de69c4fa57f 2e40a73e-4a88-4d0e-bedc-af428c96543f 2f68e5ae-0d15-4aca-aa9a-4ff8c7024e0d bf91af36-801e-41c1-b31a-2973ff8c0780 faa8ebc5-7b18-4649-a6ea-12587435b1eb 20a53a4a-5c74-4e1d-a3ec-cb3fe19193e4 4ca19c9e-6165-4ede-a860-deeccb56200f bd63d4d8-760d-4c7a-bc1c-5e2a8c7f922a e2a6677c-1eeb-4d11-be3a-2cd8b6941f7d 9e514e64-df38-4d90-82b3-d903d4a9fff2 d1278d40-e5a0-49ff-8334-781344a5a17e 90ed7728-bfad-4eb7-849c-bd670f3b352f 8eabbe4f-033f-4c47-a1e2-a79a35049baf 2fb7ced7-211f-44b1-af09-07a18da01c36 2c6d33b2-43ff-41df-8330-5a7417bf8308 7ceb3a8d-4124-4a82-9f21-1968daea6c01 97067edd-e51c-4844-b45b-ec2ce2780eb3 773f09a2-e949-4aa4-84e2-bbdf58fdc6c2 a281443a-d110-4db7-a7ef-30cf6f1161fb 41028923-a2d0-4e5f-936d-ec7505139593 3197766b-fcde-47b5-87da-ffe0987cc174 227128e5-82bd-4a7c-9095-643e1fe05bcc bdf7e2ac-7bcd-4e5f-9220-5af8ed4f720f c4a40e57-bbbf-4e38-904e-24bddb9d730b d8d9d5e8-2b8e-4a99-b0ee-b66edb8a0122 f5fb9114-6740-469a-a725-c6e3407a160a c5e91cec-ec41-4903-a74c-e018fd51859f 87d37ba1-ca6a-4222-9112-9172b99b4a00 dcd3a268-0e3d-4fcd-aff4-9b1fa3e77297 ce472807-a98e-4870-a927-71e5bbd6ef67 46c8cf83-9ff6-419f-9f86-1743021ad064 5c6d87b7-0868-4d7e-a28a-55cd23b47aee 5782b83f-1273-4963-87fd-aac4e3924180 1342b9cb-6f83-42b0-ad12-d6c80f2eb007 d8617aea-1056-472b-990a-d2d1132bd95a 87b1d851-8918-4036-95dc-afe6c1a27373 6b5826f1-f492-4436-b71e-10ae3651147a 2f91d313-fc03-4e6d-9e1f-9ba32578ebe4 29cedbfc-183f-4032-9868-6915f7b2cc90 38471d51-42d4-4daa-a647-15160312a69e 7d18c6b8-6c24-4d8d-8a1e-21c2847af9a3 069126a7-08ba-434a-903b-8c04ccb20e3e 24d36a8c-5016-49c3-8871-e5a51ff6aae0 5c96eaf7-5b52-42ad-a2d4-87c444053c52 1fd73266-9333-4711-b0b7-a988b0ff91ae e9fb5dbd-58e7-4de7-a0e1-886e353c14ec dcc2aac1-f1ac-4ab9-b2da-255fd19184fd 67ee9db1-551d-4deb-b94f-a90120316d3f e0bfaced-7118-46a5-872a-46e1c2136c39 a0222b4b-5889-4d5d-9762-336b5f61f9e1 70c0e357-ab7c-461d-bfe2-ea22406993d4 668fc73c-39af-4dfb-be13-848f5647e743 09ba9ddc-9a94-462a-9208-e1175fe30f66 fa44c4b1-752b-433a-89a8-e6688b4dc43a fed15564-18a5-4b10-a9ff-e6397996cb72 8f24460a-2a56-49dc-a90e-3a4ab0dc3942 175f22aa-6bc3-4ef7-91ef-bb06bed2468b b1e6b51d-9eef-44c7-8586-567a5ec3c2b9 6a9652cd-7af7-429e-bbf8-205fef08d220 5e7b507c-2387-400e-8415-e7e8cb6eaf15 24626477-ebcd-468b-81de-6d8d1406ba7c 57d7e190-75df-4f92-90ce-e94cece24a1e 2919e198-2f9d-433c-8541-595641449766 e307434f-cb09-44b9-bed4-b0a9fe098e9c 9a0e5193-3613-456f-9f79-c22922fec4b9 d5f3ae33-86a4-4975-a5c2-b90548996ab9 ad97612d-d450-4375-b774-c7b1497a7b1c 140cfd3c-5cef-42c6-b3b1-c915eb1af40b 4afa71d1-c093-4e56-bf2e-9f353ce0f661 34a76700-2622-43d5-8bd8-8891350c9dfa c1fe86f5-9ef0-40fd-8718-d085907c20b3 fd015200-71ab-4bd8-a0fe-1814089a89ec 38168216-43e6-4a19-b724-a490b24694a6 adfbe868-2dbb-44d6-aeab-cbf425014504 a70ef5a4-11f0-4f37-8171-e12ffbfe90b3 a502e0f9-c16d-443c-94af-7035e4013078 a29002cc-9a07-40a4-8387-d2282972dce9 ce76945a-2395-44b2-9d6b-aca33d51c2f4 d41f4086-74b2-46f5-a871-b19c7ab8a3f9 7e34aa79-56e4-42ba-b9a1-e1efe129a7cf 1efae91c-a4a4-4736-b96d-7f479f6eadf0 fe21f9b5-182b-4b9c-8337-58c8fc28f846 c3787771-a930-433f-abf7-713d9e0fc2de fcae9983-3bdb-4f93-b576-d15cc6b6b739 91f5a763-911f-4ebf-8608-064f043392ec c06d3843-5f13-4078-9fed-11d7bde5aec3 bb461ae7-547d-469e-b572-f3ac52c0e2c4 7e123ad7-eb8e-41b2-9449-4778109aa229 145735ae-44b8-4b21-a47b-f0dd222f0ffd 900566b3-6ddd-4164-9c67-949aa04dc8f3 b8783394-bbeb-4a7e-84fe-cf468c6c9813 6b523fc2-197a-4d4a-8a20-a3e87f123394 df04bf23-409a-46e9-be59-359a582e9e64 75ce4020-25dc-4e74-9405-fdae0af009fd 8a11f5a1-6730-4068-9d54-af54428ff795 8971e27a-b37a-4511-a8ed-02aee7e9fe0d df61e8e9-ba63-4560-ad1a-685b2e2a4167 e8a0d922-f0a6-4c89-8691-53693fe9a356 3cbb54a8-bb5b-452b-b56a-5c71552222cf b2e458ab-da60-487d-a123-3b75de521844 0898c5c5-0d88-48bd-b57c-64b44a2aceeb 9ca6776c-2cc2-4d89-b267-ab2494f802a2 39dea572-f3e0-4af4-a19f-3f509d6fed8d b15cb498-d37e-4b6f-ab13-98b659b4ec9c 80c5535b-4552-43ef-a64c-54dad8f498ff 9c8d931d-ff90-4250-b0d3-72c816a43b6e 055d4533-6b61-460f-98ae-7706f7fb4667 0a2b4024-05c5-4fcf-94e0-79a984e3e56f ee8efb8d-d791-46da-b45f-2152ce013d43 8126470d-371c-44cc-9eaa-cbcb88e33f2c e1feefe6-5a59-434f-8017-5d841d49fe4c 002b4336-d507-4d61-8882-9bd943baaf2e 4ac7ebbe-bebe-4ba9-9133-9ed2a53f09bf a42626f1-cd36-45fc-aaf8-490bbd4fa85a b8450630-cec2-418c-b867-af6f2c93bc90 48c77cfe-a8ca-4be3-aa73-74ced28954a0 7d55ff2f-b004-4aa4-b953-c1fb7b79fb90 e9a991aa-6d4c-4108-9c33-fb89c9708a9e e8b7044c-37d4-42fa-8435-69f3c0990478 63eb863e-c57c-4b8f-883f-2df85c35b1f6 1cc09f3c-966f-4aca-918e-df33f05ad70c 7f385ed5-63c9-488c-8556-f6f139595061 d74ae9b0-f604-44a3-b103-d552e3ee2c06 4fdec0a7-9bda-411b-b2dd-89097d2d79a9 c0865794-8a16-4aa5-bc1b-7f7e585f7f53 bfb48998-8955-4c73-8af8-f0dfeb91aefa f1d0abc2-6a50-499b-9cd9-f39ebfa06442 f5325b62-d33a-4cb8-8846-320feaff0b0f 3cfc89f0-20af-4d3e-a81f-53735a0818c7 9f620c56-dd2c-4d66-9e24-68c13d597302 c164fc8a-6a82-4196-ae9f-a5e545e4b411 980d4474-1308-46b7-aaa6-31e0eb8c3576 f20c7d39-d3e0-44b1-acdd-e146d2041113 b60da306-42ac-4a76-a505-abb5569d7788 b5db4dca-e827-4ec8-8070-a171f26da100 95dd8c91-d582-43aa-9a21-43daf7560efc a99c9c54-b9f1-4807-9ce0-4b6ae6084c51 a7bc3bb4-3e71-4e5f-88fc-54b46d2e92ba 3c93ec41-6327-4fa7-9241-049caecb03f4 ea06cb82-1539-4d92-bb36-e3cbe9678cc6 38c2b9e1-51a3-4165-9c01-42c005c30f88 02a7e8fd-5d61-4bad-bb2d-7646cdd6f82d 23552b2c-8973-4166-b71a-7829daa1b396 a8e9fa4b-00f8-44f5-b107-1ce8d010c3eb b642ea9e-2e44-4c6b-b8a9-a77a4bd56efc d990bd14-ec31-4473-b253-4240ffbc4749 a5da0d62-c98f-464d-9ffc-bd0b3c56f334 17c306d7-95f4-4a36-b152-66daa4671757 9139bab1-69e6-47a7-8b49-2ab617e6c666 11d83880-8cd6-43d4-91ca-289d4c74e944 19e8976d-1ecf-4225-90ec-7bc9c9ec91da a06381b3-10d3-43db-89e5-e9fb71f7180c f0265a35-4db1-4822-93fe-c3da0d6c11db 9b317ede-eeda-42cc-8f43-52d74c878b27 9b4d7bd7-a2b1-403a-938a-b9bfb5f136d8 b3015657-6b33-4938-858d-78476e90d6d4 0ecd67cf-56b2-4dae-a8b5-a6dd793c0cf2 08d96118-2e70-4a24-b5bc-a1a9dc3cc655 b4414f7b-17d7-4e60-8521-e323403c0870 fe98b296-25b7-40f2-ae02-aed855f60dfa f1ac199e-4ad6-4661-8102-536cd0a4fd52 e022625c-b471-4738-94dd-6110fefc3e48 3b7381df-2ff9-49c4-be2b-53573f14ea62 df5bb9db-b091-4694-9334-d794d4c79091 37fcd951-b580-4d35-812d-61d7d19ad488 7be5f179-9f0f-4e4e-9e09-32a6a867ee7d 3ba278d2-e9f1-45e9-9299-6e09d34597d3 a8ddd225-378c-4fb4-b8d4-94080bd107f5 2ddf59cd-4662-4048-b71e-7c4522b1c6bc b15ae1c4-b243-4105-90bc-4b55e80c4e70 7c16f6fc-0c2c-4dee-96ef-3c2943148487 640aac6a-4e4e-4408-97e8-f50b943fe2d8 e2c20257-2363-4557-9353-61ba6d35c9f5 d92a0cd0-03f3-4f61-bda6-940a430b89e4 9bf64eb4-eaf6-4bcf-b9b0-619ba0d57947 55ab0510-b56f-4844-82a8-11335b35c41b ba63b133-0ff0-47ce-afd8-21d19a351e51 239be3bd-6d37-497d-9eff-0a5b3b063c42 f9a51496-c0a7-4917-b443-6dc0e24fc271 ec773c93-7302-499f-80c9-9cbf3b679d12 40fe33de-6668-4685-9620-025b69e53291 b86fc0e7-6fdb-4401-9375-0bf07a24cedf 85031807-da35-436f-bbfd-1f2a63f72db3 6a00ab18-2037-442a-b52b-360731e47b50 35dae46a-dcfa-4a5e-815a-65880aa56717 7ea02517-c897-460e-9cca-760b935bee2f 35e23831-6723-45b0-a326-217ad25767b4 2ef33085-8256-4e6f-a242-1a7239843ee7 b8214e4b-03b0-44fc-b66b-b4ef40972bc2 93d6ffaa-17f6-473e-8389-c9616bfd943a cebb551f-4afa-485d-a884-d37a34d68a99 abbc266f-e0a1-4670-8f3b-05149397ae8c 0ad11d84-ff41-43a3-bc8b-875e603bf1ff 52a26fa3-a4e7-4943-aeaf-53cece96fead 0d10b3c6-0cca-417b-a2bc-3afc8c7fb123 aa76a34d-373d-4bc1-b788-6599ae618589 7e5a946d-9865-4de7-96d4-53a848856ed0 dbc36f44-a2ce-4682-8430-60de4c554559 ebf9dd95-ed72-4aec-bcc0-0f622ba6d0d0 1ff8c7c8-d03f-42e5-8934-c9047fc87567 11b28bc5-8640-4e74-82c4-212e6c172da1 b3385e77-a6a5-4410-ad36-d9b59dc47bac f463734c-05c9-418d-8942-966545df179a 48472b76-7a6b-4c69-8805-a1a0a43574c8 7959ccfb-6e1f-4844-8bcb-939f47131608 affa9789-28e2-4ae8-a92f-5e8f28e9b1ec 35b9308f-c53c-4ad1-9108-dfde99e84c8f f8391ffa-8f38-4974-ae4c-0b2a87d08f69 2ca0d824-edc7-4951-bdb7-2b8c1a060eab ef65f8ac-0abd-4463-8bdd-21df6e54f0e2 b0edc5c6-0d59-437b-81f8-7b9c726987c2 da559dd9-398c-469d-abf2-bc83a5828864 f68b429f-1fbd-4064-b5a0-74ae2b8b3fe3 a68cffe2-4c72-426b-a70b-00ebedfbcac3 a8dc3a34-e3ab-4dd4-ba97-41500daeccec bcf5200f-7807-4599-bc85-5482a84f2af7 79519ca2-76c5-4d86-b426-f3723ad6c03c 62e0ffcf-53ed-4d74-9806-228ce9f2b0f5 40a1b454-0af3-4e5e-95fc-3c25f2e4c0ce 66d6182a-5fa2-4714-8f08-5ca16cc4e11e ba456d01-5150-4a6a-8354-db01243e1529 11ec7007-04a7-4ac8-921a-500bc028e036 564a4f01-520c-4de9-bb44-1a8760fb71b4 f6c2038e-44c7-4921-9799-b4f8362e4714 0a489ec8-44e9-4110-9c2d-3fda8249517b 0d43fbe3-d5f1-4b1c-a918-8cc9d41f7123 fb64dd80-02b9-48bf-9b91-2c0027516ba1 6f903cad-0617-434b-983c-1af594f25e18 9267156e-1342-47c1-be18-da91a9a3956b 391019bd-2fe6-49e0-94a6-844876ebdbe0 f35ad56d-33d5-4972-9d7a-40a1835c1a1f 8760b511-b18a-4828-aae5-f9a2601c5887 ee417599-a46c-4469-acee-debb94bf69ce 880d1831-0fea-4c3a-ab61-00761f882b0f 75e0f8bf-4d33-4e78-8b40-59c891c53140 b0ff0bd4-74a8-44c3-beed-a824d887d2df 88f4de62-9180-43ab-8270-399f7aa1828a dc9176d4-8fab-496f-90cb-87c967d7bd45 45c1e1e6-5527-4992-a432-6067b34f80ac 92e5641f-90a5-46be-9dae-14ea18b08fda 641d2c45-c35d-46ab-8fbe-dbeb783d19a4 320852a1-a336-4537-8aa8-ad99ce142cae 15c6e990-93cf-4f5a-b57b-078e8177f4a2 a797acb9-d6e0-42b7-ac28-9d796d2d7144 471fe9b0-badc-45d8-b25d-a8cd5deed015 b282c615-95c9-4005-a8d8-30c452d9cc57 f9b3acb2-d106-4880-b3f4-25cc6be0cc8d 40d3d9cf-b3cc-4d19-a090-3d1b65fa6672 f979052b-2cca-45c6-abc6-5149256c9953 5166b742-9479-4747-b41c-b3f4029245d3 5c2df8ef-694d-4c34-a564-ed71992748ed 54703784-bc2b-48c5-a23d-37c2f4e5b8c9 f12bd212-038b-4beb-803c-bd3b99c1c3a4 87e39d34-38ac-4c93-a1db-ddfed4f6e07a 79c6be9d-243f-4c45-9bb3-55f2f5719110 8b7bef63-9d19-4804-adc5-14754e54fe83 49afab0c-d5be-43e9-b77e-e35b2672406d e0c88fcc-fb1c-4c7b-b0c9-59e617a767db a2639a26-92f8-4819-9c08-75802513028c 86cfe291-1f34-42fa-a450-34d08d2b97bc cc8dcace-5c0e-49ac-a7b3-190a1096ef8e ad08e54f-bb04-4e82-ae14-5684add47864 ee5f17a1-1116-4c47-ab4e-783788414f9a 965e35d5-0022-472c-9981-c369a1c6f7f9 d1b2e889-0cf0-4989-98fd-6a929bd35c91 b1b0eb29-08e8-4fa1-8ff2-f024e41d4ab9 0356030c-84cc-4f1e-a2e8-e996c21ffe0a 4ca76338-acdd-4733-843f-68ce4483cc93 430ca885-ac57-47cb-8004-aa4860d813ee 9e68e218-6d68-4997-91cf-4f1cedd28704 fca4c2e4-ed95-4bf4-8618-802da934c5aa c7cf533d-d2eb-4f46-8348-ee5b1636c3c2 651cc5f9-4915-4b32-801d-8531ad70daff b8fe835d-0127-4c56-aa72-397a06c054ee 7af582df-09d0-4f3a-8224-dda1ee96cf9a e8d8043a-8dee-4ed8-b368-31ee725895c7 a1ce75ad-67aa-4b14-abb4-1f5462ce0d56 44c94ad4-4244-4d81-a5cc-8f99322b7b24 0748d066-1fb6-472c-9ac7-6bb08c14920f f2dbf959-9c0d-4950-be6e-fd7ebbe1ba52 ee92a855-4728-4440-a6ab-0d0a99901c4a 405bd864-c23f-4521-b6a7-46da90176905 12307670-fd94-45b0-a731-1c8b3730e2fd 2c469b6a-4fb4-4239-a8e5-4311c3d48e1f 0bf04227-a6c6-41d7-b7cc-bbfb75246059 61e89698-d20d-4f1d-9bfe-1f9751357141 61fbe145-1744-4ede-93c6-3f2208bec7a2 ad2f2492-508a-4b8e-9b41-0716b0a997b2 036ad81e-9df9-4d0b-a8a8-c4055a8ab91b ad51c807-218d-4fd5-bc1d-ac1c646a860f 2f4757d9-2b0d-4502-81e9-99dc29ea90bf be9e3575-a3e1-48ad-80ff-3adcc5b2200d b0de9adc-852b-4c49-8d63-aca4f0415ae3 a7872a8d-7ea8-4106-b4d8-a09bcf3d651a 07ae78af-c232-481a-8180-eee33ac4201c e872eb1a-d3e1-4df7-a2ea-7ab1f7c4cb4f 13a6c2d8-0089-41e3-bf84-f3818c4d307c 2dde11cd-d393-499a-adbd-4dfd9d6880c2 e5c7f373-e297-4b36-8893-dd0a940167aa 0199ea11-921d-48d7-99b6-2e197955f4d7 a6bfd5ba-3e2d-4e08-a34f-2583e2235a5d 1bf452e4-93ed-4394-a431-b2520e8dc4fb 85c5aae9-a0b0-48b2-9fa1-a93b4fd02cdb 468d1888-f253-4c3e-8463-75075c1c88dd d6fe7e48-c16a-4450-adf5-abc5052e96bb 2ce8015f-dd84-44a7-a936-52a575f97852 b84a1580-a283-4950-854e-88c6c5517408 5c537ef3-5cbd-4190-b98a-671385edb786 4393b6c7-2080-4649-9a7d-30d20aff649c c79c1166-7808-419c-8cde-e2b5afb6cbc8 96c48936-ef1e-4f5b-9b0a-b8f58936c4dd 1e9065b3-52aa-4c70-9a36-cb54cb474133 160e8165-087b-4d87-b19e-7c2901db4b03 c9607aef-c04d-4a48-ad8e-2214229499fc 1526a75b-5e62-44ae-b991-c8150ab1fcfe 41d59b4f-b4a2-4ac6-8e1c-c68eb75beb7a c95b3adf-989f-4110-a4a1-80facf777d95 cbbdd717-32bc-486c-a8f8-2002e52afd44 75126af5-6157-45d6-8e8f-272fffc49eda c2397c31-1608-4cab-b22a-a95ac0da60c8 cc36de91-abe5-41fd-8fe2-81e9a05bf3ea 50996eb5-3510-49ff-b8d1-407cd964f47d af3479cf-e332-42e6-8916-5b3ee8ca75a0 c13e4e81-7d12-4675-91e1-dd48850a9b9a f5454195-194f-4720-b7f7-3671bc21048e f5da6d05-e871-40c2-acc6-19f43149ab8c 47c0097e-8c28-46e6-a6e0-22c092c38352 39589995-6445-492c-b185-6792cee75326 7b8fba50-c292-4953-9544-0f317cb27397 a31bd0e2-12c7-438f-901c-a0854e32f76e d795a8bc-b749-43c7-985c-061e1e82f170 9fcfa10d-0932-4402-b1c3-8cfa05e1d366 498a4d90-27e9-44e3-b685-b471da138810 c202062c-6109-46d0-b633-0947eadfcbe1 13f28612-8b9b-42fe-9f52-7573d016cce3 91048dd2-7774-4cdf-a006-ee37aab11cc3 5b00d70c-901a-4776-a306-b3576bc55215 1bc118b3-a36e-4e87-96f6-b0191ae21374 93a93395-3d0d-4133-b612-976b444f661b 451fcc19-0e72-4db7-b5ed-af22ce07d990 78793d6f-026c-49b0-ba21-15415b58457a c25f838a-5bf2-473d-babb-4f619337a4be faa2544e-9bcd-49e2-a73d-d57321782cc1 266a134b-48e9-4908-9277-aaeab26503b5 f9b886fe-9d7e-4fce-bab9-761d4154d2c3 4ebb5454-ecfe-4e78-bf59-68b1362034ac 71626da1-3d22-4b3b-a50d-bf62e4de6203 d15d6e7d-86d2-426c-9fc8-136d49c13b99 72726607-8329-4d06-8345-ed5da1d925db a23f0d99-b560-4962-af13-0266c7fb1cc0 7e3a0bb4-9264-408f-9b4d-1bae0494dbf9 cda51ecc-af09-430f-ac1b-4891b510f61a d70961a8-df12-494d-bab2-ba5bef933b3d 519a9ee6-1c17-4ca9-b03f-173ea92369fc 2fae4abb-3196-49d7-afaf-dbcc087ae2d2 0d8d38a4-d149-4f7a-bba5-d9f9b89be4e7 36342741-c165-4431-b2d6-7e9f3045b79f 2d5a7546-d763-46c6-b217-855992cf93cc 52ca7ff0-aff1-40f4-a744-0e695a032e83 4a649396-bbb8-439a-b1a0-2fc1d3d2421a 2b44a1be-af0c-4d12-afe2-bc46756fc116 54e622af-60b9-4938-9414-3a0ba4262879 c82df84a-ddcb-4a10-8161-67d3df65eab8 24f8e587-1ca3-49b2-b156-994b60323411 b9607324-f747-4e58-8f93-59ddb218fd16 fcc6e0e4-68a8-469f-9358-0c2dad537ecc 4e752f08-2380-4a28-8ec5-d50fbe34cf28 c281d4eb-1055-4972-ab24-288f9b26e835 0e836607-0d1c-420f-85ef-16569d6f607b b3ec654d-4f4a-4174-bc2d-9866261a8107 7dc17f3f-b09d-4e4f-a0d6-ed914e01cd64 929e4aff-83d0-4fec-bbde-6eb72f69acee 0a85ffa8-fa07-45a2-878b-e41b66bfaf3a ffa51922-60e6-432c-aa86-4a00110e5a46 f6c6fb52-3626-41a6-b87f-240d87f20037 88f047d4-d0a2-47b2-9d1d-1ff94b5d260a 8acd120c-fb87-4034-afce-add1c2a93507 f3149509-ea3d-4ff5-b97d-6777870c082b 869962e4-f549-44b6-b8ac-ca7bd969c48d deda0b92-a66e-4dec-9843-874d5281bb6a 28a10ba7-1a8c-4694-af26-f3ed017ece80 b6b47837-1de7-4c3b-875a-cbbc049753dd 68f7ff7a-7b39-4805-8e01-cbfc837bb4ae 8106b2f4-3bc9-497c-b536-38aad0c4c070 758d5e0e-6255-40cb-9e57-85d50a6689d6 a9228681-90c5-49cd-83e8-dbee495c6d4f d16ddabe-b9b6-4850-81ad-09c977e25291 84325b8a-c368-44cd-9d57-1572d156e305 fccd7ff6-f2f5-4d85-8551-bcedcef0dea9 3c2d894d-8626-4211-a4b1-c57d0790b82a b6897885-bd8d-474e-908c-96c88edb073f 0f67d70f-682e-4019-a57d-e2310345e9cc d52d5e92-e311-42c3-966d-1f0b0eb21ccf d02f3b32-9a13-4b03-a44c-a5b0912c81be 1923bd04-eb04-498f-9658-c26d52960d5d 54eca1d6-c578-4727-8845-43277ea13d0c 7c643011-73e4-4f50-8b93-9c56e4dc3c0b 7d9886e4-f940-4b02-b526-3e0002672d60 2ed35380-8482-489c-bf12-3fe095db9d54 c7f308a4-177d-4736-8b19-54920a71713e 3dd62dbb-ad8f-49c5-903c-194841b62a30 9f7b70dc-33ff-4d76-9974-9082c6cba25d 290dd33d-6976-4c10-83fb-64acca067f8e 1f8f94a7-6070-4ea3-891c-3b1799351e6e c8cb10f2-a3cb-48cd-8817-61de21814c6d abea2ac7-c566-42a1-985e-8b61c4e21a31 77265d44-1131-4b56-8718-542a673f21c9 e38ee429-d0cd-4724-b804-184f5a2a1752 d6b910ac-d248-49c7-9cce-9525a16e8993 b51b38b1-60e9-4568-9938-c32bdfa50131 4175a01a-7175-472c-81a8-eb952183db1c fd921d50-d8e0-4d28-8b32-81b59745bc6f d3ae3d07-be68-405e-a129-3f3a0e8cae41 2260291a-848d-4da9-a49c-5361f50806cb 3ca58d72-8708-43a9-9463-a768e629e527 49bb16fe-03fb-4c0e-ac31-8163ea351575 d9bb115d-aa8b-4228-b73f-7035ada662d6 eea28d34-5f98-474b-91f5-b4d6963ccfaf 7ada8fd8-ed8d-47be-b024-e144256576f7 02e29c02-fb39-42c6-b62c-9d63bb8b0dbc 1a5f67f4-d5d7-4604-9aa1-ae9f4b5257bf 2f77c861-f597-4bbb-bc53-af002ebba9e8 e54c0d41-f33d-4e77-9c13-e5fe9be5ccac 5cf04c46-036d-4e6d-bc4f-79104c040018 da1e553c-c443-410b-ad00-9976dbce9e83 04866e4e-7320-40e3-a5f4-4af9fc6a5afe 5969fe4a-0c9e-48a4-b780-f694eadd09af ecede7e9-7ff1-42b6-ac6b-9bcfd46113cf a156eb3c-7522-411b-bbcf-cd00d8988641 4250ca83-9c30-4e09-9a65-9ddf6b9a9a61 29d39f80-5cc0-41cf-a723-b5187860dde9 9e2d5bf9-eabc-43b3-a64e-df038f133322 ca597eb8-74f8-4262-b421-7e67ce65e454 efd5b167-26d7-4fb2-af71-d96ac52ed534 36f8644b-2c43-4bf8-a7ce-0b1e3ee26373 beb11f31-b8e1-408c-a0d1-73458e4d0ba9 6fdffac1-eba6-4640-9a0a-b17d106dfe70 1166a725-97a7-4633-ace8-714e8ef8307f 5f42cbf6-4888-4d32-8b84-cc58e3f20e77 be4545e5-db6e-499a-9754-47b7f394e3f3 0549ccee-08f8-47e9-b0fa-c01b50393e81 725ee7d8-1ed1-48cd-836d-40f5efe9af27 c2a83ce5-c952-4a97-a2ed-66a2b164d3c0 56590b39-47e6-4186-951f-0a77c8fcdff4 13c6a94b-893a-4298-89d5-2ac81c208f05 b05805a0-d12d-474f-a403-bdc2a1d6f364 2b313fde-6b65-44e4-a966-535db7bcd6cb da0f2647-cd65-4971-9ef7-325e92c50d98 31d05957-6dd1-4391-acc5-f3f056b8bd16 7b04a1ba-a89d-4fb2-acd6-89411963c795 e961be60-3fad-438a-a804-b6fa4b9f3c0a 8b7d2a4f-e243-4736-a94b-c682abdf936c 53cfadfb-38d3-4ce2-b085-421247aa7d58 2376b684-f514-42a2-8f53-5dc28091caf1 f0bf4fee-fe70-40be-b1b2-fb5e166560b9 db869645-23a3-4523-ae9f-1d3c7edd45d8 17b56c3a-6a79-430c-9321-e50d6d5d24f1 41d2b0c8-fe65-43eb-97f9-dcdcc6d9c43f 8e5c8b37-67f4-4747-8774-64e5565895aa ce107b3e-310b-4515-9d6f-bfa69cc02a1f c96dd886-9ac8-485c-b9e9-6470e5c01205 f307b768-02a7-41f2-ae80-4e96d596b681 406bddf4-aaec-47d5-94b1-989920c9be42 58b8e052-b804-45a2-8c48-732584df2b25 d0f7a3d1-bce0-4a65-bab5-fa4b7d961503 a12b6036-b9ec-403a-8d37-3c176a7f661c d9f25877-9476-40f0-b684-314892487ee4 86dd6b5a-178f-48b7-8a79-28f6d2487fbd 903bfb10-259e-4dce-8082-e7ab80bc9923 49c3ce5a-7c2a-4cbe-a2d6-6c596ad3c1f1 41ed74cc-8664-4b2a-a462-96e3053c7ba9 295ca610-b05e-417f-9514-d31811469148 6ed43f4f-6af0-4bf3-836f-be5c4728985e 9ac15e4c-839e-41fe-8202-78924632a75c f64c52cd-924f-4d55-99b3-ee7693efe821 2f12abfb-fed0-4f86-a4ec-616aee2f6b15 cb6945ff-f026-4fae-b215-49941789141c f30eb012-b318-4322-b9e0-7c076bd9197d b44d900e-d543-4e8a-9536-bc257d350c69 899f4a37-dc99-4dce-9a94-4b92e4770ead 012462e9-7392-4b2e-a82a-b7c9893c7287 0de74080-d917-4a6f-adcf-04343204a9a2 52613ccf-1805-43be-b648-b4db78584454 988ed3f7-bce2-4c4e-a6b6-5878fe3e8c61 5fa991f4-d9a4-423d-a120-70e5bed6517f 0a39436c-4adb-4985-851a-057ed4a19c32 ab05dbf8-7776-4b97-8ee7-c8b6547229ed 7afe1d5d-06eb-419b-97fc-76831a7120f0 3dba1292-e3d1-4220-8f09-3e76c93eb2fe 340d6ea8-cfa6-4173-9e46-ec8474f05d06 8423af41-69e5-49b5-883e-8c5e79a351a3 678c5e4a-7be4-4f30-a81d-86c7ae57a92f 5cd45435-9935-474a-b545-6e37d44830dc 0b96cd7c-1132-4452-a505-aba9778abbc9 b48f4145-af38-42e0-bdf6-1ab68998f5ff 12084ee7-8c11-4c13-ab90-ced932a8a55a 8cc458d2-8192-4530-99da-9c1d46f9d8dd bc4da002-ad63-4805-a947-b378f05c0813 7f5623b8-476c-4a7a-a5b4-2f26d231e00e 979c0451-aaee-4cd0-914a-fb8ad713ae67 21a02527-075d-4cfa-a005-2917c6c95109 3502e6e6-cde6-4264-9d4e-6de403c7f23c daa478b9-716c-4418-be25-a8afdf2e3750 fa1833e5-41e3-43c7-a9c0-8c030c35f0e6 27b2aec9-a6b9-4c9f-a4c0-0d1b799c539f e2e6c2be-5655-4151-9bc4-54cfe65c4e0b c6b63865-484b-4bc3-87f0-41bb7fb11eda 54fcc464-64ff-400e-b83d-920aaea44e0e d8120685-75c8-49d1-9a7d-b186c2cd4113 f709ba25-05f8-464c-831f-50ad546efd19 bdd53ebb-6bf8-4100-b299-e92d8ac9fe2c ffbd1590-af2e-4937-9d21-5d61d8358e3a bef07f36-4e64-45f0-89c1-db4513ad6ed4 5ee83804-f99f-4578-bdb0-00be458fa9a6 f772b032-f4b7-4196-85e0-1649e009c597 47970cab-00b4-4850-a350-1b9b01ffc874 66a21ae2-8377-4e8a-ba0f-fe21097004cc c0d531f8-eba2-471b-85c8-afe55b30baec 7a23f825-33e4-461c-8994-54f0c021f876 ce771350-699e-4478-9a2d-d1f0c90fd538 2a94c6ee-9fb8-45be-af34-6d146b4679bd 3bfc265e-3038-4ae6-89ab-1c58aa71b950 3d66bc96-59dc-44c1-9522-b3b64f61a472 97bbdac7-1ac2-43ae-97b0-dd0224979784 a8ac3b8a-0de3-4a48-90ff-48a012e46ef7 dcf74f49-08e8-4ad0-b137-0690f5e76977 4996b5c6-6132-4759-93e7-9e0756c02b41 f3130b36-9ac8-4a36-b450-8d5c8d3211a9 d34cbe45-3747-46c8-89bf-069e49cef4b7 fc4da6ca-b84b-47c5-af23-b2fed291d05c b96ef77a-c43c-4b5b-98cd-f817b3a60da7 a15b47db-c2f1-4772-8fe9-623cdbc8c78d b246899c-1150-4d18-9ccd-6b56f9c07bf5 f6f3c7e5-c5e3-464f-87c6-4e830b5cb827 d93ad10d-4bbd-4212-bf80-875443216682 93ed261a-d942-4802-a7d6-12e44ab33cda 87ba12a4-e466-4aba-a347-86e6bc532cbd 9a85137b-a905-4bfb-8a2a-e8059a40e968 35524ef4-9802-43dd-8455-97f56ee2633c bda33b2f-ed7b-42a4-9f24-0dde2b5894e7 69f97a05-30d5-4420-9d9e-b4085164175a af1f9dd0-358c-49ec-bd9c-c1f73a27cd91 8b7aaca9-a5c9-4e59-b07e-2474e5c2da7a 885d285d-ea78-46ec-a3cd-0034da5a7326 eff81078-9908-4fde-abbf-ce77d806ab14 a43e5725-132f-4bc1-9ba3-b8544a01722d 19c9baee-bd0f-48d9-bf82-2475240e3877 fc976990-41e0-4ee4-96cf-70744bd06262 44c5da6f-0a9b-40d8-b850-8ac0d1a6d758 0f90cdd3-5745-4bff-9287-d9022ef6b6ae 240e203d-f348-49ab-be6d-551e6b0719ce 63be161d-3a17-4c43-bab6-e0fd3da72a88 f5778cd9-34c2-4bdd-b4aa-30b8d5adea1d 1fce9a92-53bb-42e6-9778-e7c7ea42256c edd1d439-12fa-418b-81a3-eb3c533a018f d69e6858-fea9-45d4-92ed-9ca0539ab253 ac1ee45f-d2e7-4676-85bc-607e9edd7f4b a23637a1-f680-49ed-be53-aa0356022a44 1ed1aa24-5d0c-4b1f-bc08-e15061d2c306 0bc95e1f-e10f-4a79-b496-05738def6578 3c9d5c70-0360-4404-ae93-1a78e98b86ef f1a8c2ef-1011-422c-9d6d-1ec06e05cc23 9ec8cc60-2f09-486f-a4b7-25b02e6dec84 88bd1ad9-7b2c-4dd8-b529-be68ea5b5916 31fdd591-5cc3-4e34-abfa-fb24fd6bf628 b653571e-ae1b-494e-af4e-ae761c6a4e5c f38aa03a-4e15-474d-854d-5cab9ed26a28 ff1e4899-89db-461b-9247-87917c9ae989 8437e119-d835-44bc-a9fd-a1a12be75c74 8b4e59fe-8ff8-42f3-b211-59c21b5cf60f f8ea865c-4d2d-4f41-bbb3-23d869f52ab8 b9684b2d-2c8a-46d8-961f-42c0eb7e8b06 89c33f87-4b65-42c0-accb-c528c24e51d1 52ff1f5b-9569-4a9c-9e1a-145ae1ce5911 9b3062cb-d820-4c2d-aa7c-a4c1321c7f2c c1b0626c-fbfd-449f-a322-da89ae60e296 cb69e416-70c1-485e-823c-1f4aded12d63 980066be-9425-47fe-848d-d26e35c5176b 4a376904-26a8-4d3d-a62c-ec981abde593 ae7b97af-a708-4aa1-9d63-23f1d4a26d22 6769e843-20ca-4109-a4a8-3b56176e05c2 abc15332-bd2a-4410-8d47-73753ec69005 d44357d7-3509-47a9-b50d-991ba0d51cb4 225332ab-10c5-4d61-99df-335a036369c2 f236820c-8d70-462e-946e-80414acfabf1 f1de99aa-262d-4690-b9e0-57d6a54ef1cc 72551cb4-fa34-4b1d-8c53-e6f42c382195 5270bdaf-5773-4a17-b901-d8e786c0a604 ffb3ceb9-78c0-4efa-83df-30545b14c066 9447c1cc-7dca-45e1-99b0-319ce6fc0cb2 73dca45d-0ac7-4eaa-af3a-8a37c8cb5796 76764e13-38ee-403e-acb8-22bd36b901a1 0bafe399-6d49-4861-871e-b1af6b213052 fac78036-c07c-4db2-8a9a-64e7f66ebf78 d5023c6e-bdb8-41f4-9617-15f64db07d59 9d88a3b4-3f22-48af-bbb8-9b9bc9ddeb41 f6a468f0-6bd7-4082-8cc8-5676f2b6d1b9 35a6398a-7788-4153-99a9-19c55302f44a 12c8b291-54cf-4309-9da8-cec056c6b3e6 22268f35-e7da-477e-9ec3-e059e5ce39e8 299d59de-982d-4917-b009-3896dfcee963 e11c6d46-c2ef-425a-89da-f4101100e54a 39a409ac-c520-4fa5-a714-65dcc73556b2 dd3337bb-1427-4840-a832-5dc5b79d97a8 100646b5-c8e7-42e6-9967-30de9713b99b 4f867b80-71fc-42c3-b294-1bd96f0ad7ed efb458af-d77f-4eec-8626-ae7d90132548 fafcf89b-7ff4-406c-9df8-3374c6079ba5 fbdb5cfe-127a-4886-9240-cd2949ad67ad 7e84a807-fe40-4fe6-8df6-ac7773def30f 8ef8267a-940a-45f0-8e15-79ef5a122e08 ab57183e-69e1-4bfb-a573-a6895ecf0f7a af669bfa-b423-4a51-a0ee-3a83d2498afb 7d55a038-7515-4d7e-b295-5812d4302b87 055e1a11-a423-4529-b8d9-242fd80b0004 cbcb4325-ce6a-49eb-bbd1-2960380f148f fa4218fa-c99e-4b72-b3fb-0618c6237fc8 1cd4ae8f-d78b-4ac3-93f8-424d164ae245 8f841792-9fda-4830-9530-2b1643738677 2a280df9-dcbf-4cf4-b7b5-ce8a44b5a2b4 5aeae603-4aa7-4cc4-bc77-85a5d1a395e5 452ab167-6cd7-4360-9b09-5342658a07f5 74801301-6d9a-43d5-9aa5-e725b4c44f21 2a6608e2-57d7-4f74-984a-fc0b9502bb68 e7e2c02d-8b96-4d46-85ff-b9f120f786db 93a55803-611e-4c04-8159-0b8020ab7a04 e40b2db0-dc62-4e1c-932c-c45c1d76588f 1c8b4373-3b17-4df5-98e4-2b332c9fd27e 5f88f30f-da23-4cdd-886b-c34afc7e5082 a450c1ca-6e89-4a80-b398-896070d0cb36 11c54b4c-9b7c-40cc-88cd-9b402662991d e3fcdb31-b920-4219-82a2-60e744ff099b fa0d064c-06c5-44b2-a665-d69489190e45 8adbc317-6ea5-4a99-a042-036f4f74faf9 d9e489c5-6729-404d-ba0e-22d2a36908aa d39d76c8-329a-4cba-927f-32934fe9829b 2092b05a-f7c1-4fd2-b120-2f4608afba29 b0ce2126-a32c-4085-8241-a47a834c036e 74544445-1fc4-4139-a5e9-bec1c4e650e9 47667de7-9aca-4f3b-abfa-1ad74bc33420 6535d38b-e5c9-4c6a-98f3-c2d8abf8b275 d9fe28e8-dcc9-4152-af91-c72433fd8943 5aeb3886-1d9a-4472-9f2b-69f1ace0c227 4b8e12d9-43e1-45e8-83d7-991d1eb920ca cd82b49f-b1a0-4483-b61e-3b1a97b1a4a4 8ba8c900-0285-4433-881c-969151eddfe8 1c78783e-433c-4bc6-8450-f0e9f6f45770 355e76e1-927c-412a-af13-ec6991ffff7f 89b8428e-95fc-4021-83f5-2790881351fc bc7bba93-1afb-44bb-838d-80c77855ac59 8b4b62a5-e4a6-4c57-8597-e99a62980174 df9b7988-fea7-446f-92bd-afd0dc645ab0 abf07d54-8d88-43b0-87ae-fc9220b1bb13 800fa780-83fa-4dac-bc59-f0c63afb3ed7 cfdd2709-4b3f-400a-89c8-3b870b4e18aa 39427ceb-2578-48dc-ba93-06f033da61b9 4306b39b-d31a-4a56-98a0-327a4384f2a2 f79f37a5-c505-4f09-881c-e08d96a6adb9 7238be6c-8cf9-40f3-b3e3-76b8448bb0ef 53bb4680-2a55-47f1-b185-f9296f9652aa 52abface-72ed-40fc-8d3b-8415d9a9b78d deeb2e51-dfe3-4783-8616-a6ee932690d7 22535622-7ebe-4097-a9e5-2eaa98988182 70a10508-88d8-418e-b306-5a6f3627d431 0cdcb66b-71e0-4f44-bb21-0660ee282057 69baefdb-adbb-485d-8db0-c0ac3468c358 372ec1eb-994e-4e6a-800b-b1cfbda53b21 21de95d7-c2c7-48d0-b680-d133aa4a3ec8 a820f47e-6928-4a9f-91b3-0e23a82a8bd5 4f3ffc9c-d102-4f5b-b749-e679fd646370 4f5a2bae-2b61-43b8-9575-f06a36389f77 f91fdd53-a4b6-47d9-b23e-4298b17713da 145973df-6ca8-4688-aea3-c997bc2e3df2 755b37f5-a4eb-4234-a057-e5e0f41292cb dd40fd1a-5dff-46a3-8b9a-b7ef21bd6dba 9d36d814-6bc9-44fe-9962-727ec97ea211 6fff7eed-21d9-4bba-8b0c-425a92400230 72251371-848c-4e81-b7e6-edf0d6c4a960 1d97ca44-2e25-49bd-8174-7820941589b4 af0ec937-68b7-4cb3-aa5c-3ed6456bf2a6 ff0bb511-16b4-48ef-be44-fa9bf3b94419 cf09d6d4-c768-4514-9676-8bc50cf56639 b65f84d6-b619-4e4e-8b57-e38898890249 920d6689-179a-4bcd-ba70-c06103b0edb8 7e5a59a9-8b3f-43ee-a99a-e7196c354f11 d90a6994-b948-4a68-b7cf-aba42ec8ffab ff1db197-86e5-4b0e-8b45-a0ee0142eaf0 5504402f-1c82-405a-9ef1-2891bc85da46 07be6ff1-d0a0-4d55-8f70-55f2dcbbdf38 a46c7447-d302-4edc-b382-85f418942b6c 0fd2cdc9-7648-48ba-b231-25399554f672 667e9242-40b5-42a5-9dc4-da30cd0a66f6 78aedd54-8e58-4e0b-828c-ca6cc8a50ba8 e06f1527-70cb-4514-aaaf-d9a5e02c0e29 1ea2d6bc-4c55-44da-b1f6-7c596f4c05e4 74e3293f-a4e7-4cb2-980e-741f83e734bb e3226c07-120c-41ce-a4ff-365c8f2eecfc 9bd409c2-46b1-4dda-9f73-ec91eee1bf6b 518b0c96-dbfa-4958-8c63-b0bcc8e5a483 303f988b-e239-419a-b6fd-604b374c14b0 1f662676-a523-4dcf-9508-6c0fb0c2dd30 d5a30ee8-1886-46b0-b51a-f5708725eb4c 1890e629-39cb-4512-97b6-b2e8fbd8dc75 2bf95f38-5b0a-4a68-a3ac-a292933e90c3 a171125b-02d3-43fe-8bf4-1025185806db 2944e311-646f-497b-8b72-bd7f9708b4e4 34f8637e-f3ad-4e9a-a03f-c9e95f9ee291 0f18a517-be53-433b-b03c-395a22d2dedb e8622cc4-5bf3-4acb-871a-79efc4115e83 c2c9998f-15e6-4713-ad77-c7ff9d8c5f3a ef81d361-0b20-4f90-9501-ff279e42888d 5aacba36-2a52-4608-88d8-e6e959ba3d4c bb0a0c8a-e3eb-4af3-9617-9473b2f6183a c11645d1-ec49-4371-9233-d897beac16a4 5b72e78a-6359-453b-b729-79d7873cffd6 35d8b32d-0678-47b8-bc54-243ea1f9baf2 71bca9a4-8bf7-47d9-a6a8-b23e790b9cb5 04ce8c93-a4b7-4f48-b6eb-cb4d737c1267 815348d5-1efc-41dc-8353-99e4c01262ce ca9dfb9e-0178-48e0-96bd-e56a03ef1820 07a609e6-e541-49b0-9e47-e5e7727cea05 feb65ded-5a99-4892-b417-665ca8305891 96b253bd-a0c3-4965-91c5-7f5ab2100a56 d92f8dc7-c80b-4293-b88f-9b17d6a89cc0 e1156e0e-ca59-4e03-bb6e-d782b0b701ee deb63881-5a46-403c-99f2-425d5cd8d885 08628516-b9b9-4c83-9bdb-93ffc4d328ad ee9ba5d9-e544-4343-804f-14836a9d27d8 3f69c4e4-e6df-4487-9ebf-1b2a7c76a24e 8df7151f-af9a-4885-80c4-78a2da3ee230 f8dbd115-0e6a-4611-b92f-f62e09c59fcd 154b75c0-a451-4fa6-822c-76509cad44a5 88d7df45-b268-4dea-b7e6-42c8f1d053c7 b13b21c4-ad38-49a3-a0f2-66990e2252a1 0aabe7de-193e-4c1c-898e-01a3b402a282 71b500d7-9656-492d-bbb2-842dc095aa9d 707da033-0e62-470a-b945-6f312155fe8e 810d0c6a-ab3e-486e-8e28-c80d7a908867 e1a6877e-5c8e-4884-b5f8-8aaea27916f1 fa78e1bb-679b-4c7c-a379-b6f83ca5cc6f 421356cf-3936-45c3-8afe-c71e36ca6ea2 6f4d8f6b-af46-42da-8348-63bb7dba5e9a ef3bc908-0248-40f3-bae7-f8f0d450b83a d5e4f5e0-25ab-4ce7-81e8-ce6006992cd2 bf4bd3df-186f-417b-9b74-a933b617ea66 f60e78cc-568e-4804-ab77-64b0a2657374 55cb09c6-a6ea-4f25-9be8-5b82783bebec 9cffa95b-54a9-418b-a740-b7ea22d9fd79 a09edc16-6098-4849-ad81-4a1f8a8a14bd 1d5ac466-93ee-47d8-b4c0-1029c58ad472 6a952785-5fed-4275-a8f3-7b5832e49999 b3f5b917-0af7-4d74-a73f-b0096c76dcbd 6e93ea08-84c8-4600-87fe-d40061d45ae4 ae36168e-e6f8-471b-83da-235d686595ad 649d0f26-f3c9-4331-bf6a-4f0962065ce0 6e9458e3-15d8-4e6a-978b-33160c3d4797 32fdb54d-205f-4065-a8df-f53f049dfc58 fb05b9da-274c-4880-b3bc-5840e5cfb8a1 edfccf77-81de-4782-b4ca-631d50266620 997295d6-173d-43d1-b8f8-e5b5336ddf83 4034c2c8-04f0-4a9e-b83d-de5c3c1f9640 5b3d8b2b-c0bd-4494-b7bc-99aa3b589851 5b8b44be-ad11-41e7-bcc9-e0dc0988736c 0d4ecdeb-9d9a-4d25-a441-1c51b81839ce f7a30263-d07a-4979-a523-be51f87d9aa7 27e5020b-f50b-493b-bd87-2afff46502b4 a65a05ae-b6b2-4eda-84d4-da4ef672c926 16d467af-5363-4d4f-96fd-918b8254bfcf 6593d228-9494-4c6e-bd97-ce9c17e2ad77 d01d674d-c9e8-428b-a7bc-b9dbc275f75c e4b9661f-0635-4542-8a75-78b7d7a8f7c8 0602369c-76a4-44d9-a050-d544d6b124a6 5213a9ab-aedf-4b48-9624-f45c2ceacf48 ef5063c2-5adc-4f48-9a3d-819db03cd6f7 6ea204b9-cba4-47b4-8406-e4ce4a50fe72 62e04c39-6e9e-4357-ac0f-086904019c55 757623d1-5fbc-41b0-8fcd-f6b5dfc0d13e 675a5c8e-ffb7-445b-9ed2-54badc57aa53 38986b8e-37c3-4ab0-80f0-6375f7f4162b 224c31c1-09ea-4bad-a87b-ae092f50dea1 9bc4ec10-ff3b-4b7d-896f-abfcf6249c67 f12f4d54-4d7b-40ac-a3f1-3f41c8baaf8b 0c407f27-f0aa-4c35-9ef4-daac640fc601 61787833-b4fb-4da8-8529-8574b98085fb 2a27f67a-ebe3-45ce-9f80-6c40260e7e20 92b49b7f-0e82-4490-9d54-1e76a23f971e 42f3a9bf-3d43-4644-9321-ebb127df3478 af60dccd-3a79-43f4-a667-84480fe78035 be2ddeeb-8de6-4662-a345-46e660c946d9 a78e061f-1a3e-481d-9695-8476cb8fc5b5 22c3e175-b46f-40c6-a6f3-03bf66e55b99 43685c55-8f19-4701-aeb7-82372e0d2e14 53456be7-63f0-4d62-9821-ad56d25fa6fa 7e3c2039-2112-45fb-af3b-d01234178487 c998d462-56a1-4119-9512-f9f214cb93d4 cca1d134-266b-4c63-a9ce-a56b15e604a6 aa3b2616-de37-4c94-b9d1-c499b808eeba 1f896422-ee21-4e2e-8b57-bead025650fd 71d7f16c-1edd-496d-9ea9-1be7b933a552 31ebdab2-68fc-4544-8f70-6274556c0344 1c4ff1aa-a228-405a-aa8e-82ed16170f2b cfb27686-0737-429b-9f54-15ec8d3de348 04f85c79-92e1-48ac-8d89-e4d77c5392c6 f5fe7a67-93eb-4a20-b1f5-78ab9e7f5562 64056575-d9e7-4d76-acbc-4de82b2dbfe1 44819071-605f-4898-9a29-2495b78e6370 befca951-62ec-435b-bf82-ed3737e6807d dfca6cd5-bfe8-443a-81eb-833f71b867d5 deafacb4-7d34-4940-8d0f-9f54e19141ca 1ba139be-ef4b-44a4-b58d-80e72b640fa3 94051b0d-e56e-46c7-9f7e-f8c49f1de285 08dd0a3d-746f-4140-a243-7293b1e4cfdc 47d2172f-864d-453a-8750-a3070d9f2344 596b19e3-5e6e-42cc-9f7d-7ece5df8a148 4445f36f-8c97-4d79-a686-8c5eead31dae da75f09e-84e1-4aeb-9080-3bb60c6a827a c8c18bea-4316-48a9-8ca4-ead5db4dda32 96c47bbd-56ce-49a0-ba8c-5186768a27db d296bc46-cb56-4f4b-b19e-69bdbc65fcce 2b2a49ae-5c9b-4e85-8e85-4f9b56f921ce 497cd8fb-7eb4-4cb3-883f-0facaf2a0540 8acd88b6-bd7e-41ec-ab81-0fc87487e861 d07930d2-2ce6-4fdb-adf5-89b866bee230 63cdc806-2a33-445d-846d-5ba9a5a7666f 59251ec8-b251-42b1-9ed4-a474394fe34b 1ec15761-66b0-4d90-9245-aec1f249c482 b2d04032-3804-408c-8e48-17afd5c760c4 29bd2e2f-f0a0-49cf-9b89-dfa1f8484ad2 1c49e1ca-e2bf-42b0-a3ef-94916dac0e59 573bf376-0db5-4441-8e03-5d97b1940c94 fe168683-4551-4e24-bcfb-94280008b3be c284e05f-7a48-4953-9faa-dba9a8509f28 a16b191b-a9a2-41c3-bdde-cd14a0cd492c 551a5785-1431-47e4-8111-b7e2aa577035 8fa6f121-33b0-469d-97eb-f22b7dbf23ca 6cf7099e-2c79-46da-98b0-af14b37732a0 350af78c-4170-4a73-9d43-229ae768228e c24fed5d-fd1a-4e3e-b229-4b17b70198cb 9a563cd3-3521-4b43-a3e9-0d665207bb8c 76dd3675-36eb-48c3-a8b5-b40336f9e8b9 522d140a-7d53-49af-abf8-5ded3bc9fca6 4b3442de-8cde-4f01-bbf2-eefe4fb681b7 03698652-bb32-4838-bca1-01097c645a11 1f8f0f1d-a4d3-414c-986e-770de64d014a 8ae175db-723b-4e09-90a9-a717d1bba74d 65ef4209-c179-45e1-8ef2-f9abbae88a05 d17c66ce-1e70-4064-87fd-06d342e7895b c4cedf32-f790-4b8a-8d22-e2ff376b9e5a 87facfc8-be2a-4b60-856a-1802f874ba8f 32a6949d-ba59-4afd-80f7-cc9f169f3648 7887797e-4ec6-449d-b9e2-392da5a6a94c d821f8c4-a899-4fc4-b2e7-ff985039934f 89a41c8d-5e7c-423d-ae9d-2e2b062a2ab1 f98e90e9-416d-4dbe-9fe8-9a581dfc1484 1661c3b2-b534-4165-afc1-5a12facbf381 e46de196-11a2-43e3-abbf-89c6395037ee f2bc84e3-9b9a-45c4-aa41-db649da16522 54167343-9800-4dea-9061-ead847a85d95 fdfc1afd-1381-4c22-a62c-1dd3ae5c525a 0490a43f-ac1e-457f-a758-d4262f4336f7 fc62a630-7467-4efb-bd9c-8655b00ab218 b896f614-bb57-4def-b1f9-dd82bdc6bc5a 343acd98-57b8-4b7a-8a18-6594ec64fbc5 c1d12712-9370-4f10-9c0d-6d1e1620d345 10309bc4-127d-410c-addd-88a1f328e302 b3756748-3a9a-4787-a9f5-148a7d5e765b 217ba153-a374-4019-a8c8-3d57898adf92 01b8ab28-c372-439d-a17d-6dd4be08a440 0ba83b11-0f13-4ed0-9312-e3d5ab78d70d 3129c635-3e28-4c75-838f-a78f4c706e4b bdc1369a-87e3-445e-b4e3-c370b90cf29f 3fff88f5-76f8-49c2-99d5-f267a07ffb3a 3f4c69b9-fded-43fd-90b8-69dec2a790ba fff09bad-b996-41b1-9b12-fcace7b145c4 9425b03c-84fc-4f0e-8cdb-71d516e94f3b e24760c9-e229-4b15-825a-6385a0bcec77 13db1d8f-09f4-4d9b-97f3-b798bffc00ac 39976287-c14d-4434-84f2-efa0417199e9 cb9b4d58-f699-4cd7-86f7-5ac83812deeb d7fadfa5-ab69-44a2-9d3b-42e850b6dcd5 7efac02f-f7c3-40a9-84a5-3d77255c6191 d3223639-d1c1-479b-8efa-315a9d2c485f 49551e6f-0090-43fc-aeb8-cb1e8cff26f5 9adafa39-9572-4112-91ae-ae4b80469b9a 41d0853f-8b65-46d1-9a47-3aeff63aa5fd 0550c68a-201e-4fd9-a590-98552cb9c171 73fff64f-6823-4236-b656-d0e17c4d3e67 537fa267-2fc9-4712-97c6-bbab3bf0f513 8f5cb148-9f4f-4d51-be7b-d1d1dc664296 f0ed0ed3-5df4-45be-9965-3925cb7f3aad 76a65de2-e052-43ff-9d7b-ae18df3936b6 4b1400cf-eb58-4a35-8f2c-f46430689217 b8a5dab9-7235-4c1d-893f-05baff7e1834 5c5756b1-506f-434b-af2e-f2b9638114e0 6f695cd6-34cc-4054-8304-26b1e77c245d 9b569c0c-7d64-4d61-b900-12640219cfef 05a7ec74-29ef-42da-98a4-e125e6feb1bc 0ac296ba-1163-4460-9785-288786d89506 b74c5164-90c3-4c09-a7c2-93ccea23a5e5 6f68a6d0-3cd4-49b4-ab82-16ef681fd0d9 57133ff3-9705-4922-b68f-c793b0d27dac 0b864e82-7e70-47d0-bdb6-08ea7c471dae b3fd9beb-cbb1-47a4-8aa7-9d61b70ff85b 8d427f36-6485-427f-b004-143990402a20 f9699ab6-51a6-41d0-8eb8-95a0a91d5a4b 032443a5-2d4d-4b73-9c53-8f93ee0341c6 ace63a95-b0d3-4208-aaa8-84f6bee1546a 8ffd6052-5c8d-4469-a29b-64e7a53c14b2 5c62f254-7676-440e-b7bd-332b354802e9 1bb03552-2b72-4bc9-9bab-84b5350b2dd8 5b8a43fb-c6d9-42e9-843b-2d86d1ed5fb6 b80a939d-c531-4700-a462-3e9fa8292d4a 0ee8343e-1902-4a03-9060-dc1d08a5cc33 bb20bbf3-6839-468c-99f0-01a99daa1830 90b67db9-2ec9-465b-8ae2-c5c0a426b6c3 17e48bef-65e7-4f7c-970f-28b7e6407e84 1a8d99f6-1f0e-4653-ae49-c7fd03e66edb 1f7f434f-1ad9-4246-84d9-bdd9a83a06bb 4621c991-c447-40de-9bef-29c9c173a26c 7104bc7f-c6af-48af-ab97-53acf832cf32 4458fe36-1b84-4781-88bc-ed05df5ccf09 f60d9b29-2aff-4e9f-b2cf-206c52e86760 8314559a-db6c-44f3-b910-b5ea8e3b58e0 9f8df32a-4b68-4250-a58d-12e6ecad323f a160b346-d4b2-4786-9747-5d2ba6b07148 4b6d1324-eafc-44b2-97a0-3c06f4a7ee04 57ae0ff6-b686-4ede-b330-5fae3d6a08cf d40ee922-c16a-466c-9a1f-adbbe27f5f71 49ceb552-e0f4-4cc5-a510-cf32b76066bd b4900cf3-eb48-4875-a84a-6f7ab249c201 5018c5ce-e5c0-44c4-bdbc-1597a4418c72 6e4ac579-c35e-4046-9f67-f794f0df6f6d 779feea9-d797-407b-afe8-3b64fcd5f12b c3e6d7d9-2761-4697-abf0-06b73dbb567c 9d51e517-442a-4dc8-ab26-666df4e78c9f 91d5e3f4-2c8b-45c1-8ec3-ed89f83cc991 674cc749-8447-4c84-9694-6bf64d3f9c08 b9bfa58e-8971-4420-bf58-eb94f377c10d ce7d1c67-a704-4b6f-8139-777cf9d5dd25 0995fc78-4d69-42f4-a587-06ac0636cc97 f9c7874a-2aea-4a09-84f2-793850571269 e6c0db50-b775-4142-bf15-6386524af544 b561ceb1-c5b0-4b1b-af4a-6c6dcb0cf637 3cf7e772-553c-4862-85fb-0409e0bf44b3 d4ac607e-4e3a-4b9c-9c08-246af357f703 77a856df-d497-489c-a2ac-0baafd464cc9 ecfdb23c-7f02-402e-8da5-95b786f1b6b9 0a6c7137-6001-435f-b563-c6093dc79184 50ea96a6-bd4e-46e6-9ebe-b7896d4bc5b8 f19d490d-a410-4df7-8fd2-d1b7b387b5f1 a73f7421-1fba-4d9c-916b-a94d572a08c6 9613b93d-d4e5-4c97-941d-630f2c4b16c3 adebb3d8-5861-4f3c-8efa-2928e4ff312d e3292d6d-b193-4bd9-a7fe-07ffa007953a 2567280e-13dd-46f4-afa3-9bfcd22f27c3 4785d6d3-a08f-4fd2-ab4e-1fdf047eab0a 9b41eceb-2a6e-4814-8fa0-891307599fef 4e3af003-f297-4180-8645-c91977bf204a 9972b09c-ae8d-41f0-b9a1-112119946003 62f4b0e3-d19b-47c1-886f-7f4ebeedd670 3ce49380-029e-4a09-ac8e-d6e4bcc3942f 081aabe1-20ec-414c-b965-344fb2e55297 a65d4aa2-9747-4433-942f-63f183c6f6ff 6ce674a4-6015-49bf-b736-bc260cdf19d1 1a0f8c52-d234-408d-ae5f-85940644b589 bdb7be77-a768-4095-a6e8-112d90c3d251 3f45688b-bcab-4faf-9dbd-5624a4b9b220 2602bddc-479b-4b38-8932-c0b2b1d6d1c9 040f09fc-3fe4-42db-aaa0-04d2d9cea24a a4ea3c1b-5b29-4ddc-afd1-ecac5d9767c7 c71cdf8d-10cd-4eef-950f-1b1270b9f82f 297a6a3b-0c17-449c-aba2-35a5f60d25d3 c09c2418-72c0-4945-8db9-e5332c08a8ea 8498851c-878a-4f27-8b27-3945ececf5a0 e0c74b61-8f24-48fc-b5a4-dcc65445bc11 3f1b05a4-6b41-48ea-a7fc-3e65c1a47f78 993e31e4-77d0-43ed-914f-b76339f49419 787d9ac5-3f65-4938-a893-59586475254d 81a1bca9-884f-4769-b2dd-d37e1ff4d7e0 66c80395-1169-45c4-aa09-47e79975d435 44c7589a-7ab7-4992-ab64-4b93fdfbc875 39f82423-f5f6-4c2d-86ce-63856d795ff6 b9af3960-7238-4966-872d-e134be0ee632 9c7faf6f-41ce-40ef-b850-99a255987f69 e73386eb-2eb2-4183-b442-fcbfc368b460 1c7cd1c7-f6a3-49d4-b714-9f49ba29c5bb 49c11dd4-1569-4380-9f22-c54f00b6a515 599f3a5b-df1a-441a-9f51-9decbf701051 e81c81da-bb2c-4d10-9fa4-451f0c135a5d 35919e02-f2c3-4d01-847e-749203a173d1 733fc91d-b57f-4a6b-b281-7ae1f2a3e989 95714792-89b5-4d5e-b566-095270a1a055 830ea75d-70f0-4bb4-b8b5-6f4f3c09a706 1ffda627-8cd5-4b28-99ac-09e731f8dd29 38f9b00b-3853-46ba-a9ea-54e5a6149f22 c1394eb4-4e18-4e80-866d-c97c466b935f 2ff9ec2e-c7e1-4e4b-b6ef-0687d6ce973b 15bb2cf9-e948-43aa-b2c1-ffa658cac9f0 d714b91a-10bf-42a9-8f9f-140903589f81 1c9da399-60f8-4d3e-b98d-6faf9b03c473 1b4b9a1f-85ae-4f88-b983-39ab57a7530a d78432c9-7f7d-43d9-b02d-322418a70778 8112e0d4-ad8c-461d-a74a-73f16925e610 ad12093e-8b94-416b-9c1f-7d433475a55b bc7301de-4754-409f-badf-793192c437e0 5d3cb8f3-8255-4004-8540-2a010b1b21d9 bd9f6b04-93ae-47e1-8c34-eece21cb7447 cabb40a7-7d45-412e-bfaf-54d7137afd12 99582c29-df62-4e24-9d1a-4ad1cb03b41f 00483c0c-2aad-4893-b768-004c3081dbe3 7cf21f7f-7952-4871-abce-7f71fca1a2b7 4e26f49c-be1c-4b8b-aca1-1f143a5f9de8 824afd9b-ed1b-4b3a-af68-c8021492ce78 212bd728-9ee5-490e-bffc-4a17b722eebf c69ad286-98f1-4c33-8c92-512928e3e825 6d49e1b0-f414-487e-a4f5-f9f37df3cc8a 17c9cf5f-b09e-4caa-978a-ff65c279895f ad7e02be-0302-4e97-b172-95c937894894 027529f3-9a4a-42e9-86c0-96e79382097c 4ec8508d-ce46-4505-b366-98356a3c32ff 5cf860d1-5bb9-45cd-a2fd-7b1259c0acff 0cec7b05-1a74-4ff6-85f6-58b60e5fc536 d379d3e6-a52d-4e03-853a-9b38e4259a62 66e3bacb-f8f1-4efb-aa47-b95a326cb088 a91f6b70-dba9-45ec-8b61-037fa27d7b31 628827bb-fd6a-4c4b-8be2-d87a472d3ad2 881a3757-90da-47fa-bb13-b18ebbb3d723 462681b3-e72d-4941-b258-fe05f427cfe2 5c383670-07ee-42e9-9682-17683cf1457c 1b412d04-2cea-4c65-8afe-518102c1c0ae 27ad1549-4c54-4c2d-92a0-9a70bfcdef81 89f9ab24-0dfa-4dd0-9c46-5efa7c6f7607 f36e2205-c9c0-4835-be43-ecc24dd13d36 3de394ce-0fe0-4cf6-a90e-c4cb19e2303b 2ed272b2-d5bb-4481-a173-ce249ba84b00 bfac20d6-467c-4c6c-9353-607f5ce56298 eee39948-5a4e-460d-a602-24983aef771b 3d04da2e-9506-4991-99cd-26b0803cd852 78f00f4e-5366-4d00-8678-6a9fe30384da 9bc8cb15-effd-472d-96e6-5fe3031fefb6 baf593eb-eaaf-4c60-980f-45d8a1ff0d24 a303a78e-2961-49fe-ac00-a71a286ac173 7388a0ca-a200-405f-922a-15531e967d39 f6d4eb6b-d456-42d3-8654-adc17fc7864e 9fb0780f-a78a-41cb-ab8f-c8b7c3ba0fef 3524b089-621b-4fd3-ab9a-8468b7b2002b 0a0e8c15-fdfc-4623-8c2f-c2540de4d5cb d6b5b0b3-0e7c-43b8-a445-61537eab9381 6437acec-25b1-4769-80e7-e98d82224767 293bb1f6-6486-4520-8274-e23d623aaeeb 541fdab0-f32a-44ab-9eed-6336bdbc6bcf 2840cdae-ef50-4f95-82e8-0f62315246af 9e4377b8-9b87-4959-8931-d1fbe18cae89 559ca18a-255b-4c45-97c6-3a268d4fa2a5 02cfef62-b917-4299-a101-05ef20b4e627 ca198cbe-7877-4841-8206-5186c8b49f60 f0f204af-2c49-49c1-bd96-32938d2a421c 9c3247f3-30c3-4af5-a1fc-e24a304b0833 493a9093-93ff-408f-8717-ec9ec720d034 0e5e0bb5-df6d-4072-b7c0-66abd900acb8 0e50cb75-ba7a-4260-af78-f30d1ff660a9 7ad820ec-a094-4b5a-8a54-77b2421dbc0c a9d29065-e028-4422-9a16-a22b99024d5e d9b99e55-04ac-4217-b1eb-5bd4d075d5d6 8554b79e-bf2a-455b-a536-498c288b1f74 f17cac68-f8d2-4f6a-bc1c-0495bdfad048 d831daa6-9e5f-47e3-a9e9-3578be301ebd d9abaff7-1280-453f-8e2b-34430f59b6a3 dfb07be1-e9cb-459c-90ef-57037b2c0c64 4bebd53a-39f6-4fc7-a701-fbc06c161770 83a2a073-4c4f-407c-ae99-901b89fe344e 95cec9d9-c696-45dc-ae1a-976c2f97d12c d18da5d1-179a-471b-a3de-48e6641c7585 94a97e2e-d6ed-456f-ba34-5ba3b1650586 4c72be89-ec1f-4c77-ad1f-ffec956bac20 26a593cd-aa7c-471e-a5eb-12d440c85949 e284a2d9-bf38-4fc8-825a-31fdd7ae5ddb e9238ca2-ec23-4814-8b9c-a4d57050316f 4a2004ff-6468-4086-8e97-d7d9161e6cb8 ff4d0af1-0024-40d9-8ec3-7c6555b7fc20 89f216e7-2fcf-44d2-a715-202394632671 3180902c-0c17-49fb-9457-3e1357da3206 2197e61b-69f6-4d07-a0b9-d7eb38d0d31f 971ebfa6-01f3-4312-bf1e-560d96602121 0981974a-2894-4f2f-af80-6351649b71da d9d849f7-371a-4c23-bbf0-bb71ec7178df cbd551ba-69a8-450a-936f-5fc3b83986f2 878b708f-7743-4edb-807b-c06db5cd14db 4f73cead-1fe5-4204-9f18-2859c65551b8 4f7c31eb-ce44-495c-8204-25ca1678aade 4dba5cda-a085-4e85-a7b3-e183d04f2cd3 6600d63b-54d4-4164-96ab-68ebd32855d1 f920a3ef-cd86-4065-84df-0e10aa53f058 b8af7b88-70ef-4f43-a090-55cf963e39c1 3c343e67-3c8e-4a5d-aadb-3c20cb95583f 3512ac52-d6bb-4bed-8f2d-0eec83ca4ab7 4a89954d-d4c8-4283-b5be-a7b18e8cd99b c7ba6ca0-192a-426d-99b3-55e4085dcffd 5d138f64-6993-417f-8991-07b2434c498b 91eca80a-e133-4917-b732-44028a20895a a19eade5-f0d4-491c-9353-ef9220ae2a46 db36961a-ff62-4c8b-a353-bdde5694af12 a750e6b6-cce9-4a2a-8db1-069ad397764a e0e46e45-48a8-45b1-ae00-df3707838126 1a85f02f-6714-4bc3-bd80-74d1c134b05d 86d705c2-d30e-4d58-9d23-35a0f13ccc94 180193fc-f0f3-4960-ac3a-bc753b5389d0 258e2fd2-ffd8-4b47-ab90-dd44b2397655 efd4dd6f-1e4e-4ff9-b59a-1adeb8dc1018 7944db6e-d04f-4779-a015-c7debd88a5a9 50380c58-b186-470e-8738-ea82d9a4e750 c3ce2983-9440-40e0-a27f-808969b4e60a a837b40e-1ab0-49ee-aa1b-c6d139ce04b3 91744630-1c3f-43b4-bef5-68d6ded78567 66b9bdda-6ccb-4995-b55d-4506ed96200e 5980bba2-d3b6-4951-9ed4-2be6bdd7a049 52995562-1f52-4f1a-ba69-9c288632012d bfb77fd6-47ee-4869-a0d4-5acdc1bfd57f ace11970-6d4e-4eea-8b8d-24eac198e37e 68b2c325-f4c9-4ba6-9038-e6c26a741537 fef6aa0f-66c3-46f6-849c-30ae40c9539e 89fef1ed-9535-4658-b7b2-a2bbdea7d3d9 ad4bfdc9-a4bd-460a-a192-6d8ace5bb408 c66e17cc-0210-4988-ab64-39cdec056097 584f6b12-9cde-41c4-a490-713337a5dcb1 3553c5d6-4ba0-42f9-9d8d-7c4c44fa7de6 5f7219f5-a0b7-4936-944d-21435b336482 9fddbcc7-16f5-48e1-aff1-c74f678d5040 fe08e82d-a7ff-429d-b9bc-416251df8740 48ef7180-e7c9-47fc-b150-2d7de180f685 5d4a3c23-548e-458b-992c-1a7b65ff8b9f 98775526-985c-49e9-9a7e-12710d9b55b2 63fc56aa-d970-4db2-b8f1-ea69d4db8c3d 407c4e69-3272-4d2a-9f72-6e65be8d3e6d b73f787a-4fbd-4e15-8b1b-c134b4f0fe0e 3fcdd2da-202d-4a16-82ed-78d079534d48 0fca772e-ca18-4592-a22e-f25a2bda4fdf a457a679-3f07-4a96-bf4f-0427020ae802 5adee072-0463-4b8c-a5b3-3e607e0f5042 e5d36792-94d5-4282-bdd4-bf519cc397e3 239448c0-2580-4a1b-a31d-a5fe13b43101 dcd38a72-e18d-410e-9bb8-cd0542106269 d13cd350-13da-4fe0-859b-1c824a3e0e13 e5d6ddbb-dbf3-495e-bb24-1f486d7b200a 64498a4d-7b2b-4355-a0e8-9a84c7880e89 444e4bc5-6ba8-4e5a-914a-04f5c56a0751 8936c60e-9c92-4267-97dd-a0048ede7e64 b815f9c3-a7b3-4d5e-a674-e4983feb74fa a7f45739-afec-4622-9536-4fb523726bf7 668114fe-505b-477c-9f3f-7a498248feb0 60327a02-e8df-420b-98ee-c215c5d12229 93ef777d-9616-48bd-94c2-e74997da4c35 ee3b03a9-b5d1-4e25-ac34-cd3531ac7108 46a5ff18-a38f-4a5c-87bf-032e91d9e018 d3edb611-603b-4f79-b04b-d55779a03925 378c07d4-6a73-4842-a845-e724a5279bcf 73266c7c-f8ed-4294-b753-5f0d924bf861 e0730b9c-3f79-4680-a7e7-33b58632fc2e 53023efb-5e04-43e9-8c1c-f4f100a2609f 31bc548c-fb97-494f-b15f-012607c23122 bbdd2f94-e7c5-4a57-bcf4-54d75b56fa9a 68859a94-fad4-42c8-9f24-6d272b1a054e a2c59605-dbd0-4294-81b1-a68952cbf78c 6b4f8ef5-f32e-4073-bebe-c35f940cf4e0 94fdffce-0ce8-4518-a6b1-db7c0c94644c 1df32a83-5745-4cc0-9caa-83b61a23d313 54af5d9b-d72f-4da6-8574-3462293adf0e 4e925e8d-79bc-4b7c-b9f8-10821e51f611 7980a980-6b99-4083-a70f-34c15dc1dd78 5058afcf-1af1-40b7-83e3-e8666d1550b1 4b223207-3db7-4585-8deb-96bed960b1a2 b0e16e07-7d03-4d95-9651-7fc67d6f68b9 edea64a7-24c5-455d-8de7-ab04cbdb5480 edcab688-4451-4b37-a5f0-2e16a5fdbe78 197cdf75-7ed2-4475-83d1-ee575b75a612 426dc8a8-2f53-4c7e-9ad5-705377925976 bb032c7f-5382-40f2-babb-605101557df7 44a2c197-e96d-444d-9a16-de4f53400c73 bf485f11-a58c-411e-acad-3447c3882f0f bf101d15-1fde-4c64-9051-ed9688fb2cd8 2a8533ff-df86-4776-8660-494650ecc85c 2ab5bff4-0b12-49ef-838b-f4b8b1ffa3e9 408627c4-db7e-4f87-9875-176a9e945098 b538cb22-08a7-45f1-98ac-5740c63311ad 6bfb1273-de96-449a-b28c-2c793bfd9fa4 879a9c5c-894f-4509-add5-c790a9dda72d d8013a52-5157-4e7d-a823-be65e8c88a70 b632c975-9038-40f1-aac3-3031501953ad 0560aa14-65e2-4be6-af83-ff97de347d26 f4b52d64-34d9-4fbf-94bf-2bac827c16fa 70b8b66d-5c60-4ba4-8475-6bd73b865eb8 f82b30e8-441d-4ae3-a42a-bebc23c8af0f e472ab00-a7ed-4035-91c5-4c6780869f3b 3bbaa1c1-ed7c-49e5-84fb-ba0accd2d6e3 121cff30-d2ef-4b6b-92b9-526312521bbd aa149851-03b6-4a82-9575-699ce5666849 8db11271-b7c6-4afb-bf0c-1ecbf0bb2d9f 95d8bf91-3ff1-4436-bed6-3d36a99e79d2 3f326f85-afc5-42ef-817d-9595164c5c49 4291b24d-0770-4875-be7b-f04dff271e6a 931c4c64-8c6a-4de7-8ea3-e484060430bb 43e25ad1-29fc-49cf-9f96-0ed8e246a98c fbdde9ca-5e98-41d9-983d-6c6cd7c54018 16774713-e661-46cd-9bea-2ef3b50fc9fb d27d9cc0-13f4-4d4c-b103-e03611c21488 196fc9df-bdda-482c-b355-40f3aededb16 85ef7a63-4093-488a-894b-b3eb3d27d932 28dfdb3d-fd4f-42f2-ba11-ba4818fa18fc 796bb563-190a-422e-827a-811cce63ceff c6bae2ea-6eb0-43c8-bdc1-0c5b1d172c36 0b78c5a9-19e9-4113-8379-e76a4863bf0a ed9493e3-20c9-4cc8-8299-bf63cfff8b41 9d262ad0-668d-4408-9030-40f4df50c68f 36b9c61b-d0e4-4648-8031-6c231b71a093 df16ddbd-416e-46bd-8402-1590ce44a07b 18821eb9-043a-400d-ac61-c4f3faba7938 32cb4f7d-e1cd-4231-9504-ce9238fed6ba 11da0cba-6e99-4a7a-b1ed-dd1e07c282a5 ddb6ddf8-76b5-4d3e-8d2c-892a0d368b46 921498ba-a892-4953-9f45-d3b4acf3bdd0 c41b7d04-59e4-42bb-9c62-8cfbfe8bd869 63949577-370d-4656-ac34-a55396b0ce69 fa60f2f7-f459-4b53-9aa4-611fcb5c1377 bd8162c1-5ce7-44e1-a250-1f386ed72fbf 24847c01-c8bf-43f9-91e3-ca78110ffc00 ec4f0a1b-2533-4ba9-97ac-787a1a7ef716 b1e4c844-d341-4814-a33e-a408c13c3bf9 1349f851-7f61-49de-9a8e-74bab303dde8 cb095722-9c76-4864-bcab-8e9efe104d17 a3fb1ca8-6e04-4147-8c91-766779392a62 67b2200d-db07-4f3b-b26b-f8b7440c2af6 e1ccdde2-d62b-41ae-adcf-1a5a7b940c41 ce072a0b-bbb2-4eb8-88c8-ab8289409149 ad345e4f-44c5-4534-8c4b-170ac9bffc76 cfc50f06-5d20-41a5-b0c0-bd16b3699ea0 d0143948-0a78-493a-b317-93092df93bc6 76788cca-0f7b-44f9-b235-eb53267c55aa 5efbc597-ea5e-4f83-9bca-8d42f6b8a8df 9a6ea9ff-afcf-4f9b-8e3f-c9889898c42f cb31da87-a9dc-46bc-947b-5ed0355ed4aa 84e869a5-1c01-41f8-adfc-9212a99813e8 fb4f4207-083a-4bf7-a84d-598741486792 6e59de36-de29-4290-af99-43ecbf776aa7 dd721249-1e9d-40b2-ba81-ce5639a08f66 876b3859-19cc-43e8-aa97-45130fa155fd 295a19b1-6f93-4cd7-ba0b-d611c7bdd48d 5094ad02-a48a-466f-bfc6-b83fba7cbe70 e44c10e6-a3c5-42df-be1a-3f8f57d0ee29 6627187d-6616-4088-9a00-ddfff0f6c725 874b5fe9-9e0a-4fca-990f-4834e219b9ec a4f286df-f6bd-4d04-9f04-8fc7cf6bd8e8 51e96668-30c6-4084-83e0-77262e43d135 fce697df-d393-4201-8674-2f1ac9220364 71fc0131-7560-49da-89d2-350878eacb6d cf90b95d-d0f5-4f2c-a1d7-f3a598286d96 eeb2faf2-e347-4e6a-89d3-e142a2e2dec0 4d928af4-f3d6-4def-ad0a-76e1717ea9a7 716ba92d-7289-4709-b356-8ad99662a062 09dae236-ded1-4d2f-b5cc-305fcb363918 52929648-c6f0-4fe2-b5d0-bc47bde49f5c 394db41f-4951-48b2-ac50-dc5c856d7587 ff788781-aca4-4857-9f2c-2a90a46e6554 b7b698db-03a7-443c-b655-9b73a36d1d4b 195a69a9-24d1-40c8-9595-9bdaa4640c2d 81cbc236-072c-4cdf-a3a7-642fb2718dc9 6767d483-cd01-44a8-8b59-47bb54f15b4f 220277cf-10e6-4fba-8b0d-d1df84e70003 3de17873-42b5-410d-af8b-eaeca76ae8a1 895bc0e7-1d8c-4f53-8644-17b1c84b75b1 c97349fb-5825-43e3-8375-89a84b5efe47 5489ca12-9079-4fd5-894c-847e1d5d314e 7f1d8df8-f8a4-42da-b85a-f72744f65f66 a8f1e263-3481-4d60-a1f6-991f2bdb4eeb 23c77e5d-d0af-4061-ba39-f700c49abf0d b10311f2-615e-4c1b-83b4-706bd39bafcc dea52dde-b675-48ce-90db-2db7009a5910 aa33957b-554c-4eb6-9d46-affbbf2bd41c 142a28d9-3fd9-4514-8640-d94535f41ff8 0f909d97-6825-4d77-b5a5-c75fba797b61 58139675-7899-4d66-8184-8223717e6166 9b6e2dfe-00fe-4e71-96c8-e3e78c192c31 7edc615b-60cb-41de-8510-a6b3780bea96 43bdfdf8-ff68-418b-a810-971da8361ec4 fd34f55f-0d1e-4d6c-b8f3-4a206cc696a8 e1afdc41-6646-4bb3-869d-86a7da122d7e 0d9bd37a-c845-4c79-aa68-4394c10461e0 4ecdbf0f-8002-4d81-8b6f-432520e693d9 b665bef0-77b6-441d-ae54-9a009bb33eea 05fabe4b-7e52-4a5b-9b6e-97f0573900fc cac7d565-5fd5-49fb-8acd-4a3ec28be481 312587ff-baac-44e8-97a2-eac6a7baebd4 c87cc6c5-a3b4-4953-a754-c9ff62e9f493 32245eea-2e5e-489d-aedb-721385f8f8fb 7d6bc211-6eac-4856-9ec5-917916876787 763cb902-0fb0-4b68-a376-6ef867e65161 ee90b3fe-1499-4c09-b155-8a535bcadb14 780bb61d-3b7f-41fb-9a3a-e341620733a4 35cadd92-ed14-4091-b450-3668d8f85865 77397ba5-2d1e-44ee-9b2c-f5055109af17 71fc2cbd-a62d-409e-ba24-ebdf9739be86 44aaa78b-e978-43c5-80b0-2002768fc010 ae7073cd-88b0-4603-ba5c-d014581aa4e9 27bdafc4-e6c7-40de-82bd-eb3d7f7259b4 c85c08b9-ccef-4af5-9bfd-a94d4d01e421 297d44da-a545-4257-8a3f-8a603a760280 63d85754-277a-4915-9db3-b6079ae41bd9 07bd54cc-0d28-4cc3-b7ca-e79b4cee9bdb 5cf09752-2e32-43de-94d9-d961d0869eca 420140ab-3c3c-45dc-a3bd-83281a58a4d1 a0a6d72f-2697-416f-8f95-22e48f3bf794 5e32314d-360a-4e6e-942a-81f98c2a2ed0 7fb84940-a73a-4017-9c12-6afdeb643d08 affbac67-01f7-4b86-baa9-6b008e3f396b ffa079bf-9715-48ca-885d-a2df56278053 15e399f8-a729-4bf8-ba5f-86e255f8fc64 16541129-6212-433d-a310-96e67c700ea3 555a9dcc-474f-407c-94c8-2336400325c2 9f8e1652-6b11-4bd4-ac61-149295ed06ff ea7f93b0-e2cc-48e1-9b50-b72abce5e990 543e41af-beb2-4431-9b54-a03466528880 afc092c0-9c95-4297-a546-b3be10a20dac c294bc02-17f5-4762-b9be-475d86e9b470 7980a590-22d0-499f-a73f-d41f7337eb3f a7ca96c1-a9de-48d5-bacb-a4f713f4d4b1 2b43bbc3-93dd-410c-9d49-e0057070fece 5a365fde-8445-4feb-a5d7-e11ca4a269b1 1f576ed7-bc9b-45d6-b51d-7ad03427aa6d 413b22a5-3b63-4239-b149-f5c4ae265145 c44b3396-ae3c-4990-8084-98c77862b88f 81976c10-1115-408b-8028-d8a4ad2b70d0 74ffe9b7-48f9-4806-ab4b-748bd0cf965b 9cdd2419-2eeb-40e0-ad63-e0378f1d6a8c 2c8539a5-9115-4eae-9fa7-ddeb610b4b7e 31e3fc27-01e9-4869-a83f-5fcc63a49c60 6b825857-1fa7-483c-ae41-74baeda50a54 74049c26-8ad3-44b9-b96d-b740fad186ec 3d30eeb9-77d0-4f42-9852-335c4be8ee9a 8cdb61d1-377b-4665-b383-3af630c082cc 6428fa38-7897-404a-a44a-da8a39aaca7f 41fcce60-9e17-4aed-b475-ae38c5d050c3 9804ebfe-1f2b-4bc3-877a-81a3967822f0 4ca4b4f0-d6ce-47c9-9358-eb3b13633bb9 e9a966a6-887c-410b-a6eb-3175abdfa0c2 d65ce24d-2941-4526-9ad6-4bdf26245c79 8d588717-6bb1-476b-bfc6-41a1dce45de1 6a67285e-fd64-4869-9d78-6a5ad8426755 630ea490-3727-46be-a05a-301c68e2af5c cbb4812b-83fa-4321-8dfa-d91e73dd19a1 1111e53a-9580-4efc-9891-336b0602be2f f8ddde2e-8f15-475b-b759-07f6651e2526 6370b20e-02a7-492e-9a5b-9bf1305e8ead 1d8ee054-b735-4f36-9d35-b68e0b364a14 fa3d64ac-e8af-4d8f-b4fa-604640f7356a a58abbb0-f381-40ac-a824-1335555e6196 62cb865b-6ffe-437e-8b22-0177c8ef92c4 6ba88be7-dc97-4c67-9ae6-c207a07cfb0a f69f5e07-62f6-4f6a-865d-8fcb4948d7e8 4df2d04b-6852-4dbd-a09f-f74cd8052696 cdc4362c-7a7e-4804-9c57-a8fc02af5d53 5fc2ebb2-a686-4aa9-afb7-720934598708 2fef4407-f47e-4746-a4d0-728ae981e42a 40cd3a7c-48cd-4515-a191-d60328e8b8a7 5bdff291-2e53-4789-815a-f8c600bf044a 23662c8a-8929-42c0-aad3-45584172008b 1e87d87c-3edb-43f6-9b87-97e4b048b264 b4961607-7b59-4236-ac67-519820ec2f90 4d3d0998-a7a5-4e94-bf12-1365969adfcd d29556c8-9c39-4f5b-b065-2d996bef67a1 f5055b5e-9436-4a88-997a-90826a319818 19342210-eec4-404e-95fd-a9c8cb12c95b bf3b1ad7-738d-4c9f-a268-2d00c366e90a b955ebe0-1a2a-4b32-9d7c-7c22fc544f98 925d12b5-f8ab-4c90-874b-0881da87d6e8 8b5b873d-b4fd-4c75-9dbc-5d08cc14ac41 40856cd6-0d25-4006-991d-5ea0f5671e2f 5461400f-628b-4dd9-9005-9b8d7d3d225d e7750b9d-1fea-41ab-993f-fe0e3e56335d 310243c3-d40f-4a8f-860e-29008fcb339b f745da9c-5479-4572-ae54-86c94750c086 b2d75c73-95b7-4fc4-8488-0b7b41c98ff8 5c0b6d90-4626-4039-bfff-9877a3b655a8 dee94a95-09ee-4062-9aac-41ab1c0c8bd8 6e025013-9063-48a8-8be1-0df1adffbf7b f5485a98-152e-4abf-b760-af04325d9b54 4cbcbdd5-05cf-460f-897f-b7fad740fee0 a6e7c538-1a89-4da6-bff2-4c6b0005b99e 40b992eb-8c3a-40a9-84e9-eb2d17e0a6ea a78ec931-1792-4011-bc44-d5adf418a2f2 18367f57-e083-4aed-a801-d6d33fb15e35 0f2e8fc3-f22e-45f1-9653-9bf33ba95e43 71ea5fd1-fec2-4834-acd4-b53cfe3b6bff a9576d58-9d1a-46db-a95c-606fb4d0bed9 ab9cefb4-95d0-4b24-8970-0f38a20b6ddd 36605084-fc52-470c-bbad-45e15cccca30 e06d2b76-3499-4d33-9aa9-6489e227f758 fc05f006-1c84-4eba-bce6-0a0bd083d66d 870dc40a-180e-4003-bca9-3eed01516f51 aa8f3764-a32b-483a-b74f-44fd5a8d4021 6e1ba510-19f1-4ab4-b3e4-564b22005118 9aa99734-eab6-4aac-9c32-be0de014043e 9ddcfbed-dfc1-44cc-b125-74e3811bf140 3f4bae68-b248-4e1f-ac7c-ba7317d96199 efb82d60-f7a7-44b2-870a-2be67311ed22 e9582fd9-1164-4d74-8aa1-db0cad88431d 68bba828-d424-4931-97db-51fed9a91656 96d5dbc3-3fc3-4071-902b-4618f93876f5 45de6484-b955-4649-9896-df9dfbb0fafd fe1334b1-20d8-4784-856e-2b512a777e28 f8238c5e-7495-460f-8197-d3d54acad30c 29a50059-896e-467e-bf8e-89d28c76decc 055dc3ac-827f-4e54-8c1e-df7a70f64ec3 8547172f-83b4-48c2-87e2-ca2400f7c084 a2cc159a-24a4-4d21-97cf-039aea3e10a9 bd07352c-145b-4d6f-9564-af115c9918d5 5dbf98b0-f725-4e72-8fd4-14f7fcf447f7 e43bec13-51f5-414c-a705-eb2114df7b45 8b69fb18-87ff-4282-9c5a-10e51f1aa64c aa7a61df-f267-47de-9a0c-b5558c7b07f3 36e80e34-bfa7-4299-9a19-a01a2bae3d94 a1720edf-8ae3-4b1f-b078-2b8e7a4bab30 0067d043-9b0b-46e0-86b7-a7c127aa114a 7ad52c05-c820-4b70-a56d-71c0e27d0a01 563dfd7c-68bd-4dcd-9f9f-6a0507803bd2 b2c40c4c-173b-4dd3-93e8-839a6239af1e 6d524996-9a45-4b12-9fd8-fd0c56cdded8 b04762ab-5367-4330-a3ea-926319af775b 7bdc3682-b3e6-4e82-a47c-1c15bbbb15aa 9a2b1a3b-5987-47a4-94fc-548a59f8690a bebdec8d-c4b7-4b32-95f3-3eacad209bd6 4627e7cb-93a5-497c-8079-0c6ef99dfdb4 19d9d034-7920-419e-8b3b-b69e353d87c1 a859863f-7905-4afa-8c6c-03eb5695d212 dbed9a52-e6ec-4ebf-bf50-4171edfce001 6488647b-db77-4fd0-8e85-b207db9096ef a6e87868-2b92-4f71-be23-be7d59ce5fac 18dcd4bd-2a45-419a-9042-9e262a56f71a 68080b2a-2710-4e91-9a66-b875c0d33cdb 1ddf6bee-850b-416f-b71b-bdaaea959a4c bba3fd23-9cba-43b7-a853-b252bcfa3f88 75b7bbe7-444e-494a-bcc3-54ff19c70c4b 00af79ff-56d9-4920-acdc-3f7bbd44b203 070605c8-ed7c-496e-a290-52dce7b96cad a293e300-e947-4000-9b66-3ef70c39c825 b46cf56f-8611-4c65-b986-fb3ead7da915 148ce77a-e35a-488d-9a50-6e97ab724c8a 56000b64-aa9d-48f4-b03f-c4f253c7e72e b7928569-2ec0-49a2-bbf1-f5b6f116852b 9bf500f8-a50a-476c-ac72-a97393453875 47cb90cb-52ca-41a3-9f2d-5cf5e5ae9be2 e97ecfcf-0bcf-46f7-9414-e402529c2024 3679b10f-618b-4002-a45b-3f08edac04d6 abf57985-bb2b-43d0-b907-1625d4acaa1b 9158daf0-b1aa-4db0-80c4-5a1fad9b082d 14c308e6-2a48-427b-ac20-3bde82df0505 b9c7062f-ffba-4f7f-9a15-d97a32754d5e a1d72e47-5ee4-4007-98da-9de6a44f9869 24183277-c4b7-43e9-b565-f1816d7f007b 651f5fea-d47e-49b7-8d7a-647894670d30 c8cd46c4-c6ab-4a82-b87c-90d3c1b283ed 39108460-a978-4c7f-8231-af3aa4667c8c e8a99c18-a521-4395-bad4-09f443e2011e 10442168-0e23-4720-9bda-7ef553f84ab6 da198973-2ab0-4ecd-954f-ce8df95f1424 b2f224d3-72b4-4af0-94b0-bc738c51ef77 4059dc97-6d83-4af7-946b-58a9211d8378 14f7d1fa-e80f-4fe7-b145-27b9191263da 301834e4-0f30-4d92-a467-c94d06ff0919 86b53fe9-087c-465f-a9a9-b6cdfab191b9 b02cc5c3-79ec-48b4-af15-91cbb78f5ba0 68c4c57e-5893-4006-aa93-99034ec74cb3 6ee37873-a174-4298-aa6a-f118fcd3f3ae 046670d9-11b8-4dc0-8851-1faa8994b492 e93cc95d-9f89-4299-91e1-5642b98fea63 6add4a70-1a37-4ce9-977f-b22b3288ed6a ced54622-666a-49df-bad1-1ed2f74d4523 99e7a6e4-5db6-436c-96cb-cdeb9098a67f 32034495-8808-40f8-b36d-ae14ad97b483 d3821838-b379-4873-9414-de9b1e494e39 dc24e4a3-3d14-4f7e-8678-1cbd224d77e9 91f4731a-d754-46e5-a3c7-07d8d38721fc fd0c8fd7-454e-4c6a-be6c-ec23f1b8e125 a106fd39-13a1-44f3-b153-0cc5de0d7db9 32bd2e31-52cc-4d7e-8c9d-8c07b6e142be 48354c58-280a-4497-b413-46ab0b44d039 85cea35c-8ea7-4a38-8277-4b5c13938e0c ceaff17f-7abf-4dbb-bbbf-210124ae7b2f b4c5f425-8263-40f1-b850-02d6746c58d8 10ec83bd-9ee1-43ff-acbf-b16efe2ed12c 01e74626-e006-4684-bc17-265897c3a438 1cdb722e-0072-4409-8525-2cce219e8006 95c90876-60f5-4cd3-8e8b-91bf498fb1e7 03e862fc-0681-4568-9916-911306b8f200 2e10c09b-5ba1-445f-911f-b6eefb935990 a69e19af-9308-4b7e-9ebb-a7a2d7d1c25b fac4d540-7730-409a-bb41-e65247a9e7c3 4dc37b99-23b4-46d3-8bad-34700c9676e7 36e31178-3214-43ba-b419-8ddfffa450d7 6032702b-94bd-498b-b416-0c5f8c44ab87 d60487a7-80fc-4012-b854-d0e2346d1b24 7a39b8b9-15ff-4d3f-ab0c-02cafa2176fc fd777cab-f477-44ac-be28-81f5f9a6e663 394136c6-9bb1-42d4-bdf6-e7457f381c24 3677f7fc-5078-456e-b1b4-b1e113b1f749 08ca7cb6-ac48-4e82-ae32-4b4f83cecc25 dbe81dae-3cc7-40ab-9801-8b7410d20257 dac78f5c-f227-4a8b-86e3-1b7cd92d39b2 82c4e9fc-5a2e-48bd-979f-4b7d477b4545 b1734554-38b5-4a12-83f3-4a04b38ba1c2 047bcb53-6b37-46d0-99b2-b9c2009a578d 689559c8-a5bc-4880-a7f6-5f413b8e5fd7 21afbd50-c8ae-446a-9bbc-8cbd1ca5297f 56628dc4-5837-4bc6-bf7f-f60b5a1489ab f08a21ae-a276-4830-a4f5-2849721de968 99213067-21a0-40e2-b4a9-8cbc24162d16 d550966a-9c8d-4315-ba49-a65f7a89f2b1 05e01cdb-e8d8-4ef2-b3d9-dd83bed7dc09 1e900972-b85c-48d4-82ef-3a1133b43702 3169afba-0699-49f9-bd03-a4907a797b97 2dd9da30-9e72-49eb-846a-dd791dc8d1dd b867c8c7-9bab-4a9d-828a-e721a942ade2 e6885391-676d-46c0-8a04-61ced0c95b22 eeffa38e-278f-4826-9a03-e4ced0b62c38 9de37076-c374-48d5-be34-835b2faeca3a aec72004-c206-4f06-a88e-d9f9015c9ad1 41560cec-d3a6-4a75-9c73-5823a83c6eff dc201cd0-f768-4dd3-831b-2759963cc5f1 611d79f4-1fc0-45b4-b64b-5538ebeef6ea f50be030-cd87-46c0-b9b1-6a4712b6c03e 073b44a2-4952-4269-bccc-e7d65d2371cf dcf074bd-546a-453f-972a-6774fa601de5 fe6f5621-388c-4f8d-8242-a53ad672d289 5501f0f8-74c7-45e4-97c4-b964be8a0c7c 23098043-edf1-4441-82d6-040611d95752 8559d0ae-250e-4e82-a3ef-5e7c9906339a 54828047-6ede-4d77-82c6-3439a3f58c00 e81b14b6-1101-43f3-93a7-4b4a8fa9aff2 545cd94f-9b6f-4211-ad0b-9c0cf057c3b6 c5ad864c-385d-496e-b8bb-88043b9560dd dd5ac2c5-0075-41a1-9ed9-3a8be5f73694 1439017b-b1b6-4df0-93ca-2f5829fdc7fc 11d426b4-1074-4470-b42d-8c341a08be43 c08f249c-86b2-4712-b1f7-db481c1435c0 12e2e972-31c6-46bb-b363-67844d3f5e53 efee8dc4-4581-456b-beea-bc1b889d6a83 5ea2d95f-71a5-4537-bed8-7523bee91cba 670f2e5a-64c7-48c1-8cc8-6f2853427218 9063fefc-be8c-49fb-a886-60a8050c53bf 90f7b593-82bd-4769-9bee-9984e32c57b6 18401fca-991d-42c8-9521-f777dcce8599 a4259981-5ecd-42d1-af3d-88e8dfb424a5 de2b230f-b1e2-4c2c-abae-626fe449d412 a1ceb85c-873f-4d24-8b0e-675baded798e fbaef09c-bcb3-4e69-8850-8931a12eef94 3bd8f403-9126-4136-8809-2e434b2fa1d2 d234b099-0279-486b-8fd9-fa49f102a80c 53cc2fdf-1872-4cce-a464-22b5119651f9 0eac514c-280b-40b6-8ad1-318fd84764e0 76a41c06-913a-4ea6-8e0f-a0cdedca5509 cae45d32-8cbf-477d-9d49-718efb8bd060 8b9938fa-109a-4442-9226-ca56242ec47e 0d5e1b07-3918-4d07-8c39-0a040a280275 f45c1943-10b7-43b1-80f2-2ac118d554a9 47727bfc-dc04-4c8c-afcd-35160ab8f835 c8923ee4-7b21-4f25-8e6a-293868bb37c2 b8c658b5-1964-470f-82ee-36bf90570c7e 919ec3ed-829f-41cd-89ab-99d79915b391 39470dcb-e55e-401c-8d6c-06d3490f4c69 e80ee6f5-548f-4e61-bf9d-9b96aedc6015 31f88a8b-b864-4ce2-862b-6b4d61dbb95d de344cd4-d203-4ba2-b617-bc4f865c786a 625ed384-94b6-4cbd-bd3c-89fd70a97a0e 7c526c5c-8984-4876-89e9-fcbc6645fa1f 8d88b8d2-9fe0-497d-be56-41f97acd3158 d92d4a16-b557-4037-84eb-e585fdf8443e 1e988518-6b4a-4cd7-8e42-2bca1c27f907 004d74ba-e75f-44c2-b155-acf7761db482 161c515b-6e11-4f3e-b508-1977931f2287 705e866c-47ae-49ec-aded-786c05e29bb8 df377ebd-7cb0-4930-947c-2db8b3084211 08f184ab-8fd4-4f25-82f4-546bb33247ed 43d712bf-4b7f-4914-b882-a8139e04d939 34ad5868-c8f6-423c-8d38-da8be3895da5 082415cc-c8d5-446a-93d3-cc4071eb5dfd 4a164e73-a8ab-41ea-b647-9376e28a0327 e64df134-97e1-44f3-a970-02990377518e 79b32f53-8af4-4416-bee1-50a4534fa21a fce74f3d-1d4a-4b11-bc18-b82db326933f bba450ff-d896-4f88-9a72-c87bcd042418 7028d7db-3028-4a8b-aaac-8829a3939a89 8cadc5f7-25f3-4e10-a3d5-bfe46e9f07dd e2fc45bc-1647-4f7c-8dc6-b91acd8d950d 4c65e0d8-863a-4d3b-8718-d2180ed7ba7f 25d4ce02-3d12-4cb9-b031-08b82e274c3b 8cade529-04c3-46a3-8f32-cfb425f30674 e92679d4-480f-4d92-9d85-7497d8d24c16 277ab1f2-0874-4b1e-bda4-1719dc63ee60 00927fb5-d5e1-45a6-b5c9-c80ace861153 3ce63af0-d5fb-4cf5-974a-69d93f18b9d9 6ed77f55-7ff3-4ac1-9be7-77b492c7d20c ca2b97c9-30dd-48f7-8c5e-c39a315a5673 ffa10442-54c8-4156-b442-ac74246c598a e939bfae-564c-4e8f-b027-3f5b8965a38b b1879a9a-b867-4adc-b5b6-82c454393c6d 6d0f7fe8-725e-419f-93da-2491a6f461ee 986fef99-ea58-49c5-868c-b43c87cf5dcf 4c1286b2-b7b3-4f2e-9e39-d1234d3d919b e0c74675-da3e-483f-bfb1-87107105ce83 2ec3bb59-f7a7-4eb4-bcc0-7f8149972bf5 82bf9e08-1e00-4cf9-80af-78c4957fb793 44f926f9-6ab1-46c8-9941-0b7f16419360 8e5fd3ec-91b6-4357-a4e1-d84ef41fdeaf 0a7a068f-018f-4cdb-987e-ccc97b2a14be 6158a319-a973-4750-a597-ff715d3aa920 f2fc13e6-2d73-408d-8637-705a4923eb10 d1d47974-bbc8-4b23-8b72-c645680e50ff 28f3db26-8149-4a7d-a408-8f7b430a9b7b 39a04a90-ae7b-415b-b9b5-ac17dee93a89 745b5318-2e8b-4cc4-9b70-3bcb1427876b c3a480e8-a4bb-49f8-bb95-06c4416b1cec 11ad8810-46b8-4859-b4c5-112b51d90d16 11b3c327-4f78-4e6c-8f5e-c9e3280d9c90 95ac8be4-b81e-467b-a82b-6cc17eec4aa3 8e86df40-3818-4c58-b736-a7f069c885cc 43e219e4-4e46-4553-937d-2044b38fd02f 1ff38352-19ba-4178-8e58-09495aaff0e1 f2e4d7c9-bd3e-465a-98f5-f1a2c943ac8c f7f5d507-629b-45a8-aaca-c31058401636 e914bf27-959c-4792-a68b-7c566f18ed92 03dfb178-cad0-4553-9c66-eae30a0e413f 31520323-d26e-4a57-bd57-76ee9f800399 ee5898de-e8ec-4aca-aea9-7998e3dc8956 09d719ef-379f-4505-80a7-df4743e4eaca 0aa4a640-cba0-4b64-bd49-fc076f6a19d1 4816f33b-f09b-4ef1-80dd-729a789aefa1 7c4d0d50-ce50-412f-a32e-685013821326 90000fdd-612c-480c-805a-f618843f7d65 f674b6f2-ac9e-49a4-9838-aa718443b59a 4f6ef1af-e83d-4746-91ab-5159b116856b 84da8065-e3f0-4330-8a59-03173d48466c 681ec366-65f5-4c1f-81dc-547a7f52c33a e8e2af2a-583a-4687-a5df-aaf0ed55f2ae f35302de-ffac-43c6-b272-70698c0637a1 4fd335cf-abfc-4cf9-96ed-aa22fa0a3b39 793112a3-b0fa-4cef-82c2-fc99a858bbd3 9a3ae301-20cd-4628-967a-aaec7b2df8c3 12736372-ed5c-46c0-8560-21db94b4fdb8 62af4abe-26ba-49df-b554-a8a806239752 269ebc09-14b2-44ba-8c33-a827ae555617 b16502bf-f7ba-4498-a206-95bc1e01d4a8 5eb7f93f-9015-4522-b9a2-c0e6d4c72da7 77c94926-fbe7-45b8-a5b5-4b95f71e34ed f9103865-ac40-4e4f-b490-505bb054f9b9 91cfb611-78c1-4d01-bf68-f707d76525f5 07171145-0c65-4034-a087-0027d9f1ef7b 9dd88af8-989c-46ff-94d1-cdde7da95775 7fce7e6a-8707-4002-a503-d249a2ff81cd d80cc464-6901-4847-adfd-ab5b45e6a905 b19509d5-8daf-4048-b1d9-ca191ef81890 3879a553-076e-44cb-92d8-805789fb77ca 6d863379-18c9-472f-8ca4-eda1e6378723 ba0e8bb0-3a79-4506-a70c-2f861dd017ac 44729e3c-a225-4458-a0e6-e4e600072ed7 d35f0315-2621-40dc-9842-147deea9ced9 ff17a5e1-0cd8-4ed5-a749-00db041b4add 2d0a2bb9-efdf-4a94-87d8-75ebba39f07f 643e1b86-7efe-4518-9244-251213dbcb3e 77737e18-c0d3-4ad9-ae3a-8fe681658151 120f2773-1ff3-4705-897f-0892b18d0205 ed470134-cd2d-41b3-8bb3-c58be14c5e46 21da9ca6-f000-4cdd-9393-c3662111b361 171d06e8-7c94-475b-94d7-9ddef372dbec f3c40353-c409-450d-9e15-94a35c3015d3 243a78cf-d799-4c4f-befc-6d4f6dd1bd1c e27f49d8-225b-4dfa-bc51-e2dab39c9cd5 191af319-9cd4-49aa-81d8-e841edf449f0 25f77ecf-434d-4227-8037-aab95de5ad0d 059b6cb5-794d-4f66-8a58-f3d854da2bc5 3fc229ed-d30f-4729-83eb-13ce9075b86c 40f8eae2-e79d-481b-b112-2a4a22d75f92 f3ac5cb9-b981-40d5-a6d1-ff341e76ac97 fec2f9bf-0140-4100-bbe1-a788d5e3bef1 70331e35-a746-45eb-8a90-1c33e03d332d f37e9a2f-6364-49a3-8d27-ca57605a23f7 0c9d467b-042d-463c-91a7-cd504035d87d 1f0e8815-52aa-45a7-b924-0ca8ae2b7d81 c097702e-c4d1-444a-9ed8-9e13d2b412ea 39c7ac95-a9be-4c69-b3a4-15b7d80e4f67 4b0ad56e-8e08-4488-86c9-44748554904d 86462a99-6d48-412d-8282-cd8b491f8232 ebe6ec84-05ca-4911-9cf3-f105f77eccc4 e20d394c-b040-4615-9812-f86bc7c165c1 58b26e1b-080f-4abc-a92f-df6fb7ac2b68 268f143c-2210-4794-91e0-a7cff4ea69bd d28d3b15-3f3d-4eb2-a86c-d05dc24c5c07 d179435a-4156-41e9-bf21-b8f4b985ca6e 297a01f5-5afc-4409-9f81-cd182b03b98d 0c14ed81-de0a-4dc7-9282-3b9e1a3b5b34 1397041c-d9bd-4dc9-9417-78df57043768 1b88c482-6ff0-4b5e-ba89-8b81d3f099ae b9d095a3-c5dd-4e4a-909a-d4988ba045cb c95268b9-b319-4679-ae0a-cf8770ac6d65 b51c07df-42dd-4cf9-9a13-e0a3497c1f3a 1f52769b-1182-4cd6-96e7-b561478a357c 03fef3f3-2712-4a0a-833b-e79d60772558 703955f8-bff0-43a2-88b2-f321331894e0 21aa3aad-48ca-4bfa-be56-e11810f09639 eaade6e5-231e-4eaf-950c-d489f80cad20 8f33dce3-669c-4658-b26e-0fe734488a37 2b7793d9-eccc-4ad5-94ef-0d84a4dd3ba0 700f093a-d6c0-4653-b22d-2d52475a94b9 f1471fe1-403b-4913-b053-d0ccf0e49d6f eac7f60a-51dc-443d-ace0-0b68b7c8ed60 bff4b375-a336-414d-8ed5-aa409c94b224 1c53e934-bcca-4a39-abde-8c2848dce7b2 b849ce38-08c6-4db7-9ef9-5790553e850f ce5d9e54-ccb6-4039-ac5f-713d38a1a2a3 2e7a03ea-8551-479c-ac20-2d283055d1f8 4449eb8e-be7b-4aae-9770-a3be341e6f9d aa345e1d-14b6-4541-a8bb-7544bd6e32af 37901000-41ef-4d69-bc22-558e3c5bc7ad 375ffe31-053a-4f44-a1d2-10e217df29d9 5480c2a7-8dee-436d-aaf6-064c282c7303 c603aa55-4eee-4862-a580-6aec4890c025 9a2fd043-4d41-421c-b066-41db377a2834 0a9c69a0-7bc2-4e52-81e3-72da2c8b0bb5 2852e99e-1340-40e6-bf5d-5daaa616381d e8fb1387-6d63-4466-89bc-01d00dc8ebcc d006b7cf-b54f-4a9a-a47d-5a541d1ac7b4 4946845f-d002-45be-b5a9-ea08a10a8f66 73c20d3e-ad87-4ea4-b3de-3318f465459f aac1de18-ed56-476e-927c-1efbc8d2e0c6 72970b5f-4912-438a-9412-cd494bef1902 211ee72a-22e9-4610-97f6-19ba361a8e76 12e34a50-ef4b-49c4-94f5-2421bcd1006e 12ab1d05-0113-417c-8fd0-da292f38d8c5 c1cd04c5-9ea4-405c-8c0d-ab90f3e20298 0977eef7-d86b-434d-b138-f95d592c8a71 ab701974-5821-42ae-b87e-e46c3dbaf756 9255d7f8-1a12-44c0-a88b-56f948f684c6 6de297af-0981-4a0f-9917-f8a4b0d8db90 004a12be-e7b4-4707-a004-8a0b398bee77 1d2235a3-6a14-4757-804f-64604d6fbacb 7375fed7-86b8-4914-a9b0-353a78dd86af 7f287549-0ec3-4af3-84a4-6bb87e1d9b16 98b4d26c-57dc-4afa-a2ac-76ac795ea401 201fa11e-644c-4924-b331-ff9da58d9f73 8f07a786-e9a5-44b8-98e4-3a63cc69c105 9bb9934e-a7da-41de-92e5-0289ef261dd2 0ef5212e-9419-43fa-948c-6119858cadce cd4fa3cb-646d-4116-bc48-1cec4053cfcd 36afbc2e-5a97-4882-aa1a-ab95e767d86b c16bf159-a925-4ded-b0a4-d97c199cdad8 ecab91aa-2d3a-47f8-9249-3141078d2b24 6a23c631-81bd-48ef-8336-b3c4d9a0f1e6 614ee7de-40ad-4e0f-a9e9-1674277fad3e 66c099ee-3e81-4387-91dc-f689feec3b3e b45c8af4-d8d8-4400-93b7-c5951ed9e361 1527868e-fb64-44fa-83f7-de897efcdac5 0176eb5e-2b47-4157-a65a-f60c9f59743c a12559d6-e03c-4c9f-8471-b79791503587 44664074-fae5-48d5-9174-e4b03436d155 5d766c2d-fc38-4179-84c5-ee001fae0189 d1f02d21-6a64-4f94-a214-8b238be230dd 270209b5-c72a-48de-8b05-53bf761c13df ab2bd957-e7d5-4d21-9dd9-d1e0f3272d43 a0c2ec4f-b9fd-4112-a6bc-9b0571e1f82c 55efad8a-3cc7-4b33-8c9c-cde399c71a08 b904ac7c-2414-4380-a395-33c9b7d6cfee 58fec20b-3979-496b-a031-79222a2a72e5 90a3893a-0b93-4843-8076-89b0f6e1a568 61c84894-1b8b-4d92-a758-2fba6fc4cafe b928cffb-545a-4592-80f7-4bc1134dbd7e 3e234b4b-ac09-42b0-90e0-6e9e95d4fdd8 302bc21c-bf58-4b76-9a93-1e01340ed5ef bd7f0bf1-be2a-4959-81ec-37cf8d0139dc 9d77feb9-5a84-4068-9dfb-669d3fc0d096 007f4a78-c459-4b75-954d-57e16842cb24 4782dee9-304c-456f-ac28-0080fd6a917b 5622341a-fd84-4be0-9a81-3cc8c881d371 96cda8aa-0c34-4da6-87e8-3f11db4fb70e d3c034a2-a424-4721-9cd6-9dca57677a4e 09f17a38-ce72-4927-9060-a8905f4a77cf c94d3968-f137-4a4c-a9ca-ca1e03c8440f 65ed045d-b0d7-4393-8a7c-7844dd9d83d9 2a1611cf-04ac-4192-abcc-df79d642f892 5e686565-6695-4717-aaa0-49f37c8b9e80 7941a53f-7b05-4535-bada-b61eda78fd8d a0f8e86e-b5ea-4f73-a4dd-7738d0ebee90 131de077-b7a1-4287-814b-84f0db0182ec 61e7e47f-6d16-4c99-9a04-da3a7045f990 abed0677-7586-407f-bd79-08ce40b01cc7 de8269c3-9bdf-4871-9a47-cdc14adcdc18 8c6720e4-19ce-4da4-a79d-5a70ae2ce7fe 3ae661b3-af83-4337-9672-f6a6fe22bc22 50ef8cba-29d6-400d-a172-ec2e0b176c80 242d43a2-0857-49ab-a741-5239f229ecfc 4355d633-4be5-46a5-9ca1-5f700ef90cab 907bb224-36b6-4b2f-b306-2b4c95bc2a9a 83cc11f7-26ad-4180-82f2-96dc089f1060 48e36eac-243e-47e8-9d41-471d842c0ad2 7b59da83-45c7-400c-bb0c-753cc1fb8609 f1102226-c11e-4d9b-a28e-80a0e4efc7b6 e83ceebe-ef7c-47e4-899b-dbee457dce15 f5c49daa-eda2-422d-8236-bedf49cde8d0 d9eeaddf-5cd5-4a18-a529-51c924ee52e7 219c447b-4cc8-4909-b6b8-a652fd48f5d1 0d518b94-9f95-4219-adc8-6399ddcf8b19 5a45cb54-4862-49fe-b3c2-76c3625dbc3f 2da3018c-4637-4a64-a289-1c7f5a7c96e5 307a8a63-df37-449d-a69c-0d3525c1d3cf b64c6139-60d4-4242-90f7-8aa9778e7d9e b91fbea0-1bd5-46ca-b3ed-2d2d2da5fc66 eeef49a0-bea5-4025-8c76-cae7d380e0ce 7a59bbe2-11a5-418e-94d9-27a7fcb96bc0 4708e782-6cab-407b-9d86-9d9290d5b2e2 133c47e9-dddf-4613-bdc8-401906cccc33 38c43f06-9b83-4296-a76a-02de335bf60c a9d9f383-d517-40b7-be08-0ec470e2a867 fc587686-e302-4d49-97b7-6ee8f9a2871d daa94d75-a33a-4b67-b2d6-1d2b97828044 ad9b968a-a6e8-4ed7-99b9-65b02562bff8 dc483377-9d05-4397-965d-573a8aa28554 06591d68-a526-44f3-afe8-b8ed83f3cc3b 6f0a8752-f309-4508-a9f0-e198768426cb fa8f287b-70d1-44b0-9542-46af7c9869bb b6add9bc-f1cd-457b-8fef-3fb7b5a92c7c 3cc53293-5032-4d58-b2e1-b96fd14f9f4a 61dda18d-c5cb-46ab-a77a-2b5657e40986 c4a98ad2-c265-475f-87f6-be06b7cee9f6 867e8d3d-d37d-41b6-973e-3cad21d16882 600ef8b8-2bdf-412d-b966-a7f5441d4541 3cc2fb0e-7212-4bc3-9c64-e77ea8016e46 a65a1c87-539b-4429-9a5f-fb116946f2c1 6f13bf78-6d18-4718-bd60-2c3d0c6881cb 7494be55-98ef-4e34-8b90-e54e138ad5f1 d6431f54-9984-435f-868d-bb819696c3dc e031156b-ab8d-474c-8135-a3e8a8a19342 5209f381-4eed-4ecf-a465-e3778ba871a8 350326a0-f5cf-40b2-b273-9ce8ae42d315 8f308001-775e-48ed-97ff-70e37a24b3e8 fffc2b01-3001-4a31-8b0b-7fda23e2bbcf 60be8603-0cb8-4b8d-babc-f4e71ef10a70 b0a669bd-5539-4bd9-bc44-f13501b2fe3e 1432f58c-5de9-418e-a8d0-93c0277ef15a a4df76eb-8017-48c3-881d-d419e7cab22e 16c7be80-b127-4c6a-8b1a-3eab4a272cc6 b415b2fa-af60-40d3-8c40-9c5f49554f42 8fed4466-9c3f-4a80-9af7-ae6b995620c0 b23ba84d-f16e-4cfe-ac8b-2f2d3b016761 c5b2eba1-c2c7-4fe7-8732-be54522b664c 88f5c34a-eafd-4358-9dc1-f1e8b1d34b3e 32d29de5-4711-4909-9600-a85c836de219 28980382-c36e-4922-a51d-389dfad55588 f7244eff-cfcb-40ec-a66f-5043521d02eb f2efa784-7309-438f-9212-c668097db17c d53bae1c-38f0-4b4a-b686-cc66d45b14a0 8a31fb2c-f4c9-455e-bb16-73e47930aee6 66ced865-4f50-404a-baa8-b5e0f8cd3ebc 5cde34f3-d97d-4d6b-b0e1-db1051c99024 df9e0098-edac-4a76-8c7f-1560a4b9465a 2b4e992d-8212-433d-82ce-62e7ff7ada8b 416131d5-4e82-4e56-841d-67072aa52137 6179020a-81a1-4cc9-a8b0-1fbca3bd1b17 ef048e6e-9a57-4f37-b015-2f3020815132 32a66b97-00d0-4218-8edd-7d6e5902e208 cf7efc53-4efa-47fa-ae8d-0aac475d1b06 81697377-6295-4d95-bba4-0e08c5cd63fc e51e579c-1f82-4184-b609-dd9058b220ba 6b8b9448-ef46-48e6-9bad-a3bde5af897f 07f7e544-9c50-4a5d-b7d8-385181e15682 df456d55-debd-40c4-87d6-e0b3fc20e8fb 2401fd37-a39a-466c-8ccb-01421c70ceee a70be684-4eaa-43a2-bc5d-228b2bdae4f5 be05b8da-a824-4e8d-84c8-7636f7335ae7 96bb216e-d70e-4873-a1ed-ba6f44095bd3 cd1071e1-6738-4b34-a3e4-6cbcb4c770a3 79cb3b51-10e7-4b3c-96f3-538374d6e78c 9568bfc9-ebcc-4462-a696-f5b2deb909c8 baa29db5-31d3-4bd1-9866-0282b7721b2b d9d6b1af-0ceb-4ae1-a6ba-0a3d2eb8388c b1bf4395-2124-4c8c-9cca-700b6f16b50d d49f8c80-73a1-42a6-a741-6bc07493307a 264a5c11-81a1-4256-9286-d498f5e11e77 322b4e2f-720e-4f3e-9aab-e2041c2237f8 d35b499f-c505-4cd6-8c33-1a3e44f17f1c 2931bf55-0dfd-4fcf-b278-7f5dc4fcd1ca 0f519242-f6cf-464d-a358-bac6bf512aac 69fc0777-d9a9-44ac-b13d-fed9d0902496 b2a370ee-01ff-4e92-a02e-ded8b8fd1b50 aced876c-474f-4da2-81b1-84e3245b11f3 1b4f521d-e89a-4d67-98bf-951efdda94b2 79a82ce1-49c3-4c9c-8c9a-c2026d5bb1be 32910f08-1586-4bd1-b4be-076c319d13e0 77da1c8b-d5f6-4786-a591-9a3c6e68e1a1 a66896d7-ebdc-444f-8b98-bac4ec80f281 00e52264-f338-47a1-9e19-be8ddef376d5 c2091d37-a247-42ce-a351-de2b8c0a7f03 395c50b3-8027-4c68-b8d2-96796cd20ea9 b94b5c52-f591-4e7f-84a5-17bceec43e57 e6047379-3b59-44d9-9ed7-37abcbc09ad4 398557c5-ab9a-45df-93f7-27805b93f90f 4e3e61f9-4c8c-413c-86c2-119329e44963 582debbc-6467-4894-9554-31bbf58e1de6 a0e577cb-d857-453b-b816-6ce98e729d87 2852931d-404f-45db-94df-d4cce2884ec4 665a5cdd-dc2c-4010-886b-389b644600fb a5395983-d2ae-402e-aeb4-193cd9672b0b efd59ccf-8d57-4b98-aa6a-c1d1bfc361ed 7541223b-776f-402f-a785-11c9d2d6bfd9 b38d3842-4f10-4087-96e0-3c353ed7b9f7 24875ad5-b0b1-4ab7-99e3-547619d678a3 1eac21b8-1001-4af2-9198-5c3943cbee4f f817ab34-fafd-4817-9aac-9d404e269bb9 c239d565-b200-45f6-a3f5-a7466b6d2b8f cf57a8d0-8587-4478-a57f-c05b3d77734a 2127d907-8cb2-4d64-ba1e-6eb571e54433 e9658e05-0cd3-46c2-a2f5-23091a51204c 04607264-7406-430c-b40f-a4f9348f1db3 9dbf601f-11ac-4aec-bbf1-4b663ce4a27c 8eaeb565-3951-480e-a10a-00cbbc2eb913 7255cb4a-082f-4baa-ab68-816795a6bf19 cf0e7369-508f-4660-a7e4-7a35c8475910 7f1d2986-a826-46c8-8042-7652010533d4 e2130276-655f-4475-90cd-728815b5c6e0 8a066d4c-481c-4686-8825-55ee6682d1b9 b6967c64-99f6-42dc-829c-3f60caff3e33 7afed331-aec3-4e03-9538-954c440c800c a17d4faf-f874-4af5-92a5-4c30481b8517 7f5f712b-82a8-4784-b52d-6d5b9b4953f1 e2acd6bd-d315-4a27-83a8-36c514614549 a61515a7-d0cb-43aa-a2ce-31462d84aa75 d3ee28ca-7268-485d-8cb0-fa6a6f67afe3 68900145-36c4-4b42-8046-80257c512002 fc487154-296f-4770-a647-2166a9708f82 e0f24019-49b4-4b68-be91-13a2b42e4acd 20a8ddde-f1e1-4420-aebc-33a1bd28d4c9 b5e25da0-9524-4c7f-a0be-93a25275d170 b2058c67-2449-4ddb-b925-bf66950e5c14 53cd3156-7aba-4834-98e7-1e64d14ecd26 3a794ef1-15a3-41f0-bf56-16db4ec836c8 c4d0d86d-cda2-4308-a51a-dd50b955d3a5 80c5fa0b-7834-443a-872c-cb16980111db bbcf3720-79dd-4118-9a87-991f98094984 cea1b953-eb94-48b9-ba41-6c2de7d59874 3fd8694b-6a90-429a-ba62-04565473a78f 80f92f6e-bf04-4f17-91e5-083e12c7d3bb 81daf28c-b560-4485-9459-06cd69c6860e 737c44d9-9f5e-4c7e-96fe-9d73890306d4 2556b5c4-4242-4861-beb4-f98692a7f12e 63eedd8b-04f4-4c7e-a3d5-baa0cd9a3afe 338a98d5-8f4c-4386-a93f-b45b2e5561dd 0a9cf59a-3c93-4887-9320-b58fbe11ce95 b87c4d0c-73c8-4abc-94f6-ce1e91da18a9 967773fa-ae78-470a-b786-53df5b870d22 2819c568-8ff0-4694-bb71-1b398cb43767 4fa5b6e6-8ce4-45cf-9a16-51c34ab6e96a 7fa98815-8a31-4d88-a06e-bfe2c83c012a 07b8d233-17a8-4888-82aa-afafcad7d7ed 9863c4ce-b7fd-41e3-9dde-d940a292a61c 870d40ab-5ea4-49ca-8bfd-84ccbe5b1b99 431b9839-b87c-44cd-92eb-7345c2b93164 6dee6dd8-2395-4da4-94e3-849c6b3a99e9 6c5a0a2a-dfa5-4111-a66a-e0ccf569e96f c61bf1e4-9ebe-4d29-b255-f5e24587dbee 1b75d369-2aaf-4c78-b1e5-7137f760dff9 5ed7644f-6270-4a83-a290-35ceff625f3e a00d8169-392b-46d7-b703-72ea0854fb8f ae4b03b1-1881-4e81-8d3e-66f9811b8161 83a5e2da-5488-41d2-805a-71eeeb229048 6d9b657a-5781-425a-8507-fb528de3e784 25887909-f390-44be-b521-032923c551dc 34bf7c38-7734-4b3e-a36d-1c35c1ab2bf4 0fbdb302-f144-4b29-9e5f-5edcd588c45c 364a4c98-61ff-4135-a41d-14457b0331e5 cc41f81f-a2c2-4b88-94af-81759c47c9a5 0ea593d5-0537-47a0-81b4-0b8bbc88c10a f89c4511-c5fb-4d77-9422-dd638d740ea9 64ed0a08-6a0a-451c-80a7-b76a1bbfba88 6ff9633d-2e9d-44f2-b286-3762e1a250a0 dd33dc40-1686-4b7f-924d-2004fefe5931 aa963fb9-79a7-47a5-8774-174ae2643a93 d19b2ee4-5d77-4175-a68d-590afbe8442f be509532-9c45-45a2-a1c0-564aa8e4c46b 5e971d64-7ba4-4e5c-aeba-c15f904c5c46 de4fbd21-fa5e-4071-972a-cac7e7a4be82 cdf52735-031c-4f58-9f3d-2078c65b7b8c d70ca8a3-df2e-477f-92a7-056542cb0d5e cb8e5fba-b923-4f63-ab92-87dab382ca44 e0636978-a698-4c09-b2d8-4b2f2570f498 93c55142-f395-482d-b00a-e75a32736589 ee62448f-6a06-4821-bd6e-d5b833ffa1df d4d25255-7f01-4a8b-9e0b-1f1ab2e5d102 84132703-36e0-42e7-9407-a98b17ffde69 4efdd18e-59e3-4e03-a4a0-a9a6dbb3065e bde658d3-7e4c-4832-aff8-0200ad27dd92 4ddd37b1-6e2b-489e-b05b-e72c8d441e9b a91486ff-253e-4b6b-beb3-e67419b724cf d0b8314f-3b15-45d3-897d-33406ad32037 3a9961c3-6118-4948-85d1-d6479d747f91 5868511c-7177-46ed-91cd-412e73f2da7a 19e7270b-9db5-4ae7-ba84-9bb8d1ce8a48 805c9d0b-4109-4afb-9294-0daa2e0e76ae e6e4309a-05e3-489b-95c6-6500af183a09 c7edef99-0435-471a-8ddd-cf1e7b95dc7b 90ef1bb5-9f28-475e-b44e-c54160a2eb47 10000f05-1223-4e8f-a802-a513d829fc89 7a4ba75f-275a-4dfa-97bd-35c55917a95e 1864c362-4ca8-486e-85c4-f259bc797a22 e29bfd61-3f99-449a-9337-71b7d5c2e46f 2e302879-a296-4ad0-960f-a9688c1369e1 80bbf640-5b10-43c4-a7b1-35a6fda9c5c3 378bfb4e-3f6f-4797-a380-55f1fe458196 64f73f4b-4aa0-4e98-9a5a-41ef18fe29d2 9aea24b0-4422-45a8-b316-c430d78b4473 a1e548ae-f7f2-44b8-91e1-5b2eacf8769d 00f6b698-8e52-48ee-91b3-a77170114af3 773a4c8f-5ee4-45f8-a4df-e97e325bcca0 6b2ca675-bf2e-48f2-9a72-6c0dee4c654d 9b0352e1-9881-440c-8fee-feb9e1bf0b31 61224fb1-b503-40b2-bab2-77ee47c1ad62 cb3fba10-cd35-4395-95c2-46abe483a4be 9dddd186-dcb6-4b5f-9ab5-96e39b0c3555 413ac6f5-85c1-4feb-9133-02fbff39c31e 695b1dbd-0831-43a2-b5e0-f7e73da88683 c8a2746f-9749-4191-a7c6-cab698f7e74b 7a0bb661-9296-4437-9da8-f87616ef815f 61ca03bf-ccb4-401d-ba02-d9e61f42c885 fce92eb9-ebfe-42ff-9dde-58c0a6ef1fa4 f1ad49e9-ecf0-46ae-aac4-48beb0b20666 de16a3d2-6cac-4a80-a5ac-880c4746e921 be8f0fd2-3fea-4ac0-bfe4-ab5a5f8de0a3 8f28af0d-42b7-4db4-9eb1-be3dd7fe6f56 9a62ee5a-c822-47e9-a437-2361a2b26018 413cf8f7-baac-4d2f-9c99-a719e5e9c05d af82e09a-b15d-458f-a838-928839740f3e 33560034-ffb2-498a-b2de-2a31590cc88d 3263e688-e321-4671-a7a1-3964cc890bda 0b793037-2ee7-4dce-8a28-d2729f93920c f10bd07d-f408-4cfc-b28c-361db388cb9a ae7db3a2-4aea-4aab-897f-fbf68b5cc82e 0f7b15f5-c033-4b7d-8462-b913ac053287 bc39a557-0ca2-4461-bd72-80ae1d5e3106 55322c40-77c9-4f7d-91e8-ef472e7597c6 16cf10ea-16c7-4bec-b1fb-041e54f1a46d 6fd82542-0933-4f36-b694-d8674b022a3c cf83e534-b379-46fd-886e-88b2ef94f930 20a93af8-1451-4650-ada9-732852123b89 8ffc0a63-71f1-426a-abc2-c71470a4d19f 880eb0c4-a7d3-4354-b90c-91bebaf9cc93 d6ce0a26-f3bb-432d-81aa-c8cb393382f0 80528317-b092-4e95-b543-745b7da8b22f c5e5c49b-fa6b-4abc-942c-9f9a15f7280f e8da6e99-aa2c-40e2-917e-cf1c96b3299f ec7fdf13-e023-4101-8dba-f5b7a010e62a 9787b0f6-6f0f-4d8e-92dc-5d8a66ef1fda 71808a10-1843-478e-9586-ed1954d728e0 4b4ea532-559d-4e7a-b6fd-0cef13cccae8 ac8c6383-aa62-4af6-96b0-8affdb6bc2a9 b522601e-5247-41bf-be18-1f092494c0a6 218cf3b1-8d1a-454e-bd67-c120beeb2be4 c9b0c21c-d5cb-4402-99cd-e26d114f7e39 58446448-7c88-4a91-a5b4-52b134d614a3 31aa0203-8192-4d6e-8520-6f2c853c3118 c1eb8ef7-68da-4d81-87db-02a2e4e40c93 a0bf475b-e779-4957-8a3e-64ceee2d3f3a 1c8b1cb5-ced4-4d78-9ee9-5625ed1347ce 31a8774d-3d4e-4e95-8361-d69ae7d8e566 39a54025-6344-4a2d-b57a-7aca2956d121 05ff0ea0-829e-45d7-a7ad-47f88d9602c2 deeacb98-30c4-4612-9f7c-9d1055ef543e 042f9df3-f142-4192-a0b5-ea4611176553 f37f1df3-1d4f-40fb-ada1-a4d8454fc6b2 8539a20a-0df2-4550-b43e-89e4396623ad 598e509f-db37-4ff4-9728-4ed9b2f175e4 1aeaf49d-f4f2-437d-8ee9-4637e0e53558 0fd4b76f-d46e-4a22-8cdf-e8d4d7f34481 e2fba8ec-1d01-4434-9ebb-3f3fe4346734 947c43b9-918b-4f9b-ac0b-1cc58e07f266 490d4112-73f2-4318-9f7f-7a34d593f8af 5bcad3bb-0842-4c10-ba77-b9e1de52a38f c1fbbfe1-d584-4552-96de-aef03c4cfb68 aebee90f-0a4e-43d4-b79b-8a761f37b0c1 36e95210-c13a-4085-bbfb-d0fa0c17c9c2 c9fd6f99-f743-4306-b3de-80672060163f b541a24b-23df-465c-a6e1-5623841b841e 5056aa8a-b59d-4800-9563-539078a33a62 49f10f16-25fe-4756-b80d-05d74f60c815 1716bb86-7e95-432e-ab18-12b8e69390c5 9ae77136-6819-40c6-adc0-527c357921c7 762a0bed-39fe-46b3-986b-b1b6324ddf40 99587366-0411-4d86-97b1-57ea40a9da63 1a8776d6-15c2-4bb1-aed5-32d918f97679 7daf53ab-60c1-41d8-b8c4-60cacda87db5 cd1c65bb-f110-4110-a96a-689956b8a08c 67b1bbc5-7a27-44ca-8346-ed6d8e167920 67eea3a5-e83b-4921-b6fc-8bf92b00a156 37405424-15ec-41ee-848c-1ff9a4b2f4b6 e231b088-31dc-4144-a6b4-cce995621a3a 78010060-1365-4a10-a979-d53c1f0b101c 42f19402-eedd-47eb-bc1c-7c8ac8f748bb 7fb4a27b-9ca4-468a-98fe-13e68b844aae c8496bc0-f161-4118-b96a-a9d5d2c4ddb7 054ae740-0309-443b-837e-88f28d13269b 1e219c64-11e3-4e7e-849d-c61b1c91b339 cb2ce6a2-2a37-4636-81d7-ae775fe8d5bd 785efd66-e5ed-4123-b8c4-9089714d0aa2 4a7e9c24-822a-4ad2-a64b-48837701d595 015dff8b-ad42-4074-bc4b-f5bcb115151d 1dcd7098-ffaa-4d33-83fb-26e7ac319762 685a4af8-6c20-4607-a0cc-e76d268146e2 0ffbadbe-9188-49bd-a645-b4da21fe2f74 328e9e4f-0c39-4c11-b63e-2059470d3296 8c8cc32f-a662-4c6a-9ced-a53506c56aa1 9d8ae068-d8cf-4c52-9d4d-6a662b537a9b d422b282-c0c1-4fc5-aefe-2729d3c0a333 3c5dd907-f5c9-4232-a745-134aef29bb6f 5e3fd23d-5608-4bb5-a659-bfe8bed151a5 53942770-c429-44f4-b926-5e1d2fc66e0e aae04779-6126-4868-9720-3103f401b947 d38e148f-8f21-4550-a391-746e97bb6871 b828107c-a864-409f-9390-cbc6950fbd12 980979d7-a150-439a-8adb-08c921559407 329fec88-a935-4cd2-a028-d5e78e0ca1ae fad7be18-9cd0-47d2-99bc-9016e220d700 482611d1-ad32-4ecb-afa5-1f45714776b5 a3b9db15-e118-4dc0-bf25-a3b5867ee46c a580bbe3-7d1e-4667-966e-fae86c47e53a 7eac778a-db3a-4b99-91f9-6eb76a8cd31a b36789e4-1d25-49b5-8dd0-9c4c960c5557 4f4990f4-25dd-4b16-9aed-27ddcc712302 77d6d432-d7fe-47d6-b076-6465ea3044ad e955524d-3bc6-488c-990c-ea77712e8988 beb63b00-6bad-44fe-a0ba-58c70816abd4 2f03fb49-b82b-4729-a8c1-99971b898289 14fcaedb-bc2e-4f31-99c8-ce6c73222711 f6496b63-5229-4195-bcd5-5a91427ea823 a5895f06-4a35-49d5-bcf1-1352d6170ec7 b354eaea-0213-4b05-9bb9-56f878aed3da 15137395-892c-40a3-b1cf-799dbf94ae8a 8f079df7-b44c-461f-97fd-4cafbce715ad c0f30f6f-ea47-4022-8fed-784482e01068 aff46bc7-51be-44c6-a742-4f6082f3199e 284252fd-81ef-4561-9f17-c5334b07078f 19686226-a6f8-46f2-9b2f-3808a02fa10b f8360cc3-ddcf-4998-8147-433b4e736d43 d6037211-f70f-49fa-8bbf-75b2026ca5f5 c6cc8c4a-ca98-4f58-9bdf-6f8fc81e430f 32dc5a35-9450-45fe-9d30-434800587a6b cd2daf98-0bc7-4f89-951c-0c7185f496b2 ac9bdb22-87f3-487e-9274-8595cf6f0780 56387b1d-731c-4bc2-a3a0-c98567cbd9ce 43d6d7c2-06cc-460f-a7a2-e5279a59d0c7 e820f8f5-593e-4ac2-b73e-6e02459d1394 e212be0f-a4fe-4516-a3d3-ba4acaaef720 244c37a3-2841-468e-a7f5-51ce4f9002ce be355faa-a8b9-4e64-92f2-c660f1995dbf 4b1c1196-438c-4f0a-90bc-36d4a92e994b 07a2d250-f81b-4076-a033-37a09b2caf7e 49bb729f-e325-43b5-a58d-95623c8252e8 5e629ffa-69d8-4708-a6f6-5174a3b8a908 eb9fa424-3c1c-46f3-bbec-7cb706595de2 f42c6af4-301b-4d13-bea9-9b1c5c6305bf 2cbff803-7488-442e-af1d-4d730f20f1db 58944278-9ed5-46ac-af22-f3cba1615e90 a213426f-32f3-45b1-895d-4a14e6776399 69ba0717-d22e-4fc7-91c8-b65db77bbaf6 8c0ef384-c5e7-4125-ad2d-6127c4d03295 73b80a45-c613-4311-800f-18640245d4ae bc8506ed-a9af-4615-9dbd-d8835e70664f 0e055820-8fe7-4874-a540-e0bf40063059 ea11d49a-a260-44fa-b278-9fc63bc1ab16 907610ee-3b58-480c-85f7-1624bbca64bd b1644671-dc1b-46b3-aeac-90596fbd0746 227e0fb2-5ae1-4246-9d01-378e24624bcd 2d058bdb-11e9-4801-89f4-4142456cd3c7 d4fdb426-e4c9-465b-80cc-d0ae11570cf8 ef800f69-ded6-40b9-904a-04637fb3e0bb 82e00dba-e51e-4bd4-828b-e8b5c6cca769 b4418db4-2127-4022-b731-c0b81d05de92 6370a624-7d90-4eef-83ab-ab533136e385 40742759-1f89-4a00-b29c-9465028ddd5b b2decfa2-2777-477c-9028-e874e4c7d381 40488ac1-bb9c-436a-b83e-b00314273eb0 5a6a62c7-9d96-41b4-ba8a-da1b2fb4ed3a 76a79354-a354-4868-8f96-a02da2bc52fb f805141e-4a81-4419-8fe6-9d3d77f08cdf c9569a1b-82a1-426d-b337-f9d492c1b5fa eca7dee9-81e9-45b6-9109-f2ee028c55df 3c41f748-7557-4d1c-ba91-cfe243a43c8e a9dd4bad-ab24-4c99-8b4f-c5393de27376 902c57ac-3f1f-4b41-b014-fbbfc476df9d 3d04417b-b0b1-4f3d-b33c-a8a45e55ed18 64b49ba9-ae34-4818-8101-29081179c6b2 770c3468-29d8-4941-ad89-08e993b9ccc3 6a4b7394-de03-4ee6-b2bb-4c94a34fe1e6 13c970fa-19c7-406a-9848-ed0044a1bc74 fd4f6c81-8bc3-47ae-8770-1ae30865edb1 5a69246d-0b1b-497d-9d84-005083d11564 bcd89d4c-5599-41d9-80a5-a2393a216c32 97e3e6a1-c51b-4d40-822f-bf9ef961a99f 2f609aac-7cc1-457c-86c2-77f19cdff45a 30f71076-0492-41a1-8a09-d837b823c75b 94049dfb-1fcc-4fd4-ae2e-526a4d82485c ad806a6f-be26-4c1c-a08d-48705b04d2b3 4a8f62ee-7ea5-460b-8ed9-573959003d2c 4911d93e-343b-4b62-ad7b-e791b0b0daa6 7d27a5ce-f7c9-4acc-932b-a5870139f38e 4bd6a124-edc0-4ad2-a840-2553cb5a1a55 f9646b4d-eddc-488b-9f73-dea66d4cf6a1 af349fc6-678c-42b8-83f8-1f4c06cf6b2e d4ed17eb-e50b-4a71-83ed-761def49ad6f 34cffe79-f612-45fe-9297-bbf3a7e06a46 2cee1155-7e2a-4642-a42e-a62f171fd43a dcd6a90a-a81f-47b2-bb60-d7dc2ffebc25 ba4b78dd-ec41-4dc5-8c5a-f8d286b6d2b9 24dc0c24-6eaa-411e-84ec-b99f9eca4c73 eb4dc364-2221-4d01-8989-6172f913e5b3 3afdc181-2ff8-492d-b03c-68a296120f29 4aeccb77-8a85-464d-af56-1600e4ffe878 3e4096c9-844a-4411-8e10-0b0cf4ff6a5f 87cc5904-2a3b-48c5-8427-a79ea8e96f5a ff1df4b9-10fa-40d8-bd20-e05775022aa9 7f966a79-eb58-44b3-abc7-90a5e86ea055 98c1e568-af11-4c65-91b6-3ca2c2266c82 8241afb0-18af-448d-8b75-cbdb38a6b885 c03d25b2-a91f-47f7-993a-89789d12a946 79e9e4cc-2d7c-4249-98a9-9efe4b3d6e7e b6a48903-8755-43ad-ab4b-ef0fee2ccb5f 77b08303-720c-4234-abd0-df16a8341449 d12f3759-4049-47c6-bb06-0e263f288f17 17c1e8dc-03a1-496b-8bca-290fcfdec420 2e11207c-8e6a-410a-8c3b-be9834145587 fae11ad2-b6e5-44e7-bc54-62f6912df293 fce61ba7-a486-4720-86aa-d174175743fd fc4c3a9a-d87b-4f63-af48-7b6403181e66 9578a844-21db-4a10-ad11-0362b85f5f94 75f05b0c-9384-4882-8ea1-7fd5925bbc25 82a89fac-c27e-4f72-a984-3095bc8ab4d0 1f19e6c8-e572-458d-b30a-50c1a72b30ee 68c5dff6-3a6f-4f50-a1bd-54e868e35469 fd1f05ce-4f89-4898-b0da-48da004a1fa7 2ab265c7-8624-4ef3-82c9-3c517d1df2ab 0c2b6cc3-3e0f-43e0-96f7-20c718ebef11 b2d8e9b6-5c0d-42d3-9daf-a3faae7b490e ba1b16a6-ac64-4be7-89e6-330fa7ff065b 79045a36-979d-415f-a414-5925aeee9ab4 33c7df38-605c-4896-ba8a-2f9466c40f19 73f34047-fe2a-4532-b671-d36ed19e73d6 46c28e7e-c13f-4ff6-80e1-b4c226d21baa 3d42adc5-cf6e-47ed-8895-e9b9222820e0 8db33d4b-b269-4320-929d-6b853582acce 908b13b4-e140-4bcc-9761-2d0a9062c016 696c810b-118d-4561-bcf9-3c20c304625c f06ea362-a1ca-463c-9775-825fda3375dc bdf277e1-5653-4bd8-b711-f0d1778ee191 24b0d67b-aaa6-4b76-9915-0a90c52cac27 4374a737-7733-4956-aa47-7c50a6d48baa 1896b124-2a89-4518-9a28-b433a30b6682 afea907f-c084-4628-8798-4d2d669dd937 9f053d4a-ef42-4cec-bbab-7fadc8a66947 ee2094cd-5a96-468a-a3ea-aae0237d2455 bc121499-a93d-4db0-9257-8b975117054e 037acbd8-638d-4ca6-b536-a79aa7b5d324 4ebf780a-c688-44c9-aa2d-a2d8f08a09ee 0833f3f0-e692-4a66-b322-7875f429e630 8a7872f0-f776-4818-a89e-6fe1f2666dc0 cead2cd0-82a9-4161-8394-cbbd197ddd66 924944ce-7569-47e4-ad7f-9bb79756e8cd 2e3f5ddf-2e35-4d22-a75b-775b2fedc085 9d07ce3b-661d-4806-870f-5e468acb373c 67e643e3-133a-4d4c-9669-1b3a600b4ce0 bf8fb3d2-6709-4490-b45f-a38631854a9f cfdb3e4c-aeda-442d-8131-4f6f07386f79 7224cf43-a580-446a-a75f-f28769b71217 7425e741-17dc-4130-832a-1a91a9be767c fffe0fd5-a9d9-4165-b59c-af8dee26138e 6a5853c9-c58b-4041-a9ee-dc1dc06c9231 65bf5c2c-b86a-4369-91a9-3638ea24fa45 6b8d92dd-2b10-4f06-b0ec-bc5cad431ad3 84c45cfe-8203-40b7-b398-ef4813dac369 2b0af5df-b492-4b31-905b-9476e9160485 16294599-bad2-48fc-b6d4-68ddf2fd8d91 de74acce-22bb-46ef-88cc-8e1917bcf98a 153dd773-3ff9-47ad-b9cc-577e3be1f627 5b1788c8-5c4a-40ea-9f7d-5f09a00fa07e bd178736-32b3-4a5e-8714-c4c6acc02858 86f3a1ce-b51a-4829-93a3-1e9279ed0001 39b96c17-db81-4faf-84f2-3f4ee2a8b8f9 e2229f7b-7b2f-4fd5-ab70-b5a45cdb35ad 5a736d62-6e11-43f3-8993-2c91eeb04c45 b5c901ee-41d4-4d79-900f-75480716d069 ffc8d4a0-234e-4ed3-95be-ae74b9e71fd6 7245ecd7-55eb-4aea-a8e6-2dcaa2581909 3b7a22fe-8c73-4061-8fd8-1454b8da296e 7f61f51e-e483-4597-bae9-2f7efeb2cd4d 08a145bb-4bda-4e71-8ef1-dce4251848b7 f3a8930e-f665-4512-a9f1-119868367cd1 403f288a-b3ba-4788-a150-36f9a6eed221 db3e3811-22ad-48ee-a430-b5524c5b3479 952d5bb1-c0de-4312-8931-026498a3b7e7 5a20f57e-9d94-4225-b7e2-123f8cc9cb9c 047fee9c-ce83-4ed8-b9a8-4405347f7574 2baabe35-27ac-421f-ad1f-3a2cf1d6de9a 45a72ca7-6f41-4cc2-89e2-dba40d05cd0b bc8a7be7-ec30-49a2-941b-eed5634132d2 99f9824e-9e85-4df1-a618-45b5d6cbe745 c12e6841-d66c-4931-b974-5d88f2674511 c98d960d-f923-45d2-98e6-1ea67dadd432 558bec3c-7eac-4017-90b8-c4955408f090 98230867-3434-43ee-9f96-8f8c8eb77f8b 0edf08f7-1cdb-4e23-96b8-8d19c2387d3a bfa63e09-327d-4eea-80bb-a2c49420f6b3 f51621c7-e735-4024-99cd-8f1b06910c48 506bd907-3f28-43ef-af35-414c36e90e58 f3865e55-a124-4dfe-89c2-694737aa05a7 a9c4d4e7-188a-4aab-8396-ff7e1e317ae4 fa48de28-fc64-4ad8-abe4-36c3ae5c30f3 782ea03f-67aa-41bd-aa98-7a1e1db3e139 55c377a3-4406-4102-953d-4b5373bb3b03 cc599060-bec1-4a19-8a0a-5b26920f5a27 ea30323b-a648-4aa2-9feb-3325eb0d309d 23b3ef03-af59-4da7-a871-375ac02be9c5 84e3ef3a-0135-466a-b534-8a87741af92f 56a74ad0-dbf1-4f98-ac33-1c0e2522afd8 8340ca17-a31c-43af-a6fb-260f17ba3a15 245b4ab9-c608-40ab-9ceb-539516f1140a c59ec872-0b07-440c-8922-f29299b11ca4 f2ca559e-0890-4bfd-8dad-2e0df9d3d48e 3d7cf0c8-c94f-4d4c-8a19-ed8539fc14f6 78a7a0c6-6cc7-4fea-8e66-1fb13c2ffb83 5917aa13-ca48-4727-b7fa-5ce260e7535e d260eb3e-b4f6-458d-889c-647c5345ce72 447b70cb-aa46-43bd-8f3d-d9ded3a9560e 075058db-8020-46a5-ba68-be69bd63bfc9 b9c04196-bc72-40fc-83b0-d308ac34012c eb48d179-00b7-4357-993a-40269e1cef57 c7eb4329-9d2b-460a-a6b3-01961638ecf5 29e5e9a7-ee3d-4bb4-92bb-b5d2d9599b4c 2e558d40-285c-44b3-a088-a5630e1d931e fa700fdb-f5bc-4cbd-96be-ab4267267f12 e15b01e5-341c-4040-b89d-483c6b441911 932a5cd6-8cac-4e5a-ae4a-eddf83dc3402 80fe9043-b26b-4258-9c97-52676c029b5d 6981879d-ccf7-446e-8559-88cdc791ee70 f6062f99-6f6e-4f3a-8c54-a58ce2738d3c a78381ae-c40e-432a-a774-bd1e910f766f f782d965-67a5-4f4f-bc94-549a4e8a051e 674b1277-16ec-4d3a-9072-57b5282d3fb1 c294228f-e565-4a77-9fec-c6b200092b85 8e8b2409-0bbf-4b78-ab32-f9538a15271f de5586c9-5745-42c6-8004-91a161660c74 22bd7267-e4df-46cd-b319-98a6c28579b3 7768a6a3-cfb9-4b48-a21e-fc48a8f35dc5 9caca0c4-e8ad-4d92-96dc-80720bb70bc1 0552c79a-eb28-4c0d-bc6f-0c6a46eb96f4 e99fdaa3-3fba-4b67-97bb-143f2b4c2ff8 a47d6a80-6552-427f-bd08-c4448b330aae 73fed7fe-f5c1-4486-8acc-125a95f31149 687ed3e4-dd9e-483e-8736-4b54d92bede5 3673715a-768e-413b-96fe-7df94ac0cb34 79f803dc-1bb1-45aa-84a9-9cee4399cb03 6a676b6c-4cbb-4f85-95ef-5dec2684f6a5 c305083a-b32a-49a8-aa4e-c2da3a8dae16 f5db725d-8c9a-4dda-8bca-86a0253c4ff6 256c30cc-4c1c-484a-bd8d-98eb69f163bb d39a1a73-80ad-40a4-abd2-87b4a8123b9f f0077208-d46b-4c19-8ba9-d34d1bde8eb7 26c48a0f-429e-48bc-8e1b-7b9e5a2c0385 13707f33-3d98-42e8-baae-34b3bbf0cd2f 61bef656-c94a-412d-921e-0c311b4aea3f e5bea689-553c-4f18-bfb8-182c879657c6 4ef4c7a8-9ac0-4215-90cb-3ec777c0f913 6a7cb5b5-5b25-426a-8b4b-05d375cda867 8bf4d8cc-26f1-48ad-9baa-5d83cab8904a 051f1de9-7baf-4027-932e-8b7cb449f064 370c1777-45fa-47e5-a0a1-b8e108ef840b 165a242b-9076-4aad-84f0-9834c4f31d2e a2c3173e-bf2a-4ea1-8189-fe6f540777c3 2d225c34-5c96-4ab5-bff8-50a0c317c65d d75055ac-bc55-4081-8e5c-744d23fdc2e3 66c31126-ab34-4372-adea-0d29ff5b4596 8bf1ee6f-8145-40cc-a198-56e4e161dbe6 383b71cc-8acf-4aa8-b7e5-da74bf8039d8 bcb40c62-1ca0-4e99-8b82-b01f55d89e2b 8d1e006e-317e-4d9b-b02f-f4fab5cd5257 13195184-efe7-4988-86d5-3eda855930bf b000a0d1-1dcb-41a5-8bd0-0ecd785abe23 369cdb53-257a-4c07-8b89-7391d820d3df 59e7f787-3ea9-4c82-aff0-ad849f252b8a 5e299642-d980-4290-940b-7a32b412ae12 0c622b51-33b1-41b6-9636-065639ce5212 e555c09f-c788-4437-91e8-9dc3f0affa74 63f30067-b6dc-4ae3-beab-1788591b7103 82a62e30-1daf-4842-85d0-2eae1ba566de e33d6181-b467-420c-88ce-be7482fd31ec 66b823cc-752c-4612-aace-ea4338441594 b9d2bcf3-fef5-402c-bae4-a04935c96151 f6f387a3-ad05-4a54-9853-0f322debd043 c0422eeb-e3ef-4a9d-84da-b88d79ced55e eb4efe31-06a4-4422-9d3b-83ef33407535 f54bb571-e176-482c-bc22-93908610519c 3fb0ad20-f1cf-49d7-9834-1fd5a096a726 8e09086b-856c-4666-97d1-a052c2c6e80b b8cf245a-1a06-439c-b67f-bcd646c162da 17ce1eab-4c0c-4c05-be69-a205b4f7cb51 cbd540ed-a222-4bd7-875b-c654a43b5e32 0b0392c9-df00-4bde-af4a-3bc032f12286 a9a99b86-ccbe-4fba-8b39-ab50ee56f90d c641bc76-5ef9-4d8e-9af0-10a6f3f8cc2f 53891e56-432f-4c7b-8243-25f8f2e5e554 12ebf018-9cb3-4160-ae02-8d41fccf5455 47550ba1-2066-452f-89f9-fe30303bed89 04b1c0e2-2be5-4577-bbe7-d2dc26396128 85cb5ea8-3b65-49d8-ba88-047a7a1b3e1d 84eb1152-a3b7-4586-9afb-c06c68d5d2cb d8071be3-7d61-478c-bedd-1e76d8827b35 f83db645-caa5-405a-8f22-4fd865e6a0e1 bd43d218-6493-4342-bff9-0c8728b1265a ad211989-dda1-46c2-afa3-c6c9974d6291 095865f5-5976-4f9a-b066-3eb32db32cd0 247087dd-5126-4364-9c6f-9804feb96f94 4c066be7-d319-4b5e-9600-9024a0659682 e2f664aa-c9ed-47f5-9d39-c40fe780b4ef b3308eaf-e0ed-4103-b437-1bcd58568354 5f14628a-2c4c-44bc-ad55-e6ffae757deb 85fa2da2-c5a0-4fb4-8ee1-146697799860 2b0973bd-b72c-4ae1-b40c-2b93de348cfd cabcbc89-c20f-437f-b6e1-cc870c117656 59ce3dce-2d23-4324-a5e9-9c68b2b2d606 d675f31c-7d09-4dc0-88ca-5e243c816b28 8a2c4e5b-adb7-43f8-853c-b22dc95dbdb2 9f347b2f-c176-41f3-abf7-05abadf65b3d 93ec6a17-dbcf-47bc-bdc7-fd17c87d298c 23c2d8c1-6572-4714-bdd6-a79d0a9968f2 0c715e6b-be22-4936-88e5-aaf20cb8458e cea34b3a-117b-4d1c-8a13-21a30308ed63 875c17a9-ba51-4245-ac5b-b8529769aac0 a8ce0075-5e67-4819-9b17-869c64842bc7 04b652fd-c18d-47d0-b666-9770086dfafc ef9fbf2e-5232-4a50-a197-b49a1f5070fa 4acf8c07-f732-405a-beb7-e266aa35a0e5 6cdc08fb-9360-4948-9516-f5b9cc57bcf8 55454dba-25a1-4c7e-889b-d696291b954a f5c1ad51-e09b-46a9-bd93-90b805927ade 0b430954-1d34-4303-8131-5642b5c756b3 7494c55e-c54f-4af7-8f59-6a5d4d19e56a 91b22808-a1db-4fa0-8ead-1156c2d98ef0 951e1795-0021-4504-9fa7-008758602744 5f57a3f6-b5df-4774-a08f-4987f2ba0b7e 0d63fab7-be43-4388-8d00-c4db38ea7fc9 0dea3d28-4229-448e-a687-e8ebc4ea6b1b 9e3f4eab-1ad9-4954-a1ed-6112bd2bd395 36acd287-003f-4f70-8313-65e1ab58c9a3 2f2abd6f-da24-4c14-a025-393351555194 222afc89-b780-4c37-8942-10209d9faf44 092f61e5-9680-4a36-92ae-926465eebd60 e7d2278a-697f-4ffa-b8f1-13cbe96cb933 6fb0f1a1-993c-4783-89e4-39cb224944f4 75957938-cac4-48e2-b23e-cbca95be8739 43e9ecf2-553c-43b3-8178-7f8a7d871928 bebe8897-0af6-4657-9c16-af0d487b2af7 87a94566-c0c6-4348-82b8-8c68241dc1da a9cdff12-2a79-4ad4-8ccd-8c736925df46 3d01f315-d228-4579-a437-f0c85e8cc976 eed97173-3980-4f28-b9e9-7fda46b588ef 701191be-28e1-4869-b525-ec70b2a07e92 b3ddde40-686b-4e3d-99d7-8a70293ef4db 79bc07ab-f62a-4b3a-81b7-497a4a21f6df b6cf0b9c-8334-4d98-8a7f-7df906088a47 e2ad21a0-77f2-4c4a-bc6e-d15ccf0b4bd4 efb2b6f8-3fb8-49a1-be2e-508e25f9279c 49e8542a-3705-4109-a897-19fbe0ce6615 7d20b1e5-885e-4a1f-865e-dd8a895baa2b 58066cc6-01fd-42ad-bbe0-b3158956309b 69d8c673-f34b-4933-b9c9-b7559ce4d36d 50efbd97-c886-488d-a38b-b2404bba7624 7567d842-cdea-421e-a9b7-0819e15a0738 30c32c85-80c6-4870-9003-fafd9043174b 14f58d8e-3a10-4c15-a06a-a9ff41274053 a69bdaae-c31e-479d-bad3-d8120ac981fa eefc679a-b3c2-470f-a656-5417314275fa cf0c32d0-2775-4529-bdd7-091d849f560a 080437a7-544b-428c-b00a-4f8414b9d94f 1d1b37a6-beaa-43fd-a5a7-76c264d82686 55e821ae-6af5-4d3f-9966-0b9bab39bde1 3d223a47-a0f3-4f61-97e6-92b99373027a ad95562c-383e-4b45-ab0a-35cf2877035b e9682d1a-f327-48be-af63-564547321cf7 08f1800f-8bae-41c6-bb74-b37eaae2e9c4 902c0a47-30c8-40fe-9bf1-909d4e83934b dffad17a-6eb7-4985-9046-84257bc1da1a 803b4398-8c69-49d7-87ba-ec01b9ea5e71 5331c369-23c3-4fb9-8ab1-d14c4e4ef8f9 d6c62a2a-afe3-4a89-a86b-dbf69a28ca35 aae9bc6a-ef3a-456d-b7c7-5ee6e7b5c7d6 cf851218-f2da-49da-8a06-fb3e346a6b1d a01ed829-2eee-4b46-8f70-c6add03e1125 fc8a87ae-4018-455f-a564-3c2dced2936e b54827c4-d9c6-49bd-b181-7e2a2844369c 962e0e79-1a31-4168-91ef-fbafca10ddf0 cbfa8975-ab8b-4920-8825-286f26d09f4d 7c8656c1-80e2-4983-b769-12888a7716ad 86d26cea-a5a6-4eb4-abb7-db8eb5bc5206 bec3065b-670e-45f3-b080-29b9f543dede 553111a3-3a45-42af-b109-b3cd38a7a3a4 68a8edc1-454c-43c6-a391-9ec1c2eb2320 2f2465c5-ec03-44bb-85ba-75e234e890cb ae8cee69-1542-40fb-a3e1-ae5d2442df41 5b792647-0364-4bae-abfa-b0e367e8d465 90ba86e0-a19a-47b8-bb37-e585e5de669f c03678bc-ba84-4ada-83ca-57d1f30e6e89 64f62c10-a23a-4f18-8757-0395ada6dc51 d4117e17-ba92-4423-b23c-48a02ba34942 3f638a1c-2044-44ad-b925-f22fd622d909 6ea38f80-4e38-410a-942b-ce57792e914b 3b56310a-737c-4a3a-9ecd-94800ec1bd43 35d9850f-7dbc-4d3a-a3bc-22f80fd69024 4ca9b6b5-e834-400a-8e82-1ff01642f9c3 97367b0b-8acd-423a-bd55-e1432da7903e 5172436f-80c1-4d49-a49e-04e4df58892a 6f6428b1-cea5-4618-a7a9-dae960c5f264 ce9f2571-2a60-4ea8-a303-0bf9e72819a5 d61b6839-f1de-49cf-9ca2-cc912ffefdc3 e4c75a17-5828-4c3c-93e8-8c4cb923c1b5 4ae93f9c-05fd-4617-abb7-00a66c94ae05 7d088c1c-8b5b-46c2-89e4-9df17c3bad4c dd4406ac-6581-4361-ac07-9ab172095e1d 7e5bff73-b2a1-4686-81c4-b035014183f3 6cdf4de3-8169-4bfb-a22f-182fe07eea1b e010c1ff-16ef-41a1-b13f-248a6cb90eea a24b2c9b-5435-46d9-85b3-a8fdcc1301ce 730f203c-1669-4bf2-ab38-8d38bddf3fef 1776fd3e-b3a5-4801-a704-297ea545ac40 0f626aa5-ddd7-435f-a0b9-f5568fecab4e 719795aa-7414-4794-b40a-7b68f56b8433 c09ff034-126c-4f62-94e8-50b18f270938 ed91cee7-d4b1-4b71-8a4b-f4bbc7735c84 e597b6fd-c1ee-4ae0-b695-61b012eb88a1 9fee8f7b-39e2-4ce3-a2ac-dc85c37ec503 13810e1c-4c0d-4ac4-acad-b84c841c295e 9b2688b8-cbfd-46b3-9658-04a396ee5a7f 84706ffb-9fff-4754-a5be-f8bbdb9649db 99a1a064-e726-48d8-9f90-bc6f15e4047a fdceb335-6ca1-4be2-81fd-62ff04d89acd b7c62286-b7c1-4073-b583-f6c37c5f451b 1b781247-0995-4e98-9b80-04a54deabb22 ddf83763-7a96-4599-bf15-287a8347e1b2 ade6e0ce-9e82-48ce-93b2-b8e10d856eea 826d17b5-971f-4e41-bfea-6cdad09fa9f9 91e2bff9-4dfb-4945-b2f1-a6cb10eceaef 79a9f548-6cb5-4465-92f3-e043f84d7ffa 6f76c410-e6f2-4703-8743-7cac0910b499 835e9b2a-a56f-4003-9540-a61c62510815 255a37bb-f2ff-40c2-a012-2731b96e7faf bfba5809-786f-4c48-9bc9-e5c76ad183f4 c858c4fa-e1d8-48f0-b643-e7598977aeea c0e6b84d-9b08-4971-982c-c714b3dbf983 4a0ffd72-878f-4c9b-89b5-9f3a9e565b90 c2e6ba9a-9e6c-4269-a0c7-911e67585e3c fcef33e9-db66-41d2-9965-a0a0552d1e51 04255a9b-a1ec-4f5b-9407-53675930e9ed c813f025-ca06-496d-a94e-49e8f665a2af a117a3f4-1d7a-4bc2-b802-9d5a10261d8e 208402ec-4bf0-4f03-b457-dec11cb79742 372f984c-6027-4f86-88b7-1e545898a8df afc9e22d-51de-48c6-b190-4af3c69f7fba c18ec19c-33e9-4232-bc23-1e455b4aa961 2701b60b-fff7-4bba-9a31-b0ca29e6eed3 c65e61da-ac23-41b4-95bf-45ae781494c0 5975793b-d9e1-4583-9983-5dcac82295f4 2046451a-a41c-46be-9946-c666ab18450c 54e5652a-4db9-4e5d-a703-1d7d907c0c8d 3a8083dc-a085-4eec-b1a7-afb4e54647d9 6f5499c3-81d5-401f-9c2c-d7d5c5862df0 6d006eb5-fca8-4d07-a85b-24f29e72cd43 4dad77b1-c4c1-4cf0-936c-fc126dbe983c a1ac8f2f-9ea7-40c4-b795-9e407639463a 9bb24255-c8bd-4dfd-aace-8c2f382e39e2 ff3922d5-67d5-447b-b5f1-6ad3b8db0545 46ee13e3-8166-46e7-9c5c-223a4f2ef6e4 a914004d-9cab-4843-bda5-be1e27f0c363 91ceabbd-d73d-4fe4-9385-4e80cefcd883 013ad846-52fc-41c8-954b-1d63eb146bf2 6c559cf2-3dc1-454d-9bdd-41bffa5d8d49 9efb6e23-8686-4908-89bd-e7e8b008e0e1 df76865b-5b94-41ba-9b86-a3f71d8efcae 9aac7871-a629-43e8-a99d-b2e518bc7069 edbf941d-f204-431e-98d5-6e76aa01beeb a0240a33-e64d-4866-9cbd-39da94c974b3 579c1f31-4618-4ac0-824b-dd6b5c884133 bc5783b3-6594-4309-8ee5-77c74bbd2349 e087944c-e45a-4404-bf3b-ae42252ee78f f07535f9-7c5b-4f2f-a345-31f7d894c144 1c77f3b4-181c-4f86-acaf-67bf9eebc933 0b73ac46-5af4-4ef8-839e-38a5d5811366 c69298c9-7d68-4785-8263-7b907436b98b 2f545b07-4a8e-4849-b298-6080bf1deb78 a356be09-f884-4162-bf49-1155348bb09e c1e05d62-bde0-47e8-88b4-939d8bee456d 51cefd9e-cda7-4a82-a449-8a9182be7103 b19e7ec1-feba-48f0-af65-65cdf2b33919 62df3047-b4ca-4598-9016-4c356f9db6e5 7560cc1c-69ff-4a83-af2a-184eec914cf2 8b35012c-ef97-4d96-a1b8-4a2ff95b6466 f16315bd-87c9-40df-aae7-d706dc9be57c 26193b4c-619b-4fae-b12f-f9dadb1ef590 4a5afd44-5252-4756-8689-2eeac6e9c81e 3fefe631-da77-4459-935e-a1f27a3558b8 a278e166-2600-4187-b9ca-df436b9acb98 fab68e25-b710-4192-a82a-519448be0660 8b891bb9-7687-4bf4-b9f0-2f9bdbc6692f 420b0b44-2cc6-49f2-b0b3-f85852915bbd 6354a8e7-82d3-460b-929c-21b7cd09f6d7 1aa2dcd1-9331-4cfc-b91c-f9c37c1d2bac 18b70936-9976-42fc-9798-ba160f039ad5 3fb1eccf-1356-4a22-8494-09a47ee06885 656a479e-9f45-4756-813e-9a11cfe8f350 f99b68c8-0ef2-4fec-b931-6c9eb96435b7 704cf5d4-5858-4d7d-937a-ccf7af57fc1d b3aed34a-cce6-47ec-81da-a541c93086fd 327b7800-18bf-49fa-b66c-17331e3ac607 3c452879-e86d-4b88-9158-384605aab29b 65203c05-96a0-4cce-9204-ca8bc52a4774 a6dd7fb1-f52a-41e0-8811-be4326e0314b 4370e2a4-d012-4ddf-97c9-273f5580b863 e0374339-38e7-4f01-9869-319c3f564256 a347f30e-35a8-40a1-a9f3-199b5e33522e e38f6e27-93f3-43ff-b471-d405af69ffba 75900234-6428-4b96-9ce9-4eefc6f21d31 f9235bc7-506a-4f2d-b305-06432a6f6448 e913eb59-87e0-497a-9903-9e0eb860fb07 3683bdc6-42d0-4d60-8c7f-34cda898159a b6927621-73d1-4717-a9ab-46a310288ca7 fc737250-27c7-4239-b4db-710d062e6942 7e6b0e31-9e68-4915-bb4b-d5721419d911 59f094fe-d96b-4712-8d9f-404f76e35eae 805c420a-c87a-470f-a1ed-19e7e34f4f68 889b2a83-cc1f-4c18-8325-891fa453e573 fa0a2470-5245-4818-abfb-9c11b7e46e3b 6f15d342-4711-4ee0-8af3-bf548b3611f6 b282d6ef-ae08-4937-b12b-e6d417a4b408 24b352a9-80ff-4425-8c12-7bd432663e16 fcf2f50a-06dc-4af5-9783-b9cab9501437 e24bddb4-1155-4df5-87e3-cac2ba6442e6 564398d4-f1cd-4f73-b068-c4210856501b ebca7ff5-0692-4a6a-af90-35a153e003e4 3d24e192-8a36-4e9a-8992-ec5c2b45802a 1037919b-bfaa-40ba-80f8-b1f879c3296c 68716bed-7a2c-4efb-866e-7b9dfc1bfa4c 35baa8ec-08ac-40ea-bb90-119ba2972a37 16f384d6-790a-4bcf-85ea-8f1ab9fc5706 0f1907de-aa27-4977-a150-450ee20b0226 b6b0fa76-5110-4b25-ad1f-6c6a66ee8fbb 6e7da275-d8e0-4426-a30a-8ce3c44563a4 41717d06-4abf-48fd-8142-b045ca9443e1 9873f6c4-1e86-4cb1-86d4-f48e3955d75f 85412991-4022-4211-8968-986b8bee622f 88a88169-b80d-4cf1-ad60-de3d5bfd295d 86105117-c5dc-4c03-bc23-e376821b7026 dcb81c53-2c64-4c70-90b8-a4fb61788f9c 45cccda7-f649-4a73-bf3c-a2808b8fc110 9246b5a9-54c7-4356-8471-5cd337fce862 b0094fa7-a3c6-4d99-bcdd-b73e61e159a4 5f40561a-0991-4658-9e76-e43f4015e6af 5ac9fddb-7f8f-40f2-9b09-a9de0c2565c1 7fe03583-5409-486f-961d-adbae67cad2b 727b43e5-79fc-4a05-babf-900dfa8e4338 50ac985d-497c-4648-a0fb-f0f5554c7eb8 5337ff36-e7dc-420b-b7d8-d79cd3f88991 1990d2be-8640-46fb-97ed-3dffb4a917cf 590c356b-78ef-49f8-a9eb-2cc53f451905 ee8e42d3-1fb6-4e10-ab7c-674675813c69 0dd7877e-c153-4b57-bddf-e37cbab19f97 3107a0ff-fb37-4366-96da-2821eeb2ef2a 9cbe22a9-1827-46e2-927d-c76b190d93e3 4893186a-bcee-4023-84e7-2b16e6479e69 8b757adb-a411-4e3b-90f1-dfd2c50841a2 a4c24880-a4f6-4f75-bee7-b6fa5c13afca 186aab47-32ae-4823-a6dc-374fdf932781 a7a7f620-9e6b-4ee3-a593-9f3793fbae3e 3ab2a0e3-8867-480f-b71a-4d84962ab0cd 94586614-d589-4034-9b47-dde6c0d59161 93cd17d5-eda4-4d10-8f87-c7ce0053f60d 496a1450-dacc-4adf-b4d5-6028ead8e515 6e31a95f-006c-479d-a24d-a2fd956b8dc8 743efbac-b3e8-4e39-a20b-0df4cb968d7d ac27309d-5269-4f8b-a4ea-92651d0c5377 4c8d7325-278d-482a-aa85-e4ab7d555043 91c4b624-2195-4c37-acdf-938531ff4f1d 606b3cfc-83a5-42e2-80d5-61e5bbf0a09a bcb76039-44a8-402b-b6a4-98660b158a5c b71933b6-24c8-4354-9ad2-f4bc26f0d2ee e404e201-5650-481c-b8e9-6ba6d3624e71 8ef1f6d9-4019-4850-9442-c4b742981719 2fbbb6e5-11f8-4a18-9a1c-435b28d00542 96358b8a-ad58-43f5-b565-5c6aaee037bc 78c1410a-02c8-49df-81fb-a5d9114b40ad c56ca607-fe6a-4fa0-aa4e-b66bbf1b914b 2084490f-bb38-47f5-9403-9241260904df 1f425c41-e11f-4201-ba4a-eb65e65896a9 3a6fcd33-ac26-430d-978d-1f2bb6e5954f 9914cd6d-13fc-4680-9248-048851307dba 059a3729-450e-443b-92fd-db6a2e8b71b6 20beae6d-62a7-448b-bc4c-eb15d599ae96 6846f9a8-89a9-4831-beea-07a7b095ea1f ef698f26-2888-4514-909b-5adfd93a2e74 4078610e-3f7d-4b0d-a30f-b3b4114c65ab 306e74e0-063b-472c-a45a-50ac7ba088c5 85766a45-f7b9-4b0e-9eff-29293bed7ccc 2043b8ca-d13c-437e-8983-2daccf584a0e daf4cf93-e9bf-430e-a0bf-003f4adf9ca2 7b662b73-88db-406c-bab3-14d81a3936d5 d09be50b-ab85-4839-b82f-ae21663d1e2e 97c5e773-6f28-431a-8556-28e03325d5e7 9dd22ffa-d7fc-4488-a7ac-81b461fe541e 412af41b-8aab-4548-ac0e-24b14db182d0 5f741920-7f0f-418a-9fa5-ecc8c24bfda7 f6411738-48b0-43b9-8fe8-9ae1d6d80489 4f331ca4-5224-42d8-af8a-d076daca0355 73065100-7ed6-41bc-a928-890ef67ea2c1 57b588ea-1a43-4776-9c72-369da53ef6eb 3402d0f5-3cc6-4554-be5c-cb0ffd8fecbd 8a9bc041-4dcb-4761-bfce-4eae08310551 cfd26f81-011b-4621-82ac-bdd302faa0e9 ba836d2f-fc6f-4664-84f8-b47e5313dd2c d920fe85-4a99-42f1-94bb-3d7461aceb8f 8e93cf9c-3c51-4cd5-ab34-6986c7068949 79457b8b-ac9d-440e-bd27-fb1ccf9ea70f b018b051-e0cf-4505-8924-0db0b282d72c d47de91a-5650-4ba3-b843-69692725e118 44a72557-ed33-4cab-be69-a23045b1c45d 1e90e837-1edc-4cec-94f8-b904bcdddb29 82a558b4-d335-4bb5-8187-9c30d70e17e1 761ba0b1-97e3-46fd-a680-2bc6f953ba38 c3adb087-d5ab-4f92-b1a2-9f341bbe48c6 8cb64c40-7e79-429f-817f-d5e93151ee69 15c69687-381f-4c15-b9d3-9766026f0672 20f28776-ffcf-4792-92b2-fa44c3a10d6e 6b72b96f-0c1d-469e-88ff-3b298308705f 198cb667-e6c1-4bb5-ab3b-84253a65c596 57fbfaae-abdc-45b4-8440-7f3ccf14bb82 129b35ed-e676-42ce-9570-3109e385284a 5872ce1e-488b-4c1f-9f8b-4738dc427152 22240887-50e3-468f-ae45-3b7a790d6c82 1147eefa-3d5e-4e97-ba2a-81a963ec030e 484e408e-f9c5-4fc4-bba0-5cad353b3fa4 028d5493-eef3-4d8f-be21-4a4a7bc66546 d61468af-ba42-41db-8330-f9c8e6e3c04e 78e7edf4-874b-4772-bf82-1f032d5947e4 53014d11-1c8b-40aa-b446-eb2f8e171359 51546722-cdb4-4492-b577-a0e68359ba81 fdb3d8a5-f9b8-42cd-b00b-0c91192eb2d5 64a579a2-228b-4783-b42a-6cee8595ab4d cc15b127-1208-4fb3-a285-84c4d467d84e 158d16f3-b46b-4dcd-8af0-143ddd5110e5 497d2fa0-071c-4ddc-bc04-757f96fd8530 10382df3-f5d5-4912-9c6e-0bdfe2c3e79a 734aa518-a76e-4e21-8da5-65cb2a2899b5 1083f2fd-333d-48a3-a7e2-20ff4b868179 70eaaef5-728b-4404-9bdd-959f7552099e 73882fcb-848b-4461-ab48-6ce0ac865183 16bde78a-bd68-4638-b803-349f7c5f14f2 5c18eb46-9395-40a5-afd5-3c027cf6adc7 0b0ffa6f-82b6-4c66-bf5e-915b56ef40b7 1c7d40dd-9c40-442e-9380-b1df5aef4640 46555e60-ff10-4535-a609-5181179b9d9b d41b1dfc-f315-4fa5-a7d6-068d3119a0ef b41e4cb7-24cc-4203-8c92-cefc5dfd13be 46caf8d1-c339-40b5-9c08-58336ced9fcc 798d97fb-2f6f-4899-893d-9a9e390be3bd 03d14c51-9b28-424c-a1c2-a8c5ea8fe08d 907a05c1-3087-43bf-8cab-1c4a34af63d0 b4d8f2fb-9d1e-47c0-a9c9-ddaa9edb9357 2f22ae56-801a-438a-85bf-fdd3f7fa5869 c1747122-5add-4bbb-bde0-fe65819c7eb8 d553acd8-a42e-487b-bf3d-638a732067d0 5329f6df-5c68-40f5-b9fc-22713dbfb36a e6ce3b9b-b0b8-4cad-95b5-b5bfcc4dae49 bdd2d495-273f-4403-bde4-69c3d5505541 511bd497-01d2-4a8e-96f8-6103894f9c9e 52cd10da-3466-41d4-b23c-2ceed942a810 983e0fa3-ec6f-46fb-9a67-3cf3981df255 2210e780-acbc-4e15-9586-9898dd8fdb45 67d037be-4dc1-4a86-ae5e-a48c96dd34d2 972ca953-25c2-46a7-9b38-14b01928d5e2 c962a9c7-0edd-4dfb-ada6-cb41a34c2352 59278c21-c6ff-42e8-ae35-721ab3d33afe 8b263ff5-efe7-433f-b079-49d361fd8ef2 e61a0454-5e8b-4350-981e-ad930fefd6c1 c9413450-f471-43ed-9362-dd9ca6033004 1c2b701a-5651-42dd-b2af-abbb7893d29e a316d5d5-923c-4760-a4c3-4a43fbc322f7 de73cf97-ab7b-4564-9f68-235f9eb8f6a3 b01a0164-f801-4b6d-bdb1-4ea60ac2f738 3d8f6ba4-43cc-42f1-8552-5cecad63fa54 bb2d9275-28be-4938-96c7-8e213f3e9a41 76d9e4e8-4c3d-4a89-958c-a7d7e2cf54f8 b23b2562-182e-450e-9fe6-0c903d14dbd2 f4fb7932-bbc4-4fe9-851f-14dc3e0c5071 0d7e90e9-dad3-42f2-8e7b-282b050b2a38 f4d926a8-0a36-4d91-8ed9-95f73527b749 ddb49f0e-dbef-4d4f-b4c5-cd2e0ec5169e 93602a16-4754-497b-94f3-5178b1b5c495 ff4a0e6a-2f60-4471-8c8b-3f2ce82569b8 31f0ca2f-7c90-4b47-a3df-820d26a3003e dd063bb4-b26e-49a8-93f9-59ca726442fd fda2cd51-9c3e-4267-913a-55eac3f0f112 5950aed1-3be2-4498-81ac-e34fef9fbc38 fd20c34f-44ae-43ea-a023-0b113da0ad51 321e94a6-7c81-4ed2-88e3-39d1b9a4bcd1 1d7a14d6-0f3e-4fb3-b2fd-dd942698dab9 3cab1e66-44a5-45ce-8e5a-2d98dc667d1c 53a3c54d-3276-4aba-b168-e9643dbfd2b9 0dea0a1a-dfdf-47d8-a8e0-a6b0bb3429f0 848fb46a-42a5-4625-9a71-fe176daa4d4d 02681f0a-c88f-4140-a0ba-eab770b18a91 a1ea7eb9-1bd7-4e55-8f5a-dc46448b7348 eaf4e5ec-1b89-42a6-8dd4-e602c6a5a7d3 59f9ffda-9df5-4b60-81f2-f01390612322 deadc36e-47e6-4a07-bc62-df8f605e89ac afe79878-3341-4348-9255-c3ee8a85db11 9b1bfa05-9b16-4f81-8f56-6f12a6e87c70 4c03cf7e-b0b3-433f-9b6f-0202d932c2c4 7a80f7ec-a9af-4557-ac33-acdb05f2fe59 dc100f79-5ea8-433a-b665-2c6f57709024 74ce9d15-6b99-4151-b679-fafa5589eff6 78d6d723-5039-42c3-8748-4025d11a98b0 00fd5837-4ca3-4899-9d96-87d5776f4400 10603fa2-8494-4dfa-a1e9-c6428207dabe f7804e0b-5993-4b06-906c-d06af2cabcb5 17e7d736-3d1e-4c5a-93ef-1b48046039e5 28356885-d44d-4541-919a-96ef2c7347b5 1f716787-39e9-4e70-9957-9e4bc13f6be7 542855e6-ed13-4d35-9383-8d4a165fcc4c 424eadd5-8148-4733-91b1-edae00841f7e 697e298f-d89c-4404-8fdb-36af6a724034 133b23d8-eaff-4521-9110-8b12f83cd77e 8023cf3a-20a6-46a1-a563-011edc25a138 1da7b43c-5dcf-4351-8e73-a6f69b906e3a 6f0850f1-c53b-437b-b273-59870ebe2d64 45c8ca2d-3259-456b-8c5d-6ed27df64b92 20d684e1-a2cb-4fcd-a427-232ef898e586 c26de68e-3910-49a0-90a7-77f5c5a032d6 b63b18e2-d291-42b8-9e1b-3bb348bcfd30 2a53896b-a01a-4d66-8fdc-0e1b00ffe19f 30aff285-868c-4b0b-b76f-a42673974d1a e6cf9489-450e-4b6b-a137-bc0b4aed370c 4e1873fc-102e-4f51-89dd-ee13677529a5 96c073d3-a90c-4b77-9731-30b27eab555c ea37c6d8-6715-4926-82b8-d8eaa0e694cc 3156e65f-0141-475b-ac97-ed4158c1a02c 96cd76ae-d08d-4bf2-9d5c-b47884dba44a 6724962d-a3ba-4429-aca4-3bfde034b0c8 6a3b8335-da15-4f31-951a-a161100149fa 4b3e049e-4113-4fc1-8ae0-dc2447c38e6d 708f53bf-c542-45f0-9fd7-ed37440ed5e4 237bbc2c-221f-40cc-a22d-ff1a38f9dbe6 a70f9fc5-63aa-41ff-89e8-d5d676224352 726ab200-5a14-4c24-b37e-b45e18dc7720 b5e4887e-c780-4e9b-9c17-a54933803cc5 d760823e-61cb-41c4-9486-854d33df779f 5c96be7f-7ee2-4131-8d20-6c9b94ce9ff0 3fec692b-36bf-4c6f-9123-739d0901bfac 4cde2b38-f6cf-4a45-9962-a29ddfaea8c7 9cc7fd7f-9feb-4716-acff-d621c1753b4f 90099a17-22c9-46a7-b7ca-4ccb2d56b5e7 b24125fd-6148-4a99-a0d6-a07009a44763 b2844705-99b3-493e-a947-2ff64aba550d 7693a43c-642f-4390-b74f-f1363daa8113 ec3e24d8-a801-473d-9c23-39d1be1ae5e0 e861e1e1-be78-4b9b-aa46-9c2c1c51693c 8defaa7d-ec31-4731-8a58-3e73f3d2df6d 5725a13b-b701-41ec-8850-4b26d2849998 2d73a8bd-aae9-413b-acfd-cdf3972cddb4 e694a12d-f577-40d3-a69b-58fd365752ba 746e0c7f-4a69-455a-a2cd-61734073a03a c03f53e7-b47b-42a0-8b14-0e607166741f ac013847-5bba-400b-ad44-e722e1a0365b cd0a91aa-da0f-4a8d-88cc-ca5f5996da8c dc978023-d3f6-40c8-8de8-e0092f6c9dc2 130dd47f-32a0-42e6-8697-8d3bee7b1c3c 4c8f49c4-971c-4c5e-a22c-d64166af94ce 51465c51-b825-468a-9bcc-19eaf8ef7b70 01ae084d-12ab-4169-9284-9869fd1569d1 18e36c7a-a940-468d-8253-844f33f0f8b3 3a16da6c-91ca-461b-9204-f050cccc4eea 1b03725b-a595-4201-ae65-49f8438b96ed 6099305f-d955-4caa-9662-f407a650aec2 dd446450-0f20-4a95-be59-0a948ee3ef19 52d32d46-1ad1-4b50-8acd-f03f3b260c68 48847b26-d074-487c-8ecf-69722eb82f7b 0cde3188-38e8-4390-a921-f471f1fd1e3b 2f871f0a-f08f-48a7-9924-9dc3a1283759 d2f1cf4b-8dd9-4f5a-8689-3247315a3124 2c146361-8a6d-4f00-9468-56ae386e8e90 44373ba0-6dfd-43e2-bdb7-c6890e132828 b8907baf-27dd-463c-8666-df36722befce 8e4f5d63-235a-4cfa-a221-763db455585d b6a6673b-7028-4167-8ee1-8c3b8ee7e16a 43213f86-e8d0-44ec-a9da-1e18a0ba0bee 5f88b037-e486-41b9-8a7b-3252a615c776 0987c348-23a3-4feb-b140-151d1bc26705 3fa60222-8f49-449e-bd6f-41e9c7c9f4e9 779d2ed4-e074-4144-8ca5-2e3d07038e49 6eb5a2f9-f311-437a-bb1a-0439d0726124 6ec895c5-d324-43e2-8889-0814744a5de6 d1f23376-5b9d-4dac-87e7-cbcbe2dbc9ce 6f5a8e48-5290-448a-a0a9-27593c0decb4 f8cbca45-7a37-483c-a80b-88fac115ed2f da5eb64f-b42f-47c4-b0bd-5ded8747dde9 31786d24-aeca-447f-958d-90804145c661 25eadbbe-5a01-4bad-9be6-097357e33392 c509fc46-3ef7-4af2-81eb-a68816b23361 eee1990a-72a8-4267-aa09-974206750725 3e6b78e3-debf-482c-8295-7639a8ae2236 ecf4fa08-a056-4df1-b45e-f66a3bc3d562 5bb824ce-1500-4e3c-9a24-f902903f9692 50af63e4-f301-4e56-a2f6-056a0dab45a1 e24652c1-7c88-4c6d-93ac-a0fbc6c6a451 f803d528-eab9-4c65-9665-2e595334d4d2 a5e97145-abd1-48fd-8600-4130fde1c7b8 27d84415-392f-454b-a00f-3cc0785f409e 084dfd3e-af8f-4075-98f0-3210c488d7e0 44c41ceb-66b6-4817-846d-06ab3075c47c e572ea64-9241-49ba-9560-bfad76ed6ccc 2b6a34dd-3a83-468d-8cee-8b4834f7985e 45e54609-7bc8-4b69-8613-c3aa1600982d f37795ca-1d28-479b-a231-194ebebd233e 9eefdc7d-3786-4dd8-b2fa-edea2269530a 612b6f43-9dfc-4d9e-ace0-76bb37004e61 b7f37977-a282-4846-afba-e1f8ed078465 929361b4-2634-4c00-9b6c-86c88bb01ba5 3807deea-6c14-48e9-b5ed-c7f112efd829 a4c65f78-4f51-4da2-b8f6-e1d89094b696 91e401dc-1a72-4252-91cb-b7b86f44a45e e39fe393-97db-447c-a142-544f575139be da0c7a20-9728-4d75-84d4-e7917b456832 7863d589-2ed8-4df5-b8bc-b1ab939cf6fb f585916c-9b93-43be-9794-f292009bda95 c5a90868-e4ca-439d-88fb-1cc63dbc115e 75782569-a484-4a13-9991-5d4e6e2225d8 23724ce4-3be1-48a8-99e3-46a0c8723f2e 0b5c04d6-cd6a-4f72-acad-5ebe15d05df6 71c2df6f-e1fc-4b4a-886b-de6f133f342f b51944b0-8ab9-48c4-b7c6-3c694e019b8d c3004d79-b65f-43f9-8150-bc612c386aa5 fd15ddfe-c775-4519-a864-13c8ee828191 1d960599-6f71-4078-8bea-6ecf17121ce1 2cb8e3d7-da10-49f8-9615-b92063aea6e8 25599748-977a-46b0-ad10-ebb98dc12c44 3c99c5e3-cfe2-46cb-92d0-99edc71f4f4b 60f0304a-d02c-4c0f-ad62-695a092864be a2ff08b4-f843-4701-9f67-94ae12fee66a 0374623b-158f-44ef-abdc-e5721f7fb40e 2a3ff5b4-fd7b-4203-89b6-773e455e46a7 00bdb580-49d0-4f61-bd8e-e4855779b761 3bffe0bb-ba6f-4106-829e-07b48f4e20b8 bfb6e65c-4dcd-4332-a911-1e511f72fbb9 5c9121bf-201e-4d45-a76b-f69bb4e1a742 7b823e02-b565-448f-8b66-a13f18106416 e7c7b552-2659-401d-9664-8d2601ab4b76 23509088-7e24-4166-91f6-cce3c8fbd8f5 93645490-2c64-4cd7-b5eb-4f6d65bbaa2a 093645c7-4e0f-4f80-bc0c-d03a34104407 183158de-d7e7-4036-a748-7c70fd82b54d 54943e81-dae7-4725-bfc8-bcbed5d1d08d c67ef0c9-c3b2-4d01-9db4-ab99aa94fe84 df07e7c0-32e7-4bf6-8f4d-2fd419b9ec42 80d99e74-0f99-47e2-810a-f519fde62884 c180f481-92c6-4503-876f-c351c376c90b 2f133541-454e-4fe8-a3f7-d40bb856989a e06d4910-f2d8-4a0f-9ddc-98f386e229a9 aaa71cfb-41cb-4bd3-86ea-3cf29778cb0a 4be1120f-8823-4a48-a496-a7ea048f1f12 45a2587f-81ae-4810-84f2-5bd714b085c7 2890f766-8a1b-48a1-9053-e480f32150b5 397ddc05-eaa5-47c2-a0ec-77f19e6df5dd 975e13ca-0597-4068-8dd3-2d4a03842843 63f9cb27-f44a-4402-88d9-80908a772f4a e9289d3b-8bb9-4b10-82a2-f9f16aeece2a 068b41f8-3c38-428c-aeb9-bd8f6ffacf66 2603b627-c6a4-42a0-9c5e-ddd47ded4439 2392e699-30c5-4317-8f8c-a608b3e13f0e 45de8da7-02f9-4f25-9ada-ee05752d8212 a4801c45-1185-400c-a467-2f24af6ee971 23d29b56-101e-4dbc-b46e-cccf8f23e932 d3b4b784-c671-4711-ab8a-98681e5f776f 5978e454-0085-4047-8f5b-a2c1a501c02e ec36c4b5-864f-4243-8411-1061218b9068 90b35d1b-278c-4a23-84c4-0e22770e0f35 ece998e0-0bbc-4329-abc6-f564542fa3dd 105ea32b-5124-4ed9-92e1-ccd20d86be6b a2949e1a-4a46-4b28-a9ee-1674c9a59fdb 22fca9a6-6b0a-4589-8da2-0eda72590786 18b1d857-d7a4-4e29-b464-773d7cb673a3 bf405548-2602-4231-95dd-4b41f2524068 3f1faf9e-2ab3-466c-912a-582adaed3ba3 5962330e-30ee-4940-90f5-e37f95ed4bf2 4b6c02c4-c95d-4609-880e-37f90abc6ddc cdc6fad2-cd6a-46e9-af91-f398e4c9de86 2651ea19-75ff-4583-a29b-d18ee6e87772 d07c09e6-c383-4c2b-bad1-ddb5c4cdedd1 26c62f8f-8d91-4683-922d-9bbad81fa9f6 6dff8694-f14f-46bd-80f6-9242507eb502 526d46c7-faec-43f2-986d-dcf7e054feb0 ecba2689-18a1-4d78-b01d-eb72095447c9 0a2a7b64-7d6b-4d4e-b42a-6fcab9e50712 6c931636-b67e-45a1-ae57-1dbc638de646 ef4fc625-21f4-4091-bcc9-f5ad2105b0e1 65a4bad4-b11c-47d1-9775-7ad1515c075e b5933648-3b07-4af4-8d49-573d0e77e79a 57ea1f52-8ae0-4e89-846c-22ed6334280a 6eef2be2-1405-488a-acd2-26797d906311 4f3723fe-9a3e-4bf1-95c5-539167685c03 35da1e59-d70e-471b-a843-8adebd0f704c 0406057e-70bf-40d1-a24c-f95e62309787 27e72d95-db9e-4889-a615-ace9cdedaf60 b8483a6f-3a82-42ca-aed4-1576d7e3a395 eb8f2193-3a8a-46ac-8334-1e225dc6ef71 4b0236f9-b217-4b30-b6fb-975180d7d564 8c929a8b-f067-41ab-a88d-ab9436bdb0ca 283a294b-06b4-4208-b3ef-604bf3c3eaf9 b44ed013-d32e-47c8-b659-703ef7355397 00cf49c0-c02f-403b-a942-f31b35738edd 10908b43-2df7-4e3f-be35-15999b1e0367 7bce7bd2-eb49-4d1c-b066-f71fc0ada978 55612707-11d9-4d88-b0f4-203f401f2ce8 6061a93a-ca8f-4c4d-ad29-48bf755169fb 5844b4c6-1ac9-4598-a732-88ef0af9a269 fe1b692c-31ac-47eb-a701-cd4e02a6c906 b90064eb-f7b7-4c89-9a45-4fca5ffacabb fe17f1e9-1a04-427a-bbf4-3fdaa218ab62 5e545926-c65f-4dc4-824c-cdde58a688b2 9a594af3-d981-4203-bec7-0df78f2041fa 6ded3eab-1b54-4acd-b5d5-6e75978978ea 2eb9e17d-4e66-4254-a5c6-e0487360eae0 e0af4fee-4731-45a7-97e8-e1c96787f696 826a5e4c-7c01-4d29-9418-cef855b44ba1 fce8b0bd-ffa3-4a6d-9de2-c55cd5cf3143 37764080-3d54-4280-8a63-a7250fe95f19 a5defa99-3c9d-4ffa-b5cd-f7cc3593e1e4 b3dd5245-6426-44fe-9720-9e71ada6e1ce 82980d20-33ea-44c4-815d-5e7174dbf6a9 0f534ae0-bcd9-4230-ba9c-e6acaeb9e033 8f7e715d-b68c-4818-b1b5-1598008954bb 084b440d-e08b-4b42-84f6-07b09d7fa57a 589990f7-3e6a-464c-a702-fffd494d1233 1cfd7eab-519f-4b03-adac-03721d066642 2184fa0c-5078-441c-964a-37da46254c52 c3f3b38d-9c0d-4658-856b-899f747170f0 56153531-d3cd-4619-8e62-4f5a1b77d138 dbf857be-ae84-464e-b15a-3b0a03120ab0 94ff8d91-9d10-4512-bee0-93882c34c357 6cbc95fb-fa61-4c06-8612-a1cf52954d4b afc0d632-fe4e-40b9-8987-ebbf2e5e7af7 c1569847-c85b-410e-871a-07d8cc2866b2 93658cbb-7f84-4b92-8e46-0ef02e3f9b0b 453ce23c-e25a-45e6-a33b-a9237258bc70 0d751aa3-a412-4f93-b4bb-7427025e15f2 3e86c008-c57b-4c2f-ba55-7a71a49c1bd6 df1f139c-d2d2-4960-81cb-70c71e7a5211 05d43ede-a353-4d78-a751-7ce3ed399cec 0f68dd5b-60af-405d-ad8d-0970def5e51c bd349ee5-79e7-4d00-a267-bb7e08e143b1 19710e4a-fda3-4759-b57a-31047befdc64 0625b70e-3c3d-4b1d-a4ed-a556400e931e e28c27db-915e-4a52-b577-1f3e47b35268 75890088-1184-4aa4-8f10-8cd4bd11a6dd 70b3c6d3-aabc-449b-9a37-5a87131ed28c 89e4e751-3c50-47b8-87c8-4c3cbe407c40 14903a28-52f9-44e2-bc4e-5b05c126a842 af4c9dd7-6451-491a-9292-f2f73bcf4d86 340e7bf2-5a87-47d3-910a-e70bc6cf3a9f d2c14d7f-eaaf-4bec-8242-53f0e3ed9e36 715857f7-c034-4892-b5a1-f5bb6d47a616 09e1e6aa-36f7-49e8-8ca2-526c30c836e3 811553a9-bbc1-43b4-a462-b0388303121f 25380195-f7d7-4134-84ed-41b29e340bcd 1e664545-43cc-414a-8fc4-05902cf5773b 639a2d61-d7b7-49ad-a833-ee5d3aeace09 abb6ebf2-49fc-4e96-8e03-3649dbef8f43 9217d82c-e10c-4e62-8ad6-18c6db573898 ce05b5ed-34f3-481c-a23b-c36f61dbb101 1fa32223-3e04-4fee-99a9-decedd2a1e2a f6617df4-91eb-4c5e-9b4d-726903f72d26 8e27fcb7-58f8-40af-afb5-bb475da526ab 7bfb383a-1adf-4d8f-870c-3a48fcdfee43 0079d91c-6c80-4e04-b758-abe81344acea b7f1293f-c43e-40c5-b7e4-a874e463bfe4 9a7c8d73-1639-4928-b5f9-deb40f29bf4f 30120503-d070-4447-978f-1d36e0bcf65b 8feddb4e-22f9-4776-b3a9-cb0aa476ada3 b7875214-9d1c-44a3-8190-edfc7706b1fa 2c4f978d-2d2b-4cb6-a189-0a504acbfccb ec755819-65bd-445d-a691-6007062a1895 620acfe2-ab91-498a-9ac9-8b921d06fe97 23e130b7-3761-4471-8f7d-e8e3f13447c7 e88ff476-cf8d-406e-b0ab-09989b867440 1bcdb7c6-e691-4b7b-a0b8-4c51a764b741 1e6bc286-5941-41c2-bdae-02e7fd389960 5ccb1f57-67d0-4cfd-b4f9-f2bd623912a9 39ab8458-a41c-485e-a8ca-c580d1a7c2b6 50d183a7-1356-4c20-878a-76cb08a450f9 9aa61856-5832-414a-8775-b356c0d38ca1 f24038d4-320b-4a68-84e2-ae0f55bff1ea 8326647b-cd10-4368-b675-046b601b7b09 ce902f15-a71b-40fa-9ade-5a6c08e9b0eb 48be9535-b08c-451f-916d-066117dfe665 99341f58-ae86-4914-a5d5-f45bcd2eab22 29e2ffb2-baaf-4b21-838c-11de2273b8dc 2380147a-aa44-4322-9188-ec2cc48ae4cd 1650fbff-11d7-49f0-9af3-453d9085ff37 0ff09137-da5a-4eed-888b-e6e7b35de590 770c6aa7-73ef-4252-8d9d-891f034f2241 13685a9f-bad2-4cdd-a107-fec1a9de331c 18b1d0a8-973b-4b5e-9ac7-903c62cd3c7f 78075d1e-6130-4f58-a558-ccee30738e5d 23c091ae-c6a0-4dd9-b7a0-5c51f473bd68 ec75613c-230c-4684-858c-d369032de170 ee3415b2-e1eb-42b7-b73a-36018f34c0d6 c259b557-3e8f-45a2-ac5a-510972de197a 96dd26e6-a971-432f-a831-82217b8c0ec7 ae09d7b9-efbc-4e22-ab8d-642768db4628 49a7d2f2-c7f2-46ca-ab45-5cb9f6be8c11 deda30b8-3c89-4d6b-9043-c637e3afc33a 06b6791e-90cc-4b70-a93b-d5104050cc8e 4f906034-52af-41f7-bf75-b8122e5d1294 5ddc814e-c60b-4812-af98-ed076cbc6fe3 86407212-2620-4ebd-95c0-b8867bf7bd32 0de6d8a9-9154-4328-9058-23eab0dc8de0 f8f140c0-99e2-4692-ae82-54fc39c0b082 0523bf5f-8780-443d-bc07-89a40450205c e7c4f273-8115-4485-bfb1-72dfb15398ca ead74953-53d0-43bc-84c4-9473b303babd 68f58567-bd0b-4e7f-b9b7-f325ee3c933d 0c1a9910-8bc7-4b01-a62c-1f690b89d46f 5fa7fc63-a450-4a9d-8732-5ddbf7869d6e b5ac4617-ae8f-44ba-a562-47502c7cc495 ad9cddcc-2dd3-4176-aca3-2fea60e1462f 1276cd5e-8118-4af8-b9c4-35e85f851eaa 8a5c9347-dda0-4221-9a06-98383c26b3b2 e5f9858e-9ecb-4561-a024-c402b39e1d35 f7164bd2-158d-4e92-9e75-aa3392ee6bfc d3b5e32e-8756-4f7d-85cf-f3eb8460d3d2 8f316d21-e3e1-4302-8589-69538d060d35 108f9a39-2fbf-4c75-910e-caf283fef24c 421399a9-2c69-468e-8cec-bf447892d798 25b2506b-9413-4ad1-bce1-2afd0911752e 52e07431-3e6a-42a8-a183-5261844f39f6 b143e875-290d-4444-953c-b3d0ff647f1b 74fc93e4-681f-4477-955c-f660e237eb6e 4b9457b7-ae56-4237-9353-cc066d72b003 87addd8e-13ee-471f-a96b-0924c901f077 ef0a398f-7963-45b1-9f42-94b6cbc7c843 fd4b1952-35e1-44eb-9d77-b97114170f32 9cd95743-2fc8-410f-8d54-99061846092f 4a1ae6fc-f923-4d99-b643-24f7915adc0d 9872a519-c828-4e49-bcca-f98a5a057424 9b77a981-360a-4095-8ea8-59be81de2a4e 23cb4317-738f-4e0b-8a31-86d0a480a591 7cc70d84-8c79-4b71-a09d-1c0b6e9c34d5 7f0dc541-eba8-4772-961c-49a0a68ee1c2 4941b3f4-99ab-4ee2-a4f8-73c9cb11a2e0 84463a1f-3643-4c18-b4e2-1c2308a27c7c f72f731b-ac67-4d91-97a4-c34e09bd0fed cc0c3023-56aa-4f78-b59c-857028e507f4 8caa2233-60ba-4180-8c76-7cf38b46b847 5faa29f8-3f3a-4a87-9d01-d7746a5426d8 1ae14fde-28db-4563-bf01-1d810f380a23 6a816c67-109a-4303-af22-a6ce704d17bf 61b6b468-a404-4426-b8b1-3869f352c185 3721ace1-7ac6-4679-bd30-2b28d39f9a1e 738ac069-d84b-4492-b896-8ad63bbb699a 3a310a11-4c11-489a-84f5-3a5fdacf0e38 51d18000-9b28-4d4a-8195-e934a4cb6564 7f9b2f84-40fa-41d8-807a-ee3bbd834cb0 f87a8276-0391-4066-84fc-40ec6281bc83 c5f26863-cc58-483c-a0dd-0940aca0ebbd 31e482a3-85a2-4ba5-bfff-c077151e871b 2570cc58-440a-452b-aeeb-b411e425be9a 0084c35d-357d-4c72-a4cb-e5a78415faa4 a0c6bf1e-19f1-407a-8e6c-bab3574b4439 d7e2f217-fda1-4b58-b434-e9beacc9e070 c1b0a496-a4e1-4a81-a06c-4b16a38e0dea 1037f1b2-8a01-42b5-8cb0-645c88e18f12 af88b09f-d247-4bf6-bf46-cdfe87366b75 a9a665d8-e595-4814-9bae-f765e242f3b9 513e9343-3e8b-4acb-90ae-94e9c39477e8 93cf4df3-c642-4ca8-bad4-9b73c459c769 95b51da2-1770-40dd-adc4-4aa3e535dc6d 707ab5ce-c1c8-4f20-bf46-094181738ce0 0ec8a515-4feb-4106-b37a-7753d0e263e0 416e21d4-44fb-4589-93b3-79f42c3cb3e4 1fbc4907-2d46-43ec-a7d4-7fcc31172fdc ffce88d9-08cb-49d4-b012-66fded8d9891 36057aee-4928-47fd-93a7-9b26026653b0 b3fbb459-b642-4358-9ef7-fa02d30e9d60 ebad10ce-9f5d-4c22-aa19-70013af9777c e407358e-6ac0-439c-a644-8d0de996cf3f c0ba8957-0867-493e-8d25-08480e598a96 98cf5fd4-4674-49dc-bffa-13274718b07e 1932ac37-ec99-40d3-af9c-ba9a367352cc d13a9083-9186-4e3a-86b0-0050bab79d6c 1accefb6-0b5e-4e4d-9495-7074a8d0f25a 7a9b5904-da54-451b-b26e-1b92f1c64d9a 77d4c40a-b248-4d56-81cd-f419fd3a196b dcc4f048-dfef-4284-9190-795a04d404df bb000a21-9f99-4561-be62-3f83d63016a0 13fe797f-d77b-482e-bc51-e94bedd5e708 22b1dda0-3bff-41da-b32e-806c8cf03156 64534f62-6e64-4cc0-adfa-8332ffa7fc04 f1dd0be2-678a-4071-83fd-2dd66e496885 bff582cc-d5e5-4853-bee2-d71bde57b235 f596f0c2-c200-4701-a353-d3e9aa0d480e a6c82141-f7e4-4ed2-b245-f1667fd051f7 82692862-19be-46cd-b100-65d3b66ae9fc d419fcc5-d191-4c16-b635-1e02df149bed e22f40b7-3904-46ed-bc4f-07e6413c72e1 3454ed1e-0cae-46c5-9848-ba18f667c10e f7b79a76-5df9-41b3-9db7-0c82bafd058c 7789bc9b-fa0d-4971-bffc-b1631341023d 308d7986-b216-429a-9edb-e56149340500 2ce52616-e8bf-4adf-9a36-9968c8dab7fd fbf48fda-9e16-4138-b874-a9eede4d70d5 1654ea55-be73-476f-8991-70d37ffef6a1 26f8276d-c5d2-435a-970c-10b6dfae1ed4 616f1987-2b10-4840-80f5-d247028be00a c8a02996-8bca-4017-b01e-dd526e044701 4a6c5592-6865-4a25-8f58-297b6f7807fd ec54b49d-a769-4715-848d-bff4fdbc4cd8 bcf5d65e-3e5d-49da-9971-e8b61a112e79 026da9e8-61ae-4bcc-ba5b-79862b88d0cd eb46aada-4d01-4414-88dd-890e7152282d 95d903e4-0332-495c-bcc2-34ee1fcbae01 55e125d3-5048-4073-af85-c129597b5731 dd77c32f-5c1c-47d7-8aaa-7b1a0c932595 0f379ac8-bf38-47bf-a1b9-b81f38d7d877 d3767d02-edc1-4faf-ac43-7f94d738a249 47fc795a-9daf-4630-895d-ba9afb926d90 bee1922e-8627-4634-bee0-9c4f5923811a 0520887b-cbcb-44fc-8e80-f2357ad58b7a 528806ef-dd3b-4393-8607-293b4bd0b98c 5b74e282-58b0-47e7-ac26-798e4d1282ff de8312cd-dcc3-4fd7-a530-9ee886c006ac 0f9c8bfc-2e41-43fe-a3f9-db3785a4f2e6 2725f5de-6fd8-429b-8dcd-437e7ac795e9 7dc57e75-b664-4fd1-bbe4-44465984f453 2199bbe3-b194-43a8-a5dd-29226ece54e5 39cf80be-5f05-4041-8ddb-eea8cf2f78e2 a8765a8f-eab2-443b-a0cb-20f9aa1e0923 c2b8cd11-7a50-4694-bf38-9ba6325fc372 4680cb44-32a5-4537-b43f-e91906dcfbd6 74ab0266-c4bd-4f87-bdcd-d53a3ed3a6fa 6fe5690e-ac01-4d9d-89fe-ef1a5e6e594f bc96592b-51e6-4e88-8991-223403ac0600 d4c9a21e-14ba-4d53-9ed9-90255c8ea905 5c23fe0b-b91f-4941-819e-716d546b0c21 b1bed8cf-a5a3-46e9-bb50-2ed718542fae 17bebed6-6d17-42e5-8b54-dd69bbfa2892 94069c4f-b445-4649-8287-37b854210e0b c8821ea1-f2b1-4626-a155-62d7dfbd53b3 18b9df61-6b5a-42db-b392-3b9265966668 a11238f4-6310-4921-a9ff-88e439eace4b 76308a66-9580-42e5-82b8-10be248da15e 085c6ec7-b954-47a4-9a3c-6ca98a21bf02 efad7cf8-4b5d-423e-ab6a-e6d6b2131035 be2c8ca7-990b-4992-9d5f-bf4d6e558190 acf60e9e-abd1-465b-b423-bb293dc12e42 901c36bd-6682-4c93-bd3e-abefd4fad006 f87dd6fe-1385-4590-9f5a-cb8184bf9c06 a1073cc2-a890-413b-9ca5-939e33b3b216 d9f01762-8347-4021-89ef-e0d31fbefaf2 a8a3da6a-8e16-4495-bfe3-d37fd62b1dcd 3113421c-099e-48f8-921a-ab30ddfcb8fe d94f5e3a-5c6b-45b3-bef1-77ba1b319b06 cc4b9d9b-23b4-4a85-96aa-a15d5a6ca16a d55437f5-ee4e-4511-a814-a430fcf2dde5 88dd2a48-37ce-4046-a129-3d24ffad36f9 19468aa5-7f9d-426d-9746-c1e4bae067a7 9a40aa2f-aa0a-446f-83e4-a7b1274baf60 a8a6d87a-7229-489b-9628-7a3bc0efb214 3c6eac33-cacc-4677-a1bb-a61ba6b1bf67 d927db3d-5aba-482c-936d-56353fd5936b a508350b-7667-4a81-9224-1fb2d4181059 e5ad9ace-17a4-47da-8804-0fccc006c56e c970d2b6-17c9-4dfb-a99e-fff6a5bf2000 5a8bd709-17da-44e6-8584-b49c95792b01 fe1bd85e-557e-4687-8aeb-d5813c5f7736 3264b803-90af-4f14-9807-8494bc865ffe 275eeb4e-025d-42ac-b79f-33988df53fbf a5ec8968-ab60-4cc2-b0cc-93f684e16e3a dfaa4f4f-970f-4a25-8b67-3b9de20a53b7 cac8ce8d-f701-4245-ad2b-b6568b8a2ae2 9f7c8550-7f12-4a6b-bb5a-4231360d1147 fc843ff2-d334-4238-a2c5-cdb8c7c2d4db 60c143f1-ad76-4390-a867-123429e79f9e 743cad1c-5ec0-442a-9ee8-10f8dc05e2d7 b70c1e96-9958-40ca-b322-afe442fb8f99 e4165635-dcdd-4130-834b-c787fcd2c36a f5d41a9c-bf9e-44ef-8ce1-bf22a649e8d6 39e0d982-d9c7-4374-aef0-12ca84207097 96c874ad-56dd-49a9-991c-ad4f6ed42b50 7b0fbd90-4b02-4ab8-b0ad-234a777f7559 fad0d44c-4d48-48dd-ad77-b202ad98556a 8b605c29-b34a-472a-a5ed-7964c4ac72dd 2ab97f5a-4c11-4b93-9085-028aa1df98ce 2d6db4d7-c1e7-45db-99da-4a62dbfeacfe dd99ba22-570a-4490-be4e-924b8410b4b5 50f53ae2-5330-4d62-829e-f2252680c1cc 81b979a1-f73a-4f97-b411-b50f7ee62fad 212561d3-4b85-45ab-9d4a-dec7bfe1d755 f5d3bb9a-1d13-472e-b27a-e989f20151fb e6f26bbd-db54-4f79-b1e9-5b76c899af77 80a08999-5247-458d-a1b3-167ec997b58e c79267fe-90fa-45f0-8424-9ae249a46a2f 04741c37-7b51-4e51-81c1-5881bf275ebb fb04dd23-598b-40b8-a2ce-0f3a09ea6041 53cc1149-a57c-4d72-bcf0-1336c40e01a5 fb5d5038-3575-4b1b-857a-9d404b8c48d0 8af7eb7f-4868-488e-8020-fcf02e00bfda 2ec964ea-7633-4128-bcef-d3a667a9594d d0838a8c-68ad-4b57-91de-5d55da57add0 6d62b2e6-cf8b-4e87-a5cb-c244798ef2c2 33254c54-39d8-4379-85ee-8caaf64b4072 09df2428-79b2-4996-8334-7200d80e37b2 2aa17df5-6e7b-4c2b-ba2e-1397538e84e6 b860106f-9563-4be7-ba96-b6196b17d30a d8922e3f-f2e4-44f4-9325-04aa93cbe0c4 0888d063-bbb3-40a5-bcb0-dd7c162e8af9 41a22277-aa18-428b-b3db-84048085abf0 a3e0bcdc-0c85-44a1-9875-9fffb3735d15 4befa06d-f011-4dd2-8c1a-6c20bb0a58b4 df98456b-b83e-43a7-bf70-c1bd2fc86b20 c8c3cb2c-eb4b-45c6-9a3a-869febdaba78 c52f2328-f953-4235-8153-ff57d9ad932c 4c50a513-d106-450d-adee-78bdb7c5ecc2 f1c8d53b-43bb-48e9-bbc2-4b971a3f39c0 05d3e6d9-8797-45b3-998b-954263f31fb7 f9d93074-2b7c-4a1a-a127-f318b1e0b7ea 27c93ac2-f1d0-4fd1-a8f1-024718d25100 392e1a37-df21-44ca-8c4e-03d35ec25722 a04d1406-4a46-4543-b709-6460937c6bed 7a6af9f2-7b63-4d7e-9d89-10c3ccee328c 54c0399a-d94c-4bd1-8402-edd1ef44484f 1c81651b-87d6-4b2a-a750-44a29ee4d6fa bbd6893d-8ae3-45c2-af23-b4b5dcd5de21 f3fa2123-3c43-4609-9033-d4e8a9b8fa84 9990ca6a-dad7-4123-9452-b598ec3785e9 9f48f7ca-4e81-492e-945b-4c97ca80dede 6a781f82-6a9d-4ba7-97eb-f669179cf5cf 71a68593-cde2-4635-b7d7-7ff3aaa91436 d73c9d02-bc43-4555-a778-b3f692106904 0f18af7f-4ed0-4832-abeb-1e4f6b0a9cea d39db02e-020c-46ba-90bd-c7aa3ba30609 d42ad6c2-d25e-4710-9120-0889084de4be ffd9dde4-1976-4f95-8b50-cb1ce78efca1 9449c034-48af-4182-9a34-8c0c81f6bc2f e770fef7-0a84-4d78-820b-246beed69051 ce59775d-2e10-4f49-9039-35dc22d48366 6479c3c2-b1e9-4eb7-ae63-8873bf5bcbfb 77ff21f2-34f8-47e3-8779-554d54feba26 de3d6d98-aa1d-490f-bf49-3dd40ed125de e4b0a780-bd58-4899-ad8d-b7b80135d9c0 58dfbb14-02c6-4046-a3ec-61daa57b3154 e08f115c-de52-464d-b4f6-d50a27a57225 d4789139-4498-4145-a8bd-2ccac9d15670 fec699c5-d280-4192-86a7-ac12f949be09 4482df65-cf4f-49ea-a367-4ddf35259fb4 0ca3b463-f790-428c-8c45-07076f278929 c6d1c46c-ea5b-4690-bc1e-516142712b33 643429ad-51a6-4da6-8f66-0f0cf433d82a 6fb3e3fa-9740-4e81-a4a0-ad7bcb6353c7 e31954ef-8120-40e8-a637-7e1ad1da8d0c c23e47a2-6e90-481d-af4b-3d7e7fac05d3 978fe154-2348-4d82-88de-c222e68f454b 217bdbd9-cae6-422c-b079-ed45e306c30d fb8cb5cb-2106-47fa-b898-33a75d51e7c2 039bbe56-7cc1-47d7-bf93-9e122944f078 b92ef148-078d-4945-b179-d659ae038dc4 c7cdb795-52e9-4765-a9f3-9ff4fc24cc97 ad14c654-0541-45bc-b435-5713c96deb55 e4d775a0-034e-4564-9a7e-e76cd0d5363d 8eb8466d-9d23-4157-be96-227d47cf9680 956312e9-e329-4730-8935-35c4d8cc68f0 f5e96b6d-4ce0-4653-8ff9-8d4755023cfb c9ea727a-a37b-4ea6-a545-dbca2fb358bc b27da6f7-7778-4469-bf9f-48d8f02d6499 71f9f45f-a21c-4de3-9129-eb06aeb527d5 953a96e1-49c1-4687-9e9d-ea8f997bd1d1 cf49eb99-389a-414c-bae7-ab07aea746ef 04dd1626-f2b1-41c0-b6f9-c49ba8cdb161 08f5612b-53f8-49df-84f6-10067598a34c 0befde1e-75b4-4bea-9b7b-a29856d05055 e43bbcc5-2488-439d-9648-76ac5f1d103c 0d48ea22-909e-4e43-a8a6-85ac5dd37289 a740ceef-d9ee-4962-b65d-f816508ca7c9 c3efd7ab-0b6b-4035-a2a6-e7dcb12e4e3d a24f171a-4d2d-4106-b49c-0b555a3861ab abf468a3-47a5-4495-9eca-5c786d157dbb 2831c256-2f50-451a-b8cc-260973273913 5a2affec-417d-4355-83d2-57df47396f09 e93acc0d-0af8-46b3-888d-cb9fe24b4b94 e61ea874-584b-47eb-a4f3-1c73313f7a63 45d829fa-5d43-444a-9d93-5a09ff27b046 fc25c989-d52c-46f9-90cd-cead5fa3d11e acb25956-2bb5-4fa3-9a7a-201fe81c3e17 5d0087f0-eccb-47e6-a256-866dfafb69af 471f97c5-5ad5-411b-8c2e-fbb95a30c227 4f6dba52-411c-48bc-9a24-de3c970ab05a 563eb5c4-667d-4bb8-9496-1b67f4e397e2 0049045f-43a0-4f26-8e89-580755727c5d e92c587f-265b-4e84-b24f-4e7e7c684302 153a9afa-3e74-46c6-8ff1-dd7a9417543d a2fc3a59-7be7-449b-8ba3-5a043cd21312 9f29c728-1d6b-4531-8b23-368c7a69408c e362c486-8b6c-4088-8841-3a54ee79cfa5 cf7191b6-5a45-4c25-8405-fed66b76e4b3 e2bc3c27-65d5-42f3-b589-f7dd6d34725c 14d4d6a4-ba90-493e-bbba-90b72c6f0dbe 808ce834-e1f5-479b-ae0c-5359c27a6a75 a3df37f3-4966-46af-8df7-4a8031dacc31 349b82d5-3317-420c-8b8c-826cec5e4362 6973ff18-044f-4e97-91d8-d58a0f7ad783 fac13935-b532-4133-93c2-ec2bf6a1873b 7de2fcea-5f5b-4e92-80c0-4150f9036c99 dee699f0-978a-492e-958b-2ec04d02edf7 6bfadc35-0770-41b7-b1c8-58074482ed7a 2bed82bb-c99e-472e-a3c8-06adadefc92c c8cf026d-324d-4af4-b609-53163e565f47 04029ebd-124c-4865-95a8-6fa51477bc6d 817341e8-7099-46e0-aa74-0dbf32d69758 ec04d54b-8e2a-432b-94d9-bbc11ac05360 ede1f1d0-982a-4b7b-9611-aeface3c2067 2f6a7513-acea-47ce-906f-89860aff8fa7 0f227f5f-8cda-4fcd-932a-28d2e8f3cdb3 6aac7bdc-b8d1-42fa-be22-ac0a394e1a52 37a71d36-b309-4829-a186-b7f21606db95 e6b7af63-f3e1-4b7c-b04a-7169dabd1b7f f5dfa6c5-8963-4425-b4c3-4034ec52fa58 a457e1f9-ed39-4bed-acec-b764230beaa1 ed8d5b23-347a-48fa-a6e5-f89c3349c5ed c933f67f-27e1-463d-a4f6-2dd813e34634 598df1cd-cc9d-4184-81a3-f04b56332073 17637855-e7d5-4523-8b4b-b66d07eee53c 30bf4b4b-a980-49be-ae2a-413368672b33 ba665548-aa5f-4e62-98a5-e595aad457a0 0b38d3e5-76db-4519-96e5-869bcf5b9c64 f22d3ba6-0ff4-4f15-b1a9-f211c06a21c0 0e5ecb63-445b-4cf1-a97b-e9af159a33eb 1f36ba18-a8f6-4e1f-a40e-1d847297f7ff 21750548-a87a-4b4b-9967-398db904a98b 999de6fe-e21d-4480-b6ee-ab503bf97b89 258425cd-e9ea-4f88-a29c-baa8727cb319 fbaa69d0-d10a-4114-8588-a2e275c307af 64a86dfe-7608-4a68-b463-acf04ed855a5 60e760ac-1646-4bcb-8734-81524e302d2f b2fed43a-516d-4554-9577-a28c147d1ec8 be738178-6e70-4803-94f5-dbf6b845e457 35d91756-27ff-47a0-a996-5b022512529d 1605c2fd-ddca-487c-a13d-7b26bc9a819d f247ab86-fddd-4777-a47c-2e41c3c3ae1c 58c95211-a431-4160-8e61-e00ffec5bfe5 2af3f4db-0832-4218-bfa5-21cd28440585 03a21251-c27d-4007-82f0-36775fa9e727 27a7b247-6928-49d3-8a76-afd559860952 ee2966fe-9810-49da-a4d6-89864f90a1fb 8f344ac9-ee60-4e9c-9411-aad17d7d451c 63b82f19-99d4-46c5-9c32-21b9e5913889 835fc3bc-7928-4542-82bc-c8bfb0b900f9 bc97f4c5-158d-4934-8f46-d27a7e8fd934 ba515cf8-414b-4a17-a0a0-bc7b04b0167b bffb428e-80db-4f34-ba63-24ee5bc670bc d001f4c3-90a0-4d82-b92f-42e65ea055c9 493dd52d-3ef9-4ca0-bd76-0317a28fefac c23af66b-68f2-4dc1-a999-a2dff4ef4b54 7ce9721f-4558-4c39-9127-27a3e58a2f4c 1a09607f-0dfe-4098-abdf-88c9aa8fea9d 01f66783-b14e-4855-a965-ffb2e3e3234c 94eff550-bf95-401f-961d-90c93633f302 a8f29c9f-89b7-4682-8a54-eb1217a3e63b d858f792-8fc0-4358-8b45-ce0be9787b90 f4d405e7-e6a5-4ed7-bcec-2dea3b08a70d 84a11045-b561-4000-aae7-cec455cba2e5 2097e840-30a9-4149-a558-cf1dfb28da6b e0fc17a4-7f4e-4eb6-9f49-a2de2534d8e8 494af438-278d-49b2-8d41-61369cb2cd2c ed045646-399d-46e4-9dfd-ec34c2ddc5d0 1f0ee185-7bf4-4814-8872-d2ab1ee93bce fae47d28-4098-4463-8600-d564d033443d dc7a2af5-a0ff-4561-b92c-27d2e68f4c00 8d4963f7-465b-49fd-bbc1-c45997c6b7c6 714b06e1-b2c6-4643-a2c6-f627f085da03 1a2079e7-da79-4c67-a4cb-d9105beafdb5 86722f70-8e63-472d-a5fe-12e06a66ede8 cf9aff29-30a9-4b2e-b3a2-6a768f31d5f4 fd89e160-640c-417c-81e7-17242e5639cb 9e0d82c8-a045-4246-a822-5fa74824f222 c2765649-0b1a-4720-8cef-5a063e025038 87cdf3b5-fd11-472c-a988-fc5f9a7c893d ad15cc0e-ee9b-4aa8-9021-cf36cc4ec1cf 0b0acfd5-5a23-4cf7-9a53-70625ee6e166 66030e22-e828-49f0-8284-cf4beee40378 c73e8f15-f85e-48bb-9128-3001fbe9e007 a3eb2cd0-cb89-4823-b42f-b536eae92e2b d3893a7e-450f-4baf-a6e8-cbf96e00c404 d28b4a4d-a5b4-42ba-a2b3-546a5341710f dc68f7d4-bce6-496e-8ea2-103d55bf8c88 15e4b5fd-20fe-40ef-a769-a0cef7372985 1b78c3cb-7150-4e91-8424-a439508eb743 816e17c3-4709-4384-9153-7d41b7583496 8cf83b9f-1460-4d40-b4f1-eb34cc55384a b2c64492-2b1b-4835-a103-f8a748a0f428 54dbf875-5e92-4106-a2f1-dba0c9dc5ab6 67447538-6c99-4e16-a640-39ddb7a8fc62 f73d78bc-d048-4645-9bc8-13a534d45c27 1a588b61-deee-491f-bfc3-3d78a8527d4c a22e787a-dae6-4241-ac55-74bfcd644065 8cbc924b-da4f-44ae-bda4-9e4bdb20d558 9a17d4fc-bc3d-437c-b0c9-f0a7164c906a 52717e99-ff5f-48d8-a03c-07c460f63887 4c7c4313-81c5-4b90-9b96-c3f35d2ebc96 e8e10f0e-edb6-4523-b262-b2c74670d214 502f6064-682f-42e8-ae93-089474857f66 c6dc46f8-df40-4379-a8cd-f7db5f81e0b5 3705c37c-47e3-4ae2-b9c3-c8fa9aff3c21 0073eff9-6d9c-4b50-98cf-b309cdc059f9 4765191d-57a1-4164-a209-1107a465a042 07f89831-b78b-4c66-9a64-d5ca7f16a380 cde250b8-849d-4f05-8976-469166a975de 8bb073db-ae8f-40a2-9d5a-f79adf1485f9 f4cc1f1c-74d3-4b20-a2ab-0fb97937e13e d650182a-b489-4e49-b4c0-0620b6390ce3 24388e28-5339-40e7-b613-ef741d2e4e2b 4788c869-67ec-478a-acda-09b74047e090 c6374acd-bb1f-4a72-bb87-58391c31fbc6 b1145b98-de89-4d2b-b325-d763a6cbc647 fa7bc7f5-763c-489f-b43e-9ce89c19320f 9def61b9-00f8-458e-98db-12da481c3790 4afdc321-7458-4be3-aa71-47189a9e7857 dfcb1640-f6d6-4151-b463-823880e1cc89 15b659c8-a057-410c-8c37-97127afbd874 a3b6b636-822e-41fc-bc22-1202e67cdb0d 73b96be0-8515-47dd-84d0-3bd99c93f406 e5aa3861-5c70-4d02-b43f-151dc71bc168 2c1b5ea2-0606-4e39-b6ac-2c8b82e2bf68 17288319-faee-4e90-8fd3-d348c00ab356 4d68f620-ad52-4a3a-b627-89560d0e35c8 f424ed0a-a1fa-48ae-b626-2e76f4a16983 5c7936d9-7f5f-454f-baca-76c19bf91d7b 2d1b1991-d8b4-4092-8e6b-8206db2d04b6 fa7602dc-c1da-4502-a006-0e9297958d68 4a74d8c8-bd6f-468a-a2e8-4def23c1c47b ec64d78f-d212-4f55-92a7-d34340d92032 eac69ddc-5ec0-4af7-999a-8db14d1fe14a a208febb-806c-40e7-9e71-7a4282350639 465ee061-8636-43f8-9974-5349e219edae 8d7a8174-990b-45ca-a1b1-e901c7ceaa13 8ad815a1-ee4d-433e-9a0c-e6d46c2d7d0e 45d0705a-42dd-4995-8d72-788611357be4 2f3c859e-b1f4-414c-a27e-35fc319d3eec 83296d3d-6bf6-4cb4-a54c-49f8d1dd438e 739c3ad1-58cb-4f70-a257-45600fdf7229 fca9cca4-d9fe-4e91-9647-674bc67f7e99 a57bcaae-0483-4fae-b5c9-f72628e157e7 503470d0-8374-49cf-b26f-bc994183180b dbfa945c-b610-4a83-8c0d-e7aa125100ee d46c629f-51da-415b-9cee-56f2d517fcfa 0d5943b0-a674-49f4-b4a0-18da2a3bcbe6 370b3eab-c0bd-4ae7-a36b-27837ffe555a d325496b-0bda-4943-84bb-e1f8e71426f8 9e29d906-5557-47fd-a22e-645218d0b005 f7df9ccf-2565-4320-9bee-9d881c14b833 39913b04-efc3-4cd0-bb03-1c3805b003ca 4954052a-6581-40c7-8594-fcc315547dba 9686a854-4312-4096-a4e0-8a57749197f7 6b96b63a-17f0-4eb3-8a89-1f5b2e381c3e c773cce4-ed97-4f84-99c9-d1afee9e991a 1702f871-7d52-4676-bc6c-d2459dcf0447 ba7d4f0a-8668-41b7-977e-76b114f005de 230f9c64-b6dd-47b3-81cd-d6801b2cac98 d7830aa6-eb9d-4a9a-8c7f-5a30449ace64 39e61add-2785-4555-8632-84e8ea799c60 d3db9674-0556-4775-b1b3-eb1d50cab524 d359ac3f-284d-4c58-9fd8-fb91194f2f77 0c219638-a8a3-4b2f-af39-ed0f1bd22702 24a629ba-28af-4874-b4e2-8e8fd1b1f224 d8d7b43b-f2fe-4d8c-8b98-7b73ad696f33 666ccc0c-670e-44c5-937b-a60640604309 b6477dd9-db8c-4378-bcf9-f897c8c94422 1dd7fce7-a6fe-4d94-9330-d76acafd6264 fe96d8b6-42cc-4172-8433-967cc0b1d480 3575f56f-b75c-47f9-81ab-b08fd16cf619 fb347120-a086-4132-b2db-f4b32fba215b 5137b6e1-491d-4f67-8a44-f6a2e96d7d42 17a83f75-1854-43e0-96f4-e94bdf2044a4 d1a897e9-05a5-4614-afac-047a52e06669 59c4e3cf-9004-4fd9-9705-e630228d43a8 c156596f-9d2b-444d-9d0b-a34d0f3d93eb 8861872f-5aa5-4f77-ae41-8c78467d94cf c531b231-76d9-4172-b13d-1ddee048835e 9a91b259-f711-479b-919e-b8809d873d76 6f9b37a1-14e5-42aa-880f-86ab770e5284 3d6914a6-7f4a-46c3-9c65-c4154d6449f8 3b31aaef-813f-4230-94ba-41f92cce380f 3a4deedf-c13a-4853-835d-24a97a9d8ecd ecc2e5f2-eff1-4093-8028-bebe9ee4196f ba2e888a-5ada-4dad-b4b3-47a0eb3ae729 bd5a2497-9254-41eb-b2fb-bee09c40e8a0 a4539b15-2454-43aa-b212-c8529051a3cf 52eaec5c-7aa0-46f4-97a1-13f2bb1e663f 589cd832-652f-406e-9a69-5f578c8b34ac 8f572a55-c0c2-42c8-b6b3-594c81a2616b a325f2cb-a460-45b9-ad53-20e789fc47d9 92d6aaaa-1a1b-4287-af69-9dfe382fbeac 2ca9f9b6-6fdf-4091-86fe-20c30b1ddb5c 0805326b-190a-4626-87fc-75fe80de9ef1 f161a004-66b9-4e22-b4d9-59b537224187 07175ce4-88bb-42d6-9e7a-9299a9c8d893 ebfdf3a4-dde3-428a-875d-961a191f0725 b55f1d33-83b7-41f2-9bd8-031ed1cae138 9ccfa636-6ed9-49cd-b9a2-ebdb46b97b60 54a140e2-4797-42c5-9e5e-7e0eff0cc35f 350b8b54-fcfd-4c1f-bc65-4cb830c69013 e59e717c-f464-48d3-81f3-1fa9071d6806 c6e26dd3-655a-4335-aba5-57e7c6f25322 08856f05-468b-4ab8-b50c-8407dc6ca5e7 6ba24092-e460-4a4d-889b-a4c5850d22d3 67ad45ec-e9e8-4084-b19a-43f64e779409 c8b95bb6-7aca-46ff-af83-c0796227a150 977ee9d9-9242-421a-9a0c-1787c0e6743a b89d3ca8-02c0-4e67-836e-ccec0df04d16 5193a672-ddeb-451b-b29d-295820e6c69d 589f9c36-9d70-46d0-b1f4-72b2d9ca6a06 b3ba361d-8c3e-4660-a083-0bcc2520b8f4 89ac92f8-600f-479e-af42-913644fe7a0e 5397a7f5-46aa-447a-91bb-a3b8ed3625f9 8e1c3c02-754f-42aa-848d-405e96485a10 17d2b4b9-bda8-41cd-9829-53ab6ca1bd6b 6811d69e-6520-4126-922c-5d96ebdbfc72 08656f85-80d0-47ed-bd37-8829d9a19762 6b8d36f2-b837-4134-b2c6-91ee32d9d463 bce49903-e0c5-4bd2-8806-41e736183c50 0fa9d4f9-253b-4259-b6c3-24938c567b61 eabea249-f36a-4227-99f2-b02f3f6838fb c3f90a93-13f8-441f-9b41-ee861404f4f9 a37c0df5-88f4-4f80-aa10-62f6e6b11381 620fcefe-6faf-4d16-b7a6-e10c6766d835 a16aa944-6937-4eaa-bd70-7dacf3fceb7f 66ca52aa-7bce-4b0c-b2dd-4ecf4b388d58 62049ce2-fd2a-4e4f-8e92-4363330f626e 638eda9a-ef9d-4209-8f3b-b15a2f5346f4 22d8bb0a-e55d-4df7-bfa8-566c14c1613d 18174916-feeb-44d6-8da6-27518c612d0f 32cb875a-2b35-4f50-8690-3a3e186e5ae8 e3d9599c-07cf-40de-a4e8-75f9eef50460 3412d3af-7a60-4792-ac25-ac8b9b40446f b7981ef9-ed72-4c7e-905e-9f8b13f3b965 d974a7ca-5ac3-488a-9e29-f5ab99c34b7d e0cf8841-854c-4ada-8c6b-5e74033aa2e8 9e1c948b-246a-4a6a-afde-40654eaa44a2 08d15a9a-93f1-4e95-91b3-85413eb0cec8 994b1e7a-7147-459e-a576-8b6d49857619 a789d35a-6cf4-44a8-a7b4-b677fc2b4493 66758fbb-9839-4f3a-84f9-ac9e51ae00ec e63c6605-1e01-4737-9e1f-7881f19f42c5 4867687c-c979-45e8-9c04-047a9736c8c5 2b581e52-0e86-4111-991e-81df4a0dfe18 43bba8a2-dfbc-4e13-8b63-b6b53f8211ad c1398ad9-2ee1-4c65-8890-37b5eff74cec ebeb5133-d29c-4586-ab10-71d8cefd5fb4 4f984b9e-44cd-4208-9e88-b625e7b91c7b 1bf3d0e9-f4b0-41c6-b732-bc12597d57c6 047f0c30-b2a2-4a55-966d-971e838f2133 87182ddc-8f4b-4e22-89c5-452ae73ade4b d84a39fb-e87b-4f7e-8282-a98103a05764 70483605-2aa5-4d31-a484-faef6be96cee bae818d0-0c6b-4258-9f85-f426910a74b1 ad32c29d-b07e-4195-8539-a928a49d0a8b 5c4b2cf6-e2b9-4981-8a00-3a3713bdee89 a7f69318-67d2-4088-98f9-7e5c06716129 58411654-f87a-4802-a1b9-13cc2a86a7a8 c742340e-b757-48a4-a15f-1e25fb9e1867 cb308041-bea9-49f1-9219-6696fea2b0d3 451339d7-ac51-46a0-958f-18db78fa7c6c ea053347-a80a-411d-9c23-dbc04edf308d 47ec80c6-1656-4f0f-9a0c-1621d35d3699 d8b5f3e7-5c34-4675-afee-3b6e5f803a4e c18b9855-4954-49e3-b695-e6805c4b25ce 208c9cab-16e6-4fcf-857a-a5b67c759148 e5993de4-dec9-43be-844d-8f5f3d08b609 0dc91ba1-b1c4-4ff4-b4bd-7a40e2c0646b 855aef92-d5cf-42e7-a502-0fa5dd6f8bbd f14c1c9d-79d9-4f38-bcca-b3e241f9a7bb feed14a8-a881-40ca-b318-17fa7945d583 dd5e40ef-7490-4e14-91c0-20d3e59fae12 f5ed22fe-021e-4956-906a-fea8a196f57e 699d0d5e-20b4-4bbb-bb61-7a62b328f752 a5cb7f1d-aca0-420a-b95d-753d13902ecb 2b39a6f2-3d8a-43f8-99a8-b22329ad1608 3610e907-47d2-468a-a273-9602afaf6539 cf33ef23-f9ab-4a41-9859-fce4d8412bc1 82af3496-47ea-44bc-9c50-9e488149be19 8be516db-54bc-4f6b-a24c-4b065b06883a 6edf68b2-c3c2-4e38-852e-dd16610f5e51 298d6c4d-abea-48d8-a9df-8609880dbf6d be74af95-9e10-4ad8-b573-4d0b425e5a88 4bed94ee-8322-4ba2-b53b-80a1fc7d2520 7ee09e82-6e9f-4240-af18-aa00e1ef4e5f 8d443854-b10e-4bd7-a354-5419bf000509 ef7674df-a3e4-4480-bd55-5be43fc2b974 81322d77-44a3-4dc2-968c-4d9659c73c84 009fa11e-4416-4fe0-8395-422c51e4c85c 0446eefc-4092-4d9a-8f79-aed7bf278f5e 801c74a8-a8a4-46ab-8b9f-3cc6f1165450 702b44f1-7ca7-4541-b205-da844b764e83 b8f1d7b0-3654-413b-80f3-4af50d7da7d9 70c3e3f2-168a-4c77-a651-d1a46fee3852 dff232d0-fc6e-4676-8958-4457cf30e1f5 15a2c2ae-6afe-4e46-8dcc-1361e122c5e7 2932d0ed-e1f2-44f5-80be-551ac54e2472 7918fbd7-8340-415c-b1d9-7f0ee97ecbd5 6e2e35f3-80f0-46d6-844f-f429c3de4423 93eb49a6-9b07-407e-a4d1-6d1f9e17503d f1a57dce-aeb7-4f80-8535-b04e0dccf7db 90598bfb-3c41-46ee-8cd6-fe658b4a895b f1d55a1b-e922-4f61-8a41-1ef74e8fba05 89cfb341-6344-43a6-8fde-43cefaef20db 12a43da1-6d15-4ccd-8c7d-fe2ffdf75fde d7aabfcf-7978-4630-844e-8be417054456 8acb36b5-c34e-4f4f-bcf7-b5a4b802fd58 9542a9af-a823-4403-bf30-2a03cbc7ad32 05c5e5ed-b492-4763-ae2b-a81d5e9d7054 401ad94a-fa12-4ca1-bad3-33263618b674 f80857fd-c710-4693-8297-9431172fe9b0 d718f52d-32b1-4e44-b8ed-28c96d038e09 43874d2b-e88a-49c2-9673-32ca0e9132d2 61b9c941-71a9-48c5-952c-ae58221a1cf6 fa6cdd7d-65e1-4c22-86da-9814e6648edf 35a3de12-fcf7-4257-8670-5b672fa10314 bc43ade9-ca12-4a85-8fc7-a42e0f20b074 3a792740-d0c8-49ac-956a-187e58b9a0bc 522905a3-66ab-40d5-965e-63daa53d256e f43aac5a-fecc-403d-990c-c67d04e24e49 4d464a1d-c97b-4fc6-9aa7-7018a172d257 95aade09-e01d-458f-954c-2ff235711ada 39928604-b88f-4d40-aaa7-66b1f9ce2992 c56912a1-67e4-45be-932e-989dea58f713 199e4c93-c2fb-4f89-9e52-e1e8f81b0688 9ffa3ccf-8baa-48b4-97e3-0c764a31382c 414e511c-4fa8-4b21-be78-896c2b7cdaea f3f335bd-c877-4056-9cc4-01a2ebb77a66 28910582-fff8-4637-893b-808e6a2d3a65 16b461d7-8417-4913-8b1f-9244e0d6a285 93b51934-a3ab-4096-9320-5bebaf2d0175 6e4f6bb2-c47a-4195-978c-3b55c8dc0fbf a770e17a-ea43-47bd-a92d-1eca5846c0b3 d137ea3d-2bc3-4a74-bb8b-8aa026225987 f19dec99-4cb1-4736-b44b-69432b9c6b27 f28c7344-5bc9-4287-aefe-9469ed5af52d 9fa9203a-16cd-4db1-a823-380fc37d2783 d2f7adeb-1c22-4ab3-b1b4-c67a98a73e36 69112769-0619-4bb4-8b7b-4bfb1d6c51f3 ef74d430-321d-467d-a229-3b65fbcc3611 5bff22c4-b1d8-4486-ba1d-b867013b5ddb c69186ea-00ce-4364-aeb2-915e93543eae a2ca895e-d4aa-45a7-8a59-d73bd6120a79 410b6c87-dbbb-4de9-acef-48e12e34a425 f1735be5-6cc5-40a9-a28e-f9a989f07938 626c2388-264f-4ccb-90ca-f1a8c29e515e f1fa0644-d292-4b9b-8f37-be9c409f7a6e 95513c32-8b2c-424e-8d1b-0c6096969206 2e4ea91a-36df-4ecc-a963-7b4898ee28b0 6af9d192-a82f-4924-9ee9-ea27cedfbc2b 33125b3a-c59e-4b43-ad4c-74fcd10630da b8489cfb-5807-47a7-a699-9c9c944d4230 8927ef72-87a0-4997-b26f-c21d4a20e03f 44a05385-77ec-4b06-84ac-fda3d46e3586 3cb51dd8-2bae-42bc-b3b6-c5399b9f40d0 5a3a102e-8d04-4f34-86fa-aa499e17a63f fa407b07-1f55-492d-9897-bff01f47f444 73fe004b-e6ae-4863-b21c-50475e6d72a1 2f689604-1945-4b53-80ce-94c5a3196f62 8715d51d-36d9-41eb-be35-bf27c33d23a4 363c07f8-cba4-4bce-be70-997cefa919bb a817ceff-7753-483d-8f1d-82729e7fb769 b7d308d0-47b1-4da5-8af4-ffc0261d3694 70374523-fc2d-43e1-83bd-4d0cfd9aceee 98df7f15-221e-4da5-88e1-7d7e941d0cf6 8f24e4f8-bf29-4858-995f-c468b25504bf b4241fba-2849-4217-9582-2ecf3c54b025 22acce25-210f-47a8-874a-cc96c32bf016 f27a14ac-6cb2-418c-aecc-875fbb73937b 37998edd-b76c-4b3a-93d7-22f78510adb2 42e89121-9626-45fa-bfa6-4d8b31030a82 821ddba9-84fc-4cc6-a762-29516bc01b6d 2aac3782-e3f1-48d8-b06f-6e01f5aa18f1 94626eae-428c-4166-98a2-44e38b7a7443 5405f423-80a6-448a-9e86-1a15f8f8ac05 7a042082-c54e-4605-af44-3dddf71cdadb 39b1c094-3e70-4524-9ee2-b45bfe0da09d b8bcf3d8-0072-4691-8a79-fbbb3ec7c285 6cd16815-08e0-4de3-98fe-fcf546e7a480 d203d313-91c6-482e-ab9f-f29c009a994a 65c9e717-1a36-40d6-9626-a7872095feb3 27dfa375-68ae-4258-bba5-4ec48344a521 d612c5c0-bb70-4500-9d0a-532e060765f0 3aad199c-014d-44d7-8977-e2c756cba8a0 ea620140-7059-4aa2-b581-df439da94eb6 7e3ab42b-3825-4974-82c7-9322c143ec3c 043354d1-98ab-4061-9fab-d55d7302138b 410732a6-2443-4b16-a872-b7d78bfbf89d f4830941-0a1c-4a41-8a21-e891e075c065 ea3bd9db-2120-4b39-b21d-a0082831bfe3 b6a63870-576b-410e-bd96-1236940c244d 90fa1715-c98a-4d3b-a8ce-237c17a1f7e4 50eb6ef2-a976-40dd-934e-8e0700332070 122fab8e-06cc-48ee-9c5e-d85b311d5d82 27ba3f0d-19ce-4183-b898-3c1ac780a214 08725a12-fb86-4ea9-8c95-ded980fee25e 6380b01a-a4d1-4b9b-80c8-4d875b2b7608 7fefa1a1-9baf-46bc-917b-b738d5cf2135 13120614-d595-4646-8ebe-67dc0235bb2c cc14c8b6-798b-45a3-838b-b6b941b68c8a 9ce1c760-717a-40a1-98d8-2afbc75f4f05 05d295cd-165a-4df8-8de7-9f061f274e86 54fe4add-e2de-4488-9039-ad216c871fce b19f7855-613d-4cd8-9276-f0989e5cbfb9 73de35a5-6fa0-464d-81ba-42b6aed558d0 c67dc447-e1be-4e7a-b42a-864a1a971cfa 5d328de7-3abf-4f63-84c5-efeeb8e1f148 e7adbb70-7d66-47be-b83d-d4d98f9ebca1 ebe3f6e9-c5be-4194-a555-4e4878243de7 241be181-4ec3-4ecb-bb78-595b5b773f91 7afe2a64-6d5e-449e-904c-26731ad0139b 72462cfd-b123-4e0e-90e5-39673bb5cb74 65e1d9e8-6890-47f6-bd06-12d9919e15d9 814dc7f9-06b0-40c9-af61-bae9f973e166 7e5ed6d2-8f84-48bd-bd04-3fe32d072cea e6f8a7b3-b9b9-4558-beb5-10585b126611 90155c9b-417c-4074-8cca-267b4dfcf7ac 8531634b-7de1-4c24-b1d3-6ed05c7e2c6b 45be3326-6a1f-47dc-b433-061d584c1dd0 97105771-0cf9-44b5-a0df-3db4fceae47e 1f7391ac-9c93-4a9f-9d43-b247107ba6e7 dd1e9f3e-a57c-4409-9e61-f0dd8e26d107 d79df7a7-bc4e-4b88-9198-44de21d4b176 277b8f26-7274-425d-a75f-8f93e61056a9 6e0f8801-0bb3-40c4-87b5-d779a71666a6 be377e1b-e0dc-453f-8bbe-edc65dd7b4f3 f6adff46-2beb-4d95-875b-0cbf40aa5c84 b7010e8e-2835-4776-a97a-81e41217d70d d4db7c07-30f9-4e96-9b15-f7c6b05711cd 01d89ea1-44a0-455f-bb79-8868df10c5b0 92b98ce9-e940-470b-810f-6c62898ad8f6 e17b1927-95cd-42e0-808c-d38ba7cc7514 505eae15-1701-43af-85ee-3ae9e5069f18 ecb9b2a2-2b8b-4767-9d35-d162ed0c7a71 a00f6597-48f8-47f6-8c82-9eb4d1873d88 73ef7377-dce6-42f9-b245-9ebd5468a7e9 83727ce8-6767-4120-8b1e-8eb3121dc617 c5b7d581-55f8-48d8-aec6-a9e8e52ea4e2 37153955-786b-4556-a172-7166119924ec de82ba86-d392-4908-a7ea-9afe78de6c14 acc8b857-a764-4eb0-b667-fcdfc56311fe 1b9c1d21-513b-4850-9a24-c024941af9df f4d5ef24-c175-43fd-be1d-a25fb454ecb3 5e2afc35-4040-4bdd-a739-212cab253a73 e20b5608-8330-4b71-a4da-2625e5cae6dd 9d4959be-e680-457a-8792-c8ce0bfef1ef ed30e95d-2550-435c-9ca5-63d1541d30f5 ce460483-5359-4d06-9df9-05bce350528d bd839bf1-05b6-4f1f-a56f-af0e847ed56c 7cba844a-14b9-4ba1-afd6-8d3a15980e6b 4adea645-e5b6-462d-b939-cfcf3fd6bf7b 51d059b8-114b-4212-9745-c4ce9f1687d3 d8f86bed-c057-47ca-a275-ab0df8078938 d214d6e1-6ed0-4b04-a1e5-a5f977897c0d 7bb9967f-2c1b-4fa9-be3b-1261935079e1 65f24a56-be38-4745-9735-692b03caf034 de3f1bad-e971-43e3-9153-e70b56913017 a8724ba1-8db5-422b-9c39-053fdce7975e 56a1070b-32fd-4f5b-97cf-07a845b408c2 42de85d7-e03b-405e-ae1a-047be0e4e329 9ee2bb6f-dcd6-4e6e-92f4-329ec57cd2cf 054004cc-2e1c-47ad-b377-f848b4b94e6e 473f36e9-2220-47f4-ae48-3d787ba2a06c be0f4367-da0c-4f7e-9cfb-9a30ff1e87ee 9f80d677-69ee-45d7-aacd-8567163f9ffb 08f2e140-9298-4f43-803b-97a2aa28089a 74b75ae2-9772-4b13-9764-12d5120fa54b c8fd9989-35db-485c-b4fd-45b004dcf523 86ffba95-71f6-4b1a-8192-cf672de1dd61 31c3989a-c064-489e-b352-17a7af02b64f e6890143-2be9-418f-8f28-b5d80b2bc2f1 e4565fd6-6901-4f47-878f-a9ebc62451f1 eba7590f-c0fa-4639-a33f-d8c0a43de831 4eddf294-f8da-474f-ad6c-ab4a4bbbdc8a 7b847712-b976-4d8f-8a35-c02ff4a5df47 13bb3d60-bb15-4909-a089-e7b4002196fd a105a77f-2bf1-4392-99a4-09367107982e a0340d9a-d174-404b-865c-62f2c79abe52 83729b28-7618-4960-9b89-f4d930f7b441 4dc68fbd-a2bc-4b12-ae29-fdf4696b02d1 66ac8b85-cea9-45b2-bafa-ec17bbccee4b a7659d74-2620-4fce-8a98-8c1932ffa4c8 e3594572-df03-45db-9cb2-b0d05911982b 274135f6-c8b3-4b2f-88d0-67992f3f1bf3 b0ec1534-5ccc-4b2b-9f18-1036b5f16d5f 2af08a48-ef71-4def-bbce-fe93193e0ea9 6b9fb3f4-1e02-4fd4-b6c6-7a95f86604e4 92d1859f-d284-4add-81eb-460ae49761c5 7d36fe73-86bf-4a47-ae31-ae77151598e8 e7a2e8af-9b4e-4e95-b12f-96478175dcc9 3c90a863-22de-44ba-ba1c-ddf2b8d54ae5 5dca82e1-4078-4431-95f6-86a327a69cff 737e4672-6a99-4d85-bf9f-63e9a7e5fcbb 3bf4031d-a068-4ea2-acf5-a6a83a32c216 44df16a5-dfe4-400e-8f8e-78639579d976 bb03c8c2-deec-465d-945a-7ad1e107b535 b26b29b4-21cf-4743-b047-8376e2e5fd28 a22380c4-f978-4ddd-9197-62c6e359e68c eebcde2e-7866-4817-a8bc-2403d63c6a8d c7c99584-d0b8-4f15-bbdb-e5b93cd7fa33 6c51a428-692b-4b12-9047-6ddd61117a54 394e17ec-6246-417a-8a20-5eea0b172593 6bf2b1eb-77e3-45ad-9c10-a6884bf47ebf 4389bd18-93fd-488a-9be7-486b495a92c3 511c3470-9d6b-4622-8525-58bd6154cb56 0e652c0b-aaa8-4372-ab58-2124e6ea4566 e4d47c4f-9ab6-4473-8450-034f8a520945 839f2948-cc06-4145-b55a-4b2eba660551 954da868-f1df-4a0f-b6ce-1a196435cca2 50dd660f-87a6-4fd2-aefe-2730fc28509b f6a1eea4-c4d1-4ff7-ac16-90d0b57e0763 a211078e-2ebb-405c-8285-017cd82c845d 8564887d-c1ff-42a4-ae9f-2a5d8f3c8458 b3d352a1-8297-4149-af24-140986f6b4e3 8a232dab-6b31-40bd-809c-4b146c2da51b c4b37acf-a945-4ec6-9e9c-ec30ec574db7 2f7ef638-1db5-4268-a626-ae08d72fdc93 72f8fac1-fb7e-43fa-a47b-48b73d064b4b e9e2ce7d-2637-4134-abd0-1868d6fec59a 359e9899-8b6d-4be4-82d5-2cc54c1a69f1 ffb7ffe5-e461-4afb-bda8-99bede997167 f5d374f9-4ecc-4d50-8038-892e26c6d2d4 6be90789-c22a-4571-96d9-9abebc0dcde0 b351b2db-30da-4913-8a3c-498f7c419495 fcbfe52b-903d-4def-b6a6-a412ffc3005a b82bca14-5d7e-4158-a636-d9304d2bdade b27b1354-ddfe-4159-baef-fcab89de79c2 0581032a-c26b-47d8-8344-c92658a3d22a 3b1f1080-5fa3-42ea-b0fd-bc29227049b2 e97ba36d-6105-49c5-a82a-20b38ba01b10 8385d98a-d00b-492c-9437-bd1b2d544cca 73ed0d8f-f5ba-4951-9c68-f21af78a99d2 391a1350-5350-4025-8584-e71691556501 df497a69-91cd-4f85-839b-8465f9606458 89d816a4-0c31-4b56-991a-3ceea4635511 0942b609-6665-4328-a1a4-4fc155a23912 33fdaa9b-1372-42a3-9e3c-2416b472bed5 998e55c0-e5ad-4e8a-b6cc-3f004a103fb3 a35d0402-5e83-484b-a50b-a108beb1cefd aed9ef8a-5aa1-45a5-92a6-19e1b44c0213 942c6c8d-7c96-474c-8dab-b1908d01cb90 8fc87174-d5c4-407e-b364-573cff2ae6d3 7a710969-5827-4a07-9241-9885c769b4dc a6f156d1-ada0-47bd-97b0-0c7676c11123 c777f751-7f2c-45a2-a79b-c68fe7c46bbd 7e5a0520-3aaf-4bde-aff2-5741e7708d0e 06ced0b8-fb99-4208-b828-d7fae9150f46 bcdbf875-dc96-4fca-8d11-e686255c4e22 6d9a25cc-0bbf-4269-8003-7b5cf61f8841 af228fdb-eb74-48d7-99e9-40d01eb08ffa 079a4f89-d0d3-490b-a231-9eb706946c26 0d4a18da-65e3-4846-9c17-25ea02e52eed 3032cbd8-8656-46d7-9e73-be3edf2511e4 e4848f7d-cc39-4c02-8529-4f287653ba7a bef3fa3a-2eb5-40f7-b89f-8d80250a0e8d 9b19cd5a-0a62-4a17-9e79-0b0aa0c55e95 2077cc67-a0e3-4e06-a838-11e1db5809b1 18cd4b61-8cd1-42dc-860a-bdf844f5e58b 48beb901-e9a0-45fe-9935-181ff479223d 4c54f2db-7c08-4e80-b554-70fdac3e2012 c860e5dc-44a9-43a9-b8d3-43185ef6119e f44eb3d4-2dea-45eb-aff3-04185be312a7 324f7300-7e03-4aa5-84b4-b1a0a018adb7 ca4e1842-ee7b-4b17-b5af-a77db0d24815 8cd60d2c-8ddf-44e1-a4b2-2d56ef73beb2 06b06247-aa5e-420d-bfae-f6173f54770d 41987f65-1086-4a34-a5e9-ab483ec08339 7bcdf928-ab4b-4408-a7f3-20c6eeabba12 c4847dce-c0fa-435c-bd00-ad3a074f1e56 d4e173d9-37cc-44c8-b2a0-bfe463f134f6 9e8462ea-d03b-40c4-9086-69b3f78898a3 2629862e-bc1e-4ed7-8191-49cfdb3207b6 e8c24513-69b1-4fbc-bf9d-99c428d187a1 606995db-074b-402d-a75b-8784ca98f6d6 c32507a9-aa95-4873-bdd1-d5bd1c9bb52b a6a28e81-2df9-4d0b-8afc-fd31e72b066d ae0bb88c-8904-4575-9ae7-e065d9799e71 cbc738b0-ef3e-4a86-8cc2-6cc5816778ac d0f9624c-ebeb-4164-bf3e-043d3ef167a7 0f80a845-938d-4998-9e31-94659d6594f5 5e440130-14eb-4546-981c-541bdf208da8 f6e92c52-05d0-4f12-9f1e-5091cfc0b1a0 f569a567-e670-4850-83fe-abec8fe90bb6 fe43ba9e-07c6-48da-ab3d-4771d8ace93f 2810d4fa-a4dc-40c0-8de1-6378dda86d1d dc9f02c0-be63-4d0a-95cb-9a5bc478f392 107818e5-710f-493a-a8d9-c53020893714 2980a542-5032-4a6b-8010-3fe7f24fa2fe b1487957-e9f8-4eff-b4cf-6fb1424bf433 994cc2c8-a77a-477e-905c-6cddf1864323 bb3188d3-3e62-4230-945a-5456a013b768 6673a90a-65bf-4747-ad25-66eb20fa531d 4f703137-0395-49f9-a8eb-f3b7c967f8d2 c9270c01-06dd-4d09-9724-ba71c76f4ea8 15e5fa78-c513-4f92-8b31-2234a716ea77 e2a09fcb-7ae9-45d7-8e8e-baecfe463cba 931d4c9a-72fd-40e7-ba18-c3b54e799eb5 3a7034d8-b97b-4b35-a0bb-d617d8f7f1ea f98e1bcc-9a0f-4017-90d0-f4f495440a00 c0fa5ad3-ee81-4e1f-a548-87cb0cf6c61e 2b52f1aa-b7fe-4e4f-b30f-51fd1045ece4 a484a7e1-ee99-4fe3-9948-5dda7d32b836 ec8f7215-e2ff-4e1c-a3d6-1a29d6ddd3e1 212a629c-21cc-4532-a45a-8168d49fb859 0f7e397a-b4e7-4244-9b9e-0c732c9a1763 05d44a4a-a31f-429c-bb63-f8640369e0f6 bd43fc7c-7256-4ab3-a4c2-ab9bb70253a9 84688e60-d92b-49ec-b061-17fe5a477987 52eceb00-87b9-43e5-b050-0adc998cf512 87c7eee7-2516-4662-aad2-36187a8cebab 7ac37272-3637-4c6f-99ba-6570f7a41b26 72285c27-db4a-4b1a-b451-b6ce9b6409be b2ad63e9-cc12-45f2-a171-d9095c1e59ab 8249a7f3-eaf2-46a1-9261-1fb8c7c50abe 589ad4c5-9494-4717-b5b0-301c9bd9ece3 ec8f7298-8de1-4b35-813f-bad9ed4cf9f7 2936136d-eaf5-43e5-afc1-7c48ffd51e76 2bc2b1ab-ce7f-41c8-b6b6-202bafdf871f 2204b6e0-41cc-487a-a3c1-4c37b071e885 639154b6-4efd-42b7-afc9-a38399099d9d 2116d9e2-31e1-40d5-b3a3-30c24ece1707 9cdccf9e-8cf9-4ab7-bc89-2c067491e91b 0cd8ebfe-1fa2-482a-aa1d-6b665ef20678 a13c7e27-97ec-4c4f-9f2c-ddf45b23a395 ddc8c409-57be-40c0-bd66-117590611c27 90071c12-80ac-42e6-93fc-904e1395d3be 8db4bc10-8ef9-4e9b-a7fe-af75c0f83f74 ea6ec3ea-cd0a-4a9f-bd14-5434d6e61e10 9ef66087-6ef6-406b-b543-99fafe826091 c6f7697d-5400-4063-8a6a-2a34df202371 a2d039e6-34b7-4dec-a2ac-60f0fd9cadfe f4831e56-a07b-4467-a44f-b846f6bcebdc 902b890c-f41a-44be-9eaa-9bd3377b3d44 48bb811a-2eda-4ac4-99e4-27fe974d9f6a 9634f345-0969-418c-a95c-59daef4cb043 8a2c22bf-2323-4a52-8bd5-d8054b72f016 f5490c49-b14b-423f-9c10-de4abebdf16c 3b61d68b-a24a-46be-8cf2-0ea376982185 e9084143-47e1-497a-835c-95eb08df939c f713cdf8-d5ba-4e96-ba05-9c6dbba2e996 d23f3711-f734-4611-bda6-8d9ed6817726 60172956-ae50-49e1-a523-1373b8539787 9e8a26eb-bbfc-4254-b967-caded52bda2a d6b6c5e3-d0f4-497c-bb8d-944a1594c9e4 98575090-dbd5-40fc-ba20-d3b46bc09d6c 933ca956-7927-4beb-875a-2051aa39185d 93f6dcc5-1140-45b8-b62d-d4b92aad3c51 955e08bb-3094-4cd4-867f-f2b507d75755 36facb98-c75f-4620-999f-057478041f92 3ecf24b2-e87c-4f20-abfd-113000a04600 f061159b-11d3-4f58-a963-f3192b420c31 3f4f0329-bdd8-4c9c-992f-dc23cd555f65 46f0964b-8900-4ab8-88b8-11f8c743a2a8 22dd4edb-4afa-4a43-9e3d-f14e70a0b566 e9fd0346-3cfd-4f0d-ba5e-f6d5b74f958e 4e23d2f6-3b2c-4f8d-bf00-836657cbc4a8 8a8bf542-f764-4526-ae33-545e2e0d63d9 542c92b5-00b6-4d59-94cc-fd8e4a59efd0 67be30f0-0ab4-4166-b55a-52e2e0d32b23 7bd48057-e947-4303-b4d8-05680c37c7bb 3065bc2c-e5c4-4c6f-8138-b9da095efac7 994fe6a7-54b6-4dbd-b47a-26f7fd714ecf 9f172949-c292-49f7-8a18-9f1de6f15dd4 0485bc12-0bab-42c3-9372-2d591ced72b5 8a22a7f7-6397-4051-bbd2-984f5c6acf7e 4fcb8f23-9b00-496a-a92d-3e966927f870 c6a08da5-3f73-4ce2-bd51-06174b473cf3 aaae5b5b-0fbf-4853-bc15-595ed086fdbf 85425a04-9729-4a96-ab47-3bd86268b7cf 1f3333aa-ab29-4f0b-82c0-f43b40c58a96 b93517a7-6d06-4b90-a20a-87cf36f84dad b601a2a7-ab9d-4a17-a860-ffbe3c931ec3 dffe8620-bcb6-4ad8-88a5-d3061143e2a2 9b746664-0af6-4620-96d0-58c1665258db 6492b543-4a9e-4e92-a379-abb19ef4b817 4e0f608f-ed9e-40be-b616-c0651470e6c6 8affb960-4204-462d-970b-1f2cebd9abda ec1c4b6e-b20d-4ce6-b150-0a6fe27858d6 f619a587-6bec-49ea-b113-52d86a651423 a96aa50e-0103-4091-b0f2-8180332d8d19 e2682036-cb3d-4ed8-9bb4-a13c85779de1 863732ff-6cab-41c1-8dc6-7fa104ab9241 99a51c57-63b3-44e1-a610-47305529d848 6fb7d1ff-598b-49f1-aaf0-cd08c65b2814 e5ed172a-634e-4c06-9962-b00391ed1144 34fd1539-bbaa-4ae6-af9f-7289ffb6ece7 f00733a8-e15e-4a2a-b5d3-fdc0b7a44a2a ce6c9fd6-dbdb-4cfe-955a-c64d067e36ce ba0b08be-1ecc-4949-9d75-e7da39607f0f bdc40810-a214-44a3-82de-15e9c1af7d95 62fae68f-4f63-413d-8c9c-50f264ff1b48 54d4e35a-1061-48d8-b1d0-58839bbe2ca7 a09130d6-78bf-41c9-ba8c-62ca4d7b1233 21b95c67-f84f-459e-88d8-64764a616145 10c1e357-45ec-4b94-b68f-efdd25f177e3 9c2b51d2-eeda-4bec-931d-7b38d3e47801 9b9bbf5e-aa77-47f8-9246-6423682f6daa cb7d8ed5-474b-4fe7-89b1-5181fd7b1eb1 9971758f-ba63-453f-9504-f5602fe92466 c7f6f19d-593d-4995-be5a-4fc620267619 701f3310-7464-4b55-8763-b390a2278091 13953be7-a64a-4f49-937f-771552fa3ca1 02172728-9bf3-40c5-a340-38f111b9cfef 84f2ab45-5bc5-4f0b-9fa5-64c570b838fe b205384f-c74a-41da-bdfb-cf61a7c9a09a 259b984a-32fe-44ef-b156-b86677077acd 249e4130-95dd-4a2f-8fbd-631e4f6a5cb0 c0540a88-3b52-4975-8426-8d26246cc383 ad7ec770-74ea-43db-b649-4407f51a1a15 705f1ff2-ae33-41dc-8de7-94884b723bcc fc1dcf3b-643c-46c9-b535-cb36b1eef3b1 794c3913-721e-487b-8cd2-45a10d20a1c1 328bafb9-01a9-430d-9fd7-3930447bee56 e440f6bc-5e00-4389-8baa-217bafac2a85 5ceb24f4-08a1-4561-9bc6-1fba3d39d0c8 9928ec8b-9e98-43f1-af9d-18bb354db482 3169dc98-0024-43a2-b01b-563767a81f29 ccd6ed56-4feb-4554-b6b2-8a2a15b93213 76e16274-c4c3-4dfe-944e-c3aae007541b 79f4d6e9-3ade-49bb-a139-648c1cf4217a db27cd09-4a52-480d-83ee-f04cec659a3e bdf5e15d-3b72-4464-af42-7df60f87280f 0769d5ee-e94f-4af1-9ac4-b525fee64fc8 7fc8339b-77d6-4b14-aa91-5bfff8d6b9cd 1386f03b-f924-4ece-bbf7-ea29a153304c 1768b11c-d9b3-422c-8199-8d5f6f8919c4 991ae73b-4431-43b0-8afd-14c59e2e133c 20681d75-8dbd-45b7-9a22-06bcf3cfef44 081baef5-573f-4c13-acb6-65826a645b52 06af36da-e072-435a-a36f-9c8ec14ca0c8 ea7894de-7701-4497-aef2-9234f7efd96d 93b08376-75fa-47fc-aae5-e1351f2a4015 27b71515-1719-436f-a834-4dc21b16cbaa fa3bfa82-0990-40ff-92d0-76d6a9d911aa 06bc8a3c-c475-4647-baad-421f5a4e97a9 5a8892dd-27a5-4e6d-9ec5-fba2310757ff f90f03c1-1a90-4c97-8e7e-de86c88ef0f6 9e4a74bb-5ddd-4b51-a3bc-15cd7097af1c 75d285b4-3844-462e-af17-816c5803b7d6 a7d172b9-2e07-46b7-9dcd-40a52af7884a c4592159-be5f-4b1d-9b0b-ab0a2b04ff19 dae3c815-a532-42db-968b-d6322d24801f bbd0830b-c116-4062-819b-cc3508b07530 e0c0a3c0-35c3-4df4-bee6-3c053f13d632 01650ee8-2f4a-43a3-922b-db44abcdb457 e6d880b3-b583-44bf-9270-9c882c591cec 0caa5863-1fb7-4611-bea3-d47befe6c18e 1b92c9a0-0470-48b5-bc81-0662856e5263 ae9e9cd3-454b-42a4-b75c-b191c6739bac 6f326257-a6f4-4b34-8c74-351c2b641a56 c2239a76-9d20-4832-ace7-67a66ef0a11e 319bcb3c-6168-4f4d-86b5-32d932b1ade4 680e091a-0518-4832-a156-d494facf8ae8 97c1cd5c-e763-4eed-90a9-8d60ed3a51f2 3cf4ab62-052e-4f02-962e-110a8710081b 4d374c7b-5c4e-43af-b3fc-767462a8dfbf d3546d69-9cf7-487d-a4a7-489a6f4abcce 210acb1a-193c-461c-859a-47009a3b78db 752c2c1b-0a58-475f-b7cc-061849790e62 1c8ac948-95ca-4a26-8f09-4066291f8209 86f47ab3-02f1-4829-bba1-6d229cba89f9 878ef552-b044-4838-94e5-b02cf2746f22 6d9ff8a7-c15c-4112-ab0e-6cc8678b84cc 59b3598b-96e3-4763-9a01-8f194d8aa3a3 56fa7d98-ad01-4e84-b5cc-b74614fadffe 1955a3a3-6490-4a06-aecf-4d869193ca8b cc37520c-1505-458c-ad6b-12c68d4db21f f8d66d6b-f3fd-438c-bd91-d4ea33684250 3490566a-bbe5-44b3-aacd-a83d61b2c973 56ea973d-f796-4d51-8b5a-e9e7ac092018 869bde94-7449-4d26-b9a1-46e4a50323ff 72f35cf0-5a2c-4679-a352-d5aa621599d1 426d2726-d431-4266-a89d-9f87109d2592 3d2f0ccd-e14c-47b3-92f5-a1a8493d552a dd9a209a-be9c-49e5-95b7-9dbd76af4a7e 44c9fb93-c355-4ef6-8fe6-2ff9c93c16e8 f408c93c-4299-418e-9a08-5f0a59535356 665490e9-604d-442f-9c96-1e0c1fe949d3 8af6114c-f944-485b-b986-120f9fdb9158 3660f4de-1ac8-4b64-bc8a-b6fe842ab4e7 a4fc64ca-9650-4c9b-a5e5-d436da971ef0 e8426173-c9a5-49a1-b6ad-2f2102e06971 df65d61a-e043-4287-9582-1d848cab0681 c15f770b-9cbb-4b74-aff8-13c71490f78f 9f5c9660-2f35-45e4-a054-9044cde68bf0 f0dd7ba4-5a62-4106-b3b7-9fb3183ad4cf 5702406a-e2ca-4a9f-bdaa-b72b25b8e1a8 860672ab-c17f-4389-9823-dc2af39d8d8a fdc8dd29-33de-4f72-a4b7-ffb34922bd31 f5830666-bf9d-4cd9-b8b9-18b2a45020fe f60594e3-31d1-4c30-bfae-f56374d23397 cce930d8-2437-4d3b-8f48-cdc295bc70f6 94a5e03a-ec4a-4b47-9821-db0994896ce4 13c2502e-6511-44b1-a80d-7d31be661fcb 9fd7e3c3-5d29-4443-b1dc-082cfc083cc8 a216cbeb-2202-4899-bcbf-db2c03cb73e1 bdff9ab0-78b0-45ba-87ae-786062c598c5 aecc42ec-5b8f-49a9-9145-b5ff4798c861 761ca326-2ecf-476f-a1a9-44e05a7b5931 35925509-a040-4363-90f7-aaf77317a195 c1338411-b736-4662-a1f9-8c15ee1457a2 6c9ebadb-c520-43c3-92f7-ff9c3b856d6e bf241af6-84ca-4f40-94d6-a503ebd572b9 3310f5e5-d1fb-4b30-bc36-ad9dd390d489 18935734-b27e-4a22-993f-b61943e47cbc a526b047-be6e-4d70-abf8-8ba7031a891f d1480664-81f8-47ee-bb3a-b81b9ad324c9 88e2876a-1269-4703-878d-2b8926cb1a26 712b1f52-f1f4-4749-8ac8-320ad95c7116 dcc266b6-5c05-435d-a5ef-1a24d3878ac7 22d2ed44-55bf-4ea7-86be-b6fdbfc3bf0e b4022719-47f8-486b-be1e-cf850e25cad5 2fa74243-e74e-4e5f-8913-651dce86e09f 8a3da676-cdae-44b9-9e8b-838cf6ca5cc2 ae0f9982-c9f8-46e7-877c-1fe836ddd810 ac3cc7a6-9484-4ba1-9787-bbd611f4243b 08b3bb9c-5f8a-4779-8cc9-fe34da0cca17 bccc192f-5325-488f-a3d0-9df4c5971faf a76d5685-3f2b-40e2-8a39-5a0434b938ba e104c64f-88c1-4e50-9a65-3d6167d6ee4f 1b41c381-a9c8-4c5d-a2cf-63939a760ba8 90793322-1719-4f3b-85c2-822cae010948 391d5cdd-a8a0-4dca-96bf-626b83820ae5 0e479055-8255-4bec-9549-c2c8ded3477f 8f99340a-7e57-4279-a940-a72d722e2bbd a07def28-6556-4c91-b1c3-7fad8f5ec92f 0b559862-3e38-4120-afd1-482ad0233955 e315b497-5e5a-4c76-8483-8adb39bb650c f1255167-8f3b-49cb-815b-63cb7d46c0b8 821ded1f-5fae-4665-bfff-b3ce1fef03d3 2f033a99-f11b-4e3d-927d-a6744a6aa63e 137866cb-2931-450d-828c-44431282ac00 77f64b7d-5790-4fd0-9585-bd67c1b5507c c18dcc8d-573a-4e8d-90a9-4c5ebe8b71ab 17016e4e-9980-4d0b-9883-ba3ab93029b2 19e39e5e-86d5-45d6-8170-f88411f8139d 5fa6ce18-48de-4ffa-ab25-daa76a4851fb 50d86809-06ff-44da-a959-b5f731f87079 96297902-9990-45d3-8823-0adf21472ae9 0e4eb89e-2e9e-474b-9187-31e379e08b19 7142b836-dc5c-455f-912a-6faffe6b6f87 4b4bf0a9-81af-4af4-9380-1f0569df5d94 431fd7b8-d883-4f6f-acb0-63d66d294fc1 f881db06-2168-47bb-9ea0-f6bd0569b142 10c84d7f-bab5-43fb-9b74-5e917487c127 e0d82e22-14f7-47cb-a8eb-1a6b2ceb5912 6100f6ef-dd2a-4dd3-a92b-81ec3a6c57be 7ec57bac-1463-45be-8e6a-f176c0f8f749 7e07a572-a6df-4bb5-a15f-43808b663180 6855b250-e334-4c4d-bdbd-fedc9e5f56a9 ff323bd2-97d6-4fd7-acdb-a17895c3d263 57a2a307-ca16-4809-9186-d9f3c3fbd406 b9fab20b-4bf8-4153-a2fa-a89346ff8520 1a985e31-0248-4b7f-b1fd-810106cc0b21 37ff5ac3-eafa-4214-a3c0-47ff0f99fc58 d1e1eca3-915c-4c4e-a2c7-7e79384aaae6 83cb82b6-bc17-4561-b785-9b56376f11eb fa49c878-4dc4-4ee0-b6d7-4c40557432b9 61162bcc-006c-4ac5-b02f-c1c76155c4dc 29dd7775-f8dd-47b6-964a-66d030bd6531 0770da57-a604-41d8-9755-169dc7c481d0 83110aac-c11b-4b98-a993-a0a0b52753bb f0a28b0c-a769-4544-a3cb-49a1e9b7c8f6 d997ce97-8d5d-47a4-911f-e3f99a1b49ca f3a07608-fdc9-42a8-aeba-e74583300920 3b542504-94c9-478d-a6cb-0def21475cc1 25345740-0f7a-4ad0-a92c-40391a9e3f9d 6aadfe12-15eb-490d-b1f3-892ef3ce08fb 8a1ea09a-3457-4341-915e-cd5cf1662546 e2dbeb49-dfc5-498c-a167-ce948b8abdb7 0d7b6034-8b88-45fe-a62f-4dd01c5fc7f7 e19061f5-c91f-4750-b7ed-e7ff4c8ad8e1 cde1046a-ee60-49ac-a942-1ecdf1a62431 2a3b4e1d-3142-42f8-a9ea-d8271b318a2b c7b4f336-d3a4-433f-a0bb-94505d5fce22 86adba1c-85c4-42ff-a2ec-b67d82a50269 3b1a7330-3b88-49b6-9804-741ad2cba9aa c97c2a5a-a331-4272-90c0-991f70a14d15 425ed2da-c885-44ed-8bc0-de174b287b85 54d8b057-b523-44ab-9f88-6b72530c0d42 a61c8ba0-b777-42d9-a8a4-1b9eaf9fecae 49ab896a-08f2-40c9-9d61-428413ceb471 375000f3-6117-4d7e-bd0f-b140227b0bf5 853b9922-8a65-4514-9ba0-8ce2aa108ea1 6eadf65c-9d68-4aa0-ad82-3c146cc08344 99f6e87d-ced0-4d63-b009-00322025ccf4 5e4acb9b-4d51-432c-8d35-3b933ef8347e 637b4f8c-e7f9-440f-9e78-4d3fee7718e6 d86132b1-b72f-4850-ab0b-f7b186b2d17b 18c07a6f-f7fb-43e8-998f-f138130cacfb 159e104b-6ffc-4ced-8c65-8c9e05b0945b aa639915-9b87-43b1-8cd7-2c913295e0e4 3abee484-8442-4391-b822-3410feff14ec 348f91d0-ee22-4766-9cb6-8af941b69594 b24c0159-d884-4b68-9ce9-68f892c8a43a b1f14dd7-934e-49e9-80d3-5f0e74f4e3f3 4eb5857e-fc9f-4ac7-9b8a-220f0dcc3e20 5b324ce7-077a-4ca0-944d-1f98de2fc023 3a6d0744-897a-4000-aca7-1a57ba4c84f9 8d75e426-fef5-439d-b730-f29b9d750674 d9d6812f-7994-4984-99b9-779b48b5f32f 1dc31ed8-2b31-49c6-80d8-4e3d8fa6d0ee c05b37d8-4f15-4e43-a57e-aebc9561223e 54404196-699e-4ec5-95c9-013ed0e80f76 6a824a9d-361f-4b80-9dd3-d82945ca1f60 7115faca-9eea-40aa-94de-303da94f1753 63a30e92-36b5-4afb-a517-9f01ebbf00e4 da2bd80d-3601-4bcc-bb90-7d34dd80d9dc 7e50f953-ee48-4888-ab11-99bc34a5bc61 ebddb65e-59ee-4986-ace4-267a7e9e8156 8c9d4dae-61ad-4b19-8ee2-327651ed23fc 294adc0e-088b-4270-8fe6-ecdb657d6bd2 e3b3cf86-f7d6-4baa-a437-42095b4c9e75 eae1e513-c060-4eef-849d-a5fb71265512 0c7fd3ff-b594-4e2e-9c42-fa7e884f2282 dfdb4d77-8bd8-4e35-b38f-c806c8e2a59f 5022587f-5989-4d36-bb26-2d466936f212 ca7e9fff-c87a-405e-8b0b-c16bd9d7cf40 4f3f018d-eb6e-46c1-ac43-a91fe60869c1 0fc48aeb-092b-46b5-9f1d-b662289e6eb0 827b129e-7661-4469-bf17-28ee4501e19e 2be24158-8a75-45ea-9531-f9f890dd193f 9534411d-a09d-43dd-826a-43ab0c11ce47 272c6797-6e1e-415b-b6f1-b0535cbe6230 13d2ccac-a259-4efe-810e-14a33aac6d77 19563b22-9086-4093-a7cd-a57916ba651b 63ff0c5c-471f-4ede-aacd-cfa22ef854ba ca3124d4-1b23-4e00-afc1-c248507e3a23 f80c1f7e-fe68-474f-99e9-2898ae88dc79 f0c37f8d-8802-4d83-9323-34360c0e5973 f233ecf5-7cab-465a-a3e4-8c9ab3e1c705 da342b03-c149-4ed0-945d-9b6fb6396ee6 89041d2e-e673-4c56-8f84-e028bb6f96a4 d55a3d91-7860-49b9-8025-bfd0bd8f8343 b4406570-aafb-428b-905d-e32d3f764ac9 3fc60951-cbf4-497d-831a-39822e0b2945 7116a4ed-5034-4d3e-9b3b-2c984e6b972b ffcc08ec-dab3-4ed5-b24c-8582234b63fd 98913137-3ccc-4f3a-a743-62aeeb43bd09 1ff47d94-1889-43e4-afca-c174ea6b20d3 3a6a9b1c-1c65-4879-85a2-90eefcbb2756 2cbb1f49-ec6a-4e0b-a32c-dd7249177b6c 9fac0254-4b0d-403e-98c2-5f3a4c50aa86 b40a51a0-ba9f-4acd-ac08-2c1e4b40b38d 47d0f514-eaf0-47ba-af45-bca6750483a8 019c4bba-f6a4-4ab5-aa18-6f410be24054 0d40dd09-6d00-4383-806f-042f27ea9303 35992ef1-3bfc-42c2-bc34-c6d00b2dd763 fc0c40f9-39a5-4d48-8d82-80db12615b0f 65722149-922c-4daf-8d27-c6a66558ae04 f1a88355-2723-4c21-98d5-cfed856938e7 1b8f5b81-e9dc-41f4-a3b0-5189e4bb53a4 14c1e304-ed6e-422d-9560-b66ce3c03099 e75906ce-94f6-4577-8f53-140d0126602d 8c2af892-171f-482c-9f60-f9a3019d5e8a 362a0ca8-e1c8-48b8-bce6-a988e9b64ef7 b0faf0f0-aae4-4b19-b8f0-4391c424e58d 3403deea-e68f-47bd-ae7c-e6da0c3fc48f c274799d-c742-4c1e-9b1c-eb4ea297c0bd 47e96bbd-7c2a-40cb-a291-732076120d6b 498b1ab0-bed3-42f2-8bf0-630ee471218d 742737ae-8235-47f2-80cf-c25798cbda7d f8ded795-da29-4362-adb4-0c25f20617f9 ecde6bc9-25e4-4443-9173-3c4c79224c67 89726bf1-7d96-4a79-9d46-7e9e515acfb7 5a1d8bc9-1c09-451c-b5a5-dc9056134486 711a152f-0d86-496b-a1d7-d565e9ee4867 f61d912a-077e-43b2-89f7-d1bbec5161eb 2fdee652-44ea-49ec-af3b-fbd0b1e3c4d8 b4f14c4e-000c-4e45-95bc-9620629937cf c5f08c97-f8c8-4819-89e7-622bac9cdf7a 2653417b-f43c-4f0a-bf30-d13a8f3131e3 b52a8c59-d430-4542-8c3a-d5a954f8bc7d 017e6d70-d089-4189-856e-ddb8272dcebc d5a3053c-816f-4dd6-8659-b5bf86d0623a 685ee5aa-6ad7-4a32-ad11-84bfa524aac8 5bb06298-3a6e-4c68-882a-ed15f4f602b6 9f0f7ada-84b3-4530-9517-2dfc837d96e5 328b4b36-4232-49a7-b4fb-ff623225905d 2da698b5-0932-4756-b963-67b97f1178a0 0691d4a0-ef9a-4f75-b470-1cb3f0050d28 0877f48b-7333-4bcd-a883-c3e56c1434d8 8150e131-4fb5-47d2-b6bc-76fa55e74c80 0168e162-f4ca-483c-8939-baae1bdfd187 69143016-bf21-4929-8068-a65aa7d6f839 2ddf905b-fd33-479b-bd4c-50a86267b926 da93c439-58e9-4f94-aa19-82a9b01b49ab a30fa9b3-01e1-458b-b89c-48a357fb91b6 0c143d1d-89d4-4c4c-a0f4-bf3d22d1cd35 3f693b23-3fb4-4dd9-91d4-64f4e41b5771 11a509ca-7d83-45ec-b491-b191a71356a6 65b07cfe-fa2f-4fd3-84b3-75fbfc0bc14c c3b193ab-d9c2-404b-bc6a-5cc915bfb4ac ea0cf053-7f26-4fad-b3f1-e096dcdd5710 780b089e-5df0-44c8-bde9-fb9d296f2fc6 71951b35-c0d5-4825-a16f-ced569180d74 09bc5a96-a348-4d01-aac7-c47acb21fe8a 87af9398-8a67-461e-a4c1-1a8e2c5385d4 5e7996a6-74a0-4154-8e55-592c7fb12b74 523f27e8-f4da-40f8-b698-a6cd9d43ccd8 95d2769e-d45c-4b59-8c93-06780941fb94 9b66ca54-e47d-49a1-8265-9c4fbb0e69b4 c67a75e2-8384-41f2-a88c-000f69b913fd 84a47c4b-8577-4cf4-9ad7-2ddeab8d8071 9fc18117-1572-4ef8-9001-afed05b97df2 8b163541-2fd9-42ef-85a2-4075ba800c4d d60a57f0-9f42-4fad-9fb0-af117bd58378 d0365589-bfbe-4fa5-9b2b-17c50e14bffc c4c1e1d8-35b1-4a46-9cc6-4297b0d63143 9e86e600-866e-4b2d-a0b2-0eb02a671dd6 596e6337-f5f7-41aa-aad0-2e6ab02de85f 379bd679-fb19-425f-8d69-bbcc419f99f3 0c5205db-169d-4a5d-b66c-713bf3aa6b71 9e54c00a-fe72-413b-920a-1ca91af0b250 43756515-76e1-426a-8774-03514c7de83f 3bda38b6-5e01-4df3-9d5e-c9417502b21f 73b59315-07b5-4668-bb3f-ebd2ab7f5688 897d9585-446e-45ff-91b3-c7f3a4956d79 d3595f0d-11de-46ee-9c8b-78d19dfa0d4b 1996c950-0b37-452c-965d-94da70e0b060 ad842cac-93df-4bb0-b1c8-0a0f63b4d05a d9aab5ff-462e-42e0-9af6-7138d003e87b 22efbe6a-2395-440d-902d-93cfceb7cf65 6a8eed70-ef28-44b1-9475-cf6a43f4c150 a405ebac-2503-43e0-806a-02bcb6001a37 b460ca33-8d90-4de8-b837-6e06b63b9990 ab1b6440-eaca-4f86-8f7c-59506c6a205f c480e22e-7271-4c51-8c3d-7688fab636f5 a458c6d2-b74f-46b8-9f8e-74a58700167a 7f85ed37-6937-4566-b3d1-741b3f9ed368 99eaa299-87d5-41b5-aa2a-5531f0742d8e 38f8c125-5f25-4b07-a9be-6722de218abb da405e7c-f165-4514-8575-678af1ef1efa e7dd992c-24fc-4871-aa87-855f69f0f5af 98c958b1-cc9b-4bac-86ba-a9a0b3a5d43b f50f4b6e-a19d-42d0-8363-2c686efb9dce 7a58f827-f270-489d-96c9-13db75dc62a6 1896a0cc-34f1-4365-a3d1-56f6f776480d 9749a2bf-a9e4-4a6b-a200-3196e13b747e cfeb8bd1-d65a-49df-89a8-3e8c5937f0d2 e86091fb-ca35-4137-8ed5-db731d0cf265 277f4bf8-05ae-44e8-9d40-d487f7aa52fe d9645ca5-6198-477e-8ae3-72a767f05220 98946693-0f55-4a3e-8598-771a0ef42d47 7e39f489-0867-4e86-ae24-c9e60533c724 956646f2-8afe-4780-80ec-750894a84ba2 b0fbeef0-d285-48fa-a255-4abfa64065ae af9acdcb-d553-4580-83e8-a32a44c1a4f3 6b8bc18f-50af-4b09-b548-302bc590df06 1d361eac-3264-4500-a153-41732b0179ee ca5ea11c-80dd-43b1-8d42-bff618b73eda da694af9-7706-420e-a54d-554c1a4166c2 d8953c92-b860-460f-acb5-f3e40a3d592c 4b50f897-0ab8-474e-aea7-e85d4c8670a7 c39c8fa7-5064-412d-a814-fe355a7ced5b c767561b-2f24-447c-b1cc-2847c60dee21 8cc8ca00-6167-4b3c-b36e-a8a229f73f77 65127ad1-ccb7-4c45-9b5b-4f297b30835e fc4deac3-36d2-4145-82f9-091bb7f5ce36 3cc7a0ea-195b-438e-9b13-c761369dd182 54bbab83-158e-40db-8a7c-1b2766008679 ba6ccc25-5994-4bfb-af7a-86d98b9cc3d3 96d823ba-8e0d-4a59-b9dd-77ab0e311642 0c5bd3b0-4a10-41a9-8142-48e527386d9f 3c3c3de6-f133-4fca-87f9-9383aa13da1c 49e7189d-c63b-4d22-86f0-2ee90e18fe42 f89f960c-a709-4e56-926b-af696ce707aa 3b7c85c6-437d-4268-a669-eeda82a6f4b9 cd42ac4b-c83c-428a-91d1-0cbbe0428057 4ee0ed95-8aed-4656-8495-94fe53c5b778 c6794c71-3626-41a4-9f05-5f89208e00f1 4b08b32a-1556-402b-ab90-43fc8bc5eede f489cf59-cd01-4fe2-b62b-20c1c13c8d79 7f9a5364-1ee7-47e9-a90c-909de83ed6a8 054ce729-a7e1-4e6a-b25e-8f20f9ceec43 349873f8-8242-4e1e-b4a2-eb1aa2912a98 98127d5d-7fbb-4121-a6ca-313331ddaa64 46ab58c8-0fa3-437b-88dc-10aa172444a6 cc97e2cd-5bd0-4c57-8e7e-186f726b4c15 8aba4207-92d9-430a-8c8b-2240ed1ade14 35454828-4ee9-424b-999a-a30a68f21e75 084f83b0-8e28-4d13-9014-24088094f9c3 943cf5f3-ebac-456a-a2fb-a96f3ae347f1 65b51b44-6938-4403-98d5-f1dfb486d41e 3e7b5028-6281-405a-8bff-88787e304649 f03b0237-be0a-44e1-a914-04f3765eea34 1fdd0359-b9f4-4f7d-8725-dfe193825032 48ade14f-0a06-4e65-ad74-74c427112ca8 10dc9d0d-3e6d-4cc9-b900-3b86182f68f9 86520de8-2168-40e5-98cb-6220c1c619ea 0f8456fb-f78c-4ef2-ab25-b94233d93e0f 11e8d62d-612a-4630-9986-af7819ae12c6 eee6699d-b514-4fba-bf7d-5f6019e07990 c1beaf31-d5d8-4718-b601-2ce9cc39dca1 e407d085-3905-42c8-9097-cc40c81e8df2 10764023-551b-4086-a919-36152b3fd4e0 70ad57a0-5a4d-4118-b61b-e9cdb1ad04e2 84e46449-106a-4d90-90f8-31111891bd7c 392b0e0a-0546-419d-82f9-1ea95d719900 4e3aca7b-7823-4251-b8e3-bef6b5b532e7 6a153bec-2e06-4d8b-951e-bcbbe9c4b003 1616fea4-c4b5-40f1-8230-642583fb1c23 f0c7d081-d9ea-4c10-8811-93736341cbf1 9620b996-3f7d-4e4f-b676-e6aeaf060e48 44d28b0f-1004-4bdc-939b-ac45ab60cdea 2ecd74ed-9710-45a5-aab9-badf22959df7 e434ce92-922e-4a79-a502-d9d3e1af2745 7516cc55-7c0f-4b09-9cad-123a69b5bf5c 0bf9c660-83f4-4bfe-85c1-f7baff57c3f7 718ea630-e06c-4ef7-a13c-ae6183f32d05 8428cc2a-8df1-4750-8fce-b6618738f896 43f73022-3154-4da7-bf82-3db7a5bf891e 030c6fb8-4697-4a27-aa90-8fda1a5ca837 f6ac65e7-6ecc-4c22-9e6b-51763fb16246 fd5bef85-68a7-4fbb-b7d5-4b83da58d147 4eba4bbb-2016-4fc1-a8d8-2aee899fcd9f b0b56b48-7b5a-4356-9bae-861398af6d82 92326f16-d145-4e54-8ce5-d8f26c452f9f cebf7b0d-2392-4baa-a276-dfae7899ad5d 92429dc3-d83c-4e96-b276-9464b806703d f8e3c691-a18d-499f-a35a-bb3d31c958c3 4ceefa74-e5e9-4640-87a7-51b3e1a71ed2 1c3fc666-87c2-49b4-bed4-cabfeb8505dd 219e8c6d-5a83-440f-9259-390ba2f9ac3c ac69d390-5315-48aa-9b7e-5ab322abd7a4 ec82abb5-425d-4dd3-91c2-d1b94dcd37e9 62f92d20-e64e-4f39-a47f-cf44fa0aac53 beeb165f-f026-47e0-90a2-fadec538a401 cd705942-4090-4234-9328-9d070cad97e9 2fcfbbe6-8c31-4d9b-b763-4e6d9995048c 968e9bf4-35f0-41af-b133-a92018e9b9bf 59f86dbd-5ddb-446b-bc09-51fbf85d540a 869936cb-dcec-41fa-9269-0a800a0a160f 8a1b07ea-790a-41c1-866f-c7a0d99fd547 195337cf-af44-4eda-8ad8-2da4c6334985 3a0c309b-7d37-4093-9898-6450ae8e2d94 4634ae7e-7a64-42aa-a587-d6bba3848b31 2dffd147-f898-46c4-ba85-27980dd3fea4 7226bac0-2d3d-49cd-8480-c966a19a5106 5dac2deb-6bf6-4594-a4c0-68046d6564b2 f731906a-8a5c-41d9-9b9c-5a42ba502076 33994b4e-0cd5-44e6-8acc-e269f14fb7a2 ba217b0d-e529-47ed-b839-86cfceaea78c 03278a1c-506b-4344-9680-fc284e6ab45a a26b2cca-4179-493e-8712-7f89f21bb45b 67f33be8-d3d9-4525-ab72-c909b724ec85 edc95ba1-e3b7-423c-8e23-52c87741bc44 af0ebba8-8868-4334-a719-80aee07e840c c5edb7c4-a628-40f2-964e-c376b91802a8 9c000806-d2fa-4d67-a6d0-f009f5d18593 5e6c0fa5-5e2c-435d-a7ba-ca2499846425 9b2976ef-2d85-41d6-a425-ad4fc3914c9f f0311aa9-2f08-4593-8e17-dd1342597e13 1e214cfe-a3b3-4083-81d1-25bfdb805566 1fa12f3b-905d-4dd3-a4e0-53b46f9213c6 a7d7e167-98ab-4267-95c4-500a1198ece5 f806ba9b-0d74-4b1e-a952-d2f35b03cd6e 5245bd41-51eb-4cd4-ad32-68a3a606c62c fac63e13-4d12-4497-b61b-6a4969d188a8 1884daf3-8484-4f32-8edd-357c28d49856 77fe7be4-23f6-4ad3-8f86-4560ac66027c c2d2501c-ec86-4a40-8b0a-d0013746a424 17366420-4b60-42a0-8ba2-a27a0446cf6d 4ad19b6b-3d60-4bc4-97ab-cdc32e241f6a 94f4a16b-df86-41e3-a537-66608faa03d1 3de66b1b-45f8-40f1-a34a-570264aacff7 a8783551-9f06-4bfd-96e5-df57a4ae8d77 8745e566-c54f-4e7c-af20-453ee4c1b46e d0b34674-ea50-4537-af7f-24b8fa3e5e72 ffe6ec4c-b7de-4a44-97f1-13975549cc82 b4289e56-15a0-41a5-b500-d640cbfd66b8 9d3b7a44-6fe8-4e61-a100-eea6914cab44 a0ff9bd4-0c3c-42c7-9c43-ce0bf967bf83 4fce6a47-979d-404f-9716-92a23a3b850a a4dbbfa9-91e0-4549-840c-b2184f21571b 7970ccbc-c07d-4da6-b6cd-bebd7a245521 7d07521d-bd7a-4052-97e7-bfe038945816 c02948ca-3c22-46b6-835d-a3923983905b f342051a-5166-45ac-a92e-cb410fe112e3 b76d4e51-1740-473f-9142-988e23407fec 42784c4d-1986-450e-9dd4-d3f0b8f31fcc c0fa2efe-6306-4a64-8c83-2c5c34cb0734 331c0705-e2a1-4b5c-95a8-5d68526ffc16 4ce94845-1510-4170-bf44-b18402c4bf26 d8852264-7b02-41a5-95f7-0e38ff6d2932 d9c8ccd9-d763-48cb-a281-83f7ca719dbc 1fb0b1ab-da0a-4883-a67f-b340e8279870 48a0cb0e-e5a3-47ff-bfd8-a4c062cc8e73 d667238a-6dd7-43c7-8603-790b31c96ea3 be2d4c09-c6a4-4e5e-8982-aaf25ed86654 1d9502ce-801a-4979-8541-09aad8024920 cb53565b-fab9-4977-96f3-067924e91bc3 c31f6356-8007-435b-b62d-88ec093c7449 bc6d95c7-f7e9-4880-8fde-d2a40e8968a2 d13bd2b3-6050-4e32-ad2f-dbda5940deb7 be9195c2-ca3a-4b7d-8d27-84cdb93b0a10 c3401592-01b3-4ca8-822d-efc1ae0785d2 34e9548b-6503-4fc3-a591-629d79ba8d65 1c0782a0-ca6b-4d05-a3b7-63499efe3602 cc0110fb-2f26-4893-8f47-4147d130edee 953b3fb9-ccb1-46d2-bb97-5c1929e8232a 4a29b9d4-fc57-4438-8c65-b9884d2753a5 ef63a86c-469a-4aee-9c01-abe8643411a6 d1dc6692-13eb-4895-b4cc-b87f03d5b906 7b3ba120-7ccd-404e-976c-c3ab385392eb 04f6cfe1-9642-4ad9-be6f-9b64befd714e 7853ce1e-efc0-4558-9727-260eb884dcab cc43f3e5-ea47-4ca2-a8cc-10b2b212a192 881a6e3b-b2ef-413a-8964-1fdfd6caa771 5a3562d5-d799-4c67-8eb1-e4bf6768413d 12da882f-f4b2-4d8b-abf0-5b1d0ba90719 04f5488e-375b-4fcf-b869-792228cb21d3 c3c2d115-a028-4ccc-ab52-57eacde2b48b c7919a15-0714-4779-a40e-cbb8f3936389 2bda7574-b075-4f5e-84ff-cdc7a7061808 56686794-4259-4b40-84fc-98838f6bfdc6 fe7f1ced-0245-438b-8fcd-0b8c63d4a9ec 80c7cb2f-8d37-4219-a4d2-ecbe9bcafee1 a76e3b9f-f6f3-4378-9e61-af31704c43f1 1b224a08-3bc8-430f-9e63-8311b264044f a4a50cbc-4ac4-4c8f-9add-f787a4b25214 f1820178-e324-4e26-a78f-6104f5d16b03 4baaa3b2-a9c4-4caf-9605-86ab5e07dc57 868178be-1851-47e6-8cb1-8662a28fe340 fecd531d-5510-4fc0-afd6-30a5b0de37e4 6e207cd1-44a1-419d-af60-239dd9636d07 29c0736a-4d2b-4d8e-b488-88c9ec0fb54f b750dbf6-e376-41e8-a93f-62cf78fb886e 50cba426-3b4a-4ab5-bcda-48eeee0bcc8b e5221449-aeb7-44d0-a951-e6d28fb5550d 7d2f86d7-5eb8-488e-bf93-ee74b20fb00d 1f6c0c8b-e007-4a8c-82aa-55586b45c43e 4225998c-280d-4459-ad1b-4bdd2adffbef a8c4f3ad-2ccd-483b-a824-064c1602c50e 93a6cb30-0de0-43ca-ab4e-c67fd133f113 24ea2f5b-bf33-4276-930d-274c628b0288 49a2b883-8d8d-4b47-84bb-e5022a209c6c 2f92d95c-7862-4db5-b54b-d4774e8c0d14 e628918e-560d-43ca-9579-3f69fbb6e40b 92b9d858-d9b7-4b71-b0b9-efba19b8442c c3854d2b-f508-47a3-8a8d-3f99e375e1c9 e5f050c8-53aa-4920-b342-46cf63abf8a5 616dff0a-5a6a-4286-9e0c-3d03c5cbd5bc 1ac700ef-8d71-456d-ac5a-481f486c3782 ff38fcdb-2049-4edb-9475-8e4790eb2b5f 92a437de-d8e9-421a-b3d7-5325afe05eaf 87f77d28-70be-4aca-a831-618f5e719918 fe9c9ad0-ffd0-4569-af74-e79afda07ca5 ae56aacb-2830-4f39-b6a4-26c251361357 7531506b-7f79-4946-9582-42e29af811d3 316434f8-ddc2-4a78-b6fc-fe709abf17b4 6a3efdd3-a25a-4f55-8153-be0dbc5cf309 11a7f0ab-2a42-4b90-aa16-fb85e3b5694e 48e62375-7717-4b59-a58e-ae7a692028c3 74a6017f-f947-4a3d-be51-53b479502fab b36ed152-1c8d-406c-adef-b71b2c70d9f4 212cd157-144d-4f34-96da-939d9af34248 f80c5c39-21dd-409e-bd5d-5d95ddd647b5 c3dcb0ae-c3a9-4150-b149-67163a8894d1 8f924e55-9f81-4f3a-9440-765813934724 64511f2d-c063-4fd0-a141-13ef83af5dd8 f0cea6e7-0692-4f0b-9d73-6816546a65ff 7802e74e-f0f8-4dfe-878e-245cdc8fe01d 0c917d1b-79c5-44e2-abd2-ae84c1fe1ab8 deb56dc8-bbe1-4419-971d-b56791a6c7af bd911968-0d3d-4505-a6b4-12ac49c221b5 a37f9ae4-9cff-4472-a2e7-fcbe407ae2b6 ef78f578-aa78-4d8c-99ab-0369eeacfe0c 4ee0efc6-7444-44f0-b6a9-c2c7c9873234 a480e735-4521-4128-8dca-c5e1821c41cc 0c5e0e61-533d-4b85-82c0-da12a3124ad5 b80f146d-a143-411d-b3cc-31a61ca26799 3d5ea6a1-a35b-4d3a-a805-668d1c9909d0 f466f1b3-4bcb-4406-847d-c1553e4602d2 b9e08d75-8d5a-4186-bdda-fc7d9f034695 6df4f39e-8e55-4387-ae5f-45a92213720e cd6abff2-bf6f-4ddf-adfa-f2519575c006 277d7cb6-98c5-41b3-b92c-61a2562365d3 7fde6275-d978-48d8-9995-ff4e4c9b9bc7 36ebef83-1889-4e1a-afc3-e29a8efde315 ac03825b-25e7-4e8b-8d68-53ade83e97f1 162ba15f-f5cc-42ea-9637-33481137be95 79d0bd83-7788-4423-b7dc-5b0b3b0b35f0 e2b85902-9e6a-43d5-b13d-e0c605686e7f 746e7a7d-4c16-4ad5-8fa5-d3deb1234edc 39be0ff9-bc9c-4a17-ba44-aebac25414cf f964d243-c87e-4c15-8ab1-6f2cf4eb72c6 41c2034d-454a-4613-8700-2307d7219676 037881ad-8a3e-4e4d-9cb6-50d0a9de763c fea6ddf9-dd4a-49c4-8d3e-ffbc1f2675d1 6f323079-672c-483e-bbc8-43e79f59aeae 3b5344ef-a5d8-46a2-bcbf-0ae0e411e6c2 d976bb7d-ae5f-4179-9b4e-fd78bd51997d cb8514c6-d284-44c9-ae39-7d75d2914001 0822e5f5-d4bf-4113-85ac-00e9043ebb26 2210150f-55ba-41c4-8b79-8ac39d3f2e46 d54d66f3-a566-4864-9246-efefab7c64c6 860b8767-4cb5-4e64-9f98-30f4e4803d59 7ff32c80-01fb-423e-bb24-b10aaf77b596 d628dabb-0d09-4621-8190-44da10beeacc a2449e77-1454-4f54-adcf-831258f54d38 a81bc4e0-fdc3-427d-b8c0-4cdd149e826a 1d4a9780-507a-49d3-a78b-a6bead072074 de21fe7f-8902-4cbb-9c4d-e27a8d7c5671 9e0866b0-76a6-427e-98ac-bc5ea2c4c770 9794e4c5-1a28-4b5a-aa2f-06cacb1fdf69 1c534476-9643-47dd-822c-da6cb7788174 27cd4eb7-0a70-438a-95d3-e810a91e73f0 191e0f58-27d9-4f42-89c0-e415e8bfa2e6 799ce731-e113-430b-bcb3-f8dc58e983e6 931d8462-9d52-4f08-984d-b823a8e208fd 686f43af-812e-4ff9-a987-28eea60db7d9 e3f907ef-9eb3-4512-a4a9-e3832457f487 247064c8-a875-4872-92ca-08030629a509 75ac3a01-ab50-4af3-86c2-962145779b24 bf029122-80be-4bde-99a5-7cf3bb8cacd8 61e5eea5-3dd6-4ae1-9882-0275776b37b3 855a5074-57ed-46f2-8661-fa158f7510d1 bcd687a4-827c-4068-be07-ac34509ecc6b bdf7f65a-34e9-4380-9106-5282170a674e ef560226-a6cd-4a5c-82c1-a863ffeb2c2b 8f3a702f-d736-486b-8116-b0a7aa6c0b31 49cec39b-3300-458d-a942-db477e5cf187 f91bf343-329f-4edd-a4e2-fb4662a1c85a 993224b7-af30-45ac-a7d9-1984a8d033ee 7444ec0c-fbcf-4962-8027-2748a97e1a7f f8488c0d-4411-4166-9972-1b75fbb25c05 0466ce2a-df37-44fa-8e06-ae7e6199a64b d01ad781-669b-467f-923e-1f494483acb9 cd44fc0a-b62e-41fc-8b4b-28a8a50ab4ef 062886f4-3a65-48ad-899b-fe9d725d9d9e 61581d69-78f4-4d3f-8d90-935306914fb1 30a488d2-4155-4737-a30c-122cb5d88613 ab25b6f2-0437-4193-9f23-87238104cf1d 07db16f5-63e4-44db-a6f5-b60306d405fa e640da0c-8e75-4057-8071-87e888a258e5 68a4fd67-3bad-491d-b2c0-4ebad73b4f3f adbbac16-b595-4c5c-b2d0-33cb654d4ed8 36fd9390-ad9d-4b4a-8a80-106f009563fe 8097bc03-a086-4cc8-b5a5-2bea65f88bd3 e5d8775c-864d-47d7-9982-0b745667e9a5 30a649dc-0f63-4883-b0a4-4177cbe59984 fd1cf261-0424-4c51-973f-f305adf8e374 9fb587ca-7e95-4805-b648-3baa6260fcd1 1f26727c-1707-4c8d-9926-e62861a7bafa ab5e9415-ee6c-40b6-902e-14a71212e04e 7515c9bc-6d46-43d6-b5f5-48d92a780aea f17b4523-0a45-481f-9b3b-9ec981d60104 96e3e1fc-ef88-4fb0-85ec-fc96cab5b2f4 7a39d4f2-3f18-47e6-97e1-ad64e6fee441 4d47eabd-be35-4eb9-8aff-fc2574662918 a651248b-84a9-41c7-8ba1-0c1d1339c0a5 a72244ec-2b6e-402b-ab9b-9287e9b17721 6272f31c-aa74-499f-8099-396389149335 5f3a6ff3-1198-44ff-b541-3dd4586386b5 37be5ad7-60dc-4b73-ac3d-bacb2612e3df 04077f4f-b5bb-4db0-8d0b-37059ecc0329 7419e01f-b3b4-467a-ab25-8232ba2ffca1 be4524db-7b6a-43f1-a44c-99541afa27b9 43e431f8-0f54-4b94-b5ed-e7c1132f61c7 ea17d3aa-1111-46ea-9592-7a12001ac255 bf9c2ca2-96e3-4bcd-8b0c-d78867402ce4 027f07fa-72cf-4a61-bde9-b4dfda952118 0f38b9b2-5384-4882-8f7b-bd78bb670bd5 7c8ac49a-b354-46d2-a73e-0c7d58218059 63048ab8-faa8-4bc0-9c65-2edb956d4dbc b66024a5-6fa3-4d3b-b754-4c0c7a053ae9 9c34c4d0-e9f3-40fe-a1fb-7a7069941636 d307878c-0205-4b89-b3dc-38c0ae2021f0 19e3380e-b832-40f6-9fe4-8f1e006bcaa5 abe3cda6-ec70-4ec5-a101-2d0e62a0335b 57acd37e-8cf6-4701-85f4-a832a5e28a8c 35219145-f88a-45d4-ae97-c050a7dd77c3 299404ed-e711-41f7-8106-aac677bdd3f4 6cd1d6da-ce57-43b0-9554-106f1b761b44 deed3f39-67f2-4205-b7fc-03d69096dd6e 488f005f-afd0-4289-9a5f-4eb3bbee5083 b58a4dca-47a6-416c-be7a-d2b0cb7e0750 926e66af-73f8-4d9a-9aac-ece74819695a d5074af4-6664-4170-a356-c207f63a534a 9eac81ab-5da1-4a85-bddc-365697e0dc48 70fc627c-0f81-41be-8a0c-181e13511460 1813291f-1dba-4c56-aa30-22c6be809b7a 520a0001-731f-4878-a1b3-e7a20273699e 5314ed3d-34b8-4995-8251-f27ff29c645b e243be7e-c5b5-4a3e-aece-5d3e3d8933e0 06bf445f-2e18-48b5-9525-de6c2892d199 a732fc8f-08e4-4834-a67d-8cd2a360cdbb c0103f9b-6de0-4468-adf3-1cf315dcc5bb 69b92cdd-114c-4948-a37a-1c1b4fe4497d 991ebdcc-9451-4f6f-a054-168ac5aee47d 56663384-448c-46af-820b-abc7120afe5d bcf2afb3-1d31-41c3-9a8a-1f46dfe334dc a26b8936-3c7a-4928-a148-9b2674b6d506 85ed6a2c-54ba-4285-9906-49d51655e206 2171e645-e64a-434d-b705-7f58c8178652 757962bb-0cde-457d-8998-fa1292651f9e 3b7f5b9f-7f30-4cbb-be65-00042302a228 b05a2544-3e91-4fc0-8422-e42caf73b25c de977f54-4171-4451-bbe0-ee98f7886914 8e766c82-21c9-4b93-8dec-cbbe61766221 661bb426-c5f3-4718-9ab4-6ceb762b7651 28f4a21a-a46d-4417-b321-9b49391c3fc3 818a8f7a-eb10-49be-9b96-2aec0b1eb437 13bcba96-ac44-41a9-a8ec-c07a8d300025 41a3819b-0996-472c-b633-95f7f94bc831 5818bd04-c4a1-455a-8a26-f74683b02614 e477610a-5169-497a-98a9-f1f32bcd64bc 13b14d59-2f36-4fd6-b011-568e265016c9 a664b237-23df-4eed-8107-f80d69d1625d 144db06f-d0ee-4481-a4bd-5a59a75b4917 dcb8f943-a298-4a7f-9300-54d6ff3cf313 6c737921-d2ce-42c1-9741-1e345e93a2fd 95c8fcd1-07fe-4c11-8c8b-2cb721a0691d 8e18ec25-1d46-4e99-8e57-ce9609b3a051 48c0036c-a3c4-4e35-b938-34ffe54a67b5 83fe7d98-b6d7-440c-8a76-dfaadc8d9d84 0d5c0eac-6f19-4a11-ae41-f740d703a356 66ac31f8-ffa2-45c7-9457-384cb3b0fc15 3ef5fb0b-3be4-4ef4-bda6-e747514d6508 84575c62-f100-4459-9785-8bc29fb2a090 c0e21510-49e0-4e1d-b56b-2c8284e20588 2cf9b45a-b5b9-41dc-973c-e43e3916589a aad97ec0-3ca3-4d9e-9105-9b7597d9d228 1fa2c89a-8de3-4d87-b6a0-e8d2556efaa7 9ad0327d-837e-48a3-b561-1a08dcab2a21 e2e0b56b-0003-457e-9ae3-3978534dc126 78735eda-7a77-45bb-8e8c-668888cf3177 6ffe3a68-e4b2-47f6-a0b8-047bf4b845dc 01e4f1ba-4925-4818-93b0-7d5884b3c795 4079f4b7-6531-4d46-bd08-13971915c9a6 ebd16ebe-8c92-4341-b8b5-699c6b7a2314 eb0c1aa4-35e4-465c-9238-a15c5beed93a 13ef4d4e-c93b-49d2-be56-aaf68d77d551 9162b8c2-7d66-4db4-8fa6-6342afc116dc 3b9c5143-64ee-4ce0-ac2b-a28d5ddb8ce1 b8e649ed-1795-4003-acee-bbec01056e12 a3dcbd22-c023-4e53-b7da-9e4ec445620e 25234189-f2da-4aae-94b6-7ab358de6a87 267a3d9d-66c7-4700-82e5-aef663803da9 fbfed203-6264-4d87-973d-d2c608629671 eb4933e0-366c-4ef5-b3a8-709a71ada275 931a34fe-a6fa-4c61-91e6-2a55db08acbd b77f3ac9-c47b-4d97-88e7-8b96ffe9de0e b297ed91-55a9-4d2b-b253-90b1eca95dbe 505543ad-1273-4c55-9ffb-dbbbb8856fee 09de69d5-9e2a-4195-9525-9804eb6b3dcf 995de938-e17e-40c4-8edc-b4ec087b4d8c 8e0d3a83-60a8-48a3-89b0-a45a045bb702 2865a9f3-538e-4429-b4cd-0d7b169736db 107c51e1-8ad5-408e-a18d-5fcbc07ae468 7d03e17b-c109-4a75-b45d-1b50c35c9946 13957952-2958-4859-8cf6-7738fa7c4d3f 8253d193-b086-46dc-b9aa-aeeca7aa6e66 f2a7715b-1865-4c5b-994c-39f0bd2a23ad bf4a610e-6f95-4d68-919a-0292d633cbff 3ac57fa4-ee9e-4d4a-9d42-5da9ca0bac17 025292c0-fa97-4de6-a52b-7f064aab38e1 e3f9b32a-fe53-4421-adbd-dddc1ef31801 85b65873-0415-4ec1-88c7-8fd53eed6cef b643014b-41c2-4639-b806-655e7526ea57 91a8b915-05d5-43b0-b8c9-4aaf6d7958f2 d0fd65a7-ce8d-4810-a47f-0aaead7abe35 e353b145-5930-4c10-b2a2-472963586e3e 68935dc8-60e2-4ded-8e55-d69617a761d5 9bb448fa-c772-480b-9564-2cdf57ae0754 d5126e44-6b04-4472-997e-aa0da4bd8617 cc6eaecc-2593-406b-87d8-423b4646e021 da887292-0783-421c-9314-84d44184e9d9 0f2cf3cc-64c2-49c1-86e4-0caeb84507fd 48a317b9-c8cb-48d9-91dc-a70375eb114a 85229072-8c1b-477f-846e-a15f93aa73f9 4bb571fb-69bd-40b1-b84b-223fd07528b9 8ce3fe72-9902-4c97-959c-348b09dc9df6 a64f87b1-f028-407c-8713-3691ec9846b1 db5e44ab-b756-4fba-8a84-84336ec0dd65 079351ef-52b3-4f10-a575-aed24b8468d8 e1acad41-2a7b-4118-a76c-7421c8969e53 2c88142f-4c08-4513-bc0c-9f8b760607fa 2c52abf0-1f66-40be-9832-8268ab4486fe 6552b250-18e6-444a-a8fd-24d619a92878 428501a0-92ae-404b-aabb-57a44cb0091a 929628df-c1e0-4d3c-bac7-70c4fd396dfc 6cd77eb6-b7ff-43a8-85ed-e38cbe675830 d2d9d54c-c78b-4ab1-810c-a507bdc2ee6d 21813f3e-35b5-4101-8f0d-5ca692f1b435 02548c86-6283-41d3-aa61-6d64ae6369e8 6b44c6b4-1fdc-41b8-8a50-0b3c8215e5e0 9a5e2664-cdbd-4501-b1ba-05a7c95d03da 5e7082ce-effb-487a-a140-4d5a0b4c0021 066ce80c-31f8-4f89-8c5b-05c4e453639e 94cb129e-9e14-45ba-8fec-ce09c4795241 2783342f-4a99-4832-8627-3af2987513a8 5174b6c3-1560-44f4-a92f-95ce48c14dfc c0491927-2bb2-4d70-8b3d-02c1d1bdaf5c b12d4031-723a-4a73-adc4-4e20b914f983 4ce13653-84e6-4491-89fd-b7117680cbb8 bc207a84-bd6c-430b-9ba7-cd23ed202fd8 e0bcd96b-eeec-467c-8fe1-0c01b1437c7a 5f0634ef-1fae-4bf3-aa3c-1dafb5c55594 9a8424a6-75c6-4187-8674-2324a1d7e12f f6c9bec5-c276-448b-8578-8c0c7890f3b9 879a4e9a-9fcb-4687-b69e-16000f38e34d 0179276c-02aa-44ca-9aad-f8a7c3d663d4 ea85cfa8-d2ca-4eb9-8fa5-ce117bec1aca a55fc41d-b21f-4f34-bb9e-53c3342c669f e2afca8c-1ad7-49a7-8800-51f79cbb521e 46e1ed01-aff3-456b-9a05-8ca9db6927e1 3d71fd62-a44d-4349-accf-9c581cd5e23a c655434e-a04d-470e-a58e-190ebd3b9e10 c34f667e-3a44-4b37-945e-690e5f4cb7e2 db53322c-985f-44d8-bbf3-acb2c16d50e8 2f5e4bab-ec8f-4e90-8a1b-4233e2c29be0 7ef1ae65-3e07-4f32-99dd-6eee9c2ef491 603c2de0-ad63-4c69-a47d-7f6fcd803f80 043f9ad3-f1de-4066-a6ec-a49eb69d3148 68f5ae5f-ea82-47d9-a282-f778b97d0c0f 92885160-19df-480a-9746-7f123ad11cca 474484b2-a292-46ad-9947-a47e7e9b41a4 c64a0db1-8988-4464-86fa-e06765684d8b 302440f6-993b-488c-af83-fb7846cdcf9d 4c4956cb-28e6-43a8-93c7-6292607a04c4 8bd970c6-f1b4-4e5a-9d9b-a7d2ab09d0d8 b04d5d25-35a2-4dc7-a224-2f82e4ce94d9 0c911193-e9c5-46ca-b5e8-83f71ae09fa2 95acbae9-4794-4d1b-a3b0-330165fd4b48 d88fdd0e-60ae-4863-b51f-5927c8e4be29 b375910c-237f-431a-8b4f-d2c4e555a89a 9bfc39b6-67cd-47f6-87f2-81697e2ed58b 67435f88-74bc-47a6-afe6-34485d27e57e 4565fc59-0593-4a72-a74b-56bd7c69669f 9fc6f169-2dde-4ab0-abbf-6d3884db5d54 1529b33a-8251-4b82-b945-a9334b281a04 fd934f70-dd79-42fd-9660-b707e7a371d2 a4b2e6fa-a633-4f6c-8817-c4fc3065d7f7 424e3e39-97fa-4df4-b860-6cf292a4cbf3 59482696-c4fe-43c1-ae72-d5d1bd231428 b3efed90-df8b-4372-98e4-d3f7ec6c53e5 77ec744b-a0c0-40f0-8e1f-5b4b552d773b 40676374-5037-45f0-9e5e-11051986e1d0 d75dc745-88c4-46a2-9a9b-4d6eef3ac7b0 d60ff2dc-22fb-44bf-b07f-20d5c72d1d9a 9fccb573-c0de-40cc-9523-8efe5f8abb1b b662310a-8e19-497f-bf66-ef3dc2b7e0be b5889c16-6b5a-42b9-8661-c87d7e1f0d36 345645a2-c954-48a8-bfa0-e433769909ea 91be052c-f4fc-4063-b099-545dd2f76dde a03e7895-86fd-4c33-98ca-86c61799c1cd 9deed3fa-4805-4336-b35f-2ac98b0f7135 7b5f59da-e69e-45f9-95db-55a9e09c1311 ec2e5b9a-52c9-4615-a04c-56ef4f31c6b5 c59adca1-1d86-4095-978e-bf587709cf65 d3bd53c3-e93d-4f01-b0f2-8c876cc632b9 fe047076-efe6-468c-adc6-312640d943e6 c473f2ab-bf29-4660-8a41-a90e142be561 6a39f7e4-b7d6-4c66-adbd-624cbc0fc9f4 1844a783-e6d3-457d-b72c-5e6f63cade27 1f9b9994-1127-42ff-898b-43528f44a097 ee491c16-3bc6-47e3-8769-83999e016440 60460b68-8f6c-4611-b111-9e5076276ee2 37c1b057-461b-4b82-9837-fcaed85c9ce0 57551bf6-5bd9-4890-b1ee-f2260b563360 47b8cdc1-0bf2-498f-8844-84b9635cd940 1c8efe87-0268-48b9-a1ba-93616ae65a57 5835cb38-5a7a-42cc-85f1-d860d4ec7275 63d7e45c-58ff-4ae7-9f5d-725bd5dc47fc 2d5a6333-59c1-4819-8df7-ffe854577d81 0551f919-9c59-4d43-839b-c1a606cddd82 6353c97b-821a-4d18-9c5e-ed9f917918dd 33038913-3cb2-417e-bd02-78e59659a047 2c738010-20d1-430f-b754-2924a018decf 6ffd8946-accb-4815-b6c1-274c7d2596dc 9bd36a81-bab4-4bfa-ad2f-7c8b913582fe 4f4fbe48-0544-414a-82d2-67dcba7cd2f3 23ddb28e-3b2e-46a4-9a32-e4cacd94ec74 652928f7-3272-4966-b935-8dac831bb3f4 dff64555-07d4-4b75-9a69-73428f33fad5 f4ed30be-0e33-4fd8-bf84-a9a523e29c4b e4936f00-df8e-4440-a8fd-78a8f6e83bd2 6f768c75-4bfc-48e2-93f9-e90d5e077129 b38c6c13-061a-40ab-8717-c0ec51ca3155 e10ab872-ea81-4f1b-9582-d9d4efe8570c 1ff937ec-702c-4eae-9e2a-f400e45599b4 7910c488-3a63-42fc-bf62-8576a1271a72 81354283-ef0c-4bd8-8666-d3b2bdce35b7 9aaad088-f225-4891-9bf5-9c7dd2b1b09c 12ef0e6f-327f-46f8-8acd-98372c3d502c e456c7c0-bcf8-4a44-90a1-912bf81c19a9 bcf3df14-8888-4f13-9985-f8e2356bb54c 59ea2bb5-c4ab-480d-a195-6a90f9561af0 88e33f5d-82c5-4198-b502-c4cbfbac814a f21e9833-3f08-4a51-9fc4-d012590ce340 e3f5ab25-4bbc-4019-a4d6-e0373d556cc8 a93e19b1-45cd-486e-8cf7-bf3be969a951 96b287a6-0637-4ed0-b3b7-c62b21015411 75ad309d-242f-48ba-b3e8-7e6623627164 0ae77c01-805c-4ff5-8618-969f3bdd5021 082e1743-17a6-4c3f-aa8a-5d4b0dfc10fe d96b5e00-77bb-4a9e-92f3-20c21b44e296 0f1beccf-795e-450d-a15e-6609aedd56a8 31f48b84-12c0-4e71-99a9-905b7d6fc58c feca5519-b16f-4b5b-bff9-04c33ba380ce ff29b239-ffb8-47f1-9945-e2089dc8ab63 d9f101c3-ff7e-44a2-8d66-6a54cb345d59 6baab1a2-60fb-43c1-954c-954a365917a4 d3d8ba20-cefa-4c7d-b2ab-ac5c823d509a d6f6e633-e8ce-430c-8f3e-1406583c663b b993b188-d884-4b6f-a685-57c100f9a722 54e90a22-8a87-462e-a44e-ee52279c0583 d06bfd14-982a-433f-b7d0-cfb2422b19c3 b408be01-6998-462a-951b-bbbad1c995c5 51c4097d-4420-4b1b-bb97-d586bc2b63f7 9016fb5f-8bd4-4155-b5a1-acba84792a2c 382c3866-4997-4391-8929-f5ee3c1d8371 fdb8e143-a6b2-49a8-9f62-5185d1393ae7 f38447bb-94b2-401a-a6c9-7cb33f655cbf f4a39a36-4973-4289-8eca-1dec24da05cd 8ab056b3-8ffe-4cdc-aab1-1aaf34f3b59c bf22699d-d4c9-4133-9f16-c12419889fab f7eabdc9-b127-4297-9a89-12b155a3e8ae 53bd49b5-529d-491c-9cea-3d71665eba6c 08f7f6f3-567a-4773-8bc1-8a74e493fc0d 821ef0c4-0ff0-447a-8334-bcd76fef9ca5 cd008f62-389d-437c-965b-e03f8e2c11ba 6daeaeef-996b-4f64-8545-193127976f8e 79eaca97-a338-433a-944c-71b480989133 7fc64a06-1909-4345-ac77-5ae6fda187ee 65e63eda-0367-43d4-bedb-04aee2ae4ac5 e66ed33e-b091-4877-9a77-b377cac35a81 e8c9caf4-d667-4efd-a1c7-5f50f0c468e0 80d9964a-3bf8-4e2f-b285-1cdfd120ee18 f6661ca4-73bf-4967-a0c7-c609346dc2f1 48e7c3f2-9ac7-4187-a78c-737d5b549244 7308c2f2-2f60-4b22-9b60-11eaf2ad5421 1bbe05a2-3c93-4ff5-946b-4cbe9e671bb4 d8680367-7b15-4359-8ad9-ac2b26ad6485 88a63fa7-6fb0-4293-a516-7c1a8a7b3937 13a6a7ea-0704-4473-bc39-1e4d5c421c25 c0474ec4-79ec-4fff-a5c9-91315f23869f ab5ff9a4-7d5e-498e-9c9f-6e8b82018a7c 5fc4e88f-07b3-4d1e-b08b-f2fbd4ec10dc 7edba512-944a-4f92-95df-742b461badb6 0d8b9818-ec02-4f61-b345-5e9b55e67433 8dcb4aec-16da-4779-9eed-24f0bbb23647 3c36b1cc-c485-4f96-aaf3-4c29270c26f4 ca48a197-bdd0-404e-a590-1f78fec8ac85 29a15e0a-8f4c-41c4-87e5-87a5590331f4 899d274d-6276-4ee6-ad5d-960689cef702 b9b44ab9-aa69-4f9c-8bd4-8e3a5068a029 30f333f0-8dde-45e8-b04e-7b8be943d522 031905f3-9dfe-4907-9176-b1b3b55c5f2c 93eee2c7-0b5d-4529-8a5f-d10809d49c34 b9954346-2ca0-4a15-b361-b14a014f50d0 59d1ac27-ac25-46d1-8edd-f1890f23a8c9 91f8a45b-e241-48c7-8459-41fd4f9f8f81 e84f28ed-e65e-43a4-8b04-d3e91fa5ea6d 55f6e7b5-b29f-4d50-8b9d-f097a833aab3 64d01636-d8b7-44a4-a1f2-470cb9fc3545 c1169530-a139-4bd8-a299-c40a5157ef70 bd375fd8-c468-46f0-bf20-5711b590f1cb 79ed1495-ea8f-4a77-a5e6-b5415db55a72 7e8e1ba0-a876-47fc-a513-28f5c0c1fa46 aa30fc53-f434-4457-9f03-f6bf252fcad9 27cd77b1-d574-4c05-b67c-5b003583df36 58fdd009-bc64-4768-a2f8-9461dc101f41 183218d6-e828-4728-a3ae-432f2eb40e08 92212dab-ead2-46b4-9be5-17ce09329ac8 a97091e2-7108-48bf-af66-1c06817fc2c6 fecc21cf-b7b1-4ff5-887c-09881920655b 23e22d9e-81e1-4c6b-8df5-ee2e57ccb0ee 29c3bd4e-747d-482e-ae2c-2952188321d3 669cb66f-0923-4118-9d3c-d31693fd571f 922438f7-4dd4-4bca-bcb1-aa3ee09631d0 d6a5a4f4-d4fe-4d3a-a2e1-a6bb0186733f 70c8df1b-c366-456d-bbcc-70e3e9e02302 c70e011b-7115-4fa6-b759-e6e838a1777d 138c6ab7-3249-4f6d-922c-5c56b1c560a1 725b05af-4581-40a6-9c9c-5587b3ddad0e 47872d51-41b1-4da7-a314-b960360146c4 ea200657-d873-4403-82c6-33a05dc8f6df 11e1940c-aacf-403a-b265-bb39670e7fc9 3ab8c678-2485-47d8-8fb6-15ff7ae33173 120bfca3-ce3e-47f2-85fd-174e4b2846b8 686a48c5-8bbf-4fac-b3fe-4aad9ee2b857 dce1fa10-5f78-4956-b1b2-50976e70e1f1 a5e45a11-da53-4290-83ca-fecd51910547 46935904-0349-4ebf-823e-c4f022c95665 1f375db4-910b-4f95-84c2-71ef6166cb83 df773c6d-4138-447c-a57d-cd8b13fa94ff 2bb86b23-fb9d-4c1f-aa38-94e2da34c1c7 5efe2b80-7cc7-45cf-9d4b-54f1082066aa 10c0748f-6f42-446c-812a-6d949a9bfebe 5703f382-1c2e-4505-b612-72ab51ec1e7c d0e61864-05dd-4e73-a80c-f02c28f4711d bdc87754-7edb-4cb2-9c78-3eb3fb72b38b 42ccdf7e-7f69-4530-b00e-c767a0020fe9 ce73045c-4c8e-493a-8942-8f65cade7360 50b067cc-345d-43bc-945e-e1c18829053c 82af3f04-616e-4b89-b433-269c3493fc00 8b8e708d-911c-4b6a-9bb2-e81e356ce4a7 40142a87-0b01-4002-94f3-89ce540493c6 b42f26d2-3453-49ad-8327-d0bc88d8ba09 abfed685-2b6e-4a10-8af7-7c5b957ffc1d 5296aad0-3fd8-42e6-89f0-cd7a1dc7db09 5043b0db-f8b3-439f-bf2c-89c66a62c399 a148b174-5634-4a5f-9e76-e49b52db9c23 8343ebf5-8e1f-44bc-a1c2-80c8b486c5bc fcc4e37e-a38f-4c95-8242-b2c2380738e2 ae072675-0194-4cf0-a237-576c7358994c 7bb98f21-833a-4025-938f-ac3fd49fd157 bec9071a-b182-4ace-a009-49d1771a1946 09fab52e-9cae-4c93-8b76-70714ba507ef 57e286a9-1d2a-44c0-acab-4329b317ee84 ca4bfa5c-b947-4792-b3d8-df5d25f661cf 69c9d5b0-08df-46ed-b02d-07774fa3c142 c0349b24-84c3-49af-b644-1700e995a50c 72c73b81-7b75-40b9-95e1-b511c4728e89 7dc798ac-ef19-494c-a103-f7af45a10b39 44ad51c8-76cc-4da3-ab44-de05585ecc19 8eda6050-dda3-4cf4-b220-fb4a779cd5ac fd13f2ad-211a-4c12-ae0a-3471c2613201 a56edbe1-1f83-49cf-8b68-4fdc05ef9e70 33ebf7a0-14fa-49c5-8624-eb100a3e03ad b3c1c431-f311-486c-8401-85ea0a14ae8f 29ebd5bc-f02a-4987-9b93-03fed83dcf8b 3a7d13f9-b4e6-4b8f-b9a8-9be619338f36 68d52dcb-6b8f-4a61-8e35-68740120fe27 f2896d96-17f3-44ef-8c66-116de74e33ff d25d8511-62d9-4ca1-80c2-61f1f03ede16 27e026e1-e447-44d7-be21-8e7bbc910abf 4153e655-21c4-428a-bc6d-ae70ecd4460b 6bf2cc0d-bab3-46f4-b10a-ce510215e8ab db881efb-d43c-49c2-9321-7c94244e31d4 92ca7237-3001-45b7-b580-663866b8b1d7 2465c5a4-1e4f-4f06-acfd-975c847b6e6d 7b0fb691-5f0c-4094-bdb5-b505e03fba25 04322f1c-2770-4ca7-ba00-5502ee580fca 638358d7-827d-4590-848c-6176f1df2277 68e917ad-8675-47b2-8e0b-db14bef8612b fd110124-9cce-4068-9dc0-2f20473a9cdf c6173340-8a39-469f-adef-1403a654069f 0f96e511-f9a4-4245-8c12-f4e4c3fae924 e3f56897-d7f5-4be7-9ef9-fa498e9f0b87 9211b1b4-5395-4ef5-9526-b5ab1b22db25 7e72845f-3286-4bff-afb0-d65b4cdfb9b4 f0a96b05-0cb9-470c-8034-74939211b074 5c3a2df0-a73d-42e8-a4bf-9913ab62eb75 bc33d8d7-338c-4cf9-aaf2-4934a6ab6a9c bc90d4a7-2f8b-4f46-b4cc-e4a067914e77 e8674094-f164-4c8b-b6bf-87f845962a5d 2dd65954-6aac-4738-bf00-798cdce0caa4 bed4d18c-56a6-4636-8b06-7940923f5fc6 e4d32d2c-e144-4154-99ff-f8214ca11920 067811dd-af27-4de7-9973-7c8a2acf2350 15f405c7-1f14-40d4-ae24-f3a95f4b6aee 00882cdc-10b9-4702-9664-88513bbec48e f6d31016-919c-4d30-a1e7-ea74381893b8 9a998657-a78b-4468-a135-80bf191679dc f897d1ed-a0b2-4610-a19d-5738907182aa fcf447b2-e100-4044-8c7a-388f1459055c f8f91292-9fde-4e55-aedc-b5e18e6cfcc1 de61931f-0642-4ef0-af7c-b08856056730 9f929c24-5b30-49c2-aa69-0a34828ddbe7 843e238e-3501-469d-a797-647b8ec73d55 00665072-b069-4630-871f-f29ad96a9e94 99d621b7-519f-4bb9-91e3-e728ea008d8e 9c9a2d87-eb8c-4d8f-8898-58c114e5923f 1b843d23-74a9-4967-9285-b2cc8e29e960 91abbd50-69c4-4555-9c5c-6e3cd2ba563f 98221211-785e-4c18-bbf1-d7a01aaf42c7 f593991d-9ae9-48a4-becd-358d8d31ae0f 9e63ffd1-5dcb-43ed-bc4e-7365f9811c95 903d8e21-b68a-4655-a0df-d267303868a9 57449363-4ad2-417f-957e-0325540f28d5 2bab7499-a5ae-4a36-ae76-5bcc1d37f4ee 81752594-5751-429b-98eb-5cc1e39b6600 71e55764-3278-45de-843e-5bf9cab43558 947da219-ee34-4e56-ac5a-00d79ea3a778 35cc6327-8d6c-497b-9bf6-049cf3f1f0d9 95dd6f8e-9726-4466-a7ff-596dfb597218 7a0eae53-24e9-46ed-9532-3ac3c5ce57f0 e7f46b18-8b8b-44fd-a701-815d81787c3b 64790844-c280-4cb0-b661-eaf24851c553 f3f2b14a-ead8-47e2-bea8-a843bfe01862 12738bb3-9bf9-46bf-94e3-7beaa8f0da1b 97810566-1555-4f84-a4d4-6a4e0dfd8f20 2cd1b565-7185-4cb2-b147-f3306b316460 42dbb84e-4301-4513-8825-f116fa21db74 2304460e-fa61-41a4-b72b-499f62414736 2c409e0d-2636-4eff-84c3-0b3ad24f824e 5c54e421-080a-46e2-968a-0d22ec2b1652 c6134e45-c5eb-4076-b013-65cf655aada0 9ed10277-4388-45f1-9f5a-77fc7e6225da 1ac89938-7d75-4fb9-a358-b9bc64571c9d 5f90f7c7-b1b4-496e-8189-9a5a79392bcf b713f96d-b3be-48b9-9419-172a9e967d46 2fd4ee2a-c380-48eb-94b4-78b0ec12397a 3592ff37-4ab9-49bb-a3e9-add7f7b9f539 bfca0ee0-a37d-40a9-9bfa-147f32f38120 831b4e11-bf3e-4ec7-97c6-faadf85617cb 9462893c-c569-4a74-94a1-437640e06ba1 858a0a69-97a5-467f-80f1-15f663501a6d 6265ce40-d0d3-4ea3-b8bf-8c99640ba939 c8fb11d9-b689-4d4f-afd6-c996320ebe2a 7c8f40c5-caeb-44f2-8f6c-5afd2f3a4bbc 9a8e5c82-dcc0-48aa-8aa3-2df97d658e3b 1d1df558-893e-4d9d-8368-d988bfc3a758 587cc88b-16fe-4869-84dc-073220726a5a 89667d9a-b643-4012-93cd-1f3b8e24a1cd 0252bdc7-5900-42d3-82a1-42d1dbbcc322 4ad7426a-bca3-4bed-b353-18f1e126be78 4a210d5a-9609-481a-b706-9d8248005d7c d6606f07-9b57-426a-8b29-9cdd32ade682 c268f538-c2a8-4478-ab85-d691f778b31c 38a9df94-a188-49d0-8e14-2ea326819de3 a4d3ca45-da41-439c-8d62-7d24cbfab78f 123ac893-17af-4895-8bd4-e091261d1e34 1ae630e4-8dec-4a5d-94d0-d61616cb87b0 beee5c3d-80e5-48e9-8e46-7328089a75ff e596d8a9-fb87-41ce-a590-da30d81a6203 393631e1-575a-4fcc-b2d2-72479aec111c f97d9c6c-3932-4786-94fa-5b66001a9075 1677df18-1205-45b1-9ccb-d40f0fcda9ea 36ab0df7-8616-45f5-914f-c38556805cd1 f298bc0d-4f97-4bca-a13a-c3212ea8f3bc 4ee48d01-1c07-45f4-a9b0-a9ce73965857 d73d3090-8bac-4c64-b1db-759ddad36dab 2fc304a2-28c0-4b46-a336-ff88db654903 cb32f512-f3e0-434a-a4a4-1edeed18455f a70f44de-2890-4a41-97a7-675afe39373a 8810cfde-d9c1-42af-88a5-1df10eba240d ad707131-05b6-413e-9748-f58e5408747e 35ba62ce-6586-49dd-94c8-b06a14ec9369 ee6e90bb-f703-41dc-ba30-d82151852b54 7a5866c0-7f54-47aa-8734-1d9d91a7ba5c 66e4af45-5c8c-4034-a8e9-5d9c4b043291 8d8c34f4-739c-4f69-9cde-6d77f0f900cc 471aa45d-2dbb-441b-b097-b8d6b7514e04 5089112e-afa6-45c1-a5bb-1050cac9d4bd d73afbd2-f71f-4ee0-903e-12d5d508f151 24cf03dd-ff9f-460d-ba3a-b73a06d5b0a3 32606966-01f6-45dc-8abc-33fccc1db60c 3a0b2bae-9b3f-49e4-b892-fa986f2a57a7 a10d60e5-8950-446e-ba18-3f6de07b9887 29b93e2f-6be4-445a-b45d-341c195e1ea5 8683faf2-1627-4c85-be31-5d40e062b9ba 64a7778d-a581-43f2-85a0-c19f7a98cb4d dac6ed68-0933-464f-9356-20eddfb5e187 9a92e480-847d-4fa9-83a3-6c40b6230308 04e60c3f-27de-4e9e-b7ab-2483c8e00a6f 4db97528-9ec2-4c15-b182-61b6f9458181 4d346056-84a2-4145-b6ba-b4258ddbcae3 16a6270e-4103-4954-b784-4ab433602551 ca142c22-2c96-41c1-a5ef-e062a3104c34 e705a1d7-4694-4d9b-982e-09642625bde1 39672c86-c2c8-4489-9e91-96320e80c792 6433a6ac-d09e-42e4-8d2f-4f84edf28baa 70430e8b-3361-4fbe-b99b-4c4898dae5ee de337cb9-4447-43a6-97a3-cfc79ee3b46e 75384514-8d81-461f-961a-9fb4eee6a124 378f145a-fd5c-44c7-be95-bed1ce3caa9c 0fc115db-4d3c-4e24-bdda-feaa160fd22a d8227bbc-2fc9-4465-9459-e4bf19af1cab ca0b8249-bd3c-4604-a80d-4b640a553430 be7fa2fc-fa21-4101-8378-207c1cf6e1f0 d876d01a-b50a-4196-8e2a-cd38cd2410b0 e68296fa-ad1e-4465-b2fd-6ae4aff59aee 3d50ab6b-ae6b-4934-bed9-2c014f047e2a aad52c40-56c3-4c29-9d58-87da6310348a 09cfc3ef-ed87-4df6-9f6f-cab700534fa0 c5d3e4b7-abe1-4690-a6ea-9a6e92fdf251 dd566488-00b1-4f74-a408-d1675bea6931 aa771358-64cf-4502-9633-4e9e6345d75b e8023a80-16a7-4431-91f3-ddc14fa314de 7fb354ae-8193-4a40-9a26-39ee0d2794e6 d51559d7-af05-4150-a9aa-5f7fee8ee5ff 01114210-b44e-40d9-81f5-b1404677d153 423efa5a-034a-4576-863f-897535e6583a 67dc5999-34e4-4fa2-b672-7566c4f1a4fb 21b924fb-56da-4ef5-bd22-1f04efbbbb33 b683377f-facd-4676-b89c-1608c815f48e da1cbbca-dfb1-4a16-a8b1-03eb39660c4a 9e29a31e-2376-457f-993e-b9bacbf4aaef bf5a1dbb-4bb1-49f4-ad06-780b93065e60 f05383c7-8f2d-43da-87fb-c9ad947e0c10 952f8b55-eb90-4c1e-9b1e-df15e4e8bfa6 0d027b8b-4af7-4338-a324-8a42ccc4bfcf 46bb7d6e-03a4-4ec3-a899-f146347395d7 1ad684e7-e567-44c7-9622-250196efb929 fe8f33fb-ee19-4341-b611-59d560abc4ca 0c25c4cf-5529-4cc1-918d-b4ce6d5150bb bf9058f5-7842-4ecc-8597-939e34263596 8279afdc-3961-43cf-9f43-f7720da7bafc d275d2c0-7442-45ea-b873-b3f061e66d3e d523cc91-3a53-4ea8-a32a-d60ee5d72d22 622c9fd1-c950-499d-84be-44ecf72ab57a f8da334f-51d1-47ab-a86c-ccf39b624241 ff936463-98f6-49ec-942f-35970ed2d3c1 d70296e5-74a3-42c3-a9fc-c060ad4c8317 6a3df6ee-1e32-420f-85af-66e84cb8718f d82d4d5a-22a3-4dfd-b3c3-a12f486cba90 e4398ae9-0d67-4a7d-b5f0-47a1ec2a0544 5e95bce3-b10e-4b26-b78a-06fa81c31469 d814a279-4ebf-42e1-9f33-afc549597653 82577cf6-f0b0-448d-b7fb-893b886c5a56 dc538015-9ef4-4d9b-a13e-2a75f1eef1b7 b754ba06-d1bb-464f-9593-31726d959f9e 7633c831-11e2-4d3c-8d55-e8a8edafe846 d11a1da0-096e-4a4f-adcc-090536c9b91f 865963eb-3e66-4a09-a41f-8f66ee607bac dcf67a1c-3022-4485-9352-d5996cf40dd1 66b105a9-db86-4033-8fbe-09f13968a778 6405df76-dbb8-4c35-92b0-688a3a1219d1 5f8c5b42-32e5-415f-b52c-a683bf196af6 36d834d6-e20c-4ab2-a0b9-868be6fdbb5f 7fd1a76c-2c5b-4e43-98c3-8ecb742c33a5 fa7fbd2f-66c2-4256-a3ef-e28b9aefcbef c8837774-e98e-454a-b978-89328c95a5b0 7f1daef8-7efb-472f-a7bf-7d212e16c475 2d38924b-4266-42d3-ae2e-1cef57206054 e9c44b6e-91b2-4c99-938c-7a591f3c4f96 c2dc227d-b3ee-486b-a48b-875e28336f18 cf90c372-73bd-45aa-8d56-a79a0fea216e 47774c69-8238-4967-a93c-d78a3b9d3d0c d99fbb7b-6daf-4b13-a408-431b6276b037 5233e917-33cc-48b4-a01c-f01ecee22b2c 1c06530f-b989-4f03-b5d7-82444b4fa7a8 b2dcbc27-8924-461a-948e-21d2565ccd14 2472c561-f2ad-4f89-bf1d-efd8a51c9d8e 00df9807-e02b-4aba-aed9-e4bf2f73ce0a a2a2e4f0-8cd6-4ce8-aa64-ca404abd8eed 3beff436-5666-4251-ab4c-0130ca48070e f4bd8bac-a3eb-4a5b-92ee-77c50d10ec56 3951d5e4-e356-4d4a-bf96-c5863d8fa991 1d5f4f36-678d-4dce-89f4-8370871f7667 f41cc37b-25e8-4e3d-bf8b-7d2b3436664c ebb48376-d0b2-4488-9879-f033142814e6 c285fec9-24c3-49d5-8956-da53561bfb0b d7fc220d-e4af-4282-aeda-3851de8c78b1 4a55a3ed-65b2-4875-b366-60c5c6c37cc9 cb63f075-e700-4ab1-9103-fdd0b131fc49 d11ee86e-4dd3-4759-b9ac-aaa06b57ceab bf14de32-cb0d-416b-8566-8dea93e31c09 cb9c6bcd-636f-4e1d-bae9-711cbde36c7d c07aa874-5b64-4c94-81db-4c32a508f030 635d297e-89cf-4f05-8de5-015e33593c9c de3ab28e-3d1a-49c8-8891-f839b0219d76 a276bca5-33fa-4623-a8f9-eeb9c7a66dff faa4362d-1e36-4f1a-aa32-2b667b940746 740915a7-569a-467e-8ca6-9226ccfd15d6 03e5314b-6458-4ec4-a16a-113893a3dc46 e23662a3-26dd-4dbd-b3c2-c7eaca463b8b 9bda982e-587f-438a-b8b7-55e154a7c009 5cc51b9b-bd79-44e6-b839-7750bff50716 5d811756-513b-4f96-bb38-55e2237fb98b 47a9d6cd-82fb-430e-9923-706907f8f40e d9be8328-db53-424c-a7a3-f99cfb9b5d96 79c4a4f0-8633-4ab5-a1d8-e4e04f5ab4ab 9f155c4e-1970-42ca-931b-e8492cd7ae27 b4c336ed-2500-4461-b3af-8adb2531d49f 83534783-fb3f-4bf0-9463-613fc1b6650c cc8450fc-3874-4bb7-9319-39c633fe053c 4b41471b-234f-42c1-8384-29344beef08c acbbace5-3528-4872-b086-4b5152e65b36 13ad2b7b-b59a-42ad-a728-1d5ca3184137 12a65d59-8546-4719-996c-c7a13357b57d 57550825-bf58-496c-af26-a6aa12648191 b3c644cf-95d3-4698-bb93-8b88a85e7fdf 6236474b-985e-4736-a52e-ffa3523fd9ef 060f9217-264c-4801-afce-33151e098e6e fc792715-6f3f-4e49-837e-550c5fe8a475 5624edf3-8cfa-4c7b-931f-a05ef4271354 7287eb59-184c-43d3-827e-54e6c5f8318a 5b87750e-e366-4be9-971a-05521ec79a8b c00a0c4e-45ac-4a20-9ebe-e9a2303d878e 8f619a07-df61-4d6f-b09a-531f24d48f9e 16d740da-a9ca-4054-bb11-c257ba2d7260 f86db159-cf01-43f2-8621-e417348ae133 3552fae9-6a18-4f86-b7cd-74a9d2637a99 0f720f2f-3d67-4d38-9cd0-d5620928f1c6 d95ce539-ea89-4c13-8490-803b87e1de0e bd130a2a-5a3e-4052-a257-511943f51eca f1e1a8c7-7ce2-4f82-9df5-97d7ad37f21e 3b38b881-43bf-4861-8098-90f8c84e63d7 4467f6fb-d2b5-4093-abdf-7beb55b5196f 03f5d8ef-565f-408f-871c-1e0716dd93a4 469852c1-d72e-4bfb-b952-c9f743ccc5a7 d6ab3a98-6425-4168-bb3e-0f8ff7458bd0 bf521d17-ffb8-4a3e-9cef-053ae905f459 4df0baa3-7d35-4ce4-909e-be021ae3cf25 849f99e6-6584-4a3c-924a-a653d956c7d5 54d23680-a583-44e9-a08c-a22c572d2ba9 ff0795dd-cbe9-47b9-8eac-16e199fb0175 eb547b38-c2f3-40c0-a58a-81eda33f3a7c 3e0b33c8-3d22-43a0-8cde-38212bc0c902 1963063b-4951-4471-a48a-5e086ccd6eb5 f5be6c98-4a47-4260-bf37-a0329fc946e5 78395a29-7fc9-4ded-bdc5-9a63fa2cb6ff 30c133b1-625b-4879-84d7-0b3fe781ade3 e730110f-1af5-43e8-bae3-61862957a3bc fc93cded-a7d0-4fd8-853f-2f8a9162ad8a 56218032-7199-458e-b88a-dfe23611406d bc95f66e-f0ea-49c4-bca9-7f013174a172 ef188ad4-8033-4bf4-9438-6c2bb8141a6d 52af660a-598c-4a2f-9354-c96b27a88f35 5ab880dc-d155-4a05-ab22-3100e7dac277 ff15bcb3-5c95-4a77-ad4a-30b1d9b1b270 77a1071d-1c30-454d-8264-510e09891594 b18b784a-947e-42b0-9062-0b5115db983e 8f6ccbc2-792d-4039-a5b4-e01ec345971f 35d8baef-2850-4947-83f8-18c44df54e96 72204e1c-ffb6-4210-b52f-5341374df919 a41e452f-c923-4e34-8726-6da9bd695faf 61e3c863-b1fc-4dad-8e21-910dbf542417 3cf5bde8-ed83-46d3-a7e3-7dea6025db51 0de6b17f-7f3a-422d-9c61-e246c21ee5a4 66da1fda-27c2-418b-aef6-8462061d07f3 fb962a75-ed35-4d3a-9cc9-29a7c32a7081 a082fe2a-c624-46c0-a806-4984a6e68de4 123e540f-3598-4b79-b42d-f1a6a9f13ffc 435e6021-ff89-45e7-b484-3bf5c2c1ce34 4180b27f-6d7f-4d52-a7c1-02007e087aa8 265c1a6d-9c68-424f-9510-5da31056c1ce ac2ca60b-b568-44ac-a1a4-51a72a726fa9 d8252d8e-4d1d-4786-9109-354df9ba68e1 7c68960f-4f80-4dc8-8bac-f4f1a194f231 3c9c1182-b40e-4a87-a483-b01df8e84e6a 7d1cf67a-bd8e-41ee-9646-2973aad66375 2bde344b-beb8-498c-b5e2-92130692d2f4 3c0bf3b9-6919-4f8d-8a25-3d27734aed56 8bb8f799-5bf1-4ad0-86ed-7349ca73b4d8 21743713-f578-4162-b529-df13c6c22a5f 283ecc06-0859-4561-a9e3-e1fe28c609fa 582068cc-732f-4884-a90a-66379a195588 225adc2e-5246-4291-9f98-bd0046375764 11f6a1c5-0e3a-45e9-b007-addfb6c1d42e 1e0cd18a-e27d-4db4-abe7-9ca8ba7b27de a30c070d-d6d9-41ce-ba5e-bb3ca35956b3 eb125168-fbae-4d62-9769-f5a8df6b07f9 03438a05-2e85-4f07-977d-2924456313ea d7f3006d-6ddc-498c-9f79-654669be5150 879f5b3b-00ed-42a5-9ed2-996b56f6bf20 e89195fc-4ce5-40fe-9be2-c7c9bc033649 f5bc70fc-94a2-4c97-b316-66844e7ed8bb 7b0535a4-ef8f-403f-aeab-eb79bbf390a5 7ac3de78-a95d-400a-aa66-c4a44b28dd5e 48376d56-65e6-4e7a-a02a-bacdf1cbaa60 9bf2daca-c549-4413-8e14-4e064fe626be b99bca42-d9e2-4b29-964c-a32513d5f017 ce7f7b0d-c102-4e7e-8253-d43b484c41f3 f58c4522-41be-4e39-bef5-6f3b27cd3b34 71969d7c-1e79-42ea-8e6a-a3f054b0b847 e190fc2d-01eb-444b-ad97-9c11a0ef374d a3cea86d-1fa4-4449-9b19-b88174b4345f defbf673-0277-4a54-a183-a91e127358f0 bb6f0c34-9b50-4dba-a113-425e57a78a47 afec062f-7b5e-4507-904a-8e2775688cc1 fe35c4bc-312f-4439-b0cb-04220cd27a80 aeae7e82-32a8-4473-883a-613cc244f577 c315f13b-ccef-4853-a3e5-fdb2a1485da6 9e91b833-231d-49dd-a35d-5e46db728a4a 3c2fd86e-dbef-4c65-8f8c-72dc4b071a72 976fe1fd-3277-49c3-aa7a-2ce2160f2cd1 6835cae5-06ec-4994-b71a-ec4dd21e18d7 a64b59e8-3f58-4274-bd64-7c3f34f59dfe b2c5e539-8fda-4325-bcad-960d45e4ec95 cc5d02e1-e7d8-461d-83e1-85edfbe84f63 dbba3d22-3fbd-4585-aab5-539de4124b99 e5bb1075-1b21-4001-9086-58c6cb69b069 92c5d6c6-8a15-4c17-a8ae-635cbec8bf68 189c3d5e-1ee5-4d0b-bb69-cfba7680d5ca edfce4d4-0dae-428e-8c53-e6a66831888f 5f8300f3-98b9-4e26-9fc2-219bd3fa1b33 2c3c1af4-50ff-43e1-8554-364823a14421 9bfb0d2a-2be5-414e-95c5-1ed8863c186a f6b0a5ad-2d85-415f-b405-5ff56ad0726a 1beae754-619b-4efe-a969-375f1e39c046 2a65694c-5032-43e2-9056-d4da4d1bbac6 c56b334b-e755-4d5b-97c6-748824cafcb3 678271b0-4dbd-4afa-a19f-d758048cc980 b669744c-307d-432d-9113-3652912a2600 8fc96849-6e0a-469e-bcc6-779a7a24c718 685bdd7e-69a0-45e8-b181-82155156bb77 4dd885ff-61bd-4667-a971-11d647f24f85 29a91acb-47c7-43f9-8ccf-c4f0b7e9c373 b8532cd1-14d4-42ef-98ee-8bf65c88c5bc 81ca9396-a57b-4471-8d4a-edd47e62a2ee b3e00da0-061a-4bec-985c-bd0d288399d6 e43b3ab5-8009-44e5-9089-827d0512b862 3c8fb3ff-3108-45ea-965a-1ea635606667 d36a6537-aed2-47e7-a483-427f0ade0018 50079e20-b1f3-4db7-bb36-2fcf37f490e8 cbded863-9281-46e1-8726-5410b81a54e5 92b53766-2031-4014-8c8c-0faf71188b7d e7d49bd4-d02e-4718-91cd-acaafdc674fc d05d152d-a157-45c7-b36a-076bcbed4fc7 2b2d6aed-4583-47cc-b464-a866675f3b36 6d95cec1-6441-4b80-976b-f0fe0e1ce00c 1a68c935-895e-45f5-ae85-f69e8d7c3e2f f81c13b4-7e66-4c22-9746-73640cd64f0d 2bd0ff9d-13d7-4b71-9e6a-7abaae59ff21 0298f07c-1e01-458a-823e-ffbc2d20fa4c 51669dc6-8596-4f0c-96e0-1e4ed26c67cd fd9a2e9c-7ce9-470a-98a1-95f19f4d1d65 45ff4e3d-134a-45e3-8a9d-486f1a73efb6 f6bf670d-ce4c-47b6-9b5d-f6c5a086ab14 7b56b363-4ad1-44d7-822b-dd716a37d944 d3eb0392-4213-49e4-b7eb-e6434043b5f9 9b9e7b74-ba75-4994-97a9-eb48b38ca21f 8ba9afe9-e572-4a33-9eaa-88d3a4335413 7a48e00a-bd63-4b43-9b09-7de30f761df5 473b69f4-6080-424d-9aaa-00b41a1109a3 2205b67e-ec7b-460c-8d07-e6434429dbfa 7d3671b1-c1b1-450e-92f1-b58f782deda4 8d42f792-a805-4f79-9b90-68fa55418796 a039a177-8268-46ae-87bd-e3eb2cc38919 f49191e8-eb08-4bd7-9f28-02f1d4b42dea 1e097229-f647-4c4e-84e7-72fba837c402 03bc36d8-d1e5-49a9-9a03-8eb75d010304 504958d4-5f99-4642-9619-b2019fd8a1ca d647fdf4-a125-4449-8bd4-e205c1bd2bdc 6206d17a-fa34-4eaa-8142-7548b96af3a9 53b8155e-1d52-4839-b413-4d0dcbccc90d 25adabe1-5147-461c-aa44-e7c42c5be1d0 e129d07f-6ab0-4c75-bc15-0ab402c7ad48 1561853d-d31c-4003-bf33-5a47bfd6a80a 04cac657-f237-4fb2-a481-3bc56b711bab 3069dfbd-c2ff-43cf-9cb4-193aa44ff738 8bd6c008-1857-43ec-87d2-3e6184471b09 251687d1-6ea8-45fa-a483-0dc0f738abc6 daea03aa-c0d3-4b35-8bee-e3c3bebcfb55 ca6a4f3d-fc10-4cc5-802b-f2d293342193 dbbe8582-3075-4210-9588-f9af418b4174 c5aabd06-b1a0-4998-b183-d60c50f24278 255ea0b3-edce-4814-8044-34711f1129aa d2481c76-7b3e-492a-ba5a-bc9a5458f4cf c5b082ec-b0df-4d5f-9e01-ae21b19e0309 cc1f733e-a5ee-451f-a3ab-19e3777a0f5a 528011bb-819c-49ba-8650-45e0c9834179 f05d8260-332d-4b48-8c71-93dc48b7943f babad5e7-509c-43bc-a2fc-98e4ff524007 7103e6ec-3da4-46ef-88a4-3a030fe6f486 071ef19b-5a2e-47d3-859b-505b2e23910e 66e22686-65eb-46b6-a96d-bccdcb75fa1b 739fc480-e4df-433f-81c2-51ef096f37eb 3162c721-1571-433a-a80e-565880b0fdc4 eef20c26-f81f-4dd1-ab03-6571e1db9ea8 1dda7a6a-d412-43fc-aa2c-1c05a1ea71c3 a5f2e503-0ef9-4590-b029-f70b3effb9b2 9fc831f1-661a-44c9-a1c3-b8cad52d4973 e443edf1-e3bf-46c1-83ea-0555d4fce004 81544dc3-e6af-4e94-8f3a-7cb9a767c369 d290656a-4112-46fa-92b4-e010c99ff9b2 dea788b0-915d-4756-b653-18c90087db0d e1b5bce0-a681-4fdb-98fc-64b5bcaa6bc3 c4f1fa7c-a2dd-447b-a1ff-3e233124686e 55b4f802-c641-46c6-a003-f1aa4a653f7d 8f6d1ce9-0be7-4392-b368-8f829bbdac96 4ab3988c-b9ee-4a74-97f4-afcc4f890c9b c29a6d3b-dc05-4873-92c0-8d31966274ce 0250d8f1-0602-45aa-9503-5712917f862f 1eeb8c34-c2ae-4c25-a5ad-1a30c3bc069d 87b45776-11e9-4b4f-9b43-f6937a6ab2f5 26ccb488-8768-4fff-99fc-c9458bfcb7bb 4a74e6fd-7d83-48f3-bc2c-4b113bbbb458 1aeefa0e-973e-4a87-9fcd-eefad92d84ca f3bd7954-a147-4e0b-8f47-57cf55ec7e64 415d431e-7d33-40b0-a26d-af0b687eef4e 514390ec-c89a-476a-a486-5bdb4ee0942a f371e5a7-46f4-44ac-a6d7-e1c761d80cfc 4e618ff3-3ea7-4545-9d7a-9a320303ac7a 083ea5de-3cca-4cec-b680-6fc8a4189110 d8782b01-1d18-4d6e-b5db-1069b63c1c81 7e02a34c-ccc7-47d7-b1a4-162794b699f5 9d6488cc-d8f4-4a59-904b-13b41b97d3ae fb2659d6-68f2-4ee0-ac47-cb9daf9d9ba9 bc0a39b5-9744-44b4-893f-7426b2e29a6d d16fb970-8822-47bf-aabd-4703e9009609 f4f1d1de-47f4-4e0f-9cc5-45a906bdfdca 0d5bc7d9-8fac-44d7-8628-77fa8a5cea83 b3070773-c588-40ee-814c-0b5d6f526e02 2ddf9e72-0820-4f97-9624-9d716fbeab56 a352d810-c4b3-40fa-8b06-b96ee8c981c0 03a215b3-bdba-4119-9467-c8384e275d98 ede288d5-263a-433f-9e8d-a18c6e48c080 db60f078-c74d-4c47-8797-098da4702c9e 24d769d9-3f64-4a3d-9b6e-2433e35ba3f5 e2d88da2-8346-4c67-83ad-72e2afea10e1 bf84049f-4b2a-4746-b362-6fd8f7c4d8e6 640099db-c7b3-4e0d-a6a4-42bfe99f4c47 d166fe7c-971e-4c90-a31b-e925671a02a9 65e985e6-c30a-4b2f-8b8b-025a16cf9427 b9187f0f-d188-41a5-bb1d-63493290ee3a aaab1d73-6c61-4316-885c-67a888920c15 54000a05-3c22-40c2-b38c-6bde1f04df91 4307b39f-8337-4df3-aa8e-f94d01ca1eda 4ba9ac76-0238-4e16-96e2-eb3705e27b2e 27fef61e-4ba7-441c-9eee-2f4fa7ee0091 2469b6a1-720e-41df-9673-284fd3706496 5434d08b-1f94-4614-b7fd-78c5873da101 5b5206fa-a47a-4cd0-8d36-c4447b654b34 41da9b6f-894b-4b95-94a1-ae065c2da030 58b56133-59bd-4be7-a0e8-521b30f08b83 cb7cb88a-370c-4d94-a187-206bc17ab135 261182d0-7048-498b-83db-d9ac9f896481 7c4887c5-c317-4d61-bd5f-bf465ceaa1e8 ffc37ad0-b9d8-467d-8d6f-3d5b70db491b cda1e618-8348-4b33-aa21-17e57db59430 da1bb833-8b91-4923-a3eb-e6411a806864 e508804d-fed5-4549-a9e9-55295d793e16 1b87cf12-de2b-47ff-be38-214ef67cbfd3 7795299d-4558-41bf-a5ed-5a83f3359870 97a1a716-d4c6-4baf-be56-04d65f51978d 105f5645-d3f1-45b2-96e7-cb738ab7252b e904ed43-ce52-4784-af65-1b7f3b186c0b 9328c40d-26d6-451a-a1b3-b35502b202c5 474386c1-a7f7-4fab-90fe-59aeeac51c28 87205c97-3b54-416b-b2d5-934c07161300 68968f60-6e03-4153-b772-12884709a2ed d4dda31d-3e61-42f9-a8e5-7107f99388fc dc42f695-7a9c-4b85-a537-2eca40173bae 9180f780-de86-4fbc-bb2b-11c689994813 5f4be5a3-b437-4549-85ce-a17d2560d3bd 19a64af1-c641-462c-9adc-0452a19ce737 ca4a8a87-0df2-4b0a-8aa9-fdf66c00983d 1b8d7beb-bb94-4792-8358-82182cf2a5b0 bf22ed5d-d687-43e6-bfbe-91d901910b16 66539fa5-a42b-49d5-b5fb-85d9f1774c3b 43383034-c102-4856-91e5-0ff3f6fb33be 2b6dfa6d-7ccd-4e52-9331-349c65790e5e df15cf42-5fbc-4789-9d9e-234b0eb0de99 deb0ccb3-d664-4a10-82d8-8a6205a47858 41910918-c410-4392-bc34-19b6e3f6c222 fd47e636-8e89-4580-9f71-26e5d5b4579a 64847956-c446-40c1-a679-bed0ec3e67bb ac84ec27-8a4a-4038-9304-8c337abf44bf 5ae7a983-3b70-490b-b1e6-65373b69aa88 2995a8ad-67dd-4f14-8057-8ebc0c44e693 c0bfc73a-3c05-49c6-b9e2-2f38a5ceb92b 199569d2-dd09-4f57-a202-f6d60bcb85ff d55bbe9e-f92d-4c6f-befb-fa0d65935dab f0dd2059-6e3a-43f9-ad8e-1d62dc2452bb 96f9548d-194c-4ad1-bed4-7a1ffcb32a37 222577a4-e50e-4b55-bbeb-214e0ed898f4 5bc0b57c-d83a-40b6-8f3b-6d7e2db43b76 55eac084-7b41-48f3-9f06-bac976a57f29 52799716-6494-4cee-9fc6-f820027fa7dd b77cccf7-3d8a-4bd4-8fcd-4e9d51ee2cc3 39355ff6-30d5-4c7d-9172-e82d3f470ee7 042984b8-ec60-4f23-89bb-fdadefc77f45 dbf1a8ce-8c73-4c74-9e49-3c8fc5355fdf a9bc6cbf-18bf-431c-9504-9be89ae6e05b f429b2a8-2e6f-4404-a726-d5bce7087862 18190421-c7d1-4868-8b7e-07aa24b61cae 8ae24f07-493e-466a-8b15-5486cc350932 b593389b-1ac4-445d-88e6-28a111bf3149 a819556f-17f9-4018-88c7-3e223861b2d2 6cf4cea4-3649-4f00-ba3a-02f1791ff766 39745b8e-0fac-454c-a83e-e2c212f11987 8a4a0163-d27b-4ae8-8f2f-d6ee2bfa997a be7c2bb1-d60b-464a-981e-2323dc97020c 1d728457-e29e-4a93-a69e-8ffe271559c8 2387bded-f8f9-44b9-8dd5-7168077ef666 6f92e911-c5ca-4c1e-a33c-0abcf007a0b9 ee24b2a7-c368-43a2-8340-1aad7e45e2f2 0cb1c48c-c3b0-4728-8e8f-f291e5c99836 297ba7e1-2727-4c09-ba00-ab277922a1a7 6c1038f2-ce87-4fb2-81a3-188270889c9e fabc6a8e-892a-49fc-bc52-a9d54f25ec96 e900e313-3d75-4373-8c38-113ed2f17bf7 e61eb9c9-11bc-4fa9-a839-20410e6d34c8 ecc46443-529a-4d30-9294-6a86b66ead88 5d2c00a2-8cf3-4ee3-be8a-25e603f6963e a8c79225-8310-460f-8783-23c44714712d b4fbada6-97a9-4775-bbf4-abcf90325cb8 89b3e1e7-4e21-4c44-87a5-05b32e4b4ba7 6d68a580-1930-4180-8a1c-8e4a6f8a133d 0ce2ec52-992f-4b5e-b1cf-f6591e538643 df5b8dea-0813-4ada-8980-55ec29d2bf22 fb261bec-9527-4db3-a121-4014c570a013 08298b16-9686-4c56-8f43-a96fbe69af00 32a4d77d-f217-4b61-9e40-9b9f30382f1b 62d6579c-c64d-4603-82a5-b0e50012772e 8ce15ece-04c2-4c9a-8d92-498ceb45492f 754582ab-a904-4f89-9fe9-052015d624bb 547471e0-2529-4a53-9f3b-07ff9a623b0e 6d77062b-202c-4647-b383-3b908eeaf74a c0e89366-26ff-46ec-bcd4-74ed3ace98c2 22299d1c-41c3-47fe-ae90-9f7528379e67 b6020b7a-3784-47a3-9e36-ccfcf3c6392a ef096e4c-3728-49f8-9eb9-2758a78a28bc 353e4d69-309a-4e12-82e1-778a924ceae7 5782a526-db78-418a-a3cb-4a4b11dcf5fc 0b7c8480-0028-4f7c-a9c6-7d0cfe575344 de693f9a-42b7-4db7-8af6-9834f50589eb 9c091899-a4b9-4763-9827-fc31f2d0e1dc bc0cf0c6-dd60-45ed-bb18-358134e12ac1 ddf15630-0152-4950-a262-cd93508087c7 4e63c42e-49fa-4ab7-8421-695df6d0bd23 39aa0ed5-a655-49c4-9b64-50eab51dec63 4eae2dda-88c5-4c45-a667-01fa177db163 62443d8d-ad57-47ee-a2a7-3873a2dc012e 86196d11-2a8a-465e-aabd-f80073b466e1 2e2cfe93-1fcd-4dcd-9fba-28421ce155d9 ebaa8663-b3af-47e0-82c1-e7e605effe26 d714ec39-8418-4bd7-b2d3-c94b6d0514b9 8287a3cd-27ea-4c8c-a55c-5b679df5353b d452c4b9-98da-443d-b643-206dbc4bc839 d1155c1d-c005-49b5-a2fb-cd36dff3972d cb342dfc-0b7a-47b6-a994-d95082c97457 73a5504e-944b-46aa-9c91-702aca4ddacc 5242045f-1387-4d07-b26a-55c884ae80db 105f18d7-2dcc-4b28-8499-53b066b5a7f8 099939dd-0b37-4257-8970-deff52eb2838 ee59ae21-d14f-44b7-a5ba-ead282b90130 e1870c47-2c45-4ca4-9c8a-e1ed229a008c f6d7cfb2-35fe-4327-b75d-f8aaa033454b 90ed07d2-3092-4f57-b3df-88c1043efff5 d9e03528-1cdd-4b04-9cc5-df66eb305ad0 1d81ab80-1ef9-4c60-a4f4-e90b1a5034ab ed77ab61-9d68-47a5-b3e3-ed5b1a56401f 70653b23-f98d-4890-8758-a19312bb7490 4f5cf43b-0220-419a-93a7-e0cbda89baf9 c8f9c146-ba00-4d52-ad34-c4790e3689f1 855b5888-d7c5-4284-baf1-93b843eff6ed 2e08e164-3c07-440d-a635-d6ff55aeed14 9da9ba1c-81e8-4ccd-b717-6b89fae891a9 a8ccfd7f-255f-45b8-8bef-df8590dbedb6 5cd3dc2a-f4ea-441c-b58e-f22c7043899f c7fbb8b6-645b-4ef8-ba68-c3c8b53a7fc7 c7cd94ae-8f11-472a-8d3f-8950e9cb3aa1 ff6b71dc-81bf-45f8-8202-8696ea587a42 27168466-4a32-47dd-96a9-999f85dfd868 94a1e601-ffa3-4da2-ba63-748719a5830d fb0c03dc-49d7-4b08-8512-4e81859c8c42 4e40d1b5-ff0a-4b12-a786-c51d18bb5202 d97cd26e-318a-4924-8aea-5eff6ffd5348 70992501-de32-4ef8-9698-c12373d987d7 ff7a2990-07b5-439d-9159-d1ff52152f16 6050c105-8551-4388-8c47-2bdc66a513d9 4bdb8159-ffe2-4dd5-9ddd-d5a46f75ecec a53d6523-9be0-4695-88a1-c501ed141975 56900bc6-fbc4-4b21-aad9-1e3c64b8e691 bdabf175-830b-428d-9f85-5844d5b055f3 15ec1e57-9ecf-49f0-ada6-eea3e54873f7 cff8721b-1b4f-4dca-a675-1538118f825d 3c6df350-b344-4a18-bfbc-d34e21b7f83e d72eab96-b608-43e2-948d-b055ea30eeff d8fa0740-c0e5-4de0-ac0d-8fc528b90940 00bfac17-3231-4d36-8c5e-8fdd1254383a d71a1aa2-d69d-413a-b0c6-9341d642d26a 7572a0a6-f92f-482d-95ab-8852d469bf2f c64c9118-6cf0-4db1-827a-363c599b4a4f af83862c-0a55-4849-baa6-911a81137189 f0aab614-3f88-4817-8a7d-ba8d30ed6da1 ff5467ef-5e37-427f-b801-05cc6e1d13a1 e345296b-0867-454a-8a45-0d4947dfa4fb dd526b40-c698-412d-9cfa-0c34d2c14fb4 ed4e70bb-641e-46b7-93e5-9762eaed838e 8281944c-a384-4395-af4f-4ca65a1311c2 04c3d012-da02-42b5-a2c8-b90120daa823 37c62c16-f39a-4a9b-a161-6f294e839b47 245a48f7-ff08-4826-abef-c59e1e92f3ad 129a8982-bcd2-4f2d-8183-b6ea9f1f94cd fc02c6f7-92d5-42ac-be22-1f7f189ae7ce 9a045026-ba36-4c99-a749-9c2ea214fe0a 6a49b6d7-d88e-4b5a-bd2a-500829b44651 2935178e-eec1-4c44-baf3-eb05756b43ce 6db029de-7a04-4016-a693-2962e2702a66 e27ce2a5-d4a9-4b73-bd6a-94abb4cbd7bd f7f365aa-66ba-4fa6-b094-f25ac07dd446 31e7dd1d-be08-4933-a783-8b2047a0c623 34f87e3c-214a-417d-97f9-04b6d851972d d67df220-00d0-4884-9a42-eed4dc437888 366aec14-b614-4d59-8f45-47e5f4d8151c c96649ab-7eea-4f8d-bc9b-4c810b036ac0 00eac065-5e89-4e8b-92af-d5052f8e1b0e 55006373-749c-4022-9ffe-529fd7b51369 4d486c12-3e32-49ba-b85d-43458a2aa738 0f9c5817-20b9-4d4c-bbaa-605de0faee6c 6fd2fcf0-c749-49b1-b2c9-4a2ac0303f1b 394eb72f-47bc-48f3-90c2-ae9d0a32e3b2 6353479b-d685-411d-b38c-3b13bea7cf18 788bb274-8689-4e72-bd73-61f3f940893f ddc82b25-206c-4984-8055-5b3d3fd7d15f 751a90d9-a308-4ea2-b270-e3d70f42a95c 3dc793f6-91d4-43ca-8d6c-0494a9ea1a3b ece7abb7-ff00-476e-9dfc-c85041e447cd bd41b0c2-5dc2-4072-918b-b1aa539360ea 930ee35c-e716-4cdd-844a-2f8ea97b10fd 13dc6131-af5b-47bc-bea1-34b2148d5679 345dcc21-cc50-4c98-92c5-f7d3445224eb 8041dfd2-2d6b-4322-8c61-a4f89a29ab99 10c6fdb5-6d10-479c-bb6e-e92296c7574a a56f1bdc-6c80-43e5-bc12-2fa112f7db26 0e4f2c48-6c93-4b2b-b191-dcf5c1af2cb8 d944a429-bd01-4078-9c02-4a755ed5bde4 de6d47a7-1f1f-44cf-b432-da080826ec4b 33c88e62-3933-4c30-ba37-5669c7d8c5e2 7960ae2e-515c-45cc-84e7-53525526c46a 655c63b1-2081-4abc-b52e-78cfbb63c19e d65bdf17-e3b3-4017-95a9-7485392b12c8 aeac5916-1257-47e1-a6e4-6968705d4825 94590bd1-d07e-43b1-b765-e1a7132cbe04 3b81d019-fa89-45ea-9ea4-e22d3ac4ed9c d858e6b1-fd45-45c4-9e7d-7cc9fbaadabc 1b70412e-7a6f-46b8-9ab3-aa0208d57208 6cb97c70-96b9-47d6-98db-e2e2d92a47e8 ef2b4e99-c6c8-4dc3-8fbe-aae2838d43a3 c113f2c1-d411-4372-8dd0-05c87542fe46 64c96efb-f2db-4e12-a916-b22524dab8f7 49f72439-5948-4b84-abca-ad29177ef639 e3416b64-7d65-493a-8542-fa6af0b8de0f 3565f5db-9eb0-499a-b39a-b7231b112d2c 449578e1-767c-417e-b380-f90d7a2fca92 3e10eca0-d457-4dc6-86f8-47152bf0b141 98a71b25-901d-4a77-b248-6a305900cd3d 9434b33d-5ad2-46e5-af5d-a643b459fc12 24daa582-763a-4973-b304-45ac06e59ae7 3e4b71d9-22c8-4674-bd4c-c60af12d1c47 df1b5f15-ee2a-40df-a805-77729344da9f 2e75752e-0d08-4588-a8a6-88fb5c67c564 e98e8533-e2b6-467a-a281-2f645da16243 02e24dbb-79f0-4cd4-b7ae-357dde727299 e2a44445-4e37-4237-bdcb-7d778139e265 1a3e31d5-01d5-493b-930e-9097a5d566df ba84d114-0540-42fe-93f4-5df00d273f4d b7c2b64f-c3ac-4bdc-8adc-773814ecd93e 173f183b-dce5-49af-83b2-f3a345430a7d b091abd0-bcf3-4094-8d3d-3007e2b6f333 c6c5c1b1-3fd6-447b-a027-f81fe8511269 2a7c6af3-a1bd-4b48-b452-cb0d8e39e4e5 9df6b5ac-bbfe-414e-9123-e9ba2acc22bc cbb42132-19dc-4c9b-97f8-0c16923ee232 9da1c9ba-844b-4616-b38b-d524fde5e4bd e57d085b-a145-4de8-968b-33128aec563f 3aa50c38-d0c7-4630-877e-c1be84741f98 49095af2-e266-40b4-a59e-7948a7b00771 d146c507-4b0b-4e28-8914-d5d3417b8606 e89f52f0-bb15-4e03-91cc-8c8d3eacdb2f 65220fe4-46dd-4efb-be90-e80f94dab78c 6098a1c0-482c-429a-9066-a87c3963bc16 ddd653ac-09c4-4475-8633-1d7899a1cae2 d54de4ba-f11f-4468-8205-0df6a41109b9 0874370a-d66d-41ba-9156-14cab7627b1b 1f80b775-2bc2-4753-a50c-a014022d01f4 eb3289ef-9bb8-473c-a5c4-d055aeb4e96d e8bda086-1fe8-497a-bc0f-dcfb1444db0f 82d471ef-fb7c-4d66-9232-05cf60c89a5d 6a44391c-79b9-4d6f-a960-5e97573bc441 ec737d17-dd45-4731-8954-316428f4f19b 9177e320-7a41-46a7-ad4e-5e21d951e104 a5c94203-da33-4415-94cc-3e7530b6ffa3 8cbfedfc-7a2f-4e53-8b76-0263934f5db3 021c6d31-816b-47de-b200-634d816ed242 64c56a22-9fa2-4055-bc91-e9de7ecff61c 91ccfbd9-857a-43e2-a2f7-48f538aaa556 f10a2e71-6831-449f-b501-5841a1a6159f a89e0147-958a-480d-8553-ca0a5e965dbf e49cbfbf-0e80-45b9-9ce6-8f7eac80aabd 6d321d1c-eb7c-4e86-8665-6a0a40ed6829 5db25983-7741-4104-b81f-65f0601c1c0d ad5a1d63-4759-4d5a-bdb0-3ae50299a58c b65a8485-2f94-43ec-83df-ab24295f5fad 4a2a470b-a52d-4c97-a89f-52b7ff371c19 a4c46225-5859-4161-aa2b-7073a7fdefad 5b95110e-8b8e-49a4-a135-f60578db32a8 1d118c78-4d0b-48cf-aece-3251a3a5157c 1f470312-94bb-467c-946e-7b4d9eb9f99a 63ae6b97-e6bc-4237-824a-3dd2a3194125 c82ac12c-2e34-4f71-93de-5af0384deb23 b8f5d07e-4597-4dac-bac0-95a7493dba44 b7ff7cb8-484e-4b56-9ecf-fb12d46bb436 8f4d19b8-01fe-4cdb-8de7-9b4d62d2b31f 083f05a6-a757-44d0-a4ab-148e2ffbb6d4 a3d0ab1f-dd80-4d14-9c7d-80c80838e5d8 614be66c-3ccf-4953-adc8-03e3d370222c 214466c4-bd1a-4d99-9677-560d814d5cd4 716130ba-3e4f-49d7-9a2c-8cf8939e56bf 202c01c5-1391-4bbd-aa9c-6a65810bc28e 4a9b3efb-5ef8-40e8-bcb1-f968b8070f54 b5b22d21-cb0d-4a43-87d5-d0cac88d530a 3fc3af3b-d128-46f5-815a-cddc8ae62e8a c76b85ca-edf0-41f4-892e-569ebaeefd60 1d3ab725-93c3-4844-b2c8-a009995ca065 8cb9ea2e-30f3-42a0-816d-ef25dafdc695 2236e32a-13c9-4db6-b675-3a29c4705103 efb46745-4ee5-4537-9c97-2ae7aef2039e c3181268-42c8-4650-9e8b-b83ce1772bcb 0feeb566-7e71-4ee2-8814-2af3d6bd4903 f0c959fd-d8f6-4fc9-9163-3b474d95426c 370772f5-b57f-4a21-bf19-bed1cdac7535 c6842009-d6bd-4b17-a6ed-4e936e836c37 b31daca3-5063-4c1e-9ef0-ef5a473a0b9d eb14bc78-0155-4f8a-98b8-4576ba451efc 825779e1-c67d-49d6-bdcb-24ad9975dc48 a2762060-cdb8-488b-98ed-7d854533ba70 d3929ce1-25d7-4888-8386-813945319b50 867bf5c4-769b-4f97-b1b0-1b729fd63750 e2bac224-07f3-4c71-9bd8-c30471b2f517 171dc4e9-c85b-4e53-9c1a-d0aae6116f21 12339703-8688-4362-8933-382494c51516 34c41461-e10a-4144-b2f6-e063217fb06b f3cd20cf-86cc-4da7-b8eb-e1e0f58c0245 e1873d96-a50b-413e-9f3c-6627774309e4 255464b9-bbe2-41ff-9d57-bda025c58de0 f62eaae2-06cb-466c-b147-ce56451c6a38 22e0a276-f032-482b-aa8a-5ade49a52d87 99b9988f-cfb0-42bd-8349-e8eb2cc43150 0f60482f-47de-4cfb-adec-2bab6ad94370 72ce3ece-ea12-4518-9ce3-dc55d6012662 365a7d82-cd41-405a-b5ef-ef6cd4db2665 bb732311-08d1-4ec5-8e5b-fa26a411fc24 c07e7d57-a7c9-4885-822a-07e9e21063bf 0f1f819d-c5c2-4186-a257-93a1307875d0 d0358c4c-507f-484d-b30e-f25a98842978 a2fb8328-c272-4317-912d-38ac5557fd9d aca11f18-acf0-4a2e-8227-c0f1fbcbc11b 07d17f55-c44c-482b-acb9-eeb900c6b688 9b00274a-56fb-455f-9aad-f6ad9db6e31f b34483a1-9c59-4219-908e-b85ecfcdfb3c aef3b3d0-7ca6-4bf1-831c-68b3c771ffd4 a5451991-f504-484a-89a0-1d3899acc578 56ed88f7-d02e-4742-a208-de42f75bcfba c487f58c-3cab-47dd-ae7d-c0f1a24db7c1 8dd97390-0394-4e9f-b50e-77246f33dc0b a168f21c-0d11-4647-88dc-8752ca8fe408 b1c95a0a-9091-447f-98f2-ac514acb44a3 a39b3639-3bf5-481a-a7bc-9bfd67669208 f838024f-fb9c-4a8e-9d27-7262a9b2ff60 f302f9dc-3fd2-4505-898d-958dc34a24ac bbf9fcd2-1253-43cd-8795-811b6856c838 3675f0a1-3a24-4406-8a45-8a62e4c4002f e2997a3a-cbe7-4511-9f2c-8a593b57cc60 559204a9-f7bd-496b-a581-418cd47c7f1a 4fe8c1d3-1016-49a1-a618-e714fab23f53 4fdda2b4-e047-4fc6-b8bb-cdb7826930dd 5ad083da-4b2b-44b2-9b32-10ea7c1f6b9b 3851c8ef-8771-4396-8e2c-3e54c9d695cf babba553-c40d-4602-9d2b-af62d65fb484 50a1964b-6388-4bc0-9ec6-5bc1103d894d 5fe4da50-008f-4819-9741-f539f3b9e674 b0e45be9-9ff5-4380-831e-b83d5793afef 77f0458b-cf43-4fda-a19c-551ee77da79a 28e2e6aa-1fc7-42d1-87cf-531887baeadf 9a037cfd-76ec-4cfe-829b-47636452a489 91d3954d-b1dc-438f-9969-40ffb91836e5 f75a2b97-abf8-4941-a0f0-d913dad37c48 78c31595-11df-41b1-afb2-26fb39b89cfd 71d69f8a-9cdf-4603-883f-2164bc61de38 ae9234be-5703-472d-8f35-1203625a944e d9e327ef-da6d-43a4-ab82-fa622e82a868 d9798f3a-c0e8-4606-9cde-84990e957453 cf8facc8-8b79-4a29-a33c-b86762b5c043 bd1dd916-998f-486a-8407-35a9a6f502af 2dd25b99-ae4b-4adb-a1ff-71dabd0ef8f5 d429ec32-8261-499f-a8da-f11fbbdf9e8e 7d2cb4ce-71dd-4d42-88d1-24f79f4093df 6335c719-948a-4586-a6a2-6f12bc13ff9e efc9571b-4532-4476-b04e-0e20d75d39bc c22cfeec-91ac-4f62-8a91-f4d4794603a7 f0305fb1-26df-460d-b9e3-0811b394c405 20aa26c0-f2c2-451b-9fd3-084f5271066b 90d3958f-3f98-4854-835c-628a80c95cde 4112cd9f-c72d-4c4c-bd43-3af58ab8788a fb76f537-a590-49a7-8c51-b4462cd69ad8 bd90508f-d45b-4fb9-bcb8-c06b28541b84 7d1c811c-9e2b-4c14-9c2f-ad6f9075cc61 b3c7fcef-5d08-4897-bd78-095ca87484f7 5c18edb5-9d87-4e98-a03d-50fb1e372f37 0c9facf1-0b84-428b-8117-2cf8f5bb9f45 86249719-7328-469b-8a0c-39e50ccd36da 7c7ec707-8e28-4154-8623-adb1752c5160 b8bb85f6-1904-43af-a659-0956474dbfd5 925d4bb3-3d2c-409e-99b1-2a30829461a2 5e3ed240-f36e-4ebd-a233-f5cbe6e68951 cc7e1e7a-2ad3-447f-99da-450409a29092 5ab5f122-137b-44c2-8a37-c1a4d8bc7759 f173fb2f-bdbf-4173-8531-34f83f34d155 17a77629-f401-4ab7-a251-afa0c92ad2c5 5b42205a-b2d5-4a33-a5f5-d053476adf72 d35d3e79-de4c-4318-a515-d4fd40ee36a7 f079958c-9aa2-4e6c-9484-0626e63002db 9f3da1bd-ffed-4cc4-834f-9fbcd33de696 296f1398-59b3-4afa-892a-919436d3fa61 a14106e7-cc17-452c-a8b8-334806e0367f 8d38649d-e1b0-479d-9100-73baa56e4617 f7801bb7-fdd5-4fbe-bdd5-42572f804b5d a898e0c3-aefb-4c87-a049-7508eee1daa9 9b57c6b9-60e0-412d-a903-f1614d27e53a c38f5972-2c7b-445c-be97-602b97cedf3a e054142f-e4e0-4c91-ae27-86760a0d9b83 c179def8-6310-4e72-9923-c687ccbc4a69 6d9e16cf-6303-477c-875f-dd505b44b2f2 dcacecd3-f69f-42d5-b5a4-bb1a85394ea2 9bbcc5c8-3758-42bb-a559-8a6618ec577c e42a5bb9-1ea6-4c67-ade9-804e80fcf813 14188045-9971-4896-b42d-34a95c570792 6ce98432-1d7c-45ef-9051-72011dcabac9 12e98516-649e-4d7a-9272-801ba4f0a57d 9c6d3d99-b5e1-47af-9b2d-cd639dc3e9c7 65498bc6-8d61-464f-87a9-1f001a768f64 77a2a3f8-d7e1-4622-91c1-c93670f47084 5254729b-ff7e-4821-bdbc-8d6a20997142 c91180dd-eebc-44d9-8fb3-9f7dc598a1e8 90ee8d71-76f9-4833-9c99-8417ccf7fc8f 1a83512a-fd60-4623-91ef-5d3e724a3f92 af3b5b61-c48c-4602-bc2b-62c32bf16d4c eaf890c2-ae43-47c7-95a5-733e2bcbd655 1d9fc0c2-492e-43fe-a450-545e9ba19a11 e791f585-0882-4f8c-8138-b309e6d8e744 d2c4227b-31a1-42e7-8590-45aa5f9a4698 c4ffd8f4-04d7-4cb7-832c-f7a1b167c75c 35db0f8f-71c3-4d35-8ef6-5850d10950e0 e10bbb85-522b-42fc-a5fb-55ed5379bfaa 67d2228e-a394-477f-8840-8cb55107f39e 34a562e5-a1c8-48c6-b80d-df446b116110 da36ad93-8197-4c2e-ab53-90a36f6874ba d23755b4-9112-45e9-97ab-293efefc30c1 cc95788b-fe09-43f7-9032-64ffa8cff1f6 983b2db6-d308-40ee-93b4-5c3fd44a6f19 9ccebefc-da50-4c1b-af6b-53f98ace0ad2 f418e692-a0bb-454a-a18f-638bf28bbccc c9b414e6-df58-491a-8b93-6bfdab291d12 e565cf55-4062-4a96-bab0-ec859c606570 ef8f681c-7b17-4435-9341-91c32f6cd9ad 155d144d-a450-46f5-aa7a-ef746f001fe3 d8c9de87-1405-4834-a0c2-9f24cc310c59 f3d2c435-07d0-4620-bab0-c9c4c56106ee ee572871-f14c-4238-99ad-2a32bc44fe66 b208bb50-7ef4-4eed-bf3f-7f61b53ba6b4 50451fde-5084-4199-acd7-c5c09123c5d3 2108e362-641c-47d1-8d08-6d7ea0dee16b aa855e81-419a-48c5-b35a-31c104db1ec1 081541ca-27a3-4da7-8f42-33a9b8b85cf9 a6ac72a6-691a-4bf2-adbc-66f379d7a0a7 3a27bc2b-0b7e-4aff-96e6-35ea19902bae 0ba7d119-cee4-4197-889c-f73ed8ad5f0d a4fd5c53-caa0-4d09-ac34-5ce8cc002df6 66d029ff-a2d9-4ac3-bfc0-753853892a93 1f186d32-6008-4714-b7bc-7d8f1ee9228f f2e8c254-28cf-486b-b543-ded61cc788d6 61e806dd-9280-4b08-99cb-3001502bfa18 f1f16e81-8b48-4aba-b4af-7405883ee965 3f724534-e3c1-4581-841d-b935dc01d561 86484b85-f169-4301-8fe2-2c082975c58b b5287a56-d9d9-4749-9e70-5e2631711c20 4d82eb93-7802-48f5-873f-6baf11064a43 cf0d0109-aa47-4cf4-b0ca-38a4e3a5c687 17b4faa5-8da7-4f19-bf21-7ae3fd68db19 ddba7b1c-65a9-4fdd-95f9-f3d7803b357e 9d280a6a-5040-46b6-a291-94868e18ac02 fdc40720-250c-4ae0-be6d-1553c6a4150a 5a41ca8d-5986-46a8-bed1-b808590abc99 e8bad86a-d17d-48d6-aae0-f6ed9d2bf616 b6f874af-46da-4da5-ab5e-eef64055e7cd 856ba30d-86e6-42cd-b0ed-81d8c0d351e6 2e4be7b7-9641-4759-a846-571dbecd4f10 525931b7-cee7-41f4-8bec-ee5c6f65d812 206e92f7-35d7-46f2-8f7a-3792815ec499 06b5cca0-ebf1-44c6-a99a-ed930c7d36e0 229792e4-1a95-46b3-a6fb-aa8288d7086b 430b6967-30ea-461c-8412-771bb0e46b8a ce51b560-cbb9-4dea-8922-230ddb3afb25 a5157da3-8adb-40f4-8ec4-60508749a16e 8c0e11f3-dafe-45d8-894e-e4a06980068f 9cda6203-3024-4d46-a051-e461b150bee8 04bf6cad-295e-45fb-8ff3-7376ccddc3d9 472e3c12-07c2-454f-b3a4-f2aebab6a23d b57565fe-741d-4029-bdd9-24884a278e94 b2fafbcf-29eb-4e8a-b603-f124b0060ffb a578a894-e247-4fee-9df4-e399d37d1370 3871d64d-8420-4cef-b23f-359846718bab 136e90cd-8998-45a7-b7e5-01799241f35c c47599ca-9f23-4e6a-b162-35a9529ac283 c207b7ce-8b2f-4ad4-a915-1e1b005bef2c 4e307161-974a-4a04-8838-af21d8889255 810b61db-12af-4716-86d5-668324ad41c0 a5107fdf-6e6a-44c4-901e-e0886362cc84 0c88b49f-de30-4988-90ce-2447dd20828a c4b323ac-e757-495a-8f91-707774766c2c ffa66709-6b5e-4e0c-bc70-cd78ffdb9468 0fd93fe0-4524-4226-9d76-052906c3b7bf da6e041a-0ffc-4ef1-8483-e1371cbcf05e 744e164f-59a7-4b19-ae0d-d9a96e4089d1 6d2a0eea-71d2-4b1d-b7db-5eeede823fd1 82f751f9-6a32-4445-b2a8-edb613e2c1c6 e2c0d541-a74d-40e0-94eb-19ef2569f127 1f967bd4-d927-49d7-8e89-884743510d85 9f917cc7-d517-495b-82ef-a9c9666c23ea c73ef33c-5864-4e91-b071-98c2c6633c8a 9dd6a93f-2fc8-434c-8b59-179248787f18 4f404ef7-72d6-4f76-aa28-dbbae279f1c4 5103974f-2e08-4ce4-bccc-90c9c6c167ae 37d91368-8307-42f0-b079-912bbbe05b93 9f16fa5b-dab5-4221-9663-ac71357d8b34 594b3dae-64e4-4ffd-b383-660f33ed80a0 87b7918a-4895-45e7-9586-f8ebad7ae0f2 a53349e1-66f3-40a7-8e5e-560d50665fb9 127759f8-1bdb-40fd-a762-9d336d01853c 1e3acd1e-6ecb-488a-b72f-c04bc2eb4495 736cb773-57cb-41d0-abb6-db185e7e5809 7f02fc55-a4b3-44d7-add9-0ab766a7e987 35b6d4a6-cc43-4599-bc10-cef99bcf71fe 716a8c79-9af8-4a79-9325-7e7318489cce e5803961-ef93-406c-9e0a-ea36d776c9e9 3d9aa423-7b4e-4990-bb4d-240d39f16ca8 49b4d9df-6ebd-4ada-94b1-d6a5e007a7e1 fa3debc4-531e-47b7-bf45-7e1a400584d0 db526b17-070d-47a9-9fcc-6262f6b92cbc 866475e9-6816-4a69-adbb-286ebf836511 10662697-4819-4ec8-a55d-57dfe873627b 4bf063d8-bbb6-48b3-bf0e-d8bb24589332 79174f23-b9d4-4d9a-ad48-60dc5ea36460 236a3e70-bdcf-4bbc-af07-405aa851c468 5d0e1291-3806-4c05-9782-b532c74d1b5e 235f52da-c79a-4b31-bb13-b92c27dc520e ecbf73b6-2761-4c6c-84cf-c2a1658a8fb1 68809291-444e-4981-903a-2a06697cde51 c74eb5aa-c0f9-4dea-8f91-b8e4d12d56f3 480d3ecf-cb79-4ec6-bd6c-443935d6b973 56ee4ed2-9da5-4e5e-9f1f-251d63d25b49 86c2e181-6361-48f8-bf31-7b403610b5f2 cb47e6ae-b259-44c1-850c-a129e77c9630 4d4cd366-3f6f-4b85-8191-b19a18d8ae37 0cc01365-0925-4a37-97b5-0be9815f44c1 26ab0712-590a-4eb2-8db5-1919a633b972 d4fc84e2-28fc-4c6b-9ddc-982bb980fdeb e15541d0-86b2-4ecb-bfdc-ad5151471121 b27b9d66-4f00-4928-bcec-bdfc0fa1ef15 1f1d70f2-e3c8-4761-b742-92b1dab854bf 2a4b73b6-0746-490f-ba4f-905ae07060ff 0a794677-c3cf-4be7-961f-23d1e3c10b45 fb018fb2-bd08-4dd2-bd98-4210944442cf 783533f0-1450-4a5f-8cb8-0f97499f9754 5e62c379-88ab-43ff-8779-43c2c4c3153a 383202ea-d63e-4bb5-b890-a200611e1696 e2145614-2051-48e5-9adc-4bde883fb2d4 dd25d828-c904-4264-b377-f41bb0e538a1 1911a918-da2d-4b22-bdd1-49f1e43a458c 6c1df169-ef0e-427e-b343-50c297cada47 52f38db9-35a4-444b-b39c-eda8eb3197ab 4357e995-1bef-4811-86e9-22d258e75ecf d2b2f6c0-4ac0-42e9-8eb5-07e2f8fc9caa 6bdc4d9c-edcb-4580-9e4a-d0771b8de610 697097a0-3696-4cdc-8e19-5d59a264ae4e bfae4f4a-f558-4c3a-be8c-9a5be0e6b836 0524209f-c379-4257-97a5-f160b199f611 66143d13-1368-4802-a0aa-92e5fcaf570a 69fb09c5-e261-4d91-ba7c-2479d61b064e 5377383b-43aa-48b0-abb6-e9fb32c01891 7abada94-bc32-463e-a8ca-99f555a87f24 b3a3b8a8-49ef-4f59-bc8b-e7e2ee347df7 16963ddb-055a-44b0-8950-5f72f440e30f 470d7857-71ef-4ccb-b9ca-763225737846 50c71531-2d2c-42a1-b1dd-923226db0b30 52dd818e-5f1c-44c1-835f-cd62514bbe72 4b50b42f-1b54-4ea3-9a34-7279d15439eb 01b87d89-f59c-4b1f-99aa-dbab02421b64 e4df9766-d795-4c5a-8691-8e1627eafe3f aa5c8c77-5213-462e-bdda-6704153d03ba 48465624-bdd9-4c5e-b340-d95192b4f334 6654e840-f15a-4fa7-9582-4f118807c739 9dd275bb-1840-41a8-9dc1-71975866075c 6795a540-fb0d-4ea7-aeb9-196892fd9151 743f70bf-578e-40ad-808b-081ac9d4eac6 a3a130fa-7d24-4e61-b3b3-d88ecf626325 9f03f5dc-5fc6-4175-9d02-c21253131a2f 89cf1324-e02c-40e5-bef3-85d36505059f f79d9abe-025e-4773-ad44-e1ea5aeb1b92 83a1cd86-a8f3-4552-bce7-534ce885a72f 8621d19d-65d7-4087-a099-2577d20e308e b21f4966-b060-4bf5-b24b-f9d4cfd806c5 fa068980-bda0-446e-846f-f064aaa6f217 a988e5b8-7bf8-407d-9211-cdb33ee6fb60 c02ed1d5-039c-42a5-8a65-300d37e317ef a1d6e9a7-c4eb-4782-afec-81ae441cfe1f 59c32d6d-d417-47e6-b8a7-be8dbb557b07 531dc56a-14a9-444f-b071-0ff07c7cf0f2 848e89ff-7a13-4852-8c58-1ea88605b1ec 6735b300-58d4-4437-bdf1-317caf4752d7 68c16566-947d-43a3-83a6-f0b0c99f91d5 a38b9d91-cf35-4f38-80b0-42690e625788 bc9de72c-4647-4fd8-864d-e5aa60a8df12 ea7a48c3-dbb1-43ae-9076-925e42d41c42 b8c8c20f-0b0e-4a8e-90c3-ec6de377f634 a2f0c7b8-d457-4614-8a86-0461e8b4c80f bc573c4e-cc72-4508-8c08-f84d8c2790ae e766756c-1bdb-44a9-bd29-d00e28420e31 b58b0fe0-a190-4349-9aa7-f8d73827feab b7536bda-3ff2-422b-8755-b8f697750072 823ef7a7-5111-4a7d-adfd-49f6ed289b6f 3bc337c2-6041-4977-9ceb-eb843e13e8d4 16047160-40c8-4e24-9d2a-1e78200ebec5 c84b923b-2bcd-471c-869b-43d88e1b2ca3 629e7919-4b36-4743-800e-670f8b708775 422204bf-4fb1-4689-9334-a1e186deac9f 8678ba2d-b6cd-4a75-ac76-31e416c5fa78 9a69e78f-5aaa-4a13-a78c-fd3b8c596bd2 730ddb6b-b790-422f-bead-b1f25a31afa2 c12137b2-268d-4254-8739-2d5aabe2adee ad7d5cc1-45ff-4583-b68b-0706d2662515 e8f42f16-8b1c-42d8-81c8-267b117f07aa 501b4d98-1a46-490d-904d-c7004de231d3 5abe4986-6079-4c5a-b02c-3d93b2a32243 e1e1eff7-b722-4128-8816-5d98d55f9053 f39fecdd-4d96-4721-b4c5-cf73961dc9f0 fc458051-ed26-4522-98b9-1b20bf6b7b20 74e39709-305a-4a34-9a9f-f4c15075c6d4 be361238-0be7-4288-ad53-4df9b95703d1 cbe7c6aa-f9bc-4036-9ddf-b57ea88265d2 8b4a0a28-9407-4579-9875-accb20b05ade 89b541b1-aced-4407-b3c8-d1a99ad31639 82d57e32-71bf-4e6b-acf4-67c8496ca425 26dc80e6-1b9c-4b4a-b7cb-d3348140f7a5 fb4b0289-be6b-49d1-be78-dd77729e0ff7 cd323284-5338-4616-8d89-4fc642fba012 4f7db4ab-eb81-4f95-a63f-0523777af7b3 abd17601-0f71-4249-a9bd-63226728c595 5c7ac8ca-5824-4944-a681-e00c93d44a54 17cffbc9-eacc-4876-9363-60a064c63838 02b9f606-d40a-49c5-96d1-1d08fca0e3f4 b004dcf9-b2af-4607-87e1-c3d86d964538 b37d144d-d494-41ba-89da-bd259b7b32ce 5d568d80-cea8-478c-a6c0-37f04c6943e0 35360abd-2d0b-4a23-b42e-d0aa6ba311d2 0e161792-7e39-47f6-9dc2-3fec1a152c72 2e0cb79a-7dcd-44a2-bf83-c007df99c098 27c112db-4044-437c-863b-cd3f7e57de33 dda0d719-4508-4355-b5aa-76522b10daa8 76dd96e9-e485-4659-9267-890c8132dfca 50db74ce-f91c-4ee7-bff4-15f2c207d60c 3460cbc2-db09-4219-a95d-cff6dbe56bb1 29a4b85e-c7db-4265-bd3e-a7de81f7fd3d d9e4c3f0-000b-43ee-9458-e7bc9ebce345 b73d9781-a381-464a-afdc-fea8998cc57e f4eb1828-95de-4353-bb3a-05b66a2b5d34 34c2c9fb-3127-4f73-9773-6ed4c55290fa 92ebb8ba-e534-499d-8bef-25d766a47e0c 28c89109-02bb-45f3-8691-3f699798fbf0 e0c327f5-304a-4f0b-b337-f9eb484b6bce 0a4f5ce4-efcf-4ebf-9a9b-0d5eb1d821e9 0fdb60c2-039c-4b35-ab56-02e639195726 a2832e8f-b215-4844-b183-c16717ac4634 d7288d4e-ae1e-4530-a0fb-524d092d0d54 c960899f-ee85-4dbf-9d98-a924dd3528b1 a55f8edb-ad18-4e61-acca-2f938b063087 c330e96b-ab7c-4f62-9c17-e30126e7013f 855fcbfd-8458-4365-ab07-7e92aa79b1f4 eab01807-71f3-4c1f-92fe-557e9eb6f664 1825dd84-3336-4312-a0c7-484c0602d8e3 76bd6cf0-7344-4945-8e5d-d41cbcdea319 7634b338-dce4-40ea-a739-86272f9fa435 0d56bb6d-7384-473e-940d-1b8cbf701dbc ae2c7852-b565-4e0a-91f1-2983583a7eb4 5d05d95a-9dd6-4613-8782-38cceff2a175 69c3688f-027f-4e5e-a522-354f47117e59 12b75b67-a288-40a6-854d-fd317eaf5a27 aec489f3-dd74-4761-a640-36ff10912fde 2d5353ba-7fdc-4734-8373-9eda50433917 3738f295-e9b8-4a6e-9f2d-63cede4ed8e7 fdd763c8-d614-44cc-91a9-5ea90ec52d16 f8f5eff5-88db-456d-a8ff-cba4b1935988 862f25d9-78de-42d4-b297-ab48154a1c77 3f25efd3-b232-42b8-bc9b-61c14b802b48 060b1373-bd8c-4d1d-83bc-a7e44c03cc5d 006ae9c7-e05c-4a51-abe0-682d9b24003e a507890f-d0da-4e63-a60e-85bf314a49e6 2ce9bedb-43ff-42ff-b564-85f75781ae90 2006de8b-c5a8-43bf-8407-84be743af61e 7bf0c299-2790-484e-aff7-9cb05dcdf19f ae60c2cf-dfb3-44e5-a206-50ee7627bedb 5378424b-b858-4202-b48f-904adbf80b77 ba829323-3a1e-4408-af27-b10490971fcc 25b5b054-f65e-4436-b2fe-a47f09ece577 ec0ada51-dca2-4fd5-94a9-d8b774eb450e cb04e08f-ef94-43b7-b3e5-f4360cac70f3 1d07c1a9-efe6-4e47-b2ab-289877c329cd 9648ab4f-47c6-4210-837f-a35a7e2d6878 15df3ab7-3f8e-4d0e-abd5-d7a42f36560a 61cbe24a-5585-4a7e-9e81-161b587fd5ad dbd96d9a-6fba-4064-8815-03d59c1dac11 1b402e22-cca5-49bd-b0d3-6fe98ab263c6 69c3cfd5-fc0e-42c9-a74a-a8367a0cce53 b39d40ff-f168-4e47-8cf8-29bb3e010e5f d6c25d48-1ec7-4ad6-98bb-5b6d438890a6 ca941e61-d197-43a9-b23f-a036e23b33eb 1685a785-e189-46e8-8346-7b74f13dc7b5 2c524899-be4d-46de-9779-fb1b443b83a5 9a466b38-3e05-483e-b6a5-f7fd336d2ca6 0b3cfcad-92d0-4b01-9a98-e9bb94fb6ed3 09c7e563-4789-41a2-89a4-3a6805b0f3cf 9e75f3d7-4d3a-40da-af0f-c3db9dabf8a4 a16ec91a-7d1d-4a64-8cc5-d5c008c7d6db 234385a9-75d6-482e-b248-a3ca29dba597 2007642e-8d4a-4b07-9b87-ea76dbc466f9 96fac9da-23cc-4493-b487-134d78ff8d57 2789e140-d2a4-4d93-a668-a5ff55e26515 37282cb5-753e-429a-8af7-d87746efe88b c16a1f44-4b26-4ca7-97d8-c595d64b380c 1b378f40-58fd-4f01-a92d-730bcdf54e08 aff05083-3cfd-429c-939d-9c1b54078b02 8f950c03-1693-4895-b222-260fe6250c46 0a8e867c-cf26-40a8-859e-59f8197fe7ec 387ee9a4-0406-4765-a8e3-0c254ca1cc15 7b08ef4a-9a3a-43d1-af4e-8918d9473a2c 2cadf1a1-f52d-46a0-a2bf-b456254e1d62 66805d50-d259-483a-9936-6acff7b10f3d 3d0c8e61-1b8f-42e2-b7cb-b7f5c7c6c4ac df238837-751b-42cb-8ff9-e229ff8d41e0 4ef66316-35c2-44b4-9096-8ba3c134be1d 8a981b14-f1c5-4db9-91bc-e614504a4941 3f95e408-88bd-4d39-b0c1-a6f1b03fe6ab 07e8568c-9306-4769-9edd-e0af84a5da3f c70f8259-3839-4bc3-9a57-c837434fd347 1c5091bc-cd9c-4351-aa32-d18130a35a89 8a54a237-6b25-4958-8d5c-746f1b775971 e09b219b-1a01-4692-b109-e159490a701c f1f44fa9-e5cd-45d1-a0c7-411378c7569c e12b4b18-95c0-4d48-bd2d-c0b0dbd7dc09 501623bf-1380-44e7-ba35-1c597ce5169d 4ecedec8-f467-4449-8078-accdae17c483 3c89e4de-80e8-4ffb-a0c5-fc08563a4b09 07b6aa54-004f-4b4c-862e-f8fad31f2cc4 2509f703-7003-43eb-ac1e-d1a3588e587e 5b20fc3b-a705-4fc7-9a68-108ee44c20c8 497bdb02-44fd-4479-874d-14008f454377 e6917453-6e5e-400c-9a3f-ff4c78b55d3a e242facb-e6bc-40c9-bd32-3647a35d2813 0a426583-959d-4577-b44b-2ad2244058c4 e09c8526-07fc-4627-82d8-c1699dc8ec36 b94ec2a3-a3e3-4ceb-8f37-2644dd1dc156 13f4241f-3df1-452b-93ee-dfb2be49b3f7 ca43023f-442e-4d09-bc32-827955400849 985fa5db-6cd8-4642-adfc-68d19c2310df 4fd5ce66-9c96-4c21-a435-3c3077ac696e 28385b2e-89b5-495a-b49d-1fc070105f34 80014ef3-5a6b-4699-a4b7-4f2c9f3d6ec1 242c9dcb-4e35-4be8-b253-85afb7995098 505833f7-fa31-4a1d-b9a4-234893d04e9b 4542ebae-211c-497d-91eb-eda7ad9bc07f 47efce3b-9e52-43d9-9372-168bd210b118 f0226113-ea16-42db-bd07-ea68d31d6036 6d367f33-3c16-4e43-9a9e-26246bfeb340 8f599ddf-f49c-4f19-950a-650645ee0a68 b032896c-85f5-4d9f-806b-fdba3a6f76ad 6b53fd71-94a9-4c98-9853-8e2229f7b9f9 7614d741-4ea2-4037-9f14-2a63a9b503bd 061ae668-bf91-45ce-bba1-093912d0cfb0 77051615-19c3-4cf4-8aac-dd46504bac35 86d8e497-fec8-4bee-9a25-529147d956e1 e34f9d17-b962-4a2c-8553-6c59b2c438d9 160b0478-6549-434a-855b-3a8e636e324f fb8a7925-df2d-4752-b24a-46112285ae69 3890a4c2-d128-4c7e-ae51-667408ac8fe7 6443f8e2-f4f3-47e6-90c2-9234022cbe2d f886ae37-30f3-4f73-bb8c-d975ce5adb00 5dcbb36e-cd77-4cad-9544-81ca235c44ef 968b30ae-4dba-47ae-a7bf-120e291ac782 1a3dc245-2624-40a7-bd64-0d179d8cc5a0 4026ae96-b605-46db-a070-88f9db4a5555 249c4fe8-371d-437d-89bb-4126ff836b02 6582912c-efb9-4ea5-8fc8-2816e5c88cd6 bffe8ba8-f549-4ee7-8497-f74e39c241ae 9cba72ee-9e7a-4d57-a57e-5caa76f2122b 1c063474-432f-417d-9f68-347670e8e24f 8ce02629-68e4-4fd5-93d0-66b6381d2607 0e2823fe-4cce-468d-99ce-a16d7c3aa4bd 70d87074-0a0a-4d85-8839-462c951320d1 c4cf895e-254e-45ba-b414-9860b08519ee 0a592cfe-cf68-4c7e-a8b5-43a5621b3738 6b4f28bd-5dc8-4311-84dc-774301379a23 459e0d1d-bb6d-45a6-bfb7-e5e899be9bfb 1dd9cdb3-5734-4c19-98aa-f0863736ea84 6e8aec44-029c-4582-94f7-4c49c366f819 e1382c5a-0250-46cc-beec-e9cb73b8ef66 0ee24a5e-5123-43b0-9ecb-c8d20220bf8d c9251e82-3e1f-4b8b-a833-1cde9dcd092c b314877c-5ddc-4bb6-99ad-fad3e71921ba 0e6cf26a-3c74-460b-b284-a4b34188d8f7 48588b76-4cef-4699-9400-c0495fb0ded3 e9774191-1f24-490c-aace-d134f4cac49e f526f77f-1b9f-4896-9e6e-ea8bef726072 5e09aa21-e2d6-4b49-9c23-9d64c834b7db 8774c94d-2adc-43e1-86d9-37df11b53538 3df6f486-a144-4f89-a2a5-d8a0677518c3 226ddde1-84e6-472f-b271-1ddfca3d53a8 0746a6e5-617a-41b9-a64a-f8f5558e8247 52ccc726-03ef-4bba-b9c4-1e33aa62a3f8 67f7fef3-4d94-43c9-9c27-bd42de0dd1ff ccddf322-ec76-433e-aa72-43a363a4fa67 078f6b99-f6c0-4240-988d-73162fc4967c 54cabd34-a99c-44f2-bb77-d01befcf69a7 31b7cd73-5969-4a6c-bb13-e4fb44bd098d c129908d-1481-4606-b982-25b65c273a34 09f4a043-fac7-48c2-bf53-1324c8b4514e 5b3aea2d-f6e0-4e69-ba9a-385ca35278e6 ba48410b-f92d-4fa9-95e3-6b6f3f42debf 68fb06dc-8263-4f44-a88c-e71df5029f77 91edbd1d-ddc7-480e-9903-f7db93b05c77 b0049c12-bff8-429a-b709-c7cf1681da94 af882b40-e2e8-46df-9572-6e455a556d89 020dfee2-8c91-4277-9fae-4b0b7bbf453c 795403ac-3f53-4d69-9a0a-42ea8717cb24 6b4f542c-0f13-4b62-8cd0-d2d420aba0d3 49546c85-22ce-44dd-97cc-d24f5afc2c67 34c233de-dbac-4a33-97a8-b6ce235bb212 59283b25-1eed-4a1f-8b01-bf3f52c617f4 0586ac4e-e833-4575-8644-87ca67ce6486 65746753-7da0-4764-8759-64e190b64477 bc7b83dd-bf28-4678-97d3-8993a385166f bb34d28d-c5fe-4085-a110-f6d320a23675 780a8686-b938-4ad5-a425-5c4f798861db 6a35813b-2bf3-4536-b536-157801096a9f e866313a-ae34-42f6-9b25-dfc12526ba3b c021fe16-8457-4ba2-8256-5026af3d4ebf a0764a20-bc20-4e05-8be4-59c771dc6226 77729001-228c-489c-862a-148f553f0005 59fced11-7f29-4d47-b351-59b8fa3cb833 55e643e0-7abf-4e0b-bd00-96e1eb45e715 12802303-d928-498d-9d83-06bc8ab3fac1 164374cc-2c71-4b0a-9a3a-1026cef20655 426fa266-c890-40c2-b56a-7afcbd263680 e7a39842-ac6f-4237-ac65-d90e7f138b34 306cda79-9f08-4244-8fbe-8a80d2ff2492 4e53d0fe-b614-4724-9094-f710886952f4 1cbeee40-cd22-452e-95c8-ff5584f94057 b8df5c05-b6bf-4430-abaa-978bc92f4c3c 2915c21c-41ca-4ba2-9cc7-71bf40907aad 00915f92-d838-410c-8e98-9023cafcc2ee 5d6ae917-12db-4d39-9f42-b0e6b092faad e4317800-9496-429c-8e52-5b8ab02fc3b4 3f3109ba-9537-4208-98c6-b8d761c33774 01211722-3ac1-4163-b0dd-5eafc38b17dd 5c5a4545-0ffa-48ef-901b-584bba14fcb3 bd57c56a-79d7-4549-ab32-c71159e79717 7281a86b-ff82-4a68-a75b-065450fc9bc0 0e1077f3-4cda-4391-b62e-23e575a3191a 14aae6e7-ac2a-4d84-9617-39db98e0103e 122ccfa9-89cd-48dc-a14b-e1ebbd1d6b5b a7c20914-56f0-44e7-9379-0a6d26ee4657 099f746d-7818-4913-ad20-7c914df2793f a29b0680-14e2-4be8-b683-23e4140bca34 0763f953-4ce8-4ca0-bfd5-bde67b4b2af3 1cbc079f-0697-4281-a0b9-1a54998fd642 c7c1e54e-1c80-4ad8-8c12-79024b8f3ab1 26773016-4082-40a4-8d0b-6cb7d42d4328 32fe36cc-7d8c-441a-9d43-6499e88f84b2 b512c676-942f-467d-af34-47dd38e521b9 c8224f9a-e46f-4a03-a94d-59af636e0db0 a55ce104-5648-4c98-9a76-fa3a2c5293e3 7aa93f0b-1b5e-46f1-b3e6-57835cec0812 6fb30f1f-d529-4a0c-aced-15b00b191e18 6e849d7c-4f6c-42b9-9ba9-c21a66c2d0d0 41508d05-6709-4078-b4d8-cab552a206f0 512830eb-d67e-4b01-a3e9-9a0bbc7de5c8 0778faea-f662-4121-866e-8643169a4027 668e6d01-a0ca-4e3b-9c34-c891d082d6ae e72c2687-e91a-4f64-8bfc-b98a796d6e8e bda0097f-32ab-416d-b579-5494010f4e7c 8c73744e-7cb9-4ba1-85f3-a9d80174ad85 e8ac6c83-93da-4aa1-955a-e4d48fa1c97a 41db4a7e-f2a4-481f-b8cb-986cb4c4d917 0acab8dd-2696-4ca2-8644-6eb54e277e31 01529a14-d1d5-4ad8-9b48-1cc5ed48b661 9989af8d-7609-4533-a189-6705482f9d6f 9200b2b2-8a9f-4dca-b9f9-97f006afeb6c acf30457-9778-4842-84c4-bf5c17875833 f97fb073-08cd-4d9c-9110-93e0d10965d5 1ef54e88-0df5-4de0-9c7c-929ff3c063a2 ea9900c1-a85f-4fa4-86c6-e47601a98b8e 58b55785-5fdd-4c0d-b15b-15d65abff761 0a2d565d-53c8-4de4-9b02-c761b2119fcc f788266a-3652-470f-8b6f-1a75dbaa786d b03cf4c1-9d27-4712-8676-6245591c4011 d004889e-4090-463c-b413-d31ce2587f86 0579ad3a-c396-44c1-99d5-f3c9f47cb543 5d90f808-9b8b-498a-b0b3-bedd4617a980 5bbec214-8115-4d29-8e7b-cf68f4abf24e 7b31e714-abc5-450a-835e-189d6b88625c d1f9ad80-f141-4b33-b9c1-f44aee320771 ff33f2f6-dd09-4a85-a1fa-301d91cb17d6 2d8c49bb-a3ab-41d2-91ad-a959bec75ffe b6b8b5b2-16a7-4091-87c8-d8d6d96db1f3 44a8ffc1-2e74-47ab-8498-2fe61fb7d2e1 a867067e-819c-4bc9-9e6c-ef77ab689a30 9286c925-9559-4d0d-9780-6293f044f3b4 ebc151ec-4407-4b61-9f72-936d540370a7 b398fcf1-36c4-450b-845e-50f061ac9104 ee834ec4-d0f9-4fd1-bc7a-9e37fcc435ff 515982b1-c475-41e2-ab22-3e2989309091 0745839f-9881-40ac-a71e-0e9b9a883140 b2291ccd-c4bb-4b98-9c43-b003118c579b b829af71-523e-406f-9e8a-7aa66bb0fb8d 95a90ec1-6c8b-431d-a149-231a3bedf1f5 915fab44-a9f9-45a1-a4de-76340cf84d7f 0d306cea-b6de-4869-83f1-aba1c7469b31 432fd813-a9eb-414d-91b8-5f483e772faa 0bf21fe9-9915-45ce-aa03-3b687aff81f1 f0815505-5144-4b6d-a339-a483d85b43d0 d5b551d2-4fcc-40db-98ed-e0048c7aa827 71eb52f2-5d76-4c4a-a76f-7432b5aa6b0f d22f4f21-5b6c-41c2-a9d9-1554fb4b0977 a6325153-8d65-4886-bb44-2f90fbe204d7 949ee16f-8011-4a55-8001-f89e7916c28c 8ba433c8-2bb6-4531-a2f6-1c0e9cecca62 b4594ffd-9a65-4e17-a5f3-70eb44b9d157 9d03c39f-5ff0-47e4-8b9f-55ec7480c26a a7bb1a7a-5259-4b8a-8ff4-9a53c8274548 f26f8854-92c8-40f8-96a1-e7262f8d42fb 7cae6b51-8987-4660-bf70-f458ad7fff80 b961fa3d-93cd-4dea-ad26-16e772e983bd 907d9a30-4c04-4fcd-84af-9be629d120dc 7f46be19-4376-4e4c-8337-a44950979ced b4c7498d-866a-4fac-84be-da23c0bed27e 2b7861d7-f28e-42ce-84d7-d94dfc65745e 4ece09d6-c089-46c7-bd55-b6af811b9525 4efb1acf-b40a-4f12-9c3e-a4403db1f242 50bbb887-fc6b-46ac-9353-8431964e0d26 227c983c-c3d8-439b-85f5-64a1afaaaca5 2b7dfe8a-a75c-4ae2-9f14-2c281f6a6312 ada2cb1e-a8c9-4b19-af99-8faa01560a94 66cfddbf-38ba-4a3b-8e5a-c93ab8cf0640 b911d0b9-46f3-4bd2-bf46-81682697b1d1 752d655e-3d93-4114-90b2-b206119139b5 d6a843a9-d487-4d73-8183-041bea93d6ec 20cd00c5-7d1d-4ee1-87fe-9c8a205185b9 1f5b3c7f-b377-42c3-9b4d-e93f0e35dcd2 39f1f6ec-f8c0-4781-9e2d-719cff13ca03 150283b3-4090-4fe6-9ae6-f42072bb66b3 65af02a7-5f3e-4132-95da-64840b29848f 79ab8f20-d017-441e-b42f-645cbcb9ff2d e0ba11ad-8987-453e-8102-9d4ad6f9a42b f372eb4d-a88d-43a5-a980-8cfc2b87c49e 485887d0-bac6-4c46-9090-47abc7b5e168 ea417603-43cf-4417-af76-01b7565e8e56 e82bfc29-9607-48cc-9426-3a9a60320135 98975613-7cd6-486c-ba84-50aa72bc0b3f b2ba209d-03e1-45ff-aaf2-fdcc3a795dd1 e61f8b06-0fde-4fe2-ac3c-f3eeaf7d78b8 54a83947-2dfe-4e8b-80b7-f78206fd24d5 5c92370f-db5f-4e75-9ddd-b59a0ef54462 aa7666ca-149c-4eb5-957a-a52547a7c1f3 ae0455f3-7355-4a5e-bdce-73eaf8f7ad25 4a451f3e-00ef-466b-b648-46f727c282c5 bdbf6968-f10c-4f41-8de6-a03bb7853626 a4ec9567-e144-4c9b-871d-63cbf27f9297 9951752f-96b9-4d3d-ae94-8ca63c7fb3f4 89985f6b-3d80-49be-992a-221d2e72e3dd 95d6a404-59af-44e6-a54c-1405e221563c ab6aa034-6acb-4b5c-886f-838c139a58f5 ae1cb6f5-6451-4942-94a4-b6521bd077db a6b11f0b-f1b9-44ef-8c48-27d5f872a431 3f15f937-71b3-455d-8b01-fe5bd1f0fd3c 53b1c18c-672b-4490-b41d-9214b8ff0b90 60960e28-eab8-4559-a4c7-ff4df94fcc67 d20e81d6-1b68-4436-a423-47dcc722a7a2 7a341a64-b652-414c-8dfe-754be595d220 380d56bf-5ae1-4ea7-a3e4-1ac5a83598df 66e6d4af-c0e3-43fb-8a99-eaf61653af9b e7e7db96-fa00-4185-a4a0-747f5790a4f6 a1121cb7-cc0b-448e-bc57-311753581c40 89c9e622-f049-445c-9efa-9efbecda01c9 5bf81a02-01c2-4dd1-8249-1eb56dc6c42d 79303244-fc3b-4180-a3b4-8e9b14e6c7c3 bf2f6975-d317-4426-8f7d-9f21db458fc3 f97ca77b-97c7-4b24-997d-d74bebf6e6eb f6d6e2a8-0ba3-4aaf-b305-810f3f9139ff 4177bd86-0889-44d9-87b5-2a4c48fae0d6 44c9c2a4-e9f9-4325-8d89-bf692da77144 395c93af-fa7b-46a0-ade4-2762ed7bac5a 5ba83947-de5a-4f71-81c8-05576c03f6ec c94c4b81-4c2a-44e0-a5cf-f8c5603228f7 a51ae37e-40b0-4a16-aa56-8be52f9217f2 0aab6114-edb7-4948-890d-78040470c80b fb5eccb1-de3d-4ae3-b7c3-07cf769c2337 9791a33b-ddf3-46e5-a029-f3727f6f2094 aec610bf-ffb0-4e1a-b3a1-cf8e1b37ea33 c7410ff2-5b35-463c-80e3-6d261d5d1016 3c414b52-7443-4c9a-b633-1071c81b3ae2 01115abb-b34e-4d90-802e-e5526b201ac5 3ed3d17e-9f7e-4fec-b69d-194bc3c26a24 84e5a2eb-74f0-403c-b6e9-41894ed78a3e 4113e656-d61d-4f4e-b953-3bfa4aa6b9e8 4fc6df21-9bf2-4ce2-abc5-158d3dfc2ece da858f06-cc8a-4673-bf95-9064e4e0c149 f20231a0-6cc4-470f-be47-12c2f94e3803 dce50447-ae67-4c4f-bef0-5fd5836d7313 dd1f709e-0008-4911-ad94-b2711cfeb454 f43ee7dc-e4bf-44e8-a23e-38ad4bcce692 a4c59aea-f31d-430d-b76b-2c567891b7fe 650097e6-e6a2-4a5c-a0e9-a783ef76c2de 0d9e0567-3eb8-40a8-a195-bd2eee652996 dd5d6764-e810-48e0-9c2c-687818153202 0e55bde7-d63a-4e9e-a2f1-792117ffc158 4f2e0939-e297-492c-af14-cdc9a2a99b6d 582cdf5b-696b-49f8-97e6-77722aa0e1f6 f21ff0f2-911f-4224-b00c-c6dcce962f22 122ec6d0-098e-43c2-b75c-86c9874d26f4 55d0a427-8970-4f8f-890d-bfef23260c52 88c5369d-fe4a-4ec1-8157-21bfdd12b315 6662045a-9a14-41e0-b12f-1931a77760fd 9e628cd5-7a98-4474-b480-8a4df5d1c681 8da0f303-a848-4c14-bf2d-84e6b3eed62e 237e0400-8912-412c-9810-92f9f9a44b7c bb664702-6fa2-44ff-ba75-029d665c5579 95b5ebd1-9d2c-4372-be46-7a1f50ba51cc 0b5b38c3-2ab8-4f02-8428-a9f0a7633f6d 5335fd8b-66ec-481f-9c68-9f3e44a9f59a 1205d882-62a4-4fef-af70-81446dfe6900 77bcd744-dad7-4537-a3ad-722d41cbc9d2 0fac87b7-d73b-4922-91bb-62e6c3120bbc 16f5fe5c-8322-44ae-915e-3b1080c7391a 8667e589-894e-4a51-bd2b-9cc7bacc5131 b46c996d-085b-433c-b8cd-26ad8904c5f0 b6bc0583-6b19-45d9-9ce7-d459383231ef d00c8763-3758-44ff-ab37-ae8a74733c97 dd9f0ba1-f810-44a9-8d3d-a1e76e4cf926 17832297-fc3c-432c-bb2a-3279e1b7726a 9de48415-37db-43f8-a621-0cb0d8890f5b 36e72920-4dfe-4889-840c-55b5dc2bdcfc a6a657af-6624-4929-99dd-c16b98678a92 79e3ea03-f33e-4456-93c5-23739416770b 7e182516-f30b-4ed3-b50f-e3fb7939b204 2b32f1cf-2b7b-488b-8737-03be130cf5a1 1a3fc966-41b2-4bd1-b546-b10a9de517d9 46363175-8458-4f21-bf6f-9d578653b5cc baf40f57-89c9-4565-89a3-bf924ec2ba03 d6a6e768-bc6a-46b4-bdcc-875bab333bc2 ac54253d-281f-414d-9f6d-c8941e725905 7c95a135-53ee-4e83-923b-ae617dc9b588 d94ab25e-58cf-4fb3-8867-4b4e314d07bd 30668cd5-62eb-48ab-99f8-5868746b00db a5393c72-e6a8-4442-8bb0-2bd86d9c1635 517664e8-7e69-4356-8a7b-4da283161e82 d6ab3c08-473d-40d4-8fcf-bb111748b45f aa221d9e-d67e-4acc-a411-bcb2a0a1f8d2 42a377cd-9717-4810-8c91-70b6c7837538 73ba6746-ad6a-4fc2-b526-705f6d99b872 987f4fa1-266b-4348-a313-4f689f19f06f 088e0946-6d1a-4780-9a23-299ebde855f9 ad1fcbb0-e23f-457d-be35-b8f928f8e0a3 77e75cd7-692c-4134-80ff-c450ecc1cdbc 3342933c-2f36-420a-9b88-ed007f5ae3bc 5881389f-0826-4bc3-88c6-0f98ce1b15ca 68c1ba2c-caa1-4a98-9187-2d4e1a2ac9b3 0ef4db05-5135-404a-8ac4-27515f1dd341 28fdb2ea-99ad-4bb4-a15f-cbf8734d558d aab8fceb-0411-4e51-a667-a9b2a9c556f3 ea0fc3ab-8d06-4407-9c4a-4f0e3b4b5248 7fdf6f17-622a-403c-a389-5e48dc577565 23d6b4c5-7495-42f4-a43b-ade53558ae6a 665aa794-2a22-49a2-b0b3-7c47260cc9c3 febe0423-a828-4ab2-97f0-be0e83bf07ae 19f9ac68-4854-4542-b125-535660f6f12a 31aac3c8-82a7-40cc-b961-945c1bfd8ca1 eb1b3644-3ac1-48df-acbc-acac8ea4de6d fe889860-a8fc-4ee1-a924-a14d008ba409 a96ed55b-c911-4cca-88b2-54593aae3d96 2900fb1e-1c62-4de3-b280-57e9b1f58e5a e0ce992b-f471-42fc-b607-fac49f942e4d 73009f97-5b3c-4938-a73b-58e58c8a3e0a 491e5581-52e1-4085-bfcb-e94bdfff1ac8 1caf2348-3369-4a5f-9fef-ae23be44f40d a6596686-1874-4446-b0e8-06dce99da2a9 00f53a3a-2e98-43c6-8c44-b309d94dbc8c 1f051820-dce7-45b2-bc05-d56ac3a7f1c9 efc7c927-deda-4d6a-b580-8924b2f36d6c 5a4a6f5b-7281-4e15-b832-1d826df1eecc 89796846-7833-4fc9-bd27-61088da0fa42 1a7f8f35-7141-4f36-9913-b24dcee0e9f1 a4363263-89b0-4f69-935f-c3fe52d46641 8cbdebd3-d431-4f28-973e-b4df66f16e09 e7370e87-5280-450f-8189-defaaa403144 ce6954a3-b363-484c-84b1-433ae44b1c54 7c86c9cb-73f0-48d5-ae7a-1918387176e4 6ac6525b-25ee-4517-8558-545f2cad3278 999c7306-b138-4523-9dc3-3bd9472c161e e826f02c-f2ce-4f9f-a7a5-831d3c87379c e9868af9-a4c6-4596-b9e0-73f50237f304 1f8a6773-fb73-4ae0-8b42-c9325666c725 5f25ebe3-ee6f-4847-b56b-a2b8d9c26de6 bec8e6fb-581e-4a9b-828e-7418d9debaa9 f3fdc02e-9cbd-4aec-b72c-e4848ef838c2 8ef21dab-f511-4a84-981f-d25892b0aa86 ef40378d-6a18-4a0d-915c-dbba87c21584 868ade91-807a-4635-83ed-48ca15c39308 052afe57-8a2c-400d-9e47-bb3847e96a6e 7f3b5a78-e0b5-4f9f-8c98-a98c7873fbd2 b46d5ed9-d941-4a14-9987-fc8c69ee3268 b944d683-4596-42c7-9f97-3413ead7aef8 79eceb8c-6731-447c-b993-d09acdadee63 6c4e1921-c802-4f8a-a745-d6e8dc821e50 44f568d6-c233-4abd-b9b7-317960680c46 cab0f8c2-87ba-41b4-9d31-61fb45d59037 1a2b6b3e-d7a7-4246-8cf0-e1fab82ac3cd a1caeb97-bcbf-416b-b121-e6842f5439af c4596021-207d-455f-bfd3-94f073e8f995 2f5385a1-dd35-44fb-bc10-1d6d6cd81830 1c0dfc7f-78e4-4abe-98c5-9f2a25be6836 21fdf1d9-54fc-4484-b90f-317daa55ade2 7a5c984d-c0f6-47fa-8d02-0ed96925f58b 2ba0841d-3b7f-4c64-93be-3242f5e1c635 8f165243-dc12-4d99-83a6-181c54eded38 d70ca1ef-4cd0-4204-814f-51518f44fb16 39970fe6-c8b3-408a-b8f8-78b996a0a5e4 949d90de-bc6e-45d8-9565-0761177720b0 a44b12cd-d9aa-41f2-819c-8af50fde66c6 ca81c07b-361f-4f67-b559-4246c32b3915 f416e96c-9eb5-4a2b-97b1-acecbf246204 53892194-f84d-48d4-a024-81ac33db8c29 9f996a78-6df8-43f4-8c61-a397e19d8946 7562443a-f0f7-4caf-aadd-efa9865ed996 f27b79e0-6d40-4621-bb61-0829bb806090 c069e519-47a3-4ceb-8c2b-e05a9a1adfc3 62870d49-ae16-4189-88df-31525f6ced2c 46c40378-f635-4dc0-b459-f774cfe1cabd d864b3c3-e086-4c9e-8d05-5eed4adeb96c fa7d6ace-6ddf-47a3-a68a-6eaedf303574 675c5f0d-64cc-4324-8bbe-c768c5ec3230 f5d73c81-bdec-43ab-8f36-97628a475b20 0126cab3-7477-42cc-b40d-50ddb2bff214 d40c353b-aada-415f-a300-182b0d3f1e8d 515e693b-5dfe-416b-a906-c85fa44aa32a 3a351a4b-80dd-4fcd-b069-d5544f49563b 09cec95e-a06f-4e89-b129-b1fa472625c5 84645deb-7d42-49ce-9899-55ec6cdeec59 c918d2cb-94e4-494f-b6c2-9413357ee314 4acb831f-6ea9-4272-8daf-3f4cd9e5a0dc 3cf81e79-035f-4c78-92cc-927af2e50f41 8f0b787b-acd5-427e-a365-b7c612c952ae 14774d80-08a4-49f9-b5de-3b4204943c88 923c2a47-cb62-459d-9f64-8440b83687f6 ce1dc566-ba5a-444d-b4d6-fa1aae4d48fd 9a5e9a6f-1742-4507-aba7-3362b3f5f906 80974e07-218d-4408-ac67-c6831f71767c 3b1a88b3-f9fd-4c84-ac47-adffb4004475 258be778-eb3a-4f59-9d55-25a665b630d2 e96d2a73-56c2-4903-930b-3b6c8a1eca13 5b323211-09b7-45c7-a7c7-1ea9809bca59 28c3fafe-b3d1-44b7-976e-9b7382c29961 287d37fd-92d6-4049-b35a-874934cb1d8b 577080da-d105-4bf7-b4d7-130741bf8c0f 0dee1754-3551-414e-9fb2-43d86d9cf4c5 b551b5bd-e223-400d-af27-a1c4f27d6cb1 30c803d9-7c3d-4787-8c74-2df6b73376c0 77ec9cc0-6eaf-4564-b06a-181f659fd7e0 2008a5d2-72bb-4570-8121-97768c137f63 a2f1c492-f82a-4981-af22-194db9a7b492 f7637c99-f747-40e7-8ff7-03239faf8cd1 d760b472-0f01-4b6a-88df-81378d193bbc 2e641ea1-1b53-4edd-984e-699aab0f1f35 87670c4d-66bc-4a6c-b6e7-2680def5bdfc f0ed77c2-e55f-46c6-a9b8-363a93d8fc40 7112b4cf-7e68-4ede-8106-e790ab72cad0 223793f8-b627-442c-ba3a-907b4cd6977c 49dad8a3-48a3-4917-b80e-cc317ac8a91d 7f961800-3e0d-4e07-af37-23ea5b3a3abb 950f7f1b-baeb-4387-8b11-69949b8b0545 5f8edc71-39fd-4d8c-aa15-b1872f5bf43e 1ca0f455-8e46-4f81-ab19-18ef1e137067 156ec8ac-fde0-4dab-8734-90b0b691b6ef 861c3b9c-c08f-4fbc-a895-05d771b9537f 8490ca05-5c21-4eeb-9d38-518996ec4b7c 4b490221-76f3-4a67-a8fd-ad86f4bd3cfc 262a9d3a-854c-4868-9c01-7422591a2387 bf168cd3-5157-40bf-bdf0-1625cfaf4d9d 7fc76be3-e149-44c2-9f1c-425e1e53bfb4 509f65ec-90e5-4783-91a1-c1b23ceab105 c5ed5623-3b9a-43b7-8b96-b3833275b2a2 29b32b2a-3949-4cf8-92f9-08464b0932e2 e8b0a39f-3869-43ab-ab73-4b2e4b0278a1 f27493e5-a802-4ece-9501-0d5902b84501 1a9d31f9-65e4-4c17-af26-d826a5280ff7 eda21f76-994d-4480-947d-06fc89a08d73 816d59c9-1cac-4c21-a4f9-40f8a5c24a3a 97ae1e03-29ad-4653-bb13-867da64fec01 7e31150f-2564-443f-9ad5-41c8fbc2673d 0b56ff4c-0e00-4075-9cdf-00c7a6394d8a 6f4d69ee-c8a2-4d40-9036-c13ff7771bcb 75575459-1a8f-4369-965d-386096591bb6 784e7ef2-559b-4d41-8c53-0cd296ead5cf 99131b34-25ba-4f82-9cb4-d3ca76617b81 cacac9e9-1f1d-4260-b53e-4484f3f9bc86 f46d50b0-c1c9-4139-83ec-ba2d10e86837 401c6e62-ee67-40b4-8393-539eac6e255a d68aa1b4-2467-423b-9020-abca3ac401ac 088b06e3-8948-47af-b6fd-c4c9cb496b9b b72b9b11-41c3-4a79-9903-e66739b3b12b edc80cb3-427a-4545-9f87-d8e0afa88a22 9877e076-5511-4443-8432-ad72f40f619d 63dffa12-06bb-4215-a8f5-8d0ee45db8f3 c0b4d0f9-9128-4e93-95e3-094d923ca639 e145ecf1-d92a-49a2-b291-72f7b9a3fa2e 582a84e7-a6f5-4913-a277-c911a781c907 34ebef2e-2f46-44ae-a82e-da9db156f96f 71bab12c-f054-4bac-a187-ecc0c38bdc2b 154435c7-2d0d-439b-9ada-f06063793b9b 74155869-7245-435a-942e-6dd42a51adc0 6db62c41-fb25-44a1-832f-a623555e21b2 3cb638d2-fef1-45c9-a028-396e2498392a 6f5a3b5e-5d5b-4664-a9aa-7126659157ac 76e61437-348c-40ce-a324-0d4d6659ad26 921ad29e-28d2-4b5c-9b9e-21241a400ea6 e2c70a67-b3bf-4ca4-a2af-b4cbc2014b0a b3073633-6dac-46d3-8bab-6053c7f3f2bc 90c4d252-06e4-40bf-9e33-b1f3720c74a6 b1ebf0c4-2b08-47ab-9c97-1cee12a517f2 74bc463d-546e-4fb8-a069-e890c4efdb53 7518878b-71b7-48a9-b324-dd86d1fd999e a43a507a-c4a0-4377-9f9e-697646ca7180 2d3c5fe2-eb06-4da8-8727-0fd852cc5c00 638b4260-b62e-4a45-aebe-853bfccafe47 80e5362f-1040-4e1f-9f23-c18da02be30b becf7b46-e192-48d8-aff4-443c0b474d6d dc63cef7-76ec-47dc-b21d-2350e9daebc6 8b7a13ba-723b-47a0-a9be-eababe8175da 0e172ff3-224c-4be7-adbe-e8501578c816 c4e50b34-20e5-4357-b3a0-d90b68aeb4f0 7858170a-2931-4f73-9e5c-f4f997d073bd 162ef7de-e0c4-4b35-a85f-5b0e272e9ca8 204be2cf-22c5-4d67-9d52-aeb010320810 621f7b00-0059-4011-b2a3-d769cd46b7e2 2e3d90a9-b177-4e16-bf11-a2d45843e725 5ea6e0e3-0f4e-4158-8974-a5ed8c820c00 6723987b-bb74-4cea-87a8-8acef394e19a bfa5d933-c9df-4ba7-a114-2791c6eee2a3 0a17a012-241e-49f5-b9a8-72fec8417356 35ac57a7-c0d9-45fc-ac41-f368bebe8c76 4410027c-3303-4f6a-ab03-ee62db472c3b 0943bd30-3d92-49ab-b322-b038d52ad5dd a368671d-9665-4fe1-b03e-236c2ef37da8 b5e8caad-e727-4f3c-950f-4488792fe455 7c6eea35-dfa9-48cc-8ff6-1a37db968e86 bdc28540-a41d-4d60-a29c-b13bd5e9d00f b136b2d0-6523-4326-bfe5-33594cc5c304 3efefa8c-4b08-4f67-97c7-05038119183d 44ebcc2e-141e-4f11-88fb-77b5bc121d18 35e7eee8-c3b1-454e-8aa3-c87457af73d2 1973948d-aee8-4d0d-9914-eb380a514368 d8d27efa-8d26-41b4-9a60-063b65c79183 9ababfad-68e9-40ab-9a20-4327046084cc dfe1f6a5-964f-4235-8da9-de8825bda2ca a503e19e-1273-4c72-84af-f5e69ed1cd46 c7cdccef-d629-460d-a28e-e3035e2d252a d8f713d7-07bf-4cfd-ba30-ffc4c85960fa 70652276-6d3f-47dd-a33a-38063af925d2 1fa33ce6-c34d-4485-a954-733fe85a2600 3b9cd88e-d09d-4ca1-9ca9-49e1508599ae d1332d20-23d1-4679-ab69-6c7a271ec285 25e12520-20f6-4ffe-b5ce-a15b794fb78e 597caa2a-c7f6-4703-b66f-a4e6d0c63c08 27507651-2c48-4e86-a53e-2ae7575d83b9 89468806-d543-496f-af09-4f87dd63c63d f79ea047-5dd7-430f-b7f9-055e247108d7 82fda023-054f-4e4a-95c2-d27952364474 8b54c71a-1d5a-4941-b973-7cc9732b47ec fcfdaae0-bf73-4753-a925-23bde29c70a8 f68bf7b6-0534-4d80-a169-45b1d432068a 623d0e88-07e6-4132-a2b1-0597d5874615 0b594b07-6b3e-4fac-9566-f10da6aff42d 96f303a0-04bb-490c-a853-b8209291455e b765e134-9fbc-442c-ab67-548dbde52a18 72fb9b3d-279d-4f17-878d-594712609402 df7a5300-9170-4957-bedf-b69d9b43df8d 2d423c5d-29d2-4420-a482-36feb35f255c b54f5f49-8244-4542-b35d-4f417e2cf159 8af1dcae-577e-40d4-a335-ccc091197b70 7065d272-9624-4756-bb0b-ccc93ecdab42 2c4e8ad5-32ae-4974-9d65-bb83083574ec b4032133-996a-47f0-bcad-916edff550d3 e850886b-3c63-4fa8-b2ce-3d26d612ff43 1b385f9e-f930-43a6-bbcc-fc6481db0713 bd4452a2-4947-4dec-916d-5b559e493eb1 16f501d3-d0b4-4423-ab7d-f737f8273989 6ccd8dc6-5dc8-4683-9e1d-3fe0a72d6157 ab151707-ad55-47f5-a54b-1f6e64f71eb6 110b529c-90fa-4de5-89b3-335757f031f1 c36c64fd-2195-4150-b816-19c501a13099 c8be62e3-d38b-48f1-ac13-9ac93beea2c2 5a872722-5e55-4745-9875-0254dbf5678f bd2392ba-0020-4102-b755-819610dfc4af e967f0d6-52b5-4fe7-a57b-68a8fda618c5 fa7c284c-ff15-41ff-b635-824d719fb291 8f98c295-6454-4d41-8d36-4a1996b6c6a1 babed140-d5d6-47d0-af9d-58bb5bc97425 6f0dfafa-0438-4e40-9045-0c1f9192d91b 0303cae4-1c62-4d55-9399-c0afec06e372 1478cd70-8893-417c-a26b-a23d8d03fa92 03570ff4-72be-4605-bf19-99c09698d9a6 8716b5ac-284e-42a6-b72f-05efb7a8964b 016ed9e8-ef48-4b4f-adfa-2b64f5cb3763 f03ffcf0-8f35-4336-b124-2ef39fa29762 03f12771-857e-4060-bf5c-6ad58d340c7a f1cbe02c-0542-435e-816d-14ae30ba3d4f 961567bb-5154-49bc-85c7-b555f12cfbee fd9bcdcb-a4aa-4907-a94f-7415f028a676 aed6b6a6-590b-495e-99a3-a9e693c5c79c 93ae9468-155c-478a-ad2e-f22670223967 cecce7ec-1166-4d3c-850c-791ab0c632e9 65e0afe0-7798-4363-a3ff-a3659b21e949 4c825ccd-f91b-4c59-bfcd-5c569802cf78 b2a12261-bbdf-4ebd-a6be-896c0d9888c3 e67c8e8b-829b-47a7-8160-00c5160c5a96 f4868a07-4119-4d3c-afcd-6c05cdb4eefa 0c02fa28-68c0-4ca6-9290-aaecd8faca9b 27128842-b9f8-4c14-a54b-e80ee13cfb42 e8501500-262c-48c4-918d-930881f6befb f06dd88b-1147-4468-a84f-642f470cda91 87c22aa4-6710-4d18-b5d4-e2332954b95a 7184f795-4f72-4c8f-8fef-4496b3304532 8155716c-427c-4378-af2b-7ab496905cca 254d5923-93f3-45d8-b2b3-df59438e2ceb 8a5e4712-fbba-4117-8d32-6b8232d961f5 a1f63270-388d-4455-b043-9860b3a99b3c 8a2ea0e7-3888-4404-8b88-6e32c80a6863 4378a334-8b3e-48fd-ae25-45b1ccae0691 79501a12-370d-4880-92c8-4f0a4853986e 50fc7740-0176-4171-b64f-a389637af8f6 8e0da51c-9dfa-41d7-b64b-ff7f9ad97a98 84ea584a-d0bf-4779-ab6e-f5d76a6566d9 4d2beaec-bc09-48c4-a5fe-93391f503107 f47fe69e-6216-462f-9534-b5b0a48f26d5 9a9431cb-7331-40ae-9d08-65cef6a510ff 8713d7ae-e271-43d7-8ac7-945dbd7401e2 a51b85a9-db9e-40cd-aa2f-51b9eb0e0067 753e162a-14c7-4940-bd0c-c56d5ec399bc 48e23412-ce38-4bc9-b70b-d85cc81468da fd445e0e-8445-4f82-a02c-cf3f3817e86d 15449c82-ccae-4f04-843b-5277939821e5 ce159e27-3805-49de-b824-2ea8f2202dc0 a77595f9-76b7-4325-a9a9-1c655a30194f eb4ad201-8e50-49e0-a0dc-2c24c017006d 9907b136-4ac6-42f8-a66f-525e0e6764b4 c2ba9097-6800-4334-ab68-fc6aa0b8c9f0 10697c37-3bfe-4ea7-9bd4-a1d33337b08e 58efddd4-9f4d-497a-af06-a9eb3f0acba0 7ebcdbc1-5e11-4ec8-93ae-ec9d5bebe625 a815bc3b-6558-4f49-9ce9-1fc9096a42cf 8a9912f9-23dc-4dc7-be4d-0a616f63ea20 7f59658b-a475-452d-b377-8c10657703fa 352915f7-faa7-47b7-a8b1-e6076f2817fd 23f5a3d7-24b9-4398-9654-751b2f38808a 7efbfae1-139f-4ea8-99e4-e0e04c33814e 2662936e-c092-4fc2-88af-152403b55a40 1a2adcca-5e16-416e-9314-86df94232259 f5c5bf3f-bdb4-4465-85b3-7f7338cf5b3d 0eedb432-59b9-463e-a102-39f6c8b85c92 be3df43c-da44-407e-8a00-61e49d11b48a 7ca3ec02-85c9-4bcd-9760-a7268b20d4ff 4dbfa5b6-544f-427c-8a61-134c0d1a9f7e 163e7dbb-576f-4e50-9e8e-759a56008a82 1112f7e5-2148-40f6-b16d-ac4e56f16990 d8c60ee6-9d6c-49d5-9ae3-338d1e1bc9fb f89d8b8a-73b2-4ae0-a35a-0809febbcc5c d01c1c91-1948-4228-b6ec-fbcc8a50c686 c2f93a7f-2f87-4784-ba4b-c4e86cad92f7 c651f4b3-0e43-49f9-89bc-75e2cf80bb37 00ef443e-0bc1-4aa0-b53e-071e2d72e19b 4b0a7a1c-0fd7-44df-a744-50e599777d63 cdee73e7-deb3-4452-9c60-220f3eda282e 7d1e23a8-26a3-4b18-9e4e-c1f37ba2a910 db598532-6c6b-45c1-ba0e-060385cbd9ae 9069049c-f05c-4a71-bd32-b56c1ed4647d 8b48be98-dc49-41f3-8097-c826f0016377 21ce9145-4c81-4277-a28d-005afb12f411 7d117b33-3acf-48b2-9ffe-832cdc8593ca a62350a9-2f1f-4f47-bc17-a6e347071006 852305ba-96e1-4d47-91da-5ee74648de41 33b207ac-04a7-424b-a4ba-abd5dc410cd8 ec529ff2-c207-4bbf-a6e6-bb669dd437cb f0ba2d91-c3a6-4fd4-aa12-2eafcb1bf5e4 d38e5edc-a408-40f6-a7c7-d53007a4d8d8 3b8de3d8-0dde-411f-a48a-52b8564ddb3d fe167a98-bd25-4739-b860-17de26d73ed8 df8cacef-5539-40df-9613-38d14e1742c7 ab94323f-4b75-4a47-8e14-0d1d3b7643cc 68be33e2-a2b3-460b-9f5d-7917f4cbd3c7 dcfe0b41-af41-41b6-8120-3d39596b8324 5bc0d8ec-37f3-422f-aecd-061b2cf369ea da88ecd0-4431-483a-9d3c-ec06d1a6b53e f4057e7b-549c-4ed8-afa9-46ee5dc9212c bc65f535-60f0-49aa-8b73-45a4096d5068 6e46ca7d-9cac-4596-997a-2a5eb98a8c21 f71374ba-8996-4d60-a9a7-21afcc50480d 045b0bd1-eb2c-44b2-a3f6-47f107739394 1ac0feb7-fd6c-49e3-ba41-e970e1d0b691 dc4737d4-936b-4252-a0ba-2dace491e4fe 22df1cad-9ddc-4706-a9f3-7e2504e96a45 153183c1-da13-4f5c-b89a-eb07337971b8 09e493c0-363d-4f84-abb9-40d97d797f63 6f12bb4c-f07e-4b6e-9ff0-ee6f9641dbd6 8cbffdab-cbe3-4fed-9be4-eabb1231fe08 94917cd7-afd0-44c0-bd8b-2fab3279e11f a59807d7-868f-4ddd-b53a-323fc3ee2757 44eb3030-1cc3-4696-8469-96a3f4e03c1b d3286f91-5d9c-4656-bc8d-6155d2029d1f 0b49efa9-6d2f-42c5-b633-865d82349900 283d04cb-8ae5-4adb-8e1a-5aa33e828e6e eb94f2c5-1834-4b39-865f-eb823f6de6ef b7aa4c1e-ef59-4385-9ee7-e4ca6d5ea241 d400ebfe-c614-46b5-8418-01faa184ed59 990785c9-3240-42da-9626-59fd2e5dc9bb 01a4366d-7c4c-438b-9d90-527a5c235163 45bd6898-429a-48a3-88bf-cb2ec2df360d 4dc162a9-730e-4209-9d0a-fad3e73934ea f904115d-5e02-4c80-bd47-628ec9539a1f 62ba6ea1-6c91-4fa1-a685-e81323d9a89b d9831525-d334-4a39-9763-65cc0549c4b8 481c25b2-e56b-4d12-9bfd-ef616c230085 4b0e5ae4-450a-4585-a34c-e408c5df03a0 b21804ec-4f27-4b63-9b59-df8131c7ef60 13c74e27-7215-475c-b2d4-afd4ac703333 ac8bd14e-0fe1-409f-98e2-82cce76b1fe2 4b6cdccb-2da8-456a-a242-9807442c4df1 9ded8b34-0381-444b-a701-977c5996888d 03f6b4bb-dae8-4f74-8852-346e4b2f7ada 95bd52f2-2630-47e4-9e73-9431ca0e6e00 ab900a58-fb50-4e90-beb5-d186203bf56e 1431b6cd-2c9a-47f6-85bd-0669e653cf87 8b689d16-1e71-4ce4-a462-d42b1f52a3fe 1ba9e9bf-55f7-4934-9258-a353bb439168 a01318c6-8d7c-4ba6-9d67-23c716178882 030038a7-1014-4ff2-9cf1-25210f39c206 93e25cb2-9b6b-4bc9-a152-d76f848a808d 624a7304-b537-4e8c-afe2-b7250bc3003c 10dde4a3-b831-4735-b59b-68756815157b 457cc6af-b8cc-4758-8803-4ea8c78fd59f 1b637b86-8b4e-4974-a38b-6bc24c9f115e 39b95d71-4423-49f4-93fb-a117d0acb98e 5a1d7653-07f7-48f7-91d6-69b2225f8abc 0e2b6613-6036-4502-b9dd-08c86d83056e 48b2a5d2-9f67-4bad-9082-514ab2be84b7 be676db3-dcbd-426d-b2da-585b0d1f1388 839d312a-642c-4222-9cbe-f4f5631c828c 85eda7f7-f3bf-4903-bd41-4e875b985b77 ec2c190a-8cdf-4395-a493-48fe8654413a 077d749f-4c01-484a-b24e-bbf7e5ba291b e8252d43-dea9-48cd-8288-568167235681 8378f93a-60c0-4e0a-a7bc-6870c3ccd4d2 a61f86cc-75fe-4db0-8843-162e1cdcb834 cb25b3a0-1ac3-4682-844f-29aca7a17ddd 7213b132-c319-4b3d-8db5-8ba0a79859d9 ed1d0508-28a0-4513-acc4-280801a84853 830e291d-0e5b-4958-bd63-840efdbf14bb 3ba1e30c-b515-454d-97bf-469899df1ef3 f5f0ae42-e789-4d32-991f-c124dde9fb3e e0a97f57-707c-49c3-a71d-3188cc8b3336 5e353933-997f-46d9-b78d-cf6ab6742e03 ac43faed-0356-4f73-859f-776c91247fbe 30225d39-d56b-493b-b8fe-85d53e3e8175 2a946f06-5899-4f95-a80b-69e9cd99d52b 7934e39d-bb7d-4462-b14e-bb7fc353e979 b783f858-e08e-46ec-a20c-084c88856981 06869cd3-0bb6-4dd2-94e7-f15c47e27845 e111f127-2122-402f-a29a-0c8cd7819b3f 39d255e5-0180-4c9b-b5ab-764af446e0d4 05233534-a002-492b-9eeb-bd7d6ce71c08 e4d180bc-6599-47b7-b1d8-38e6201998f7 41926a5e-1d5a-40e6-9be3-2c0ef4450ca5 c04b5913-ad21-4831-8415-b1c0789f9ca8 2c3c4a4e-281e-400d-a68b-da635a19f6f6 313591b0-415a-4ce9-a2ad-35c16c6f4b53 5f27839e-1105-4dc0-8b2e-ac98c417f392 51b301cb-1972-497c-bd62-785e666c5a48 5f8f428f-8648-4928-9fe9-07b489b8f04d a88bf94f-b149-4bc8-960c-df917a706c7b fb50bed2-3dd8-4e83-a1fc-b9641b9169f9 dba38b14-82e1-4cc5-8b87-214cb75364e8 b47af1b1-931d-4e7b-a68d-31e01ad45a68 9080d2f3-b029-41b7-bdcb-8c53de97accd dd7c400c-d02d-41fc-ad2a-27f196db7bd2 fc39fb46-1f32-402e-8891-9b9a6e783ed2 d57916fa-4ca5-4df7-85ab-03743d190b9c 715a0c68-a861-493d-af56-9e001d29a4fe f9781980-d72c-450e-9656-819a94f0762a 9ad302ce-960b-40b6-9019-a4b19ff58a0b 9d623e3a-3647-45e2-b094-af96e687ede6 b16730e1-7b75-4da6-af22-eb553c830910 ce819eb1-740b-4e74-858f-74551eea5c7b 284b901d-a5b9-4fbd-a99b-ea48b8230731 65554504-bdb5-4198-b311-96743cebe2b2 b5efd56d-785f-42ac-9ff5-15aec3593c05 086dd991-aeb1-44c0-9793-20b085e96524 59e2f6bc-5123-43a8-b95a-3e21ca29de26 3053c0fb-8720-4226-8922-a66f70d3cc9a 284b99e0-0fc5-4bd3-893b-b00395b8d5fd 979856ae-4379-4948-8dfa-a7ecc1e59ac7 1260de09-cbf3-4161-9e56-f709c030da7e f175ea45-9137-409d-8fe5-653f7964b175 2325c6d5-283a-4fc4-90c5-b99ce07f0590 bd63ef36-80dd-4547-be1a-a2d900d1e079 3fbe1e6f-0933-42ed-b206-bb5a33a5ec69 6056895a-55b5-4134-85b7-c6b6f22a6111 7a95d33a-f1f8-46a7-8485-0a28499b16ea e0818eb9-7dd0-4be3-bc8f-c9b2e0188cad df925d1f-5b35-4f5c-a86a-13043bc379c1 cd4408ef-6180-4167-929e-308c9037f4fe db66895c-36de-4b31-9ceb-29dee9161399 62710361-7744-445b-9efa-aac6c0c40a9e 599e93e7-4915-406f-9e6d-80de848f03f1 8ee4ff5a-6332-4077-b7fc-fdba921f6ce3 e78c0cdd-530c-474c-99eb-d392fbcbff82 c347cb33-239b-4692-a52a-0e151b890bd9 b7fdd2f6-cfda-46bd-bdac-b3a95130159e 3ca0c684-15c6-4a54-b036-ac357ed1568b 0cb647f9-5846-40b3-a9ba-156d87bbee5e 8987044f-32ab-4cb3-b151-b31d817596af ad637bd6-9bd9-4d2b-bf1c-6a40dc2f102e a99a4c52-febf-4797-b1ca-6b9944f22ba0 d7ccf585-e955-47fe-a9c0-d6d3dad46e7c 2e0dc581-4d38-41d0-846e-fa6a2880f463 0939e084-e370-4761-ad08-25f3be33ccd2 7fef347e-1cfc-43b8-aaa4-0aba9661bee2 d7980222-27e3-4591-b3b4-4868a7a5d8ec 7bc47d2d-4cd1-4d5f-9aec-3352233875b0 ef6a2f0f-97b7-4a2b-83ae-26c2faaa742f f0f0873b-7d2b-4182-88fe-a46e513e102a 6855452f-16ba-40c3-893e-97bb21e41c11 e9c84832-597e-47b8-b400-38f295b45fae 51b011bf-0c76-4aa7-8736-5947bb3dbfe4 928e6f1f-b51d-4745-a29a-5583da0d0c2a face3ca8-8abd-4d48-b2f8-2b7ac832592d be009c74-63e9-4919-b39d-ab2e5e5433bd 9062ef28-c0b1-4c18-88f2-f01750a5e728 2e99da42-dec9-4e2f-b39a-b04c932da4e6 22b19d0c-941b-47d3-b0ed-a3efd45b12e8 6ec2ef3e-05cf-49b9-9f98-68991ce366d1 946672b1-5b3e-4954-9a4a-02ca25241b3b c5f23551-9e5d-4e40-9791-5a37094cc013 40da39b2-6fdc-4d40-a099-25728c9c288f cbe63cbe-85a1-404e-b879-d4b8707a949e b021f812-1040-414e-b2ab-01325ce1ab97 86bc833b-f61c-40a1-9e88-d44985a2e4a6 e6d04de6-c29b-4f5d-aa3a-fd0314658450 dbd0ac67-6b18-41ad-aaeb-3127b57aa3f7 ff0a215d-1ebf-4513-aeaa-dc70f333acb0 87c69068-0e10-464e-9355-00d9b059b0ad 5213a089-de81-4069-b82f-1785ce9794b3 ffb24fce-167d-406e-9004-ea0b542cb0e9 48ce8b85-17d0-422f-8b38-885968a4c561 5d8d5e38-3f87-4f47-bbef-451634ff6d05 8f7a365e-b899-4aa7-966f-080b89f65606 0002e26d-7029-4f14-a455-2e684ec38bc0 b540df14-818f-4740-9b7d-23e2eecd5308 cfb61f6c-91ac-41bf-819b-66820c9f6c5a a1bcd381-65e9-4031-9616-85cdb709c7f0 f9e77f32-bdf8-4072-8b71-69aa9b778fc2 f162f919-f336-47ad-89ed-b401ec3f6a13 af0cbed0-b29c-4746-8944-d9a2d444045c a18d39b4-061e-4dca-8f6f-70ba5e7e8cc5 e1b237b3-3298-466c-bc7e-4ed25ebe1b59 6dc45e22-4e85-4192-b202-488b9f21d51e 093216a8-a418-49ac-aca5-34395ce7c830 502108c2-aac4-4fd0-98f0-7991286c9a18 4830173f-8c87-42a0-901b-c64d99942ecb bee4e3c2-75b3-4a4d-b046-1402aadb2a56 d756de01-b698-4985-be58-760f96ea1aa8 48f1a5bc-bb10-418a-a1bf-2e72d66efa27 6c47a88b-38ab-4129-9b17-da81222d03d1 477dcb22-1d46-4d6b-a564-26fa106fc59f 6ae38680-3604-47f9-ac42-d52577952347 1a877e9b-4682-45b2-bab9-2894126ce545 5a12646f-4e77-45ca-bab9-2d3baf3519b1 b52bd085-5732-404e-b5d4-bfaa59e33ad2 76ddff2b-379c-4ae4-a098-868cbe8fc8c0 76113a6c-f3bd-4410-9d9e-a6b69e0bd19b fe4b3c78-3799-49a3-bdc6-84405dffeec1 1b6f051e-25e5-4b25-bb30-9773f6f62d79 bef136f9-d540-442b-88bd-5e3b8a7298ee 76e99cf5-fb3b-4f4e-886f-4da78c82c96e 76f31551-19cf-4372-9c19-5f05aea7f72b 85d5aeff-e598-4513-a399-c81fb4cc83d3 631d0530-5440-41f8-8cf5-10726f1b6f5f 7294086b-4fbf-4f22-a3fb-1ce7523100a6 84ebdb20-1c63-4eb5-89a0-c38bc0afa7fa f285dc0f-8c25-476d-9e8e-efe602a1410c 882ec0fc-a010-46e0-80dc-b8e1e958b8d8 1d7e5537-4883-4103-8dfd-9f7046ff9032 6152974f-c08d-407f-a59b-07be8b880bf1 799eabaa-48c3-4c69-af77-206d6061d205 1d3531d6-7ec9-47b5-a503-5a7b09dec0da ce123bf8-2ff3-4783-8e24-d4744eb01a8f d326a76d-3c81-47a7-b2b1-9d0a537d8c9b a0169e48-080e-4524-b4e4-fa956ce38089 089f3e8a-6205-4d3d-9f02-1f91f38597cf 8f67d0fc-23bf-457d-ac6d-785d99a27bf9 c6ce6b54-816b-4c3d-865e-8f6114556d14 8402e33a-ba55-4823-b1b2-2fa49c20a888 c4fa5acf-274e-4cc4-a8cb-04061447b98c 0da078f3-1d2b-4f0e-84f2-122aef186cdd 8fc1f27d-14fd-4cdb-b13e-09823969ad4d 22099fde-a6e0-4c9d-a33d-99b35ecb87d5 501fd740-2aee-49b8-9b91-c82f6c015dd3 397984ee-e982-4771-923c-fadc3909905d a8e70323-abd5-4d31-b6ba-4493c0f0ec41 d79e6238-0357-4dc3-9fe4-089eabcb0ac3 a9a7bcf7-c05e-423b-94ab-363250da2b96 7f95d71f-b1f2-4368-b79e-6fc29f2920f2 8a30a313-e9ce-48f6-9ca7-09404a406f24 2bf9bc28-d17c-4dfa-8e27-c9cf08a0f8b3 50d5c5a4-7403-4458-938d-9675a141832d 61fe8917-771f-46c0-99fe-f0068bdf77ab c943c64c-feb8-489a-976f-e080dc02f4f6 d7e1a2a4-fc8c-4f93-8fb5-d3e471ab2649 a94494fe-012f-44e1-bb51-0d1173fa42fa ee073ff0-8d1a-46c5-b3c6-95c559d6cdd6 882cb4fe-33e7-4b65-a480-d2ace59b9de4 020760aa-029f-47f9-ac84-88f95228bcdf 348cc01e-7cc6-4741-8200-6739567d2a89 1f05dea5-762e-4d16-abea-9b5dd89c1b8e 6123f14b-345c-42f3-b857-e7db2497dfc0 c957333a-abd2-4330-bb52-d8b37785d9f5 41747777-e5c9-4b5a-a8c7-b9064d281422 aba8c57b-6b62-4d99-a355-dc8b615b7839 4a15233d-e64f-4834-98f8-084545c2d450 f656d046-3afe-4d13-80f4-30ad94f6a9b3 c34b9857-bf18-4651-ace9-a1cef76a055b 140e808f-25cf-4821-80d9-affe9cc5f6a3 cef42ba7-b160-49af-aaa7-b15f720e2d9d b72eeab7-6293-42ee-8e8e-fd36091f79fe 6ecf10e1-ff0c-4b2a-82a9-cabed432b796 acbad1ad-b335-4ea2-8699-134cd3fe332b 542bc9df-e5f8-48b8-91e3-884383eab175 50e7ad08-d90b-4e78-9240-e18c92f4903c 7325aefe-defd-47ec-91ec-ccd1da9e57fe 4e772618-3577-4890-a503-2056c4c4d2e3 89d3b112-5b86-4f3a-a91d-a10f7da266d3 6c1242e9-4371-45c3-99e2-39352d06ab89 e14893c6-d455-406d-ba78-b339b7f7a52a b1995330-4fcb-427c-90bd-d16fe2a34f72 42af6e8e-ebe2-47e5-9b72-96d9e0645b7f bd713708-1e8b-450a-a3ae-c955c67deec5 a216efd8-18e6-4111-848e-9a948196b1cf 89f29a6c-9c0a-4d9b-8bb7-511d8a379e33 6bc03693-9b36-4eeb-9017-d60f981bec28 c8a03dbc-cb32-40f6-9113-2f5f95c88c3b 86c55921-8758-4bb3-a62f-0c3f92363553 6888e6d1-8938-4528-b1b6-c6a9b24776e8 2799e8d3-ba07-4959-a0df-7a99cf8f69ac 5d4bda8c-90d7-46ee-81a2-22f82af548d1 9061f59b-5c29-4376-9a92-20874da480d3 c1fb6007-37f1-45cb-b9b8-eae8787412d1 ba50f53d-3114-42c3-aec1-d4cae23783a0 e70376e0-3aa2-4fc0-92d5-c199b9f1c1c1 f56d03a6-57fb-4b35-b824-5f4c23fa41b0 f7a675c6-f6f3-4274-aff4-c8644faf3104 ee2eaa88-88f2-4b5b-a1f1-a262e3d92a31 83ee8ad0-a402-41e3-85b0-08edbeaeda19 107b1770-f6fb-4d1a-a9df-2eb664b68da3 66f6bcf2-66bd-419f-99cb-421284e48aa1 a456482c-d643-4bd6-868d-dd78b1a439b5 a4fc0c08-9594-4991-9f0a-5f399a71e740 6e2782c1-f7ee-4d48-aa11-8b2ac986b280 5d13480d-dc1e-41e6-82c1-8b5b3ca6f3b6 7f905db0-1f1f-4a7f-a382-daee756b8de1 6c83607a-46f6-46da-aade-89c0d210f140 a94649fc-6fec-446d-be58-1010853a2773 d2990592-d725-4e4f-b610-92c82c037088 63a09649-62dc-44c6-9405-83db2ac6dfe8 923f4a1f-c7e8-416a-83ee-9686b7f9551b 3aab4876-6d34-40fa-ba75-ec56e210ccfe e7d7782e-a7c4-4bc7-94f1-d6a98379ee5e a609cf05-2988-4767-9b42-c603622e084d 03f6021d-85db-4adc-b35b-906357c3aa44 fb6a8f7c-4daa-441a-9987-4a174a10c0b8 6b0c5a45-7c7b-484b-b6c6-7a1e4a0ea523 0eb7e760-a832-4bc8-b6b2-d246bd43ac9d 327eeadb-827e-47b1-815a-463c02cb239d 09c09ea3-ad49-408b-8c2d-e227383dde44 8e005117-1a21-45c0-91bc-1fd9cf5a1358 a9650f55-7962-49b5-bd42-5fffba642286 5e4ea53e-0c55-4a40-ba5b-71e85dedd4f8 b9fe114b-9d1e-4be1-80e2-00540569a291 866b1e89-4bb7-4df0-841d-19351d3ecb49 d693ae15-eff2-4ff6-b261-41b353ceec8b 5111ae71-a2d2-4313-b517-1fd7e89e0764 0fce6c60-a996-4f1f-a34d-ff581789bc46 183b2b7d-832d-4bc3-a8a0-4ce1dfe2fffe 706d4b95-10ff-4fc5-88c6-9d5aa4ae35b9 c4af2dd5-b221-470d-88d5-a3b26f27d1e5 dfe09cfa-3fdd-4164-b6e5-163283ff7c24 19903e85-11ba-4422-87c0-0dfa2f190074 5ebde625-bae0-45f2-aed5-f3e2c500b4bb dffe69fb-4802-4a28-98cf-7ccb3a3c64eb 84a92d70-70b6-4f56-a9c7-c00597943c0d 4553c501-4d56-4c5f-852a-22aa2e07d0ed 5360c555-8485-4f04-a755-1d180cbebf0f 8caaee2d-11c3-4122-b7dd-9be8654320a0 4097c0f2-1a97-4374-97e0-eefe9588d7ab 031b02cf-c2e9-44d0-8361-b31076178bb0 c0d904d6-97d9-47e9-a9df-c48bd4d8e355 9f15a85a-10df-457d-91b7-ca06c1d17b69 bed488e3-b76a-40d6-a35e-bd8e519ae0c7 9cb58d0b-2f9d-4008-9199-5030c66be005 b98c9e32-9988-4f0e-9d07-90b775e4c3b1 3f4f71f2-54dc-4512-ae10-004591632fb6 12fe85ef-0d41-4c35-a862-1e635c6f7f8c 6aff9c8b-ecab-4e13-93b6-0ae04623a586 d85da409-704d-48ac-a49c-0f1486c79729 299d670c-a5e9-44e8-a9f8-0031368bf04e 92ead517-89cf-4f24-bea6-933300726bcc a100f6d1-4562-413c-9d5b-91b5214c8693 2d03b625-5b04-4802-b219-f3acc7f70ad5 87d7c186-97b5-46a8-a464-9078118de7c8 82b31d65-672d-4f37-9ea8-f42a7c7ba13b c4b34e9a-a6b6-4500-ab45-83a7589d5220 77d6bc9b-4a20-4f90-97c4-42ab5edd3017 a821e603-fa8f-4d3b-b29a-fec183d13442 703c9800-6960-447f-ad89-e9f3bd929bef 10443177-d618-4d43-8ba5-eeb5154ff04f f9ddb254-afcc-4063-a978-f0ce629e6de0 c7b99004-919d-4d47-b7a6-ed97fd9a5372 84f26c4d-a9e9-4b5f-a707-81d0f2696476 8b821916-4e2a-4bc5-b869-a0758a75d5db 79ea76bc-c93c-4941-baa3-a7de72434abb 5de3e188-979c-4473-bcb9-25d3a86fdede ea71cc11-d57c-4f6b-bf87-689fa79fecbb bcb08464-2951-4ba2-a0b6-c2fb142075c4 beb85369-94ad-4489-8c2a-ae27c9bd9dfb cf056ffc-5e1c-4c40-bd10-4fede27a0845 ed6e7319-dd6b-4d98-9793-df66542b3413 ff4d7cc3-2fdf-44fb-9928-8fbc75449070 e17de0b2-6f9c-4799-afa9-169307e1290c cda2f22c-088b-4927-8f94-f4870b67c2f7 27c7f7ba-c881-4db0-9e9b-8708f767956b c348dc1d-3f9f-47ee-93e2-72874d19b2b3 b7e8e5a9-e5f6-459d-8d86-7d3e3e2edb56 a5ed8635-4cfd-4807-acbd-a42138f19aa1 3fd88da3-fc55-4c19-88e3-6fcd5fbf84be 59616769-d3da-4e86-bc35-c6d697bc0b5a 7c9efa37-a505-438e-b4c7-1aa4a391519e 104e10ba-4cde-400b-9018-72fefe2bc266 5329e74c-3209-4eb1-9627-d070de5d526e 4779274d-5407-4495-bbb5-1ecbe6808f58 5d720670-b354-4fcd-a311-f739b1964425 2ffe7c1d-8cf1-468d-b587-0b3aebf276e6 7f39c78f-ac23-4a2a-ad67-319f85c18352 4adf6c38-4e14-41ef-baec-0e646514b669 d2c25726-103b-4de4-be32-ab3bdefda8b4 eee2294f-97ae-4004-af56-adefba1b10b0 5a5df9ea-ac55-4af6-b2d1-34236c516440 c253bc69-5b9c-4272-ac11-8ac966088c66 d1d43606-a921-43e6-887f-d6cb804b0d5f 4cc9d3a9-b6d0-4c7e-829d-e3622fc5029d 65d1be55-6aef-40a3-841b-7fc163882dcc 76c956a2-f171-4a84-9bda-a0bf7b230417 38f4d545-98b9-49e7-b82d-a1600195b3eb f32fc177-5c5f-4a17-aa91-a9326bb85fb0 2b1de280-7462-4c89-9c11-256671f63bc6 3ac85ff1-7097-4070-adc0-67dc8e50613d f70977db-fe86-44fa-89e4-2460a1ab321f e2109b16-9ee0-4673-a9ba-94661eccc4fd 58dea468-7a59-4886-bff3-7476d1a73878 cd9b8ada-9b26-4d22-abe8-633de5332922 39518d62-9a4a-40bb-9745-9ebe385e5cf3 0386ded8-cabb-4308-a148-5b2a6fe4564a 8ef29553-d526-494c-b323-f296446250de 47b03330-0f3d-45ea-8ad5-f30443a60487 3fd4da0c-3b97-4065-9739-52768d32507a 29d23ce3-be58-4697-84a5-7a60169f6dd8 0a6446e9-ba1e-4abd-97cb-002a82797bde a7e6c31a-53c2-44b4-924a-08d203dc7086 2cac07bc-c751-4e7e-ae40-0a97d76e9362 8f7af0bc-8396-4fbe-a4f3-5e9f58c43787 376e6a24-7841-4d2f-b350-4d791d67caa3 870d0773-7744-4fc8-8328-47513ee8be8f 266c9167-0527-48e1-8d09-48819478141b 6199297e-753b-4c8b-99f6-678411c5afaa 0be333c8-a66f-4dfe-8cb5-035310c7a949 6877b4db-bcc7-4120-b5be-4a569fc6d0b7 0297bc42-456a-476a-a834-cb2ee25a694d 19043cbf-f2ee-4ebd-a93e-74e7aee67ae8 607bc36b-673d-44d7-bfd7-2a6bebb50c57 bc809ce6-d002-4ceb-a024-7f1856d496b2 301dc7d4-0080-4b35-9e8f-d78850324218 7fa0d23a-9b7b-4604-9672-8836f6fdccf1 bd9ba016-f240-4d13-a935-88938522342b faf461dd-a38d-4265-91c7-9104965222ac 0264b269-ff21-466f-9e83-0b43250f2c97 f797ce51-2def-43f9-852d-57b5ed929efb f9493615-8345-4580-a0f1-c1e7099b551f 40a37e18-c48f-490a-bb34-a7d4b9198b10 bcf76b98-66c1-409a-9f65-b97948a2e86f e546d2df-e7c5-43bc-8608-352622f797d4 fca99b62-bb4e-438e-80dd-1034aa8963fb ba6ad762-f576-4864-9f63-8cc20450014e 942e43a0-f286-4b89-85c0-2b0bd41b0270 acd8f25a-ce0d-43d8-9529-0cf8a0ca4bf2 afa9db18-b12d-4445-9c31-bf826e58d190 dea9c3dc-7950-4fea-af4d-1afc9016a176 df28d094-9391-4b47-9c5d-404c249a4b40 006c1742-4094-46e8-9919-4502747079d4 df918b91-5249-4fa8-92fc-58a3789224d4 00c3b219-309d-4b2c-a274-883c3d067a6a b2775a3a-4cb3-440c-adb3-00a2cd6d39d6 be4f30c7-94ee-430a-8569-03417d157380 2e03a841-46e2-4b17-be49-4cef949515a7 3463d0c6-22ca-4a4b-9d86-e988f2945c67 f5729d5c-9cbe-4de5-825c-93c4b76fcc5b 49d72c76-6f9e-4999-aff0-735fc19d0480 0a3d484f-7d3f-43b6-82f3-7e0502cdd8f9 c541ebd1-5a1d-4b3a-96c6-94f7ec20525f 9c67ea5f-052a-4876-861e-5a6cd8037df5 2fa54581-ac5e-483e-ad78-f84c65d88c48 4f98d649-c3f1-4257-a87a-7201884dc136 fba1a6c5-5622-4e74-969f-7f291bbc2f3f 59d33550-f7e6-4f4f-8852-7364c4177306 af87fa59-f7e2-4eea-9573-d9cddaca8c41 3befe19a-d7d6-4335-a9c1-9646a5984fa1 7c8e146d-0191-42e5-b825-39d77fb58863 ca45171c-8006-4658-842e-5b9383db82a5 b9444118-d28a-46c1-a564-774c7daeebb1 300e089d-66b2-49be-9c98-90f9794b1ac7 8ad96956-9254-47b1-a2d1-563415054170 5406ae28-8a8b-40da-b6c9-eb66052170c4 9a432dde-ed5a-4a8c-b610-5e1349c22a28 7a6b64c4-4998-49db-8af8-459cf6c1f419 b59b0c02-715c-4efb-9bd7-33af3965127e 60f3a032-94fc-4151-bf82-cfc6a2c8dcb1 fa70a40b-d80e-47b6-914d-cb04b6d36710 e6519b99-e6e9-4aa2-9576-3e5844e0c1d1 4c279306-dad8-4144-a3fe-ea39d68a7fa7 353d66b9-0837-432b-be15-749be9cd1ffb 745332ae-5f72-4cce-88a3-3a10a13684b6 eaeccd97-40fb-404f-8a54-38d7dde4366c b8fe81bf-a7de-4c05-b64b-790e33d5d37f 7265ba01-3773-4e04-83d7-ee22789374b7 3f1ff8a2-3dfe-499d-bc92-0154db92dbd8 ad7311b8-596c-44e6-b35a-03606c1941f7 086008e9-313e-49b4-9d57-6be05660081d 7c221e06-eca2-45e1-8f3c-d41f36cba952 a2dd578e-1950-4ed5-8f23-a7e9317120f1 bc5b43e5-156c-4a4e-a4d1-c9be655a6612 9d447ce8-27fb-4cca-a145-afb969fa373d 51fdc7bd-e91b-4870-9e38-8de8b449037f ded31750-4bf7-48bd-9288-9ca8feb5e7e1 13153bca-05d2-4867-b91a-bf97cd1748bb 9d944b8b-080b-44ca-a2ce-5f1e13c9620b bd40ac9d-58cf-4e83-80e8-f833be7d4f0c 74899748-acb2-4c14-884c-453b165e3cd1 c3da3410-8c4a-472c-82ce-67e53af67bd7 0d8750dc-3131-4121-a79f-ab5b7d793d89 d90ab99f-b3ec-4de9-a171-07bc10b029dd c6c552be-6f6d-4185-83f1-bd8f074a7b02 1b715022-0f2f-4274-b85b-d81e08b40b7f 423b11ce-8827-4819-acb2-34fb98dc34d9 3e8d5814-cfb6-46b1-bcad-e77f3503fb1a a11fbe4c-0527-4118-9fa7-300e7c020b36 de2100a2-6920-4ad8-a269-b8cde02c77e2 fc0d927a-3f79-42ec-a133-1f4467a6d1e6 c780c2a7-d379-4ce6-b673-b6070566da54 bad5fffb-768b-4b55-8419-9d3ea4b9a72f 397bf5b4-034f-4b5d-9345-8d6d71158951 82048e92-d227-4ee3-a1ea-49c330e705f6 820318dd-219a-42a5-967b-83fd22c78af1 0b802d02-a554-4caf-9502-32e7e85085ed d367b6ac-63cb-47c6-b6cd-412d92ad641c 51e30c35-5282-447b-af27-87cd365cdac5 379bb80a-3f48-404b-8627-ab52163654a9 a1c16b10-151f-4eab-b474-2c8e657c6f8d 7496926b-0835-4de5-994c-c0cbe4b0283f 081528a9-31b8-43ff-88fb-53b3398bdd86 84c862ad-c605-408a-a7a7-ca0257142f69 1f0c781e-aa84-4027-bce2-304eaae95545 f890289b-f55e-4d73-9fbe-97cd16552f15 1adae827-0579-41ad-b471-282bf298d4f6 ddb8cb05-5164-4953-b6c8-d47afdd009c2 9491fe41-3b26-4c47-88cc-1524eb294c75 e8f5f2e3-4ae0-40d1-88fe-dd91ff121399 2cd29212-84e8-4833-b636-3c3b24e22612 e0ba8f76-3cd2-49b6-aeaf-4a45425c6ebe 44fb90b2-7f54-4cb7-8a8a-6dde42d279a0 8f8090d8-ffa8-44dc-bb97-8a09f1e71a28 c0918951-6e37-4545-b522-7ba5b65128b3 3112e294-b06c-42d7-ab83-a33d256a5d30 bdf61489-aa58-4268-9c6a-301b06731481 73db2431-d2a6-421c-b003-c5ed259c9a65 abcd0c5e-401d-4163-bc79-80c83c6eab37 1233b90a-07c5-4e8c-9a49-fd1c15a360a8 6595f7e6-cbd6-4395-940e-db1f5327481a e4230645-db89-4269-9447-4c20b3e315cd 488996c8-14e2-4c1c-b777-507096982eb0 f31c45c7-b059-4a4f-b84c-8b4de0a69cf8 daff05e0-6fc9-4e75-9f06-9af2f69c8976 ac21c8fd-8767-4571-a12d-c007f6a82617 3decd7ca-c416-4f56-bb62-577b15180fea 792da4ea-8348-49da-a001-29455506bb40 848a1474-c6ff-4e9c-b2f3-7a78753ef45e 3b8c790e-5c33-4ca2-886a-53ea0607f0fe 943cf13d-2c6c-485f-ab77-e2ce439af0ad 1441275a-a7a6-45c1-85d7-bc132234ecda b0e80a97-4a88-47e5-bc6d-bc8e60d8d97a 725dd42b-50f0-41d3-aa50-e875ca0152c2 e26a0405-4b48-4da3-bb77-eec6f6c3f8b8 30844d27-4858-4a5b-a5aa-f30e419cb661 bb4b23e9-97f8-4eba-b652-0747aea434ef d2f53ab8-df29-4d55-aeb5-126b20ab6088 b5b19b46-cae7-4ef7-a340-4b6899fc1bef 52de5b3f-a1bc-433f-bf1a-57cea89453d3 1adb41f3-7b1c-4f05-af1f-a95982f8f736 c85188f7-3f23-4929-9367-ba36912378ed 2159fb2d-7d5a-439e-b37f-591fe2a58c01 1869f787-430d-4f18-918c-805e901a2d92 7a09595b-cca9-49de-8fbc-bdb8c130d85a e868c721-0d72-4136-89d6-b22db610005c 3559bb19-4d95-4b37-b8ed-12e9843f06ac cac727a6-a245-491c-887d-2cf8b67117f0 53b078f0-7f6b-4a33-9720-eb9ec7dab0d3 99671ec2-7be0-4e7b-8917-3560fe5304df 4ffddd4d-f060-4633-9ce4-6c0ef8fa059b be1abdaa-725d-4b02-bb4b-61cb991b43b4 556eb52c-a839-4b26-bc31-a8ed2a8455f6 3b5ef2ec-ef83-431b-80a6-f80a2f7dc32e 13ffdc20-7d8e-49d1-a1a5-3e829d3b021d 3e81881d-6c74-4304-8e88-66b6e15cae47 704494b7-c581-4d3b-864b-5d9dc7fe2265 16d49523-639f-4ac2-b1a4-2fda90f3b0e6 34d3a0ec-3ac0-484e-b013-66942ace3d24 85abe787-371d-483b-b0dd-b8b5a57d2732 377a7bd2-d6c9-4134-afed-9f4ef8c7a874 8de41968-c8c1-4c45-8982-795bc671d1e7 99a495e9-a705-4b64-8a88-1951ba29bb19 57a677b7-f8f3-4356-8a88-ebcd89d7664a dfaeccfa-8126-4320-96a7-e5400033ddfa c6f77291-83f0-46c2-942e-2b44b3ad599b 560dfb07-dd00-492b-85d5-2d410785da7b f48f6c0f-7a38-4c2e-90e7-7661f10284a1 6f4bcf75-767c-4a22-af24-8c9d7671591b a8024cf8-382e-40cc-b336-bec810e7f6d5 26efbcc9-b56b-470f-a6ed-348e94b70699 a3c97b2f-a8d8-4182-a92e-f7393035fe05 dca001ac-a09e-4ebb-8f1d-44d3582fecb0 4309f2c8-e067-4a8c-8814-66a438057741 b6f93838-d3d9-4920-b2d8-c70330666d66 8eadea8a-9912-4e55-88fe-4b92547008be a7794eaf-cb16-4175-93e9-fb7e46530a9b 454d60a9-cb67-4b03-a2e6-bf456960bd8d 58905091-03a3-4ee3-a0ca-860397624412 e32100e4-db7d-4fa6-8797-868edd7b80fd d9d1e436-1a03-45fb-9664-68c811fbfe5c ef1f9bc9-b40b-4ead-912c-478dc94bbfce 00c7f89c-c9dc-425a-8521-0ffcca61cd8e ad946440-152f-4883-a1d4-146e13c5d06c 612bd6c0-f285-4597-820d-2901a338edc3 df49622a-dafd-4082-85d0-b29497905558 66032c18-7e48-4c94-98c4-3b0a454e557b 65a02d8e-1cef-4941-b3a1-d595f47e50ab 629eeefd-83d9-4ba5-8cca-bfe80f1b43fc e948421f-d6ec-4275-a812-fc9dee4ee396 d39766b9-b424-409e-8b64-31f00e93bbb7 8cbb03b9-9157-4e89-8177-f6c463e81e80 4b0fc4a7-e0d2-42fe-9569-fcba80bda86b 56863e64-7894-4120-bda4-82c1fbc3bee2 75508d04-d15d-4db6-9e3f-90ebc24e7fbc 4a013bfd-a2ca-45d2-8911-110f32655460 5094b7cb-7628-4ea3-a4db-76464bd43610 836b68cc-3af4-474f-8995-637a49733009 bab4418b-d043-4f48-b71b-f1872d7f8557 63b3940a-d176-4e64-852e-d748ebc2b6e9 b43d8644-58bd-4767-83ef-f41eb8ccd820 9a274483-2fe7-46da-816d-79dd9e334920 4b3e1c39-12fe-45f2-baa7-61c2671064c7 2f2849eb-92ba-4f98-9031-aada34f3bb2d 83b7b180-0c7a-4d78-98cb-37ce081f4cfe aa7a1c93-49fa-48d4-baa8-0e357fcfdcc9 80626a10-c25a-427d-9b97-e45bbaa082f9 2036c08d-524d-479c-9a53-29a4961eae42 0b9f8014-cafd-4163-a02b-73c1b05a004a 8c943a5c-1ade-47cc-b01e-18f3ed7a5381 84f89e9b-8590-4426-b086-0c7adce0ef30 63417c2a-4d4e-4be7-a8f3-8ec0e6b18b20 778113c1-25cc-4702-b2da-97c29fff5eb5 64016bb0-d4a2-47a8-813e-2c907bb1dcac ab8e43f5-f7b6-4ee7-92cc-dcf06c7cdb31 ecb4392d-7c69-4941-8e32-dabc6e1bbb1c 02c98cea-9486-4341-9408-7405f8fa4271 71436dcb-b4f0-4169-933a-75e0c71650b2 ae3d98c0-9506-4b3b-bb2e-686d72076e47 9a552710-9aae-4026-82f6-0213986b79cd 384bb2a2-6141-4b6f-b3b3-db8d705aa025 1ea941e5-7bf4-4221-947e-ec53d0dfd5ab b0caeffd-79ce-47f9-8d97-9469b2528a26 e1b1da66-375e-4b5a-b6a7-5f761dce160d 8138a6a6-116f-4419-81f2-d13c7f03f2ba a6a538d9-371b-4cce-98b2-6ba946482f79 ca22d6b5-1bd5-4fa7-8196-90d3d3aa595e c6a3c8ba-8a37-4173-aa40-ffa90dfefd2f 13e9549a-11a5-4f89-ac3a-8ee0e7a86185 79e40c4a-ef26-4241-b38f-f50c1935d779 1684481f-0181-4316-b690-e58eeef8bde0 3c5a5433-f8f8-4985-b1c9-dfc12fcc4afe 14edd15f-8c91-4650-8de1-3d46bc8a4b2f b49e5a6f-f9e9-4ffc-bf30-321044248866 bb1f56b6-5ee1-405b-8046-a2f4d6425b8b 77fcaf44-2a24-4374-a6b6-aaa2c3959862 ebc0fea9-eb7e-44fe-8a53-fa5f0b1372f3 7053e7c9-6430-4763-ba21-f2134512fd58 027530aa-1e24-46cb-9db5-f1fa5634a3e7 3da905b4-3571-49ae-8195-0a7eb459782e 7d1397ea-ea95-4c1e-91ad-51a87a0b2b82 45854439-943e-4b42-be8c-ed3a7fd8eea7 fb87a47c-3798-4287-a5b6-f4fa8f2ea269 3ea9bcd2-a650-4ca6-88f7-350b6684de77 44056ff7-af7e-43a6-813f-0b7c43fe0996 c8070cc1-2b59-49d2-91ce-60078c28eb1e 32a09326-cdff-40bf-84c2-42ee7d6476ab 6dbbfb5f-d444-4141-8d93-a22c03d150d9 ecc56c1e-be0e-4fd8-b158-7d1c44ffc400 51621a54-bb86-43df-aabc-0af54bc1e316 b86ecc82-b8f2-4acc-8d19-221c9fe56bb7 7a40e220-7dc4-44cc-a541-1085a4ed2a82 9d41b6d3-d09a-4330-9d05-f3fec026a792 d72cdcb5-131d-4b65-af99-905473bd54b0 e7f19d9e-51c9-43b8-ae59-eeff9cb70fcf 9b64e581-2e72-45d0-b6c5-d5d4a0183766 603b4459-e8e9-4a7f-abc9-3159e05965f4 b4283b4b-5b1b-4645-bc43-708044b7e957 117a1348-0742-4f1b-9d97-ceb72ddfb807 59dbdd89-e99b-4904-8531-1db40725d65a 7b1c8bd8-5b4b-4a43-a5ad-ead67847e876 30e1582a-fd34-481d-86aa-8cbcc140c7d2 78e725b2-0960-433e-8675-6ff64694ce9a ca54d39e-f299-4ac6-adf4-8255a657f9cd d78346b3-dbcf-47d7-9985-6b24c9c857b0 35f93188-0e63-4be5-98bc-9fb72270cfed f6c84617-146b-4062-8474-e019dc57dbda e05d5717-49a1-43ee-ba0a-fd9d46523b97 13f00c9e-926a-46f2-b72d-fe1a1b435a1f 21e36f0f-b72b-4d31-bb99-91679ebb8996 3f7ac68b-59c1-460d-9b2e-9d8d9cd7f74a fdc0a25a-63a3-4660-b797-7c2f7c932059 2fcbb1fe-72f4-4c76-b979-5e5a5719a4e9 b15e0237-2969-4121-8365-75fe3270a2c9 dfde8b31-c932-4c48-8cfd-0477fb4864a3 67d49fe7-c9b3-44b6-bc35-f734dc1c1830 fd7ce242-4a3b-459b-a0f9-1371c5f0d22f 46eb4404-46a5-4e93-8c75-73e542012c75 4e250743-d964-4071-a68d-4e15f21c3344 db3324bf-04b9-40f9-8a22-dc45dceb06fc fbc8d689-5e31-4019-86f0-2e14a2e94a36 21a4812b-d1a7-48ec-8a9f-8e3375c577ec 041c98d0-2aeb-4952-b3e3-19d3dd9aa51d fe133248-7200-4f15-93e3-bca7109d35f1 117e9f5e-4399-4672-aae8-5ee4e03b78dc 0daf49c2-e7e4-4b76-bc2b-f51e03a9f7c1 878bd175-4aec-4cf2-8e3c-c1c993968b95 c4e533d6-6c1e-44ff-991a-14e24d0d6178 e0c21017-db2b-44fe-ae34-d0e0561b2c68 233ca967-e116-4d7d-9b72-0c33840eb0ac b6e27527-4694-470a-8f77-ff46fa08f9e6 e2213607-3706-490b-931d-ba839f7e0a37 689ccd01-aef6-4307-aab0-fb664dff42d3 1e938084-afe2-438a-8187-c1c8a4b0ec71 2b09ff5d-677b-4f35-abab-0a08ac995464 75270942-de7e-44e2-b119-7fa05bd4893d 777ccbeb-b103-4b98-aa74-865991ca3d13 f84e5e54-4ad3-418b-a1c8-74a03b1a7d28 99e7aa61-35a2-4e36-9528-9f76ed1ec4af 213a3411-4767-41f1-b017-ec39061cc8e5 b9f78671-36d3-4694-b2c3-603677b452d5 eb871201-6287-4ca0-a8be-4d96c239f5b8 ba040f16-48bb-4ae9-8ba4-acf293c16993 e39acfab-51d4-466b-b9cf-3b542192afb6 b296a3e4-7fe5-4afe-8864-ad4c7a8bf08c fa820452-b38b-4c26-a27a-5776c37018e5 34c03219-fd67-430a-9ad4-bd1d691b3f9e d14f4742-941c-4dd5-983a-5ed73aac7e08 5c61159f-f08a-428c-b6fc-7ab6c0e3ffe7 5a378d73-03cd-4a77-b417-992bbed0d174 82fd7cf4-9ae2-4186-971b-11f7eda960ea 7010ad27-0562-4be6-9177-f9bbf800a589 26042fe6-f6a1-4b0b-b85c-45e7d4714eca 6fa7a25b-75b8-477d-88f0-38bc4e8d7b6c c0b2fc16-d14f-431a-8f46-3a550c37cefa 8ac2dc88-c723-41a7-b1d7-93da5c17fdb4 fdedb6a1-1f0a-484a-8568-a1475d1847f7 57e9ba6f-d013-40e1-b556-111b22a671be 3b82c0ca-0db2-4bc8-b5f7-c088859db588 18ef9090-44c6-4925-90b5-740f1f47a4d1 3733a437-23e4-4f2f-b82b-6ede1a7f2742 295d5ae3-a859-402e-9900-caea78852078 f5e00bf5-6903-45fe-bf60-5fd43e2007ea b73840e7-1fdb-417d-b106-f28c2f77b617 9585298b-472e-4268-a1cc-93a80b62210b ee5b03ea-55a4-4301-a7b2-266eff6fefa6 90649fc3-97e7-4fd5-8963-6ed6620e2bfe fb4cb15e-2504-4fb9-b9b6-3edaa6798354 0d02a1df-762a-4349-9473-06997a1a5640 e0c79020-dae6-482a-9670-e8d8591021f5 ce5f9c41-2dd0-4b4c-9122-450841ff87cc 35fc0617-c13a-4b57-acb5-fc66a121dc64 aabc2aa1-471c-4e41-956e-c1dfe5dd2e32 cb80987e-c88d-42f3-a8fb-76fbd3c1ae40 e4a0db27-c057-4d61-a730-62b23bafadeb 49c06738-89c6-449b-a072-58eef8afe18b 11187e98-e50b-492f-9923-e051771acf7a 3fb6a954-231e-4c5e-985f-f86c6e11bf9a 6cb2183d-653e-43f5-b9c7-8a698099512f b2439bec-624c-49c7-a56e-68fe7bfd889c f8919ba5-f86c-45f4-b690-1aacab314370 8705c681-8ff0-403d-93e7-4bd138eba0b2 1d08bd28-678f-4a7d-b736-96e9d5501a69 9a5b1f79-3375-4f30-8920-5fafde15b77d e3b7c4c0-4aab-4a39-9d22-b13f254ee6a7 f880d0ba-39cc-4898-b933-68e215e8b1f1 7acf9f68-0024-455c-a589-6f8a2da0c880 9d58872b-2611-4061-8fa9-fc84a00026cc 5613d151-360f-4fac-a25f-e9e764385e1e 2221a9d7-7a8f-47c7-afe7-9bc1eb8b92c9 69a8a8c0-accc-45e6-8fc2-fbfc1960da5f 0a246bcb-ac5d-4ac1-9a29-7b0fb4c90787 4aa06d34-2039-4e77-84ed-bbe1e22a179e 4ed3b10c-55c7-4f36-b828-d150b080fcfe f8e9a813-02ae-4278-b2f9-73017ea5d5d4 f6e3c5ad-7770-4f29-99af-3b783800ead8 a4c989b3-990f-44d1-bf02-91f77b8c2960 d4578da0-2c87-4db2-a3b4-e3c2344059f7 76ed3781-edc5-4d52-8192-4b05e4076325 2d90d0ff-58b5-4266-8336-1a6999edd719 6467db74-4fe0-40fc-aacd-ab1fd8bd8269 497fe51a-3c58-4cd1-8ed1-77f2e0e1c4a7 4c787c30-db99-45be-b489-90113e6fac86 a80be8dc-09ff-4e4e-9d05-838e841459bd 971c0f91-950a-408a-906a-631599f985f9 f1ff62cf-5e5e-4e20-90cf-decfaeccd48e 360fb646-906e-41cf-9545-e564b4b5d2be 3a4032eb-5e24-4bba-81c4-4769f0d15adf fd4c9dd7-bb46-4430-be09-815ae499a0cc f22a649c-26a5-497e-aa63-af51db5e60a9 6b537af4-77a2-4e45-8fa6-f88b5b61cba7 df703db0-9bb8-453f-a02e-8af49b122730 cac948f4-8f0e-4362-8fb4-96ce6832635e c8e8b4bd-e081-4ed6-a0c7-27d6322367f7 fa40d438-2e10-4a08-abca-a4acf674785c 7781b0ca-29bd-4bd0-8b6b-47c3b3c13539 6d0d961b-d5ec-4124-b18f-692cf57a448e 0d82f5d1-399c-48ec-b0a4-b708a47b4be3 a5903b5d-35d3-4520-ae91-aaeed5b1d568 0d8e8ab5-5fb5-47a5-a247-4d5b24a9c1d0 09a4192e-c7bf-41ab-80b8-6dbd0eb6848c 72247d97-6692-4566-b6dc-b22553da1535 be0e8df7-d55c-4168-8f15-937a0223cc19 ddc1036a-36b2-4043-b27d-901d009335f1 0909c943-c1bd-4327-8cfd-d3c7c9c8f5ad 249d1315-6aea-4172-9a9a-9c51fa375298 0eb38fdd-e160-4e96-8db3-5b15e89c4605 136d0235-80e7-4037-8c65-3ca3ff2e930c 6299a096-d7d2-4ed6-9b11-b75f12e0e990 3ae96d5d-a8c7-4926-b452-058d6370bf04 3c0760c5-3c3f-49f6-997d-2c1923f80421 c4628c8d-07f8-4cf5-bb04-e407eba3e6a9 55c24029-9c4f-43ee-ae96-7b53104ca96b f514f4fc-7f49-4f38-8269-6f6f5d13c6d0 480809ed-cb3b-4b06-8ec2-44c374c3cb13 0d739083-b945-4437-b5fb-6229384311cc 64f65dc5-e47b-4522-b765-9edcbcbc248a 64f5ee28-ccae-4f75-bd8e-2445969e221c 556010f4-2d77-40c7-9ecd-485f4c9add2b 2c781563-399a-4b43-ac44-67bf047ce523 49bff88e-000e-4a34-b7fe-40a7c820dba7 78de8adb-5c85-43d1-be0b-afdbbb1e2ef0 941a167d-7781-4880-8cc7-d1abca0926ac f751ed5b-8645-43d8-ba30-3f893cac9b0c 9902aac9-4fc9-415e-af32-69a56e1b43bb 146ef011-6356-4c9b-9e76-e201591d3518 a9a1e4da-256c-463d-a4d2-d4b3186acb72 a901befd-9fc4-469a-a5a6-c0d3495a066f b84b9334-ddd8-45e6-9b6e-303752d4c49f e2b4c548-21e8-497b-a715-aa6616575d2b f1f99267-16aa-4147-ae4e-ff4c61c05047 68bef75d-0ef7-40a5-8d05-20fb092490b0 9e7e74c8-ada0-4832-b991-047d15655451 1eb661dd-b00c-4a45-8d79-3b575e31d219 61fce36a-3ded-4b46-bb1c-9ac97eb98461 201f7fd1-ff5a-4781-924d-f3d8a5866db7 43a05964-368d-46f9-9c1e-5dda9d3681fa 0d884206-7253-49ee-90f4-120703e01cd4 0a3a373c-7187-4018-a5a1-5118e183d33b 9ed49bb9-85c9-4faa-8487-ae8f4b21f586 dc4cdf17-ce71-46c7-8f64-8d308c824e2a 68a5a417-2c65-44b2-b59e-c607eafc0f25 311911ae-6eb8-411e-b41c-e66af5769744 d003c93d-0e9d-4929-a04b-803d43ba478a 684169c3-2152-48dd-9db3-9e83ca3c02bf bbe273fd-33c3-4468-b46d-c313dcd22d58 85baecee-49a4-49de-9b19-e1cbe2e384ba 71c9061e-35e3-40e2-a994-0296ce9737e3 8b74ee29-5c2d-4766-a007-114d0750f816 e7795383-1eeb-482e-bb86-dbeb8a08b7f6 bfc04811-d605-4c42-87f0-e5b0d3ff4c0c 4402694a-2135-48ea-95dd-20d3e73d4a0a e495ddd6-d252-48dc-81e2-e982267b33e3 93543720-d9f6-4eba-8afe-a92ab8e64a11 d192cdba-cc7c-4f08-a85c-7e234cf5fee4 e805f54b-4bd5-4a0a-8d1a-3b45d061614e 728b4cbd-2136-408b-a185-b9b5fc6c0ff3 21444c11-91e9-4049-ae3c-624f8f3cca7c 5ae25cd9-3b34-42e9-8cb3-59deff3ba077 0ffa18ec-2b01-420f-a518-76b0bf22bdbd e2718c89-9d43-4ccd-94bc-d51bf67e96cc 13b990a6-d763-4d3d-8f79-65570007590a 3dfd8f65-18d1-4418-9b98-e69b65aa55d6 faaef4d7-a8ca-4607-a6c1-96b1c01a7152 e9fcfb5b-40b4-4211-b628-e555fb394c12 df741b51-382f-4a7a-9882-39227ff48376 21013410-6bdc-450b-a668-dbd6e4d61f75 95e202cf-e03a-431f-8fd6-1884163f69a5 3174a3a5-9069-46d1-816b-cf89f1479f2d 9ee5e02a-7ab7-4764-87a9-c8cf354b2bbd 18e8a0b3-49f1-4a1f-a5fa-5f20d30330b7 0e60f84c-2c84-4195-8635-5be40d71d0f9 0a2ab7cf-fe18-4dde-9b05-517029394fdb 046d3359-92ff-48c5-b06a-a9148084723e 08b90619-dd40-43ec-a8dc-6f87e0cf025d 0be7d21c-c4f8-47ed-9398-f0037214df35 23751dba-34fe-4fd3-a580-709d6f9b3db8 ef712fc4-0700-4650-b83a-572b27dd629a c5b22186-fffa-4132-9291-5e22395e21e1 6c58773a-3e66-4762-9af7-ad7db5bee17b e705949e-af08-41d1-a4f6-8ff2c31a7afd 4f68225b-8998-4300-8656-66dee2ea51f1 579cdbfe-48c9-4207-8c6e-5c72d87761e8 272626d9-bda7-46df-b042-7ae6453fb242 74c94844-7d5a-49a3-961e-cc7a337d17cb 0e239004-9e72-4472-9fdd-c49d3b74d95f 26e2cd81-e2d6-4c52-b6ee-003900e290ab 0341de19-4b6a-45f3-a5d3-b194108a48e0 b354dc6c-90b6-4835-af35-b4752b5694c0 9ff90747-ea30-435a-8788-e1e9faa4774c c79e43e7-a546-43ed-93e5-9afcf5b00c20 af0c31f0-1cad-4420-b20f-10bed1f8c197 78bf7bc0-8d60-400d-8d4e-1637ccd6f8b5 936533d7-9c21-4338-8ab3-788a5ffc4f45 f7f7ff36-8088-4c51-aceb-f8bf953fba30 4c48b459-76fd-4e91-b0bd-e3efd66b4c30 28fa7a83-c78f-4613-8186-fbd38ce7f64f c054520f-c98f-4670-8d76-b2ca34453aa5 eafe79e4-4fcc-4406-b14e-561f1a7e3da0 355a0ab1-e14a-4907-9ec2-99127ce5f7b0 1ca03d20-6fd3-42fd-a9e1-b3836972ec0c b123324d-0bc1-40db-bfdf-04a9de2f935e c50eea7a-a66e-4fcd-85d9-9a3584b4a8c8 8300f7b6-ddcc-40aa-a70c-89a03f4464cf 95cf50fd-7cc9-4ca2-a5f4-cd6193d404ab 896d3629-4869-4efd-bea2-7c340ba2f5c5 28036f06-eac1-41c5-9bc7-afe031bcbbf2 a4cac7c5-8121-4c0c-a6d3-719ea74ca133 37837acb-cc55-4636-bfce-5d22f9aa11d7 6f9f4042-741d-494c-b890-0b2f4fb9d13c a6a64c8a-9767-44c2-bad8-731190f8505e 0e910b1d-2701-4218-bada-f37a0a81e9e6 5ea34ada-d5f3-4e2e-b74e-62b8dea5b76f 7a00422c-8806-440c-bb81-c8ad9b5147a6 ec502308-0fda-497d-8394-373f24c01047 f49ec129-b2e5-4c3c-b2f0-73044d1ca78d 23c238a0-d1a9-453b-b8f4-44ab7eba589b e2c96830-7521-472c-b006-75d30c9285c3 34ae17e7-edb0-41e6-b337-407e18d43be6 fe6608a8-c188-42fc-ae67-f0f39bdbd823 ac34b7eb-07e7-40e9-b448-2909e7f24d4d a4beaef7-5afe-4ffd-a581-9a6ef8b3755b 5a752be7-207a-4dec-a8de-a36670e7f209 20dbc6ed-da38-42c4-8f33-475da0520f88 e06236c4-36d1-4342-83df-ee957e84e5eb 69d1de33-2f61-4dc3-80dd-cdceb03d18ef 11f052b6-77af-425f-8192-a8abbd829a17 b6065901-732c-4ecc-bde8-6c09c08d5de2 e300c122-c9ba-4382-bc63-271f37b17082 2a3a9f6d-94d5-4ed5-b329-78f7cbebff9f 9c934ec8-b981-4c5d-95e8-dbdf19fb1bef 2f3ba7b6-168a-4e90-8ecf-528b75f4b05c 3ff317a3-b691-4325-8c32-b58071ac1183 1b103694-272c-48e7-a0b3-a8416216afdf 8edb0475-8be5-4282-b8bb-f4fed883d605 5f075142-ec79-4f72-89a4-cc053dc26f05 726d636a-c763-4eac-9cf2-f57c2fed51c5 d3bb1700-27d3-4412-b556-9eb96538c75a adaeb2b5-4814-41e7-814f-8fc206d1873f b095a49c-256d-4cf2-8788-16ef574e762c 79499a0f-0d31-4f79-82b9-a17819d082df 7540a148-b8ac-4acd-b773-630d8a5eb1d0 4df9c12a-4d08-4648-b8e1-ef6ce918ef2f 51479c69-f1ac-42f6-8345-4c7e1f1c573c 615af9e4-7fd5-4b9a-a224-1ccd12547da6 8d912363-57e6-4bec-b5aa-da9de780e229 92e8664c-4c11-4303-99f1-a6aca9f39fa6 123e1e11-ef14-4320-b736-7f8e25c2ab0f 5017b1bc-4824-4d51-bfcf-07530d38c4ce 83e82ca4-9083-4159-bb39-4a5773d91227 526b3756-bde3-4f3d-9b77-4300fa9ea741 3d07b6a1-dd5e-43b9-850b-c76dd45a76aa 1acdec38-c16e-4cb4-a3bb-421fe334f2a0 e6fd43c4-4fdc-4f49-8754-42647fbd6011 c4f0c3e6-a71b-4cbf-838a-eda5e6f41ac5 ae165532-364a-4205-94de-c2e64b191b25 4208ae6c-dd78-48e4-82da-9c77f0782458 6fdc2cc3-5b27-4f3b-9bd1-60bacf23728f 12e59f9c-9c54-45a5-89c8-f717af50461d 26c875b0-2fc1-466d-8f96-1357cd3b6826 c5941ad4-8f79-4c06-aa07-e8b2d319cec9 698e4a0d-0a4c-451c-afb8-c3187a6adda9 f4e97c2c-811a-4dea-9be2-355fb4cc5cf4 4a82cb36-1fdd-48f0-85ef-7aadf85e1c7a fb517480-218e-45e4-93a1-6169d4222175 ec846d1d-14ce-462d-bb06-24eca623c156 93e7b084-6684-4878-bf22-6d4b53572e9a c5753a19-c8aa-496e-a809-d8179dadbe96 354387c6-8089-497f-b00f-cfe0e1b0052a 3eb05409-bf8f-41af-9602-0f88607f4d83 3f919cfc-26c9-49ec-86d6-cb2e07ee7c3d aa39bd31-43e2-4191-ad82-cc7c738ececa dd826829-e9a4-4854-af61-e9d4b478724c 024a9a6e-ef80-46a0-bbb7-9d93e75e15a6 d721f1c5-7053-4f03-a5ba-796d4c64bed9 b3e2bf8f-0a3a-43e3-ac8d-79f1fad41143 2cd542a6-0a02-4f98-9631-409d78ea600d 32e6ef5d-c0b6-407b-b640-60770c0ba06c 17008f35-c4a7-49f1-888b-727823670fcc 9121bdc2-df5c-482a-91dd-35d28cdaa41b f4915856-77dd-41b4-aaab-44c8b316bb8b 5292105e-282a-4878-b8ab-2700221c9fc4 1ad91c13-eb39-4082-af12-b31834e62113 d34e6914-5a84-434a-8f23-a73700f0c3f3 787cfc86-f5fd-43c8-a8aa-26a6b21156ae 80bd4cc3-7359-4d0c-99d8-bb04eddb8374 b230bbc5-1f44-431c-8382-25631eaaea88 0f2da96b-62d8-45fa-a2a5-aa057b110aca 1e373521-9eaf-4116-84e9-689488b86fff 41dff258-53cd-4f7e-ba0f-44d18b39169e 4dd84ac5-070b-4a23-8100-ca72230edc26 02d3fde6-454d-446b-8f18-2f3e807faff3 df31d346-1ffd-4307-8ec6-904b53c92dca 126e132b-864b-46c7-99ed-bd15e3f679a5 3606585c-4974-452b-a930-bda3560d90e2 ad46ba76-5a34-43dc-826b-4a8fa0d58ea0 0434654b-e233-42a8-9310-5d764d41f702 7e75fe74-ffcc-4bc1-9cf7-c198e5cae9cc 588d1cfa-9e65-43f1-8b98-33a440862a8d ea1541c1-85c6-4593-af08-f39b8e75cd19 c6adc055-97bf-405e-b7e0-d9a81045f631 be644529-581e-4879-99cd-280c2ce9dc88 68b8a243-f64c-4dda-9c66-d37d2f26df40 2e169e82-a92b-416d-87fa-1accf85dbc30 86ef74ab-15aa-455c-8069-e113fb584cb5 e6a9e676-f47f-4ccf-b49b-aa2f47c61201 e1e730a7-3e0c-49b6-9376-97bc27fc22f8 f65b0fea-8368-4534-a09f-aa88a6feb2c6 8ae57226-9648-481b-a167-6bdd79418410 d7474107-73b9-43d5-bc88-cf5a6f349539 8a9963f3-7a55-45e1-9ed4-19ccadde45da 32faeece-03d1-4d8b-9795-f8485d8e2fdb 11cda752-caf3-46ba-8bb7-3006542784d0 62e83adf-0f68-4fee-9c9b-efdb4dc3e37a 6ddcf3d5-7e4a-4d77-99a3-82f021fb8ead 613ded78-3701-478f-a882-5d53a11b63d0 fe9f174b-a7b3-4fee-8029-e08483308757 5a4a4483-9092-46bc-8c46-177c92a3def1 7f85d480-9463-4a6d-8448-f0b315859210 d09583c4-6ac8-4055-8e0d-37e2bc1decd7 e97fc81c-7983-41af-909b-db09a4bbcb4f 18c3d11b-2405-4a03-9afb-938d983655b5 78a6348b-66a0-40ea-a3fb-88df95899a5a 360123bb-85c3-43c1-af2c-28e79d2537d1 4d789a9d-96ab-459a-b91c-e5de0107e3ab da7cf570-61af-43ba-8591-18c4a6e04bab 43768116-e9a6-418f-a0b5-59f34001a47c c6f8a700-44b8-473e-9e14-7c2139e266be 0f56855e-bbad-4b3b-a7bf-58f94a923cd0 982d3b51-5ce2-45bb-ab71-ab127d3594c3 d8e4582f-dc6e-4cc4-b666-778f53e5d5d0 c05efa2b-66ac-4d5f-9024-e46555f8a495 9b1cac7c-ff1d-43e3-ac02-bb299ca45979 b70cd188-fe4c-486c-9329-838b649f7403 5641ea67-4c3a-47c7-8193-9eaaca06998c d82e93d7-9c6c-4693-99a1-a3250c24e9a7 c9fa432b-7e28-4e08-a4be-9fcee8b1f0ef 681e835c-e0c1-4c8f-bb11-7c8aa086e93d a0d7cf25-5bbb-468a-b2f0-14d2b3aa642c a35056d6-1c64-4edf-b36b-387c1fa5d504 2836daa4-9edb-4105-8665-8897be668969 b0b77ac4-abc2-45e5-99ac-f59d25b4b320 5110fda3-99da-4bcf-8892-168a21d63689 c2b1eb13-ae0d-4303-8b38-0540a19c368c ba4a9ffc-2e84-458e-a80a-0c61cacd344e ff9461d8-da8a-487a-b12c-ca10042298cd 8923882f-68a8-46ad-8d9b-01e860283185 d35bc4c9-650a-4b9b-83a5-03bd68bf662a 3f4d1ee6-75e4-4b6b-87a8-951933221b97 1740ded9-49e1-43d4-938c-654348b02c2d c73d8197-30cc-4577-a94d-350a8c802722 3c7d6c29-2d8f-407c-9b29-4969895c8821 6d89e8d9-147c-450a-94f6-b58e78ec53f1 2bbd10cf-cece-487a-bd1f-1bb452e60758 bbfc6b1a-d895-4080-8a71-4c981f5e88bd 7d95df4c-106b-4cfc-a2db-7aff8756bce3 785d0360-2912-4c3a-b797-cbf14de849af e39095d4-4c76-4a2f-94a3-35c631ac9a76 f5e3230f-1592-4950-9e47-d9c53be8e32a e8b55758-b51d-4623-9d44-8f21de355c6a c66c51e9-0c07-4875-8110-15562084b209 41192ed7-4638-4389-a24d-c5515bea69e5 c1bcbb05-a378-47f4-8fd1-ded763c33297 ddd0ed23-858e-4c2c-85d3-492264d92045 fc4288d6-594e-465f-ac68-426d415c295b 3683b7d5-d361-4f0f-b261-6e6dba1b4b07 39c512b6-55b1-471f-9778-c33a33e16d29 cd68c5de-1e4a-47bb-a9f6-f9b4858fa2da 989c9921-e729-41dd-b18e-cef44f6357ce b5cd3b95-bae4-4c15-a701-ffef97ca059c a8bb276b-69af-466a-b9fd-f8fc637e4571 2b2b9879-8f54-4145-9f02-47325915b01f b6de960b-1d2c-40cd-9e18-d93e39469918 577850cf-0ad2-42ac-972c-e4fe0c034a9a ec40ec98-94ae-4a34-86bd-87e845a77df5 0dc7dce9-0772-4693-9346-7c9e5da0a79e 5cc4cea5-e366-499a-9a3b-10c22bceeda2 83fe6346-1581-45ba-b7b6-edbc411d7093 d29dd0b6-914b-4694-8647-6af63e4adb3c 67b51bf0-f317-4ca9-b728-464986bf4dd6 842ea428-12ad-46de-bd37-244907b3fdbd 9eb32d47-c8e5-4f0b-b284-97ae85953357 86e0f7cd-baaf-4be3-a396-0e42e11d6dd0 ac523372-176d-4351-a4c3-370c4ed219a1 effd41e1-d43e-4ee0-acf9-a22274b5e8b6 a81ad2a5-baee-4219-9249-bf06221ec446 205739c4-3c9f-4cf9-9d1b-933e6b84b049 128bd98b-64a7-4dcb-852f-f6ec4211278c 5e239b7d-4377-41ba-8f56-a16a37abccde 68f0ca76-5d4d-4d57-adb1-9444146d3332 7b6ea9bb-9356-47b0-bc93-1c2d0f1ed6c6 b485e1ad-02e0-4b91-a347-d04325fa36d6 18f8dce4-8af4-4f52-b9b1-76140f72eca4 ae7231d9-e451-4240-ba37-9a225bc7fe04 76b55822-af3a-4c50-bd7e-7dbcec6ee57b c8ae2399-d219-4110-94fb-cb238f105af6 25027451-442e-4ef1-87e2-129941c40113 ec228023-164e-43ba-a7bc-85c0e6511144 b85167d1-6da9-457a-9850-b8c6308ccc93 0b09d6a4-9b3f-4190-aab0-6020bc489b47 463520e0-dc80-485f-a89b-75796024a949 1f32fce9-7a97-4460-9c11-2f22722e82b1 2bd327e7-101e-435c-a66e-f14d02a81d7f 59939eb4-bb93-45b2-b6fb-3293c38e718b bc4c04ba-14e9-4613-92fe-2ee006ac1ee2 827df173-5b74-480d-9484-0ddffc9fbeb4 f2ce4d37-177b-43c1-97c2-0ce75d6d95af 8d5cfd51-fc4a-426d-bf20-a788063c598b 887293d6-f8e4-49eb-931f-ec3be3b28765 df2b15a6-cf77-4dd0-98d2-1436b0ea443e fda684e1-66a0-4081-a522-f9dc7ad3da3b ca03cf8b-f6f9-4a58-85d1-8a5ff21e8ca2 5b5b240c-0b2f-40e7-88d6-a22cf4d226ae 9f5c4502-3117-4e68-b318-27f864d24c4a 90e39b71-8a2a-4d4b-ae1b-c1ca3f9fab6f 352e6931-6d3b-4cfe-b607-7ce328b8a575 706c6c85-fc52-4735-a26e-fd8695415919 3c8c96a6-70bd-445f-8271-bd3994923c0d 8b6989e4-d362-4fe8-ae37-b2ff2f5fc890 9384b75a-3e51-452e-aea3-c9feb8668e84 80342fd7-c3a2-4bb2-be33-1be3f74a601e fce7f125-b981-44e9-acee-c0c9dd69638a ddeb26c3-d0e2-4bf1-8927-47fc9ab6e62e 2a89d8b6-c29c-45a2-aee3-406ceae9c252 0369c10f-ac14-4999-a8d5-88a827163bc2 9ff57a44-f4aa-411d-bf15-1b80ba1343e9 e808d06d-ef62-496e-9a80-20a5eca0f75a 2bdd177f-7123-4e20-a508-fdaf384ed2ba d34f61e2-938c-4a0b-8062-3bf641126834 7791fa6f-d971-4515-85cd-f43f0a91f31b 3c35047e-0c5f-4a42-8fb0-aa6df40ea9b9 26c76dc0-cec6-49cb-920c-1a65411b7784 c4ba9733-7afe-424f-8042-d1147b802479 82378b13-7080-45db-84c1-58c34964ebec b1d8bd45-e3a9-4c1b-816c-c101393d4d04 a64b6f3c-2c1b-42ab-bacf-32710f28a877 39403e3e-9917-40de-98dd-c81e125ff6a0 ed1e3284-0791-404e-b8da-7d7c50aea271 9d04a9b7-c188-4598-9450-6bae2648dc7b 07a4428d-6b02-4889-a3e3-ef0141977eb2 5bfabb4c-bd79-429b-9fa1-f7d8773d8c8a bf497345-27f3-47a0-99ec-217c7e949edf d802d610-449f-44cb-a760-299daee0b9a5 6da13c79-21e2-4f46-a709-9afa5532bafe dfcf883d-1b50-4424-a91b-5f105750f2d5 8c79014a-10f9-450d-955d-a946b1049c3f f86e05e0-b83b-45a8-affa-f372c8aa874b 7ad76543-9d13-4f8f-9f31-0199f52c4429 788f6270-cde9-4367-9173-9796f92ae0c0 b0cf43ce-b72c-44e8-9dcf-d3fb99d201b0 cc400ae3-1f5e-48d9-8974-3af122ff1329 94695c02-950b-4bbb-9e5c-d613c40c322c 08221a00-3b9a-4270-acfc-fd808cd28ac2 a9194083-0cfd-419f-b908-7416ece58a42 c3457ea7-9ce6-41c8-a7aa-61da2da1dec0 245acf6e-e9e9-4c13-b4e8-857fc32467bb 0d7b8284-154c-4d04-8553-92b3565fa40f 51a7df51-bb01-46cc-b4ea-c832acb9b50a 1cc8977c-8af8-4bac-b6d0-6a6077f5d545 3aa04e62-9656-41c1-977c-2a9e98792e8f e2d6bea3-09b1-4e1a-8a9b-86f6fd034b10 4e8117ed-bb89-4092-b7f1-1f64f58d4729 82aea04d-f4b8-45dc-b38e-de74b71d19e4 c521e570-4595-4886-af3a-df39dba18855 e6bcfbf9-f886-4002-9de9-b0dab8c670ca 545b4aa2-e13f-4cc2-97e5-5f6bf8c2e5c4 577544aa-8899-4a08-a7ea-c92c922bc2a6 5ca407ae-0371-40f5-9e33-24cac3347da0 d24aa425-1cc7-41fe-9eb8-f654a3e04210 31425f51-9af2-46d1-b04b-2a938c21a2bf 07e96dda-87f3-45aa-bee5-f896ce630e84 4012bfc6-2571-4087-9dcc-2e321ec7e092 95eb775d-24f3-464b-a1b4-3511f9856174 8e4e22e2-7538-4545-a06f-2e3b2db88d6b e51be32e-dace-404c-87cb-303f0b7294d1 d705eaa8-0452-4393-8a09-e659b1ee29c7 6f1012e5-3918-4969-98f1-7509bc9960e4 5febbce5-7629-4cfc-8153-8b44747fa974 7a6b48ea-43a8-4460-ba4f-4693fe899c0b cbfc35c6-e3ff-4877-921c-40aa9fe433aa e34dc787-51ae-494f-8261-8f04f0d42ee9 f74885c3-2b3d-48b3-b9d0-4071b593e398 3fda5ac8-e89a-41e5-a494-dcbdbe61b5d3 15984ab8-61e7-4ef8-a595-c5825ca59fbc c52c1a18-efab-40f3-a220-9d6310234dc6 ebcd0530-c47c-415b-8573-84d1ba3b6a7a c5a721ce-95ee-4fb6-b3c7-1ea74d70b722 23073c0e-954b-4b03-9b7c-5846c4fa749e d11e4d2e-b28b-463c-803b-32ca564dfdbf 20fc14aa-59cc-458e-99c2-6cef1dba1c96 d6b7065f-4a5e-4288-80b8-f8d056cef693 0112453a-c858-496c-89fd-2c24fddce79b 75fa2f0c-d6dd-46cd-9644-839f901453b1 430985da-f477-4d32-95d1-68ba6fdd4495 25e03a9f-6def-4aeb-83cd-3b0491ff1eca 2505d4da-55c6-4957-9ffa-916181398a38 47d72da6-a51d-4188-8d83-33337680debf 85a8a5a3-26e2-4f65-8c60-a627e7a194ca a12380a2-d0b2-4a42-9417-c90460ade943 aa4fe278-9db8-44ed-ad1c-ef9080300f40 77a1bd28-6b65-4670-8be0-f2dc0f94866c a190c3d4-f6f6-45dd-8159-baead1ee3bfb 7daa7270-8802-4979-8a44-4db96b3d759b eeabc3de-525c-47b5-968f-5dedba4d4e08 dd539553-9b2e-49af-92dc-be35a74e17fa 2aadea10-63a4-43fe-85bb-3e6c55fd0827 52bce2d3-1261-437e-b968-d4e0747e13c5 26642eb1-6055-4fe7-997f-1096eb08114e ea9f357e-3c64-4c98-8060-c3c6198741b2 9c6869eb-240f-4780-9833-b3fd6bef366f 18293fc4-0527-4035-ac42-8543a1daf43f 04579f8b-70c2-4528-8558-9a809415ca24 32a5ebfb-c352-4fc1-93d0-4accea00a3ba 5c5f5837-2be3-4214-bc03-2d948d9016b5 d55ed21c-9b60-4a5b-91df-fa8d2c4fa86d bf130246-3b1f-44aa-8237-82f96465e9e6 7d6c4b55-f586-4107-b047-2ae0ccd46dae 855d5adb-ea24-49db-a8fa-bc7b9fd2508a 72f3994d-0756-4f54-b414-e459f999dca6 f7462c80-7a31-4f00-be64-38dd9dec7f26 ed4fbf1f-3704-4005-84aa-6d9a1d3bfa49 abf5fad0-cf08-4cc9-a155-733fc56c7c63 af43ed9f-f04f-47a8-b285-8f881d3cd825 52627568-696f-42ae-8abe-e42a93a20ef6 e5abb85d-b744-4a12-9e4a-f0b9760fb2ba 43201374-dfe5-4e69-9909-54e69569b44a a738029f-154f-49c7-84c8-cf93bf33ffb6 d4fdad19-c066-4e6b-810b-b98975abb943 caeaca85-77fb-467b-8c2c-ea51b33e4a6c 6453efc0-c656-4711-8e02-af1aac9c1701 a79c495a-ff47-4b88-afe5-379d7aefb3a2 9603b4ed-d2ab-4047-ab36-b8d2b721f813 a8fc1159-658c-44b1-8cf1-2bbc194cce52 c097c48c-57ff-4fac-b2f5-2bb22b9f5921 4a62079c-6aa5-41fc-a840-72659f63fa5f 31341fa0-cf4c-47d7-9934-7daa8615fd5f 0744cdf6-3b71-42d1-9787-5befa672c216 ddca1c44-3730-4af6-b10c-0861d5de25ff c322fc98-2b23-4337-8f0e-4dbf9c0eeb3c 76871dde-dbb9-4d5b-a4c9-ad7f968a69ae d800d566-adde-4c22-a70f-7c5a91ef3bb7 7504208a-3a72-44df-b337-7fa96da4ca71 419c9010-af10-4eef-baf1-086e5be2dd72 d73e6bcc-4c34-4dc0-aa3a-d44280b13db1 82f87cef-f9fe-4e35-b4b7-c1482ab8a31a 6f7b28ec-3f88-4fd0-abca-451c78a8b68e b949f05c-80cd-47b1-bfe7-e0f875cf6c68 01a2b530-b94f-4f74-879d-9cbe0485ad4d b9620a95-9681-47b1-8a63-c60ec33f29f6 7629f52c-044c-46e6-b09b-2f4aa4d807bf 264eadd1-554b-46fb-a9dd-66d58095ca46 ae8afde1-e957-4614-a934-1e030155c5cf ae3cf621-78be-4866-a275-c00731c79cdd 0c84cb58-2d86-4859-a8e1-d96524b766f7 65817a90-22b8-4372-80a9-870329e924ab 9cb3548e-837e-442e-935a-0685aa17bf8c e4c2e8be-ce79-478f-8745-cc2dcc91103a 17c8eb51-f57b-45fd-8769-c823a6f8bbc8 c12ac69d-a0e1-4fb6-a8dd-e4deee88f0f2 57dd625e-2511-4d3d-ad26-8abbd01f0784 c9a6f44c-362a-481b-8433-7069397ab579 c480d48b-3dc7-4723-9b0a-f4350622ed0b f1837555-0511-4d75-9272-53a5ba4ffdb9 228f36dc-d11f-4a8f-b4b3-7e7548b72ecf c3fcc877-c6fc-4246-b100-5b5eacec9bc7 1856fa41-cfd1-4f40-a7e3-a8a442d05bc7 cc730670-819e-4da0-83f2-61a2ec70f014 182bfc46-2690-47fb-b4a8-680e39635dbf 81f2b452-342d-4629-8566-98ca9b14baf8 e4dd82dd-08c8-4502-ad23-07a796450596 cdacac30-2f15-4abb-a6b5-ea2e8810b6aa 0f2fadbf-3256-4d35-b113-125bbb9b4194 c1e756f0-6a64-4b57-bf4c-942e017e9ea6 485d4fe5-b809-47bf-9f1d-927be031ed20 edda5afb-c982-4e22-baec-1e1edca0bc84 ac116553-40bb-4547-ad84-9ff9356b50b1 a25a0f46-8944-4f2a-afe1-7c21d184d934 4a498153-abac-43fe-94d0-1f5c255d911f 2dd35fda-09ac-4644-92e0-3780d121bae4 51e5f23f-62e0-48c2-a643-9dfaf7ef5d11 e8dc7974-3a53-4063-bfa1-4e5b5fd60279 f8733d82-70c9-4013-9b00-01eaaa4ec307 e030bab1-dc66-4438-b302-a146d73d7a9f fc9b6d3d-513d-4722-bf4a-5ecdabd38d8d b3d337a6-132a-4e7e-bd49-9e1be1e8daee 64a10084-e977-4d6f-89e4-619709b72fb8 3966fee9-eb3d-4d16-a97b-b180ea17916c 4a7768f8-d88e-4189-a7f0-94718a2cedb0 8009812c-ef32-4ae1-b4a4-b28254113553 08be0a10-a14a-45fa-81a7-3a119c2d8383 b42300fa-20f2-421f-bf98-32b960c7e245 ecc2f155-ea9e-43a9-acb0-b582da175017 7eaab92a-1293-4e16-a930-ff3c6e0e574a 0846cf15-336f-4cd7-91e6-a2bc6821068f d98e140c-98f9-41ab-8883-eb3d5c6a48d4 f64e5651-441f-4aac-a5ff-a34c755b2b47 cccf49cd-cbb6-4641-aaca-f84bbcb19145 aac55465-1541-4798-a4be-89433c94d3b9 e66473f8-f7be-4417-b310-12aa8495bb8b 8b5129ea-a919-40e5-948f-20a9bfe6b503 4e10becc-1428-4cc9-8ec4-73ffbb6ff4d5 2d4579e3-bb0c-4bd3-b8b2-718654e0dd89 8c64ac29-4369-4bcb-840e-6ad3babec34b 0f23f8f9-fc4c-4e12-aed8-fb49f6b55440 4062ee6a-86d1-42ea-9378-fb551ab06b2f 715b85b7-eeb6-443e-b645-c6b6d38106f3 288ddb81-25b8-40cc-ae13-2c80bd2fddd3 de57778f-6ed9-4cfc-98ea-1c8650f7c777 6e96260a-601d-477d-ba2b-f51106333bc8 019c3794-22b6-47c7-89b0-786305f6f3c2 0822ac25-9ae5-46f0-8439-2571d4def192 21f65e89-5767-496e-84dd-ead19a6347d3 69e11ead-dcdc-4a78-92de-4d16657d2b1a 3d93835e-0e70-4245-9352-b902e1a58632 804826c1-02eb-4895-a67d-71827f002f5a 65c97cb6-22eb-448c-aad2-ccb46899c32d 8f3428a3-0604-4adc-9b9f-3af0bbfba33e 06128834-3c8a-4c3f-84a8-c0b0e34f404e 0bfed603-20ad-4899-b775-840c520977d2 e67782aa-8493-45c1-9131-14ffef9be84a 63f584b8-90bb-47bd-81a9-53a29b02d800 6643dc0e-3381-4fed-bf0c-a7c3a8b5c235 43ac9b96-9969-42d9-824f-52e12c5296e8 638f6e6e-b613-4f4b-bc3f-c32770a925f8 59551738-9c36-4139-bc7f-ccc38017041c e4adadf3-b976-494f-af8f-846e4fe5f503 3ca5a37c-fb38-44b1-a1cf-5649f88c9d2d 0b816b5c-dc9b-4347-8515-5b0769a615ee 280cac4a-b5de-49bd-bf2a-69281ac270b3 4aa455fd-fa98-4634-abfe-879830943a00 f59207fe-87b4-4fbf-9b59-5b613b9dffb3 9a3e887c-6739-4213-8975-f9ca3883280c a782a579-ada6-4661-a6fd-2821a7364bd9 294fca95-addb-45e5-a8ab-be4f612d8294 218188f0-17cd-46bd-bc7c-a5352540d550 df663c15-e78e-44aa-9a18-f5f3faada08f 2b7107d5-df57-47f5-8dce-2e1235a13619 ddabbf94-7919-4265-b1d0-2e061ae329c0 36d70eee-73ed-452e-b271-2cb49b437a81 e0e89f57-303b-438b-a67c-cfda94466358 6da13471-bd78-4c48-861b-b6e76e833df2 8cf6c59e-17cf-4dde-bf28-e90711fa98d3 8f6025ee-a804-4309-be9c-34b7f8533c04 4428a0ce-d858-4b30-9f18-8174e18e39f1 4a7322d1-5480-4ab8-83e5-bdc159841a7b b5069732-c474-466b-a745-20ea9f76366d 4ec6a708-bbd2-49b6-b4db-f5c6a8d481e5 b5d8bb86-1565-478e-859e-b81dbd869bf3 189408c9-718b-4a2d-9287-cbf019ed6eda f49a56bf-0cbb-4088-87ec-3ac1192be54c 03e6d737-239d-4f70-9f92-d1a1a6c295af ca4e7906-6a47-48c3-a3ed-95c8dd2ca704 bf785b37-06aa-4d59-8747-623cbb3efe82 cc0c5564-a218-4694-9b4e-fe6f56350036 2b7da022-e6a5-4476-b35d-fb2a894f6981 993a09c6-e3e1-4b7a-b5fa-2730b262209f 1d8283e4-204f-4d39-85fc-3e4ba6d1d71f 470febfb-b3e5-4686-82b9-e278eb38b527 1a434f98-74e6-453f-bf54-d0a7a19d51f4 285ea28f-11e8-4dab-9f1f-dd1c340c8982 60135e3b-de7f-4de3-b6e7-f588b5b267b8 56fc786e-65fe-4ee1-9d00-2e7600e989bf bf5446c0-2080-4233-afe8-6e33381529f1 5f2127d2-f10a-4cb5-97db-ab690dab4dc4 d603629b-c842-4a73-bf36-09cb70583c93 c89b7aaf-31cd-4f22-b071-ed2f3112ccf7 ac73de85-f048-4b70-9060-47483f70c2be a8343610-0c21-41dc-9fb6-88a0149cbcf7 23d6b782-1da1-49ba-a4d4-dd276203b6d2 27d90e0d-7557-437b-8150-c0b2a2347e47 2de779b4-715d-40d6-8672-af3c923fbcce 3123ba64-f6ec-4453-be52-6cf200b4d632 c8d29cb3-3658-42f2-98d3-49c6c9cd2a69 09a0b221-eceb-4476-8962-1ecfd4e6d23e ae784958-f9cc-4117-aa4e-b2454612dcec 6e9d98cb-f515-4ec6-9c2a-f6a32ef147d8 575a4113-d163-494e-8f39-a4322bb4de76 5bf1ac45-a908-4488-87e8-458d73597dcf 63b24b11-6695-41db-a4d9-96b2275a1605 99d40997-59c2-45de-bd7d-784a82a88349 212cddbd-bd2e-4945-b227-25a45489df4d 8e18b4a0-5def-4ffe-bcfb-360f9053620c 8ce2f869-23d0-44f9-91f7-7cadeb715426 46e5ffdc-bff1-489a-899f-480c68e175d4 8984ea3d-1d6b-4a54-b40f-5b3c6b4cea45 9e953a49-5cfa-4a7b-a42c-072d8dd84a28 bdd73e0c-f2c4-4e3f-a1c3-507b98cca42b 02c38fe3-2c55-4add-b6c9-051bdc20c561 0b6595bc-8aae-4958-87f7-4fbff2588abf eb50a39a-8440-4435-86a9-3f198b547a3d c35c7c39-1dbb-4d15-bdb3-a26b6f5d355c 02532e4b-d7ad-4d49-beda-638fe657e159 788a5231-2506-4c81-bcfa-7735d9aa2780 d6d5a612-6373-413c-b48b-ca8afc95e8c3 d801549f-1259-41ea-ac43-7afa65bb1303 07182f94-b6b9-4771-a805-386bb92c7fda ef28cbc4-7afa-4711-9686-b7d845b5b34b 630b289d-9415-4f64-827d-f3dea9a56dc8 364426f1-8424-49ec-abbe-01eb63eb687d aafc30ac-bc6c-4a81-acd8-b0af07be2fa9 50e42ae0-452c-4dd0-81b8-cba3ea844c89 b59d179c-db26-4fc7-9fec-8bcf6f0d01f0 95be1c9f-f35c-459f-a7fd-df5b594924c1 59727421-684a-4442-a655-ecacc06950bf 3173a528-6285-4ff0-8129-51a7b1e416dd 4bb75555-7df8-4acf-b6ef-1163bd3324ab 05971cb7-2258-49f1-af32-8444ec4acad2 c9a9568c-66d6-40fb-872a-b278074fc315 54b177e9-4cf4-4a7e-8aab-85abe297d8d0 1e1c0607-5a79-4215-832d-b2363bd3c9d3 3f09197b-7f4b-4bca-bed6-1c596653b9a5 c3274dc1-ade6-4be6-8f05-31a2408099f7 0e48ea8a-40e8-4db8-9b29-20289b549161 63c82e16-c714-456b-8e45-ac64ad86b9db a5bcbf25-5e7b-4c28-9557-6c91446fda08 6fe987e9-73fa-478f-a212-74dac68de9a9 21f2b09d-f765-453e-a14a-fdff8b5b3950 0ed63a85-97cb-4c24-9505-3bc9f83b303c 8c405333-5084-41e9-8ded-803307dc6225 f3c84e2f-0001-4f23-a284-64ef2fc50605 67767b89-0994-4313-845d-5e4d0cb4f98a d3370e67-550f-42c2-b631-f88ed99488f7 93dd991c-ab0d-42ec-b33c-44c931a115da 87bcf585-3a89-4817-9bb9-cdf5f76d4866 36d5a050-ad03-44ae-954d-5a2052528ee5 c133fa2a-fb81-43e4-92e3-7d36ce6e5d3a be7667d1-865d-465e-b77d-031c0de95fc2 e8677298-50a9-402d-9072-b755c48137fe b7ef393a-65db-4273-afd9-c70241f781f9 e0bb4a89-2582-412f-9df8-14893ae07cf8 a02acb8a-5ae9-4986-aace-f22b16e4669e 6b9f9e90-e8f5-4b13-a8fe-8f91aed1b50b b1775adf-f6fa-4516-89e8-114259776db6 e7cca143-656a-4bd0-8613-8d006dd1f149 b3cafeb2-8fb4-47cb-bb4a-b2dfeb99cada 26aa3a07-5bcf-43b8-a64c-1e9af886e442 14e5adde-7d34-4288-9193-1e131e7ab79d add9e06c-dff4-48c7-9abb-e5baf8760425 1579eb76-026f-4abc-944a-516abec361b6 2347cf97-cc4c-438e-85ef-cda5a803a922 853e008a-88c9-4dc5-9468-8e5da4e4c912 9a939114-3874-4252-ad05-63de74d17910 04b86125-9b64-4edf-b734-5547b581b27d 56c759e9-9107-4432-88aa-11a16b91141b b2638a99-b106-40ab-bf6b-800939ba94da 79f62a3d-9fa4-43b9-bf8d-29b299a28ae3 fadd56a4-f55d-4fb8-b8ba-a6b4762bdb39 08d01ce5-cfe1-4d85-855b-93395d6a4b91 8329177f-d962-4d35-83ac-7d94c9350000 bced702f-44fb-4209-9f8c-e91edfcef98b e08fe11a-9338-489f-894d-781d7c1ad2e4 a5f3ca66-c374-4b7c-b1a9-97838fa5d60b 49ec421c-7779-470d-a715-8368460b37c8 3fc94ac6-1206-4919-a328-411b538b6da9 a6126baf-9e7b-473c-9642-b59cd6f29067 f72efd48-f14c-4d23-ac0b-1c10dca181e7 bb284156-dfc0-411b-a5f4-9f6e48b9a986 84a17326-7574-4586-a813-14996bdc1ace 25bfc743-6e36-4fe1-bf0d-e7a08c39a348 3693b07c-195b-47d8-89c6-059c30db2123 f70226dd-6a13-43d1-824d-dec325566a93 60620eda-68ad-4bd9-8708-ad860c38a884 18a6f3c4-4818-4918-9d17-34202d51e489 37caf06a-c982-4fce-be96-11e65990f9fd defaf18e-ebd0-4711-9fe3-a7a582669493 f7183dd3-a618-4e59-853c-d585515ebe0a d88327eb-5d58-4be4-b152-10a93bad6216 ceabc911-a90b-4678-b5c9-9643e8d48016 e426ee5e-85ca-4834-90e8-58aeb044051b 663b06c7-f473-4dc4-b982-a3db4a966c03 2b60d3a5-ff21-42c7-b1e0-7fc4b1a0a518 e5ab67be-737e-4a34-a2c1-fc3451c18361 40ab0b6a-25c0-4399-9c68-dbdd499c8a25 49a2525e-45e2-431a-a6ff-6d3fb8a93099 c7ce3f4e-f66a-43a3-b0b4-a89c304d1e1a dc6e3933-a42e-4042-94d6-2f8c657dc948 ff9ca3f1-ecc1-46c6-8807-8999d77b30da ba81965f-e5fc-4285-8424-0be8bbf4cf05 3d4ba0d2-d238-44a4-b418-8d3f4d2d954b 740aff77-035c-4fd4-bfa0-ff3ad85defd4 94ac393e-e2a8-4064-a4fc-05db0eb67f1f 21ea52ba-a366-4902-88e9-893b9a73e4d3 790c9f95-eca1-4128-9e93-b1aaadaab666 f5b2a280-4f94-450f-bdd6-40926c928d84 855a1a84-f3b2-4142-a12b-587513db1fa9 de8e289f-7d3c-4ee5-84ab-44e65a13d221 7e8302e1-f4b8-42d8-8614-09dedbb817f2 e3d4c6ac-d7c0-4fb6-8030-b57aabca289c b516ffff-6ef8-48d8-8812-831a7d5e9b96 23a66323-f0cc-4ea2-91ea-47a7be201f49 d2848715-aa06-41a8-8d0d-95e63332456a d25ebd17-097c-44bf-aa0f-99c165d6ee57 dfd35574-7dbb-4d80-9ab0-e55e71fd20be 09384087-be0f-4a4e-997d-435efe20a0e8 cb243e11-e5a9-4dbb-9a79-897cabde6d11 f803d08f-5b9f-47ed-8f87-c700683e3996 f45bab50-0bdc-4a12-9f00-c82370915242 2524390f-70d3-4792-ae2e-a57d5ae84274 c2502af8-811e-408b-ba4c-05117d32da92 c5dba8d0-b0aa-49b5-be80-249a58a8cbd5 849cfdea-1c5a-4262-83fb-f3d8a7432535 8a96a75b-2685-4672-8e69-be4ed3c89904 16e9e7c3-c9b3-45d2-bb73-788e86db121c a9a6f155-a572-4cfa-8b21-a156f0791fe9 64f52cd9-b60c-4c1d-b996-b2669acd41be b8ea95bd-50b3-42c1-a60e-57f7c1c9b258 4ca9176a-bcb6-4d22-9f09-0729544db944 043597d1-5701-43a5-8f3d-6c6c76884b86 f7a81778-cc41-48b2-ac95-e2f7cfd4f72f b8a66c99-97e2-466c-87e4-fb7689ba50c0 74806933-cb78-430c-93aa-d1bc885acc2a da5b1064-9660-4b6f-9640-09bc2fdfa25a 615c2b81-68d0-4a88-a3c9-ad8518b6f666 8f9229aa-1aab-477f-b619-7fe1bb9a50e3 9ef5663d-13c3-45fb-bee2-87e24a3d8f6a d90c4131-c0e5-47ae-9ccd-a4649f5c03ac 6a332161-8940-4df3-866b-eacece096dce f316445e-7231-4994-9f9f-501f0339b07f d81124aa-2cea-482c-9f5d-b3ca7948b5b4 e9954144-168f-4a88-8586-b6033eb0e023 27edbdea-68fe-4515-aadb-36789747f488 eb4b4770-a25e-4adc-8603-68383059c68d b5633169-21e4-430d-9524-57affc29296b b53c6dbd-e92b-4679-816f-67d3b2e73dda 575909a1-e91c-40b7-b0f5-9aa1f886abf4 c9f86861-55ba-4340-b738-9fbab2c73a50 49239ae4-39bb-486d-b7a6-08c1c20176f6 46baf3b2-39d2-4ee3-866b-cb1b3e510084 b4d7c4b8-2d49-43ae-92b7-630161cd992d 1a5cd287-c366-49c4-953c-85a789eb08a2 a62513a3-dcbb-4539-8860-8faf974662e3 087de8d2-0d6a-4e88-9a1d-8bfa8f4f402d 404cdc15-8a6f-4ae2-bb63-d6f073bfd8e3 6b71bf57-5b53-4652-80e6-329add12e25b 0e201ecf-5ce2-4deb-b58c-f6db0f240dab 774b143f-9854-435b-9250-a9b5a3ac52d8 8d5bbd30-5f92-4b5b-8a5a-b096de18a22c 0426b074-ae5d-4ce8-b18b-b5e1891e3f5e 35036089-04c4-4794-b821-395f2110560c 42947ea1-3daf-4418-b3ae-4358a8989ba7 c42843ee-863b-4619-8425-4db776c51092 9087993f-8fa4-485c-a58e-e1c182e1e1e6 fa917696-78ae-414b-85e2-95a1b1571815 dfeb6d23-567d-477e-9536-b0741234c8d7 d68ad27d-e0b7-4d81-8301-d921a2405b71 0a518ff2-a711-4f23-9003-19315ef4995c 94863049-b4ac-4c9d-b6fc-ccc30ff24628 185943b0-8228-40a7-9de3-1c4ec8ec7d79 a49734b9-dc8c-4975-8122-f248b30aed0a c1fe5b6e-8112-4b13-b6fa-adb7eaa6602c 6d59626c-f4ff-4ed1-8f7e-46f4ff0792fb f9e9f3a2-cfe0-432c-bcdb-3860d2dead33 f215ce8d-d009-4230-9d21-a998026e74b3 5d587e01-2827-4d68-8bae-3cce39c6f28a 74f3b9ad-66d7-4065-bba6-2fc1ad49cd1a b0455a8c-adda-40d4-bd80-a246fe8d94a1 a2f7490a-8eea-47ba-8f81-8b47a28138fa a8b73667-83ee-4263-8673-a7878b953c87 42929f2e-3fa3-445c-9c7e-9b0ab44c4d2c bd675ca5-3734-406b-a77f-83db12cc0056 bc233a34-59bb-4663-8b28-4914481688ea 56895d9d-857c-43b6-9207-62e4fe6e74c5 a1d5987d-6379-4270-923d-a9a1e2e603d5 8e6f374a-c3ed-4ba0-84b2-b209ef0c4299 48b792dc-5474-412a-a59f-1c98757b37e2 2a7f6a8c-4c36-4e83-9a72-ee47fb207daa c94f323b-5969-4cd8-b850-f79ef45690d3 586381b5-cffa-418b-957e-8a79b3b236cc 843ad55d-80c5-4206-b9be-5a9162ef80d7 971db233-8bb8-4296-a734-a32de3e72e68 684ca5ac-9943-4954-80fe-7a2673cf01fc 9e6a396d-20b6-452d-8335-1e52c31870e2 60b6ebc1-0f82-4e9e-87ea-fd59c2f6793a df7de12c-16a8-47ec-bc09-ea62f6090f01 4f78944c-63e1-4999-be81-3920bf2fb9f3 5f686284-fe23-4773-99e0-8f93eb400715 3b4207bc-9b38-475a-ae17-450f66c37c4b 55cf0d3f-9e67-49dd-bf29-84535a349fc6 68576a93-6da5-4d71-a6af-50ae9e7204db 5e5105a2-e249-43b4-a2c9-371d0edf24be af6e7099-7aec-4100-8ea6-94e258acccc0 1e3d2f74-af41-4e43-93df-9193ad660c6e 33079959-1598-471e-b21d-be8dfd7d1522 b5431846-da0e-442b-b432-7ba16b624832 356f4102-9804-481e-a906-521095d52633 5c6d2fc4-6a4d-42e3-9dd2-4b108be6b91d 44598fed-7002-4e27-87d9-48625b51a757 835f6a88-0d7c-4a60-aa64-6be6e71721bb f4f116d7-082f-4cf6-a7ae-965080f9321c c675406d-033f-47df-af68-ff11733081b0 25f3f7fe-82c4-4c25-8f36-49d536a087e9 766d2f4e-91eb-46b3-8c0a-239298d925cf 8b99d627-9d65-4cb7-a45d-c07bc600fcc0 26266251-5a39-4928-92ce-34a2b77d0193 1f41787c-03d6-43e1-9782-02c1ad0fa83a 296c5b13-39e3-48dc-805a-e72007481068 365b51f3-ffaa-4ea1-bb27-d2f601c53633 4fd760db-3680-4e3f-9f1b-16412b7a27e1 a1b9c31d-8326-4543-9b71-2c1f90d87214 9079c096-9337-4509-b762-554c02a5adfc 81abf727-6adf-40fa-805c-d3a0e95e58e4 6aa6a1b3-a50c-4b70-b3f4-b8abc9a35587 6fe5c8aa-84b5-4008-9886-f52307f88b4c d78828c2-7a68-4c9b-9412-f155077a22a3 299332cd-4d8d-4494-a5d9-09df3972b9b1 6fa7b2a3-79b8-4fff-a9ab-6b3214d9971e 11f709fe-effa-4778-9d97-b828d69a9519 52e89364-82d4-4aa7-a5d3-1a9755a348eb d217aafe-558d-4a48-876e-574d04408812 fb9a406c-f7b6-4c12-a6f9-8a75c7ce9e78 05f9259b-32f5-4a31-9ba2-c597a511c818 17d62354-b571-4de6-9583-ca87e799881d ba05bbfd-5818-49f9-a568-cf9884f734be 23b976f9-d4d9-457a-a840-1a50150dd85d 4231de9a-87cf-4b84-833f-ea5e91606be3 26e51025-af43-404c-afdf-39685fe89320 904a1f4d-3890-4f13-82c8-251fa64aee56 ed867105-1d2f-4dfa-bcf4-11d47efb84b7 f57830c5-92b6-4271-8848-fd6c1a4c1368 4caa4cd9-fa1d-4d52-b7a3-42d30c3d9c7c e432a904-a46d-43ac-a7f7-952b14310ac6 bf7765b7-b51b-4148-9a9b-34dda6c06871 fc96c87a-45f2-48aa-8057-d7c66fe8023a 209fc71a-a523-4e7d-8a86-641488dd55b3 744dca59-2ce7-4b2a-9806-3d54818484a8 70d5d1b4-9c69-48af-a705-2e6f42ae5b47 6f44192c-184b-45f4-8cc6-e452146bc14d 258b824f-b9f3-4bd5-84db-d990924fb138 e3c2eac1-45e6-48bc-af7a-ef1344438a94 2024ac92-485e-410d-8683-30897375f371 5a6b2005-24c8-4fd7-a793-c3d5b8478ee0 90073859-e7ae-474e-8337-fb9439abee85 541b1ac4-adcc-449c-baec-e535703ac00a 91c591b2-91ef-4c93-8b97-6ee87fa549b6 39c3ba35-f306-4d61-8f46-4b10c5095636 35156511-c286-4a01-b7f7-541fc2015700 cbdf40c5-b8d2-4fed-aac2-a76477934e93 3a723fb7-dca0-44b0-97e0-ec13c6eafeb6 8d639a08-7532-4152-88ec-2eec102a0880 c494245d-a51a-4241-a8d5-50f38bceb4e7 294b9d3b-1889-437a-a9e8-12cb2647327e 643db04e-64ac-47ad-aff9-0d0b9705ad6b 16d512c4-bc61-4b24-9e6a-61ee9f9dfafb 739128fb-23c7-4c5a-92ad-206ba75376bf d7eabe5c-dc1d-439d-b95c-3b2397537883 def4de51-1ef1-4afc-b301-61deef6dcb7c 78599d14-6b02-4196-b636-553d990e60db e86929e2-d20c-4c1b-a6e5-7288f1b0d415 2092b5d5-f9d1-48a7-b0ae-83ad4b437043 a21cfe85-4e00-4952-b95b-ba4b882a3793 185240a8-bdff-49ca-a901-85189db8530b 1e21e377-bfed-49b8-9f6f-089f23e40256 0a4781eb-caa1-4e67-a724-650bf3e167a9 808b8383-cba6-4266-90d0-cdba911c1b6c 3d525f90-5513-46ab-8629-d7a0c11511cd b7756685-0e69-4b92-ad2d-b176e8b6cf1e bb6c2ecf-a531-4fca-bd0a-aff1cfa404b4 5925ec30-c2a2-484f-8032-d9359874f2ef 5bc4114b-e654-414e-b93d-ba73eecf9e48 ee9e78c0-3dc7-40a9-be16-5a0637c23c1a 183e2f4d-4791-4042-a4a1-16a943de7095 a9cad702-fcaf-4724-a8a4-1cdf6f6d5498 2bf1c2e9-2feb-4cc8-8673-9087c30b9640 93add18e-f674-403c-9305-0475e3705141 b537e607-7597-42c5-b47c-5abea242e013 7c425b99-f000-4f3e-af90-5995e3fc70f2 d84b9e9e-7b8d-4076-ae65-b720117f556f e2ec85a7-9291-4ed4-b2e5-d97604b90948 d8154722-c600-4382-a500-185e1237ec4e fa08b134-9539-410d-9a64-03958a0e1e34 8eb2f1e5-4890-4450-95ad-f2adf78dc88a 7278625d-3ecd-4c3f-b90a-88820db30ce0 76b722c7-d33d-4b93-bbb6-14251f50a1a3 a936ea60-a7ef-42d5-bf02-db0270742dd4 420bb4af-90e8-4ced-b982-0b5335e768ac b6a98590-f6af-4f48-8d78-779594f3c16d 418fbe74-c643-4278-80d6-7dda43c14aff 71890e6b-dff0-43e8-a2e0-e82f6f206e35 4072e0ce-1525-41b7-8e96-e1cb2eab5daf d586747d-95ab-4c65-a4e9-987c41a7c52d 46b209cf-f6b0-49b4-be31-900fddcc2f6c ccd3422b-8d68-4fd6-9d41-4c9c1755e74b 64caef6e-f829-47b3-88a5-3f07bb7c9f27 41f3d5b6-1f32-411d-bbb8-3024da41c9f2 2cd058b1-6009-4e3d-b9fb-04e5bad6401c ab977e8e-cde6-43d2-b304-1fc97927fb0e a5bf0519-24e9-4ea0-9187-45787960c3d4 71ea7422-163c-43cf-914b-ead3ab109c3f 9e1332c3-ccb5-47b1-89d1-e47cf04839a6 16a84f2e-61e5-45b9-8dc7-4fa0a9a80efd f0751d39-2dd2-4ff8-8e82-3e0e3708fa9c f91fae0d-892e-45aa-b85d-1416be3ae4c7 7e3d28ea-c01d-49a3-aba0-6bf8dbd3beb4 78bb5e94-77c1-4490-8a4d-5543fd11bf89 79f92976-f130-4b57-900d-b0579ee259f4 1d93d256-f1f9-4681-a3fd-fc42b79225fb ece62d72-5eee-4efa-a7bf-3834fb6719d0 9a60c0c8-60f5-44e8-aff5-7088ef9fb19e f6857935-0f04-4fb3-bec2-366896ed005d 96da9542-261d-4f7e-8c5e-d7b284b3d4a4 5bc425a5-3313-4079-a497-86d257f7d8d7 7a83421e-71ad-47a9-81a0-6d66eb472f7e a1cc28ae-54fb-4907-872a-d4edff0b4b82 d5d224f1-2ec7-4b81-969c-09aee5bc365d c00496dd-8a84-4710-a06e-d2d2972e49ea 65c5252f-aa09-4116-b226-ca3c0b1ce7a2 4f3f4716-f65c-450e-b04a-5ae2d80d48db 50a93206-a482-4b21-8013-ca5b944448e0 3849a42d-17b9-4ee7-8b76-e9f1e893e63d bdd0a8b3-346f-43bb-bb56-13481158f590 db6de8a9-6ac1-4f5b-a270-cba6185c07e7 fe7b07f6-eefc-4158-90b4-68f64c9db224 82dbcf73-2bce-426e-8b54-83e5f087ecef 2ecc2fcd-457c-468e-8418-6f25f2243f25 ee305adf-58c5-436f-ac23-e994774fb08b 308285a6-e01b-476e-9469-665411fbac4b e43ba944-8252-4b28-8291-05103d5d9ae6 2c86e970-480a-4510-91a7-06813e561f51 5d7178d3-c593-49a1-a2f7-cdd7e54ffe68 cc7fa5f7-0b8a-4945-b318-733e7ac18fbd 9b296cf0-3836-442c-9e9f-9ede26c7c09c c37009fd-8ac8-45cd-9265-3318e6701354 c5992be4-9e8e-417c-a8ca-af3397bc99ef d24fb126-309e-4e80-926e-951583d3807a 8180e235-33f4-4870-8961-7d01169650e5 4e32088a-9d7b-4e8c-b89d-0263f09a0899 423b1103-67af-4201-8a28-cd13ebb74080 747b8a8c-f750-4a73-b45f-2e3d109d09de 39b5c99f-8bb6-4cb0-b387-bdb15489a441 610a3dc2-2231-496c-85b5-6a400598c514 cf72bbcb-55f0-405b-b259-0f783de17728 d035a60f-0e7a-4620-9676-50f7ed38e041 afc868e9-2f30-4705-8ed2-61aabd8b9997 03c97294-7bb0-4dc5-9bf2-7399d984a1b4 5afa9adf-41df-49ac-8efd-b070470d24ec b298deb3-6cc1-4947-b47b-c93556bab0a6 549ce488-60e5-4e73-b8b8-25f7ce13ec35 b0f8ba28-e7a2-440d-a6da-daa748bc94d4 cf410dc6-276d-44e5-a127-bd341d4a1e89 dc2f086f-2887-48e4-a10e-873ecc0a6fac 81a283f6-5933-440d-b91a-1f925406bf69 616e9fea-f9e6-4407-b88b-31dc94e083c2 5b603508-b476-4ccf-98f9-a02f0290b9b5 dc5cf18f-45fa-48fe-8ed8-6034a33a22ed 896aefc3-6b09-49d4-a8e1-fce2cc358765 e28369bb-b919-44be-a1ab-9493f6693ba5 a197fdd5-cfd1-43fd-85a7-902d760ea200 c31d1ba4-76b5-44b2-8c3e-e510a1e71466 f71b903a-8450-4ec2-b7c2-812450aa7337 e21ea012-35c5-4c77-8646-ec28899286cd b0af2dda-12fe-48a4-b451-9f71aa109fff 66bf04b4-747c-4fd0-bbc6-86eaccd2e07e 80b23b1e-171e-45c0-b880-fad081d5086b d62a1e1e-d82e-481d-af34-d1e849d7fcbc 918f8da7-f035-4f5a-835e-70a28bbe236e d8238c57-2d5f-4432-9818-521fe7c0f8f8 39d3ec6b-7746-47c2-baa8-f1089ec92d39 810191ff-f980-4c9d-8f29-248244472560 d9439d45-1f9a-45aa-989e-839c7722848e dff40eb5-3bf4-48a7-9cd1-f2362c10890e c3c2765d-6d71-4dee-8ab4-7df4c69a296f 702c55fb-fbb6-4148-90e7-499f3a776a41 b2edfae4-6961-4764-900c-b2f0bef2cf40 8f175ed1-3f9d-425b-a160-6fe427096562 1c0a1aea-f908-45b2-9e54-778dd4cb5a7e 76630751-7071-46be-bc1e-f0ac18b931c4 0a901734-aa88-4712-b495-e86995519abe 050c69a7-eb2e-4cff-a591-5090bf3b49ff 599ad9b6-c41e-482c-b287-5e8f6ed36f6f fc58f031-f747-43af-b1bc-493c5b39a532 bd09daaf-4fdb-48bf-b103-bd94b452ff15 a208f3ca-ed92-4437-a85b-de2431cb35f7 6a20148c-67d3-4316-9570-7ab4cec72143 f550f65c-bc12-46d4-9feb-056f0649322d 64f377da-7cad-489d-bcb8-8e2fd5788e93 e1efb0b5-ed19-4d6a-bd53-9a758817e9c0 2e00a801-c7eb-4548-8789-d31de6859903 3540901b-985c-49f6-9ca9-11e12e3e6202 bccf9e32-9453-4cdc-a6ef-7338b6673482 dec511da-0eee-408f-88bb-271e3ca9cc0c 817b4988-20b5-4d0b-8784-f0d8d388a9d4 dbd920e2-af3e-4c22-a09a-5bfce906db34 550536c0-57d4-4f1e-9b5f-bbd6acf2922e 24862418-365f-4dc7-a43b-1933f74ea858 23711d1a-6c9b-422c-b9ff-36837b5bcad4 bd59734a-d444-4bae-b023-292aa40097d4 5874ff4a-73b8-4cca-acf5-44808b1fd2db a82542b1-31c9-4f2d-91ce-d8e7ee423a75 aab0a45d-d1ce-4a35-a5dd-923248e366d8 98c5cc4a-4cbc-40ee-b050-dc20266ad910 3be2a9f6-2dac-4778-a4e9-19fa43378114 0e9a5510-5d66-433c-9773-efdb511a4ec7 97357dd0-5ea8-4134-b9da-53105e3e5abc e9efe702-2b07-4a7f-bfa7-82e35806987f 388b4404-91ef-45c1-a35a-2ec80a206e8a afb3653a-a800-4ebf-be01-b75cafd616c1 4234b3ea-9c01-4aff-946f-5e7f8ff1b6ef b1f26906-5f6d-4118-9688-ed4d8d0a04f8 738efd34-68d4-4a4c-b248-d99f1afe56f0 ce32df47-4837-4bd7-8e25-f9474ca3ab31 6244b3fd-75dd-4ca9-bd40-2fdf40067d6f 2e551469-464f-4daa-b436-cd04879d706f 48d524d8-8e97-4838-b125-5f6d0d2bea40 cede9b3d-11c8-4a55-9481-ad452c6b2452 8c729c1a-1570-4b7f-9b11-dac4c2f165a8 ce703a5e-71e8-451a-9db6-5588e91f6a05 b179bfde-cf34-432a-a056-5ab9686ac3da 60c05f40-9cf1-43ae-b30b-816a4edbc734 3d41b6c7-7236-42b6-a13a-303144e77f19 c1add363-5776-40c0-a7aa-7eb5c609fc77 3403a559-cc14-4e4b-a2eb-2da2175fc621 6fcd1aa8-482d-482a-93d5-43481c3a778f ebe6ae80-edf9-4e86-a39b-92f25246e151 7e184b5a-aeb9-4868-91ed-c22d4007b6d8 94c9b323-59e6-42fb-bd23-d3dec0286086 9b6f4d73-55a0-4762-9810-5b48cc030614 68b909e8-8263-4848-a10a-27e448b29d99 f069a6fe-60fa-48fd-8af6-d909a175165f b8bea048-678b-4830-8485-3bf5fc6d9843 403f1e33-381f-4437-856f-394d6e3b54ca d89a7434-b6e6-4643-b640-0d073118d8d9 28d53bf9-7de0-4179-96c4-61122b481acc b63cc17d-a705-4159-b184-d4bdea63671f bfcd7f74-83f3-4882-910b-cdb989867b9e f1d290d2-9659-485b-a6ac-48a78b814377 a1a6634a-0add-458b-adbf-c4735f145721 83264fba-7c53-4bc1-83d8-a31f1883c713 14e1283e-c518-4d2b-90b7-18cc58e9fdd4 978b27a0-d456-4852-914a-b655e7473ab8 60d33342-c7a2-4006-9fc3-89853363cbe9 d32453d9-fb8e-41d6-b3f4-55a58df4d699 c0f0ce5b-804e-4792-85f5-955bef5d943f dfde768e-4e63-442b-828f-e0816407af1b 110451ae-07c8-4513-8d6c-7409fd031e3b f391ddb6-a9d9-4287-9895-e860aaf78b90 49515545-73db-4b23-9e04-c192ee295e11 4948bbd9-6f0f-4ddf-8bb9-1f73785614d1 044691cf-e614-4090-a5e5-b03156506e7c d07be053-6ec0-47ec-b31d-5c685f84163c 54e83a17-8b33-4bb1-b064-9c1d9975fdd7 7d99e847-b7b4-4db9-8ebd-ecaf70942db8 3c955a1a-ab7d-402e-8ec2-187a6c28c071 624cb73b-8edb-49f8-b2da-afc035a5ba4c 5c0d1507-a9b3-4da9-9e3e-ce31a53ea561 726c52c4-08a6-4e1a-ad7b-b60fabf176e9 65447b3c-1dd9-4b9d-9dec-4f05f5a02b94 2f75ce85-61a8-4743-b9da-b1a456900a7c 6db346fe-ac3d-45cc-929c-02004edf9a14 f2de9059-3756-49e0-b4a7-318763da1c70 d9c9fb44-433b-4f54-adde-f30e74fd840d 23b107c5-c52f-4722-ad28-42fd88586fb6 3e17a4f5-3d46-4aee-8036-f7b0a8805f48 6302076d-310b-4496-a809-e8632c3a2892 4713da17-03cd-4e72-b918-d6d79ca733b8 37dc528d-5803-46f2-97b3-098c8c5182c1 370601c6-ef71-446c-9963-50132f66b5f6 7a0ab1a9-26f0-45d6-a747-485db1c8d882 32dabbb8-21a9-4930-9ae2-90c9a9d5f759 d2c381ad-5512-4815-8807-4dad180d2380 114c5032-0150-49ec-86f1-0e33701c712d 23b04eb1-e726-4768-aa89-4e9bd911d564 4740bbee-037c-494a-abd7-d0e8284f6b69 bbb92394-8387-4041-a64d-54245a590ee8 4c3e8b46-5386-4404-86d7-46d658c79285 1ca25964-7ced-4bcc-a3d3-2c56783c19a3 76265c83-2bd8-4c84-89e8-f9018655c9a7 e6676d80-aa6b-44d0-807e-636980922a7d 660283ad-1357-4f2d-ba12-e84ce1d9ad72 14d6d6ad-741a-433a-bce7-78991b2a85a1 f7723bef-9016-4220-b35a-de940fb207d2 3c602a05-1a65-4869-a8f5-8b54d283ac8a baf28895-b872-4c3a-b88a-bb1a1fe1fdc4 50b56c60-848b-4030-ba8c-3e80d36c5ee7 b6188d0d-839e-4eab-bd43-d187ede2a65d f6ab59b6-16b2-4aac-ba12-953aea337d2b 1f7a8352-6215-4171-b7f9-a045a08d61b7 49f0a0ac-838a-481c-9971-900cc48e5365 cb14e2a5-1a66-4ff0-95ee-64da1d091997 2c3d8419-45eb-44f5-9abd-e28b832a189f bbff03b2-6e0f-43ec-92cc-6f27e896a033 d95ed832-79ab-47ed-8e76-6a925b0de127 094486bf-8788-4247-a506-8d7232481a2f f0be0c62-fa44-4c2a-b6b6-504a20cf22b5 9c55a732-607a-4562-9a7c-e506c0e7e1bb e3936f5d-14d6-41e1-9a21-615d245f21b8 4ee35ab1-20c0-48ee-be88-b1e68bea1919 1f05f57f-17b5-46b4-9e01-821c2da327c0 ee59a5af-4d7b-4e43-925a-9b5ad9460296 2c4f5e76-ebe6-4a3e-ab21-e7205c57454d b44d31ec-1ff5-44f7-9e95-91a8e8ed75ed 76eb8c78-02c4-48f4-94ff-d452e2773285 33c7d18e-f02d-421f-af90-ccf57271936d 4ed5f089-f1a6-4ab9-91e8-a6ccc2d47558 48eb8378-70c9-4dd9-8db6-0fdcfc13d4ad 6f86b8e3-cf84-4214-8ee1-383f2076abf3 1aa8c641-25b4-4ddf-b641-ab01693d69be 371b43ec-c3be-4fc6-806d-57a80b4571da bd3297b1-0ad1-4143-9040-081d11b10295 31f60509-75ef-47ca-b486-69bf48e50abd 1155d633-e1ed-44f7-bd03-2d3d0b06d3f4 1a3db43e-6fc2-4d67-b166-305cab9859c8 3d204ca0-878f-4aa6-b48d-16821a1b5604 14488c09-64ce-40af-97b9-547db9a6669e c7824cfb-daee-4da0-9623-c31b914360fb fcd16b8d-ad1e-44bb-9a5e-168a9126ad54 ea592666-d68e-416a-b827-bc06a0cb3e5f 002a2e14-37b5-4763-abb6-22572b600ca5 e629c864-182a-442d-86d2-ed683aba9d4d f7b14833-86ec-4bc4-aa4e-10679c63621a 0e490ae1-ca46-49c4-ae46-4292d744514c 7f70ff0c-1ed9-47e8-b5bd-eecdae353b68 d0886d76-96f0-426d-9a74-c31f75432e89 85987a74-1b37-458a-8c5b-b07d6f1cbdee f3e667df-2ccc-45eb-9e27-9525b73a075d ea336ddc-f5d9-4394-8f94-16254b95096c ed31457f-71be-41f1-9728-af68a00f6d34 d8a0bf42-c394-4721-aa91-b9c83c4f8b1e e4c3b64e-6284-4602-bbe4-6c47b0a719cd d909278e-8f05-498a-9a7d-534fa675a5c5 df5e8e72-cdbf-45b6-9fff-37a72cc98ff7 278eb87d-316e-48ab-9ce6-aeab69f40404 9740cb2d-0b78-4d67-a8a3-195c0ce91685 53e4dc3a-d6ad-4dea-b6e4-fd943acc2deb bbcb478e-e3de-4521-a2d9-0129bb9b3f6d fce6d67f-5361-46d6-9807-4c5b708b14f6 1dbdf90c-a940-4a11-88a4-29059f24954d 62cb296a-c4a8-43b2-9488-6992decd8c57 504af216-7739-45b9-9a7d-66f5d341efc1 f3917a35-e192-4c1e-be3f-cd98fc385225 4a706f17-69dc-488a-b7a8-523cd9e1d3cd 8db63f8d-6441-44c2-8896-9154fdccfe2c 011b8485-1ce6-4467-ab5d-3d7d4858c180 b79a2803-2efb-4c5a-beb0-9e4bb73dcf20 3a5e6c38-8945-49d3-ad4a-598f64a1ae8d 9349b033-2d39-4cf0-b3ef-673c08d89b8e ffd5748d-e14c-4f0a-92c7-e7409256c6f6 66e668af-48a0-487e-8c7f-b88b260ae84e 7b206918-ae89-4403-b06e-a95861a3cd2a d454abfa-76cf-463a-821f-7188f94147f1 6cf03631-236f-4dab-a242-e410343e7e31 509e3969-1dd1-4dd3-86d7-7c4023276c95 39f65a2b-398b-429f-aed8-086e4d944326 f78a458a-c72c-4de1-bdc3-fe0e0a25af9e 06966206-d2fd-4921-9577-7b4c90174bc7 8a930eeb-a7b5-4b33-aba8-296e9c94c37b a9d01a10-8973-4fbc-9ed6-a9ac3cd3ea48 2b90ea52-152d-480a-aa7b-f7673174d03b a94c3735-9002-44a9-99f5-039c56d5625b ffc7b257-2192-4e39-bfdf-6f408249ae61 6da9f7bf-6cdb-4068-8c04-7f01fd5f0b86 f7499e58-1d04-4b9f-b0f6-e62ebec3f6b2 46fd51a1-c57b-4ad6-9822-8db1ae677d38 5c5558c7-501d-4f9a-8dd6-3289615912e1 60b72fc6-88d3-4942-aae4-b69e698b6f35 8df374a4-e613-41a0-9591-9d51368af0e0 09d18624-e70f-4694-a5ec-ab38f9cd340c 4d8758fb-4ab8-4e74-8b83-6c61c56852e6 45311090-85dc-468e-89e3-8207ccb8a07d d2353c10-d370-4533-83e0-0ee564493e77 0d88f85a-f923-457f-854e-3a820ca92ef4 654efe2d-aaae-40ed-9c17-eb64d37d440a ad82b65e-635d-430d-932c-d3272772df50 0c9f4c02-d35d-42b6-a006-880937613a62 693e6c7e-ef3d-4877-8d66-10699634aa62 5443c8e3-c88c-4845-9a85-40da542c21e4 156bfa92-1c1f-44b0-8520-054a907f517f 5567b7f5-2e52-4cc6-8863-414b0ea4bb15 f5fbb166-9580-472e-924c-23293a276045 3b21b1d5-593f-4219-965b-f8f51e91482e a2c12f39-4fc4-4d49-b760-3a2deb9b4924 a215b333-f082-49f3-9d59-a76e63f1f261 dbf5abf2-beb6-4e7b-846e-c499909a2624 e87e0183-e3f7-4a9d-9936-8c12176ed6c3 bda448dc-8930-472a-ab0b-3b4ed2ca80b6 830e9d97-56d4-4c66-a364-7f069036f718 a2fa1b22-15cd-4e2a-a37c-d5baafb5bdc8 b46ecd08-2296-4c93-961b-de6899950a1a ca1a6d5e-cf9d-49f4-bf0d-453d297afa24 978d55f8-dcdb-41cb-ae72-fcdce95fe6c3 6918522c-df90-4930-9099-a12e7d7a2638 043cf472-c130-48b4-afb0-6221cdab279a 1e8c2e48-6607-4b20-9001-460ba0fcf6c4 c04eedb0-8430-4748-a9e1-74bace37bffe ff1dfcb8-214a-4ece-95b5-30e222abaff8 53b00de5-56ce-42c3-a8e1-dbb25b48055d bd24b454-5e01-4418-9fc3-dcbc2d2534b3 344c13e6-9408-4890-80c3-f0d89ed06c25 a4945eb9-47c1-4d5d-ad57-187fd352781e e67c69bf-2708-4c7e-986f-5b421d648497 7be3364d-25fc-40ff-b61d-f04415e89a70 fc7eac50-4efb-4735-af5a-39b44928060a 43dd58c6-55ab-411e-8d7c-e836d2d3aade e231562a-1a1f-422e-9f33-f6df43bd06d8 10d0364e-9aec-47da-a5ab-659f1ade24e8 7586dc4a-fb16-483e-afdf-3a9832994d3d 49d31906-5381-4868-9a65-db7def969c94 44c7c0c0-7576-46fd-899e-e0fdd01158c9 57da76ce-0205-4491-a8b0-f1bdae8b7564 9ed3e1c8-3edf-4fc2-a01f-33d4683ec9c7 7c685286-9f08-4042-9f3b-0af552fb9611 45da33f5-afbd-407a-8f63-3bc3f4db39e2 9b4cb072-9212-404f-a587-dc298bd20521 b9ea26c0-4ed4-41c3-956e-ceabf27e2b06 075699ba-217c-4007-a9f3-ed39927ef43e bd77203f-5255-427d-9894-a311a35ee950 fcefa23b-4e8a-4c26-aa0a-297288ebc801 b3a30118-ba1f-41b0-92ab-3a922fde2492 821d4294-dec1-44e1-b6c8-73468d9c660a 5f2eb245-05ae-479d-883a-3efeeb1bc414 e7c038c6-fb28-4e45-bfc5-6e287052c2bb 7c561abf-7032-4e38-a7f7-8705f59d7885 fb5634d8-e1dc-40a2-9ad2-cae9cd30ca86 01e9bd8c-a036-4d0a-9aba-fbaf8a9a8491 2be00de7-3858-4735-915f-0fc331ca8396 c8ededb0-e728-4d0a-bc00-97423503403f a06ee3d3-cc91-40e4-a5b8-04c47565122c 890d6a32-d8a7-49cd-8a3f-509ef0e296d4 888f956d-9e3a-40db-b465-4036019a0359 5e72ace6-341f-4f77-ba06-eca86ddb0818 78a28014-fb45-492a-a4d2-ce7e41b987b4 608386a8-29de-40e5-9cfe-0012cd34a556 b04f24f8-a638-4797-824c-a277b43551d0 2cd9f3d9-9488-482d-8062-fc2d59468e3a de3ccfcc-f9b5-4a51-b8aa-e1052fd5347d ddb1f746-9dd5-44f6-b3d6-b97ed8838816 d6e775a0-eaf7-40d7-a765-7188f1a7d9ca 1434ce42-8c34-43e0-a30e-b80582e0db18 3e51f6ab-4899-4e81-bd05-a68f24687c67 6a2bf82d-a57c-41ab-99b4-8d4bdd5d3d7f f5eee0d1-f86a-4fe4-81ed-1d810d3c93bc 153effcc-34da-46df-9768-8adaafd02183 604606b2-b613-44cf-8788-f79309efd241 d6c993b1-e5c2-48c0-81c3-b9aed5f49cca 15dde02a-46c1-45fe-9e16-f186a342dfa8 57c29d0a-08b8-466b-a3d5-6cf871615304 963a9e72-cfda-4335-8dbf-ac8f91b8d8b7 0a6c9ea7-c0fe-452f-ae08-7db239b2159c 8d384a8e-2bf2-4260-841d-f8bb00694a7b ed045440-57d9-4790-ade4-0a51f94da57d 6990aeed-64c7-4f04-aef5-55a2573fc7e5 8f5ce211-52c5-4248-b26e-25dde6075651 448769c1-ad98-43cb-b6a2-54c7fc986e5a f58846fc-4df0-4995-bcfd-baa8420c1312 ad662de6-ca9b-4dc4-9493-be8d91e391c7 c8b87f32-fbdb-4380-8264-39594dfeeb8e 7eb30956-f4a3-45c2-ab39-4bae2d1ddd83 d114f55d-d748-4731-98af-b4fc9bd5c42f c5015184-10b8-43a3-82de-016fcc8e0670 34062387-893c-4467-98c8-5da15ed1f643 65f798e0-7ab7-46ed-8c71-2d827d8c305f 52c1c4e4-8d1d-466f-8934-6714c9134244 2b425f00-11b6-4fd1-ae85-c07c75053d11 517c4ed6-68bb-4925-ac9f-0a1f13a34fa5 6821cb4a-eb04-4d14-8815-0c8f09ea0fbe eed23ad3-b721-4695-82b8-7008d1195b3a 0f25b3a1-dc93-4359-8cf2-7a2d717877c1 7cff1e02-c3d8-48e6-a80a-18344be586a6 57123fcc-ddab-466a-9e3a-dcaaf5d05d94 767f043f-0c78-4a37-acf3-a50f2f96695d 9c2dfbac-06d2-4ca1-99f9-4bf7a5860575 25b11096-4092-40c8-9b25-35100861cdd6 35772644-77fe-4477-b296-4b86ddd08821 e29a5439-5db0-429b-96fe-5bf206081b4c 0e39f9e6-c80b-4930-8359-14ce4096b323 f9133b4e-72ac-45a8-8c31-ac8932d7d170 1409eca3-a436-4b0c-89ab-cdc14553a3dd a8fdd60c-6a6a-4d16-a394-ed258bd3aab4 ce7b6f1d-6b9b-4d81-84b7-3ad95749f04d 6a72b46d-9ec7-4411-84c5-911df04a61d8 f833d573-ebd2-4e5a-b6f3-9c4de4e05ed4 54ce77af-7098-4fe6-a1d8-2eca93f9c9ba e68043a8-d11e-4d91-a026-7e3ada77b034 a31f6321-515b-4b96-a34e-241caedbc227 16c3484a-a288-4466-a472-37b7766b6660 2e4e3acb-a15a-4688-b8d5-f46346b1f430 266a6561-3237-4f53-bc29-2e210bdec0e1 d23f25fc-59b9-4368-9060-eb04cda122b0 98fcb39e-b814-4d5d-8e9c-7e22bd2ebe70 acfa34d4-a6c8-443e-9b05-7f518c1a3dcc 1123881c-9e71-40c3-a54b-3c5af7875920 e55cadc2-4637-4520-bc0c-5cb257de5f42 80fefe1e-65b0-492a-9ca1-baf9a201c2d8 f0fd8085-66e4-4060-b6ee-e9e0900bcd57 aa2ce08e-0172-452f-b627-a882aa896de3 470dec9a-561a-419f-9bd1-34f3f38e2739 6ce589a4-5ab1-4305-ace3-e417c48557ad 680306fd-8cc6-456c-8bbe-0f038a2c44e6 d3e1ca3a-a4e8-4118-9a67-cc9dc23f8464 41919676-1e8d-48fb-8b94-b976e1932ca7 b86218ba-4a28-4dcc-9e7b-635671a82e4e 18e41ced-b5af-4cbb-a5df-382fb7c71597 b6779a47-bbfa-43ad-a80e-47c0052bffd2 770ae260-aff9-49ae-9ec3-44b7f6c02d2a a0e54c58-a8a4-42c6-a805-9dab681bc009 4113230d-6760-4b62-abae-10470498cb49 244c8b68-9bc5-4b2f-9ab5-6c272652fdf1 2a7c8112-5b66-49cf-baab-48f12749a4a5 e365ded3-3f4b-4728-9114-0b8e8e40efe0 45823c3b-8ef4-486d-b800-6b34bdae94ba 4868edca-6d09-41ab-a202-b536822733b9 07ce5d12-3fe0-4ba3-bf7a-09252cf8fd78 14940120-de83-4185-b181-f1d0c20cd894 d534ec91-fd83-4e09-adf3-cb02c61281eb 1f870fb0-b737-4993-ae1f-567b1271f5b9 a4ee43ef-a970-4f42-ac36-457456e73296 f6465428-61fc-407c-9780-cca3990cf6fe 20cc9040-0202-40d2-9a98-89bfabe22df4 253c9d3c-7238-4e57-aff7-24af121b888d 5fd6fe85-853f-455f-864a-d4fe7d22a2b0 642f1f87-c669-4eeb-93f7-ce710792a6a6 9d8128f2-6161-40df-a397-cf982af0caa5 1a07d13c-3637-48d7-81d0-7b8e1a45a4ff b8cb2e51-7d90-4c3d-bd19-177bb6e3ff2c 6baa89b6-55cc-4ddf-8750-ee86ac4f5c74 7476cf73-6a16-4769-9995-23c66cfd6cf7 2b1fae0d-03f1-4d10-a55f-120957d56e74 6eb5604d-fb84-4007-8e4b-ba71f93023f1 e57bcea9-e6d7-49ec-9c4d-fabe08c28257 887ca50c-279e-44db-85ed-537ec503a278 149fe3fe-ed83-4b4b-bfd2-54dbe7d4d17c e60af290-a698-4214-a8a3-39f6ad9634a6 a84e3fe0-dc0f-48f8-930e-0af94c5523f8 5c580f37-9933-47de-8401-047c60eda975 cdee74ea-8231-47e8-ac87-65c891775913 b0c97c71-f2b8-4a60-8366-6ad805c96c78 fb32461b-b205-4cb4-9f74-c88d8804bf34 5686de7b-7bf6-4a94-a069-e3073809a2c3 d7ccdfc4-1b9b-4599-8493-d02dd04fd395 cc96f7e7-b05b-4498-88f0-1a93d3576060 e53b65e9-bc61-43f8-b028-a64c83ad2626 b096fd65-40b9-45da-beb5-094cbc0dc5df 5b537c67-3f3e-4abb-8f0a-2a8adfb03c60 1509c279-61ba-4b02-97f2-1410cf98d9da 68bef66f-9802-42b3-84d3-744fab801a21 0997fdc3-be56-4224-af93-3d52f20e6a3e 2c3c8c4c-bcb9-416a-9157-ffde96bbf483 bb4f10bd-2c10-4ccb-9153-76c077049929 19d96ad3-c8c9-4a6b-98a1-b1b3e0205173 6d51129d-83de-465f-ae46-2411f0feb137 8cd00257-855b-4270-99cf-e31458e0addf 0028b690-3096-48ca-b21c-158c1ca0c1e8 dbdb6acf-9bf5-4014-a5c9-426d50a01304 6fa504da-0e54-48d7-af35-afabf0275897 907727b5-60b2-428b-a46c-70181ef5b815 0532f904-80d4-4c04-8e13-818f3619ed93 f1fafbe9-a18c-4d20-b7d3-033495b53067 ae566239-04ce-4f32-84c1-2ee1cded532e 33996824-8b4c-4779-8720-e1190b68663b 634b0055-13d2-41e5-abc4-8dbcf73c5ed8 8f6c2d71-0c47-4720-9bd5-dfacd0507c77 861400c9-172b-454f-9039-aac53a9ea887 5462d3db-da69-4181-a7d6-1c04bd01c805 8251c637-47fb-41e1-924d-53ebe536a0d2 1ec6922f-ca6e-4a31-8573-41d39c1aa654 a2c0ef9e-f906-4ff5-bf44-ab7fd8afc1de 0d8bbc48-f69a-4062-be82-16f87009c059 8678344b-e3a9-46dd-8a1b-72a5317a4c66 2fc1f7d9-e6f6-4a6e-be26-bfc0fec2e619 d549d612-9725-4492-949b-b90624034b4c 98900e77-8cc5-428f-9471-385d6a0e7881 d178946c-174a-451a-bb78-582a9fb49333 fcff26f7-1a61-4b7b-a253-dfb5b632fbed f1a47b52-58d0-474f-b85f-da3595619ed2 20832245-6963-420b-8d80-e4bcaf558891 07d6268b-5ce1-4407-989a-e9c1fecf7db0 75ac69df-be30-4a66-955f-6a974b4dbed9 aea51411-f958-4f68-b3b3-721fb8d2827f 2bbb01a5-0193-4fe9-90fe-b99ba10b4fa1 75bed585-5aa2-4ba9-8b09-d87f2d4eb1a8 e697f515-c83c-4c0a-aca1-b857896a5bd9 f8627385-56f6-4f43-8e54-ef4ccfdafa11 8340c4e6-2523-4a97-9906-becd83531ec3 389ac210-673f-4e75-9aa2-f1c98b5bbb61 476bc275-7be2-4f4c-bc91-36ff5cfd4f32 c1a36267-e29b-4757-853e-6bc1b641086a fca42c7c-eabe-4cd7-9145-a21dfd08feb3 3e0d4806-8eb7-471e-b948-e796f30a7521 165314a1-2191-4d5e-b16d-365bff08bd9f 03075404-d13f-4f93-a310-1ac75afa566f 0eef64c4-d119-4e67-9205-e26e25f65dea dfb5dbfd-3583-4938-9875-abbbe6ba2559 5a45ef48-f6ed-4088-8bed-2e99c999dd73 5cb09208-d1f8-4c02-bdd4-3525885efd33 a21a24bc-eb39-4e80-9713-dbf5d2875be1 853bff14-4517-4d60-9619-485c5dfd3ad5 73f61cdc-0e32-45d9-bfa6-b86c78e533e8 b5e04e46-8dd0-47eb-b9f0-342183ab62f8 3b54d9b9-e30f-46e6-9a88-f2399cdd720f ed156549-10ab-4fe7-9525-08f02522a8c7 bfc317cc-fb2f-441c-91a0-6b38f6d04874 039437f9-cdad-49bd-8037-31278dadcbf0 a014316a-0763-43a2-8982-741aa5bc47b9 41785f5c-390a-43ad-bdfa-92114b67631f 9b6b8dc2-1a47-43ec-a2db-7faa019ec963 3091f777-748f-4d0f-ba8a-3e6b3248eba8 6290c027-8ee1-435a-920c-973f12f4a5a1 cdd36e2e-70f4-4dd8-b11d-c57bb67d92db ac7605b8-87ad-45f1-9295-b39f5641b0fa 8dcaabf4-9801-4099-96af-e9a671f52499 7fd2f2b1-72eb-4682-b3c5-cebcada477a7 de390524-7d5a-4509-a6d6-18dedcb2af98 f06ca8d7-9391-44a3-8957-b96683a5f32a 2d348279-dbc3-4349-aab8-9b903dff5d4a 5b55ad08-bd12-478b-85b7-38a9afc171f7 4e8af300-20b5-4621-9bd2-1fcb007ed1a8 b171305a-80ec-4b32-9cd5-5015d9887252 e14da2dc-6793-4886-82a3-9c8edab83e68 690871b5-eb2a-427c-8370-8e954f02dc41 e2296107-9d26-4e7a-af4f-72ea91cedf4c 07fca774-0622-44d8-8ddc-6c1218bd9b07 88e9ff0a-14b5-4164-bb81-fdfd861d5909 b6c52b2e-e3e9-4659-b7d5-ae5eb31b0b52 93d72ce7-c7da-4daa-89e7-e0b9441ef059 fdc32aab-e401-495d-816c-1dfdb1ee6bbb e21b07d8-5b15-4c90-a1d9-a5e3105380a5 261ad84c-8534-49e9-8cc2-2dc6f7fb1bfa 06962273-9c6f-4807-9d29-5360303fd678 b2b3da51-ca20-4e64-acc5-81dcf8850e7d e083b60b-f209-4ec1-8f24-9b59d502a9b6 3b216b9a-bd03-42e0-9a94-3db2ba87addf 30860379-f5e2-46bc-a7d3-4a50fdf50645 5c884aa0-26f0-4676-ae1a-5edead8331c9 6ec76cce-2dca-4b77-9edd-ddb7bb48cf1b ccbd450f-81ee-414d-b07b-9a2e367fb41f 4c6d7c67-3bea-49db-b616-0c8117f61daa 7bf804de-2026-4550-a030-246a20fa0e35 8da1bb70-5a32-4471-a622-67205451b56e 2ae6b31e-3895-4da2-aae5-3df0296159a9 2403fde4-bc78-440b-acb3-91760759f9a1 cddd9f45-2cb1-4d08-b149-beb4b747fb54 721fdcae-e6de-4b8e-86e5-b8311079bdd6 9bd0669b-6b22-40fd-ad6f-c6c9620893d9 11974528-3862-4a7c-9b18-e7287ffd40f6 76952231-a10d-4a87-8c3f-eceb127920fa 8ecf943f-3c9c-4ddd-8b92-1e13a418df7e 4004c4c9-7dc8-4d7e-953a-12dd3c1b99f4 3a717c53-987a-4bb3-8cd6-d9693cf695f1 e66661ef-3985-405e-bc0e-5c315e93a54a 88d67265-d73c-4559-a7a0-776ec36fe132 4a209d2d-e4fa-41f3-b8c0-e6ffc55b01a4 d81464c0-a32c-4955-8276-94af873d9c2e 71343b98-ac39-48b2-aa7e-f5bcf266ff87 c41bb7dc-efe4-4333-b18f-72d8c28c0182 9714cf3f-94d5-48ec-b9c8-3a61ee52f0ee fc8e797d-8cb3-4906-9bd7-a00e826e88f8 7e0a88d2-2e4c-4c3b-8394-a451cbe65f89 8c392e3b-a791-4129-9261-95c253381ad3 acb39332-4e7d-413d-a525-6cc10b4a5128 a681ee5e-4154-484e-805d-eae894a466fa 674a9b8e-659e-4325-b476-9e91ed2fa9eb 8b198087-054d-476f-bdc1-ce40bb65ee46 67cc9c7b-6852-4de5-b17d-c1d2ee0737a7 fabf83d5-8cc1-4316-ab92-78cba5a7d547 d2321be1-4230-4eb4-9be4-0ba5ad842a0f 38f335af-de79-4143-9415-1ae8dd8da920 2f74c850-6405-4980-ada8-60f879a67dd4 811cbe09-e0c7-43c7-b6c9-40f659101d27 4d1ed9d8-687f-4c5a-bd97-bcdbd3dd8386 3ab207d4-6eb3-41f6-86e8-6be7a1961b20 31dd4763-5eb7-4ff7-a2a4-f619fc0fdba1 a332d501-6e82-46e2-a82d-2de1dd0bbe6e 4770a630-0f87-4bf8-b713-beaea5e8ea71 29092be3-2417-4239-b152-7697cc1ce0d1 b0745179-eda3-454c-871c-e0e65a379d69 2f27a0d7-c815-4bfc-a281-091ab42dc0cf 885d9020-c45b-4382-af2a-ef09ebb9d75d 72536a8c-793d-4ccd-9c79-472f182ce068 b2316236-0ed8-4f3c-b3dc-6a9859f5743c b44bf53a-e1c6-435b-91d8-129f2018387a 2a10b285-8bc3-4b17-b49b-be1ad99615c3 6a80c76f-f055-44d9-b087-5b339b0e8d3a 45c8c7b4-8f0b-4b21-aa33-6b7edf26dcde 50d42b10-7058-43ee-88f0-00f7b12cee6c 299f2b0c-147c-4a94-89ce-c377d766735d 1547d5c7-cbdc-4004-9210-447a162b6fe3 63cbc40b-3d73-4f7b-80ef-f913d05dbf34 f0dd5552-7aa3-44f1-9d4c-d7e5f049ea55 ea03c64e-16c3-435c-8b69-6c5dc0206f42 d1429f26-7d54-4dc0-ae0c-4066b8e88444 f3dbb4a1-4857-4e49-9f74-35d6f9a3bd21 19efc9fa-17f4-4419-a61c-feb0845db8b9 ad593522-44ab-49f6-ad0d-f1cda20b7008 69538f74-58d4-4638-87ab-973f51974424 74a23582-5019-4153-b154-5a2244bd3e04 4da536ce-3a48-4816-84ac-d74e5902de76 87bd86ac-ce5e-4a0a-a8d0-ab1b908ec183 1db45617-5eb4-408f-af04-45a6f9dc350c 55bb6845-a4fd-401b-95e3-8dc2da29c238 65134077-1f77-4f21-a31c-dc41fa8bc7c5 8d30422e-c4af-4425-9c8b-280472433c48 a9868192-07c5-4eb0-8784-41bb160d4406 5334ddc4-42fe-47f8-9259-6d7353c354e0 d1ada839-aad4-405c-8935-5071e7571468 bb71e665-5a0e-4d92-94ad-4152afa425fe 8884d53b-bda1-4503-9ecf-0e78b042f680 cdfdfc27-7734-460d-b369-5becb585ad01 34ac7fe7-230f-4c2c-b8df-00c40040cf8f 9555580d-c80d-478e-be18-39c0ba871d6d 3f931eba-a58c-4864-84e1-64401589c34b a6c01134-5fc7-49b9-8f26-28094de45a7f ae6d77b4-e4aa-440d-8a55-9cc9468c8d7f 3c685698-ee69-4621-bb78-aa1e097e5569 db6c4289-fd65-4d19-8534-97a4c4d8cb0e 21399b7e-5e64-4af8-b1fd-1464f100cc61 c5e09da1-744e-4bae-8443-06c33da3b719 a435dda2-17ec-4aef-a51b-f02f7e641ba4 9dcdb9ee-7917-4b30-92f2-88075e75f709 c0660835-7605-402e-8e5a-5dad63cba646 ece5ac76-b0be-49a2-ab44-c47d2b799c24 275e876a-1d0b-4cd0-9875-84af43a34069 be1bbe07-7049-471d-af84-83b57032eaa5 738601d1-698f-4b72-88f4-17c9a069d3e0 d0f4e14f-a56a-4dc6-81f7-dc0748a9000d a0e007ec-a236-4f7f-a92b-1aacc2079110 22106925-2725-4ef5-968e-6a5370e5c1a6 32d49946-4c81-4bbe-9b22-b5598e89d434 92652e14-de76-4e23-8be9-6193be9f3f68 b7cb9f51-6e5b-4db2-8721-e046ef342e35 7712f9e8-d5fa-4c2d-86fc-8538585ced76 7c4f37f1-fc5f-4698-b517-e8ed36be743b d5906af1-15fc-4472-8f78-6cf6b56e2791 7786cbe3-7290-47fd-a934-8f6f836e0fae 15a701fa-c91f-47b7-930c-59b81702d995 2887ae6f-f146-4b84-9f0a-5d1e92c90e73 cb64cdb7-4736-40c2-b592-03feaa7c2b0b 9b229b00-2cb6-4f6f-9366-c2f69f0f4bdb fd4c4f5b-1121-466b-b46d-be3d5a51e8b9 83be489b-e896-415e-8387-06726c415be4 6150fe67-ae4e-47eb-9de1-6cf95f4d0433 acab8e31-afcb-44af-a430-88ebeab71d19 c9edd9e6-200c-40fb-a76c-a845ef1bfd4b 3f551a07-c682-4028-972e-a9e9e721eedc af0438c6-60da-487d-a59b-2f944c1b8f92 1ad1ef55-d645-4b39-899b-4e3418bda223 36fb10f4-b5cb-48b3-9694-57788c3416e0 90f78bc6-f524-42ee-90b9-0f64f7506510 b81848e5-02b9-4311-a8bd-5ae48c7b4566 08fa5c8f-350b-4971-988b-983e0b964cfd c355577a-29ae-4ccf-b51d-5f6ff48b657c 2a2a1f23-ff6b-468c-8f39-5d2c23e1d829 69c570bf-5c6a-47e1-a297-fb655ef59be4 d27dd9f7-ab0e-481f-9804-e2aa292d9142 666c10f8-0be0-452f-8822-737d300e7a82 469b46a0-af45-4bb3-9958-1c05ac33219b 95e5f7a3-eadf-49c1-b842-0a352ddf2907 b48ecea4-d98c-41e3-9be6-0b17ffc7080d 111df884-d998-49db-96ab-c8a01f24d812 13e588f3-8143-40a5-ab5b-f84c22ac0ebf 34da9736-492b-40d3-968d-9abd25ab0bb9 4284695a-49b5-4d82-b5a9-d4324ce9a103 4bab8dad-c23c-4a5d-95c1-d26e6d8600b0 7f151fba-765d-40bc-8aaf-8c1c9f2b763c 589a2c72-43ce-4d0b-b2d9-a7d8b106b83e 93cd9565-4ff0-4369-b538-2c34a9ac024d ebf72989-f545-4db4-9a0f-e10c25529737 7554c5a7-9ab7-401f-b293-ecdcece8742f f1b14e1e-6e3a-4f6d-877a-e5a7d611b268 3d4461cc-2adc-46ef-a35a-d3aad0cc9ed2 16cae26a-2530-4976-9f8c-9a51c2a8d6b7 eba8dae2-e169-4f26-b773-6daf928d2ec0 1f5eabb3-7e48-4f0f-a391-b13a4f0237a4 0ef76968-ceea-4a20-9a04-25db3a76f01f ea31119c-505e-4386-8cc0-e21c889cf764 150c0bbc-74bf-4841-9025-cd45a9a9a2ea c3679159-f76a-4963-9f40-16345a758a03 e54a28f6-b3c8-4be6-9f17-a2c5d0d822f2 6f999d83-91aa-41ee-9876-31426395cfc9 8a63e4ce-cf4c-4f02-98bb-45a879d0dbd2 def41a24-e611-4984-b700-bfad2181ac21 24662634-6f43-4145-a602-0a17b253043b 7deaf729-95c3-4d4b-a153-e31820d6ab5e 3ce53e8e-75f4-430c-9b49-a7bd5ef25e36 7ad561da-b57a-488e-b798-1ea0f77b015e 1b3d1941-03fe-4b89-8652-7ee454a2d40b 34815bdd-94ab-4217-881c-42a71f9a126c d2ba27fd-44cb-415b-a9f9-15bf4a26be33 51fdac2c-70d5-44aa-b58b-392e89b69e51 cb7907f4-6e9f-4c3e-b701-84d820a64f57 42de7928-8f33-4a38-8986-4ead63e7fd0b de044f36-1ac2-499f-9e76-26efcce3f308 3c1fe696-2310-49e2-a20c-7fa85e7b2570 87452373-8e84-49b1-a81a-12cca162aacb 7dd8ca74-0233-4b8e-ba19-bdf9f9a85779 3c092714-3eff-431e-9097-9dffe469c711 b0bb5481-33aa-46ea-9454-de842295049b f9d7db2a-e24d-4d38-a716-45555a433d7d 539ee7e1-59f5-4b8e-baa6-12e75a3b62f3 2fcfb809-5806-4ab6-9f56-ba9b6c7b242e 34767d8c-7e96-4b36-8a51-bb4d0d1c5e99 46391f07-021b-4f47-aa8d-5ba29f2aa82b b479659f-501a-496c-8bd0-2d60dfcc2759 716fdb34-8b6f-46c0-b183-10e5ce625266 1a271abe-1312-4c1a-b084-764dd923f071 389fc1dc-f979-4feb-890e-d1e85f27edbd cfd17aa0-df0a-422c-b011-37255f9039c9 ad7c00a0-03d8-4039-9888-abc3669acde1 b86fd520-7d1f-42fd-87c9-387b741919ab 5cd5ccff-8655-43ad-9394-4936b49b2448 9e9566db-ff5e-4573-9a4a-17411bde7d9e aa5a79d2-4f10-406c-b5b7-22d0f70379e7 c4416601-fd74-4966-8b88-7316eed4d491 5fdc0f0e-5804-47a8-9afc-5e6820121f14 28ad831d-a48d-4e38-90fb-77855ab808bc 4bcd30f8-5676-41ed-8c39-f9558227a6b8 1278ae74-6f6e-4f54-a083-591e8a806f20 cae9340e-c338-4fec-93b9-a8e280026cec 8a920b45-aa3f-4619-9c8e-6f4afd942113 71875c9d-89b0-4fb9-9af7-aa2cf08bb956 ea9f1ae5-5e25-4a0c-baf4-ae37901d9ab8 4ac5ded8-2f91-4e91-bdde-e1dbdc4106b9 32a9be81-92ea-4a73-bc1f-ac3f0de39cef f378470f-c5c1-466c-a648-aba7fb14f195 26ee2230-b384-4e9a-950c-399b4cfb7dc7 822e0ce4-96ad-450b-97a1-a89cb29aa468 4ec7d837-f98b-4412-98dd-e284df956f7f bd8c98f8-d768-4748-bf0c-f7d795974395 1cb5e2cb-06b1-4442-8084-d15a4cbe0947 cbfeee95-5c45-4892-abb7-0868c29bfca0 bfe7260b-f315-484d-8e56-a8da5eb682c3 d99e363d-7a46-41e5-b45e-2b100554539f be1c16d8-ffaa-45bb-bcf4-0cc75d53ddb4 cb04cd4b-fa13-4916-924c-17b59bb7fb93 7188dbfe-08d2-4d53-8a7e-b0868dc1ee53 4a7ef726-7fba-43a4-ac32-d45b55e90f3a b1b744b7-42ff-42c9-b770-dfead22e39d6 73690e61-d403-4d41-8d58-42aabb141a20 6fa757cf-f983-4236-bae7-524212f85b75 a76225cd-d923-40f9-940a-6640c954b537 2171e0ce-fc57-46e5-a03d-38e5d6cebb62 191c2c7d-e4a2-4914-a963-7ff857441557 fdfa2177-d0eb-4189-a15a-c91530e2c659 eb9ebd92-5f9c-4975-a3f5-d2b93b717d5f 041c0b02-93ab-4e96-9a93-b5c440d85e1f 30b235ae-71e5-457b-8b4d-5a9395471dd8 1a4cc91d-2f4f-4b5c-9741-b93e13f88dbd 93c3a25b-622e-4d42-8314-463997179455 1e4fd0b6-833e-45ff-aafb-790a123ecba1 8e4c20bd-88cd-45a9-99bd-795ac354d2c0 89c1d725-c680-4402-960c-a18a955095e7 08130da2-118e-4284-8054-3c279220ecd3 ab195c84-4a14-469e-95d3-8ea18de618e7 26deea99-4b78-41bf-9216-2ae6b5ef6302 4c3800d0-3cb6-4060-9f5b-f0e067c92771 52c2982e-9522-4559-a5e1-71f41270a8ce 92f7cd8a-e9b5-47cd-8063-fa5bc8d9ec3f 1bdd6d3a-6bf5-41ed-8d8a-7f5765bf539d 4c590b0b-1432-45df-85f3-ae10ad86fb60 d676926c-2018-467a-8b17-122dcb9b2db7 6b74e7ae-a7c9-47c9-8d79-41fefec7c930 ae875a7a-5e18-408f-9535-61e32bc8f76f 68b31b39-7ac4-44bc-8011-ae499248e463 d91a928e-7e82-42b8-8184-cca6673212a2 6c7e31f4-a7c8-477d-a037-1ade5632aa0f c58a0fc5-a805-417c-a39b-43d1a86d951e 9549aebe-acff-4030-9a95-d2a9a8a483e4 d66cd6f4-2cf3-455d-8b02-2e2e6299e286 1905ae41-d8da-42db-9fb5-c58351a7f298 2015e662-d76b-40c3-84b1-4edb44bb9f0d 3dab9eb9-7325-447e-981e-407f1a32aca9 bfcfb293-cfd1-4bb6-88bd-5f699f3cec4f 813155d3-7571-407c-965a-b89724bf7c45 5562deaf-7f07-49af-ad6b-16c9df386124 ae0c35dc-1387-42d3-82d4-03424d993f6d cd477178-5afb-4985-bb36-c69ead22accb 97c9236b-e0a0-4889-9607-06da9b79b19b e6fb5798-999c-4f73-bb7f-2853bc3b94d7 9eddd158-828a-47b6-bcd4-c6f5c667a3ba d64d2502-9a33-4d57-bf33-cd347c5c036c 8c6d8bf1-e3ed-4a63-af2b-e3cb17d37e6d 20172fa4-9c35-41bc-a9b3-78b3d9c294de 849914e9-bb0a-4499-9531-0169c0ac6c74 fa692bb5-f209-4518-a82e-38da836b2e0b 642aed90-5bd4-4b44-9ae6-be755fa33551 e65065d7-7f8d-4a5b-b96a-4592113c8dc6 512fecc1-3b8c-4d11-b710-0e8626c54305 cb63d3a5-358c-4136-8d15-0552a26502c9 3cf9da7b-19e3-4a00-9266-d96ea9b946d5 82fc064e-ef1c-4e3e-9187-dcc8d5b2170a 80311d04-f97b-4122-a708-a5a9b1270a4d 252591da-d3c3-4767-9a78-59d1dbfce00a 0ea9c4a1-750f-46c7-a2af-f321a8944eb4 c8d83fc7-fb26-43e4-b1c2-8e6b8a3400e0 2f317865-9bf0-4460-a414-0dea97cc8470 a6e59631-51c9-4587-8b1a-ae9897697e72 03da9fc6-f39f-4d90-84c9-1b97fbbe9367 c412961f-ac92-4e73-a86e-172dadb12965 034a1bc0-6f2a-4388-965a-df2b4dd5821a a57be618-9ef4-4c2d-b069-0f4bcf09a8de fc6f5744-2bee-4cb7-ac92-e3f10fc281bf b8acc418-b2bf-4b58-b98b-0ae867ca6a5d 417274fd-8c4a-4ebe-a65b-7368cd43d960 1d31413f-e71e-4540-b4b8-ac79b29ce9e7 33c3bf3b-678f-42a6-be3f-38d7f96d84d4 d010b047-7287-48bd-b968-55d1043ab49b c16da710-9c2f-4785-b381-8b1fa722ca77 431d531d-5d2b-43b2-af0c-c7d83c67c8e5 4595416b-08f1-42b6-a0a4-c26461ec91f9 6cf6b0a2-702d-4442-8e9c-e986e0a92baf c7184039-6382-4204-b322-24c8c78eec37 3e6ae87a-a754-4e9f-807e-310a90dfd40c 2bda01b3-ad8c-42af-b965-e209c351d831 ff2c1adc-0d4f-4212-ba17-a69c45aa5c20 56329aef-9737-4da8-ac5d-21c9807205bd 442231f2-c865-44cb-97a6-deec13f30b32 44a52805-88a8-4fc7-846d-143b8f4cf7ff a165c50e-ac2f-490c-90e3-23af55782a97 cfd7c44d-a939-4ad4-922e-60dd586acdff c255cd6f-1cec-4f82-8b08-9e48b04e0073 a405f6c0-aa66-4de3-8e36-f837bb13fffc fdfea4a8-9abd-4c72-abdd-7627d11332f5 a95ca456-330f-4f42-a993-cf9faeb266d0 2c0c5fc9-2e6d-4527-bce4-354488ca0213 43730c38-3ca4-4613-95ce-8214533eed69 7ee56916-a5ea-49cb-9a19-7657a8950224 bde77996-0fbf-4e46-9a44-ad3d9a0bb2bb 374da465-c02e-424b-8eb1-c35f497928a9 aed0feb0-0f1a-4b3f-b02a-bc4f96aedeed 73229e4d-5ef9-4124-b697-559ba2710236 0f9beef8-e60e-431a-b223-7210b8bea9e7 5aa876ea-1e04-4327-b9fc-cefca8c6f943 1e5053a3-834c-44ae-b3ae-8431be2ea74c 3edffd06-8aa8-40d4-82fc-2d35440e07e5 bd812f15-b74c-4867-ac9b-7bd4f9d2618f 50bd15da-8504-4f77-9b69-0117bfd40ea1 1fc9d897-9799-437f-8cc4-82353db3e109 675ca8c9-e1ec-4d90-8213-5c74bc0fbb21 d708a216-247b-4c82-83e7-29dd422c7950 b993aa89-9090-49d4-be86-91880064a16d f645cf13-c484-402c-8983-da7e5c0a8512 cc3916a4-bdfb-4a33-b0f3-47382f7818c2 9ab6fa45-f278-46d0-84d6-21425dc94c82 3c2685cf-2c0b-4d1d-9e43-5bfd590e5f60 6c9cd400-906a-4094-b30a-135078afa525 f43a05ea-53c9-41ae-b9f0-386495e5c470 bf6bfe4f-4b6c-4fa9-8d95-65fb58d4a7a1 008f59d3-3548-4762-bd89-30cdba1703a2 1d82e521-87d1-402d-a258-0664e7cc229a 8f20a43b-5f9b-4794-8431-2938526381d8 c98e836a-c524-4716-aec1-df2d9b7bf5b9 8fd4d8ba-d2a2-4840-b971-2f31331b134d 07680a7f-4f7a-4ec4-adaf-b8f3afb5f8ba 0cc00c2c-86fc-4f45-a4b7-0ebf9104674f b398f9cc-0768-4c6a-8834-848d3d021d1e 20c19592-d8bc-4b43-a00b-b62ce41a6d4f 05fcad4a-55d5-4b1a-9159-ad237892b3a0 ee37a251-848b-485d-8407-8ca3871d3018 1b78ef21-a45d-4682-9183-03102a4b1784 af708439-25b7-4960-bd13-23ea7ca2960b 17d4c1d1-7bae-4569-a757-65c81977f57f 3acb3e10-dfcd-49ac-b7f5-3ff5088ffd8b f6e9c4ef-ad07-4b05-b765-e17ecc4eafe8 7bf21b0b-5690-4491-85c8-6bc964f16d59 e54ad188-9ea3-48ce-856c-fed7d07d6df4 21744a13-cf74-437c-a716-6f2c6afa980e 0ced4695-fdde-4b19-b3d2-7a369b2cade6 7b402bc1-dfc2-421f-951c-e882014b0d91 1c67e740-8701-4ec4-8e65-1ab8661724f1 f9fdab7d-4211-4328-a4a0-57e0dfc35227 031b9bfc-11d0-4883-8874-d0572f3d8802 a34e08b2-2c80-4664-af64-b19e85b08e44 88cf570c-32f7-4f28-820b-c5b6f1ef0a56 fd2c4770-7aab-4ec7-a4d9-017a9479ab20 16b33646-fd6a-4920-b956-ef554f5edc7e f18483b1-efbf-4374-9d93-55ebe1033450 a5ea2d63-9453-48b8-bc43-cb1d98b39caa 5a752766-871a-451a-b4ef-13206ca95ef3 9bba4b66-105b-49e9-9943-23dce180b626 4314013a-db90-4822-a490-a59091a2735c 2e106d9e-feb7-4a80-965a-df34bc2eb912 5e4a0f7e-ffe8-48a9-a458-1a0e0d175d9f f2f0ed52-f046-407c-a38e-a2f49d712c02 d3e66198-723a-441a-965a-d321c652ec15 c1a376cf-fbac-41f2-9ed6-7bd43f68839a 29ea01ec-7e72-4440-9dde-ddabe0107aac 2de7a672-e6b7-4b7f-b493-f034c16c4122 3dfae201-9e27-41fd-ac21-ab1405839478 045f99e7-ed90-44fa-90c6-b08f3bdea943 13d98771-2fb8-4220-9c39-2669c9b7c57f 228b1fbc-0f0a-450d-94bd-7c13ec61964c 9ae9503e-5377-45f9-82e9-10657a986c80 ab00b8d3-a51a-4d22-bac5-2bd003908f17 5b3389b6-a51a-4a4f-9b78-4e0a49585c76 fbc19750-7163-4b31-a356-429c442a80ea b97f88f8-2865-4552-951d-4f2dad38c05e 9b1fcd2c-4e78-40df-9015-6319dd143fa1 945cca37-7e36-45b1-8c40-42d30f7faa58 75450f4c-58d2-422d-8e3c-cdd4257c2c6b a3fdb7b5-e0a5-4253-9593-02dbe4bcd6b9 81d8eb39-6075-464f-9c15-e3fb051d18c3 1928d8fa-d888-44fd-bb38-1009f74bb2c1 ca0e0cfc-aaba-49d2-b786-efb29383294e c6663c5e-b555-4932-94c5-06f0d10f9631 e90fd24f-e54d-4c0f-b53b-6460103ac65f 6f071f39-c587-48f0-9c78-1e0d0f9ebcae 0e67e9ba-aae1-4bc6-9014-fba5c350a70c 61dac150-52e0-4f15-b0a3-f83243e851cf 9f75c139-8795-4dd6-8d2a-cc259ef13a4b 0c59f276-659e-490e-b44b-3fbd5e9b4cdd c3948a5d-a666-4623-b98f-3d295c8f4470 72153c2d-b6b9-4d7a-98ea-f2c5cd16e1ad 894691ff-da18-4fcc-a616-d4c2cbebbc98 fec92046-5d4a-4cbe-8b02-8fcb6a3837b0 b6b04e91-6cdb-4265-b3e5-737433f7f0ae 2081f88b-53ce-4586-ae36-6ae7ea4ac7eb cf808429-e52a-417e-a307-ac426607f259 237466ed-f479-4f79-b6d3-7160d4a5032a ba7b2bc2-5581-4693-b789-9e263aa2f9a3 7ed2bcbb-0f5d-488e-bd66-57719aa9ff28 be20420d-2506-4ed2-95c1-c6ba5f4c587c 4d148185-48af-48e3-a7c4-d0634cdf1943 b8a7b8a4-3f9b-401b-abad-2bd75f56ae82 a8d9e778-a46b-4f82-aae2-db97952946cc 2bb2c213-9049-4882-9772-0e59dc82e94a 856e5481-7adc-4bd4-9916-f1f3fc760de5 3bc887d6-8e9c-42a6-8952-6930627a9fd8 a3f100ba-9132-4a61-a57a-f0085e191b93 d4d2f86c-3a26-4651-ab1d-4cb794ab79f2 4982e6a3-f395-43a8-9f92-1e9d68c4d11c 558e24dd-fdbb-4e66-98f1-0e56d28b52c5 e6680fbe-c5b0-43cc-bc73-5fd4f66e10bf 1ff3c6b8-0609-445b-8b7b-20df2b328653 dc127516-8d05-4fdd-92a0-ce9668ed1d8d 05319c6b-d8a6-4d81-ae0d-6fd5aae365e8 b8ddd59e-7507-42d5-ad69-270a138a8b52 55de2b90-e7f1-4b66-9d18-e7b8d0342c54 c91b4fd4-599e-493e-baaa-f9ac0ed45e6c 2e9e690f-72ab-4c4a-b4bb-ca3223f0aa97 4a50f2d6-7f56-4e54-8faf-b07eafec24df 59e9f6a1-58ae-407f-97dd-11c5b2a1299d 08615cc2-be77-4e6f-b678-1f14f023b86c dae65546-b266-4a44-ab3e-6fa678220ecb f95f47c5-5260-4291-a368-4623ebc9d0bc 26729a1e-85b8-4bf9-bb8e-df46d64ad6dd 27bd0230-4286-4742-b563-bfdc56412036 e1279e46-1123-4543-a77e-785631f4c21d c2a3468d-382b-4ae8-b3c8-ef874874042e cf9b4106-0116-448e-917c-3de549085b55 88f0999d-db16-4365-966d-c9ac2c576e39 a97331b0-2991-4d2e-8438-38a152cfcf75 8a30f84d-55a6-45db-b21e-c7df5e64aa90 71eedc7a-bd35-44a5-a29d-ad0aad69c172 0bba0ec5-b9e7-4313-acb1-1b310269e5f7 61b154ed-9e6e-423b-8527-f499d5ef949b e6fff1e8-9dae-461c-b9cb-1c41e7859070 be5ef9c2-8543-4bde-98a3-947860c6c6ab 0efa8749-6648-4d19-9d08-c8dd803ad363 aabaab2a-da48-456f-90bc-11fbeceee6ed b289243b-84f5-4b53-a763-18f16286bab4 dc0c921a-4629-414e-ab04-8bd49578ec6a ca44f506-963c-461f-8b56-5cb019826daf 6a509849-2abb-4e1d-b86a-e332f3f9d0ff e0903132-3b08-4c00-8b0c-06b3df3e01a5 ac297f44-7d1c-4742-b259-cbeb7985e17f e00bc0c4-48c8-4bbc-9745-cd266dfb01bb e8227f26-fc6a-480a-860d-87a9afe1de3f 5693176a-fffc-43f1-a2d1-d2a367669eb0 1a615c60-5910-4c70-bc1b-c25550295980 3e1e6f40-e8d9-436e-b263-ef2605f4639d 349d663b-4ff8-4e9f-bd48-ae7559941f21 47cf8a80-43ba-4847-869f-714cd6ba5e14 019d7234-8b1a-4b39-b0c1-5e5f920266d1 a123550c-bad5-4273-8c36-3ed1d80700ad 8e892375-e370-4aed-a9c0-7f965b678c97 8d664fc2-823f-4011-96be-5988a72ba483 b793667a-b229-45c5-a90a-aaf5f0d2ec0a 4310307c-5e18-419c-8a61-3d4fa6a8ec1d a514cdad-3c74-45dd-8d66-ded7b09d1a7c 9d145aa7-e450-4d52-b45f-2c8b72ca3b66 0a453402-cd15-41ad-9d6f-1b0e3c904887 4e52fa6a-40b5-4674-b375-13bc88e65cfc a44bc4aa-7fb8-4e50-8ada-92b631dc5a51 142d59ee-bd1f-48cf-95dd-bfd2c7ccf015 58072aac-691d-4c2e-8062-c64f4a627c50 a67fd933-24c1-486f-98bc-d64cbbbf8f4b 295713d0-c31c-4353-ae71-5a60cecf018e 39c15150-b604-4a8d-a39c-177cd212cf31 db1f04d2-a993-45b7-a35c-0d0becbaa04d 5b3c2eb4-608f-4ce5-a47a-4355f79c75b5 bb80244b-1ec4-4269-a9a2-ce7d5342fc07 3eca0650-f79e-4787-b92f-62c7b8b7ea4f eb1c37e9-675c-42b0-bdd1-653f50746119 a50d8ca8-0754-4465-80da-b9da14222a49 3b267897-1bdd-45b8-a689-ce01272ba24d 258be26f-5ce5-419e-9fa1-e4b0bc95f700 fb00821a-5cae-4e93-96e2-138da26ef825 0a00659a-51cb-4067-ad57-d6a4a9688788 f8268144-edb3-4860-9d51-f2ea26316536 4f5bb43d-6f0e-4ba9-ac70-2e9dafd60682 f5101a58-7ab1-433e-86bd-479713b97ff3 30d4db7b-abc2-46e1-a021-4b73c07d4bbf 697f99d2-aec5-4c39-8cb6-3fef4b1ba51e 3968b90e-3283-412a-b63a-fba495f39c86 1b617924-7e1d-4797-89f3-6204cc51ecbf 9e3e553c-4564-4b8e-8815-5123d5212d9c 7f9aefd8-78c6-456e-ad3f-6438e7b9c231 827ce996-8cbf-43ad-8627-66afd33662b5 40312273-ef81-40dd-aaa5-8d8b944e0d4c 85bf47ae-d61a-4899-8c64-c6ba02442ce9 761149ea-4cbd-49e6-8176-49da549e3731 c3800a49-b70b-432f-9dad-4868a73ebc7e fa41c4bf-f9d6-4cdc-949b-e4767fe33939 26083110-ef81-4127-acca-4f359986519a 5511b822-6765-4713-89f9-b2503b0aaa53 2928934f-608c-4c23-9fc3-0b46f4423a7c b95c0c43-00d7-49bc-bf8e-01c1c9da21f2 eb2c200e-b019-4291-a0ce-591f91df5aa5 8913dbc8-49e9-4fa6-bc6b-c3660feb575e 6f4203b1-25ac-4558-9559-fcdf0aeaf9a6 2de442ae-2e04-4871-845c-8e83d13cafa5 aea315e0-2cd2-4ae5-9b0e-973240a75918 0160ec92-5ac6-4308-b5f8-67d6baa42114 473eb256-c5b7-4526-ad85-27403ffb2be9 e9ce0444-eb81-4f15-81bf-0b368cbc16cc 2c2fd997-b3f0-4c01-9d0a-05603c018dd0 e3805e89-306f-4c00-9f36-de92b29b91a0 cb071cb6-762a-4b1f-a3e0-c9ef3e389bf0 3cd114d8-50ea-4db7-b4e9-d6fb895f4853 02363815-ede8-4a80-b558-7292a50afb0a cce43293-62ee-4a48-9fc9-271606fa6c63 1bfa392a-de1a-4004-b055-a620d920876c 4ca94922-abd5-4342-949f-feb8c9bf7082 b5b19a54-d42e-4715-9c42-106a304b567a b0f8fad1-c1cb-4a41-87f6-a89c493b35c9 ec4defbe-ed6b-4674-a773-b05bf3887493 6d605109-003e-47cf-b99e-cc4dd4f8bcd8 ae31f42e-ceba-4a90-b653-65e6ea4aa84c a688284a-8fa3-4862-9c08-1faee9492a92 77290c94-1be4-4e1e-8388-5f7faec7ce96 a1333f9c-d961-42d0-93ec-fdcc56801d00 70a294c8-024d-474b-8ebf-fb4376eb5c65 827f3dca-7554-446c-b24d-275a93206941 d291f4ed-475b-4b33-b05d-18a4608c4160 62a266ab-5508-48d5-a110-33b9e460e934 71103ca7-2831-4010-b327-b896b0535561 840971fb-9fce-451b-9375-f8265804c58d f0ac01cb-2d65-4b36-8e4f-668398e5b9a4 f15a83a2-afb8-452b-8790-d32bb1fad0ed 0161f2be-2893-446c-95de-06ef22fc4f8a 108ba8be-9bca-4bbb-88fd-304def48f3f3 3a35987b-09e3-4386-b9f2-c73f44196da1 36a3a955-811c-4655-9c53-3e3abb0cb838 2afe3307-898a-411f-b22e-2bb14e66023c 2901a216-bb99-4be2-b996-5c9e59b1f59f c26ce87d-ff4f-4954-96df-e097fa71613d 2f0246b9-12be-4e98-9a9e-45a4da280a1f 3d50f828-6dff-4da3-a9e6-8c339e679892 b568dab0-98c0-4616-81a5-fb7648c6cbf6 913740a0-bb22-4206-9234-b9d3035fe722 23199642-dc30-414b-a270-05dcb04aa9b7 4fc341ac-cae5-49fc-a54c-8fefa1a0df4d 9f34fa66-870d-4a9d-b8aa-48a5a0aa7a86 9e762554-523b-4b50-b27a-888c580fb3dd 2717fc1d-3cb1-4c5a-9806-61a2f2b3c099 074238b8-7dd1-4eb7-b343-f0dccc2ecc7d f5fa7878-b4c4-4a53-b0d5-a10c494617f4 679fe562-f6b7-4385-b2cf-41fc17a89aca a9c826a7-2dd1-4eca-9acf-b64dab4a1e93 9ce47e18-bf6a-426c-b2e1-a3636c509572 569ca190-13db-4d59-9674-32e02d1a36dc 677e23a8-27c7-4606-86a3-5f2212e2da10 61083233-d987-4478-9d39-04a266ee4e48 9048795e-1323-4afd-baa1-68a1b59e452b 486bac82-627e-4614-95dc-5927af6850d4 03ff62ab-5a3f-44c0-9f81-25248d50b0e1 74d273db-8cd6-465c-842d-a12337009f55 76338e8a-afbf-4e6c-b4bd-d6b13941d8f5 50267037-0319-4d68-b48c-30c48f71670b 40d69fb3-5571-4d26-86db-d4aff11bae59 11785a13-9ad9-4901-8fb5-64857edaec5c 88cacc5e-d1ad-4518-96a6-e0b0bf3d1fa3 01dddae2-f7e5-4e75-890e-003b0453c5d8 24253c5a-646f-4a9f-b86d-e35f9383bad0 af5dd721-1808-4732-87a4-d10595316363 e83927ec-7edb-4d3e-b556-cc17cbbfefcc 7bb612b9-bc73-41b5-b792-261c9ab96b88 4ceefdec-cbb1-4015-9bd9-edf3b4869ca9 f686874d-ceb7-444c-80ec-4524dbf11c02 00dabc56-edaa-404b-a320-fa1afa80a6bf 8faf16ab-5025-4cc6-932c-a6092253951e 0e4586d3-2f37-43c3-b453-9a519e062753 60a2155f-18f2-45a2-be69-0b2af5af0dc2 fd5f62dc-99a2-45eb-8435-015641a7d6d2 9b4bca76-d664-406a-b738-d941b8134ebd e26182fc-7f28-44e6-8a37-d553e83283f1 c67d7af8-545a-42cd-8fd7-772cdec24b2c ad44dd5f-ca92-4ea1-b83f-c61914fe0972 72e6c55c-d73b-495c-aba0-b45a92b66c41 f7ccc44d-9530-4c41-ad24-925d2156ec8b 1a66d0c2-5163-40ab-9e4a-d9c8bb0f4e61 57b59b3c-6f42-42a9-9ef3-d0df2cda22c8 85e1ba03-caf9-4505-bc42-1ab32e5ccc6c 655a4c65-ecbf-482f-9cfe-30f96085cac0 6c20affd-0c87-473e-980a-7307989a2e1f 5190be6b-d67c-44c5-bb4f-2258d2bb3ed8 41b74542-8d2a-4856-a714-d3030817b4f3 3510b186-04a7-4beb-b511-0421616bcc75 ec74c638-ac47-4d13-910c-a9ee316284fb e09cc887-7dbc-4248-8156-f78dd06f545e dd406cc0-1141-4732-a803-a058d028f08c 812239c2-8f5d-48ed-a860-5c0a3bf7f239 5749a93f-d6d2-45de-9cf9-bbd5ccb35d8a 180aa2c6-1a24-4cb3-bbf4-9a420cef77c7 bd62b53f-f29c-4ae0-bbe3-8e51cd91682d bacc6660-3089-495a-8555-dfc1d65e1ad5 caecf679-7258-4929-87c6-844a4aebcbcd 2a8c8526-287d-44f0-8dff-10774802614d 3826d2d8-0b1e-4f71-9f55-8ad0fcfa23c8 d23659f6-a24a-4f89-b5f0-58d6f5e50a21 b1d88864-b651-4bdb-869c-964515706291 de97375b-7ed1-4c4c-a410-4ea95826ea0d 611b8eb3-f631-4bad-88c1-06033311e4c9 022f6055-87a9-443f-8db3-142bdd14a885 a8945814-58aa-424d-80d4-14365b4cd8a5 e1a23cec-a116-453e-809c-e723c6b68e7c af5933ce-f566-4f35-a5b1-f7eee21f9359 aa791f32-7b0f-48b1-af42-8b89a44a9342 66c5b093-15ac-43e2-b154-1cba108b43cd e9a30e6b-3fd7-4070-863b-da37802077e2 476df595-431a-4379-9f6d-6672f83165be 4912a9b3-ffff-4e4e-9175-fd093c913e45 6dfecee2-b1b1-4f36-a45a-30f3f428482b a43d37d3-f1fa-4a05-95fa-6e6f210ebe0d 982ccd24-1f80-44a0-b38e-7daa15010e52 5d1dceb9-ad12-4042-b7b7-5bf77da5970e 2609b584-52f1-4175-8c39-a43aa492bec2 49459143-7911-48c6-bceb-462fcae75a79 d8003ffa-96c8-43c7-a4ef-79365bff505d a84bda56-ca77-4ed5-b39a-a658a237221e 81267deb-04ab-4cb6-b338-359d15a3c012 e8ad33cd-0b63-4380-bfdf-1a4dff6db0cb be65e4e3-bd86-48fc-90df-b005205db952 bd3871f0-2dc8-47bc-b050-11cfcd5abe9c da7fb934-a767-4c0e-9740-b7451e528006 051d4cf9-acd2-4c4b-be0a-b1418b4bdfc3 fc7b9ee2-f6be-4e9b-a3f0-6473d58d2d52 65af68c4-bdec-420e-b995-33ede01e5dd2 0b4cbaed-b664-4a26-be5e-3ca18d1f87f8 aa35d7b0-867c-460f-8953-47f0abe46c25 0ff68437-8376-4d95-a4b2-b0db243cf91f 7da5431a-e6b2-486d-829b-89009cd6f820 07dbbf7b-6e8c-43cb-b818-239aba30b004 3b5f6aae-ecd6-4a33-8804-58a1c8ab6225 97507967-694f-4a77-af59-caf602b192dd 29a19782-e17f-4353-9cc4-561b9ddf6207 d9181172-1cd1-48da-868f-7764d6a7fb20 4c0a622d-776a-4a23-a015-fee07954befb 3102c1d8-0c0f-4e50-ad58-6cf54ccfd8b1 5089af77-b017-4dca-a020-f74f7222032e 4487d518-c557-4f6b-9832-82100786fec1 78e19efe-6d8b-4021-a791-d511069d3e68 605eaf31-2664-44d8-989a-f6d5031d9e7a 256237c5-38c3-4bc9-abf0-a8b2f78e7b0e 805fc829-6102-4b2e-ae30-b367965c0f99 e7c07d87-b412-4fbb-9238-b8be087511d1 f845778d-d776-4745-a21c-25028adb67dd 932dabed-9cbc-4241-9cf4-3d1b6df8fc7f a46c09e9-2a71-43f8-8a7b-8e76c06e91e2 251f1f08-1156-4877-af15-1621b84b13a0 5fdddd40-6634-4608-934c-5085f9374cf0 f82c130d-01e5-49f7-849e-bfe08e5b8504 a16ea15f-5e63-4b35-91f8-344ac572ec0f c098eed9-150a-4ee6-a678-5fce337d61bb 66c51c59-d57e-4c95-93e9-4cebad5e3aa0 9810c106-1b9c-46fa-aeb8-2ff0901cf900 06ce6cc8-19f3-45cd-ba97-cb909d923a0c 808e37ec-bc64-4704-8364-5e56f36c2dd4 69e3eae7-291a-4200-a1de-d03e44d960da 134d9046-5660-48f9-bb60-8aaeb8bdd0da 81884704-9186-4cbf-ae46-3911c54581c4 695d013d-a490-4569-8d52-2037a305831b f1706607-b5d8-4ab3-99e5-7dedbb6047ec 9592e705-7680-4ec9-b71a-6406728c863e 8a82aa53-7f1d-4610-a32f-0c5df1142cd1 2a43df08-c7b8-4a51-a042-267b4ec681fd 3fcc5f7f-2132-4bf5-b8e3-5f3c54d8026f 65dee402-2684-440b-b577-27f8e094649f 9768a85b-6b0f-4832-9299-5bc98c959722 a275a1dd-898d-4e9d-9360-8a15c17a9b92 df883097-739e-41a1-a728-98fd0d3268de 08b76a82-80b7-43d9-980d-ee5362fd7019 07321207-709d-415a-a7ff-ee55ec21c175 8a4f9cc3-6803-4a6d-8f25-a1ca356c523f 5aa54a9c-4389-4ba2-86f4-5177161c865e 83d84c8d-2e37-4295-b91c-1958eb88f422 615e2597-d7f4-4290-b20a-f38cc75c76d2 341fae2b-82b0-49be-aaa6-5459d5fd7f7c 11ccd7bd-beb5-48b8-8d14-eb462978535f 2a0b524e-bfa3-42dd-a7d2-d3ddea88247d 333c4733-1f27-4f4b-a662-02c44e98bb31 e1c0bdf3-487c-42a9-a5f4-7306770800e7 e0f00e1c-a7dc-4c85-bd96-5f835e0fbadd 000e9cd5-4717-424f-ad4f-7c8ca46335e9 6004f030-2b2d-4235-97da-32456491a137 785cb224-24a9-4c4d-9b25-97cf613966df d49a2d78-7847-45dd-ab10-60de16020a1c 3dc43dfc-e5cd-469f-974d-f4223d195db9 5d586c5f-0055-4b53-a833-ea669bd1526c bbe21302-38a9-458c-a2ee-f723fa465890 a412b98b-0a88-4666-b5f1-f0cfb4ce6d95 1ebc9e5e-c934-4966-8187-1ebb287560f0 86fba48d-6f58-4d64-96c3-66bd6db181e4 77192233-679c-4993-a5c5-033ee7f4650b 69e07f40-ef3e-4662-837d-22d8e986628a b18c7980-eed2-4ebe-add2-d5cac17a532d c4c184cb-6ba0-4e30-8236-a7e731368023 94cc05f8-6139-43fe-9efa-bc9ef2380a3d 198305fb-e029-46d3-af8a-aa5e30bb6d06 630a9f65-73e8-47db-8c18-1e82eb67fd7a efb9965d-d81c-4ec5-9355-f191db495f62 f4faed82-601e-4483-a7b4-6a2900315b16 42974365-6658-467e-ac34-3fe892fa1708 597925ab-0a18-4cfb-b471-ab2912372b8d 93288bb5-1fa6-47de-af76-dfc16a62adc8 a158ee66-0e39-4f30-95f6-33f649cca39c 1ce6c86b-99d1-4615-b1f1-ab57b0de5f59 53db69b0-834e-4074-b6b0-6c4b03d36b3e 530b3652-d761-42e7-a1a7-2264e1b6b37b ca790b1c-4e9d-471c-a3b5-fe52df9b37cc b7ebfea0-7f6b-4e07-a6f6-4c1c63c3e3ca aa92b4f3-1edc-41ec-879e-bf6d3e535b46 e9a98d32-9556-4fe2-98fd-c3f81f72bd2b a31c61cd-6c20-4614-a190-8a7bb1e710f8 1ba96db6-7a97-44bf-b454-5978425ecb0a e491389c-5aba-42a4-89e0-15dbed63ddec 6bcc3a7a-39bf-448d-95ea-037e54044d0e a888d373-2002-4431-be23-fc850aea2a8b 8d9bd3ca-52a6-49fb-b6f7-b9c71bc6493e 0e9ca18e-1f90-4e82-97b8-1466798d20a7 feb79d39-42c0-41fc-bb24-869ba0f128b4 6c545ab0-d890-464d-b551-703c7e230459 2ae97a13-614e-4da1-84d1-620c6b115d86 077cecf5-3cdb-400c-b80e-a13ca670d084 eb1839dd-a4a5-4904-b04e-f24ba1a3a605 f151a7ce-c4f3-4cb5-8b45-2509da9ac5be edbb2bed-01f5-4a95-b207-a4475fbdedca 81fb65da-7bb0-4f42-a369-26730f3431e1 b38086f9-ff8c-4f69-856e-c9dd7a3ceb90 e02e5e87-3835-4595-ab31-bdc27b08748d dcdbb36e-e521-47b1-946e-965ef4bad0d1 ca49fa42-9ac0-4bba-80f7-dbf393bacb28 ea597ff5-1909-4dfc-9670-ae53177bf329 f8d91fed-6ac1-473d-a342-98866c0a94c6 1210e80a-1d41-41f6-b7ce-d993480cee68 f536c8c6-8ff7-46e2-9b58-4fc7e4c95486 cd05f479-5f28-4d00-96b2-f189e9475175 43a00e81-d3ef-499a-82fd-0d7973bad194 c29942ad-1920-49fb-a0bb-811546649cef cf33bc28-ab27-4525-9bc8-0708f6480619 9eee777b-386a-460a-bd6a-98442b6b7e36 1333c65c-8f13-450b-9a0b-fdcd335ed04f 82427435-bbb3-4451-b0f2-4edef9716be0 4d331057-5a8c-4459-af54-c486682e108b 9aaae5de-20eb-48d5-82f8-092a1f8dda32 d89c46ed-4c44-4cc9-8028-c622bce7653d 273afd16-95a8-4a57-8340-306cba3b8ff8 d3081dc5-67c7-4872-9055-7523ba61885b 341c7791-3eba-46c6-9d45-9da13cef9b79 ed9f62a1-ac70-45a6-98bf-4fd5ffc074bb 6077f7a8-80ba-47d4-a825-820c6421df2a 6e9a3395-97db-419d-8b96-728e614991e2 4c466f31-7e90-4d90-8262-5ce4f41146b4 e0e67d2b-3469-4e09-a434-be1be1309816 75a7f6b8-589e-4fd6-a662-6754c2cbe7e2 e15a6164-ad7f-4ffc-b248-f3561c5527df 379642d9-c4d9-4e9f-a886-a597312f40f8 c99718af-5d75-499d-ad2e-57bf943ee1be 3c3a1cf2-dbb4-44f7-abb0-7c78994fb9a7 3858fcaa-89a8-4ffb-9d4e-fac83213010a 7b478bba-a8fe-4350-9e24-69433f71c808 2400d80c-13d6-4075-846d-42645003d752 d1381718-80ca-4267-8ed1-0afa392326c8 ec650aee-f775-41a0-a9b3-a70354cb38a6 9ab8c8fb-12a8-4fb5-858a-13116c4206bc 88e5e81b-b19d-4cce-b0ab-e3327819b917 61aaa362-e0e6-4a36-a6a5-306395488e50 1e282d8e-bf46-4e3a-b0f9-d980627a71f8 11e7cfca-1783-44df-848e-f16ea8dd7886 79ef884e-0a07-4cdc-bd0c-92f0a74aa931 42e17557-cf25-4ad6-bf97-032ff3c67a47 37451464-5c09-4807-a6ff-aa6945d799f0 cb19de57-1817-4d74-9803-2a8f57287d5a 0af2f468-c6fb-4217-be26-6b854c6de258 64ae342f-e1aa-416c-bae8-30b119a95ef9 f5fe551f-7da6-41aa-a5bb-3bdef1b4fa8e f061da02-4ef2-4456-bd57-e4abaf7cc46a b083ebe1-9acd-4461-89ed-50ff64469b03 c3e00fb0-50ea-47db-a1ea-77a4f69439e4 81099854-ebd2-43fd-8623-49235a20c385 8f6cbfb6-1c99-4804-ac12-e380960ab585 a3ce0b16-d909-454a-9139-da36462a6d0b 7dec127e-da96-49b0-b8f5-7d7cc5635c20 c0f24688-7c34-4c78-a1d2-3e96313adba1 2a7e22d5-12a5-4fdc-a945-ae7f5964dd8c ef715bbf-88a9-4934-8082-aa1a846d48c6 35e1ed69-865a-4a5d-a865-53244b5f87dd 5fa2588f-b960-44eb-bc6a-3d4397d36d3a b66bb99e-6970-4b33-8b0e-3d0ce2ada7a7 5b8650f5-d0f0-4a6e-8af0-8bf179666d3b 1c70d442-1020-47ad-a3b0-59b0c4cb5794 e56f1838-c14c-4096-ab04-17086949648b 77a535b0-95ff-4668-bd5f-d68335819f30 a8c5596c-972f-434c-8762-f5acdea431e0 4a1b0c1e-b341-4ca2-8d4c-38b44ce8870a ebfbbb50-decd-435d-83ec-683ba29907ea 55ab27aa-2e13-4357-9adf-6781a67635e6 9dd5e54a-50d4-4d11-aeb7-f58f06cf5c1c 900dc6e0-ca0a-4f77-adb8-197efaf05444 59ed609e-89a8-430b-9456-76a3f2f3edae bbcfa650-8e36-4953-8da6-188144545e33 adbb79e3-6357-42fc-a535-aa74baf8accb 651a0d9a-2450-42f8-b614-c7baa4f600ea 078df6fb-7bd0-4b9b-ba09-1b161dec2e2a 8c01de7f-d654-4b63-876d-1114ad46d0db 8e80adc9-8a0d-41fe-88ab-3214ee737317 0d6a0a76-f300-404a-b426-60fd6dc168d3 762e0aa2-02ce-4b10-9e55-40cc6f42dc61 64aed40f-1012-450e-b8ab-69db373a0816 23101164-40a1-4849-bc20-971ad922d4dc eb541acf-7a07-44e9-941b-43300db2a6e6 43e1ea2d-bdee-4b47-bac1-1208a42ea461 03bfa1e5-9600-4baf-a709-8c6153de334a f3e2b4ae-9714-4ece-8086-f969fa649208 61f72477-3c39-4527-8074-8ed8909fb7ef 612ee0f3-6f67-4927-9299-406926e1aa65 6c75aa4c-d6cc-4a7e-80eb-db827eedcc45 82a4ad91-6207-491c-aaa9-ef6fda209617 1d9eb001-1a12-453e-9cf2-84a6f4e27f74 0b0e4077-6c3f-45eb-a709-a74601e72d0c 38ac5d15-af93-49d2-bfd7-92d1b8b6f60f 94bbd6a8-4af4-4289-ba9c-bd3f7264b5c3 c605060f-de61-4633-b2fd-b5db72d4e1b2 53a03cee-82e2-4fa8-8eef-e109e177af1a 9ef80115-3384-44f4-a099-a30dfd79ef06 5c3abd69-21a1-419c-a0aa-46ad74bd1c0c 0eb51776-5540-489c-a76a-e67d7309123d 3ffa50d7-8797-4360-bfe4-2ab615596184 552916b1-b516-4a92-ab4e-d15a0d7f2bc2 365f5645-ce2d-46e1-956c-ceda75e08ad8 b04e9157-efc2-4ccb-85c2-f4b4fd8babd7 b7abe199-2969-4d00-8be3-540ef02bf128 cf8191ac-2ec1-4a42-9906-3a1d52e52c08 fba03422-8d0e-436f-911b-b3287dfe6676 e7eb91c7-d406-4226-9773-dc9dd77f8b9b 59abd705-1d52-4814-b809-2153fa1dce65 5b81583c-9873-490f-8d46-91edef66ddf3 a4c8cdbb-6dc4-4996-8bfb-7f597d41bae4 e31db034-25be-4b8f-a678-bbfdc978708f 7fa18ce9-e9e3-477d-8419-a2271bf6fc54 5a2b0ad9-8a08-421b-935b-a1524138593b 95c9678b-8776-4c4f-9f66-7306f734e90d 056f6ed0-1e87-47dc-8f10-f878e80cb90e 4b474052-d038-4e37-aa9d-2ca289c3e805 b1aa69df-9a20-4e62-b368-3f53dc65d858 a53d3fbb-477f-491f-aa43-e577e6b714a7 52b9313e-cbae-4e04-8742-51ae7779a9ca 8fcfbdb3-2479-49df-a6e6-6bb21428fdc1 0705627f-eeed-43e2-9032-3ee75f2c8759 52129cfd-5277-4831-ac81-d5534ae8675f 20e48c2f-ce7c-41cb-af38-57ec9609f80b e1fa4285-0fb3-4377-8bd5-dce1ab4e4fbd cd4da103-b3f5-4b5e-86e0-544e14f94655 e4c62333-5b1f-4729-85d2-1d12c482a010 f4442151-1ee0-4290-8ca5-3fd589aeace5 35482737-6b8f-4ba7-97ed-9673079b98d1 1730d59c-32c8-44c2-8435-f54658cc1bcb 4dcc03fd-0fbe-40f1-b729-3adc10bc7510 3c016974-b5f7-4df6-a03e-496e88ec1bb6 c092a1eb-e888-4d3b-ac2e-401a77fbe087 25a1b6ae-1efe-4b91-95b5-0d747b875245 52fdce3e-18c5-42ad-b04a-b12bf7ed8360 f0edd4c0-826e-4d4f-9ee5-b0817537ad93 6f2ba197-fb7b-4f2a-b341-86476308e14c 2a70d818-1278-4b1e-aa83-477db947916d 42bce1c1-9baa-4e34-9fc0-fe2cb5bcbcc4 2cff4121-145d-409d-8b2e-37f548a22170 265645ca-56b3-48c9-927d-98504f4c2470 fa0af236-1346-481b-92e4-31b5795015c5 9f6f28fc-36e1-4f89-834b-2a8b8620c08c 5b9abb0b-143a-4464-bd03-eb5e06bef5d4 c3c31755-167d-4b86-904c-87357dfb0b0c 0bff8740-72a6-4771-b592-a50eb0526712 a3a97a55-b63d-4988-b667-09db4c862784 8c6369a2-bf47-4e84-bc3a-53e254619de5 ffb72e6b-7d58-475b-9942-2b32f2d2239a 5f5ddd7c-50ab-4646-9067-a47d1f827276 9b26331a-d732-4c9a-8877-9ced0c5c8ab1 2776851e-fbc1-4429-b6ff-88c8b713e729 bdc249fe-32c3-4b92-872d-e3fd6b639b22 4b657a43-dc44-4de2-b833-be30b17ce96a 1ca08baf-ca70-432e-94f8-b09134d7c11f 970d8667-964b-4d06-b2e9-cbab72a8cd7e 6ec78e55-8ba0-4de9-8594-38e938ee51a4 e0ad2568-857e-43eb-9f37-851a96663f77 202dc4e4-f626-4887-a958-47530e83c1b0 018981b8-0dd8-46b0-a4a6-37d679a4e12c 7bda2732-f4f8-4718-bcb4-fa19b2b5e72d ed9fb9a8-6f1a-4113-b42e-fd860d1dbf87 f6c28932-8cfc-4e99-8a38-6db4bf69cb2e 97f8b4e2-4145-434c-9fd8-9840f7b4dfc1 de3fff1b-3587-42c1-bbf5-6251dd0e9470 86376df1-79c2-4e3f-aa1d-5471dbcc6134 94aa96df-15e6-4a21-a127-3416dfc32032 4a5ee0bf-b130-4358-83e9-eaa63c5b08cc f4db34bc-22b8-4cb9-9592-c588fc57ce01 016f3a84-8196-47ef-975b-f8d6f6cf5720 66af3ea6-bed4-48a9-afc9-d9f00d8467a1 fbe0e58b-6467-4d32-ac9a-cfeb81bad74e f4ff274a-4342-41a6-a70f-252d0051e71d afc4f73b-4b1e-4e1e-bf36-603d7be6d83f 2976a41f-dd2b-493f-bea2-48b52959ea18 df24996d-e1ca-4950-8067-d2591f64b8fb 6a46e24a-2bb1-416f-9c98-616e0d5a0749 8bffa444-1e7e-49ba-abef-0f5d8cb139aa cb604b7d-31b3-4959-8ed7-0f0606434b27 2225b4a2-6cd1-4dc3-9bf1-a86bc209d8d7 b607bba6-d15c-4f6e-93ef-37e48775b138 a25800d6-5770-4669-b7c6-dd03584086f1 3baa91f2-a7ed-43b9-ba21-732af7bbf489 d9b05bf4-f20a-4103-901d-42e0f20fba72 5793fdc4-f639-448e-b260-4b3d9d1c5316 e682d144-f357-48a5-8a1d-7c31a8372ec0 f8d422f6-0687-48c3-88c2-b10beefb2cca 361e9192-527d-466f-bc1b-87cff2a62e71 756085eb-7e79-4b1f-9830-714643864f91 dd658ff7-51c5-406b-b9fb-d3e3cea944c5 61ed4148-4b39-457c-8c94-55351bb1afd2 361a7618-c858-4923-ae83-68eb497f8771 54cc8ce3-862f-44f3-953e-85c06ccc8436 0c124d58-fec8-4e4a-b80b-b668f7e54298 2d7c2f8e-2ca0-4d5c-a3e7-ef5565461e19 1d14ec01-a7f2-4a9c-8191-ce12ac33591c 25f9f632-838d-4003-a0df-afd51c9446eb e688dd27-2d44-4e8c-acdd-974c746b3ca1 ea6ad507-95e2-4960-aaaa-d6645428fae8 97d5a280-5936-4204-a76d-610a3e5b011d 8d9c1ad7-ddf2-4ae7-b81a-bc4ef6ffacf6 b4308f48-b4e0-4e5f-8ded-9119abf16598 26653a30-7fb7-45b0-b09d-c97ff85526cb 30f357a7-e761-4001-a4cb-dafcf3ceef3a 7b315ce1-079c-42e8-b674-d858d97a9360 be79ddac-d9ce-4ff4-8102-94bfcda38834 ea9e0d78-b4a7-4d60-a092-ecd9f58d3d78 c5eecc2c-ebdd-4fa4-bf82-207f28946de8 71267c74-1caa-4f32-a3e8-a6ea41049074 74075366-63fc-4b0a-9576-96d391eae422 c75f201e-afba-4202-b1cd-9ad26010b1b3 eda7e66f-5d47-4fdf-a5dc-300a884994c5 4a3f86ea-25b7-41b6-854f-3911928cc998 547cd8a8-7e05-4c06-9f4f-58224b1adf1c f9dfce16-5ce7-488d-b3b0-b8f07230283f 4686a32e-7d6c-4877-9a1b-2d63f973a8ca 54ab8f06-4c4b-4f3c-9df2-44f8297e897d 39790ccc-9fc9-4a4d-a7e6-fc2e931dbdcf ab102bfd-a988-4b91-a234-2fed34d6b1f8 48bcbf00-3c51-4ab4-9a32-c216abab8f47 9516de4d-7ef5-4311-9dca-ab29f1fad20f 88984d15-cd72-4054-a96c-ca9e259e2216 08329b3a-b85a-4b74-8337-28c2a0a3afca 33495e46-75ef-402b-8c8b-abd41476eb04 b105136f-8a8c-4787-89c0-748465597028 c601f703-ff34-4ef4-9fb8-89a72da6fced 9c335c55-e03f-4a10-9fcd-a266f3d6bb9c 72d2bffb-73cf-4abb-adec-f5139d956a9e f531372e-1d3d-476e-97a4-180ed7b44e5f 2bf3207e-8805-4292-909e-9438b3bfbdd5 fae8e66e-03a1-4f0e-bb5e-c662a1abfa2b 6243b066-60c9-4e48-a73a-84b8c5874694 ef590044-cf96-4917-a1b7-7edf501f0e2d c2566d05-0cbf-4dfb-a8da-68718ef111c5 11a76903-0176-49ee-a755-6744a18e8542 bbd2a18b-113d-4367-82e0-aae34bebbdf6 a1971865-be71-4d0a-aa63-cfeb6f99ab44 99af351a-a707-4f81-826b-9bafc2bf0b50 b4d641ab-9638-42b2-b159-f69fa588e06e f015ab08-1797-4cad-9ee1-ac7b0a73a350 c7645e7e-8be0-41ae-afc0-b7caf7469120 d89f0371-b0dd-4c42-a96f-81a52f8bc2d2 b7cb9dc0-b592-4cfd-b5df-bcff80157d0e 530a7e39-dee0-4560-b631-9412f293e916 14566851-ab40-4cd8-a161-29310a0b73bf 0731cb0a-5390-479e-8c24-7ccdcd610e32 890e75cd-9ffc-4944-b312-0b0659c9d364 06be9469-7c6c-4fa2-8616-064f03cced21 16107485-db3f-45cb-a1b5-9c426f93f004 bb9d5de9-b5ca-4f49-aebe-16c74c13b025 eecd7d01-5967-4c35-b25c-22193354c35b d1238625-92c9-406b-b052-5c31c9a8c916 7b4923b0-1014-4d19-a5ea-67fcb66486c2 5d72c50f-2ad3-454f-a4aa-f2cf2ed35d1a 8cc41085-59d2-4341-a71a-e2148e1b55cf 2f41bc18-83e9-4800-8323-7ea1a8a91bbb ed2e7993-7d8f-4781-8b3a-380a38dd1a8b 5b90bb1d-fec6-4520-869f-cead937c740c 76f94e02-81d8-45f1-8b64-31d39a5f86e5 41b7f625-1d65-4452-bf9a-821a368e3876 0c89c6ee-f1c2-4efd-bd80-06c807f9db19 be1e7805-3587-4e7e-a248-7144276ff806 4d63414e-f07d-44fc-aa91-13b665720aed 5e1d0cad-b1ac-427d-94f7-7e8bb9e60c74 00ab2cd5-d92a-451d-8a4f-3d343f205b40 455b9d8c-4a90-47d0-8b01-c6aba1bcf478 8eb5fef3-796e-4707-8f01-b10dd5e39003 e7cf2193-4ec5-4f48-a54e-77aa8b1272b6 cd23d7c0-adc9-42ba-9589-bb6e274466e7 299dd2c9-90e1-4f9d-b7ab-b7b9cedf7d97 8a3a7e55-7edb-41d2-83c7-511e8ec79a81 8e7f390a-8f84-478a-b22d-385a533597ff cd76203f-5d9f-4acb-bc33-95330f194dac 49cb6c68-72ed-4bf6-8522-03e0f4439944 ef5b8937-f465-4170-a392-3d4967f360ef c3d8cf6c-d4bc-4759-864c-9c191a942790 4af08dcb-ca13-46e2-9468-415d8def8494 4aa41962-f7d1-4035-8c77-10df43316fce 93b70ab4-e52d-40b8-87d4-fc83e33526b2 9fc7e67c-05e8-4469-ad74-6a1774f51d4e af3f31de-0e4b-488c-a37b-537cf8ba3392 5fd70dee-2d99-4c51-aae6-3c78faa9ae11 1bc56b52-ffd5-4163-b7bc-97e52ad4d4f4 618fb14a-5254-4b61-8afc-3d79218fe6fc be9d4088-28f0-4afd-a7a6-d3063c37d3fb 0961d236-0348-4570-b12a-0fecce3e730a 8c4c3882-6669-4b8b-9683-452edcadbd5c d608e4c5-6d96-45d0-a1ca-01e5407abbe8 1df72e59-0127-42e4-9bfb-7f7bd92ef955 91ca78b6-a656-4a94-9b6d-a615f49509c9 7ce19f77-e2ae-4f3e-8d8c-774bb1be4196 047220a3-e513-41a8-93c8-8a910d919c0e 1b25004d-e4b4-4a83-a205-aad9bf8c55f8 6bf639d4-6f62-43ee-8ac3-bceb45aac915 61babb5a-d7d8-49cd-954e-4f7557d1c1c4 875ab354-53eb-4b4e-bf3c-517d9299ec14 69b9f587-38f2-44ba-a874-1b691781e916 25498085-961e-4c54-ad7e-2268a0cc3ce0 4d0cf4f7-4dfa-4e41-b7cb-883760c40a28 398d3eb7-7997-4041-8c10-6d6baee32373 c2387552-0be8-4ae3-afb3-50f2e06a77ae 83ec37cc-aabc-40ed-9f6d-ce4cad7ccf2d 1f089962-d824-4273-bbbd-58d50a1485c7 9d946b2d-0075-4183-9c0b-c1887e121946 ef052871-8191-4d7f-8097-918432ba9a93 f0e6c061-6103-4c28-ae15-dfcbf98d2efa c418dc5b-c1dd-49e8-8666-2d497ef56d81 41c2298e-7c57-41c2-b5e9-896ba9cf8cf6 590d6a6b-8abb-46fa-93b2-e78f91d54339 43a3f87b-22e1-4479-99d0-9ef1f1713d82 00ed24f6-f32d-4c9e-9bf6-b91f4310c558 0e5aa851-723f-4df5-81f3-bf14fcc478f1 4722ee3b-3e77-45a0-ae6b-057d5c933d7d fc6567c7-0c4a-4436-8540-f0a46cf84b7f d78468b7-089c-46f7-93b5-d83c30d7f43e 0df14823-0a8b-40bf-9c6a-fbcf0a1328c3 21340cba-7db1-4caa-85f4-a8b2c138eded 31d15fcd-5b8f-4824-8079-13a161e5ef25 d1fbadbe-60dc-470d-bd6b-8f56aa645472 45b42985-4202-4d17-a962-69de6939cd0a ac3d48d2-6e8b-41d3-b2e3-99afa0befe0f 0f35fd52-216c-4b71-bcd6-07114b33e9ef 48d9eb57-9df8-485b-a884-ecd470d6a785 77318338-b784-42a8-bba9-3894bec1595d 0eb67f18-62c9-4727-b5f4-49b23b952914 acf955b0-fd2a-4a2b-a521-0b40266ca9b6 c31571ac-fe67-4b2f-a467-d2e6d5f04c83 dcabcf52-d64e-4670-bf53-4fead45cf87d 8ec2cffb-be44-4d01-a797-5e9aabd5f7b5 67eaad6b-f28d-4ecc-834b-8185c55d3ecd 28e90951-f54f-47f8-866d-77e37a688022 85efec25-c9d4-4cbd-a31e-fec20be16a89 a06eff22-0b53-4ce1-92a6-de2f6ebd1cbc 17f6229c-d732-4aaa-8bb0-4d58d57bf2c1 b1d980b2-6710-44de-9503-3097e03d8698 1aa407bf-2239-42c5-9ea3-ca9ce4a8e0ef 494de9a3-e338-4871-987b-911403131cf8 0960a01e-99b7-4b77-b4fc-a928d8a560a4 1ac55754-a70c-471c-b332-e9ca24890539 73c7d5e9-b2ef-4503-9a17-25fa691425be 58d720ea-03bb-4281-8e6d-2943526e1d45 4cc56e31-5e19-4263-85ab-6aa75069f182 cf9082fd-66d6-470d-977e-d29b8cc470f9 87c848d4-f1ff-480d-bf65-f241950a8567 74e58a5f-4411-4991-a263-a7fd10d448b4 d15f4887-4694-45de-9217-b4d3eedca5f6 327e237f-586c-48f6-b65f-4e6e9152a673 3eb680cf-5856-429f-927c-28a6645f1890 2937732c-3d48-4443-bc22-1e0bc05219b0 9ee3da89-44dc-49c1-940c-a1be52156652 928ae51e-fdf2-4b9d-b81d-c449bb9c194b c9ec6e79-8ebc-4610-9ff6-8f2704d35fd3 0d94a19c-3d5d-4326-9042-621db2e5aaba c556a0b7-caa0-4be0-affd-e522da10f576 92edc6d3-12b4-4385-96c4-7dd15fa1bdc8 3344427d-b781-4a34-b33d-256db812094e 12c596f7-5e2d-44c2-ba0a-5507ab57795c 5bf6a13d-9d37-42d1-ab7b-f3500ca6e064 bacfb216-22f2-4806-9ad4-e4d6ff178a52 1a96b644-b49d-48d2-9949-0ca39519a63c 820e8ea0-ad3f-40c5-b87a-80e7ed01a54c 5245377b-a4f1-42e8-a9f4-c1d2c90869c3 01bd79ce-87b8-4573-baad-06dc109d26d9 6e5b20b6-c3c7-4a70-9e47-d9f5120cbb76 497b201d-6865-4cd2-a9b7-4428ac71f906 c0e66a46-cf1f-4474-9411-2250d3166cf5 b628cf36-745d-4a7a-8453-3ad01795a4b5 fa94b9fc-9669-472e-80d9-b6fd266a397a b7b5066e-0b0e-4d1d-a11d-493a2c246307 8fcab856-ede6-451a-a9cf-30d5b8341c3c b2aa2908-acf1-4850-b9de-7dc6edebc0c6 226385f4-91bd-4b21-b0ae-3b744361522b d3e49f38-88df-494b-8c93-a18c114acf6b 4516215f-7fc8-43db-88aa-2a25f390faaa f120de67-edbc-4d53-a23a-636d173ca855 a96ce3c5-5608-40af-aa86-7635eaff72b0 6710c9b7-5afb-42a5-b240-963e151fc422 6e08b0d2-77aa-4488-9b54-9fb0a7f34347 f283f0a8-e6e4-4f41-9027-4bf364f4b1b4 6d737f0b-4fd4-457e-ab01-10b9e29890d2 db3c37d8-21d2-4329-b73a-e82aa75c78fd 6c36bc69-13b0-4454-8779-bf5f76fdb126 0da07f5f-6379-49b7-bfe0-46a289d9092e f7dc42da-58ee-4079-87d7-b3c609ae0478 4f49faae-1550-4c11-a832-ab567e1a9e02 38d1c903-adf0-4610-8dd0-280bb3edc125 9c8c1a22-eb65-454f-a7c4-16ecf7254cd8 6d20bff5-3ed1-4ca6-a4f1-ee5661df6026 7a7890a8-ab44-4214-898b-0c74f5d373cf be35a488-b65c-4d09-8e6e-28185deb1b9d 0ff3e276-8e28-4eb5-84b4-a7a3a4045fd2 49e2b02f-f725-4336-8ec1-a890abb6a03d 3e2f1c54-5d98-4fa0-9ef3-267daecf9616 eb76fd7c-7ce1-4bc8-be16-d70e20f56161 1691d03b-89ef-47b3-89da-f0596c6e155b 19006a6d-f56f-43d1-9623-c85b5fe519b4 6a97b7a9-a335-4a6b-a356-faa001fe2c77 8fe6ce97-2884-4109-96b5-971cfb04fa1d 7bde10e1-f777-4da7-95a1-6a70a718756f 9f1521a6-d780-4cdc-a8ec-b81400440286 17c7f387-403d-446e-9257-818aefe6a141 36eb8dc6-64ef-4717-ba05-1af77d9060e9 87688377-5f89-4eaa-900e-c039cd82becf 2972ae1c-b4c6-4cdc-b468-eb0e00436e81 d6b475bc-6ffd-477e-8499-d3fca53bf33b 2ed593d1-6fbc-4b2b-9f0c-319b9569b6c8 9bd33156-cfd5-4d98-ad4c-67277c488b70 2da8ea82-4cc6-4060-aa35-23ac18fe0981 77a29ef7-e643-4ce0-a3d3-05f1bd3c2fe2 64bdfdea-1572-4862-af16-b294c6ac4f14 2fe46dda-e5af-4e8a-ad5d-33e777bd1cbc 95a7e846-5cc0-4d26-b341-2e3f6e82a4f3 7bf72bbe-21dc-45bc-bb74-4f0962e3b94c e28530e8-8881-4a4e-a8b8-c9a6fcd3ca98 582b08df-ef8b-4050-b3f4-6bb59980f05e 301a3af3-818d-425c-b7f4-b1e1408b831b 3006d979-0da9-4e9e-ab39-3dae2ce97b9e cc69b03b-afda-4ced-8b3f-610029a4106e 4dfa022e-2c06-4dbb-a45b-fd47a6e63aac 212a6050-6cd3-4307-b22d-8320932e1f84 1f7fc920-ce41-4f23-87ac-2cc9d701f01a 42e156eb-013d-4176-b4ee-b55eccdebc32 51574d0e-4daa-4fb2-8965-e66283f842ce a6f3439a-deed-4a39-8e49-1eb990ca1f3a d8879ece-c2d8-4476-83a4-56a014ca26d5 92417077-7198-44bb-8aea-64e103bfe410 8c35017e-9984-4e36-84f2-10c2c9b746ab f7bdbb90-941c-42f5-92c4-60d787811348 f0eda246-b1e9-4d5b-a7bb-8bfd0e9be1f0 7d421c7c-c80a-4903-a5bc-3f8b314d3517 df009716-b6cc-4c60-9257-df229dae7a82 8cad23ac-03d2-481a-9cd6-45061b06f631 7246ddd0-36c8-44fe-a91a-b9b29fb2d4e3 91cdcd73-db62-4314-91d9-b69a91a5b332 511c64f8-6392-4faa-b5ab-bd47146036bf df8390b0-5867-49f2-9d61-13b6fafd85cd b92a4361-81a3-4864-918d-2586a9e39a5d 85bc2582-c75e-4109-b2d3-cd24b220af92 fdad3db7-3795-4ef1-a88d-e196e3b7eaf4 8f67f4a4-c7da-4e87-b1f6-e5fd40ef485f 696273cc-3d74-4dfd-a6b5-239f5f140f40 b902242a-5427-4efa-a0be-81dd33d6affc a1165533-5f74-4c24-8e09-df294c6d361d e8063bb8-4af9-4a1c-9095-e94dcbe1a8b0 f32b3585-cff9-44c0-b433-b0c1df639af9 18515ca1-2af2-45b6-a783-907605b55d6b 28105c70-cd27-4791-afbc-c0b40e544952 09de901a-93ee-4e63-a81e-d005a352c6d9 2128ce6f-7172-44d4-9735-fcb54183955c 471e96b4-25a3-4729-ae69-f65226c66ec8 3248dd31-5091-4afd-81a1-f9280e47cf11 536b2510-6be2-4164-a35c-cb8f5e9e3f54 da1396e9-7b65-48bb-b4d9-675c2a6dffd9 310ca57b-2ba0-4aed-9cfc-6816bbf2aa7e 7e67fa86-8d27-4851-85ab-bc298caed846 1a900d86-d1fe-4754-9892-4c97f6754789 cd078159-1d83-4b24-b11f-c4a0a1696cd1 dc0af0df-7edb-466e-89ea-c08e843bfe2e 095c9d58-6567-4c82-a488-843bdf4d3ad0 0ef75c2d-c3bc-4485-a584-f017c6013cf1 821e9eb8-cf7f-414d-b094-be770f0d049a ee0b7683-c388-44a2-8248-082c479f355f b725cd1f-5c5c-4511-b47d-f2f93ad72c0d d72b695e-4645-440d-b565-f79b911c7378 8cb48356-7d26-4fd5-90c8-0f5f0338b650 72ca6d72-d264-4715-8293-eba713b25ecd 23fcb0cc-57bc-4ae0-a1c3-cf99713f72af 952068e3-0fe0-4ccf-af4a-1f0be810ed90 f810bd67-0b2b-473f-8043-78916d3f2b78 6685e1e5-1801-4512-a8d9-05d3a47ebb5d fc23ad5e-b8cf-4fa6-a282-2121e0381091 b995ac8b-4c55-412c-ad94-f2daf7ba10bf 90ddc8aa-fa93-4153-a724-adbeee62300e e4c82378-0a69-4ac9-b688-82a7c8fb3098 784d3c33-d148-4f97-b625-6e13b2eb4dcb 5ffd21cf-4d87-4b08-8a47-06c4228673df a32ef1af-db4d-4468-bb37-f3c0beb5bd3b 0b08c923-d7ef-4483-be7b-eac40769b6d3 0f331468-85f2-4cd2-8f9e-564e4ee9cf57 136e3436-a989-4716-a6d4-d555e993eff2 202ae782-35c8-47e8-90a4-8ed0fef1f727 20a1086d-df65-4aab-8e30-768baee37044 31af8185-0d62-494c-81d0-1d59aa729c37 edc17f81-4e99-4d14-9645-36f2e7069162 b9678c6d-c59d-404d-8bc0-f3fe049554b4 3c987fad-fc29-47a1-bd01-9f9c439af059 1e6516fc-b375-4a76-aec5-6eecaa7f1bfa 5f5d0c5e-c32d-40df-9820-e5675b4cea4a abdb631f-05a7-4536-964b-39faf4ad47f6 4cd12426-d3c3-4051-8772-6870baf206d4 6a7c3663-1173-4d47-af45-6452999181b4 55f73150-1584-44e4-80f3-14e65531fd49 5a0bcd89-6015-49fa-a2f1-6c6ef3ea2de8 da043c48-6088-489d-9047-f16a9b29fb16 2aa4dad3-c116-452f-9f5e-fc62fdf96baa d55af8e6-ad4b-4930-b0b4-adad45a961ce c54ab2f7-97ad-4bf5-94d8-417718659889 ce8fc6eb-695e-452f-971c-5e5308eabbb8 8ab4b6a8-561c-43d0-8dcc-29ecf5252c15 cd1125f5-5c25-470b-bf23-017d214aad74 5c1a587e-b423-4df0-bd60-927f0eab47f9 031c2bb0-dfea-4de4-b4d7-17421bd38143 408c5aa8-9d65-4ed5-b186-fa1573887219 bca8809d-db4a-4b1d-9024-eb6bc436ab36 f9b7f330-98a8-4378-97f3-2d4a418c5116 73fbc3cf-69b8-4dab-9157-ee42174f0f86 2fab8e4a-f0dd-46f4-a2f8-d8c113395b89 9775caa5-4abc-401b-a4f7-64aa94f6a6e7 ee34fe62-1542-4988-bd3e-894cb675ee87 eca4c17f-df05-4ea1-8371-398393794f8a 0e386de8-6cdc-4f7d-8c17-ee4d24a8c63e a0c222eb-cda0-4471-b431-c164da0bd7a9 5e20aebd-4aee-4113-b01e-bf6940675f62 a193fc5a-7d66-44b5-af4d-fb5832cf4c1d c0dbde81-2a4c-4954-90bc-03df9fff5b0c fab01cc5-15ff-4b1a-bf50-683b88d610ad e7a684fd-f8e0-4853-98dd-87a12821af1f 87635f0f-32e9-4f94-9931-89dca84a2927 c654e97d-cca4-474c-802a-58b47a4ccd9a 29847b25-c31b-48cc-b225-efb55ea00488 82f69a76-52ff-4499-9702-f464c03c11dd 73471a47-8114-4263-86d4-cb869651e0a2 bf0d6428-71ff-4874-99a9-afd3d7685512 07bd05a0-c833-4d13-8005-ebf3ea8b80fe a291ef6d-eed8-4653-bf85-dfbaf0192510 1a28795c-3db0-40fe-9f8c-cf9310edb712 631e7e3c-1feb-4ed4-9e7f-f156e689276c 9590a11f-37f9-4a4b-bd30-df21adc42da7 174a4530-0c83-4d81-8223-56b067481ca2 95ea1b05-a9cb-4cec-8ff8-f956b3b36a6d 2e3dfc6b-bd54-43c5-ac45-e339286d6c24 5f698796-7b39-446d-ba5e-c1f3f997f85d 13c28bab-18db-4bc4-8fe2-7e4534023676 52bae8a5-963a-407b-ae12-fc750e60be22 ed218553-3607-47ca-b921-5c5cb65981bc 78def7e4-6f40-4b1b-a67f-f40d23377a87 9e9f6b58-e0aa-49c7-b689-2157f4e9f6fd 984ddcb3-78a2-4bb5-82e1-385bf01f002e c2938a0d-8abd-4122-baad-e5d761acb00f f246b4bf-df9d-4426-92cb-796cc027eb45 74048b90-b29c-4db6-a596-94797b39e863 8bd9dcdc-9c9c-4ece-a6a9-7e51175135af 9aab846a-9f68-40c9-8eed-1576dbe2c1fe b3df97c0-2710-4897-af03-10df30da386e c9f2f3b3-ea13-4c0d-a38f-52e2952e781d dfc798b2-237c-45d1-8cc3-459e6966ef01 a07f2102-9b09-47eb-a33b-2a665cd2aaf0 e0299036-0eae-4066-88a1-df6f4a3bdaa4 852e1d76-69a8-49a9-abe6-b3f78516a1cf 72cbe53c-9969-4f1c-9084-47e76a72646b 01c6eb28-75a4-488b-8fe5-e0cb821992bf 6ca147d8-8e1a-4b6e-9c4a-6e9c17f3e510 e13645a2-5772-4fe6-b08e-555486dd53ac 223a124e-c343-4aa3-991a-ef39831579eb 2f83f878-c8ba-43e6-b78b-11f24c01e414 9657f597-f6c3-45ff-aaab-4c81292dd4c3 e1beb790-5c51-4c7a-a2a4-c38b87bf21d5 170074c3-1c23-4a4d-890e-1228379d9a22 c25ab7c7-4f15-4167-861c-c163991ebb87 2001cdf9-5111-443d-8700-57054bd6f59a 0f3a3ee3-21b4-47f8-942f-3389d4203353 a0da3682-e846-4b5e-bc7e-b8430c1d696f 7067277c-9ef9-4205-b98a-11bba4630bc4 a85ffeb7-8df0-4618-bc12-24692d895658 61e479ae-fb87-4564-9cf0-fbbf6aff9f02 92b58306-8d92-4de9-af66-d19727ed5fc6 dabc3e9a-e211-424f-8450-ac80f07729a1 fb9a064d-8bd7-4fb4-9e95-90ebac24c73d e38f78bb-5438-43c6-ae1e-c9633ec08e31 fcd1f0fc-0fab-4e79-942d-e9ee9f376661 803cdcf6-1938-4c57-b417-ab79c7491ada 261475ea-6ef7-4569-a216-56a7f08b54b4 d878baef-0b1a-43b7-a182-690c3872db9a 7297b1cc-7847-42ca-b93b-89b1dd9b258d 9332c79c-be8c-40ec-b4c8-deea7068bb8d 30320b09-fa52-4860-8bf5-9f1476c0abd9 2f968b9a-33ae-4fb9-8583-ddb5633f3ea1 58026888-a86b-4155-b432-41716f86d344 10b60f34-cf34-44b2-9a41-366aea8087d1 b2542bf1-c116-448e-9c64-dfa76f1e20a6 aa9e9ac0-9e01-4f71-9688-a9fa8e076ad7 0f2b6248-3e36-4c44-ba48-d84e9b726937 cb0fdb4f-b93d-4968-8bb2-bcf626f100c8 672ac3b2-139a-49b6-af7e-6467d84f086c d4297bcd-56b5-4256-8493-18e7487bccf7 faa50ab1-8442-4db3-92f8-e900220d025f 71a86826-30f2-40e0-bd70-c2e7d6643e50 1082b7c1-f755-45e1-8c01-d8f7a1b73df3 8536141e-a9d5-4723-b1dd-a5535638e50d 64b69512-4118-40f2-b38c-beca029895b2 0c23ef10-6d9e-48d3-8a31-0086d0f9c874 ab9d3fac-a821-4b92-9645-4b5a5ca01367 69b18709-c081-4c4b-b382-008e355c11b0 66db026e-fef2-4f1a-8cde-4b126a1f5b5b bef54585-3dec-4625-bc41-890c592fa6b4 908fb380-9807-4406-97ec-dc0c37e9e5ac dcb41fc4-74d8-4c28-955e-4d8fd4e2da8f 1d66d883-71ca-4d2f-873b-34452fc33140 134cf2c7-f338-4cd1-8bba-6b864c718439 e4f86070-5698-4a1c-87ec-534408885f20 a525b9ca-6467-456b-a3a1-a0c640184435 8e7bcf6b-acf1-4e1f-aade-8b998a6172a2 aa541dc4-c5fd-4af3-89bf-af6bfb8dbdef d615ea51-d3af-417e-81bb-5138cd50c722 10a58693-305f-48b2-a276-ebaf175a6e23 57bc16b3-69d7-46fd-adaf-1e99b6eded96 e2c7a4de-c817-4a12-b6a5-3a52b3f1b6f6 bd9cc801-3ec3-4937-9c22-1fec499dc4af 94c48ee5-b7b3-4d6b-9a49-b1935d81f544 130bfb38-6147-46bb-867b-d2dd2bfee8c9 9df22f93-f227-4d93-b24d-80c7a4a70168 84a069b8-3f98-4e68-afcf-dd349bc3046f cf72501b-4319-49ca-888b-ca829b6210bd 3aaf410c-198f-4e14-a8ea-baa825bf6957 fcc607c7-d367-4532-8448-959f7e69b463 6d169f2d-f7f2-49c6-ad94-1a9063cb52f9 891de435-289e-4aec-af6a-5fa71bb99245 895a6451-8e46-4717-a675-00b78459e3ff 0e2305e5-78db-4594-8a6e-df0a68be99cd 837d48df-ad73-45e3-9aba-db4d06342223 9d1fe2b8-699e-49af-901d-132051dd8aeb a9083a0a-4ac6-4e85-990f-06dcfdae35c5 cd675aa9-57e0-49a0-ad20-20972c15c739 6368903d-fd3b-41ea-9486-921ed298d150 30a35a06-6422-4825-90a8-ad8b52e032f9 8fe4fe00-b959-4b75-87fd-9738354ba7c6 896ebac9-1d57-4c18-9804-aa38d824af36 3ac9f315-fce8-4383-b480-87fe1e8e63b3 9eeeb3c3-0995-4928-8013-31eef7d92f9b c66a4f8b-cfa0-4d19-91eb-dcb0fc971f70 d6b8d7ce-6fd7-4392-93fd-ba738cac9a7d d4189b1a-088f-4f2c-bf65-55a72e998504 9f2bde18-c76a-45c9-b337-6c450225b6a1 02bac6d2-8388-4e2f-8ab8-da34710cf933 b557a2f4-915f-44f7-a53c-ec3d658b6ff7 a1bc71c4-e53e-44a4-82a8-163ae7f4ae44 df1894ac-7f57-4356-9884-7ecd48564a17 874072a6-e3ca-4a64-8389-a0c5235dd679 3726f374-de20-4d92-a7fe-501fdb750071 347f0395-b1e9-49ed-9ab8-281a88f3e260 159c8ff8-93ce-42be-a0a9-a240fa263880 f8f6dc53-37c3-46cf-8d8d-b6300a1b0fe2 fde9f061-fc15-4609-8b2e-48719be2d9a1 34afed4e-4a36-4149-92e4-b0f1dd3e2701 3bb2c643-2e49-4efb-b845-9cf87ec9d738 83c79448-a968-4bb4-bbe5-456c83adb1ab 2398732a-2936-45f4-86a5-ee7156ef9cf8 e6d5449a-fcb4-4b7b-a09c-4968333326f5 07638fff-8ffe-4126-b289-70df39359aa1 458b41a3-8215-422b-bf70-d35c4fad400f 6c1e745d-9fc0-4fef-acc0-ab15821c8a78 2c6a86d3-3ba7-453e-bee8-98a0dac16935 34692fdd-cdb8-4821-9211-8c6d7343b2ab 490de09c-a6f8-492f-9b71-401603d01c69 fba4f8f5-deeb-4403-bbe8-b56b16b3e4df d97ee9a2-9214-4482-9331-5af4036ffc18 586c2af2-d3ef-49f9-ad33-84bc6fe114a0 afb5f9ad-bc9d-4ca8-8cda-acf53c0acd9c 329412bd-0b53-4722-9a3c-3ecfe11aa3b1 b5975c7e-4def-429c-b760-07e4133cb4f8 7b8a7ca0-9c48-4518-b05c-513370e6fd4c 47570c5e-db1f-4ce1-baad-d6a3826de3ff 92130e99-66cf-4292-9395-690e266bb24d ff57edaf-0add-46f0-af64-d41b1abfefed 7ae02491-875c-498e-8396-7cbb45f1eca9 f49b1f5f-c19f-495d-b96e-98456119c5f1 fff7776c-400a-454f-8eef-bfbed6d62531 10fbf5cd-dcf1-4718-91e7-9ab8c022c365 4873d8ec-95f7-4f4b-9b6b-7c3901409cbd 8f4d1575-19bc-4e31-aefd-ed2b31befbae cf6ec189-32cd-454e-bf1d-f2f5110be5c5 51edd4ea-d62c-4490-b9dc-fe3963d69930 f94d4f2a-e33e-40a2-81b3-457d7f528edb 247bd13a-f482-4ad4-8cda-9e97e0a2e521 b699b14a-7529-4e1a-b2c5-37188a86f982 25c5f4e3-a2b5-48da-854a-f901e846d098 f567f9af-9f27-438d-84af-be45e3f0430c 462e249a-18d4-491f-b12d-b2851acb7c1b 910b93f9-b024-48e9-912c-239c49a03cb4 9d06858f-1b19-4a46-be8a-4240f7106875 0fc40063-ab14-48f9-9536-71ab5b29ed91 8fc65427-1670-4b48-882e-10305bb4960c 4d32e8ee-e8d4-4735-96ad-16895e2c4200 e7f394d1-ce56-4222-9a5c-cc9da2266560 f591e0ec-ac35-4443-bb35-69db2081e7ba 4ca49739-119b-405e-9539-2247fa1f242a 46d01467-144d-4bde-a817-1ec722d94bdd 1bd37a8d-740e-438c-bd46-fef26641cc2b ef0ccf3d-3c9e-4d43-8f6d-76727ece4a9c 6c202c50-4ee6-440e-ab9f-9d9169b49c14 ee2a4954-3f16-4097-80c8-c13bfeb73672 723a301c-19d7-4a3a-afec-64a2a526f226 5083a1f8-d8fa-4873-acc5-98587fc8da54 49b4fd3f-73e2-4135-a353-537ef43c2ece 461a933b-379a-471f-be43-6ce575121837 ef984244-8604-410a-99ec-8cfd5812abb4 c9b22a10-e309-4d81-b3f9-78f910a66ec9 1780d099-b218-428c-944a-34dd034c7edb 7ea507e6-2303-41c0-b7d5-d8d33d0e58b5 c3094d35-308d-4132-8abf-4c18373c028e 7a95d291-16d4-4d7a-a5f4-b125af94aaf9 5bfd82c9-9d42-4ee6-b96b-e57b9abb52ea 274f7382-cca0-42ae-874d-b8f80de63f2a c8db801a-7afe-45e8-a0d0-74465e9a322a 03b3b42a-1a0d-4b6d-b4d3-804cd73d7707 adbad4c0-5b87-4cb3-bf73-819b2020a707 793e8e2c-5b4b-4a42-a2dd-84ad676d69f9 da1bc4d9-3a96-4d67-a2c3-42f8d922e184 25c0b874-3d14-423f-8191-9cf22a22a253 4f966605-40f2-471e-bff7-b36c317dc843 934f73aa-62c4-40fe-a89b-37bc079b43c6 436a78ed-8b96-4733-9519-6921f30bdfab 24b72f2c-1e03-4efa-bee3-185a8e8f06f1 4bcbf27b-3140-40b4-8c00-2ad54278eeec 110ab51c-7c0d-4d1c-a4f4-a3bef2a7e193 521c98bf-40e5-4302-92a8-5d2b5e3ff9f0 2f827285-1793-458c-9d4c-f8802d35609f 6a691eb6-57eb-4dbe-9182-27de55343015 1a75730e-88cd-4c9f-ab6e-690a75edd3dc d615345e-afba-4c0a-b86a-9433222dcb5e 396e09de-84e1-4b11-831c-d5272934eae9 7b623394-60fa-4170-baee-886fb809fbfc 0bfd3643-9a79-4af4-a530-82fb00a20264 17cf1f7e-9de8-4f32-96c9-9b27be38e040 a396c21d-aac1-46da-9517-b78bb16461ed 82e8b686-9575-413b-81a4-ed5ae3e17c67 d1a19db6-99da-4a84-848f-3fd6d29363c7 d7217c80-3562-40d7-a581-f6bd903a6e55 6b1a6671-f716-4c9c-b582-761a294bf958 80b496d6-0f0d-4062-9b84-e4a6fbfe4ff2 47dfd4a8-2a22-4feb-acff-37aee756b671 1c3f0b4d-d342-46d8-a094-256d938c0e19 7ea645ca-4395-491c-8eab-ae0ad308302c 9d26a6f4-1528-46ef-abfa-52bb5affd587 bbc84281-4521-42b9-9b56-89557548b5ee b36c7eb1-3834-48b7-8a18-3bdb6cd1bf7f 7223beec-8534-4283-9119-2028f85a19b6 7c943b70-b64e-4df0-a86a-3cffea239377 92ef7d45-d996-4141-828a-e7a901212b8c e20d9f87-ce95-4708-8070-751ce86eb180 5d6421d4-334e-482c-89b6-05ae69b40b5a 5d7635dd-c9c7-4b3f-a72f-b4e42fc3e5cd f9219398-07fe-49d4-babc-fcdcb6e70039 70e60d60-b924-4a36-92cb-940d517a43e3 391cbf36-f149-4420-bf1d-767b204ff934 8188c0f1-4a75-4669-88b6-512c622ed206 a80c54c1-367e-4cc2-ac85-f7730a11c46b 120af354-090e-4072-a427-49088bad4e02 4d40bbe9-0d4d-43c1-89af-738e0ae2aaf3 3347411b-a26d-4263-b5bc-6a0580253516 1561fecc-12dc-4f1d-a8fd-d50c845a797b 442eb0a4-9a59-48ac-9550-08450422b9d8 970916b4-1f44-4043-98d4-21d8a5609bd4 ee61a257-db07-44b6-bf30-5f9701c594c4 b834fd56-dc79-4df8-847c-8bf1a0cb3089 a9786799-2d07-45ce-a10e-9ac589f570fb 13f7fa7f-a034-40a1-b5ab-813ce9b7e366 6be09f24-72ae-4983-8077-44e553f1d0de c10026f5-0b56-4d9d-ac6e-bdddd39eea63 9e4cc8c0-09f0-48a2-a6c4-95137aa81d79 4656d9cf-e823-4200-87ef-1d3307bedb77 f9c9fc5b-764e-4f50-a502-d366ca5c2f4e c167b31a-9d31-45b9-8132-ed5c565d8808 97face62-2307-48d4-8885-0d243972fcf3 94074353-81ef-47f2-b165-c6ce170aad6d 3a59be91-ca2a-43ac-82d5-a2b496edc1a9 6f24d5a2-a414-4ae6-9015-62c7b26a762f 48b3913b-e6f2-47f4-84f1-120bf67d0a22 ef304da2-0ea4-46e6-a507-f67d5cdb4528 98af5a73-0774-4b6f-aa9a-caa8aa59dedf 43a40fa9-e67d-445b-b8cf-dea8ab99f131 8aee841a-059c-4e7b-9615-1c44908c48e4 e4097646-ddf8-4a5d-a766-ad765790bc0b a4ee223a-5151-4c59-8e3e-2983260808c3 cbe0d9bb-e767-46da-be9c-c842af4f889f f6238772-3de3-4be6-bfb0-0af6ad6c8eb8 46a84feb-9cf2-4cbe-94d9-3307df5fa4fb c1e874a6-38bd-4364-8c3f-645679e39e09 55276570-58f3-4db0-ba16-549a2b392f10 630d6f7a-4da7-4a58-bfc4-2867e35afccd 294ae1bb-7f8a-4dfa-bf1c-59d77e67d31d c4aa8d0d-4ceb-4ed7-8a61-663708a1670e 9b6ee3a1-b59f-4589-9181-c4b36e3efba6 c2fda413-58be-4868-a044-e1aa0c24a2d7 522a82b9-9e08-4f33-bc93-fbcd49a8c27c 0e3dd118-3b9c-41e5-9f12-a5366f069107 e09f9c9e-6e80-4adc-9648-eaf1626be953 169f1ce4-23a6-46af-970d-4cc0a2ad0990 8f21575c-8358-409f-a35a-8b66a0a272b7 6dbafac4-b2c7-47a6-9c4b-4782e54e6647 214cd3d1-ea8d-4534-9036-5803d1b7aaf1 6c5be81d-548d-4fc6-ad14-a5a51c07589d 6fdf59b8-259c-4e9b-a133-51ee420c1922 7e8149dc-d75a-48cd-8a06-ac586a05667b 1582839f-81c3-4e25-bab0-892e69329ee0 31ddf192-1ee9-4291-bb73-f53e3f7b7b38 b043ba1e-7bd8-4f9d-80b9-791339f07681 7671afab-adeb-4085-958d-ffb22b812246 fedc063f-f6fd-472d-85e7-3f4b07d19d60 96c6ceed-34c6-4c2d-b17a-ce82bca02010 bf08ace5-17df-42d9-a6e9-34a3ac1011f7 86520df7-a13e-469a-8ca0-1a4ef4c2bbf2 37f1d525-d3d8-4ee0-94c7-4fbee60e0e3d 41f2beb4-9553-4187-b2af-0d5b694fe4d7 6a9cef4e-3aa4-43a4-b6b2-d5972adfcfdd cf754dca-8b21-493d-84c3-a18f557df201 af50b590-6d32-4b0d-b057-7c6896b3f63c 0d007330-3662-4dc4-83f4-a18d1109de96 a92b16e6-cb0f-46ce-bb64-88b34d7d5bce 83dfd1a2-8662-4a0e-9cbc-44e9ae581383 d13b6b74-ed13-4032-a929-d2a5396f3799 d99578be-c549-49df-bd21-b43549be4ac3 5351d698-b18a-4b7d-822e-f9d4f6a33c9a 18022ddb-daaa-4d34-80b5-a6a3ea77e3b1 b84b2e61-0523-43d8-86f5-f8d8150ab002 40d701d9-9ce7-43d5-b159-ca28e0f0a766 aa65ce9c-528e-49d8-aeca-65eb14504aea ecb06f40-1737-4a03-b83a-39650056aff1 ec4d657b-08ea-4aac-8d98-5972201dccbd b02fe9fc-9367-4be2-8ed9-ce691f6f40f0 c8fd9e7d-3d7e-4886-b841-c66315dbb9a2 87e90038-c8d7-41fc-9f16-eea1734770f4 28cd5e0f-08b7-4d96-bbe0-3f5a34a543c1 a2380eda-4610-4de3-a61f-fb60e248cb78 d5f98f1f-9439-4663-b5f5-12cd874968be 5f0c835f-f40e-4269-94ad-2ed4eb74007d b48310db-fafd-4a4f-a6bb-2315ddc8cfea 4db70a9a-3687-41f8-a489-01b8d7844345 fedca54e-ee00-493b-abc7-7802c2a18f98 18245919-be1c-405e-8698-3b79c930f196 96aef87d-525c-4945-93a9-48fe55dae1d3 3074440a-fc3b-4fb8-8f18-e62f382ec264 8ce0a3a7-22b0-4b93-a568-270b0e8577a4 afd5f09f-7aae-4665-b4a8-2b3762ca78be c7a4276b-2caf-47d0-897f-85de09561c77 cf3db986-d107-4e37-8268-a0573df35ad8 98ad31c0-aefd-4a4b-9211-7d2ba6cdc1f7 fc4d502b-8bbb-4024-9ce8-de9d8a59a2e0 8ae48667-7091-4659-b569-8ce1f3a6cca6 495f40cb-11f2-4bce-811d-0568c20c1bc1 617302d2-4dfe-4454-954b-2c6f107b97ad f5f9d04b-a2b1-4893-8ea5-3da708a506b6 3616d6c9-4d5f-47c6-9cbd-637d62162161 6141a7de-c853-42bd-8f45-172cf73d9e6e 1d2bc0fc-6586-47a1-a8f1-9e6978dfb029 966fc4bb-f43f-4945-af33-3f51dc54b046 dd08b4de-2469-4dfa-a334-56b224c51e38 5a9b9d02-4512-4a6f-8415-f7def7273cbd 42caac3f-863e-4188-95b8-89c1b98419fb 01de1563-be02-404f-89c7-17898bdc7561 119b5bd6-d1ae-4eff-b74b-5d94edc5a2b2 0594395b-8d80-4366-b2f5-da0365eaf48a 5648e8bc-a355-4f6c-9f2d-24ec2d61b3fc e3bc0324-d543-4c62-bfc6-1a592fc0d4e2 aeb7ef6f-1e95-4a3a-a886-dca453982509 0d440019-ecb4-4199-8120-b7ee7fce646b db1b851c-cf71-4eb9-86db-8be7748f6ebb 64aa5377-b8fb-42a7-b62d-c10e3c3d1ffe afd01211-5186-4cb0-b890-55de2cf27efa 4997a7ca-9f53-48b4-a9a8-cb92471b6ac7 1fad5e88-c553-45da-9b10-1e35a5d6f742 f67090ce-3619-4bdc-ab27-ed3a8422d786 90d698dc-7b66-4be7-8a9d-02f420643dab 84427d84-f65d-4df0-857f-a62878dae42c 2b2f15b6-c61b-4444-812e-c8d9dfa075ff 29c375bf-2281-4e9e-bef4-5c65913ac9da 157ea3a4-930c-40a4-893b-2669638e80f2 e15144b3-c8aa-4422-aeab-64d536ddf36c c19696e2-160f-4dfb-a796-81bee3e0c191 cccf41f3-c3d4-4035-992c-f3d7b03cdbe6 d709d62d-8348-42cc-8a4b-8938ae2fab9e 26555f47-c658-455d-a31d-9b40d600fd38 1d46c195-90ed-47f6-926d-ac52c9868755 4f18da50-7c04-4aaa-b780-d6128333ba4e 7020a616-0d3c-4eef-b387-7e7cb80a4cf3 962999e3-825a-4e8c-b110-ca0e0a7eb9c2 ddfaa5ad-f608-45f8-83e2-8fbb443e12f0 08e90792-ea84-454d-bcfa-a92f6f590f30 1c631ff2-b4c3-45aa-9910-249e6b6f7f4b c38a8eba-23ae-47df-acd1-7451182d0d62 6c8d815e-ee63-4562-8e74-273e444de3e5 6ae543f9-bf20-4faf-a456-744b3f40ac13 aa90eb8f-e195-4f85-b63e-48566f471402 ba0bc3e7-a7c0-4896-9978-63e9de113c55 c099d52e-9a83-43f1-ad29-7181eea7c2b6 a0cabe37-945b-414e-b7bd-9beec4b30fe2 d86e53cd-48d2-434d-80e9-e48bfb63ccae 21507f20-3849-4e9b-bb06-3215c25c6ebe 4ba51bf6-ff45-4188-9055-075c356deb92 f421cb9d-8b57-457d-847c-b97ca36fe215 0ef6c804-45be-460e-8ae2-eae518cffb60 d6c4371f-55ef-4fc2-a1b5-13c509b1f906 e84646ec-9fc4-42d6-aa43-87dd79f8e0b7 1e6c30b2-f078-43b5-8121-927ef400d259 5b940619-7703-471b-acdc-52079bbe09cf b3317e8f-68c6-4954-b478-63464b49749d 14e8ad24-0a6b-4cac-a197-d23b91f6f1b9 a38c88be-94a0-4e25-8477-2b57df51ec17 399537d9-a652-4529-b9ee-43e2b7358ee8 f7b734b3-82c7-4842-9ae1-d15a39a29a9d 81337e71-09ff-4e10-9191-c3271791195d d801cd1d-5531-4722-ad35-35f8f484c160 4d8e4940-ecba-4a4d-967e-27260f598ab7 53d4e699-db6e-455e-8089-bbf2a90ac6b6 7b3c38a1-6685-4d7d-90ac-244e7dc04511 11e61946-00c3-4930-8ce4-cdd817c5b0bd 67074164-a90b-4078-aea1-777ba10e0046 7ce4620a-9c3c-4f9c-9f41-f01c95969205 44490087-8cce-4864-a4c1-dbb46c5ecaa2 e6e46106-fccf-4d6d-9579-228dd7167395 fa00937b-9faf-48fb-a097-c79f01eb348b 8e637434-6936-4d2f-92fd-fcf89e581a88 c89167f6-b9cc-41fb-9c94-4c2659e81ff9 5baefe87-91e7-4bd2-a331-1fd80d3d5053 cb299c9a-b711-44a2-81ea-aa8880a3716c b0dfabf1-afc7-4632-b62d-732c35d82b78 a59f9858-d229-43fe-b421-5f58e992ec63 8b4a9b8a-f9ab-4a92-9643-8c78a91f78ea 690265b0-a9ff-4ebe-9657-06524b49e941 4beb17db-77a0-4cdc-abb9-4a66a64cf155 43fb5eb9-3316-4895-b419-4f4479f88d19 14cd02bc-5758-4dfa-a78a-9081879b3a31 738a1db3-f004-4555-ba35-51ad506dc3be 5e596334-cdef-49cf-965f-26730bfe0590 1f1c93aa-ce3f-4a8d-9624-e5df0e7ba51f 9fb1d546-fa47-44ac-a9f9-f3339fef3ba9 9276cea1-37b6-41a4-9909-738723ce8adb a414fb40-4abd-4a69-a712-e91b21e70d6f 069ce0ab-e7b6-4ccd-9085-46ef643a2c62 2c57b110-afee-4712-8655-625ebfac07e0 794311a2-5352-443d-a6ed-5e8b8612d021 745b8b17-5ae9-4391-91fc-8f4c6554ea07 1ea92c27-1eb6-429d-92cf-6351d1534b40 dbb037ec-fcd5-41ae-ae14-b3dc99307746 6a6bb7fb-7019-41ea-8604-ec736ec145a3 571768f8-f79c-43e1-95c9-9026b77abb55 a1a759ad-d644-4f4a-b1dc-e4a96e21d967 1ea437b6-5502-4af0-a3b5-2a6c20c0d858 626d1ddc-25e0-495f-ab9c-e49c38ba4a41 e852d2e4-de6b-4f39-89bc-b5b31b4c5339 1597ef6d-4dbe-434e-b767-f213bd009150 368d9792-793a-4a90-a7d3-92995254d6b4 3944fa94-1f66-42ff-96b5-c5498f6f1ae8 0a7ad5cd-91d3-44db-870b-9851d87ec934 7fd8f9d7-6f4a-453d-b4ef-a1a2f4262857 e9dc6dc2-9e52-4656-b7ae-1f79c449912c 586163a6-7f52-4559-9fbb-f6298362f985 9bb51799-23f8-4f35-908f-692a61184282 4b862255-1efe-4e03-a655-3d0a13dbd338 1793ca98-eb78-4d20-a31e-44d1aaf9268f 225fad60-efe4-4878-8729-d51e84dc611f e837b000-bba5-4203-8a94-a3ae39df4781 d1d3e364-5401-4032-bca2-d9021b2ac91b e5e95436-3371-4eee-a733-b6dd8ae6b5d7 e3664f6b-4ddc-40d6-8c85-df0b85c7c813 b9a60809-9043-426d-9aba-2b96c442c1c8 a0c7e50e-219c-4dba-ad0e-3d9d4dc83133 b636a757-575d-4601-9079-a64f12a65121 2b68c31b-7d03-4520-acf9-839cc25b6f24 82ed4e83-aaa5-410e-ba05-fa64ae124db4 c3bf39a8-1fd3-4da2-923c-ecef2c2abe86 bea9a090-3c12-4e34-bf62-7f8968f153af 7310df75-6095-49b1-b580-9fbcca7f341e fbc2c558-e108-48e0-9ce9-3c9d383774b1 6d35ad4f-45a6-46ef-a20d-c29c53e3241a 41dc7712-22ca-46bd-b208-cca92df16081 b588b555-1b0c-4cd0-8701-71d3766c6cb0 a697a8ab-c93d-4175-a7d6-71ed102937bf 5be9ebaa-6282-4775-97f8-4e02fc969ee6 ea7b970a-0ed1-4bbd-a22c-54852c344740 a08dd25a-dd4d-4259-8648-d44df8b6e6eb aad8a6ff-68ae-4499-a5f2-bcfc09b98de3 0f2ae4b1-ee29-47dc-a680-bc491f5f33e7 cd6b059e-1578-4cf4-8931-5939d4504531 821a7e9c-baab-47cf-8e7a-13cc3828e166 c5111663-9220-45fc-b852-1cf1b0c1d13a abe67a18-1a23-41a5-b0e1-443cf61ad5c5 f9ee0f5a-ef8c-4c65-b602-73852a7f33c7 929ab2e8-674b-4246-9728-4ffc88063e4a ccdc9c2b-6d06-4333-8bc0-1b21628bd500 599218fc-ef93-4616-a0e0-d87b75a249a5 16c5c4ea-4ae2-4760-8259-c6a7d652a063 e5ce1433-ed0b-4bd8-904c-ac6517bd418e 0a74aa3e-df81-4365-8e41-2587aa748a32 bb2c683a-9709-4c2c-9e15-66e5048a9460 8949f1b3-bae2-4260-8ee0-397072c5abbf f4cdb2bf-7a93-481d-818f-f11eaee594df bb3bb614-8adb-479a-bc91-fd23b1d9c2df 60d16dd5-2596-4f95-bba9-bea6cd62f32a eec74df0-4916-4c48-84e4-497bf51f2d07 a1acf17f-3c48-4fdf-9043-f7249b46f8cd a19f077e-43ab-4721-92d2-183c40e96f0b ee6afe44-41cc-4fd0-bc3c-254c3a8a674e cc88778c-c089-40be-af2f-51301ea51209 5dc7302b-57f9-4a45-9b83-fefc0252b01a 4865cc2e-6c65-4c61-bf18-74b49c41f51a b255f4ef-3dfd-4208-b9a9-deac40653c74 914cefe2-8b68-4545-8895-2a2b117af864 933a3a95-2ea0-4f7f-8352-56dd99fbf234 5aedfeca-24af-4fe2-82e4-389de473e254 0636d8b9-e107-4a2e-be69-23d5febb2f31 a7982323-e314-4b7f-905d-817a7559a015 b0bdeeaf-1131-4d21-8e82-dec785a2dbf3 d926ac9c-4b2c-4622-a9b8-29b75e0999ff fcc5ef83-a588-4965-9c05-bf79e040c743 71ce7047-727c-4cae-af3b-1defb2885aa2 24578f66-c945-4a6a-bec2-471313d70133 15d1eb50-c4a4-4099-964c-ad3b4f7ab017 a6c28e91-9344-4843-9bfa-0bfe9c2913a5 34e37993-6dc9-4a12-bb52-d1e4dddfa71a 0f93018d-1952-42bd-96fb-4012a21470ef 25c47dde-3cd2-4c3e-8828-d55019472366 502fe96e-7507-4a00-8aac-96c5459c2b79 17d0853c-b689-4733-bc4c-6f857ff6cf3f 0b446276-a025-40dc-8120-e29551ab9c11 7c53ba0c-8cac-4e21-b8af-cb3b993ee3a8 0b4b8aa1-c108-4fa5-82d5-d91987dd02c2 8e8304c0-9d51-406e-aff7-a4c4025315af 97115fa9-0314-4584-8048-224c2145f21f c8564115-a859-4d7e-a23a-a85e93d6b704 872d8d52-8a6f-4cce-8ce8-30c27ea3229f 615a03e9-2418-461f-b515-8c0b2b0390cd cf928519-5942-4569-9003-2a2da2ce81c9 491747e5-9531-4d4d-b242-021974e6f270 a451897e-b2da-4a56-ad3f-011dd0e76784 376cc207-a931-438d-a89e-4aae80688f3c e39c2929-1d6b-4f2a-b66f-9d749d1b0e63 0ec25f0e-9cd7-4ee5-81ce-d646666a6356 80ce73a6-743c-4201-9578-e4da86131f19 2e2c1ffb-66fb-4290-a92f-61477908e2c7 5ea403ff-ce2f-48bc-9cba-5d57a45fff20 78c7fce3-5d8d-46bb-8251-c571db883230 2158a0fb-2447-42b1-8e34-03fc5298bf9a 98ac3231-6a32-46a7-baf4-621debbc062d a74943b3-b753-4840-9402-90e4bd8ff23b 0f33c70f-eee8-4727-b7a3-2e519e3248da 0b1eab50-eaa2-43f5-8d4c-99e58fd607a7 8af28133-18a9-4dd1-be9b-7c6820d18009 f9160101-a1e9-4a45-8918-f2050fa5322e 22679e70-8e67-494d-8f47-17e46dc4b0b8 db2b359f-e3e5-4a41-87d7-ace116b853d7 a94e44ea-2325-471c-8b5d-887632f4e932 f565f755-7617-478a-8e7a-ccfffc6bb7bc 88740389-512a-4108-b24e-cb6dba7e487c d96d8be0-d398-4ec0-b6e7-d75b504c91ed 84de8b3e-771e-45e2-9cdb-4ab087bf05e2 99616975-e4c6-475b-8b14-dd335fea4972 c5f19a03-ef44-4a93-9fb9-6f04cc85735e 69622ba7-1483-4a2d-8851-5de777d84540 b8c4140d-d84c-416b-a884-24c11afac4fb 49859729-7ef4-4c45-b7a2-a06bc7e43eaf 54f1bbeb-8949-434e-9eff-c578c21aa5da 0d9e99d0-537c-4a8a-9a65-d63c74288589 2581edc5-ae44-4be5-841b-af3923db7561 360d2b2c-1bb2-49d5-9e5b-e1bb6e93f57f 3ea8266d-67de-430e-b631-a4a2e0b730f6 fc27b860-fb51-412f-866b-dba6aec83706 4d964213-df58-4ba6-9cb9-dc837bd06d62 5c732ce8-b532-40d6-bf28-05456ecd5cd0 c0a69daf-52ba-4518-a514-b0f953f3ed31 d2014d13-b7de-4acd-a4f7-4f687c336260 2ad50be9-2c2a-417a-b926-b9e111020da2 e8a20ab0-e92a-4e13-bc73-6839958de5f7 0d54c9d2-a13d-4fc3-a053-693982322110 b5a4908f-6cea-43db-98a9-f66388af3bf5 825ff07b-d029-4706-8758-980ef19e43b0 296e3dbd-93ba-4c92-a934-5afe66514194 114e552c-51f9-452e-8849-116efa328c2f 6218df8f-7a43-4c30-98b3-a93dbe850efe a80797d0-22d3-4b00-813c-564a0e283e5b 84940389-11dd-4289-bcbd-7cecf6313d2a 54bff177-c543-40de-b256-d49a1a693272 7102e0cd-83ea-4a68-a6af-364cb2897ec4 be357379-1fdb-43c4-b471-312a4eec1cfd 349fc802-4ae1-46b8-8eab-8536ad626606 14b90895-c090-4c20-80cf-f74e48dadb4d 5e5fc66d-e294-4592-8b77-d9800d1dbb86 beec2c7e-08c2-4e8c-9291-1c71766ccfd3 7f918e7b-3bc0-4982-978f-4628656fafb6 a65cd5a4-f4a2-4c68-82be-2f54a5bd4371 31d74c62-e572-4c82-89c2-0efdf9614007 664f7228-da91-448b-b989-9e69a171598f 88d04549-4c04-4f25-b043-e1f377c52f6d b0f2893c-cf50-44c0-95cb-e3295556d267 5bfc9bb4-5b4f-4f9c-9fe3-4d51da8ead0f 0f55ebd9-b500-4433-b6c2-ddad43a519f6 08ed798b-b8f8-4de1-b3eb-ec3c064a604b ae8b61bc-cd4b-464b-a7c5-64603c9d2542 8c8c0172-3752-4378-bf8b-21b4148a6787 0e5597e1-ae25-4c5d-ad3a-3d21f8c6d962 67ff691d-2f08-4b4d-a8b3-713b3f8d7e28 917cf0c3-c990-4362-ae38-285927dc8b29 66b938fb-2326-48bb-bd51-005e396ff2ba be6749a7-6a75-40b8-bdbc-4d428fe0c52c 4a23ca24-2f0f-4f24-925e-947a845b5949 b11bcdde-33c4-4bd2-987a-1ab6541f034e f25e2adc-debd-476e-b6fd-869670c610a2 e5afaea9-3455-42fb-bf44-ca16cec78743 6a2a6922-b454-4317-a23c-280c6fe0f725 45bcd174-f9b4-4ce3-b882-0d825fd9dd24 a9dd6739-86d1-4199-b4cb-b16d3c964805 77bbd106-a4a7-4e0e-9dec-6d5f7d760451 a3582f02-fc3a-4dd0-9867-c01aa6f4dd4b 309c4cba-133f-4e81-9ce9-6c6ce056006b 2672a4d1-ee7d-44f5-810f-01811f9cf59f 3b8f1695-7036-4eba-8ab2-f0da9d84ff14 69405ca1-409e-4aa1-9d32-ed3d15902a42 e54f0056-c581-472d-8a8b-1f956eb019a4 466ef97f-154a-43da-9b88-ef9355bfcbad 450752c2-5d7c-43c9-8dff-892e42bf5a13 e8ebb6c6-563f-45ac-a28f-f00f323b6832 c0720cd6-f36b-4fbe-8934-866f7750c9c2 e78d77c0-478b-44c9-a98c-bb65e93d5a50 70211e50-cfdd-492a-ba8e-58527ca45271 72b49c69-6817-41f8-90bf-f94af33f8ab8 f89c99e0-5a01-410b-84f6-33438f235111 e67e6e79-804b-4f9c-bd88-b92f7ccce96c 140341cf-4f55-41ed-92ac-710819aa8965 c27f5ec6-c711-4ee1-aebe-e5543376639b f44d5513-5f8e-497a-aa94-1217fab5ccdd f5fca8f7-44f0-4b90-8b78-8597cf0af02e ad11d67e-2699-4c4d-9b55-23cf94a1d8d0 dbad2425-7fd8-4dbd-8ab4-0d49429f82f5 1ec3d54e-50c5-491e-89c3-9773d8574649 1d6843db-7642-4f91-9a15-c76113e9694c 3aa7e9fd-9cee-45be-92f0-a8e65a8027b5 fdb96422-db7c-4a69-be63-50a8b4dccd6b fdc7f6c9-c085-4cd1-90aa-271c91555122 2cd38cd9-5ada-4b42-bb3d-37d833eb1c7e 7b031592-393f-4ca1-9b00-f60c59631000 ed56c19a-a2ea-487d-ac69-2bb7089367fd 8112ab05-3642-4961-97ae-16c52a5f0671 c1a25309-896d-4a2c-a025-86844a3b08ad dd67b230-778e-4f4b-afb2-a3c45efc5ff5 b0518a72-3cf2-499b-8acb-0eaa5b9fd164 019d0838-8cfd-482e-86ba-c1beddc0f41e e5d1dde5-fabd-477c-996e-b1b2d318d6b8 25dea5ad-dd20-4959-88f8-e40e3a19f14c 8cec54ae-1ba6-4fef-9301-fd3b661eea15 a846412a-4c76-4229-85a0-1c4201a0709c fd534eb6-1ce6-4af3-9a5e-ecf28bdbab12 81f92060-6606-4cc9-8a03-4df91a2cd5d9 c28fa154-7f1a-4241-afa0-b33e3a9e6800 4e8205bd-78bc-44be-b0d3-fa9e9a1ecff5 d0f884ef-b3bc-430d-a9a8-ef2c238739ac a302bc93-49b1-46e6-9e1f-927b81d3dfb2 842a216b-726e-41c7-8dc0-fca77ec18a22 7b91d963-08db-46ec-a69a-b2c22b88ba9f 06e3488a-b9fa-480c-a519-49f781636f0f 9c69eb37-cfec-4c5d-ba8c-08d63ce15915 fa7ad995-0d29-4ac0-9ded-6812800170f4 c088a0d8-d551-4e3f-97f2-8834b1d08ccd f800abec-a7b1-4a79-9c75-57982559ef42 38e326ab-596b-4f68-a229-530339e73393 4be200e4-ccc4-4d84-8056-b8f46cda15fb e055fff5-7401-4a44-b5b6-53716e92d1a6 9e2a598e-717d-41ba-8ea4-e10999c1a06a b254b746-2116-4e88-bdcb-2a12edbdffbf c6555568-bc7a-4c23-a932-f37e076cbdae 8a59514b-a930-4409-826a-593e9a804f3a b9b96fb3-7724-46b0-83ea-9885727b6be1 0b4fb064-6219-4c65-a105-fa16d3fa58bd 3f3baf96-7242-455d-a5ea-663c02e249c4 4e4c3e28-9825-4a80-8293-9c286ad4f516 cdb7442d-5a60-45d4-b2ba-019a74457bd2 663c9df7-74bb-493c-869c-0233728a089f 1a004cd7-b15a-4501-a951-5b872f3846a6 db560153-f914-4765-97dc-183f0b30bca6 a662274e-fe71-4e16-8838-fad3784c17c4 2e077793-edd4-4262-9192-bd5d8cd13157 cb1b48a8-af61-4c40-bcea-dd9a79c59403 6c62ef63-551b-4b17-ba19-99a8f2cd33e4 0d0c3740-ed5d-45a1-906f-6d1a60b3bb66 f6c1a77c-9332-4971-8f93-6ecf9d5d1792 f3a0052b-ef94-4ed0-8e96-ab1533a98ec4 62e8426f-7806-4ef4-8653-3be13347090d c74f9e81-ba5e-467b-862f-a9be0815b7a6 bdb44e7e-b2e0-44cd-ac9e-47fafd464387 6cb1da23-74f2-4611-aedb-1f0e24daa454 52f80979-5cfa-4fbc-9c52-ad6b5edf9b65 018a832c-888c-4b82-a5eb-21ef99bda9bd d2d56494-48aa-48b1-960d-b6632ca0be81 1ae0caf6-776c-4cfa-8122-6b78cdf906aa 0f907491-1887-4833-b079-649783945880 1d7dd32c-992a-46b2-8e5c-f5895c7ce05b 764b1ea9-da69-4b15-ad5d-de29ef64e814 866cba02-f428-494c-94cf-47d580f0e482 39d13425-537a-4027-9d9d-904fdb8df58a d6012a0f-1cdd-410e-83b0-21dfd5af5fa9 4ac37a90-adf6-4ccf-aec7-da784233e05e 685aca12-b29f-484b-9c72-26b402a29ad6 ba3c6845-e944-42db-950b-4fbba0d9d9c3 55f902f8-7436-464e-839b-cf7b8e06b9d8 75a27aa4-db3c-4995-9769-0ad05b4f1bc9 49541f99-f26f-47fc-88be-5cd79bc3da31 7e18c963-406a-454e-b22a-5238c1540c9c 6e20ab3d-1405-44b0-bb8a-ef079958b911 9932451a-9433-4e41-a327-a14b12f5e57f 57a26d0a-c479-4295-b10d-6b35c36c9093 1327697f-d17f-42bf-a95c-7406ba75ff01 402f058d-ef69-47a8-8eb8-29fe22f8dd62 41ab1b62-d99b-4736-a20f-9306ff9f38a6 73b3afc9-a08d-4241-9362-20374d7dd39e 676c637e-7985-4dd6-9b0e-df16b91c3cb9 2af80387-51d6-42ac-8800-b6d3bb903c18 81766773-2654-4109-99c0-0dc9e597a555 dbf1ba68-90e8-4404-b717-833db53eaa5e 1b379ef9-aa39-44ba-9f3f-38c2136e4f64 cc00bb9e-fe2a-47f4-825b-a4dfe1865b4a fb793ce2-3dc3-401f-81c6-d997cc4d07aa 019345ee-5b44-42bf-b802-1d92b9ff5025 94d14013-baae-41e8-87b1-d63aa133a0cb c752b1d9-dfe9-4e57-afd6-34c0e8c5396f 7f587629-33a8-434c-b485-32dae78dc089 fbacf50d-68c6-457d-a5a0-055fbe5ff4f5 2663591c-da1a-4100-9796-7fd75c61a8a6 312ff1c2-3b96-498a-b4f3-6e0322fc8ec3 111ee7b1-5bb1-4215-aa8e-fec430fbc8b0 399528f4-e31f-4ee0-98df-3fab4d865564 9f5de52f-2c63-41b5-a671-a6d20415ec9d 7f9d58d8-afb8-425c-8cb0-7e96d86c1280 b7b77844-1a9d-4418-9b08-4b9b73881375 733f89f3-f033-4ba2-a0ba-97f7916986af 3723d7df-f11a-43df-aa56-844e5266e9c3 9dbbebba-2f78-442c-aa3b-1e20507b9c10 d425ee45-30b0-4710-a050-436e8fc1cb4d c19f7e92-0d0d-4c05-be35-92dd6b69f820 a7a8fee6-0765-4215-842b-667ca98f1b2b 4d2b01f3-8b00-4380-8e98-d7041332fd3f ad242056-8d8a-4d23-aab0-a8a53dd05e92 db7185d9-8374-48c5-acbc-e4ceb6bc415b 74a38dd0-b4b8-4993-adee-b8a605d3ebdf 3caa40da-b3fe-4b08-a04b-e4656ebc8e69 060ea6f5-e201-4164-99af-2b5a4bfe2cdf 90ccc0ae-4949-4321-a3fd-9812a085c6c6 b49d81de-b1ad-4697-a7f0-c706607b54f6 da595103-6f03-4138-a208-73439108579e 437ce420-f494-4bb4-ad17-84cb16301f07 61c88ef5-2fc7-4bce-ad83-a4f66a366dc8 bf3df30b-986e-4527-97b2-7916cf549ae0 d21d75dc-41e4-4eaa-83d9-0c16a3cbc39e 954da3e7-a71f-4df0-9c8a-d638dc1a505d 2206e9ef-ab2d-492d-835f-53301575cadd 00831895-aebb-4930-9921-36726d6ff9d9 adcbf6dd-8961-4e9b-8690-026ee07f000c f2db425f-8a30-4548-b08e-fda610d8b45f 73948d91-2b21-4462-bf08-f10a1e4c0233 ad1ebb56-fa21-4a84-a628-066fd01cfdf4 cf2a55bc-bc5f-4ba5-ada2-08e069be3995 3308ee19-6fee-472f-9bda-e9a23f884301 5302cac2-9ac6-456e-8e1b-25933d2de806 2d8e784b-9a1b-440a-9cfe-01b05fc771c0 511fa203-b999-48aa-98cb-5d3bc8b26a45 add249ac-5983-4d6b-95dc-e996f2dbaee5 ba9bd4a0-e87c-4a21-abe9-309dbb507539 bbdeb98e-2a5b-49ef-96ca-3e204730af9e 5305b7d3-eab6-4a52-831f-61fd328bdf25 60f076a3-b6f5-4c71-937e-b98c67602d9a d2a45729-9c82-4c1f-bd2a-bd1a782ec32e d0b2184e-41be-4b63-ba04-89d5391d5b5e e0f40079-d479-46a9-9921-d894387687eb 869d7e98-0bcd-42fb-8f6a-9b7552cb0075 26532a9d-3087-4842-afe0-25071982c842 9fdf822a-0173-4097-9b83-b757f1b83705 a1a7daa3-7e44-42e1-9b59-b575cefdaff4 9ad7f3b1-e782-4788-9304-1ffa0b4dbffb 9bee9926-2f38-4d60-93ee-0bd984d68bc6 544661af-42f1-43cd-a63d-c02b01f40df3 eee8e24e-dbf6-4be4-abf3-98e6a86e5e52 615c9189-3034-4cff-84c2-bf07544679d8 88232abe-46cc-4d98-b977-ac6e94cfff75 9d292649-5e76-4b53-ba75-e104a745f0df 347b1763-a7a8-4ecf-8d4f-d29799ca6545 46741c06-91be-4d78-9474-e72636c438df 74b1847b-a00a-496d-8c12-ac7a4d2f62df 16eeb3e2-1dea-4fcc-bf58-71775e71cdf6 7ee4eedd-2199-4296-b350-ce0f872b1073 cddcbd54-61bc-4a4b-a013-3a6eb9618458 569fed06-2f44-4c25-aa43-0b3e7a39987a e8100752-fe02-45b4-acbf-dac222d504a5 6e6945fc-710d-48f4-8592-2ef0d1d4e9b0 670e6acd-cabc-487f-bb68-5def0f32c9a8 87ad9bc3-2587-4ad8-a23e-53669ffa00b8 3c1ae813-44b5-4237-bab9-8bd147a72060 910cce3f-1518-433c-83ad-dbc0cec760bb 3b63b469-e191-4ae5-ada0-2c5a248bd1fc dcc406dd-05cb-432c-aee9-db22aeb3ea6b 3edf7da7-ae28-4dc3-bb8c-c387df1a2ae4 44b843b7-fab4-451f-98e7-b3ad59b8ee9c a47b59f2-5494-4050-b836-1cc10987d36a cd63db00-de0c-4119-92b2-8450ebf023ea b06049bd-8bd7-410d-bd8e-875dcf5441ee 7ed34f84-b6ac-4a34-9288-90cee3b9f54d 5d0335f1-2033-4324-966d-88cbd636ce98 5bde148c-adec-4892-91bf-b80d7b1c8454 aec5dc78-38c5-4300-bae2-7c4ef5c95f79 e24c26e1-035c-4f18-9ad2-610890d2c381 fc8ed772-f1fc-48da-b02f-2d633bb08a44 0334eb49-7dc1-4739-aa96-1cba8827be89 33a9a8f6-44a6-48c6-ac6b-7a2a3d176e7c 550cd1c8-6601-44e9-9f23-283f6bf564f3 843c08f3-ddea-468f-a28e-3bcd610e9acb b7b24cd5-5380-4fa2-b787-0848b4288d86 86e04c6e-0038-4e57-b963-bc46b2083e74 5a18834d-c2c5-4dfc-bd0e-db3618adeb15 431b3850-8d7f-402d-92d4-e2b182429f49 5129b366-210d-4636-8285-b9b3c5d17abd b20458aa-7972-441a-9a57-f6d3f9c915d5 d2c36e19-f471-418c-bc25-5881eac846ef 7537a82e-7007-4574-8c53-2bdc1e4cd2e5 650f2b07-2847-4788-bd15-d8f62ec03e00 16202fed-2c05-46f3-8281-e2a25c627c83 750eee9b-25e3-43fc-a92a-64402ecbc865 3d2c8386-c83e-46cc-961d-df745278fb0e 016ff90b-5982-4282-a334-1a9d0943a871 eb9ef139-3f17-4fc4-ad69-4781f08e13a0 a9a915c5-5953-4604-88ba-5e466c384eea 12d3a4c8-f429-497b-b184-22046eba42f1 0677c653-637c-414c-9852-b1deb03e8e3e dbd2eaeb-bee0-48c8-b8dd-cf31a375f25b 2f9af107-2872-4c2a-a190-149ddc0ae611 d82d2482-e08f-4574-9626-3aa6207c35a4 bc7832e3-e621-44d8-aedb-9bab20d7d0cd 1dd99158-af9b-462a-a972-d94e9c0fbf4f 2731260d-eba1-4c39-bc4b-a6e69c5c8c67 1d26a03a-b774-49c8-8e70-c9b4ba749201 1c8b0af3-2125-4020-8ebc-0c9050d6a1a2 4f679da6-ca71-448d-823b-99f0859c5108 7475120f-522e-44d9-8002-a676457b3430 e3e93ce8-b752-4183-ac2f-23f388b22d39 804f8fd9-65c1-464d-8175-f9b15b79520e 1bd3554f-6b09-4164-8367-6e7b63a4c17f 0ec1b573-ad41-4b53-adfe-a396cb585fe5 741bd86f-8720-485c-89a9-6445ff998ce2 d7426226-0adb-43af-9998-9fd332ada425 a0333d7e-52bb-4ccb-aaa8-eec6621a90ca 970fb919-d9f9-4dfe-a9ab-df722844bdf8 5868413f-3db9-49da-a9a0-e5e238b24362 6454c7a8-df80-4ace-9be9-941eaee85ef7 9bea918f-421a-4b4c-b587-cf633da03721 c75a2e38-0a20-4663-abc2-daa1620159ad d1f11973-9666-4f80-9b09-5f297d341bfc 1d89d981-ca1c-4384-8030-56d93c3a0ec2 0ce97fbe-f63b-48c7-b4d0-59da5baeccf0 dfe72489-8083-4fb8-b797-8abc5104ed73 13cd83f9-58d4-4396-88dc-362afc05a71b c13c1d1e-fd47-4aee-b2d2-c191e7685147 25faaf00-7d70-4d37-98d4-2ba529ccfd99 db364bbd-7664-424b-83e5-6696e4881e36 867a4d27-cdde-4696-943d-f10a5078f8f5 e4005209-20bb-4457-b11b-73057a05be9f 741a28d5-87c6-45dd-8618-6947970592f8 f6c684a9-4f74-4433-8714-0cb65931eabc 6b475cf1-3350-4852-89b6-db1c3869a5b2 dafea6ec-8168-4401-a700-a575532fa07a 95730595-d28c-47b7-a4fb-b8904a41084d 907365b6-2bff-4f89-92aa-c9d25755082f 9ce78057-e636-4667-816c-f4dcac18a508 e26151e2-ffbf-4503-82c2-950ec18cc300 c30be729-08a4-47a9-aba9-314319c13250 0946fc13-67bd-42c8-b2a8-f1c0682e7f06 6fb7e84f-8a60-4b10-9cd7-f090b94d5675 d183fc68-6f37-4a0b-9822-0ca44e56c472 6d8394ec-b9f7-4c01-9659-5c4eed0efbce 1b79795b-3569-4a96-97eb-38c598c198ab 0a3bbeec-0556-4aaa-aeaa-e5dd677d8ae9 4015f108-3926-4004-b222-f051c269a9f4 174b051c-be3c-4c92-a224-5a06565266a8 ffb1f1bf-963c-42d6-b268-b3e01bbce1ee 222f673c-fc28-44cf-b9df-47e084adc7c3 61354082-f715-427f-8be9-ccbca4447880 189f8847-0946-4f0c-8b0d-0505a9c95d98 ed57c7aa-160c-468a-817c-8b29c99c519c fff12cf0-03e9-41df-8ae1-9eb9a0ca2013 6f478171-2560-4250-8129-8dc84eabfcea 50672ef4-22d2-41ca-b187-02883b391793 77374616-b181-49f2-86af-0ecde18da418 cd9e5720-1602-4dbd-8222-129eb4d35866 67787169-8436-4919-b35e-a0b2c438bf63 b680ff63-4b45-4f4b-b4d1-864bc1b501ca 027457e1-9970-40e6-83ad-000892dfb097 dee6c714-9a55-4aac-995d-e0f25b6fe01b f34056c3-c820-40bb-8336-4c86edf5593f d3fcc2ce-a497-4d43-a563-bf59c340af4b c2976554-e5a0-4758-8bb3-574165031d5a 7308896a-ac28-4edd-b1fe-e446dea69271 d7a46e56-51e3-4ce5-b282-d9fd980ba708 a241a6e3-b28d-4733-aeff-250e2436d220 a1a7ba02-aac6-4cd8-868f-afb0cb9f99a6 1d9cb9fa-c8da-49ac-a927-a3fc4ec5dbb8 3f6b27b0-c55a-4694-a221-c77e8a63903a 7ae5a2f7-2160-4c83-81ec-05a1be8f23e6 67ec42cf-15cb-4ab8-a728-79237136e01d f43ea2dd-ec05-4f72-9dad-4dfdf11c570e 5af16ba2-761c-4ba9-a9a5-8d9d882d46aa 016026e6-30c5-4bb2-930c-9ccbdd450f3d 672c287e-085a-4939-81d2-795b4f35e710 40f2050e-60f5-429a-9c00-00ed0779a4cf 5db1f051-d5fe-4b5c-856a-1756fdb73e3c 92c3a572-b9e8-496c-8a9c-697755838df6 b737d995-3f2b-42a1-bb70-9460fc2f1f63 693a8ce7-b597-4a66-942d-f20096fbe2e4 8eab6eca-4f2a-4f32-87f5-96fe720c1416 d0416c93-5a63-4ca9-a6f9-b07ee16a6222 b2141d61-fbaa-48b8-9e6f-052fd95972f7 b9b50767-ac51-467d-87dc-f5234cc2685d 9acf37aa-fbe3-409a-98e1-235716129e31 6a05e758-2351-49a3-9155-19b692ebc6b9 c8e34eb5-4d1d-4a35-a1fc-3d3f7ae962c8 a163eb15-3c48-4c37-b054-cbbe71556bdb 666da7f0-2cc9-4331-931b-78c7eb58944b fd933093-8827-4ab3-b339-b362ebb9a821 51b92566-0752-438b-a2a7-4fc24a08012f b57c31fe-6d7c-4350-b180-0d66d9fabaac 649d98bc-71b0-407d-90a2-9ca3df589baf 98af9556-0cc3-4414-835d-4d2e76aaf0e9 819b42ea-fbbb-40eb-8dea-66ab43fe0277 b203fb89-dcbe-435b-9de9-603a8867d149 5c4dcfca-c585-42b5-81cb-5db04046d78f 4e5e81f7-0098-4f0c-ae6d-f00aa00b5b91 6de33d53-4a9d-49ca-8f9f-0398ef6003c1 707c2160-a902-4983-b165-0fe376d4ac87 298cdf82-3bf3-445f-93cc-1b902971540c 6088f768-7ed2-4241-a22d-873e6b18bb0a 6f243e8b-ae18-4d91-874b-3c84197bc0c5 cf46dc2c-69aa-4c60-a68c-f27920cd827b e57dd3fd-8510-402f-bb5c-d95ad55ea5db 20456bd1-833b-4165-a3e1-c2a6e39a36f2 63c9a35c-a34d-4602-ba58-c1a4b8628a6a 42543106-ffe9-402e-b1b6-8e1ae64ce4c9 3791b891-f7ff-4e94-91ad-36fabd0f5f2c edef30cf-792d-463f-a7e1-b01c5894ecc4 84027002-39e5-49f7-8125-08c027b7af3c 04bf37f3-caee-417d-9406-d14dc1e6ea22 a2b38c11-9c03-4b2e-bc00-4aa86942851a 7b7d7603-4361-4d50-aaef-82537ab05b43 46489d25-9e6e-4472-9767-232dea733a1c f58bbefd-81fc-43a8-b05a-20119557f9e6 413055de-d6bd-4ebc-b7b3-8f75718c52d7 83a94a62-b545-44cc-929c-25a4205f3ed0 39496112-4dc5-47b1-9e22-09116164b0fb 6d17e808-f9bb-401b-aec3-251213f24e3c 325a7541-0ca4-4f82-a170-bec7a5e5b635 f3ee1d0e-fc56-4756-a143-dcfdfd2ec0cc fee34868-d8d4-4f6f-8809-de6b13e1e1e5 f835357c-e844-44c9-946f-b626eab7a284 d52d7625-63ac-49b3-9716-1bc0ff1d2d32 d19519c1-7531-4404-8bae-9eca61aa3fe7 da3980c7-7334-4d82-877d-6e60da9ee904 51f075f8-80ea-49c0-b1e9-eb5a6a291fe4 376ff011-0432-4f32-a22c-2deb2a1ac999 804f0078-7a4a-456d-970f-63f00ad6a338 d584da4f-6155-49af-9b08-853c9dcca57f d335e309-b957-4ad9-bf9c-55ea0c517cf2 3c77580f-2ed6-4f72-9689-7c46bbf3c99a 15b46ebd-283f-4582-abd3-6f930b446e6f 7e60af31-b15a-405e-8c00-78154525ba11 07ec60e2-c046-4b99-a3b0-8eabbd7862e6 68a51f47-e3ea-492d-b93f-bc1e8ee9d359 20bbc0f5-9115-4dca-a5d4-0adb9116ea02 f6fa82c0-b6df-45c0-8e9a-14cba6317a2d 0bf8a0c9-c8f6-4235-bc2f-f893bb8504ce 5bdbef4b-8d5c-4132-9cb2-9f33de0b2ee3 e39531b0-b697-4d1e-a58d-58578db258f3 12ed2a13-8ec2-462d-8e3e-3dcf794cae6f df051d7f-5411-4065-93c9-02437f7250f4 31f14867-9f0d-4ef2-a7ef-457c515877e2 1ac76bc4-9ce8-4df4-b6fa-cd9fcbeffcb5 ee2b5e3d-0901-4911-a124-92f6233ef4e8 c88bae9c-32c8-4869-8d3b-9ea57d621c8b 12993d33-7e69-493e-b930-e1680ddcbee3 af2fda49-605b-4fc3-9b8d-7374ba860bea 3966a97c-e12a-49e8-be8c-df84c3c5a12a d4b2dc55-5718-4429-8735-9b2739ac71a1 3fc5959d-bb89-4b2d-854b-48462555f89f 24eab57c-dab3-412c-be7f-3768b7569c74 aadee826-9d2f-459b-bb1e-913bbda37974 53474009-80e4-42be-b73b-a8d0fbd9fbfb 471b1a35-2ca8-4285-b52c-2ce3b32065a9 fb59b49d-5463-470f-89c2-16ae235812b9 8be1bc64-64d1-46c7-a48b-f6b64924c0a3 2bfc0b17-b342-496d-9291-6373f401b025 b0b780ea-6298-4608-902a-2cc376970110 f6a88b0f-0e81-47bf-9430-c2d490f34ca0 5710969a-8ee9-4cab-8583-7ec748e1b63c 84870efc-a70a-4607-aa77-e689f85bf2f6 3266f769-64e3-4467-a6a6-b7c9786a978e a3621a27-7737-4f13-b80e-6e51fc4d3867 b75320a9-dee6-4e43-b383-58bd148c62ab d83c02c4-3095-467c-b62c-77816d3e06f0 65efc8ce-ad40-4a76-bdf8-1c6164ca7f32 07b9097e-aa77-4c72-b1d1-a007d100d8e4 1591ee6c-313a-4c5a-98d2-7fe16f072aaf e2593180-16b7-4704-bd58-02947ee49ba3 86f76d43-5951-4391-bb21-9e1dec70a728 297e82eb-a921-4386-b063-252554daccdb c4543eed-fd1d-4634-87c5-cce7a6db8fff 0c30c54b-3789-4bcd-bcc5-c4ae61eee646 6cf782ed-8f7f-4de1-8d98-b3cbe0366cbe 40ddc891-c7b4-49d8-89bb-7034dc9a1da5 b411893f-d04e-405b-8e9a-49d90685d5a2 c13c5977-4b43-4af6-bcfe-4cec0498789a 27ca3f1a-9f87-45cc-9083-4299487cadac a3974565-0f81-40d4-9680-77b1865bd795 a009eca3-4ece-4528-9e8c-0f9dc75b73dc a7f1e3a3-d405-4b85-ac01-766e791db567 a7a36b08-eb92-4811-8d7d-01462a847460 4ceb2877-8e0e-4cae-a161-b85197fe0f9d bc828ccb-097b-41fd-b427-fd17baa88c63 e46fcb35-0732-4b4d-9f60-60e680c9d81a a2ed286c-c90c-45da-b8ca-a659efe2bd83 94f42150-e1d4-4da1-bb9d-8f7ae12fc28d 72e957e0-b417-4c0d-943c-8f6f0234558d aa9fbdb5-a270-4018-be7c-4025bea1ba7f e83471b7-a104-4ff4-b063-2124da6a57ad 31c34121-e8f5-4d69-8222-38a838577150 1ccefb41-dbb7-47c4-b451-e77b66118a40 7490034d-394a-4dc1-8502-9c6e1a6e5995 5868119e-c085-4360-82b7-6bd95827c7ce 90034fed-a766-4576-8baf-7408ddde4ad1 8be0e0ae-a988-4ced-9f11-22d423658cd1 a8533c8c-1955-44a9-9e2c-1b7b2dd440e2 5f6102b4-0be8-4060-9657-9a973d5f2a3e b3d7996d-addc-4c68-b650-24f159a74a80 c9a6d767-0aa1-4412-bf74-f4cc1b4dae24 4bf94572-643f-4e7b-867f-1d6a775bbec3 d490f2ed-d501-411e-a890-7b9d361bc140 d962c78b-cfd9-4591-968a-c39a0ceff19d 021f894c-39f6-4ef9-aa95-5e856b662220 790e1723-a776-4a67-84b8-75ab39d4e097 7242bb66-3d5c-4281-9ad9-077de7292d0e c6eadcd1-eac3-411c-a945-8e9150afd423 76eb3adc-2156-47ca-9468-50fce4c7f644 da3c58db-fecc-42f9-b871-a5a211eced90 2293d8e8-119d-4768-ad9b-8e61897fbf05 e2bdc7ef-2a7c-48bd-ba20-10ed0c11567f 13566ded-6296-47fa-b4f6-e4ecab8ff112 0c7ea56d-0ad5-4e95-834a-e403a1edc8b0 1444e5e9-e837-4ee2-a445-1d0bdc984e2a 6fb73d04-26c4-4c16-9e79-1141fd943fe7 d025d7cb-9e11-457d-93c2-3f459d10c97e 45971bec-1b8f-48f8-b66e-75c664dc9ab8 cff57999-63d7-46ec-b0f3-75905e7a9a56 140f69d1-b8c5-4d4b-8180-3b9ac0e6ee54 73ff166e-82e6-4b24-9260-16844cbe6852 68097886-284e-4062-a6ad-ee9c307c576f 00a2e66e-7de3-4bef-a512-b8b99a86b1f9 0c20a9eb-aa61-493b-b36b-ca981c9f52a0 7a29c2f8-9c17-4339-ac8b-0672612c485e bb6f56f8-3e8c-4921-a81d-4d02fa240485 fd9f1b6a-62fe-4e67-8e8f-220b6e9a60f3 39ca123b-0bf8-466c-98ec-367bfa500067 99386eae-d2b3-468a-9108-95683d6cd13f 28224e52-8b5e-4141-8f6b-8ec028c7b606 5fdb99c6-29c5-46ad-9446-d2ed7e613eba f9b38503-98e5-44dc-89ea-0ec780a6ad92 7f4288b5-a985-4315-9e88-45f6e03a1be5 383d3665-e4df-4b1a-a2bb-c30c08667ff7 54ee7fce-b8c7-4b6c-ac1a-e04a40b79246 a6c22229-fbac-41a4-8a2a-f44b5f3bec0b b2fba172-22ea-4b05-995d-74df788f88f8 aa678dff-d042-4ec2-8a9f-a8eef3e94873 374a6ed5-d308-45d4-972b-86fb05aee9c6 ecc4c67f-2ccf-4a57-a6d6-eb739bec5b3c 61c67976-a36f-4b4f-867f-f180e1a1d6f4 b6f93451-8c66-4ec0-9fb7-27ae37f414de 283eac84-223e-4874-81aa-8dbcf4bff3d8 a45192a5-8e6d-4033-a892-f38f8297d025 2a2ecff6-b031-46c8-8240-bddc4eacdec4 ac4c02a8-9be2-4b55-ba29-3724264ba084 e4057976-9c6e-4dbb-886a-cad5d2fd8cf2 30248f2e-17c8-4466-a203-ab1173ae28c8 aa56b618-1539-4333-aa9a-7c830e713ad4 dea19a65-fc2a-4e20-99a0-91865888e76a 498dcea0-002c-4192-ab47-ad8acc9632d4 4c068abb-155a-4970-a78d-cbd2c4b9294e ce7d8350-9295-404a-b447-42d4e4822fec 67048315-1f3e-4e16-bf40-8dd95ae79c03 5604fe35-412b-4133-aaef-27e437f85e33 e48e5b45-1f31-4184-b3f4-973ff6d74afe 24b2bd8a-78f2-4cc5-81ba-22f2e0bc012b 27a0dd1b-d5c6-4dd7-8546-e202ed7a0677 5cdce906-1dca-4600-b2cc-5b3a1e603973 75e3e885-8ece-41b1-bfdf-b050dd0bcd8d d78843f0-033f-47b5-8c74-9a33ae39863f afe188af-d648-4417-a597-675e74b4fcb9 7a455baf-a61d-4ea3-876a-5c64e4293fdc fcc47f57-48d7-453e-a2f0-f84fd5e47c74 fdbd3e96-5dcc-4823-985f-fb548b882e21 c6215e63-edd6-4565-8e3c-05388afa2058 528f1879-6481-4f18-954e-c051462c6570 5a9a3e35-1fe4-420c-a5c7-530f687fe245 bb87f5a3-c94f-4235-90c3-b1941f3511da bcfbc635-4a8b-439c-9ff5-1e2481d74acc 50a29026-59f6-411d-b14f-36a42462152a 7622dbd5-10b5-46ba-8f3f-2092b5dd3796 c31f0ffe-af9b-4cf8-a33d-175c12453388 38b7ec9f-820a-4466-8b81-04c57abdaad0 f3444ce2-a6af-4fb4-9309-79285f32a222 097c265a-62a1-4ce5-91ef-e1d89360b544 4cc16c3a-1fc0-4e7a-aa35-08ed2d9faf02 413848c0-f865-4a35-9820-f7fd94f619f6 85995081-21b6-4946-a435-c425e00b9bf0 8626dc13-19dd-41f0-a5d0-e7a202fcb7fd f09e47a1-e532-4ec2-9d79-94323bb444d9 b40d3feb-84db-460d-b4f0-b3d751d5ec59 001bc8d0-baf9-410f-95d0-dec1776a33e5 c92a5a09-8624-4599-897b-684f8294d8f2 694604ff-2f43-4e77-a842-840a82099431 1b4f2a8e-e9d9-4910-8bf1-64b2c2e80c40 06305941-96e9-4ae0-8925-4a7f51d07515 357d1f83-9cc3-4628-80b3-8db57cff5c45 89b2b926-955b-4295-8dc8-771a3647c5b4 3808e794-7388-4e6c-b40d-02659c06d064 2e8f268a-9100-42bc-b469-d1273d02b80a 5381d704-43a8-4d78-9b94-f627015d8806 fda85166-ad43-43f8-91d7-06352966de08 31836025-74c3-4cb9-b2a3-ff9bf9f3d90f f64dbcee-8aaf-4083-aa2f-95612716c81c 8ea00e53-9d76-4d83-9a4c-4edd698f9790 086e314f-e06d-4255-8ab0-11d2128751de 45b297e9-548b-4d6d-a8a3-8adcbc870bf7 23774de6-36db-4acb-846c-e8c4d07d0822 a03e25d3-f8ca-465b-b061-d1553cc7a7ae c4b627fb-32e0-481b-a113-d3dddcd64571 b3e97c6c-3760-43ff-80aa-841185f48ed2 d57d7bfb-f4cd-42a1-bd3f-793a5e384453 1c515508-7926-4ef5-bc2e-643005dda0d4 85d8e518-347d-41a3-a520-cde1922e4fc3 4c4bbc4c-a95b-4986-a121-4ba43db66c2f 46185e71-a182-46d9-b87d-fc864d73c05e 40722717-ed90-4a27-8d3d-a95fc7e7a211 9f3a744a-423b-48b9-940f-dfc71a693dd9 44235a7a-0f8f-48bd-bbe0-2e2ccab1efa4 b0fd88d8-8bf0-474c-b464-fc563bbcc319 b6db3241-f15d-422a-8fdc-24ce3455c5d6 73afcc81-9a9b-43ea-ad4b-2e1bd0c477b9 68436f3b-461a-4398-a0ea-996f2aeed9ec 25529e29-a06f-40c6-9468-973c0fb6465a ca6301cf-dab1-4fbb-ba3a-42ef72a38c1d 1ffcbe6d-bf31-4b2b-98d0-aa30ea08402d 31a44d05-4b68-48c5-b9df-0a9909ee8a6c 8ed01c47-2536-4085-98ae-defd6cf67455 0abac5b4-3f62-4473-a0d9-40a5db9176a7 89aae41c-f634-4ba6-86e5-fccd94a52766 34594aa8-e020-4f18-8212-7ba1bf1905d7 6d1f36b1-5456-4015-8d2a-5f5a1fc57118 d08ba877-c1de-4611-a79e-e04732c4ecc3 b7bcec84-6461-4987-8c42-843c041bd669 dede1126-3896-45a1-ae17-558abc495dde 6a757260-3e4c-4a4c-b773-f3d671f747cb 37296ecc-ec33-4ac3-809f-240250fc6575 35981df0-fe05-4478-8ee2-5d9be5540943 cdd1cace-98a6-411d-bdec-bedea1cc758d 91c7bafa-7e37-4695-9814-f81fa253b3d2 a4adbdc7-4c00-47a4-91e5-f594db139143 6fcc6c69-4c2b-40bf-85ca-039c0333dd76 6d6fe9ca-f7d2-4fab-9696-c360c4877fdc 6cae45de-ff8d-47bd-bf71-9806c3268b13 814197a6-d71c-4cbd-8337-968c46b78a80 5065eea6-e034-4bf5-acad-cb7291bbe9ce d3d5de21-8be5-4c8e-9cb2-a54eb43a96ac 5a92b013-55db-4d68-8b5c-afdfc823c992 32a5b8ec-5322-428b-aa91-4eb806668035 23b6cd6e-9a0b-44f5-8d67-b64323429d1f 130de29a-87a6-4894-94d7-ea5bb1138d8b 62f1769c-ed17-4aa0-bd72-730f0d68ee1b a921e73d-a541-49d5-b7f4-fb6612234663 eec9cfd8-53b0-49f1-88ec-5a91a32dd6e6 3bd428b5-ef14-4828-9f3e-49ebe4d50b1a 8dec13ce-6ddc-4f9f-8a7f-3871344b369d f63fb95f-e0cc-4853-a9da-2576e9e23041 c5c15cc6-56d0-4134-a07e-4bb4f380522b e9fa84b5-4b57-4a67-bf32-21e3467a048e 9b8953ae-b7c9-43b5-9ff5-ccb810fd0f4e dc870ac8-3478-4b2a-ac65-99a425bc534f 0daa7fea-1b16-4dbf-a3b0-1d27596552d5 0a285aa1-8078-4876-aa8a-548e25311ffc 9ed19ad0-0d4d-49f9-bd0c-c36b92d61d98 9f09c387-b3e9-4e41-8730-03d2a83cc55c 921fa1e9-6b65-4e7a-a981-e302dd49e852 91cfa8f0-2e5f-4f4a-a60d-c3c6ce44fc93 74c058c9-bec9-4851-b7f1-48273693a9ff 1114e430-ee66-43b8-9e52-ee3792b90518 4b3321d6-f1ae-48db-8595-e12c6081c2aa a400d675-2b5c-4ced-8e68-b7e6b0ca0a8e 9ff0a2e4-d388-4ee9-af80-c8fa00c30882 3dfe2265-7b15-46a5-8571-f2fe064ce3da 241c1fe9-536c-414c-a213-943170bc9bc9 05404dc5-b417-461a-87f4-80af184f464d d58c36b6-e57d-4788-b2a4-da6038abdcee 9c58ac25-e498-47b5-856e-cf4ff1e793f5 30daa2fe-146a-4bca-b31e-0fb919b5d79c 65e9634b-4b9e-4090-b7c8-43eb718e3970 a43832fb-a6cb-49e1-95ee-76d630c9b652 3081c4a6-9317-4800-b266-3b19cbc203e3 832ab836-8457-4dbc-bbba-b03032cafb4d 9e56cecd-c469-409d-936d-639c08a698fc c81ebff0-e80e-4e53-bcde-8fd98856200d ca029d87-2437-492f-b7f2-8234923fa94b 899ab0f3-2a44-4fd1-9254-bd5f34ec145d 3fe95c98-52a2-419f-871f-f2a01122f2e2 8e125d31-8718-4e09-935e-b5971abd72c4 77097b4d-add8-4748-8656-aa1842c1f89c 60e6322f-7bf8-425a-a1f4-0f5daee23251 be26b2f0-3ddf-4039-94c7-753d8f2f698d fb125a3f-1a3d-406a-a18e-c2ebd5874d70 5190465e-5c48-4631-9dcb-bf16fe448d1b 03d15339-5273-406b-995d-4cf07fff5c3a d7499448-fd0a-4bc6-be05-1af0459d69f6 f844a930-d1bb-4461-8162-3b73536afdd1 2a0a62c2-e158-47d0-be97-ef228febb9d4 13a1035a-5eac-4762-bf00-6893e714f845 82ddab7b-9690-4c57-8e8f-16d749b1ca6b 3932ad25-505e-4158-a854-d3494c757952 2ddd49f6-208b-4a61-90dd-c41cc5149ba9 1fe38126-5000-4cee-b740-a6f97c232462 3e732d63-e15b-47c3-b964-7a16978033a8 597f00c1-53b0-4c56-9fcb-e061f62314ee c7e1409b-0c87-4e7d-b1ae-23d8645237a5 181eff63-8cc0-4df9-b127-7344634f5777 bfe99796-7164-4bab-a8cb-7be37133bbcf cdec3195-2669-4bb7-acd2-8bca994379a1 15ae8323-f0d6-496d-980a-3f8f7211ef9c a085f91b-8e35-4359-b9d8-cb45c0d89911 3014e6ef-8202-4c4d-8d27-8d558888b73a 2e505525-bb6b-4f45-b372-5d121a7e7fbf 33aaa358-5d99-4f1f-afc4-a426532656d4 1c33adfc-27a3-4ece-9361-d1ecd9a61fa3 eba0e446-b7c4-42df-a7b2-422b68aeef6a cbf1472d-c85b-4991-9683-7472ca0c229e 3f92767f-01e2-4250-9ffa-a6ed98d7809a 1524eaba-61f5-4d99-8e98-66fa6fb01ae3 addb80fd-87c8-46c7-b6f3-ee771031f21f 1f3719f9-60a3-4699-beb0-2131a1cf5569 d415eedb-5727-4936-b51e-dad6c5ed96fe d1382a03-5a3a-4703-bbf0-61dec6bce753 2c57277b-bf56-4885-996c-39e9c562eec1 6a2db27b-a6a6-42c4-90fb-0f13f45b639c 9ad0fa28-028d-433d-bb13-6a8a06a09285 22958fec-d591-4c64-905e-9e797bfdec19 45ff2ae9-d280-459a-978e-4e898d0b34d4 db22eba2-70e4-4496-8af8-46ebc82cc6fb 13a97908-a9c1-4d3b-be8b-6ae4737d02ce 87bbda2b-5fd6-4f3f-b955-ae41c7e15606 2bba6208-0df1-48df-b675-11a324f200e7 a84a447b-21c3-4268-a8ae-98f49ef0eebf 1643624a-7935-4a3f-9d65-330287b98e49 8daaa0fd-1600-4f09-802b-5a1ff6879391 8b6c5cef-b796-459e-bd16-5192103f93f5 23c8ecd7-b912-47f6-b9e7-cf3a3649a748 19044a03-260f-4ac7-adce-1e0e8fd52ae8 995f80f2-f9c6-4474-9faf-0787b0bda96b 104e9d93-1498-49a7-b57e-25f482a77b7f f6384119-dd65-4920-9621-8eb188139239 b18902d9-f99e-4923-bbcd-168721d7e9fc 6da0e437-1915-4a04-a2c0-7b8f8f8e34f5 60de94de-be74-4172-9b33-b33136c80703 d1687a94-58dc-4046-8e7b-439c83bf6327 bd5dac6c-8843-4aad-bceb-57caaad039d4 bb5f2003-0130-4041-823f-272219ef7a7f d5068b2c-ee62-41e3-8a64-8f97b0af0eba 0819eeb8-2e8d-46bb-b8f7-19a039f0f9d9 b5a272a4-dd71-4172-ae17-7e268c0d1d35 a7ed1588-e439-468b-b926-bed28d1e8690 000edbe7-a510-40d4-816b-1ab84dba1fb2 879fc94e-7323-421a-8b15-40bc7b32fa62 eb2f253d-3fff-49ff-82cc-8a12c462734d 69b6515a-564a-4c3e-a8f1-6c1a5c07e758 601b9ac9-7db1-47f8-8c4f-5b254169931e e9789a2a-0662-4b6b-bb04-deb28f7405bb f8b03b03-3d61-40b2-af7f-4a2d6729bc0f 070b9772-ff90-4e65-99b8-ddef593e7540 3d4074d5-6ffe-4b31-8cab-9237e4b291c1 10e3649f-2e09-4c71-89fa-1a88fbeef8c6 7beab703-3566-49b5-beda-114a1ce67e8f 3b62731b-69db-40e0-bea0-ddfc4b5e97b3 67fa7788-8150-4f90-9f68-7843036b01d1 05b4b2ed-4db0-4d40-a48f-b8fe7849fafc 532f5cc5-7ee2-4d2b-93aa-2dd7f227f2fe 0c8d86c4-180d-4573-a730-e27f1a4fa112 a6b2fc86-ca89-4237-9701-c7cd840219b4 349dd32e-bd16-4638-9065-cebdddb95a94 7c7a4c65-048a-4907-936c-376bda4c893c 695d9326-a6f6-4f5f-a916-221593172165 18adee40-fb74-4f7f-9ea9-0c545351adad 478f28a2-2365-4330-b4e8-53546eddc5d1 7cfb1bdc-7ae6-4388-9cac-60600585db84 16e30912-ce08-415b-8c33-afac612faf04 5473dc5e-52f6-4b93-bccd-b84c0dce3462 7c945561-396f-4892-9d4b-129ea4792a1a 026fb984-00e8-451c-9a82-83de12fc953e d0cb79d8-7d02-4615-9f19-a99d2f82134c 285e837f-6627-4bc9-ab4f-dcb9d3c0c9c8 a4fe96e4-7ff5-4800-859d-2213f3bcc004 d1f910b0-eb93-4f11-bc03-664d96aa8579 2add814a-aa35-4870-b7f8-3ffd79b5de85 f02f121e-e6a8-4f8f-849e-ef6d3db0fa25 a65e06f1-d3d3-4393-8e4e-a3f24ea47ff8 6f26c341-92cf-4a75-8e64-1c73ce0cf65f 8fc499c1-f5b2-4326-bf48-52830f66a01f 72e39b98-14ab-4e8c-9384-7f66f52a1637 93205f35-d0b2-4745-81c8-1d71dfb8c577 3b261a96-3966-4203-9b93-1f7f678c720e 416f01e0-d51e-4024-b07e-be689014d216 a98b881a-2786-4232-9e17-f8fbd0dadaa0 ee609d84-dcb6-4613-a80e-537ce3ae1afa 97bd758f-e644-456c-a42c-02d6b6983372 6480db66-39c7-4148-92f2-efeede08b736 8d85b11f-748b-4ba6-a8f0-5af15a566aad ba4a5bd5-7cee-4cdf-a521-8b70c2f3a6c8 dc2d1ad6-46b2-4e7a-9915-0028cdf6a1ff 95fdf902-191e-452e-93f6-39b8ecdb9b93 97e37f23-f5d2-4773-a9ff-ed2bce1b60dc 5822f616-c013-40ef-a1c8-5a0d0ea963c5 499dff97-216c-4917-b70b-0cc542edf788 f4f57799-ba0c-4e20-a5c5-30bef72812be 88b3b89a-ab97-4999-8ac2-9844e97d44b6 791b590d-6325-4d82-9a4f-8a642214e080 cbbc030d-fbce-433e-93a9-3143b35cc9d2 a120387c-67c4-4e94-bb74-5a07ffc7b47a 35e0b3f4-13a7-4749-be45-2bc37b37f99a 99686b93-dfc1-48d7-9ebf-a7e3eb112de4 4e657ae4-ccca-49c0-8eb7-62495eeaba61 67e670d3-eaec-4e1b-82a4-859f7c0f90fc 44af687a-ac63-45df-8f2e-c5ae233e8b1f 1e5bb60d-e490-4275-8a70-e87ab3db8fef 331a3a9c-5816-4ed1-ab51-e3a4cb1dd143 efb3da46-6797-4000-9449-582311db933e 860b3cbf-ce88-403e-9544-8a0314ed421d 0c3ac736-7580-41b6-b808-47dbc04d77dd 7591ca12-a243-4636-b6dd-e898f5adf7b9 499b05c9-648d-4570-badf-317f6b7ad10f dcf27044-9243-428e-917b-85023b74b38f 7d7a64ea-b02a-41dc-ad7b-7e1d072d03bd 7f1b4ad1-f8cb-4560-9ace-0304bf61fe8e 6543ced3-06c6-49fb-96b9-fed07142d6f1 2093d360-2ac1-40ec-8c1d-96f635a30b68 e85df4c1-fc4e-4e17-8dcc-5e724736bdf1 023bcd04-425d-40ce-9fcd-b718a7608bd0 91ac25f6-ee52-4657-9b25-46a3e9cd6bc5 9123e123-d13c-499b-9691-aa86b928ac7b 6763fd08-cee6-4cf3-8447-649caac7a611 3febf9d0-0e67-4730-821e-73865d5877af badccc02-4a8e-432b-aba9-472002e2c882 c373c487-cd75-43e0-8ff2-5a538bf9bd08 cf5427c1-4c99-4d01-8998-7c342c20b6bb 46e09970-8e73-4e3c-973c-a1597f34a70d f276c1df-6f32-4427-a32a-376ea810a3d2 3a1af933-dde1-4853-8990-5c53ff5e89e0 5105b25d-875c-4a84-b9a0-cdf482a8038b e715bb49-fcb4-4c1e-882d-640fba3d0733 20d4747e-d8e0-4a10-88d4-4c8b73607632 83865783-b1b1-48f9-86ea-07bf051293ac 64c2a9b4-c97a-43ef-9d6d-fc535c1d4aec 5b0caa86-fc4f-4ee9-ba11-5c21015b4672 9eb4168c-68a5-436d-9cae-4aa417bdcd42 aae6decf-c686-4584-a8ad-e9ee38de226a 768af1e5-a491-4e7f-afc6-c3159d36dd67 fc361325-f6f8-4a52-84e7-f1ddccf0f30b 3f14a28c-f62e-4487-aa04-485bf9f01877 6f0a2d90-7cf7-46f2-88af-9f6b3a2a29e3 e629b3db-48fe-43ed-87b7-251c43f82ac4 aa78e428-dfcf-4168-afee-6f1180a6022b 7c0c734a-5a91-4947-82cd-5b59f651bbd3 ed0c3e13-6c2c-4056-a9f8-6c2930ed2483 8ec76c57-d911-49f5-be0e-42b0fc6366a4 e890efdc-4172-4665-a844-1346305d590a 496bc9b9-7fd6-4960-8049-1f89c6dc606f 174b1bf4-c9ce-4dd1-85c2-11e5bf3bfc61 1cc2e530-f036-4156-8e9a-50e663ccd128 d2003279-e5c4-4865-a3d2-9a6a7383188b be810f43-91b9-4bd1-b4a2-cd675fcd6ccf 0ed8b246-29b4-499a-b8ec-c62392679f61 69840c64-3375-471f-9053-4e6b0cae7388 bf5b78f0-dc6c-49e5-b84f-286044ad5caa 47a4de03-065f-4b65-847f-e428d21fb341 eb89f3dc-31c1-4ff6-ace7-50b69c417f9a 677db7ab-f04e-42eb-9ec3-1cce5930afe4 893a13d5-3679-4afe-81af-47c949bdeab4 d9f6343d-8b57-4ab4-be2a-00ffd898b13c 0140c7d7-48b6-41c1-8fae-d7f78cd73225 9b8df7e9-bea7-484e-a700-46743898a259 56d9bdf4-6ba0-405c-9fac-a3f5bd35e3bc 417fc356-d168-4986-83f3-578aad3f2eb5 2fbb4a93-d7e2-47b6-b54f-e9bb0ecb4f89 f5ddb8fc-fa18-421d-9cb4-ed2940f14e92 fe50e343-a9ca-4dc6-9879-420b50b966c1 9e276b42-410c-4855-89fc-eae107775532 7570e76b-a1a4-4827-b762-8529fa772c8e a2625c77-bb3b-447c-b990-5fef1f905cea ea6bc638-78e8-4d9f-8875-43cf84c098f4 83f1935e-adcf-4a76-835f-a0150b5ebb4d f30439dc-2216-444a-9832-8abf90243520 4770bb52-5ea2-42ff-8f54-bfbd5df3281d f6feefc7-41ec-4575-a87d-f4751ae8de52 3e2ba007-3192-4309-af33-8c06eb99d078 e51e9317-52e4-416e-bff8-f10001df2d7d 2bcd735a-6084-408e-af3d-532473c736e5 5ea7a547-756e-4c66-9860-79818da94e8c 247e6f3e-2321-41e7-ba99-a2f422f28ad0 0336f68a-4be1-4be7-99b2-f66635ac9d17 6e36463c-fe05-49f4-a807-c12cf95d1713 26e5b0dd-b6e4-44d0-a23d-5ec0fdf2bfb0 8c5bb9ec-ce6c-4849-b5ad-5127f50b2c93 66343676-58c9-4179-a143-5ad77ac3d88d 40c318f6-cc82-41a1-b764-da73799caa08 e33a62fc-3f88-4a28-91b7-ee71fb79c2ce ccef75b9-6372-4ff6-bbd1-45443317a559 e8aa062c-6bf2-4a71-a0a9-c63dc2d87648 5f7a5e88-d31f-4ef0-bc7e-d51fa3c837ff b7233b28-7a37-42ba-9dfb-8f21faf84e6f 40565e17-a0c3-4526-acb5-015bb07bdccc 95c0b764-f8a6-411f-aa4c-1bf2ce84826f 06918859-84d4-4f85-95b6-19d8373b90bd a1ec0790-24fc-4af5-bba2-a722dc0e3421 3e18b409-4733-48f4-bdea-528cd98fe689 0a3ac8d4-f86b-430c-a8dc-33761566bc7f 2535df08-5d8b-4f5a-a91c-df163afe3804 18acc04f-b2df-4f0e-9500-f80f69896296 b759e79b-b84e-4554-9ea9-cea2e0cdc6cc 10fea813-075c-408c-98e6-30b5589c8151 d601d364-0c72-44d5-82ec-91c7bd4185c9 275cab7a-79ac-4820-96ba-66464209e61f d7e7135d-953f-4909-84fc-d1d34c54f9d1 fed1d7c7-b879-4673-a813-75af117d6165 33a9b8de-67c7-4c9a-9f39-3a0d5748853f fe78cca9-adb2-40c8-968e-d0d5985acd07 aad0e6fd-9eff-4ded-809e-bb467c1b17d7 6b7355ae-3e8c-434f-aade-f59ee653945f f95759cd-fe40-4e78-b11c-362695ca6f39 543355de-653f-43e9-9c8b-5c1191dce0d7 508964d6-a202-49b9-852b-3da820402c33 3e6ab2df-24c8-446f-a4dc-c853bc1d1934 0d263bd5-2b15-42a6-a007-aaefaed570fc 2938a2f4-5697-4840-8376-7e24afb4848a 3871f385-41fe-49ef-ab00-dc30db006d2b 1cb4b572-0f4a-4687-89d5-732df5ef7f07 c6173078-58ca-4d89-8598-d83ac845d91e 89012599-d9dd-4e45-9ae8-d1ad15f0e768 00eddaf5-a303-4239-acfe-59eebc49a54b f0549345-c62f-4ae0-b3ed-90e74155c6f1 f0505461-6663-4558-ac45-db43105d04e2 e803df32-18d2-4c60-9b83-09ea7cd88295 38fd8c21-84df-40b4-b9d9-9aa62c56e17f b751b9d0-9136-4dfc-87f1-37f39d4fe773 eb41cf6e-ee12-497c-b9d0-c8b3ca4d5d7e 677dfb0d-7706-4573-abc1-fd96937e2b3c f52ba2c1-555a-4757-b487-0b552d361e98 3e9b45cd-2da0-4ebf-a42d-fc0768488f7f c7dde3b8-298c-462e-8076-e8b2c8c33bd6 6d84486f-764e-49bc-946d-10dc01764eb3 c0bb2649-8958-4763-ae02-11fbb558109f 573e4e4a-4ed9-4221-8a90-83698aaddb62 7f474c49-c207-41a1-8da5-64629e395b59 cde10193-f48a-4aa7-94ce-599599cacd27 81ab0b92-755f-4f8c-aa72-ab28385d8873 f0a55010-eff8-4853-9e16-d2d8cec4194d eeb5e17a-983f-4822-a231-7dade2a2dc26 de099fc2-5224-4201-9d1e-78905c7a5ce2 07f6a294-934e-4925-9423-3071c0dcc039 8cb606d7-7012-45db-a3d1-bea86b55fd58 1d3f6135-3411-4466-a34d-0f4a73e655e8 86b4cd35-0c62-40f2-ad24-82999d003729 f721c3c8-b6a8-4121-9281-2f31a6a869fb bb605182-ea4f-4d3f-b78b-70589666a34c 64b2a10d-d8d7-40bb-ae74-34a8c8446e55 9bd30428-7d7d-441e-8f9e-7cbf21e375b1 f91be5aa-b707-4f2f-b9f7-e41a7c806c9c 8c3fb743-a10d-4ab1-8301-f7f849a1d4f6 f774371d-bfdd-4200-b2da-5813e463a72b bf296584-9c02-4a5c-9d3b-986eda16a530 abd9d2f2-d713-4e72-b420-1f392620eb3d aa1da8d8-426b-49af-a7e0-40a4e5e09201 233a0108-1bd3-4893-8fb9-e7cc05e45cf7 6c3e3ff7-7ddb-45c4-82c4-07d692ad9b0b 1d882db4-46e2-44c8-9ef4-fd7513d8dfe2 2dd131d4-5c29-4516-b37b-1956c56b122e 0cc81a23-1882-46e6-b83f-b7853e720665 0eeef160-5e26-4666-84f9-ca53d4f2aace 950eb2ef-85d8-4de6-866a-8e65c9fd485e 51e8f263-2b39-4f04-a153-bc3effb197ae 9ce37c78-c9c1-4c14-92a0-137eed755f0b 57dca410-bceb-4492-bf12-67d565ac6de5 6c530a44-76a4-4ed6-aa8d-658aecce235e eff81dee-2699-49a0-9a6d-b3855e934e15 8edd71b0-6394-4efa-b297-66af180ff838 2bed4e07-19f6-4fad-9c3a-6ef0261df720 d24e85cf-6a22-4430-9417-a58f0c2bbe6f d3289514-5b4e-47e2-97e4-2df624f51b88 dc8937a7-e440-4f9d-8111-1ce7866cca23 8db3953c-fa8b-4167-95aa-9cf4af209fa3 7befbdba-8f9d-41b3-85c9-74ce4f2cf3c7 76d48cd3-35e0-4e41-ac69-7dea72cdb834 fe4cac8a-9c1a-4f69-889d-9f37b6cc6894 560b1226-85c5-4a21-9dd4-f3b83a7232b1 9ca0cd1e-763b-43e7-b7ec-498de752969a d160e62a-da28-499f-9396-19b5f732b0d6 738febcc-4060-48b6-91e5-985c09fbe377 557a0801-8398-4ddb-8738-8649328c7213 94814703-31fc-4e83-850f-2f8786c956c3 6293616e-e199-40d2-ad9d-3abc79c234a4 3afc1517-07b4-4b5f-bb2e-5b89db5da398 14f9a754-fdd9-4ac2-8030-f7b340750af1 da5d01bb-93e1-47c0-854b-832ff5e5304f 3448e292-b159-4354-adad-8fffc39cbb69 242b7293-370c-4694-aaba-5801f7719c0c 7bfbe833-a30a-4017-87d7-a732d703803f 8fc9edeb-c167-4e6c-89ff-d36764c4011b 49dc20a4-4b08-476a-9830-99b5d46b0664 abe809b6-8901-48df-b212-cb58d4f4b47e b0ef20ab-41fe-444e-ae7d-cac0b3df6cf8 6d0196b6-f67d-4982-b587-c65f8de8ed82 4e45f5df-f99a-43f9-8b96-ffef9e707f20 c8ad9709-b328-44cd-a72f-c353e592cd87 febaeffc-5f83-4650-9f18-6d0c61b8481b 31a687e4-2426-497b-9f2b-588eaf2e56df 25e2395a-9c28-4603-8fd1-270b7104575e 8232d5d6-49dd-4969-9bf2-23e56247ac29 2d1fbed6-87b4-4227-b3f5-5c84706359c9 452d6ea7-0540-496f-b04f-67493098645d 853841dc-9746-4e96-b095-e26eb3f6bd91 2092a0d9-ee27-4ff2-a67f-a23f0e564349 2e68b935-b358-4f35-b82f-ab2f28e92f61 bff67a18-f7bb-4fc8-a73c-9f3de26a53dc a934fe98-6e45-4b31-90b3-3cba4e7ebd3e c984a128-60e1-4012-9bff-ac1b50deefe1 aff9b951-d35c-4f92-984b-fdb28f74a439 e487d320-b55f-4c92-8c9e-0cce79dc07dc baa88fbe-c24d-4842-84dd-f21f273cc4af 56249650-873d-445e-b185-a326ee0c5cd9 1588ba8a-58df-48d8-ab8c-7cc1f2b198d9 f6b2d13e-93cf-449c-835c-3c971a0bae7e b2ca52c2-be1e-4c19-8576-88823f44af42 26cf97c7-82ca-4904-a8b2-d0e4529158fd 4a04e51c-68ec-42c1-8887-7a7b8530858a e2d3b23b-89db-4a29-bc4d-1d6b11a921fc f1fd3e91-04ef-4298-83ca-61f0fb0d48b4 52d2afa3-0625-4ca0-ad1d-ebf170e1c3f3 e1220efc-4aa3-4eaa-ae47-deb90f88e6bc da18e10f-288f-4ff2-8471-1386b2cd106e bee2431c-c235-4a9b-8255-33634013e119 1bd11605-3fbb-42a6-b27b-5ad874305c95 25abab7d-22f4-49e7-8f8a-fb35f06bd6ad 8e6ee61c-2a00-4395-9492-44e8695812e5 cd9b8e9a-01ae-483b-86f5-d32380fb55e8 12f7e131-1f86-4590-b9ef-de88b5c75f4e b368c9e6-2eeb-47d9-850a-376401b25e2e 1d62feba-1c75-439a-8a82-08e73107705c 0b7b13d1-4f61-44d9-a422-143a658ba96f e9ac8ede-e964-47e5-a0a2-f99f4a3edad6 9b5c688b-721e-44f2-9257-28e739274433 dff1df87-07f5-42cf-9d27-621c91b746ba 00f97ef1-c116-4a79-bea9-fb635094b809 6062a021-7fcc-42fb-a3ba-f2c590f8377b 7a6554b6-56dd-481d-b33a-b23981800aa9 3abf68d5-f1d6-4e5d-9315-5c0b9a6b6967 70a05c23-571f-427f-b207-9262f70d9986 054426fc-c781-4f3d-ae4a-5e59a39cd170 a8129ac3-99f7-48e4-83b7-b736a88f9dc2 b3c0f895-a8fe-43c1-b97d-e76a55787c64 32d61c72-fe82-4f63-bdba-9328954979e1 4ade13fa-f557-40ed-ba6a-695447980679 bc1fb5bb-c6f3-48ef-b4cc-cb85ef4217bf 7e2c706a-abba-419e-ad13-2aab6122bdab cafd5f9e-be1e-44b8-9a13-b501e9daf325 3dedf990-220f-409f-a7ab-a5eea1054ecb def9b613-15d0-48f0-bfb3-877d6431986b 952efacb-fe0c-4ef0-8376-dcfec325061f c1f140d3-91e3-4242-812c-de785a8f52b5 b3a2b885-333a-470a-82e8-06868a738dd9 593211b9-787f-40eb-aa27-59dd3890c129 85a99370-2dfe-4a12-a1a2-76e9c1ff9161 4f84e169-d78d-48bf-9387-bc1f0a0646cf a5220f1e-d881-48e9-9358-eb7d43c5a0c3 1934774c-4f7b-477b-9e47-5eab75beed94 6400069d-b369-4075-999a-486b95c59cf0 9b2903ec-123b-4bfa-9ad8-5d8305f65d6f f79af5a2-693f-4bf3-bb67-4a6d3189e40a 7d383438-1c58-4064-bed2-aa6b067a5e74 beb4819b-bab7-41ec-ab5d-37f5fbcabcb3 9db64b67-dbf8-47fd-982a-448a70fd24b3 7c2c9e27-5bfa-448c-a258-c009f660ee41 62145f38-0d2d-46ec-88a6-f3d983d22ac7 18ca498b-ce72-433a-bab4-ac719f7ce05e 394d03e1-9c50-4f58-a2e8-49e289c5d9aa a6a813c5-3277-4d38-a570-3b9e0580dd33 7b881cb1-c771-4b16-af44-3c8cecffc160 020efb65-9eb0-4f99-bb0f-6b2ff3648921 22086629-6fb9-4b9e-b94a-3e37423de948 e4e6b979-18ce-4564-8227-05c3b4b6fda3 c65b8f02-ff3a-463e-93b2-e38f18dac8b2 ce87e6bd-8ee7-4cd9-ae9d-b775ec05374f 47cb76e0-6cda-43d4-8064-c1fabd486124 06580049-5974-4204-8f2a-ce13c498649a 4cb82558-b9e1-49d9-ba13-de7770ea46ec e080f823-7a3b-456b-a2a8-5ef45dd62bca a5e80beb-042d-4a81-87a6-ddd5f098cb41 9d7c5121-385f-4c06-a531-067b1bef8631 c62a41e2-5d35-46b6-9318-cb699a4be935 64874e0b-cfd2-4159-bfc7-3dacd49bc882 6ce0cf8d-5e76-489e-b715-01807e440124 20b2848e-3bfd-4ca2-80e6-6f5812b7173c 3a9bbb68-3a6c-46b5-bfd5-9c63c57d8780 291d54e5-648b-402b-974c-e1e991c9618e 96e59ef3-4a4a-43c5-b737-85ff5455b0d0 720ec7cc-d33b-4102-b929-7ea0e189a2e3 11756886-1b71-4f94-93f1-7632e2e559c8 4e0e04d6-db47-40db-a09d-c4ebaae1b208 40947a50-c791-4ed1-acd7-1a420b8be8b7 5244f832-bd97-4745-a690-712f586265ff e696c6d4-22e6-4eb1-99cd-4c5fbe011284 23e8f5cb-8049-4411-8e5f-a3947f58d846 7989527e-01b2-4545-bd81-8bbf6e1fd341 8b44a48c-0d38-439f-a346-8911d30ea1a9 cfdae4db-119f-4468-8acd-6bfde07b1a64 2b659b80-d6d6-415e-9e39-f9a30dde04f3 a95a9d19-b9a7-4f1f-8e7f-cb8174f5e10d 6bbd8e6b-9a2d-49c9-a641-28802fa8162d 08b9aea0-1dd0-4a22-99bb-e5d31debe020 80b03907-1ef6-4d3a-b0a9-c909d99f7402 b9a72a35-32c2-4532-bc5b-0e17d68855ab bf00837a-604d-405a-9d50-8785ae02c424 ea160bc2-4e8e-4d92-aede-5cecfe73bc29 56a3713a-1a9c-4292-9b6c-610ca4e2e305 6d079d7f-9b74-4617-8fdc-4edce4c12b0f e87726f0-c8cd-4358-9834-c3a57515b074 cbc330ea-eecb-47d1-8c93-53fa369ff6b2 49c4d7c7-1b7b-45c8-ae1f-6c158c5702a0 d4ab6f4f-4fc0-4aac-987b-53e350d4673b 5da20e2b-96e0-4e02-a8fd-7956c7ce87df 83a48a9f-ee5d-45fd-8868-afea94672280 e7f6a57f-f1cc-48a3-8096-e468fbef6860 427063fe-7faf-441a-858f-509023a3e663 abf0ac40-f9fa-41fa-b452-38c1eec055b6 1425290f-9209-4eed-a4ef-c766068ad06c 1c3b7c6b-67b7-4ed4-a63d-a7d6458a2946 4a5adb15-1900-488e-aab4-37caead455c3 d4ddc728-888c-4e6b-8b38-5314c0dc245e 5082c77a-2f6b-47a3-8280-6605bcece418 34558381-d970-43ec-a241-84684dd4ccc8 a2a4b8ea-f57f-4fe2-a079-b02d7b7a94ad d1fe7611-4dae-4794-b88d-54bb464a6fc1 f9d1628d-f22f-4878-853a-1264815d6f40 d67cb654-1c78-468d-94b4-be213439670f 2e8d9b0c-2bc7-42c1-b77d-1650f58ff568 7e7a72a7-1724-414c-b9c7-31cbe6acafa7 22c03d15-c394-46c6-b28e-a69409e16c4d 3eb552a2-2784-46f8-bfc5-48acfa730f96 ec008504-b822-41df-8e4b-36807101ab0a acd9ec41-7474-4425-81c7-054d588c5dc9 f5444007-9561-4c47-b566-27960a8116dd ed1ad0a7-9d33-4e9f-81f1-5145b5ab2cf0 139264e7-a2de-45b6-8f1e-e2d8c85725dd e71fd819-46c9-45c7-8074-5da670857548 9cceab99-a838-45bc-b658-6bcc708188d3 5ef5a075-78aa-40bf-b76d-c4ce8dc94e45 b8cee2e3-8643-4d9f-ba12-ea03daef98ed 859e9f7e-9075-420e-9e07-d63f5daeca5e 0f6382ab-a27b-47a3-98b6-64057ad6f3de 05e61d2b-477e-4561-9c73-45dd484ecdd7 b2a1a4a5-dac3-4390-8c6e-3c42962063af 6942bb1d-1ec4-4cae-9cfd-3db2d3d5effb 5f44ddd9-8975-4944-b711-f4efa6a518bc 70969e71-b199-4f38-a4b4-2c0233ab7a49 304f30e1-ecf6-46b4-9f09-8859ab764930 6e1f5230-df81-48be-abb6-e2f83af84b22 42e03cda-b2ed-488b-b8e3-a70f342f53fc 72092f31-4528-41e5-95c4-a6dbbe618931 0cffe1cb-47e9-4361-92c9-b28c9390e5f3 172e9bb1-9f37-4c4f-a651-062b934fcc3b ae08a30e-3a58-4523-ba92-a2edef47e424 5960a14b-9d98-469e-a289-002b3d450d17 31f63f23-f68c-47fb-818c-1f502bad9c32 189635c2-d40c-4c1d-9635-e62e3289a0d6 9991ccc0-e7c8-4591-88f3-54b36a65a423 dae0ffa2-c9dd-4e64-8862-db003e9f32a1 1197a82f-6b22-453c-a9dd-e4afda553c10 1c8c1c46-633c-4ebb-8568-85adabebdf37 b18a9258-d577-4ea3-9f88-c1396cc3cd4a 12f3d277-c295-43c5-99a0-776a8d97bde6 8f47c95c-3772-4df6-ac77-6a17ad5943dc fc59d5d1-1b76-4ff6-9169-d558809bb31f 568d0e42-92e1-4d5b-8127-7f7aba4dd5db 1508b1c7-e7d1-436f-88dc-c367e1f8e537 1dcaf72f-b1c8-4699-afdd-e7dc7d655314 e6791f2f-035c-4250-9088-6e215b8e5001 34bc6d76-b0dc-4ce9-baac-6c03fefb85a8 31c5346f-09d3-4d58-a14a-d7a6656e669a 3f6da915-38b8-42cf-a390-46e611f15bba 216ef681-2ee6-46ed-b923-b372857530fc 058cfed3-dfe6-48aa-80d6-bc35ae993bca 0491b867-1b54-4abc-b90d-2a6a57f026d6 48dbc715-16cf-4234-938a-f70cea2804b5 c42573fb-1b66-4d00-8941-d4bfc290ce57 42a12260-b136-4f17-9989-09f640ab8ffd 7f23631e-9e50-4cc6-a786-da38b218341f 2708d6fc-e8ce-4138-9e51-5a9f91ad70b1 8025bb95-f08b-4a5f-bc32-12578b9517d7 3c9c3b35-bb77-47fb-8c2a-8c6e1d8a35fe 27dd0dbe-53db-4877-aa58-e627ea85ad6e 2d5c28f4-b3d2-4cc7-9d9d-af436e5c2212 56926ca9-2c06-4685-856e-26803194da2d 250894d9-b653-474f-8e5c-19b767ed836d f9f81a97-d00a-45b6-ac27-0ec3dc7a624a aa71a90e-37bc-4bfc-80a8-e15ab37a7c5b ccbd279b-b06d-4fa5-b8f9-9579f5877a84 74064dd6-3d84-4cdf-9338-d956dd6c4866 94999285-4d90-435c-9d90-78c1a6bc2b08 0678e300-af1c-4fa1-a759-e80abcd03e76 b0c5d530-5ff9-40fa-a94b-a8744fde57ed 867a2fe4-5796-4ad5-98d8-827eed41171a 72471a36-4633-48e2-9b89-4a070e2dec79 e3e51274-3c3c-4c3d-a466-b9aa531e2c01 c0b4f28d-c72b-4f92-ad86-732a7d22defb 4cbf9a60-24b2-4782-b72d-8b48ed79d1c8 69abdc66-5d06-4cc9-b9a6-3a383aacf91c f34f251d-59b5-45fc-993b-f7e292d54c65 f3491d18-cbe2-4071-bc00-ee5924fdae15 49a0ef97-3b60-453d-bf15-f4f706149143 d9bad4c1-5001-4425-9067-39b5a7733c34 bf9be18f-0a36-4458-a5a6-3bf069ee8b6d e2cb3297-f59c-4e92-b0a0-de7b7aa028a3 06621f9e-d20a-4d04-8e8d-c30bcca4a303 a16faced-d0d8-4059-bfe7-203a70f60f21 113ce1a2-84b7-4c8c-8056-aff73b0abc5e 951e1ab9-c2cc-413b-9119-c5f68fcf42a7 5769a8f4-d8a1-4dee-9be5-d9c5c59bcccd f2744d1d-65a2-4d57-a334-148f1ba3d68a cf4d7f5c-e584-4d68-b8f1-fbd7fd52ae0a 1a2608fc-6f58-40a0-9bda-5ba16d0fb0b1 3435caa2-dbcc-4f9f-93c1-0f78e69d2c13 cf7b44c6-de90-4244-aac4-851f450c8d03 ce34d744-8edc-4c15-bef4-bffd3f792c41 1a7690f9-2071-48e4-9771-357b3b1e2a21 f663efc9-98b3-4810-bf00-665c36ae4f30 d6d47d91-3492-4ab8-a2cc-90207be213d6 b140f37b-270d-4757-8acc-7852e01b82c0 2942e5a3-e17d-402e-9482-7a16d8934a56 2d1718a7-1045-43d8-80ba-1123f43c7c1b 3abe1b53-567a-4444-bc61-94ac1a3e4b50 f9f677df-7ef8-4db5-9fe9-ac6d0e50583d 5e9a3a0a-d92b-4839-b506-2927b535263a 8ad8911f-563f-4872-9fa4-789fc773f254 77f7e20f-5e31-4dba-b8c0-41d785b1316b 33688ae8-c0a9-40b9-bf13-e4879792dc9f c7205037-d1f8-4fb1-998f-c86253bb143b 77eb5ffb-3196-4c9e-96ba-1d89d3d7b50a 16b2f331-dd04-4ec6-adee-0dfb856a2f82 3bd3c111-9084-4f83-b9f8-cfb6585f20cd 0c5de53c-a972-4f97-ae9a-5b587ed06863 2dff1581-9018-4a50-bd75-508489c6a60e 57d40c9d-0c40-4b9b-b178-18c528eac65b 61632a0e-27bf-4013-8ed7-5632303fdec9 2bfbde5b-148d-4d88-b44e-42af48d488cb 7575fd8a-7d72-4709-ac48-a0e52fa51f3b 7df52747-eada-45e4-9bc6-fdf4dd4961b3 cb488997-2ccd-494e-b014-0f19efc9a248 0a1fc1c3-d827-4881-a2b0-3a3869eeb1a6 653a2de0-b881-4f7c-9fb9-e28677fbce6d aff5ae4b-a4fe-4774-a793-3cd7ddd8cb22 d8ce6737-2cb0-49a6-9049-36eb962c4419 d344abd5-0295-4b94-9ff9-1c53cdc6874f 694702d9-a234-4e7c-8092-36993e7871cf 21826003-0a4c-45d2-92b5-61b371b94cc7 fa365e41-10f3-4b29-bbe2-8a8888f1d34b e893b1ab-14e8-41f3-b4d8-f0220344323a 96701d64-d51f-44ee-8421-f1e2dfd6f43f 75aaf5cd-e3e8-4eca-b2c4-59604e480a06 6ed94635-933e-4d21-b3bd-8b9937ae1d70 938298a6-7153-48cf-84f4-ffd5e058c7a9 62f8fdf7-b08f-43ec-ad15-b69154b30422 29fec9dc-be7d-417c-8bfd-204433b85731 a32967a5-abe2-444e-9d32-e48ab2b86b34 00e7517c-e074-4a74-bc6c-f47c9c8f47d9 a8eb26c2-9db8-4d74-b585-a5db22810ced 11ba9924-5081-455e-9f92-e6d6eece6593 d2ee41d6-6941-4985-86c3-09f7502366b7 edcbed6e-fade-474f-93d6-92f626a503f1 5901934c-66b9-4bc4-9046-899746313a3d 369db4c8-dd29-40ed-b54d-ab2a959f7289 147c8532-4e6c-465c-9109-923eeef1f44f 47e1c849-3802-46de-a3e3-323972091ec0 409ee312-9bf8-48d9-85ea-a3a2c3434662 dbeb8128-badd-409d-9343-a73c3f0031cf 40d84a49-c178-4a01-b1e7-3f032064f0c4 9b998b7b-4781-46d5-8883-16efe7fb2af9 d7c715e8-f921-4147-9f95-140da2d5aa60 5c58045c-49f0-4f45-803e-3f9f6b7a09c3 51fb0878-71f7-4cd9-8712-0aea1eeeb19d 14c6843e-49e2-4740-a6ba-708d7a26f776 a67fc607-cb02-4359-b370-60dc8a1a2113 fca759ce-6c46-4441-83d2-71fbca0b4689 ae5e4eee-ac31-4f5f-96ca-f9be59959227 e5d59bfa-271b-42af-9c33-6cb98a4674a0 5358d60c-d023-4e0c-97a4-30d12ebb4b92 32861c45-edcb-4b49-8719-5428db1238f9 aa34f942-4daf-468f-8c88-d92425bc4ba3 863196a7-9979-4f9e-81e8-fa709560fc08 765ef069-2559-46fe-b255-cc755a61e88c efa881d0-5667-46fb-8a12-cdb2df6593c1 8e113815-05e7-4231-baed-b3d8bc737b0d 2075783b-56fc-4e8a-b749-4ab32f5b2ab2 f2ce6f3c-1f7c-440f-bbe2-30acefab3130 c8af0660-7d58-42dd-beba-7d483b665d40 4df42a1d-87f3-473e-af4e-0360fa380260 490c0270-c9a1-4f2e-b26e-d237a99ae947 836627e3-8cc1-4fda-b8bd-75e4ea105aa7 8a56ac97-1c2f-428f-9a3e-380970eab3b1 c4db2d11-a45b-4fbf-9dad-61c7340cbdc4 fe5b71cc-c76a-4172-8869-8bed3657aa91 d4366ed4-5885-45cf-9997-05747ad904a9 982e98b4-a885-4310-83cc-64514f7fd73c cce58ff0-0ebb-4058-b642-848465890869 8364a2a7-0475-4bb4-ab69-691d86b9887e 955ec3cb-ceba-4576-9250-6a7b5e7533a3 9ef42aeb-875b-442b-9345-2e10d4411e5e 64685d96-aa8a-407b-91fa-8c84b5a2fd5e b8022d71-4ec5-42b1-a0cb-bbbceead4e4e e1db3194-13a8-4e78-ab37-8cdfb6867899 b93dcc28-271d-4b26-bcaf-6addf095f8af 701176f4-40a4-47ad-9d48-700c886ad6bf f81a1d4c-ffb1-4789-843c-44e849c699c8 e4a7486a-c664-47df-a91f-cfb2d1d9b091 da70a2e6-40d0-4746-9395-31bab3b01b5c f570c6c3-e9b6-45cf-ba64-1c7d1e35938c 2a9b4736-922b-4639-8cb2-7e7bd1da6b62 21b3da66-6439-485a-917d-920fc5738755 b15d6e4a-132d-419a-a701-e0962f60a790 d4739975-5b42-41af-b256-a6fb78d32fb5 67d56211-5c14-4bcd-8361-a1bde08455c8 38b601db-4e63-49b0-a48d-ad6bcb4df2bb c0787e39-a8d4-4371-a081-28f69dd7760b a4834881-7e51-4705-b4fb-e255cb89024c 17e7aa61-70b6-4371-b3aa-7aa269e57f55 ac57ce96-656a-40dc-bad5-e304bb079238 c5e173fc-9d07-4d65-9102-4ce582df2de1 8b797e8f-1e46-4516-885f-e26d38b65f6a 535461c8-49c6-4a9e-803f-c4596f7127c5 59de6ca2-1453-42fc-bc35-1cd050f32ff7 393cffe3-3379-4cba-be06-41186c1022ef a71f0e65-5f75-43cc-903e-c1ecf25f1230 22d22a4f-5eee-4721-a1a1-b9703900fd02 8fec8bd8-35f2-49dd-a021-0d38e5fd4814 379e576e-1dee-4f4c-b5a1-2c54e517cc18 97ae6c8e-6694-424d-9119-5a939f9b1d47 0812958a-0f50-40d0-83bd-32df760f2642 4695194d-6a39-4104-af82-1b42bd5ee2e6 d89e6ac7-9369-4488-bed1-2242b7a0ee60 64e3cc79-9d62-4a79-a9db-4194358064c9 2a52e74a-2305-4e08-b91c-d2ec1acf1159 078820bb-cdeb-485e-87d7-b9665bfb2a48 932518b4-82f3-48d6-a2fe-9cb867ac99f1 a37d6ead-0da1-4ca5-96a4-4b811370b7ae e7c14ead-c017-40fb-82a9-7d434cf9ddf6 9933a22b-a6c9-42b0-8baa-83d0b56c5dbe 0359402e-3c15-4bb1-a488-1162e8a7e2de 76b7496a-bce2-4ce6-8c86-c6ab514e290f a6aebcb1-e37b-4adb-aa84-5b57f7d96ba8 0b8e7ccc-0d3a-4b93-950b-2cb35f352e0b 7f4dcb49-f431-44a7-8270-dc7c9e783756 f76cbde0-f1b2-4e6b-a81d-b77bbb627200 0d0bac07-d280-4c48-b393-6c18baf7d35e 205710ac-af67-4dc2-9c18-8419c0538f31 70827cbe-0997-4a86-bc2f-cd7d544c5e2a f44a6eee-546c-423b-a90b-d032b93c9105 c36c7096-a11c-4bfd-a4a8-fb87c95fba78 03c3777d-ddda-4573-914c-b3314980d341 2394194b-2ee3-471b-aa27-2d084a419e35 bf0d150d-f27d-49e6-8168-421b6b91ea78 98af6310-23e1-4b87-949e-b0dec128ce2f 57241b92-612c-4109-86ea-793174f91a96 3811b811-c664-450d-b50c-b93c6df8c022 876dd604-29b6-42a1-a5d6-3c096302fbb8 9458c14c-4ee4-42a8-ae59-9ab326661a33 71ca1549-905e-476a-930e-18ebfb576b2a 343393c4-7198-41c9-9f1b-88c7dba061b7 f5440216-f725-4b38-a0ea-b74177cfdf5e f0688121-4d8a-48fd-acfe-b62653129e74 aa5b4d79-2dd9-46d6-8bdc-55a7acc26b7a 4097bd73-8dd3-475a-ae59-629afdfb4862 362ffb3a-748c-4a06-ba31-bb4a8ed641af d8d67ff4-ebdb-4d48-9605-75c214048083 33334c0e-67e6-4b74-90d5-03d68a143336 d6b35576-093c-45eb-810d-661e6dbd46a4 7baff0d4-fded-45e6-81bd-67ae267bf9ce 95e91eff-c9f0-4d00-8ef8-46e20ca52739 765cc602-43c1-43cd-b35f-e5d19c5f150d 49dfde04-d6c0-495c-88e6-1e19f3b563e3 c5230917-53aa-41b9-a61c-27e34b53cd41 31cf257b-7466-4b52-9039-c8ab613a11ba 26e62dc0-517e-4b22-a69d-27477a26c174 996b36f4-f8e7-4430-8fda-e9f3e6a7c5b8 07abcf7d-6073-4426-8bd4-d43508f44ca4 a94d9d1d-10f4-484f-a3b7-2c6028ccad2f e59076cd-f780-4825-a123-25673f5ee45f 14eb3004-fc67-4646-870d-44e365904946 2ad7b05c-82f9-484e-bd29-7b7e90108a06 d1d2a24d-6edb-4ce4-9b96-2bfb3af34c55 d83f383b-beec-494f-88aa-4683ae01794f bfa3a2fa-98bc-44dc-9534-defdbd6bc6ec 401826a6-82dd-4e8e-84c5-7c95757b34bc b4e7f24e-0098-4da9-815b-97223a535119 02bd7e23-a46e-4a05-a83e-625994f55269 42a332e6-9dd9-4810-80d9-37b2c81b001c dd4863ce-f872-485b-af56-c078e42ee5bc 90dcb7c4-67fd-4ad9-a371-7e4860f208a1 dbc4f620-a5b6-4124-8c8f-b741c7614e4b 327cb35f-9bdd-4189-aa80-71260f113709 f2501e59-364d-455e-a6d1-3884f456e6e1 ea2ccfc4-89f5-413f-8702-692b443b2b31 377a213e-085f-41cf-ad89-c8a69f4f0746 3c6b5409-7aab-40d2-97e6-a2dbffb9a894 0e250573-2d7d-4136-8860-6239383aa653 d144eb47-f8df-46d3-9139-8ec7ae8d7487 202f9124-8f08-43e2-8904-4d7bc7f746a3 7bc4cc09-262b-4d13-bde9-ca8118cfb255 78690d44-5f87-47f1-86e1-a7e12c9158b0 394a0d88-0e04-478a-af05-ee6098fac1e1 54d3dbcb-08cf-473e-82f7-6384369217b6 3e859e19-b2f5-453b-8408-3ca0532fe002 c90a6243-ca00-452f-9061-7b46d769e29d a0371af9-2330-48b8-b8a0-2292d67dc3e7 e59e4f75-e456-49a6-bf1b-450fcddeadee ca410a6d-9bb6-462c-b87d-f5f3ca80feca 4c3f8378-28f0-4369-bdca-96d30f215b7e dfa43341-071f-4ad6-bc1b-5101fe079c0b 2a9a1db1-0396-46bc-bf8f-7601dc666f38 c3360ffa-5920-4f0a-a366-1f51640652b5 8a96855d-6f27-4c0d-b3bc-3461b5d42cc4 5ef01daa-0d87-4aab-b350-e1b82ec4709d 302106d2-26c9-4e98-b3c9-5f12e843cae7 106de814-31a2-4d30-9c82-908761c45fea a5d3c9ef-b9c3-4548-a002-3fa3957b8070 9290ad45-4361-4961-aa78-5f774e7ed343 4434ae34-41ce-4679-a61e-dfceb22cdd33 71cab3b3-8afa-436b-8726-5dfac604cee1 11b7fb43-a217-4ffb-9804-f71a952db81f b90d7a88-ab4b-48b8-a949-fe4c1cb58e72 98d0e5d5-da04-439a-92f9-fb9aa47956a6 1346fc7b-cda6-48a2-b368-09de19e6b58f be363c95-ed5f-4dc4-a652-70f4a791fbd1 4d9bd736-f542-44ce-903c-cc25eb3dca4c 4d50be49-5b5d-48df-849a-31d66ad34dbd 7becb50f-7edd-461a-a918-1e84289485b3 ad245b52-b3f3-47bf-8fac-1e5027519a50 64ceb455-98e6-49cd-b23e-4c6f15997d95 fee1b28a-57ec-4573-898b-8e8d745c8a79 49861c41-f36f-46ca-8cee-9f673c980864 45ac1680-f2c3-4fa7-8be8-1c247c9a7fac 9d45dbd8-18de-4cb5-9dd6-72d26a19ec8d 811e1142-b438-4d8b-9341-255a630ce687 4eadf1c7-8fd9-4aef-8a14-e0b18c5cea4a 36ca68cf-125c-4ea4-9a4f-f123fd3960b5 85c23fa7-c48b-4ee3-b1f0-c4556a79a3d0 10310258-e9b2-46bc-bf1b-13aa66848b22 d07ef135-c822-4f52-9334-b1d15867b978 0abcdd04-9e6c-44b0-94d5-8ae4ae1891d2 c70c43d3-0625-4053-9ed9-dc65d0ed072d 3b5c01e8-634b-4dcc-8a78-6ef3541d01fa 99764476-fd3a-4833-8808-c20605484317 c09f7f10-e754-4c24-94ce-7b626a7a99ab 468de7cd-a93c-4b32-b63b-8bb0a93614d6 6d28aa90-55cb-4d91-b60f-ae4361d8a8fe 265ffc3c-9005-42ef-9fe2-b00225e94a51 2062108f-01d9-48a7-be31-0f3dd1520f69 c9f8c28e-f359-4e34-b2b8-1d2e149fbccd 68e6068b-a33b-4928-8c3c-9751a2536d5b b7c54a66-be81-41c9-bd4a-b61751d15c09 18b6db82-d32a-4bb5-a6ec-034c445dcbeb d9beac82-e2d9-4018-9195-b362c99a5115 033f2165-f3a0-4ab9-97f9-92804f330805 6900cdd4-34e8-4532-af2d-b06b11497345 85bbd745-f386-4bb5-8fba-90a8adb11c66 c9f9f5d1-0229-4916-b17b-42417be4fe95 000692c0-92c2-468a-ae00-a789a913dae2 7b5e9d26-4434-4273-8c30-c51f7391fb52 62930cfc-f8b6-4a3a-91c7-95c27c9bdff5 eb655679-1293-4108-a648-ae43ccf1a0f7 31184b6d-107e-4555-a4bd-326aac5baffc 390726b4-b7e1-406b-8125-385587938b06 f827ebe5-28bc-4f2f-8194-2daab7e5ccc2 50d62ae3-33a2-4b70-890f-80d29199b753 98818f0d-0f59-4d2e-a84d-3cea7ba08635 74f30396-f6b8-49cb-b99e-01bfc06218c2 983f7ca5-a669-413f-9ef9-202e9e6c9349 52c94ff4-9964-4c8b-a914-6a6d0c97368e d78c1bd9-0277-48ba-a5d1-63c0be4f415c 8bae5429-d7d9-4e90-a77f-c774ad2f3de4 9ec7cc98-e9d0-4997-872b-13197292fe9f 8c69a9d8-f36f-4783-98c6-77d93bdf770a 58d71edd-6e75-44ef-8587-a38e0d02e98d 84f2b924-3386-4605-8e40-04ca5d0c3ab5 8c06c07d-6d3b-44cb-89e2-b73bb76b39bb 8ec95e38-ff2d-4d3a-ad15-f6b0114dc9e4 d272c09b-f9ab-48c3-b2b2-770c2e8bd472 54679e2c-521c-4823-8613-c9c0fa145e79 742a882d-ff86-4fc0-a3eb-5a3240fa70f2 3680feb4-7f1d-4a1e-a5eb-db4b237b3e44 b0550d8d-568b-435e-8e13-0c3855e2f9d3 cfe37c0c-f375-422a-b381-82d71cfb8edd 8bc94a29-f1bf-467b-b4fa-afd53b771a10 7c24f086-abe4-4fba-a40e-f1ce35bcabe1 8699cc9d-55cf-4d11-a382-37135c83ec93 baa7914c-1db7-46e7-8ef3-a62eb33cb312 c179c4cb-cf57-43f9-91c0-9dd04d7eda8f 247c23a2-e7c5-4a35-8dfa-ee19e69ef609 d2f26355-f52e-45bb-906b-aa44ecc070c3 baadc348-b0e9-4e44-b332-2bedcee40f5d b69210de-74a8-44fb-a1dc-1dbe90147d5d b5cd427a-71bf-44ca-9ad5-4b6f2464e4b8 883f92d1-f88f-485a-8db0-98d13d4ef0a4 41a8e2f5-78f5-4978-a9c6-56bf522e49be 0c88450c-9f7e-4a00-af2d-56517afea586 cd682ebc-5efc-4aee-acbc-c11ca4b97d47 a6940232-0c88-4c8c-86eb-50fbce6c60f5 2ea70764-34c5-4eee-8576-7fc984a2e8a5 d72c4d81-db2a-40d7-8b2d-6a3337e8af69 a2113893-e589-40ed-b242-c0431cbf8e16 452d9588-5329-4a3a-8b5a-8942b78760a9 e779293f-ee88-4020-90c7-af5c42895bfc 14c2ad0b-6397-4a90-9f68-76da6470517b 1fdd00e1-4094-43f9-80be-34505ca8bc3e 3791c682-8338-42a6-bd2a-64ef335a3813 e3f438d0-ae2b-4dbf-93f7-2deca6fe8fe3 6c62587d-9512-48c9-8c6d-a85783f1066f 70a2874a-26a5-4084-947f-fb8accf7a820 747f6836-786f-4e29-a6d3-5cb673c3c23c f4e73826-cc6d-4693-a799-0b75c3319856 b85694bd-2ff5-401b-ab05-9c334e783465 99c608c2-d1ff-4a2b-a0e7-da275a41cf21 d24cd745-8da3-41c7-aa86-cb002589af3e 534c16fa-fe04-4753-82a8-1634e4db5639 6b1744aa-8772-4404-a7af-cb3e172f1b0f e4e27fc4-289b-4432-a704-c39e697fefb8 bfb083e3-501b-4361-8027-e36b71a9c632 28bf06eb-fd9f-491e-b042-13c47fcfb56f f54bf5cf-4493-4362-a4e5-1f89ed674a3c ff3e7569-b7be-46a7-bd00-96255f142cf6 1df9604b-e567-4551-8347-3b833978bad2 a9e59e3d-f136-4895-915d-3eb826c09b1e f8f4be76-a9bd-4080-9f16-4606e3dec87c 4261a909-5766-49a4-8422-6fe635c6b21d c6e3506f-c16d-4384-9cf8-bacb6694b286 a80523db-5a35-44be-84ee-9d46d8fd2588 e29f024b-0987-4561-a124-65cdc4c4543d ce9f5148-be63-4abe-9315-3c34e64a43b3 0e7d1dc5-7099-4754-b0e9-0b89c995f9da 110e8fe1-37a6-4e76-9023-7b41082256e9 a367e9b1-2b61-46fe-aad9-890088817773 cb70c315-6fd3-49e5-9392-28211a2d34c1 e811b292-f7ec-4ed7-915c-4e01212704e1 5bd88c27-9368-4b08-a125-5b7a88f8aa30 ec723e35-7f72-45c0-87ff-258c3fc25b9f c4f547a2-cd78-426f-a735-8856c0741752 17ba096b-0fb5-484e-b552-13ce980d001e 539786cd-fe1c-4fa5-9d5e-ed7db82314e0 d8b47733-26d6-4ba3-8836-164c1ae75c74 78484c2f-9eab-41fb-a06d-fe7d9865fee5 92974403-9786-4001-a256-022057bef105 e6b83a90-c0aa-4a8c-9f5a-aefe2694a251 7a51c82f-a26b-4979-bdd7-8ebd7bc3365d 1bb08923-e0cf-4bbd-9215-db67f300caac 6e9e4227-9b39-41af-af17-e7eabd5f67ae eed2b310-dd68-42d4-b162-44c21a4e6021 e6e8ebf7-aecc-41e1-a876-25be63749174 d03a61b4-2f39-4d9a-b6a6-83be4db90bf0 c4891a2f-bf35-49b8-a0e8-8eef1bdedbaf 08f6a87e-65d2-48a7-ab5f-2781906d74a7 ee8cc597-5487-4c3b-b29e-4e2ef2d1fc0c 6c47edc5-753d-445c-9445-b89a6e6bc233 ed75d0de-ff72-47ad-95e0-66eaacdca4a9 a229526b-5e78-4966-be9a-d982f04a945d b143e6f4-8301-4a59-a5d6-55ef8cd9c4e3 378579cf-b2c5-4248-8e07-3de8a3865b30 472b2610-ec3b-4955-8fe3-ace152560c9f 1d63d7a6-a69e-42d0-afb2-a83d52ffac5b 47ce4f0d-5d98-4f81-9797-3ea9761a5e33 f4f611fe-6100-4c1f-8826-3d4149b8ee3b 09555285-0157-4fcf-abc9-f79971fe1895 3d66906b-bdda-4b03-80cc-3baf0d4a52a5 f3891955-2879-465c-8ad9-88d5848a8c38 52379cbe-ede3-4cfd-ad50-c445df5b3b23 281ef324-e544-4f15-91d5-a6f9184dade5 41156975-6af3-49aa-827f-b93b532fe79b 266975e0-40ab-42c7-8dfc-aeb45884143a 79f056e4-d575-40e3-8e03-7eb31363b61a 58c0d699-5892-48b9-8950-35cb35b97921 f6e6a457-9f73-45d1-b300-7fbe825c913b 9b4e5eac-48be-425b-a8c2-26ef3d0293a0 bf9df26e-0930-4df7-a93a-6f5cc1330708 e5aaa4ff-0355-4897-a7b8-1ccd75ce331b d73f2ed9-99bd-4b6c-9cc8-eec0098b71e1 862b9048-6dcb-4137-8b6d-a9f93cfbb998 3cf4efef-7a50-4adc-a6df-f2143f55212c 27a40f97-e710-4a32-be5a-2e05f3c87466 5c8445b7-73bc-48b9-be1c-e0cf333440d6 0901ff86-ba5b-4002-9bc9-d55d6b9b79dd 07547114-ce79-416c-bada-9547429ba0be 7711da5d-f8fc-41d0-ac5c-94c5b06b8117 41bcb454-0e8d-452b-a9b2-ee0a14ef9b04 20e444a2-fb44-4250-85c4-d640c2d69916 0cd21f4a-ba5a-4068-bbe9-c50eac6d9ded 0fd5b496-35e0-4bd2-b5df-9355d830155e d76783b7-7b66-4e05-837a-a8df3fd27989 8dc7ac8d-2016-4839-8ebf-ee0678a5b160 ce7e8565-8d05-45e5-8bfd-94d0872d6caf 520bf52d-051f-4454-ad31-c4793f4737f0 caaa72cb-ce46-4285-b5af-2a016fcc55bf ae6d086f-79c1-4b9c-b1a9-d0b1d7375d7f c45ed050-41cf-4b01-80fa-4835f1c60b3a ff17f897-1ce5-423a-baa3-05917a3ebc66 3fdf3cc9-ddaf-46d5-aff9-87920b7b8701 eb83762e-abed-42e2-aa38-aa774b446edb 60fc821c-7e16-4ccc-b6cc-b9e23317d168 bdbd477e-1caf-4064-a374-66585ef929ef fd172b6b-60bf-4f79-bcf4-66cefaf136a1 a1a3d2e9-6f40-4792-8a11-f82afe8fafd1 fd493494-f8a4-46a1-b9c1-e0a3121d45ce f674d9cd-30ce-46d6-8f82-f83dc184ab92 c9225624-be33-4238-9317-6815d1cd0600 248ef307-8544-4f55-a72f-7172e728cdc1 a430e0ef-6213-4504-b74d-3cacc5cf49c4 dcc5322f-ae82-4b68-b45f-ccec1a00ee1e d23c3596-59f1-43bb-b36b-f434182a4b6b 86711e9e-b663-42a0-90e3-45f74c70610f 7237f854-a650-471e-a434-b546d5bf49e7 be00e31d-ef82-4fef-89ad-3419702e5a2f a419eeb7-e22f-4d9f-b821-6365f5c26de0 8ca4f6cb-0cf9-42da-9475-d2ea4d139d05 0c531a48-082c-41fd-b77f-e543810cf36c 960c8dc8-6ff6-4693-9bf0-4418502ffefd 9abdf7f2-d89b-445e-93b3-a8471016bde6 105eb476-3604-4cd8-9a8c-783563155fb7 64ca0a45-b857-4aa1-9b36-5b1529f10a67 dcf4d686-1fc4-4b9b-8330-c6da678ed61f fac0efdc-a390-46c9-8911-ca8fec116418 2b986815-5bb4-4bc8-8130-895a27022bda e32b0a17-c6c2-4ec6-a42e-eafc36fd8a5e 2c8f04e3-717b-466c-8b7e-de337050e52c ac08de5f-737c-4d37-a8d8-9d5be8a9a317 4e309cc7-1f18-40f6-a97d-99d01ffa5dd4 61eb2160-05a6-476e-bf7b-2ab97322f8be 34c9dbdc-3bc9-4f39-80c9-4be8d79b2639 78ef3a0d-be3c-4b6b-8901-2ec83399cf39 c381a8f7-e9ea-4c23-b6ed-548ed6a449ed 37e5adf5-9185-4e4a-90dc-0f84d25f1afe 7e938b39-9753-41a9-b7b2-9685c31392d3 39f6eac8-1c5d-4ea5-b325-143fd123eafe 3340a561-78c8-4595-8d4f-b543ea976287 b878a979-855c-4193-a3b7-f20bb5e651a8 57f18483-6070-488e-ac03-3e4ddf2c4780 4d96d9b2-484d-4452-b634-1efe521acb4d 251f6865-302c-498c-acc2-c55b21070b06 f663c0c0-9eec-4a64-9290-0d1f03462db5 7747304f-371c-4c92-8884-409c0a80d41a 25e2fff1-17c1-4018-8a8b-ddbd85e84cbe 274d49a6-cc14-4d66-bc6b-56a115e303ca a036bfb0-0294-40c9-92a1-d7888eeecc63 42273941-d7ac-4b56-9e08-d6c85d6a6d6e c35f111c-ebd3-49b4-b154-5a35bca34625 abf3b832-e2cd-4663-82e4-fb9f64c7c8dd ab0cb805-05e5-42fa-8047-049be9e1dd84 cb2b4a8d-52c6-4a52-bd28-553d544d2b4d 5a16d880-0615-4aa0-b00c-f7e5acc36698 77703ea9-5a5c-47eb-b54e-fff206940e2e d8392d18-f9cd-4e61-8741-98cb0e64f340 c0324983-baf9-4795-a822-fd60f9319a99 2137e2f0-10d6-48ac-ac08-7de32f755072 ce7cfaf7-06e5-4f35-b97c-a39984da64e5 bc4e3a55-2b0e-44b0-b721-907bbeb9c661 c5681ac0-5764-4ffe-8b45-b747f31f39f8 423b3319-9259-40e8-8cc5-758909f51111 76d60ee1-24e7-4a86-b659-21e7289c7b45 7b6b5005-91fc-4bb0-9a57-532a5c47c73e 25470491-72bc-401f-b158-1f9cb8ac2387 a03f75f5-5c4f-4879-a577-0c0d1bb33afc 5b41c8db-7185-402b-8380-10aadd2d8b18 9947259c-890c-4313-8097-d70becc94cf9 3f07703c-e7b3-44d0-9c2a-c8b3d01e5312 a0072ea8-baf5-43de-92f1-8f5af627f456 30b0f0f1-3d50-42b1-86a3-f89ae9cff2a4 24bcea7b-d92a-4b94-a6ed-7d8c53f4ca29 7a30fda5-2b83-42bb-aba1-ca68c0549d7a 00c785aa-622e-409a-852c-ee50324ecc80 aaaff1dd-63dd-42af-a921-372e2f4bb4c2 e1b7e237-fb65-494b-b8cf-527c384025b5 a292aabf-af53-40c0-8624-b038797a1d7b 437377e7-38f1-4ba1-b201-bc39161c5466 ecbafbb9-1038-4fcc-8912-ac754926055c cc004eed-906f-4608-83b0-b16086c7681c 4ceccdaf-875f-4478-9738-c573b4f71019 c68b1ee8-cfd4-4b4f-919a-1cd5ed5260dc ed198571-e16b-421e-8d34-6cd14c4718c1 56cee0c2-0e3f-44ca-adf1-7f77c23a968d 70f32165-f1bc-496a-a3dd-3e6549a2b111 787d0cdd-2c65-44b1-b5e8-b6ad1bfa76b2 731e1533-5c56-431a-87a6-2a48b3428f9b 386b9dbd-f147-41cf-bdac-b62077b1478d c6f0004a-c4ee-42c4-b126-9b4d6582d927 09aadfb4-831f-482b-a549-78d0cb48abf8 2627c079-851d-49ec-b7f3-c4381097a397 03a7f7d4-d9fd-4a18-a365-9627a487627c 287647f6-bec5-4fc5-b6e2-9a4ba0657dba 94b58b9c-7099-44d0-9319-66f7ce932654 1f9b8433-da34-4bdc-a0ca-df8bfb5e49ac 62b94d6d-f7ec-474b-afc8-b83cb48e2004 f23ccd28-9b07-4d14-8594-b1a02cdbce49 bdf06680-c446-4e00-8f47-0685e75b2dd5 76b11f2d-4193-481f-b719-7303153dc200 ca797c63-f45b-4e36-ba05-c6ce4b3ea23c cba846ff-c5cc-4fbf-8977-72707cf36ef5 f2b353bb-dab5-406a-bf10-4fa4c82db9fa 9e893175-e510-489e-b2da-927609677d8f 4022f012-1e04-4458-adc0-0865746e1b18 f88e131e-b784-4c31-9024-f6da0d9fa4cc 43dfe6db-9edd-4f75-9374-0986a2745542 0624509b-ce28-4564-a6b8-9f5f9928ca99 3b37c1e4-834b-4251-9938-f6d2e332cd94 39c7c0b1-7970-4145-8d18-aefdbf7e8da9 5862517c-1a29-4d41-ba4d-a97bffe92756 8ab4621a-78f9-4051-b6d1-d6e0a7416201 f35132be-2307-4f1c-ba9e-980156854815 9f004d69-703f-4ad9-9956-edeb067fa545 09d89daa-443f-497b-9a6f-0b8666bbb6de 36845711-3cf3-4e56-9303-874df94e1466 57a03c03-8d82-40a2-87ef-1963ade65eec e7369697-e4e7-4248-b11d-7000035947f4 46bba125-1b68-4ac4-8ae0-77f00ad2224c f241448b-d26e-47e1-bf0b-c31bebd5084a 1e94c936-4c90-4861-b8a1-446ef13a0c0a 7ba39ad3-128f-4c86-b95c-6fb61342b752 d7c57eb3-a0b9-4d3d-9877-81b5cc93a139 9fd09bab-4e4b-451f-a7b1-30e7da4ffbc4 10aa13de-f90b-4293-9c60-631a3b2ab559 b58a6589-b8dc-481a-abac-a5fdedb7cef1 a48c6923-8abd-4594-a730-557ae64654ea ef19abed-fb9e-43e6-8073-cd4c2399f52c f2937d2d-425c-415f-99ee-a70f2606650f 269658d4-5c60-478a-9b1c-8d1f69b4ac8b 81d3a16c-a936-446d-8ad4-bf5a5fb339d2 1589a7be-4776-4019-ad47-8200c06eeae7 871fcaec-f719-4710-a3ae-abe6534a82b0 6d9e5b1b-0423-4b5a-9b93-8a84545b4a19 287e3377-51cd-4f6a-9c66-20526a1c6a37 68ce3230-04f8-40a8-92dd-085cee639a32 dafed067-b2cc-4483-b77f-f69873b1fb9d 12d2d491-cd3f-44c4-8cc7-28cbe5b3b24e 1f352bf2-acb6-4142-8021-1acf77b9a91d 9ddede3f-5e57-4b69-85e8-2e7be1600c78 940bac28-d9e8-45c8-8c0a-9e4be288e389 53cf93e2-5c65-4d7b-8db3-2b3c5852bc2a 1e198744-460a-454d-868f-d4a793f877b6 6b5c4cd3-a2f0-4f6a-8d27-92746ffaac63 7ca5f1cc-7e16-4c94-a1a7-eeb6756520e1 ad10c1d4-9a09-43d9-8290-f2d8c9909a3c aa04d12f-8cd7-417e-8ae1-dc654c183d10 cac81f65-4d69-405f-9093-bc9bbf5b4e71 4e79d753-eecb-4026-b47d-2cd2a66124ee b2add371-38e0-4a57-9d6f-99f8959f5ba4 7e6cd57b-0d8e-4ac2-8886-6290bb9747f2 ee958096-8e3e-4d52-aa84-654f535c772c f8a20f91-6dce-4ac4-b8ef-80db6cd544d2 d77d1a26-9d5e-466f-ae61-9c06870126db 573dfb7b-bea7-4760-9bd9-8fc61fef6381 ff9ec0a0-eab4-4661-8f0a-bf7fc7d9448e 77414f0c-7538-46d6-96af-9474737ba1ff ade99aed-3543-4e6e-865c-84f41fa9d6db 464f4aed-ce6c-40d1-9786-d838ade10126 9f4b1a28-0b6f-4b76-86cc-8a8a63d4bd9b b91821dc-2b29-4a44-978b-373ad5b309b6 6a8c8a2c-f589-4422-a6da-cddbd74c2f0f 40990ad0-1917-4247-85ed-b08fca0610a7 25e80ca3-9943-45bc-b371-346aaf5ba44c 097cebbc-0835-4bda-9818-55c18f9c9d47 bd1c388c-4c46-4e4a-a5e1-9d72f88f214b a5e684f4-53a2-4780-987a-4d116b37c6b1 f07c9519-6915-478b-95a8-4a18ddb1c953 766e2848-2c71-4f26-9599-a1a50bdc7e0d 36d07e9f-386b-484d-94b3-59fa20e0f39e 7a0f0ff9-a250-4155-a281-5f3efc40ea96 07000124-6cac-4746-8c2b-6eeafc8b1050 c4d78be6-8dfa-43b6-94f9-9c3a41bc75ea 945a332c-bd70-447e-a8fd-c48346cf556f 2ebcc22f-8e27-4e37-a8c7-1d759f105bff 5b345ded-0693-40dd-a85f-2c6752e2b884 0c930d17-6415-4f4a-b4fc-c8328293b542 9a99ec03-88cd-4437-bef0-74c037669825 fdf618bd-0bc6-468f-8298-362a004b89b1 1b9cb7fa-7209-4be0-a225-f6b5f57db07a 5e0024e1-f860-4299-ace7-007d01d68a51 abaf4cc4-ccd9-4e67-aaef-8ca0a275f288 f0a4305d-9b5f-45b5-b950-06cacfa27a6b 6e5391dc-4a0e-4c23-89e5-fdc90dfd9c1b 584d7eba-9560-4d8b-876e-8146d403a84b 724ba4a0-ca29-41d4-8319-ed91387574de c68f17c9-93b4-4eba-970c-ab2a347d601a 1d0ab60c-ba31-4712-b3e7-93f68a2a8bcb 89238544-7913-4fce-92ee-109240b286b2 b9cb4e67-a787-4fb8-b97d-9255f7e56f62 8fa5a345-a0f5-45f8-ad95-050ccaac2cae 9fb9c002-10f9-44c0-92e2-e6a3e3d6eb67 7f323428-6b18-4041-b703-668ddfadd19e 9ad007e9-58ad-4dca-8065-8f01855785ba 3d340a7b-8c92-4788-b1f2-88ccde227428 b7723c65-e161-48cf-9c3c-a13701b9c846 fbb86020-498d-438c-9ab3-a218a924c34d d45e7ee3-4754-4f86-a81b-1c1cffefeb5b 72f476e4-4a99-4903-9215-32f2d5df4f41 291df31b-e404-466b-9045-3e9b7d4b27cd b353f759-2acc-46cc-9de3-244a65c2187a 0b381c5c-d890-4a90-b3a4-0309d00bcd2c 9b7018f2-7fd7-4a3d-be31-9f0048f1eba9 43381f41-79e0-4826-a247-c9cd6bf588fb 4efdd0fc-34ab-4cfc-b021-aa1bbcc4d79f 1f27ef31-1244-4758-b1c3-982183a8a0ab 41d2375a-1d7f-43eb-8837-a1fd7e1ace02 36ef0fb6-d070-445f-9fac-a0ef989cbc1d 52cecd84-2ab5-479e-842f-e5969e1d0249 33efbf06-0bed-405b-9aa3-19c9d1211d8e 439108d3-4864-4470-a317-f96b7795b22f e1a4754a-b167-4770-8283-e0ccf4db575f a86c4fa1-c733-4790-aba5-d532d1cc2f16 6aeb70b9-96c1-4c74-bee1-1465bf1de165 35680791-2f5c-45ed-bd9c-bb339b6260bf 6402a237-23c1-4524-ad05-2694032de7ee 808f9958-a464-41c1-982b-40c04f154bc0 1a910c33-14dc-445d-af97-ec49e931cb65 1434ee8d-bada-44df-93b5-b88669c75a08 91d99351-69b2-4cbf-984c-de78f213c5ae ac30d2bb-a811-4f40-8598-f06aa15d14a8 67e31999-fa92-4047-963a-3039bedf284b 6087a75c-40ca-431c-8d14-f64064bb5361 8dd68a02-f944-4541-a013-c60f27de546b a7739f47-582d-4fa3-8f6d-8c6f9693f990 db5f5881-8c94-439d-9ff0-c6fb70f93ec0 d594e41f-42be-444c-8719-28611b64b16b dee1cedb-224f-43c8-83f2-508851e67fdc 7dd30e5e-d5e5-434a-8829-66ac64f5b0a5 74b11e76-57cb-435c-ae3c-e775eb91b571 0901008d-1424-4c2a-8943-39415c2bd465 3d312d68-ac10-49f4-974f-45a69645ccc2 6aef17c5-2171-438e-80bb-1f6d55fd1bf2 984c568f-18e7-498f-9904-d6ccb15b786f af47c281-7d9b-4f71-8dd6-57de3b4c0ba6 c8969859-2f9c-46ab-84ed-d5463557362d 7f62a6e6-f89b-4863-addf-fc8eb3f443f0 bd24f678-0bcf-49e8-90dd-77e5c3aff47a db6c2e30-a376-4fbc-a898-908bcfe56d35 d731a829-2fce-4843-9c8a-a8c59d4ab593 f27281a0-2bae-43a3-98b8-486a1b5092bf 2f2f6ade-ce10-4507-9881-38f469902626 4060fc73-7d80-4d1b-ba9a-2c83e363bdb7 a0bbbb99-0e0f-487f-b974-fa1e6f03df1c 10f11664-5193-4d5b-bc77-3a90a1f15c8b 2f82db15-0c90-4b3c-b220-4fec3c5bc6ad 79b6a41b-55aa-4dd0-bd7d-e2f4beed636b c1656083-71b8-4bc3-87fc-2054413bc36e 9a718b9a-1475-4ae5-97de-5a3c6de74dd6 0dfdd9e6-31b6-4352-9c0e-dd780602f49d b8791639-3160-49e2-a017-e4a3b3b4e87f e63f49dc-56c6-4907-b0f3-8742880bf10d b9c0ecf5-acea-4e0f-9a29-c7fe69497e95 46485da3-dc1b-4356-8073-3e0ff61d4b40 cf55d147-1e0b-4e28-8060-1fcb7d4c0945 562f8575-bf64-46f3-8d78-c8731dc3f78d cf647207-001e-4606-bef4-54f764764db3 457088e0-9b45-4e6b-bd35-833f437b58db 3caefaa8-8731-4242-acd6-cda6aa7356ab 0a3d8e0c-3da4-407c-a0e8-25e2a17266b2 6cb0502a-63ec-4b72-be4b-ef2a949d5a7a 16f5de56-bbb9-41e0-bf9f-18f57f4775e4 cd200fef-3caa-462a-8e68-4028bf28e785 5bd6d92a-6b40-45a2-b9fc-985966f3dc4a 93ed54a8-2eb8-4a81-808d-eede49dab3af 0f11da74-aedc-4f88-9aee-aee3344394b9 198d82ae-3275-4790-af95-e830f88f0cbb ed5ab4e6-0c3d-4f4c-a1f9-cf55e4264573 7bb3c13e-ed62-4389-94bf-ef34886a3df8 fe035aeb-3c0d-4476-81fe-a74064e93926 20b5425f-d286-438d-8f8c-054b000c698f 9626e0a2-285d-40d7-8da8-2cac6c0286a7 fc4fb273-1354-4653-896e-87ccb35798fa fce908a2-876b-4d88-a84a-a7ba18c3a62c 82aacf9c-0eed-4696-80dc-62b3ce3865f2 267f7a27-413d-4448-901e-cd603fa32f1e 0fe6cc6c-4b02-47a2-a509-2078a4ace0be 82159d72-6294-42f9-9d11-5cd77b8bdc1d 8dd4b783-3967-4612-a2c5-4f266275edb3 7937ab6c-f798-49fa-827c-cc9088b93414 4598467e-3eff-4e0e-a014-da0e5e8200e1 6716e835-e4f6-4875-90c2-78b449c30f4a eeabf4ac-3088-47bd-94e3-9d6887f975d3 50d92b83-ef2f-492b-a385-c501607ddcf0 cd6bd5cc-4b9f-4dab-90a7-ede642816947 7a830e70-908c-41e9-b71c-715a9e2c5391 235ade09-cd09-4c64-bd42-c73f606aa849 0bcc578b-974c-400f-8995-eea332fd831b 9f02b429-2540-4958-a482-3b4bce887949 f694d85e-cd9d-4ff5-a4ad-459bd4ff05d9 8a6480ff-23cb-47a6-ac03-7a37b57a1b7e 17351f19-4f81-4cbf-842b-aa7dd9f21eeb dcaf09cb-d3fa-448a-a621-f3ae69efa684 4c04bac7-96a1-4c09-90a4-f9a831120c51 97143a72-e96c-4bfe-8e60-72f810eec9b1 b30c329e-26c5-4033-bd21-f9db17851026 e954e54c-a72c-4a07-bb2d-c93c8de0a9c5 4daaf585-7bef-42ab-9a1c-9acf81f8bd61 0f95a34a-52d9-4a7a-8618-8e0b2d39c525 56ee6f64-ff8e-4b1f-8bf9-8d620f9327c8 054e9703-4ec9-4894-adff-6dbb1c4800c1 a951d46b-e14f-4801-aa03-c4c3e4b302cc 6a1386d2-4e35-451e-8ec7-610dd82cc617 3fbae50f-b8b1-40dc-a9b5-1dfaa693abec f4d4c53e-8f4e-4a37-9b97-664584c247a1 b9303194-bcee-4564-a0e5-f7448f6341d0 1e1af710-4910-418f-a0be-696bf28ed39f c25380f5-1370-44ad-8c4b-1eb03f2914b8 ca38ee6e-29d0-4f0b-be23-ff1a4440609c 8da679f0-9d16-4b4b-a9ea-0e05eed25f4e 581ccdba-fcfc-47a9-9496-175f88641fee a7b22133-b02a-416e-a09c-41271b414bcb 3eecc468-fafa-44dc-a0e4-9b704da934c2 9e54b5f1-67dc-4109-bfaa-4011ba5f1407 71fe6ca5-fd15-4f76-b6a2-4734633b4801 e7000ba0-7b8c-441a-ac10-4ccff0c3d307 e12563d9-b347-44ba-bd0d-98cba4333882 ce284e93-698c-4bd2-b022-d5f8b09590f1 a98c5fb7-3102-4ed1-8448-b4d782acd9b2 da70e208-fd89-4872-87eb-90fb1c3cb9b4 3a47c792-c133-462e-8b13-55213ea59c01 c8d71d81-38a3-492b-99ea-048ad97d7595 53f8ec85-7def-453e-b77a-043a1d0e97f2 74999629-ed11-48b9-b705-a30e411e9f02 6def9461-1862-46cf-8ae2-834fa1c79d50 62e6b4d7-a666-44c3-af40-a454eeec4515 7f5e7ba3-3314-4094-a036-f778b99fa68e 39c3d93d-3463-4b8f-860e-7ef9ab52efd6 c99f2807-d96b-4b45-918c-c03d19f25a1b 85f4c32a-e62e-483c-9566-494b43996f63 f54e2ad9-0dab-442b-a2fc-ad1d101de809 bd33d27a-49ba-4bb9-b637-5f200a9a931a e3927dd5-1c43-4bc1-b808-98ff6e9bc6d3 4f1caa0c-2b8c-4403-8262-9fdc59fac541 8bffd812-ded4-4a2c-9fcc-d8800269dc61 e0386a88-f572-4cdb-ae28-f27d8644cd3b 73e0dad8-0383-4e07-b0e4-dc227a52d333 27781da5-8972-4a5a-99ec-19e5c629bd23 7f724d24-b134-49c2-b800-825425794427 23cefa3d-82d1-461b-80f9-a082b145b658 68cbd410-ae0f-4bb3-a0d0-d18c812d0f56 0485bc8d-57c1-4d9d-8c7a-0e326314e5cc f7842c9b-7a1a-4e24-b58e-6968a493f47e 8c3e516d-832c-4eee-a191-fa10831838a1 9755b4f2-235e-46fd-8b56-6f372ca36e55 df672b4b-c783-49a8-bd0a-9006b8cc6573 59bebb04-56ad-4715-aaf1-1eadc073e1c3 762d4227-de18-4988-96bb-73cb153b5d60 240bced7-a2a6-4047-b04d-cd5fe6a667bc 45869f71-35c7-4b97-825b-3cf34cab0904 e2787d4a-893f-4ff0-9a0c-4702d889b91f 02f932ea-f6f9-4ca3-8910-3b57eaefa4a9 8e7fac94-5a26-4b79-8ba3-79762e0317a1 a579462f-1af7-4410-b80b-53f0a5277f8c e0c309c9-bcbf-4ace-a6a2-5af51e74d982 6acb5693-d908-4ed9-81f4-971f43b7798b f4860c1a-d050-488a-a75f-6a8caba2fd13 ac856e94-76d6-411c-8001-43da7a595bcf c06c0ab3-540f-4854-9aaa-f6c424e3a99f ce330fb5-7234-4fb6-a58a-0e0e42de0086 7e77d301-f094-4918-9147-a46045e4e5f4 4e8d06ff-fd4c-42bf-b3cf-5a15f9ef69c9 7d518483-170d-4748-8ae9-9c70123bb545 33f1ece7-9635-4a37-8faa-eb595bd478d7 09af8b83-988f-4a29-9799-cb9282a13a6a 60ee6443-9327-4a6e-85df-03fd3ac3e32c 263002b0-5f38-4125-b824-b98e01acd8a1 b0b5d7c6-b42c-4588-803d-766179f2cabe e3cbc3df-3143-4595-840e-edf4157e91fb 430cc480-d38e-4ba9-b768-a0b57745f3d9 3f6ffab5-d28c-4679-9cd3-5f3c02f96f12 2a062f84-6ed5-46fa-aadc-dcb204c284de dc842b73-b833-4520-a5a4-0ea681313186 2218c099-6a21-4925-b42a-a5da00c61385 bccb8d71-246f-426e-a4f7-bc949e2ba3fc 056785b6-c139-419c-b4c3-2d83910b8af6 abf886ee-db57-45d3-afd3-1af666178062 d5123f08-bfbb-4c11-9489-d407ceffa928 1f968608-38ad-42b8-bc62-4bfaecbce0c4 d706980f-983a-4ac4-8e17-79dc822b523a d31e1c31-bc69-4dee-aeac-005c2a3c4cf3 93a5723f-655e-40e3-8511-6b9105f5abcb 86451b1f-b08e-4ebb-b5ef-097398698d82 f5d55c50-e485-48b7-9299-52024391c0c0 6bdd1488-f224-4f3e-99b8-8f75cba10be5 f88dfc95-58da-42bf-a6e3-d38a0ce41c94 4a727ca1-27b7-4140-8f06-c8aeae9953f7 a3a373b5-e32a-419c-820f-90e92f5be2f5 da067722-ed8b-4d2d-b7b9-4f03f6529831 7db812cb-bb95-4ce9-9a9c-0653ce4256b7 ce0ef5f4-3932-4692-a631-d533cb725f50 42f49527-5755-4516-80d9-39edce49871b 2d3e19c9-dff4-4d33-a5e9-d0fa61c13d4f 17f75600-f0cc-4874-b0ea-6205ec17e0bb f7186e40-a4db-4288-9c67-5b850d632f6b 28394629-5e0a-44dc-b60a-64bd279efebc 176798ed-2f2d-4ae3-acc0-8a51797d139f b12636bf-c846-4a0a-b3a0-23c9924e00ad 10b43e71-5b55-47bd-908d-6b675aded5f5 b1b46841-704d-4d67-b8be-9513dfb6f685 e3f98cd4-9cb2-4857-b789-9fbf426884bc 20af7e85-4b9e-4cd5-a410-ec9ee82f7488 5b21dd3b-80cd-440f-bf2c-df5c3d68ad04 3ebf5010-83c1-466f-b381-33db0b525bb7 caac6247-9bd0-4df8-97aa-a399f91570f3 e3e12b05-e2ba-4c3b-a7f6-b875da0804dd 11698f94-05ed-4f5b-ba81-b83c4fc44477 b86ceee0-8330-4eac-ac76-c1ea167c4a34 c4a9702f-be90-4c00-b133-d5888d7c8d04 200891c0-05a8-4f2c-8ccc-bdd2faa51c21 d57ef4e8-1b6c-46ad-b31c-d15e7d354172 727d76ae-fa10-4f32-8a81-b7ebdac024ac 4f70b3c8-86d0-4292-94a0-950c329fd445 796372d8-62fa-4c8a-ba01-614af0d43af4 1005a499-e32b-414c-a50c-ccd15c5d0b05 acbc5c36-161d-4ccd-bcc7-2745f48aac50 af3a3598-c66e-46e9-acee-a80387caea88 14d43f1a-a942-47ad-9e87-603f86d19b89 013d2e0c-4c40-4a8d-962b-4a59df7cfa7f f1d26fbd-5504-49b3-a9c1-2946d18b7b24 cecd8e05-4b80-43b0-97c3-a8752ca552ba eecc322e-dc0e-42a7-af44-d01f2c5c2482 efaa51be-b2b3-445b-960d-1b14128528cb 4a5f2262-7cb2-47f9-b3bb-03c27a1819e4 3b99a0d4-c0f5-42ef-afcc-e4d1be56437a c605f85c-27f1-4c38-a69b-e9f3f2eaaf03 0c269c3a-de88-4dc8-9021-f58189038ff1 e3ab6fb1-baca-4e61-b7de-cf4161956d46 fb4957e3-bbe3-4b3d-a211-a85bdf9be5a0 7ee7f37a-00f4-47f8-b066-7d7a6a926d39 20da4782-e38a-41cb-914f-b2531dfcbce1 8d582fcc-aee2-41a0-8d86-eaa79c075bd8 e37422a3-1d12-416f-8ddb-e282e65f0d50 c8d6c9ae-d930-43a0-bb39-9483406b5ea0 89918c55-5a85-4985-bd24-b219da8f5f0a d097a140-e9b6-4df6-bae3-4508ea8f3971 b9d919bf-63e0-4136-b28d-4f8533afe682 74ed82fb-ae47-4354-91f5-efdc69daf0cd c082218c-e090-4c98-a153-57178b1dac9b 7719a850-bbef-4939-b871-52a75d2ddad2 999522a7-b8df-4023-8aa4-727661e865ca 68b96388-8f45-428b-84dd-65f88b76c259 f6fd5814-70fd-421b-98ce-2e35c0b8adb4 42459f9a-a452-4f44-84ef-90518ae49399 3573e910-4733-447b-bd89-e933bfd07ede 39e47700-24a2-494c-bbaf-920b15b3d571 cd0ff8fa-7e48-4b99-b4a5-be3799b461a0 234586b3-3eae-47f8-a3fa-e7ddac9a3c84 ca378122-a049-4e8c-b5bf-4e8e051302be 8b794043-1983-4985-be72-f22150c663c7 aa93eb52-671d-42c8-bf40-398dc584b8c4 a13faf34-a0dd-4b6b-a0c1-c8258f021f30 a3a2da9a-9016-404f-b42b-c00aa7673321 024ea6b1-d6fb-46d6-aa2f-a5f71dee9081 efefbb29-0581-461b-b24d-45c060defc43 a45aae40-a5a0-4ce9-8e04-f014a609cb83 02f3ec42-4eae-4651-b670-5ee14d1b3052 39967f22-eaa7-4260-a536-0d877163f764 90b802fd-18ae-4a9c-b1f7-f7ede855f033 f0e0b91b-06a9-431d-ad16-1cd0c92bbff8 a1118b54-3c3d-48cb-accd-008490325613 3ff1287f-d6af-44b4-be92-8c14cebee951 5bf4b519-0276-4cfe-8b26-a9902530678d 3027b986-099c-43c7-bba4-ae4515bc5a1c cc6fe27e-b9e3-403f-bc80-d72e16fb98c3 5ebbda4e-db6f-4390-bac2-71bdd88bbe33 6acf1006-71b0-4b42-aa17-26bb9bcec2ee b67c8310-23e9-4262-963c-437047efbd2c d3e0fc27-64ac-4c0f-99dc-1923b632a690 22066da1-b280-42a0-afd4-d1c0ae7ecae9 00f502c2-a4a6-44ec-bc02-d7a2f74da114 2b52e867-5381-47e5-a182-5f1288135c68 6a830e3b-7c38-491d-bd9e-cb4e4efa65b0 7b3c6a56-460b-42a3-b853-c135eead1dfa 06d7aa35-add7-42c2-bf41-cac1800d56d4 93d61b07-e73e-4a39-955c-b52c37535394 2073506d-26b9-4720-b9d4-4c543baa3c09 a88d6d56-9493-4d3a-8cd6-dfac754a4b24 50f7d251-634d-410b-9b97-feab031c4196 ea9e9fc0-51e2-4e98-8a22-667e59177785 834211d0-50f3-4b1a-b491-2ea7d4e77381 c86d873b-fae4-4955-9735-5920e6466820 d732a779-fe38-4c4d-a7ac-21784d78910b 871a16bc-d0a5-4ef7-b119-142f8e3c7b1c 3ea029ce-b6a0-42ef-8d5c-4b069e2758d2 6abe2a4d-f59d-46ac-aeab-983b57763783 7d1a320d-d0b1-491f-9147-3d956c21782f 856d6c11-5ca5-4878-b83c-b94b9b955ec2 8ab916a9-6d10-494e-ba9e-7e5a94f5d7a1 6b3031ce-cfbc-4c3e-9c8c-0852efbe432e 5cf1ae24-85ae-416e-9473-14bff9e6e301 bfbd7a4f-fb1f-406c-87f8-5772d3c82635 b3bbf513-12be-4c56-900a-e94a61d34e84 0aac670b-f402-44b5-a0b6-229ac5eb11b8 deaeacb1-d100-464a-90d0-6665f7831710 261debec-9d89-4ec1-b2a8-38f619d5d1eb b7dfa9db-8131-4b51-a564-89cb58c44862 228f80b2-7270-4076-9074-0d20d8efd119 3ccc41eb-5d55-4f71-a5f9-bef50b1210be ce4f8817-451b-4624-a164-e1c83c928381 e87e155a-fe60-45a0-b617-7d65376e15e6 230ebdba-8b43-41e5-b61e-09b8d6d8a7bb 28c0f20a-38c5-4ba6-9aba-4341ef1541df 1bf33059-bc80-487d-9aa7-b7a551acef42 00b16d93-17bf-494d-bf05-9de985860649 9a3fbea9-2aa9-4886-8d71-0f01a6dddf95 d3601a94-da0b-4706-b54d-7363546b28cd 8aa8f4cd-c3e7-4364-bf37-d900ade42bfd e1a49ea5-f6da-4158-8ee2-1918f7e03e36 cbead882-ea43-476f-aafb-140f760a7abc 45e2a03b-e641-46d8-b5b6-1efa9be9ff31 1a871218-8b57-4208-9268-b5d2c5d0506d 4480912d-447e-405c-8299-a594e1b35378 63bc00b2-b80d-4676-a5c7-1ff246185b85 7ae8b396-19ca-41b8-b304-097d9983c86c 7d0ff9f7-6e06-43f5-9af5-5a18c574822d 480783d6-a0cb-4598-85ec-67870654d1f9 172f947f-97e7-4e91-838a-d2225d123c42 d35e1f50-09bf-460e-b067-61738f9f824c edf5851c-9337-4436-800a-48526cf0bec3 a3059d08-9863-4c2a-98f0-9861833155a8 835588e9-4f5a-40c2-a15a-670559291d8a e1807e5f-ffff-40e7-b708-16b6d5e2b391 347a40b3-4256-47c8-98f6-c0d89296f0b0 5919a5e0-37e6-454e-a4fd-bb7629f9c871 829a7cb9-74d8-4536-8c1c-0a0919abb130 2dce0689-b993-4c53-8e73-93cd6974e076 79e073d7-f2eb-4d20-9738-748ba842b601 d9cf359f-0dee-494e-9c9b-8b19d6174cf5 54ef028a-5f3a-46fd-801e-1060df74a04b 4525bbec-e0c6-4c59-b74f-ab1be57e3441 a32da1c4-4152-4282-984a-211fb6e67648 60e16543-0760-410a-9cfa-88f77696b5fd 42e2992e-8514-4e49-a12b-dbf1f1b9c749 c8520577-0aa7-4887-b2d7-05f733ee7419 5bdf5e5e-3a60-4ade-8cb2-1cfcb81ba129 5f8bd9de-7a39-4ba5-a925-114217953878 a2c22948-c59e-41dc-9bc3-35d14dbe42d2 eb2be867-ebef-47b9-ac82-0e1b5f33a11c 4ccaa198-48b4-4e8b-9145-87da41e3bb53 8e97630d-005a-4173-8ae1-719be80c0079 459986e6-ec28-4a5b-bf30-eae69f7a23bf fd18f75d-e9cc-4c40-ba3e-0cd6900852dc 6d42de0b-a53b-4005-a0f3-622d6d7b6330 b8ec1e15-8b27-4418-a9e4-732b6c7a94a5 2b50fa8e-dfa7-401d-9a0a-e88c43674b42 b82481fa-6f03-49f3-95fd-5caa0a7a5597 83eacfe0-e893-4c3a-a0bc-45997bed0966 0f5a2d3f-8212-4bb3-96db-43844a219e9b b61dca55-82f8-453b-8fef-b4af368cfc77 41c8a2d7-18bb-4006-a5c1-139c07b21549 f0695beb-9bfd-40fc-9581-4e8eca8da25c e23875d4-f666-4c6e-b20f-d5827be3b9cf c88037fe-ab54-4650-b0cc-a8d20802dd2d 619a305a-33f3-4c0a-ab0e-b2287f27f6a2 e2fd79d1-05a9-4f4b-84a3-a153b171d2ad 14b3826f-5ebc-42f3-b694-87d93bd538ff 3cda2ac2-7412-4232-8787-0da92ebefcb1 efaf16e4-47fc-44d3-b079-757255b898bb e67f6165-b1e2-4c5d-b69d-c2c239aa5335 da79bec2-af61-42c3-adc2-7046d0912995 6a88a067-9b8a-4342-acb6-729dd187fdb4 fcea2138-4b01-4632-b77f-2c2b2276b1a4 47e6867f-be31-44f8-a09c-722ff1c05ab9 befb18fc-de73-4b89-a1e4-9dcf12f86df4 06ed50b0-772e-4c27-a22c-2a935ba37a6a fc096949-9a46-439d-90fb-e42e81e5aba2 c6f1235e-2e02-4205-b565-7cb263606bb7 df432dee-df09-4eb1-aa4c-5bf5b8341d6e bdbab5e4-7185-4c24-b930-6313a328e973 f8ce310b-1ecf-469e-8878-1dab6e3c549f 5e3e9dd0-5a5b-4ee1-a5b5-c7c8a418aaf2 bbb16f45-cdab-4f95-aec0-f3bde8d55619 37e1eed5-0aac-49a2-ac55-fa03e4a26096 21373dae-cb8f-43e1-adf4-090522ecc6b4 b222e3f9-2f1d-4adb-8cb1-81e81c52a992 d82daca4-2e83-4944-a9d1-18ff89f3f515 67b879c1-10d8-40a0-a9a0-bef68e5dc904 fce18727-8b15-453c-9f87-0b2ab067d854 602aaab0-593d-4251-958a-7c9c512d92e8 37f30aef-8852-452e-97eb-505ddff801f9 d944f2b1-f8ae-491f-b858-cbe195f6e13f 6eb8817f-8260-47e6-8b9d-01ace55f7b3f c9f296d7-50cf-402c-950f-7831bbe29870 b9a18ecc-ec73-4e0b-99be-92d9f29bf3ef ae0b80c8-d55c-4490-9d9e-b258f9e4f8e1 8cc50842-e89c-4e11-a280-120d1bd2590f 3cb2ec23-d710-41c8-896c-d5e91b6c960b b10ec54c-eea0-480e-9ba3-2b226f3d9595 d12b528f-d80a-4408-9dac-8f7d5d6d1ad5 3269801e-56a5-49d5-8a8d-4f2eb3a150a3 38d78906-c80b-4ef6-b78a-0e19b5525d8b 490d9b64-c84a-40b7-8dfb-1339d396ac69 c5ea057a-67a3-48db-b232-cd2f1db08d2f 83fe6a4f-de77-4c40-a089-3714105527fc cd9ece68-cd4c-4684-bd1d-5d650990e7ea ee1f88a2-915a-4c3e-ae66-bc08b42b4c1f ae798797-8ac3-405f-bc4e-06b771ca861c 17c16415-5250-4e0c-9142-5f9ba592753b 23aaa05d-d4fc-46d1-9e38-bd97544df986 982dfa3a-9fc9-4220-bb4e-d656541787fc abf31b2b-7b1d-4b62-a3a4-5f175f1cb176 ece59974-fbdb-454b-82b6-b786f09394f3 2084e576-8225-4e16-ae48-4415301e2cbf 5dcb2ea7-78a4-4751-871d-c75769fcfe19 f8503552-0285-4000-89a6-5f7f4b4d6839 2673e2df-2361-49a7-a314-0e08c47cc179 515ad200-9dfe-45eb-bd13-3bef639282b3 d9c1c0c1-9198-428b-8be6-2ea628d4bcf6 c7a40f6d-a023-43e1-873f-58bae1e9f226 7f151086-847a-4ef5-b841-5555e3bd9375 6c03ca0e-3f19-4eb3-9714-29a4bd25ec06 c57d3c3c-d5d5-401e-9c7b-4229c8b86584 debb345e-cc5d-4611-b4c8-87a174bf7541 ab0b6d06-0d25-4e79-bafa-70164a4351bf b25537da-5716-477c-8d80-a72a130fbc1d c78d8cc8-895d-4ab5-9a47-b7c743beeef3 79d656ca-bfda-4eaa-82be-3270ea2f63f0 ba4e31e7-9510-4d6a-9d31-66aae26e7b42 7c4d6c0a-2aa7-4648-8c4c-4b87f6f7d45b cf9c149b-ce39-4b09-93b2-93830a78fae0 9593d5b4-b0cf-46ff-9b06-80fd1c481afe eced1f6c-4627-429c-9066-5e7ef09898c3 1d330f2c-599d-44c1-a2e8-6c413397632b 48784094-4258-4757-9a38-2658f341baff 3a1b33aa-d1e4-426d-8581-7391aa46bbd8 5ed0a40b-04c3-480c-9e92-61010cf80d5f d5438434-33dd-4bdb-8c30-0018b07a5bc6 c1272d4f-8748-4210-890d-37f8b0fb0a02 c2dfbfe6-50c3-40d7-9c9a-d81915a2d6b5 4513c0d3-c6e1-4745-b44b-f196940fd8e1 f2c35ec4-c531-45e1-94ca-cdc2862747c1 aacce7e4-d04d-4c30-962f-e90e7cef6aa0 fba7bfe0-7e1e-4ecc-9f97-c3b7d943d46d d3884e58-c627-4eeb-8165-e2dbf1f171da a527b1a9-da59-4151-be2d-769da87d2ea6 aeeeddea-455f-466d-b05e-f1de32a8edfb c8d0a441-6032-4eef-b056-f1c02589a049 8058b724-78f3-4abb-84aa-4ba28701fa60 65e6f12c-9ce2-4adc-828e-272ae10fd4dd 0191e3b1-3d88-4584-9af6-352b42c87149 9c25f7f2-e190-4d96-9709-5692dadfdd02 16447646-a952-4cb5-90dd-749649d3f8cb 09c332c7-3a65-47d4-a2dc-bbfa399db5ed ac30abad-ae3c-4a19-a3f4-0e5ed66f961b bb079520-f28b-47bc-b3cb-b8f3c28a7fc1 d8dea147-001f-4744-affa-e771aa7cf66c 1a1525c7-dfe5-4391-93ee-e55ad5c5850e 9c251021-2e0c-4516-bd02-0911885282a3 f4113d62-d65f-48c5-b6cd-32830d43c054 dfbbd441-6427-4096-9a9f-c03bbb6ae8bf 2c4a037a-dcbf-4283-b19f-985340faeb06 41c3b62d-c08c-4361-9124-e024d970fd29 26d6443f-10ac-4628-bffd-a0f19d117874 1c769842-5165-48db-abee-ff41a5586e66 b9898ebb-bc22-41b6-9376-f930ba8ae71b 527e55a5-f603-4163-b70c-68a6cb7651d8 49d4eba9-d4cc-40b9-a55e-16faa85d4fbf be7b1b14-37a8-4605-b5bb-abd86e0ab8ef b58f4959-2ef2-442b-8903-7107a2250464 e79ab561-f6fe-438a-9f59-084b7e987d91 8fd9b260-3bd0-4ccd-8f02-f97aa928b4e3 676d1b30-e1e9-4f05-82b8-1b1aaa804e26 c3484903-ede1-488c-b7cd-939ba9408696 1db018cf-76d8-4d1e-89e9-c9cf9ce46d33 a54f803f-337d-4d2e-8bbc-381e80107190 dcc34e64-b91f-4275-8c95-29fb5537ffcb 9a1468da-adf9-47dc-a883-d027eee8db72 e724d152-3909-4805-adca-febe04db4fb4 c7758bb0-b8f2-48c4-a895-5d5b387d20c5 d1622391-28a1-4a80-8125-20c4db8c1b49 5f0a1516-b718-4c62-96a9-5c2e7a334afa 0312f995-8bf9-44b0-98ed-af0bdeafe83f 075d2cfd-35b6-4e86-9a22-a3e6f3c8f108 e20861b6-d4f7-43ed-96b5-4df739c0d5ee 13fbe999-8eb7-47e2-9049-d67056e3ccf0 12bb8b29-a044-4c31-be3b-55f724f89e20 8be64ca5-68cc-4b81-b645-6cd4cf8e9fe9 c2ca4055-9e06-43d3-b090-01985afbfd95 c3ef2ad4-5c37-4265-9c7b-00d0a258f626 d2a8b2bc-245f-46b3-8d7a-81559be46ce0 594d445c-ae2e-4145-8533-9c806de92fbc 8cf75d0a-b555-42df-a3be-cc7ab356d50b 4e536ca0-eb85-4296-83b9-fd23e50a9803 9d925f33-7ff9-4995-9a89-391d05a57e00 58f38415-64a4-485a-b79f-f2353bed209d 2ed16837-c9e1-4960-b022-4768230f7793 d6ade661-96da-4394-b54d-220142451770 594df0f4-4f4c-4b3b-82b5-143d0bef8972 aff16c39-89d7-4ae9-aebb-eb79498ab8ec dba043f7-226e-41d4-aa04-00f348b472d5 6b7dbe14-9cb5-4291-b57b-85b820501452 45c76d74-d975-4bf8-89c5-b8a549848966 3f696bf2-75c7-4b07-aa15-f17a8e6113d0 21bc8406-be7a-4ee4-868c-11c007579dca d2b4268b-1973-466e-94dd-04bf44115825 17a56b19-0aa4-4b9a-af70-5436b18dc1b6 dce1970b-53c6-4ebb-ab26-f93a8b115158 aef286a2-98a3-424f-92ef-35aa0d57aaed 9e97411e-0af8-4b42-8bd2-7dae9a847050 9ab3e463-ffec-495b-b799-d3d058cd7963 522f435a-b9ed-49a1-a0ec-89237db18312 02f504ed-33d9-4b2b-8ab0-e43dc30f3dda faabc99a-441c-4777-b068-c0fba4c71573 9b8a9ac4-d0ab-41a9-9bca-5ec572484f2f f379562f-f3ff-4e7b-8306-858249611fdc cbaed87e-34b2-4170-841f-b8151fff21c2 6812a496-df27-40b0-a5ab-f7b16a755046 461f2513-e917-4be4-83d0-28119531c68a cb8816ae-32e9-492c-a310-ab5d30d07d74 a28b0c01-0951-4243-8515-b4d00861ad12 77decbd9-020c-4c59-8f2b-a43797276181 100659d7-fe8b-4652-a16f-a3d6b5f0235e 45021cc2-1a76-4058-b0c6-301181344732 c0256c58-9bcc-4501-a2fd-859d0254d0ea 2fe551dd-208b-4525-92a9-c3546ee57656 4a61191b-e526-408a-a6db-3dc5dabb75de ea55e959-bf40-46cb-b869-dbe993f364d5 071051dd-8a28-4bf9-8164-6787820d0efd 1c6b36e3-f9f6-4c8c-a17f-1cad89e752b1 21123ab1-e38f-453e-800a-b99adc5e7a9b 2dc5f07c-a127-4aa7-b35d-6cfa22c9cdc5 386e6f07-e7ae-40f8-9a36-5f4b2e35e5c2 7bc000d0-a084-488a-ad65-72fca977bdb2 e1db2f46-63d1-4ca8-b754-609b8e74d1da b5a62a4e-7671-4113-8432-b143bbbeac76 6c0a22e5-3207-4452-afae-46ced804ad44 7863c3f8-5528-4108-b271-1b9966968549 55450007-f57f-40db-8272-04875c74656b 5bb66da0-32a4-49c5-b044-03b9122a8e3b f09e4747-3bab-422d-a9eb-bb61067d8e48 acd9a0e6-51d6-4ced-805d-94db2604a2ae ff16eebb-2c0e-4fbe-9b4f-89149bfd8e72 7347f904-0e6d-438b-87a9-c36a16679a0a dc5148c7-b568-4f99-8bdd-95506661763a 257b32bb-47c3-4803-bf56-b2a98427df66 0c32de93-e9c0-4e2d-89dc-cec40edbd619 9476531b-94a4-46b5-8def-4fa0871ea66d 823917ee-ed86-4ba8-9f6b-e2b86c17acf7 ddf0fab8-b6a2-4397-869f-9154007c9ba0 0bb45cbe-fe1f-43b4-b2a3-7adfc434c00a 25e86728-cbdc-465f-8211-8ff52eb0af83 2a7df8ee-2fe5-44d9-842b-c59cc0e42c5a f8c73ae6-abcb-424c-88ac-7f38133ca91e 5c3c9add-138e-4b21-b1be-a3effa66e60a 8f752747-b500-4369-a830-4757a9282f55 461a058e-aa5a-4717-888b-b206585fe6d8 364d8771-f9b6-430b-be98-02c0c8388e64 1fcbee7f-cfb6-48e2-8042-4da60846e62b d273ee19-c5db-4d1b-8ad7-38e68c1a6bfa ba957ebf-7d96-420a-867a-f61b041a44f1 0eef25ed-89b5-47c2-8cb7-b3ea832fbe91 a9871a28-193c-4c3c-b4f5-3d054ddc7b4a 74783f81-5141-4de5-a3d1-f1c18cd36eb6 27e7b145-0d17-4d18-a1b4-dad31790795d 7de1439a-df79-489b-9e11-0ce1182022ba 8204921f-a31b-4a96-b946-a93cb7219693 81e1bcad-cca7-4b41-8319-3b131ebdc671 92f0a910-6128-429f-a8cb-3d84f8a9a885 9ff8c660-c5e6-4fd6-bdd5-44ad25d5b343 c6547db1-0500-4653-aad7-77ca8e4f1d48 4d30d00e-6641-4432-a8ca-55ada75d3ea3 4505d654-d35b-45e4-a34d-6dd4bad91665 5e31fe08-5beb-471a-bb70-4b38671ac624 55d9ff54-be39-46f0-827f-77f6ef248452 148125db-a760-4b9b-9b68-de656b91d4c2 e6ef5f02-7c1c-411a-b210-afe3476d2ea9 b6d9f374-9139-444d-9256-1f45477a5cb2 165a7b76-8235-4db2-b921-3f360d91d297 457df455-894e-4bd7-8183-88a42ae4f1dc e2288391-b1d2-4d83-9a3c-1fc1e64e2667 76c25cb3-c96a-450d-a06e-61fc46bc1270 05705453-1ae4-4858-920b-274cb95b51df d81b1ea6-3ac1-466f-87a5-e71e05fcebf9 26ab84db-74ac-45ec-85e8-9bfcfbdf910e 71e20112-c574-4593-bf13-4c047e840c46 8ba803a5-7210-4f62-b66c-5eb81de968c7 5b15b6af-a324-47c3-8a0c-d179a281447a f83c05df-38ff-41e2-811b-b7e1bdf61fd8 78501a25-f2f7-4661-9ef7-c170e311679e 871c8718-8177-4b39-b286-185e2002e7ad 6e1e7288-481d-420b-8f93-f8534461d172 26138e37-73ec-41f0-90d3-d2025ec05e38 729764c1-2f3f-49b0-b967-18d2912ca9f2 7908a4f7-fe8d-4ffe-a72b-516c5110bb39 363e3759-717c-49ff-b7ff-4c949ba8e511 d0cd177d-025a-4776-8792-2870faab4f98 01ca3a73-4a6e-4b0b-bb89-aeea81ebfdae 2d6db4f1-c6a4-4ee1-bbc0-e9574836ce98 02fa4e53-dc37-4497-ab67-6df3fb4279ab 76566063-1e27-46ea-80ee-7e31e1a5e111 687a84bb-0b10-418f-ba20-b387184f5861 8936d2dd-cc4c-492a-a383-10c5f5dbc470 dd954a07-e740-4bc4-ae2d-c5b0228b8c04 e74eb6be-f0a9-49dc-9014-85a3fdbe207d cb31eedf-baa2-4c59-abf4-be2ef4af3b39 da8e02d6-01fe-4f91-af48-d976515b0186 800be8c5-1d73-43e9-9f72-1a20e6a1a021 02e52599-3648-4aca-8be9-35f6e613a969 0dd671ce-0be5-4bdd-9191-63dca953fd66 7540435d-3f86-4fea-b6ba-742eb3933a94 25e915ac-af9c-4d0a-8f3c-bd30392d132b d8a7bc57-40d5-47ed-9ea6-e952a17c42d9 f117adf4-5442-4730-accb-ce29a96d797d 2f2732a7-1eef-440b-abd8-8f43aaa110bd dd3a6f12-d6b3-43f4-a38c-96f95eef6f4c 8fe657e7-c99d-4bd4-b3d3-21f9c87c1d9f 5fd4f73f-004b-43ee-9212-bece0458d3cb 6a25fbda-f813-440b-a388-38d78ca8ecf2 39b2387a-59d3-40fd-92c5-6c154e841994 401dc8d0-883c-4a71-9ba3-404b34e9b1ab f014381b-476d-45f5-86f4-5ab24332d9ca 8820cedd-dac1-4b06-a6ee-3d83b342a00b 294924a7-4542-47dc-898b-17a850e77474 fab9b097-3ec5-4085-ac0c-a53c1fcb7ed8 f29701f0-4e05-4d56-9c24-1ba840f841ac 250d5802-0013-43e1-aef8-76fde588b895 06452eec-fcfd-464e-a6ee-dbd4d982e4c3 3004bfc3-e249-4736-aee0-b43b419ef280 75c63326-586e-4cd7-9cb3-634c98b79cbb 2dc01fad-e6d7-47e6-a0b3-2a0c2567c179 1d2f1527-ece5-43ec-a066-f0f3ba287fe3 ee91b519-a475-489c-a32e-2b21b950479f 8486c8dd-543a-410e-b033-a00cfee4a882 ee598cb2-d18f-4c80-b662-948d400b9f5e 866d3c7b-f5a0-4adf-9d4d-7a2061666b40 206f4649-f762-4e88-b634-2623661ed165 b6662e7a-2ba9-48c2-8cab-1ddf521fd31c c6fc35ba-0ec4-4b8b-b530-29a1d95c2ca5 8f8b7468-7ada-4f41-9ad2-afd930df6ff4 465ccb36-a011-4a72-b583-57186292c4af c83ec9f1-7a5a-4821-a177-22b5ee32c8c8 b44e5687-93f5-4884-bc50-8921aacd080e 796bde81-8d1a-4f3b-93c0-3ef9fb5fa2fb ebd47520-bd1d-4837-90e6-ae03a2daefb9 03ec1cd8-d270-458e-9962-f826122c46fa 334720c1-8ccb-4729-a0dd-407b849bdf4a 19cdbff1-a1c0-4d92-933a-53276b4bd148 fea0a260-d974-4124-a131-1620946a4559 6aa0c8d4-7656-40b2-abbc-f35d38526399 512a5c76-5a3d-4912-87fc-f8748e46df3f eb2a0422-ad38-4648-88b9-d2838f862945 06444d47-3bae-40a7-b0b7-e127c5170c8d cc59e9b3-069e-4d7c-b380-1829b385d712 33e61cef-2240-4be5-ad66-e22dd8814e84 43d083cd-8884-4f0b-b72d-730f7f97147c 8beecfb6-03be-4380-a1e8-442125eca6fd fd373ae8-f9e7-4782-8a39-5afd80c41aef 4237a94b-78cc-4b5f-ab24-f5c41cb47ef3 0e1d39b5-b665-4e09-a00a-c9f2c4759b18 56f546d9-16d6-4313-947c-4514b905ffa0 cce9e0f8-cbc5-4694-a721-955945821f67 8667988a-2a8a-42f5-8ff5-f7a39cc6002e 861343b0-ec18-405e-af0f-b4786a4b3723 e2d85f59-53e5-4110-9ab3-8930d4dbe03f 54cdf128-7dc9-455f-9ac7-ed4d23375d80 d25b4c78-3841-40e4-8049-7602aefcfb47 7dc1fe30-ab42-4f1f-8756-e6ed3ff31d5d ebd98a9b-1c83-41a0-b921-dfa3662a4a42 6569b934-2c82-4346-846f-fd6850a82e99 e8c82b3f-cf94-43c8-aa74-40035124bf0e d1511cd9-d90b-482e-9588-ece65f36e418 6f57a1ad-ec15-4520-aff2-f6bda46f9bca 8395826d-ef37-4841-bf58-0fd10c359dac c3813e8f-ebec-4891-b82a-5cbcf64d7219 96a19855-b85a-4e27-a635-1bb1783ff789 a2b2565f-22f5-407f-b507-fc626d8bb8dc 4adfc047-796d-411c-bab6-dc9964e7aad5 1fd09360-98cf-44be-899b-02393448b9c6 28d8bc17-b40d-49ba-a108-ac04459b1afb 93090d7e-f1f4-4c2d-ae2c-fb0e871324e4 81f682ac-6d02-48e0-b8b7-194e1c3976e5 53fb7d35-05a0-401e-adc2-f9df30588b71 f6488e80-a043-47b8-9f9a-0cf085e488d5 e4b693cd-a789-4cae-b323-284c498c0301 59c97b15-369b-4c8a-9d3f-7e4f6c61b5de c314af74-a73f-48ed-8b03-e8adc6913025 8fb5007d-ac86-4fc4-9cd1-a95bd19d3fd9 6d79eb87-5d52-4523-baa5-e7b89bf72153 43f14b91-993c-41e0-a2f5-79f3571871f3 f1ac0a54-5dc9-4fd0-a746-2fd6a8c88fdf c03e03a5-5ccf-4527-8236-5c2fd82d7b1d 0ce661cc-1c71-4f1e-97b7-a7b3f4b1861e 17a71988-d9dc-4e87-b874-0a32c9f2b7ed c791468d-9a54-49e1-a65f-0868bee31858 52be7d8e-e087-445a-8c67-270d4c7f5d8d 8ff03d96-6f3a-4083-8de0-5abe44b11517 32b4107b-073d-4831-8f02-b3007d28b42e ff9bf402-0318-475a-bb6d-22fc921c013f c7207b1f-dda7-4d49-8c0d-a6b3c4c0f861 33122356-b2aa-4f27-bb73-afe7f020b98c cc1e343e-9844-45bb-8b07-ca4b0968b132 0a64531d-4bbc-4531-8f0d-a5c278cde070 9c49af1c-1b51-47a8-b7c3-2a880387a4c4 b33b2211-aa90-4345-b3f6-201adc55f83f 52eabaca-aff4-4878-a042-19866346d0c0 331d0bea-273f-4711-bc29-6507fc705d28 5b51c5ca-5413-4580-9b01-5c424533a6f9 58b0ee5f-deaf-4d93-88e5-d755cd123db5 80ca773a-a0a0-4b9b-842c-8262f2d52bb6 cd36573e-ceb1-4d20-9636-5926bb0cd6c9 277d15b5-e3a5-4271-90b1-f909380ef10e c009c427-3580-4bd9-b2fe-bcbc0e1c5d7c d1937f2f-66c1-4e6d-b10d-fbb9010848ad 9fdb6fd5-b08d-4497-af5f-b1460a5779f0 592b9a84-fc35-4303-b4b1-35d6a94ca923 7946e8a7-b0cb-4890-a12f-514b186f494c 24bb1df1-74f4-409b-ab38-a7c08f558012 ce95ad45-35df-4b14-a6a8-47ffd0412572 c78f8486-81a9-4c7a-aaf7-1d350a3e06e0 be53f5cb-311a-4075-a940-6111ccb6c677 4fc8a7f3-3727-4519-9984-b2d5be3ce03a 591a0d4f-63ad-4803-9b2c-0f8724c3d17f c7ecdeb3-5147-4a43-9a91-8fd47ac64ce7 7d678bd6-6b3d-4bee-9649-1921ce2acb18 f206c1b5-7e0d-4c37-85ca-b0a96b082b69 fc4ba311-e51f-4a9f-a555-99752128dd65 f33d71d1-4166-4d30-9220-cb2acae4c259 5ec574ec-8c44-4b73-80d5-8c75cf17d59a 8141d225-1a1c-4f18-bda6-0784b808b7a2 5a0809d7-7245-4494-b68d-bf9417b1b965 de332317-2ee0-4393-81be-f14689528c93 3b7878c8-e996-4177-ac58-ba968f873dbb 4105e220-5ec9-4578-910e-13b010470285 90919aa0-06e4-4a6f-bd49-56fa82c8b8e8 e519762e-6045-460e-b97d-e88cf913e1c3 396259ef-3ec3-4a89-96be-7a45067fa6ea d51a7a4c-86c1-4694-b0d3-002c12ce3061 5d1f9c91-f29f-4ca7-a1e0-aa9bfdfab18d 30d6fa95-b4e3-4d7a-a557-c2121118e524 dd0cc6d8-a914-4d17-be11-526c842e938b 0ec65f34-3581-4c00-ae4f-e41ae7422297 207df767-015a-48b6-a83e-4e3be5a27cc3 15c2e3ee-d6b0-45e6-9911-53c0b6bcda27 31438bf8-9acc-4106-939c-0c40bb26249d 62731f57-8fdb-48f9-85f2-f623f478b646 9b19a4de-7b77-4c80-8f22-7e754f0f04e9 367b3437-9a28-416e-9d29-932e4a7d5fb0 0796e91e-3705-4a11-b6ed-b272850c1e49 e33fc3c6-a1f4-4b73-9405-8ce28b977c32 18ee64cd-e639-4b39-b724-c3de01ae7f8c 61d61f98-a906-4093-8ae6-99c4af2e477e 25847314-4ba0-4d3d-92a2-dee389847ef0 eb93fcbf-be52-4467-9187-3455958b22c9 c1a7baee-053b-4512-a7aa-2ea86a0e78f9 da369878-1259-4387-969b-182a02e5eca6 e4ba341a-8a02-46a7-a016-d3453cd92d72 cf3322e0-c81e-4259-8e38-f702d22b8345 5b3360e3-e4ee-477f-86f5-e990a00045ac e2fd786a-60fd-4eee-9236-9a65e15f762a 81b83c18-1586-4d9e-a3b3-84b4b8db7df8 36fc195a-bcc4-4f48-8cf4-87c324c02dc8 5d83d273-6090-43f5-845a-65035691c42e be686633-34a5-4c8b-ab2c-b5d6ade23bfd 0a250ffe-15ab-4a85-8396-8a7089832f33 e35b069b-e906-4f8b-8690-dd6382b6fbe9 ba9d36b6-680c-4e5d-a989-2e6191bc79d7 28d50a88-8361-4dab-893f-d5885492a51b 886eca37-ae0f-4a22-b633-65915536fce9 7b74f748-2a35-4d4e-9a2a-81c7100e0e4a 0b2367d2-108a-45d9-a0ca-61bb6b44bd0b eca92b0c-b323-40c3-a900-1e7d5f68aaca bd2508b1-a7f5-4c6d-8009-05d35af79687 2496a796-3e60-4e76-a95a-8ca3c768da2c be18ba28-8513-4de9-968b-ea9ed75a267b efbe4099-907b-47b5-ab2b-39572f7ec268 8b7dbc47-59be-4ef6-a47e-313297b5b7fa 4585c510-9325-460f-aba4-703c3f043dac d85fb04c-eaef-43c2-ba30-f44adf736fe3 77a23bcd-ed37-4b95-9125-61d70d390c36 9c04c13f-d09f-4be2-8cbe-311c4515e005 b3b3345a-9823-4f3b-8cdd-d4657ebaac4c 1ab3398b-b5ad-4087-a1ee-b7a7e841776d 8243844b-3694-4e66-ba1e-a7c9263a5424 31e2d835-d812-494e-a610-75abd72a9db2 bd3ae60f-4db8-4d00-b7e7-d4467fa3a58d 34f54090-43cd-4246-a7a0-6f35f35b9d11 81a011b8-9f47-40b3-a38c-67bdb731bc95 e67689bf-7e7f-4a8e-850d-590064488390 26e36744-2f03-4a2f-96e4-96b7cc0063ab 6d6c833d-a860-4a84-841e-6186399ba73c 33f228e9-3649-49c5-82cd-848e395e66d2 e4a1ae30-eb91-4200-9e00-119c7c760ae4 27e2d364-577a-490f-83a4-524a55019305 36f2a9a4-3294-4d15-8208-053e07ca6e3f c5cd4c19-dc11-4960-987d-3233ea6765bd d2cea324-71ca-46f3-9afc-e3afbe40c0c5 2b8a27e4-f6dd-4237-bbc1-fadb204ac056 1512c528-67da-4649-92ef-c9739ea59fd6 4fe06fff-e6de-4bc2-afc3-a0535ec21285 f26a45e4-df4f-495c-8b89-db75728e7bc4 2a160f41-7852-41c2-965f-418040773e5f c25799f9-ac37-448e-8c35-f1a62a9cf47d 22332455-6c9a-4fc8-a0da-66cfe10a2b86 4f6ff1c8-a0b4-4695-819d-48d18595fd9f 20488f14-1394-46be-bbef-b7406f96ca07 7f1b665d-5b18-43ab-bfb1-6dd429ec282a 68fcb710-f58e-4e5d-9796-a65ac7acfc3c fe21a0d2-dab4-42be-b1a4-39c3b2fe8a24 867e9527-f40f-49bf-9780-ca0947d73d07 f2d2a964-4c4d-4074-bf53-881fc4a5508b 6b0d21fe-80b3-45c9-a84f-3c5623db0c9e cc89d758-7bd8-4bef-8494-1723d83d06f0 3b4f24d8-34e6-4b1d-a51b-4dd481826242 5fe0bcfc-7996-4316-aaec-447703cdd0f5 722c43c6-327b-4a4a-9229-e17fcc872c2b 9c557830-40ba-46b9-8a8d-1045be620f74 6d5c6653-fd20-4d8c-bb6f-a9cbbef6a34b 5ad28176-fc20-4aca-aaf6-dd8deac55d09 fe1ff8b9-ff98-4361-9f8a-50909ecae62b ebd59128-7015-4a06-b64c-dde30283ee44 aa6f26c7-7b0d-421a-b7be-c46bbfbe9925 eadf3a13-f9b4-4303-be49-e4c82a6d3f2f 4a750cb6-253d-4604-bb4d-24d0bf011498 bd5ad33f-e428-49bf-900a-48cdf71e82ae 0461a0c2-3c3f-4e02-9351-be191f8d0c7c ae613936-7914-44b8-97cf-e673ed4687e5 268cd172-c02e-4078-a209-0f73b69586ba 36dbe5a5-fe75-4a6e-a694-72768c62a890 07699c9b-5a09-4f0b-9b42-c5f6024d7b78 853907fb-20fc-4397-adef-0df5addc167d b498a102-4161-4dff-b398-8d16138fafe3 eb7ac3f1-f362-4823-97cb-3a2f352d56a5 67b1eb1e-7f0e-475e-bd23-0679efc432c2 d1fd94aa-65b4-4fdb-884f-d174329f7492 1ce4c293-b5da-4d3f-8e8f-390f366ac9eb db8f9737-5f75-436d-a834-befb4970da53 a550e584-4a2d-4c53-becc-b1a5bd69e86b 2b01dd00-880c-403c-9b2c-fb74acf9c29b 31495f1c-f90b-41c5-98be-1a90db26a462 673f4063-ace5-46c6-a148-c34eb6462da7 7533979e-5779-4f8a-81b4-61acbd60a227 8777163e-d0fc-4563-8a98-f4db9f34b1c9 423db8fd-ed6c-4152-9d5a-8af89ef0214f 348528f9-2989-440d-8b63-b6227d5d63ce 0f02da32-248f-4095-b7ff-757a43e4a305 253fb333-98f6-4adf-8c4b-3a2a40c7357a d31bf26c-7c4d-4453-a570-351e2455d9cb a6157b1d-32e6-4853-9b16-832b0d763efd 31924e40-e0ba-44ed-81c2-2549e3c4718d 14ef7dda-3252-4f1b-b07d-478167c4ad11 020f4a2e-dfb2-4e73-a79a-f30c6067ca61 7b0d74f9-1ffa-4a04-84b6-3e1542031c9f eefc01fd-7052-4458-b867-4959af4725f2 d5853864-08d7-40b1-847f-1cbe3feb473a 7cce8dac-2ee2-4bdf-9128-10cf9d6b4a4d 05b9118a-f521-4669-b5e3-7f6551413fa3 0758701b-5ce1-46fa-a15e-167771b316ec a6b6ea97-498b-4d23-93b5-99f1edeebe07 f21b6e02-2793-46e8-9a15-1073f14dac25 de7f3ec9-d7cb-4e94-a05f-6b928d4afe67 b239b5a9-4345-431a-ae63-49504052d310 9c5475d1-f2a2-4b3e-ac8a-95c1e35d98f5 9d446ddc-799f-44bb-83f9-619765cdf610 583b6177-477a-4d5b-a7e3-dbf4e824aa2d 21d818fc-5b27-4766-a24a-32c1789bb8f6 db9a9871-8707-4b88-8892-a63f65c3127c 0ef91845-ae3c-4799-9b90-106af3feee5d c1f99346-fce7-42d7-bc45-ef68cb05c8d8 22840841-c59a-496f-bd97-b7ed2c6927fe 8cccabe2-b7af-4b5b-9485-f059c2b75c5a 3a78ce6d-09cc-48ec-aabb-2b99bae979bd 4a0dcb07-08f4-46d8-9bee-466f6a3770a9 a73d4204-5706-4ee6-9670-8aa52b028491 1ff53e19-23ee-4a14-8fbf-eff27789020a 932b559a-955a-4c2e-ad23-8a2ba2f90afb 457e998b-be9e-4bc5-951e-c2be3b37c4c2 54f3a4a6-b341-478d-a780-bdb040e06c82 78880248-2e73-425e-bcc1-b531eca17676 c3b70713-9391-499c-98a5-cc2408f0ab91 e1249b78-6b1c-4729-84e3-78e2a08cc712 97df0deb-1dd4-44dc-aab7-de95db1a6855 70591e69-c5d5-43cc-ad0d-a06a5d7ef4c0 b973b4d7-c088-4d0f-89d0-33f082601b1a 1b0cb0a0-fba4-471d-97e9-2299ef3d6dfe c48f0b82-b024-429c-bef9-f23ccec5a3e8 510655f0-eee8-4c49-9c08-1d29d33c8333 6903616c-b2c8-4c1d-ab4f-83b8c95b8f37 48671c38-d953-44da-8b69-5f972173793e 0e729a4e-541c-46f7-a50d-907714835572 52f53df4-e662-46e0-aad5-c0f9dbb0704a 006908e8-8fc2-4a85-9fd9-0bc06195a29a 1713a0ae-a2f9-4378-8f28-48dfb4fecb50 3dab881b-f9c1-45e7-bc2f-264d1060e221 b4613975-8b89-4664-90e2-556d147619c9 482e4800-2d74-4524-87b0-742515b9ca7c 080dc026-664a-4bb7-a485-7074cde60c7e d6dd207b-20dc-4973-bbee-0f94d30913cf 88ea68f5-a30e-4aef-9ab6-a97b88e694c2 1cf63551-34a8-4e87-b40c-9c59ee4d3072 cff61fa8-babd-4a7a-89a5-d4145d501ec1 3b526902-24a6-4abb-ab3a-2919aa0cced8 bc7c0c7a-e8d4-44e8-bf35-9cfd07fdd2d0 29fc24d9-d1a4-4a57-bd36-305de82cb7af fe9ed4d3-0ab7-4445-941c-3ad6bd62dd0d b8aea266-cbbb-4867-b2f1-4fa98cb53244 41cb0c50-921e-4d36-9081-7f2851915837 530fd9cc-4676-487e-9157-e7d996c26f52 177a4fad-2b57-4016-a539-622f40b7cb4e a484288c-fff7-4276-91ea-47a892850757 7cdfef96-ef39-4b6a-9f5e-2a0851f4003e d40b9c4a-0390-4974-966c-71468583c42a dd2ebb80-e395-49ca-990f-8c0a9af99e94 3eee1621-565d-4a70-a944-5868a723f50e 99608b4b-2c51-44c3-b203-8498c0892717 11d92390-5edf-4f2a-8bd3-e5137f6f4d69 bf922810-1611-4ebd-b0ad-46a3694feaac e34df520-b4dc-4ee5-a35b-c1dabf7e9740 9934357f-c200-4891-b37e-ce0146e6b5b6 da45e1ab-818b-47bd-8432-d150fa38492b f4b8cab5-f556-4c5c-bb54-b0c7dd2a10b3 7ed3fcdb-399e-435c-a888-a919c3283c08 c8cedb90-5576-455b-8e7c-669bed8c7055 37b75604-6f66-493a-b341-7cdd349e8083 bea1729e-f683-4722-b80e-c61acc7a7311 222a848f-f948-4346-976a-cf5f83b5456d dd0a64ee-2195-4328-8906-a8d66d1bb67b 647de044-77f8-4fd4-a7e1-cc8df16ed555 ae87ab5f-fda4-4810-a19a-6dd756d69139 14b3fff6-93cc-4196-8f99-40ce7ab9343c 85f1d994-86c6-42e3-868e-08ccd673e0e9 ae1f161b-1feb-486b-a5d2-82b4d988439a ea434696-25e0-48bf-81d8-b81ef1b17c21 fc37ef66-863e-40dd-b7ed-6470d412eac0 af9eba87-20a5-4c95-a168-de915038f9f0 87c8330f-520f-44df-9402-b28c82adcec5 b7bd4931-b5c6-4d50-a9cd-96ad8b0e104a 85580ec9-652a-44f5-a8a9-147b701dff7e 88f12b44-726e-4cf7-a622-e7c8590fc846 114fc5dd-e26e-4364-9886-15655d4486fc 3b10179d-633b-4659-8ae8-9cd5edcc8f89 7ebaac5f-33ba-48c5-8fc6-fa750661b3d3 215b11bf-7029-4a99-b992-6a5b2582c345 d5f0e875-f0ea-4771-9437-e8a26fa365a0 d8bc8a5e-5449-4ad8-843a-4b37430206fb 96aea003-6c4f-41c8-b279-0b633bd288fb 88a651b8-5607-4b3b-8ae5-6b4d21719eae 748a926e-e83f-434b-abbc-6a3ee7d9a50c be8a0e15-ef38-45b4-84c7-630945118e36 b1ac42da-2b29-4121-a0f2-de236176028c 0a5b1104-5749-4ea0-bbe7-86d6b58e9a9d e4c0de8d-c5e6-434d-a361-32f22ebfca5c c7454b2c-c324-4786-b73d-3160609e2932 adb443d4-9147-49b0-abb3-1ef1a7f38ac5 0c8c20a9-e8a8-4e07-b7aa-19f23021ba8e aad6da1c-0558-45d0-ae73-ec531ed93d81 87d5f6f8-e278-4127-843b-97783f5c1a31 e66c3a5a-a20a-43c0-b72c-8223a85ea60a cc7a2899-c5b9-4797-84ce-dfe5d70eeeb0 454b6df0-cd4f-47c1-8c5c-0932109e55ff 0adb6d56-eb94-4eaa-b0fe-615648231beb 34787c8d-427d-4e1f-84d4-7da45eeb64da 5fd53956-852e-455e-b5c5-bf8a4c8f8944 12aa4673-ce64-439f-b65b-11fe4434a814 7ef557e0-dec8-42b8-aec7-4505bfb10556 a267f5a9-a55c-4f5f-91ed-6449779ed867 17073a49-a8cc-4eab-b4a4-a057bec89638 1794904d-f916-40b8-8ff4-75face6b452b f423e833-1fbc-4783-87f0-b44d37dbd393 c7ce594b-3d4b-4fd9-bff7-d92c500a4462 3f2424c4-e46e-441a-8e00-a1f3caf16b36 3469cbaa-5b4a-4595-97be-85d0e76b0bfa 1bdc0022-5932-445b-861e-03bb071d712c a901ef99-1cab-4311-99ec-a87c8788cf81 a8bf462d-d295-41c2-83d6-b78c5fd491ee 9c45ec71-4cf7-4d5b-8794-f5ab21819d72 9049c586-4c9a-45db-8c2d-d9d6539623ba d42ec695-129c-417b-8ea8-b7ecc9179a3c 2abbbaf0-8206-45f3-b74b-e2ec5b763864 dfae064a-f983-45df-88f3-3db9f16d9809 18442f8d-c292-4b74-a114-87c393f22071 5a60ff20-431a-4464-99db-73736f1cb6e9 757c5013-4264-420a-a646-434b29eb930c 22840182-4689-4776-96a5-d69d77c159b6 6dab92bd-4296-41e7-80a4-27fe9a5f9f2c 372e60a0-b10f-4e57-95b8-a5d265c4afec 98d8003e-b77b-405f-b1e8-8f40e0040b8f 74a96c70-84cf-4d6a-8f49-b8668d6371c3 b73966f5-94f4-40c8-80d0-230ecf772378 49f0f5b9-f586-49b7-8f2b-3a09324389dc 700827f8-d36e-4c95-824e-0e9bc7856ba1 8b2ea898-4e77-45f8-8de5-891609a44134 25641313-e436-46ba-bcd5-73d39094b5f8 804d8259-3674-4aaa-b9aa-eee02399ad90 4812b300-da33-4c91-8d4f-1d055d32f57a da98fe87-f60d-469b-8212-0c12df630316 e0f2537d-3bf3-4bec-8ad6-ae675c5f6cba 9f015ce0-0834-406d-bb9a-f97d78898f45 2a320216-49cb-446d-b723-751996976bd9 20db8263-c781-4a57-be8b-66e8d148dc12 9e7e7ecb-4c45-4b36-b95a-121ced160548 db71a5d4-2ed6-4131-aa43-e549adf05d7c 6fd7db27-054c-485c-b8b7-a6c766659d8b 9277d891-a3f5-4227-b80d-2ecf8ae91f3f e77143e2-ee1d-4ce4-8548-7c6e270353b8 ce9dfcce-43b8-42a5-8346-c796d86d67b5 5da5f8b8-4f80-48c7-b108-1ab1ba8400a8 a7a882c2-b939-4849-8730-16531a6ef902 f05c1f5d-9ee5-4d66-88dc-d551b5d1b818 ca4f312f-17e5-49db-ace4-95c787cdd5d2 eca9be25-c7d3-4f9c-a1c6-fa1564825eec 8268a53b-96f9-4e8b-8107-120519958d1d d05dfcf5-3dfe-4efb-9a8a-1ccf4117f516 918862c9-02a7-4a6b-ad36-d62dc579fcc4 5ad952df-c066-463d-9519-519dcf02308d f82fdc18-32fe-4ba1-b9f4-823602412c23 cf7413eb-d90d-4d97-b078-29d2b63fbec5 95befca7-bbec-4db7-840f-dac0ac6e73ed df946d37-2375-4bd4-a64d-c05f11f42049 cb433966-11af-45dd-b8d7-a00703701660 f0148f32-700b-49c6-ad5e-51fda41e0450 9b7b21ff-ec8b-4ba0-90b8-d6f1b012284f c1241f52-f0bd-4ad6-8307-e71b8376a551 958a8d42-0b3d-4324-abf2-a7867621638c d6237b78-a3a6-4f28-8511-1018e5314847 77bb1824-c977-4c81-8633-b9e016e56340 b2fa2bc4-a597-489d-a2ab-190b1d199c18 58687dce-a454-4e4d-ba36-2615f8976888 2fde5842-589c-47d5-9ad8-d8eceb83c2a3 5c5316e4-0383-4c7d-b0eb-8a2cf4b6f354 4422e0af-9ef6-45ff-97a2-261c2c43a99d 7bee458b-1f30-40bf-9ad6-b56fb9862df5 13776929-a588-4f84-b27f-29d8c378156d a186100b-d9a6-4a53-a9a1-eb7e4878b8de 3d532a11-fa45-4b32-bcac-5a1e6342c190 5c89f5a0-d414-45ab-b53a-c2b9081fe2ce 02fef96b-5dea-4640-88a9-1de46b898390 49b7791e-e835-4738-864e-90c5d0d9b6be 3c91244d-d24d-4623-8841-98e824e4c5ec 15ff908d-31f1-400a-bd0b-642011ec3d59 534120e4-9a15-4e5b-af27-86871b93cd98 41beb128-a3fc-4018-9cea-b911c2a6b67e 061d12f0-52ea-4103-9657-746a30ed499a 56da6bdd-a0e0-4714-bdd8-6ceb08634b1d 45cb047f-890b-4d79-b03f-e45b0d059112 596b3ac6-7198-4b95-9cbc-70b694486743 30808aa3-c6ff-4695-9b82-dc3c1f5e05d3 03bee150-4786-4f65-9897-49f3114b9120 ba20b7c0-27c4-4e87-8350-bf954da1c5b1 57a36a03-ad2d-4d56-8dc1-d4aed86840dc 9db8b71e-a958-4378-8e00-a9eeea3ad843 638fb958-f15a-4802-9ffb-a1c2f904f982 b8fab9ed-6b18-4164-ba80-7ee899b60a5f 5ca2dd05-007b-4b57-b3d3-a21dff625d66 d24000ec-7225-4c33-9e08-099693386722 48763ae5-68ab-4126-95d5-7df40fd3fdd4 99652c8b-b349-4023-b917-990001b3f3a0 0d8c4225-6edc-447f-a44a-11bc3cfa6ca6 57453150-e85a-45c9-baa4-733063784d2a 74f29147-a049-45be-969d-9540ac819e1b 474d9a0c-76ba-4be4-9f3e-14eedd2d5a3d cc0a782e-c12d-424d-ab6f-d0ddcbb45007 337b3a35-81a4-41d8-8669-0a02b32013f3 6f9f24f2-d53b-4a54-96b3-0946b304f998 237dbbea-7903-4bc2-8bc0-9b0722553af5 71f0775b-c455-4a01-bab5-92f22d58b78f fca10ab0-19be-411a-956d-a763145f93f9 fcae9c36-1575-47e4-a161-9b7eeeacbb2c 42674fe7-c53c-44b7-89a6-1907809bdbe2 cf104e3e-b20c-4ec0-aebd-59fa2a2b34e2 5faee297-cfae-4c0b-84ad-6d76ae421e76 55fbac2c-dfcc-4345-b16a-f7fd0f0a9258 9c6e1e60-73c0-4c41-800b-daefc0d3a3b3 49d9e3cb-b701-4f36-a5db-e25b8e2ee4f0 0697cbdf-634a-4e90-854d-9050d1a9d6b4 9144b610-8d0d-4c8e-9873-1dbab5eff664 ac19d219-c669-4832-a5c4-cde01ec9446b f7636894-8f53-4521-88f6-a3ac51e6443b 97acc581-d97b-443e-8cb7-47c3475ce0ac a46c86a6-9914-4904-a1bb-deb3d0f80c1d b8aa0f6f-6479-47f5-9b19-e67da1afcc19 60d67500-d663-4709-a131-26faefa93023 b0a2f718-9869-4c2a-8197-0b4df03a9227 8dddab7a-5c9f-49ac-b55a-89507e09e49e ad1cbb97-711f-4e99-aca0-fcc6e446cd47 7ff0af8e-8628-4f44-8a4e-925cd2abebfa 25383c24-14bc-45dc-8ada-2491128c3749 e05a0cdb-d39d-4532-a59a-7eb436e2e9c6 317df449-6c1b-4bb9-8362-514a661c4dc9 4a8f9c0e-eb0f-42c4-bd1a-105689394c0e a72d2e2e-692f-4f06-b1a4-c63df6ae6628 ae7adf80-78a9-469c-b9e1-40c1bd021432 f3106741-e920-4ef0-8410-a1c1f8117847 d29ae76b-ff46-40b3-83f7-f72510864767 0152ef69-10f1-4ceb-ba51-a4cfc2c02d7a f933ff2b-99d7-42b6-bea5-eade3c836354 66a26320-edf5-4bd0-9d9f-38a70af50cd9 9015d0ce-9349-4726-8fb5-69d9dff59c74 5f7af68c-42d1-41ba-b804-3f4e8d79a255 0442ab56-bb94-4b8c-bee0-c6611d2e4335 41498cb0-6a2e-494b-ac4c-5d3afb416572 104832a0-971d-4a02-aada-85d23a9b4e38 44c18dbe-fcbf-4536-933f-bef0d435e4a2 d1867b2e-f43b-4331-9d21-9e92699d45e1 1f694839-3509-4a97-baf9-9d6ab0df628d 192350b9-4bf3-4b0d-83e9-6ecbef3c76ba 0365519a-8ec2-4058-81b9-0e3fd4362c3e 4161ef9e-8ae0-4265-bbeb-783293eea20c 65eefce5-721e-40ec-8d5f-a3fb481d60b6 aed947b0-e545-4848-aaf3-056e5f7205d2 847c5755-c91c-46ae-922f-5161da205337 c9be1a26-31a5-4b04-a58a-f8830b4238b3 059b55d1-34c6-4a94-8b5a-b04423c38b0a 2e3bac6f-e4e5-46ee-8d4c-018bca808209 b965f962-d792-4df6-886b-f6fc1b84a037 0e1865f9-a20c-448d-9604-c1edc5a9380c 5815b023-a5a5-4964-af54-239dec48e658 35be6de3-6082-4283-b834-bcb710052856 c4069b2a-04b8-4f0e-9ca9-e2a74b58ba18 e3165e4d-877f-466f-b808-2967abfdf008 14edcb45-e5b5-4839-ab54-37a7e4782977 92bd02cf-130d-4f9b-854f-912e57bc2898 e1813461-d487-431d-91b1-8469923110ae 46cbaa2f-1e7e-43df-aec4-79bef0a4d40a 0af42933-65f7-4c09-8e3b-a300431dbc7e 51f2c89d-466d-4ace-98c4-736332cc84bd 58fe6a63-2ab0-4db7-bbfc-6bf23cb927fe 8a2d3aa7-715d-464b-8013-71eef2c37f75 9e103234-b210-4b92-9795-3980d8015ee0 72bdf178-3d9e-4b31-acb4-45aae5278909 93f8260d-b8f0-4ef7-b3c0-135b07179419 125ca73a-85a9-4701-af04-5ba6a56a225d 354089b8-7e5f-415c-bfb1-dc382708bd53 a82f3a3f-5887-4c54-945f-7c027725ba74 725c3fef-31ad-4d8c-8fdd-cb9c2dd1f85e a93abe0a-0b54-4390-8a64-40a51bee5918 0125b098-5095-45c5-92f0-baa7ac53f59e 885ea471-ff1b-4293-b117-1984d176f08e a3610a6f-66df-4ead-9a4a-970f0ef43d55 2c4c7a75-ef41-4488-bcc9-d02453520d34 45663ed5-cb2c-4bc2-b5dd-bf8594787b97 57cf543b-9040-4e1d-8ef0-2011ec2f9b2d 4b49070c-da2f-4a2b-ae4a-ce2a7263ff62 b61ba0ea-5b71-4484-ba47-15a787726a2a b57242fe-66b1-4c68-89fc-d6fcdb3af788 ff1d3673-2ff4-4bd2-b891-d501e1976be7 5a4d9754-3d10-4f62-b0ce-7371fef5dee3 ff44351d-338b-4870-b73e-c5e31d73f68f 1ee940f4-9d7d-4ea1-9903-ec1359005b8f 018787fb-30a4-4878-8c17-b572339cdd0c e01a6bb8-dbd2-4c17-b911-86f5088be7ed 5a762ed2-e8e8-467e-bf29-cb4ad1431edb 75f0f490-1621-40fb-8632-850387021683 06f7add4-d240-4586-bb3b-2ebf686683e6 b50ad838-0b67-488d-8cd6-6fd199667d59 13bbd498-6dbb-4d71-bfaf-d402fc346da7 5a11bd15-e80b-4d77-8c9d-33974edd03c8 3d28570d-741c-4267-86d4-0d85d1f63989 ee25e567-45bf-491a-b913-372f91d612f7 6606437c-9cc9-40a5-bc4c-519b0324663f 0b88a0d5-145c-42af-b32d-fe28d9a6ed03 6d468967-ede5-4d72-8b0a-958a8e035a06 20b4abc5-543e-4ed7-82fa-d5b8157fd25a 713d9d76-48e0-4b1e-b5c4-17479f237729 89da6355-4d7d-43f8-b72d-c1746fab03de 37fd5292-67d6-4165-a194-f0d13db20089 db76c70f-aee2-4875-8f67-5f0c1e26054f f273bfe8-abdc-4394-9da6-e229f237ec51 1a2b5b70-9c0a-448c-861e-ac8c5d5832b6 92b96beb-9907-48c6-be35-fe806a501059 95866c34-89ed-4712-8bba-88d920acecb1 33e0a937-a5b6-4e2f-b9d9-96b9eaf9370c 32ec0217-f761-438e-887a-6e0edb35d9fc ece8a4b6-edd7-4ee5-b15f-ac1301bc4d11 74b6d1c7-812a-4c93-aa9f-d3fbca9eeb9d d10bd93e-d7df-4607-9e8c-50ca6de354da 8925a5be-6d4e-4a3f-a3ca-4f86b0fb9760 b046d27e-6b06-499d-a5b7-7261e7dc5abb 34bdfbd6-8785-4f54-a2bc-2deaa3dc7ea5 f81cf27b-2a07-4616-b551-fbb6b273b8a3 e32344a4-9afa-4dbe-a259-ece50d07d2aa e2981a2c-10ce-4014-9517-8cea438597c0 61e2f5be-e009-4d88-a9fa-d31ab6917d2d 161db5e0-ffa8-4dcf-ba24-0050f5e8a9a8 adef56a3-d34e-40dd-a007-c20d7023edc9 3dbf0836-4acb-4bcc-b51d-f94c907e39db 3ace28e2-e87e-4e85-9f1a-88f2b8d88d20 0e35748b-1e68-46ae-b1ed-63a18bee0a22 974db99b-48c8-49c1-9696-791575fa9e19 75706baa-05ad-43c3-b2f7-d5a45ffd4db5 1b3cee21-918f-451e-91fd-f8074a89cd69 9dafec65-5d00-4589-a127-cd5c9df523ca 8907a968-6441-4574-ac6a-ddc068f146da 1aa720f3-eed6-4bf1-a8c1-cb067d6ffba9 461efd05-c268-4617-892c-2b2290ade4b2 ce935d76-6d06-4e45-b2da-4b137a08b5ef 9f92096e-15c1-4991-936e-e751883c19c2 0fc41cc7-858c-4710-8462-5db205a03852 52979a64-432d-4379-9658-ec364cca51ee 0b339a82-43c6-46fc-9c5c-0728bf0f72d3 9ee91a24-6d2f-4759-9231-94d84ccaaa96 b938688f-4e30-40ef-9ed4-6737c14c8b8c 1bc9e642-e5ff-4921-b507-42167ca4dd5a e6a234e1-8c0d-4b18-976b-6d9dabb936f0 22bf5fe4-56b9-4b28-9803-5ba35b949d74 fab678f5-e3b2-497b-b88b-e7737bbf0cfd df492dc6-8559-4ae5-bf8d-7c9f0adcf84d 48d3aa05-4fa1-4478-b47f-dfbe22ba9dcc 03ccc337-d5b8-480c-bac3-4934bcca1e8d 25e269a9-bd84-44e6-b81a-9acabadb73be f0b93509-7032-4898-a92a-fcd1f528d142 bfb900d3-fe14-4435-bf65-41ee154de3b1 94658306-6c06-4033-85b9-ebebebdb5e21 5ed21dbf-df96-4b59-a95a-79515682b02e d257ed54-24be-42ec-81a9-1187a1de6b76 1ba8a1cd-fae3-4080-ac82-9b0d39a8df45 71866e80-3d49-4716-96d8-d90584880546 c14df608-54e0-4dc4-bde0-96469c67c2cd 9c239230-660e-4094-b8df-e0a91e9e3ea5 47fd33cc-e09e-42b8-972c-874c97313f45 4235c80e-89a8-4434-8306-703e0fba2fd5 1e6af79a-a273-459e-9362-b9753a99c8f2 b9ce50ef-af58-4118-8480-852c2df9126b 34ff6eb9-ab27-4eef-a0a5-0b34851d139e 752c1fb3-0ed4-44fb-ac07-03d69fda0232 26f0cfb1-8ada-4f48-85b5-7a9278f45ca7 7fe113f2-8e3f-43ef-9e5a-a7e04d882378 3a801725-0a4b-4601-839a-2485e90c2587 2dbdf148-e4f8-4ae8-ad31-48bdb8698caa 09745654-580f-4e5b-9579-9700ee0c243d 01c4a6bf-b78c-46a7-9596-ca2bc1fc5bfb 8b56c81d-2792-4153-866f-169061209c21 5be0c878-7b68-4d1b-be5b-5afbd48fba21 45255232-6410-4ee7-967e-378644a96bf1 67f07dc1-53da-495c-8150-ffecc864bc0e 01efb47e-4087-4c3c-9733-310e8deefcc7 54315619-5fc0-47c5-bc6b-f39e4557e5d1 e8e0d829-745a-45e9-b0c1-9306815c6496 50b704c8-847a-4b00-9017-b7dbcf483049 898face6-120d-4fc5-9db5-3727f066c23e cf6fede6-a8c6-452b-94c4-94593b540137 397c0ee9-7ac1-4d22-9902-eab73baa384b 166bb660-a196-44f6-9ff0-4072a2f13e5a 54944c74-79f9-4876-96e7-5b3021ac6210 1658ee4a-8c84-439c-9de8-49ee7046c0b8 0b2926c9-83cc-4c24-93a5-9841ab7519b5 6ecb7a86-02d2-425f-ac15-4d8f6f56d5a2 a021d083-656d-47c1-8c75-f8c7dffd89d0 e29090cf-3269-4b07-98ec-cb473a77cce2 d8dbdc67-58eb-44fe-b716-d9fed4155556 dd95c683-4a72-4f08-b276-11c1ee4b3ff3 9b9edf0e-505e-45c8-bd4d-1da19f25c2ee ee302f84-ce8e-4ad7-bdec-8d7a20fa2a91 f51c5454-d6da-4450-9137-fece3521df67 448f2d7e-82da-4396-9d64-d1089c60d1b1 8d1a8d25-f28e-4f1b-b58e-ea0854f335b1 3a40c82f-9836-4a81-b8ab-88b56646106e eadaf373-dfa5-4b33-ac83-b79e0672284a ef88c3d4-dd13-4ea5-972c-3a6fc4a496e4 551255c7-698b-4614-9789-6db23ca86cc9 f3bb8909-756f-4517-8e63-da8855fc37fb d7d0e704-4d95-41c6-99d9-eddded0113e7 44a5c04f-51e2-4077-be8c-c6b518ba26ba 78329e37-fc7b-418d-9971-a2681c12d10d cae3d684-610b-4d6a-ab48-d523c5f230ce fa77aefb-1124-42b4-8c71-4b5b0901d0b2 ff0d6801-6170-4d1c-8350-baaf40c5763e b9b4cc45-0a5a-434e-ba44-38d92ccd7349 0169c94e-a960-456b-b5b8-d598130eb9a3 c304a9bb-e24f-4aad-9a80-92006d59c34b 1702c55f-b36c-4d05-92c5-335ba27ef9f7 4c35aaac-557e-4760-aa36-4dbab86e2911 4623e0f9-d3ca-4bb4-85e6-fa5ca4f86f19 110fb3ff-7b14-4783-8449-c72f75a68cb4 db699ee5-30dc-4c54-b49f-99cf8b16389f fa4f219e-3654-4595-a075-e3e282495a86 44872b69-60ec-483c-8b8a-97ed4e96bff8 58d363aa-c907-4405-bd1d-7bf0071461ab 33bb1300-8358-4e8f-a421-d2a3cfe7a864 209f7033-c254-46e6-97c1-f2016bcbf610 89dab52d-9c72-4c49-ad65-2a65cfa7d977 282cd5c8-0768-4435-8ac1-19bebc2bfc36 5219ee12-277f-4eb5-a148-3973275eb579 a476c231-7b7a-4aee-a2d9-719f9847359b f28fe865-b30a-4e07-9708-151fc66f52aa 9d5b2904-4629-4f2c-96ac-31ae59fd0a5b 5c492555-643d-4979-9e2c-e170302aa908 9b29db72-0719-400e-aeb8-a35753f5f896 a2c05949-9a70-4250-b27c-8dc4525c6c88 0e68be96-2588-4a85-9694-d6a887dd6909 ae413bfb-85e7-4f9e-9791-381935575f51 36a8a228-31a1-474d-8488-cb8cfc96b8c3 9ced2891-e784-4dd8-b8af-766620db48d6 bea63802-55fc-449c-bc15-3d3e57b6f906 f4bf5b34-df7b-481d-85ce-5714b5aaaef2 104b5aed-d2a3-45c9-92d9-c409afac7f72 7073457a-b128-4579-8c63-0570368c4cf4 c85eec01-6fa8-4f12-b2a3-d8a61eb94778 bab1845e-50a5-46b7-8785-61ca6c46c949 37451bf5-22f1-4921-bc68-a3efa20a2311 ab8f6466-2c7d-4497-b1a0-68485d20bdc9 04a02d8a-4acb-4515-8f17-dceb439892b0 4f6405aa-307f-4822-8a45-93851f849f5e 2889ea7b-7dea-4498-b692-6bc8a96488dc ce8134ec-475f-43c7-98b1-a8a4cebfa2d2 af821eec-87ec-4e63-be5c-182b3a6a0caf 90f9577b-0007-4464-ba42-e1f1cca011c5 a5e47d87-f69e-4cbb-a1f0-77f4e78bfe0d 5d52cdd3-356d-4111-b6f9-ad87a039dc4b 48344f8f-025e-42ed-b177-db5666a2852e 28a13419-3d42-4185-a013-e6442d43932f 9a58582c-c63a-4976-b073-c1905a350f64 c5abf783-38ad-4b6c-b7f5-00d54d167a27 ab119de8-0dea-4349-99b6-c4d160be51c5 0db0f17a-a613-4f07-91f8-861f44266cb5 8a350e6f-bcec-40e8-acfd-1607436184b6 94e8683a-e8c8-4f83-84aa-54562416b542 c3e5812b-c4ff-4546-ab4b-4098a7cab811 e18eb5a3-072a-4226-a60b-4451a556c0d9 5c2dfb9d-c76e-41e2-8ce8-cbe0e55d01c6 cdfb1fa5-4db1-4686-ac35-bd8b6ae80c2a 0fadbdb5-4c62-41ed-974a-60b2b16f9546 b8f613a9-90ce-4211-b742-47117f388cb4 47acb409-a3b0-4b9f-87a2-f3267005a1e3 976c4920-be25-4010-a16f-a467781466e3 ebcfb42b-de26-4c9e-9d2d-bee8548d7286 a24b902e-b436-4d2a-8e50-967291297de5 6d7cf1c9-5f8b-4ee8-b71a-79821d32d1cb fcf0d15c-bfec-4aa4-aad7-e94ca2c92e54 632d4bfe-c979-45b5-bc48-da017502af0e 6c050b71-7ff7-4c07-9206-004a109907b3 425e142b-453c-4e5c-9229-43033e0992da 9bb8bfe9-4a8e-4a60-9a62-a763166deb6e 05825150-f085-4af0-86e9-88956b16ea3f a679911b-608a-425d-805f-b3f4610db0f9 e276c590-9048-4c12-8de4-eae210c08a79 6c6f6348-4d6e-4b3d-bf72-d2b965ca4b8e 67f9e4ce-1fbb-411b-a38b-4304cb827577 d068efb9-c1f0-4337-8227-31323fbd4b11 db191b8f-0488-4ef8-9088-4d17b15961e6 8c49b30e-3146-4e80-a918-c428300301b6 0ed75c2b-214d-4189-b4ed-68ae970491c5 5927c109-8e71-4a52-8e30-c75f8d89fb37 ed47f21f-c17a-4657-a1ce-b45caa77557a e8f5525c-e035-4900-b190-f4e0607b4e4d ac5d14af-7fe0-4c4f-8732-5f5ef48ecd3f 7617f7c1-0caf-46dc-9d13-d84122f76c56 6f968c76-742c-436c-af05-51f4c6e151c9 f62cb6eb-138e-434d-8390-141e67791603 59d7a851-2e49-4484-8678-4b2ba1f1226f 7698935a-145e-42da-b594-855c7e832623 06d4f860-6025-459b-a51b-f3f6b9f520e5 1c96ce9c-034a-48bf-8103-2ae7c387b3e1 1616a194-2311-46a1-8a11-ec352a71bb5b b6915641-90de-4e4b-971d-9654087311e4 e6d81ba2-8fe3-4249-8e3e-9acabdf273bc 01f4d708-2977-4bdc-bbba-bb70ced7fb90 b6d8ea45-7344-4787-ad5a-a87f51329890 10ba13a5-a169-4078-9ee3-6f90a876b7bd b29eb586-9afb-40fc-b0ec-99b2fd8fb1bd cf3c69e2-fccb-49ab-88c8-34a9da266c8c 64d530c0-1146-41db-b3de-6c35d7727f33 608b7d55-ca51-4859-ba28-e4a78b9be858 caf7b857-1c12-4992-8227-a924ba0a7509 f92a57de-71d4-4085-a3d7-963eea8ecd39 14e75af0-b764-4323-b510-9a41939df2b4 57396372-4be4-44f4-9100-b30c7dda962c 9fbbe50c-3187-4223-a843-b39ad91032c2 ca170a02-2a6a-434b-8be6-4e601c8ad321 d6617910-96cb-4323-bfb5-42f39983abf4 a49d3955-e56b-40fb-b2ef-9be539277b01 519e7c57-aedf-449b-a4b3-74af8e58aff5 b8ae908b-ec7c-488d-a4e3-529af07cf5f1 42317512-332c-45b6-a430-b6236fda92fc fe090560-e146-4157-a994-903c24052c6c 7c59e1e4-ce8f-487e-a561-8dd5b7369c1e 6bdaab7d-0b53-480d-a474-cabe85e26ab7 0d046e3c-57b6-48b4-ba83-d4bf2bb461d1 4b35602c-7888-4a2c-b352-07fc19d85308 63410f44-5fd2-4069-9ed5-03fe7c1d0adb 9dc00faa-f3c9-4a7f-b4a9-04ca26b8fdb5 30ffd658-3aee-4d93-97d8-34eba165fbc4 9f26f778-e76f-4b77-b8a2-32f199c94ec6 67c7393c-93d1-4549-8c54-ae529c0fc00c c68442db-cf9b-4b22-8217-113ea610659e a4b5edfe-5561-4d8c-b540-aa138cd54c3a b7ba98ee-94cb-482a-9001-0723ed1153c6 ca9bf1fa-1dfa-4a86-9647-67147f2eab37 1e93a817-3764-42da-aca4-9fa7dc4dae0b b99ab07f-9bce-405a-a103-1c50b8e9f337 ed02bb0d-2d21-4374-b19e-6b5e40a56332 19fa74c3-ee80-4e5d-b47d-7c1631074296 090ac135-9da1-4c16-b363-9ad1358e72c5 90d40242-49db-4728-a7a8-bce308a3dca7 32348a77-2f59-4ae8-a4f4-9a307913d6f6 e2d8324e-fe54-40e4-98c8-21b7abd039f4 7bf5f3e1-01ef-4eeb-8e62-691dab54a3de 9299bdb2-8cf2-44d4-9004-05e5eaa28660 d4053cbc-33ac-444d-9d75-ce8950363d05 c300554e-8ff0-44e3-8294-f6dafc9bb829 2d5c3b63-5d2c-4c0d-ab9e-08c18b019726 7e9ed6b2-c308-4c78-b200-e29621a12afb ad64eccc-5345-409c-95ac-256c54d6898b 7fde7e31-d0a1-400a-8fbe-ef5c589b46d5 de122552-4702-4ce4-8485-9c8e8515765b d7100a5c-d829-4acf-9acc-d4f3c18d8896 26d4b034-b658-45a6-b465-849462d051f5 156edeae-5bc2-4a09-8e59-0fe36aada679 2c0f7961-f9d0-4d0e-8e5d-69195e428a61 5cda750c-59e5-44f8-a4a7-e8a2b3a0dff5 5cf00369-ba54-4848-9843-9cacd8da7aec a9d61e51-c8d3-47ef-b6f7-06f417353306 f0bce65e-9b23-459c-b533-6cbbf616c8f9 697ef817-6f6e-4783-bbbe-5f7e02365afe 3b2ecfd0-c9be-4dd9-913b-d6866cf29ba4 36cf00f3-5759-46b0-a4df-49827aff0202 ee845203-cb4a-466e-a41a-82927ace8eef bbf9dcc4-1182-450e-85d4-9dc796d1f021 c57f6518-8851-4749-962c-f8c0aaccce22 47c62876-80fd-42b9-b738-bd356d541b11 0927021a-e759-442c-b7e5-bc55c260866e bffd6f9d-fd10-48ad-9c63-fca59a841f49 5a15897c-d0bd-4ebd-bc8d-35b4ff2ee478 c3c8d34f-dbd1-4200-b90c-51580694a483 574b5f36-5b78-4dcb-9ce3-ea9aaab08fde e3a6c4fa-7456-458b-aef3-42727af7d4a2 c24130b5-2409-4bb0-9f79-fd9465b252f6 99095909-f5fd-4115-b623-93244c958380 7f80db57-2b7e-4632-b75c-1915a956d021 4e57fb77-d0d3-46c9-aeb5-79be2e05b2d9 40ad35fe-4d49-437d-b959-16ef9183fa84 74603a63-8f77-4236-b4d0-08ad6ec58ddb 5c7a88aa-a308-49ba-8651-899dee9f70e1 9a481f4d-384b-41cb-aeb3-f8534c543276 e79f20d7-bc31-41d3-85fd-494efc2b5301 f7b8746d-e153-4275-9c74-c78d9c034fb9 00f6fc74-3f3d-4cf1-9e2d-9f34f26eb52e 61f0ae28-0b80-4457-a41c-21e88c6c3da7 dfea6475-ab57-490c-8bac-90998c119183 615c4350-6a00-4b7f-8964-ad7909409cbd 9e1ec76d-24ee-4d0b-b8e1-ba268d5eb495 c30eba87-652d-4b58-8f4a-1d8d45d08931 20c65619-b777-46ca-987d-1389e9e46b30 d1d9af6f-3aee-47a1-ad84-125bc1c58ebf d3f994f5-76b2-42c6-8472-1cb2d2367552 04dba557-f492-4d52-a7bb-82616562efb4 cba2e7df-4422-49a3-a559-f52c5f0f8f7f a9bae0d7-3670-44fe-b00d-18059f8ceb98 fe561fed-1508-40d0-add9-a68d945985c4 518c6aed-9416-4b86-be55-ee793cff6111 2ce71bdd-6210-4f3b-a000-5407dc20ac63 29e3e712-331f-4dd5-9473-e02720a55b22 848805b4-670e-4f2b-9dbe-29b9ed8ac505 3e231732-5fd8-41e0-9652-7d0d7385bb3b db90e5dc-7e16-4a27-beb4-b7fed39178a8 4d89e9b7-bd9e-462d-b2c5-abed0ede3a32 da9b6c62-83c1-4f34-9704-200190064106 f3c422d4-3476-4e01-8bb6-6caa9b9c31b8 3925d6c6-7d63-473b-bf18-00ef2cc87ae5 211e965e-7cf4-4f34-a116-65361a21e03b be0b87f1-448f-45cd-95df-9e81a9f34b12 833bbfba-a265-475a-b7db-a23872d4e2f0 916f1348-2572-446f-9618-a09ecb21601c bbacfc3f-bb6e-421e-9305-0de42f5d43d3 d2725c1a-4f78-4f46-be92-c7648ac02a01 848a64be-5b78-4c28-aa85-cc9f6394c562 6d68a92d-3485-4493-b245-c38400cd57ec 0d982eac-a48d-4668-a1a7-66d20dd4b4c6 c7407a0f-9a58-49cd-bf9b-80250cbdf00e 74312578-b3db-4feb-b170-b6b45685d33c 307d05a0-c1d2-4ed3-b898-5796a59255c7 7e36ee3e-8e63-4439-96b8-5486b63aa0fc 1e06e357-d1c8-4071-a038-1f7cd2307045 d44e186f-deb0-4148-bba8-2db228982d1a 7a78b6e8-ecbe-4e24-90a3-e5ca5b2162fe 17c13498-8c11-486c-9e3c-f4e994bcee10 f7ba3b84-2445-4b04-a129-f82c4d5b5ac8 fc96eaec-5817-49e2-b684-32f4796b9cb9 18089797-1100-44d8-a2ce-88e7d2eb0819 f909d9de-0634-4acb-8c18-73d80e3e17d7 73f35636-ee3d-4a66-be51-bf549d911b13 845b3f5d-5dec-4e96-83a2-993c5c8d9ca6 46e1fb50-2510-4532-ba75-bcac82adcbe5 ed3c333f-dac8-4a25-a379-28cfefe709bb 815293ad-3c39-4adc-845f-0ccb0ea8aadb d5b9b3a0-0a7a-4517-ad54-81cfdc977334 26c2bd5f-3d90-432c-896b-7a69c34ed3e8 ad4f5713-6e3b-414d-82f4-6bb71d8635a6 e54fb044-a21f-4699-8420-84897d7e1d33 9a10f810-d4f4-47de-bb4e-387727c1d5b7 fe7f7489-870e-465b-8a67-22288ff3713c 3a0a51a9-119f-4c40-912a-ab2590ea4555 06fa3c14-b880-4be5-b8e2-3b497cf966bb c8578ad3-011b-4a4e-8754-d2e075e1a87e 5f925ea5-ea86-4b9e-87d4-9456372bb5ed b076c84c-6ccf-4d3a-9bd2-3938f4f1c61b 82f5b44e-5545-40a0-8789-1f51732d3d06 9c4fc194-7442-40ce-bce7-bc5c2156eacf bca56f44-a331-4099-8931-f72636af2943 b0901b66-934e-40a3-8c1d-dbb1b199024f 454d6945-e746-4bd1-97c9-e1d849abfcdc 44d993ee-9945-4975-b65c-e4dba5636396 99f42ad7-425a-41f7-9a55-53fc6c544b60 bf3e4d0d-1a74-49ef-a5bf-015a95d90e12 d1008b69-1e2d-4a4c-8ac6-2414133de88b f2213f4c-dfd5-4aa9-b95e-2f681347192e f0414468-9b23-42df-95ce-0082d76ffb29 9c9ea8eb-987e-44ac-990a-ccbea3e684ac e40c7e32-4ab1-4483-8e23-b0cb5eea506d 1c196c8c-0112-465e-8e6c-6676beaf4ab0 6e488e87-6a0a-4e33-8c93-9ed08e4b38a5 d6106a02-47b2-4c26-8553-d6af84d743ac 8fac11bd-d4f7-446e-9b6a-e13a42215754 65b909c6-c2f2-4592-a1f2-d073aaa39df5 7b0ad0cc-0017-4727-9eb1-abf7b1673790 50938559-0207-4eb6-b2de-4c04146b3567 7b70b0e2-1143-46da-82d1-8e91551d3c1c 29f497ee-e9ca-4227-8ee1-bfd81f6c24e3 a48629d5-02b5-4680-961a-a30042fae868 61e70279-ea2f-4674-be24-cf7ce5ba37c3 a059c484-92c3-4e9b-85e7-475baf3a4fed 512b95d0-a1f9-48c9-b260-924e69388fb5 68cf2a4d-5722-4ea9-8908-4658c559ab7e bc39dc14-cc8a-44c9-8fef-431f1e765e77 740d23ff-9106-44a3-94d9-bc3270520b1b 1b41a0f7-1106-4aad-b68d-004717ec9380 470cc531-f210-45f1-a4e4-c5fd26f4b51f acb25540-5f89-4617-88bf-1c28646be932 54c7b682-8248-4588-b74c-065d7d206be9 33662804-bc05-4c2f-a457-fd86d8459d81 7b12c578-a5f5-4e05-b283-3aeb0c1636b8 8bc73a2e-4ef0-46a9-8161-2f5edc3761cc 7a46b935-fe89-480e-bb91-b861f4d83128 97885a61-cdaa-4d0f-9815-a4123f17d60c a5a44c09-1cc8-4e81-80d0-e42b7f8685d2 3a378609-6121-4032-be43-1995e6eba9d4 fdf96d11-ab47-436f-868c-ae26b036923a e7083f94-8411-48ae-a47b-aba57856a719 21bed5b6-2cc0-4e96-a3dd-311edd3affa6 9e9dfb10-f81f-424a-be01-b26499ad1c48 07d91c16-6187-4799-bed0-20d88a73c5a4 6fdeed3e-9777-4927-92ae-d4a8c0a992c2 c1b86974-321b-4b64-a4ef-8a4778f2861f 5d3b441e-2d9f-4c68-8b80-9ba561cf944d 5c6d08cf-2e3c-42dc-b7e4-52303d1706a8 b1a41985-9873-4457-9e22-0e416e61cc3e 7321fe0c-4cdd-41ad-85d3-8de7fbd6c856 e8d53903-5398-4b6f-a073-3ea890f328b7 8cdec8b3-e1e7-431c-96ed-1f9385502d11 06e49fe7-3804-4ad4-8bdd-cce530acb81e 5bb563f9-bf6b-4525-a1c2-a848ac202a78 4e30e273-5958-473a-b8db-ec5a771d31a2 1b16db76-c70c-45df-a22d-fbe5c58e633a c52ec8f8-1536-48f7-a9c0-885982ee31ec 69421f1e-4de5-4cea-8058-f0be022126f7 727f717d-ead4-4701-8458-83ff571a61c9 bf3c3b28-5e39-426a-9132-3ec197c8a5a5 1b337966-93f8-4cbc-8903-f8826a884063 d5cc6aeb-c72f-4491-8290-5c23e7088620 54722d33-16dd-42b1-bb27-ff4308f5dec7 3068abff-5f5d-43ed-a2ed-753660c2ce39 0febafa0-339b-4f1c-9e68-1003447a93c4 37775763-b6d8-4657-86a9-898b55f545f8 c7aab900-7dd3-408f-ba2b-9759945c5918 23fdb00d-4f9f-478e-b69f-d8ca1dbc56cf 6780dd85-8031-4519-85da-9af51e2ab7d8 6658b9e4-37d7-4e8a-afa9-54dd85cfc66d bdca8117-825c-4830-aeac-e6758c65a231 0ff4f6c8-e520-4eea-9282-108cb69021fa cb11c511-4180-4088-adc8-43760fc05b97 95812a5f-0dee-48b1-a506-9db7763daae4 0d84941e-9091-4844-a985-127c2e31fa17 89f09306-7113-4659-aa42-b6bf9bc79191 a0266e2c-10dd-4e56-88bd-1dc25165449c 741d102a-c99c-4465-bf82-9ad370dc5589 f819fa54-e1b3-4009-bcee-7ce518069610 a5be4518-9a44-4623-9641-8e80310652ec 99be5f83-1ff9-4224-a920-94f0522f6b42 d7ad7d3e-c2c7-4314-a66a-52ff8cb15240 2d76d842-0e46-4565-94ac-177adfe9fbee 640a2276-14e0-4f6f-9574-62da856d2443 e8483ec3-aeb5-4b31-bf86-136bed86bea9 152323b4-d5d2-447c-9ab3-6afcc80c2ae4 c3865ff8-c503-4049-85c1-f0660fa7043d 684ea0f7-5c8d-494c-906f-d2b5bf658917 c1dd0364-9063-4167-b77b-c002c2b062ce 6384a623-4514-42bc-95c2-67ffd6e8425b e2f38358-5c90-470d-b6b9-2b20ae98b242 5e43cc88-5e55-4620-9e97-249ef40b3324 82326486-dbbb-44f7-bc7f-631b0ddbe689 321f090b-a34f-4b03-8845-ec643b3103d2 11ddaaec-9ceb-42a9-a8a1-92088dd921e2 1738eae2-fa4f-49e6-a834-0d5729899231 1dde8de7-f7c3-4981-b4f0-238a4c948c88 91ca54b2-ec24-4e3b-b089-2648260e8954 57f769f5-2704-4a3e-90c0-36e77577f99e 0fa1b0fc-5464-41a5-909b-21dd11ad31ca 2a49472f-065e-476d-aebd-6af938e90429 52458c3d-1953-4933-8281-2339ee5af2a6 c84e7990-1f1b-4441-b9c1-5c04b76448af a6ad729e-85a8-491c-bec7-58f767873135 d9846f2c-6ed0-417d-b278-b1cc3affd90f ee78d677-fd2a-4565-bf23-4610e03e3b43 685e9a05-bf38-409c-9eea-58969a98d3be 295cb782-f533-4e8f-8cd4-ba18243390da f401fe87-b26d-4085-987e-d95cddafcb24 024fe7a7-b228-44ae-a3b4-2859c0374202 8e2825be-27f7-47ae-ac8f-71e32a7456a8 e2dc5e10-3b62-417c-8e94-2ee9be6a4d06 49afa968-1721-4410-8432-330ce258e8ea 11218387-5e2e-42cb-974e-15e6c3fd4330 9bdfe436-1f52-4b2f-b068-672579d99fa0 c4486e04-31fd-42a6-b855-a5d72ae54df4 006a00b3-5457-421e-8076-82610e9da596 cf122cb3-8829-4a48-8ae0-89ace1821fb7 bf1b3373-4af1-41da-a7c3-8bc1eaef4886 2c1e1c08-824b-4f97-9a82-cae4ee26be4c 17e643a1-a1b4-441a-be8c-1daf43744782 5a9ddd5b-549e-44eb-aed0-3c5857adb0dd 1abdd752-c60e-4fe9-9e1e-1f7caf0910be d0fbcdf0-9c6c-469f-8c88-efc50748b276 5f4442ae-5fac-4990-94f9-7165f58c7b27 e163f44a-1340-4bd5-880e-3ee391d001d9 7eeb893d-8c14-4353-b093-113fad8055dd c6a73100-4fe6-41d1-9388-3bfcf46f4bd1 58c5ef5b-ffe8-413f-aee5-92cfd0a5192d eb5e1a82-0fb8-4e10-a402-7b0476ad4ea8 ed5c5716-39d5-4d83-ae4c-f5f8a2d3a619 a8eb2980-da25-4bb8-a1bc-89b740eee01f 332b484e-c2a3-4c31-92c9-9fee230c167b 4f73e535-cb4b-434a-b37b-a3fb352a4503 5e6a34ff-5e0d-448e-bfb7-8022d9cee59d cb89cf79-a926-4f9e-ae8e-e1182e45021b dd4a9dcb-053c-48ea-854c-b6899223be17 e6145825-59e6-4565-bfbf-12130511f570 0d2f4222-e347-4711-920c-cddbe06bbfba ca87ac76-9a93-45f5-8098-61046f9d6372 bcf131cc-665f-480c-9e02-0c6bfe7b4f04 0cf4fdff-3368-4f08-8b98-7702e088b47c f216b53b-f5d0-45d4-a118-96f77ad8ad8f b35cba5c-914f-4d05-a07d-4c1617665c16 5fdf7990-ad43-4f35-b8a2-e531d49d4cf4 05aef939-6c5d-40eb-a039-482c12cac44a 33c2a030-d52c-4e62-a760-a55543aab7f6 0bd27df0-c52a-4fcf-982c-f5ad5aae22c8 bfbe6aa9-4e49-41fc-b993-ca7eb560528b 99819dbc-a04a-4aa3-89fe-ae29dccbd0b9 49174115-c027-4e14-863a-17b03c981894 3a1347e4-13fa-4c57-9ed4-622755d6983a 5e86ae5d-5852-4a8f-893e-b5a615e400b7 b0a376f2-b4a2-4d0f-a4ab-f7bdf7cff2f5 54ed795e-4fc5-46ff-9f80-269900ac62d9 e970d235-0f3f-4073-bd1b-9282b46397e9 9caba44d-83fe-4b0c-ab82-3e4cf11a0b35 0420bb88-94d3-4017-9d13-8b10a885d47b 1152a687-75e3-4d51-a345-29db70777d06 3c4fd308-531d-458a-9ac1-3180e9574d6f 34dd3cd7-19c6-41c2-b4dd-6a9f59e76e5a 96aa0aa1-0677-4d68-ae41-33a17d9bb720 b5b7b643-58b6-4b9a-8f61-ad8f5eae5d08 dd17927b-5302-4808-96c7-8503174746a7 2de8f037-411d-4ae8-8795-52ac2eb02d97 a39d9d1c-2ece-4b48-badc-a4e7c030f7f9 c971b369-c718-4ddc-8083-a0a9bb4aa399 3c38c444-8b33-44d2-b0e7-8205a7a64b4d 846b002a-37f3-4f9f-90fb-8601964a1303 794e2655-36a8-4e09-82d7-4f7e184ed105 3934810f-da12-4ba7-9570-39458a9d4304 548e82e7-066c-4365-9210-32724ee9f289 536111ed-feba-4776-8c74-4d9e6c44a8e4 420215e6-77dc-4b31-b112-19240790812d 50156d9a-3bb7-4b24-b953-3d950f9696c1 7039f6ae-ffeb-428d-a66b-d6684de3d303 07f9124a-5bfb-4bb5-8b30-6c7d7133fe52 a1cba007-bc84-4bf8-a280-a22dc4371fae 990aaed1-d7c5-433c-93db-6da81b1dac19 12777675-757a-45fe-a2d8-f3d9ab4611c5 f0a67e7b-3adb-4aea-ab01-5871dfd8ef68 e5c69541-eb55-4c76-a903-111a8b6814c1 14906a8e-b965-4be9-9c59-55f78bce4f22 1b53d1ac-bd9c-4b56-a058-da3717bbce77 ea33dd8b-0bf7-4767-903f-90b2d17ae690 6b8d6e15-2945-445a-bcbc-69ed622ac689 a0e6423e-5a8d-4746-a03c-4cac534ad6df 69826111-6650-4ae6-8c70-98e4f2836844 cb0e393f-974a-4820-85b0-c0691f8192e5 ea9c04fe-a3df-41dc-a63a-cd63d2470403 6d48b522-f2c6-4803-ac68-155a37eabe62 3aba028b-61f9-4800-890c-b16b4145d8b9 406e2422-49f6-45f8-8831-7c35c2f9fd18 2ddd99bd-5325-458d-82c6-946c62dfd404 57cd5f81-7f3e-4e75-971b-f1ca4bd8e63c 375da324-9b4b-40e7-8efd-80c7f3e6437a 24f8c824-1a93-489c-99b2-6024d015b391 fc5ab63e-0358-4e3b-983c-c25136cacea4 802d33e3-ee3b-45aa-be48-be7ec98a7f55 462acbc0-f166-4eba-96da-72e1c05f5b39 3b041a07-f5fb-4dde-b13c-bf1cb79b20bf 79341581-294b-4445-9f7d-a7f6ff0a5265 d357e41e-473f-445d-a1ea-310b9a902e3d 026ab2f9-e783-4776-9791-e8d79d962c97 a808d4d2-c6f7-40f8-ba3e-26ffd782bd29 e18c3695-ac9f-44e5-87c5-94f210660e66 04c7d5bb-ab70-47ab-838e-83b8fa3ed1aa 68d7c68e-5223-4a4a-950b-96f3095c4140 37226ab5-1db7-4932-880b-e63f7aba5b46 4c48e1c0-00b6-4a51-961b-9ee5bcbb9918 0d34656e-6d70-4f22-a537-844cc1d54280 74600bca-0e31-4aaa-8117-e6e3cabc8f28 f3e71450-bf5f-4b57-a171-217c15e5f3ae 30f46df4-79bf-4fc7-b22c-34ebef945ea6 7e2409f2-153e-4810-8e38-4be52d7e3879 32a0d603-dd3f-4b59-a960-67e7242364ca 2d2b2f8b-d6b6-4cdd-9b2d-a80f540e7a12 c78a7cb7-3c99-4d7b-90f6-5d07ede7e08e 902115e9-1b7c-410f-ae70-861834106644 98284372-ba18-4bdd-9f8b-cbe7cc5574a5 b589bebc-4470-4f08-b25c-1751796c9f96 5ed2a0ca-d40d-4c2a-9f30-448172979af4 e9716da1-cdb2-44d0-ac36-9dd679354258 0e3d36c2-e1a4-48b8-9d3c-0452d74582d5 db30b432-dab3-4a53-881c-adcdc9724b33 82a43bd6-4083-462f-8125-01523bc3900e 05f55e8a-d86f-4631-b891-f46a2c9dba06 d343416e-3ea3-4b2f-82f1-27c52645a473 fa0b727b-f37b-446c-8f7c-e32909161298 7f12b731-7a75-4af0-a8c4-b1864b396108 5573680e-6455-409c-acd3-dd6edc17fae1 d852f9c1-7f8c-4b51-88f8-95833e088e8f 7e4d5ee4-16f5-455b-8db9-cdbcbf68b425 84a00ef1-c20b-417b-bd2b-9f5906c3be70 8433e0a0-9114-4a79-808e-adf5e46c04da 11e6b270-784b-4403-b053-85b462173b80 8e83bb5e-1f86-4d53-bcff-a547740edd10 b8595dd0-45ad-461f-862c-018d746e16e8 662bab41-b35d-4398-8136-d1a96636aa10 b433a91a-28a3-4016-8698-107c369d87e0 40fe4206-be6d-426a-be83-1502aa3b6c82 18d65891-c369-433c-ab26-174db1737c2a a6a42b4c-13a6-4500-91a2-ac44d44be1ed 096ccba2-f815-41c3-8f60-416ef738b2d4 5aa4158e-598d-443e-8324-84ca14442b44 bd9b26ce-c04f-4ed5-a295-6e9a0ef15b10 7dc0b217-c53e-4ea5-bc65-05363104badd 69f8e2af-016a-4768-b928-41159b2a7ad2 8d4a3d9d-4a80-49d4-83f6-2eb4ac40cbf2 372f65b2-a2f9-416f-bb41-b30ea612d9bb 5ba1346f-f833-483c-aaf3-e5632d3b9c1e 7fe4b009-74a8-4d98-a5c2-c6a5155dfda3 cf7759d2-c9c7-486e-8751-f96a8c85bd46 d8e4ef68-234e-4ef0-8714-1823f84208cf d2cb8463-a9a1-4002-8593-3b8b18de558c 494594df-d317-42f9-a203-4ea479751ce7 173d174d-7d7d-4011-98ff-87a901641c9e 8b28ee3f-1da5-43f8-82fc-b2c7bf954492 b4761438-c11b-4ccc-bcdc-87d8d3bd4ed8 9554955f-e2aa-42ce-968b-208c78507e7a 16ae7b47-4af5-4ccf-806e-b77c076929c2 3b026388-ac0f-4b40-b89b-660132fa9297 73f361cb-e6b5-4682-b707-7c37f56270d9 737af120-81c2-45db-8d9b-7c91b6e82024 3ce8ea0f-e4d8-43c9-941b-b029c2a8d85e a5bb5262-dc0a-419d-955d-8274493f2bfa e04f1b2b-0aa2-427a-8637-3af37d399430 916170df-95f2-4344-887d-84314df86556 b9c2d0f0-51b4-49c8-9486-5844a0fef6e9 b0537f22-5f08-492b-876b-f29558d8bde4 b85bdbd8-0991-49ff-b837-61ba0e0ff185 d17156f2-794d-4298-9413-0c774ba81540 bb5cea30-30f5-4ada-bfd8-59db51c60ae8 10cd2a43-c155-489a-8a35-6995c77273bc cd2e7ab3-170b-44a7-a3e1-375827b62b60 89107441-9be2-4558-b88f-c041a482738b 0b330b5b-6155-47b7-a47f-a3ff0a363f6d 7299a5d2-70c2-4256-af2f-42e8a56d26d3 9b52f6d3-a363-43b7-8d2e-2c07e5cc712e 65290622-5e19-40d6-9906-fb152d71c895 322f207c-b15e-4efa-b007-f1892a91bb7d e7612c01-22fd-4e7c-a760-a8977a790352 6bb1822a-a1e7-4566-b55c-c554a5f86a86 2dcdd70e-9c08-4fdf-b2d4-45699e80c44d 75f164e1-8963-4c8b-8d79-aa7427645b5a 2cab6938-0033-46e1-b0f2-08b8837446c5 15bad8b4-2032-4ac3-81f2-0f6f719cb1f6 c7c9fe9f-c2c8-4096-a759-1827547454d6 11aaee36-ffc1-43eb-af99-9d66ab0276b3 723120f9-b524-4e95-acad-d88d09d7a485 3d157e7b-7970-4c0e-ada7-1a7e675b33df 2d52ddc6-c4af-4580-af08-d12ef1c1b128 013ae69c-0acc-4445-be4d-c39e0c026275 2b26db0e-268a-478e-a054-c6535065b1fb 6c428791-c8ea-4e85-bc68-852e7e1777fc 77d24a45-e16f-4db4-bbf2-5d80842dca8b 0a2f6d3c-4c59-4966-b1fa-b0a403cb48f8 11d9879b-742c-4916-95ee-efdc89ff44df 842bb66b-daa0-4841-9b0b-a471b8d514d5 9b9e6bec-c889-48c2-a3cc-551221e481b7 19cfb1c5-37eb-4011-9560-226178f8d0ca 15ef0b0d-b36c-404f-aeb8-c4ed0a0564b5 f64555f6-4c77-455e-9857-918a985d9d2c 95940a73-f833-4a2e-b315-335e82482ce4 53162eba-7a02-4d5c-b8e3-76f60e4fcfc0 6fb67e16-ee76-4c34-aab2-290b5e219683 25410648-ecf5-42ba-823c-7d3fa9e3f980 c78adc50-14c2-44a0-b449-0d7d30f546f8 31a8a965-a389-4fbd-87aa-30601102ccf9 60172432-5cc5-4565-9c6e-16b28a4dc83b 93d45dd1-2f31-46cd-81e6-90aa44b11df9 17591a84-704c-4ea8-9de6-b43457615645 0bdf37ce-9c59-4fb4-9a94-aa7b92e49e0d e1b4f13c-8306-4543-91e8-0ff781cda306 78a6b982-2511-44f4-a46c-ea591ddc9a87 4ec19bbc-bee6-4c12-90d2-df18c201c17c 1b38b2bb-b831-4dcf-a73c-3611a30bc4d5 53772885-ef76-4b9b-9016-f481c9c65783 a5fd135b-9ce7-43d1-aba4-7464f4dfd020 93ba9ff1-d844-4667-9bdc-0f6f07a4600b 86482b55-4466-49ce-81c3-aa77e7f9c1b3 911698cc-6f17-4bc1-8c6c-3737c0742e86 6be405c6-1cab-4237-8257-31b80061f764 8f1dc3a4-430c-4036-9ed5-7feeff5a4f76 56242185-7dfc-41a0-898e-30d6dd8047e8 7143c144-c969-48db-bad5-15beb6560c3e 1b8287da-6bb3-4b76-bd0b-fe67f6a7aba6 d9090d8d-9609-46c8-a120-68c442f6fc9e a5608c53-1d17-4f01-91f3-fe1c86219ba6 2d2ccd3b-08a3-49ef-a4b0-b3975d63732b a7680427-b068-4beb-b37b-2323c8332c60 25a7e198-ace2-49e6-b1a2-44b39d0efef9 9b24540e-6661-48a2-8238-515b64487c87 2a51f1a0-5334-4059-94f2-c92cf0acc28f 10b21c1c-0f57-4253-a648-c14ba0b2738c 712429dd-2518-45b9-8f7c-cbf05e7a932a 87df2a56-6823-4954-bdf5-5f82e4fc4cac 47da684c-7692-4930-8ec8-c4ac4333fa0f eb24c64e-023a-43f2-b275-42418316561e eb520402-01b5-4eda-9bd6-e0e8f6a266a5 aaeb45c8-8fce-4877-8117-9ff9e5c5a592 f38b56fa-9df8-47fb-8515-a2fd49876787 981d63ae-3ed6-4bf0-830e-0204c1a3b285 e091a4a6-d185-4413-8b3b-7e3b98f0e1a0 ae63bab1-638a-4bcc-acea-b74dfc2bc2cf 8ca64073-5ac1-463b-9137-58771a5f1b18 21258736-228a-4867-b9fd-680d11d5131e 83d5bc8d-4786-4167-b4cd-2985fa40bcbb c835c7f2-579a-4a8e-917d-8bcf441b0b54 64704892-ca69-4555-be52-698965cfaf34 5b52b556-b5fb-47c6-8639-e5850222d34c b97b5e58-b228-4916-a3d0-65a1f68d4ccb f88979a5-a0a5-4d33-808a-7a86e5cc0156 ee431031-6ecb-4b26-9110-3840b6b4f145 b2c85330-366f-4a3c-9192-5557f86848eb ff8119e6-2ca9-4c8b-b3f5-aeed03b28036 a0108c19-3bc1-482f-b4f2-7ea620d9fc39 75dc8d2c-2f03-4801-9bea-8964cf5dea8a aa0184e5-b1f9-407e-b7a9-b03a240741a4 b0998f57-c5f7-4dd7-bf61-9cb29d94dcfc 1ccd4e29-7645-43e7-9e49-b9fd292d5c58 dfa70d03-985b-4c05-ba48-072b15876c40 32fc4b53-3239-4a55-9323-c9b506325f88 43850bcc-f721-4b93-9a92-716e15ccbbe4 85b3bc6a-c05d-46af-8cbf-3c5843d42967 fde72354-9ce8-45da-89c6-7b21f6a501df 453d9026-908e-48b4-bb7d-b86b71f4f498 5389bc8b-9179-4ab6-a578-2b542e2d0f33 dd32e39d-0736-4b28-8631-6fc5990f3a28 19a57da1-357a-44cc-9b03-baf8f8c8563b 059eec24-aacd-4baf-badf-547ac5e2cf8e 2ba86fad-fb8c-4a72-abd3-42df6d00ffb6 d04634be-e6f0-43d4-80d1-2936f4fcbab2 68280988-6134-4416-afdf-f02c0d6bca2b 512e1f20-008f-4f82-92ad-cf74ed1dc538 3b6d0471-be4c-4926-b89b-cd354f4be7bf 97c7ab7e-d03e-4758-b092-519331328e66 e572b4b5-2b7f-42ea-a46f-e7bd20b56b09 94750ddc-2069-48b2-9b44-ab8ab761eb1e 407bfec2-f5bb-463a-b44f-c52a89dc8e81 fe1f6ee1-c8b4-439c-a4f7-f9d4a47c09be 37377edc-b2ef-4f23-82b4-7c2f477e9f0a 0f5c0087-53a3-4ef5-81f7-6e5014b5092b 45977bba-9089-46c4-bab5-536621fadefd 42ab767a-4685-4d18-8cd8-4831c78bf101 bf990c79-a79c-4796-bcfc-198e59162f4a 1b7f124a-972a-4241-9bed-4cde29f33b40 d9662dc3-7576-4668-bb7e-ed1781aaea6b 896ece45-80ab-4336-ac50-c455a6152639 c69b8790-af0a-4ce5-96e8-e2bb639e6193 4b652ca1-3638-4669-9c44-271f613fee43 a6b8965e-d8a5-4c55-b513-31a7ab931cbc 90bd0eb9-eb29-4627-bd79-dff211fdfd14 dc42699e-c868-40d7-a4e1-ce4954b3b36b e5003ef8-39c6-499a-85da-3c5f0ba0f223 30ea9502-d3a6-4359-aba4-92d975f52f6d 22a36f9f-b687-4337-9ea4-d047569aff38 900257e1-a513-4401-be72-b75dbfe42f33 af3f1471-5434-475a-ba23-3abef4c10188 b40186e8-3b4a-4679-a487-4ebc82b16244 9c956324-b975-455e-a849-09286a957379 4eaaf834-81f8-46e2-9201-f97332f873a1 6456c03c-bfe9-4738-97dd-fcadc57ae5a5 9eca7963-818b-4971-9d03-3cda2941a1a3 d936f7c8-a793-405d-915c-a3c94eabee05 b025de7f-6ebf-4c23-adf2-b87de681ebdd 52afb8c7-e2db-43db-9bfd-c4bbc2a0dd61 74565dbc-5ef0-4635-96c2-f64d6f229a18 81a08d1e-fc22-4fe7-9dd1-037e13770144 38ce5124-3043-488e-9adb-7fdad4af11d5 cbb57e91-4311-4e1f-8a73-334c39694d35 f661a0bb-03ca-4ad1-9bdf-4b72f9fc763e 092f7b0d-3c04-4274-b1cd-70d1421ec99e fac74a61-0c27-49d4-a8d9-2f1bf1b406c8 36710273-bed4-4782-b8a4-7933e0465e2f 5761dc45-d104-4137-952f-6bbd5aee83a0 503bb8bf-fb55-4f02-a806-c78cc1ddd32c 343ddfd9-0cbd-4b14-8b06-c69e69cc7c98 d8e02089-4560-4f53-9669-7f5e1b8d356a 2ef0235a-b34d-4302-85cf-ae5cbd9397e2 cb938aa8-a7ff-4c7c-8432-353245183352 d0f354f4-dbc4-48b9-babd-7a1c19a8649f b8e0b0b2-c6e1-4112-a1ec-5c9d80408b60 35d048da-6639-4782-a9f6-892ee1e808cd 69f178d9-53ce-4a3f-be3b-5a6cd424111e 751084f6-7893-4703-8674-72bcfedc7f47 f3cc83d1-5b1d-4761-a69d-3c32d8003d2c 09e9edd5-3738-4378-90af-f7943c754ca7 a291b3b2-46af-4792-9c04-51cbd46cc835 de54934a-9d12-42da-97c6-ac803930d3fc c0e4d68d-544a-48f3-8c1b-97437e88db44 c7d9ca96-98f1-4885-a92f-3f69e39639ed dd4c42d8-04b8-4ef1-b156-af694db62c04 f83f7e90-e36f-421f-98e4-708d70bdabb5 375ff6e6-6a22-40ae-9579-be05778ad9b2 dc26fad3-fcd2-4b89-bdee-98a24aee288a e35aea56-4dc8-4dab-a8cb-95cf398eb6fc 7261f88a-b027-423f-9e61-4b8c10a44494 ed47848d-deab-4e62-943c-334976df25f9 b2ffde17-f892-4bab-9adb-cc43618d9b70 9cbcfc80-1a2c-4531-9c09-eb3449dd6afe 44fb8354-44ed-4b18-8de8-b162498f8410 fbb67e36-342a-4885-aac1-cffb2050ba44 ae15d569-cdd1-4714-9311-f09b8d6db9f9 85dc6e24-f4a3-4920-91ce-89a509dbe235 321d0c1c-87a4-4552-9156-3988d596afef 786785b5-ffe5-41a9-8a91-a43054edefb3 ad736c69-d10f-491e-894c-bfa806ec4c68 79b01b14-05b7-499c-b3e9-ed54bc4905cb edcadfc2-5287-47a0-a432-73a05a82132e 1c42c5bb-abf6-4e15-9686-08d004878ea6 08f8c65c-7df0-4d27-8a8d-d941677db368 f126510f-6a7a-4c3e-b2cb-32a76cd9618a a229bc11-e5b9-4f8f-b90a-786025827eee fca7e19f-dd6e-429a-8a8f-3ed8758f2cda 67c27a2f-1d69-48f5-a970-6b3edbd904d7 064411ff-f75d-4ebf-a3f7-5017c0687463 ecaa872d-a5f7-4891-af6a-15d554d8d528 0ff1b982-65fc-4133-a080-fb7a555ed9f2 82d4da2a-3b5b-48d0-8068-8e0f7a6db5a4 458746ca-234b-4e9e-a107-c14cadcb0cf4 10067f8e-d738-4266-824f-f491af77b124 e23bc33b-8ed2-4ca7-a5d1-23b746db80f7 ae6c7b09-154a-4da1-8e92-8eb216f79520 b5ee37b7-c91c-4899-9a12-4b463b9841c8 458528ff-183b-4b79-9215-4fc8b0b2e2bf cd57c290-27f0-4861-9bb2-3f74f8e2e09a e1b2288a-eba5-4785-981b-151e0b5e5306 79f9e1fb-8b81-42da-83b6-dc268d270db3 52c68264-972c-4f6f-b85a-0fa586c4e4ec ce6de487-0c57-46da-b2be-7f6895425d9c 02da7454-8ee4-4cd6-876f-13bddbb65958 085b6cb7-a69e-45a1-9dde-da05bb820c03 a26275d1-7b13-4f0c-a139-bfb0088af0c0 e5a96e13-486c-4c7c-b923-c9b30be44648 edd26456-46a2-4123-ba31-a1cc800843b3 f58f499f-b9ca-4e81-a24e-ee3448371189 2716fe21-85ca-4802-bb06-c981ed726b27 bd5e8bfe-f372-4d03-b086-df1f4d8df77a 31d4df76-6bb7-4721-b707-17a6baa66a40 c7886ed4-c407-4d46-a45c-b593c575b424 60d78384-eea2-42fa-9d09-5bf24bdd39ad 41bbf986-4bc9-4e14-8821-d5daa5417816 cb420ee0-eb40-4816-bff3-305cbb5f1405 4c688240-4284-48f0-b87b-56e6a64ecba9 dbcad145-6742-4144-bd64-0207a2727b8a 3f46f460-6cc7-4989-8fac-49641299e551 4f0b1b76-1408-46c4-b860-074c3a96b5d7 01341cef-2afb-484f-b693-e1cd5c8fc6c8 549ebda7-90ca-4fb8-86e0-d33008e638e4 fee49aae-81b8-4e8a-acea-9bd6aa1bdd2b a1b100df-05c5-4bb5-90aa-0069d0aee447 8cf036a1-3250-4731-b325-b0889f47bb3f 872c83c3-c3f7-4e67-9485-ff9169d1baa2 3c646dbd-b277-4d64-9eb0-6df87147796a 9cecd408-d3cb-4643-982f-ad131f8f08f6 fbafa7d1-3039-4864-989d-6a23ca9b4285 db5f52a8-ab1a-4ef1-928a-51df02f1d923 cd05afda-fd22-40e9-a564-c5548ba3cf91 7d6824d4-1504-493b-b3be-bac5881575ce af676c32-1f23-4570-ad0c-5224defe44a2 9c9d6300-c7e7-4333-a6a6-59399b330c61 bb3f1888-635f-42f6-b60c-2ae19e64d0b3 7b89d502-bade-4a95-8ecc-139059953439 50ba8c9d-faec-405e-9972-664c66b885b9 05c707e3-0cc6-4ac5-a057-fda25688e49a bdea0a04-67ff-427a-a004-61928603bde9 8c8ffdd4-98c9-4fe8-a12d-1f35b13915f9 2e6e4aba-9ee6-4907-a70d-9ab03b04996d 214f89c1-affc-4082-aca2-0308998fc126 0f94b0be-25a6-476c-984a-63bbea111629 fc75fd4c-3ea3-4e53-8722-21667d0045f8 7806f714-532e-451f-92dc-69d653a9ff98 d4250521-4b89-45f0-92cc-2d4411062ff0 ea5b6b85-74c8-40c8-bd3b-50d152ee236c 14f8e6b4-17a2-458c-80f4-1d246b055ada f332a463-822e-42d7-beed-f913f0780d3e ee805e6a-6f4d-47f7-a795-60dc2204ca83 cd59f22b-5fe3-43d6-838f-6122716f6ecf ce19034b-5902-4b9f-86bc-dbe2e7d9e664 bf6caba9-bc40-4814-a526-af629be85c0e 4dc33960-393d-43ad-98ce-07352c8d8890 ec0b5b2d-6f56-4574-bcef-cd0b5b87e503 c20aa133-6086-4fc2-82b6-b8a6d87e6d85 f3968fee-c908-4233-9405-5d3c9219909e 986aa655-a6bc-4792-88ae-9f42c331b83f 88d4e0d4-6db7-4133-8e59-cde78753f2d4 db3de364-5b97-476a-b038-0e053d1eb4b6 a42d5b50-ecbe-47af-8017-cd8a3e2383af 2a6bd28c-8504-493f-aaaa-c75d539686ee bd27addc-6740-4273-a2ca-5dfe86087810 77832561-5629-4da9-80a3-f8a061fbdf6e 1114594c-3d68-406f-a123-d492ad5e95fc b265f291-3a39-4d8b-8cf1-e47d06e1a1ef 27631769-0f46-427e-8822-ff352212ba7a c63d640c-3173-4e12-9bbf-def346a89e95 c3b9f44b-75fc-4496-95a5-6a1ece90d91a c0ee05c8-c981-45e8-aff2-e82c79fbd981 73cdd97e-2e42-49bf-ae23-ff5421ef0b8f 600d69ad-625d-4cf6-bae0-f35001299b5d c0d2b783-f792-4091-aaa2-671f4043fade 2040b833-f25b-4801-b3a0-a6eda170d622 cac37ef8-7e59-43d3-836b-1962000bcbf5 099c61a4-0ecf-4163-9cf9-fb1f5ed2d7d6 d8e7e6a0-53ed-434d-bfa3-17c0a4437e95 ffa51f4d-b8d7-4cc7-83e6-f5d1a5f9565a 978cf2b5-fb29-4ee2-b67f-8f1e33b33548 166a73af-2628-47e3-9ff3-6cb69a3d0a3a e2db3b97-c862-484a-96f8-382670f54101 05e68344-95fa-4ac5-aba4-403df609cf61 5f5eb62b-cd3a-4237-9d18-e330e640f8b4 023b96f9-9804-49a2-a2ec-281078b0f998 630f89e6-e83a-4e52-aba3-8dd3b5b94012 f199bd03-804a-485a-aa54-afc96f85a9c9 5bb46008-18a4-4428-be3e-ae957c3cdd82 af5b0365-0dee-49cc-8ef9-d7ebbf720e95 99059699-60c2-42c2-883a-eea79912f4d8 dfa8eaec-fdd8-43f1-9e5a-3eb2d51d4fa4 ac443187-3bea-472c-bc70-bd8492e64538 57e6e6f3-ffc7-4c6f-ba1f-7e2ba165ecd6 3430a30e-0e84-49d4-b41b-75be79872dce fb577b8f-685c-460c-87e3-cefd5e8d0bea 1e724120-952b-401a-900f-591e9da18bcc 2d9bfe08-843a-483c-893b-2ebf0e771974 4347e6c9-8624-49b6-acd1-9d25ad0ec9e1 a2c35fc1-466d-485c-afae-910fabff67b5 03344818-842a-4dd7-bbe1-0c487a87998b f9dc2aa0-f758-4573-88a1-f55f7de055d9 e38e7f10-23c1-4797-b35e-edde040cada8 a94c56b9-4d1c-4e99-992f-f5b011b17a7a e43f1435-d31d-402f-bd10-854e1544e420 d6258ea9-1dbb-43e3-acfc-b94724fa2208 d496bb8c-6161-4d41-9030-e93bc149e79c 428018f9-a192-4f07-99ec-dc8bb0178799 90d01657-d946-4f47-9015-a21df4f6c4e6 0247c4dd-e785-41d6-a4b1-50d2bf093aa8 16075ef0-9bb1-4d98-af2f-1f7e52fb2376 2829c088-7996-4953-8391-72dfe33d717c 630c1cda-6001-433c-8e53-68040925d660 9ecd036b-b396-4a6e-abc4-27872f18ca4b 02821663-3941-4aae-acc4-ee4bb3329ab7 ed44096b-c58b-4705-9bd2-a097a5a946fc 2fded932-2705-46a5-bff4-1a5d0aca013f a585108f-6f6e-4e35-afc8-57b0193cd1b4 49c1605f-0001-408a-ab05-5cf97ea33482 2b7d05cc-85a3-47ce-8e0e-e0507dd36a40 954f68ea-4a54-4dcf-a202-d3535280bedc 4d1832e1-9abb-4dda-a867-997f48c51037 7789610c-bbc5-4e51-b192-f5b850c56b8f 0ed91e63-b24f-429d-bfc7-0a1f1199ef27 c238f290-25a0-493a-8ab5-760f58e33d09 b5bce50e-a930-492f-9ab8-c73f24c2ac68 79c7ea2a-9b38-4f08-8e4f-73b07b1eb43c 612db8ab-f67a-4f14-a4db-13abfe81e7e7 7abd0b9d-f675-4e92-9dc8-1aa0cbf2d670 b1306fa4-2ee5-4ac5-8229-676f1ed2125a a2865ea9-c6d5-4cc4-aaaf-59c7f27a112f e456d687-9997-49c6-a0d4-b177f0cb23f5 aa63f879-f80f-4d1c-9d8a-d9f575ad8d5c 5118e418-3197-4a30-95f7-67f5a60fe0ea 388ce530-27ff-44b8-a062-118b35942a0a 4eba5e31-ad16-415e-9a5b-d39d20f038d3 89126d3c-72f1-4b1f-9fd1-ca4ce8120f27 4b194955-4a25-41c9-9a83-8df7bb211819 4bfcbebf-5bab-4b31-8cf6-9f5ea92684fd 2add19e0-f67c-4109-bffe-92298dde3f4d 6a184091-25eb-415b-a280-15e0dd38da54 ac746b3d-271d-4f82-bc29-1fe5aeb7cb55 3bd236ad-da0d-41d4-bb04-9a5201158af1 02adaf92-2143-4a0d-8607-bfde3cf946e4 3cd99e4d-a389-4a09-853a-ab6996d7c694 d0452cc0-9396-4c88-91fa-24e4f107e7cc d6bda46d-7dbc-47bd-8d63-2fbc21d93553 fa1dc110-052a-48c5-8dbe-baea60cbe821 2946d9c2-ddbd-484f-9e9b-ee933806b0e9 2169678f-fb31-41ad-928f-f5e010d3aca8 3af0225e-7918-4316-9ef9-4e99345777f7 557d2a8b-a530-4936-bac1-9fa0e1e2d063 c6e697a5-9a14-4cc6-a692-0aa8ba41fa69 10edc05a-44e7-4978-939b-df9a8a5d9372 57286a76-aee3-4445-a0bc-1be516a6e789 a448bf06-4893-47a8-9328-c3ded0888940 28577aef-dbb4-411d-bb73-e7e3491cf4bf a4a44c9a-a5dd-4310-86cc-16e1a75a1903 10a11cb0-4233-4f65-96ed-272ceb33f749 d1c77f90-cf3e-4bf6-b153-07a187ea7c2a 86d3a720-1531-4c25-bd67-1d22fb59e698 61582708-4612-4189-90b0-55557d16b349 65502c93-7d5b-4295-a411-9b4ff47b1029 84090024-1126-43e9-b7f5-940871c2ed6d 8f5b51b9-9a12-4624-96b7-78d77f783f7f 1522dc53-3c48-4013-abf0-2d6ae384680f e32beb61-df60-4ffd-aaaf-a0288f652d27 aba3f4ef-176d-46ad-ac17-1f3e1663dc20 66b8aaa0-7866-4602-a1d8-ebd7b2577352 2fa479fa-c6da-44be-acb2-263ce639c5d9 4a158a44-38bd-4a17-ad86-45ae1cdecf91 32c6f527-10c0-4d52-9081-67962318a0e4 9d51e9fd-b6d0-44a2-b9c5-36d3988ed72c 136c7507-96f4-4e77-a866-251efec036ae fd0ae184-9244-4278-b6da-6e706d56555a cb0af3c4-3415-4bfe-92ae-c21ffa37ece7 74dcefc8-9836-499c-994b-322747523668 1619b9a6-993f-43a8-8a8e-d5cdde4178c4 1f02d425-f3d3-4db0-bb89-f1aaf06cb6cc 3a71e8cc-ab74-47b5-8430-b900ea31a460 0e28f86b-1a60-4725-bfb7-fda4f6838f8e 2a9b49a1-1a78-4e50-8052-9a4483bee515 32fd7834-d383-45b4-8f2e-c7f2f92bd8d5 63881ed7-a74b-42f6-8e77-5009043e0eb2 ef314ae6-bacb-44f3-a61a-6deeea7816a4 d5d0089e-6af3-40d2-b29a-2b0bad461742 5dd49a3e-7a53-4a17-bd47-66fa7547032d b8f264e9-9be3-40ef-a201-e60b902de72d 4e9fd560-ffb7-491f-87a8-2eb1803f9225 cbef42d2-18a9-454f-b6cc-5656441085e3 8bb12878-dcf9-4e97-b7bd-a70440ab2ea9 caf484b0-2d0e-4baa-bde1-1ddc769042de 17936917-36a1-4706-b7c7-78b8c02f4cfa 65460e01-28fc-4671-b854-b01850961e21 aff75aa5-a2af-4e16-b4fd-27b8cb746941 955fd804-dccf-4cbc-97b8-fad18e4b9dc3 d97224e4-a1ee-4185-9b89-326af74d1972 baa4a775-2aa7-451c-9fd6-b2c763dcc011 3a74251a-f70a-49ec-b068-c70db5a9b160 49aca69d-ebbf-49bb-8f0b-b17b3d26c02c fec66dae-68a9-460e-8301-787fb6e7d8af 7ae64b70-e790-4474-885b-e540c41f1504 91116244-063d-42b1-aede-ba274b8ddfeb 168f4690-185a-4ae9-aee8-977aff95a36e 7bd95882-605b-4237-8c9f-3ac79e749e58 d77cfe63-9099-46c9-b002-870cde974df1 2fda987c-824a-4308-9995-079b2de1b7e2 0c5c3f66-f90d-4bc8-9cf5-44bf3376d2a9 3d66fae9-c49b-42ee-848e-034390c89930 4ca9e3b3-acb2-46cc-b476-869c16822ad4 b4fd74c7-66fa-45c6-b8d2-c3b83debff94 a8bb2f6f-99cd-4386-8443-a9ab0bba2f1a c6ff612e-a38e-4224-991d-422dfb745fe1 3fd2499e-e651-4d1f-8307-b309bcbfd087 394616ba-533b-407d-be0f-196a1d3450b1 c5fcf91d-100c-45ff-95b7-90f0a0434a1f f7d55f4e-009f-43c7-9a66-458414090fb8 d00a7ed6-f9bb-42cf-afa9-e15fad6d2423 dd9906a8-dfd2-498f-9dd0-bcc398f2ea1c 0b7e39aa-d159-4ace-aa98-eae0ed0763eb 91a96112-e897-4540-8c03-e4dc83001c25 48b0e79a-61b6-4700-b6c7-46eb5ec94152 c226a81d-6c00-4224-92eb-f859191b0482 64a47262-4d95-498f-9e0e-fb4ec141efce e9720691-29a7-46ad-be8f-b08a7d8a055c 058cb24c-6d1a-42b0-ad3c-0aae47c6e320 fd0fd4c7-c311-436a-b460-9ce8c88df20c b55fc6c0-94d7-4b75-b0f6-c53926662417 fa86ab16-5fab-4c01-b646-5f115e1a24a4 22e2aba0-6ec1-4bf2-99d3-cd4c1d11b705 80cd642e-fea0-4e98-9575-d9e4f28e8792 5f21aae0-b9ca-4f73-9cff-35de742516e6 e1d42cc7-3135-498f-8dda-aaf74f0efe06 39ab1ec5-1ddd-4c80-be73-459ae3761021 edc92403-3456-4721-ac33-c46ee2d0c0d2 ac07b377-016d-4958-972b-f12284444d3d 8111cfe7-b4e7-4446-bb10-939ca3bfb90d 1225d628-82e2-4017-83e4-a121ca1f9f50 01c493f1-c4d9-47a2-b249-487abbc46236 8a953e3e-06f3-41d3-9ce0-724aae3e62da 11c127ee-d4f0-4e8b-99df-8fc8cc93f60b a70a4157-c979-4789-ae33-bfb30b74d5ad f5cd2235-223a-4154-84d8-921df2baec88 611ee3e3-69b2-4b41-a1a3-7e9c4635bfdc 8600e8ea-8e6f-4949-ac93-57584557afe3 34a8c097-c571-462e-91f6-947e9d19350b b049a435-9c84-47f9-81f4-adf09a60fb51 9bb2b67b-0d78-4e39-9997-a71d81b9bf5f 60d970d3-1310-443b-b81d-a68a8660fbae ace8e482-e9e1-4c59-b075-f9b6113fffba d95fb5b1-9b3c-404b-bc0d-79f82ec1e354 8b1bd55a-6a61-4ef2-8f03-094e1ac8df37 caa8c59c-09cb-417d-843a-3217102581da 109fba67-fa2e-4335-a560-e18977ace2e4 2658941c-ef02-42dd-910e-ecdc46bc7ac0 53950008-16c0-4c87-9232-5c175b346d0c 6876cace-98de-458d-891b-dfb112756882 0401d8ef-ec36-4f12-990f-0437571bd39b 7285f27b-5720-4da0-97ca-f0279a7dbcb9 4ed956e3-f037-42e7-8e9f-c97c99c87824 e25c748b-6aa9-41c5-9c95-ef6884e95ef8 f47ba33d-096c-43dd-a08a-aa5848842ff1 6e86793d-530c-46ae-ad4a-26a921731a9e c8803418-e3ee-44f3-8a8e-1c10c78503ca d7331f83-a3c0-4e6a-a3b5-079532a0e049 b98b52ee-bbd8-4f42-8277-aa4c4d964b09 107b5f25-b56a-4dfb-a2ed-289c02cb0bfc e36fafb2-1c58-45bc-a1ec-1ff965a563eb 0ac5177d-7655-414b-b7ae-2fc9e1713523 bff12639-1750-4081-9c21-d7aab1d12319 a569fcde-23f9-4e6d-bd83-15825579b896 88bc6612-adfa-4408-8881-8d066f99d6b8 b6fae827-c0ba-47b9-b75f-1ea3d67337ab ba6e80af-65d1-42c8-a96f-4fe8f6d2a632 60665109-3710-4112-bebd-209a72d179f2 ff01e313-d1fe-4b4e-80a1-92e2d0d4b13f be15168a-35e5-4035-b91a-8c0163b8e84d 3b6736bd-d7f4-4dd9-ade6-84ce4fe3a26d 2703487a-124d-4c83-bec6-22e7e702bc41 28987423-8e9b-443e-94ba-6fbe62e719ca 8ddf72e5-b8ea-412c-881b-50ef33acfbd1 7eb26bb6-f04b-4af4-a2dd-20e73ab23dff e4d4f015-b544-49e2-bbfa-846033a9a3fa 2fe4a8d8-765c-42d7-b75f-0086621d0b44 44384db5-0291-489d-ac74-cabc6d2a604b f610ead9-acbf-4bab-ac31-df81a6f69e1a bc9d42c6-79c5-4187-b414-9147e68ab7c0 857ec5e1-f959-438a-a8e3-091f50d43641 242132d4-2509-47f5-913f-fb3f7ec97441 547f3fa0-fba3-4b16-b6c3-8f6a74240860 07aae668-ddd9-479d-84bd-60680576d192 a71a13c9-d964-4a16-b4dc-36c1809c4b33 61f503af-28c1-4c1e-8bf8-40dcf2d3082d 4b0cfd2d-2ed7-4a28-90bb-4b875d667941 e14f2613-f5e6-406b-9b7b-e8e43545b6fc ee6961a1-95f8-4102-adae-461c90c72379 707d48ad-2745-44f4-a2c2-d2894a214c00 15991b92-91d1-41b4-8fd9-4d926d163463 d9147225-718f-42e4-8e38-9b106d08acf8 39bdae46-b61f-404e-a727-68e69fb01c60 a89b48a8-1530-4d30-8b6e-2681c2bff5ab 419e6db8-4d06-4776-b689-c109d59e3603 b0994c04-1fe9-44a1-a6b8-fb426e932246 27ba4cc4-877b-45ca-8468-118f39a1e86e db6b1c65-49ba-43d3-94f7-a050d0270c8c 0bb15d38-b23d-4123-a89b-c255d35db1ff 0a61516a-7ad9-4dfa-9a17-b8caaa5b0290 fff6e96a-aa50-41dd-9607-2d050bf519ea 458dddfa-14bf-4849-9b71-9fc1168214fa 3ed6a54c-c5c3-4e39-8612-4e5fad586dda d17bbf13-f557-4bc6-afd5-518fefd477a6 c5b77146-e90e-4c42-bc09-dae93709ff69 93e2ed7b-3c8a-4a60-a494-546e40bb399d 2656cc8a-dd55-421f-b40d-3baad14afc27 5ba28017-51f0-4575-a194-5dea318509e1 d5490cb2-33fa-4531-b93d-479197212b66 e93f65ed-a595-4f30-b47d-19f55de3ed6a 66b0b817-0ddf-4b53-941a-5dd343b4e6c5 25ab2412-3b57-4afd-a219-20fc8ca6fe1e e7f332a3-5afc-4323-8502-ea4d497639a0 cd46e79c-ad07-4db8-88e5-128a6c9a7cff 35336563-3652-4939-8461-61623b93c9ce 9f40822a-9bd4-452c-aef4-5b97e0956218 be35cb21-2b02-4735-9dc1-7fa9f6812278 ae51141b-35a6-4494-89b7-e459bbc4bee5 dd916916-82e8-4a1d-9bad-e0be66503a7d b44a687e-379a-4664-9066-1a9d04996e52 60dc55fe-741a-464c-860f-188acb56ab25 5a7f38b3-048b-40bf-b950-f78cd1ee7333 200c4b08-0cbf-4e34-ad02-0453288c8a3b 1046545a-fe47-4ed7-a285-808443a39df8 2e5c2760-8011-41cd-8cf5-2be65d054632 69289329-c9d2-45c9-b70c-33a2da651532 94993f66-9f38-419e-baf3-3aaeeb35c236 bca4096c-0ce2-47b0-964f-f011b0509385 08574ad7-d515-46d4-a685-130a120434a2 d4a7e062-94f4-4e8e-ab25-093a0eb0442e 84e94b51-b3d4-4742-abc9-6aa10c24593f 105bdf3a-9f49-4114-8a3b-ad32e661898c 58c67dc6-7e39-492c-b944-cbaddf83c9ee 28a95607-67d0-493a-bc00-44bb54258639 d001edc6-06e2-43e8-b177-ed483be279ec 8c5a3210-d0bb-4926-9875-1fcd3e51df08 1b6355fa-96c0-4197-b725-2123f45998e9 4bbe5fd4-4df1-4870-9f1f-39514f94900c 86ffc594-3c36-4a62-93f8-fdf6e5a92795 cfbbdefe-ae90-4dca-ba86-e80010ba9748 ed4c44b1-eef2-48db-a4d8-8d791948e262 5cec0d38-26f9-465a-9607-4dd9e7834f6b 411a9fa4-8f67-4474-b309-619e7a21d49f 0f21625d-0eca-4040-bbc1-777bde603bf7 7ca6d954-309a-4189-8d2d-094a741673d9 a6baf9f9-e3d9-4535-b2f3-e42f959a15f1 ca5433fe-7cf1-42e7-a954-448bbb2e4e69 e1810a9e-20f2-405f-9130-2b579c33a49d bad2d527-08f5-476e-b54d-e9f29fe19418 55141fe9-2eb9-41e8-b977-f9fb82f3e7f9 dce0afd8-27dc-469d-ad75-378ba451d81e 6d343f0e-69a4-4ceb-ae1f-b13fd6576c3f 3e75796c-da62-468a-9048-92d4228aa44b 83a80806-20b5-4166-8cfa-b2cda9f75f27 e98f6b8a-c2ec-4426-afbc-9ae097ec5141 e652ad06-d339-4ca4-b8fb-3f63ab2ebb72 aca123e3-7e2a-41a0-835a-e4ceb4ad4541 76090651-0804-445b-91db-09ff9d3659a2 41053ae3-9e1c-4978-a288-9b0a548bb183 abee7afe-bfe2-4dfc-93b2-cd234226b2d8 f27c818c-c7ce-4965-8390-2d555f7e0067 9b9a44bf-1267-4d8f-8d44-9796b471eef2 83159a2a-31a4-4eb7-9885-9d6f5781339d 66cf3ff4-23d3-40dd-b76d-ef1ad0876c91 e4fec23f-818e-4343-b88c-e41d95ce7171 dd57703d-ea00-4bfe-974e-4f4e174f6266 2c0beedc-cda9-44f2-8e98-6b8f69d7cad7 4402c5e9-e6d5-4b7b-99e7-0d09d9848dbe 558ffa21-255a-4cdb-b2da-2a84ce1e921d 14b4ee9f-8cc3-48ab-a9a9-6cec679516fb cf66f600-4d6e-40fd-b736-28612bb924f2 d9ca891a-708e-4553-ad1e-012c0bb337bd 446b3df9-d279-4201-a358-4e76b11ce00f 0541adf3-6cee-41fb-b0cd-1740cd0a3dff bb525156-5fd0-483e-b058-0e17fbf8adc9 51f60d6f-cf96-42ae-aa6b-8404b0c9be7e d02140ab-95ea-4814-9347-31b36bbae7cb df290f5d-72c7-4bb4-97b0-0111e6eec4c7 1f057743-d251-4fbb-8e0b-358e121e1dd6 979225b5-3803-44d4-a177-389356bb23ce 5938f51a-4ee5-443a-9915-6f1da5400e3c a9c9c0ca-41f4-40cd-a9d7-e1ba9006dc2e 1cfa6c73-7e6f-46de-b75b-c2a17f73b4cf fd535cd6-e71f-4ec4-9a65-ac7bbf4dc947 5bd2827e-6319-4baa-957b-6740d3499a5f 41d35b27-65c9-40f9-afd3-b5ebbf6951a1 ab41cb38-bf89-4fbe-b753-acadf89c3574 89fa46a0-af1f-4f67-af34-ec60c2258940 1da1da5b-4b59-4ac0-8fb1-7999e958219a 43a2ca50-1d41-4134-ac04-804d4a4008ad b2cbd4bd-a654-4898-b5b4-a842d2435482 dd9ca685-3fb1-4afe-971b-2b393bc7853d 3570aae0-7c8d-4d60-b34f-4fb28343698a 8900a035-29c4-43a5-9f00-9afdac200a3a e21208db-db0c-4eaf-946d-d5f5e2756412 fcf28bef-3927-4cd7-8a14-e7a6dc0694ec 097a3871-e034-4eaf-bb19-90074184f6c3 b53e8915-6b4f-473f-b742-33c0d3ecf494 a2fbf844-18b4-434d-b9fb-8928de609ad0 21ee2ca5-d351-4ccb-8077-91c2ab20171e ce6cb25f-a2be-4094-9f27-39c49f5fc0b5 fcac72ca-ce50-4b72-85e3-b959c7c1372d 39d2efbf-cbf8-4e94-8694-f5137c6abd21 ec3b3821-eb8f-4876-80e2-47ec41816bdd 69f2d8ed-5ee1-4432-accf-4b4de6f81f5c 165dd329-ef41-47cd-a42a-0d2a8c9a362b 78bbd4ed-9fb9-4813-8e51-7d4b92fe66f8 8d17d002-6672-4ea5-ae69-eb239564bd07 c07a25ef-3819-41e8-b304-1b3809aa499c 3673689f-0830-4f45-b3ea-08000a8ffd29 753a401f-78b3-447d-afe0-be7ae977d8cf 90281c57-57de-4ee3-8753-621030bd3a87 3c6df4fb-ee4e-4fa7-9fa0-db305472d3b6 303d84f9-290d-48ff-99e4-123664bd587f b94905d0-0583-49ac-a2ff-7af4a5e86308 e10c4bf2-ef71-43cf-87a0-d132e2b7ea02 ce3f8050-3041-45d5-b799-a0352cec66c3 ecf0ea22-013d-4b26-91cf-01720d0e4040 b6d1479b-aca6-4b29-9131-17f816005297 1ffb2f7d-76b9-4eea-b9ce-117c15f0f52f 03205caa-6305-47c7-b9d1-52498cc767d9 e58a33d3-8208-4d01-b626-c6298acca573 9be5064b-f80f-4285-824e-fa44faad1397 0da37a56-7324-4119-91e0-f6f2ba7e5a2f 49162071-fa72-41d9-9d6e-c682bb89ac41 2ef890db-a4ae-4b60-9447-ff8acddf2c6a c91b6aaa-eeb7-4a82-b2a5-b5b58b11c469 1f416def-d75e-43e6-8f08-04b0ad9b9e4e dfdeef09-8629-4934-b8b2-72b6af9d9adb c0aa6163-9c4a-4f89-952a-7f5bfc41ded3 e6775856-8c4b-47bb-b9b4-3bd61e43be49 92e1e40d-24da-4141-af87-be6af66d81f2 fcf7e8c2-8331-4927-aeb9-913fe3799a9d 037ff6e5-2e16-430d-a3f7-71873d959bcd 2de8a198-04a1-4266-b86b-b18e6ff34f71 bb8e3346-0b86-4049-905b-05f608637ab6 5793a712-90f0-4676-86cf-be3313402ee8 9a5b9683-1403-4454-9a54-926b61d5b854 3b3e7531-2552-463b-bfe7-9adffec1a6bf 42b6aa2f-0df2-45aa-9711-eed930765e10 9d343f4d-ef83-4c46-afeb-80b3034373e0 98dda47b-a3a3-40f5-8d83-63de8b631aa2 607b1e12-49a5-4fa6-b4b4-c6ce787dd490 9235da31-ecdf-44a4-8504-3ff9b5898999 d0340295-b45c-4f41-a38b-d21eea7a7554 229383cb-1beb-4628-a353-6d630e7833f8 8c9331cf-cbf7-4bbe-a857-2c306ab6e5ab 13336006-5cb9-4489-a263-9c5b505ba0be 81b1036c-7cfa-45b3-bee7-de3de2d1159b 473c416d-a978-434c-9dc6-198a7407d675 79b456ec-47aa-4a0d-b887-6095a769a0b4 813e27d2-0ee8-4208-9a30-a2d592b943e2 7d6ced89-3763-439e-96cb-aa3e3a857242 a828b4a1-6a1f-4a34-a912-0154842b7b0c 32320dfe-ef80-4a9f-bac3-c3cd7a33942d 3e17ae00-1c66-4974-8802-b131fc97a767 f52ffe39-80b1-4428-a31d-f86661c3b3ce 124e42e9-56c5-4efe-828f-0852857828d4 38e99367-76a5-4a2c-9248-042c8babf7c7 f21a46d0-3fb2-41f0-b923-a770a7416535 8978fa8d-d147-4887-a1b1-f63b1ce1f132 aa96f53d-3557-4ee9-bde2-1dc6672c5377 6ce00c51-f173-4b9a-a686-8449e4888f9b b9bdde06-ee40-40d7-926b-7dc2c46b13dc f7267294-09f8-4f75-a10d-7a8313ea1942 d88af48a-4b2a-45df-9068-b7056d73f17d b5830730-96a2-4903-bab6-296824b19599 4100dc9e-15dc-4807-bccd-706c0dd0977b e1915e5a-29c4-439a-84e6-a7485e52c7be 3a2c8047-d3aa-4aaf-872c-484669831cd9 85236606-5116-4f2d-9eaf-b79b6620179a fd08a5e4-20ff-44ac-a03b-50f1ec3fa0dc 92cd9917-d678-4925-ba23-6495dfdf7459 e77abd81-7961-4c8e-99d0-46f4ea9eef68 377e4bfa-1a8b-4be1-a28a-664589114aec 109c378d-87f3-4a61-af2a-5959e1556d6c 55a7a7d3-375f-4856-b5f6-061ffc5f2875 82bb5d57-92f1-4dbe-b04e-150629020cb0 e43b9bf5-722a-4592-b620-606b8fa5ad6f 28510290-f536-4623-9deb-11922ee71650 081f5b57-b51f-4ebc-b009-dc9871c551d4 d78d9b26-5278-4014-9cc3-8ec0d75e9e4c 5cf42c53-efbc-40ee-ac54-b934dea6615e 5bb7353e-80d5-4831-a408-4e6f026cb0ff 775238e5-d5b4-4663-919c-f1c2195ab535 59f77615-236f-4ef1-b022-b046ffd95b8d 9fc7bb62-a61b-4009-9015-b23dcc931d7e 186756bc-23f5-44d3-bc74-1f8c414693e7 81ab5bef-a745-4d25-8aed-01f00631fce2 2184b0f2-0827-421c-b8e9-1e00873bd523 61927cb7-739c-4ad1-b772-37f53a6fe742 064f302c-0152-454f-8c31-1747195dcea0 42dbd274-ac13-424e-ba7d-fb9fc7c0e796 04ac55a3-0af8-447e-b2a0-938f8f1380ac 6da678dd-409a-4cc2-9bbb-93dbed66694b 74cd214f-aab2-46a1-a0c7-4359423f90ad 7b37bfdd-104c-45e6-8bf2-a34f060eea6d a8111d04-a370-4e0d-80df-1703889a8cb7 3cfc8217-8e45-40fb-85a6-c968adff07a0 e352362d-7794-4751-b365-158f7bb50e4f 65b262a6-c073-4b6d-99c5-8f6d99209e4b dab3c2e2-531f-453e-b488-aed2d809a7d2 6fcaa51b-ec3f-4eec-82a3-3510733950b9 74b4ec2a-58b4-4867-a9b2-c7a39a770c43 36d92403-262a-4055-960d-5c268ae175ec 2eaf4e2b-cba4-48b3-8680-29d9e1038ca4 06be0e4d-6e96-48d2-b699-154d5848b9b0 ecc7b609-0565-4345-9a49-c2ecc5ebef81 859d900f-965a-4473-a7c6-312389c4dfc0 6f3614f3-bc77-497d-9f7b-ae37cc4724b4 349e7096-ac9d-4b66-a08a-de574500544c 64379d8e-2d58-49d3-a5ab-f9fc1c1390a0 10f5be7c-022e-4b81-acf4-ca9250c0ca7e 3e4f26b8-d080-4aac-89e1-89ad0647bf95 f974b5ac-e197-4d19-b80b-fa406e830910 01876d33-ae22-4e21-a463-b5f985912698 af28c2ce-29c8-4179-8b04-e1d2bf8c99ee 6114517c-6ecf-4084-8270-8c8545495bc4 2fdda7a5-8b77-4f62-9920-c4f522c3cbb8 0541e41a-5828-46e2-9f8d-db38aa9742d0 e6c853b3-d52b-49ba-9b4d-6ad73d348b06 ac1a9267-3de1-4ea1-8133-0f2a31104b53 5692bd81-5a86-4966-a3b2-99e894e27a14 fe33b91f-276b-4acb-8e07-9b028cd97806 6fdb9b23-2a17-412f-bb7f-277e8b846c93 76710bb1-d6fc-4c00-be92-09c74fe881f5 20489fa4-c648-4d13-b9b2-7f570a774ac0 60b02d0f-f74b-40d4-bfa1-af10a4ec94fc fbf6d1f5-eb6e-479f-82c7-399ff295df77 0db0bdbf-1045-477b-a9e1-bfbdcafda00a a222986a-afd3-4c9b-a5fd-4b4bca6f834a 64ad5648-afb7-42d7-b774-8ccf2b064292 4a85bf2c-d631-4a05-ab26-915f816ce1f7 a0053019-577e-4f36-8b5e-7b77ae6e2c6c 9b0f82e9-531f-4381-9e78-6ab734a69b4c 62e8135d-d751-436a-af51-9ee177f373af 71aeb9b3-98cf-4831-9f3e-0b4b2fb79509 e38949a3-6d27-475b-ac58-4ff3fa84895d 9f466c87-faa4-4d2e-abac-b457724932c4 be3dc291-174c-42ba-854a-d7ce7df5ff98 2b996dcb-e410-4892-8e7c-25e4851c1730 831dcf3e-d216-4eba-bb7d-d52a33c25777 09c2a672-b256-4c9e-9790-f2dfd7e80d4f 81d8f38d-46e0-4a82-a7c4-b1298f95c1c2 cf554890-543e-4429-b5ed-97d4caa3cb88 ad2b8f37-afed-4b74-8fe2-e6b1e163bbb0 d4dc66b8-4f7d-43d6-b19a-75e60d0ff807 d8dc5639-58e3-4beb-be9b-440f911d9fcf 34006d45-bbbc-40ef-89a8-c987f04ca110 c2b245cf-bfa4-4176-9cfe-5c4aebce549c 5ef4abe1-f90d-4a5c-a117-178b0eeeb1dc 44e99b4b-17c6-4983-b366-54d7d0db99dd bd2c3e56-aadd-48f2-b89a-150eead2b075 9058842a-13eb-4509-9171-23609f30770b 67c9b2ea-ef1c-434a-bb81-620386e89291 80528a27-4827-45c6-a993-3c027aff7f6c 1933454e-13e3-4892-be79-2a2cc76c2503 dce6ab70-b817-43cb-b15c-6bf92878b7d7 f71b737e-c47a-48fd-b2ff-94b55f4affb6 3de20ae3-0ead-4755-bc07-d48839140b3e 5a494488-719c-4916-9565-c33265bf2524 8a52270f-25a1-4bc8-aecb-0bfd7555ff87 d55401ea-f2f0-459a-a926-bd4676a6790d 6d57658d-8821-42f9-9961-42d433c98b40 4b14ed99-1a8a-4ca1-8b76-6f1ec3c2940a de10a00b-07b3-43da-9263-3e1a1c6edc39 6032959c-f8c9-4490-b3a4-8ea8dd6e317b 6f2f621e-2dd9-41f9-afca-3bcb1e15258d 78199028-d6c3-49b5-ba62-697da9b979f2 5211bd55-112e-4d95-8355-ef416fb7e93e db08aa71-f042-4813-b6a7-8bd3f796be10 293ca7a7-b2ba-4b21-908c-7978e5221f72 73aa7701-7a16-42e4-8236-81cf4cbaa535 35e52889-59db-4ff0-b8f8-7f80c3338e36 6895aee4-9263-40fc-ba26-82e59409512f 17d02af5-d5f6-4d10-9021-468f9fef472b 8a39d0ca-244f-4fb3-bf9e-b5fd3a1378f5 e0bcd5b0-689a-4066-a18a-28638988569c acc806e4-eeed-4618-8902-78898cb31160 4662b335-9701-4633-9bcf-1059f827e10c ce5debe9-16ae-45d9-8530-33c559127a1d c62acfaa-54dd-4b98-a1d1-f418ee815f60 bbdc8e39-0200-4cd5-9fe1-01e54e75aad7 be73d67d-71cc-4c95-977f-a833962ab05a c28812f4-209e-430f-9621-4faae4a53ae8 10aca6b4-0e0d-4be2-8271-670f987689ed 890b2518-d952-49e6-af48-35da867f1a88 53079567-2ebc-459a-9d67-40cd8a6e2a66 d3245d52-8735-4028-8785-6ee31d08b94b 7a92fd51-9546-4d1e-9ee6-c1d581f3a444 48efc6ad-1473-434c-a577-bdd2d775384f 664d692c-6a35-48da-a45b-83756e95bae2 fb5649b5-25ba-4f0d-bffb-d8550a7eb8b7 9edf5c4d-14b3-44a7-b7d3-f42954b9202b a85fc649-839f-40b5-ac60-930bec36bf4d f1315a4e-98c8-489c-81a5-76fbf19d6811 9c2609ae-8c8c-4601-93df-23ea9b3996a5 9944b9ac-8c5b-46a9-bc4b-81badf9003c7 a562feab-87ad-4474-9c5c-848a5d1ef3c0 c4e1b123-6ab2-414a-917a-c444bf6f2422 fd6c2785-b41c-4b85-9bf5-218af3aa16f8 894a616b-d743-4102-adc2-32c69301b621 85dc122d-4e63-45d5-979e-a3d3f0e77c39 9f3f4cc0-9523-4948-bc62-0b1e7ecdb7a4 d23a421a-3222-48a1-848a-a6ee19319622 33608a1c-8061-4e90-bf7e-e1a6106e3676 7332edcb-5a08-4e7c-a96b-beba33e90a13 f2deadd0-5345-437c-84a3-9f2d95907260 cc0a64d7-e324-4fcd-82d3-17931e88da09 49427f01-6ded-4540-9d19-a4b5c5ff1c09 41ea0198-1b64-49e0-820b-0803624b4209 c8b7c169-246c-42b6-83b6-b2c2b2f6542f b4b712e1-2de3-49a6-8d1d-d94d2236c6b4 a72d3526-5713-423b-8693-d305523dad31 b9500a61-15a7-4861-9d55-dd58f1c5e28b ba0f7fd2-09bd-4565-9693-315e545269c2 348ed272-a074-41ae-a0f7-2364c8a0d346 81f5630d-e338-42d0-b73c-ede91be53521 d13ad580-2303-4171-8ca6-8c4ecc9f43ec 22217688-dfba-4d59-a851-32e7143a3270 f5aace29-dcc1-48a7-ae0d-65f76633fc61 376e9815-912b-4c0d-9d93-450ec2205b84 9a284abf-6fa9-4b81-8192-f2fb23ddf064 79063c69-45ea-441e-86d6-bfedc1763e16 5638a276-24f8-4b1f-9398-0368d7d354a7 ead977a8-cfeb-46d9-9581-7578d857819d 8be0ae52-964c-4ad3-980d-44318749eedf 97c1bc55-4432-4e75-8226-2ce85fdd2f57 ba403c98-993c-44f1-a251-8ae5dd75a53e 13bab4f8-16a0-49dc-a0fc-55faaf7bf6a9 f56fef6e-80d9-496a-85e7-ad34fe5bdd97 ee8783fd-efd6-49cc-b055-26253cc7eff6 394d2c0c-0cbe-4fbc-9fff-e965dd2394be 72ad99d7-1b17-44c5-93aa-74285d176f1a d26b1374-d9b9-4220-9e80-f7cb8614b1de 2585468d-7afc-405d-8a16-3a02c0f4d393 f59a2970-82cb-4426-a91d-883adf6941f4 a7897e95-ef5c-4db5-bd23-712f481a74cc 4b53e4f4-aa85-4237-9403-db9bd0aca729 28ff49a5-af34-4906-824a-ed8d9f3b28c9 fe6a15c6-d64e-45cd-b799-467dc419d487 ceb5c746-de50-4745-8889-b1425b0e853f 63e077d0-6c02-4769-88a3-7663e548db15 74be6167-f873-402b-a169-83f50a8441e9 aa9e5710-8036-46e4-8f0c-1144847457d0 228d83bf-0ac6-423e-b790-f51936bf1b77 883070fc-e83f-4546-9592-1ccb5fcdc7bd bf860c7f-37fe-4daf-88b5-2fbbec104a26 3000b3f0-a859-4de5-b4e0-be9317e2a41e 15f3f750-c2d0-4d0c-8448-9a79b68697e3 3d03dc27-39bd-4528-b229-06d0a800d0e4 29872b39-3f63-4bf8-8733-daf9cb08341f 44a21730-8fa4-4e3f-afae-b840b01167e4 ee15d4e7-01e6-4153-894a-565943697cec 1247b9a6-5f04-4faf-aad9-fc2fe7e2fd3f e2cf4527-362e-457f-9566-f72b427e5aeb 9e2e2293-6952-4a9a-8745-b049c6051ed4 4f47b7ec-28f1-49ae-afdc-7d3b0acf8f9a 240bd6f6-c54d-402a-a56a-80ced9819d1f 5554a4f9-6279-4a05-bd4f-da8903799728 caa185e6-5ce2-4af7-b299-9a3d6dd1b55c 5b16290c-c83c-4c85-8d5f-bcf7e7aabdac c90cfe02-efa4-4941-8bc0-08d3661a5c5f 015ed055-c983-47a6-9c26-2413ba786968 f440d3c9-548c-4903-802d-131f15f7cd17 cc3d8be0-71f9-43c6-830a-1d7f87364ba1 1e2a69cf-bea7-4784-8f00-18187d5056c3 ce81e56d-7006-4201-b163-e26aa7e56903 7761c906-c99c-4b9a-b7ad-b79ba4e37cc0 8019ae8a-1e68-49e2-b381-09095c038c67 aaa437a6-5cf8-4b93-84e5-2670583b4f3f 14919249-b726-45fe-8ea4-53da410ba1b7 62f06d89-d5bf-49f8-9083-de42bf09b839 ff70bd42-42a4-469c-970a-bb30146714d4 b090a3f8-1a0c-4d0f-ad6a-0fd2da5be081 e6e7991b-18bd-47e0-abdc-e9c242bc62f6 5174a30d-240c-435b-93c8-159190e58d9f ffd98daa-7123-46f9-8b4e-cfa17c02e35a 682cfdea-995b-4922-898f-a76478d09a0e a037746f-77fa-4ae3-b0d2-e8b73a0a8c18 fbadd14f-49c1-44a7-989c-d5830fb059c3 550b935b-7894-4d71-aea6-41a9c42e15a8 a2b893ad-0b27-4324-9cd0-0636ac9b2a0b 61dcc8d9-5e8b-4ec8-b5db-13faf3b34344 f9514883-0ec4-425f-aaac-9bc4f407cee4 77ea9cc9-3e24-451e-8b80-01593cc46fcd 40924fc8-f493-4546-8597-f536411f8e43 465bf32e-f70f-489e-93a2-a89ef1f8813c bd87fcf8-ef01-453b-a34f-facc229fa665 cac50ce4-ae13-43a3-bf01-1ea12ba36ca8 de695e13-27c0-4489-8997-8acf8698dad9 f7683875-c360-403c-83ce-bf4944769fd3 7a342626-3611-4041-bd2c-bfa6d670a5d6 209e21f7-229a-4bb3-a8f3-369ad5304a89 7802cae1-b368-4921-b0ea-4dc14f4a464c 27cca73e-05c8-4517-8a8d-4794ee9b6f0b 2a57146e-dcb3-40fd-8236-d634c1957e0f f464d519-b3a1-4e7b-8578-7bd7bf3f2bda 51254195-4485-4e52-81ec-9eef7d9e1d15 be76f758-89f5-4756-907b-5ac63ed8fcea 9b982b00-4f5d-4097-916a-ce2e053e8cd3 e77c2042-21ab-42c0-85a0-625e7068e585 ff947639-d0dd-4736-9c4d-eaeb58bde965 46ec0a87-f94e-48f9-b0bb-b7db01734b79 d1aa0b74-4e13-4a96-980f-65feefdf516c 93e6e282-9950-4865-b2c9-17724ffd705f a6a093a4-f00a-4fb8-a56d-cd0112ce74e6 d61a150e-b8c5-41f3-9811-8f268de2d7af ebae752a-256f-4c0b-8c16-2a257fa70ce6 e1ebc11e-f688-4d99-bcd7-6bc60d2c3c33 200f078e-3555-479c-9b3b-b09c17b83290 934df158-3f5b-4814-8039-4135c41c8ee7 82bb7011-c17e-4d10-bd3f-1dbed19bd790 247d18fc-3385-4aca-ba44-2c669a0f00d8 ff1f386c-7cb1-468d-a795-72e9f7ff5950 5d6ff115-6bcd-45c4-bc0c-60128bb043d4 20b649de-89e9-4834-be45-bff15aba7a49 130f7491-e826-444d-ba31-66a4d4f8d559 21d10e8a-7590-4d92-83d4-41c94a845914 45560053-0263-4ea8-9c51-f213e972ea3f d8662123-89b0-4c79-b5af-73925ff903f0 7d82760b-fec9-4930-b97b-95a8f74f653c 0d41c6fc-6d3d-4c8b-acc7-a499f35da7e3 d1e48005-6563-4f39-bbda-16d19807dc46 3731e30e-688f-437b-876d-4e357a807431 1733c104-8637-4a90-ab9b-8cde05ad5956 ad5d74e5-9d26-42bc-9a76-342f94b27e86 6c5e484b-0ba9-4a60-a9e3-987afbe26ab6 8c4e1ffc-220a-44fe-baf8-025d6766f9e5 5bc8c748-6293-4e4d-a8a9-d86caca1fdd9 96d5509f-4cbc-4280-871e-b60fd560ef06 71dc78bd-3cb1-4389-98f6-cd13d0ef877a 38515623-a955-487a-9f11-ce6e7de2ebbc b0163477-980d-47b6-bc8b-56cb3372dde5 deabd01d-a103-4970-a707-0c169877441c aa510596-12d8-4b77-8ccd-41afe6bd1ea9 82a8d509-b910-46d6-a65a-e65d4672e89d b74a102d-b140-425e-b644-c713ee0b6ffe 7c109ada-f7fe-4109-8f11-5626d019b247 d36a9154-f9b9-4e2a-8fb0-2e9b24512efd 1aa9bbff-8935-4518-b300-2eab5bb677fd af9cab67-7c06-46ac-83f2-5499eb7419d0 bd841524-d0a5-431e-b8e1-a0db1e1174c9 051e2b3d-988d-4de4-8e76-12bd2067aae8 41f2d332-ef2e-436c-bdc8-645840c98b1e 0fa5bd76-cacf-4c69-a5e1-ee200672bb68 76b65dfc-8991-4c66-80fa-86dcd5089a03 7ac8a9ed-2937-48e7-9b0f-6f87155bc36d 1fa09dab-a038-4bfe-97b0-3e43bb8ad0bd 4f9fb2dd-3025-47d8-ba33-979584935ae5 2ec598b7-56f5-43ae-a3e6-2b0e74951424 2158e9a9-4219-4921-8c64-12b51f52be75 c82e569e-cfbb-4dc3-b395-24b41e09b799 6c594b7e-0740-4e18-b599-dd1698a3a454 5a77dfd7-7283-43ee-a5f5-b1d09dc4679c 4a0d349e-057a-4efc-864a-fd4d189b14b2 d608660f-18bd-4513-9963-42a42ac4437c f223d20d-c7df-43ea-8fbe-9d1aa0f14893 d51444c9-aaf5-4a63-85be-f21818bd7f96 123040e1-4801-412a-b4a2-97d7e5556b46 f60498d5-1340-44ab-9005-130c6faf5df1 8408831f-6633-42e6-b5c3-d83cf844df08 e8ce2dea-cf66-4a12-b0d0-258edc79d798 948d7f59-ed3c-40af-898c-b3c126990b61 5b766a1c-4bce-4eba-8920-fd88f03a88c1 4b3641d1-5907-4053-9cf3-fb50fc09673b 10db361e-ab46-4084-a38e-54406729cd69 61860fdc-d0f9-4ec2-91ec-333d8cc7a8dd e71e28ef-4d2e-46bf-8feb-1fe4553b5c68 244f120b-bae3-439a-81af-1c4f708c169a e7ae5a46-4267-4878-b660-ae2b3fb3c93d d95bc523-2cac-4e1a-831a-d041bbf60210 f7ed471a-ce3a-43ce-87ad-eefcbefcff29 f6a40650-1d85-4a8b-85de-5904e1ebd3c2 518ef8d7-5913-4abe-86b4-eb7cd6d99af1 deff0207-276d-45a6-8067-119071baa785 cb71c3e1-c76b-416c-9ec1-70bbaa13bb70 97145c18-55c2-4b8d-81f4-2702e608e4c7 5084d946-7f08-4f78-bffb-e91361f6c303 2b9089f9-0230-469b-b33e-1e1a39e6859d ed914946-60c0-4e80-b44d-5d59e7276ba9 f3efc611-9959-4059-bc30-59ffb122c0fa 60ce3c49-a96d-4070-927f-89aba23c87ed 5e76b1ab-f613-4be3-8b54-71eee66e05cf 10746c05-0854-4949-a60a-5473290f638a 35324543-f396-44df-808b-6c309cf118e7 c30334a8-2188-46c9-8d1a-37e2432df474 bdbc3e62-bb4c-408f-a2a4-1b2f9936e2c1 f59414da-231c-4552-b264-f231af661cdb 524a8c88-8bbf-4d12-9923-811cb8457c76 e9e580d8-64bb-4332-ae06-2dcca9b6dbdd 52dd0c59-e77e-410b-a340-f0d80c13fae4 25cb35d1-1dc9-4af1-b364-28d85cd1349a 80c5d75a-be37-418a-9c07-9e354e43b7f0 cc5af3d2-8990-4bf8-b7f4-da42d4060850 2642d40c-af37-446c-801f-9487587b338a 5e7bb432-e8cc-4237-804f-0928753e4005 47425baa-f6a5-4b0e-9333-5be28772a46a 3829a36b-bf39-49db-9d36-5b9cd535e03b 0f737ada-1923-4231-9c9e-95e153f1692c 6ce8cf23-2ae1-4a91-b654-96bd11cb737d 14568371-44f0-4b81-835f-8441f639a9d2 56d7e1f4-4f96-436c-b129-fd772e8ddf11 da589302-3d95-4604-8207-b004bed06de3 65383772-b36b-4664-a5a1-f577508678e2 033c5fb8-6a41-4a2a-b44c-a257f7df9123 aba264c9-6792-4957-a5d5-12f12af1d642 bf9d6d5a-9696-4a1a-a841-5f182dc0d27d be6aa84f-578b-4350-a61b-39abed36442f 6e457260-ca0d-4307-b778-585eb1ddd9fb 1b166c8f-6142-421c-8e6c-7614c3b02bd9 15a55e11-39ff-4e53-bdac-71c245b207c2 13ecbf87-dbed-40db-8b7f-f5680f176873 416a115b-af88-47d3-8ff2-d23587319861 ed753463-ea58-4bb6-8e0e-af2404d21d8e cc9026b5-8a79-4ba6-866a-45c1a0cff80c 6bcd71b3-5656-42b4-85a7-184a1ec6910c 2dff9994-59df-44bb-9e7b-e25f0b3019f6 14b9eb41-8ac8-4430-aeaa-f6fc6fae5698 5e2ca4af-8956-4d2b-9ae2-5d14c1894a34 fffa9ae5-c75c-4a5d-bfb1-f247c16e145f 59b9b826-809c-45c6-b344-69637f7be42b cd37da35-61c8-495a-bc83-6355b363e47c bca18f8f-5209-46f4-b325-5d0c1b2e4ee7 94f241b8-ec2a-43bc-8c83-a840914afdb7 b8fd3126-30db-4acb-ad06-c9f229310445 838f11e1-3e4c-421a-8178-935f30d7173d 4eab6f39-18ab-4169-8d6c-4973b99faf96 d5e373ff-c480-488c-ab10-759c8c059d40 2fe61aba-f91a-46e5-b416-16af080cc2cb be219544-669b-4ad2-a089-ec6acad52b1e 057af73b-e6ce-4f4a-8833-0b22f51415fd 054c1776-4108-494e-a1d3-febc48856308 f556e9cb-5083-40e1-9ab9-b2fb46454fff 8522cade-a6c2-47ef-a1ed-658768a4e9cc bbc7f256-b9df-4f5b-b184-47c50e09df2b 6e77b06b-92cb-4f57-8671-a989be961752 3ed04e82-a730-41b7-b362-a0bb0c52611a 91ab508f-c084-4ce3-b8a3-a2c52ad08eb3 f4938911-05c1-4321-8834-05663ab45cf7 379eb491-9106-4460-bcae-aeba9df4efd0 85bca392-f008-405d-9c2b-b9d45b1d734c 5a8650d6-fadf-4fe1-8875-a194e1971fd0 f0aae377-6f3b-4e2d-b20d-2be432d0c523 3d1417fc-7617-4d1b-8435-37f30819f37a 09ec84b4-ae91-4b79-a372-a747e2fb8c0c 3226125a-ead5-427c-a4b4-fe66959596f7 8b81c539-1f63-486f-8b2b-b07c4c3071d9 0509b146-ad5c-4726-b047-5a51ed9577e3 5f70b6c3-4444-46a1-abc2-24e642b81e8c dae49540-e72c-4146-95e6-8aec05df76d6 f95e11e8-afcf-4c71-a2f0-3076ec5a16df bedf590a-9ae8-4f57-adee-e3a7b32f2b50 66025608-e302-4229-bdd3-452eb43ff7fe 8b38ff96-10bd-47fe-ad90-0620f15b29e5 b1cbd4c8-81f2-4057-b4b1-13d38b8f3c6f b39b3a2d-0397-4157-af8b-4bd6dc383f0c acc06a52-3d52-4b43-b69e-6d648bf86609 a98b4a8a-da81-42f7-a122-4ab73b958488 03b63869-7a9e-48f0-bca1-49914fa99d71 4fafbe43-4795-4333-9ca1-9c3fdd500711 fc666b7b-1700-4973-9850-e098b48a2ec4 ffc5692c-2651-48fb-ad17-6c91ec16a06e 65706b6c-8476-474b-b139-b5b018a5058a 0ebd44a8-4cfa-4e67-9e94-bc0f8cf77df6 0094fb40-fab9-4a4e-bb72-3049214f7d0f 95982a3a-22b3-4a80-867b-d2210223d2b1 28898b15-4923-4bb4-a48e-c2b33d1c15ba d3f730e4-bf94-4d67-b624-a4309ab0e2e5 276bc1e9-daf1-4d87-9dc5-f8f9379217e0 f581a969-1564-4916-af39-4144aa609438 ad86e72a-6334-41fe-88a7-b533c79a56a3 cd10d253-c123-41c3-9c2a-5e78484e692e 7a207de7-51f5-4a66-97e0-0158fab3fd66 a245694f-6165-4b30-bca5-c1e4b7fbfd4a 41540b5a-73ed-478b-af48-f7a32db2a92b 9d667588-0294-4569-9ab9-c2f78c79f881 8147182a-adbc-4d06-85e5-61eb489ed9c3 6ae290e2-3a8d-49ac-a306-250e1dedf5bf bbcceb7a-6342-4905-a609-f672a8c0f32e cd75b862-7141-4b6e-86ed-8cfb007fb835 9991acf9-7192-4120-b8fe-8b5bb0006318 f989979b-18f9-48cd-8ece-e82378a31f39 8cf63bba-3158-4773-b54b-486a3f769776 52dcc926-b254-4237-b07f-5dc97e194e8a 371010d0-7532-4459-a130-7887b1b13a2d b7825009-bcf2-4f57-9a3f-0bf645a4b5d6 ac27ee8c-636b-48c3-8398-08e34d765357 b5d9c6f2-1f86-48db-b3d6-3e151bbe9ec6 02449e6d-cb7e-403e-9fd3-01aaf9bc474c 4f8a5002-e476-4673-9d96-028d6e493492 61ff3e50-cfc5-4151-ab60-8d5b6c15e39e 1a491f5d-6511-4f0a-88ab-fab2571a77fc bd0d4fc2-cc7e-4127-8c1d-c035d50f15ca 5877d51f-3290-4fd9-ba21-0bd3fd93e282 4af8ac4e-6852-4cc0-991b-597dd1ef40b3 941d0dc1-4159-4fe7-8697-87b636120741 cec21467-0c91-4999-adbc-af169211d19a 1d30f627-9d39-4320-92c4-5bf2694a86b1 3ea01507-a2be-4d9e-a1c9-6f0b76d1affc 16c2e2e4-8f72-44f2-a191-00b41d746fae 7e259458-94d3-4e89-a1f9-fcef0ba830ff 9018ccb9-d113-4ba0-8908-a1949168e3db 6e9031e1-f0e2-4b56-a4ee-fca3949cfff7 03e04090-cedd-40f9-ac15-5381c5d45c95 e17f654c-3f1e-45fb-9eb1-483f6878e798 1ca1528a-44c9-45d5-b42e-fc0c1fe7b243 5087c7a6-a907-4393-992e-7e7b1d2e525b eb14db6e-22a6-4180-9fc3-d059d3e82fb1 ccd1233b-a1f6-45e6-a0c3-a246abe511ec f22eca95-2556-44e7-8352-6678a25a6e76 76df78f0-927e-4f54-90a2-a7ad56e32822 4c3f2660-0137-455c-858b-85c503bd2f24 c9c202c9-d220-4194-8869-c238b188d685 f9ecbef1-13a6-462f-a258-94858aac6b4d c3e1ce8f-b2ad-43d7-a5cc-e2c43b62ded9 91221a28-310a-4c7d-8eb5-0d4a26e7b5e4 ada1ef7d-a246-459e-8ad6-883f6f07417a 8b607925-bc95-4cee-b8a5-e6403ef4e01e 0cb5379a-1d2a-4d4a-abfc-f04dd56a88f7 89ffba29-b558-4cad-8ed0-43d53b486978 4f11b312-5def-458c-8619-d1096f1afc47 e7ce5172-d22a-48f1-b649-8b3ea1ad2223 8d40c67f-3d9c-4591-86aa-c18383415700 c4317fc8-eafd-4415-8ed5-eb8bb73c49c2 274a4f44-d341-4796-b0db-2a26a1337f59 62ea7533-9ad9-403b-8d2f-ed86b7424d2f 66987b2a-be43-44b7-9eb7-4c6b40c8fa22 8feba2be-3919-4aa2-ba9a-9c272d4494e7 8738e2d3-bc8d-439b-a40a-743e357f4f50 f4018fde-e384-41c9-bc55-df33d4b118be 6f0f7bbb-ea4a-4ce1-80de-583bd3aea158 4548c602-9329-4242-ad7f-74921d5d5dcd b103aca3-9047-4721-a71e-ea254593d94a e7e1ba09-50ab-454a-b8c4-60f6a4278687 e19f0411-e3c1-44d7-80ca-617bdd0cbce3 19de2cf2-d945-4283-baaa-49395cfd52bf e1da6be0-97f2-47b7-abc8-8c9c3a7f1771 73aad37c-b21d-401e-97bc-3ba49cb87a94 fa6811c8-a651-44f6-b3ec-c363c6125b9a cbf36640-5599-4873-b2a1-4d3dffa49211 89c59339-e9d1-47c8-a4e9-29c754f12baa 1c47aef1-2843-49f1-bb90-efcd4ef697f1 1ca0969a-7979-4aa0-b78a-00304e528bdf 08b5007a-1c74-4e74-8ba1-1b48d21fa6fd 8457e5be-5f90-412a-82a2-a36df6ba43bc b8bd866b-7e80-4982-9d70-e917d201190a 23715667-3ad9-4c74-b5e0-780de938653c e70e07cc-4db0-4138-849e-a9fba1cf018d 0bbf96b6-7bc9-4a76-a5ae-30ddaa2caa66 f919418a-a67b-4f27-8355-77e9e7080b05 b117b3a2-15fa-4a3e-9bfb-e49b9f88bc92 08e42c52-45ff-4441-8bc7-c597cbee6777 c7f7f167-fac9-475c-bc33-6dc7a19e1f11 c049c473-705a-45c4-a772-666973ee5457 f0db40ca-4710-4dcf-8ca3-e719984585e3 bd9b4113-0ed8-4fed-aa67-0ace30654c53 7abd9f14-a452-4485-a48a-eed1f1eec886 3680b335-24d1-48ab-bc78-33f342b9b958 7ce6efb4-e3b8-411c-a2ae-c8ca8029b442 f5f39c76-b3cd-4768-bc42-93db10270769 29467f9a-8017-42b0-9103-acbf441fda13 9757c6d9-136c-4cf7-913e-562fdff10b68 5684160d-19f9-4053-a0e6-3e2fd2c7c656 32d77579-734d-4f97-a0b5-0edad18ae255 c23fbba1-3f36-4b35-a5d5-acbd07a321a5 dca7ab78-094e-47ff-a8a7-25593c39d9f4 d6a34a39-0755-490c-a6ef-82387aed9825 0344dbef-9449-4cd3-a9df-a2ef09de5fc7 7a64311e-c759-428a-9eff-40ae48f3730b 23cc9c74-b89b-4252-9c4e-88a07731cdfb f0cfad38-10cf-4767-8ce3-071fe1b0b5bb 9ee91ff8-10f3-4b93-90f7-2ed8392355ca 9516f7e0-77eb-4c82-b77c-273592ea951d 6cd6a159-7048-45e9-aed4-feb2d369f2e7 c0c55821-f6c7-4b1d-9365-c10d1cd5dd0f efd66fc9-b68d-4b2b-93b8-690dae7a02f1 144a275f-90f3-4137-97fe-f8373a2a1e82 421e2aef-3be9-48ec-a4b1-88e17225352c cc8b8f14-6e11-46f7-ab0f-f37e83386374 99ed2395-8dcf-460e-b89a-1e16cfad9cd8 3848cb37-4bb3-4f49-9f30-affc6fe2fe7e 7509fb90-a6f9-43f5-9de5-1a997aa3d6fc 20d2e5b2-aac9-473c-be78-f53b995fff9f bd1da523-7df5-45b7-a3d5-4188ca1b9d13 397de842-4aa1-4b6c-91be-cf4b2bf72c2a db8b7fb1-656a-4c69-b7e4-941543cfce52 1855fcec-476d-4a10-8add-86d26bb0acaf 5ed89e8a-48af-4b03-bec0-1d85a091630a b990bb13-cdb7-43a3-9815-136785b7709a 6ff10f5a-d81f-4ed1-86bd-e7f87336fb46 4f40a6e3-2eeb-4057-8ad8-dc84c1e7c71d f51fd564-d21d-488e-9dd7-c16b96d7ba83 f846ac22-df8d-4941-8810-2cb6d9775540 6591a61e-b7f2-47c0-a84b-3c3ced7b093b 1bdd4fc1-ff89-4f12-8049-626a103cea3e 137244c9-3e3f-48ab-bf17-863d63267297 0684aa17-4f74-4711-a388-dff00c7b2315 49f785fb-3598-481d-b6a6-663a1ce3a245 685d9efb-667a-4c00-918d-e6aad06d2a74 411c8e25-fcce-4615-890b-7f4b432ce015 002efbf8-9883-4ada-9021-929bc7a97e37 d38f2a69-02de-4b77-a396-293d16c9b6c6 c8605040-a7d5-4498-9e00-46a8e08f141d a0266456-7c40-40a3-9ade-3f830fecd69e b8da9c82-f6c2-443f-8a83-04733a5c5832 68354f62-2cbc-4655-aacd-f40838c56f49 d287ab61-45e6-4f02-a8fd-cfbc338d2f90 f1d40854-a12c-4e57-bf97-0c887056dd1b d35fae15-a73e-4ab5-aa9b-b035eadd4031 b8120a09-8306-49ed-b114-446fcffcf577 5c532ea7-818a-4202-b96a-a293b10bcee7 7c667027-80ca-45c0-a46b-98f3ab4df316 0878c5aa-568c-4c68-9aaf-03c6f3a13e13 f5450852-c81b-41b7-9dae-5b5c606cecf7 90e05ce2-3318-479c-82ee-d5d1e16ce866 a52c48c6-68da-4144-96e7-f0b9f95724a5 b73135c5-8aa4-47cf-ac6e-5ac293cf3911 5b36b411-1d05-4157-84d5-cd6946fd15ce 3e67993d-04f6-4747-a097-661bfe3297e1 721aa955-bd24-4c5d-a5a4-d442ac8f1cce 7962d756-e1d0-406c-ae11-60be2011daf1 92fabcb5-4f23-47e1-995a-3229cee70723 33fb8308-f13d-4b54-9de1-a27cbbf6e95d fd1403a7-1b79-4aaa-bbed-7f0ce3a46266 efadd8d8-23a8-42a9-ac10-ea59a6dbb90b 668b2902-bbb7-4a4e-82a3-84970471b3db 69dfa58b-eedc-4b3c-8d9e-23aa70122157 3315dd49-040c-4729-9dc0-f85c9dc429ce d655a040-ed06-43e5-9a32-2b72f1293112 8a8c0053-d78e-460d-b9a0-0f4e419ddea4 a916b8da-1ffc-4d2f-bc21-66a810ebe1d2 b0d6ee5c-0e25-4c20-a95c-d6d9744198cf de089f0e-4a4d-40a1-8705-26bd0ac62832 bd7df68b-9fc4-4092-87df-8fb5000e0a77 4708be9c-ae4a-422f-9587-f44acebe1adc 832f7a27-9501-4f80-9dc9-b4903af6c490 d5bdc806-ebc3-4b75-aad5-f7f5e94fc11a 505be2dd-7852-4b9b-b381-7cf10ac20504 9d97de53-b44d-4eb2-b725-7ef5d4d6d60d 4cf69631-a8a2-42ae-af29-53502d143005 bf4065ba-98ef-4a65-bdab-bc7e3a61bc43 58fcd1a3-76d7-4c01-97a5-7dc200a59416 e593942e-fe56-4ff4-9f01-31eaaea84012 64fc17dc-2520-4c8b-9cf9-10f386b4b24f 107e41da-1354-47d2-a8f5-fcd1311f3353 cc50bad7-1d80-47fb-973f-27dde2f93641 136c7d51-7dc7-4136-b2f0-77ea58af0b35 d1be6950-d611-48e0-9666-b73cb4ac21cd 43da5f81-0281-4c43-b9d8-edc1ac9845e8 69005bc9-cf8b-4e68-a1e0-2fdc2c7556cd 1a10e765-239a-496b-972c-8b70333b0e76 dd9d85ac-be99-4517-9384-dca3a56d41c6 60d85638-26b2-4d21-997b-7cfc36537948 94990bba-d455-4491-9690-3513581de6a4 093bb17f-bf84-479d-b456-1ff51c957321 f6274550-4301-48c9-a213-8b42b81946af 23161621-56b3-40b9-ba61-2d4c3dca102f 038c58e0-adaa-4046-a909-46b01556b8c6 f741bf54-3dd1-4ff4-8d2b-29c672579550 1f442b5a-67fc-475c-ab71-e424f78c36b7 d398e2fd-dcca-482f-9ee2-609279bbdd63 d3e2c884-f823-4aef-8bf5-e86f04c4801e deb99c41-dcdc-495b-b1df-eae3b23def88 8b7178b7-6535-4680-8797-6ddbbce3dd62 bd80f5ee-6c55-4738-8079-22a2b709da37 a20c0f51-3cd1-4f3b-91c1-a590ce6ada43 819742f5-616a-490e-916f-1a4e3012c81b c34d3ab1-33b9-41e4-9251-ce68df9a681d de448aa9-91b0-49ef-80fa-bbb8a38eab64 d7a871c4-122a-47b7-a35e-198a0166d5fa 941471e4-9c5b-411b-8720-64884c2e6c8c 4623e7f3-f950-42fb-85ca-a03da52b3c1a 24d3542e-6f79-4315-9441-fbefc2c12e62 610c2544-38b0-46aa-96e7-a2cda21092f6 2e151f53-46cb-4b8e-9817-e04a8d0dc04e 2af6f2fa-36c3-412b-8285-6d1f9551f02f e4a80706-dab3-481c-95d1-3fdc42a98435 13b0705a-a3fb-4a01-a2b7-56ca8793ee2f 592d781b-a232-48bf-ac8f-4faddc93bb58 182f918d-cd19-4149-81da-9775a8e39894 921d7970-fbf4-46a8-b62d-07d30c88aa73 6a9acdcf-c206-4983-b14e-a7040b28650e a91583fd-7c96-4fd9-a19f-c6270fd6c0e0 42e94400-850c-411d-9e52-20fd3564ad91 5d88fa5b-0174-46e0-be17-92fd3d51bad2 19092a6f-25b5-42a4-b518-a2a3008d39c2 04b452b9-eaa6-4aec-ac73-dabb18bbdd53 b3f1a9cc-d7ac-466f-a376-19dcf0de9173 4a17d75a-2584-44ea-81fa-7edf4030b27a 00dd2647-3a5e-46f0-be6c-c45305928128 ba6af460-fc3d-43a4-8a41-8bb42a96b405 c9e93467-824a-4ab0-bdd5-a9149f612852 99de5da4-2c0c-45e3-a601-55f7c701dc1a fbe53c45-9511-486d-96ee-129573ebe699 aec69adf-607a-48be-a011-f7bf1b13b15b 2e6eda0e-765e-498a-8dbb-212557b6bf07 e646923a-9824-4a32-bd73-c68a46beee1c 7a9bb71a-aaa0-42e3-bd53-fb7f768e9024 2c26f100-9ed1-4b2b-97c2-2120dc5a7b95 60e2f092-0b3e-41b8-9e40-3d29e36d8c8f e082bcb1-000f-4524-9e8e-b5f3dd1a109f c74802cd-1bf9-4be2-9d7f-236b46b8b846 f6309c56-6e28-47ec-a630-fa517027b9ca c69f543e-c2c9-44ad-81f9-965c26643cb8 8e62dc87-34cb-476d-b868-b2095a643c11 72a78433-a4d5-4714-8aa1-eefe8d916c4d aba6ba5e-46b4-4e6d-8aaa-18ae623356b5 b8902e46-d16b-47b8-bae4-c06035a6d364 f0165947-7eed-4350-b907-4a4fd1c9a11c 8a4329f2-cc0b-4fc6-8a9c-1a177d6221ae 6c4d70bd-c244-4e8c-9b6d-7fd893a0700a 621d39ee-a95a-42d3-9a09-de029279307f 80c0b7a4-b5e9-45c6-b411-11fa23020702 673e9243-7a7d-4a67-9e07-088de7c2a273 2c96f6b6-9ced-4661-b5f3-3cd56339cc5e d20db54d-4584-4846-b36b-1adae5d4353f ead65307-5abc-42cb-aa43-e72b7825e8f3 0526796a-6fdb-49b7-ab09-ef894643b95d 11666264-93a9-425a-bd80-fa78992a39a7 578ac0b5-41b8-417d-a670-5d40b46f22cf 5c5f918a-96b4-431f-b26e-578539583970 1265a5ae-b1ad-4e4a-a94c-c033beb552c6 973c4daa-0f27-4974-b564-bec1c13a584f 23f707de-2ce6-4062-b927-06e05507f0f4 4c553c68-3a1f-4ac7-9ec9-6325111106e0 ad08220c-9d8b-41dd-a315-ffd8e29cdcbf 7e9506cf-428f-4ba8-a91c-c6ea6ddcc7ff 2fba51f8-014f-419d-9c7f-8532d7d7db60 24a9c5c5-ee02-4cc8-9737-d63478f69da5 9c1eb348-ce65-4362-86da-a17239ce0984 a5465eb0-2e1d-4897-8b77-7a5e7c827691 a9f0e8e6-cc4a-4ff8-affb-72b3af7c5c56 b5e84b74-dcf6-460a-b638-11004c12c8cf 66ed1462-3754-44d9-ab73-fbe73b344e07 233886fa-43f0-4d59-8a64-d91ef853f5dd 7845001d-eb24-43a3-b082-00169666c0bc 85a7750b-9e56-4ab6-97c2-de4b21633df9 3197a8c9-04d6-49bc-9572-9e9b4827081e cece6d21-32f7-41e0-8ad9-c8f1d2b74a15 30ada7dc-10fc-468a-b83f-c78ff85b0c6c 01807ca8-32d1-4d40-81ff-ed47bcbdfe12 52a10788-d5e2-4f36-afde-161321733253 186c5497-04bf-4556-9f45-43cb62491e60 f2eb8317-bef7-46f9-b01f-6ccb85fe9664 eb3193ca-896e-4823-a1bf-7668ece9a4b3 a04b84d9-c9b7-40d1-960b-c354f89c596c 9b638054-4c93-4d0e-85af-d0092f122da7 1975be98-b998-40da-b889-068a2f4e9f73 b8efef19-eac1-4156-b735-797928d6d413 3cf9c9ed-1583-4f48-9e35-a87bfd2e3822 b20e12fe-1500-46cb-aac5-055eb3bbe702 cd50855d-c719-4094-affa-caae7bf23b9c 824cb6c4-0b69-4990-af3d-42aa34671282 02dd8651-d49e-4309-9f44-4e38dbe13d30 d723612e-a5d0-4e50-adfb-a2affeeca363 9287a3a3-100a-4e2b-8c8a-2874f51503b9 c1423192-441a-407b-a4ee-91afe9b62ba3 b54edb18-04fc-4ba2-8689-f94fafe0d180 a4286bf5-7627-4a34-9c8a-eba76327824f a13537c9-b99e-454b-9e12-cd35a0ae3d78 17ff0006-234d-42be-810a-d58e223e8d07 6cab3127-b8c9-433e-9714-9c1d3c554e70 c7e918b8-57bb-4e3c-aedd-dad16a7c00ac 0d5003a4-0be2-4d20-9ae6-9168c5846e94 8acbbc50-bb66-4de3-8d61-c1effbedf5ac 0bbec824-d101-4b21-851b-15e96b3806ed 04533a78-d4f2-4c57-8629-ec2a638216a0 039d346b-a315-49a0-b74f-af20da5fc6fc 20e11145-a433-4fc5-994f-4e348a2d1aa0 6bdf16c3-1b8c-46a6-a189-cb91505613ef a605dd1f-5a46-4b6c-8527-862b89dcd7bb ae137537-c34b-452d-9d7d-16a33d295cb2 635449e6-ea2a-4a51-bf01-8f4e01574f8d 16e7c259-6fbb-4762-a94b-a167532187d3 1217a851-0430-4c31-aa12-c2e853627d27 738490f5-585d-414f-94f1-a670ece6e8ff 75489626-2945-48cb-a89b-7aeed82ffb5c f16e8c70-ad7a-4100-bde1-70cbbbfd153b ae046d6c-c649-4793-9ab8-64e442ab7e54 c58eb4f2-8eae-4c33-982a-d12be3fca433 c44f6587-1114-4419-b0fe-bb95a97127b4 173ade44-eae1-4376-9d9d-357057685025 fdd6cfa0-8e73-41fc-b80c-850fd247466c 4370c7f8-8a9d-4565-a72a-230676551b30 211775d7-d80e-473b-824c-9ce3dd89b582 36a0aec0-dec8-4af5-9c73-6c20944c5bef 40c2e975-dbb5-49a8-ba02-da6488ae2b1d 7d9a82dc-5061-4b94-a588-46718c7797ff cf3b5c9f-169e-44e3-9040-299889f2a792 3c2f7553-104b-4edd-bd85-fa7c02684286 441c226c-cefd-4273-ae93-58ad01e873da bd52d757-c504-46ad-b71a-5c0bbc708983 c1c83176-16d1-450a-88d7-e4a61de54b8f f2200b2a-c840-4d51-9466-562cd51604ba 5066def9-18db-409c-8d91-dc1bbac3e947 c90686a5-27d7-4c8c-a7e9-83517d015ba9 b38622e0-fe80-411d-9cb6-00117e649893 c4cb7000-995f-48c4-92c5-8695ddc5d294 aca9b610-e0aa-4f50-a0fe-1b705be34ddf 6cff0d57-5834-470e-b2e8-ba9cc6d4572f 266412d4-0b21-4b8d-8026-6c7d2cef1d18 b3a44c50-f21f-4573-9846-23f00c7648da 4eb30687-0812-4385-be4d-552b20251b94 f740e39c-330b-40de-9778-d344c2396315 aac24338-fa06-4a2b-aa94-fb6046bb0075 38dce1be-b2eb-468b-8260-9f32a1bf7489 ac2bede0-be2b-4067-b13e-99932d98c99c 6eb6a694-d599-4545-9f38-0c48fd15bada 718248a7-4050-4b48-93d5-dce825168f3c 72b2251c-0d01-4317-afc1-ade78989c93f e58fa1d2-de4d-4107-810b-d5cd2ede309b 69b634ca-aa7a-42fd-8f13-3e9a9764cbcb 12f42cf8-f4a3-4bde-b345-f5c72f147742 7bfe3cfa-522d-434b-a6d6-8922141e2a52 cca4ce76-8f1d-426f-9df9-aa96a68a8fe1 d582fdaa-9b41-4374-b37e-cb2c9282fe2b 14b70826-1693-442c-9cd4-b7538533284d 453a013f-6088-4fc6-a5f2-7608e6dfc18a 5309a00d-fb0c-4006-9289-fc5ce4ea5122 261986a5-e1e6-4b3d-9e30-fdd0273d9df6 cd0a818b-b21d-45b8-862e-85072a48c8de c6d16036-71f7-4346-85cf-8fbec299ac2e 65ab78f7-5604-4b73-9120-1d52375ad080 272d41b6-1f54-4988-91b3-00332f05de47 1f8a54ac-ab28-4535-ac17-aab149d550fa 346ce672-3ded-4b9f-a928-434ac7a3d0f9 63bb74b3-ce8a-471c-8760-2e281d8b3cb2 be882edc-e259-4993-8160-d1cc81171b0f 85c16074-200c-4635-84f9-08eb57b8f23d 54d1cb64-98a6-4c48-9b47-7b17682cb233 d12c7c2c-27ff-4213-ac7f-8459a97bae1f 59ca6b49-aa94-408a-8d75-4c4dc83a7773 0d1381f1-af79-440f-aa78-e2680fbcf828 a96cbc54-5e62-435c-8db6-cbda45b69eba 966f8895-51fd-44d0-be18-500cb3a947fc 912e8934-e98f-4158-b71a-b69010d8bb1e 2b87100f-a9d8-43bb-a9ba-93dca5ff59b3 8196792b-54ef-4128-945a-bba1b9ddff31 ffb1aa62-9536-448f-ae00-181c53765ae9 902020b4-96ef-4653-96c2-df62ed6efdcb d3dec7a0-6adb-4732-9b6c-576fabe32d25 4f8fb72a-8a22-43a3-8890-8c3ae7ab18fe 36d4478a-a9b0-4920-9ea3-862cb0587f95 69e3fa84-0612-40cd-99b7-d61e91389a34 e0ba1685-eabd-432b-bd67-6a91d2e4aff7 36dfc3b6-e163-482b-b93c-0078131100ce a1f865fc-f8ec-4f38-b944-7258bf230a25 f2c90025-c4c5-4c5f-9736-1b8315ff341a ea87a259-8ca2-4319-a734-6b4d4f20dc99 ed5f9528-a3ec-4262-89ea-32f8ca9527d4 92f41647-5593-4238-ac6a-e2bb1039003e bef239d8-c435-4237-8dda-d4bc175817c6 fc5af1e8-f44f-4abd-a450-93a87be39f38 1421f945-ed2b-490f-9a76-7c680eee3f65 32b34e05-71ca-495a-8987-f0652c5436b7 1d2fa760-7a50-415a-a083-2646a3db3061 9f965320-14e7-4a79-8d25-410c8a2c4f0e 329ffe0d-984f-4c11-b2f6-cffcec345179 e18a9e6c-ca49-4082-a5fb-5642fea84ac4 9c511607-2814-4104-9645-cbbd84d5bdd5 4cb8148e-7434-4d8a-8514-b1bdc6c398e1 b8321656-b6ea-4419-afe1-d817664ef877 d67af24e-b75f-4865-a95e-b1acc7c7a20a 85354ca6-b382-4aef-90ca-e6521101e681 a48bfb0c-bc16-4e82-a2eb-6e69d0c8da96 1fc3137e-fab1-492c-9d87-5d9c45041a99 6e3c7490-53f5-4db3-8998-6430338f2009 1d0da7e7-26af-4d89-a7fb-fc85bb337dd6 d5b6988b-4397-4f45-910d-11226cafcea6 adc94703-f8e3-4f10-9e5d-1e4f319e67e7 37d9d958-701a-4dc9-9545-a940ef491018 6155c9fc-0c88-4caf-ac15-1e8a4951869f 91c72702-d85d-4ec6-bcf6-2193199ff4bb d99a468b-edc2-4a9c-8889-c9f796373a85 11b95c48-d11e-4e91-a30c-f2025acd28ae 3f2771e5-0c6a-445d-abd0-814178144d61 8529f0af-79ef-45b1-878d-f6ea1a2d6514 96a6f20c-0cb4-4a29-b628-58fb431d86e8 641d8063-bf18-4a3d-8c8b-6541df95bd83 c70cea03-4e01-4b19-bc5a-407e09d508c6 75bea684-7237-44ef-8710-e11bb64f3658 a3d00356-b4b5-4d82-a608-fc8c9866b3e1 6bdc0c24-a83b-4d64-af22-39ae048d53e4 56008497-3465-4a51-be94-a65ce810e0b0 0629acc6-c05f-4a18-8b6d-1d3ddda08900 571387b8-96f3-487d-bc58-553b78ec8b35 deb13a53-4abc-4efe-b5b7-7088ecf9f7d1 604d6fc2-f540-4ae4-b7d8-65e5d2576391 9107ec0c-cd3b-4ce4-8b7d-1d15777456ab 5ed4ba5e-0d5b-4047-86b4-8326df5035b7 a63a7a8f-66b2-4bf3-b50a-2444f58c2705 9d90c53f-8920-44cb-af2e-1722f29b4da2 8c4565d0-9786-4bb0-95af-d84c9885c4b4 0d6ddb3f-707c-4f36-888a-ccaead777bf9 c88daa54-733c-488e-afa0-83fd12f2a9e1 f36c2ac1-751c-4794-9ef2-e2a36aaa0c3f 55387ca3-fff6-4d2b-a3d2-20ae36b46e78 9294a11d-4efa-4c3c-8dbe-fff45f317a9b 07136bed-3ee9-40f6-812e-ef6517ebf999 260cff0e-9a4f-47e9-ab92-55eba2c1ac0c e82e75b1-703a-461c-bc0b-fddcacb229f3 d058b550-01fe-49a3-9cbd-339d5a0c13e2 e505c8c1-9425-402f-96d8-8aa314d2bd35 16cfe57f-538e-45c7-b11c-081b67e78719 5884cec0-c958-49f4-96c8-67d616b91a81 121a417f-c208-4acc-bb92-9ed8158fe7e0 581ef3be-cffb-4544-b9a4-8eac0c840bf6 01f65270-1e3a-4b13-bf2f-0783ede255db e2d4f155-7f0c-47e1-8bbd-9735557a00ad b279ad63-f684-47a2-8400-9378e784cbde 149fa091-3359-4a95-9912-2e2996c251b1 dbf6b613-0d34-4eea-aee9-186d9122c63f b49bb236-7858-45dc-b6c5-056f1566a358 86a9b574-fa06-4de7-892b-d8b31f4c8077 439c0cc6-90c9-4e5d-9160-68b281719e89 f8802394-f448-40b7-9bbc-15b01169a7cd c9c5a855-1d75-48bb-b082-8a29e2e93ca2 0cc187ce-ebd9-4c18-b20e-dd7da24941c5 117b0187-9fd6-449c-a1c9-da53e754253f b8fdd321-12e5-4787-aa9d-1a03ee13ba57 f0fc25f2-9ba5-42b1-8530-33b2995d6cc0 adc91b27-e532-4f2d-a32f-ad9e0dac2792 24f7c89c-c41e-4692-a232-f6c1d047e15d bbf276b2-a88d-4e0d-a72a-8df9f321fa3f 581cb806-e8b0-44ff-aaba-34a1ff407a65 231090ce-cfbb-4a96-be96-9a8b3c0eca00 7f2a07a3-1215-4972-81a5-f0ae248cb15a 4a647c70-f7be-4754-9118-0802cdecc485 448493c4-03c8-4bda-8210-174667c2606e 6b44bbd3-47a5-4cd0-9352-5660b58870ce 7fe1fd49-54ea-4fc7-9537-bdd2a4ad351a 96eb90c5-fa3d-4f1e-85f6-41b87de54186 439305bc-e1fc-468e-8e07-d2c83f65483d 610248c5-e21a-4a28-8c08-a72bd219c8b5 04f3ffb4-be80-4e7b-8916-9ddb2c1221ec fdf0101b-b1b6-4eb3-b079-42aa9f73e796 43351eb6-0ab0-4cd5-bc85-339a6dd5713c 73805866-586c-4a75-b15f-cbd26a60ff7f 2d5cd8ee-784d-4f7e-8e60-680909861d4f 7a0a67e7-27ef-40de-be4e-da6282ba132a 3bee6dc9-858a-41c3-b143-553b3f572773 fbe92e80-0655-4d03-b6f3-26cf5696d069 4579b533-0a0a-4e95-8d57-b1ec72601cbc 26b23a5b-9337-41ed-90e5-86636b9d70bd 2e51b34a-8a42-44aa-9216-4d2cf918ea7f 79b03d7b-e45d-429d-a31d-732b90eb222b deef6d57-e510-4e99-8179-ec9a3274ee3c 09c320f5-8308-42df-b17d-f2b4e1629eb2 5c13f728-86f2-4262-bf0a-7d760b13b231 733ef38a-36ef-4ffa-a2d4-0a1e2346d424 cd87eb6f-ebc0-4d26-8abe-10533f3692e4 f547d20d-6996-4624-b269-59ed6fa37800 7a6abb32-8356-41ba-a6cb-46e2de483ae0 3f2728fb-a2c1-4138-94f3-0a01e0a03c5f a5b6f7f0-b2bb-458d-b0a8-e7db2da88ae3 b68efbcd-e2b9-452d-927d-0465338e0f74 05ae56a4-3008-413a-b062-e44f053dd507 ac6a9d12-7ff2-4000-b470-135ec22688c5 acb63405-5eda-4493-bb80-5fdede8e186d 2b2dae41-9624-4ab1-9f81-382a469bf620 248857fc-2f34-402a-a13f-9970b90c2e1a 997ec643-eac7-46e6-b824-5154c7f7a4d4 fddc44aa-c4ed-4b7d-8f4b-5db1c103e630 138ca8c1-a7f7-4417-8079-c5935c392d5a 66d6e88c-f0fa-4e6c-a586-70b45a294e12 5f7435c2-6752-465a-9bda-db313b8ff93c 1e1231ab-523c-49e7-b32b-b75d4821eba9 0f588295-5a31-44da-9a61-f5c8bb49250b 6cc1ba40-07f2-4fe3-a28e-e443d4543c00 b574e11a-d888-462a-b80c-acfb8d82264d 3b37381d-e547-47ff-8489-6f5684260505 36a20b78-cfca-4a1d-af61-da4e275c48f4 a855fd23-9d1b-41a3-b746-558526f4874b 586a72c7-c86f-46f3-b0bb-1a0d0027388f 1fd8ac85-b00b-48e8-a53b-5e39c422f2d4 42cde46d-d067-48f7-8829-75c43846bea7 e6615d0a-9057-402c-a9c6-793c5b766e36 3110be12-58fa-429f-9fed-d96688138092 f4be0368-e029-4699-9845-df21c5642687 daee72cb-cc4b-4967-9891-722b353e1010 0b89642a-b769-4d48-88f4-5e1997c53a59 6fb94c15-7401-4ee2-a4b6-ef31abc37290 b702c069-f91c-40a6-8d6b-7fb17581a760 d27ef511-6db6-4f96-8a40-08eff43a11e9 cbe8306c-3105-4e87-993e-da6f443e908c 36eeefb0-d19b-42be-8429-4f5babf87f95 a379d918-531b-4891-be9a-c2f22f199b97 49a5053e-8823-4274-abbd-0c653443361c c1ccb166-c2d9-4728-a210-6c911da0f007 10b9df73-fce9-4544-88e8-50697ae1bd66 2575de73-050c-4779-a9e0-1546ea4167ee 13527673-4039-49b1-90d9-88ba8cec1fa2 539d495e-edcb-4f69-923a-ae3864089ae7 a575c304-7198-4d81-82a3-337ad2a7f00a 09d999ba-f79b-439a-a343-090fb880047a 5a1c66ae-7a04-4471-9b0b-10ee98636894 48e58610-f236-4e1d-b730-0c9bf54df509 d1a8602f-c9c9-4aac-b4b1-2acc0561412d 9f8bbed9-5b4f-47d5-84e4-865811cbae26 87a62495-ed25-4e9a-ab1f-bdcb3ec92beb 2dc5c1be-6f4a-491a-b092-47d949d330cb 9e057a7f-16ec-475b-be35-ebf518271b88 8e7174b1-2211-40be-86be-796294be7e22 98258cb2-79f1-4ca8-a07d-4bda65493caa fe03b35b-807d-49b4-8396-5a52714c3581 b8675ab0-944d-449b-882c-8376fb6d7161 8385677c-2969-410e-8ce0-4aa048a296c2 05b2f7ad-cd37-41da-bd2a-8d30c4290bb6 f8219eb1-a9b5-4486-a659-6c80ceb32310 2389ce35-ca76-46b4-9793-5b1fbc053bf4 070d36e2-179e-4547-bf91-4270c2750507 4b87fb5c-c95e-4344-8aaa-842e81b502e9 50fe7667-9b86-4bbf-918d-521737ac147a ee9c9b34-d3f1-42c8-8110-7df1fd44d4f3 dbf2fa9e-c0eb-4c00-be81-d836c2051569 503bf575-9cc2-4d08-bc7d-d2e85eb28711 abe29ae9-c066-40a4-96bf-c35879a84675 9450adbd-631a-4f66-9e83-3d14c7a90dbe 431792f2-cff3-4836-a693-03fd98a7c236 3a46d940-d83c-4b11-a955-9d4ad0eca452 61a5f1a6-14ec-4b90-9b6d-893fc3d9b481 024a6282-edc5-4420-9c34-565860f54aab 463b6a73-0f6f-43cf-878a-80b8df272fed e194de7d-4dc7-4186-9b72-285d082567cb 0675d2ef-909c-4743-a6ec-fed5dfc0c045 dd701f4c-310f-4df8-9747-fa1366b8cebc c764f399-e325-4b21-9b96-9c69158519f8 3fa70b0e-5648-4f16-8ecc-ba2bbcf8f531 4667c1ef-dfa6-4d7c-9a11-47fea6cbfcac 00a1bde2-dd62-4364-a9df-9bf7c67e0022 2900fc2f-89ef-480e-ae0a-14280524dc47 09cd52cc-f03d-48a3-b859-04f1797f32f1 4b279b20-a67f-49cd-9990-502cd5249753 15f5a57f-184a-432f-95aa-6b9d895004a7 14a03d4c-2037-46fe-a9b9-dcc31d1ac437 81fa5042-3572-47e5-aa28-066227f19f86 881b78b1-7c89-4e77-bcf8-8c1fbc808eb4 10655f63-f29a-4330-bc3d-b6fa1ff0093a e1e662f2-3120-4f29-9158-af2fad08cb1b 8dfdd1a0-03fb-4e7a-8edf-acd6330c69e0 985f850b-4897-48ff-9f9b-b61db9d7cf55 9c95f13e-517e-458b-9896-de852f0ce60e d7578f10-1fa7-4855-934a-e4ed00a16706 c0ae9578-616b-40f0-8ae3-242ef22ee6e6 5f564bd8-a1fc-47d5-ae13-593107b9b362 090c1098-804e-4f5f-bbd0-919dec667396 d35f3f01-d468-4622-98e3-ab1ce860d064 96d90f6c-8ac5-420e-8766-6a72ba705553 f653b78a-b689-4b13-ade0-d2857769354c e801a5b1-1649-498c-b1e6-8be6db56efa1 a41e0875-82bf-4903-a4b9-07c6412935c9 a89ba17d-1404-4f36-af48-cf0846ff1936 4b4f9911-42a5-43f2-8830-db308069199f 947e93af-e938-49da-9a4b-43c98de65905 33d1dd25-d458-448c-8f0c-081bebbdf35e 9d4c1421-543b-442c-a8f8-f51c028a29cd 017567fb-2d3e-4b1f-8667-6e742b02312f 5442c49e-e158-4d9e-98fb-ff2789bc1b71 30609095-00ee-4d98-8abd-87a2e8cd87ec 8e4e6eae-9ac3-4321-ad5b-983866f1f2d7 ef9a346e-8070-4b46-b1f6-6efd6628314c 90e02182-d406-483e-a91b-0cf3946b47b1 017cf446-5622-4053-8088-d277ddbdc043 fbb37c29-9676-4700-9f17-47da600db562 9d57737f-e777-4a8c-8a0c-f9e387fd81f7 5a11a174-e798-4f48-a824-c763f4d72233 8bb2ae27-b701-4122-87ce-7c66354018d5 a8c48613-3c91-4b36-b898-425effb90bc8 087d62d9-2388-45fb-b39a-a503a6cf0b84 1096d4fd-f501-4cb9-b3d2-c67d745db621 7b170ffb-6a72-4909-881a-5704f22cc593 8b46478b-47a3-4e7e-a30b-50ff70b9d39e 44e2a187-8f87-4c3b-8bd8-3186c1c1107f d99ed7af-6ad8-4b47-a4d5-2309b926fde4 ea0ac715-ed13-477d-b466-617f036a3ddf 8b3e22e2-93f3-4a29-bafb-fe989d17b53a 06fdc7d2-6829-4112-86ce-eb29c597eaeb 297acac5-7d15-4e26-b93a-15fc3adc8ef5 e2393dc3-491b-4057-992d-203cc4861c3e 9f81bf0d-6013-4cd9-983f-18ea99e9124d 7bf3e8e8-82bf-4dab-8d7a-16fa0a0d9c85 7f4febc0-eb9a-49b9-9041-f199a46d2c0a 7defa386-3b02-445a-839e-210998c456f4 18731c53-55a0-4edb-9820-bf5e4882f51f 6bae0049-f3e6-42b1-a0ca-57f5684d0afd 3816a62f-2cf2-4984-bbbb-2d37eac45fff 240b25de-e5f1-4ff5-a367-9bfe20c388fd b4bb88ec-256a-49a7-90b8-2019eb430eee 36b83a8c-b3e6-40ed-a280-27f77b1ca349 ebbad011-9c04-4f5c-bda4-8598ea058477 a94788d1-1916-4d84-aba7-3d07c234ab40 43b5f5e4-6295-4bdb-adeb-ed070c404272 ba1d26c6-ad3c-4874-bf84-5dafd7f1c491 9ed32588-afec-4d27-80f0-4bbf359c8598 4385b4f6-7089-4097-a5cc-09491ac62991 34344baa-b180-496b-819b-527bd467e9e6 f8b53319-c7e8-48e7-8964-32d1fc73ef49 f2b4d523-7508-4467-acb3-af399a0ddf20 13677f7f-d263-468a-82e2-3b29f97818f8 398e4193-eb86-49d9-a5a3-27b38c1c03e6 16121674-80be-4094-ab87-005d948db170 74db87a5-d2cf-440f-a48c-a908a6c093f9 159753a8-a17f-45c4-9302-dcc14ed56d14 f0ea516e-257f-49a6-9355-be5cb5b019d0 33ed588d-4b36-4b8d-8d8c-daa284264a89 b7467a33-1f9a-4efe-87ac-b7236798b491 746e2481-be65-485e-b504-a9550e29631f ef87ee15-d193-4eb7-bd03-1a0dc7a05ccf 08d3ed49-9f22-492c-9ca9-c95eb2e8ca5b e58d60ea-1da1-46ef-a23b-1db236e2ca71 d27c2291-18ee-4e5b-96bb-e2414e46e5fb 9f4d53d1-edc5-4bd4-8b2e-8c5769df70be 8ee11073-d70a-4a2f-8f9a-45c0a8e74e74 11b3c627-1409-4014-879b-1cd144cef984 2b911f6b-80dd-4368-9de9-5fda61d5e918 c77a6c1d-39d4-470f-a325-acd940ea6ac5 a43f7010-5fad-45ac-b35b-cc85a9b04131 22062c1a-018e-4fe1-8d43-1edcb2291130 3b6cc5a4-c9dd-48b7-8657-649a95ead291 255f75e5-ef74-413b-a285-fbba838915f2 209c2aef-4c1a-48a1-9c78-e06e51cff8bf c4947751-5ec8-4c5b-a3e4-011ec4e54ed3 851d3b99-fad4-4b8e-99d3-feb2564e73d3 4510c114-fc18-4b08-bd6a-80ce0d137fcf 4171e080-e00e-4d92-b6ef-602430ca2181 8435df17-1731-421c-85f3-c1c4e3bc74d0 d84a38c0-473c-4d84-b9f7-b8508c93a08e 0865af1a-6776-42bc-a463-7bcf56393611 dae1c915-bb6d-4c30-ae50-0e4c87bbf281 12e0ce7f-c49c-4782-996a-e912cff20553 e2c59b2f-dc37-4e3f-8612-b152775be78c c360b073-4e2f-41d2-bc67-4b3cc16b8b72 4230aee0-bc9e-4a42-80a6-28b36d3a0a43 41532554-b035-40b8-9790-b965b8c7ac8b ac3789e2-f5a8-436e-b4b2-85b75a75ab00 124ce433-0d3f-4435-89dd-fa0b6bee296b 49edbda7-7620-4452-8643-deb2c9f6575d 2d1b4281-ea7b-46ad-8324-e2cde6d6b395 a4d91f4d-5a1b-45a1-b78c-e6fe148235e1 1b77acbe-6ee1-4f98-81b4-b454b09e8265 00c3bcaa-7d67-4894-86cf-c1f8ebb3e165 6a5ff7d1-6ca2-4d9b-8bcf-37ab72a9501c 91b8c6aa-e402-4744-91d0-ac487ab3c8ce ef6b1e66-cb7c-41b8-80db-816be5e8f4cc 3028cad3-19fc-4b3d-9058-ffb09d9c0464 6f653ee6-bb70-4913-b997-3428d9287ed1 b1d26bdd-a963-43cb-a34f-a7e841ed7f4b b128a7fa-d1f4-48ee-89df-167ce7273738 b584aba1-ccf9-49cd-959a-42883ea3384d 060cbbfe-f197-4ca5-ae86-6360e812434f 1772cf70-80e2-4449-b6d4-448f7b6d62e3 288de268-41b3-4e51-b28e-76154918d143 4c5a4f81-084d-4769-befb-5ee017675824 77e477e9-d8f9-4de0-b974-7f8d713d1ac1 7d42e9c8-ac67-4db4-b33b-9459b2c974ea c2bb2752-2a65-4076-9425-1a816293bd36 c4b40bc8-a862-4927-8a06-8df335b47d98 8d0decc1-9823-4f3d-8cd4-f55cca2c7dfe 71247cbc-0630-439f-83c4-d04f5abddc7e c62dc504-e5a3-42f4-a0e2-05a0325f766b 0e2521d0-e01e-4796-a4b8-e31b1e8d6341 f97f019b-8eb9-428d-8539-6fe8a859c6ee e13f65cb-ba28-406c-b172-8874162a20a2 0c049c09-a429-44e6-9c9b-cf3d082605c3 9b548171-a7af-45a5-b0f7-e2cd0a5c6266 ef5e00a2-8524-41b4-89fc-fb6b7c6df1cb dbf465ba-a8f6-4d75-a424-8cb9e5b0554a 019fed76-d550-4da2-b3d1-b313461b92da 86b9f7ba-2b60-4990-80d2-220fd43d7a70 7aea9c52-95d4-4f49-a20c-bbd66c04753c fcba3761-8692-45c8-ae4a-3afec1f667ef 0d663175-8cce-45af-8c32-ff44ec37619e 608dc750-fbf9-4bca-82da-b11a831518d3 af08d2d2-3bac-4b6c-8154-f297f01af80b 811a8cd9-4117-4407-8eda-56eeb3297307 d72744f6-f32d-4d39-bc04-d6793939fca8 889874f7-d710-4048-8fb0-4ea9ac8a8d5a 168a617f-621e-4074-8fd8-9717f93153f8 f48809e9-d262-4a3e-bef0-befddfebaf3b 20e2c140-c3d4-4784-b7fb-3383df7fbd62 a7ee9dda-2cfd-456b-aaa3-5c7332240b02 0d72063e-5051-4aa0-a0bc-1fd252d6d065 a584145b-4177-42d9-8672-66757d12dc46 ffcd7ae6-78fb-4cf3-82cc-5bb5e5fc7504 4e40f805-34e7-4f07-9f2a-467687a47a9e 1bf927f0-cfe2-4699-aebd-3a79ed401aa5 37403f64-0e1d-468a-8ec6-04ef17147f84 80ee1390-e4eb-44ff-a9cd-626f9af2ad0b 72fd7087-9712-4eb5-9e06-72b536cc0b27 5351b7e5-0874-4ac2-9285-12f157f26613 564dc1c7-d7c5-484a-8b1f-f1f1617cb11b 9d53a69d-119a-4b6b-a794-56979e510627 19a393cc-94ef-44a3-8aa6-4013762bb834 0e104026-ebbc-4b48-85a9-386b1651caca 2de1bb5b-872a-46c2-8f82-b42c0b2b2b85 989415f6-8823-41b7-86f9-3284408ade81 3c94f789-6155-4492-9ab5-7ba61ee38f32 4fb7dc12-9476-4840-a658-d3fdea6e767a 43142089-ca6f-4c35-95a9-ba7f37bc15d0 c7f6dcda-caf1-4a8d-bfbc-ad8ddecc528c 84c1968b-a832-4ad8-862e-f99eb7f329e1 92d390f5-a848-4e06-abdd-3e143651fb4b 4b96858f-82a9-4220-82f0-1efe2fd6f5fe 09dabca9-051d-4a6f-9567-e9988fdc0b38 050beb1d-1017-40dd-b959-f04a8d25f8fd 7537d27d-f1db-47b2-9ad6-ed5121c0e984 4c273454-c089-41f9-b499-df7490d47d32 4b4f251a-cf54-4b55-a3b5-8ff8f9c41532 a3edbb90-9c7d-4994-8931-31230606a987 016e7a52-ed7a-4a42-a487-3d4ca754a509 b83cd585-393d-47c4-8160-cae8601e59b4 31296487-980e-40b1-866f-3cb37878f092 c120f056-e7ae-41d3-a8a8-6da713f83d8f 181345b8-dfef-4be1-83a7-ba4344d0e437 88af5759-14a3-4aa4-a358-0c04e64373fd cb9dfcb4-8cf7-4ba1-aa4a-5b6041639399 cee37c63-bb5a-4524-b1f4-7a6304549359 dc88a99c-248a-46af-b743-567a2c324897 f5867d3a-6232-4942-be6c-5ad1393c8b82 ac360e9f-8023-43b5-81d7-5ef0671c10bb 6dd9ed53-64fe-4a50-bc36-a586a5531fe9 0d63a2cc-3fe8-4ab4-8bda-4c32ab2d2b5f 6011c449-1fbc-4ac6-bc19-f457eee6a511 9479aff4-6412-4dca-b8a8-b34f39b6d2a8 47f347a8-7b7a-4f00-82a0-e575e176d3c7 1ee268a5-3dcc-493d-81d3-ccdbae94ce30 eecd363b-5d08-49a2-84dd-a1d78a007ce4 b70c5252-20e9-46c2-89df-e374d61c15ab d1375393-ad87-4d0a-9efb-86d99cc4c508 5e0926be-69d7-4b64-80a9-096828789d32 035a35cc-fdb5-43f6-bf4c-9ccf4f8bb909 5c39d155-9c68-482a-8a75-09e56d9d90cc d0bae08f-9f77-4af0-9f50-47d6431a6475 90792f1c-05c5-401f-a814-4eb89b1e2995 abbf47e1-1543-44ad-aecd-9ea86af8ce21 09fc4e69-da06-4120-8b59-700421249b7a dd44a6dd-8f53-43f1-834b-b81d4712672b f3ff098f-3c46-4033-8530-ea26ddea53e7 706cdd6e-35f1-4ab1-90f3-8c5edb42bd3d 21bb59df-4bf8-43ba-8d3b-15cd8c9df14f bb5d7c8d-f455-42bb-b177-8b67eace4e38 aa9656e2-776d-4f35-92a3-b4f07755d53c e5bb5eb4-e8c3-4a50-bd9b-c8c4e3cc7096 9e731a9d-aa45-47ad-8fac-4e7783e76c81 601b3e57-c6c0-4949-bc15-5a1a73131810 772b1a55-e8b0-455b-afd4-557ddc63bd2d 5f5d61eb-2d83-49e5-b71d-b8f6d2212dc1 7f5fe4e0-b8b6-437e-b6a9-905dad570231 c15f20aa-26cb-4c65-a741-a8c806a8c307 a2141df0-439a-493b-b6eb-5b08cf9d8d9e e8eb7f3a-bd0d-491c-8d93-25608781f5cc 8dbe43d9-15eb-49de-935b-8ff2fda35711 8beb51b1-35cd-49ea-8297-cb09490d4033 6d60c14c-196a-4af6-a281-4bc6c234707c b5e64774-600c-4192-9517-506a40786e56 ba544517-0890-4071-a6a6-8a6b571c28b4 6fea1ef5-227f-4255-84e6-10952706e8e2 6a0c5a04-b16c-4297-a558-c8a2bca0a865 375de763-7647-41a7-adda-b2392de85671 5d6440bd-79b5-40fd-a17e-4a9fb439ff57 1128a46b-95d7-49b5-8cd0-d26e2d0ab392 5c9ea209-cf5d-4644-8693-d4d3b809ba82 32815218-3653-4087-be5f-2eaa31cd3f60 6a8e9398-3792-44a1-aff2-222114cacad8 7524d6cc-9600-4779-baf7-d2a039966b6f a5e87773-71be-4f39-b005-e57022693bf0 869aa370-49b9-4a94-9fc0-4839d0f265e8 ec12413c-1bed-464f-847c-62fc3b5fa84a 54bf5fc8-860b-471b-b019-82869ceb8b64 9ae5ee3d-eea5-418c-abde-37c5dd6aec2a 683e9a55-9b4e-4bcb-95e0-38218e73bcab f0beddc6-5110-459b-b8cc-e2702b67473e 0e59a44f-e6a0-4467-9bd4-cc53f4abf16b 3b82d56c-99e2-4b87-b75e-860bca566053 3a3719df-bfeb-491a-8b12-51671d58f553 d349d335-8f4f-43c7-ade0-140ba291be39 a849c4c0-d0a3-4f42-89a8-a68486978c67 4f00472b-c7ff-42f8-9de0-8d300a9244d9 c00dfcce-177f-4f9c-924c-257b9b73f56b d919e79e-0c9e-4b8c-920f-00448c1d7f86 16c37653-0d96-4ba9-8826-830d633be2f2 b95d30c6-b02e-4459-8413-7a748273e21f 49ca7a8e-e9ae-465f-96e1-b96057e77a60 4ca7bba1-0621-4e54-bf4e-8b6cf6119b95 866e9319-6e7b-42ea-98fb-e4b6433ab702 7421c22a-f58f-4a83-a61d-bd0e173d1a59 60b5f94d-a5a6-4afa-b788-deb8cfbbf0c0 ef66efd2-8b01-4c28-bb7c-e704d3932849 f51da906-d08f-44e5-8be1-60298dfe5442 dc7680e5-eeed-434d-befe-6fbdd2e0aadf 938c3689-0f21-4cb4-915d-628294842e28 b570cefa-f01c-4705-9c0e-a1792b373a0e ae17e210-0fda-40f1-811a-3c80553c5521 98e67e38-83ab-42c7-9c90-06b730a31850 44de323f-8ceb-4500-a59e-1ab0c304362f 6a7e6c92-1081-45db-8f17-71eee853aacc e819a496-81f1-4e10-b6be-09950a11a363 330a93ec-2d76-45cd-946d-c8b89f264e0d 679805db-f538-44a4-af27-ca0d0a9a3523 e3d5ca7b-e657-4b76-aca3-5fdd7c42dbfe 389a5ee1-f694-4162-852f-34e4bf722bc0 a2d6d6cd-090f-46bb-ab06-ad4b9ffa2407 15206f77-33a2-4426-9e0b-f44ea2a43178 4228ed9c-304c-4047-922f-1b945b609992 ca731bbf-f1e2-4334-aca2-5c1d9bdb6d19 c04a940d-966b-4e2f-8af7-1f88bb32b7dd 1e08edbd-60a8-40c1-ab8f-92f1d2f3fd68 2ea5a98c-68da-4f2b-8638-956d2c77ec54 8393ec12-3f34-4df2-967d-5a6c6b069d53 b273db66-5979-42e8-ad07-b054c3580a16 4644fc83-7087-4499-b908-7fbe1a479e9f 9b848aee-220d-425c-ba70-77d4d51f3c9d bf47bf68-1442-47ab-9a56-e5ef732d93b7 8aae8742-1b16-4594-8d34-de9ce3cbc7f9 7ffd2739-ac2d-4c9d-a054-43476b0ed721 f423eece-d068-416d-88f9-b29df34023fb 81bae55b-bf5d-46a2-9298-e0a4b8d224c4 1258bdf2-4c4f-4728-9e7f-5986d6da87e2 0e8698cd-17fe-449d-93a0-2078211eba5f 5624c320-770e-4948-9343-d7d14cc050cf 911ea784-7320-4efb-8f6b-c907c2aa025d 04e7c162-5f51-4162-b3b6-245acca02b14 48a65b7b-85c4-426c-8f33-fd6388993cce 46a3daeb-200b-46dd-896e-c6d259565a14 0aadec1e-f58c-49a0-99d2-c58b66f9b5da 42c594ca-dc0b-4edd-a215-5bd52dcc4a5d c2dfe817-f3e0-4ca2-8b04-095e18fdfb20 09623f5d-e873-441a-a937-dbf95aca69e2 8a6fc55e-69a1-4a97-af34-f94d1e6368c3 4b3eca51-5775-4a20-9e05-1b28742119ef e7fc2ae8-0354-481c-b571-939740d27969 c0686f01-519b-46db-a5ec-c19596a4e1ed 9b9a383b-d070-458c-ab1f-cbb6e9538f0d 5e1dde6e-9d61-4e0c-97f3-c9d2a1bd1459 30acc0eb-6fef-4286-9dce-7c49a463091c 98da19a0-48cc-426c-be0e-cfbce057f226 005b75a7-c593-4ea6-b88d-f0cbe6b268b2 795f98f4-9b45-4a44-b575-b6b8928b99b2 c910a811-5a9f-4349-9a94-efa5037803c3 83c99859-2dd7-4d40-8f15-a5aa14642aa2 6aacdb5a-6ec9-4b26-a79c-b6e864c731a3 c4a9f8f5-8301-4bee-a6dc-5dd8b271f4ad e012179f-7b81-491e-9a19-1dc554c378eb 079e30c0-a6d3-4717-ad25-8967dfe24745 79db9995-d5ba-44eb-8cd2-e8ce70d263f3 21b0c7ba-573f-47bf-82c4-a5dc416d9b7c 6cf8cb99-395b-44a4-a025-cd90e6052692 918bab2d-8b58-4253-98b2-227ac6831616 5b20796d-6b48-466e-bd61-e03536c56509 3f8d2afa-e065-4785-a45a-c5bfa86d2eed 619828ee-cc45-406d-9ba0-0e5e8f78bb37 67d14631-90f4-4479-84b4-ce8e688aa1e3 69643b8f-6925-41d9-809f-182b293ca45a 3dfde843-4290-4ff5-bcb8-3969abd9ccbf f0771f6a-146f-4646-a545-dbb5305837ca 8db23d87-17c1-4acf-aced-56e5f58d06fc 84c6c5df-eae7-4aa7-9e07-1e835ba681ee 72cd742d-0943-4d9d-8a77-497038241fe9 43602b2a-4bd7-4da8-98d3-f8ee13af22e1 ca8e908b-e056-4cab-aac1-3f87b1c7839a 57421962-7559-4250-b4db-c2c7e38dda49 a3fd95a3-3d6d-4b13-b8df-f69349e64d2d 10abcd11-2f85-4258-9003-3d42172a1b14 14b68c8d-a682-48e0-8d77-e5478922b453 e3fb7bbf-2215-4907-af31-a9702848c713 52b871a3-4077-476b-81fd-bbf508a74407 475ef9fd-5df5-41b0-8453-c6481b0b80fe 431d061b-5467-476a-ac46-4c83b5307c09 140afee6-eb47-4c6f-8369-94116ba9180f c12384c1-0059-44d4-9902-dfc9435e27c9 2eb2ac79-8c3e-4b5c-999e-2b53db3bbdd6 e9dcc89e-9a1c-44e8-940a-3448c6387488 a02f3c38-eb9a-4a41-ab24-6d545158bc8e c3b09e37-5055-4082-beb0-46c3535ecd30 7fe26bd0-a3b2-4674-a7cd-8b56dc288cb3 ad04f238-3078-4573-a59b-50fe5fff3226 059c2fec-b956-4fd1-9f0b-44445acdfa75 e5663119-7b66-48f9-a4bc-75e480949980 5417a445-fffa-4ff6-8780-4ceeb763cc20 cadf8a28-0735-45aa-b3da-c82a524df3c5 4634623c-0dd8-4ec4-be78-a8019534e118 d24aa317-494b-4fd4-afa1-3a58bdbf2b7c ff62ca5b-fa21-4e95-897d-54b334c118d6 aa7bcac9-0180-4b16-b8cd-6bcef6ba5b38 c0f85965-599e-4147-813d-351aad8249fd 03330475-9824-48ec-b188-9d93c31a4753 8d69fb60-088c-4cee-a472-cf38bccd47d3 684bc415-81b8-48f1-93d9-776271926919 378bc2e8-1a15-4715-a008-df2133d54da8 406c8f20-9ef7-4a34-b2f8-f0786531ffea a14610d8-acaa-4fc8-9fa1-4d5554e7b752 38e5980c-5c46-42a0-b7f6-edafed011083 eb4af1f8-62ba-45b8-91be-09349e3380f4 720e2cca-ae07-4c0d-8d8c-d84be46c5a71 abbf1f33-8fbe-4e96-8d89-a278c047a3a5 af2fefea-b091-4653-a404-8569b4715156 b007b0d0-a7fc-4569-86cc-33af2b94f01f 1bd0ee33-838f-4142-9dba-ee073a45372a 944dc761-7c16-4e68-a713-97a19f1e177e 3ff04146-7cd7-4f9e-a253-d03a9c4b0242 69e9d5cc-728f-4ecd-93a3-ce0178e95917 46eb2594-0993-465a-882f-4d373db4dbf3 eee7fb19-5ebe-46cb-9f08-3f86b6b0c8b8 6ca5d3d6-2625-49bd-978d-955cb1c9832c fbdaeafd-cb84-4994-a9dd-1bf0097929ba 0cc4a1c0-169f-4262-9900-ddebfd0c2282 59ad584a-389b-489b-acbb-c3c06caef9e0 7098df75-f5dc-47c9-b208-777bceb89fa3 a8191304-7594-4fba-9d5f-06d546bd129b bc6b13ca-60d1-4dea-97f0-00341a7232b4 b554b347-a823-43c6-9150-c699d8af8624 f8680432-e969-4817-be4e-b470769e243a 7b7c29b3-24a4-4194-bd7a-cd5edc6ec4ad da3cc4cb-758b-4afb-af0f-4ed1b2a9bdd4 e20a4809-bd75-480f-804c-5ce80a2ea2ae bc5d5257-3bc9-4679-9f85-e12ccd53ea47 c763a360-ec0c-44ee-a4de-08b31cfa39e3 28314e10-d11b-4b9c-be8b-e9331a6ddb4f 98dbcc84-5115-4df8-9773-4d74ecff2b65 50ee75bf-4b5d-4cf4-86f6-73073158ae85 f400b515-98db-43bd-ab02-efb76033e176 ddf7e54e-fc52-4105-a00a-ad7247d0f0ab 91ecc2bd-5d72-4f53-bc5e-c49ac18cd10f 981a3d6f-7fb8-420d-af84-6aa49be2009c 5a323ccc-5559-4998-b360-3de0de29de3a 99841ecb-8889-47a8-bcb8-d4d3c97b2d63 90ac885d-ba87-4c4c-875b-30de2509302d 3e685202-f897-47e5-9a3e-1583c2bf31ec 21e253d9-78ad-4cb0-9c75-ab50546fd5d3 c4c4bf0b-f5d8-4080-9c22-b149bc3ae5c4 a04c4230-a266-434f-a583-94878d1a98c4 67f33912-bc94-425f-9bca-9526c38171c4 fa508f92-04d6-458d-95e8-245a8c9d5672 ab3ccc65-15e6-4fc0-a506-2231bcaba152 54fef7ab-1adb-4a11-81ce-64a89c2f7bc0 57a799dc-de8f-48dc-a8d9-0158adeef7b7 59c4b3a8-3f02-425c-a5ab-5be45fa79dd6 d5a40b24-78db-43e6-a7e3-4629a3b49231 c79b6bd4-79c7-43b6-a53c-122e5635878a f4a57b4b-19e6-4480-b527-1cc45af7a12c 0b6b3c3f-ef23-4874-a9d3-f75bc9825860 c5e05af3-7b0c-4c0e-aa54-2ceee396df55 681b2a36-a0cd-4d5a-9bb4-4b2e0cf7f45d 0c96743e-c6f8-46e6-b293-d4215cff19dd fa1ab6df-4ece-4535-a9bd-5e607a7c8726 f93de131-eb3e-4da3-b5f0-50c16ffdc0ed a7c72cc9-bd2d-40ba-82b8-b8431c8e6baf ad2c7238-9354-4f93-9a21-428fb159246d 22c7ccbd-62c7-4bb4-af5a-1d3075e18d73 14068adb-e11d-4539-88af-e4c3ae71cb47 f3ab84bf-be73-420e-81f5-20bcc790b0e9 5634a760-89f8-4a27-ba21-3e6b7dad5884 c84bd6a2-7645-4ffd-aa8f-499ea069d766 7954f4a2-d9e5-4035-840f-d75b347cb85d 528c59be-f80c-4d7f-b370-4a79d76afdda e395805f-2825-4744-b234-fc1ecd931580 4819da28-e3fe-4fbe-979a-eb48bd8b8efe 11271964-eaa6-473c-b89e-43e13f9b9d8a 9a8fb440-8c68-4378-8fef-6143f66d8a49 2611bd74-843f-454e-b09a-042ff03de5ef 8e4db436-7da6-48c5-aa80-f79c7f7a5187 93e963f6-d258-4482-8073-26224062cbab d88abd26-f89f-4a57-acc5-d25767809a45 aa57d5af-6665-4d25-81e1-3f7206f108ec 74de4330-134c-4971-abc1-1521c5b96562 bb8d59e0-ffec-40ec-b523-03523003db88 c4fa9fd3-e5ab-4d67-8f01-072fdce2238e 380a5942-e0b3-4cb7-9e11-b7b6735f1cd6 32a44651-4844-4264-847e-a40fbe413569 4eb8d671-e0e4-4a60-921e-249c095d2110 2deddcc1-f847-4bb9-a9a9-8491e7780cc0 500052b7-6e98-4d90-a320-d4f7bed2d4ae e18e0e3f-96e6-41a4-b05b-60e92234521f 9a0dafd3-ca88-4c84-919a-7f97743a25ab 2ea2b64c-aa83-4c92-8412-8cd636b54843 a5cf4a91-1e47-47be-a920-061c3e8b0dff da7af0f1-36b8-498f-a911-a2346ad0cd39 c00ac10f-771d-4f0f-bbe7-b584045f8ada 79c745af-2fe9-42e1-9d94-5ce635d90a21 5e886f59-6eb6-4db6-b087-202a211572c4 585d1923-7b2b-47f3-9033-f1bf52f424e1 6db2b4a6-5a1d-498c-9cd2-7e083ff88546 efc1b2b5-ae5b-4777-aff3-967604a32ea2 ec321104-1146-4d97-b0ff-c3cb48600b92 989c2219-6b87-424c-b2af-d7c773ca1a36 279d2498-5023-499f-b9a5-ffa6f39e903c 327c8a20-96b6-4de9-b993-2d1a5e4bcf2c 7b61fcdf-153e-4e3f-a1f3-e4e0d9a26bf1 5d323726-73cc-4d93-9312-44c5f7f81a76 952daad8-0fe8-445b-b41a-021398a2a8c1 b8aa9937-fc71-4ef8-9bf7-9875c5a04c69 cf08dd48-070c-4a81-bb5a-5aee79209ba8 512008ac-2760-43b2-8d70-0cb046314c4c cd89b827-2ee2-4841-a88a-5c348a94ca17 bf3c9e88-3cbf-4631-8897-29e3a14d208d e02127d5-26d6-49c8-86e8-973d7121153a f75d2c52-b4b9-431a-9863-e3946266ba93 8e3332ab-45cb-4226-b5c7-4b0efb501b7a 01f17292-5d27-4916-a191-019ce4c663ff 339b6905-ed11-45f6-9c72-b479a6bb86e7 d4c67ad5-ad4a-462a-bbef-35e3f2c16ccb 16bb249d-3048-47fd-be77-5e096264d91c 0180c11c-f30b-4b1c-aca1-9338ef9af12d aa9be963-b700-47e5-87ed-ad75a98a45d8 c9442ff2-8ef4-492c-81bc-49a04d8231fc d3546533-e000-42a3-9d9c-011505b10401 4f0e12c9-cbd4-4cc4-ba38-8e16d2b9b932 ced71bdc-c9d1-4c6b-a7a3-a68313e99391 fe81c00d-e467-4530-9305-d6bccb7a547a 29f62c70-77ef-4a07-a41c-6e3bdf5a964a da1053c9-ac1c-4737-93c1-f1c1836dd200 c0f614a8-9c24-4684-9ebc-b80e6bf46938 cf90f232-00e4-4bac-8e2e-75d1e6bbeb79 6f1781d6-e247-40f2-997a-d85b5fc14854 d778cd6c-c543-4942-965f-34bd7e6b7c81 0a51a67b-2310-4f55-94f7-117265096917 aa6d14ef-0eeb-46e2-b92d-f9cdff2b1374 8a988470-541c-41cc-88c7-6e7a2db302e0 fa78bc2c-e5fc-4619-b8e2-d5a11e259cb5 6e0f811f-a287-4777-b4c3-fc0bae2c5727 0eee3271-1235-49d0-b4f7-cfc8691ef7dd 44e4d74b-80be-4bd2-8cb9-38a0b87ec6ab 23c816a2-414f-440a-af4f-4a9ba73b8be7 be7f973c-9d5f-40a0-9a37-0d2fb511a211 cd059b64-49f4-4ff4-b656-83966e9aeb01 13d577f5-7648-4d2b-865b-868f6f3e2da8 82134e1e-a719-49ca-abd4-feb5fa8555ab 6851ef8b-8325-4106-aa34-a68ad1596396 d76f9c5d-c547-4732-b997-662f93abbc9a 8cdfc258-c8aa-412d-8061-8d0eada8b554 39c72591-7874-4fd6-99da-de59ed5ac4f9 91c6aa67-5e19-4a6b-a676-7172b2b482a4 d44d5bde-cf9f-4e35-8beb-86db55819fe2 bf711282-5735-4a8a-bd70-737b7223962d ce366e16-1a42-4b22-a54a-0c5a57ca9038 6ac174b0-505f-4d4d-913f-b74fd204c338 4f67a3a6-7e1c-4882-b802-a11d60d5dc9a 05f0030f-eac0-4124-b492-657fcf1a0fac 84eb8155-b8bf-4257-a778-86aaf130fd4a 99272347-742a-4dab-9477-1fa147309016 60c61975-ab47-4925-976d-5405b01f8608 51113a24-c4df-4f18-9b67-5b84c9c32709 a039c046-52bb-473f-a2a1-c807436df781 25345c22-4fc0-4d2f-888b-13c3406bbc06 30253a49-3068-4fe9-b9e0-ce66f5873943 86665c4a-eb2a-41a4-bfaa-a0b2f1f35e16 13a03e00-4840-4c2b-87e2-034df99e5b01 1e9f5e63-b8aa-4ddd-8e16-2393c81ff279 2903b046-ebd2-4bd9-bd80-6fa122a25067 c768b2ec-e245-411d-a5b1-6d287f77c0d9 4d03ca48-267c-43db-9be5-f64ea8151c2b 851dbf63-e7b3-46c4-828d-fb0ebb794b5c d012ce32-5b27-4d9d-b880-0a55ceab8b55 1ba79a2b-1aae-4b95-ae70-75cb42d6f0fd 55318aa3-1e6e-4abe-ae90-6de291e857b5 8e1b6918-e096-4d34-9d61-7cbd3c43f727 af8558a2-985c-4c8a-8663-12b8f4a30e15 8050a710-7e40-4d39-b8e0-0f899e92b6fe aa07993f-4dde-47d5-9645-a48d1b40d490 7fe0ffc4-8993-43fc-8c93-35060eff2e2a 0d3991fb-4f47-453f-86ef-cb69d0336529 b8fbc74d-4aff-4792-91ed-d40826682f23 5be102ac-996c-4827-b065-a2c75927be1a f1ce17a7-4482-48f1-9443-f7290ba73d0f d7861100-30ff-4cd2-8556-25e7aa72e0fc 578a9c82-6cae-4095-b2a8-e2f24fe0091c 4020f015-045e-4292-9eff-7c357c00dbbb e6350f61-5211-4773-b381-15f9225eb352 c1326ed0-d452-4cd8-ad57-f2db5fb1e600 461c4492-6443-47f6-b672-299e5f186380 a097990e-ec97-44fc-b648-7cb0ef6e04fc 9a5e67f4-d52f-40b5-b917-d6071fbca38e e548b20f-058d-4854-9c69-caea71db8bde 12644abc-590e-437c-8dbc-72bfb7550686 7d0e5849-a148-4fea-9c03-4838075cbac3 c3d110a5-5d99-4f80-86b7-dfc8fbbeebf5 94b3f8af-f8a7-4cc5-aace-6b77fb46cb45 6c39eb6f-27a7-4e1c-82fd-e130f799ae17 ef41d14e-1fa7-4a67-a054-4a45c72ccc2a ece79772-5d26-4ba8-912f-83ffac4b2e52 ae02c29a-d9f4-40d5-8f09-97911a180822 434e7df7-7624-4ca8-9692-92a05c5c2626 3b8b3918-a82e-4c9d-8db3-8819b52f1c9e 205b0994-ad4d-4dac-9d90-7e296f6fb8c2 c5721ad1-7c04-4535-b6bd-67e00497c101 758076a7-8d2b-4ab1-b7ed-a0f854f17a68 7930a714-b8fc-4f5f-b716-c55f7bb73121 756e102d-e36e-4a9e-9615-702c3e7c2129 a9059482-f4f1-4fe6-ae12-d33ac18e42bf 9a20c490-933b-4273-9037-308a88e3ae55 2e63765a-70df-452c-9d70-8ae23a93caf9 3d887a67-b85d-4814-a1e7-a7a51a99a8e1 3c273ead-da04-4a68-a226-a78143baedb9 32fad465-4702-441f-94ea-0650ddbeb143 54028a2d-6fa6-4177-9103-e01f9603e689 3a1bd9bb-8741-4c73-bd4b-0a65a171fd2e 2acca9d6-db2c-4ebc-bb55-c4c2304c4d3b 7095bffd-dd0f-454a-953f-81023d330874 86014063-ba54-407d-9181-ca0df9bf9fb3 744b5fc2-54e0-468c-92d3-ff4dd4f05973 25043331-8cfc-41fb-8cd3-24c9acbf14b3 8b594524-9736-4940-97be-676b0e5da42f 90d60688-bcd7-4199-ac1e-d9b7d6e68074 8284a044-2631-45cb-a0c5-ce5b59691a94 d084630d-f90e-4b33-be04-5910e0bc4569 d1530626-0abb-492c-86b1-b578fa7da0d4 803dfc4e-d29b-4413-99bf-5d8cd4cd40b2 4a0858f9-15c1-44c8-b5d5-04c27562b186 ee32879b-eb15-4700-953f-1c54b71ed60c 3ccbf2c4-d775-4da6-8545-efa1f3620cb9 98ea1610-c79b-447c-9f8a-66738a648b00 2efa0b27-f407-403e-95b1-181c95c6c04a 0f8fec0d-e457-46f5-a892-18f5d33da4af d4597fae-21f9-403e-92b6-f3dfd7a7c516 1ee804ef-ff12-4ac7-a36a-1c13f15fd446 ccd8f1f6-30af-470a-9a54-1ed10e18531c e4ceadb1-2a7e-4255-98dd-6e867eb4dac9 fb29d4d0-5144-4390-affe-98420c800d64 ba0c7b83-2bd4-4f59-bd6e-98fc0701fb2a 885314c3-ea9d-44d4-b2a9-a953b4af7584 7aacb5df-9117-4fba-885e-3b65d3870692 f174561a-9b30-4d4c-9e14-23d1783252bb d10bc542-e517-4446-898e-c58e6baca85c f4a0958a-7763-408d-b4e3-4941b6dc03b6 4e4f3c59-c67a-4b9b-9f82-042398fd12b7 7cdc3f38-445b-47d9-9d6c-3ef0ace838d6 0e43c939-ad3e-4b27-9781-29dfc4ed4f3d 8c76b231-1b75-4210-86dc-98effeac1131 6c99c735-5c80-4d5b-a0c3-84e8a4fb51ff a7506c94-a150-4450-88c0-b35549d6bd4e 4535d914-514e-4fef-8974-9319c1bb5aa8 5a784c66-4182-44e8-affb-9c950db36f89 350530da-6f38-45e7-ac78-310194750b82 de6354b2-9368-4d45-b1e7-c9a37d0f1af7 5d8d2f22-3c5a-4f82-b58e-4ca9a611f0e0 fd0ddd9e-ebc8-4672-a51e-abbd0177844e fda4cd48-2bcc-4ff1-88d7-3c65b963994f c3d9313d-dcf4-430c-b8fb-338200756312 cc059968-d7af-4332-a92a-bcaeba58071e 272d77a0-e38a-4036-bc84-76f90c614433 a8d80c8b-9ea4-4c3a-8057-dd272d31d25c 7c214c24-675a-4e5e-9e1d-8d698fc9c408 ab3c18f2-007e-48d4-9606-67cacf5864c9 5f659a04-a8a7-4551-9101-e00744fd410d 021b3345-03ec-45b7-bc86-2c7f7cb50eea 169298ae-a622-40ce-81ec-14ee701b1061 d4d1a6b1-4d63-471f-8b69-4ffa6c59029e 9ab3bc4a-3bbd-4a4b-837e-8360a8c76405 a7550466-d385-4939-bf16-52541a71ce2e 9e55dfd7-c6e4-4fe1-aba4-1ea100fb0c8e 882dd46c-f684-4823-8235-2a89fb8b2df3 aa1e0d4f-9393-4299-bcf7-962faa38045e d7da4ebe-317f-4211-83e8-74478871a859 2f656e48-c599-4978-a7f9-2d711e641878 baef373e-492d-4040-8556-fa6af89c7b5e d7a9db59-9ed7-480a-9396-27474979bc57 4b189d19-06ef-40e8-8177-2510871c94a3 82710d25-3a33-4932-bf02-f8519382dae7 c661fbcf-4f21-418e-b3a1-9b8868f83086 a5ea8944-1c84-4a38-877f-1de826e13be3 9c090075-0e36-4bad-94f5-4f5c856c8541 061716d8-9549-4d51-ab6e-f4d9299f8bb3 56e99402-8044-4966-8360-395c8df1ad96 f498a75d-8b67-4be1-9f17-9e3a5f0d6f03 2f175e84-afe9-4f5c-bd65-72c658b6c080 7ac301f8-8ffb-4265-88f0-2c1fc8c2199e 08381b98-728a-46c3-a1d5-9bde8b1c69dd cee19e6f-fc0f-4af3-99e3-2d1c130f61de 446949f3-3651-450e-a0f9-6365cc41df5a ae3b66ce-f2c7-4bb8-a808-5191425c6756 8fbd20bd-4019-4f75-be9c-237275f278d6 ea61df8f-ae8f-42df-86cf-c97c5005103f 2b6b3c50-4f60-485d-b3e2-5f3c6eaf01f3 b5198cfb-03e8-447d-a96d-35ef7f181092 db387579-6d57-4f1b-b3bd-dcadeedc8a8b 5c8153c8-69dd-4b4b-96af-3dec1ffc995d 58721a05-c657-4da5-bfcf-15dad2f4ea11 553645da-f553-40be-b524-58dece06c0fd 13844c42-aff3-4f39-9dde-538de4aefe2e e95e3178-7de3-409c-b5e3-924c36cd7ef9 514f9eaa-11d5-4170-900e-e1b7a1c4b4b0 f0605af2-7f67-4fa6-981e-e7d74451d9b3 857c34e7-f1cd-4467-8344-4751a8d2d5e9 ada077df-c5a8-411c-bb8d-e7a7f7820a68 917390ca-e48c-4071-9096-8abeaeb1c8ba b35c075d-e621-452e-9f89-6f35161c94ce b4d04086-7c60-4188-bb10-2b00ca7f4320 e8f719a8-e9ab-4b77-b99e-2c1c23b2f2ae 76a9cf3e-6097-4b6a-ae7d-d7062f8779ff bf282e04-ce81-412e-a136-77932e729a5a 95afa28d-3599-40c3-beb2-746422dbb66f 5ef642f5-6d2b-4023-9a28-a60412770ce4 dde094eb-eed4-4bba-8b84-9196d1a9eb3a a4be0bc1-3ff5-47d0-8d61-813129a7d9cd 6ea1c7c9-c17e-4a25-a65f-9412b28cc408 9be78592-a1db-47a1-a3ab-ad8a0ea2c87f df01fb51-d684-4c64-969f-ef12d8ce1b2c 763df7dc-e688-43ff-aaaf-6a5310cf3909 f05d2c2f-5ea9-4ecd-bbf9-de7e14969fdc 893c025d-1cb6-4433-bc47-7c243d461e5e d7e828b9-155f-428c-b246-73b349cbb2e4 2174ce05-4c19-4782-8fb6-9943f8f06b2a 7d4d06e5-1fec-484b-8993-31ea38401114 0479005c-bf42-4b46-a7d6-df2d1836e0af af9a189c-96ee-43cd-a6d5-7d18f2eb8b29 8e97e025-37ac-4084-8782-a923b9cb3565 da17f8a6-909b-4ab6-b737-94ac6cfffbf7 b206af1d-4b96-45a3-9e03-cddb3ae7720d b90086cf-c478-4f34-ba9e-d32efc5d8b45 ed4b1102-8cd9-4563-ac22-be8098b0c0b8 a8544bf8-ac5d-4b7c-a174-c69fa89b1e55 17b9707d-135e-4d05-a890-537aa384e245 e8583f9d-6998-4153-b9de-1fa0bd103d97 a89016e6-5315-4385-a181-4da896c256e2 d73e3e12-d4c0-4c10-b65c-50c882225832 112cebf9-21f3-4911-88d7-77c0032bccc0 246d5e1c-a44d-4832-a533-d7c413c0aa8d 95cd6fc2-9c22-4dcb-8968-fb8160561f03 c972f7d0-472a-4d59-8c77-a34900e4060f 3625d159-f601-4513-91f5-7cfebb185ba6 6f567433-b3c5-4052-b99b-95f54a05b4b4 97583eb3-b712-4fac-9488-48f79f914298 5cec696f-f3d6-40f4-953e-3d91711ae16f b8cdacde-045f-40dc-b14d-8c4f0b44b29f ca6d3eb6-2c04-48d4-9ea3-0cd5a5f19e0b e8d06896-4a9c-40b9-97cb-dd369ffdab52 fd46fe6f-ce94-4b88-90a7-a57eed067f6d 1f059af7-d841-4b72-bbee-0a789e29cdd2 e3b03ccb-6b51-405e-9a36-b5733ba98e63 6a8bb250-cce0-4bb1-b90f-0c5cf2dcea14 e9c24978-2889-4f06-8b2a-de3f4b69c070 42796d4c-b4cb-4eef-ada8-7f2965525e16 6facd9cd-2385-49d6-a2dc-83dcea4f3375 249e4eea-9031-48d5-8cb6-3c89922369e4 6e674389-c51a-4a81-b190-7d3409c19ee6 c8aefe70-1f66-4457-aaae-647da6277b68 d84a12ef-a92e-4719-a50e-8dc8588b18e5 0b170613-417f-4b56-b8c6-55878f936055 7f410a24-5516-4585-b722-faa9eddc0ae7 181cd188-1391-4533-b651-29455ef56323 fafe2cf8-cab6-4f24-8e90-eaf0b8257409 a59fd214-36df-4964-aa0d-0e4cbe2a1e21 4cbe24e5-4720-49be-b301-ca47b95633a3 de97ce42-a8ac-4b4f-9663-6d86aa7bac09 6cd0339d-8127-4b0a-915c-4e90e8d36f86 5257cf4b-72f3-4f5e-ae0e-358f4c971cca e0feb683-d929-4e6e-81ba-3f3e38f032b3 d879bc51-ba5c-4c1f-9aed-d745d0d2343e 943d6481-ed7f-4126-82a4-d336ab3e0e27 c47a0d2b-03f6-4f92-ad16-845213661e9b 6387fa65-8e2f-4558-af56-6042d01703f1 35b3737a-9cc8-4882-81b4-451854611f4c c0e6e3ae-7610-42ba-a513-84107286c672 97294fdc-6372-444e-a4f1-5c8a8c3168c9 ce156ea5-3a5f-4703-bdc9-97a194740173 94a1581d-5d08-447a-a33e-1bad9b1b86ec 9b147ecb-3f23-444b-a6a9-2e9ba176d402 509431c8-8dfd-45b1-94ec-0d956bfaf8d0 99f6daa9-ba00-4d4c-8a36-0671a0afb8b4 ae9fa43f-767d-42aa-b80e-ac64b553abad 6c52e939-1bfa-446a-bf12-1fcc10e9672d f80e4bec-7f46-462b-8abd-4c266f75f0dc c2c8c261-e651-4bce-95c5-e7082a2b7b2d aada767d-bd2b-43d7-b4f8-cfaee40640af 74b19099-c863-4bb0-ac1e-20e652cc39d5 3738fb15-ee25-4488-bcb4-44e535e122cf 7363924b-cb94-4fda-95a7-8803958173ab 49925a18-e086-4722-9dff-6d00fe2782ec 515cf01d-9965-46ef-9f14-1209c8435899 4c087ffd-c972-4f7d-b3e8-a11b91190d2a 0f077cd1-a26e-4961-9994-c46b3505496c e6fe1683-8d54-4697-94b3-b04791f0374c 466a373f-0ce8-4056-b57a-7d619c36154e 97fac0a8-1fe1-4888-a16f-9a129658e427 6a7c9a2c-6175-4cc1-a404-671b3d12513e d7b59d07-c889-4b0e-8055-e7619e56a28c ac26e56f-2b17-4e1d-8d5a-3dfa75624456 8ccc8f7f-33f1-4e0d-aa40-40f7dc70edec 9809dce1-96b3-45aa-9bf9-2dcfefdd4e7c 0b18617d-2734-41e2-ad1b-f6e915cddd3c dab73cea-d66b-405e-8a53-7bca69d2f1c0 108e7cf1-b401-4ecf-bcc4-259da2bdfe0d 159e1993-ae9b-42cf-8228-fbe34ffc9377 bfa48d32-ee33-4d00-bf3f-ac6744f48295 b35d39bc-0a59-479f-98a6-1692ca439079 ef91c7a7-d855-4562-b1d0-b443d814b3d4 ffc87800-cd67-4a55-9b7b-1fe69be07a9e 29cda154-8d49-4f75-be7e-c44a7bf12f6f 19f345cf-fe7f-4a3c-8da5-a027ed9c60db 39a40f2a-659f-4074-a4dd-dea627167bf5 4da1049f-8891-4e56-b247-22ea34b97376 a6585f1d-095a-478b-afce-2c1b7e3eee05 432631a4-1c07-4f71-85e0-2feaed3ddc38 9ff47ebf-b94e-4f88-a1ca-341271cd4d8a 64c1be9c-112d-4d4b-86a6-ad741df0adcc 858ede70-04a4-44ee-a71f-f3a021568612 d588d037-d2ea-4891-8883-478849eaf46d 02d2927c-ccc8-4b04-80a0-20df53318555 33bb1c51-6e0b-4c15-8ad2-c17f5fcdee1b 8e6d6f56-9935-46a3-bfc3-41005dca4bca 8b2b33b1-3a62-4d09-92a2-ab7fb0574a8a 9393f139-d182-471e-bd98-b307cf491722 0bdf3319-2282-43ec-a2ba-cce093d38909 00ec73f5-f394-440d-b830-d86d24a29a75 3c0f2b6e-105f-4939-9a3f-8d911f0a03a6 98d48c69-5316-479d-91d5-27cd1fec2174 59070986-ac48-4e43-af6e-7f9cf2e0c29c 1cd4ea8c-e995-4782-8299-85c825e11b15 cc2397fb-e2e2-45de-a281-5a311ab1f4f3 3866e90b-c3aa-409d-be73-6e011fd9fad4 cfb36a09-13e8-4ed1-b1de-13c6f15886d8 ccbe4b1a-0bde-41fa-960e-5f4d6d19a1c2 c11c10db-73c4-4c76-91cc-061b9bd26385 a3fd93a9-07fc-4911-acc8-b03654de3a57 99364d79-f4bd-4afb-a8e0-4cebe43cd0f3 da45582c-516f-4571-a89d-2a9a296f027b b10ba74b-3ca9-45d3-a409-64003040654d b02ac31c-af1b-4d2b-bd58-274ee49b5ca8 d595587d-a01e-4e1b-ae74-700dcd7b7d89 fd9f5aed-c387-442c-a116-9288df7f9173 dce6e2be-a67d-4ef0-a85e-b86dfd4ebf04 b5d1578a-e359-44ed-aa1e-4da01826b039 e23a0497-85e3-405f-a78d-fac3de789662 11584641-1baa-409d-9413-da233b4e237b df448a57-e3b9-41da-bea4-1b001fc6f0f3 03ba8d20-a281-43ea-b87c-7ca6fe7e2bf6 752988a9-35cc-44a1-b6ec-e41f68c67a65 ef9b7330-bcb2-470e-9fdd-b2da8bdde296 add19a1d-8eb5-484f-b455-d101027a08f1 4a1f7568-97da-45b8-a14d-ad5d83466b80 5aee08b9-f41f-49ec-9dac-d3723a2d3c39 7d6d6f6e-c377-4f51-a635-bda960aff814 607c718b-16b3-43c1-80aa-f55622244c94 6a0cd2fb-9bbc-44e4-a741-593391b01999 e1d4c431-98b4-4710-8adc-712bd3ea60d4 b3ab40a3-b71c-49ec-96e4-82dc47660f6e c3146af2-18ca-4db8-82b3-8e72bbcebe50 9445e28c-e397-4cf4-8b55-8c07229acabe 1a37ba7e-5947-4fbf-b3dd-e37312f4a7c0 7af525c6-3107-41b8-9cb2-21bb02043078 24417145-7fea-4090-b12e-b213a438e4c1 20291fde-91a5-4702-893d-6b49eb52a55f 4b1ccba9-9473-4ebb-b925-f90f8d4c9645 c87c1aba-16e7-4b69-a46e-961c9eb9408a 43a35ad7-b2a2-408c-a615-017407367074 1736522d-6709-4ccc-a4c6-70898e73f22a a4c5806f-0e80-4e34-8679-ad7b8ecc0910 74d36312-bee2-454d-977b-d88e2351b7a6 d150a1bb-d14b-446c-af82-bb03d4d13d7f 2d7bda31-e7ba-48cc-b25e-bed7522eea00 380ad3ef-8905-423a-815e-4bf2e1045d35 ba9ef07d-13ff-4b0b-a7b2-4ea3510bbcb4 2d29ced1-df7c-4e84-a220-571f3ce8f3c5 2fff3165-8a77-4c70-9675-f49e261b37a7 f287b310-5ac9-4bc0-94cb-b4c0197904eb 6bfcfa53-b659-4a64-b44a-3f0d62429208 8ff5b20c-b57c-43c6-982b-cc7b255a1376 a2d06eda-d6e1-4cb3-8a8e-98d3d85f146b faff872f-c00a-4ca8-bde5-42741f39c0af 89a5d54e-c50a-4a6c-a351-addb078e4338 d1571b0f-2e0b-41e4-b53e-450e105fa5b3 8cc6f4e1-1a96-4065-b448-7ef7cc747126 6d66237c-68a8-406a-889c-bf7b3516648a b06d0022-0dc0-4c26-b775-03012199029b 1151418d-c7d2-4c8c-98c3-688c3707ad32 904ac0e3-3171-4deb-8665-1f1237648741 e1811719-c392-4d5b-9904-cbd2ae1edb77 5df53496-0721-43aa-8cd1-d166f83a0d27 cae0dab4-c7d6-4ad4-b9fb-093714270e45 6a117216-f5d0-455e-bd73-956b0e71dd06 1e92456d-3f3e-4885-8943-360b5dc995cb 33c50f75-142a-4afc-8595-0f7573202d76 eb9277fd-876b-445f-a950-6e134b6ac3c5 63e9916e-a47d-4c37-9dbf-05c3856f6507 c6e6bdbd-977f-4e30-b5f6-f3a2bac19db2 3bfbcc11-4bad-4381-8452-747d7bd00f9f e53bc4a8-fb82-4f74-bcbc-1c78b32bb75f 7da2efa3-1050-4ce2-8c52-9f3a41f91c34 db9169fa-67bb-4238-9309-a084b7ad8ee3 6460cc73-fb9e-4a39-a7e9-2792c30f0f41 141a1faa-ce90-46bb-90be-58e6fc79a3c2 78135e9a-bb1e-407f-b329-6cb18b738439 cd46a7ad-847b-47cc-998f-01a095d60f3c 755d0e2f-698d-4d38-8961-7283cde6148d 7d9b24e0-df81-4dbb-9f46-17a4d8d630a4 f83064bb-fdb7-4373-8e66-ba05a1322dfd 6b476db9-27ce-41d4-b76a-7d64e371562c 517cba8f-401c-4da4-b850-a6a4c8e24818 e04ce187-e9bf-4200-8e9c-054ad266b914 1162c626-c473-478d-a2f2-cf2f72377a97 810109bf-fca0-4de9-af54-e18511b06ff8 95b0776d-7757-4bda-896c-52cf0158f717 426cfb0e-b648-47df-8625-7b58214f27a6 e2f853c7-7a2b-4364-a787-aa3920ba2b8a ffab4a82-1caf-4d4b-8d57-182db2d55e93 abe3bf4b-e036-4086-ada2-0023bd12282d 8c545b5a-fc81-4b19-90e6-4b6b8914d0f0 ad00bb90-418c-46af-9440-5046f1c8709c a88c00e2-0e6e-4e28-ba73-2f8ac55e0342 0f1221fe-5424-419d-898b-8df2e919a050 e5b04fc4-88b6-4c34-ac02-a41da4bee32d 0a42479b-790d-4ce4-80e9-de34430dbfbb 423d5416-7fdc-416d-9c06-0d681b792bef e3989756-2b3c-49bf-b084-aa38950bd116 f1c89a24-5723-47b6-aa5f-0fc586de3865 ceb56846-b039-4c0f-bd49-24cb0a74d598 812be203-e6d4-4db4-88cc-02a028a3eec1 095bcef4-5c83-40b9-a1ed-a7a4014a5207 880b8586-394e-4f6a-9ff1-8efb212e3b13 ec502e0a-8231-4ce0-a16b-257384feb3ab 88d23804-e420-42c4-8269-44c641bc735b 6f8c6623-b289-4cf5-a271-1a823ee971aa 165c447e-cd74-48d1-b9b7-50b6b7bbbbf9 b19df445-2eff-48f5-b5c6-7ef2322b4c1a 469e255c-763e-4fa3-bc9c-221efd66cc3c 8c45e03e-2f2a-456f-bc72-d486a3e6821f 59022062-f358-471e-8501-fe9398bbc297 d48d8cae-bc35-4ec2-94ce-53d4a872390d fbaccba1-ae91-4f25-884a-fc089a344bf6 b619062d-cc98-4edf-9825-6c939a87e43d 288ff437-2738-47e3-b442-c32f553cc231 d3acafbc-4b07-4a3b-8b83-bd6953404557 8bf82a09-ef9a-4d52-95bf-9ddfcc6dd94f cd8c3261-af2c-4029-ada2-678a4a57dad6 47ad5e48-72bf-4e78-8d07-5f764bb0df3a 2e9dad97-47ac-4775-90dc-e7e58f28d13f c879fe4c-bee5-4785-b657-902461cca3b5 8f4faa9c-2c52-417e-951a-1f7360867c99 33feb903-7aac-4c11-8721-aa9d89bad676 a07065ce-05da-44f3-8b03-e2cf6220b4df 1c482f52-6f91-4c1c-909e-b22e21882a42 c744fbea-2ac6-4476-8855-ec365293fe1c 60ae6d78-f5a7-42e9-b205-f96102ab24b6 f1237e4b-229b-4367-aae6-170068d141e8 09a460e5-6e66-4c3c-a333-27c9534da446 3861fff2-7900-49f1-870c-f69c3f2c3192 08f54919-2818-48c7-8bc8-51b0905aee2a 4d3482b6-97f6-4c03-b2f2-3b4cf952b1f9 a8d618fe-35a8-4c24-9c3f-9f9b9d1af01a b16c73fa-7cf6-4f77-9102-7490ce5ba775 83f4906b-bb08-460a-bcd6-8676aa04520a 9a1e8e58-2c2c-4fe8-b467-9e81bc4c1f2a 1a673f67-8d8e-49fd-9d3d-104845299009 11caa910-5594-4443-8b9f-8de4769339bc b73f0152-ec30-4649-8b9d-e93d5c97e486 f3c493e6-62ea-45db-a904-cf5b60c4ab9e 97ef36ae-863f-43be-9483-aa3f794d7be0 f2c7d262-3a7d-409a-b298-29a99e3dfadd 1b0754b9-92bc-4861-b3d8-63a9d0b6aca6 80da2a4c-c3ef-4aca-82b6-044d082f57b7 b73946a9-5779-476c-aa81-ee68aa67423f ab93ffbe-0fcb-4a9b-beef-481d43b61010 efc84918-cdc4-4a40-866c-27fd1bda4780 6de2f8ff-d907-4a0b-bc43-614cac6e1272 7dccc68d-72b4-49ee-9e52-62e1afe76870 418bdfd3-c452-4bdd-9139-3f96ebe7da94 2f49a2ba-24d6-4d5b-b7b3-4114cb761e6b 07045e5e-7262-4180-9436-40d41d10a718 dccc376d-065d-424e-a631-259de9a3a580 e475b41d-2c64-401a-b2fd-455d379c17ed 7dd8ef84-47f9-4fca-819c-9f35cec122f6 68ec38ce-0693-4820-932d-9172dac7425e 6ddd4ed3-9a67-445e-a033-fddcb8dc7942 57590c0d-1fc2-47a7-879f-6e5c12864ebc 0dffbd5e-c456-44d4-8773-1dedd18f74eb bb82a8a0-8df1-4065-830e-30778de304f9 32ae9fbf-05cc-4f3a-bbee-d4c48baf3d6a 3a100461-1d7a-4083-9893-e8943f5e6bac b50a99c9-18e5-4da8-be19-dd5a0d9ca590 4c37adac-667b-46db-82e3-7bad85597ecf 13aab72a-414c-47c9-833a-34560040b1b0 10df57ad-1024-4593-8764-209e97480be0 c2c716a2-29cb-4296-82cb-0693242818b2 4841c866-9744-4f5b-bafb-a0fcb1fce1e3 c71e8766-f1a5-4514-9744-d96abed6fbe0 ddce100c-4515-4c6c-bff9-735ef382ee7a 9fe132c8-a1b0-4f7c-b6db-01e9e3b56166 4c5ba377-d06c-44cc-b1f5-0b3ea71a76d5 5b8338c4-4a70-4826-a9ad-4445cc28b88c 35a7b300-35e4-4bad-8495-c3cb4ee95710 039ae3c8-0843-47ee-bd5d-a0fa6b939730 5851778a-0144-4391-b4c7-f9d932a54fbe 0bc5aa9f-b151-4166-850e-4d849645812f 1a450698-bf56-47ee-9540-592a4dc8a1e6 8a1f579d-4925-45c1-9072-0a63306ab5f7 95c2e3dc-148e-422f-9494-9019012dd7c2 0e7ac1d6-754b-4cfc-8dff-7b5c8b1564ac a640ce06-5112-4bf4-b008-5c3baf4891fa 3a5dc9d1-e4e7-4231-8ab2-c99d467bb898 1c82bc7d-f73d-4724-b1a6-ea766400bfb2 7cf14136-afb9-4cd3-a0ab-0de484d9dcb1 571c4dc8-a005-46d3-9f5c-1fff7c084e20 ef8d9d9a-3ff1-41a0-88ee-1b5ae57e99b5 8b06600b-dfc3-4b84-a06b-c977fa659e7d ef14131f-b120-4093-a231-a618e20f0f69 c4be57a8-8a71-471c-a04b-6599d7d7f84c 822eeb33-396f-486a-942b-d782f9652d62 03abf0fc-b415-4736-94b4-719e87e511b4 8646535d-a13b-407d-8962-f649c144c86d 5bfa115f-0e83-4659-9641-3224b5687aae 93c63bc3-6466-4c3a-be41-c68c6ba47c6e 62296a0b-7ec6-401f-bf02-f6adcc647912 ae5b36fc-55fa-4654-a945-256075c58738 a6c28eee-d44b-45f2-899e-167023f0e3bb 5b124d61-e1ed-45ca-a739-832aee536513 7a8adfc3-e9ce-48e7-8109-e34fdf25f163 9d406d48-f0ca-4403-84cf-05d46bbed87d eef9ea06-4b2f-4e04-9013-618a13f8ee14 4418d0c6-ba7e-47da-9526-fa2938ed0512 af54d1fb-1b82-4249-a813-cb9cd5e1bbce c4675659-a458-4511-97bf-2087d18161c9 35d27940-ce2c-42c8-a45d-96c0d40d1546 c64a9a27-6c68-49d4-8473-b5b5d964023a 6b40f986-04cc-4c6f-873a-976cb38e4005 6a4df009-dcfb-4b5d-91ed-8a479769bab5 26b65691-97b2-4547-8bc5-fe17016089c3 5d7f7cd7-a69c-4b7d-981b-b0e16e43910a 5c82d854-8c93-49a3-813a-de46a082aec2 406d5e4e-755d-46f2-9348-8c476c512c53 c2bdba86-1f88-4ab6-b352-c3e259a79e9f ff778dca-b9ca-4906-9244-c92e947065c0 af4fe40a-d7b0-4fd3-8716-84b3642ca2ef a19ef21e-1ffc-47ef-80ce-9dce822a6dec 94084d7a-9d92-4c85-bc75-182ee9c4c5a9 22efe4a8-f787-4062-97cf-eb70c7b87215 344d8f44-e3d0-4dc5-a9a0-6c73f9f27729 2237c66a-28c0-4133-9383-48bc10a3a8f2 76bec999-c5a9-4fe3-b645-3f48e4cccc04 35f6e07a-305d-475e-8c4d-8c1e2665a265 80a5930b-4982-45cb-98bf-f9877b352430 0a1350c6-a811-49ee-9259-bcbc839fae3b 33e5ab6f-2141-4083-b632-47da383a21db 53e6d459-d696-42f8-87d8-dd35756698a0 c3950395-9b83-48bc-b7db-2f381e787d3c 76874a0a-e632-4208-a33e-4adf82b5b6a8 ec6ff9a9-0161-4cf0-b24b-43354462bf4b d6e209f7-0cc7-41c1-ade1-d5fd754bc2d2 7ecb3cc2-1078-4c80-ba84-4265f402a2ca a2355c7b-678f-4fbb-87eb-1aff4bdb029e f5e995ba-c0ae-4625-902b-d7ca1ccb6f99 7dac3d47-d201-4936-b26e-e1b86f4fd67e 94449ff9-fd88-4fe3-be35-49a703c1de7e f5169090-dc26-418c-996f-3f2b8a137749 ee15cea8-d5ae-4f9e-a7be-bb8ba3f53180 dabc96d5-ed06-4b65-aaf3-4a258e0658a1 770b6915-eb26-4f4d-9200-6316867ec7d1 097e2282-2c42-47ea-94f9-95b65262a798 424054f7-2995-4af7-9e94-8b542bfa2476 2d1b4f95-943a-4971-a2d0-7dac3af03995 110079e9-50bb-4a47-9c16-e8db81ad1955 80d75c3d-4a01-4bb8-aa07-6d0b51b3c576 7eb4a2c8-2d28-4a41-967f-b34d681c6292 6382a682-a465-475d-be0e-79a51e06d32e 2844504e-113f-4580-949b-baa221afc850 174aca59-cefe-4907-afa6-cb35d039b4d3 4ae6f318-9ea4-4f77-bd91-5a83be4efb0f 5994e686-0ed3-4272-850e-282d718506cb fa6d1093-0178-4355-9ebc-9afcbde67bdf d939a06a-a4f3-47e8-b857-c95372d568bd a3700dc9-3628-4961-ae12-6924d5d9ec17 5f278717-9928-4d7d-b54c-693b0ad6b308 ffedbc61-787d-4e1a-8b05-abc9e637959c dbd93f8b-51d3-48b5-8cfd-150a192b49db 12129178-a816-4432-9720-fcc87c825af8 75003977-8f63-40d9-b1a4-a352a043c8a0 c48416da-41a1-4df8-8f9f-11d906f9c181 a0766e21-79f7-4913-ae23-9e4f6aa09e60 b892c71f-be5d-4f21-b554-5b7efdc6e2aa 8286a93f-09ca-40e8-9228-c058f5af21b6 74f316ff-3062-499f-806d-1712458e6900 af471317-6c09-4a1d-8920-b324b7bded92 df60b42d-4e3b-4a55-982a-22b6ff443214 ba169d11-af54-4bac-8c76-4d3d3cf1c1c6 870e57d8-eb84-45f0-996c-d62aa6ea40da bca77294-8649-4925-ab3d-cba87cb7418b 27a18a1d-22ee-425b-9462-f6a3f332b0a7 f508d962-b15f-4ccf-bbde-62e0550041aa 3e2ee6a6-c9be-46b4-8ec8-dae9246829e0 2dda4564-31a1-4c11-8ba7-f94ac5b57c6a 8f92f463-3c45-4e2f-826a-19933c77c9fe 96e19453-71c0-4d5f-bdd6-a12cab2fc3e8 a1a48a3d-f455-4ed7-aded-a63c7952da84 807ab57e-67e3-4152-9caa-e275856ab1e1 9e170de4-b929-48b7-a653-9c27af939a34 fcc099af-d99a-44ef-b831-e4dab0af55b6 347fc58f-f13f-4bb8-beb1-4d8dbd136813 890c62a3-982d-4202-98e7-7817fa651a41 d9a61902-9849-4e9c-af4b-4d79f5cde6fd 696ee136-8698-46ec-a9ed-26a91016d920 7e7f91ce-0551-43d8-bc6b-e688d35723d1 2e6e8e6b-c025-40c1-ac85-30a39165c84f 22e0f575-f98a-46b8-b865-378ea6fd30f6 100b4645-8a12-44eb-81db-e4edde6b2a21 1458819f-a655-4e7f-b6b7-54cd34a30683 79926b80-29e6-4268-9c80-8ccdb8957a1c a27ba4cd-3d08-4e1c-9dcc-6aab86717938 52265fae-f47a-4944-917e-5bd09b5dde62 d72cbd43-b32a-4ab7-a3a9-1124c6546d1c a1cd268f-326d-4764-b854-72c7e36bb74c 9439279f-39c8-4ef0-8621-d03d104250ab 8df64bcc-e33f-4834-8705-9e0a6afc3810 d39cf1fe-479d-47c4-bfe1-aad8625656ef 9f6b462e-2d26-49ef-9686-11ce08bef2b3 d512371b-9802-4866-a58f-41e54191bd92 b8c15609-3d90-4cf0-84a7-5a1cce032e98 29cce64c-410a-479e-bda0-96413b5bf6ee bf3c5f5c-0ce6-40d0-b271-8524e105e8ae 6afcfccc-3899-47e5-b7bd-701ac6f13c09 def5ed49-14d8-4055-8bf8-f3255b9a2f33 d5db6280-4d8a-4a9f-8ad2-c8aad2c1016a 8bcd5d9a-8782-424a-8643-4aaf4a36c049 28ff62e8-fe7d-4015-a916-63dac1ae07b2 e5b37e38-a035-4382-a38c-2adb0dc14a0c 04218e29-1f8f-4151-8a1c-51725cfe1a7a b46d91ca-3978-437c-a2d7-d4dca479e646 65f2a589-bd6a-4786-995a-4b265a837d33 b40d9a4a-9cbb-4a13-b85d-9f0e7a0dac8c 8a6502bf-dfac-46be-b0c1-319ea941618d a54fa51a-f4cf-43ba-a7de-3590008bbd8b 8cd47e52-c0ce-4296-b6e5-78aad294b610 5e4b51bb-7069-4e17-87ee-53cdbccfb20c 9b8e1f68-a646-402c-81c0-7c8d346876ef c20463f5-31f7-4bf4-903f-c3c0064954b0 293d3c15-9d75-4f24-93fe-430459499dca 5ff38555-4a69-47f8-b333-adf8f727b909 29c6080b-8087-4a68-9008-77a58cf9fdd8 970fe55e-e2da-4250-ba0f-c3f7f3da223e b3df38bf-fdb9-4c24-b92d-3155a539456d d22ee216-19de-4599-812f-5899ddee52e1 1928e328-90dc-4033-91dd-76b7b5e3bbbe 1f34ea45-6e59-42a1-b1ad-daee29e3f26a 9e000a88-862f-44ce-bae7-8f2fffcf908a 42e2df2d-9ff9-417e-9ec9-7646cb958bd9 9f8a16dc-2943-4f6f-8c7c-f4190471beb3 cb549486-397c-4630-ac82-a85384445878 3dab557a-009d-4ee1-81c9-49e7b4cea839 48ba544d-0e8b-43c0-9a8e-15f3446623fc 78e2871e-174f-4eb5-a62b-606d6c3dba4b 5278ead5-61cf-4c28-b5f5-9962e6a26d82 8cbc761f-f634-4e14-aace-64cbf3e0cd82 6b1ff89b-7058-4501-a14c-dab0b0d5a5a3 d8d84644-0608-4598-89e7-622a9b26b673 7ed4cf12-57df-4311-89af-40fe868c38a4 a7ebaa93-aad0-4c0f-8123-6b879e47a4be b22b0820-0fd5-4d3b-ab21-9a67108ccb8c f1f1df89-21e3-47a4-a16e-71fc6cbd91d0 e7459c95-6edb-4fa6-b64c-e359444a2a62 2b6a7b34-a58f-4ed5-8524-77fe246f7350 98372dfc-7de3-4870-80d3-219f8ea268c8 e766895f-e463-4c4b-88d9-dca9eff968a2 9706f9eb-cc4a-4fb4-95a6-df40e318044b c4f19b67-d31a-48f9-862a-4d66212458aa 37e8e0f3-14ed-4bc5-a8c0-61c75dc78b2a 2565377c-10e0-420b-a8b8-6056d00da1df e9aeb828-752d-4098-a1a0-93f0d71f1267 1e15f6ff-95cb-49e6-b6d6-56754db1c131 cf0d35c4-e284-4378-93a0-6152027a2550 30042d9d-48c8-4ebd-bc59-aeccca6f9e5a e3ebd83a-29d0-4aaf-8044-b32870fc7b57 c3e734e9-437c-4734-8b4c-7dc986bd5057 3503f1c8-bd45-4dd3-bcf3-23bf29110349 2dc4cb41-e465-44ff-8051-3bd67ca1c003 bd55e233-f327-4b1f-98d4-661ee5d98442 b18d2a58-94cd-4e47-a663-6e522db1c93d 8177abc1-b81b-43fd-9398-bf42a7bfac9b fca96566-bfbb-4b16-9be7-8f37e5ae52ef 17d850d5-1d5f-4245-9255-c09bd3ef10b4 caf52e47-aa73-4e7f-a93d-ce685194459d 7f5eeadc-a1f2-45b4-9256-69ea393cb5c9 73b99da9-35f9-40d5-9d91-a088a8dfd758 68461fec-78b7-40f4-8744-7f162f01b5f3 2d4e8303-0f1a-4eab-aeb3-5a1f73cc006a 5315dc5f-8c4f-42e0-ac03-4afc22107cee d761773f-cba3-4103-b3c9-c275cd188974 c6007bfc-c3b1-4d2a-8309-b02bc6d9c051 ed8362b1-4765-49e4-b726-37e813f9271f 2cd17ae0-0a1c-48b3-a631-60bbdc6fd325 1e2c3d28-6d3f-42a7-81d0-62c5be291d14 52f52aa2-a383-4f28-b6ad-b3fb9f0519f0 6250204c-d8eb-4cf3-a148-80b6fe51239a 20c6a86d-aac7-431a-a86b-8cf8464f25dc 70c86303-fd22-4291-8433-609f9fa0e495 7b7fe644-ffc0-4a32-9d91-55e830637b9f 6c5fa38d-93a9-4a17-909d-a4dacdf9b8c8 25dec143-49e8-4725-bea3-983a94b3f884 0dc0ba12-1466-4eb9-aaa9-79c11801e0d7 d58736bd-8d08-4323-95aa-55461b12526d 0182ff35-8252-4bb8-878a-978238f3857a 5d6d4775-fbf3-4f17-beba-6bb8ebca0bf2 ec038344-022b-406f-916a-26f8eb7cdb27 d7e36dd1-81a5-46da-bd69-65ebc2cb89ed 13b174d0-5024-4a55-b878-a3f1cf9c1ae2 8bfa75b1-aa76-4f5a-af6e-4012ba93272d 1640350a-ea62-491c-abf8-b5b7bb69a4bc b9c730f3-b367-43e6-af55-4aaa129e5714 1b7770ce-f8d5-483c-b2a7-14d799e08d53 8b18f5b8-04b2-4ac8-bb9b-ef8a1ca0f1a9 da088ad7-b288-4f8a-9f6d-199621e21d33 cc51ca49-4e9c-482a-aedf-da4b94e6cea6 6f1adb60-9aea-4c8f-a9e7-da0f438dfc41 78f7985b-5e1f-481f-b6d2-7e802f9283da 0fd8a883-aaf7-47d6-b0bc-3ad8f6d04300 d88bd057-a677-4376-bba6-9d56705d8961 cbc4c296-36c8-41fb-b583-da1e696a0590 26164a27-591d-4bd1-9762-2ed4388c8bbb 40faf37d-384d-4d79-8ce0-56d92d9abaec 87b1c0b3-83bb-450e-aa35-3ee019f50364 cbdec922-ff6e-4a50-af61-a4687507dd11 e93243d2-8516-40bc-b24c-d55691dba257 467cc32f-3975-4bd2-be28-8fdea3dfb4c7 ce0052b1-ad98-4dd7-9e1e-087a13027eaf 7fb5608a-7336-4fac-a849-5f4a4cc1c402 ede59dbe-bb27-4230-a494-938aa78ba327 432fa88e-13ed-4b27-a302-fe48c8413597 583abe51-d346-4013-a6d9-9035b2b5fd80 55514527-2731-4bb4-b7e7-0ae45c8d929f 8e9d3b73-a921-49ee-ac84-e3c61e92ccb1 625c090b-b942-4a3a-84f9-eca378a2bf82 e5fc71ab-8314-4b0e-aefe-ed7a71b135db 18349f9e-b8dd-42f2-9717-3fcc37a29872 f16eea59-7cda-48c6-a5e6-677540a95663 a8fb5094-9a8e-42dc-a54f-db028600088a 04e76124-02b3-4a4f-96a1-745f977f4ac4 9bd44f23-9451-4a33-910b-c9665cd0dbf7 082196be-ca4a-4513-a548-bc1e4795c53d 82983543-1409-4ed4-b0cf-f33b80e985b1 3a035726-6e2e-48c1-a46d-9c24463dd322 adb17bca-14a8-4097-a500-582193a6e03c a167aae3-1548-4840-bce4-0cc93e80fc89 3e2fd99f-c733-4b8b-b604-d5dc75ce8af7 953267bf-d0a6-4ba8-ab08-ea05e64aff02 2a8135b6-4cbc-48d2-9458-2a4434bc8694 ec2a2573-b751-44ff-90fc-f66cd0d9add2 ff5d0040-119c-4d5c-95f1-0fd71b2d91af 0d6b6cb7-8ff0-4485-b7e4-dba3b94a585b 1e9951dd-e295-475b-800f-837aba4d7d14 7e0eef18-e8af-474e-be1b-816aad1b0d18 0e471fab-005e-474d-b433-076afb50ee42 8c14a214-9ee3-4ba5-9bff-92a5ee2dc927 74d6e12f-0350-464b-b66d-21fdf79db33b ab504134-8374-41a8-afe4-8b47db2b7492 66081fbf-921a-47f9-81ba-b4fd4d347272 73fbbf2e-7c2a-4bad-aad8-516575ced684 1e71ba0c-f72c-4605-8a34-2d29f0bb97dd d2523e23-c7a7-4fe2-be64-62d3a7158be4 ac8a56d7-f3cc-4281-a519-3a56d79b7821 d3edd471-5804-4861-ac20-57c3d97cb28d 5cabf800-25c7-42d4-8259-8ed59a0d8ea6 f29bac5a-7884-4533-898c-71c6fca0e9e5 19b33f5b-4568-484b-963d-aef9105d82cc a5e226d9-cd95-4b6d-9bd2-0dc02061569b f1272f23-8670-4990-8e5c-06b6327e502e edf621ce-ac70-4ab3-ac09-bce058bc03fe 10904cd9-dc61-4f74-b4df-9f78592742fe b325ebae-ecad-42de-a570-e25213b9952e c47c3f2e-2099-403b-a8ac-c06cbfe6c0ed 66dd220b-3334-4805-8254-8fe02bb5af85 197dfbeb-29aa-4acc-ac8c-8dccc729b19c efecf3a2-a185-427d-97c1-f4e07b16cadc f848bcce-df91-4734-b088-b67de0504759 e143d674-7339-45b1-aacb-78c30c36b829 04a24782-6f71-4c3e-988b-be9183d8a013 5153b6bd-f1d0-4a5a-976d-9e69ba332823 77165b6b-1181-4aba-b2f0-db36ab54843c af59ac47-985b-48ac-af1a-0d12e288ac3f 71d6bb30-88e6-4dc4-9fa5-305ee368188b 540962c3-7d60-407e-bbe8-49dd803e4fbb 1678d831-9c8c-4c4e-9e55-ed9ebf3a5306 3109ca0d-c1fc-4d24-9be9-f804cdc66114 e100801d-d58e-4c8f-9f62-00069f6f87ca 0ff0b2d0-21e6-49fe-9971-0149c6a58720 bc52553c-c0ef-444e-a989-0d0084fc219a 3df1e092-7cc2-48bd-9bf3-fd4e9a2b9a00 176a5eea-a26f-4b7d-bc57-689e99d064f9 9e053574-5d06-4031-b60d-5bd9a6699c71 f0fa6857-b7ce-4acd-8c93-1cb579e8e46f d0ce7d34-601b-42e4-be90-76e1948743f3 54a43624-99e3-48be-8772-3008cf0e5893 b36c87ff-5733-485f-ac94-d4e32a323c42 d0a768ed-101f-4ddf-b948-1ed276370fff 1b472558-4bca-4275-a167-f7a16af52b29 9f23445a-8f7b-4775-ac7a-b4decdcbc171 9afc33ba-28b5-4e3e-b148-61fba1dd4022 32b7fe69-0024-48db-ad76-2315ac251576 1f573122-db57-4229-9825-d51f424961da 1fdf835c-bb6f-45f1-be31-96f5ea7d990b 3f8c2b55-6ce5-45a0-a42d-474ab761c967 7f87636c-ccce-4071-b847-fd60da2db027 29d874da-e787-4a33-a948-c9360926d8c9 55c3f503-1a69-4c93-baa3-b8841b974a5c 55c1ff49-26d9-430a-8f55-d2a60284396d 34569531-229a-486f-bf23-9dccaf1acabe 467099b5-3b90-4c86-8049-ed0e601ad061 5af25318-5c7a-455e-a66b-f5aeef3c40ad d8ee552e-2b27-455c-89b3-5c3c0c5bbcbb 848cf295-8b7e-459e-8395-abddff04b794 e238bc9d-43c4-4a75-b5c2-372e48dd7646 b74fba86-0775-4317-8e14-c40f3f14b845 ef7456ad-1656-493a-ad1f-e84d81b566d3 33597f58-63b1-47cb-bc39-74876e1b0956 bdffa3e2-7ea2-46c2-8853-0c3b176aee1f 35523da8-5379-4c00-9f63-b94cd198e805 aa2221d0-7d48-403b-94df-1b11bd0c5645 679ee3c1-003b-416f-84e5-70db48ee211d 5538566e-9d3f-432b-8946-654e47370e59 fe3a37a1-41d9-4501-8bf0-e12b3fc85b35 2fcac689-30a2-4eb0-89fa-286f01e0fff5 f739affa-cc86-4b47-aaa0-63ba36aeb0ab 580070ed-a6a1-4fd9-bd3f-7d95b65b104c bf3c5afc-5ef2-471a-9a6b-567852a7e382 7b2d6071-3e6a-4bb4-bc5c-9858a7a95373 08d8b13a-a2f1-41b7-94f0-772e41756b63 70b7748c-af0e-4083-9728-1e6f565474f4 653898cf-31df-453c-a4b9-4d73c6abeefe bc0dd48a-d2a9-4844-b3a0-f2c0d3e1612f 638ea493-3bcb-4ad9-b853-16893d23b227 25872c71-98a4-4d0c-807d-eb4ebe42894b cf7d88eb-5c6d-4982-8478-23001f870a4a 2183bfca-3609-46d4-b75d-2b865e590a0f 7763ffd4-5a53-4e4c-92ec-817f0cdfdda6 accefe75-bc8f-44b6-95bd-2cb1cb8e4fe8 1dfff39e-ca28-456a-8ede-99ab8d358ff8 1a584fa6-6ce5-4ed0-9e33-1fef7f0ec4dc 5f34d2be-e7e3-4e48-bbd7-7d230452a8cc 593d3af3-f1a1-42c5-8b06-4b11561d07c1 c9c4156c-62dd-4261-ba9d-8e1856cba387 26fbed4a-3309-4f0e-bfa9-87c41196feb0 64cbdff6-baa8-4312-9988-83bb3c5c738c 5a55ae26-a674-461a-9c55-3ed8a835ccc9 aa7c3742-97a7-4b09-88b7-0066283277e9 59fb780a-6800-4b04-8c26-59c4feee634a c905aa1b-12cf-4c17-a35e-16f55c9fbf3c fbd7f342-e78c-4276-b1fa-82ff33306a9c b2f48571-15a5-4225-9b33-802685aa1ea8 55427378-c448-4aa2-b430-f651df502d7a ddb79359-c234-46e4-93bc-115d752c224a 91340c41-b36c-4c2d-ab20-1bcc140a4baf c26569c1-ca7a-4aba-afca-6c2a967a0d85 f92ce227-26ee-4157-a5ba-9bd46bcda526 7a240048-7356-4b46-aedd-e4dbb250ee76 63ee3691-5f5a-4b74-91c9-42c65428eb7d 4c12f03b-9e65-400f-8c12-816d16c15244 6efcffb4-8e1e-4acb-85bf-f94d55977d02 59cde5b7-36fb-4198-a002-305d39e9ec54 3b97faa5-88ef-4981-a8e2-c0d8a672a230 ffd6da54-5b28-40fb-8603-aec489749138 7a01f7b1-4971-4bbd-a0b8-5f84b1fa8653 2c0cbb38-e1e4-4608-a5d7-999a71623534 9f8b861a-d9ca-470c-912e-5b67121f1659 547014ff-a19c-41a3-8c3d-c79adfb2fdc8 31190d9e-1af4-4f6e-ae9b-7031c203c151 5910d749-a1e8-4e2d-ba24-2cab75e6a6e2 c11c0423-e758-45a3-aec1-0692a41f9cf4 80a943fa-7d7c-4ab7-bc6b-9eb5d29a580a 3798edca-6e30-4438-9ee9-3fe47dfa77fd 087ca147-2f1b-4857-8af1-f7e45ff2361b 4675175d-ab70-4291-9281-e1215c424c87 f6817d69-e4b5-4559-aadf-1f42f424042f d37d4b34-fcd7-4da8-bf41-ba8d26312b7a 7028b3e9-e3db-43ae-b0b1-8027497940db 26e4b931-49ed-4a34-8bf2-4240de42cce5 af88e394-fde4-4d72-a2cd-dc2d21371af7 d193ea57-9d78-4af5-8a78-765f2ea220e8 c8347eca-6881-47d1-923d-6495755d8bc0 26ee4863-3687-4a88-ad7d-3eb7b8d1d466 2e481be8-63ff-4c41-8018-22ef46f7e676 b580842a-39ee-4438-80e9-0c2b4605b100 5282b6fc-1035-42c0-bdd5-cfd8e415d335 a5702919-f5ee-4bf2-8f93-b779d02ff9c3 d06c739d-783c-4d72-8cfc-77ad6b0e62a4 50bcee25-cd43-4d43-849d-22f847888f89 edc96a3c-e005-4f4c-a5d0-67d352b615bb 2dacaba5-86d2-40ad-93cb-1e7f6e3f3f43 195b6977-5363-422a-8479-7747cbe6fc4c 5432713c-9f06-4ff3-bf8f-c28b7c14d93f 64ba6322-7d8d-4f43-9a1d-d3a71b23859f 0588afe1-5868-4d61-b720-fa5fdf2e6f5a 76e61803-5786-4fb6-b020-33176f58ae47 e6e0fa3d-bdef-46da-bf57-ef6d33ee968a 8e175a4e-e417-4217-b687-027acdeb2c75 7eb7147e-d41d-4058-b656-0011418a19e9 8f5e1ad5-a529-4274-9697-534a1ba1f3e7 407f9b05-97ca-437d-a6e7-b177775a7d3c 96abb636-4f29-452b-8ef5-2072188eeee4 2f3ed155-8609-4957-a9e6-8087389f024b a7334f75-c491-4438-85b4-1a833d0cc78c 40f57a4c-de6b-44df-b472-cdf9ec9004d7 30bd75d9-91bc-4754-aae4-d3796b798468 d1419675-8397-408e-a7c0-30a0c94501f1 b304a4eb-a136-4074-8a28-0f7610a62b8e 7613c27d-a3a1-43b9-b461-3b0cdfb750b9 9dbaba15-d173-4391-9988-7db4f012088e 787e6237-6b54-4d98-9149-60e3c7c6dce4 b9143247-e613-41a4-95e4-fe8868592b8e 980d1a8d-c3f6-46bf-9109-f20391da7669 b6fe95af-dd15-41d2-ac6b-0ccbd048ac5a cb2efac4-0376-43e6-b565-436125f6a9a7 85864cfc-e709-4bf3-94a6-64588e0578fe 9098c81e-77e8-4e2a-9d74-ba4f3df32527 0a4d4922-8678-42f0-a1f8-ad81de0abd3a 49883b81-17eb-4bf9-b37a-355e3d058636 7b30ef7b-4950-4235-9eb3-e12cdab4149b 1854ae28-5d0a-46ea-8135-507a1e390b3e 5de4005a-33c1-4442-be13-8c2879ec7606 9de48d22-780a-468b-9f97-fd3e9c3c1e1c 12ecb179-31dd-496c-bab5-270818c90996 2ff74ce3-02ee-417b-8b6e-7db09f1866c0 1a7740fa-64d9-4c59-9708-313c1eb9cfae 93cc6969-7eb6-4e17-96ed-607da1305828 149d76e3-8add-4c78-b4e4-67be6a505601 0f41eb7f-8acb-45c0-adc3-2a52378b54ca 37ce2df0-cca0-49ba-8d37-0c435ec85633 8d754edd-231a-4a81-92eb-fb58003c0f4e a7ee642b-3cf9-4b48-ab0f-c1e3b3085228 6c013784-6906-4574-b986-4b5b6d8cfb68 07552c71-23ce-4f85-9a42-721cd76a5757 5b7d0767-c916-4722-8883-a08e3b1686f6 49e1003d-88f8-47b9-b116-f776d2409519 25e22dc5-064b-478b-a55b-2a6fa4a997ef 9a0a3776-c9fb-4aad-82f4-7765dbc3b255 444c3b90-f758-49b4-8384-a9b741642089 a50b03bb-f301-48fe-b2d5-1571e72f9051 ce85b4e5-005e-4a8a-8b7a-544863fb7fa4 5d5ce1c5-b97d-4a30-98ab-16a20e7e118c 5b391788-7747-4e42-afac-4c92b833cc0c c69039ab-c2d9-42a7-b9d6-cd0d0b3177d5 dddc59fc-4a96-43e6-9cfe-9ffdb50995b1 435c7e09-7361-4b8f-bba9-f46e80399b6c a605ed1b-7ee4-4ff5-b0d6-c1d2c4c51b9e 04943a8b-ce5d-417b-86d2-67dff8b593c2 a42b1b48-d452-4c9e-9762-1c9153974f17 75f08a2e-c53a-4bcd-a2c2-5bcefb806465 4f836f3a-0e58-4a2e-933f-e3d677e3b119 b778dde8-f0dc-4563-af0d-709da8538769 0acf8834-865b-4d67-b3eb-6ae80ee4d83d 85bad023-e115-4c83-ac58-d3ab6936f229 83a5d104-8ae7-4af9-9411-058e570460d2 322b066d-e08a-48c3-87d7-cd6ff836dee8 4eb55b58-dc20-434e-a90b-871225d78bf5 04f73d40-1715-4746-a163-79eaee73d06d 2d4f9941-6e74-499c-a0e0-2823ea1fb6d1 d9521710-b235-4769-8530-0916ffc63563 22aec3d2-aad1-4b0f-bacb-71b570388e7d c9dd6e43-4486-4c85-8f75-a576f50969d2 9606018a-14e0-4431-b74c-d366b1903d31 e89548b6-be66-4aba-a2d6-9ab7e3640f6c 0e812130-d9af-4a66-a128-f2c109b21f74 81a222b3-613c-4c9a-a343-74074a366a2e a9b4a529-5207-4c0c-8c5e-f5a0dc9e874b 1898192e-bde1-450b-b187-7c6faff3ba9d 714d46a7-b381-4cfa-94c6-4e2342426f23 c365f8ce-3080-47e4-9fa6-44b3188c04d3 972866c4-7fff-4e9b-8e6e-eb4f66d7e401 972d9ea6-63f1-4de5-9c52-2af819b20bd2 78456ce8-e5cc-41d2-8d7e-a5d4097d7ba5 b5df704c-d563-460a-8676-fa9c538951ac 7ea174f2-8ca0-41f6-ad1d-40c8b0c1eaa9 d2b6bcd0-5653-489d-aebf-7d8f8d442cf9 0bb7ce91-da8f-4f21-b5c7-a43712f887f6 19e88434-6f92-404e-98e0-b07e3d6c1a93 98407345-d089-4051-a68b-5435f4ce5648 0ffca8d4-8452-4242-ba82-bd6f5a0a94f1 9dc6df59-ae36-4042-afc5-2904897babfc f0f607cc-2eee-41f0-b58e-989ad421bb39 20cde417-37d6-492f-9b72-b58f747b37c5 b9415443-b466-46e3-a687-ff13b94033a3 409efee5-2022-455d-9e95-38183e3f5e84 a01a1b7b-c98e-431b-9621-f237f8efecb3 8d494b1d-7fa2-4f1f-804e-6fa0ca9bc29b e6fc638b-593d-4e3a-8e21-ae7a52f1be9a b1898b57-9a68-4c81-81f9-46db84b5f2a4 7653c352-9f72-433d-8319-292ad44a5cb4 c7828eda-06d3-468f-adde-f3e1ee50b6cf e1837c68-3f74-4483-86af-2539814d474c 6653e44e-bd1f-4e75-9e50-b836204d0cf1 567e31d7-3578-469b-b591-684b03a332ea ea899300-c7cc-4ccd-a839-f2ddc8fe870f 71e93800-2010-4914-8327-a59bf5316825 e0021819-dc01-40a1-85c7-4bcbb5528ccf 2f38e857-21b3-41a0-95f9-29313b785cc4 5415f1b6-98e0-4c2f-8850-795b25fd5bfc bf8a1f8c-cc04-4dbf-8d50-76c8b328c7db 53c10ca2-cf27-4382-a2d4-a775328ddebf a9a6c838-21cd-437e-9b5e-7d1ebca77972 fc242e71-5892-4f37-bc5b-32797615be00 eb0b21a6-0dc0-41fc-ab6a-0ed1ae385e00 3ad8ff2d-90a0-4566-8ee8-2aeb2ba5baae f79b9ba8-ebc0-43e7-bde8-cf6b9d52fe4e dfc0fee6-92bc-4c45-a2d9-a98507daecdb 8872677c-0252-4e65-8651-bdaf7c43bb83 e1348ee1-05ef-417c-a5dc-1e3fe6dbae70 0e8b1f72-445e-4468-9cdc-440271dd0407 bbc9d6b8-ad3c-4cd1-87a2-bac45efab88e c5c35b48-ebc6-431d-8872-5a4fa844c55c 95fb9b27-f0d9-4654-8a32-6bd6e2862f72 032e75ea-bb68-41c3-9eba-567282972651 72b80eb3-c0e8-46f5-a4bd-a00cc085c68e c6e1b701-622d-4d8f-90d6-b6257e061cd1 d2c5298a-1b4b-4cd4-b2f5-c3fe2831ba2a 503eaa8d-690d-44bc-b187-8bc7c3f9478b 9dcd4347-3987-4ce2-9e93-96425534ee7e 45e835c6-2dd6-4eab-b34e-6278eb2d3afd 842b23ae-d5e7-4de6-966e-690098a7a37f bf436682-361a-4bac-8420-0a060f972b62 d59ad15f-7088-4193-8a1f-2baa3f3fef4d 585fceec-4c7f-445e-87fe-d4daf51efbb2 09ede482-f2fc-409d-97ea-555790f5342f 6a7a89bf-0cdd-4522-b9ed-37fb294d93dc eed52359-c590-436c-997e-714c7d97fcd5 ec2c6259-1b96-4a8f-9f7c-7158a67fcb35 eb90327f-0e35-424f-9fa5-f1bb118d50f6 489a68e6-8ad4-4256-9222-b7a213251867 f68602d3-a607-4a46-9f97-871b9db8f1fb 060b18e7-fbd8-4f19-9111-8dc19fd2778c 0c44d6b2-89a4-49bb-8acb-ec364da902ed 6c29b738-7c6b-4ce8-aed0-c130df5a53a3 87b89142-907a-445a-a296-1281c8a8650c ff64af9d-1447-4dee-aaff-e828a932c846 245dd032-7b4b-493a-8910-dd8c1963215a c4b86265-83eb-4049-ab1b-6e5d61aa8529 e9e60fba-8649-4a8c-bbc1-861bb1e6f0d3 09f8671c-2b5b-461a-a80a-f1025d314c4e ba8aa241-39ff-40c0-a71d-2512a07592a7 a8c9a3e8-292d-48e4-8caf-8c4a103189fc ffda1df1-1795-4a00-a0b2-d30210c65435 ea2ccccc-f0e3-4b14-8b3d-edeb7e0236c3 945c278e-c06a-4a74-bc1a-3a893a5e2c63 b04c439a-bc75-4bc3-83b2-2d9cd35a1a31 5a9bbd10-73de-4450-bbb7-f498c51b408d f4199566-7fc5-4358-a7c5-eaab41037f62 18df6e63-4ac1-4ad5-b9ef-557950332a68 88dcc0ef-f551-4723-bd9b-bd4435e955ce e2c92a05-5b4e-4680-91e8-591173f8c543 806686d1-b023-4cad-a348-9920da6fcd81 9c4bcdaa-8c46-4a78-8d85-4f98543c5a7f a1af1004-b793-408c-814b-a4a040db504a a635815f-7049-47ca-8fd2-daa7f6dfd2e9 b72dcd67-d730-4243-88c4-855ffaee3e43 fc355a16-7da2-4855-98eb-85eb018e2a4c 3b4776a0-b46d-4260-9a02-93d40993264c 404f44a8-87d1-4dde-8f81-0183748c21bc c2edbf36-f510-4fb2-ab7f-a34ee87c7990 61f5522b-d6c7-4dd4-9bda-887fbbf274f1 c4dbd08a-f88d-4f00-9351-a127d9de1ccf 006049eb-e324-4b7c-afc1-b6915d2e272b ec1790e2-6db4-4487-9827-8340b8880c75 4a2f96c9-6aff-4c86-a797-ad3f68f96253 39c819e0-a3cd-438e-bf6a-8decae102959 45c975d4-3943-44db-91fd-6eb625e0e40c 9a4e46c3-bd2e-4104-989b-3573a40eca02 c5fd7d36-37a8-4841-a464-524962aecbef a12f8e7c-4a6f-4e05-ba3b-8893c0e557fc 506100bb-a7b1-4030-935a-3a43a3fb6fbd 4d75928c-174e-409a-8783-4bedf91a30bf 295c65c5-16a6-467a-81ef-a9382544379d 10173f36-a6ec-4f71-b3c8-136501bd0507 ba7b4ed3-bf8f-4b92-85ed-d5fbcf9c3e53 27f0ca71-83dd-4815-bc8d-3d55a0e1c15d 76d9a63c-cd6d-48dd-8a43-06332a02e74d 234e3846-e860-4a1c-935a-e51647fc0f25 6a87fd0e-1e13-493f-9b07-74662eddd385 7396ab1e-be76-4725-aed7-e005f96d3b5e d4927f83-d4ef-4b28-9593-1841216169a5 82a41fd9-c386-4dbd-b2c4-775607f63ae5 5823297b-f7d8-4735-bee6-3ecfa3a2df2d 1791eb89-ee2c-471e-98ca-39bad28c37e3 aac9f61b-5b35-447b-84e1-1febd773b0fa 8fcb9fcf-45de-4b69-9ad8-c4d18095947e e78af267-930a-46f8-a337-acf447cd51f1 46cf0c38-8dd0-4ea2-8162-9170c148ef3c f4b84b08-4e04-48f2-b815-390d2044d3e2 8a478f90-5195-4bbf-939b-fb42764dc1df baf120fd-74ab-4596-8a2e-cbf167816c1b a5c2f469-49d7-4790-a1ca-c74af65615d9 032ec001-b3c0-4068-a40e-8ea3089cbaa2 93b65400-7ea9-4e0a-be24-b00216d08054 772159be-43f7-49f1-abb7-6e88d280e772 83c3357c-6ee2-48b6-890c-fcaaebe9352b 10b123c8-1d65-44a8-811a-9dc24e20b39c 54e490f2-90cd-4a49-811d-574eef0237f9 44c312bc-0c2c-49c5-bffa-513a916f5283 8af49736-264f-4957-9a71-e697838eb9a7 60c296c6-9654-46a9-9dd6-ccd82a4aadae 68296191-c744-429b-a59a-00808db0b02f 612e5879-fb9b-4239-859d-e6b33a685583 0fdb8fc3-b377-4b20-8fd6-736ab402f085 19abbd35-b033-4ab3-b2bf-fd5cf05a17c4 414bb521-6575-4e38-859d-c376356eda87 010b3d3f-29f8-47df-98eb-f8b3b2e9d11e 86aba494-0bfd-4f59-8ab2-1813a614ed57 2dc21589-bcb7-458f-8d29-c80da28b9a43 c3989ac4-404b-44af-a829-424f308da401 e1999b99-4a47-4818-b6b8-17e64d739461 4f35af68-4498-44c3-8b65-25c403efcfcd 75bc8e98-4509-48d3-95ef-73856bfd9bfe 164549ac-1e09-4c12-a124-321385b44bbe 1c20c5ac-6303-40e0-95d0-b1f4c181d1e6 003c576e-a70e-4819-8e44-f804913a0aa9 d33f4bd6-6671-4bf9-a390-fc6a99a43aa5 2637e1f2-dcd5-41c5-9f00-de921650bc10 8e0a3279-d5f6-4eeb-8e90-b8e83d0e1634 3f623e13-75c7-4422-a4ec-5c23b75377d1 b392aec9-93c8-4160-9fd8-d89238e00e0a c49a4fdb-2e0b-48b9-9d6d-d2a7ac6be101 1f526394-3de5-4281-95ba-7517582638f0 553ccda0-affd-44cc-9cbf-875630695bc5 5bc0a3e9-a7dc-48db-942a-efea9d231f3e f3f8ce11-56d8-401b-aa87-14066db84f9e d09b74a4-6fa2-435d-b183-a47a044b7d46 2857e640-907f-40fa-9e56-b3e619bfbc2d 125a4bf6-267c-46f3-ba79-491e6f4aee12 7f9b8eda-4017-4e36-9a7b-7c7e89f34db9 fd8fcdd7-a7ff-4876-8191-5dd925feda9a 9568458c-8d98-4979-b5b5-8da25f75ea75 d88dc354-ca68-43d8-b3b7-b46f7d2fd52f 0715486b-28a8-4fdc-bb73-625086c12681 1d86c136-9c57-4931-afea-cc07c742690d 4142c113-1b04-486d-8fc0-133904b57ae1 3525d216-d73a-4f1d-8cb5-6c6b9204dfd6 a708eb56-d278-4d0c-afb2-e166bec113ba 3d944ec0-0a72-47c7-86c3-0c7ef5a631cc ace5c907-9a46-4820-8fb7-6c8df57cbdfe 26b333ce-5c92-4d6d-a1d6-eaca6e612fde d1e71bab-4c74-4c51-89a8-b85273c9609f 7748e8e5-d9a7-4587-9000-b57485b8dfe8 4b6b2321-38b9-4e07-89ee-ee856d2924d2 a82b2690-b8ef-4d2f-a8ed-f9f136c6db1d 2f4b0e6b-09bc-4136-9f4f-526bb6c35a05 2e605d86-4f78-4136-86b0-2f792f6a4a0e 90e22545-8888-45be-a098-aeb9a237de38 64b63109-469f-4635-b673-467084bf0d57 05b1ac6a-2b4d-4d75-9f51-5088f98a1b39 5c83891c-786c-4939-b3f3-a6030118d19b 8806477a-cbd0-4807-a984-330300efa043 b5aa035d-f456-45f4-b6a0-8fa6535b27ac daddadd5-fe8d-436b-b1e7-b86bbedd02e8 057e5950-7764-4144-a103-25e15149d202 ba74f7be-cb39-497b-b082-28ed278f3dab a253367b-4f7d-4322-b1ad-9a2871bf0f58 8ae0da7f-3493-4647-a0c6-5814b384d1ab ba38c831-e19d-460c-9856-ab7dd7d68677 f24c9c38-4934-48a8-8f30-75f100b16ac1 6f26141b-b643-48c9-a8e9-4dcfa0457e8c 5a422fb6-fd38-4b1e-a701-7eb844f97010 c8ae319b-eebc-400b-a335-e2aef4509254 e37f5f05-5a61-4533-a39e-1dde2cc36e18 4ff5b715-7ffa-4c8f-8e64-393147162363 9dbd35f4-6132-4018-87a2-53c91465a5e0 69aaf744-40fd-4cda-9d04-b2fc32518b0e 8b945449-ce35-4624-b12b-abef3be778fd c79a090a-6b19-42da-a23a-e17e8449aa19 fbcde524-15aa-44b9-9e3c-834d1cb40c75 350241e5-2c22-44d6-9c64-b68160f8252a ecaff5ba-2495-4dcc-808b-9295fbc823ff 630b69c1-e649-42c3-bd09-5e481f43be4e 5af01a54-d948-45ca-a0e5-b5861dd0e855 71e5ad78-e54d-43d7-a9ef-ed694d082f25 4b8d1897-15e6-432a-84a9-67d482509fba 3d6c4c4e-e47e-4e4c-a75b-bc9f98732e36 e7638ad7-5ec8-4e0b-93ad-85d0f5795395 31e34086-fcc4-422a-af3b-51ae9f0291a1 5dc84565-6221-4537-99d5-b512e5a4a51b 9ce7741d-358b-451b-9cba-d6c21fb74d7e 1bb6b182-67aa-486e-872e-d8ce2cac3958 df527bd3-7a86-4e65-8a37-50f58477835e 06192104-6309-460b-b1a1-d21ec87e93e2 13009ecc-7086-4320-938c-f2cf52ef2685 68a3c500-9831-44a2-b3df-a3b9b404b6d2 6ddaf25f-7da2-4deb-bb6a-9ff4e038befe 1f2adcba-3479-41b3-9c34-594dfad03fdb 3ec8ae33-af02-4095-badc-f2bd400289e8 f26c48fc-5085-4cfa-9727-8e42f4c63faf 04fd1695-e52c-4ce0-817c-f5ead793fc48 0aa772be-e046-456d-9077-a1482f25b0c7 5bc9e877-0805-4d92-af97-5dda64fe3796 19413b67-2dbf-4ced-bc10-a31369c61fb7 0a411a13-7a61-46aa-885e-97813b1228b6 16c2186c-5bb7-4344-802a-5664dcfb479b f5984f26-a087-44b0-86a9-730a95666cd9 cfc82ab6-3dad-4e3e-a252-ef57446489f3 4dbd9232-7117-4a9f-82cd-ef0ad97f0924 4e368f84-a4ad-42f4-ad40-47d2a323d233 bc9deb2b-31e3-4612-83ff-492080f12bfa 1afb3d4c-760d-4174-b89b-edfa95d08609 9da75ae4-cc00-4eb1-bac9-00e74d152f8d 2d2d8e53-a04d-48bf-9ef7-888c98d739ea 458fefca-31a4-46ec-9108-90869bd1e95a d8439d66-09a1-46a3-ad56-1932a3a6690f 0de68b08-190e-4258-ade6-6d3946a72a92 2c5bb551-864d-4fd0-a52f-b50ac5c29df3 3cd1d5d8-c41c-4730-8bf4-cd414a4421b3 2ac540fa-89b7-4a02-8e9b-71800ed273f9 21ec9d30-887e-4bfc-8eb9-82f5a0bfe43c 6f105128-18e3-4fc4-92a2-0045900f7ce0 cb37d5da-2e9a-49ee-ab42-4ec85317a57f b2f657f8-a974-4466-8456-3b69b1a79fa1 4bfdeeb9-ffd3-4550-a793-a43b5ca82d40 0b4297c7-054b-497d-b162-69936f59937d 6d4e23de-122c-48c3-b3bb-33334ac720e6 ff89088b-9ab1-40fb-aaf9-0b3885ef96f2 d1e0b1ee-7ab2-48d7-afef-8c35d236bc04 a7859dbd-89ac-4f34-8d15-eb41cd33ecf9 5ab1d1ff-7daa-4503-a125-36d8720f452d 7ddf829c-d1ce-4b1e-834e-ca9f0c7f1634 6c2b2fcd-3762-458c-b58e-6872a31e1da0 8c57ae5a-4974-485a-a3c0-5344b4d81fea e874a677-5c9d-4311-b26f-7e782b6e42b3 ba7d9115-f75f-4231-9a2f-30e32a4000cb 1d288344-9b83-486d-ae7e-1d6f12178ae5 0abf64ff-ae8d-42b3-9329-d85998cb60bd f43cfb14-b9da-4694-9657-e116298bd4ca 3191b576-7340-4fe1-95bc-4f6970763efa b6ad34b3-970c-47c7-8795-8b648917abab 4688a7ee-9aa8-458a-8b89-274a5a52b4ba 4c65b609-c957-4020-ba91-deee2d7c6dc9 6588a191-e18e-4c70-aed9-d957cfe7b4da f4c623d4-f3aa-470d-be35-38e81c260c34 99d42406-2867-4e99-99c4-54c7948be04d 093ed727-1e81-4d9d-84a6-0aed3c91db00 6c8f621b-752f-4d64-9b39-1459692197ef 83e6b155-b04a-4696-9528-2397763f4dad c8d72e1a-ab3d-4fb0-aefc-f356f799416a 8827c6b5-037f-49eb-9903-baba2ba9700c 848b04c2-0537-4c13-8fc4-7ee8796bb468 5a1f1743-f3b0-4ac6-b641-19df54f2307f 52555509-132e-4539-babd-eece56bc69a3 5ea552fc-c94e-48c7-a1f8-94d2a64e1b68 4ab5b76b-9044-4d43-8a4d-356c82dac936 efec7ae8-15e2-4257-8764-315352c6c038 5cf7883f-2d79-4b91-b764-1bbb3eacb57e 3d598802-7280-40e7-b380-7f7e144ab474 a06b5017-8a19-4f10-b383-d01a5d67e395 f4352e85-52b9-426a-a9c4-53d0696d7383 32d7d09b-632d-4882-99fe-e92b570a4227 c39330b5-d5c1-4d37-b91f-a46850f2ebb1 aab48b61-10f1-413f-93f6-674d9df7c87e 90100316-7cff-4f96-b8e5-5a819ce25f30 4e342017-2f85-4e6f-8d1a-0fbeda42d0ae 23641b7c-529a-44bb-8da0-2db373239ef7 77156cfa-9020-49d8-9ce5-dc8d1aa3e966 81555428-e911-489a-92a7-24f930a6d6af df519e0d-c418-4020-b01f-073e37ee0ce3 7eb9bd15-469d-47ee-a906-e8dd0c40cea8 8efc3e37-5503-432c-9fd6-1766c4cef068 7d7da593-94dd-4215-b9bb-2cc77dff2496 ceb67217-d9ab-4e2f-8c58-0e861b6df179 76975ed1-f18f-4e5b-ad9b-05bc254563bf 92c070dd-ae72-47d6-9c21-b08a28f1291f 1fe118c5-398f-4e0f-af72-310896c04d03 a07efe7a-88cb-4959-bee5-4e88caf8c4c7 a08c7837-7208-4990-8d65-f4da8381a2db dee13487-17dd-4495-b231-5a3a31a4553a 734083aa-14e3-445f-bdf3-514b46898442 0d1615ce-db4d-43b3-875f-025524421ead 39af7fef-6d0c-45cf-b545-44f79374a723 f86d0a3d-2239-4249-8d63-0036e63e35a7 4cb586b5-a5c3-4f95-8be8-406add5733b2 ed31f10c-1e1c-4382-bb27-d111657fc3da 63ddc7e7-9a2f-481e-8629-027f2f9eaeec 818fcd2f-a270-4549-8106-f5389440b886 e6e94d02-f74e-4821-9379-859a39ee3274 b11606ce-fe1e-4ac6-8b29-bb82c27f2f3e 831e745c-14db-4d44-a962-c9ddd35179db d104d1ad-7cab-4295-b0f4-c1d38440d2a6 45e39a54-835b-4c87-9656-a05c40708e46 bd4c420c-a624-4fff-a428-afde353a28c4 a12479c6-ed8a-4d5e-88d7-f0b22bb53d93 9a170db6-e65f-427e-b303-6659d1559cf9 869200ed-7199-42e8-b9ee-a264e598486b 2f54f732-6f23-4b24-9ad7-3b78f1341f67 4ce4fc12-9d5d-46a3-8529-9434cda0c212 2139c356-c666-4648-b096-7b2349d030ca 8bbb7820-7075-40bb-84b1-ddb5509546c6 a582335c-2211-40ff-8832-8f4f63eddf5b e618ae64-83e1-423a-bbcc-773b18f7a9ef d024e2e3-35d2-41e0-9cd2-7b2068f73491 22fcd3f1-f7fb-4748-ba18-20646cc9a6db 33193d3c-08d4-4849-a757-a1d65d18c504 388c1f4d-b697-4247-8cb2-6587353fe789 e9736a51-8140-418f-b660-6668c23b17ed 60b5f3a4-ea34-48de-b558-e5d3f62194ae e09eaf7b-12b7-400a-9dd8-e30fc00ca120 0a55e1c9-213d-4de5-bcba-d2858deea678 19de118e-1c73-44a9-8fec-d1401c12ef3c 5bfbf44c-36a5-49eb-9d4d-66f2785838ac fb7d312a-42f7-4d2f-aa29-1a85bcc6e4e0 965a50eb-d90c-4c46-a49b-734f00ae3b81 a443e8b6-a975-44f6-8c04-4478899d02d7 f14b502f-b6ea-4f6b-ac3b-cbb3e2d3c423 f06f2281-15b2-4170-95f0-056798314eda a3091a8c-66df-4a01-84db-2c8cd72b72ff 5185d99d-3425-445d-8757-fc948aa069a2 0bc8cfe6-9063-4bca-b008-4ef6fd934fab c275c8b3-12c6-4f33-a1f1-7156d0fd066e 4eaa1d8b-92e6-4e23-8e7e-e16c8f9c2e37 6e10a9bf-1fc9-45d3-b3ee-d0b351f3728b bb55894c-f5a5-48fa-816a-6c6c6a6f7f03 1c722321-4008-4da7-8cea-027d228ea2d6 a76efc31-2b7a-4652-983b-8ccc6fad854b 44c4d63d-adc1-4c37-8f52-5eaac7b22ff3 b149d95f-b72a-4934-ab18-745bb85a9e39 d3bb7f58-dfbc-424c-a92f-8c8b77ecf2e5 91fe3929-5d44-4a7e-93c7-681284804937 ba5bcdc7-90d3-4215-bb24-c7b8b39c6579 198a75eb-2a63-48bb-ae44-6fead58888b3 bd5760b9-18fd-4b6f-a1ef-0b8bbc2d5481 69be375c-4b5a-4778-bfb3-99f95f6c5b40 8674160e-dcb1-4b95-a4e6-e56c60721cd3 cbca9b54-9f46-4a3f-b573-636c91d695fa 1063b04e-c0be-46f5-ae27-7329b8a79001 d0b82970-63ac-4dff-bf0e-ede3edcf1e66 18225294-5710-48ed-946b-4fa77e264759 8507d581-9484-4235-88f8-60f3fdfb21f9 b5d10884-e51e-46fb-a4d4-acbcb9dda3be 2bb49def-b8a4-4599-b5af-4da51eccc3b3 d81b4460-4e01-4433-9b6b-e72ed5d7d104 45c49f71-5555-44b4-81e1-2259a5d6ddc2 cd482519-3d46-4f58-8b8d-e680798cab5b d38ae2c4-42c6-4afc-8a61-14aabc2d6f5f ba0ca7eb-272f-437c-84dc-742590607eed a3adc1f1-8abf-4ae7-b320-51e7c7ecb1b9 90c730ac-cd6d-4538-8650-9a0d12b8a1bc ed89586e-2711-4bd6-a90a-842e17d3df5d 290ca93e-7c3c-4d09-9b11-74d8ce8cce9a 7dee97d0-dea0-4163-a532-4d083e454890 f05635cc-d582-46d9-99ad-15e1264547a0 12e305a4-e14d-49c5-8e75-d10aab06837d 6000ae67-39e3-4238-8011-4c736316b0dc bef71b94-b691-4f8f-8e3c-14cf915e67cc 2c743ad6-ab4b-49aa-b378-d4a2a66acab0 a191a9a0-0383-437d-962f-b889e62198ed 01999e69-711d-4de8-a6ca-e54c783cbe5c 3280ea9d-78f6-4b22-b714-5ed428c95293 67a356df-7068-4fcb-9d55-d272517e5f71 04ddaae4-00ae-4e08-a065-9e420ef125a5 d566acfa-55b9-406c-b2b5-5205131f77b4 c29e18ca-1b19-4738-aeca-8fdfca88b653 f15bc8f7-148f-4353-a077-044ff7bdbe4e 4e486dc9-b206-4dff-9f44-b69865a50703 c960a7e9-f09c-4a24-8b4f-531d8c10c499 7b6e4b71-0efb-457a-8a8f-8842a3547713 4af64e86-cefb-4aee-9d23-bd7c44e0f6de b194facc-1558-4125-974c-b757ab84bae5 995ab069-5bd2-4e86-a626-13b39c9d83e8 5777258d-e119-42ee-8826-52557ef5e4e8 e14fd50e-93d2-4ac4-92c4-d7aa62911dc2 21ccf7ee-67ee-4d06-8ddf-57af18f973c0 45d489dd-5c8a-4cd6-943b-56462747e11d febd1284-a3d1-460b-b4e7-d1f7cdab6230 861a473e-d8bf-4430-b9ba-116e2fef03a9 e39d1105-7f7f-4a43-9923-4016af4e8287 d127a045-4617-4113-bdb2-6a5c0f7be89b 2d4926ee-f885-46c6-8bd9-185ba2a33184 d5c4bdac-25b0-42df-b178-5da8dc1d6556 4e21895f-cea5-42fe-a9cc-15577869e7d3 92fe74b7-1c74-42f0-a411-ad996b7f9a32 c3e52e25-6dcf-451f-bd0f-aa9f3ee4a216 812e316c-6cb8-423b-b780-987b14efbe25 4b1f6476-2385-41ad-a64a-5bb0c5867a41 ff3c1566-ce70-477e-a3e6-4672041d9ca4 c44fdfe5-1e26-4467-b51d-a0bd5a0312d3 a162040f-9da9-4fa7-9601-52b3fc822abd 58ff3ce0-06e8-47ce-b870-c3acd3c77931 14fcdefe-f43e-45eb-8e73-499ef03a6214 717d7071-2887-4903-99c7-f1347e183528 d4b5450b-78a9-4cfa-b5b7-cfdf30100dad b1a128be-8315-49bc-8467-a6b2bce507ce b6c71ae4-2a90-414d-a822-3ac5e428e356 2c6d3d4c-9388-4b6d-84e5-410bf0b22c87 a6eae057-64cc-4ac7-89e4-9fa15b3f131d d0998762-fe8a-4631-863e-1730a741c42a 942feb52-ba74-44f0-801b-b08841d05f09 aefc51de-5998-4488-822e-77038791ffe4 fc90a88c-2473-4b5b-b2d4-89ca61c2df50 f491d656-c158-48f8-ad87-1039d9cac683 c6886a72-7ee1-4db3-a239-08f062185505 9d64227d-1577-4ceb-84da-5c8a00ad73c9 ab2c9a81-9f08-4ff4-91fe-d87482a118c6 53bf2647-e077-4187-810d-f672dfff117b 8bea8543-872f-467c-8ed0-6236e0940c18 8b6c8924-751b-43a8-a964-420e0547940b a920b889-646b-4626-ac94-ed6d86f57aeb 0fe60528-2694-4d5d-9ffc-22aaba924a24 1652d653-0d79-4ac8-81fd-f832c154a9fa c8f55c3c-6351-48f5-b92c-76147b84d181 04637388-6d04-402c-96ba-5cbfdbd9ecbb 20566658-e3ac-4ebe-a2fa-2fcfe0a2e779 c7666a24-f0a2-4198-80fe-1610afcf0e81 45f93c40-44d5-4945-a185-171254fa2c46 6d0db2b5-c065-4969-b116-bbb9d8844e7a 287ba5b5-e630-4c32-aeb5-6a51227b3357 3ca513e9-a94f-4a09-97f1-bc37db1fcbbc 16965a2d-7ed8-4a2d-8c27-d692af1e009f 85917165-70e5-497f-86ba-29f0c82589c4 30deb479-9bd7-4309-8204-3148b31a0d5d 75f354da-3cbd-4e11-ab66-650bf8cec368 43b12db1-8a6b-4174-8451-09a65f030120 346b3185-0ab6-4009-8839-af66744f8e62 7b15e904-0f5a-495a-a149-3b8551f3aae6 fef9e092-de63-4f4f-b902-f353e8293c1b 75eccd48-791a-4a72-b5e2-27af704b4d1e ac5bd22a-7767-4c46-8e72-2baf80bd0ebc 3e2cc2f7-9b64-48c6-8bb2-787881e03f8d ae796137-fc5f-4093-9dc8-595a85a7085f 665142f0-455c-49a8-b1a6-a88c4494b79b 36ab6c31-f01b-4cbe-bb37-05626d141373 016901d5-cc46-4c87-aa9d-55ffea3719e3 0fd62d7e-0309-4589-b285-9f4fb4ec1137 34228af6-8254-4dab-9999-3ff797be2914 b3e00e0f-fb3f-4591-b667-45b99327fb67 718f7d36-dea1-4a1a-b391-9a359ce72079 c3cee428-701a-45ae-bc61-97f1902be8a3 c15a15ef-0ed4-49e9-9fb3-5ee4a91eaa86 deb9cf51-ff19-42c7-8d05-66a0879dfe92 219d8b42-b8ec-4695-aff1-bce6128572b6 035bdcc9-278b-4860-aef5-8997acf6a501 d5078330-5555-4d8c-9910-da0aa6bd0db5 37e21fd8-2e8f-4129-bcc6-8afc8f067fe1 d98c389c-e480-45ea-876c-db2b24700d41 d5d4c435-8a32-4adc-9539-bd762cca6aae 8fd221ea-152b-4814-831d-109e663e21fa 62e38e4a-46f1-4a2e-a64d-cac1adc258b7 fc09eb3d-9897-45c7-a70d-15c84255f59e cc07934a-f136-491d-968f-1f061f87e876 7301ba49-a6e7-4b7d-bb01-207222ea458a 3f9b8041-72f9-444c-a26a-150ac6906e06 b6824401-19bc-4568-95b4-d89235412701 bb464d84-d1e8-4b4b-8776-645d44e38e87 b05e5a34-f78b-4adf-bb90-efb0c0e16eb9 c4b33025-3ac7-4f5a-b943-86ec6b176f3b 2e1d3a67-ff94-43a2-8e97-f25bbd8ed34c 031635f4-36cf-4030-bae8-1bf5cfc8c948 a3d7090f-27ee-45bb-8474-cba8e65a5ed3 0a9e9252-d039-4826-938d-35048529b3c7 ac6b7df9-8e4f-4d47-9430-1e504b2bf22a 70d617b4-b787-4195-9dcc-beb377a45c88 3b59d6f0-1315-48e7-a0d6-0fad01743a76 fd95a27e-d3d8-4d02-aaa3-b6b78370a6ad aa1fc909-e8b8-4d1d-a243-152721e7b8e5 e9ff57ea-ffe1-47d2-bfaa-17d5dbc42ba3 cd9df9ee-d17f-4e6b-9b14-f8c3d92a97ff afab8f7a-5693-4e10-a895-8bfa0096190f fc9facf2-5e6c-4410-83ad-d6aaa0cf0eb7 5ef2eb42-d842-4263-b3b9-16e51a6f3502 ce47dd4f-60d9-4853-8003-3f0afa8c2e87 81d6caab-09a6-4006-95c2-a3bf50008928 1b4a6b93-e7eb-456d-bfa0-0dd748d17ce4 91dc1553-18eb-4915-bd09-c1c9adc3c226 6db23fd7-b328-4921-b29c-6ef0d7d704cc 25411d4e-24f1-40ec-9345-f2556990ebd6 c3273ee5-d08f-49d5-afa7-ae67a45b2d5e 2ba089c1-f5a2-4fad-a4d9-13e9c052f623 8d731855-b574-4797-badb-8a1d30b87e84 430eb8d3-94ac-4dfe-b946-90ed81320256 4846f969-4487-42a7-ac29-b8abdd1dc974 4e38d53b-c8a2-4bda-a54f-101bc31983c7 e908f4e5-cbbe-43a9-a943-ff1f3a797e0f 7236f1cc-ea47-49de-8f30-71455a54e6fe e54599f7-7348-41e9-ad96-c77910feec8f b4b2f433-84c3-41ed-a3cf-13bf3283fb32 606a9304-724b-4f67-8595-9ea8fb466202 5011c9c5-cd43-426a-aac2-a7acfd9c0d5c ced644e6-ceb3-4d14-9de2-35a42c29a21c 1490dd2c-42ad-4936-a03c-791dc7e4d052 5bed3860-5279-4195-959c-2e3978ea6e9b d298e6c6-de9d-42eb-8428-6f368b7c8e5a 2c1174d3-7b55-4f79-9aba-c65f173b4c5a 26142416-a0d0-44da-8cfa-9283784c24b6 19badd88-7759-4dfa-ba73-8ed5d2879c44 12217e22-cf6f-4efe-a99d-1c710ab6d1ba 8b5cc677-8a59-46d4-91fe-46403ce0a4be 8ee18001-1f6a-4180-af89-6c36521c6ca8 7a32f173-17c8-4b57-8cf9-89221190313b 3df62604-e5e9-4e29-b950-de499e8f0779 0d31adea-b6f7-4161-8fe1-ded44817f7b2 0fcc0e8a-301c-454c-a65a-ed0a7c6b6ea6 92876abb-28fe-4c77-af22-95537547b19e 1b8571fb-a478-45fc-b2e8-9887fe60cc93 0b49631d-7cb3-463c-a5ea-6f03d7f74948 331865fc-6233-44e4-aebb-5e29aa697d1e 0290e62a-5bae-4f51-bf09-ab4932079979 24427960-4277-4a45-8dc7-9a9e92a01731 186bb22d-a6ed-4d58-85d8-3089b90e0154 d7ad98a3-f47e-4ce0-b7b1-2bd911568ae8 b613453d-f430-4dce-b2d9-4e3e682741e8 0def1e10-b031-42a6-bb30-09e4d9a60be4 c73d6c65-9fcc-4a4c-acd8-fc7b19184b4f a99058b3-cafc-47ee-89a1-614f2c2c2016 4d920c0d-9621-4428-a326-df3527838a89 3f5caf87-e54c-49e6-b918-6162a13b8f61 c3faf1e2-b5bb-4fc2-a028-92dbef188444 490a67d9-e5f2-420c-89d0-44339123568f 29527c24-8ce1-48ed-9d18-6d8b1392627a 0171a073-306d-4187-87ee-b6c0ec4f745c e115dc27-b054-4b98-a19c-4e76ac46b902 daf0dfc5-9399-47ef-bcdb-4320b8fdfc21 9974a569-7e24-4ac7-afca-ab5ff6b1a9ba cd86dd66-38b0-4c80-9c2a-34c95fb957bb 1ca695f6-6ebd-4735-91b6-25e490900e81 36894a21-f130-4a0e-8e6d-6b9d26c9cc10 8226bfe9-e54d-416f-83d9-62ee93182674 df5c2b07-720e-4aed-844a-37484d364804 2221bb74-cf86-41cc-9e9a-84b830c099f9 62d6f208-23b1-4ef1-956f-aafa8f92f4d7 0ff0144d-013f-44fe-92b7-8b43574ad85d d0dbfccb-5a96-4b95-8860-35167c145c76 7f2626a9-7d0f-4b7e-8aa1-76f6cb305787 b935f9da-8c46-4046-9fc3-4c1c1f3b048b 0d3c1811-b82b-4727-b90c-a244acdaa11e 14e3b17c-a205-46e0-9cb3-9925a645256b 2045954c-741f-442b-bd49-d7fc6d43aa8b c9401d69-31e2-4eda-85c0-2e838cdb8772 9009ab85-d1a2-431d-9ad5-f25f1c368428 17e5047f-49e1-4d8d-9ea6-6fedfa95c4c9 ef118e0b-a5c8-48fd-b1b3-b0a0afb8ea17 46a3efde-a70f-4747-9a51-bdc0b3a27ac2 912beb0c-ca8a-4a57-a905-9b5f57c9edbc 01a2ae56-9fbb-494d-9c99-8cdcb322506b 5828f8a2-1830-4d5d-a7d3-16c5abda08f7 ebd001a4-3cc6-4d2b-b302-8b54b9b17909 09793a3d-0048-4102-9430-644a62650206 c7f5c4a1-a06d-429e-8dbb-852389d1ba1d 7c835189-7c41-4813-8625-d3cc3bdaee4c 59e94923-3b4b-4a09-8803-cd2a8aa2ed9e ac46072e-07bb-4400-9205-c7002b9a229b 3b07ba83-4222-4b96-b63c-a3b52f8a636f e00a516e-eb32-4e31-a670-77b53f601494 cc14bdec-7f8c-4f69-9bd8-d6188ef41d1d f30e5320-01a2-4472-8e20-0a9624a42f64 eb1f31a4-c31d-412e-b302-28c126e169dd 80c51046-d291-46e9-b7d4-9f92293d2d54 fe52b361-8125-47a4-8feb-82a64cfae0f0 3abf0e40-9c0d-428a-bb96-c5032a5acb5e a50392fa-79bc-4cf2-9029-560e66640661 44a4852b-802e-44e4-a166-fd23072dbed6 09920775-4fe2-4699-b56e-3f58a7a47b23 5f09ef3f-49d4-4268-aa56-f67d6c045e23 1977596d-bedf-4a91-87d8-c99239ae56a7 bde856ad-6b66-4489-b2d2-34e9f7d34882 db35f561-02a8-4346-91a1-518ab1666ba7 a7a86546-ddea-4684-881c-e49ed80ac2c3 5ef91961-43e7-4027-bf61-36039ed8dabc de4abc46-636c-4412-a636-8fdd5f3c4ba1 12765106-41fb-4fb9-9493-16b449c439eb 708853e6-1455-49f4-88f9-80be332e4a70 907b1e42-62e7-4d15-9aec-028253b7b356 2e418691-bd73-4b72-adfc-d2ab4435fe0a 82b47e14-734f-4318-9342-10b032878d2a 509fa834-7e3b-4a93-bb31-8bf314d65aa5 50f96b7d-e27b-4f2b-8fa4-efce7e9ae693 9ae6f385-db0d-43be-a684-0af98e77f9f1 9c2f805e-55c0-4fad-be47-66aeaf3d2f48 f7dba40c-478c-4098-9019-cbabd841b830 382c800a-cde3-4f6b-85fa-432439bf6d8e 895b7b0f-5f26-4e7e-a082-ede483b1ccb5 ee317efc-fc87-4e4d-ad47-2af8ba4dfdf0 e94c8d9a-142d-4ce9-80fa-6375fb1b707a 5c23b95d-76a6-4ea1-be77-f5962eb71736 dfb01f69-df25-489b-a55e-5c2351435fb4 0796d7d2-b33d-444c-be48-a74e4b42c8bb 3bd55d1d-ee0b-453d-8f10-e440ad0f4f6f 04bec3a7-99b4-450c-be66-4297046193e5 ed95b6fd-c008-4017-bc1f-0d0cce995743 0b1571d7-8771-43ca-9271-0da9fdc35a51 8d6b572a-eb65-4b76-918c-ace36dacd9f3 aeea1b41-0412-4d7c-a3f3-9e5ed91a5710 2917aad0-de48-4570-aaf4-a89df8c44ecd dddb81f1-858a-4251-9960-31ae55e6516e 3fe6f097-1bf4-4645-986a-3c84f3bd754d 6230f1f7-81cc-47d8-9af7-b56bbb2c1ee7 5385a29f-59fb-47f5-9242-a50cae0a1edb fc6a959c-afcb-461d-a3d0-b976f3d64cac 088ca4ad-0e99-4f5e-8b4e-142252002c52 ee6d0682-1749-43ee-979a-52881dbfc678 f65aecf8-6819-49e4-8e2e-f1401487e99c d3a63209-b86d-4361-8ed2-039482ab7aee 6aadae84-5635-4697-ab4b-7f1886e5bf97 d489ab38-40a6-4f72-a359-549705de7c1a 5a958677-00b4-420c-9a8c-e6d5f8f08e26 dfdd17a8-c34d-4166-9d31-4cca6275e050 f88d0169-b167-4a18-bd5e-bb3f21e7e0e9 d872e51f-0b18-45a1-b313-c4cd599c1172 5a9bf50c-3421-452e-8bbe-7d9a4b185190 c6622f81-a7a2-436a-b421-da1e6a0da07b 00911e76-d0d3-48b6-afef-db11098e1a13 23698cd8-1614-4e4f-b209-e65316b63a0b 08deb26e-89d5-4aed-b3cd-61e28a0ea9ef 02ebf377-4664-4647-bc80-c40768b14ffd b1557412-a831-4e2d-beba-81379cc66cbd edaabf18-3ec1-4187-9225-4f057773bf2b 0402729b-9270-4ac2-a972-413356f63a55 bb54c092-6d72-48a9-b404-31e46b767a2b a76a05f7-0a98-42e5-b100-4b4536ae031e 6fe270c4-bc5d-4060-81c0-a47eb97547f1 247068af-aa21-48e4-bc11-94b64d87346f 109006b0-5be7-4eae-9b67-24e582d7965a 5ab62fb8-fac3-4e95-a622-f4d65e6c8b68 722a6330-9d06-4b1d-aab7-ce8c8fb59dbe 34dc048f-0106-4ad7-b846-d26ad5bab975 b418e15e-d769-4eb1-a058-7e0f6716f0a0 6d14f328-57e2-4e33-a8dc-f19e72d54e51 07b257d9-4369-4d13-a697-cbc78918bcd0 8df1a6e6-638f-41f0-b6ff-738a6049f941 bd8db838-7f6a-4367-8c66-8849e60ab6dc 1b10162c-d93a-4bbe-a9c1-2d2a83a22851 ecdb47f5-083e-4e90-9da4-21d6b1869556 a5e1622b-2c48-4827-b41f-c4c2ad5f856a 9af1f8f1-817a-4994-9469-429f56717aa5 fa4c1dbb-8725-424e-b157-0f84782e1506 d85ba5a8-f8a5-4c4d-88d5-a4f41b30060a f5aeefa1-88bf-4ee9-8d78-47ffb879a16c 948e312b-2977-41bd-b4f4-fa01ba0ba37f 57495dc8-a5a7-499b-9973-000a011a205b 4531bbef-0083-4f2a-b233-671720343743 d02f44e1-62d8-4b28-a560-ba2a06696e18 601a4ed8-2f3e-46bc-b918-2946b0427d5c 94d9362c-0664-4fb6-9793-823c9203c8f7 0ccbd3ce-94b9-44e8-a9ec-0517a82a9e73 e88a5a9b-e274-4dec-af09-85b691b8ad56 16c5f365-7ee1-4255-8d73-5e5370fadf79 ef6833be-9aa2-4dde-a99d-745c14a8ffc8 6e6bb55e-ed16-45d6-8bac-d825768b4578 b7fb11f0-3955-40b1-87c0-91d7decc2e83 aa284e42-3d77-4c4f-a3bf-7d817eed3480 277a4b01-3123-4d0c-adfd-69eb9acc1c26 e2cac85f-3e9c-442c-b091-e63fa0794630 5d412362-bc5d-4187-9fa3-626c9633bd6b 8d8dce56-b45c-4baf-ae1f-7be403a030b0 1b1c4d28-7f73-4316-943a-1cd2dee6a446 3769c57f-d65d-4e1d-92ad-a2f2b9050add 86b5ff33-a7f4-47ac-877f-02e8b45d9425 970c925c-4a6d-440f-997f-6215230d7d7f 9c6e2195-fb71-4d4e-ae65-a516aa56e390 5d2e3826-97d6-4c29-b17f-8f81ea5cfc6d a29e6467-20b3-474e-89fd-1740d3df244a c16559ee-69d4-42e2-b5ae-624b99b5dc68 5893dc32-9b9e-4d8e-b4f0-c149a657e9d7 0531ebac-db0f-418c-b763-b4a6f0d50b9d 2fc7fea7-f41e-4781-9411-6119d74fa44d 4bc481bc-89a6-4fff-b8d0-7c05f12cd471 c7a6958d-a153-4c9e-84ff-e3f924ac4ce3 88ca0a83-1c85-4a43-b09d-b42aeee4e48e 9ab50daa-42fa-496a-bfa7-f49d9185bb8d 4b5dabb5-b795-4c1f-8667-da6e9c8e18b5 3fe2238b-40b5-480d-b554-10cc167e645f 32ee5fa4-a94d-4390-9ca4-2c9493070e72 95f328dd-b091-4c2f-ae84-f2e64699df81 63a28a19-11e3-4f6a-a7e3-690bd329fbf0 467410c4-99ce-42d3-b6fa-daf1355d5af6 a0d32e1c-3491-4320-ba45-51cecdf266cf ec5867ff-a0b6-44bd-a9b3-2d2d586938d0 157ed4a8-ca8a-44c4-af0b-714e179c7e67 5976942b-d909-4923-8105-1f8c0a442b77 4b1803bd-d6b0-4366-86a2-236539bf4cf6 8dc2daf4-84bd-443b-9d38-5a4cc4e39bfa e5c50e5a-502c-449f-9dad-ded6f33bcbd8 7e1bffc0-4dca-4a68-91de-7b0765bcc8d7 1aa1ea3c-3721-4a1c-b87a-9906ba68f4b2 699fdaab-eecd-4118-b10a-43f04a486f19 d9c5c897-fee2-41aa-83b5-a96126c3f04b 859e21ab-a2c0-45ec-8d8e-aaffd7c0c34c 0ded8744-eee4-4e55-a2d7-a15dde85b7b0 453c23a8-8c88-4b60-a79f-88658774ee3c f78c0e06-f3c4-47ce-8251-f4a32b3bb0e1 4da57ac8-2299-4e07-af8c-734867b9f4dc 84510870-e15b-4f23-8ca7-8f165d2a2f9b 29c324a9-69f3-46cb-abb2-170affaf840b 38c25bfd-b443-4961-be62-aa6ba282824c 8a38b84a-1a6a-42ab-b101-713a3433f2a5 17d71d26-de63-458c-8735-5b855ff4c8ee 3dce10d1-10dd-4b81-9568-f3e8dc9b4eda c69bef40-b5a4-48a7-bd70-8edf63ae1c49 21fa5cca-e8c3-422f-905a-7133bab5eddf 458bbc63-dfa6-4b83-b10e-9ddc89829d45 e5776948-dc07-4755-86f5-4c94ee0d20a2 7d41d3b4-0698-42a2-bd9a-39ad8540cbd1 067dd8a5-0a30-4502-8a14-fc537ff3097a 6b34ef83-8401-4a0b-a8ca-073a6229eb90 e174c4b1-eca3-498c-a372-740a521a7db3 43810de3-5a22-4f42-9ab9-c7201d79e9a4 8e8f799b-7baf-48e9-bbc2-2bec34a431b5 ebe05937-b0c0-4c7c-adc1-cc821431ae8e 5c014c5f-82a6-4086-b8e2-0a3dd355f745 8cac51f6-87bd-42ae-bfad-27c9102a1f40 46a99ee9-4e7e-4a55-bd75-58624be881d2 e305c474-7327-4677-87f2-99b6605aa8a4 951b4936-56d6-4ed4-b0a1-a350cfe0c6ac 56785387-a955-44df-8009-ce68538df0c1 b50a12a7-111d-47b8-811c-2a9e58d21657 20dc4ae2-557c-4b1e-bb5e-19dafd93c937 182af293-29ce-479c-ad72-dec6502929a2 e4e67d50-a772-450a-a52e-b556ef91e8e4 66751f55-580f-4ba8-9a8d-d6b5aafe0cd9 c84dfced-8d51-4dde-a336-d6416c741cd0 2e3b48e4-e7f0-40e5-88a7-2ac8a6d340e4 bfb4c2c2-cf76-4af4-811c-8e13a71d47bf b6f4161c-a1f2-4b64-8101-6351e65998cc 681fc7ac-14bd-4561-b161-c98752606ace bc569686-02b8-44a0-8f9e-ada492ce7bc9 edf97c59-2d30-4e81-b3ae-6b768eec5f51 779aada2-e411-4243-b486-d4d70c48fe74 e5221885-1ed1-480e-a5df-e707ae817eb9 2268361d-ccc4-4f68-af8d-e597c82f8930 bcc13a21-5860-46d4-96ed-27651e806cb6 165d99d1-a1b8-407e-bf7c-6c2e83bce6b8 3a22ade3-c782-43ae-b01b-69cb6bf14b36 d8cf9bc4-c480-4e08-a415-e23fc185f0d3 5d3dbec8-0cd0-4dc2-9143-801e0e755056 619f18af-786a-48a9-b3c8-4ad1e1c00a99 056077fa-66c2-4b56-8531-7ae881595c90 e61e444d-6d8e-4c89-a0ef-3825c86eb376 bd05577a-f15b-43a7-b1ec-e00f82f92306 9a3cea2d-ea8b-4e5c-96ba-dfd558eef86e a18e989c-2454-4f8e-bb4c-8648d5c9c5e1 34bcdda1-b8bd-43d6-816f-044c29788c65 39e1bf8c-49ec-49ea-aa7d-4fd5e57c8d38 4c655265-5290-4171-8793-60c6218f27ec 6ac7526c-a16b-4b65-85e3-441f48d8f5c2 cc0854c9-0093-4587-ad69-530788a0ee2e c5f39b19-61a3-42fc-ad26-35ae981204ab c2189f12-9f50-4b96-bd26-165967277121 26556ac1-276b-47c5-853b-7a88cd6c554f 99632005-a0ec-489c-9f07-d760834a89f6 af5b4d29-220e-42c5-82d1-0187bb2b4ec3 e148371b-3747-4a84-b904-65b2636c7462 2af5dadc-3dc1-40c7-8be4-c27d10f6f8ae e9a06653-0e54-4bdc-ae78-c40ed3f61834 e7aa15fc-fd0e-4823-b294-5ba6d6fe338d 24d55e7c-d9b5-4b53-a123-0862ef90db96 e4725fc8-76e8-4230-a1a7-41c29db374ea 57ade85f-6238-4bf5-a964-7cf5334dbda8 a6046939-ec7e-4e91-b478-3cd5a5256fe8 21f81729-97da-413f-9bf3-512ff59aedbc 57017257-d7ea-4111-b23d-76d2fffc4908 82e44d34-1387-43bd-9669-aed3d6957fba d282eda4-47e9-4e17-bdb9-8886aa757452 44561e8e-3aa4-4de4-a576-c9eb98f7fb47 1776b22a-fa8d-4f0c-beef-279d6397b299 eac1a3c8-4a8b-4f8c-9839-938c6e29145d af80ebb9-2016-4051-b6ad-60821313cd32 10fb8654-d088-4bfb-9730-04674cde855a 7045be8e-5477-4942-990a-319d8aeb9165 cadd2b3f-666a-45a3-972b-de88654725f4 31c92ecd-a963-45ff-ad94-dc095079d9c9 dfde5655-bb09-4596-aa48-6caac0a5ce34 301ca8c3-e7fe-47fd-bc7e-fcc47e3bbbe9 05db41f8-c07e-4e17-bc9b-71d7f06b9e06 ea46efcd-5e73-4493-bef0-5443a9cee866 1cc9e3f6-5aa9-483c-8d75-171f0adb7896 97c23da7-8898-411b-8bd5-ec99a2a05b9d 8bf211f9-4d5c-45cf-975d-ff52f9a4d87e 3588af87-a3f9-4c28-8aa1-ea01453d54aa 2531593c-fb19-409c-9fa0-938d7aca02a7 ac87e102-4955-412f-bf1e-b00924a4990d 0ea9be45-0997-4b79-a3f6-7d8093a5a04a 2eff4dca-a244-4d44-bf11-cc498ff303d1 151304b4-d2ec-4848-b79e-b31a3d7e30a1 94bdab8b-905c-4cfd-9032-818ddf771264 78f79411-6663-485d-a57f-ccec2d5dfd45 5211f4b0-be6d-4ae9-aa23-56ed518eff59 a68fef23-74ec-4499-8a06-d6552ff166a7 daba226c-af85-4c9f-acb8-29da19ff7ff8 6866b1bf-8018-4521-acfa-15af4db45ec5 8a750b11-17f2-4fe7-9b32-907642198703 fa772ada-1ad8-4086-874f-e54ce12605de 1e31f8b4-bd57-4f70-8633-a944a9293b2f 5129d5a2-d851-4847-a691-889011b3b1de 4ce5ece7-34d6-4bab-bbc8-0e6552fe83e0 a87ed574-70b6-4c93-b0e1-ea083a94c654 1c4df838-7a64-462b-8fdd-14e638edcb33 21c5efbc-ed2e-441a-8ab2-f8edd6dd9dd9 b96fbb63-79e5-4d6d-b65e-db6aab7dc24b 67cf382b-9cae-4430-b755-eab7ecbd331e 66ecc6a5-3a48-4a31-a678-0467c02c61b9 a5752600-fa55-478f-b55d-a2c1216c643b d61f1c41-559b-4b37-8b50-cac2040f3ea5 bb666441-67fb-4bc6-99f5-bb8aa9bdf6e2 c8095672-9ec2-4308-b29d-1d2ebbbc16eb 9ff09b15-3825-4e48-98c5-ece11fcee7bb 35476cb3-afb3-4404-b640-5b032a919b4f 6480c416-a6bc-498f-8422-0a14105feac5 1c2f3fa3-2a21-419e-9cc6-31b754116682 cc48a3e9-534d-4b17-8faa-fe9b93ef952e 1250e95c-831a-4474-a49b-d3f83925b90d 9d6597ea-1065-4104-b010-5f4fcacdf886 a2e0c05d-be49-4b53-9faa-80f10de74874 f2e323b9-a2e5-4d41-8413-6a0efa215f55 87bf008c-1752-4e9d-a93c-a4a6112ca7ec c323ba6f-7190-4af2-974c-3aa4c8c5c848 ac76f4ef-bf81-4809-9b71-4eff92539f6f e3faacfc-1a67-48e3-9e93-7b85d7b8aa71 2547d87b-23d4-4691-adc4-139721261b62 6148b5d4-25d2-44fc-9f04-ad69e46a37b4 5e2defb4-d11f-4990-b21c-3b91a5b50ae5 7697614c-b476-4739-be38-0e28de811c28 f5b4cb89-dd0b-474c-b61b-fd9c8279e1dd 8cf1babd-2c2a-408c-8cf7-82fa69a73bcf c89cb219-d855-48d3-bbd0-e062c38c0b3d 7c080a68-7c5c-40cf-802f-58b130f4627e 19d542e7-3979-4635-aca1-b5c02cb33c83 1b63130a-e5e3-4d03-93ab-17ddf545f1a8 3d50f1eb-5690-4e94-adff-21d51b75f570 fc3d9de6-fcc5-4f80-9074-549fabd7b9ea ecef18f3-36d0-4a2c-8714-b1c746cb7519 1aba84a6-4418-47bd-a85f-498dda7db0c4 5710c673-a8fd-47ed-9894-86fef07205e6 a84f52ba-8be3-4884-93bb-1e7f395fae21 2118d442-a7e8-461a-bce4-af8a2d5ba0e7 b8de783b-166c-41b5-95f7-5cc7fbc681cd af451acc-89b5-444a-8af0-ca8a9442467d b996c909-cc7d-4e04-9cb1-c715d24b5e70 baec9f0b-4539-4784-b89d-da0c1a68eea3 00511cd1-6aa0-4fa0-b35c-1ed06fa7bece 41657ca4-4c16-4ef2-b105-5b2756744615 39d7e522-66ba-455a-b57f-e4e14a3529eb 39a0a1f1-e273-4e30-8152-0469117d0606 6fc5db9a-d2b4-4602-8342-6c4e2208c20b 79f34793-d2c3-4b1d-967b-b39fdf3c287c 93c10639-78b3-4e2c-98b9-30494974dea0 7b6c0f73-6e25-45d1-8eba-80ee6fe725e7 0ee58fbf-5f03-4134-a9ea-511747d41825 03739ec5-3afc-4e17-9eaf-382fac590282 50458c9d-e2f7-4a82-b3c5-7a708f2b3495 175fd9ff-2cc7-4a05-b60a-6f240cc065f9 64da838b-6f5c-4836-ac7e-b76640b67fdf a7a9c28a-b211-4bb4-9a54-4fa0c2b5b14b 0e781071-5853-491e-85b8-3d9ac732f8a6 77fdf2ae-11cb-49f8-9fd8-66e871567ec5 161fb541-a460-4259-bd7c-dc90aa985e11 8a6c5921-4f06-468a-a8a8-bfe96f1224ce 3927be7f-f11d-4ef1-b43f-389315937d15 1cc90de2-1b41-47dc-8134-d2447056d61f 6b8c59a1-f7e8-45f8-9c02-fc812cfe4f2e 72c2ce33-71af-4d98-a552-fd484996c684 95f4713e-7661-443b-9e7c-2b7c3a7b7ea2 d8cf9a2b-dafa-4168-be1f-21c0c337eadb 059d0535-a9a4-41df-aa62-4ce23ac01836 9df29e46-9fc2-4f41-909b-a4a6e66ab543 fa12010b-0139-4092-b9d6-26747330ea5b ab3e9e40-9cae-4988-aea0-ee6c8d383bfa 50845f48-e044-4475-b2a7-9563b7b8cd06 655cf831-a8e0-4c4c-8b50-e7a0ca42e28d f5d5dc56-d009-4775-856e-a5ec93dfa9a9 7c69ffe7-e886-4c75-b990-e8bfbd129f0e fbbfa1d2-42d6-4b61-9fca-d0e60c83bf3a 55b4434d-08a0-4b36-8d1a-b679200081a2 d783d805-1e80-415c-814c-17cebb862ba9 2a90b6c1-5b7b-4100-b841-d4b798c6da67 923aae6c-be29-4743-a161-5f6e7953df5a 602af10b-91b0-46a8-a3a8-1a19da380781 c7f793ec-b888-4226-960a-0f6c7228d508 1f0f8256-32f8-4385-a348-4f5dba3c68a4 4f07c9c3-174e-470e-9aaf-6d23ef7440b6 95c40eed-a802-41f7-8ae5-1d271ec165ef 74c80c59-0428-46f6-8a19-6e7e7cd31cba fbb20c36-3328-460e-a8e9-da17b0493882 ed3fa3a8-db9e-4bc9-81d4-55782ebf092b 927ab53c-92f9-4ba7-aa28-f2016e584021 86ed833b-44c4-47b3-a192-749fa5bfeb92 79b2522c-864a-4bfa-8414-7b6eee12d4b3 f9f97194-d4fa-4fd2-b0ee-4c8373678dce dc0f1c72-7b2d-4d50-9150-b9374fed688a f48ae298-dcfb-4a90-acbc-42aa9c2c3543 93cbcd7e-e53d-40f3-9012-2728fd0c1b91 ab33913e-2489-4b15-be04-09cf4737a8ec 4f762722-899c-46d3-9cd1-c5c818b676f9 0c582699-65fb-4bbd-9742-32c506265685 6cf7530a-8881-4eab-b71b-7cdda58abde1 d9dfa1a7-daf8-430b-9adc-4bbf778f7cc7 f62fb3dd-76fe-4137-9b13-66b89f891272 8bcc6793-3c31-4fbf-a4ab-d6fcf4257a72 3839313c-92b5-4024-801a-d7c3d5a6d237 92a2ebb3-d05a-42e5-80e3-5421b2797cfe 676f1f7a-ef36-4cb2-ac63-2eeb1c651af4 f1ff3d39-9902-4759-91bf-ea0d30490616 da1a9eeb-6d4f-4c86-bc78-8a919b57c95d 39e7a5e0-9fc7-4eb2-8cf5-48753e1983a7 3aff05ee-9b34-4b51-bbda-e9cec717b83b 9da8d2ea-33d0-413a-bd12-6c63871132b8 0a427369-8dc0-40f5-9094-e98b00ef6a1f 23da07b5-e298-40d5-b2de-1cfdaa5ba5b3 ed427601-d63a-407a-b5b7-6055ec14e445 df1c0f6d-4238-4ae9-bc58-62ab65734710 36986d8d-ce68-4f79-bc40-01408f9bdf64 146d2070-269b-422c-8254-9a5a3ff7a37b c69f0679-50aa-4d71-bd64-c64b3c8a108d 7500d102-c18e-4095-b9ae-6c29a97ce23c 8a47a6b3-0566-4fdd-b2b2-0bd63d94a3b2 f4feaaad-0cb1-4d64-9017-814fc86e53cb 8e0c68dc-b4bc-47dc-bf16-e12900b9c879 c1251ca2-9303-4c94-927e-e98821fb8795 a27d0bfb-fae7-40ce-8208-50a9dd46f951 51d91af4-dbcf-4d2d-8b19-f49cecec800e fd3967aa-c375-4017-9490-417fbdf224fd 1dcfa5af-043a-4e11-a273-6dee361436a8 c8e56772-eec6-4cc3-aa17-20bb721ed232 77771612-5ac9-4093-9224-a2c93efc5bf7 da58f868-281e-45e2-a1ce-37fef898b905 edfbeed9-39dc-4c02-8f77-5566adb8ca60 5b9232b7-27df-440f-b312-55ef2157e715 17fdd33f-27fc-4c8e-8b6b-e06afb5e12fd 25051762-5842-4c68-bf25-5b32b57def13 e268c5c4-f29c-4ca7-ac7f-bc76d984e7dd 3449cab2-8467-4d10-b8f4-a19d37441e32 94d569bf-9767-4a3d-b38c-3f5398368abe efe42b73-7487-4466-94b4-d14d74966436 bcc97e93-d634-4594-82a3-578902e9b425 ae30220c-b233-42e4-a1d1-33869b9a0ea0 21ab91f8-a44f-42d8-b779-9fb8a276e7ed 60add334-d6ac-4ee8-89ab-0ffcbe858712 fdb5fcdd-5b79-491a-8ffc-9304b5ac2399 b292f28c-a45a-4cb0-9c73-563fd545c721 84cb8faa-b344-4aab-851e-7aeebbe8cb85 996ae6ca-ecb2-463a-b5e8-91f2c7acd246 9099b9da-f4b3-4e7d-9971-c94618b93159 4058176d-0d35-4bf1-b9c4-7e1cdc675299 d0931247-172c-452d-b976-881d591803f8 bd3ab513-621a-4fab-8c67-1156913b8442 dce49d0c-030d-45d0-adef-59a3e3e48af2 53081214-e711-4326-b7cc-794f91a9f70f 4387f536-262c-40ef-be19-3d14e1b8a91f a2adc6da-296d-4965-aec0-c8230e706026 706963c0-98cb-4868-a5e7-23a1e9ffe3fc 2133139d-1236-4d86-b696-ba29c6022771 a42234ca-c1f0-4aba-92c3-066f227f35d5 0cfc0900-bd64-4db4-ada1-d96da3fb045b 0bf3fb9e-4dd4-4ef6-93b6-2a67fbba6fe6 a2f8ea75-4e48-45ed-a649-07be62863ae6 9d50922c-1a98-4242-aa2f-47d05a8e680a b21763ac-25df-4df4-827b-97cad2c4ec03 e265a4c3-475a-499c-9b2f-6a83180effb1 34fa661b-b3be-48b9-8449-a54351f7416b 07a6bf5c-37b5-49f3-b873-63dac067de57 add392ad-4757-4be5-92f3-1d3373cef304 07cc53ef-e8e8-4a39-8c2a-27e55f9b52c9 f310ee40-7ea1-4a0e-b296-6e1f2067b248 a6ffc24a-446f-42ea-be79-c2f88b1c333a 7905d6d0-2da3-481c-abb9-4e578a2062ac 47379f1a-5eaf-46be-8d51-4daeddf71d1c bb154b92-6d83-4ca9-ae28-bfd8997680e2 671a8c65-1442-4780-be82-1a25a9aee760 cf63c185-4bbc-4d6d-928f-37355d5f2a54 b5c51a3f-459d-4b28-bcde-79314d02626d 7a7ad4be-f365-437c-b7ad-60fb0895e920 bd1575dd-ecd8-4b39-af9b-fa8af5f97a73 96692d11-8fac-42f7-8a87-bf7ed5af1632 ff0595e1-3753-4538-9091-122e8878d5df 3d17f172-a92c-4b03-af38-e064f80814e1 3dcbe688-ba1b-4105-9643-48631a3b3d3a 40c44166-17c7-40fb-950b-20dccf66bc4b d5b8d6b0-a3cb-4b34-ba6f-7bd69f8c1732 39a07275-dabd-44df-bc20-ef6fa68d0e06 79bf6ae0-839a-4adc-baed-ee750c4034e3 2a2a25c9-3c60-4fa0-b66b-6f6bfd0f9e17 cda94645-8a6d-46a5-8d3b-91c71d41e12e 951a65d2-d846-4f0c-a487-da33fa630eb5 03ba19a4-fd49-4c99-8d97-d6b34c82a82e 47afc345-4f67-45d5-bcb8-754621968277 a71826ef-ffbd-44ba-b148-a8555338c32a df5b4f94-34c2-4e51-9d1f-3f91fa29461e 722ea7be-5639-4b36-a9d4-8838e35ce665 6a685006-b2fa-4ed7-9e01-d94dd0813e0a 032969e0-8cfe-4d65-9dd3-8944b338ac2f 0c476092-0d89-4e84-a250-29f4ca9944cd de5a0ae9-74d4-4c7e-a462-f7ed63318208 c291d9aa-b309-4b23-9bba-7f60e50ac6c9 9731ede5-1b97-4ad1-babd-af250071709e 236d4c9a-22e9-40b4-98bf-7d654f7fba8b 304c56c3-79bd-445e-ba54-5f10cd906f0c 06a723eb-97f2-458e-b471-c808568ff5eb 40ce7b2c-10c4-4fa9-8971-6c52cefb8126 48de8ad1-1ebd-4fda-aceb-ffa0df615663 f362fd51-f819-4c8d-8f0e-d5373b654285 34730530-61b6-4339-9321-962e3f30b0bf a5bdb767-639c-4eeb-b96d-208831371f24 f97268bd-d177-4536-9858-3ee8b596defe 49bf4722-7046-4599-ae83-5b27772c55e5 b40944f9-7351-4278-a7ea-79d8737bb67b f1cb6cc2-8485-40a9-b324-b061f7761d84 fef2d243-a75e-44ba-92d6-68e76ad5ba0e 284b8db6-36d6-41f1-9eba-ae0e022b9a05 47734dc0-8ba5-4583-b9ca-6ed2333306ad bc81d198-61a0-4bde-92ac-eb2d7e4d1404 240b9cd3-33c8-4d96-9a47-00020bfb04d2 85f1ab94-4521-4118-b3a7-667397ce6d68 c4948099-44da-41c2-b411-915f6ca716a6 616527e6-3427-4381-b9ae-6f4ad231e011 90707924-7ed1-4ea8-b877-d678f82ce901 6823fd7b-3430-4e00-b17b-019c00898bd5 0022dbf0-87fc-4585-9c5d-c089279b2b83 e95d777f-6f17-42f7-a4d4-c41909a06fc6 7e0be730-42cf-4db2-b4b3-9cfe2610da44 fa25d36b-734a-42d7-a65c-086874619247 caf9a2ac-56b6-443e-9c82-4408feea0f92 26ada8c9-a007-45ac-8a17-fc25822298cb 0eb70f9b-a9b6-462c-af79-05991325bfd4 c5d04448-5c9b-48e0-b78e-d567903e09a4 850bcef7-2bb9-438b-82b3-506e819a9e42 bed9723a-5cb3-4dd6-950d-edb3c95c4e64 40fb3049-23c6-4903-9f46-a3cbd7bbe30f 122da996-0acc-49ea-9225-0661d48d0a01 93506f55-e192-4bb8-a36b-4a938d01f01d 27f73893-c4fb-42a4-a12c-2ddce72c99fb 98548c59-f830-47cc-98b8-9b14a9fe5556 43c2ede9-b80a-4403-a017-97b555ce92ea 8a116ee6-daad-4f7c-990f-d7c7b48587cc 472456cf-4c5a-4e16-bdad-0378bd86a8eb 96e332d0-2436-4cc6-9b2d-192db8b5f4e9 33c95029-a50e-4eeb-89ef-dbfbbae2de37 0c2e6f23-9a1a-4c31-9e01-863f734245dd 427862d9-3f94-4965-a3d0-287e21e2c3f3 136832d2-c8b2-4e9b-8916-d78bc5778f8b 95942991-b4b9-4d41-b89c-eea5d1a77a66 b204f295-5209-441b-9884-f72cc3336a50 0a5807cc-ee59-4ca0-bc2c-0169473f2250 5c85201e-e1d6-4d31-976c-131deb19f4fa 935a3345-c2fc-4c64-9dbc-d6d6c8c504c8 7ae2dfb6-d514-4bc2-ad85-8114710a987b 2f6913f5-40bf-4e2d-8f08-29f71606e06e 9c722a61-19d5-44de-8cde-1bf91e9ff537 8ee6abd8-42a3-49ae-92f6-bcde2a819f4a aa08bc7b-5470-41d0-83b7-2c79a1660aa3 d0f93349-a678-4e2d-89d7-997f34a920e4 9e49d2dd-70a6-4a8e-95a2-44b2251a5c0c 7154d04b-2251-4181-a448-a20436350f6e 2776e621-6e28-4dcc-a1e4-28a19518e60d 7e69a9c1-856a-4903-ab34-bde5cb482c7e 8ea45eb5-3c18-481d-a414-e6a628c5cef6 d927a19f-2fef-4570-92b5-cc5b460b8877 0746b75e-87d5-46bb-bf67-e3a4122f6f0e e83891cb-8f55-417a-a60f-4051143bbcf9 d8f83b81-3e10-4700-94f6-e89da3684ec2 dc569aa0-8da5-4f03-8284-579170bf3f8b aa20a779-3469-48f2-8fe4-084f9d53c72f 2fdd13eb-c5d5-4f16-b3c1-6d952fc44b6a ed94f9d2-624d-4df1-ba38-cff97b88790b 0cc7cf62-d869-43b3-a9fe-b003df150264 eb9115c5-cf4d-49aa-bbd4-169b942f34ee 9b30a2be-9a6a-4dca-90ac-7d3cf639b078 7cbe83f2-15b8-4cb1-9f4c-f590fb9c0b07 cd2302eb-3166-4258-82be-cbdc8945e318 e7c62413-7182-437e-ac1a-91e9106f6519 56e846ba-06c2-401e-8eba-ba2d8f5da2ef d7b09af7-2288-401b-9806-8be86acb25ce c6993079-8f8c-4a4d-8138-53438c4a2739 848e32f1-6c8c-456f-9a37-fd2f0a95c670 2e66e97d-b2a4-4ad3-9d36-79b547e41b15 c255b34f-7146-4cb1-a640-70e30a4e5ff0 3d2e1ad3-e649-4faf-ae1b-f40d22ba5418 468a15ba-2472-498f-9158-85faa927a3c8 b9924c40-b3ff-4fae-81c7-a56c288d5479 e3d689dc-9b99-431f-bfba-6b0d1e73a9b2 829064c0-a582-4e9b-8f65-c9d88a3824ef 04638407-ca1b-40c6-887f-e9e62a99921d 131b74d0-2f18-442b-bf60-a6afe81cccb3 ab768dca-4a1f-4533-a17c-7d20b3787c70 85c31f13-1dcd-4ca0-8557-769e1993de00 6c28b085-d57f-470f-b824-7f46a4719c74 380f6771-4557-4ef5-b585-5d9ceb04d213 5a514ed6-6275-43ee-aae8-ce1b5e04d301 1882a15b-bf10-47fe-94ae-94c0a0ffd362 7bc7c369-3201-48b0-b5a0-d2ebcf7cfdcd 07652ddb-ef1d-49a0-81d6-8197e720877f 821c0bc3-b29a-47da-95c6-ca16b5f3b97c b6fc3020-7b2c-4465-89d6-36eca7ff1281 13ad03e6-30a6-4881-9548-90ce51135af6 21087764-29d7-4c5d-b43c-dc164c849500 15c0bf36-5a16-40bf-9bcd-73a8926779a0 4bbac5cd-dac3-4489-a21e-8b87ee6c48b6 cfca1f2f-0308-4cf8-a807-1e6daf9c48b3 4b2fbf31-db85-4ecf-bdff-b711c281c735 3d279123-502d-4c13-b8f6-e0d35cc7d8ee ef924652-3e57-439c-86e7-3312b4f29f6a 1cca1480-abe8-4ba8-8bf7-d7a8b679acd3 42ab236a-9bc5-4eb8-8a5a-9a68a02e970b 680a4782-36c0-4212-aec1-c5364871361d c01368e8-3da8-4e7b-8d36-39f8db3eab50 c6ca339b-5690-4f55-96ad-db91bc47d659 f52d26e1-b0e2-4f8b-8b4b-265440c68d52 878236c1-a5a4-4e63-a7ba-c88437e2aefd 79d12e47-e268-4fa7-bb49-75df51aadcbf 8e3df9f4-0c07-4414-91a8-a1299fe4d242 d993545a-186c-4e48-be59-95637d5abf3d ea34bbc4-b10e-4292-b7da-daf906be05f1 4f85874c-df0c-4405-a4e2-7226411311b5 bd4ca2a2-61e3-44da-8f41-62de90fe2c99 f50dd228-89da-4287-aceb-13b0673ed95f 39c1cf95-94a6-403a-a98f-8732ade192e2 11022b96-84b4-4c17-9308-d89d65895f6f 43abbd1c-e1a8-402d-8f3a-7f1dea84bdc7 a036afb0-4f58-4319-8720-e3fb6d94bf18 6b7f96e6-f767-4809-9aec-61f47030c6e4 0e63d4b6-f6d5-489c-a716-c9d08a17753b b7169f83-320a-48e4-8608-d5b10517c768 4f25ba36-f917-44c3-bffe-c0731c1092b8 42dce170-8381-4b51-ba16-eb6e213023b4 5dec1e62-8699-42f6-9eeb-e44ae4d45b04 0a325c74-81cd-4d4e-90f1-ce2bd7e3e95b 7632b929-490c-4c8e-b24f-7aa5f95014d0 7469903d-4096-4940-ade1-659f49dab951 6720387f-794f-42ac-8e45-378892fd560c 3a4c5216-7a8c-405b-bda3-385c22175cc1 e86371d3-03cc-4e6d-b1ea-4aa26ab8b94a e32cf17a-ccc6-45f1-9615-ff194b98ff10 ab651a7d-77a8-4396-bc1a-2c94314389fb 9c276c14-6ed5-4122-bf7b-5eacd5637543 b9d0903a-9fc0-4a27-a0ab-4d1691127bf0 efdc10d8-8203-4aa3-b7e8-4fea726d133a 67c80293-8ea2-49cf-b2b5-d75fd8f7a45c f4d427ca-1dee-45cd-8552-2ddbf0d056da 943a4da0-6208-4567-9939-ed23d9e56f49 c04e218a-3c56-4887-9fac-456b133a0ed0 2b5b3590-ef6c-45ec-9c73-297dca70a5a7 006a4ee6-1ab4-41c0-a601-d4f7eb579498 b7924c38-3043-42e2-b564-d25e7a22f57a f69e3f50-9924-4fb1-93c3-c2527fa54ea7 d39603bb-d1a9-4abc-9e7d-9870189e6c89 b96c0856-0eb2-4124-a744-b61ad7e30ce4 b78c1183-2956-46bb-8b27-a2c9a7dbba7d 402c8f3a-e413-49f3-92a2-39a4ec3d3710 d450d834-ada1-40f1-85d7-21ecb1cf534f f74e0906-b3f8-4e60-bc81-b34ade111f81 076c17d5-dd77-4197-8181-a7eb400f9bbf cbfd9c43-e154-4009-9833-86ee350a2f14 33b93b8b-4e97-49a4-9e83-58a165d80fc2 337f4de2-44ee-47a3-977f-c4f1a086a2ae 2c4a93b4-90d4-4818-b4af-7ea90193d411 1c17a364-9b63-479c-834e-e541ff6b1258 2da2dd50-2a6f-4ea6-93cf-a07c3fd80ca1 8d036bd9-8a56-41f6-9c99-3b79640d0d7b de380b69-f88f-4acf-9554-8276560ad875 02c8ec87-5fd0-47c0-af4c-6224bbfee1a6 7d6aabdd-11dd-46cf-b680-5a5daef38b3b 62768054-624c-4215-904f-8b8551d849bc d9b6a25c-0bbc-40a8-ac4a-cd47cbdd3db5 235654a1-e867-4720-933f-f4a6709bb25b 70847db3-3485-4421-9fbe-f464d7a43f18 ff0e6527-0a9c-4c1f-95d0-f6879bf0c8e7 4fbc2e36-cae1-431c-bb1e-f8d8fb369b63 5f105a57-fac8-48c0-bbfb-61d51efae2ab a26314df-58db-4385-8b05-556bf80c2b60 c9ff6dcd-4d54-485a-9211-e1c03e82005e f0c75bc0-0984-4370-b2ab-2abf37b7d6b6 d7a68557-b78e-4d80-abea-9c7a48d487b2 e83128f6-403e-4bc4-a899-41fb356ee422 2ecdedf8-e87d-45de-8824-33b8c09f8263 df0b8366-218e-484b-8fab-5f2329dc3841 9c01fbdb-ae7d-486d-8b0e-ea2ae2a9c34c 35fac1fc-e3e8-4561-9da8-d60dc42d9fcb 8afff39e-95aa-4b4d-8946-f0b53ea8fcdd 1ee40407-15ae-4db7-8834-2105b7e17685 805836e0-4384-4bba-8fcd-a60d8432021c 68d5fd1b-8097-4073-a3a2-08fe8c46558a 34590caa-17e5-4cbf-a253-7717fb347bc3 c0bf422f-81e5-4bb7-8cce-b3a9a201bfc4 7f9dc7d2-9be5-4dc4-b057-c2713f801ab7 173be3f6-1433-49c4-909a-5785529a8b2c e849a486-b4d0-4d5b-8be5-16971753490f 6d6c00eb-0a54-41e8-91ca-b21fe9c0c649 39b8e462-b54c-4796-8354-dc8fb24c5056 bbd0a282-ab5f-4f7d-a285-6161b8b9cebf 173dd5e6-7c9f-4f5e-8096-8f969d1da24f 5a28ba2d-fca3-4e4a-9657-eb5cc80117d4 18404e91-94df-4816-92f4-e6671ce82cde fd813da1-3647-4d16-bb71-9ab9bb5d2d1c a0490e0b-14b0-4d19-a11b-6adc3febf4bc fe50c1be-4110-4a5d-855d-3bdc3a271acb 59b8b443-a3da-4add-8e8b-971ec91b2fd9 5623f9b7-d384-4d91-a0ee-3a96e3eaa130 5096b1ef-9507-455e-8fbf-5fa96b3a13d5 4d74656f-5a2f-4455-ba4b-c1d189f86c6c 17b286d9-5c50-400a-b6fd-e9859e5ac47a 8aa70a1e-81e1-43f0-8f06-9336c7aa8b78 0f8d54a9-5f9f-473a-9612-e75f26b87c12 f1b383cf-9061-48d3-ad23-31bfbd9e885a 66ca9705-a08c-4a52-a419-b6dd0c726764 9e544f21-9dfd-481e-b454-58e0946137cf 74630e6a-c74c-40b5-b910-b10ec7d4cadc eae686f6-aaf2-401d-8cc1-37551b9f123c 2b43680b-3077-434c-9d4b-9e557c4fa88d 8aba61d6-c30d-403b-8daa-2fded9bcb0f2 a94e0dd2-e680-4a32-a263-1dcb06551d66 c18ef35f-ccee-4fba-9f1e-6c61fc3991ab 4b9ca99c-3f42-442d-abd2-29b304eedb1a 40e4ed34-4141-4421-86a5-ac226361bbd5 0b117d8f-2ff3-4d04-83f8-5d0a838245a2 bdaf3a83-1e88-4dfc-8211-de9514cbad8a 000b346f-219d-4162-8fea-1ca980320256 d710fde3-dd1b-4de7-a66a-675a36212572 ec9b55cd-afaf-444f-9f6d-b507a93b1b40 7e7b351d-8028-47c2-b693-020f097024bc a2fe1f19-00bb-42fc-be03-c7dc49bb6e33 4d7f88d7-1ed3-4d78-9164-ce7b0a8394e7 c3dcb183-3c05-41c7-9826-ec078ea664e3 b57d986a-c865-42c0-98e8-d3e2b16879ac 2e051f2c-4d9e-4bf6-a093-5b8da0238205 d1f24e19-8a76-4abd-a971-872abfd7a846 e3bf6fba-dcd2-478f-baa6-ea4a65254127 b0b0db11-4cb2-42d9-9f4f-ed91f8be3ece 3df138bb-9532-4416-9dd5-86e8bb1d224d 4542b9b1-5268-4572-b0b0-397a2b85637d 45316294-0876-4171-9099-caa3f56c785f f4e79aa7-502b-4d0a-9e8f-de5b79269fb8 37adf635-998c-4a34-9356-5d841ea8b861 0dc02017-75ec-41e0-994d-f6f3fad72196 8fdd6f2c-4222-45c7-b983-c73dc8466c0b 99c93f88-3b50-41a0-9fde-8d91b345d6a0 153bb0df-1fab-4b68-a237-af8d56682b95 f0632f60-e24b-4c34-ab21-bc98b4e3ae38 d5a3dfe9-f645-478b-82d6-426deefe2907 f3d8d803-573c-4cb8-951f-7b84f1f9b84a d1d614be-d517-404f-b7ab-d551d8ec6fc6 a238ed89-ece9-43ac-b8bf-808f146b0744 182adc49-dac9-464e-9689-7299e5927fa8 1e3bf01e-16e6-4c93-8618-518c61a32154 17e9051e-d116-4fa3-8fc8-8a98f200a44d a326eafc-10dd-4f9f-8aef-b932899a0e9f b0de0ad8-022e-459a-962e-e1a7d988073a 3e44d131-6131-4b49-ac2f-ed9b0b6f5b94 a9024aac-6448-4718-81ba-e120a25e3c8c 19be16a6-1650-4d05-90a6-c39d00a1a45b 579d113c-7b7c-4321-82ee-fdfecd12ae11 a8c71a32-bbb5-4bb1-8c8c-7ac2b17c1187 e2f348dd-39e6-4c82-8792-b91620d97af2 dac78d9a-a8f7-4a6d-ad8d-e0a2c78c0f20 2601ec67-8871-45e2-b7a8-bd8179259dfe 44dac4d0-4d1f-41e4-ab83-ea8b6543f819 756992d4-5806-4cf1-86b8-33f82b406d28 11c0d7fe-5b17-49eb-9078-eac853cc6351 ddbfc07f-5a80-44be-b61a-9a3a4708cbee 44a4b95c-db16-4137-9671-0683627449db 7bfb5b8d-cf56-42a6-8826-d3d66a6e9a86 b24d9255-08ff-4d21-95e6-67f2ccd97231 7f5c5957-29b5-4ff0-852f-c5f4ef540d6a 15aee5e5-0016-4818-9df4-12889770b303 d7a9d7f0-f02e-4572-8b95-690396f35990 307c54a7-c86c-406f-a740-55fdc876df0f f9dbc703-2010-45e2-8e5f-01c3ae9673ad ec4b7e0a-7790-493c-bf12-2cd15682c71d f063d6cb-d6c4-4b2e-bcbe-195000f83348 0633e62a-2b22-47ea-9869-8c5f130bdbb6 548ca6f0-4a0c-4101-b5fc-b4670e0bb294 ade07a12-f907-4bb5-8fba-3c3fd97f52ab cc12ea3f-8ea5-4f4c-a535-234226c9cb0c 68d12015-22ef-4ac6-b38d-2b2a801c57ef 70b5fe13-a722-4472-8111-9308ef946784 c5eb34f8-864f-4b1f-8e0e-54f0ee6f996d 7afc3bd8-354f-46ba-a2d2-0e0902853b5c ab541a05-2223-4cc1-b9b6-64e1cb8e147e 4ee60c78-8dba-4c9c-93e1-f40aebfd903d 9053bbf1-480d-4c2d-a709-99799d8efba2 dca4569d-d84b-4382-88fc-2193ab15e0d1 5ac58bae-1bb8-4c9e-95d6-8c5761a08fc8 5c041220-b51f-4715-b7d1-a9a9f81a8ef9 ff09087d-604c-427d-a68e-1db02d73b819 a9a7e267-818e-41f2-9adf-72d80beff560 72bfe9e2-083d-44ad-bcb4-f79dbc6468eb 488c2686-9eb1-4201-ae1c-45aabdda53c1 7c05b87b-a85f-40b3-ba2b-fd8dcad7e956 7dbf7f8d-600f-4ae4-82c3-e29980af0b7f e07ee76e-2d02-46d1-93b5-b99b689cb8a1 e3b45c41-abf9-4313-9b9c-b4d88a271f2e 82786a3a-2934-4b4b-8b5f-2d4e809b47f3 67a1ef81-3207-4d8a-a575-6ad3341282c3 fb5e7dfc-a71b-4033-ae92-fff2b6cceeee 284e65d8-eaaa-4dcd-b587-8a25f23464d9 4012acf0-603e-4b38-ab36-0102fcdd30e1 db328fdc-bdaf-4a79-bdf0-ea572e5adae0 b10e8ca1-4646-4122-87e3-0e31ff0e3325 321b488c-2da3-4a8d-a89f-3177a309be35 147715c5-12ed-4af1-bc6d-448d5932cd09 d59cb86d-707c-4c8b-bd9d-3beab03391cf 4934ca70-f982-439a-aaf1-fd2b6c19f112 7e945b19-c66b-44a7-979b-2882a796f943 dec82389-0a5a-4adb-ada9-ad9f68120847 e29ce1a0-55d3-4528-a2bb-8feb11e73137 96994692-127a-4637-ace5-53471d4c7df7 f7a13a54-aa04-4b50-8f85-7770fe8c6298 1aa27f9e-c32b-435d-83ac-863794b37249 0af1925a-1db4-4f0d-b779-61e980fa5bc6 ff17268b-fbc9-4291-88f4-dd662d981766 4c799c65-225a-495d-8629-0b0e0878124c 8d99cc30-a80f-4bf3-a73a-c6310da54e53 04462c10-8ca1-47c7-bc72-5faa73482f45 d51cf831-c829-46e6-9ca6-f9c9915ab620 06de8964-b3d5-44ff-ae6b-59f23068635a 197f77a5-e8eb-4964-a048-74204b2fde53 8bedcf5a-1a9c-4332-844e-33bccedf05ce 94954029-846c-4f59-a55d-a4682f791815 9ef37e2e-d800-42dd-a5f4-6a269194fef6 56fad642-c3ad-4cdd-adc5-03501f65b1cd 71f56876-d640-456e-b373-5e091152baba e69c0cf5-9a58-4787-a3a4-e55256d3f113 9296a708-5750-4bc0-b259-209ceeeed76f 355c5f93-de2b-4398-89bd-ed8a49fd39a4 ea838de7-6b2c-4c5b-86cb-8245eb76dc18 2e58fba3-98a9-434c-ae3e-7ba69d96c2ac a7f8fc4d-81d0-430b-bb33-66d65ab5e984 054b500c-f996-4559-89e1-8c51f571ecd8 17b64c11-6147-48be-bcaa-f5939427c22a 176915dd-11e3-4cf5-b25f-99d9e9e9e75e b17891a4-d0b4-4723-b69e-f387e874c35b 7ac847f4-5778-470e-b2d4-3c24e0a8c8b7 41048c03-d865-4a60-867f-ebe187aec2f1 8c119fb8-3570-4f52-9299-3bd77866c80d 9f604177-16a4-45ab-b5f9-54f3e59c6f1e 45e586a8-6afd-47b8-a328-7c1ec3ec2f0c 4f87c75c-779b-4107-a0f5-538578416d95 bb9107e4-e291-47e5-b5e5-567db0378090 a2922861-95fd-4463-ad86-dbd1509e2a69 b0a3dd64-6ba7-40c4-b129-e6f8c45cb03b 0c9c81d1-c66b-4c78-b089-27fa13679131 1faeabb7-95e0-42bd-a5fc-4a5b1d32ba28 3faa4f70-5557-490c-8784-dc09495ae4a6 9e24b533-35e9-4d73-8e0d-2bbf2e9b8f8d a26530ae-0af1-4063-a6fd-9d134f621967 fc50e43d-a981-4198-85c4-0894519be1cf 50b55747-96cc-4003-bbe4-20a6a043fdf0 8d1a3793-c810-4178-b0d6-04a31da32d70 bd31fa73-41e6-4e0a-8eeb-c5c657f75f1f a65c6253-d866-4b0f-81fe-f062e00ed56e 05199779-1d62-450d-8bd4-65613293ab98 0f6bd81b-1c6e-4597-9a04-ce6cc31d55f9 7148a9e6-d635-441e-a1c8-c05f7b7d6aa8 e85d757f-dd0a-4a89-b70c-6327c349dd9e 6bb452d8-75e1-4960-adf2-8a778e72614f 739f57da-349e-491f-b1b8-5e023d20c69a a0505df3-dff9-4bd6-aa3c-9dd8ccc05ac9 e0b478b4-7bbc-4853-920b-4c02bec12e4f a127d09a-6dd9-43c0-bad6-cdc7a6db492a 10a54c23-39d2-4b17-8065-a7676d999a5d 700f6f53-dd48-4391-882a-d5735e274cec e04b37c9-5532-43db-acbc-1c88bb20bbdb a2fef2e3-ab1e-40a0-86e4-7811cca9903f de0d76ee-4ec8-4dd8-8d4f-0452293a9c3c 39a3108c-9795-4c7f-9703-38c866ad3f6a dff7bb21-1c3d-4cd1-a39b-6abb62dd57ee c046cd7f-39ee-46cb-ba85-61b2c504a5f3 0ac3a887-222d-49c9-9182-e25fb7cf53ae a9742d9d-4e06-4ab6-b297-bdecc515facf 3ed91e8b-bfe4-46a8-a4c7-9b3aade73f65 cde7c3dd-1457-4891-8ab7-75135bbefa4c 32443e88-420f-4185-8e40-288ae4a8ab0c 471147a6-92ad-40d3-affd-b5d4627cb524 d575dce3-8491-4468-ab0b-eb3f3964d103 9fcdcb54-403e-43c6-9e93-bb366323f7c5 8a05c03f-5476-4b0c-8d5a-a050d1aa9663 cd3cae53-5809-4dc2-ab51-10784aa17048 e3a4e798-8f6e-46b2-81e1-591e48022a68 1baba068-ece8-4b22-a006-faf713386739 7f0c0257-fa4b-4f85-9c2b-4170403aec15 82b6ff48-047e-49df-8b18-a5a124accc5d bf5ea98d-4fd6-4e91-aa71-65b8fc92da0d 927394d9-d181-411a-abe0-a0cf00688007 2fc57b6d-9aed-44af-bd87-cb50c5d2e90a cec09646-6d13-4992-8dfa-7ea4f6d49a94 b3cd4631-4b7a-4b22-a363-dff289afab08 3da204e7-d981-467f-8d01-af9da69fe82c c28aa9d1-dfd2-4a2b-a3e4-cb32cbc8c61e b347f746-9f8c-4402-a298-0194e7eafb42 4b838f00-934a-455d-88d1-e381752f5b02 fc0c66d7-a095-4124-9a7d-110c8c8c357d 50fba8b2-799f-4cbd-b023-906ff3b9cd2a e8a33de0-f5b9-4a56-bc6c-d0f35546de4b de9d0729-d8e6-42d8-9eff-9e25c56c50a2 2ca31070-571c-4fac-99a8-20af70f1af30 499549e3-0438-46bf-a45c-883db892461e b6cd5d1d-e830-49f7-89d8-c18baa9940bf df8ed8d7-0d11-4f21-b6ac-5eaaffa7a5d1 f3d3f7d9-e15b-4874-b3e1-2680d1d530bf 2967be83-1c14-4f73-b4ed-62f575452df7 cdf495f7-f798-4d00-bcc7-a49c97bf6500 4b0d8962-2f00-4206-95b5-471d5adfe419 7a4d844d-3244-4978-9378-114b1ff0bb7d ea91a4be-2a02-4124-b380-96f6a0a0a982 25c2628a-0322-42ae-82a7-975cfa43577d b59daec5-2615-4e87-92d7-0bd48a5c5845 4f1df04e-a558-4c23-837a-15a39deed3f5 63f3a9de-1e80-4e60-8662-99f62dbc852e f39f6eb9-ad4b-4595-ab08-f3b749fb66b6 b9044a20-3103-4155-b14d-3a2212c8917f cc397c3b-5e4e-4fe4-9917-79426776d46f 792dfca8-1098-4a6a-a6c4-36a386c7dc4d d98c25c5-65ff-4164-8506-7dfee30ac626 7fce1445-abec-458e-b290-f2d729d3ef67 38b77486-efc7-464f-8480-a236fd960304 940e7894-9e81-4ec0-96ac-41c20879c2d8 7418e1e4-79ea-4b18-9d4f-13ad969054b0 4b7fa8e1-3b5e-4270-b973-2d46c4aabc47 50992757-ba94-4bb2-84c8-3192201f712c 8d43eda2-8310-4b4f-aaac-d99936966deb e2e832bf-8277-415b-964b-817933c3714e 1a2e8561-8b88-44ac-829d-78b31cd5e76c d429dd53-19d9-40b5-815b-8e4d6d6fe951 b38e54f0-fcab-4b6b-a0d2-daeb49fe2302 8fbeadc6-40ad-4834-93de-877fb43f5cc5 2355342c-cd47-4199-b944-2af056dc1524 beed5cd2-5a1c-439f-beff-e27b9bb53333 4c3a4a02-9609-4c04-9b68-24f709df9c41 ea072185-92bf-4d58-95d2-f83bfb1cbedb fff3ca9f-0b0f-4339-b5f8-67579c0dc1f0 7ddf640d-2eca-48d8-8289-e8f1e8d1ceef b81cc2a4-e02e-4898-9e9f-60728141a678 0c1336a8-58db-4f9d-a095-e7bca1dcf682 629bf54f-ed7a-4205-a677-fe90da76203e 00b000f1-c116-4190-b038-87b2fb780798 64e96455-e7dc-417c-9a57-dfb2390a8882 ebe9868f-9e1f-4ed4-b3a0-4e29e225685e 3eb538d8-739b-4eb6-a27e-0342a4dd0dca 8e2ff120-9368-4e8c-9b6e-1db9ee3af31d 58d433e9-6ab6-4341-8b7f-1f0282201cff eabea480-a16d-44f3-b54a-bb49fea1cee6 e5680fae-10d6-49f3-935b-23006822ebad 86c72664-7722-4f94-9fe8-543a6c738cfa 5108aa3a-662e-479c-a39a-f001c74c09b5 831cd6fe-1d50-4130-94e3-0d3f27cdf5b7 2cc39a5a-2de6-49b6-be56-897eb76a772d ad6d58eb-5932-48c5-ba36-8cc547d4b034 9a2a0aca-9799-408a-8891-1567de1a15ee f1e82f4c-a25c-4792-b82e-6b778a1f8348 713623c1-87a3-4b08-8a7b-cb94d8e60bb1 360ed0a3-16f6-4696-8704-3ddc51952116 36fef1ac-aa3b-40c3-819c-3302b07b8ec0 a808dadc-50aa-42da-8b0d-e872b6cbdd91 eee572f5-f95c-4e9e-bd76-1185ba2c101d b47cd4f5-c376-4225-a7eb-f36a292bafc4 35ee8d9e-6d20-4cad-81f5-d767d8c660bb a3c9c8bb-d5ea-4481-83f3-a7d9f9444fd3 5c61ae7f-105b-446c-a2aa-fa0551251108 1801c59b-d51b-4657-a774-6553f6371a79 f9169049-ac45-4a4e-99ea-e61306ad2f50 ff304008-a528-467c-95c0-b821a49106e7 6b61873b-691a-4921-9eb6-eda85fc55782 b93ddf59-13a6-41e8-b558-bcda10a83f49 24c07fb6-11be-4b82-a2a1-15dfe32f2464 7a16c1e2-36ad-4c71-b00b-be46ed68ec9d f81d2a8a-a39d-48ba-a461-77f972f187ab 008107fe-6645-47a0-aa4d-aef006944fe6 a41e3d10-148b-4f9e-8d31-afc753fa5ec4 29750546-61e1-4a54-96fd-4601e81fccef be6caf72-b8bd-4e4a-8402-c3732d23cb12 fe210604-4482-4433-a3b5-62f4fa06db20 321acddc-4c49-465d-8296-c9f1bcca334f 9f36bb54-0eb6-4c61-8095-17be6a67a728 2815e559-9a44-4d97-b55f-301260e70997 d0e81d28-f734-4f7b-a390-687a109fb142 fe1bf921-7088-4680-a96a-2ca55d909d7f 827505ea-024c-49e5-bcbc-76aaa05006dd 9526e3e7-82eb-480c-a1b4-681cabe02dac ec61acae-4d37-4797-a1e7-d89517a57910 3c55b007-08f5-4c73-a9f4-f23e3fe2d8cc cc84dfba-bd4e-44e6-a83e-fdf7557c5898 d94d51ce-4481-48ab-8e17-8f46fac229f4 331fff38-93c2-438d-87e0-8c9ce2edccb4 32f90b04-181a-4643-a9d5-0d87ee4965da f40f4920-60c0-4157-8d2b-18c6e071fc77 0b51b953-9b51-42f8-87d4-88899a293993 8fe54794-6b95-415e-9005-10066cf3431c eb4735bf-88b6-410a-b0ba-4f83005c7091 83ed8f28-377d-4029-928c-6ecb35e39db7 ffdadaf4-fd6f-4bfc-8847-a89cbf1cbcaf 21bc1b31-eda9-4475-9162-eadfe372f9e5 ad095825-ab1b-4c65-b2cc-1a0d9ff7bb3a 7e0f37b3-7878-4fbf-9f1d-3c8559a9b056 c3835883-266a-4374-870f-aa9195d82216 bedfe6a9-3a8d-4975-ae0a-1de1c1b4759f bcc52487-bc51-4ce6-b9c1-9ea9bf6771f4 28944691-0ea4-428d-abe9-e41992298af7 aa1d1b92-fb21-453c-99cd-6020c6fa3677 8a6efa13-e3c4-4b55-b953-ec4204ddfe9f 9a46425b-07fc-45fa-97a5-222d49454789 7027c1bb-92bc-46f8-b60b-331fd03cae16 267ebfd7-3b52-4e94-9f31-23e3d964554c 49706c86-42d2-4e90-84ef-88103b5d7b3e 31dbcca6-c8b0-4304-aa5e-f6467f952bdc 70369a2f-636d-4447-98b4-e1c18f3dd35d 9150a26b-63b1-432d-9a81-b41e1aa0e7ea bab2ca40-eb58-46c2-80e5-396e018bc834 91d7d9a9-5ed8-4cfc-884d-28af9cb61fb7 22d6c25e-0039-4b99-89e9-d40eb13a16ac df56c1f0-d526-420c-bb11-95118a5a67c7 2857dddf-daf5-4988-8b81-b6fa21583cfa 143df380-1fd3-41af-a36d-215454acccfc 96500030-3c7a-4e88-bd7e-e4690b7859f6 fb5ed87a-543f-4206-a590-3f44d60711b3 4d999d5d-0da1-443b-afb9-ccc8e902958d 9664d08f-dc3f-4808-81a5-57cb88bf46ae fc873814-79f6-4807-881e-d3e04f3c30b2 4abdbdf2-289c-4b23-a147-4beedc63005c 09b1b963-74c8-455f-ad3f-5fecded5d183 8317f30a-152c-40e7-ac4f-5b41b5b494e2 775b8010-d46e-4c47-bb86-139ad60b3c53 04403972-4c6a-45d1-b987-7a8060f634a3 85318903-f2fb-4ca9-9f24-759bef98e92a a25dddef-a149-4e9d-949f-6d7d3a7e3b3e a3ea4622-0714-426e-8ee8-0b6a3bb68f5b b7bc3e3d-3b81-4623-80ec-539ba557c5d0 e73aef68-744b-4d28-b281-754dd8015e23 a5e03a3a-51de-4be1-9e8a-287d16dbc4d8 b0ed8c6f-c343-42f5-a536-f14c77d5b528 e4945503-222d-45f4-9857-e5b855b63a1b 432b3ff9-0341-4062-9cbd-1f48693ff375 f7220bf2-2061-47ef-a503-96473fe10fb3 8f9b8fd7-1ddc-421a-9e95-22ba1a712209 685978fa-a63c-4d35-b9e4-603b626f7fda 8c74a6bd-1416-4fec-9dd1-19db799a612b 43c5df19-d51d-4ab4-93d8-ba5dae2a0a48 7a778ea0-dedf-4645-8b36-d7794bb2d46d 6a9a215d-d65e-400d-8213-599d322b28eb 8e9e0823-32c1-4fbf-9bf6-0a8a672d3df7 c6540a82-8736-4414-813e-7fede29269f5 a8693002-183d-46e6-87ab-7ad538cce01c 41bb9305-7713-403e-aa11-d12976bc706f 1524d179-e55c-4bf3-a699-626750571bb9 18f1ca43-1738-4407-b2e1-9cfa0a040d39 6234748c-3f90-4086-ba24-3a4fd5a70ddb 2ae470e7-ecb7-42e2-be4d-481c581f19af 7f84a9e3-e844-42fb-832b-a1d620c442c3 fd26019a-c652-4484-a094-38fa8ca2d81e 69e4e531-301c-44e3-aa2a-bcda689fb28a 0b980e7b-65c9-41e8-8c78-8d4ac822b286 db762dda-5721-4aa0-bff1-3eec8fa0d265 55f3cd19-5013-4838-8a94-7a50e9622cb8 f2f6b4a5-5174-4d5d-8e5f-8217176f1642 00c2ae2c-013e-4822-8e6c-cf038a260a5d 5fe9864c-2307-4682-9eec-e063bb0e6e09 b6b19e0f-ccec-4d97-aaee-2eb95f434b2d b118de90-72ea-412b-9fac-fd925728dd9e 842168f2-257a-4f49-95d1-fedadcbd4c27 d17b2716-3253-4591-b3bd-019e4ef9e4ad ae3f9b2b-35de-4ccb-9740-cdd7f2ce5f27 05984300-842f-4db6-9881-40ee94a06ba0 1a6868fb-c8e8-4567-8321-6f7af1529c95 54184ecb-3698-4d01-889b-3966d42ea73c 66da70da-a989-4bba-b827-bd3903b6ed57 af003481-47de-483d-a837-159c0bd51f1c 2f990d97-76f0-4335-af49-1783161cbafb 664ea56e-da0e-40ad-abc8-1407362a5127 f10e6594-a126-400f-835d-a3cb71ce23b1 79aab640-71cc-4d75-ab1f-d6d293bf3bab bbe5a75b-9868-4f60-847a-8d480e564399 cdcd3f54-4459-4772-a9b1-82702eb2067a cce1efbf-a3aa-446b-8583-79163e7cebc3 3ff886c3-c6e9-4935-9060-1779f4a892c8 dfed0ea2-e4d5-4f96-9cbc-4c5a5ec9279e a68e388b-aeb8-4b16-936f-2882820a8f76 8686723c-1789-4d90-a5e8-2d69b8243e3a 49c55439-b350-4415-a17e-2f8edda4f800 fdd6957e-369a-4d0c-a1fb-57e1d6ccce5b 65a0f405-3ce8-4733-b5e9-e59b6c1ad848 c6c6004e-1fe8-4f18-bdd4-37c731db8446 ef325013-cf16-4063-874c-16fc89f6dd63 6ec42dac-29ce-43c8-9d11-e6c1509b46a2 cdadd9af-0d1a-4ef8-a436-7c1d984ad4c4 cea7970b-7359-43ad-abbf-8b244595b67c 4d9392ba-c81e-4fcb-9380-d926a96fddb7 67d60bd2-f90a-430e-9b6b-561e01900289 75f9392f-856f-4877-90c5-7e85a93673d9 ae89176a-5326-4523-9bd6-e8ed28f882f2 e6adf034-27f8-4984-b49c-1e849ad45492 3b97a722-0618-4ab5-97d6-8e77f00416e7 1f705fa6-286c-4090-a445-96e7601dbdda 0301ad0d-46a6-43f5-a969-f50d07ffe6f3 f6652b05-5fac-4aae-8e78-1076fa698b33 d4c6ec8a-b416-44c9-8135-005ba8f1d1e1 f1be8072-c7d7-472f-acc0-e30729415da7 316409e0-a126-402a-9968-018b75ef26ba 61b9db28-d5cf-4e9e-b046-3f190a6641b0 3721f324-cdb9-4811-bec0-443a05190a2f 51365616-220a-425a-be87-4136af87cf04 1c6f58e8-7438-40d6-9231-a08de3589fef 84bb5e94-13ef-48d8-9f3c-6f103e499c55 ea8abf99-5560-4333-a895-b971111e5cc7 1c12e5d7-9848-4a04-9e3e-f56995a2ed9b a638b4cc-79cf-4e2d-b9ad-14696f954f5e a65a451d-c053-476a-8db9-15058579e635 2ec1232e-5b46-4c59-9977-555be6213a56 274cd362-3465-4603-8f32-ce88ec86c1c6 1d7e950f-e298-4212-86a9-a6442cb1e028 ccc07435-6eed-4ee9-b17e-e0bad76e9133 ae2d86ac-fd56-425c-b79e-5e6ab7a8f69f 70da96c5-6f26-4c55-8cdb-10ae1671816a 9364a884-0348-46fe-b7ae-c388ade6fe36 51b2026b-55a8-414c-9101-901be57fe3b0 3fdd7989-27b3-4c78-b6f1-2ad1edbed4b6 0de9691a-d39c-4dc3-923d-d719cb949866 314ae40f-9512-414d-b57a-3a9fc08954bd f6b53e23-ee89-4dbe-8996-8aad4a592ae0 8e8fe2ae-133b-4cfe-bc16-ec0e891b222f f77afffc-53ea-44fd-a77a-906c89efeb52 f60572f6-0c86-4cf0-8203-1ef52079e6eb 2bc306aa-6f49-416d-8d42-2b3781817e73 7804bf22-5461-48b5-85ca-a05d0d433e72 87efbd5b-243f-4be6-8b44-05593b0f7e60 1a7f8ccd-4fcc-4d5f-8572-086027e8160f e4bc8907-e8f8-487b-b0d1-485715e99b9d a69af764-8d8b-49c5-94f0-58b2a6d2dcb0 343c9618-3c78-4d06-aba3-8a70105462e2 3774ccf8-776b-40eb-a78a-d0845161fa34 33210f99-e636-4171-bb9e-326722cddc0c 1df25df1-d865-47ac-a1cf-c704ea8c550a 00f13415-9d9b-460e-9678-75987717603d 6a9d4bd6-04be-415f-a160-f97131191521 664df73d-12e6-46b2-b417-37fdd1cce1f4 262b837c-43f9-4abd-9ed3-795e5e9ff61c 28d26462-e8f3-4299-8ebc-ac339285f275 bd4d6710-9f80-40df-91da-10603e443e13 b2e7adce-5b4d-4750-b268-1659ed797f6a 63c11916-b25f-4590-852a-334dc7cdf85f ce489bf4-f63a-4b3e-bc7c-3dc9e669f2c4 ec6ed0f4-1606-4b20-8ff4-ea670565a606 e3d0c414-470a-4364-b307-be2f332cddc7 5265824a-89c0-43a2-9758-4cf7a98f2129 e41566c4-d22e-4f59-8f1f-b204a8091bb7 080ea36c-23d3-4e8d-afc5-6a967a3a377b 3b76b7cc-73ca-4b25-a944-39d6d5241d52 9f2e5773-4f2b-4a27-951b-f79c662b2775 1f46b0f1-ff2c-4bc0-b340-069eb71dbdfe d43ec7fb-2b83-4bfd-8300-c381b0498f32 3d7aac72-a50a-4f51-a87c-491e49303913 d3b7e5e0-d2cd-4641-bb15-d9aa18d8f9ab db64a2de-77c5-4aa9-9a02-d5015bf36ead 80088d8d-54e7-4ac9-85e1-6c58375f2bf4 908b030b-c2b3-4e44-be73-fbfdff4dde81 10077d2e-1c7d-4b7c-8c38-459dd074f203 eac94955-1d75-4c91-a7d0-c11a26337351 451e0ff9-4195-4313-ab1c-d53f6f406094 1d334e01-a7a2-4d09-aea2-d6554dd92df0 05c1c34d-accc-42ee-a98b-28e322177402 4a1ca254-a4c5-4b29-a30a-32df74dff87e 937a6989-7529-45df-a744-e3b0e7f20d83 e6528f65-32df-4645-8a65-141c86999ada 8f8e3e49-4b24-4779-a579-a471cd73ac05 5408d1b6-20f4-4c66-a9cb-a18d8181ac07 6e460e39-c172-49c3-af11-9f404a8b2788 af47a908-bd6d-4c04-b46f-6206723cdf2f d06fbdf5-8e56-49ef-9df4-0061dc3dfb56 e8645840-c23a-40dc-8b01-f6c697420178 931d7f10-85af-4758-a9d0-715c63d0fb84 1be27612-68f1-4135-9b40-6aee768be793 1e4e27db-f65a-436e-abdf-8cd7e1dd6262 e295ffff-b28e-4fe2-9d61-2f22096c4564 1817641f-80cc-40fb-9643-6c1d9e1803d8 faaa231c-065c-4701-ad12-3da2c07511a2 7d28d09e-9e53-47d3-9ea1-9b33d5f60f10 87c0fcef-6075-4a11-b81c-d41ab324dbe3 da7cfc30-89d9-4a3f-b6de-1248a33e2e1a 6b32a823-1de2-4952-8efc-cc17f95f3c78 1edaf381-cbd2-42ee-b758-fb87703fe9d9 a552391c-bd10-4364-95eb-af3ad7e856f6 ea59c257-bd16-437c-b1a0-a112565af809 b1606a5a-e631-4983-bec2-cf12aefdf6e3 4a741fea-eb25-4fb5-83d2-d5faca764eec e53463fb-6d2f-4a77-8ad6-a99a0bd5c616 a5eaf6d2-d747-45a1-b40a-ee9f0e9fbe38 7674f5dd-cfd8-488b-8e7b-c026cd28a94f 9a0ee173-8f73-4f92-8212-c7a886953ce2 fc0b8e10-2dce-4fd8-bdbd-049a90300996 bae64560-e418-4a22-94a3-a39ec5e56cd8 097bab1d-2463-4df9-bd39-509fe07dda3c 5c2f30dd-a0e8-4711-84fd-cfcb13a07e93 736c990a-96d9-4866-9aa9-75fe63d99d83 665f1d9e-0328-41c9-8276-d7922dcfa3c6 091e5607-07cb-4fe7-a8c0-9224b925e9b8 c3e57a04-bf46-45f2-b2fd-56673e65d19f 1fa460b2-7cdd-4cd6-9d7a-08db964df32a 9cc3c0fa-f547-4144-b746-581a7961227a fd819fd9-31b5-4d0b-92bc-2da78f7201e3 72d8008f-329b-458f-9344-5e7e9628ca02 d676952c-0d90-4b40-b7c9-46d617ccd245 f899609e-f4f0-4fd1-a710-48a6481eac4a 13b0c182-fec9-406f-af78-cfb83583a5de e4e4532e-747a-4c9d-965e-07020f34be49 21804fb9-e0e6-4211-862e-2c7f506b16c3 ba3fe17e-3771-44c3-bf43-0281ee38077f 48a34c2f-b519-4540-ad4c-71ddd0188e59 0a32534c-148d-46a1-add1-46db26a8b103 af0bb84d-a87e-4c31-b2cf-5ea9614ac945 326ffa0e-0d96-4c23-a868-8a2a1f674d4d 6e4bbdf9-33f1-4df1-b87d-a70ab02e7c9b d5210432-e57f-4905-9153-49e0e60a4d7a efed840d-df7f-4566-87ff-5c2233a17f34 8a7ad0f3-c5f0-44fb-89b0-7c86c102371d 75ea319b-1049-4f90-97f1-c37141a007c5 92dd408d-e0b8-469c-9954-ce950dbe1158 32bc4b62-1eb8-4552-aaac-ce382ed9bd3e f9e60125-0b1a-4e86-94c7-72fc695184d5 30c7de5f-f4a5-4010-bae9-cf82e33b5ae3 db06be8f-3ba1-46f4-8b23-c177f1b58060 dff60d17-ef08-4052-96d4-4448159acbf1 95dbdc0f-2122-4a35-a224-3a431d132e95 a255656a-080f-4e70-9b2e-befafac91cad 609017c3-167f-45cd-bff0-ced837254e60 bd602ce8-9f16-49ec-af69-d9b3bf87c706 5d72765d-c707-4fb8-b237-b041ccf8f6b4 198ebd3b-1996-4fd8-a2fb-70a8a6e88ceb 05c446e0-4dd5-4562-b1ac-1dd1be386420 bc508844-4316-417e-9a3b-ed232d4e0204 0ca9bcf6-6109-4592-b04d-b1e2e3f1fbf6 d0ffa8b0-e493-49df-9e94-f3e27f61435d 3b79e156-27ef-48e4-8115-0820a9c11ea1 2550bc54-4d58-4285-9983-f0fc4850365c 5085a219-ad4d-4794-924b-29b7ece6d3f3 9877d9b4-b6fc-4151-8c20-565802c5347b cf3e2759-6734-4830-b904-da281613c228 0bd6a2f7-b67b-4010-bb8f-9d0113d3c871 5349888b-3176-4a4c-aa0a-b342c966870f 6e7bebe3-cbf4-4bf2-9fbc-b42f4b430b54 99e150c9-e01a-4207-bac1-4affd13946fe 091d3308-5397-4a2b-a047-3b586982a668 d437b09c-1d39-48dd-98f5-ba88ce29ed41 b004f9ff-6408-432b-9f52-abfaea51a5ac 98416c26-040e-4dbe-8d8f-9fd3f14393c1 d6dff245-c044-47c2-8eb9-f900ef2df84d 1dc576b2-4ce1-4728-b430-827c8577a3e3 e9cd452f-4fbd-4090-89f0-fb70595ae586 4375f510-7dc7-41c3-b53f-b0579af00e28 221e711f-5f0c-4e02-b410-47e1e98f6e62 a0674b3c-8a7e-4844-8b38-2230e4ebaac8 87173dc5-ff49-46a1-80e6-06195552d822 aaadca37-7bb7-4464-8aaa-9967b1823abc b24e8196-af37-4c50-a8fa-1729d38fc052 fa71fe5c-410b-4271-a355-b75834c0ca0e 4bca2a79-504e-4681-a999-c5edf9d45360 774412ca-465f-48ec-a2b2-7bb34b640e09 0f51f7d9-40c0-411c-b694-b70685fa9d2d b931c96d-adad-4b02-b4b1-04763de8f035 f0187482-6459-4146-a4fa-1e409db82610 270ecb02-034e-4bec-aef7-41fe1c8b1a25 740cf949-b102-4e50-92cc-6684e924a30a 13571c51-84e8-43e0-8d1c-10c3d519d79d 57a2745f-2d05-4588-a969-f704d050bd68 7985c219-4c94-446d-b0bf-c33a6b11a9a2 333f65bc-beb7-44f1-a53b-631ed0293563 b93a94e4-6351-419f-a329-fd00d86dacaf 7e8da9dc-988e-4d30-8f20-fd8227adf21f ed77e3a8-4967-45c7-aa4d-f730efc4a7a2 1e11fcda-ab87-4c56-a8d6-f20068bb8d98 6304108a-9469-4ce7-a880-fd6e5b9a7b7a 3ed64e6f-f720-407c-bd0e-481447a34f5e 5a121b04-ce35-4cba-b482-f03643ec3d4e 294cf3ec-af4a-40ae-9085-135200ce2424 f88d7861-0bd5-4a86-b2c0-f0c9f25f66e1 75be36b2-1205-4fc4-b157-d3befb015a0e 5978ad13-2d10-47b0-ba54-15b4c94e39e2 5cf1346d-5896-4070-ad9a-92db1840cfe6 63ec0afa-2b27-4982-80c1-92ed1ec586a7 0f2a183a-85ab-4c8d-9933-39fc1dbbaec1 28b18ae1-8e12-417c-9636-f59767058db8 4497aa2c-c1bb-4b1d-9711-b81a49dec00c 5c9bc5d7-af73-479a-a8ec-5621178cb2c5 f7178730-dbad-4e74-a4e7-08ec391de67d ef2966f2-4764-4f39-a6fb-27a18ad65eb9 3dc36923-168c-4c3e-88be-b05d4efb79bd efb1671a-3bb2-48dc-862a-a2ffb1e2e223 9d430b24-3a11-4905-bfdc-926afc58ba9b 5385a960-7ca4-48f8-9a30-3c5510c38021 b27b80af-48c7-42ab-a527-97c9ecaacd45 c91ea56d-9682-4079-a83d-468a72bc265e eefab80e-cf72-495f-8e77-486bafe8e0c9 d1f608d2-7c11-4927-a039-6b1665dbefc1 f60797a6-a03c-4c6e-981a-7af275bcc3b6 c21bb0a9-add3-41e3-bfed-00136865db5e 63b8bc62-37e0-484d-84dc-559a9f6f9af8 c3d4c527-aad3-4942-a405-bda3bba378be ce5cb6ff-7c75-4331-b8c6-774e74ca5fe4 7594af67-484e-425e-8aeb-cf3997645885 433b63f2-173a-4139-8043-1317ad3a844f 8b59f086-3ca7-4b46-8527-05058395a6b6 c63c7bec-a11f-48ab-ab5e-95362d94df0b 7ad717a5-554f-48b9-982c-61d31f124aed 3f72be84-ef38-4424-a531-b1662af3cc12 ce76bfe7-5da0-4079-88bf-2281f73601e3 f0a99635-af54-4d73-9b85-05b7371ec251 16bc9397-8201-463c-87e4-93efc353ebac 88f145c8-3250-48e9-8f1c-1b0f458fd5c0 750e650b-a5d0-4381-85e4-40bab24d24c2 cbb4f8c7-7b0d-40cd-ba0f-8a86d779e6d3 38cc272f-ea8d-4ff2-b69d-4b4f41208e09 85c252be-6d52-43a0-929d-1c4b0f23e069 d355fa99-59d6-40dd-b5c8-42e3323cf162 663a8aab-30c2-40ef-a0c3-57769a49e201 351d11d0-62b4-4dfd-8a49-fc1ca0bbf438 7ffddf51-f19d-464d-bd88-d7175a33562f f51f546c-6525-4f74-b31d-36f88c1aa724 8f0099b3-bd42-444d-a15e-cbeac3a3732d f1158212-ed37-42d3-97a8-e5a9f6fe14c4 da7d05f0-8daa-4b61-a7a4-15adbbfab3bc f1113de8-b259-4d7f-8166-6f1087844698 5034e9ec-141c-4bf1-adda-1069f7e74ed7 2baa51a3-d272-4d40-96cd-c3ec40c57870 5e244e91-a844-4316-aa55-42de996fea65 e023afd0-859b-4199-a61d-db8db7318cf6 7699ae76-5df7-4c36-a7fe-415097bd1877 66fc0504-c85f-4d86-8292-d4adec14b91b 02c5249d-4399-4e37-a316-83dd5ee8e0a1 c7135b0a-a307-4a44-b53e-3c3889a6974f 79175ba8-d9e5-4076-8b19-ba2d3a81575b 1834a0fc-0623-4d91-9c21-b9d1a66a4bf4 a2bf75dc-3f6a-43f8-a146-bfd65cefe49c 9930c343-116f-48ba-9c53-0398cbe1caec 49f5bd7b-5a16-4f22-9ed0-8858c12a4443 3d8c54b8-7b3b-4c2c-8bb8-61c1546f2f7b 07a69660-9d43-41f5-a741-2ba18653b7a8 04cd9c75-05d1-4397-85ac-436e0433e0ee b54e4ca6-5447-47ef-bb01-261417dd5827 26471933-bb91-44db-853e-b6588042a3db 6fe621c9-ba81-4c31-943c-8da0d82c5a5d 3b53019c-492b-4a2f-bd47-82781b97bae9 cbf925ed-571c-4b0c-805f-de7f65befaf8 f757cd6c-2e3c-43ec-94e5-ee92e736ad4d 2e9881b0-55d7-4c53-8b43-8bb0f16ef995 cf1682b8-c931-4f0d-8c59-71215702de81 76b1061a-04df-43b6-ba35-bcfd9265f4af 55904c43-6c21-4987-800e-fd97a888ac44 b644e150-dd0b-4e55-9944-5e49db06be8d 1aa755b2-049a-4957-94d7-ef3af1b2d59e 8f84f92b-ffaf-4694-acbc-452d054538b7 7cc20dd5-4566-422a-bea1-e37b80a62056 c27a66b1-7bca-4c12-ae66-22655a09a45a cd404092-5179-4459-bfa4-783882ac56dc 8139b359-d627-4070-bdf8-558ed8f72834 00fe16e3-7cd4-4839-88dd-13cfa2dd4087 cf7ea9e5-4492-4a0e-bd62-12858d8e1d69 e74bc731-24b6-4f8a-9d62-bef77e1d5ead 1ed5ce08-e44c-408c-88ab-1e3d2b548862 0d5d49ef-02f3-425f-bff2-f2027edf1b56 cd704fd5-0130-4ff9-ac1f-3a7fb873b43c 4a589760-b21a-4132-9a9d-d8f31d5f2e74 fa52f7b8-7412-4012-8576-aab2d06c5ae5 f881ad93-e4ce-4fbd-b785-888598de48d7 ac6e49bd-5efc-419b-be2c-4023d38295f5 dd890e5d-0eff-482a-a48b-4290c458dd6f e88a1023-ef1c-4521-a31b-e835ae05677b be29b03a-4c93-4b79-bf30-071e3f143cb8 0dadfa04-d195-4016-877c-610fd02cb2d6 95b4d5ef-a560-4371-9a07-7494610a44d2 d988e963-4b20-4917-896f-408e541ea316 8c5e286e-09b8-4fff-b54e-763b9b5188d3 c382fc45-077d-42de-a81f-db4582a333f8 c1e2d540-d5df-4001-b8fb-1e3a6df2014b c79b61a8-ce0c-4659-8287-d7096afe0ed1 c6d9ebe9-7a6d-41a9-9412-99e231b7c154 5c69a213-eeb6-4119-967b-6b6766517b43 f1cd2638-b842-4d73-b94b-0d374630e1d7 e73f2686-107e-47ed-8268-be438b2fc755 f72156cb-0f17-4cc8-8067-e3524da7c880 72636fb3-6426-42a8-8c1d-23c66e3cb5c7 dc94f278-f11d-4eaf-bfa9-745e8690a98d 89b0bfcd-36f2-4e0a-a314-5387d2b86827 2e04d2f8-922e-4813-af22-43e84524f995 88df2467-2985-46fb-a301-871901b8db32 8c97629d-1d1c-4130-a08a-df0dda8b2e54 4aba48e0-25df-423c-a7e6-d5ccd43e5dda f188561c-f8a0-4a40-986c-4f52ded0d46d aeee1b79-9ce5-428a-a469-ba1110d9e01f 9d4dc63d-e84e-4547-9ef0-95e7c78f1aeb 775ddeed-61e2-4976-92ef-0f7ac640f0a2 4628a6b6-3fb1-4a21-acfc-295da0660414 43b2fcc4-91a0-4012-8a6d-ae79d7011d10 97863527-fd51-478e-9774-fb4305052113 51681b50-c773-4ffd-95bd-8a8acaa7861c e48a12ad-8cd4-44a5-939c-b344e757a8f6 b54e6236-0ba7-4394-8165-3409736c94ab 2ed59b1e-5232-4cd3-a472-29b8f36c9ca5 e95341bd-3adb-414c-9e83-093a5cfd7a26 922f8731-b04f-434e-8db6-3e29455cb1a7 c4f6398f-6019-4e58-a5af-d6c0224299b3 9827259b-a0fe-4ea4-844b-ca11f297679f f5f2beb0-c730-47c9-be6b-26cfbeacdcc1 5a52d320-7efa-4607-9f0d-c450f827ec89 4748738c-d1e6-4c93-b7cf-f82599492b2a 15b61d51-3680-49ad-97d0-1885d1f06b7b 095edbc9-beaa-43ab-a7d5-8634ab97fd4f f9f12463-bc61-4059-8f6b-82417e278ac5 5d92797a-dab6-4d1a-a981-630f63a988da 0d78e79a-1bbf-4827-bd2c-b7982cceef67 ad3dda76-50fa-444a-8cb2-9c4d09d90d7e 4a293c28-3ad6-46bf-8774-b80c716d9525 bdda14e0-8653-4a21-a734-5ce998d0b3a1 ecbb58e0-38a1-49e0-be5d-a1fc8205968a eca67bf7-7831-447c-ae6d-946342341b15 0348f5ec-2970-4c7c-8b1b-75439668ddec 9834e792-4b5c-43a1-9ca0-0e1087988727 1634b34a-1896-4c2e-b158-c69b5066c1fa db1943f3-21c0-4a6e-9b3e-9abfcada3b43 72dc95a3-ad87-4f3b-ab52-30e780aca6cc db782902-4c83-4b98-a0bc-52f3f20e33b0 23529bb0-1e90-44f2-bce5-856043f9b906 b76a166b-a5e4-491d-a5ae-82fc288d8bf6 98ad2bdc-99b8-4dbd-88db-c8d90b9ad1a0 7da2622b-a79a-4fef-af3f-f02e0206125f 9c87380d-f186-47c9-888e-512000cb284f 614b193a-bc0d-40ad-8093-d56082735482 b7385ced-5dfa-4ec9-943d-9daa08d67588 e1efe1d9-8933-4150-897c-f1fd178be2b1 1220e5b9-e239-4746-8f84-ae03f43f1f09 4570748a-4567-4477-b797-61c6cade78b5 6b53d951-8004-42f7-9b54-ddbd83e8df65 b1ad7247-35e3-4c7a-9ad6-f01810877333 9888c6cb-6796-4176-89e2-4a8f0a943517 c53f657e-38d0-4f62-a04a-561c1ba46687 d89c05c2-e530-41ad-85f8-148da9ed5eb0 c16504df-1adb-420d-892f-6c8fc1450238 80f55aa3-5e53-4a00-b3ae-6bbb76e1b071 e50f7c66-e624-40d4-a4c9-d6f1f608229f a6ef36c0-f0fa-456b-a85f-75d60eafcd96 afc4bcaa-b818-4669-b3c3-d233070a5786 644f2a35-44f2-4854-99be-b35996281231 58700153-606c-4483-9641-c7b1dfc0f0e2 2d8b8cb1-4744-4b00-9fed-75c8c8876785 3a7851b3-cf1b-489a-a8bb-79ea3d30ebe4 07632305-f0f3-43af-9adc-9fd342175f8b 05208446-0247-442d-9337-c64d4727ab6f b0397be6-8e4b-4253-80bc-7f69a5c0125b acf46904-1395-485a-ab54-82f0643fce64 dcf44e99-5164-4417-a564-e06e68304992 c0d3da2f-aa0a-477a-b401-54d791be73ca 7c62bbd6-eff2-4d13-a3c3-d4b433e4a996 c92c2ec3-6bfd-4398-87e8-45e625c06434 ab863d8d-76a3-405f-b994-dc2d3105c14c 27b1e3e5-3f21-4a40-8acb-67d513bfb064 ea15f66d-e1af-4ba9-8417-a4fdb9ddf9e1 5d451c1a-0ded-4948-a50c-49318fcad90d ea499a4e-191a-4a29-b4b0-48011ac8a374 dbc97e74-c099-46ff-8a8d-0227e210ac2e e8a5b818-524c-4b05-a2c8-88d8ac881669 44137c21-5c08-43de-9952-45bce894cb0a eadb2b72-44a7-4716-9552-4fe17de9b185 df5b566c-d1bf-409f-b7f6-f5fc0e7a60d2 7689be51-768b-4b6a-96ee-8df758b721f2 e5f16c66-f251-48c9-9b2c-4bd6a5b3dda9 405e4850-ca30-4b4a-8553-ea05292c2c39 2d4eecc9-aead-4be4-bc26-a38b7afdae51 fd97fe42-c538-43c9-8e5d-7fce57ed1e38 12429f8c-cf3b-4d78-a92c-480db3d378e3 416cd039-477a-4ba5-b607-f0cd58689257 5e6b57d4-4086-43ec-bd8d-7f1e33fb7976 25a8ac6f-66ae-4ca3-8273-f4a22a86fd11 9c5bedc0-e9eb-4aca-9eec-05829a849da9 b4b174f0-b87c-4189-8c9d-640240ea82fa 285e1099-76f1-4a2a-91d2-386e5831640f e3c8b018-fe57-4e25-838b-1de1ad3e8947 f7e29c48-108c-4d0c-9375-29cfd78c354f 30892c9d-3bd3-470d-8d10-78df97395b8c 8b4a4089-e45e-4803-ad2c-21b687f75283 1f72b3ef-65df-4e73-af4b-37f59009f66a d9bccc7a-fb9e-4d94-a92c-e7de7d3c15e9 534297e7-5d6d-4120-936b-e7a0ebfabf7f 95b34345-03ec-4730-a138-c61fba627c38 40f9b841-677c-4720-a517-faea7d73aed7 64146e78-14b8-450f-9c79-c58f25b0eff2 c3c7f348-2cda-48df-9197-99227b1e319e 88cdae81-0aaa-4ecb-bf17-b0bfda8d3ceb 869807d5-0167-44f0-a6cc-b0cf5aa8b502 fd297a51-f5af-4c5a-9352-964835e0d336 4209ebb1-13f0-454a-a554-9fba7bc6a4f9 b3d9697b-8c81-413c-bc66-87f646da260d 55841ef9-c9dd-444e-b2df-1082056cffd6 b0bfb631-25d7-47eb-8e4c-1e5bdbc65130 e978f2ee-ba77-4362-b87f-b2a34336b0af 88494b55-c11d-477c-a2f2-39a63c6f1e9b c71c2aa6-9f61-4ab2-a75f-e840150e2574 b79ecf6f-2ea2-49ed-aeb9-a74d7c9526af dcb5539e-c836-434f-a350-2f9e48a57d8a b700d2f3-5a50-45f4-9b07-5a8a1ae73870 3c768a51-9b24-4f76-8720-10916556bdb1 8011f98f-1ace-45f7-9a44-7dab95e502b9 5b2154c3-b366-4d71-9efc-5b3e75ecb161 6573de7a-9e87-4d96-8be5-273b6f459646 f2d7a738-3224-4a56-909a-d43f55ba0465 d7ea8d99-8093-4a25-a0af-745ef71ba51c 1c4611fb-bec1-428b-8cc5-f119ab3df3ff e0a28a2f-7616-40ef-92d4-407a6f32d392 8d4bf345-856b-4396-855d-9249c45eceb0 08f8499c-d1d8-4706-bca5-a2b09a98c874 0b6dca9c-5b3d-4c55-a994-b71f6d025c65 6c63d54e-24ae-4617-a34e-f636536bb3c9 2abcbe9a-54a4-43ed-bf83-a16cc1c0a3f8 4f752b4d-217e-48e6-a61b-1989e5ddf828 e6192bce-af58-48c7-b5ba-2938444a40b2 a889793e-0bae-4756-8f2c-4f3d56634deb d48c2d06-aa31-4a48-9fec-fa03d6c2aee1 64057cda-db24-4ca9-96d8-18dd9d271753 50921c2b-c83c-4a17-841a-5df612ac1efe 46fb5756-e265-45cc-9cc7-3fc49b3e362a 9812dd80-68fd-4b4d-a992-4f089c00a559 030c6f98-6dc7-4e6a-8a5b-5b912df02068 cefa2a5d-a8a7-4706-a1b5-6e455c06049e 98412cae-6a5c-4714-aceb-09489428a5ce c4322bcc-ccd8-4335-805f-a84e54fb3610 5069d6d4-1777-4e1a-9d70-1774c29ff2bf 330677ea-e760-4142-bd79-5b7632f73e00 a944a5ef-9ed5-4a2b-9c53-6f7188ac8a39 98f0c727-3f11-4f05-acb1-75d8e69bedae 46c5d866-3608-4d31-96f5-a1e409225186 19ff78bb-c475-44e8-a311-615c58842ef5 37487153-0c72-4642-9003-4e570d151cb1 8ce59b92-0f02-45fe-8b6a-63bc979d5f2c f06e899e-6d92-45fc-a59a-bb923f8f253c 78cb63e7-9a0a-4d2f-8d5d-15bdf61fdbe4 76ca1650-39eb-43c0-9d7c-ab09d1f7bfec 25c60aba-3763-4805-94b4-6bd4b654f870 0608cc10-47dd-4576-b634-3dde25d03d69 ffcaab84-0e76-44a3-bafc-93e4dd8ece62 d4e15c10-05ec-4a9e-9cc4-c4cea67772d5 61deb84b-026a-4e4f-a164-d4ed8c0aa017 ee48ceff-f012-4bc5-bea3-421c4b7f0d1e d274b460-1a8a-4010-b697-9cecb8712cdd 88ecc510-e811-4e46-9904-bd4667eda7aa 884ed7d6-581f-40fb-bf7e-f84cc0ff2bb6 e182a08c-f65f-4c66-b0b3-82c1ef170f3c 1d0a0f99-d850-4093-b47a-4571f485f76d eacd1130-12e9-4ca0-aebb-e82bc46c39f7 131afed2-253d-4048-bebb-850113f5b443 1a5126c2-aea9-4e30-b5d4-4a7a3662bdbd 1ed6658d-5b09-4037-b39e-6a27dbdad185 be651003-b570-4fd1-a649-f80169ac64ee fb0e43f2-bc52-4920-8119-1275d70c70f4 2976267c-1193-48b1-b5a7-339f99300d41 836594d5-9674-48d4-b86e-583025ee7c00 8881f714-39c1-451a-9f62-7b5dbf37cd24 101ea1ce-1100-40fa-92b1-cf9533acd17f 59922582-8472-4550-87b8-9ad3a7a6ec0a 2c8d43d2-9fa9-4ce5-b1f0-dcb0b2db3733 a5153f6e-9c40-4964-9f3f-d7a170e1ce7d e8d92956-049e-40a9-a49c-8633a5e979de 0e960d6e-4f45-4772-acc5-b8eaf5c60c72 ac511134-3cfd-4ea4-a4ce-c6f5f92c16a6 78b360d5-f87c-418c-a827-3f93232d7150 106dfc80-a8b1-4212-b332-3a05d1bfb30d af863c72-d55d-40c8-b36f-7b706bdecb4b fb729132-a1c8-49ab-9a9c-f25bfb2bc516 6e1a56b3-844e-4ba1-9342-3517d23cce0a 6b088b78-faec-4f00-86e8-fdee4df3e48a cf3cf9e9-5307-4dc5-9546-10ec53056ea8 39517dc5-a440-4cd4-8ec6-32a7a4317876 ef0b7144-c1c4-47ac-8fe6-bfaa72f03ab8 44d1644c-1836-43ad-bfc6-9526d60f94f5 c71fde71-9ab3-44c1-b50e-701147127f0a 9308d8a3-d150-4dd2-87af-1796407a3271 47eebd14-f88f-4a71-a63f-51edbdbccad3 c41d892b-5bfa-4622-8509-8b8ad4dfc235 fe8efb43-fd43-4cf1-8d4a-fb88056b448a 89af6d92-50d2-482a-a6f8-e0734a05011b 9bf98f57-6106-4777-b1f4-27f888c409f9 27214591-39e0-4a46-80c9-701d5453f4b3 6ce2dc47-c128-45cc-9518-885acb548861 bcc196db-1ba9-4138-a2fe-f5a11352388c a840aef9-0336-42a1-8eed-a92eb0985b24 41611149-815c-405e-9ebc-76c119d47e45 33780a9f-9544-45de-a29c-b2abfffe04be a26bbda8-a5aa-46f5-a285-40a5bbde55b2 3f6b4a60-7ae9-4dd0-987c-9817dc05d49d 3fa41a8f-aa7c-42c8-b768-3b2555657174 6168a7ac-4543-4430-acea-875149a8a7c8 98cae760-206a-42e6-997f-e8abf72b9c2f d8760db5-ca05-477d-8378-ee9ce7a6e303 572a83ce-25f1-498d-9e8e-148ec4e77657 1a7dae1f-dde9-41b4-99a7-36479d1f77f7 87a2540e-ffe2-4f56-bb30-c15fa39a27ea 4b110f55-c221-4e53-ba21-d6a7cc840862 da862857-e96a-483c-b373-74b6aa9c40b3 f0e20f9e-8cbf-499b-8baf-b5c722f7fd78 dd59ebe3-64fb-4717-9537-4714f6fd10ba ec2e869c-a904-485d-8c29-9eee4d6927cc 9c70e985-89e6-4679-9179-bc36ea085137 f560797d-d61b-4add-9a44-e44ee8bac35e d38dcd62-9373-45e8-b57a-95061a8fe1b3 caa54aab-9ce4-4ed3-a37d-8f2061637a71 155d259a-7427-4c7e-946d-cb6a9488022c 2186dc93-1173-4cc3-9d1e-009bd9ea5fe4 35586b87-ae05-4eb1-b476-e185e6c98216 c96138a1-70cf-4ec0-887d-a34082f63b01 5613b33b-29b7-483e-83cf-ebf60240c4fe f8c93433-0fee-4bf5-aab4-d6f1a8c04666 79125df8-b5cb-4166-9f94-c66f3ac5905c 4405d5bf-2d0e-467c-9b8e-4c6c2a326b12 d836e25e-fce3-49e5-a4da-a28db0645591 a4115f65-886b-47ae-8775-ed998fc9bbf0 ef366d8a-4c97-4e41-921d-30826d1263db ddd758e6-1bd7-4f95-88f9-fdf174432df4 0149108c-43de-4072-89b8-c818fb890ee5 feac2e46-7b30-4f79-8829-e59e07d6b28d f41bc72c-7191-483e-8828-f062823a8ca2 ef1c036a-c3a2-482b-8f3c-e3c2e6113fb7 71a57b87-c9c4-4871-9b3f-6ee273bf9003 3db130cb-5727-4d8b-964b-b63dca12cada 2d0c629f-7580-4fe2-9834-1780f44d00f0 aec792cd-9a5d-4ba1-ab07-6ab680ccbad0 d25acf4e-f8bf-4660-8e28-ee4bbe35819e db595b00-3b90-4cec-9e9b-73ae4daec83f 73b89a6b-5460-4004-b654-d69a0e91a83a e558af96-4c84-41eb-bbf1-a2fb91561874 3a8a3d38-3368-43a3-ae07-d81c46ffda15 8b0d3900-accf-4f87-a648-50a4793af48b 1d69ca80-959e-497d-9b63-985b2106cd35 b2506530-c16c-4e40-9110-5c217c0f3c21 207aadd4-e504-43ca-b5cd-e9278c286f2e 32be0fb5-376a-48aa-9536-6d74dbe87247 0dcddddf-2f97-4099-ac79-7f272a0e4451 47845ede-b43b-417f-b507-03771bb1b9b0 1bff9423-7603-4d1f-9506-e963adb22225 e3b50b1c-daac-4cfc-9fe0-5ce95e8faffd a17800f3-9aff-4623-90f5-30d9b65f9705 168857fa-d35b-4828-b0b1-1e5e4f63f55c 4a325fe9-ae60-4401-8568-d597087abc25 aa366735-0e80-4caa-91a7-1ae116b4d3ec 364e7ebe-78bc-4d14-a02c-9c294648aefa 719e0778-7390-4bb0-9b33-f449decd8588 158a531e-7805-4ff3-a8cb-e566e4eb59e9 fa721d8c-f520-4009-95e7-1f78d0b83722 f6063284-5a40-45e8-903d-bd679d11d7eb 57ead8dd-2b9c-4604-bd04-fa2b74d902e8 93165893-babe-48ee-a97d-37124888bb7b 80eda7be-8e92-44b4-bdb0-1de504d41f18 bb2c76f0-7223-4f67-a487-69a8ee8a8ae1 4fc4189e-eaba-46ce-8e43-303b76ace135 648b9e3b-847b-4f60-b616-8f4e06cd95ae dce2f180-182e-462d-a93d-baf0221de81e d89b221c-3d25-4e7c-b6ba-6b1f0b032468 9fa56523-4355-4b25-bcfa-91456e4905a8 bab26ecf-80b1-4c27-9992-b8fb69c03d37 b8176749-cb2c-46ee-9831-c2014a21b882 49506eae-710d-42a4-a8e3-37dba978a537 27418029-5ad6-4c25-8c9d-adc7590e057e 6e5424bd-2cf8-4a5b-a874-5155d4e13a94 e8bef73f-58bf-43c8-8377-f75479ea34ef edc86201-dad6-46ca-8110-81142082b958 30203389-c3d9-4389-a1b7-32f0fb3edbc8 8f7e7dc6-8e49-4662-9f85-0d8142af0829 cb25fede-d970-4fca-afce-2dca17ba887c 0c6ca7a4-cf57-4e37-b571-7a4479d50354 98b98a79-32dc-40bf-b7f0-55f44de9e20f 73989b59-62b0-4c16-885a-f48ec27b124d b819e8aa-5e4b-4305-8225-a7a847b35695 f9de7e62-6c17-4871-95ea-b86d44026d89 ac98feda-f381-4284-a045-269a0c331c71 def7b717-0873-49ea-b37a-76290dcbbf2c e17db5dc-0bb8-4116-a762-856badfa9ef4 adf3879f-ee90-4857-9dfa-7be7f82781a1 b7b31794-a115-4570-ac83-6b50232445ba 3e68eb42-1486-42e4-8224-0231ea9905c6 8f804be5-6a91-46a4-b524-ae378edf2970 8c6ec2dc-f5b1-4951-93a9-ff6223c9b01c 86a2e38e-ab66-482a-b51e-c6ad66abb92f 9e141901-0338-40ea-9424-5febc0a248bc a4a154fc-ad2b-4b1a-b4ab-9abeb6db6bff a515ac22-0b71-45b2-906b-abd6b1e170f4 ab9bfb8b-fc37-4427-bfab-14ae23354686 b0c4b135-db5e-488f-874e-2af631f50a65 d04204e8-c0f7-4608-9d31-8f06065ec8a2 699f4c1d-94a2-4611-8b11-02a5a1c64f58 37c3bbd7-9cab-441a-8f27-eea4b2673cb6 2dd0eac4-3b41-45ce-b270-2f105f34af98 f118da9e-434b-4eb1-a83b-21be4104a5d2 0dc7c8b5-796c-4ed2-877c-a879ac1a7df2 2721fc17-3d50-4f93-8e79-cbffd80e593f b0c27804-afb5-4912-a892-c6a6d760b593 8299fe84-c9ae-474f-99d2-9585d54b5b2d 69a66956-fb6f-4ca9-9147-d957743af680 92691891-0870-40d8-baf9-04ccff9fd3ca d58ca015-a705-4edd-8503-cac4e1a8e693 56f5bf9a-30bd-4113-8e78-4d7517a6f473 91410291-8c6d-440d-bdc5-56bf7874a9e2 2c04dcef-a0c8-46c3-b67b-91f5e9aca1ed 0aa54cc9-2357-4dcd-9778-58078ebda2f2 2d30a43e-4b95-44ab-ace3-b36a32391035 78e92bb8-9251-4f7e-b1ee-969d855b6181 e83c4bb6-5c03-4b94-b5cf-2792b4870af1 2f8f7b5a-e423-4f63-94f2-041a586b4698 820f4952-b2b8-4bd8-84de-c3bb064c1276 9682a316-fd3b-46c0-aa70-3f733951d357 6b4116de-73b0-41a0-ac9c-39dfaf37d112 5b5c2dc6-c0f5-456f-8b45-81529a44ce11 960c8c1a-f5e2-4744-b808-6a16eaf2b555 3034b1bf-6f63-4c81-881e-e97b5cc05443 38a1ea82-d105-4c74-bbbd-31e98eac7b66 6004925d-fa6c-4af6-a9d0-8fc471d33cf2 18d9a77e-b32d-42ee-b868-9977cb0ba70b 5dcdc84e-3a17-4552-9a89-26e8aabc06d3 a6d98d59-13af-4b0c-9d59-0e7865533b89 f1b109dc-1ea7-4565-baab-ac48ec56346e a2f2bc1f-4e29-40c1-8ce1-b276b8c40852 29348b4b-c7d5-4d35-90be-43c852f0fa61 f8402b31-a027-44eb-a032-f40261d58262 c3732cee-9f04-406f-a01c-de9ebbca5349 e3f8a838-5380-40d6-b1a3-bf38410721d8 fa4cdea4-2ceb-4cda-8d44-720533bed187 b272dcbc-7f48-496b-be44-5ba68711a7e2 ff7fd393-1331-4b13-a05c-0d1801b198cc b7822348-c31d-4f49-b88d-ca6fa1cfe894 2144f6ac-a37c-4542-9fd0-c4f60c0b99cf 8fd05797-289f-40e9-b9c8-c48f3b90180f 37f48e3f-9fd7-4460-813b-8ec84d8c2f68 b9cea83f-c8f8-4a20-9eee-661c8fc9ff0f 7d0058de-4c0e-402b-bfff-261109d010ea 79163b12-7e5d-4666-ae61-996e786bd976 f0055a28-95cb-410e-adb0-17c35858e779 c4086a4d-d5b0-487b-a7e6-8717cb836d14 ac857929-9f9f-4eda-aafd-63d34f2fb495 cc9fdea4-185e-4e75-9dd6-5c5cf58a4496 654bf591-8f13-4cd1-9e78-64020fee1981 59167b6c-c3fa-4122-afbe-974be93421b8 0aedca94-3a56-4e90-a5e0-b8df6bafe77b 7ac2ab82-0264-4003-b8f2-a2a7e52e600d c6bf78a0-e642-490d-a723-0d0346b4ffbb 922d4a54-7056-465a-8144-f2f95dd3bd5e 787888b1-65ab-4c9a-8e84-9fa0aedd08a4 a4bff7f7-1003-41ff-a772-ee4081d0dfeb 5c078891-ee69-4823-90f4-e6e29fb082e2 ce84b794-20ca-4669-87a4-e9d9b33ac778 3e52baa5-1aab-4015-8dda-3125bf9354b7 0a84f86d-d7ab-40e9-9a96-1dcb39498e43 3ad5555d-71d1-42fe-b1bd-477fd60f88a6 7b845a99-3b6b-4fca-89d4-12e77ea1b831 c447fca0-9c58-4410-b520-5435c44baa3c 3a73cf86-ca09-4e4b-952e-671608f469d9 d9f7e337-ecd0-44ea-b6dc-b0c64fc893c3 0bc71f79-c514-4e41-bf6e-860013faa918 d7cc85be-84e7-47b9-b209-4959131cee36 1ba091f1-84d7-42e6-b923-cfb5416e4c50 3158758c-0fe7-40eb-bd4b-4c510d5530c6 124a0e98-fee6-47d3-9302-0f09d1d9b1b0 fcc3af77-761e-434e-bdd6-ed62af20a2f9 837b0cce-cb5f-4536-8f99-f6a108bcafee bddab0a6-bfa3-489d-bf77-e18f3a9157ba 08dd786b-af6b-4be0-bdf5-a00c63d693df 25e91522-7ab3-4c8a-bc8e-e16df33bb6ba d2a7bd70-73bc-4024-a2aa-1b29728b218c 5cc8b5bd-dcea-4bd8-be77-7026707af80f 008e70ce-f38a-4926-aa65-37e90e011308 33ee7c14-7897-4cc4-b2d3-2c83a6039f6c 62bf5762-74bc-4fd1-a4b8-7c6524731dcc 15aafe43-b4a2-47a6-a23c-6bf0f992a279 aec24514-219e-4446-87ee-39febf48f8ff 781d082a-ac15-43a9-a917-1267ab8f60f2 0ef90d5d-6a98-4562-bdcb-25dd04c681e0 dbfbd1ff-b1cc-4356-8dd2-1bb31052d47c 35dab643-c0f6-464c-b61f-868e06b8cba7 bcb9ebc5-5a23-454f-8d23-f5639ff426e1 ae164230-6512-4af3-aa1f-984ba0001a2b 5a121a6b-0dee-4465-ab62-f336d7f19c99 68558934-0569-480c-9fd1-1f906774c11d 50972fef-37f2-48d4-8a2c-d14373d87f49 9147851c-eb86-43b3-96fd-38f47d3cb08e 9b8716ab-a3a8-4cc9-b519-daa4d02f6424 6d35d3bb-0420-4864-92a0-440747b888dd 155c5091-0648-4179-abf4-3276e9dba8a5 2676a0e8-5c1a-4caf-ae1e-447ac334cf62 f3f28e3f-c444-441a-a950-4881f689d45b a7a14fc5-34d9-4cb8-bf8c-81627c86bfa7 e456e130-95dc-4a17-a13c-ef6aa17ac844 6f6d981a-40ac-49a1-9a60-f1e6d69f0836 3cb5a2f5-d4dd-426d-b671-4ffb3d60c920 c2a85936-4cbb-4fb5-8c55-ee8285d298ed 9217556c-ed47-45f6-8d26-b2006993e766 a4a9d3d0-f624-40f1-9764-bb8e7cb01fad 85197626-17a1-4647-a8e2-658e633b138b 456149fc-810a-4a35-962b-a92620ee6ce3 456e3820-1321-41e9-8171-2ac6f9405f7f 85522387-e9d7-4c3c-a99b-202a1ca462e9 4ca57385-93ab-4acf-9389-eb3f98101380 c78896e6-f30f-43a9-929b-bb9103cdf1fe 4da73a44-c7ec-4af1-8193-ed255696200f a2eefa8c-bdf0-42c4-a4d1-1b0dbf89c774 de6d3cb9-fb7b-4ddb-be5c-c392c68da5a3 acf59726-bb98-4e03-a98c-37b45e0999d2 9118def7-d96e-455b-8642-3b6f3764bcdb e0df862f-36f6-41bd-9e62-1d4c3bd64b42 0c77866f-c3e8-4e28-8fd2-4895b9ed177a 70cadeb8-3f3a-4eff-bd0e-fcf0d7847da3 5d629ff8-3384-4d26-8ceb-e8f488935c32 e2fd1ae5-bc4e-4ca4-a28a-f8cc3e779ffa bd5b2087-d4ac-4e2b-b061-9802703b718c c7fbf794-3d6c-4381-9c6f-eb262a91641a 6680d70e-1e8a-4181-9a95-912ebd3831bd 0bcfe264-14f6-46bb-8e71-e7aa4a14add4 912e7d0f-c8b5-42ff-894f-480b21a7eb1d 0fd7bb1a-8ff4-417d-951d-e1c3c9674ffb be39c9e7-ffee-4d50-b443-979f86f2b208 6a48d6a0-48c0-456c-bf1e-85929bfe198e 092e0c5d-da14-4fc1-88ce-2484b07e1fb1 2ea166f1-7003-400f-aa2d-4012cb6c9bb1 67df64de-9b21-437b-b54e-8baff746afc1 4c1198cd-928e-47c4-9bc0-6976dd9a6ca0 d78ed0da-aa13-4c55-8e78-632bd6231364 1038cfe0-43bc-4b61-bb73-e30517032589 ccdef5dd-8135-4119-b692-fdf9357002e5 5e0c79de-6b1d-47da-9ea7-2afb12c6bc5d e4473d74-1af7-4928-abd5-2287107377b8 6b39356a-bd85-44b9-b1b0-0c28fde56d8b b81c1737-a54f-4067-9aeb-9d582282d22c 1e7c4190-113e-4d0f-8ffd-e526787fd581 c50f094d-8ae0-4a05-8e06-e5116830017e 50b76cbe-b55d-4982-8176-3d1ad5a821b9 f24f5e28-f98d-4088-a97a-6f817f212f22 22310d10-bec5-4234-9e25-1f6876f0a2b6 b244292e-617e-4962-abe3-f2780010d6ff 50dccdad-402e-4a71-88d2-4a8ff3c904b2 11d85886-a4e3-4487-91b1-f0b9acbe5fb0 65d57fff-88db-40ff-8cf0-21020dd81a28 ac16d935-ebe1-4789-ae3c-95f9c61aa7c9 e4d84946-b6a8-4f03-9993-7089e51c12f8 2fac2881-4830-4167-8b10-91a354450e54 9df064ed-0c43-4ab9-8e82-c2a26031726c 0aa8c9ec-0e6b-4f8f-858e-594691568ac0 6ebfb15f-b59f-4224-aa46-b0fc4c97bda0 69f943a8-5067-430c-976b-8dd46b6f95f5 c4adee98-d28b-4ee3-8992-3342fc400314 3c2a8ec3-ec25-4e5b-b21b-3d991e979dfa 47eff5a9-b45e-4c1a-a1ab-ed7f0026615b ac2037cd-274e-4d95-9a82-ea905b2b68f4 0fb47cf0-7ef1-44c3-86e1-2ca2b24fd63b 1bb50687-d214-4c25-9208-a627296d1055 ca99bf9f-6ec3-4155-a383-4a75892e68b9 89d6710a-c245-43d3-8fb4-1577bbb065ee 4f183165-5418-4548-8975-d541f6732e9e 97713a85-f57c-4d92-9e24-0ad988e5273b 0f7abcd5-f7cf-4db2-a5d3-2b9b197ebad6 c3298d26-5277-44f3-9a92-1b7249d16930 b4ad8aca-11f3-4e2b-8f81-516d049a55fd b0405228-fb8a-4d59-8051-83aad502d3cf a488de62-e23c-4f66-aee0-58c2a605ff27 ea0bd358-4b7b-4e8e-9e46-e558a46b8cd8 badeaa09-25e6-4d8b-8092-fc2116529f74 e38bf733-9ebd-4628-a0b2-bc50c52e1c56 ac54aa9d-92e3-41ee-a56e-ea404eb9cbd8 516eecb6-7d94-4aa4-b6a4-92607d824db4 8635ac15-a6f9-4e67-b5b4-c05e9064b0e3 ef322841-5efe-4843-a6f3-802153706540 11780080-e0f8-4138-a42d-cbb2d6672764 203fe7ee-d328-40a3-8106-6d3b959515e9 1997dcc3-6bf4-4b52-be77-021720bfe0d4 ce402d01-70f2-4f39-bcd4-6a0e2c005233 7d80e660-73d1-4406-8eb0-6facc1b42066 83678b2c-0563-455b-bf7d-1f1bba38b851 18532ae0-3a13-40ca-9fbf-63fcaf260549 b6b9146b-a1ab-43a7-8b69-4a62d16ead51 39f14f60-1603-43cb-a1fd-53a6fee0ba49 85afa0b1-db35-4556-bd06-7a15132bc72c e12ee7d5-c049-4a09-a2cb-e31402599b42 01b836ac-bf76-409c-aeda-de0974c831cc 1cbdc864-b732-47de-9cbc-c7ca45749aaa b6fee71a-ec5b-4a18-9524-2a0951d6b92c 6ab300da-651f-47ed-98ec-f4e8598359b7 77fc2471-0150-42cc-ab2e-6a881ae34285 44cf65af-2d36-4eb7-a96d-bdd559214d52 3c727302-e6da-4d01-849a-3003613edc73 4a63fe38-4b30-4c78-b7ab-0b6e4731124c 7a6697af-6135-48ad-a8ce-2f249064ff49 322e6771-ee0e-4066-944c-2eedd36ba1df adb8f5be-3067-4eed-8919-494343a126b7 5a2e40a3-4c66-4e40-a7fe-7ead482891c7 851cdd6e-2023-4c15-ad19-a2fd8e24e17f 620eaa03-89fc-4d75-869a-eefab7eb082a 7415d4ce-319e-415a-a277-1c6e2fc1803d 944fffcf-5198-4a47-a028-33e1ec322fb1 90377f13-d3b1-4739-a8c1-5449189bc330 9718b65c-9727-4b08-9dfc-75a5885d69a7 4af3e159-cdc0-4af9-bd8f-d502d93ccda5 e9330158-bebb-4004-9a81-2c4ebfd29ee5 728e3a44-60ef-4b5e-9e05-d01f76dc83a7 70001e9b-41a5-4ccb-bb15-ac83be66fc19 dbaf1524-cc28-49fe-8d84-8f3642986690 e4f87e74-745a-4ca7-acbe-14cc5676c670 cf4e11c0-0842-4553-8d54-20ca1a8b9109 8efd9490-5f90-4b6b-a93a-736c40bfe573 4765507c-a1a3-44e4-ba99-cc87cb82dbe6 2449ff95-02ad-401f-9fe7-4301ac496657 3248613d-03ff-4d95-a9b6-f2b85dd0273d df83c5c9-82df-4632-8b29-712124b76406 d43e2334-3b80-4979-8be7-5025defdeeb7 c8a1b72f-1a7a-45d1-a0f0-070bd3ef5b1f a6e87baa-d8e3-4324-8668-ff7a27964637 3697b791-bc8d-4e61-9262-617b25d9a9f8 d1f458bc-56ec-4741-a026-b08f3dc1e813 c49ce370-332e-423d-a8ae-1e3fa4902b6a 84d31daa-8352-457b-8bb9-a1736cdee6e6 8b4243d8-1e47-4c9a-a242-754b26eae855 38603320-f01f-41f0-a21f-3ab88aac9824 57b3526e-12c0-4fb1-8479-fd4ff39fc7cb 54fbbd72-1293-40e1-b9b0-8a4d4a3786e2 8315c8e9-8cfc-40b3-a431-2be029187d93 a9094498-6dec-4759-9626-b4241f51648f 8ccf4ab7-03a2-4b07-ae17-ef7e47f3931f b245a3fe-3a60-4400-8b2e-562b5f58395e fc8f1000-0cd2-42a3-85bf-85a2cf2497fa 84f34725-7722-4981-ab2f-fd4002a6c2aa f01fbc16-371e-46b7-99f4-a375381d4d32 932f745c-9a8a-4570-8ea1-4ae32ad2c0ab efd2bd22-6ce4-4770-8252-1200212b5be9 24794d6b-8d70-43d9-bf2f-bb91a6366b28 4fd5a489-61aa-473a-b30b-404a55058ed9 733ab861-cfcc-4397-a02d-ff76854071c7 7eb47d2e-849e-4a92-a84a-8a957015ad2c d7431f83-0d03-4181-abe5-7760be3aaab0 41c1e149-1b98-4ce4-a26c-9a2fc108dcdf b43c9d62-6527-4725-9128-87226217872a 2dc9e8b7-1405-4600-a390-b30f97012671 2fe10388-ec40-42be-9fcb-937c0b8bcce8 02844dc2-8cd1-4546-b446-b475ca8bac4f 92a0ca8b-d513-4235-b298-98745f005605 0cf3b1b9-cec8-4c31-a80c-703f2601af90 cfcf05d0-1425-4e47-91c5-f6075b6542fc b71f3eca-448a-42f9-a35c-5af314e3556e cb99e255-44b1-48a1-b3e6-e4110fb6dd9d cad82804-b5e3-4e58-b3da-a1995e77416a 4d70c648-e092-401e-a528-4e382c8f93b6 cc31263f-e7b8-4499-ab9a-9d9d85f301ca 9497d005-c6f1-4a45-bdc0-2fb81a69036e ffb885e7-d406-4ad1-bb78-a166d92b05a5 8f6cccd4-5b1b-4e6c-a725-4b6ece9da1b9 4df259e3-36fe-4bc8-84df-1efa21aeb12d d4649956-1810-43c5-855c-463c187949c5 2d01fa28-dbee-4c89-bab9-45b02335f246 303f2668-1ce1-4346-990a-e976090cd660 6b28d049-3adf-4c3e-b614-74ba9bf1e98b 96488d83-092f-4133-a826-1e2cc3a7e00b e4373f21-cc5f-4417-b311-0b2a8a6d146c 23f8f7b2-556b-4fc7-8835-e1f999ee2bdc e7260eb7-4fcc-4729-b796-f21da84e909c d08618f9-e4d1-43d3-959c-b4f5dced9114 bded195e-4e82-4ea4-ad11-695614076a48 738b0fa1-f404-465e-9be6-93425d9a6e74 6d937fbd-70ab-40f9-8f1a-bf1119564cb7 521b40af-651b-4462-b9d8-6affb012facf d0e7e6ee-bbb0-40da-adf6-f893faeddda4 8c3763a3-d5ff-4b0b-ab88-6fd6f990a251 a4837e73-03ae-48a3-9ce1-136a227d7ad2 7118db85-8ae1-4b4b-8ac5-8ddfea5b5aa7 86968d44-3404-43d1-8838-6405368df598 dc35fdc8-ebae-4d32-ba53-30495c68590b 74fc9607-641f-4aea-ada7-6732751684c1 110057c1-7b08-43d6-9d38-9d5908e78672 d5c63fc4-5994-4403-9e65-b868af01ff51 de391d60-3b72-4349-8d94-510779646fe4 daa1c9dc-ea7e-4d01-b4d1-bc78d5affa68 151ad5f7-776c-4217-9b95-1fa973970dbd e192bc92-f230-40b1-bb6c-eabd1a6f3e90 3aa9bc5a-1211-422c-a166-d20caa6f4c9e 12e2b8e1-8a0a-4030-b140-ab10c227e13a 7b974cb8-3d7f-4b1c-b4b4-077ade25e1c7 a5887874-4e9c-4fac-ae55-ccc2da8a71fa ddbe4b45-c25f-4e2a-b455-6fd2d1e33f32 1bae0985-6b95-4b5f-a20c-3f61dc6729aa a80149e5-c048-4b3f-9bd3-097d71c8c1ad fcaa8c7e-93aa-4dab-9ace-2642c0c6612c 1b08c17c-6ee5-40a5-8792-a6eb28023b0b 81113998-ad9e-44f1-8d97-94016eeb2bd6 c7d92aa7-590f-4d61-9bcc-a3742d6be034 42c6e95e-126e-4496-a48f-6d589cf2e5bc 49fb4a11-0c26-44cf-af10-07c167cf1713 4881b309-413f-4183-bbe9-73c0de548bf7 87615bea-04f2-4a14-87b2-09c875901204 1e0438ba-ebb5-4ac6-bab7-d76e7c1d3176 1a13a4ee-338b-470e-8981-e9550df571ad 69a39f6d-3637-4a91-9909-3fa316d12d10 55404ba4-791b-44d3-a6e5-a51d9b5e4503 5cef8d16-abc0-447f-9887-63ca2d76a724 17c86f7d-49c3-4203-94e6-3f9ae334ce5e a6b4e93b-5ea3-402f-ad55-c05522ba8dbd 5613e308-7394-4bd4-8404-5322161ed024 5c236c83-8c95-48f1-9f89-23d44dc3a7e4 d4a8e8d8-2884-4afa-9f7e-bd55977cfc39 55711217-e300-4f3d-b230-dad6d1c0f051 43995c86-a2c3-4eea-bfa5-ee0c77326a3b 3d24ef62-d72d-43fe-b374-47cd1b9df734 6327fb83-e4a9-49b7-b3bc-9af5d5ad67ae 89fc143f-47ca-465d-9c0f-6e6c4f5ceb20 317de47d-87ca-4eb5-bfa1-62c3a7748b2d f9d5e40e-75b4-4c5d-8fe7-3f48dcc5befc 8a321410-5a6d-4098-8633-6d2b6a599b10 df3f4eaf-7141-4edd-9d70-77d0f28334c5 b0fa567a-8b3b-439c-8a6c-378999baa43a 0e9219c7-30aa-4e5c-928e-49c5eb79f81c 864fd31e-60f8-430c-b684-f80a3f4cc768 d1e666ce-44ba-44b3-a13b-7e179222b555 e8bfa01e-d85c-495d-8c2b-3f9bef0071d2 fcd71b68-aa76-4cd6-8e97-48d29b39c89c 7c3f2374-c81c-4795-bd88-a2d97558ef88 9e5cd967-0a1f-43fa-afe3-bf6ef3b79ec4 5d45a6bd-1692-4ac0-ab25-2c40ed549941 2d73f02d-d544-4f53-8edb-72714b2fb4f1 b0c36f0c-4020-4be4-a990-742d0cf1081c 5802f398-45bf-4c00-bb50-6408ddfd8671 ccfcece2-acd1-49f2-961d-69adfc5630bf 48012896-1055-483f-8de1-139b524f1332 8dceb1ee-b3bd-4803-b201-be8d3a2595d2 243b1137-a7cc-4f1b-8c23-d03619754490 5f0c8dc1-d5aa-4316-ad8c-9242c0e5b037 d192a60c-55ee-4791-bbc5-364d9222569f fe3ad18f-95d7-4ac9-a537-2ac369ce9683 21868765-b210-490b-9f45-6688382f2e35 41471d02-ace7-4d57-b010-1911037aaa3f 5ed6fc5e-aa41-455b-94cd-529ac97fb8a0 c76d9610-6e69-47e7-9d63-c2d61827a0a3 30702f74-79c7-4735-86bb-57c1b7e92a55 6b0c9a9d-9624-45ee-bd57-e5b4317d1ffa 688eaa31-df25-43eb-96ef-57923a714dec b5d7ee1b-a17e-4128-84f2-662106d8db19 ea51e6b6-329f-41c2-b5d3-0076e6f7655b 0ca7ba89-f45d-4953-8a02-4da9d80d6ae8 e5b35d79-271b-476a-8d68-ef2898bc5b8d 3c74960b-db4c-421c-b984-29707465c541 b1aa0ce7-61ef-4199-b757-d24366f4cdb2 254f2165-2af8-4070-9a05-752e0b030393 8424d6b4-4793-44c7-8a28-a338dcb31cf3 6873d773-657d-4946-b7b5-648ac6ebcba8 287f60e5-86fc-4617-8822-6cbd8be865a8 adde5f58-3b9b-47b0-b533-255eb94cbb70 a2310e89-6f30-4d8a-a58d-633fc71718ca 6124d05b-f458-41cf-af38-1236c545f96d 1ed2dc0e-22a8-4fd8-bdc1-a5092219a152 0f730bf7-0c2e-4b59-aedf-b6a2750e6393 cd700a6c-9f4c-4d4b-9503-1f0c9eefe4cc a7b3629b-8807-4a6a-acd9-d0147670cc62 ee25038f-c264-4edc-9e61-e0f57cb5f751 0757d3a1-2286-4939-83ef-f2e192973ff5 569a4c5f-8b17-41b3-80a2-3f3646f87e75 1d430656-13ff-4301-9407-0e803a787c2a 657f183c-852c-435c-b0d8-ccaa7a886659 eb839c3b-3a21-4917-8ca3-d67006782dcb a75e724c-68b3-42a1-889f-604c3a4666ba d6ee28c7-5e96-4a3c-a899-e38f191b2fdc e33490ef-8092-4358-bf5b-ddc1870ec43d c8056021-85e2-490e-b0e9-01d7dede505d 210bb58b-9abf-4adf-89b2-d6bb978fb972 92c2a384-3533-412f-840b-41fd270893b5 7f3c331f-46f9-4064-8325-d87876761edf 86e589c7-115f-4e55-8bb7-69dfdc0d9a0e 1583cf85-3c84-4a40-9aa3-57922a639035 7e08dee8-e363-453b-9e51-ddefcb253d47 c03f06e8-028d-4b25-909a-643cdedcc0ad fabbf116-704e-4c4b-80ef-944d05e8b310 576b457c-5031-4e2a-9b0c-e0141ef7431a c0438edc-c9e0-447d-9661-9c34e0d6094e 51f6489e-fe8e-4077-af38-40464fc58647 5fffbece-5007-405a-ad5c-52b3c5731a60 57a04946-2589-4b7e-9ece-a67eb8afc609 8ff3aa50-e936-4da1-a008-4141ae52e5da 7c6857ae-2c15-44ae-b3f8-139bdd9defb7 3e7da260-6918-4671-9438-57e5528c805d f5691f9b-5365-4959-89dd-b6602dd1cf5c 9ae642ba-01a8-4c13-9ec2-d5f758976e84 6f542bd6-d3e5-4649-892a-51743dabc2dc 79edac1e-c6aa-4c0c-8624-ff9fea4a4959 bf71334f-2d55-4729-a75b-66aa93fb6053 38fb87b9-6eb2-4daf-89ad-79bc0436ab0c 9dcf9727-ea81-41b4-82fb-9adf497853cf f2e25662-8c57-4dc3-bb23-eeefdb56115b 9a4b3ab1-652c-4797-a920-989958bf2f26 7bce0e32-533b-4435-8edd-434dbdb41895 a8cbe411-f9c0-4d94-bc74-b4e947679e46 82bcd1f8-33b8-4be6-b1c5-f25067510219 5413d8ef-e486-4f52-b5de-1f124ef3d322 ce630268-925c-406b-817b-6a60fb2dd544 4d3a48cf-cd48-434c-94c5-86fa9bc77aa5 49092275-b846-428a-a62a-3c7dd1c950fb c868d800-3174-4859-824c-f5a476444ff1 0278bdf7-a721-46b6-89c0-608e2f0fbc22 f40a9bd6-bb62-4cb4-8ab4-163f3de581a2 ed59d1ef-8331-4f01-94f9-f350d3e90deb 96865753-a5d2-45dd-8f1e-ff3a339bbfff 6a0490c2-67e1-47b3-9507-523eb7514ea2 e691ab35-9a6e-448b-a6bd-9ab1a95f7263 2a247a31-2162-499c-afc3-1f9bd44a6dc8 1687f259-525c-42de-8bf3-c539cd9ab31b 8c636a91-cb66-440e-a9a7-e6a4d3c901e5 546357ee-af4f-420b-8171-eaf818e777b2 df3a1bf5-b392-4efa-8fdc-74c1c9e7adc3 7ea5ad7f-401c-4e6c-b78b-f55868831611 40e51e60-9925-4cc9-afc5-4928c355c17e 4da9be28-e2b8-4577-9be5-a6807463749a fb968bd0-9ec7-49ec-9327-7ac98d4b7892 b1f8b759-9e5e-45f7-89ec-eb392a4c35de adccf557-9a62-4107-9cd8-44b3e8939d2a aec79412-de0b-4428-a37a-d59afdf74fcb 37d365d3-0b72-4385-b9fa-789e1350dac3 a2369ee4-dadb-44b3-9da4-469edcbe2ace 919384db-724e-4589-b469-75102ac182f3 75c9fb42-f84e-4560-b7d4-c1b239c78c53 f39958a9-c521-4c3c-971e-f25b7777b24e d974af7a-f328-4b36-843a-ef33897318bd 083dd510-43f9-4e2b-b203-e1b3a93eaa54 f41517e7-732f-4ad6-bd58-42d12e228127 e0e53b38-7304-49bd-b4ce-80136e35b15a 25479145-06c1-4c55-8f0a-e0e7f75c3489 f4c54b2a-4ee7-45ec-ab13-e9c2150e9d26 780fef4e-4d26-425b-8fe3-b19ff15102f9 8db2dccb-1433-4324-b5ea-36bd0ef56b2d cb81e7c3-f8e4-45e7-8d78-ac7221bce079 7537039a-db56-47be-b2cd-ecec8434c164 d6b25ee0-eeec-4ff9-bc0e-a280833e84b7 903f8cb4-6577-4fd9-a1ae-a8963a5ec54e 2e961a1f-2835-445f-b5c9-94550f974102 43bbad58-14e4-44c9-a12b-8299c4280f5e d44cdbc0-5035-421c-9315-65097cf47c72 8b6d62b8-673e-463d-b39e-bac93ced3d78 e91ad398-6233-4d5b-9f25-b6301301c795 7c372b35-b5ab-4d24-ba30-406fef0d468f f8f80a2f-028b-4aed-8a06-5ca1361198ed d1962ee2-edcc-49ef-a66b-d29fee4d8536 bb80c64e-6fce-4bf8-8be1-219d00b3cbb9 862ce9f2-7061-4fcf-a1c4-32d6f896d589 602c9a13-6380-4185-aec3-84417c4c4264 b87b19f2-140e-4b70-9d4f-75d9b0665762 233d5721-46d4-41e9-a7c4-681f02b9d05e d222de5c-d83a-4ca3-a91f-b50fc95920e3 474b62ef-2499-45f8-9aef-a237f8b47a98 53756dcd-1947-4b4b-ae24-247c1f62ecd5 ec80209d-7ac9-40d4-b5c1-636eda65fc77 d3faf127-60d2-40d7-aa55-6b93a74be049 afef2803-4420-481b-8a31-b5f74379cb0c 17eeee17-daf8-49d9-ba52-ce549d4374c2 d8c38c9f-a2db-4584-a27d-10e47fdc420b 0db3acd4-2020-4c97-840a-646db2e0db8d c8dcee10-9ac4-4d1e-908f-6b52005a1727 f3ea0b3a-c260-4e05-94f3-1168935cd602 89cb31c2-fcf2-4d7d-9933-dc58619d5d77 16387bc4-8eee-444d-a46c-5189fa467d64 523e8da5-66ca-438e-9df2-8811e5345979 7b43e4c7-5f0b-44ca-9f42-9b6978056abe 3b6b13b3-54b9-4aaa-804a-b4ee5d940e33 98465cf7-2d31-4894-9106-90ad4b80b1d3 16e8f7e3-5a51-40fd-bcfd-582efd963c23 e12f2777-f1d9-43c8-bf6a-b0ac1cc51cea de54da8f-1a64-4ba6-8124-a66f7896eede 04096065-08f5-4aed-ad79-96619dbc0782 3327c42f-d290-468b-aefe-8fc9c8544c50 7ce9f320-bd7a-438f-87b7-bbcb657290e9 5ee56425-1db0-4a3f-b8a8-30cf274c2a9e 982fbb51-9640-4fde-beb5-3c73023d2d31 678e2f81-5d5e-40c3-bc9b-63508c63751a 48ba65f3-5e9d-45ba-b3bd-d467f69c4100 92846291-3b2a-4c4c-852c-5b2e9a939cd3 5b53f7cc-e01c-464b-8896-7f76f004eabc c9a778e8-2d77-4a6f-a210-20a3a5c8e2c9 beaf0fc2-0c86-4d49-8daf-6a38ea39b5b8 6828c705-17a8-4eea-8753-d5c8af42231b c0134e5d-11e0-4ab6-afa6-946a489163f8 78da7685-16e1-4537-93c4-0198d2f372e5 8efc6666-7a5a-4176-94dc-b2fb700b3fe6 949e500b-f91b-4566-ad2f-3297ed4405ba 96aa49a9-6065-4f91-bee1-9a862e02d649 3fe07994-6065-4d99-b172-34d48c693f36 e48124b5-9f0c-4274-a2dc-bfa1a26b5605 ee4319d0-cce4-447e-9e2a-4e26d1646f38 320873d9-068c-4b74-b2c9-3d0435c7200e ad2adc3b-0f8d-47fb-a73e-71e18bbb1611 face2929-b51d-4bd1-83f4-afa4fe633127 fb1f6a90-6c5e-452e-bb1b-e68db7cc8bf1 cef034e3-7989-4922-b648-14cafcc1e46a 0d49e5ad-58ff-45e0-b3ea-3da7a6833b6e 1607538c-fbf3-48bb-a4f7-65370815df1b 1d12e87a-95fc-49a8-bba9-defb3f56f849 b8e8704f-6d48-418d-93e1-42bc8babf6fa 859af04e-97b0-40f2-9cba-bc489a51df2d 5df87aed-94f6-4117-86de-6965e89e8f3f 0eadafad-db03-49d7-9795-090dc24807b2 55a8c003-1086-456c-84e6-81ee9179ab07 f60f6d35-6032-413b-91d0-ad2bc2ec47f6 8de5bd9b-a67c-434e-b31b-75cd45824872 30369966-832e-4d24-9566-1f47d8c4b33b 897271c9-3e27-47c3-afab-3d9b49d8187d 2a6d3e94-2bab-42db-abb4-ee65fa9a5b8b 8d36f5f5-0666-45e8-a40a-56ea10309e72 df1b9837-5171-49e8-a3e1-88a75ff85e89 4b10432c-aa82-44bc-932d-66e821c55bca e8c6376a-bf44-429a-ab15-c66fe77527f8 28813a85-9533-4cac-9912-24d19878310c ce1572b0-bbf8-4c93-9b80-0aeb8457a8c2 b68c1bb8-98a7-413c-9215-4bc9954224aa 97c00529-93c5-45b9-8b9a-090629db0240 09cd86dc-eddd-47e0-b9aa-346ef4613db7 159ffda6-b78d-498b-83e4-cfc8263a1e14 afaa454b-ea33-4aec-917d-97cdce459891 ebee3bf7-8024-4544-b3eb-39b682749d8b 624e1dbf-4eb0-4aee-b5b1-9646d99fdfe5 064415e9-c86f-4d8c-b580-4e8fc6d19220 07fa2dda-884c-48ad-bb1e-886c86f3a1ea 8170c0ac-7403-453b-843e-6ac41480b27f 6ffcf0ca-8ba7-4765-96da-3e8b5ce064ad da52d6f5-0fb6-4454-922f-6b09508e6286 0fe7df9d-85b3-425d-834a-8f43a0413fd1 8a11d935-c895-4de6-9312-c58e2a8af058 d1208537-94a7-4143-8b20-fe691dd30c43 2972ae4c-3b3b-4949-b4a9-d4a82b40a441 7d08b3db-7da4-49d2-9ca3-35900c20b6fd 51f13ad4-a7dd-49ce-b378-610aadde63ec 8ff186cb-78f9-4e95-a2d1-3ddee728cdd0 4a4be8a1-b462-48ad-b36c-18c96cb65aed 6966acb7-2946-47f2-a8e9-dcde46bf8898 c1fe9461-e26b-4dae-9528-9304481065f8 e7b6029e-ff9e-4110-9fa3-43f05f6012d6 ba309bf1-e576-4f70-9e94-dd568812e7bd f4206643-3b83-4c99-b52f-afee1bae6232 527d63d2-d77f-4c7b-ad04-fd2397d6554a 7cd35a3c-c9d0-4982-855f-da29672eef9d 1428c966-d1cd-407a-9bdd-330c28c20ec8 dda1a454-93e4-40f3-bb9b-bfba4c34f837 3a6f9a90-bef8-40ad-a3aa-37296a51d191 41244fda-7595-4d57-a4c5-14a8d2094ac9 cc3de8fb-62e3-4be9-9963-c22c58debe78 4816911e-c739-4897-b9b4-a5a5d7887d40 ff15c923-749a-438a-8013-7b476e75d5d8 ebe5a00f-db18-4831-8062-4c324a90d341 b2e59445-37bc-4056-b0cc-697cd784cb04 d87e1f98-de31-4c40-b27b-0c181650b1dd 05be29dc-68a0-4e4e-a7dd-a40dbe779aa7 e287cd75-6165-458e-b572-c344383d1b43 e41aeaf8-61ce-4df4-8dd2-b567f527ff05 7e701bdf-a8d8-42b4-9c8b-4c8ada42a88f 0d1c0a07-58c1-4130-a4a5-47db7d9a9b77 9006ede9-7b33-4386-a79f-c5497a83ff61 b9be3d1f-0481-424d-a893-121bee19f4cc e9121df3-0014-428d-b0b3-da170e16d003 429ce26b-6290-446a-81ce-9f7f3b135362 ead5c4a7-71d9-4838-82ff-08a9d165a24c fd88c146-c29c-475a-a0d4-a5bcdb6d0557 cc5e18a6-2bde-49ec-abae-9fdbece46c25 c7b0602e-2a42-43fa-ba52-0cdf1bb46259 ec32e68d-ecab-4d14-be8e-a7a516590fb9 a05aabe4-f6b1-4ab0-8551-28f01fec6435 62ecbcee-9fb9-4274-9fd5-d8fefc939f2e cd8e3837-8243-4b42-b448-107f2f723dea cbbb44cd-ebd9-458f-80ec-2c56ea0946da 330dbbe5-8412-48f3-8bac-29584a6ddc67 10e23fc3-c296-46e3-8638-c8620d9d6f79 6148bb34-b830-41d0-a533-883bb651ca27 b8ea4ed8-d55d-4613-9b82-af4321c34d8d a924a5c4-6fe4-4db1-a39d-c96c30e931f6 6a4b0dbe-a96d-4c7d-9118-fb8eecd31055 42f7622b-f3d2-411e-a148-3b1c17ffcaa6 647be399-4116-483e-ba47-12f148a08dd6 579e14dc-8698-4909-aca9-a84c27a9952b a539d611-d248-4c54-8710-e9a92b6f7788 7e3b0747-6861-4bd6-b3a2-a44174b1b6fd 168b4bc4-9ebc-4ed7-b559-aff2c1e238c4 c8b3d22b-3f0f-45ac-bd4c-fb54db395156 ad685a48-d22f-47ae-b32a-2a069d78cd23 4da983ce-3a43-4ddf-ab89-1a52ae7686ce e061f30c-3abb-4fd6-8ec3-6c843076cb77 2b5118bb-be54-4dab-9baf-203c9ae7f0c8 e0f0e2e8-02a8-46a8-97bf-893ef0b93fb0 5a5ff31a-3b73-421e-ae8b-28d2ab02c996 b1e93fd2-c2be-46ff-98a1-5bae6fc379fe 94f9c614-fde5-4fa0-b16f-cdde971896d2 474034b2-e433-4d51-abed-5554535e779b bcf9751b-f1fe-44c9-91d4-fd8165cfcb5e 2d6af6b6-f83c-49a4-9c64-0b429ed56880 1f4ba157-a7f9-401c-8391-01ee2fdffd07 1312228a-6151-4452-9933-96bbe693c92f 2543f91f-9c97-4eca-ae25-8f053e7400e0 b09e5965-832d-4997-af9e-641b3637f638 7de5bab8-0659-4c55-b970-d9257f6d7e4e a326f131-edd4-41dc-9edd-8f52acd1ce37 d65a1183-3f68-49fb-9dda-ab9dbec90857 175123f7-999a-4fd0-8869-00969e2f51cf e3bc2b39-9ed4-4b98-afcb-9ecb1aabe7e9 8bf2f588-d92b-4146-9bc7-a97a0bd48474 78dbe2ff-0d30-4e95-92a2-30abec6b6b50 a1734d83-ec5b-4bb7-9b0e-0c3c222c473d 705725ff-22d7-43c1-b197-7073266f411b a3822d44-789c-44f2-9dfc-806225d06904 9369e525-8497-4c27-9a16-5ea3484b2af7 4baf9062-879d-43c1-aa19-83881df764e1 18072b5d-2248-4be0-a06f-a129d04d0449 373d3df2-ca06-47c9-bc10-5156b0fe5613 143643b6-77bd-469f-956d-c7b260f50bfe e8427af0-269a-41e8-92b6-b964cd5a9b39 0e3fd96f-726f-4af0-b2db-0a109e4b4395 de7388d8-8a53-4acb-aa02-d09b5217acbb 24b5d7be-4517-4120-8703-66f531449119 ed12e86b-c212-4561-b72e-aeff0b429b6a 1bf1d160-3d5a-4e09-a90e-16aa3c8a40f1 74142c47-c8c1-4f01-a6ac-66e85b780d32 bd744656-84dd-4415-960e-b9f1a5420a91 3f9acb5d-9378-48e3-bf9a-55c3841621ec 15eacc58-2978-4a43-9315-64bd8661ffbf 12e54d83-cedf-4047-a35e-908af34e40a2 fc9903ec-45b0-464d-9cac-831959312ec7 daf9d5c9-8bdd-43b1-b2c2-ef41ec2b3b7c 8a314987-3c48-4e86-8fe4-6196ecd72792 32b9b44c-cb7c-439f-b9fa-23aff257a8b0 5eecff74-91dc-4a40-9866-dc88ebaa9107 67f927a7-e2a9-4c8b-8593-da2df946b99d 296d0cff-5f83-4428-9898-0363ea75621d 92e19271-1a7e-4c70-8642-f581df033320 992a1b32-e30e-4c70-99d9-ec6ed90d5d96 f86d0487-4eb9-4438-9149-33ad337a8628 95539c03-c9d6-4f77-9fa3-b0509d0a2145 2b240162-56e3-4908-9139-fd93e62f0ed6 fae73f67-38e9-4e5d-ad85-9060a11da751 3870b99c-aa7c-4de8-ae7d-9007a1cbf1dd 1bb4825a-56fb-446a-936b-8f50de0655f5 07fff1c1-6ef9-4b5d-ac34-f8f08e875bf8 fb466eea-f138-4749-998a-e541069e7c34 2975ce4b-d64f-46f5-9df4-cdd1e1ddea5b 1026bbd8-0b8e-4968-8658-4f3aeba59190 86c7a1d9-ed1b-4a3f-9ef4-5ea95d88d172 8b4c2f93-aedf-4de0-8a89-b002d43657b2 4fdc99a6-1f76-45a0-9adc-68b45edc5cef 3a3a74cb-628b-40c4-95db-9e8836730499 c1a7edda-cf18-490d-8ca6-4b999d7f54b0 88758284-9bba-41f4-8058-02b1bf6446ef 72f617f8-5790-4e62-90f4-722b6e81bb8c 7c999c3a-2f67-451b-ac4d-27f95723973c 96940814-63b1-4c87-9ee6-d17eaef0b5e6 b2767c97-cf83-43fe-93d0-14ea8a70ac3e 9c4907ee-0631-4b03-968e-cdb3afde6e48 d68e5769-2512-416d-84b0-bcb028330fcb e599669b-1afa-4db7-8ec9-bff68ca4b7a9 0d55fd85-2433-44a6-b984-15547a15107a 56310a2d-5361-405c-aab8-40da55043cd6 4c93b0d3-beb7-4b91-a6fa-9d2e38c6bb4b be5b21d7-66da-45a9-a49e-2f6e636c240f bca686ab-fa27-4418-b74a-b4af22fb9110 c6aa081a-5628-4126-a6a0-466d122c0d96 3446ac0f-6a5f-4146-bc97-e627a786af33 42aa1194-317c-488e-99c7-94e3ecc3ab78 86e293eb-529f-48bc-9d77-ba30eb0be975 8812d0c2-4dc1-4fc1-935e-fe5b4684b4f0 b8b45c5a-e58e-4b39-ae97-8f606efa921f a31b576c-6d3f-423c-b24a-f9f3e36a010a ab340c3a-b4f4-45e5-88d3-b2e1b4732c8f 9b07f4d9-16c7-42f3-b1c0-90302d7ff46b 2dd9f8a2-4b83-4a8c-aaa8-7f9311f9bb70 d35c8ef6-5332-4051-acb9-8986dd4fcdc0 f5a44eca-9f8a-4505-908b-2c7243bfbc09 70bb2ff8-7b28-4f7b-baf4-c38f1770be33 7ecf2422-8142-4b73-b748-581cb480d791 132f22b9-9066-48b2-b736-30cc862f7a44 ada95d1e-0f3d-4bf1-a0e0-83ddd8e31c38 8df5a293-f9c1-423b-acfb-0ff81d33c450 45492044-a375-43b9-b3a3-c7c1def5e953 af902af5-936c-4968-8981-a1715edc993c 275b55ad-4307-4d9b-90a6-010842530708 eb42f789-62f9-4708-a6da-19abf5852803 bb93cda4-08f4-471f-9dc0-c5eefbef418d 663c08ea-480b-48cb-ace4-ad5c08e21716 00c2e069-1387-48ab-a75c-ebe5716fda46 a99f748e-a008-4c62-8e8a-3ea4547aaba0 8bdf06d6-8fd0-4c69-95cb-2947efd3854c 4dabed68-7f5b-4f72-bde9-117677a7ef39 4990f4f1-46bb-45c5-a6d8-1fe2722aa465 f552b907-f7c9-4610-8b3d-4bdf3f3840aa b92a558d-4af5-4757-9585-a03fb5e7c5c4 2aec3223-00d3-4b3d-a32d-91ee08bb9aef ad74111a-86cd-44d1-b9dd-416be98a40c4 8e9ec84d-0684-4612-87c5-e93806b375cb 1909b831-5a08-4e89-9dfc-52be2e0c9f06 9a07bc97-bcad-410a-9cf2-bdf316b3230d da71f2d1-e59d-47ec-97f0-cb719cce0777 dbd8cb71-7607-474b-87f4-5b3d96750aea 8db9dc07-9b82-4de1-9f08-05759a5b08ef 20596043-e056-4779-93a6-a35cc848b20c a0486cec-5f68-4fff-91fc-f9f090ed097d 78f412d2-0c6b-4b99-a6ae-bd88d8a5046c 064aed58-8f0c-4f74-8f3a-4b42bf367f96 a593f27f-8319-4536-aabb-33d509030202 f4c96c6d-1962-4ead-9c02-4cb94908cf32 1972b344-d826-40a4-bcfd-2ec62e16a1e9 a6b62058-374c-4ce5-bfd7-bc85043d9191 5c89fd7a-413b-4e2a-bc9b-d967794a0fcc 3836c68a-9d42-40f8-9758-fc1b938a6e9e 37d089b6-24e4-4c38-97e6-22f66281b7b2 f282f46f-4997-4996-9ea9-d25267df9fa9 21488463-ec83-47ff-b116-36214779888d 80618196-7540-476a-9b63-f78f5b889ba4 d7adb1ec-3b17-4026-870b-839bf9100e92 c57fa5f9-361d-480d-8443-626e582dae5d 0f933f63-4a9f-4e2d-ad5e-c6cfac995399 80463e0b-2a4f-4bf5-aeaa-7183d9da0725 76a7a5f9-d460-4c10-9eee-5278ba750a2f 9777fd02-f889-4516-a48c-bdb173c97ff2 e095952b-9913-45b3-bdcc-bb6b6de36317 cc21c44b-c21f-470b-9d03-e0490582f7ef 7f0f2315-9580-4b17-88f3-0ff607ceaf22 9fd2cb5d-b9ea-4da0-aa65-ba5e4e931942 05b33058-522c-42b0-8cbc-d6dca3d32612 59e86ea8-5271-475d-9688-2b547d1a8aac 6faa4cc7-3873-45d7-9912-dea78412c42f f5bd9076-07de-460b-b077-888afd7c2059 908b8245-8db8-4729-878e-71f845e3d599 714d6c84-133e-4181-bca0-0314244f0f69 d35067b3-5253-460f-ad81-fefd89627b22 3a521f56-3b54-4e2b-b4d5-b2ff428195f2 f54f46c5-dc2e-4efe-a504-94b4e1efd3fa 7af198dc-8958-4014-a7db-26d0f59044a5 2eccb832-d71c-45d8-a4f8-dac44f87c6dc d2369128-6aef-4b2a-9324-705a8ba3d346 acb63676-5a48-4658-9daa-e981d5e11f19 27e5953e-60f6-48df-9eca-3ecaaa66c6f0 18287a63-fbc7-4da9-b14d-623957c5cbca 0256b93e-265b-4bb9-901e-4cd2c218dbe3 b31b5cb4-b11f-4dfe-be21-673dcd35903d 7fd0535c-857a-42d2-a3d8-5c7974919b20 53ccb9e8-6301-4aec-a8ef-1b726ebd3490 59fa08a8-f324-498e-8f63-7773ffd96469 71f51f8a-ec90-4deb-a865-ed8cc80ebe0d 2b9556a3-ba2c-443d-adc7-7be29c7fbda4 37113b2a-cc8b-4f8c-8425-5ed082c2ac22 5a0947e7-b8bb-4036-82f7-60d42a2cf1ca 1c3ac068-2cd1-402a-84c2-c9d5bfbae202 f1c8c6f4-df8c-413b-9d42-97266aaa7d32 2b810c5c-7b62-4b72-b317-2d39d5a501d6 b82c922c-25f1-4e6e-a470-e893eb56eb28 c66628b5-2edc-4a31-9c27-11318d53ec52 46933827-e895-4d24-b826-2e034bb48e1f 5d16b509-fee1-4b50-b9dd-d1ba04fca202 c3cb515c-4058-493f-8a09-f4d7a36cd12d f1867e64-9a27-4203-a33c-9e2c5d48abdd 51a4633d-e51f-49dc-a895-523d18d65402 8d412711-ddee-4506-b960-577832648fa1 93f75a28-da22-4dfc-b14d-e00c90182bee fedb990e-5cc2-47c7-b7ca-3438cefd1fd8 bb126857-dfa4-4ffa-a804-5282bdc7c89a 0b873c70-4552-41cf-8274-83f8ae2e150b fa395d73-c007-4c1e-bee0-9119ad9ea751 5bb6ec67-1e03-4983-a61f-40af404b1b5b a7c0e3cf-0c74-47fe-89fb-8b4c9f9fd934 48641cf6-4361-4629-9ddd-7ff4c28fabae 485fe43a-9e2b-4977-925f-616b3845e302 47e26b70-e98f-48c8-96d0-d00bccfbb609 24d74814-757f-46f6-a8cf-11d590b788d0 f8f0205d-8035-491c-b54d-e1ee72c32035 2bedce8d-3239-43ee-937a-f3c9d80a5c05 b858c25c-bc8e-4abf-975f-f37403f7f12d 79f0f332-0f6b-4675-8d6a-e535c50a0177 fc76d4ce-5e09-45bb-9a33-c12220de4e28 5b727f27-7b20-460b-a099-923801fc74b1 a41576da-94fa-47ee-a0eb-dc1ef565a0ad cc1ab80f-bfde-46c3-bacd-e7cc4af28c35 d99d6a72-2701-4942-ade6-1bc138b2512b 21828fec-f784-42b9-bc7b-d246e1b1130b 8feef663-b2d2-4d02-8b0c-cc01cf1f9cab 11468635-ff02-4eec-9bb8-1a3423db71de 72712948-6c0e-4cb5-b273-dacb8a11698e fb5d0506-5d88-48bb-844d-8efd979b6aaf 3c71f528-5c3d-4ac0-9cc4-021d22753597 2914a009-1e4a-485f-8c5b-c47c551be9cd dd3ef282-1e7e-431d-8214-9f9f73a5b0ff ac5642cb-065b-467b-babe-781754d65bd1 3801b3ac-611e-4a23-bde2-4f6923380181 ee8622dd-8cd4-4a17-8266-7c7f2fb23ec5 7563c388-b2e3-4f87-aadc-6058d286fc23 55b51d31-4a29-4d0b-ae8e-bdf13e9fee0a cfe98e1e-53a0-44cd-9a2e-518ed94493f4 0ed53479-4681-4212-8eaf-9223135f72bf d652f90e-1cba-46ca-aa33-4c629492fcd4 2ed4b38e-7e56-4764-a1b3-3810113b61ac 2d296baa-e985-41b0-b99f-1a7fdd17fed2 916e6413-0bb3-4809-917c-3f8a7079cd09 88602836-0f18-4c91-8d69-2bd619f87f82 cb9c4b41-a02f-4265-bcc2-2b1cda31f0c5 c863beb6-a1a1-43af-8643-04171047cb2d 364f7dce-5cac-482c-8a4e-93aa838263a3 04d40989-c7f7-43c6-9950-6caf12c439af cd28fc58-a348-47fc-8446-93eccb5ed2d5 18ebd3c5-429f-4dde-a3d8-89faa1d2ad16 864af3bb-7faf-456a-937f-1658e055677e b623a88b-ba54-4ecd-906d-109c5f17b73b f5610746-0fc6-4d32-b7e5-2b0a7ee34136 bcda159d-af77-4d81-ad18-0f1b325b3cb4 d0490b82-a855-44c9-83d4-d7324483a890 a5a969d1-9237-4ad5-88ce-ba5c578562bf c1342a67-f380-4aaf-8bf6-b68389b558d1 8daff7c7-577e-4cd8-bedc-3d408f2082aa 87c283b9-bbab-46c3-ae55-b3199d85511b 0f5d64ac-871c-4e78-b329-8225d6566701 099e6bec-855d-4f17-b1eb-ed6f2eb1f117 5321b26d-fe5a-442a-9ff7-16cf2664cb7a 2bc74eac-10f8-4fcc-ae63-0c833b4da5ff e474d9de-ede8-4bfe-bf1e-ca4d1765728f ad305775-ede0-411f-8002-17252e36f3f4 1c560a35-8a33-4021-a7f9-9a9890f3d1cd d05485f5-83a5-480a-8254-8cbe7fcff40d aa96b683-784b-4113-810e-b89fbefbbaf9 782609bd-d682-4ffd-8db8-3487ff320002 30933d5b-4bc2-4e10-af25-831e7f22fdd7 c547cf08-0f0a-46eb-8d3a-91fe22344ead 0db0455f-2b48-4104-b025-61c0f0aeba5a b78d7dff-dad3-440c-b6dc-a5045d2100dc 7235943f-d59d-426e-8c4f-73803a021dd3 1dc93e5d-55fd-4f8d-a2b7-0643b1c34abf b69e7b5f-1202-40e9-b864-5efbd33432c1 78e80074-c14a-4469-a26c-ecb86dd8dee9 92b9fa41-7e1b-4d05-a71d-cb803038ec86 85256016-8c6a-4013-ab60-7e1f826db279 d142af44-88ed-4664-9aac-8115d5f35019 c2360ef3-b2bd-4c87-9783-44c80597f8ef 41b06241-9880-44f8-b95a-5b8994e72b4a db376cf3-67bd-4d60-aa8e-7797fb4e9eca 91ae8a3c-30b5-4a5b-ad39-5c3daed58ea5 d39da949-0130-4b64-b0c6-6f634f3e61cc 2535a3c5-52f3-491e-a7e3-363beba4fa02 cc336d00-9dbd-45c5-ab5a-71f762da3436 04910e61-0db8-49cc-a0f2-a0d9156796a3 2d30f6eb-4766-45f0-a02b-241dfa08095b 39f2c2a7-b4b0-4ece-8566-05a8881e1778 caaed9f6-97fc-441d-a636-f73eea2d43f3 d8af12a6-89dd-4037-b626-d067aac1eb0a 8150e86d-2742-4695-ac0d-16ec1e783318 333d8b32-7233-497a-9274-cf6f319ac8d3 9291e878-0749-402e-8bcb-2cb0eefe2bd4 c66f5676-c124-4f6b-87e3-1a02f0b53766 b1ae1fba-0f1c-4c32-a551-ec2127dd6df9 cfdcfcd7-8aa4-4c46-8e38-eeee9bd096e2 dce18407-f94d-4e83-84fe-53c82133b80f 09c82edb-0e9d-4e01-9421-75f6c324650d 89803713-922e-46e2-af05-6e52d37a248a 2e82de83-0400-412f-ab6c-3a7c3c256620 a8bbfb94-d2fd-444e-bc03-2c7261cb4c8c 5cbc90c1-5b68-40a4-acfa-7e071e36066a f313dc0c-b7c6-4fc7-8a5e-13a2b856bdb3 aa2c57fd-2a1a-4bbf-8b2b-80ef91b766d4 d3bce5d6-1781-401a-a7c0-f7fbb08bdb0c cf78ce04-526d-4888-b1ed-cbb18565c920 d00e33d2-1a6a-485a-a9f8-a195a7c64c9e da9b25b8-6802-4ba2-b3aa-fcb5d73052f3 e44d54a5-2314-4657-bc06-b98fa94a7608 56523e1d-e57c-4f1f-9c83-e1b4af16cdf8 8e9bd869-c653-4457-a265-23183297e8ae b7937903-d388-406e-9247-5e6c3920e955 e90a1f97-6733-4435-a0ed-b37f8e9de137 8aca94c9-5169-4874-b1c0-3ea60c2d637e 260cd347-9f10-4728-b69b-d5e3f77860da 88afd407-0564-4223-9cc6-b362b8761180 86672b74-8fe9-4cfe-b1e5-8c850df12f7e c4c6e374-39b6-4331-9f70-a13327a735a0 94ce3ff4-2ca2-46ed-ba71-fdd31355189a 0bfbc875-cd5a-4dae-b827-df65bc2729e0 380878c7-9c5b-4f16-ae43-c5bdc00d61e1 bc1eea86-78a9-49b4-9636-fb2dfe9ba4b3 902d8831-b809-4b51-8e53-08b6b29ce021 0cb42e0b-9349-48bd-b11a-b9aa8e1ebcd3 62051701-9ca8-4d98-b9a4-4b3cc3acbe64 861794db-5bb6-4c9a-87e8-c1228b4194bd 10abae92-8fc9-42c2-ae05-230ec19608c7 cf8c4c36-7e42-4a2f-a3da-c4438d813304 dee91229-662c-42ea-b115-45553b2818a5 b47d2f0b-590e-4cd6-bd79-e57e7a28caf8 b3f3d1d8-11d3-4fe8-b09d-ad4502406d06 f2e10b8c-13eb-43c1-a676-e8141aec6b71 b3fdbec7-720b-4013-9402-14c577c9f54d 0f38c90c-bf82-44f6-ad38-879edc2bbe76 27609c95-99ea-4aa2-9d8d-64252a4b5535 a3c79e23-714d-4012-b8ec-2e9cfd552fab d8ace070-a0b8-47f1-bf3f-020cf85e10f5 81083f6b-7cb4-46a0-b006-1ddbe002059d 37954532-2706-4c7a-90cc-7ae098cf944e 502b8e15-be8c-4842-b994-4d9ee3d25a73 510b92ae-b0c9-4b5e-a97e-2c1cfca6511f 8c41e902-5860-4be5-982e-ff9828c5c72e 0c841b76-b063-4827-bd54-7b663dbcc54c 57372da9-91c3-460c-97fd-ca9e993c3675 cbd821c4-d9c3-4feb-a42d-29e0703bfb17 37099fda-5079-43cc-984c-48ffb30aab98 95e95732-fa6e-42e1-8013-575034813fde b3369816-e650-4beb-8ca0-b54e6abdbc43 58edd1ba-46e5-45dc-bd6b-0e609cfe1f8a e08058b6-9239-433a-8c4f-62dd6cfe124b 6d27884c-b896-423e-b74b-2c57bb9b89c1 deb8d257-7605-4833-b9e8-91bec681ebcf d8c27759-0b85-40d1-8b79-c7db094889e1 d79686b3-d218-4f49-ab8c-6f1a6835f985 875a6c01-248b-4fd2-ab30-40eb3f202434 ca8627b7-6fb8-473a-a76e-39a60ab2237c ecc2029b-b7a4-46b3-9177-d5c131dab035 500a346e-4f03-44e0-bfaf-66d1fa6d6cca 6662469b-ad61-495e-9b0f-769eef7fb69c 1c10f09f-1e34-4cfa-aedd-482ad9563ebc b115e113-6400-4e71-974e-8bb42cc12b37 8a613a46-2a38-46c4-84d0-c8e003f70348 04a3c2b6-5821-4cb2-9ed5-021cacab88db 7ca02d38-686c-4f17-b63a-4fd9afa7893d e3e2f208-05a0-4d94-a863-1c022505b65f 7f183eca-b01a-439c-981c-23fa22f4d12a cb5598ad-1574-4e7a-972f-cd421bd20771 24302467-e895-4e32-8db8-0600709e0881 a42659ab-5e0c-4e06-8a71-c733355e461b 1128b5e0-bdf3-490f-bf26-b2d24c20d842 e91c3a73-1449-49c9-b36c-25dfcd939346 9c96fd87-cede-47c3-9426-61dce0dbd311 629d26ac-0986-4648-9d84-c6c91765e12d 0ea9e042-e40a-40c2-98e9-1f46a64fa624 ed807f94-2dbb-4ebc-8068-f0f6e9674e61 c7301608-124c-4c6a-bc2a-689f165da249 dda2ef3f-92e5-404d-9ee7-3385e0841179 a794a02a-b051-4559-9b19-3c49c45c5498 3b02a432-c02f-4527-8735-ab424735d267 aa8a12b3-1932-49cc-ac35-23695025badd 11326e58-fce7-42f0-98be-5fbca66f2c6c fee5836e-b558-4daa-a1f2-4b65a88f899f 83020136-40bd-4fc4-ab88-e862ebaff0f4 74954457-d969-43b6-bba4-98f312d12320 f17d75fa-ad72-431a-9e97-86ac417a393d ab420697-0a76-4bfd-8aff-ba7f8949c82f 8cd5159e-46e4-45fa-b212-db609eec9fef 9807ca09-2e08-4785-af81-3e1664bb7727 32c75ee5-eff6-4455-ae5a-9dcb995ccea9 d02eb95e-f2d5-41a9-be5e-e6774b374e74 ea1ae4de-6e2a-4ea6-a897-ac8ab9ff0aab 91486d35-96f8-4f99-bf47-2094568e19e4 9a7eda4e-01c6-4c60-bb20-20adcbbc0942 ac2f9fac-0d9e-4462-b71e-d338ff46aa10 398d6683-6d4e-4b3f-8cd9-a9e46526990e c89dc72e-cdb6-47e2-af4e-cc28e45925a5 3e0c2a4a-7cac-406f-b5be-1bd664e8d1f8 aeb58ad9-f589-4b5a-9e09-75841d309dc5 6ee189ec-a2e4-4b2f-90ae-029eae0b851f d67df64d-e5de-43ad-b1b8-21c0d8e130ed f3efc709-cd88-4fe8-a1a0-f17d913b3361 09b69251-3bcc-4a1b-acb3-9f7c79ab2071 d2b4c784-90eb-41c1-ad16-94d4f9dbde45 4a672b28-8765-469e-af43-36f1cf06190d 5484d5b2-92aa-43a5-96e4-2034534f9a13 275fb53f-2168-40b1-83d2-d7c620aaa227 fe8e23bc-14da-4d6f-8782-b2702fd522b9 d22dfa6e-23cd-46ea-9755-55a0f9feed73 821bea7f-8aab-4ff7-b25f-857be4033d2c d6ee4be7-3b4b-4151-8788-dc583af5fc70 810ae272-18a1-4129-b1ad-e0c51807f9b1 edf2ce24-a5a9-4096-8e1b-98a831fac4d7 a2cfb720-b0a8-463c-801d-740dac042c4e 2ce106d8-eb9c-4308-9d1e-b48072dbec25 50127ba0-7ffa-487a-8c94-4bd8776aef1a df5d7a1e-b841-4b7a-b332-da835a041dd4 3675d2bd-50fb-4411-befa-97ffd6b105dc c7e01169-ed7b-4ab0-8548-d78b30fcbcf9 4c6c8a99-acd8-4bd9-9952-1a84036e4610 3e1d1c0c-a7e8-400d-af2f-b0f0868b05bb 29404744-daea-4230-9956-0f1f9043c26f 11e4721b-53bb-4423-ba20-25a80a570a94 cee6985b-c2d2-480c-9cf0-5524c749662d 0b346c96-1973-4017-a1d3-84eed5c4fc19 159581ed-8f6e-4163-9e31-3a38d3315343 da3435cd-1477-48f9-896b-7f27922e1531 4986d283-7ef0-49d1-a7be-f401e0084c09 685edfd8-85cd-4aad-9365-71ca46f565d9 28c3c412-8dbf-41f6-8009-42f4deaca069 a8d6e759-4902-4ce0-9d0d-3ed15cf6705a 65b0d350-b618-4f03-b4ff-ad26718813ff 957436fd-7cee-42ef-a21b-74009bdd8423 37904e33-0bc2-4db0-98a7-23b1332ff0f2 9bafcb90-c62b-408d-894f-4c45e4d711a3 332534aa-8bcf-47af-8b80-74122d748976 1d8c58f9-6060-4309-9be7-a7d21df561cd 399f0c5b-46f7-4e4a-873c-89cdc776b45c 14473905-9aca-43b6-bbf0-cf797eafa6ae dfc59745-a9ff-4da6-9f20-f08c6d72297f 6f0ad357-b5db-4475-8027-8dc3304c34aa 38ff58d0-3e8f-41f7-8ae6-e76517edeeb6 97a85d38-82dd-4099-b383-acd645bf8423 a7835faa-1b47-400a-bb3d-76e8f28940aa 076a9272-4197-45c6-8e73-ee7c65bd1356 6e0cbcd5-91d3-4a9b-adb3-6f1883839945 df2d1502-0e46-4184-b403-50ccbbee7873 81e09625-645f-4f44-975e-f760be370ac0 a0e35db7-8656-4066-96bd-eb3624ea7a0e 4ab6fae0-f906-469e-af77-64147691fece 9f45694f-e7c4-4077-9edf-3f87b059850c 810c64e2-a10c-4afa-b039-cfd2e507eb10 3e85e6e3-0d97-448d-adbf-73d16e189787 5b7f4933-de7a-4d43-b54d-7f7fbbe80d18 2e08262a-280a-4949-a130-c05f68c4a5aa e7f5a193-2f32-4ac7-b097-b7e7b3aa1144 b621a9cc-b884-4634-9acd-9387596e0916 c31c62fd-c6ed-4eff-ba13-2c27d720eb9f c1d773c6-d077-45e3-9c74-e0a051eed5c7 b1632863-fad8-474d-9c1c-dd8fae6f2d56 ead504b4-74f3-425f-b162-04118580951b d36d8f50-9971-4954-b15c-d51c1975fc36 8bee2389-f4b5-4c58-8bf7-8f5522257c1c 789fc41e-2614-4d40-b721-56a96a2a7779 7f4ae13f-727f-48d3-91b0-5d15095d5a13 c805d234-3ee1-44c6-b471-54e4be48a4ac a07579ec-0cf5-4161-9274-020fc53c950a 85f116d4-fcd8-4c2c-bd1d-27a740a4d43d 5939f75d-ea67-467c-9038-eb94898c9067 720fd4b4-39e0-4234-8cfd-b68a08f13cde e8aaec47-86f4-4bb7-9c12-69babe9e565b 76c7c12a-d0ff-4303-a7fc-4360b3fd8459 903703d9-5012-40ab-b1cb-c4150cf575a4 aa63aa2e-0c6f-40ae-ae7f-7720a1d4c0e2 20eb17b8-c282-4df2-90f6-6f124b7539e9 4e0aa9f1-6919-41e1-85ac-ead916bc0e4d 813babfb-ae5b-479f-99df-7f54617f0fbb 194d755a-7f26-4749-8ebf-469f99bb341a e9908e8f-667d-457d-a1e3-61b13dec9daf c191b2d1-076c-4ebd-88ca-1d140ed97d59 ef525625-9e51-4f78-b989-14773c88d382 9f2079d0-e59b-40e5-873c-be2e1ac5e224 5548e6e0-631c-48ab-b394-e461160cfacc 51aa6509-c2e0-4844-bca9-1a848144b8b9 7ffa76d7-99b6-40fc-86de-55fed523789b 5c004fb5-9bf1-4d0a-9d40-2a341b235731 973cea41-21b9-4589-a25a-e49fd3f1aab0 1813ca99-e7e4-4155-9cc3-52bf573151d3 9e0cb638-8792-4e24-a30c-3b0a1a92a00c 17d6d637-3de9-435b-b5ea-8156e9c791c4 51e032c4-ff5c-4123-a005-f4b3cbb072d4 0176767f-8acc-4748-a0db-46da9dfa0523 6779cc5b-a953-49ac-a24c-30661ab3aea0 8a1c6cd4-57d3-4473-b635-23ffc8ada4ee 2903a443-cd81-485a-ac4d-d888cabd57dd 0fd9dfdd-3491-4107-95a8-f82c39a5f5bf 39a3e42b-0209-4f0c-bcfe-5f306e2507c9 63afb12a-b764-4d0b-94fa-0a7f61831ee5 0bfc9ca9-dd2b-4c8e-9d9c-9a3407859291 dbc0aeaf-2b8b-42a3-a498-9159645bed5c 82c3d50d-b73c-46b8-b430-1de8663883d4 67fcc852-4590-4c9b-b123-ebbef8a84d44 19d7658c-319d-4ab2-acf8-cafb2f1d1d9a 97a662fe-b161-4d12-8395-1dcc504abbef e99ca186-cfef-4407-bfbd-e47da26ce4f0 b8a5db05-edc1-46c3-a99e-cc2ec32a95ed 2e5bc18c-5384-4d21-b2b2-e600e945aaec ba20a026-b8b1-47d3-a4b7-9dd4f734a407 6762d095-9684-4f3b-abc3-ee8c6c2e90d3 256eb91e-769e-449e-b365-0cfc915b6cb9 31c75357-d9d3-4f14-a9bd-427eda57c476 5aa8d301-43b1-412b-ac44-2f51a3cc671a 5fc162fc-7499-4f4b-930d-d3a4d020b08a b4807e5b-7ef7-4142-ad01-5e69ca947838 6997a50c-902c-4479-9c4a-9d8cc2c79156 533fbc40-a944-4dc5-8ce8-e754f3c7e15a 13130803-3d77-45e0-af3e-532662bbb6b1 d578ffa0-7b99-4ea3-ad81-cab1cf604c9e 1a7a5b1b-274b-4621-9fbf-9a68e9a857f8 5893804c-0461-4d31-bfe1-f3455e3d4496 dbf56a71-905a-43be-9a4e-68a16b027c29 926cadd9-4ef1-4571-b088-d3ce77d634cb 81265a67-250a-4e35-9941-edffdbc402e1 3a19e2d6-f341-4ff9-a8a1-1b4d47372ae3 b1e48d31-172f-4a56-bffa-de5fda1df7ef 1226d266-0b22-45d4-994d-b154e4b3df7c eadee1bf-9dda-402c-80dd-6f15697f3cfa 60085033-00ec-4e0f-9607-23e58aa85f01 8dfa2f21-f19e-42ca-8ca7-40a2e5f16e67 3663c6b3-909e-4408-a015-9bb618b1d3b8 1e3cfb1e-f347-46e0-af0a-1656fd443cbb 096c4af7-b960-4442-a98a-fa99f1146d70 e02e5b54-32e4-4a24-bb9c-a3ff96a9bfdf bbba45a2-4d47-4af9-bed1-c3c600407d8f 1c87d03f-b9ff-4fa9-835c-159123585378 a93f089c-7b27-41c8-88ae-0fc5d9ea6902 50d033be-c974-4352-a414-7ac22ec93010 9bbc7f57-2bd3-43f1-a003-17461b1b9015 83236104-3588-464d-88d0-ef89f6056c85 e5ee39a1-2788-4a4b-8dea-8526a56c3b1f 1bd4d59c-50d1-4682-bbff-5681e913dbfa 0c276f55-de0c-499c-b497-9e8afbe761bf 1a4cd797-2b44-417a-ba7b-043bbb6860ae d3b7740f-9dbd-4b73-8720-d0d48b7b17f2 bc2c1f5e-1d23-46a7-8ff1-2b7720423a20 2564ef5a-e48d-4f48-a148-7430ccae4214 482ccb6a-ad7e-4d5c-bc62-97a3efec6746 df945dc2-2d2b-4644-82b1-7bc577107675 fa255561-adc4-41a2-ac1e-feced0cfe50c 1cc22055-5cac-41d4-b0df-fea20b131883 20d66f14-6b46-49c2-a792-e7c8343147d3 34659d55-0c32-4210-b522-d336fd77f535 a8671764-4fdc-4fd2-9249-7dcb2f9277d2 13b8d172-5310-44e1-90ef-79306652743b 7c1594fb-0c2b-451c-8256-6843282eadb7 3b73d281-b4d1-4880-8f31-274e71c32149 f089e024-1280-49f2-939a-4a84672c2ec6 a03ccc4e-d964-40e8-9f9c-16955ae77000 bf955597-ea49-4617-9bc4-ece8ce6c3262 1c14fb19-bfac-4b9e-95d8-877bca3bf5e2 f65f8641-247a-4c13-bdd5-a4cc8fddcca3 86455329-802b-45ea-b372-a88cc054445b 004e898b-cf74-4eb7-aea3-a6a1e8ece271 bf2ba996-e3a2-440a-bc7e-3ff855f15cc2 73fcbaf8-a938-456f-9dda-2ab5805f5910 791ad36a-89ca-4057-abef-9ffa8075782e 6c8565c6-6d91-4802-b455-81a04a3c14c2 19bc19aa-d4a2-46b7-9e88-a062bf8999d9 85bb7270-3f14-484d-b257-8220b1214586 d099aa7e-0182-4f03-82a0-64b5fb94084f 95b7cae9-97f8-439e-89f5-211ee492cd6e 6806cd61-5d33-4f79-96ef-d31065fe041e 62a8cfbd-b6d4-4de9-b1f9-5fb89fc22795 517cb4bf-d3b3-43de-b722-f3c810a6c61e 6ec4a4d3-5cd2-4a5e-bf4c-2176428cc18d 35f7817d-0109-4bbf-99ce-738cab3a656a fc6e0212-8173-46b2-9b7c-edd77555eb68 6bb761c6-1b98-4ab0-b299-4912590bbcaa 2246ef26-18a1-41bf-bd45-2f0f036e0979 a7876eb9-d733-4b5f-8e6e-4dec9dfabd63 9486f918-4646-44c5-90b9-b3e6f62abf09 4ccee926-ed16-40f0-b8cc-ea4697961ac0 8bc9af19-839c-44ab-989e-64a4b8face0e 1d462c31-127c-4eda-8e6c-58159d946d69 60963539-e081-4faa-b8ed-e7060db381a1 83438801-b682-4a47-8ac9-ec751edd1daa 8d0c27dd-3e67-4903-b2f7-97518f193b62 9c52131a-3c6e-463b-abd7-c133e77d6c54 326dc68f-e6b0-457a-8d8d-7f9f3a95d906 33e1c6e6-5522-4745-a2a9-1c320366fb20 1d1f1514-f83b-415f-aba6-9eef786992c1 08d79abb-485f-45e5-a5ea-0961bbbd9f9e e2a83fed-4550-43f2-bf39-5b1ad7767ed8 0a422f38-b20b-4808-8556-dd1e583e39aa 2b2b4065-838c-428d-a071-8fb4e73b9de0 2d20fba7-a302-4030-a4e0-a694d7b2e647 28a99d75-e52d-4cdc-b909-9cb6c779c909 6a1e299d-2ef3-4095-ad87-8be4fb1f2ffa 3a62d245-101b-423c-85d2-58778506ad3a 854a8464-4eec-46c1-951f-ade4e1d3bfaf 2f380e4c-b431-4e65-bc0f-31700955ed18 38985b49-ebc8-46ff-8a56-01b43b63bf07 c66b9768-dfd4-4d2b-9344-4a01fbc46d3e 4fae17ae-31dc-4173-b370-911ba828742c 529e7c15-e54e-4639-bc66-9c3915b0b4ab c85cec90-f5b8-446b-9e77-30215d6c3c4e 47d88bcd-c9ce-42ec-a603-d7b623e64333 d4af74a6-0b1b-40c3-8a0a-31159e2fc8eb 181023d9-c675-4b60-89f6-be50d4531747 d2ea233b-0970-408f-9a21-82ba005cddda 413d2720-e0f9-46f3-931f-54a4a6453d37 05c91d26-6c7f-44cb-9efa-a87ff25da348 9aaaff9a-8bc7-4118-920a-5909869dbdd2 8d4f6553-a722-4f26-94e0-c33a33513191 a3f499fc-b279-4d89-84c2-3e0948f60b3d 815321dc-ed1a-46d3-a1eb-06abbcf7fce0 60424e69-a231-4729-ae63-510b5b6a8298 b142a98a-e1b0-4277-a531-12aacdc4cde1 fe6e518a-3a2a-4caf-bf39-38d51181a2e1 02ff4c05-d320-4d20-af46-3bc8e5cb8d68 dd8d84e9-6020-40ce-bd2f-7a6632abc08a cf75a905-b1ef-4bf3-9c73-880123b4a5c9 58eac907-552d-4eac-b537-f0af9295f460 58b592f2-8e4c-499d-a2fd-bef7fc50a1a2 b6affb46-8ba9-4ef9-b1a8-417142c3f5af c05a90e8-f4a3-49d2-9b29-30b90fd98c0e 70fe816a-c6dd-459f-8e05-4551619312f1 51550d4c-8c4d-4859-a185-878db984325a e738e9ca-dc5a-4da3-a293-b56fb96945fe 416c0a63-21f8-42a5-8082-8847d7ddceb3 c900b12b-17d5-471a-9ddb-a197734eac14 446778af-5abe-4e79-941d-5a960ca94f5f 66a1d459-ec0a-47ee-99d8-95491492758a 0ed57e30-ae54-417b-8580-f7eca7dbd1bc 166ee514-02f0-48cc-b71d-c1c53cd2e5ff c9df3b04-74db-4332-9b40-e20f5e4f42ce 6739aed0-ce2e-40a0-b5a4-e6043acede33 1af76868-64c8-4161-907c-9165d82d7dfb ee9b1e25-d96c-42cd-9b3e-a8dda309f747 00263ce9-4cb4-431a-ac00-b28c37c39267 55dcd964-3dfb-4c46-85ed-b2b6b7d844f4 615ecee3-ab31-430b-bd12-22d9c5601e8c 2afecedd-1ea4-4c8c-8c46-d3e52dcc4a21 f72edf7c-fec0-48dc-9817-3e10d71bdfdd e9e6bd74-ffda-4c04-a21c-80fd6321cb2e de6904cf-0724-4835-b9a8-2716ee3f2b3a 01661b2b-83b3-4b46-a364-da98fc4935cc abfcc3d5-d2f7-4051-a702-e691e4ba5d3a 4e4c45ce-1e7a-44f8-8c75-f49524f56a24 d7a4ea2f-7351-46f1-b53e-eb1ab7573d59 428ed89a-ad6d-4f71-829d-86a4e480b2f8 8d489147-be33-4cc0-b0b3-07225e712892 4dc008c8-13ff-43d7-b599-2c8e1d53aeb3 683a2be1-0da3-47c2-8ea9-a0c5cb358775 aa782c4d-9882-4b53-b37f-65a77419b2ce b90c20d9-4360-4028-9d32-2e39fa48d3b2 41476ac9-67fa-4968-8fc9-e8475e9d02d8 873a7b04-bf6d-4abb-827e-c6f8e5403aca 247245c7-93e1-432f-ba1a-b8f5879394e7 c704c67b-9b1f-4d1d-9e2d-6e24838e0bdd 3e2bcd07-7d8d-4d64-ab45-8fedb28ca9f1 c9fd156a-699f-4bc1-9293-b2fbe55495cb 88477565-c97b-41d4-b9e6-2d3f05954041 c02748a9-18d8-4aa6-8b23-138fb84e57a6 abcbb12f-5bae-4ec6-8565-e8ec7236909a 1b3decfc-961b-44fd-8172-99e232714527 e61ff038-2d0e-43f4-b8e1-34e4792ad106 5bbf1c8a-d030-4abf-acfb-fec78d7dec18 26868447-c667-4152-8401-51e10bd3a5a7 6258e3eb-68c3-4028-a30e-bc3c9b0a3cdd ff85c1e6-d58f-4969-9f81-8ca21b2f7e7f 864d58f4-4ea6-4755-8cac-99415949924e efa52005-e078-414e-bb12-8acf0f25021b b45737ff-60ec-43f5-83a3-d7725ff1f5a2 eeefd9bf-58a0-4b75-b4bb-b00479f1de2b d4265307-3e82-4a4c-8ba8-924214ee5e4e e89e1fb9-d022-473d-8c6f-47587aa71370 40667717-9b96-48d1-a3b2-9840f6446fea 2b145ce1-80a5-4156-85f3-613aaa2b6416 3e84e3cf-8b70-4c32-8b04-bf23e579a072 a03271f4-b314-42ce-a3e4-37ff8b63247b 04cd8f04-f7ce-43a0-ba96-0a64de60239a 290dccd1-c297-4c8d-b177-c0991d10d7c2 0c797281-1fd7-4ae2-aabf-6c2745fd4bf6 5361ea66-81e1-403b-b21c-42cf34267662 2f15a80a-8d0c-43ff-8b8c-c6fa4f8157eb e30b9add-93b7-47e4-960d-88a546e937c9 4a3404a4-39b3-4bd6-aeac-f6f515bf539c d66046b5-71c4-404f-bd07-4ee7ea7aed66 9e4822e0-e6b5-4a67-8b2a-af4efd50d51c c558fe1a-5eff-457b-9903-3b111235cbe0 5466d9ce-1b2d-4eec-ae33-5ee993fa5658 17cb61a3-079d-48a9-bd32-2a1c3b53675c 0263b7fc-788e-4203-bd3b-a1be1bdc1427 44c74d92-e497-495b-b511-8a76a0a15d40 6074a0cd-5bee-44ce-bbca-fba93a05755c 81d47ea0-c924-4ce3-bd3a-07a9c8e89d4c dd552054-ed16-45ea-bff7-45ab7a42108e 091e06f4-eb62-43ec-99fc-0b122db03b3e 87b2c008-041e-4731-b310-42ea61859f53 c2087f6d-de96-434f-b4e3-f9a66bd495c6 a43b091b-261f-4b42-a712-08863c066d4d 8e98ac27-328a-4412-b36c-a62ae18850dc f632f8c1-bb58-4245-a737-70cb97170f0a 1423f2f9-c863-464f-a308-cdfe45efbcb1 49936054-3f50-4107-856a-1b68b4e2e564 d0874bfa-6ee3-4ae0-98fc-e3f2411db769 fac2420d-8eca-48f6-8126-cbf63d012a68 4c49cda2-49f8-4c5c-9fd0-0873f7ea17ba 191ce9db-3f4e-4f92-889d-5d87df7f3e5b 9a93f71a-e10e-4187-a388-db567bb9f1ce 07355e2e-0a75-4459-a8ab-ccc2401a3203 3a965970-9cfd-413f-9fdf-c9ebdcf4306f 578c4b03-d77c-410d-804b-c378ae0aef79 c96a35f0-8f32-4275-8b68-3142907f6dcb dcb5d31e-0f02-4906-ba75-19290a211dfc d45f3b1d-c7bc-44a5-b322-d0a9ce617645 cb42ee3f-07bf-4a9c-b592-eb565991ae4c 09ac00d9-6b9e-4813-ab19-49670b95db34 5eec8760-0382-41e2-9736-9d6148bb811d 7b1b3680-1d5b-4439-b71c-7aa6c09e4da5 83cddc10-975f-48fd-97e8-e74281e56603 09c8c297-1fc9-4d67-b477-f1e90bfb1b07 8a74a7d6-a64b-4bf6-92f3-1d898fb7164f 1c6e50df-f954-478b-a21e-c2c04013697c b5c7ce5b-8813-4d37-a416-848f09e769b5 d1486b39-7da2-4e3f-b176-c74392477f90 90ee644a-6cde-4d87-b845-f4bcc7756431 8b0bd8bd-e27f-44e6-8923-2bc6a1adf7ae 985287ea-5cd0-401c-8e5a-3ddd599e7542 3a0bd9b4-3829-49f9-b49a-0df628254853 b970f974-85ed-43a8-9556-12a630f41d6b a5089d2e-37b8-4d4f-bbc8-45078d65ec31 5ed43a28-4e89-4cfe-9660-5863a459f171 a252d531-8f73-4020-9b5b-d5b9e7ac18e5 4174f867-4051-4b1c-b266-e2824fb5e8c6 82d30f97-6db8-4c9b-820b-22e76c3e3c5c a7cd5250-bb6c-4b88-ab44-7b91cc5ea6d3 71fd4947-7900-428f-92b6-6b4905602ead ca59baf0-3664-44ae-92ff-9d672ff34b00 2cce9424-ad59-4564-a992-48f3b648cd62 526cd21b-c1bb-4c98-9af3-5267512dc38e 4f08ef4c-7c74-4fca-8ac9-af74962898b5 a8716a40-b507-4b91-8b6d-930cad7c1afa 784a1b64-2899-4187-95e2-f9384a9888e7 6dd8d870-5046-42f2-adc1-eb1d800aca9f 6dca45bf-7e38-427a-9e38-153a73a07004 e3b559a7-f9d8-4fb6-952e-fa6940267dc6 ef8ef59f-c2dd-4644-bbc8-6c8b1c7c02c7 6fac86ec-c067-4dec-b4d6-7ca8a1a46023 226962fa-1c10-410c-bb67-2377912eddd1 362a4301-528d-4a68-8f13-9422b9e5db52 a9fd60ca-9b26-4099-85d9-1f81786b3df2 5288cb4d-905c-424a-8630-fc93b6ed3bb2 767a7624-e4ae-4a0b-ae8b-ef4a18a1ff5f 42785954-7496-4105-a929-bee3978a46fe 2ddeb63f-8ea1-436d-b734-87026692ebad 447fa0a1-bb1e-43bb-9b6d-29d40a13d791 455fc773-da27-4106-b428-f8a3050111f8 6bce04ee-c44a-43a2-8632-ad25e5c3dc03 23a29903-5213-4611-88c9-165daadff71a 718f6b61-0597-4d51-8ec7-429d6ae666c2 6c1dac4e-38c0-4e8f-b62c-e6c2d712933f 1c1519b8-2614-408f-8c2e-7a380520542e a7d9e24a-53a7-4822-8d21-fdf6a4f85c2a a6efa5c1-1cf3-44be-a048-ab8a9e466dc5 f56da354-f61e-4e4b-a796-d68deddeb33d f99aae27-c2fa-41d0-abc7-18cac410a661 e22f6595-8c7d-472c-a117-25db181c930b 8c369ba8-c39d-4975-a2c6-9665b2ebc08f 7b1c3534-fcdb-4e5f-b960-46e773885d2f c496b04d-7cdc-48d4-b176-9acb4f551f78 b066dac6-73f1-4991-bef0-e0e58b9817e2 63921d1e-e96f-4ad0-b96e-d4ede11e09b3 7e3f6511-be91-44f3-af43-cce1b0d5f63b 1aeb6fa5-5898-4caa-a7af-c19491607701 ddb1fec1-ba8a-48a6-910c-c79deb076241 d4d910bb-c107-4054-b36d-8b671be2709f 9e3b1655-f827-4c24-952d-c446e8e1b16d 483d8a61-7d10-45a8-ae31-dd0d737f5fe6 441921e8-f812-4413-ad80-d7c3087ebadd ae17e4e8-9d49-4e18-8e51-14e14c7d31fe 6028477b-d109-4e28-b798-e45ffd246150 99cd8470-f907-4924-ac24-203756b7e547 8591a3ea-9403-43d7-ac6f-fb26f0bd4625 80304096-0365-461d-a9fb-1c14b0c2d74b 3d37b82e-889e-40ca-bb1d-dcc3ee68deb4 c79c0f91-446f-422e-a467-6bbd9f576f0d 08f2dd4c-5a4d-4659-b40b-44fc18745a13 a52e1426-6abe-4598-919b-c83bff3dea57 6ec7b7ab-f9bf-422f-a39c-4a698e62e91b 5bd55cc1-28f9-4b30-a8c3-0d25bcdf0347 c718bf17-46a3-49fc-ae1c-ba05eb499c89 ef738f4a-7f8c-4152-86bb-1bb0106fb21e c2d77afd-adb8-4fde-94ac-6f4d4a7ae68b 98ed2fbd-c050-464e-a8a0-fba140dc16c9 9fdac9ea-e6e4-4a73-b11c-a4c22fe76fee a1c40937-f943-42e7-b83e-988acb6a10fe ef498509-cd1c-4683-83ad-42f7d9164dc6 c9ea2f86-cf2b-4d5c-acd6-424f72fce132 0fea34c9-e355-4026-b825-201d96051242 c0cf97c6-d872-4107-ac48-5cfb4c587e7a e4b40bd1-0e73-4b26-aeea-730cedc2a59a c8d85909-89dd-4337-8f25-5f4619939da9 28dd639c-5659-47b8-b3ce-0583ea352c68 ee0aaa65-9cf8-4f91-935c-92b0581967a1 02c509be-7c79-4f18-8e2e-123599554798 41c078ef-bdd2-4c12-800b-56cd88907a5d 31cf410c-ce7f-4ff9-aae8-05bdb4c9acf8 cef325fd-89ef-46ee-bc59-24869c0bd144 6cebabf5-2b3d-4f27-8214-04367efe6307 98621bf8-f701-46ae-be1f-b571bda1e0aa 654dbbf0-0058-4057-8f65-d0f9752f85fd 4e386c57-7f51-430e-967c-d9d2ee5d401d d73fc1e0-6bae-4cd8-8bf4-11ef34c8f9c5 a48158c8-37ce-4231-90e9-e3d72cab7895 669fe9c3-dc36-4d43-99db-d02a5284f6e1 79cc7580-7e57-4879-90a4-bd978ae0b8f3 ec104d8c-af55-4cc3-9159-ffc4fe4c4acc bb00946c-4e78-4895-acbf-c181f9d1f9d4 b6a9a650-f1ca-4338-a75b-b2cb096ef957 da5a7782-d20d-4c6b-be3d-50390bc01360 9c1d6a21-466a-40f1-b6e3-5490ea50649d 45e05c30-c727-409d-ab46-0e2dd69c43a5 635c2bc3-12b8-44ea-a0df-70a4979e3e41 fa3e6adf-3a29-4181-8cdb-a444d6d39f5b c442c541-0262-42ae-b029-288f46820407 b950f3c9-bd7e-4976-81e0-a14c55339328 0fbbc1e4-1b75-48de-982d-76a6549a6cef 6b5b54ac-6b9a-4998-ae12-91520b15bb48 2eb10c7c-f065-4ca1-8fe1-109c2c286724 4b7ed421-d5b5-4c49-bace-b831e7171e7c f8b75f59-2cc6-4e0d-b2d9-fdacb90225cd adc2f06e-973f-481b-8a43-4aaa62b601f4 c76bd0f0-d98f-4afe-95e6-5bed374389dd d6816b55-0cae-43ff-a9f1-7b0fc7998ca8 55692ff8-fa62-4dd0-b633-b8e2ce995e20 86cd1fa7-8336-4743-8d08-7d21cfef4c81 846bb8b4-16aa-4292-9fd6-dfe11d05f05b 920f3e6c-e251-421e-9ecb-f5964bbf5129 041e9294-7fa6-432b-9ad9-a303ab6ba243 6ecafccd-e985-43af-bffb-af5e57421d29 89ba6c84-e6ce-433a-8bf8-6c7574570b7b 48af0e3f-4c96-445b-8b60-efefb962e012 381e5797-e87b-4c1d-9a8b-2bde7468f253 a6997de5-f02e-4790-879c-b996feff6c32 b3d64684-794b-4b7b-a593-b64b3539670b 097bc85d-a281-470b-afa2-b56c36f97dd9 47efc3fa-5cc9-4d46-a789-fef41460ee0f ff35539c-fade-4577-ae38-35aa77193d9b d0d53203-d7ee-4954-912a-0bed81674c9b 2ca465cc-cfef-4385-9b13-d2eb97b1346b c578fb07-5ce4-492c-a7f6-15d2be98b8c9 e07f675d-19a0-456d-ba5e-d55b61a66053 c03e9858-66c1-4e02-9744-d1a85aac69f8 6befac4a-8c84-44e9-bf23-1d60b1b8755c ba9a29ba-34cf-4575-9278-868bfbc6825d 672bd10c-237c-4991-9881-b61cc989ca14 6a622541-07e7-40bd-af83-abc2835521a6 db22e5c0-6a9a-4147-8e66-251d75515788 1b37a25b-0435-4ad1-9ee6-76f0d6b0e0ec c319f581-0614-40a4-9b70-f47fd24968e2 3fc5270d-6fd1-4655-b087-5f86c6de3165 94e20da1-3613-4acb-850d-5a3066fee641 1869ce98-78c2-450c-b7ec-6c85a4dfd165 930aa3f5-235c-47bb-96b3-bdca9f48ffb0 e349d575-666d-4f32-adb5-46a296ba2def 612dbada-12f2-46e9-a1b9-0169adc3c2ab 5a1813fe-31ce-42e8-b472-73e49ebb2128 edd6ab1f-b036-4ef9-943e-1b0891df9934 eb3b12de-6e10-4828-89cc-172117efa514 754a5c8e-1764-4a20-8413-ef5718ab9fef bda7e48f-b988-43c8-b850-2b824da09ae8 4477efbd-862c-4629-bdd8-4dc8e86dd6cb 5e9a2c2b-15f0-4d4d-8d6a-15923ae195ce 4927112b-7bb9-47cb-a100-5e2216f38b3b 35983b49-a2c0-4071-9afa-6dfd688df923 fa1a9ff6-df04-461e-ab07-d92b6628a1ef 9ee85d0a-8f23-44eb-b590-32e440ed6b59 e428a0c0-2186-4f4a-8520-af4fadb2fe05 597217e1-421c-4314-b221-3e63f0000782 95631f71-a050-4924-be9f-191a6a8fd3cd ca00a84c-b195-45ba-963c-e3c5fa2100ed 0e5039a1-522c-4496-a809-00493ab8a1de df61e1e2-01f0-4438-8602-992c3ee42d83 303218ca-5922-4ce1-9dc2-e7f59921f250 abf08d91-247f-41e1-b9d0-14776ee99f9b 7a27a02c-beee-4ac4-a263-50d6ea8be0d3 ee509c69-d7aa-43ec-b0bf-7b4f4b3a4c4c 56e361a1-864f-4941-9cfe-5d593c56238a 199c9ea7-c6a3-4920-a48e-8b5dadfe41c9 09296742-4fd0-4400-a8a1-c1feeaf4b23b 89977334-af23-4bea-b1df-5e6c38b3ac09 292e6e02-314d-4d78-aa93-c207dcc59fce 2702f5af-f6a7-4144-a1cf-9bc56200bad6 f6e98c7b-b770-479c-a071-516ec0904135 4051d933-1dae-42b3-b2ea-e380602485c5 aeae7f2b-6525-4496-a3c6-accec7102c42 8abada03-4e3d-4ab3-a465-68ecafe3543a c9434817-bb1d-488c-97dd-375772f8be5d 5cfeed3c-ef14-4a44-af15-f2b5956d6e5b 2758a695-bf01-47c2-99b7-c1e78fc14173 46cf37c7-051a-469e-894d-537500389681 481b07e6-3082-4b7a-a888-da3e7998d5fe 02c76750-59b3-495b-808c-a81c1b918eb2 85071e97-2dce-4515-a15d-f3e10bc138c7 79d6922c-a0c5-48dd-864a-b96f7e85573e 4dfcd2a1-53a8-494f-b9b8-e371e2755a4d 5298f46f-f58e-408c-b2db-8566eb709ad8 31845266-8296-4dd4-aa3b-90a9ba7f3ed3 1017c080-e2f3-4636-83c0-8415acb044fd 80f5a400-758a-434a-90f2-0b23c23d0c32 62d5ad0c-e55f-4f2f-a288-0e140aa3ff2f f9ebf0a4-cc2c-4988-bb95-b1194a37e76b 09fde4e1-63d2-4437-b074-b6a8635c05d2 cb59ba44-5313-4cce-bf44-6ad971061212 fa2bbf73-ced7-478b-b7f4-349acbdef5c1 46b51146-4356-42a6-bb0b-485f1d5265e8 822e233c-8257-4d66-8ab6-5da77f60c438 1c329542-1248-486e-ac4c-ad120893e5f6 54194d1e-4eec-4f64-b880-48372f6acecf 7f5d4f87-4c42-4fc6-ae8c-3848f9aebc74 e4185ec2-0c77-4454-b8ad-55aee0d4db16 fd7f1539-43a5-41d0-b352-cf05c1f34a4d 660d799b-8146-4c6d-86f4-aebd4c916cfe 2dd77e2d-0ab8-45e3-aa2f-81aa7671635c 32730ed1-8c3b-4b42-9e88-64859d96bd5f 49b45a06-8603-48f4-8397-9f1097b92337 50baf617-f481-4939-8db5-5c89f8a0e2fe fe397ce5-1f56-4468-ba15-6eb0b1f2b4ad 45a331df-25fd-42fd-b055-73b28b964329 912aba23-37f9-45b4-91bb-a587f15a282d bb20bcdd-1822-480a-bf73-e79e9443c5d0 b6473209-a0aa-48fa-b6b8-b322d2e39e51 cedaa664-cba7-430c-aa07-26f8582ee554 f23b2c46-3951-4aad-bb4c-f54beabc5332 16144526-07eb-4d79-9eaa-7a48b4ee2956 c6a1db3e-497d-4b40-95d9-a72c54ddcd60 35a48cc7-1f37-462d-b119-e2e1f87f4b42 9b889923-127b-4676-8749-f513bfde258b 03335f27-387a-45e3-a7b2-741a4841869b c3867491-2da3-4753-89c2-733eefba9b25 66aa3984-f3e8-49f4-9eb9-0f6dd8378a5c a0c07892-c3c1-4bf3-9905-2d4b8c6fbe30 b17f91d8-46d0-43ef-971b-d95102dcba6a 908e890d-e475-42d0-b1d7-cbed85af7fee c3a1eac0-d487-4439-97a0-c36f0be27f95 abf15f8a-14e0-4b71-9f9c-c3288eed16fd 65af00f0-a664-4012-b3a0-fa98b41afb62 b5713b91-4b1c-46d0-b8a4-83828f5320da bd8f5af9-3e61-4e61-8434-422cabc3f7ad b2686a86-71c5-493e-bd6b-f0a61c3c928c 46a1fc57-9da1-466b-9ac4-03b1f7c52dce f9fc6f09-5f88-4425-a7a9-cf62908c5b1e 18df3367-e4e8-40e2-aad9-b700b1bb384a 89da0402-c6f8-4757-a652-6988ff6f7c1b 7288078c-e512-45a3-8033-d4229b014957 c289759e-00bf-4d6e-8498-2eb619428f61 103ca326-b507-4a7b-8f48-d7ed4d5b0b11 93130c85-81b1-437a-8ac3-8929351c448e 056fa2de-907d-48a3-a00e-fb60cc8c706f b01a5e18-9b31-46a3-8e79-4310cef860f9 f3fc2025-688d-45ec-b74d-83559180cfbe f104656b-ac18-40f8-9bc9-475c057f6edf 40102173-4af3-4abd-a188-401c465cfb1d 52b8e04a-6057-4a54-b25a-d0aaf4f4ac84 423f7cf7-5a9f-4211-92ce-9d81bce4de73 803c857a-3e1c-41d3-8bcf-9a70b5c7b269 a6d72dbb-378c-4ae6-ab83-0a34be41c352 a20590bb-2b1a-4f55-8269-08c151fb11b8 53a9324e-439b-4b2c-a373-f552ed6b1461 cd00cc11-2ea2-4ecb-ab14-4c49d780e910 46b520ef-aec0-4187-b97c-82995d413fc4 76776421-f875-4ed2-927d-462555cc5581 5c01114d-0807-45db-b63a-afe51fe67719 e817c101-6111-4db6-a388-be815a512cd7 1fca30b4-b2d5-4b93-8e82-02308f1988d7 35d3eda7-aeda-4587-ab51-9757332cf839 b7b1379e-ced0-4e7e-b7fe-e6ff4f77d0f3 a789de80-abd2-4961-9fe6-af0585168260 f05446cb-e3d6-4670-a569-e957b8d6e527 fc4bc21a-902f-4f72-87b3-ea6793afce16 87c5281d-ed00-4769-8973-1f30fcde776e 85039b37-8bcb-4de3-9409-cf379e1f0e27 12dab8c5-3b94-43eb-8a37-33b683c14072 15d84785-eba1-4969-83cf-e3eaeb4d4760 6de5e8b8-1f54-498e-8d98-93d4a2db2e80 af7e95da-2594-4a7a-b0c0-8b31c8aaf094 81107942-cfc6-4c0e-8fbf-e079c8f70585 4f56822b-1ceb-4da3-8b1a-da2633788957 05c09c48-6c5d-4719-9011-130b8e75bd4c f650ee33-e5ee-448d-a49c-170e50908303 f5768d52-e663-4b9e-a3c0-e6ea56e8d35b c8ab93f8-d321-4763-b272-ad6e3bddd748 67079ef4-189d-4083-a09e-e457848382b5 58e5c8f0-2e34-4bda-9fce-f11aa5dbcaae 967bfe44-9cf4-4c8d-911f-aec19f01f69e 8eb86101-5b91-49fb-b448-c3507d0a41ed 4f0ebb6d-77b5-4a83-8789-78b9879884f6 9e5e60ac-46c2-4710-8b1e-5ad9b82379aa 011bbfeb-761d-4b9a-af8a-6b2194a76dbc 6d1ac872-f6ac-407b-b291-e5deb952bf75 4b876e0f-2ef5-4e71-932a-67081ba1c333 0115eaf3-c543-4639-8056-2b3c351b8a2a 8d36eb01-1f8d-44d2-adc8-b4a3af5f646a c378fa32-65d3-4a4c-a50e-1924d4823b1c a532f8ec-f251-4008-bdeb-a4a471b2c511 42dcb932-3ddd-48eb-96e6-41467ff9c5e8 34709aa8-329f-45c5-953a-91fc9af3c136 097c1669-e65c-417d-89b4-9b8260f79cbd a51a7bc6-c0b2-4ef0-b563-ac97f7b4a042 1081b913-a85f-49bf-b218-025ad75dddaf 163a9fc9-f5b1-4b16-b197-b9196c678ac4 c3e81656-177e-423b-ae2a-0fe62214e1c8 c2865e31-80e5-4b77-aa87-3343d303055b cb19169f-72e2-47ea-be95-b62b8433065c d0178ba0-07bb-420f-8e7a-261ca5f4344d 07ef7378-e252-4af7-a977-c8bfaf24f26b c08e5665-aa0a-4f74-bf99-ca8a51696f5b b4dfe944-b146-4e47-aa1b-f4f3e002d1ab 760fe851-5c40-4627-8814-3a6cea4f0197 bcb80b10-6ea7-41ec-b32c-79faf84b85a7 f7c743b8-e924-4500-a7d9-34b92be717d9 138e2d3d-3011-4acc-8004-18ccd0f3b685 41276daa-2572-4f2c-8751-53931664695f fd4d9eff-2805-4d8d-9e3d-1209b0535e8a 7bec3476-d397-4f4b-8c81-d5d4b301b6e4 80d4b17b-e23c-465f-9c3f-a094760e6e23 5c47cac2-fbf7-436e-984a-d36bbbd291ae a4ac1269-24b4-4398-a157-b5158e9ce611 1713ad55-1bd0-4f59-b251-083a98e2cc8e 837e59cc-92b2-4105-981c-2052b59094f2 dcf5a0bf-c047-4395-ae44-9891e33ab007 e75701e8-a5fe-4a27-b39f-5f0b51156808 f6377da0-e02c-4996-a021-5c4b54444ae3 aa61fc4d-4e6f-42c7-921f-317d9066ffc5 7e7925c6-8bb1-480d-b832-00017e0f931e 35431b99-d552-4bcf-b51b-5514b5f31dd3 bdb95d06-a1ff-401b-baa2-8aaf3130c2f1 24564682-7add-4118-81bd-6e6bbced9a09 19edff72-2530-465f-9b01-b315685add70 55a424d3-e35e-41e2-a90b-fc7f3fa98c08 9ea36329-fc22-41ea-b57a-4c17062ff534 8f24df47-40c5-4f54-a9da-8ec9e2c157e3 fb1313e1-90db-4ac8-9e8e-9ee058836bda 2c02dffe-5900-431b-b10b-06c6584e5633 728239b7-ff93-4d32-aaaa-7124e41480d6 d1bc6dc8-1b29-4192-9369-d94ce71f4c73 0e9de1b2-dddf-471e-b1b6-467a30e134c2 8bbceac3-4cf7-4be1-b193-484686722298 7c31b1d6-bc7b-4353-b8d2-0e36037c7bcf 9ffe2e08-945b-43ca-88ed-9f5af6c0cbb9 ba361190-cb86-4793-83ab-47f6426639ec f1e5c61e-88ac-490b-a23c-42adc9d53008 9c768c90-de58-4863-a712-08962183b7fb 969df856-ef70-4b49-9712-d89a9e09914c dec7f3d0-037f-414d-a1ca-7c1fd2e5a7e0 49d2704b-8eb1-4552-9f1c-6b6cfe833761 025bab05-f600-4b6f-93ee-b6f84e7d4d27 fe6c278e-ea14-429c-9b77-810c3974e0c4 3056ecf9-6a4d-4080-b394-f227cf1438ed 159631f3-ef2b-4396-820c-69697f418111 72dcb368-c7d7-4054-aeca-b78eb237cf21 98f2d8ab-5aa8-45c9-b0a7-16d8bae03372 e9aca1be-4927-4923-8767-3aaf111da3a7 76ce36d2-3eeb-42e4-88ae-723390ae8659 136040a7-c06e-4cf5-9c4c-72b1a75a981f 2193f31e-4e39-4ecf-9ac7-df6dddc56971 929f5588-caf5-4cdb-a445-e93e215c7663 e349edb4-d2df-4ed3-a321-32a030e384d1 13fd4a42-1ea4-4623-9e10-1d35b1e7dad2 e1652747-824a-4027-88d1-e1f79aee785d 23bd2df5-c8b0-4872-8443-d62fc7c9b57c ee669811-e49b-41ef-a6c8-9859c56083eb 66bf7bad-82b9-4309-af67-cd63f756de63 dc3b673d-e6b4-48f0-a644-1c49c85a399a 8d91ee58-ef1f-4b65-92b1-884205fb1f7f b24971b8-dff0-4d24-b1a2-24f4227b89c3 acff5343-1d00-4ff6-ac89-3ae9cfdc53eb 39a68903-ade9-43e6-b442-bf0251a91950 e9564bac-f2a2-4f2e-bca8-db920f3cc79b a37c0c78-404b-49eb-9a85-ba6a96f7f552 3ab20f08-3647-490e-966b-7a2df0c8967f d20239d1-8515-414e-be2c-09ab964ea991 72b0575b-5d36-4f5d-9577-6f7c4b6c7dee 65538c6b-2fd1-40f3-9b5d-2e702bf6d0ac a353e572-5367-4725-937c-6fbb96ffe9ef 138d5289-c68c-41db-a50f-ee8da17ecb62 8a1d5e16-5fc0-45ff-b4cb-057f4c6e06b3 93feeb4a-0e9a-49a7-b282-ad4c5f3cc4fc 21a55f16-5bdf-49b3-a97d-11da2277dd4d 4fc60156-d75e-4de1-b6be-5c12e6b80aaf 93aac923-b5aa-4dce-a1ec-eea44c70af73 117e288c-e589-40be-965a-c65362f72471 41145b4a-82e6-41f1-b8e2-0bfce4bfe1df 3fe3475c-4460-4508-a996-c5b8df0f31bc 2bb096a2-a1d0-44a2-b379-03970e858da2 933875c9-623d-4b07-9eb3-a884af9482ea 4520bfba-f67a-43ee-8002-793d8609eb7f 48f3a88a-cbcc-40a1-8248-d7263e4fe329 398f56c9-bd45-48cb-a6f9-400d71060ae1 305ff9f4-8b61-499a-aa79-7c48a3a992a5 d56953fe-71a2-4f49-87ea-7dcc79be8508 1caa8d7b-933b-4ecd-8694-135ba719afa4 3405a85d-e8d2-4ce8-841a-488a6b9ed078 e28cb0cc-71d6-443b-85e4-b4b930ce17c7 ff1699fe-cb9c-4117-a1e4-fe249c23bd34 27755799-1a25-417e-873c-b489942752a9 23d51c82-290b-45e8-bcd6-cf55bb540a6d f43b7ed2-3cc0-4bf4-9470-20ff3350203a 4436beab-1916-433f-93e0-6625f1bcf794 137eb32c-ba3d-4eec-9e8a-7051b75d7e05 c744db90-85f7-4210-b086-87108dbd46b1 6c420d21-c271-43ba-9258-0161d8c83fb0 be33ef91-506b-4721-bbb0-c06c7927ba26 3c3a1453-5148-499f-a4a1-db64704209bf e49f226c-1cc5-4f3e-ad2a-2d7d193b78c1 c035835c-f054-499e-81e6-3a15df23aefe f9a38a04-ffe7-4e5b-b58d-e45563306116 b48ad367-14df-43cc-8de6-7dc9303a8084 0d3f3f9b-f47e-47e5-bd22-9cc109d4e939 401c0d4d-c67b-40d2-8d79-e1abca1e40c7 67c013c8-294c-4f3e-88c3-78efa3aeed63 e3f645a6-6cb5-4526-a0b4-c6e79a4f38dc 7f77075d-4a3f-4562-934e-44aefa996dfd 891cc7b9-53e2-4b1d-81f8-20a6bd0ae71f dc7fc268-ff83-4776-adef-d1f1c0fc2fbf 7bf4feef-df30-4505-aaf3-58df85a522f5 4b57308f-eb00-44d8-982c-13d85b84df48 6d81704c-fc9d-4581-a3ac-ae10ee508608 aaed2e9d-bc45-44ed-8990-b1083f94396f e7aa1843-0833-49e0-a777-6e393c967d6b c69f8392-182f-4b3e-b0cb-2ddcca8c4fb4 bd565d71-4fb7-4586-a8cf-36772015508a dc4751ad-33c2-4246-8421-a769ffbd7cbc 0f65ffa1-b45a-41f2-a583-bccb13dc6003 ff085e8f-56dc-42ec-b6e9-48e5b36dc24c 45208762-989a-4aa5-9c1c-f7e80c3fa57d 2ade6a67-e761-4852-8d39-68878a2a3c0d 7493171f-fd98-4d44-a35e-e80830fd0dee b0ce380d-dc27-44bb-9f98-49e80d7842e8 f6d77734-f499-4877-b322-42368a132941 cc57bb92-02f6-4db6-8ef7-d0828ba92586 5adde2f8-0dc8-46ab-bcf4-ec87ce5ea24d 68d74f7f-b5d8-408f-be93-ddac6f06e231 74833068-7246-494c-bdad-6b239927ff7f 2413124e-cd60-4fcc-975d-9036a123078d 1316dd23-c7c2-4c5a-ae05-47a19ee78092 9f44a861-739b-4f28-98f0-f4bd48f734bd 83c74201-6cff-40c7-9d1d-b7de4d20431a 7e184663-fe37-4217-8607-052792547290 34dbb828-20a4-4f70-aeeb-c6c7753ed00e 033400ab-9cce-4dec-ba25-a2104657a23c bcdd1052-8d4a-4a68-968f-375bd018240c bdd51b15-b8d1-4e89-8946-bcc1da426b36 3e672d42-368d-4fc8-9228-634ad839db92 1969d30e-110b-4762-b9ff-4badbe0be68a f02c963b-fede-49fb-a028-fde9b8884817 a0ad59f7-a746-4fa0-9dc5-97c9293bdd05 e7664945-753c-40c9-b795-19f918905f34 a152f49c-ad46-4b8f-8634-5c8eb348f355 17973179-8c8a-4116-b062-9542688490b5 9f53bb2e-8c30-4911-bd93-b557aa180ba4 d58c4c70-e06b-4af6-8b89-d10b291ea7a5 1c15d10d-e1c9-4d31-9738-a8c9383b8934 82537486-dd56-492f-af02-216b5840af29 e1aa8602-c403-4257-a934-10c3d0fbe360 b0344b82-1f82-4722-81ed-62bce209d23c 02c6d5a6-fb2e-4960-84ba-aec6d04e12d8 166e4bf1-d593-4c3d-8a75-4440ee0c82d9 0ad97015-a63a-4a9b-9b39-391eb0bcb66b 402a3ac0-7468-46a4-b9eb-ce5e768019ec c7f972f0-190b-46a9-b5f6-a85413286030 f792d912-4b85-42e8-b1bb-a8a24b382587 77c6f8d5-e084-4d6a-868c-243961052b25 ba4ac537-07fb-460a-9476-2e72b380b0c3 99e71088-7522-47ca-a14e-46ad44e6ebf1 602a2d9a-4129-4643-8017-e9e382072dd8 94c88e6d-7df5-489d-a86c-85b9e50ee40f 44dc6b1f-afa4-4f64-ae85-50a826c41d15 734e0ed4-2a4d-4a70-8a97-4f3e8472553b 6d7747c5-47bb-4c8c-968d-38ba1d48cbdb d73d8a76-7301-4246-af55-a0c3e7937b2e 77fb266e-2580-442f-9858-975714603954 23d5f9ea-d3ce-41ed-8672-3cdf8c0ae740 cfb7d218-0b6e-4631-ac4e-604d8eea300a a7c32f33-c478-4f2d-9f23-de8871336b15 b3920d6b-dd9d-42cf-95eb-5e13c334449e 2619d009-6342-40e1-84ca-dbfd26789163 e0298ad9-55b2-4315-ae82-4a5a14d1b827 4e20eb65-a6e5-47be-9f60-166cc1869e4c 599d7493-2f13-4aec-bfaa-dcc8809e73c1 a6034f35-b46d-4d28-91eb-f5737d7af280 a3ff83bb-d885-47f8-a582-01f2f1a9c4dd d8f012c1-26e9-4a03-97f2-98bc07b8d626 09877a07-2c1f-4c44-9813-0d06a986e38f df0c276d-2861-41da-b416-9a28eaf49425 b7e634fb-0deb-4aaa-94dc-a6080fe65600 99097aa7-80f6-440e-9025-593b26bd16c3 07922345-8079-4693-891d-ad9949abf371 1332ca30-78e4-4d0d-83b7-389202fd5b79 54a293a5-1ef4-4512-89a4-f74f5c452c4f bd18b84a-2fbd-47fd-b24e-d7f01c5734f9 478b9ef6-d0ab-4e95-b667-2f49f18dfa4d f6451e30-9ea4-42da-abf3-82a51149f97e b3752ae5-4605-41e0-9103-6389318b16c0 ceb32001-0bab-40f3-8ca9-13da45af9258 6eea6e5b-7920-48d8-82fb-faa8ae0f3680 af4a6737-9792-477b-8b07-fdf9862bc507 475ed545-dc18-49ff-8762-c16016661498 2ea826b6-1c58-4c1b-9d5a-6745d2a45fa0 e015ecdd-61fb-4130-9550-2090288826d1 237b8a36-07a5-415d-ae38-bcbed76a3fab f5a01d21-733a-4a10-ac0f-7d1d5fc5eb76 3d12e8b5-f6f5-40fe-826d-2797a3662f0e 44f33699-5dbe-4f36-a9e1-104b3eba68b8 9142e0a9-1cc1-4ada-881b-03e3e9af7e89 fd41ed8f-f11b-41dc-9bc0-a17013175c70 cbae4193-baa8-4b01-8d5c-e30c3c692000 6d95f053-5cba-440f-ab02-8749085e6bc6 ae0ade95-9d95-4300-bfca-5ea3aeb96f84 a9aa3f28-ec2e-4c00-b2af-45e2e10b3919 a069f2c2-9f89-4508-a389-9e443e915274 d1ad1d0a-af04-402e-ab9b-a5f9e54801ff ed65e2b8-dcde-4ff9-82a1-8abf2fbcf340 5129c20c-2b58-4a00-8f98-0e55473f973d c79c2c95-be1c-4ff6-936d-cf2794340cc7 5d6f7ba6-fc1f-472b-9ce3-3cbe67de15eb 8c2aeb9e-d07c-4c8b-8549-94b96908d8f7 b45b1f7d-6823-4f3b-89ed-d7b47fb778df 9d4fc0e6-ecee-4859-a325-b9c8af8cc8d6 a6e84b0f-fab0-42f3-8c97-07fed16371ee bfd35755-4521-46e9-af6c-983a1e994a5b e547285d-df4d-40c8-b301-811971944841 f1a73b9e-10c2-4e61-8664-1f6018c85b14 3d86b235-f325-4991-97ca-55f23a94f967 cdb8fb87-b96e-4958-ab45-9fef99327c3d c7b89d08-1a29-479d-8d11-48caee95e2b1 45a9109e-148d-42ed-be14-b494233462ef c87002dd-c63a-425b-9d23-06e2b13a4e9e 46772c97-608f-4629-99d2-528e4f7c7197 05a7abb7-0eba-44ab-ae02-406ebeaef0c5 011f43e7-9588-4027-8945-f1eb554da053 bc55df54-b561-4539-94e4-d147ce022152 702f24ef-6cd8-460d-bcc1-5ace95840de4 c9f0b3ce-5a38-421a-a209-b9d711d87ef3 09acae78-c395-4cf2-8ce8-34805b2feec9 aab791cc-6a79-466f-b5f4-f7359399ba85 4cc13543-acf7-489a-8d2c-67b4c6e1a0f2 0707ce42-7a4e-41d4-843e-0b28808f8e3b 3ab64cb2-35c5-42e7-ab22-2e9e88fe1d51 f03ffb36-8177-4d29-b9f3-36f204bce15a bd829025-2c9e-4cd7-ac75-e0e0a7c3116d 4306bac3-fa33-4f62-b8dc-e417d62f0bfc 8258f8cc-d92a-4a7f-a84d-76f123c3e7be df102a84-9ebc-4ce6-ac6c-73d917b2e483 8d9d7396-3cec-4638-9944-5779cc933f0c fc6a4c08-b472-4ec5-a539-538ea2118e6d 7e3744db-3212-4e9b-8fd4-d16300e04567 4caedfe1-70dc-4a0b-979a-eb8f722d57cd 24a3a450-826e-4ce8-9494-1f9c7197d428 6b6aed1c-efdb-4db8-9f05-148f0d8a6e11 1a21d835-5f74-409b-99e4-f0b1cd23ee1f 732fca65-9a52-4fbb-9e8c-aab40a1597c0 5d2271f4-1d8b-48cc-8502-eb974d3063d3 3565f455-e215-414e-ae56-f325d536abbc 44d31978-21c8-4d47-95f0-ac811cacff43 fd035c6b-8859-4fbe-a134-cb616016ca9c bee66eba-1375-498c-8f44-9de44d433be4 497787f4-39d7-4a36-a64a-bae63b988ec3 d8f9a60e-46e7-4ffa-9d35-cf544f88eb7a 9ea0d03e-c2e2-4904-9485-279cdd7de840 c8b1b8cb-cdfd-4888-b57f-a171a5ded453 2c9e28af-380e-4503-9a35-949e3e97d007 ffb20857-d895-434c-ab81-53dd6a305a08 81b9e6c1-71b4-45b2-a0f1-a3971fc74aeb 8c1d79d2-15e6-438e-88c5-79cbec4495f1 7efd7b88-5e0b-4a46-8c4a-4f255e573eee ade71c04-ad02-47b4-add8-0cb10daebcec c4a1b34b-8407-4b83-bcbd-fb4ec6390327 4b916695-33e5-4c72-88e1-73eaccb7b0ca 712ca3e5-35d4-4120-a6cd-3bbe34efb8a0 5e1226e6-8864-4b99-9e59-736341581512 2be4f51c-0b22-4b3f-8a0c-9a45e9f7ac43 9c52ca0a-05ff-43b8-abac-d9a6b5911a2e 2f213b1d-d625-4068-93d4-9a1ab883d856 564950ef-cb88-475e-977e-80b90a9dab29 66fd7e97-2cdd-49d5-8142-f7b105f34407 925d9f33-7325-40a6-aa87-9de810ab25a5 424506ab-068a-4d11-8ebc-133adcb65d7f 8a3938f0-f303-4233-a62c-55a8b45c27a5 efb16a44-14f5-496d-9270-7efd319f1660 215594ee-324b-4f37-bacc-ea84bcfd526f 9fb21d32-3c75-4996-8217-2bd8d6102e60 d401a689-d845-43ea-b5e5-b2a66c98be70 1eba9238-e048-40f6-b963-0972f7a19c0f d165ff57-cd58-4844-b6c6-74e3d9458e5c d923b9b7-d346-44e6-b50b-89e2b6fac408 693723a8-448f-4923-8f26-63a3645c74af 5f4f347c-554e-466a-8af9-e2679125e40a ec96c76f-ce8c-4660-8528-6bd5ffaaa53a 57cbf575-7218-4673-aa40-85512ceb824b adbc8184-eb6b-4e2f-888d-9e88ef50ce26 0e1ebb93-cf75-45e6-88c2-672132d96a5a 5d373905-1145-48a7-a5d9-9339307507dd ff5bb2d1-6802-4d10-a4aa-4c1f1f09467b c31ddd1f-d63a-49f2-9bca-fbb39a95f112 5f87ba93-ba7d-40d2-978a-1fd34444e441 d7a67a6f-b68b-4df9-a33d-2912406437b1 18023d66-48f8-4c6c-981d-9774835299ae f27535a0-2ecd-40a2-9fd0-1da9eeb28245 ab7eb288-9d81-4d2e-8a9f-c98943143717 5d3132c2-59a4-47c2-9420-941efee3c8a5 f750c462-d1ad-42fe-b57d-8c00d2a443e1 2d9517ae-62f1-4df5-abab-07271eb9290c e293aaff-2a42-458c-8c8f-42f002972b34 32787122-52a0-49b1-b91e-f2eea8ace435 feff4dd0-06c6-4f81-824a-43dc0d35b618 10eb1686-eed0-4b22-8252-a20a884b3ab6 a5b8166a-33d2-4411-929b-b4cfd7e5c7e2 e950ce62-1aef-41aa-89fb-03fbd5f1ee1f d593c5d7-c96a-4cb1-a5aa-50c2a9678f06 ea1ff713-ed31-4554-a81d-5cea106612e4 a90d30e6-6805-4029-989a-3b0e65743e4b 265f3a74-1351-4761-9ae1-cddb448a1bd8 51808a5f-a2d0-4a34-979a-41d391d72991 9b966541-b60b-4900-a32b-52c8cd26a31e eb4a20e4-ff38-4ece-99be-9b2462ec3cfb e4fa8de8-eb8d-4341-b586-f925aecc100c 5e897db6-f6d8-4e61-af65-9fbd47d4443e 7a5139dc-853f-4615-803a-b37efe821489 84dda0c2-cee7-4c0e-8637-89db662360bb ee0621ed-c4de-411b-88d7-2fad8e6189ed fbec7598-a02f-401e-a550-7294965bad36 14dbe994-664d-4c4d-8b70-260e51d8c256 df8d5373-fed0-48e4-a66b-48c2b486e35c 2d4f2f09-7a5b-4c8d-8448-d299917e5b58 b28bb88c-94d2-407b-902b-0e9a5a5bd7d0 a1a6e3a1-4598-4505-a3f8-ecd2e8926f63 74c9a5dd-9ced-4cdb-a60b-0755d942eec6 8696c6a6-3340-49a2-b89e-99862f99fa97 6b77b514-38c8-4224-b474-112f37f230cd 54ec7fd6-9e73-44db-b11c-6a5038d36186 d59283cd-9f86-4443-914d-d674cc5e7502 c92717d8-c71c-4b0b-9f61-7efceb71187a 82e06bb1-2c04-449f-b70d-bc10f6cf6769 e1895476-75b0-4db7-acbd-fe8e0b03de05 2f20e56d-6f5e-49bb-b6b6-1a5cec36ea7f 8c9f5ab4-569c-4c25-a116-1161f5d73d37 cb3008d3-9a78-4d0f-bc69-0622c5d4f2c2 d3658d42-93e2-47b1-b9cc-95da7ea378c6 55fda828-e4a2-4c89-9210-3a22193f6173 1ba3ee01-a5b3-4b38-ab6b-c4a15f87481e fbcd0a38-e364-47af-b8f7-9e51cbf5844e 6e175abc-e88f-4b99-aee6-b65c9fa00e9b 7fa93652-bac1-42bd-9ab3-29cc2b40187c da766303-2c5c-4bf9-adb3-7f4199b7be63 14dc8bc9-508c-46ba-ab5d-d6cdceb14a7c 63550f6d-5fd7-48d2-940d-ad52a3deaf42 96288d27-42ca-4390-a41a-95e5992d711b fa6b1677-3033-49fe-a9c4-73848133e572 787e183b-0909-46d9-a6f3-f3a8b637ad57 77c5eb7f-86b9-4c47-97e0-2455aa2e4915 0556f7a9-e67f-4073-a2ea-262fa40d2e51 bcfecab4-3388-4566-bdf4-d62fb9ed56a7 e899de4d-22a8-4bb2-bdff-eb4a91440138 14992bd2-ceb7-472c-9503-ac506b69ba51 b0823f0f-9d97-40ad-b45b-a24e6190fbb1 004d14df-f403-4cec-9b74-fa8ff5ddc1aa 28ce3f71-ca9c-49cb-b40c-b52637a60ca5 3eec2da2-755c-407e-b9f2-3743baab33f5 88a09604-d1fb-4d22-b52b-29c40d8240c8 621abe1d-d2b2-4145-bcdc-432701250fa9 e2dc7bf0-4f56-405e-b03d-928daf454745 9cba64af-4f0a-49a7-ab63-d1c53be678f6 1fdfb733-4c29-4901-bc1a-32ca5c2f7ca1 6a3f849f-0970-4705-9c47-8701788de39f 319ec6ed-3466-47f7-8b21-f1c4d0361c4a 1c8e0342-cadc-4bc6-a4ff-a29333a98702 862c863e-ad52-4660-a60a-a48d5f023d36 e1e55c44-d458-480b-bfc5-aa0959e8016b 6f4fdf58-b322-4133-b091-a036e8e446d5 b45d1a38-c5cd-487c-aad5-bf7646dcce85 f44bad03-6347-4e21-b329-c5a43450af6e ee9b7c5e-b21f-4058-bd45-12e75c51572c b0dd9552-48a9-424e-adad-42bda5cb1de7 bffd5d9b-b054-47f1-b601-cffada11885f 3eac6b93-4d83-4973-9b2f-a64b5810e9dd 3dd3d689-c08d-46c6-8625-b92198374097 a8fb7683-6174-4297-8b57-291ebffe8a84 05cace82-b77c-4374-99e6-edd4a1ed1467 283b38a5-923a-42db-81af-dc3a449370fd 19288c74-cc59-4654-9fa0-0d3c87697a57 41039809-ee81-4be9-99e9-98caf500db26 f1d60e93-2cac-4827-a6b2-f68bef5ab5fa e78dae02-b688-4c61-bf1d-9ce3826a4674 12f17774-f804-454b-9a80-0db0b7aabc6a 391ed030-9762-4839-beb5-05749642a63e da1725e3-b339-48e8-9b48-4cd570fd4e90 5128b57a-48d5-4043-a31a-7c77514e23a9 76e9d86a-a653-448a-80ef-318df22c87e9 00a4d1fd-91a3-44db-b39d-1261654b9f28 d4093451-1d31-47df-a72d-72822f881596 ddc22259-f79f-4658-bb1a-bcbb4c7e4656 f6ee276a-8947-421e-9257-f8807fb5f69e a0c8899f-2031-44cf-8e17-36b84b19ec49 26a21876-0781-45af-ad29-ab0261d3efec c5bd885a-6329-483f-b097-0c46cd9480c0 2d0b2206-92f5-48e1-b4d8-2707a1dd3d5a 08e6f7d2-8be6-412c-85be-3e4f0ad5a2c6 fa2b6fef-ffd9-433b-8c86-0e9f275f51a5 20a436b5-7ea9-4ae7-8a4e-a15e3f727d1c 1fca6764-5e94-4127-8167-b7ed8f4e4403 3c9ed6ff-cbe0-4b95-838d-7b5bacaf5fd3 838bed7f-b4b1-4935-a974-2fdec5b757f5 bbf39f7a-dc5c-4544-8d24-8889fdd905e3 2ba62667-ec12-4471-98cb-95b9888aae0b 8d808eed-3c81-4f33-b666-6b16e6c7e048 fc151801-d706-4969-8806-f033750a2ac4 cca2c319-b04a-4208-9c1f-1a08d16112bf 17051c93-e4d3-44ff-bd15-bc225e08fadb 5577c385-bf8a-42f7-8d86-04d7ced5f30c 3a943061-7e48-4af1-995d-526a0fbe0652 5225c6ad-e11c-43a1-9a5d-625356f88883 c0216396-a56c-4bb4-9a24-1b31691ea738 04fc3d57-97b4-4fd6-a626-666f63af9f6f ead644fd-7901-4509-8f9c-385f522dd8bf b7ec6ba8-46fe-41af-9bef-4eb329962a70 4ecc013d-1e74-4729-be65-364be1fe83d8 c2c912a9-c7fd-4271-aa76-d63089d9a49c d479f0fb-6872-465c-82fb-43b22ef94bf0 ca035006-6030-40fa-bb55-cc7351ee9ab2 98dabf16-88fe-4308-8db8-b925af9afc48 f01a196d-fdf5-41ae-a7bb-d40a559f8c2a 8278693a-fbd0-4471-90e0-057b09059c21 f747012f-6edb-4ffe-ab64-0cdc82ba0e84 436448a3-af47-475c-a23b-0caa0e175b6b e4799c15-3a01-4fc4-819d-a98453c7b677 43006b24-83f1-42b6-be4b-6e993e4ce02c e785a7ff-452e-42f1-8675-9ee1274feb2a a6665f8c-a9e4-401c-8297-382b3a9de3d9 2a177f1e-bd5c-40b3-9f69-3fe7f3b11385 7c007be0-6fc8-4aa3-9faa-52d5f0a74cd8 b0d5d264-a1cc-4e6d-8549-5d7b04508478 7f03268b-7290-462e-9188-317616f417a2 ffd683e3-bf72-4bb3-a9ed-2adf580904fa 4c061a26-8f2f-4a63-9331-685afc02c59d 4f6e9f58-f0ab-41a2-8f28-bdce7d24c6cb 2066c41b-59b6-410c-85d5-68f189097140 a7042c98-48bd-47ca-bbf0-724d140ff44d c3455f56-ce25-44d5-9d7a-3e048fe4eccb a4a33e2d-9886-4cc9-a31b-3256cc8d85f3 18b0ad2a-d35a-4550-9d09-15085efa124c 7a6b97d2-df5a-494d-a24a-720d78cd2c62 1c1139d8-e7a5-4c10-b6b9-57859f1ed0eb 797f7523-9fb7-4d81-843f-a727efe86f47 09d7d5ec-e66c-46bf-a803-131675184558 6b85066f-cc62-4ba2-8e1f-025cb6b57cca c684f7a8-ac81-41fa-96ce-4d25238e96af 2ddec0a0-908f-458c-9b06-8a2f709c4477 51c290ca-0517-4c3f-8414-7af57b27a110 ad3026da-85dc-4c91-977c-bce568b12614 f060af84-0a25-4a18-a0e5-b6fb223cd7e7 c218f453-1e94-4f98-a8ee-a2cc60445b5b b8e22cbb-5d65-4190-a519-bf87e818c964 e827ce3b-c147-48db-a871-2d263acd817b 0b900d6c-61c6-4889-9345-b349ff6590b0 e0e133d1-7a9c-4708-b481-814f247f55ad fb3f62ca-cc88-4ca5-9d91-bc1042d3498d 84b71fe2-09b6-4245-ad3b-afc9dbc4d920 b701da58-601c-48e1-a555-6e4f0b301496 7fd82567-6236-4e70-bf8a-262d90060079 fbdcca4b-c2a9-468d-9a22-f7c575a4d83c 9804baf0-2c2c-47b9-aa26-0d357bbda707 c26a21d6-4612-4a3a-b90e-8bf3b9b91cda f2b8d4a2-997a-4f27-9a80-51c2762b720f 0c9ff232-0b4d-4b71-b58d-6a93831c93bd e8fdb2f2-cb03-4a2a-a00e-0b26ce29be26 cf514d88-1a6d-4f5c-9342-6740d6e35ac4 9d37ebb9-d2a0-45b0-b12f-300786c1f6e7 d6f16579-f7ce-44cf-a782-983ac677a737 6f751a6b-b803-4ee9-b818-c09d990de810 f0a2f7cb-8aed-43f0-95f0-2862b5b50cbe 5800b4fa-d104-4fe5-9f51-d4af487c5bf2 2b5a85bb-0d83-4e86-9e53-70609970cc5d 97ec3c75-abff-4ccd-84a5-485fa0d8cf91 c0e7467c-2e46-44bc-bdf1-7c0f6521887c 10a46041-e1a6-4f1b-bb41-05813cdd147a 75022bb4-c213-4ef2-a4ed-7ed2a834f158 65184db1-c793-4552-a0d9-448c5083cd3a 21247df7-d39b-4a0d-960f-e892df18846b dce7f22c-be77-42af-89a1-68758cc1c079 546feece-80d2-41e2-8939-815d21e5e45c 6717e84d-470f-4913-8887-07c38595f1c6 efcce582-bc44-4cc5-9f32-e7304e351db9 f002fb48-2a5f-46a5-b3e8-4d7ec2763bd2 423aa6bf-b76a-428b-9c86-7189f9c8d823 861cb1cd-7194-4565-85f2-28d9ff529d3a e602bd94-6926-4ba4-8652-24cb49012b9c 601191e2-c483-49c6-8ed1-fc9df42a727e 1ca2cb51-e821-44ca-9917-0bd9e30aa604 97e0c904-3e18-4088-a814-1f1bb2793d83 fc490c96-52b1-4a97-8119-5358f4e7a391 a00d9fcf-2558-48c8-9237-8f52cfb8c939 2c8b6c59-8e8b-4d8e-a1ca-a8a296dbd193 f6363ccf-7b94-4f6f-b40b-e092ec37a397 a193aeef-2027-4e4e-945d-6871649eaa20 a7b4d4ec-18d5-4d85-8fba-0f4e44d920cb c6b335ef-e1ec-471f-ba16-7c25af8cfb55 c5bb9888-9a5e-46e8-a815-cf63e01fee2c 65f2a99d-d9f9-4e4d-b591-8713818f9e81 42893c78-8f8f-4513-bde3-f02537ecf422 a979e402-9409-4ce1-950f-0db4acd4599d 9d43b660-b842-4f0b-b858-3d867642df09 23b8af6c-fc22-4c64-abcb-9e43da0be12b 04fc3103-6152-4cff-b82c-f47e2b9511db 40a878be-2eff-4588-add0-014ac220102a a3ff86cc-dfd8-4949-94ce-b32fe9f7c451 be6e717d-9200-42a5-83bc-7983b7e2a62a 028c2dcd-782b-4ddd-8159-cff9e0365cba e5cc7a95-1e96-4c20-9a55-34282de9b9b1 6acb7a0e-987d-4b52-817b-2c2d6d69bfa7 f648cefd-7c4d-4f55-8548-9627c9de2379 51100ec6-0be2-4178-a8eb-f0ca4e11f061 be20eaa0-972a-4947-b0e4-42479d5e8680 98cd1a13-3621-4da1-b383-a2b6590f7b8a 8c9c5348-1d07-450e-b52e-8d3cec651117 5f24ab8d-8277-4dbe-a246-7a792e496e78 1efec030-8de8-40ab-9e4f-a348bc0f51e9 30133aae-097f-4076-9264-c4f942035045 a2794e00-833b-4a9b-be39-23b66b60d510 a915e168-e445-4a04-a994-75ad9b88288d 2c4075c9-a889-4564-947e-190f60dfc9c2 1900d4ba-a4f1-469b-9f59-fc5d66529de5 0f178d0e-413b-4038-856b-db27bd465a38 db25f829-2ea3-44c4-bdab-e56c65600de3 0c108351-ce46-4f8e-bd6e-1f46460a6a45 d6948612-3c32-47e2-a17b-2aba3bbad602 b6dc6a57-73c9-4609-855e-1f79a4f737c3 5729ca8e-8e14-425d-a945-b10de68dd207 64c26776-0bea-40c2-95cc-f5bafcf13a08 44060075-19e2-4180-a4a3-2a57284e3127 73d36532-8c94-4290-acf2-b14a64b6accd cbbdc2ea-68f7-4539-99fe-800330b65042 fd85b403-0b27-40d2-84fa-a85b696d5dd7 7bf724d2-0524-4958-89ff-1965787a441e 4492916a-5077-45e8-9f39-93b8a74a8c8f 8658eca8-2dd1-46ea-9031-7db255aed13b b7e1fc2b-3a11-40dd-b47b-f0b4fde0e257 98e8f2ed-9f39-4ae2-b5f6-147a0d192fbd bf7c0aa8-dabf-4cbb-a267-5799a04e28a3 fe64fd1e-f785-473b-ac63-d02525087076 6bf5440f-cab5-4d21-bbf3-3c242fc238b4 0031c400-d9cc-4f8d-830e-30de94119182 45281d33-9407-408d-ba58-2eac0d0c9090 66739886-7f93-49da-858e-cba551514917 e5ece9da-0382-4377-9821-a5c99b6ac4ca 3e630a87-c9fe-46ff-b4dc-cc4e5e6d9c63 005e2c74-9faa-4663-903d-f1ef27a9f269 9c53f552-60dd-473d-a5fe-3af5b8314a31 3d847c10-588d-4d91-a252-013d855a9dd5 4563fcbf-38b2-46a4-9a6f-16d25e1d202f 6a9d7934-26c0-4bd5-b064-a085c8d31739 7070fb2f-7470-4d8a-a304-a0aee1f783c2 30159e4b-39b8-4594-9103-bb87db4aa3ac b982001d-e783-4ed0-84ec-069a5acee81f 2e9aa52c-cf3d-4fe6-a457-2a1f18586670 2bf436f8-b382-40c6-a0f3-68ed6db0925a ebc75d99-3e34-4192-8ba1-ce284ebd3868 797b953e-93b2-412b-9af3-50a1f1c4cad9 6df400e6-f0c0-49bc-b478-424e7d7b9604 4953a3bf-710d-4221-9d80-db0578f230ac 882d7a21-472e-4cfe-a2ec-d0bbf2a8a349 cbb3b42c-2733-4318-88ab-438eda5decd4 35c6936e-5b90-4ea4-a309-fe8915c6b7c2 5078fdea-5ca3-46a3-87c3-833380152005 8444d436-eb61-4789-bcd2-83526834140f 2eb6968d-141e-466d-95ac-a5e7b06d7cb2 47c467c4-b09e-435c-8466-861dde99e16b c5a17766-45f4-4d0b-855b-82c3d00bb4d7 61cc7055-d22c-4c03-969d-333c2767fb04 540009e0-7204-4ad2-a1e4-966d419f3a6d 6d615821-1168-42f2-87ee-ca6960acd909 32f6e68f-25d9-46b1-b957-dfff5d5d49e2 c37e5d71-420f-4878-828d-da77e3e7f92f 07ab0a33-16a0-46ab-9e5a-0d37ed55b8f3 698ab46d-ddae-4fe6-adb2-83cfb928ec27 07e7b860-8b28-4bb7-b878-f01a2630fdd7 1ec36318-af99-4ae4-89e0-fdc0afd304b1 121d9798-c3bf-459a-8271-5b87cae5ec8f 3ca79cdb-ce8d-42e8-9558-2ed3f141a4ab 39f21b54-53d0-466d-a415-7f00c3cd83cd a179491b-e8de-4ae9-bef6-5665d24eb34f 033dbba7-36b8-4b12-adaa-d39d42767350 3725f73a-eacb-47c0-908a-a88b132de55a 8e08999f-a794-4007-8c31-8d797bd40fac 267d653a-88ef-4178-981c-1ca705e59a16 8311831e-4463-48be-82f2-de9d7231d66b 805d6812-9b41-497d-a53d-7488caa88f8e 4d3c7989-9cb3-415c-953e-6a852ec0260b 87f000cc-1836-4f20-bb4d-43565e4d41de 21c65037-729b-4135-a73c-a79a08020f4f cbdf0fde-620b-4eae-9ca4-334cdf523ccc 69a32881-4fd0-4bec-b1cf-1c57b9aa2c40 62b75b58-d4de-4035-8d03-60101324d0ae 8870d72e-a15c-4e72-b056-a39d22616005 d419a5c3-618c-4fd7-9fae-f41378da6696 6663eb2e-e653-4de2-9694-75b9cbd449c7 a3d448f0-7dbc-42a9-83cd-e06464dc765d a9c10616-42b6-4c94-ac1f-586bbe1daeb0 33185955-75e7-4971-b5c3-687e7b585d74 949567d1-31e8-4820-bab4-3bba04c567d6 e5210d49-90b2-40a9-9b1e-3f6862c16431 4a3853bc-9b0a-451f-b4ff-5f51b82c1890 7b09efe0-fa47-4389-ad6a-ca65d76aef78 f6e4071e-4901-4345-bf56-bc60f8d20bae 18bfc37e-e53c-4a08-ab71-9b22f9b5c913 53b34ea8-f29f-4ab7-85c9-34ccff713d83 6d676b11-28ba-401c-80bd-ec7c5990915c 72513de1-0c8e-4d7b-b368-6058f5967eb5 f61b3ea9-565b-4c68-92dc-2521e25aa06c e371d2c7-4624-4821-a0a6-83fcde64f95d d0fd46ee-f136-4c39-a36a-ff9082d74df7 9ce281cf-f147-4701-bd0b-bf3a71b61c1e 84f40b2c-c2b7-41f5-9510-5fcbf24c2caa aa9841e2-6c66-4692-8364-b70dba96ae95 1e1b2463-8d89-4637-911f-2f2bff14b667 01574075-2f51-406b-bb0b-be85fc509be7 d222e8d2-14fd-4912-b4b1-1d5d5f936267 2d6d3db0-0f06-45d2-974b-3157668b6127 cc1d90ea-a703-4874-8aac-c4ee4a280c24 c0d7f29d-657e-47d0-9c53-5a2057024953 6df4dbad-4449-44aa-9594-e57542607657 46335dde-ced4-4b99-855f-960ab41e8445 73d07669-00b2-4251-a5bd-d7e444c86f8d 8d187876-0850-4124-9e3a-3589b3fb70e3 bbc78c80-a9ab-4692-8d66-edf2acd54880 88de00c7-f274-4f28-97be-e214d03613ea 60ba6c76-a37a-4e97-bd1c-cc7fed07b66c 51ba5f02-634f-419e-b98b-00d7ac17ce79 fc199304-2e3d-4115-89d6-0e06797598c9 6261bacb-663a-47d1-b401-ec0c21d47e08 cbef302d-b5fa-46b8-91a1-7365da5b6d5e adc9829b-f052-43b8-8dcc-f556b060b0fb 05d58f6c-cc05-4d38-94aa-bbd96d3ec438 21092393-a3d6-4822-98ec-7b95cf959414 562d6044-4803-4f23-97af-5d47e38e750c 2e815cf8-a37e-401b-aa19-63a5f7ee5c9f 52899d55-ddfb-47a6-aabc-9f562ecc0626 20950ae5-08e5-4379-bb83-3e166ed25629 ec32dc69-b4c5-4680-ac00-0bc59c8b3dba 3f38843c-15f9-43ef-a85e-58cd201c03cd b98add67-ff1d-4c94-a02f-f0cff20e592f b9c2598b-d9ba-4037-80ec-37d27714f8e5 c84ad317-fd1c-441a-bccb-c8de363e9c2c 3c1b2140-4e80-41c6-bb68-d335903fb3c7 0b262077-d811-4bb5-8acf-6b423bf07ecd f5863d59-7278-4775-8b78-d4be11d54d8b b8be416d-f3fa-4c6a-bcf6-6da20439faf1 b494b618-baef-439e-9451-0f029160ecd7 a5921406-798d-412f-95ed-e7d3c9a6dff8 258701bf-ba6e-4090-9771-64d7b2348bd5 bfb1e401-63fb-4c9b-bac2-4ac49390a4b0 cedde90f-bec8-4eab-b29b-dc690c9d38ef 61af37d6-295a-4016-9267-5665aad21653 645cbe00-a931-4f64-a528-b9a8546bcf3f f2434caa-0697-4f82-abd1-be61ef632718 a8896a1d-b45e-4491-b9db-bd6f714003e0 28aaa152-067d-44a3-b268-ad8bfabe9024 636ffaa8-011b-4018-ad35-db1c176d6845 dbb29a9a-a802-492d-b3d5-388c8e3a6a49 53d9e8d5-1e06-46b3-a94b-65f69697941f a22370b2-86dd-4da7-81a7-4213694fddd1 805f5a95-5e3e-4350-a4bd-26dec1bf6ad3 d65cccca-05bb-4cc8-8317-9a7fa7b9772e c3646cd3-89cc-42d6-b5dc-7db6d1adf8ed 5b4d17d9-9f0f-4b60-96c7-ce0a5ebfe520 2ea2a86e-2991-421d-b413-80260d868d3f 5d566d58-9241-4dc4-ad0e-4e3154d946d0 dbd59daf-513a-4d71-8f25-6213b2e0088b fb6c6116-63b2-4c1e-9204-e6ae23250934 703af17a-1a8f-453e-8bf1-fb0dd58ff002 3950c5cc-6a8f-4c62-98dd-a7466f468373 40918c3d-f1cd-4e59-a026-e370935dfd8a 3334bbef-a13e-471d-adc5-adf6408a9451 d7f20e1e-2044-4446-a029-3cc52b71c12a 9f076952-1f7a-487e-baab-1e1547fb2825 399e214a-4c1a-4feb-baa3-c50588d30db6 8c8c3771-07f3-43bf-88a3-28de70bc1c4e af16e081-90fd-41a6-a98c-1b0f4575a41e abd029a7-fae9-4def-810d-013c7b1955c9 0a4ed3dd-a796-44dd-898e-cfafb3153a30 786b5f9d-203a-44cd-b7e8-34cd99c7d3ce 753e39cb-925b-4552-a634-4417a638f1c7 b2161ea5-0add-4183-a984-575c0ee08bf6 b757e7af-2988-4541-947b-2367e90d4eb1 12f9f73d-5a11-4523-9313-84df8c9c05bc 7bdac492-3c32-432e-9427-a10f6afcdf85 981c5d3b-0d18-49eb-a2f1-02e65e96a7b5 6632c996-8331-485f-89fa-09f2473b81e3 840b3159-40e9-4ae0-b296-28db7676b5fe 1cd4e5b6-a19e-4cbb-ab15-100d72e15d1c e850dc22-9210-42f9-bc1c-16684f6eb961 fe65320e-8b1a-40b2-81ee-9a6c9ab96ccb 681d8da0-4b67-4f32-8dd3-6f1de34868b6 af0c5fa2-a0be-44ff-bbfd-b801093d2d89 aed5d684-20c6-42da-b57b-8f85ddbaec85 b7ca331b-fd92-47cf-a8d4-2c76bf2bd71a 7c97e617-d271-45a3-a5fe-4a385ffd8364 63d80b49-6410-4991-96d2-7ccdbba8cacd c01fa118-2848-4ef5-a138-40a3df1968e6 f96a7a47-1879-445e-a88f-a9afd55d45a9 cdfba2b3-f470-44a6-8f42-9cc99f00c4a6 1780703c-3ca9-40f1-b237-dba37755af1a a6ef3e82-f474-4dc3-91e8-bcd7c40fffde ef564b78-9f01-4bc3-89e7-2a63f37b398f 2a270606-c9bb-4692-a13b-0bff0e332bc5 2040a1c0-790d-43a7-b786-24180d716cde 760c6d19-1ba9-4c3f-8fc1-c4307cac3c8a 9fd4f5a2-0d8c-4c1b-9a80-ddf049842ed7 78dac4fb-1765-4008-9e27-09120186333b 339452b6-5cb5-45c9-a729-5026b661220b cf627235-9328-443a-8e26-27da5fff885a 64225dd6-8162-48ed-90dc-50caac31b004 37b63a6d-a813-4b1a-85f3-3839aa08ea81 66a642e8-13ce-4649-b443-bf9528c861e0 f2f7ba17-f6fb-4cd1-8d34-5a026e701e84 178280f8-e15a-4a4a-9869-e3eab3c13de1 5b5322a2-c923-4171-96e0-c0a583ad7869 42a3eabf-9edb-49e1-8d48-1c795641d147 74b3a6db-2733-436c-a78b-f37117d8dfd8 094b087b-e7d8-4a9b-b689-dcd1fafe71db 577fef21-c18c-4f83-8f4f-e0b6dd050aa1 2fd10552-060d-4db7-85fc-379f265e4992 e5ee2e72-224a-49d7-8088-b050d414db48 de24925c-31ba-44e1-8748-9b2097578aa7 e8932b07-7f4f-4bb4-81ce-2730333eecad 1d26481d-b452-48a4-9cae-9e606873b8c8 19569ce1-b1bc-4efa-b21c-de428b0aa12d 292c62ea-4fd5-4659-a6bf-eaeceb8c9aa0 6dc3cdf1-9491-4057-8917-1311584e037e 9c845fbc-f3af-42e3-8493-c9994d603c47 b49ce245-c860-43b6-a5f8-ffb72ed4f598 de3a36da-ae76-4b0f-8d4a-e4260ef849ce 3d927913-315f-4984-8d76-f2bb4cd12f6c b54ac3a7-c38d-433f-a6ea-4ddad7f83814 339861a5-d673-4433-9106-ba3a0beb4e8c 57cef91c-8870-465d-98a1-6d4ad0554933 5fb0999d-be6a-49fc-80ff-e5228d1950a8 dd4e4c7c-abc3-4a8d-bcbc-d0e1c4652079 91c1ef07-5dc8-4cfb-8a9b-382fa9d892a0 acf616de-4677-4836-971c-669639fbb4de 6161ddd1-da87-45bb-8aff-7283aa20d6ac feb2859a-1d8f-411c-8c59-6d92cf04c50c eeb7e517-32b0-4716-a9a3-87882a2f948a 76cc25c2-dc56-4a3d-9893-80b944942122 8ecb95a2-ae0a-4659-931c-3e935357cb36 febd00e3-712e-4027-a854-eefabf980e00 cc997a42-5d27-4e30-9a6e-eee9bef475c5 4f62db0b-b33b-4065-88fc-070bbf8f37a7 baed1145-3cb8-4d54-a0bf-c7a51dae38ba 7004bf4a-592f-4db6-a75e-88861a30320d e2b37fc6-7da0-48b7-b01c-617efa42b03a 939c37a0-477f-4392-b522-218ff547a3e5 b64cf4f1-cac5-4336-9581-4d7df01c4755 10fd67b7-d357-4c8b-bf0d-ef56dbc5ecca 56b71932-c7a4-46ff-8f2e-c33acf20a15a ba7f34f5-7e79-4691-b0e4-78c6a5e6ebec 301b6fc7-9a0d-4a27-b951-602a3b49e9d7 72f64054-8291-413e-881f-fca8c5d54554 203c6250-d1dc-4b34-82fd-4fd5957acbf2 8fde48dc-a2df-4522-8ebb-9d9a657bea74 43f0e640-ae7a-4dbe-8001-14faea3c01a8 c9dbf518-21f2-4b8d-9dad-8ef9ac35611b 753832f8-0ded-47d3-ba53-0d4420cedcd1 350a97c7-2cc9-4f98-ac22-1eef7b2bb269 f0ef73fb-4c7e-4808-b3e3-659b71c77f6f 2c5e6f14-682d-43ec-bd3a-48b0d897d0a1 b37b98c1-f1d1-48b1-ab33-cab78d85acdd 8dab686a-50a9-4397-9338-cd8e1e0554d7 81f47b6c-6926-4204-a7cc-691acde17041 0f51920d-c18b-434c-a5e1-5a1ad5437081 39c45794-0f95-4b33-b765-7fd2704784b1 366988d9-0df4-4ace-befe-56d20eda34ad 62f190ad-da1d-4280-a9f2-8b8ba5861765 f495b52b-2059-45bf-af41-1098e7dbc250 f92fd44b-ed1e-4fe8-b45b-3838e556e556 469956c6-e23e-4daa-ae19-9614314b8354 d0f0e46d-a5bf-4e7b-a282-b43bd6de0602 a189dbf1-76dd-4196-b402-683c107615aa 88b6a54e-4ab5-4109-8fc0-69db80516423 551c5e1a-3c72-44b8-ae4f-a84b96f04a7b ccf2378f-5885-480d-af2f-dc35336d4320 15e2d084-e66c-4677-a997-f6b850a60dbd 807f92c1-2726-4aa8-9840-074610114d22 c4c8f8ea-3671-4da6-b18f-bac07ad105e1 911dfe1d-1bfc-4698-b592-4d154ed829b5 cd0a5520-6277-4ee5-9cca-c47d7c9a198a 1c4355c1-de33-4029-be74-748f3d16754a 84eb3169-24ff-4100-b267-176691074119 0a6541fc-2700-40d7-a509-6832e6efea59 baccfd4d-4f60-499d-93c8-07ec27454ec0 0ea9282a-c763-4ea2-9943-2b98aa0ca5d8 0d799000-0553-4f1e-a1a3-02edcc8c8bae 61b9e917-b1b6-4747-8211-9a4703b59b9f 38c90a7b-adc8-45d0-b74a-a43c70158b43 bbff4c1c-69e2-4931-8170-992a18311756 2e0067b4-797c-4a87-9a44-fee0a1ae56af 2bf66d12-208b-4015-af02-a0bdcbf00280 c2598ca2-54fd-4346-9c01-f70f44d03be9 f76cd8ad-1e4d-409c-8273-3257ac780778 a7f66675-d580-4405-8e27-249a358b6810 eec978b1-abc8-42c4-b1b3-ed3d57b662b5 48438efd-cb24-4d35-9ec0-aa41f24fbee4 8bc3ca6d-5288-452f-b4cc-dc9f01bcd80d 10118177-6346-4b81-8695-82237a0b3627 e2e21638-706d-4896-a2de-09db9b849bf6 3f02541c-2962-4084-82c9-621aef4c47a5 f38c153f-c8e0-4fe8-b484-4477a078c89b d076c45b-fa03-4225-83e7-de5fc6153500 ff1a6f5c-d287-4887-ae46-369aa5b401d3 0207c936-271d-4e0b-8fb7-97732f87884c 3be0d6c6-029f-4203-854a-fc2e3efeb244 d00a6957-89f0-4c85-a2e0-dca0b87098db 72625f1e-f9d3-4a05-85b8-1bc139ba5443 663ed846-8781-4a5b-872e-05686780c733 05d0f915-d192-446c-95d1-75891504ba6a 2b9f4848-0ce7-402f-9ec6-eaf00c8dc4e2 e6a7d2ac-c6d3-49c8-97e1-e76b534818ae eeb952ca-3e5d-40c2-aeae-ac3d15ef5dc9 99682771-b909-4936-a19f-9be2548056ec f7ce76ab-6b92-4eab-995f-ded61b46aa05 6a8f1ab4-6043-44c6-a342-319d9b8ca3a9 68f16221-59b2-4d6d-afe7-54ab49e235b7 fe6103a4-090c-4a97-b017-c4e382e29852 6c171ad6-db76-49ae-9702-47c45001be8d bfd4955b-8842-4d96-a8a3-1b76b5a318ad 3aabe575-b6fb-41c0-9a87-ba14615da7a0 4ba011c8-fdf1-4695-9968-b4e53b9985e2 323790d0-3401-46b5-954d-9fa05f8bfb72 a14c5895-3151-47cc-aa91-54723ff57748 c784a552-c3dd-4fa2-976e-d01221646ebd f20deb60-dc29-49b0-9f2b-238df183ff23 41e04f97-b076-41c5-b1af-db1ade03eb21 b40fa41c-0604-4a07-9e09-cd7edf901ebb 5353faf9-a70d-4706-b10b-cbecb68dbf69 52975d85-2048-4be7-81a8-9a492cf51789 5bb00385-339c-4785-ad5b-e5ee1bd982cd 353115a3-e5b1-4af8-b5a8-53d110eda182 347424d1-046e-4406-9177-0d433eb4b0a6 031462dc-b6b4-4de2-93e9-9c2679ba79d9 d6446229-1220-44bc-99fa-9c24b6eda752 3b0c1970-b6e7-4767-8b7b-b862f330a2a5 d4866262-8475-439b-b6b6-6f0c95342c38 0f32f7fd-4652-4403-826b-c95f577b2de3 c8d6fd1f-dcdb-4473-999b-eeea7e5ea3d1 205d95a6-73ff-40fb-9291-b5a7ec136ac9 ebdf55cf-c622-42b9-b535-7da01232c5dd 53f56cee-b324-4791-820f-1931794921f1 bae36a6d-33c3-4aa8-addf-d4aeecc3e72b 747f00cb-be18-4e07-821c-7d4a98e93aa1 d29d60df-c771-4a11-8623-abde380666ea 3496b38c-690f-4883-b075-79c535522805 e5f63813-39f8-40ad-960f-d00bc30c1cdb 3005ed5c-8bfa-412a-84aa-9082140321e6 a382bfdb-c772-4c2b-8060-8a977ce7f163 16f76570-8c10-4b50-a308-d511b244c796 ae51d45a-559b-48ff-91ce-5654cfbb7183 5009574d-16aa-4c3f-aa54-4b4e5f237dca a64c79c4-53a7-4b88-aa09-5ada8f89e2da d6ae013c-9ef9-4f93-972e-5af3cf46a838 8fff340f-5b8c-4310-a546-a69084a1c68b db864381-49d7-4251-ab5a-1715c878f3ca 979266ff-ef41-4221-b8c5-ee14a4ec3795 0c73b529-e909-41e3-9876-a92b835e5cc2 fe8d2d71-67e1-49fc-b6fd-010bc1321295 bdfe503b-9d25-4e80-a98a-6380b4359b61 37765690-2ac3-4d2b-a6f4-acb6bf1ca58c ba432b51-465b-46ad-97d9-5a81d3c58f03 04c0b0e6-cb3d-4e12-b62f-cd866e8fd400 e2e7abd4-6c08-4284-8f5d-8fe114cee6d4 99f0acc4-b503-4802-88d2-b5f293ee8865 68cff6b0-a6ab-4cbb-94ee-1b9daba26a2a 8fe32725-f83e-48aa-8e25-471bfb3db312 5b470fb3-b3d9-4556-9f75-48dacc749c31 c3012d31-22dc-439c-b8ef-03bd874220b1 e7d16926-182a-4773-97df-bc373ccea6c5 11036556-f88b-4ff7-90e9-22d91247c093 ada35cd0-f56f-4159-93d5-4815c7c8a94c afab4b11-207b-4595-9008-c2539a21adf7 e3115d62-0398-41ca-9bff-8e5375fa014c c3cdbbc2-6c2c-4398-8098-9253be50b653 ce2e4999-e809-49a6-8f14-d3c67c35dae9 b92c427e-0c1c-4486-a899-179c03ee2af8 4788f9e5-4923-4747-baf7-55a54af88531 5c4163e9-042f-41f4-8812-38c35030b943 046920a2-d57a-4e38-864b-268b2af01500 9e17e6ff-c093-4b41-ac6e-a3c936545fb3 75b1be83-8476-4b4e-9c86-e82c69562904 d79942e1-39a3-43af-901b-56da31458359 311be7bf-47e0-48d5-98d4-1020dc96b6cb 370642aa-a63f-4051-a9e7-4b3de5867f69 144af23c-c48d-40f3-ad94-ddac57ba4606 d8a0b840-c75f-499f-8a31-281b865968bd 2bed295d-db7e-4dd2-8d0f-cb30e9c022ef fc61ebeb-78e0-444c-bacf-e8317b137b7f fc16c64f-3239-4d19-a8eb-b326600e22e7 934a4dec-085e-4dba-b39d-ed7f356a1513 49c673de-aceb-4103-9621-9766f54eb42e 584f244a-f4cf-4f1e-a06d-1186eee6dbce 792dc629-8515-4ae3-94d6-1d119ef8d7f1 c72959af-7e7c-4ea9-8d85-e0d5ea2a4fe3 06c59bb2-519a-4fa8-94f2-93df25266e52 5b7642d5-abdf-419a-9c95-c1e504476297 b9bd8aa8-52bb-4a2f-b40c-4a7db0b23968 2c47aeb6-3abd-4f7a-ba5f-d3b472fb4e93 9ed212af-a684-4383-a2e5-d1f66e888b29 f2739190-b057-496d-ba30-9207d9ea8b12 7679c393-4bb6-44e7-a183-466d3041fceb 87013fff-607f-4eb0-858e-675dc0c4436f 990dba81-1aba-4d11-8736-498d50db496f 56fa70c7-cbc3-41e9-822a-bf48cac54da4 530e51b8-286e-4e50-8550-6ea05e07b770 e405e7ce-861b-4c4f-a978-7325fb59e5a3 f75263cf-26ef-4e23-9e2c-67cd243916b9 3adfc232-7d8c-4807-9512-b96f4a11217c 17feaf05-f319-4ea5-905f-5c08b7083bd3 3691486f-7c48-490a-8bb1-e5d4cd2dd516 00db1ae1-bbd4-444a-972a-38cfae10111d b0742d95-725e-4c05-b826-a994b0cf45fd 0cbbe0a3-a092-4b0e-8c8d-ca991dc3aa47 bdbe15e5-b610-4cd5-8fb5-2bae0d3c8b79 53029ba0-ecba-4b8a-9982-85735babd79b 69d70f54-a1ad-44d3-9056-d3cd14d9fef4 1032669e-e697-4186-919a-e17b76e6b353 cd2fd634-d9b0-41a4-b705-3a9bbce990e8 4ca4a4a2-dd05-4df2-b9f7-a3c418f69426 5193aeed-72c2-4460-b577-0034dbe34fdd d01f8c66-12e4-4a2e-b13a-b51cdfb790a3 296bd3eb-71c2-4bc5-9305-d2150cca7e94 78012ec1-0daf-4ca0-9eb6-4d2bccc1c3d0 4aeee22c-0b66-4d6d-a13c-554ccbe3522d 412b9d80-e803-4223-b16f-b7c25107e74e 0db721c3-bbb3-44af-a04e-c4e353aaf578 76ee861b-dee1-486c-8086-5bc4d9cfaf43 357d3de3-7ce9-4131-92ad-46dbd9685ab7 c12edd2e-28b7-4304-be24-d3e8a4ca00b0 e57974d9-92ab-4781-868d-cef982d600dc 7892a38b-0a3b-488b-bae5-f88c72b1e009 2d4008c5-5496-4d7d-8277-84bfaeef205c c8920008-aa55-4118-bbea-327a757be12d 95893e0e-aee2-4933-84f2-65d13aa16f5e c4815f47-8e29-4c13-bdc2-55b56aa60b3a c72149af-d0b5-4c13-908e-a156ea7da3bc f0d05b69-1164-41e5-aefb-075c30f6b605 52fa9482-274a-4a27-ba7b-c3670957b5dd 38b534ab-3cda-429e-a695-b5c1a988d19b 081068db-f819-48db-a68a-9be65be51216 84da7b76-ab0e-4b8d-9560-48d9339fee19 615884b3-9f9a-4db3-a39c-daa0426ca076 e0777b3d-6f0a-429c-9efc-cb052f199ca1 367a8efb-3900-4e17-bd27-3684ed47441f d9c11021-898a-4b6f-9f6e-6abd6baf647f 832495e6-e969-49e7-854a-af02fd3bc03f 3bd10f58-8ab3-43a1-8175-08c1efb6419e 21f4bdc9-f9ec-4a85-8a56-81e25a96b193 b1b13920-4952-414b-b72b-8349b8f231d2 a6d5793b-d6d2-4c15-9140-e26af90a7005 d0e78051-a677-4484-bdc5-0777507c4c8e fa79e4bf-17e3-4d03-b519-bc54240c4ab5 740ddc8c-a569-47e6-8459-c4b51784e02d 464b8ba3-86d8-4863-ac5f-81fac3d72997 bdba93a2-557c-4417-aacd-1ed34ddcb244 4619ac60-78a1-4a23-9b99-7edc2fa80a0e 02813f41-456a-48f2-a48a-85b6b72ac2f9 36fab2bc-90fe-4eb1-bcc2-c235e8bbc372 def024ea-5728-4ec1-8b1e-411fe0b669a7 bbfbdfae-4bdc-42bd-9c1e-8f0d7ea54bbe e68965b6-2142-4ca1-b21f-14bb6e97ed22 b29b8f64-c911-4588-a48e-8a4ebffcff6f 5eb8fdab-d173-4331-8b3d-5678eed2d978 07060bbb-f25c-4952-9b7d-6d5239d54f35 2aa9964b-5a23-4f84-b0ac-09d3eb1f4f51 4eacbe42-fe93-4a5a-99ff-528fbda7c27f d4ccf78f-cf61-43e1-b31e-84bce58cff8a 856a2548-565c-4130-a0bd-d6c1fd421c29 2080d693-0e34-4aef-8060-dd3db48463af c8a318cc-61fb-45b0-8dc5-16da9506d23c 6b433e29-afde-4c57-8468-baa1da7b1e15 59380fb9-67ea-4173-abc1-8d554544395a 821d34d3-f3fd-4c41-9ef5-3810948dce8e 57e477ec-3fc9-481f-b6a7-d0e6c64e1b6f ae4e9607-53f3-4c86-9802-eac00093482c 7f2d5d91-c81b-4024-81a0-a811beaf2fc0 2ac741f9-0286-4bd1-8a81-c964bc614253 8eeccdeb-7ef3-4fb3-bfa6-b88dea056b4d a9d98b53-526a-4840-9b64-21c3613ec615 a17850c7-9879-4a80-8ebb-78647982e297 512b1e51-9ef8-4f0d-a338-936450579abc b651c73e-8534-49ca-bcf5-6184b1b46ce8 bf2520d0-1006-4723-a14a-2bae5823f9d0 22914a0f-d46c-448d-a1fc-05e4d4d6111e 9ff2f498-7310-44af-ab24-23284f0fcd73 25466735-d99f-4398-8e6e-b609015ca85b b8fc8321-5e9c-492c-b7de-df5d1047a679 e8d92a10-2a1e-4050-880e-8b237f6489e2 52ed989c-aed5-4a6e-b594-94eedb55c62e 08fd6c95-64d3-40ba-819a-0dd130c5e39d ba2b828e-44e3-43a9-89ff-3c2849120953 c97cb7d3-3c40-4fa9-912d-adab3025338e 2a6e3f40-1442-4770-9634-611063b9b69c ea65c604-57cf-41eb-8b98-0f8563f9cfaf 99423c99-5a72-4e76-9d64-b254edaba7aa 8668eb97-ca44-4ae7-b12a-962fc6f659bb a35ec7cc-c783-4673-a878-b17570719f0f d5f5cbc7-1c4e-4e0e-8fc8-cee7cd478f6c 4931cb40-2806-4f94-9df2-f87b8345e802 86db508b-a5a4-433d-99b8-cf4998159544 216e74c0-12da-482e-832c-636af911c9ca 4fdeebc2-8580-444c-b893-0041e564a3b9 2050aa52-1857-4356-9633-6ffe6e8fab57 37f35693-a101-41e8-bc3b-6b6d1ca903df 86893693-1dda-487f-9694-a8fb0a7e5f22 9bc49921-8e09-47d3-80c8-48562e82ba47 17cd2684-0689-4c8d-8128-d448cd850bb3 45cb00d5-dded-4fe8-ab35-015d87db02eb e5c330c0-cd0e-4f80-a0ad-eb7b7050bf94 1e305ea8-3813-487f-9270-6381ae8db874 be7f9007-6b6b-47ce-b454-3d7c7543fa4c cef266b1-21a8-4345-8a3c-cd14efb5fec7 0c928885-9708-46db-b90a-5dfc58c369c8 bacea4dd-76ef-4b91-9321-8e68de37ebae 1247c914-dd70-4330-bdf7-4caab631f4b9 84475693-5480-4d9d-9147-dbf4e7f5ea1f b0b6c9bd-de4f-4bdd-91ef-4b53bb8e344a 5a937fe1-3e07-4a07-82c2-31794067f2c8 ab09ca2f-4b21-49ac-9c98-818e91868d82 9baa4470-8d81-4421-8207-268a32dc76fb dbd51a58-0913-4f59-9de8-5dc1dc65b5a2 2aa2924d-ece5-40d4-815b-ffc6b9449802 526e440b-0dcb-4502-8b68-de088d0498aa 1fcec2a1-a996-4b6c-bfd4-b81d545d4582 f28a1d1c-d6f0-47a5-9c9d-1f1f46337ad9 63edc5a3-7346-47c7-ab61-64ed3be673ad df1eb95d-483e-4ce7-aa84-2b93b98f2396 c0bd73d6-46c2-4527-8ff2-cb80893e2a27 02794e2e-f843-45b2-8957-a34a2221109b eada1f1a-ef19-4619-9fb2-676feaece9fd c4f19af2-db8e-4724-b0a8-6751f8342edb 35bade01-f519-4666-b4e5-8d1e75177480 e1551c5d-6fa2-44f2-8913-4ff2383374f2 02c41375-a314-4b15-aade-4c8662c41c7f b721d97d-6a79-4d8a-8550-b229cd6568f5 720a5f5a-7802-45c2-9bbc-7ea49dd08f78 816ac15e-1158-49a4-be48-65450d071a28 3fbb88de-27c2-4c46-affe-31ed08c1ebae 64b2e871-39ad-4a70-ae2c-66b222dc8bcc fa6ec603-ddc1-49b3-9c40-b9105d9f4a00 93049ac5-a974-4a99-844b-4fc6671a5735 46d87c0e-4ace-47b0-8f2d-924d87bdc1e1 773295fc-fa3f-4d10-b700-26c314344d5a 2345e746-34f3-4387-b43f-ada18411ae2e 4770f8c1-0457-45b7-8eca-a9d10b99cf2e c12db9d9-5a59-4f43-8408-d66779cd1dd3 143e1730-73ca-4a66-8929-95fa2e44dfe6 38e5e6d8-5514-4cf4-a7cd-a2ed3422cc8d d8ae94a1-683b-4ed3-ae7d-8b27c5ee3677 706ff7cb-1178-4951-9ead-c6fd4b72d562 75cfa6d3-48c2-4d4c-ae98-a7f2848c8899 f2d360c2-0de1-47b1-963b-1a5354f3fd7e 890a72c9-7325-416b-aec7-49cbfb8235ec 6beea003-4a6a-4520-847a-a660e19c3ef0 7fbc797a-843c-4fd0-a40b-056e9da184ad 2994ec64-a14b-4304-a695-5f6af8dd6411 0fd999c6-45a3-426b-a644-ae712837df39 a60e2599-5e0b-491b-bc86-1b1d8adba14b e5afd6cd-b787-4c58-bfb9-fb2f93994022 aa0ac9db-5b22-4f98-8112-d7e3ca045b9b c2820409-2d61-4bbc-9d9e-05db867125cc 6b921c0b-13a6-41dd-ae03-ef80bab8a008 23256ccf-6cfa-42de-aed1-08a3ed8c92a5 e6ddfe99-bd33-456e-ad31-a7911b379afc 4668ba72-4fb1-4441-81b4-3b1bb6c66fcb 6b5a945b-0b84-4770-b9aa-d51c812acd04 041f9641-3988-4cef-89f8-c70ae194d5e9 23a875d4-663d-4b5d-9a86-863e29482ca8 d00ff903-8995-48ab-b6b7-59710b7b24d7 72af3228-6eaa-4de8-9709-0c99ed5ebc9b a4330eb9-b17d-42cd-af27-8c72e560dffe b66a22cc-c1bf-4099-a8c2-fa907a8437e0 af0da2d2-aa12-4b09-8258-8b06e9b5cc73 430eebbc-907e-4958-b6e7-1935f685fe17 e03a9f2c-902a-4746-b9c1-a642d870361e 6318a246-5b7e-411f-bd70-593329508d80 349a197d-c663-4c73-9dae-44a165418531 d414219e-18a3-46ca-b44c-994b05463aab 67459a08-8bbe-4306-8911-68df1c767b37 314338eb-fd1d-45a3-b041-eba9aeb59331 62ac7de8-451f-4774-b5df-8c8ef39940d6 1c137b35-5ee9-46fc-a917-3312cdf60bc0 e6e41400-4c49-4e15-bc01-2009414bcbd5 b209f55d-7666-4a22-a5e9-66db99962432 26b49e1c-4018-478c-80dc-e0f887f3e768 f8f08815-6ed3-4c77-95a0-05c0b0e06c9d c0655977-b9cf-4271-bc9d-458ebd9c2aa6 0d9410a3-1134-4b02-9400-fd36531e67f6 e0caa803-5752-48b0-a35f-4fc406afc4e3 b54c7fee-5ccc-42c6-ac26-996776e74da3 faa95795-0cd4-48c0-a08d-b9bae7d4d404 124c1920-57a0-451d-805d-25bc8e8de60c b9d3bcf2-9152-4b11-b534-28439ade6273 739b93ea-5cfb-4c91-98cd-f9677ee961ee 898fa70c-c7ad-4c99-990b-a7176e417535 d9c60d32-e875-401e-a903-f5e15a615b32 674869ee-92fd-426a-b1e0-f5fb69ea5bb5 333c287f-3e09-46f3-b050-b5c1a92b1a94 913c058f-2c7e-4cb6-a75c-42ce54a180b9 45fa9916-b3c1-4c26-bd78-4bd1e57d1292 bd9922c2-4c5a-45b8-9873-f4ee239567b5 4b3d6a61-b2b0-4121-898b-6ca1140d833b fc9f02b6-0990-44ab-8500-02f2da9abdd6 d9fb558e-4242-4f1a-aba7-f4963772874f 44addf72-4139-4bff-bbc1-22f7c21ac7a6 1fdbe22a-b626-4428-bb9a-76740938f759 7c58d0d7-8649-418f-b0ae-16fa0d22c54f 9babb97e-8b15-4180-99d5-3124ddd522fc c1f96fca-ee2d-4b9b-890e-0b6bd74c7ce5 74053827-8046-4541-9594-9ff9a48bdb93 83f9d74b-3250-4813-8eb0-a1a7d1164715 01dd24bf-e614-4a45-9387-84188efa4263 95889205-324d-417c-8db5-56c9db3099a5 25dac3c8-9ffa-4e9f-ac36-185f645c53ca 00405602-2fbd-41a2-9c49-7f353d49077b 715b2ce1-0a88-4599-89b1-ac1bc68e59b6 8342e9e9-c633-4cf0-902a-a7224b2d017b d7c3ad0e-4ec8-4fdf-a2fc-e86255983540 f99b6251-664a-44ca-a11c-7c8dee48ce4b ad3b49f8-e201-49c9-8005-1217b5325051 69fe1104-3c07-46fc-bf1a-8f08d21b0845 bd8ba4b1-f950-4e9a-a50d-44a1716a00a3 abc11875-a5af-4dde-8273-c0d5fb7287c7 c2fee948-0210-4b5e-b619-9c54934cce7d e337c9c6-a1a9-476d-8a05-59106581bbd2 e0a96a10-3bb1-4e1a-95ce-781193943c97 388c2239-5cdd-47c9-8d93-bb6014bbda5c 2347c279-8fa5-4791-8eeb-cf0f41bbe0b5 72475f5c-7e7a-41b5-87ea-e79e3c03352e 15c46ecc-6b7f-4371-91a6-1c7b04f64978 933cd62e-c5a1-477f-9ff5-030dd12eddac 1cd9a75a-a37c-4004-a41c-3020576d0784 4407c0f8-5371-46f9-aa98-490da2b798b8 6ce6e14d-08b9-4982-a0e7-81cba568370d c112b4de-703a-4da4-9282-09596f6e4408 b5f44d31-14ed-449b-a902-652b9afc2470 b572b95d-1438-43c1-ab84-00575c7a267d 4648e0b8-7c5f-49e5-8f28-77e2e8c69f42 a680b9da-b7b1-4ebc-8c95-9848fbf31de6 3d8bff21-4f1b-4704-a576-6846f5320b36 ab385b93-7755-49ac-a2eb-22cad8cc4673 bc81bcd9-81bc-41e7-ae97-98be75f85c8d d532af2c-52c9-4a2c-8ae2-8c95f05454fc 8f2c0182-3bbe-46ff-964a-323826041bb6 3e4c50ea-dde1-4a48-a283-e9e493cdc68f bf562fd6-4e13-45ab-88dd-ce74b638748a 01e06ab5-f8eb-49cf-9c2d-34dd6ce086d5 cd4fcab1-1c30-4799-9b12-f140f6b73d0f 002dcdd6-6867-4df7-b466-a23fc0041bdb 6d1c7070-d8ec-409c-8e28-03cd954cc17c a29990e7-52df-4788-889f-20252fbd8d37 7f9a670e-26f9-481c-b99b-aece6b856b34 5cbcdb69-1636-4f72-8649-98cb1491de5b e251d0aa-7e98-48a6-898b-cab901c60f9a 328bb3d3-a4de-4804-a078-f17d678baa06 62f8ce7c-e66a-49c8-acc8-cc22dac9cedb 5a0a4e6d-99c1-48fa-8bb9-d42a7bec7a24 e00e8846-ec5f-4574-86f4-f603fb86b5b1 1902b563-2039-402d-8f6e-5565b2a87504 30494061-cb19-4186-83e5-b8961bb28b73 03b09e20-85bf-46a2-ad2a-1d7f9d8f8395 c04c301f-7205-40bd-a19d-d73740983999 62400e5c-f5dd-4d95-a32c-424c9711a253 a443b647-81f1-4792-ba31-58d41c41bf58 3c34b208-4acf-433e-8daf-92518f15d39d 2e8c1d71-8f57-4ec9-acb8-00b452b8025c 6dd22d7e-f25e-471c-b04f-5dfcb06f4531 f73c096e-fe7e-4c56-8e79-ad03d9fa5b61 8a282c53-fd4b-4705-afc1-992e3782235d e6ae438d-8147-4c9e-b749-b88ec875bdbd 1fcb9cba-8a2d-43ef-97cd-1df018e6dd89 5664adf8-57cb-4ceb-b0c3-4b8f47c96a20 cd7c777d-d1d0-46e6-ad89-7c70a75ee54f 06118ad7-0754-498b-b9bd-433a2ae011a2 760866c6-054a-41d8-9cb2-63629ed2ee07 1394f3eb-75b0-48c5-a603-568abe662761 8dfab325-8fec-41ac-bcf3-b591a58f743a fda7c4fb-b9b3-4f52-a99d-f9f4c9907f2b 0e621a9f-d6ce-4a1c-b973-65a657d4226a 98d8ee35-f7f6-4820-9d82-fd1645dad6d8 35bb6711-ecb4-476e-8801-f5d9daf7f711 7610abe4-2648-4004-8365-f5c6564a9c70 ace97236-406e-42f9-9ed1-207027ffa41f 4aff0e4e-ec23-4d14-adf3-f5b24ef9a92e 3a863604-5467-4f35-a46f-34dfda12d8e5 9c0ade72-999a-4576-b4f9-ca091fafe49c 1bcd41e4-6ac1-4daf-a06d-00a10b654755 1bc1835b-7e09-47b0-b719-2f5148da686d 8f3791ee-3bc8-441f-afbe-ce9b25c84450 ec8023cb-91c4-4ece-84d0-0cc3fb44e955 0550396c-0674-4daa-b1ff-7fbe307102fe 333e7856-2a88-410f-b873-ca1d4ca8df75 c49f34c6-3997-495a-b49d-63a6235d8229 04a493c4-eec5-4a07-84d8-000d0edbcc68 4c6de44c-b079-4928-adce-ae31e5093380 3f346b4c-1e56-41b5-8cbf-084f98cf7098 108f21f5-5906-4550-b128-2d4c9e90beeb b2280c0b-ce0e-420d-8b20-cade7791cfbc e2bab001-a982-44f3-8314-3c0be36894a1 52ec76fd-4e32-4f87-8a9f-f5459d6f450c 94f32c40-7426-4ed5-a3ab-7f17024d6b47 76ad83ed-9902-4657-b386-17481b8806e7 8982c80c-6938-476c-9fcd-b6e1af6350d1 608b5b8c-8112-40aa-9959-d29cf927c92a f9f848ea-3a44-4ef0-b271-c87bbc3266a9 b39cb993-758a-498a-9c09-3b35ab71d512 914897de-cb7b-4062-8d1c-f50a169189c0 5bdebee5-d1fe-493f-b4a0-c088d2165aca 11fd9c53-4cb3-4260-bcb4-7c5a14e0b150 9b644d34-31de-4c49-9308-50b43377b685 ded70983-4641-4e8f-8c5a-5fedd2ae2ca4 4d11d6e9-7f1d-46f8-ae27-47df9a5a14ff 74ba1b21-19fa-4af5-b407-0cd4c8fb2c75 4b7405e4-eec4-4983-bbd2-c3ae62731660 b1c759f6-2394-471d-89a8-1855065c996e 86fbf68c-1bf9-4e7b-89bd-2a4da32a72da 8a66e6ec-3abf-451b-b52e-ccd772220dff e22a7abf-5804-4bd2-b790-5609f55f9c62 93a553c4-172d-496a-ab94-c3972ebe4056 2252aef7-41b6-4977-ac93-e84fd3132a53 8814e481-ebad-47ec-be0a-ced4d42b71d1 bcf5cdc5-5d7d-429d-a5f1-bb89078b46ab 6f050d34-3476-4592-a78a-a57813a18d96 854c7bb3-da6f-473b-8d50-cf5df965d76b faa4182f-84f3-4ca3-bf30-8679da1cc83b 2cefd1ab-02be-45e8-83fc-a987bf53f45d 2e3ff6c9-e7bb-4914-ad77-fc3cb1c4c5dc e32c96e0-3576-4c32-a216-8c0cfe65cd72 29126198-8b58-44d8-bb6d-e711274735d8 ef8709b6-9fce-4045-ae3b-8dcc041eab8a 4c4ff374-9be2-4958-a17f-256f063aa0d5 3c35eb88-de2c-45ad-ade1-bf37ded58f01 a2d47721-9245-4bd0-a1e5-c663dd48024f a484a7ba-ae94-46f7-b987-df932444b824 72bfba4d-66bc-4918-9b95-efcc49992c33 acabe8a7-4c9f-4565-bf45-4f5245991373 40549f0b-0927-4dcc-8424-63939bb6667c 1276a735-24e7-4af0-823a-c37c0f17545b 25652838-c66d-42c6-acf6-e6a73f7cff0c 808c052a-f477-4b96-8fad-9f6bd647dda1 b3207af8-4a5e-4c26-94cc-6c7bfeef6d01 c7da9a7e-7cf3-40fa-858a-02e6cc7f6cac 91b410b6-ee47-42de-bea1-55d39e38839d 408474e2-f0dc-4122-bf8f-b670b6d228ab 47bbd2eb-73cf-479c-9197-235745c691b4 4bae227b-ab3b-41af-bd65-0fe7c2213f14 5bed1e2a-0862-4fdd-8837-be53058b0558 d571ff63-651a-40ae-87e0-1132222ae10d 1e980654-ead0-4997-ab70-660cc095f12e b0ab6894-3f67-4b12-831c-23e0615456aa e7f43532-8f20-4712-bf4e-16f2ac9e569c f5872ff3-229d-4fa3-a473-6cfdb4194184 c79f035f-9483-4b6a-afbb-a57569e0f14d 55f11736-50b1-4d3b-af04-ecb54a74623e 8c3e1111-11fd-434e-b1b1-6b224509fc64 f9ba8a72-001b-486d-adb8-7f9d41341b30 9280a869-d161-4754-9191-52f7d298d195 be28fadc-0d53-42e6-b5ae-46b0dac97ea3 15da6dde-1c57-4d29-928d-9dd1c4ec06c5 407e022b-5f88-4315-a012-757f92e70e76 db3b15cf-7955-46f9-9b24-322796a80a46 986a429a-32ba-46fe-8a0f-2f2ea85d71a8 f877e4df-6eb7-45df-95fc-320e7fbf6999 b9edea31-4660-42a7-b43b-6e524abe3d49 6ba2a3fc-f2ba-45ad-a321-32c100802159 776c06b5-cce3-4dd6-a613-775149bd07d1 da2b5611-4d95-48f1-92ee-d8e68c1315dd 1796746b-3d1d-494a-9081-ade40971073c 9b478987-4077-49e4-8117-d1b1d3774083 08774434-f8af-4ed7-9e0f-2c9fa15a0ad7 f07dec56-a9d8-4cc7-ae57-dd552418c43d fd984da6-4fc7-4b6d-a8ad-df0bf64c11e7 6e736bee-e2bf-4add-86a0-d8847f56a8bb 69c9ab1f-4c4a-4e0b-89ff-0be288f251cb 4d94fd25-967d-4374-8a20-ad10811402ed 78b75977-3e76-4a27-a21a-ae868809599b 0480e38b-115e-4b01-b314-c3ba63eb1dd9 b229baa4-94cd-456e-ba0b-7da3cb81635c fef36b0b-7b45-407b-b463-7fc30f46a4f5 ae792164-d267-442f-bcc8-df9f81d0b8e3 32a3e291-3f60-41d9-96eb-eb23b1a5f772 ef7f6d0a-c4e1-4dbb-948f-8336e98a54b8 b986d6c8-26eb-485b-8845-4b7ef6bb5a6a f9b0629a-9faf-45b6-8620-ffec17c96508 488cbfe9-0a99-4fc7-837f-c6203e32e6d1 a577c65d-9225-4a96-b68f-0f18f194a2d0 8e2ee4e9-b9ee-405a-a018-dbe002b6c397 9d4c78d3-754c-4277-84b1-df3802779e6b ec75c0a4-afb1-4d5a-9f02-2030f0bcb242 72f7054d-ebda-43a5-924e-01fafcbd6c31 b7faecc6-b6a5-4cf2-b306-fd1d8460c174 403cb7fd-7468-460e-a10e-61fd475fb576 9d33129b-4be4-45a7-817a-a80fb74d9e7c 20fe6dfa-294f-403c-92de-8ba853f32894 5d7ceb0f-c125-40fa-a383-12d660a070f6 79b00114-4ded-45dc-88c0-312d095638d2 9dabf86d-de3f-4c40-9947-5d7d899f2f47 80403603-ff1a-4693-9b19-a19cf04963b5 25736c00-6357-4c0e-b912-80fe8f8d6457 a2233514-8cef-4237-acbf-1a1e9acdef89 957202a3-c7e6-4294-a7bf-5fc2ad3e9e0b 565b6c35-f8b4-41a1-a382-31653c4a3d64 e244b613-7294-4735-ab34-6968b7a75a76 c09998bc-82f1-445a-b648-07f7b4f563b6 ffa4ebd5-4179-451e-b775-57a43eac8706 4d43ed87-54d7-4100-bf37-2a6790c45cca e3e8d775-e922-4023-a113-3f71413a3fb6 77df3ef1-65cd-4738-ade4-b25e5c23f06e 272bcdf0-f45c-48d5-ac15-6efad6e976ea ba2d5aab-c6aa-41d8-9e93-d50c2d118957 cef0a9a3-bde0-4b24-a9cb-676717e825c7 9a27adb1-aba7-4efa-af7b-fa8e3fd6dc35 8e78bf4f-d478-4c0f-8482-5ee5dbb0d168 d804b1df-9830-4c1d-a255-4d0ada4b2eea b82d1187-c749-4f30-97a4-f2febbbd196b 7cdc0b81-0eb5-4e71-a357-6934693dfb79 82ca3cd3-f230-4e6f-85ee-716d82947286 a27eca67-121e-4a92-b3fc-fd9d9d17b31a ea835634-733c-4514-bea5-e902042e7f3e b3e8f92d-7a12-45e3-bad5-93adeda1cbc1 c9d4c26b-f848-4c26-a61f-9bc0806e5301 93162b21-555a-4e31-a3f7-0a233318102e 02dbc4ba-a1d7-4c9d-ac0b-4ea0c3d77cfb d1f302e7-f247-44b2-afe4-41011431657c 87a715be-b32a-45cb-af82-5605973ecdfa cb5e6366-e57e-4187-b508-aa719c90c733 990597bd-3f2b-47c4-9cda-a9ab60216510 a1beb6c4-2ad6-48c4-97c7-f35fbdfd7e0e 3ae52ed8-2cd1-49d3-8a68-7b763f807660 0ac8f7cc-66ef-4a28-8fb9-61f5a1f02f1c c26a54a5-dfa1-4040-8ab3-010bad49b567 63893356-70eb-4af4-b3cb-5c8feceed173 ec4ef356-92d9-4d3a-a316-43ef6d8f5339 b726c6c1-0bb3-4295-acea-f0692de16c1e 9fb7fb8a-23bd-49bc-9f6f-fb9dd70a940f d238228e-668c-4210-9e84-4bd7eab5d9c9 e2903ce6-37c4-4b9e-8f92-ac4327c60be2 6f229e7e-3805-454d-8a48-5d9a8397ee4d 0a896d8f-bbbb-4b3e-8892-3b92ded691eb 51c20b89-a850-4614-916a-7b82d29b1673 64a54f9e-a676-40ab-9eb6-045035e7362b 6b235a38-e02f-4ef6-b1e5-3c5a4f4a5b11 94e74f2f-366d-499b-b70a-b2ca1eee96f2 38275b93-963c-4159-ac4d-2b1fe18274c8 ab6bd54f-60d7-4bd1-9737-b321704b7d8b 7fd02c5e-020b-4b75-a4e6-d99388c9e9ca 11966f1e-075c-4098-89eb-9423d55b931c 01ff0dec-8354-4ebf-9dbe-154eacdfee82 b41ec949-c701-44aa-9d1a-16fcf90275e7 75de5de2-7938-4add-90f7-f5af9147f9f6 852ca424-60ba-471b-9fd7-2a4ca2ce14d9 b6c20f22-4bb5-4ded-a258-617a7440725d 50b1b0f5-407a-456a-9534-e2f587c23e57 df8b5268-6fb3-4062-8c16-0843fd65dc20 42533c7b-7077-4f8b-bd63-acc5b9857139 6ba27837-1475-4d62-8071-93832855da02 13f9276f-a7f3-46a2-b172-6d1064a80aba 2ea32148-f8a8-4abb-9735-d11645244646 b8783482-86b8-4037-b689-97e5298401ba 7607d718-cfb4-4e31-bbbc-391b72e7489a db7dbfd5-babd-406c-b61d-a529c935edad 7b76b5c2-2ca1-4290-ae86-0f5387d3f743 8fa76e26-ca28-4184-9337-9aa1a7e8dd86 34f322d1-d1e5-445c-b46b-ce9f80cf582c 23cf11da-36ef-4d16-8afd-3cb124e53521 63d18862-0086-4aaa-9c83-2f86bb65ca2e a26d731e-9add-4a39-96e1-c5d71b227dd4 c19dc872-ba3a-4a3c-a97c-1a1e0f4527b1 9cec4770-a9bc-4894-9945-40cd0a592c37 133cbb50-4d0b-472f-b03f-488c8b0ab828 cc468944-5796-4ef7-a533-9fa5c542e3a8 03b5f6bf-5b79-472f-a20d-bbafdd46d196 e0a13522-a8ec-4f2d-a5bc-1af63c6b95c4 96055fdf-a598-486c-87e0-c51f7600c269 0fd01cfd-05b9-4657-8081-9f3fe065402f 3d346bb0-5688-4387-a43d-71b21fb667f3 5d4b538e-1cff-46d9-be51-6ed6030cdc60 0fde744d-67b0-439d-8620-95766ae13ed0 09bfea52-5ab5-4432-8b5a-524ff8a48edb a10a3be7-67dd-4c5c-bf95-bee94e07b027 ecee652d-cf1e-4497-9de1-a246db0d3beb ece35174-bc98-4034-9bea-d67383e3e1e6 755f0591-eafe-49ac-93ef-60683f68c845 e274aca1-c015-4160-a08c-3743ad81a40b 471d0288-b186-4d19-a403-580c9ebb63e8 56f51cc3-fad6-49d6-9d6c-93ef0238c1cd 2384a85e-3a95-48b8-9319-cbb17cd11c2c 35202269-9be8-437a-bf02-c11ac3de058f 2f7eb298-4fc6-4592-ad0e-0eff802cb9e1 fa9ec9d6-48bb-4f71-be47-90549cfad4c2 86d2a3c8-41ae-40ee-8feb-2dc943b2051a 35a664da-da60-45f3-8249-c8ecbbdc5eb5 44420913-d089-4748-85cb-4df87ce84023 65305ad2-c08e-4412-8a9f-6228704c26ae 8ead4712-55e4-4dcf-83ee-a1e9099db731 f6627767-e3ac-403b-8ccd-743d16186ca4 b46883fe-c676-408f-8fa3-788bfae780b4 9fa9eef8-d23d-46f5-aeab-be85a7de991b 5cacd3f4-0345-4b34-88bc-666d21a27233 b0721aab-559b-4b5c-872a-12ca3f9c1760 050fc6df-1037-4745-9f4e-6af9b2c78c2c 5de58f12-2c75-43ee-8917-3b552c9c43f9 2bc83b34-63c9-45ff-9959-07658f4ded17 67b312ad-e046-48eb-b3c4-197633145d2a a016dd51-68df-4650-8bd8-8f53caedf789 7d5ddbea-6e6a-4010-bde0-5dd5663dc872 a9a76260-8335-4425-9fc5-dc56c1d234c2 639efc4c-9df1-4bd9-ae0b-a0f8521e73c7 0794b832-6731-40ff-9975-ebfe4038f8b9 1cc86580-5ef5-4ccc-a293-237951938697 dbfea3f3-c0a1-4fd0-9939-e96131150975 f107ab76-a239-4d85-bdcf-0a895f0f7692 198da984-ce51-45ed-b7c9-5524e2095821 1ef4f84a-de78-4623-9080-d24db013a717 a67ad031-17e2-4a13-a34c-34d790791036 5964a9d0-ca6d-462f-943e-4a020501fdfd 1d1c2c6c-3036-4a85-b489-014f28db51f4 898282fe-aaa5-4040-b2ef-eaa25729536c ec39f9c1-c79b-4611-95a5-bdf2153350f6 76455da4-8785-4f96-b7bc-6f7c12a6186a f074f0e8-aa2a-45c3-a242-9a7c53049bc5 02c3a2e0-5b61-4138-a734-dd091273bc6d 1d5fe866-713c-47ea-9162-c1b9eb9f4226 d7ad605d-0175-45f0-abd0-4b47258aec3d 2b010944-af86-4858-b9bc-a98e09ea385c 2cfe656d-45ae-49ac-bc18-55afaf9476c2 784a2ee1-068e-4852-914d-1864b4bfc149 682c6b8c-c399-4871-b108-9b34eebd133b a8ad57ad-e7ad-4b3f-bd6f-14922601d2a0 a710cc46-7841-41d2-b04a-14e2a5bc9f24 2c815312-259d-45fd-8de9-f34268b430eb 8d96238b-8796-463b-be6c-4efd23a289a4 ea32cab5-e670-4198-a0d1-9cc5571ceede d1b85a11-73d4-46da-8adc-7735a8a08a5c c1f2bc1b-ec82-4172-ba87-1f956945fbaf bd9cec1e-c466-4f03-9520-4677bc959314 38c333d0-df11-4690-a8d1-de9bab72f58b f437abd2-d10f-4359-a744-85933e1f0dde 4c91a7ca-f5a3-4022-97ca-0db40b53fd6e 65fab527-5f28-42d7-8492-55d84271d22c bcbb46ca-1f2e-4ec2-9a05-2e37dafe0809 ed339e41-f8a0-483d-ab97-2a904f266f45 9b9bd6a0-419f-442b-add4-3ff9c472b83f ff310f00-bb13-40b2-b412-9b233e07fec5 42457bb7-c939-4de7-ba82-bc7bce0f5a41 bcd36874-a610-4c59-b46f-83171c7e1809 4b5e601a-a26c-49c1-a983-8f3167b7189f 7fe9eff7-3cb9-4f4c-8409-1b63acb9200d 8a1c252c-4c07-423d-8778-6fa7a4e0e1fa e965f9ad-1a60-4fe1-ab1c-886c4cce9597 7276021a-3261-45a9-96be-f34c0ccfcb79 541b1cc8-e855-4080-9ea2-f53715db4176 8aa87003-2fad-4c0a-b90e-98ffff66de09 cee3a422-a14b-48d5-8008-80cd51c34ee1 fe51d389-74e5-4237-a517-1f710707fe40 dc34e766-739f-470c-bbf3-0da67983cf2e e93979ec-da29-437b-918d-9d1915a7e924 56e54f9e-bb5e-400a-bd35-18071016faee d0c0cfff-9ccb-41b0-a089-203177205aa9 fc4a287f-3707-40c7-a3b4-5dd8059b4af6 ac1273b3-9c15-49be-80ea-733e90f62099 b3b6e4a3-ca6a-4188-86bb-e22a6d9ea9f5 55138dc6-07a2-44b4-8f1b-be428aba73b4 245b2999-9a88-4d40-92ed-8c5cf75ef150 387fbde0-5ed0-4573-a161-a3e5d8a5d0e6 43772fd5-f231-4539-9012-8a844550ec54 bf0baa20-68f1-41c9-9814-521fd6ff80cc 69398d47-5415-41b9-bc86-09d854464497 f1de244e-339d-4c4d-aa0d-18f48c9fc1d8 05c3a798-8f48-4027-99eb-0d05378c69ee 0b242481-8fd7-4f1d-aad2-a5315f6acbaa fba84d70-4000-4cab-b7eb-2c21943681c9 3f1a3695-a568-4856-a68b-505dae9a395e 2b6d4714-e429-4edc-a145-0b2d7ccf7332 c50bff60-9240-4820-99fa-25cdcf6dce8a 4f021319-404c-464a-b9c8-aee0d85ff17e 568ab974-da5a-4e75-bf7a-cc1962ed345f 19d1de76-b226-4e65-876e-ec950a9c4cad f89eb1a0-eeaf-4e0d-8541-f5d88805d4a5 b94e2e96-f8f5-4fb6-bcaa-098c92cd4ebb 2a07d27e-79a2-4e66-95a2-33707de4971c e646483c-8b52-4734-ad62-78b040b9fab4 888a63b1-1c06-4733-8fd3-52bf4522f5b2 609b0707-06a8-4134-b0fa-1b95a4765e69 4e7884bb-d1b4-4776-b2d5-a945865bf636 0e8e180d-1934-4186-9b93-5bf5c5b60295 879f2f00-7248-4494-bddd-a8bc01f307a1 1b0c1873-beb7-4d65-adce-7298a3ba0664 dbf809bf-c3a1-487b-ae38-f5ac5ffbbd85 bd69aeff-881b-49fa-aab1-abe42a2ea3ca 506d9290-e331-48aa-9610-78d33bea243e 559366af-ece4-4d85-89cb-4b79e435cc28 ccb6ba79-a92b-4e9f-9e0f-230589c88f88 65d15680-d66c-40ac-8db0-2cfdba99cfee 5303c6ea-e6fa-42d8-8017-76e2b90e53f6 0e09f1ba-1f1d-4d46-b93a-a3b5896039c2 b9a08932-51b5-4a66-af15-66142281fd9e 476e2aed-e1a0-4452-8fbe-ef8f119a9c5b fa540096-af88-4946-a032-1aae5f4c8c84 cdec3e8d-7a00-4f72-b508-c22f50a602d7 a3404156-daa9-4d1f-96b3-75bbb700ac1e bd9aa511-a697-4aca-92f2-49db10afc8f9 eb4c97ff-089a-48a1-bac0-754af4d554fd fdf23ce2-6346-4baf-a61c-9fcc837acf46 db44bd71-3604-40c0-b101-d794d89ce308 b0f0ef2c-d624-461f-8f19-2d56dcd3f245 1da4d92d-7972-469e-993d-bed356ddc477 2b388a87-4501-4319-9ff0-06b44e89be46 dc9b9128-4103-4fa1-8db9-de5d35034ce4 37498532-812d-474e-811b-3f5957a87d15 a9a7ee70-4326-407c-9d0f-419aaa7657a2 2e6e4e24-8809-43f4-881b-d510a00c64cb 93e48679-e1fd-49c2-ae11-9f2bfac155cc ec50b1f3-b9e5-4e45-842b-65b3925bc7b6 0ec7a70e-b936-4e01-b381-4897d1cb0bb0 d9a5a3c7-dab6-4b90-a239-d4bbe14408d2 4db32e37-5bab-4426-94fd-c271fb0e6e82 73c316b0-f6c6-4fba-bb2a-a21378b6b368 9c131fbd-eddf-4efb-952b-57a7bfa1f20a 1855b669-da54-47dc-89eb-8c46d0f96358 b09794f1-0841-4061-8821-406ec7994e42 6509164b-258f-47bb-97f8-bfea4b2b9acd 1eb757a3-7d67-4f83-aed3-2b6b6e2a1ebe be07e9af-68a7-4a51-9baf-7342885ee13b 513ba006-4d0c-4c7c-b1fe-dbb7aadfc77e 8638c930-107d-4f67-953d-f5fd2b66e0fd 0d23b906-bebd-42e3-883a-134655fca68c d3b77927-a3da-4314-a8af-f897af3426c6 5c20f5a4-74be-4653-af8a-a3939ca37cfe e1b0522f-67c0-4eae-b9ed-f8c26da0b57f ac027f98-0a62-411d-a8aa-e5d72c234a91 524f7b7b-ad38-47e3-9df5-082e5cd0ff18 d5759e02-20b1-48cb-ad43-791a11ed621b 047fdad1-182f-4924-833d-cd6c3df8599b 35273293-88a1-4031-9417-46533c8f7b02 de738e37-5836-4579-b326-a19345e54b9d 51758e78-8d1c-4c29-9f80-846935327ea2 2addc106-9785-4063-8af3-bd2c70a1b199 c5ca1ff9-f9da-4f02-8993-4f9d4406df2c b2be9992-3d57-4df7-b1e8-3cc545711106 5259f34a-1cb6-4cc1-a1aa-1284c34e0b84 6ecbe944-3049-4620-81e2-db3e4ae27524 f95203a7-1825-46c9-8aeb-c07f1f2ade93 c0be29a4-74b5-4dd5-8b9b-60630dc37508 1332fe49-4794-47f3-883c-809b6326f4d6 3f072550-9618-4450-a489-1c0f80dbf058 82b60dba-c468-46df-a4cc-eae94feac3f4 8c42251b-a6bf-4135-9164-1c0aa5569b9d eac150d3-fbb7-4ddf-8acf-f83896dbcc1b 93fa932e-2843-4719-9f16-b13fa63a7931 ff62b1a9-e4f5-4d62-b3d8-52e7375fe118 d8ef98f2-06ad-44e4-bc4e-e2c9f693ad61 ec1be566-8186-4e82-a183-e7baa2cfa6e8 7fdee040-d0f7-4821-ad04-0a619af68684 b7f7418c-7aa2-42dd-ae24-09b1dd7bf35c 426af6a2-9e72-432f-9021-4ac50c882385 36e6fcae-69b8-454d-a302-34571395e1d4 17ed74ca-789e-4d03-9cab-c3803bf4835c 6a9b3558-2a97-449b-a2b5-b41286f44097 ceec7fe0-107f-4674-a08b-f7b55081e17e 95b82758-5a4d-4b11-8ffa-8eb9a2134fd1 e7123b2a-b530-422c-bfac-e2cf396d880a abcab274-6fc7-4c08-bcf6-55f0890a90b8 8a1334cd-03d8-4be0-9592-33755bbc9048 69c56c22-d30a-4848-9871-75b8dbfa9eda 19625c8a-159c-487f-a06c-923862f6ddc2 22294ed6-b3d4-40c4-b3e1-3ff068d4605d 5d669630-3f9d-4154-a78b-294c8e2ad4e7 4f53d24d-b0a9-49b3-a78d-cd24d67a03df 26d2e3a9-2d76-47f4-81af-e259c0f680ac e29a89cf-f28d-429f-8802-2361fdac22a6 d7c22d80-22d3-47ef-9661-fee441286c48 494d4e66-2138-432b-8b09-37f935a31373 3f9d8019-533c-4b1f-9e62-4b1410a81e24 fbe52256-4ffc-4e70-9d6a-950660979903 3516b7e7-36b0-4f21-bf87-9fc30c4542fc 6cdf193a-0670-40de-a858-63180940a469 753bc89f-3583-4c92-848d-543dd0623b7a 3dc76522-cedb-4a19-b090-178fe389defc 5ff2b67e-58e9-43f4-b558-99bbd0f04dfc 2d8ad9a1-89c5-4988-8d81-03cc36e086a0 98514033-e9ed-49c6-97f7-47b58446dba9 801ab3f3-5a95-4326-8c71-c5d4a760c345 56ac0544-a2eb-43a4-8b7b-3ef0f1caf10b 2535c20c-c104-4dce-9d03-3dc2c30d346f 87b38160-5ccd-468f-a95a-843c7fb42932 1957e6eb-73ff-459f-a917-8983d6f73134 23a41997-2fb7-407c-9b85-84abf7c8ddd4 157da1f0-c0e0-4a37-8570-58052dd3f393 e2bf83bb-a94e-4367-874c-14cb22261322 9618ddbd-21d6-412d-bc76-0ea3f763e77e 7a197e07-f91e-452b-9d3d-3e16a75db853 e29e62f3-4227-4350-b576-6e0405906e8a 1d4a7cf4-8c4a-4a59-bdbe-d025c91ff234 98570558-5b74-4b0b-a0fb-9807b642656c beecd459-fe13-4b3a-b371-42a35d6229ba ae1eb09a-d567-4e84-8727-8ff9452074e8 589b3cfa-f396-43bd-91fe-7998a2d0c9cd cf578bef-1ad1-49e2-bba3-9dfcc6c3d0ea 70f215e4-a95b-4c08-b194-275b2cfeb69f 146d67cb-5a2a-4514-910c-2b4bc0844d17 83286052-b2d9-4095-9be4-02265323ec0e b7af4929-f390-49ae-94a4-52b8cd68ccfd 8c4e1334-0768-4097-a50d-7bd9898b55cb 7324fcaf-6aca-43ee-b683-7e0d18e5f4f4 44f7839f-a9d1-4d32-a582-825cae27ccec 601536f0-6c59-4b37-9504-16818a680b7b d2166d5b-10e6-4a7f-bb97-91454e47d30c dba46e3c-9e41-4bbe-9cdd-d88406728ebd 4da23f13-497a-467a-8963-5c837f0a3abf 157069f6-9767-4042-a6b9-518403109408 0a616c97-8841-41ba-aecc-7947d154886b a9328a7f-0be5-434f-a3fc-f380608440c9 dcc9d595-249b-433e-b8e0-a9eb731a5ab6 b9db412e-80f3-4b37-92aa-2e59cf824ae1 60d7d225-4886-4657-be8c-acab8e22fc9f b9f09c6b-7a3d-4f41-bcbf-422ea8bcfded 624c2092-83ad-4903-a94c-ce085a3878e0 f833cc4c-15da-4d37-9ef3-5858d064197d 1df1b8bb-4524-4e39-97fa-edb3240f9940 cfdf9528-53c7-443b-8ba5-acb334efac4d 8721f9a1-46fb-4aff-ac36-6446c819573c eb7a7df1-5e72-4275-8972-dac707d03b22 343681d4-ae1d-4040-9d27-c2b103b49f74 afbe8f6d-fa81-443c-90fc-127134c7e1d0 3e4ae3db-4118-4c4e-996f-b79b2da81a93 a48786c2-b7b7-4266-9d2c-1373773d23b1 9b7f9fb3-f64c-4817-aace-274fc7ee723d 97c4810d-53cd-4e06-becc-8c71b5e2a004 e094af01-569e-4d6a-95a0-55590e7ab881 71117b1f-7226-4174-b60a-74a07c8c5c09 f4fa4052-3c88-42d5-b8e5-18a777a96c08 9576fa62-7d60-4a9e-9f3b-f8b0ed7c00f5 1f16b940-fda5-480a-8c56-6a2e4db70ec9 052233c2-7f97-464b-8c14-efd5db2aa48f 34a42120-a9bc-4394-b139-0cf8431b1474 eff90b65-4204-4ea3-988a-98bdae947600 a886c062-3d1e-4444-87cb-abd11cb9c9d1 d4032ebc-9164-4325-8f87-1d555cdd69e1 4d2b3553-2f9d-4b10-8117-ae040423fb13 a6cabaed-8e32-49df-b3fc-7680e86e0288 7b056b65-2a48-4262-80c4-e4b53ec4725c e7ad6d15-177b-432f-925c-de2011047cd2 4a96d428-92da-4de6-a2aa-58b503f8b442 d4cf44bc-f78a-4a3b-8bd8-b490665584c2 6881f653-b738-4cc6-b47e-7b7707cb22c4 f45d79e0-ea21-4ea5-af3f-cfae5d19284b 39f51957-3ba2-41de-ac6d-9a9ecc655d91 e3599c62-97b5-490c-9b7f-4ad7c0b97e33 f15e51aa-12dc-48bf-8bed-aa855296bd84 e6860b87-a565-4dbd-adfc-503c0cdb7e58 aec83430-b968-472c-b873-05d3d04b3b6c e3677e55-c2cf-47a1-93fb-5a1863a740cd be307f31-59d6-4707-9fa0-df54ee527a22 0d183a91-1818-43c4-96d9-a5c6ef665a68 6f8c3394-f525-4348-bd44-55941afed9cc 92d774f2-e7ac-41ee-9a85-7c30f9f9906c c245d58b-e50e-4eb5-a1a2-9dfd7ab48f8c 0077027f-1420-42b1-9e95-1f9b5fc81c23 e16ab738-1f00-4198-a8cb-9d5ffaeea1be 94ef6327-d241-4b2a-b175-47599568f970 edf91af4-53eb-4cce-89fc-74cebff8f0b0 33c1f587-d5cc-4985-9315-09932edd4b3b ef68ebee-3a7f-474f-a392-ec8b8d75ed01 8e376166-6ac4-4e59-87af-84d5770d648d c08fb7a5-ee1b-4a79-82f7-8cb621bb64ea efb26155-c332-4f9e-bbd6-fb3219004061 08e95f85-34b6-43d0-accb-e3db652f2716 d96fde2b-da81-4edb-a798-c999dcadd4ef 6bb64d3b-22c5-411b-a469-9d8ba8ce9d58 9619bedd-1dd4-4e48-a178-cc122b3d7bb1 78febf5b-7c56-4e95-9952-c373bf7bcb41 4f128ed3-48c1-4e98-969e-05d6d7da491e 81fc828a-496d-4674-a6a0-23884b398758 89180d0c-69dc-48ba-8159-41d26c9920b1 9595ef69-f5e1-41b0-a958-54eb2e7f4add 3f209ba8-dc7a-4e4d-a1eb-974facb2f46d 7e2e9f7d-bad0-4fa4-91b4-cceec94ce219 d501daec-0ba2-4ab0-a31b-73fa2c16a322 c3fc37ee-1a30-49ce-8de5-17c38822213d 0853b868-4e8c-4e92-83be-ecea169d8587 9d87e0ab-bac6-40c5-9faa-55be71c6c7e3 34550eff-e05c-4a70-982c-9ed2d8dd965b 913a7a4f-6609-4bde-9bb1-382c05625966 01ff1f99-f7d8-4768-a947-6bd2f4f7bda1 063273b4-16e9-4182-80b7-9b2909144866 4b6d2154-6af8-49fb-b782-112f3c21605f d0d85abe-17eb-4616-8e06-f2074b9f3cbd c6b076aa-224f-4791-9254-4008e80b566c 623d2264-8f5c-4e5c-83dd-d547ec547970 41fda443-232a-47e4-81ad-39c6c0835dd2 d5cf5c5c-bf48-434e-9bee-dc9d45732dd5 8afceb3e-cafa-4f11-8adb-49cd28446e12 9d3fc5ea-755d-422c-bd4d-214510e017f8 cf7eea98-b12f-4ae9-ad37-3c3f20de9d4a 5a5f7775-3481-4256-9880-e7e4d9664b24 b1648422-7bf2-49c8-914c-d03303dbb2f3 2c90a98a-1b38-4ec2-81a9-d4387be68506 5e1bcc2a-1d6f-4c3c-b460-eb0a9284ba23 f179497b-fdff-437a-a9bd-a456da77931d c49f9f69-8127-4c65-aaee-ae442e25e505 d240ae3d-fca6-4847-b64c-843097e978e9 9056199a-d64b-4402-a184-4618d61ec0a5 e99deb81-3c13-436b-bc87-8dae0766adee 2aa35923-a8a8-416b-bceb-7139d31dc524 5b6b4dce-bd1d-4295-a41a-f5de7d777c77 7465ec7f-45f4-4c60-b4d6-e459dd56ebaa 6661d000-7f60-4a3e-950b-2b7992797670 8a141141-d1a5-4dee-91e8-e4cf4458b628 4caa489f-e029-4ff5-8d38-2e71262aa509 88b89ae3-6727-498e-bcf6-1358e81421b3 442e2b73-e556-42fa-97da-61762bb59610 3e5b7789-e862-45b6-840f-f294f27dedff a119dd78-cc48-4229-be50-53c72b20e3bc ff64458b-15d1-4840-a4e3-c1d6d67ac1c4 f6d54be6-ba20-4e5b-a41f-b65a15b5ab61 8871b8f8-b661-4d24-96fd-78ca51bfe2cd 653825f5-0ff8-4da1-aeb1-03b111ae41a4 d2174fd4-0378-403a-91fd-cf437b5ffc8c 23ec0593-163a-43b9-8710-7b8bc0435da5 d8d3a1e5-0686-43b9-8edd-a425e579cc0a 452dde3e-2f10-4a5e-bd72-678d627b746c 481dd61a-d380-4124-bfe4-a03f729639c9 2775f40f-3f0b-4dc9-880d-8e3e820517e1 784c04f2-8205-4b4d-a6b9-54185c2703df ad14ec08-fa2c-4827-8b49-e2125a76aab6 6d312ff0-716b-4f58-9259-48c96ce14278 18894ba7-6b17-43c7-bb31-d2ee0d156e9e aadd75ec-b8d2-4742-9850-21566443db13 8bb05517-9729-4c73-9e76-1806a9f29e32 eb8dd558-9c13-4c84-a11e-1463acd58feb 86e7c4a5-3b9c-455f-8c3a-930bf9200d0f 18aba19a-c022-4cf7-b891-1476f9e15520 d4e1cbd0-3b79-4180-93cb-9ffe6aa0644d 0fbd723a-6f04-4882-9de8-44c163f3a7ef 51cc5b5b-8da3-4bed-9a3c-3ef56288ac0b 0ed27625-3ae9-4468-a7da-d72cb166e887 33f7b0ee-ba51-4411-b5f2-1279730698fb 0ff4bf52-60ff-4d30-a283-5e1c6d1fd4fe 21660856-b79b-47b6-b22b-ab8b866e3641 51b7cd8f-3557-4dcf-b5bb-6e918a041c39 ecc7cfd9-1e2a-4b05-8479-0768db99f50e 174e70ad-ead9-483b-8119-ff38696999cb f195efe9-de0c-4bc8-8bd6-01c6be052da9 2907feb6-0136-4d8b-a5f0-71243b35155b 009854b2-83e5-49ea-880d-fd71dff3b2e6 314fe134-7d51-4501-9d06-e969eeb48e90 dcded4f1-9e89-42e2-bb32-4aa6292c32ca 38a5dac0-a21b-46b3-8a5e-5c7aab70ca08 7cc6b9f4-dc58-4a81-a13c-2b4430598443 b5de3496-a400-444c-bfe4-5956e58146b0 b18bc38b-d989-41a3-bc9a-824b186a3fbe 99bf7a86-955f-4b31-9fa0-70ca161863ff 2f3fa54c-ec67-4913-b881-96c5ade4c169 e6f78371-751f-4f22-b0a9-4f51965fa35b 38de8066-f442-44bb-899d-d6c448de4b12 8a837bb4-3c4a-4c91-bb19-21d88b797f13 e98533fa-fdb7-4da7-a25b-4ba7161ac899 7dc97da9-b8fb-4939-ac22-8802c45d0a8b fd060b91-dccb-4263-b7b4-7cd2eba8e220 efcebd86-1be8-4170-8bb5-a04ac2a7f86f a780eb7a-94e6-4306-ac82-0190d8602dd2 1f1c3006-44b7-4dcd-9d74-9e50ad47cc21 4ebb53f7-f8a5-4b3b-90ef-722da9602a73 935ea06d-3acf-4ad6-be53-67381023bbe9 3b5ecbfc-f52b-4e1e-8c74-be832aaf59a7 4a906e7f-ce63-4c58-b7ac-0b4fb4e67c98 da82996f-20be-4872-88ef-49f1c7b1894e e9ffcf3f-f45e-4025-ad45-a40b05670b77 fd845655-d186-4e22-9a12-f297f9b19c05 b62d9015-9811-450a-b657-407d41ca1c42 594c0c01-d015-4dbd-b578-019313360b76 99c4a052-5fb8-440b-8d90-282d832334e2 78d4db47-9370-4013-90e3-8dd00e491423 8e641278-c83a-4df8-8598-eb85f5d80ffc b798c3c5-541a-42df-a802-ce8f9bdb8a65 6b737dbc-edc1-4d54-9965-38716294cd9a bc538cc7-311b-4917-a298-645bbad03ad9 9d32a18b-a640-4570-b144-7b2ae1afde75 8f44a0cb-bf24-4261-b878-152afa5247ff ce0922d7-c0b5-4ad8-b6fc-6feacffa4959 98cf4850-5a11-4732-b80d-5a1e2fc2a3a6 1e9cb02a-b8ba-4e7c-8928-2d58f54183af b9f36bd7-72ff-43c6-83d6-63c624639cb1 7e09d60b-11dd-4acb-8fdd-1eb66b040f12 e761ea13-d576-4a28-853e-0ed45627762a 5a20f85a-5acb-4082-a8df-3fc86ecd9dbe 18f9b016-1644-4a06-8e6b-3cdd8fad8a8a e7c467fb-1236-436b-a2f5-1e0bcd135742 e4a68918-9e0b-485f-b0a3-9cbf41743aea c1632a2c-2e7f-4728-b95f-91eddbdc54e9 099f1fbe-9c8d-4172-b11c-57b8151585f1 1366795f-26c7-425a-83cd-1decdb232b28 35402d56-b2e7-4fd7-b9e2-ef9529a3db3f 7e831599-04c5-469a-ac5b-0ef4584bc0f2 690e0912-9290-4609-8e11-340fa3c268fe 4d12d35b-173e-4051-94c6-fe543b601725 e3b1dcf9-7dc0-43ce-bf67-076fe44b45d3 f3cb49f4-3357-4169-9742-f3299567e335 32771f77-4d9f-4553-a3ba-d911a52e06d8 c8bb59c9-7e0c-412f-b049-4bacfa34c66f a3d20219-be7f-4c0d-bb6d-fc9b9d2846ea 9a319907-7049-41cd-8d58-7f7e049dfe76 b9e8eecb-88df-4304-86e1-63e46c18985f 3c113c93-5901-4120-909a-fa11d7b1ba60 6f8698ec-f95c-4bb2-9f2f-885f006195c9 80a2e5da-c8f3-4ab1-851f-d5eee5b74983 94fe0814-7df3-4ef9-a9c4-f6cf8ed84280 b0d90c5e-efb0-4b3c-8f08-a9e407f7b9eb 23a64562-9eca-4e19-ac2f-7f2c6ccba1fb 4402a057-85a7-441b-b8e1-981cbf616ede 3e002105-5313-45ad-a729-ffb47c7a5254 b3694a73-7592-445d-b367-4fd87c49ed9f 29d5f04c-29ab-40ae-a595-d14dc36b3d8d fa9e018f-b177-4cea-b257-6c5502939afd 67bf16f7-c422-459e-be2e-23ae8502cd23 bb96a3c5-0eef-45c7-8343-aac06f453fd2 f0ff991d-800f-43bd-8742-461a9a7cf8eb 320031b3-2eea-4e42-b5a9-f51d5072401e 00e25d55-47ff-4e46-8ded-793bda78f09c 2ce70e81-e9ba-4ba2-a1f3-6f6790de1222 facd57b2-b0a4-4d6c-9c84-0c6daef85d50 b81d52af-6574-46b0-ae30-bdb8f96659a1 a5204627-5115-4d8e-b45b-a563422e19b7 18894d25-d12b-4455-9171-96621bb95a10 c88dfa2a-b1cd-4399-b9a4-22a3a0c8d93d 1b85b248-60fd-44c5-97db-929a5a2fc20d 39d97118-8083-44d0-982e-d6af593b2bee e1382f07-8135-4c8b-98d8-9e71244f5029 24c35347-6e5c-45ea-87ee-6086d16b64c1 af9b59fc-f10b-4628-ad64-470ed654a0d2 eaf2ed89-8ce2-4588-b8e6-0526342e140d 86390fc6-c8d4-40f4-b2ea-7e05d7e3fea7 23f8307b-a910-47d3-85a8-22f45a245c3a c331e50a-b7fa-4708-884b-30066edc3f0c 72c77829-0c07-436f-ab9a-9ea4542a7b67 b8557977-7e15-412b-af0b-c949ada0936c dd83e844-5a00-420c-ab72-08f574c93887 e3ae84c0-9374-4672-a3a1-6b09acaaf1f2 b8b42697-a685-4e97-a41f-6971b69f4e91 5b7c49f2-7b33-46b4-b945-0cdbde37081c b557004b-81e9-4c67-892c-adef0dbd0ac6 cc955445-12cb-4ced-ba8b-5e8c2df537ae f09cbb21-91c1-437f-bfef-a5ed03ccb13e 58b9c409-bdb6-41c8-b2ac-1c6d55642ab7 2375f8f1-011d-4905-acd8-d6ea911c6f47 3f675c1e-f95c-4966-b229-5191d3244cbf 25b2e5f4-c7aa-4969-813d-5ee05036d0a0 e545bb3e-ef4c-4bb1-9cf2-86f7535233d4 ac3028d1-f653-4f0f-bd19-83b72e3cd103 2b5d746a-1ed0-4458-a196-08e392b5d956 22941304-5537-40ab-888e-026c08e3d113 d8b42f15-e67e-4320-92fd-4f3325a4b7f4 db5a9419-bc7d-4dc7-9cba-5c44d38a8fc6 3ed4df25-ae5f-488a-a0e0-916b9a770f5f e4313e2b-a065-4413-8fe6-d44d48f548b1 3b666686-e572-49e4-9872-5095d59fc511 d42251f9-109c-42c7-a2ff-b5bea35215c8 171c2030-cad7-4f76-9611-2799dfa988d2 7eb43b70-8a44-4f8e-8dea-91f75be00eba b851ff3e-e64b-4b09-8034-138d734ccc36 3b435d90-d589-4cdb-9a3a-a5c23c97c4c6 bae06cc1-3a56-4c6b-b504-9504fa861046 874908c1-737a-4b4b-a1d9-cf3f59c53db2 9dc061b9-6d85-436c-aa66-dcb4deb7770d c80c0454-82e4-44bb-a312-04d485b0fd11 4a62f02d-f471-45a0-a437-8f66409af7a3 1af93958-4880-4d84-80cf-82b90ae575f3 9ccfadc8-aa6a-4161-9891-c9db5283eb0a 192f66ba-6417-446f-ac6c-9818decbc68b f240e9d2-c86e-4827-9016-a07160004e6a 156cfc88-d3a3-4b11-aa85-dbd9895a44d5 dc6b365c-154d-4b31-b0fe-7315cee5fd49 d5b9c918-3971-4ff4-9608-42293934fb9c b4b5ec7b-2a43-4aff-abdf-e8b8596c277c 4a3dc389-021c-40bd-af3e-247839bcff84 9ce89404-c3d2-480b-94f0-5a9b9bec7966 c2379301-1b18-407b-9b53-d923a9054802 33836013-528f-407b-8d44-6a4f150b01cd 31a51f39-3c72-426b-b25d-53704cbe601c 4d9b1c70-0df1-49a8-99ae-235e1cf07232 0a5b41a9-5562-430c-a977-2e0c7dc53b68 7a4802a4-4b2b-4d51-a078-3157cb93cff4 516ac289-e57f-488d-8b1e-b1d14ab2395f 092ab03d-de94-4e04-a021-646863b5cd8a 5d6ea6cc-f375-48a1-844f-59007ad0f71a 52f6cdfe-932c-4d5a-a13f-62c065b3d17a 9750bf53-37cf-4c3b-872c-4031cf26fb6a 98627274-9224-4599-89c8-7c315fe1cd23 fcdd5a34-1ecd-4ee8-9b96-7d45d08878d1 5c94c4cb-5b8d-4ffa-8a1b-cdd1a1610ecf b6951d6b-83e2-4c25-bed8-17f365878e18 f4e54b0e-743e-41ee-b7b8-4f8e00eff203 f545f303-6d73-429b-80a3-6c07ebdcc0ea 2bec7ffe-7b1d-4780-b89a-247f507ff87e 9558679f-3740-4b60-8fb3-ab8158df28af 8031632d-4c1a-4b07-b0bc-db9f7d3b01ce c872726b-b71a-44fe-a886-2b62b2bbc834 2fa75643-53f3-4d30-919e-6ed82fcf214b 5a35ec32-d313-4f1e-a038-f411aa32b567 64bd48e2-768d-48ca-832e-258b3fd07ac4 befc8e40-f5b4-48f2-9b75-e7359bca33eb 55ea08ab-d241-4a4c-be13-e9f205bf5e88 820d8967-6b3c-4fda-9b3c-9562fbf8ed6d 67f2e5ad-ef8f-446e-a240-e8633467ae8c 80d12ee9-01e2-49e6-94b7-c0b706c66931 f8c1c8dd-843a-49fd-8d9b-dd213417bf5f 9fa0b4d0-2009-4e49-8ee0-7cf5bbde975d 00edbd71-ae64-4802-b579-f22849984dad ad696f99-4fc9-4832-ace4-0b1d499738f7 bee272c5-ae8c-41b9-8f1b-0623a6387a8a 38691fba-7799-4c5c-ac92-0b7af557b203 dbb2c306-bd35-407a-ae3b-5822c05b7366 eecad49f-3128-44c7-8df6-753a020788c8 a39cf9c3-8e87-474c-a62d-076f577425e9 4e1f814d-4482-44ad-ae93-c248a5e026bc c06b4513-5f4e-47f0-812f-d9bc42e59661 b9c78d69-2154-4fc4-a2f0-45ce673db94e 05256f3c-0c99-429f-b982-d443f4a3c923 b8bfd3ee-6512-4ab8-992a-b154a784da0c fc6d4325-deb6-4862-91be-19ccdc61de0d a0aa4977-8f22-4cd2-880a-00a15a929f12 95c0347f-3a25-48cc-9f58-5dcea816791f a252f521-61fb-4b95-bfd6-23ed5e8fa692 8c21f008-0960-41d7-abb0-d8516fe4329b c1f841a6-62f0-4206-80f2-24daa10ee547 942069b2-2dfa-43ea-b82d-d4c96734dad1 3eb4699a-e32f-41ae-aae0-63eed72c1c0b d3710e0e-4e6f-4ce4-8adf-0da1cb2042d9 026b07c9-8ad5-4bb0-8a26-b03830fa1488 c5190266-fa2a-466a-8fe1-64785d533f29 df7f06bd-aa94-447d-8196-09c16e2c0d5e 8fc4ff62-4045-4334-9b85-01cf5d1c4da5 fd7470fe-3db1-41dd-aa4e-879c19c4ac42 5ca34b26-ab26-4326-a8f3-a427d3b502db 85cd7f40-8afe-4705-950d-a10a050f61ae a06d3629-dfc3-4ce2-af45-9d520b66a752 e1dd682a-df59-4c98-840a-6f7f2d7a24ff 4fe7b62f-07db-410b-bbac-3a0142da085f 63c0fd91-c7c5-4825-9d0e-b4b703bc7c11 081a0aa3-2548-414e-bb7b-baf37e69742a 00bef7bb-2e63-4349-a0d6-358d47a67c51 9e792e93-85c6-4eaa-8954-3688074f095a 1710f2a8-361b-47a6-83c6-43b8fb2574d4 f3c807bc-13ef-499e-8a6b-2a1a4f1ae155 9a11a5c7-9d5e-41be-b72a-fbaabb8aa769 e3670ad3-7b0e-4969-ba09-c6c4e29caf06 713b3e44-3948-456b-9ab6-37256f6afcfe 647c28ae-3a8a-49dd-84f1-c70038f826ab c8062271-6ba7-4d71-884b-851b0365d2ac e841052a-8727-450a-8c7e-25ba755697f3 bff172bf-a96c-4d18-a702-da01d8f625bc d4aa2a34-d447-41c7-a18b-29c4be9108b1 056214d4-2e81-4e59-bfc1-d41970acff0b b18dbe6c-9e1b-4e58-81b8-f07b5bba35e7 8f7ab56a-e6a4-428e-a2f8-83fb8fb54342 3bc929fb-8a2d-4190-ba30-90b0c2bcf7b4 2b4009e4-b502-4ad2-b4a6-1f80c8d152b2 7c3d1cd9-0eca-4a25-bf9a-3efd08084076 1ea127ad-dce8-4d6a-84b2-44b46b9161ac 88a9870d-2db3-40d5-8ed9-f32f8650b348 340dae6f-e746-4438-a5d1-af88bff5fc9b 16803227-1da9-439d-9d25-a6d6c36831d6 880e173d-d664-42e5-8031-760a78f44061 9d260841-af19-43c4-85a0-138ae7c96364 6ca33ef9-e554-4f36-8c5b-a8367abc928b 5d4c6f14-2be7-423e-8abf-74798431fc94 5641ab16-aadb-4639-ac6f-6e3c159b9849 544b2a8c-9920-499f-be70-2dd22092d3c6 26b9a866-8155-45a6-b4c5-77ee5b4b1523 1756ff09-d4bb-46b4-acf0-e7fbcc3a75b4 bbf601ef-9916-4c41-bfad-c76df57b093a 7d803e5b-b703-4d3f-8406-1bfb5514a367 ab643626-f5e9-490f-a5dc-822dfb98eb0a 25bce674-5ad1-460d-bd94-7eddc7509052 bf85ee9e-2bb1-4afa-8337-9b73d8b40d44 2a7c2d33-0a32-45ea-806c-74700a88011a aa05f8a2-bb93-4294-a999-d5b29e927a80 6200071c-5a0f-4d4f-b129-3d93cd51397a e7bc43b5-7443-4806-94c1-08d0c7fd3caa 27755552-748f-4cf7-9f3f-9f6fdfb50de8 3f3e202e-b6a4-4a50-a44d-c0094623e38a c93fa5db-f4e0-4fa3-a1f9-a6f9445d0e41 9dfd4835-9b1c-4b7a-a0ca-0b566d8d85bf 43c4359a-4ad9-4a96-b63c-897d142f6282 1284ae7e-2bd6-4e34-aba5-242c231e231b b65cad42-cb0e-4f07-a280-5acffb3d82de a4b126ae-a7aa-4198-a6b2-89ab7451e64b b3f65786-5073-45b5-a854-a3cc236634ff d3a1a7b7-440d-4a17-82df-78e30605f9c5 492c27f3-56de-44fd-a1b7-06ea9cf777ac 14f0659a-bce3-4277-8bf9-b587cfbca0cb f0e705e2-6ed1-43e7-a399-403436876aeb 75171f91-89fa-4503-ac95-3fda6d6bac06 fb31eefb-1f99-4aab-836c-2fbf84d005d6 18500e80-5957-4a04-b28f-fee95bd79190 5298c7cf-82c4-4121-a303-ff2747142f65 ef4da9e7-e23e-4f09-afbc-389412e538a6 b78c97f2-d2a4-4593-93d3-61f6346cee34 56081182-c327-45b3-a54c-cd2eca2d61c8 d489ddb2-e692-4e84-be97-cc2278bd02b2 7292417e-8fe3-4722-8667-049d6b03d1ba b6a80663-0eee-4539-b92a-45a8485ea2dc 4dcfae78-7e6c-4553-a40a-31d1ebdd4a85 49748992-4996-45bd-b2fe-05503971d5d2 0f94f20e-c1a6-484d-a3bf-6ccc873ba1a3 f4ff03be-fe5f-4ef1-b193-4cd726cde3d4 ac92b86f-9549-4a8c-b6e0-8e3ed4df569a 5c41a37c-4b11-435a-bb1e-a2140dc8751f 8d58fae3-d463-41fb-9bb3-8e130c318ebe 8e19b600-1bfc-43f3-b363-642960bc0427 70e80a04-d859-453e-94e8-ecee9b4aa206 2c695082-e0e0-411d-8992-f9f244f67ebf 57e9669f-9dfe-4b89-90bf-ed9b2d0a4079 c9067bcc-9a8d-4967-b9a1-f5bf2262cacb 7b696815-c459-4fb5-876f-c7f8960a3fdc e2825bf9-b24a-4c72-8101-459fd5d48417 23133a69-9c54-42c3-b14d-6722a40f7116 ac4615dc-0bad-435d-80b3-1d74dabdacec c0e50daa-aeb9-4855-ab35-35b216931600 5bf111d9-cc55-4ed5-a776-6e1713ae4778 3352eccb-633a-4b4e-8e89-a4456017e60e 8603477c-bb8a-4e74-bf63-00ac26133a0a 2c487889-1eed-4b9b-9e01-5e84ed63c0de 404e692d-f1bf-48a1-acab-7756bc116a4f ba02b40f-72a8-4162-99ec-88ea9446f54f f2efb0ba-7943-4875-a6b1-ca68a1e38297 0ec40ff3-39fc-495a-98af-75dd985bd850 7f224189-160f-42cf-b5ff-98ca581d0261 d4fbf258-c567-4de8-a2b1-92b0bb11173d 91a7511b-3a8e-4637-aa83-df547bb95343 70cf32d7-03e1-439b-bd4c-0751f2f330d1 eb5282ad-e72d-4fa7-ac9b-56b60e3d98e1 d16f94b2-eb5a-486b-9ed0-a3ed039e9ccf 151488f5-0eee-4160-af8b-e4cb95e24ed3 8534e6e9-147a-4eb0-9be3-c29fa0160872 77609e00-fb55-4e58-96db-04b6f7e76ed2 587ca6ad-70fd-470f-8b03-0485e3a8cee4 a8f992df-b727-4182-8d47-51124f4cb01f 86907895-dee8-4b6f-9479-f19756880e0a 4ec3c0c1-03dc-4bb8-b53c-de447416ba4a a0e8f629-c14f-4100-9efb-9318097468b2 de53dcbc-db9a-459e-9601-c4c8bcd1aa7c 5038507b-a93c-49b3-8830-7f19f044fa40 0ef1cceb-6592-43b0-8d36-80e0616c8a6c c662d6ea-946b-48a4-b8ef-f76b04b4e093 02e7b485-5e5f-4640-8813-8da93f338f46 39d1fb0c-3b57-4c7f-b026-60aaa4b5c07c f4fe45f5-7847-4cb8-9bfd-2bbc31d8352e 8f0c6a00-d36a-47f9-becd-a1ee91662d78 b90500e2-991a-435e-a9c4-9217c92160c4 75c87b8e-c12e-46e4-8be2-e571cbc908c3 17ab02bd-737c-4401-9ace-f912114de3f6 7748b056-408f-452c-9c6d-c08e6b0e3e57 79603ee0-ab43-4c74-ad7d-15b0be259190 9ccceb67-2ddf-4b83-90f3-a9b56e4b0add ce06b1aa-2c16-4d64-923c-6d543d996f2b 30dab1f7-f6fe-4a53-b55b-73ac970092c2 f027890f-52a1-4cba-84bb-1b685e41f807 93382c98-8805-45ef-9f6a-9bb631321b3e 60604dc3-0ffb-4fd7-aa34-418038953d24 157790a4-44a0-4cdf-a93d-af995f4f9acc c09d2134-6a55-4857-93a0-d6d82c17afa0 95bd9829-732d-457e-87e5-7224a538ae2b e36a05e8-c76c-42c0-9660-1631d29b31e3 cd052f13-6ba1-41f0-bff7-2118c38a6c62 966673a7-7739-49ad-ba43-14f0324c2b24 093034d6-b348-4c6e-bd92-65b6ac22c113 86c5cbfe-3795-4b49-b8e2-360298547f8f 271d62eb-815e-44ed-8358-f0f0455790c4 0486709a-f25e-414d-a44d-814ab85cb4f7 10ac178d-aadb-4bf7-bc36-66f886d654b0 d7f008a2-4014-4323-afcd-4e3272b1fe93 493339b9-82a3-493c-b8f9-b6b0860dd0a3 800aa2db-4135-42be-9594-6e09217d1255 8956fb6d-1fb0-4cbf-956a-5eb7e3b7e31f 15308792-9ee4-42cc-87f9-3d69e1421ec4 558c7188-bec8-4482-b287-2e8e47ee5d5f 14100dbb-a42d-48db-a4ed-0e024848f0cf 9376c5d1-29d7-4979-9f08-0e517ae1b75b 18d85183-98b9-4dd0-9a51-d2a13463dd62 0aae99e2-21e0-4a5a-8a11-004c13927acd fd251a77-dd89-40f3-b1f5-7df2dea5b5cd 9ec7e2d4-dbe6-475c-9e2e-141727ddc35e 03ab1855-59de-40e1-b87c-ccb4fb6592ea 700aa8eb-4c4b-4f50-9050-322ae0db47d9 5aefd923-9621-4c06-8ee9-b2afc44b665a 4720d644-12b6-4b15-8761-53d3cdfb0675 f4287829-6cec-4275-9702-bf95cbed285f 87054b58-c659-458c-bcd2-f0abe532ab4a c28d1835-3a42-489a-a454-ba0d91e2f642 b24dc77b-9f9c-4995-b295-58f384a1835d aace0a98-90a9-4b87-b82e-eba57f78861f fefba790-29bf-4930-a947-7dd1e1353aa9 c66ce27f-7d32-46d6-8799-0d750f1cab22 a880c492-b42e-44df-ae16-3777637b3715 65adb750-ae5c-4aba-b838-c352162487c9 b49efcd6-b370-4a2a-a675-1f044d88ad22 f681d2bb-2e54-45d8-ad36-828de6ba3275 c507de28-fdb8-4e16-9fc2-ac36f95338fd 8eb85746-c5f3-42c3-904c-5ab4d88b5825 6583010d-36c6-4ea5-b67b-fe040332fa6e 5f75a999-4d96-40b7-acd5-b0ac019ee7cf 8c943ac2-e4c9-4d4a-b69b-3539db447ebf 92f2ce7b-b0a5-4601-b023-f6f83698b708 15145579-a209-4b58-a33d-b397143ac827 e9a8502f-75b2-477e-bef6-5b9a5c926d4d f1c2237b-78c7-4179-ace8-418c465cd762 09b7775c-44a9-4e06-a137-4599e4fe7c53 3368fe51-4e94-4f91-b447-f134c0894aab b2b1f3c1-92dc-4993-a3bd-3beb4ecec4b9 1852eb2c-6433-4961-8aaf-30bdc3d13548 d9e84387-c767-43c0-bb3b-df5b249d5191 a80e5531-6b33-4619-8421-acc43949ece5 2fef1f7a-e761-47aa-b08a-7ea5c4c3d48a 991f9c4b-9119-40ab-bec8-25e989d23002 ce1ce8b0-afac-4d5c-8a8c-1ea292a343e7 aaaf61a0-18e0-424e-a3a2-821a67a914f9 c7d70d49-bc31-4916-aab5-2772bc585291 5a75a8ca-3d6e-4db2-980b-85e08aa9813c a5dbe904-755a-4029-9719-d6a5697e089a 10bdf2bb-f7c8-448a-9e8b-4cf0f709d80c d17d0d06-6224-4363-acd8-f38c2bee9c64 14469056-4eb2-47d9-a3e1-29d25581006b d536048d-8f4a-46b8-9e58-9a09db4de489 435813d7-4ab2-459e-ba92-095b4faaafaf 4698ca94-7d15-42f9-932e-80c1f4f33f4b 50c05d0e-25f2-4f1c-9aed-96cbb940232a c5a9e48c-2ca1-486b-bcca-a69ed6ff11c0 d92a4c7c-40d9-4749-8b37-197c2ed0bf7a 1f7bcb47-f884-465e-ad30-d1633a9d8e69 30cb2d6b-6fa6-4914-a2c9-4771ae206222 163c7a38-4cde-47af-9d41-7f8fc2929c53 b3c47d7c-373c-4dd2-9805-3e429de10752 0d9060e1-9590-43db-8c3c-9c32ccfca9ba 3fd091fe-6224-4c7d-ab8d-7a07f15187dd 3445899f-a082-4bc5-84ee-063f0a82b735 b295f491-d37d-4d47-876d-cb3e56983e3d eabab7da-70ab-4c5f-8510-6e0a1b132950 ef721969-c9f1-40bc-aff8-d949daaaf4fd 2527c23b-9824-406f-9132-356720609e71 e0c2a40f-e680-48ea-8bf4-c6d3b236713c e96acca1-c3e9-40ca-864c-174d36cd2dc4 174dc10b-20fe-4ffc-987a-b9c25a4fdabb ccc415f7-3499-4fec-bcf6-00365af408fd 9efbaf4f-9e04-4660-b584-3cac93b2e2ae 43408ef4-c87d-4747-af2a-8d0c03e7081e c375a550-0f51-4ddc-a62f-859b4ce402b3 0840b887-dc77-44a8-b34b-a994490c859b 43c27285-9d74-4b28-a30d-5a57c0e83ca9 82b149ec-6a18-4e26-b117-0bf5ef807b90 e483dc1a-2c72-4078-8d25-ec9abca48f34 6caccd50-a27f-4bb2-be01-dbf3f7eba62d 4fa359c3-17d1-4249-a2fc-7e13c7e2f954 af0b5b6e-abda-4466-b5be-ecee30c90b38 d47e152e-183a-4edc-a8dc-d8dc4881e9f2 6726eee0-7234-48a8-846a-98327b462548 6c17c769-ef89-42cb-a8f4-349c08b901ca 23bae8f0-7526-4c0a-86e2-48b1c040eb97 cbe4200d-23c6-4e8c-9034-d0b02f90de52 28fd61cd-fe21-4ba5-8021-8ffe391aab51 33e2569f-3eb9-465b-ad41-8cf5927e7115 982c2506-a8a8-460c-bc13-4fb6d21bfda6 ce367de5-b907-4ade-b43b-d83dda30b74d 1927833b-eb07-47e5-a4a8-9c366c3e9c33 1fe898af-9cec-4f91-bc84-6e0241524a0f 418db293-db18-473c-a90a-7e7e2dc80722 4178bca7-b0fa-434c-9815-a28348469ad6 d5cc42e6-da2c-4e98-953e-6b8534a72deb 274eef05-6818-4a02-bf12-df24dafeceb2 7bce1fb4-aa35-4371-98e6-48ae8e2e631a 1b3fb5c3-2953-4c64-ab8c-f9368e598487 fd2e91d4-01c0-4194-80b7-36e591237d0f 271b530d-d64a-4c44-a6fa-2439107cb182 606fa330-f94e-4a99-8c3e-a8512be3b3c9 0fe6f6d1-e867-4c8f-9ea4-f4e658735d7c 8eaac51a-0ba2-45c1-9067-883e920a0686 49b77b3d-ea8a-4805-b168-982fbb1ef1dd d957c9a4-9f9a-48c3-8428-d4dda53e998a aa91b540-67f8-434c-8539-20d86ca27e2a fd806461-91c7-48b7-bedc-4d6c33d6664a 04c36d39-71dd-4b94-858a-f3a6f28bfe0e 3e4fa402-4e9f-4416-9086-94599f695033 578d6bd7-f6f6-40c5-b32d-41bb7f1784b6 014bb75c-e99b-46ad-a96a-415bb06219c7 4d167da0-c002-45a3-a483-2e274fa27bd5 ab83a80a-7a77-4bf6-9cdd-1e04cd8ac049 f764c95e-254a-49aa-8171-b3f049c48488 41e9ab44-8c43-4aeb-b07c-050ae784e131 d075e729-12d7-497c-8019-e01ed037ba21 4534bd4a-79d6-4593-b2e0-671182f4749d 9f33e1cb-f309-4dad-965a-35d1cd05c6eb 2f9c8ff2-e8bf-4fb9-8941-99c9aaa61c9b ab8efd8d-f722-4784-8707-db9aea22a865 aaf52de9-7871-439c-b8f9-e9734f7b1311 db1255db-faef-4f04-ab29-bfe9cc0b8165 583cda06-e3d5-45ef-96ad-6d48511a4675 a1ab2ec2-58ac-4d5b-ba5c-48cdca9b2afc f0ba918a-ab11-4ab4-a5b3-3b456dd2bd8f 4323cb20-6721-4dae-a337-0b3ca061bbb8 d028c749-641d-49ce-9bf2-673bb55baf7a a0896c1b-a7a7-47bc-bfb3-db373f06c7b6 7aa04b4c-6fb3-449d-89f6-43a20e44cde6 fef2eff4-76a2-449a-97f9-0b63c5563c4b ae6bd1f4-5f57-42e6-b4b3-80271c0a86ac b008a402-ba48-4173-9943-884c27655ded 5da15943-aee0-46f6-9d46-b15d0c5809fe da0bcd6d-2541-411b-9ced-ea4978641d64 cdf67919-9c52-457b-bfd1-6b8423b3d539 0807dcfe-5417-4344-a93c-ecc7e617b08c 5686a680-3e25-40c6-a4b2-7bf3165a425f 8a34e9b9-3b0d-4a71-92c7-21c87dbffb7f 7c8584f5-d9a6-4fff-9c46-7333a4406d05 11ed326d-dcc4-4916-9d55-f49fc9afcfe0 4bcd67a3-dbe9-4c78-b6a9-406c235ce547 c5ad23df-296d-44d4-8220-713e1abb0919 639c74ca-60f9-4cef-aa8d-fcf7a19fab0a 78e0dcd1-b211-4eb6-9608-29ccbc1953c5 5d8bfa17-f919-40bd-82e0-c4990fa31f1a 4bb85894-5541-4eb9-b6d7-06eb0b013cdb 8a292716-48e8-4fa2-a46f-5199c90e7fd4 bdfdae2f-a3d2-4df7-9e3c-617500473764 6fe24f1b-3a1e-42d6-a0e2-34bbb3c8c713 840d8c21-5eff-45af-9606-b48eb4473a9e d7475cca-6176-44b5-ae48-0224587e33ac 7ae40ee3-0261-48ff-a5f1-6b983e9c22d1 cfdf966e-43d5-4a5c-9b86-0fd04598fb33 36f26bca-9b15-47f3-be8a-d8910e58534f 789433b3-bef7-4b55-9224-8d2a15ced99b 452b2cf9-1c13-45c8-b766-4537e9605804 ecfcd3e7-e3d7-40aa-af4f-15f4cd1b8a12 09e727f9-7787-4ba7-b141-e9523346d942 ea8714b4-eba5-46a5-865a-fcb26b24df24 4c5fbacc-f19c-455f-a584-e1cefdb51337 7d0cb48e-95b4-42a8-aa87-f27dfaedb8ae 25f1c620-becb-45e5-a9d8-c6b5e6cd73d3 55dd4c2b-f190-42be-b488-a9b113792057 cb7a8f58-13f7-42b2-a210-ee7eabbd2a78 a360dd55-e4d1-4118-b85b-c9be427ee4a3 0d20ebdc-41bd-4abe-bcd1-2799003b75f6 a81aa00c-54f0-4f63-a0f2-f0aa2303b52b 73ac9eb1-2702-4f8f-8ef5-16096e0bc9ec d97326ba-6140-4ab0-afc9-df529ba05e1d dac6f648-75d6-464d-a051-eeeb73831a32 ecbe9ef0-359d-463a-8c88-4dd6cd02543a f0f25e61-8d8e-47dd-b703-86d70643ffaa 9f79262f-9a8b-4e1d-a14b-6fd3d9ba64ff f13b94ac-16e8-434b-99a2-49a5c16c6cb9 eb1f6ae4-c139-414c-b399-75e8b6f86104 9ad09623-0e21-47e1-8755-489c41cb3684 dcd0cbaa-c8bc-40d2-949b-d22b405eb531 ff99eb19-0245-4af7-8b15-02fa929ad4f7 98909dd6-b480-4acf-9bdd-c3dd6cc61797 6a97cc09-0c33-45a2-9d14-7e587b9adb25 9b89ae8a-fc93-4918-81cf-05629d2e8a60 cdd4c49c-2a7e-4c4d-9d43-eb440be264dd b719a1e5-5c81-4314-9154-d7015b5f965e 14a46f49-ced1-4c09-b79c-d04732bf17a0 444a76d6-4acb-4ebb-8e2a-146e179ac847 719de7fd-090a-4e2b-83f9-4c4b233c20a2 7389f6e4-65bb-4a53-82ed-d16e91a433be 4122d9e9-1489-4509-b05b-0429c1c48617 6e0815d2-875f-4ecf-ba57-f4a731bcd8f9 d613639a-abee-4a87-9c88-e4f13e56431b 51994636-7eba-4097-ab12-d3eb1c5ced9a ef3a02f9-e6df-418f-89c1-a265b06e48e9 0c26df13-dee5-4735-9c90-9f4d6c16015a 1b372124-b899-4e90-858b-eef1df31452e 0090b3be-da44-496b-8fb0-1fbfab635e22 295599c6-f52e-40a0-b162-d902cc217f26 d27d085b-01dc-405f-aa06-f7c8c19b68df 8907e5f2-bf12-41b7-99cb-e106192139a3 921f9d94-1d9e-4b61-96d6-2d8539e46ff3 28e0cea1-dc0a-40f9-bc20-4f84735c4cf6 000eb456-28cb-46b3-ad39-038dd2cd1dd1 241afbe4-80b6-48c0-b5d9-b1b3265524a7 c5ccd86c-5018-4fc0-83cc-2db6a4ba89b1 99d6d949-b516-41be-b957-683db3331cba cb726345-ed46-4f84-a083-31f3695cb822 9af1ae12-89b2-49f8-a2c1-e7f6a21ef753 7f248b6c-66c3-4635-a093-ca40f6682535 f8255b1f-08e1-412f-aa58-e287bf006658 238ad526-4e24-4564-af97-def2ec822d3a 45e7dddf-3a62-4087-9215-f9257de11036 cd11b42d-87e6-4a5f-86f1-cf8a1007b0a5 6cba9e9a-53bd-4535-a893-c9d25f680edc 5de3468d-7d01-4934-b1d3-781dcdb1e313 c2b00ffd-4399-44b7-8edc-71ab1ca0431e 846538e7-de32-407e-8c60-a497447042e9 0b07467a-6e69-4186-8a5c-61205cd2e983 1b7db50e-aaf5-48dc-8d2b-6225479d472e 6df45e35-3233-4043-8a00-bc533a0335b8 56ccc2f1-bac5-4eee-b817-867dcb1991e1 5cccdb35-fbd6-4804-8cd7-4f4deb6e0bc6 f11fcdd8-eb31-420b-b4c5-7f6f7ece4441 e62da56f-8233-4cff-944b-ff524c45ae41 3b46a14a-b01f-44ce-9778-df2760f540dd 8c90175a-b483-455d-ac3c-e99298389d6a 10e6ee52-b110-4b43-bb1e-219945d4f18a 47647011-35ee-432a-acc3-4fabdae416c6 77bfb9af-8a1c-485c-afd2-4b26bddea9ad c2091a65-4022-469b-acbc-4af7307759e3 a4f391f1-6bd5-442c-b09f-faa9cec94169 681754fa-894c-4248-89a9-804cb225ed1d 51e54d8e-75ba-4591-94b3-3501ed47d9d8 4d4a8e07-1f8f-46d5-8f3f-df0ae035b795 ccbc6a6f-997d-4e3f-8040-7f5cf952a5b6 c059085f-799d-4c17-87ed-3f60955083b1 c96cf83a-e2bc-4be2-a446-734957d844a5 bbcdb89a-7079-4631-b540-c1f3f64be150 87098b51-87e8-40ed-8578-c1a1bcbcc49a 7c762823-59f5-474e-9f75-73d5e2adeeb5 709041ff-10f9-4986-a8ec-ccad75bd8db1 9a0c274f-e6c2-47d2-8959-3c6325294435 f2338821-54eb-4777-9307-bd0b603b8658 b630693b-f6d1-4de9-9ee7-e21045046da2 ec512883-2465-4bcf-a7d3-1f2f93869335 1ddc9c93-8de0-4af3-a9d3-3bfe14d15b26 fd74de58-cb7d-4fab-9aff-e34deb31b99f 1d46154e-eb83-4ece-8ab3-2d64b04cf000 a3d2247a-383d-429f-a2a3-7c3679100066 8cfc105d-d890-43b1-ac6a-23d253a038d1 fd9e317f-c035-4b61-9bf1-d98cbfe1da13 1b6a54b4-e09d-460d-9b6e-c1ab91806492 4cabe52d-85c6-42ff-9b3c-c3b589b71aef 7736c857-1a4c-43dd-a274-2cfd5843226b ab64c140-8215-4b53-920f-65032dbcbe1e 4246149d-fc31-4339-a949-89b76dacc85f 388d90a3-589e-4e70-a00e-6301a93eb9cf f35c06e4-3f45-47aa-8001-789f888f7c85 7715397e-ba17-49c2-bae5-3d39b2824f55 c938b7d3-40f7-4eb7-b59d-d2f2d7acc21e 3f0f4d67-ecd2-4f3c-b1fa-dab4dac9a4b1 d2eaff95-ebb7-4f29-a664-1d545746f9e0 aac0276d-bae6-41ef-8ede-6132fe042bb1 c0cde0cc-9077-4567-9615-f694465b2d13 bb9f2be5-8549-4853-9674-0ccd27c28a70 bd735f48-6e79-4b97-a373-949a6a0dcbc4 e41e0e99-85a8-4767-b8df-6bbd8b87401a 8bb99970-fc99-4b86-a7ff-18946e7a9d76 97af1288-4cbe-476c-b6dd-790d43d2f9ee 4ead13ea-97c4-4688-b103-7db51003fbc6 1450ed7d-adfd-459a-b4bc-7020367a28ee a66d2309-742b-4b91-83d2-263e0250a635 80bf1c27-6b17-464b-9da3-090ec0700775 b72d0790-72bb-443a-94cb-8464fcd7e7ec 2af053cc-4aa7-4c84-821c-8e8c211b1693 dad891d7-8317-4fd9-8ab2-cb793108d5c5 7dd01263-ae78-4820-ac13-f48747c66b84 811b1d2b-cfd9-4a25-b20c-48b62173f466 b2682fc1-4c55-4302-969f-e951576cf173 d5d2a41c-a165-4bf5-9bf5-7ac660a2ca48 4d0027b9-803c-4a18-bf88-c6686d94ee8d 2b0ed56d-5ac8-4c1c-b657-b3912313bb35 0309d4f4-ee81-4d3c-8252-9f27045d216d 0f221d5f-0160-48fa-8728-82e2e71bdb83 920ae26e-812e-4324-9f43-61b68d792132 2bc681de-9cd6-42e0-86a5-bf71bdfdec60 e333161b-9e5e-4ce4-bcf1-993610ce9f8a 9eb95c4b-d588-45d1-8174-e16e41eadf46 82323156-6b5e-4205-8a8a-faaf9d127289 e88483aa-b037-478d-8c93-2313af0e3575 8fd9a500-bf8c-4102-a1c1-f3cff270ded9 d956f714-1ae1-459a-873f-a69907ce6bab 05492846-4d23-40bb-b4e2-5dae62544bd8 f0926d7e-f6a8-4b8b-ac9b-2c9c0b7352bf a75fe8ea-ad6c-40b9-a062-70727ee94d28 77c54568-da43-4c3f-b9ba-242bc7a5adc6 153a9a77-3e65-47d9-b57a-8dd8261e90b2 093ddab0-5613-4f7a-9c4a-fa9e28336452 d2c69f6a-555d-495e-8577-07dca8131dc8 c64534c8-6325-4cbe-9eaa-36e6ae9f1e71 b3be2c7e-4af6-4077-89c8-d52866842171 576923e6-15e6-4602-930b-bd12abcc8e3e 574993ef-0eb0-44b8-8698-cb87e18156fd 8cb1b7de-0b38-46d6-a718-2a175d5a7ac3 c6953925-7bba-400b-9dd9-32c01e9c9f61 536d5e89-f37c-434f-b24a-f5e849c4c198 d2f571ea-ebe9-4a2e-8a92-dfda911bf077 5c316589-2d1f-4767-968c-766afe2b2250 d652dbc9-58d0-47f6-b7ee-8bf817187902 2af7bf08-5dc9-4a31-bddf-5dd793e41c1a 2a3fe9a0-4a4b-4eda-b4da-1a9e4886c1eb bb56bc56-c175-4b29-958d-95bd0b2c801c 0d8efea2-0a8b-45c8-99e2-1715fe272037 c518f9a3-4788-4d2c-a86c-e06e641c000d 151fae51-9217-4bd9-a314-c29f95baebcb f9637cf9-50f7-438a-9a2f-fe06555be81e 7c46dcb6-baf5-4022-8037-d59481203f88 42d51c05-dde5-45c1-b4e1-61bbb2f14b5c d60a4aa1-44ef-4ee3-9457-2c7ce23e0d24 8a4a9398-1f94-4243-bfca-41bd17626815 29420455-6287-4d6b-899e-0c66c32663e0 09634ea4-49fe-4d33-8bf3-4837130c1eb1 6176908e-2cce-4571-a967-12548c6103cd 406777b7-a8f1-43d2-9484-7dd63533e6ac 9b045c1c-cc46-42d5-ab9e-77bd4dd0e795 d0eaa667-9577-4c64-b1d0-35c24d73f42a bc35cab5-8f4f-4428-8974-11574bfb7cc3 83c2eca6-9838-442b-917f-a9fdb59d3bdc 0945fbb4-53b5-4c34-9445-b05c5743f0ac 300c1e40-8d03-4a16-b530-6efa8cbbc6a9 cf09cf49-16ec-44ec-9ce4-3445d7422574 2355ebb0-409f-4b69-aff3-b7e03e96a0d1 9b1a9ee8-309b-46a3-8edf-d64a3d739181 bf09717f-4c55-4a70-a004-b61eb3177304 b014f9ae-9d29-45ba-91be-b4326d2be0cf d82c6276-3fdb-407f-9556-8710f60c0d77 5ef89862-b022-4ae7-878f-7eaf485f153e 861fa94c-f24a-4557-a550-9019fa47bf6a 52d7624a-ab17-4107-a225-a94caad61134 5d074259-4687-46ea-bbe1-77733e967092 05c7de18-a610-4829-9866-43c9af0d0a2b 2d94672d-ae21-4ad3-a127-7021a520e57d 915f8fe4-3f91-4e8c-9251-9fa3f951c356 564c07cf-f060-4aad-a5c3-09c7042d43a3 fd2910ae-b87a-4c82-b100-174effcd7134 688e9814-9eef-418e-a04b-32183c998928 c51efc2f-2735-43d0-8de8-5f170edccd97 a02caffb-786f-4b46-aab4-108c82e434f2 5b90ab1f-c46a-4b7f-ab90-eb489b4527d5 9d029c5a-5ed1-4a52-bda2-dfef094da0e6 2d71df24-16fd-48d4-8b8f-136e8ae110f1 125d48dc-ebd0-44ff-8fa1-ba7c0ac551b3 67761a17-5f86-44ab-8a28-7275abaddb58 77d8036e-d8d2-455b-b15b-c39f4a9cc54d 99972500-a131-4257-b0a6-cca1a0320244 d998bf88-ef79-40f1-9211-c0b3232462a1 1b56e8b8-f84a-417a-aded-5a9fd426cf6a 45dee919-bb7e-4b1b-a6c7-70e6f73771f5 7c7b85cc-1bd6-4ce6-b598-c83f857e0f2d 865b2fd9-0c45-4dc8-a81e-f6bac0a428f0 0970dfde-25d8-4a04-bbfa-9b87dd3a8fd6 65f80337-0ca0-4dd8-8d3c-ef62155afd61 586fcb79-de4d-4b9a-a3aa-30123f5d3d55 42f37398-e29b-4374-99e3-01ed192dd44c fecae5fa-655e-4a92-bd25-59a4d51e75e5 7d44ce50-cae4-4eb5-a8c7-0ae31490d289 891de536-4cf9-4627-aa3a-ac02fd55a5e1 92dd60c3-6c0f-4ca5-84de-0b6844cab771 5abcb66e-2d5c-4714-a381-aa6d2e344547 3726bc63-5952-4427-b408-5684425300d9 03231c90-cae7-4db9-80a1-0739622c0b30 37b8147b-56a9-4379-9952-18668de534df accce502-906d-42f2-b969-3ffa6427bd04 1932f074-a31f-49df-8980-8d5519c052e1 270e900b-1f3c-476e-94d6-38b74b929541 7040b414-3f5e-43c1-909a-566c8b8d93dd 2d89b561-abf3-4018-9996-b8f04b33c711 81d2379b-9c50-4192-b94a-f87cffab7d72 85dec336-b833-4640-9f3c-4113662b8fbc 7c57b8b3-e5f4-4438-9c90-589affff18c1 deb3db63-ba28-44a1-b794-93f97576ac8c e65ac47c-ee11-4736-8989-47f00ca05dfe 9a68936b-b4a7-4dae-bd45-1de3ec989b2c 8ed1ce0a-a1f0-45f4-9e34-27dd4b00ac48 0070f33f-98cc-45ae-a38c-fa7f9de3b7b1 c4e8474a-a18b-414c-9af4-fdd14cebd81a 0e6a8992-1483-4dba-b93a-8bcaa091906a 9b1f8342-a628-444c-8339-e6f60e6f8c48 d16e7284-0c3d-44e3-a7d4-64d5f33b65ea 62cfd86e-5326-4019-8378-758924bac2da 6a5b522b-6825-4991-8bdb-689fa16d710c 17412613-b132-41f5-af6c-46ee87a3d671 9329f615-26b0-4de6-8484-d49bc3c6a7be 91d5a456-7abb-4621-bf15-9f7d6d86b8dc 283c3502-49dd-40a3-80c4-cf6a6206f3b9 74cf1cbc-189e-4bf3-983a-efb98a461d22 822ab96c-843c-4c86-8e67-59c522060fda 1e6cee04-8dd7-4973-a376-f612701370e6 888da313-c820-4ad3-9f41-60cf75439b10 ff6d7602-c5fe-4e5a-9e54-c0d0bd65202d fbe58856-dd23-4bc4-a871-baf5b083e40c 2fa0b128-21a1-4fe0-9084-d49abf7f3c03 05dc8adb-27cb-439e-8602-d3e813007b66 bae8bf3e-b209-4de0-9936-b33fae9b974c fd143908-c4e3-4112-a373-ec702bfcf5b4 c42e49ba-6e43-4371-b7e5-a493f46afaee 365acdad-5dbf-4bff-ae63-eb76ff6405ec f082038c-16fe-43c7-8855-277f3d8dc81c 18b4a78a-2731-4cc7-9a93-d2abf3259e6d 6bf99477-4bbf-494c-8126-c1e118750183 87ce88ab-05c3-4e90-a615-af7cbb8e42db 5000f324-12bd-4807-a09c-226c42e2c494 99121c1f-1b0e-42bc-907f-60b4816938e8 628a3292-5a70-42ae-bb42-62cef2e52df1 4fa2c19a-0878-4cf6-a690-e8613b628437 f3244320-23a9-4165-91ac-7085281db687 8bcfa799-7a9d-4381-8bf5-fef53738c516 fa3ac64a-70fc-4bde-bb6f-6c24af512b2e 74915207-d6a2-49a4-bb5d-ca12b5345c23 5285da59-cbc5-41be-9731-ffc572eeab0b 6dca5051-5a39-412d-84c9-cc67c0aa38a4 51780f21-2b44-4680-b80d-7e937067d503 28b7ce2f-7eb6-4e91-ad09-584ede119a3c 589db632-e9d5-4d10-96f2-986320ed2d57 d201b764-6064-4993-9560-f1d0af22cab7 8bdf7113-26e9-4862-822a-f7efe78e2ffd fd573545-fdf8-42bc-8cbd-12e25698dee9 e2cd727d-155f-4db4-9292-0328d2bcf1be 8fc7a816-9c87-4f50-a63b-01774d1d4451 d443dc20-6954-4b45-bace-4a685c39ee1f 399264c5-e842-4029-b332-bef1bff91fd5 1465f6d5-dd89-49ca-bd31-6961c27c01f8 a3b2b3fc-e7a0-4c05-8403-1ff305999f31 9f4de9b0-750c-44d6-80d2-5ad08078e734 44702afe-a3e9-4c31-b34c-fb85e7172c83 bde60900-8697-46bd-b139-812650d7bae4 19ac6dbe-dcad-46c1-ab38-0051da9d884f 9336cce8-cac9-48c6-8a63-7580df0d5630 6de45dc7-5c82-42be-81d9-a9044a1baecb 81ad7043-9770-47ea-a544-2a6b0840cdf2 d3e8cf99-1774-4a51-b1bc-46c197c9fb30 21cfecf3-45d2-4b41-bfb4-a471bb19df44 c0220df7-c168-4621-bc81-9388f4607151 b397f038-6726-4451-865d-a092754eebd0 48c31f64-5da4-4d47-a2eb-607e846eba74 82bb6fdc-d907-4198-9e73-078c3556ffbe fb6b6a3e-d8f5-4e2a-bbf7-2e189f29ee48 8276171a-92d5-45f3-a63b-90fa22f320a6 b5a51df9-7b40-4af1-8c3f-9b0fa889cd55 153d027f-00b3-4d40-83ff-5a99ddb3fab8 01aa583f-eba9-432f-8d42-a33f61465261 0caec5ee-4ff8-4dc9-992c-8fb084c7b29f 4fcf2abc-b5d9-4caa-ba2e-49d6a3e486de 0324699c-9753-4227-88c9-00e282484c4b a224bf6c-0372-4346-979f-49e8b7bea96f 7101682c-45e9-450c-8349-ed00d0f8c1ba c1512e50-18f2-4b41-bda9-f2e24a3a651d 0ee87da6-1f2a-4abe-b33e-a480619f6c25 a182a3be-4898-4445-88fd-6e324fc0f155 f383cb6b-6e22-44b1-b2c0-607dbbf2c18b d3c14daa-8334-4e95-b665-d87a88215a4e 80ef2d93-75c6-4005-ace3-eac0d2c6ba30 d523d9fa-73b8-4cc3-a670-4749a71e3058 12e4503a-7f1a-43a0-a1ce-f906cd88d2b9 243e6647-debd-420d-824a-2c019e058990 27115cb1-7374-4ed8-894d-0a6dfcd45959 1eadad7d-85c0-49d6-bc73-50e6fd75d502 6299e49e-dc75-4d68-8ec4-cf4d7c9216d1 0645da51-90cd-434b-bc89-0de86b575b5c 9f12765f-45c7-4109-8e63-b2db95bef19e 502d5125-d2db-4eaa-837f-b2140802f2ac f709c813-57b0-458a-927c-cf9e5c7cca5c 8e6c3fbb-dd37-4e43-b805-9eb096855f78 fe987bc8-afb0-4e7f-8da2-2394161e511e ee4ae529-dccb-4474-ad42-de6e94375232 2c86e9e5-e895-46e3-a420-96622ac31973 ffc47fe4-f452-4761-8ef9-9efe1cfe5181 36901461-8002-43be-9e93-4e91031e6982 a1222e12-18f8-4ff2-9e5a-b6cea2ed39d2 5d4a8cad-6a4f-44a0-9594-e5ef9e7e2e74 217c1cc8-2c9d-4094-bb18-9cc8656920a1 1a9490db-8d49-48f1-9c00-ec6604b7e9f6 80f4e088-91ad-4814-aa4c-ca25ae2f69d4 b9955785-e9d2-4f25-9d34-8050c8559340 c8e76550-a670-4ebd-9ef6-02eefc8c3f84 e35f33da-aa96-4a03-b364-e19e3d0a2ce2 bfa423ae-8bba-4cad-b992-107d7e69cd8a 354d7a85-803d-4cb2-b229-7a5675fcc676 d3778b3d-77e7-4d5b-8072-50aed81f2570 5248b0e5-749f-4736-97ce-6f7deaa7c175 93766435-36ae-4d9a-a9f5-9c4513684811 a19e90ce-ae9d-4267-b673-d28e352404fb 339c2037-142d-4819-82f0-88fd76cddb41 776f2639-12e7-4237-b9bc-b6bde839d803 4c678168-daea-4675-ba88-f6e2e2b0efd6 62ee5d99-d659-462f-a08b-f47a20a4d347 a72262ca-71ab-4ab1-8718-6340b65b60c5 b07ae1b8-0780-49a4-b1af-cb834c4accce 2e30c3dc-228f-4b11-8b7f-401e69c36585 0cf3184e-c6c8-4aa1-b9f4-8cf9bb33a242 d9a2003b-038d-472b-84ac-b613cd96a5d6 b8e86d8f-f8a0-4d88-a093-151441b1f6d0 66ff9653-cdc0-4bc4-93de-038f39541d0d 976231a5-f7c3-45fd-b44f-c1c9302c299e 86e9d804-eef6-402e-868c-20225b0d8379 9cc9ab0e-7223-4e20-987d-4a9ffb96a956 052b3b94-9b09-4128-af4a-88b554cad9bc 6a1b6dce-b53a-4ea0-a787-9e982ced47dc 79804f2c-8a4c-42da-ba64-2d86786d25b6 f2d2ecc1-eb8f-417e-b54c-62ee6519252d f7d0bfca-9177-4657-841b-6d1c652fea88 33e75163-57d5-4aa0-b104-9e46d2fac0f0 5f6b862f-4b5f-4c79-b469-102385067653 c28e12c7-f6cf-487d-be28-9997b0e733cb 01403890-027c-4383-a294-73766da872dc 9c74fe8e-816f-4574-98b6-402b3986d134 e3242eda-34b3-4d19-8308-5f838f142c3a 34892bd6-b242-40e9-87b1-de92d99872e6 7b769f19-169a-464c-a8fa-d7e78b86016a 54ccf5ca-0e93-4998-b0c9-72f246d6e8b3 c7f70de1-fa80-48d4-b65a-f2296ac58467 5f0daa81-71f5-4103-bc3b-74b2f4ea542d 10134293-a2f2-4c4c-8ff7-b56c473cf7f2 37a51798-2ec0-4ea3-bb7a-bc211df25015 1970198b-a2c8-4b55-b243-2a367d8986ac f447e759-5943-4ae0-b85f-c12498d4d23a 3a4e45c7-7d52-4e4e-8cd6-1fd4c93bd9e9 2732eee3-ceda-4712-8ded-2c0c8d240953 19e397f0-7579-4728-9415-1cc446fd4c50 9f897e27-605f-4a7d-91d2-c634fd161fcb 471dd430-bd17-4cf1-8494-e67b2743cb98 142200db-8479-49ed-b870-6d5c9b7ca18d a7e68aaa-3798-41bb-bdb6-2f4363eb3628 b212accc-d345-474d-95ac-ef208aedc140 e7b419dd-38e7-440b-b2fd-2a78db8fe1b2 9b3b4cce-2161-49ff-ba63-923a3fc233cc 8a3a795b-e6d9-46fc-91aa-f8c9bf7ca904 b3afa857-5327-46ea-bc9d-4c95782f8463 0a0da938-9918-4046-979c-b1a969befc63 b68ddd06-0b93-4d03-980b-45cb91744f00 06fca561-2383-4ac7-84da-ebb77d139dbb 9bb8ab96-a12d-4d69-822d-1225135783cf e28e7c5c-1b90-4e5c-a6f1-e8d2dcb355ea bf9e409a-99d3-4047-9948-17b26ddf76b6 ec7e5446-b408-47a7-b567-f151146794f3 90a7db07-12d7-4c55-b868-2a0b841c1adf 6f88df8f-35a6-4fa2-8da0-eff2fab7d029 e981ed42-24d4-490c-b270-5c8ceb7844e4 7a5f5350-4b93-4881-ab32-6012439b3a88 b9af9345-9d30-4cfb-b4c6-be8e6c63764f d0e176af-9713-44e0-8bc3-d76a02b64bba 25a9f670-a520-45de-890d-3051b091ad7f ba275d1f-39a6-41d3-b7c9-3581949e6b69 4ecb22b8-d789-4545-8780-5433e5bb5b3d 97474308-3273-4a53-bbba-792ba2e7c70e b85a5dc8-4462-40cf-a995-1836e220ffab 38e11cde-1498-4b0e-bb57-c61e1313493b 4d3e9a8f-67bb-4d32-8396-318b68d8d98a f6bfcbf0-a4d6-4b06-9d6b-d9d822599da2 c3a0b745-b1a1-4fbd-8e98-02a4b08084ad cc22a700-568f-428b-981c-b7e52cbd07bb 735786ed-de78-428b-89e5-c9efbb951442 1042c439-3371-4fac-8147-67dfaa108c6e 414a639a-ca39-4c0e-bf0b-e355a69fed1c 7ddb53bc-64a0-4963-839d-e2139219f370 0526a152-28fe-4340-882d-7e8e14ef39a8 4c1538fa-5250-4e00-a6a8-e02fbd38e667 b291ca77-691a-4c37-86e0-a06661cae056 0c7deb95-68a0-41c4-a626-d19d9a762a0f d49c5112-b678-4702-8631-e68fafaf7bf5 9a3c3740-cffd-4bbd-bdc7-00121f5fb2af a6cf27d5-abcb-42f9-8600-48e65a61a0d6 99c49ff3-bdd5-4253-8b52-8d69f36504ea bc662aeb-57a7-488e-85c4-3f85eff6b69e aff7aeba-68c0-4d52-94c4-17a535dd5032 b2c54dc0-84cc-49fc-b2c1-157fe144e57a 2f2e38a5-b82b-4bb4-ab55-3c3c58481174 aca12792-7e00-4cc9-9c57-7a3b689a274f fd842ebd-b46f-409f-8a9c-39d5aa558324 626b8ecb-74fa-4e06-9614-a56ccce32c14 41f4a94b-be86-44e8-907c-06cc53dc4cd6 954f609e-433a-4ee1-96f8-a95f6721a777 57fa7784-1608-495c-830f-9e3ad84d8bcc b4e89734-51c6-4b6f-b312-8b8d2f639726 b185a5cb-5b1f-4ccf-a486-126af412bdab df5d6653-d61c-4243-9c29-29354fdf2a6b a8b77d20-3ba2-4731-8d11-1edc68bd3da2 6b84741e-7e5b-4506-8134-0513282aed61 167c1022-0d53-4c93-96a0-1026c85ac481 1476a9e0-cf45-446c-ae5d-ec8ea367eb20 152a0436-6469-432b-b1d7-c17f8757dbe0 72db0d1b-80f3-4133-8a7e-41df8492feaa 8443cab2-71db-4a57-9b48-73ef72916312 ab1eefe8-3daf-41ad-882d-7595ad096359 9d2fbde1-3eb9-4280-9340-116938441ee3 4ba72342-e9cc-419d-88a0-a1255480bda7 4706cc9a-7587-4f2a-a574-70c427a54381 16165d83-84b1-4fae-abc1-934050032928 1fa5b720-c432-48af-be72-7fcf5f810fae 0615b94c-b7cf-4783-a412-05497d95a52c 609b33d2-ce24-4d0f-ac20-50ddb1cd2ad1 acf4ff67-ce18-455e-badb-d223a151722a d753cccc-9b6a-47eb-b755-7a3ee6053443 4e037d66-d1b3-4d89-b1c1-e093e3df721f e7b8bfe8-ea17-438f-adb1-37abd7863a50 6ed750d9-5407-478e-931d-a2dce0428fb9 bd6cb04f-6b3e-45cf-84a2-faaf600b4dcb 9d337d0a-e8dd-40b4-acfd-98fbaf33a055 930bae98-cac3-4400-b6f3-b020647db857 0fe4ed98-f5c8-4977-878f-f71088038a56 2edbc2fc-5952-45d4-a5a3-dce1cbfe3b56 17dde4bc-d777-4546-b243-e6b7580bd1b2 828fab8f-ab4f-4a44-b1d5-7826a6dfa48f a1c04e4e-25ca-4d20-8e21-bc4c362fe0b3 1cd67847-cf92-4b49-bc99-525acafb8208 f2f7b48e-f8f3-4fc7-b796-e8d4c38be044 c1ca9b0a-57dc-4cef-91de-86144b01c3bf 457a8bf1-ecd5-40c0-9103-eb2f18327ca2 5b663a8e-c4d0-46bf-a082-82377339bb2c 337fde11-9c2f-43b7-9032-a2a1c0b1286b 53923ddb-9e58-4ef5-81ac-ce8c7058c38d f661decd-9da4-4747-ab3f-28187ed6f00f e2c0ec6d-343f-451d-9ddd-ff484bf8172f d9dc0d1a-db76-458f-9d3a-f7807d9830d6 6ee720e0-1e6f-4709-9685-bd46d5bcc60e 94776f1d-0dff-4e22-a382-a83f898f5538 f0259bc9-8ff8-46e2-adeb-77ae1c345fe1 e24b06a7-af8c-4b40-92a4-1a54bbaef18b a66f5ffa-ccfc-4fcb-b0bf-78ae4b25d31c ca57386d-9cc0-4ad7-b058-bce082e60205 50454fb5-c9a3-46ed-95ca-75bd26a420f1 71c03d54-57ae-47aa-a768-7acf7a3c7e03 63b8cecd-f5a0-49dc-91db-ae83cbdc8904 f203161c-b4df-4a9d-a04f-0888fa955551 e3929403-3003-40e5-b0a7-a363a9f5f9d3 ab32bc43-ded7-4fd4-b122-051eba6bb47c 21b85725-d7d7-4d55-bab0-75ea4699906c be014ffe-011f-4ea7-97a0-2865c479287b c8c4b84d-68ce-4ec7-8356-fb7d478c8e32 f1080d86-42b5-40c6-9e7e-b3a7c5b9dd9d e829d1fc-da2f-41f4-8aae-01a3766af6b9 c0c83379-acce-4b52-bca9-6991f2db9887 80157e7f-3a77-4dd3-9e0c-a666480566cf 50619039-4852-41a1-bf5f-453451f8a850 eed7964f-f58a-4c71-bba7-93304c68ee4d 7b370b04-22d7-4026-acc1-d899b1c0280f 54745f40-19ea-4ec6-b63b-9b57a1675858 ebaa2ea9-41f7-4252-987d-82de68714868 e531b896-36fb-440d-b25c-d4a175e09c87 f6a94339-b6f2-43b5-8a62-e6e7c33b341b 7c3e63ae-531a-416f-a3ff-88b6fd69fef1 6b11a13e-26ee-4c6e-942a-302211b1376e 30753510-dc1b-439d-9952-f9dedeecf3a7 1e52132d-0662-434a-a4b9-fa7adf006fc0 371f7a6e-3517-4bc6-b63c-c987ac3587e1 ccc2b24e-a0ed-4cb5-aa5f-4da2d62b7922 26af0fff-89f1-46bb-9348-d4206795dafe a8d3de5c-e14a-4647-b11b-df44ae24444d d9696c2a-8645-445e-8d34-a2ef891efd6d d7d9467a-c32a-444e-8308-9e4e45442ea8 d01200c4-d24d-4547-89f6-2e06d3681535 91377d0d-94fe-40a1-a676-eb7ef06f4a02 958df18a-f79b-4fb9-9800-4c928d658875 e4a48411-1a50-4fdd-9403-1d73de6327b7 7a89426d-9393-4f55-830a-5414412728c4 8a5083dc-b3e3-42c0-9ebe-3b312f99bab2 addeb110-e816-4f3b-8a19-1892be57b4ca a3614ea5-d02d-451f-a955-522a909ee5ff 31392c8a-fbac-4440-b8ee-b871c8ba29d1 b14606eb-1e13-4d1a-a5a3-acb6eebd4e6c 1515ecc4-26bf-4e9f-af50-eb3c9a14b809 2267c586-bac8-45cb-a4cf-dbeed5fbda5c c25c9b84-a207-440a-8293-14a0b59d9230 ec6e7d98-f982-4192-b68d-e2d3f961d0b6 b1cbe387-a050-46e0-bf45-6c384e909e94 ad5befc0-5a51-46ca-854b-859dd44cf07d d1bb93dd-a305-45b1-853b-b6b76c04e781 0b50bc6c-55e7-468a-8adf-a02505f9b3b9 b5cd2074-9521-4860-821f-f7db506a7268 18c06bc4-2697-471f-83f9-0ba20dd2aa1b de082adb-034a-4800-9ef5-a59e15d28db8 edcc8caa-aaa0-4c20-8c20-eefb972f6314 f8f83d48-9f24-4fcb-aae0-f86ebe1ddd74 f662c091-d502-4458-b94c-c0d8b8fae4e0 9b185b60-f447-4570-bfa4-464247cb69d8 2aa02802-0fd5-46a8-a73d-e14a1e8e854b 31d1c8dc-cb96-462b-b70c-8956fb689e77 0655d4f5-ff7b-4312-a63f-63f0a82838c1 61ea5676-7a8b-4044-b81f-cb8b6bb0bc7c 8a3780d2-960a-480b-9eca-38ec0915bfda bbe056cd-a930-4b0a-944d-b0faabfc7d51 87d7fa6e-38ad-4fec-9ffc-aa257f49d138 b879bce0-2779-4254-b4d3-2464fccf0bd0 7d468215-8ba7-4a99-8164-029427fe3ac9 1196e62f-af23-4021-bbca-94eaf40725ae 15709698-3e69-4065-b093-deed3033f0c5 3ef6ef33-8414-4c59-9e3f-2410118f1447 690f202c-3801-43af-9ff8-a06fd6e05e1e 03287e23-1045-4952-974d-6ac7b0278f2a 6a2a42e5-24d6-4890-b786-0e45c701ecd5 00ba51f2-23b7-498a-8b3a-d03a36e12f17 9a1aed9d-08f2-48f8-8be3-49d920002985 9f6d24fa-eb23-4bf9-a3fc-38de50dae0bc 89c8e97f-8344-4990-a8df-188c9755baf7 96b24f28-8503-439d-990a-f4286d4e5320 0ca3dce5-1a6e-44c5-bd56-d150b39e3331 b962efd0-2848-4bba-a224-89ca9c446b97 0ffa1a58-7c76-46fd-b30c-9cfb82c3388f 98ea5b37-e8d9-4e6b-b0ba-47d022d1e399 a00d27a8-cdf9-4976-b191-b676c659c4a5 e7f7b1c1-adf9-412c-8ecf-47bdb2fd0788 612c0f20-3bc1-4716-b6fb-4db4671b69ec 714e0bcc-7f40-4ba2-a1a0-b056cf9a2711 b0011083-956f-4c04-a289-dd837e83a689 e0954d77-8404-4aa0-9ab3-27e11a8d8f97 bb67909d-3a0f-4591-abf7-24d971ae2f31 0471f0cb-0c2a-4b0e-9d32-e67ce469494d 06215d90-689e-41d4-b7b6-4e5c7533abd5 0c6bddec-c538-4c0d-9f09-26a43c98416e 5c92850a-3ca3-4bc1-83df-c49b915ebdce 2ee218b0-2406-442f-b325-8b2b7946d9c3 28789770-0ad2-4718-a334-3b00fe47acd1 862b3db9-77d5-45c4-a59e-dd4cd7a62d11 fe621a56-a426-46cd-8f6c-e60ccf66825c 56d0168c-2f84-4e8f-b71b-046e69511af8 84f88f2b-153d-4a5a-b1c1-13b4317ac4d1 31b9053c-f5c2-4ca2-804b-06da79f8ee22 bfe47a98-5e39-47e6-ae32-a68de1fd7794 ccaea360-35b5-4432-91e9-b52ff47c66e4 2c58d11a-3402-496c-aca6-003e07a66832 ed3dfefc-7ed6-4e61-b4c8-eb07e98b6840 f1c5373d-0d05-496d-aafa-53cf1c95f640 cab76860-1865-4f2c-978e-b2f58cd0db23 b809e832-1ab3-4054-b41b-345a2e0e3fac ccf481ed-2905-4392-a7e5-d9a2f3043d1e b0df99ff-1fd4-4140-bcca-af019eddd84f e27e5297-8409-4867-a635-51f79cada24a 8f5a7dbf-388f-4c5d-808e-0785e413eade 3f3a5e12-3fa8-4ee8-9614-b49fc0782d09 7045cdf1-ccd5-4627-aa5e-b8ecad20817b 31fc72aa-aa97-4137-ab62-bbcc5da6ca50 f51a4db2-e56c-4905-b064-ae3f54a08f7d 49fbcc21-619c-4805-813f-6869dce06250 d42d758a-864c-424c-9f5e-dc8a28ff6a72 ca4d1a7e-8df0-49a2-9fc3-cf1b557447ef fab933d8-29ca-4e33-a0d2-5ef6bd28c8cf 9e361869-efbc-4ba1-bf03-361757c18dd1 47f0c849-e2d0-4ea8-a965-e043ddbe8d73 923ec75a-b0f6-4460-a078-4f982a4472d8 885864af-3919-4f81-a9c7-3fa780da304c 55f97e3b-1627-4a0a-a5d0-fbcd5c8a2a11 b9b71666-6e12-41d1-9f8a-88fbad2ccb6b a6e002c2-dbb7-4a32-a58e-d7ae61b5e245 53c449fc-50c8-4921-ba2a-0c399ab98af9 89c989fe-41c0-469f-9ae7-adfe7579ded9 7a3e91e5-4342-4e28-88c9-45e951f741b9 5a524208-61e3-49c6-81bb-ce1e2df47cc7 9438f7a9-d8e1-410b-9d7e-b444f52bc719 70727c61-0f5b-4f95-9ce1-2be56d2a762e 33335ce4-b344-4f1d-96d8-373049c49a29 9114cb6f-b695-44a5-80f6-0fd5238ee094 35e89b8f-d257-4c48-89bd-1b8991ff1709 392d825c-7491-44dc-a922-2b47a136287e 21387fc0-183a-4c4a-ba00-c9f6f55ad785 a808dcf2-1900-4848-8189-9687739e69f5 43d5eaa5-9f1d-4f45-9cf2-dce573a94469 a8b86591-0573-419f-9adf-b6bb98a263e6 26513422-37b9-416e-a467-2a1b34f74ae1 8bcd1362-d184-4487-a763-939ec066f1de e67d7ba5-f019-4388-a5ae-d0022f1c4135 880a0dee-7a1b-4cea-aab2-5a8215475073 e9a52029-89de-48f2-9619-f03e93ecf096 f831d57a-48ff-4f3e-9f7e-c0807fe3b8f9 375b0a6f-3814-45c1-909c-804d0d61f706 a879c97a-c908-476c-a97d-406d287692ea a06b2f64-fc3b-4315-b38b-3fbaa8bf8ee6 243cf6b4-2ec1-4d21-a64e-c833ba35fc9d 46b7d00b-2aa2-4c79-867b-a33e72730d15 39528868-cc9b-4c9e-b88e-5a92fd4de0e4 b74541fa-3924-4f2e-930b-63c1564cc53c c57433f8-3ab2-4bba-895b-b59badd824f1 70e721ca-0f89-4c46-ae7e-302b74262c7f ad274083-5ef9-4bd7-b9a4-e92b2dfdb6a1 bd9b92d5-e6c4-4d9d-94c0-fad819f62d8e f83753c2-dec7-4fbf-8ec0-48f1cae94758 88bc46f1-c27a-4f28-b5e8-043d838605ba 28c9e82f-1663-46b2-aa65-7c8114842a41 6fab6ace-2617-4e3e-9e73-5a5828ccf608 9b1d93b8-bfc2-4afd-824b-337b162870d9 d03e5660-67bb-4531-9541-ac85c2a3fd91 5ac77bcb-2d2a-4a0a-8b61-ed7f7c1cef5b e2c1b1d4-8a85-45f3-9094-7a216d25179d ee602e1c-2db0-4663-b20e-1599f3704b8b 142e34df-c774-4df8-9def-1d03cf3d3387 006c175b-ed6e-48f2-b2ba-5a64ebc18d7d 5635fcab-0689-4fea-991e-e41afedd65eb 37e56998-b7e4-477d-ad77-6bd3db1c0956 359b75ff-4ac0-4692-bda4-3cc04713f8d3 5f0b37d8-5ada-47d7-a68e-8c8f65a63375 868a5b8f-d03d-417e-b3db-dc0c449d04ec 5f3070c8-db7c-4eb3-a4a4-2842fd770b90 5c85dc2b-93e5-4920-959c-ec569ff76f7d 3cf9c8d0-c26f-42da-96c2-746ed0321289 de389485-4e4a-48fe-aadf-c07f701b63d5 78b5b5ec-8017-4c39-a711-2c34746f3ecf 91e1ba6e-7248-44ad-a7c4-899a7046c56f 8a9ac477-56c2-4f02-af4a-75d84f13d8f4 5dd295b0-66c8-4863-aeb1-b677f04be052 bab5c5a7-9e4c-4a17-81b5-5493e2175d1e 16f079d8-7fdd-4e1d-a85f-b6ef7c8032f6 d173b920-638e-419c-8c9e-01281c6506a3 2a963ae9-eb8b-4ab3-bf40-69c2f3e80e40 441929c7-c0e4-4565-b3f0-3d464ddff331 2a24cfb6-1a3c-4d1a-a1c7-67b6fad67ae8 f79cac19-7ec2-4d84-a695-9967dd2b368c 14f0515c-b213-47d7-984a-bc337a54e588 7ee07dec-1e34-4374-9417-ee493f5f153f eecccc79-dc33-4dd3-a032-dd954568d214 b9da2191-2f57-4bdb-b215-7ea1b066e8f3 f29c71bb-2f42-438a-b619-5cecee0c3b66 d6a32caf-d970-4929-a5bc-924a707fe95e 839a99a7-0e78-43e3-8168-b379d258379e 828b1880-ce7d-41c2-8e86-107fce76e128 a113a587-3bb3-42d7-898e-d554c0885e0f aee587e8-912d-4a87-8c52-8656c5008d7d 944b6514-79ca-4b31-b6bc-709dd8521e9c 4557a604-f247-469d-a35f-aa04de6556b8 afe477d8-aeb2-4d51-bb2a-32a3b9dc594e 8553250c-4302-4340-b1fe-631bfc4a8f63 f06a944b-b34a-4d9b-8ff2-8ef927a1a398 7178e9f5-d7b5-4fb0-897e-91555b293869 82d733ef-f4e7-429a-9648-6dffba33fe32 583d6616-c03d-4e22-9315-fe939e4b90d2 c83b0738-56a5-4e83-bce4-4726a7ba13c5 12b87468-8bcf-4d56-81b1-66b916343b42 9ac66a04-4172-4e33-bb57-021f08c99b95 d3e39358-8fe2-4b95-8e3f-c0a24ecc8dcb 03ec782c-7dfe-4437-87c1-41ef16298c0a a73803bd-114a-41ad-aa32-b058895b5949 7f6096c7-020d-4935-b27e-36ca61b640b0 fd42b832-26f3-41a1-a8a7-cab2ce434cf0 2b28e05a-3ccd-43b3-9a8e-b56287550a47 93ed6098-6753-41b1-9705-4a742884dfbf 424570a8-3d8a-4c2b-99d7-c81067dcea0e dae41f44-9fec-4dad-83c5-6efce356f7ca 8c2f0a61-ea3c-43c7-b23c-ca47127ad9ba e0f2700e-e84c-41fa-873c-6626a0b5c9c6 ae640abf-8ef5-47d6-89b1-aa059fbbf938 701d225a-7cc2-4fb2-b8a1-55e4595c6674 d7c75210-a7d9-40c8-96aa-ac128f373b88 dfaa8201-42f2-457f-9d77-59cc105f8c77 b70f614a-20fc-480f-8e8c-43f741b9be38 9e24bfdb-7c5f-4da5-8759-3451ace24100 3cdf7825-6aff-45f1-bc11-bf8013df8bc0 54735c5a-9eec-4fea-b130-d0436f1c2aef 257ce1a3-aa45-4d4a-99ef-7a010acec5ec 889f07c4-f40b-408d-80fc-63ed545932e0 cba0f56a-e8e0-492a-a822-b3ace171bf48 398cf570-75ac-4a84-8cbc-6e8e8fa464a7 0b4bd125-daba-445a-b670-a6d39561a260 2121e5bb-8cd5-4a61-bedb-bcffe54792f9 20538761-1c35-40ec-87b9-167e4ee9197f c7566119-2d69-4dc4-98fe-144f6fb9fe4c a431214a-c8df-4d48-ae4a-ca49568425af 54d448bd-e98c-4468-ba28-6ffe10e48634 f292d31c-217a-4b63-a7be-1dc40d571111 72634222-7a3c-4010-af9b-f69b30721c28 65310d50-4985-4381-a788-d497f0e8b9aa b3a46e95-e67b-40c2-8aa8-a54e5c4f4941 f386b2c8-04ae-45a5-902c-c7ad35d8de7d 7161fdf4-fc05-4fd0-ae2b-96d11fbeb614 1aba96de-50c1-4230-8153-269e8a36f159 1b974e71-94b0-4633-bece-cabd3241983e dd455f25-b088-486a-8769-cfabd0aa9b03 c19d67a7-76a3-43e2-9e27-2f122fec404e 6708a986-7fa7-4995-a8b0-9a03b330352a 45aedeef-834e-496e-a550-1c1728b9f78b a475013e-1791-4fee-8fef-108343144deb 0bad4683-cd0e-4820-8188-cd7e825dec9c 944e1570-ce5e-4fca-99e9-a6cb8bc13b31 3a6a03b5-919b-40d2-a8bc-5c8ab64e939a e86f7d8d-7690-401d-b026-ad7fa0bb2e19 d4e96ed1-700f-4266-ada3-ff0ca7d6f7e4 254d4480-4308-46d0-8f83-86fd61399bbf 2362c8d6-cc9e-4a75-8cbd-b9a7e7b3e86d 120f5e2a-22fe-4353-8673-a5b3e79ad6a5 d20ef8e7-7d44-4ecd-b95c-6f599d67b71e c4ca44db-c22e-402d-a23b-c9e2fa445acb 521e34de-48aa-456e-bfbc-cefefefd87c3 0ec5a426-a7d4-4217-a997-699849f92698 5f3c3e88-683d-4afc-99d5-334f5d10fcb1 79ea1b49-733c-437a-b1dc-f8480d2bffa4 ab79842d-7176-45d7-a22c-46a2104d8b6c f8f39999-837b-4c7d-817b-23fc5130b968 5fcd7bc0-0cb4-400d-b34f-6f4065e81b5d 845ecad9-340a-4118-9107-5532438d6ade 99bc22b9-0879-438b-b133-fc37da8fb974 46e13df2-aa29-48f0-86e6-a4acaceb687e b7fb6fc9-d517-4f2a-9c4d-9ff2f64bdc1a 2be0fd2b-f5d5-4fb6-9de5-21752c0fd939 75f1a908-8a5b-4a7e-a88a-d7e52375fccf a932c2bd-bce3-4ac0-abf9-a7116e5eb080 ca545cc8-5107-4ef5-9e88-922c518de6cf 76397787-1f82-4ddf-bb00-4fb05e48823f 49f58e39-f1e1-4d59-8bd6-f94443295d55 6cdb3abe-c8ce-47f7-919e-a6f4ccb70aac f12e9680-0fb3-4f0f-9dfb-041e6085cc17 309a54ee-9cb0-4327-95e8-63f32b3db2f6 6fd5ede7-64f3-4a29-89ca-50f399d585f8 302a1c24-09e6-4c2e-bb29-fc8d63afc13d 4f40592b-b962-4aaa-bb72-186a19f8adcd e05f885f-836f-414a-ad39-f3f2d7594956 1df4e8c6-786b-4e96-9504-9b229e2bfc0f 81c40bb9-bf25-4fd4-8504-e5ad3c3c3fcb 522aefe2-f48e-4080-a730-11311eee7aa2 e3d93e58-ca76-42ba-ae09-dcd8900ee23e 02b84c99-a30f-49b3-a161-a66467a9a40c d39dfd91-77a7-4750-9742-cf833e0d3833 81232627-f2a6-4b49-96e8-971c2879ffa8 8ae4d947-c022-463a-9ca8-f050addb1656 1ca0cdf1-11c9-4519-9e47-f4ce882b7990 e5a57baf-2100-45a8-be8f-2f9928f7a69b 09f0ff78-4e79-43bb-916d-1a7960d225e9 09f34564-9ea4-460f-b92a-305dfbf505d2 c2a5e7c4-c145-4759-be8e-88939d82ec3e d10fa1bb-5f1d-4870-8f86-b49563f22bcd ec14672b-84e5-4dba-ad3f-76ff77ea8826 c77a34f4-70e7-4d46-872d-cabd83f370b2 7e6dc470-e262-4f15-9926-fa8785fbb87d 886110f7-653b-479c-abad-c477c6f3eb0e e443ee58-fb60-4a49-8d52-5c69fe8e70af 2070284b-1464-47db-b90a-6cf1cbaa9c2b 1325e9a6-b50f-411e-ba4f-1dbeaca4a0d0 27d8e445-99da-4ea5-bb55-a776b9708ef8 4872ac90-a0a0-446d-a1f6-36a25541afa4 36dddf9b-b5b5-440f-8813-00d23b459720 01c8c3a5-8aa1-4838-8a48-5e599672b194 0142ca47-4998-4b62-a6ca-69d87383267d b5f6ddac-d0f1-4aeb-955b-31e50601cdcf ea2a4b36-495f-4355-9115-1576e9855eb1 6848c20e-582b-491b-a691-7432ed7be9a4 febda1ea-53c9-4c35-b7e3-b249744afc4b 1c1ddf27-e1cb-4022-8e88-a23614e8f05c 2f4c7459-9426-40dd-b7a9-39a4e0e684f7 bf7cf68d-6cb3-414a-85bb-dc7d29dd636e fa1bd2d9-5bf5-4ec0-8fca-c7ce80b8c417 1afa96eb-6e0e-42e8-8cca-0838ee5e900d e1dda47b-250f-4c84-a55f-6309cb31f09f 9a871c3b-4874-4336-acc5-36d876abd3ea 2b99faaf-d855-45c9-bf70-9b854b504393 8a2e82c9-4c00-47f6-97bd-c58552fd4438 6dde0fd3-249c-4ae9-907a-507725a9c19f c0d6868d-be48-46df-a494-ca271d7f6da9 7c73a9cb-0dba-4f91-8856-30ebdc9a5c96 6e2fcdb9-2485-4088-ac66-81f6c97ccec6 e73a7704-e8da-439e-a96d-b3f81d496187 31f48cfd-460f-4334-b8f0-cecd085f8151 cd2c91c1-24b1-4683-935a-42254a36d573 695f37c3-8e4f-478a-8957-247ea4ecd1bb 1cc23bdd-e9dc-4763-b390-63708762edaf 3f958253-76ab-4821-906b-221fd77376dd a1aa5210-dcc7-41b6-95d7-1f3f63f3eb03 d787573c-b4c2-47b1-a693-4ecc39f0c71b 363501b0-92c7-4bb6-b357-4c72003efe8c 8ea65e2e-e2e6-4d55-b34f-47c46acee2e5 0e65ded7-5d91-4c51-b98f-b293d3942ab3 bb48e148-c345-4901-b217-138828fb9721 9e10479e-6d77-4e73-bbbc-55154e05ead2 5bf95fcf-a840-4fcb-9163-358836ef467a ae6c5d98-4eec-41be-a0ed-031cd5a508fd 36175aa5-7596-4a00-9ebc-6b2c83574990 afb4124e-2796-46dd-8005-c90f33407ed1 20e8c469-07e3-4c37-ad35-8e55e150d123 becbee1f-b39e-4243-b4f8-1587c625a8fd 705ca132-bd69-47bb-b93a-c17e2a2c20d7 a892efcd-2d99-44c0-8775-4dc8175612fe 8aecaabb-c5de-4a57-98d1-9b8c98246c77 0d0f0d8d-2553-43dc-9ba2-e600dd69a0b2 11f0f96f-6bc1-4e11-b840-c726acb94665 60db281c-a560-418c-a002-1bf2a2fe102e 2a30fa3f-c6e6-407e-ba52-0324f857de25 76b19a6c-a801-43d9-bfdc-dfe40c24e363 e37d2f1a-2d7c-4156-9994-28412352ff26 27f82ea8-6c12-4a14-9a44-171c107d7b24 b7382b53-116b-4e96-b415-88e5285786ed 076706b2-a4be-4efb-bd70-df419d67508a 142992e7-c0df-4e02-8aa9-022b0cc4ded9 58b09cad-4b8d-4031-94ab-5e83fd142fdd c9698ce1-188c-49f8-aad9-0a0fe08b1de1 840a3e83-a768-4d9f-84ea-63da4cb6afd7 b4879a88-745a-4927-aeee-9f34ec618747 0cdcec57-305d-412c-ac98-9123ab1778fd 40faaf29-c141-4bb5-9f90-61ae1c90dda1 674711b8-584a-4a40-a5d0-da7e58398efe 9ff9a413-bf68-454b-98dd-4d365a7f3c92 986def8a-6399-4cd4-b0ac-77fca451893f 09f522b0-4900-4570-b337-576c17af75b3 c89bb2ef-a457-4877-9ad6-c28844be0e4f 59083d0a-b080-41ef-a38a-2cd45f541e2f 971e33f9-e309-4a25-8ebc-591ebd53ba06 e3c2f73d-c710-4d77-ba29-ebb2b318813a 369af7ac-731e-4b85-bff9-34c1f50f0506 4f7fd893-ee8d-4d5a-8b0c-f7366f6c8559 8be4cff6-4105-476a-9c65-a6605d9a1891 7ac583f7-da8a-4289-a6df-340201440e5a b653987e-d267-4c2d-be15-121182b22086 2066856c-ece6-4bfc-9eb9-d844e61e90f2 287250a4-bb3d-405e-a3fe-9d22494b7557 4bc38628-df30-424a-a0e0-c6d3218c63c4 1bab2047-0477-4131-81fb-2067dfffbb8f e14a0072-ed1d-4673-892d-f30d9f57b1e5 66815a9e-d17f-4b93-a159-aad83a0af9c0 3c52e51c-79b4-4680-bf5e-589628507de1 bdc52e3e-fc54-4e62-bb29-11f6fdae7415 b3d7faa4-ac28-47ae-ab79-df06725a9078 9b7cdfd8-d38a-4925-95c8-e4e3cb267e9c 9d241580-1acb-400e-b7d0-c0d32cd20d92 d9cf13af-af76-46af-9343-909085bb9330 9541e052-fdfc-4541-af56-cf5e2db40adc 6c661c70-6ae6-4e4d-b7d4-b20a236a7c86 48b3e115-5122-4341-8efe-444a76f5d6de b4996c16-3b84-49a2-966c-f6df1146665d 2ed65c48-1aa1-4d8a-8e70-8f13bde4a315 3406a5d0-668b-40e1-ac47-aeabed07a96d cc2cf549-e0ee-4b83-b351-9063eaa66b3a d5e49555-3500-41fe-b50f-ea4d80aa34ef 6ad6b70f-8c4f-4c16-8b7e-8dc36965bdd8 c4cd3fd6-4db1-4603-9727-012e5795c44e 1cba9eb7-c7a7-46b3-994e-008dfc206238 06998581-2298-4333-9fd2-ca54746636c4 4ca3cc3d-079e-43d4-a156-90c3f4553816 10d49a81-a317-46ff-9ac4-2f87c3b0e6d1 35744f93-86ce-409e-a21d-63fe5d94113b a295b94d-bcd4-47b5-87e0-c0f0171e6323 5f6ca849-2b6b-4421-b6a5-46b0fd081e39 65e491d0-da3e-4c38-9975-298997e0980a 108e42dc-318e-4a09-9af1-3a9ef8a95df4 c9d859c2-c450-473a-8cf0-8456f5b5efe9 bb616c6f-850f-4103-9912-bf5cafbc1a47 60da2d80-681a-461c-8ec7-aa3e4ed6f541 04e07e07-1e19-4995-8be0-01dcaf83eb1a 05a638e2-9b0a-4460-8f66-cb6e44067f20 74d960b9-23bc-4955-af2c-2244c518b370 919870f5-006a-4a59-add5-18b4e396b275 94524e01-2996-410f-925b-6c5af3109d1b bf5c72b1-ee1e-4d0b-94eb-882087febf64 96082709-71ec-43d6-8b3d-4267c279f69e d40df54a-def4-4f73-b607-650304ce38fd 9eb7eb4b-daa5-4ea8-92d7-c5f07affec10 22db58a0-4f46-45fb-88bb-1e21d7432240 7cdfc5a2-1aff-407a-9a5c-47aabf31a42d d8d38fd5-3a7c-4348-82f2-4f0bd71738c1 6ae45105-aa2c-4a5f-b792-063ff6237d39 13ce7255-8cc1-48a8-8a0b-e880e3d0d884 61284481-f976-4896-b65d-8b6475ac759b da5c5e97-5c54-465e-b99b-b711c387f1bf 64c125ea-cec9-482e-bf2e-e9731281d91d 7b9dd49f-d633-44c3-bafb-46927f97ea85 61dff99d-e7ad-4ee9-a881-3826d5e3acab c8c4e1d3-3af7-4225-a0cf-42e8129b8ae0 737c29ad-93e7-46aa-94f9-66e05ce5d9b3 f4780b9e-2137-44d9-a996-46137f6c7249 0587a9e1-eb14-4440-ab25-566cddd422f0 21c4c9ac-3ef9-4f27-a278-73ed44008929 3a6133e2-6315-4aac-8113-c33caaf5b4a0 3eb1ea4e-6443-4aee-aee0-60e40e3256b1 a10efd62-97f4-434d-a7b2-9631c4091de0 aed1a48d-c2fc-4e5a-9536-b12628823014 14da85fa-66e8-40f8-97cb-8ac1d9f602e3 3c08c3c8-e408-4471-a8a3-162493bb6287 2b4fbfc7-8b9f-4496-ae00-f98712f48fae 28e6fbed-2231-418f-878c-a8d597e5aa30 4d33cdc3-7379-4271-8059-97ecefa344a4 6b3c989e-d019-4332-9c51-4c62c9080aa3 0405b1ae-c6e8-423c-a361-bc21032a2937 9b5983fa-2be2-48fb-b4f9-cc792e24ccb9 e55e5b1a-2984-4458-84cf-d028dac39997 b0826397-73b0-4e03-b3e6-42c11e6865e3 7e481f08-fbbd-4f27-865d-7cad51540977 8bbef335-0211-4995-8348-b8db140b8454 028ca689-051d-4093-988b-d77b6b867e82 96d050ea-52ad-4cb8-9036-4200cbc891cf b9b58227-8fea-44bf-8b23-cc020e35e31b 539d1e66-5c21-48f9-a942-42f68ba12eb0 c9a52c6f-d575-463a-a078-5b4368f35630 5079b3c1-a5a1-4655-a931-2a53b0a87f20 e16d8252-fdb9-4cb6-9d62-d6b126cf6f50 1834a17c-7022-482d-9533-652747fef210 79685725-35a2-45d2-9120-c7573ac058c6 a01a900f-bed5-49a4-a86a-d8caf1d1bb00 19059c0a-71f2-462e-8dcc-fae2e4473d2f bbf90079-c108-4c27-bce5-a376f18e108f 5900088d-df6b-4b20-abfc-1f27bfc5c986 02fb2741-1bac-4d51-9663-339d700e9811 9fa73310-3242-4952-b6b0-11b0d1d15538 bc9af64a-deed-4bea-b301-38881fc5d1ad 1ce3d757-d7aa-4040-b2b7-2faa5999a019 c3b7fd68-ed22-40b0-9c5a-10fbf0a43813 203da6e9-57cf-4480-8754-ae28a6ecd9ed 53acecb3-0d27-4367-9b04-942c32a30401 0999bf20-0754-444b-8e23-ffb4dda412d1 c6047624-a639-43d7-a0c0-ca808f0a8760 41a62c31-5bf1-45a5-bba2-6618c629a6f1 f757f9ba-22aa-432a-b70b-fa81cb8d60e6 d7a85711-f3b8-46bf-89f0-1292d273a124 8685476a-4b0d-456f-a8db-dcc8e70a8e79 b7e3e2df-6f71-4738-82cc-ff0d03cffa61 e4ab3d29-cf7d-463a-a5c0-dcabfa8b2944 f694170a-bab4-49f2-ae1e-6b2aefef235e fd868f2e-93c0-4570-ba4f-f859b200bf00 36c10568-71f4-458a-a831-11bdf6d4c25e aab78dc0-fe52-4d32-ba2c-972b5ea63355 634a82b2-be1e-4f02-9b2a-bcb241f6619a 4680b210-8784-40cc-b4f2-101c8876cf3d c3351dc5-e8ec-4919-b348-4082ace758cb 73101689-4eca-4eef-a291-d310f017badc 9ec0eb01-d57d-451c-84f6-ffbfefc88c3d 563149de-dc22-4ce9-ab14-808c77a9543b 899618f5-09c8-424d-832a-7a59d6ea65a4 d1dce6c5-8958-44a6-98b7-d0020dcf02ac 9bc05c4a-467b-4eb2-b264-04ce232d7fb7 24ce5bff-8acb-4272-98b8-d91fd08aeba6 23003e00-d055-46b1-b6aa-310b6aeaca3c 29791576-5a30-40c4-a3ef-27175263952e d69d1426-e3de-4508-992a-2ca769196866 73cea881-0cac-4bd5-b4d9-999db90d9d91 c222bd2a-77ba-4dcf-958d-1fe86f71e342 d1b0704a-f344-443f-aac3-8b29300cbec7 a82861e1-16db-464f-831a-ebfdcf4157be 3013ac55-6b52-4e1b-981a-8e7d28c8da53 d70a4503-5e75-4d1e-bb0f-281647f9087c 6cbf7c15-0437-4cc3-91a1-59d22bac3a10 2119b457-fce8-49de-beeb-5abc475a3fdb 27520df8-2c59-42d1-91d1-5e5b984953d7 63b8412f-b1dd-491f-b06b-649a48613e95 08f63098-6be9-4cf0-90d0-ff1373db3640 48d0cab0-eb55-419c-87a0-a10d8cf6ac9d 129428ac-da9a-49ba-a397-1352a6f0009f f68c3dc9-131f-4151-9435-f0b66187c64c 2f3adb93-158e-4e98-b55d-db8a435b57c5 05d0df3e-b0b7-439d-8074-1bcb176f2582 e8f309de-4e17-449c-89ea-d9b274d641a2 7626d3a4-d6ea-426e-9e3b-c98226ecc5b3 33ae5cb9-7280-4d27-8955-5308cb02ba25 ada795de-686d-4c60-a76f-851f41d0d59a 9d9899ff-3eef-488f-8695-7c2b3ea6f52c b0621174-af20-44c7-b263-69cde674c084 37febb96-d215-4268-b4a0-ac17c556a857 be7424c9-08d6-4343-96f1-fb629c0de17a 5767fe8f-b8d6-4034-90d1-34210b52cacd 409fd33c-37c6-43bd-a7bc-5e9382de4bb1 38a2ddb4-3164-4201-8bae-8dec20bd87e8 e9a190ed-eb42-491c-94f6-643b06ef0db4 7bb9dd73-c8d3-42fb-84fd-ec040011737d aacb6b44-b0ee-4a55-9068-fe7d112e4862 c6e18467-eff6-4eca-8ede-467807bc8372 8b5ba8de-b382-4aa7-a135-615608ed245b 6d8ab17e-375e-4c21-b9ea-c4c970549ffb 1e81cc8e-2f59-46b5-8891-858c47800b7e 04533855-8101-4ea5-a70f-0405d74e351b 79ebb127-e950-4d98-af2f-a76f2014bc19 95ddfd98-6922-4784-b906-e3b6f0f5b718 ea501ce0-4ad6-4337-9863-916c392c30f5 7fdc2568-cde2-4086-b4d7-8790788f78eb 6985a26e-bde8-40bf-8ce5-fb65e2875f37 86f25f10-7b65-4e50-abea-8b1571e57ce9 30764ca9-1816-46ce-9275-85ce0b84f4a2 200508a6-88a4-4cbc-af9a-1a7bfa197f1e 28a41770-6b71-4484-a603-aaf0d3b3c68b 68aebf8b-fb62-48f8-8a4f-de2d4dafb9cf c2aad46e-a909-4664-b95b-8d3927c7e100 36005435-41e1-471f-9306-d263064decdc 1eedb75a-d04d-432d-bc33-b322df333190 822b542f-e301-4645-be2c-c1329bc23f92 336484db-ff2d-48e5-8640-6db45b02ac51 2390f525-5a49-4d53-844a-a31b500e8fa9 94c298e3-1b1b-4ab5-b4b4-98e8b9e5b707 4a36e9bd-abd5-48ea-88e7-6742ff07c747 7d076c2c-1e19-4d85-8bec-70ef980c3da3 6048eedf-95a2-4778-98a2-9df0f7c7e129 24b531c9-e919-48b9-b17a-438e797fb123 7ed9a0a9-f840-4533-a0ba-46a1971e8f31 b698e2e2-d424-4547-ac86-99ed22b76d14 d3c451fd-3c68-40a8-b929-569382463d03 521a5f6f-ccef-4806-b9c3-93b918f5655d e4691a5c-0e0e-4ede-a53c-e41c7b816b34 995aaaa6-8de2-4c27-89ae-8a0329c96b2c c9821a99-6c1c-4c11-af89-2e0f0c10b109 e854bbba-6de6-4478-b6b9-772b961c3532 ad641432-e0e9-4439-88fc-71c77dbec9be d9122568-8179-4e28-aed7-cce581ea8bec a7901a44-446e-4a58-ac73-3da8cc92a917 6593f77e-f9c9-4a81-a218-a03d4d3a1f90 f2499362-28c2-4a15-a24f-6cb45e221bc2 2d2f5632-e32a-4d57-b564-80f3478ca977 0f4e3b5f-7fc7-434d-ac1f-50e30ebcdb84 03a6731d-f6a1-4954-81a0-f8c0386c2e12 ef5bf479-946e-408f-b96b-037f6af2644c 69760ca6-6d81-4962-89bd-cc758fff4482 f042b458-2124-439b-bfc6-e8a5aba04c28 3fe06813-ece9-4169-8c06-09ee6a5fae7a 79f7a630-5b9b-4f88-9f0b-eeb1e58c64db be490e0f-8732-4a5f-9dce-8a0eaaa619b1 a0cf270d-d0bc-46d0-9ac2-5564365c2259 a3f73204-3e0a-4331-a67e-cd1ab60722fa 2ec06f51-f2de-4d09-8d36-6f33c0beca4c c9c5967f-1daf-4e8d-aa68-80053790515b bf2d921b-f3ab-496b-b12b-f39043fe1bf1 afb2902d-0c87-4211-998e-b305ce70c739 ace27f61-8933-447d-b68d-9e492b5d33f6 a454510b-381d-4e14-bfd9-6b07c8973d6b 127089b6-d223-49a2-9ead-5f7a24ef9d6c 1609bace-51f5-4d87-aa8d-af41c376e78e e5e0d058-9bf6-41e6-9b63-3139fa55e90b a5dcc653-5ed3-4c5d-bba5-41a319aafc57 1eb37d40-01d2-4166-bf63-c247eb8cb62e 0bf471b8-3421-43ac-b1a5-590a2d3a6955 c3f62975-df62-4333-ac27-b029786c1e18 367d56ae-294d-4484-b809-f444faa55600 3263bcfe-11bb-49a5-8fdc-e6c46c7b1c81 16c15ff1-8a6f-4f19-84bc-b54f76cf6148 2068d467-b8a9-409f-a2e4-db692f2a8f0f 77c14f13-857f-4be7-a0ab-5782f5775544 2358cfbf-4941-47fc-b387-18109350d117 ac8c4e3f-e62b-4926-b409-c6c0474145ca c1d46f57-ce04-470e-8301-6251d80772ee 6e730538-0acb-4044-8cfe-e01fec971e38 4a65519b-6177-4a2b-afc1-ae9461212788 df778a87-e822-459c-bff3-1cb5640d2f98 a92a029e-9fd3-404c-9115-f1d7638412cb deab07b6-dd3b-439d-be0f-3af7272915ca 887674bc-6f89-4ee6-b9b4-2452fd6ba184 345444ec-4a3d-4d15-9dd0-c9cc83dbc698 4700ae1a-e505-40cd-a3b4-52e7048fe95f 4ed25c19-5784-4512-bf40-fcd17e17a78a 7a7fbbb3-cc64-4618-8088-34206b3c28a1 6bb3f230-bdf7-472b-a285-9e40955e79cf a15b2cbd-4ba2-4fa9-8e57-af613c6fb5f4 8471522b-a2d0-4eed-970c-1a2a58cbe6c7 e23626bb-d891-440b-b315-202dd04908ea de71a42f-48a2-4bd7-84c3-8f9b5bb82686 5750c846-233e-42b6-a41a-bf878a06b356 1172bd95-de4e-4065-afe4-b61f821935d4 d151dae6-0fb1-4ca6-bbd1-58cb42c7a250 724cde1c-f65e-4bd0-aa70-ac8f99b0d324 b0add2b2-2f5e-46e0-b3e4-fe333d361e2a 3c330162-8a78-49f7-a957-f4d6ed4b8af4 2d58ee57-e189-46bc-9aae-2dbbdc51020e 33974766-6d27-4598-a732-e26572e3f293 eec7877b-68c7-46a2-8414-130015f26eb7 b8604feb-dfec-44e3-a079-dd72b6f52e62 173d5856-3062-478f-8036-11cd2faef6f3 a3b26df6-d4e7-4679-8c17-d39ec5a1e4d6 c60ac7af-4450-4c57-bcf7-546b5d82cd4a 0e12f3d2-0f8a-4f42-bb3e-7166d69dd88e 5b148693-f1de-4c97-a6c6-df922bb5521e 6df8d596-f1e8-4ec2-bc9c-41a1d83de1a8 dcf5ae7e-c1bd-459a-b8c8-3b8b51a84c22 4c6299c3-12f6-4ef2-b3c3-3908dffec100 09e1bed5-794e-4558-9750-61e1c709273b 91427c20-efe1-49f7-8883-355e693ebd3b 4f53fb3d-f2d2-4271-afbb-e5d36fd28233 ce107878-2c57-4049-bab7-5f2d4c6c07bc cb0c1047-046a-4aa1-9949-2167848f0818 52edce91-05dc-46c6-be74-b707f1aee381 bed656ba-c951-4d7f-8f74-1cc307e5f7d8 ede257c8-233e-4fd8-a5da-c91fa74c51ac f357c760-e47f-49cd-962a-bcfbaaa76def ae331bbe-faa5-4eb1-ab75-5f0d8c4c6f3d 1fd0cf5b-6938-4b22-a2d6-69c7ae5e83f3 167828b3-7cc2-4a81-93b3-144502dd2271 bfe15d78-2d3c-4fa6-93ed-dda091088ae1 c355a943-50dc-4e57-b4e4-b4dccd8bd033 3795a704-0529-4127-b84a-450aee02c95a 3e66c337-31da-4b64-81e8-20b0c430337b 9582a142-cf5a-464d-bfd0-59ce18435da3 88d127ae-a743-43bc-868c-3ee88136c8c0 91246fa0-1602-4223-9bce-1f85a77bd081 97fca218-c1c2-4a82-9481-9a640b6e0b51 41a31db8-8a01-4ae5-a6bc-eb8a610cc814 6215fe77-776e-479d-afc3-cf46c3475195 38cccf05-47c0-4f5c-a0e2-2ba1a47536c0 3b7a4a51-cada-4ca3-be5a-a0246bff8a3d 8e3e4632-9edf-4cd2-a104-3e90f462f586 a6a6decd-4cbe-4f73-87f5-45626affaa07 f3f9978d-bd15-4045-882c-f259ad520f91 937512e3-995f-4945-8096-42c2ba44b746 6bf2ec88-8330-4473-b5c1-4aa227e9de19 4533a5ad-988a-4044-ab75-f4061eb5a1f1 b2f2bf9a-7d18-4dcb-9a52-dc8918636a4d 12bde1d5-ff37-48aa-b274-96fce40de123 1478c134-1e61-4e36-9d80-8739338fa9a9 47697f17-bb59-41d4-bded-b4c69ff11459 1d64c044-ac91-4756-b1ac-76c46fed803f 75bdd63a-6635-420a-8913-6653fbf0716e f5047639-4ffc-4351-a8d8-f46c3e9fad0f 9e12cc9f-3d07-4c8d-8920-213f14fcc260 77c51ad7-3022-400b-be37-be45b5de39c4 2171940f-8f5a-4975-98fa-a074cf328d77 00293675-c127-4e20-a7b8-746177d5dbe9 ef307d7c-7919-44b3-b05b-290c6e76bb3b 80d163aa-3f54-4ca4-bd6a-a13b23920aa9 50b4aa54-8a45-488a-b99d-09dfdfeaad10 85b45a1a-9af6-4efe-878f-ef51c755f6c4 167d2d4b-bd29-4042-bed4-cc91a3e86973 98b3be29-6e66-461c-b29d-6a7b4a17d45b 339f0f34-47ad-4b54-bc32-b0c678deb95c f1c3c52e-f62d-45b6-8149-969f9b69c771 0cdfdc09-5212-4e8c-90f4-9dc2be0f576e eb58b082-1744-4134-92b2-1eb20156bd22 5caf00dc-ec1f-40ed-83fe-00cb2d9d6e3d e4c617f5-2d20-42ef-b8da-129b359ffdaf a4dbe0f0-2f1f-48e0-83ae-3fb9100d5538 90478c06-e5ea-4d9a-a0b3-af0c18a10914 73331898-f81a-4c7a-b690-e2158079e564 30c9d0e8-68f3-4463-a4e8-359ff95f25c4 821061c1-762a-4a14-9e60-fd1c03a6cc70 90726942-a467-4c05-8ea6-4b5129ac3c58 45c59af0-776e-4233-850c-5da81ac671c8 e3eae5a0-ac3d-4e52-bac2-9ac4671064ae bfc8a2f3-287a-418d-83cf-b9e3217eb398 3d71c5d1-7a16-4b8f-bc22-c02a16ab8af4 9e023ce5-0e1f-4b01-83e1-b32b1f9c069d 3ecfdbe6-ee3d-4190-be19-f128e69f6723 f5224a37-cfff-4922-aa8b-7e3b4646dc66 484bc699-3da3-4e5b-a9d1-de81260b73f3 1ca35744-108b-4f03-b898-bc0550f84c4d b70b5bab-2a98-462e-84b9-d5b135d0b64b 81358ac4-5b43-4e20-b90d-5eb366ddef21 f5d823c9-d9f0-4037-8fa9-b268e187ef5e 577d3f22-64ba-49eb-9544-0072f325ba8c 17ec64fa-3a56-4e97-a0a8-fc3df49125bc 7d13ac74-20e6-4af2-b826-c24908eb6d15 f1013a38-54b7-40b9-b900-7ebaa5f38c80 0fd1d284-b4a4-44fd-a191-844ffb1d1483 899aac00-c59f-4f77-9d73-f0d3eb08d548 03d411f7-5e18-41cd-99e9-466b6d6a2b16 9f67cf22-0063-4cba-b7af-f000d64f63d5 19a21cd7-58ba-49a1-a5c6-186d07a59ae5 a57eb7f2-3bef-4ce7-a620-0583f89370e2 520e0fd1-90eb-44c1-b70b-d754b159357f 8c531d5c-6263-4668-9561-71ac05469d5c 8eae17d6-6b33-41df-9525-71ee75c73e0f 7d3f7bde-5b89-4e44-8868-47f32222e7e2 ee341352-81e2-452b-b557-bc524fcd8e23 1f4fe610-71b5-4eb9-971e-f2540bcc4d58 320961c5-c02e-4339-8567-b41c7c587b6a 7f97f26b-c8c2-4168-bab6-eaa0346718f5 109a14e7-7dee-4938-854f-d38c6750e606 7d830b56-43ea-4467-ad19-b0fcc565f459 f2921816-40ae-4d53-8361-e1e9c9b33a23 06809130-fc5c-457a-86d8-7f1780755d0f d8a5cef1-6661-4c40-b35f-cb0fc20293b2 83bba4d7-a087-4e58-b2b2-65257949dbfb b7108f8c-1a5e-4c81-b677-806903782f30 a5a15973-9b17-4ef7-9871-1ce2f553696b 8626eac3-55e0-4fcf-b14e-872ba0325e88 6a2f2312-a5ee-4990-9e35-f16e115ae1b6 fb9902c1-f351-4b00-b851-34e106c41367 1be4a1f6-f48e-406f-a114-5ba9e41eb4f3 06e301b4-c306-438a-b48c-d21666a6e86a a3d3e7a9-87be-4d95-a162-1266cd974b13 7b896f66-db0d-4504-a225-f745349f2215 25c24937-3084-47e3-a0c0-8955ed71899f c807777d-ecda-4562-983f-251dced04f41 f90f0e4c-a47d-49dc-99d5-a10b422620b4 9b99c0fa-cdf6-4513-bde8-0e9b0d3d9fed c092f90b-ead6-42dc-83ea-38ee380cbe52 5e724836-6723-47d3-aac0-d747239208dc 63c96d10-18a4-42a2-8d32-d2098fb8320c edd3c787-2567-43bf-b67a-84a1212dccae 78fa4e7e-a7ca-4d51-ba2d-75a4995acbe3 cee74233-5d57-4a4c-8467-f9ae2885c8b8 74249241-49e9-4dad-8a7d-8438b520255b f2b76bb9-ca53-414c-89c9-c7adb1f6e388 823c3455-8633-4d74-8f0c-21f43048e40d 55699afc-8eba-4e8c-ad16-2ba467077f16 9057a6e7-0d85-4c6f-8440-1a2ce0350f6f d68d1eb2-9ea6-41b9-b54c-ff322ae6f3d4 3b664ba1-8aea-405d-b6e7-af85fa4c8ff6 9a9f1f28-eb85-46c9-ad78-a2a3325ec981 bd6b30c0-4a21-4a4e-b7c3-6f6a37c8ccb2 3ce604ca-0e97-4d00-9c2d-221bfd66e9ec 5909631b-1d48-4cb2-ab7d-ddb9e9340af8 d01835e5-a27e-4734-809c-7054a9a8faea 25e8ab8f-ed24-40f7-ab2f-cfa647ad5b3f 3a20683b-e0dc-4945-add1-3dc0f4e95006 cdebbeda-9027-410c-bf32-c185103a360d 980bd2e6-10f0-4e99-8815-c2528199f45e 82a5b623-9632-4d67-84ca-f10f57623d29 d15d854d-4ef8-4eb4-be07-69ec7c465e5a 691551f9-aaca-40c0-8d5a-862a78cc6cf6 887494c0-3324-4762-9d9b-f20d84fa7ac6 5705f790-2928-4345-a518-0a09996442c8 f2ddb707-bb83-43be-9123-8a44b52e88a4 d9e56328-84ed-4728-8588-5c0395b99b9f 77002c66-c592-4e7a-89e9-3c57a62665b7 17dff233-1020-4b00-b2c4-2cd47e74db09 e7ee59c7-a699-4630-a896-cb8699d77c50 fca422f8-0ae9-4598-80ac-c21975290156 3164203e-6853-4200-9a8a-5782b1dee647 2cb7417e-d241-436b-85b8-4b4a0ff81a60 9ef08e4a-8080-4f19-9d1a-ed0e918e9164 eb8793fd-1f68-4900-8edf-7674c584999b de539c9a-c3c5-497e-abaa-6fd5d34f3753 0d158bea-70ba-47e4-9526-a8d4e2d78089 40756096-21e6-4250-9437-4d30298dea40 402ac2ff-1d5f-49cc-b639-35ef69a60f70 85d41fd0-d380-4e87-9151-c3bcb3bbcd97 ba9003f1-f32e-434d-abc5-cbec74821205 7539e66d-64a5-4032-80e5-04a3fd2a261a 0e51d167-6b54-463e-a667-c6c35204997d 0009cccd-1b22-43da-9108-6622f38cea58 a8d44076-255d-449e-aaf2-d76a05ab8322 47d41571-4420-4346-be93-a4b2d2010415 45255459-4c63-4c34-af1d-028c25621ac6 9d2568c0-c595-4540-8b70-fd53eb7a0a46 4eeac6af-3fa5-4a3c-805e-05f8e6e06755 31fef88f-3161-46a4-aa6c-a39f59bf1821 18736f6d-210b-4554-8d01-c252355754bf 1dcab261-276c-45ce-8374-19f8241e9f6e ded76258-4b7a-43f9-a8cf-5fdabfc31d8a 30270d9f-0fa7-4a4e-a147-bb389ddaadff 12b68c6b-c9df-4185-8f16-d141b27a2212 ed3799f8-c048-4fa0-925b-42b7c063c63b 9d098ae8-2924-4129-9102-8a1052795275 b2eec62a-0efa-4916-91a8-94c3ec6dda18 acd50347-967d-495b-9e78-e0b86688c32b c14be861-b89e-4680-aff0-7d7824f5abc6 d66d3748-3ba7-4443-8896-72623a04c3ad 8d0b5678-d9a1-4a19-aeee-9ed6f1d80348 13f9ca3c-2ec1-443f-9e5e-e1ee1d5f42af cf493984-5fe1-4880-bb90-f6b913361dd5 7dd06c07-0fbf-4655-82e3-cb76e58fed5f ab070709-93b5-4a71-a230-2bd6a851951e f86fc8af-eaa0-4158-a0b7-5ca5b96a1dcb 96332df3-e518-4139-aabc-770e44fc5729 a2671d16-8f1f-46e8-bd96-4a7f055202d5 172ee63d-b325-4baf-903a-7030ea54b65d bfd9f227-cd32-4775-9df2-341e71840085 edffcfd9-9c63-4783-a74a-ce6ff2f4311d cd75657e-08a5-4cd7-9bfa-b9bb589efa5a 79ba5e70-4217-462d-a0ea-8f2df590104d 539c670e-3c39-4639-a7f5-acd4694e66f5 664127e3-3de2-4b96-a20c-f32dcc9f5958 eaadd8d4-162b-4b4f-91bb-63ed9fe2fa5b d1c06d51-cfb6-4636-a941-970d56cd78f3 e2df934a-98ce-44ee-932a-341d1e98a6ae d07e0c6c-5988-41e2-b21b-9c2712f3ba59 d7af86d1-ff2a-44e1-aaa7-3c404587a1a0 d4a1ea3b-eaa1-495e-ba44-5c69be668f27 f6d1c239-f009-4963-ab1b-1e0b19a045ab c5b3e9f0-003b-4e48-94c5-efb818db982c 408756b9-bc22-4e95-baca-922e1f4d7b85 c44386ce-e198-4fb0-817c-428fa0515f56 72c59c9a-fa1a-42ce-9552-4715cff5f8a4 3014b99f-d7a8-4a07-ab2b-e6e998c1eba0 4a7f3a93-0a13-41c6-8c8d-ac0c15c81d38 bacac5cd-9548-44af-bc90-9962e065996b 93524d8b-8db3-4082-9822-63926650b0de 6b246a07-c739-45fc-96a7-76e16e0377b0 9fa696c4-6b97-402e-b755-84abf8a0be8b 7e9e26c9-0dfa-4969-b582-aa4a0f930fe4 b2b97127-b1a8-4539-81cb-816de24c0bf4 2aec3df5-e5bd-48d7-971c-0708936276d4 59360fbe-82c1-43fe-a997-9edc8e1054fc b6379eb4-5c6b-4c4a-847c-8abec2ab5265 5ae5493e-acbe-47b9-aee0-b258ce639365 25647c38-6236-470f-bce5-44bc1db69fc4 df389702-fd22-4d09-bea6-da2cf5679c7f ec6dfc3c-6f7a-442b-816a-76c73cc38a48 07f966ad-9529-42e6-847c-fdefcb02662d f077191f-d73e-4ca7-ba8a-0e0d58fb0a14 af17e086-8260-41c3-990e-ab5a80b541d0 95728795-6ece-40de-96a6-0e2b4bac1357 f80b48f1-270d-48b0-acd1-1c3ced7425d1 e83bad75-66db-4ba2-8ba8-9f019a3bafd5 05a4af51-2cbb-4bc4-9e92-bd761a14f112 2ae15f88-3d93-45f9-bce4-bbd92b7f9cdc fb0ce48f-747c-48e3-94d3-fad6152d2acd f7fdc0b2-d822-4559-808e-e13c56c2fddd ae60ae58-3d75-457d-b298-13cf9cda48e5 9f84dccb-9356-4078-84af-faaca16f10f1 e895bf47-d835-4e4c-8ea0-72ffcb66fb88 58808775-2cd2-43b3-9167-06c87c417a74 043cac76-1c9a-4564-be91-9db0a7de2960 772ab627-5166-4626-847a-c9565eed828d dbaa867d-91bb-4e31-9193-2d5de5289735 ec5e0358-e509-4681-ba57-8f618d341b64 3f5818ef-9641-4f5a-a151-afa8a5be5e38 4c6a4160-56b4-4724-b1bc-d20a057b7bf9 6d60f1dd-5e0b-4ea4-a255-5d8002848638 fdb1e681-e08a-4fc2-b8c3-b977cc815cb5 a1e50c6f-a26f-432b-9600-21a6c2fc4bb3 835e9f33-87ac-4125-958d-9577bc5902cc f40a4110-d950-4019-9e1e-97b722f8e2cf 21189bf1-2bf3-425b-90c6-47f1b8cec2a8 ef734467-b633-456b-b23d-e5c981b69f9d 819b7ecb-3217-40c8-a89e-8ae9d0e139ff 2be31a93-095c-43fc-b788-df14a6e85b7d 78137d1e-21b1-4ff0-a917-25b027c53161 8df6b04c-5a63-4cfc-855b-58d39dc73ff8 53d3c4cb-b5d6-426c-ae36-39952fdef703 0053080e-2254-4414-b26e-dc02331b644f 74bea41f-0464-44f9-bbe8-4ab0f449f123 e895dd21-8647-42b6-9396-21561290f0b1 14ded8a7-b3cc-4fa1-8667-5b122e2f350d 0c7b9232-b852-449c-a704-b31b3049ffa9 6c933b34-a85a-4f3e-85cf-f55ec1763479 fc0dc55e-db89-4831-82cb-cc6e03f5b72c 9e8ddb05-a5a6-4abd-9352-233d474671fb 8598ddf1-373f-418c-9845-eae50710af8f 10066c35-5e3d-4fc4-8b1a-781f6d189572 c6b7c857-5f08-4748-a3d6-71b9f1f7ca24 d1e39e0c-6af3-4c0a-986b-096cd01f149a 93cae397-c827-42c3-b02c-63bdfb0008bb b646326e-05a3-4f42-9821-cf26bd0ff281 22a0bd39-2919-4e01-b29b-545c48399f85 144f9779-02aa-4312-9cec-6a61d8f776c6 7ea94221-6ad1-489d-bf0c-d9f6a40e299f aedb0d1e-6ada-40ea-9cbf-998ea7b73180 aa30e2e3-0d1a-4ce4-af8e-64ff49ad382f af1340fe-675a-4cb0-882d-e9a44c0e6698 09a9564d-5930-485f-a6ef-8d73401267bc 8f7589b7-f23a-4146-9638-be99a9b4dea2 a46bf9c3-d5f4-4e6a-a0c1-de0155ff0ce5 271953e3-66cf-47c5-8521-d28dabeece27 4f99887a-c1e2-4519-af9f-742bc938734f ff5a75cd-af8b-4226-b994-26517f09908d f0dc2960-d16e-4303-9a6f-13f8d7c32680 7b592d5e-4c5a-49a5-9aea-016834658cf5 abd255a7-d92c-44d0-87b9-f401bd50eb55 7b95c62f-6cd9-47d4-9f9f-57c296bb924d 90495a7f-93c3-4b3d-a1aa-8b535a365371 2b0335bb-9d72-4754-9a87-b275eb0a36f5 5e8760ba-8085-4c69-ac59-1ec2f68f6f07 a76cde9d-07cd-4289-a8e7-47a2d71bfa70 f1678e34-a316-4bf9-acc9-6521b7ef2a24 adbcafa2-469b-488f-b4ec-d8f539f6e927 6e3e4cf2-e1d0-4a4f-ac2d-d1549b738922 eac71f88-9aac-4232-9702-9fd49d3e5fee d9762d91-917b-4781-b8d9-24c7e7abed3f 8d488512-b6c7-4984-b783-648a71618245 fc1d5836-1e8c-4f48-9fbd-75cb55953178 7ab980bf-a292-4064-923d-1322ac411708 ecde3217-d0fc-4817-a5ae-60cc3885050a a72864ce-2609-4c44-89c6-8c8ef80e3a99 06602acf-acf3-40de-b9bf-b4bf4481f30b 2dcaf6b4-9f8d-4d1a-a8e7-1c932d57a5f8 7720e56b-f055-434c-a01d-f83c9566108f 15196768-cc28-43d6-9857-26c5f8368aac 931a557b-db30-485e-aa67-32527115fcd4 d2d2fa09-286c-458e-9ba0-c1331f12105a 049c83fc-3b37-4b97-99eb-cc64beb35cc6 38575809-0870-4a1e-97f4-80907caa10f1 4958f19a-be42-4d0f-bb68-5da70078dd93 cbf07703-06f6-4842-952b-efa9f29401c0 6da43133-d910-4034-a7f7-8d2cc6e43241 5945542a-4926-4e4f-91af-847b20754473 43a3fe95-0fd9-45bb-9ad3-59f079002695 c4f035e5-656a-4c3b-a525-df407861117f e951c0ae-bc1d-44d0-b02e-5042d1ba4580 73655ab9-5d98-431f-b33e-8f6fd87b256f 623caa1c-524e-4204-b7b9-2bf3fe6a5705 a334265f-d605-4696-942a-def5cd167898 81a19b71-7567-43d3-8bfd-5f481284ec7f d43850d3-ebbf-4de7-9f2e-ee8fefb594a7 0f25db59-b89f-47c4-91e2-76ec66a6b40f 11654e3e-1fcb-40c9-adfe-0c683520a067 95b6228d-64de-40dc-8874-22dc57aae285 b2489843-09d2-4fde-9d14-231bd79effad a0deb2cd-ed4a-486e-b9e0-dab4341416e9 4677d1bf-2fa5-49c2-9d89-3ce88cf85d5a c435eb1a-2e84-4a64-a2d9-325e26a58172 af445a24-4b24-480c-b0c6-be4b98dbbf64 9b6a5078-bcd5-4c8f-92f9-3b49e19998b0 ddf45821-cfb2-43b6-a09e-d24e23eaa58a 2e9a9687-d1d0-49fe-8d9c-e227dd75877a eee6a12b-1126-4eca-8187-19ecb9a27448 895e3400-f687-4ca3-a071-ba28f027970d 6a6ccc8a-0725-4c3b-b689-06e7e4a65193 c1f73ee6-d393-445a-a9b6-ebb2dabac9c7 37de971f-3c9e-4e71-a959-6cd0116d6544 a45350a0-384c-4ac4-a79f-d944f3184c78 94819398-24ae-4d3e-8a9c-8b5c10e63fae e51414cd-5843-4d1d-a00e-2de54f6bbe5b c02e79a5-4704-41b3-a987-8c76d1d29899 a2d7089f-a784-4983-a6da-b107be7336b6 3938f4c7-f7c2-4ff8-b85c-520621c51c7f ed3d23bd-787e-4f00-a0de-fde17b661553 791f01d8-b25e-4cf3-8206-a3e1122e2647 95f12645-b3cf-4575-a694-c62d93cf1aac 8e5cc701-80d6-415d-ad3b-96e24911c686 c42504f1-e3ed-466f-a418-d07c8d684cd6 44c9865c-0018-4d17-a1bd-2bb6c826129b 4f2abbe6-1456-49da-b3d1-aa040376048f 43620c17-8972-4de0-9b80-09ce5c2f9c9c 55e8f492-96a6-4eba-9d5d-b657e4831a77 c9ea2842-ee93-437b-aa99-2ec7671b1f59 1097a447-fe6b-490b-b096-d9f313cb51d2 655003a1-f305-4020-8743-2b2e1f5ea5b2 33e86f34-ce20-4003-aa7b-af4eb82defc6 7ade16f1-43dc-463c-b87f-e00e921069c0 6d73de70-306a-44d7-941b-6c5bc2320eb5 2fae5a60-07ee-4f91-8cd1-c07dc39dc2d5 19f4cace-8e99-4e1c-8863-a0b710a3ad55 86c13a99-2cda-4552-81b3-858f69bd68d7 8445d2c9-53a1-46db-8e02-a935c8c5a989 dc7335e9-e327-4dcc-a864-e32aa3592e4c cec5796e-ddb6-40fc-98ec-8d86188fe14f 2403dec9-4cea-49ca-865f-03a1529136cf aae5e15a-3d66-40cf-99a5-d08b8eaa8917 55e48e18-c8f5-4b07-955f-323b48f18a3f 2b3b62e1-025f-45d0-bfd5-bee034727c38 f1e7c390-2219-4b73-818b-688863b49d47 d8110afe-a219-400d-b466-ba355ea93b0e 67e42f60-ce4d-4c28-bc72-256c2c33956c cf4cfed4-8c12-41d3-aea0-51b78fb8ef08 c50a6ea9-97dc-40ac-987f-8b5a4aac1f6b 63a7005c-39d1-4b3c-b449-31452445e32b 8b220981-34cd-4b02-962b-3e14590f2c90 e70e521d-6c7f-4fc2-baae-4c1156e130d4 6dac616d-97d9-4e13-8af8-1b16c1038958 05e86a23-92c4-4959-ad69-1ae0f8aac373 d74db0f9-4e8a-4e9e-89f8-716d836d781d 943e24f4-92a3-4a15-87e3-3d69d10269dd b1206645-5938-4458-b11e-2378c284fcd1 2a149952-d724-47a7-9b7b-926e0bc17ef6 d9a0a95d-ff25-46e2-9235-602b3d512e60 4919c332-b1d2-4dd7-b994-75bb8df0d008 1fddc3b1-9ae0-459b-bc68-3fbcf41f28ba 17507d40-b1eb-434d-aa36-47ff22be97d5 01e48b61-e9ee-4d7e-b7a1-96a586e7e063 2e77556e-89a4-4325-ac13-b7c347699e51 bac2c850-1290-4448-82e7-8aa45f0bee61 166b5d51-3547-40f4-a80b-e6ea4ebff676 19a3d499-9ec9-42a7-b765-62f7aad7a5b1 448d2dcf-4a71-4164-97a6-5a0059cdb828 9a2cc2ed-088c-4dcb-9c18-a3fa4e3069c3 3913fb43-6159-4943-8f87-8763ef2daf6d 249af2ab-b0f8-4c06-aaa9-e9536243aca3 ed69fb56-da64-4de4-aed4-8f38d4fb38c5 f4fcedd0-5803-4f01-a153-cf02b201ed32 5e3c90d7-6dd1-41ee-8559-b286202cdd78 a5734abb-4cc3-451a-965e-ce3eb3b9641c dec17186-8ffd-4a72-8bff-523844804c5e 37c93448-4912-4934-bf41-bbf055ee022c 0b461a46-1025-4bb7-8b10-3a37e10708f2 80d9b305-5be3-4bc9-97a4-8bb454b1c7f2 6d9c30e3-1fd3-47dd-bc20-b8f42152405b c2847ef7-43ff-4ed6-891b-2c48c3c503f3 4d6f4e1f-53af-4cbf-adc3-b2f71ceee99e 3ec8a47e-a696-45cb-9be6-3512bb64a1e9 1b32574e-5251-420c-8553-f1143fa78d92 517f8fac-5855-45df-bc38-71084edac033 7407963a-5d1f-41d9-ab77-b827d579fbee d9e7ffd3-9627-4da5-8946-d78be1b61d02 48c8cc93-54d3-45de-a01f-73488cd0e4a4 b6ff537b-98b2-4b54-a96d-6536eacec57e 8eb7e2c2-d42b-4953-a0f3-e2cc53eb9547 a3a7e169-8721-42ac-8749-7c02f316cbaa aaccdd64-ec5a-4a8b-b96d-895ae9af8b15 dd037a25-c5b1-470e-b753-0c5ca90696d9 9869e35d-8d5d-45b6-ab02-9cd661038189 fa383f19-5f10-4bbc-bdf3-cdaa34bfd236 cd58efc2-0af8-4e58-b0d8-96ad0d8456dd b99f7c6e-4e25-43d4-81cd-10e5f4b47eab 7b5065b7-b3b2-4322-8b05-600f0f56a86f 97f6102f-903c-491a-a09c-dadc9909e71a 7d2cd6da-de94-44e1-b144-84d0d99fbff7 6e8138c3-2933-4511-a7d7-bfbf52f3a36c 46247dcb-dc8c-4b5f-b258-ca839f1f4294 8fb95072-43e2-4d02-a2df-74c8b02a5f9d 6bd38c2e-5773-4f2e-89f8-240315e1dbb3 5ef84bae-ea9d-40d1-ae5d-ced12dc1d7fc 74dc2922-7670-4144-9e7e-e6da10bb07ca c9affa03-ed97-4dd9-b382-d6f7380739b2 64c0efc9-81e4-44da-8344-1e8e4d6c1ba4 e541c1ce-e28a-4e74-af66-ec538b7e5196 6b0cca4f-9ad1-4a16-baf8-9252ab9308e5 051cf88a-cc0a-42cd-b0ab-785ec18714b8 4a25c62c-2448-436b-8b38-ec00de0b2b07 4c1703ca-66f8-40b5-8797-89a9166e85cc 5ecd06ed-3645-4af4-ba97-1f6a3e8faf29 fb32fe6b-55be-41dd-a828-538863b803fb 4795179f-d85c-49bb-9117-e385e467f197 e94c69e2-89b5-44d2-b39f-e8a5e31aaf4c ee42a586-4621-4f5a-b4d6-26c195742493 8b73bdda-96ef-4f1a-940c-350585c5111c 0ab7d0e0-7fa5-4c93-adcb-a97a09ec9cd8 a0bf3ec1-589f-4772-bbfa-050266fa528f 552b5ffd-9e80-4b4d-b20a-a94ab8c9a069 b46514ee-8c2b-4ccd-9258-c754c1853b07 d6b9f573-3705-4f35-a314-7f6b3c6e5aa1 5a99270b-23fa-4018-bee1-e106c8a10672 1f9881d9-944b-41ca-a90b-6c56db586848 916fef23-8d31-46c4-98f4-5414b31e936d c87bf888-0769-4710-93c9-a2d77ea18ba2 2dd33574-0167-41ac-a92a-5aeb0971b8ef 7ec92f0e-3b37-481e-837c-fd443d2011e8 fdb5ae29-ae22-42a5-9e03-d958c2264be3 1df31a83-f355-4394-b91e-d8100c371fb9 391432fb-5494-460d-8461-8e9fe2f40290 f5b04868-57c6-4f28-800f-90ab96ae1346 082a31f2-ba65-4e20-86ae-308a8c5cbd9b 3294d906-9537-4d7e-bef7-447ce992bdba 90bd853e-3db9-42f3-8889-cee188277f67 b391ed44-0303-4009-8e5c-e9b81dcbfe65 547f52d9-cef9-46bf-a320-843d3d39686b f573e0a0-986e-4757-9295-603b5bbb08af 933aa159-b582-4881-80b7-997d83c0c796 244bd7a7-9762-4129-ba53-dd3dbcbe141c bf75da11-4a98-4d0b-a3e7-25eeed0a1c9e e245f262-c2d6-4b0c-bc16-439f5afef431 e80093c3-113f-4be5-9e64-f5971f1ec4f3 8af9e125-20c0-4ccd-a80d-1417ddad10b6 abe986ae-196c-4831-af5f-15b5f8ed373c cdcb5765-fa54-4140-9f91-96312ec3a38b 43238624-a5aa-4e9f-8b2c-79f30436d5e1 3f6dbfb4-38a5-4fca-9256-8a1aef9cf0d5 6544394f-bb7a-4dfb-ab47-82b07788b007 03bb63bb-5260-4063-bfaa-bc0e0503c874 be7c5662-2003-4da5-aa23-cfcc124c83f0 eb2fab99-dc08-4915-8290-4de38777b156 134cf93e-2945-465a-bff8-1db06ccea8c1 f4a0c329-e916-40a5-b265-f920f10e94e3 5135a2dc-3a47-445f-bbad-ab0a68740276 55a6f8be-d172-48e5-9844-d52d4b88ee98 2f8e2915-8fd5-49e5-ab35-871837215f4f 7ab76c09-5949-4e54-af13-f521bb4656d1 a7e0379b-5c7c-4359-8820-a92e3e2a6222 fb66eca5-748d-4a53-9e24-d4762ede9a32 3e61549f-8cde-40d0-a10a-1986c7524ca1 649c9dce-56a6-4d54-8b66-15981876287d f2b1b9ed-0835-41fd-87c0-a4b0fac664e5 cc929033-7c95-4954-a17d-940fc73e39c5 037b75ec-30b8-43b0-bbf6-0f76e5c42b2c 7985437f-a2ce-46fd-ac76-753f18ad513d 79630d95-4e1b-4c0a-814e-de12a6097c36 cb421377-8a7a-4b11-9a30-73ef48b08f28 7e4f9a27-5092-4586-9548-427c6c8e3661 d3dffd76-65a6-46aa-9bad-5cc9edc26656 d29ccf85-53d7-48b2-aa8e-ee535205c25c 0f820509-9c99-4877-839f-0d4937d63ce0 70786fc4-7047-4088-8dd8-91d520eb81e5 2a84d890-010a-4d86-929c-db239d00e78a 67fba1a7-9c33-429f-bd04-9bb632e4eaaa 75013515-e8d2-4317-985f-0fe583f68fa3 87e74944-8f68-46b6-bd2b-ec95c307db12 e1279d70-c496-49a9-8ffa-89caaaf4fcd9 b4be0f5f-f7f8-4025-a6a1-d760d49629b6 a4c66d9c-f639-4334-a251-495d1599e6be abd6ddf1-c448-44a8-83f9-801188a34c0b 0450530a-7fdc-4b6c-87df-518ebb01071b 38762589-7d7b-4712-aa13-fcfa057a640f 91905157-9bb0-44c4-a66d-a7d5053941e9 696e5fbd-133b-4401-a0d1-17281719ad6a a199db06-f182-4bf7-ae6a-ee3c60778510 2eb20e85-1cdd-49d0-93d3-3b18c0e17b8d 77394559-a312-4b15-b81a-4f12e561309f 88f18959-5238-4cb3-8236-4509aded5809 1a57bf2d-b8cd-4de3-bd06-8217c890a7dd 46efb45e-074c-4dcc-b0c5-be5d3777bdea 58ee9131-f6fe-4a4a-b4c9-d691e40786f1 3cd3a31d-b59c-4ce8-8e2d-b21022c7cce2 7234dacd-8db2-45ac-beb7-8e67dd843afe 5cf16b70-c289-4ace-ab99-c9b102f4baa4 4cc6a13d-ba4c-4b29-a3f6-874ae52526dc fc5a4c32-6862-4e74-898b-43765f8d0cda 1bce7502-da19-440a-b19e-63932ad353a3 5d7ce867-9269-4e93-b97d-0e69668be0dd 3be57467-8bad-4f2c-8c11-8e5f270df7c5 6b81a750-8f9a-4c95-893d-db052b9e0cb1 4d641444-f85a-4a0c-95b3-67d29fe44bed 5458dd04-6918-45f4-8c70-183fe9906eff cacfb839-9c1a-4c04-a4fe-181f2e6bd702 d91e5fae-7876-4073-9f4b-cb6dc15a7450 4cde32aa-0e3b-48cd-9db5-69bd514262af 8a7e98d5-9043-46de-b8be-f040b07a4761 31cb7d9e-ad70-4280-9530-679a278619d7 dd436223-2d2a-485e-a5d9-24af9b017d11 1ba069e2-5739-40a6-893a-60efd604dce1 d8f404e4-03a8-429c-82eb-2b9b0744f750 dbf8ebf9-a0a1-4b22-91ab-fd1fda5467a3 b9e8c777-d4a6-4529-9c57-7df141b55b6e 86f9349d-2404-4019-a5a5-a865cf5534c3 bfd22020-6c5f-4d31-abd1-92cc7192d0a0 81f8e708-6bf6-4b5b-ad3e-14dd5155c658 47c5296b-9fcf-44c6-9d31-9d52cc37050f 16f84d32-d7da-4c20-b9bb-e5577e161298 9c41917b-4580-46e9-8f93-dffad6b28c67 a57806dd-53c9-4e6e-939e-6c6f9f28c383 5981e40e-8354-4c11-9db3-a4119984723c 82d0149d-aabc-4221-a12e-a5f21052b700 8e40ac73-4139-4028-8cb2-b220ba12877a 308a40a0-d924-4d33-b988-25efc5cdbbba ffc9d981-4a0f-4679-a2c7-8f4a20a1ed28 f63165a1-671d-41c7-9c76-393a8d03507b 5bbdd9e2-91ab-418a-b0eb-0dbfa9cb03a9 6418b918-84ae-4ee5-8730-6d1c31d5d00b ff7c7565-1c2a-4621-b902-6d32c6f106cb f328351e-8b8f-47b3-b7de-6028278c7199 5bd04846-de93-4324-95cf-257abcc9526d 77fe654a-7a37-4960-bba4-5880479411a7 2d47d296-2e1a-44c0-a06d-a137cad9fc79 a6ffdd45-c2e2-4ae2-89ce-536b4dba1634 76b56795-cc5a-49b5-bb66-c7c6df935ab9 ef653a96-a10d-4c6c-bc4f-0bddf892e58b 3bafcd9a-32a9-4455-b348-11fba5cd7df0 21485d00-918b-4103-b2d7-9fd0272a659a 7748e657-718e-4a4d-a199-9a117f45034d 96fb5062-9726-402d-b795-a9ad5d682245 8a9350b3-3427-4134-90cd-e0f442e57227 42673515-b656-45a2-90dd-b20534fb3f03 81397846-f9ac-44f8-8e39-b8e67578a3f4 cf1d9266-e614-49c3-887e-8195415aea67 a0ebf85a-a89d-4e83-b4b6-0ba5b62b4e3d 70d0db08-f79f-47d2-8362-3192709d113e fed7c5d2-e90f-4f9f-8102-8873c1537ceb 6ec07a60-d892-490d-9734-a45d60c13177 669f6f2a-c226-41ce-ad0b-4170b5228f35 7960ebcd-04ed-42df-b74a-43c86216ceb7 4093bf28-dc25-4fe8-a53c-3204b0400f45 0ecbb429-0a1f-41b9-bb85-257c89d593c6 4f82a195-2c9c-4421-886f-1cc5a1210b7e ca402050-ef0e-49f4-8329-7410f0ece4df 226f0e57-eee7-4068-8588-79f40f283dcf 098f8958-3c71-48f5-bf0c-ed0c8fca941c a11de6b0-bd04-4808-a4f9-a063c45e4c91 4efdd53a-cee9-4002-9e7c-945f8558cb25 53061575-1c0c-4a73-974a-ef514760b0df 7b257f6b-a3d8-4ed7-a66e-693e84ee82d3 d1d5b477-a034-4e5b-ab7a-279c1453e23c cd897ef0-0866-4798-abae-0754c9477ff4 6d8fb02a-7a9b-4356-888d-b191ed1ad488 92863f6a-cd4d-4ac5-b592-a79631ecee30 ccd09d12-72cc-48a4-bcfa-4a6555c580b9 d88cc79e-37b4-4bc0-a11a-d6b5758cdea8 28661dae-c2b4-49ec-9e60-3b6b5a238046 ec6d7909-2963-4453-815f-d1abc3f3d5fa 05c2c076-5a20-4d5b-96da-edfca3e8d07e f0ec9c0c-dacf-4bb4-9a19-d3a161411a7f ea3cb537-a961-4085-a6bc-5d1f72a14623 7aacfcb9-86c0-4327-bc13-bc51e1b61dbc 4fba77ae-6d11-4335-a82d-813914688ac6 6e2d5409-24be-4a79-8470-30691aa9c307 089a9208-5e00-4859-90c2-cc61cc3df669 faa29105-ef23-4099-9ac2-f4b8ded54653 44490017-8033-46ee-b577-06dd90c20767 63d956fa-295a-4823-8518-e26f6983de96 f5d69a56-bd02-4b72-b448-9797fc2929c9 1d82570a-5ee2-48e8-a45c-3bbb90c9138a 0c09d1f2-14ce-4082-8f0d-c4090da2bc9f 5a7ef3bb-b15f-4cd6-8b40-4a1b572f2a87 f2bce6ae-023d-45ab-acd9-b6f173afc68a 1f419fdb-d80c-456d-b5a7-57e60ce92579 5029f285-fb35-4cea-aa81-444afc3fb50f 3f10fb32-f8d0-4237-bd2c-370737fdbe13 f1a85364-2a62-4e88-98a7-5b5819418690 b779da41-bc7a-4a30-9e55-b37fa00922f7 4dd0e8cd-0595-4c1b-895f-b7faefa744ce 29c930c1-8ede-47ce-bab6-b5fa69a0232c c78ae1f8-f87b-4ace-b0a2-b848667e56ab 7566c7e4-9a9e-4491-9178-cc496d50042e 2605f77c-0fae-4310-a027-4a26fdeb98f3 857b396c-7e13-427a-82ca-2f4a69b30e70 d403250c-3b6b-476e-93dc-82c3b11beb83 866813e4-57b4-48c6-9195-327d578d9000 7b396129-dcbe-4455-9465-73478f110643 20232a54-90cc-4168-bf00-c71657f97c1f 00286830-cd78-440a-a41e-27bdd2a8fdb5 09245ea7-b467-4f72-bb1d-12a196c091e6 faefda20-506a-4c53-8b5e-4446665d101d c506f929-d2bc-4f31-ae64-8a53376134b5 0ab4aae0-d189-4daf-9275-e5641af01eb0 dacab989-19a3-4e70-85aa-8545aef07027 236f2c2a-2a41-4e09-9091-5f1c27abb706 bb9d4f92-3e11-4429-b4b4-f9703f01ab97 6805ddb1-c95a-450c-a8d5-85e6298fbe04 6e75cafa-e807-4d30-8430-da9d431ce383 ba002775-58d5-43b8-843f-dd7faa2789c5 34f04e82-86d5-496e-9eeb-675e13110c37 40263791-51d8-44c6-88aa-fdfc2c707b31 7d3fbb40-a3e2-4dda-b155-7cdb2b4ed799 27ceef72-1891-4e4f-8999-4f19c5614b7c 9b09e02f-8859-4443-96f2-d688f76225a2 186a7d8c-0d99-4915-af9d-e63e270d32d9 800077b6-0853-4dc1-8f7b-dd57f1e5f034 92db29d4-f9b4-44fb-80ad-8ce6056997fe ae48e5a2-cdcd-4f7e-934a-a40682a068b4 65cfe30d-afda-4a25-98bf-87a30c2edab9 30ab2ccc-16ff-4213-88d8-fee240fb2180 205700e7-4e6e-46f7-a58c-5d646a50f5f4 74adb4e9-3521-4fb3-9bdf-6d3e91587239 0c9425b6-3d07-481e-be12-263e7d644760 5b3f54e8-0999-4d56-879d-afb630e3204a 916fe603-9955-4a87-b11a-f40f7da54d73 3d8b8599-e505-488c-9545-198afed820ac 3088a9fe-02e4-4027-b332-da140a316195 ef60daee-a2bc-479d-8283-6717bac3cdf3 3cbdfa51-1ecd-4acf-8d46-188ff0044431 6558aee1-7a9c-48ac-8065-ae0d027ad296 82647dfe-a139-4fb2-bd79-8a5dfc1c910b c8ce34b3-1146-46e2-afdc-7287b9a8faaa 7ae99764-5cdf-40be-b04d-e66720793829 cbd4c1cc-6671-4083-b8f0-d98f42478173 044b0d49-ab65-4061-a5d8-78ef5e423073 fedc6bce-c125-4978-bef1-4ca5e4ecc3ab 5f61cfdc-aa52-4ab2-be49-7141dfae2728 1792f79a-a6ec-435c-8fc7-651010a2de69 77aa71f1-0132-4ef2-911b-fa4e90c046b4 9ea1004e-f1fa-4606-969f-902f40cb592f 2cc8458c-53b1-4179-ba98-4732aa1d404f 17a92c3d-babc-48bd-be08-caa84a3c5a37 73961524-36a4-4b54-a446-a167d6961679 a0351165-2844-46b4-b4ae-a487ebb85a4d 6d842695-eef1-4cc6-bc82-3bccea4ca873 b4a6bb95-7b95-4305-b9da-765bc1416e5c d6f4d382-80d5-4bba-816f-807914daf806 65ff19a4-0f1b-4b71-b422-aacf41717417 2e956775-1826-452d-a909-f53aff316c0e 5e9dd7e3-f5c0-49a3-b00a-4687b7180c89 e41478f5-f69d-42f9-bdab-9766dc5ebf3d 000d6fea-1f83-4eb3-9f62-709e6caf6cc4 9eb0baa1-bc89-4a5a-a146-7fd37027369d cbc0fa06-8294-4966-8e36-dd8cd70a55bd 6363adeb-e988-4997-9752-cd37a4dde2fd 7390c1a5-4872-41db-8004-658e05870b4f f70918b2-2572-4bcb-b10e-4cee94701872 aea46246-dfe3-4094-9430-7d72cab478de 8a3c1c9e-780f-4725-b6d2-1a425bc48be9 9319aa91-911f-4719-ae69-01b1dc1282bf 1f184e42-4cc7-4b6e-b9fd-93f572f6bfa6 e8545be4-a6fe-4c60-8006-544e34fda6c0 a402134d-41da-4c1e-bf96-94790d3eba6b 86f7dc8b-afb7-44e7-9484-971db0d45366 2a7ff2e3-4a86-4388-a235-ad5b55402c08 27298849-481a-4848-9f9f-88235b8d98e9 b286f224-9656-4698-a3f7-50a33866c698 a92e5456-b6de-491e-b540-9f1eb0792001 273d82ca-6afd-4b97-879d-34e40b1ac66b c22ceeba-5099-4068-8538-d4227a22cd13 083d518a-8269-44e1-b55f-9d18fc52ed74 eab3051d-6937-4437-b52a-8cb913f4544a 2a2cbbc2-f837-4179-8c9d-b6f54d0e71bd 956dd3b6-82c9-4e86-998f-9a9bb2bd068e 3179692b-b0ba-4683-8574-5e27c1a6ad21 031bc5c8-4f7e-45aa-b0a1-6e7c1d4bba22 d1a7a5f2-b17d-4f95-b461-2b901ad1af71 d67f091a-5f52-4ee4-91d2-ec89df23e254 c023d94f-8fc2-4e0c-b502-3aa6bdd5ab07 79b6a9f9-4767-4173-88ea-04cb99d4fc97 d76c4374-48f4-4f31-961b-a8991e2bad37 565095a5-22d1-4f25-8269-a019fa97ab6c 15d1a788-1fa6-41cc-aa3f-6628f4ba31b5 1f506753-a1fd-42fe-8f3b-dee88b59bc84 82b28823-4b50-4b21-8252-74802c6cd1b7 e2a0d18b-95b2-4ddf-830b-f5697db52dd1 19ea2757-2785-46e3-8399-4bb5c0b7af74 ddd3298a-9d46-42d5-be71-27fd4043241f f36887da-b459-4a26-b727-f9813bb1a9a1 cc8fb62a-22b3-4460-a11c-b04fe3e4c2c0 dd5b0775-6b35-4597-bdc9-d423761ba2cc 4ea61e81-7139-475c-be06-24248205aebe 2c9206b3-0192-42c9-ae4d-a2742f136b66 4ce2bbab-49f7-4e5a-8f10-9ffe85002ea4 f1961d17-de04-401d-963c-c7777dbe486f f224a250-506b-45ae-9970-5ea3ec907d6f 4bd23455-5551-400f-92d8-b3bf8836f208 211a958e-dfe3-48b8-ac22-9433cbf9acee f094f087-a01f-4e38-97cc-62932d02b07f eacb348e-0e07-4c31-bd32-baaeb4eea830 96a47d50-2b06-4dd5-95f9-5e7264387aac 1c5f13b5-04f6-45d8-af42-cd78456971c9 e8f4b05c-f022-4b4b-91d4-9a1d583ed73b 21d456a3-3ad4-4de9-8692-4229295e0060 92bdc31e-6c0e-47da-a6fb-3ca5522ebad7 381d84af-2d20-47ab-9c32-5bd310950dd3 b8ad76c9-14c5-4464-807b-34548452f06e 7963f4b2-7630-42fa-8b6c-e707723bfdff 57d374bd-3bb8-4164-86ed-3f3a858ad55d 9ba6a192-037f-4841-a343-3bbf972ad38a 141d98da-e7f5-44e5-84e5-4ee54b86145a 24363413-de2d-4510-998c-e3e9b3801f71 828d74b2-ab27-4150-95dc-62660de5ca29 860c6883-b4c7-4839-aa98-93a563fd1df7 53fc6ae4-b884-40ed-94c2-47d9ac0df5aa 4fec314b-0158-48e5-a280-430011213683 3e22d836-6bd3-436c-9d85-e890f1481fea b67bf209-1298-4f2c-b078-2607a9e7ebd4 db153e71-b2a8-45bd-84b8-63ba81c01a9f 31602ad3-6756-4f96-83f8-2c07ebcd4c79 53c4aa4b-621b-431e-bec4-84048939a20c b8f0f5a2-2fbe-4729-bd79-ca620f2eafc3 b5409e05-20e8-4de9-8941-10a9d4d39df4 52a788b6-9ae8-4c2e-9574-c444e63159c3 b0d92e5b-2557-4f98-81d9-041f2f409c6c b677cc55-1b25-436d-85d8-cc2a271b04db d29d402f-c4b7-4e35-bf22-73014ff45e60 c6ae69e9-2c20-40e6-be8a-ee184febab15 e840a92c-0f50-4d99-aaf4-3cf63a15e6ec d4f59926-3ceb-4f3e-8b05-a2d9b5ebc68d 2a87bc92-e327-4f92-8a3c-a4404241288d c85ea02d-1015-43de-9d32-1fa115b6dfe1 9be4c832-661b-400c-b3de-05c87c0fdaf6 f614a6ab-e367-4e29-af71-d433f284a79e 87c7df9f-cd3a-47e0-8d26-b905f57e70a3 83d70e34-e9c4-40b8-a63d-6dd2e83a416a 8cda5ba4-5793-44d2-b08e-4c4623d3579e 3f0602d4-582f-48f8-96b2-f6dbc410160d 470e5eac-839f-4de6-b638-3f24e5bf7e2a 2d27cc99-ea55-4ae9-bd51-b0a84a5ea675 4d454626-fe33-4d37-814f-77e9ba284553 ca128f0a-2f4d-44ae-a7b4-40f0c86a86f3 33bd6dd5-786e-4c85-b0c5-e33a3f3eb2f1 e7c9dcd2-810a-47b5-8dae-e67e6777a157 cf35cc74-6548-4619-9d12-cdcae90dcdb8 aedf5d20-8449-4c1b-b162-153cc269deb4 10f56d13-f2c0-439b-9ca8-7a9cad2259c2 4d4a1520-990e-4332-ad00-b27cc9784229 79aa15a6-28cd-4e04-b0c6-639d57a6b5ef 22b87430-2c0f-4c0a-818b-69596e84ec51 85d72db1-6c7a-4e8c-a8c3-47762d26e2c8 d4533c25-35e7-4407-a213-f8a9e051428f 16a582d5-e96a-49f4-9270-5b4ac6aecb96 406ad52e-84db-4680-b635-4226d774a1fc 667bf332-11d2-427c-a780-8c19b0015d58 3604ebcd-b9cd-4c17-8abc-f7cb630496f4 09a1d957-956e-4a88-9888-e9d79a1d0fd1 a1e94524-9d86-4ce3-9429-1d03fd0d91ff 5280dc00-5d83-4229-9597-7f62f59b64bd 580fb542-5880-4975-8c28-f4907ac87b0e 2a1bc5b4-e7c2-47f9-87fd-538d765510f7 335e7ac5-5804-4443-a1f5-6a40cda5eda5 cac8a27c-a185-409f-af39-1eb3893abf71 34bd561a-6c7c-4484-8331-37f510aa5c6d 65ee53c3-6e3f-4dc1-bd3d-d78fc5ee61a4 890483ff-d9af-482f-a015-655344ff0a87 a9fe0e78-0adc-4e36-9629-ad63b2d62729 9429bab9-1649-402e-8e34-0d6950b4b2f8 2f2b53be-b59f-4ddc-a535-7e37e0d73648 f9e6e190-dfb4-48d7-976b-05696a4bf00d 9bf943ac-8e5c-412e-b18a-a7ca4dcfd4a6 4a2b585a-1689-41eb-bc35-980b53969d59 be0c6604-1991-4fe6-b043-96d81db7c93f aa7165fe-7dbc-4aec-ace9-c337fa6c3a51 babf819e-d32b-4cd6-bb10-aecd0a8200c3 a1332dac-d7c4-4392-bec2-d205a2113372 5c40083b-3a24-490c-ba4e-f33d62d78f0b ebe6b698-5563-4dec-ad00-b17d35393d6d 0dd71c39-a06d-44a4-9900-289d51eecc7a f36827f1-e248-46e1-a342-ff44247eab07 882055a1-98d7-4d0e-a8b4-61fbe987f70b ee3f4187-9318-4d8f-b9f8-a29f94deac36 e6b95330-026b-4c2f-b059-8b46eadd7ce1 15789720-aec0-4914-9f4d-da5d469531ca 2e40d5d5-6f9a-46e7-8521-94eee3eb4975 7e26714e-ba13-4076-bb66-d1977c1c39bd 6a2a393b-5956-4ff4-90d6-da43dac55ea7 7a07ea73-302e-4a8f-9c26-5ced0f1b834e 0f3feb7e-8735-49ee-be66-ef352113e5d7 0f437035-afb8-4b93-9c3b-3a0c993f2626 33f0fed4-42c9-4041-9c26-7da80f69fc89 33606d16-e0ca-48ca-8d51-034905441c9f 6154f97d-8dec-4efb-870f-26c3a750c51e bef52930-7563-4573-a206-eb2cfc348cf6 74d19b91-3fa6-4065-b83d-982aa50cd023 f42d6619-c187-4b3c-95e7-16e28ed1fcd9 b78b4bcd-e415-4891-b880-83d63291731b 01f440be-8c3c-40c6-81ef-1827afc72cef 8d240a78-dfc4-478b-8114-1a63c279237f b39d00d3-07ba-4e48-81de-1693fbd08297 41b86eae-aa8a-4e69-b4e0-43ab08cd4854 880e0745-5428-4b2a-8b3b-d15fe9471fe7 ce0b2b66-44a6-49f1-b961-5aca0b78d998 72863dd7-6081-4aeb-a781-042a5b9aee84 d90163b4-4110-4bd2-9d9a-d3bb24335599 9664e056-79fe-462b-baae-17242dab4a7f fbb3f710-05e3-4802-a89b-167fc1001fbd 11fc534e-bb26-401d-993b-bdd0a51fcd54 024b3ccc-7ded-41ed-b2d2-2931057654ea 64a9c236-d7be-444d-8993-dca8d82eccb4 365f0412-97bb-40d4-ba6b-2f6194c46131 be68dc2d-e1e1-486e-89d4-766513e0ab5a 4bb14d79-49a0-4ecd-8a4d-00f592965ed2 035dca4e-0cee-47c2-a1cb-e5ffef52c9f1 376e2f12-ab5b-4fa8-8f9d-f75b6722bfb7 0d4a583c-d254-475e-8705-90fd8c47cbc7 58c144e7-56df-4f37-80f7-a575de044853 63828da3-efae-4e7d-8f21-e689ce1ecc62 975ba90d-8b65-4de7-986f-fd23c2de853a e8644fb8-af69-46ad-a4cf-300ec1902aeb 98f21451-046a-4d3f-b8a3-ecefddf0aad5 223f43af-e0bf-4642-b213-de4c935ddc38 0204b255-2ac4-4a62-bf4d-2bf339904ce7 792d5b8a-6e74-4f47-9292-de9283c06411 be21510d-1c8c-4581-a546-651afcf88981 6ff6ba72-72c6-4fee-8e57-56452d3fb0fc 86ebfada-c0e8-4019-a159-091854a10aae 5d04a2a5-4976-4826-bf25-ab7219bbd457 781e4830-749b-4faf-ac04-8fb87929aec1 50bc1acd-576c-426c-9bb5-ca7bed519d77 3b85a6f5-e976-4316-a4bf-40ad94779f68 6daae709-d73f-4f6c-872a-44b9c4a293b1 fde1e189-ed57-4814-9e36-09555d0466b1 169599d0-feec-426f-be48-10a1f4779e1e b0208516-3c77-4f79-9d43-2a1ad43c3be4 27b51265-f7e1-46e8-81b8-0fec07764ac2 1e9ae528-c036-40b9-848d-20cb0eeb6e05 66d8c0dc-5b59-4798-88cf-ecfefe4a2936 b0efe05e-4e95-46ea-b159-cfe2fef9740e e9b15d88-3331-4122-b51d-9e0d00930995 66244d9f-e117-4c8c-9bd2-ab914686ff15 ae0f7759-db1a-4ff3-9c7b-ba1a38c6eb8b 857dd8df-aa01-4e86-90e5-9f732e72b31e e22dd721-f3a5-494c-862d-3ad5d9d1e6a0 42f21c3b-f336-4561-8e66-be12405fddfc b2685732-c384-4d9c-a1a1-9500f831d2bd cbb117f0-5b4d-4b05-afba-cbd1070bf246 048be432-2561-410a-90ae-47e416faa086 286347cb-2b8c-4530-80d3-9ad1797561a2 adfb55b9-8268-4309-b2c2-bc5a4d77917b 544f06fd-87e4-4fc0-8715-fa781050523b e5f89ac8-e767-4c21-8f42-a817676943d9 35064099-65cc-40f7-aade-2a3ad0f59e90 59788a6c-4776-4016-bace-ec5b94901c3e d80264c4-7d49-458b-8842-038f58392f48 d9a5d913-7374-4665-9efe-9ea829cfe129 682efe13-9041-41a2-9211-36bb7782fe4c 95290c6b-bbcc-4093-ae61-57b5ba9e78b8 c5286058-a316-409e-b48d-9a8ea878db59 7e2f581d-cbba-40d3-952b-4a99179cbc02 1ec5c7bd-48ab-49c3-bc7a-fc819660de19 26e000af-bd49-4624-9ffe-827a6ce4123f 6f45cac2-981f-41aa-bec8-76ee1bc8a91d 190ac913-f2e0-4513-be96-9064e7509bd8 55432362-293a-4548-9cce-46fedb1f72e2 5b2ff02a-c525-454d-9bfd-31ec3642e5e4 e658f0f2-9d21-495d-9502-b6fdbf8634b3 83c38623-a6e4-498b-a222-7355d9ee00f7 5c20eefb-b549-4915-bcb2-dc563dbd62b7 886ae079-b2ad-499c-addd-ae465b9c041c 83f8888c-8533-4e42-b3ef-aa0b555128bb 01da8358-3898-4ce0-aebd-b5b3d4236ac5 2936f5c0-d6d0-4323-a1b8-005445fee36b 31348a9b-9d05-41ed-9800-3053d7351b43 4dbd5504-4267-4438-bd62-4f8974aca2f3 0a985d9f-acf3-4510-981c-c404a7ea603b e394023c-ea49-4783-8d1a-f9f0c0523935 33f23ae3-fb95-4785-8e59-0fc27df66a67 cc60eafe-23e9-48df-aec6-d4efb34fcc66 ed33b823-b81a-4dbc-af40-52165a5d78a0 88b16400-9f35-4437-b71b-6253b9a914be b6c97278-3990-418b-b08d-ce26ae6ea79c ee1b6ecf-72ef-4ac1-8018-076dea32c0af 7b99fa59-3ff7-464d-9a46-9df6838f8973 97294e5b-3382-493f-9df4-ed628182326d b9469be6-b547-4404-9e3d-98781a19fb35 d737e0e2-c6b9-4e58-9e15-721823ca20ca f8952daa-da40-44f0-bfc2-b236fa363264 15ed617f-fdfb-4aa2-b002-c9b0565f0e60 496930f2-6417-4625-86c0-033f6900a3d9 67321560-51af-44c8-8d32-8737e432107a 66b1472a-26a1-4979-9091-92232e7019c5 f1606933-3178-4e27-8466-9c827e744354 0c91d810-39bc-47b9-9bb1-d97ab3849e71 b03cae22-7ae2-4ed3-a1bf-8f655fc8c1b2 209ea605-0baa-4a36-afef-5d4c29de1ffd 561d9a59-e5b6-421b-af53-2c72ea4e4b43 442e5fbd-5535-4472-9f9c-dbc18387e96b 62b528f8-48d6-4136-a134-13b254bfe6a3 895180fa-687f-404a-b62a-e533d7f003f8 a9e80293-f94a-417e-913f-2da303b82365 5e3fe333-e72b-4deb-8e40-ddb4d6466566 53e7e2fc-cd2b-4e4a-aa0b-6bbd92e3286f 0c8a1f82-ccf6-43e3-a2b3-c17150aa3ff8 714cf198-ac14-4328-9eb9-eadcf645115e d74b0247-1432-46d8-9f25-2d48fd27b26f b6fc94e8-078e-482e-b410-c03424e41fc2 38d54f35-a4f1-471c-a007-a9d88310ead6 59cbb930-9106-4079-831c-8a2076dae089 6848b6f7-89f7-463c-9531-afe292ee8d3a 793354ed-602b-489f-8999-a6a54965f5ac 5dd98d7f-97d7-4c29-af68-2510a0c191e2 84007c3f-fdb3-4a5e-b0e8-0a03ae65b9ac 3ed10ed6-c6a1-40a0-a2bb-ad81171b59a5 41c34e69-d2c7-4984-bde5-8a88a2dcb4de 7b582d82-300a-4ac1-afec-318b70fe50d7 856af839-e551-4381-b2f6-3a8f384774e7 9afbdd2d-6e83-4777-83e7-ab04eb3bb6f6 7436561b-c681-4ef8-bd39-9e0af8013698 d48f0bd4-8512-485e-92d7-acd54e887ae5 ffc627ff-daa1-4c29-a7ab-2143ad028989 6c70fcf1-0962-46f8-b387-40ebb5dd0108 25d8616b-e5aa-47bc-aa25-21d88271ecb1 0d3ce49d-24a8-4320-9b30-3bc920992f65 6d1309e5-19f0-4c34-8aa5-61b8c3b21427 c0260083-6e15-487c-b4ef-ae723f5994a1 03c3d759-579f-4224-997c-0632bb580858 070404bc-7e7c-4ef0-8603-0221bcd05474 a0d9a3ca-6116-4d94-80af-ba3d7eca5199 eb212e09-17f6-4f86-bc1d-9f92321a2490 3a80d578-d506-4989-967a-6ca448544781 d598fbb9-8b95-4f8a-b74e-a0eeffc8314b 6ce81783-c864-4d56-84de-e3bfccf34bd7 2ba403fd-91f3-4a22-81f4-ba2b816eec40 6f98e15c-5504-4b51-b4b6-c9bad05a54b9 47e3beb5-0d06-4aed-b269-28aefca114bb c06420a2-b3d2-4b20-ad7f-712292d74571 1db6d31b-87ef-4832-a617-fed79e0987bb 87035c2b-e785-4389-a0eb-2bc5fd359bd8 b77f09b2-5cf2-4a93-b779-c25034d39e77 c1d957d1-85fd-4b85-8c26-7117b75a3496 6b9727bd-2c18-43e4-846d-e93ae4becef0 6faa9485-015b-45d0-b0e0-a102c1b19bf4 e2dba436-ee91-4126-b733-8fea30aacf4e aad36554-5d18-48e1-bfd0-d3d971aee115 fa4c732c-54e7-492b-ba5c-55e2024b4b7a 0e6b084f-4384-45ff-93a7-8a4d43c81e07 fdc692c3-3dfa-4406-a823-27c81bb135e3 8b590fa1-3a62-4aba-acfa-27711a0b5fd9 5f038ef6-b9b9-4dd8-bdfe-7e81cf9dc0b6 1a21bf89-b54b-490f-974d-f5721f73c13f 7f716d85-1422-43dc-900d-e651bc7a422b 43b57b93-9100-43bb-b327-0a1d9c5af97d 14697540-ac5c-435a-8515-6cb24f5de25d a213ad55-7126-431d-be15-2affcdeecfab 1fba086d-9a53-4efa-8d22-9d372d2fc9a7 6425be0a-bbf0-4c23-81e5-eab43e55e8b5 2964343f-2ce9-4af0-a54e-c6442cdb10f5 0a2b559b-0306-4250-93ca-9b6887a30cbb 3555a6c4-309f-40ae-8158-58429826b5a2 e377f1fb-5998-4f57-928d-8c1b73060231 70d2ea07-159a-46c8-b978-5cd7e4df4396 898e5fa0-be77-4ce6-9fb8-55c064cd5917 f9b5f4e9-26be-4643-ac13-cee497fd6d57 8214e86a-8478-4b3a-bcf6-9c5112d07e78 fd52694e-f045-4c6f-af80-d4a584391fa9 bd326910-ddaf-48ef-a341-48ea7860d436 5253fe55-840d-4d93-bdd8-1a51f3c8d806 b2d59d70-f8a7-4e6d-b419-c3f97c7001a8 a0508143-987b-4441-bb26-30b3a16021ab 669f7249-de24-4554-ad71-1c9a20f9f07a bbd670d9-ba78-4f73-8c91-94ba07e5f9bc 92a71217-de90-4315-9fb2-bc549ebebd19 4ee78050-12a4-4986-a57f-d313f549d4ff 83cc8bcf-76cc-4793-b959-ae8d8dd3b415 6836cf13-5d98-4c99-b370-cd6e98b0054c 3de598f9-bbd3-4572-8080-e3647b3b0169 8f836742-5a30-40ba-8fac-425400307c5e ed49c8cb-811e-44de-a68c-467749495d28 1bd0cae2-07d0-4b26-8c19-10dce44074cc f5734ab3-0d72-4034-8908-75a81658026b c799c8c4-50c8-45d1-a50d-4a8bf6db6ea3 83110178-f61d-41dc-885d-839928567fb6 3dfa8e5c-3e26-4427-804d-bf78ba8dde29 9000c1c6-3031-4903-9120-9598fb22e91a 77e1bfba-3fd7-4d60-adae-be8fe4a81e9a 8fd56ee0-4ecf-4357-8726-28e09f5bb321 6415969e-de12-4cfa-8e6d-3ae7f4818e95 103e6972-4e29-42e8-b426-8f86187287fd 723a5fac-3387-4637-8c02-48fb68c0dd3c daa11ee2-f660-4fb5-82cc-b4490c1a5dfe 96c99f29-e488-4038-bc25-90c31779a536 3639ab10-6703-4efc-bc0f-727559a6f452 4ac6ad5b-5a5a-4119-ade2-791f636db93a 9bb9d54b-eac5-43d5-a80a-5a48ca2dda68 b65184fc-951d-40b5-910a-537799242df0 9f49432b-0b14-4403-9796-2749f947cb4b 8888ef55-abe6-4539-83e3-c159ecbd04e9 45c86739-cf37-482c-a42a-ed3852de7123 4c7becaf-b088-4238-9b77-19de85b8c89b b5bfc195-1946-4f6a-9fce-db3762c11650 9ca46061-62f9-4e1f-8310-295f1283efc6 7ada28fb-fd77-4462-b25e-c9f8d90b7aef 7656bd1a-94ea-41c5-b939-0ff996e46adb 9ae79f57-491c-469f-9475-4c508ea0e672 09b90356-038f-4ba6-af67-ea1c14f1d1ad cc8f8326-7508-48e1-8476-119e5cb2f62e d288569f-4f42-4927-8fb7-ed138fba78a0 08bdb4c6-ea7a-46eb-a152-8ceebd5a5c4c 920bb30a-ee63-4b6e-99ce-dd25c9abec07 d50ece39-dee3-47c9-a8b9-7eca432f6f88 b02c910b-bea0-49a9-9545-c40a76a338f8 d0670ceb-5804-461e-b051-8ebaa033b375 a1563a3c-773c-4142-a683-48ebff63f2cd 0dff54cc-cd1d-40f4-975a-9da7642f14a5 f49f0f3a-8efa-49db-8600-23210e4f9295 5d19db2c-d844-4459-aa6a-e9eee4351602 c45eb80d-573f-4147-93ac-e4d428e80e4d 441835f1-1f3b-4fed-8fe6-b4d12254bff9 6d210212-1df9-4e65-ab45-8061a9e9bc0c 18e7e884-b836-4bf3-8957-5564d3f7582c 83ac9419-2778-47c4-8421-aceaa6f798b0 31943a9a-964f-41cc-a812-e5024d2fe910 fdcd1282-e4da-453f-b84f-3a74aa4903ea e1e055f1-97b3-42f3-86c6-3d2c7ff04411 fb967c47-3464-404a-8b1c-3efd209424a5 3634bef8-1ec0-44cb-9db1-5822d92e2c8d e7f58ac5-637f-45d3-a5a3-0dd0d09c749f 4bea97e8-22bc-4e4f-9575-94e1105286ea eff1b795-82cb-40d9-a639-046b2dadfb75 3621fd07-239c-4b24-b4be-4af50353cbe2 bb3b7106-041a-43ab-9e71-998bbfd0d8eb f68544df-ea56-4b88-b03e-f560254a6fd8 b9c66e00-c2be-4bda-ac6b-758145dcb3cf e0283532-19b9-4164-a040-38259b144d78 058ff77f-f82a-4739-939e-02770881335f 56659ab8-a726-4286-b6d4-6050522e5f74 8a15fc5d-a7c4-4b03-a0ff-53c4cd171cf1 332db829-83c8-4f46-aede-0f96d666ac30 d50a8aac-efa8-4709-9794-a384e58eee98 81c262d6-9228-4d84-835a-ddc5696d7978 b94adaeb-b32c-460f-b359-f1f705049187 47144425-5fe2-4c29-8097-f82f2abeea8a d818c489-89a5-405b-a363-61a258e2c76d d13643e6-158b-4ba0-8b07-65fd0c129c08 c11293c5-1efe-4538-8644-f8057cef9c94 118868bb-6571-4c54-8445-74d124edace9 aa900b4d-31ba-4a8e-bd7f-7f265552e7ac a64f6474-01c5-4120-8123-b4bc5b449f6b dca56a92-f4de-4314-9df6-f2301290d4e6 964eacdf-22c8-48ab-8e4b-c87b1aa5df77 23ca1a28-281b-48dc-a71d-48cc37839b50 7afed26f-8b2b-4195-b6c3-9de2dd3dde28 01063228-5b80-48ed-86b8-bc00f01297e2 4fd8e63f-0d14-48c8-bed1-be17bc9450d5 c7443c77-4d93-4c49-94f1-4bcc3e4ae956 24718d1f-dcd6-4dbb-8f40-f8a8b7bd5b9f 03c2e19f-880c-4edc-bc19-2b6b9e784206 0afc807d-297e-40ec-9da8-1a263dc7a21c 36d770ca-a349-487c-9a86-e21951d457a0 30d39b79-9421-4675-9027-fb2eb7a3f8f1 9674a174-5d7d-4851-8995-ca9941a59ad9 3d898191-c5ef-42d0-ae19-8d9b73f86fd9 911ed793-5115-4c5c-92ec-b2573491cd18 014b043c-c023-483a-963f-8f1980065080 e8c54817-08f2-43ec-a266-2db5e483439b ef5ca65a-9134-4566-833c-1d50e7b0564d 8c65611c-bfc6-434b-9172-bbb347866db1 bb9e3c24-36cd-443a-b653-6ba2fd7fc1f1 d6e11315-1f44-45d4-8bae-c3fd6b6e26c6 fb511650-68d9-4213-a469-29c32cad62ed 8f3e5a37-afb3-4d08-aeb0-34e572132ea5 5293b058-2399-4003-b20b-6835e5e90456 0c9255a8-589f-4e1d-9802-55754f342df2 e04e54a2-926c-46e5-98e0-579d6a706a6d 96612b26-483a-426c-9722-37b8f4411c99 6d3becc4-3ce7-48f5-8f1f-e95f90d00319 798564e0-80f8-4829-adad-6e149fe977ad 65b90853-19db-49cb-a2e9-d51f57c6a26f dff9704b-e172-4a8e-b6bd-9f78cd48155b 7297ba1d-7b27-4de8-b2a5-13d3693f0259 82265cf0-1dab-4fd3-a849-df1dd7986907 1e0bad97-a17f-4495-b08b-f3e9c63c922d 927949d7-2a65-4724-8696-810c09a60101 ba180a23-27a1-46b4-8edc-4a5ccca51737 9c9ac7a1-d486-4934-a8e0-d3bf3ce2c929 385aa3d6-f0a4-4964-bb75-d8f8fac05d24 884eed23-7aa5-49d7-b2cf-729be3c7ec61 cfa1ce8d-1323-4cc1-83d8-0aa026213d8b 8c653a7a-4774-4a9a-8924-70c1ba285717 1a199de3-6582-429c-b5a7-fb667c73eca6 8d83f819-cb3c-4f88-83a2-2eaa19c8e189 d23f74de-ec06-49ca-b456-f92ee9c2eac1 2f5967be-1d6a-450e-af21-329aac520467 e7fd5de0-9a5c-49be-8639-c34b123b98d8 49d3dfc4-b8a1-41c0-a8ea-d82be90ddec6 b6420651-ba11-4125-96d1-9880bef84639 fa13c3d2-7e44-4512-8ad1-5e035704a373 8408ac6c-4c6c-418e-8bd9-73d4a13d9dd7 aadee4a8-a613-416c-9aa4-f165737dd01d 673638d1-deac-4ec4-9499-3d33b9423ae7 86bc343c-aec3-4572-9188-56f685a5470a 187d28ab-9ffa-4903-a88c-74d369841a40 040ce1b6-baae-49de-97d4-724005bb58ef 12af0630-9b74-457d-b5fa-9b7720cc61a2 89ac871d-03d8-40d4-ac93-3ccfaa46deb6 ec5430e5-e8c9-486c-9a5d-e022b79105dc ba2cf2d9-6814-441d-8e62-3378e6fa3f7a d1adcdc3-c7bb-4e47-b4b7-75e17f024d33 0cb2594b-170f-43c3-beb4-ec02d4918e32 58018caa-d02d-4622-a448-4037ce74eeb2 95564a85-093e-4df7-b09b-e185bbeb494b 981b84d5-56a5-4dee-806d-5ef74fbd582f 8169e0e7-d933-4d3b-ab40-b193cfb7c833 68ec8843-949e-4204-a930-0eaed9224e03 31996b93-c10e-43d6-92e9-beac4ddaab37 74ef1a0d-e125-42d2-9347-9c9f5261d611 114a4f4f-6b3e-4c3e-a554-6b944ba1fde0 9e2f143e-5c3a-497f-94e2-2ef84a0011de ea66400c-48b3-48d4-bcee-68c13c3498c9 25cd6da5-d948-4869-a80a-e76d2d08abeb a6c8f8ac-3337-4196-be15-35a51656d366 1765d78f-53c9-4dce-8a52-bc093ffa1d64 09346b09-7462-4d85-8242-e04bb5ccbafb 233b8428-dc4a-41fa-8031-bbafe97b2f53 5c3c4e98-7c4f-4963-b650-a81919f1c966 2406db07-ada0-4d0b-8031-2224a41412d4 4a1cd144-f2b7-403e-b6a0-77c56d04c5bd 39bcc915-7eea-46b8-8019-c607c1069a9a 9ac71997-9bef-4459-9d45-9db8ceca6f10 fe9b9318-e946-467b-95f0-cbbac57de552 5f4bfd8b-847d-45a9-8592-cd81c95437d1 b29986d6-383a-435c-b56d-9dc82d2280d5 a7ed40f3-a6a3-4718-8868-f76c715cdbe9 d63e1de3-89d8-4074-a215-d60245552760 e4f4e321-d734-4d25-99ee-c3be7a05ab2f 5a1ac5b5-09c4-483a-89b8-d7379eeb5816 ad3f29ff-fc46-4586-9947-1c13ae12617e c6322018-fe57-434a-907a-3f0e211f9751 093c6973-15f8-4cb5-8c1f-955e29607a4f 82966be0-efa6-4052-b1ea-efb3c3027a99 91246c3d-8bc3-4fd8-b579-99ebf315e354 8c7ffd71-e904-441d-b09e-f6ebfda5bf16 802c76e7-f275-453c-8023-ff4d421d3942 f987dd08-f17c-4de8-8169-8a27ae8e21f4 3c3c38c3-15e3-4606-a547-5ae87db7d272 60c615f8-e0ec-41ca-b07e-4fe1a1522fd9 4bb4df4f-2fd5-4066-8689-a34d3646664f 37131093-6431-4347-9621-9257890b849f 98db1c84-dba8-47f3-92c8-8b9d6bddddc1 4089a491-c352-4e4e-834b-f736497f1af2 fddb8d3d-f219-4e80-9e68-a1a8d443a382 e3a28d6b-38b0-4a1d-9548-e29725969707 55dfc500-cfba-4336-a4cd-0a73cef21909 1d1c5828-21ba-466e-8492-7977fe9c3def 7a071777-78db-471d-bb63-bd082be137b8 72c16b70-4f0f-4042-b1a6-3070b1e4e6b1 683abf5d-e5aa-4a4a-bf92-bc2d147ef2f8 56f0d811-5288-4035-8ceb-03c11fcb5c52 a1df9cd6-3248-4095-9906-6870ba9736d1 891cb5ab-73d6-459b-9b09-cc04f7fe56a2 35c7a478-715b-4be2-b92c-7612c6692e39 fc84512c-19c0-4f9f-9c05-9b3750d09a06 0935046f-2e78-4f68-b261-0162e0d6f115 72cf6b4f-b75f-4d7f-b941-20ade1515d0c 894be1c7-809b-4886-a971-3a4761ac1871 c2bed1ce-6b41-4935-8021-3a1742d0331c 1c945b45-26a0-457e-bffc-f629f5371ba4 f35e7d6b-bbd1-47d8-80c6-38a898e10024 7f130cf6-a50d-443f-9a47-7ea0d24d90fc d3342f7d-4b8b-4637-b48a-35e6c26a320f b85a3808-1f1a-4c94-94d9-fdee438f7170 b1e3375c-5515-4d77-9536-d7395b736a73 304369eb-e420-4daf-b370-7e87b634c4ea 4b8fb230-398f-45c1-a593-f37f6d78b4f1 ea8cec5a-a580-4fae-b21e-05fbc73e6261 29683493-98c9-4a28-8b70-7aa1e0dfa5e1 6d04af86-9d40-448e-b596-8e531e201e14 0cbd88e1-228c-4f47-8c51-e897b7bd67c9 5b806c28-5ef1-4860-a832-685962de165a 0fcc2d77-fcc5-47fb-86f4-f37692443316 60c8bb39-fa3f-46dd-a16a-a39b6b505db7 0acbffd8-4b2b-432d-a6d9-5f38779987e2 2af6f2e4-899a-4b28-b590-95cf12ba6816 e0950b7e-4409-43af-8daf-5c82465d1eed b058ed18-f781-498d-81d7-ac3b893f292f 5d4a4372-28df-4a1b-97c8-02a49997b08b 7de002e6-95bd-4ee4-a986-d64a40dec250 99915529-4058-4b25-adc5-4e92271f4786 b8c14744-251d-4463-b173-81ec69b2c03d 8a199ddc-1033-4230-bee2-5f2172e33289 c351cb74-f509-4aa1-babd-f3257b2af187 bf95c7fc-4250-434c-81f6-f899a4542357 72efecc5-2973-4fc2-96f6-49dbefdadd01 a38cf425-2853-4337-8ae1-87e1efb40af3 3773697b-3e08-48c1-b2bf-7044d758596e 41289cc6-8ac7-4108-86e9-e4c472a3213c ff5b3e76-b6ee-4b67-b55f-41e1d2f81f76 c07a1324-274c-40bf-a08b-b5fa744b87b4 2370b34b-4963-4589-af71-d9f00072d6f4 51207b95-4f27-4da6-b7d9-dfc213681f75 c3c5d6ad-50c8-4c47-a7a0-3866b47de7aa 3ca5df28-60a8-43c8-bb6b-aef99b3320d5 546fc505-ae85-42de-8d50-3957bafb53ce d9d7443b-cdf5-43eb-97d4-1f351dd4fd19 b0818453-038c-40e1-9dd6-ed9d12aec122 138dd4fd-bf90-4862-89f0-7173e3353897 7fc48e80-76a1-422b-8b84-dd6ad700ec78 d3dbd321-4f7c-498f-a02e-8f5c3411a23b 15b31c32-0763-4014-bcdf-10ddac89b414 641448e7-b3df-4bbb-ab0d-4dbcdaf8b06b 40c03dbd-0302-46c9-89ea-2c94aa53209e c5c6b5f7-b62c-43a3-8703-263e208e4860 0fbdcc88-30f7-4fd3-85b8-7005f98cd74a c8ea23c1-616f-459d-b26b-dc72bb47fce3 7d5db5d0-656a-4ab3-8ab5-45d80c59f7af 005adf77-7068-4b1b-ad29-9596856566c5 0e286713-3f6b-4269-9ae5-4c043a30e624 f64b9ebd-5cdf-4b96-b87e-2af67b0d7fee a8341205-0a97-4c27-a957-4b8d59153dcd e19f6eb1-85d6-4815-ac1e-29a36118e93b 51d9800b-fd71-46f1-b2a0-c58aebdd57a2 b7b7bcd4-a595-45eb-ba4d-ae66c8b7fe12 95fd3c2d-c501-4ca7-bf9c-a06e97df1c42 88d566a6-a530-497b-a1ac-159784212216 d973bf38-bc91-484d-9eae-c822f0e9ced1 f793c1f5-e7c9-4660-9886-c98c7bec2c3f b277c145-0f30-4878-bb4c-4275d0b01b68 7252c518-511b-4771-b895-1e41b9b3b41f 0825a3da-89bc-4040-ad86-d33c7f067110 99775cd8-4e57-499c-a800-5515804fc063 9e764318-3a11-4c1a-9e3c-97d2e707ef25 d1b127a1-a94d-4149-b58c-5332a49a3b15 a765a3a3-3c56-4e95-9c2f-2a058253a1bf 241e97bf-d7c5-4567-945a-a455c29162bb 3424d67d-c887-46d6-87e6-4e79d20e454e 610e8e41-323a-47ae-b75a-cd75da3cdb6a 2f6d112d-52ff-4cc1-a769-5f229796945e c49c4174-4501-4679-adba-cae39764728a bcc11ca2-67be-42e7-b76d-a17bfc70879c f5381092-bd38-46fe-acc3-8c5f1754a398 4f4a89a4-28f4-43c0-bd5f-91cb323d6828 582e132c-6ccf-497e-9cea-79eb9881088c af15e5b5-3f87-4eb6-820c-926845e0d3c7 a27b79cd-6a75-462d-9638-7d1845f81961 d9233b57-9b2e-4b74-941a-f46a0b090854 c1930223-ece3-4f6e-9ed2-d8e0c5b690fb 01e8be6d-b914-42d1-a295-0f4856cf6b88 6be87a07-25c3-45b8-a451-04b60662ae9b 971417c4-4a96-4d20-b125-c602fd2ca972 2bdb58e3-a761-494b-922e-69e47f3c19cf 07230c4b-3ba0-431e-a764-af35a343360e 34f734e4-d77c-4bb7-8987-c839da727a5e a94623de-9531-409f-bb09-2bb1a55bf18f 776fdba5-8683-4c42-acf1-4874b0415c33 6e12b1a4-86af-4990-b6a8-633988c8a7ed d377997e-6340-4005-ad6b-335c0d7a5175 57c8a6c4-1791-4bc4-a834-e5ea85cd8593 ae9efdb9-526e-4056-b90a-201761bbde3a 59fb329e-1bb3-4d7c-ad06-8993f528784c 0bad539f-3c75-4b78-a776-edd94042f2c9 67d89db3-2021-41fa-930c-e63f49f7c35f 8759360c-2385-4644-bd9b-999e3af8b8ca 7961064d-cea6-4137-90a0-e6c54f7f1cd4 4c722a44-0a4f-416a-85e4-92453b484121 b61fdf7a-22a0-4bae-b76c-0dbcf1024698 d2730c90-d481-4973-b925-30580892948f 4bb37ef9-e083-474b-93e6-29156424b29d f74fe435-d976-4a2e-94d5-048ab1006401 d8a719f1-3eb9-4678-95f7-71f6676489d4 1487bcef-7f9d-4fda-8f99-6bdf10f44b50 5a531aeb-8627-4ef2-87a8-be82083f9097 1f3d72ef-121e-45c0-8d64-5f75530b093b a1de25bc-2927-4a31-b9db-cc24c2be261d c8753308-fd37-40cc-a16d-c3cff2051b34 0c5956eb-1996-41eb-a97f-de3e0df156e6 5f1dde13-5040-4dbd-bcc4-daa51a19e089 385cfd2a-84f6-441f-829b-e0374a37db39 3d450074-69aa-4932-8298-7b9eaf5c90b8 180fb34a-f06e-4afa-aa27-8335ab5200f7 74ca2220-d3c5-46f3-9ed4-c457ded4f017 8b4cfb52-6c5b-4da5-9807-28aa6248e318 32b2321a-6eb5-44ca-87b6-e149b2d0a5d3 404b1b76-42dc-4ab0-8aaf-831591eb93f2 a538c75e-5377-44cf-aba7-211de0e7a0a6 3166ad59-2add-4dac-aa39-e0ba16ee4245 ef51fbd6-7434-4194-a7d1-cf7264e06277 42f81077-f7d5-4b98-a036-c5b9766ffcaf 295a1d63-c69f-4e11-829c-b4a908136ebe 4e5791ce-5e34-4e3b-a2c9-a2c4e6d111dc 5a128f48-6a7f-461c-9892-cf5520230d4f 58a79a01-6f79-49c8-840a-33cb9a680ec4 1a97cc46-f0b1-49d5-9fd8-65477749a3a8 882f3087-7f7c-4fc2-b7ce-8a464e68541c 2ae0a6af-f63a-4681-a913-03d15c6c3556 09644e23-198b-4d5a-933f-a863857f8c79 d09fab23-d967-410d-a889-799b85c058b0 a4827050-32c6-4834-bda8-21f03d8898e4 4ec47a27-787c-424f-aaca-978e81701b3d f925d5bb-5af7-48b0-b3dc-1c93b5e759a1 25abce4c-2226-4094-a46e-29a319bee0ab ec2b7bb1-bcda-4cee-a966-a32d5e3abff5 42dca03f-0aa8-406e-800b-8ad12dc8f071 dd05fd3d-39d8-4dfb-b301-de628a14c66f 8471190f-c519-4053-93e5-e633ab7b8b0e 2c0be1c2-c6ca-413a-ac7f-84f11c36e694 2aeaa4da-8af5-4ce8-8138-9c984e668b31 acf39d2f-8c8c-4ecf-8828-7f287fc3a6c5 1fd452d0-b90b-491c-9661-5e5114ac8f65 a78010a0-6c09-49d6-92e2-cc2261a81b3c f97f0a89-c9c8-4a48-9723-714431d5ed47 be79bf4e-6a9a-48ef-9620-231e3999b6b6 13e9b413-ebff-4987-8b66-55b675af0807 6fc2ac10-20c1-41b3-86aa-d0080854f87d 7fbd0266-404a-4ddf-88df-ca538c2f3ebd e50d1903-3f48-4d7d-a63b-90d15a3597c1 db1bb880-8a3a-4c98-9f7a-910132636ee4 23967b9f-ca6b-4026-8bd9-7799360848be 49879c0f-f094-4bee-87e3-89213328c150 bbc8f0d5-9d77-4192-9166-51d0cd941efc 87b2e542-1cc3-40ac-9521-82d97cb6f412 2bc109a8-6b5a-49c9-bfb3-dfe491f25cdb dd33ec1d-8097-4d77-bb77-e87571c585da aa8ae3c7-80fd-4583-96f3-4bc4552ec77b 9eb637fe-4465-4676-9cbc-3f0b41aee68d 52f05ff0-2dc2-4a45-8c1d-3d010508a2d3 4b0fe5e5-d6a9-46f4-a538-8602507c8c94 87c0244b-1a8d-4710-9f04-c1c76ef1dde3 ae103fe1-64e0-49ba-be60-4dc7d48f9a9a 60215759-a70f-4033-bda5-b11916042941 14b57ebf-fea6-4778-8a4e-7b383237e320 893adaa9-c7d5-4e7d-95bf-b48d6d159f5d f8a4fb09-3475-4922-93c5-ba4417844318 6e027c1f-567a-44e4-89ea-a713831cc615 a8ba5530-2213-4d9b-9164-65ede7951c86 d2fad53c-d323-4a65-8529-d9113f385aa7 259f7caf-a99c-4729-a956-f55910e98ea6 9fee288c-adbe-4127-971f-f63c4101715b c070fc53-ff95-4c6c-ab1d-7919430abd21 9e7a8009-5063-470b-b597-87963d20af54 ecf7ea98-8e0b-4da7-8c7c-3b0c70a105a7 98aac5e3-c71d-4c6a-aeeb-04ce45ce2694 83c4219b-82bc-466a-bcfd-0ed5710307c6 bf8fc320-3513-4082-8101-65c1251cd275 b107f446-c8b1-4d10-9cd0-ed9a9080f9a6 d7cd8026-21b5-4663-9c03-475df7b55edd c0442961-7866-41ee-836d-1c70a2c9613f 8bd57b6a-00df-42b5-9030-77a2df43e4fb a3ab296b-ebf0-4474-b048-da511da442de 99446155-339a-4dc5-9056-24234061bbc5 41d4594d-e7a3-4968-81e5-1d61a6a5dfc7 c77babcb-d97b-4fc9-ae62-4f203c83e4a9 19f218a6-1be6-4b65-a6d0-d182398c9e52 b5a58cf1-088d-467c-9875-ca8892ea2d13 13a33f95-23c1-4c1a-bd13-35925e3f14da e8cf9786-1302-43fb-be1e-c1ff21a80ff2 558b44e2-9d82-4cc3-99c2-da903604b020 d7a34206-c9f1-486e-ae50-688287f256f0 58edff6d-9364-4023-9cc6-7cec21629673 ecab94ce-86f1-4e10-ac6c-8e71e0050f9d 69ead30a-565f-4f58-9cba-c0ba0efa33fe 130d2e9a-13a3-4381-9f3b-a37f6d0cca7f d51acdcf-399d-4cc7-9aa4-430bfbdbf85a 328c924b-21b7-403b-886d-b9c06940b68c 2d962d34-de58-43f9-9135-1110331f4d03 eb8310c0-9ef2-4ef3-afaa-41ac5a3e553c 446916a3-708a-412c-a754-ba6706e97fbd 476f7d25-402e-48d2-80df-318b4d29ec64 27466fad-a315-4497-a7e8-8de4937f3124 e8b7c0d3-6f67-4cd8-b6e5-615ead798c74 565406cd-7c39-4639-bc61-10f80c888132 e73a070a-77a0-4b87-8130-fdab4b1f34ca 6547097c-2e92-4d35-b6b8-766d4c0891c2 9cf52a2f-043c-4945-b7c2-2e88df6b404a d92906da-d2e1-46c4-bc25-51d08f54f94d 2d960974-8051-4337-8a27-04cdb48446ec a6ba0a79-a5b2-4c47-89e1-4df12ecca639 316fe11f-aa35-453b-aef3-14f45aae3737 614ad83a-0afa-4e5d-8c56-afe04f75f143 2b5148e4-fbce-4a5b-9946-85f28764f418 d6ea1878-0516-4f9a-868d-a761b087fb2a 05e757f9-f75d-485f-8392-6bdcfc1af547 ef8f6b8b-dfff-42d6-b24c-df506b043443 29b22b46-83fd-459c-9f27-a4e52c4b0a6b bf936627-49ec-4eb4-9557-5723fee45e91 da26feeb-cbd0-4acb-b05d-23231074cb99 118f24e2-6af0-4ea3-8a54-c8fa81babdf8 30c8c452-a5ff-4410-a74b-ce78997c2ffe e9f07c33-a7bc-4b07-b65f-7a27132513a8 7ba13199-0652-47c1-936e-f76672ead3fe 9005910d-e32d-40ca-898e-8842080604df 4012a859-6e3a-44ab-a831-eebe4f8db40a 40430c5a-dedb-4a6d-be96-ddd269754d05 5bd10817-1caf-4380-bb09-602951e21e9d d3e4a0fd-8012-440e-a0a6-eba5d75ef5b8 4f9babc9-7e6d-47da-a040-742dc83d0807 8f0085a1-0c75-44e2-980b-9975c64b97a1 8b461163-d6b8-45aa-a202-996dbe2228f2 66f82efa-8b7c-40fd-bc73-21671ae32298 f3daa429-afc3-44cb-9245-3c65f353c8e0 d625800f-9095-46c1-a813-48730b0809ec c4fecb26-a9bd-49b8-bde0-789690224d4b 06ac8b03-3c29-45e0-ba4f-006f395d1b35 b14b624e-bf3e-4d8f-aff4-459c07fd3908 bede943c-be1c-4c89-a21f-848744d18313 d5d21549-a369-4021-8192-a39a45fb0383 ac1edb8e-9687-4994-be74-0366cca64421 f989ffe0-608a-4986-ba82-bbc649f669ed fd1217da-17d4-4a20-b8cc-eb2c2457afc9 6e70837b-ac02-4f1b-9cfd-5df4fc7906e5 e02ddbdf-bc28-41ad-9e8f-4f1e60898e32 eb30b508-dc01-4d72-955d-72300765dc05 9eca6cb7-5ac8-409c-9095-d043a2700db8 e5a90a54-9d3a-41d7-8560-72041a6af4a4 6584538a-298d-4ff0-a8ab-574212382f50 7e4f8507-7bcc-48fa-a643-4c1b2047f933 f3b37878-cee9-4d68-b108-1bda6ac4a5a4 41ac5be7-2f49-43e2-9af7-e82258ab2bc0 19516693-561b-40ec-89bb-4db1cc74c928 fc992773-15e9-4f9d-adec-0c67c8a6e691 05e230ec-35c5-4fd8-b8b2-3a4807a2fc77 5720ec5d-cbd3-4d5f-85fe-a1aab22d6607 b877f325-735a-4c72-a498-332f9c1750a7 82b1169e-d029-4992-a9be-4d74e7625798 a5664786-ade7-431e-a085-4786ad6c762f ff4526fd-67a8-459f-86f9-de875527b8fe 1d46ad07-4e77-4ab3-a483-a83da0988f66 0209090a-0fd6-43f9-b8e9-74643913bc8d aab0f5b5-b544-4686-9e44-e3a5b9037372 b79a1d93-a590-49de-9172-4f9f7de271d7 45b19771-ae74-425d-a270-d910ab262b2c e3d96dba-75e2-4dd3-9072-108d00e6984a 42b3c61c-b9ae-44ca-bdcd-54de605c4a50 5f7be5f3-37c9-4290-8137-9eb67c3c8329 96f1dc31-39fe-4b95-95f6-3ef3f83ff19c e9d48ab3-499f-4036-a1ce-884738f96252 5041da2c-a08f-48a7-a031-0464780b3d5f e9083706-17fc-40e6-a175-5c0ff6014bec 2c0ca070-ad6e-43d6-81f1-f44cb4288004 a9a0261c-6efc-4873-9a6e-b01c52ea7fb1 73776964-a096-4059-87b0-c5bcb3d6f801 020f669d-f8eb-4a18-9a60-1de6d7052ed5 9f456a6e-51b7-4639-99e1-13cc8659ccec fb4ea5fd-85fe-47e9-a498-07f80be88a70 771aeebe-3c4c-480b-9265-04e2b0faab3f 6df05cf2-35fe-48f5-93a1-39b5d6a2d5b3 90918d71-189e-4051-bb71-5877257231e9 8b1cbcd5-c002-4fcc-8d44-299c1ca4d11e 44ef6d5a-2f15-402a-9ed5-55829179761e e006d295-80fb-4c4e-9a28-cba8f248b57f cd9d16f6-73f4-4080-8a23-310e0dff3d3f e001ef3e-dc41-44ab-8029-c6933883055e 317777d4-8fa4-460e-9b1c-43c37e10de59 da3601a7-27a0-4f89-a0da-0f2dcd86d94c 11411c7a-8cec-4d69-ad6d-1a58f7d09aac 054d0916-6104-4a33-8345-446056e8c2f6 9affc0ff-18f2-45ad-9031-ea3cd5ed4e6e 95448358-f2d7-42d7-b72d-ead7223832d4 f00e3ec6-65fd-4ba0-9240-d673a5670567 a093bbfe-6efe-4a75-8496-5008534d7019 1b027ead-1b4b-467f-b11e-91263213db54 61b87cc3-2243-4cc5-90e4-34305c816a3f 992501ef-27c1-4f8e-8ca5-95574dcbeec0 b3f87727-dc71-420b-9d3b-7306ae9da6d0 cd6053f0-a70a-4092-9361-2a032f195438 451df00d-9172-48ff-9b16-6ce273f7c227 1fe4237e-0e4f-4361-bff3-779eab485665 cf4896b7-d82e-4226-b5d5-74aa569d2e26 7b2a483d-b9b9-412d-9c24-65ca311f642a 1afc6240-97f5-4add-8a0e-b9b46fa02fb2 9706af05-70f1-4d5e-a13d-c9438cae7f27 b6d6a675-7e6e-4119-8c89-ebd77753a171 6e8a952a-220f-41c5-9c57-d778c4c25964 a4740c73-6178-4e6c-93a9-12f8fca21cf2 4dc145b8-e784-4289-9b22-fc37a0694cd0 596e32b1-29d2-4049-ba3d-b87546c71c84 2c0a2a0b-48d4-4528-913b-07054134ac0d a0b5e6fb-1ec1-4b35-bae7-f6d2951ac1b6 6f70125d-63e8-4ba5-9ed3-466c165f1a2e 1c5b2cf6-d171-4696-89ce-25c90b4b5117 0b40acc5-02bb-4bf5-8560-19c3042d1d4c fafc0882-42b4-482e-8806-49962e4cc626 2a837e4b-1dab-4c63-a2f0-8b88483357f9 235991d9-b6c2-4443-944b-200b17714f9e a5ebcd50-3595-4974-ae12-5edb6b5db4d3 3f35a055-052f-47ca-90a5-c83828cfe14b dfb5b9df-5cee-4d93-b49f-7e210de8a1f4 3c0e4fcd-5911-4272-a21f-401a279b9ecb f66bb3b5-d284-44cf-b946-21d959081cfd 0d27079c-7848-4af1-aef3-9d91ed159754 a169f5d2-c4d5-43e1-a4af-156eddda447f ae36893c-faef-452e-8dd0-d01808d794cd 71bdac35-b8f7-469a-b716-865f209f60f4 d6e0bea1-09fb-43e4-b20b-05dbcd1d045b 98bf9651-5303-4c37-a479-7cf831855165 c2f73df7-bedc-427d-8a81-039f50e4cc40 fa1e529a-80e7-45e1-9887-e897867be21e 4399940b-900d-4a68-911b-33eec5c5cade b3d419d5-3a7d-49e8-a130-81db2608cc37 ca1820b1-3b71-4ccf-b2ae-80e59e96cbdf df600d38-9eb2-4e7b-a80f-bb8e3abe19b3 d24ecb3e-aaa6-417e-9302-f9a86b2d8f81 eabed77e-3da4-4b87-b56e-6cdcd4ce7f5e 5b54b47a-ccf4-4580-985f-5035c607d3bd 5605920b-e75d-463c-bf47-864b81e362c6 c8057c18-ae38-4119-8903-3edd9a4e0dcb 4d96a06b-c5cf-4018-adb2-fd0327242a82 4e8e57a3-7ad5-4ba9-8140-95eed2511736 bb6a6638-2337-4fef-a1f8-430203f9657f 02483525-2ba6-40a9-9338-6cee15c88023 8a754cd1-2f7c-473b-8289-280b6c5363c3 f28f4e3c-2f91-4afb-9971-a4894c6c0dd4 921a7380-9e13-4014-9eda-4ac36f9799cc ba6253e4-6635-4a96-b9a5-e6533e5a82d3 e44808d3-f6bc-4665-9b90-5da8c32244b1 d23d22c2-f8dd-464c-8862-e881acbbab7f fc6d4f1b-e8c9-4ad9-b4e6-6d6b03785aed 093147f4-bd28-4d36-97cd-d103f6218141 eaf78e5f-6514-4be1-8b8b-979f7575a4a2 34859fa4-3db6-43a0-9c9c-7caa99ed08dc 8be5fd24-3bb8-4bf2-adc6-31604ba30264 bb795719-dc9b-4f2c-af45-194f19f51b1e 721bae70-dced-470d-a52e-07757badd9d8 e2eb5c8c-344d-4069-98c8-c378dc0d9ab4 d7b1d5ef-85c6-4be5-a9d7-572490c680ec ed917360-6eb7-429c-bbc1-e8c4ba515101 a6cee261-b119-44e8-a2ce-94ba380a8709 0026cf56-3ad5-47f7-9cce-ffdb975b2b53 42dce0f3-f81a-422f-af4d-c057ab0a2d33 6cca81b3-3c69-4425-bdc8-97f46832e8a0 e1628786-c797-4a63-bb2d-2fa72cbcee08 c781ece7-8128-481e-ac48-f3739d3d98e8 d7134219-173d-4789-a833-e2751135e01b 5267f697-32a7-4aa2-8456-319caf1ab6a8 f938dddf-105d-4914-af4b-3d1db81a6e58 2c5955dd-23cb-42b9-abba-f3dda473ef7a 8f0b4a63-3d7a-406f-956b-f019529d4f8e 8f426262-8f9e-43e7-ad82-812e766ba426 0a305000-fef5-4f58-9abd-16757f8354d2 57d30982-d35c-4562-ae21-f0e8f2519512 8ed91c57-950e-4ceb-9996-85dc5861b36d 5289a069-22b0-4ed5-b60d-6309e612ecd6 d13ba706-6703-47c6-8beb-156fb3fff7e9 e38706ea-7169-4343-9ae6-a2cf7f270af1 bedc53a3-281b-4b5d-84ec-16987ba305e0 e3606496-4f23-4ef1-8036-990eeae2dd09 1ba893bb-be30-4d89-86dc-a004f471e548 17ce190a-04be-402e-b78a-39711b5b8f6a 5dfeee20-0ade-446b-b9ff-cffdfaec0503 b4be7238-b17b-423a-9e83-5f3993599890 b1c14e0a-33ba-4c9f-9ccb-8401aea368ab 35faa25e-625a-456b-a5af-2e1893862e5e 5731265b-c5a0-4b0f-9229-89b110f6f0e7 f0589975-4d48-40d5-85f9-3a775a9b96ed 1ce88269-cc2c-4195-8de4-57afaee3a5c8 578d6865-a5c1-45f9-94fd-fbb93c57d8d6 046543da-7bd2-4fa6-835e-7194c4711f5c 14b94d53-04e8-4c82-a459-12f516a06b7f 43a2a2e9-f499-4c63-b6fd-972014607630 0897d239-0e35-4a4f-aed9-36863035c3f2 3cd160a3-2a8d-447e-945b-8e9fac79fcde eb496d26-43d7-4cad-a208-83b5cea3a0ba be0a2343-4471-4d29-8828-2b75cb76b6d7 9d2e9f7a-4609-473c-b4fa-02f0f4a6a5de 31e34dd7-43a7-4111-bfbc-63b09d35ce68 170f094d-8e86-4c52-b0d0-13709420856c 6d1c5fe4-9d42-43b1-9725-3c9ef17715db b6665be2-1ec6-48dc-b78c-a89f60903371 ff835238-400c-4099-9e86-b98cdbbbc8cc d468e3e7-5ffc-4845-9c81-d656c6ea5e16 772104e0-b909-437e-84ee-844b43ec4145 63b94a91-26f5-4770-b489-e9ff4f1d38d7 6d1eefdd-b8a7-470a-8516-efe57f232374 f251bc77-3418-4edd-a3d4-d6544ea243ae 325eda67-a8c8-47b3-8d1b-31b980a10a53 4593f796-1e74-49b7-b71f-28fe4d38da88 e187e556-4cd2-4a57-86ce-42136e383bdf 5ded1c5b-f09c-4e80-94f5-83627267b5c3 115b6e2c-1ae6-4bb8-850d-90ef93389982 f73fb3c6-1998-4dd4-9a25-74c55f58aaae 1b978f74-7778-46f2-bae8-3d890d67f99a 70d44c7b-b99b-4582-b7ca-caff76887027 1e34be4c-4556-443d-82e4-5741a210d932 e8a701d0-ad41-46dd-aa6f-132a64c8a72c 281d56f6-5649-4c0b-a420-0503c3ec2547 13c2de2f-18fa-40b6-ade6-6a97a1a588a2 5f066b4c-7ce7-417b-9318-6529bd8df2aa bd777179-a186-4b04-9f97-f4a7a4788753 31bd22a8-3199-4ff6-aea9-272efeaadc44 1eb7793c-b312-48f6-8497-3dcf03a3d3cf 7fcafd3b-9c4c-4877-b93b-783eeb030363 c55f22ed-6343-4f4e-9d8a-af63b3cc94a3 5859b8cb-5eab-44ad-97b2-9be6661c909c f30689e4-5f46-486b-8bb3-85ee8cbae3b3 e1d7c12a-4bd8-468f-af2c-60112793c63b a5d0d97f-4471-46df-a35e-7e24de82b778 6cfa62d7-8d18-442e-844f-f6adffa116c0 a36f57d7-807d-40e5-83a0-1a22484d3f1b 07d9940d-a24d-4d4f-9aba-e54e62714ede 8db96d68-cf0d-4e14-a706-6133bd8f22a9 8ecebab6-bad8-439e-80f3-eb93adc3fcd1 29f1275b-0690-4ade-888c-2a7ccfa53409 e0565538-a7a4-408c-893d-3e86e5bc1dae c1035f17-fe3c-4d82-b267-e9a2deaa49b4 b704f665-6adb-492c-8bf6-76801db9bdde a84fa057-be34-453b-9be8-1e289e467588 9fd85a93-fcc9-4be0-b40e-9a7cefc521b4 309050cc-777b-4216-8ae1-8a098d14a113 46a8af2a-78f8-4ccc-a642-88e99640edca 61ea490a-f492-4762-a0b9-bf9d3deef9dc 9f6e78bf-b406-4b78-998d-493d6566f19d 4fe8eb67-48f2-4275-b13e-fa5feebdb3b7 0a8d7fb3-58d9-47b5-bdc8-9b8551b275ac 842517d2-5949-4e29-8e8e-18efbe3b3268 8338c189-0c0d-4f20-883a-1643c7aa85aa bd97b07f-4555-46fc-805c-50f19ab8ae00 7d7c6ea3-3a5e-456b-8cb0-cab427e2e493 2a7c894e-f059-4c49-9e19-27fc6f581930 5b7677bf-fd5f-47e8-96e2-92d86455da56 04bf5099-1934-4f3c-b9a9-b12877dfb455 a0085593-a6eb-4c2a-8297-d7c46eff4526 0d424974-1970-4c5a-9b35-26091f4206a0 77e51ce6-bf52-4227-879e-9af7115439b9 eaa12f40-b16a-47dd-95e0-60a3a3e7f309 d5427ad1-2e08-4982-a562-d8bae1972cd4 8d4ca0e5-9c7e-4937-8d9b-5c7582ae2fc3 64d15f08-c62c-4778-802e-e784f4b6b2f3 99050a3e-d50c-4fd4-b052-7bf4dc5847d1 fc8d45bf-4420-4e52-8bed-2031fe79e80c d0c98f1b-5b20-4f3d-99bf-0528391b8b15 3eaf2671-6144-4cf2-bab0-21a4fdb6ebb6 6ac3858f-6d2e-4b37-b0f0-443b271ce8ee 269f3b0d-6b18-4c96-9c97-892bb0c0d400 94ba6ed8-cd2b-4dd4-8335-8b08e776d475 4026f5fe-667d-4c27-a674-37d4b45675bb 5add005c-fab6-422b-8895-0ecb1dc957b9 f6cb10cf-cffa-473b-8470-fcbec4853684 413ee81d-41ab-4045-a31d-203fd7609ca6 ef7f8223-b58c-44a0-b58f-da719ded1bf7 24933c12-1d09-45af-90ea-8bbf828f1198 1e9f4675-5010-4e05-b33b-f6b2c2eb1683 cb1cb8b8-b271-4ed2-8b14-c201f4c8db9a 9177dbc4-611e-4b2c-b046-58c192fc7b9d 4714eefc-220a-4153-b09e-84eaddbb87af 6e76a13d-7bfd-4b44-b1f5-126c6a05a6e9 dfd81329-6396-4892-a9f2-fcf0dfa1de1e 06575082-364d-430d-8e31-8baa3855ec12 e75d4902-f2a6-47f9-8b58-302b22fb444b c8344ca5-c0a7-48ad-af06-14d2391dd650 3f90cafd-dc1d-4fc9-b1b8-603dd6ce766f 90e74ec7-0d65-4eb0-aec2-0fd56a081110 286d346c-8631-48d1-afb0-c3e556f3cdf3 dc911217-22d2-46fb-9c20-4ffebf878a01 631df0d9-d6d0-4655-aec8-1fcf2d2ec69c a39a15fb-fc2a-4cfa-ba40-c5cae2f869d5 b6e137be-dcac-423d-87a1-d2e3f55dc44c 7d7f25bb-a448-485c-9f30-19994eeec2f3 87ef8ab2-70e1-43ec-9e8f-74f27175ec44 9d55dd2c-353c-4c51-a02c-c9821fe4b41c d5d3bde3-1301-4ed7-8672-7b750389dfa4 bb71d027-f804-4afe-a5a6-6d575c8e63e7 11f21694-9205-4932-be20-396557279475 d49291bd-0b4b-4880-857c-c1b35104a733 497eb988-7503-426f-aff3-33df10f9ac2b c1dcb482-d52b-4f57-bf61-4138280083e3 888433a0-855e-4451-aefa-060bffb151ce a5e196d4-d43d-49b0-882c-123c1ef6d905 112c0f8f-52ba-4e23-851c-a1487f18f75e d4f455e9-6d7f-4657-900e-5ae41f047bdc 698fece4-b70c-4b3a-a39c-d6fb19e30c02 f7420db8-8ffd-4071-97c3-40df507f8ab9 46a1a2ba-77c0-40ab-9fb1-6d6196f6164e 5dbb749d-f21f-4bde-955d-526aebfd7e7e 044465ca-4d03-4cd4-a08a-0084a969197e 031d8324-b80e-4d4d-a66b-b1a257c9de30 d5f06387-593c-4a55-af3e-539c8dcb9b3f eec82bbf-cb5b-45b7-92f5-94cae3bd5769 08183d9d-58d6-4678-b959-1e524fec9b8e d7dc0522-d78f-4f8f-89c2-8e39fc4bf526 9e7f5171-45c8-464c-baba-4155bf978ef5 548297c6-168f-43f7-9082-38e58bfc557d 704cad6c-612c-44c7-9370-e7822551f5cf dee5e1fc-d78c-408c-9bc9-9d5385855c3a fd5b9d27-cb21-4f42-ac52-788d14facfed 7b126577-0209-4b7b-b8ac-af9b52dcdb78 b9facb08-f529-4863-9361-951049b5e27f 2583142b-7213-44eb-9654-d10c9d5f6985 afe2d4a3-eaea-4c2c-8b14-b856f65419ce 5eb8a1b4-b35f-43d6-bb3f-8bbb75152b6b 24e30f13-6542-4055-8aa0-dc977bb5ff7f a27f4e2c-cb67-47b1-8fcd-43cdd0f75852 3e33bd33-0b66-4cce-8ced-fe2c51bb427d 8d1fa10b-d611-4435-a10e-bc10602ffa6c d73da3d9-671c-495f-833f-e65eb2cbcd72 fd8322b1-c9fa-4c8d-9737-9e4ec21ab740 20e21929-5352-4f4a-82ad-3c8364ee0c23 2e8125e3-bf1c-4731-9e18-538f4670671a db3c5f6e-4f85-4199-98a5-8c9acc07bbac a9df5c57-a2d7-4421-bebb-3e26cd617b5a 071388f9-57eb-4f2a-aefb-2ca6b6043977 d880c0c3-3f7b-4371-aacc-8f9d8a5627a5 676a966f-1820-403e-b9fb-e91c8c658579 3fee41f6-bc2b-4172-ab9d-e6f2dcc9c8b4 fbae503c-ebcf-4b3a-af2e-4979b93f369d dd034ba8-8c0d-4469-9c3d-0a73d7ed24fa a08c5ffa-6fc1-479c-8b37-e63f8126deb7 13251043-1f46-4139-8eef-fc7046eb9ddd ef474ec1-20a4-476f-be9a-3e5aea106800 80c916c6-3295-4738-98f1-90a533110221 e80d0615-f5af-4d6b-9eb9-340932bc1e00 3d51735c-9387-423c-b8d7-4e4e6ff2fb18 9289fa57-4f8d-47b2-aaa7-f71041883596 724d41c4-c8ce-4921-b0ef-57873c75c159 80d48cbb-66fc-419f-a67c-81a8e476a1ce 4876063a-909b-4e76-b5f2-d6c1d7c721ab 3ad4a6e4-12aa-4af3-8cdd-f780de594392 76008abd-3554-467b-b233-6a7d6a426125 24a371f8-d274-41e1-aeaa-2ff28e6cb31c ab210300-0f91-4c70-a714-d373e1fb83e5 9b4a4942-94dc-41f5-9e8b-134cc245c006 d15918ee-57f9-4ae4-a434-91703890f10c e681754a-f7a8-469b-a3b5-df5ab1129022 f54c2fbe-14f9-401d-8c6c-8accc67d5cb2 d6bb7306-8aab-405d-ae49-e9e2bc4961d2 84e4051e-8a6e-4cca-a89c-9fbbdfed3694 95686042-c4d3-41c1-a710-eef6dc66c178 e54d8722-6c39-4294-95cc-c8488cf0ecec 2a041bfd-0cae-4463-9931-f8e58be6c199 50607ca3-1ec8-460c-94e3-0fa7dc369d31 637a695d-b2ed-4c4f-adf5-7577f302968f 8bcc9536-d3ce-4c1e-8b7b-64d3fc76c505 399d07be-de02-4a97-87f9-ffff94633a47 5c6b1239-b7fb-48f1-975e-608e0a1ce4c1 975f59b4-b24d-4b66-b9e2-8372b1909c62 f6d1917a-adf2-4c4c-bd34-c3eede991d4b c5794f49-78c0-49b5-8aee-435c8d0aeaaf 0eb2cd10-adb6-4e28-94ad-ce34e9a9a8be 5112e2cd-2e45-45e2-b66d-d2c6eef8c730 0cf3ba83-c386-422f-8328-dc5cc6d9cab1 2fce6295-a02c-4ef9-bf31-e615468bbef3 7ff46dfa-e28e-4e81-a1b3-e7e5a10a1bae 48f91996-a41d-49ac-9aae-fca6045cd4d0 a619ce61-f899-471b-985e-2fc457eca50f 29dfe83b-d28f-4f6f-aa24-21b926334e76 e020709b-0d60-443b-a10c-adf11aba334c ab14af0f-810e-42e1-a151-5f4673f8b79e 616b361b-8ab0-499a-ab30-0728922622aa 1dc57076-276c-440e-8f8b-0312c5783e8c 44b8714a-8f4a-44e0-baa1-c50811b9c97b 8e47e686-b0c0-4f0f-a298-2c024a27e8fb 2c1b9fa0-7a71-4671-8735-a0d5cecd33de b7d55150-201d-4a2e-a574-40b292e7b5c0 570ce6e5-3793-4212-9fd0-7ef982368525 f52d4ebc-848c-42d8-9c0d-9d8fdbe1e626 83e9bbf6-a22f-4ee5-b84b-f47e503c3501 6fa911e4-5169-4851-b251-14d4ad5b0e99 b1b48951-e9d6-43ce-b514-56b53ce42129 44ed0fc6-03a0-4db3-8ca2-491d0afad260 584e1d65-3aa3-4e8f-b914-a0784c8e62e0 63f833aa-002d-441b-a218-f73ecabdbd65 60da3111-9454-4f06-a3f8-26598f13665f 6f167762-4799-4a55-aa5a-6c77ad4383b6 5f65d94b-6e05-4969-9ea6-9cafd3df7b78 3312f3ca-edb0-4f15-9b8e-b95a628cf0d4 54035e5d-6aa9-4d2d-882f-aead9b10ab38 90f15124-3728-4225-a742-28776b57097c 79886a33-19cb-4d07-9f8f-fc38176c4d90 937f20b1-9ebd-4e12-8fbc-77cc997b108a 52964118-5851-4b31-a357-9df55ddaaf1f fa2822d0-c4b7-4c5f-8a4e-2dbac0e18d99 0c89f9d4-f11a-4a96-9a61-727c7b804119 ed33e776-73cf-4e3e-9d4a-0fdc0e6afc7c b9ddcaa0-434b-466e-8a4b-48188cbe0bbb d5c4e133-f5bc-4582-ba93-d117844d7bb8 c83d8cbf-992c-4879-900a-3f1fe9c0f70e d7c95a5b-b87f-486b-a15f-d4d8e018fcaa bbf46916-f9a2-46ea-9a6c-ec76ba245e5b b4253a34-d05a-497e-a668-9698752f8b32 554c2624-a33f-4c8e-90e8-177e18328873 aa14d7cd-c3ad-4a8f-aa0f-b1d0bb385a31 285a014d-bf30-40bd-a059-9d79435fca9e 698f4068-dfa5-4b65-b009-58a3ee76730e 120571be-aa9b-481c-9483-90d34c1dac08 e13e28b4-fc74-4777-9ae0-e47e5384899c 1819c8bb-29dd-4351-88de-ae554a988a7a db7f1bcc-0976-4216-a423-e8fbbe9639e7 80e09599-9ebb-4cf1-b224-919407d21ab1 7d437334-0753-4636-88d0-803b08d8281a 0cb56ec3-74a6-48b5-9510-ec77179e1c63 1e421a93-329c-4837-8b10-553569e91cf1 6fc8b512-603a-4f97-b974-832dee1fd92d af2e62fc-0034-4a39-8823-2c359c450991 fddc04d5-b390-4685-b467-335e6e0df7a5 2c9f4496-294d-4d94-8f68-221ae0cf75b0 7461513a-6233-44ad-852e-8e171caf3426 7b9e5dca-c797-4b06-b25f-2d593ead5e9b 984a9464-bac6-4a19-ba07-44c7e9cbefb4 bd27f117-94c9-40b2-9fae-fa50d51611bf 71c978a6-72a6-4213-aeee-64daadbd3817 0397e21e-62cd-46dd-bd50-31bf1e473c74 ab430245-660a-47b8-af55-4e7b099234ba 534bf654-d0fd-48c7-90ee-241dc1c3d984 f458f493-15c0-476e-b870-6d7ed69a3cda 37ad83e2-040b-422a-a952-286de82654b1 f545d688-927a-4275-b688-55eb3ab67981 f7e7683b-d401-464b-91bb-086db03eaa10 e421c017-d225-4eea-b15a-43ce1b141cfa b5e770c0-a177-47b4-92df-2f95e8778112 28233ee9-04a7-4b06-80f0-4458d13dba2e 93b0636d-edc9-418c-bea6-d63ab74787fe 33c48ef8-dadb-4d33-9bd2-0dab40b34ddf 6ad927fa-31c9-4489-b850-f86fd13ee653 96598ad0-81ac-4fa6-94ab-1ad67f0f9fcc d7b56198-aa53-4a20-8fde-887061d022dd eba837ce-0b53-48ef-b933-5675f48d9592 bcfcdc92-6b61-4d07-8ab1-e8e8292b1375 077c736c-f453-41cb-8aa1-56c291d77ef4 315f0880-e405-47a4-85de-8be6d716eda1 596c8a7b-0445-4c9f-a35c-f6811f666f1b 19f0799e-2a30-4503-990d-4abbd9c3469e 8c416ccf-8c9e-4087-b687-8bed80be6d3c 93e2d93d-4261-496d-a4b3-ea0d5234a033 cb04204a-dbca-4bed-91e4-b0d07601a439 236e9ef0-bc07-4baa-a596-8e76038dd131 118dc4e1-6cea-450d-b226-d0f06ef6028e 8bca26ce-a21b-4e84-ada2-ea64ec9663fd 798e1bfc-c40b-4b29-85c8-c0dcd47241cf 73d1d2b3-1d26-40a1-a4f2-53cec8b93749 864be95f-6735-4919-9676-e82aff435b06 e4b99335-21f1-42b2-8921-122de52deac2 fb5804ee-8387-4cbf-a427-ad11454a0840 33dec443-d881-4d8f-9658-cfa0247f4936 88dc4cf6-b2ee-4e0e-ba4f-449bcf0bb72e 64c6ad0a-f19a-447f-8663-17c96db7db7c 7a728248-5c67-4189-885b-eb1f620ed2bf a6f08516-aab9-4165-9ca0-29c4e4b27e31 1f10b6a9-e6f5-4203-9356-fcd695a11777 1d098e44-0faa-41ac-8877-820824e27fb6 aaf2472a-2440-4447-a00a-36c9126f6884 12684a86-b0d3-4f5c-90da-64ee9451c686 4c03035f-7522-4610-a629-d9d30bb16bfc da840dce-604d-4f17-9f82-1a348ed7e2e3 d3800888-0192-46d9-8c9a-f67a7dbe25ed 21fc0942-cf7a-43b9-ac2e-e2018c21c11b 8d36ad27-c707-414a-8479-667c7b72fdb6 533a1656-4660-45df-960a-45acfbcd1869 22c015a1-4779-4117-b800-90c192a0b04d 9d3944e4-57ed-41a8-ac7d-286a5b1a78ea 0c0a6dc6-0169-4506-9885-b5834319a6be 75196fd2-6c24-44ab-8681-5de9696bad5f 26c721f5-84e0-4c55-aefe-5b4f534c7e23 d7fb3f67-6f29-4b2a-a0c8-8b93e412fc28 62442d0f-7bdd-4945-acd7-9b2e94e21731 28c4c2fc-f6d9-461c-aeff-297d8fe63488 b963c063-2f07-495a-a35e-56b727b21871 128a7b1d-dd5a-4691-b65b-69ff85ba0825 a86f4847-427d-45da-aa00-d11de4e03cb7 c55ad0c1-33cf-4b68-ad61-9f3057e336f8 3045c317-2119-4e8e-9e62-7844fa79dd7c 688933f3-91a4-45de-befd-27565f50a288 f63a591a-fd4c-49f7-8abf-a0e6d2eb3723 d5301621-1297-407d-9615-e8bbcb37da93 6e9a670d-ffbe-4ca6-8d99-1c9bf84858b6 ffe55591-5bba-4c3a-8ae8-6ae44941cbdd 0d4562dd-5633-4bf8-a1ff-a764a83a7372 0a81aec4-cbd7-410d-82be-3b233df6ed7a 254d0f71-2f59-4796-bf47-c0967a82e409 35f1ae76-ceaf-4464-9014-949b3b23e88b b6ee4d15-c529-4400-b29c-659b310674c2 ab9aa967-1af0-46e5-98af-eb98c3a41e36 530b1644-c6ac-47e2-b1a3-d1423d8bb1f0 99e80803-d74a-442e-9bcb-cfc1d7a2c318 91017e9f-d4a1-408b-855c-851f36761208 2bdf31c4-48cd-4d5a-b7da-18312adca3b6 c0e30b42-ce12-4d55-a189-eec85e209234 c4be67e3-2843-49dd-af97-249509abd696 3254981d-dd0f-4f94-9434-bbee41c9538c 14f26c74-19b7-4ee6-9ee1-8c607eac537e 3ac2fbf2-0264-418a-965e-6e6b0f6065c7 df115a7a-c40a-4aec-91f0-e126d7de3749 9fc12be6-8bc0-4dc5-aadc-9f631d87bc0e 6f503777-c1fe-4c3a-aef4-320b83987712 7b9f5255-0c5d-4110-a763-3a8c3f3fb985 ecb4484e-dc8c-4ea2-ac76-9fcf2fd3c1c6 97076d3f-ed16-4574-a024-d141cd09ebc4 bc091a44-6522-42d6-bdf8-635505bd6bc1 b8cdef14-1c3d-422b-a35d-55146f206716 59e73911-5fbf-4c44-833c-a65404de17ef 354f5274-2391-4d2c-889d-56a98a81a77a 375b9282-6c7e-4310-bc49-a3ff56795847 c709e9c6-6a55-482e-8d21-cb5d8a14db00 ffdb952e-ba76-47bb-94e3-581236e86990 268f9112-4b9f-41ed-9288-f705887c723c ec818748-6f9f-445d-ace0-9ee599d3acec 613a7bae-e5dc-41a5-b30e-0697aadbec8b a9e285a9-27b3-421c-97ce-f26f6db4e87f b799f9da-eaac-40c8-a1c5-3e20a690a489 807ac033-e387-452e-ada2-a970b456814c 28766500-736c-498a-aeb4-68be55536d41 14091380-4aee-486f-9106-45f6bdc33fe2 5d557a0b-1553-42dc-a7ae-363485a164b3 8d033fd0-3af7-40a3-b4c7-80ffc17d7232 cccb3c1a-bac8-445c-85ff-89e445369066 e870fef4-0821-4fc3-9947-f54df52a4f33 0b54b407-0c33-440e-b0b5-00d48c1bbcdf 6c6dc8c3-9efe-4f9d-9e3b-1d0e543be702 9c55675e-91b1-49d0-b3ff-259b033fc925 f344f328-b48c-4743-be68-0519b52f3049 267e239a-b30e-4a62-a551-4ec9a906109c 88095c68-3428-48fa-91d8-e321edd9cd7e 8c40b5f3-82e0-448e-9912-8ea2cf9ebc9e 1fbdb4f5-b85c-4853-9975-baf2d60d3127 bdce1be9-772f-41d8-9760-37e23077e5ca e16b5370-1f04-4c7f-a35c-9a7df70b1e7a c49a590d-ef23-479f-838a-826decae28f1 214cdf76-60ff-454e-b034-3931896a0e91 a31c9d5e-438e-46bd-95bc-141aed5c3890 6f1887bf-dc8a-4666-bcf3-c3c01ecfbf26 046d9992-d0b4-4d5e-9050-4cae193cd2a7 d65c9a6b-8707-4a05-9836-f96c5bd5c085 0141ec1e-cad5-41b6-8e27-5668a0e69ab1 458afc79-4b31-42cf-bef5-66fe63c7457a a5389c30-7d1b-4be0-b244-d15f4b06c981 e6ab42bf-ddb0-487a-8068-05085c2472c2 2876d66c-bb0b-45a2-aacf-f278519228ae cdf55a06-374d-47e1-bafa-465f83dcffa1 4fe28fd1-060f-4917-848e-915d7eaf2a3a 614467e3-8312-4790-81aa-0c570b55158d ced92420-d7bf-441c-847f-f241d66bb03c 0047dd95-e7fc-4de0-b70b-077d36d62253 1564958e-8732-4294-83ab-79b508e419e5 30221916-651d-4f4a-be3e-78f81044cf3c ad7b8e96-ea53-4278-86b2-58f3ed817aca 9e260f0e-2709-4880-b6aa-021bca58c20a c8463e8a-104b-4bef-b41c-3cde1b3c196a bc86987f-0ac4-4127-801b-93ddc0df34dd 19bcc086-dc30-459d-ace9-18b4b0e4f162 122d05b8-5d62-48f7-91ce-a77c045ded0d 8380c333-b512-45cb-b681-c79fdcbbacd8 0e1c6f2c-f19a-461d-8500-b0ba8b685bac 1b7be2a7-24c6-4a8b-b129-b73f50468f06 7feea5e1-40fb-4dde-a8cc-d6eafbc8d263 986daef1-7b6e-4a9a-9cab-e888c63408a0 7984f5c9-530b-40cb-bb3b-a31983b47730 a7ef9303-72e1-4171-891f-f5a338edd09c b72c693c-07e4-4a5b-9f24-3ba9e881ddb4 3ae24069-68c1-4e3e-8a1a-84974b33a246 3094d3c8-3d1b-44a6-aeb6-00f8c2903c5a 0c154644-51f1-4ab7-862e-95effdd1dbbe cae3994c-0c8e-4839-bfeb-77cb546bb8fd 595be739-7373-4c28-8252-3fc58be10efe 361ca7ca-70d4-4067-9111-1105fa3c73c7 8ca5a7c8-5b2d-4f34-8a08-222cf90b4e31 fa683869-f682-4610-bcc0-7d5b186bf3ad 7418d3a8-3673-4775-92a5-cd440c6438f5 da2bdf54-54df-4f74-b21d-4b8b8023dc24 1f141579-3dac-4b22-8f8b-6d996c25b3b5 3e29518a-4baf-4455-a29e-875630dd1739 6e378610-9709-4737-b14b-761a04493f93 0919f778-a0c4-4adc-a436-2f09c6cde23c 00b2b570-7001-48ed-ac1f-2cacc3f243cc c3d75308-6a7c-4f72-8da5-bedafb1aa9df 8c54a6e8-b509-45cd-ad1f-f5a007a67420 8b24f3a5-b093-4e2b-8df5-109220f30d8a cc62c422-28ab-4d24-b819-6575c6c2f3b7 42df9607-eee9-489f-9e29-408aa6f89855 2ea6d1eb-fc3f-4604-890b-50bd11727b46 28aa5731-5c90-4319-809c-2e551268286b e17726aa-cb86-4bd0-8b73-75b6f94a5724 a0a50512-b063-422b-9ac6-3fe6a878c9c8 411f6962-836c-4884-9823-d5fe8228ba03 f51a6455-109d-461a-af3e-5500b9db7591 65fbcc8b-5368-48c5-9466-9515488a00dc 0eaffd5d-522d-48dc-bc14-0001d29358e1 ff24ebf7-013b-4f72-a64e-ce37864a8f81 714ea685-9b0b-486f-80ae-53b959ab715c 12bcb6dc-1c38-4585-804c-66454d1d3006 add2ae33-de78-46fc-af14-e7becd937366 fec879da-26af-4578-bada-93c997e03cfc ffd05f24-1163-4206-be3c-a546f2a161a5 c1834e14-8e08-4949-9a13-a9159439deeb 059298a0-a268-4835-87de-4bf663262030 5a31b020-6979-4e53-83fc-3bdf7e343f41 21b7a540-ad44-4fc0-b34e-893b9ac106f0 ae307057-5c53-49d4-ae7a-b38dda93eb33 0259f4b9-b9ce-401a-8a7f-c5d376715509 a7d02034-1839-4bbf-bb50-ee60f951fcbf 3f6634e5-716b-4f26-bfea-d513a7922c85 75e46edf-1383-4098-82ef-01962465ac3a 03cd74d0-94eb-48fd-a241-f22ac4690fcb d4b88ff0-b76c-4080-adba-b4b049569f80 c8b63fa0-4039-4c1b-9add-8b96b0717c9c 1c7fd425-456d-4c9d-b8c9-34662e77f58d 046e128e-075f-4773-bc04-ee74e65753a0 9372a5c5-2356-44cb-ba01-8dd4fa0167ce 2e4bcf2c-008c-4e72-9f6a-ed4ab7b1ef84 50fa643c-e45a-4870-a261-b78425c9b042 55ef6580-ae7b-4982-a375-473ea1c6fbf6 26b45547-e6e8-4e9e-aa77-0562c651fffa 6ef566f2-5476-4aa9-a15f-e339a81d1f88 fa31da4d-3c62-422f-9f6f-7b77726689d2 f51cacd4-75da-44ca-839d-07ddec61dc53 df9cb625-3bb6-4785-b32d-157b68fa26ae 5d426362-b98c-418f-a8f2-2fa341502fd4 bcc38a00-6e39-4ff4-9212-50daa10e95ad 8fe2ca18-47a2-447b-a2d5-ef39e49849c2 1b0c2ce3-244b-43f0-921b-e34d057a5b73 1b46a283-7c10-4703-85eb-f2af2db5c65c 532a7b2c-f9d9-4187-a269-f47c12bf3718 47cfb357-2273-4457-9e6c-f94b2152c22f b86003ac-a4bf-401a-8963-1f3842d167b7 54428917-74bd-4f60-8e03-f4b53d9c44f6 fa7d87c9-50e3-4466-ab8c-98600811643a 1b84f23a-f8f7-41ee-b9eb-e036d5f2c3b7 07339ec3-b2ad-47fa-890f-ad4f5bf38bd8 dd5c3f65-19e0-4529-89c6-83abfdd53304 327aef05-583a-4fb0-a427-db18bdb35715 c2e80270-0898-4c6e-9e4c-16542f46abff b79f271f-86e2-404d-bf67-1ffea9d66ad2 912ed6c8-a7cf-4d11-a7d7-3ecf0c459cf2 7f6f3bfe-3843-471e-9832-84235f4c3cfe 47f1145f-c801-40c1-93ea-5e756d192210 256e709f-2a5e-4e82-bf41-298912f2c638 2e44dc13-7358-4947-bd97-1e2d03fd6824 34a62d6c-d8da-48e6-a529-bfbab77362c2 d1b71256-f3f4-4fef-94ee-d9e01d772b0b 6ba96040-1ff1-4ebc-a961-3ac91cfeee1b 28aac7f2-3417-4576-b332-367d1f37270a 38b202ff-0ec0-4391-a8cb-7b00d803026e fb19d377-3d8f-4ca5-8104-6ef350c4f46a f135fbbe-5f8a-455e-a3d9-f6278b81a84d 441edefb-b365-4d28-8ccc-bc536184b2d5 81924e51-0c6f-4a72-a3c6-f7ae849d93ce e626c806-dd62-4063-b76b-217196fb4966 17ae7fd6-702f-48bb-ad2d-9e70bf23dcf0 605ce0ad-332b-4b97-bedb-0b7974986b37 fc9ad451-b4e1-4551-b0e0-9581f7483d21 fa240160-1ef5-45f8-876e-15251a1a60d9 f0eb01b3-65e4-41b9-840c-bf9c6f36a246 2ba9aba3-4070-4898-8ce8-3c4362b04b22 3a97b168-72c7-46e5-8d6f-703626cf91bf 865aeca2-bed5-436d-a5ff-ee1effb43e02 593d04b6-6356-4a6b-9950-812d1add2dbc 8497f7d6-72c8-4b29-9e1b-559922b26210 b4ef4bb0-d071-401f-9a84-386ca0f53258 7247766d-ddf8-4ba9-98f1-d95ed0fb97c3 4ebe1518-e80f-4b8d-83a6-37daf6880643 313de6fc-db80-40bd-a2ea-2c06b4cbd7ee ea68b745-a215-4fce-8da6-cb8b290f98a2 24fc2c8a-ec73-4eb3-a68a-e25d2f7ef8cb e697bb97-23b2-48bd-a3a4-6f3b39ad3be7 e3fb07b5-100d-4d30-8320-485a48c3e30d 445e7311-48e4-46a8-a1f3-dfc4cec63a8a 121bea5a-2b44-44f8-b488-a0b6720913d0 3ba8d0df-33a6-4e78-9b0e-22651d3ea1ad ce3f754b-3ef3-4832-80b1-0424bc051588 b9bdc884-1cd4-4156-a73c-13f118b8c3cd c61a4dad-6feb-4b60-837d-242a053138eb e9592833-591b-4067-a30e-3dc2d0863d0b efa32290-b21b-40a3-9f67-81893ba3fa5b a294d981-2f0c-43e5-9f01-9d44426e01cb 2eaafffb-1c92-4dc7-92f5-03380776e9e1 9c62ad2a-1fb5-4749-bae0-154b409a3bf0 0dd463e0-3ff6-4fa7-9200-0e4457920980 3e47c95d-a8e0-4be9-904a-744e79646047 07b200b5-bd3c-457c-b4aa-a6721697b9d4 129d2827-b53a-4a4e-8782-caa17f69c7f2 c0f9c1bb-e108-49b4-991c-5c78ee39208c 3fca8d21-daa6-4229-877d-21a44e97f7d1 5e36a718-48d5-40de-a6aa-62ca3f092db8 11901567-3d48-444c-b54d-c15777356e9c c64747fd-b465-4f23-81b3-04dacef4f415 086b19fd-dbe3-4570-ba5a-8d345f1722de 3a32c219-c74f-40cd-8fc2-c81249d552a9 75368ca3-808d-4884-82af-261465c1936d 7089b522-5ada-45d2-a55e-768a055cba22 955dcfe4-0e86-4efb-9b04-d2d626726e0a 10cc67e5-563e-46c1-8dfb-1ac7cbfd168d d9ce7506-073f-4ccb-b243-b3c179cfc529 1102ae01-816a-454d-b6b9-f72eb9ec2db9 3ca1e46b-08b5-4a96-bd38-f4296b66b970 bf20701f-6ea3-412a-ba78-2ee23ee0fcf1 48880d64-bb07-4ebb-8107-759351dad5ca ea857713-cff7-4bf9-beef-5b49d16c1490 b5265b45-facb-4909-bbf7-f6a24ed20be1 0c3bfac9-125e-4bb0-9db9-c14301396202 aaa488a7-8d32-4e28-93a5-a03538173691 775902f9-7720-477b-8914-e64597a1f568 1cca7619-d5d1-438f-9b67-8eefcadbecb8 639eedcc-4ad5-4515-a919-fd3b9fc1a5b7 37fb6f16-796e-4976-8a29-de3c96f233ec 7f2c84bc-f7c5-47e2-b11d-fad7c82a4eee c64654f2-b598-4afe-beba-bbf0fb714b19 da23cd3d-215f-438a-97d1-3768dd8bcf61 b35e3f30-c4ab-462f-8176-cde34e1ea21d 7f7ac2ff-d8dc-4355-9c9f-8d13ba4c05c6 6c63a277-0e82-436a-83d3-01daf09074ba 7c39da10-d1fb-4167-932e-2e62a3003508 58d3bc3d-c61e-4eab-b4ef-5c452c6a2537 fadcbbc6-fc7a-40f0-91b7-832032d8ce02 ad967cd6-f0a2-4139-9e95-f3b31fd78b23 16ac0c7e-0277-4562-8fa4-9992c8c95696 d777df2a-9985-42f6-aa29-e91adde50f1f c9228cef-aca5-4b53-b065-ea8ef8c3c392 e57a3396-976a-4829-98d4-70fc33e89360 c03a2d31-fa81-4995-9e60-3f29f01b6351 2fc05d45-0843-458e-94a8-46f8224c011a 05c01637-af88-43c7-8e31-89167e837410 512a28fd-2834-4e09-871a-72a88a9aec47 538baef8-8060-42b1-a44b-9793b80ff416 da7c2fea-2263-4dc9-9d5d-1fbdc8243ba0 855b1845-7017-45a6-b2fe-ad7d29a24606 5800a99d-acc4-4625-bf9b-41991670a69b 1c5cde64-ae2a-4c6a-8adf-b4ce2cdc2b2a ad6cb65c-8b4b-4e36-acdd-64c10c33d674 11f55ac3-7f5c-42fe-a20d-1923c9f0c804 95e71e64-1a7e-4752-a648-23fccdd9035d 17d20a09-c8f7-4a67-b20a-f47c5408ebc2 305b1522-b3ed-4bff-8db6-6dc7f0a7325e 58c2eb49-a3a6-4cb1-aaa1-ef1fa0bccad2 2a97214b-f809-4aab-bf70-a8d6a5fc3e59 2bba1577-dc47-4b52-b202-3cdf07eb0dcb bed4d4ce-a803-41c8-9c9a-98c458e090fc 20517279-3016-4873-a988-f4e2b9b49712 baf1aba3-64be-4455-b1a7-8fcbb2438198 aaa6545e-3f1f-44ea-aae8-035362134afc 9320c629-a24e-4339-b19f-e780330405f6 b638c71e-0437-4033-944c-c7817e5f311e 50f24376-1318-4347-8ea3-74105021dd5e 17938e78-e609-47e3-98ee-58377b56f728 b36e205e-97b0-4aab-b4aa-47e32d858e21 49af8fe8-c297-46d7-b20e-e89b34e9ae1e 5e9b5b3f-a547-4831-8742-3c70e56f6fef b98d4a91-7a83-45a2-b367-c9704e399a08 d73ba59a-68a2-4ee4-a13f-c9156e9d18f5 ab396e9e-3ba5-43d4-acd8-608e70b3f6e8 5cfe4f25-a82b-406e-9f0b-ff89efdcb91d adcabab8-0cbc-4c54-bdea-b483555d7ece 9e4da761-2ac6-4de8-a5dc-e9e508f22085 2b915e95-f9d9-4e87-af2c-c3d4aa72214e aa6455f5-aa91-4918-9ba5-ae5cec6f49c8 7b485d22-3e66-4eb4-95d4-9e380ae77e44 3afba69e-a337-45cf-9a44-3d9e7fcf9f50 7a5911ce-3334-47ae-9404-3176caedf0cd b68bb46b-c3ec-4df0-8603-0f640c00c9e0 878755f2-fcfd-4b8e-8447-6973d7ff5894 c3c887e7-1c2e-4b10-85d2-4a02bb700401 8339fcd3-98b1-4cfc-bbb3-f96ea3d8fd94 efe43cb6-a097-4d55-b251-0331765d1631 a95cf660-89bb-4782-97db-562547518e5a 420ed782-dd70-4732-8715-c7f95d649ee7 c11ac0f2-4e6e-4387-ae9f-8161943aa341 1177e43d-579f-4f29-be45-86346664c1d8 4d40bbd0-1d76-4b4d-a546-22b1c2401f9f e9ffcb79-d050-41b1-b3c5-c39bbdd58eb8 355a60cd-1f8f-40c6-b913-9edfc2016a0b 18db4274-745c-445c-81b4-15d3e8de1740 8cb36761-44e3-4380-8341-e5555dffd548 b403f3c8-f4db-435e-98f4-9f23bfb1478f 4b899dd6-7b41-443e-b9ba-962db4e63de6 89dc8d8b-83e7-4eb8-b80c-a6b544fe633f 2d30f079-9ba1-40de-a110-c618da2a77ae 207f2783-7157-49ba-8b1f-c9b5196fc71f bba91f01-58b9-406b-ac09-8c1f9bdc6221 4444d548-372f-42a8-a326-5740d788dc39 f1a79c33-c3da-4095-a505-eea21eabf340 afef7f18-11f6-4114-a200-960908d38eb5 129db9d6-cff8-41a1-a113-d2df37fbdc17 60bc1195-93a1-4925-b9a1-df8dd99256ab ac3a3c82-804d-47b2-9da8-2d4e87ec5bfa 036073e0-95b0-4448-97da-350a0eaad86e d74541ff-0659-4ac8-a177-5d618cd12374 2d35703d-915c-45dc-b56d-9dbbfaa48bd0 0e990302-8df3-4a44-8a11-e9086ebeb926 b9da941b-5747-4b40-9c94-38008e4f4afc caed49ff-8418-4580-87f4-de0133f8f0f7 a9c013ab-6778-4f08-a4e5-491670c28017 f75fd3bf-1fb7-4101-a9d2-c673084aae8f bc234871-5d85-4415-8335-e933083b41f0 a6c184f6-9b84-4883-a2e6-be204f9b7b9b 1f6cdaba-5ff0-44cd-bc15-e6c6021641e5 ea3a57c5-cd87-405d-9b98-ca0949030b28 9fc5cb25-0be9-4ef9-b5bb-c17ae7e0aa4c 46b9e395-1bf7-4c7d-a419-4a29d845bee5 3c512cf1-3f37-4b05-857c-0f1025c037e4 8db14b27-7f10-41f6-9f34-854df2119506 ec1c3029-eb85-4c65-b00a-88b60b78b458 cbbb25f8-6a12-423f-83d6-2c8522ae8c05 dbe2c723-ec9b-4974-85f7-26ec429b68c3 8963a177-f9c9-4663-801b-bd0bd6580291 27ed2f46-0f81-411a-b0ef-18fa35ad616a 9f02f059-22f8-4353-b096-31b86d1473d5 40cfd77b-71e7-480c-998c-c9b2b26f258c e7b6557c-4db3-4073-a0e2-fe974b5c7558 a69e9f43-17da-4e12-8c04-f05ed97755c8 4e32e723-77cb-4cfc-8159-eb84e49b2831 b20820fc-5054-41f3-8bc5-5be59ee89a2e b34f586b-5ca3-449c-9033-a5b054dca677 62070500-564b-41a4-824e-59a0b4a9151b 154b7d7f-d29f-4838-a71d-274012e124af 7ac82dc4-e59f-4630-a6f4-916d3313418b 14300f3a-6c83-4b6b-8ac3-a7adfbabbd4a 984add9b-4683-4689-a06b-3238dfd1e425 ef47bfae-dcce-4b0f-acb0-bc08c97a1080 76b3e483-8b42-44cc-b6d2-0f8bb224a74c 96b349d6-0864-489f-8e4b-c38b774a88cd 9c7c9356-18b6-4dcd-b56e-f8514d3c797a 9ce1141f-acdf-46f8-9c18-4292c78e3d92 400d706c-cd21-48e1-886b-415c0ff581ff 0ae6f8c1-ffb7-4d03-906b-c72614c568e3 2a8a6441-5f02-401f-9705-168b240c5530 106ac959-945f-4342-a811-56e3588c4352 5a124477-9ecc-46a4-a5cd-565b0910e0e3 7d008cdc-9010-4219-951d-3c82ffb30bc9 325e58d1-af38-428b-bac5-04f4c1ba59d2 c73ebe79-980e-4418-9d0c-6a3676ba25e2 e1702599-3353-4169-a53e-c45138eebcf6 c297e89f-01d1-4107-bba7-bb5cd992d6d3 476165e0-e0ae-4d45-806d-dec3440dcdda 6fa8c91f-d03f-4020-bbd0-ddeeffc6dc5a 24214b0c-b71a-4de1-834e-baab2227c138 2e60af3c-1dc2-4b64-b4ba-e7c71f83e3d9 89920546-ea8e-458d-8893-5b5a0fdcccf3 0045ccc6-4e08-4a05-992b-4974e55f86a0 22b1e2df-14a9-4e79-862c-e2f77323e599 8a7d68cc-cc31-4c75-83e9-f1632b01794c 28a0ce7d-e98a-4339-8951-04c1329fee0c e20dbe57-0b8b-44b2-a261-bf5a6e27b3f9 c010a841-8be3-48f7-a53d-27ead92ca000 abe279f5-7e30-424b-acec-14bdc2be9fe9 875bb5c1-ee51-4a36-bdd4-9379f05aff11 e3eac159-2370-4413-8776-3520e3796c9b cc009f2c-5e4e-44b8-8b67-ada3d99ce089 80b39054-f899-438b-b637-244ce352fdd0 7fbf4791-29b9-4605-99a6-743bc4e73bda bfa4fd08-8b23-4d8f-98e1-881f0ffa995e dce96046-b519-468c-8f0b-e7e75ed4f000 04a2afc3-a84d-4e4b-83c8-20f95657b21b 6f083039-e2d6-4128-8d31-4567cb3ee712 1d16f48f-5bc2-4042-b376-575b7a4a9963 bda38cbe-8ac9-4e5b-9a12-09eddded686a 62c867a9-022f-4513-b822-75db403eb441 b9bc05c8-aa60-4bdd-992c-7ecba01bf3f9 24981584-1ded-4202-955a-dca6bf82ce37 2c88fdef-df08-4b7c-b849-955734a94c02 5b5835a4-90fa-4460-8991-ae8d717ddb97 b59c09b7-376f-4d55-be1c-f1162802cda8 da27f097-eac3-4da4-b26a-214e5be93648 5f506e3a-7244-4ea4-9e93-80fd7422d39c 91463617-bf4b-414a-b447-b9fb3f6b98ee 895a3d54-ed27-437b-8153-90fd55ce654c e68ed8bd-0504-4183-aa0f-f2f4c8364395 c3cecee3-420c-4165-8bd1-eb1e17bb96de 0f678c40-dcda-4883-960b-e104abde9aa9 089f5e13-9c9e-4657-b337-464d3cf9bfda e7d1b218-68e5-43b7-9f0c-3fc159da2073 b6eeaa9b-2d96-41cd-b1f2-0f6ab77bbbf0 aa5a3f59-fa20-4799-8591-3f452e46c2b5 23b8c324-741a-4b2e-bf7e-3c888bf24032 3d1eda05-f0fb-4cac-8e54-41726bd97dfe 807ccc6e-2ccb-4f47-bee3-e7e902fdce9a ea48c829-9d70-4475-b283-e2f420a388d2 4840769b-4902-4798-9e8f-7c1f1c8599bd dc491467-e784-4add-90d8-c1873ce3d91c f72f1afe-d214-47b8-8ae0-8c6eed5f1afa 1f4445de-ca62-410a-b6c3-68047edeed98 6321a73a-813f-41de-b312-ad22920ea179 1914adcc-f3cd-436f-87ff-06c10e2d9d56 8edcb074-11c5-43f4-8d76-05a4b51368d6 00b0f32d-c2c5-49a1-a7db-feeb4a31ebf4 43c5ed31-d4ef-4c61-86a5-56b313d1bad5 8953716f-e2cf-4d80-85e8-81335ae18dd7 3f8649fa-cb67-4b4c-832f-a9c41a7fdd2f 39206381-593c-44be-9cc2-8e6a64d96d48 179380c8-93c0-4b2a-aad5-7503eb3b34b0 a2865648-6471-4752-b8ec-0f193d521141 1dd2106f-aa33-4864-b4dc-61142f8c53ef 671c2cf8-f153-4c9f-9847-093ec69dfae3 47e56306-a073-4efe-83f8-41798a6362f8 dae71e17-b172-46af-bbe9-23bd3bcfe8fd c2b24140-94a7-4b27-8b1a-9822c321212d 1c9cb94b-d804-4f52-8a12-1979286edbad ece8c76d-0bc5-47c6-9e76-1ba410455ca4 9a2e29ab-64a9-45f9-a01e-c839b5271198 81e2e669-0af5-45d2-bc3d-f9c7539f9dd8 db3a6c52-1cba-44fb-8b5f-1c4564c71df2 6b4e2b8b-fdf2-43cc-a20f-86633ec175a0 7dbf706d-b990-458f-bcc0-3d8f69913a02 c6265445-af1c-4c4a-a8c9-6e91911b7632 13165b9b-2a6a-4d07-8ac7-469eabaad659 2f2e5f65-cfdb-48be-81d8-284ca3c0b74e 1d57ee7f-b8b8-4bb1-bb13-12b562240a2a 4e5ec224-c2e2-49fb-8a49-a0cea92df4a7 2b8001f8-4efe-4ed4-8a5c-9144aec452a7 e261c62e-ae57-46da-866b-b3d189cf3a3c ed6b1d89-c555-46fe-9f56-083611364a9b 484408c8-575d-4afd-82ed-42faf330836f 0d1e926c-5e7c-40e0-b090-451e18995e5b 3a951b33-bf72-4e51-9bee-d5a0711b35ed 14cd314f-0b2d-426b-b9b8-30c53a3caa5d 99e556e2-78e8-422f-9fc5-bbb40e9f3423 06434ed7-a3c3-4ffa-8c59-57976398e35a 01decece-ce19-44cb-950e-340c012fccee 6e165878-15a2-4c6d-91eb-5945a7831224 9b4bd92c-97b0-45c9-ac94-d14dc7162492 b7b256d5-c7e4-4775-a396-6e9ae35783c0 19a5fafa-3c4b-49e0-b8c4-5ae2e38fa355 eb0a1bbb-e58f-46ec-b48e-4cde0d59e219 57a4e477-b472-4a93-b38e-fb1c81f37f4b 0299c4d2-3513-4e70-bc98-cf26f9be6ce7 352df4f0-ef13-46f0-8a2b-a65239e9b3d8 01f320f4-19f4-45fd-accc-63a469135b56 54710f5b-fe49-491c-b2cf-4be2cd527499 593ef356-7839-4189-a52d-07c75aeb033c 92a1d5c4-0783-4f22-aab4-82e2133945c3 188b0310-3935-4294-b34d-6492c9c9930a ab32508f-bd05-4173-8552-59db25f67801 006c3f1f-4640-4af2-9869-203dab7cf4d5 2db86dc1-c1f7-452f-99fa-172d2891447a 285c2749-d251-4850-94e8-a3cdb348e592 1cc975da-62e0-40e9-b9d0-2536e88fd047 70a71448-646a-4e34-a91d-f03746de5995 9acec005-f392-40b2-b4fd-dbaabe51f465 c0994b2e-5689-4b6a-9846-1e3c820d4364 42e9ecaf-a8a3-425f-bb9d-12e2610b6406 ff311ecf-4998-4769-ab5a-242065bbfb3c 37dca961-0a85-4036-9294-0db07cecc3db 899e5146-7fef-48af-a71d-83dd27a872cb e8e53ed3-68f2-45b0-b5ba-763920ad9b11 78ff44e2-280c-41ec-b1d1-d6a07301c413 ef9d424e-f806-47ee-af78-dcbf3e0149a5 5f6c191d-8b46-406c-ba14-e5378bc00c3a 9f8289f2-7a03-499e-9297-bb50d4ee06d4 d7a7d963-76ce-400b-b5f6-efce34443e3b 05bb1776-3b26-41a2-89e7-d1b34604cc36 d0bea042-306e-4a5b-ae9c-bae2167bbf66 3e987bfe-8bbf-40d5-b305-a16d0ff297ea 7d29e7c1-174c-4a58-a105-1ac91d925126 6c97c008-425f-4fb0-8f3b-e7c7a2caeb46 ed4d9f5a-095a-42a9-891d-2f239f13ca0f 2a9adcf9-bf77-4c9b-8752-c697c67a69ff 3ac09d79-7d0e-4967-a1c3-0578cc472f76 e865ae0d-966b-402a-8c81-de46735cde18 545caa4e-b10a-486d-8678-e8dc32c79b45 a53e36d5-54d8-4347-8ed0-55d76cdd7ff5 7b54a9cb-6d7c-4af4-a48e-967c4e72efd2 ef6cab2c-fb25-454e-81d2-cfb5af334ecb 518293a9-8d99-4598-980f-169112d2b0c8 aa72ed1a-a8d4-4647-95ab-78ab5760113c a7943e3d-84dd-4245-b3c5-ef47580cb01a 830a4716-379e-4c96-8e8b-21fe56001b86 065eae61-1920-43d0-bf9a-d3ed597bdb27 a096276b-c83e-43a9-804c-bd3155ca75b7 b30ddc24-5ec4-42e8-b612-c998d6596c91 bfcc3ee6-0ad5-49ed-9998-76b5f762ff9b f90b4794-af4c-4027-82b1-ab2199da4580 b1745f97-7e9a-42c2-8904-d3462389c6fe c269f2c4-7b1b-4488-b747-e4a782b3854a 5de02ef7-0c5e-4917-bf61-9cfd557f86c9 6d4cd09f-89f4-4cce-868a-ab8fbf7ef63a 7496768a-4b33-43f6-a3fe-60e49ed1bc06 754d9103-2af9-4cdd-a698-616d9ea3e99a 2fdb6edf-c49e-4dbc-a70d-5bca24564479 d5adfa87-89e3-4884-804c-30cb098b3442 6fe06f8a-fc49-4bc0-9ebf-441bb40c5c64 815d2d9f-88c0-4dca-b1d4-3fcbbd79c935 977e1f4f-5c03-4acc-8e5a-6fe63b49662f f4622b61-cf6c-4859-aeb6-1014f5100ab1 ee462946-d701-447c-a0bf-66cfe8822308 5991bef5-a62c-4b6d-8acb-ce08fa9d8c4b d0da497d-b496-4eac-bb18-0284b24b7606 c017be38-9041-4921-8a85-d018d7b71f43 26357abc-4151-4e5c-b00a-0d2889df21c6 ac1ab516-600c-410b-abc1-f2d5e82fde00 f290a0b9-815b-42ae-935d-dc224a28f100 9aff51aa-1ef9-44a0-8be1-fa0ec5d53665 5f1e1c78-730f-4525-94a1-8af3bfd9a885 ea351888-c777-405e-b386-d05e1d4314fe fb32acd4-7506-4d6b-a3ed-a1dd28184dac 12bde9e9-b655-41b2-aec1-a6737a485a69 fdf38bdc-6eea-4e4d-800e-9a3e6f81e9e0 95e7e123-13ed-49f5-ae73-b5da8032f264 231b05fa-3a06-4968-8069-0945daf6a3ba 9026bab0-e732-4469-b7b3-634fb98905a9 8225acdf-ea93-4d73-a140-576b791585e2 221fdb8b-6332-4b2e-adc1-1560f588ef4a 3798f097-aa6e-41cb-b17d-b22f49594d1e de3ca38b-5eb8-4fe8-b366-553db42597ca f4b0094e-25f0-4a31-97c4-0a633c550d6f b71d9d75-a250-41a1-93cf-30d6072c5577 919a83d6-cb2b-425c-a344-8ed56f716797 6bffee94-bd16-4017-a908-a1b98a689838 b4025ac2-bd03-437c-b5be-8037990f07a5 b79081ba-c2a7-4904-9d86-add4b362ba5e 9c526983-059c-44e4-ae81-82b83475457c fec715dd-abbc-4be2-86ce-56558152f015 d721781c-b997-474c-9aab-f245fc5c56e8 d88291ee-f45a-44d8-b79f-2314caa3c19a 7d199c00-30e3-48ce-bde9-321e359c9bef b8e981a7-a02a-4479-8104-50c0cfef41cd 8fa9beb9-1bd7-4276-9319-2799d21a1442 ded1270d-82a8-4a26-92bc-ab4c174f32b8 08e24a70-0543-43d3-8d79-93d21a561ad3 7180dc0e-7c2d-4d87-8463-01fa44271edc ff897c5e-558e-4749-803a-0d7250243f6f dffcf5fd-6b94-4c06-8726-8fa9039f159c 28c02639-c60d-4f0e-a39d-9673ffb1e87e f3f18a65-5ca8-4773-9052-e338ec970f24 c89b27d1-067c-464e-953e-d013165777a8 aaca266b-3abe-4420-b9c3-243be12b2625 9356ff48-5aca-4060-ae12-5077cf3ce7bb c6b1e195-cc33-4ef9-a815-f98f46e0fd19 4db17fad-d891-4bcd-8d68-a9524d6b90a8 d0da9536-46e9-4c0f-80fc-21bc2d749e3b 12f71999-0a4d-4514-80ea-389f7cedeea9 e508a6e5-02e1-41ef-991e-46bb43255872 be656b3b-cec0-4e67-b2a0-5037b6a1a4b1 92f45f93-0037-45af-a1c8-e76640efe58e 69dbebd7-7450-47e7-9ae4-9bd49933abee 413ce384-4a77-46a4-a15e-4c13b7318f31 952a3d7e-bae5-4863-b465-f62f31cc1edf af250309-9528-4309-87c0-cf246fdcc9cf 675571b4-c864-47b9-950b-3244004d84e7 3b3a82a5-83ed-4a66-857a-7253c93b1ed5 6b354abd-f621-41d4-bfbe-fda30415c6ec f9ece567-4c4d-435f-af83-9c751163b61e 20ba3c1b-2795-4a9f-99af-89f39fdc93cd 0b740c78-b737-4ffe-aa88-c382bfd520b4 38638090-bcc7-49e5-9a67-ddb5f2bf307e f1ab51be-c180-41a4-b80e-1f9c838aace3 e3d2bbd2-bce3-44fa-b0e6-e9ff348e7925 7166fa5c-082c-4dec-9edc-d6eb09554190 3bd67010-2198-4eec-88c3-1cee7fff4c20 5d04c468-e3aa-48ff-a785-2e7a266f87ee b0a98d32-152b-455a-b251-57173dbcccc8 065a3ca2-d337-4e89-bc7e-6c002a00e44a 1b9a46e8-fa59-4f5a-ac2b-f3b7baebd271 ce55d8af-aec2-4dc0-8dfe-3aabc2693528 1d1a442d-ffaf-48e3-ab6b-2a6f9245a1f7 3e1f3fbf-2f40-47b1-9c06-494b2eff8cb7 17372c54-b9aa-44fc-8576-9ba59bf2548f 1bce8745-9670-42cd-94b2-25c6387a0150 7e2903e3-fa9f-480f-9c01-0d3d34e4ba72 209177d3-4818-40aa-beda-6526691f2468 f3a80af4-fcf9-402b-bc65-664ed8934b99 63903ec9-9c8c-4c3a-909f-72a6a85ad696 1d5d895e-9944-47e7-b393-37a939888dfb f06a7514-58b2-4206-9822-347462e49002 2fe409c7-b578-4212-92e3-226fecca8cd4 a3424f37-1b33-4d5c-be51-1b68699fb43e 6a223fa1-3a3e-44a8-9e82-4a5609d7bf34 64e67c2e-33d6-4995-8511-2291dbf534a0 c0fd959f-e255-4b54-9a60-611e298b74db e2c9fe46-707c-4aeb-80d0-83147d79469a bc73014b-3b29-4051-b9bf-68989ca8c097 7527f306-db88-455f-8abf-7224c815aa63 2d09bda1-d2ec-4137-b738-e1bae22d7bd7 5a545835-d40a-45aa-9f53-192932be706f 47e42a41-e787-490a-ae8e-fed72d1d6d3d 5ae77694-8a92-4958-9311-c4a30e9f47bd 0ea5a7ef-d833-453d-abe1-da65facfc2f9 2eb9ba2e-6cf7-4909-b293-f2f632977126 fedd5861-fedd-4368-aa2f-6c7553bba000 c20d8a0f-acec-4722-b6e3-632778d73c0a acfb5c6d-4703-44b8-aea6-c5049406701c dacc44ff-d499-4030-ba9e-7032718eb09d 882051d9-b017-4923-9479-6fd2b9ccf36a 57b2eca3-9719-40d2-8ac6-6d16290ccbcc da204277-4ace-4190-b64c-39339a24a704 9213a8b4-58c6-4183-a7f3-4fa418b09560 90f65dff-f691-4472-9b4c-9f1ae4f8d29e 031cc0c5-007a-49a8-b849-0f08b75cd4fe ed8d9a04-3c93-48e9-a06a-3ffde77095c7 68e6b18f-45dc-43bd-a833-9ba91d7cde22 e94bf21d-5bc1-4756-8fdf-2df6a2b86b55 9e27a5e6-c83a-4b19-92fc-eba3158eb270 3fdec154-131e-42f3-b6e8-9b08da2a6d99 5e6d2438-c2a4-4b0c-9442-198d8fc5075b c9ab1f45-6414-48e2-94d0-139fb96a5793 611262d6-4da8-4e2f-9e80-b771105e9961 6f80e731-63b1-465a-a589-033377f08eef 33344a3a-e917-4540-85a1-f890ec16c962 7fe83af8-77e3-4c66-bdd6-492a8ad01c86 e3f53e99-81b2-4402-921d-8ba2babb2d60 828bcdbb-ddf1-4277-8ca3-4de826bacbe7 ad5a67e4-3a55-4f41-a402-902c82584f20 7205e0b3-92bd-47e2-827b-4eefed60e6b0 1596b52d-31c8-4ff6-99db-012f550aff49 a8aa6d38-f52a-497b-98e2-d281497e28e3 f152d95f-0ddd-48a8-952e-fd2018dd34c4 17ea1a01-6a87-41b4-8512-301d41c4e649 8eba84c2-f06d-4d03-84e4-3065096ef369 c7c2ac33-8aa5-4427-8a4b-5318215fe15c cbd79d20-eee4-44d4-9a97-73f8d9d44f76 962c8e70-5f40-43c2-9219-b034ca3d8329 07483fda-5115-4241-93c8-752344606f1f 64901c05-d5ed-45c0-afa5-f075d377b114 84d9cd6f-f75c-4fa2-87bf-f377964f7fe9 9d291cd9-ef6a-462b-9cd7-0071f10067dc 0c3741c6-2c2f-40c3-a5a1-8ee93e29314b 7a6f0273-6ce6-4ef3-b5e8-8dc45e8c13aa 1817bc60-0b23-4457-b180-51b28a017ac9 b9b420eb-20d4-48dd-855f-144a537e5875 ccd4cfba-c2aa-4f45-b234-c475c300af7f ca3aef3f-8964-4625-ae9c-8efc3e32623b 52cf4c6b-cb8f-4283-8c39-e8ae910689ad 5db06ef4-278e-4729-a49b-b7d2e69c3b4b 3aa83aec-9549-4a08-8daf-77db89e1688a 7e0a12a1-0299-4496-80d1-3d875bcb60f6 64a338c7-9f3a-474e-b080-78a372ddb432 1b19d6fe-43b0-4114-992b-d3b26fdd377f 148154cd-c3f7-4ab7-844b-2818c8b65c45 ed183b7b-2f0d-437e-8c6d-5727e37e308d 04edf766-e0d8-404c-9fe0-b3a19c855054 11f61a0d-b895-4b28-9f45-28210affdc8d 6a1c6515-b375-49db-9b2f-7a55de95ee64 b49d4b39-c8b6-4618-bf18-9b294aa3dfe0 73607c91-8934-479b-ba55-3f8cf0eca9f8 d64686bc-66bd-4317-9823-caeb1da82874 20884126-ab37-486e-967c-268cbde0c007 a22cb8f6-0224-4fce-8f6d-f464a09496fa 9a728958-37df-477b-915e-89c33449c1a8 924208d9-51f2-4c4c-a159-999e2a5bda38 8d472866-4d2e-4ae0-892d-5c04e42d5ccb 46c45688-c3e5-4651-8e5c-29d710d21999 151f9f16-0bbb-4688-847e-50efee842f22 d7d84946-e904-40f8-aef2-ba5c35788103 dd043ba9-ef6a-4e72-b9b9-2faa658191c0 5a1755d6-6a1a-47e5-975c-4490dfa18263 e5f15b6b-ed62-4282-9648-1f469aa00de7 ab79f6d7-970f-4af7-a7a9-76e513f0040b f6e73847-333f-4fdf-85ab-01ad95375b8e 398f5882-126f-48e7-a597-f267d63046c4 51928501-be38-48bd-90ca-8bac7d0520c5 5ab41d6f-b943-44b9-9c93-01b37818b6b2 c5e224fd-4d3e-4322-a0b4-1f827287bece 26c24c53-1c0a-4481-b724-6e3c5d914bfe d22ad086-e753-4515-9d6f-bbef5418538f 3786c06f-8f12-4547-91a2-e028792c81fb 961ed501-0043-472e-bdda-b51c24cc68ed 6534830c-fc26-4f59-9a1b-b4ab46962d75 ee80e7f2-b892-4f2d-a48f-dbbb481c6f77 f02d9860-4644-479c-98ce-2c4719b12967 349e51d0-919b-441e-b771-ce15ccaf7583 70252d3b-c51a-4ad0-bf4e-8ca589eeabe0 b2ef9d70-300a-4fcd-a9c9-d82b77a0ad45 6e3f1590-300a-4e6c-bac8-dcd077e6ebc7 311f5fcc-40ec-4b0d-a541-c10cc9b5c81c bea0a5fc-5736-44ba-8f0a-915583a662db f1266e8b-4066-4b46-b685-63a204b8fadf 0aef50eb-5357-4d55-8dd3-4abe7776513c 3984d341-434a-4f20-bda3-7ddd0bc21a59 4e6af3f5-f1f3-4b82-a648-4dd8a978130b ecd147b7-5875-49a9-b2a7-cd8eba74f440 4e00b53c-c9e5-454a-b8ac-15439dfd39ee 581a64a6-bbd2-4188-922b-a76a58e06683 6d115080-2cc0-48fb-a184-e8c062ecb748 f59cf7eb-fbce-4f9e-bece-2ea26e8939d6 c61a3063-cd60-4f37-965d-91e4e5fa6e39 43fec707-2894-4d10-83fb-2abadd671063 997b184b-3684-45ea-a6a0-81dd0d661bb3 8ac7acd3-7ea8-40de-ae4b-e80dbcd73109 a9a7d167-02d9-414c-bb74-3e17b0842487 f6b27097-f363-4e62-b9f0-c5f2464544e7 6568e8e1-3d1f-4ddb-8786-640fec5d00bc 1cbe5737-f1d0-4bab-a55e-e1c65af6f325 9417efaa-0b72-4869-bd2e-be3920e77f1a 6520c5d3-095f-4b29-b2fe-6da8abc2d1d8 327b2062-9105-4dea-a972-b29d877295e8 05fada2a-d840-4527-a3d4-e460c1a2c2b2 59677124-da92-4075-a144-55dfe3c0841a b4cd939d-00ac-4108-aa20-324bbd3eccae 0b417ec2-f8fb-44b1-aee8-5dfbf6fd53b7 c231dc9d-6d79-423d-8586-67269025293e bc1ae277-c466-42d1-8eda-4e2afa02a8e4 13e3dac4-5554-42f4-bc8c-75c568cd0476 a178f5db-59c3-45db-bab7-87ff522c94bd e7fad781-14b6-4941-97c9-1bcac09b8a5a c4d202d2-8e85-4f76-88c5-b195ed1259c2 1a1a9e9f-6004-4242-b9f5-cfaeceecd913 6946fe58-86f8-4338-a566-099cd4ea52a2 06336db1-cb48-4249-9328-f47018067c98 aaf19d3e-3502-43cb-9fd6-985d3cfc0055 495b2e18-72ca-42a0-bc91-00990e07099f 13673952-08f4-4353-905d-1860dd13202f 306615f6-89dd-49e3-9647-f91ad48c60fc 247766a0-a514-4ecf-9803-fa9f398f557f 02c2f3fc-b8bf-4155-98a9-665725b93630 97d15828-e653-484f-aace-936e8f41ffa5 c3d915ce-0265-4801-aa9a-9e3cfd9439ba 7f6f4f38-7e03-4534-aab3-b112eb462508 8ec7ed55-1cc7-4d48-a324-92786dbe780f 95430a16-0b81-4e5e-812e-ab6cff724b16 437c1ddb-67e5-4325-b6e5-431415e9b917 e92c4831-2022-429b-b6ab-4235e44b82e7 60a7284a-d7f3-4e32-abb1-dccee21a91a8 b94aa8fc-f2ed-46a1-8922-65a4c6a63a3c 46940736-02b6-4d5d-8868-12ab69600cd3 ea86b8bf-054c-4d44-96db-cab914878a7a 0d69af8a-6a6e-4984-b79a-37446feac5a7 b257ed10-40ce-4d7e-8e5a-dae61a6629a5 0ce794d0-2641-48c6-a3f6-13d64567f159 d580ddfd-6917-4054-8645-e1f64aaecdfe 5cfb3873-2f8a-4bf8-8694-baf990e0004d 4f53d772-4223-4c4e-bcfa-ccd398af45cf 2267fd90-c2c7-4a60-82da-29926b10616a 40b3114a-3adf-4f48-a0dd-105bbb91b21e 19a73001-3128-4d61-9db5-ffafa2751674 6d5073d0-ee56-4ec2-b104-b033545385b2 0eb74c69-0a98-48a4-9226-b0fac44354f3 84e8fc51-26bf-4698-89d9-7fc1508e90ee bf443370-9123-4709-bf5b-4cd53d843788 322fbaa9-3157-460a-9ffa-8a6dc7bcb23b eaa9f066-6aa9-4995-83b1-b6fd94e17f8b 8b1799d1-9306-467a-8f67-d8c06bdaa62a ca90d9bb-87df-41fa-a518-ab844fcb8cf1 291160f8-2701-4950-8c71-5830894997d3 054cb172-8590-4550-8485-a0c73249b49e 7e7bf2b8-9ab5-4e86-a512-7c652b95fed5 2517149c-d537-4cc1-9a0b-bfcf399c6a8c 9152884b-9020-428f-a30b-22abadeefc0f 70d082b2-8633-4429-9541-ec18629ee02f ade9a679-c0a1-48e5-96bf-793dc48fdcf9 f22e98bb-d997-4ece-a5e3-e66d9c1a302a b9be8afa-2b67-4923-a87c-d75e572e9e48 3fd94413-1a49-40a9-b64d-d4a70fc9a83b b170c10f-ff80-4f70-940f-db3fda179bde 150ec63d-491a-49f8-ad15-5d275d4132d0 bdca63af-245f-47c0-a752-34069cebd8f7 b1a2ed68-5d25-4848-aeee-863d3fbd8505 b9d51b7e-7d19-4056-89d4-e56349265430 81ab923b-615a-4069-afba-ebc24ca715eb 76108145-d409-4cfe-b7ae-2aca803eb639 e9951b10-ed21-42d3-9089-2ca95d5e907c bdd584f9-3e33-4b67-9351-79d737e2e651 499640a2-e856-4ee6-89ab-23ee31c811aa 4a961340-1d4d-41f7-869b-2663dd3e3a76 08244c48-ed29-4af2-bd7a-a58efd6b631a 528e2654-2e4c-4b09-ab04-9ee8ba5aa047 4ce5a06c-4ed0-47d1-b8c9-1f921c5e87d7 233be8ff-abdf-4a95-bddb-de29b2bbc98c e580f007-bc33-4e9f-b12e-113e8c9900dc 0d27b851-f3e2-43ce-a9e6-092928cab1ac df7f245c-53a6-4520-b24a-96af2758263d 8e22dd7f-4609-4c99-be86-6c76443751ae c9f3ef87-6712-4a60-8485-7cb2a7557dc2 f1145632-28ac-45bc-ab55-7a5d2342dfba 9332ef97-1769-4856-8d8d-fd026ab98e9f b3651d93-2241-4200-8997-e148754663ba 695951d7-72ce-41f0-8f02-d2bd129b9aee 165801e0-157e-4585-8bf1-a4c4efcee696 50fc571c-4602-4787-a4cf-e4bc66505e08 f225d87e-123a-4dfc-bcfb-544835479f2f c10d4856-9664-408f-b2a3-83f697c84cc1 be51b4fa-42f7-43b8-9b8b-a812387f505c dbd776fb-c36c-42dd-8c1a-5fb681ccd8b3 0b6b5bee-1b54-451d-8c49-99c5d9f09d77 b52abeb1-9728-48ec-903c-86f9566ab876 10e29de1-59f9-44ad-959d-c1b39bbeff33 48bf4ca0-54ac-488c-bc1f-d1b0ad6c71d3 1a0b9ad1-1cc3-496a-9cd1-b2f73bf2b337 6fc5cea9-5d36-45e9-8d6a-db7572589beb 834e6b8f-4b6e-4758-a66d-27c6809e1787 18e292fc-1b7c-42d9-9f1d-5fd4ecb4c702 e6795ec2-df9d-4983-b34f-246bc88550b9 47de115a-7cf2-42e7-8d26-51aefe8084be d0c53dc9-87e6-4e48-aec4-2229deece0cb dfafda3a-6e7c-4cfd-9797-5243258d9e12 ca6ac6c4-8a37-4e83-9471-cfc0cd7621f2 5bb321c3-6921-466e-a8d2-bec0f5e57253 2731c84d-1fc7-4c72-ac40-27be057c0ec4 7589b78f-1880-4e5c-a0d3-29cc61204535 9730e46c-21c7-41ff-913b-c262f6b7d27b 3e1cd6ac-c31c-4a1c-8f35-8cad50ab3a76 909b87c3-3cfa-45d7-926f-e8ae53e00214 67b50f72-9fd0-44b1-8a6d-a45ab4c6efdf 622ea793-ac61-4e73-bb91-efe166f3fe5c fdd3c418-9bfb-4335-ba6a-4ebeb3e41655 a347e017-67b4-44f4-8a4d-9390adac72d2 4ba0ef35-31b3-4d6a-8981-e4421d5870f7 bcfc323e-e13f-4a83-b3e1-527aa4b68aa0 2c75d38c-e45f-458d-b2b7-c03cc843f927 69441c85-bc6b-40a8-8b67-eacbfa6ed081 2b278eb7-47e5-4ba0-83a6-dbc131945b7c 10481e86-b138-4cf7-b026-22b738855770 b778ec61-f123-4a89-8db5-23f073b8839d e302b38d-95c4-4f08-a700-730d35327194 a2aea7fc-4160-4e99-9694-6aeb3135833d 8a5eb730-6037-47a2-8a00-9625eeabc178 4fe930c6-e244-459f-b6d3-da09b0c218cb 1bf604db-56db-4b5b-9550-7982ad103219 d07a1fdc-a960-41ad-ac6a-23e382ae3e1f 6d24a7a3-ae41-463b-838f-98cc8583bb9e c2a5972a-2ac7-46d2-98b7-17359bc6f623 450d7ee6-7cad-4754-b4a0-86d9a602d58a 69f78b2e-9847-4c13-912f-9888564544f6 12b354e2-1c0e-4bdb-b384-10b980735a28 69f1a791-cc40-424f-85c6-5efd0c54ea0d d960efad-3a9c-422b-8398-a02e2639dbb1 21fcf163-8d8c-420e-b1e5-9fa096a1c82b 4f5c9b89-caef-4b7b-9afe-57cb7424e66f c867da90-7190-4866-813f-af65656dd194 6e1c7411-cded-426e-85a8-41494c6152b5 dbe80e0a-04d3-4aa3-ae33-aa4bedf947fe d46c43cd-910a-4c47-9b70-7c63eb7a54d7 b61ef1f9-5242-4182-a70a-c0e2f5f8f0d8 49b39ba7-40d7-49d4-9d86-29dcad655f08 9a5aa38e-8e55-4ad5-b30f-29ab79019403 9a6783cf-83cc-4cb8-951a-cc64bdd96b97 759fe98e-fe25-4654-80be-672ff71db06a 4a3f9fd7-183e-4d9a-bbdd-71b63943ca2d 312a687a-541f-491f-a917-6ce47344be85 fead54f0-1531-4d0d-950d-5a341d843c9a 99b0b0ce-2220-48c3-b6e8-f4491112146f 68cc04fd-a8b9-4e2e-bab3-bdb97117ea62 5b0ddf81-b833-4f78-85af-981b055d7df4 b5396abe-d978-43ba-b689-04c335921873 dd87a19c-15a6-48b5-820c-2b13ed41e2fc 5fbb431e-921f-40ab-a805-0249da77b240 791d22be-bfdd-404a-8ac5-37992a06784b 45b71472-ff07-4f41-a678-2609b43ab234 588d0739-643e-476c-9650-90ce4b9d019a c25a3e11-33af-40bd-8a17-1158011b3c48 c5dd6a71-3311-46e0-a101-e7dd540b4438 b4fe5360-e41b-4d16-b5b0-d798ab9b0cdb c0c0ebcd-38e7-4002-80d5-86ad02eaecab d150bca3-1772-46c5-aae8-cd2428a6049f 1ccada50-e54f-4969-9590-b8f808f47972 eebbd0b6-6342-4d32-9d14-5ae1f82986d3 130e55dd-5df5-4a0f-95c7-0b60ca34667b 2aa2b487-dd8f-4dd1-942f-eadeb03606ae db440aa9-5932-400a-8e2e-7493b9fdb4d9 20080247-fbfa-4d45-b2b9-2b503b996810 c1383865-ab3e-44aa-8e9b-56fc79c4cd82 878ab048-f013-4cdd-a288-314ea2b3224f 32427cd7-5413-4535-875e-61b0c289fd28 24343750-e8c9-4267-bfd0-71f2271440de a8245ad7-4302-4ce5-b086-b2966b888a26 dca7312b-f39f-4bb3-8f97-59fe6253a306 f71049fa-64e0-4857-8cc8-8b9150bbd268 eba0f552-94d3-496b-9fe1-257a170379aa e6984211-59f1-4b74-9d89-249bedbb48f9 0e526622-b621-44da-ae50-7f108c264117 e362f5bf-f96b-4200-88a9-8fa8042d715b 4c275ed3-51b3-4a08-b419-b64f651c055f af79576a-ca0a-4453-821f-9cfcee6612aa f0ec92b2-b3cc-4d0b-8306-a11ad5165a77 9059e6ef-ccc8-41f9-953c-b7a1f1c519d7 03bc2c59-a4e7-4ac6-a186-0f4c08a87eee 0ef9edbc-1572-4c74-acc8-25f859c4d6a8 d10470a0-fde6-4669-b700-bb8b9d1def0c a153f745-adef-4594-b125-66ffbbcc81b8 6303c6a0-37de-4c5f-ae3f-02d286e3a784 6881a19f-9683-4add-8b65-3fbd026e1c4a f8d42b3f-c012-406f-b66a-529853203fb1 88daf044-86f9-498a-84f9-0c85957a6897 06384f5d-09fd-4de4-8320-792b2cb6f227 53c7525f-0559-4505-ac97-e9912dff0e6c 5ae61179-2172-4192-af2c-001886953a3f c375cd5f-5b63-4c8d-bc92-8e42a9e76308 afd6608f-594a-46a9-b738-b3cdc77f5c90 f70816d6-17f5-4939-aeb6-8106f0eaa213 a7453337-55d7-44a2-a4ba-cac4b455e06a fd22ef0d-b788-47d1-913e-ca43a143be3c 19f7a5bd-41b4-4ff7-8f13-f6fd87e87e88 bff508bd-482a-4c6d-a8d9-cc06667c799b e4018f3b-ff78-4084-88b0-e1b571e5025f 96db4a2d-8b01-4809-9b4b-9fe4433e5f74 4ce96dd2-13e1-4840-8a5c-8b311544188b be0ca11f-8f6a-4535-959b-1c108f956b12 01d2dc44-c52d-4227-8d5b-6c59a07427e9 ecf24819-fd5c-432e-a6fc-a0bcead01c01 c1b5f123-d042-4287-b7ae-72121220d011 4b3501bf-05b1-4b0b-a07a-047fb9649031 4a844c9b-b936-4c6c-bcaf-cd94818d0158 a6261489-906d-4288-9717-cfff508619bb 05f8e3a3-0469-4bca-8106-96412893cd64 3be5cbe2-41d7-44f8-9bb5-b0b2e76f10f0 3146f1e7-9a03-413f-8745-2fb4fb05651a 1b3393c6-c4b5-455b-941c-ac26a941e5db 673187b9-aacb-4959-8418-2bb4d931a531 759f64ba-7168-4bfd-9a14-d16af5331fdb 57712356-5e0f-403e-b363-fc71d53c108d bfdce97e-6419-48ea-bb2c-70286482070e ecbf10ff-e63a-46a6-9d5f-67f90f826199 5b8be433-bffc-4977-8142-8ce9cf6fb935 a11e361c-d100-4b2c-a0ff-aa2a0f4ee3d8 5a86f418-6ddd-4b07-9610-ebc60c4b30c5 33b35575-4eee-4172-b829-1270435d4888 a7fb5d22-64b7-4551-942e-1f847c7c1d62 3da412d4-2fde-429f-9d0c-04525b801772 230e0732-e845-4afe-969e-18c955ee14a5 365494b1-4056-4048-8bc0-6ec77c973013 4c9d1764-ad6d-4191-a294-d235a3dcaee8 a3318274-57ba-4c2d-a898-ee2ea6e09ca9 b2b805d4-931e-4c21-a17e-44cf8ee50720 50bce132-d137-4acb-9cd6-f1ef8eccb944 939f91d2-d1f0-413f-b252-576d26c38192 3e486bb7-683a-45e6-97e0-be5abd8d983f f89e7a0d-e006-4b4f-92e5-1f9103b2c4da 709e7309-7696-46af-b87e-534c6074663e 5cab6e31-f409-4623-9204-3b8a7b1f553f cabb491a-6b15-4e75-a633-756c3d5df574 2a8440cd-e53d-46f7-b811-f10390bf5ef2 4b986120-b669-415a-bea3-571fe8bce8e4 40dd6749-294c-481a-846b-0271a9527b19 344b46d3-3f84-4894-9323-6750c0f58bbf f1b646e8-ccf1-425a-8a90-53e167cc2e80 06dd5869-ea26-4734-aa0b-621eea6a1087 251d5a49-4caf-4324-8565-3831039e64f0 9d24a28e-82ca-4354-b2e8-8d01e35d3e6b 672170cc-3cd3-4305-8635-20c6e678fd59 ae2dfb90-faf4-4632-aba9-baffc34230e6 d28e58af-caf0-486d-8cfe-f2432a6b410a 8a692fe5-c36b-4d7c-9313-a178fb2b6598 4b15041c-8d39-4383-8e41-c3e926bfa211 8e5de896-b308-413f-9fd8-9932a91c5c21 1064d315-2bf8-4799-8a47-0455f09ed015 635961a4-caae-4625-b306-16a5ba0e3259 7469ce40-51ed-454f-ad54-c0969b7e4a77 9688b373-4d10-412c-bed3-f7b6e3c59135 f4a81b7c-a41a-4810-8832-0a21825b8bd2 375ca8e2-4079-4303-9e51-5aa3c7172e07 72a2d0c3-0dbc-47e1-8c49-d8f5cc93d164 2d3233d7-bbb9-4045-96c4-a36f466db2d8 4c01ff93-6506-4cdc-8e72-f5f314885fc9 b532f288-14e6-47c4-ab8c-29b6fcb817f3 b247cb8d-afcb-4d7f-9488-cd4a46f0d453 23e9bf87-5f69-4254-ba8e-f509adc00ecd cc003fca-de88-4f8f-a5c9-6b677a51d30b bfd71e6a-4351-4c0e-a17a-b9dce6826741 3fd7ffc6-5908-45d4-aacd-e4a6cdec7746 4cc9d651-0475-4393-894e-c0d22e0ef65b c7699453-9175-4613-aad6-bfe96c35f8af 6929683c-e139-4083-9e40-78b2d1374c5e 344f3220-8319-401d-a6cf-513a37fcb0c0 258c3d39-0e8c-4c9c-b29b-908af8c747a6 083b8f93-103c-40d0-95b9-3bd87c2a3292 cc58bd94-7e18-4513-a15d-a670d1113850 c1fc431e-a170-45f0-a5c1-ccb4efb4518e 73cc8750-1e45-4fa6-a088-e1cd39312df6 57e5f42b-6cd9-4406-8d2d-415c31193cdc d180935f-46d3-49a7-bece-01df634c46a8 4e72cfb3-0c4c-48ef-bf93-9082a812eb28 1a09f024-2910-4374-add2-5bca71753680 a4962756-d176-4a01-9a23-839f601f8ac3 aad508e9-70da-46a5-9acb-ab2ce7d653ae 52b552b7-fff0-476c-a4fd-9f6757a4ddd3 3e5d931b-118b-4025-bee9-083623100e17 3862ab2f-3bdb-4b53-9a87-90d7a4c7cd4e efef1a64-86e1-4bc2-a377-14271d806032 99efe1f5-ac7c-4d58-b34a-40f462e26def 7f8fea0e-0a2f-4ccc-a9d4-58ca88cac2c7 8a47f29c-e6ad-4c8c-a493-5f2f489c5fd1 9ebf1e63-213c-4a63-bf14-1f6ac88b4633 57032fe7-03c6-41ba-8cae-2c95b2857cfe 4621a9a7-2604-446e-a8b7-7544e0c74e35 3621e754-6fc7-4d92-894a-d506d9bdf19e a1f7b3c0-ab52-43b8-badd-a1312dd8b0c9 383d7abf-52b3-4b36-abd7-3915aade80b6 650ddc45-007f-4bf5-ad9f-7a5f52612607 bbac0643-65c1-4980-932f-6d6ab7eca768 9dcb795c-5e86-4166-9e85-c22efbafd2de ec3e3980-c49b-4398-aa65-59f94f66a4b3 7bcc0492-5ff3-4b44-86fb-8f380158150b 66f18bb4-7b95-400a-92c7-f41c4b06a7aa 922c0c4c-b1c6-4155-94f2-63c63dc16136 601ca1aa-7f6c-4c6d-8884-130063066624 8a2eb102-2816-46e4-8cd8-f19a194982c9 b787ab39-3466-421a-acae-254394a8cfd1 ffab6ddc-b799-47b8-b611-3207f444101b 8854a41d-94eb-4adc-af27-2b5c04165ceb 349e926c-f6c5-45a3-851e-3e2aee4e51f7 28426cec-4fca-4435-ad43-73c54e08d3d0 3e28d94f-7a16-4790-924f-714dbab66b4f 1b75b334-7332-46c9-85c5-18ecda4a21ac 6faa0992-885b-4ced-a03e-6a3f778b0eac f5d8366f-a5d9-441f-8e2d-e0e866819256 5a56250a-beb9-4aa9-b542-72bdd054e607 f581b2ef-b82f-4a22-aaf6-3a7307cf4b48 c7ea724e-1026-4075-b722-5b393c8992ad 562b78d9-c9f1-4af1-b3d1-6f840d7857f2 7b516ba9-7a12-40fa-b0e2-cfa83319e5c2 d3c33f43-9a74-4cad-96e9-035575955c3e 145154b6-ed9b-4990-9ab1-a6277bace6bd 8cf11f34-cd92-4729-9608-8278603bff5a 18197997-7397-4520-a894-2f2ab9f85bcc 7c2f54e4-2743-4574-a31c-67fa04054650 41dec0c9-5edd-45d7-b849-9104ae737f45 177ffeae-24f3-4e82-96a0-09f04d19937f 52276965-a886-42ec-b400-62d230aeb26c 45186021-3325-4c17-837a-9c84ddc18526 5f40eedf-ebf0-4497-9abb-b7073fdfe91c 964f5618-01e2-4c97-a87f-b53d68f7c5a0 e162c5ca-b84c-4949-8943-e35346fabfc9 5e8e2640-8c5f-4b80-810d-dac80d59a69a cd2ae41d-4f25-4d4c-bfe5-6c9612c04657 5ecab69d-1045-41f2-a08d-6d6d01d54899 313ad41c-bb7d-4e55-9d8d-d5130c64b977 5cc3776c-1016-4d55-a3b6-210267de62d5 100a0a71-67f1-491e-8256-3e27b7462df7 e477794f-91cc-4c27-bd81-12924b7f5aa1 1b94693c-7697-4858-a3d3-4e5944113a99 b08098c2-f99a-48ba-8521-a2bb7a49d8bf 75094f80-22c3-4acd-9abf-2f6e405a45c6 38d32c65-22db-4571-8752-d1660c089ae4 38e4fc77-3a3e-4d47-89c0-b2402dc33681 40254851-3f75-47fa-86e6-f8a182ad5046 5d68259c-2c19-4df4-b02a-615bd8382fec b07452ad-065e-4b51-b05a-76da7b52868c 3e0222f6-edef-4ce9-a584-a270352b77e2 1e119d8a-ee04-40e8-8a7f-7127d5fd6958 20079ea4-ba52-452c-a98d-f4db91923df3 089181be-348f-4527-afc8-e90ec15262c1 ee9fcced-54f6-43d2-8e38-b656cbd0b4a7 2df8b3b2-c20d-4165-8c7c-c8a7e71b0378 6516a88a-60ba-4865-bcdf-243499544e24 8bef98eb-dde6-4950-8202-08e846564fa7 7e44c905-9491-4b8f-85a5-452ed92d8900 eb2feb69-ddbe-4ac7-a35b-dff6caccf675 28ba09e7-f412-4080-9cae-2af95b9681c7 654d4f80-0133-42a3-9dab-2017ecf70181 96f792e7-5dfa-440d-86f4-984f4dd468b8 7183c165-05ee-4fda-993e-28bfefd7d77f 17a6bffc-77b7-490f-8010-0183a0a80da9 93136188-5e1c-4c4b-86e6-2a60c7098d75 94606393-c060-4b59-93ee-4404c2cd7644 49592770-8fd8-4ae9-8758-2faed3c40049 9248d38d-5a6a-4c1b-9229-70525849cd9d df9bfb3f-4b04-4727-8369-3f862e4de8d2 054ea1c1-3595-4009-93b1-d55398ede0ca 2cb3d927-fee2-4165-b420-4bebe9d4eb80 3c51a875-e13c-438d-a899-866c7fd1cab2 d28734c6-35e7-44ee-a570-d0dfdd91e41e 837844c6-5d23-4347-96b9-69eb5b710e10 fb36e63d-daa2-4697-9bad-ad9b76620d0d ec5301b6-232b-4f1e-adf1-1bf6ad4584b6 32e817e6-e838-4cd5-83c3-b5d6979fbf3c 4079950e-35c6-49cc-bb70-b13f8c49c10e 94b14472-9f6c-4440-b8c2-8f212d92cb9a 8083fb66-3803-46cf-b7af-fb9612ebda06 b1b30a20-814f-46c5-8d6c-4a486c827039 6e39fc4b-361b-45da-80fc-3e5d30ba64c5 271d8a37-5397-482a-bbdd-afed247ec261 3f57dc70-e188-48c1-8732-afbc286c0eeb 3d927400-2fbc-48e0-af14-52c4fe3ee01b 5ca8c316-5772-4132-a407-24d1dcaaf495 a91b2b42-64dc-4522-86cd-95ebaff076c4 60c2533b-9b57-4218-9947-a7bc248796a1 8754329b-8e90-460c-9bd9-83291bcd7471 7bb81e3b-b915-42ca-bffc-5311c4cfc8f7 7a4fb6ee-7afc-4357-bda1-f9c0a03dac2c 8987fe9f-2711-4aa5-897a-6335892e9aef 8e6d39a2-cc31-4cd6-bc6d-fa0a2cd43a50 9ced3843-eaf4-4a43-af72-7d05ffe1b232 d212fab4-18b0-49ab-809e-6c5b0ac6efe3 71d8eac1-b9eb-4f43-9276-0e45d84e8b5f 5fd4ff0b-bf4c-4d97-a066-a93c46fce252 87161125-4fea-4a74-9ad2-c45a3e692c6d 830ad940-e3ed-49c5-991f-45d9544c578f 45c764fb-a2d0-4695-ac59-88e3857820f5 bc45849c-5d1d-4335-a784-6fcee933f994 ff5b2199-81a7-47eb-a70a-1ce845fc3ee1 cb37ed6c-3af0-4dcc-8914-e45225ab424a 210c0b22-49f8-44aa-8f7b-46ab77696190 c3df2aab-7de3-4628-b280-34fb9b0bc8d4 1f4d7427-1c54-4c03-b093-e2fffeabd2a7 fe9cc2b5-c11b-417e-8839-06ca737c2c78 96da0874-775d-42e5-a20a-6c73fb35440c 58b2b0c2-bf1c-4bf5-af0b-076f6954b3f5 923544b3-726e-4dd9-80fa-1a212ed54efd ef0aad8f-21f4-43f2-989c-28b05b7f4977 3956af29-661c-4c86-8cf5-84d39a0a94fd dba60fb7-f0cd-4778-9b76-909947897299 0e8cd7b3-33b0-4e36-9331-79e881228bf5 629a7dc0-7a93-48e2-991f-22cf5f92c894 cbf9a158-bf86-4fb9-970a-9694e0945b60 94d9a2b8-f7f4-431b-ae94-7c3b343dea25 3859ca97-e37c-47b5-b864-579fe0321ff3 721db5ec-4dac-4d73-92b4-c6c91efa3e70 799e0468-1acc-4957-968f-2b8af30b8659 7ace067a-f39b-4895-9a3b-9a00cf2a74e5 d933ff0f-311a-4a6e-bcf4-e3adb70d80ea 28b5b4c7-7820-4e1e-b3c8-7ab323c5b072 802b23f8-119f-4189-8f6d-5d91a4c05234 345923a1-fca7-4437-9ccc-5cb61007ee33 e158f7cf-6d2b-47a8-8c13-ad716d5cc407 a9d0465c-b528-416d-a942-741e8fdb6585 854203ec-c062-4ca4-8e69-8f25db3cba57 bf465a8e-fe9f-4c07-af6e-d8e4a265fe84 12ea2cc7-e311-4096-a9a1-007bf38233fc 5e2bcb4c-e61d-4e16-8ea5-22c06ee1c2ff a1aa0dad-5434-4b4a-9617-eeba043a1848 f6c34590-cccc-4496-9986-521058be18e9 17db2ac8-b087-4e3c-8f3a-93c84b39d44c 6b48f47f-f4c7-4e06-b53c-3b3abd015b4e 9678d6ea-53c1-427b-9880-402c169d12b2 c7248609-018b-43ba-ae15-f4cdfebe54b7 d58730f2-9508-4c79-86af-fcb21ab41845 1b06a11e-8d69-4ac9-99ee-243afbefa2fd 15a8b7a2-c4c5-4a52-9561-e9f541dcd282 f478a455-6151-4b6b-85e2-fa32e90fda70 b9e27ba2-6c45-46c9-ad2f-5cb37727e3db ca065ce6-cfe0-42ae-8529-2ee8a140b4d3 0a14ef89-7dad-4b72-a4e7-a06e653ceff4 fc56359d-2076-492b-8362-698600071ec4 a7370b12-b7fe-499d-9f49-7f8914590150 137c154b-e2c5-435c-bb5e-ef3934bfe33c bbdb95e9-cf16-48f3-8ca2-d2e6120b6104 35476fdd-36e6-4ba3-8b1d-c8465b7869c5 24b2beef-911e-45e9-8c98-2b1f6c56d8d7 bdb4a0b0-92cc-4ff2-a61e-464cb2dc5c58 0310fa2b-0e7d-44f0-8b2a-1d352a5223dd 3e4c5d0d-e539-460d-811c-1f510004b656 1f42181e-95dc-4fc5-8f2b-a73ab8993743 6a217df6-71e3-4174-bca8-bf644d872c0d 30a54973-e94b-4c45-ad81-f23bb483537e 625b07bc-124a-4e6c-b631-3db4af1b321f 887f1025-a806-406a-a693-de74ec99d8a2 e3d993ca-c5b4-4d6f-8dca-54ff4d462f2a 8caa7a7a-12d4-4afe-93c4-7f2fc94bd289 921aa569-d571-4823-a763-6c20eefcd95b 4f4ac9b5-a1ff-469f-a38a-7cd5a2fa19e8 0d379cc2-ef4c-4419-b5f8-9f745832b5da 9c3e1d76-0681-4359-b075-148718c55be3 ac3b0c74-2551-476e-9185-d787c4409f40 57c35d25-4999-4dde-8fde-9110239253bb b00de5d9-cf7e-43f6-b206-3409e036c880 53ad2efa-00f0-4ced-92ed-4275aa9cff1b aa204c67-a4e7-4db8-9fe2-74c8527f5f26 bbbebf3a-081a-4677-916a-5525fd34a5bb be3dd01e-af17-41fd-b12d-9ede43be1710 1429f8ee-9b22-4b0e-8af2-a11117b2bbef 942d0ef5-c214-4613-a9c4-59d7e9a6ce7f 7dcd24d1-f0b6-42c1-8e3f-d9cc46ce4d5b 77424ef5-a020-41f5-b307-67e6ede77662 5a9b7348-95f5-422a-8d1b-b2e88e5f7b02 765e1cc5-480e-43d7-871c-c3478c046e85 37cc136b-de39-4c8e-84a5-e9aea1024e52 19843a39-5301-4151-82ac-43db6cdb675b ccfdd935-4d5d-4644-9c5d-4155f9fd63de 69df4b97-5319-416e-a9c9-4d2431133305 aa256f60-ed76-4d67-b845-20ff19f93f61 1b38377d-2d5a-4b9d-8d62-93e24ede233a 86b1c85e-09e8-455b-9762-4459309c3370 9d7374c5-1ec9-4b73-8749-d8dac193e5b0 f01cd143-d286-4086-a04c-8e47515062f8 e0fadcc7-7458-4560-8f69-4bafc15b3260 b21c5e32-c739-48d2-81d7-3471de7df6eb b38ae01f-8e82-4321-b82e-19e24afd73b1 7efe9dee-d0c6-4eaf-9965-914a26cb59b2 b44d320c-e7e4-4aaf-99aa-02221173fa5f 82aeb88f-6ecd-4363-b57c-0ec62ac2138a 299b7d62-f3dd-4305-a8ae-27130a18893a 941fcd69-c43e-41b2-9066-74ae46912da0 8e223ec6-11e0-475a-af6f-7648ecdecf84 12758bed-7403-4c49-ab18-b39e9b629a02 3c8dcb6f-9c70-4eea-badd-86876c634067 87f4dc91-ac90-43c2-af9c-8b9ce551f135 c4f07fa9-29a4-45d7-8cda-ca352e137ad8 844dc7a5-3515-4725-b1fe-1b57e45bc0ec f14c76b3-5bf9-44b6-a79f-1c934bf4cd37 b2704f34-a304-4abd-9e6b-69ddce547b69 23c0c913-5e08-4c7d-896d-fb758429b50b 0c67500e-e16c-4939-94d2-ec5e4860b72f 345d98a3-2517-42a1-8604-01f6ee1aee2b c7026052-6d9a-43a7-af3a-df942e3fe41a d86a5538-fc3e-4b6f-9fff-4f76cbfd2e1e 4fd7019a-2249-4720-b80f-fb5787ecc589 2da9de81-cee2-428d-844e-5dafb4eaf858 7f6a468e-7f13-487b-9b9e-de97eaeb36a1 70ab083a-55a5-4c44-8f12-1ed1dad7c547 6fdc4eeb-6b6e-4df9-a809-fa1ae7292e7e 10d6ee73-fb7e-4c81-bc23-21c5c346a365 47d9258c-89f4-44e4-9c3e-5b6d1713853b 64d0aa51-10fb-4b72-947b-e745d04db5d1 15cb5410-a673-48ba-8adf-804fa37de9dd 983492f5-5e2f-4291-af6a-a982b1fe1c68 abaf1ade-9de6-409d-b59a-039940eccaed 1fe19918-fa38-4d95-96a7-3c9089c773c5 fcd2aea6-3c5d-464f-81d6-171adb7c52d1 05732a40-41e3-4949-9d58-e636cf8e6332 cc440f6b-41c4-4821-beb3-12093966b3b3 7aa50fc0-4b85-42fb-862b-053b6e919537 e7c0c2d6-9b08-4a94-9f19-024322ea0ad9 8560b154-1082-4ff5-bddf-39b3da7b77fa 1ab5cb9c-336e-4bcb-8e2a-7feadf93edfd eb286dff-a8f5-4144-95a4-72d835d93e01 f0a73d97-9035-4bca-a8dd-0ead0858a140 849e0da7-1502-4856-a807-77cc9271d48d fb5b3ac2-2a03-4ccf-8cba-cc496aba6349 c5bde6ca-ffbb-40a2-9585-0b43191935a3 987c4b8f-c43e-4b0c-b362-e643fe626f59 01a479db-2bad-43e7-a0b0-cb4757ecdfa2 e5f4c2fa-82aa-416f-a7a9-ae7195709bdf 3d8f31ed-01ed-424d-b78c-a91c26a8039c 2a9c0a45-19e7-4d83-be86-d84d380ecc82 16c1d27d-b35e-4c65-96c4-b0812340b19b 6b7a7c30-c720-43aa-a4a6-b908742923db 800cdadc-9175-4dc9-80fb-57cde6503493 aa225a5b-a5f9-4e61-b2cb-f9757014e83c 62cd3454-0a60-4cdc-b950-26ce0517e447 fd611791-f539-469d-86a4-3c341172444a 668cfe94-5281-47fc-bfeb-cb10a7e31924 d1d5bbce-ce2a-4e1c-831d-157faeabadbb 3f0272ef-80f4-4fa5-9916-75fa05666f19 2814eb3e-2f9d-4b95-ab8b-8d4618d259b4 63dea437-4df3-4313-84c3-c4a807a80bef 347202a8-c34d-4c40-8c2b-4f06ce692384 99c5a856-1e42-48f9-81b9-ee371de65293 08c904e8-82b6-4067-86e9-4e3fa5752305 51d26d06-e193-4431-9903-4970356a7dc3 9f08b652-c07e-440f-9b25-353f4c8d7fe5 6e6a7263-4ec4-4e5f-9d3d-e89962473517 26c44bbb-58fb-4ae8-a270-24c01d989041 9c06e0ba-a9e4-4bb1-bdde-1526012d8bc6 b1bdb873-1aa7-4955-ab64-60142dff36fd 4805a970-c4ae-4c85-abbf-05a87c247fbb b569208a-9693-4166-8f05-9b4b7977bb6b 3c5497db-07fd-4338-956d-4c1117ec2aab ce0aff62-b889-4f1c-8265-55f137ac1f93 a28f54a9-8531-4bf9-846c-0fa32b33b02a 26880e24-9fb3-47f2-8e2f-1312d0ac9547 08085239-e346-421b-bda6-2931061ab323 c7db8344-1a21-4a9d-82de-21a28214f5fa 5fa86c72-44ff-4cc1-89c3-37b91f127fae b59db0ff-61b5-4b35-9e38-300866158cf1 a2f8b035-bea8-4afe-a4c9-18f388cc9e3c 4ebbb2fe-b56d-4374-8377-07816471c6bc a47f7517-24e2-44bb-bece-44d687d68d2b dd54e3ba-9d77-41af-9d54-d787608688e4 0aa4b017-8154-4e95-b333-e343b651e35f 344ae165-46fb-4df5-a81c-40054655eaea c9ba3947-99b8-4edd-9e8c-9e3e44451040 2ff895a9-c16b-4348-92b3-72964006de03 4dca09a5-dbc6-4aba-abac-5725b1eea0ce 0fbb1a56-f7d6-4c19-968d-16e70477e329 a86ecaa9-92cb-4f30-9da3-620267e66dc0 24c33100-dac9-4c8d-bce5-77ad312a41fb 6a723a95-800f-40eb-a2df-e4a460a7291c b794abfc-f5b2-4b87-b0cf-8129ff9f3c04 f8d7ef05-6954-4054-8ce6-66df35a120f0 3dffa39c-9f3b-4ca7-a36e-7c0532b92b06 e256b1d1-de9d-4db5-addc-4927572f7580 c01cfa57-d0d1-4eb9-95f9-81f376fe1a2f 08b35431-797d-41bb-88b1-f3feee4f3032 c65d3f54-632e-4f47-988b-c570e3c9a3a2 6ef767a6-ff1e-4b75-b9fe-3c84e77e9ae6 c41b13cb-c3b3-494e-b4a8-63ecab5db6a8 9f90bd3f-0c46-4523-966d-273cb150a08c 67960f02-78b3-4861-b150-162eb97dc2c6 9128e804-6989-484f-8286-219d10ab5dc1 3b667a66-c203-4c15-a984-fd7c57174d14 b6f4b36e-b159-431a-b804-fb9243317e3d f0c2ff0f-d709-4722-b794-47c4d217a058 a88480ae-dad5-41cd-9812-ed7b8ce65d6f 02948d31-ced5-4c9d-b628-e2f357e08349 c2fe1d9e-b07f-4e75-b3b6-e56780fe4631 fec59adf-f846-4ccb-b873-dadf0c0f53e2 5a0db095-ab10-4407-acf5-5660f5600d08 885c6c9f-7c50-47c9-957a-e292e1498799 a750ae47-cbf2-4d0d-85f0-261d16b15abb a74128a2-5637-44d5-83b7-559c45226025 18f6b8e4-bc8d-4a43-a7d6-b9271880f259 2b12491a-ebde-47d1-b448-cc4b032dea41 deaa8914-20cc-4b2c-a136-25ea228bfa16 c5c48237-2429-4421-928f-b545d9f89495 0db0545d-dcd6-43d2-ae02-28e0586757f6 68d7f54a-e883-49a0-bb90-bde83cf1e206 928d24e3-fce7-468e-acd3-c00f9504406b a440ad8e-22d1-4cf9-977f-e4f8e2b0c995 3516733c-524e-4d7d-99ba-3e247e709112 c0304b0d-0acb-490e-afa9-b3ef1ff8b864 4bd851cd-f5aa-482f-97a2-46ff3cf4e7f5 c739f58c-9ada-4cee-94aa-984cdb1ca84a 8b52afd0-793c-4d3b-b10a-59a0814f7c12 2fb7992f-6f75-46c1-98ab-ed6d57d9af28 66794811-3b9c-4ac7-82b4-6d9093621dae 69b6dd7a-c32d-402d-a834-445ec19c69d8 739eff47-1c78-4805-8f24-2459bf9066cd a1efb5dd-22d7-48b6-974a-0269eccfe86e 9cd9e899-583e-4144-89c9-d9ca398efd12 33bab6e5-9c6b-4d82-80ae-cdca6f5609cc 66eb0bda-8046-46d9-a5dc-cf06a66f8448 1abc9b13-5282-49c4-9266-c2120d3b8b52 e2f8d1e7-adc2-4a47-80ab-2138333803e9 ed773c3e-9f40-40c7-800e-a9bd766c38ce 6e038c0c-84b5-46e7-8123-b18d7bcad702 54f1c57b-6e75-4d71-9582-590a543165b8 af5bc733-596c-4d1d-9b58-f0477378f25e 030a4ff4-a698-4bf2-8144-e2b40bd395c7 d5c6a8f3-cf5c-41ad-b894-efa4f4e9e78e d58520ab-17d5-4514-a61b-3ee1b033d966 6bfdc06d-fc4b-4a10-9a92-b307b11a4f95 a3000802-19c2-4b1f-9f03-f5d31ec8c0f9 97090704-6cc6-4430-9eb4-c8fb5160e80b dba83006-91b0-40f8-8263-9609d33ae9b8 798c639a-e1c6-40bc-8d52-58c38b9ed63e 31454945-32f0-4c26-b509-6c703e343ab4 e64340e5-148a-4b63-b7e3-43a59abe0a25 8e900e75-f95d-4ef5-bb63-24956e43eb97 9716e278-9c88-4a8b-a424-52db232ec5e1 10fe3537-a6d9-4432-b2fb-e6a9c22a1148 04705bc9-9e4b-4efd-9e5f-94dcc4910881 88d978c4-0425-4fb6-befa-ba2657e90d40 272e9079-4236-46d2-adde-12f497500731 5cf5b34c-c3a8-41c4-835c-f4c45fd5bc83 613afdfd-2b45-4942-bcc7-59eb4f53dc99 8a91f25f-2563-4995-ad72-47621912e69a c2ddd2b9-dac8-41b9-b4f5-cad8c5e6bd82 305ab214-d8a0-4932-b75c-b27ca56864da a26d0ba8-09d1-4860-ac84-731816f962e8 4cb69b08-2aea-44f0-8260-37a64d1f45ad 74fd0569-6a2a-4db0-b673-5656355ea10b 977ee6ab-654b-4fb3-b4be-a87f414ab5d5 17bd0838-8b27-4a4a-88db-01761ec74e23 2e563e0b-2bfb-436d-bff1-ed9bb7e21174 4e8f8f44-860c-42d8-a668-3f9253709a6a cbc2819c-bd8a-4ad0-8533-697eefe6d577 ee7692bc-672f-46d7-8431-cb9056a7cdbc a2b0dc8e-4c72-4292-aca6-4992eb032da8 09d4cdb4-41b0-4793-be63-0e334353d912 7507eef5-adaa-4eca-bd08-cde025042fdb 466d0c75-9781-4f89-a3c9-f8d55defd844 cddc0ef5-2106-4932-938b-348d6def7e13 0ad96582-9aa2-4f38-8a6a-5abf10e0fc88 f25bf0e5-7746-4119-9222-46b18f53f48b cfc81ffc-fda0-4219-a025-de9d51890cef c035393f-3529-4fb5-88db-89741cc69221 5a913405-a612-4dbe-b03f-4438e44914ac 2915fd41-3c6b-4215-8298-30ff5a9175ce 797715bd-99fc-4598-b444-4d28e73703ca 0dc9e26a-3723-4a82-8ca1-0ecb4aea3ea9 e1157e44-5fe0-4414-93dd-3f939b53ec79 2882d464-f18e-425b-94c0-0fb0b6966a3d 7bee14f2-51c0-4629-a8ce-e5af898a325e 13f1da52-3624-48b9-843d-cb338944f64c 51ebdf66-7419-4914-b7f5-12405aa9c6db cec33a2e-8335-4c8d-aa09-410909e11798 c5ff4795-9245-415a-b8e6-3bbc4cfe5d39 f0a8307a-d4c0-4a85-a9d4-4387aab93a2c 83e4b62a-fd17-4731-ad6a-87a9561f8f0d 3e7ccbd2-c6c3-4c8d-8d9a-4594352d5eb4 12fa8e10-a71a-4ab6-9fee-84f7c894f501 705a0eba-7f3b-46f5-8cb3-c41fc10c41e5 75455e15-acc1-428e-9c0e-9bbcf171196e c420b795-7f16-439c-8b60-b19291c5dbd9 d8a31feb-86e2-4131-a9a5-be60a6feeadd 1ffc08be-7326-442a-a3e4-fd424535f45d 68f295a2-497d-4c89-b005-a4701369697f 478fc300-bdee-4e18-9b6c-90e3b355609b 9c0bb28c-6598-4d5f-91e6-944d443f4cea 2ce2ef1f-afae-44d6-9321-18695c7e1d99 0b74f4bb-a131-4344-aa1b-f71512166afc 66a9ff4d-9709-4ba4-b4b3-9e81221b8e45 4576e0a5-e789-4e8d-8e3e-310ee51ce402 dff1a065-5924-49ce-9bcb-80eba053e3cc 8d38f654-1c28-470e-9891-b6587868e7b8 ff902d8f-7716-4d42-bafe-6d97eadd0ecf 73d8dc82-de23-407a-80e0-76349f0999b0 0c01676c-84ae-4f53-89e6-5667a987e775 bdbe6ef6-12e4-4243-860d-cd0793636294 4e611041-42fe-4e30-8c28-41a6abfe01fa 1f2ccde6-a2a3-4206-b638-d618c6f2f454 38fa138b-215c-43c6-9683-705f300a7ab4 f7b4639d-17e6-4ba5-9da8-a85790d289af 3ab1a44d-a98b-4791-ace1-7e265a68667a 82f9f98a-c714-4b12-8684-df152d938018 55885b22-cb26-4158-a75e-12a36a11dfd3 8164182c-df69-44cd-848b-67b4ca537a4d 402d1968-db93-47a4-92dc-b1b7dc0d0546 3a89d211-99d4-4c66-8ad0-57e67a01abd9 94d4dc35-929d-46ac-a3fa-add540a5618e ee83ecc1-68b3-4f35-9f50-9354fbc2c467 6fac4840-cf7c-4cc6-959a-a7c12f9d67dc fbd624b4-3046-4d35-90ac-6f6bb2caae25 14a5c54f-7eb5-475b-a740-2248b5a5fa8f e652929d-7a33-4ed5-86c0-d4359a8be3ea bec40c3c-7d2e-4b66-b1c0-0af66d1a6f8d 62f47ca3-abfd-4e30-989b-ee141bda0e8b d51bb1bf-4dc0-400f-b642-c26809c22139 66ca4953-0ef1-465f-a008-8689b49f3642 a7012789-159e-4553-beb0-4f3bbe9aadad a58337bc-d8a7-4266-bb43-084d2d54fda8 2ba9cc58-fdeb-43b0-a3b1-0b0a997464b3 1e8a25d2-80c4-4e45-8c43-7e1887672daf 6018f012-5fa0-4423-b2f4-bd8acf5ad62b f1f43d7a-3664-4615-a507-664312f92e2a 41353a73-ac95-4ad6-86f8-63f960a11881 a53f564e-a2c2-40a3-8a33-b8a56ed9dd9a 3302f309-36de-403e-95c2-75430d6d81ef 27eb766e-d746-4239-8f59-6cd91a998785 81c4898a-39d4-4b74-9ca0-f6e6a4191601 4f59cc57-b927-43b9-8acb-8ecb00ee5e69 d2848108-1f09-4b15-aa3b-87ce4101bdcc fd699e8c-cfe7-4d51-9234-56514eca62f4 1bb50a98-1d64-45f1-852c-3b9947d52e89 f8076813-fd17-4594-84c0-90561b8dd8b7 53ebdc3e-df8c-4d34-ae34-2fac2707b542 574bc3d2-cb1d-4adf-9363-19e6fa999636 0e684176-19d9-4b1e-88b0-9ce049413802 f8009de2-70a5-46e5-9286-5db5445f6c6f 524014ad-cefc-4f92-9eca-2ee85a06ab82 2fd95b8a-02b1-4d4b-aa28-f726940f50af 47f1b001-5bb5-4b89-9abc-dc791b81eacc 4b29594a-3304-41fa-be90-6eaa738b8cec 051a0877-d607-472a-b4fb-683db7547e31 dddfb39f-f160-4775-b53a-ec9abab5a70e 5a95406d-0f04-498e-9f08-01783b0bc36b 344999e0-c008-4d5f-ad38-42ecccb7442c 243d2459-a93e-4db7-aff9-c804b2c008e2 a190ea9d-5fbc-4408-9853-3b8bfd6712a5 b7470fc1-10b1-4ce5-b0ad-db4e825b56c8 e72bc342-5dc0-4ec1-a237-39fb4dc546f6 1c6db2b8-6764-4569-a95a-94dca8992c56 cfe02baa-11f4-4ce0-a962-7923a3945fb1 b5fe9c61-05a0-457a-a803-55a91eb90fc9 0bce8bbf-5031-4be9-8e5b-b98ac14fe7c6 2b9db9d2-49b9-43bc-b548-8ce14ae5eeb6 4b282004-6872-43d1-9a95-8b605b866cf1 36b9389b-5a2f-4c05-892d-51fd2f06e60e 2bdda44d-c9f8-446b-9f8c-9b1fe5160a4e 25e63933-88c0-4882-b663-16d639a34b61 07a5ff58-344f-4371-b5c6-2644282b7f4c 4f27a16d-764d-4339-8843-57d003bea4ad 6fbcf8ce-200b-4f36-9990-78d936e90b05 5739e143-3fd9-4684-b45d-2ae06ba24292 40937f3f-e442-4154-8305-dc257f01dc72 39e40011-a44c-4ae8-8d9b-ad849dbc9cdc 50ce17b7-8aa4-472b-aa25-3c64c4363b77 bb964551-f4ec-4c79-8ab2-2d4f86452ae4 1ff9e0c9-3d72-4c0c-9f68-90c3042c4161 1f16d533-1a60-4f11-9728-447f8bbe0c9b 36cc1d7b-c956-4560-901f-9f222353b74c d32bedbb-7a83-4541-ba73-4ffef015e6f2 c70a23f3-ca26-42d1-af31-fc8a702f6531 75cf1130-e0d0-4902-b2bb-82ce96a135e1 0e42cb1f-eef7-4f55-aa05-d074e8d46b34 214d4932-41c7-47dd-8212-f003f9b8255b feff3535-733b-45d1-a7f7-e10eac82b2f4 610e0389-42c5-4a41-b68f-a71c6cf380d5 cfcc6644-df89-4bf2-a63d-ca322d4d6caf b3fafdba-5758-4cb7-93d5-91386b3430c0 81b375ee-ebbc-4bd7-8218-3e1cf148f265 8de87af4-dd90-48df-9c31-f67bb842b274 f20cc2c0-015e-4066-adfa-d95cc66a09ee e3eabb11-f94a-4c62-ac3e-4dfbb1da2dcb b2689322-b858-4d80-a9da-a79973c34589 84af3099-7c9a-4afd-8df0-754fd142213c 223e3cec-2c00-47a5-95df-94057a32f9fe c0e97be6-1570-466b-80ba-ff1249fba219 2873fc82-3002-4b41-89ad-14529b30ce8b cd82300b-5780-44a5-b1a8-036510db78cb aa5a2505-4f47-40d5-a4d6-5ea8005ef03d 206cf8e3-c039-4ed9-bba0-c48dc1f90002 78b17c30-1158-486b-9601-691a2a87a8e5 30a69f18-0ba4-4a53-9540-007000544003 12647a4c-c1e0-4be6-81c4-cd00bd1bd6f4 178c69b2-3fd1-4b80-9847-67b397f0f4ba 07e2cd1f-4454-4d07-b52b-30039625a102 c95fa277-6e44-439e-9d2c-080b6375cfdb 7f4fe1a9-019d-41b3-91f4-808dae5e9a5c 0d5c2c6e-3a2d-4195-ac58-dac18886f9fa 79c538a8-37f7-4761-8404-442e8c38fead 03e71af8-1bb0-4a87-a1d2-e4aee7a4f840 4089847d-8e1e-44e5-a74d-f4d765504716 800a3270-be7e-4b7e-a8fe-41fcac07d67d 669837a1-d1d8-4256-9244-293687b24591 d2155518-9b32-45e4-a7e1-8201727b6a71 c6c02410-299e-47ca-9087-14d4a521a7a8 e67fee8a-0f90-472c-a7ac-5aee38cb3b27 3138fff8-f433-4eb1-a928-bd20d88e7196 f9dd1a93-32cf-47ad-bba3-01398e723e71 16d537cd-358d-4a7e-ab39-74ea2f454b37 d4cc42ed-0333-4be3-83ef-d9613261de8f 60e1b255-6205-456c-a42a-a58acfd3b45e 667bbae4-3dd9-4b9b-ac35-644171482359 45130af2-73bd-400b-9ab7-97c3ed304479 61d44995-fac4-48ea-98de-ec8ca393c223 1e82f73a-5ceb-4cd3-acc0-0207d9fffb5f 2e69f1d5-0966-4332-ae95-210db11dcebf 311f539f-5072-406d-977d-e7b81a7fe430 0aeaa9c6-0a52-4d43-886a-7ec12be21763 065945fb-331a-4798-8335-787955a2b0fa cfa0635f-cfbb-4434-84e0-5d35e1df15a7 9950ab21-6e6f-4763-b998-d3cb6b0ee705 fc7cc762-f699-4b2a-99c6-52d51905328b 7076eb8d-93df-45b2-b908-6d1de778c252 cbf6a8c7-4b2f-4fcb-b127-3148a5590595 9e468893-5abf-4eaf-99e3-ba362ba7bf92 f5e70831-41f2-449d-bec3-ce24b3edcf5c 05314e9a-29c5-457e-90ac-1ab557722af3 3274571d-6d40-4023-a1d9-f3e764f8b42b bb9ee7b8-9076-4255-a84c-e92d15b01d4b 15d2537c-6f0d-4ae1-a0b9-eff76d5dc691 e462b117-f7c5-41a5-8143-a7b036f31920 c17e60a2-93c2-4c61-8eb0-405326f85ff7 68d75752-de2e-4bd7-ae69-1227b5683b52 083de5cb-1c85-4fa6-9c7b-31ef3db98ea1 814c266d-ed5f-4281-87e3-d79a49bdf40b 3008b7ed-06fc-408b-ad57-417f96ac7311 44109671-8f11-446d-bc9e-65aba054cda3 af933a43-778d-49ac-b207-5e754df7917c 75e3511a-ae39-440d-a123-6cddf4c20257 3aef9f4e-b421-44c5-926b-25c41566331c 30603a5a-ef98-419a-a482-e56585b0a2d4 981e01e7-59f9-475e-b0ef-e4dd33c2ddac 856f6925-7074-45d4-b387-863572d254b6 53ccb4ad-b490-46cf-8a54-a41528cba16c 3ea18e48-861e-476b-b491-d546f3b83e81 3370480d-9c8b-49e3-bbdc-039b5a5a6d02 d59adfd4-4d0e-4b94-b2a6-0b8861c134f3 fba9f0b2-8817-4c48-853e-6e9a2316001d 88a04f36-c12c-47f0-a8fc-ade25072e5e2 41176903-954c-4408-bc03-4b1ee251a166 310e6339-e2c0-406e-8c0b-757852efe60b cc5ba1e5-567f-4b9d-9b40-89d439353b32 eac019a3-9c22-4bf5-bdd8-d00e2d4af4d0 c4d9be41-3c29-40b0-99ac-5aae4b909a69 9a0b1c37-c4db-4a2a-bad0-cb97d26a5527 515e9201-5286-408e-9c5a-b8eaafb4a12b 09cc3a2a-d674-4cea-8eb3-af5cf99227a9 8086bcc5-6059-4327-ba73-9495182caf6f c3ed8cfe-f19a-46f7-931f-c70ea6d74a4d 4ad611c6-3cb3-410d-8cdb-7d3bc533d7db 1bc9df55-4d2c-4fab-9494-4cd346aa1af3 29971106-632d-4e02-8285-dc80d8c3c7c3 5a90d1a4-ef80-4fd0-b56e-d26a0eed062e 0fb74865-0223-4018-89f7-888628c7b657 75c328c5-ddf8-4957-8f0d-eb625f7ce2fd 426fb32b-b515-4f37-a8aa-7b0032100431 7adebb85-7ff4-4667-9ae2-7b8be8ac0236 a8ec7b4a-e77b-4ed1-bfce-b65715eac9f0 92c30169-1a08-4bd0-987f-0b8d604ca5e1 3d05dd6f-59a3-4aef-92f6-b82511afaba2 f866aadd-9ffc-4bb7-8491-4aaffc81b4be 5ebb84c3-8f52-4d36-b0d0-415a18655610 640660d8-9157-4fd1-8202-42474da8b471 f7802862-5809-4c5c-9a85-004c303dd47e 1a6d07ad-813d-4496-bbf7-f6551bd87883 05787393-60d6-4b8c-a443-9dbc7d35246a 989fffb8-a346-467b-8e62-aaf68a99c6d3 2d0e1a79-4dea-4d31-9a5b-e4577bc23910 6058f1ce-4feb-4eaf-a513-9891db48be24 c534cbd5-475e-4aff-a407-7f12f01373b3 b8ed4054-d706-40e6-a0a9-c544133c6a5d 722892b9-3e4c-4479-aa6f-5120fe6784fa fc0470ac-3ab8-46f7-b0e4-79546bd13ce2 c982aeef-9feb-49a6-8044-0ec5ee9fe4a2 a0f4c990-c19c-4aa0-8ebb-6a0310664c3a d1f88d49-3dfd-4944-b6ae-e6fd7d3969b6 291b8a44-5b8a-4275-ad78-4aab9af2d0c0 7d96a363-7ad0-4a47-9516-30534c1f0550 9c49db60-4c7f-4239-8f2d-45fc44f2846e cf61ddd1-5c85-470c-ac1f-972fa2e38161 1058fe77-e8c2-4cd9-997b-3cad9dbb67cc 3e074028-78a1-41f5-a904-ea6df8a619b1 e831dcfe-f460-4118-9bfe-45190aec3d7d 8fcaff0b-69c3-408c-a986-451494d0ac68 f5c273c7-babc-4605-b9a7-4350a5777db1 46e211c0-a61e-4589-9fce-6228d5a3f40a 0ef653bc-e7d2-4c23-b3e5-d0be715416a9 5ff31a1b-2ffe-419f-ac6e-703d4167fad4 9839d78b-2ecd-4c32-828e-0dd30792f9d4 8ea34323-36a4-41ba-9aa6-f8650796daa1 fc190df1-3a17-42f0-aa6f-33916cdd3152 ca625ce4-9d8d-4338-b893-d068fafd7674 4ec60fbd-ed72-44c7-a3fb-6832293c7f30 f2ac4423-299b-417c-94ae-911ff3a1c8f4 915976e5-d37d-4e67-98f7-b91f8cd256da c7bf73ae-a865-4fc2-9f42-1bda0efb4c7f 940132fa-feb7-4c80-bd9b-f03449c6c010 00a486e4-4bea-4c0c-b102-40937d2faa2f c467c4cb-3401-4071-ad8e-45781f73c3ce cf6ee9be-2328-4c04-bbe5-91b15c51bdca 47951f70-9e39-4714-9b55-ee629285b3b2 9b3b0f82-f1a6-4529-9565-17621efb459b 45729dd6-2fec-4f9e-8d45-39a3d953af48 a4832bba-d43d-49d4-b473-a55c6972e756 3a535a8e-9065-4987-ab76-1cdf62282d12 240edfa1-a6de-4b2f-b831-7dd1ee21ceb9 7d289023-13ee-4917-a5bb-3c66cec9e6f0 89579965-f1f8-4fe2-aa24-e198fa1033ef fcbedf23-4349-441e-bfa5-7ff118a707a1 26df5056-5f07-4ae5-a5f4-0dfe6e00775a e55b0fdd-8111-4d74-9868-19e2209a240b 132d98fe-6d97-43a5-9999-7d423ea3f536 9faaface-5a14-4023-b387-729cd27af4ad 04093b4b-7741-4fa0-8823-805523e23573 dc07baf8-10a8-45d9-98c2-da562fcc4622 67b8ddc0-1eea-457e-8570-9f89e1b075ef 1ae549d3-8e00-4061-a483-b0081ff79fca 2f6b3c2b-f92b-4d77-bece-2a2375ac5d01 5d205f50-739d-4678-ba5e-7c4f37c47261 78261fd1-5d96-48d9-8c59-744fecedcd01 276bcb83-47e5-4512-a684-a5e718b0e2eb b393a44b-bdbd-460f-8487-ecfd6add32f6 d225d329-0bef-4ee1-a798-0dc0df24928c 16348a5e-bfbd-488a-b96d-c479b9a44250 ad697e21-0bab-48fa-9e00-1c8186ff0ab0 1bd56f1c-9d23-460c-ad23-2e98e119520a d9ff2827-2a91-4b86-bd00-85bfc4df5888 99c09f95-1479-4822-8060-18a4c9048bc4 bb43fd15-70c5-402f-b37a-5add4a941a43 bc1543c2-905e-475f-a8bc-b3099ea7b856 0a15b625-a019-44cd-bd96-f0a771090892 7990b926-fd82-4792-9250-81197735bc56 b9b8d45e-0442-42f5-b19b-ac3b8a3a6851 338fc43a-a95a-4b79-839d-648b5016793d 21dc49ff-e4b7-440f-93bd-7290fc4188ce 30b50ceb-edcb-4903-b95f-dfe10ad1050d 9658cdf4-2226-422b-b462-1d2e977b57b7 d5afc210-137b-48f8-8848-54869a65fdd1 3a750e25-30ba-4032-84b1-18c07fc49b57 dbc078db-a81b-45ee-ad71-24c35180567e 0de4f8a0-6710-4195-805c-ad0323106ba0 8fedefa9-2a00-41d7-acf9-b075fa690861 abf16235-573f-466d-bb18-124bde199ed9 9ed20969-5384-4dcf-befb-2ca0ae81e6e7 88aae762-fb3e-4239-96ea-0418d99036bd 75fad954-e113-4728-bfdd-02f21e86cfb4 312f5ac0-fcb2-4832-9aee-e349c2e75b76 e9260259-796d-45c6-90cf-173a32b01c5c 575d0e40-44cd-4e85-b02c-bbaede21267b 3fabd56d-175e-431d-bfa9-ebbb5baadfe6 56f61937-69ff-4d87-93a1-7096f9877fd5 5292b8e9-d4bc-4452-a8d9-f0a26ea603e6 a937d3d4-c958-41a7-9bff-89418d20fc61 d490fa64-838b-4ae2-9a33-5d948042a288 c13c2fc1-b9ae-45ba-9ac8-7a85fddc55d7 b20b1342-d921-4edc-b71c-8c5ee16a9fc3 dfe9259f-f730-4cfd-81be-eebffd2564df 8faf3f06-b2e8-4d12-b800-be2427e9bb82 6b4a6a11-0361-4b2c-ba9c-058ece656ef1 a2181a0c-20fc-41da-b7ae-7e79950eab72 997c32c6-6269-4576-8b9d-28cbd259979f ccc776c1-719f-4c04-b6e3-7c14c987688a 2257e6a7-7016-4886-959e-31bd0e38019a 9e9b07d6-3712-4334-80ce-25c9fc967af9 e28c7410-79e3-4db7-b3ad-5a5804004113 f584d243-dd3b-42f6-ba11-47061e2c7c21 c1181edd-1eb7-4532-bb0d-26b61d246df1 cb039ac4-f1c6-4e37-8dc3-52b6996ec10d bc663a92-b1d0-465f-a77f-ca8dabc0503e 561bc777-1fde-4110-ae84-2fa6c24f1417 66f79e2d-a615-4dba-8f8a-690f7a02efa4 35b5b228-cae0-4e8b-8e36-3b9aefa18e47 b9f390da-3909-4e81-b4e9-bbece31e7c06 72ad772c-7772-45d2-89dd-07f1b7e9ed38 9ae56d1b-239e-470b-a470-1446870a4dd3 e0abb885-6111-4a98-86ef-36ac786df879 bae8e7e8-17b9-44b9-a5f8-aacb4c294a8d 9f0a8273-c3f3-40ce-8da7-4f998c8274b5 836671b3-a3b3-40b3-a9d6-66cea1db616a 4c53a487-e4c8-48ec-afdc-f3cc9d30c3c1 743cff6c-cca7-4b9d-bae1-70f291b273ff ed3f2212-a8d4-4f30-abef-0ffc23565c4e 99632e24-b07a-4c81-bd3b-bb460e357320 d9bfe35a-b38c-4d62-adea-0b67c1e5ba6a 213a59df-1e6d-41b3-9bc3-6c035b160a0e e5c7baa6-7126-43ea-bee8-eeea896e0494 f40339f4-46d4-42ef-bbb7-af6ca7c1897e 86a9ccd8-7d8f-44fb-b0a6-0ee663156999 9936a5a8-bb9b-481e-b2ff-d9e4d4b3e095 b182fab8-a694-48f5-9e4e-ad3e552c4717 0f407374-1d24-4616-b9cf-25d6980e6198 94654cb4-8bdc-4932-b5fe-26da8813a665 78dbd9a0-6043-4ef7-bc30-b429229dcb92 4bd6dbd2-e79d-42b0-a66c-61a6029d56cf afa1c2f7-5e1b-407e-b39d-2b9e75822e5b 757ca31c-06c3-4c93-b739-69b6e65cf0c1 95688de9-71bd-4c6d-9df2-57d6867f44cb 50556d46-17cd-4b99-938c-3f444dcf60c9 5102831d-11a2-4917-86a3-5513be22939a 2eb3afb4-dc4e-41e7-b2dc-be858eb71838 6baa4046-97f9-41d9-b974-c5aedc24a172 7e908c21-7901-4260-a456-67858550a2b1 f874604c-53d3-449a-bcfb-039188c570f2 b4014905-5742-4593-beb4-2e63f8925c50 ed2a54b0-4b39-4e68-8acd-a9a13b44df50 30e33508-7480-4d7d-97d9-829635307dca b059babf-12e2-4699-a3b1-8b5c7e9fe71b 61153d92-7cf8-4493-a713-a8d033556509 73e7e7b6-18c5-494e-9586-7444182b5c93 1e2f1d2c-9a6d-483f-8c01-72e172ac4faa 7c44d4a4-1b34-4a8a-b648-1891335c739d 2de415bd-3cbc-415e-b3ae-8504e7a82189 d279c54c-b64b-475e-a624-4c3cb2d59ab9 fbd39329-2e00-457d-98ff-e37ebf5c588e c17cab9c-3a91-4e37-ab52-5ef439e844f5 3681832b-f321-4591-b251-2c45746733ac f747b0cf-a30a-40b0-8004-6ab5410755a5 f84071a4-13a9-46e2-afe8-dd49cd86e85a 950dd958-2a85-4eb3-ae6c-4b5586b9977b c5089ef4-8522-44f7-bc5a-41586737108f 3d1d5e73-0df3-4662-b0e7-5fd48b2a9a60 9856665d-ddab-42fc-bd7d-64ca62effe88 929dfbb5-cd75-4ea7-966c-326756b9b671 b94d82ea-05d8-42e3-b06b-96eb2f11bc1b f5beae28-1666-4e5a-b33e-b7a51c4d40d7 9a680638-7abc-4e0c-9029-8ad441902206 272df179-6342-4f68-b3c7-3bd6b14aaf54 5563c0d2-91fc-45b7-8e80-dbb82882d570 8d2e19f2-2943-4bbe-88b1-e46cbc6f6ba2 1a45e363-3d54-494e-80c4-ba9788286d74 0015ca63-88eb-4f35-9f36-80405cbe0aa0 99497b7c-7e40-473e-87f0-8f42c896ae5a 59620cc9-e700-40aa-9a28-f7f326a0641a c64a63fd-8a8b-4dba-b458-566d60cd98e9 fb278b70-2f2a-4546-a368-d39828ed4392 8b84b6c4-bc5e-48ca-b7e8-85ed809c4754 8afe07a2-246d-40af-9188-a43663356082 8a454670-7013-417a-8cac-3639a91dc8a9 f4499532-d493-4da4-8d38-cbe87a166983 a03c2ad5-cfbd-4b3f-883e-9b6b5069142b b01d36c2-943c-4f56-8e88-009a349f91cf 922dc7de-9e62-464c-8308-3dedf1cf4ad0 cca19ef9-5673-42e4-8df0-5cd663d2fb92 e63d72f7-6e48-40ed-8ee4-3f592da06348 e57559af-f630-4289-bc54-e841c6054d11 23097e90-44b4-419c-b810-f2f7240092ac 8dd982cc-aa57-4749-879a-765c6942dba9 ee014070-7f1f-4521-bad5-036c6709896b 96f698c7-b01a-4612-b074-d67f4d8d4a77 25dbf916-356b-47ba-92d8-4a66b6e17b56 fe832954-d5c6-4525-9fa4-483a287cdaa3 bbd6e50f-924f-4a5a-a29a-bf90a49892dc d0cfe497-ac1b-4175-88b0-249802a169f2 f2d20146-56ec-4a59-a797-c495fe2bd7fc 827489bb-5427-4226-8184-07cce9a06c30 35729f01-1225-4837-828b-371014e950a7 aa3f90de-6de0-4d5d-9a15-9f19f1af74f3 4dfb4272-fb9d-4d7a-8c17-0229b64d8084 d78da78b-e1d3-4031-92ca-5acca258d870 1ca1410e-3fb6-4f18-8d24-541ce9c9404c 2e3683e3-068b-4c34-9b0a-2ecd1de73a39 c55b55e0-c749-47c2-86ed-1e83062da1b6 09e1721f-b0c5-4885-9598-a373ef3ac009 bc1cc966-05d9-41f1-bec1-e02de49632cd dde93192-382e-4671-860d-51e5ee6271bb 48af7750-4f22-406c-8711-6a62ae1463ca d0c25e89-8c3d-49a0-9857-6e74b55c53f2 a467e48f-a9ff-4be1-978f-25ce48dd1436 db980f72-c670-4bf5-973d-d7d983eadbc5 7aa64062-c0b1-4322-860a-92cdac086f7a 94a38be4-7f54-4f6e-8fc6-04a4b2db587d f10ccbf0-76c3-42b8-a8ed-b5c15c39bd02 e93ab4b3-a6c1-4f3b-b342-ace4c9dd5239 bcb0f5e8-a13b-4f78-886c-0ce54c55648a 7ecfa616-6c58-4ca1-bb36-c632e1696e61 29533133-6129-4f1d-9d19-b91eb522b95f 57ea2978-28a7-4853-8150-956d31f19545 c025c87b-c2b9-4f4a-9e75-283694e42da2 3d3aaa9b-3ec1-4926-afc0-9fcb672931b2 ea230b08-3104-44de-b282-89960c504c21 b932ee35-e557-4aca-ae7c-9072a9851f32 67a73f44-369c-4480-b910-2b7818cf636a 26efd18c-f711-43eb-86d2-380bd18db4e5 35842bc9-8b92-4386-acc3-0f68b0ef940b 36331e71-f4f6-4883-8085-6b6dc87f8e33 ab18490b-6923-48a8-81a6-6099e2fea6ec a2c5a5fe-bc54-4c1b-9e6a-aba92a18103f a57c0175-08ce-46a3-b2b5-43225bda848b df962a1c-02b5-4243-aae4-9f44bedac80e 4f38e1f4-bf2c-42c6-96d1-50e43fccb823 cac2db47-1b18-479b-ad41-625a87d4b995 fe3eea0c-a961-40c6-a353-492bae537648 876b34ea-2e6b-42b3-9704-edddd6688177 da67bd0f-ada8-4938-a4f8-f0eec13288cf 09d8def5-5656-4212-ad60-7b8e531321d5 dffb1475-219d-4221-9716-6fda2debe89b 4ec9cf6a-521d-481e-92e2-d8721c7d7af5 369608dd-832b-4a38-aab6-7a9edab80de6 18a91a8a-c0ff-4a35-b238-481c47d5331f add348ff-62b8-4f8c-800b-bee82e7c5534 34011724-ddd5-4940-aaa7-c98f7fc4f429 9bc91049-166c-40d8-99d5-e80c07c1aa9e c15d5434-c26d-4f69-9e66-1b9ec65df245 327b4005-3c4d-4423-a919-bdeb18410276 ed27306d-b921-4a48-b218-03e3ddd52b31 aea3c09e-e536-4034-b631-57a61def6763 b858fce0-45f5-4361-a237-b78bfa54f363 757a2724-9bcd-40ee-999a-fc03b0aa82ac af13182d-fa78-4a4f-8d5c-56dd58113f09 0c72b6ee-4b7f-498e-8505-b4d2c050f52f c818df99-d096-4dcd-9046-d8c8057574d6 3ccd79ea-192a-42ad-9da4-e2f3af26e633 2323956b-dab6-4303-b772-c5a6c075d306 f3243ce7-7898-4a9a-abbe-d03eef20cca7 9e1c1d4f-e49d-4f86-9515-1f0309c0f370 32b49b63-bb06-40bc-af25-fe9588bd0f46 e4365a7b-7736-4871-b4e4-94e543660d0c 375a1ffa-6b69-4983-87f8-5031fa2fc9d9 2ce44bc7-b44f-47a2-9b5e-988c383d72e7 a4814233-334e-40a6-88f8-315d70c887f0 856ade73-3753-4de3-b9f3-f296842974df ddb7a84b-0868-4676-bb8a-e0b0300f5180 5e21176f-2fdb-407d-9880-c33d8e8f587e 8aea50a4-72c2-4299-b319-8f73a109a0f7 9b691edc-3473-4f45-a0e9-9d89af27efa2 a32f5c25-e201-4333-9a34-0cd5fadc6dfa bfbc8b7f-71ac-48ce-b8bd-868a56d45107 86be59fc-643e-4e71-a56e-e231d8a6dd27 2910e443-f8ff-4b7e-8141-2031fd7a4c1f d6328d29-5e82-49fe-bd84-60014f1507e3 49102fdb-1917-437f-ac85-06748f60409e d6cb800c-da2a-45b5-9956-491ed20a3949 b5b0761b-5a32-485f-a50e-006896830473 635e8bf0-7f3c-4225-b5a2-846117bc677f 1b870e22-439b-4f78-8a57-3f446ae8f66e 534541e4-5404-4c2c-8921-1fc779a5f71a 723f4370-cf69-4f99-911a-b7f05b453727 e2da6479-0022-469d-ba0f-6cf6dd24fe8f 289d8f20-5bff-47aa-a2cd-f8236e98c202 34e66239-205f-4bee-a25f-d52abe60284b 52aea339-2d6c-41db-9f89-8f87f468ee87 60c565b9-ea6e-4ef7-89cb-9bf97ef96c22 08f9f7ad-2f9a-4292-969c-d15d0056df7e 6583d0c2-cb2a-4b88-8de1-607d1c5461cf 1865fb06-ae1b-4366-9be1-b2026f823fe8 93a8a3fb-fa7f-48b6-a470-6e2e08921f97 12e9d968-d3fc-4383-ba0d-46b7276b006e 75f8fa1e-349a-4fcf-936d-feaa6376aa24 dd607033-e92a-4231-a3e9-1b69df19c122 0b928fd0-2137-43ca-a3ee-18c356e01a1b 77d15055-9f90-43a8-a54e-e7160fd85f0c ffae6566-c36b-447f-b8d2-e17d8eb957d4 63ae8d33-0a75-4008-88b9-d65069f53678 c90f7630-c5f3-4d54-bea0-63e15b514bf1 744694fc-eabd-4c00-81c8-22e175b250fe 3f4d9626-27e2-4a88-bc19-c9ae09572026 fad61678-7bf2-4b6d-a5d6-46f138a5f494 e79ba47c-3205-49f3-8e45-9a21b470783b 89f2dcfe-0a04-4566-937e-cd3091ff24fe b22babb2-147a-46ac-8c30-5d7eacafc9f7 432bf5c1-5097-4468-874b-d9f2b593aad1 e5821f38-3af2-4d0f-88a9-63060c3b2629 e805d855-cac6-4977-b7cc-b00c9f5ed099 ea567800-941d-4b7a-a8d0-45e24d4ff4be 3e7cca28-30b1-40e3-9cd9-30ed3adb063d a7725d1b-9069-407f-872b-56074d0f188a ebd63da0-ecaf-4582-aee0-b5f48682157a b1575432-9f5b-48aa-bba3-e4ed4bdcc5fa d88ab7f1-f13a-4d0a-b3a4-f0a886e829ae 1da502e5-945d-4dd5-905e-e9ce01e2a173 8f08fa99-58c1-4278-a27f-af381ab77a4a cc692293-db4c-4992-bef5-55cdd51f3cdb 3a767330-5f71-4da3-af28-8baf4962c1ac 26e53102-cde3-4e0a-86d8-488ffc7628cf dab9e513-7d79-4790-aa93-61ea42ef5d98 c0952e59-9e71-436e-92aa-3b577789cfb3 aa454c46-555a-454b-a59e-3f91852725ae fabc080b-bf3f-46ab-ad3a-3a321fa40b30 5ab9e846-a978-4f58-8069-7290f2289e24 0f5f3b44-c574-41eb-8915-1627468708fb 70eac981-9c2d-4d0f-bb8e-ae1a657b5d39 87cccc4b-66f6-4750-be06-f49eba097076 9f165026-a259-40a3-885f-33fc2369621a 89e4ced9-10bf-4342-ab3b-37dfb004c71a 53dd9500-69f6-4aa7-b783-23b1c8c487ec 465c4389-31db-42fb-a197-43349bf0caa3 6135e073-24c7-4808-a333-dd7a4bd59249 d8fc69ae-6421-4d71-aa3b-cec14c735feb a9668912-2bc0-46cc-b759-b11ef3777742 6c75a7f1-327e-4613-a51c-257bad80bc5e fa684ca4-80c8-4d4d-a260-efe6cf9d8e18 91a13337-f6c3-44af-a75c-ebf1e415cc1f 9a8dac15-a4de-4637-866c-5df8f08467f6 f94657a1-594f-4801-9d9f-0c776b9634b5 8eb0f180-d176-46d3-83fc-22fe29fe33c7 8e7a9df9-75cc-4e99-bde7-f512c5d0ab2c 372cb75e-f3c8-45f5-9ab9-cea4792712a7 4cda9ee9-2fb1-4f48-8036-b0f7ac792446 71b5fe32-acc2-41a0-9fa8-84df6c51b0dd b51c6ddd-b59d-4094-8d39-dec136d7d128 30069389-1b35-4747-881c-f94e48f8468a 04b6fd06-450d-476f-9b1a-32d332d6c57a 1fdbe93e-1687-4a2a-b6fb-276b5e9f3ca4 dd3211c1-9335-4ba1-9518-48d0c858c88b c26452dd-4b91-45d8-945c-6ec8b3f7e845 8ad159b7-94f0-4534-8705-32d2ddf0a579 fd96ea06-adaf-4d1f-9ee2-4faabce7c907 0c52188c-8f07-4c52-a6f0-40b99791d5a0 c52a8e5c-de5f-46a1-b50f-ee28ea77b52b 5468bf0d-c204-4d8d-866a-da8fb6a5bb19 6da9aa42-7e62-4677-b626-11e21e976ee3 8e8661f8-860f-48d7-b65f-f886460955c3 1f83dbce-b323-45b2-a7ca-f947c5a24ade f4f1910d-c8c4-4ae6-ba7f-1ce61e745128 fc58ab9e-8de9-4b95-87a4-f99de894c315 d20927a8-f33a-4125-950c-a28553b4267f f97baf6d-2d47-4113-8497-1bb8c7dffac5 b634fdb7-6e3f-495d-9bc7-9b9b35eb9dc0 7ff7b4d9-103f-44f3-8561-d1453a5a6a06 77fa0846-98dc-48eb-9f43-89419634ccb8 3a5397c5-9c8b-4a1f-b038-1c25634055d4 73dd5c7c-f477-4534-a673-84e81f0621cf 8e006088-c969-4ec6-9fbb-0de0da792548 683c0806-e93d-4a4b-8d08-a34a14d4157e 3254c0fc-9023-47ad-a7ba-71b3c8d8a728 69170847-c887-4411-8006-5fee14247ba3 77ec550d-25d0-4e48-95f2-82308a7c67ce 03dadd73-3e54-4d2b-bc61-351c113ac419 95106284-3bfa-4ab7-8f92-4dc114895da0 f8070dda-d208-4902-b128-0bb6e5eb6380 439ede4f-9aaa-4ecb-8af1-0c272dd02d94 71270f5a-218d-4866-97bc-f2b0a6fcdc80 1782a70e-00a5-4b9e-b112-fd83f8431c7f 76fbe2b5-98cf-4b70-b621-76c30d580742 d3e86151-40cc-4c9f-8942-5f2468404f70 fc6300f2-2831-4c29-9655-4f1f79338e78 5a01e41f-34c7-41fd-970a-153078eebf3c 389ca756-6eb3-477e-8132-0ba3a9f44232 18c7c39b-e3ed-436f-8974-a6f585586c94 caf50467-e5d6-4fff-bd12-dd47ff2e4d28 8c74ebb9-0780-4bc6-8408-1db37155c7d8 e395fa9c-2085-4676-b7a4-c09557a9e4be b3003467-5cee-4131-b711-8b462c2dbf12 e5dd7435-fb66-475b-bed5-788cbd3218d5 44287c66-411b-4e00-8aaf-079acaec0577 53d7e8d2-b2be-40d1-802e-c5aed2550d4f 7d950500-67e5-4e62-a0b1-efdf4db70f44 451982f9-6060-4ec0-a319-77635833955f 8fb428df-b0da-4341-8cef-485312d8ec61 91af9891-cddb-4637-bcf6-1bb8f4bc502e e05cb405-b8d3-4e36-833c-fe88af9495fe 547ba503-70af-4cc2-83b8-4844af9debcc 7345419e-423d-4e7f-a44b-8a808fa59853 aa0d9356-f508-4af8-9e8e-9a6f1e6cfd65 79f13fd0-fc11-46ff-9647-207df56ce42c 05137e4b-8216-4486-8df4-0405e0a00a1e 8981cc9a-973a-4a9f-a9bd-98dcb12c46c9 bb017202-61ae-4c2a-8cc5-477796643e14 e307ffdd-f58d-412d-9053-3fef54f2ead6 cd232eed-30e3-4c82-9e1c-f7bfd13a8753 f6906624-ad78-4d13-aa9a-8ed82085b513 02050ed7-c1b7-478b-a971-080dab1e863f d85df02e-ba31-432d-ae57-7584900a0377 1141b321-25ae-4c0b-8deb-1129d510fd4c f70009c5-eb63-44d8-9fe5-35cffec78ac4 8377e99c-a606-4d87-af8b-4336cbfee3d0 8fe56242-de53-4b7b-807f-63a585a8275b 151ce048-b966-4276-8280-089700f5dd8e 97cdc675-7fea-4b13-864c-ab3aa2c2355f 9beaf2ee-fd4c-4b1b-b8bb-271155e7a731 300537b9-fcd0-4156-a5f3-b46a9220e509 62746b37-2acf-497a-ab82-1553cc5a9815 839cee1f-7ef2-4cf7-be22-bbde779964da c6f130ff-8e8f-4ad9-ac2e-d3677b5e4e07 acfcbbe9-65fc-4d04-bbce-979f8dc02a6b b7009554-436f-4589-91b3-fd7bb5fd1699 b8698032-6886-4654-844f-25f190fbb12a 8758b4b6-90c2-41fe-9f45-ff516b589c6b e758d28b-c65e-4acd-ae38-2cfca7eb4b59 9cc4b135-a7c5-41ab-9ebc-b4ae4239b699 e026597c-ea3c-49c5-a2fd-94a8ba17526c bd400673-99bd-4b7d-8851-5de40f0aec25 afbb196c-fcaa-445a-8150-df49d3eb9ab0 42843e72-2320-439a-9450-2b2192a3fd8c 8c708109-39c6-494d-bd31-257627d6bd7c 11cddee7-e134-4455-89f9-6fe3682a5e1f e04c4013-bf17-48f1-9f73-b393e34fa905 da76e767-9e7a-4054-9007-de848acab871 12cea959-0996-4b59-a94e-df6e2dd7a278 d62ec8a5-ae58-411d-b474-02affff7082a d5b8cfa3-645e-452f-894d-e9c13e86f26a 9feefe3a-a7d3-4b24-8f57-2fdf423701f2 3ea9516f-2a59-4ff6-9fad-d225ae70a5b6 16051278-7889-4a24-8490-075108a35890 7288fc99-fde1-4b0b-9cee-0805d58aeecf d99af141-f435-4670-a876-dc5938fd7006 30bf8585-ef0c-4620-bd75-2dc6053ad6c7 ec637391-6ee8-4503-b04c-04f13166ff2f df055d77-71ea-4ebc-853f-75f7c31b0fdb a5512d4f-5c3e-4618-9ed9-b04f02e584b4 d1c1d923-7488-4211-8b6b-fc90d837c6f4 78b6a7cf-d34b-4706-9526-3ac6f496fdd5 9d8bbe32-9093-4f37-8430-7fc014b0817b 741af238-0dde-4b0f-820c-be66e633da42 7b6c8b67-dd06-49dc-9e9b-15e9981b00f7 ce2589ef-14bc-4de2-9287-068eea6da00c 20beeb32-2c15-4371-ba6f-71ae54673ee0 4ee06a56-809a-4b82-857b-993862f23715 901dbf11-5992-4a74-b558-dba103288953 55d8575f-14f7-4dfb-8773-35c659ff95d3 fdb221f8-9ec3-492c-a00c-d4b0ff334394 d84a4024-85af-467e-a40c-6f94c1e9dd90 d4d9fccb-a73f-4d4f-b62f-d51cfcff22ed 8a22ba43-b49d-4cdd-9bd9-8d276aa28761 aeeb7cc0-3c2a-4edf-a8cf-c7926dd65872 e9a6397c-479f-42b4-b66a-ed7d9cd7e536 b21b8042-4542-4d26-a3a1-fe94346a7078 1155c937-30b3-496a-a3e1-23766570ee77 213f1299-636a-4160-8fc5-1095cdfb16fc 60a62ff1-19d3-45a8-b753-5cab42e7ffe0 79dbb4cd-e6d2-4252-8b1c-858f7c2a5721 7302c3c2-96d7-421d-863a-cd320939fae1 fc6b76df-cf0e-4df9-bcbc-742b131776d7 7a906b21-fe03-4cfa-885c-54f3f292013b 22d5681f-1721-4b46-bc94-491b78cfbe0b 93cc06f8-d5d3-4fe2-b4da-2b9e085ce355 a6c4b4a2-caac-44ec-9ab5-a42a55a540c9 530b3b3a-466a-4016-91d6-abdc32a18ad5 8e925e2d-25ce-48f3-ab97-5b0f2399b9cc 8ca3df5f-7c55-43f5-bb1c-1407762705d1 6bce9c81-4711-4f54-8632-ae1455ecd32c 6ffde9b9-211d-4e82-a8d9-626e04945f35 8a78ed67-c79d-459e-a107-d6f5644cce86 f1ce137c-6283-4a14-bf9e-09c093b7ee60 d76616ae-0b85-417c-9b04-b448500470bc 627d4fab-25cc-43a2-81be-4b4e1c245a09 3cf4258e-5cb2-4da2-a39e-ce603e7ff832 ad73a525-63a7-41aa-8feb-9bc059b4955b a7ce35ba-25d4-4da8-8326-abab5790e00b 09d72ac4-da05-4374-8b91-a197bd376f96 47761a66-9077-4d86-a48b-0b5cd0d50696 a83c6086-ed4e-4cc6-a6cb-5fbd19c01828 4f31ce59-fe32-4eb1-a638-4acb6e9b9614 1abd8028-9e4d-4f1a-aeab-28d5583f3d31 c34aa6a8-dd78-476e-b292-7e2a2ddc5b43 aff492ac-e760-4b84-87ec-57208182c870 70bf2a41-a23b-41d5-84b6-4ee1390516aa e99376a0-8b24-439c-bb50-4c17f8c17170 1be07306-8eee-4ea8-95f8-009cdc31e130 361166c2-b883-48aa-98be-8110754e0508 35d66463-6a49-47ab-ae01-5e04875b81e1 a2a154ef-c02b-4cea-892e-2805962cc58c c8183113-e1e0-43a1-a875-e405fd2c5262 2991bbdd-97aa-456c-b774-2bdf61bd0b8d 536e3665-4880-4bd2-b587-6b9ea410b49f 94fd89da-92a0-4e80-b169-fe3c23317514 2071c9a0-3a64-46db-8b15-c3201c69b7c4 475b67ed-02fc-42df-8d89-431400491de8 b55f4288-1d41-48c9-856f-adb0eaf08558 24fb6396-f6e7-491b-b54a-700e7ee756d5 cf56c127-c374-4f1c-8356-3f89fee1cbc9 b153d1cd-d9d4-4363-ac00-6de58d2a2067 b9999b56-9d97-4554-af7e-aad025d80358 8b0fb563-7779-417c-9bb6-c3979632843d fa683744-7d10-4b65-9921-1034b92c4465 cd7eccd6-6ecb-43d2-b0ac-715d0196e0f4 853f18a1-f4b5-40cd-95f5-94d237c66b83 9e853b7c-461e-4594-86c1-ff93231698d9 f7ea63a5-1afc-406a-b0e2-8e894e7d1ec1 0a8cf8a4-6d8b-4084-aa93-7f32c24d486e 6b48aafa-bead-4c39-89e5-da526997085c b4e96343-4086-4220-9e30-16c24da53e97 aab5266a-c61c-405b-a4f6-2a11842e263f 7d22c2de-a9ce-4d24-923c-dd8da236587f 477c034b-ff5b-4ba2-b40a-fd009d1a936a 03fb8d41-c1a3-4522-a950-2fc2abe1dc57 a38bf374-6040-457d-83ca-7c05d63f7dd7 9296db86-334f-41d1-b4eb-0c8fde0c9724 73a43091-8c48-4e75-b311-a293eb1c22b0 4ab9176e-f0aa-4da9-b9de-6bbd58eb303a f7528912-1bc8-4f24-b3aa-ad93a7bf2b30 1ea27abf-2b63-4f9e-bece-7f7b4b196a4c 2252a6a3-3296-4ded-8dee-bbf2c97bf5c1 a00a6a89-df93-43b4-9965-364c182f4b26 de820bb6-a61a-4846-8dc1-e5fb0af6ae81 73ffded7-342a-40e3-b236-a993aeb2788c c36d9480-ba89-4936-a196-d6ba104ecd08 3324da05-837d-4935-a48c-6681c3af1ac0 f3c3e2fe-4f1d-4341-a318-fa0a10677769 ca7dd9c5-e8ad-4207-9fb7-6d217dafb0be c661c800-606e-4dad-bf8f-cec885a98b76 fae29fe7-571e-4cd4-9703-735d05b9abe4 f1ab06b2-32e8-4c5d-a64b-098bb4d4cf41 de60af07-697f-4641-a376-12ac946c4e46 a20e62aa-83df-4f64-bd59-692246adba9f 64709ac5-286a-44ad-9bdb-75d0466cc975 2e467e75-e02d-4fc3-8d22-ef46d10aa4dd 96f09ee9-46c0-4730-860f-a45a8c4f37cc 215d6424-e6e3-48f8-b051-eca213903a68 eb75fb6c-77af-492c-b8d5-6a944006f8c6 5236e6d6-203a-4b75-982f-9203ee4b99fa ced8ae36-eb1f-424d-b8fa-9bd1724ba8db 500b6a9a-9667-4198-99cc-8c8e19b594c9 5f0b0ee2-e43b-4894-9e6d-0d44ce6aaeef c631efdc-d963-44e8-8bec-66d50a965279 d12fbb1a-0504-4de1-b8a4-759713cd42e3 66aa4b8b-98d6-4ad1-a410-b344dc8c2652 cdd63d05-391b-4057-88b9-33853e1a21ac c5a9fde9-2a5f-4b2f-858c-fb185882525e 99c7d751-edbc-459b-a3e8-667fc1c155d5 0a3bc438-9efe-46a7-9add-09824dee224e 62056486-20dd-4a21-bc76-13d7a052c370 6299ce53-6c0f-4b69-91bd-4119cedd9ae1 c5778590-e425-4730-a47d-5926cb920268 2b8a8b31-f7ad-4295-ac47-c5609ab3fb3a fa4d0d05-0116-40bf-9449-b83d9fd99983 aa878195-ac48-4615-9f06-6cce95586850 05224317-2b37-4b21-9538-c1f9c560bede ad11c970-f62f-4950-992b-b66baa4b05b2 f175756a-fc51-4464-a72e-a03e483f49ae 06ed6ff2-4c71-4178-9afd-8b90e5c5c3e0 647cbde9-2743-4337-959a-a130c14cf73e e99e176e-a2b3-4ca1-bd96-d4685ba339e1 71bb2a8a-1de5-4b78-a096-f65ebb134569 3e1f0292-c7cc-4312-9029-7d602ed3ad20 34ce910b-0e42-41d6-9066-d81ccc02f4b1 129ee756-6f30-4eae-bab7-82871c2f1129 06ba2cb6-1193-41f0-8f27-8cb5d2af5cff 412ff319-d561-4d3d-b058-e1f609c127f1 01e420f0-0d54-4c1c-9962-bef6dc956a6d 0ee5cb37-8864-4457-9147-8b1ce481234c 99f608ff-ce8e-4627-9208-6799583cd6ea 08a9513b-bdbf-43d9-ad25-6d4715a61fe8 9ac2493d-1a6e-4133-a4a7-75822d7998d2 d8a0b4b3-a746-4cda-a301-bcc1681e7187 799afc93-b08d-4635-9434-6ea89cd61885 630cae43-ca0e-4ad3-9346-45c711395fc3 8796e1f6-00ff-45be-aa44-a2da251095a5 eead4325-203c-46d1-bdc3-262f6b073aef 8db4fae5-f4ff-4a5d-be4e-a7a0428098c3 ac2612b4-4afa-47df-a015-482cc1ad76ae f5be0e4a-385e-4e0c-913e-9f56831b88b4 ec4c16f4-6b8e-4287-8ca2-87a57e33073d 94818325-438c-4be3-9f8c-e8988654a2bc 6ee24327-d27d-4626-ae36-228d2b68bdfa c0d1c43d-3fc0-4901-888b-945a00c77328 ff5022b0-318f-49d8-9e71-73817f6b7fee a978e45e-da6e-4547-916d-1076969f1c23 8ed1051f-a138-4437-8eee-0a74b6badb23 53fbd742-ca7d-4fb9-92c7-7fd8d0245ff2 1b25d792-9db9-4cf4-8b32-daf312c08112 9498db12-35b6-40da-93c8-d0c74b7f7a14 56d19499-0e88-41f7-80aa-e1edf05d46f8 1c718eac-233c-41ed-80e1-3a5221c522da ded97e2f-17ee-4aa3-a96b-04ebed828117 e6c1b850-b166-424b-bc04-395772e7ae5e ddac6b83-d2b5-473f-b4b1-b95e47a17c03 3c450eb8-eada-4d8d-9976-cc3d4227d222 4ae04dc4-fe3d-488b-833a-f2393eaafba2 e0a89815-08c5-42a6-9fd6-a97ea82158f5 03d94128-ec9a-4244-9b9e-aa0319bfc904 61a626bc-8c65-45d3-bd22-d2cd3cc601fd f457a67e-2350-415b-a3e6-8cc4b33de526 955657e4-3dd5-4df0-ab33-5f3e80ffb5e7 2d819300-5566-4428-805b-8f1a12224659 6a783f82-db6c-4ed0-a245-1932e2565c62 38a75fd6-dc8c-46f5-a845-949c52af629a efa92e21-2c07-4731-959d-70166544f4c8 2531b235-d53a-404c-813d-2bd4698fbb81 dc5c858b-0ad2-47dc-9191-bbafe45e0464 4f41fdec-82fc-4474-8706-a4fc70a61b13 72100cc9-b788-49de-a644-12a98314f1f9 e1040854-a213-449b-96a0-19b6386a5ba7 5a3b63f5-3d9b-4d1a-ba83-cb6e43bc7757 15f2db2c-7ff5-410a-8ab5-31f335231e0b 68bb7be6-85b3-47db-9b83-fb717a9e6b34 27e83494-c3ca-4377-98bf-20baf08a2233 0a968d17-7317-41ae-bcab-7710745d6210 4619b89e-1f20-498a-9811-0bf86c9acded a6171630-8d36-4d78-9007-8fecfab903c2 ceaf3566-e9a8-44b4-836c-dfa56064d8c3 af8558af-4a84-444d-8bb3-e60ac8a46da1 301eaa6a-3999-4057-b918-7aa58ce9f618 1a0fd98f-6841-4249-ae36-7ec3ef84ebbe 02762754-56b9-4891-a2cd-d7d4b68c30b6 bed2f46b-be50-46e4-b66f-2c3bdeb825f5 df195d76-f223-4377-8186-db98ebc8fe3b 51fa0995-7985-4786-926f-759f12c9fc81 677e5dfd-849b-4e09-a3e3-ed8c4b8ab186 bd277195-a767-4522-8915-08b3e13335d5 f79cee1a-3285-456e-80b3-ded3faa4665e 89f8985e-1d59-4db7-a0d5-135496e8c43e 64338666-8634-4050-90a1-ca22bbdefbbf 9c072ec9-3543-417e-9a02-cd73ec21e819 6b796bef-2c46-4540-a963-bda162ce5cea ef08fedd-dcb3-40a6-accd-467adc569f65 2776e698-f0f4-4cdb-8b72-41c857bae1bc 1d617c61-601d-46e3-8d32-47a2d3ec33e3 6f341f38-8872-403b-8aae-142276d5f574 8e06bacd-149d-4a65-86c9-105a5f0f8628 f178a563-72c4-4e65-af15-7e2b5966b06c ee5e2861-0df6-43f3-9473-dfd0f88d2e05 39ea519b-ef1e-4058-a9ea-d4fd376e7ce2 7fa9f6c1-2a76-4937-8ef3-2c159c5d904d c9629d9c-c435-4d62-9b0f-9770862da79f bfbf7a2d-c5f2-43e9-9b4c-7c76819cc0b3 1b5fba31-6f31-4145-9e6c-ef6171872277 c4989a99-febb-40d8-ae22-b3b975cc1de3 d3a70b45-49f3-475a-b032-99da8ac55469 478cd554-8d16-4ef8-b9c6-7bedd3859e5b 8fbef800-1900-41cf-8c40-5980a4dbf6c9 ae03c5d5-b85d-482a-b152-624b14ee4c24 636bda31-3756-498c-83d3-e2169ff8c455 90425be8-a3f3-4d01-9709-f543d9227455 a64fcfdb-decf-4e08-9968-4bf80e8cb230 ba4cd397-ee3b-494e-821b-267c0934ea4c 6fb3d16e-f57e-4381-80aa-92b85a2a6b9e 0b8c3551-04f3-4f5c-bef2-f855ef0e4658 ed654f8d-7886-489a-a49b-bb74b3ddc64c 651dc7c0-05c0-4c95-82cb-448d7cc6f475 5ca3c914-b6f5-4325-86f5-62710b5da66a d7014de4-b25a-4ed0-8bf8-423762509105 e3ab502f-bc2f-4c00-a818-3509a2ded274 08996d8c-63cb-421b-b405-37056319c593 2f30d421-da4a-4df1-a2b1-cc5b65cd2b98 10d12f72-9dde-4945-bc41-a6abb3f151ef 530c63bc-d706-49c3-acf8-6327e305c1e8 e10ffa95-1171-4a01-923c-3109382504c4 d437812d-5ee3-410f-a03e-0c8640a22aec 09c6955f-22d4-4589-a6e0-85e4c879c4ca bb8cde2d-f3dd-4570-8df2-ba417b8330bb ccc50b4f-7822-4610-a6c6-34d2a45aa4e4 19629c1f-5c28-4e72-9fca-85093f63733f 7377293c-9127-434a-a701-b3f8f6fdb68f 3264ad85-3525-4e19-bb68-fea837267869 65020884-4134-487e-adc5-0b63d255d5e4 0913c1b5-f7d8-42d8-94e3-8d66fc390a1d 4056a2fd-43cd-4594-b82b-42142b98a9d4 827e24ff-2210-491a-ac08-8fb6d963474c 6a9ab667-b99a-43cb-b35f-f2a6befc01b7 1865c4ed-89c5-49a1-9adc-eb4e6184353b 544e107b-be20-4e5e-b4f6-6c5c36612031 74b85a3e-29e2-4610-b170-b4e6644ce973 ac8918fb-7bb2-4dc8-aa55-ba4eeaeabdab 6d9e2bdd-847a-478f-823d-e3208ecb7ee3 c5f6c1f9-1034-40b9-a74f-7ddcc38dfdf2 1070fda4-2802-424a-bb56-98b32a424be3 4c79509b-d297-4336-b9c4-81d128ef4c98 189c00e1-1b59-4d58-96b8-21ebcd38a6a1 b6d5e406-9165-4e03-bf35-2db5471986b8 5cb320b0-c4b6-412c-a854-a15062767a3f 09292e9d-ea1c-45ae-993b-67ec58649ed6 d2e30cdd-1626-40b5-ad41-a76fdf923aa6 5eb09918-4369-4399-b480-b9112c031817 d70146cb-74f3-4b01-85d1-f3b4fd630091 a52d47a1-397b-46be-8bec-e647200f70e8 284f1348-8fc1-4c80-8504-e95e648a1980 3cf25286-fad1-4e31-8b50-fab31f199456 27b1a37e-eb2a-432e-adee-97bd6b4854c7 80bb1f1d-0976-4f20-aba4-d33bc9b7a088 859fccb9-6c73-46d0-826b-ab82e945d8d3 280c146b-d650-4cc2-a9e2-49055663860b 302ef2f0-4549-48bd-b641-d30c41fd7257 575d6ef9-c352-452c-8f0f-86f6ff81864f 6625227b-bc36-42d4-adca-96292535920b 975aac94-3bb1-4273-8b58-74c17096e715 68a7db94-a00f-4fdf-b50d-f4213df3e449 6fa88cfd-a8f0-455b-9181-5846c9950d07 404231dd-0f96-4ac6-bf9a-8ab6a0f6418c b0cba876-7d19-4595-aef6-c3ac67752ac2 1d3d46b5-5e55-414e-9a97-8a1123c80aa1 76647d05-5c0b-42eb-870b-131cf1f77c26 aaec6d6e-70f9-4f96-9671-0e8f3d7386c9 7bdfebdc-5a5a-436c-9a64-e59c72f5e238 fc6c89b2-7d8c-48cf-813d-5eefe8102064 7e3510fb-1322-4614-a693-8e3f9382c05d 79ea41f0-ac56-4562-960b-7a32932e03bd 20e091f1-cfee-4e01-8cf7-1adb3631c55f 9cb9bf92-1749-4228-bdfe-a512b08c2b54 ad48ffa7-45bf-4af9-b578-b6092d77913b 77ed4d90-5784-4f1c-9722-dbfe12b81c33 28a8a223-5ffb-4e63-b9e5-7ca4146e6b53 e60dc619-3ad5-4674-9901-1f04c1c079f7 88b555e0-03c2-4453-81f3-0059e6ea8d01 bad17d3f-5a41-40d8-87c6-7d644cb43338 37275fb2-88d5-46c7-a036-65781a66e152 b38614af-a5a1-4dd0-a171-8411e793e30d 4d045d08-5c3c-4330-9f71-249cb7780a46 565df300-cd42-4097-ad9e-875843f7527d d487abe7-c090-43aa-9004-713abaca6d6c 2bede3c6-b6d2-4dee-a3f7-3248b58102d9 c3753207-3b65-4b7b-ad55-050b7abcab0d f55b23fc-7a2c-4aaf-a508-8393319dbb6b 1a59adf0-874d-489e-a39c-edc4448dbcd1 461c536a-9e3d-438b-b902-a05c037670d8 2926d055-fa9b-4552-a5b5-c42959f5e369 dc382b16-0d38-4b97-a3f0-51baf2db4c6d 6f30288e-e43c-489e-a2c8-76ec3f390183 56370775-6214-4e5c-83b5-63bed084720e b2daf69a-baf2-404e-9e11-4c929d4b4388 728531bf-7751-482d-9d66-0a21e30f850f 8c0288f2-e75c-40fc-ac8e-fda016839b23 1619a8c3-32dd-42b2-b224-989322749bf0 e924ad9e-0f78-487d-9881-3c0ba3dcf2da 293c844d-230a-4b6e-896c-2b5cbf59e2fd 0c2258a8-2eee-4b1f-b352-54384af6ec8a 96c9c663-2c90-4ba1-b232-dcf7d32b1e17 ff9d200f-0d46-4941-94ee-fd9b4fd8db7f ff01e974-4210-4508-b05a-b2cc25f9ae15 70fa542e-0c0a-42ad-8cc3-b92609d15dc5 25843e43-4323-4855-a9e8-cc3baf360a42 8802d786-5f2b-428c-b35e-cf311f4a6e78 ada34f6f-5ca0-4aae-ab1f-b44e99ada66a 3326d4fb-3820-4f3a-9f88-c8c31c3ab4c7 253e5f29-05f3-44d8-a38a-190312300a7e 080bdd52-2275-4379-8aaa-fe1ee263f031 7a096317-3458-4bee-be1d-da122a5ae38e 1ff896a7-b5c9-494f-ab6a-a6cbe1f1cd3e 6e560388-7bfe-4d26-b231-ead27b10d206 c0dbfd03-de1d-40ab-b364-1f35bf442564 8b0f0991-2521-4864-8b36-22d5e955c1e8 f9545d7a-8918-4068-9c16-915fb1a68991 511942cb-f999-4d71-b956-a41020f52157 23d52dec-2461-4843-b629-00484649b2de 58a8b03e-c1d2-4921-91b0-482bb9c9bbf4 44471f52-75da-4c5c-b9e2-265cb2853e09 1ae7ed3d-7e1b-4290-9e37-bc8056533ffb ed12d5aa-db9c-4341-ae87-708ecc2d33d8 46c33532-1b3b-4dd1-9d67-66a702cb3b45 d230bda3-a693-47db-ac7f-d5cfa77353d3 2485cff4-bab1-4f37-8b7d-c5fd3184e858 a76a2a86-3a05-4dc4-a653-0f94b2689ef0 cabf24ba-7b4d-436f-92e1-3c58f601f6ac 1bf3b141-055f-4a69-8979-4f00e23b526d 00296c8b-321b-4592-9354-85c76f8c9c3f a2c5f6c8-0d3c-48c1-afd4-275e9051d51c e1f6e4c4-38ac-451a-8a5b-ee4aa51e4b79 d3aecef1-dc52-40c9-ac2f-e80ffa28c82b d61b6812-3911-4494-92c7-63045454af60 630c508e-edc0-4053-a75c-14a7ecd18b74 8a0478b3-e639-4bc0-b41c-a9301670502c 1bb74e57-5c14-4710-88ac-b57581b5684c 613fd7a5-f21e-4ef6-81ec-4ab36a8994cd 4d613aab-513e-4cfc-aa05-f1e1ebd3f2ae f1f9af4c-e51f-475a-8d65-43a59f315d31 204388ff-74a5-4ef0-9bc0-56a1883dcf1c cfb88280-ff7e-4398-a648-b1aad36534be 1a0491ce-030d-4b3b-86fe-6e7b4d029cce 6b527da3-10ce-42e3-8793-22e11d3cad17 852554c5-aeaa-42b5-8586-50bf6758a482 7997f57d-fa23-476a-ab56-3eb0ea1e779a aa0a6541-29a0-4cd6-93f1-406c2f04e0fa 0a32bcf6-eead-4293-b280-725a38fcae7c d4488efe-8a72-4220-8035-15db11631d62 ab577639-058e-44f9-99f2-0bbb972c04cb f0ecd76e-5aff-4c89-80f6-ef48b9929f3c 7fbe50ee-25ca-44e4-8f23-55247de90f0c 7526f16e-bb55-41fa-8244-553a980a44de 238aa603-8841-403f-8f5d-a9188a56da2f 0cc8a0d6-954e-4ee0-87f0-7e9368431b95 9693e147-122a-4859-83f5-3f4d21515626 4f1ab660-4387-481f-a917-18851454951c 2a90c86f-2344-4edf-b087-50e68e80c067 b18033e3-c8fd-43e4-8ded-b11b14c0adec 511b3971-f430-431e-b167-e3f658d8b8e5 10ca1273-a266-4995-92d1-7f01c4d963c7 4b4853e3-e4f9-4c94-a0ae-c3d3cbcef006 87779ca0-0bd0-48b0-8547-ca863120806d d6ab88d6-74fa-48cd-96d2-0dd73c61cece 18f7f67e-d84a-4cee-ac52-7b36b2fb71a1 4e38299d-11b6-434c-ad81-2e6a4ea0ccf4 4695a33c-16ca-4252-aa94-4ce4e32158a2 61f2e9dd-4b03-4c1d-8839-233c370a8ac7 2d37057b-0b5a-4050-a0b0-19a9aa9efd80 c7b585f3-1e4c-442b-a2c6-4ffeb94ec9d5 a91b8390-ec6d-49bd-9097-36a6daca2752 da23b05d-03ef-493c-ad04-5f6ddad7b9e1 098d69cc-4bc4-48f4-8e1c-0c51ab3e2d96 51133a49-11bd-4d30-a920-40d73f9245ad 027709de-7f4e-4c5f-a8ba-641e0ef385a7 f8f9ea74-e764-403c-8d95-39d8eb49e37c 57ee5bb2-35fe-4bc8-9108-f2e9a9413a66 d8f31523-3361-4604-898a-c0ec04621555 f94cbc19-bd62-450a-bbca-9939a0ad6166 e1e89ef0-b54c-4d30-b77f-07185ff473f2 3e55e643-b83a-4da4-a12f-e0a0220bcc12 4fc6cbda-5882-430f-8cf3-cc174e548fc2 4ec2fc48-0ad5-4c0d-a02e-90aa2dec6f10 cffa41d9-6814-4096-904d-8be562250773 98ca3134-880c-48c7-87b9-e1fdd26e1619 b848ebd8-edb8-49aa-b724-d92d9eecd1df 84d00839-310e-4be4-a228-3fd10d719d37 3687aa07-d02f-4a54-9b2b-bbc2b9a7b1a7 dd905f00-319f-456d-8d75-3f7766d572dc ba5b53f3-40f6-439a-af82-e641431f20ac f8f27c77-5bd3-4433-ba7b-a96dd709f16b 2606010e-05ff-432e-839c-c85952eb5cdc 109fc62c-b0e1-4431-8130-cbd268fb6744 d9261d3e-573b-4484-9920-8a3ea0d850c5 90e97949-0cd9-4877-b9f0-5796c67cae3d d4bef523-a311-4dd0-aba4-5286e41f525a fc7569ae-5813-4956-bde0-e4c9a765776a cce6cb0e-d8d8-4fc6-9d93-bc2df79b3767 13553ebb-0682-4f09-9ada-c7ee79908918 c0b363c5-3dc0-4ab9-9eea-81dea415be69 6fb9e04b-1aee-4a1b-b6d9-c416587cedab e885fd80-136b-4a64-8894-369af46d7502 950d8951-3bed-4c69-bc0e-841152c62de8 b575c91a-9da6-4289-b81c-5d125e463472 5e855210-84a9-4324-b42b-4308cd68ad03 049cda10-82e9-4655-97c4-9a133614435d 9bd28d72-8bdd-46af-9614-0751f78563e5 a404df83-5753-47b2-9223-33ba83687ba9 00bde599-2f29-4097-a1fb-c3b3f77e322b 2b3a2793-9451-40c9-8fc6-97b078252ad4 3ca4103c-601c-43d3-9b3d-6f84bbfba85a bffc8cbb-8109-47cd-8cfd-021b57d0f1f1 3a2a212d-5e75-4b3f-9906-3f52ef8cf7e6 cc9c92c0-e663-432b-a469-7232a3cabdbd fb524795-2848-4e83-a402-e5784d1aa926 bf6daf6c-6805-4cd8-a0f0-1df69c1f7a43 9aea44cf-548f-444f-866e-32a5175e28f9 7b68319a-b813-4084-91bc-7346cfdc54ee 5d516759-aea6-480d-8187-f4ef772e4883 1527f446-7c96-40f3-90e0-e33a37823b94 9696655e-091f-44bf-ae81-fde925a80ca6 d3444ff0-21d9-428c-8b9b-bf3964cc1a42 3e368eda-9421-47de-bf2a-8ead0224a0e8 16aed8c3-f711-450d-afd3-ef37b716f659 0d2c0679-e7b9-44eb-969f-cee81d978e11 b8aa7ee4-144c-4e1b-b6e5-4d1fbc96ce3c 6551c8a9-33d2-4bbd-8bc2-892345436d5b b170c6ab-0d64-4145-96c3-7dccc7d11197 ab4041eb-6f38-4b32-8557-9f48d8cc3768 46223abf-a93e-4208-8838-c58c5d881806 3b7cc9ae-d5d8-4f6c-b7b8-b6f8ae72f261 950a39dd-0b48-46aa-8a16-243b7aaa2bbb 7f9e4048-7c2f-455b-ad3c-8043e9c95c89 84504b61-c4be-4575-9928-9e4b26a611a2 8a781818-bfbe-4fbe-b5db-3ca607882bd5 84a70957-8fca-4f12-ad26-a72c9d19d44b 88b17a12-2a05-4844-b133-f540908daab9 8175a09f-edc7-4324-a0a9-f42f5fa7b72d 7c30b2df-f21a-464a-bf42-23e09370b9b6 6099aa92-5722-4213-b1d2-835851b73caa 8f6749a3-7845-47e7-815d-c4ba10ff5921 85481ad6-98ee-4dfa-bd33-6123d7701295 c96e21c0-229f-40e3-b3ea-ed7dbde9cead 5f0c8260-c9d4-4f4c-a8a7-327a794cd5a0 2f0862d0-83fd-46f0-ba53-15f50c058905 fd05831b-dcd5-4cf8-b793-d522186e5970 c72d9a57-dc6e-461f-8b12-d56b4ad6ae1e 502db21e-d66c-4695-b1dc-724b72a02225 9d58e561-760a-485d-81d5-6a51a56e9820 5938c0f0-3e99-403e-8e2f-eba0adf18adf 1a251005-559e-4123-9fd6-b4dc226b76fa 00641301-d1af-4ef9-a52b-48ddce23afbe a604fba4-c4c6-43ee-8287-5294f1fbe7d8 4ed9ba95-cf02-42eb-87e6-8ea469cdf73d 4316a7ab-db3f-447b-854d-04feba79ec24 c22cf58b-23e4-4724-b370-635053e433c3 bdc44d78-d6f4-4d21-849a-71f063a71160 4cfdf89c-fc81-445d-8854-092286b02e76 38336bfb-0cf2-4c6c-a2cb-2b4c34bcee28 cd187b0e-574b-4f34-ab1e-26450995623c e7bf3344-f48b-4a6b-a507-e08efc8eae80 03fae1cb-58f5-4285-b31b-3b792866e25c 5de3cbcd-1aa2-4c6a-8489-58736dabb5ec 1edf5c42-74ad-44c4-a95f-d6ae390a36ad 80b83ccd-5954-40f3-bf48-0b0b4e5232f7 becba671-dd32-42e0-baa8-95f7d64bf3e1 315d973a-fcc3-4253-997b-923258db992d 3316a131-1088-4e50-9de9-471f6bdf4b9a 4f6abdf5-fa61-480b-9635-0f163b7de191 9c611e3f-d6ca-4b58-ac6a-adf471108993 54e61448-bd25-4256-8445-27008af15f10 c01e6217-5369-4c2f-b59f-ce455f3f16a5 17fe8f79-f855-4bf4-a6ab-ca69573422e2 65a25d4f-8f05-4b22-866b-b47416e1927d 82e81020-4007-429c-923f-6dada3c9da44 42d5e39b-66c5-4cf4-9fb3-76fb041704ed a9772b27-d145-4df6-a54b-7f34e4099de7 c88718c5-acfd-459f-a8b0-bf01de88612d 3f9b6bdf-2331-4e66-8fe3-731e3e7f99c5 182b62b9-6426-4e1a-85ef-59b9dd403b05 b4acccbc-1133-4970-8414-933ecd0112ea 3091cd9d-1579-48e1-89b6-5b51e295892d 6f2abd28-d263-425f-a34c-ab307bc01615 6e8e910d-63e1-4091-a517-ecf88a600df0 9be02886-4ab6-402b-92ab-e6090717a1b7 073d27ae-068c-498f-8759-d0daae18e0fc 1532d3ba-b555-40e9-9b96-2af0fc14f056 2043abd4-094c-4083-85f4-9cf7514f203b 6ed8c9ea-5dce-4816-a0c3-d0c17d27e410 889bd255-47cd-4aed-82a4-1df35644d13b 09540b20-26c6-44e5-812a-fe9dcfd74f33 c48ae048-9cf8-476d-808d-85573617f21a fd550bae-ea71-413d-99b7-17bb3e19ae2b c055f7c9-a48b-462c-a66d-3073468d93b6 3d60db7a-2af9-4bd3-8fef-cb186e52a96b 96218b62-e221-4ac2-9b94-537ea92d112e e4ef91b7-9739-435c-b62d-90088fb962e0 683086fb-bee2-45b1-ba92-809889336bfd 972f7233-e7bd-41b1-bfba-ef60e7837b0e ce293768-23ea-4c37-8b29-82b9b5253f70 9836b74d-c3b2-45f6-9438-27628a6ea22b 8c5d0f2e-bc6a-48da-8350-e9123089c9d9 afc45e75-146b-42e2-92ec-2f1677bb0867 21cf6ede-4c2d-473a-a881-2ff012435d98 6e02162f-1dae-40ba-816a-1b607218c05c f38693fc-a132-4d12-bad5-31ab4252eb2b 7257aac2-c79b-4c0a-a591-a9923211acc5 c45338be-ef0d-461b-be78-072abe6d84b2 ade94803-fdf2-4884-871c-2c31b7842393 a9798eb5-c19c-44e5-a63f-86a62feed0ab bb76764a-2def-436a-b9e6-3d3c13d87a67 43d9d733-522c-4ded-8524-44df26033341 e1ffaa1a-eccf-4f43-bb70-4f9175fbb323 d5b5216c-5c61-412f-994b-ce0a17d14593 ad7489fe-a893-41de-9d9d-f443deb91e23 223ec0bf-f35d-467d-9bd9-2b4e06ba3172 a75f838d-68c1-4cc0-b610-de53d5cfca3d 21593c37-a457-4ec1-9cae-7b66f12bb44f 64aba73a-60be-4b2e-a225-9234b674baea 72772789-6b83-4a9a-b8a2-66995003643f 2f502850-2e5b-41da-bf7b-eb0605ed379b 69f96724-720c-43e6-904f-52d3128e17af 67a32f25-5cc6-497c-a566-67716e5c663b 3bbc6cff-bc1b-4f70-a2df-b55eb1764a7c ed1437df-5e36-4a3f-94f3-32eaabd1c90b 26333bb4-38ec-49c4-9cac-6854e61ef4f6 8964c73f-a098-479f-a864-fdb7268f335a 91de0970-fadb-465c-87b2-25cfaef718e8 d2606f32-6657-452e-8af5-93786759c0c0 b326ae5b-5b33-4ce8-974b-fa81ccec4503 6e3c0b1d-6de3-4ae5-8eb8-a355d43d6a4f 9b68a163-b4cc-4644-96b0-ccc1f94d3374 e96ca0a4-0483-4c29-9fe7-2513c1c7aef9 3f4d65ca-c976-4292-af6d-7b794e02f3a3 d3e7258f-48ad-4288-b308-c9c824559de7 0449336f-7e9f-4abd-940c-9a9e5bdcee26 a52d2dd1-310e-4235-ab9d-b508535ed023 16b777a6-1006-4599-b6ca-9dd150a76a34 1e39e44e-124f-43ec-b031-586a5506cbc5 51c8d29a-9165-4b5b-b66a-7bd777f70a96 1a313a64-575b-4d98-aa07-8fd496d1ec42 ba40b1eb-9713-4cbb-8d67-ec1612290b30 19d2e16b-e243-4ad8-9f06-967e4dae23c7 d38a1a2d-4286-493a-b09c-a0f5cc1d0739 ede48a8f-f417-4a36-a724-ccd47b91fdbb 7d392c7e-8a3d-490d-aff6-a098db0ef0bb eddb8d28-f60c-4241-97cc-ac6084db1ab1 aba31952-bc6c-484d-9cd3-fe4621e05c5b f2cfe6b7-8840-44e6-8f80-6cc46c4566af 835ed062-7d4a-47a7-acf2-57e4717ed169 3035b4cb-43df-49cf-b3a3-a35018ede2e5 c9829fa8-1ab7-4186-bfb3-9664712a3ca8 169e37ad-5659-4c19-b320-c8f3da472f1f 0e440d60-e611-4fab-8f79-46741af967d5 54a59385-dabd-46b1-b8e5-8e66324cce79 13900a00-b890-4174-b904-419e06864455 f8f04d9f-6e7a-41a1-83f6-e3f3dfb9c117 641a2feb-db4d-43ab-b36c-9da0850b37e2 3d33b648-def4-4552-86fe-34125c876a7b 0ce73d99-53e3-49ff-b343-b01871dec6db 0609f7c7-796d-4c60-8942-d2cd2ec5a421 e38d2f15-3ff8-4cf9-ad5f-0c054beb6dc5 319ee66a-ef16-4d90-aefe-0544fcabcd87 5058254b-52f0-48ba-8420-79960b4b3b3c cccda584-f242-4d69-ba62-24b7b4117ec1 060fb7dc-0e3b-4c05-b3aa-53634b6b661e f51b9dff-994c-4c5a-af4e-daebae9e4a42 961db2b6-9ed6-47ec-b9f9-d783efca8962 35ea60ca-889f-4211-a9c3-31e56404fb81 2dd43486-f377-4dcb-b726-b472089637b4 0ffeeb44-454c-4bb7-9a2f-aa9c2fb19a99 92e8ffdf-1ef1-4470-9ce8-226309d7c456 1a16a564-2c80-4ed7-b390-6c3d9f886fee a22bbb87-a712-4e71-8cee-ad6c127c89a7 2c93ab5a-51b4-4fa1-9d79-8ee203b556e0 80dbfa5e-81d5-4c61-ad77-01658166ebd1 cc7d9780-cefe-40ae-97b1-0f2b03713941 9e05a7a9-0d6a-4a81-8779-c20994abdfee 88102276-d62d-4db7-9126-b868f209d8a0 943f02c0-9591-4973-9311-e53ab14e9767 be2ffd11-f176-48ed-8990-55259d9eef0d 9f2fb689-f71c-4ee6-a11c-d9d4bd93f34d 0c277e1a-bb66-4693-b5d0-8426cd113f49 ab5b8a85-7210-4b26-8a83-ebb2a2d52d6c cd2c42a8-a656-45f3-99fa-0fde682ab943 806d2a25-5da6-4c5e-8c49-a282d10543f6 36be3f99-286f-452b-9f7a-df72e812b7a5 4e717b6d-48b0-4e41-b54d-e927ba39153c cc13e64d-424e-4fbf-b0fb-20d5d36d568b eb58ae33-b474-4af4-859f-339c44f2f034 ee84beff-5235-4fe1-b827-c5ea3219a5ea 2fa2bcf0-7146-4aeb-82eb-f6abfd94f616 f04b30bc-8cfb-4f88-b5cc-5228465ff7c7 431b62ea-8416-42f5-b071-678ab9794c6c de913361-6696-45f2-b3e6-8d2490914e72 262cd416-3dd7-472d-afc7-4b2840b27464 e2524c7d-376b-40c6-aa52-2e2a6fbcbce2 5de9b26c-051f-4a05-916c-951490a37ec3 b7553698-2542-4c67-b7cf-869955792bad fcc8a92e-e5f8-42f7-a047-4b4fcf3543c1 cd20540b-5e2c-439b-9c9a-3aa2c0ea8fbf e68843c8-31d4-473a-b001-19bc31b0de1c 54850900-d9ce-4def-a19a-8adccb238614 8e960c76-9dd8-4096-a73b-4284bba01358 45882c71-86f9-4c41-9387-5d92241be0a3 a77705b3-2d06-4a6a-b9c8-4520a67f1a8b 4700a426-a4ba-4860-9f29-8e6b440bcf7e 3047ea23-9af8-4575-9d89-f3b935f2338b 1e5eee8c-8c31-49c1-beb1-44504dc71331 83a12dca-1e24-4d39-8e2c-7fafb289728f 74bffdbe-1947-4469-a489-fd7549401e9f ff75409e-e84f-46f0-9d37-6b3013aa8a7d 5a601673-1f0e-4de9-8d09-49d58101806e b771da8e-c925-4a67-a309-86fb6e955105 560dcb41-6616-4f96-b66b-9b081f29204e 547c77f3-5b58-4403-8a25-df73ddf68dcd e2ef16f7-9844-4176-a427-4e79da51e091 94719fb7-1ce3-4601-b5d0-0ad8a46fb6ee 0c40fdab-7fd2-44b6-a2dc-ed3d2e70a568 b0258fbf-ac25-48bc-9818-57336128ce8b 98c11d3e-1ef4-489b-9716-676640076390 c0d2e1b8-4885-452a-835f-5363ce18c9bf 4725b38f-9741-4a6e-ad6a-76aa3b95ea2c 99485bd5-e095-41f2-add5-4bce71e798c2 30fae0ff-0bbf-4ef7-aaa1-5a0e4a5b71b2 a103b543-82ca-41c4-85cf-376e7461bb36 0820991b-234b-4618-9251-7512907dd3ae 2d692f34-0372-4e59-ae23-402776b497c6 8d511267-3da8-45ad-89a7-770c1e886771 b76eaa9b-bdc9-4179-801e-b354aadba176 d4c909cd-a354-4f23-b109-6ea11f5e4be2 41c9085d-7d45-45e8-8a63-692b4ceec8da b9d46638-2611-4241-9f6f-7c7f975cbc46 5d932989-687f-483e-b92e-a59d39e3d063 9c35122c-eafe-4d72-88b4-517747da6d01 2b1b61c8-1a18-4ae0-9cbf-98ace37ccdaa a884791e-cf0f-45e1-a57d-39fc13aa047a eb3a904a-9016-4c2f-a960-e465f080f2a4 4968c265-b95d-428a-819e-828cb9fe81d5 9047f76d-f6e9-44b3-9301-d760902f2b13 589c8c98-3e23-480a-bed0-d5bedb4133f8 618533ec-49fd-43e7-bfbc-9e70a7fd45ab 4166a04a-c93b-47ae-b71c-131f0322c3a1 955b1d1d-2a2a-440e-ad33-78b317dd5841 810943e4-9e94-4adf-9771-2e0a08a5704e ae24cbd8-3f9b-47f0-ad53-4cb5515b2046 19746a29-00c8-435d-9bae-415ee6c3870c b56c15b0-c8b6-42dc-9eac-666dee6a5018 5246b59a-4e5e-47b8-a692-e017b903326f d9e2f579-4077-4dba-9724-6e5dc1944d52 4650172e-a005-45e3-9390-05e0e0e14bed 5cf8caed-3c16-400f-8a79-39d9d203fcd3 6535f7a0-6888-4d6d-bcdf-fa71ba6b516e 908adb1b-58fb-41dc-830a-3998d496bb50 ce8884b5-b728-43eb-bf00-a2362c1dfa5d 893f284d-29d9-4077-bb61-922b15fd02e8 7cc613a2-922c-4040-be04-a4f3a99e1636 351be9ac-c9ce-4425-96f4-6ad652c3f5a7 f8743896-63b0-4d3c-bd2c-6d1e64a3a8e5 cbe5c716-e576-4ee2-9894-7c03111bcdc8 eb839593-c109-4098-b9a2-1dde184b906c 83dac274-efbc-4b41-9e37-13e011b5a73d b41c683f-70e1-4edc-ae0b-fd67ac78499d 8ac994b3-d2ae-4007-a87e-5b43f6d86147 f48ef47d-f807-4fc8-b96b-d11338ddb65f f493abbe-cec7-4f94-81ff-00aff2d08356 936043be-ca05-4f19-8e5d-11f7a7ef306f 513fafd9-ddc7-41da-a6b2-16befeb87256 7f67c9be-efe0-486c-9931-4718aec02a70 5a5e63a7-8c4c-4289-81ed-d9025b0ecb59 3f08863f-25ed-4c06-84cf-8ac797f8da5c 4d209e40-a4bc-4df8-bf45-9dda5f4e5c31 1decf288-9e39-47d8-ae6e-9c98a662ff82 eaf100f5-f0ef-441b-a6d7-ae9add7918c9 e8ed1268-8efe-45eb-8b46-ec76d7454040 0b75be25-4cdb-493f-879e-cff49a119c5a 74613c0f-18c6-497e-bcb0-be4223af2cc8 b6a21ecf-82eb-4fad-95da-7be088928e78 51905fd7-b325-4087-b1d6-ed9294aa2c27 be8d6eb5-8aa5-4978-8e18-35c6b9315c66 8ddc82e5-ab74-454c-87ff-42f54bd15c80 4fad3346-3666-4ccb-a91f-53bb092417f8 1ffb4bcd-07db-481a-9bd9-25053633d78e d67d302a-09a4-4f5a-ab37-086c72d84a8a e9116a83-124a-4308-8391-3e37be2a02b3 0715ffd8-e9b1-43a9-8248-4e105dbd54e4 41e8bba3-d972-4961-a826-9feac8b23064 90312c29-242e-45a3-b6f5-bc4f81a883ee 7f39fe3b-7d36-4569-a449-1baed8340313 f8d33b2d-d7f6-4311-b6c3-885d47afeabd 431bda1e-69e4-4488-b9eb-27cd92f089c5 77e27b6e-7ebd-414a-9ff9-cad352e5022f 8c9a0c35-3466-42b4-8ebc-dc3e6a2b891f 148a989b-dc7c-494a-a9d1-c25898d0006c 01fd6475-9f85-4b88-8365-22f3c1de55ab fa6dbf13-f46b-4d0f-bd75-50e6fbe643e8 65939007-e27d-4315-bd28-103d1a7dc7cf 732f4da9-368d-47ac-b49e-d304235b71bc d3200fc2-a0db-407a-8a07-ac0a853902ed 67baf9e6-3f32-4a6c-bba7-c9be6b8f4755 4e896ca4-d53c-45c4-8563-6ef3716ecbfe e2645f71-6a27-45b3-89d1-33bc482b56a8 36e97efa-8dc0-4465-9d2b-03601924a7aa 7158e9fc-dbbf-40f3-9819-f6e07b4b83b8 30a649bb-5b22-4038-93f9-ed41c0b118df 14d33373-6057-4dcc-96c2-87420bd09edb 1a68bfe2-2727-40b8-bb21-974ceb83aa83 6534f778-5ef0-46a2-a8a3-eb85f6c8a100 86631880-bdab-4334-92a7-ec3437c76e2a 89f3c278-ca95-45ac-ab8c-88d299448cf9 21fe88ff-b006-48e8-b88f-47f0720987f3 af08acc6-d0de-4fb5-bf05-fabef58c63e9 f9bb6ec3-f816-4970-8e8e-ffec92ecf9eb df552f61-6a04-45e9-9270-6b99607ccd73 557c2822-e79d-4c69-a7cd-fad1503fef71 bfef97e5-0a73-4a21-a14b-ac5dd8fb5f4b c2dc5316-94c5-4a82-9eb0-b3ad6dcd2d3a b21b6c8e-23c9-4b93-a669-cf2de8c196e0 9117aa21-b6a0-4e94-a67c-4eda4e137528 46a4df87-4725-4c23-9d6e-d29f9268aa41 60f02ba7-2f01-40ee-8d91-8be5eb2bfd56 dc211e4b-20a8-4b74-ac37-3333b4f125d9 ec2cf256-17ac-42c4-81b1-34d82d76d424 527b07a9-4f3b-4cc3-99fb-3375a563ecce ee8c9d6b-e3b4-4456-a333-ea650e5e0cad a5d46d42-71a7-4b33-ab28-49fd803e1307 40a8cad8-b0cd-4df6-87f6-426987cf2faf e2ccae4f-7107-46ac-8d95-73ca8f236842 5c5af3b9-9058-49ba-8a6f-8c8460c95b5c c9d5891e-e560-459b-85da-8bc63df26740 16f9f9f0-437e-4648-a8b0-7b20b119f0ba ead3ffc4-914d-40ee-8370-2afd5b96c56e 3f76e798-791f-425f-84bd-4a07279dda25 9c950d53-135d-4f99-93c7-ec0550a40b70 90051bbb-7339-4ade-8c52-0e31a2b71692 42dd9985-1b22-43c2-b180-e3771e403618 1020da3e-cfe7-450b-a632-8c39bbf59ed9 69999d63-43f3-4424-a1af-e0adb3ffc907 5d4b1705-e8d8-45a6-9e77-46440c459c12 cbf923f2-ca03-4dd5-b4a5-913fea62b24f 8193c2eb-9110-427c-8e3e-6a48a5685346 a99d2cd7-4a7d-4186-abd1-480009cfc223 21d47319-85fd-48c5-b0ea-49ada9d86c74 b5507481-8dc1-4c82-b7d6-a7614b811f3f e398f3f1-165e-4222-879e-f70d9e72d9e5 c129b0ac-7f12-4903-9e6f-efa9511f4da5 234436fb-f6e5-4f38-9213-7c24896c77ed 9476fc6d-b760-4acd-96a7-1abec8378f55 48bcbd02-752d-405f-8b84-e471b8866ef7 0e6af4c1-ecde-4bbb-a236-f608a1c08ebc c76bd00e-15a6-4030-a93c-fda74166b9c0 e5ee616e-3019-45df-9650-1b9ef16d72dd 17ddda67-c18f-43c3-95f6-eb200c660e41 c3e16836-2b8a-4207-a273-436add1da803 3abfc68a-4923-4ff6-b1bc-f427d98ba05d eabc8849-efa2-4fef-addf-322cd560bf5b fb5cba8e-aea9-4dc8-9450-3dbb30db55a7 f361e091-12f2-4e8d-aae5-a8b2701ab018 8f427631-e3c1-49e9-9a4e-f1014bf2618c f84f34e5-3b5d-43c8-baf9-34b2e91c8ee9 058ccdc0-e575-4045-9ded-062af09bbc8a 7497380f-e01f-4ad9-8fa7-a45442b726c6 7500024a-5ecc-440f-a5c7-2de63d7881ab bebbb7d7-352c-41ad-a6fb-573fdb75ef6c 75b13d23-74c2-4d9b-b811-304470446668 7d182af0-9988-420d-8c95-e2f4fcbe235f 7dbdb325-6883-4778-ac11-e5eefc15847e 8149dc24-832b-4747-b882-815ee77c54d9 378b12ec-2d10-4a8f-a2a7-f6155e103b75 506ddea3-60fb-4934-8362-1dd422a08339 3f932856-10d2-4765-a96e-217d2202d653 67c15672-f027-4f30-a980-30e54afbeac4 7bc47d51-d339-4598-8770-686afaa3489a 43b24f9e-2a7c-4854-bd67-1983f282bb9f b6f8ce1b-4d52-412d-b434-2defcafd637d 0a6168c2-eeee-4b5f-81f3-b09dbbf61161 dd4064ef-3cec-499c-80d3-ef78757877b0 5afbe906-20f2-448a-b378-0c39c0e9c3dc b443eb02-3d82-4c7d-99bf-af8162e646d7 2f0b99fd-6ad9-4eab-9a7b-8d07e7f89de0 7d919f57-95d6-441d-92c2-e1bc73c1bd65 38d9d9dd-2a35-4ae3-b977-c93c5e11d817 9ad0827a-7c56-4ea5-bec8-3b80fd814db6 e03e0e31-d429-46db-8e44-ad4b82d4a189 0d4ae785-60e2-4616-8778-5971598b9500 3de8dacf-1dd4-43ec-b5a5-d62e522f6175 8524b2bf-9106-4b76-9d37-4f033986e02e 62b3966b-b17c-4fd2-9d0f-98dbd5c6e5ef 7d96797f-60fb-4170-82aa-f2571b11b39c cf9dd39c-7929-4081-bb57-62e967fce35e 7161d941-873f-40e8-bcf8-9ebceccfb425 1f392a43-993a-43d8-a601-f91f91177f80 4b7e03b8-50cd-4da4-8cde-d53254d8b671 6d60d455-55a9-4bc2-af73-8a5b03026e2d 11a52556-2952-49b8-80ab-978ba7898859 dd7b8ec0-cde7-4a25-89d6-94de189269f3 742fe821-324c-4776-848d-fe1526b8f43c b0bf5a8a-e8f1-46d9-994a-20076e85a01f de980a52-72fe-4861-89ba-eb2016e2f796 6eab314b-405a-4ed3-b150-22579a30b595 820d507e-d7a4-4a67-ae88-44d7b19f78c9 52d4ed2b-9455-47ae-88ee-e30af3786188 d847591f-4df0-4bfd-92c5-4488c2234e16 14ac3497-9f32-4388-b245-950e839c25b8 e7030c04-21c8-4eb2-949c-9ce43549b8b9 1ce9df69-517d-47ea-b1b5-a20f1d68deba 1a720ade-3f20-457a-a076-52ddc8a214d0 d91c823d-a71d-4370-84ae-977f2df94322 0df65a19-ce3b-4a12-a31b-8d0b24a54dce 49128f3d-3074-4a2b-a88f-92fd58a09e38 3eaa7d1a-aa2b-4600-b63a-d34d052495c9 0ec9c34c-714a-4c3a-82a1-ddd747aef450 21c2fe99-aee9-42f8-9d36-928c77c67712 8473b424-6843-47e3-bd17-af89dc67267f de37de31-547f-49e0-9a14-231ce71067a5 39f8f7db-ee78-4ee5-8c4b-ccf1a380a6ce 7bab9ef0-55a9-4598-a18a-337a1935e4ce 1a8028dc-0c27-4c05-87c8-4a8ce65482c3 b7789a53-97d0-42bb-b112-2246b24ee66d 3720a83d-cda1-41ea-ba4a-330afd354872 176308f0-fd13-4f57-9d07-055166a83de8 b7e35ccb-00a4-45ff-ad86-b77c8f8ac0c9 f24fca3a-1384-41c1-a05d-fd3595a1022f 0782dc1d-717f-44f7-a169-02793ecf480c b82b696d-8588-4357-9003-fdf16085751c 0d9ea957-e278-44f0-9da1-5f40bd3cff97 a0dcba46-bf3b-4abe-8eed-91c5ea6d655c 9ffcb28b-a753-430c-9e65-943533922fe0 d8be5ddb-56a2-4ea8-9cee-fa746c2d3998 1fcad521-20f6-4206-8308-7f021d4c3f62 04b9da19-3408-493f-a568-f868a9c5690e 2bfbaeee-4a95-447b-8de5-66c9e2d3e1f4 7c912439-b7a0-41d4-85b7-584664e9b42b ba25e635-80cd-4627-b40b-06313ba452c1 2fdf6245-ef92-4e0f-8d8d-0e09175fe0c4 8acd24a8-7c6d-44c0-96b4-78085ef7c53c b60976c9-fdee-4cbd-83ac-b5c454cb4fc7 d723bb98-8c94-40ee-91d5-97da9c1a50ac eb54da0e-637d-42d4-acab-04af76b987b1 1b5f7ae2-d860-4a75-8b94-a10926942e30 7b8c80f4-ca25-4335-aad3-2041223b09ba 8c6397e4-9cb3-4f39-891a-76a5618af02c ea2f844f-cf45-4484-83fd-314f121e1f06 04fe8969-4702-4631-8f0e-8a009b6d4375 e7abccd1-25af-43a4-a9ae-4888b62574db 89e8f5e4-6625-4355-a00c-b520365713c1 e9df0595-5c31-46ec-b7ba-8c632bad80cb 1b1f2416-ec0d-4bea-922b-8a234d1a6c7a d64fb841-7dac-41d8-979c-b5641a1d065c 974a74d0-2cf1-4806-b07c-399bf59055f1 a6c2a66f-6fea-4629-8a11-fb2ab86443ac 348d860f-dd80-498b-8d6a-8e5dc0735070 0efca808-b0e3-4437-acc8-5b4847484d05 4ae616c1-6589-4399-b52b-e230ab831a35 a52d18e3-785e-4bf3-94a7-2e3220dfcfd5 165818ff-2a27-4922-b7af-a2454a43c640 08e1a8ab-cfe1-460e-96d6-c1e1139b059e 6fbc3de2-dcba-4dc6-a46d-3cfa548e2913 44f61714-a8ce-43bd-b272-2cb3e48347aa df4f4528-8e0a-4a5f-a3fe-f0d3834ae69e c4f191fb-edbc-4a37-815c-7df2e639d5ae e5f68aa3-26dd-4787-9d91-4268f19fa665 63c6c5e2-99f6-463d-afd9-20ccd6ca1e0a b370353e-899a-4e55-bc71-27afa3ac22ac f621c63b-d71e-4928-a2be-143440e42dc2 7b13e140-1f14-4ffa-8410-791715994af5 98192c4b-1a46-460a-904c-81e2480d09d7 c0546bb4-93a5-45e6-a8a8-28eea13d26ee 0999f130-fb76-4932-92d3-e6d7e33f9923 1a86ccc3-46d6-47d2-ac22-0b48fb96bd9f 5bc8fd2c-b250-472e-b559-b3415697f4f2 dd8ab31c-5153-4b72-864d-e8b740db8b7b 9842aefe-3c7e-4c50-9ef0-6967b4768b34 99fa44c8-85e4-4dec-b6a6-2e23867b7a5f c1f83011-2ec7-4675-ad3b-e7d48abb1163 cfc3950b-0592-4c53-924b-01f95b91c9ac ac2cccf7-b8fc-4fce-8db2-29bb461363a7 10a0d700-949b-4beb-bb1e-c52b5862dd12 0f9ab4e3-558c-4831-a4dc-e3f0ee2d5601 2b44a91c-058c-4053-8b38-032456efdfe6 b1e070ac-27b4-42fb-b43c-38a5309225cb 2e432db5-0a2b-4465-8a1d-de99cae72701 28699697-26f3-4760-bbe2-872d049053ce 812526b1-6709-4340-b360-1beba828dadb f707d19d-b1df-469d-9c81-19a32e7c0b93 4fab2aab-eba9-4f53-834b-4296b75f010c 4194dfbf-dd7e-4a3f-b7c0-9e62da2e69cf f9a28f38-2a7f-4020-b870-66e55c470d70 30f287fa-3728-45fe-aaec-66ab1ce11eef a6cffa77-b0c2-46f4-ab25-b3e2f42dd844 27846261-6b83-4cca-b18e-cdde9e921265 416f2337-d3be-45d1-80c1-71cfadf827f1 61475cca-3bb5-4188-8742-779b315b120c e5a43e9d-c179-4d13-94a8-64d434e01dac 2c23bd55-52b7-4a79-9146-84c634ef699c 038750b1-f7fc-48dd-9724-1c8564a916d3 3bb29357-88dc-4ed8-bed8-bfff48595833 b50b19e8-d21c-4469-bfe4-213a32d78b9d 75bc090f-0101-4b2c-b755-acce754ea5e1 082e4c95-8c34-4aac-bb03-a12fc27d518a 6ddbe0b4-7998-42ae-961b-01fb4ddbd3fd 4cb37cca-5c56-4e49-afbf-9b7d5c5733b2 c766c9a5-112e-46c4-8e1f-c9f605ef9cb4 0f44bb9e-8321-4745-a5e8-0fb865f8eea6 003822a5-2d5d-44a6-b3a1-1ee8e5d77a17 69894c2c-71b9-4f58-a018-73451eac4c8b 4d3c3828-f39a-4b50-8f80-bfcf7efa9baf 32dae871-a1ac-415b-bb03-6fcbe4fda9f6 5afef451-6a40-491d-bc63-dcfcd1a30c5c 39a1d078-e3c5-4def-9b41-1a5db560da44 5af603b3-c68c-403b-869b-0a016c3186b3 687ab3d3-08da-45fc-be12-51faced14af6 8b620091-8d51-4207-be67-27d6b5273f04 53fbda82-46fc-477f-aae5-333726fbafcb 7b46cf1f-6697-4ac7-ae74-cc37d2edc53c 720f73ef-f127-40da-a47d-40368157f27a e0bb3cac-07c4-419b-8825-4901d8ad25cc 28f834b1-0dd1-4b28-a8ae-ea1e2af05903 8d8004d1-2b79-4296-a8fd-4170f7847966 61b836d0-f16a-4255-9897-b537f2461e53 0449ecd6-d282-4427-a8be-18d64fd02352 dfbf8b70-1b92-471d-a1b7-2ef2fec7cc33 177fe140-24af-487f-ab0e-ecd560077a54 20e56268-24bb-45ea-a32f-afa8e52d37dc a8b64391-ce5c-46bb-90cb-5cc6bc2ddfe1 fd97f2d5-ac7d-40b2-be2d-01d32dbd3deb 3d11298e-38c8-4f73-b01e-cbfebe01dac8 130d700f-3ee3-489f-a395-90502e94649f 70fecbf1-ac60-4fae-b0b2-0b00b228af32 2d48b5a4-bd5a-477b-b1ab-a2becac54149 ca4c79b0-b194-4744-9591-1778b8731240 94197bbc-7a0e-40d5-a377-9764ee46268e 0dc25a86-a47b-4e7c-aebf-579f510e7aff b8717666-f066-415f-bb93-b8239ccb2714 bccf2c7d-93d5-4fd3-830a-91e9305574b7 0d160604-50b8-4258-863c-c865696e54f6 66f3ff1d-0a55-4f79-abb2-969f204e8cf3 7365073c-efe4-4c27-b3b2-564704ccf6f2 f0e6eace-cfec-491f-abdd-a09e49144dc9 3ff4cfda-9f7b-4693-820b-7d544db0488e 2d35f8b0-330a-4df4-83c7-05afde7400e5 38fb8a69-c6cb-46af-ae5f-50a652cec5cc 685b4cf2-e485-4b0b-9f76-f9ea4448eb94 0f976efa-a0bd-4f01-bf9f-becbf0fe4c4d e5145fe0-fb52-4483-a0cc-389a1a7909a8 2e433af1-01ad-4e6e-a50d-4d6651dfa9dc d247970b-7d15-4f5b-9f6f-59a55e274701 8f0c44f4-fd1d-44a9-bf22-f102c2f982ba 8cc554c2-45b9-49fc-ad00-39a591745ca7 4f49b122-1a46-4bfe-b85c-5fbc1a1768c7 edb0b532-4f46-49f6-8a01-044afab4af8c 21c3b045-af79-461a-86cf-6b04273ceb75 182d5f6b-231e-4f5a-82c8-0b915bb128aa fa7c8ab5-e61a-415b-bebb-404c44d025c2 918a1b3c-aba9-430a-8f90-eaebf96ecd64 7ff308ec-4829-4431-8d02-bed1bfb14721 7c55cad0-1135-4b3f-ae9f-30efbc6d1bb7 312eb046-ab9d-4926-8422-c74a21c3f6e1 112aa8cc-32d7-4762-8d98-76e098b5b3ad 7547fc66-9f71-4298-8c81-e84d979a81e2 837f468f-56f2-4cf5-97a9-b77076d1a430 8c2e31e6-d227-451a-a299-39c57f89640c 576318de-afc8-4c1f-9ec1-b556f0a07bcb 1cf10acb-2df9-45e5-bea8-6512f21c7ee6 4d2ea1f4-c4cf-4fa8-b815-da022e1a207f 448cf4ca-98a7-4073-90fd-e237775c49cb a4f09665-eb01-4e32-a53e-75e57505cfa6 592bd05d-a270-445b-8f41-8985a066499a f9be243a-4143-4bd4-9e3e-403de42d1d13 b3750b5c-20db-48a9-90af-7abbf5950c3d 86739334-83cc-4174-8caa-e01eb8d0a486 c216f9b3-3d70-4e3e-9cf0-0c9321d18df7 325581e0-d8ce-4898-8b74-563e6a42eee9 790ea3e1-c5b5-4eb2-86f4-ffcf627a125b 1a36802a-3915-42f4-b53f-05f9eb0baeac 8ec240c4-3cd4-40da-96dc-f45e2f666738 a11c3942-4148-4cc6-bfc8-f7ef9f513165 35a9bc9e-84fb-4a71-8c41-53b39a810bb7 2b61c2d7-00a7-412c-8eab-a5067e218618 5a675584-c9cb-4a8d-99c1-dd2eeede2348 200908f7-e923-4a9f-826a-cc50b078b9bc 1f4e8a9c-1798-44a5-92d4-d8f2d933f9ec 77701094-d2f8-4977-9fb8-7abe00186e34 eab53a14-724f-415e-9007-482f65fab07c e80b44e8-d2f9-4e19-b6f8-ae000fefe790 56852e16-0aaf-40da-b7e1-8e5e12c18d18 0ca983bc-ab45-4cfc-9033-f56fab85f9cc 2a02b888-355e-41ff-a7b7-1fff4ab927d9 98122692-f987-43eb-93b5-cf31cb119ac0 cdcb2f67-675e-41ea-9a51-7e5bb62c22b4 5580ea13-37b3-43d1-b931-6e9868ad0776 704fe3b3-1961-41ae-92b2-46441848e6b1 66e1d0e7-cea9-41e1-99c0-d5606a82475c d31136d2-790e-4bdf-8ba1-05667747e857 c41ce226-da26-4a2a-9144-70f85a72db5f b4c11af7-d219-44b4-a21c-20fa53aa999b b62c83e0-c74e-4a08-b177-401732639fa0 24c8f2c3-af5e-4a52-8b2d-66ade13cdd74 a0d6fd22-28dd-4b8f-baf2-b44fd7c07bbe e6eaf88b-54c3-49bf-8de4-4dd356dc4e53 fe4d39a8-f6da-47e4-9e5f-9ff8df95dd25 38807e7b-8d60-48e2-9d88-c6a37397862c d680b011-bb09-4a31-9c4f-6c3b5288fa08 59297156-55ac-4965-96c7-0bd10b7e5970 e5ae6355-bb4d-4640-b6d4-d056e05e6e6e 7a109e54-822a-4683-85c2-dfc57a2b2e11 86efc5d0-0dd3-453b-8b30-25d36ef12dae 501f2e29-7e10-4cac-962e-fbcc74243158 ca3a019c-6193-4fa6-b29b-3461b01fe05d 628a6e2c-a6e9-4b47-a8c9-6c047ab5d87b fed3f68f-122e-4b82-9fa8-6d9062113f63 e9df93e9-5a4f-4961-b1ce-ce0b6a7c4f65 295ac060-064c-4690-8586-f6cc092944df 692354e7-11dd-4e0e-9e13-d97104df45e8 20b2bfb5-81de-460d-a1d9-344374bfca58 f8290c8c-c5ca-4cd5-a91a-4a8dd3820e7f 7538c4b2-3dfc-4de7-b8f6-df5be73f5133 391c40f7-ef1c-4653-8ddf-a3aec5a978aa 4cac3051-a3a7-4269-827e-af90a62ebbc2 36fcf360-96d4-4cc2-ad97-6e4cf0bc1430 0e900bd7-fcd3-437f-bfe9-12e9314ce621 f765db47-8fe8-49ea-a914-00ff3082760c 7986d91e-1599-4301-a5fe-0ca5bff15cd9 810662f6-b9ab-4a88-ad4f-b48aba8f0e05 c62b14ef-829b-4efd-b0fe-54ad9fc07d8b 05603070-16fc-4f1b-8556-3615a0791163 e8b7fa73-e37f-4af0-b931-a72ae447db29 dd4c0a18-26ef-4253-beb4-2eed7dac12d8 30764baf-2bc1-48b4-8c51-1cf9e496ea07 60347da4-9146-44f5-a6da-8474030b33fb 61f04308-4eec-41c2-a251-0566f46ac313 ec4a70de-210d-4a26-b76f-c37b536343f2 d23e6c45-05f2-4721-a291-bc99bd5c8dce d1d73245-d6ab-4fb3-9aae-08c7d05f59d2 f790accb-4399-45e8-992d-6ec84f20d5f8 049ba8fd-030e-4e57-abec-8031e31ead92 c290c3e3-ac9d-47f0-a929-6c1501068cac 04f39fb1-8553-457f-8435-bb97649aa125 e2712f3a-405c-4f40-81cf-2795b423ae16 148aaddf-c5d1-466a-8616-206ce30df835 af4e3d05-81e8-4aec-9cce-b8638650e5e7 b91c404b-ab18-41c6-9d99-1eb7af63dfb2 ed3022fd-c579-4c38-9d19-7d0b522ea98c fb432e67-23cc-4eb2-bb94-4902357e9e16 f1caaa9e-25f2-4d3d-b31d-4deaec95fef3 4ad92b38-559d-4b77-8b35-2fb48dad2b8d b34b80ed-a26e-47be-b48f-27cfc32b9166 be7c2593-da9f-4c6c-b3d9-9128c305105f f4b3746f-49a4-4dbd-9fa1-52260302a012 51f06652-87fa-43f3-a67f-f16eb2568713 065141a4-c11a-4fb0-bdca-7a429d550176 a9707068-8e66-4042-88ca-5512f333d245 689d3824-b593-4776-83d9-b58fdac0d92a 33efb287-d2f6-4355-b1e3-f856f09bd4e7 546ca229-4b1c-4af1-8576-415a3b613a37 757bc8eb-0471-4ae7-8d97-f229f4df2564 e9123c3d-0c24-4048-8bfe-52327456f921 76836856-f0c3-43bd-98af-9d952b2c28d1 f26f819a-7aab-4ccf-9b9d-3a0da7d5633f 1cd1e292-83c8-49f6-9151-85abe1a1944c 58dcad4e-a90d-4726-9341-9f0e8f121ec8 6ff30797-6c91-4400-9c91-4725d9aa6fee f72c9af5-9edc-4e5e-bf46-b9209cff7576 712604eb-902b-4cde-af73-1a5fa480ac8c b29bbc50-6441-482c-b5d5-3c78480c1399 22d64470-6fe0-4424-a89d-cb5ce0bfb47c 859a23ce-b5df-42a4-8fbe-d5b76b06e21d 27606649-b19a-4d62-855a-104688f1af17 efa289cb-aa15-47ab-a9d5-8a4c832c61b0 95741947-4bb3-4ae1-8210-b829ac12d903 8deefd27-f8c1-4521-97e9-8de15fbad3ea 6d1447dd-d00d-4bab-bebe-6b38e7e27b40 9c240203-2476-4376-ad85-f9b788025a99 d05d78a8-9a32-4e08-bb66-918e0c58d997 bd86cee8-1e0f-49bb-9d23-f1c803d60fc5 e193cc28-3f6c-418d-ac65-b2c70e2b1742 be9182f3-fa75-4f40-931e-033f6fa55f1a 6a6c5cc1-57fe-4aed-84fe-d32f612de304 9c12eef0-ab1a-49e8-92be-fcb54ddc0093 1fc06f3a-b3d5-42d5-8d67-1a35b3a56633 689e8ab6-b307-4842-a5a3-1dacfc0de977 46cbbb2a-9ad6-4b49-9742-05745a64dbfd 54e86aa8-ae9b-4fac-9d3a-ae7c4436d4ac a28096ed-040a-44d3-9481-c9a078f55311 76938851-3171-4a8b-94e8-28c0dee0d0cc f1765ad3-a099-43b5-8495-ab7a548e5b3d 23f51606-0faf-454e-9cc2-26260e1305b8 ddd64800-75ea-4767-a8df-be30ec9e90c3 618ff4c2-68c6-4738-a894-c843cf55df34 347f4c82-ab34-424a-9133-2e9ae450cb13 af71964a-1afb-496d-a817-64120c1c01cf 9f41c94f-2767-43b8-ac2a-dc0e01df8a94 3c9e71c2-3729-4940-9066-347351c13797 ee778fb6-edae-43eb-8a7e-8ae0409dcc32 d858b006-a536-4039-acb6-3a3d3b173b5f 5c454803-7cd7-4929-96ff-d30865b1418a 6180ba42-44a6-4ec6-9c9e-ecf4511a2a30 8b1b5c26-3c64-4b71-b0b8-98489ba281b8 4d45324c-e350-42c2-9eea-348d48cedcb8 90d21f1a-90b7-498d-8b03-7db9e0e93fa6 3c97db23-1dda-409b-84a9-04dee30220e8 73bec9a7-8253-4982-953f-90ed80a81e3a f9f42ace-ea1b-47fb-8a4e-062f1dbae411 2b6a9097-a62b-4c55-bd2c-42ebc2aef6e4 6faaa9f0-9254-40f3-8175-99bbda630eb9 43134095-e7d6-4898-b8f8-65655cc6bfad 6d1398e8-4b1a-4da7-bfd7-28926f41278b 179dc615-05a2-46b8-9c13-01c2a771e5d0 e62b6958-f7da-4092-a138-96376a7f3fcd 903f8416-58ee-4585-8ec7-a0187c37a25c 77763237-7435-4b18-8b73-e62b6954e098 e7bdbfff-b00e-4e30-84e7-c157f57a223c d582b1b4-85a6-4ed2-89fd-963e94a6b1d7 ba7cd739-805c-40a9-af8e-325924b40d24 32d73294-d578-42a2-b4ed-3daa5ed122bd 34b2975b-8e12-41d7-9606-55add93e898b 9a5ffcda-648a-467a-92ae-9951a104cfb1 64ba9c98-bf35-44c5-a3f1-923e1ac06057 4ea2cd30-60e0-4260-acc4-a315e8b0f79f dac8e1c3-6d0e-46be-9430-a617e14c8a82 e03c62ea-7c27-494d-8838-8bec549e3e5e de52156d-c522-4022-94c5-8c20dd830b76 78d5edee-280a-4fd5-b468-dd2ca29da696 b11b7d30-8d14-4357-81f9-17e85893157b 8f4dd470-3087-4588-9018-6d5d74ddf909 d4b7a7ab-34c3-4ca6-82b2-310e1edcda4d 6c12a2c6-c2a8-4c6d-a0a2-b5e593ddaa1a ce9a059d-9d95-43b1-9439-3d0175796866 8d77d6bf-ebd8-474e-b5ff-b2dca868bf33 84fa11bc-0fb2-4383-adb0-6cfe897a7188 3910eee3-1e82-44e7-a818-77b6fe2f5c4d a8c59bd7-73cd-4077-baad-f9ed84c8f0dd a815f3f7-d70b-49f2-b341-0a41e2bb80e8 aff80727-64de-4fdd-9e4d-1a2252868eef 39a497cb-9063-40a8-b4a3-a40a8c11f971 5c8e16ac-2800-429b-88f6-b31675f41037 3470e8d1-7a3c-4ede-9501-c08d8bbb0500 75206501-6762-4557-a97f-6c49a496bf9e bbbf32ef-516a-4514-99e0-fb334f85fb12 afb8deb0-bb39-4988-9d63-e0e452847aa6 8045f536-3c35-402f-acd2-507299778e35 30302ba1-2286-4040-bd38-aaa45a7e332d a613f475-27bb-4410-b2b0-004ff8c23e90 372b9c71-81e1-47d0-aa8f-b28ff9862c35 afe516cd-4b44-4d01-854b-40bf1e5acf8e b550ef11-2ee5-40bb-b162-767ab9e9d0c1 5d96807c-89aa-4824-961f-c5a1efec23ac 91e04bf0-8fc8-44d6-bc7c-c40b1e29429e fb95b318-65f1-4ee2-9d39-c1865bdaebfc 8423b24a-d9df-470d-b37b-c7911aa4496d 10282a99-3c07-41a6-b9fc-4230fc11f0d2 ec31aa29-6659-408f-938e-e43b61a4e6e8 2889a459-97c9-4272-ae80-85639bbc8299 e35c239c-bc18-4ab8-8419-25cf81107aac 5671441d-651c-455c-8a74-a27d54040fdb 4900ba85-ac67-4237-99dd-26289ed4118f bdbc7551-6f58-4a1b-bdd9-eac571f2e9ac 94a38a44-a8fb-41eb-a1c4-fff7cffaa306 51ec58ec-16ce-4c52-8f98-8dd08863ccf8 48b4097b-bd6b-48af-b5a7-702193ec18aa 0fef24cf-98a5-4832-873c-d03a7fd65211 70590edd-f3af-400a-89b2-6411de222cc3 2df5a8f8-957e-420d-a30b-e544ba526cd2 0bb8b8c9-6aa4-42ca-b8b7-106250152f36 23fe00a3-0f44-409f-8bc6-3bbe54db66d3 a9096eeb-62f3-413a-b858-1907669ed188 279c5b6b-13da-4e9c-acef-bcf55504bb67 33e6ad13-04f9-45f5-8ae5-5af8d969fba6 96c7c90c-2d73-4e3b-aaa2-609b67e87d8b dfc8fa02-24a6-40e0-991f-6a5a0e7cc1e5 6322aa5e-4cf6-475f-86fc-55a952ede1c6 b9b39546-c34f-4c58-bbab-aa9ea86a84a8 90002dfa-f64d-49a0-9ba9-ca832013480e ef603718-ad1c-4f99-b803-8de526976318 c558cdc9-625a-41ca-b751-dc3b5102823d f8cac5cf-1817-4987-8cbb-2af70848d285 e997f7a7-1276-4a8a-8227-6a2966765864 21afd16a-d82e-4fa4-8b96-63c4f7feb7ff 443b7738-9dff-436a-be95-7207850a68ca 62a8f95c-03ff-4024-97ac-5b194b9bc61e f3b633fd-c28d-4b64-9950-308c66327d64 92299561-f031-40a5-afbc-598789deb2cc 0ed0b930-3150-4bfb-b3da-148f94134db9 2333c702-9616-4344-970d-c1ba258cf813 a342ca18-a305-421c-8e75-0613d17c7f27 3426085e-8ee2-406a-96fc-d449cf1e323a 1704745f-f8ac-4b7f-94b6-8371557ca8b8 21ca0f96-b989-4ba6-9838-6805ed2d67e1 9fcf81c6-5212-4e5c-9d64-9fcc32fad4cc d59e2a8e-67c3-40b6-a2f4-4baaaec67521 18c50e99-2b14-46d5-a689-dea49ac1bf7b b03eeb12-f3cd-448d-a0b8-ab5abfa8bea2 f620be3b-aa0a-423a-86d0-bc9b02ada1c2 ee0be968-1388-4111-a5ca-470fa6453d53 7d182395-b2ef-48d0-ba06-910a303ab15b 6b130197-940d-4fbc-b731-330d04d83774 32572868-e5c8-4e47-a474-7efd815a493d 4be57e9b-7dd4-465f-9fde-bc3b00596d8f b08d1c5e-0015-4f57-8769-193b7403a79d 948f3c21-d496-4413-889a-5390b3a6e9d9 f2326d14-3af3-4a41-bb53-2867d6dd3235 dc6abd8e-1084-4834-8108-0aec135d7af6 621cd17c-5694-44ce-b515-17313ece28ac 33710a99-ec7e-41bf-9ea7-0df6b37cba22 1fbbc167-d954-4e7b-855e-8cb0f94b6aed 3afaef60-35c6-4848-9fa0-e1724d48729d 58edd32d-6899-41f8-81d8-0131b70d3991 33fcf484-82f2-4631-856e-1a84e23efb3f 69f20762-d524-41c2-8d9a-f9e01ee40e44 ce098a8c-aaa4-470a-9ca1-d38290fd481e 311c57ed-e09c-4d41-a884-77ad94269a38 0684bf10-2b3f-4317-b762-ec4491427047 c2f622df-6ec2-48d7-905a-b15880e7e238 c165d71c-904b-4899-9ccc-d7894e59bd08 80e27e1b-f832-4861-b3bd-7dcff98ba984 e8f18747-dca0-42b2-aabe-c2b42e1491b9 2548b275-de0f-4c86-bbe2-15eefda06116 0fd5cb66-bff4-48f1-b0c4-048cb24d0136 cae64425-2227-441f-8bfd-691d94f14405 40175dc2-5807-4d03-814c-d3edc4ee61f3 1bd74725-5375-48ad-998e-d1b978bce3b9 be125634-a5bb-4891-8c19-691b739fc86d 6e638134-2412-486a-b0a8-6aba4e9dfcab 0838bf7f-9aac-424b-a8b0-c4812512c33a fd614e50-f4dc-47ba-8813-4a1065f9409f 80de5e48-d9fc-447a-b56b-fe699418ffec 4144e936-c029-4898-8863-b39f17a7267c 45df4465-db2d-4ee1-a74f-388148bd6bc8 bc8e6461-3150-491e-afd4-93b1b7dc05b6 d17789fa-5d49-4bc7-adbc-3bd0f1884bce bbc41504-208b-48e1-9999-885f48feed5a 70e0b234-2cab-4544-9877-9e3d4c2fa31e 780e76f4-d88e-48e4-a785-5538a374ef94 d5e5f023-df23-498f-a490-2e10e2ee6617 b11ecc16-920e-4fe0-af92-f6d0a1782c95 c895feea-fce2-4d59-a2eb-8c0633192858 d2c964d5-5261-46eb-9ad9-7e0044dc0c0e d4c72a4d-8d88-4204-92a6-98c4b62bf1fc 3a731f5c-554b-4351-9d38-9854574ae7a6 c27c35d5-2afb-47dd-81b3-9d3426841ec6 abd43d18-c9ae-42b1-a6a9-b3deb905c2b3 fd1d5ef3-e882-40b6-8e51-e4193c8cdf8a 26146d57-a4d6-4995-baea-fd40210916c0 4e5b4dd1-06f9-43cd-a610-496e8e4f30fb 15ff4043-0aec-42b7-b48a-b8b74f5ad3b1 b6f2379c-ea4e-457a-9b52-66c5a9c2bf47 a8d629dc-6775-4ea4-a0c1-8b4b272f9534 975e5518-c2bb-49ae-b6db-59e95ca3c56c e945bde7-2411-4bf6-befc-2f0e4b68962b 0b1281e3-839a-497e-8f7d-32f225a6708d a940604f-cf96-4280-89b5-d3a16fdb68e6 d1fc3dc0-02cf-4895-a4ed-5ae1685cb5fb 047fedbf-f238-4fe2-a70c-dd362b8f3987 d824efe9-d205-47f5-9788-f982d5084c05 2aff5df5-06ba-4eba-b05c-ac4e4bc73b2b 009b09b8-ebbf-4fb6-8bd6-0c406373fd84 33ebec95-d09b-4e67-a767-f5815f0a2c2c 6345c57d-6c5c-45ce-8092-1f802e57a8fa 04eee9f8-ea61-43f2-bd31-a5c97a6f7e5a 1f7ea33f-e697-4f9b-a672-0f92742f7d6f 6e5d0d52-ca79-4e7b-b92e-c53018a9ff08 52ec0965-a5f2-424d-bbe7-f30054693836 f448d4fa-ed01-4de6-82cc-d6c5543b807c 1f384547-1e6f-40a2-9fe4-52930137e46f 876a88ba-cc37-4488-b57d-4df9c6146869 3a385097-0e02-4865-bde2-829f328c06ca b239c95a-7091-4cae-b89e-2d157b031214 21c5047a-48c2-47b0-819d-f430a31c5824 fd47c52b-060e-4e69-80b8-25cd6923d0bf 7644a38c-2281-436b-ad8e-ca9c62dee396 cb6095c9-f2e6-4778-8661-7fe95f78906b e74d7332-be87-4b21-b4f0-f8e997decc5e dee93763-2fc3-4e62-be5c-ccd36a9b2510 bc707b83-e0f1-4c4f-a666-0b4bb74f35da af00f8c8-e5f1-4181-9e65-8cf49cec9cf1 ba776e7c-f639-4046-83db-eb2713e84c95 207433e7-fb9d-47ce-85a0-6649d38306eb 213fc584-b03d-49eb-a8de-d2b926b2f055 d9c39dd6-98b9-4da4-a950-dd0361a78732 757093dd-003e-4758-be93-d6d9044c4e46 d6394da1-b5f3-4794-bef9-c94b07516702 88963737-4afe-4142-abfe-eb1f954d3949 4d5fea21-a595-444b-a223-b8f7bbe71fd5 e4b6820a-5222-4f4a-8834-d64209a4602a 20730514-090d-4129-b17e-397bb6e6352a 721cf783-eeba-431d-8208-2b2b9211e28a 1a04df6b-25c0-4a8f-b084-cb1f2da81010 999237a7-a8d4-4503-8673-40dbae39cdb7 1084de33-b1b2-4fae-9a75-3dcad993762b 35b924f9-7f2c-45cc-a8bd-ad5c6a8f64ce bbd5b5a4-b6a9-414f-b3e3-74275062958a ced9be72-1ddf-40b5-81db-2e853d4d7b58 f0926038-6f84-4712-9566-87bbd16671dc 33609921-6c3e-4078-8b63-167a4a1e990c 927f3bbb-4f2a-4e28-aac0-c64cd4af3f02 869bb6b2-be20-461a-9175-c971bb49bdfd 87cf7350-c120-4f57-848a-da595e49d3b6 4fbb8fef-23a5-413b-8a80-65e14d513a32 9383ae24-fd34-4bc6-94e2-174ff1c5f5c1 02f93d82-9797-49f4-9ff3-45aab4ea3308 d2e930fa-d5ba-4181-993e-3d084ce38838 fbc81fbd-a5e0-4775-a468-c8acc241807f 27159c76-e36f-4e39-b316-1aae0ca5384d 34d6cbce-71d8-4797-82a0-10e6444fc5f7 894571a7-933a-4e09-bb38-c96bc30c9df8 191df2af-c5df-4fed-8cfc-d4cedcd3372b 6d82b97a-47e4-406f-80ff-0aee6cd6e9f3 73ac88fc-c58c-4640-8182-ebd762398995 be455c7e-90dd-4cbc-969e-f16f9322f581 0c88e353-c5b1-4540-91e8-5b7262e30da7 b2a4da7c-ce03-4335-970b-101dd155734c 743d68f0-2772-46c4-a146-d09e481f9462 2f2f6be3-89cb-484a-a39e-66bfa3794200 db9474fa-1d5e-49f2-94dd-9cda440bf339 f705065d-3f13-485b-aef3-87929db589db 8de41793-1edf-4794-bdf8-bb90d520048e 0bc76c17-b267-4778-b9cb-5d7ab1158cda 0e8c7960-7503-434c-bb9b-32ffd8bb2535 4e6803ac-ff3d-4c83-bd17-11ce6003db17 637ec96a-8797-4f19-a079-1a412aaedb7d 8a3b99f4-0529-4220-86a8-5dae38e400e6 236571c2-29de-4e95-99a0-382a147ffe90 647d47e0-e738-4ccc-9686-5bdfab7eb6c7 b33b67e8-980c-4cbe-8fc8-eef857d20b93 97cb0450-2e87-4e49-9442-b62a281a769e c5321bde-a723-478e-9021-a7dbccb23e45 bdd78893-4ddf-4fae-b899-47a3f7646706 3232c318-33a8-417c-9a6d-5e7ce4983d67 3d469fc6-2bd9-460b-baed-d72dc96624dc be4c9177-e5ee-44ba-94eb-d6aa056cebac 8c58c71d-2d27-4afd-9181-62ab3cf25a21 3083200b-6309-4111-9320-094c900dc3a7 8634d60f-b13a-4527-a8c8-034b11439913 07e14d74-ebca-4575-8f71-2b022e390bf5 645d0a24-d181-4088-be13-0b34d44e9887 32d84208-74a5-4338-8017-3311301986e7 a7ce8ca4-8e24-45ba-984b-87c0cd32d0e3 64e84514-a4f3-4af6-b48a-812efeca9270 4079a906-a755-40f8-884e-41701f7b819c d40a4212-b623-4171-9f7d-a9da4e589105 bd5bf677-ec38-429e-890b-1045b387abe9 b79d50fd-ead7-4d97-91f2-283c7773f45f 65faa71c-e9e7-4a81-b941-7fa3a1c99361 556fbf4c-57e6-40bd-b9c4-8bd32be4e849 bc8968c0-f20f-40dc-a60c-d24d70cb7e7d 063f2e65-37d9-4608-9e2c-539731e63efb 9be13ec4-af47-4558-a530-6be7f9545add d80a86d8-b3e5-4808-99da-7c754bb3d187 19647930-f4c9-48c2-96cd-7abd39f7456d aee5d4af-8e91-45ed-9bcf-f8fd9da7a3cb 926cf860-fd2a-44dc-96f5-cd26cbadf6b9 bace56a9-7e98-49b9-a3aa-23b23c6471bf df5fbe80-54d7-4253-a422-dc9db43d110e 31f0fe2e-83d4-4bbe-bce3-8b8c36ab68c8 7324218c-40f2-4315-bedd-da859e8f815f 7698a8a4-f849-46fd-9933-8f702c4ff537 ce93b3cd-05ab-4cf3-ae22-885cd84536a5 6ec0e2a3-467f-403b-94c4-5fbb5eae556b a66fdb3c-14e8-46c1-8cee-3289ef639afe 11da3207-d3cd-459a-8984-b6f5d0f9fc80 3096088c-7060-44ca-9cde-65868a7dcf29 4e9f664b-e67a-453c-9a43-929bdec64224 1ebdd784-ee28-4a90-8542-74d07fd4c22b f5d0de69-c136-4207-ad93-4a922bff13d6 36cef4a6-db49-4159-ae82-57b6ebf6961c 7e2bac13-675e-4526-abef-bd6ba7de489e c3be7339-7cc9-47c8-a884-19546c59f44f a0ee6070-786b-4068-a424-bccd9d41add6 35d4ada8-8315-46e8-b6cd-f8b427be6ef2 e2eb0c70-af5d-4e04-871f-9dd86f290ca6 a0b20f21-9eae-4446-b8b1-dbff2b7b29cb fe1282f4-e870-43d3-95a8-8bfce92ddbe8 981300c8-f09e-48ef-a6d1-54b4fcf0725c 8b8ea8c0-296a-4f4a-ac92-670d4ca3fa74 2700b273-07dd-4230-a1b0-fded679eae4a 220e8572-e251-4018-80c0-03b20ac43e06 dc0bb1b1-7b53-4753-b5e2-0ff6d0117f60 2c971af6-186e-4aab-a3cc-5cdf74c943a9 6fb0d44c-f404-4f04-8061-846ea0bb2000 da31c88d-6af1-4c76-9696-27033e563288 36754ca1-f05b-47ab-bfc6-5fcd3c331d87 56bfcefb-0392-43d6-9d11-39334f4f39c7 5ece72d1-9cca-4ddc-b79a-e4388a3ab1f1 8d43faf7-13fb-4ab0-b41d-ca75f86062ee cca34f82-aeb2-402f-baad-aa729b23d69a 8ec104e0-5ffe-4234-97ce-0b0c6a3c3c87 6a79c57c-c0c3-4fc2-99d7-de47591588ca d9962f98-a907-458d-9ec3-06d172d751df bb843de3-c0aa-487d-83b0-20df09c538b4 db1f85a3-1639-4616-9e92-edc94be50980 76105240-6459-4225-927c-1808b18b9d94 7c1a7c2e-e5c0-4a62-bdbc-bfd70fd01dac 1ea85a4f-70e6-4d5c-845b-71f2ecb28794 17bd6d3c-a17e-4709-a3f1-9a27b8c37a54 92c824c0-beed-4f7f-890e-5e9d50e9189e 2679deb2-4484-4acf-b038-90ee0ac1c0a5 41d54cde-4a11-49f9-920c-1a619da293d6 b5efba33-2bf8-4904-acb9-6f21310b4e62 f96c3453-53ff-4dd6-a13a-080299522447 eccb3b5a-b6ef-4db5-b777-89e884c14b7f dd118f36-d1a2-4abd-acc8-8e2b9cc32781 c266675d-744c-4c17-b2d2-dd2731f27c85 3903fca0-8f14-4810-9904-110755262522 1d867c02-08c3-4482-9e89-d388d4a32634 a2bdcba6-389d-4463-b587-2be1bc1c9faa 759327d1-13f8-4977-9c18-9d1e5777cb0e 9333c8b8-2630-42f4-8ae3-dcb2b42b439c 799f0ead-ac71-4d2b-9549-c586317b82fe a7101287-6e8d-4f82-bff2-2ae25c2b6544 09e77b67-2f2e-4735-850a-b1f61db005f8 2f0d6328-b512-4f81-b8c2-f79dc966359e 2b2617eb-549b-4332-82f3-e5e30634155c 85df0a3c-f5b8-46f8-af0d-bfff9c5a6b87 2add4f1b-f7bc-45c1-b95a-b3462708f11c a4030f4c-315e-47c9-8788-8f54e5fa6e21 b7b75c2e-e138-4e0a-98c4-658d00aaccec 328ba6bf-8410-4d69-b411-a4c72ae1f4bc 70c5866f-138c-4907-bf1a-431ba4b1a8e0 889f131f-36a3-43b5-9362-983d629e37ff cf2bd872-f3e0-44c0-a710-f0a9a2f8f1c7 e0487855-ba66-44ab-9a8c-30635bf372c0 69df4640-7258-466c-afa3-276471c353fe c98b6072-7d31-4d9b-8716-3806d7a58ab7 55537d6a-47e0-4e12-9bef-723fd884201a 0b74341c-b429-4540-9542-ff06f2724aba 0f4a0f0b-73b2-4406-b8d3-574e15d70674 99a37142-1c1d-48e6-9018-38290708c825 ad97dd8c-2225-4886-8b77-1e9b77e08192 30f6ffc8-26c3-4715-994e-dd37366d4ae5 0a8d9c0a-a81f-46f5-b13c-8c99667d6f0d 7e4e92f4-b2f4-4a71-a57e-400c8a047233 392d19a0-f9b2-4b51-8cb2-70b224db58f6 c73e8849-cedf-44fa-8096-76bdc757631f 134961fd-cba3-402e-b8b9-a785e846b422 2b77a366-ca9e-4994-99d8-f215d87a0f5b aa1ccc8b-b8cf-429a-a332-a96ea9eae597 6aea6cfa-b93e-4d47-b62a-2f6bdc0ab48c 2a3eee37-e4b8-4e59-9b06-9afbf8316550 56e36d12-5266-4654-80b5-f4df9542d714 b6dce938-93bc-4676-9c46-9334fb2cad96 8c45b78a-ec95-472a-a51c-57127b9155d9 1999a961-2cfb-4b74-bb91-160d5407ae4c f4cffd99-5b39-403f-9995-da3becb98c69 4052f5f2-aa74-498e-8ea2-145144268978 70d2acf4-52e3-4a11-a9de-74674af1f871 ea0f1f7c-70c8-46ef-be65-7994d9d68121 cca6d55e-e195-4867-b8aa-1f005d34c081 a1a59b06-375a-46f0-be8b-3fb972229415 59031fe4-a1c9-4ccf-ac20-06d05b765a7b 796c7098-2277-4476-80a4-f96dfb8bbc0d 760388e4-88c1-4262-b537-c02596a2f0bb 97336676-4c09-41c9-9cf4-e1088b6b7dc9 1b5cca62-3fff-4c3e-8425-43c59d294e3c b8e97c32-817b-49eb-afa0-712f0f64140e aa7b904e-74b4-4b2b-baec-e59334760cf9 74c63d65-4f03-4e70-8f14-4322b0a15001 e4da7f74-224d-4e99-ac49-bfeaf4dda413 20829e68-22ce-4db7-8f0e-e90b7ab7dc43 21a64013-32ad-4dbc-bf09-e7b7d0c13096 f0f1f16a-e1c4-46ff-a6fe-7fad34690f96 da04867c-ce8d-42a2-968e-c692cc7937f4 2b1bd933-ca27-4f72-a157-f21d0d8d747f b0964dab-fa93-40f4-9162-26ce882824fd 926645ea-aa18-4f79-a1d0-9e6d68468044 24cb5fb1-0a9c-4956-84e4-2dc23cfbbcfd 3605f46d-017d-47e8-9796-740c714700b7 0e2e9550-d1d3-42ea-b170-6414152356a9 1d671480-32de-4eb4-a029-6c7592baf9ce b8a947da-2f8b-4a01-95b1-15dc9869227b 1dfb59f6-d301-46ef-9782-3a0d2bf1eeb1 fc10c4e1-8263-47a0-b207-8e71afa3ba0f fc8800d3-f8ff-4fb7-935e-9c564dbc4811 8369bb33-753a-4ba3-88b1-9ea791f2a02a 96842aea-53b1-4191-b9de-32c91450ebce 33eeab08-0f11-4571-b012-984a5213dbc3 9137b2fe-2c66-4f03-af56-777f38a52d49 c6b21106-a52c-49cb-8316-89dca6807884 e9255817-eb4b-463b-95ba-ed1022f6a3bf d9744f11-d2ba-47ce-b60c-caf198cea712 d2302b4b-5f2f-4464-ac3c-2049251103c5 7fa3539c-dfc6-426b-ad1f-22098c048110 88a617ef-848c-47f1-98eb-e76144b9b4b9 a0b65e05-470f-4339-9514-991f88f23950 cff6ab5f-0511-4b7e-87c6-6f02ed684159 fa3a25f8-9409-4cf4-88af-5548b5515d92 ed3eb36a-d1a9-4ff7-9b46-a9f1bcfed2dd ca91460f-49aa-42d4-a1ff-9ffa74e88cdb 6683f756-d102-46cd-b1f6-491dd6ebf518 59c3d378-3fb3-403b-98c8-e93cd4c3003b 1ad28ddd-371e-4612-973c-a2151f25d19b 015a98ed-cd5d-41d5-bb70-c7fed047ee37 1f4817fa-804a-42d1-8b89-d51e32e10027 0fdd59ca-0d19-481e-be71-5de4cfd54aca 49bbf19c-a77e-4437-a7ce-fd0bfc19ae7f edd3e800-721c-4cd2-84aa-b29eb5afc382 0cf7baed-0140-490c-b541-c535741ff853 e97321d0-017a-4680-86b9-68405fe4e21f 6062576a-b475-472c-9585-8a3f84aef775 3df07526-62da-4aff-a9f3-2de19cb352ec 14d05c2b-4aa5-47af-a0eb-e7b487345f76 de93393e-e79e-4b1a-b3dc-19f00b9a76fd 975959a1-c658-4a4e-b829-7a201b02fbd4 4c0a5207-ec8b-4e56-94b7-5f327075f5ba 1b433124-8034-4980-8564-00ab17e65a49 d9705a18-c110-4777-b989-d504340003b8 7a0b8c64-20d4-4b62-8f6a-2334ed15ed38 a262aa62-8c67-495a-8b2e-d3211a8606fb 6968203a-2972-4651-8e6d-ea2f941fa6bf ccac0def-1e2b-41bf-81d7-428431f3ba50 f12e4f73-fbd6-4fa8-9de9-df4543bca5b9 d81a864c-e95a-493a-83b3-6f9461f3ba6e a175dfac-6aa9-492f-9975-d1f2349f635f ca81d7a2-3ff0-4827-8d52-6b55205ac17f ddec1cb3-d7f0-433a-86df-4305e0c6ad89 9d625714-aee7-4234-9566-14e4e009fe75 16721c96-100b-4605-b2eb-a68e6318e360 a6ad5131-a08e-47ea-8ebc-58050536d1d7 496a7082-288a-49f8-895d-b658e349f3e9 d95fa768-1d58-4e7a-a162-afe297eca56d 1d70706d-bec0-43f4-876d-7b27ed7b414b 9ce4111b-fe9b-44d7-88e9-2c1109c4756d 2d2fd0e0-5455-47ca-8318-27211ae46504 3890ba63-d1e8-46b1-b660-1a7392befb95 d3d3a4dc-8484-4577-95ff-833a63769f54 f7e313b2-f844-4884-8a97-045a78fcb903 9a1135db-944e-4c1b-b0e4-31ed308fe900 77a341cb-5b74-4bd6-af4c-51dce03a4370 02f8fc01-26a1-485a-942c-5528fa3cc0a4 c300a876-2da2-4d79-8926-19b3bde3ca4f af56839f-243e-44c6-98a7-5835232a3b73 61e181bd-f2a0-41f3-8cfd-8ee78ffc3823 e27b343f-f81d-4f37-a7c2-318928f21c7b f7376327-cd90-4fe0-9471-f2244b68e49a c83ed96a-b996-4ad3-b37a-257de8963739 4fcbb381-c966-4a6c-8608-97fc2d71cbd0 0ba57010-75a6-4403-aa89-4676421c2642 8f87c480-bc72-4061-86db-349cd47c5ba9 bf6bf0a1-263f-4a8d-9d81-d8115b79dbe2 ac2cc8a8-9b95-4c93-baae-08f5a3887b2f ca151d04-cfc8-4843-8772-b52946083a4c 28c5a534-e262-4577-8486-353c826a88bf b60ec122-3a5f-4672-bd0f-533cdd5bae88 43f449b9-bc0e-4ab5-9c96-8aa934bdeb42 9a50f5ea-7c23-4e53-bfef-2355213a5fde 74e289a9-a6aa-40db-9118-3a4919ad2769 a1ba144f-7533-44a6-b881-64b4c7e72466 a1fe4a39-8472-42c5-bbe1-fa245c667e38 6600ad35-b893-45c2-9ed2-d51474597779 59343370-ad74-4e5e-ab0e-29f54a6fff9c 1fbd87a8-7e28-42d1-9439-9f4e4197c8a2 1f96ab88-aea0-4cb0-b470-01916dfe44bd bb9b90bd-e50b-475f-8183-62761c216c31 7b38df8e-f270-4d8f-a243-638770de7d1e 96d76775-d641-406d-841b-0b902ca1ca94 37000304-0292-4ddb-ac2d-36ac93fed0a3 d30292a7-5505-4339-95ed-7579bcfcba51 ef962708-7f64-4b92-97cb-6c975b9f2c81 27147a47-fd50-4fb9-90cf-f5340a48bae9 4164efae-94fc-4d0c-8724-7b0a570e534e 610f3518-cfcd-4216-8925-5de78af320a9 6c28e299-ae85-47ee-a787-de9b04ae74c3 fe6583a8-5db1-4be8-b770-4e0a8fb04f56 520cbe06-7e4c-4641-9a8e-c9ea9edc766d 7d89a727-fedb-4dbf-82a8-fa7a8c735694 84cf0f2e-2f2a-4f01-8ceb-074965e624c8 ce6e966d-0cc6-4bc4-a5fd-2346ed603481 6a8b4bd9-0043-4e1e-90ea-6ba1f5ec205c 142a325a-50c2-43ac-8a1d-9896c50d3218 5b967e9f-5a25-4c6b-bcee-16bc8135ace5 3f91b1b6-e79c-4373-823c-12301ae6014e a55643f6-8f3d-40a7-8a75-ecc04c9f4f78 764a936e-d0e6-449e-b577-63456ee0b8bc 11d69db6-3d13-4b48-bc50-3f33179357ad 11ea1530-6714-4545-a297-7bdd24a9ea68 e6ef208a-2949-486c-a29a-e376de610000 2831d72e-c43a-406e-bc99-2b0c5c59d59a 123356a1-fc81-4e29-af19-241ca44f9060 22e41779-6cdc-4bdb-b6f4-34ea147b33dc 82fa204c-3929-45da-b0db-d93fc8607018 dab7a60d-c93a-48e0-83d8-7164bddc8ea9 bc26c9cf-50d1-4d40-9d32-ad5857f7f219 2d77f406-46d3-4bbd-8105-2edb76ea8c94 778a5677-f458-4a8a-b125-48ee8a30b77f b7dee0f4-ddf7-4512-966e-05ac010ab5b8 422134b7-fa9b-4d20-80ac-1ff574bfc684 fbcbf804-e151-403e-8167-4848147bad9d df1e854e-35d9-4ade-b36a-f79d17f014ab 127dbc6a-afcd-456d-9506-ca32ecd0d491 deb0c55b-16a2-41fa-965a-f16d9e6e47ac 0c6c4f6d-6b31-4884-820e-f3e54adfedab b8afe85f-eb0a-4680-9f21-95900725a3bf ecef3de4-8703-4946-b872-d8439f75fd7e 4e64c057-9a5a-4485-ad3b-980b5743f504 7f24cf78-5af1-40a6-9cb9-d8f4a63c467a 0ee12970-a297-4b87-8878-6407d79b3321 1373a531-82e1-4973-ba84-5dbf0c772c04 1121a555-3419-42ee-963f-e974f8cb22e6 f6775011-d0d5-434b-9fb8-9b2b97c74fe9 c34f668b-4f76-40ec-a0bd-cb7d43eaef2d 99fe5884-193f-4f5c-8f6e-0dad81d52a9c bb906d92-b6a9-43bc-ae43-0ee3963538f3 96ea9022-d009-488f-b09c-6011f7141963 c2feaba6-84bc-423c-ac17-7bac2dde2959 d5310a02-05d2-483a-942a-7e10fca7b590 206ace83-1b51-42dd-9621-150592632e06 36ea76ca-75f9-4265-a07b-80d70257d922 340f71f3-8cff-4db8-b48a-b6bf0108514f 59ea087b-8fc7-47f7-9c1a-b2961bf9a124 e6637f42-128d-4829-8f21-56acf64ab42b 8d9c2b2a-875c-4899-acf7-2c69cf5dfac1 f04fdefa-f67d-4039-baff-703e059748cd a83b56d4-7570-4ac0-9bb2-b0f41bc40c89 a50733f5-e5c3-434e-ba6d-ad06d48863fe c2c03bef-2f62-4301-82e9-1e36960bffd2 075ebbdb-2265-4557-a446-7e57ec9ee892 7ab0d242-4f44-497f-a33e-dc3034587ddb bc987d19-e287-4a58-bca9-de4409ee2bf5 d2e6d12b-480a-4e44-b816-f4b4fd8002f1 70a7106c-8291-4712-8b67-54d3a7e2777c 364edc97-e161-47ba-b787-189d00ee7c48 a94c5936-1022-482c-87bc-92712887d919 70c9d22d-394a-4cba-be2c-60efb2d780f9 6eb7ebfe-f6a2-4931-8c58-fc6e313afb1d 166521a6-f9b5-48e2-9819-60395506ee76 45bda458-6081-4975-84e1-89ebcf093a24 36eaf557-f20a-46a5-b766-6845516e287d 7a34adf9-52cc-4c1b-9a87-084d903b4ca0 2391fe6c-ed07-408c-b0a5-975d50a4598b eaf6ed5a-989f-4f18-a17a-40c625a43594 f4ee73f4-b7cb-49cb-b086-01f475cc6f55 04d402c7-eac2-4c88-b15a-06865b79abbd 1068d418-ef72-455a-9fc1-535aa5167fc5 681fe5ca-cdfd-4290-a4f1-c4f3c24dd367 dfa0ba2f-e285-492d-a2f6-77e5945b713a ac46080a-df1d-4776-8b99-9666fba623b8 8110c926-e838-49df-8ef4-350e896e94dc 5c64239b-6911-4c2d-9e30-04fabc6754f4 993fac90-8f27-4a0f-8b29-3208941b9d68 6e37693e-a8d8-49d8-8e22-6fb20fb53590 0131528d-3353-43f8-a721-64ba270ff2e1 a8a4ff99-4af1-4c7e-b7ce-c598cea691d4 7460df01-0517-4b6b-9184-247bc0265f39 8a76ab31-7e7b-4a2d-9feb-2064b90f8342 61b96f13-712c-4efa-9579-6ded96f68c8b 3fc11924-3589-4a9a-b78d-c850ec85c330 1f5aa092-d6d2-4b06-9064-63a6731694a7 4d8f78cb-2f2d-4f52-8724-31335325f943 59da4703-49d6-4ce1-afce-dcea27cf1747 0832daa7-d27a-4411-9247-ab8813450b83 715a81f8-c999-4640-a353-b927db62fc61 22d15097-593e-4a12-91c5-36918c4fa230 32487e44-79b0-4467-a88f-69f521402189 ab1c843f-afbf-44bf-8459-84b411d1aeab f3782617-0eea-4008-a2d9-3557c56a12a6 26399ffe-84e2-48c4-b0d5-b915ec25e9a4 6837586c-435c-41cb-bd6d-7f5f03485afc 7f23b9ec-e570-425e-b3c1-13512a5e78ad e2e79a59-f8aa-4140-b790-458bbf6ad1c9 a344fcfb-f42e-49a6-9595-277745efbc79 e1774a60-bf75-49ab-9b30-0605b1c0d4bf 898e3ada-62be-45ad-81e6-4afb0e585237 a5542301-f2a3-48e7-ae24-b9fcf85f66d2 e0e53889-2c33-416c-99c0-691a1ab3939b 8edd95c1-5d14-4137-86ad-f964f69322bb 14d1e4e3-22d4-4995-bb1c-feec048f6598 81905c47-fca1-42dd-a300-2bb206740415 80cd5f9a-6571-4706-a195-1e7120a03cac b2aae8bd-14a5-41b0-a865-10a160050165 d718e56d-bd00-4f9f-8a63-0a4628351f8b 3c93e8dc-7c08-45e3-9921-0a36413d19e2 90091398-80c9-4135-8824-e4283c72358f d9ce044c-6c75-4374-9624-78d8002cd3a6 5211ec03-082e-4979-ac5a-9bc0cefdd974 0a833634-2e6a-4401-96c9-26e5ec4ddda7 190681e9-2f4c-4ba2-8e9f-2b24b0dc274b a31dea3a-55dd-4230-a8b9-31256102fe5c 922306ce-91a7-44c2-b884-01f3cb3d5b50 6005ceb4-9e23-478d-ba21-0e067e479619 ff1a9a11-fc5c-4212-a1d5-d1d1cd12b2ce 1829de68-86f4-4566-9325-12d238c6a94d dbe7d6f4-9b9e-40ad-8860-7b5de2a1d4c0 39e7fe21-999e-447a-be82-686d05f60a0d 9fae80c5-afbe-450d-9641-ee2a7c700ff9 715470fe-199a-41fb-b902-033c94d98502 8472d90e-4b21-4608-8046-0bf784b2a08f be2c9472-239d-4763-9e84-eb90934f3a1b ff401f5e-5558-4362-b38e-e8c6df67ed5e 678ab9ea-d66c-4db1-988b-73373b51fb77 24337517-e7eb-49d3-ae71-0b2624a5d4d6 9f4070da-afd7-4132-9c18-f62613fc9cb7 e5a11ddd-daf3-41c7-a436-e9859d813efd 0a4ef455-8bf6-481b-9665-a72d3685441f cada4a68-1e84-49e3-98f9-255de4da7c06 ea37daae-a77b-479e-8222-84993b8a66ab cf01fd6e-913b-49aa-b3ef-05d527bb59d8 836d619c-7f88-4e3f-91de-c5ee389efeb4 6c26dbce-ced7-426d-8de4-08010e925bdc 54d97061-7ef7-40f1-8ccd-c6c818076536 2174d45c-2e19-48f7-8705-198b906bab99 0aabb24d-099f-4ecc-a24a-217e2df32b84 2f98c0a6-b1bc-4977-98ce-cabdfd719ea5 421fd51a-2fe8-4a0e-a282-7ba2fcd55e98 dac7d0cd-45d6-4d02-a420-fdc21e1697d4 2d8a144e-5717-4c2d-8357-e9d654d2b967 a990d2ed-d3d6-4d50-bac5-e39f72ae03df e67b0dcb-29f5-4bd5-9f6a-1943831bdd2a 84275f58-a6be-44b0-b49c-f5c621463335 0b8e8c59-6af8-4548-a94a-135df0ccb315 7d3012fe-9177-4166-95bd-eebe669faae4 782ef38c-27dc-4377-9ec7-7bf9090a2a44 b476ce45-8d15-4311-9929-080379fdb07f 4c5f05b5-ff7c-4898-86f2-ab3c96520ad6 87b0fc85-f79b-47f9-885d-52229851bf14 5e3e25bf-2ea7-48bf-894d-0a7fbebeb0ce 851ff20c-ad0d-4224-a118-ad35bb6e600f 865feec7-69f3-4f1a-ba2e-e58fcfdb7f7e bc78de54-c42b-4927-9d3d-14a4dbbb4bb0 e6f9fd17-5481-4fbb-864f-39dce7bbecd9 6b38aa43-29b9-4ea0-9314-245a5a096f45 edf62a48-e69f-4b5d-a25c-3b7f03ec2522 9fb824c2-bb15-4a52-83a1-7e3c53524555 a3e63a66-1c59-44f9-973a-4ce28525859c 2d1e0a29-6131-4fa1-9a6b-3adc3ff510d5 5cc8e357-fd66-4b27-9536-e24c61ccac06 c737be0e-37f0-490f-8c83-4c2b30dbde04 6a422d04-7853-4b15-bdfe-19386175c6f9 ecb4ae39-d543-4c3b-b6f4-9d5c052af475 baaa0165-8c3b-479c-bfb6-09c4ca9fcd3a 16ea2aab-b375-49c5-ba6f-e5287284298f 02b07d02-50f2-44ec-b4ea-6237730293a3 049c7bf4-3e04-438d-b7d1-976a97e8f783 7150e10c-dbae-47bc-bca9-56420f53493e 1661909e-e22a-4619-bf71-dde8ba4766dd 2f1e728f-046b-4887-8742-ec257b47ca60 c632f77e-17be-4793-b77b-2f0f19644852 364d2ee0-19a6-4cd3-8a31-c4860a12e797 669d0cb8-0cf2-413f-9606-8a2a912071b9 ebe9a97b-c0e9-4aef-9633-421634e5a9e9 b4039316-db77-490b-ac35-9365979f9110 6f0bfa38-db48-4b96-8be4-a2e80864a3eb 8a6a9a45-7911-47d8-8203-4a8e0b874f61 4c214133-1cbd-41ae-bf8c-5818c99b34e2 0c572166-2cb4-48e6-bbd5-a8a90e6fe8a9 c115f0c0-9273-4ac6-8f60-e0356f353906 97b2a775-b481-4384-afdd-e821b35cbbc8 0e17d526-42b3-484f-acc5-eedb4bed8012 c24a64fa-c369-45f9-8ade-5483fce58871 35ac2bd6-8ba5-45d7-9899-661a31a80a46 fff126e3-ae71-4da9-bb1b-78e0016904da 1e570875-3a47-48c0-9621-192a6021d526 f0d97f1e-e510-45d5-8fa5-ea530bd8a96f 6093e7a8-5fb8-46c0-a4c3-98a67be5dbf0 23e233fb-7c29-434a-9599-5e4574c8e894 17edb078-1d55-463d-afa1-d9e5ac305b6c e9d4eb76-f4aa-48c2-ac0b-5a8a7edba3e8 073fedb6-1446-4525-8879-166bac5eba88 bbc98d93-e148-4235-9f33-b49c9d1040a3 edeb75b6-3c9c-4ba6-850b-ab0d27c0b009 be5bbb86-a530-41c4-86ea-7242cccbcb30 2439dfa0-87bb-48e0-bf21-cc24adf3a932 62b3199c-8a96-4213-8069-7afc0a39041d 6111bccd-5441-46ab-94f6-1ffc69bd7690 756d71a2-d709-4b36-ba80-41e16ce77d82 a3d99dd0-ca12-4b2a-a11e-3098ea254eee 9f8fce0f-11cd-4808-b551-6a98311f0062 38ed8aaa-42e5-424a-9389-f235cc55ee0b fa34efc7-1cb0-4a9e-9342-501bb9bc2c1d 8991af25-5ca1-45ba-b517-9dae73a5a915 884b925f-ee46-40cc-849a-4e9b693b94d0 c9989971-690b-48e5-bcbb-2097fbc49b2c ec4ae6b3-8189-44cf-9a7e-c2c9559f31e3 12a18aee-12a4-472f-ae87-f17fa0eb59ba b654eb27-e744-4223-8886-bbf763ca2155 3e2ad1d3-a311-455f-8117-7c71c44c5534 d4bfc29f-4eeb-46e2-b64b-50bfa2f77df4 f3b6ba75-5c0b-4f50-8407-804154583faa 4a644343-4a71-4367-8204-e022f25ca5dc d52884d1-9953-4b7b-934e-720fd15a3f03 46f7e4a2-49c1-47ca-9504-c02439d742be 47944bfc-1849-4901-b5e7-a34e1a3fd998 33e241a9-4feb-4494-ab16-5ad72271736d 2bd493cd-bbce-4f06-87e5-243ee954681f 2659a818-daf3-43bb-8a08-d615ffa9d040 1aef3f70-76e1-4203-8ca7-6d93e34e6ab1 181b1929-6b2e-4eb7-ad66-c57d982f1168 79bcec2f-ded4-44a6-9b10-9bf768797787 961828ac-c559-430b-8bf7-8c18a95db7ec abddcb33-7324-49ef-bf2f-9c39afcb73aa ba8426a8-1464-4087-8210-9ca872e20551 4fc36e1e-e9b1-4c53-9048-08a73e9e301c 18e066c3-b169-4e78-b7b6-83cea7241381 ad704821-e802-43d7-84ea-3d1257b593f0 036548bb-9faf-4c36-b9c3-004e741ca773 bbc49e43-5baa-46a7-a154-a0483accae26 8006317c-789b-4dc2-a280-4ba2020af266 73f79a2f-fc1b-4f11-91b2-792e32b03ed9 b9aaecb4-9918-492a-8e62-ceaaa6677a33 fc5d2390-9e60-466c-bb4e-d7fe0aa016bf 75eed042-f64d-46f3-8193-b33312db64c1 38676a3a-70cd-4dad-94a4-76ffbc81c867 f000c383-b98f-48e5-8bc6-25e6a0021889 4f768f42-20d7-40bb-ad51-c366e8840f63 35393c9c-9e14-47cf-9e16-ba14532bd250 cfeca3dd-5779-4c93-93bf-142ee63a24b7 c43ae7af-6c42-497d-9372-b611c70daf3f a80276ff-732b-4bb4-81ef-a6d04016bd8d 242d1056-32ef-4117-9fd1-d9d56fc9488c 7e11052c-a826-4afe-b90f-c42ae5c19aad eccb6ecf-7752-4d97-b6d8-c49b4b83e9d6 8e7e6a13-fd6f-4a9d-9920-e330fd8ea15a 582c88a6-f706-48a9-aac8-f3f9b6f27e09 31c642fb-f59b-494f-8fc6-138c85fc23b2 7644fd0f-9096-4441-849a-7986dc6bd7e0 826fff81-e4d8-430a-b706-d0f0948fbf0f b42b88d8-4eab-4671-b910-9bfa9c705854 51344aa5-1d49-4d6e-baf5-e2a38b5d16b0 99fd4ac7-f9c4-4320-8a26-ec2138aa8f57 fbc63280-c5ab-437f-8d3b-f89ac2099d05 f43bc919-6989-4dee-b506-6089abcd3a53 ace4cb2d-7131-4cdf-bb82-66b0ebb80bb1 b90f20d9-d28e-4ba1-88b7-5a6d5905e72a 9f4c9fb5-adff-433c-b203-f81e444ee8f9 32ef4610-015b-43d7-974a-eb5278a3679e bcf40e7a-3f1e-42bd-8467-acde43cd6ae9 c7643f6c-aac2-43ae-aa66-2f5ce17400bc b0c9afde-d478-4aca-9bc4-4ebb4e142580 2f2dd434-954d-4b60-bd70-f13f5ed0d393 d937332e-4e12-407e-b578-875f1e884c09 7ddbeb22-6a6b-4506-9548-103de2d1a87a a32b6703-544e-405a-b878-05bce4a1fa12 59b740fb-e24c-46a0-b2a0-f891fb49e40c c447d7c6-5aaf-4313-b2ad-c6c14b63ff26 4ff69f00-1b26-407b-976f-e275ed5c5b5c 604c9d42-6b21-4ec4-9646-9d6364ce9ddd b631f5b7-ba08-4d22-ac42-2eeafc6b674e 6821bd72-f4b6-4be1-8d70-9376abc1af45 30116696-34b4-4409-a290-14342df5d44b 072de5b0-5a79-4722-b5cf-129a154f7d63 7226ba3a-3318-49b5-a6d7-ee55d58cca7a a502ea57-d9e9-47a7-b638-42d00c9c166e 87b77401-03cf-4ca5-a9ef-ac315c018aa0 74228aa6-d98b-401a-8335-3b1b238ef124 2666d609-6159-4206-8697-825262a04cb7 e193f592-d77c-4185-8682-5da3c3682b06 86049667-6568-488f-8eeb-628ba63ace5e fa5157a1-f1e0-4450-b9ba-7f524558afb5 c2d52f55-1b96-4b0b-8d8b-8872d9557eb5 0cff8eeb-d1f0-4bf0-bc6d-343f097a7b6a fff91c46-5142-4a27-a212-385f1c74c7bd f9e8d223-457c-4993-9906-656b6e03fd5b baf7a9c8-4baa-4bf2-a613-ed95d7d0a0e3 35074361-bd0e-4322-988b-64b729608a47 f9e52be5-fe27-4aba-985f-64f1651e6157 0e02cbe8-8a23-4a02-bb40-5aaa8ba7a331 fd8d550e-f9aa-4a83-8867-924517827e02 62b2fc1c-4452-4b34-adfb-4f622c3d53e0 7ba2209c-bc05-43f4-825d-2dcf6a952b12 26c07c78-9a94-4860-ae39-6a7355b97c8c b45482b0-8936-4082-b171-8183f595ca4b a6600ea7-f8b7-42bd-927e-fee22fe6eb69 fbd2fe33-b36c-4423-a63b-a09278eb7da1 8e6e21f2-ba06-4f3a-b38a-b219521c8310 a6cee27b-3461-4a67-9725-37de0f22a768 760510b2-db0d-4313-9c3c-acc6bca3c574 a5da4e75-b829-41c7-89df-9270a88b31b6 f6882063-b419-47ed-86af-0127a61dd353 f278c4dd-3cae-44a1-97b6-2921ef85092d 0129512b-c256-4564-ab21-18cba49bbe67 c07c1028-386a-43e2-89d6-0e6651e7e8fa d6a5895d-f721-48b2-af9c-03d4083f2f2f 781e4be5-2567-4215-8b56-1f20f480f7c3 f93e83ca-3623-4904-b353-39afb3681423 1981000e-d51e-499e-9ba9-fb20425e8361 a6d9c596-e55c-4412-8a5a-d1379b0251e0 9853ab79-eac8-4587-a5c8-a2200ceb0f11 358fee85-a4c2-4272-94e2-31bbd77369ae 4cf162a3-111c-4cb6-b0a6-9a408338a79a 312389d7-3446-46a9-ae14-1eea6949d281 30d4c491-8a43-4bde-ac7c-d8f37e3fd2d4 32fad153-c18a-4081-bb4f-14118d0f8bdc 67d84421-a16c-4e41-8bea-9aac0242632a d006ee09-7ab4-4334-a5a5-5cb050c356cd c0772a2c-68ae-4309-93e8-f7dc8185e540 5650c34a-51cf-40f0-a04d-0a4bdd77bbe5 ed09cb28-8293-4006-8e40-fb594db49b84 c3921656-64c4-4182-9bb2-dd9a21957ef1 be51f77e-1992-45da-9ee9-8c9161059994 8b048d9a-d1a6-40eb-862b-8650f1bfa279 bf74645f-fb91-4f69-a1da-63e7e70b180e c5677363-a5d6-4db5-a112-629e0af1bb83 83a4181f-2e33-47df-b17a-099bce2575db 49cf8142-1eed-48d3-9e84-661be5c571c5 ee3b193d-1c6c-4374-801c-828f0913cf79 2b96593d-3533-4823-a549-a36baaadafab 45a9db63-4b11-4618-9255-51f8103dc7c0 1e37e051-393b-418f-851f-f1032ec91800 d4286949-ae07-4978-ab82-8822315d95e5 54e4dabf-d5bc-45e1-a9f9-b927483c2689 5ba97c29-2526-4202-8a9d-2500d0ff7c22 7cfeca0d-86a5-4a17-bca2-2f6ec257a90a e3ae1742-75aa-4a93-baa2-070f85a49fa6 d806208e-60b0-4b46-bf6e-6fbd6d22fd67 44431e71-0b31-4e7e-b1c5-fea4168dc27c f3d4c3d5-379a-4407-bfcf-870ca43a6dcd 243ac335-fec0-48c8-99d5-75a65cddb746 05b206cb-3294-4b6c-ab81-cef91583fa91 5473bd7c-772f-40c1-a8d0-447d147ec571 20299662-1c15-4194-9187-704470bddd61 a5aedd23-9dff-4657-a422-7b84d5568d8a ecf03516-2e46-43e9-91be-1d0e16b981c7 e2a2b3e4-24dd-4cb6-8fda-a1ccc5db31d5 8c0d90e2-f44a-46f6-8743-e7f48e0908d1 b65dd500-e442-4312-9da6-385c49dcef4c 16052b12-35bf-4d25-be7d-40fa3276ac43 4724854c-2df6-43f5-8b2a-73a5fe86233a 2da30f7a-fa05-4a54-a8e8-256937e0bf37 dd9aa420-e338-4307-bfbc-2735fbe9587f 5f35d0a0-8c60-488e-a79d-4286214daf82 661054a8-9348-440c-ae55-c37354ef26d1 d47e367b-9a05-4e25-a495-b0388100efc0 7056e14d-51c8-49c1-8157-22d4b30658e3 d5dbd036-56af-47f5-befb-4478127959d8 a92da349-92d2-4177-85d5-d1af82f91cd8 8b9c2269-35f0-48e5-bb6d-ca64c11b78e5 4746b023-c3ed-42c5-9978-4bccba5e5fa7 dc224a2e-2733-4ff8-bbf9-b9d5e738ff65 4b89f7e5-b72d-4060-9e8d-db4faa0d710b 0ffdc3c4-7d5d-4af6-b514-19624800b1bb fc9d4a64-6cbb-4bfb-aa6d-086b99773d02 5e368231-1715-4c4a-8484-f6e766a91ae9 8b5c3333-2d75-4e3e-941c-a573a7bde198 5b774cd3-d5b3-4c9d-bdc2-da064c039561 5cadfd22-ec2b-4cb3-bd15-d52154727299 0a442476-2a73-40c8-ab68-8cb8888c3512 8c6885c6-bd68-48d6-a134-4214426c61af c88af0c3-e182-40d4-abce-67da5062f014 769dd408-3772-4896-8f69-a85c4f5e32e2 23ab7e5e-8b65-43e4-ab9f-d9910d1db01e edf6a1aa-a064-4693-a2e0-d4702d3300f2 6f182a24-cdad-475d-992a-f970394e3067 5e023656-f49e-4ec5-a250-9ddfb2cf2ce7 2148cf98-3c94-4251-824c-17e09de44aea bbf9363a-046a-4b69-a740-38979f97c96d 3be0419b-e2d5-4c18-b6eb-14fb18ad44a6 a9cb458e-38ad-4a99-b3f5-4a935f0d9ab9 e9c0bbd7-f7d5-41dc-bc90-df9139aba739 13bce63f-9256-4d1a-a158-cb1ec2d529b1 c205e36a-61b9-4328-bb22-4b2ece3a1f80 66d622cb-d3ab-4bf1-98aa-3056b584d517 1ae6a74e-bbc2-4cb4-adef-c1631835c88f df3e4ecf-0180-4e26-b543-50f82683c051 8b71deb4-da4c-4f16-bec1-69a4b85e2dbb d278bb5d-cc96-4f87-bff3-ee945c51a5de c8b3c91e-c1a8-480e-a4b4-8abd840ff827 7cab6d75-d9a5-4b98-b404-76e734eb8268 f814b34d-45e6-41a9-975e-d64c2b55d164 f87ebff6-cddb-4f69-a202-b4dee35b237c 8a1d88ce-97c0-4ba6-b919-cdcc2989fd20 79b74a8f-0c69-4f44-9c08-855582225659 dea1b965-330d-4515-b39b-a5dc2bd76dbd afe6292c-dd96-477e-9c2d-bd8aa8540baf 55d4b149-2d97-40a2-a1d3-9b5d891e5925 ef75895e-0c46-44cc-a91b-652baca841e6 4ab151df-970f-4e37-bde1-e61675c6d4f5 5c191774-bb1b-48d9-97fa-412b08d31af7 97265275-596d-4861-b698-cd7a4c3281fa 864f5d7f-653b-4343-9a18-e945cdda626d 3ef6d1bd-6fa0-49ae-b302-c4198d32b865 0588e30d-6351-45ba-8507-dd0449e827a8 74a7f20b-1704-426a-9a38-d3d92d06bb8c 52a13ed0-18f0-440b-b460-53c4fd04f222 dcf8a989-e984-4691-88e1-599b3c7e4aa4 95b2d5b2-712c-4505-a200-0a84ee2cecf5 5fea6394-4afd-48b4-93b2-c9eade00e801 45a7bba3-180c-4531-ab58-265977bdd08e b6781939-ebeb-4031-8c29-42ff535873e9 c476ed2b-31c7-4ef4-b30d-5101fa897010 f6dbc05e-924f-4033-8a69-189a907ae4b6 b98f9779-95fe-45bd-9565-dc69d70cc639 a5ca8877-8a6c-4e80-998b-610bb372debf 4bbb3bfc-a56a-49ed-bd87-41f4574d2f31 20f345c4-e4e1-4bdb-a3b4-0c54ecae56a9 9b80582e-f7ae-4be3-9561-ec6dfb7611e0 29194708-7528-433f-9b0f-7c0cd8b637cd 732c7150-6803-4033-9fda-70f6b44fb243 17d358a1-29b3-4d95-974a-52d5c701d976 8408d600-a6de-4f3b-ba63-6b34da0eac20 05ba5ced-de28-4420-bfe6-0ea25a7279e7 00597f6e-8188-4925-a494-b3b1b9e17d93 5e4a2956-05a3-4f7e-a691-23c64ea2a5f5 0a3d30fc-38c1-4c5b-85f6-71a17492863b 1aff9601-36db-462b-984f-634b426ae7d5 3594a32b-32d5-4551-9128-ee4723e0565b 75b346e0-c9ea-47d5-8813-c22534974092 1de55e32-b1cd-4316-bd53-7cd8595a4e58 312e618d-4bad-4d84-b1f7-f67a0c0c911a a2d4874f-c94a-4b39-acc9-28e1633490da 67c8cd2c-ad7c-4d39-9d9a-12996f1515e0 05deb938-6346-4909-9ce3-934168d5b1bf 697fd039-5ff5-4fa1-8c12-1e7b6bde250e cc2c2edf-4ee7-447a-9c8c-d5f9d7722877 c046e387-c7d5-44c8-a2de-95b84c5aa3cd 4aaf7575-7ae0-475f-8333-fc3f5b7a4529 ae9f10c8-0450-40e0-b0a5-a7fb163f26cd bd495c13-5228-4d9d-af1b-773c515feecb 1a31133b-2977-4f3e-869e-3d98194aa5f5 6ab85271-756c-43a3-9e08-c83890884576 ec1eb81a-c29a-4733-90ef-191f51df399f 965fddb0-4c74-4c05-9a07-0da97680a040 9907a21a-a288-4716-a014-b6409f389afd af265627-91ad-45be-8c37-b9bba6a66912 87c69655-2099-438d-bb81-6afa958ad658 4b8f5486-d552-4ee1-8deb-faee0a943822 eaec068a-b5db-4472-885f-72d7f6223d34 60ed45ef-f215-4bea-9b24-a04d0ecb1ba2 28b27435-c436-49b3-bf38-f78799ca75f2 1c3ef182-dd74-4bc4-a155-238bd5ae60c9 2caeae61-f611-4080-a70c-9929d6e87361 10eba6fd-17aa-4875-acba-e001b60d3deb 683167a9-0698-40a3-9d5f-ecd6dd5d2464 de6b234d-87e0-4dbf-ad38-e889b859e1e4 571ae99e-5130-4e05-b621-8db1e130c0f3 94d4b37d-5ad3-4e3a-a53d-6aecfd58f026 da7c0ba7-5cdc-4d04-a5b6-ab06f64ae84b f9bfd7dd-7874-45e7-929b-ef6761f380c7 5672486f-d4e0-4eb3-afe3-dd2effc8e91b 280b6d5e-be19-4c4f-ac1a-5988dfaf2240 c725512e-0d6f-4b8d-a94d-725c9796dabf 1cd6cec9-862a-4170-8fab-f0e36646503e 0395a0d8-eb7b-45fe-8aca-b9abd99c95a7 bba89fc9-be8f-4abc-a84d-9116fca2e720 e068c768-cc8c-4de0-84e4-c3b0876babdc 1857f481-5dac-4dc2-b28c-4e9d2244af9d b6d2c9c0-74cc-4599-b49c-ef53fd1b7ea2 e7f217a1-5c9c-445e-b0d7-58131b7ec2f1 1d861a78-bde4-4c60-90a0-4a7dbaedbe86 e84e6927-a086-4924-a261-c7246cba78a9 5a50d559-a601-40e1-891a-0bde886f7dd0 a21152fd-615f-443d-82a2-bc88224d9b11 2be8ffad-4a4f-4423-b9eb-0fec74a41aab 4dd7b2e6-182d-469f-8a87-3440c41be606 be98431f-83bb-4d49-b0e4-3a2c4cdb05ee f256b3f9-7499-4d58-a2aa-90bd45ae9615 93ac5a5f-1b6a-4aa3-90bd-d31cdc992bfc 34c5adc4-b686-4d9f-9613-0019b51eb641 cdf989b0-5357-401a-8f98-7a0cd1637a80 eac8a906-e14e-4dae-ba98-87b98666d37f e56781e6-123b-4749-ba2e-1b3f2a25bddc 14751326-78aa-4a66-8173-bde6c450ee17 906f4951-a310-47f9-91d7-f79a7f97df0c 57f13709-41c7-4e14-9c57-52321a091d56 27aee0d3-f655-409a-8c0d-e262ebde6967 701194c3-5050-4481-9bfd-fd607dadda33 28bdb2ba-9d59-44ad-a76a-b917f7445a13 641fc255-62fe-43ba-9be2-ccdfb4fe2452 0899c3db-eb55-4264-9a33-cde0a0a11780 21dcd7b1-0e7d-4604-92e3-bf2f0b5c3f06 20460d23-e34b-41de-8de6-a1833105b1af 653ef7cb-262d-4dd6-9337-4b2515678606 6a45e47a-24a0-4554-a30d-51a1e8dcd82d 2a69eb1e-3a7d-472e-8389-112e50afdb39 31ddd9ca-7272-4cb2-9720-74d278593525 b3afc859-0714-42a1-a599-fa8e2b521bcb fe89b666-075f-4fd6-919c-b6bc46e5fb90 92d253aa-f5ed-4469-aad5-1b1464177a6c daa6dae2-d78b-4c0b-bf44-9490cc9d3add 61033389-e214-4a33-9abf-adb765e86204 c84ee5a6-91bb-4d05-8028-b70a245ec705 9f7f1442-53cb-48c7-b476-76f08f36e81e 60237ff2-5034-4d13-946d-c6c3c29d543f b217bb6d-6166-4212-9727-6fbfb7c5a84f 76941440-5c13-4ac7-b54e-c167f7ce93d2 cbb1dd59-3486-4516-b77c-ef6bb118ce63 568807ec-b172-4e43-8bf9-f27e7cd61171 3aeb647a-4c21-4b8a-85bc-eab9414b9946 248068ad-995d-49a6-b2a2-c9b33b590cbc ab235e81-433b-46b5-a1fe-8817bed9333f 01c2ccd0-89c2-4d20-81ae-b0b6989d0908 dcafaf58-9f1a-49ea-a89a-46d50a78e2db 0e6c5fd8-d784-49be-bcf2-df4c2316abe1 ff72e6a2-7b63-45a2-aca5-e180d634c7f2 b44cf814-0c83-4f45-9f7b-30acebcaee53 b4f94c76-f4b8-48c2-b7a6-d391b0d2834e 4fbf1111-e20a-437c-8f90-dbcdc2f5be0a 0c8d2c24-e1e2-40c1-a07f-655c84d58312 43b60262-c2e2-4d29-8430-4e4dc6dc4355 982d4015-6da4-4b23-94e7-ac9d6fd9c4a4 1426d21e-7e8c-4965-90d4-1d68d136b8a6 84c9745c-d1fa-4964-863d-00c5ac956bd2 78c7254f-01d2-46e8-848d-037b9520e7f7 98715f0b-51fb-4220-9501-bb1a2760e22c 0b77d5cc-ceb7-4e97-82aa-99682cd668f5 cd203df2-4313-4e41-b7b2-5229abf38544 88d5de9a-7559-4d12-badd-25698b6a0817 91ab9adb-557d-4450-8c12-866a651ba0ff 0595fbe2-15a1-4894-8421-3bfa62bd0457 7543c90d-2ba6-4fb6-85b3-55c233cbba87 90494d87-f3cf-4456-8e2e-92afd5098a09 5f7d0500-e7c1-40da-af98-a34afe7858f8 7ae528bf-6d7a-4045-9925-d5eb0f9865c4 c7af357b-7396-4c44-9ac9-0701985e3453 acb05455-ad56-4da7-b1a9-83faebd71825 7ea0df33-28d3-40ad-bb01-321dac406bb7 ff11cb0d-9b69-4321-8077-83eb5235578c e45d6258-4076-428c-b44e-68bd1ef985e8 2d75bf0f-d1c6-49bc-96c1-865d4056ad90 75da33f9-48dc-4e0e-9589-3ed71911ab93 f36859dd-55bb-4c7b-999c-017c18380fd9 fc3a603d-0b1c-405a-90c4-55853b993c42 a1512a3d-70c5-427e-afc3-79110f56f528 6439fb39-41cf-4518-95a4-caba89f0c7ea f2e8369b-e6bb-4eee-a4f9-bb680ccaf6c7 8d922669-dcab-4597-a002-2e998bfe50f3 0c56d72b-db67-44da-836f-f0e7cd338450 57726555-07a1-438d-8f6a-d54035c9a508 dcb4f0de-cd31-4dbf-887f-347edbc575ae 1199cbce-9df4-4236-889c-2568c60ce60f 0de76d30-86fa-4cf8-a2fe-dc04144df10d 0c2c9bbd-af15-4ed8-85df-7fb4de0a294d 8b6924cf-613a-4ce4-84ff-a63e042769a0 4de1d409-617e-46c3-9ab2-60b858ead3d4 d12a6d44-588e-4918-ba93-5e50e860d3d3 8e3f0b15-a4d7-4f83-ac61-bd6fd3e7d6ec da22541c-0995-494c-8fc1-91befc3fef9b c77133a1-367a-4115-b8f8-ccc056480989 8df4b67f-c77b-4e88-b2b2-429569f0d6b0 fa1dc35f-f8a8-4f6f-9dd4-d9063d5017d1 5e745689-2630-4913-becf-9d440d625fbe ac77fbd3-0e41-4b6e-834e-15133988c6b7 155a18cb-3a73-4d15-b325-067a8ea4a1a7 07d6bb6e-46ab-453f-8370-1b84dd066860 b2c79a6e-57ba-49f8-8adc-00418db08bb2 697b6271-57d4-4f33-8770-839dbfae4c01 7546cf83-a9b8-47e3-ae7d-4e257aa9882f 9e297cce-8bb6-4043-b5ff-711f4b88dd84 0e0b756e-096b-42cc-b537-fedbb3ecbc29 8536936a-8f39-40af-b6b0-0ee2d9e9c281 f086b8e8-6aee-46f6-87a0-80062dca58d0 def7ddeb-4b0d-4639-b9ad-142f231bd2ef 386cc295-b699-4766-8ea4-2cacd109a546 7f8c0a65-80e7-497a-9a30-ba9280c54691 fd03486e-32e0-4c0f-a3e4-54fb91c76f55 2e7f5b2d-5635-4d3d-a544-d98c2c94f5e8 69862a69-4652-4d5c-b1cb-1173f6a54ddf 5aa44021-f9d9-4364-b753-bdfb8b476c3a 8ba038c9-db2f-4cd0-b0d7-964c26709872 920457db-e6b0-47bf-8abd-056b72cc14a5 4b0facb5-522f-43e9-884b-72cab8270355 fa1b07cf-6b31-4dbe-b1e5-0e28f4852db7 c3e3e296-5d28-4115-b0a7-f4ba5da4c4f3 018def2a-bec3-42cd-9709-d988239690d9 0b0c7358-3b16-48dd-86d7-29c133f7ef20 53bb9922-f704-4de0-bb66-f4d45e5707c8 a2f5bfa7-a1a1-411d-8624-7a1be1276d40 cc1d47c6-d2db-4673-8b23-eb8f8cb6b178 b833c39e-3297-499b-b286-8da0a93a919c 8b2a6126-c27a-4aff-8917-a0b0d521bc5a 9719a942-ad3f-45a0-a2ae-5ced2e771e78 de5bff5e-8503-442b-81cf-cc3a870af46b 93703fce-bbcf-4cfd-b1fe-730e4bc4147d 8d591e29-4b15-415e-994b-7e37763e293d 142bb2b5-8b5c-47ed-940a-c5408d44f97b 63f78ae9-d102-4eb4-81bc-c53d7299f280 b72ec78b-ae03-4971-9dd6-f8603f8afe9a 925fa7c7-7b73-4e3a-b596-2703fe1bbd91 8132cdcc-a58f-433a-ba61-c1d10331eab9 99a593bc-5030-41f8-b383-32d2a505faf1 970bfe16-4a3e-47d1-b271-9ad487e33fc7 51cf7f09-5c37-4342-8179-4fdb4b6ebd36 1cbbfd68-43a5-4c81-b32b-de1d5cf2580e 60328a27-b08b-44fa-a53b-74444eb5b099 6ce6974a-923c-4a9b-99ac-c90003c76bfd d38c82c9-46d3-4682-98a0-e5f4545e2375 90893341-80ee-41e8-9cbb-4b0b2749ca9a 055b106f-af5a-4ec1-a56d-65f812adafc7 cd1acad5-3206-431d-99ac-fdcfbb5375ee 38877408-996a-4769-b75e-88c60bc02851 db91cd36-0ec9-41c8-bcea-d618ce970543 550774d0-56b3-4f17-af73-0292118ddfe1 35111e6c-4510-4385-9594-6633ecc5486c fbedcfdf-ddf5-44c7-a3ad-117c5e4be144 3f4c2957-6152-4830-ac8e-d083d856c84a 8ada09a4-9b6b-4a2d-8f56-f0451353ac94 15ec3ee1-b941-4762-85c8-78963326c837 017a035c-afc3-45de-bff3-f5c86ff6eac2 9ce4dee8-c7a9-4d8a-aa23-85cc71469700 2ab9b829-671e-4d8d-a992-f545d6fd4beb 9c40c38f-5668-46d5-bf5f-8dad4f7997cd caa45161-6c61-49c7-83f6-5b43bf817bcf 38f18466-f01c-4d74-9b14-43e1abeba0b2 b919662e-17ee-4cfc-a26b-3265bba326b7 7d8a4141-8dfe-4585-949d-0de2238952aa 93f02b38-3bed-4af7-a640-3472b5ec09c3 e140b033-9e6f-4fcc-943d-b4953b95ce95 26783220-7f60-41d5-9056-781edc2f2c62 6f83ec8b-627b-4205-a176-e20c661db218 7ae1c320-4049-4e4e-bab8-bd35c1ff78dc f422b370-dc24-4e3f-bc5f-862b97ba5b50 a9d72d21-910c-4979-96ed-58592f4331b9 ee51318e-bdf1-44cf-aeb7-f7d0a7503b3d 3ede6c16-131a-48fc-80a1-c443ba146fb7 e09b889d-1b01-4c55-9ffd-632ab8968899 b3c37170-2a81-4a40-b62f-8aa2007fcf83 df964f67-9c44-4d57-ba67-34a5e0a74d18 d54ffd12-ff84-4129-9873-9055d21e45ed b5019dc1-534c-47e0-9585-89ee7dd5179d 65f9a9d0-febe-4b7f-9fcc-e6f06b01dc3c 440c2989-2870-46f8-af5d-0518102b6349 4b31696a-d526-4f22-b896-d948e66a28a0 0fa34b8e-9f93-4a5d-9f2b-d627f3103d11 39ac91e0-90f0-45b6-aff3-cc81a5af4b5f e08d1239-7c5d-4991-a352-b7cd62aea10f 701ead6f-c06a-4785-bc3f-08819b22f0b2 314eaa1f-2ca2-4e18-8c6e-a4d5d227d36d 85becc98-e3a8-4d71-a003-f74bf78d0972 d3183bac-617f-4ff3-94a9-463146ff1d0a c4b1c6d7-ba6d-402e-ba14-79dde25d9799 f2daac1a-4d99-4c5b-8207-76b00c84c261 818ba213-3f51-49e4-b0b8-a3d7519bb4d3 fc4e9eae-38b1-4229-a109-bb92ec8a6c5a c53a27a5-85c2-4b9f-8070-c55e481cabb2 0687432b-d8e5-442e-a592-e638c07eb52e f43ce0c2-19bf-4925-8313-5b2d09c101e6 36a6db10-609e-426b-be8b-90b263cb9401 c867c3ea-0b8b-41b6-81e2-281984681f69 c3929067-0ff5-42df-840f-4307085227ac 2d01d055-08d4-4910-88ac-a6390328b15d daff6a07-5d7a-487d-b9c8-5cf60613f362 a77d2c94-1e28-4a0d-87c4-d28293fd401c 008674ad-6d91-49d3-8e27-f69a90338eda bbe4c836-5e38-4ff3-9749-cb2d4a546cff ee242439-cd8e-4fca-83f4-72a078307aa6 2f6cfe65-1b6b-4b06-ab9d-802c1f4cc030 7c73867f-0ff8-4466-9324-0af2db364545 11d790f0-a0e9-4613-86c0-4105988fae5b 519f5e6e-2c10-490d-8877-6c2dcd3fb449 dc99e323-a268-4fb7-b4dd-4c8d8a6532fd bcf7ab0d-ef0e-487d-b26d-002f77a7c900 f860c2a9-d36f-4309-9ddc-416e5cb6578a 07164261-cd0f-426b-9880-c5a702099c68 8b789021-bf60-4c9e-8d89-224d354b1bbd 79760995-b594-44c2-8348-24bdd439a728 e06a7055-082f-4c72-a855-71adfe8a2037 557885af-2642-4c12-bc9b-382ec14866db 3e296e94-43a7-4df9-beea-53592af2efdc aa244af3-6d2e-4ab3-b9e2-f013d30c60c9 3b4a03d9-4515-4086-803a-cd8b58ed39d1 ccdedb22-9234-4759-9ffe-ac2e9564d17e cdd511fc-e9eb-4076-a4d3-fff414116c75 d3bf2174-0587-4b09-bf57-e9bc77b2353c d76f35f8-07ac-41b5-8c64-0eefecbbb1e8 3c604958-fe1d-4020-b8ff-65322ede612e 32110c6b-7615-4612-bb6f-0cf9ca59ee44 3b29870f-2c6a-4b6b-8874-e204ab0994e0 c2881542-7566-42a4-a992-34ebdba9ed02 84af852c-5da5-4e49-bf2a-cbd0c520c450 06a3bb18-4e95-42f1-b209-515d17d2d9d4 d650f9aa-1c36-4135-bc25-df930ba624fb 83730397-92f2-4403-b06f-226c9d5544dc cdd54c87-849d-4d04-8850-79e11657c060 1bdbb40d-73a0-4b33-85ec-4a4f1bc1849d f12d0fa4-a915-4c51-aa1a-a85fbf50bfa1 98fabc1f-9657-44a3-921e-bc7fe30143a1 33c8e9b8-ada1-4e56-b0f1-edbe68b48517 a4f9c2c7-a3e5-401f-bad2-b8c2caa6f7b8 355e6016-bb8c-4f3c-9561-4aba73ee8f0e dd9f1178-115a-40dd-b2a9-dd545e74574f 2cf72c10-d135-440d-9b90-3570fd02f538 ea18509b-636f-463f-88bd-b2eb2aabccaf 585ede87-4307-4678-acbb-e2972245a1ff 6665e2b6-a740-4ebe-9d31-fc53793ec165 6211c7a7-3b10-46e1-b5f5-0b00dd92a080 c2255828-f5b2-47f8-af90-5f0e5ec97f24 eb3e9a59-bdb3-428a-acb1-f76b0a1fa3d5 b33f1de6-b6b0-4e99-9576-c98f256ec2b6 4c82ba1d-83ad-4ff1-9162-3369be0501ca 9f3ec7e4-db0f-492c-9a51-ba34bb2f0593 3de73eae-1596-4cd3-a679-6beead73656c 25b22d3c-ff79-485a-8683-51902c5119f6 5e15cc9a-3320-408b-a551-11e83cd32d71 5a360b99-66b3-4637-bfbe-d55412fd844f dc1ac9d7-804b-459b-be4d-3c99be7d0db2 eb882052-5015-4130-96a7-5ba3276ecd12 7f99f92c-b55d-4b2c-a73c-6bffabf93d48 f033e67e-afdf-49c6-837b-8f3c08f1e71a a0f5119e-9e5d-475e-90db-a8c6e40d7e99 ae9c1f2b-c23e-4a5e-8ada-fe316d74f92b a7c314ad-5541-4e85-81b4-b555d181dc6f 917d949b-9b0b-4b5f-a6f5-9c1fe7aa9f64 872a83a7-ab7c-4a97-8ae7-248413026352 85887400-67a7-428f-b611-1e4a0158cf4e 0ad790fc-c936-40ae-a01a-0893fbddf466 ac4326ab-ded5-45c7-a35f-d8d9862cd8af 6d1710a5-6b35-4926-8be4-063d553ebfd0 5ad86337-5af6-45d9-a1a2-adf7dd3c67ab 794f14d1-94fd-402d-9582-7c770fdc6981 2b1a22c0-ff96-4f6a-84a4-99a06f50a7c9 ab3b1650-c7bd-498d-b512-abc13f0ee175 2b6fef97-5db0-4372-9eaa-b1a3ad28e721 a76ac6ab-6118-4bb3-bc8d-07eb10d68256 9a31a9b6-628e-4c89-ac68-ec2c085e0cf1 5a922046-e68d-44f6-a7f3-4b91b6f03a23 5a430442-3f6d-4472-a74e-8e3d7dd37c2f 57294a99-71bc-402e-adbd-0a609148a46f 1a4de9b2-efe9-4930-982a-183667cb2939 e671a7d1-2d87-4689-8d37-6975997cc7d0 81212b4c-5f42-45a0-8bf4-e7297ba340ac 7e520805-69a4-441a-ba45-61d42a7150bc 05aeaa72-793c-455f-a28c-3eef45382691 bd58de8e-41c3-42ce-90c6-1ecf36181a72 120b0802-d2f5-4db4-a27d-bd67c6cf3f34 2e35d26f-7d15-4de4-88af-bb42dced0ea5 169180f8-5646-47a6-8991-994baf483893 a16cf5d1-2941-4219-8940-8e9d655beb07 9a460d47-7d8e-49f3-9617-4191bd202fa3 a6e3e582-9dbc-452e-a874-738f8d3c9089 366007f8-d895-4cd1-a0bf-322e9b5360f1 912a6aaa-08e7-4f33-9e1a-90673d59b987 ae89f224-8bb1-4c99-a070-67bfe2e27f02 98d867b1-f0dc-422a-a4d5-0f731310c6e6 29e78822-e844-429b-b6ad-3949ed0ac40f b330b5a5-7e67-4eb8-b501-72c43eaf62b4 7eb40527-55bd-40d8-8c57-53dd556ecbc1 4dc43fc0-4c49-4dbe-9165-9187031fe46a 2416ce7e-bab3-4d10-99ba-d288fa5c652d 2046ac10-5b63-4793-be15-3ea00e401b5f 3e4893d4-f9f6-4df3-a7b8-21042bfb461d 2fb4b2d1-9269-4dae-9a26-ed86e7738c31 c2f9f146-1224-4bd8-97ca-b2d4bf18f9ee e405ca88-a217-4dc0-8c7d-1e88135b9b33 b054e4f7-ae53-41b1-8bf8-5b2784053ff3 913ec204-6e5b-4e61-a41d-33760cac6d90 85125396-a14f-4f0f-81ad-7dac63738f70 df8fbba7-d5aa-4b85-801e-e6babe3637e6 de4a8ec3-d490-4a48-bc5b-4a9800f5ae2b 604023dc-9702-4640-82a1-2db7ef208e2d edeff365-bc03-45b6-819b-ea9168d6cad2 b7bd937c-cf18-43f3-9f29-e67b87674cc2 bc1443e1-c785-42e1-b99c-3b4ebc7759d7 35450ea7-91c6-41ab-9102-87ef2c3c8e9c ba8cc912-b0dd-40b1-9ecc-502b5684475a d96204fe-7465-440a-8ebd-f6e7c20c9244 dfa3f54d-d7ac-4447-b8a7-07b085ec4542 95fcf0ec-3e7b-447b-ab9c-af51faa9cbe1 42affd73-c421-46c9-bffb-c1bc07855740 5f154974-5ebf-4a54-8516-67e8cadc8d8e 15fb90da-93eb-45cb-9e12-d4d2e13ec3dc cc3c71bc-0647-45c8-91f0-5459fee91eae 0a06c804-d7cc-48cf-94d1-3c4c7d1b0ae5 43f08efa-4c7b-4de6-8e4f-547213f30ab1 7fdefbd3-38bb-4af3-b1e4-8167526c98c1 3dcf3cea-4521-44c5-b688-afd174c7ca6b 85af4613-e96d-470f-afcb-76075916bacc fb756385-37b4-4f61-8312-324b01493f40 900696ff-f551-4f5c-b451-2785ddf5e857 2ad49410-9db3-4307-837d-9aeb855457a9 6c3e563b-91eb-40ec-a45c-e49c7e7517cd 5c34b1b8-6be6-45cc-a6c7-85dbc0897956 6d83e9b7-3c34-4289-955d-c9f90954d78c 65d0b409-728f-4f2b-b306-08dec04d1b34 eeda9c45-2dba-4121-ac12-4b801b266c3b b7cd20bd-4fca-426a-ac71-453551fdbc85 f0778d0f-ed19-451a-bd32-3977927c1c40 4448c6f8-9185-4ed6-8623-3cb731601f89 d75eeb10-b586-447a-9e70-11cb64dd794f e32d4c7a-16fa-45b3-8ac7-f11d8af7bdb6 5ac287f1-117f-4c44-bd4c-cd2b94307629 f3c29142-ed00-4ee4-95e1-426d1e5d9a05 aab67470-49cd-4ae2-aa73-4bf389846baa 7eb52e8f-cb2f-4ad6-8282-3e9930efa67b 09fc7fcb-55ec-4bb0-b7ba-b1bdd8152f95 43175d60-26e2-4741-bc28-d231ba7d329e 7d95b72e-ef93-4cce-9057-c99e644750a2 3fd8a8d5-f1bf-4eb7-bfb7-85e1d3745e7d e28fde8e-035a-4bcf-8ece-9056688bc19d 74ae288b-0f28-442c-8789-10517541ff56 617abf37-45c0-43f3-8881-872911620a7b 65e8a0c9-a190-42bd-b958-12621b899dab b432b563-64ce-45d4-9db1-4cee4a82694b deddd16a-1235-4acc-957a-906b3308f950 a7199a00-730e-42e9-8857-d36ed1cd0de9 bffb9d39-80cf-4aa9-9dd4-ba46efbcd999 817cc0bd-9ef8-4070-b55e-b8ee34782b78 f36c8b58-0d3d-4deb-ad3c-5ae80ac931f1 c397822d-3dea-42a2-a2a9-0a358c9b6e76 0894355c-b507-4d33-af26-a25e3ef4a9b8 305a4ab3-bb3b-4972-9c3e-2ce41ee5ee6d e9347a29-97ff-49b6-8e85-433d43b7f3c0 9d2bd804-3a24-4c83-8344-4a8b3c5218b4 487bb966-a770-4bf7-ae7e-d705d0083662 761948ef-866c-4f2e-a89e-6d0e1fa66402 3a9eafbd-ecf4-44b7-804a-5ad13f4e814c adc12f3b-01b1-41e8-800c-295fc598513c e3bd32bc-6975-4217-b937-dfc07c9b98f9 f40d1a49-dba2-44a1-9689-f9866703aeed 47fb798d-6a5e-41a8-a98a-cc7212903bc4 0c4a9e9c-0eca-4f99-9cea-617878c427a4 0bc74620-a5ea-4e3e-bbb7-5e0238087f81 7ebf512c-3ce6-4a54-8a8d-3bb3ccc78606 8350415b-4cbd-4f01-bc16-6cb71dde2a08 1b70694f-faeb-4b96-9d37-ef5844b82154 f442be46-19c5-4def-993a-aae9fcc43fb4 3cff1da6-d971-403b-b5da-1a34acf76050 743af085-e20c-45ad-8cb2-808f3193c3cd 6a20975f-2c39-42b8-b5d1-ec19dc15f460 b24f00f4-e775-44c8-b5f2-ce9a49127628 7098cfc5-8e56-40ea-9021-11443d7146c5 b0a2c8f8-bc18-48a3-b8d3-8e9568cb401e cdc36463-a3c5-44b7-a458-aa3ace1eb541 77db01e4-37e9-4319-8f93-a816f5b47942 431b76f4-9dde-4f14-b411-bfcc9be18c7b 34ee5f97-2103-47ef-8702-bad79b808a60 265df854-05d9-4acf-ad22-c8b2ebc065d2 04c490d8-a502-4b1d-a536-0fd80cb2217c b9055eaa-d10c-4dc3-aaf5-fb0f41ad1157 30b40aca-d378-4752-adf1-be90556882c1 4f4b783a-1608-4783-bb8e-f3daa4afe807 9fce0274-ab0c-45db-bcc9-16ce52d17153 3f97554a-4bad-4e99-bc9b-9fe9df16ac8f 3bb53f46-6ad2-4ed9-80ac-7a877b6dd92d 816fc489-cf74-487d-a1de-36245fbe1add b2507f95-eedb-454a-86db-4f051022639c c363c596-89d8-4cd4-9412-cbc5d6b74013 6114ccd8-7ed4-4377-8bc6-13760b3e774f 422ade2c-a89d-42a8-b52a-98aab34bbbbc 229fce44-c6ce-441b-84b0-cc38369b8e07 b078a056-0f55-4608-944b-2588ca9d3d81 e9a4fe67-71c2-4890-801f-657f557377d1 9db2301f-4b34-4957-aa07-d3bf63b6f22f f864268c-2f2d-4813-8888-9f84175f160a 71a93626-b3dc-47df-a292-3ff30d5430ee eb791922-41b9-4f59-adba-93842d91eca5 1772941e-1c51-472b-9404-ad624a5fee49 1831a71e-5f97-404a-af83-fab7f288f10b e4e98dd8-dd37-4e69-9954-93e355490bbf d6d32b74-9784-46e2-9353-7a0c17ff5908 ad6a2f0b-d2c3-4406-aa03-1e8c51d3e29c 138cfca1-230a-4b97-87e8-a7c01b52b885 529e8687-6ee3-4561-b686-155622dafdc1 f4195bf1-5710-41bb-b3c5-e268eb48f7dc d2e1a1e1-d9ca-402a-9ea6-4b1b2c9cf634 79b6706f-c551-4e27-b5ff-bed7b4766d68 16e98ee5-ba0d-4ca0-a626-af65479ac2bf c65a2544-e7e1-4c83-b491-1cb45a645c92 d3a76c1b-1b2f-4069-b694-b06bdf8fb89a 16a0f73c-d58d-4ab6-96c9-3927213bbcff bada2090-9216-4f0f-af87-44751cf0c887 890cd5a0-90da-46c2-9e49-799c158cfda1 4c546066-59b8-42b9-9132-67c3257d5d49 41bed8f6-2e6f-4427-9dac-84c93f7c4979 68503cc3-21a9-4b8d-bd75-84673e8a5c29 26158117-b8b8-4d7e-ba7f-9d61f62dcd03 3f28c217-a525-4910-835e-11b3994a7032 67e3a069-5687-42d2-aaa3-967a07940bf6 377f73aa-be2c-49af-a509-f3a97b46fe4d efdc3f18-89df-4854-ba4f-1bd76d05de60 95e087de-a837-40b3-85e8-9a9df8f72d8c aa78b2d0-096a-4f78-bea0-ed37734a88e8 2a19a64c-7f7c-485d-907f-73eb8e6e6d46 939db0db-f9db-4033-803d-55181b2be5c6 ede42230-e1d2-485c-85b7-8615c7af2b69 4090c823-0889-4e0c-b400-425737e2bef1 0d13318a-1ee8-4ce0-9d54-cf2bab75ed40 262b220f-d353-4e61-8075-1a657e95d298 02095b0e-7484-4ce2-9c9d-b414d1066a99 53cb62ce-ace9-4406-b29c-e3fc5183a692 3fb9722d-e416-4ad0-b358-086162cb9343 5aaa9ecf-a4bd-4251-b9f6-9e67dff22cb0 10f6553d-1b82-4050-a04e-8d088f3a0a38 4863551e-6e7c-41f7-85da-66c1669f31bd 14f1f8f5-5470-44f4-950a-6826e0a832af 100abc7f-f3c1-4536-b49c-8912900431ff ff0705f2-3b4f-49da-be31-7671fe5667c7 7a1e4509-cf67-43cc-a775-7c1ad1c70664 ae94f3c3-d597-437c-b175-3b0ba68f2786 959eff41-2419-42b6-b00b-7ffe8fa0f731 8a353059-39c7-4a22-9a07-a3a31187a0b6 5ae033c2-0b24-42af-b67e-9607e3931be4 1976a623-a495-486f-afe2-802e7582e79d e9434246-59c1-4754-a6a2-41448a18b326 2c16121d-6ba4-412f-b806-03ae997001fb a6269952-69b7-4891-ad07-f2b564f5c97b 569a35ad-9828-41a5-aebf-c9c16c2ceb39 cb9e8057-db2f-4bb2-9937-80920e507f72 12a3b10f-75e4-4fbd-aac3-8abd37a233f2 027d7047-3d3d-4057-89aa-ddf15a95cedf 5e5c6f42-09b5-454d-9b51-35583e545286 2c204e20-13d4-4528-9d95-2a9bccb5de64 badb9099-bcf9-4235-82cb-d033065d277c 8d51bb2a-c461-4222-a963-5dd9cb904866 38738be1-0689-4a3d-b680-79adf78c17a6 3ae51874-6428-47a3-b8a1-ecaa70d29af7 34f930bd-7424-48e1-a25d-4c76e6c78d50 eb710471-1869-4c97-9242-d38a2ae77f3c 756c2fbc-d69e-4cdd-b6ce-47b9ce61c90b c94a5b30-df59-44d4-a00c-33cd0ddfa7ea c0f0bb7f-0dc9-410d-81a9-d299c2b38df0 e3a80dd1-62d1-4876-b553-6f44488b1e0f fdff16eb-cd69-4ee8-9d37-7e28c871b94e dffd522b-2791-471d-9f1a-9c8e54dfe4ec f2e68811-f0c6-4187-9b75-271fb6603569 31f2ee7d-8802-4b1e-9325-86b35de4c289 db615e0f-9b8d-4df0-90af-0e40f3050ff2 4242b4c3-b84a-470d-a8cf-a91ec97b82fd c1adb9f6-fbe7-4ea9-a63c-ac81706b62b3 0b0a26e2-0a6e-4b16-ad89-9ab84f0e4c51 1e48f4ce-4f9d-4a8e-a471-6301b14adda0 651d5e8d-3f56-4c5e-ba45-3598b93ecfaf 09f87180-f346-4e73-a4b5-1c4b377cd322 b763b304-7010-4841-9e56-fecc8d531a37 1ec3852e-d65c-428b-a07e-66de3f9c05eb 1be71a63-6aec-4713-a663-388026d12c1a 82f5d792-b306-4ef7-bfa9-25ea795ebb7f 826ac49b-f07f-4f07-882d-498257c8f619 760bf1a4-0bc4-48e5-9ab7-04ffb05e8801 57bf7eb0-50d4-444d-9340-2cefa1e50a7a 40721e79-dd1d-4308-904f-c670972b5d60 b01945b6-3523-41e8-add4-0afdbd9629e7 445cca5b-effa-468b-923e-ccc8aae6d4f5 6aef1a86-f48c-42ed-b7d8-e1a21b70ef7b f3b593d5-6efa-4085-997a-cb65ed06df17 ab50e1e9-79af-4b65-b3cc-87507e75ff46 dba847d5-a437-4e5f-b36f-19c208fa3fee 46215fc0-1f85-4fcb-b595-f30187fcd7f2 c954a837-2a60-40b5-933d-7c2e38aafd81 3269c35a-8d40-4e31-b52e-306b0b7e1a5d 0d418ee2-9d0f-4710-9c9d-7d746987521b eb8e43a0-e0c2-4f56-9caa-eb4271009c13 f5a49580-16c0-425b-bce2-627cbf210f68 91f2f827-2bc1-40a0-8d02-beb00545218e d0fa598d-a674-4eb6-ae3c-e9be24cca3f9 a90b506a-b7b4-4e6e-9d61-a992405355e7 88c593ee-5db4-4766-8bbf-fe6d2d01e9c6 affdf749-ed21-4e74-a0f6-8950971fd31e 081f30f6-ab3e-4be6-abc1-7401de5dc56b 44276463-589c-4cc2-95ed-93784535b07e 82fc3965-59b0-4894-bb9e-8a27f9713242 c800e005-37c8-423d-b2fd-9f60fc5bc007 964a09f9-9e20-45c1-9d7a-0997b8e7eb2a 96020b3f-6e10-46b6-bba0-6f796874872f 71116da4-6100-4511-964d-e426e4a2c81b 51482700-b779-4b7c-8555-89f6befd1079 a39c56d1-245b-4156-8794-8a0568d37daa fb9c0188-cff6-466b-9a9e-17ea9cea404d 58cbf0b1-f005-4f56-aa98-491ef7a6ae32 07e884e1-0c41-48d9-9429-1f4564cb215d 9431d77f-c8a5-4f84-ade0-49993fa33406 bb1a0671-b5c9-4562-b1d7-5956a8678266 3857a24d-134a-49f8-9fd7-d0b2c91a60bf 43dc24c2-e06e-4627-a47c-55a686e109cd 45c75f94-47f2-4588-b9ae-f921e2109958 5bd55eb2-1803-4da7-8859-5927f6524e42 94e628ef-5e64-4736-916e-6bbfcd12ab39 e79cb170-7757-4ace-aa5f-1e9250c05293 cb4fe474-8a59-4dea-90ad-8c447b001ed6 717cc455-1bc7-46d0-b112-a89515d0ba0f 53d1b78e-8d52-447a-8743-37af4de81564 002ad07b-4cce-4444-8416-2bbe9a2bf4a2 9a7f9ea2-c1da-4fe6-b2a7-92555ae0e728 b61fac37-e5d7-4108-a98a-c9bcdfba01e4 87573d4c-d806-4e3e-98de-90275d823143 2d2c92f4-5912-4d1c-8df6-5c16cf9b96b1 71546249-fd08-47a8-8c84-d2d491f1acb4 50fa3a25-50e6-4fbe-9c5f-e319e250f771 98f632f9-cd6b-4ec8-b216-523f7c648498 5de7a05a-91fa-4d6a-84b4-cf16fd339801 cc4d6456-a626-40c5-94e7-e5a399b4e96c 0455bba8-0d31-44a4-a749-f6fb674c2268 e007c211-1141-41b0-8173-9cce568cf860 bc9f87d3-fc03-4489-81cc-fcc78e2afc93 99610aa9-a3be-4e17-bbc2-c131fad6406d 3e5597f9-566d-4449-a813-01e92133ec64 89f43e15-75c8-4365-9570-7c2baace8e13 f47f8cbe-8b07-403a-8224-eb0a33daa272 9bb547f7-c5fe-459c-8412-510d7115cfe3 84120bda-c655-48a2-99cd-dd8a903a13a3 a339de8f-f519-4462-ab30-0a3e8d72cc0a 537f12f0-296e-46e9-91f5-4596689d9a6e 54283228-39c8-4c02-8d7d-661d409f04ca cbc098cf-9997-4620-a367-44c9b5e90de9 bbdf60ab-c587-4021-9146-1893f3e142b9 77add3e3-0686-4f9f-b2b1-5b01f1e9f185 07b3415d-9ff5-4b7d-af6e-ccc9025ce43c a88ba797-1b54-4021-8a45-0d7bb81d73d0 c4190e54-57e7-4c9e-8498-b327dfbf35e0 3a3a0575-df97-4d86-86c9-c6fd2bde121a 34d6cebe-e213-4142-b318-7e7cfa4297f3 8109bab0-25cd-4fab-8b37-bdcc6633185c 4abf80ff-8f2e-4f41-b92a-3507e94c60ea 129f062f-d06c-452c-a3f4-8374aad9e181 bf873b3d-c72c-4ff4-866a-20f7bcd628a9 8095f8d3-7286-4415-89ba-1ef82e9eb32c 7eb6d42e-170e-447a-a161-084a58f559a5 4aaf61d8-9825-43c2-a057-ba8bc0cf5c56 ae114c03-6a92-4e45-9cf5-7d14eda99e06 030cb6d2-0e13-4011-be0b-143c3c5e1436 5142d5a3-4988-4749-a3e3-cfd65df4347f 86efd6af-af33-4b94-9594-4aef419ac4ad f4078731-b480-4eeb-9ff9-d781534683b4 90fe7450-fe69-4739-81e3-1aa5d40d10df a0a6a4b6-ed08-4e95-acc3-42688e3a4057 f0f64f7d-aca3-4736-a606-ddd67cc69d34 19de4cbc-579e-42a5-b47d-5bf7570be01f 4d93a85b-641b-44cf-9629-af8a50989e4b f595b81e-d610-4c65-9597-88ec83fcad59 6992c092-7d1f-4414-ae01-ceacf0146821 f8675e49-7c1e-4cc0-b3b6-399e297aaaea e165ba8a-0f0f-4575-98de-33ece1f39ff4 81154f17-b41b-42f5-92d2-9fa1166b2b72 8d2d4532-1b54-43f5-b67f-207ea34231d2 c4bad09e-ab93-4e5d-afd9-47c019002abd 87cc998d-7e5c-4798-b5e3-2ce4116e9d3f 27289c2e-aa66-4896-9261-cda1d1ad9ea2 1ad72f43-8ac3-4215-b50e-19b0c13674c8 7d638176-e594-416e-bdec-2d1b07e5c48d fd27a2c3-bbfe-4cf4-8c20-f2c78e473d44 0461e3a8-f90b-4cdc-a973-388bbb6b5b41 2e2e8fb9-7843-4aae-8aa0-29dd359d437e 02930b91-aa73-4337-9a60-9e34946a86b0 c423eb1b-36af-4b21-b6b2-475b051f3b38 7a9a39c4-6ec3-48ac-bc63-6c301d4aaa8d 661cd953-1db4-4e97-8d22-1b41f53b0ecb bae27ca8-f005-46a2-be5c-48e40420e22b 52baf4d8-005b-4dda-bd10-fb59fd797a2a bbaf5d39-0d83-450b-9643-9546929434aa f7e1abbb-b641-4fa8-9b8c-4346bde29c0e d4d1926c-0ad0-4b0a-b5fa-71206868038d c4297248-3756-43d7-8542-b188c5a5f41d e91160ba-7fa2-4aa4-b915-391938d9c27f a6f70f5f-6e79-4d92-8c3a-5d75b5e12dc5 83f7d08c-e0d4-47ad-9762-d7ba3b2f6538 ceee488e-94dd-4d1a-8cf5-495a098a49b0 3b3534f4-c471-4259-8f00-cecb6afaf321 b1b74fae-c2ec-4ead-b846-6a852699b820 7286aa1e-4d62-4476-b6fa-afb157fa5a36 28f079df-9215-41a2-9e0f-5a3dd1920c16 609affe2-1d6f-452c-b672-a1548ad0b6af 18acee31-fa1c-4cd6-b2f3-60bcb0dcebbc bf22f7dc-a178-478f-95da-214034e7fbe7 2c22fae6-77ed-4ad9-ac1a-6437da90ad9a fde42c30-0b61-4662-8248-1917215db0a4 0f7808b0-869b-4ae8-ad67-55404a61da43 0a346dbe-b598-4a88-a51b-18bfeb827b65 0680483e-ad40-4fca-be9d-a1971a6b2639 0897a8eb-1877-494a-b4ee-a40304174a3a 0bf207bf-c608-42eb-8017-844276d143be da959ac8-f5d1-4850-a4cf-916438423294 cfe41166-03f7-4197-beab-d74687805bc2 ed304dba-419d-41de-ac77-09cc0844a5b6 ade7eacd-4d9d-4120-b7b6-a5e9050a0ba4 5f23ca8c-2366-40a7-911f-f5c04ee5d656 7655748c-1440-4209-a65f-076f8bd0ed94 4461d141-ef2e-42a6-bd28-5f2cd9b9d841 0df31f42-a20d-4695-a783-d68061fead40 9a681c79-ef96-429c-b941-58f506daf62c 3e1d820a-0731-4d30-ad5d-83c7fe6b5ded ead27bc5-f998-4362-a421-621f5d57bff2 d448d474-902b-458f-bafb-44688a818181 c92ffa20-c108-4966-aa15-b0fc887ce190 3d68432c-9855-4c86-ba0e-156290659eb9 bdcdc484-2bc8-45bf-a962-e3d47b1b013d 81078d03-e684-4bf9-a305-92daee558ad8 2fd84ae8-a85e-48bd-8973-122d910c850c d5127f07-569f-48b7-b5cd-3d982556bd8f b23b2212-3bb4-4d29-905a-2009b376607e 11f00d2f-8da0-4305-9d1a-577689232bac 5967c975-2c3b-43f5-9216-937469b87118 687c10cd-7158-4cdd-a384-bedbd5a1b4ee f5a653c9-a7ff-4584-a108-e8cc63e5e105 5ce66143-4bc1-4e4f-ad9e-bc969336b96e ac875a31-2e54-4795-97e6-7d2146a22f80 4c7b1419-c022-44ed-8785-ae126e6cf618 ff27b687-d1e3-40ef-a62c-ff3313f15356 66b2f0f3-621b-47c7-8329-a229fc2c3174 e7c92d16-5fe9-4253-8386-e0f97e922282 9ce639c2-63c2-4a2b-96e3-dc38cb2c249e c2e51cb9-2299-4438-a9d4-8088f0e4296e 3b3ca025-4cce-4bb1-971c-2397b9567ffe 3dacee78-6b77-4177-bd0e-b481b82373d0 222a12e5-b0da-4d9e-85b1-da8458c9ed4e fa5e4a7b-ce00-4752-a543-2c3d95c91d35 37360cd4-f973-4e6c-81a8-111af359a780 23d1ae65-4f5b-47b4-94da-249dddbf0084 cf0de244-15b5-43e9-a2c1-052e16096cd4 80817f27-a7e0-44d0-8d20-54532ea95162 a8806aae-cf81-4a35-9cbd-77c2a04ed802 474f70f8-f788-4cd1-a27f-00a5dd36b876 03da1e6e-f13c-4ef1-b527-deac696db3ca 0b29541c-53ca-4cb0-a1cc-d83170546c02 2a0d9991-afac-472d-a918-aef97eb91c88 ef3ba11a-cf8e-492c-bf6b-7e90fe3aff9a 49d5ddf2-6cce-409e-b8fc-7946cbe52e0f 055d330c-4b1a-423a-a17c-5bbb83aaee1b 335a0026-3d76-481d-b390-623fc84cbab3 3203151e-4a58-4771-b0f5-7aa72b3c47c1 b6880d06-f377-410c-9753-17d7f5df31a7 14c8f055-efb4-462d-a5c9-ff3cd19e9760 e5c9ca7e-2874-49dc-8ca7-b99cc277997a 88393f27-4411-401f-9222-7ad7cfe38589 5f43fc12-a9af-4d48-a5d5-a14906b2bf62 666c8ece-966d-482d-8242-6307d560203e df2e21a3-f343-4b3f-b7dd-bf7fc0481fca d06b280f-0869-4d96-b8fc-4216aced1fbd 66fdddf4-c222-405f-a900-0ce263cb5fd2 84caf63f-fcd5-468d-93f2-64612ee01867 214ef6a1-cb70-4ab6-8505-f0d3e4ec823f ee0ec941-c9eb-4140-9469-8d84c666f396 7350e6c7-eb52-47f2-bd99-2eab46c587a7 78cdae1f-cc2e-4e6f-b006-78d69f649218 c22040b9-2b03-408f-92d2-addc4945c6ad 8b1f3821-ef9e-4c08-9090-4f62ce1edd14 5bb77378-f846-451e-a32c-32d1a202f486 e32e4d9b-e16e-47ed-8ee9-f34124becddd 4eaeef22-8f7e-4046-9c70-db6f571463b0 9ad48d2a-8ed6-43c4-8605-b8617733e4ee 0d1814b6-158a-4376-93e4-6ddf90d5ac2b f6950913-a49a-4bdb-b35d-c400e6cc08de f098458b-b117-4649-a613-078b4e127dae 6484e6fa-2814-4551-9858-f5d56ed5698c ed76726b-6ca7-4931-8e05-2e096da5ee43 201824dc-9d23-4a7d-8393-3413a1fe5d51 01eb9b05-3b41-4a1e-96da-775e3c453b57 43bbb3ee-247c-43c1-b39d-92d0be9dce37 a5ac0be0-d148-4edd-8a5f-afae4080afff a6da541c-51fd-464b-911c-0087deec3617 8782a94f-1219-44aa-ba96-035188df07e7 00c6bb18-8468-4686-abd6-ed4805d6312a 97fc9c64-c2c7-4286-9799-84af87497a09 879684e5-988f-4fe3-9fb9-444ca52507e5 0ae5809d-d57b-4636-9da1-c0045f233050 57db9dda-e422-474f-94ac-d6f032f26da0 12046265-5b22-4fa2-ae9e-d294e4cae36a 31eee8ee-cedd-4b59-ab41-47875c13a677 b6cabd45-a950-488c-8ab8-6a78e0c460a5 6c776e5a-d62b-46c5-9cdf-595ec9c0b9e4 7f1edbf2-9021-4f36-afd1-32f64954ed79 f150fff0-cfa3-48a8-b7cf-dc64b4fcafbe a0295c85-5b99-4669-b9f0-88d7ffb4f199 e19d2213-b167-480b-99a0-703f494b71a5 b75169f8-fe45-433d-bdff-139241ac288c d9f33769-99a1-4e57-a023-7d7350271b30 ff92044f-53d4-44d0-bf92-12246dd9402c 4e943d74-aaa6-4dda-9e03-6d9e65587d8c e6df1ba9-dd05-4b13-a43b-217d5e68aa28 bd3f420f-ed3d-4750-a4ea-4bef12540157 c9944b5e-b661-49bc-86c6-e3289bc970c0 e085f1fe-35f2-4f41-a71d-a990701f5619 1203cf7a-1e53-471f-aab0-a2dc138077a7 b727c75e-f171-45af-b210-a8f9471bb498 d433c00c-04f1-4a38-8228-097250ff84b2 c6b5359c-a076-4bdf-a772-d889ca82801f 791fe517-fe1f-48ba-91b7-0fd55b8ba058 fd8ba2af-a998-40fe-81ea-4902c3b35ed0 f358c011-e53e-455b-ab1e-bd4ed87d41cf 6a88e799-abe4-4326-9c26-cb265c3e15b2 1116a94b-d193-4e45-a3f5-88a8ce59ae10 8e8628bc-e088-40fb-aa36-07903e498bf3 15920fee-51c2-4587-b3b5-cfbff32e72e0 b2edbd40-a83e-4c9e-8352-b42400e12088 fb148589-7ac8-49f7-8eaa-478f48531efb 305bf86b-c3e8-4457-b405-0531e5ead1e7 87b07eaf-ab8f-462d-ac5c-553f162ef841 c87752e4-0506-480f-b025-e6e69a6d67dc e67b99eb-47c1-43d7-9269-33b3808e68f3 3fcf22dd-2b25-4bfd-b131-cf6aa0e33ad8 a3648908-b3ce-43b5-b402-de4e5b19a0cb fcb4cfa5-2d9d-4ad4-bcfb-8076470094d5 8973765d-43b7-4128-8c1d-067537628354 5a37593f-1f03-4423-b7b1-9f97f66f8c76 25c83d3b-3670-4926-a03e-ba82289937f2 4564ea73-afaa-4307-b0ba-f8b8ced1c60e b74122fa-3c5a-43a1-949a-cba6e9df9f92 0b314e51-cb52-4068-9cb7-6c2a597cdc77 6eb113ac-f7e2-4865-997d-45a08abedaa6 ff493dca-2d1d-4b33-9595-2afdbea12f63 056ef4f4-7401-4b4c-90dc-a2e75f60832a 3539273f-c285-4e9c-803a-896528c56392 68562f54-36a1-4364-82ad-d74b4b03d8c4 9ad20794-f1dd-45e6-966b-d7c1b28af1c0 ef0f6c70-9b99-4885-a4b5-89f197e567be 21d2b15e-9ff0-45b5-b7ea-7857beed093b 859fc58c-ee7c-4bba-8b60-a44a80f12d1a 7a403d9f-2f18-4ee4-b93b-9c08b8544c24 24c3dd68-9c26-4e17-ad0d-a797c655b258 714da013-6c24-49bb-9bd5-3eb28340303c e68fbfcf-a45a-497f-910a-85bcad2b6359 b6a7e49b-cb5f-416e-8209-69e02ea54255 da289599-8a7a-4163-abea-36a7b9f263d3 f4c89df8-37a1-4443-809b-e3adef738fac f0bbd931-65b5-4b94-aac3-1e1f22c1f9fb c4275331-5a4a-49c9-a7e3-5961ed182c29 51c64b8a-b646-4fa5-9ac7-d11180d459f8 2816a02e-73da-46a1-9fd9-436fbe2c37d6 f34733e0-3192-437c-89a7-f2f7f21d5b7a edce9331-1b7a-4086-8339-0b269563c10f 54dfdae1-f5f6-470d-83d5-a5ad95b48d4e 0f09d6d0-bc83-46f8-b528-9de579683b52 7d73695e-f7ad-4c43-8de4-277c65479849 712f8f58-a51d-4071-96b4-55d1a862ba18 4ec91bf8-47d3-4610-8f1d-b44a602075b4 a4f4db19-f1a3-4d41-8c3e-f881859e529c 3a7cf247-a477-40a9-81ec-36bb86f133c4 df5f55eb-5bdc-4216-bcea-a3b65fabf560 21f1735d-907e-4a70-b16c-74f2da166b10 917a3b1c-e06f-4545-90fc-6d88b05a40b4 9d6a11f0-955d-44ef-a8d0-c3d3be5fd87e 78f6beb1-87a2-4405-9791-26e4bc30f035 418c19f3-2d58-4968-8498-e2e05f3fb42f 513df8cb-5d09-4722-9bab-9dc379c57e11 9cd54534-7927-41f2-ab96-61076272652a f7f98d97-6978-427c-80d9-3970b5660b9f 145f38a5-1cee-4b5a-a3f5-dd0406161293 7116bfa9-7cfd-40c7-a471-7a053f035d3e aca581c5-8249-4be5-afd7-7cd5af29174a 3fe3a8d8-1596-43b7-938e-764619eb4db5 8ccd2150-9b0c-4ca0-8134-3b208fd5bf90 18bca07d-781d-49e1-a1b8-699bacca0a71 e98ec52e-dc19-41cf-abdf-7ee219092009 77919fc8-cd69-4675-9219-cead89a06944 86040445-e667-4075-ba17-ee99d7909fe8 f93eb52f-1483-4d5a-b45f-3787d5e72b48 c50b8917-79b2-4a95-b1f6-b37cb703a808 94074e18-12ec-4f41-b9e5-42da4b135934 ac4c2bfb-418f-4374-9cbe-44066b076ca1 19a5c827-bba4-4509-ae4b-a1f40ec713d0 7b106ca3-4ece-4f80-a62c-f9336db3db58 94c0f54f-6854-4349-8ed3-145ba18a922b e35ec974-3413-4e4c-9bd7-87b36a3c96c3 067b9576-748b-49a7-ba54-9e9723b16daf 683bf4a4-dbfe-4000-9d2f-0ef3ae72d222 ca3ed90f-4e32-412f-82fc-32918e7e8d16 99f850c3-fe37-4919-ab29-9c096282eb53 107d33ff-3f79-4c73-9899-74bed54f25c0 73aa1943-a7bb-48e9-b3a6-24d13bad213c 17b109d0-f03e-4bd9-a4ad-7741488de4c5 8ccdfc4c-a028-4900-a834-fc46fd0d8ef8 8e3668dc-664e-4280-92e4-404a2e9e5dda 7ce4696e-0d60-467b-807e-4002bad659e4 a69374c1-c2c5-4e93-a1de-4568d017d12c 7668b849-c94a-468d-86ae-6246b2087c49 259ba5e9-b828-4eb2-817a-aba7303cc09c 7644b8df-5986-4e34-87ba-395caddcb857 a2aa2dd9-3007-43c8-8b63-95b83cd5bfec 13c8c5e9-4ac8-4556-995f-e4caa10ba39a 6e86c762-d53b-41b3-9def-106b5ae4b092 13f24c26-2741-4e53-affc-6b7d8960127b c03ac896-bbb5-4529-bd24-9374095f8bc6 d681eda6-f1da-43f8-bb4b-d226e0ff6542 99651256-39b3-4996-ac12-1cdf53eecda2 d6c0b5ba-63a6-49ca-bff8-9ff87b113ec0 e0e78d9c-e312-4cf5-bbf7-11244eade934 38d8d08a-5fa7-4a02-9c75-d2b406bdf91a 6f40b73b-338d-420b-a083-15ded29d4691 53a1b43b-ae17-4530-959a-f2827abc6eda a04940ea-f614-4855-a88d-75317184d34c 7a24ff1c-3193-4f07-a160-da69e8a7b1db a8fa4fc9-f260-4104-978c-4299902b1a06 997cd9ca-6a91-4b98-87cd-0ab500845931 18cfe5a0-185f-4766-ad2f-91059fad3f3c 065003b7-149c-44c4-9fb3-6f1bd63c3e74 470918f6-1430-4c05-9348-c916eba9585a 8a48adea-2dab-447b-9345-c555cb2ef41d 4a074437-27c8-49cf-a414-20cbcea500b2 5af96de7-49d0-473f-9f14-bd8d9a30d112 76f06d5b-0a0f-49c0-b777-cce6e82821a6 02637c5f-a696-4ff1-a991-c50d51e9b372 482771b0-e83b-4bf1-948f-c8dca7f25fb3 6aaf10e4-5b5c-4e34-8575-43d480d64801 f3c348ee-bb39-4931-a9ad-ff1c6894e5c3 8d9b9236-add3-44a1-a832-a2d6e7c6d25e df1c7a0d-53ab-41ba-b675-3bb995f9edd4 93827d8f-5b78-4415-86d0-064a588dfb23 65c6506d-e8bb-4ffe-bbb2-bd7e50c564a3 eb254055-3c84-4f18-9c72-52745111bb11 4fec3348-929a-46ce-8920-4bc79a42af05 fea39807-752b-4226-90bc-19900218cdff 3516e8c8-cb12-440a-97e5-744ab78b1d3c edd866cb-98b4-4b46-b4d0-df2ad34d75fc dbbf687e-d3d4-4eaf-9eba-f86383a9503d 86e4a026-e4cd-4a75-b156-6c3a40856ebb 4bc3ebce-4c1b-4f02-a66b-0f877e6f0654 f7ccad1f-a636-4a84-b132-1c32650c6c68 33295568-9dc1-4b32-8fa0-64d59e5f6eb7 47380e3d-5445-4aa0-992b-8969b7935073 4605b102-3d36-4d77-a783-b43cab5c6c9a eddc3d36-572a-4061-aafc-e26b5afd1f72 edb9ab4f-91b2-45dc-bf63-6dbc0ab7b332 d10d7285-8525-4772-8361-fa0751d18686 ed92ea3a-f35e-46a8-9078-9473c8a2dc3d b2f0927a-c734-4005-b08e-153cafcd53bf 61d008a0-f529-43d5-896d-9a791d40070d 1a984301-8e65-484f-9ab8-a8b5e57efaac 8e0a61ae-78f6-4c73-8435-1235cea5f9a8 3e0a8411-9548-49cd-b3c5-7c40d230f53b 17b11410-78a4-4baf-8c47-1a04f525bd67 087c4a2c-8c7d-42b5-9a64-09535926d08e c505cce5-0602-409d-90d9-0855eb414a74 dfcff42f-f675-4b1e-b0ee-387f916a7ee5 cb9b082c-b74f-4a44-8fc2-5ae408014036 cf77827a-10e8-40c6-8d49-0835552a5229 5dd1d917-cc7c-4ef7-bbef-89ac707d76ce 960cd525-0e6e-4230-bc60-a737fe525e1e 4d1fa39a-a28f-45bd-9b27-0440442b6f25 d76e437f-b10f-4a01-bf56-05c98ae904ed fda8796e-5fca-463b-bf6d-83aa6467d173 e26ef2f6-ad1c-495a-ab8d-6c60ab16afd3 fe68ffef-2367-4a1b-a91e-878485353802 d18e7071-4f81-4f59-8393-5309527f1766 97c72dd7-cf26-4df3-9d1b-67dd3d784087 f574b15d-affc-4efe-89ea-9500b5fb59c8 a205a708-1163-4d29-8381-52d7cfbacd99 1347aa2d-7efe-4fb0-b948-5a03ceb3904f 3f99b919-3fce-4564-a947-74f8f2a966e4 a00e3429-d285-44c5-98b3-ef7c8580213e 7af86c2f-8491-4471-92f1-258126e3bbc5 08005a6e-9579-4e25-9597-2804d783ee6e 4df690e0-1433-49e3-a17a-0357284c331b 5331d0f3-b32c-4463-9631-c65b927a4580 311ecadd-86b9-440d-8c7e-a50e3f82c42d b729cc0d-bc1a-4eb5-9128-e47ea8b79963 b4b64d21-3b28-453c-a7a9-0cc4690420a8 2143dafe-94e3-4e08-9aef-4bc781940129 6ce9aa9e-9e9e-4212-b516-e2c8f8c9ae56 a0667373-8dfa-4bb1-8be7-07c38c097ccb 2be33d71-38d5-4857-a63b-9a02ad920e91 db0e508e-2c7e-4ef0-8f14-a12c20ce05bd 77abee1f-a2ef-4bdb-926c-54748f874b16 fdcafe2d-8380-4785-95fa-05ab5958bd38 8aaf2ef5-4c23-4a31-a93f-12da80af1deb 807df185-ebc7-4474-9bf7-51b2fb74c0dd 20b3f860-ebc5-4c41-a389-bc1707bfa7bd 35976e0b-f9af-4da1-b73a-a4d83b01f91d 7a1b3927-4aea-4b87-a252-d525b0950438 1ad8f1c9-1317-4c15-a30c-05c1c50a7c21 c62cc914-80f2-4ce6-a57e-b86fda9de4ae fc849d5d-0a9c-4fc9-8bc4-473bc4bcace5 9f505d3c-d5fd-440b-8915-3ed653f840b2 50433589-d603-43ca-b7a5-e7248bfe09ad 7d0934ed-eeef-4356-81f8-fac45895111e cf498f23-e55e-46fd-9813-b083f15c5a95 cca50930-010f-43c7-9c76-48013bc72319 6492edb2-f34a-47c7-b742-8bcfe450f435 904bd2b1-fc65-456a-8d4c-f88bb2fe33f3 8476f8f1-d5b5-4fde-ad23-f37daa108612 053f49ca-68ef-4416-91d7-0ce686f20139 d0774c38-3d09-4a4e-9360-79eca4e54533 e16a78e7-a30f-497a-938f-3c7a293438d4 5ca09620-8840-410c-8815-f5a2a61475df 1ad75e89-aba9-4486-b67b-b6accdbe8f09 09c09334-03fd-4ef9-baa6-32d2883e9674 73a6d1e9-73c0-4d0c-98ca-fb69fe1176bd ff9c04b8-ef1d-4315-9c9b-c931792deeee dafe0f0c-c559-406e-b129-db3a4c5055aa ab12db74-8fd1-42c6-b7da-90be4b018513 31293fbe-2421-4962-b67f-57d750e1c2dc b55364d4-e737-4f6f-a419-21c30b322255 0241edfd-690e-421b-9dc4-c52a269af959 df825806-29da-46c4-a99e-736a199370bc 23fdf70d-8486-4fd2-913f-cafcc16e5874 f52f2d42-6351-4bb3-92eb-a5fd2c202364 36fda36a-ad84-4d55-ad71-1d13204f961e 22432b46-438d-4000-8cca-e32e102a944d 7120db74-d165-4f02-8525-89a6ac831212 456b9639-2e97-41a9-b61d-f7cbbbbc2786 cdfc426f-1d7f-4ac9-b49d-593f6ec955ed b7b47d62-8ddd-4de3-adeb-4a94bf8c6c5a 50a57553-6d21-4a27-ba5a-72a2c986933c 928e21bb-7192-46ee-8699-6c1d83dec8b1 0a074a2f-96c7-43fa-8cde-b48ff201a6f7 e57889e5-d769-4538-ba1c-fdc402e65d4d d9abf988-6ac3-4f88-bfc6-ec721921128f e3b985a9-b012-4181-9d0c-f117700b0b61 b3cdd7bc-02d1-4167-85db-da95b8e63f17 383e0b45-e609-4d22-9cbc-d4d75dc1a862 8bb4109a-b369-4364-8497-cc56c2a6f083 c96b2abd-1bf4-422e-ac53-727364d7793b 53cc7fec-741e-428a-9ceb-6d51b50ccdaa fecbed6b-88e1-441a-b4c0-322045831b53 092c42b3-4de7-4d5d-8d75-7fa4aac5b9bd 7f6e349d-4515-49ef-b73b-7a50394408ea 52a6a3c8-3c56-48d3-b035-b1a0b86dade3 76565a36-ec97-40fd-a357-0170d134f2a2 cacb73aa-5129-48c5-80d9-f758d3b5135c 94164de7-322b-48f7-a44e-0d031000e663 369631df-9653-4c37-803e-28615e835be8 ddd12655-e865-41a6-82d5-a8f9a191f3e7 4080d0ea-9141-4bb5-80a9-35fe20a66f58 76bc0984-b0f7-4da1-b6c4-032b832c4914 f03780f6-f56d-464b-84cc-d46fcef5b9d8 c1a55a53-4a7a-49e1-9778-9f87c75c140d 13278974-d4d8-48b3-940f-59d377219303 8608bcf1-688e-45c8-8ed2-12f479e6c052 72b89bb6-1b77-4582-9122-6436cc8e2762 c3767e82-80f8-440f-9803-46388b7af2f9 d3ce1220-2a98-409e-a39a-86ad1a5197fc 309607bd-e4e6-41e1-894c-c8f4ad249542 5f4e0541-dc1b-44ac-b731-3708fa56986b c6f93343-d054-4280-bc64-9a2012b208b1 be49eca5-7f33-4717-9895-a4a46de51525 d61b67f7-7704-493d-87a5-78e28745f80f b4733fa0-a4c2-456e-b826-ae2d940ca5de 2b63bd5a-d3b5-461f-913c-598aec30eec2 dcd4f53f-160b-4e7a-b42d-7e779807d000 db917599-b65b-4d3a-8138-2eee5ee96d63 e813b559-8f84-416c-98dd-c9e13ce90502 124d7619-f0d5-4dfa-8af9-b7bbf351dadd 18dc0cec-35f3-4ad7-b2db-dfeb0f8557f4 e9979d78-b0be-43ef-8b47-43549ecd595a 595cd7d0-16c8-4130-a2fb-e18bb5251a84 09db6760-ad27-43d1-9b42-26b3010154ef 19e6affe-f34c-47b0-b367-3417d8f121ae aadc59a1-e9ec-44b0-bb21-9192548386b4 1ecd2118-c8a3-4736-98d4-30167c399dd5 2af26582-0136-4d3a-b51e-286461ab4649 e5d75d4e-7425-492e-99be-83a7511f7e57 4e629474-266b-49d9-ba81-b78c37225ac3 9d4e0ef8-1058-4f44-b059-eaae26e526c2 a6f55db5-b0b8-4e5c-b848-d96142cf237f 74030e62-549e-4036-a0a7-b11f92954dae bbea0def-d3e7-476d-bfb6-9593ccb37be3 78c2ea64-d492-4f8a-ba83-34dd586ef5aa 3267fba4-f5cd-449b-acd4-bbc85b4a8aed ce75af26-7e4a-47f9-8b0c-f47eb74d10b8 546d5332-6461-4161-8090-7fef868a5f37 a0acd252-2073-42a9-8f4b-f5071e8a8cab 198a40fd-dee6-4218-944a-e178b9fcedf7 45c4a1b2-fcea-4143-b552-f42e599e69ce 7933048e-321b-4a1e-9bcd-89e64d4f1f2e 185a2202-0534-48ec-9b6e-6010f8f83107 d74c9bab-708a-4c73-a371-52737cb726bd 57ab26b5-7f78-4883-82b8-9cbea36ecefa 359efd08-ee73-405e-87f5-b793435cef12 7341ed56-93fa-4da4-a7b8-5e9b05a73ff7 9185ff09-8685-4e2f-a448-c1128d5cc32e 47cbbd7a-280c-4189-8771-50841236df30 7eb32bdd-f89c-4f63-9af4-8ef9880e6018 e56c173f-9f69-4454-90da-ddbf7101ceba 1af3de72-b9c1-4350-8c0a-f50aef7e9f6a 438eddab-c79b-4b52-8ac1-dc203f69b4fb a549b0ed-1125-4d7c-8da0-7ac2df378726 097c5103-5676-42a1-b211-0ce90dd9e19a 79b79c3d-dd22-45c9-a97f-7f998e55cc44 82505e3e-eee9-4426-86f5-daca4428eb48 9694b2b0-0a85-4ef9-8e89-865d4834f63a d9d4a321-9712-4d0b-af90-4b105d5a1785 319fd43e-7841-4db0-b797-7b74e10b16ef 75e49b5d-5ec5-42ae-bdcd-689373a31edb 572b57df-1643-4590-8f91-0f7ec4f9b9af b99d1e9d-749b-41d1-9714-e5fb8c484638 32abbb7a-ad77-4d81-8985-cb60499c1036 65888189-d38b-4a6b-8b33-8f1fc1f17552 9f49c2f5-727e-430a-80e5-cd5802381874 7d48233e-6702-4d46-ba29-03279c176489 188d0425-b1f5-46bb-98b7-997f7152db1a 2745a394-16e8-48ea-80c1-991e34b4bc2c 3e1fb1ad-0224-4d75-a7c8-489b14b5c2a1 81efd730-6392-412b-a883-dccab4eb1b3e a56cc6d6-e2b9-4ad7-8064-0d99046b3fbd d252c762-923c-4688-90f4-c8f55ff0edc9 9f8d1aad-cb1b-4d43-b28e-21bfa57976d7 04f26d33-86a0-48d2-86d7-63b5c07abb20 5fd05d72-8005-4dd9-aa8e-67b425a719c1 15da0c8b-6fc0-468f-86cd-cd24179e1ac7 58b527a5-62de-4673-8334-d03595fbbcca f055cc40-fae6-4946-a8b3-46891e39ad7a 0d37f383-50a2-40dc-a508-dac5101c986c 2edeae1c-11fd-47c7-a8c1-4b13b4c28877 71c55750-a5a4-4b10-94f6-151761b40ed6 4ec3e8b1-16d0-4b88-ac4d-8018eea107fb 39673f4f-e194-4d59-835c-0e073855f399 9b7315e9-e9eb-4a69-92a3-7883d83c7e13 3247f938-b60f-4fa7-9391-c76904b00524 3b37224c-6753-464e-8904-57211950b983 59d65462-185c-4acb-ac53-d8118946749d c3d68561-06d3-49c7-a16d-d4875b045c37 8e6be808-b9a1-4114-ab3b-71784bc271a8 2d6c62da-f754-496b-a26f-09ec6d52065a 73743c2d-8b52-43d7-af4a-d03b1357f1a9 5d7e865d-0232-4f3c-ac81-08af9d2a868c 23ee40b6-3f41-44f2-b221-32b727820bc1 2b92d8db-e1f0-48a0-ac41-d4df46cb23d3 cf33e02e-ed17-4582-a5d2-318d3578788a 35139b64-2c20-4533-a56d-6d13bff03471 be748815-bfa0-47e4-b54e-5d825228647d bc7a2aaa-e458-46e6-a58b-8261fa949846 0e184269-f59e-47f7-b80a-011e657cdfb2 c4c9d290-1d67-4f62-bf07-f0c3f40c0529 0f71b79c-fad2-496c-b3b1-3a749382eb31 e2ed937c-ee4e-411d-b8f5-147d28a8fe0d 0cab757c-bc6e-4883-b31c-e4098e88ba3b a8a55686-4e87-45a6-9a52-4bdd1dbdb010 9c62044f-2ba7-482c-8a0b-247d33785c9a 5b480b5b-6a6a-4ad4-b1a2-0fcd72637eff 75896072-c193-460c-b781-a42d6070281d 282e90d2-bd5a-4abc-b0e3-9381b017f725 999aff02-d97e-4e8f-8220-2e1c9a211e6a 71f72684-ed9e-4537-8982-e6040d86fcde fe1c1637-5c8d-4164-b049-5600ff052b3b d6d995cf-0986-4ae6-ae2d-47fe50af5e09 c452d17d-8a55-4373-a264-86b5c2b0f9f3 fbb9b0d9-4790-4b56-bf31-a9cc2d54e4b8 6a2b2f8b-793d-4f31-9b2f-bf1d3c042e09 9d63f4a7-3172-4cd3-b9b0-ac2c2686ffb8 d5d10c1b-45a4-412c-878b-7ee06769c9f7 74ae15d2-0f4f-4b91-9ce8-61f63d9b0730 f9b796f9-5812-471c-8975-bf13961dbdff 0e32712b-db7f-4ad4-8996-f7db3349ad13 e438d3de-d481-4994-92d0-fbc058c7a781 e412d4bc-07ee-4b99-b2fe-20be2c33ef59 12646431-3181-4683-951d-86ddc3fc841b a0e8e0b9-9432-4460-8f49-23280a5fce3c b14e9e65-069e-44e4-8d14-a03a360f9b27 2e6e561b-f404-49df-a2df-b2e9423efe44 af553484-96c1-42b0-a919-67f91ea310bd 7570aeaf-38d2-46eb-bdcc-f1a7f8ebe55a 66157980-c276-4777-8bca-203d77a74df1 5930464a-f2b0-4ff3-8e19-9e53d76a8338 c3783f80-dd94-4816-bb5e-732e0e64ed61 9fd39c5c-7867-47fa-99ef-1a289b5ee62b 14831099-dde2-43bf-91aa-5271d6448ff3 59fc4bc7-ee31-43b9-9ab7-e91b0cced682 d57384d3-c15d-475d-9a2b-7b6da0508c8d 6dd9da70-bda0-457d-9b74-20647f770e57 c0d60aba-034d-42cb-8af7-2e2ad985051a 8414922a-603d-4ea9-b240-218da30ef59a d4cc0b57-af35-45aa-990d-b76b687b88f8 fc5e0dd1-4d85-4b1d-959e-c139698971ad 31d504de-3e25-45d1-a51c-a6c3067534f0 700dd2a4-bfcc-4b59-9ea2-89b7956d7b76 23eb7805-dde7-4eea-9ac2-3388e0791967 eca163c1-49ae-4378-ae92-01ab654faa45 ca934426-d113-4872-a356-5f85ae73f599 bc4796a8-aa52-439f-b175-4171789facda db9973ed-4461-49cc-aa5e-e4284c936d44 91cd1b70-e257-4123-8d31-d521e3e41d82 e03bb319-cc59-4e55-8be0-e9d42bae737d 7007ba59-4e92-4320-b8c6-a430cf0e9f3b e430a4e2-28ec-46db-94ca-cbfed0dc6cbe 2e228071-3cf3-4ed1-b6cc-90d5329db20f 97c8664b-a3f9-41dc-8449-d517b4ff44de 89629e80-6823-43bf-b05e-38cfdfd14383 5bbb96c3-6190-4494-8d71-6283540c9efd 77d969c7-e05a-4564-a606-7e2202583908 48f26ab5-afb3-48f7-a4a7-e70ab98d187b 016311c2-d463-4d44-b44c-ebc1bf10e6e8 df0fd34e-183d-499c-bba9-3bb22d571d17 a75c8c99-93c7-417c-9790-de43ec1cf2cf 53d49731-1ff6-4337-a691-8b2d48904acc 2a8eb5cd-af94-476e-a982-d085ba6e2110 57ad2287-66b7-45ec-b9ab-812e9c0d5970 fc3625ff-d22d-4442-97c1-44f809b8258d 65e0822f-84bb-489e-acba-3a00abce6e4e 2fb25203-4cc6-4ca4-b64f-ca0aa6046c2b 76ae2c47-f117-4e58-94a4-44b847d6e927 b9e5903b-2b71-4deb-8d40-5ca73be81d64 bd47b9ee-52bd-4db4-8d88-3bee45470edd ff443e68-cad5-4ce5-b5cf-5a9481ffa168 c241958a-ad2e-4040-b3af-424ee2c973cf a457649f-eb59-431b-90a8-63546f96c62f 42a7485b-52b0-418f-999b-40b8fd8168bf f3810811-d462-4793-9544-e488c85e02dd 5336844d-18d2-4a65-8e07-5e83a69eb39e 0a35d8b5-5cbd-4bdc-b151-1fc371dc03f5 3ad0ff14-3a5f-41a3-98b4-1fe4a8d96352 e50d2fdf-fe55-4f88-95a2-42097528e980 c1c7bdd5-b20b-446d-9129-5a13d1ea0c14 e2f9b88a-e490-4426-a4ab-10bd55c87f2f 51a94113-7ad3-402f-a35a-62e851419fa6 a9e4e42e-2a17-422e-a131-86dcad9aad06 f8bd6d52-1220-445f-b84c-cdc3e211e1be bf78f0f8-cd1b-48e0-8341-7d7e9cc5bddb da526018-badb-46eb-878f-cff49533f65d cc528f95-c7fb-4a3e-80a7-cbe430956380 04152bec-b75d-4acd-9770-5d1c6be3627e 3a97a307-38a4-4b88-9236-7505a9783af4 7d48609c-cb40-43f7-8455-afc3282ce3e0 4c11a6ae-c0cc-44fa-ad21-9b5b0efb1df5 b416670a-02e9-462f-9520-6321bfd9a2d4 829fc51e-3d41-4dfb-890a-2125301e1bd9 ce970cc3-ef56-47c7-8a73-de63b512e49e 08d65780-07ad-49dd-9eee-ff51ca7cd5d3 2d789997-9653-4b88-9cf0-efd691e05471 90f8bfc1-31da-4494-a875-2f954c342e15 c7e6bdd8-5b0d-47ce-9121-f6c063e84eeb 8e50cf36-d875-49cb-b3a7-8f6655e11151 75e2b736-ca29-46e3-8ed9-4720aa026989 966aae50-de17-459b-9311-2156f75ee5bc ae49a75a-a8c0-4bbd-b48e-dbf17853a1b8 c5d91778-3103-4a6f-9d59-44c807151f16 b2e8221c-5231-4ce8-bd10-f8d0fcf3ea30 cea6b55a-9db8-41d0-90f4-68f47f91333d b86b684c-f243-40ee-9073-17650424002b bdeb0cc7-a1e9-4cd1-8dab-b698d95406a3 78b57f5b-0967-4e7d-86d9-1e459dc2057e 5f1142f9-d586-44c2-a28f-8c8a9e32e55b 1f39a85f-6582-45d3-8227-172029d0e12a ebf5504d-3a8e-43c2-8263-931869afa1f2 ecf0d1c6-d23a-44bd-983c-3c1007743d6f 8653275f-5245-428c-bdc6-bd7a111846d4 70208ff9-a8b9-4d82-9335-102f81c26dcf 01f729ee-babd-4cda-8ef7-8c0ddcf90320 5bd3abe2-fc76-48dd-ac49-3b11f0a8974c a128eeb6-d776-4e97-8167-825005856fa7 a2d9e94a-1ed9-4ead-b7a1-fb2da2efa320 bbb4d135-3756-4fd6-a832-40bb26048988 325906cc-ea78-41f1-a474-9de4599d5297 d05f9ba7-e9df-41f6-aff0-b15342748931 6dce52f0-2cde-4ce6-9500-4b0e0147c646 cddfde38-6351-472d-a95a-0c60183913b5 089097c3-38dd-471a-8dfd-7ebbc33b11b1 9b2592b2-748c-4c1f-a52d-ac3395f108ee 54439df5-26a8-4310-a74c-404de862731e 7c203cf9-7664-4f7b-9f22-a36ee84dd20c 241adbd6-25f6-4895-b087-8184fd25c658 17e5611c-a7b6-49e2-8e69-695833abe671 c4a36469-8f7f-478c-bcbb-0e8854da873d 609e6d5c-8406-4160-97e7-fca64c3bf2cf a48d87c0-8dd5-4d49-a89c-1edd7001e7a5 c2d61486-236e-45d5-bf1a-f30ee0ddbb0c 9486353a-31a8-412e-b46d-da10329aedc7 66f9259f-a2b1-45cb-ad8d-9f1e8306bb9b 510ebf08-bf75-482c-842f-3ca33b7ae809 124052f0-2770-4d9b-96aa-b4005bfc189c 29091448-eedc-494e-abfa-140c444819c5 a7adfbe2-0ccb-4113-96d9-336112130aaa 15ee12fc-66b2-4e3c-9e01-516a61dfc196 2941333d-e1c9-46c6-b626-ea02dfa4f6e3 0ea7bc4d-9982-4f47-9593-7b7eb641e962 ad35acd6-6cac-43d4-9915-289f4ec2f834 2291d044-daf6-49fd-acc3-183411de02a3 3c518fb8-c015-485e-ba3f-fe1e65de38d9 6231c82d-2680-4141-b026-3c53b7c49452 abeee166-cb48-4e24-9c36-977bace0d901 1e0233dc-b1c8-4eeb-bc0f-1507f7485fce f223dd32-7586-4e29-b473-2c488ded02df 7395069e-114f-4c20-b5a8-c778c91fc0a1 2d661f05-f3de-4c4d-bb69-6decf8f1f38b 639bbe7f-5bf2-4509-bb3c-19eacf7218c3 52429222-6abc-424e-86af-30e81abb34fe 0c5f75b9-4dfd-4dc1-b0ab-340fa2f9cc57 e77af498-405e-43a4-b22c-2385efd67fb4 750b2b53-8957-4cd1-91c6-a15228cc80b5 c35b0886-7d36-4992-8819-619fe9d57b45 1a408e71-3997-43a8-bcda-2957e3a7dd9a 453a8a08-6cca-41cf-8df4-bcc6a387e60e 05579d0b-eb1c-4990-8550-7b2bacf8d6d8 c1eedd48-a0a6-41de-b715-b4b430dd368e 1f996514-9891-4982-b6da-b3e7c4581b6d 24256284-5455-48fb-afbf-823990ad0638 56b3b1e1-44ea-45b7-bd01-4dea72a8cdd9 9dc3c82f-2c07-47d5-9885-4148643add07 aa60e3b4-3ec7-49eb-8358-5e94731b99e9 439fb5c8-3e31-4fdc-99cb-ad54c8d24cc2 8bffa15e-eb3d-4f1f-809a-3b94380f9cb5 5660e266-63b0-4aad-8cd3-6fe09153ddfb 5800e51b-70fb-4d73-b559-4fac3004ad37 b406f548-fc67-495f-a5b5-c00173c88af8 6c9b3694-d36c-4e05-b0a7-10145e4cac33 dd49a5de-fac9-4e5e-8370-a6cad24bd7b8 b3042f31-dd9a-41a7-bef7-a9cd1fef1429 5a10e43e-0289-4d37-ab47-35b842231420 085b8ec0-71ae-4778-a147-8b37c973b73d 110eb054-0bd5-41d3-9dc5-eebc9237fea3 bfc89cea-b01e-4676-a5ca-c4e8a876d8e4 363f7581-6aa4-4182-90a6-9af7a5909a11 f60a92fd-572d-40c6-8593-8b5952de6535 a3de6d10-9ecf-406c-a402-3ea9a4e9d7e4 7d231e65-6bcb-428d-aef9-f0b64bfcf205 38faaa12-d3f6-4592-8bca-7966786479a0 fff87900-062f-4e6d-a8ad-741601c02983 8ab0173b-6f80-42f6-9914-642a533692a2 9fe76c08-979d-4e67-98dd-b9b1dabdf05b e164e631-c271-4a25-b08c-7d5772d4fd7a 8ef1f580-98e6-4265-ba20-870bed7a9d6f 04b155c5-75c0-4739-a7b1-82118723a71a 8d5bf289-d936-47a4-a8fb-416b47cab0c9 119b0785-7ad6-423e-b053-90fab5410314 27b3dc7d-a1ca-4fdb-96a5-9c53b6225ae0 c2a31309-d9b8-4d08-946b-6c90d58a0e93 d2fde784-d190-4f6e-bfbc-52beeae76378 b80b6955-de6a-43ad-bbce-c397b1b29b29 8472c2a2-e5d2-468c-a706-826a3a502988 7835a08f-f6e2-4009-92ce-8416385baa8e 279c8f17-1bd4-4073-9dba-45b1de53a880 e4453ea9-1b29-499a-918d-03a8269dab5c cb84602f-34a4-4f16-849e-b094f3bac2cb 65aa4c01-8974-49d1-ab9c-75b0c906ad9d e98c0e92-0fd2-4dbf-ae47-b6d4a9cc5fdf 6b2ed70e-1e3e-4193-9282-a1608bb48cf4 551c2c92-3e05-406d-979d-0a104e4c69a0 1ab66ad7-ea05-4cd5-812e-2824339d52d0 72ea0784-5d68-46e6-98aa-efd75976a939 75d81f20-fb3c-40ce-adbf-3ed02e300035 cd452908-5530-4321-abec-702f9f5d907c 5c0863fc-b9f9-436c-b5ea-6fac328b146f 241e11cb-c8a0-4bc8-a349-e9f5a061664d 2b65cdd8-3b15-4d5a-9478-f835c5f970aa 8ffb4c99-6bab-4e79-93c5-19769d044565 71175601-e460-4c96-a453-e3ed9e0c2b91 18f30fc3-7052-46bc-b914-49648d4e2096 cf5034f0-5c8e-44bb-83e8-96d8f7ba6866 f2d83801-54be-496b-8fae-3143ebc1488a 8257d05b-3cda-445d-a839-97915cccf510 6cd999b7-0935-4535-8b41-208b2888f3af c28e4761-93da-4220-8d19-1a4e20328e2c 6c333f91-42ba-4eea-bdbf-9260def47d92 0e159291-9797-426e-84bd-bb20c455cd2c a183ca58-0148-4f09-8226-826a7ccc72a9 866da51b-d2a1-48c7-9058-b3001593dec9 7e57c3d2-fd08-4e12-ba26-e573f92b14e7 f7f29109-b905-44cb-9591-215fce8840ab 78b6b4a3-5dcd-4b1c-a576-0bda87d05039 fd2a9d83-a73e-4ef2-9050-2acb9ae62eb8 e44c3cd4-8ed2-4664-8e63-99b047eed3ae 63716f57-3e5f-4a6a-9160-fabb4d3aab43 1ac1c1f6-a8a3-4fe3-9259-9d1e7a641b58 db5473b8-d05c-4f26-ba1f-06ef1844defd 2b99147a-20c2-4f21-9718-e6921c510b25 c23799f8-6688-4402-9b7c-db07b9891bf1 5137dcf1-acb8-4774-8c73-3ac287dc0596 087275e0-606e-4fcc-9d62-124cfc39897b 0323ab62-ad26-4e36-8243-c3dd2b9c6f41 328dc291-ba6f-4d79-976b-9ba0a7acc3a5 86bc7591-27f6-4c86-a759-c4e4d2643543 5ce49f91-41f7-45e7-863b-bb1aeef17d96 5e11630f-992d-440f-8cb2-2a85d0f00fe8 57cc4e37-a8b4-4cb8-a804-f5e09304fbe6 69a0a72c-95a3-4d68-8bff-63644d48e4bf 0d4f98ab-5578-4704-aede-7c8f6a010d19 ba62ce9b-9722-4e51-b05c-de95bce1c546 a3a98e8e-b4fb-4ba2-845d-3fd7494e56cb a99d9d2b-60dc-4800-a80b-2610be321da7 19789092-9a37-4ce1-9ed1-de02efa230a8 08631208-8c7a-44c1-835e-478895e27f91 bb977ceb-5ed6-4ddb-ab4d-ea8b88a943d9 faaa2ede-58fb-46e4-a829-4bb98df8ade6 7aa4bad1-4415-4bc8-86f0-87940649d1ce bb900f41-8494-4622-b160-4deb697bad4c 77ce3e4f-5c1a-425a-9177-c7644af933c6 ac384ae0-d96f-4956-9c8e-54f5b930b6cc 2fd30496-292c-4558-ad55-ed9d1b5aeb72 3de3236d-3a9a-48f6-8fd1-93d1a4c536ab 9bdf99d9-67b2-4c83-82aa-e3ce3143ed74 07f504ef-7364-421e-8953-874880554d17 4884d623-fc05-426a-9883-9a7159a516f5 6555a873-ea7e-4623-b53d-59264fff6740 ce6b428c-34e7-435a-a216-bc56af70ec4e af5cb48f-2e4f-4b80-98bc-41a659038cc4 d6d4adca-998f-47d7-a022-dae00fc668ed fc4416b4-fccf-4e50-8a96-99b6244c575a 6574a933-92ff-4644-9926-cefe06375db2 63dd9dfd-76fc-4ad7-8272-c44edad714de 64513474-a57c-4907-ab68-ffdab398b2c7 0ecb3370-b8cb-4759-ade9-c067d5f4f502 098daaf6-3d08-46d2-8067-465c3a19015f fe73fd4d-c2ef-447b-8d33-ed4f2d46d3d3 f792b23d-e45d-4fe6-9581-c1a3d03adb17 aa22ac82-3f1e-4af4-87fe-ca6574a902c1 f5ee307c-1617-4da7-a247-d3bd9265d581 7dbdf1e7-e7c9-4041-9c82-99e1559e5aaf 5fc0f074-0d76-4ddb-a450-e050faa18f42 20eb9b59-c282-4d8f-b992-6d2ab27bb74d 4c14d2bd-1015-4c71-94ff-d260d4e26461 0911130e-85c3-4fbb-b7f2-7768a9ac22a6 5166656e-4beb-4133-a3d3-9c4497ca8c31 1f9d8177-751a-4462-b8e5-af9c3546f1fa 7a25dbb6-eae9-4246-9046-3aad0b5cd96b a96098cb-4ad8-4342-bfe9-7db7b578cab1 0e4e2897-0b58-4d21-b6f6-e6bae8abc3cc 12cc884e-d288-4a3f-97fe-37258e8c088a 32d0a708-ba65-4875-a29f-b4f20bdc4c0f 09af911e-0e47-4b0b-8d21-ee66176b0612 78e41035-b7e4-4136-a829-a5da10102674 916448d5-0da2-467b-ae9d-7aea76a79716 c410fa72-3194-4f46-835e-5c9c25c28305 7a7afc74-d6c7-409f-9279-6e448f18c6f6 db0c9eb5-f0ff-45ee-b8f8-dd189c327c38 c8496849-14c3-4de3-9547-c3937c641c8d f93cd112-dde1-4cd7-8d13-bb35a631a0d5 77aac12b-92b3-4906-905a-b3efc8a1acc8 174c65d0-1bf2-4920-af61-eaa4be405ea7 75ae5fa0-b81e-4813-b460-66eadd884d2d 9e14d467-3f2f-42ee-88f8-3f37df0cecd7 cc70111f-3835-427f-bb41-9c40a8298822 588f476e-7108-4e8c-a491-ff54bde93052 b27b1d07-aee7-4410-a49b-c51943158d6a b36f1d5f-3b10-4825-acd2-6f9c1e168435 0ebd53e8-491d-4e1a-aa0a-36aadc8a60ef 1c44da30-6781-4bd1-8235-e50eef84437b e801eb19-8a9c-4d30-89f0-08849d966145 f0dc4d61-e99d-4f88-a726-79085411844d f1a2835c-d114-49a7-a94f-7d3fb0cb5e2c caf5eb23-c9dc-43e5-b7ce-c4f81d3e8df9 57f8c2d6-eed7-45d9-a387-15b3c6cf9fe0 15623864-681a-4199-ac53-7aa0b232a1e3 cdbd9b49-0dd9-4a42-8e00-6b3dc95821e1 149f91a8-5ddf-4a5d-9dca-16380b9540b9 b51a7805-775a-4d5c-8eff-1243c4daeefe f817baa7-5799-41e1-ac0e-869e9cc29ba2 89b27ada-6245-4de2-a150-72d0f6d58794 b45d2ec5-6d11-402c-8de3-3d8fc8e35c86 d3878660-be11-4049-9c12-bc34fc6a4cb9 4812d625-93f2-4cd9-8200-576eaf162018 307b5998-09ee-411a-92f0-88017c556d1d 69d79a15-60a0-485b-a653-2afcf04f650c e8d37a66-f140-4f4d-8b33-1fbf9885b816 00ac9503-2fbe-4839-a8af-77f792376662 253db64e-ed07-4c6d-8463-81e6cfa9ddc4 2c1b8b1a-61e5-4db5-8efc-6684ffcb2e78 e33d1572-3fea-440a-835a-61c4b5d44798 5b855627-794f-452c-9ac3-b0ef67b22010 b674f439-aff2-4c26-aea3-b5b1899d8977 d77061e6-f08f-4018-b568-575544d4c455 855417e4-9512-43a2-80b3-6ac651c3ea56 de00b9be-5e68-45f2-841d-b6c83addb793 353f6912-5273-4f6d-b7c0-70a6f2351805 2c06926d-1f31-40a4-8e38-52badc1784b5 39392f0f-55d8-4320-b4a5-8b911a7f8e34 05631574-9e1c-461f-9a45-d0975fee6a78 9e9ba177-4cf0-4b50-bb69-3bab271e64bf 49ac1547-f3c1-458b-8db8-0add94cc00f2 7670ac85-82d1-4d61-8487-6bf11178f8a5 f84509a1-815a-43ed-a88a-c98b1057f93f e606423a-5d5f-4b25-b514-93006529f936 485d1b59-77a8-475a-bfc2-c423289e162b 9d1dcd34-d1a6-4653-b457-d152be93cad1 962287ce-fd2f-4922-bc22-c633bb45bff7 e95afbdf-8c5c-4ec7-a978-b5e4e8798d95 6c483b35-f89b-4135-86f7-38378f4a9b6c 71725fde-90eb-4d7c-9231-eea59288689b 1ee95611-0686-4522-aa04-00b44df83584 279010f3-c558-491b-81a0-bd81033f9af5 06a43477-ce57-45a5-9e03-03a11b0581fb 63fa9fcf-a869-410e-9ccc-ab929ab80f38 2fb4993d-e096-4a7b-80f7-7caf67aa7091 2ac4737c-1977-4283-aeb9-f8f5c4f36f2e 74d3f017-fd5a-4153-821d-01b337489bbc 885be00a-35ee-4ec3-89c7-24938c96f286 132c1321-255b-4c66-9949-7bbe1e70b082 90e6964e-da7b-4d46-95d2-060a19cd5631 c195e4e1-3bce-4fa9-8a38-ea2b56efe816 74022302-3db0-4ed8-9ed9-a246aae3a081 32978257-ca24-4cdb-89db-25d6e16ca75c 4e215f90-ea8e-4fc3-9d3c-43701c2347fb 9cd079a4-ea64-49ee-ad6d-8a81be900044 58e30767-0324-4b63-94e8-0dddface2d7b 6bf52d9d-e048-4beb-b0e6-3588438453fb 71053864-7dec-482c-9f83-858de914c0ff e7c56b06-d6b8-46b4-819e-83ebc1103a8b 310c0a42-f4f8-4d4c-994b-73b986d49124 c1ab0af2-9c50-4b69-8836-2a48d1147e43 8e028af5-c076-41a7-8a98-062b3167c311 47969bc6-4876-46a9-ac63-6c287d5386bb 4be315b4-fc62-49a8-9ab1-88bef078727b 3d6fe1e5-de9c-4348-9312-73c7ba0764cf 3a8e96b4-0b28-4030-9ea1-7af30fa0ab1e 8a4ba671-91b3-4a88-abd0-ce709b6891b9 93607b41-4c96-453c-ab22-f4f528eec3cf 634835c5-e6f3-4e2a-a492-0ad05007a447 3d51d57e-3ab3-4f96-8981-8072e59c53d5 83efbb58-0113-4ec5-b91d-5f759c8bbb9c 6f797b07-65f3-44db-b9d1-83dba5f9e22e 0e62d897-7c31-42e9-8918-e05b61fa757f fcd16c6e-6430-4532-b1d9-c1b5050f4661 0c21259f-4043-4c78-aedb-b8720967e1c0 4611b409-b293-45c3-a293-0aad8338eb36 bfa1d824-de9e-49d5-97af-34e15e38ec70 0d191293-b951-4314-a705-6a8d0e012005 0d816ad6-7f8f-4228-9e40-6831ac782ad0 485a068c-7d35-4f5d-887a-a5bcc345d12d ec4157ae-324a-49c8-887c-27b588ff7ed5 d6f718b8-ddd7-4ae1-91f9-79b9d3515506 5948e985-d350-4fb1-ac3e-d48a5c8f926d 3f112e23-f9b5-463d-a6f3-dbc369943dd2 831128c5-81f5-4a9c-acb7-e3542f018236 a838aa76-402f-4ca2-a46f-177642af5681 e7504b31-7d48-43bd-a4f5-2a24e415fc3a 28191972-fbc6-4b92-974a-f523f69e1d2e 96ff8036-1176-4aa2-a8a5-6339d77e8a02 09a55135-9e99-468f-9e7d-30b0c8eba130 2e557a54-c6c0-4323-a6e7-22fcd8afbd97 5d76d547-d8d8-49a0-b1fe-6aad9b855384 88a24144-79e7-4181-981e-d451d3316421 340d8d50-12f9-4ef7-8431-99c7933b1e54 027d1ae4-a9c3-4426-97ed-240489489328 0a9427aa-7012-465d-b83f-1f2a9fef337d 9705fcbb-b9a1-4fe3-800f-e6076574a46f 93225e89-998a-4d9e-a38e-aa201c7ca07c e0b9e9d4-e521-4e5c-a14d-d9e02142dffc 602ef7df-4739-4cec-9fa8-4a309c6abbed 5fe7a024-cb96-419a-a661-7eeb37a1d94d 14c75d35-ca18-425d-b618-8e6f71056961 019b8291-d597-4261-84fa-0c1f9e0b8a4c 4a168df8-6b62-4d48-b5a1-e06f0c0afd06 fa45e8aa-2ef9-4e21-aa06-3aa35a88dc07 f65499eb-097a-43e0-b822-2ce6597c801c 0dceb5f2-cc08-4407-8e2c-a51ddd9f6155 1f3d8cf0-9846-4fd9-a1b0-38b9f1943b22 d60e4486-5ed0-40a3-b987-f435b0340c62 e7f3bdf4-da9e-4af6-b445-37c70b78415c fb863ab7-ec5f-4dc0-886c-9a897a501e29 897c7798-83ef-4765-b8d5-41a58a035235 86724968-a7d7-45e8-a1d0-efc8c6e66016 d4a9c426-5fa6-47c0-b5c8-ea901c5fed48 66b01832-6b3a-46c6-ae5b-e6208df7bb07 bbcf3ca2-f30d-489e-9923-31693f9e2e4d b27f9bcd-1508-458c-ad50-1e0a427fa2d6 a56ae8b1-55b2-483d-9fc0-5ab6e1120039 7e55cd5b-5549-4366-8a8d-0a0968016d58 0310cce9-75f4-40c2-9708-5c75ebd8e05a 97817a5e-1853-475f-8d8f-59d926b49e2a 6b3c6050-0528-4172-a348-afe42456f865 e939b30f-72f8-4ae9-8ba9-97d81245d2af 75ceda6a-8bd9-4869-9bfa-a704de0c3b3c 0a0feacc-3528-471b-a594-5417ed0856f7 ed0f91c1-c513-431a-b6a5-a3c080587935 f01eccd8-5cd5-4a2e-b901-6b188f64f5ce c3e1d1eb-def2-45eb-990b-212d5ffcf9a8 13731957-7e1b-4a70-93f0-64628bf24bdb ecc7681a-c0bc-4525-95c1-39f413e0ea9c 6acd23db-a338-4851-9d14-8afb29bde80a a0971ce9-8ae6-4d46-a58b-7392da6fbf9f da5a3ca9-a0c0-4957-99aa-88e55d4c86bf f66f6d2d-1ede-42e6-af2b-807f29880bd7 77ec7ef9-555d-4bb9-9246-41ef9d7e3528 34d85d61-b7d6-4124-8d1c-2fd10df9fbb1 ebc36327-f144-4886-80ca-dff15d6314d7 b7563f0b-e520-4bfa-80d4-8001de87dbe3 943ef0b0-4644-49d1-8731-2eaf974ec9dd c0a3732d-cc8e-434a-aca3-cf3b6f072b04 1a5a662d-4bd3-4f6d-a5ea-a90a237896d4 4adf0c20-3178-43b6-b6c5-d5a1d7e7f5ae ffcccb25-a7a0-44c5-ae8d-40a32f4b9f59 dfe174fa-d9b6-4904-9743-4b9845f54379 8d9d7227-2515-4093-b238-90a6d24244ca 366bf95a-a0c0-4b5e-9887-c60f4ddbd3f0 c5309007-09a0-4478-a77a-541714ff005e 96b59797-697c-4472-8e05-d8bdd5954592 936e3a4b-5095-4468-af2b-0129ff125864 c89a9a2b-f786-495a-a0cd-6c7a3de9e864 5b479d63-e660-48c2-b86f-f4cc644bfb4c 0ccc97b2-f3ef-4d83-b4ae-331fe9f6cd06 5799a64b-1fc5-4fa9-8836-536a43a64552 5e6ce5d1-3988-49d9-9718-dfa97eb05359 90b1b0aa-8db3-47b6-b430-c8603518a50f 29334feb-791d-47f1-b539-32ed2f4a0dfc c5932573-00b5-412d-b8c7-26bee07f4ec6 56e64ea7-2462-4a9a-9729-d940a875681a e8377ab0-ce2a-4625-83a0-7169a99984e9 fbacecd7-d092-4670-810f-8e3a58f85fbc 2a152d57-d172-4c17-a38a-5fdaeee5640c b6c5a3c3-eb62-4e0c-a01f-1bed6b087c05 e95f2114-2b51-4324-b572-2f6616b8571a d6d065a9-57c8-4d9d-a247-93266826965e 8c88080f-89eb-4126-8e8e-5308298d9cdb cfbc7036-c3ea-4e66-ae70-75f45d9b0714 450f7049-5f04-4b90-8207-adca9e1b2d95 64f41beb-754f-49e4-ba75-15ae8ac77688 4df1f431-858c-42d4-9dae-dc99c95c9bad 462e7ec2-cb29-443c-baa5-5ed8944ef86f 3764a180-6fb6-4c63-a9ba-fc67528650af 1af18151-60e5-42a6-8031-8bf1ac3ede5f 01174a95-5432-4300-afba-01f8c6159fb1 6eb0b6e6-25e0-466b-919d-c621e2004636 8759267f-d3bd-4ffa-a1d4-b1110a5dedcc 7ace1628-d952-443b-aebe-82cc74aafecf f417867a-14ec-4cb8-ac13-856b545b1582 7345a503-4c37-43a7-914d-327f7270b5dd bb7867e9-bd37-4cdc-b123-cb2db0c2dd33 4a699887-8a72-4078-9cb2-3aabaab3f3a7 3f3865db-5c4d-4732-a2c1-81f3c2b98844 db68d4d9-4b22-4cd3-845d-10c1a06d755b 0737e7d7-2d9e-407b-958b-1e2ae83e7481 2509ea78-8f92-4f93-9b32-1e1b17e1151e 70b9d4cd-665b-4670-a0f9-64c0e1c12135 011612e6-7f32-448c-91e7-9dc75a01589c eeb29cc0-0434-4075-8c43-2bbacb8a81b5 36e6b38c-bd96-42fb-9bb4-b57cce66adf6 c265c6c1-c9cb-4a7b-b51a-b213b3c5d65b 612d3c7a-9bc5-4c11-8b16-e1a4a5569fe7 ac0904ab-0a0b-46bf-a023-5953f8cdfa51 283959da-17fd-4a99-83b8-7077b52d2495 a070478d-60af-4d0e-b77c-7100122da0b5 79fd6643-55f0-449e-aace-655810e89fae 6d72f8bd-36ea-4d6a-8002-13479226c6e5 a03b6497-b475-4974-a223-23a15abf05dd 3786d1ed-a44b-41d0-ac86-69ad81eb715f eda1fa60-0d21-48ca-8f62-46599c31daa1 8806181f-4061-466b-b980-2abe2c7a4fb8 f3352db7-1468-4539-afe3-22b99d1eb075 4ec97989-cec5-4706-9d52-d6a0c208a374 0ad4e979-0ccf-485f-97e8-65fb6267caae b44004ea-1333-45f1-875a-4e15ae3de737 5466eee4-da77-4486-8152-6e673011aff4 fc98cf5c-bce8-4617-8d6d-c36800fa2654 f86060b8-c87c-4e07-ba25-09d4d12a0cfb 7d4aea14-f6b0-48bb-be6c-9f81fe358a99 536e7649-5750-4425-8690-2864bfb570f7 b48918f6-8164-4faf-bd7a-8ca9cd13cfda c46f71ab-d64d-448e-bb2f-30204f66c640 83ca23d2-a413-4e04-9faf-6f84d56c9867 cab4935e-0fab-439e-8a43-5749319b7c4c 54ba69b0-c006-4ec9-9b98-fa4842317a04 b5a6ed84-6ec2-46ba-9656-77b2443a0205 50e59d77-9fb0-4c9b-a3b0-64f0b71d2cc6 7c63e7eb-3bd9-417e-ac2f-ea41da54d06a 532a6bcd-5626-4a3c-8f3c-0cafe56c00f0 84b095eb-b61c-4511-bf6d-16c4bb5f69bf f18ae86a-8f7a-444f-890e-f10dea3c0625 c1f0f048-4116-4d87-861a-4468db0de6dc 05d7bf5e-eaaa-4df4-9fef-5cdc7b787b8f 656e95b7-13af-40bb-90a4-f42b3c9015ac 22ace0b3-b911-49eb-a93a-684967ec0923 5258a767-62bb-4ee9-858b-d0ec58216055 84201cf1-ad78-472d-bc89-d396d4e4e9e8 25f8b6c1-08cb-4737-928b-66653366b9d0 f34a5787-ec46-43fd-ad6e-f48b41ee8e1a 14848ca0-06f7-498d-94c7-47ea743e6d9c 0e01f4e7-00d0-4425-860d-a23d7272dbad 888440e5-dffe-432d-83b3-29bb761701e9 e01834cb-31f5-41f5-92eb-3af92aef0ce0 51a39bf2-7d0b-4219-a1ff-9b8214c133d0 3d55778f-bf16-420e-9dde-ee48b14ba87b 5c281ac3-35a5-48aa-9258-c6a1220ccfd5 16d3e851-2cc4-4e61-a35b-d17b5391aa87 c57833c0-736c-4e66-8685-652deaa1fe5e 9f4cec35-cbb5-448f-b57d-075f37a6a987 791c3119-2594-41a4-8c52-e5728742a55c e90d3c32-b707-4e2e-ae9b-7233140676bc 789cff8d-235b-4470-9ebd-7ef17ac15f12 eb61ec44-1af8-4622-b4ad-98f13f0c1e49 d0323881-06c8-4c9f-b460-07738c0ad9d9 80901a71-60f1-4964-a7f0-8398a8f7d097 f58fb66f-0f42-4db3-8f09-ebcd612dc075 2ebc1c50-82ef-4964-b8c2-0b676b300e11 9c9a8a96-48b6-487f-bfab-1b389dc62fa8 68cc85fe-c702-4b93-9bbb-7f404c411d4c 2f2f6d5a-5ca3-4014-8cc3-80b680bfcd07 b54ff2a4-67a5-4d00-b205-b257aabc5daa 15f63721-eaa3-4a35-a859-99abd2e073b9 e6499c9e-c369-41cc-947a-33a9c72c01e2 1a98f2a7-06fe-4b54-bbac-3eeb2bf97f45 29f46b67-07aa-4397-aab6-4d0d14507a16 9326c0ed-2243-48ec-9229-9d83e1391a76 4cdac920-100c-43e8-ae98-c6a2c3775cf7 1aa0de93-4636-4c89-95f1-eee3160a13f9 3564bc57-9242-4dd8-a3d5-21f17758c976 6a7e177b-ec38-4eb4-9bfd-a9d1e19e5e86 f41c7724-9755-45f2-9e4e-0329aee37aa3 f95fd754-5c65-4654-bfb0-f38e4e05e755 5a9f6aef-8466-42ea-8087-1b3becd18e29 2bf6a809-41a2-4afe-a491-12566da548f1 baec2e96-2fbf-46c3-b0c6-c5c317e52f37 d6e602a3-1e51-4520-a335-4588ae5ceef0 09223a18-eeac-4d98-80d6-9c87f12047e5 fabdb606-96d1-43b6-bb96-a70804faeabf 23eb2c9a-d50c-4fff-8b40-4bc30cbde373 018aa73a-fe2a-4b60-9eed-dda3b7e5aab8 07a1f36c-191c-413b-800b-c5aed685be39 46003c3b-980a-4261-a194-814f0e7a189b 63a38efe-7d6e-4656-80de-e9963bee4522 e39f8cf3-e72b-42ba-9b4f-5dc606595f99 2dd27d32-b5a3-423b-8917-958d3fedac1b 853688ef-4a2a-414a-a7bf-bc99389fc38e f8fdedb7-48da-43fd-8fc8-67739263a7d7 60b340cd-1456-47f3-b038-ad244252de3d c64cc0f4-e48e-4e0c-ad06-962c05546075 cbb2e891-6b61-4e8c-9693-804bcc18e5c7 56d5c9fa-9728-4f3d-b456-f08c93b4b397 e2f51b6d-5c37-478c-a6da-d6e560624ca5 9d10a62b-aaa3-4191-9df3-cb971289897e c83062ed-b38f-4660-bb99-9b2970fcf335 0a6a80e0-d746-4772-9930-4ffa0a05623f fe5889c6-182e-4ff0-b436-6d4b39137fdf dfcdf2f0-cb09-4f9c-a58b-b0224908cb4b 9ea918d0-96b9-437b-b258-9cff0360fe51 8b778ccf-5af7-42b3-a1fd-db57f086ab76 badc45de-ee10-4a08-9d5c-bec82784e84b 99872637-bddb-4840-a8fe-06f8c4b331c7 673b2bcb-7fc5-49de-88bd-8562e26b54a8 c00917a5-8b0b-410e-853d-4fde6bb1825f c7b6fae8-7c17-41e7-b080-8b1be9c34548 c9136c8e-8efb-49cd-89b0-1931a9f33129 b0d351e7-0b0c-4488-b910-49df36b9f141 3c616e24-4d61-4af4-9996-d6dbbfcc68d0 8541f37d-e9b9-48cd-aa04-a3481ec10d10 eb28062a-667d-4c71-8f93-cf8443419764 7b0ae200-c7fd-4d92-b178-599385180727 0baa9c0d-1f49-4fac-86ae-28e9899eacc8 9045d193-8831-404a-af23-b1f549303848 0e1c47b9-1ddd-4faf-bb11-98a85510259b c260fb5c-8004-4418-b8df-c9820c79acf1 f3a267e6-08a4-4298-aba2-0f12d483ec4b 235f4317-12d7-4026-88e9-7ee0eeee4ce9 945d2ade-506a-45a4-92ac-e59c558765ba 788f8717-b884-4656-a910-fe793f3cef28 1c7d33a0-f9d8-4bbb-84ff-79c0f8c681f5 81212d58-84f5-4189-80fd-567e0cac0bbe 7cbaa2f2-6835-4742-b8ff-b18ee957655e 02e225f4-8bd0-4228-b347-48f1db455939 f3f58a07-eba4-4d73-88d8-b003592f2164 9841585c-6562-400d-9581-4adfced2804d add4976d-7fc2-4d84-bc31-365e146a4640 0f412de5-f4a9-43b2-be61-f9f499b44fab 414bfc46-0692-4761-881b-1d25c88879ba d32252a8-7d5d-482d-b5f9-21681537ebb8 ef83d69e-a12d-4e8d-8768-c4f5d291db90 9c9963b2-2e92-4413-bdd4-270f4b76e503 89d32572-1eec-4b06-91c8-d3a072361d4e 15249ece-a557-4d52-a4ba-27ce44086034 13399cf6-cf78-4c2b-a602-b0af8b36468e 28e47dd7-9302-48a7-a4cc-d8d58998f632 dfd8dabb-7da6-4d9e-9139-5aa09eb40dd0 75679f8b-1744-4a47-bf45-5a4330fe4b17 4e1b960b-282e-4d78-8496-264ff87a024b fcb2c3b3-b006-4a6e-a127-bc48bd13da12 f926e0e1-cd18-4644-91f9-6f14099d8c7f e3dc2e99-19d4-43c1-bd37-eafc4a0e64f8 ff52517f-8634-46ee-a55a-823ed034fb1f 0a53d081-202e-4203-99f6-2f8d5c125223 93b4cc17-ba3d-45d3-8315-f88fd37143b4 1d79a0eb-fda1-48b6-9a6e-5d95d31ba896 80883247-c6b0-4691-8711-6f5795a7cb98 5d360d3f-50ea-45de-af3c-effe30b99a37 f643b5a9-dc46-4d3c-ac79-cb8a11252188 6153800f-03b2-4056-a861-7f7bbf956e0d fbff8818-977e-4ea8-9af1-5463552844cb 00cc9dd4-e139-44f1-8822-45d9fa27e7d9 1988baa9-0fe9-41b7-af6e-441c29577f13 590090f5-e606-47d6-953e-edb1b680d316 c4196e51-6561-47d8-b8f7-b46411c03a6d 9da6b63b-26ea-41c1-af64-ad68e1554721 3704bdcf-92ce-41b5-a230-080943d59f9a 15461e5d-1cee-4e44-a914-c9e2bb4832cc 73fa9a93-9b2f-4d20-9974-680189ff1ffe 8bdaee33-6212-42ea-a923-848e693a469b 9b268341-735b-43b3-b550-d320a7b6784a 221d507e-45c6-480b-b8f6-e3d205fa8b75 cf529fd9-46ac-4437-8016-b914b4fc3e39 e9c1461c-ff87-41de-b312-a14acccd7dec 95ace7b2-bde8-4d2b-9a64-a991a7f6c00d 04eec569-3c97-452a-8ed9-72becabf8088 ff650a0d-654f-4377-9bab-d1df9f053f49 24a6fd6c-28e8-47af-a5f0-edbed127a029 77153460-7311-440d-b799-ad9e56a3b722 13749464-9b38-4bb5-bc9c-708c6afb3530 9b4dd3de-ad8d-48a5-a0da-0681f3b6c6dc a4dfa564-b829-4425-bbb3-75b652729e4d 617021e2-5db9-4c6f-8443-a3103227cbf0 4151d6ca-351e-4702-a738-37845e85540a 39deb222-0561-4ff4-93ed-078cc0882956 e80cf9e0-d489-42b4-8ab9-bfef467ad8ac fc2760ec-8b9d-4691-af2a-30deaf655636 f5de3492-4a21-4df8-be21-6fc6c77becf9 ceabb3a5-ac67-49e9-8886-3599ddc24d74 32ad8110-1086-4edb-a0bf-9c04a3861056 2aa50ade-49a7-461f-97db-84172e55c7ff 2f32b158-c61b-4178-b020-50fda96990fc bb718fb5-9ba6-4ef2-89b0-88c5fb4ed27d bd8f344b-8ce8-4216-a7f2-e6199495e225 c1406c56-8d4e-40b0-8d42-6edc5260b8a2 248adbaf-8085-4141-93b7-88844f13276f dc2695bc-9d14-4d15-baa3-d1f286d4ce1c d5a6617e-58b8-4abb-a21c-c2bf65ece011 1cde273f-411e-4999-86f9-8c650932aa7f 7d7ba498-f59c-44e6-9347-6491bf049ac0 a767dfd7-d7c4-479a-8b32-8982b403cba6 d0361ae2-9d1a-48ea-be94-73158a1d55c4 65369c52-469d-4f07-a5dd-3ca88cd3f629 301137fd-da70-404b-833b-1d7251e51987 0f9c0978-38bc-4057-bc61-83e602dbae7e b022ea0e-dfff-4de0-b7df-816a30f4ecad 101fda71-792e-44f3-b55d-8948bb091f36 6b63a289-ddbd-46d0-af74-dceff79d5d41 f5859eee-2074-4fa8-beb1-61c3c1ae8004 18880ccb-dc4a-4989-a0d2-734db4dc543f 7ee9e740-398b-4e6c-a5c0-0a3133bf0e4e ae887f37-d27a-411e-bb63-279a86d65d05 a264c6d4-1900-4674-a42c-5c092acbf4f3 34d3f930-0894-4fde-9f88-279361975d23 0c929d32-5259-4d25-bc3c-378388bac1fa 29254e5c-91c9-46df-bd35-6d74ac5bd6e1 0bd9741b-ce77-4dd0-84b7-ae7a48f3afbd fd6998da-90e6-4a7e-9c89-7ccbe5385131 98f201c9-ff8e-4b4b-b085-86c709a0cf62 f318e917-250b-48bf-842b-46cf7515b387 61f061fd-9cd2-4962-a22f-482065f0f78d 627fd3ae-4fad-411b-9f10-192bf3da3481 ec5aef5e-c333-400b-8922-70a329c2d37c 142f69ea-0c10-4f9d-90c2-1fa99fa16ef2 d8164957-efcd-49e7-8482-f99b3de13a42 251405d0-464b-4db6-9453-ff89b65277fd 042131ca-bf24-4537-a78d-1a8d033d25a7 449b5ef3-8f88-4e05-af85-2df65dab6ca3 7b4d42f6-3ddf-4c3f-b150-0f18908ef7e7 227671c2-edeb-4b89-8144-450f25b2ae98 735ea304-6019-4b3d-b45d-d13105935124 816b1911-d481-44c6-a562-08f930a40eee 7c2dd453-8aea-4cdc-a9b5-34b067bedc30 da370c79-556b-4f7f-ba88-4094acf3c44e b8f9708b-e23f-459e-a38f-845750e25a16 f3002be8-1071-45fa-940c-e1f961a20b70 7e84a05e-a2bb-4e3d-b623-51ad677934e0 3359b9d8-70b7-4008-9271-75e8ca4a6ab3 8be63fa1-ffcd-4986-ae0a-1f83b7228c22 325821f9-ac9e-42d3-8825-110d7af8d466 2fe44e81-203b-4be9-9a5d-4894d7e32c7a 7f299480-c0c5-4091-99f8-3d3f4eb22335 297ad80f-09d0-4e67-ace2-ba071c042cbd 8dc34002-9c41-44be-8863-d7432e8184e5 2b8f8b65-7d13-4e53-9d9d-6c1bec87ffc8 4deed7c8-56c9-4a90-8ded-fa85146ac877 965077f5-b427-41c5-bb53-bbe57369a737 e17d4738-aacc-4826-b62d-9d03e528bcc4 af12ec2f-7f7d-4305-ac86-961e56d98740 398ffe0f-8de6-4d14-b00d-f34ecf415200 3077e849-7bdd-4819-8b98-7886e04c46f3 4b0444b0-3770-4eef-ad51-3da8ad13d354 e866e0e0-a22a-4eb7-915c-804edaab2eb2 c132f33a-9e1d-402c-80c4-b4d75fcc7c3a 1d809a80-4f1b-40f0-9acc-95d396ac6c4b 6031539e-1f37-4c6d-8975-b325ab7ace89 403ac6f6-9c3f-4b0f-bb71-76576a5ff3ef 138db111-18e6-48e1-91d2-0f2edee7e2cc ddf5db6f-d801-44ac-936e-dc93a4b70a74 c174ad4b-36c4-4ad7-ab30-d9c4b8f1313e a136ef65-2ef6-4efa-b9e1-5a6dbab4024c a67f5ae3-2a4b-47cb-8351-43744e11541e dadee246-2208-4304-b12e-d6c8c5108243 e507e950-2d4d-40f3-90b7-0500563a7f04 8b8221e6-8e02-4a95-9362-750b63d2f205 9bea5191-da2e-4637-b871-ecec2c207bfd a0695b2d-e23a-4a44-8722-98ff3d512445 f26a5b11-27e3-4a19-9d63-727d8c026372 af2e8811-b9e2-4bf4-9795-05dac90ccb5b 3fbabe35-f1b1-4769-96e9-6b04a4d62c2c cda843a6-e840-416d-bfe7-c17b60b090ad cb447871-4cd7-4b76-a652-d0fdac36d234 e39b56cd-9a99-4e02-8e01-fe90f5200d34 0673f4b2-18b0-42aa-83f4-8294f0ebdb26 28a343d8-f059-4fc2-ade0-142eb9b31f1a fc608098-90dc-49ae-a9a1-7de3c3719d7c d2b3bdc8-fac0-46c5-aef7-13fd7078a301 eb11c23c-f14a-4884-bcc2-7a2872f2261f 78d7442a-e60c-490f-a659-b79a53893fe4 60ee9736-e2a6-4470-9c3d-d585abd3f65c 78416a99-97a6-4cba-acb4-7bf78f5265cd 034e1f21-54d6-4fbe-ab00-aeed1b44c512 0d2d432b-1962-4352-afa5-55769de5d5a9 43dd847d-9e16-462c-aa00-14c12e452c76 83579adc-daae-4261-bc79-506e6c256ee0 16416e7b-1620-4abe-ac5f-18a6f26a6ed8 1107f7da-274f-486e-9a1e-3976dc31af25 3e0da13c-1a8d-4deb-91a5-9105b1166971 54807de5-6310-4180-a97b-8a65bcf8d237 bc0016b0-cced-4840-af20-5952ea418630 883a4d6e-7428-400a-8ec5-7af1fed9302d 18ba1fed-561f-4678-8230-20413e142f6a 2ac1a93b-0c77-4005-bd7b-47cced1e29a0 756f7e64-0285-4399-939c-8e8afaf67277 8e3a32f9-8252-4e5d-ab91-ecb0ec697b24 eab7d348-2bf6-4162-a98d-3272650719b8 fbe4d57a-e696-4a91-b64c-6649bd5ddcac bb9b80d6-f51f-4930-a22d-d0e8ade2080c b6d4adb8-e791-4879-adc8-f3be61d1b23d 1b251a0a-1e98-4011-88bd-695b67c6692d 218c84ab-f3be-4671-8118-db94031b2953 93f36107-7d79-4927-9e43-6699beb486ae ea82c603-626f-4064-a55b-ea0353027419 643eb15c-c96c-45c7-a027-e8ea350d239f d1d80094-ef62-4b54-b747-c6db0ed05227 b8302b76-3c46-4fbf-aaff-7cbd8bd7170f 12341648-2d59-45ad-8e01-6761a41b8432 489ba645-4209-423b-9ad3-323e8cdf343c 5b6cfbff-b5d1-4de4-8b71-29ab765054c6 d78a9e70-f674-4f19-8418-6a1f2a90e3c9 35eca9ce-77d1-49c4-aa0b-be11f7c7caba ce259368-45f3-4403-854c-bb5dfdaa41b5 883cb436-2fd2-4909-a75d-02250e25b61d a4225142-87d5-4178-8cd3-66ebfde2ddbc 32672497-ab55-4a80-a20d-960771a83ba1 8d837615-585f-4881-ba4b-a91f9536ffe6 41221bc8-6f5b-4213-ba84-06fd1d7a3d5b 65f02fe8-f98a-4497-8ff5-7fd2ed3423ac 48ed125b-7760-438d-9e57-72d1453aa363 648a669c-7766-4020-8ab9-fc51df79b828 29d0279e-dc9e-4dc3-a5c2-515d1841f4f9 1880e36d-bb01-49f4-bd64-13c8bcfda69d 5537d352-5e34-414c-b316-d6b26326e530 8253dc04-983a-4277-913d-24b567b7a38b bffc9b3d-8b46-4195-88eb-83cff532db1a 244ca46e-aa66-40d7-ad33-f780c20fa93f 8b791ae9-b184-4236-b109-3836c3f3ecfc e8d39ebd-b040-41f7-9a7f-d81a67b697e3 b6a09bcd-bafc-4255-9f7d-9b295e180f4f 4dc16514-c1f2-446e-8857-c0e973d49997 b375866a-cfc5-4b05-ba08-fa3f68998778 64a918bf-f052-4a1f-bbff-5181a37429d8 b2510dd3-dd2e-4154-9d0f-e057102007eb f10f9f04-2523-4c7e-a1bb-0c7d3a99b268 4c1dfa4f-5a02-4335-9fb4-975249572775 c5983092-d987-4861-bb03-ab8392c4a331 b8a7125d-97a1-47b7-81cf-453ed6908dd6 6c819fc0-60ca-40aa-b63d-bd7ac07ef4e7 5b86912f-3f91-428f-a453-a15427b121bb 4168d8f1-d046-421b-8986-ea43680d44f1 4a27bdbc-a103-4e55-8b31-c7f2249e5fc1 4d60a1e4-3e43-4561-b1d6-823ba82ae124 12b779d6-83ea-4c29-9429-5edd59ab8259 c5ea99a9-9d1f-41ad-98f4-e2501f74d388 ebe6cc09-e2ef-473e-b761-f1aec8b8c361 607eeae0-9bb4-48e7-bfab-9567b75f2b84 9b7f44ff-73dc-4173-a8b1-16345b5b9c5b ce85e60d-9afd-43ab-a8d1-aaddb086987c b35c0c2b-1396-4277-9d95-07840b3295cd 2ef0c709-8404-45a8-8161-e495d9934b72 83d47d15-3a55-41f9-8401-e0f6ff0b69fb c02c7cde-1e50-4b7b-b053-788cc2b409d3 6320b11b-5b01-48e0-8059-fed112dc8ed9 6c951a9f-2c6f-4e0b-80fa-240c72b48286 8a725482-8f4a-49dc-a631-6095120ec5a3 5b858931-9e03-43c1-b72a-34f57b89e479 54f593c4-3f30-4c8e-8320-23ccacbd2108 df60391c-9f8f-4956-84b8-0ae4ad5d5feb a02b28b0-d3ba-4eb6-b5ad-6853a4c7a5b9 1f734fcc-8166-4724-a8a3-05bce4b66e07 db6ee764-4613-4bf8-b35b-29cb2f04db5c 9626b8fd-af3d-4b8f-94aa-0542efc3d520 e29fd726-5cad-45af-bcef-865883509886 c86912fa-b66b-4d59-aaf2-930c37fbd2ae 75a89f82-ad0a-4d82-9a49-92beada2d508 04ae3979-b5ce-4b78-98f6-1c2cbe593ca5 f37f90fa-f410-4d28-919b-ac2ca365c46f e6f9b7cf-c3e6-49fa-9e32-301ee50881d0 7149761c-3939-4db8-9412-ccccfac7c3cd bc9908b1-ddaa-40c3-bd7c-d377c5369d6b 556725cd-f25d-4eef-92f9-ea63b7fd97cd fdb9eb85-ceda-4bfb-a965-1bcecbb05b67 d7096eb8-6623-4fb0-bf9f-c596ab723506 ba5c9deb-204b-4467-a1ee-744e9f6712c1 58a96c40-3369-4f94-be81-47ed2d301276 e2ad68f2-2569-490d-a651-d9f76554cadb b6128047-8e37-474f-b1bc-6408cbece910 e0f060bf-b6bd-43ac-85db-276f5e59b48c 83bd3f25-fe5d-4fd3-8410-056689cb2c8e 130058d9-8691-4549-b6d5-ec8ebaa2095c c58fa985-039a-4a82-ba3f-4b4a850030dd eefb4778-32f6-4c6d-b839-1060b323bf34 94a7259b-3531-4961-b95d-64b247193649 94f92d2f-4b35-408c-ba08-00c436e5666c d98d97c3-d1e8-4c6a-98d0-71d291648442 f4f6a474-2dcd-4111-afda-a9e50a903f7e 937b2d78-bb35-4445-af3c-9466df082a40 31e83840-19f2-4207-8e24-6309c2236d80 df4a9867-70b5-4787-b370-9a2e2f8dfb49 9557e731-1680-46bd-80a4-031f080b5a0c 6cffb9ae-683d-4d7b-9d22-4964db3d87c4 f80cb89a-ee95-4864-9066-09688d3afa36 8f8c5074-303f-4148-88b3-79fe93042f7d 44d5eb34-7116-4573-a43c-1e8ab5417af8 de89b0cf-bb8b-435d-8986-54a8d7a8bd37 35ba05b2-92fb-4611-93dc-538f55898f7b 8eb5a8d7-7a30-4bad-8b81-0466842d9cb9 adc1d5b0-38a0-4730-84fc-88c1606a30f3 aa65155e-452c-4251-bb70-ff2204f66c25 6d2cf8b5-c95f-4185-9004-daea1f3a402f 36db68be-f274-48da-95da-ae13ce38d169 2cb56f68-9f45-4229-bb1b-945ed9c73bbb 9ae201ca-8459-4f45-a903-07f52fe222d9 4d1e6f85-6c8d-4c19-a907-658580f4325f 344619eb-4290-4351-8c08-beaf27ce31b7 bc9857b8-eeb9-48c1-b994-01524f08473b 6ebbee81-42e2-4d89-9edc-24e4bbb23f09 ccff59e8-f383-48ff-a605-356833c49363 c3434e46-32c2-4c56-bff5-9429667cc9a5 808e1744-2c8b-4c85-961b-a010d2da756b 41e0b179-972f-4c3a-9f08-dac6ddf99643 94ff1bc7-f462-46c1-9c9b-dac8a3ae53ee c03eab70-133e-4999-8cb3-2166e3eb4043 36138b50-dcc6-443d-8622-080327438452 74e2454f-539a-4225-a63d-1fe6c0d0fa3f 15f5c90c-1920-41f8-81b3-f316f040384b 920de0ed-2589-44ca-be0c-48d57be2c77b 71fd5c86-cfae-400d-9d26-b9a7d334f35c 8b662fe7-499a-41b9-b271-8850c979cec2 a9de4f1b-aae8-4827-acfb-b6cf1bf50166 9203db34-7f11-4aff-b132-c04c93e2ec2a 7f6e4e6a-d192-4c5f-8ee5-c49b591c2a9f 8139463a-6948-4c09-847c-ab587002e700 fbaec9d4-00e0-4399-9af6-406e6b60ac6f 8e23929e-9c17-4d2c-8c6f-7f574b843e49 7352f00f-4884-4200-8406-4009294940f3 c7c863c4-11c9-4e81-800e-1c9ebb693bdf 9e9ce259-c8cd-4cad-93ef-d4bd30b069f1 25085d57-66fc-4e68-a83f-70873905b82f 69981be6-6d2e-4ebc-ab62-32bb1a39c262 71f182cb-f7aa-476e-9f17-752adbf43ee1 9f33fbec-214e-4fa9-ac89-9b130cbf41d8 169b09f8-6d6b-4bd8-818a-e6f25517d9c9 a7eb7209-1381-4db3-9108-8ae5bf56ac1a de79950b-5bb7-4ff7-93dc-455012665a62 a18a6ccd-18bf-4170-99cf-6c0fc0eafc86 5daa9ed7-20fa-4d02-a95d-c2049c7ceac7 9d2734b7-9010-4b98-bae2-3cd72220de0c 038361f6-ee17-491e-bb04-cb396d6cec4d ff7dc556-4752-48c2-af0d-80449199cc69 4d4560ea-3053-4088-aa3e-44fc41cab70e ad03cf1b-a2cc-4a94-8f0a-148e6b12a841 156a4ea6-93b9-40a1-8ecd-840b28f8cd77 b5f8e248-a1b6-45d8-8436-bf8750be5da9 45085b67-75a8-46d9-9915-c67a72e66af5 b3365436-6793-4123-b031-0e573c10a693 86f0ea6e-44c7-4cbc-ba0a-6bd39e139524 4c20749a-d80a-426e-a2db-38866e69804c 748e8efb-6ae8-4818-beae-cfddd93b6924 1d4b4c10-3368-40a4-be9b-7f1c5ab20738 8f12a356-e367-4658-9ef1-d5e1cecb259c 8b1ce24d-6304-4761-a918-fbb097ba5eff 873f4b07-f349-47c4-8ee5-61ae7a9a0a8b 0d1d9b37-dee4-4825-83e1-f87a6b501ac7 71844d13-d356-4a34-992f-5151d50a184b f909d9f5-b54d-4b48-a24e-3141bed5d28f cef74f18-e6b9-4e56-95b4-cb4051bab68f 7ba0e1ab-900a-40ea-86b1-42f3014d5501 379ea27a-52f7-41a2-b29e-04da42d85d87 df1bcb55-aafb-4726-9f14-291068582b82 1d80cf21-e633-48bd-8213-125c63e91668 7f9b4c86-629e-4598-be95-092ef571b708 236f1538-4bf4-4db9-85f6-8b54fb174728 95420075-4414-43f8-9577-fc5b45dfd5a9 32759fbc-2907-4cea-a952-06c97f59460d 98e9620b-4382-4183-a0b8-78054bd2fb8e c08ff243-a182-4799-bc82-2478fb41b431 47139fa2-601e-49bd-aac4-1b73ba4cea4c 9bba8c61-8cac-4f53-9417-5889b0c58631 b65a3b69-85cc-4304-96d9-2ab9c062a600 b118ba88-10cd-456c-956b-e122c934ef9f db0da1ae-d387-47d6-ba7b-01a16472d2cd d36f88f6-e0f2-4ac7-8479-f74b249e7745 f9a7434b-36a2-4ca8-803e-deef5e9f166b 326db0b0-26a9-4213-9339-ad6eb74e109c 8afa013f-27e1-4d81-993a-e450f774ad84 39215c5c-9160-4d96-b804-c191cfb69b2c 4d45bfbe-438f-43b7-b9eb-22ea2cca38d9 4973cf33-64d6-4ebd-8981-784e9ef86bcc 02cefe24-227e-4428-b26b-91eafb0a6ca6 5f8cad1f-dc91-4a1d-bbf3-51c52f215a55 2f805336-ef8f-4d40-a780-0ecfe56d99b6 b06f1c33-1845-4d8c-b0b8-47f7625ab87b eed56ed2-f16d-4658-857c-5d093b351e3e 6d060ef5-bc47-454f-ae40-991c62d5e801 1119fffb-216c-41d3-907d-7d2118489366 7c827d83-dd91-445f-bf6a-7624a695ac1d 5bea9518-1c7f-4ca0-9c19-3b429d4150f5 e66dccd4-ccb9-4ae0-be2a-65a66e8eb481 3a95a41c-54d7-4029-a2c8-9d9fb9f549fc a1289828-254a-4207-bc4e-044a690b6f8e 262def76-4dd5-4181-af4a-02586c7acfd8 b6670226-edc8-4a1d-b0b0-f15e5930774b a53998fc-81b2-42a2-bb47-35346c4d0fbd 09349ee1-b167-4bd1-9c42-882c2308d023 d527c2be-8ba3-462c-a823-986570e186f8 232f240d-ec37-47ea-864e-bb4ef523b41a 94754ea4-7693-4bb0-8591-08bc4aa2dac2 a2f196de-6c97-4d7c-8456-f90cc32251d7 f68c286e-259f-4c3c-9c9c-992f6838cc97 5fd2f975-6188-4b92-9727-bcc4d4e706ce 4984e6de-cef8-4a0e-8992-efdb1d9f8730 f843c9e0-523e-46f1-832d-e4a881c36c63 544e688b-b02b-4715-aac2-94050fd125bb f6b7e575-8ffa-4fdd-92bf-b444aad3257b 69a3cc04-3534-4134-9819-87826d7e2027 83af15e6-1650-40ae-beac-7406815e6ec6 bed2f96c-be25-416b-8feb-1fa79f709390 2e58ff71-177d-4617-a057-76a4c5eebc9d 806e4b22-166b-4477-9488-af23e6e003f7 f077ff0d-684f-45dd-9349-bf033d42768d b118c981-3c46-4d62-8719-05f95907eb1c 40c64039-d9ea-49d9-9b54-5c477daec950 a2667ae5-1504-4ca9-b9f7-3598c82be5e6 74df232e-49ef-4992-8780-0f389988fa23 7f9ee33a-276a-4481-8b83-beba181e2d47 7ab6afd2-2de5-4eeb-8f91-d4a0b45b79f0 47df36be-51f8-4e29-a67a-0aa1d5ac8855 04580851-aee5-4088-bd74-eb98ec807dd3 ec4e1696-4f1c-41d8-addb-3d83b5bebe81 559bff0a-9ab8-4905-8a86-79884e4ca19b 0b120e03-4ee5-467f-9a52-92278f379d20 13dd241a-e9b0-4441-a391-a5851a8f899a e5412955-1a50-49ea-b716-4daeb547db83 94ce331c-5295-44ea-9f40-03055fceee1e 2de4bc3b-567a-4300-aaeb-992a424d68f7 4f326b12-a9b8-468d-9366-cc41723ecaef d8e0f365-774c-441b-a946-79da42c72520 3fafed02-d8c9-4982-a63b-d4805dfae672 8b886d1e-fa90-424d-a29c-8b04a142bd3f 38bdabf2-ad8f-4b90-aad2-30cf36ff6c8e d5bf52d9-5734-44c6-b15c-e30f76271f94 1c307613-a78f-4a48-bf0c-43bb6ef6e531 7abcc8b5-130b-41e2-b547-2edb08fc215a ef82e231-1933-414b-8a43-71583a0151b5 431d0753-700f-45cf-85f1-0a51a00e07f8 912b39c3-de99-4194-b3a9-85c621d88bcc 3e1a42b4-5ba5-4ab2-bff5-cde2990515c9 0c75cd48-80e7-4b65-a93b-a528cc6304f6 a88b0d96-2931-4bd3-862e-8813f0091fbd 21dbd472-3a7d-4787-a137-e180b3b72860 200283c5-d684-4d28-8d95-4eb2df2ce185 98471471-69d5-48cc-95b3-9f3caf4d9146 63d3e72e-e739-4d79-bc03-0d6fffaee38e f95c0775-6238-4c35-8787-7ba32b68a60e 9d6f8ffd-5205-46ce-9421-aa9223fbe93b 833c5476-f087-408e-a6c3-a2d248a8e9c8 9f4e419d-3dd9-4d1b-8a79-6eb5aa5b8b17 803c3b39-bc0e-4228-bbd8-aaf878975ef3 3ff8e986-b336-4423-b859-5efa0826dc5b c935f76a-c0d2-4408-bd4d-74b0bebcff7c 490d8cf5-a8de-4c6f-8d5a-28599795f0c4 3efeb458-3529-4191-94eb-11964bd682a0 efa7988a-4a20-4380-a118-6e0467af7649 e05f8239-cfe8-4f90-b764-a92bd099bba8 b0e702dc-aec9-45b7-bdd0-e61719dabd87 404e89a2-09d1-4c88-8a4d-ca2d967ad893 e07b6ca1-6193-4529-82c9-d52521e7610a 971d94d6-ae34-4ea4-ba74-c3cc22161ad5 d0130995-3d91-4373-8e51-d3fcff5581d9 cf4e9f73-7609-4d76-82d7-b46d0b6808c9 e50c0df7-c54b-4550-8d75-5fcaebb6058e d92c9fd3-ac89-46e9-85cf-f9699fcefa9d 6a3a74d9-1bb6-4507-9316-1e6e0a8fb0b7 dc74cabf-b01f-45e0-92ab-7753ec1b0544 75133f6b-27c9-473e-8950-b3251bceeb4c 2f60cdee-9374-415e-9140-a75d82d29a05 1b64101a-7b06-4126-9f52-1dfd2c495215 39c2e9e9-8ee7-4c84-92e7-bd5a3b7cde0f c790486f-cfc9-4379-af2c-6f6df432393d 614d8ab0-92e0-4186-9bae-36e1fc44a14a 2d7b5b22-6120-4a87-90bf-8eb0fd5e0652 b1da4e3e-1856-4e7b-b9cc-44e01acff307 d4d900a7-09a4-4614-8e29-fb5f51646947 9e097c17-cce5-4a44-96a7-925121441875 8ba77bbe-167e-4563-ad96-b93255d94a6c f0c40a7c-36e6-4825-aa8f-222aaded15ba c13a7cb9-d5ab-4f92-818d-ff11e0df62cf d6bc92d5-813d-4f68-bb79-731dea12349d c45ba627-afce-4c51-aa98-f899482aa707 ea999bf2-a512-4fff-a651-0eded777fb24 15c73c50-499b-47eb-af5d-dc2e355493aa d29f757e-891c-42bc-8bfa-2474225f155a bf896287-04b4-46bd-8789-2f71bad91d9a 09aa1c70-ceff-4117-b281-88c32803fd54 423d3de5-81c0-4721-bc92-6b0ed2a355bc 1921fb34-93b7-4470-8602-e26911896cb7 30831cbe-a975-47b6-ad48-2eaa538cc6f2 afbe8e36-2849-45af-8cf7-caf9e4327ff3 2ea6b283-f47a-4c87-9239-2cfbb873035d 1111d0a0-05be-43cb-ac4b-60d6a9715a27 f27e1d60-1438-428b-8ab0-e88744bcb6f9 9cd0962d-375a-4650-abe7-6fd5cb751f53 f3b9662e-95c1-45a1-9188-cacb9afd0339 bd7d1ab4-84d8-41a5-bb29-64b3e7aa25a7 ab570f0e-312a-4bdf-af38-45d06c2fb4b6 a896a85f-3204-4571-a18b-e3d47d1de777 5ea32658-3fa6-4b4a-90f8-1f3001bf9ec3 70be62e9-a2a0-4667-9cb0-c76bca95aa1b 0f5fee96-1993-47a3-801d-53f08bc2a7a0 f1c225f3-d2bc-437c-b906-4f328df5c354 d810dcd3-b5d7-4ab5-9777-0388e49bad8d c40c576b-b276-476e-b410-8e92db560264 4a1c5166-6591-4011-ba34-494edca22159 e2a19d8e-81ea-4092-84ce-4803a297db73 39c82cb9-f5d7-4123-8dfc-bfa1e0b9289d 921a7623-a223-4bbf-9dfc-bfc3ca1750dc f23c1abb-c36c-4deb-8427-4f33a2c36580 703a0877-5e91-4e42-b0ae-08772a1b59f9 bb800e4f-0e3c-4203-9536-a0883b13eb7d 7e635ed1-7405-439b-b1a9-10cd10d0a8f9 ea1c307f-2dd0-4c46-81da-b64902175690 92eba6dc-768d-4e20-9d83-adb9f2f5f0a2 cc8c2fdd-8087-42e4-a22c-3964ba493087 ed1771a4-b303-48a5-8671-0f09ac8832c7 d921d048-9318-447e-82d4-5c938490d9a8 76fc7fd3-39ea-4f49-aaf9-6c342bbd25d2 a37e9bca-908a-4cd8-9142-9007a15e41bb ac1f3b62-9155-400c-945e-d02f9c036584 5169a64c-b5a4-4697-82e6-07c64c95c04e f445ee1d-4aba-4e99-8594-5ada0a8b3578 61b08ef3-4d11-4acb-bcc7-89438c2767ff 299b31c6-a7ec-49af-91fd-7c1ac1260257 3e764ddc-5db9-4bbc-b1cd-c93b380f30e9 83ca6b91-1407-4a0c-812c-aab2242fee00 024542c1-aef3-4a19-8e8e-b110ec6f7e65 a809ce0e-b9b1-4f86-967a-74f24d2042df efe9d562-e36f-47ef-9686-3ee18ae9f68c 86b65c72-1379-4746-b434-e2e1aedee1f1 0f29831d-1195-47e4-a147-2ef9026eafae 94946d06-e470-4922-a3c6-53ac1857270b ae6a3045-d693-4020-a093-c8c0ffc9a3d7 5a511369-e201-493d-9a09-ec3e32b68764 f452615f-cc7f-4b3f-8b5e-303a2712c67d 35e564c7-ae3a-41a1-8881-ed89e2ef5543 d4bb680b-e8c8-422c-811e-1eed026c5584 34f3ad41-39bb-4588-bac5-dedbf256355e a4619010-9e4a-4556-9f97-9bad5bc01082 231374a4-674a-4f95-8bb6-0633c440951a 957c959a-48f5-4739-b00c-05627d222939 ac67ed9b-faac-48f4-ae60-b500d42c0af2 5b14cf32-b5ef-4321-86d0-1323874b8483 144460b8-96e7-4851-99c1-201aa702bf54 ad86a6c1-4792-4571-8c91-381f81a3a11e 9b726f8d-1ea6-49b1-906d-9b6d00421638 9a6d7ff7-68b7-4071-85d4-783d328244aa 4cb665d7-88fb-4a70-9d0a-f888f1560154 d2456a22-da29-4630-aed9-03efa4740ac6 0ca357e7-bfa3-4856-af0d-092537585447 d3bdb172-cba7-48b6-84c1-01e68bc12909 9bde458c-3891-49a5-8247-743d2efcc63b e72c43b9-aef1-4ce5-94a1-b6eef7eff64b 08022773-e287-48d0-962b-4098407c38b1 239336e0-7afc-4757-9bb1-68fb97acd352 a68021bd-456f-4465-ba9b-c00dcd299651 291ce954-0069-4bcc-ac16-7ea652ff9173 8e42141f-c244-456a-9773-bc2f6009d798 1f0147be-eacf-4bf9-b432-1d25bf97a065 a4d6baee-83a6-49dc-9901-3b5eb6e1fa21 79ed2b0b-ec84-4605-b2dd-c00aae7afa91 f9c9119f-0c5a-4618-906a-112bec94941f c1f60c68-17cc-44fc-bb9b-f379ee0e003c a2cb5be5-ca11-4336-82b2-da4ff29c29a0 e4835aa6-5705-4856-ab24-6835cb750f61 419bb824-63f4-4f1a-80ad-cb0c292ee84d da635978-f58c-4424-9e2e-d0f6f198acf4 ffa2401f-85f8-4d0b-ac35-e1faed6c6dff cf7c6e88-5add-468f-b56c-6ffb6c4c249e 0e39e407-874c-4f82-a881-ed2a158ff273 7113e2f2-daf2-4267-943d-da6d9bc7ebf4 0c28e5ae-d366-419f-a45e-4072a8a3ef39 358915e9-0dae-4420-b86b-749fc5ec1118 7dca6093-14ea-403f-9ef5-0cc03bf05420 a63b904d-4e4d-4fa5-b91e-c2899ce6565d 8a775145-c278-4154-9753-4107f10d6433 5d76ac07-426b-4dae-bece-4aab793ec66b 4c9c3f35-d3e2-4f8b-998d-90b4998a0c65 096fdb6e-fba4-4816-8d2f-3f9e01615a8c 7a58b391-2280-45f5-bdcf-08ee2b8c5de4 37c98fb5-adb9-4951-846d-1ae1959a19da e0f0cd1e-3c6d-4bd3-b985-75b0253d91f0 5ec76f51-f258-44fd-a4be-319757e8e6a9 213c30d0-84f6-4c77-ba79-8f301594283c 487e33e4-246e-4cbc-a106-bcff8921bbdf e19e31b8-a9c0-4671-a8eb-3d4ac00ab838 3481d82d-6f71-4b6f-a65e-37a0a5b68131 98feb173-bd0e-4913-b8a1-2ac24bef2eeb b3c709f5-b511-4096-b09e-813555992af7 fd9b3429-c1c0-48b9-9bf4-fdc2f0e7cc3d d3b4bf67-6978-4a32-8064-c8a467127149 ff775822-6c7f-4f66-ab5b-e7897f72bb11 6e3b3ad2-bae9-4f4f-b3e3-3b2bd83dd1e7 9c344395-d821-416e-a1d3-1ae9f550a6e4 1339c7c4-4156-418e-a836-956cdd731179 486609d2-094a-4d24-93a1-84983dfcabb4 e6dd80b4-8335-4b11-b8c6-b610c5ff6e78 5ca8dec7-9668-44b1-b4ae-c39b85ecca6d df0c1abe-4095-48a2-ac6a-25047c56ff19 03f49fe6-4969-4d36-8c8c-b616ea98e620 705e2440-cf83-4fa2-a46c-cbb28a0e8741 180b1447-7975-4603-861e-f2b1ba0633ac 6137ede5-1eb4-4068-95c8-924568f5ca04 23e6303f-1769-4d76-8c70-3154016010c2 fd496749-8638-4350-835e-072594a17c33 edaa8b67-0d94-4342-b6ba-f2b0d1384c95 50278ea0-3ba7-4a6b-825b-0627c5438698 94521090-b666-4d81-9512-86105b0694e0 1af9c1c4-2c4a-440c-aa05-d37c7a43573b edf95bb1-9f08-46c4-9e85-2b6ca07e3468 3193f0af-cf5b-4ab0-8e20-62e493d8b576 27c21e07-831f-4638-ab6f-f1978cb68f8f 5c136abd-35a4-416c-a49d-a7ae3ae989d2 381fc87e-2ba0-41da-8a02-9a2703fa6f1c 560ec747-06f1-482e-81bf-42d244f1e161 006ffe86-6c3d-4950-9034-4f1cc6804b71 a5c8aa15-c7f9-4bb2-8490-746594794f3d f8165920-7ca4-4b62-aba4-9ec78a7a6aac e958186c-49f8-40f4-9369-c8285859b783 909be2ba-5b44-4a35-b7c5-58f500c408ce 7171a410-ff88-4d29-8349-8e0eaac46b1f b4980823-4df3-4cde-a422-4618e2b68337 2cfc81ae-0f84-41f5-a19e-b3af86ff1731 92921722-eb4a-4b40-a034-b4684c5b83b4 7a646786-2949-4f6f-ad79-355705dea15f 5df8f00b-72b0-48c1-8d13-4d06db658471 0059a524-198f-41e7-9cdd-0212eeb2ad62 d1b72157-ab17-46ea-a740-90d11d44f143 679eb940-1cc3-43cf-b4e5-09939936aa64 ebf2d882-e309-4907-a99d-dc03f863948d 44dba94a-ddd7-4cf1-9b3e-663e01d48798 5cd03b76-48f8-4b13-9a85-5ed8f3ec482b 32efbf88-318f-4347-99b1-a91a3034689a a3c6b90d-ab3b-44a9-ab90-129f0773d52e 3562d5f4-02e0-4a8a-bb9b-52b516bb7b79 6243d4e5-062e-41ea-8c03-3210a86c5a2c 5c3114af-a0c6-447f-80ce-317cab072e4e 858e805f-25c5-4a3f-97d6-55113be68896 8a2ca15a-ba0b-495a-99ed-a954b31bc9ea 642d065e-b580-48a4-b0f7-610cb3be816c 58962ec4-cc7c-4cc2-9f67-3244cfd48983 f1d20505-6626-49f8-9a38-2bcd97ff309b 1ad63570-ae4f-4115-ab5a-3fd7c12cefd0 f9200dd0-2519-4ce6-86d5-aab16c504021 eb808cf8-83fa-465c-a62d-5ee4d5141139 38d1b644-9667-4cf4-9a74-651844b26b24 47098f9a-fe8b-4000-a110-7927f2c05d9d 5c38dc6e-a232-4c7a-afd9-4a85206c1003 287160cb-ec26-4925-91d9-6ead236469dd e87373b9-86b9-4005-9a03-253a5c1d5e65 e2e8bfa2-caf2-4f25-9228-23cf107d14cd d1a74214-f0c1-45f8-aefe-fb8b8fa10aae f9054ebd-98c3-42a6-8b10-7d1d6906cffd 44b00dbe-cb28-4cc3-a06b-8036fe12af11 ba6ab341-7dca-4201-b46c-fb8b5671d9e8 5ff20346-272e-4446-b28d-69723344b210 c77980ab-5c44-4e70-9d1e-575e23b81539 6f29f956-d665-46dd-8b77-ec0caedc4aed 9895a950-d999-460f-9b49-9fdc6866c6a2 8f032415-ce24-4bf4-94d6-b06f1aea3473 1e3c7d83-de18-41cf-b00d-ee929ca7d2d9 807e5d0a-ca23-4461-85f1-8c5602377912 6794503a-60b2-4b65-ada4-499c6d9b60cd 13a34178-b7e8-44ad-9a48-02c523cca83c 8c5eab00-91a1-424c-afa6-bf3774d81970 bd4c1617-97a8-49d1-88b2-29133f596e73 601c834a-68c5-4f95-b3fc-0e2532442299 5af093a1-7cf2-4fad-9c2d-cb278918b203 56de1421-f27a-485f-82f0-1dcb6780430e 2be16833-d7e0-4cf3-88e5-bca4c6e95887 f9b22341-5ca5-4fd4-81f5-e68894b4c19a ee9c756b-ccde-4ba5-a5de-f9b3a6d3a8ee 7ff2d0d2-10f7-4cfa-934c-7ca35e80e58a cbf5b8c7-7cbf-4f82-a543-2713622449d1 d8d76b75-a76f-48f3-82b0-3afc8231d049 19a91284-0557-4ca7-97d2-f888600c592c b0db3c8e-429a-41d1-9186-2a9a9b475be9 37a1beab-04f2-4f34-9a87-6d14141496bc 19f2e6ea-beb7-4007-aa18-f347708bfad5 f07cec6c-35ae-4c6e-9ab8-96c4693a5992 5fa4de3d-4e7d-4eda-987a-97e0e25c7433 1216908f-a40d-4d0b-8e38-b369e6e04d40 d7c8eb93-8c3b-4bcf-96b1-504094f321ec 86a925a2-31d9-4641-b230-382aa106a876 372cfb2f-420f-4643-b5c6-fb1920c30f65 3414ffb0-62bd-4ca2-bc6b-65ba1031f7cc a3039fb4-a958-4eca-98aa-e372a0d2b514 54c5650a-e7fb-4d83-a989-87f66e3e2d67 a50c43a8-4425-488a-ba7b-b4a2959a0e7c 2685b5d8-5b5f-4a49-8abb-c608897cd600 1a029b07-ff4c-4225-9e53-bc93ad0bf2ff 74fec3db-9f30-46fa-971d-a647d72e4420 fa872029-fdea-4e71-b1fe-b98ad4b667f7 3f6b6259-9de3-4922-8530-24118aed2b08 0a63bb0a-59bb-4e8f-97e2-33961deadf76 239efc63-f6df-485b-9657-b5ae71c39da9 4d151894-3b40-46aa-8148-41febbba6c7c 5f9973bf-dc01-4475-966f-e93ea417a356 5fac3f51-e7b0-4230-813b-4ce6cf49cd14 7d524006-0ef3-4105-8924-b4a037a38b3d 42151032-def9-4017-ade3-effc6f2ff8c1 3f97ea91-ae17-4f58-82cc-4dd4bf0e5851 567cb28c-b2a8-4a15-915f-e12776ee4b21 eab06a5d-5e0e-4a5d-a1f9-b2dabd3d9967 627c453c-b8e0-4052-8215-31a62c59b0c8 f06645e4-a32f-4497-96be-ead4446586dd b9b5640e-8aa5-4a9c-a215-c52b74eeac37 323f3feb-dd98-444f-9d8e-48415ff79a85 43948a6a-a8b2-48c2-af74-0a073faac296 7367516a-b9c6-49e5-926a-a3403c604e58 8cfbcc57-90b5-4ee0-b5af-4ac9cadbc34c b7cc8f10-01ba-4d50-96e4-396c93c01579 4dabbee5-57fe-4571-83b6-fdbb65c51bc4 a06f8e1d-4be1-46f6-97ae-6dfd5ad77785 103865b0-158d-4999-88da-c481cc1832ec bb0d380d-c391-4b4f-91b3-7c6a66995f36 4fff5a48-1730-474a-9c09-b82ce8c845cb aab7c3e8-e922-4eea-9bd0-5ec933587252 0e470579-eb2b-40e0-87cf-d87e672851d3 9d352b30-463b-4d33-b899-5ee714a1fd5c 2c697679-efb5-46a2-9806-1feeffbc3208 7f8827d6-01a0-4b88-8cd2-062641db7a57 fdb46c10-bde8-403c-aacc-1b8b61d7f312 71cfcfaa-f91a-493e-bb90-094679f84aef 0ee530f1-6bcb-4986-8aa3-17c1f5707cad 5cdd993a-f29a-4578-bd9d-a1c5c1f89817 dd922771-d820-4e6e-bece-cf8cca60f72e 43fdaad5-75d3-4f3d-9a25-e9fdb0e6702f 3ec994fc-5f3d-4f17-bd9e-8f84645859b7 5caccd4b-e71c-424c-962c-983b836a0968 aca4c418-cf9a-469c-87b2-aecdc3fd3968 df916e3c-5639-4bdf-b497-a12e30c8cfdc 584e6e62-950b-4577-8e44-79afd65fbe96 f95b9053-15d6-4761-8d20-795bf9c213e6 836a4340-4d26-4b08-a89d-432be8c66fac 9b21031b-a586-426c-bed2-58bb9f779d58 8fd7d03a-1f71-4ac4-979f-77dcd82437b0 4538838b-6e95-409f-b329-a74d16be1d8c af4cf7f7-9f28-47bd-b29c-c3a755978e2f 0e45b250-0d3f-4712-8588-e0f9b36aca03 d6e3dd6c-9795-4631-8956-29cb289f38fe 1145da38-790a-4f00-8a5d-3a27036b72e6 09d33e57-3395-411e-ac81-c4d5f7ddc32d c9a908c4-4814-4c11-a8ac-42bb69c1d253 da637af2-a9a7-44ff-9f7f-a83c11a44302 f91061e7-6bdc-4b8b-8ce6-c55fa832d8f3 c8d7fd59-272f-48e1-b55b-c35466afebb7 a3ae688c-eac5-4c15-9cdd-34292988dcd4 5b758120-5657-464b-96c2-8358ac13ff3e 17b5df71-27da-4c86-9eed-af6f4386bb59 4b21a700-d0ac-4728-b902-37f8738e9206 0b9038f6-a260-494a-98eb-4910c8bc5e35 efdafab8-e345-44c5-94ac-b9535e3e3586 5296f4db-5a5b-41e5-92fa-2ee044634281 a9468f9f-8065-4fa8-acfb-9374110eb6f2 25eaa0ca-f883-47e7-ace4-7f6751b67176 7f38e270-b10d-4f65-b395-25b7cb845741 f27206e4-bcdc-45c7-855e-21132930cbc9 4f57aea5-6eda-432e-9768-7ac977848419 d5095dc4-cf67-4fd8-8050-eadc9e542f5d 09648f4f-4a2b-4f85-98e2-4a7e01b227a9 23116993-64e9-4926-82ae-551cebe893d4 88230cac-efcc-492d-8a89-7c93f84aad10 b0f74ae0-43f5-4577-9f60-098387180bab d1f9f14b-4f86-404e-a5b0-2de0f04ade90 ed5d536f-1365-40e4-89f1-3b21a793d8e4 09004c01-674d-49bf-82ae-b62d2c40e788 6351b34e-7c7e-4380-bb8d-e086d7f05736 acaf4d2e-9b9d-4856-8abe-b14cc5484a06 cbc91c4f-86f6-43f6-a886-d215c8a10024 b3d384f5-d04f-46bf-ac03-d937045da598 639531a2-b346-4324-83ae-caee8ef3ac46 07a33895-35ec-4064-8afe-0c025f33b5c8 912f9989-14f5-4bd4-9b81-c5add76a6748 e1cda6b1-1d40-440c-b0c8-9e024c57c4c5 0cb47775-2419-434f-ba43-eab0bfde7c8e 779a04b4-95a5-44c0-995b-7e7affbc7a01 cf449c81-1b35-439b-9cbb-b292e7385161 6e5d2fc2-0f13-4280-8792-20816696f29b 44dab7c8-b6b3-4ef2-8094-efddf4df7b42 c45e5cc9-8b72-49a2-8b9f-53d260e21c5c 37bf25ee-a9c1-4432-afad-46196f39b8f2 3432491d-6429-487e-88f9-4861405f26d0 dc4be7cb-16bc-4bf8-8283-4f7d7800cd48 687d3c2e-29a8-4132-b4f1-e79eed5d8da9 94841ad0-0059-4281-945a-ad508985c3f8 78d5f1dd-82ed-4785-be92-a1388f11d939 b4a7e082-4363-43ab-adda-eb69a8a0f8e6 d7a1fdb5-a809-4f2b-b775-18a8781e662a 1977a0a1-fae8-495e-b4c4-943b9ffeabdd 79230616-8386-48cb-909d-5f3c85faa084 ee705da7-660d-4673-b6ba-4d9adee7e433 b7e54742-425f-42f1-9398-2b7bac249c55 48de924f-6345-4a29-88eb-2d2a380651fa d87d54c1-4577-4e55-984f-576ef2d6de58 01f6b09d-dc53-441d-95cf-5ad4a0a131c2 8a862676-77b4-4d98-97c2-8c1676c537ec 86082a55-bc85-4460-a40e-ef592e1fff15 f0241290-bc13-44fa-8123-1ae7d9662c50 4a20f717-f975-400a-aa3c-a9c42589d4ef aeb6cc22-d0e1-48e5-a51b-25b079bc00d8 9bed5a2f-6b6e-41cf-a999-5d8ca2122f52 e45d657c-9b3b-4c6b-bcbd-d09d76305b80 383859ef-5550-451b-bcb8-a6feabfa1ad2 c23dab12-270f-4295-8e99-c772b35dcbd5 587907a6-e3fe-4d0e-8c4d-e5ea1a870b01 79949e9e-a121-4e25-ac4c-8622aaaef9ec c2dd0ded-a84d-4b46-8c45-7a5f714337c4 97a41467-8b65-4241-9fad-9e0eb14a7b73 3e68c234-464f-4749-87c9-8b5138ebc602 1aba211a-5935-4d32-839d-75f2f38d045e f60439fe-3f9a-4ae4-88dc-01cbf113a5e2 5951746a-684e-49a2-8991-ec265822050b ecd9b0d3-a25d-47eb-9367-d7b7a3a013c9 ce3cbba1-e130-479a-b276-da85b365f5ef d80c4902-f7c2-46ec-9695-7c156c4722c8 3f1df484-1451-4b4e-a37a-73ce3625006c 747f0638-36f3-4adb-9e94-4359ac0b73da d96f3fca-c8df-4654-b9e1-92f8567aa937 5fa7048d-2286-449b-8c33-8315d8a29ae4 8169da22-d0a6-4bfe-91b1-9c75a1eec6f5 c297ae16-aab0-4725-9fcf-a3d76678d6d8 e1b33788-6328-439d-9cf3-ae712a7a45eb 06e987af-200b-496a-b059-616921374da2 844d7ddb-5ef6-40e4-9478-352d847b1d90 16f20428-891e-476e-999c-c85214f7d6ce e99e68e2-6ac9-4ef7-8a97-174da865660c d1e11d85-3ab8-4f54-9cd5-020feedf1559 aa028c95-090c-494c-b09e-119ae908e245 1990dad5-4a81-4512-b786-f91dfacd0f23 b716c93b-68eb-427f-ad7b-c42449deabe6 30f3688b-2a09-4f21-9820-02ad87380212 6248c3f2-9ba5-477c-bbfe-02d3a308b058 5cafa6f1-46c7-40cf-9bf8-25ff147e2913 f331fafc-bf59-4fab-8dbf-976d8cfdfba0 a42d9267-5e2b-4081-a797-511886ea8677 684098ae-9de2-4a9f-8530-5013ec21af54 8c9fdc6e-5a81-4e51-b69b-ad4791ade171 6b8a8153-4c64-4c3b-9667-476f38bb9494 f2111668-f123-450a-9009-b75b1aa3252e e353445b-4ddd-4743-a948-f8bf1f774470 4d5b951f-2bd1-4689-97aa-b75fa1cfc265 0e462116-fea6-431c-8f3b-badab174d783 f130db7e-73a3-4aa0-835c-c2d610d60692 53fbdbbc-c938-4a29-9525-90c48931b82b 1b7d36e0-0638-4dea-b1fc-0b9fe3e96301 123968c7-4b6f-44dc-bad0-26b22189e334 c10ef6c6-6b11-4374-a409-b26749e47f47 7ab6eb85-2df6-4c6a-a57d-25acfcb61df2 06f6f459-b4f3-434b-8a27-59793274d438 1480f738-eadf-4441-b460-6c850afe954e ee60874f-c205-4dff-af53-02b28728d6f8 a369d40f-8ea1-4ad6-a187-adc8879ec225 809580a2-1947-4626-8ca7-edf811c3e806 643dc84a-98cd-44ad-a32d-b06b2c0bcec8 b1e3c1a7-cd13-4b75-8fed-b105ff190e33 c0bb5693-5c18-4d04-8dcc-3e08759c9d21 f0002f1f-a8dc-437a-9344-cba624b3084f 2bcfbebe-90e2-4b60-9fda-4e63689b0b4b 0aa2c1ee-aea9-4b06-be4b-f0804e738892 466e588e-8653-4036-832c-0b01642c8f0d a8404518-5e35-4e80-bba5-fefbb3cdec11 cce1276c-fa77-4313-8d06-1d01ca082d63 2c5a4a11-6540-4175-926b-4794467860ed 1eb2d5f7-9ba6-4915-9b5b-9bd1a6ab6a55 64800778-f59d-4013-a050-922b64bee22f 880590ad-d7af-4424-92e2-e6ce77405c6d 9313e538-e714-4afd-8ff7-d5109e258b5e 77543ea5-d801-4577-a4e8-8711006946a4 a4c46f6d-cdaa-4c3e-90ac-f28d24a62843 61430a3f-52a3-44de-bb63-c4cba639cf6b ee577017-4ac8-4ca5-a779-ae69da11dc96 1fdcb1bd-8c21-4863-9c11-927df411ce28 17d1d0bc-138b-459f-bd46-def54b11dcf1 2a5fd15b-c249-4e33-87f1-dd590b6b6f29 7aad99f1-c94e-4f7e-9622-cd3ca4ffae6e 164e490e-c115-43b6-b274-9ee34565ba33 1b5b218c-35ef-42e8-8784-baf73e510c09 10627341-3a7d-4d5e-addd-d75127638479 09f1f3fa-5649-4e18-b275-d88bed00093b 0d746bee-1344-434d-af54-960b35694fd6 81bf4e82-8cf7-4d87-8ba1-92c9396898f6 2ff7615b-c143-4726-9702-a116e45dc8a2 ea06d228-8416-49d3-b909-23eac2f8ac8d 5ec901f5-d7b6-46c4-b2d0-4c528eeae7e5 8850aece-4a68-42b2-8b0d-8d018cc96f69 2d6e02fa-8f4e-4cf7-ac7f-7a4cd919b90c d64d62ab-9f5d-48c7-a7c3-e405d602a399 c1caea42-3276-4d27-b50f-4ff78382edb1 bc0e5ad8-844e-4961-babe-25ff3aae12d6 81ded1a7-596a-43e6-b283-599df089e686 893b265f-36e7-4af2-a2e5-7e2e06fb0dc9 a39097d6-bfb5-4ca7-a385-7d5a1fac4572 afb4421a-40c6-4208-91e6-3dbc9b394901 deceb27a-132c-4804-bcc6-53a53e665912 1b3a27f7-8443-4647-9a5d-2fc96d4aa60d f014c10d-8a0f-4715-97f0-91e3e570b428 30cea68e-8de4-4ceb-bdf9-dbcc445788e7 0eebcf25-3634-4186-9fbe-76169f52422a 54643d61-36a4-4bf7-8265-dfc5077e856d 3c469639-35d1-4ee6-b14d-dcffb4f6b8be 57a7464a-fc88-41b0-beb0-b92e7f3e2860 6dde9f56-1bb0-4eb9-b482-3f8a757b81ad 749af296-d5ce-48c4-8082-8751b90980aa cc66b2f8-ba27-4b4d-8f92-ab2ae115143f be8ed955-2a89-4841-8487-646f30ad8823 b6ba1424-e2ba-46b8-a44a-3a69f6885e53 76eb751f-6dad-4d97-97cf-3183ba499fe6 fe3ef0a5-cad2-4543-a1a2-911bf5b6ba05 07a818eb-c7ed-470b-8c91-1655160a1d4a e370bd3a-f8b7-4bdf-9966-79454797a5d3 557bf6b0-7059-4850-afaf-e61d949d8370 1bbe657d-3da2-490b-b6c1-ba8936dc6b52 33e6d72d-57f2-4f7c-97b0-4362a10447d8 3cc04a15-b35a-4623-8d16-453bd8359e4a ab88346e-b55a-471b-a993-94a4a6dee9f7 6f1af86b-908e-46a8-ae0e-5a326993afc3 4b956ba5-aadb-4b20-9da8-978d5f177b85 5715bab0-ecf4-45a2-80e6-c622a88ef94f 651fbce6-77c5-4fca-bcfe-253590a8464c fcd76cc4-73aa-430f-b9b2-37f25752a9f2 e720871b-5757-4827-8234-795793d853f1 45f418db-1f40-4c07-ae4d-d788b125a948 2857404d-132b-4168-babf-85bed7cfd2f2 8248fa2f-5430-466b-8a5a-dfc811b3daf6 1864296a-3bbd-47c6-ab4f-4e7fc5a90c95 ebd8ed47-9798-4e45-8e2d-a0ddbff0dd30 4eb2da86-a38b-4139-9d4e-a69971b669fd 7b0d613a-20d9-4670-8798-5501ddfc8cb5 e2142a6e-69bd-439b-a092-c58f8adaf6cc aebb078f-fb17-48d7-8fed-156ea3e9ae31 eb630aa8-f4a2-4539-a2d6-1eab22470e6e 38fb1640-6209-41d0-b369-52d5a06ca16c 0f0fb928-7654-4a6a-9bcb-96536cd69444 e85e5ba4-bf3c-4397-9066-10f4d9e6af28 f489db43-adfb-4493-bdae-979774be86a5 b0121882-ea2b-4136-a0fd-90250cb575fc 4050e847-af3c-4965-8d09-e5efb88d1b9d 20f33e43-4ea0-4085-935a-221b94828435 9aa407db-108d-4bb6-84af-dcebf059e78f 3a776421-af5e-46e7-85e8-873257bddeb1 b4598dd8-0710-4e3b-99b2-d0228b7af608 a5898b2c-32b9-4277-8342-2dab6ba55801 e1284582-60a3-4245-accf-edd01bc09183 d41a1a59-3d24-4772-99b3-57c7fb65c2f6 ef18131f-eac7-439a-b81f-ce4b781c9d1f 60de6759-525a-4df2-bc1d-024ae18d0485 c857cb15-51e0-48ae-a507-c236c65dbd92 0c9e8c0d-40da-4ac2-9cc9-b9b14b16ab0a b2ea0489-4294-4620-9d45-a553aa1c772d 217f00d2-1781-4b5d-802f-9cf4c51a7701 8b1011b0-cd61-4da7-8a4c-c438397cec6f fe20da61-40f7-47ea-8ec2-01fe9ec70088 d8e78ecc-5e59-4f5e-8dba-71eb14c490cc 06caa813-2b44-41d3-a3d2-79711e55943e 63489fff-a1df-4c4f-9781-6137e2e9edb0 c559330c-9202-4cba-8bdb-747585b39824 a5dd29e5-33ab-4ab1-95ec-d47f8951ff2a fa47384e-1309-46b8-98c2-eec1daaf2e5b 9b9e04c0-e052-4634-9a26-8b9b72e301f8 8bd1bb8d-1a54-4bc7-a632-efe02dbe3904 8d2719f8-4dc4-4828-b14f-e25a66d67a60 de736cc1-23da-435a-b058-ffec57938e2d a8ccce93-eea5-437f-bfcc-ec35d94d7cd2 32eec724-2d92-4de5-969e-fb5f963122a7 8a3ff67a-5e8d-472e-9f06-4a60e575615e 006ffaca-72ac-4967-a256-6a3b398e189b aa5dadc4-9243-4d22-9089-05b9ba9a8e12 c3823625-aa23-4edc-bef9-a1538956926e dd0dfd2f-7e71-48eb-be8b-c555ffbb714b 4d07d410-df11-4ebb-aee3-c0598a5ccd00 f6985994-4966-4f8c-b9a8-397c63640325 c16125d4-b92e-4248-8612-61c39aaff164 8c3451bb-e416-43b1-9e29-b98b10e078a5 03265090-b2fd-4fcc-a516-f96682efff35 4e647445-b732-4e39-b0f4-0fc473a00f4a 41204870-80f9-42fa-9ab7-6b339690bcb5 a8152a80-97d5-4f39-b024-501de84b718d 9dc8136f-3974-4fec-95e9-97a8594dc00d 9345feda-e07d-4f1e-9892-fa2bcd4ff4c2 57e518f1-b22f-4e5d-ad20-3d4717514f1f 78c7b978-16f6-4543-90e7-7c444210c75e c950757a-18ba-486c-be8f-b55ca084968c c37e68bb-a673-418c-be9c-f9bbcc64f1da 6ec5b0fc-73d4-4f58-8797-bdf7359e1637 1aae2082-381f-43f9-b3a4-40edf5c2d973 fb6b98cf-fc85-4ebb-a4a4-7e8384815933 4857ac91-e2fc-4268-9750-f39ff59551d2 3e336482-f290-4643-b194-d6caf693e835 8be93d7f-25ca-487b-82e4-cef22d07f6e4 07e9b24c-6e5b-4191-a224-4ad19ddbcebd 61c2c255-f298-48cc-91b1-abe138d59059 2bee65dc-f412-4656-ad9f-89253825354a f08dab9e-e1ae-4764-b901-6c63ce44263c ea0cb076-f387-4f60-90cb-19e6fa62b9c0 263843cd-77fe-4c79-8477-2cbeb9d5855f 7dec865a-0d68-4d22-b2a7-c2c66c05a5b0 bf1735a2-722d-4122-97a1-c2cff9152d0e f4b2b549-3f45-4b05-ac56-6e43f1708247 50f7e2e7-8df7-4db7-89ac-03db92d81fc6 11acc97f-4662-4a66-bdee-a8eb80d38081 d9642d07-cadc-481a-b017-02f749edaa52 57f9f2d2-00f4-4ea0-8891-30659acbce8b e2a6c89e-7ba9-4484-82fd-e4101e8641bc 5d9e15d5-49ae-4595-b236-7df6b17060ba 6bb614bf-5bba-4918-9e57-0dfe47bd5d17 289593d4-7cd8-47a6-a924-ec22967022ba e779dd48-28dd-4a5f-8c0a-e8b1e612ab76 71edf8b1-3398-46f5-af04-f77bf6147b09 4e245cb9-69f6-43b4-961b-e6478f245e06 afe6ed3b-24e4-4792-ab60-8a42be62627c cde2977f-4742-42a9-b3e3-d595604669eb 2c055056-b2f9-473d-925a-0eeb030b0c03 7d06667d-fd62-453d-b615-b72610fe8597 07ab5c14-45e3-4749-b605-fe2da2338ca0 7d10e240-1141-4706-ae45-f977de561046 7872f217-89b8-45f2-9b79-4e24750b5390 e664b713-7151-403e-a926-c965df83d1d4 4232fbae-2b3d-4e8c-aa6a-4e57886d31f0 2c018aba-ff9a-40c9-9b31-31bf9d8ce9ae 010c6d42-6df9-4f63-8153-8115b0525235 76b4a984-ac4d-4ffc-aa84-31c0c15c2b07 cfd9f3ae-6ea4-4867-9109-d6b788e23aa2 a99b7904-692e-4f34-ab4d-6759e6ffe39b 6fe7077a-6c83-456b-9958-69f8a98e97a8 38e37a9b-bf4f-4b6d-ab19-4b4d2241b038 ea446b35-f8f0-4e10-b570-97b6483bb8f7 d1273eec-bb6e-479b-83d6-e74e1d1a2b59 93ce79e8-6bd9-42ed-87fb-ee2e6c36aa25 9bf1451d-637d-483e-afdc-cb3e33987795 28cd5723-0659-42ca-b2b9-af804be66e0e 5a418a29-1ec2-46c1-90b7-78470b7ace4b 5e26fe9d-bfa1-4716-a59b-74e8f3ae98c9 d81d9ef6-b404-405b-8b2a-4bbbbeb35139 3bbed5ed-277e-4996-9f7b-c8919adc4b54 4b9eebcd-f1ea-4a13-8cff-a554b57a23d7 7ff511b8-0b79-4233-b5f1-1a5cbc094c22 866c014a-4ca1-4d47-bb64-fb48a2b43460 6fa526ab-6da7-4651-8226-a11e1ff74099 addb10c7-7304-42cd-80bd-3e631ded6794 be5d69ff-fc80-4cc8-b23c-2fd5a8d8d77d 360f0e78-12b0-4685-82ec-5bef540b4ca3 c588b73a-8704-4aa6-abb3-f71760de775a 3343148d-6f11-4aa7-b1c1-2bf1da433f80 43f549d6-ba1d-4637-a78f-b53bfb6054b2 daeef0eb-1f6b-47ac-979c-347f27ab0cf9 5c38114f-834c-4770-9535-d5d1fe7326e8 d6e4f904-4cfc-46ac-bcfb-11253ea00d06 e4c59f7b-df8f-4ec8-94d5-359174eacea6 bff13473-773c-4985-b7b9-6f3d9c6f7e5d f2b93be1-a1ea-46e7-94f5-74de019e2d61 f1bc3344-2810-48e6-aacb-d376bf7c2cc4 12ee7659-719d-4c95-b118-c59e5d85f960 641f5f29-e571-4da6-8d25-afa6bcc13e7d e54dfbbf-bf7a-4a05-a0d6-8c0e2408708d d8de26ad-81a8-401d-a311-ab0710bfd2ca c88b4af2-6a47-4f38-8ec6-c029da0f44e6 f19f275d-ce4d-4f7f-8731-4b52301def2d bd0ce157-2cba-43a6-b518-0984d7f33ede e635e359-d9e9-497c-9857-be40536336f9 63686a11-d29f-4b12-8a76-e4f1e99783e6 2a451b87-0e29-43b9-8847-beb827fd5275 6ab9dc36-d81e-4a2a-b87e-256ead998bab 9921da8c-9802-4582-b86e-5fa369f45fc5 132319cf-54ac-422c-b439-f37cd8301c61 3d8dc16d-e088-4f71-b966-59edbaa91eb3 cd411a26-4e5a-4769-a798-2061e714ead2 4c8afb67-f859-493f-896a-ece9fe9c09c3 27a4df38-f048-431b-87d0-e5891b74e011 af014ebf-9b6c-46f8-8165-ec23c11067ab 7f8b99ce-0bf6-49b2-89ed-1362581f2a70 50aa0247-27a2-4995-ab91-c5a63e65998c 8f67f4fe-e169-48fc-b62c-b51fa7011156 82a4f233-59dc-46ff-aa60-e23777d19e0f 0428fa24-08b6-4292-a7df-b059fe1cb6fa e197f742-3f5e-4e54-a9de-67850195c9c5 6f547706-3804-49e6-98f2-f2a4143a2009 7a101d65-2854-41f5-b513-e16159e698d2 be984034-9207-45a6-b145-3d80f80f8f85 d9d9c500-4085-4392-a7ea-c837ed8d9454 fec8142c-55a8-41dd-92bf-ca12733fc610 da2de62e-166d-44c0-a89d-3a6b1c0f972a 268b4ea8-068b-41cd-bbe2-cc78555046bb 268649ed-abed-468b-a735-3ff6258f54cf eb8f8a24-7e77-45bd-aba7-90774959871c 594976b3-9dc1-4245-b632-f02ec1267616 cb65f8da-fb2d-4d62-8a4c-83d83f8284a4 2305c931-910f-498c-8df3-75a4f1538ab9 24da4182-1175-4f09-9995-a2ed6e8bf63d 905f8410-89ec-4c50-8df4-7ee9aeef2f53 a847f1d6-0b37-42b5-b21b-62e0f132373d 5a76c737-1634-4986-a06f-0ab41a860e7a 2846a230-b498-43a5-80df-665007257686 b8b80439-2958-47f8-ae74-fd4d18300abd 5bc3fca9-a6c1-4ffc-94d7-9955819d9ffd 9c0feaed-d21d-40b2-99d4-dae5cde6ccda 5ed6e5d2-8391-43da-8108-41abbaf5de52 6dfd98b5-0c70-4498-9cac-54769adebd45 298f769b-39fc-4e43-8e13-0a686e19b064 644e4b0a-42b9-45f2-a178-337f782bc707 8c3e4630-42ea-458f-acd6-c55d1ea1cdad df09bf98-b380-4698-a78c-308a385fa908 c015a2e6-ed49-4afb-845d-f490a81e7d16 3862fe90-dc37-42b4-85f2-1406a49393bd 3d7f2438-d50a-4d45-b055-2caeaab29383 a20f3450-cc9d-457c-ae09-9da696638705 de1f42ac-08c3-4a14-b58c-6bd70e5e6dba b6f4d50f-354d-4078-af42-0ba0ceb140ab a04c0eb3-8ee4-4bc0-891d-06f5cbdab9e2 71d9b6bb-d1b3-4042-b891-d6074b75c0cc d4bc28bf-ba8f-4681-9842-e7655ea41863 6d00462a-facd-4a5c-b73d-b8d2832c8123 8ff889ad-bcf0-4a25-a55c-bbdd4767ada5 02b78bdd-03a3-4612-b795-f1536c3e70ef db38e973-e667-4ffe-bff7-c754e163dbf8 c0fa829a-6dc2-4512-9804-f68cb1715a88 31adebd5-92e5-4e93-b034-bbc59fe291bf ff38f806-be25-4d86-acea-f3da35b31293 edbe14e5-82ee-4120-9f22-e254711c278d 2dc45bb9-f810-49c7-832c-adbf588e2d53 a08fdbc1-2853-4865-a6eb-8fa438ab3dbb 80ea5c5c-6de1-4c76-8fad-f8b66c672b14 7c9edcc6-9fab-4c82-bdc2-9bd5bf90c267 9b45b822-f2fe-4cbb-8e05-565841f3c359 0141b14a-d7d9-40b3-b3c3-19624e6839c2 9c3df605-a302-41f7-a038-103769fc27e7 14b5ccb8-2ed9-4531-89c0-a9ae625f761e bd5f0581-8e18-4bd7-b1f1-a935caa138e6 333d18e3-a014-40ec-b064-e6baa5690368 3a75b477-2469-4086-9f97-73220b045171 200be738-ba4e-46e6-b5d8-f231ab55f76e cff43937-17ba-4134-9d11-8581a559e158 3fe480e1-8d10-48b2-bb86-614138713151 c6809f90-6f60-4ee8-9f50-b8e5243d9fd1 94df165a-eba3-4adb-bd93-de4d320c07d4 3e01d669-5052-4f73-a756-559a7b4efca2 dcd0b91b-4111-4b08-9cf3-195d80b3ec6d 1b072147-dea9-480a-965b-ea9805bab85a d3a89f56-59fe-4b38-b7cd-b000f3f96c87 c1f112c5-bda5-4449-a59e-f88c29151759 46704ee8-8556-485b-ae00-1634258ea000 21499099-5983-4367-b1c2-444301c9cba8 80a98791-a4d6-4662-8593-1e8b7944b016 a29de039-1768-4da1-8dc9-cc47dd979ece e59a249a-e7e5-4c67-bb86-57dbe46e300a 029ad22d-3e61-4384-b20c-f4d43efdb3e0 6dae1eca-b819-4656-ac5e-ed94acabddfa dee8fad3-c475-4a78-bfd3-768116f36bd8 66a0ef4c-dc17-45bb-969a-80523275eeac 696d95b0-d46e-4e6b-9cc5-fb066935ab46 d51eb6f7-2cf7-4bf4-b61c-0c0a064f8a1c dd964e04-9dd3-4c6a-9c6a-192fa57ee7fb 9989d397-7074-4db9-91b3-67f7d6ba0a15 5e408b39-1e25-4d2b-acfb-b2c06b8b5f47 991f8b13-a37c-43a9-b10b-387eef0aaf2b 176af28a-03c2-43cb-a1d9-4da59c41c5a5 8042a646-ab3a-4453-b932-6a286a3709ee 4ae25329-2ca3-419f-bfa4-0289f3279b15 25413156-baac-4fe3-ade5-a3fd8fe69b80 0f3d011d-df27-4d30-9852-a6c15efac33f 07eaa626-c9a1-42d7-b29a-6e1ed8a3f60a 86caf621-ef27-470f-bada-a6594cc44bad 9a9a0037-533a-4f21-8f8a-c45f744b15e6 7a5e79fb-ca28-42ce-9188-b57abf270278 0ace9774-a85d-4672-909f-5a88debe8078 a137b9bb-454e-4285-86f0-814328220206 6f6d80e4-a2f8-450a-842b-e8e338370fb8 3b2d3188-8139-40e7-aa1b-75777090993e 2f2673e1-b44d-4c90-be61-4371716f139b 47a02cfd-1e27-48f5-afdd-74df7cf1e5cc c0eb96a1-8e15-41eb-be86-9efe42ea9ef1 f004880c-69f3-4b7c-b36b-70408f62baf5 4475992f-324b-4c9d-a2f4-5f2bdf162cf8 dfa7e765-45cd-4820-a2b8-4c9e9f5e4907 47f297fb-4689-4707-a3b1-394d4f4ce1b6 6dc8f477-bb81-4156-a7d9-245db59c12d7 96766bdc-f600-4cc9-99c6-17e8d27076dd 3b9d655d-c998-4ded-9829-e0edeea8dba9 adefe747-5fe2-47bc-b908-88d898e44eb6 8b6bf31d-0024-493d-8fdd-65da44d5d82e d10c418a-a5a0-4045-b29e-a03c99fbadb2 1d8d887e-cca5-4fe8-876b-bc4a21db06ac cf775dd6-0980-48fb-abc8-113027b8a806 0b6c0d77-2a50-4006-9e90-c19e740da5db e8beccba-9da4-4a8c-982e-d7531d097472 b6c3a383-aa66-42df-857b-0e88186ebce2 71ef0a0e-0e6d-42f2-b666-530879b21ef6 734c2d06-42de-4a7f-bf7d-00f54b39c449 459a4e7e-968f-4bfa-ad42-da7ad6d0f1db 4c2aeb1c-2148-4e7e-8cea-5c7ed98077dc 73326d3e-1961-466f-9017-7471ef095640 88829419-9f73-4c62-873b-a5416a5e1097 88cd975a-bc6a-48a9-a4b1-db56e4ac8302 814061de-3eb0-4276-b819-1cb9de632f31 cc26de4e-dad9-465e-9e0d-e7233fb3c178 65290568-46e5-494b-815c-8e93771ec5fe 33d17fce-468f-4d51-b905-c6858c19ecfc f8f6c644-7e5e-4219-a417-e68ff9358dc4 181ba86c-1a8d-47ec-931d-5845c4a9615d f6423587-af14-4026-abe3-4e1b577fc4b2 b8fa3cc4-5f20-413c-8618-3b66111f0a23 dbe5002f-74de-4bb4-bdd1-7d25ae0f4ccf c5c3252f-7ff6-4851-b58e-d483c6b4a870 6ad37f0e-34d0-458a-a762-1717465b3d35 abe828a6-6305-4fb9-bd63-8ca29dee4e49 a577d5df-1d6e-46a8-8317-3e0ee1d56925 f83ecc24-8d30-4534-bb64-8494d727e247 047cc386-3c0b-4e2d-b48b-cd3446135601 a4614f83-dc35-4592-a20d-5bbc634a2193 77298f4d-a68d-4f5e-9279-8b3387c8f8ec 21c8264d-3b3a-4b0b-b7a3-8d148f9a3e49 a022cb0f-f822-4377-b5b6-584e040d10e7 d5900c33-fb24-40ae-b5b3-d0bf6b257ec0 b26d10d9-de60-4f3d-bb67-62dd1e112711 9a04df47-45be-4ae6-b32c-1ef0babfca7d 19964a73-fe2f-4e16-b46e-cfbd58f282df 9e9e3b45-7165-4e47-9f1c-6acd14c5beee e3f32eaf-09c9-456e-898b-0f8a0f9497c9 314797c4-ef9f-41d8-a1f5-89fc1edf5de1 bd32e920-0bc5-4e3f-871b-e3ee1369a0c0 9a8182aa-2b93-4604-9013-9d4f0541ec54 3821eb53-706b-477f-8960-f71dcc9b73dc b5a7c213-92c1-4a50-8fe0-4b7183fe57aa 229ee439-ed18-42f6-bca8-bfb1f9775f69 2a1c860f-4daf-4e19-befb-68af53d7a4c4 4c6ba73f-4689-4ebf-a324-200f2597fc59 643ec8f3-5a84-486c-9560-e6937e074d48 5b05c8cf-767e-4dda-9856-3d284177cd10 9c281065-f5bd-4132-b929-9352406a68d0 ad6d1dd2-41f4-404f-8d29-088f2f86b4a1 536d8685-8ddc-4352-83c5-f4a90a8df811 3343a78b-5f96-4a53-93c7-0a9af814316e a8cad04a-d8c6-42ab-ad25-81bbab3e4cc0 2d0119ad-d919-4c46-94e7-7a2049ac955a e3c98dac-0921-44f4-bc2b-a422e6456bf7 93aa3aa5-66fb-4ee8-a524-d36703a0dd09 a22ec0d9-2df4-4971-8c31-a273a7900b89 0b45b1f0-e3ad-478b-9a39-c0325c67bbf0 c72064a7-2ac3-4287-b0c5-f83aac941c2e 20c74672-ccb2-4ac1-8f20-de77b1f8465c 4acb5b7e-1d01-4c2b-b92e-696400708e7f a7958995-a50f-46d2-be2b-da9056567dfd f8fb24ae-52ef-477a-aa3f-32bce6556cbb a9176d5f-53f5-4113-a2e3-df885b19091d a49ceaff-0d4b-4d87-9daf-87bd640383c0 dfe8af6d-bddf-4198-9ec5-96156fe85602 55c1b558-2cff-4295-9a4f-6b9ea90ae633 e679e0f5-879c-4ab0-8309-f7f8e2999d19 b7f3787f-a834-434e-99ee-d825e0d02d4e 81bd7aa3-63e5-497f-97f6-15d92c79b8c3 ac735d71-09b5-4de5-8b74-cd5af175e160 121c385d-b676-46d9-8bb1-13aea8413431 93395231-3fee-448f-826a-efd58b229a77 92af4f3c-fbc0-47b8-8312-30f0bf904080 15ab5b05-9db8-49f5-b9c1-f7c15c6c0858 450e4223-5310-4d74-9b09-acdf6039c1c9 89abe06d-323c-4503-865a-593983da51be ec276a3e-1609-44a8-9d46-9a95a8d78f0c e289981a-bf58-496e-a207-fa8c2c02013e 3a118514-cfe5-48d8-b8dc-0a46ab9df404 f5e791f4-5868-4589-bb9d-5f7c7207a2e2 28db81cd-998e-4d9e-9d9c-fd9a53a2b94c d58fdb30-0a74-4c27-94e5-972a08b4c174 d0acec21-b310-4d8b-aa9a-3450779b2f5f 56b89e91-f817-46f3-9799-e68d5c2a0e69 1caf0f8c-f8c4-4b0e-8454-a051c6206e1e 4e4eb922-dfd4-44d6-a3ae-6079a4e47f00 5011f66a-8421-42ac-af16-9f52b143046e a9a3bde3-905e-4677-9928-93fce784a0f8 89c8f2af-9208-4e64-9ca8-cdf7306ab05f de15208e-a230-45d4-b7ec-824cdc958f4f 17f00447-ebbc-42d3-936a-b695ec54683c 50212af7-17cc-412a-8c09-7b5b63633d72 8ef180d2-b32a-4836-aa79-5392bf5d4847 b79c0a18-de98-451e-ad73-f73e9ab75cba 8942aff3-fa5f-4969-a948-db01b5dd8ef3 f99cb86e-b006-4635-b406-b9f10561d079 f30d9554-acc3-4180-a4f0-8ff9dbe99250 cf81fc94-015b-4f9a-a567-f652e4b1d6b0 4cc0975d-ee6e-46eb-8003-6b5e370bbadd 64c286e0-eca8-4e11-a152-37b60a5fadc9 5e40a1ff-6efe-4424-93ce-c0fc7e79bc6c 7f3cc6a7-dc28-45a1-898e-5186279771b8 ed41ed78-b8a1-4b86-8dbd-2732b2da9b9a 227c6f10-42f0-45cc-ab56-158ee9d3062d 3e3df52b-7776-4b35-9939-d8730e323578 d429b9f3-4597-4eae-8fbe-93772a14a5c7 5895c892-46b4-4b0d-9fdb-73229e12a679 253f1196-95fa-4389-b046-56863f93e3ca d8d52bef-0e36-4dd2-ade1-90379bd71226 caf1a9ba-c5e1-4a38-9032-f79635d83c63 3082aaa4-d303-4c59-a8ad-4fe0692afb1b 8664bfda-9830-481c-b813-aa19a566be7c 8a1ea23e-c307-439c-8853-852bde38ac8d 4bce2676-f448-4d0a-abd7-7649ddc11566 5ee71875-6cd8-4abe-bc28-e41a77f8d565 dc97cfaa-e7c5-487a-9192-7cdf338f3906 3ff16c8c-a5cb-4508-8eb2-a7a6bc51b5b4 8c0de142-51b1-4d73-aaf1-f74143b1d379 cd1dd32d-b961-4b6f-baf9-9cb2118f7d6f 898c9932-8fce-418e-80ac-dece4a620d4c 511e643e-0f2d-403b-b519-f4998eb6f112 be0030c9-82b9-41a3-bcf3-800a0dde0422 955a2189-f1e9-4f11-9c21-60439893c75f 35533868-52f4-4bf1-ba9c-a9da4076befb 1b6c7194-1892-47b0-af21-cd4a31cd6ca5 1299b3cb-799c-4341-a20a-2c929ce69f85 ef59df8b-a21d-40a4-bded-006435e30ff1 aebf710a-869e-46b0-999d-346343a15352 2efd10af-8859-48ba-b6ed-9eed8ede2050 13035359-6933-48bc-91fd-93a23e37aee7 8de527a4-f5cc-4425-a193-6460f4cb1298 0db7b719-de69-408b-8596-9139c851117c b1bbaf94-a30d-4371-a44b-d47a031addad 4a2d4956-4fa2-484d-9e6c-d0982048fe03 465b1b86-845a-4157-8d45-483dc6ad4d34 90042aaa-c8af-4e16-8269-1c7b9ddf5cf9 c73179a1-f40a-42a7-a8dd-d3a1a70541d2 d1ca6e79-6abd-409a-a61c-bfe936345844 46832e6d-544e-4858-9331-cf4d8650e18e ab61a51c-239b-42c5-86d1-8ba39218ae67 33f2c580-3de6-432d-8119-e22778b97e1d 6eba4845-2276-498d-b47e-0b63d2d5cfe5 d76f2681-c25c-455b-bfc0-27e3dae055c7 2afde1f7-dd6a-4fcb-969e-a872c68f0c8a 3110b4bd-7da4-448c-a709-60e16c227bc7 baf03eab-d7d4-4bae-be77-00153fec9012 c0c0513a-1a2f-4c42-bae5-92c40a7c7386 a09ca2db-888a-4885-8fd2-7a34837fd51d 835aba87-e474-4611-9313-f7d4ece19205 f043a1c1-b13d-43b0-8b28-a4dabdad64a2 427c836c-a255-46fd-8b0b-b8be1fc45fa1 20c492c8-9923-4037-aeb0-2339ac750fd4 12cf3713-fa8a-46d2-a830-15562ea73c59 578356fe-9ed7-484a-bcde-b42ad2b149d4 907cb7cd-c631-4db3-b4de-1491e6e14a49 b4baaf59-a4f7-49ff-83a3-bec7d1723404 accb2505-f5ca-4d25-bbac-51ec1e4b9000 c39f719c-a7ea-4c5a-b442-377990486816 f81e5634-02c3-4a73-89de-a735cc0ec7f1 2ffe83a3-56f1-49c4-ac7e-36e4eda38eb9 94d0432b-6088-4e06-9662-5fbcb6ea448b fee0f70f-11c5-487d-83a9-9d457abca93a ac18f655-af14-4144-b2f3-bff5e1bdc424 b18bb9e7-302b-402f-b742-4d87a14ed7ab db96370e-ddff-4ba8-9233-dc47b9497363 a3dfa9b7-d14e-45a2-b39a-3c6d4d90bef2 a438fd3c-a890-4eca-9b31-353ecb615318 ad2d0627-d74b-4e01-8b40-cdc3f2af0eb3 a22ca892-ced7-4a76-b44b-2b160d5aa5b0 0dea0449-469e-4962-a747-9afc8e2f8ba5 2ad46fad-4d93-4721-8f2f-2c7203f1e180 4c15a192-e969-4f2d-a06b-e1f4e6fc455b 5fb2814b-6fed-47b8-ad46-9e5fd163b603 ab9ff1d4-0a02-4cb1-a454-fee654c06229 ef6a38e4-9926-45cc-90ef-6ea0ea06cb48 57900122-14f4-44d5-a534-2b9153ef41ac 03db795e-f556-46fd-aa40-de2f508cac6c 74f5bed1-6a60-466c-879f-73350005f082 51a6dc88-771d-467e-a5de-b124e5556157 05885adf-f56d-4137-ba33-a1f1ce01db73 430f61bf-810f-4afa-aa79-3d79318fe538 3b18fb86-f6d0-42b8-a100-ed540f7587c8 872cfc01-635c-460c-a440-a97177b759f4 7e70f346-034c-4cf1-bde7-23ad0f38b12e 503a74ba-6fdc-4581-851c-f5f0f16ddab3 8d21575e-af25-4fd6-bcff-0018c3c9b0c3 d6d33725-361f-4abb-b4f6-78edf95e7e9e fd280b83-20cc-422c-b21f-8db0de439bea b6399526-9b24-4606-9983-05f85b80aa3b 1ddfc411-d623-44ef-a131-16a7c21a5bee 6935fc28-ce40-4678-9a51-31829eec7ee1 a32dea53-f73d-42ee-b5b8-cb61d64353d4 d606a847-e6aa-41f6-8c8d-424b9ff9a509 09178462-438d-4761-8637-d8d56e692daa 94be9d56-04d6-46fc-aafb-7dc0680c2c48 0b5a9c95-adcb-4055-823e-3cb7f0374ef0 2f30d8f8-aaf0-468e-bc8c-4b71c163a028 b3482931-a07c-499a-9cef-40e4193da668 360a8e56-4e57-4091-9f2f-9b8e86f11f54 15942d53-45c5-4cdc-9a1a-d77eb65ffdeb cc2b5031-adbf-4893-906a-a8abc8163273 183e3f74-daaf-41be-a9d7-a88a3cc45d43 1a6269f2-501a-49b4-b684-4b0cdbe64187 9c9e06a7-db64-44f2-87a0-47303f60e7ec d2d62678-4cc2-4f2f-91e1-97ed801c40b6 3d344d7b-8aaf-452a-98b7-c0fc1a7726a0 6c61ac87-699b-4980-a2ac-34361b0f344c 64b7342b-cea9-4994-9458-cd4f9f0d5aca 63d2f956-d591-4b2b-8047-9baa28e562de 9709df37-ea5c-4ea8-af79-2883ccad9347 80db626b-9883-4fc9-a5f0-94d7839057e2 58101a45-e3bd-442e-821d-113a72ff134c 84c7c8d1-a0fa-4a00-82a1-0dc697d9343f cba9f005-c020-4fd3-8d2d-401cc0d5e623 b2007ffc-52d9-4c16-bdd4-ecba8b9c46a7 d9234224-7d58-4069-9d1e-38c7862cfd11 272070df-a9ce-4a77-8817-f0fc72b5b15e 40f5fc9d-7071-4799-9cdf-4c6258f09e2d cc70e470-1afa-43f3-be5e-66cd977a9d4d 31583c1d-3b8e-4569-bb7f-d7adf576a9ff c24ce72b-ed5a-482f-9b49-23e4f8fc47fe d1698a12-a038-4d16-8238-973e7834ebe7 d433b537-4cb4-4f4a-870d-06a9830b4d34 25ef4a85-39c0-4efc-853a-9d5404a05af0 8bf7d76b-bc98-44b6-a0b9-c027d4f85377 3d32d838-9d95-43a6-8a34-99b963bea362 cfaba544-16bc-4fbc-b94d-7a09367656f1 34227a9e-3da4-4f4a-80f1-9001ee985f37 5baa5c3f-694c-4da5-ac5d-7c65fd4c980c 552c9689-5d6a-45a6-a7fc-6a781241100d 8c1c94f7-5a6a-4206-9035-256e356a45fa c922c23a-9496-48c5-8b9f-6687798e7402 24c45659-1e0e-4061-8ec7-1f76fc487473 71a6e7d6-b093-492a-8777-17fd73e99fd7 8729995a-8f15-400d-9a5e-d061edde2c19 cacfd45a-16dc-4311-b419-3d382ceb803d 5fa9a6ce-2d16-4189-8737-3752000a3bd4 60e0408a-1f1f-48d9-816b-cc776d95f2f8 93234bef-7f98-4698-ac39-34c380c0d403 0ec90841-bdbb-458c-91f1-d138653e31da 68efa861-a7c0-4ced-91b8-e01ca990792f fef210fc-6cba-4a80-a1ab-8f92d933fe53 1ec3b680-496e-49c8-9241-7cb785f31c50 835c077d-0e1c-4a3b-aceb-9db11a18a0de 71cb4647-989c-4f62-9c97-3be33b33ea4d daf9c2ad-5c58-461b-8c91-ab9239471afd df5cff8d-aeb1-4ddd-84f6-e57bb55320cc 5c562c31-4bc9-4f2d-8c7f-75593d99192f 3d6d2622-bb02-4849-9f97-2e7e7f732dd6 feaadc58-d34c-4592-a1bb-bc2bb196e46c 6b080604-fd9c-4279-869d-aed32160c543 b56a9a5e-5a27-4cfa-a718-cd0bca4e48e4 4fbbf022-daa7-4bd2-b4d8-f36f5962da4a 5bc4f24f-d684-4161-a08c-01f2d49aa820 81371296-2b45-4b64-8855-12c213031ce9 c81e589c-f68e-4586-bf8a-561d43d5cda2 2b291d84-49ef-413f-bd54-418ac534c01d 86fe3c1c-9186-42bd-95d4-3b49b573cd78 b9116428-ffb3-46f1-9697-296d84bf2090 67fe3c04-8fa5-44ea-81e6-adb9546aa069 99d2697c-34d0-4213-be8c-72096cabf9de 9897b4b6-adf5-4683-bf9f-bb56409f5731 a17e335f-f662-40c9-91bf-9db35eb019ab 0cfd3be1-715f-4c8d-9c58-e80b3bc59aac 9b0c25ca-3ba9-414a-ae39-681bce07a8b4 443d4945-d078-4686-8adb-2c51d3503afb 019cb5d6-3a2d-4ff6-b40e-82729f142e7e e572fcc2-f7a0-4029-ad78-e901a279f54e 7e99281b-3002-4388-8abc-012e871941ba 4ee49da4-29fb-4fe5-829c-cf997c45715e be9f3b58-191b-4bb1-8379-c2e38658c984 b9b9b858-0db8-4578-a0a4-82795646e6e6 466d5ca8-514f-4199-9013-359e79139ecb e9948490-0153-42d4-9133-d0b24a4f6efd ab8d0fdd-1686-4c2c-a186-495750174b05 5f7faf4f-e4b1-4e7c-b2a2-dc02af035bd1 830c8f14-1327-4ed2-a4e9-01508476476f 8cb6764f-7c19-451f-b718-7040ca944d11 ce8c0669-b4c0-4848-a6a0-0db44107da72 2bb2adc3-a75c-41a2-8e45-25cfec6ed44f 62ac4343-5444-4748-b194-b7077f263d17 cf71ddf5-1863-43a0-8375-bbfe3947c809 2b617875-0ef5-4d44-8e31-580a3af14176 9a0d616b-a8b2-496e-a660-77dc0f5ccb78 45a97960-5ea8-4438-94e9-f192e286a461 f79c5a2c-188f-4c4e-8538-7a13eabf0587 798a46a7-56c6-4f2e-9149-a674ca10262b 6473841f-927c-4f10-a76e-ac56668c214c ee3fe812-54b9-4fbc-a60f-b15a306a346e 478489b8-863f-490e-b2d1-b5dac69d3ab6 c5a4f154-cd25-4d9c-b508-e15739155d8e f9fb645f-7261-4309-b621-5dfc2622bfba eded2f33-c027-4714-ad48-89e61ac89c17 e7676c80-8cff-4254-9332-dd16d411ecb2 f01ecd6d-376e-4090-ac95-4b2c452c9533 03a160db-8c77-48ec-a85a-b8b4aa6b6b07 67472447-8def-4b25-a04a-c49c3a2b754a fdafdc92-de8a-4c6f-b442-01a984a5f16e e3dd518c-3842-4556-bcbb-4ac5ccb404ba 92c065d9-26b6-4932-ae71-e692e2db3507 6d1dd34f-8f9c-4a2d-87c8-b459c6a258e8 267d7eb6-bdcf-43fc-b1dc-c935fa81c881 228b2709-029b-40a8-a5ec-5fdfec78af34 f8bdf7dd-fe53-4435-a0e8-f4392a71db03 a664cd25-5f2a-4f0d-a52c-e4108679ee73 4ae5a2c0-77c4-42ad-b806-5eae7f233d36 5cbfdf59-c157-4264-bd20-3ddc350d25a7 4678a6b4-1168-47cf-8226-91a75b264dc0 33f0658d-5e55-4f01-9966-9678ae67c98c 29a53026-ab69-413c-bbfb-f1295236eb4a 06a4ad9b-a3d3-420d-879e-d1d64235cc62 8ecde128-9728-4bcc-876d-038a20ca7102 b5a3c0bd-bd9d-4ee2-a2ef-66935faca7a0 15e9b8a5-cf87-412b-bcac-e3023205ee2e bbb8955e-ba13-487c-b8d6-ba3b2024d86c 2bee1f3f-d6c3-4b95-b098-15a51c2ee90c 88de0b3b-d03b-4e44-8dd2-4c4dc5fa9c9d ab3543f0-8c50-47ce-9a82-5807b93b5d56 ffd21c7a-5d59-4ee6-bb6e-9754ddc4612c ce1a01f7-1680-454d-a25c-c609df366bef cd45d238-3ef5-432b-8834-850b1d281abe 009b28a7-fafd-42f5-ad51-fd7b902f2963 94c3e7ae-db33-486d-a902-5938b937bea6 b6f86fb4-1c05-4556-ad67-2b973f4a2c79 b9c305fc-43de-4e0b-a77f-fb2e7329c237 cfd4b99e-0267-4401-ae08-8c726ff6d4da b9e06517-919f-4d04-9b1b-bc901ca2d48c fcb9e810-0bd8-49ac-8148-d2fd9343da13 e2903ff3-c542-4592-ac28-bbc5b69abba6 e1926b37-d917-4885-ba77-e48f569b5425 1cb783bd-8737-4139-b8e1-bb9b651b1940 d767e7d3-4928-4d2e-8d48-ca06c3ad8126 2063757a-7e81-4dad-8e80-a36ceee60327 6286598a-630a-474b-bf33-8d6323137e8c f1e21f38-ca7c-41f1-b863-3be620dea361 9743a135-e9c7-4bfc-8811-db209daaacf2 61a0c4a5-295d-4b11-acdd-5260cf07a067 f1ef2e99-fbca-4cd5-9445-bd4d176609ba d9dd7835-6c1e-4970-b23f-c36fefd91f0d 80b3ee1f-4b1e-4c05-9746-4da5764dea51 4202619e-ca9f-4ae1-b41f-e904b3bdf76d 0761ffc9-16a9-420a-b35c-5cf7517bc781 eaa060f2-2652-4a02-b695-ae7755eb92a7 cfb3c733-ea91-4750-8fdf-418de0a28a18 d430081c-288d-4917-9d8e-60e996055a5d 70b2abd0-f5e7-4d58-8a19-003b214bad73 d7175f64-c723-444d-a013-60eb35a63d23 f0a40b1b-acac-4f81-8ff2-a41bb6f5ec3a 240c4113-1a47-46c9-908b-661680f7d51b d3a3f175-5ed9-4ca3-9241-dabc735737dc 9e179688-0609-4394-90f1-8601d7dd355c 70850c03-dd5a-4a19-bcb7-372b5cfdcc7f f09e0f62-6ac0-4420-811b-f62c13c1fe95 b38c2f57-73d5-48ad-9915-6406d89268fc 76d4fef3-4bef-4ab8-a780-f6204c9be94b 260f272c-0133-44bd-9fbf-cb873ae4a9d1 78c64f72-8499-41d4-a894-448441ca8f68 31467307-e23c-4dce-9d96-43463bd8f3e9 1e28aa8c-e352-44b7-9f71-f614f7a60742 52f6e20c-a26a-413d-b174-80baac2ac9ed d4ee7b9e-84ee-421a-a497-cc19d6804c46 f12f2c8d-8588-41bc-bd52-0f53cee3284f 5f8d5e6d-fe84-4ace-b3e7-d7b27726a894 5819115d-9720-475d-b4b8-607f75f3cb90 48375bd6-c8dc-4d68-90ed-07868f405e9b ac9aa77f-552e-4cde-9435-abe2ea5c788d 7dac68b1-138f-4be5-a47c-d4561e0f3413 29bf83dd-eb71-474f-8b19-312a7a623035 49138561-7f70-4d3c-a182-5eb41f36da2c 9f6bbd30-96da-44b2-9896-211e4c206481 f95549ea-d2df-42a0-80bc-da00a3f97e58 a691450e-0227-4f26-8264-33e0ed188164 dd466cf5-f02e-4031-81ce-c450d2dcb9c3 e5d073e7-c36a-4588-800c-a346364d7dca 2c2e3fbf-55c5-48b0-8448-2ad4d529f273 8ba3aab5-5e8f-4afd-8300-faa67d2165cf 19570406-72e6-4f1f-a60b-e32b6cb4d685 aa56e129-62e6-4c5b-8f55-60b095f5a112 dc4a496e-b6d3-46dd-b1e3-1b312377de19 7126d9f4-4c5f-4ff0-9a72-c24aa3e4ee3b 19955e99-8421-4505-a2fc-31a42d5f8b2a db51ab74-f216-414d-a261-d3392879a57a 00f54b26-8166-4929-9e74-d17c6f6df775 507034eb-89bf-452a-adc9-8e6571864a58 616ab3f5-5cbf-420d-8b54-1b804b88b875 57320975-c2e4-4497-b9a5-22a46bd371fa d31293c4-ac89-47d2-9a9a-88dab95c04af 6dae165f-375e-4734-a08b-22e327ff9cce bd21cd86-dd98-4bcd-921a-897ac4f355c7 833ebe64-4ee2-4ed4-8432-6f83606ef6d6 100d7510-3a36-4247-b701-0e28a69ffde8 68f1a5b1-93e5-4322-9f2c-77609a303695 a14680ee-46e1-4da1-9c65-3d87b0d7612b 8f375c63-3422-425a-bdd5-837be5dff046 1097abd2-0b02-4b69-a7a1-59f0120dcc5b e1319eca-11e5-4ba8-9cf7-7eb0a54865cf 89ffdb51-402b-423d-bd15-c810abc7d721 2febe300-e53e-4cc6-a79e-aab23e3736fb 68e8258e-516a-4268-8614-8c783b3fc3fe 99618ab1-ecab-4afd-bab5-93d17aa143ca da95fa1d-1b71-4f3c-b8b2-a97bcd0b238a 12a42ae4-831c-4367-acb6-3acef462b204 ab4b33b2-fdb1-4e95-917c-2ae3351a74c2 68a09f17-cb7a-40bd-a3b3-e27c5b62bb12 6121b7e6-b5a0-4bff-84ce-adb58da8058c 2fd69f5a-ec18-4fa6-af46-049563913600 09f0d486-5a7d-4109-8d67-8780e36351d5 212256ba-c6e4-44cd-8a8c-c28695646274 5c2fdc52-d22d-4186-972b-cb5ae6978de9 55a98f4a-70d6-46fc-8964-92e752a74725 afe9d15a-2662-4126-89ef-2055fb824489 a52a6be5-a987-41e2-9e63-2b09f36c95db d3f30b94-f15f-40c4-928c-c9566fd04e68 45f9395b-920c-4da7-8229-b0c7b195db9e 497268d9-d373-4f73-b2a7-60151416437e c58d2319-8f0b-458a-b42a-6f011840c67b aa8d99bb-2721-4959-b1d7-2ce4dbeaf71f 6b394726-70da-4828-8a58-2fe8f87f9872 203d35b1-cac9-4aff-b6cc-7062c11937fd aa025787-e161-48f3-8198-15ca85a44a79 17d41b01-5e01-40f4-8dbb-4be179c5d3b9 889c46d2-d655-4275-90de-a7936d882f19 68aab905-b3aa-4784-9fe6-4a1e1536f0dc 496ec994-8ab0-4c1b-9f50-8d244363ab0b 621f13ba-e6be-46f9-8221-a2976324ef95 d174a583-0628-494b-8d08-85cd099ebd03 23486092-66ed-4b75-a05e-5fea32c09b03 69d1463d-3d08-4a90-93fb-364e641739d8 720e44dc-676b-40f4-8501-3fdfd3e2d8c7 1d24b9a1-84ae-4499-b992-170fe9f3acfa e96bc2ba-d546-4f73-af17-3c9d396c172f b5705c51-0184-469c-a5ee-c582c29031c2 253535d0-fbe1-42ec-ad2a-edd42e0e17b4 249eac82-143d-48df-83e6-75d4be97ded3 a8dfecc1-4a9a-45cc-8be8-b533beefff58 c08b7401-b125-41b9-a598-a5d5e1983d43 4f60e6c6-d71f-4cf8-9bdb-c06bc7add4a7 5a595362-9164-4596-aae5-c8911e3ef850 605361bc-46f2-4466-90bf-cc8dce95be31 ededd87a-1099-456d-8759-a2957c679f07 bce29235-3b0d-45ac-add7-a4c8aace6747 77d77ade-abd4-4732-a2fb-c0fb5901a143 e4e3e6e2-2015-484b-bcac-fd641971257e 35aa0476-3850-4e88-9199-c7b69472c915 6927ef3d-320c-4fd9-adc5-e9d38b0959ac 7ebb8c9e-751f-4c06-af03-0e4a077b0b5e 1e12fc1c-f2aa-47c1-b436-10ebd133d753 0a5cee54-2948-42f1-94a4-41a448af4b34 3000e952-a893-4690-baec-92d951c32be1 0e7e5507-eeb8-4aa6-9fac-c621a8270d8d 5690e977-ba31-42ab-b1d4-a3e8de12c297 6f58cb7f-98d7-476a-a712-6e14b5d14606 7f3868d3-2a9a-4314-8ff8-b53d3d1c28c5 e0b6d75a-7a89-4bfc-bdb1-7bd7729037b3 f8794fac-7f3e-4580-a66d-7d0302be6740 bf016468-23f1-435b-9721-6c84a15f6306 f26c1320-89c7-47e0-a5ba-7efab0789c38 0d4c784e-4a74-42f8-9d63-b0570567e39a 4e4664f5-e3f7-4246-909d-fc2402a23bb7 dba29cbe-c9ae-4e0c-a9aa-7c5e9d08500b a208e148-8829-4820-b8c9-38f578bae052 344e4f06-c5d3-40aa-acbb-ecd21af38e23 3f28687d-6fb1-4a04-b182-f9070619eb9e 0e6ef5ff-1e27-4373-96fc-5c1362e9a5de 18335122-f593-41f2-8c50-edd98f4a6301 0f7c082c-6394-44f0-a230-5540f94991d9 ab0a57d5-ec57-4d14-a0e6-b98b145c5a3e 67d17ad4-3192-46a7-9052-b0633e718c47 98cc8658-40cd-4598-b696-299161102111 126cccdf-0641-4623-a060-012fb644bee9 f76f707b-7357-447e-ba32-763ccfd9770f cd9b5c4d-e8b7-4736-8ce0-124082853cdb a8cb3d0f-dea7-4e90-9956-58d23c08e677 0e20e623-2d69-4bdc-9ada-0710d7a1d42a d760d916-60c5-4382-b089-8421072887bb d4278451-8fae-41ae-87b1-107e2a61d8be f5b7b39e-165a-4bd6-970b-2b4125993972 db256657-db61-4981-8602-26b3f0c3ab31 76b2885c-6b34-4583-a79d-2375e6e59836 9bceef6f-9c9e-4957-b8e4-e8df687f3627 ea871ba7-ab3c-47d4-a2a0-6e26f9ef1a40 759a0728-fb58-4cbb-ac93-da774fbf2ba6 d21e5e55-3dad-4223-bb48-b6f60e4e790c 46251473-2416-4b2c-ab85-60c7d34144cd 554c66c8-2d0b-41b3-a773-48535fa38e09 a525d254-e7da-476f-8613-b22b8f27782c 8205936a-3a5c-4d80-bf2b-f2791706edbe 0c9e7db1-b327-4d2e-8964-e75a444c9442 b1231960-a041-44ee-ae77-2d34aa9052ea ead0fd1a-4cd9-4c0a-bed7-a5233c97375a 96ff722e-76c0-4b74-ac86-3deb4f9ca941 1c99d8d0-3fe6-41c7-a9d5-0c34d22e10ea a929150f-66fa-4ce2-b4d9-f699e7a2fe7d 96e933b1-1750-49ae-982e-3a5b6a72b40c fcb9ac88-9fc2-452f-bf32-f0fbd2010069 a3f73e02-8fec-4731-8abf-9e157c1f9296 6f420f2d-8386-4bf6-9c66-090df1d3e945 cf247d1d-d5bb-4d5d-8d94-62f87c1cbb2d 46d9881f-4d6b-4d90-b4db-8e8fd307a30f 9c80ea55-6f12-4349-94b1-686db5750a29 3015cc19-65d4-43fe-9b90-7cd9db4d5b1e bffa45f0-a03a-4a81-879e-513892191ade a53b8172-9406-4d0a-90db-4e93ae4de141 d14875ca-a7cb-4491-9e60-063f8908042c 73b7275c-217b-4479-ba77-b43b5eb60dbe f8bb5d25-8bc6-421d-8811-2d1ed1b37b54 9e520b7c-f7e2-439e-9f1e-fd89c27e6983 261b6330-6f81-4efb-b04c-8e99158f44fa 7b5e121f-d14b-484c-95e8-4a2452aeae9f 87565571-ed6a-4588-a9d3-6b581e8a43c8 acb8f7c2-7457-4e6a-b245-01384e7b57bb 74f76884-77ea-4898-9a7e-eae0a899840c ccacd1a6-84ff-4020-b73a-e2170d943a83 0eef142b-7dfd-49db-85de-c655a13ff385 9d8fa173-5547-45e4-9bcd-5e92dda491d1 9271576b-5790-4512-8893-c1ab32f6b01b 7404273a-c1e3-4c9a-b129-11434abf1439 9b3ff196-9a49-4ab9-b087-1dede62c9efc 9128f302-4f93-47cd-a546-476a81bdcec0 9abb5003-bf00-422d-892d-2a91a27a67ce e3e88da5-5d90-4494-b9cf-164798ada3e2 7c060524-1728-4589-8aa4-3f3223cdbb2e 3ec52539-3012-438f-bdc4-69e7d9565c91 71349d88-7f6c-4e82-8e43-e04333cee09f 2afce2d8-f5d1-4120-9750-6037754d7976 c540a1cb-0b02-4957-af22-86fba3973906 e1b5a090-54de-43e3-8241-83be8b1053de 1233b5d1-6b1c-45fc-bf17-96f31b627aa3 a1df87a6-02ae-4cdb-8af4-429da2bfaf50 bb2f6925-eab9-4cb3-be10-3c700a9a8c89 8c5c63d9-e5e3-40c3-9d1e-e4ec6ce36cf2 db387a7c-ac1f-4e15-b12c-bc4544811710 b86d2523-d943-40a6-8ffe-156641954a62 25591c81-544e-42f5-9138-6646d6c108a3 676a464d-c789-4c6e-b981-657e65b51c47 c322bbf7-e8ce-4888-a66a-9db4b31606db d3c5c887-42c9-469e-a8e3-50c25b2dffbf 891691c9-4df7-45ca-a4ec-b879d3e4519b 03c51b29-2b2c-4413-97cf-84d15bc20ed0 f27e2e91-e42e-458a-85f2-9dd16ffb59e8 bef6e86f-1fa2-495b-8aeb-42fd1413c9f4 e1eae6b5-227b-448f-a3fe-c05e7d0265e1 667a9375-61b7-4cf7-9227-440365cc6a25 e6058e54-8fec-4226-9e4c-5d512bba6fa9 b5fa0956-1cb6-4056-b5ad-738b3a43838d 9f49606d-dbfd-4272-979f-d07dd70f97d4 4167f39e-66ba-485d-84b7-1637e17e5fe2 ac469694-9dc9-4199-aa30-f3c59b6b61d5 1baaf7e6-5f5b-4602-9695-ab8991c6089e f65a1a59-4cc3-4c95-a62a-32a23e9919e9 77ab1061-e6cd-4161-8ea4-9cd1d241186e ca0b290f-bd1d-4c59-b20d-2d1d5b28157d b11295a0-648f-400f-a4df-1d9a0205b333 1c3d8a05-fea3-4700-8368-09760326db1f edd03bee-d1e3-4104-b0c6-3f7950d21c39 62824cfe-53ab-4953-8d91-cb3959d4d694 eb0b7f5a-6a08-4431-9b71-bb6ad8f6059f 0615dc4a-7b42-4cbc-972d-c17b27b02843 e84bc25f-402c-4f36-ab0a-3ac18d39648e 62ff8e80-b15b-4b67-aa3e-22d30309f6c8 8d4f44b8-c09c-43f5-b2a9-dbe136ba1795 22ca66dc-2a35-42fa-934c-83d005a00378 8ca87756-33c5-4c5e-a868-90f1a5709a2d ca88d073-8afc-479f-bacd-57ce354aa382 d8a213b1-722c-4d80-8894-3c74d79b0325 e802de6f-dd3f-4915-b6ab-cdf32eb81127 150e9d73-b1a8-4fc6-bddd-f3807b88ecc4 d889241d-41cc-4266-a15c-1707136c8d52 f5820132-ea5b-4ac4-bbfa-a803b77609be 67609ea3-08d5-410c-b61e-33b7af9e971e 375341db-2594-49da-9879-4ba73a299bf8 71605dea-8198-4894-8a4b-f20740103a73 d0cb6487-ad71-478c-8aab-3539ba7f67ad b7d244fa-0baf-475b-bda1-ec5b344e869a bf0f0f09-0449-49dc-bf2b-9f3244a3c33b ec8fc94b-fcf5-41ba-bdf1-bc5f991173ef cbb9b581-95ac-43ee-bb9b-3e68da84cf9f 2bbf6e9c-6c55-45cc-9717-380118c95ef1 e132c6bb-3518-4a91-a4d7-92c4c6cbb1ce dc58a8d4-616f-4d18-8ea0-0ca4afd9b56f 6d50a126-ebd3-48f7-b07f-6ebd8c037d49 4e48de15-5e20-4160-8095-b59af861597c ff441477-d431-489f-ba23-ba96081499d2 20ee1fda-1229-4b42-a247-f49f16a98a19 b074b2ab-334b-4d56-a580-432a723e2a3b 9d078ea3-0fc2-4033-9541-504e81aa05a1 40af1012-f279-40e9-94f5-f623f7dfdc15 0d466488-739c-48da-850a-157d72c7939a 9aa5421e-bb0c-44f0-80b9-bdd30fce81fb a72680e1-db13-4cf8-bed4-3c9367f199dd 8e209439-7266-4401-a02d-e0ee9f2cc392 be11e37c-aa1c-4b9b-8755-4262bea8a76f 09c75793-3658-414c-a9ee-f76c07037206 7370bcd6-6588-498f-b07d-11eac505e915 1c66c2fd-5175-446e-8464-ea543c724228 14844939-f3d5-4541-8386-066fcbd1f002 7d56c6fa-13d1-4888-ad06-121ef2ce56a2 1715c675-39f0-4c40-95e4-21b64862106f fbc6cd55-6e8a-4600-8148-3a4ca13fd40b 56fc3736-333e-4166-9a18-be833f08596e 58828329-fa02-4d87-8e4a-08b41eb227f2 102b0574-da8b-4d6b-9994-fe9c95dad1d6 dba46100-a277-4c6a-aa1a-a97bb8cea4fe c2df898a-40e9-43e4-a009-1afc3122b468 2809a9c8-2f81-4759-ad1f-bb44f4f204a6 9baea3bc-aba2-4b33-be36-a61d0641879e c06eb71d-a799-4cfc-96e3-cc65c29c5488 2354e8e3-7b66-43a4-9f12-a7aeed85384b 57064429-410b-4524-ab56-13b1ef2b54e7 4173b6ef-5997-411e-8faf-1a5e23a36379 8d2adad2-3b80-4de5-8992-75b69512559a 5f207fb4-94ec-4d71-8144-1e817ec832ea 8b9c9999-1ea6-43ea-9b33-23d49a018f63 1802b908-f370-47a8-86bd-54d1202cbfcd 282976ba-28c2-4d3b-8456-b54a4e004e99 c34f5a35-7a7b-4729-955c-713c271bb12d ce91dd81-be6b-417e-82d1-6ec9ef47c56f 775caea2-d8c9-4ce4-baa9-29f22017d5fc 61eed70c-4c5b-41ef-a130-6349706c30b2 965c58f1-df6c-4bf8-abc5-28302085ff31 46d0a22f-ce94-464c-98b1-81a0d331725b f4f74818-c227-4490-95da-06e79b5a6eb5 ce4cbbe0-2355-40db-b076-69c6db9755d8 e7f7b979-fe09-4344-a4f3-3c3e0c9d404b d5952e78-d086-418b-b08a-729fd53d2932 b38c9938-02f8-48d0-8a0c-ed6696bdd410 32d56e12-2087-4052-86de-e83fd746490e 55a50a56-3a23-4a04-898a-2d168f0aeb32 65aa4e4c-fe35-4d4e-9767-93fb52b3697d e18d9014-eb82-4fa8-aa7a-c5524fef0f99 4463c07b-118c-467c-9426-67c00107855a 6d934321-0022-4e22-991c-1f895a66c473 d5308359-5fea-4255-a952-d6f28c9e9d81 0d755fe0-689c-4d17-b08c-d0181226a0cc 40e4d177-e11a-411e-825f-a5297cf9ec6d 906f5b3e-6e81-41fe-a880-e6c59f9c2d53 dfa32faf-9474-46f0-b883-e1cb13dbbed2 62b5329a-7b08-4b75-8d41-63d2e84cffd6 6ed4de04-6df9-4678-9258-49d9030b9465 59fb5d5a-77c6-482a-9803-6a95dbad7586 22634c00-ad67-4e98-a78e-942650d05ab3 d5011966-7141-4bb9-b93f-5037d6b6dfae 0ef5a4af-a957-4938-aabb-26c571cabd2d 12424c0d-0480-4423-833b-b84629889cb7 f78c7933-6589-488d-b273-80d9cabd7cef ce3dc242-2819-4d5a-ac8e-248c069c7216 79c7cab0-87e1-4a68-8f68-dc6d8d25eddb be161559-226e-49c5-9516-c91e21929e17 c5492dde-1f5f-44e7-918c-a3e63164fa41 b97f09c4-cbb3-4294-b998-074208764668 c76b3793-d87b-4e27-a03d-ffbbe5ff7e3b 83983c80-535b-4bcb-9f12-72434e400525 083d2d40-0f98-4b89-b593-c5f9ecbfd385 5c398723-f5dd-4c9c-9b8b-9e7fc24448c2 89ccb222-d4da-416f-b8a6-175641e5008f 322c5584-4668-4900-8693-c3790277fd17 4eb8bf43-76a2-493c-8e6b-9d83508c4b9a 7aff839f-5f7e-43fb-9fc4-784191319994 528501f8-4bb4-4a68-9e25-c2a25f30500a 3706bd5b-d8a6-454b-baa8-408d20b83807 c8417859-b67a-4f72-a5d8-acca5878dc0d f56433cf-2197-46e2-8d4f-5b49bb0d6c23 d77c2103-821b-4429-bf14-12cba9076cb6 8c463d2c-9f9f-41ed-a20a-fbebbacc81f6 a3499894-11df-495a-8315-ea8d78f50acf ff83b6b8-2462-4030-9c38-831db2b9ed1a 17131286-1c9b-4a78-a29b-c43c80515c10 75db2591-d420-4880-b01d-7befb61c98a7 b38adcda-373f-4cec-a312-5f5791408b07 52e89d60-0ec0-487a-b280-7dfbe04a62bb 71059e72-99b7-42f4-b6b0-c0a3ee8486eb 58799a79-c986-44a2-9dd4-f0beeb686228 526d2156-4f10-4f3a-8aae-b7bd25ccf469 96ecf752-1dbb-4272-89f7-d984a30a109b df70b954-1e1b-4e4c-baa2-28fd7baa0c0b d0ed987f-f327-41ba-9b4e-695a32c0e53f 60c00182-3190-46bb-ae6b-27e722a26601 7d1ed66a-46c5-4eb2-ac07-7f73df261ad6 bce77ee1-f364-4f7a-8c78-65363fc8dd63 3476b181-0446-4389-9fd1-764c6ef357d1 628272ff-887e-4350-9ab2-08d8b06a25fa fdc7d7ba-5836-489c-8f52-6339285c43d5 e262d0b1-0d31-4876-b084-46ca50784c5c b4f414e0-f097-4f57-8aca-ab3cd0bc6c29 b48adccb-935b-4a06-8900-62e3d141d763 aaa016ab-bcad-4c10-bc78-67067b9c0e89 b1fa79a1-8396-4adc-896d-50364a1f5f43 0d76f850-781a-4120-9f95-58ea900c8294 d2f4de60-95b1-4a1d-8c4c-0f1f451bc5c1 0159a31d-e183-41dc-9e52-32a8ff263fa8 ee302583-9580-482a-8b5d-a09f6fed74ec b344938e-057c-42cc-a061-07a5d9e6849a 953b6bfb-0387-4d35-aa50-826ffac5e72d c4c81b56-f7d8-4756-a4ca-f4f487bab96e 4503a5b8-9c0d-42b9-bca3-e2efb350287e 13e5d0c1-179e-4864-b639-b89033bac192 b614e4e1-147d-4c2f-a79c-ef207cffb0c4 4c69e099-d959-4f5d-8000-63fa9ded614c 12e7a392-f7c0-4824-a584-114998086d30 c113777f-ae5a-4185-bef6-eafb6ff92dcf cfc9b7dc-e839-4ab5-8b82-5ed686ef8520 9934a27f-76c3-421d-86fd-2f9ed62cce11 af9cce50-bafc-4ddd-8d0e-da397377a274 23348f06-e6cf-4ade-b898-13734ee07dc3 6474696e-4c8c-4449-ba16-aadcde0b96a0 efa6c976-5717-4a49-bd94-b6198b0ceb71 7e39cf28-d7ad-491e-b386-ce767fed9ac2 d8ce2bf4-6887-4937-86b9-4e841ca6a3fa 1edacb35-9b0f-4a76-a09e-9319b2069693 0c95e0cf-8541-4abe-bedf-4d19643e2f7f 23fc1ddd-1d9b-4bf6-8c9b-86468730bb6e 6d92b12e-0e7b-4805-8eba-77cdfaa62407 bd01f63a-b1c6-4fad-a7d7-ce88b4c4e587 5bdbed9b-7fa8-441c-a453-2a8edb261308 691693c1-b59b-417b-b193-76a9591c1a12 4bde6518-d319-4512-ae46-df8f24eca83f 8a8c6463-7a8b-4152-92fc-945f2a115dd4 ed24a009-291f-41be-8556-ae6f0ae273f6 b8cb5579-5764-428a-b76f-02159e0e8ed2 27ca8e55-7619-4666-b029-5a5291483b24 326bbb29-8f5d-419f-ad59-43c6f1afbc10 04e42630-adb8-41a8-bf3b-60f69658431b 78692cab-45a7-4d40-840b-f26dcf00c663 ca7fa93f-8388-45c0-b436-1a5c0241b6e0 3b76d98f-c0c6-4a2b-a3b4-10c4837cf362 8f6a7fe3-b4bc-479a-a5b0-1b1e5e7fe4d6 9a1b120f-79b5-48f2-b29c-7e69f34ed7e8 5bb263ab-fbf8-4b67-b329-66015e13d2da e69eba75-d8be-46bd-88f3-069385ce9146 30516989-681d-4036-bef7-4831fd01171b 0f596b24-9d20-4753-b80f-07c9ca4a9e94 6ee58037-f169-4b1e-822b-cbdd762aed3a 4d09516a-befa-469b-8cb8-fdf84d3d10fc c5f3b54f-e900-4c2b-86eb-afbf999d1416 3b994c52-be6d-426c-b238-e277356636e9 2dbfa13b-b5ef-4a83-a870-dcda2c29c2d8 dffdd9cc-30eb-48aa-ab4c-c326a6b23759 0f8d137b-ef60-42f6-a3ba-3862609dc90c dcccef02-16da-4f66-bc51-9ed99170e1ae e94b7883-2632-4118-8872-928e7846032d fd9c9dcb-924e-40f4-a44f-71dce4d08514 c80b5042-40e6-4fb6-815e-534a2ec9615c 88607959-c53d-46fe-9475-346a0d0d4d67 c0c1ddf6-6a44-4ed6-84bf-29f29fca0a43 b53ac900-26ac-49dd-a96f-04fdefd92190 e32e51e0-a935-4481-b1c6-1273ece11276 23050595-ac79-485d-96f0-a825129b443f 6ceeefe7-4343-468f-a9c7-f7af6857c59f 051cc94c-850e-4a19-992c-52b2c4ffa199 50c5f6f5-cb88-4441-8540-3a5440b6ad38 a0815fa2-bdf9-406e-a60d-ef30aba460f5 8741a3ee-f225-4a6c-bac1-fbc9eb15df1d 11b74e62-5dc1-47d3-a3b1-fe66e048c6d7 faef000c-ffe2-4d8f-83ca-1fc28d825347 906e60ee-51d2-4e7a-b586-52ea4456df6b 4e762e38-6963-44dc-b454-d35bb9ac23a0 0a445e1f-8343-4624-9d68-4767f17c3390 d1b22b9e-3f6f-45e3-9a96-3aab20483434 1474e69f-eebe-41f4-a828-09c3cd5ec270 1a2ae1f0-3634-411f-8003-e322444dba77 6e23817e-c232-47d7-a871-d25c52687f51 401f9b1b-0cba-4bee-8e43-ca513e3a6a6e 796c8a27-2ef9-43ac-87c1-5942468c1cb1 fab715a6-f419-41fd-9603-de0c1f95c426 fb9f5558-0833-4071-ad1d-798e256be4ed 6fd63b71-9b15-4a0f-9d1b-5b6063741ab5 0c30e087-e6f0-4b5e-9a28-dd188f14d00c 83bf1ea0-2fa3-4c33-918b-87c779669729 1bb27919-baa7-4fd6-8445-f514b5a0336d d458b2d9-c505-4a3c-aabf-9c8b5a9342f0 4f793c1f-6e21-4756-b080-fbcda4b0fa66 f788fa75-4ac2-4f7e-a4a2-6c2ea4f02211 2f5b0538-caa1-49f1-93a4-1971e74ef5f2 354f0707-e771-42d2-aa7b-ab047070adb7 8c0c5fe4-1b73-4a10-8826-177666f7f730 f96429f9-1a87-41dc-9b15-6cb39726f081 d32707f1-d8cc-48de-ae12-9a1c5a8417e2 d0bf215a-019d-4b90-9775-4bbd49537e23 ca78f1e3-7c7d-4770-acf2-a6d31b3a6ebd 4df3080b-1040-4e27-b55d-52af0fa2fc9e 897da608-469b-474a-9e9d-7cb6f272cff3 b5135afa-a97e-4749-9218-37c3e6f90b8a a0b3cde4-67e0-416f-acc9-9b55b2c6e576 9165ee84-e356-4b7f-9a47-d1c75b5d7ed1 7fcf71e2-f3fd-4c30-8db7-1b0be0ec8ab2 b106811f-f271-4d9a-a876-d34e51fc6dd4 b1ae790e-dfc8-4f87-9b5a-5661b9ccd923 9fcc8232-c93e-4f1e-b6e0-91637a75ef46 ef7e4675-6eb8-421c-bbbe-5ebb5e00b016 0f07ea99-d935-47b5-9ccb-e84adaa2fa17 65fc979d-e066-4d77-b1e3-7edab1f6322a 0700c90f-8616-4bf4-a311-54816e23e796 caf71db1-d28e-4b64-bf93-99ed8e16672a 8c2aa060-2b0c-46a7-a1ee-0b1dce983a70 0de39cdd-d3f0-439d-9771-460dc8429cdb 1eb3d984-99e2-4fe1-a4ed-2142ad2daf4e a7d2dc3a-b074-494d-ab36-9589d310a6d2 08a8c2aa-f437-457c-814f-bb43598ac274 7ce89a45-6d6f-4049-8b75-ac1679bc94e8 42ea1fa2-f0ea-43bc-a45b-07ef40193402 d077b15a-b999-4505-bf4c-6b5d1c375697 830f37ce-004a-4cda-be76-29caf29622d1 df6d89af-c07c-4d90-b440-5d453ddefc0d e25e0910-a1cb-498d-9f5b-d1e3f3849f86 38e56dc9-25b5-4327-b101-15b6b9b8f75e cb8335c9-4527-4036-8e4d-728e5ec4a359 7a698cf4-8fad-4a02-ad38-ff562f602aee 3a47554f-65dc-4fe0-9a3d-d277eae5f8f1 99db1588-f7a6-456b-9b14-381e7f959fe9 e5b529e3-5bf7-47f3-98ac-3b511b7768e4 a7cfe481-fb8f-4d72-9353-6da116d2c6be 5faec722-341c-49c4-908f-6cc067875f89 608f1d0d-db45-45b1-a34b-9cfea0d0ae70 e78c7830-aa0b-4387-a8b2-02a273a79bbc 9bc53b39-65eb-428e-8b8e-6dbf8abf5b3d 1720567b-1406-4a11-b913-bb137d11e054 9b1af551-5e42-48e3-a7cf-217a2fafe2ca 423191a2-d30e-4495-9602-83fd8a0443f5 373f0c9a-67e7-4a0e-84f8-e2b20d13ec80 2d734ea4-20be-4f2e-a5b5-0416b0423845 472dff2d-8064-4025-b54f-9234071fecf9 f676d67f-496c-42a5-82e4-34300051de5e f4e2c567-05c3-4def-a368-d866c4cb42bf bfb4c67b-e38c-46a6-99a0-6b30f1a1c761 1b62144f-cf43-4fea-84e6-2d2633d84c37 156fd4fc-7655-47ee-b2de-760fb647b756 107ecc8f-aed9-4580-98b2-a756cae51e4b 97826681-c9ec-4d58-a584-1258f954b84a b28f67d5-1819-45b3-bfe6-23fea79fad77 c632d667-6a49-4b95-9e7d-2fd42d392198 8bae51d5-b6f2-4fc1-945a-216cdc07a0b2 fa3ac17c-ab27-4204-bd87-eb00302519b3 3b01908a-18f9-4e7a-bb31-1f06dfc44d57 50a643e3-8ddb-4495-b172-fac6c88e13f1 dcf0a908-940d-46c0-a022-381f4d13c586 e60acada-c3d8-405a-a37e-7117c7e409ec 37ca63bf-5572-4160-97b2-f9710d50827c 05f1daa8-c4b6-43d5-8337-de822fef6b3b 6e94db20-480d-4dd7-b07d-2905b7ef08dd 4f5d1f85-f630-4832-a671-1d25e7acbd71 f09e03aa-7cd4-44ab-a0e8-b5b95ca9ec2e c8f0679b-a1b0-4110-b9a6-7a289b43fa70 0d54e7d2-996c-4f64-aa1d-e2c923e1275e 7a987c76-e86c-45ad-aa66-d4d870a6f4cb 475ec0ad-2ca1-44f5-aabd-12314613901a 22ff0984-19a4-40be-aae3-7ed8dc338e36 f65f8297-59f3-42a8-939a-eb4b83522238 05efbdb4-919b-445a-9a77-b1c041ce5303 74af497f-e401-49e0-a7b9-1c0f0e082de7 a7000700-7466-4684-82ff-cd60bcb80ad0 4a8ab489-4bc1-44a9-a7a5-1e4b7c7de3ad 28d0235f-6741-4ab5-90ec-5b202b3d73c5 7a44b810-6198-4e45-9144-6c99add46f13 be142e23-2e61-4f4c-b9a7-1d7a5680c21a 4f64728d-8030-4c41-a184-1996b34b48c5 22f63cf1-e176-4e87-95aa-4aeea50f81bd 6243414c-f2ff-40df-a0f0-c1368a2b2a37 2bd5254c-2747-40ca-a4a2-0ea36b74b9f3 0151ce04-b0fa-44f9-8344-3161fa8ee361 926cb097-acfe-4c2f-a7da-a70c5eb7ace7 81ec53e5-fb5e-4187-ab16-2d09a48799cb c9a7dcba-dd6d-44f0-96aa-830bdd02fae4 4ff82e65-9683-4284-8041-27c24a50491e f7b470a5-87be-41ce-b399-bd082b4471fc e850768a-cbfc-4eca-8697-78178802f295 ff3ae78e-f98a-43d6-9408-6d6206fae637 541d0af2-a6cf-4291-af25-dc8d36fea601 a99c9972-34d2-442b-94be-4043094894b7 693a2764-c615-458b-937e-84cdb9dffac8 f83c239c-d2a3-49d4-8716-3485db7b9eb0 eacecdac-0272-40bc-be7e-24d67b16b271 7dc40daf-9537-46fa-9fd7-1a42571bc4a3 d6075c0b-ec5c-45fe-8add-056ec54dcbbe 8a53ff96-c9f2-4f38-b002-77a30ca01ed8 f92eaad1-5aca-46d5-a680-25600ada3d62 23c88a40-6232-4137-84de-01fe5c3a082a a5748faa-eb54-4fcc-943d-70e34acc13c9 a46b65eb-ea6f-4312-bda3-27275378393b c056261a-4aa5-4425-9eca-b768a78054a0 7e0beb05-b05d-4af4-93ce-b6146fc8e0fd 6d65e951-58b3-4998-918d-5ddd46476c4c c36db9f0-8b4b-463e-8ed6-4eddd04ccc99 b28e3708-8e1d-490a-89b4-4cb47093f204 4460eebc-be86-4c38-b79f-5b435206aff7 f7aebbe9-f913-4f58-9312-174d97a92759 0137d5b6-a071-46fe-a7e4-d4466f83f4df a9e798a8-08ca-447f-b3fd-1791e8b92e2b 4fa621f2-17ff-41a3-8f97-23ec138bd7fd 4f2f54cf-f63d-44c7-aef9-e4d334874bb1 5981b9c2-5fd0-43c1-b527-9e312c485db4 318935b1-74e9-48c9-844a-ad92161d9539 ae92835d-8a54-408b-83e2-c4978843dee0 41181faa-1693-474f-b5b3-cf8babc7b426 01d03ee2-9e8c-49f9-a0c7-16233478979d c1a46eb9-d5fc-4dcd-9e6b-86edeed26953 5a3fd260-12fa-41af-ab05-71c7a26c0fc6 cd86304f-e51f-4797-8024-66cc01e278c9 34383a12-d544-4018-8b93-08be27ed96f5 57cd0ee9-4d7e-4f9b-b537-71417664927e f05581f3-0043-4944-a0de-7ba976a6ba99 a10501f3-f4f6-4c43-836b-3abee45596d2 c4a1dd6d-77ae-4625-a716-b015c5930b2e bf840979-97a5-4416-b2b2-7e62127608da 91453125-a082-49fe-b3d4-55aa4d16481d b41855cc-b679-49a1-9364-30fdb3ec1c64 516bd0ec-ed4e-421e-982d-a4a16f643335 c6a78ce1-6ab9-41d9-ae43-1fdbe647c607 ef7b1037-57ae-4262-99e3-55571f3be608 650923f5-199c-4dd9-9377-ded9570ef305 162bbcc5-47a1-41d3-8b86-52f74a701465 04830225-dfae-4f09-a037-b45ceac4ce5e 293a0ffc-73df-4d0f-89d3-c396c37cc48f b0cf63d5-3a10-4666-a1c4-4450d185d611 4daadd73-773d-4bab-a582-05ea3475d869 f846d9b4-d288-46b9-8e82-0c56ba4b0a10 41ce98d8-4328-441e-847a-4a1a55a96c21 7f91846a-a2e5-4d2b-8d0c-c8c2e5c116ea 38360f68-3bd6-4298-a5ca-ffeb70c8af61 fdb2a8fd-f5d7-4bdf-bfb7-fd64bdb8ba0d 7eaeec23-e73d-4cad-959e-57c65d16f84e a163acfa-0f28-451c-a56e-0752dacd3010 5048b5ac-7be3-4d4c-9cad-3f377076521e 8a66b007-bab6-4525-addd-ca35bb77e0f8 7e732d3a-97a4-4faf-a88a-a558a660578d b1cae250-bc90-4d67-8157-e0395c9c9bf7 c7a58e9d-6c23-4a32-bb03-1943a177426c 66d75580-b7b3-4b9a-b303-139e94e84fee f09476b6-2a72-4b01-9453-11a0af5c886c 1c2efef1-f3fb-46d9-b831-9a28a2646806 02b4b09e-1dc8-4f28-a2ca-fbab8c96dd4f 25f62e9d-1cd9-49b9-91d4-d471cb568575 e6aa3f8d-3104-4545-bdf9-b41d86333989 8c841643-d768-40c8-9456-b39b9ec37f15 580a44ab-8ab3-40bd-bd1f-a7e60f037cff 597a5ec8-ecc9-4909-a224-cc90cd59ab78 8e653a52-ab41-4db0-b7ae-352e81d93fac 462513b1-649b-43a1-8e70-553e3f41f6b8 a1ad2243-154b-429f-8027-66f51e3a025f 03b53d7e-fbe8-4bd3-9ae2-7a43e8580a2e 8d47169c-c49d-4f4f-a038-165fbd657752 5d643f49-c866-4c3e-995a-b2b6ce0bc776 e828f95d-d2b9-4783-9ab8-fb7c694f854d 70893761-8a72-4c63-b63c-19597c0f58c8 7d919e5d-4da5-46b5-b627-ce366fc58b4c 3d8529b0-d874-4977-969c-b3ac0af501b3 1cff3d5d-a8d4-4012-a685-78169aa7ec67 4344e088-4741-4433-8f60-c550d78571f2 9356df71-8898-43dd-acb3-053d18b66837 0c988607-e47c-4ca2-944c-06ce61c4f52e d49e0571-4556-4555-b778-b5bcfd5cf4fa c335139f-1a68-4dd4-91ab-7e902736dfa3 f2237b68-14dc-4551-80d2-8ef255ddf2da 23bf60f4-3ec2-4412-82df-8188909af627 0766fc2d-fa39-4e3c-8e8b-2eabf68e7eab 7203b61f-2d09-41c4-ba6f-3b808216985e 4a1bcecd-1d4f-4f70-b676-68abebf1aefd 440bc489-f4b6-497f-8636-a8d8d3a23c97 af24c5ee-0149-4535-aef9-b1767f01ac87 77839120-3e0a-46a8-835d-ca75b88726cb aed22d9d-4909-430e-9953-636c2f279fce 93b2516f-dacb-4b86-9ae3-f7e616c69508 009a2d7b-aa1d-43b9-bfe1-fa3f41f5777b 9723915f-7fca-4dc5-86d0-3088d9b2bfe9 69bffc5e-91e2-4b5a-bd6d-a14e94c7a0e6 0fc2f9c3-fbde-4bdd-a7f5-03c34b8e2028 ac69ca4e-6231-46f0-a361-94121ee973dd 31787f66-cbe2-441c-beb4-3b245f72983a 045ef1ca-8b54-4699-a57e-e59418e41331 7b28da75-358c-416c-ab36-11f3c3fbba5f 4be91823-7c45-442e-b12c-64393e2385e9 4c8e05cd-de26-4dd8-8bd9-4759e51721eb 3c238a2e-9e75-478e-a74a-bc67233fd68e 0dd8bcb4-4420-4938-9f0a-9ba6953292fc 200f752f-0582-43dd-84d3-28e9989431e9 44b03f9a-144e-4c14-ad1a-5f4d49be0e23 26625ce8-15ca-46d4-adaa-c9ddb48e02e9 84f61cd8-16aa-4e58-bbb0-25637227fc90 f1221195-6adc-46f9-b333-22ea9251b4dd 42d549bc-f343-4f24-902a-99d732e59756 6d793230-726a-410b-b710-ee66c4cc0453 23b78761-a188-4bca-bedd-a60395ddad55 cea6284e-5a78-4ede-b543-ea59f75b93b1 8f6312a9-8d36-4c1b-a89f-3c28afd82cee 76b440ed-5070-4c9b-9e94-7e83e4a669f8 d6c57739-80d2-4e15-b0fd-fe4aa2a059e6 83cb465e-5f8e-4587-a844-17c0d30453d8 22f4dc17-ff90-449d-b726-e99a73f7d90f 55f37251-0532-4a51-85ec-c0880cdfd2d2 d3324412-cad2-482d-ac87-7023ba3de3fb e72715c5-09c2-4ce2-9e21-85b76660f339 633744a4-d9f2-445a-8008-fbaa15ee065a 5222deb6-c648-4ec8-bacf-c4c61f7e93e1 aa7dac0f-e833-4dad-8bdf-da61fbe37fd7 8a960125-083a-4e00-8b11-833c6f532fde 3cbe3f14-cdff-4595-a0b4-4787cdf57d34 03276126-ddfc-4ed8-96f4-2983f999f34b 20db5662-3355-4813-8fcd-9084ec2e542f f1ffbe7a-0edb-42c9-bf3d-9b15a5e0bd32 3dcfb148-27db-4ad1-892c-f5dbc86d832e 25a3dec4-b901-419b-bb75-48cd11430e1e 63dc3d51-805c-4fae-bdd0-02d68b0dd82b 58f19750-013d-4bd4-8be0-39b64fb63c59 dd359abc-74de-4a4e-8a4a-29d823b444b2 79c60e36-d5a2-43df-9fd0-03294f4eba66 96a7637a-7107-4965-bd81-02267865311c 75292bde-3cce-4094-982c-c89ed413eae0 51c195ae-6081-49ee-8733-e977661d91e6 c516d0e3-0843-4017-87b6-a5684bceb53b efa74967-b7eb-4185-8876-07a15fbfd808 834a85a4-7662-4b53-a773-ea3de54825c2 4b0d5361-dc3e-4d36-a7ef-6db25525f3eb 01189724-2bcc-4e12-b9f2-eb5e96be86be 1789f14d-8029-413a-86b6-d7df74ff05c0 6d58c434-b03c-48c2-b36c-874ff6ac77ff ce4f7fa9-196e-4a8c-822c-b8806c43b9c6 82ef39de-9b7d-49aa-a35e-97c52d714a48 777a8e43-c85e-4b64-a401-81ba01b030d1 71fbe1ba-d493-4733-bbaf-c44b447bd4e6 48e86979-cfa2-4c28-80b5-909c61468ad6 658b6fe3-1d9e-489d-81a9-d271f647b3a4 abb7f0c6-1d72-4471-870d-8d937c05a390 b5127135-4f44-42bb-adc2-d124cde1e708 0ef1a115-30ea-45b8-baf8-757418da15a7 bc01c98d-738c-40cb-859e-03607b076a5c ccec4894-163d-4d1d-9a06-bc85eadddabf 2cc2bae7-f985-4149-98a8-375db9bfcd0c 2a1cec54-9b0f-4b24-bf99-252626a3729f 958adf0b-3fc6-487a-902b-e004c73efe19 5b73f5ee-a91f-4476-bb5f-10d752d362bb 911e193a-5926-4015-a363-14b562fbca5a ab96f0e8-3d06-4d00-b16a-7b0bd8c23788 ea79bc03-77d8-4f9b-b6c0-0f8ebfb53549 28896f3c-87a0-43d1-a6e9-b1ef0cf656f0 ce0edc7f-dfd6-48b6-bb19-251d957505b9 0d95c81d-3445-4f03-8109-e1cae79f1fb5 001945da-7f8a-421f-8891-2f64abc8631f 697697fd-0dc1-4b4d-87da-9b116cf8c89e 7b1122c9-9703-4ab3-892f-03fbd6b3f1e5 f57e2939-32c7-4015-ad4e-3cb797de14f1 6d561e67-e7a9-45b7-8793-ae66689c0b4d 296142c9-682d-4da7-9521-409f615695f0 64ca4ce9-c76f-4b41-adaf-2fc88fb77a5f 6ee3fcd7-c2c4-4531-9d6b-52ecaaa62867 960e6b3a-6eca-45fe-ae3c-6eae1c478416 3033a20e-07f8-406b-89d0-04b04f5561c3 fbc07fa7-cfb3-4023-b2d0-4bb8c25ca7ef 77c038f5-bafa-4fdc-ad4b-70161f77b800 5bc093d8-73a3-4d44-9865-28332eb8ff27 0d4da605-b3db-45b6-8c05-a110c5658945 a74941bf-7ec1-4c06-8644-0e27b7521168 c5a1a054-238f-4e91-96f3-690cc6ded0d0 1ebcd4e0-2411-4582-8e34-f665c81869d3 a67cc3fc-3f41-4bfc-ac10-0d93b2532be0 36efc58c-58ba-4c93-b884-2fa6bcd39b05 f80bc870-3743-449f-b4e2-b8b04099b49c 07068166-8768-49f3-9dc7-1aed6d2d756b 0a0c0289-0da0-43ae-91ea-d4bbf98b87a7 d1edaf68-e5f0-4b4c-aa14-fa220b01e4e1 6938811a-08e2-40cb-9986-5c0f5e27cdc7 af45285c-521f-49e0-8aef-08003a9072fd 707f837c-e603-4327-92a8-72eb8c65d83f 1e04f056-2f34-4a18-a7c0-3f83bcc13bec 28d4badc-4bd1-404d-beb0-8cd211b86333 d2ec336d-d18c-4642-8340-27303fbe420d af72bec2-2227-498d-9505-27488b05ee76 b59e3897-1879-4038-a99a-057f204f2462 1e333108-dd8b-4512-a26f-9d2eb5cece76 38c8c2df-6f83-4a36-ad76-df0e36211657 0c4ae3f4-c988-419d-8e68-ac9022f36460 20d032c0-1e68-43aa-89d2-b3e65bca72a3 a7f554f8-849b-4868-82f8-70b19a4eb69d 4b339baf-9fc6-44d0-9a6c-b52b6bf52b9d cd54d1a3-39c9-4ff5-acb2-2ad8b4290340 8dee62e9-fe28-457e-8ed9-4b1c813faeb5 8462c9cf-714e-4f09-87e5-41b1adbd78bb 363a4805-96dd-4fac-a121-6a7a70ccf43c 215005a6-f0d7-4282-942b-e3b4533584bf 65406cae-cc69-4e23-8479-2c60f6379e4f 0c512311-b02a-422e-bdbd-d716ab53c00d b1ec782e-cc43-4d28-a599-544aac5c0d25 6d054643-c8bb-4e50-8dce-2a2887b7d888 1be910c2-5b20-4c29-ac8f-a3eb1bbdd12f 2f95e258-cc63-4193-a3b6-2b1a8a093c0d 9ddf5a1c-9fa7-429d-9d40-57950f881d78 3af02963-b825-4637-bb20-b6bc2dc7e331 a928994c-1e99-4358-a74f-f085bc98a6db a9daf46d-2390-40e7-98f1-0d62d43e7da4 ea089bf4-5039-40bf-8bc7-64b3b1782664 a83b0a0c-edd7-4b9d-92fa-49ad5f99ebf6 1b342a79-8393-45bc-a01d-067fca7dfc8b be67b7a5-9dc4-437b-8cdc-8eaad12f062d 9886aace-272f-4835-bf20-2efdcdfa1c25 2a0c8e90-2077-4ff3-950d-d6606c7d490a 3432aa7b-8ba1-45f5-9ea9-101315f99f46 fe30937b-aa9e-46b0-a059-acf85bd9e78f 72b9a632-65bf-40c7-bcb6-02e7e76a9a06 b4fe12d2-d22c-4963-808c-e6c91ca384a2 b0ed8714-15ed-4a4a-939b-82d3246f8469 c84c204d-23c7-4d16-8511-68b9a4909f07 2aaed058-01c7-488a-9b02-aa2ef6bcb847 fe0b287a-2cac-467a-9bf0-fafcd378b6f0 2c199f22-3e26-4c97-bd97-e9e1e5b6bbaa 336ed4a0-e0af-4638-83b5-874336ae779a a1f26667-f1a2-4b74-ab12-a09ab49d399a e958a156-dc2e-4677-bd6a-dc4965c6cc9e 39faa96e-a9cc-4b4e-b577-d44cfef765ae 8debc733-cd6d-41eb-983a-5a34fa20ee4e 873f663d-fa5a-4cc9-b176-d0b39fb34106 240a4b73-741a-4895-9889-44fe7a310d3d 6c551f76-3ca3-4f7c-ac92-4413ea3d3e6d 30316101-4bca-48d6-abef-c573eebc4d41 08b1640b-bbe2-4ba7-b457-03aa1134365c 6fda3fc1-2e4c-4363-9a7d-caf588ae0d97 016d993b-c81b-4fdc-a8d8-3a8547105a81 6b7fe68b-4753-458d-bec0-0f153f8d3af0 9fa62262-97fd-4a73-ad74-0ee08684d722 2566919e-535b-4daf-9416-bac1f713e310 141ccbb8-b59f-4706-a698-1ac0b124b865 d300e2de-cbe5-4590-bc37-60f6a7c152aa cb3a5145-3e9e-4236-952a-758b6c267c15 18ebc143-b2cf-4c1d-a640-4e6f3f5fd02b 3bae8dbf-2364-4514-850f-0842c9ed8a9e a70d5009-e635-4b30-8efa-7368b05153f3 c6ef5f6e-98ad-41b9-ab8e-f0974e4c7cf8 220a50e4-1565-49cb-b767-13d85aaa0b0e ffa4ef9d-a320-45aa-b210-abc5f4425c6e 53783c2d-e745-431c-b8af-044bbfc7b1e5 eefef5f9-62ca-4c45-bf03-e76a92f62a1c d1c04d14-7e95-421f-b7d8-9641199a4c42 ad2bb6f4-e747-46a3-a7c8-1b80f2b326ec 77ef87fa-edea-4ee2-8919-cd1ddb3ef9d5 4148e687-8c19-4a82-b7a8-13dee431745b 9de8a0e0-7929-4cd2-81e5-8b2927b7a5fe c495ccf4-db27-4850-a295-fe943144c9b5 03b3ded7-5a5a-479e-9e8c-f5d8aca02e92 06852dc2-31be-42b4-a61c-068880c79ffa b1a880f0-a8bc-4149-8efa-8df1b8d3aafb 773a3545-a370-496f-a801-2e6e1b4e9713 dbd695a6-5d41-435a-9109-359a474ccdc0 081b1591-7147-495f-ba26-d3a5737918fe 7f45f70c-48f7-4fc1-bb9b-ba048d9e2d6f 4984e1b4-544f-4a2d-aa54-9b8a0f780afc 0de105f8-239e-4dae-ae7c-002a06fc3186 79167e5e-3647-4a66-a48b-b096f02fe4c9 ff7b2d4a-ab6a-4411-b161-b3b59cf57719 3b83069c-e504-46a7-85af-9dc711d38902 cc8e6923-667e-49e9-9a89-a4d2ba3fea81 4f031978-8042-4e2c-bdb5-ef520fd9471c 4d95b2b0-20e5-439f-994e-87420ffd1707 7a46308c-d27b-468a-b745-ea0a5dfcae86 de4016dc-72d4-47af-b35f-21adb919de2b 21b90a9a-5634-489c-93d8-9e76405fbd1b b91037d2-bb33-480b-a630-342a601b6fa4 224a77a0-8dfa-4958-82e8-7b22174cd9f2 9ce28f14-d863-429e-84b8-fceb1f5c9963 250166ba-30d9-4851-add1-a5ad07d8b9d1 5d88b8dc-c296-4e82-ac0a-cecbdc9ff942 a5df453a-ca65-4048-b710-9f90caa37c72 a6626a78-644e-48a1-882a-857f582a6bf3 1b17f3d2-33f7-451b-ab26-7d6075780f55 17f7afa0-4670-4bff-b1a0-0febfe0a1145 dae0afd0-bdf0-4227-bca2-fae04967bd3a 65649531-8455-4db5-9cab-de294be99b3e 027602af-5a81-45cf-8349-32b0a08bd903 df19c69d-f08f-414f-b5ec-3adfae51a037 08fcb9f0-7afd-4f96-a7ae-8393a5486c68 c39e63f4-e3cc-4ada-8282-5450194130c2 1d8e5896-7e59-4f76-aed4-e6d11d229dec c58166b5-6636-4751-ae5d-f09ce7aac685 264a92b2-2afb-4bbd-807d-e9aa789f3981 a5038518-194b-4834-a880-093f1b5f2b27 c7d73d61-6aa1-4c6d-9cfe-c46ea6ce1f0d 8e78ee73-1ff3-4f3c-9087-424e17da7137 c68863dd-aaf7-4944-9c7b-0b1000d89191 cf6879ba-d44f-4447-a96a-7e0fbb9b65ee 66d16809-45e0-41af-89bc-58dc38a6adcc ded7dd26-59e2-4a74-abc2-86bcb5f48f93 a1a4276d-ccea-481c-8f52-c50a80f6e258 84b42bf8-d418-4cd6-9f1a-02149a85e81a afbc16f7-8241-4940-8224-b9652d4326dc 0faa6455-614c-48b2-aeb2-2ba4bcd12691 dfe0f8fa-23c0-44fd-9c54-5ce4eaf0762e ea219313-93be-4db5-9571-29ea4ce0e3c3 8c88c616-2ea2-4a6c-bf51-d38e16fddf8f f340fbbf-a9e0-463c-9e05-390f083285e4 6857452b-fcf2-4f65-81fe-7a23ed9db681 e7ccd187-11c3-4e75-bf70-2e9f166a3470 f517fc43-e540-4d6a-8320-36430457fa4e 027ec129-8625-4fd4-a5b2-a63f38588053 0e42b849-ae40-42ee-82f1-356899af5b64 bc0fe349-50ff-4c4e-a1e2-870606681c42 8750bd19-639d-4d4d-a3a6-3db69fd822f2 331f1954-b8f6-447b-84e6-143f230c91e8 a532a0ce-2dff-4715-aa3c-ef9fa5c055c1 8d160b74-fc9b-463b-a0aa-be3607c728da 1b599e0d-6bd7-4b60-be8e-beaa6030d369 2e3f507d-2949-430e-a68a-918399916e41 3f16c10f-183d-4c0b-b94b-ec9f8119912d 7cc921c6-db3a-460d-8e1f-aaaf17dcfe7b 80c108d8-c307-45f5-b285-c276dc2f63f3 92ef525b-859c-4521-9e72-b2f5c420795e 055541ca-e127-4e90-8e66-09dd343da385 7dc736ed-2fb5-49a1-9641-8aacc019b07c de3535cf-952d-416a-8469-74695c2e4ce9 b3103534-3806-4fd1-bea0-d6da8c7999fe 46c4e9ed-1a8c-4f54-8cf0-397de4c1f371 115c8b4f-e4d6-4f55-93c6-b48dd40fd4b5 11829760-05bf-4e5d-8e5c-d7f55303dd99 59496373-f0ec-4c2d-ac39-8d182ae7b49d 0799222c-6e30-429f-8ac1-ac1856ceb58e 633057fb-18cd-45c5-8e9a-5601518c4234 4be70dc2-6a7d-46c1-bbe6-a140c8c29212 1f9cb552-40a9-40d6-b80a-2225adbf370f a257d251-5bf8-45dd-a059-b62b20397b38 0cb828aa-a0f9-487d-8c9c-e7172b6b71e2 1691fa07-37c5-4f7e-b08c-37c031cd9be9 c393feb1-d0f1-4dcc-8738-a03942154535 e48669f0-8d58-4dc6-8b94-d6c06db78df5 58983702-fd56-4c66-bb4e-10eaefeeae16 4f533684-c8a2-425b-b701-0c4f82b27313 2ab2565d-9500-49b4-90f6-8c4c939d127b 2f92edfe-929f-4316-9b69-05166c62fa88 c2a987db-7a58-4957-94b7-55d8b3befd5b e290a500-499c-409c-ad04-cd6810dcc130 670536b4-a540-42b2-8492-be3e1f94dd8f 9437ad1f-3ff1-4c44-81ac-206edb1f39f7 7abd69fe-2b25-4002-95a7-444a37ab611a 68cc37bf-c84f-496f-bb40-d56e20d99061 215266f2-cd92-42cf-9fac-e13566163ddf 69a09f07-4230-4414-ac53-802f4968d7eb e2c35aa7-6821-4ff2-8984-37332da7dcdd 30ca536f-d482-49a0-be78-384851b4cb6d 5d94fd63-1c81-494f-87e0-45ae63ba806c b7eaf656-0acb-424f-90a8-9e290ea259e4 fef69b53-b0e8-44bf-a026-b42786da1880 eb0320b7-dd2d-4144-af3f-70158c041cc5 972406a4-eaeb-4275-aa3d-224d353280bb e96eeb93-a37f-4124-aa6f-d697d20b5620 7ca0e31b-bf4b-4e41-90fe-6a8e8a1b5071 b7d534b9-11f2-4230-8354-12ddab19359d e4076cd9-e148-41d3-9e2a-b120e668a243 84d9849b-7f6d-45cb-a8c2-d965118a2d11 064230e3-1438-447c-b1ba-16c5cd5edca6 2c718965-5914-4328-960a-7a72f26cd613 67ec017f-0de4-4c98-a564-05279deef686 398eceaa-ccad-4dae-aad3-271351cdb4fa 6172c7b1-a835-4258-9d27-59488d771d2a 51ae20c7-177b-4a40-b55b-2d83c64aebd5 aea1a0cf-ea64-4362-b511-73a6681c4a1f 38092049-33f3-4849-88a7-849bd4e38399 6ed88d62-546d-47aa-8c81-ca142ee854a7 1cc72497-7c4c-425b-bac3-d7fb518d4e43 63d9f384-a5bc-417d-8841-3af0c893a031 382b2ff3-7583-4436-879c-620fc80f4242 22ac4c42-ff2b-4d00-894b-c8c786074b9b e22de98b-09c9-493d-8573-3efd4f61f8db 525d5b30-5faf-4155-8954-bf63e11378c8 16f239ec-882f-4880-98cc-01a5ff15bbb8 63bc6d14-9269-4ce6-a36f-dbabcefdb942 db0109a7-8405-47da-b82d-7a5b96d3978c 4dd4b493-68b8-43ce-be8f-65a2f5577f30 e3bbf853-a715-413d-8c61-0b702775502b 88ca34a0-3141-417e-8d98-2e8dbe5cc98a 468b24ae-291f-4ef3-b4b6-14b400894d94 f62c89ce-49da-407b-9e3a-bda50820679d f360ac66-ab64-46a6-a5ac-ac5015491864 36059978-2f59-47eb-b89c-e0962329417d 13dd3089-d1c6-4ab5-8847-7814c92f3324 35bf5a6a-17c4-498f-92da-faa4a22f5f6e 0978d464-f792-46eb-aed5-9038dab8fd23 6575f10f-e2f4-465c-a1e4-c8f5cd8723e2 a41fbf85-5182-4a28-b7f6-a8ff69b03123 31b7970c-33d7-4f50-8f37-afb9188b628b f50195de-8afc-41c0-8794-dadfa9391904 ff186398-da03-400c-82e2-1928ac9f0a41 4e91d5bf-4782-4106-9803-b27eda24639b d73e9e1c-e082-41c0-822a-66433a95c83d d37a46d1-7bac-4b5f-8ade-313970688b56 116544c9-a627-490b-ad52-f85a5dc60cac ca75de52-43f6-48b5-880f-b17b0a2ecb04 1604476b-922e-476d-8a3b-2f96aba282e6 7606c570-4e54-4447-a928-40bdc1abe865 366e082f-8004-4ddc-ab75-ae19676227de 175931b1-7073-439e-9552-54f891650cb1 278461e5-f298-4948-8cd6-503e8c756c2f b05ce23f-9b98-431c-9213-135ba8cdd3f5 1929e244-e5bd-4dcb-b604-6d20742652c4 e4a4a87a-496f-4248-92c6-fa2dd437d039 fac170d6-72f1-481d-85ed-d68aeb87e8cd 6fd97526-e822-48da-8871-654e169405f3 446f7e37-922b-4681-ba5b-1d2001bd58db f868e7ae-700b-4cef-b9d3-292087c7802e 91747699-40e4-4a30-9040-cdf0176b445e c6cf9b4f-d51b-4301-b225-8f6052063a8a 3304e9fc-b1ad-4b68-9d2a-b894d7d06fff bd3c0f4f-8c1d-4974-b804-2e9bd9efae37 6e9ba07c-cbff-4fca-9273-c89914f9213d 3a6e0812-2c04-42e1-bcd8-6f842df00a90 a2e8b0c5-bb49-47a2-85a7-20cf12682dfe 81f47a54-dbf0-4d3b-adbb-b8dd179295e8 c626b1e5-7704-4938-adb6-2dab3cc85b29 e14024e9-bcb4-4ba5-bbc9-a9ae378577eb d94726e0-00ab-4ef2-b3f9-4c461e40bf06 3ca98d06-37b6-461c-b09f-fce82f0060a4 1cd96a00-e5d0-4773-91d1-34163d87bc35 d1d997f3-6e93-4a1d-bd99-ad13e6c52784 ff7c6a4b-64f2-4a14-b6ba-c4d21f60c89f bf9a09db-8969-4435-a015-cc5350108309 363a7a9f-6ab1-4a92-9d5c-2541590186b5 ce971668-fbaf-425c-8c83-565281f86e57 32003610-b268-45ef-8d5c-ba7582bcc853 1b6776b4-09d8-4768-903a-56d82f324602 daab0fd5-5a5c-4a9a-921b-2476f0625235 75909b8b-ca88-45f2-a38f-cd2d58b970b4 008dfbc4-9c88-425c-a6f6-a5093a20bdae e2ee864b-1760-4313-a206-3f75dd19cb2e dd130772-88ad-4e44-80b7-7576e76fcb29 b91b2488-928e-47d9-9f1c-31ed7511ce62 54f5c2de-6dbe-4b9b-8a81-34cb7fcf0dda 80c7f35b-1b1b-4ee2-afe6-52f1e91cd932 34683687-b845-47b6-9a20-3755e8da9835 88e83172-16fd-49cb-83cd-e32baa3fc8e1 3ebf6ba4-8ffc-44a3-ad94-d43df9ae47e6 a44373b2-c20c-4528-8fda-98c0f8dbdca5 09358b7c-b2b5-46e0-b5a6-6017a46e45cd 1907e179-c24d-4fd0-ac22-4c86a840fdaa e54bf45d-72b0-4f01-a840-1a956f2d6b79 110c10b4-88be-4466-85e0-13cc93334550 5f5fd357-06eb-4fc0-a742-350a9aa3cc60 32e4643a-6f2e-46cf-bc92-6a840493c643 22ea9ec0-b681-47f1-8039-4284512f6c59 8ba0de6b-860c-43e3-a276-50c8b17d806a 1132c418-bb73-4a48-8bc8-51c82675488c 1aa45bfb-7d9a-4fe1-9622-fac0e803529c 4ee7edd9-a2df-4c1f-a068-c9a1729ff4b0 27d3df06-7e2b-4273-a3ef-306eb4616718 41725497-5028-44ce-b9ea-aefd3fde3caa e731d8ae-eb13-4922-8cfe-d85a460fd36a ae33d730-40d5-4af3-b871-0688d74a112f 5f1fb5fd-9de8-4104-8078-5f16c046e837 a4bbf580-c775-4cc5-a976-ed63e1ba1c99 614cb350-eba2-4211-b390-55674f7f913a 27d70643-5eb5-4b40-8c0b-c0a82bd905e7 c016afe3-6a30-4c30-a882-4b456753ecf4 3db6ce03-53c6-48b1-a51a-15476c576d4a 56409ee8-e483-4877-83c7-0b0c7fa637ab 41678ce9-325d-4c0e-abb3-078938b10d91 caccbab5-8418-4d24-bd6f-5fe19a316ba9 676081cb-b7fc-4335-9442-50420010016f 1db00dc6-330e-4b3a-b38f-f5717fffb73d bc1b5cf7-1829-4336-8d53-454a0df32657 b6862277-201e-45c2-a064-f43752d0dff6 046b90f8-47b6-424c-8a9c-594e0a904299 80797843-6928-463c-a49c-0f29e8af39f7 09eb4da0-6292-49cf-a69d-9807b084cbf7 1723ca83-7843-4a64-9bdd-5aa25c8810cb e1932670-b603-46ec-a0cc-63d576fc2b17 54befbcc-2570-4bdd-a7f6-bb14dc39d9c5 bff4d37e-fb34-4ac2-8c9c-36d039c00819 05d29405-9508-4026-bc6f-b556ee879610 59a55885-6925-48da-b83c-be1482be334e 50b4c90b-666f-4c7f-9478-1d5476db2ee6 aafbdd38-483e-4df3-b836-c7843a443d01 a0bb24cf-ebc9-475a-bb8b-a645312d6934 d9730ca3-029b-433f-88c8-55e4565a7627 9e824ca1-3eb2-4ffe-aea5-ce77a7fc3d52 1dc9eb7a-c988-49a8-8a3d-bd3def62f9f5 77cf163e-efeb-405b-9175-7081b93bd94d 20806655-0fd9-4c0d-b35a-82816b280c00 d84fa3e1-83b5-4ed5-8742-bbb25602a40c 672140e5-6fa1-4015-bffe-a739c6e5ede5 d4f37cde-0f72-4158-a124-322a7b764c7b 5b90f492-0d2b-42b9-b802-e3cc9ea601a4 c8dd31e5-31a3-402d-b887-5e500e67da64 ad10f96f-9e8f-48c4-bbad-4662fea6a291 48115fbf-7ec5-492c-a6a4-3b4b6a65eb9d 03b8a60d-a2e6-49f7-aac2-b386905cccbd f8872403-7d16-43e6-923d-f21a12edc2c9 e6422bdc-e17c-4dd8-9896-160f75d08a2a b8bf9578-7b17-4b61-b549-95c0d8ef45f1 a9216904-7b30-47be-8bd0-e9b3e1221f80 b3fe3926-9272-4248-9ed7-fbcb33b19c4d 477a674a-5cf7-4d3a-9f87-85e137a5b914 841a4b48-da52-4b37-bad0-1ed8de59894a d83abbdc-ed8e-4126-bbfa-99f43486262b ac07643c-09bc-4ab5-ba09-5734760d031e 0e2a38ec-e1cb-4890-8534-bdede7e307cb e5c1c195-9d01-4cf7-9a15-bce0285a6753 efd3cbb0-b4a9-4b43-9e9a-9490bb1e0764 414823cd-e865-49f8-83ad-0ae0946e42c2 821bf406-0bf3-4b4a-87c2-a0891e6bbe0c 121d561a-d660-462d-9424-4d9f04c4d254 dbbb213c-8976-4a22-8924-731a75948bc8 3646478b-aed5-41f3-bb42-8f7a0c53c693 d03396b6-325c-4533-9213-6df1c8693c9c f9e2acc4-74d1-48fc-b091-134a869aff69 3cf2591b-eee5-4a32-a5c1-d92feac8b731 5ef06984-ef44-4e77-a7c7-9248d076563b 3b8e49a2-c1c5-40db-b873-bb25fc5c57f5 e1ad61be-7c62-456f-94da-1886336396ef 6e2fdae6-da96-4faf-8916-28ace503d8fc 35032d0c-c791-42e7-803a-8fea3fc010ef 59e0ede0-fdda-4c54-a2cf-821202100b8a a58851fb-b2b4-4f6d-946b-09d2fb6a08a1 94371760-6604-4d59-9951-87ab2463c219 e08a2d46-558a-4c53-a66e-b402156ea680 131ffcd5-ee10-42ae-bbe5-808ee90e136b e507e589-7dfe-41de-8b78-f48c9cf4f932 a6f1c34b-ef89-4484-9ff7-dcd7007eb4b5 576def90-e1e5-4e86-82f0-ccf81391b319 18882d88-834e-4e35-b3ab-662300ce6f0e 08d5ec48-68c9-48e7-b65b-30c9fb1ac0a6 eacedcf5-893a-49f8-8df0-a07dd0c42c94 7b08267f-692d-4734-9dc4-2dd7502ed105 a3775c7e-6e44-4144-86cd-6bb6d3c289d0 d65f0bef-a609-4bd5-9d96-076e0b610ae8 0def36a4-463c-414d-87be-943736f38b56 8e4c7a1e-09f2-4606-b066-d899cf7eff62 a51f4d9b-ac76-492f-ae68-5905ed95e419 b172100f-43f4-4f52-bd0d-5cb372e3d624 3fbdffdf-980c-4d50-b574-8445c9cf3c21 50f23c00-e978-40a8-98b4-8d8b5ceb8e27 0a409705-820b-4188-b163-56aef9f7c618 e0393559-1380-4a51-ad8e-949d77983668 3c977ae7-40fd-4f3e-b475-52cdda637a24 6672fad1-0d67-4af9-8139-7d67003b97b4 45af571d-60c9-42ec-ae43-172ab9f0aa3e e07518eb-7ebf-4578-b405-dd96362fcb54 b2f8eabe-e664-4aa6-842b-16aed213503d 0ad76b6f-2464-43a0-afb1-00b90b042187 a1f4e77d-079c-4c9f-bb69-8b56bc3f9005 b3ccb497-4f2a-4673-8d3e-6b0d89759300 125601ad-1864-44a0-88a2-8f2afb0936b8 0f49504c-f5fb-439d-8fa5-ed18bad4fd22 6d3a6bf5-a885-4bda-b231-286abb77a912 3c3a0554-0c0d-4736-bc68-06af10cd0d8c ab4a54f7-dfa9-475d-b84b-713037dcd154 1925f5a8-3508-42b2-883a-adcc2db8495b 9b1fc585-80a2-4612-8649-5ec172c7d75e 749d4c81-e8d3-4e8c-8b18-cf777221f8dc 992c1596-4d86-4d90-9b98-ba57c628b8ae a5c2455c-59e7-44a3-8b5c-b30ba4d907d7 25c010f5-0667-4aac-a705-2825340cacb2 fb93b39c-4a81-4166-89de-78ffdd4bf803 b1a0f730-1347-42c2-abc1-ea3e75d32b22 57afb4bb-b267-45f2-a1a2-0ec0153fc104 605a0170-e7cd-4b30-9f92-c9055c2a518c a0ce1e07-1a88-4362-b518-6c42ea4b0b70 dc72fcf5-dbaa-423a-ad20-f0f6ce972fca 13c2502a-2f98-4cf4-8535-b22cfd6580cd 0788dd51-7f04-4f76-8eec-07187b183613 e87c4bc9-7c3b-42fa-93b7-f75d2ec56b17 16d7a2a5-9419-4dc5-bb00-5f39b7c078e4 c39caba2-57d3-4e19-8b96-30b63032fc6a a72a216b-8170-4e2d-8b0b-47c9f352838a 30fd5333-2687-472d-80ab-3b7687bb8caf 1355d0b5-afdd-4279-a831-b20c0db74076 abc94cf3-c8cd-4b7e-b40f-68f5df39aed8 a9c695d3-f482-4290-a9ad-2586058dbc24 3080be08-cc79-4821-a045-a9f5b6168e03 81d550ef-6403-433d-82b9-c0e7b6eb4e34 570b2ffb-7e86-4868-b2d6-1682ed170888 669d3419-f5f2-4293-af6a-6b36ac63f806 77ebcfa1-1005-4ffa-818e-92b0d0c7c1b6 9030a3e3-7ec6-48a1-b513-303055edb8b9 78f2b448-d081-4ac5-81f8-3ad1bb420588 53aba1d2-d835-4f90-beea-7433fe440f78 be002466-a393-439f-a91f-c46df5b7ed7e 29f356d7-99a5-4e6f-860a-e5f53f7fe871 15a610e7-5029-4cb1-8495-e158beb9f3e6 fa08a666-6bbf-4356-92cb-cf72158aea2d 0e89aca7-9b43-4733-83d2-466c71fec2e5 c5d0e241-bdbc-4e24-97f1-bc3de22a0606 646b7bb6-994b-404d-9ef4-be295cd5a259 5230d184-8333-44b6-b6e7-740009098402 0ac28f49-8b46-4718-8f8c-e0d780990aa3 a1ca0e07-9b2b-4a43-80ed-bced87d8589f 5b92e5fa-04fa-4ddc-9adb-70f9b9d6b15e 41126f66-fc13-4103-8af1-aba1ab4c408f 75bd49a5-6d40-4859-9d79-c58112d19cc4 b3c0ec95-5b34-4136-9c3f-35925e9edb4e f7927eb9-7245-4d51-acf0-a585e46a2b40 53f69ab9-435c-46a6-97b7-84a4318e391f 87863795-f994-493c-a22d-1427d4478d32 2c5b4b56-e18b-4d5f-8453-b158647efad5 30f5b06f-10b0-4795-8899-6016ee7a5351 ef880240-c0b8-4738-8b5b-9d94cff2199a e27d020d-7d0b-43e7-bca0-24e05fdaf9b3 82e9cfc7-f888-4b60-830e-0816669e9745 a5462e38-1ae0-4146-9fe3-057d8bc77c9e 07735248-1254-4f2d-afae-48521b37046d 27f74264-4030-48e1-8932-e498b69e6510 76bb6871-f1ba-4143-9833-f857508eb983 41eea7b0-3073-4294-9a7c-5d71f992b1d4 e2f21f94-c766-4efb-a912-cc21383b4677 067878fd-d059-49a6-a912-e3e5b939fbe1 6f1e58a3-36f6-4da7-8015-3bf597d11657 76f9ca9f-ba4c-4bdc-bf9e-21be0c84db5d 5a643dfb-f970-4d06-a1e3-c823039b7d1c 5162f26d-05f8-47a6-8352-f036e4026713 2a28be90-182e-4ad8-8e33-dbc826cc4c02 bff921bc-d39a-495b-b62c-90d2d106ecf9 e67a2ce4-68c1-4f32-bdd9-aeef76c304d5 ea65ac80-e6c3-476e-95c5-5ea63856e91b 312a5092-0ad8-4e45-8de1-ea5b2d23783a d3918dda-ddb9-438f-8a2b-e4b514cba1f9 c10794cb-358c-4b8e-85c0-8cc1e36e3fa5 d38eb7aa-4784-49a3-a759-94f4eb8fb2e9 43a47f69-d12e-497c-817c-d60b651d283f f3191bc7-36ce-45f7-88d0-9893d204f08b b29114af-4678-4891-88d8-1452eaf21842 5b6f9f94-1a72-49e2-8f09-49b1b2fb3c88 c068b718-9048-4dfa-8f82-85ebd0718637 b8af1207-5b65-4fc8-8010-322d320af910 d9c71261-4729-49c6-883f-556b76c4f883 2720f139-03ad-4061-86d6-de6fd517dc6a 07ac24de-305a-4d68-8e0d-e90ceacf9f76 cd81773b-64db-42b4-9bea-08abc8dd719c 1d1921c7-5e63-40cf-bfae-1c1fb41fe322 5cf14b17-7276-4a8b-8a06-8abc1cf5ba24 77ece571-5de4-41de-a4a2-bd9ff78f0a31 60d69b40-863b-42ca-871e-d9bae7dce098 d9a6e664-8f55-4946-9cfb-86e973218bb8 1e8bf2bc-657b-4865-9c6e-5d1412155ef2 00371054-7502-4492-add3-47af2221db15 14f6be25-365f-4ef7-8c66-9029e1bb4ce6 dcb8e345-704f-4405-a799-d4a0c9d5d633 08ae8539-41b4-4166-baea-61270a35b48f a98de3fc-f858-44fe-8e67-4507fe2da194 cc513967-d07c-4e69-98f6-01f3e030abcc db625d5b-245f-4c1e-9101-c48d0cb7239f b1188a37-4dad-4576-b492-786fe413cb9f 209f9e7a-44c6-421c-9111-6c3cc027705c e77a861d-07a3-4212-a6a8-7709669fce3f f947b5e2-6c20-49bd-8c7d-934eb636f045 148086a5-84b0-402b-97e5-7ce79cc54ef2 5ba3a435-a961-4d18-aeeb-21079b389f24 618e60c9-3ce2-494f-8ff1-1d39359e6a01 c8076057-bc30-49e6-a317-372ce6509909 513e6ab0-af6a-4123-9e73-2c753bcf9f64 82310afd-0ce8-496e-bfef-ee8dab6cb46f e59c5934-cba0-4eb1-8c55-016cc9f0bf44 1385ab8f-7a70-4ae0-a769-056885190adb 1a472dd1-d480-4611-b755-73b44c0d8cfe 384bfb45-a31f-4502-a82b-ed99a826436a eaa6f98e-98b8-47df-ae95-0bbb8d571987 393d1694-6ed7-4cae-a729-44e44d8aace3 c03053b0-0346-419a-8fd9-76231745a4ff 688e766e-5fbf-4d2a-9d78-473f4ba7fdb8 a1567447-9b08-408d-9292-7ab767a1ed35 bcee7750-20e7-4d4e-9979-9b772540451f 1010250f-dbbb-4db0-aa12-0dce2a311e89 5987eaaf-b2a9-4e3e-9e20-04eaca3915f8 314c09fb-3768-4dd2-8097-5d0525739c8e 975657ff-fc90-4dd5-a84c-30e9a9e2b2d0 419a1501-4554-42e8-a6c1-66ee1d3dcca0 db635279-32c4-4f98-96be-eeb5d920df52 b696412e-6716-43a1-9a86-881148b8e8b0 3215b775-2d12-4358-a5b6-67c81dff5b8a b5a452cc-2d6a-45eb-9a62-0f89fd9fb86c fa3854d0-c6af-4171-8193-90ccc9aeb726 ecb9e264-3f1b-4b98-be2c-eb63b2cec63b 6002da5f-248f-4d39-9a44-c292df790685 ca3a3b6e-95f3-4642-b1c2-65912baf3af1 7f065524-2a4d-46c3-928b-a884b23cd49b 72684b9f-bbd4-4858-9a26-4ac39ac5f582 2b15642a-920a-42bd-aa70-ddacece46e8f 01f03877-e74b-4149-9b4e-9668e3862359 4c75bfba-9240-41f8-88f4-58900a416405 e9907ec6-c1e7-4da0-9ee4-188c213536a9 b7021e2b-bea6-466e-bd28-d6f531abd8bc e7463b3d-e6e3-47e9-a31e-243f8fc639e4 1e666d26-729d-464d-aaa7-97eef647f24f d3d95a13-79ab-440d-80d0-35b5be075cb3 b19388a7-1320-4bd2-b44e-6e8a908352ca bfba316b-6afe-4b50-acf9-3191fca25bc0 797b6017-920c-4d31-b3d4-e64b7873fca8 dc4780ca-6eea-4f3b-b986-f35d5f446922 0675745b-3965-4e8d-b4f3-d6ed7bacef63 cbed2247-86a4-40af-a4a2-5e88e7805096 bef6076c-b79d-40b1-b62c-810b33744012 bda3211b-d401-49b6-b608-57381f49e848 b98df3db-d952-4758-8dd1-ddeac4b9b4e2 3d6b33d5-a08e-4bec-9b8d-b8cae53db8b3 7eb51be9-8db8-48a4-b562-6f5d7cd8b772 5d0668e2-eef6-4597-86a1-389d7288357b ba06625f-cca2-4b7b-9105-2cf3cd043f6b 51b15469-2854-4d60-a979-e6862f108531 122db7f9-61a3-4e42-8070-6f7ad7cb08ba 0fa89909-7a85-4a61-bf6b-ee634190bcce 647e5286-3b2e-47c3-a855-d3e725ad46e9 c16dfd3a-19d1-461a-bf1a-191a4059cce2 f3c5f5bf-baab-451a-97d7-9af137f9e893 343a59ca-0215-476d-9901-33bd6098b660 aa50c64b-0f04-4b33-90c5-b18341d2825f 246c636c-0948-4a46-b946-ba138045f10b bfa83b4a-c59c-47bf-8dcf-e6ddb7e6b1b8 ec805d3e-99ab-48bb-86b9-7ef7198244eb 39fd55b4-2c06-4c63-88f9-cf600ffeacd4 b9f8c78d-4cfc-416c-9e63-122b034f3632 34842fd0-2dc5-4395-a9ab-a46ffb48e327 c733a777-5f92-4c53-8799-26bdad613943 c8aed86f-45fa-4163-8092-cb40db9224a9 50965c2c-24b8-47cb-a0cc-a469e45baf5d 72ade7f1-f6e6-41c1-83c9-b39fbe1e7dc3 3b3db331-3463-478f-a9d2-fc58cbc81d44 57fb67e5-d877-4c04-8732-34d3e593d8dd 42d60776-18a4-45ff-806d-a04e8ef1590e 8f6769c4-799c-4e17-9df2-9d92118c017e 8fc279ba-335e-4919-9595-89f2cf3a1548 7ec7fcc5-7446-468f-90ef-de2b8783ab03 c2fed4ba-ae10-47b3-8411-3fa74b933885 0874f37c-2058-4a96-9d8d-fff8aa61083b 6091c785-e6a1-4c77-b515-5dea1f5fa8d1 364876c2-a611-415f-945f-680343df52a2 83f72846-6c9d-48ae-ba28-f4ed747e339a aaa01536-b688-4e23-873e-9f0755df0960 d569317e-00df-40bb-a552-eba6a852111b fc1db267-4c2b-4680-9adb-59c38c5225f6 670d2383-5f99-44ed-90e3-20744d6a3918 03e1a0d1-73f5-405f-8c27-181110c400ee 279dca58-dd25-4406-902b-d0c4e3008540 00cbe3bd-78e7-4c17-9a7d-4aab839882a3 1b8d2894-e108-47e3-a905-ef83b3c6e5a8 60b1662f-67d5-40de-b1c0-63c319bbb49b c854b64a-ca03-4010-81a3-ffbf39431ebb 9da34ee1-ea7d-4d96-b952-767b74e8f852 39a67a8c-bac8-4268-8183-f66b1047b28e 8279bfee-7d2f-4c64-a81c-a9157c17713d bf527053-c7f6-4190-9de0-296c8c990286 bb5c2e56-9f53-49e6-97cd-0ef86333adb4 0d4494c5-aae5-49bf-bcbc-ff6f2f680daa 0fe9b9b9-7681-4703-a9b4-ae1518c35075 d9cc9d84-1c3f-41bf-8513-564e13eb6477 eeb40195-a7dc-462e-93c5-f074d9193bef f9f009c8-3e17-46cf-9e10-26c66d1fdeb3 1c0b59ef-7304-407d-ab32-9905d02d3220 8163b028-6044-4513-99b2-521899eecef7 3266746b-d229-4c2c-b9ab-80651747c3f3 46353d61-5acb-4c79-abcc-059cd15a14dc 95f35f9c-b23a-46e6-8bd8-747d9d6aa221 6de99667-cc82-493c-bb7c-8313ab5a3dcc bde7b9c7-331f-4c46-a337-57addfd01966 4333eb43-f8a5-4e22-81c7-61f37bd08a53 4bd52ac2-d7af-4ed5-bade-aeb23eaba5ed 348b02d5-6a07-4645-a19f-b300595ae6ec 2870c0e6-a498-4735-a1a9-2c470f68301f d1a144b9-6162-44f5-b74e-1e7805a55e7b 810a4973-a5e5-4304-b064-21bb3322228a 15f93882-af56-4883-88c3-9441f7237c3b 33dc12d8-e5dc-4c4e-bd00-f13b46dedf5e 80b3708f-d0f2-44a1-a9e5-01168b921001 28bd34a5-ba51-48fe-bb5d-3283fe609bf7 e3272f39-38e1-4944-a16d-db9cfec2a323 9fc8a27e-8661-4641-a121-a25df3e6e553 8d3e6c2e-b530-4215-9750-27ca995dc9a2 e6970e5f-090f-4627-b321-037f1415b535 55397d4f-fcaf-400d-b279-ac0eac2cbd81 7eaff9a2-57ef-40bf-94d6-2c4012d0cd18 2637bf2e-03f2-4547-84e6-46ae5615d193 d2fc19f9-6918-4d0b-b877-b4e8a256a6f6 a60a9a5a-f801-4798-90f7-807f5b690455 f2b1dfd7-94dd-41f6-981f-8ae9845fb627 41e94a8d-2634-4c3a-935f-e1877bf5244a 552501f4-d0a8-46a8-ab1b-f79f4b364cb1 4e41800a-019b-4eed-9417-3354419a9317 4b1b0c3d-3b33-4aa1-9869-520499e65b37 b1b23858-c5fd-489c-bdf5-4f3cf6443d25 9cb1ba88-533f-4133-914d-abcb81764fc1 fa629dba-7426-46d1-8c96-6fd3c6591d3e 6fc67034-9c88-48f7-865f-582ba4b36b36 06cd30f9-1f73-40b1-b76c-b11cdb3f2c84 6c1b5bdc-f7cf-4e8b-afae-b55b2d19a52d 0e10c86f-6f31-4320-bf3b-86cc33f00316 c8d21a4c-09fe-408a-8912-ab75436947c1 769721eb-67f2-44db-9177-87b6f90cd1b3 1241f376-d8c3-464d-b2b6-d7a4909f36e4 56cc9013-d546-439b-952c-5f51117bde83 0b31be09-f22f-4a5d-92a1-82101ebadcfc f55fda63-c787-4b22-80e8-f8ddf07cb39d 5a62a98f-6f07-41e1-8bb6-c0936567b04d 1e458534-9183-4464-bd95-dfa5f47b6927 9850a0cb-0141-4525-8199-ed028800c2b3 08904e42-e8c5-427d-8096-c4d9c2b6dc0f b1c07e81-e38e-45e8-bbd1-344d88ff366c 150f6319-a39f-4fcb-841b-2b4451ff1faa 43551353-110a-4863-a465-3d0a2ebfdc1b 45fb4030-228f-43b0-85ce-e3558ec57f00 7a8d1a46-629b-4a9d-b3b1-d976e9140bf1 7847991f-1a2f-47eb-ad11-900102af49e7 f4fb70d2-b489-421c-8aa0-76e914162191 a879bce7-f280-4bf6-a3ef-87cebc2a6c74 791de446-a1e0-4b62-9c70-dda503c4f75e d1137681-63da-4cda-be99-1640ec00ae49 f3f38b9c-a176-483f-a65c-10e296376b6d 6298ad09-20a0-4f72-bd25-b9f1533dfd34 86727bb6-740a-4b90-b7a0-c736b084f14a 020c781b-7818-4e47-9b32-dd4f1f8f19b0 822d33ce-693c-4151-921a-16cc2cdf8c45 c0ae3913-f756-4af9-8f0f-1b33075ed6ee 23c04be4-16b8-45e5-9412-4986f9d5f3c4 f4e3edca-f2af-4c7f-8554-8d6ba398b1a7 78750a05-2022-44b7-98f4-efa092288fed edf3cf67-33e3-4e3a-8f18-45ec5f3166f7 a0e2ddb5-6573-441b-bcdb-e75f6b04fb75 f9c2d75b-813a-47c6-a18c-11d26b5a9528 fd58dcca-d5fc-4dfd-85dc-f201b464009e cfb610df-a3e3-4385-89da-11ed967da663 01bb81e9-529b-4f80-b501-49fbc676764d 213482d8-eacf-4b55-a232-0ae80410144a d52121b7-7fef-4cd8-9a5c-b64a302dbee9 c85f810f-2005-4715-aabe-8a5e2554c926 b2de940a-9c87-4736-9ce4-b19d2d72dca5 14513d8f-1070-4939-9848-eb7f0413eedf aa6e79e0-fe34-4025-b26b-a388229de8be 778a12a7-0fd8-47fb-b31a-226e44f2cbcc 3daf66e3-b061-40ca-b003-12294fdb6159 5ad224d5-a957-43f8-970f-6b53a73f625f 742f5419-e406-49d6-93dd-c3fa6f08a88f 90d4beb9-3e7b-4185-93a5-71510ad03b5d d25c58b9-32b6-4b4c-b43e-84cc4107d7f5 64f1d67b-cb11-418f-8cb0-3a1ad762370e defc9ca9-6527-4ba2-a782-06da6f3f4078 ea67bdfa-add2-466c-8ee1-1010ab3add0a fca266d1-d809-432f-a725-218cc3d42c71 fdb06d1d-ac14-49bd-ac00-7d7e80589186 82c4da1e-c6bc-478f-aa11-e730bff53501 83416e43-11cc-48de-9b27-402a79eccac4 a1c52d31-0560-4ff7-9cba-d3f4085b3037 e055df79-8cca-4757-8a84-2ed6c0428b55 49141d7f-1bd2-4aa0-ad2b-65be62106a90 b341e059-d59b-42d9-aef6-bd7e2943b88e 56e2fea4-cd9d-44dc-b4a1-ca90486dccaf 83d035f6-f755-4356-8a8e-17b2823fc502 2113de62-5be3-4517-9107-10007b900767 37940b29-74cb-4878-8479-d31d1a2f49c2 cb396132-4cc8-46dd-9203-5028c981917c e12c3e33-9368-4db1-95d8-daa4d9fa2ffa 37d43eac-a9a1-407f-8a5d-46301d1cd192 9bc35792-ad52-428c-8b00-e4547bab8522 161c40f8-e24d-4767-9ada-99bce7ad00fa 5557829f-1876-46b9-aac5-3dad86e15eda 2558821b-f8c6-416e-9570-1a39cf09cb41 af12e7ff-64b5-48fd-8996-a1b0fc727168 1a7e3934-595f-4649-861d-f68d79121311 275025ff-bea0-4114-881c-51354cdf2e20 ffceb6b4-8379-4a10-8de4-70a88b05dcf2 a0b1937e-0a19-4cd1-8247-35db3e2b0762 3a3fb95c-9e94-4499-a45b-1e8304c23a2e a0df8e13-cf9c-418f-afd6-03ba0c0e3f0d f47a4cb0-9150-4dba-af5f-e5ddad406b59 ae042c92-89a6-4f54-bfda-ac9903d09cba 669b34bb-c48f-4baf-b159-cf4f04b0f274 3b8679c6-94b6-42f2-ade2-468bdd04b779 b8d8a7f1-b4c0-4401-86de-91bd6846b4c5 76b7897b-276d-46c0-b6e4-61f2ebfdc5c1 0fd8bf6a-5d3b-4134-9769-cefefdf8329e 9f7409c4-e6e6-42f9-a09b-a6eb81eb3981 f792e470-9db8-4367-8872-6d1b2ebc382e ef0a5fd6-8f6d-441d-9966-0485b38e25f0 383d50cf-65bf-4659-ad97-5c431f9b1c3e f960f55a-b619-4984-ae07-2a7b89bb9ef2 1a6ee21c-0853-450b-bfb3-ffd6a598c2db cc312dcf-7078-41d2-b324-866b14cbbe4d b6f37337-d4d8-4b40-839a-335d29cbb16d ccb080d6-0a85-4ca6-8250-7f1884ec983e 70fa7087-173a-4330-b4b9-c420e98139ce 7a52d41e-9a87-4a50-b08f-f27a159ffd66 989a6f8b-d0ae-4184-99ce-7b1d2b018a28 17ff70e1-de2b-4d3e-a1b1-ad7b50d3a2c7 6947a491-a6dd-4a9f-8cf6-b1a7a0f20d8c 04ae731a-5414-43af-95b5-3335dc0b1131 f68c815a-69d4-4851-af58-e6b545602723 f4a72c05-3e1c-4466-bb4f-f6a137c01bd8 bdfc0e6e-e8ab-48e5-af78-d20b5b201081 253beec4-329c-4e2e-955c-5db783744f9d 3b069b2a-c88f-4fe5-9b71-a043af614c67 0f626ae7-8dfc-4e4b-b938-72015fa3ed56 f1fcb42f-fa50-4080-8464-ac0d8fe90d7e 67a5ebea-b1ad-49b6-8000-366d1f035e70 f7685318-e400-44fa-8554-a495fe5c125e b4ff380e-62fe-43f3-94d5-b4d115972eae 8e82e636-c139-434f-932c-1f476d4661d1 4641755d-cc11-4950-9d9c-0c04447dbe8e de63a34d-1f9a-4a47-8e42-7b57215fdeb4 77cad7ae-5381-4708-8b57-b222c1ecc628 66028817-18aa-419b-9c91-64628335c500 478b341d-565e-429e-aa6c-6fb16d0e89d0 a4b96cac-b648-4e15-ab1d-48e33f084d80 f7e78c24-5a56-4187-98f8-072bd9dd8e0a bd1233a2-925a-409c-becc-e997b3cfb237 977ceb5b-b4dc-4036-a5d3-31275c6f4435 53098327-5fff-4c0f-9835-87b5881d2b85 d48d1cb6-d46d-469a-a789-07c4ba996551 8ee05432-fb2a-4419-9293-57685a251ccc 4b8a764e-7bf7-432a-8221-641cf8c2624d 181c13d5-b809-4248-a926-e6536ee570c2 acbb76b2-ef4a-4e65-ac86-7943f23f7d13 f0631ecf-c1ce-43bb-a407-913646f5e223 ee7badda-cc48-4273-8310-9eb3c7e1fa70 af184340-2684-46a9-8fb1-0f5b5e939bcb 663e288e-2a57-46be-9e53-5a7456c3199e e10b47c6-cffa-46c7-9b8f-365ac122bf65 8af4844b-8750-45a3-87b0-a1a8ce3afc9a 4d0d552c-fbc8-418b-8d46-6a9eac028801 6860d61e-4a8c-4d5a-b2b0-d6d43205260d e5f1bf7e-578a-4aa5-be8a-dd2467bd45e5 48f492c4-5f4b-476c-8585-d4adca3c08df f3b15ea0-3d79-4168-a9d7-004f824ac76a 167c1960-d07a-4422-931b-001f9901cf38 a08dc7b0-abc1-4381-b6b3-d36e52d8815d 00e42b5a-8330-4c1d-b5e6-9d8addb18408 d100c55f-bff9-4d12-8fb3-5120a3566f73 520fa664-30aa-4e7e-acac-c2dec29151bc 3b18b93a-ea22-4a70-9e17-79ba78b4c308 e0a521b2-a753-45af-8504-74f829b3e933 b00d91be-9299-4f98-9968-20737fa62e50 5a652ec4-8f5e-4b37-b704-6349f1b7b2db fb37c91d-8a4e-4abe-93c7-e5a4a4ea1394 f1410cda-babd-4b1c-b7eb-037511eb3f3c 1001ff11-bd33-4219-a433-72e237cf6b2c 22cb33be-d26a-4dc1-a80b-5ece868e8e58 389ae757-c70f-4b3f-871f-b97f33fe5f5b f0282a62-c062-41a8-93b9-3c6eef56e0f5 47e25614-482a-4b68-8f86-55490b2f0223 01a5e2e6-2245-49d0-9ddd-98d58989d2ba 3f10b658-ca15-4bd9-9693-0ad26e95c6ff 9f847835-b6bd-41b9-9b5e-007046ed4252 185f7bdc-a462-4ef4-b1c0-389111450d8c 99ebf56b-7998-45e4-af7c-9ffaa4c49fb2 d2940c98-c002-45fe-8db5-d8010b153887 e2a97c8c-dcf5-4727-b407-26a31089a7ba 6bd05e24-f69b-4855-b6e3-363bb4406683 38b93a57-6b9d-414d-ad26-4e0fed253f24 0b4e2f29-6db7-41b0-a64f-2265f39a0432 6fcd5220-3078-46e6-80a5-3339b78199dc 60f8afcf-ab56-448d-b386-ca760e16354e 906ac4fc-d07e-440d-970a-09e2b919610c 4b22ed62-0e34-4b7e-8db9-bfac4cb5bd8f a492935c-b885-49f7-88f7-215a2fa32154 12ac198e-33e0-4d7c-ba22-ef9c4a27efcd 7eaf4b49-5307-46aa-8b1c-de97f24b8fe6 c7d7a5d8-c42f-4828-bc71-ea23baadd5c1 62779f9a-53bd-4b99-a6a2-132b5ddc4342 a342afa3-bead-4d0d-8c47-14fdaf65a0a4 c4b43c9c-72cd-451c-945e-ec0c1b87b72d 1c1a41c2-4534-4f26-b245-0ff096296112 870b07cb-8d9b-4209-bb57-98ddc9ccc69a 8313d94e-08ef-4e73-86a3-fc22cc24f3c0 0edff8b7-ebdb-4d44-a3eb-677aeb8501b7 99cf603f-7e74-4a4c-afb3-ad0823562d4e 47c0274c-97b8-4cd2-b685-ccdbc959d902 b0904876-29ab-414f-a0bd-31de8854693a f73166a2-1d92-490d-8211-6b08e42aa6ea 7f370c99-26c0-4807-abff-3dce0ba8918d 2a5618f5-beb3-4b0d-a2d1-b48a8dd74bd4 af891425-ef1b-478f-9bb5-6392af493d81 7c312273-9b59-4b97-9be2-55a490a404a3 e6b4d462-622f-4274-abe9-e6a8ff0d03b6 34659320-a722-4a56-9377-733b897e4f07 b05f6071-add1-445a-afb6-5406dab650b4 2af116e5-260a-4323-a495-d537a1c547d6 9309a1e9-0f51-41e3-bfaf-5ef82b887f69 886b02ed-81ed-4d26-ad47-d5592da6be41 0671486a-247a-46be-b1bc-848d3090b78c e3fb37b1-bf8f-44fe-bd5e-e5893a72865b a3c1fcf1-dda2-4260-ba75-cae577cd60d0 8efc738e-557f-403e-86f0-1aa50fe3ac14 878a30e4-d39b-4fc9-970b-2eb4848854ca 65e8d3b5-18bb-4a4c-933f-602ef4d42fae a9190a85-12e7-41f9-886a-ce35afaa4f2f 53c79ac7-1355-4852-b0dc-c2b34ee1fad4 4b8086ed-8405-4a43-921f-aed744575f65 09462957-68d7-4c4d-9875-a82b97037c65 f1cf97f2-f14b-4e25-9ea6-9fe4ae9a1e8a fcca4d3d-c0e2-4b66-8ad4-a525df8fcea0 d296bf7d-aeec-4d8c-bfbb-981dba9b0160 5996cf48-8102-4e29-a195-30a73bc314ed 8c84764f-0d95-4005-b48f-f6a98f0716f1 1dd6653d-25f9-46b6-8fb0-f7518fc462b4 58d7d745-a409-4a2d-811a-9e319cafdadc f3638966-d356-450a-b859-50f5f2a95082 65b9ec9a-2772-4e6c-beff-845fcf20d4cb c2d5f0f6-1eff-4b8b-87a8-d3a45bc0aa66 479edda7-535f-4168-b365-12d231a3fb96 105e9aa9-6311-45d7-a398-362ad61aeee3 ce086242-9e02-4b34-a477-2cb43e21976f 65d151d9-383c-4b03-b16a-d224450843c4 fb7dbb88-6849-4ebe-a242-e0bb2211186c b8c1fc32-1699-455c-9fdf-38a23bd1c17e e7e36186-fdbf-4927-b92a-028cdcdcf86f 22908ad4-1389-48a7-aae0-d4b9df0fcca9 1b7bb4be-cedc-493e-af6b-617ffe1aa0e7 5914a3e5-5a5c-4241-9614-3013fa895282 ed9af92a-44de-4f3b-b91b-5d8cdf6286fb 66ce2628-94d2-4d78-b16f-e3a39109d0e4 dc9174d8-d9a4-4ad5-a57b-59b231ad06a6 2e0a0625-38dc-4c54-9ed7-bd8c87797516 1e70350f-3642-46d1-830a-a781744714fd e5f08428-fb77-4ec7-95a8-695eeab71612 4937ac00-6fb0-417e-8883-e9f51ae24712 6be88a57-d678-443a-b2d8-9fe7b13d6936 d73ca53f-7319-4496-8694-a8201a911df5 3fb8528b-a13b-4abf-ae14-c364f2cad8b9 93d77092-d460-493f-81ba-2a86ed50c4ec d7604d1e-520e-4af7-a5eb-c06af920243c 6ed9b6d5-6469-443d-9af0-5c263c5b2dff 15cd6dca-be06-4d9c-a54d-1262d2de00d6 0ea48fd9-3b8d-422c-8232-a1a9aa66244a 1d324bfd-21ae-4ffe-9d96-7648cc1076b5 61e821fe-5511-4f5b-a14e-f170e00426eb 9212b44f-8a4d-435d-a2d0-1a1435e597cd eec87801-7ca5-464f-a370-acdf4b8cf2bd f09edf8f-b468-4bcd-87ab-21f751c0fd70 a547d57d-a3e5-4eab-a9a1-dc65b1696c5b f613477d-718f-41ec-862d-738e87278189 5be110fc-c8d6-4b91-bc6c-65bc73b94a4b 9fb12796-b8ab-4dcd-aba7-d26727777632 2a624ce9-f62f-4b3d-bf46-ed380dc77206 2b1de4a7-9846-4616-a642-b04117ce6998 5e0e5922-6233-4893-aca9-a4293876d4dd 7a595f22-f336-476f-847d-9e4f28cf5e43 63c6424b-8bfd-4f24-a7b9-faa7be16b795 f78cbdd1-2863-4e38-bd3a-04ced7d7a1b1 97c7ff46-d1bd-4e5b-9662-95f5be848f0c c2791bf3-63bb-484e-8856-948ce36e3781 20e1f93c-ae62-4516-8277-fd873ff90e5d 53caeb58-07b0-45db-8c21-5abff6964b1a 0a061afe-08cd-4606-afde-8e2e1d9cd2c3 ff669ed8-afb1-4b1b-a271-e9e0447daaec 50a098ad-5d4a-4edd-a0ad-708416cbdcae 7391c995-fe37-47f5-a5e4-abafdbd6154a 529a8715-40fb-4980-83f6-2b3c671fb853 987d2b04-1992-4563-8aec-5a5a74e24559 2928d8d9-f371-4169-99a2-5fdb73e087f2 836f0c04-e364-4d4b-ba77-dd850fd6791d 8db68d18-1da9-4c49-a277-52194abac2fb ad1c02e5-fe2f-4383-9aa2-ee6a480a49e4 735280d7-40e0-4ca3-9884-f0ff9466cb3b e25ff187-bef6-4366-9b94-cc129301aac3 3a78d21c-ef04-4218-8dd5-76cb22e374ea 8507e66d-f28d-47c5-8911-d970c78258f5 dbf9e303-d8a3-44c2-9e1a-55c7adca66b8 52b76ebf-b023-4d3c-935e-f67cf15ecaa4 02a0117b-1fa3-491c-92bd-24dd8f760e64 59fb8318-c49c-49b1-81af-889fd00d6b66 5ccb4537-d91e-444d-937d-17ec47d060ef 763090e3-b8bb-4ad3-87f8-7eebfe907ea4 7bb13583-15e2-473a-af36-fad569b389a3 f0a813a7-5ab8-4ce0-acfa-54ea96f42a29 acd6283e-3b48-462c-be7f-c351b8f2d0ef 013bc1f6-a652-4796-af27-7b0e5c9b160c 5a3359c4-0bfa-4566-9bcd-3f65fbe5f91e 32d50350-72ed-4cbc-9465-b2e9a4f0a577 c4014425-d54b-45e3-8085-bc58a00ef9ee ac9ccc58-507e-4dd7-85f9-4734a0c125b4 f96fe2cf-2abd-485c-8f3d-d9fb1b560cb7 26c9b675-ff68-4a17-bb9b-f7428cd9dac5 bfc6fcdb-1240-4453-a067-957cd022280d 7a880cf1-f4f1-4614-815e-e132b6ae88ad ff1825a8-a363-4536-8456-0e0e18f99f05 51e51008-d222-4ce6-8eb6-9595729b8119 475ef8f1-6705-45f9-824a-4acf5af063ac fc5a4566-209f-4247-8d32-cd2b0b81a76e 7ffe5b35-8617-4791-9ffc-0f99eebfe21b 9a934267-cf5c-4b6b-bb0c-5a31755c9015 9eb7cfc9-ccd3-46e1-a167-1d97b7ce8c08 f8a0eb34-31fd-429a-87f4-c6adc0d6c239 962a06d7-517b-4c1a-badc-16b518a67780 b1024afb-71b4-473f-8236-1bda8488872c 86f2c7e0-6cb2-4bc6-93f6-db4c69e6e436 fd0a105a-4e0f-4ef3-ab7d-712bfb2867bd 41c94326-70a3-4a48-86ef-ace76c105228 efa2cf95-543b-43f0-adc7-48f3302f3ccf 4d43828c-ab9b-4043-898e-c4fde9cd1095 50bbf70f-fa33-4b80-8419-171d3b61bba3 5a2b0859-9b78-4662-9ce7-f9bd125c9be4 aa44f831-5dc5-434d-8305-369f9322cdae cfa3bf66-b9f8-41b4-8e5b-24828ddc29cd 1a32bc6c-e20c-4209-9bfa-cb61f7098ecb ae9b88aa-326b-4afa-8c70-fc195161189f 73e065d7-4da9-43ce-90e0-589ebe584b43 c8b7b20a-887e-42f4-9dec-141bb9952310 292bd082-86c1-4ab6-9f0f-adea5b09ac43 52c5c660-28a9-46e9-9760-ef2ceec76e05 15db7a76-37fd-4578-ba97-ce69bdc0e13b 7116fd9c-3041-4bfc-8966-459e5027868a 8eb00434-313a-4018-9436-1ebae0878218 5ef652f3-04fe-496a-9639-48da3280f121 d345e0a1-12e8-4962-864d-9526b9085637 d47890ee-bf37-494e-bc5a-b23336f9b5ca 6d672e65-7779-4e56-8ac3-04e461bb5330 56ba4340-6ddd-49ae-a554-08f413bc25f7 4c8b32ec-4453-47ae-b144-05039b6f8c86 49e6cb77-db71-4418-8fcd-9ae16d957f78 4afc48cb-198c-40bb-b399-8035fc0ec611 0669d7ad-87a5-4ec6-a990-b93f96dd92f0 4511e381-fb09-4c15-b07f-f60888a66cfd d2ec1433-79ff-44d8-b01c-c3792540d132 e1742abf-b659-4f8c-be0c-943b0f022c78 59d5005a-6273-4b6a-8fa1-e8bbecbcaab2 70db3676-857c-4295-9ff9-89a26159f81c 35e9ebca-16ea-4540-a037-20b7875e1077 9b483b4c-36f3-484b-94f3-80bb63564a1d 039544e9-d39a-4091-875d-c883ac1d0eae 4ac97e70-69bc-4e36-be1a-2da8a6617281 a3034797-3f09-4791-8faf-26203d7c4650 2c3ae5e8-c10a-45b3-b64d-b4d63b5769c9 ff52ae77-f2ba-4841-8f44-0593caaf5851 4a387f79-2744-4e6f-82d1-5c6b77502e0d 1083d9ec-84af-4532-8fef-af0c6899de8e e49c1360-d379-4003-88c8-cc3dc7a11257 e592ece0-b49d-4456-ac5b-dd20744a8d22 cec2d8e4-2dc9-4c87-a0ee-450b2306cae7 18a3ef14-3c0a-4835-ad2a-18d8fd5f9461 8a9294e1-af7b-4fb0-b6be-16611489c0aa 4a6d48cb-8ce8-4b92-8c0d-e0169e90a021 89465ddf-3f79-4e4e-8453-efe64bf85e68 99d399b1-8ca8-4962-b038-034ef615561f c5283a4a-1ad2-4457-bf6d-d0ab03f49a1b 8733f8d6-d4c9-4b61-9a36-3f8895fc9590 f0bdf916-abf0-4eac-ad7d-c4dbe9ecd461 2601313e-787b-44fb-835e-8db3f89ba43b 827c1df3-79ae-4acf-aca7-6fca5074f47b 2376644f-1b98-4865-9e28-acbece53f454 a9267d8c-720d-46d3-8a59-4c33ebacab5c 95de8695-c29c-4549-b868-f8d89aa630b4 b8c5e53e-f6f4-43ec-a3e0-ee4442a18530 62912a81-6285-4e96-9983-b1f089ab9606 d7d951b8-c68a-4638-b7ab-7216bfdc8872 1ea7b494-1c9a-4661-8dcb-75b6705f6485 f0af4eaf-6014-40da-8d85-9effbc33dc8f d9385963-b02d-4179-9c6b-5b1122dda9fb d57566f9-b8bf-4b7f-822c-192b0aaccd7f 414be1ac-87ee-4308-a0d6-5dcfce95897f 178c19a5-3fc1-4767-bdcc-ad9114079a6e 1c2363fc-b25d-482d-812b-b381856ab810 9c3fe1c2-0981-4098-be45-c99668376504 78bf8364-3bef-4a22-b8dc-bf33f7eb6834 247e8c62-5ff0-4443-9ac1-c28046f242b3 f99dd025-ab05-4f7e-9f0d-dfabd5490bd4 256d0392-dafe-41ee-86a3-4a89d328e90f 0b06c675-ad22-4dc1-86a8-15ff40575fdb 1790e8f2-e1be-403e-9a1e-5e561372f5fa 0964b365-efcf-4cef-93e7-91fbe9f691a9 cc535b08-4c2e-429d-be88-b934936e9629 b28bddd0-6713-4912-a9f1-61cca30ee663 981d941b-df87-42bd-959e-881b4541ce70 e7eea2fe-7abf-4a05-919c-eee8afa7d313 66922d36-7d19-4cc3-b98f-693baef4edac da89c1a8-25d1-4344-9de0-1f26b0ad5763 957f8b82-1581-4947-b1e6-542a90061966 e64e8b16-5f43-4e39-933a-4604bc0921dc 6d3252b7-2beb-4236-ac43-f90970d02838 f716040d-244b-43b8-9889-3c8cd0470023 571fea52-a485-413a-a71a-53d049c35707 ff722608-0f2a-42e8-a20e-3ce45fb95a00 3a442afc-d9d4-4820-9eb5-a61e0665c388 59c86fc0-98a9-4484-9a87-eaaeeca12052 cb4da681-24dd-4cb5-83a9-ff4d505cece9 adc96b3e-ac3a-4120-872d-24820e71cadd 3c73f5b3-6ad1-4f9d-8d9b-481d1e3be165 28ce30d2-c6a5-48de-969e-6b93cc2e01ca 59134b62-64e4-49db-9c55-da9fd4ac6d57 3ec985fb-da57-4250-ab74-49f57002409b cf2678c3-85e3-4b86-a176-a0ae477171fe 927bebcc-b7a8-4aab-9166-32930ca5158d a1ff1504-7029-4276-81db-e0cef47adc9c 437d98c0-ac75-499e-ab3a-df47f92ae9f0 b87cb275-7eb3-4cdb-871d-233fae02d17d 7255b08c-a733-4c7f-843b-11c322c73d10 13c76f47-856a-4ae6-a794-20614b6f2a22 d40af1d5-9824-4d70-9013-068c687236a5 4ce655b8-1799-44c0-9f16-f789d24f9384 c737ecd9-ea9d-4c84-b9b6-b4f03e882023 cddcbcdb-0b79-4c03-a56c-bc99ac0573ed fe57a954-aa33-4b5b-ada7-36f94c6bfa91 5405f1ba-bfe2-4d04-a092-981bb5593c5e bbb8f477-8d0b-45cc-b263-d30db9705dd7 e2fe9f07-2244-4622-adc4-39d65cbe306c 7c9fd292-38b8-4b3e-9380-7dba0f80824d d63287c8-96fe-4cc2-b93d-d2618273e4e9 9e558dd6-5763-4252-b66c-f517928a453e 9147cd9d-914f-4e9d-a3a0-93a135be4c04 460c6c86-ecd9-4bb9-a04f-3bc748a037a5 2c33b8e7-a6d1-4fb4-a2ca-adcdb472f9d8 a54a74ae-e647-438b-9bc1-7c75148d28a2 cbed7f4d-95d4-4d02-b5b6-a662fa21c05b 2f96ed15-a46a-459b-bacc-ef221efe00a2 e116e5e6-2ef4-49b9-91cf-931cafac428d 7da0a8aa-c746-40f3-96f1-b958c758c022 a819ab34-edb3-4f8a-bc17-0f7ccf71ce4d 25916579-cc69-4dbe-bbfa-ec04f2dc0435 e7661eda-2d2f-4264-961d-e1bc57c8b3f5 9599f666-98f6-44c0-85f1-2a82d49f4515 8ea05d06-150c-495c-8506-78fa6476b809 baf58822-cf93-4a9d-8eb1-087b0a8231f2 90e93c59-b92f-4839-87f3-a52f0ddce4e6 76340a2d-a45c-47b0-8883-5e7d05fd8ded 8ff27c33-9764-4a51-a3b9-51b73549f70a ebd3f6c4-e452-48d7-81e0-d4e8dafc0f18 9f144d15-b372-4a6b-bde4-15083c62904e 2ef53814-50ce-4f71-847f-33a9a9217a8c 0d28b620-7a51-457c-97a8-debd42bc7138 5b90dda6-4e3f-447e-84cf-02ac50c56e10 b8e62608-b5a1-43de-8673-e58fbf7723d6 1cd0c150-05aa-410f-aafa-96ae1d15da98 d24daf87-569b-414b-9f16-4c01ef5512d5 e90db147-bd20-426d-8db9-fc2230d9293d abaf7cea-d8e4-42bd-bec2-f42121175535 a660a9b8-c136-4dcf-8680-622d4b1be290 2fe73f5a-8cfc-42f6-b57e-3f97521f31c8 f3d388f9-3a49-41d9-816b-d9a0c6911fb3 9e0026a2-dded-4aa0-ab28-7771ca5c80a7 720bf3d3-19db-4d1d-8c43-682e034680ca cfbbc207-45fa-479b-8961-284e87586887 4784e8da-b9bb-4853-8898-91cc845755e1 ae8455d6-fcd0-4644-b46f-26072a45c2bd 08ac6a25-1ec6-4527-8e11-35fca7d936cc 81a97dcc-f9a6-435b-9bc7-f3649273814d d3f13dc8-6889-4ef9-b95f-72079e5a8ffa eb6e2b42-f623-4c12-a967-79a52508f25d f18f7050-1e38-4dd3-b731-23ffdc96f1cf a72ad9f6-75b4-4467-8534-f442695a7f91 08fe2e9f-c58c-4081-b92c-17689dd015ed 1edce610-bd1c-47ed-b719-536d66e65be5 75e7268c-2ff3-4b26-bbef-bf01c7730960 4607da43-3919-49ee-a260-a6bc680a9cb1 4c106fe2-b764-438c-997d-f5a6d14f0477 24cf0930-729d-476e-b224-6ed2fddd01b1 7de0d0ee-5f6c-4497-b8d7-d2299ffaed08 1b53aa39-da4e-4b28-ba2d-17d798b24cc6 e5d62faa-7c7f-4f5d-9513-e0767739365d cf182f8e-4974-44c8-9489-66d7f0b884d0 a13d40cb-1bab-4623-863a-989ae2695153 97a14dac-1d69-451c-ba18-ed8b635b0a7c a2c7b1c1-f773-4f32-bce2-41a11236518d 1efb01a0-14e7-477d-a66a-818440feb9e4 269cf6a2-e2ba-46e5-aef4-eda66e0a3f88 b943cf1c-1d95-4ae7-b7dd-b8124457ced1 a3174a71-9a97-4227-a1ce-85c11724cbe5 577432c8-ecc8-4d64-9bc5-71187550da6e d9695f7e-5b2e-444a-9ca2-be54fda1d0c1 d77845f8-1061-4037-b350-a894e1c09b7c c2c1407b-6901-4a01-9582-1049b2af7b9f 8038e7a3-1024-4a6e-92f5-b83818c7f855 e051cc0c-8bee-46ff-bfd5-86213374e586 88d8cc28-8058-44fe-89af-4e1b10a0de39 cb5c5dde-68e9-44bd-9b1a-b06d33e6628e 28d2cdf0-9884-44b8-bb12-d55936f9b9d3 cd3b9f1a-39fa-4849-b2d8-4496d9e49457 aae1449e-7c19-47ed-ae9a-89a33e15dd4b 4865cc33-6e1e-47e2-92ee-a68b079ee002 fcb34a5e-e759-4006-8314-139cb9510c24 d82e90cd-6d39-4d6c-81ad-f2853df66103 7264d6a5-37bf-4558-b96a-56438d469893 9b6f34c9-6a65-4f7d-8a7a-3b483ed3a511 74a9e3c6-7f7c-4c2e-b1de-55ed20bdcb7c 8ed321bf-64d5-4b40-8d6c-93b5a4df8a96 7ca8a334-22e6-4fe0-b34b-6f70503a61a1 0521a2f4-b9d0-4fe0-a685-0a370c812a02 c2b5eab1-02e7-4511-aa87-32b748e6598d 55b4208a-6dd3-4d1e-8343-4c391a3673d9 50bb0f0f-c264-4a32-b160-064ec0589b62 7ba7b169-db11-4ec2-82f0-6d16b9b7389d d795d5c9-ae82-4e7a-950b-b8248404c524 2e8e5b0b-1a45-4fea-8fa2-bc933e85c7d8 9ae3bd9f-acbc-43be-a65a-66aaa9134014 53bb357e-a7b1-41a3-a6e3-176cb2c69802 b7fb2fe1-dec8-43c6-a020-5b7a27c47293 13076b8d-a57e-4f6f-b38c-7e0ec12430be 5f0e1850-ca9f-4a31-bd83-b6c3be843031 c78ef1f9-be90-4d8d-8f05-32957bae1f28 e710c665-9a7a-4d72-b869-6af8c34c4c98 82809a75-09d7-42a4-872e-d73ef4966c15 b3879a60-812f-48cb-ab69-909063d57df4 5d9d3adb-6ffc-4ad1-98c6-0aeca7908eb4 e73f861d-b40b-414c-9ec3-23ed1c73daee 35271716-33eb-4142-ab94-b058776de0a0 b0d2d4c3-fc86-4259-a958-59068d80bb1c 55371ef8-d30c-4d73-b2fa-9d882e7f11ff 37d6d3c1-e979-4297-9f91-e5db4a435aab 4aed4630-c8a5-459c-b76e-2fdf65f1c4ff 64e35c69-9cdc-4631-9959-9137917bede1 18f7f401-50d1-4fe4-90d3-7a032258b5c2 92df84cd-bb90-4543-82bf-203bd29deaa0 c0dcc4ca-111a-4c7a-8bcb-35f8adafa07a bab0d59c-76ac-412a-8f57-d019de4c0ccd ee65e437-d8aa-4360-a624-f3e450849cc0 d975cb69-28cc-4b3e-b530-a5e193fe0008 35ff39b0-3b62-400f-bc1c-e2931a6ddd46 86c7c00b-be2d-4a03-a80a-812354c78815 38270e6f-ad0c-4be1-95c9-3f829c4a9388 006cb572-3f7a-4a73-8d2b-ea4019ea4822 532b5b45-7a88-4858-91b1-c453668da2ae 7c2bc9f2-c92f-4cda-aeed-135f6daf2118 d6733bac-e048-461e-bcbb-350036f53714 050a6f03-930a-4a43-bee3-88cb307aee7a d3840c4c-6de4-4fce-aec0-5cb79341ae96 fd3ce2ec-1f22-4732-b382-90d9886a90b2 cb9eb05d-5e6e-4646-8f58-0f7cb9618930 1f594ecd-f8bb-4281-9798-8365f71bec50 3609e4fe-e9e4-419b-836e-d357adc8cd2b 3907b229-86ce-4915-9e88-b74828962086 8b094434-6abe-40d3-a4a3-f240c8972483 4e02af70-0eaf-4dc8-8f3d-c1a7f97fe24d 025ca483-ed40-4ff1-9529-16b5e0ee7bfc 54c44d91-ec5b-4612-98f3-2969a906fe0d a9cb2c93-a882-40e8-9532-1f1ab64c480f 20e762b9-7d35-43a0-aea2-917381f29e4a 3b6c5ae3-dd8c-40e9-9e3e-fc0f198dd407 c45c72b4-8cfa-4cde-abea-41e313d792ad a7bab4ea-82b1-4295-b874-5b629a74442e 045fbcc8-8e66-4d4a-baf4-d30b202e9e81 92d1c7f1-b86e-4824-9b05-469a1080f886 8e63f3e9-24a2-4205-8e87-c1126aac037e d9a591f9-3ff2-402a-9ae8-58394abdf6d8 f0d35e95-5a9a-40b3-bf48-8b3adca6af63 d84362a6-31f1-4ea3-a7cf-a306e1145287 213d9244-b6f0-4ab0-a0be-e8751a35215d b741cb25-c7d4-477e-9c5c-8cc6ec1064d3 b2387340-6770-43da-bced-161e5106c40c 69ab1f93-0889-421e-8669-5d4d915a1f9c 8bfdbd20-16c0-4b97-b44d-41719445f636 025edfb4-745f-4ee8-b527-78923c3f4475 08c61b55-2db3-4b5d-9312-f7646a3adef6 9210b94f-1a15-42f1-87d1-f0240ed3f2f4 ad12dfef-ee3e-4582-a8c8-0ed7fbf4f5c8 0900529e-8cf5-40ad-bfcc-062c9006a80e 29f49bbe-aeee-4df6-81e3-45a3faf7b73a 1220a975-a0b2-4049-82df-22c367e7fee9 0e1e5ed9-9a25-43a9-9e63-2bf7c2df95b2 82b9e99c-c76c-427f-aa06-5715ff802fcb 5353fad8-b2ff-49cc-b868-004403a04af6 5ad431b3-cc0a-4828-a60d-305d6cca73b2 b1561d29-f70d-4c3c-a2ea-47cf640de4fb 233223d1-9ea2-4079-8b19-6f16bbd02a41 5f7dd723-2132-46b7-8452-7b6d3a424192 7197b374-41b0-41f3-8431-e40471e5c826 6f6b792b-2da3-4e17-8386-7b6c688a74fb 104c483c-5846-4679-8452-c3b4ec41adc4 b175aea5-e680-47cd-977e-1f9ce7ad2b8c 55480e14-c812-4f71-a6c2-4cd7a7404d3c d0f5714b-23e3-4076-b28e-9a681df56bd8 b72e6eb7-a7d3-4a73-9310-a5ab80bbe053 6c916a67-64c4-4fce-9310-a5026b6fb106 f27f47e6-fe61-4b35-93fb-272ce4570fb7 3d701fe5-edfd-4f75-9e28-77a9c45808fa bdc2e826-e516-4d6a-9126-a33d77b0b092 59bb438f-a1d2-497b-b48e-96dcf8439db0 f664f47a-82c1-4642-bfe3-21d87016a465 2c12b611-97cb-47fd-9c63-a9a8a71be33f 31f5f0c7-0d87-4805-83c9-65157b038d7e d1a8e537-c0df-4cd7-a9ac-4561b724a457 2bcc1ee1-9aad-4c97-90ea-55376170212a a876b302-bb81-4513-adcf-3e914cd9ea73 09e57ee2-793c-4d4c-ae4e-f8358edc0ea3 6135ccf0-9563-432e-9263-6b7a226af9da 1866fab3-db09-425f-abbd-4d936bb4366d dfec38f4-2384-4de6-bf26-f64cca71f487 1b6cbcea-f66f-4f09-8cea-c26700c4dd46 f22fc816-9744-4daa-9734-b3e6435cce8c 08484875-41c8-400a-b031-ff4c4021c842 514f4eba-2eae-408c-850d-db24e7964bc4 4a2be80f-362d-47dc-9e0e-91cb7acb5add a4c6a067-eaa6-454f-98ff-a6bee60c131c 92f560e5-1a27-4d2f-8d4f-ccf386d32ac8 375c0405-854f-4d2d-bd40-8100e04c268a 1181f521-762d-46ec-a4b7-782663c8f8e8 b76404e6-bd5e-4723-83ea-af1a217d0408 870ad1da-3697-464e-9c94-a6ac41455f05 c2f7ebb7-f051-4654-8244-02242d96c218 8cfbb4c2-0869-42c8-93ec-2b9e5dd223e8 ed86b54a-49cf-452b-a835-f8b20008e14b 81421fdb-73eb-4e0c-8f2d-ce7c7b79f411 2dc1bf51-8308-4b1e-b5d9-c9d69efae605 e19d3091-bda4-40e3-a475-f628f5cc1650 dcfd7b97-2bff-4bab-9349-8a05bf3d7e70 3020b85d-0ce0-4088-9a2a-ae7f8aa2fee3 6bb2d022-155d-4a83-baa5-5d9473f87b5b d3049a0f-756c-4118-8590-a14309b8b4a7 644d2986-0f84-4615-8729-2dda0a7a3f49 5b636e27-b54a-4c71-b64d-f03e337420af 3df58d66-2888-40e8-9341-4d2989ba42bb 1bf66386-b234-4202-bb07-86a4ce5ffd56 de5dae7d-2e35-48c9-a890-61646f1fa7fb 45edc787-1a65-4237-a0f7-d60c5bd24a4f c4ff31d0-213a-4ef7-b7ee-1a7582aba0f7 164f9955-17f4-4fca-9a81-6ba6adb9300c 68c1d5dc-1617-49ca-8121-c3c9d26d6060 72fedddb-4169-4c1a-962d-89611aafe706 0aaa8283-4890-404a-bf0d-ff5aad76c32e 7c4c0e90-123d-4498-aa2d-b72ef063b6a6 30649bfc-4fe9-4d0b-9318-01eef31e2b30 176c82ab-88b6-4aa9-a219-2f137f23fbaa bbc93fda-681f-49b9-9903-b9710bcb22ea 13c9441e-c234-479d-ad02-3ef1660d5ca0 5f36e35a-aa8f-4a5b-be49-0df44ba273aa dc1a2d3f-e0b6-4cb0-ac24-7d1fa8ad0fc4 1ba7f1d4-ba7b-4ad7-bb8c-fdc9187d997a 9d93659d-7aeb-4580-9bf4-e2471d293f9f 1dcc9eeb-ad93-4229-b740-53186f634b3a 92d7ca15-21a7-448b-b0c3-8c1532b1b19f 3685c956-69b5-4c23-8eab-e31d976746c8 96dc72a2-011f-49bf-b4fd-0c81c59f75a1 d442b0c0-e6af-4ec1-99f8-d5dd5f2979cf c88d9220-6a90-4803-bc13-6823debed7b8 e06dd4e3-bae1-40e6-8a44-a4ba06f3cfc7 1517e9bb-3582-42a7-92c9-32960bbe0146 b69c6640-8092-425e-8dd8-ed749a63ab01 129587db-7219-488b-92b7-f57e879f830b 0e098dcd-8232-4bd9-8419-db5355e6fc9a 1460f8ce-831a-4ba2-985c-f39eb239bf91 0e40d2c4-4a7d-4dd0-bd11-244dbe12610e b6de5028-8f60-48b6-80ce-43b58bbbdb8b 9abf0e64-fd11-4bd6-8963-7cf54bb73457 4a0fbf97-04a7-4dc6-9456-a26df57bd563 39187643-c304-41e8-a007-41cf9126ea46 a71d2fc1-1d14-4fc8-8a8f-83b969c71762 3f434402-b490-4a77-9d9a-68076c1afeb3 43786f03-fffc-41b8-8143-bd64f00bb307 e1589a77-7d29-4f63-82ec-32c5e8f99aa2 7c4bf512-e059-46e0-b533-eaa9dfdbc691 0aeae9e9-fc51-4e7a-867d-857cc8de739d fcd3b324-d1e1-4487-87aa-325cb91f55f7 277a1890-ad3f-4070-91db-9a9b1faea0ae 2c6d4ad6-df57-4c00-82e7-c43f66cc9aeb 4c13857e-b110-4375-aedc-b6a14cc677d9 fdf14201-5797-4a60-8514-62bc1073d9f4 b2b81955-3d89-467c-a1d6-ce1cb1861090 4348631e-de2c-42cb-a50f-66f11b0aa57e a6bb4933-f631-43de-a16b-842e2a815159 17ed69ac-bb72-4b2b-b7ef-c8b80112e9ed 724bea3f-1ac0-4fd6-87a8-522baf323d8e 1ae12912-5eb7-4345-a39c-9e9fbc28ca16 781ca484-6210-4881-b9a4-c11457ca16cf 8a06f0dd-06cf-4b6d-9b0a-2f36396f43f7 88bb1a66-e3c0-417b-9b56-05c7b4383984 6dd8d941-7694-4880-bd0b-aa80674888b6 9ea14227-ce90-4d10-928a-659209835c84 a27df307-9b74-4087-854b-9ca91264fdc3 2f76f0ee-1a6c-44ee-8a57-82ecc7a15162 4520c220-82ab-492f-9706-7e1985ed54cd bb40f493-d318-4b7b-a122-e07e989ff006 7df36108-3d58-44ee-bc46-71c300558329 0f0e2308-d9fe-4b7e-8563-1f0d70e61b78 2e6c4922-5cf8-4a87-bdc6-2ef5ee38c441 7d6f90ff-581e-46be-8cba-107e39f4612d 5aca3ef8-5809-498d-8930-4f02b5276595 bd3517dc-2901-4f41-9d01-f0996a7ca80c 67f05dc6-8122-449b-8c25-21b3ce181336 d546520d-1aae-4ecf-8bea-9d3b946f5c90 0ffc53ce-d06f-42a5-98a8-243576c8b357 1621b280-fff7-4f95-b99f-f345685904e3 5ecde73f-0129-4dc6-9670-1871e242fda0 024a0069-81f3-4d0c-8732-c219a78b487c 433db0fb-584e-4033-beed-0ddc1ec6add0 9ba56830-37da-4821-98b2-3f7ec945d5d3 aec7bee3-2b66-47f5-ba84-c86d72d6dad0 b7f659cc-1611-4679-8066-c879421ad3ca 3fa886bb-b287-439d-b751-81f75ab9a4bb 474ebe58-00a2-4d08-aa99-8eefc28b7cd2 d45c3ddc-3a08-45dd-a547-aa1fc6750697 71d1bf50-451b-4970-9dc9-96985b7d1762 fb854485-ddd4-410f-a523-2918d6d41d0c 4ef8de30-98bd-4e23-9dbf-66afe305d8ac 689ba849-f299-41d0-a2ed-80cb50367649 e68b5e26-3695-4ed3-a56e-72baba7c32ca 97b343a4-d9f3-4ed0-bac9-ecbf0109e6a9 5041fd02-d0b5-4860-8c50-c738c2c4ecd7 a4472bd1-4519-4ab3-9d7c-85ee850d319d 5fb15d7f-1040-46df-8d00-62366d57cc59 11a7d048-9cdf-45ef-b1b1-df4e4986aa8c 8137728e-2167-43b7-a2ff-dfe17ad19f2b 0e229dd1-73e3-43a1-b492-fd31be1a5ab9 0a37315b-e7d4-4578-8bb1-6c043241ec78 7c5d54c4-a030-49f0-91fb-0282f8cc344c a4bb610e-b3dc-4b9b-8622-7617c9130237 e0059612-c451-40be-8c1a-194a96005369 4fea3c34-30d7-4f52-98cd-c7cc7e574e17 d0eec098-5d20-41c6-a652-dc8220ff382f 2f9970e4-4d6b-48ec-be79-8be5ce340088 9be49155-104c-440c-9546-019579e91dd1 039e1f00-6d67-4911-86bd-4770174a1bf5 6e4f1cf4-7543-4fcb-b9b3-211f13eed4f5 25b1f78d-7f95-47d2-a348-777d302d9256 31ab88ae-1fa7-41cb-8119-bbb312f9e59c e9de358b-84b2-4dfb-ae6d-53514d9206e9 63d88763-6c62-4769-9697-f0a32844c421 1e07ebc3-6d28-4060-b909-fd9b5163f242 c99c74a5-4247-46e7-93c9-9651aa36cdb0 5d0992c4-b4a2-47d7-9d64-ec826d79f108 fcd0052c-8f1c-4667-bf77-a52a60170204 797765c6-c7e7-4dc4-83db-5b8027204184 a6a88ad7-ba28-4a90-9002-d647d35f2a32 30fcffcf-6bbc-40bb-9c45-2b3671aa0335 5d304b32-2b51-440b-a847-2c5eed4722bc 8039c049-ec77-4630-8062-d51993be30e4 beadb6ef-0cc9-4222-b49a-8a4335fb8a23 42bfe02b-6a31-44bb-a77d-35c11a99e930 1ac67776-343d-4e03-ab93-f82b6d3888a9 0c2f97e7-c3cd-489a-80b9-95c026c57da7 22fea798-9ecb-471f-a7ae-ccb4513d542e 1f564203-4973-4087-8796-546684b3366d d4488157-ca3d-47f4-9187-c3246bdb2cff 4b995c48-2a33-4c03-8b79-41fdc1063f85 c15ceac1-7b5c-4213-80dc-9d2ebf9e8731 b2c13478-8666-4a63-8860-0abd8af9beee 3625f607-e7f1-4ab7-9a8b-9e6841aba472 77f4c448-e80f-4bb5-b465-b1b50ab82923 8bdfc8fb-5c86-4a97-89a1-6b152efe31cd b40d4c1a-6c45-47aa-80cb-27bf1c0eb2c6 c470b330-b323-41df-b721-3b0e9924ba38 ff29ebac-f138-450e-9aa3-68ff6c407afc 8c98709f-e65c-4894-a23b-37486f7a482e 0b9fe1e7-37da-4cb3-99ef-36cd7ca6f0f9 44e7fe39-1b6d-4b64-bd78-075d0ee9d216 f1eca893-c9f6-4557-8935-26364107da38 fcc254a2-0481-4176-a865-531a87f595bd fb75bcd7-1361-4f88-8912-a05f5315ecf8 d41b1951-acab-42eb-9142-c2d1142f4e90 48770460-e9e6-4edb-8b98-32e856b6457c 2bba4ea6-615c-4e52-bfae-0f97eced72c0 2f51770a-034d-4674-85eb-be9fd5d50b85 d5fbd600-b483-49b7-8e53-a3188f349ccc 520d42aa-1df5-4836-9c72-fc80209dbb57 8d9d76dc-aac0-4a1c-94fe-a86c8cf69cfe 08dc38c9-be80-4352-907d-333d73bf6508 02909751-7db0-4f67-a534-94956c172823 6330672a-8f11-4f83-916b-f42f3e1ed09a 38e0eb57-c3f3-4e90-aa1d-e8261b01ed35 05973c38-d2a3-4177-8aeb-6d125c6f0873 abead3b7-e04c-4b8a-84f8-f2acefe1b06c 85d56f45-7d44-4614-ba84-b38898c9e735 856aeb0a-8649-489d-bbf2-4d95cc0ac6da 74e80920-4d39-4807-9682-162b41591428 c1986e63-7d25-4d3a-b779-cea71ea535e2 4cb7ecb0-b02d-4c37-865e-076fe8796389 b3110964-5771-42f3-803b-f5572c86f275 7f38a413-6c20-49aa-a0ca-483819cb5bf5 d3180a86-1540-4dd5-aa8c-8b0180f4c269 808bad33-dc51-4cbe-a07d-63c812645c3f 37e34a90-b277-4d22-be37-7c8cac4544e5 ca50f571-1524-4051-848c-a38d601476d3 099bd726-6e9e-405e-8099-fdc022911d3c 2f5a1e9c-53ac-4255-8288-1972975c0c89 3d0c1dcc-e0cb-4e75-a387-50cff4408e6e 8ea6e9a4-d48b-473c-8342-fd761959ab03 2db1bd2f-b188-4131-924d-436584fdb184 866e269e-eb57-472a-99b9-c8556465f73b 36cda6e4-0dcf-428b-880f-2a78f1f98a1f 0abed123-df24-4dc4-84b8-b3770792ab2d 20278583-1b58-47ee-95fa-b74f1e7ece5d ac9dc7e9-5850-45fc-9c8f-269894fbc5aa 2c311258-4523-4ac7-b65b-cefc32a5dc37 97ba1fef-e2e5-4770-a19e-7afa71d8edd2 291d3c9f-314d-4959-a90a-50c2b9fccd56 9f989eee-406f-4ee6-b0f4-aa5a31c19a2a d9ae5ab4-51ed-4b0b-8080-88696e6594e4 d8d5045f-c455-4f24-b029-86c4b6908a1b 399f1823-450f-4671-8f45-b047b11f87a0 5ebb3ea1-b515-415d-bc4c-146ee41a90fb 4e6bd4ee-d22d-4ad0-8546-50aecb68ab9f 26aa860e-3785-4273-a7bb-be496c8ad861 79a171e8-25de-40ce-b70e-bc11adf23cd5 8fa14e4c-aefe-469e-b990-75824fe14a4e 0112e704-91b2-4add-ab6e-deca4c1d958b fecf63a2-c301-4bb4-a8aa-f996cf26952d 9f06659d-8f0c-4d1e-b5a5-f27344f6e263 9a50ace8-14bf-4ac5-80b8-442aa9aedd63 16002cf5-9563-4076-96fe-40df348a281c 9eebe8cd-3d6a-43dd-978b-53444a68f98d 751dfb6e-2cc2-4ade-87b2-5284144d1ff7 2e0bdac1-2957-4940-b435-6e2158757246 9f3b2498-9e25-4f45-9474-9bdd173f5505 b1dd39e0-3517-4fc0-99da-16191b116c85 09d06897-f7dc-428c-b61e-ea7da6c7ba96 a51731ac-6336-47c6-9b3a-8a8566a98124 35e092a3-5402-4f49-93df-d743382b15d0 00f0c63c-7dea-4453-823b-0f402aed6b87 465254eb-6504-4339-b02d-899432484641 96aeab6a-918f-4205-8269-90b9f70ce528 b0a3733c-a76a-4b68-86f2-49c2587c609d 42a05937-fff0-4a09-9d00-5402554948a4 888a1bf6-1228-4eb8-9c60-3f3142f987d0 bde3f1c0-9209-4da1-ad9b-74ea5d078f09 43fedf12-0fd4-4849-9197-bdaa96665859 e0e4755f-3904-46b9-b118-857014e9338b 5e4db843-342b-4bc1-a509-4bf02b04317f 46b0fc19-4cc6-429b-9c56-4e960cc06111 6336740d-895b-4206-b864-8ec3f50856dc 044b38b4-6441-4cdd-a6ae-4a5c41167521 fe8cf582-6cb3-48d7-b76f-7a5c86d8f46a 4deb5909-a6d5-4c01-a0fb-49d4ae2ed70d dc1a2cba-1744-4f6d-82ee-d84929c6bad0 fc664526-c92e-40fc-ae4a-d61e929d76e9 bbfb1daa-fef7-412e-b17e-08dc9426dd0b 6bb14d04-653b-400d-98c7-11ce0ca6a6ec ed979831-b90b-4109-a7d3-b425e6ef1a43 4940f548-c141-478f-9528-a3c0dc0cfb5a b8183798-aaa9-4c6e-ad38-d5eb50fb8cf2 a29a051b-4507-4417-9ae4-a80f297cc0d1 8ce63c25-73e0-4847-ae4e-29d7228607b3 0a90b1f6-45f6-4d22-83d9-37afd4ca1515 2357f217-0cf8-4d24-837e-2f8e24396bd0 58bb209a-1cf5-44f7-890b-c882fbb66c06 6e70bbca-98f1-4bc5-b483-5aa4e1fc83fc 8ec6dff2-9cc9-4bdb-bdc4-abfb7a2e3dd2 45ad596e-6577-44e3-878f-a2cb34d5d33c de54f6cf-4cbf-41c8-a9b1-83af3d44e230 4615300d-87de-43f1-a07d-46b27ea3148a a80e7ced-e3a9-4dac-b3ab-39532f81daa4 f4e521b3-a4bd-4387-ae43-562dd7b58428 df9e0dcd-10de-4913-b64a-740aa57010a0 59385951-582a-4370-b46c-d004091ef6d8 bb1ed9bf-2904-4fa6-9630-a37419d8b2f6 457fb449-9cf4-48cf-91dd-d8d29d480c18 47e0f884-4e61-4df2-8104-8b2c9def4525 a908fac0-cbc8-49b1-8d1c-91f70ff7008a 8d944f8a-a5ca-4500-9d22-e46040644efc 2d299d7f-b7db-49ef-9976-58b43143a53f 214d9672-360e-4094-9405-da9941468110 9bec8916-62fd-414e-83e9-eaa23ee022c7 58f80b34-2fb1-4380-a314-6c4ed59812b8 d682ea1e-30cf-41e2-860c-592dfa55f571 bfa91b33-88cc-4635-b45d-776bc7acded4 620933f1-e262-4a3c-8796-540a4bf131ca 0d0795c7-9f5a-45d3-ac86-b2c377f80066 04bd14ba-65ad-4e38-aba5-a5ff948ebd5e aa42ec52-0576-4096-9237-3949edaeae62 c48f25dc-3348-4576-ba66-08380848d663 c0809c7a-33de-4105-bbc6-81d2ebe604a2 83a14bdb-d1d4-4e51-836d-292d7e42d09f 626be43e-7e8a-45c0-8e58-1731865718f8 78543a01-7a4e-4221-a27f-a0c1dd34de96 c3e77b44-0547-4029-a257-47b4249b5dae 2388dab5-f8ef-4a05-9228-c2cbd1637181 93544c3a-e27e-4da0-bc8d-4e9a3a6b2595 7fbe77be-781c-44e8-a42c-9d2a54ef88de 50183aec-0858-49f3-b68b-dd93553f7824 fa351f6e-d22c-4129-a4b8-77d27a3fcb3a 70480cfd-e8f9-48f7-84b8-4fe93736fb58 aa0c3335-c40e-42c4-8bbe-2ab4b48b4b59 1ba430cb-94d8-4da6-ad3b-1bebafec0e36 61a6f23c-51bc-4043-bfbc-d0a2793b060c 022a7096-7dd0-4bfd-b9ac-e5a131349931 1b5b45f2-9790-4458-9562-1fa788d1487e 026f6a7c-8318-41dc-963a-6210ccd4c9d2 8f60f593-e532-48a4-923e-bc125372c119 83d8c384-e2c1-4518-94d9-0f26c02ed3a7 5a2c428b-e05e-4392-b58d-17672e03fac8 3d492eec-5941-4c69-a639-391562ec534b 4b5ff192-5426-4d09-86cb-c7116359be17 193b1eea-4313-49be-aabf-e537a20df347 2e77c594-780c-4ebb-84e5-c46fe28f92f2 7c1361e7-068f-4359-aaf9-b203f1db0c28 e5b67db1-3655-48af-9772-24fd6de70e78 96ce05b6-8aab-43dc-8aa6-0d0f06397224 d2db1bb3-faa0-4801-80de-5b526a7e572a d6a9f18a-8014-40c6-ac4e-54a9c2044bbc 2a3bc3d5-d6d1-4be4-9c1d-bd4f1f6a0c91 02d163a5-fb18-4a99-ae94-3ae3fd471ffb 8e2b0f85-b414-4383-beb3-56eab31bf19d 1a659b86-ee91-48b5-9657-bcf241f9f045 8409b01a-0cc4-4cf3-a102-686255841faa 397a8920-1573-43e4-b5bd-f93f5ee10476 938fc449-ee6c-45d5-9139-17fae9534712 facb9974-a97a-4876-abae-c4e3947c76d2 a9a254ee-62ca-4ba2-92d4-122516301cac b199e202-617b-400c-a9c0-ddbaf7e06d24 ab5f7128-5bed-4bdc-8bde-ee0abadb14fb b2bc0596-cbc3-4377-a893-4c49044624ed 2cc21236-1eec-416e-a8b0-24dabeb39a10 5923a430-17c3-4e42-8827-ff388fa81d0c d3f3087f-1f12-4767-a5db-780faed9227f e8b2ae6e-97e4-498d-92c5-a2a654e2d179 7c9fb729-ab07-40c4-a0df-6e630536e14d ae4c9090-d5a8-42d2-b66e-6a62e98498f8 328f0536-1471-4d53-ba44-98a5784ba0b0 475258fc-2717-4b3a-8235-ccafbba5bf1b f3ad6b9d-1ff8-4938-9ac1-15a2f017c3da e266ca56-65af-44a6-9cd5-2a6ef52c1e29 eb7c8da4-ed4c-4764-8eba-d97804635f92 3b69d87a-758c-49e5-a772-b0375c7fd7d1 4dc7dcda-13cd-4d43-af55-ccb433c7e99f 698d18d4-c114-4eba-9815-8259e716a609 6dd9c1d9-32ca-4299-b74f-acaca355cc49 5f8c78e1-ceb5-4ab3-8d9c-d9abb1f7c624 02044ff7-8947-402e-a49a-7359d1e3e48b 840609e8-2eb8-4fcc-a850-a0bc4d066124 b7d8274c-70cd-45c0-b5f6-7e1d48bc4562 44c8bf13-5c66-473f-82e3-8bd5ba049215 c1183194-d7ba-4d2a-9907-522ab89ea27e 5f37c9fd-fbb8-4b97-ae1f-accbfc30256a 22d8ad31-c3bc-4bd3-b150-66ca937b47cd edecf5f1-1a32-4eb2-a92c-6ea0a2873373 99c050d1-9a5e-4149-9a81-a3d9071039db 98fb1d11-a208-46f5-860f-be5a6933c024 9f01b04d-10bd-41d0-940a-29d33b330911 71607474-e427-4d41-b898-0ae13db2c7cd 624da7db-a99e-49d3-95fb-ad4ad452c03a b6539918-9de7-445a-87ce-b93914b88477 4a1d28cb-350f-4f2d-8652-6d86e4559497 f5363de2-afb3-4033-a25b-de29fb98d78a 9b68ab95-e92d-4fb4-b35a-049306b91217 6f89ed2c-87f2-4b23-acf8-bda12d63dca9 900380c5-5099-4786-ab2b-3b5c92b21419 99afc3e9-641c-4d99-9a40-62ddfcbd1fc7 903410ec-a096-4d8e-84af-bb10cef6ea01 4d1b4e77-e3de-4a2c-9915-f17a4aabec0c 3c5e076e-73ea-42fc-a1eb-0e40af57098e 4a3e90dc-2888-4cf6-b139-0bb6a382bb12 e58769df-17a6-4cb0-b304-1305fde427bc 33c4e3aa-4f32-4bf5-9b72-717c3c9dc937 e05c14f9-404b-4423-bac8-c25ec7950e9f a60d73b4-ee35-435c-955d-6e12e0d45a3f 0d334da6-af81-43d1-8dc9-3bee48b73cae f67e4f37-e3ae-4ea8-850b-613d078e3a48 239aa6cc-2aff-49ba-bb3b-14b28c731eb8 7a9ea058-5596-4901-b394-52e280e57d30 3ca313fa-56fb-44ee-9ecb-ea719328a631 0378e86c-b7d0-46e3-a117-a20820a2abb4 012f65bd-e2b1-4448-95c8-739ecad23caa 78f59bf5-4510-48dc-998b-234dffa37e19 3a2e76d5-e6da-457a-92b7-6d1b82364cf5 18f47c08-9a99-44be-8471-c3333cab2f6a 92013bb3-d996-4235-bfa8-fdf0b97a916b 327c39ac-3607-4339-95a7-b0df46fcf886 0d945b65-f7d1-44ca-bce7-9b8cce808093 3b8537da-162f-4fda-b5fb-3f7ef84ea94d 3291c2d4-1bd3-4925-80f2-1c3ddc546991 95af1d11-726e-4150-a268-d49cd0ee47a0 cdfa3dc9-7678-4d1c-af42-ec3bd5c27379 606d0df2-3db9-4b3f-b297-db47cc612a37 dfdad060-7389-4fa4-aa9f-59bca235086e 55d8adf4-7056-461f-9f48-c01b765ebcce 35747993-4a6f-4102-8058-b68fb6222066 ebc6e4f0-d302-4495-89be-80c6ec8e8ca3 eab6afa9-8001-470d-9cf7-0055e9b1a1ff 473b62d0-885e-4a24-9ea0-544ae60644a4 9129a333-67b8-4d59-ab05-d8b785f07ae4 81718f8d-45bd-432a-b7a3-0fe47cb3db32 4cefb9cc-c72b-47c5-a71a-18bc6fbcbbb1 da24599d-06bf-409a-a773-71dc486abc7c dfc71a1d-2305-44bb-a539-7ae221362ce7 718d3aed-0da5-4deb-b1f4-9cc9b25fc8a8 bd800b5d-3626-4d8e-a7f6-9b5c18f20cf2 adffd1cf-9760-4507-a428-6b4adfc2f148 9afe465b-feca-4be6-9a21-19d31693f891 b91de1b6-5107-4e62-9cf8-c1aeb59ba338 7e790eca-f036-47dc-b88e-ef643ac8e3f8 36cd290d-7012-4ca0-b5bf-343436984ce4 51b8a5e2-10ef-4d4b-a380-29d31c40a7f8 08e8273a-422c-4b3a-bd13-035fc78310d6 4018afac-f711-4753-96cb-b73efddf0584 9d3f8fc9-d985-4a66-bff6-ecfcce70e95f 7ab85115-0c70-4ddd-8d55-9ff5b89ce03c c51047af-0a42-4ab8-b23f-59e01eb9aa90 2e21d4c7-9c3c-4717-a038-260e57cbf21a 425c2498-769b-45f6-b7a1-b1bf4ee22d2c 05e9e933-92f8-4d08-8fb4-0fd6659b8e62 067fe16d-8ba7-4d8b-8e38-e02ee55d8378 1be9e1c2-1c11-4602-b59c-8b658257bcf4 34affa08-a5fc-4560-ac02-faeaffdb6486 343d34b7-d34a-461e-995e-4526e6608daf 86d36c0f-838e-4b12-b9e7-891d18e16579 112cfb95-39b6-44c3-89a1-71a2a031fe43 31be2376-3aeb-4964-a6aa-24be3c918375 51e577fc-ef61-40c2-bb49-6c7a685bf4f7 ef9c6bbd-db5b-46e6-97da-5f475e40f500 54eff752-fb76-44a7-8d10-2dfcf5c9cb1f 7ad5cde1-52e9-4cf9-aae1-c53dd20034d1 4014035c-ae3f-4e46-acdb-8a1813d7e6fc 5e83b617-e393-4f88-9664-f4e8c1b3023f 2ece22f7-a720-4b42-a355-01a81c4f2ac5 d6fcc581-e159-44d3-91bf-0bab9145845b a8168dfe-2d82-4f1c-b4c0-129f9dd85897 085535c4-a460-4105-904b-daea6ba6863b 18a54c0f-21ff-40a0-90c9-019a59482c60 226c8ea3-b4cc-4b35-bc3f-bd73f6f02784 ce5a80ec-b2dc-4912-ba6a-e76c68adbace 19e3de37-6e11-43eb-b024-222c2f18f239 344d835e-837a-456f-884c-e946253dcf39 f2270a32-9373-4dd8-ac62-33fb182572fe 5f3170e4-b95e-4b99-80bd-c72662c815e6 8fda6885-dd19-46d5-b663-0f7d84dce9a7 501d2ebe-a72d-45f0-8de1-af489fe964d9 de7cdeed-54b0-4b11-958a-08abb6731cc5 4f5de56e-5d3e-40f2-9b6a-7e4f8a6fe14b bbb6245e-efd0-4ab5-ba71-06b4ceedf6f0 c0817a2f-e831-431c-befd-064d25406084 04e09299-d6db-4edb-abe9-a1dd24cb5295 dfe70104-4265-410b-9718-edad779b423e 4697e3dc-202c-4293-a7c3-5ac7263f73a0 1d702ba9-5b20-4a02-9c9e-122fa0469afa c5f78917-6694-4032-a14b-291991f45f41 f8f7f222-e2d8-43cf-ab24-4f40d90616eb 9a08f541-7808-40d6-8e90-bc3e4f6b8f1e 1f65b0bc-8838-45b2-b3a2-85d668380e01 146fe147-4ff2-4e0e-91dc-34f59c089d61 3c85a60e-79cc-4b85-be37-d91e8b73c89f e9bd6d5d-d5aa-4276-829a-521d5bc5877e 31c728d0-5077-4da0-ba97-92525f589abe 05fef82e-2a67-4b88-9848-3a4796d5c424 659ac6f5-1aa7-48e2-8dc9-ffc9f1942e28 fc9a9ad6-f92b-486e-8859-4411aeb79e78 4b5beea1-9e29-4dc3-bdf8-36a234d9a1fa 33baca07-98df-4732-a283-6fba7dd502c1 c932030d-cefa-4199-86e2-0ffa49ff1eac 362821ae-02e7-46ea-9a24-bd5a595899d8 dd7cf512-d356-4481-bd2c-3f159273741f 91eed596-d4b9-4c6f-951b-a65faa5059a2 38cd150d-250a-4546-af93-7cba83728a1c 0cd4850e-965b-4417-a3a6-c42488997dcf 39fa5546-3e9a-42b1-9d96-db4401377289 b5c2a14a-ec40-4aa1-93c1-ea456a0bcd8d d9f3d3d1-dd0f-419c-8735-ebe076d9ff4b 54053024-ee19-40a2-95d7-da956740a77b f6ba3ef7-0c1b-4c7d-ac7a-6168e72d6782 29ffb750-114f-4e2c-b056-644479b7b493 21eb457b-f2fd-4e95-884c-bcb58d6b2025 29dfa095-fe87-4afe-9121-fa9aa40e671e 2bb554f1-ca17-499c-96a3-60762f823a90 006079fe-8c1e-43ca-802a-04861cf741a2 01fd6756-13ac-4d92-86aa-cde09df47dd7 fcfcb86d-ab92-4b74-b707-881f2d530442 f2dbc468-b312-47e7-a4c4-793b088bafd3 fabc836f-3058-4f1c-8ebf-b2060afd5411 f3da027f-1e89-413c-bbcd-2e30e462b96c 28607ea4-8755-462d-a603-ed9d5c2abfcd c805787e-f924-4168-a6f6-d8a7400d435d 9a07fcb6-74da-4427-bb06-404d13be1fb2 87216eeb-1ba9-48b5-8f8b-b1552ab958a1 2f1dfaa7-dfda-43b1-abff-b90a8c28dd5c adc6fdf5-1757-43d1-b056-b0e9c35b2104 5e143c1d-f815-4d00-800a-4e5767566783 dd9c67ae-e288-47f1-b0c2-97a766ede56e aa30ca64-f29f-47eb-ae4b-fbcac9c1754c c5f5e45a-ae03-442d-92ca-295a42cadb06 5ca133b3-5f24-4650-bf64-0bf222be1968 de5ab079-6e84-4cc0-896f-751c6c5d018a a2f6556c-0aac-4145-9c6b-e9d0fb3f50ac 8c945852-9cf8-4764-8a1d-db17f5e46ee6 4c53d087-5a05-4777-b925-b6a77a3af691 f47176b8-061c-49b9-8699-a68fbc6a59ec a0df25e6-e7b0-477f-ae99-149c06c57e74 734c4bfa-eef0-411d-abee-80dcdd75eb23 1efad64a-0539-4388-a0b9-8d3958adc167 00fb1abd-5030-4c4c-81d1-e57cdfdbb0fe f8fcc0ec-2fea-4db0-8f74-194b53314100 d81f6b28-d368-409c-86e3-4d1f21951d93 44f00f0d-beb1-46c5-bb57-b0520ae1e0bf 785332c9-ffe5-45a1-81e7-5a11d245be0e 54923d9f-2386-4912-b59c-bce8d50814ce a02f8a90-2f09-4d99-9246-6ed7cf07c7a2 06fc94a7-e93b-42c4-9609-c8b7ad517a50 8ba44460-6e51-47f3-85fb-a04e13d1922e 1c57c46a-9699-497e-9891-ca3a70e314ec 04f0dd77-1791-4554-acda-fe8fd8389eff 9a58eeae-33c8-4b07-b2ea-738a376a44d9 9e6175ad-fe22-4b63-827a-2d9dacf9bcbf 902578aa-3347-4462-86f6-a50c531b466c 431ce319-f45b-483d-a50c-2e301a6e60a4 787f027f-02c1-4daa-b3cc-5ce50d158545 f904af49-d8a4-47af-9c00-f710509e1ed1 c97a5730-bb96-4d3f-911a-f0d93c8bdd0f 9ec3ba30-d445-46ab-aa03-e9ee6d7be4d7 9fbe517e-976d-4f1f-918f-ed88c135d7a9 48b54fdc-a903-4a16-89db-cfc8c6842311 0f3847e4-f147-4dad-a89d-ac47d856cf57 5140e597-3914-4e76-b876-185eb5fe1e25 995b24fd-856c-47f5-8685-e2360997d332 8ae119ba-250e-4ec7-ad67-a8884f8188b4 5ac62497-9974-4353-9ceb-0e0b80decc5c 3bf11e50-ddb6-4a52-826f-895f39f1aeab 02a65982-cc41-4f45-b54f-a1faa81d2eae 47fdb0af-5259-4a79-b9c6-5d3be89d3823 7f91e609-b1b8-418b-ad54-9c03f1eb82e3 26008b4f-ce53-480c-853d-f9ef1732ddfd 311d56af-18fc-4441-aef6-9c590ed3c0b6 5435f92a-a685-420b-a8da-41dc5c3c0028 f41047bb-36c7-4196-98ac-d51a82030987 59d4e3dd-79b1-4ed5-9c64-c841dad940fc 2764e9c3-7f57-47f4-bc8c-ef46d864a258 68d030ce-2574-42de-88ac-ab22f43b1983 f53fced5-23bc-474e-8ffb-e8680ce98f9a 06e98534-e94e-4e72-921d-f768dca81050 1bdf2ee3-eaf6-4a55-90bf-ae796ede5088 f26f6f95-d9e7-403e-b311-a81886eb426a 8d53992c-45ee-4e06-a5e6-6a8efe31b4ae 9774b380-48d4-476b-b59d-621646d9c178 561a490d-f85c-43e4-96e9-8899acc905c1 1dbafc2d-752b-4b70-b13a-845cbec2b097 61e34482-244f-45fa-a911-008095726470 b17b181e-a2c4-4428-8143-22c1651693e1 1a3f648d-97b6-4450-b692-2832f02a8581 ae6f4336-28ed-4f65-8d1c-6cf5861a4c94 cd7afd85-5180-413c-a676-dfa5e4f7ce24 3e2d3dde-6b73-464a-a1d8-e2a44ff13a2c be745146-f213-4e23-bb26-7cd873605cbf 134652c6-d7a0-41f8-a042-5e006b48c9a7 ea809d39-cb1b-4051-99d7-cac865680d02 83680ffc-54f1-4347-a7b2-548760c01cc1 b47d3def-d7a2-4523-bca1-bc5edf5740e3 241cd364-e7a2-41b2-95a9-ecb149606f21 c06c0ebb-c465-4dcd-871d-3ff439b2728e 1d7f29d6-cac9-4485-8c4d-51e87e7250e1 682e0933-dbba-440f-b5c9-89b07fe1f3a4 292e2f4c-012d-4ee8-b5c1-c293819a6912 f6e69418-8861-4c47-a3b2-194524e416f0 845f1d0e-af80-435d-9ef7-bc65e9b51120 9a107115-7a25-486c-a04a-3610499e3b55 2704f76c-e87d-4d52-b123-c7a7f76ce646 bbda130e-1c51-4a8a-8069-75cb1ad14f7c d4a29d5a-7e18-4842-9019-9d35319ac2ba 408721d6-9950-4f4b-94c2-63b8eb6f6d4b 71095bcc-de83-4a30-81c7-7dc2ecb89320 66917337-b6f9-4137-844e-675bcc362418 0f6c0b9b-7499-4233-9b90-3892c01efe4a efba4674-9b6a-4411-a1ba-b1bd6cac2aa9 b6359663-5ea9-4e52-a240-47562027eb0d 9cc49203-f893-4dc1-bcfc-bbcf5ffbde12 d7280919-9c64-495b-be30-82db79624c17 da0924af-9f40-438b-b452-eeb23851bc39 4b754707-d79b-4027-93e3-d5858308c246 f03949d4-027d-426b-9fc9-4dbb2d536b9c 5e063e66-66f4-45dd-a6c3-854cff05e6df 2745ad29-edcb-4eea-8442-3cfd30c0a06a 91a46eea-8163-4e2e-8e8a-490b13bb067e 7f450750-50f0-47a6-943e-a3b9e393e73b b7ca4d61-5329-4797-add2-d03cacb5ae52 57f5d3a0-5b0b-426f-b178-f63387657614 ba3ea661-4505-4854-b3e6-703e94297c9e 1f9088f6-9f6f-4ee4-8065-0a87ad9a935a 224d6dfb-f0a1-4c1a-8519-55ec0e6812b4 5f2b593a-844f-4b67-92d3-8361f74b68d2 e23aebd0-7473-4231-bf8a-0260cd2170a9 c3709c41-80a2-4c49-92a7-176b6fda66de 2c839d9d-17b6-4225-98a6-cbe312c96659 3a5ef378-f170-4189-aac8-f7cae65013cb 7f20ead8-db97-49bb-984b-afc3f6d11b19 f0248598-14ce-426b-8f64-2d3535091e60 d8737db0-3ef2-4195-926e-be40ae1e1a2b 5089a196-9fff-4da8-b4f1-5946674d3da4 b8316e5d-35b0-46fc-9586-be972274c78d ec9ba78e-bc6b-4842-b59e-bdbd30135489 a86702f3-67f4-4a93-bd46-bb35ac95f0bd d6f43c33-3ca3-4bbb-a848-d37afc23d3d8 16d812fc-e4b6-4b67-a72e-a91d4ea3d5d8 f0e93555-ae52-4083-9f8d-a215c3df0731 c59eb195-53e2-4ca3-966f-b95efc0c415b 33ded3eb-813d-4f91-af57-3b6bfdfabe67 5bef44ed-6724-4b02-9b62-4375f4b3bf6a baa5737e-58c8-46c4-895c-ad297b7f3d59 6811e1ce-4e87-45bf-a785-bc66828233d2 4c40a56d-7048-4fa9-93fb-13a45b68d05d ff40c4c0-fbc9-4fa9-becf-e0237ee2de8b 41fb702e-d778-4432-8c28-8af5a201cb8d 18404f40-2412-4ca5-8e66-be3022d4c2e7 4782bc3e-358f-4bec-bbee-c773f47962e9 6f904fef-69ac-4ba6-ac1e-3286521cea8c 62f56e05-d906-4ca0-acb3-d8bd53434252 d83102c7-5e76-47c1-9314-87fd50e47501 f06bbdd2-456c-41cd-af68-6f1d39b855bb 1528ef63-4492-41c5-96ec-63b420725d7d 7c76ecd3-3434-4b4f-a78e-3c582bbaca54 60243faf-f415-4ae8-842f-b52cd0958bfc 31412ae3-18c0-4456-a326-f0339e0a639e 5848164e-3ce7-4884-99b1-84fe450eee7e c95dbdc6-a4d2-4140-9af1-427975b13de4 59f8caa6-14d7-4606-8a19-19883b74dbca 0f43c238-9539-49a2-9bf5-da4c379aa333 f0e1d445-c4bf-45fc-8a49-ad3de6a7bae1 8d547834-998c-44d6-838b-3a2db83efb20 43b8e161-8f0a-440b-873d-b1e2454bdcae 04873e2f-b8f8-4580-ae1d-3563715d220b 5874eca7-80ab-47ca-afac-4c493f369f25 a63dea7e-80df-4ebd-b852-6cd3d63662f8 1e4c0f8b-701e-4417-8997-2dc2d05c6f88 f87e8107-6a73-44ca-b67c-352a6337bf27 df7d963d-d395-4833-a0f1-95586c530ca2 7d05b6ae-7705-461f-9df7-ddb8e1abedbf 66a6102b-289e-4919-b742-269d892d09a8 51a161af-5d27-45bd-b1a6-ba35b9b89c2d f95e6210-5427-4995-8f75-1d0b0fcbf0a4 946bf62b-0901-4ccc-b7dc-f6f95d31799e 78427a98-d07b-4412-979c-eb62f8d3caad 58564c43-2f94-46e9-bd70-77678d56afcf e1831f0d-480f-4ee1-b078-a8b519aa9f6a 6a77423a-4e52-4b3f-82d9-41366d804bc0 d92570d4-4092-49b6-9b4a-b546bbd06e96 17817111-4bb2-4c96-8b26-b822053c9c32 477c28e4-5965-4a9f-949e-4ea055112891 15da5a43-0ba3-47a7-8139-0103630158e9 41bc049d-30cf-45ac-9b26-0becacad2c0e 28192679-544a-455d-807b-8c5828e80d51 9ff7bd9f-11c1-4d7d-b257-0a062f69e37f 726775ca-adfe-4f9e-beca-2eb3015873d7 9ede20cb-b3e8-4dd7-8fb4-65d7ff5ecff6 5b82fe51-0f52-4e65-88da-315d73c0e7d9 e3dae893-faac-4577-8511-f414d61737a4 0c1cf2d2-e538-4b3f-9e59-249893c2aa91 4009841b-7b1e-46e9-97b2-f4b5ad7b88e1 a4b4f1dd-ff23-4461-b377-3971974711e3 d96ed4ac-1363-4bc4-8baf-1b255bbb59a8 2255332a-ed86-4546-904a-82ab6ad42427 2a9fd1d8-0910-4c92-aa35-11e900067a73 aa5178d2-1dc5-4578-a304-ba67170553cb 7d8fa301-c7bc-483d-8192-0309fa12a1f2 5fc824fe-6b59-4502-b74e-b6c0e428d9d5 4c26a8ff-a2a1-4f66-aed7-567de1240f11 3554cb4c-cb2f-4e0a-a999-b06a86211e35 9e0506d7-56e4-40bc-8356-78c27e1ef8e8 c807bde5-a55a-47ae-924f-6609d2f76d6c 7ab32212-f683-49ef-a9ae-73b4037eb446 982045c5-a114-4f48-b8cb-fcf96426a884 b9e430fb-27af-424e-ad6f-ae5fd8e515f0 83d68fdd-224c-4442-92ed-f5fc96c17072 30941c8c-d5f3-4f32-99e2-6959f542d081 75ea4659-6b8c-4af5-a2d2-3246025cafa0 fd14151a-a361-4203-83bf-61dbc43fc979 2684b9eb-9d2c-45e5-a6e6-3e3819ba7427 c1b1a7e8-421c-4c6f-b75a-ab10a10613ff b64e385a-464a-46b6-aaa9-483e8cda00cd 40f79dc9-40a0-4ff2-bcc6-c7268ce9f5e8 4a8bccd0-4428-43dd-b20b-57a8d6a28cad 0e986fbf-218e-47e0-bda3-3ee9cc51a116 2f116bea-63c8-492f-97d4-bbaa1ba4252a a4590cd8-7ff6-469e-92a4-738dc8cdf633 da71ecee-7b54-4e75-a4a0-2b69329efb5f da9a0f42-e403-4e27-b563-16c929c26d42 f6215c00-f7b0-45aa-bd9f-d3b6322bf568 008b9bfa-d465-4127-abe6-8d11b75305b5 f5267c1f-3bd9-407c-a492-8654a81ea186 b29d6da4-0d5e-4607-a5fd-02f9288ec3cc 99ae7a14-6037-40d5-b43d-0e90307f4561 1903a6b9-6a0d-427c-83e2-5d33d8ce9c2a 4506adaa-9ae0-4428-8372-fdaac2f61a56 d0dd0bac-bf56-4315-95ec-b762c83ae9a3 798b43eb-2902-4586-99fe-365624693d0c ff2e7d4b-761b-492c-b652-7ccc8ea4be3b ce9c0ff0-99f3-4e02-8d82-61812b462120 471cf2c8-0332-487c-826b-d4d477d2af02 082c357f-32da-4334-b3ae-d01bc326a97a 431eed45-bb36-448f-90e4-560325f89e43 828e844d-88a1-41fb-a3b4-19ae1afbb018 0dda1108-e875-40ea-a67a-3247509d1b95 4815c881-9605-4b91-b400-433421bb26fc 5c10943b-15e3-47f5-85c0-eeb33f7ae867 6da355ff-13f5-44b3-a6f4-86759f378f66 a971aba7-032d-4626-8d17-1a8a39411b57 42ba94ad-0d32-404e-bf7b-e373519d5294 352cf6ac-d8b3-49f0-89aa-df099389130b 8296c340-93c6-497f-b854-9935acdadf88 93fa1cb4-429e-48dd-836e-5de89f852932 02c2d08c-a5af-4943-87c7-04d3b2b7e7d0 67214882-36d4-4335-a299-ce7c894cc952 72514e3a-1ad0-4bc1-bfc6-6613b3776e71 42edb2a3-fc4a-4128-abb9-34a75763f3e4 f09c5f61-deaf-4a0e-8b33-cb2caa2a2b0a 156c2e0e-42b8-4f8c-9f84-920b8d557ed9 b3cc24cf-ea25-480c-bbfb-0e96df0ccb69 2eee4025-078c-4e2e-b28d-51f7ebbffa6c 47f8d316-2044-4743-b72a-5652686f46fd e136a131-2dc7-46bb-93d9-127bd17dce1c 9521278d-56b9-4230-a00b-650e9ac7ce7f adc40782-0019-477a-bf64-4543efdfe1e7 4095871d-e5f6-4c3b-80f3-1f888772f836 63510bc4-ff90-49dd-ad14-8a02f0948bed 1fdb6ff7-2767-416a-9b9f-9df63d568f78 cf9b91e6-7e16-454c-a5bf-e3442a3c0c61 c70b894b-bdbb-4b4d-85e2-25d16daecddd 32c365ab-5bcd-4f4c-8d30-6622386d825d 43e745c9-0d0e-4fbc-8099-861bde4f085b 417b8a25-56dd-4e8f-b285-e4996a834ddc 68fceddd-2206-481d-a61c-dd8bec62b3a2 70b2f4de-efed-4c3d-99aa-9b4f5b93c57d 475d2fb5-c86b-442a-9825-2fdd1461fdc5 9b2c5362-a4fc-4dd5-bc72-732b720d19eb 42b4e7ed-6205-4195-8302-303dfd8f0686 bfa4ffb2-53ce-4aa7-a09e-2577fcb84655 9c0b20a9-16b3-4dc4-85cf-6c4237325db3 40faa09c-e5d2-4dd0-bdcd-bba0528a7b28 f5a73ce8-8140-4af3-98be-fec1cfd8f76c f53e8b04-5253-4217-a954-8beb3f4a8186 0f11797b-ff70-4c1a-b5da-7bf843531aa2 9657a569-2bd4-41a8-94a6-4895411d6f4e 76dd1af5-f35b-4e0b-83b4-bd5ddc2f2c0e 0acc2f61-dc42-4134-8126-bb705bec66aa b8076f7c-7e5b-49f2-9bc7-60568dc8683d 046cc3ec-18b1-4629-835d-759e270bee36 0363d8a2-cd88-41e7-a180-0846668bff2c d3a33912-6a0e-4879-9ed7-3faf0dcf2593 e8c3c1cc-1100-4b85-bb24-5226202bc53f c84d045d-3f37-445e-b42d-03efa231e6bf 1777f339-bf9b-4f0c-acf0-b9b350977090 7d2b08d0-5359-4d08-9a63-453993cd76b7 48acd482-d5e4-40e6-beec-e0317eee787c 0eb9264c-1668-4987-ac17-45e326a4991d ce242841-a840-46f9-895e-3252194c506d 02663d21-99c9-4889-b2d3-5943880a9051 41042398-22c7-4c2f-abf8-223cf836c31e 1adf5f6f-0a6e-4165-baef-d8d36704efba 87abb033-5a03-46e3-9422-73bbcf4e180d 33c126dd-ed35-4fce-8367-c03701658769 81802854-f929-4323-90b7-de928982e1c7 d7eff5cc-ba1b-47ab-8951-da03e8b63936 7e2e65ec-c6ae-4eb3-9e44-0c9d1a78e9d9 afce59c6-ec74-4f1f-a0b1-e42abc8cdf31 6c6a93fd-bfd8-426b-9e5b-da021276404e 529210cf-c540-4a8a-8089-40b16707103a dd49d12f-a02d-4ae8-ad21-5f07863e99a4 8d2c3f8e-4e42-4404-93de-fcfbb4bc9492 2b3cb381-69f0-4e8b-971f-098d1031fada 31d105f4-b0e1-438b-b999-558caa6e2555 8c21a4eb-3211-4345-82b4-3e62343c0cee 98e777bd-ea47-451a-8756-c86d19330d2c 29239482-d90b-4bbc-845c-623491854476 b451fcca-4336-4cb8-8d0a-d5141175e52d 15312af9-a099-4b34-80f4-cf6ef6051b81 358b7028-f807-4c5f-99f8-542760fb2c2d 35b637c0-6c2b-44ff-b6b6-9e28f10438d3 e506f905-0c10-48e3-a6ab-7f5cc58e4b5a bd847ed2-efcd-4109-b430-c153f665a7d1 27fa9f55-f4b9-4588-9302-027dfb0e9e9d 6fa2f0f6-2137-4d51-bc02-820d05ba5974 5cab4169-347b-4674-9933-f69ffeda9fd9 ab37204f-a2c2-4004-9254-d404ecb0b846 bf4f52a6-c33c-4693-ba33-ca9b52aaa6dd 984a6029-dc3e-428d-856a-0021697b12a3 363f9767-7307-495f-b238-0ff598ee956e af150ace-11ce-406c-ad77-6aeba37eb2ee 3ecfc734-6865-4b34-a50c-4ef78f834cec 69d26cab-23bf-46a2-846c-35b3c8f7c01a 0dc9186a-e879-4ab7-baed-81356e07c7af 8ffa6995-ccb1-4085-9881-80b578e77caa 56510a1a-a057-4e68-828f-3dc9ac7ad8e6 187be28f-ef2e-4a0f-879b-f6ff9be58b63 adba227d-a9c1-4c46-9f5c-b873fd1914b3 4e2ae6d5-49d8-4657-85cf-210ca46d3256 4fc1d612-ce99-4f8c-a6db-008acbc17d10 33c37ddf-031d-4629-884a-af0646776b98 870b3fbf-4286-468c-910f-79a95ff98f39 68bb99dc-a1b9-4ff1-b278-5ae3cea81365 f16ac1a7-b1b0-4485-a438-f38483bb206e 69d462aa-8e0c-4aae-a341-486077ab0ae4 72603bdb-1fd6-41a7-93ed-5f916186cb7c 68831127-3554-43b1-9f06-f9eeac034ca9 b02aba93-dcf4-45eb-981f-6fdacac381c0 b3f22178-a43f-41ef-8ead-c4fb8ef35209 cd9a95be-8555-4969-88be-726a2eccde42 5d61d587-9878-4501-9ee6-b549585c1c68 1a3e703a-abed-4107-a8b8-5d6196e98833 50fd0957-2922-44e6-bc40-52fb66d2ad2c faefa620-69b6-4815-8169-70bbafe80613 50cefc1e-8ba7-4280-8159-090ce0f7568e bf1a84ed-8aa8-471e-afaf-249efe9ba567 8ebdf2bf-ddb1-42f9-8390-852ae00d8506 cda561d2-fa46-4ee6-937c-d8b8ae6a6e38 6bf5470c-8512-4d0d-9c9b-92c112537be5 b6e5cc84-c405-4fe8-98bf-9b326e3b5536 eb1b62e8-4aaf-4e73-8dce-60d06830854f affe627f-c763-4b69-ba28-a640cb15e4dc 61f418b1-5776-441f-9982-7dc0c4d66596 33d782a5-06f5-4361-a180-fec5f67b40b9 3f0b28da-62d6-48a1-972d-1caf5e20d086 df269151-a325-49e8-bbdd-3cff6f1bc191 3275ec4a-b688-41b3-913a-64433e94d5ed e7681677-9f3f-4052-ac02-fb83fa41725c 54a4c0d0-4abd-48ce-80db-2217692bb37f a805e306-ec34-405b-aa77-c9287c6aaf82 4752b1ff-f558-41e9-9244-55fce12f6f70 a7e52eb5-f4b7-4b45-8388-a57376b16ef0 aceab13e-edde-4ad1-aa41-190e33405e48 9311be36-34de-49f5-84e4-4586a352ae2e 5d3276b1-8d3e-4a79-bea3-fa30ae683775 e80612fa-8d0a-4df4-8894-19b5d9649bba 7eddd9bc-fbc4-4892-98a8-7e85b744be2b 9876ce80-21a4-4234-9650-2ae184129c78 d62ee37f-6817-4872-9550-c4ed5196b87a 0f8a6bce-9071-40f4-952f-5e0535b41d9c 4bb36114-6210-46b6-819c-5229d16d79fe 41ead464-3547-41c2-961e-c80ba9bf9248 eb63e035-6dc7-4d87-9e23-10d3084a325f d7f92431-feae-4e6d-b8e9-f46d03f49254 64aee1fc-f305-4596-bbd5-3789430852bf fecacc8c-5e24-47f0-957c-3329aa32903c f9a7a85e-b6a6-4889-a6d9-feca966169cc 74a1e038-42c0-4d7c-83c5-c6d3557c9d79 bc24fe80-42b1-4082-a9d0-49df7ed5dfa6 82f288f0-b906-412b-aa4b-51e1a4bee8e9 d1308716-cb05-4952-9a8f-a34975ca2473 ef7de3ac-726f-4fe8-81d5-998fb4c0f2a6 b9a2e671-55e9-4c23-94b7-b967e8d97fd2 37ad418e-992c-470a-b27d-bdb24d1c5a75 b2c8d2a1-c063-49c9-9f69-741d189f91a0 cc9d5940-7e59-42a3-861b-0e195f42f4d0 9a3cfe7c-61a3-4d1f-b07d-57f26ea92ece e5585bd9-6f98-4c41-adad-c57c7f0b84e4 f8084aa4-00b4-4cfe-a284-f206bfdc468e 723facb7-da15-48b3-ba5b-112620db4be9 019d3940-9dc5-46d5-8cbb-8591b9b926cb 1f905e9a-6f85-44c3-b7d9-d4d03c4f25b6 ed1ab9ad-2e5f-4858-ac4c-67afcb17f7cd 1737d4b6-f5df-4103-8180-a49ab8839a58 b7238ba7-fd42-46f9-ab9a-31f3c935240e 0cf4d247-da46-4f07-998b-329ef4b269bd 94811c8f-2baf-464f-a097-fa2e2068822b 5843a798-bfdf-4809-9490-f47d1fcb90e0 0d23f1c7-aaf1-4285-a1d8-11db4b7cd214 b631cb31-689b-4e16-9f9f-4056dddbd8d8 744f01df-294d-4c16-a704-cb7ebd2f1767 ee8bd2bc-b0e7-4d4d-96b6-fad0330e5136 94178518-2d25-45bd-b48e-84ccfa351134 9b3c1ed8-41bf-41e9-b60a-5a7730fb5148 758e113a-0f45-484e-8944-e080bcc04984 ec38566a-131f-4c5d-98be-1b7cecef40aa 21dc3819-b65b-47b2-aa92-f7723e0482a4 468f81e3-2d4a-4bdf-a054-421b14f6a300 6e7f7822-2c66-475d-859e-4605452c62ff 38736288-edc5-4d48-8ae8-b973bb0ec13d 694d31f1-731c-4937-9e81-d2fb81ebe935 0ac6654f-277b-4bbb-b674-58e71905b79f 4818362c-d16c-4326-b0e5-931a55e994b6 9a9b6333-d638-443b-b71f-bf7f0fda0385 c3b4776e-10f0-4bab-8b13-fc8305613d47 69d0b1a3-5424-4d52-a89b-ade06c7c7946 e15cc264-aba4-4460-941c-ae6fbc8845e2 d5e3cd93-7ba7-4c86-a7cd-aee010aac45e f2708305-23de-4974-a24f-1d5854bbe71b 7c760f03-a97b-4892-aea4-c4ba221437e5 32a20764-669d-499c-b7c7-e32070f70ab9 4a822617-b1ee-4a66-9f0a-2399457b4ad4 085d0b9f-0e35-4feb-a3ac-686b22c92b8c 06eb1980-5916-4fab-8647-51ab9da44612 93437326-6ab7-4ef7-a98c-565beffd7fa3 7afe722c-398d-47a5-80d6-685d02960cfa 0ffc1219-0f55-42af-9dd1-dc7d52c48836 a5901796-5fd2-4e60-b498-27207e6e5ae9 d26d3be7-cd06-4310-8e8f-ca68ceb1505e 4a524c2a-45b4-4365-8893-cc5227e9c0dc 1cb1adeb-1906-4d9f-9861-f525ce4b5d6d 40ba04b6-da48-490f-934f-17ac5a4c8c19 cc7cb1d4-c880-4293-b3d6-44d05e87fc47 96a884fc-6c75-4442-adff-9fd3fe193663 09e146ae-1445-4240-9bdb-4d5aec34e6a6 0794b2ad-da0b-4350-8026-1934085c7033 f991e91d-0994-4a05-88af-568eb6e24a82 a46bb18e-af29-43da-a30a-a0d83d2837ff bfb81465-ea48-4642-8bc2-5ec946682f24 149893d4-4b3c-4e25-8713-f11262e03b93 ebad9b37-1029-40ff-b2bb-952a4d6cfddc 8d8eb501-c6d7-4bbd-91f3-f353f6f68b9d 446bcf20-d6e1-4602-bd2f-4ee93358c131 ef9dc031-f5df-4be3-b14f-12c05a5ef6c9 1797b572-4dc7-40c5-ac49-ce482920b257 cbd1cd30-62d6-49d6-8327-5c82a550d00c acff2e8b-380a-4fa9-a51b-bd479ed32f6b 8ca0d8b1-e1fc-41b9-ac5b-3400f52f9a53 ebaed603-bff5-4f3d-88c0-98c134a65396 378f45e0-b482-4f72-b842-8d9d59d560c8 3dc0d6b5-a5e2-441e-a915-1a3b6ddac547 6d38bcba-6a68-4982-98c7-f994b0598f9c bd47e63a-d8cf-4401-a07e-29357f6460d1 4580ade8-09aa-4d82-bd51-7a6bf954effe 076bdcf9-b556-4fee-bc94-88ad7aad6545 a7dc237d-b8da-42e3-8c33-bd22331eca04 a53cabdf-8a38-4f8d-93c2-bcd5054f6e98 f8ce01d4-9e1e-4013-b353-e4231df3c211 305adc68-8d09-4fa5-ac21-5411a1724994 df0af8c4-3f0a-4693-800e-a49ef98bfcd2 4a440df9-dc23-401c-adeb-dcbe71355fd3 d862527f-b516-4845-ab0f-ffd1ae5c6b35 0e8c84e9-f1c2-4715-8158-4e7423ee4ce6 2e1572eb-de0d-4314-89cd-1e0597584fff f69e8c42-0608-4260-8c36-16aeb4cfdd94 13a03c7c-1701-48ca-acf2-c33383d656b4 12fd34b3-bd63-4bc1-a771-fca55f7c363a b12d9cfd-7e58-4c1a-a447-0414e8c49167 f65eaeed-345b-455e-8782-e838418602f4 f2e687df-6b9f-451e-9e6f-5e06d3bf86f1 1985c1cc-7467-415e-88f9-6faca89db88e be2d3783-fdd8-49f2-87d8-fbc293bbdc77 cbcd0474-bd50-4c4c-a448-1c243eb412a6 92988b41-d8a4-43cc-95f7-2c258bb9f645 2eaa0810-0b20-4edb-ad82-e8de1bf2f971 f13d90a8-cf0d-430c-83a0-c2b65d9598da 473844f5-5a69-49e2-bf6c-b8ed5a7125c4 2485b9ac-610e-445f-81a3-57ade55cc6f7 b79255fe-551d-4ff0-aa53-29f858e44fdc f857e811-5996-4c8c-8e50-f8acea7c1d8b abfbdf98-695d-4333-a8f1-e8e92183b25e de7d887a-806f-40a0-bb5c-2a6fbda2820a f6aebe51-2c43-4fb2-bc17-0a2353535200 ad69ee40-e4f8-4289-bb3a-f2e8b3d2bae3 c84854de-c800-4f00-93f1-16764c7e5250 6a83b89d-2e4e-421b-a4c3-f5ea68933e92 a22f2e1a-baf9-4652-81a8-f781404fc5e8 473ac534-82a4-4aee-ae64-862feea20e9f 27f5fbc8-fb5a-40ef-866e-4d2178845fd3 6be0ff0c-5b5d-4b31-b7af-ec1262b3854d b5fcf4b5-a047-4d98-9900-311c822ef402 d72dc131-bc21-4815-9e33-8ff3bd93b6c5 e3fc114e-aabe-4e9f-b09a-65613c7fc8ee 4bc5600c-19ff-4bba-8ca7-4f5409f5f68f a4a67c3f-354f-49a8-8a54-a51d693e09d6 f39c89ad-8cea-454f-9335-3ec326f6f383 3d76799a-9d8f-44e6-bda0-b4bb5f0a20b2 331be43a-3ca9-40c5-b953-f9d5acaac459 ac1c49ff-356d-4786-b043-92e34ee9f79a 673430c4-c492-4026-9930-730ec3412315 8ba3224c-4e7f-45c6-b340-629233b97931 ab71eedb-92be-40ac-b81d-5cc409629aff 7a8d005c-18a0-4443-84e7-df352632f34d 1fdc632d-33a8-407d-9c3c-8cc4fb2e1525 c8715b02-59dd-4b0e-b74c-29dd1d16b328 e082b101-87f9-4432-b315-bf916d6fd35c 78e19eb7-2efb-4bba-af0a-7bd7fdcad623 c0657759-3766-4f04-b0f5-afe87095b878 43b86ec4-0623-439b-822f-ed7575f3f6b4 47523439-2a42-4fd7-95f7-4940dcbf6726 6d47fa97-913f-4ccf-88a3-b0103da2f0d8 52a7deae-1fa3-40a5-8955-c06ba1173c0b a912d679-4a10-4145-81d9-86b8aef13857 5d6009a0-62ef-4c84-8d81-6cdd2636f975 df7418bb-55ef-427f-96e3-0e83800a75e4 5501e50f-59ab-4178-8e69-535563a1893f 788cc285-ba09-40b5-ba9b-a1d5802264ee 70f16047-9fa8-4a8b-8f3b-45876e634d2a e40e9c8b-791d-444c-af23-24505f05c377 a4e4c0c8-1d4c-4a5e-b922-92a245a15506 06919613-fc60-4506-a93d-6e54fc81f208 ee1b1d64-7cfb-43d6-a3fd-f8dd4d3ef067 5d2cf2f2-a490-40c5-a0aa-a0f62652cf36 e47598ea-2af5-4e48-b0fa-9cfa4ffb7c4d 8bda8a9d-28e3-4f6b-9b1d-840e9e2a96c2 8032bd9f-b9ad-4cc3-a6a5-48a244b10c62 9eb0bada-0210-45aa-be19-ee40a69fb62a 092c1844-a61b-4997-899c-1549770973ac 098e3423-357d-4852-9305-cb1176fc42cf fec3bba7-9a84-4854-a6cc-a0614fe5025a 8db8390c-fe60-4185-96ce-2cf699c5a8b9 9109b45a-f467-4105-835c-402b5e9114d4 67eec1fe-6507-407f-9430-e825eb5b605f eb2e7a1b-0d1b-4c6d-bd1f-c18c68d2d514 c1012268-751f-4a95-968d-455e003cb502 cf9547d2-2e0a-4bb0-a4ce-554fd0753957 4a8fc970-33f4-4bb4-8d69-82a384c540ba 344d624b-c34d-4805-900f-a5198c820509 451986b4-38c9-4b50-b2a3-566635f7e40b 794046fd-7032-4be7-b3de-8db0436424cd 5de98e8e-b33a-46ca-bdf0-4f09e25314d0 b4319c6c-34d2-4b71-9dea-488ab1557b0b 84d08135-6440-471b-bda8-4d8d0b9e4dc7 4aebc28a-8f2f-492b-b752-7ed7ff7d8fff deb157a3-6d95-4760-b8b6-22e8b0164c0b 95a30544-8300-404b-9f70-d3c362897879 37c0a3df-58d8-407a-8ab3-da7c51e8a8cb 5dc59602-dd93-468b-95ab-cd3d12ec9eb3 2802c272-6b9b-4843-8cc5-304291319612 7f62aecb-9f7f-4087-beeb-95b77a62cb6a f7aa4965-a1fd-431c-9d39-d9871ecd58e4 405735e2-c169-4850-8b89-f40472b9e70e 2f7ad164-7ab6-43e1-a4b3-7ff0f928109a 5d9acf86-2962-4e24-8f84-d0ac1a5924d4 dee24f14-74fa-4365-b60d-efb9242e05bc 7b44719e-475f-4578-bbd5-424b90e2a5fa 3ba5aa8b-c31c-4566-afbe-7ba92a2a8608 fd854ca9-38f7-49d0-a5ef-49fadab94228 707478cc-546d-4742-94c8-be2205459837 855ad878-e661-4e0f-91b3-e9d95e17d888 c2fb49c9-adc3-4e2b-bcc7-865fa08deb62 5829c71e-d2bf-47a1-a47f-760cc2fd5d03 b28accc2-5139-4020-b827-9aae965aa0c1 32ab6352-a408-40c6-adb3-ed13607d368d 188a6d83-357e-481f-996a-5d31a7936efc 7c50cecf-ae96-44f4-ba82-5261d75b61d6 ecd202aa-c8d7-4ac8-a023-f1781909f436 e6448dc3-3e60-4494-8669-162856f99ed4 43e5999b-6ca6-42a6-b989-2652fdd2dd02 1e8ac6ee-f262-444a-8800-c02f653971c2 dee03bb6-7c9e-4f85-a2da-c9db5c4ad716 89d0e96c-e8aa-4766-8d6c-c536ec39e75d b14fb516-77e5-4c6b-9103-825668f69948 912a2974-71d5-41d4-a736-bfe701f722a2 e8b0bfa4-4b19-48de-ad67-01134cc69baa 0eb688c8-1b6b-45d5-87de-63c1dc1e43ba f85fad81-d486-4801-8dcc-b3966df6e540 f011e68d-c1a6-4285-b86a-6285e91893e0 d1da9c07-d7d6-4a05-bb7d-f5d1ed5c53be ac3da710-a798-4bb4-b846-3a6f4de2311a af15744a-2c56-4bc0-950d-757a21a3c5cf f4741a62-0985-485b-8c32-a1b764022252 cc6815e6-1587-4204-85d7-36f550420969 9eac97c7-ca80-4ecf-b683-3197cbab99af 90fd0e3a-9246-4760-a4de-b8eac59219b5 b3c6e5df-660e-496a-81f4-c96439f9d8a1 eb942e37-c27f-458e-a913-bc3120d129fd 66dccc8c-2071-4ee2-9aca-8291322df64f fbae33a9-892e-4235-8880-a84807fb924c 168907b7-6001-43b5-a217-cf5df02e94e3 a97d1e87-b055-4bdc-bd87-4af4c2aaa17e 15570cfc-4e19-4efd-9145-d586f937489b e8256818-388f-43b2-9937-a7ef1b19e503 7b8d2ef2-724b-4ad0-a172-900ecb4aaf0b 07085a17-ebd7-4d92-9463-9b7569b29538 3226606b-0837-4e11-800b-90b3db106314 5d114582-eb82-4217-b44d-38c179b37d1d 86d3f186-38a0-4252-970e-c9c031b74446 2671dce0-9434-4e54-8b89-7f88a588e6ea 620dd28d-92df-4b68-a0f1-a829208d38fc 0163e6d5-51fe-4d6b-a8f1-c069f0be74c1 bb45bf72-0462-4b40-9488-760e1bb1f6a3 232f2d0b-2ab9-41b6-8aee-5b158372631e 00bbc916-2f78-4f7a-8e5c-308560fda3ef c61bedb9-a141-4095-b1fc-a1026228f962 15d5455c-bcd0-4a64-b97a-9b469a31c52f bff5b089-a170-423c-a176-a41a14f54598 c90c23fd-956a-4f84-982a-1b2ce78cdd04 8aaa768e-7e73-4066-a31a-7a3dc86abc10 4c1444b5-180b-473d-9715-87cff40baed2 a89c20a1-a5a2-4dbd-bbf0-f0a72b2513cc 0aafdf46-07ac-43d5-968d-18c50a0fa0e2 3d0c6de3-9043-43a4-9781-e30cd4010c70 ceb0d719-4db9-42ad-b2a0-ada09bd6a788 55dec33c-14d6-4597-9de4-8ef664737860 c2c6657e-cadb-406d-94cd-db2ba119b9c8 842eef33-b6f9-4268-8edf-cfdf170859d6 03d9cbef-b329-4c12-9f43-5c6abb3b0c0f 501e0fc4-dfd8-4748-9149-596f44a89293 667e1877-ce76-45a1-8c8d-5ba652790e3a ab5b3ac7-68df-4c18-ab71-3b35b7100b9c 29faa019-6640-400e-b244-d21dd4092073 185e66b3-797c-4256-b2ce-2aa7eef9cfc0 751995d3-3190-456d-bc55-d9f09d07c1d6 33379f51-e0d5-4d9c-8d9b-23d9b9419b7c 30e76d45-693a-46d0-8752-fb4a1b524ec6 fcd9347e-b296-451a-874b-61bdeb742dfe b44f77da-b889-49c8-9ca0-53a81d3cbc8c 6ac7e718-9eab-413a-8b4e-0c73db44871b b98e85be-9e32-46e5-ad22-d424c9f402d6 9ff32cfa-9793-4a33-9b3f-f823647f22e0 73b6d0f2-f4c3-46eb-8678-65ce16b62b11 d32beed2-b2d8-44e7-ae2b-3e6d0ee0a40f 74bfc055-a394-4bf8-963d-bdcfd10e2b8d 4d4c1029-65f6-4d55-a7a6-fb5ccdecd45a da820b3a-f5fb-4724-9452-d9aaac2e42a0 ea216d8c-cbb0-4e8d-b94d-cfafc3b0b014 5a02b08f-af80-4045-8e05-c51fbcc15f02 e56da25c-7d86-4ee4-b5f8-ec0f3c1f0373 29314364-a0d9-456e-9856-33afff43130f d9b6dbbf-5ac6-444b-b036-d896570409f0 b865157d-84fe-4021-a2cc-7be3e6308c7b e39e5a60-1d97-44c1-967d-d73a6911c87e 369f2322-df09-4097-bf40-dae65aed733f dc8642a7-35f1-4264-bcd1-82bf9c1c4d8b 88ebb469-fdba-425b-a45f-844d14593787 41eb2eb5-fb11-48a5-9f67-94660fcab49d ab5c4d0e-77d3-4279-b31f-4a31338f899f d01a8d5e-46f6-4e09-ae2a-03194fb82799 2e83646e-5d1b-49c2-a6fb-a3646682c856 10b2c31a-ab2e-41be-b798-7044f32def94 8a1bc473-04b9-4d8c-94c8-736ee8e84bf7 a96e636b-b51e-4661-89a5-b8d6da30f3d0 f3b1356d-f3e1-448d-af2c-21fc57101074 088a269a-8bd3-4023-b283-07795de6ea68 86282594-7e56-4e0a-990c-dbfd36eec106 20c28da5-076d-4b15-9225-1ab2341cc5f6 41483ac5-29f1-42ff-9a2f-b4226b98f2a4 909ba05d-c411-40df-b394-2d4dca86393b 0bec24ba-751a-401f-88c2-5382af30fdaf 329ee7b9-11df-45da-9de7-f472ef05918b 3d335c57-684b-418a-bcca-da168c0ab1e9 cc337027-a34b-43be-94eb-dc8b915512d6 d656fee7-e551-4ef0-b05b-35fd35cab259 f348fcba-cd54-4cb0-9b46-a67c4cf588d2 c5672d77-041e-4f22-871a-5cacace6c0db 86ee25f6-7f4e-4cbe-bd63-6b12a1e35f7c 6472dea5-90ec-4d33-ba33-6a19866f0ce4 e5d646fe-5938-4d39-9976-cf0490968b08 7e08ffd1-8ef9-45bc-9234-553f4d77caf3 09a0f6f6-112e-473b-a1c0-8d78e296dc3b 76484c10-4fad-41d9-a1d3-f9e2ecc349fa 2c03c25b-605e-4ef6-8845-237ff03f623c 7385b51b-1b59-4bdd-95a6-718e58785777 4ca9c09c-6650-4b6f-a0da-d176f6f67ad1 ac2b04fa-6578-49a4-9894-e5b80dcbb0d7 aef6e191-d3da-4e8a-a681-08155813eff7 0d2cb6a8-396b-4e5b-9aa5-83360de2ded1 acb5bb6b-dd9d-4cb3-a553-26a41492d69b a87a6f58-2589-4bb3-afe1-6778e098fc4c ca7e3f99-f8c1-4834-8824-f269e569f327 51028d5a-b9c8-42e1-b28a-e6cf84e9e22e d274df8e-7ca2-4b90-97dd-34412123d598 c8b23393-380e-46a5-a213-cf580116f420 4c6d7935-d6e9-4c9d-b868-de37fc6d3dee 6665acd8-79b5-40c0-b5a6-c9e7a596c608 7316df97-9080-4d06-b642-d9dfbcaaaa96 1b79a198-2502-4500-b700-22cad9b3dcc2 07e3f960-76f4-44dc-bc77-ed3450cd9bf5 baa5181b-c17a-481b-93e9-a97d1073bd3e 93adbda4-1deb-4d1c-b1a9-ef39df3a2d9e 06dd77f0-8e21-4670-b192-a2037ad79e11 af0f4ce0-d5fa-4653-b2ff-69f31423bc22 92c31cbd-a6c0-4fa7-bb8e-4887697002f2 6f35cc8c-89bb-48fa-9b35-b08a921af09b acfaf1a0-97ce-4018-b20d-75aada61037b dd43339f-8bb5-4242-9eb5-03c66bd231c7 4d00132d-951e-4600-a537-1099f9db106b 785cee2b-325f-47ce-aead-4e00040ef36b 8732b86e-622c-4bbc-b054-1379c4d88147 d2fcb8d0-d8b5-4a36-8bd8-edefef39c763 75450540-3000-4840-83c2-1e79669f1e20 10350d74-26a7-42ed-aaa0-ce7f94ff8105 5df95c79-a2b9-4e0f-98b6-9a862ad09218 753f338b-fd78-48f7-b036-48b0cfcff4dd 76c30ac3-ff0d-49ce-b08e-d35fd352b62a 88727dff-2e80-4b26-94bf-784a7e92b915 7290c271-7a53-4a1d-9e3a-b32c6adf3545 ff51fd7f-4748-4562-a768-f4dd4ff6da16 d88371cb-fc8f-46cc-adfe-1c5262203878 909b616d-1f9d-4192-8355-1cc5c7896542 a2f0152d-0fa2-42c7-9a37-a88e60a2a0e6 0d091a84-3529-4c2b-9bb0-e3de18a5f8db a335f07c-2a33-412f-a1e5-52f564cf0399 b4333b67-aced-4389-81a8-b61c79a16f12 974db8dc-624c-448b-8b82-70809c9c239b 4f76a9e4-f49f-4e65-849e-50d76fe0994c 532f8822-1e2e-464a-b763-c656e42b29aa ef25bc2e-e849-4102-b22a-cfd3a1966a49 8e97bd5e-ce39-4a9a-8ca4-277de3d3a993 1448fd25-1cd8-495b-8f50-5c4b19a7d5ba 471a99a3-01fb-4762-9ab6-b6f6fc4ff3af 6254a8f5-0aa0-4e3e-bb39-4e5644606d67 1d642dad-111a-447d-8799-738951afebfe 07441731-d1be-457b-9eff-e465bc082d70 b69bf36b-37f6-4495-bd43-539b4f36ae56 3957407c-a78c-493f-9a6b-53381f2777bb be710e49-413e-434b-bab0-2c41858a3810 e6d06382-3e4c-43ec-89a4-4f9aaaddca4a 0416b238-096d-4ce5-a5f0-a8f3f86ed645 6cc19946-8c08-4c64-b333-b066d0abc282 97ab14e8-bbe6-4f11-b21d-8823eab4e885 55d2da65-281a-4ea9-964d-5adf6111b70a 9e1e2e71-4296-4505-a3c4-4a64616177fa eb46691f-dfa1-4497-bb66-9ab5162ec5fd 207c82be-00a1-4011-82a8-7c431af8dfda 52d91e78-bab6-437d-a8c3-d7ffc0710a73 e210dad1-f033-45b0-8b52-120a5f7d10e7 5a676c24-a2ea-4a36-b564-ac31fd7dab72 259fac2e-feb8-41e2-a5f9-9fd8d6b2f2da aa1aa440-dbbb-41bf-8b78-53f0f8ce58cc 53296561-c4c5-4f40-b279-740e43a38b56 9ae4b1cc-8c32-4b57-a35d-d42d2b3b45f9 5a57cce8-5afa-4099-b201-1a681b36d749 1524fabb-ead3-49ae-b043-e4c27e59d2f2 f7423b0a-5b1c-479f-bf8e-a41a04164f48 90f06122-9772-49e6-9d31-a20bfc9d1f59 5f1ba2cf-bef8-4994-87c4-d23e22bd9717 ddfbcf90-d881-4190-9e51-92f7fe9d5c0a f059ed99-ac1c-4b6b-9533-4909fc693d35 366030a4-031f-42a1-aedb-c70ac671f8a9 9ed65d6e-1d02-4949-a41d-dea70ab395f4 8472edb3-970a-4f19-b31a-072242eeddba 623767cd-f272-4f21-bc84-cd410708ffea 00999cba-82e6-4363-82d9-b225009f0037 776cb2f8-fa5e-4ece-8ed8-f5a075081827 60538e6c-9513-4243-9ba0-1991fb1125c0 15b9e262-6716-4396-85d8-7c6fbaa0d0da 24a4ba3e-3317-49b3-9c86-35ca2e50b430 be39dfe1-eafa-44b6-a212-0b18fe661731 37eeaa08-642b-4265-b9d3-e476ec71c4a6 63ec6d25-7acd-46e1-92e0-4e81d58eaeac 2c5e36ee-9202-49ec-9994-6dffed8fa023 f5c383ea-78f9-4821-8d8f-18488a0800c3 54ba101a-77d7-41a1-9707-3f761833c312 1e58be69-fc87-42ab-886c-bb4fd909bb96 bf2e876a-6ce8-43b8-be3a-e8984559508d 2de920f5-7a50-4c0d-a8e2-d62c20748e01 bfdebdf7-6236-42a5-bcdc-593fcefef549 5d97f580-9a05-4049-ad81-40e481820c35 cbebce83-eb69-40f9-b851-ab869197f148 2cbdff93-3497-4666-95c8-7e596a970660 75766bf6-8c28-411e-95ec-6ced17a34ae7 8294b33d-a47d-4644-a6da-68b0e4e7632d 1942f848-01b3-42c3-afd3-ec8f034dbd53 674b192b-938c-44d1-a1f8-ea8e001e2544 d2440add-1460-4892-b6c7-6883a9d7b58e a5cd47ae-a148-4bad-8177-08afd8d9774c 725eddf1-447b-42cc-ac8d-ccc07e0d3f26 66e68be2-2f72-4bb9-9bb5-3e7494218ac5 6c1811ab-2a27-4aba-afc8-2ae4878cb5de f55d8aed-2b93-421e-ace9-e07df904b94a 59e7707f-3444-4dc4-a137-71373ba60320 b4cc744c-058b-452d-9f35-3a07fe360544 0b844e2e-bac0-4fd8-b338-d37b60226e21 f96e4ddb-a197-484f-a15a-f55d1eb74aad 5e333fed-e635-4c73-98fb-06606974bc67 b292d006-5f20-41a4-931e-0de2970b0981 684d34a6-c28c-4eb4-9adf-39d93281dfb2 02fd42d2-d11e-4793-ba28-e4781c7e1c62 9a7a749e-41a0-446f-87e2-4e979c88dbb7 88e2088a-7286-4cf2-bd05-d22be7a6ed5f d48a9423-8302-430b-aa45-b509549eb18b 3a267c8f-682c-4b53-bacf-6940c4c2a035 3fb8535e-d15a-4df8-b969-c199e6a1f1b3 c1af4751-328f-4547-82cd-1c9855b70501 728fad69-4713-41fe-9d07-b49306551042 0b343b11-2942-4fb3-9981-06f4e4879c92 8c612430-be23-43ba-b234-d287e131376e f4fee118-d4a9-402a-92d3-35062128df52 69ba57ae-1d63-4877-98b5-7cae600476c5 686ea4dc-bb39-4af8-80ce-220a1796ef0a d0432eb3-54b7-4710-b4d2-ef2cbcc39c51 e821ceb5-5869-43d0-b73b-8d5ba6587d75 83005e43-a54e-4c86-97ed-eaeb325287a2 d45c01fc-9e2a-4ab6-82eb-75654aa575cb 4c0b0fed-8339-4297-bf8c-a15f68b7d7c4 a6696f97-ebb9-489b-b538-84d8f5b09536 b16b160e-0bf2-49da-b6d5-c7f252100622 c6220b76-c100-4770-8fb1-e79ddeb7a1e4 255d79a3-3253-45b9-81bf-f70d567f7b33 83019af9-bedb-491e-974a-ecbb099c647e c17d1e76-4622-477b-b2d2-04ceb991f27e 4a5ab8a8-1eda-4341-9fff-f3486fa9e698 47121577-0a38-4215-a68b-756e860e3bf0 beae5121-cdad-458b-ae9f-6b309796bee3 6df99f2a-aed7-4bd1-a6bf-d7e9cd3f2e7d 78eb2478-36e2-4f69-b02a-3bd039f1166a e905d48b-0404-48e7-b7ef-a11135209ad9 c8abd952-63f3-4614-b587-232b0e3a1783 2270a260-afa8-414a-9eff-7d6fdff92ccd bcf70370-dfda-4e0f-a131-5a79f5dbe686 b4f018f9-5834-49ae-ad71-b2d5f1780719 3fd4dfe8-befc-4fb0-a76d-09807466b234 9397e69c-37ff-451f-933a-dfd942c14995 41cbce3b-60bf-4a3e-a989-d0e0d8885f4a 108364aa-0626-4aca-a2ac-bfbf85601551 9e6be571-45b9-45ea-9e80-54453807e93f e2d3347f-cd23-4da2-ab2d-2e1543be6e29 860fb224-c175-42a9-b4d4-a48f32f77b94 ec52f967-b7bf-45ce-849b-6c5c94d5a1e8 e394cec0-089a-442b-b2fd-03686f73fa13 15f8cf25-8ce1-4109-955c-47940670a562 9d332305-0d6c-40ef-a723-a127de6e381a 4d98fcd3-0db0-4486-9508-8caa14a25dcf 09ea0018-bd64-4442-b1f3-560e4001cee8 e60d9720-d151-4382-bdf5-10a186aff095 7eb8a048-8516-4a3f-8e83-999db0d76cb7 17a0c048-79a4-4dac-b163-766ab96f07ed a521f9cd-be5a-43af-9cd2-33b13478805f 0bfc3f77-59f6-4c5b-acfc-d74508420442 ac31d4da-a43d-4c3a-a66c-ff9ef3fd8711 e9cfcfc4-7bcf-4ce3-affd-5283203d79c9 a2ebf90f-6990-4d9b-bb4a-19cb4a411a9d 1dd4c470-04d0-4730-bdf8-d3db4ac9f643 b4284c70-8327-46dc-9981-2ecfd2257c0a 9e22ca1b-3a00-4a26-a46d-925e8d719aac df0d4872-fccc-4dea-92c1-f79df39826e8 ca6b3c2b-997d-44d5-ad19-0b993464ef98 760a2a44-b46b-4963-b890-b00398a65616 90db1eb6-4fac-4597-bc20-04b77a21f1f8 e9702b13-aec4-405c-8f96-12200fcd05a6 72d028ac-cd63-413d-8fd1-298f334af7ce f6889662-7f41-43c0-bb6a-78bbdb6024cc e6aeaf0c-f2e3-46d9-8892-287a89da5211 c187b2c8-01fc-48c5-8f22-70f06e9862f1 c3b0fa1f-f974-4935-a05b-2c142d1f20e9 bf7e9a95-e060-42bb-ad95-aadd814d37d5 0a612b7f-cb50-417b-a128-15b80f3c450e 7300fdc0-e56c-4839-b200-3238219128df 84e97d1a-426a-44a8-ba09-8708a7d68838 76009334-a90b-44a8-bde8-26b73a5095c4 46df0ce6-cfdd-4219-95eb-ccc93ecd9b6a df761c67-1ebe-44f6-bc92-f7708f6ffffc ee02cd98-efb6-4f6b-8a61-8b5b493367a2 7f650ec8-1720-4b09-a245-aaf83fb51b50 79509372-777e-437b-afb0-26718daa617d f14da0d3-68ee-4cda-9e7a-c272e99588b5 d3b6b01a-2bdc-4199-851f-26973110bd10 56c41010-b063-4972-bdd9-497e7c71f23f 3f903004-0433-4c2b-a2d2-0066c3bd8616 b938fb33-9ed7-4658-9b88-faa82443645c d6501779-4c6d-4886-b28c-48ee53d84cec 9fe62c88-9539-4627-97c4-3818f83d8266 a2910e4b-49ed-4dba-b8f7-25e9fd333980 7f3c4286-60ca-4e7a-86a1-fc4493891ff2 eea0b2d6-530d-4217-9bb6-3147fae3498c fe08c072-0575-45bf-8847-53a67340dee1 c5e943c9-e76b-4dea-b55e-b83ada953edf 6b9b1680-e4ca-4798-844f-5e97d258b1f9 20d04127-ea0c-4914-a0ce-66a4f961b725 94ccee55-8508-4b2f-97aa-d7367b0a1e3d b88c6d3d-00d3-4d40-9058-fda184a13fab b9fb2ae5-2ee1-4d2e-a840-d41843fb6a2e a084c1d9-2fcd-4879-8723-5b8879e52e95 e6b74e92-a26a-4ab7-ab30-48d3c3444b14 2ae04063-c34b-46dc-839b-69e96ef406f7 3a829d58-e36f-44ef-ab04-707d55f54825 cf41c55d-cfdd-4849-a0d0-9bf48e0de246 1bacf198-d969-45cb-bfb9-64317185f130 80a2d8b8-cc08-44b8-bfd7-11afaa4ea3ba d3a4e6a8-c20f-4339-8e11-d327c67f5940 e72bbfd2-6f4b-4584-9708-7b79f9c12ea2 cebcc48e-6f80-4449-94dd-027a406f03d3 eaa37a99-94b5-40d4-883c-1f698348c550 9661ef69-55bc-402e-8771-10a94e3152bb eaab814f-485f-4596-afdd-58bf6a8e7e40 24a3025a-95d8-4c77-a64d-95e77a1e25a5 ddbb16d4-2772-42c7-b2d9-6f15cb202eda 9065a4f8-3e8e-48b7-960b-b0acbafcd907 b9139723-b804-4f7c-8ce8-bd064b285121 e6909667-26d0-49a5-b7c3-9a50ea3045ab e1606638-c801-4c86-8372-2bb38997b8b0 64a71d5d-bcdd-49da-95fe-0086cf0c5ff8 a543b806-aa40-4a06-844d-988353975f88 69fd2359-0511-4bd1-b831-fba97ed79e43 670be18f-5f5b-41a9-863f-4a553c9de56b a428c205-5d29-4384-a0f3-d829e80dc347 0b942124-81e9-4ac9-b78e-5314c0b70454 ecc0a4f8-ac95-41b3-8da9-acede573de23 5b311581-2f64-4d95-9482-62327c857192 f033c3f5-0db9-4698-b4ad-226764945b0b af4b6c98-1c84-4b26-abaa-d583dd6b8cbb d2ae6347-506a-4253-93e6-7ab07686bc69 3b1b331b-564e-456a-9f6d-408b620ff0c6 5896fdf9-17fa-49a5-b730-b24ed30b816d 5896ec37-c001-4c71-b93f-adbf382d8b47 85a54ba6-83b1-4b0e-81b3-3a98db0d7bdc 5bc11dea-1ae4-435c-bee5-eaa1e78f17e3 8b003d5d-11ba-40ed-8447-f602de664341 7915a76e-299b-4ef0-81d5-047517af3f9a 6eea87c6-0756-4c8d-86bf-f28b6d222051 daa7032a-c3ce-4a25-b058-1ffcfdba02d9 e3a3e881-37b3-48e9-862a-9337973e3375 e685a4b3-24a0-4bc9-a532-cf9179bd41c5 418afca2-127d-491c-b410-5018c278825d df48ce36-a0d4-4390-b237-01a1beefb12c 82741566-dfd4-4585-a3c3-273ed4d1305a 6b1ff9c9-7ebb-48cd-bdfc-381ec9d2971b 0ede8b51-36eb-472e-adb1-04c89d0527e2 12748921-3516-44f8-bf24-c644f157c238 43a17def-821a-4366-836a-a8d7bf0c5bb3 0ec03158-2188-48a2-9b31-e5f9a81dfadd e3e1ec36-315f-4f93-b987-a92207ee50fb 78563131-e82d-45a2-89b4-9373a50b3a2e 17c74842-3149-4259-8db1-93d21e9a0967 9c3b31d4-2be1-466f-9bc5-c0b9de50a1d1 55d23500-6580-4afa-b008-66fd9fc3c2cf 3415a70a-4c13-4195-b90b-6b2ad14fc0f1 de7279ce-78c3-47f5-8e20-41cb5adc68f5 eab73ad7-6e83-439b-9f45-3e22c97309c6 67f778d6-570d-41ef-a271-4866aa108abc 973fe178-321e-4557-be95-456427458c52 30c23bb6-490c-410d-8d7b-8abbfea4b3b5 07bc2063-8a4a-4971-a220-6724229dbe47 1743bf64-7606-4742-a1f3-e369182f9edb b1f4bef9-3adc-42dd-8aaf-c26af7a7128e 7d6ffe3f-e972-487d-b216-df8668dedcc8 ae23f5d4-7825-4edf-8c12-9702fa5cf1bb a9c65db2-c085-42b9-88b0-c70766c259b7 38f1418d-b034-4648-b677-9685f5f7b47f d040bff8-7d03-4de5-a127-9bd4a30634c9 199c3ddc-2561-4ed3-bb82-59c16d10df8f bcbdcbe9-03b5-46be-bfda-e152266d0e63 4011a363-e867-41ab-81af-4f1120a6a129 5f7d2fcc-4665-491a-b39a-e076b224f319 917424a5-19f5-4095-a9e7-a973996b2102 dd80d9f5-0dbe-43a9-a47a-8134a5fd53b4 927a1cf9-383f-4baa-8419-dfb0bfbab818 161f8b86-dded-4af3-9e7e-e02bf250ab74 a48c3441-501e-491e-9389-0698468bee2e 0397898a-6eeb-4436-9cd2-7ddaa329d0c9 3e3296e7-f802-435c-9ede-c14c7433ffad bba14be3-dd32-4e53-a38f-9b157df493e6 d1862848-2395-4e26-865f-408d0c280999 8c5db8f3-3052-45fa-b099-bd1b0e365646 225f56a3-4d1b-4dbb-a109-948712c63221 fc53a925-6562-4592-aa2d-eb7977dac305 90235582-5e55-47d0-9b32-ca1ac4d59d9a 819d7595-5a9a-4bde-a450-c87a336c8cd6 c61e9240-a6ad-4968-9fb1-0ba91a5a1f49 5c4e830c-f90c-4948-a6fa-869b07b06699 caad4432-120b-467f-8814-564a3d78e96a e2d25563-e466-4c3c-a22e-8bb17a9b9f01 41ebd008-6a43-48f5-b049-195bf9239209 7b2d6dbf-a8f5-4bb8-adb7-e3166a2964ea fd49b582-f572-4ce4-be8d-9d4f03a87e95 487ba5f5-84ad-40fd-b3c8-0559e9c7ef88 9cf61f23-f0bb-4a45-accb-37a41939aee9 a55f57e0-e122-4746-9e63-c9eda4969af8 c99c1bda-a6df-41a8-9a1a-3386c0972f2b 134da59c-8262-4ea2-a2a4-fbc9d7d9d6a5 a4d9f0d6-4291-49fd-a6b5-12f17c42010a 3b8f0bb7-b091-4b4e-a8ab-8ebb9a586900 b59c244a-4611-4d66-9c34-29127b802b7d cb1a68f5-da37-43c2-8219-750c3c2da72c d7dfbaf2-2a33-4660-b40e-a4494ac48cc4 15a6af6d-849e-455e-ac3d-74de97e0828d 3e8b0cde-2e36-4836-b912-c648ef566bc1 9c73d8ec-fafc-48fa-980a-f002762ed66d 1c6ef6e4-b5b6-4e33-ab6e-27c52c0c4ac3 6e8d8f41-fae5-4f17-afac-ec7ccafc2ffc 514131a1-fa08-43b2-a1ba-19c9cc5cdfb5 795dd9fe-842c-4954-85a5-fe3e6f98cf98 c5ee029a-07f5-41a9-b666-c4c09ca9817c e16bb710-391a-4352-a884-cc37aca19682 8f814c4f-a5af-4649-88e6-9dbf3c1e44a0 b23a529d-4ff6-4860-8d32-07cc8c8b516a cde8085f-09b3-42ff-8ff5-e1d5f0d71a37 d5f56718-7408-424a-8dd6-918b46eca7a3 fa7e0729-e990-4e58-be6e-0e982e49efde c41eec5c-73e8-45d1-933d-a2f1e45c43ab 09ff16f2-a646-4f9b-b12f-b93012d9f471 bb169121-0c56-433f-9364-c0232461a2b1 af553b87-00c0-4523-93b7-c5830e250f40 4f17c978-99df-4bd9-ba95-0237b965856e e01c607d-0b42-4764-b2be-6de81f408462 51179901-4ae1-4046-b25e-f33e0f314c59 438363e2-11bd-450e-9225-bc924a7fa633 f68506ab-cc4c-4f3c-ac4c-2441eed1e2dd 34d80e48-8e82-408d-abf9-7a05f2ec30ce cf4b7e65-14ae-49f6-bd26-47fcbee85fad c9a726bc-1cd2-42e0-89ff-958109ebeb1a 051f4f57-99ab-4ab6-aef9-ff20a5c55609 e45ac0e1-16e6-464d-8ed5-9aa926d6fdad 585b1d97-daf6-4aa3-b666-3993ae2a48b2 a8601b98-3f56-446b-a234-9941ee46e734 0382cf81-853b-422c-a333-4ebc5615df89 85b7decf-b74a-4388-8ad4-6b03fa1abdb0 8be58e77-da74-4f1f-82f2-4ff892b953fe 57f2559a-bee3-4625-8441-e6b34982f089 a4daf957-049a-4269-9a4f-1c1376052495 16939e56-a5a5-44fd-945f-83fadadc83ef d7c2d8ff-ac85-4267-b850-99fd7b0290f4 adfedbcc-576e-4d7b-b641-258669376b6e f0d02d64-4827-4aeb-af6f-ea3ecce504de 82d44d93-cb4f-4ba1-9ab2-50c014f20538 50909bf8-f14a-4b81-bc27-d8127f90ddc4 367e5549-140f-41e0-91fd-f46fa46c0e37 a86ddb2e-2146-4efa-8dc9-422ddddcf3cc 4ce6dfa8-214a-4850-9a13-c2dd3a603443 bfe55267-b3af-4b80-8a4f-a31cbd657b43 57df710f-8b50-445c-977c-bf6c835034a9 067681d8-659f-4996-907c-7339a57e6761 0d310c26-cda0-4112-b45e-c1cb4fe68586 b193ff89-5635-40c7-b77c-e283e56689df 59d15d4a-c1e7-469d-97c2-332ebcedae03 3fe63bfe-c422-408f-99a3-6be39874ad41 4a3a3093-85d8-487f-9638-ab6305ac8dad 0262f604-1548-423c-8e9c-f2aefa3a260d effe6f4e-c767-4b92-a0cc-2080b5960935 a7c4fc20-f2b5-4d76-bbc8-896638e09414 e23207e6-cd81-417e-bafc-b8ab63239fdd 3375dc85-b285-4a72-8307-886ab20a9c0b f5fe8ed9-1239-416c-8c72-3d39c01f4633 c1525ddc-676d-4ac0-bbc0-4b5ca8ffb6c3 b451502d-bcc9-4459-8c47-bb57d1ac9eac a0803a3a-b5d8-4d9f-ac97-ccd1bfd3c51d 507b4b5b-6f4b-4183-a395-edc6a3e30a7d de723205-852c-4fac-8eaa-6685199314fa 94fa2dac-3880-4858-8736-8094810eedd4 99b82a61-b419-424a-a590-4848564b98c6 316eec7f-305d-4ca5-b6b3-c37c5855da4f ebbc70e3-a058-4742-9cd6-b9e2cad4d50b 65c84220-ede0-4bb2-994d-a5478f54846e efd62c88-dcda-4d16-bc59-3d65da9bed68 ca665f80-b538-4192-9799-bf76b93ea0c5 a5b9efa0-0369-4020-895a-59786cb13009 52746475-8c82-45c2-abbf-a5caf45e57ed 8dbde4bb-81bd-428e-9c77-6d94f6be8913 cf8b4198-97e7-4b42-815d-c63ce9c5679c 59b27e38-5e0c-45b5-adb2-72dad1071ede 9079c09e-b6f6-467e-b7f4-1180a52ba7eb ba2fad05-c2a3-46df-b517-38253642d292 9e85aed6-d850-430e-9286-94e49033624c daaa1f01-0755-4723-8246-7554143c4656 2a1c4136-f7aa-4931-aab9-4fe9404553dd 339cbf27-1656-4596-97c8-a3de4e6b3c58 d5727bcb-32c0-425d-8871-53333b3dd227 b9d8a20a-0f46-4a0f-9dcb-5393632ec194 db1a906f-b2c3-42a9-83c3-ffc05e9b9c2b 6d6a3263-b7c9-49e7-88a6-850b1cb3dc2c b86bcb84-0c7c-4247-be48-acb79283d8f1 78e579ff-cc03-42fe-b9e7-864c4871ddb5 62d46287-27cf-46c8-9874-0a3fcfedad2e 4893f8d3-b2a3-4bf6-afca-01446f5c3a50 00db7cb3-f8e9-4763-b081-730fab090bfa 5b6dec86-8c41-4362-b541-3de715964106 f4310873-e80f-4c5c-a9de-3d31cd280e2f acad0150-adb6-4dd9-b62c-47858d78b1af 7fd72fa4-a624-43ed-b0c8-dc8abf43e1b3 d9c47be3-b182-4243-91d2-87a0b9cadec0 e5a9d1ca-1d0b-46dc-9fb4-2230c8e897f9 5210afba-add3-4753-baec-3e9ad130e792 b8a01dd4-91ae-45a1-be8d-de6a5d7fc3f5 efd489f9-dcf0-445e-a5ed-019d105de352 2e08502d-03f6-4438-8317-5e9cb6c35284 2ec25946-7e52-4612-8d43-4a2850a41645 f36c8424-2416-498c-a463-0609fa4d358e 6ac84ffb-194f-4cff-a47a-1cd37e68037a 51bf5035-c3b9-4a98-8f01-1b3ac7f4caf6 425646a7-2f51-4405-acb7-b3997908ed0b 59821192-733e-4100-94d8-3ba64bbd581a 725f6488-814a-4974-aaa1-0cdfe2cdfb57 8db35da2-65ad-43da-9ebf-7545a324c4d5 d535d6be-ebf6-449b-8053-97a1efcc8914 76456c02-e3cd-4f03-b6ea-023fdec8457a 1c3fd47b-5df7-4184-a758-c3d411ae36b3 b8f071b4-04a1-418b-a27e-a2730eabc08d a1cd607c-5a1b-4b1c-a454-2b4b817f0618 4d6f98c0-11cd-4773-98f5-9c518e88e142 3be5ee4c-6af5-4ff8-a384-9732af520b92 107e185e-822b-4d94-826a-d91d9d717d1c bafe1998-d268-4927-8958-5a4a5719b807 a4938a88-5c8d-4afb-a59c-7e54e0e14f63 bc8ccfb5-2133-48a2-8f49-0391723eb7e6 5f342f5d-9e02-40be-821f-f4d3ed05fef5 eaca9bc6-a45c-4e4c-afb9-c25c323b3ec0 1abb9ec8-2f5e-42af-b0da-717c6234b5e7 977d7f85-d31c-40fd-a063-f730841402f2 964da94c-96d3-43dc-acfc-74b79c1f716d 1c87be4d-b4fc-4935-acb2-a3b6b9b0da77 78e18e50-8b33-4dea-8e9d-e5199476b465 5fdf90cb-2cea-4d6c-959c-66b80a648a38 ec662c35-02be-43c6-a2bf-d5ac68722f86 0002de9c-a281-4532-97ed-f6531d672b99 26d286ba-859a-4b76-97eb-4e668208ab83 18d56090-f9e4-4d93-9f48-00ce2e3838f6 ea24e186-5a5e-406b-ac8a-116ea88105ae d6134312-4271-4fa0-8e48-71482c906c46 da3f9947-1630-4293-902a-bf398411309d 7cbb3643-8865-4515-a376-968c6333d919 98600939-479c-4e70-b449-9323b0e08879 ffa8a73d-2169-4863-b68e-e1b3458c31e6 a919d3e8-7d6a-46fa-92ff-67bdcd553eaa e75f2cbf-eb9e-4726-bf45-51f88ec386c1 37ab8424-27a7-4ac3-b01a-6c3304f4df19 81e44438-c386-4fb7-a2e2-e9f18a325b1b 25be47e8-765e-4bc3-b3ad-3c582f0e5e70 d1994c94-b8f4-4d05-9d7f-a839ad797344 c9d5a2b9-6ce6-47fb-99ac-eb21b2ca97cc b5475c46-33e8-48be-a549-bb32b02638dd 6d603961-5713-4798-b4a3-26c7f1b55d9c 5696b302-72ec-40f3-84c2-0693b1968a7c 28e8e868-95ba-400b-91e1-c8b73628e07d a6a6f1ac-12fb-4cc2-b6a2-bf4b14ff7983 96315c84-25c3-4daf-b360-9b7a25dfd4c5 b0ec399b-80d5-4b88-8005-bfe97a822ca6 0772a13f-ec06-45ec-9073-aa86a73dc118 684fc3ae-6f82-4f9d-b4bb-06602fd75c61 e792041a-8eaa-4ecf-9474-71af08614d0b 199e839b-3c64-4c5b-a8ef-eaebe1904c79 7461d0d2-4bee-4539-9800-f344a9f4b490 9faf5645-135d-46fa-8fc4-af88f85944d4 9214d83e-c540-4e43-88f9-cba797c14f70 78263969-9ac8-490b-bac5-4d9dbb3d77b2 a4ecf5ba-ef24-48be-bf56-bc05f8188234 62146eef-03e9-4699-bc5d-a0f3a43a40fa 40d366bc-b996-4e8b-93a0-3df6f1a49747 0aa645dc-45e1-4746-9640-8d5ded3d2e2e d0e13315-5499-4bfb-aecb-44830b985ade e5c7a806-1e4c-411f-b1d0-6d7af6c65704 9bb47c38-699f-4909-914f-a204aa8c29cd a9c960b9-84cd-4104-9432-870c76f7ab89 07c21ee8-da2e-4bb8-b7a2-2cebc001b23e e202948a-9490-4437-bf77-46b05aac8d0b e5b8afca-e567-49a0-831c-babfc4e5782e 13146804-cd5c-4757-89bf-54e82a9cd551 bfdafccd-312c-4c46-95f6-c37e8b3aef14 4560c558-ae0c-4410-ae4d-f7c2eb41966d 245aef1b-a709-4d0a-b6ef-7106cab91a8d d48e451d-24f4-413b-b3cd-5a9e0e89e58f dcff0438-16d4-46d0-91d8-c8e7d3766531 d50a3f64-75eb-40f2-8495-e3caa98fa25d 579be136-a8c5-40a9-8fca-85b3f8c24da9 80746f6c-15f3-481a-9d13-baf901ca9b50 fe5a05f4-1b39-46f4-87eb-c9e02c95d70c b30db319-0a5a-4028-a972-6bcb9a651178 2efdf8bf-2585-45f8-9797-bf5acd269df0 8f2a6707-40ef-40f7-8a11-3c704d5cd373 e191a117-a1be-4acb-a22d-22f4239b7d00 9911264a-6c94-42be-bb11-386ac4441c90 9071f3fa-d29b-40d0-ad90-82dc93b73e4d 01c5c480-dabf-409e-9281-9d7f954b8acf 8f73a445-4816-4392-ba4d-4d5e10ec68bd 2d89d38d-b5ba-4634-8a5d-fc76023a62d8 7c9a9fd9-3fa7-429a-86ac-3b2aac273e28 6e2940c9-c542-4943-b161-d0fe28b643f5 65d64c45-998c-400a-a5df-e0cd178b9904 ac3cae60-d105-4d99-b0aa-3f1aa6f352a5 a68b295d-56ea-4c21-8d9f-317b31817086 6fcb152e-1c74-4020-b93e-ba29630da592 ad87f093-0b50-47f5-8c06-7d43b037af9c 87b33c9d-3a2b-4312-9dd3-43bdef439a9b ea0168a3-a32a-49c6-8a8b-52196111e1e5 13dfc432-9bf6-418e-8792-d1ebfca58ed1 83ce8bc2-97b7-4cac-8f84-757fb8354955 fdbb404d-86de-4f27-8ec9-4d4b106baec2 41680c6e-3642-44eb-b734-cd9d6152c9b6 542c2cf0-9ffc-4dad-93e9-f437a145222a ec8433b5-10e8-434b-8232-ddf6c0f4ce7c 05c43683-893c-416a-b7b1-4cf2748ed5be ccfdefba-6139-4644-9634-f36ac04c438d 444dfb87-8226-4d20-a5a6-0db35e358a24 6d3078bc-da83-4330-8343-c287ecaa9647 f2da6910-b219-4b4f-9e87-c8014186c5c2 0f6ab68e-7e67-43dc-a6db-507f701fce94 36059c9a-d924-4f1d-9e86-25007b3d5e08 fe519f39-7cb0-434f-9778-1247e8186725 4b5e101a-1ed5-4416-a6a8-2ea1e68c8552 bca75281-2b97-4a4d-aaeb-553cd4ec1f3e a9fbb82d-c8f7-4b97-be7c-4b52a64276ac f0f09426-d0c3-40e4-b0d5-1c49f5a4a68c 673f95a5-3bc4-4548-8269-bf4b1cd61d0d 0fa4cfb3-c315-4258-ae6e-022a9b56cf27 2108e462-388b-4775-a525-38d2bfc416fd 45ba789d-dcb7-4523-a7b4-d8a46e0b5a20 ea35c742-2b0e-4e34-9af0-34aa14820196 44081041-ed60-4ddc-8d3a-c5fa4508e931 7d9196e5-d716-4106-a648-6e362bf6b05a 460a4e20-a916-4a44-b481-00a3d8c889cf f2ed43a9-03cd-42db-9aa6-01f92ca4a219 4c29f602-aeaf-47f7-88c0-88e8e6c5bda2 96985918-e0a3-427d-9c07-e1933dcbf111 d026ef01-38ab-46c0-9b1e-d93ecebb41eb 727909eb-ab77-4299-aaf8-353efad010cb 0c75229d-a3ba-498d-b341-befe9f1a6967 19b0e7bb-97a8-4f32-b324-1ed643740249 48c7d4e1-298b-4dad-84cd-2baf9d85e0db cc6a51ce-39d2-4078-a182-1d0e486e4cef d1d889a4-0146-4626-8b36-16cf01b1bd7b a679c2a4-f22c-4bd2-8b9e-c7214f857e56 b3a39637-d8c7-4d27-aa1c-817e59881f98 eb13785e-40b0-436c-965e-dfcd67b5466c ad292ed2-cd3f-4d59-95b4-a91f1ef42c22 0e4da75d-8005-4edd-8c30-de9ef554d8b9 ade24748-22dc-4372-9836-a16a1eec50bb 8bd27821-90b1-45e8-8061-a8f731bc223b fdd7116a-34f9-452d-a41a-15cf8416357f 817e4b6f-0b3b-45d0-9406-1f4db05c1979 b793ba90-0d4f-43c0-84af-076b73773599 0e57b8da-11ed-4dc7-857f-50a1556f0330 9d2d58c6-990a-497a-bb0f-73738bbddc65 51fe8bb5-308c-4a94-be4b-c31190c20609 60e2050d-e502-4ee6-98f5-da3bd06651d8 0f191f1c-fe04-4f67-a3e0-9a9d7da123c3 7b572e59-e814-42e7-8e91-72f0a2fcb94c 117b0a6a-2d82-47d7-a550-c266798c3a64 30a11b6a-d864-4304-b2f1-d6a88fef3df2 806947b9-cbc9-4e2a-945e-2f656bebb000 22562185-2a9d-45d3-8909-709510bb6c47 e21e38ea-6b94-48ac-9af8-84f1516de887 6558ec04-c051-40f2-ba41-a14360b956dc c363b22a-cef6-471d-9463-d8bd9b3e6e08 393b1768-47f2-4af3-a28c-94178148db70 1cc91630-94c6-43ce-acd1-26f51ea1e274 d8fe8b8e-626e-48e8-8788-c8a1bb654f51 478f1464-ca8d-40bd-92f4-3c12c1b5dbe9 5b3722d0-be9b-474d-a52a-0e33435bf2d6 55148e33-0065-4e4c-9e78-1f4ff4a9172a 1337d721-c3f7-4232-acf0-02c28d561651 47fffd28-2961-4d3c-9c3a-eb08a7a8414d 685bc5c1-a606-4bfb-a64b-79dddf92768f 75d167c2-e764-4fd1-a760-5a14984ec04b faa44c3a-669b-43c3-bafb-e701eb296828 b555170c-7f08-4205-b792-3c2c1ff864bd b83b87e4-5bd9-4a22-927e-9f146313f89b 7fe0e7ce-6c96-41ec-a2a1-43be70fc0695 80448a0b-7577-47a2-aa0b-fd514b6cefdf 6624c9dd-c64f-46de-addc-52154e17bf05 f489ad7a-9537-41a5-beea-f7dc67a14020 3c8580cc-ea4d-4fc5-978c-e1ddbc25b7eb bb43fafb-daa6-42e0-b52d-46e8db654794 6f758be5-0c6d-4652-bd45-66f94351e4d7 7b779f9a-0349-40c7-8f82-44dc50405178 5905e0ff-aa3a-4c32-9fa1-08083a7b3501 e3025d99-9104-4efd-94c2-16654aae6270 04551e2f-250e-450b-a879-d76912399c60 6e1aa092-71e7-4ea9-9d0e-7af0cab4a12d e6380599-0145-4a74-adfd-22dcb4e8a2c8 dfe06f93-96a5-4986-ab66-d6be047610d6 d50ae08f-3393-4139-a1da-2ed825c15176 aa6b8135-392b-4991-a623-eeaba15f758f 4e8c5d16-d507-4680-a64a-5cc3e31e212a 6c26f3dd-e2fa-4105-b5a7-2055e645ec19 895ed060-148f-48c7-9571-e5744b85778c 92a1b365-5c40-4347-a95d-84c45d903204 c6aefb80-d86a-41ff-b1b3-84ea85076918 944cb680-fa3e-4a58-b046-b2525ecfada7 efea2dab-90ff-4082-8cf4-63dd8f0999a6 60f0a4d2-9c88-4a3b-98e2-237d90f01f2f acc3fced-9839-497e-8b46-f2046eefc492 9b04c425-0f25-4e0f-813d-29f9e6a87a03 ff6e32ec-a8f8-4561-91d0-575ed6677be6 ddd5c2b5-ff37-4c0e-817d-66f4863d80b2 7fffc96c-71b9-4527-8291-b8cd0751af3a 0b6f5c9a-089c-4090-96c7-fa1eb2a80277 a8e2aabb-6438-4420-90d1-f705d886bc0d ef6028e8-4eb6-4a49-9b5a-8e7c209b1521 97cab810-e35b-483e-95df-55c75dce6edf 32a3d37c-9534-4ca4-ba9b-6081183cd6aa 47cdb43d-d4ac-437a-9831-94eb409a40af f78d8f1b-1cca-4ac7-a509-076f7b836da7 53db1be5-85c5-41dd-a5b6-95ad3a219f4b 59eb91cd-a42c-4c46-8514-81d0ad8f8e37 49b5dd07-4fdf-4e40-8896-054b0a7e23b5 74d60724-4562-4564-9541-24b64875d465 8638b81c-376e-464c-80ee-fdd8f9b2a0a0 03f49412-6d71-4fad-8bb9-e71a906f2443 e5b05722-36d2-46ce-afb4-81080599ecf3 2c9f13bd-81b2-4973-9d2b-3b74ae14ba37 45d38631-0c1d-4c78-85cf-b86192e379f7 68eaff1e-1961-4638-abb8-b5b600282ddf 40b4608b-8aca-4324-b669-442432c8af77 9f3724f9-7b41-47c8-9ab3-a062e33d38fd 2a776917-c9f3-4be0-a01f-0b84c69d0c4d 14adb790-075a-441e-bd0e-b5ae1203d384 b8cd2eab-c533-4850-9b76-fb70c1c56c85 8e8d0d75-cfd6-4e87-b179-2d5793b86a6f c11ef9c4-81e2-4252-a88f-9def91f16a5b a8edf5a0-4862-47ff-8dad-ffc54335a4ef ae0aad07-62ea-48bd-badd-156ad437eeeb e798443d-2faa-4250-89d5-95702c12b005 69dee448-8524-4e7d-8844-a807a757fb04 6fbfc489-33ec-451f-8129-9878007a8f7f 5ede17fa-31b0-4ab2-81c8-2d3ec0364d30 7db0bbbc-40c6-4660-9087-01d695741923 18d5b0a9-9d35-40e1-b4b0-77013ccdb86f 962646b0-47ee-4d4a-b8ad-ac9227ab104d cc0cc89f-3109-40e9-8628-41b8e6c4fc60 79e56173-ddb0-41b1-976f-e4e9d88e07be 3dfed7d5-077b-4201-a264-4a1ac5a8bed9 7fc6b198-7310-4474-bd64-c61ed8a81329 ef384914-462f-4365-9fd7-063bc5d33d20 cf1d5314-0a7a-429c-b869-bdb49d13b006 656935ee-d313-4997-8bde-fb9b76148142 d0810fc3-2eb4-4aa4-8f76-e8dc2978e4dd 5f29bfcb-2e5e-4820-96ca-657d70bfdf66 c1bd6c4a-3120-48ce-938e-1a47e88755f6 ad09c383-57db-4a0f-95d9-3fbd72a5401c bd7ab96d-b044-48cf-9617-2ad213107db6 0969c261-5130-4434-a4ce-cbd4ac918157 987136f1-0caf-45aa-a2a4-c59a35573f7d 80bd4144-ecfa-45ee-acc5-1f370ddd457a bfbb2ff9-1d54-4eb6-933c-4e78ba3eba09 897bf14a-2d75-4957-af38-74bc70fdec49 3be75d86-c069-4734-ad4a-a2b03ce7222d faea6616-fa35-4992-a6ac-e12f60dd44fd 3410c76e-e106-4fad-88bb-806ead159407 d7209242-900f-4fdf-ad17-0aa7e52f7315 18dc4514-bbc6-4896-8a80-718cd2e4462f a2a22bfb-a43a-4108-97ca-1b6beeaa701e c9c7f426-d985-4955-a672-31c2185b6146 08596044-017b-4a07-ab3e-60b6abec7b9a beb55d13-af5f-405a-bf72-fb8b030dd11f 262396b0-4379-42b5-b9cf-db1a8ce42a75 5fd9ac3b-85c2-4f65-8e9f-43b48d3d3495 668c1206-aa65-4d1a-8c23-43364e672c52 25ee3b4b-33c7-4768-b9fa-0f52e39f3eee bd5f8859-2b9f-4388-bdd4-61174271ca7e c32c98aa-03fc-420e-828a-aaa4c1e0a269 12e0cbf5-b60d-4f49-a175-ec5ba9695892 ffaddaf2-75f9-4230-a803-d686a68096cb 4d5e0ca0-b4c7-49b8-bbde-27780e171fdc aef23509-8e8a-49e8-8543-25607047da98 9788340d-e297-4b82-a57a-5982bde7217a 4b5a45b8-69f7-4ff1-be29-4f6960488d3f cef667fa-847c-4bb4-8d87-d198b0a753da eac0e7e2-7eea-40f5-95b4-714bcd18f24f 893dc2a5-53c4-4109-bbb9-20e2dcbf6cba f3a58e48-398e-44cf-88fa-16aa93f54efe 7c7e8df7-09d0-471d-b3e1-67c21a3dc2fc dfa11524-df7e-4c9b-ad9d-0f29f6e05427 edd0936e-94d1-4daf-87ec-b7eaa916e12d b6baf7e6-f741-42e9-bcee-fa52dc36f0a9 a071bdc4-d7fc-4254-aab5-4481d55634fb de7110c1-f4ba-4a75-b579-244122d4410c 3b6703d4-4ef5-417f-b049-5812375a7d8f 25d6e4da-de13-4605-9153-c72b7559089a ad8a3916-0f63-4bd3-a36b-d5b994a08f2b f60a5dd6-18d2-4b98-8e61-2058e34d9923 28327a9f-bf24-495f-9efa-532c656c836b 390c9b7b-9b31-4cfd-ac5b-10e0ca0ee5f9 167470b5-8c29-4040-89f0-c12348a36b6b d4e0eebf-1b1e-42b3-8705-8c23f6fd7eb1 b2a65c69-500a-4835-99a2-85fba2800522 ff8ca3cd-269c-4639-85dc-906b9469f597 6fb511f2-6576-4db4-8b94-b500d670e136 1f157ee7-be90-4df9-a1bd-303b8b8426b7 e8f717fe-3841-4f90-be12-b50d46496b36 94b6e95a-cf90-47f0-87f8-0cefdf16aa6e 67bb5d1b-bd9f-46ec-9c3e-b3949a0cc65f 8ea066b4-901d-4880-85a9-c115587a68f7 229b8635-5d18-4e65-924b-1dbfb2495351 0b426250-2946-4e86-9421-b35e8549f320 1806a6d3-d497-4223-bcc9-3116b777ce15 0c5fa646-1fbe-426b-b1ce-22e8f559867f 6327208e-272e-4b58-8052-26af71843671 768b17dd-c255-4c57-bb28-4a654ff5ac2a 1b390299-20c3-4f3f-b8a2-a3e9d2b73497 3323fa12-897f-4bda-8c0b-6e163706d804 ef837df7-de69-4e0e-b03a-d876268a2a62 79c90f80-8148-4f8a-9245-1939de3ef0e1 26f21fb3-f123-4ac3-bed2-1d197dff9b4f 4fbcad31-e3c0-42dc-be50-54aebf644a99 e60fa704-b9bb-4d0a-824d-d3316f13677b 4862c1d1-05e4-4df1-95e6-05eefcffd1a4 029be1d6-0f72-4d9a-8a93-b52fb7061df9 0a07895d-a766-4632-aabb-11d09e1524c7 afc9c1dd-0698-49db-b4b6-8918c03a8a3c f53f5027-5d2c-4179-b2c2-f500f12a7a39 3394a766-3e6e-4c19-8490-1913a322b62f 00fffd71-3d9b-4ea8-9795-14c2e7bb9c73 f8c564f9-7cab-48b9-977b-ee22d2381f16 9f6c108e-5f8d-47e2-8f76-ccc86c36873c d4a46d72-ee8d-4d68-9b74-c160b00ffbc0 37d6575b-7666-4950-ab25-6e60d1233280 98a3ec2b-5c91-4568-86eb-682189a6b2d5 c63f4f8a-5016-47cb-a4b3-0d1504abc7b9 4c3682a9-e46c-4a2d-a08d-d57f2a054614 398b29a6-08ce-4fa4-95a6-24c245499ad7 06ad6e43-34dd-486b-a2bd-f7d2a82b2862 d602442b-250e-4468-b77e-b434c18050e6 150d6e6b-7a3d-44ce-9fb4-90bd63509d8d 02068cd3-44ad-4a26-b3c2-dfbf63494b7f 46014cd2-65b8-4871-8238-df015b5e83a1 4feb4468-5174-4f1e-8ae7-07e5bdcc2ed0 8d953b14-35b7-4a32-a1e6-6baba4c16d60 6e21c264-49ab-4b72-9a48-b639f37e534a ed136156-c16f-4d5e-9d85-e734cbc7f90e 03657d6f-2e3c-4687-86cf-a17c0d0017e6 efad6097-e2f2-4d61-921d-f4bb848b22d4 3d6aa81e-1273-4874-8628-d440ae4eb116 2d3a03f6-2a17-461d-861e-5fa6e9de794a aedade5c-7b9f-4379-83b5-43dcf7706083 1677bdb2-43e9-4eaf-96e5-d39587bb0c22 58e09783-ac17-4e17-8b8d-a13d1ef5410b 38b78e58-ae0a-46ec-809d-120f899bb6e2 12ef0f11-e972-46c6-b29f-e29d874963ea 77d8279b-6d0c-4fb3-8475-5c45f4a6a243 d81af2c5-7036-48d2-aa7a-c2f4b26d47c6 7f560409-c97f-4bd9-8e58-65903f36693e 730ad53e-d590-4a83-8d8d-3c0bfea667ad 0fa851e0-e287-4a52-845e-9e15aa3f1919 fbc75a3d-4b45-45a7-833f-6f85c0ecdde7 68437ddc-8edb-41a7-aeca-a76acf1b36f7 ba377b84-04ea-4515-933d-eb70653530cc 2a22d7b1-4ff3-4bcd-9fce-30e0e8c304f6 49af747c-4368-485e-aac9-be857b1438e8 f982f49d-7d12-448e-b17b-2d5b7aca6895 7504acd6-efae-457c-9d40-690dfc3631c4 218558c7-895c-4cfd-bed1-845d4121e240 a3513c72-29e2-48a3-b26b-56db3836c396 91a1a740-933e-4950-8c43-c94cdb095406 2ee64c1c-2ec3-4c7a-88c9-4946d1bc1716 75f508b3-8133-43c2-a9bb-2a4c47f0f4c5 e9c32dd6-86b6-4fe7-927a-f7ad89771539 82de7c84-6030-4737-8cca-4812bb9947fa 04b1f82c-f049-4927-9592-9480268465fd 012c48b0-c290-4cf6-8e5a-bca2b506511f 3ddaf48f-ccd4-4ec5-a307-9af8e6a89901 d8fbc9eb-f8a1-4320-9b4d-df012c1143d7 ccc2d702-55ab-4a9e-8f40-2ddde4aaf189 93ad6844-2c02-40b7-bf3f-43a81c960951 728715ae-0afe-4361-990b-6e59a4385f3d 56fada34-c5bd-435d-842a-82e38de4e1e2 34e714d0-6626-4e44-bc0f-1143c61075c4 0bd52aff-b261-46a1-a6dd-1e1efb639a8b f7b5dc1e-905d-40ae-9163-b0419296407a 4c6f76eb-7a63-4ce9-bd2e-3410d113c75f 743dea40-a303-4f44-9300-a37e69f4a909 06cbb60d-9771-4e0d-b201-49c35cef14de 105478b7-1d66-4f55-9482-5fc35a34ee9a 2c203eae-3c5d-4da2-8201-a9b894b5dc91 9bfa1088-81da-4d80-8167-9d4e3762b6a7 5366c811-82cf-4836-8dc3-680d3b99b028 17ffcd93-1169-4031-84e7-93366fbc3489 58a90cc6-4729-4f46-a38d-0a662390181a 9d086e68-efa5-41a7-a31b-7fe4745cc58e 2a9d0f81-bdcb-44ef-a58c-d02bf913d81a 44fa897c-eb08-4a60-a7bb-8c4693d952e6 9374a97b-ed99-4f1b-9e72-d2159279e2dc 1b820f30-4220-4c1d-bfef-310af2a0fb4d 11845f2a-bc80-405d-a5cb-01d1839eaef8 d604f9dc-8e3b-483e-8d2e-f48e42c86649 4994837b-8f30-400c-80c5-93aa51008e32 9d284b39-0ce4-4838-9bba-1e4f1ffd5704 008ad43d-2097-4a25-b89f-3d878344a654 0e445539-28f9-4527-806a-fb8f5cef181e 0482cfde-f109-45bd-a7bc-43cefaee8306 7cd0dc06-fe36-4c60-afd3-bb66cecf49c0 4b0dd751-f5ab-48d0-8419-d9ce948dfe83 cba63ff5-cd05-4f6e-9c0c-19ee55e4be51 ff8f8738-f85e-43c9-a6d0-73a6c50a010e 97c9971e-c826-4986-b5eb-651b04373066 6c716e77-1cc9-402a-b0bb-e5173d2e4078 9796f7f2-3682-4ec8-9e33-b39151f7ff30 c3b69b04-6d43-40fb-a8c4-278941a1b001 ea5feaaa-6580-4405-bc97-3ec29b3bb3af 3fe6c9d4-07b7-4f24-a54b-f63134ba41ba 72431e02-7ea2-4a38-8295-e20cc59ae16a da4ecfef-354b-462e-9964-5391f91f942d 3605f5ce-0a86-499f-8093-293f53489c48 10d83174-f072-4edc-bda9-7a6cb812d5ba 139e810f-11b9-47fe-9409-a30abb8cd0b2 b443f8bf-b475-430a-9e95-8d66eb6907c1 899c9534-a6a5-435f-9037-1ff99e1b5236 5f37e384-da1d-4ce3-a897-d0a8421783e7 956416a7-5aee-4c9c-a50d-2a9e939cc363 4246767d-cc42-4409-a424-0261f5ce0d22 deed74c2-bcd5-484d-8627-97b8b889b997 43792f26-64dc-4976-84b9-3c13ea0d0791 5cad909c-a1e9-4742-8b3a-c04a4cc7c55a 3f78978d-82b9-4b59-a367-1aebc0e7f5d7 b2034031-63f6-4d3f-899c-46639e944236 39c6e385-3a7a-470c-87e2-096fefa232b9 06b3a1f8-8030-4597-b37b-7c77b616d45e c9927b34-9242-459b-a51f-89b80e5a2389 b01ae681-f52b-4fb5-a627-a0c4176fc2e1 7529983a-316b-4c27-969e-0e0b282f4158 b20be23d-8634-4ddf-a157-6da3a116361d 6c4a16fd-e246-4d46-9fa5-eac26998c0d0 bd41eaf1-1343-4503-aaec-c73bd09d34d5 c1489cc5-13c5-46b8-91b0-18feb18bf583 db485e38-c59c-4bd6-b576-c3a188d57a82 41378c27-ec99-4ed6-a7cb-94e49f35f0d7 366810fd-4d93-427e-88cb-ac1a0c413588 81034981-726c-4b2d-ae61-777d7341bbe9 e1da0359-a38f-46ea-9c50-8d56e6edc950 1ac65f23-e59d-48bc-9293-222f4eb7c71b bdb107da-df46-4387-9e62-0f947b99f8a9 72f9bb8b-890d-436b-8b12-b17e662c7160 309e009c-cf1a-4fd9-9ac1-2b762aaaec77 804f348f-c849-443c-be3d-1efbcadbd0c5 eae8a9e4-a9c6-44d0-a429-18193b5e4982 182806d9-7b61-47e4-86f0-9e21c1083388 b734c0e9-5244-4ea2-a310-f6cabdc1f22d 1dec9268-327d-4fc5-914d-70f3c7ab0518 25f9b7d3-3407-4d53-b6d2-6d85b2a31828 c92b3b78-d209-4527-a87d-e1da29cd29d3 ee14a320-01c3-4205-939a-867c56dadf15 8c49eb67-d813-4fcb-9b16-51b8fc29ad54 9657bc80-a038-460f-b11f-7c4474f5dfa7 3b0cf8f4-90e0-49b5-848f-c322dd0106b6 951ad92c-fefd-4416-9a26-d36abc59fbd7 d3fa1b82-8aa7-4b7e-bd71-67c63556a90d 95422c5a-c61d-4276-b839-18552d46bb05 ca0ce8bc-eeef-4bb0-ac86-9b03ae46479b fb25e831-8c47-43ce-aeb0-57d6f8198333 060a8ab0-9243-4427-8aff-b229bffe695f c9abca21-c0aa-438a-aa96-ca2a95c23036 9654c777-8b23-4ae2-84d0-6e88024eb4cd 48e31d7f-989d-4793-ae68-738f16a9c364 69a6f84a-2552-4107-b608-20ebdfc52492 cc1d46fe-f2d3-4083-b1fd-b19415eb1ad0 83d59d95-b334-4d35-bf27-136f1183c7ae d1224343-04cf-40ab-b1a2-20e5a7bc31ab 872d153e-8594-4895-9544-dd0124d2802f 3db7d4a4-8850-4e3d-9694-d6530b3fe4fa fa9caacf-030b-4c13-a779-a372cf770838 076773bf-7fad-4695-b391-a27408e5cde9 89a92d2b-3939-4234-8b40-6869db27f998 bdca7e4a-0dfe-4168-b72c-124325b7377f 95a062a4-3ff2-4711-bcd3-ec7463330b81 36769c11-b867-470b-b431-1e16ae507ee2 dc2ea874-3f3a-4f46-b9ac-dc4cc7f92fbb e6922af5-eda2-47e6-83a6-f96353b3c4c8 adaa1df3-61bb-4bda-bfcd-c9a2cdf7f0d3 84df44f4-fafd-49b7-825f-f5b70761576e 13e10313-21ee-47a3-bf28-a77f37512f6e 57c5c689-ec66-4f86-b1d8-b383c60f6f1c 65a30353-d8a7-4d4c-8e9c-65f3fa0ee85c 7172ccde-7280-41c0-a86f-6d6f6b39f16e 5019374e-9ad5-4ab7-85ff-8cecc955441c 01845178-d199-4583-b1fc-9afa302645fd 25d20ba3-60ee-4e0d-ba6e-8856e66e0426 b31037b7-7092-4406-982f-0ef02724c1c6 6feabf22-62db-45c5-872c-2b0473036437 0bb73efa-a459-422c-b846-5cceb2a8ed01 914f3674-0b25-4e58-b1c1-15a0c2752207 6242348f-a92d-4b36-9223-4a9496eb1f8d 0282434e-13d1-4ffb-985c-292251759314 83ba0df5-2c59-4ae1-aace-47d7520e5c09 9375a642-4451-462e-b957-3eb8e78357ad 72654662-df15-4516-b573-2e41e3371a26 b6b22e60-e26f-476b-898d-59b28bf75835 641cdff4-0abf-44cd-9f63-26f663e2b4eb a7a9ae83-f686-47eb-adac-b75932744e44 6cbdf1cf-6c6c-4c6a-9226-00993c829c96 0d39d57c-952d-4854-aacc-5efda54747f1 6a3f5f13-c8d3-41a7-a98c-d6fe6bc0e9a4 72673ce8-4a74-4adf-9eab-6dad2fd294ef 2d77cf75-247e-4a57-a67a-8f2160a67636 ba21b6b6-d2ba-413e-85ba-b333f64fb0e2 60781f05-822c-44c5-9aaf-a087927fc2c1 e653f37b-550d-4824-9c17-73c11f0d4d2d 3272c709-23ec-4c82-b18b-daad3b4483a3 d4879df2-c318-424f-98e8-6ce7ab1653c7 186af2bc-10e4-4fc6-916f-7fa471225865 1b993c54-8fbf-470b-9305-3ff8fb3c1ef4 903cf9e6-1017-428e-bbe4-81d1799aa038 7694d76f-1183-4990-8636-df6b3b6a485b 2afcdef9-3a9a-4e4a-9bb8-d35af9d537b0 daeed6d7-a3cf-47cf-93f0-c8d08aa9d551 ceae8683-5231-444c-a41e-199e12aec70a 7d01a6aa-54f7-432c-9273-7dd61287b6e1 5a68d736-c1ee-4abc-a652-a7c87d363ef9 daebd219-0942-4d75-b79e-25473157e6de 6e101384-022b-46cb-8445-8ace36db407b d13f2762-3fc5-403a-a323-e9ed120d9233 7ce0e7e0-a885-41cd-a3b3-bd0e50f774b2 aa55bb0d-1994-44f3-9b7b-fc51a90bfe82 5ea63ed9-cd0b-4a40-b365-58efaaf819a2 9be759d0-bb75-4863-958b-11bc579577fb 454a215f-d5a8-4530-9618-0e0502026b45 e8d2abde-255f-4100-9773-0a2540ad901a 38f0d878-f6cb-4ebe-bd88-3b4889850bfa cd776c40-e982-46d0-9836-d3c46a5d7ad1 0c65ad03-eda5-4e99-a219-76c0aebb6b7c a9eb29ac-d324-4245-9e8d-6fac2b75e65f bb171511-5f74-421c-b631-34d79dcd5eb2 63929410-6869-413c-b300-3437da1d9613 a697e166-d185-4d6c-b510-6e51a9df875e e0194ef6-743c-43ee-9845-eba47d63d052 b85d68cf-6f25-47cb-8377-8d856a610ce0 6afe19fe-6af9-47fd-b167-7224d49766ed ef517d62-67bf-4025-ace2-017c25904546 53b9b0a7-7520-4533-b884-0e794d32bb51 7e46d6ae-c703-47d6-86f8-8b9968c4d083 50e7c32a-556d-40ba-a1cb-283020b9b2ac a4049c7e-1fee-4a2a-b6e9-10251f95028d 686a0f2a-b658-410b-9831-ed0f55023114 84b5fa3b-4b63-40f5-a657-c8dd84a4906f b7c49e6c-3a69-4de3-8772-caddd28fb437 dafec560-b231-46aa-b314-14841c1a9020 5d4c6038-501f-4e12-8ce0-9f66ee852024 9290026a-ab2b-4c7f-9467-d0a2b70c0c17 4fa3c54d-8d85-4dab-acf1-9ffa825a5bac 68c84d62-11f1-41db-aa54-e51f63ba5373 3a49fa2a-16c8-4cd1-98aa-5a2777094ee9 a8ce65f6-a162-4d66-b9ed-3d5c82211587 53a259d9-9bfc-4388-9b64-7859250a4333 c7ae4c95-1eab-4fe6-88da-9dbaeae17565 a7f4ffd6-db83-42cc-ba56-d64bd9b9e961 9c7f66e3-706d-42a9-b47e-a65278371013 d4b0e23b-ab6d-4a28-9c4d-782c20519488 af4c4421-ea56-4d64-9ad6-70a6f24fe9e1 5130b7bc-69e1-49f0-946e-e543428ce265 97cb4af5-a028-4155-a2b1-8dad7f31d10e 393407f5-ccf5-43b1-828b-b0a1f9ae11fc 5e6e6829-4aab-4dbe-a24b-f6253b22ba47 39bf25e9-9f3a-44a1-87a4-3e7ac54cc295 8ed7324e-1838-468e-b6a6-622d3be4fbca e13ea4b0-25b1-4ee4-9ea4-6102c5092193 96ed3b41-ab7d-4319-853c-c2bf54fe8b53 2ba6e118-06c3-46ee-987e-428c20646230 83d5a032-4802-4ed2-a28a-ce3c8712f11a 4a2a6ab5-7bac-4040-8c67-f458b06f1627 bd6695f3-bf01-47c8-966a-fa2276f498fa 644e48ec-831d-46ed-9dca-fbd3a29bc835 84bef678-15b8-4f8a-badd-5951e97f6f62 5344b292-fd35-47e6-9466-247f59108420 059ca11f-415e-4690-8c16-5f8138eaac8a 21322491-3dc8-4cf2-a653-43325a36e14d bd7597d6-45c3-49d7-bcf4-33800c575ba7 8bf004ca-75b7-42f6-9799-60ff0a2f3792 669717e9-a774-4014-961b-1fd847a37bd7 a662b8fe-fd80-4d69-a8b8-2f3b2a84962d da0b1c05-6f2b-475e-a0cb-4699b43e1d1e 667e0b5c-94d3-4aa7-9637-dc931ce997a9 2dded39a-3a3b-4695-b610-083db7c8e87a 9bd2325a-e3e9-43a5-a584-9b2f918bbac0 a4f45f57-63c7-4707-9972-92c2a40ac901 49316e75-e4d7-42b5-9fa3-342727c9686b 6c2fb2e2-6d6e-4768-8e5a-e4a0edb42d20 c7084f90-b778-4d00-ba32-8939044ad9a6 5443fb7a-60e6-4a94-aa23-329ea7d48f78 e906ac58-7105-40b2-98f0-d919dc0c5d38 7fd97c95-5398-4038-afd5-6b8d1a9318fb 1b448ae5-9fe4-4611-bf36-b82c2b70232e df8d46f8-9705-47b6-a26d-02b5735d2af9 9b7b65b2-e2a7-4235-aae7-35a92bf2f144 9031be21-9248-4c7c-b26c-40ca026c1429 14ae8bcc-a0e0-40b6-a332-7f17427bad26 e4093eb1-9e79-444b-8b25-f750e4e17b11 8132085d-cc60-4c60-9a49-413d468198a4 9f6baf37-b355-4add-ba7c-c63242d2280d 897107aa-e0ff-4c46-bba4-65f20e871aa5 91f6491a-bab6-4d58-bd25-777c1511a4e2 20924b45-53c0-4022-ad77-2fcbb5ac2c8d f6841672-7633-4abf-9ff2-fefa88dd362c 9fcd71ed-aaf2-4b3e-bf86-c15bd728713e ca664f1b-50ae-4c85-871a-790c71ddc044 90217b5d-65a7-4b74-86cd-53444cdf754c 0e51dec9-aa0d-403e-8043-f8e9d4e96b0d 673faf08-4d6c-4ce8-a647-9fe9674a7475 26f2e50d-1071-4504-8aaa-7262dab9c022 31afae2c-f949-4986-86dd-e8c7fef73829 1fd82e98-a8fb-45da-b78a-03555ae7b3e4 8682d5cf-c3b6-458d-baa6-168a2e17da65 ff1d6e34-95f2-4fc6-8145-56c24775be89 a77c3c4c-dcdf-4d27-8f49-1e72c899719b 5342f91a-d182-4225-934f-8f394f72d569 2ee016c7-2308-4083-bb70-17b831b59c68 37e5fa36-735f-4236-87b9-8b77a9b7df71 fe312f82-b4e3-46dc-9245-d123a7e5bc52 b77372ee-9eba-47ac-a1a3-1741f6a4b4be d55a70e5-cdf5-434b-9707-b4418bfe5182 d140dba7-c5dd-4651-bfef-0ab982d9c4a6 d24e3087-a050-4ca5-a7d7-3c24bd1cddd4 035248ab-641e-48fa-a1ba-5b26edf8b0a8 9ddf0cc4-046e-454a-b747-0a61c43b2147 ac9ba1da-4ada-4c28-bfdd-8da51c338efa 5a28ed04-79a8-45c3-b455-40675894c021 7915e432-ea26-4e4b-ba5c-025e531bcf2a de1df3e6-5626-44c2-a886-2e027d342984 bd52a870-0d22-41c4-bab5-e4305b1cc337 8a09cc4a-0202-4350-b6cd-6fecbf63ffe4 ef6164b5-4431-4b61-a967-daf726fe7e2c 3155389f-a3f3-406e-adf0-18eab45cb609 0e779c21-3d82-4e25-b217-678b0552644a 654b70c4-431d-46af-9819-4eebf894f62d d6fb8e89-4e43-4069-ba6c-7ea83ddcf792 66acaf63-1b71-4b23-833d-0f2b48122515 e530f220-2822-4247-8ff9-eec0918419d5 cfa185af-510f-4a84-a63d-6d5a431913df 55cb2645-ad3b-43ff-9eb8-633c71289a16 1f4b3547-eaed-41ce-aea0-9a7671d148a9 bc8600ef-4e86-46b1-8aaa-cb47f4759c56 b08dac33-376b-475e-a2aa-79184f526671 586c2487-e948-4ead-8d4c-06a608e7687a 6e5c1cc1-d899-4e99-a730-9404ff982705 0682fc1a-f9d3-487e-88c0-badba2b9e968 5f44c024-1712-401c-b48d-53470bd815bd 980d90b2-630c-4f8d-a59e-c14c2bf6d582 b93f482d-4bf7-4954-bea8-fccac5f28589 b6afdaee-0849-4097-b247-be6cbbc1a38d 56eedf4d-1280-4b0d-ac11-0f42a387d5e4 b77b344b-980b-43f1-a4df-c23ee3963783 b55a93ea-4e24-41a8-bd3e-9f698cefb76f cbd36c22-f423-4c6a-b177-26fdebb3b59c d2a5de8a-484a-431a-9572-da7a0c1a15f4 d45c906b-c8d1-4156-942b-c562dd7ee19c d5c52bd2-433f-4a7d-a723-486a13de8cf7 37fc4dfd-f0f2-45d3-ae10-861edc8bfe09 9add9ab1-bc0d-4289-af4e-920664f80ea2 b5ac4f1c-860a-4562-a10f-2ab9f0d57069 edf07bdd-c4b6-4c98-95dd-869b3987d8d6 18876d70-717a-4920-8476-76a6634f9967 034655f1-2d3c-4762-8a40-7c6583a66a9a 0762a82d-1fab-466f-8afe-ce53e4a20857 60cbfb09-eedc-4351-87a2-944d4316c6af 63902cb6-9ac7-42bb-ad4f-ccb424aa9e1c 17255647-f4c0-4e71-8822-7c6b51bdd5a0 efda2733-df1c-48e6-8ea6-6be1d6f191d3 32637bb0-3b48-4914-b23f-493caee48798 c307132f-db29-46da-9982-20ede5018e16 07712b87-1474-4ec1-8d22-c2a87a38ae0d 16df1f97-8faf-4129-adef-511791cc3e0e abfbec3d-0fcf-4b47-8a27-67826016a9a2 69cf16a7-2a2d-43bc-b83e-2c98e3104ee9 9dd477f4-fe87-40bd-86c4-0bb8f43b3529 a971993e-d580-4979-9ff2-991babebadcb 4dae4313-c84c-490a-8dd5-148ff6cacbec df17a596-e152-46f7-9619-5b6a64cd94d9 fe5f71b2-8955-40f6-9397-8835bbaa7af4 cc9a60e6-ece9-4418-b094-a16e09731dd8 855d50c6-9ff2-47e3-8431-e2b1b4457cf3 38a29d37-69c1-447e-bedc-e0de4437fa1d a83b1d1b-9a49-487a-bee2-9aa8defee7fa 01fcabd8-4dc1-4a0c-830c-751223b79a79 e773229a-e940-40e8-92cd-390e9a3199eb 33107656-853d-4d29-8052-f41fe630d798 c786a1c3-7552-4bc2-8961-c24b059b3bcf 60575b90-da04-4dde-9287-2b3d86318aa2 660ed65e-351d-4d67-88c6-607c8d31839d 24614675-1dfe-45a3-9144-dc3499504e96 5c212619-a859-4fc9-9dad-7c7b13c6f582 ca073129-34f4-4661-a900-64c86de82fa4 36ed5576-39b7-4b0d-be66-a0e826acf731 8179b2f5-1428-4455-8bac-e0ad82ff12f4 e669a171-289b-4f74-90b7-d2bbe0c02377 bcb45381-4f3a-4d32-862d-40a5ad52bc84 3cf33469-5fd5-4a93-a2bd-43d022bb9189 a5753ab4-bcdc-49aa-a053-0324733096bf f15f46c2-b3c5-4346-8c53-1b7ebe2af0ab 57061ca3-f368-46e0-9352-f6ae40dc944b 6d936bf0-379d-48c5-802b-fecaeb4dc9a5 40ffe443-e26b-4350-8f38-880ca1c1bef0 95c7dee0-1293-4a3b-acfb-086594de77f8 c94a51cf-3238-436b-9f0d-43396eefd54c 00d3972f-0d5d-4b7d-aadb-54327e74ff7c fbb67a16-198d-403a-ac9f-e257c5823cb3 70a4811a-2ef0-4186-92ca-c3717e8f9ea5 1c32b142-ef74-496a-a97c-1acc3371aff8 83c52c13-177c-4951-bdd1-dd12f30ed472 48a79b2d-7d21-4c78-b484-f99cb39fcadf ff6df075-7cf4-49b5-93d5-8405980ab540 bf24f159-c215-4de2-9a95-a530870e2558 290ba3fd-3200-483a-b570-e0a0879767a0 5e129a66-5812-48a1-bc83-667e7406d257 72797e40-4169-4732-9860-1dc76d3177dc 970297e6-6f73-452a-a360-de0785c4f245 a0c37b62-d63f-4a09-8473-d5c7cb71ee93 ea01db5b-2e3f-4ce9-ada9-a30b17e80911 9cc74a1e-2b05-4af5-b4d4-546b40bc0d65 3db32837-37ac-464e-9241-15c74b6aff7e da8fca20-30b5-4bad-b607-d0ea138b1221 ae6ff390-b120-4e5a-a566-d3977a971c1e ccb3b807-dddc-49aa-9ea9-cded6e5a3d6b 866ba676-1a7e-4d9b-846e-dc9d6a814e8e 426ed847-386f-4ca0-93be-9551a0f61462 f884bc21-d1d1-40dd-9e05-b0eb2c82879d 7437d3d8-5747-49ae-a9a5-5c2e0a9c964e 96ca149f-fd18-4356-ba0b-2cf77359892b a2f6380b-ec01-450a-9f69-1098a3a51d14 7b62df8b-5e08-4358-8542-70ccf09dabd8 c972f34f-7cd5-4ee7-80f3-05e58979fc81 770daecb-2ae8-4174-881d-4421efa78078 e14840ab-5a75-4950-a346-c9f546138cfe a47d4572-405d-4ecd-9431-92458a05a814 daaa52e0-4a44-4c72-9238-7f5ccdb3a644 3d8d3b4e-0664-46c2-907a-09767ee488df f3d4ef2b-ed9b-457c-8d53-06414685f0c4 4c31d3c8-7a1a-48c3-8e85-71daa44d3c5b b788433e-24a2-4364-9d3e-1d82e4aca52f f328f758-c388-4c2d-a258-67ac03388b44 49b61eda-3e9b-4ec5-ae0a-81e32946ad1a af04b28a-3fde-41eb-b9d4-643f2e88e08e 8e858916-1d7d-4e24-90f6-00ed78d879d9 5d2c1250-ebc3-4467-9ffc-0c80a1762aad 0a2ac658-331f-4cb4-9114-249ffd5eac73 8a087a0d-2bf9-46a0-8cce-cc0af6f896e9 7015c6e1-b2a9-40ef-967e-c6685e45162d e694f7f1-2f95-4b45-a944-dd0aa0267504 5d785522-2c80-4404-847f-5595ac04c0f1 220f8dd8-3f13-45cd-afc4-fba0c5e31ac6 b47008cb-f43c-4923-8ece-de021a97c419 1580865b-0811-4ab7-b3bc-ada046aba956 3ec5fe87-24a9-41b7-b2e1-042b76a03531 73b470ee-4c08-4a94-bebf-20c5eb44c18e 6b586f6a-12e6-4996-a802-a332e7722d1d b10d61cc-1dba-45c3-9798-22fd57a90c98 653b660d-866d-47c5-9ad5-f4946991974b c8031f61-1d98-4d0b-baca-d04023e001f2 c89a6012-111c-407f-8110-4dec30616a07 7830a52f-c086-4771-b88d-650e4b523329 03bc0463-0920-416d-b5f1-9d0da42fccab fc759b36-4a79-4d81-b970-34ac87416057 0be01815-08ef-4d59-85de-f54ed832b120 2563c39d-f959-49ec-bcd2-e15ee3216402 231eaabd-2444-47ea-b61d-943a396b78d5 e0db3859-783e-43a4-b640-302f129b5513 486168db-35e1-492d-aeb9-b2fee567103c d54bbbe7-b5bd-4d2d-b681-87e6b98f0d10 79ee4068-1abc-435d-94cc-359750a1b807 681fdd92-f7d9-4c79-829e-3979644981fc e55a904e-dd98-46a1-8f46-b923ba3bdfb6 36eaba1e-d8d9-4a1a-bdb2-75efdbf91c70 3fd9eb55-ca69-465e-b4cb-13d48e5d0bd3 d5aba77e-4083-44c9-99d8-f7d15473ae9f f2c5976d-6007-44b8-a2fd-3942108606f0 f0fb5e5d-b6a2-43ee-baea-be1116c71eee ad2d0d39-3c69-4d75-a15a-869ee5a9d0b8 8527b7ab-cf28-4324-bec8-2be19bedb443 a20e7ec8-598d-42ca-b787-35f14aac9ee4 67fef8eb-fcfd-4ed8-a148-e652664cb6dd f79f056f-3ce9-45ad-8e59-4a0d27b002f3 b5a302f8-0dc4-427c-aeed-f0a767563b61 72b1e6a3-3d6a-431f-b18b-a3fe4835f8d6 b8a8eb98-03c5-40c9-8786-9b632294f3bb 251c716a-735c-4686-9fd6-6e0562e1aeb1 9acc3e40-a9dd-4728-a33f-d8d04ac21182 4335dd4c-852b-40f3-82a7-037fa3a12c51 a4dec2d4-f51e-4a84-8580-8ec2c4c012b7 ab1c1afd-9bbf-4729-bc23-5969b2350273 fe787a8b-b32d-40b9-b788-61b8dc3fc1cf 4a903dd1-ba52-4217-a5d5-ae2218c8295d da57bab0-d510-4fad-ae90-ce48ef5ca329 8e7d05f8-e21f-41a9-9947-a18492a4b24e f60e7545-e618-4e6d-b380-04d50d00652a 845daf15-b70f-45e7-88bf-633a1e5825dc 1764e125-12ce-4aa3-a092-3475da7e926f 2c7abd89-2ee8-4e66-8f49-3f1ab12ca5d7 cdf0c586-2974-49fb-b87a-0c229db59a8f dcee22b3-1126-4004-a20f-bc53cd40b3d3 404bec83-5eed-413f-9169-9b76af01a6b5 438fa080-9d44-45cf-891f-5dc6f5f7d0b3 89b91fb4-18be-4b44-acd7-d17389bcce03 dfe66af1-29e7-4d21-a4e9-285e23c7d8b2 66c2564c-2337-4b86-a538-65cdc9f90a0d 51fbfcab-71ed-4f13-adfc-96d464f46938 3ea4e9bb-4308-4746-a6d2-99175ef2f252 31c55ee1-015d-4f84-92c3-b577ec71f949 f15641ec-de6d-4282-b38a-462e1e3cfd5a 0b0e119d-648e-43d8-8288-0e1e187c5a25 6d9c9475-1986-4a9e-ba23-ed996427d1dd 75842142-ba94-46b3-8140-42d2dd934d2c 37a56bb4-07c2-4a9a-b9ef-a260a91932de 89309285-791d-40e4-bfae-72acdbfc1395 b3487cca-e978-4f04-97b0-dcdd0d9b6383 4ab5815e-7df3-4615-8f12-12ac70a36c0d 024a1710-3708-4f90-8b52-d6748b4ed8df c6263516-07fb-4249-95a2-37575d23cd81 216aa862-5705-41f4-a0fe-0d3d5c94a0fb 19f8bf79-9977-45cc-9fef-1ec484d3f1ec d120161e-c36b-4ab3-bb4f-6ea780859fc2 2c2f26e6-e3c8-493d-b8ea-277ce9a6aa11 a7ceef55-dce3-40b2-abfc-6b367d7b97fb b185b278-59ac-4f5a-8a25-6988eb8c6aa1 f602a316-966f-420c-8e9c-346071e7ae67 e10c87e8-152f-4902-ae9f-b05371c18619 58024404-71d3-4962-8d75-91bc305d6a54 c069af2e-7f5e-4a83-9472-6baf00f334bc b105b4e4-01c7-4e87-9837-2bf826b90ca8 5d4baf8a-c332-49e8-b787-bd0471bcec2a 22d6503c-c165-4350-8c1e-234df8ecb81c 6cd8372c-fa57-43d3-bef3-41b7bff52490 09c051c3-53af-455f-bc40-72d1dfee619d 76de625d-4ff8-47cf-b4fa-e67711823138 0bb1f329-e373-45d4-b3a2-4570a4650c9e bac23d6b-e3ba-4a01-ab57-36d2d6bbb22e d436f39e-94c7-4643-bd3b-803a451dd654 8c944925-0b13-4423-97b9-14d6c1e1ec6a 5dc1e6d4-3bf6-4d9d-9d8e-a5d0fac9efcf 07ea12e9-b0bb-4bed-88a4-9b7bd7235e9d 2f80df70-cf32-4b81-92dc-0a2534ed3857 61e788b3-61f8-4071-812e-0384c0b26356 b0b53af4-d703-4d4b-af54-cb77428d2b66 a8df93f5-f4ba-4342-9db1-9a4d62ede0b5 c179de1b-742d-455a-987f-01a6805c3634 17d5b9e9-b23c-463e-99b7-fd9c2e50cd67 461cf28f-a304-4306-bbcb-6841155dd165 80681442-1b28-42e3-9625-912991ce2d76 0c3a6dca-fb5b-4d1f-8528-237ed5e62e10 f75d4ec7-3f74-472a-af7f-b96e76d35c75 b4a82b4a-00b9-4984-9a2d-b0673d4e40d0 a50209d3-c4fa-4b7e-afac-0e0452770317 c1a7b3c3-1c4d-4721-8c90-dcbe949d347b e68ec64b-4264-4d17-a77a-03f9ec2ffee2 3e60a5cc-2b48-4cb0-82d2-084358c0ef2b f94187d1-7b31-4d4c-a16f-530e575252b8 691f78c0-2833-4b0e-836b-0cb87f0a706b 74493d32-2e7d-4ab7-9628-bc3545251e56 ff3e5aaa-81f6-4cfd-80f4-f201e08e78b1 5153b1f6-1d01-4b10-920f-e34d68ad650f d9a1eb32-9eb3-465b-a38d-b153376dd88e 8425cebe-953a-47b3-b26a-7d19e2adf5a2 20bac5f4-42a9-4ee3-b8c5-1788b0a4dc57 ae8fe2cf-2f5e-463b-9251-57b9d8503a41 376e96eb-4d7c-4234-af1f-63846d7b503c 553aa30b-e787-48da-8ce6-28fa9a58f346 a361d6b4-e4d1-4e29-96bd-c963915c039f 1d128ba1-1e94-4d9d-b85c-cc82259811ee 14cbc217-18b6-424f-aff6-adeae36456a9 c2df869d-6e0e-4335-8f85-c0d9cef209d6 9982e98b-3d58-4e10-a1a6-90c65516e25a 14edce39-0465-4d4d-8f02-a6ebf6c345ae 7fbcb052-9b44-4b10-b3db-ee35f3d30203 22d12a71-d977-4695-8f03-b06da141f092 69a427c4-d307-4ba2-9b64-9033c6f9679c 1aa88d24-7e3b-4dea-b084-39fd01e2ec7c 71239f4a-8b46-4f8f-b826-b3475cf48770 0cdd04a7-1929-4cbd-a480-8f04270a6d1d 5395c18b-4385-4562-b30b-f5363c292b02 8ab22ab1-27dd-4e69-a5b2-c7c25972cc8a ca767602-11ae-4275-b3c4-d91fafd6d57d 3571a9ec-a49f-4f26-a36b-97d87839be92 d013c24e-4449-4eab-88f6-4a53556d323f e9f7dacd-d17f-4d36-b0a0-23011c51de51 95695ff2-3bff-4239-8d91-b240f92fec4d 893f3827-f000-4c1d-9a5e-d39289fcafc5 5b0e3f4b-9fc4-4796-a2d0-7eb7344927ae 006eadeb-abc5-4dd9-876c-a7cf6b3182d1 a97519b5-a06e-426a-a016-6f8186ff5c25 7bd50561-70f2-4270-bb23-684a0e04d554 810a5dd4-e6ac-4968-bd44-b5296c519348 513aec17-a9a6-4939-84ce-645e827c592e 74b242bb-cce0-49f1-a742-1c1da0f80e3e b3293792-f6ee-4711-91fc-df38c4c96aa0 201b4c35-4c8e-4da9-ad47-2745f845c114 0b4ea4cf-5a78-4410-b1e9-358b74bc469f 7e723fdc-269d-425d-83c7-8c78f99fbc02 ada51def-39ca-4b17-baaa-322fbc9a3067 4b272b10-b1de-42a9-abaf-d01bfa96820c 45341c83-16f4-4792-a755-b7a675c4512a 8fc8d050-d369-422a-a2fa-ec30b001a5ea ccee2ba3-7f31-4c39-bb0c-20b2a4958e96 bf1dd101-9013-4ea5-a539-9108262cbb1c 5ac32513-b925-46a1-92cd-f97603eb081e 471cd70a-ebc3-4abe-a46d-f7ec9ce36ac9 6f35048f-42ee-4d04-910d-d430e32373b0 d8bd2adf-4a81-4932-9b4a-f0e591121667 4c0f8070-139a-4419-9d1d-6e31d1128a48 f6fec566-fffa-4e87-8a98-4417d34c8d59 f097771e-a53f-493a-9dbf-095c562a18a2 8e01d4a7-4b5a-4cd5-b4a3-5db201043a8d 234863df-becc-4dc8-b178-a551adfe6a97 3dc5ad05-46f7-4639-9fc7-62cabf0777bc 0697ecce-99c9-478c-a5e1-f8af5810d7ec 8096dcba-1b96-4d27-ab9a-de2b733df531 878ddedb-2748-4ee1-a71d-db90f6beab92 40753f63-afbd-4951-858c-f441e41e5ca5 261b5195-4242-46c5-8ebf-71b9c2fc71cc a3b17514-9fb0-4e3f-b01d-1795ba040f93 485181a9-5c11-41ec-9edf-4fc1452e48ff 6c593b49-7cd5-47a3-92e5-7ce726ca9f15 d9d69dde-28fd-4f6d-8a63-2998f174b3b3 ee6f2678-e138-4a91-8ff2-6bf7cc68769c ac35f81d-d1cb-4925-a854-e16192136ce6 10b193b4-5644-4776-89d3-f0b1213b5dbc 9940c863-75f6-43b0-94a7-695558434868 48b99c9f-6715-4662-be09-76ccea40634d 48571aab-56db-4c83-bdef-7202f7d2e2db 1aa037d7-455c-4ae8-b7a5-d7ada61cb0b5 30ebc878-7d50-44eb-8d3c-dd8dd7d25d08 5cc17210-0018-43ba-a865-5c7314c21a21 f8a0155b-5e8f-4f46-80c8-d1b24eee7d83 f94575a8-b8e6-4aab-8aeb-26cb053f3f02 a289e12d-d97d-4f51-82c4-73fa661a5043 b24d90ce-a522-4705-8929-692d19cf6869 a333f6e4-c1ea-48c5-8688-eb1d13bce73f 822d9975-2934-4d49-a6d2-35ab3c206926 d56ab7f0-1618-4515-8db7-666516b9520a 6a255ce1-fde4-4471-9206-f41a8d3126cd e03e7f16-baa9-4181-be29-bc33d114068d 59db1ef5-1a7e-416c-bb8f-3c2abbcf286b 0b99b21b-3578-44e9-a8ef-93da936283e0 670f8156-7ca6-446c-be3e-420926aed942 f575876d-4456-42e5-87d0-bb1b530fae6b 7c699f00-b05f-410a-bc17-ffd19a696dd9 055ac47a-4477-4c8d-9767-e7ec8a9291b2 2cba03e0-69a6-48e3-b0af-e563a159a172 d4d8865d-d190-422a-8fe3-4510a43d494b e71a0d8d-94c5-4a31-a50b-e04f8243ed8d 19060457-6a6f-4552-8619-f68d29ac65e6 272fef1d-3df1-4bf6-8ff5-abd444a2064c 611e315f-7527-4ab0-9c83-fafa7b3248fb f712eaf4-755a-44a6-936f-d87d9041e79c ccd759f2-7f68-4548-ae4f-b661ffa1c960 0c77e347-ab84-4152-b46a-7d09f084d288 1842adf0-6014-4ade-9ab9-564325158dfd de58d511-289a-4fcd-be32-22a1c14bc1d0 a3940298-6e29-4176-90d5-db930a7f3491 9d8b7c2a-a810-4824-a6fd-6d23bcfc5d5d 195950fd-088b-4054-9878-1c55a5fad24d d9bb520e-5874-4930-9388-d41c81ce6629 6156dbf8-3acf-437f-ab4a-3fea052ad07b 13c8a11d-a11f-427a-a532-f5496c064134 66b7ff5d-c2b0-4aae-9d3b-3fdffa795fee a6453d29-9506-4c53-b613-958a111c4e1a c928167b-0363-4611-8749-c2ff2a4bb4ec 7e5ee635-f2ae-47e4-ba79-b003969d70c3 376d4a2f-97d2-4c3f-99a0-37779f9c1502 1a5ad0fa-adae-4d9a-9bf3-78b7a12edac4 dbea842b-31da-4761-843d-c1590f3271f4 b501789b-b3ba-4cd3-ab26-3fd76961d84f 51c2e3ec-abca-48d1-8c8e-0c69029a6dcc 24a6d926-43b3-4168-8d80-9ceebdabca2c 7dac97eb-6e9d-408d-9263-eb1d3b19cfc7 fb47df43-a045-4fb2-ab8b-420c58c2c32a 90b7eb83-9592-4b12-bf81-29a4b7291aa2 accaf645-e92e-4f6a-a934-94e7aad6276c 8c39e6cc-ff55-454c-a4eb-c93f864c7f2a 62463150-5e92-41f0-a99d-b58214752496 3dbc460d-bfc3-45d4-8d20-7723b3fed2cb 2ed23407-5555-4378-bcfd-6bbad8b81cf9 191054b5-eae1-418b-b1d0-307e2dc111ef 26849995-303f-4b8f-85d5-5569bb02ffd5 ae0d4146-57e1-49e0-a8cc-4de82ea7f005 cd6f832d-1712-47cd-a2c7-0e9156449359 97292d95-6128-424f-a828-76f077165d96 88edf8f6-3f67-400b-a2f4-9c14dca0ef2f f4b96f91-0eb9-4170-a86e-af3059d48d87 f7602bdf-9765-4638-9c3a-2a29198f2ff6 0a57501b-8532-4ff6-975c-99f13fdaa204 25649ae7-77b1-4e21-80b1-24c637eb099f d1075685-532a-48c3-9b7d-0d4a91f0b739 cbd807d7-9c83-4884-b7ab-20af7b650173 6e765380-a1bf-4cb5-ad7d-a4e8ac95b196 1908ce71-c3ce-412d-9540-11da49307c46 90557e93-3868-4aea-a1f1-a7352ad92ef9 b73b35dd-465d-41c3-aa68-ffdf9fa5b9ca 571c0e49-2a7a-4904-8ef5-329a922083e3 031f6398-f981-4177-9233-1a949a000557 0e95bce2-feec-4c87-a531-bdd48c5f301e afb1762f-932a-4222-baa2-d9145fe33c13 74093151-603a-4894-a378-4f60c65f8ddd 2c98e60d-f6b0-48da-8a24-61a9d0323a58 366543a0-c144-45e8-90e8-77d8663af8b3 52563679-9960-44d3-850a-834ba5414d0c e9e8f69b-d15b-4641-a86c-4f3829eb75f1 c0aa7a8b-24ac-4b88-9118-4c41f0971e8a 96d3551a-5ef4-4123-9d48-2686f2f5b676 3f51a6fa-fe27-402a-9b1d-aefd80022230 405ce4da-21e2-4029-89b1-81ef0c8bf5e5 5b1f2824-6fc9-4cc2-98c7-138e31306dee f835467d-c942-4318-b660-ce945c8111e5 8b77779d-c030-454c-b2d8-d5de51f370ed bf368dad-a2be-4651-aaf9-f65ce43acee0 98330d26-6b60-4cbb-b7d8-86a3fa039d10 7a5da91c-afec-499b-ad0e-1f653f9943d9 05030974-ccbb-47b3-b1ac-43b973d333b6 c71a73a7-cce9-4cc8-a27d-2cd79e6c45c1 5b539c01-e043-432f-a417-ffe14fd75e4e 4ee730be-1fce-44e6-a4d2-da6832c3f62d e215708b-8876-4c29-abd8-91ac8dc26d49 a9c72f52-a3d7-488b-aee9-3d8de1d97db6 9e25c402-8224-40e3-90ef-2510bed50f51 397bd57f-1d49-41f6-a759-5b58883afc6e e42a648f-d336-45de-bb0a-10481af658d6 de053679-2a42-4bdf-9b98-ca06f9471c37 9dbc4761-ee57-4bfd-86c3-14edbbffca99 2d12c803-a473-4f9b-85e1-ff95b60d0f2f 7e648942-1f10-4058-8a79-5f85654de5b5 76ec056b-a4a1-43bc-a567-90b34118d062 f992d535-f1c6-4485-ae60-a5e1fc87e26f 70ddbf37-6376-4ccf-8346-6d118ee97e35 0eb26668-30f8-47e2-b463-a3e207dcf182 d1df493d-a6c7-4f6c-9ada-96472a7549b9 4361bf95-3e57-4e7f-a373-f37a8e3f78cf 5b82cc3c-567a-45b6-bd99-ac99ea4c7a4e 0ee797f8-8367-407f-8d24-b405abb93dbb cac0242b-e63e-4b89-bbe7-ca6dde2a2c31 c4d5edb2-8493-4a94-8e1d-13b0b5f1f1a8 4654615c-7ea9-4fd5-982d-2dd298ff0e4c 955bca75-71d4-4ff7-bf40-bf9c4926660e 1d7c5810-6924-4cd4-b29f-5349483f150a 5e783842-46ac-4fed-a2a2-31fe3b78a6a3 55529e70-7b86-4f9c-a833-5b89765f0e36 5e532028-5e50-4a45-90b5-cd9ae93ee2b0 3579b8f3-f693-491f-84fb-e657b9c70b9f 821de71c-f359-43ec-a34b-40507fce51de 141453b2-67a4-4d41-9df8-8d7176581500 b025f945-d921-4823-895e-544390f7f25b ebb1c5ba-36bc-4835-9353-f811be33c237 c101ffb3-15cd-465f-a37f-4493f31d40db fa898dae-3370-44e3-891a-04de4499f46d e6eee578-1cc9-4c3a-b0d6-ee0b5c6007c1 d334042d-9860-4bcd-bd43-faa459ee44a0 2a1d4f23-1778-4ec1-922e-85cb9d910dd9 67921dfc-5933-4a38-a3ed-1028623ce351 8f7f74b3-0153-42e0-bc35-a30bddd651f5 27014313-c740-4092-8c7a-3c0044665c47 bef200a3-ff43-4c91-bfe4-ca35d8ff3f99 fc273225-52ab-4546-85ce-13cce8a70de9 e7761f05-d16e-4890-8c43-f42422c7250d 7a2c329e-1778-425e-b34e-0016b0031832 6d28e6c6-e87f-4ed9-8a6f-99438974721e 292b5a73-1527-480f-a913-7af3b3c35e61 98fbfd1a-b157-4fa6-8a6f-3181b5786ded fd8a7be1-860d-419d-aee5-93cd6c4247a9 449d5c10-12a0-483d-bd20-a67c3fe2d50b 3b3ff524-3fdb-4fa2-8f14-4af850d02693 0c3ab510-93cb-44ed-acd9-f6f6e2d6e0f7 690e93ea-7517-4359-ae77-f3de6e428b22 aa9ab253-e1a5-4463-83e4-05898839b7c5 6d92e421-e6f8-442b-8a72-4bc356a7a6b6 2f516223-273d-4fe7-ad4c-e9f0eec8293e 5b318c7a-2249-49d4-8064-cb07bd28cb57 e661dbdd-8f3a-4e82-b374-247699f0863a ce01cd81-89c1-4186-aa3c-1190e4319139 1b9a2dae-4d8e-4381-b598-db105ee24baa 2fc78dbd-70a8-4ad9-8034-cafb793d7306 df65a6db-1d02-4b37-8554-89104b23c5b8 312b820c-1b3c-4304-8bf7-ee13cbe59773 434032b4-82d9-4f9b-857d-8912733de7b0 dec0d26a-6e82-4c0a-9ee3-b442dc5caf1d cbd96eed-f3bd-460f-b05b-54f0681f97ab 0c797291-4e6d-47bb-8516-942cbaccbe89 8024eacb-fc57-4d16-ae51-ad8a5636257a 97953bcd-9bf0-4195-a45b-f983c4c2f083 db79de8b-f6dd-4872-9abd-7b5b6562c16c 563fa26e-4c06-4a1b-ad63-dd8fac7e14d3 be2b42c5-f3a2-422f-8655-0ea16fc46161 8e5c57f9-021b-41cc-a24d-c969f4d2d069 64a07da3-d93a-4589-8890-dc8f577221a0 50e953a3-771f-4537-ac89-c3916e3fa6f0 d98d4f11-3301-4a5c-b754-32deba56f228 50f95b3b-75ce-400e-b76d-18c64dd982b8 6f791c5c-d59d-4267-9589-ebefa1a3ac9d 68ca23ce-da7a-4c4a-a944-4115ee15a2f0 d4e869e0-3f3a-4302-a034-9dd8b21c24db d73f34a6-7141-4c54-b533-129aa08e11ba 838b3b27-f553-46eb-8f16-08e4bad0c3dc 247d441e-3e76-456f-bf19-02e3ce48d626 01dbb49f-bd17-48e9-a525-60c7969f1b99 96c0605b-ae9d-4c64-a9f0-5e3d0887c0f0 1fa15f23-6d66-495f-a825-eb551f6bae11 8c6e5c32-5b50-40b0-9910-3ffaa2a5fa09 a5f504cd-0a85-481a-9cd1-f41425e70008 fe794b5c-4dde-4736-9405-2f53f9fda675 e1de54e8-c81a-41e9-8e4d-3d26665070ea a7a8dc73-897e-4083-992a-71c649c004b5 64d2cf9c-e9c7-4685-90fc-9a7d97aec12f 1baaa7d5-b9b5-4881-b488-d8e355fba946 a40fb070-2bb8-45c4-91c5-075121b6a19a 8952eed7-3264-4672-a7fc-d188c80e337a cdaa4cb3-8b26-4c27-8144-4cb38ca66a46 d96e62b0-91d4-44b9-a819-4be9469c1575 bd5a24b1-6855-4cb8-9e61-edc82b90e3a2 cb055d1a-d4e7-4ee4-aca9-9fec6b39a6f1 8ac63c7e-597c-48e4-b2b1-7a3f934413b3 06551432-35b5-4d63-8b22-02c905fc638a d68a396f-0888-4046-b685-8c8676bba9f5 c5a0c3ba-6f28-4e98-9639-2e1142fe94bc fa3e4f27-608a-45e8-8e39-dfd431bff2f1 046625d2-bcd6-4f06-aea6-d2eada4b3644 15193452-432a-4fd8-a93d-3bdd29c9b63f 17a4020c-aa7a-4aed-89f9-64b76bfcfe1e e1c87098-9940-44ac-92d7-70f0bbcd059f 59592cd2-3cec-4377-8f9c-93ccf080263b eb390a57-bdc5-4a99-a25d-44c0c22e82bb e8745fc9-51ef-4525-9d1e-d56e8a8fa441 aa93f781-fe3e-4c48-84b7-850314b169da 5890a131-65d0-404b-b992-c88300074dd7 f5ee9c5b-59d3-4398-98fa-53e8b96399c2 b4997ea3-7bef-46fc-b859-5e7b795e6c18 8f2c5bff-98f0-49ad-9b93-dbc14eeecbbf 59b1a0e7-646b-4092-be4a-b87fd30a19ae fca38075-234f-40f5-9567-38b79eba74f5 f11c93c4-7139-432d-be90-f553f74d78d4 6332652f-eca9-42ec-a7bd-cd111d375ad2 aaa167f2-4a6f-4987-8f05-350dcccb7c75 770e947f-0964-46fb-8eac-da7de5756a33 1977838b-e6bc-4850-80d0-a01ff633acaa 25554bae-6e61-4dd9-bd88-25148f5e0a5a 72f38060-a21d-4ee3-9df9-3aaacf8d2b19 ab963dbb-eded-4962-a634-7440277ffbb7 df11513c-3ccc-46ce-abc4-bdaf5e7462dd dbab3ac5-a566-4b36-9bd9-3582cb104df5 ccbe9c47-026f-48b4-87bf-cb2030c0c7ee a22e6f53-7ca4-4bc4-bac0-a568089f5b66 554f48e2-fcc0-44e6-980e-afcf38c9196c c5db36e2-d1b0-4b16-a765-a2326b55096b c3f9cfb2-2e6d-458e-a36d-97007a011fea 3a904bbe-1154-40dc-8094-7ddbf61c23b4 2f2c68ab-d01c-4848-b5bc-c1a2a6ed06ac f12ac1b7-321d-47a9-b372-f38b22bce178 5d46abaa-de14-4a7c-a5c3-3901dd99c773 f0bdef44-939d-4a4b-aa8e-b129ff86c443 599ccf9a-64c4-4e93-aa4a-210ea25f6abf c167d969-89d6-4e4f-8d76-494061aee68e 516bc497-dae9-462e-9230-2ae9c3eb7c49 1fd3ed02-c68a-4117-a4fa-521bfd548f06 7f7e39bf-f450-4fe1-a714-0abb48b6e78b 0a2a3613-11cf-4a08-bd82-362d2a96e404 b831b9fe-93c1-4752-9dcf-04bfbf23ad71 eff93baf-aa61-44c3-aa27-a3384d29498d 86c9207b-6e3f-4035-9552-b4aa082728e0 f70e0f4e-b700-4e12-99c9-9ef18e54b327 dd9125e0-0444-4fe8-8680-bb605b2a42af 5439fac8-7284-4ba4-a642-1eea57d6099f d59b2387-6289-45de-8372-708901d10756 04d96c92-820a-45b4-9dac-473cf7c95b1d 0b4e0727-a82f-41fc-8e69-0248b3e5b1b7 7396ea09-4e7e-44b4-af6f-df6c260e2854 b64ca445-58c5-41de-97c0-9d1c77bb5c6e 62de3af1-33b4-4379-ab54-0a7fdff1c958 35341fb5-5ae4-4bf0-b3ae-6e9fb83f087e 56026078-95fc-4fc9-8e8d-2edbba105572 a26da972-7eed-4449-936a-5b7fce3d69c5 0425086e-9959-41e5-8c68-0b072abccc97 0249a3b0-e3f2-4f2b-959a-93d1a899628c 4cd007a2-90bf-4f8b-b9fe-42e6be6b4c31 1cf7e95c-dc84-4ba8-abbf-c2a85797a7ef 2c5ed9f5-58d3-43f3-a277-67c8ed300c19 68e60485-fc1d-450d-b584-d404422443af f2b607ea-9349-48dd-af1c-8f5d5d96967e e89fb3f2-ca30-483d-afe0-5e63b7f85e96 131faf1e-d934-4c83-b531-5a67404a9d5c f8cb1526-70a4-40f4-b425-bc458eeced85 1f1b3a27-a04d-4b1c-b55e-42f9e0abde56 dee71751-ba36-4f62-9769-7ecd129dadb8 762bef91-9527-4129-b85e-1a2f9048a57b b07c81a7-d786-4a04-b2a0-e99d63a33dfc 7f2fbd17-006b-4f56-a679-1456b9df862b c7ed6df9-0bab-4a87-b975-c2547f99d771 0d18beb3-fda8-401a-a32c-ac69feb494d9 b096750a-0018-4631-985c-24d2ec9350a6 0f7ed64c-032a-4f86-857f-5f2c33a69870 20c0d698-52ad-458a-8d39-b9a32ea0cb10 71be81a4-94bb-4987-863f-b1116bb4c662 a376e02a-cc8a-4968-b8c8-9f42e160669c b5aa3a06-037d-4ceb-a838-16d91dd73ce6 91e787f9-5158-46eb-b0aa-7aef648e055a 3b3be98f-b649-48e0-8485-c4549cd14158 d86f56b3-7e5b-495e-a112-869977be20ce 3fa02752-1e30-4975-bdc6-77e1c45755fc 58caa99d-a7a1-44fb-8faa-3fa3b3436a4d 28d11021-db9b-4a24-a76b-bb08dfe181d0 21576faa-5334-469d-a0db-19b88af0e6aa 22248090-3106-4b01-8bb8-dc4146c48881 1e925617-4542-4c1f-9253-7a3270e07383 72dae6df-44f2-46cd-b7bc-add1bfd53580 5c7b312e-2315-477e-8b07-641a4c624857 baf97998-e952-47de-8e7f-01ce1d91a6de eae22db6-dc92-4551-ba44-b56d836ad343 9b11b9a3-5fef-4743-9349-3963884313cc 88fcdbda-753a-4c9a-8e38-7c242b3f07ac e11a71e8-b40b-48ee-934f-1b6564dbb46a 60810b24-76a1-4938-bbaf-816997e00f2d 776626e9-2819-4383-80b3-e38b897a362e 2e509e1b-f0ec-45f8-9009-509a3f281e26 35cbf74d-6bba-4c70-bcef-c3761cd6d201 6d69f67c-bf68-4d95-986c-62695bbbfd37 681149b5-4f4b-4839-bf31-18ec486c8e26 1aaba319-0d03-4b70-b52e-7077eb841d12 95fc6ea0-d38a-4bd6-8b06-84a326d32e90 082635bd-8993-49d3-b5c4-fd5359364d8b 0d1f782e-1b69-4893-af26-2a867eac8568 326e0ff1-8018-44e1-a26f-36d375d595b2 cc860588-ae8e-46d6-841e-ffa55fefe4a3 2cd91111-beb5-48f8-9a0b-2236ffe0f476 601ae895-e5c1-4106-a8d2-b7998065964f 27719749-ff37-4202-b3aa-3c90faab6a8d ab602921-7bcb-40fe-9321-226d314a1a28 8d60a049-494b-427c-8243-b870ce822d31 9c4a21f1-6b20-4c27-860b-35ef74bd25ee 7c3ff4d3-01d8-4d4a-b3dc-8404571038ec daa98e5c-dac3-4f34-b628-d65a60c9825b 1fc836ca-4d70-45ca-ab6b-78117ab70e18 3f4a3f62-cce2-481f-916b-4fe1180811dd 196f8ab4-89ba-47eb-a974-3e9b4e60581a ede9df5f-215c-4dcf-906e-180bba3a6894 88582e6d-8497-41ae-a78c-5c9000853b9f 74b13530-05a8-4373-960c-9183193261cf 47474445-3d6d-4661-9246-e0f25b0deb97 d2956f9d-1ce1-45b4-a12f-2a8e83283cef 8137cfa2-3281-44ef-998f-087a72a5b6a6 acf872c7-2a23-4583-a117-f921bfc4d101 1ca2a7ad-945d-4133-ab9c-185220c445bc c7960943-19d0-47bf-b553-937ce8cd66bd 1672631c-0c84-45f0-9215-98def96a833c 5c52e497-b809-410b-b80b-f754d2d8d04b 642ea543-2e01-45c1-bba4-8d9c3e60c5ac cdeb61bc-0561-49d9-8b0a-a853ea918f07 34a218f9-b155-4ed0-8c90-6221f358d0c2 173c9629-1bbe-428b-84f7-6aa95575bebf dedadf7a-0ae3-4c8b-844a-bd02b0438647 fc8a9b44-b973-47bc-9a83-6ec3a80ac963 5fd89c48-81ff-4fe5-8131-16d0f79d19c4 dd0355b3-6301-4030-bd5e-3cae1d0bdbc7 6224ea1e-b382-46e8-84e3-e0a6f030156d 2ff257b2-c258-41fa-994e-1a946bae4893 6e316df3-3192-474d-be31-106b7b187327 9486c418-f065-4933-98cc-de046041c10b 336c76e7-757d-45f2-ad66-ba429faf1f72 8a18eea4-d4c5-49e0-a7af-c34563520297 9804f76c-f476-49c4-bd32-68b234c263a4 eb3f1b98-82ae-4a01-a53c-e1f5313c6959 feda0ae9-e85a-4474-92f5-2b922deab969 eef1e43b-ac36-4dd5-bf73-8307d5334fa9 596ddd5d-edf7-444c-841d-9285540caf0c 48b3336a-ad47-4cd8-ba75-116f58013e94 be85885c-56d7-4eae-842a-93184f23d01c f45340b4-ae30-4da0-ae7d-b1554a5a24ed 47be9023-45e9-4553-b9a7-5b7bf2714fb9 df69803a-a3b8-480d-96dc-15fc20cf90f2 12f5fca4-51c0-46a4-b423-1b2073592113 785d1626-2328-456c-b48b-22018f85dc54 53a7a157-8123-4c6f-a4a2-2a1777d5bd2d b6742d6d-9b1b-43a4-a250-0f6e40ffe49d d40cd808-d88d-47b9-8805-04281602de79 3c7de623-ae8c-4294-a5d0-33ee83684496 f0069a01-7be5-43bb-adfe-a94315805c66 bf995061-2272-42bb-afd1-892da7e49358 fd201e5b-3439-46c3-9559-eea6f5715cb6 26ea4654-80e6-4bcc-aea4-5f33335d99f7 88a2e636-7736-4456-8db1-9278f957d013 a8acc17b-ea62-407e-8dae-db8358790c7d 62ee33cd-59fe-4ff4-ae51-1463615b6463 05748a7d-770d-4de8-9918-df10d1554a26 958bd9de-6759-47fa-ac10-e1e3de33e49a 12c8b510-a3b2-4a3c-9541-a1f595d89faa 217d52a9-fba9-4bf1-aeb1-f9b82f2996f9 a6645de2-cad0-4ce4-b8de-b721bb357002 829ccd7b-d2a5-474c-b89b-848b92cabb01 88365aef-7312-4020-936b-763611520551 d0f81181-0c03-4aa0-a4d8-85a4250baa4e ba447d9d-3dc6-4187-9fba-3de923454dfb 2fb7d0f1-a835-42fc-9347-0b356f4b16da 4b0873b4-4acb-4bae-845a-4ae6ed81cb3f 50218195-6635-495e-ae77-498e67708687 36db561d-68e5-4b86-8cdf-8f2ae37956d3 c8565ef1-5d32-43ca-8095-56d7e2948268 1dc6527b-8830-4b38-961e-619389f6683d 35a80c0b-dcb3-489d-a0f0-e5be3994c963 676fee02-6354-480c-839d-c7b5a6a7a0f5 a7532d3d-2bf5-4713-a4c9-3bc41f8d7a62 262c8fdb-2d98-4339-ad32-176528c9fc6e e8612f37-8db4-4d67-86f5-a9468c9c9a77 98b480f6-7575-48b0-b577-1c89a76bd58a 1a0ed4df-71f2-4412-ae4b-005fb84a0ecf f2ab4d37-5556-4674-923a-8a1b68740e21 f7486921-73be-4104-9e2e-a8073b56f6b0 1b685691-30ee-4756-9032-9f14ba0972a2 eff957fd-6b35-4d8b-8f35-51722050f9d4 2e7d117f-d51f-437c-a751-6c73ac4cd2c8 8f0442a2-c36f-4c38-aa42-c4e2e88f37ec be7d8dc6-74d3-4316-ad26-0c5a25003980 ffdba29b-7e3b-4994-bace-27ed634b9863 9bd86b96-26ab-4ef7-8156-33d6a514918a 1afa270f-9d7d-4233-9f70-26412e95c73e 57e903f7-1a12-408d-ad11-c787622a0a5f e8fe0f7d-efb6-476b-9efd-6adeb891f606 be4e2064-a277-4cf7-99f0-1cdf47057e31 a0524434-751d-4284-bc4b-be67774760f2 da0d278d-e56c-452f-a8cb-813a41e832b2 8ef78f10-f9b3-4e21-a364-a883a37dd221 464c89e2-5965-45ea-904f-fa4b1b8a139a eba1214d-c064-49a1-9833-8edf89fccbba a9a81174-1855-4b8f-b8ce-2446fde61298 b11dd6a5-6a02-4b22-8840-2c8f178fec19 64e032f1-97af-439a-9d50-c7ecde5bb47c 1ebf9440-7175-4e13-a633-84621457e91d c69e3619-fa4e-45ef-b707-c2f62a9afb06 8f7a0bb1-5708-4bdd-8550-b8d068d588bf 0af7b424-ba8c-481d-a64f-e262135c3bbd e2b5d83e-9c32-4592-b85d-174b6b898502 d16ed463-a8d4-494a-b9af-054b21e0ca39 dedb8f71-feaf-4cf3-9204-4273c7496376 fa8d056a-67e8-4b1a-8ca9-64a13c1eb1e5 22823d03-8491-429d-8e81-370e0e31a217 248f7879-139f-4627-8e17-86414683e59c b93f3c80-92f7-494f-b5d3-894b04942903 f1291c0f-fc49-4f72-9162-9ce4d4c828d2 d75ad924-8d0b-4643-be42-6448ac14e1dd 09e0fe11-18e1-4c0e-ba7f-a39b61d13798 00dde099-8324-49f2-b585-645193e56592 d363257c-7c4b-4155-8783-a3b5570e877d 4c41fe79-a424-498c-b909-ce594939ae6a 7a3389bc-f563-4988-9a49-0a176bf6b86a 6b95d633-67ff-4455-a3ea-6d96b6f5b11a 81172029-da2c-40dd-a7bd-baf71a1c9c3d f2c47699-dd9d-4eff-adc1-056994dc3bd1 811fd277-f44a-40d1-ab52-cff4957b25b6 97f52cfe-3c60-4104-9ff7-16a83169e06a 9b9fd4ff-a7f1-46d3-9928-aa4754237488 744573c0-ee5c-4933-87ea-e210bd11f304 1830c72c-4147-4320-991d-be96de8d0c79 25a604ef-339e-46bc-b1ee-53752fd44e8f 86cb595e-3950-4159-ad68-d388768ec8b1 de7a9685-00fb-47cf-982c-fe0ccf03122c 2c896620-b0dd-4944-9176-451475db686e 4c472956-1234-42a8-adac-561a944a68ae 83f62384-f8d8-4270-b7a5-16bdb4770d6a ec73b4ca-4160-45ab-bb11-619d17ab327a 4958c037-ffd1-4f7e-b5f9-7a27fcfa06b7 e2f0fb2b-91fe-48bb-84c5-bf5e790eb620 24dac860-27ca-4250-b222-fe028c1ceadc 75649c61-eff1-419f-a5dc-b138e3d9ab5b 651e2e78-7d12-462b-b915-cd747f583f7f da754565-1bbd-41c7-8ec7-34b64c515bdf 91021df3-bf7e-4af4-891f-e756bc000f7f a9540920-6193-4b69-a90b-c42cfc2434cf a406e0e9-54c6-42b4-81cf-ba105d99bf2e ce007b04-3693-4331-aa33-8e0d7bb9b9ef 3572dc4f-c5a2-475b-8164-263c86ef62bd fc0b685b-e114-4ee7-9bf9-8a60cc028ff5 2c2a488e-e1f8-4158-a5a7-23f1a1cb1f68 64a755f2-39ac-4840-b5c0-07b1ae6e107d 5488bfa2-432a-407e-8be3-760353261608 66a01451-da27-4c39-9495-9f3c0fea4b6e 21dbe85e-2723-4e05-8065-42738daca9b6 76571073-7fe4-434d-83de-fe7f4dcf84db 58edbfb8-c000-4cec-af57-914885f91a66 7ec7efca-b544-4797-888c-52a03110b4f1 f2bd2d7f-ffe3-48ab-8e02-b0e39bf77db7 9210dd31-c246-4a09-8f0e-d976a9fa3b75 badea1e4-8f3d-4ec3-92b5-04ca13498a82 05e52d55-9791-497f-8b15-104d02952345 ffcf9530-7426-43d0-9030-8bcbac0ec439 44c6c9ae-01d8-413f-966e-3f88c40b1aa6 808995cc-2489-48d9-ac67-55f27e552b09 723a2c2b-51d3-4168-b30f-713130b2607b 8a7590f2-c078-4a18-8393-9cfcea9b23de 024f38d1-44b3-46e2-a34c-2d2def4d5182 7a1d2d69-9b0a-4c1b-8e70-8372aa7ba87b b7e75d34-9b3d-4534-aff6-36821865ef63 357fcfaf-a272-4c79-b01e-467fc60109a5 0aa9c97a-abc3-4144-9748-8821354d23ea 8318c7c9-999c-42e1-a4d7-ccf96fc396e5 f3a30a5d-04d6-4071-bb79-6e9a161dc7cd fea51a9f-43a7-43a1-b042-b88a616b2c4c c0ec9f85-ffe6-411c-a29f-e7af8bfc07c1 4a684570-57c0-46ab-995d-4ab6eb45e652 1d064610-77af-4f1c-86f4-cfdb3866745c ce132f4a-1192-47b5-b288-fe8f2bb456c0 833003bd-94e8-4ae3-b350-85deabf3fc85 111c68b9-c967-4164-93fe-117d54dc673e f7bdfe68-5593-4a2f-9206-5ba0cd002069 e202b3fc-f7d0-4798-aa0b-9cbc1f597016 128aca77-58e1-4831-9fa4-6eb272c42c0a 746bbe71-6d49-4c20-a103-27fa4c93fad9 1285989f-a313-4d63-8936-18c815379535 1f6a596c-425a-42b7-b846-f08b75062814 fef288ca-98d9-443f-ab3d-f97bd6d4b1db 73de3ece-3bc9-4657-b41c-9b28f59675c3 fe8dfe71-fd4f-4316-890e-4a93f2f2f43a 0f117fe5-a4fd-4377-924f-0f1ef470760e c924f368-65c0-4b8b-8a44-41c44a00a299 1d11c0a8-9159-4565-a313-b975574ede7b c4b84055-2475-4fb7-965a-b2df7f34c788 996c908e-6c77-444a-8177-30cd4bed863e 87b5f50f-5b52-4939-a123-8e8ba6576104 cdc800e0-2d18-4a41-91fc-324d24441d4e 7600462f-5b61-40e5-983a-df911dcf5c71 ebed7cd9-2001-4142-b8bd-3691e2561efd 099b5b73-8192-45ca-ab09-99d8df036d72 e3a49d98-02d6-4afc-88f0-b1389d4e8930 aaac3ffb-cf83-4f08-9073-e2e04a725c82 ebcf2921-32b2-4994-a04c-b85889a0feb8 bdd6396c-4ddb-4e41-a320-1119e2bcdf0b 675174e0-26ff-494e-a012-8822022cb3d9 622c7050-2514-443f-852b-2a82ef10d0b9 3527c384-81f1-4a7b-814c-eeae864396bc cd738b0a-0303-47cc-855f-e5ae4300c428 4efcee80-610f-4bf5-83b7-f72eb3863e98 c6e96820-484a-4085-8a4e-7e5a436f0217 5f25c2b9-f7ca-4df7-a5d6-7cb0c11a7129 30019cfb-5bbf-4b7d-822c-5cfdfb179dc7 7c2a6bc6-0875-40cf-bd01-bb5c784b2170 5994f408-cada-46c2-90d3-946939d528e5 468d7ddf-1098-4afd-9767-147e36ccce24 48cc7c3c-3f0b-4e7f-824a-4ac9c77b3218 89f7e77f-9d5b-4e8f-830c-9fa02daa7a43 b42f5ead-678e-4a4e-b795-aba927df5872 10deb493-abd5-4e11-992f-2dcd2d06c77f 30cc2fee-48a9-497f-bd60-469caabed68c 90ac3b19-0736-4631-9617-83e54956d0e1 cfc268b9-7648-41aa-a80d-c1dd56ede5ca 37c6697f-0d75-4dee-a83b-5b6ef977e5d2 dc2cb39a-4f44-4634-81df-3591e5b81fb4 8c417ef9-e9b2-4345-9f1f-ddc8123fc688 64e7a7a7-7831-4b70-8b75-27071714fb1f 94a7650b-0b3b-47b4-92df-988b59b6f5bb 708b27b6-27c4-45c7-b056-c147ce2adfaa 2cfdca37-312b-4f1f-8d09-d109c870aac2 5e4c4c62-95fa-47da-9178-dc4e248988a8 430cea96-78f2-4467-afcb-4c6696625fbe c4aac263-c2d1-4bc8-9977-6e915f521da3 3aa6d786-ecb9-4af6-8ff5-fcf5a4ebc557 093250c1-7c43-4a03-8bea-37d17ec070e5 db41dc16-313e-4cbe-8ba0-80fbd6e2eda9 2f1faa0b-c16b-4c83-8012-df76baf1e0f0 a0f7f695-38e5-4bc7-82f1-12571139da7b ee13b5fa-9e8a-4525-8f01-f9a89f60233d 7993a339-e7c4-4ab8-8141-c24337c39ed0 66b3817d-e37d-4df9-a83e-ac06b5c36105 aade1bf8-c1b2-4344-8cc6-1a4cdeb36d2b 1b8690d5-aca5-4b73-9db3-11b6066403a5 35073d3d-b0dd-4a9f-8ec9-174e344e4fee b48d5805-df1b-4d1f-abec-f550ce9ef164 02024392-8520-456f-85d8-5b1523230a07 8947810e-2a10-410f-9b85-c5cacd5ff7bd 4c1fa3c1-9adf-4e75-9502-f8bb158902ca cf7eb93c-aebf-4fa0-b683-4e28654cdeaa 54fe128c-9941-400d-829b-e0526cc3b503 f98353a0-92bb-4a1c-8661-79deec3225d5 087f07a3-55d3-4e92-8ecf-950a1930dbc5 f8e10808-8bf4-4e4d-9a5e-f2ea76ced1b6 331ea768-9961-4353-9b69-d97b95774f37 92550c46-61da-4d39-b991-2474133e1fa7 72bfcbca-be4d-4da3-9255-092edab39bde 6848b5f1-591b-4476-9841-14f097c19f0f 687bc7cb-ccfe-46af-9337-98c5246a0a1a 68c38e3d-6590-4bcf-ae99-87029d645d0b ae4f4482-e048-4e79-afff-3a9cfa8acc30 0305e03c-de23-4692-b1b4-4ebfa33b54f0 3e56004c-04b6-44d1-88b4-9589ca28a0e6 d5c2406d-7e10-4b2d-85c7-3313d55ce5e4 32bbd71c-136d-4785-a199-1f5733c4a2f5 8bd899fb-2a67-4ab6-b427-5aa7ef380e02 c09c2423-a75d-4781-b7fe-6d0a45f0083b 0bf21575-ebc1-4604-9f27-824a10bc078a e5fd4d71-4214-4bfb-8a01-2cd54c60c6b8 92173c40-12b2-4b91-afb9-3f4d5beecf2f 6f6b2ff6-6365-4875-9572-14db26b6686d 91c3dcff-8247-45cb-bb67-21ab47a9ecd4 8c6b43d1-7e0f-419c-8e99-d545250cecf9 336695e9-a149-47e2-a225-c48d2708b98d 85023a74-83d5-42e6-9366-2e23d811427d 7bc3ce2d-b870-4ad1-ae1e-d52a67a56904 5345b5eb-6749-4246-8b6c-8c51cdca6e22 a9543ff2-2105-4b06-8835-82203edf448a 802d7026-a0af-4621-83fa-002bca973502 9c8bdcc9-981e-484e-8000-4d186f498354 3bca4810-dc24-44d7-8b64-2f60af397103 96715c8d-1652-4807-ad4e-329839c43ce9 211d3f4d-bc52-41b0-b2f2-ca596808d054 bd6b71fc-5c1a-444d-af32-cd55d67c2b54 77e96755-b2a7-4170-b26c-615c6572da9d d508670d-997c-4dfb-86d4-718c18e6486b 9657126c-c9ad-4fc1-b319-80eaf7e53ccf 371dfd8a-7b53-4fad-9c4e-caa6ccb30f7c a1564f6c-d449-4cbb-8143-79dc736120df 6e41fc37-53be-4bca-a842-0bfde8e71d6d 359135e8-64f8-4332-a699-0e5d4b121d26 0f3ffcaf-d056-4125-ad6b-dbea59653819 5bf0f31a-203b-40cc-a69e-98222fe8c1d2 bdad2c4e-2b8a-437e-8583-d10f606de489 7f70bebb-af7b-4ad4-9efa-dc50b1ab3183 860cb347-5ed1-42ff-8f95-143f5c5cb4c5 c05a38ca-1962-419a-b605-4aa12d76c8da b5520bb2-90cc-49db-a031-a2473d09fe56 675e6f2b-ea68-4ce0-8f05-022a449617bb a5aac418-61c3-4072-aab9-9ed616e7928c 1bf27e53-31b7-4c98-9ed7-13d4a987bf19 a27d5018-08f2-437b-9aa9-40ad82ef3f60 897f476d-2e3e-4447-a371-59e142cd0429 4f20ba7f-6a00-441e-b473-692400f0b5e6 5b18f83d-c817-446d-82ba-d9e76ce211a5 43cc22b9-6c5e-4468-8ce5-ea6020c65f94 56ab17d2-db63-4bba-abc3-2269e4675fa3 0024af42-792c-4988-8cab-aba05339836a d4e505d6-e258-403a-8936-478788ee70ea f44895e0-fe7f-4b3e-bbae-4a1159ffb29e ec2ac11b-ac16-404c-af67-17db01755bfe 42e796c7-67f5-49e7-ba10-7e78851cdb0d b3e89208-3e7b-46b6-acb5-46d333b6738d a1474332-981a-4532-a355-78bc7114fee2 b65576d4-730e-4dd5-a968-5089d890d3b7 f8d9c975-ebf2-41eb-b0a8-062ef76959eb d55f7674-7cb7-4a88-9512-5c01f90cfdb9 66fcc128-8b10-4fd8-9401-c85645019cea f6d43663-983f-46d0-baad-f6558d8e9d6e fc7d6ee5-0040-41d5-b007-2c9e46bbca88 f5d0462b-e598-42b3-8bb1-ec72b98563f2 9a8bd310-e6ff-4725-bc04-d7f1531c9085 c6555bad-2ecb-4940-a2ac-b192f1eaacf5 cfc8da93-9353-42ff-9cc2-0d0d2376ba13 12216d90-854f-4955-9464-11596031088a b756edce-dfa9-4b9c-813e-b7183a70af6f c56517e6-9ff6-4ac7-b9a0-893f218acc1f ea66cc0d-9117-4286-8e3c-011a02247693 be147ecb-6099-4e33-afcc-f331496fe1ed 65b19e51-c717-42ac-9cbd-7d0cd8aa3198 cf61307f-fef0-42cd-8bd4-3c8762d0af3d edf38fbe-5eb3-4604-b6be-c02524e22b1a 933a541c-a24e-4691-af8e-c7441101af02 0e2f3ee2-42fe-4cd8-9048-3f4681d092a2 ca406bd0-06b1-4b20-8462-68bee0e653c5 d71edcb7-90e9-4a13-9b2e-93c7a44a02c2 12fc6a30-0f3f-4d93-9e8b-873f27d2d5ed 04b10360-cfdd-4b36-b782-a22be6f38956 84a8a460-8bf8-494c-b3af-8e4d0ff0fad1 6a3fe33a-d5e9-402c-bcd4-e75e45d3727e 4f857253-f373-42b3-8fb1-f72f87459c22 74448b87-f570-496e-9c1a-95a82693fdce 3bb9fb17-6cad-4dd4-bf72-de9ddf39fe2d d38e1c9b-f275-459c-b9ee-8e23ea54a923 dd8ca874-2f8c-415e-a046-6598de8c5913 c26f9917-eade-4a4e-8af5-6b589c7de476 f0f6b619-6cbe-4186-8377-541281e7365a 0c3872c6-1299-4169-863f-355db380482a f54802a2-bd9b-4530-a590-237d3e84b54a 57666ee6-0715-4237-a9fb-e9994e3aae6e d2ba4f32-1ec1-4528-81bd-7e0fd7d8ba1e 44a1f4fb-cab2-4a70-85a6-78263112a2d7 3ffe7a43-2c6d-4951-ac69-3747a433c876 caf4736d-3142-45ef-9498-19623edc77fc 89f7e4af-519d-4814-90f6-0c545495c64d 589b0098-0257-4fe6-a4e0-b2fd12dd4a1f be8abc66-6cc2-4ead-abf8-5043ef02e8eb a71708f9-c568-4a5b-b3c7-51ffcfe4bff8 e431e569-6de3-4810-a289-aff7163fda90 09832eaa-de0d-4c3f-8b47-3af5f26e3f6b a30df4f4-1b85-44ea-8f4c-b48a799f9e48 521c8399-9c6a-4cb3-aacf-fce99e6e4b62 dbf22219-e882-4171-a6b4-16fdaf14065b 28685656-f8f5-4f4e-9f1c-1f32729a07a1 7b435563-43e3-45a0-bcd8-a2406009e374 265ae86e-0a48-4432-893b-aae76bd4de72 1a52e7c5-778c-458b-b9ec-7194e762ce50 3065972d-75db-4136-b71b-d7ef01f95e83 c6c5cda9-74ec-451b-8d48-9d9003b87799 41fac60e-4784-4329-8231-95cb251314da 514705a2-582a-4ede-87de-0e0864c36e91 fe995875-a55f-4036-9fb5-01929e53a187 d926cf1c-6394-49e9-a671-9aa4841ffa6c 313e5592-134f-42aa-b15a-5521ec0ae015 bd812a65-25c6-4af1-b516-f4cdffdf480b 2f7d9cb9-91f8-4b80-94d0-c92b0bd7742f 60da6320-0626-4ff6-ba42-18168744dec8 59b9adab-b75f-4bca-b382-bbd7ee7519ff 420e95a0-e14d-4c29-bd77-f78bc91c9bbc 063714b7-8c4d-4f5e-bb90-a009151a8f43 6fada954-ede0-433f-8592-02aa987cc8ae aa7a5cfe-d232-4160-b44a-c2e15f1928f6 f5eee954-4294-4ddb-bfc0-bab91ef67183 a7a2782d-f0f5-4fba-aedf-94252e6b2847 d93213d9-8f39-4b67-9364-d508a2506c35 f1b32f55-f5d0-489d-a7b2-75e65df3384e 7aee2e21-0951-4cf8-96d2-40e1a274004c 461bbd03-5d06-4758-b25e-a1a98c90f8a6 2aecd5e7-9ddb-4bb4-97ca-29e6d7dabf61 d56eca97-0249-4165-9259-7368f05a8712 866409dd-8c47-4446-b33a-8171c7625552 e05c3b23-97d9-4498-8256-dfe4f4b979b9 535db36b-cdab-496d-804f-2ec438797c9a 35e05651-9fe9-44d5-ba54-dbfdbd5e4b72 386083a9-be22-46e7-8370-77259a855abb 1349563c-0e2e-4d1d-8c2b-da0958a46f7e 98b5d526-5b04-4340-973e-2581bc52a84d f60850ee-e296-4424-91d6-93aa70203941 cee53aeb-2303-47b8-a905-41ab47fcb560 01174d50-1b72-4b7e-855f-96e1b81b41bc 09845269-63e3-4ff4-acdb-879bbd72822d 76e9d0d2-fb2e-42d3-a81f-b174c4779596 63af7ae1-cff2-475b-9d38-8ffa02e43be0 ebb0d827-488d-4b0c-8dd2-2eb4a919ed04 33850574-fac4-4bae-8ede-61fce5af5780 f8d98d12-fd19-4ef3-83aa-513578dd4e88 f22c51ee-b68d-4dd7-ae4c-99c14723f62f 617bc652-b0e0-4d57-ae99-6eef3f235812 8242e255-54f8-4fa7-a501-67e260490fa8 d6bac127-f525-4372-b4d8-5d8d1e3842c3 ac6adb3a-d601-424c-a76d-20da038e6e50 058d2cc3-ad67-4320-bfa8-0fd2f4a8bfe6 de4edc74-838f-46ac-b747-279313f39fb3 745093a6-7901-4f67-82d0-5bc0eb89a6d1 1b9e950c-4e07-4d2e-8332-b50f668556a4 b46b21ea-1de6-43df-8251-46d5d1681b13 e8e81bf2-031e-4754-bc97-229807f39f80 fde61c2e-761f-4772-9d6d-a161863d8531 cbb15b4a-bac3-4256-9196-a819e2fce7b6 1f8e2d2b-f6f3-44e3-b0da-bc4ae761c325 ca6db773-da3b-4161-b9b0-4a180bff3648 29e76bf8-d342-4201-9579-11da5c4040ca 88c6d0cc-3644-423b-8148-fbcef54c9f9b 300d03b8-f68d-4a87-953f-054b55f7e33f c65de3ce-0ac0-4ecd-8c85-871ce28edcbf 838ac83a-e0bc-42b1-bdc2-c3be36a9a0e1 21dbcd56-a36b-438b-a113-1197156d3660 14d70344-a868-43b9-a62d-61dc55b13832 2dfe647e-168c-4c85-b7a5-142d38b3f317 7fe9f4b5-c6b0-4396-9794-a3c8bb71d045 cc022ac1-a241-4e3e-841c-f1503a4a045b 337280f7-1de9-4822-bd2b-1243664f09bf 63110759-6169-4ce9-911b-9b5786a4d3ae cb3cdd16-6ba6-443e-82ae-84722ee65c20 e25a96bd-ac6f-424c-aae6-3b6bbc9e2b4a 469aac33-7ce0-45e5-b100-5dc75690d246 5af589d4-6c0b-4e11-ab4a-69e7cdc467b2 e69eeae9-a49c-45be-acb5-6d1a8aa01f48 04484ba4-9d8a-4531-a5fb-c258fd37ad78 8f82088d-2e91-4ee0-b6cb-723edb129986 0028f6fd-0eed-4d26-9995-55d8dc460292 63ab98d2-dcf0-4b4d-b12e-0e502d0d69b1 067486f7-d0bd-4084-8edb-9fef09690e3f f6684101-9d53-4620-af5a-49f31bfaf1bc 032f35e3-9832-49fb-9939-287f511a1ce8 b0aa7b98-f0ae-4c9e-87bd-fd73daa15695 a433049b-9756-44f0-bb43-1dfa92e14df3 170ba4b2-da3e-49a1-8792-b0922d10f42e a06c9d82-4f9c-44bf-a0e8-a586f2c0b530 5ea9e180-3702-4f98-9c28-d22adbeef5d1 27c4845c-d9dd-4e5a-8b84-cdac95a3d2c7 19b52feb-ae65-4f8d-9727-4ed9827c62ac 05f0f885-257a-4191-938d-5c59c5b157c3 0c47f4f7-22e2-4431-83eb-9bffb3a7dd4e aca78cb9-310f-40ea-9ecb-7be543c27549 5f7d07f3-b287-4dff-bb89-3ac8413a7859 1ddc1727-c5e5-4b85-9a06-41b2f16e7ffb ac5e9c2d-0dbe-4c13-a1cd-50384494fdfe 1e08726f-1a0b-4ab9-9267-8c94857e8191 bebd3013-f67c-44fa-b915-f6784f6494e9 883c113b-548e-40c9-b245-84d370df9105 542c7be0-ca86-4cc9-b1bb-4f07535acbac 60231de0-db40-4836-a30a-61ddddea6c8a 7472aeef-56ec-42f2-a68a-c0ff13908b10 8f708cbe-c5a2-43f1-9686-b479e7def529 c858e3b9-eea0-4b30-b62d-26f267abc37e ee9c2666-8322-424c-90f3-f4a8f694dc6a 1e532040-85a3-448f-a929-580c28813f0f 069e6e46-a640-4304-b7e4-c668386b243b 1eb0b19f-83fd-420c-86c8-12459f72c4f4 eaa14470-b79c-4513-b6a8-8dcc5162f8fe 5627b2af-3559-48b2-8ef2-00e645a4689b 405f5a5d-c4d5-4cbe-934b-380b2420846b 69dacc6d-2616-4ccb-9c35-d4ef37d64ab6 2c68ae14-c504-46ba-bfbd-2286da6035a5 da4efc6e-4bd6-4923-bd98-d59e2a80cf4e e24ee8b5-c490-450b-8a89-2c307cf6e743 f0e918c7-ca9f-40a7-b4be-b8b90c7d9668 405ea84c-c169-43ef-8433-d4a7cb5a4f5a 1aa13977-ad8a-4148-ac46-85614bc25f6d b7a6dc93-a5e1-425a-9d5a-2c280d777aca f0d04205-b6ab-4f0a-b301-9cd4e26cc9fd 8bd649ba-b1e2-44a8-9d9c-c44cdf09e0ca 3b4e5355-778a-44a1-82fb-e9906f50887d f4d88fd9-db2b-4842-922e-92ec12f32903 2b397544-76c6-40c8-bbe8-bfc9b3234caf 5b53012a-7afc-4451-bb50-e75602714a7e 28dc3365-a45f-43e5-9371-c5042977bf7c 35080f55-0a74-40a8-bff6-716fe74861f0 f06055d2-63bd-42aa-ac8b-c354e27aacc2 e6b30385-fe67-4849-9ef4-d7c775b451a6 1cc82a7c-1753-4e80-b675-029398fec21f 8727e217-dfe8-4d97-a5eb-d0a3ad1ea050 e740807e-b57c-4084-b225-c993179f7480 c0252520-f7ea-4f51-a6c1-044a7a82f3f8 0865ffea-a0af-4166-838b-8873a75878bd 4459c296-c660-42ed-b771-522d4f801554 0a243fce-454f-4cce-a1cb-c5abe305265d 7a0a8c60-e17c-4057-95f7-b4dca1582ab7 ea04d246-8075-491b-bfb3-cbb5a6df6872 eb0e98f8-24e5-4fe4-b559-df3f582618c3 607063b2-d267-497c-8b9a-6f9e08e35de5 68d229cc-a25c-4e31-b0ce-1e7cf0223cd3 a799c8e1-2f1e-442c-8430-9103af9acd01 fd7a998b-ad28-43cf-8171-ee75dc97300a a750901d-dcc3-4f3a-9326-daffdcabc318 d8c7e5ba-5b01-450a-bd12-0d18f3674e61 140fc87b-a027-4fbc-b526-b21d33d858a0 a38b8055-bc75-48be-b7fa-11e67b7ee56b 29a60508-0ddb-4273-a38d-7af797e203c4 dbe213e3-dcc2-4c98-82ac-9e7c3cac85a4 b48d289a-dcea-40fa-b0a4-e046c8900532 8c321194-b5ee-4f90-8249-8e2da24db0f9 071fd007-eb42-402a-ace5-1efdcd2d5495 49622344-2d28-446d-bc84-3a4c49396aa5 30bac4c2-0908-471a-926e-98259a291f75 ad485d0d-67b5-47a1-9dbf-47f2dcc825da 1471eeb8-9808-4602-bbd7-df39291bd139 5918a4ba-f117-4fa4-9925-d519fd364a22 b325c133-a575-4d66-8887-0fd9dc988da5 4e2c55ce-9a4b-4f56-b1de-66e904048be3 bc9af6de-7ff1-4ac3-b42a-d6de2b67e2b5 da17fb49-f9f0-42a2-93bd-41ed9b99532a b011c069-6d87-4846-bbf3-6922400769d8 b74c4ba4-2914-4f17-8699-768359e32475 328600ae-25d9-4d61-833b-d445773a52e5 b78bfab1-6905-4f17-8caf-4454a43e1f5e 013d4572-9ccf-4a57-aad8-890c70f32506 f7aacb9e-2d6e-4c73-b419-42334ee11bb7 99432f0b-6950-4b37-b463-52f1a3bb99e6 1898e6a7-a266-48f1-b2a8-065334f2b798 94f6cec6-a41a-433d-9b0a-b1b9e4b1e791 7c81bafa-dc31-41e1-b273-9c0e58d3d1b6 5583e992-052f-4bf5-8425-8a11f9eabf9c 05b7c3c0-5469-40c3-91a5-ae0683769298 34d894b8-62aa-49bc-9e5e-8d05548d2de3 ba9d8bb1-ee0e-4062-a7bb-3306760bbc2b 5f06f802-20ba-4ba4-99ee-0e46bc988bd8 c683a844-811c-42b9-b3fa-499ef6366ba1 2b96d206-cef2-41f2-bcfe-430b894f018d 548d13f0-68cc-4eb4-bddc-e7361d6149cb 1d92d30c-7d97-4bb0-9b25-e7281581b1b3 63fc3a3f-53d5-42c5-83f4-9c3130ff50b7 cb1a117c-e006-4475-af1f-84bf18d18458 f4e43de4-c45d-4a3a-8a33-f698be6fe3a3 8f1b2aef-ae94-48d4-99fb-d6dde026439d f66e8f2e-74b1-4831-baa1-948238dcfe13 b4a7c439-354f-4d61-bac8-e598eaf7c5a7 9f414e39-b547-451c-9aab-78d1e0e2acaf 35b5b9f6-c14b-4574-ab02-51ddb7e678cc 740eda92-3b06-4946-a83a-ac6fe37cd77e 9bc51386-8d7c-4fd9-8281-a6b4b1db210f 828fc313-0397-4a36-a203-eefb2c4345c2 d69af21b-e7f2-4c26-be1e-05ee3a337d16 16679692-5fd9-4633-bb41-47ff07348d9a 6e5deb8a-010e-427e-a47c-a9e25b0d4cfe eb5ee301-41b5-47b7-92d2-1477fb1cbc46 af5bc791-9bc6-415c-8b5c-d30065620ee7 c2913c2c-cd59-4fdb-b317-0b91cff3f9d4 dc6c5473-b6e5-4b0a-8534-49f3d8a25f7f 9cc9ba64-f177-4b3c-a2a1-941bb4e63db5 27881190-66b2-444b-ad0e-68793a392589 0448d21c-7384-4abd-8cf1-3e0d383bf002 2c18a527-284f-4b52-b773-877855cac68c 7fd6a47f-4a93-40f6-8987-2e0aad6ec2e7 aeff8075-53dc-4439-a687-4304449f9e4b 5aeeafb8-98d3-4bae-b3a0-f438315cb81a f78fcd9b-b455-4ac7-b8a6-769e13515e8e d395d34c-4567-483d-bd93-d1427cf87ce0 ac2d10e5-c279-46d5-ac32-faefcafd2951 eade0c28-98c5-4e98-bc49-8c3abff087ba b4fbeb80-6a53-4bc7-a3fe-ef0a597e8233 6b418de5-1511-463d-a73d-b35a2598d65c fa08df60-3f8c-4184-b62b-559f807d3c7f 55fbc232-ee74-416d-9869-a4583b66beba 8646bbef-6cf1-4f0b-83da-21caf5a6bb2b bf9ae177-9b93-4e0a-a557-004faa3775be c85f4ebd-8876-41a8-93eb-49767597fe82 99dfb626-ab76-478b-a90b-e778730f26a3 f4eab605-ba36-4e72-9bc6-0d93b1c13efc 218ab4f4-7a15-42e0-b7ab-8a3d4fa092f6 6d8cb3f8-e326-4ed2-9df1-149f53ced5a2 7ae0c4c7-db26-4295-a49a-e2848a9cb59f 1f492b0b-86f9-4f3c-a30a-71a0d14d2409 d93020d5-c615-4c7b-91aa-7751256473ab ddab3d12-0f6b-4083-80b7-120735bdb668 e7575199-3a75-4375-8bf7-34b0244d47e8 3d9720c4-c477-4507-aca5-1dae80e1185c b5359ef0-0fa0-424b-b8c0-7d23946d692b ce268da6-9e8d-43d4-a5cb-e8e531757850 17207892-2951-446b-9bc5-e517770fc683 70813d88-76ea-408c-899a-18173a43219a 7fa99ff5-9eec-43c6-a9a7-7cf515acd173 5fea9810-be67-41f5-866f-e10743426abb 004db71a-31f9-422d-bbc4-dcd687aa6367 0dcda862-5a00-4643-a401-7c29315bc59b 78676e50-0c8e-4bb9-b269-b0d1ffcadec3 852a1329-ebe8-4d08-92af-c8126efc2b1d 58f5e729-87a9-46ee-87b4-ee3b2ce2ec30 004255e9-88e8-45a3-bbd4-dff6ba5c8d28 fb6e9aee-865a-4e34-8d10-54847b9a0089 b2b3e72c-8889-49b8-8b7d-e5b5524a1648 d0247c2e-cb63-460d-a1ba-a2307834e322 62e83ed7-de01-40bd-8df6-47d22459cc34 4c127daa-2146-48be-a90c-3c8b83617115 fc2cd8b1-5734-4987-bc4e-44fb5f6a4a61 dbbe54a2-9237-40a9-93ca-26b002591ead 560494d1-9fcf-48a0-9044-e9bc3bd3ac68 4720190a-2075-4dff-947b-c6a801f84ce5 cb775e07-9c16-47f2-827f-6e776535e894 7b78f1d0-9cd3-4e1f-9446-29bba799278f 2a5fcefb-8439-456b-807a-fd48885b6570 561e9338-425b-46d8-b1f3-43dd1db89520 993ab10e-e81c-425a-9ec5-f6be0887e2f0 e521e2c5-6fc0-4c84-8497-e83ab6996a10 17bd2168-f52a-4552-ba82-28c9a5d67f87 920aeb3f-dd20-4eae-ab46-521b359fa5a0 c3a42491-ad1e-4ba8-871c-2e5be7514603 7e5a7ac1-4315-4f24-8d43-ae9677e70832 dd87b8fe-d8af-4bd4-9c23-0c4a3bfb7a76 08f1060d-da6e-458b-a46c-1a23de586676 7855a4e3-ac5c-4733-84ca-ebfd6693d5a4 fdb41b85-2f5b-4d57-984c-b5402a0560a1 d31ea6d0-7fac-4be0-8ee3-e4d8af025e95 fc7e814e-a1de-4cb8-9310-07bcf30b8d6b 63fc2cbe-3ba2-4f34-81a3-94d64faeaa7f ef7d6c5e-fa13-4e88-8b4f-de6c57680876 0f2f7961-f885-4371-bc0d-71ac9f774491 d0dd67d9-61b3-44a0-8796-9ce132f98aec 36523753-c8ac-43b7-9239-033f393f45fa 2c6b1898-985a-4153-b27b-bf2062b76053 afba4b85-e83a-46c7-b589-131ba6f6f534 1c0f929a-3204-4296-b4a4-4e818e992a09 0a08d4b8-f73a-4ad6-9fd5-8275994a3edf 78309892-9053-4f2b-8690-f5efef441368 0f4734a3-19a1-4869-b197-cc252b32b3b3 9c2872e2-8614-483c-b33a-a18194a125df 003406d8-b4c9-4d94-8be6-d4cf5f6ecf4f d20df017-0b38-4402-932b-e37ac96555ee 67cade94-6493-4ca0-b504-a0ca7753d75f 5e824e42-fa6b-4ef4-ae6d-733951d0e62a abcb5516-3a16-4f40-809e-8b34b89dcc9b f25bb0cf-5fd7-46b2-b223-253f563381fc 74d434f5-143c-49c2-9926-1f8cd8ed8766 fcf6a6cf-362b-40ed-81de-47982941530f 04645fef-b65b-4ca9-81fb-0a28b73e80a2 7a237e73-03d7-47b6-bdc5-40b6573e0e54 d5ce6c68-3f45-4f86-921d-7e66d10125f7 98424cdb-af03-4ff1-a8ec-69b1213866c5 d62dcfde-6ab0-4b89-a84c-bbba0b092fe9 2c1b8019-5206-423d-a608-28c9520021a0 4c88c74c-3817-48c6-a637-fb6fbbbfa8ee 160e5bd9-ae5a-4e87-93df-76a16c80e781 ed8ad12e-f045-4569-b614-2ca684838587 5a87c389-8579-4009-8d51-8ddd28a11edc 86ec71bb-6864-451b-ac7e-b2ec3e9c07c1 0dc9d4c5-5481-4812-bd99-abf5b5f191ba 0598b3b8-c349-478c-bb41-dc9ccfacc5b4 05a8ea38-795b-4494-b64c-3be81dbc7ed6 0c55604f-146f-4139-bdcf-747b2f03d56b 64104d69-b723-4c7b-b6f8-83277a946dce c65fa4cc-2023-4360-8712-491eb150c06f e48e691e-cb8d-4ceb-aec1-edbf5b09ea79 4b3d8ec2-d980-43d3-9389-20b4d54a7657 32fb137a-643c-497e-afaa-8eb641816a84 cefd0419-7f11-4032-9e77-d377519a32ee f8b403e4-52e7-4a68-a153-915998cb6e77 d217723c-e764-4b4d-9353-b2d2f5b5a5e7 22176ec8-f82a-412e-8757-d268f6220dca 8f0e6fdf-0b5f-471a-9707-a96ef7383fda 55db9f5a-9c49-4499-b835-a1e4213343c7 c7083f9e-7b06-48e2-94e5-e4cde6ed6af8 04774f68-9ed6-46c3-aa38-dec56951bd9c 9adff5d1-4ce0-4b52-a846-3565e07de821 0135a1a9-0067-49b7-bcd2-797f48c7b8a6 66c550a3-dfd0-413a-837a-377407a3013a 70efbd35-c1db-452a-90ea-88aca6923081 ce216210-4735-4a04-9d0d-9fd43939113d ecfd0f69-51ad-46aa-90b6-2218b32ce7a3 a05e4399-aaa9-4e0c-a373-a5c5af2fef35 2a45d3da-ac38-4b0a-b2fb-47e8758137e9 fcf36adf-155e-4d6a-a2f7-a68c93768b37 b177b97a-147f-481d-abb8-fc52e5bf6b81 d4762922-96b1-4ed0-a826-0fbfb29091e3 3edf7534-8dfc-4365-987e-741109940903 5ba8e4a0-cd26-4b8f-91ae-838d352483d0 3f887cfe-35c1-44e7-82a3-f62b07d7a825 9a133c01-4a36-4bd9-bdae-31af571006bb f9e55d96-6953-41b3-bf52-1bff958b9731 bd9dfc56-3914-47bf-a4d4-bde329099024 eccdaa6b-f372-49e8-9ab0-167fc424aaa8 6b427504-2f9d-462d-9c97-0165b06f9139 e31eaa0c-2430-40ff-bb71-ceaa9a39482b 6859a068-228a-4b96-be79-a3c2fd765a8b 9cd6f939-72a8-43fa-9564-41c14b3f1020 6345700c-5a00-49e8-8a18-5b9d121f97b9 5d50a746-3a00-4e40-8193-588ebec7cee4 acdbf0da-8047-4613-a3b3-798400fb7dc1 5104542c-c137-416d-a849-ac05550b9c7f cb17374a-ba18-474b-9cfb-a0f1c55a3d58 80a96cb0-f486-45b7-89cc-4d9ee2b10ab8 b62bb667-5a23-4a79-b905-1f02a6e8d3bf 02695cd0-3f17-4b7d-aa6b-83309ca35817 f58a6d5b-10f9-4fe9-b3e1-be5c3783a135 d7a6e5a9-6125-42df-a9ae-9c745f7b99a1 fcd16e4b-c79b-40f9-9d38-23be2497d548 c27e974e-aaf6-4dde-8568-9aae0e955e4f daf507fa-e40d-4235-b710-c9f0bdfbe8e5 40820f7a-f4dd-4df0-b97c-178b0a476d36 173fdcfe-1be0-4d21-a67e-849e2d5d8ee3 0896b97b-7011-44fd-820c-6878ce323599 1f8d37b1-7da1-416d-a65a-895465d1840d 6c2522cc-b60c-4b2f-aeb4-61fda7eaec7e fae741ff-5541-4d68-9f5c-6eaceef35491 1247b542-0c4a-44b6-bd05-9cba3392bf06 3337d173-4c07-4fc8-8ff6-ac30572f195f 0caf85d6-c71e-4c3c-8881-9a6ef840036d ffa7bf02-f5f7-42c0-80bc-62977837811d 57958910-9fe1-4a96-8fb9-f392b8833772 78af098a-8e4a-4de3-bc9c-44d9fb40d04e 7e7d97ed-2715-43ba-b07b-008a2cec8941 8817fbb3-d3b5-468d-acdf-909e65fe4e0a e27cfa9f-efac-4df9-bd36-1315e5ca7647 8e88f75f-c3bd-4502-bbc9-9bc54f2840cd 78f4d8c2-04e8-47e5-833f-92bc790b21d1 83e62d9e-55b0-4059-8c0f-2facf41a95fd a5fc36c3-1845-41a5-bef3-39b8b6c90450 473b5728-646b-49d1-a8f7-9af14fd97d01 9828f2d9-ec1f-4958-bc6e-860e677fc27c b76ee9cd-8254-4674-98fd-cd717915eb74 63f95514-9db9-4b30-91f6-2743b31cbaee a8ed927c-32de-4960-9f9d-592ba5a9842f 09051af9-48c8-4953-af7f-8e3ca35e467f 15717ba0-d998-4c32-9fbc-4995443a5ad5 899e1b35-de76-4f6d-bb9d-09c934a93355 505b2af9-b6fd-4897-9777-791cda26e8eb 2fdac523-5194-46fc-aa85-4f1bbc4aecc6 f272a800-520d-40a7-aeac-e406aefc0778 fd468878-346d-403f-94d0-47e9352ac3ac 85e0d808-b6a9-4910-9641-921395a35557 43d00f79-a926-4938-b255-3a0ce5294877 eeec8507-2f56-4dc9-a8f9-bfd8a1171b98 fc09e794-c2f7-4733-952a-bce62ecc5708 1ec21037-1228-43c7-bb11-be2e9c501491 fc359a64-e930-4bb5-9330-70d0da8741a1 2ea3f16c-132e-49fa-b76b-495f0ff22bf3 347b1a7f-7ec6-4fe7-9897-e652e93997f1 d069b949-f2c6-40a3-b797-3b18990505a5 cb8b8588-949e-4085-a498-c49ba935a693 c4f7ac1a-feda-45d7-a37c-7f0ae25fa385 450f1916-c4eb-4272-b3d2-1f81dbe2740a 8dee91cb-ffbf-4298-863c-879fd04a9b6c 6471e2ba-6003-4e21-9c2f-f3894692c296 8370fc4e-cb59-4ba8-a8ae-e24d11f6e7cd 2ebf8ee4-d4ad-4fa4-8a97-ea8a12228b73 f69d484c-d6ef-4276-bd6e-48e834c7b80a dddb0a47-3713-48eb-8c92-b60eecf185d3 e391002e-aaac-4b4c-943f-b5377e3f8ff0 a93d9ad5-31ee-4eed-ac45-69f54d4d863b d7189cbc-e66c-46d8-be40-daea2e084397 512f9eed-d326-4efe-8ecc-5aa3ae8328b9 3d486fdc-890b-406e-84d2-62114726f60b d1931a22-2e4b-41b4-a3a1-17c46d7794c0 ac82905d-a661-4c8d-b46a-58cd89e16b92 e2ff7c09-79f5-405c-84a6-43edb7d2796f a2331727-ff32-4f25-81c4-27c8b97b0da5 2f46f78a-650a-4c8a-9f63-cdfcd8709809 3be43058-dd72-4d78-830c-e09c72e99399 7aecc080-2822-4337-9ef3-d37ca6666363 5d0ed684-9feb-42b1-ac94-6863c6a0ba7e 2a840803-38a6-4ad7-9511-5285406d94f4 fd9fbcbe-5cbf-42f3-b0a5-46a9fab7931d 8e14c6a1-a54b-41eb-924e-0eb070ce708a 34d4469d-cfb1-4f9d-ac99-0b1c48fa51fa 39ac8112-3695-4060-8e6d-04706f93a9eb 1305f92b-c18f-4e08-89cb-68c8831b083b 2b01e94a-1715-44e5-8e81-266ed21a642e 817d095e-6446-4546-86d5-90ccc01d3c15 789f37dc-7e0d-4581-80c9-d93a3e0e3423 9ddb6bcf-7cec-4b65-9b26-28e80ae3e762 63aaec7a-57bf-43d2-ae3d-6f9ea1e2a9fb 661113f4-0dce-41af-a9a1-ee68b5d44254 fd859163-1feb-477a-93c3-bc5f074cf83c 1152da2f-018f-49de-8fc3-44fef2772fc9 32601b43-77f3-4176-9e35-cf98c29658ac 062ada7e-d787-4520-b1fd-0f880dcb3545 c2d733d6-a49f-4ab0-b780-bc200d47c93d 8706f6cc-b868-4560-8254-c6f49153004c 4e2a991d-ea64-4345-8d5e-da5fd6f9b601 4825f4d6-c137-470a-b7fc-924428378776 3495d321-0069-4e1d-83a9-bd8be5dd51b0 a6dba85d-6218-4441-a677-e060a04da6a3 2a727c28-1061-406f-92b4-33bcad779d54 38e22c0f-ed02-4264-9d9b-d7bc74fd4087 b5196758-1209-41a5-8478-b0eb52c5033a 46327d14-a012-4e63-b246-6415ee930849 3ac0bdfa-25ee-4a98-8847-0d6577486bab a195d287-b975-4fb7-8e47-5acd49132f90 036fe6d1-5cde-4b4d-be78-19e0828adf1e 05ad3334-a546-45ad-a2c7-650576c9cc3c f8d60800-2c48-4499-b0eb-a23309eccf45 8df61fd5-5587-4b4c-b385-fead4411d351 0da2f25d-bcf6-40c5-9555-38caaf825b84 e25e08c1-98ee-4ebb-9d69-b38643ae8dce 91f2202e-7d56-4170-8524-bae0da0673a7 f2819dc9-d967-4aae-b8fd-f101beac71b5 2f471a42-5013-424a-ac9c-6198cb93e4ef b6ca95fb-5fe2-4d33-b32a-503fdb2f7000 263e8117-3846-4a1d-b6ab-306bec597bae b611af9a-a56b-4cfd-871f-459023a6bfdd 8b6b3c62-0674-40dc-9620-aa0fea68637d f55645cf-b6e7-43f3-b0ea-483983128617 f2746f5f-3968-4188-ad59-72f917f2c5ef 1f2e64aa-ce97-431c-b818-c6de4fa99ea7 fec8a7a7-7696-48e5-9356-fbe976ca1de2 736b9409-58bb-4cbd-b071-4cd961b28a1d 7c275938-ce93-4d0a-85c6-c55da1d0acbb f35e653d-8560-47b0-881d-d34307b13fa2 4c8811c9-4ea7-4b44-bd09-3efd215ae405 19dc9233-e19c-499a-9ca6-54adde9c53cb 27c8d5f5-df0d-4a03-8fb6-f112a62b5c30 e3904e44-cfa7-4eb9-93ad-9f583befb91d b3d2cc53-3612-4903-8cae-f9002970250e d1f42c56-9f99-4c39-a3e9-5f67b589f9c2 278808db-8fbc-4f6d-a81e-9da98db2210e e88ea1ca-530e-4325-8420-4159274a1b04 1da28515-098d-4d69-b203-c1cbb6a2077a a4d04377-3157-4917-b777-7fde4f616bce f0a69ba8-38f4-4097-b7e6-71f21905cc65 c4accd26-bd6a-4111-a842-9956fe9959bd 88bc0c99-f885-41ec-8974-a77e93ce580e bbc4afd7-3ea2-45a1-af55-c7f16b9cb7cf 33d681ed-0198-4369-a01c-396690d173a1 8bcf5376-5410-40dc-a811-c27bb32b4b90 d15f2ed9-ed7a-426d-9017-be34c2593497 f2abe4b7-bea6-4e10-b306-096380bf8912 6359f779-63ba-4716-a3cc-70e4676acb01 3002ca9a-0d5c-4ac1-8361-b5e2040c2043 ec7cb1cd-4ece-404c-a10b-add9cf346289 631fc4e2-dd3b-4029-8259-aeef71449903 f2286de0-55b4-4201-ba29-9076f197c6cd 1733f334-5148-4516-8e35-c837b892e4bf 3cb379e2-d7ab-4c95-a5e9-bded195242f5 ca8002d2-2f36-4af9-a957-be093c4253ab 18b15829-747f-4b04-8cb4-3d0bcd862b8c 6b2b3fc7-171f-436b-8d5f-4d915a21d31b ae426c19-d661-43d4-b058-bbb18a7c86c9 36e75ca7-387b-48ba-a4e2-761cf324c5ee 12f1103e-cd5e-4ed2-8e13-416f5356990b dc1c0121-0154-41ee-8f48-984d9e460dd2 2cd26048-5f6d-402e-9efa-df2f35606928 d67b14fb-d597-41f3-a0a4-93fc0453e1b8 72a3ac51-67d8-4ebb-a1cd-dd370d0b6e0f 555ccd86-7619-4c40-bb3a-6255e6e808e0 58c95461-7e56-4250-9674-f4609f686fbb 7edc2c1a-8a69-425c-bca1-a62c06728ba1 0dbe9008-23e5-449a-b122-84161bf41dbb 8047094b-d5db-433b-b5b5-142cc6fb65ef 7d2a0706-69fa-44f9-bdfb-ec94fd823081 15004c52-dd75-4336-9f39-6b7b5ce7e538 b36de19d-b9c0-4949-98d8-c90d3b59d20a 67bffccc-6bf0-469c-bc72-209afb422b2c c248bac2-e4b9-42f5-80cd-0d30de9f9268 ae95859a-038f-4ef7-9fa3-0dece1be779b 544a5648-eea4-49e3-85ab-4c4ff8419391 9691a37b-3ee4-4606-99b1-7bb2700113f6 bc9e7167-ca33-4365-8745-b5976fdc33f6 68965ea3-eeba-4724-ab64-113fe79d0e5c 4e95cf5f-6f6c-4dea-8c7d-27f3b984c923 061d895d-0f1b-44f0-9caa-2cc62d1e05c9 b424b71b-cb54-4719-b438-6c15037a79d0 4e9cb0aa-9d0a-4b42-b234-706d4cb6658a 4ddff4ca-0dd2-423e-b0d6-15b3212da570 340fde49-bf15-448c-abef-3fb3906dee67 2ccf9710-0f13-414c-a6b1-2e26735adb87 90d39230-d6bb-48a2-94f6-a706436483a4 c9edea92-e3db-4509-9818-c4085b9e06c5 e8ad4950-48ac-4565-a79a-509b97fd6881 cd42e779-4425-4043-881d-c1d98d9ee80b 03b76abd-2ae3-4dcc-8e46-185f4fd3d3ea 8eb02bff-a27a-4dee-8ad4-e1894eb48b41 2db25309-ffc8-4611-930a-cbcce900f44d fb122517-9d74-47de-a8d0-4d77c75a0bdb 099e577e-8999-46bd-a61a-9a619be45760 58f18bbb-4c33-4ac9-991b-44c6754b9c8d 8876afbb-f42a-4205-8dfc-ce7afad580d0 f34bad56-dcaa-4025-ac66-e30045c2959a bb464849-1cd4-48fe-b07c-ea3e047567d8 c77ccb56-1f1e-4a8e-ac59-7451b5d52613 2fac626b-ba05-40ea-872b-00b6106ea2d6 d37985d3-9ffb-40a9-adad-8daf0fdfb6ea 69b388eb-7240-415f-873b-63c39e10c27b f92314f5-0c98-4485-9102-3e9bf2ffbf1e e55ce109-c5da-4051-b3b9-bd6b08b9fac5 bced097a-81c6-4a1e-bd20-799a7bb43aab 02132860-2b72-4c73-87c4-c6c4d7470d8c ab903d80-8862-415a-a806-18069fc45ffe 0dee77c7-cb74-4bc2-8288-3842a5e5d639 ef0e1b1e-4cfc-472b-8e04-78fe59a15f47 7cc953f6-73de-4c73-ac12-5f973935b207 69b45df6-9da9-46f4-940b-83e47e598ba3 7ee3dbff-96bd-4431-9863-8ede563dee58 f02aa976-0fe3-484e-a96b-1cd2d85665dc 69cb6132-e46f-473e-8655-6a032f19fafe 45799e2a-0fdc-415a-a206-e1fe0aa89c18 ff4cdfe7-3d55-4703-b537-8e2eff20d1ab 54092eb1-8b67-4bf4-b7ad-0111b9444c4a 84e9cdde-0766-4042-90ed-25953f56a4ff 82b52d82-24cc-4bc4-b284-501c61726143 d7e21245-08b9-41cf-9fd5-6615fb235c7f 589ce879-ff13-4103-a439-d2fc412e238b b5d4de29-1a22-475c-896c-f708474b9c81 cbdf17d1-b980-47dd-828d-cf773daed200 f50e7da7-7d7a-4ebd-9715-a44721c8b7fe 6a868a43-1f36-4c1e-9782-baafa35a1365 5a57892a-3c3f-453f-bb66-684225fa6ef5 b3871ce7-2beb-439c-99c4-7a5ca4ac29a6 e1f0cfa0-342c-4df9-b91c-27b0a297f8ed 93da646a-0ef6-43da-8a08-fb43a1b34562 dc54db8b-d2ca-4a87-bdd3-a1db17093e4e f64bb1db-6ddb-45c9-9b0f-21de35026456 c76a231b-d5f4-4001-b0bd-4816b9310e0a c5978352-0346-4aac-b582-361795bd6302 ca946ce9-a8de-465d-883d-ecfff51fb581 f688f3b9-b947-4498-a020-1cfec455ed4a 82596428-1ac3-4657-928a-1f5b13dbedfe ca2c93d3-f237-446e-9eb2-fbd45afa54a3 420723c9-9f4b-4aac-8314-2bad80ad214f 18d69dad-6103-4ffe-bc7d-93244e13d767 e62feaba-67a6-4789-b10a-8873fc76ff3d b77c4999-c921-4169-9960-c5fc6733bd66 4d5a1041-5224-4c07-a367-a49015bfae1a 3ff0b2c0-781d-4344-9cf4-e61bd14a9971 a0cf6986-edc2-4148-8c59-49b495883b50 0db89a9f-1fb8-4a7b-bf7f-b4133b2c45a1 1c3612fa-18bb-4a6c-aba1-f35440bde2fe 747e2c0e-68d8-4f26-a8f0-957db8e5046e be604849-4bdd-403d-9e0e-55d82278a353 ae86379b-ac53-487c-b173-3933b5f253a1 51ad26f3-fda6-4dd3-a3d7-57458be80e92 6d2977ae-d63a-45c1-9aee-8b0b27850650 6fede697-6b95-41c0-a2af-11b36198464d 6e0bee89-7472-4f7b-8208-526a0d0c0a22 1cb932b8-5a03-4e0e-8710-0a017dfe6c29 33303d59-3f62-4680-8874-b1811a172342 600e63b8-604b-41c6-9f7d-a8f2a2256b98 2b4b12dd-7d80-4346-891d-b7f344ce0f15 648e7e0d-2fd2-478c-9953-0e259b1b4374 d4b2db35-a6b9-4a68-a654-3256668622ba 9b39fbe4-28c7-4fdb-9340-78604b60174b de4bffab-4412-40a3-8d94-e82d008a0505 b4dc1f7f-889f-4fd3-aca3-6f1bee497ada a762dedd-5739-4b53-8227-3311955b07b5 0a7f7beb-e1c5-45f4-93c1-2cc53d10d5cc fa60b059-1e2b-4f4b-a35e-dbbbf35c2538 c8cc8af5-ad00-4515-a3cb-50d915105b85 a15c4bc9-84f3-4296-b196-a714b7c41126 aa08b785-4be3-432d-bdef-69273c6bd950 9cf53902-4c2a-4771-8a1c-16978233ccf5 33265be5-0e7e-43d7-8078-e716b5612b44 2815f881-48a9-4346-8a10-c014c6c869ce 88608cc2-2490-4ad0-8ccf-b62d84aefcff c455622f-a1a0-4704-a32e-567f4f5351fa f2a12388-6a4e-48b9-a956-efde8ccdcde6 3f8d0aac-655e-433b-b92d-aa1bbe289645 cc4f7812-da06-4ac8-8fa9-dbe8b266ea31 e9513351-3aac-43ae-8d3f-446d06db7dc9 fb9fdea3-bd43-436b-ae65-fcb07826a31c 555ecc7c-c533-4917-909b-eafbb72deb58 b70bb6ed-61c1-4e40-af46-fe6b1348d8d4 d0d82dd5-b354-4a2b-8467-a4e03e3aa7a5 72842e8a-c35e-47c9-b8d1-1ccfbf3e80d2 7ad1451d-7069-4ca6-b9a1-f124579b0d20 a4cb491b-6079-400b-beff-1336d971bfc3 0eb888ce-ae2f-4007-9cee-55cf761382ce 35b463b4-e94a-4d6c-a026-da7948e8f6d5 05df8304-f327-41ae-90c0-53e5d63498e9 38dcf964-61da-4539-9174-bec44c5b973b 5a10ffb4-a2ab-4826-aebb-2610f6bfe608 5996186c-945d-4900-8331-dbc5b7586d1e df7be7f5-8222-47e2-977b-b4723220a929 49006d0d-2ec4-408a-a8e4-50d833b1dead 852c4e9c-7fe6-40e6-b530-34cc1be01b1e 78b91a6f-2243-467b-b346-0750c2761ff7 92cc885d-4ada-44d3-96af-8bdb8f73ce78 489e66a6-994e-4306-85cd-fcda20a1f074 db11fdfc-7354-446c-916f-0e99a6bb0b55 3c2781d9-da8d-4e26-bbe7-ebef7c7754e4 d8801e8a-8c9c-4682-8081-daaeb1616073 ada2dfe4-cdc4-4814-a9fd-03fcfdcc3eb3 8bc3aaa0-f1bf-45b9-84c7-1fde1f4e066b aedf9428-843f-4074-914b-b3e13f28c34b c7bb794f-7a3c-4646-90d7-e4b567d2104a 628c1638-2fc8-49f5-bb76-3b4ba5073fa6 f072311d-c379-4439-8c94-7cdc54a37b25 f21ff2e6-25cb-45c3-86bc-84f0e01c2c18 b83afab3-008e-4e19-b2f2-17799600414a b32b5e72-5108-49ad-8146-317d6433fd13 cde2d136-bd02-4eed-9d9a-b5cfaa102561 39fc0d9b-540c-42fd-b567-a954b18b89e8 a56b8d47-5dea-440e-ad7a-65383819cec2 9a903277-da63-40f4-bd97-da9ba129f854 128b054d-a7f6-46b1-a375-3c4d848d0afc ce83fa41-7f05-4d0b-b67c-51e2c50fa7af 08262a6d-ba5d-4683-9c62-446a38d4dca4 814143df-2018-432f-b44e-7220259d25a1 fbb49bb0-9e1d-49e1-bb82-6b19dcbb0b78 ae5813cf-0d5d-47bf-a194-4a1feffca050 c7407407-2e15-478a-ae26-3af50dc7bf8b 8738dd08-efed-49a7-bacd-91be2d50ecdd 802d379a-7be5-4eb0-b8ed-43846e132541 4e23cdc7-9f88-4e3e-9561-33ddb0ec5df9 40ce22b9-f308-4d1d-8946-8aff1aadcc93 e774b8a7-5dcd-4312-a9b6-3d3e761a1584 ac9b8115-5d25-4586-992e-1bdc57753071 8a5cc871-177a-46f6-a636-86bfe957864d a3e180a3-9eaf-46fa-9ff4-d9f7d6f4346a 5b90fb64-4af6-40c3-af45-6462e319f43e f1dbb997-19e6-4ec6-86c8-0458ae621639 98429357-bc36-4365-89f1-d94e82a5f691 39d26c1f-2324-4c23-9b63-0dfdf530a254 ac8c99f7-b316-4a64-bce7-9af54c17ae68 115c91a7-85e6-4659-bd33-03c877f89a4e c6b0005d-7c9a-458b-8eaf-404f2bdbc738 1ece1a31-0764-46aa-930d-d7f9c66d0dab 2e8d819d-b99c-41be-9e6f-fca7cdae3608 b09c6e0b-84e3-4f67-8608-c64d91452ddf c83cb599-6591-40fa-8dbe-529f1863c12e 49436fa2-4e4e-4127-a131-94f549dd27fb 1aa59dd7-4798-4a67-b8e5-d166ea1b381d 3766ad6f-bad6-4849-925f-9deda9930adf 5576dca0-f7e1-4c30-b9f6-901769f9334a 9f901311-390e-4313-9ecb-7e16831b8484 8e995051-be85-42f7-acc2-c0740d43563f ca712c3b-86a2-462e-9946-bd5bbbd0ca1a 5b434579-65d5-4b2b-95bc-0200d8f36fbf c7946b93-6952-49ee-8b2e-c41ade14d98b f3f82eca-8665-41bc-b923-cacab9642f24 c5e806ef-aa21-417b-a5b3-12be7c0b0a59 6821a166-90ca-4878-b87d-53cb1ec41f2f 238be8d6-6145-4a28-991a-6e48ac0e536f e328d193-8cd1-436b-9cd2-b2e6de82dbad 5ebc7c63-6c85-4130-ab4b-a6b5e9424597 7a9988cd-28d5-431e-908f-080bf4c76b92 8129bc6c-61b3-4d7a-9b88-b869925cfaa4 37c5d772-8b09-4b02-b1d6-cf4442df4ed1 c3bfb7c0-a6f8-46dd-9039-22ed52a9f662 76b375ca-e936-4e25-8837-d58559908ba6 0ce85760-901f-4a3e-9742-d4e82c6daed8 480b54bf-535f-4342-bf86-669ff4005e19 2a5dc327-2f6a-4cc6-9865-0e94b65ca522 97d352d1-240b-46e8-93d9-bae3c96d0b76 0945d811-8af5-4fb2-9b55-95eb044957f7 1d8c2608-ee20-43bc-9827-3a2ac8df9cfb b6f4b203-7060-4255-9d2d-02a4544f7bf1 3e5cd05d-b938-49eb-893d-26ab87305dd0 969f80e8-3ed3-40c2-9726-d8439404eef2 0f64b5b0-8184-4e34-a21c-634f187c4382 8432d0de-fb7d-400c-b3da-01e2abfd0472 e6ef0d7e-43fa-4b7f-ba83-98698010073a 29bf4acf-4255-4faf-9f15-6b973b529f06 3c40136b-4b57-4de1-b2ae-c1745c7252bc f4851ab1-6233-4b3a-9d8a-77e605e2b976 2b3ddb73-37ff-41c5-8e05-859124c08079 62ddf054-3456-4f5e-b4f3-569087c91a7e 66a9c81d-e859-433d-9cfc-7fa31c5247c2 4d1aa767-441d-41c4-8ae2-47617ddb7939 ca3a4dfe-32b5-452c-a301-449f8d1a4c9d f9efadb4-0ef9-475f-926c-24490a2256bc 0456c9c5-3246-44d2-b181-82001d5e1804 8c30c737-eaa9-49bf-9b04-58f7183e525c 88cf7bd2-6fc2-4e2a-b692-de7c31d03d98 2dfd194a-8c3d-4375-846f-7640c36c89b7 273ba006-b1d0-4a8e-ba1a-5abfba0598b1 b7456fc2-01cb-4c4d-9d3d-efb63083e24e ac1b28eb-c3e1-48e8-b371-f82f166a119a c4190a71-f7c5-4805-9f41-f7e3f6ff444a 36e53b4b-4fce-453a-b0cf-aa08554ba2eb 8582b272-d597-4acb-a70b-036f62128f3e 17e798a2-5d21-4d0f-ac8f-9b5ad7578fdd f72dea50-05e9-4482-b398-73399f7faf4c 43cf2e85-f151-4970-8bc1-c938b9ec4686 1d975c5c-5b2d-4999-a4e1-604f1a6ebb6a de73fe71-2be8-4989-b2e0-d3238b72fe51 36548fc3-cdcb-47a2-88c2-fb8cc1c37408 044c1aeb-79c1-40ee-8866-0ca7b245a45b 66fe783a-b4e7-4bb2-9401-63f83ab616c4 d30b16ba-30a5-4485-b0b0-2013a3a594e5 f1d8a136-4799-4376-80ce-fc8f8fd19687 38e37b68-bdf5-41a8-ae96-72db09542be1 ab2f3131-761c-4203-99dd-d7ee95bed8e9 ca9d37de-171f-4570-bf5b-fb89c74a97ca d96e315f-5c83-492e-a8ea-04b71aa98e91 728e1a5a-6f30-4129-843d-c8b540ba33eb 647924bc-8dfb-4f40-877e-3bf576e10eb7 0cd2962f-5415-4a7d-8b3b-83ede90a6687 a0261a51-3f96-4c29-aafa-bf7871f1d411 fd4c1164-aabf-44c1-af97-2f74a3beec9f 88f82c72-06d9-4cb7-9b4d-ccac904627ab 8f45d917-ebb1-4024-a337-1205d9a35c79 05df8fa1-5f9f-4929-887d-04116e216612 69983c03-053d-400a-aefe-c5d077860825 e2b2849a-1d57-4b66-98fc-65480daf745f a8fb1a60-955c-45a8-a7c4-5242d28d6fc2 62430edf-50b3-42c9-b9a2-ecb42153985a febd38ab-4bfb-4e71-93e0-a15403d5eb24 209b8585-6e31-4244-ba6a-d7e02d960b38 24277b35-a484-4372-a6a2-08ca3882ae15 c898856d-d435-40db-9371-aa90ff2173d2 7aaf31fd-c205-418f-a15a-67bef53b8bb3 fd892b63-ccba-4f2c-a474-ebf4e820bb3f d0b435c4-cfa5-4c3b-adcf-d15780fe0eca 1b0427ae-3eaa-42cc-95bc-77a166860790 04f892df-0844-4bb8-af8c-1c28985f6d44 f90ce0a9-f06d-4958-a763-e15db335a751 3a8fba10-d8e8-499b-bb05-609ea8008cbe e6bbf276-ab02-4103-aecb-3e9ce65015e9 ec86074d-b09d-4954-86e8-838c225e5220 a4bd2cad-29f8-41f8-bcd8-f8322941fca2 b5fa82ee-8dac-4670-82e9-a97adcab7777 fcc19728-4406-431a-b2ad-103db016fdbb 110dd712-66aa-47e8-986a-ae072dcdecc2 c2cd0e52-90f2-4a5a-9c8e-02fc4d9467e4 b499967c-ed56-4ffb-b6a0-54cf30c09833 f9721f69-4b47-44bc-8dcc-f13e744a4ccb a010bdca-5d47-46ac-9243-88a558a95c2a 8ad4ac2f-309e-4d92-8984-90c7b88503fe 812e3290-7ca3-49db-b4b4-445fb74faff2 d85a9ebe-e63d-4fb3-a8ca-ad22d4bcfff7 54224c8f-657e-41f2-a798-323a6eaddd70 dd9b00ae-b8a0-4cdb-bfef-d840ea8ec682 4d1e3b5f-a914-46ed-939f-d33188c94bd1 ad65faef-25bc-4d94-8712-9da9851a8bc3 35ef15f1-09c0-404b-89b7-4ded80c19dca 83c8f602-3514-4659-b663-87f049e8d563 c2e6d94c-55da-416c-b7d5-554d92bbf8c1 34ce0648-0be7-4fdd-87c7-309640a0a165 14f51462-eeac-41a4-9358-6fc2d6ddbbdf ccc0f047-6844-41d2-9b2a-b6207c116b69 b9229c6c-1048-42a5-89e1-79034bed2ff5 7bc3f644-d037-4524-8ad9-083b4a74ecd8 3d7a0df0-5514-438a-909e-2644df1048bc 88607a97-b380-403f-be3a-71d3a79d8e20 a2a22176-0dc9-40d9-8716-40ba479d66a7 c42c6425-e532-41eb-8812-bcacbcdc92cf 5b9a3f26-e70d-4f89-b09c-2ce3c2ec9fb1 fa740e0c-af5d-4034-b13a-b396b93d12b7 6770561c-8577-4c61-b065-3e51a4d177eb 63914fa8-ea48-43e5-9a20-ee010cb7f534 dd60583a-767f-4a23-a906-de96fa6b363e f8861eac-e72c-4f71-b104-e484f6bdbbf1 3c0940f4-7963-41b7-8481-3cae3325f99b b1f3b4ce-b4fe-4c68-a7fd-9447c398b67a bece4fd9-7978-443e-b974-fb2af1f4965a c62a1a63-fd4d-4e54-b844-0026523382b5 079c90c0-aee7-4149-b042-110bfe57eb30 7b9814b5-724b-4569-a1e6-66a6ce463c6e 6134d37b-aaf0-4538-aa09-9540176bd4bf e32e9a71-699f-47a4-8988-24e26f0c8694 00ecf29d-a4c1-458e-9910-7f0b4c1364ca 43bf933d-4df3-4b89-9668-69124a0cf133 ac8e2a5b-4e79-420f-950c-f01542ea2a12 b926e8e9-15dd-4f81-83a0-1c18e9a0b0bc dd15c133-8e33-4967-ae63-a9af68102ed3 bc48e498-40b5-4383-9c84-d33f3bd74e1c abb2977f-638c-492a-8d6d-8036ef1cf9c7 341e7423-630b-4264-9a8c-ca18bf8a92a2 c9635725-447d-42f1-a65f-24b48c6460b3 87310b05-f179-437b-b7d0-5ba6392531ac 42548040-9f14-4835-8fcf-a096ddc7e56e 772b39d3-3278-42ad-8496-b4e162a3a9e1 889e22c1-58b8-4709-bc10-54acae287571 62421d76-83f9-4d2f-9ce4-54dba3377fa0 e929fdbc-701c-4a0d-9cc1-73375c484fb5 e8ccb751-c978-4481-8c3f-9a680fc76a03 04d4d6ab-6f52-4f0c-b74b-3e73da915313 0e02bede-49ad-44c9-9ee1-ee1b5426af69 cb198a40-df9f-43f0-b478-d6a8c36d214f 033b11db-6ff8-4e35-b5d5-a672dae1bdfc eb5db4b6-6e4f-4f55-9a26-c8df9916ab96 ef50717e-6158-4ab1-acf4-bc62a82dc020 61d021d2-8293-4e37-88fe-ba6c01c131fc 27a20220-1fa7-47e3-bf07-9de496b7eb8c 71b3a304-8713-41f0-be47-3e66679b9dd4 d0836b8c-38a7-4dc4-ab1b-66249f3dc281 291398ae-7bf7-4946-b20d-9979b1f8bb93 67c64704-35c5-4369-a9a6-0b8f9e37dbf3 894733ab-b872-47b6-8dcb-1dd413ba9735 e7d39f64-f8ae-48c6-981f-b069301e27f9 7987ffa3-377a-4b3a-9198-66e5036632aa cd53986b-5f07-49ff-a47a-1f77a90b1443 a4f4c83b-87b5-4e4a-8a99-8c5bede7d139 46575453-8d2c-4674-90d7-32c7bfa673ac 08dae98a-7a5e-4a17-adf5-6408a114b8fa 97c8118f-7f05-4892-ac83-33774fac0f7a a250b9ea-14f6-4c3b-a1bd-09024560b86c 297742b7-2d17-4a39-be11-50a6707e2a40 be891902-b48b-4a7b-903b-03c81418562c b9ff7e66-031c-4c8e-a476-cb981fc97885 5bb17aa4-451a-44ed-b056-a6cd13bbc77f ec87f3ac-cc46-4f5c-bd27-94e2fc5438e5 8babe972-2d59-4314-aa1f-cd31d72346fc 340ea352-5226-4083-b6c1-3b3a88f7d56f d70c8f44-d463-46c8-9875-18570b3cfe50 2c89ed90-e13c-4a59-8345-7ce8c36e866c 3d661bbc-d604-41bb-95e8-e018d32caaa8 7b29fcbb-6194-4509-a376-8dd1d8abdb81 6766c1a9-5e1b-44d6-89ee-2ce98a811378 9e2e85d1-7862-4850-9c69-7bcbf927ef01 795ec656-5be1-4963-9a24-a4bb0238207d 4ab29510-240a-4803-8d28-2aac03cd8893 ff98af3d-b3c2-4471-9439-a83692683d57 460f18cb-c729-4a7a-96d8-b98968ee0513 34782e40-69c1-425c-9ad6-bf8c8322ad1b 2369ef4b-3174-46d2-bfc5-b969120064fe 0d34d409-ba77-4261-9a5f-339a67038096 d9b6c410-e6ab-4445-bef7-32a08ab82237 365cb341-c132-4b2a-9d7f-47f5d6eba510 2f918cff-2280-4b7b-9b62-88f266e47eae 3b6a0d0b-62ae-47eb-8daa-3c42a7e04bbc f66cadb9-c2ab-44e9-af37-f6b5be2d045f 5283207a-e6fc-4672-8e1f-2546823da3fc 88da40cc-3595-4854-92e2-7d26abe34fc4 6ae19710-f752-4f70-bf34-825eb8a874fd 909b26c3-5c6a-4554-9044-3e1b0030126e f03e922a-2b6b-459e-a21c-f898bd56cd01 7d8b6169-0546-48fc-84fc-a3a07c2c5c92 9e53551d-ac1c-46c8-b444-9f2d32e000ac c6dfee07-988a-4b7e-b365-cb5066b2965d b97d04a1-9971-47db-8430-83c86942404f 35f3c7cc-87ae-42ea-8dd8-c3faaaf448bd bf6b02c4-de94-4493-850c-a23b4482a25c d8ac02bc-82d0-4fe8-8eba-b09a49a5e990 a37fca59-5962-42e7-856d-2d61ad9aa8c5 c8e1df2d-a44f-42d7-aaf2-0353b7c31c7d d26e6410-8aa8-49c2-9ffd-0731dad63f06 baac9d71-d3a0-47ee-a671-39dcec77afdb 54f1c83b-1880-4b92-868c-180add5cde26 7e6d2d5e-206f-43b1-b079-ce9fc0d82a00 cbd2eb4a-2292-4264-a46d-4b0ab50c0a02 2cc43c5d-2724-490c-9468-2f4cdb9b6c55 607b4695-307d-4d69-bfa5-aaa70d22460a cd37179f-0c23-4279-a2d5-f245f3d787c7 8b665045-1d33-4c9e-b546-6c6112834fd5 d9da0750-87c1-42c6-831c-a40217da5615 cd32d86d-033a-406c-9fa0-6a0736036963 bd5ad508-ddca-4036-8fdb-bf1f6f1e18d3 7ad29b22-0547-4b24-b5a0-da71f309ec4f 4c580c72-ea92-48b8-8c55-87469e9d1f17 5a391107-a6aa-4318-a748-ebc7a06afd3f d4fb3be6-47da-4c95-a7be-8d7485fef514 4fb699ea-c6c7-41ee-9e0a-40ccf1d91f82 8bd0cb42-9c42-4793-a9ff-5c10d989d483 7f47c78c-ce4f-4d5f-ba6c-44258ad226c1 dfca6725-21c8-47cc-bcbc-b6c38adf74d3 db18dff5-b458-4f3b-bfca-c3fd8cad0f78 a7c8f022-18f7-4b13-bbd1-f73715ae0fea 3472bf58-53e1-4a75-baf1-38e2c9a5e775 aadfb0f8-00d6-4178-b592-530a5fdb8ae4 1637d225-5058-457e-95ae-69ba72fdadd9 217f24ca-837b-45a0-a9c7-4330d5bc759a d435bd04-7215-4405-a6ff-166add9b0349 3dab747a-d8f2-4166-b9f8-82ebc5423d24 9517f072-d9c7-4978-aace-a7542e34b17d d95c8013-3f7c-47f3-b1a2-ce7691a14e8a 67b94fcf-8aaf-4c18-aa1f-28446551b057 2d8c6600-c90a-467f-9a98-b680adcc51d6 142da3a8-8420-4cb2-ad9e-6d2a2fc4c633 1ff402fc-3302-4a51-a95b-af874877a9f6 fa213d14-8a7e-40ca-bc2c-cb18a8c550a6 f6778e60-aa1f-41f2-bfc2-c00c75e14cbf 640876a4-2501-4a45-9555-e5eb721617d5 eaac9136-3b6c-4fa5-a474-b74ec781f594 83ca77a2-00a0-4210-8ec0-b7457d5250ab 62f7a2cf-c53d-496e-97f2-b77cddd507ba a4454768-4278-483d-93f7-77ffe7140424 fe264da5-7ccb-4416-bfe0-b4f56c4ad313 0f6dbbca-e947-4d28-912b-22856991c3e4 3cc719ec-4015-49bf-938c-fe9f2f7bd01c f0421181-a302-4773-beee-8c66a7497ebc 489b7fda-6d66-4a02-9c63-83f0f24a0d45 24d3411c-1109-42c3-b967-7a98237b2cbd 216117c2-093a-4ace-a2ce-51a5deab4bc9 30814fb8-6597-466a-b28f-66f89665a807 4d0dadc0-afd8-4757-a499-3c4686ab9af1 5129b306-8b54-4754-8abe-756f78144314 b2a98adf-031f-432d-85f2-04cd0a002377 973c85ac-83e8-48c3-85f5-be128520e2e7 ed657439-fd4c-4381-a131-f94edf3acd1b a2ebcf22-e7a1-4483-9985-923ddb27b618 2a0f33dd-ef49-47a2-9520-3d80db4b6809 25da2795-47bd-495e-b093-c1933a6ce03a 7e4481cd-a250-453a-a11c-3f59f6e6cbab 127cbe93-016d-4594-b74d-c59dc2946856 9dabfcbc-c00f-4d99-a428-aa6a7af35d37 7d4ad9d8-8238-443d-adc6-2d0f4c987746 23061855-09af-4c69-abee-f66537b47cf5 5b89c823-2891-4dca-aa96-52e27507aa5c 0527b68c-8e74-442a-99ea-c78028d527ab 4cd13dc8-b2c7-453d-a677-ea1abab6f48d abeaf672-5157-4051-9928-7a11c6e66054 dad9a862-22d3-49c7-9f2d-142e83a86997 005f6c7c-11fd-4ad5-97e5-7b7e2306c248 f29e839d-c6d6-4908-9903-bb09319fad98 99b696e8-8780-4f7d-b92b-c66d5b5d112c 92a120fb-bc9c-4b3e-b665-026f06ce4847 16de9347-808b-40ce-bb74-18595112a184 0338267c-ef6f-4d60-ae98-bfd8fafaf42a 6496cea5-ef39-4f84-a023-16a90be6ef7a b0cd3c4c-379f-40fc-a013-04484256b2d5 8c015bfe-dd81-45ea-9c13-d31e2874f5b4 1667de4d-8b52-47e7-a58d-81ce277a970f dd38420e-5644-4066-8481-a7691d88ce60 a50efebe-0428-46b6-8869-24efeecfa4db d654f4b1-0b6b-4836-bc98-27ce5bcacfef 54ec86d7-747e-48b3-ad5b-55ff4c03eb2b fc1af9c7-ba07-4a8b-b0ba-9a8af9136f85 51a0805e-b78c-437e-8303-5eed1ef9eb32 7963e8a5-3739-4dba-ae14-da1e8f28bfdd fdfc6cdf-4e54-49f7-acbc-60ce3cd6dc55 6f4d36e6-e6de-49dd-9955-1456a67a10db 1f16f8ad-2c7f-47b2-b6a0-f4dbe9d13cd3 96ca95e3-164f-4309-b123-ac0fa6b2fdec 3e75d6ca-cb90-43d5-9e84-2215fc9fe8bf 9a19f20e-94ea-4b2e-9830-98d8f68d855d fe274db9-c7e6-4bd9-a900-7494bb812ee8 6cef3afe-648a-4fed-afac-a84ccf064443 7239b419-1aff-4deb-9299-1be123f54361 4a6aceea-55a9-4116-993f-443116a5babf 100a9cf4-4c0f-4644-ba0b-35a2174ff1c7 1abe3a14-0340-41f2-8219-aebe76c4da01 20d0634d-77c0-4aae-bb79-0120b304ca04 c39e831d-c778-4c14-a1b5-6678da677dfd 5d2caa5b-c7cc-46da-880a-2788f79dfffd 497e33e2-6d62-43e6-ac7f-54343944b8f7 a911e69e-7bb6-4118-909d-c65c7201a693 69dd3b01-12f3-4882-87cb-c38df3772d52 3fb7b213-7261-4f6c-af1f-5260dd1592ad 58c31700-b0e5-4b3f-8ebf-ac17760efa99 dd5c5d86-a7d1-47cf-8ae1-61183925c24e 846997d8-6fa7-43d2-b031-065679450276 23f6876c-133d-4d45-b05d-a92503051cc4 c898561d-ffe2-48cf-99ab-a0197948abc9 7488b213-ec9e-4cc7-9ae4-327bb084594d 902f0074-d0c5-4e0a-a4d7-25730928882b 3c3eae95-7fea-4720-a425-4cb3d71d1fe3 46e79390-b07a-4b49-a3ee-1ca9850ad618 58150025-0c8f-4040-867e-3e30e817eb45 5cbe4a48-cde7-43eb-b525-f44a07ab9f5a 02f86397-129e-499c-8c20-2a972d272a20 c3089a0d-a91c-4a81-a39e-aaaaacf3805b c03cf127-08af-4b9a-b028-ece69db1e6bd 4f3809db-e614-49ee-970d-5fc2fefaae3b 72a2d5ae-a808-4cde-9145-c01737bba68c 19a634c2-1a1f-4daa-82d7-9ffbfe915870 b6968f03-719a-4b94-990c-6e806b1c2c5b 708458d8-b8f2-455d-b317-5da956c5ee55 7469727c-13e9-4234-b2ea-f52b04cd71b9 ecaab835-9f2b-44b7-bfbe-c5e979c445fd eb88c426-0ec6-4d08-8112-fb831069f660 27ae6d1e-92cb-43f4-8d7d-a6bd4e9466b1 8c8b379e-42b3-4bec-ab32-cb6cb3d28c6e b88bf9ea-bdf3-4c27-a518-834a737ff267 f54d7352-ab31-4e6e-98dd-91bed2008725 d7f23590-8fc1-4f7f-b7fc-ced070fb17bf 62b40212-911b-4fbd-a09d-ece2cc8a50d2 b609dc16-f0ae-4fd0-9620-cedfc3adc606 dca24b37-0bec-474b-bd4b-05c16731365c b9938262-f237-40f9-9842-e9649285fdac 2a125225-d731-43cf-988e-f2d7732cc422 b2df974b-5a67-40c3-850a-cc0070301fdf 7360e0a6-bbc1-4eb5-b78a-504f92a550a6 698d9ff3-6df6-457b-8f9d-8772717a266b c7954911-6781-4d99-b9d6-4f61a11cba96 10599b91-790c-450a-88ca-027f33dbf310 d8807de4-fbe2-41cd-b99c-311e309f70f5 94a8a5c8-6612-45a4-8d24-6e0c21ad7e44 9138a394-3b64-4a93-9633-ef05b1dccdbe b6c8a75c-41b2-40e9-9c5b-3f1789e5774c 7a6eb2e1-2e6f-46c2-ac15-c74ceb238c01 7da087f3-a827-4dc9-ad1b-a6e1c0fb3c33 0d5900f7-cabb-4695-b93c-2272eb87a308 bd9f5087-2349-4c8e-bbcb-900cc83491f0 43d7349f-6246-40de-bbbb-207899cca7de b3da05ca-1d34-43b5-949b-796f89638487 dbf6bd95-0d05-43a4-b880-dc80e6479feb c49f1049-e1c0-4ddf-a4ee-7c663497bd3e 6a278482-8821-4d7e-a2df-64525b4a8baa 6769be93-0ef1-4989-873b-ba8adb55fdd4 6966124d-e254-4de3-9d1a-629c053a73ee ca6c571e-8f55-4a12-aeaf-ea4e43c521ff 5bbff84b-afdb-4a5c-a1e0-8142536811cc 6048ca5a-24bd-4c96-b79c-001af2479153 f8f0b24a-be60-4bad-8119-33880cc4af4f 2de6db9f-54ff-422f-bcb4-66c0237e6cc9 3cad5e3f-319d-4d3d-b43d-ed64f69776a7 2e47aadd-2cb6-4ab6-b087-bcabbfe96dcd 295fdd98-e792-4a47-a64f-d1e30daeff6f 913eab18-a54e-43a6-97c9-9bcfa5322eb0 bcb16387-242d-4350-ad51-e5533e0032e8 934e02da-29dd-499a-bbb4-db94391983c7 51e13f75-71e3-4a56-a5fc-189d6c3935d5 98314371-c2e4-4197-a434-c04b289f0846 05e0b81e-a43c-4ff7-9bb2-7d09747195b7 1e10ed33-69cf-44d9-8b6b-29f2f6a3800b ffcab665-70c2-41a7-87c5-649d6a53f105 ba067e97-b8dc-4542-9a48-1d66d5308226 0c82d74b-006b-48c5-b341-5c3256c3ab4b 3671066b-5034-4e1f-949d-433e88bc9197 fe09c6c0-e65a-439c-8cd2-d1ac055bafdd c93ac5fb-dbb9-4e42-ba1e-da3edbd90686 ca0d2278-e354-4001-b29d-2ddb8b92d7c2 262d54fd-610c-45af-91c3-a8bbf838e74a 3fed3a6c-15ae-41eb-803a-be0abf2a07bb 818de5e5-45bc-4647-a9e3-412584c358f4 dac06085-4d00-4cb4-87be-5342ce36b441 2636490a-eb4d-42fe-8dc4-39761ed67db7 a4a887a9-3cf6-4d7b-908d-ed2bf0993b4e 788cd0c7-87cd-4dc4-9a7b-3955bb9f8001 c727c964-411e-4ecd-a0c3-36d9d1f76632 f74b2d88-aeb3-44dd-8431-eeada1dd49de f2659e48-f232-4f90-b27a-74bde546cb4f e2cb47c3-e82d-4c12-a3f8-901c62b12b5c e044584b-0f25-49a9-8521-0a546f0236ad ae2fd31a-86cb-49b9-9662-65432b587a60 79ee397e-f7e9-4502-a068-c215cc8abd89 62a1c5ae-1488-4db3-b8d6-a24d31e4c86d 1741756d-6247-4f1c-b93f-59a31d33d572 19533ad1-ae8e-4530-a77b-c675e9b9bf3e 8d99a0c5-471d-468e-8794-3eb43901f236 cf67ba22-7dae-4873-824b-641494e9b101 6bf02106-75df-4fd0-9389-9d137307282e 8fa46e1d-0733-44b4-9498-4bd0b7943189 3b8a57b2-71ef-4c2d-9606-2fc6d2ee15c3 78ea995d-4870-42d5-b42b-2f48ef6f525f 9b9c3749-52e5-431c-9e67-764f1708b171 bcade00c-1e33-490d-b445-df20e5250996 c7d98183-4160-4f3c-b643-cd3244c073de 69e8f698-22b6-4f56-b80e-c669607b3ab3 fd7186ab-5a55-4b0e-87b1-28d8f4740a4c 29661226-a9ac-44f9-8ea2-9754e8b766d1 c7712c89-d15e-4178-bb64-3a12d60212d0 ca58dfaa-befa-4835-94eb-7071842bd08c 583034ce-eff7-425d-ace2-58328a24b623 6b0c734e-d3ce-43b4-9c67-6f2afdb97e07 d9a41e3c-38da-4d19-b2fa-b622281b506a 4dffa7e9-f9ec-4c07-b7f5-6b3187561aba fc7c74c5-bb91-42c2-a478-b42964fedb6a 061b022a-e8d0-4d8a-9cf7-2612c3637596 7ad43626-c288-48cd-9c01-5c407f472c66 46cab11c-948b-421f-be69-ddc3ef00aaf9 ee8865ab-c1b1-4bca-97db-2ca137b37612 2453e6a2-9441-4596-b05e-d816a7a08236 06b5924b-dd45-4348-8e3c-4bb645a9e1f7 54c31464-b301-490f-ba66-2e9ad739374a 5edca9f1-6fa4-4887-ae44-11193acff56e 028845d8-b5ad-4e1d-a78a-51da8df0eb28 0b3afc71-bdeb-437f-9acf-98630b4540cd cd41e0a1-c199-4554-b3aa-d8d334194d06 fefbf1e3-f155-497c-9ceb-02dd1115b906 107d4de1-7ba0-4f19-98d9-33b4da426fb4 db5af70c-8cad-46d6-a8c4-93028cedaa4c 6c8bad22-18f0-4823-92e1-7a07dec5488a 9447559a-d927-4222-a3e6-7bc2bcdf3000 b5bf73ae-8b40-4c91-9bc9-970997516588 da484bda-15ca-49ab-9a9f-99a7d3f2011c f0a57e72-9815-4cec-9d05-10aac357a85d 13996b25-91bc-44a7-bbc9-0593fe2a4dc1 00a7a1ec-d1d8-4636-bc12-a0b3b87ff0fa 98c32ed7-d036-447d-a347-3b2668d1ed6a 50c27dee-2720-4fdd-ab9b-a9a0d252ec6b 289e2c23-fc34-464e-a709-af5a1551e799 93bf6366-aaa4-4266-89ad-2f592d94722c c9c31f60-ee40-43d3-82cf-e5632a6ad09e a35b071e-85ee-4629-b533-741a7aa498aa 1019727d-0561-4906-8f40-497910c145c0 64dab9cd-5319-43f7-98d6-a8e7889c508c fac743b6-1cd0-4a34-8169-f68c697919ac cf920f38-226d-44c0-9b41-91c283f5368d 847531c3-b409-4fec-a61b-ef57228f42da 569c7b64-988b-419e-adb2-b9a03ec963bc eb187a0c-fbcd-4aa4-8555-d07d3b2c98e6 8836cba8-f9a6-4e76-a5cc-6e948e9951c2 fcad5e19-6727-475c-b5cd-73d63900cfbc 59a80594-e616-48be-b64a-4cbd1c1a6cac 68a77e8f-daa8-4513-a851-feba0a30b8c6 8c825be0-651f-46fd-a9fd-6aeccb4d9a19 3031dda4-ba73-498b-950a-1d97e92a6f16 206f489c-ae01-4612-9e21-b12e86c6ba4a 33e51bc7-e03b-4ca9-be87-3e117f201e2e f0bdd493-526a-42fe-aa91-08b36b12f288 30a3f7bc-a4fa-4e5a-b060-9a4420aea6f4 aee4865b-b562-498f-871c-586deeea4874 ef8fcd3b-6f27-4547-8162-951dfe550d5b 32a80683-6843-4f12-82a8-e461a845cc90 1d8564f7-8af2-455a-81bb-fd8178dc9b16 2a8762f6-fe65-4f8b-8275-eaf911c958bf c2fa5f87-e1cf-4be3-bd72-44e55b205114 afcd9c66-03f5-4c01-8b80-6ffed05fa894 a57eba02-f9ca-4501-a0b8-09fe6b18496c 03ffcb2e-0c71-404d-aee2-fc92129c726b 9fb6dc1a-2706-4255-82b3-5a2d2cc0731f 3291fa72-f2bb-47c7-87d8-f5f6359dcc2f b21259b7-9489-400d-90d4-c39fa3b0f7d2 5a1d8dcd-20dc-45ff-85e4-bb6245f7b52c 1f413c62-2bbc-4cc2-90f8-d1eeb7de77da 4ff49873-713e-446b-9c4f-e6e20b4eae21 80397d1d-c320-4dde-b8d6-ecfb2a213c42 8cf0677e-6e96-49fe-ac8e-2a814f6d44b6 d8b732de-e546-4718-a140-83dc01286de6 ed459341-4d8d-4c2c-8068-f4fee2e61524 f98d9272-2d45-4df5-be20-31d2b039b6da 330fb104-8ce2-4359-81f5-b12ea5a9b279 9ae01cf8-e258-48bf-81b6-df0febae7c8c ebe0182a-14c2-4bbd-932d-a54ec1756ea6 1ece5df4-5031-4807-8eeb-55f0915b8059 154a163e-f8ea-4460-bfa1-9cd0ec99f340 5a4eb7d5-a076-4925-b238-b2f1a3084650 2379c64c-9d1d-4b2e-b9b0-4224b28fd4f4 9cae869b-3293-4e63-bd23-a31d72c903d0 47a2a861-ce0e-4c27-b359-4487a47d41f5 1e717009-f0ee-4702-93b5-e42e1b035188 23104502-3101-4152-a885-8bd35ebc35b3 665fc403-0ced-4203-ac2b-de3a8e05a948 6c980ed0-0a03-44ee-bf06-c04d8a58a1f0 58b3e707-a91a-4690-863a-8ebcbca4d432 633d03c1-91ed-4d68-8a7a-8bce211f62de 18a2a934-e7d9-42ce-bc72-328bf7288b0f 23c44aa1-b0b4-4b8a-a355-7c2687bf3c02 0a311781-3f74-4624-afab-5eaeb56a828f 8e8e385a-3c65-47a0-901f-9eb9ad2068cc 3e713f48-2917-420d-b5d1-2b8b32f52797 a998f635-2888-4422-b933-14bd7735a6f2 64424dab-865e-47a9-8bb1-f2fefc522845 19175a79-01b5-46fa-bc62-6543ee517d93 c58220b8-d04b-468c-bfe8-c9a9cde83644 ada96c8e-c922-4386-85d2-c711bcfb1924 90004766-1d72-4905-95c4-48f008ef0436 e40af23f-3798-4791-9c6f-1842e48d1653 33d3d35b-6b12-4cd9-b657-640cefa509aa 30641bd7-db01-41e3-be9e-269a88d59a4f 9aeb6643-073f-4a58-a8de-ef2e347b92ec 545dbb68-2ff8-4604-b4e1-46f9cf892c3a 815f3a08-f8ce-423c-9d03-ea452c6ce0f1 0200eef3-5198-47d0-ac9d-e3365b57311e 31b687df-2260-4a5e-953e-68c5e7da83a6 b04789e5-3bfc-4641-9d73-add78a861997 14ffdcd7-af80-48dc-95a4-50907ca97777 4f6bafc7-22d3-452c-a553-4e551d01a535 ffbb5e41-a890-4fde-aa8e-5e3e3eaa34a1 17839d57-1c2c-4ac2-aebc-8d383b4b7965 d606f804-8691-4c0d-bf73-696568b67bfb 784fafc1-7167-4524-991e-312666afc8bb 95008012-f5fc-47d7-8aff-c0d3c873fdbc b34b8908-66b9-47d4-bf18-3e0a873a8c7e d7c0d082-c70d-4cab-a174-c2c4f4e898f2 49986799-2164-41f2-91fa-f665f2bbd20a 651562e5-7b5d-425c-9b9d-c0688c58bc34 774360fe-9139-488e-8bf0-68eaf0b8e059 a3d38877-2c1a-495e-97ba-52606a91fb8f 4bd84577-2fc6-4304-82be-8a0d25159865 27bdf25c-e168-4948-bd38-fd56857a0e86 4e40c721-d738-469e-b228-86132d79b186 ff520319-0e5e-40c7-b000-b763ae872aba 441ce442-482b-45fb-99b8-d36420d5608b f6bf9ef4-12a8-43f0-a532-0162f73b8b93 55f42dcc-d635-4dbd-9488-4a0ac251e896 685f2064-d968-45fb-bb54-ede02babef5c 903fae11-6910-4a60-9006-30001b2fb0f5 e82feab6-c5df-4c3e-971a-aac1a8d71c58 690b9728-4bc5-4b9b-99ec-0c86cfa44c22 6fae3951-4919-49d9-8f2a-13c39b75ed3c 153633f6-ea4c-4f2f-bf1e-cd550ebb27e3 c30edc0d-d947-4eb7-915d-07168c391344 8f79c904-35aa-4e92-b1a6-b940b0cae1bf b391fc53-0475-4d2b-8197-a3b4618375cb 29ed4780-48dc-46b2-96fd-7c8f4bab5695 b12eb94a-3108-430b-b8d9-4a3e360d9a22 b424249d-b190-42bd-87ec-5599af5edb6e 1deb1c70-af68-46b6-82d7-c6a041030d05 84e7aead-073e-47de-b5b5-1814d50a796b 6a674365-5c69-49c2-98e1-536fef57df5f 6bb14453-2d75-4e1d-a11b-da090b609018 3a4f741e-8338-4368-9c90-33d66efbb67e 64a77507-fb10-421e-8d7f-946de5b32217 361eb228-947b-4371-8f2d-1cf35f5dc9c2 1510387c-0c9c-4ef5-8360-174bed2e5af0 5a37c93b-2d80-43e9-ada9-16fc9c53f032 3e6abd1a-df5f-463a-8a92-94b53fd7c4c6 b116656e-cff7-44fc-a279-28f52c5ca484 47ec8942-5f60-4816-be50-b951e77a63af 0cc8ee91-57ed-4f96-8a1d-894e7ca98b35 499d127f-e68e-4a8f-b884-035bcac6e011 06006c26-0f33-457c-bec5-6f4e195f6bd0 f0881199-44e2-46b8-bcf2-679b3c8d98a0 d9ab6068-70d0-4b6b-9726-c15d010bd141 bf716bf8-ca88-4d1b-99b2-69cdd094b3b8 076bb8ea-15f6-4554-997f-7183215b1f4b 5619a732-0e9f-4f8f-8ccf-2fde163066b9 efdbbfec-56dd-491c-9fad-8fb3a35cdcd7 33179e7a-86aa-4388-bd8d-971d88a1fa52 8c80de51-95f0-4675-9356-496bbf04edb8 d59b498c-2542-4147-8a48-e1c1ad34a6bb 90e2c92e-afb4-43be-83f3-cb473e5f2a34 299c8f66-8e76-4941-9b76-d4903cba406c 92dc9f62-55c6-47bc-9b9d-4ba27bee097f adac4d9a-0312-4236-9b69-3d79ef3cc605 b37f76b6-e046-4ac9-afca-14afba6a14e0 e76ee7cb-28a3-4dfa-a978-f98d223360d3 b9d95a47-9680-4b92-bf75-a7391169ce24 f965de17-5718-4942-96a8-0eaff6d83c88 185e40de-bf80-4a00-aece-39bd301e2bd1 9fb3db0e-b63d-4cfd-8885-8cd4399b33af 57670762-6221-48bb-a82e-ff1a7ca3f51f 9ac16774-5bdd-4784-84be-19dca4755470 265b8a2a-805c-4164-a49e-5e50e0158662 db66a179-5ece-46d1-b515-8a0a9c0b842c b6c02558-ee51-4fbf-958c-5bf058303ab8 407e3c2a-6be0-4a31-9099-d9457535449e 51245a6e-97cf-437f-8051-24c336a266f6 a916a36c-bb02-4b24-8d2e-554ab5bbb9b4 1a0a5f00-8d7b-47f4-9537-92a28a23119f cd41bd29-a775-4add-bc24-cb68467c4c1a 5c9650f3-b1a4-40dc-9014-98ee6f1fc004 b1e2d126-f3f9-495c-a761-128c65ac509b 12b1c935-c678-461e-9b34-b41f5f5c5642 697163c6-30a8-4cf5-8ebf-44e6860d5ffa 1b4c1414-afa9-4919-8d3f-29f84abaf9ea a30846b2-b68f-451c-9c8d-17281726ec85 0ad8bab5-f2b9-443a-9f52-f4afcd5a4c8f 7a1d50ac-7979-4098-a524-e9a83451c8c7 47f903c3-c9ea-4836-aab3-bb49d609f232 06becad9-b2bc-4d73-8112-64d3cb7eda8f 1e5a95bf-6eca-468a-afe1-00925bfcf715 53084f1d-fc97-4546-aaed-34a8793ee80e 0bd03ca4-2de4-43e1-896d-9c9a9cddcd65 b00116ee-c3c8-48a7-a3de-3542760f4364 b31be402-fcfe-4b27-ab01-f3580d89a5a9 c41d0886-e7a5-41a7-835a-a65c3d595d2a 52a14766-1453-4afd-890b-fef4de926d4c a20e7277-0b69-432a-b970-ede6a836dc37 399ba742-4fa0-4453-accc-21966b16aaa0 f3d65a3b-c2a3-414f-a52b-9634791db554 33400d9a-ac0b-4678-98e6-1b6b97d25e33 851f42ed-65cc-4676-9791-f29f5e95067e 39a9e18b-314f-481b-8866-fafc2b39e886 3a59055f-c1e6-4b4f-809b-368c13bec49b 835907b1-bccf-4894-b59b-9494866c022e e89ad231-41ae-4a0c-a4ca-a7cba1374e55 99cf6693-4cbc-44c7-ab5f-dbfec1d05c79 475220dd-6d92-4912-9cfd-1c87e128bbc3 e561d4fe-36e8-401e-b780-c7c63a38efa7 91757cce-32b0-44c5-bebf-8a2a3ed1d625 b9c6bcdc-8ef5-443b-a6ca-6aade99b6d8b 5dcb6aab-bca6-497a-af95-7951b4940b3d 4439325d-786e-43a7-b791-6e5d45e38f47 c10f6bf7-2a6b-4af1-86eb-9a60351e9811 fc98ffda-ef29-47b6-bf24-e94c9e428256 19898583-5f49-4a98-9141-0adb1c4e5c5c fd4cb36b-cd5d-4854-a3d0-d5fef135ce43 cc8862b0-cd80-4854-afcd-41f245c0102a 7914aeb9-01ae-484e-a649-71e3b0b2457d 6c2c2b8d-65d2-43a7-9d5b-9b7df93dd260 b3e0d4d5-2f6b-472c-8cff-74682fa8615a 203d16c2-bf6f-40dd-a105-a3c0060bbf7d 72cce2d2-2e57-4db3-98ac-82d12e255bf0 5dcff481-aef0-4727-a0d3-1ee37d0930ab f3780dbf-06b2-4e4e-825e-d386ef2dfa4f 9a1c2a19-fb74-45e9-be6d-041ac6c6fd47 c9d8b033-81f1-4c15-91a1-42deb843a839 ec5cba0a-3494-4775-8bcc-23e1463c4ab5 29c498c5-5aad-4ec6-9f11-742220a67012 47427882-a724-414d-910f-70c3bb3b422e 7ce4e603-0ec6-4767-acbc-fa91029d7c28 00e548b2-f68a-4ce3-b54a-52a008dec76c 55153561-cdf2-42bb-b854-8346f259d5e3 bf1cace0-2b39-4ba8-bd1f-ceb1c0082256 2806302b-024a-483f-bd93-e5ba1ef6e5df 4a78e6f8-b671-49f9-b099-99702e580f5b 5c87acdf-fc4b-469d-b7bd-4cc526b70874 44fb7101-f6c4-42b0-9131-fcc121eca866 e0ecb396-74dd-40cf-a4f8-a7b55144c86b b00733a1-86cc-4b3b-bbe5-2b6cf24ebdd0 a56b8d57-1264-4827-b42a-4a3774abe1c4 66c09e04-d76d-4b68-ba80-de7d0fc7b9bc 870605ad-552e-4a0a-bbe7-493ba01c465e d06cb7e8-dafb-4835-b34d-743e5a663312 86741cd2-c6ac-4ed9-8bcc-435655a18d50 50a74287-cf90-49ff-9326-872dae222b99 83a0812f-baa5-49bc-bae6-617bc052bfbf a200fdd0-3fb9-47ef-84b8-399cecf476d9 f34db6d5-a062-411d-944d-e42c1f0d730b 34c86728-c2bf-437d-9cad-2a4679eea138 6a03a2c6-9047-47f3-bda5-2fcfcafbbf9d dd3128f2-ee4d-4946-88b2-65b2c125bd16 f0d612d7-cffe-4f21-bb7a-d580aebccb0c 0b36a59c-552c-419e-bd87-96428eff20e3 a80cba96-3a91-432c-a73d-bbea4fef9c11 bf3cae66-c784-42b0-a778-333eb35d6caa 9c7b1938-f125-4134-87a7-d25ee07afb14 4490fcdb-bd41-43c3-86d5-2628cd0b4df8 e9851b6d-cc67-4ceb-990f-9d4bccc1b9b1 d0f8acb0-0325-4aea-9a5c-faaa31f02e9f 4c7f4d23-7232-4fc0-8131-dbb763f70cf9 eee4af10-0e93-4ebb-b1d4-a6a6cdfe3dec 190696b8-f8cd-47e0-99f8-75b7ef775885 109f8335-4910-4125-98eb-f4471583b172 948eafd7-aafa-4285-a442-2420a996a256 46bf94e9-712f-4fba-9f05-1251e1b607cf 04de1f70-d27d-4312-9037-1514a68e6757 a376e233-719b-4ac0-95fc-cf4e6c64b188 166e554f-0fd2-47cd-8b46-1b559745b54a 9ad0f1d1-691c-49aa-8452-72e6abc808c9 fac2580f-f56c-40c6-ba02-e3dbf8324b2b ff6557d0-312c-4aa9-962d-ef24fffe9d54 888de2de-534e-4a6a-9a1e-e4ca3678f043 15c900d7-d5af-4450-9d6e-f3dd84d464a1 c5df5946-4d2f-42c8-8a4a-0c187dcb339e 7c199065-3f42-4f1c-8a42-094b6838691d 2ce888c3-484b-488c-a9c8-d8152106c650 54ba0349-a56d-4aab-bae3-d648864fdd50 d0d06512-c2af-4827-9129-1b816ad9b285 6d8f183f-7040-4580-a923-ed463edd3dbc 0fafe81e-43e1-4488-80ce-44bd150b114f 0d3f8c80-6c72-4087-9b1a-b3e0c7f52967 60e638f7-2d0a-4599-af69-d6c46e1dba19 7c942684-170d-46f4-ad9b-48d984bf8ac1 995761ab-fa68-43c2-a77f-0899e50b399f 8b063ab6-78b7-45c7-9326-935c942fffed e851a375-5ad6-42a9-9e70-2371d87f9ffd 2d6bdf65-eabd-4a13-8e9f-a605c771216d 9ac2a9a2-e48c-4b67-8ea5-0584caa2beaf 7b53d2a8-ca81-4380-b7c4-80f5c6813b14 80205dd9-65a8-47a7-b31f-ff043c09edba 31982d59-4ae1-49f5-a43e-70a56b828178 0ba26418-3c5f-4f29-9f70-1faf577ea63b 44ff14d2-b9eb-4116-9649-8412373ae3ae 7d19f7ef-ca89-474a-8d3e-7fd18e57feb8 1919f5fe-8053-4e65-965c-d981a7c63cc4 862b3da0-e534-4faf-a481-306d6743f443 440539bd-c757-4431-9d50-8c49ad3bd886 797ebaf7-7110-4f6c-a2d7-768672f5a4ef 7eb98dff-efc5-42da-922d-826159a3efba 1789c397-7355-401b-8f19-9b42d88f0db0 8b945858-5ba7-4555-b3a3-cdd14e610a67 3531aa29-e253-44bc-b401-6e69394e88f7 d2da6920-74c5-4483-988e-114a2f0c6f93 d1dee157-c251-4a4d-8264-b8be238330c9 8d07ae7e-6286-4e85-8696-4293905f9ee0 41f0243d-7624-46bf-84e9-721c11f125b5 94070896-f13c-4a13-9065-abd6e96b7b86 a9fa91f7-3368-4c2f-8d55-c50d24b3ef02 e648c4f3-335e-43d5-b5a4-fd6d52a50820 7818bae2-40ae-448b-89ed-d6ed8410e559 7852fdf9-11ed-4b10-a76f-e81ebd2f0da3 49504b59-a047-4f5d-9d85-d1b933bc63b0 45778048-d779-489e-955d-26c613a09914 aaa48f0e-6e61-4361-9c73-72e348ea1527 11457695-6315-4066-a59b-c293a13a3468 eb687452-faa0-4757-a7aa-b3b3aed687a8 f7491819-4bc3-4fcd-b003-ea32649badd0 c5f762b8-5732-4002-be4c-793c94079ccc aa5a5cb2-0a07-4484-80c6-47c0bcb555ce 9f644c39-d25f-494c-abea-65ec7e0ad937 b4ce2dff-37fa-48d9-8c1c-acfb73abed93 31cbb09c-46d6-403c-89f4-d91a58863f11 641c6ff1-b7c2-42a4-b9a7-6a11b545c0e7 3203bbb1-784e-489b-8c84-baffabb694f7 03cc2e30-c166-458e-abb7-de59d0f9f304 dc75682d-a353-4d7b-b014-b02b1ba4674d 400a7e23-de0a-439a-94cd-02e51c36a85b 8ecb29d2-26c6-4dd0-924f-06f5191bc585 6e09e506-95d2-4e76-b608-8f3f5f6891f3 3678fde6-9930-4d74-9e48-13675022f817 4fc5e8ab-a87f-40df-8ced-0ea3863fc21c 9f1d96c6-63d5-4abc-90f9-08f0972f3c30 b87a62a8-f6a4-4448-be5e-b17b105ffd96 fe89fc13-e8db-429d-915e-699da0a370a4 4d6ace4e-66e2-4717-b7c3-51814627f2bb 03a28232-f387-4794-83c8-3714d17eac35 791a227b-91b3-4aec-a652-a37d5f7bdcf0 222211aa-325e-4d99-9661-f0656bc75cba 0779e177-6a5d-4ca8-a7d4-2cbcb700c5e4 8d6a7d89-5638-4723-bf45-1d211113ddf9 4737d6ac-c2a4-447e-b6ea-3a3af703d40b 8a9fc5b5-bb4f-4c7b-9f20-89b0a99bb8b7 102dc71f-a633-4333-804b-5c7cc37fd751 51678172-ecfc-4189-bce1-0d99d5fa6d97 86e82666-0470-40c5-8cb0-1501eb068745 f665a2a4-2a90-4d26-86cc-1c6539bf5cc3 56766de7-f2bd-4e86-8980-38072eb62c6d efb017bc-c7bb-4042-b11c-941f8afa57c9 e9842df7-4ddc-45fc-ba4b-35e3c8ed8200 8779858b-cabd-43b8-9965-214d337bee90 06c893f4-7161-4c0b-afcd-b6c8e2003935 a1d95cf3-4074-44a7-98b3-968327309f97 c47a8e39-b31e-45a3-b697-11eba1032f86 242ddb4e-1f05-4c98-b57e-2b6e18651a47 3ed41de7-3907-4098-b3d2-328a74f4830a 1735eab4-333f-409b-ac07-b7565b6e084d d9fe0025-3455-4405-b8d6-d6ae31f1eb70 702b61d6-5318-4d40-9f62-6d8ddf82d3df afc8a815-df70-4144-9ffa-1a2ab62cd272 1e5a92da-e5e8-4e7a-8335-4378bb1a4e9e 7873c57b-1dec-4d7c-a49b-3f4339ea3146 3a24a5e8-5321-4c5f-a75d-fb471263f08f a60ce860-480d-4956-ac9f-20cb7f2bf476 9871e0af-2c55-4225-99f6-11579fca4c99 e41c7836-1382-4c98-801f-c90b32a0b47c a81f9f88-505c-4308-bf42-1c75e8c0a702 7f76be4b-f6b5-427e-a782-b89d7ce7a4b7 0682677b-3aaa-4944-a019-65e0c53d676c 05c40370-5d01-4311-b741-2b4d16893201 25a39177-639d-4908-b2fc-fa3f22106f81 07558e65-f704-4a30-a0ec-6e53065fbd43 48caf102-1119-4aba-a6f9-6ba1425d2464 b69aa309-1d09-43eb-8ed8-43f83170808a 2e5232fc-3d80-4818-a0c1-01708f8bb489 adef49f2-0c3d-4c69-8352-03c99c66427d 91db9968-813b-4fca-ad4f-ca4e7b524276 c5cf80a0-746b-4793-867b-4dd2c18cb82e daaa1e9e-b4a2-4024-8ab4-9c2f7deda785 d9508ca9-957e-413f-868b-39decafef63d 8cee5ec8-00ee-45c9-9435-3e715796f598 c4cd6dcb-74f6-4f63-a7d7-bd1f18f360c7 01485141-d70c-4c20-b7fe-03080f0dbbed 551999a6-c719-4cf3-b07b-10c329ac9c0b 76d1e916-ad74-4885-a304-c81657b2d61c 50404fe9-1675-4180-a2a6-b1d1d66b85b0 d4fa5021-f6a7-43f7-9b8f-cacb7739c78c 53cd18f9-1f56-4267-a34c-d11cedd82262 beab3b17-3d7e-49f6-80ce-599d29b503f2 a18d9d14-3945-4011-97ea-db87c9c5478a 7ae8221a-c2fe-454b-80ba-c4708e4595b0 6156b554-499d-43bc-a71f-0f976f7c5db6 4a5d454f-f44f-4dc4-95ac-815435a65e49 1e4839f7-ac73-49ea-9c27-03ac73cc1279 b3b810bd-2c15-431b-bad9-08e4bec0e752 39ef702b-8fc4-4162-9ae6-50a0ff847f9e 4f1acd49-d8eb-4f52-91fe-1cb48b95a227 73711c22-fe97-40e3-835c-1dd1adfd33f8 e9b4e456-4d09-40ed-bcc0-3a3bb8bcce24 d102a6ed-0872-47c0-8b25-6c88191cad41 62154ef9-c01f-48e4-a4af-4271b5d85e2f 451184bb-3d4d-4c06-add2-183aa58881c3 6aee1b95-9226-45af-8426-c7d98add97e4 d99427a2-214a-465a-bccb-5e4029366b77 0174eee3-756c-4c89-bf2f-6ef500adac6b c750e97d-d05c-44ed-9641-82a448cc546a 3e378daf-7171-4d17-a75d-c40ea17e880b 5ff7b623-0e15-4b48-a8ad-74a5aac83496 80f72296-8f4e-4ceb-b113-2855a1f66ee6 bbd3aa83-b9a8-4ed2-a0fb-9ff2db442667 c5a040e5-e39b-4e5a-805b-db50503bc743 dfc07ee3-7c5a-4374-bff3-6dbcd082424a d3fb3a38-adb8-4b48-893c-b5b706697f77 6458a8cd-8430-409b-8c95-eca3512b9bb4 5f99b972-cc64-497c-a631-46370720174f 150c8018-5d84-4319-ae15-4b59f422703c 2a7b80cb-454e-40cb-8a48-c394689cc213 5e03f76b-f68c-408f-a651-9b8dce0a59e2 c40feaed-50fb-4a4e-9bf0-d9960e1ef073 3548ec0d-feb3-4cc5-a272-045e06d48130 080a2afb-078f-4236-a4a1-1e671b7186d6 c620f63d-342b-4e88-82e4-9d979bdfd648 ed0a7ec7-bc5b-412b-aeea-c49a474f06a3 f8e6dc58-ff51-4af3-99d1-720d425c133c 651416e4-b1b1-4490-bc31-69c92e180f39 987a92b8-751f-4c9d-9dd0-5700e0473c96 45d0889f-ee52-45dd-8585-b226f445d517 850b2bac-7a53-48cd-bcb5-e646c2f2408e dbad178b-774d-49f6-a1d2-7c9ee76ecf52 37ea4dcf-5751-446a-bc5e-f1bfdff1ceb0 02b48bc8-89cb-48b9-8f40-c411cd53c406 04d44834-8dca-4cd9-8b8b-746f4a7d2bc0 56859ff6-0327-4015-89d3-8ffee886d3bc 1a4b33e6-8a19-44c5-8cda-2b7dbe608819 67e19557-f701-40b4-83aa-6f90ae5b2923 d633434c-e4df-4907-bd38-3bd96023ffd6 89f1f459-65b1-4daa-8316-2351aaf08d2d a934ad92-5ee0-4651-907e-41e6cbffe17f 408bb600-7a6a-4f58-9897-bfffa82851b9 d8cae26c-8363-4db1-936d-f312cf1d9eb3 64fe162f-b600-4730-ae4d-18e0c817f15d 48fb24bc-7f7c-4762-9db6-3251ba44a7f8 5f012580-9df7-4788-8a3c-4895a6d2fd09 a21c28bf-f729-4526-960f-cdbbfb86f2d8 3db037d2-cba3-4291-a2ee-fa61d60afb38 36df50da-6b73-471e-bfbf-78a54e4db7ff 7cb1e9a7-59fd-4b88-866b-ba694eda4ac2 8a36defd-aedb-4c5b-a2ad-0bf68cef48f5 a04c5cb1-a17b-42f1-b34c-69add882cb40 f273c18e-6fc1-4f19-b985-00c5b002dc75 49eafb41-0829-42ba-8840-0efa0f4b9cd4 3fa4dce3-71b5-447d-972b-3896a85c767a f3e42dfd-eece-47cf-aea9-2e023480187a d09b9187-78c2-434c-aee9-5e362e7dfc9e c804a50d-acbc-40c5-b807-d5b388649f1d c6e68aea-cb47-421f-bee7-df2a10830506 8fa18c19-4fb0-4f38-8a67-9f63be4326d8 75bb1e6c-d42d-4f30-9717-a3c4fefc35bd 90f92635-532a-4077-9995-b3977f668186 b88266ad-46cf-429e-ab6a-b6747ccc65c3 001ed7d5-3d40-4cb8-b4f9-472a598f1221 2c3ba588-8148-4f1f-b4e6-a270121704b2 c6e0976d-31f8-4bad-8346-fb43f77625f0 98fafb54-f498-41f6-bb6e-fc9c6a82f13f 9fec4c1d-bda8-41e8-b40e-1c0cf9809f0c d359d526-bc39-48d3-9563-585443dbf005 08121d14-fee2-4e2b-bd0d-96b5a8fc2b43 9eaee0fc-59f9-40c6-861e-d1c87a6efeff 48e447de-9dbb-422e-a1d8-849a1b88f1ac d86bd897-e133-483a-bd42-79505fa9db85 14434ed3-a838-4dc0-a46f-3920e5499752 71ef5f8b-ed8e-4585-8b18-2f763908b4ab 4cddd330-9988-4228-ae62-23fb3a08d88b 228f7ea5-2f09-42c4-af58-104e44253850 2b795adb-b95e-4f50-827b-5119cae4c881 536cf483-0e7a-427d-826d-132e6e221683 7c6e8147-be4b-4ab4-b062-74a8e03a3ed3 291403ca-9ce3-4acb-98a8-e25715da866f 61a5e8dc-4e31-40b8-9c9a-0cf28fdec4b1 1bfad259-80f8-4e55-b6c1-b1cab8552236 ee3a2a6d-8562-4d0f-9a4b-df3566383bf2 c8ad6b8c-7be2-4e4e-b13f-9087db64099b 6b3f25db-64c7-4fff-8854-856b12a3c974 98f48661-ef48-4f4e-bd31-d4c45a923ad2 b2098803-f078-4c87-8657-e6c9118b3834 ac0ead92-493b-4d1a-9600-f9c88408236d fcdebc4f-7e17-4771-bd74-55184f212298 341a68d6-1a9b-4897-a7d1-f9e5f86fcad6 2134f715-b381-477f-a984-5692dfc95b83 7a300a52-5058-416f-84c9-42eccd1756f2 78208155-f827-4961-bccf-be0c5bba031a ee4183c5-7fcd-42d6-b80d-7f45b56a47ef ceff84d4-5be0-4e19-ae55-9043c3a4ba75 70b0289c-e65f-49bd-9bd6-d99bf2d5bd44 68107fe5-f6b2-46ea-b75d-685fb153cb59 e2cb9c4c-bb34-4cbd-93af-805d48139195 0c0fc83a-8394-434f-9261-d972785a11ac 88432f23-0d12-40eb-b348-ab37fc34c299 a6a2db9e-7719-42ff-8e95-960f2b333bf1 e35d46c1-5d22-437b-946d-9d309e9c4a15 1fa823ea-1f54-4988-b806-1ca70ee2b8fe c10e563b-84eb-4002-8482-2735cef84950 4a37f581-2afc-4b21-a115-db8ac1acf9d3 be5d3b44-dd7b-4795-8943-998d91a378ba c10fc661-73c7-436f-85a3-60de3bba0ca0 f3d5fc66-6e8f-4f55-aec0-0588ec5f434f fc6edb92-7eac-455b-9808-bb3e86bb35a6 43d18635-6c69-4d86-a2cd-46d1d09c6059 9683bd3d-3239-4148-b061-aeff4d3b4e2b c4e440d4-0a66-4ce2-8281-d53c22c5f9d8 20b58bf9-6e03-4bcf-82dd-6729aa6f88f2 492f562c-9759-4c8d-9d4f-3ce76a8c3828 6af06250-9607-4584-bcdf-d5f12efc7fd6 30c551f1-0873-4f68-a40e-a171ffd7f16a 251344bd-af60-42a8-9449-a33354637e9f 7e26753a-494e-4a8d-82e6-9a72070d245a 48007fc4-ef78-4160-8850-0f41ec43fd90 994b7820-dc90-4ff8-a091-42f835c00f39 659bade5-d86f-4e08-b6f2-8835f39c1600 49d664ee-b5e7-40c4-8742-9b127813f4e8 d0261e4e-9dc2-4e68-8fc4-656abdbdd2b9 7487d840-ec8a-4bd2-a214-ea1108949909 4f09864d-08a0-49b4-9886-63749eb169ee 495d3ee6-a775-45c1-a03a-5c8d41ad5a38 8f015980-128b-4079-98d3-cd40ff205469 ac97d1b1-0b67-4411-814f-22d793698873 7cb58391-b322-4eed-8018-6bc967b3c86d 59fb0368-8c5d-4537-ba3f-9d1c56b0d0cc 09796639-4f92-43c3-845e-52d917e9d467 b61526f8-7a04-4c64-b657-0ca3e2d660e4 c580446d-6ee7-42ec-aab3-c342ad5ed061 49a4f9ff-9435-4857-bf51-eba9878954a4 43e2dbf1-bcb5-47b1-a293-9986b0678996 14e0e622-9db8-4f52-a0c2-c482ef9b8f40 48526c35-dca0-4c48-9981-e8100b73e59a e7c18d3f-c744-4b16-9bd4-fa316b809872 15befc04-7ef3-49f5-a1e7-2bbcf2044ca4 392ed4a4-cff5-43b9-90fd-97dd3ff9680b 6d0038c9-6c87-428e-8fc3-02a444a5061f c229e22a-150d-45bd-8ea1-303cbe1d40f1 84130821-5b98-4fd4-bb57-ebfbb912c83c 4bcf4785-11a1-4d25-a4bf-f5a3b386aa6e 4f0e9a13-a43b-44bc-82b4-a0978a115239 d2e76421-49ba-4308-bfe1-5c8e1e6914ae 0dd50932-2141-4b30-9382-0e08a9a43644 7c6395e6-2d51-44d6-a694-3e4ee7b817e0 d1eeb2a9-5bb6-4d95-ac46-31ed58965f46 1ca1c9ba-be5a-4895-a875-f989cd8b8112 dee6b613-4462-43b7-82db-37893b1ba4e9 0ac6d655-f08f-49d6-b768-2057055ea213 08f477a4-6276-4bc1-9a72-4af76da3d293 00bec8ce-118f-4696-9404-93f9c954295e 3e7606b3-da2e-4bed-9482-d5de6c46d13e fd4e1f10-038f-47c0-bd9b-c9b5cb0af782 0ec8a04a-5bf5-407a-872f-7f7008fc10c5 f1a5ffb7-44eb-40db-8f60-3f8d6f225c1d 992c8fe2-47ba-476c-9072-7c776eec0c95 80c4e009-8cd4-4eba-867b-7dc21c5b0fc3 c340fa1a-5ee8-42fb-b11a-014b5c1be8d1 2cab0357-9922-4433-be37-44ee7e841962 1f8ea4cc-dafa-4a6b-be94-ae5ecc3887f5 58129cc0-2e33-46f3-9dd2-8688006e8fa3 bca633ba-5690-4638-9ed4-bf0fe3c78695 d006ab06-7b62-4389-85f5-0a996839cf66 c24a29b4-cb33-400b-835d-0ab89a653f54 25668edb-01c0-4baa-b290-f97ffaf34731 282663f0-33ae-438d-8568-4d0824b9705b bef24209-ffb6-4a51-8b55-641a762e4884 a9324b4c-e57b-4f48-ac24-39bc8cc0a73e 003bedc1-9a5c-4776-8b41-f54e20fa102d afb593eb-0fa3-4806-9d96-7369f9756f79 c25613c4-4838-4e6d-a75d-6ee50278048a c532ea1b-2973-4391-9327-b4ba17f3500c ed25d574-27e7-4d6c-a819-401ed365a94a d8f589f6-2091-4f5e-a81a-976f4b88915c 0432c8c0-b233-43b7-93cd-df2772644ba8 6ff52b37-c5b1-4a0e-961c-04368bdf1296 91d2839a-651a-499a-84ad-fc5e93c309bd 1027ac25-f0e1-4e14-bdd6-cf0a77b3a13b 3c4f0963-48f7-4456-b8b5-dd3e1fd861a4 327e1339-ff93-4bbe-9ffe-4a8750651bba 6d2496ef-5ce6-4c85-af7c-6c0db68beee4 ad915184-4704-4def-9bb3-f5b5355f8b20 e85fa512-f3ea-46fe-8bea-7c31c1ab1107 79574179-9331-44f1-9292-d905dd6f9110 05fb7005-5187-4b62-8ce6-5c7f18329123 2d6a23cf-02e5-46f6-9581-c063c8505f4b a81ef23a-d951-4412-ab97-a93a902aec86 246bd89c-720c-40b0-957a-3ff8670b4804 1c6f398b-2c91-447f-a6c6-45cc2c286113 5666fb3f-1f87-41e0-bfa5-84ec29062ca5 c1b1e5b5-cbc0-4a29-a01a-6e9fc6027ae1 6641bf12-4232-4953-8cdc-fdb5eedb9f8d 6835907c-b21d-4bf7-a5b9-2ab02c460cbc 4d99c991-8c54-4de0-b288-9f3bd137f5cb 98a81c3a-f9ee-4410-985e-74b37b0c5e64 84966d81-741d-4ed2-b8f4-b4e411c55837 860dfe45-393b-4b02-b5df-020b7e8d31bb 6c93c4ee-fec5-4e6e-bcdc-3f35b74ed5a7 40eb8098-8789-47a9-8df6-22d55798e08d b3d8b977-8743-4301-8719-f6530b8ed123 5cfc5bad-e219-4697-b127-43c575f3f4c8 ee0a5b54-5a3c-47d3-bed5-ea758d64f5a8 a0b1261d-a774-4e26-91d2-99660f6e8cfc f96b40d8-73e5-4de9-8a48-514bbd985a36 f12c1df3-9b4d-4a3f-a095-e1b3ed8ba2cb e94e1f80-4a28-4d47-935c-8f503cc1a7a1 56d77deb-cc8a-47a1-9a03-c323e2fb891c 9518ac1e-61b5-4762-8ebe-6bb9f68f19c5 309ef385-7c27-4f7f-81e6-b38f3343f710 20d6ddbc-af0d-40b7-8cc2-f1fa8314c003 5c21fb57-cf55-4102-b86e-e9cc51520f55 b71333a9-02e2-4ebd-a2e3-7e7a94a2e7ea 9d6448c5-8b70-45d9-894f-0549e4f61a64 3a4f842c-76a6-4de5-b24a-5c6fe8a8c0f1 e0279a38-ac31-4430-ad86-4dad31e51f3a 5af94f50-f2fc-460f-82c2-f2d56fd14fc3 1850ddf8-505b-4879-8145-54b4056bb0aa e1db4adb-3b1d-450c-a18f-91333355ef0f 642b2f96-7d20-4b31-b328-f5e3a809b99a 66f08951-d304-4797-9d8e-46b87851c9fd 2073e480-a646-4acd-ac55-301569ed8d5a 06cafc48-1f07-4482-b24e-a6cc0718aae4 667e6643-4e76-4b64-8e04-44764afda633 3a4c94d9-f865-40e7-8acf-4eb1b842f826 2ce5697e-faa7-461e-b06c-9ea139575b2b aa828d63-5272-4c2b-b4a5-ad476bc8d27e a2d45cce-0ad2-4b28-80b5-cc171317ed36 de2257e0-7065-45cf-bc44-3c5e4c46123f 590aa600-1da4-4835-923e-71d9f8220fde a272bcf7-35a5-4b84-904b-c046668e48fc ecc2065d-8c87-4ceb-9c27-c943d30ef476 fd18603a-4764-4012-9bfa-8de247f41a26 b9256c4d-8cfd-4e0a-8056-6bebd6ce1def be4ad40b-32e8-4b6e-9391-0ab73fd086f3 b5580ef0-f790-4834-a50b-c1c33dcc19f0 65697010-6e50-4e1f-96ad-7bb53c6f8165 bf8ebcaf-00a7-4794-976a-7fa1504ec2c7 8dfe786d-96c8-44f5-983e-9a126016f299 cb8d3666-7619-46f5-8844-66cb90e2c72c d18f4a92-ccf3-419e-bed9-3e86df765bce 84397dbe-4f68-4532-b2e6-f68f8b0cbdc1 b586f29c-563d-491b-ae33-d56c4303dbcc faebfc2a-0ae7-480d-bf37-7ee5774ffe77 613b5d1f-2e34-43a6-8ee2-2988e3d71e32 f259d020-f7d4-4137-a699-e585a0c5aa7c 09a03cb4-54ce-4749-8044-40ce39d2e74a 28b1b9c4-03c7-493e-9f09-51706a6583da 28ade82d-5c68-440c-aeae-e829decda86b e4c0dcf7-6146-4b51-846e-85b0f7888b50 26e0508b-f7a8-44ed-a4ca-baa0e388d8ab 300495f2-c3cd-4f0b-91b8-92db8b8d9a80 f128f39e-3250-484c-af09-3977aaad0b71 b36f4ffa-3adc-4bc6-9ff6-1c8a0e0ad965 52f7b214-4909-47b8-a15a-7c5fc5d94e1d 8d94ef44-936c-46ac-9364-5fd077b85cd0 28ae863a-88db-423e-b810-a26cd027461f 4cabeecf-85f1-44fb-8eba-aedecf40e533 0d857f4e-3319-42cd-8d5f-0d616df9d7cd 232da76e-dccc-4b55-8b58-0d9d59ed82c1 dc146f1d-ce24-47fc-8630-7ca2fb0880af ea897c8f-e646-4e61-8c7c-3922f3634af8 641e947e-ed68-48fd-b061-e0577f514fd6 64caaf59-81d7-4503-af02-2e5f930f9733 433fd50b-3a99-409d-8777-5a5ff079c5b7 87e597d2-d3cf-4940-91e5-bf25cf80fbe6 a1f474ff-68fe-464c-aaa9-57ad10c8fda1 03b7cc98-3957-4457-a670-b50fd609f786 6b05d7aa-157c-43d0-94c1-0ae73672fc86 8cecc9c9-1fd8-41f7-b69c-d3f26f486343 cf42b548-aa95-49ff-b39f-ae4d77fcafca f22aa5a7-be4d-4898-b088-f67caaa37e67 7b091660-3d85-4523-9bf0-a138f6c21523 f751cd94-e251-4a44-8689-7b5cd12243ac ec36c25b-5a8a-4b8f-a292-195d610d13b2 7bdec949-e0c4-46dc-9d55-fc21fba84225 2f512ec7-6bd2-46d6-ab80-6c55cb36eb6b a6dcace3-9cd4-480e-9b1b-816fe401ecf3 8735681d-c091-4293-a5f9-eeb12de3a63a a9fa6278-f0aa-4d67-90bc-4718c5c71f53 42ccaf7d-c124-4c54-a6a5-f0b51f99740d 84a293d8-f0cc-48ce-aec1-de612715eeb2 e32d6879-16c5-4b93-acb2-1c9ac31f98f2 26af89f1-f508-4a2f-9040-56aa12c3c46d 54635ecb-e241-4536-9c87-fea8f639ab55 d2ad09e6-4cc8-4a4f-b366-350c892d8079 3908c1f4-d56f-4b6d-ba2c-75b086d6d9a0 72ffef7e-66dc-4577-aed5-466a5f5fce7d fdf82682-194c-42f0-8478-eba0499fe9d0 eb29a8ee-b24c-4c48-ab65-1c7f65703ee5 9842da20-7064-4b62-b590-6b88cd43a4fa 042c4da1-c841-4b5f-aa8d-bc2215fd7fdb 583917ac-16ea-4f52-a686-62f220a3992f 3b0b8cec-3515-4a14-9852-527dc813a575 a29393b7-cf82-472a-8836-04301fb774fa 6da6ab6b-7ba3-47ac-baba-b71f00fa4994 0d20a94a-544e-4533-93a6-20a9e6b09d6a d02b7379-63de-4cc7-8c2e-1640c50a61bc c5daecd0-596b-4010-918a-a07bd4a18d4e 4ba486ba-6403-4918-a064-dede2e698587 72c080eb-d3e4-4430-9bab-7d56ed23cac4 fdca7122-4bed-4e78-a5ee-0838524f871f e1869686-c3db-45a6-888f-585a9437b3eb 5bedde0b-fdc4-440c-b28d-8ed082d0504c fea204ad-2279-4208-a383-41122dccd13c 4abec029-f7ff-4a02-b59d-cf4d3530d8a5 5962281b-94e3-4781-876d-d26024d5322f 0d625a94-dea0-401b-aaaf-1e1a456a08b4 7dfb7733-f3ac-4c42-ae4b-6339cb0d4890 41b46d0b-4be2-4d97-bf58-5b3761f0bdb2 f8fb2be2-aa8d-4dfe-9a88-5bf81b397d92 60f22242-d32e-4ef5-b818-30a881b8e664 a162df30-0090-493d-9e02-834f9e39c549 c89f1c82-5649-4216-b7a0-7d6cb646b2cf cfa140a3-ffd0-4089-8d10-d4d0d8244375 e90102ac-d7d2-4c13-ae63-20c26b1f1375 5df0a1fc-cb4b-474c-9a0a-ba8849c221ca 355e0b5b-5bc0-4ca8-a19b-4a3ed2a5991b f4d198da-383c-4576-bd20-d237e9f4b327 17c221e4-65b7-47b4-ba4f-3c410aea7b8d e9266906-a8c2-4fa6-ba14-be35e599ee86 b7c3b488-f10d-415a-96bc-71a0d5dc4192 1df2d706-0d70-460d-971c-dffc122f46ae 4d1420c1-96c4-4766-a336-82e4608761e7 ef43b974-9bb4-44eb-ae3d-a7291a687c51 2cefe9f0-f55d-42d8-9387-51f11d21d867 8ba948f6-c116-4e08-b951-157727b4cab2 b4ac6e64-0296-4ce0-a4cb-0e3ab3c8584b 0042ed86-343c-46bc-8822-fe96e247c3dd 661d0b09-9f2a-443f-b6da-f80e552f3526 216c7050-c0b0-4c81-856f-5324066254e5 a5658daa-5b36-4969-94ba-e2d51a19161e 03c9dcfb-e469-48d4-a8d2-33314685d55c 4dbf66bb-a2a2-45e8-85c5-226631a43e41 dad734f6-c91c-45c9-98ce-90e6141c438b 676633be-b27f-4c49-99e6-ade32d9b8886 c6ca728c-3244-4cac-a641-a5dcd8c7fdbe c078f7c4-53d1-4dd9-9a50-b11b801e33fd 4512fc02-5512-4d4c-8d63-6440764ab155 93426968-5883-499e-ad9c-c359ffacb3a4 bc640399-94e6-4ce8-9d00-ae1dfe26088f e2aaceb8-0e1f-4df3-b214-788a01ed97a8 2d75b28a-9f19-473d-96ae-100d80221218 0c1db744-e28d-4f41-9137-54dcddd5699a fac74695-5925-44e3-b95e-0a05cc838c5b 38cafb5b-5fa8-4f35-a551-171f45295412 2906a88d-d470-42c5-bf47-11a9dac4d153 088994a8-f87d-45f2-bd2a-89bdcd3324c6 fb620eda-7ea0-47ff-9fd5-405b820f2e3e 3e3ec9c2-f16f-447e-a147-557fb2825755 6271d142-47fe-4755-8ad0-5586b70ce35c 3b12657c-d801-499f-a392-12af67180dbd c7518f96-9d39-4714-bd77-5fa2364c9ce9 12c6226e-b680-4cba-b8e5-d6e703660480 364fad39-015e-4d52-8378-ef6789f7cc1e ddd25b3c-6fb6-4494-9fa5-928ab484c9b6 181ae677-0f2b-46c3-b319-63966a010163 e5565cca-01df-4860-9794-bc87f93b70c0 44b8b663-643e-460e-80f9-aef9a6b13a16 d27f9f7b-cd6c-4049-be0a-6e89a6dd2885 c5bd7369-9b93-480d-89c8-75bacfd458c3 08368764-91ca-4635-afa8-a55305b25b3d e55b2fed-a73e-4cb0-98d4-fa95d1b22067 38e08fbc-ff77-4b04-b0e8-9692a82dd4a8 e8a19ccc-26f5-456c-93f7-5afa1afec223 5f6919fc-4b12-4637-94ed-7429f3776c9c 80891f20-b9fd-43b4-9d1b-ab3343c9b00c 4895e6d5-d5e2-4891-8099-c27806481933 c4883b47-6586-440c-b6d9-9a61f4412bcc 34456551-7338-4659-979d-d87285a9b0c3 0990e06b-7540-4aae-a9de-a59746b4bb68 bb3f2d03-ca14-4772-976e-d97e8eab2024 b9ccd2b9-d8d6-4715-9e15-d03eaa898b3a 3f257010-d0b2-4896-8198-289aad17749d ced2f52d-6f11-47f8-b821-619021832c30 2ad9b8a8-54c7-4530-b2c4-f2d6e9a44c75 595020b4-3e7e-499a-ae3a-6e3a0e976fb5 94a9dd83-d42e-4db0-ba35-86e5a7f6e170 bb80ff54-37c3-414a-9e0c-89108d84b058 f8ba7cab-0300-4a96-96ea-946553632d99 3fd93889-4286-473e-a966-16e1603401cb 5db9833e-f661-459b-b1ba-9f4f54e959d9 8f65c320-db9e-47e3-abee-bc807ebfbe0c 3e1f4869-9a94-45a5-b64d-cc4417583b21 57503c86-62d0-4dae-ac20-5f6fcbbc58bf 966e218b-4dbb-4889-9aac-65d7ea5e711f 9afa1566-66ed-489e-991a-4c92efb0028c e492e7eb-33e1-4e0c-ab51-c876909f4fcd e5acd83a-6f10-4546-82f1-e7d530a8a7d3 9728987b-ba73-415e-85a6-a574a31f7325 50bd1f90-38bb-41a6-8002-2328e8e212a2 77388476-14f4-40bf-861d-739f9d7aa38a 5ed0d685-c533-4485-99f7-3d6a6fb85140 954ffb20-f951-400e-b8de-d4513da739a6 b3a45afb-f845-47f6-8f61-e302689f4235 1dd1105d-3997-4083-a413-8e2b85bfed5d 7e383976-2018-4de1-bae2-781928543645 fcfe5467-45bb-47dc-8142-95c218dba416 c78330ff-3a3a-4d8f-a41d-514bc3322a43 4f0154f3-d987-4ad3-855a-10cf19137216 b12acc78-989e-4b50-9353-c7751d7d1879 8c909c25-488c-40f9-b646-94b8f2b2df41 ad78d3df-ca4f-4c14-bd09-049e25e1a563 316d3627-d87a-4b9f-ade8-2f2a4fe67483 c33e5ad8-c9a4-453a-96bb-162736b001a9 aed77795-9741-4fa6-bbed-78f788b13a7b d9566ed6-8ed9-4095-9ac9-5efc583a5f2e 7a0c2dab-9f1c-4530-8673-57fb62eb443d 940e0dfa-e771-4fdc-8661-bfc9a5902dad edff726c-e3da-48fa-9079-cb59ab03a814 56d4e936-eef0-4cc1-94a1-05b67440358a be4e7892-7239-44b1-94c5-fe157fe06280 bc8f992e-3c29-481b-a493-67ab8c3e4d2d 5b481c03-660b-4ee3-98fb-84c8840eed80 8f0d0a42-d465-4cba-b3c1-a20b070bda49 e1d241fa-5aa9-468f-8f1b-d6135e1c9e36 d335e0c8-d669-4854-ae13-8d82c53486f3 69f92a11-b6d9-4867-8542-934bcc7bbbf5 74773c22-4820-418f-bcab-60a3c5113e5a d3ee4394-f4ff-49ae-8a5f-d0522533df2d 6d3a992a-efbc-422d-93b0-b01c98d761e9 d5717fce-0960-4251-9b25-fef431ed593b 2aa4a04c-d253-4bdb-b5e4-23a583b45530 024bd82a-f2aa-46dc-b770-b1a101806cba 79b02f98-fc54-47cb-9156-2d275bbf5860 e361f0b2-6f2b-40f2-b4ae-dad46e015fa4 15348921-2f5f-4570-9f9e-6062098807d2 f41ad6fa-9e31-4a40-a70d-29f34146ef43 4efc538f-9633-4e04-adc9-479fb5dd569d c82dc33c-80f9-4291-8a86-a784c05f2391 630a9349-b7f0-420f-a71a-715ccf7d0de5 590f4320-e9e3-4295-a8ca-3f8604d479d3 bc72b546-c744-4e6a-9cbf-b6f605ef0a45 b9d79bcf-2000-4f8c-b9c1-c10c0af81bf0 4aa1c7da-a729-4e4d-9729-81b0484abc21 a6352d9e-4e2c-4f46-9cc6-5c6581fa79fd 01aa2805-5280-44ba-b7be-6c6b403a7ed3 4878cfe8-0ade-4dad-ab53-65a26b73f1c8 26af168f-e300-44e9-adcd-1db6d723431b c625b23b-e107-4631-8e11-4d1633657691 d72ed146-687b-499f-9d12-16fb1b19b062 9682fd97-46d6-43cd-912c-4d6eed9316f1 95d89577-5de4-4740-bfcc-871775ed4247 1bbc0526-2649-43e8-a4b2-b63ffca0e112 9ca47af8-8244-4fe5-96b6-0e332bc568a6 b33b6eda-a625-4351-badf-6c5822876180 b621e247-eea7-4ef7-ae1e-06275c5d5693 13446cab-d83b-4966-ac6a-282efcd23bb8 6809cca8-4390-4904-b829-890df2e3b88d ce317957-9604-45d2-a83e-452e20957f7b b19a97b6-ce78-4a48-93f9-7c09e34330ef 2fbdc3c1-2c46-4cb9-ae25-87e3842bf048 e987f60d-470b-40e5-b213-302aa1227be1 2123ef09-cdba-4b85-98f3-416ce10385f9 4b505ed7-1390-49ef-a910-fd05d454cb69 efe7eca7-c9fa-4fca-a5ed-13314548d0c5 0976ee9a-2b4f-4774-a7fa-4367a4f50b23 20ef335f-dbcd-412d-a602-43ca7dc4f27d 6f7c4851-57c2-4c24-b00f-607bd226df44 116d9f6b-4d81-41d0-b5fd-8ce70e96c27a 608a1b8d-bd6b-47f8-8135-347e67733f34 557bbe1f-8d7b-4714-a732-2fbcaccb6b22 9de51a0d-21f5-4a83-88d3-69d6e2513917 bf3bd9a5-ad8b-4a48-94cd-e3cd073a4804 d7e7f8ea-9ab7-46f4-8bc4-b14e044a95e2 1ad30aa1-ed27-4b0f-b0d1-2e84eefd0088 ee2699eb-4a73-4dda-9b4f-d3941b67bee3 7ac814f1-352a-4ef4-9a28-1d6732fddb5b faca576b-1bf6-423e-b887-64a41f6fdd46 32ccad48-d9c0-4e30-87d4-c668fb2088dc 7a24840c-e3cc-4ec0-95eb-956958e6b7e7 2e153400-290f-4868-a2e2-fef4cc7704c7 17d3de9c-37d4-484d-9586-63ccffad61f3 883afd23-d5c8-47fd-a687-913d6eef6bdc 35c87ca8-6515-40cc-bcbf-b233b9657594 a6838e24-d046-4085-8ca1-11f96fa131c0 e93b848e-72d7-4e49-862b-a630ef62ef42 12bdbeaa-7e9f-47de-b04e-07944c5a2c17 013c9b5e-a117-442b-9f4e-a1879b2e4ebb 57fdb40a-ae89-4ea2-90bf-06f4b3415be4 08448ce1-2d2e-40a0-9715-82afc3b7dec4 fde5558d-0c0d-4ca4-b120-85f8bc7e0f38 d385f0b6-329b-4528-a7f5-b6e879e1bfd3 d20e4462-e021-4624-8572-622166121237 bbbf8526-4d9e-4197-801d-7e705b915b0a cf29304b-a6c0-410e-8d11-0994b4948c0d a8b98698-5c9a-4813-b834-f7c6127a2e1a 628ef5c2-0b9f-4993-9796-03dfcd2a8893 06658d78-44e3-4a81-9ec4-9325395ff897 db794678-6dfb-4976-9ccc-e1c8bb6cda5d a5b23959-8d04-4547-8d15-1c41ead6ef49 6e8786c8-144c-4016-a00d-775f8e9b1976 7b8f9900-3da2-42bc-a19d-024548fa66b0 3e54c621-b9c4-4701-b365-a03adea7a8ec 10a194d9-bbba-43a1-ae78-a23043548177 e7b481ab-4e3f-4cf8-97d7-df90765d43be be103435-246d-41fc-8e77-952434524b2a 018905be-7f46-4b96-b1aa-753f293d66c9 c48197b1-746d-4e3b-b46c-c38243abbcbc 81d424cf-1ee8-4b6d-abf3-2cff84b8b56d 8d64dcd3-54df-44aa-b2f3-e46da3fbe612 93cec6a5-42e6-48d3-ac89-01dfcf1a3da0 ddb1069a-63d6-434c-b8c8-1010aa72d309 e358ebad-ebad-43f4-847d-ae9774cd557d 20cc2324-b665-4581-8700-8aa86ea86d80 9a12c489-1e97-4765-9a23-38a9765c59c3 3a949957-d7f4-4090-a5dd-5ce17ce4b308 dddcab9d-835e-41b2-9499-fab160570716 934f2404-98cc-4d78-b5bd-4967981fb577 7de30178-67f9-4870-82ef-a23f7495ac75 a4b4b36d-f6cd-4a55-8f77-a12c092f41d0 48faaa0e-5e03-4e07-8c42-7980b01daaf1 56fd088d-8577-420b-a5cd-bded3fdef72d 1aebead6-920f-427d-b3d7-45480f71fa62 da7ea492-9452-4f13-ba5d-af686019cf31 bcede1ce-f7e4-4e22-8e34-03cb6c2f7ce9 1f1d29ae-0d22-49aa-af80-221fb1a1eac6 e35f6e13-52e7-4ebf-8fe3-ee2d727695dc bc1e85f4-1d39-4da8-9e8c-9a44fe6375b1 55676ba5-d74a-4db0-bf41-fa207dcabf82 892c9409-2a28-432f-96c7-7cf156105f19 345094a8-f44c-4a64-9603-3a4ceaa1b655 2206f811-d5be-4e71-9326-60728e5de09b c20f6d90-de87-4b84-9b0d-3af04799914f 800ad99c-f127-45dd-8f09-ac4ca877ada1 f1761cdb-3714-4170-b13d-ad9d0c95bcc8 784720ad-8945-4b72-af41-41b1d88a3c66 9b570c0c-c634-4d88-b5d9-6350b41c9686 3c13593a-4e0e-4cfa-b75c-fc2b96e49716 2b356dcb-a65e-440d-a250-1ece8b0e8ec7 0ebfcae4-bb8c-4be4-810b-e28bc41c69e9 f7299d86-2191-4f19-ac73-54c6cd749b7b f9e88d62-f5b8-4351-ac18-37a9520ada13 5af41724-5a0f-4379-9f34-5495ff42459d 10f3f357-b431-4e8d-9e6a-7d2f7148b321 e2fab27d-cd50-4c64-bea7-481f9092fa3e a08668a7-c473-4292-8590-d8dcfe9f9f85 cfa20fcc-1869-496f-b027-dd62f0b63744 94c93ffc-2922-4af9-ada8-a0e3780b7cae 34410f05-f36f-49d4-b24b-3204f4ea5c7f afbd3d76-17ad-420e-8224-205cceb13b1a 51ef33ee-546a-4586-832b-a8d618891071 74905b2f-4067-49c2-a83d-2bd60f4d44fc b59d9caa-7199-4a3b-b91a-bf3708726759 56fbca22-79a5-4545-a537-737ac9a034e7 9f240bd3-dd68-4703-8e39-6617b4b5f77f add535a5-c27e-4ccf-bf17-bf2335c3c3f6 d881c61e-b4ce-4855-9f83-85887e5fa5db f2e87d4f-10d6-45b3-a0e3-7a94d8055e1e cd1543c4-3804-444e-af91-8db66ea1f1b8 fb81f1d3-2066-4e08-bc4e-d32d7f949c27 30b53cad-fc30-4bbf-bf09-70fb1fd35c93 910612c9-f349-435c-b8bd-465278c12775 ae9d47b6-c184-4bc7-b980-f79943469dc8 a28d8e55-800c-49a3-b8f1-5b484b595a86 e9e0260e-ddc7-4621-b019-d0dc0a12f386 de4e0cf9-7e3e-4918-bb1f-1b6b63e5535e 351e9509-210c-4be8-b372-70395215a128 22009843-34bd-49ea-8dc5-fa5219358068 2a4de4ae-ae7a-48a8-bf5c-fe399e4179de dbbb26a6-78a0-4954-81bf-972936215960 be780d4f-eb62-4e19-9f7d-83e8b1e0fb1e d25263e4-3533-4151-af20-71e7f4e6fe2b 89de8b0a-8402-469d-bf7c-eeb4ea2af65d ff45050f-9f04-429d-a6e1-2407e8ce4365 55074c03-2152-41c7-b8b7-751625231368 be9367ad-c6a8-429e-ac20-8b21728e77cf 43ec6bb6-857f-4949-ad21-817bd9a08dbb b10f5c34-32d9-4f7e-a854-1dc98a1e820a fe13116a-f255-41a2-a02d-0e971cd2295c 08b27575-f96d-4810-a9a2-96aa018a7541 d9852c3c-20f0-4f65-bbdf-89c2ef9ac02d 640de00c-63c9-47bb-b8b4-52375a0a07e2 068d8e70-9062-47c3-bd15-a737c87c6d97 98be56e7-02fd-4e9a-ae85-43ce032aaaaa 56a9fcb6-8c0b-4f86-9004-a9fc0b96b79d 77a163fd-f00b-4168-a2b0-cc595da9af51 406df41f-0982-4735-87d7-cd07ab5a92f7 8f748f4e-71d9-416b-afb9-26ddb4ea9761 66af1032-7364-438f-93f2-30151758a469 417f0c72-2d93-486f-a1d6-f5ec59c737ba f200b0bb-6bc6-4eef-b903-0fd5da6fea4f 35a3b9dd-4aa1-40fc-9af8-6905e0118e0b 792ea184-d350-4c35-be4b-a6df28a0df8d 23fd4eb8-bca8-4351-890d-9a093192e4ce dded9337-4f44-4cd9-aa6e-bc4862332e21 b084007c-e52d-4803-83c7-1456f279c90d 2c822451-300d-47a3-a4b9-12e1ff134e58 83e9ad93-b4b7-4f2f-8ba3-bdbafb697dbe ad5a2f4b-bd99-4dca-b38d-74a1aa4594bc af56867c-0e7b-465c-8295-548fd51abe88 3996f4de-30b4-4e06-be97-ff8b34c88b09 fdd95c9f-e536-4b5d-8381-756a2425f392 9a734ed1-d8e1-4fa4-a9a2-3fe25712e36e d1c757ad-95b4-4205-b478-2817e232bfaf 1e94d447-4732-424d-b777-cbfcb143b5f4 508bcff9-725d-403d-96da-4081f63459ee ac971d8c-abc7-4f1b-b009-e4eb8c661fad b8d7318b-30c0-4dca-8276-6bc0549fedad 2991ea7e-bd42-4ecf-a1b2-a7aab6631967 1f1aac59-49c3-462d-8c91-5e366d45bfd0 40243972-e009-4be9-9f78-a251c9f7117f f01ceb3a-d39f-4736-a7a4-4c7a136d49c3 e69dece4-6071-424f-bd34-93ceb62da219 69e74d2d-1676-440f-8a3e-dba0fca44f2c e7f8efa4-a0e7-4ef9-af91-80091c965c68 6fdbc780-0271-4c8a-915d-00068ce7b0fd 30cb36c4-07a2-409e-8023-9511a0c411e9 68c02b3d-18b5-4100-bc9e-0ee0db0371d4 24d97ecd-e340-4367-8be3-87e16ee797ce 3920ac19-1d00-4e00-9531-9071395bf1f2 6a32b3ac-7f4d-4706-b446-f3edc904a9e8 89367073-ebd9-406a-9d59-6ccacdb2e636 9f4bf021-e539-45fc-94a5-59d25780f971 979810c1-b21b-45fa-b9e1-3c9d665cd442 c61e3eb2-df59-447a-90fa-884e0811c906 365b6e23-547a-4719-b841-8aa6eec1be5a 3290e93d-939e-4e37-8372-c974524b99f4 9e847d4a-7a6d-4e8e-99b7-173936451b2e 5561eaad-85cd-41a1-91ec-96ad20e0f918 10a14359-08fe-48f9-8c59-fd8a66184fb6 ba482022-59d3-4c47-a099-b9b2711f74c3 5aa0fe57-c201-4270-8100-50fbe21609bf b11596d9-821c-44ae-847f-6069ce88ebda 59be37fc-16ce-463b-beef-449c2133fc59 18759e25-93a8-4a00-85c0-d439a4856ae4 544fddc7-48a0-4984-b21d-e5a20ccf97a7 bc9f945c-4fe0-466e-a710-035fd418c607 816dee6b-3f0c-435c-aab1-7ad3f38746f1 97df6dd4-986e-4594-b8cb-58a46ecb9066 dbaf8c06-8f0c-4247-904b-4f755a3f8de5 7533967f-5e73-4405-ad6b-1550a82a11a5 036f8a5c-e9dd-46a4-a3e7-e7bfbb5ace20 4002b003-e99a-4a5f-99a2-4d4e95422674 3c3163c8-4c61-4937-a0c3-97cf418b6498 65c4fda2-19b8-40ba-b587-8206f690a10d 2f89671d-d056-4e0e-a504-e95401555ea9 e16b295c-5e90-465d-b756-6e1a03e47396 207aaac9-58b4-41f9-88e3-8cf810fbf758 27b294cc-1e3b-4a6b-958e-cf188c60b9bc 0b3e6594-826d-44d3-bf81-23b8ac907bba cea0dc32-8d5b-497f-93b0-1b5ce84bd4a3 5ada0cd4-7220-4d25-8d2a-2ddb8049c4ef 47caf084-36de-4698-bdb0-3a45bbdb1063 2da23578-6ea2-4ad7-b2bf-7cd2e3011936 717bff68-8bfb-477c-b29c-e8f54cb4fec4 ec77b036-f7f6-440b-ac79-d7a6f4708073 43896375-086d-466a-8ddc-f9128c2b3072 6b318ac6-185a-4e2c-aa3a-e686a79a28ed f0eed575-dccf-4d84-b93a-a1e9eb3142fe 1235fb78-52be-4437-aa20-9d67ae45d27b d23d1c0f-a867-462f-bf10-4b257fa324f4 54b61ba1-e937-4354-aaed-4edb36238704 6e40edb4-bdef-45b3-8128-d7fa55e43af9 fccef572-c61c-48f8-8f94-7271b51c1792 674b2df4-a6d9-4154-add5-ae39c4ee399e c845e3fa-5ea1-46ee-b48e-515364472f8c dc9207ba-0cf8-47b9-8461-7932a6a17ef6 24f9a8eb-0202-4192-ae0d-dbee22b5c25c 6dda2cf8-5411-472b-830a-e06470e7cec4 9fc3db90-472f-4940-8e8e-3a7572886751 8aa87a28-4c1d-44ba-8298-a3f96fb252f6 9dbaa725-a386-4e4f-a9f6-9d1ce6a3fe42 a5fcdbdb-7bd5-4585-962a-278fcb7ab234 0a7ca74e-2d24-4fd6-8960-9986f7d11113 de03d1d1-5bfc-44a6-a35c-d90607e3efcc ac21c598-9496-4ba4-b574-f79e3c34b41c 7cdccdb3-7ea8-4ee3-bed7-5420739bc46b bdab84e4-ab66-45cb-abd6-a590d8c3707c 9cde49e8-5cf9-4045-9a10-c6e9d1f05d9f 1b2f7ef8-43b7-4a43-9837-ad8868980206 202e4359-6dbc-4d2f-a8c9-f041d31465cf f0e4e35f-e4f4-4585-8b62-2fe043763a14 4a13193e-20fb-42a4-8819-83e6c253ff4c a7e36b69-3bdc-4833-a919-afd26898eb98 431b1690-9c78-4d35-819a-eca95f9885bf b9cd2bf1-0ff5-47f5-a3a8-535f2d66231e c3882b6e-75d7-4218-8fe9-32f701ac04c1 787dce20-7d71-48c8-b410-b5103a95fee3 e0853d68-445f-4159-a28a-564dec02ffe9 dac96457-7555-4a24-991c-2fc0e564bce4 39d28cec-a8eb-410f-a073-697dddbb5fff f6127a48-aa0d-45ec-b343-5d6da77a0550 85dd914e-029a-4b05-a252-d2c40e0bc57c 7db4c5a8-9e62-43c1-adbf-7e67da81b3e3 cdd7b63d-6656-40dc-9494-3dabce45f43d e86f01ec-e852-4dfb-ae40-26636299de62 676675ef-dc62-4f08-adc3-1440467a41d9 1091121d-0a0c-477f-928e-5ae5fd60e044 56cc75a5-82be-4f97-9bad-75885b316505 8daa4176-96bf-4f49-aa73-010076046b99 6dff35c5-2cd3-4939-858c-826cf95fb01a 8fe33037-cbee-4256-85e5-b8f0caa46248 eeb28b34-d12f-4077-955a-da0b8046111d 3d08eb65-ffcf-4de8-aadf-092b69d390b0 7ce23d5c-ce95-4449-b9d9-1ece49768046 155fa6d8-ad5a-4810-aa1d-54e6d55d5bd3 c19c5b66-3363-47bf-85dc-9b8d43dc79b3 9d76528e-7a8b-4c26-a5ca-6cd6b8db30c7 ebda6618-18c9-431b-a59c-23fb2b69450d c1566475-3429-40d7-b1cb-9edfc41e068e ae5c2b04-9297-43fc-8eab-445c544d49d2 8b5a706d-255b-41db-a63b-6a25faec573d a91d1bb1-9972-4a7a-a122-e4787554200d 85b910a0-138d-4794-b5f6-047f5bd5c5b8 a3d7dde4-a7c6-4e1c-83c6-de8209c971e7 8ad187e4-828b-4923-9e64-819521549ad4 a7b32f50-a6b9-4877-a643-203b1f61163b 625bb4c4-bcd3-45e6-9944-f206e2612ee6 46de6cf3-fda3-482c-85e0-4c2d0ce11754 910065d3-8358-440e-8c0d-889efd6bb502 353e074e-0e70-42af-8475-25b610694fd6 fa6b3eee-fa57-4d6b-acf5-2203ea7257d1 e87b8a6d-a6bd-48cb-a328-da0073ab8eec ea2b7a9f-3b95-42d3-87cc-845dede8f6f7 89ba29ee-41db-440d-9c55-b51c2400b453 cbf0032e-770f-4fd2-994e-d6ecdb01255c 61de9901-78dc-4578-a62c-d65d0ba7f412 f7cd459b-17fc-4e31-9ec9-b08a2deef1f0 f0283a7f-d7f8-4f78-99ee-981b82f61da4 a0983818-1bf8-46a9-b904-a05d2814166b 04f5bce0-c0b3-42f0-83c0-04dbf8d09274 7d6c4973-f64c-4789-856d-d0596a26213b 2d10dd23-9704-4ff7-8807-d699634f7027 23bc2b59-cc76-4d14-9b80-f50330c3f8bd bec89f10-0406-4ce1-94ab-5c70350af2d1 51e68dea-433e-4d8b-90b6-8169d97e82d4 8a7a09ed-07d3-4e6d-8a06-84f764924cf1 6384f747-1c5a-4cae-b506-4fab19da503b 78627616-282e-4a39-bbdf-cd7acd3c24eb 81ccfcb6-33c8-42e3-b6fc-105044b2bc85 918b1e0e-bd50-4e71-be9a-3a629181b40b 5a979fd4-69a7-4054-9bfb-d0bd8df61d32 ce515df9-a013-4ea3-84a9-ff9b1d56ea1d e1cba782-7ce8-4d63-b91e-3adbc9cf6652 c5bcc20d-90ea-4e9b-8668-cf23f7399730 dac00ce7-d60e-4197-af76-56c4b0b082ab 4893a0d2-3e2b-4787-bf22-6b71161fe0ac 33c95557-34af-4c9b-9dae-0e9e02a85f37 505512b2-d56b-4d12-8175-a8dde1b0ebf7 6fb36094-4582-474b-a974-d2e1a896a655 c3b0fac1-f6a1-4356-8dfa-48f42ef60830 a9724c43-ea5a-450d-ac57-26405e8c8b6c e22041d3-f3a1-424a-88b4-fa84f890ff16 5b973bd7-48b3-42d0-b724-603d5778fa20 7f0d2b76-a0e5-4edb-a9b9-787672237242 99b92b39-1c24-449d-be4e-436665be32d9 dc27c1e9-c223-4a6e-93bd-16f039101a21 c5a4fa85-7e1f-4966-ad09-cea5c00b7994 cbb21f2c-300d-4371-88f4-83cdb9ac515a 1232273f-9e1d-440e-ad88-6d8e62e8f394 c3866cd2-61ee-4fb7-a717-8553149d651e e6373faa-a0e7-410c-92ca-588fbb1a4bbe 3a20c014-47b7-418e-a62d-5ac5fb6bc45a 51912ede-f767-44e0-bcbe-29c1875eed77 8f18f3f3-67d1-4a0e-97ee-77fcf6b2b40a f7edeec9-4c7e-4688-98f5-8e90ff4b313f d0d687e2-410d-4a5c-aec0-0c76b5bb6349 89d42d0a-66a7-4959-9151-94ae7d220341 c4ca1434-5e2a-442f-9362-89a658378731 d3f29b43-7eda-4ab6-a0fd-9c376572c594 3e29cb36-2373-4446-b302-27c35d89eefc 19bca0ea-569b-4ce8-890b-cf5179c07c90 c86409bd-dd36-40ed-8e17-4df2f67ba77c 8401bed0-7457-4e92-9970-e0c3caedb34c 1ca0aa83-f0a7-44d3-a1e7-e14677404f03 a9f23f3e-2e63-481d-bc4c-50ef468455fe b21f69e1-75ef-4b26-949d-8c2c4036a9a4 13c82360-437c-4457-a999-cc6f1f950e13 32b659d9-c2c3-4819-bf09-c7b690586c0c 0f450f93-4488-44bf-a5bf-88d012ba3cb3 86500425-52b6-4ee7-94c8-19079f65ee7d 83353d58-3bd1-4bfc-9e1e-fb10e437a51d 5df7a278-12c6-4775-9e7e-01df7c1bdb95 50727777-8e15-4b47-8acc-ff1bcc81598f af6741f4-734e-42d1-aa0e-b6619288dd6d 5754479f-08c6-4dda-aa81-e8b6710f3ca3 57b5c3ca-38ea-47fd-824d-e67269a14c3e bd3b0c13-5bea-43a1-b097-c683dbbfcb3a fcfb02c5-9020-48d4-b4e4-de8ae4ab220b 9ae50895-c7ad-40b2-889f-bef17b445bf8 28e69c99-2ce3-414c-b694-a39f387106fa 86518840-2c03-430f-a852-581ef8b9e6cb 92aa3a98-f849-4b9e-901d-a816530878be c672b8b1-6373-4298-b45c-8b5888bde90c 731bad28-9edf-4457-b3ce-d5a90037802c 89b2b174-5e0b-4b76-87da-4446935d311b 4bf5c021-0a72-49e3-88da-5ed98803bb06 3ba6d2e7-bd5f-47fd-a448-b9f73948da03 63976a6e-ee0b-4835-b826-47943e59bf10 91eacbed-8587-4f41-ac5f-0e77d5f1feff 6d8426ed-7d93-454e-88ca-4d0ebd7dfb37 13527fbf-51f1-4e52-b85f-55dafc5690f4 bb053840-5a71-432a-934e-933b30fd8d45 5f620449-94f9-4ef3-8e17-9d109bdf5e50 96529f3b-cc88-47ae-8265-88ab89b75b7d f8f203da-6b2c-4a46-88de-9a620f7707cd 1dacd60b-900a-4db1-a751-947ec26f59ed e0be3e06-e008-43bf-a806-2a106d94dfcc 6a3f5432-ac3c-40a4-8cd0-fac665ea6e3b 1c343869-970f-4d79-87c0-344a03983740 1c774fba-877c-4905-b79c-68708b38f3a8 0f133043-404a-425a-9e0a-11fb40d86e80 d994f774-cb7b-4ba1-b658-1fa3bd354265 ba1af500-a8dd-40e8-a28a-ce54b32971bf a99438be-4873-4e24-a1ab-d8f9d7821ad1 8b27b8a8-41b1-4cd0-a838-76815ec4037d 5066cc13-422a-4c75-8583-9db7a0f2011f 38fb51e0-97a1-4422-8d0f-d1a30b87c1ab 6f7bc668-4cc3-4d38-b8f2-4daf554b7f5b 565edeee-b13a-4a43-80ca-fd7f29f783ee 9283a2a8-61ab-4517-9f91-1ab628b5f4ac 808ff007-2442-41f1-8d87-3f7b33a62675 239c72a8-1140-4ff4-be45-b972e88feddd c5d85bb4-92ce-46aa-b9b3-244a62fea370 36656e40-5a90-4323-ae01-74d3664dc7ba e5843c1b-6d9d-4c6c-8923-03e2c3fea971 6dc59450-b0ec-499f-bede-e806081d4df0 c11d58eb-d716-4ad0-a041-da121d0b6b05 4cea4faf-95c7-4e7c-acf8-2a77ecd61308 80499a42-9fb6-4ad7-b598-e73cb81005fb c740caeb-fe0c-4d45-bdb7-84cb76c01066 ddd32725-a60c-4db9-a433-27dff53054c7 648e606b-f95e-46ca-82cf-1a392259cb78 9f899e83-5239-4e0c-839a-c750e8861a14 8e3f2208-4854-4d4f-8278-1f54fe4f9952 561c37e3-0191-423c-acb2-ab1edbc6e7ab ff3dee93-c996-477b-8b09-0a946db23e71 6c2bf2d2-6e50-443d-82eb-bde92dd35548 bf1d391f-2251-4b55-8c62-c34417041878 b07d4b5d-c668-4d57-be02-413e444778dc 025e59bf-4e88-4bdf-ade0-ea920a6839ca cee08ac9-6722-4fd0-ab4a-3e2e8ee7757f 99866e19-a6db-4e41-8d8f-c133ee85bdbd a3fa2632-7d43-4dfe-92c5-2c13f95883a5 40ba9bb0-a938-4e2b-b52d-cc5057163cda e5ee1073-3fbb-476d-9ca3-737d329afc12 f6196c02-ccd8-4d6a-80fc-41c4dc4f4891 8debeb7a-01e7-4437-accd-ac752b0968d4 9a74f76e-ca99-4eb5-b1dc-00a92c80d440 adaa9358-9a4c-479a-a913-221c540af2a7 8d5aa4c6-e797-48a4-9033-b8bb8a1db65d 3301fe73-4ae2-415f-baea-ff5c7913fb34 ea7c2b96-fb30-4a52-af22-4165cfcf9947 37dc7b17-90a2-4a5d-926a-8bc322305cd0 5f47a195-a4ca-4f3e-a17e-a6c43dbe2778 9f2b2090-cd5b-4bdd-9bb9-11a7df38eea5 66ca252f-49a0-4b4c-9c1c-44b4d90b954f 3168e6be-6914-4977-a9e0-9b9f58ae9eab becb1868-69eb-41d0-b210-2e49162c7109 1cec07dd-ce67-4f47-ac3c-a6df11147878 f6d3408b-65f1-4f94-aa9b-8bebf5122a0d 1d3bb32d-10e9-4984-a4dd-91608e9cca67 6b7e2080-7a21-4192-953a-61e9d00e47e1 b47e5c95-429b-428d-9333-b0a6177f7b63 4486c3a5-4131-4edd-b7d9-286981114131 452da534-183c-4e3c-a026-f073ab26b5d5 32faf8e2-c660-4717-85ed-30935a351ea9 86b3a838-4711-4650-96f3-e7563fa74acf a95045e5-2890-4fd7-a9c4-4369c2e783fa 8cb36fe7-c236-4973-9e09-4b44b90281b1 b49fd679-e4f6-4096-8f42-20ae960d8a59 5d4c4a3b-34cb-4fe0-8754-52a3614d0248 51249e27-d18e-4fe9-8701-f3393e21295d b550f2e2-be4c-4437-8860-26dee8538b2d d700077b-e7ae-4463-885c-7578ef55eed2 b2b4ad17-25d5-4489-9c08-4563ffd89a9a 93e6e00c-1277-419e-8c6d-b7ca9a31a96e 1b2eccaf-2d3c-4c5c-a254-2619270f943d 302c0ee5-6c8c-4a7b-a5f5-f7c282cff3d1 2d6ab626-c574-41ba-ae2a-7db70a0818eb ea5f5517-9056-4cee-8415-b7405b70070a 74d230d0-0a5b-4662-abdf-bc02ae4d1b2f ac3002bd-c5da-4982-8916-99aac306e9a7 dce5ca10-290b-4ee1-9973-aa150a0f54f5 5346a7a5-4f65-44d0-869d-0de0509392e3 91d020f7-c99f-4dd9-8f2b-89b4837a834c 6d631639-71d5-4304-b4b7-ab6d14513537 be37e81f-251a-46dc-907a-ae9b9b9991b7 24e00868-640c-407f-96d1-174c86bfe100 45973a9b-4e21-48b0-85b5-895b2a9052aa a53db360-cc70-4a76-8b80-acdf105ea8b4 fd6aaf2f-09b1-428e-85c5-a620a99b61d9 e24095c4-c09f-4ec9-bfea-1b445db30207 face324b-3002-4c6c-9446-23aeee700c09 9cabad35-0591-45b6-a32e-0dfb69fa417b d3ed62c0-634c-46c5-b95b-46067cab0586 a17b956c-438c-4932-aff8-7e66093022d8 4e0d1b25-c22d-45c3-966c-465fb7326b19 273c82c4-9b20-4bdd-90ad-83375ddb9fcc 905e5cd5-558e-48ec-a276-37810d829b66 acdd4429-7f4b-4a19-bd8e-27896d131962 5a62e9e7-51c8-4a28-a52d-7709b3541481 9fa23a28-51f7-4171-8d85-138a3b1d7909 dbcf03b5-d28e-4a22-a5de-657138dd518d e3493755-5070-476e-b780-08f3cb5cefda d16d7dca-4506-4d4c-8f27-1bca75a3bef6 3447ca5b-e3c5-4b2c-b962-6af5f56e54dc 373d64b1-439b-40bd-ab18-0ca3243e1973 824aff66-9d03-4dc1-8a03-0a1a34262d67 0cc4f74b-6e50-4cb5-ad56-ec90d9bc26fa a6f9b314-7d50-4de1-95b0-0a1be0024eef 4226c054-1974-410b-b64e-4ba9e5841c62 427ecdba-ac14-4dca-b53c-12931a77fddb 637b1b39-74a1-4596-838e-951693406f48 d77720a1-e1fe-4936-86fa-a37ebcae6f00 3bdb1076-a69e-4827-be54-e134ed49e82c 49e0a8df-4833-49d0-ad12-4aa7d1110380 66f36d7b-4e08-44eb-a764-0d7f4023486f 0f87ded9-88e9-49ed-ac6e-8245286508fd 9ad760b9-b96e-40b3-9132-e856e637e6ab b6be1154-ba3c-43cd-8847-0938efcedab4 f4edb24a-3231-4e00-985c-0ce63f08aed5 23069c11-6b1e-4fae-a97a-d83a95499f3f d5166e44-3c74-402f-a73c-fdf64ab1f3e8 d95107bd-cc1e-4dd7-a887-afd5c35565a3 9ef8e567-5aa0-4574-991c-5e303e3c3238 e9e712cd-8ff2-4381-8bce-153934ed6c6f 61e3d025-97b3-40cb-9d2e-382c1be45701 6cd6be4e-a532-473c-8d3f-0873f7a1cc17 0cc8465e-cfec-44ce-8d96-ed4267b71695 a392c669-a954-4d8a-917c-00cbc0113ad3 4d30cf09-0bb2-423b-adb8-bbccd644029e f7e6b92c-e62c-43d2-8ea0-067548a02e5a 16b08e84-4d3c-45c4-ae11-ecbfb44ab8d2 91e23250-ac7e-4dcf-bf43-41e1cda9225e 73af10eb-ced7-460a-8bfe-3ae77fb0f0d0 9b9f9be3-ae85-4cc2-9989-612d6613705f 3a2836f3-c1d2-413b-8af0-59bffb015123 64254403-8a96-48cc-9e45-4abdc4c16b0b 95d7a9f7-6dc3-4998-a387-b18671edad4b 9d048b42-6c10-403d-ac50-8eacc668fb45 85cbb17e-8602-41ea-af88-6198cabb432a 0aecc27d-70da-4d81-895e-eb3c6a251d5b 7c163915-d96c-4aba-8a8a-3931f27afa28 abf844ba-fc3a-42a7-ad7e-2303984c7958 b01a3adc-57b4-4dd4-b975-891c9a927efb 04058281-77f1-4bdc-83d9-29cc59c46358 b2ecb73b-821e-4b10-9ac4-315ac399d8e8 cee61d43-8213-4179-9efa-d711d36248df ec899533-181d-4e5b-8988-9a124dc0d043 f6a36aa8-0175-489f-971e-3a166af14fab f8975f0e-1121-48ce-aa43-ab62d885fd59 e6eb881c-eb7b-4961-9589-142540a402c5 d66a561e-5ea6-4535-9961-543983105f1b af94f071-e7a9-40cc-9ee4-3c8711461481 d54c97a0-b684-4469-b29c-cb96e1627ed0 212cc849-740d-4e5a-bf3e-585a0bf904b7 982acc9d-9eb8-4c3d-a2c1-97585e8a1243 739b9730-45fc-4b10-b862-8b4c6af465b6 c08bc71e-c84f-4fba-8c19-dc28b9bb515e 654d8abd-c667-44e6-8d47-f2348edfc7f1 5b17d30b-27f6-4727-8f88-c2342e4ffc64 29cf5ac1-6fb0-4e24-a48f-efdd65c1492c be74a8e0-e610-490d-ba84-ec2c34878018 dc3f141d-52df-4634-be35-c5ddad2843c8 c361b1b5-a2ce-4b8f-b2da-8ed37b90900d b82b8e6c-6b7c-44bc-b7b9-cf2027126196 f9be0fe0-79c5-4029-b7e4-eaff6ac201f8 c0667b5a-9559-487e-b421-2d55e88c1ae9 ce1a2637-6cca-4d16-98ad-ea72cf70fc54 70d5b964-7bd1-44c9-8275-19744e16d2a5 50847e3c-17ca-41ce-a308-9e472b6c39a0 2c879c8a-1872-44d5-98f9-7c27271db988 6e6a169f-d30d-45a5-abde-390ea77b4960 bcc18248-4a36-4a26-b375-792983fe4d31 472735ec-2658-497b-ac26-fa0d7c39c4fd 780ab9a1-b6fa-4e15-acf0-2af3414c4e34 b9dbc6e4-4acb-4389-a9c8-0072dbdc87ea b5ecf6f6-f9f1-4ae7-9e35-049e552f5226 c750aa05-d61b-4fed-9920-2ae580bd2ccd 8c5e3415-9049-4a2b-ac24-215e8ef2f48b a20ab1fe-bd74-413e-9692-a0848b660203 752ea987-ddff-450b-9dbb-561d2ce9f21c 05017de0-8a4e-4f2f-9663-5b610856f8b5 7c72f863-067c-479f-b736-95f5fc7051a4 4d44f3ae-fdc3-4e16-b927-074d91586246 012c42e8-6cd8-467a-b528-f7ec6603e6ce 01e1ee3d-d3d5-4e59-8b53-c64451103c18 5fcabf2f-2ca1-4dc0-a7f3-9024af452d38 ae009185-6c49-4b3d-ad33-7b02babf667e b0d6016f-a059-42fd-951a-bd021ce7f99f 8f959793-1018-4b88-bb53-20b8881836ce 3701871f-f0eb-4680-a957-5da503f0bb74 d4c04e95-7f1b-4c32-87b1-c97ed80c312a 007f42ed-2a44-46a1-83b7-076499297cc4 4857ed97-f145-4e87-8e6d-9cd3ddfd8916 46f07c46-8176-4c42-aa0d-3c45f85b5383 d086b067-8ab4-48fd-a579-4e769a95d42a 6d285345-489a-42da-97e3-d01fadf0cf73 2b40cb8a-4bb1-4733-b191-93d17a95508a c4867455-6f41-4fce-9550-0f9bb2f0c7b1 04458dc3-28f9-474b-888d-bc3fbca0d286 b70eee24-b0cd-43c7-ad9d-ab0339b66ea6 979ded14-8438-4a27-a3d8-3e66f9bfef3a 623d312f-273d-480f-a20a-be36a01bbb0a 1a319238-c979-4044-b848-c8665f48b49f 7272332f-c3fe-4d8b-b382-750119bf9986 7b0bcbe1-a099-49ae-bcd9-30d1a8d965f7 de161c7a-789c-4bbd-a0d1-229722849d18 5bc63833-f750-4132-8991-342200950513 ae29530e-e8c2-4ba2-9cab-41def240bbd7 a9f74b3d-5e65-4063-aeb8-033f380051cb e3cfb7b3-b4d1-4006-b094-1b4750328ca7 e9ce44d9-e7b1-40a8-bdda-57bc557bb9af 790f3d9d-79b7-41bd-a06d-fb37dfdcebc3 f68e7514-9d12-4a44-8464-7729c3213bff e2e18189-7e51-49f1-9a0d-0eac9e441d96 6f2cc956-0b2e-4d53-ba14-3c7898552874 66b2b592-2603-4b39-b460-2b8788993249 927b76ab-7f3c-4019-b954-8dff1e7df179 5461d834-993b-4ae0-847e-2b0adc03cd8a 95c95c99-1aea-4ebc-9c9b-cc2892e8ac3e 112ea9d2-e338-445e-a805-dd3bcb933c56 608f568a-0622-41ec-b7a6-842f9c2d2ec1 1a7ecc4b-0a59-4bc4-a52c-a095b0256172 53dcec90-427f-4664-96ad-0dcef6efc399 0c598b12-3db6-452b-bd7b-ccd7ec0b7db5 b337b5fb-b605-4cdd-9a42-846463446bde 0e6ef321-7b3f-40ce-a674-d34237e9b63e fcecc7ae-22a7-4ddb-a531-7dd77cf986b4 2b2e2ee7-c293-4e2b-ad98-cee517d430b9 fde37c37-cd63-4fc9-82dd-7a3c7bae9e96 70377f2a-e8d8-4cdd-9d46-1b10096cdec4 82dc13ce-4b4c-4170-b8c7-56527300643c 18a3d075-fed3-45fb-a7bc-36356e794743 7d73ed87-311b-4ab7-b8db-242010eefdf0 88e2f742-922c-49d2-94bc-6247f3b40f90 867be0c6-e5c4-48f5-98d2-5145dc777b1b e657f3a2-79fb-400b-ab94-f19fe6744fe4 01ee155a-5ccf-4606-acbb-f54dfff21d53 d8df3029-9bef-4fbc-afa4-994153d2f114 59c41147-895e-465a-9717-36cd8b80e213 8b70a75d-2b82-48f7-aae4-9c5665439fa5 04113d30-dbf4-4abb-84b0-8dd756043e1a 63e524ef-4dd4-4ede-911d-c5a9d18ce6cf 5d85422c-81df-43b3-9a38-bf8ba6d4825f 1c296560-59d2-40b5-813f-920b5a5f36ae f998d842-d1a7-4770-8f44-435bbcac64c8 f5bb13ab-1956-4143-bc5f-8c9c2e65f93f 8d592024-b46d-4b26-a680-b72ac896f8df e751b689-afee-465d-831e-f3b5ee611229 dff7f65f-ea14-43c3-a3a4-cf93c69af6ae 382b0384-c6b2-4248-95e6-993f27eace0e c2b92bbc-c451-4ab5-a1e2-7f5e1994e84f 124c368a-ec6d-4c41-8dc7-6fef735ca5fc 8f4369e3-da2a-46bf-b8ea-f83c36f44b0a 348e6ed0-c26d-4339-92ef-9defcb121612 035bfeb3-9474-49f9-a0f8-115fdff87ecb a9462422-a9b8-4f9b-8233-67e4db28d39b 255ea201-6cb4-4e94-8423-b3833a1be37e 95e3f46c-32b2-462a-977f-f21fd95bd05e 9c43e788-54db-471b-b488-fa0974a3471d bee7ab26-99dd-408b-98ff-a04db0a79e68 de325019-9ac8-4a6b-bdce-bd0bfdbb3a29 89409807-c0e2-403a-86e4-129cf7effece 5d370a84-0ff1-42d2-bf5d-206304815d9f 7e9b1cc5-e7b1-45cf-87ea-52d61c9bf492 cd4ca0ba-d115-4e54-a0ab-cf613427a503 b0bccfce-bbac-4197-90dd-6a90c55a586e 8b44f685-d4ef-4508-84cc-8cffd6da0b9d 4b7f7120-5ecb-403a-a47d-fd6284cff72b 99f8c976-1dec-44ee-9e6e-875651ecb565 28aabde6-c0b4-42c1-a1c3-745dd576989c 84ec2407-0a3c-40b4-b202-43a0c031243f fd1ec826-b302-4189-a63b-d0543c440cdf ff4ee482-2262-497c-9189-84d34a112c1b 2ebbcb32-ad82-4b09-bd9c-ab150df34212 dca4b77d-f4a4-45de-a3a1-f3aac6fe7a31 5d2bed74-05af-4a4c-96b9-9e8638aa2c25 cef48ac8-7c4a-4e7d-8bc3-ad210698cc4a e790880c-a6c6-4505-9307-9ba568678e06 3c4f313f-f3a4-4cb2-860e-a9578334f12f c3f81354-2fd1-4ca9-8ecc-ed09f3cb3975 709ea612-c305-4dbd-be83-488d46e44401 4b047583-5012-4b30-9148-d99577616fb7 a4d6a8ff-ceb8-40c5-aefc-5c753554b41b 05f270f9-8050-4b33-baf7-43035ffc24ad f5b27d09-b371-4cd9-9b8a-d26afab85f9d af5880a2-c578-4911-ba1a-6e675fafb53b a76a031b-c24a-472c-ba41-1083c5237b45 3158940a-866b-48ed-815f-2c3e6585a737 7aa03d67-4a38-4607-beb6-c1eb124392e3 40668327-e2b8-433a-9396-4eb02b55e634 668d65e7-9514-4d9b-aafd-6060c138f4b1 ad58837e-ff2a-46ae-ab75-a6f4f16d95fb 0570376e-e646-43ca-8e1c-d49434274132 c071f58c-885a-41b9-a29f-0e9f262969e7 77155e5d-6ce8-477c-b5c6-617b6f2ebe68 56ddefa6-adf0-4b55-99b8-c4d632614205 853f9c97-a995-4675-8687-dfa9c77760d5 b22e5e47-c850-4d48-886a-6452c7ea513a a04e43a8-9fcd-4358-bc19-e112759c16e9 a55ad511-b56f-4cba-a125-2694643cf882 6abe907f-3f41-4d42-a005-752a5c3238a6 c6642cc4-06ae-480d-99a6-d7d7dcbd3997 3a903091-cd5a-440d-b903-946f4c5b29eb 69729ee4-02bd-4dc1-9ecc-127495538414 5abbf7b2-d59a-40fb-b074-e15074fe1fc4 2889f86f-c439-4e27-ae57-a7e65b7343b0 9314be91-6ff7-4426-9f7b-b92862e7086a 48274d94-f85a-41c4-bfd3-c66750c8dc81 9a4b9a35-e911-44bc-964c-e3463d4c122a a1f1d8a6-a7c2-479a-82e1-c9fc2c66a65f ff1351a4-43bd-43ce-96bd-c8e3149fbc85 c4c213d8-ca97-42e0-8f7d-f421c39eedb0 02dc637d-5eda-469b-86a2-fceaa96c74d7 c39f8593-830c-4f40-a06b-8fb16976cdc5 8e20e4b3-6aad-448d-80b2-8b3b472b2799 11f58bb6-7165-49d2-a581-d1d4a7e880f2 bc6408d5-6aac-4ce6-a556-41520ac2b933 c28a2d64-d87b-41e6-85f5-94642dd193e7 fa8e0eeb-b840-4062-8025-670d59617226 992ba501-3304-4097-a870-e94c5d2cd432 a46749ea-8e48-4a60-90d2-7019bb8f8afe 29f8c15d-87ee-4673-acda-9a81c92de6f5 0214d07a-6c9b-4b1f-82a2-57af10d10baa f2fac046-0215-4925-acdc-71f3b51a3eb1 4ad83e90-080d-4e03-b374-42360d814f52 edf1ab62-847e-464e-8f48-5f39346f3248 1b94c874-9238-406f-adbc-7deedb0797ee 72c5c6b3-01d6-4b26-a896-d142775971da fd6aac42-f7b2-485b-8552-df4b968202b3 9c0fa3aa-d4e6-4302-b42b-9319ea0360b9 022bdac4-d13b-4279-a31a-826cf19fae67 e1db9c08-f1fb-4cd2-8b04-e3481104bb79 a170b7e3-9353-43d1-bedc-7787e9d15eed 02852356-0e23-4d9c-9ea8-e65cc7c222d6 31183595-df74-4165-ab9f-53c3615ebdf4 7ceba45c-8ea0-400a-a0ad-390eb080746f fe8a92fb-9740-4dd7-9909-a54d9205df00 e55de67a-79e5-43cc-9808-b7dcebe9d0df 216e9a14-ea44-4dd2-9ac1-af6ec6f54573 4b064efb-f627-4553-8a3f-565f3d43dcfd ff26bacc-f8c3-43a7-a2ab-ae0b68868c7a 69be19d0-4a4b-432b-9209-bcd83673cbc4 3e5930fd-b762-49b4-89a6-bc5ccf5642be fd0d97e6-0c6f-42b5-a81d-209f550a8009 0ab30c2e-5779-4483-a8f0-ee73996f41b2 f68d5c45-00ff-49ce-b970-18324d51618d 4ac41536-ee97-46fe-a8d8-229ec841e13d 9efaf3ab-c580-4537-84d5-8fbe66971894 b621a124-95c4-410f-8617-e5a60de087eb fa38de8b-e8b5-4f1b-b4d2-38234905b302 4627917c-7bfe-47b6-88f2-30410c4fe3dc e5163baf-594e-4e13-962e-33085b8849e5 24e5203a-87c0-45bc-b8ad-bc515cb7c23e 1d56411b-4e39-4357-948e-95dffdc1fa22 3bfa3868-bb22-4a73-a8e8-4cdae40cf5e6 c243c292-0b7a-4778-8a84-20d658c48720 e9537c49-9bf4-4e60-9bcf-1cd19dfc0e4f 0aff2f45-a6ac-48f9-aa7b-c820d7c5b2ee 265d66d9-58e4-4abf-9fa7-67e52cf631c2 b9f407c2-b112-4b23-bb74-6d1b39f0960d 88b9069b-af20-4ee8-a7d6-a3d83fb7f0d7 08557893-f8a8-4cfc-9865-5f9163ba9428 bb8d4227-26d6-4f77-bd98-ae724ebecb5a 41584406-d439-4b41-8dc8-7d32fcd9f9f5 0ba5f5ca-c407-4828-8345-56c5d9774a36 8aa4946d-5d7d-4607-a79b-935f490d4aaa 02aea879-4be1-419b-924a-1902cf368530 cfba2b2a-d155-4420-86f2-a3b11cbd41d9 f1a2f6f9-cb8f-4ced-a773-68078863eced a12e8d91-8a4b-48df-8770-4593522c4777 10b788ac-f253-4537-98bc-a027f2715a4b 24a33e72-0c65-4837-9144-2a2ce82f8890 be70d914-bea4-4582-84f1-bb258fe7788e 248c792e-fb2c-475b-9281-01d888079568 7a2ccb4e-e818-43a2-9723-e56c2cba1bff 1ee4f2b2-1a39-4125-a784-03b07813a858 6b437666-8d7f-45c3-b944-59f37265c4ac 5f6bedb9-9abc-4755-9edf-202fe7883784 58b14863-266b-4942-9939-75e7891f0e59 314d8ca0-b012-4ff0-85e9-d9f5c2570e91 de448e27-d13c-499c-a6cd-d8c695dfb569 17a1371e-d508-4408-91db-2045038fd635 026cd6c8-f19a-4d85-b380-d442e2e3771d 03661b2b-3661-49f0-95cd-25eab15624c8 d07b508c-9e2c-42e6-83f0-f48520a0dcf7 a01285db-d9aa-4a1a-8662-8a0bacb02ede e87d6f24-936f-40ff-b6b2-a719c6b36572 8ab7039c-dd12-437e-98f5-ee3d241bbc75 e441daff-9f6e-4014-a481-8fb49e762f85 02dd6b88-24c8-4ed4-b39b-29e56c55b356 bdece5e5-21dd-4935-a461-da526da9baf7 568e29db-57f8-4caa-8214-3978e05a4bce 7318a309-98bf-49a7-a137-87d7fcf822c0 f3791feb-d4f6-41fb-bf1d-753f8f2ad1d0 5c59f4db-2344-4cd6-9dfa-ac934617641b 1d8566f6-1224-4b79-bb66-12ba73ca4c55 a8a4e4b6-6f5b-4ecc-8e47-b05c3431223f a5c83457-cf69-47ea-86a2-8e81e99ff435 4f5cc665-97e8-4efd-bc2f-7827ff864366 e253576b-ef18-40a1-ab00-8f64c36ae034 9d7a2f5e-8651-43c6-81ca-b4613d1bd08b d490e9c7-f8d7-46c0-b9b1-4d011ace3487 31d3e03e-1fdd-4fac-bd07-e286a5b612cf 6339aa7f-e6f6-4a2d-a636-c07aff4fc792 63f03a01-c9ad-4cfd-8162-f977af6e6b17 0bcad285-acc2-4d6f-9d30-88059f76c821 1080e4b2-dec6-4833-a505-ffb20a024817 2a54d8f6-daa5-48ae-8684-d6afed5bdda3 26988785-aa65-425e-988e-87e0c35d6f4a 7ac5d10a-d7ab-4c1f-9341-026a6c84bcbe 756532f0-b75c-48a1-bfec-a632184bb356 6b3167d5-1443-4c68-8ca0-bf185a7d1bc4 1d9e95e4-03a1-4a00-b58d-7c22f5a57363 5d88b359-b1d1-470a-a73a-5b456d776961 a87502c3-1b77-4e51-81bb-cd3353036acf 9de4c1b6-3637-451e-a202-6e8a1529b633 325ffa26-d1df-4bbd-9c57-9e33588e2c1b d1c5ec7b-083c-40c8-949a-d51167d28d77 26523e16-4e04-42e5-89bd-ba84250a75ce 2198ed32-e8ca-452c-b805-005099afa1ec 537c209e-95ee-4a56-a246-c298b2967721 34f066d7-063a-4455-867d-50f7f13f6c19 4b33a8d6-4faf-4e9c-a3e9-139b06c2956b 1f4e1ac7-f30d-413b-84ea-638e82111360 3444dd6c-cf60-4947-a968-c4a600bddeab 18984eed-e95f-4d57-81db-c04f9e78081a e6c4be0f-4d7a-4f6e-b0db-94f1c24d8d0f 3662ea46-445a-4390-a839-63e28282c32f cb0423ff-ff66-4b7d-a20c-adc89a17f0e9 dc368dc1-1d27-4de6-90b2-436760a400f2 f5d35b2d-3735-433f-8c7e-314c4e464de5 9d0efc6e-0372-486b-876d-f506da950d02 bc3833a6-864d-488c-831b-38646b48651c 995c546b-dcaa-46b2-a4e6-982b9a01a564 4bee168a-126e-44be-8cab-b63771b2627e 78b7c367-b487-4db5-a224-0433ac79e60c 632cb3b8-cd55-4f20-9cf1-13690d99ec8e 70a558a6-4187-4c10-9bd6-05ce12ebc052 04a73c1e-338b-4796-a09a-1b62c71ed480 42441603-198e-475f-9b89-c6d23241429d af44fcdb-80e4-462e-91b2-2760ef93f2e9 e65342ec-3426-49af-98e4-cfa8ede908d9 b890739a-305d-40cf-ac58-75a620f26ca4 f46a7e16-e3ec-42b8-b3d4-01cd8e61a812 8b8f57f0-86f5-43db-a54d-dfa5f74d81df 5f309ab1-c9cd-40b8-acfa-53255871c540 c27faa4e-837c-4b33-8049-da490d5c2d85 bc784f35-ca0b-48a7-bc31-3e6ed9899e14 ee52e927-1109-486d-a71b-5337e08b0b31 5be64a62-760d-4eb9-9be7-aa14e0214539 39f6e912-b6a1-43ff-a4e9-488677fc26ee 575f20c4-1a58-49d6-a4b6-aed72cfc2c67 7eb27266-2fa2-44b5-b5cc-5c8ccbc154f2 6feacc6b-68af-4185-aecc-c2d7cbbd51b1 3766b4aa-1845-4b09-919c-3575e6a66262 26872313-bf8b-43e2-82dc-2a55ca1af028 b1db5246-ba11-49b5-a44a-3470d415524e 3b8b6c70-07b0-4d8e-9bd3-a78a26a871cf e0e029ed-ff62-432a-8a4c-d25dffa10f17 74e45179-6729-4dc0-ad3d-84e3872fc7fa 6a636bb4-20a4-4810-ac98-7f48b9949aa0 173da4ab-d738-4726-b41c-732e82daafda cb2f174d-062a-410c-be33-d4d9ea4f1ffb 208ee88c-c379-42ab-9ab4-7f97709043ce 71e29d78-5647-4f7f-a6ea-981303bb04b9 ed3a343e-b96a-40cb-86ef-a243c8644a92 392fa731-ee48-49f2-a461-937a9fe39f91 f5fae95a-4375-4163-91cb-eab799e1fac1 7c8a1d36-da89-4589-b8c2-bb49a902eef1 d4769be0-1ebf-4e64-a6d5-2f37b1754048 d5bed4b9-d01f-4f16-8153-afc44c866391 45326a22-1212-4911-aaac-176c5db93b42 b3647d50-341a-4c56-a39a-ebd2577ab9ff 4ecb5dd2-304d-43cf-a5cd-c82330f622c4 d19a3871-2091-476f-876f-600539a1941b 4606aa8e-23f4-4be3-8aac-b7cbf148adfc 810d7383-76b9-4e77-aa0f-f2b2bf2cddbd 28d5fd50-72bf-4295-908f-7dc3f65ea99f 5f5800c1-ad17-4160-9ea3-d8cafcf7f76d 8c4c1a79-ecc5-40fc-8508-582fb80f8b64 b58f25e6-bd22-4bf0-abbb-25b9bd2c5925 92b6d409-0b17-4083-a558-180be3313298 2ff7c99c-d534-48a6-af3d-fcde3b78899d 91cfa46d-91fc-4bea-a66a-67187f943c2b 3dc73e64-9db4-4ef1-aad5-8bd9d3ff3601 8d61f5f5-faac-4e0c-bfa6-bea7b97393b2 51ef8273-73cf-481f-87da-5ff62a8b0667 2c6fbc47-8055-4fc7-9b58-2f96284dc949 c330522b-c0d7-4762-8697-002aa17eb75c 310fb97f-f07d-4f7d-bc71-0c0be63bc9be e27dd737-bb6a-4dba-9c54-d7447a8bfd7e 9ab9da06-040f-4044-8651-955c1c26be61 ff16cd67-4520-4c6d-941e-ecfbd398b77b f53255ef-6bee-4b6c-8550-e3d2efcad798 41e09e44-2ef1-4e44-97d6-d7d2caa041a7 f097f74f-a887-4504-beb9-ec949f899c03 6e0fa3af-4893-4e0f-aa8b-768a6357cd1b d0aa7689-189a-4c5a-8f17-634b07dd35c9 0eccbc03-09c7-4719-ab15-662c03f15af2 6a1e0d2f-1758-4055-8911-720de73deef2 6cd53a2d-c8dd-4343-9d1a-765240fced1c 7a68e425-45e1-4d20-a5ba-9914cfd58377 a58e2c09-538b-476e-bed6-265c4848b81e d9386431-0e37-4ee0-b259-eafc80d61d7c 0470b280-fee0-4d84-82f8-253591bd8262 9f357311-2902-42e7-917b-2f3b5d2bd721 ada896bc-000f-46e3-95a1-eb40154bca21 5c51a0b0-b35d-4f92-b809-14cbf5735ece 237b7a61-1c3c-4c4d-844b-a2e78ffc1ba9 34991f85-5795-43c8-8a08-23c33eea8749 b7e4df25-7123-4a4a-94f7-0f0025241980 c8b9d3f9-efab-4ff3-a95a-3841d05ccce5 5d720146-8b97-4a66-81b5-db0169ece14c 17f9cd2d-4e7d-41eb-b89a-b760341a4185 a6c36ae3-f246-4df0-92f2-8fc4c99f0cf0 8bde6f43-4107-4f7c-9e13-e3d7c9dde0fb 0d4cf80a-72c1-42cc-9c93-794bafb90de6 76132dba-d2ae-4561-9277-e2dab5e6cd6b c37781fc-16f2-430f-8319-a104d29a2cea 89aa84db-2876-4ef8-9804-13c0baaa7fb0 3abe729c-38aa-4b25-89de-c89f5f032aff b4b3f1b9-5ade-4ad0-85a7-2273cdf6c421 aac5ac1c-7f86-4ecc-a9b1-c8579e96a032 96aaed6b-93a9-4cc2-8908-11a6db1e182a 85bc0ce1-9a52-476e-99e8-c82a977b135d 13cf7855-6997-44dc-bcb4-40be9f56bd13 9022a6d2-7ce4-4e81-9b5b-94719fbf6e90 3b67ba57-27de-4349-8593-2ec88a972be7 028c2110-52a6-4d73-b2fe-3e3a1e26a234 6bc7ef26-5d11-4ad4-a2e0-c3eb61583098 98d1b8f6-ee11-4dbd-b746-ab9074238b5e af8d51e1-7219-4a66-8494-bf33418e90ca cc4bcd5b-a222-45fc-8b64-b98281ce8fe8 7f12e9ab-c4a5-4b36-abe2-1150c37b0f78 8481809a-4bd7-477f-82c1-cef236d39567 a563b58a-3227-4b2b-8474-f4c68711ede1 b8f8e09b-f998-4b7b-8ec7-ac2f65ffbc13 345225c2-2284-4628-a502-f3667c9fcdb7 cbc20800-ddcb-4dce-8bef-f36330028bb2 a861eef9-07a5-4fb3-93aa-96d3bb50e41b 76de8c4f-5f4d-48a9-b1d1-ee7207266242 6f60bdb4-bd79-414a-b385-c116e92e3d57 59fa35e7-2929-4fb6-ae4d-7690e355ca38 19e01767-9626-4b0d-a6c4-43b29e2370a1 f5c58662-2d1b-42a3-af56-d209ee977329 8c47ad58-aab0-44c3-907e-9b88961c3746 136159ea-590a-4fdd-94bd-a647db7ce9a6 04d541a5-6772-41a3-92a3-05a9f0ff0f2a 0505f6de-6cad-456f-bed2-0eb6d2acfdf5 37808250-288a-4025-816a-454866ebaf59 fcd4fa07-bc81-4d7a-acec-6668da4c2f52 813b4e3f-efc1-46cd-b818-4c17ff856f3b e6d1fd77-1f33-4724-a81f-7bce6a2dbc0e 6d2def08-5591-4552-a648-71fae21cca49 f0dd509a-378e-44ba-865c-96032209b6f2 f5f05fc7-0b6b-4f2f-b92c-54e54b6c869c db0a2e35-ecc2-4593-be89-b770bea161f0 1d0848ec-1836-4fd4-afde-cbacf438f960 41630119-a967-4783-9216-ec27818060d2 e1fc8605-5c36-43f3-b3c8-00a07bf4ae58 21e425c3-ed67-44a8-99e3-a724df721b69 c267e71e-705b-47d6-942e-349db307854a 60e11183-ba4a-4983-ac88-92a6c4d46443 780c35c3-d15a-4fac-aa4e-2de164589bb9 d9bfcd46-c575-4f89-86e6-cc88569a3308 59e8fc6c-4f74-4de5-8105-5e7f534a3481 f01249af-11fd-4c30-acbc-36b30ffeeb25 605e9418-85c4-44a4-9d7b-04af5f05cf7e 0f533893-2dac-4398-a22b-ef8ed5aa1c08 52131a06-bd8f-4246-81ca-5bba7e4d554c dea7467f-60af-476f-a6c7-8e85d6c39367 6790058c-bf70-41e1-9bb7-c5bd6ff5b60b d2309456-b000-4796-aee1-882dc49f9a4d 2218c518-6807-421c-ae58-236a2ae904c5 600c05cf-c64b-498d-8b7f-9ef548f24564 e9d3af8c-74e9-4499-9982-a022583f9466 8477844f-7ca3-4292-be7f-4b963fe6dd3d ceec7614-abbb-4a30-bce7-31486111408c 22751000-ab07-4956-858f-a71447bc3dd9 c30f4227-4e1e-4b9e-a3fe-16a864e9543f 5bf49457-4a8e-4908-8f19-81d9b568fb26 9904e32f-81c5-4e70-9abe-3b2844a92b0a 6e62463a-3673-43d1-a2b1-beb768fd8234 0611d9ff-67af-49a7-8027-c71d96463c93 c7085db2-7d2e-41c2-b872-d610c8f93e9d 7bff9f73-0cf6-4d6a-a3e9-de574775ff7e f282cdfc-63f2-42d1-b436-67536807596f 059a43c0-c499-4619-8ca6-a0b9c3ecef52 509f063e-5205-4757-983b-34bfaed9d1fe 68cc1eaa-a325-4ed2-b48f-2595c3fa57b6 bbf20d45-a137-4f90-b1f0-fa59ee1a0d5d 16968200-8530-4906-8b48-9a2f7a3e48e8 f4e9587a-b0fd-40be-a96f-0297cd2b2c0e e56a25f0-ed5f-4ff2-8967-182b8bbd391b b580beae-de9d-426c-a664-ba15932c8e12 26a8a370-47e8-4922-9199-ba0cda0bd6ea 0088720c-731d-45e3-98b4-0c99c80d840c c09b2415-71c2-441e-a6e0-17ec08c2f7be 8e4aeceb-7fc5-47b1-865b-4e5ee22be3eb aadedd73-f189-4428-8239-ba77a6c2e132 52cd7f5e-6011-44a1-8afd-eca968c5164e abc6aadf-bb69-47dd-861d-ba7ffff8d4fa fbe587a5-911e-4eb4-bee9-704710e2dc8c 47d688ea-0d46-45a6-a4af-fd944b359bba ca4ad4fb-4a5d-4c31-8bd0-706034d1f8af aebd376b-a1b3-499c-bc87-8999e84c8572 f272d2bb-f762-49a5-871c-9efa22e89c0b 60777d72-b178-4a35-ab59-02851231e957 b9835089-6448-4bf1-92b6-6d64374aad83 7f5e37a2-21f4-42c1-8d0e-ef0d0b39382c 475ee09a-8911-43a2-b52f-821a89fba504 9351dcfd-a1d7-4bc6-bdb4-371fddb6792d d865be9c-c98a-47a9-bdd4-48c132c8700d 73b66d48-2593-44b7-abee-d005b0952246 a772c0eb-d407-4b94-a652-23f50962c831 a313a891-2f47-40a8-a53d-4cf018696705 b68038ad-c976-4c52-aad1-ac7fb7dd321c 60e612b4-587b-4559-b721-cd12f7e9e05c 24c72950-7e4b-4a9e-b170-f010822d00a9 89ed900b-3091-40ab-9d14-a5eeb1866a35 e28eb8a0-4f0a-4940-b690-6f8a0a4bbb8b 548ded43-47a9-4fac-875a-4f43ae35023d e52d3a60-a038-448f-bb13-98bb9cc677bc 3349b4a5-7234-40b8-9fef-f49573348a5e 90f6b97c-d01a-4890-aa8f-616d78fd78ad 3a86a86e-ad13-44e6-b8c1-732f827cbad9 8fff7c2a-fad7-4ee0-92eb-94eae5c8f132 3b09f23c-3bc1-44ee-992c-1f8d6895a400 17975ffd-5ee6-4b05-896a-0eb35b635444 ff0e4023-5fc2-43e6-abe2-a03904ef320b 795d6368-c9f2-4b2c-863c-94130a549661 45950af2-9017-41ff-8e0a-62c8bb8c82d4 bd0398de-6ff3-4ff0-a672-e5e1e760e818 45190248-74c4-4da7-9b2d-7207d56085d2 45000efd-adab-4dd8-b539-01678c409294 74e8c8d5-dce0-4fc7-87e4-2ce99ac45078 5ce60bef-9580-43b8-b43c-76712b78d5df 4e268b12-066b-4ed5-9c9b-b03bfc7a5f52 49dd236d-b423-4c68-a4c7-a452681394fa d5285b74-80a2-4f84-8cad-e0cbbbebe21a 1b37a6f4-f05c-4f5f-b3f1-d21bc53bb294 023f7e83-c84e-488f-9700-8244a9a7560c cc0273bc-4cf3-4c73-8173-13e4d19710bd 1def6de9-028f-4347-bab9-849dd98796c0 49a9e93a-54d7-4b79-af44-1fde025f772a 08d8d793-e33e-4497-a1fa-c234435d28d0 64c970a4-6360-41eb-b5a2-2810b319f8b9 177a55d6-d200-45ac-bbc7-3dd94d580e7d 1de48d8f-f96a-4c4e-aec5-0165713c21c4 e5235b74-327c-4a6d-8d5b-1eec7270d928 ac27769e-ba14-41cb-a578-1b378d219c46 ea5785ad-4495-4daa-b0c1-4d2f068dac53 4fd11792-ab03-4fad-bab6-ce9582b61692 940e5295-3306-404d-8c30-b03896b7d367 8ebbd6c7-b7f5-447d-9e7d-a1186ffd5d56 975f4e14-d280-4746-a37b-19047a80d551 907bf633-7d8b-44c0-a4d0-1c4c754a8329 01f13576-cfdf-4d57-ae7a-bb3db9513ea7 8824ab6f-987a-443d-bf8f-6c959608adc3 21df04a4-b2ee-4d27-81b7-84b59b1ac938 da636929-06a5-4810-a6d3-fa8d45b02328 888b6443-3fa1-4b56-8e26-30bf87c508f3 db27173d-427b-4c63-82a5-1885035dd3b6 e14e4461-f522-4f90-a86d-3c3fbeabe9fa 72394442-71a8-495d-8d48-caf9a94a3bdc aebd90fd-8c5c-41f2-af7d-64bf703488e8 0a735356-d99c-4fff-9289-159ef6476d97 772b2292-5ccb-4df3-9347-f010505e1f69 906d96a1-573f-48eb-89a3-831b18552212 a01b3a18-5eaa-437f-aded-e2c89deb5552 4b8f8e3a-c157-4751-912b-b20e9621969c 6a5bacd3-c559-46b1-a885-e531e6a29648 357df06b-f513-43ae-9f54-47bbca0da586 f8154193-0783-44e0-aa4a-4e67c06fa559 fa68bd5a-c877-465a-bc87-11b6ceb26a75 a327c1b9-eec2-4748-82e7-2c788ec0bffc 7ac3670d-ae67-4628-a04e-1ec84e01bc70 eb6b550c-16fa-42bd-8329-af7e298093a7 be2afe29-3a88-4307-a384-932b12f8bbc6 d3d36830-8a52-42fd-9199-3927730e7929 1b9de3be-ba19-4402-bd73-07ff4fb42ae6 ba2cd193-aa00-4380-891b-42ee5b461d78 10a66f9a-ed02-43c0-ba15-134b0d715525 0922b3aa-ecc1-41b5-bfd1-0044e6d581bd 11431e5c-c421-47b8-a6d1-b5cd83525deb 316cffd9-9270-438b-a160-1bbd7868aab2 b0edb391-d7b0-43f2-b369-3f5433d34474 3cc24397-5b50-4d90-9422-0346667e3210 eaffd9c9-ad5d-4993-a9a9-9ba5f5d61cee 6ca09e7a-eba2-4b0b-b038-a0b23af1d7c2 69e0a4ee-6ee9-43bb-bda6-15865a6b40b8 6bd2e171-56b1-490f-a2ee-9424a3d5f48e 0e1d57dc-b112-4cd5-898f-c1a67bcb9176 9047c4e4-5104-4936-9e16-ce85c07e510c ad715d3b-340d-48f5-8bb1-fe8ffb1db283 f0f6b24f-70dc-4ccc-88d2-d92138fd9b30 5e441471-57e3-4907-adca-1dd76db1fc74 2dd6c27d-934d-42b8-b845-746ab9e27801 ba4b6207-6952-4291-8213-57c58074fb29 b226428f-8e21-4979-aa06-a4c4cf34cc1f 6d14f7b6-3ff3-4ed5-af6a-5b91527a3680 adfc28ac-4835-45ad-889e-1691ed8be57b c0c264df-0cd0-487c-a4f1-5c107d2bcd7f ce9009a7-8000-48dd-bfb0-e03c8b733196 45a55c4e-7d29-4f53-be9d-caf35c1affff 2e9b1bbb-93f9-40de-b3f1-459906cdad12 b346c4bd-7b18-4827-b018-48d28348b012 dd364edf-bb55-4942-bbc0-a58fdbe8feb6 fe2e6c5f-8f06-4412-8909-934eca95fb4f 3da60b6b-59c0-4e83-b0ea-4a3a2d75d62b fca6ca87-2272-448f-be53-b3fa174e3d0f 175dcf4a-8324-48c8-b490-e2fa77dd7816 3db86a8c-1b7d-4ad1-ba60-753436276d7b c23eb826-94c3-4184-91a4-6f3df5a688cf 1465b793-8131-4e2f-bbe7-793b5572bf7f d521d9fe-02ae-45f8-bc16-d41cd6120073 1d1a615b-6a53-4a3c-a5e2-cd95a258db4b 1dc22ed1-d36f-496b-aab8-4def6bb4facb 5b9cfdf3-d3fb-4c4e-8f50-6babffe1d840 cc1bef2a-8f49-48b9-9fa3-39957c7d0689 8a878669-b5c6-428d-8d05-c8a771dceec3 83340098-c5bd-425e-9d91-8140813620cd b9b1564a-b4f4-40c7-aedf-ea53e39a3d68 653b0654-93b9-4583-95cf-5a7f0e8e0c2c 8b9d894b-f5db-4dd6-be9f-0e1b995f7b25 7292e509-5471-464b-91ba-421ce185f268 f2a4740c-be2f-4780-bc16-044a8165b6e6 3fabcfcd-fbe7-4d4b-a5f1-c7d4173c49a4 098ee3ec-6718-4230-a56d-79eb68b11d95 d7dea0bc-2c74-40c4-a9d8-181f077cf5bc efd45b12-11e1-4593-a85d-7c2104d05b75 a1c82777-99f4-4f83-a84e-4a3b34c045ec 2c8e8183-00b4-4eb9-93c7-4da1ce93eed6 a9140a8e-5cda-44bd-a39b-0f992e1d050b 8f05fe7f-062b-4af1-b02f-d6c750141f58 d12ca600-9b77-43cd-a58f-920060881039 74f107bc-c398-4ff4-92de-44435aef3058 c317fd0f-ab28-43b5-bc1b-dd31fe1b9fc9 e05006fc-b54c-4b1c-843c-4f62137c053b b6b0fbe6-b8ff-43a6-bc4f-59d4bb486eef 15f70ea7-5d9e-480e-baaf-9bd7fe4598d9 cb92670a-1c93-47fa-83ab-0eb03a573f13 727c1568-87a6-4148-acf8-f90a417aba3d faec30c2-a278-4daf-a587-454ce18cae6a ff735f3f-8cab-4dfc-9a64-dce7a0e87050 21ceedf0-a4e2-4b3f-903c-57d336e8f839 274aa332-408d-4c6e-8fbf-f3228bd3623c 3413b801-06a6-4e08-8061-f9dcae7ae493 e1de9350-421f-45a9-9103-db826d0117fa 7d25bb91-babd-470b-ae9b-18eec11f3dc1 444d70b8-e036-481c-be37-c4a9bb39a25a a1f33524-c864-4e44-b663-ce99c7a28e11 e2dc2b21-bfb3-40f3-92a0-185d3fa379c7 d70c46a6-3d5b-4462-bb01-2045da7e2e8b 4f474869-c845-4d59-9303-7836a10f1c89 942b6ed7-5785-4ffd-ad8a-4e1ad0675534 d4ee4a59-c04d-4fb6-af44-54c51ba256ff c0fefa26-1e13-47b5-8385-999d3e4324d2 1212f75d-e6e3-4478-a06e-e17fb2336c9d 067c632e-85a4-4b2d-875a-ecdc9658b0e6 c3c84b0b-b244-4813-8f0a-811d5e0507e1 cd301802-5908-45dd-8208-85312a138147 6b90c732-e3fa-47af-a875-650b36b33d82 5485f239-913d-44d1-8803-a12acf5e0217 2eb380d3-0461-4e42-bf77-a235b029a53a e6a5d4d4-2f3d-41da-a8cf-e78c71a3fdd6 f311ae8f-5627-4114-9bb8-422051fc2b2c 9f4e5756-b7e4-430b-b451-93f8ffade8c9 61420b58-2c85-41fa-98b6-7a7e8bf7e507 304c3683-f4be-4203-8eaa-3dce1de63486 c8c4ad45-2456-4afd-9647-1ef5c8510155 495a6980-3bcd-49ab-9187-c5a5859724f8 d3038c93-f928-4ef0-b642-c18f23949bb0 4e4f221e-a35b-4946-aba4-f983998fd955 785de16b-1115-42b1-808d-e2908adcba0e 1eb81f1c-b5bd-4073-9aaa-cd627624d328 dad242ca-85ef-484c-bfe9-911e9ed03c7a fc19fbff-7297-4261-8f67-71d3d3f01f02 ab45c040-321a-42a6-a9ed-a86976bec37a b88bfd92-9259-4dcf-a3c0-201bdf63c675 d935751c-6c90-4476-9a64-c92c51f108ee ef815636-b03b-4cdb-bf6c-85fe76663e04 d18d153b-f01e-4b33-ac3b-c830e8347757 45070a5c-5330-4131-8c01-797e1150a9a9 b305d5b0-eb79-4624-abbf-0be1b43d517d ff209e22-dbb4-4904-8e80-714403bce57b 49cb8d83-7199-4389-a363-6386b26d84a6 9c54f2ca-4d48-4f6e-8456-baa6700d30fe a9dbb933-944c-44bc-91a5-7a2015b1c629 7ddd30d8-acca-4faa-b967-cfbb4edb92be 0d64f4c3-f660-4f46-a2ab-d9e56e45e6b0 e1e6d628-f20c-42bc-bc3f-07361a4506ec 3e8730f5-df53-42e3-93e7-a960d5bfc6c4 3d17f477-0db4-40db-b10b-5137ddb45c93 d5a4900c-0ed8-4024-8b18-5fa76811edc2 48aa7e2b-d7ef-4746-b691-49904e33278e ce552de1-5b53-4a07-99a3-8eab114f9f4d 2cd246b4-6051-43cd-ae56-c9ce463ce5ee 640135ac-8a6a-4680-99d6-d2a489c24286 4c5b3dca-7d08-473f-a918-6b77af155574 9904c9d0-f6a6-4e5a-b22c-451a3bade9e9 4320a08e-e1cd-4744-a03f-f159887c5e30 2540f33f-e1b2-4db8-9804-510b9d5d75ff d5cba9b1-275d-4050-91da-9837eae43043 faf3d860-31d2-4aa9-9d49-b5d6d5ea0f66 3b696854-ea80-45cd-8195-0b9de705cd75 0ef297af-06f3-47dd-b378-f78b4cc1106b 2a739418-c587-4819-9ee7-aa9d71b67c26 7da3fa02-2634-46dc-bc8c-39a8d2609509 11b63651-263d-4003-b630-55231a521acc 02d37aab-7cc8-4209-8079-079a32118c17 bf40e7c4-c6ef-4220-bfef-902f9ae95f15 19baa21f-54ce-4fcc-9204-de6cd7892c85 88449673-d968-4b74-993b-a4159ea97b53 f4f0d920-7d4c-4138-9b30-41da9934829e 6c87193f-522d-451d-8709-0f8e5cef2495 dac8809b-3284-406e-9d59-2c6623ddd9f9 107c3145-884e-4f24-933a-c3a108ccadc1 b5b8650a-eac1-448d-9405-f85302b3a7db fdb5b848-f4ee-4711-857c-f6e6981d3a09 1dc7deef-768a-4f1b-897d-c8dbaa3761b6 ab9ee6cf-c30d-4bc6-a567-c63d6c9b8c5a f8423958-f9ab-481a-a202-80232d06e50e ee23e752-6d6e-41af-85a5-ba75939646da 1b62d221-a8f8-48c0-8570-82ec058fc722 6ba65b94-c455-4425-8fa4-79ac56a5374d b60356c6-198a-44e8-9118-0658c1ea5b2e c9516777-990d-4cd0-8dbc-b16097ddfcb8 b52457fc-de5c-403d-9033-d91071c5a5aa 124bf5d2-7e25-4f69-800d-2eb8218cac4c b78bd412-f518-4116-9dc1-feabe5cda308 e1081352-cce6-4da5-a799-89368a146407 451f3df4-41b2-40c6-b243-141fb89d745c 754025c5-1d53-4613-9269-baaf453414b9 175bbcfa-42ca-4e80-90ac-f79fe792dda3 16f6330e-d642-4747-8d70-c1fc627d6e8a 6d10bcfc-ca24-448e-8efa-ec32b24ed790 578ba007-24b2-463d-8dc8-c4cf60445384 173eb145-10f9-477c-b0f0-08e1af32f7e2 280d3729-e267-468b-9229-1cf87ef05002 dfce4c06-26fc-4459-b95b-9acbd3bec7dc 678aad94-3112-408f-8ced-8264100b4b09 e3d5f7a0-eebc-4860-9d2e-dc66fa81f0ea 44557099-8b95-4856-9ea5-7956a37594a2 a41112e0-675f-4060-b70a-45345807126a edacc387-7e34-46a2-9004-10747fba65d9 0b7e6187-09b3-4cbf-abcb-ae9e0abfb37b ee5df352-a785-42cb-916c-f319dd027ea3 87bd93a8-e383-46cc-9d85-7b2b5fc8af35 1cbf5661-13f3-4183-8a50-61f02644bd03 e70353b2-df0b-49d2-80c0-f956ee5d4be2 c4bd03aa-d017-43de-97d6-9ab62675e79e fdc2e854-25d2-413a-94b1-05013a74664f c95ca026-5215-430a-9857-7d997c7f9353 4de9439c-a58a-4778-b7ea-1d601f1d9dfb af8c78e1-c819-4504-888e-8515e04dbb9d fc3264fd-dc78-4032-9a66-d86e5ac882bc 68113efa-97de-4683-8c8b-34ef1110cb18 d4a8a16d-4993-4b66-b644-36ce7fd5b14e 5777c0e8-63e5-43a4-aa81-8d1928812277 c929c614-f104-49cf-b037-08bf972ebb6c 5dac67a3-ac5b-48dd-bae1-13fc0140c158 66f861bd-4615-4592-99e3-406a7e2ac518 bfa54b3b-af73-4bea-821e-96b4b3f9c201 6b9c0318-7b63-4d45-a302-4670a02c932e 3ea1be75-28dd-40d1-9d51-983cc546971a aca31144-b3de-4a8b-b9a5-aac4f840adc0 04df0980-a0ba-4146-9aab-32c2e1ea855e 54b8a0fe-25b1-4cc7-9cac-809396c0228f 80416dae-b7ea-41ad-9ebc-90b9d3652bd6 82a67f5f-3b27-4ba6-8979-92d8bba52dd9 734c773e-47c9-4da8-bcb1-bdb4509275cb 3de63dd7-d5d3-4ce1-b46c-06f407400226 a3f6c308-f6ee-4bc0-a839-321129bf57c9 29ec2033-4db8-41ca-bf3c-6ac74200ec64 055f600f-7ef3-4c44-b313-14f210cecdc6 8bbe90cc-2bf2-4991-a907-5318b5c09d14 6506f421-e47e-4b9b-be1d-8355bdf3b6d9 9ba5b6be-2973-44cc-8dba-ba91b68c7ec1 d3355746-3a3a-4a82-958f-0e967d917837 470f7de5-0c23-45d3-b5a0-254ac99411b6 cb486214-1b73-461a-8c42-51698e489a25 0876ff60-badb-4e72-8d32-b0c97a8b4599 ea73e3d6-41f7-4236-addb-d4501163e573 ffde2c11-71ef-451e-b3bf-e8b6af161d83 b064e487-70ac-40f1-8d43-af06073c1a26 b437b409-34ce-4746-b3bf-e2d042f6f654 bb1e5830-1058-4276-bf13-cc674a8e4303 07632408-2369-4e8d-ae48-317606a1d481 3a1d571b-3fe7-4b87-9659-f4a4af259d0a 4ed6b314-7af2-4056-9bb8-a03e182c729f 92978e53-f2b4-49e2-ba88-f1e87cc99e42 54f89505-c6dc-4a89-aaf1-3f31bc573084 d6031485-1241-4a71-9628-d87494dee829 46a797ee-f47d-44a7-aa3c-2462386751c8 f053ebb0-8f2f-4e39-8f85-6b028ee7b923 f2f1e585-2a53-4ed0-9fd1-feeda35f21a3 bc8f6e45-3d34-462d-bc4c-4510a23f8ccc 4494e1b0-7b05-4526-bafc-2745f0c80dcc bfcfebde-9b65-4ca3-83f2-aac3c195c84f b42cc75d-ba0a-4edd-87c0-d22986dcdc36 87237a15-4cc9-4a0a-a29b-38be3434ff08 8e527904-7e26-4da1-9db6-f806b4a995f5 0c8fc85b-586a-494d-8bef-ba3c7a9d3c83 fc24819e-0b6f-495e-a1d4-9f98d077343a 74114154-5813-47bc-9be0-f88570371568 990e4433-8cc8-4750-b52e-ba481c20b3e5 5ef25e27-6957-4ac2-8914-a5a9db8fa44b 674df008-ec4d-4c04-a758-c231394be004 799de1e1-8bee-4b56-9e59-31bc7b11caae 7fed6b52-efe8-4903-83f3-e2ef3f30b668 d8739878-da28-41e2-a15c-1571910bf44b 9d8b9475-6e39-4f85-9ba4-cac3628467e9 10bab76a-1cd2-4cd4-a49a-e790966ec265 db4ad603-501c-4e7a-8ded-d94266a09efb 7cceda7d-0687-47e9-87fe-adbc723c3c4b 2add256d-44dd-49d6-a307-f13bdb3a2542 05589a99-e8fa-4189-9433-1e4174bbc045 0c94faf0-dded-40a2-ab08-c044527d4ebb 2dd1fa64-96ab-4e8f-a56b-190532e54264 933fa435-a3f6-4116-896c-8d9bfe2696e4 1d471686-57d9-4269-bb12-041fea4a090a d732bd2a-643a-4ce7-a00b-9f8197341b50 b724cc5b-9899-4559-b3c9-fcbf3bda6d62 111767d8-0b88-4a00-a316-83cc23cf8e79 7bb22217-b74d-4694-b3b1-670657758894 53a8fd30-81ad-48ab-975f-6b60695a6b51 8fba589e-1066-40c8-ac8f-3120a0fff685 fbfe5249-5260-4bd3-ab32-21bc011cd708 4876cf68-8383-4784-8801-a66fff66ec32 84bd8be4-c37c-4905-afeb-b0de63710e7b a67cde90-31c0-42b3-ad19-460701437d66 4ab88bbf-7418-41e5-948e-875e55dda0aa d599a143-7988-48d4-8444-5b7a68c26a5e ce443089-7997-41fb-96e4-c5b5fd7cc34b 4a201a97-15e3-4e9b-95df-49cd15dd12e8 f6871810-dcb2-43a7-ba84-dc305b188d06 30d7d02a-0a95-4d80-9ab2-7f537dc2cfa4 78caa91c-b20d-47b6-b9aa-42a6290e3cd3 c6f5d628-3809-49f8-97dd-7a760aade296 f0d836bf-662d-4da1-9924-a959708f81b4 1a195c5a-0611-405f-961b-c1f9a11f1340 f8f6b72d-4e49-4e6e-bd6d-acb9411134ce 8db4f7fa-ed84-48ec-9251-b361c306fd71 1f1438a3-01ef-4433-9598-8950c5be6268 2d93012a-cddd-4339-9f44-faa07c09f477 70310e4c-e046-4311-90b7-f8d9e5ee65a6 0298e384-9820-44a2-8fc1-2194b923a37b f6af46b3-9839-4adc-8bfb-010b7114490f 89d2f598-90f3-455d-b095-deb3018964b2 b935310d-43e8-4d8b-9dbd-d734364c3670 d55fd77c-e543-4f02-8058-78ced503ad20 cdf2ef1f-1787-4b83-b3e6-b8d2a388e596 14736f80-3781-4a6d-b890-c27579e09536 49a4b095-9b92-4550-9975-344dda5ae5bd 2bd9a74c-c574-4ca3-9e71-60467c4edaf4 ace25a7f-c86f-46cf-8842-62067ce0644b ea162c02-6e7d-4372-9e7b-6b3db76ca70e 85f55d8c-91b2-4b4b-9c0c-02ea38cabd33 69e68d63-8e8d-4bc1-b035-d01999185ce0 5d0211e0-7beb-416e-bf62-6abbf0b58809 5e6d4914-aadf-4003-9e0a-1b578a2ced08 85e4318e-6434-4027-be69-02d12353b58e 0b0e334b-13d0-440b-8ce4-5a988c3ff1d0 0edf181d-f86f-4503-959f-a66a1ba2449f 195be03c-e99d-47d6-abb4-6a23da35b44e a9730b98-976f-4905-a2c9-36104cf81392 fff891a6-5bbf-4c26-b1b6-33ff76fb9f37 f0fbe6aa-a983-4766-b85d-6df166b9a03f 537a24e1-fcc2-4128-8b1f-a221eea63095 6c8ea613-f03d-4879-b83d-de98702fa8da 20beb1b8-b144-4b64-95c0-7e47898b04a3 a3658d47-31eb-4c43-bdc5-dde6c6dfeb67 7841d7a1-fb4b-46e0-92a2-f7eb4097c28a ec71bc11-2cac-4dfb-aa56-f4c4741fd6a2 dea27cdd-5ab9-411a-9c6b-7e352089dced 446357ed-1d9d-4720-9ada-b489d05542e0 f1e4bb88-c842-460c-91fa-7153e6876ba9 5dae9618-3a81-411c-9688-1785847f24ee f438f51a-cb50-4bb4-804e-fc5f1b4a8246 e0ba78dc-02b7-452b-851f-1362e2d80b98 cc0ad1a7-9e91-4671-87a4-19752fff2fec bddf1010-ed29-4fdb-90fa-45390b9e49d4 af294f7f-7774-4f27-8354-3928e44cb34f a0039002-27a5-4eb3-bb90-1e01ff23125d 72343a90-7d11-494c-872d-fe94a6a31b40 ab390eeb-c471-4132-8834-d8686c3d3dea c4790eb7-06e0-479f-85bb-8f5a138f233b 05d10d5e-ef82-4728-99bd-8b86b74481a2 1da4992c-6fe5-430d-bb62-c4d26ae5af90 c19750fc-4cd2-466c-8272-f098afeb71c7 5b3a129b-e8da-4c02-9b10-c4d5d1516c2b cbbe38ff-38d9-4acb-b2a9-0dcdcb456d4c 9147c8e6-d2e0-471a-af41-d9dd5a08e862 6594605c-e443-4cb4-8595-297549d235f0 c9bf3ef7-11c2-4880-a1d8-8d4135fbc6fc 3060f3ee-f564-4a68-84ab-7c49350fb1da c43cf327-ce89-4860-8c3e-6e1ef8301a19 698e9faf-e0d4-402a-986f-4fe217c44b8e 2fac6b6e-bd97-48ac-bc85-b279a28145b8 f597ae21-2e95-4a63-a914-87fc91ff5a18 20e38bce-8a3a-45ef-a09a-c814c78ff582 5a07c873-a0ca-4dc5-a317-10bd8248af08 5793896a-3f93-4a8f-ba4d-f0f575eac8c3 c4883ccf-2780-4f3a-9350-37efecc3a50c c1e80c30-29cf-473f-91e5-52e467368766 10698101-285a-46d4-ba41-dca1637e9d46 7b0070d8-ca9e-4eb3-ba54-4f950ecd5a12 1a9f7306-52e8-4f2f-bc1f-82e8d503ece4 b0daa79d-3736-4447-905b-a6455d516a0d f36d8017-b894-4319-a2a7-f182290863c0 e018353e-a37f-44ee-ac1a-ebe400e32bd4 efcd9f14-0016-420b-ac64-99e79233d49f 2257cb1c-ce6a-4d45-b2fd-392a914b697d 9667ffc5-49a4-4f35-9b92-6acdd26ac6a6 0f3f299b-b58b-4e61-9290-315cf4368da0 b6266bbb-1ce9-47c0-b7f3-0cd5730f0580 9350b36e-4d79-4771-b46a-09ed4b0199cf 7a4325cd-5e02-46de-9012-f35d30a72c34 818425d3-9e00-4b93-b3b2-51219b1df109 2c7e7ff2-7a34-444b-b2c7-8c094ecceb39 9828ca0c-aa5f-4609-86bd-9e78a270c83f ffa4ebda-1a97-44ce-a822-ae1eb1a4cc63 35c2c6c5-8c11-4c95-9d6c-953cfbe7f1ac 775c838b-1900-4ead-8b9d-35a712492308 786d8a7c-cea2-4634-92ee-93158ef347c0 308e2c14-4497-4064-96e2-1c8cf0f996d5 66401171-3ac0-4d50-aa3e-6dc6ca68fe61 5838647f-26ac-45b7-a637-c4c631ac8fb5 79730df8-e034-43c1-a29e-997bb6dc9da3 ad85fd90-8f11-4288-a6d1-4d590ef00b37 51af7fdf-ce2b-480e-b850-fdd779164f39 49a35e2a-14dc-494f-b8a8-985d97d28aab d8cab7e5-a867-43b7-8e1c-0821134d0191 5676c30a-1582-4484-989e-4a05448e1d46 488477a6-3687-454b-8e1e-9cfec957f39c 60e28935-92e1-432a-9863-82206044e311 dc64554f-c9d2-4e49-8dfa-d681850de290 67161fce-cbc1-4a5c-bd97-bfac0b68d131 1688e09a-3409-4e5e-bdd6-48880820a679 bee4322e-10b9-433e-b8c6-aab64bfb9bd7 d7c61b39-4672-462f-9fa6-932071e14d20 99ec39d1-1637-4b81-a933-4e81c846b967 059fe3ac-4031-4c0a-8ca5-46eed717cec6 e84a24f0-85f6-48a4-bb68-bf0b3fb6514a 29ecc2f2-27f6-4c7a-8609-4004ab206e63 0ecdcef6-132f-406f-83c7-783f1be02ea1 18039faf-ad02-4f61-86e2-94201b66867b 6793637a-ade6-4784-b335-b54884fe1dfa ec8f4c17-27f6-48dc-bcd3-f0620d184761 60d2d6a9-5996-4b61-a222-9cbc179d46bf 91e34eca-a5fa-4559-81ae-dd1c4409c5e5 f8087477-813a-4014-9f02-924579f81dc0 11f0818a-2668-4b93-a368-025581cb92ea 5772ec84-6ef9-4332-8cfa-64dfe6ba9bae db024d74-4a12-4556-9d69-c60cbb4f82a0 70cbe7b0-8085-45f2-8de9-10220c3c9909 a44b71ef-5be2-4532-88a8-53ff5f5cb69e 706997d7-5065-4ccb-b9e4-4a281fa4c0c3 06016eb7-ee8f-4c6e-8a2d-311ea26a31a8 895cd59f-055f-46e6-be67-c4dffebadf5d 9828e569-e555-440b-855d-80c52513a5b1 7409eddb-65b6-4c2e-b506-3284f9487429 68cdb8c9-694e-46a0-89cb-6712fa4e9dd7 58745b9e-c63d-4fdd-bef4-cd621fe85a13 e7686e9f-3bb3-4124-ab4a-0cc87bbbe5a5 c8851131-5e2e-472a-a867-b793896dd8f7 6b592d40-230a-48bf-993f-a2473cc615a0 d3b24087-1094-43f3-969a-7a687b440a7d d2055cc2-988a-4e79-99df-42bd72e7110e 1d379b16-af4f-44be-a1d6-61a875381fbb 5ed81d8b-b0dd-4e99-bd23-f4d81c620793 29c50e67-1ac2-480d-a48d-2b7be8ec4507 1d7035c3-1fdf-4c9c-b84b-de96ffbef2d9 31784195-cd7c-4f06-bab0-92eb5fe4ac68 eb9101ee-86a3-4bd7-b1d7-b45b7b5aa913 3baa1e51-e093-415a-949b-91630fe61c74 30c08807-101a-4983-be92-f663c54beb31 aba47ecb-d990-4082-b6aa-04c1b6707813 22e146cd-6b33-4c1e-b185-6476bac57287 b6599709-f583-4a52-990d-9c5082975fd4 0adc88c2-1b93-48af-8840-edb3ef80853e 995ac83d-9486-4ca0-9854-777c74392f26 3087b573-076c-44ad-9d0e-81fc055032a7 f7ec7f9e-c068-4201-a29c-41a03e3ba4ab 6cf78931-53f3-40ce-a7a7-f4b9e611aff3 18fcd777-361f-436f-9fae-94a693ed9ab1 536b2008-1a08-4931-9d28-82794eda6f1a 2e25910e-1ab8-4724-a982-addd1c0cd5fb 89065f6c-2091-4a7f-8ede-4eb9abe3268b e0eff3d0-e627-446d-b397-87ee4f6cd7e5 3674c00f-99e8-4ffa-9ea4-fd6805b265d4 4a4d8ab8-35d8-4875-854d-1c5f200ca94e b4c4a104-f236-491f-8e5b-e1a4f8f24d7c eb40a59b-eba9-4b1a-bed3-b246d03c8857 1002fa27-4558-4ec6-bfac-5561edd0874c c6dd9285-3aa4-4f38-8eed-c64c3467c04e 80f8076f-7ce8-4cbe-bbbf-50f4b1bda055 b5e8bd58-12a9-42d0-ac86-36296c7a885e a2d0c3d8-921a-4f0c-bcbb-9dec6743e735 5762f26b-e500-4c2b-bc7c-b883aaf2199b 74bbd1ac-72be-4de1-b334-2d1bf8a4c1a1 ee862468-bb92-46d4-84d0-b4da37a03374 a9c08cea-c1e6-4a8e-a399-49abc483b258 9751f77f-e0e1-4337-9646-726c77031f41 957ed36f-df34-40ce-9d50-8c25575fc733 df0ef32b-a883-4816-a68f-b6e9158a9739 698f6408-5dd8-4fd6-888e-22e79719ed86 ce742e92-1dbd-42c8-8c53-27c0e7846a23 17be0c03-c22b-4a7b-a45e-cad8acd54bf7 e5e9c8f9-669a-440a-9a7c-6bb7d6691815 8a98e336-9403-4a10-8be9-4e73c5677a24 25b3b35d-dac5-42a8-9f83-9983cac7016d 7b5ae4c3-e90a-4a3f-9ec7-90a276c7c574 1925e16c-7004-4f37-aecf-67b8a824220a f065699c-b1be-4990-9362-0ab88b40e17b 19a3de4c-4627-4474-be31-285216e385d0 c48df589-bb13-40e8-98e1-969310711c41 6e4f53c9-0de7-4ef3-baa3-41f357242586 17a05058-8c17-47f5-a907-aeb9cf073560 6674f34e-f9d2-4d6f-b827-d41bed613f4a 7032781e-6060-42af-8b0f-70d33caff514 142b6e91-3960-4190-a1b7-e5b94b33901c ac17b92b-3563-4465-8d7b-5e5f96ce0879 e0d9c8b0-202c-467d-b532-a74e278bc448 d7107bd8-370a-4b8d-9672-69fbfa1c36a1 4293b37e-482a-40a4-a16a-f38e38f9c6ce 6621f0e7-71f7-461e-9bf0-89f5343f90b7 8c6ba9ba-7ebd-4b3b-ad48-4b3035f36dba 8d377a42-68b8-4d93-98f3-18ce364a8104 3ed2f856-b8b7-446e-beab-e5a788e71f7c df795ec0-289c-4043-bf03-dbafadb707a0 a88ba261-72c5-4a0c-965a-9efc5b75cd42 40d474a9-65d5-4fb4-ada9-bb511449f2e6 b99dc63e-896a-40f0-883f-03d27905160d ea565c42-1eca-448b-8bf9-3193f0b66c98 8182d7f5-1ff0-4669-a531-a7226498f6a2 a22a156e-8405-4d47-ba12-df1ba91e19af b1d3e1c1-21b0-445c-98bf-899478a78533 55b0eb96-0f68-4669-8315-abf0e472e5bd 3438b312-343f-45cd-880f-c34799a61cd7 2c3b10e7-8cd6-4c51-a350-ddd2f8fe3b1f ecb8532c-e484-4c33-8fca-c182ae13b232 40050426-98c4-4f49-bea9-57751e43e1d4 c0968ab7-d31e-48c9-a2c8-2b08afe8cabd 2de5a080-ee73-495a-a1a3-67200d4c094a d4fdbace-8adb-47f9-8597-9ccf0775d644 542d560b-e340-4a72-87a8-21221ebd044e 3b3a98b0-d27d-4486-88c6-889106b16520 b142aa01-3433-4731-a035-a323de712e1f 9e6748f9-c541-4e4f-9d64-e7e216742335 44f532e0-c711-41f2-8ef6-077b3ea3e67e 27cede1b-2754-42d1-ac66-582fed68e9e9 ac96ee90-64f6-4d53-93a2-bdaa89e61ae7 da61b99a-edf7-44fc-a2ae-e36475a6fcc1 28327e5e-c6ae-41d2-ad4a-755cca49c9b8 de2b3dbf-417a-479f-8f12-130b3d528a8b 8774930e-532a-438f-8c6f-e9536f631c41 8299d469-17ca-4489-b1ad-456505f74f07 4e48e5d4-aa73-4d31-9ac9-9be371ac8440 c5471116-fd96-442d-a9d9-e9e628f53b31 f2d51f64-2f74-4cdd-97ad-a0c838752af3 a19ee724-903c-4a5d-9022-7d72cf3265d0 1ffe628f-bde1-4e0c-afa3-9ff4153a1f64 0d041ead-75fe-4769-bb4d-9b579177837c 86ee8ebb-db94-40ac-bab6-a96f0d45b001 8ebf6227-f4ff-47cb-bdc7-cee29d9c5909 bf84ee36-d656-4a64-94cf-8ab38e64eb66 8ea31c4d-f606-4026-b0ff-1d1785e72ca0 4e7d5591-a233-4207-861d-103884f8f576 635dcd7c-4b0d-420c-81d6-9ff6465931b1 a9d73029-47db-4d29-9c2d-3afb57189b46 85287c24-6646-4c8c-9842-70ca21947133 23a5ec86-595e-4f00-a7b5-612899c2594e cdeed937-5d2a-4ad5-afc3-fa92d3c16685 db422b81-336f-4ad7-8563-d4e47ae0e27c 182f969f-d8bb-4b51-8c5d-ff5e0c97a3a7 d9982866-e113-4924-a2cb-751becfce016 59a141f6-b351-4ff7-b91f-f15cecba7688 6180accb-01dc-4dc0-a8e4-91331254f002 722ee1d7-0a6c-46c7-ba6f-936ec4e0c34b ed9267bd-2d15-43ce-805f-532a81289544 b638d61f-b409-439b-9ac2-490185005434 7d55e0d6-38b4-4201-a1f7-499eb04a61aa 10d9901d-d54a-4eca-acea-3dc859a77f0c 140811e9-b9c3-423c-be8c-2db15b5c48f7 3d9a3367-93a8-4627-92c4-167fa9116c8f 958dc39d-e849-4034-892b-3d643ac2ef38 70bc3617-c2c0-4777-a92b-bc5c8894f77d 50d8be58-717a-47bf-8f22-e37806d6edb1 bf0449f6-b508-4287-82ce-b83a78d6250d 0270de29-56f8-42a1-a0ef-0a0ffeff3664 be110117-6c28-46f1-bf68-e1b3dfef65a7 48f83939-2b53-4f60-aaa3-b87ed7454563 c202ba44-5073-4355-861d-c0da0cfdb2f9 bd13429a-9d76-45c5-8372-a5a19e89691b 2cb7250c-b365-45bb-bbb4-44f85c0e07e5 e3203291-ee0d-40c7-aa44-aa22f66da0be bc526991-0f50-4b8f-990e-4a3d0f3f397b 80658ee4-6e75-4adc-94a2-c3019254e057 4d85a96e-a994-4635-bcd7-b73bff1c443c 2d060ef6-9da7-47d9-a3a8-d4e852f8ad1b 07af66a0-5823-44b8-87a8-1d27b91a79d2 9049220c-75a2-4550-8b07-72c8834e19f4 328af399-6166-4d6d-882d-9263f8786ffc ea0668a9-df93-4ff1-8f05-39fb36d139d3 7cc9322f-45a7-4623-a9fc-3c988e4c25fc 77652d11-4d7a-4370-a124-d84375c9b789 0d2a4fda-dea9-4b6e-b25b-31a1ea066117 28305984-f95c-4d59-942d-188d86d2ebb8 1b9698ff-7d16-4d8e-99ca-1995b3df4897 8b8d21d0-3b94-437e-b107-fcd7986a8ef8 74c8ff53-fab4-4d8a-a324-53bb66f7c66c dae98701-c4f8-4adc-b66c-cb6c2ae6a5e2 64a377e2-9e50-46fd-91e6-d56196173340 57a17786-f093-4700-8a3e-fdf9c24eec67 96546f0c-d723-469f-b633-768a451d06f5 882503cf-fe20-4632-9797-551ce9320d69 524c897e-e63a-4fc2-8529-5dac85fd2e36 6281115d-837a-4805-89fb-a1719ec58a42 f8d8bd3b-05ac-42f1-94d9-d92660d3aa14 a844c835-cbca-4138-9dd5-0e65732b0895 11bed1c8-2af1-46e4-9853-bb7b33a55103 a175685e-3341-4483-bd2c-5b094ea2d633 8a85b8af-1e63-4cbd-a8df-1314a62439d4 11f46933-9f10-4cdf-9a15-544639df33ed bad60d45-2066-47bc-86a2-0196b4f0baa2 597424f5-6f02-4aae-a35c-29790b5c69b0 74eb1a5f-c24a-4d97-99c5-d0cf63d1980f faebdb5d-2379-421e-87a8-b2aa1402bd86 b54cd140-9505-4917-8357-22a1a0b638f9 13c0dd3c-43ed-47d8-8568-20e90107695c 30bd4cbd-4e68-4221-89eb-b8c91caf70a5 00970692-b01f-4d1d-b4c8-a143c7cb1b57 313a7906-c47e-451a-bb91-0acaa6b67e74 86112ec9-a45b-4a2d-883c-d646f60833fe 1f7ae7cb-b1dd-4acc-8547-32bd2ede6c35 37f76fc4-0354-4d4b-b099-0d84dfa89763 f753236a-eb4e-433e-8677-3c7410e69e89 16fa20cc-4205-4a23-bc58-6c2436c302e4 0637b8ed-94fb-47ac-ad7f-a843a2c245a0 9401988e-11bf-429f-aab7-b65f96f2cbea 4fb06a1f-a83a-445c-b659-70e598340a30 7b781e68-aba0-4bef-9c80-ea95c8cfd0db f1c44086-74e4-499d-afc8-ebabc9efb7dc 75fce963-0ca0-440a-a155-307d165ce6a9 3b9ce049-2d2c-43a3-be85-ef5216bd3654 c48d5f86-3b9b-457e-a0ee-7b278b322048 3e694150-a52d-4de7-aa01-923eea575a97 0c3495eb-89cd-4200-ba6a-1f2a801986db a2963a85-df47-45e3-9fe8-94b2c2b52be8 d7a5e397-487b-482d-80c0-780a816f8283 b714d5c8-500c-4e0e-9d84-7ced4fe8dba2 991284b0-1133-4794-9c0e-49a6957bcf65 e7a979ca-655e-4588-b8e8-c928878dde61 52640a76-232c-44c6-96a0-2e7cc2c2451d 4eb24ef7-b960-4865-866a-c5ce299ebb43 8007aa08-835c-4188-b87e-f94ac178f969 e89c4e01-7ec6-410a-bd45-6e1f05c2ae04 d89757bf-2816-42f5-9522-c620fd664882 944f0099-3788-46ac-8508-c08a9e9d505e 4766dd07-8e5c-4e72-86a3-32ec97b5bcf6 b7c40032-5151-492f-a8c8-e084a4921cf6 10571ce9-35b8-4fba-bcc4-3c9ce33c6ee5 17831984-e90c-495f-83fa-a1b9c754ed75 a50e38be-9a68-49e8-8c96-a03381ddf79e 85121f4a-41e3-4710-9eaa-d284b53ecfde 4cff7c71-19d4-4f8c-bf1d-8d600ca759b6 b33a75c1-e2bc-4e9f-8813-14250dab71e1 5b2ea21f-ac96-4c6c-9c57-b277ad12e7e3 63350f79-9eca-4a29-a209-8d90b247bf3c 3e8557b8-02b7-4c26-8122-1bab1bdc16eb e8e37ac4-9ba7-4245-9c4a-1c388c9d8273 21deb50c-95fd-4312-a1fe-42f6c1cba6e3 3d7fa272-19c7-4ded-832e-6e6d4d5ab7cf 9be99aaf-dcbe-4824-b42b-d1e387b86c7c c0a8a142-7bd7-425c-9bf0-6e8068423eda 6550aec2-f639-4825-b1fb-2625c2c29996 a4fb599a-84ce-4082-823f-94fb6fa7b1f5 5665ae6c-6be0-478e-8604-6f5c37a8878f f4c5f0bf-d65f-4110-b56f-dbf02a3ceacd c06970dd-d3a3-4e8c-be99-7af4ece1dd20 9783b81d-5d9c-443b-9a0c-d31448fafed4 2c400057-837f-4c05-a400-b05464036dbc 35400811-f2ac-44a0-aa25-8d2664c8cb0e bf3b31ff-319d-45fe-b638-bf578bcd603b 2aa08912-6c8c-4e14-a637-96c890a21671 22f6ad63-71f2-4416-8028-ace98ae1fb2d 8dc2f3d1-0d98-4d32-97f4-6b48ee4062be c9eaf43c-06e9-40c0-89fc-4d120f9d77bc 122d16fb-5da6-4857-8bc6-f4bca5246c73 f2c04201-af59-4fd4-8bb6-1ba19a3b85c0 52798bce-b017-4f03-a729-c105bc15264a 107dc437-263a-49d1-9587-c8957459f889 762ea940-146b-4f58-9baa-c6b2f89026b8 a1bf1ceb-5337-4986-9599-17075475b7de 1fbe2601-0078-4863-8bb3-89eb63fe9145 88ea6bb8-fd18-44ce-9c90-9f0aaf0ef069 d8e3db0a-da1e-4854-8bcb-9de14dba53c6 8eb7eed0-ecb6-467b-a317-e1ad6b1e805d a8dff2d1-a4d9-4281-9734-6dc5692812a4 7a5ab324-bea7-4f53-ba86-4cb8cb3f0196 60cb9938-f47e-4828-a33a-fa5a9b33b63b 1d51ee3a-61b3-4367-a103-ca9ebd5fccda f668153c-fc93-4e50-b300-e6fad4c627a4 111babdc-0375-4ba4-83be-2693aa50462e a88eb53b-064e-4a91-b929-6269f1f63794 3d87a965-fbbb-42f1-a4db-e4505d64790a 6e9f46a0-9e64-460c-958f-b45aaf62a1d7 283af27b-b24a-42e5-af23-18f7256923ba f4abb106-b44f-4e17-ad5d-3f54510c8d6d 3e302df2-1581-41e7-b230-5e746f3df003 0411028f-99bc-4386-b7ed-405192ee1680 7f4d9f18-afbd-467f-9d8e-c2e83a62afbd 71e67be5-0d41-4470-9fcb-0a2e66aa04ef ea7ecb6a-d186-4f76-a397-38ffd96efaa7 d510bf53-f8b5-440a-ba9c-7b025a61f0f4 4051c6a2-1210-4a14-9e39-2f57f6b992e1 13ca3591-6684-4584-8346-db22225a75e7 3107c7cf-f0c2-4c8c-b28c-6e9ae8c829e8 56d6c7ae-4167-40b6-8973-fb40145d545a 85207244-2260-4a86-bcaf-9bb69accc7fe fd99dae4-888d-41e1-901c-71e70989906f 6bc02aa9-7e52-462a-bc1d-57d5aefc6431 c906c89a-7433-4370-a9f5-8c068752ec23 33945529-5ca6-40c0-9347-9cf172103d53 ec7d722d-9763-430d-ab2c-9b39f6614eff 060dffe2-4d99-41d0-8da0-2b57c9884cea 39b4e081-1940-4644-b0d4-47bb683e3f90 6e7f7762-46be-483a-8a8b-4afbf110c942 dec3fbf2-10e9-467b-98b0-96ba3c6a0b2d 8d64427e-6279-4614-809f-e48f50864770 e014cc19-f31c-41f3-9d84-a257fa6d04c7 c5ddb545-07a2-46ec-a734-b9655ae37fee 6f66d740-460d-4e3b-bca8-430ca80c58be df243c40-14a0-4770-83fa-c3e5b8ca035b 7fae3a5b-1583-4d97-a077-a54681c63a7a e24f86dd-105b-466a-a132-3beab3acdd85 d7684aff-ea03-47c5-bb04-5e27e3e6eb77 150f4883-1054-4d89-bbb8-489edc424d62 8eac4925-7f5a-4b10-8500-f4e0b26e161b 9c91baad-7433-47f9-a58f-3e783045a2a8 b6406c1b-06a7-4ed4-b735-329f2e418887 a743bb95-fb71-413b-9f0b-0655bf062eb7 3d7f8ca3-59b4-4230-8a20-d12b7e0328a3 752763e5-ea68-4159-af69-44fd9d2ccafd 9403120b-f15c-4ac9-88f0-c371d4cc65cc a4c8b1ae-08a2-4db2-8006-cc2550ac8521 8699789d-2dc0-41bd-a0fc-ae43d0b77541 6650fea0-2c70-408f-a843-a012be7e3ebd 50a7ab60-dfaf-469b-9267-707db63e9ad9 e1f00ec9-662e-4d2a-9ee0-1da5fff20461 09b21473-12d6-47ca-8187-6cddcf28c4b7 305daa15-b78a-47a7-8d33-082ed353320b 412d1ce0-7ee4-4458-ab65-bd478446168b 48432883-bf0b-4928-8857-3efae1716f8d e08c305a-bdae-46d5-aad0-a2cd47564391 c80202dc-cdf7-4739-a6f0-307f08d7a76a f2e0f620-917b-4861-8cc2-900a3d855759 efd9cf98-ca24-40f6-b3a1-6382903c8be4 66d7e9c0-46bf-4940-8c7e-860b9a996bdd 58775e7a-f734-492b-b22a-c8c0726465c1 0a77fe89-d9b7-4f19-8a45-d22f69e699a1 b0c63c1a-fe2b-49a3-98f6-c4abf9ad2722 b4ce79f2-0d8c-414f-bdbf-a7510dbc80e5 f82ac7f7-1fe6-4a3e-8901-188d4faf0132 dc4375e7-f2ff-4df0-8350-482b6e7484ae 70a19c6b-4f82-432a-ba66-27bac3629e43 c1c800e1-9a5d-4c35-9190-5f7972175ec3 4f851b8a-ca1d-414e-8635-6b0756196f90 3c38970f-8559-4674-99f0-76a0215d8d93 e8758573-a8d8-477b-8f65-659e0c7f2448 e0fc169f-d930-4148-9874-894266b6d0a4 5c8ee229-fe7d-4180-85af-c54f45c6523e ace7c802-0fbb-459f-b2c7-83c1253b8227 c529d05d-8d73-4a0d-9752-359762ac1297 be083c34-0ee7-4466-859d-42731abd8e2b 3e4b398f-863c-482a-ac85-88df3e37ebd5 7357ff02-2b3f-4869-a021-c6df43bb2dd6 62549c38-8ee8-4de0-8d48-39e1af872498 0d162208-c6d2-4601-9118-f6be0e17086e 107f6a63-66a0-4104-9b5a-8ac4be4ebb0b ea8ed03c-920f-4207-9e71-12366f102617 bf1cbced-4007-4c9b-a1d1-4003c7d6ed49 be52f19a-b841-4aa8-b871-c5fc5dc94872 cc8eb289-16d7-42c7-a1ca-acc48722cd37 f7e85f63-09ef-4e2a-8d7c-8901e87a475f d699786d-2001-458f-a1e3-3e859e7bc424 b8771f10-e6fe-4ec3-878b-3996398c857f 422c2e66-642c-4a8b-bd59-90300514826e 56733832-9125-40f9-b2b9-2424735cbb5d 8ccb9c17-d7a7-4cd7-9a7b-7e4b22484319 78bf04cc-45b3-49f5-a84e-e24261a72fce 10d31c11-9d81-420d-808f-c3612e745f6c cac7c672-0701-4f7a-b7fc-0dc0757788ac 77d5aaea-7c8b-4760-bc4b-c407c1607aaf f6e406d4-babb-4b77-8ea3-a1feead3067d 9200e2a9-e94d-45fe-9180-b49326676e04 bda9b085-4dde-42d8-aed8-d4ff6b98af69 01d5bfd8-9e14-40d2-bd52-269523da98ea de6d2849-a3f7-471d-98d6-0728338885ff 1b3ac8f1-846c-45ad-95b3-913d548026f1 eed842f3-cc0f-4bd2-9366-ea7618593a66 3f94c030-8946-493f-a66b-f489d4720564 be8dd90a-3b35-4de9-99a1-27b2f95abb68 48e8436c-c1e3-41ef-9c59-340964ed084b a720cf4c-661a-44c6-8e39-8eb5e9d0b4fc 05755ac8-cb32-48e2-a7de-dbbde1cf72ed 2b0388c8-fa1f-4e1e-8d1f-395755324e79 858be2e2-716a-4654-bbc6-d14f7da6a975 a7090263-44df-4ae7-bcb0-38150d98d4ac 5bed5f91-e727-451d-ab67-a3ccd22fadea 3182c3ce-e6c9-4f71-a132-d1057d5549d0 7f8e5974-d0c2-4002-94fe-c43bb1f41dd9 b2388bc1-2724-4fb4-af22-a0776f8de3b6 153df508-81c0-47db-8b30-38c93cef840b f509ba48-6006-49a5-8dba-ea0ef066f82b 9f780434-7e0e-460c-93c9-b1ee4f07fdaf bf5f414a-5bc3-424c-a65d-6189ee3f29a1 949de422-12b5-4bf2-a6f7-e9915ca68eaa fb9cad08-afd6-434e-91d5-58d9edfba586 19d1e031-e7c5-4b87-8dcc-94b67905f600 dbb30f87-273e-4a5e-8cb2-953402002a37 11c1b96f-f06f-48df-8707-3c5f9cf310ff 904d0bd9-b5c7-4ced-ad83-7817547fadf1 cd0b4a03-c7ed-4ece-a2e9-e5d6200ab97a f4b514c1-48b3-47b2-9cf0-3ca24917642b b3120d5d-e314-4b2c-a072-9068c33dea7a 1f0af56a-4e06-4031-991a-903df9a35822 3aa8bad8-cf4c-46c4-a7cc-cadd380a6e71 20055ecb-bacf-42e8-83d1-f6c838e50a9e a23064e8-ea7f-49af-89bd-bb5bcf790d5f e427da8b-89e0-49d6-8dd3-4ce4bc33db64 4688bd60-f8e7-481d-bf93-b7d7015fb25f 1026cd72-b215-4992-8234-70a5e6f77e0e 4b3ee894-55d7-4a37-9c2e-9ce9bbe737bb 56c36db1-be3f-4c0b-b9f3-c3fec66ce233 6ed5e111-0c28-4e70-a9b3-b3437d28e893 390e1364-830b-4065-a8a2-407019ca6354 b1926f5b-1797-4729-aa31-1e8b9d66e3f8 12957d3d-320e-4f5c-b101-06d2e2274c44 b1c01848-f70a-4751-9a98-f1c4a1d28fa0 10b67220-c6d7-493a-970f-197f4671e627 40c4dbc5-c03b-4786-985f-0b95b78ba030 12faf833-8bd9-46e6-ae9e-5c8fd69d43c4 3f936afc-93b2-487d-b453-d84600f284f0 ba726cb6-ea16-4dc0-955e-54f18ead08f2 15dbf948-40aa-4042-9f18-3f5ad5e55117 495e57f6-6c0b-43c3-99fb-ead325865d9a c107acce-61af-410e-a036-aa8410d51c7e 727f1a29-aeaa-440f-a82f-8363bc16746b f990c4b5-ca92-441f-ac34-1bb9e02154e0 dd3034e7-f086-4932-927a-1837cfbeeafa f1e5bdfe-4b64-41a6-a5a9-11784f32af8c fc075c61-6d24-4cee-a5ee-4fb5f212aab0 e640a796-c513-4751-8a96-ccfbe2308baf 22c51071-a859-4820-9a77-136faa4c5174 ad802937-6e30-4472-8c63-9a1ed611c635 db24c964-07b7-49fd-af73-8b447621ec4e 748759f5-879a-48a4-bc35-efd7e096f6c8 808baa62-1bce-4617-aa78-fdea05e34f40 2c6ebf17-13ce-43b1-b939-9df740fcc081 e7150d48-4173-4857-9f7e-ce1bf784ae3a 5ac8e429-9a91-4e10-9625-04b8c0bea32f fd45b34d-46dd-4c4f-b4cf-ceca6423bd21 010d2766-d9d2-4078-8ba1-aa204aac274d b77b928c-df3a-4d2f-8eef-7ad6b7d15c4d 9944bac3-0b49-499a-9eb2-34f17f06f2d2 0c25ebdc-ac6a-4e26-afe3-ea8142e60951 7dbc55ec-ea25-43e0-9f3b-4261ebd379e0 6cc807eb-79b0-4207-9c83-be0321312f43 89e02873-c4b5-4731-b96d-ecccac5f463c 45509fa0-a5bd-45f6-a1ec-393e5bf49d2e 6cb13551-b955-4a87-a3ef-8d732626591c 64b72881-ec14-41b9-a49f-f20efa7c83b3 bc8feacc-3bca-4d3d-ad4c-756f1f21df38 c16c8ff7-d71b-4a41-89f5-2f8a4923acc4 ae07dccd-a67f-4f95-861c-012756b084b2 537c1784-6b32-44d2-acb9-80e57f31ce83 2805eecb-2fb5-4a0d-9e99-2bf3142c75ff c183ce39-1406-42ee-af45-445162f69284 060a5902-ec5b-46b1-9653-b7f1362aa4c0 a11d2499-4547-4801-befe-b72c2e1cff10 6226248d-f3ae-4197-8d9d-c0c1d4138886 47b3510a-625d-4233-963b-3f0705fa0aa5 b195130d-580a-4154-80e5-73d0dc0340c6 5ad161fd-b7b4-4575-9ae5-226133e157ad 27248fef-25b2-4c69-91ff-f2a3a067bb28 242b30d9-bfa3-4f66-b7ae-156dbcdc3d77 60fab31c-0295-4347-b2f6-d0ad0abcea99 3d7aba0f-43fd-48b7-b4bc-75c08d74c083 659914a1-b98d-4418-892a-36f1756d65c3 64e210aa-7a32-46f5-a395-e383a95249a3 7afeb7f0-1b02-4a93-9538-d8abdb3da984 cc9e2a12-270c-4218-8a98-8330b072f7f8 08c449b9-524a-4f69-a10c-de75c55359d7 eb368bc9-601d-47c2-9ac2-46113adc5788 a66652ae-149a-45a6-b17a-49e445e78148 f07232dc-256c-42f8-913b-0a4a0098a9ce 607fe1ba-13e2-4e24-bb62-5817db876cd5 e2d3fe50-38aa-455a-aa79-4701e60f5295 2726f52a-f4b9-4501-bc79-45cedfe1eade b45bc4be-6c34-4ec1-bd9a-c3a4ef6455fa 6f1aafa9-708f-47dc-98bf-21671cace3d5 a97648bc-83c5-4069-8e23-afbe8fade017 81f147e4-1dec-41e6-b1a1-e499f6bae853 0fdac52d-6a99-45f3-8502-8e7cb86c7adf 99122dc9-5e7c-4e6d-b07f-d2603a314490 041b95eb-7112-4843-9f10-9637863310e6 3d3f8a24-eaf1-49e3-bb16-93b774024774 c805083d-4b02-401a-a2d5-1a7332a791e6 2cf89936-7cd6-46bc-8143-c459082f6d80 720dfa65-2fef-4b3f-90ae-fe08d491d867 8e8433cd-5f75-4f43-b697-90186af6d0bf f4a2365e-2892-4e65-8f44-aef18cf69a0b f2627f0b-bca7-459c-8d7d-07838af0fe7e 940020e3-580b-4034-b5b8-d8021ea64367 45e39e12-00cd-45dc-beda-b1d41651020e 9818faea-ba71-46db-acce-f64e4b72a316 bfd31963-5265-42e0-b331-f40e18d966d1 8bac7c68-0b27-492d-b313-8c0d7c8ff102 c9340c75-d2c3-459e-b2fc-4e142978e660 2ac999c4-4946-47dd-b67e-0b4131ddafa1 7f216480-439c-4abc-a7c0-486c2f280899 005e3e41-1bcb-4ce9-ab41-f1b8abff6720 bd2fa054-e2f3-4167-b091-7a9a4a7cc22b e1a50887-5266-47c2-9d26-723ee4178294 4d0c562b-abb5-4d77-ad77-594a73c1a17c 891845d5-2a0c-4779-9849-373ff8548208 b557982b-3596-4183-9649-9edfd28d6237 9be77ee0-e461-4101-9981-0275cc73e5a2 462dc99c-d5dc-45ea-8c3e-d5516ec0d037 a2a2376a-1db3-4944-9630-7282ad1a716a aa626ef5-f49b-4047-84e2-85e103f639ad 65cb457f-c7b5-4e86-97c1-241d7b9cc248 96aad089-341e-4c3d-9e2b-817429ef6e93 6c895e00-159b-4b3e-8121-0ca87593485f 12e32d1f-5391-4c86-9d1f-c356cbba8e39 0584ac1c-4857-442f-9833-431aa2d6e720 3d06c9ff-e268-45af-ab8c-31b0211edc13 c3dd7e53-eb2b-4e43-874d-ec756d948011 e6a1d99c-5ab8-4965-9f9c-0e64e8d31fc5 7aa31006-06fa-4d2c-8b0e-0fd71ff75a1f 891c439e-5073-43ba-922e-47398148ca7c 9ea44a20-f11b-45fb-bd4e-bc623e2e8ebd 8f4541f2-ee55-41e6-a879-90d3ea6bb9ca 98c4c89f-1939-4a9a-8b45-4ce436097d36 0391e8c7-a1aa-4914-847b-8bd0b2cfca5b 25ca8a43-6e21-45a9-93df-dfa46b7fbce7 8fcfb1b0-6042-43d8-adfc-20042d3bacd3 298e06e7-5939-4741-9242-3c6c2977bf35 617e921d-46c3-4515-87eb-a7989e61211a 40b6d8c5-f6de-48d9-9733-215dc2141bf4 6446e071-bf7b-4e0a-9f71-ce180454810f 33bba37b-cf1a-4865-aea0-bcb1613a2c7b c619e17f-28d5-4126-9dfa-06e3bee1b8ec d92653a7-eceb-4549-808c-0294012a2544 c4acafc6-02d3-4e1f-957b-35f1516757db 2df821a5-6f54-40d3-b7b1-97fd43aad5ec 25528cf6-d2df-432c-b9d4-d52a6d9dd635 9aea4f19-4208-4abd-9d71-65898cd03324 a476a861-fa63-4b0a-b377-2cf3996c72fd 67623184-ec61-4bfb-8d2a-e2d1c7a4ded4 24237363-a1de-444f-bc30-e3f40b31760f e329d6ff-debf-4439-a891-004144de2ec4 e4304b8b-7ae9-4dec-b43c-5faee7a71d75 ff56bdb3-6082-484a-aaa6-f75d055c0b8c 0f514331-82e8-435f-8a0d-5eb09bff29a0 b03ecf33-6486-41ab-8ad7-3516508ab85e a8fe8f39-cd47-4acc-ac18-255dac052e98 704b36ca-524f-47ae-89c9-d864ea4f3403 d2e796fd-9cba-4a0f-a395-d3a779e8cd9f c2fee72a-c8d0-451b-9875-382cab4c0c39 1e7ec6af-7c68-4f83-a3f3-4d854b61a067 c5e9ce2d-8b96-4920-9f7a-061ecb0420ec a6e4ac7f-01d0-49ed-ab22-597483696c68 2fc6fb7d-7979-42fc-99f8-c91b4839bf2f 11f84924-2a68-48ae-859e-6cce0dde6314 744c7bd6-8a54-403b-be94-1edec30b4548 2240dce6-4311-477c-aa07-ae97cc8b42ba 223fe93e-0c5b-4c1c-b9ad-f995c5ab1833 b305f293-0cc2-4bd8-8bac-7bed3d412cb1 38d00339-20ef-416d-b348-351d830b1e9b 9ecfd09a-837e-4d07-86bb-bba02d031714 40bf70f9-9fc8-4d18-93ea-18e2ce045210 081cff40-2a1a-4eec-be02-f2dd0c12889b f9f27982-1c95-4452-9259-f72751b30103 003eecce-ab94-4a38-a214-5061a03acbc0 5cc57f4f-b486-43da-9af4-7aa073ad45c6 640538c3-a659-4fbe-8d23-f1cb300723b8 c728eabf-a7bb-443a-841a-b5c638f4b5de 296294e0-cdb2-4a29-9ce8-08ecd6a85b20 29b4b510-ac1f-4257-af1b-c1662b881d3e 6b4ac209-0746-4df6-b298-d8004db87254 316e11c0-a5cb-4182-9462-d1c447227f58 7f148705-637a-465b-8b98-b163f65b4ff4 a89d7d56-87f6-442a-b826-b66984d991ad 288bfccb-7e28-4053-a519-e16fbfcdc508 4d2b0db7-e51a-4ed2-b242-d091a13b1b23 bf07b0a4-6f43-4aed-9cf5-d72e34b18d59 25832c8b-0a46-410a-b54f-63b24311fbcf 6c203876-6a76-4001-9b44-c631162c9a2f b0aeab9c-2988-48f2-a456-d283f28af33c 3abe4e2a-6001-4467-b38f-55ce2ccde6cf ee9f39de-52ca-45c7-af7a-35b8bf46e54b b6f89698-0791-4625-8821-856d818397aa 2a085770-2255-4258-80bd-4d6a5282ea52 0ca61f24-237b-47e1-93e1-c459ae7416d0 56662867-8ddc-4620-aae5-287e6b8e4e1c 365ae2c0-5f7a-4474-8ef2-13b826d4eb8a e885d2c5-2292-4995-afa3-3beb2ebee4a9 acb44815-e49b-4e2c-b60c-79d759cb6f3d 1efb18b1-ed3e-4fa4-b3b0-19e9d55eb1ca 0788f0bc-2a43-4965-9e6a-21c02c1e8ce5 18a8996f-30ff-4e7e-901d-5f88005aac42 504da4ff-bd11-421b-850f-5702863ff277 4372617b-e74c-486d-8705-c531959a0e1e d0d0fd87-b90d-4e13-b8c3-772460d93cb1 7936d0a3-638d-4656-8110-d6d8540f573f 9bb2dc64-dadb-4160-a78c-67e3b7d1bc7a 814a7ff8-ae29-47dc-9237-3662ca1ffe46 2049862e-0167-43c4-8f9f-b24c9e6a5b43 cfea7014-9c6d-4d34-9250-666e3ed0a2ba d8c5569f-01f1-406b-95b7-ab7191b96e14 3bfa1eca-4de1-49bc-b86b-72b0189d48db 78cdf5c9-4216-4c45-8bee-ebdfed3b9e8d 454423b5-e326-4230-ae40-0b2453427d18 980bd734-d0de-4585-9eb7-36e5c3b24b31 d70813d2-789e-4381-a96c-310a45c61962 e8dd8fbc-2cb0-4ed9-ace8-bd44149c4163 463ace5b-8640-46cd-be6a-7620a5f2c07d c606e8e8-4dcf-410c-88d9-53a7e0957369 209a10ee-8ad5-4859-8254-a5cddf9ecdfa cb1922f7-08bf-43d6-b65e-9f1a471f2101 51ecc504-7faa-4136-9673-df2da3226d96 43861b0a-07fa-4cb6-8f31-4c3a43f1292b f02355c3-28be-40e1-bd2d-23b08f8b6d8a fb583753-dd68-4536-9ad7-9979e4711737 a9ca4c58-8c50-4c65-a8ce-cdd11c777347 1f9604ad-29b7-4659-b743-70fcea3755f8 f621b84b-3560-4765-8670-c850bfcc6acd b786961a-be46-41dc-93e0-3e8d4e9dc3a1 b70e2cc1-e7e2-4fb8-b86b-770dbd424fd8 4caebeff-d961-47b0-a75c-00afdb97aaec 74d48336-bc8e-4258-bf96-dbae0f212316 2c7f7aaa-5330-4caa-86b9-4e181ff69e13 ef8fafce-4fe5-4089-8a76-a4fe61d978e8 14720bf5-f8d0-47e4-8941-f920d3a0f84e 598f6c02-2efd-4269-ac4d-9fc9679d27d3 69ae8d9c-26ec-46d9-9eb3-41c01bba376e 3c5930dd-f6a0-40dc-b32d-ae74736f7563 c6ba3f90-27b6-4687-9ecb-1e40b9060a04 7872ed87-1b4e-4e15-a6fa-33f0dbb85cbc fa4c91ff-79d9-4f09-98d5-fc2c4f3da0ea ec6998e0-3fc9-4cf1-9b1e-20633d33f694 0b61a42f-8da6-44ed-a207-662d338d8f11 7b0ce1cc-463e-4b52-bec6-5db72f8635ea 1bcef04a-53d4-4d76-bf95-2d10ba225889 c95460b4-37f5-4193-9300-b6b091b8a2f8 9a11a124-815b-46b7-9f3c-54922d625609 23e556f1-545c-41e1-bbe3-1a89cbd41f9f 10d6dad7-92b5-403d-874e-36ff906a7a48 5fde150e-8f9d-41ca-8496-7e8063d0c2e4 fdef2c8e-921d-4bc4-988c-31d33f4afd3d bce98cf5-9784-45c2-9083-63bd3f76c961 f8a31eec-d9f4-4c67-a86f-e5ffad85a3e4 f20eca63-f911-42ef-a5a2-1615848c6316 cca5941d-ab5a-4781-b5b1-b1123c9682dd d6204ff1-1948-45eb-b0b9-c4c9ef347a26 89110212-11b0-42d8-a49e-03e06ff50dbe f9e20566-9b79-4130-8969-c6168ab3f299 7a6b2211-361a-4204-acfe-a16a0e6e1bc2 c031a0c9-aa25-4276-9d39-8e47fe5cd336 c940189b-d47b-4891-bb6d-3a6053336084 8254f395-4665-4330-84ac-71f97eb7a75b 2a98e3be-9b57-4149-b3c4-c88d1d007cd6 98ede620-b234-4000-aae7-39dec5683a12 73343683-0a60-44b0-8050-69f24beb54bb afebb631-e08f-4651-a488-8d8cfc20ef4f 2743007f-40a8-446f-b61f-64f0c3c90408 16043741-2604-4cdb-8b94-dc78cb9d9abb 6efdb8dc-4563-4000-add6-ef98f5fcc10a a3c24e3b-71c1-4dd4-a89d-93135b6554d9 e879119a-a949-4145-99e2-cc526da31fd8 bec6afe8-7e1a-410f-a8b1-6565a15671d1 5bd4e24f-d291-46b7-975f-41bd146fddca 7ec942d0-d3a4-4cfc-90da-50359daacb10 7decba4c-dea6-466c-be89-023e93763772 0b9aae59-acf8-4806-a5ce-511a6d53b2fd 7470bc03-7f24-4f71-92c2-65633df8d88c d6608fa0-dd4b-464d-8af7-658bb2aade05 0f77c57d-ea13-4307-909a-1163bb09ec9a 804bb404-5ffc-4c1c-b7ac-63fd56e35998 5fdd90a4-d3b5-4005-b086-acbedbaf3fa2 310284f6-88d1-4a88-98b6-c8e8f4379f63 89c9973b-1765-41a2-9140-1ee047f5980f 78996145-93ab-4595-a312-95d29e4ea98c 17342eb2-851d-48e9-9393-d7fb69d01c54 7ff45c0a-95a3-488c-b7c3-f68f447e61ab 3f8c208c-52e3-47fa-b0aa-3072e320a4de 86847383-3f7b-40ea-b4cf-a73dc83649fe 28779d2c-4ab3-4b96-b7d8-547ed7decc15 10b54ae6-c7a4-483f-aede-3d3292200113 f8131376-5900-47ee-b1ce-b61c71250e38 97df0f40-dba9-4020-afbf-61103acbe68e d4a165e5-bb17-416b-bcd1-2355a8c59025 312d9b88-f7be-488b-a66d-46c5d207d5fd 9b0f18db-8a7a-4a3f-b81f-dfc959da1148 35c7b8df-8675-4d26-9d27-c78f56fe95f7 6cb39b8f-b45b-4a7f-9d3f-36ef243ea740 7d71fa7e-c6fd-4646-a95e-7a32822daf57 665775fa-a6d8-441c-8858-54e01683158b 60ce197c-0b3f-4291-aee9-48cb0d6ba52a bc784f13-01cf-470d-a67d-b246e20167d4 3184a96f-eaab-4de9-8b92-dda11ebd230d e16da9c7-e633-4458-a42b-d7686adf08ad d18db4f5-e0ab-4c62-9a74-ad5c23ea2092 3054ac5a-89ef-43a3-917f-3c7831e9e915 d18a6aed-6901-4989-be0e-e7c7f894c782 c85d3b73-8e6c-44b9-a394-aef1ecc542b0 d584390c-e519-4bf8-b526-88d1d3a17e5f 5266b697-ca83-4291-8517-04b0b5abc897 2d242634-55f6-4841-8cf1-7ec0e8db1244 3de8a3d9-4c82-4ec8-8003-071217d2a5f3 7f7c31f6-7a58-4964-bd41-0c8e8e9950e0 ec443e0d-e2f9-4281-89c8-0271eaee9034 66cad50d-a3e1-4ad7-9bf0-f74b44cfd559 2cd54bdc-2460-4fd8-ba39-50547c681127 9ee970a1-e668-4314-b949-747c2ef8b3eb 9347f355-8c1f-4c6c-8b8e-9a52131ebeba 274826a5-e6f7-4570-a90d-cdc092aa587b 6ecc0953-87a3-4fe2-bf0c-b491d059ed14 3ef17641-a2c1-4026-b3b3-912b04416d55 e6c040c4-364b-440e-ac9e-fe05f5a873f9 ab1da3f1-b5f9-4ea2-8508-f7330f08747a 4e73a536-2096-4171-9404-1a29761abf5b 1cb98ec6-1583-453a-aebd-1a2bdeb74d09 06868501-d2f2-4874-b380-07b9579bcefa 42a73273-17b1-477e-a0b0-a1a243102e95 2ebd9f00-b2c6-42ad-86cb-18c39fd38731 e80bb6aa-aafe-4645-93fb-914a5a17d80e 50da5bbd-1b81-4200-9184-9c01a71eea3b 032d3082-f665-4a84-b025-90dc0a7c4442 0401e410-038c-4134-991b-1e516f9a9842 a19dcd66-3fa1-4536-ae69-c3dfaf795029 a58ec9f4-c5c9-4cf3-aa85-ec4aa0d16ca8 50dabd7b-fa76-4b68-92f7-f5e65222d251 253ca9ef-f8f9-45d8-83b8-800b78881ecb 16344f3b-82cf-48d1-be1c-c27578963a11 af796500-4251-47cf-bbb0-926bcf489e86 2b495ce5-ae90-4b92-bacf-39d363009601 9a4a42f5-aeb5-4249-8699-e447b411edaf aeaeff18-69e6-4deb-a0c6-48355cc0e4d1 a607caa8-2386-4322-9499-918ceda8e85a 28c82a4a-5196-41c6-908f-ef0bec39469a e84e5b2e-68c6-422f-836f-8bc1ce1ad3ea 98f6111e-f63a-478f-acb5-1d571ffc269f 88e1cda1-fa0b-41af-a8e3-cd50f7a0aabb eb836c13-0715-46a7-b3f0-7a0a00315f0b 37939514-a6ab-4f32-87c3-a9d5b19cb3f6 6ce5caca-f283-4e68-9b6e-2f199e68b797 784cb132-c6f3-40be-8f29-fdee269e5da3 18f40497-47a5-4375-902c-45b196b44271 9535791e-15e9-46ec-a760-7b3febcc6aa2 70a5beae-3f32-420c-bed9-8b5628665383 3305cce0-ad35-41a6-b4dc-50083e63ff0e df8d3ad4-993e-49fa-85f6-6d146dfe0507 d69cd540-5fe3-4217-83f2-613b5c53751e 15346d5b-84b8-49f3-baaf-21dc969de7a1 c4ff34ec-b2b2-4459-b49e-2ee1b4119b82 924d2088-b651-4727-a8ea-8e1215b1c7ef 1a0d5f3a-5b1e-4f77-a522-80115faa6214 fb2d8e3e-c5ce-44ef-a0ba-55568e7046f8 1a7304fd-06d8-411b-8905-265f3037aeda eb76452b-c066-4abf-adb5-5fa8460c530f 11212451-e605-477d-af00-4c0d42177b30 cadb1438-ebd6-4b93-9822-75b4b00d1a78 4f12207c-d07f-43e5-ba60-b5377c7998c9 54a4c76f-72a8-4186-8317-2e8c6883cd8e 9328fe75-4c1b-4d18-b03e-912284cd1a59 dc990791-1b99-4d7b-af71-9ecb82adb7d9 2dffa045-24b2-47ae-88d3-fc5a791a6743 9385b603-c229-48f3-a300-3669c1121a11 dc91b505-322c-4019-8b8f-c624ba72fa3c a918e00b-2529-4ca9-99c6-1dcc7157a70d b31fac9e-6f71-4f3d-9a13-ad52275a9eb4 d6a67129-1668-4591-aebe-78991e2d6640 9a2c6f28-6c87-4fb1-8bbc-7d31f53a935a 4a9bab52-019e-43bd-8a32-78de2fbb5133 cebff757-f61e-445b-a19c-a8b0d3ba2e40 1cc60228-d19d-4137-ac4d-73f81f4fca7b db875694-a6f6-42d9-950c-ccf3274f230a 2ef7d3b3-2a42-4e8b-ba0b-24ce482fc006 27e84841-cc73-439e-a7c8-e6b1beec5cca 803fd62b-6c6c-4050-9f89-58d952f26e2c 9b667165-8193-4c23-a08b-0da0d7f1dae2 e3b8db9a-d515-482e-9b0c-941e657a4943 8592c306-900b-4004-ac8b-1787e12ac723 7e90362c-4742-4e39-bf17-c4406dd2edd2 57fc3333-96f7-48bd-8530-f76021cd86cb 1802c46e-ccfd-44a7-a6c0-0e21d82e5d51 75fd18f9-88a5-4cf5-8f44-7ab4a377766a 6e03c0bd-8c14-4957-b032-ea8b1aba4046 9b5275ca-bd5a-44dc-b49e-d31d1de5a6db 22157411-a0fd-46a5-9d54-48950d886e4b 49d7447d-0444-499b-b419-57814f74f621 3079d698-701f-48f4-8372-963e90c67d26 f796e06b-9b70-4fff-9a96-8bc0e2038e86 b5667bbd-6513-4304-8978-6f407c71273d b71d353a-1fb4-40a5-9176-06cc7d3533ed 39caa167-a9cc-471a-9d65-b36ef888475f 62c2fe7e-1df7-46ff-91f4-5facacdbe32a 1640b1a4-4d05-4c7a-a653-df3c0e0c4dc5 8c655bbe-7a08-47b6-a7fd-3764d4055a73 271d4a69-1ea5-470d-8cd6-a246be6d7b82 4ee89e65-15c4-4253-a989-fa704caed9d9 0f9377c0-22c6-488a-b64c-6e15612ea6c6 428a7681-1920-4e77-a306-98a2b79ab392 20a5d033-d2b6-434d-b217-58648b7c6539 1108c23d-b0b0-4e53-a5f4-2bde2260faf3 19778682-9fa8-4dfe-ae45-6db7b9e99c76 dfb4592b-238d-48d8-8f12-847ab3a24735 608f9704-90cb-4b39-98fc-9c344bdd3b5d 4529115c-d36a-466c-9e99-2ab8d86e1f01 ac265131-518d-4b60-a21e-b41dd107ee53 4cdc66fe-8770-451b-b6c4-e6f448d995b6 1552da82-b379-4f3e-9ae2-974133263d36 5c4fc4e8-73e1-4a21-8bbf-029782acef89 ff472293-9d22-40a2-b46f-ed3ebfe2e907 ff4c43a9-711a-4b90-ad57-631d19aed8a5 f1577207-1e66-4561-9a8c-0a49acc7e7ec 3d25f8fb-23b6-4076-a180-31c8e9d81aab 7cf038b6-8a23-4e50-8902-26073bccba6a 9a47a270-c893-42c5-b182-a41b4091e7e8 fbea616a-7c1c-46e9-9d9f-37b65eb26816 38f78c2a-e9df-473e-b988-3c0bd9c20eb9 909f8090-df4b-44c2-ac33-5cd111c9faba 80418b48-3b72-4125-ba2a-d65bc2f32dcf 4f593574-dd17-46c3-8649-da129f9ececd 95d0ca8f-20f5-42ef-a2b4-b34152f21385 6f473d7c-86d4-4ba0-810f-c6676f5619f9 ee18ae7c-6223-4cc5-9391-439d2480485e 20458d8e-f4ec-4f01-a717-9e03f0cc4f16 7cf54ce9-43c9-4ba8-a66c-961cc5a80f2f a0b7a383-369d-47ce-9852-2492f1e78c31 7b7db8d4-0b12-49b4-8978-79703b6230a3 30e6f7d9-0871-4951-9cb2-34079e5bc18c 390538a3-4b4e-4bbe-a1bb-ad94e549cc80 509a5dcc-eaf0-4526-8fa0-1ef0a540f57d 2ea0925f-4d8c-4f2d-b6e5-6091ca9beb17 560538ab-d863-4056-92cf-467126aee061 39bc2179-b2b1-40b4-a671-c75e2711e859 f7d5aa0f-be5e-4a33-b892-520e97dfe51b fada0bb3-0c85-4bc9-8798-53315f4386ec e57215a1-d085-4a74-b9dd-39adf70086bc f899daf0-dc45-4279-b708-31a580527672 80bc9a58-f284-46c4-b25a-8c885eb5fc01 65fba6c2-90fd-46ba-a625-a99061cb6e5e a42ef57b-c3bc-4b41-a2f8-26dc4c39c4fc 5bf4d666-0aa1-4f3d-a407-a7d1ea3ab779 25f8bf50-d30a-4e92-bbec-0f1624a82d30 634fa30e-6036-42ea-bc2d-6f7ef4d92ee4 89a52ce7-c11b-46bf-b96c-8709a78bcdfb eadf8be5-66fc-4fe0-9116-e8ef98b93e0e 770055be-daa8-4f80-8708-e3a69293e7ab fbdb1865-1ad5-42d8-a7b2-fca48bade2aa 2d118793-c2a4-4d9c-90a6-6ddc874d6531 24c5d161-3126-444b-8ab5-afd27c0279d1 ba654d80-6289-4a46-9b45-1a72ff82c1a4 038427a1-2459-4f97-9d4b-81dbb6176ebd 24978f36-9406-4d36-beeb-8e0f14c76d1d c5e1bbfa-c15b-46dc-a92b-b6f0f8dd630f e253d5dc-2205-4569-8a9e-7f1edf01f8b1 49835854-de4b-4b48-b51d-03b8b3104756 9c30bee7-417d-4eff-a578-2a1791be946c d77d6c08-5118-4af8-9741-94ed2a8121c5 ff5bd7b3-e929-45cf-8fdf-e482234c14a9 e95c056c-5be4-475d-9ddf-4b0b0b686fe0 e04bb97c-87f6-4230-8adf-8ee7c2cbc489 1b297d68-0a63-43cc-ac56-3a18a2ef89f1 29921bee-349d-4212-a829-b6cf00b76d59 f7abf564-3d8e-4dc9-9801-a96196b35e02 7a70c36a-112b-4854-9a7d-8b1c295f6572 ea492f3c-f48e-4153-95d1-35f108d4fb85 e5fa4f68-128d-44f5-bb6a-99b160e71e51 d0c60086-708f-4a8d-a3e4-ba1c3b796171 c4108c3b-3f3c-42c2-91ca-2d69ee17cb27 160a1a7d-3b10-4661-8f81-ba91e252625d 60beb5ac-cd51-4bc7-bed9-e183e04688a7 9bfdb502-fe7c-49e4-875f-c66d65c18702 f835414f-298f-49b5-81e4-568b32f7a948 9730fca9-399d-49b4-8122-3eaccc5d1e6f eefee307-1fd8-42bc-a535-121f8589d021 4f4a191a-9951-4fed-b69b-7b2d7a2f3629 866299fd-1309-4204-a9ee-ee479d2083d0 2b0fc030-6935-49d5-82eb-01ecec698aab 9bfdbb89-f25e-4a18-9b2d-73227e3f72b3 527f6ea3-b787-4e4f-a135-71e73c60efd8 31f5fdb0-b3a9-4177-b419-a71d15c405c1 3cf0cd5e-a9a7-4f82-9ccf-4141d87ef03f d37423dd-f2ba-4cd1-a36a-aadf63f9a305 1d43c2a6-70c0-4ee0-8bef-7d024fb2205f 986e3a7c-3340-4102-987e-764d8a402f31 3e053b6c-ddb2-4e6a-8a1e-6e1fb92fd40b 85823060-ce2e-4557-8b10-920c5bf1c3e8 d80b6796-adb3-4cfb-a14d-3cb01e429c65 8a888d16-86cd-40d2-8256-25dc847cb5f7 d8bc8646-279e-4ff1-bf95-a02550af0fef 802ce47b-1754-40d3-9944-c347394088cd b81574a6-550f-42f3-a780-91537a6e82dc dc8d8e8e-12c4-4b4f-952e-0d061cd572de 144824ba-1660-4285-b026-123cb71d724f 039c286f-c37a-461c-95ab-ba0642c52753 2cca53af-6d46-436c-a6ae-199386f30153 f6ede99d-de4b-4b28-a3da-64300c50c231 6ee2633f-d24b-44d0-a856-445820b4aac2 88bc33e5-d290-4244-b896-a7b6b80bd30f 9214952b-5801-4682-9833-0df7e8eea956 96cc6314-9d8e-4789-bba7-0d4df6335e38 7cec5f34-d73e-42db-bbe8-277faabb822c 68e990a3-a2f6-4dce-96f2-c01c901ed0a1 bd533da0-7367-4d9a-8d1f-a03c3270f704 f75db18b-d4c8-4782-bf38-dc8bc14b52e0 5cb97525-c0e1-4c2a-8668-1cf6e82c4b1c b12f05b5-22a8-462d-8bb1-253cfc4e6a31 ff7a14e2-a780-4e8f-bf1b-46c23b56e247 ce2b7df2-9bf6-4a9a-ba5d-dfc01e5b6af2 b99589b4-388d-4473-8754-b4d858f687c3 3b54c494-4c2a-485f-ae21-8b11190bc21f 7658d05f-a088-43ce-8a49-c5b660369c9b 546a01d7-ac7f-42a9-a1b1-bf10608733b3 83860400-3b12-49e8-a980-9ca3b87043cc f6437a20-5b76-4f95-8c9a-6109b52e6f38 a5d556eb-df97-4f53-8a54-68c28389b8be 9fa89e6c-f5a0-41d8-8ef8-4e342091605c 356b19e3-c892-4002-9e7f-54bb9e097b51 fa75469c-38b7-4df0-bad1-aac098c0ba92 05fd1fa8-e8a4-404c-abac-7750b18ca7db 2a187139-e314-475b-932f-b119d6a5162f 60cdb135-0003-46d0-9564-cb1e92703b1d f7ba1fe9-f8f1-46fc-b68c-1713c7d36c27 ec432a98-ffd3-44b5-9c89-ee5076afdea8 4406c41b-d7db-4096-8c93-43d394dda3c5 44ebd9e9-a656-48ec-b3c5-3a44e17fa634 c93ba585-502b-4bda-b2ed-260bd64ee790 8328917d-904e-4531-8a22-65fb3c2d7bfa 24e3ad54-4f7e-492b-8372-bfe79bbc2ee8 04452c3b-4e2b-4b7e-aef8-d500fe13089f 6ed9fc70-5dd9-4708-aa56-83faa6328cf4 c698e18c-5bc3-40d6-9bca-d06f60239738 f3d8fe7b-c2b9-445e-afb9-d7e3ac2c7703 6c93132e-9c9b-40aa-9879-673822745711 17ff768d-f7e6-4f40-9db7-573afe8ee15c ee2f0aad-0e9b-44cc-90c5-cb74081382c5 8a60993e-ee10-4be9-919d-a2f7c10bc481 83834204-a58b-4394-b927-73a7d82741ea f864225c-ba7e-4ff7-be5d-544374635fb4 c46c7cd1-3659-4d17-bbc6-fd29d835493e 256fd89b-9041-4e0e-a12f-558b0c1b8820 b0510e5a-0fe7-4a70-bf5a-f6cbea14c85e 02f9b809-1d5f-45f8-8510-082225e80860 6d99ecb8-b19f-498e-8b79-2a9c2690faaf db0710da-6191-4ad1-ba03-44b8353824a3 7d2e7429-26d8-4ce1-979d-77280296e1b0 856afbd5-bee6-465a-8a48-9b0b50f76995 991acfa1-4178-4580-8ee6-0894a871bbd9 412936a6-12e3-42fa-9371-53ac1241be52 93555bad-2a7d-44ec-a15a-f92c4d4246e6 7e0f6878-08d7-4e74-8601-9ac3c16c01b6 ab753cc5-be58-4b4d-973d-23c4fd5f7c8a f8826204-80c1-4fcd-8e71-ca061dc6feac 9b0e8207-e7f3-4844-bf13-e61f3ca3b006 041e3451-4f55-48f2-aa18-3f0b0e4bc786 0537406a-9b1e-4a8f-add1-f47cb45331ab f0e8b032-67c6-49ed-ab23-759a32d4e14a 1f064851-9110-440a-8d86-e88859255a8f f38b901c-1b92-4af9-b241-f825502beec9 9a2d2d9d-47ba-488d-a8d9-6ea8f7d5ede4 7d1547d5-afe9-4674-ad00-460876b3d0e5 ed68cd1f-4b0c-4183-936c-6a72579c8584 d4369943-d17d-4319-9e52-654481ecd353 d004f87f-0727-45e1-9ff6-b96b0c1fa107 1a883dc5-8550-4b33-9e52-e905d1f3ed23 befb5d9c-6fe5-484c-b79c-999d4ccfe44f dac86b7a-6eb6-4f63-b0f5-e10f3ccd4341 4bf81e81-d17a-447c-81e7-8dc41caf6698 b2b5ae26-83c7-432e-aac4-3d367d51c142 ea244740-8b8e-45d8-b1c3-30700d24fbb8 cbc48dd9-0c4e-4639-b1f9-32b2a4707723 dbc41b1f-4cf5-4594-bc6e-a0164123e810 c81a5da5-d5c5-4c86-8206-5d2fcd695028 02e14eb7-96a9-4d58-a7c5-f6b3a3793263 5144b55d-7c32-4688-9a8b-3ceb99815de7 afc08a74-0b21-4fc6-9bbb-b68224dc5e11 a91c0384-f62a-43fc-9fda-271bf136ef9e ef510e91-069f-41e4-aae0-8dd0cf095ff5 7fa4b338-edd7-48f9-9a1d-f866cb8c7bd9 17947969-7016-4ce1-bee8-cccff50da296 687ee06d-2529-423a-881e-e51261580d75 f565026a-10e1-447c-a8a0-69235ab2ffd8 de4aa965-42cc-41af-a76d-d8e17cb74759 31be6b68-f6c8-4347-8d0a-03345893afcb a20e8610-37f5-4e37-954a-bd20ef3cdd8f 97fd3934-1576-41e9-ba52-e4bdc963d872 232c69c0-1fe9-48a6-b75f-320f6d2c7ad4 377b4437-8ddb-41ec-a23d-7b8f083e5bd9 a276f5fd-0e73-4d91-b21b-284806ffb81f 67c21b28-b750-46c8-a630-ddad234bb80f 7a52b1a8-fb0e-4afd-bd51-7104d6cd0556 c3a80748-8649-4d7b-844f-f0888d2b4eeb 7f90655f-300c-41de-9ad9-2b08b1e472e5 c3aafbad-b228-41d3-a381-4d2b2995c715 81f84781-56cd-4ac8-abfa-353e8e953bd9 050eb1ee-b957-4b12-abb3-b9dc7fc7b122 252e8114-c9f0-4047-afec-a6c680f823b3 d89454ad-eaeb-47ba-b225-bd90040d94d5 133f8565-ae52-4499-b316-331cb2c3f2cd b43665df-d4c2-4ad7-a0da-a88c2608dcf4 88c39d58-df8e-49a1-802f-b41d9a24f046 8288c9e5-0600-46f0-89b0-db4507c34686 a03c2c8b-0051-42fc-a5d5-9619e7c0bb39 909b5684-7e5b-48d3-b774-c069a6a73163 21b46010-fa3e-4fad-960f-c29ab291dfb7 de9122ed-e54c-4f15-99e1-369c9a5d7d85 e37797cb-5684-43e1-b2e4-ea563c74de60 c8fa1637-1b3b-4175-bd5d-8c25128f6916 39fe7936-8369-4e6a-ab80-f7bb4d423375 75d7bef4-5815-445b-863d-f56637f7f91c 89972ced-2c67-4565-96fb-65ae56627605 56a4cb03-6978-4059-939e-97c35f8bdb0c 608fc2fd-919d-44c7-8408-d36f36ea6059 6971fb12-3745-4630-9945-bcda9ae9c75f 823192dc-5d8a-4910-9d08-fe34d71cc6f4 563c9415-221b-47aa-9c89-bb0d41255592 cbcf0c56-2f57-484d-b5b7-5d2aee09bb79 f6f91f91-ab83-446b-9b6d-5f6b4bf8fa29 fdcc6cd3-6c04-4dec-a06a-9bc5dede69d6 d38e19ef-aee0-4cfa-80f2-e986d314e64b f940d55b-81ea-4abf-b541-f7eaba354b41 7c7bc95f-c585-4b7b-b504-29a4a46f8e30 5138aaf7-589d-4db1-9a13-9c20347be45f 2747bfd5-5f44-461a-b144-70146a58044a 47f777c2-6696-4843-a3d7-e0f0f9c70494 247e45ae-8ccf-42fa-8114-1ca48dc8bffd c3dc78d0-742b-4def-8f56-c5adfc9aec65 024f40f9-1732-4b12-875f-0567a4f62df7 660d1862-4ed6-4cf6-bbf5-eef03f711249 b46ec006-7798-4e4b-b0bc-258d064f40f5 5a401bb5-9086-473f-a295-3d62c9ca7c13 5c0a3a24-08f5-447a-8f65-bc84c3f04d5d 9d28d7d4-ea4a-495a-97a2-0dba4d56f259 4bc25ea9-5a7e-4ff4-8207-9310200b5068 9f0a397b-6eea-4d0a-998e-a256eafd7257 b430d4e2-5a70-42aa-a081-2f6daaeb056a 0f5d61e9-a2c0-4278-bfe0-17529e259649 09c35a90-2ec0-4141-860d-7c9ea61a3587 48ff7206-147a-475d-96fc-01f80d2a1b77 ffa79e06-fb74-4ae2-9d20-fcb7f3e71b69 1a7ad399-448b-4b60-b3cb-ef854739f053 7414bba4-c09c-4c25-b701-46a636f7f968 188ea8dc-53eb-465d-8f3f-bbef814c971f 097cca60-f96b-484a-a2c6-b8a2f99b7f4e dcf18e40-a481-4577-be8e-a7f285a08cab eba0c30a-b2ba-4755-ab84-dd9dc368daa6 9adc94f9-431a-46f1-b033-18bfa96c740f 6eb688d1-c7a5-4f6f-aa60-d5b78db1cc86 9077c201-7ac9-47a9-91c9-190244f55b57 b2b90497-48e6-4948-bd0a-d986d2c215f0 8c396ca4-4538-4f41-a1cb-31f72f95e4f9 70549d6e-b7a9-4220-aa8d-98757ed1f792 214bdbe9-0a28-4928-831c-be54bf9593b0 bba05c32-d64a-45af-ad2d-fb35bac703ee f71f9c48-943e-496e-b9fe-f9092ef158b3 9da12cf8-0b3e-429c-a0a1-bce2f7c76ed1 a713e20f-2f22-48cf-850b-7427540e25ae 1c934d6f-5d44-42f5-a201-a592fc545809 6dce96a8-c870-41aa-9221-b4db19539757 34d5ee5c-ddf4-4e2c-8684-0deb7f30fccf 061b80ac-b5a9-42a8-9ccd-60ad2c17f45e db7ac469-4140-4546-b1ae-09637ba1c1ad 0d6666b0-8e0a-4532-875d-26b686ad6765 869c8741-4518-4956-ad0c-9efbc588f1ef 46b4246d-8fd0-4d75-a147-5e631c228338 90e2e32f-7ac0-42c7-96df-e1f54ee4081a 4d0481d9-9509-4e58-8d10-00603ef4724f 138cf4c6-c372-405d-8d0e-727b8f6c284c 2b99a030-2949-4e5c-bbae-cd726baf37f5 488b1a33-cc6e-45b6-9f7b-6fe6734149a9 04a1e43f-d609-48ec-beff-29ea9ca872a1 3bd254b1-6fef-46f0-9763-86749234a73f 6a901c08-714a-4be8-a3be-f8acd50b1090 416cc86e-a392-47dc-a580-12fd7c5daa22 3d2a7eec-c3f9-44cf-8615-6dbb7da0d8cf 27fd4d42-1597-4d8b-977f-0e45d039a123 029061ad-7504-40dd-8104-fdb49e3b86e8 94178883-8c44-49c8-9476-cae9f63dcf88 4e141aa8-4c41-431b-8eee-7f4a0de5e32b 4501f681-2afb-4f7e-b409-081945dd2365 bac3c113-6ee3-4289-a107-137867dd3647 eaac2f55-f5f6-4397-98c1-b7be82510636 67f4ee21-8c11-47be-a5b6-3d405ee7e548 58147288-0cf5-442d-9bb3-20bc7a7ffd35 94e0f9de-2dc8-4c61-bc99-f1added50c02 26ad109f-286b-4dbc-b2e4-8ce0f8240a7e 9e1fed81-7dec-40f2-b8f3-183616eb3853 4e70fdcb-8807-4cd3-95c6-830be25d2066 657e71d5-46ac-4b66-a906-4f4d138d5528 ea0c5ed8-438e-4c9e-8ee2-e9adf7fbe565 efcd3e98-a72e-4672-a864-05f893cd48e7 4671261a-d5d6-4764-8373-25d5735b5438 965b5837-0650-4637-88dd-78a557260412 039f03f4-95c5-4925-b78d-31003e1d6778 b5b4aeea-fb48-4814-a3fa-ba1617979684 bedd8d78-5b57-40a2-a514-219d29b621e0 621110cd-3074-4df9-a138-f82bb84a0585 27daee02-4473-4e9b-ac83-a90a86a9be90 b92ae9d3-e67a-4c2c-ab50-fbaa067908c3 32a96a9a-3328-440a-9a89-0f326e18387f 89136436-3ccf-4bc7-8dbe-faa116755116 68c9cdfa-2da3-44aa-b8e5-204ef8cd7ab1 50e1e849-4933-4ea9-98fb-71b775a36e6c fd72a9da-5edb-420b-b590-35a082f3d782 f648776a-e422-43b3-a763-ad58f33107e3 44776007-70c6-475c-a121-ab5a5fb12ccd 72283419-d136-4730-9a02-10d318c9d5c1 9ad30791-8348-4343-878a-5755d91e50b4 b5a2bd95-d97b-4b50-b015-c480455e2034 3f1c8aaf-34d9-4b48-9776-e0dce0bd1f5b 127bd9f1-3ff4-4db0-900e-f640c642c53d 6a2a959f-8339-42ef-90a9-96944861dc14 84b8d46e-dca4-4874-8ebf-6f7c24d08817 c2b776df-16b1-4248-a3a8-b4d02fbb8cb9 1bb2b65e-7187-424b-940a-eadddbf892eb 034d2b14-1216-47d4-862c-c3f15d100760 d0b9b8db-982d-459d-a7b7-46ac7036d686 157572cb-6c59-4a00-a4fb-2137c2413352 eef796a6-e73e-4efb-861e-76e24c708ea1 a41e1652-0d8e-4cfa-a705-afa1bd5a0edb c7b6779b-2e20-4246-96a5-5015c41bcbab 304d872e-0525-4bea-9c1e-bf84fdfcb4fb 0703fc3b-6808-4a9a-9f49-cca695a4c583 590762d3-fd9c-4e60-b90c-7ce4ea336cb2 0fed61b1-7bfe-4424-9e40-bc5ed9700c9b 0d9ca160-1c5f-4913-a5d3-9c06764c6be9 02b8a3dc-89ed-4d48-ab95-3a7619beb291 674d924e-4dc8-4d5a-8272-8da36f13adf1 93c8c775-a441-4271-b33a-36675610d08f 00b05773-5899-42da-aa29-d75c5dd23eef 1e3096e4-7f1d-4bd7-8306-8a7c7c875472 5657d6c3-af86-405b-9a77-43e34b9050d2 6e3bb1be-f12f-4ca0-b138-5dff14fe26e4 3b9952dd-6299-4809-a238-a46205b51167 1f68a592-14e1-4a95-8918-07fc8eaa442b b6912173-b687-4333-a956-739a63925551 58231107-d0a0-4c09-8e0b-ffdd2354bf69 0bbf81bc-28dc-4b57-81ff-a6bf84b18e56 08b3dd94-52ab-49ba-b55c-fb1061138d4f 96c3d9ea-68c8-47e3-be7e-5d99b4661200 334b6d1c-decc-489a-91ee-b821b2ea28c9 9e1abc06-4087-4d3f-b303-e0130ae27bbd e8377f97-9fad-4491-a632-a217fe8330fa ebaab53f-ec1a-4139-8bd5-d07668b504f6 73673e99-cb61-4f58-ac3b-240951029cee 48b94f0a-9e3a-498b-b270-cad6f4035812 b4c7cc2c-7a02-4860-b8b6-6ba1359e17b5 4e768ba5-7ccd-457f-91ff-de2d8fc0caa3 407a4262-f3ae-409e-9200-2b98023c25b5 c71ed2d3-13e0-48bc-acf4-3c0731b48d0c 9af41e14-739a-4a0a-a388-57526b326f47 a807ccac-5920-43d7-a991-c78a2eb4a1ae dbdcc31e-29b2-4c16-b0f5-70360264330d 8cf27189-cf7b-41a1-962f-9bd95550590e cd3af50d-31a3-4574-ba2c-1f2b312468cc 89787406-dc16-4cd0-9782-475057ff3bcb ecb47dd5-000f-4058-a414-76bcc0eac095 ce8737de-c28a-427c-adda-5486d1dc6b7d 1c4dd5e9-2465-47ac-82d2-aa7aa193a0e2 e2cdafcd-8310-4e7d-ab62-1be41e616d3f fb755782-8079-4d8a-976a-85b4d11a3859 b6f1124d-cf4a-4b18-94a1-fb7aa073a4d6 3b99abfd-85e3-4ae4-ab4d-ac58234ff535 858c9f57-9b93-4581-9d75-e8df5c99f760 a36c819f-07d1-4bdb-a349-b84176bc1f2b 5c184e72-64d4-45b6-903e-cfa24dfa1b49 498dcc27-c3fb-461f-84fa-844641e6713f 4d4ac4b6-7adf-481c-9cf9-e6d039be8f52 060c91ba-4db5-4ba9-8968-9e6f6a9d4696 41bbffed-aef4-4463-bb78-21f003b6f3da 089f551a-5907-4a83-b7f2-2bf59b6e9592 3b50c3f4-9caa-413a-a550-441d0f9568b8 70db0b45-fdbf-40a5-aaad-a0dc8731ff34 db656ec3-fcd5-4662-b472-d4019f0de975 6b45d969-c59d-4861-af16-258d732d14d1 9f1d3f09-5ae0-4831-9c98-ee0075484ea0 89585950-5807-4f91-986e-35e1bc3dc45f 719b425e-e166-44cf-ba24-bda657ecdea5 ecd54446-f8f2-4feb-8ad0-7eba4a40080d 1434e577-8f35-4c9f-85e7-2d771e80715b 890c73f6-0dfc-4c68-9403-b35b31694a16 61420f46-4409-4a28-9bc8-9430b31a4f43 2e23b166-0a18-462f-b70d-92ca5fcd442f 2eb484f8-4219-4608-8f51-dc3ec40b0178 75f298ee-a814-41e6-a47b-775503998e2d cee0e876-ca8f-4d29-96af-3e7bcf47e3a8 fdf8d467-4a48-455e-9174-23e0dcc53dc8 8c78e531-8c78-447d-b066-cc813acb5460 22f0e332-7d04-4193-a6c8-c83c252e892a 5d045cab-0196-43ea-b0ed-fc38aa08f517 6f012c11-e235-44b4-80ec-f4ed5b0e745b 2f95ed37-73ab-49a4-b1ec-4ad35805816d 82a45048-3876-4318-b7ee-9b4dc70f6b0d 0a63ce21-7b9b-4477-bdce-868ce1b3e22f 4d8cb173-0bd2-47c5-a82d-b3746c6579a0 9b1ee361-ebde-4197-aa6c-b5692c35c871 67635849-2c63-4a28-ab96-4c181a8d6154 c370af42-fbf7-45c3-b22d-44958696c276 5f93900e-3962-4721-90af-5c8396ce038d ebd69af5-21a5-4e37-910a-ae5b934b822b d049c6a2-f8b6-4788-ab62-00e86f4de45f 975f6c30-28a3-4556-b8c0-64189bc08796 b2e204b1-1894-4b2c-ba2c-b705a3ccd51c b87db17b-31d1-44df-b7fe-58c5215763d9 8ddd334f-c4d4-434e-accf-ca9373ec939e 61ade247-81ee-48e9-aa07-5deaa7c0158a c832f5c0-3cb8-43aa-9bae-ead35d3c8cf4 11f9189c-97a8-499a-bcf3-64640049f5db d9e3f7e9-62b0-4477-8d76-f85e951fa217 8ad09007-e934-47a5-99e9-ad3d3c902879 4fbfbcad-84a2-4c43-8418-c68ae45defc7 a4719bf4-f340-4ae8-9c24-ee3bc0f06a5b e0a66a37-e896-4bde-b8fc-56bc24293cc6 0ce01f01-c836-4d71-b790-a7a6e3d0be88 c893f96f-d406-4f27-afb3-a63c0f004c57 5607312e-fa06-4949-884a-3299c7805948 7ebbb663-3643-45e4-ad77-fef7aa4b4aea 8b3865b1-6cf4-4bd9-9035-00bfc996387b 69e0c73e-9792-4664-aa85-096834e115bb 0257a25a-91be-4925-848a-b0be09d3b756 5a6e5c15-df06-40d4-bf3e-b744dabaced9 01276138-4db7-43aa-b687-29d7ea05e2a2 2639437c-a5c8-4d36-9caf-03614ccda6d0 7e980393-4f8b-4e36-9eab-19db3769cfa3 ec42659e-3fea-4066-acf1-0381e51fbd56 63daf0d1-3b03-4979-b826-adcfc6e9d466 37215c12-f426-4706-a6bc-8490946358dd b9d01144-2c4d-4600-94be-a5e67ccbdc0c a756d568-c772-4ca8-bd65-6bdde5fe8da1 83f4aae7-893b-4d31-b31c-5de077e0dfc2 6c0b6751-0494-4fc7-ba09-44446a2c5d9e 362616ce-6c4e-4469-941f-53acfe400e27 22fc8538-76d3-4be6-bb53-30473746ef33 f99fd7f4-9d92-43da-82b2-4e085aa8092d 9b5ecd84-1961-4fe9-8ebc-1b2dcab84348 795b527c-c05a-44a0-b4d2-3266ab05428c 3a099552-5841-4dd9-9077-a43aeb42464e 96195d5d-3385-410b-afd3-784de1f3ca9a dad4103b-c8d6-4a41-a2f2-4faa03b48283 6420409d-3b28-45d8-8e22-acf6852b3f68 b4b816b5-eca3-4bbb-bf2b-a5a15e71a7b1 d74e5b35-b775-4fd9-9720-9d0966435940 fa79c098-1ef6-4790-816e-044d56a5e608 4a55a8ad-24ba-4272-923c-e31673711c96 2d3be876-929f-450f-97b2-d9a1de1b57e5 727eb3c4-4c36-4078-87ed-bf01e86751b1 d31a2b1b-5da9-4a14-a02c-dd0507fb966a 9faa7f06-adb6-4811-b11b-b39312455eb8 4b2ba0ae-3f90-4c33-aae6-7e8ba2c41482 22da9abe-fbf3-406c-aa72-0056f852def1 c463f407-9a4e-49a1-a3fc-bc9018c33e85 eeaa61b5-afaf-4825-ae71-76ff445bb059 a8ccea2b-f575-46eb-af96-11eab4e45651 de1bea52-cd16-458e-b951-c909e5c9e992 5ec93294-5994-4f36-b361-5bcbd8938154 d186924e-b6f7-4194-8407-c4c30de9c70e f3a19960-2df2-49ff-b791-3f33448faef5 8e582739-e578-4716-b3fc-c13602f18f7c 7749f5f9-7ab7-42d3-91da-4defc4a466dd f08bc4ef-1d93-4cfd-8e63-c8d54aef86f5 d15928cb-83ef-4c97-83cd-6e4ed77671fb cce97553-14e3-4869-8f1d-8fd7ff915acc 13168b12-1991-42b2-8af1-a7cfcf50cf75 866537c6-c453-4582-8581-acc16ece4a62 b3c8b720-8c93-4a10-8b94-afab818b9aad 9c85ae0d-e411-4fba-83f9-c937ef27f238 1a43a2b3-84e5-4fe8-ad05-709fae6e8796 e8f33b71-1129-4059-82d1-08df42ebbfff 50d11a3a-9f14-43e1-98c2-31e8e915fa1a acd72a9a-a137-4f5e-a3ab-5b9b34d8106d 11355bdc-c2e9-45fa-ae2b-9e2ce180177e 766399ec-6e83-4832-9073-4a8c4c9b1c22 bee0d686-4a81-49b6-8a33-b9350c32549e d901f30b-4e75-4a08-b0ee-81bc4e5683c2 17d19110-a409-44cc-a9c8-3692eab13a4b d0a4cd9e-48f9-4c4e-8f71-5287c582d544 9e2d0390-3542-4bf3-a328-4f06ef77ffae 14d13eec-2e67-4e92-8c5d-93358585cdf6 153f58ce-5325-4335-ab73-90855c94ce7b e6efa260-41cd-4ce4-a3cc-53d5371f7dd3 b75d012d-b5ee-49dc-814c-362e6ac7044e 806d2710-8b9d-4c8c-9bdf-a3015a860db1 e4492f0f-5ee8-4ea8-929b-4d88e8082886 b8cd5aa6-1aff-4f39-9b2b-04f90b3c45f3 8aec491a-392b-422e-aa96-2fc35bbd32c0 53025710-34af-4f23-ba56-c0d796a51d5c 908131ea-4f3f-4745-aaee-10caf74a7367 50a60cc8-94de-4df7-9a69-e7c91c69d623 5368b979-394f-4ec1-aeac-8ed9f7280828 68c5eabe-9d6b-409c-aa2b-9c88182acde2 f2af3465-c65f-46eb-98ba-193ca12acb7d aa1d9e44-b849-4ee7-a8ca-bc4032bac35b aced2e8f-f17f-4ef4-962c-02eb79531396 facd4e07-4bd6-45aa-9fcd-91f9b600dac2 175cd2b3-60fc-4f6d-bd51-17b34f2a5166 97213274-508e-435b-bdd0-55d79e00933d 1f4974da-bf95-457c-a94a-01af20f1c98d bf02e05d-64d9-48ff-820a-a8dea5c19d1a 23882729-c148-491f-91b8-b92d07e44cdf a4ac9a8d-a9eb-4906-83ed-57bd2842a5a0 7ef50f55-6733-476f-a1b8-83efa5ba86d9 0a587932-4b8b-4c4a-9818-e87dbb65fd4d c236324d-88d5-4634-90e4-b4b4bb866c90 57564153-d43c-422b-a8f8-19d9d2749e25 c28b2dcb-1e44-4730-86a1-1614d2c8e252 19841720-efe6-4fc4-b939-5234b38a0795 451965b3-58d8-4a84-98a6-f9381fec889a 1541c21a-984e-4c3a-bfc2-652f8bef73e3 1c1f16fa-a5be-4d42-86f5-213cab7fc20c b801bfe7-d332-4cf4-a253-269dc6b91121 watchman-4.9.0/thirdparty/libart/tests/words.txt000066400000000000000000114052651314236077500220640ustar00rootroot00000000000000A a aa aal aalii aam Aani aardvark aardwolf Aaron Aaronic Aaronical Aaronite Aaronitic Aaru Ab aba Ababdeh Ababua abac abaca abacate abacay abacinate abacination abaciscus abacist aback abactinal abactinally abaction abactor abaculus abacus Abadite abaff abaft abaisance abaiser abaissed abalienate abalienation abalone Abama abampere abandon abandonable abandoned abandonedly abandonee abandoner abandonment Abanic Abantes abaptiston Abarambo Abaris abarthrosis abarticular abarticulation abas abase abased abasedly abasedness abasement abaser Abasgi abash abashed abashedly abashedness abashless abashlessly abashment abasia abasic abask Abassin abastardize abatable abate abatement abater abatis abatised abaton abator abattoir Abatua abature abave abaxial abaxile abaze abb Abba abbacomes abbacy Abbadide abbas abbasi abbassi Abbasside abbatial abbatical abbess abbey abbeystede Abbie abbot abbotcy abbotnullius abbotship abbreviate abbreviately abbreviation abbreviator abbreviatory abbreviature Abby abcoulomb abdal abdat Abderian Abderite abdest abdicable abdicant abdicate abdication abdicative abdicator Abdiel abditive abditory abdomen abdominal Abdominales abdominalian abdominally abdominoanterior abdominocardiac abdominocentesis abdominocystic abdominogenital abdominohysterectomy abdominohysterotomy abdominoposterior abdominoscope abdominoscopy abdominothoracic abdominous abdominovaginal abdominovesical abduce abducens abducent abduct abduction abductor Abe abeam abear abearance abecedarian abecedarium abecedary abed abeigh Abel abele Abelia Abelian Abelicea Abelite abelite Abelmoschus abelmosk Abelonian abeltree Abencerrages abenteric abepithymia Aberdeen aberdevine Aberdonian Aberia aberrance aberrancy aberrant aberrate aberration aberrational aberrator aberrometer aberroscope aberuncator abet abetment abettal abettor abevacuation abey abeyance abeyancy abeyant abfarad abhenry abhiseka abhominable abhor abhorrence abhorrency abhorrent abhorrently abhorrer abhorrible abhorring Abhorson abidal abidance abide abider abidi abiding abidingly abidingness Abie Abies abietate abietene abietic abietin Abietineae abietineous abietinic Abiezer Abigail abigail abigailship abigeat abigeus abilao ability abilla abilo abintestate abiogenesis abiogenesist abiogenetic abiogenetical abiogenetically abiogenist abiogenous abiogeny abiological abiologically abiology abiosis abiotic abiotrophic abiotrophy Abipon abir abirritant abirritate abirritation abirritative abiston Abitibi abiuret abject abjectedness abjection abjective abjectly abjectness abjoint abjudge abjudicate abjudication abjunction abjunctive abjuration abjuratory abjure abjurement abjurer abkar abkari Abkhas Abkhasian ablach ablactate ablactation ablare ablastemic ablastous ablate ablation ablatitious ablatival ablative ablator ablaut ablaze able ableeze ablegate ableness ablepharia ablepharon ablepharous Ablepharus ablepsia ableptical ableptically abler ablest ablewhackets ablins abloom ablow ablude abluent ablush ablution ablutionary abluvion ably abmho Abnaki abnegate abnegation abnegative abnegator Abner abnerval abnet abneural abnormal abnormalism abnormalist abnormality abnormalize abnormally abnormalness abnormity abnormous abnumerable Abo aboard Abobra abode abodement abody abohm aboil abolish abolisher abolishment abolition abolitionary abolitionism abolitionist abolitionize abolla aboma abomasum abomasus abominable abominableness abominably abominate abomination abominator abomine Abongo aboon aborad aboral aborally abord aboriginal aboriginality aboriginally aboriginary aborigine abort aborted aborticide abortient abortifacient abortin abortion abortional abortionist abortive abortively abortiveness abortus abouchement abound abounder abounding aboundingly about abouts above aboveboard abovedeck aboveground aboveproof abovestairs abox abracadabra abrachia abradant abrade abrader Abraham Abrahamic Abrahamidae Abrahamite Abrahamitic abraid Abram Abramis abranchial abranchialism abranchian Abranchiata abranchiate abranchious abrasax abrase abrash abrasiometer abrasion abrasive abrastol abraum abraxas abreact abreaction abreast abrenounce abret abrico abridge abridgeable abridged abridgedly abridger abridgment abrim abrin abristle abroach abroad Abrocoma abrocome abrogable abrogate abrogation abrogative abrogator Abroma Abronia abrook abrotanum abrotine abrupt abruptedly abruption abruptly abruptness Abrus Absalom absampere Absaroka absarokite abscess abscessed abscession abscessroot abscind abscise abscision absciss abscissa abscissae abscisse abscission absconce abscond absconded abscondedly abscondence absconder absconsa abscoulomb absence absent absentation absentee absenteeism absenteeship absenter absently absentment absentmindedly absentness absfarad abshenry Absi absinthe absinthial absinthian absinthiate absinthic absinthin absinthine absinthism absinthismic absinthium absinthol absit absmho absohm absolute absolutely absoluteness absolution absolutism absolutist absolutistic absolutistically absolutive absolutization absolutize absolutory absolvable absolvatory absolve absolvent absolver absolvitor absolvitory absonant absonous absorb absorbability absorbable absorbed absorbedly absorbedness absorbefacient absorbency absorbent absorber absorbing absorbingly absorbition absorpt absorptance absorptiometer absorptiometric absorption absorptive absorptively absorptiveness absorptivity absquatulate abstain abstainer abstainment abstemious abstemiously abstemiousness abstention abstentionist abstentious absterge abstergent abstersion abstersive abstersiveness abstinence abstinency abstinent abstinential abstinently abstract abstracted abstractedly abstractedness abstracter abstraction abstractional abstractionism abstractionist abstractitious abstractive abstractively abstractiveness abstractly abstractness abstractor abstrahent abstricted abstriction abstruse abstrusely abstruseness abstrusion abstrusity absume absumption absurd absurdity absurdly absurdness absvolt Absyrtus abterminal abthain abthainrie abthainry abthanage Abu abu abucco abulia abulic abulomania abuna abundance abundancy abundant Abundantia abundantly abura aburabozu aburban aburst aburton abusable abuse abusedly abusee abuseful abusefully abusefulness abuser abusion abusious abusive abusively abusiveness abut Abuta Abutilon abutment abuttal abutter abutting abuzz abvolt abwab aby abysm abysmal abysmally abyss abyssal Abyssinian abyssobenthonic abyssolith abyssopelagic acacatechin acacatechol acacetin Acacia Acacian acaciin acacin academe academial academian Academic academic academical academically academicals academician academicism academism academist academite academization academize Academus academy Acadia acadialite Acadian Acadie Acaena acajou acaleph Acalepha Acalephae acalephan acalephoid acalycal acalycine acalycinous acalyculate Acalypha Acalypterae Acalyptrata Acalyptratae acalyptrate Acamar acampsia acana acanaceous acanonical acanth acantha Acanthaceae acanthaceous acanthad Acantharia Acanthia acanthial acanthin acanthine acanthion acanthite acanthocarpous Acanthocephala acanthocephalan Acanthocephali acanthocephalous Acanthocereus acanthocladous Acanthodea acanthodean Acanthodei Acanthodes acanthodian Acanthodidae Acanthodii Acanthodini acanthoid Acantholimon acanthological acanthology acantholysis acanthoma Acanthomeridae acanthon Acanthopanax Acanthophis acanthophorous acanthopod acanthopodous acanthopomatous acanthopore acanthopteran Acanthopteri acanthopterous acanthopterygian Acanthopterygii acanthosis acanthous Acanthuridae Acanthurus acanthus acapnia acapnial acapsular acapu acapulco acara Acarapis acardia acardiac acari acarian acariasis acaricidal acaricide acarid Acarida Acaridea acaridean acaridomatium acariform Acarina acarine acarinosis acarocecidium acarodermatitis acaroid acarol acarologist acarology acarophilous acarophobia acarotoxic acarpelous acarpous Acarus Acastus acatalectic acatalepsia acatalepsy acataleptic acatallactic acatamathesia acataphasia acataposis acatastasia acatastatic acate acategorical acatery acatharsia acatharsy acatholic acaudal acaudate acaulescent acauline acaulose acaulous acca accede accedence acceder accelerable accelerando accelerant accelerate accelerated acceleratedly acceleration accelerative accelerator acceleratory accelerograph accelerometer accend accendibility accendible accension accensor accent accentless accentor accentuable accentual accentuality accentually accentuate accentuation accentuator accentus accept acceptability acceptable acceptableness acceptably acceptance acceptancy acceptant acceptation accepted acceptedly accepter acceptilate acceptilation acception acceptive acceptor acceptress accerse accersition accersitor access accessarily accessariness accessary accessaryship accessibility accessible accessibly accession accessional accessioner accessive accessively accessless accessorial accessorily accessoriness accessorius accessory accidence accidency accident accidental accidentalism accidentalist accidentality accidentally accidentalness accidented accidential accidentiality accidently accidia accidie accinge accipient Accipiter accipitral accipitrary Accipitres accipitrine accismus accite acclaim acclaimable acclaimer acclamation acclamator acclamatory acclimatable acclimatation acclimate acclimatement acclimation acclimatizable acclimatization acclimatize acclimatizer acclimature acclinal acclinate acclivitous acclivity acclivous accloy accoast accoil accolade accoladed accolated accolent accolle accombination accommodable accommodableness accommodate accommodately accommodateness accommodating accommodatingly accommodation accommodational accommodative accommodativeness accommodator accompanier accompaniment accompanimental accompanist accompany accompanyist accompletive accomplice accompliceship accomplicity accomplish accomplishable accomplished accomplisher accomplishment accomplisht accompt accord accordable accordance accordancy accordant accordantly accorder according accordingly accordion accordionist accorporate accorporation accost accostable accosted accouche accouchement accoucheur accoucheuse account accountability accountable accountableness accountably accountancy accountant accountantship accounting accountment accouple accouplement accouter accouterment accoy accredit accreditate accreditation accredited accreditment accrementitial accrementition accresce accrescence accrescent accretal accrete accretion accretionary accretive accroach accroides accrual accrue accruement accruer accubation accubitum accubitus accultural acculturate acculturation acculturize accumbency accumbent accumber accumulable accumulate accumulation accumulativ accumulative accumulatively accumulativeness accumulator accuracy accurate accurately accurateness accurse accursed accursedly accursedness accusable accusably accusal accusant accusation accusatival accusative accusatively accusatorial accusatorially accusatory accusatrix accuse accused accuser accusingly accusive accustom accustomed accustomedly accustomedness ace aceacenaphthene aceanthrene aceanthrenequinone acecaffine aceconitic acedia acediamine acediast acedy Aceldama Acemetae Acemetic acenaphthene acenaphthenyl acenaphthylene acentric acentrous aceologic aceology acephal Acephala acephalan Acephali acephalia Acephalina acephaline acephalism acephalist Acephalite acephalocyst acephalous acephalus Acer Aceraceae aceraceous Acerae Acerata acerate Acerates acerathere Aceratherium aceratosis acerb Acerbas acerbate acerbic acerbity acerdol acerin acerose acerous acerra acertannin acervate acervately acervation acervative acervose acervuline acervulus acescence acescency acescent aceship acesodyne Acestes acetabular Acetabularia acetabuliferous acetabuliform acetabulous acetabulum acetacetic acetal acetaldehydase acetaldehyde acetaldehydrase acetalization acetalize acetamide acetamidin acetamidine acetamido acetaminol acetanilid acetanilide acetanion acetaniside acetanisidide acetannin acetarious acetarsone acetate acetated acetation acetbromamide acetenyl acethydrazide acetic acetification acetifier acetify acetimeter acetimetry acetin acetize acetmethylanilide acetnaphthalide acetoacetanilide acetoacetate acetoacetic acetoamidophenol acetoarsenite Acetobacter acetobenzoic acetobromanilide acetochloral acetocinnamene acetoin acetol acetolysis acetolytic acetometer acetometrical acetometrically acetometry acetomorphine acetonaphthone acetonate acetonation acetone acetonemia acetonemic acetonic acetonitrile acetonization acetonize acetonuria acetonurometer acetonyl acetonylacetone acetonylidene acetophenetide acetophenin acetophenine acetophenone acetopiperone acetopyrin acetosalicylic acetose acetosity acetosoluble acetothienone acetotoluide acetotoluidine acetous acetoveratrone acetoxime acetoxyl acetoxyphthalide acetphenetid acetphenetidin acetract acettoluide acetum aceturic acetyl acetylacetonates acetylacetone acetylamine acetylate acetylation acetylator acetylbenzene acetylbenzoate acetylbenzoic acetylbiuret acetylcarbazole acetylcellulose acetylcholine acetylcyanide acetylenation acetylene acetylenediurein acetylenic acetylenyl acetylfluoride acetylglycine acetylhydrazine acetylic acetylide acetyliodide acetylizable acetylization acetylize acetylizer acetylmethylcarbinol acetylperoxide acetylphenol acetylphenylhydrazine acetylrosaniline acetylsalicylate acetylsalol acetyltannin acetylthymol acetyltropeine acetylurea ach Achaean Achaemenian Achaemenid Achaemenidae Achaemenidian Achaenodon Achaeta achaetous achage Achagua Achakzai achalasia Achamoth Achango achar Achariaceae Achariaceous achate Achates Achatina Achatinella Achatinidae ache acheilia acheilous acheiria acheirous acheirus Achen achene achenial achenium achenocarp achenodium acher Achernar Acheronian Acherontic Acherontical achete Achetidae Acheulean acheweed achievable achieve achievement achiever achigan achilary achill Achillea Achillean Achilleid achilleine Achillize achillobursitis achillodynia achime Achimenes Achinese aching achingly achira Achitophel achlamydate Achlamydeae achlamydeous achlorhydria achlorophyllous achloropsia Achmetha acholia acholic Acholoe acholous acholuria acholuric Achomawi achondrite achondritic achondroplasia achondroplastic achor achordal Achordata achordate Achorion Achras achree achroacyte Achroanthes achrodextrin achrodextrinase achroglobin achroiocythaemia achroiocythemia achroite achroma achromacyte achromasia achromat achromate Achromatiaceae achromatic achromatically achromaticity achromatin achromatinic achromatism Achromatium achromatizable achromatization achromatize achromatocyte achromatolysis achromatope achromatophile achromatopia achromatopsia achromatopsy achromatosis achromatous achromaturia achromia achromic Achromobacter Achromobacterieae achromoderma achromophilous achromotrichia achromous achronical achroodextrin achroodextrinase achroous achropsia achtehalber achtel achtelthaler Achuas achy achylia achylous achymia achymous Achyranthes Achyrodes acichloride acicula acicular acicularly aciculate aciculated aciculum acid Acidanthera Acidaspis acidemia acider acidic acidiferous acidifiable acidifiant acidific acidification acidifier acidify acidimeter acidimetric acidimetrical acidimetrically acidimetry acidite acidity acidize acidly acidness acidoid acidology acidometer acidometry acidophile acidophilic acidophilous acidoproteolytic acidosis acidosteophyte acidotic acidproof acidulate acidulent acidulous aciduric acidyl acier acierage Acieral acierate acieration aciform aciliate aciliated Acilius acinaceous acinaces acinacifolious acinaciform acinar acinarious acinary Acineta Acinetae acinetan Acinetaria acinetarian acinetic acinetiform Acinetina acinetinan acinic aciniform acinose acinotubular acinous acinus Acipenser Acipenseres acipenserid Acipenseridae acipenserine acipenseroid Acipenseroidei Acis aciurgy acker ackey ackman acknow acknowledge acknowledgeable acknowledged acknowledgedly acknowledger aclastic acle acleidian acleistous Aclemon aclidian aclinal aclinic acloud aclys Acmaea Acmaeidae acmatic acme acmesthesia acmic Acmispon acmite acne acneform acneiform acnemia Acnida acnodal acnode Acocanthera acocantherin acock acockbill acocotl Acoela Acoelomata acoelomate acoelomatous Acoelomi acoelomous acoelous Acoemetae Acoemeti Acoemetic acoin acoine Acolapissa acold Acolhua Acolhuan acologic acology acolous acoluthic acolyte acolythate Acoma acoma acomia acomous aconative acondylose acondylous acone aconic aconin aconine aconital aconite aconitia aconitic aconitin aconitine Aconitum Acontias acontium Acontius aconuresis acopic acopon acopyrin acopyrine acor acorea acoria acorn acorned Acorus acosmic acosmism acosmist acosmistic acotyledon acotyledonous acouasm acouchi acouchy acoumeter acoumetry acouometer acouophonia acoupa acousmata acousmatic acoustic acoustical acoustically acoustician acousticolateral Acousticon acoustics acquaint acquaintance acquaintanceship acquaintancy acquaintant acquainted acquaintedness acquest acquiesce acquiescement acquiescence acquiescency acquiescent acquiescently acquiescer acquiescingly acquirability acquirable acquire acquired acquirement acquirenda acquirer acquisible acquisite acquisited acquisition acquisitive acquisitively acquisitiveness acquisitor acquisitum acquist acquit acquitment acquittal acquittance acquitter Acrab acracy acraein Acraeinae acraldehyde Acrania acranial acraniate acrasia Acrasiaceae Acrasiales Acrasida Acrasieae Acraspeda acraspedote acratia acraturesis acrawl acraze acre acreable acreage acreak acream acred Acredula acreman acrestaff acrid acridan acridian acridic Acrididae Acridiidae acridine acridinic acridinium acridity Acridium acridly acridness acridone acridonium acridophagus acridyl acriflavin acriflavine acrimonious acrimoniously acrimoniousness acrimony acrindoline acrinyl acrisia Acrisius Acrita acritan acrite acritical acritol Acroa acroaesthesia acroama acroamatic acroamatics acroanesthesia acroarthritis acroasphyxia acroataxia acroatic acrobacy acrobat Acrobates acrobatholithic acrobatic acrobatical acrobatically acrobatics acrobatism acroblast acrobryous acrobystitis Acrocarpi acrocarpous acrocephalia acrocephalic acrocephalous acrocephaly Acrocera Acroceratidae Acroceraunian Acroceridae Acrochordidae Acrochordinae acrochordon Acroclinium Acrocomia acroconidium acrocontracture acrocoracoid acrocyanosis acrocyst acrodactylum acrodermatitis acrodont acrodontism acrodrome acrodromous Acrodus acrodynia acroesthesia acrogamous acrogamy acrogen acrogenic acrogenous acrogenously acrography Acrogynae acrogynae acrogynous acrolein acrolith acrolithan acrolithic acrologic acrologically acrologism acrologue acrology acromania acromastitis acromegalia acromegalic acromegaly acromelalgia acrometer acromial acromicria acromioclavicular acromiocoracoid acromiodeltoid acromiohumeral acromiohyoid acromion acromioscapular acromiosternal acromiothoracic acromonogrammatic acromphalus Acromyodi acromyodian acromyodic acromyodous acromyotonia acromyotonus acron acronarcotic acroneurosis acronical acronically acronyc acronych Acronycta acronyctous acronym acronymic acronymize acronymous acronyx acrook acroparalysis acroparesthesia acropathology acropathy acropetal acropetally acrophobia acrophonetic acrophonic acrophony acropodium acropoleis acropolis acropolitan Acropora acrorhagus acrorrheuma acrosarc acrosarcum acroscleriasis acroscleroderma acroscopic acrose acrosome acrosphacelus acrospire acrospore acrosporous across acrostic acrostical acrostically acrostichal Acrosticheae acrostichic acrostichoid Acrostichum acrosticism acrostolion acrostolium acrotarsial acrotarsium acroteleutic acroterial acroteric acroterium Acrothoracica acrotic acrotism acrotomous Acrotreta Acrotretidae acrotrophic acrotrophoneurosis Acrux Acrydium acryl acrylaldehyde acrylate acrylic acrylonitrile acrylyl act acta actability actable Actaea Actaeaceae Actaeon Actaeonidae Actiad Actian actification actifier actify actin actinal actinally actinautographic actinautography actine actinenchyma acting Actinia actinian Actiniaria actiniarian actinic actinically Actinidia Actinidiaceae actiniferous actiniform actinine actiniochrome actiniohematin Actiniomorpha actinism Actinistia actinium actinobacillosis Actinobacillus actinoblast actinobranch actinobranchia actinocarp actinocarpic actinocarpous actinochemistry actinocrinid Actinocrinidae actinocrinite Actinocrinus actinocutitis actinodermatitis actinodielectric actinodrome actinodromous actinoelectric actinoelectrically actinoelectricity actinogonidiate actinogram actinograph actinography actinoid Actinoida Actinoidea actinolite actinolitic actinologous actinologue actinology actinomere actinomeric actinometer actinometric actinometrical actinometry actinomorphic actinomorphous actinomorphy Actinomyces Actinomycetaceae Actinomycetales actinomycete actinomycetous actinomycin actinomycoma actinomycosis actinomycotic Actinomyxidia Actinomyxidiida actinon Actinonema actinoneuritis actinophone actinophonic actinophore actinophorous actinophryan Actinophrys Actinopoda actinopraxis actinopteran Actinopteri actinopterous actinopterygian Actinopterygii actinopterygious actinoscopy actinosoma actinosome Actinosphaerium actinost actinostereoscopy actinostomal actinostome actinotherapeutic actinotherapeutics actinotherapy actinotoxemia actinotrichium actinotrocha actinouranium Actinozoa actinozoal actinozoan actinozoon actinula action actionable actionably actional actionary actioner actionize actionless Actipylea Actium activable activate activation activator active actively activeness activin activism activist activital activity activize actless actomyosin acton actor actorship actress Acts actu actual actualism actualist actualistic actuality actualization actualize actually actualness actuarial actuarially actuarian actuary actuaryship actuation actuator acture acturience actutate acuaesthesia Acuan acuate acuation Acubens acuclosure acuductor acuesthesia acuity aculea Aculeata aculeate aculeated aculeiform aculeolate aculeolus aculeus acumen acuminate acumination acuminose acuminous acuminulate acupress acupressure acupunctuate acupunctuation acupuncturation acupuncturator acupuncture acurative acushla acutangular acutate acute acutely acutenaculum acuteness acutiator acutifoliate Acutilinguae acutilingual acutilobate acutiplantar acutish acutograve acutonodose acutorsion acyanoblepsia acyanopsia acyclic acyesis acyetic acyl acylamido acylamidobenzene acylamino acylate acylation acylogen acyloin acyloxy acyloxymethane acyrological acyrology acystia ad Ada adactyl adactylia adactylism adactylous Adad adad adage adagial adagietto adagio Adai Adaize Adam adamant adamantean adamantine adamantinoma adamantoblast adamantoblastoma adamantoid adamantoma adamas Adamastor adambulacral adamellite Adamhood Adamic Adamical Adamically adamine Adamite adamite Adamitic Adamitical Adamitism Adamsia adamsite adance adangle Adansonia Adapa adapid Adapis adapt adaptability adaptable adaptation adaptational adaptationally adaptative adaptedness adapter adaption adaptional adaptionism adaptitude adaptive adaptively adaptiveness adaptometer adaptor adaptorial Adar adarme adat adati adatom adaunt adaw adawe adawlut adawn adaxial aday adays adazzle adcraft add Adda adda addability addable addax addebted added addedly addend addenda addendum adder adderbolt adderfish adderspit adderwort addibility addible addicent addict addicted addictedness addiction Addie addiment Addisonian Addisoniana additament additamentary addition additional additionally additionary additionist addititious additive additively additivity additory addle addlebrain addlebrained addlehead addleheaded addleheadedly addleheadedness addlement addleness addlepate addlepated addlepatedness addleplot addlings addlins addorsed address addressee addresser addressful Addressograph addressor addrest Addu adduce adducent adducer adducible adduct adduction adductive adductor Addy Ade ade adead adeem adeep Adela Adelaide Adelarthra Adelarthrosomata adelarthrosomatous Adelbert Adelea Adeleidae Adelges Adelia Adelina Adeline adeling adelite Adeliza adelocerous Adelochorda adelocodonic adelomorphic adelomorphous adelopod Adelops Adelphi Adelphian adelphogamy Adelphoi adelpholite adelphophagy ademonist adempted ademption adenalgia adenalgy Adenanthera adenase adenasthenia adendric adendritic adenectomy adenectopia adenectopic adenemphractic adenemphraxis adenia adeniform adenine adenitis adenization adenoacanthoma adenoblast adenocancroid adenocarcinoma adenocarcinomatous adenocele adenocellulitis adenochondroma adenochondrosarcoma adenochrome adenocyst adenocystoma adenocystomatous adenodermia adenodiastasis adenodynia adenofibroma adenofibrosis adenogenesis adenogenous adenographer adenographic adenographical adenography adenohypersthenia adenoid adenoidal adenoidism adenoliomyofibroma adenolipoma adenolipomatosis adenologaditis adenological adenology adenolymphocele adenolymphoma adenoma adenomalacia adenomatome adenomatous adenomeningeal adenometritis adenomycosis adenomyofibroma adenomyoma adenomyxoma adenomyxosarcoma adenoncus adenoneural adenoneure adenopathy adenopharyngeal adenopharyngitis adenophlegmon Adenophora adenophore adenophorous adenophthalmia adenophyllous adenophyma adenopodous adenosarcoma adenosclerosis adenose adenosine adenosis adenostemonous Adenostoma adenotome adenotomic adenotomy adenotyphoid adenotyphus adenyl adenylic Adeodatus Adeona Adephaga adephagan adephagia adephagous adept adeptness adeptship adequacy adequate adequately adequateness adequation adequative adermia adermin Adessenarian adet adevism adfected adfix adfluxion adglutinate Adhafera adhaka adhamant Adhara adharma adhere adherence adherency adherent adherently adherer adherescence adherescent adhesion adhesional adhesive adhesively adhesivemeter adhesiveness adhibit adhibition adiabatic adiabatically adiabolist adiactinic adiadochokinesis adiagnostic adiantiform Adiantum adiaphon adiaphonon adiaphoral adiaphoresis adiaphoretic adiaphorism adiaphorist adiaphoristic adiaphorite adiaphoron adiaphorous adiate adiathermal adiathermancy adiathermanous adiathermic adiathetic adiation Adib Adicea adicity Adiel adieu adieux Adigei Adighe Adigranth adigranth Adin Adinida adinidan adinole adion adipate adipescent adipic adipinic adipocele adipocellulose adipocere adipoceriform adipocerous adipocyte adipofibroma adipogenic adipogenous adipoid adipolysis adipolytic adipoma adipomatous adipometer adipopexia adipopexis adipose adiposeness adiposis adiposity adiposogenital adiposuria adipous adipsia adipsic adipsous adipsy adipyl Adirondack adit adital aditus adjacency adjacent adjacently adjag adject adjection adjectional adjectival adjectivally adjective adjectively adjectivism adjectivitis adjiger adjoin adjoined adjoinedly adjoining adjoint adjourn adjournal adjournment adjudge adjudgeable adjudger adjudgment adjudicate adjudication adjudicative adjudicator adjudicature adjunct adjunction adjunctive adjunctively adjunctly adjuration adjuratory adjure adjurer adjust adjustable adjustably adjustage adjustation adjuster adjustive adjustment adjutage adjutancy adjutant adjutantship adjutorious adjutory adjutrice adjuvant Adlai adlay adless adlet Adlumia adlumidine adlumine adman admarginate admaxillary admeasure admeasurement admeasurer admedial admedian admensuration admi adminicle adminicula adminicular adminiculary adminiculate adminiculation adminiculum administer administerd administerial administrable administrant administrate administration administrational administrative administratively administrator administratorship administratress administratrices administratrix admirability admirable admirableness admirably admiral admiralship admiralty admiration admirative admirator admire admired admiredly admirer admiring admiringly admissibility admissible admissibleness admissibly admission admissive admissory admit admittable admittance admitted admittedly admittee admitter admittible admix admixtion admixture admonish admonisher admonishingly admonishment admonition admonitioner admonitionist admonitive admonitively admonitor admonitorial admonitorily admonitory admonitrix admortization adnascence adnascent adnate adnation adnephrine adnerval adneural adnex adnexal adnexed adnexitis adnexopexy adnominal adnominally adnomination adnoun ado adobe adolesce adolescence adolescency adolescent adolescently Adolph Adolphus Adonai Adonean Adonia Adoniad Adonian Adonic adonidin adonin Adoniram Adonis adonite adonitol adonize adoperate adoperation adopt adoptability adoptable adoptant adoptative adopted adoptedly adoptee adopter adoptian adoptianism adoptianist adoption adoptional adoptionism adoptionist adoptious adoptive adoptively adorability adorable adorableness adorably adoral adorally adorant Adorantes adoration adoratory adore adorer Adoretus adoringly adorn adorner adorningly adornment adosculation adossed adoulie adown Adoxa Adoxaceae adoxaceous adoxography adoxy adoze adpao adpress adpromission adradial adradially adradius Adramelech Adrammelech adread adream adreamed adreamt adrectal adrenal adrenalectomize adrenalectomy Adrenalin adrenaline adrenalize adrenalone adrenergic adrenin adrenine adrenochrome adrenocortical adrenocorticotropic adrenolysis adrenolytic adrenotropic Adrian Adriana Adriatic Adrienne adrift adrip adroit adroitly adroitness adroop adrop adrostral adrowse adrue adry adsbud adscendent adscititious adscititiously adscript adscripted adscription adscriptitious adscriptitius adscriptive adsessor adsheart adsignification adsignify adsmith adsmithing adsorb adsorbable adsorbate adsorbent adsorption adsorptive adstipulate adstipulation adstipulator adterminal adtevac adular adularescence adularia adulate adulation adulator adulatory adulatress Adullam Adullamite adult adulter adulterant adulterate adulterately adulterateness adulteration adulterator adulterer adulteress adulterine adulterize adulterous adulterously adultery adulthood adulticidal adulticide adultness adultoid adumbral adumbrant adumbrate adumbration adumbrative adumbratively adunc aduncate aduncated aduncity aduncous adusk adust adustion adustiosis Advaita advance advanceable advanced advancedness advancement advancer advancing advancingly advancive advantage advantageous advantageously advantageousness advection advectitious advective advehent advene advenience advenient Advent advential Adventism Adventist adventitia adventitious adventitiously adventitiousness adventive adventual adventure adventureful adventurement adventurer adventureship adventuresome adventuresomely adventuresomeness adventuress adventurish adventurous adventurously adventurousness adverb adverbial adverbiality adverbialize adverbially adverbiation adversant adversaria adversarious adversary adversative adversatively adverse adversely adverseness adversifoliate adversifolious adversity advert advertence advertency advertent advertently advertisable advertise advertisee advertisement advertiser advertising advice adviceful advisability advisable advisableness advisably advisal advisatory advise advised advisedly advisedness advisee advisement adviser advisership advisive advisiveness advisor advisorily advisory advocacy advocate advocateship advocatess advocation advocator advocatory advocatress advocatrice advocatrix advolution advowee advowson ady adynamia adynamic adynamy adyta adyton adytum adz adze adzer adzooks ae Aeacides Aeacus Aeaean Aechmophorus aecial Aecidiaceae aecidial aecidioform Aecidiomycetes aecidiospore aecidiostage aecidium aeciospore aeciostage aecioteliospore aeciotelium aecium aedeagus Aedes aedicula aedile aedileship aedilian aedilic aedilitian aedility aedoeagus aefald aefaldness aefaldy aefauld aegagropila aegagropile aegagrus Aegean aegerian aegeriid Aegeriidae Aegialitis aegicrania Aegina Aeginetan Aeginetic Aegipan aegirine aegirinolite aegirite aegis Aegisthus Aegithalos Aegithognathae aegithognathism aegithognathous Aegle Aegopodium aegrotant aegyptilla aegyrite aeluroid Aeluroidea aelurophobe aelurophobia aeluropodous aenach aenean aeneolithic aeneous aenigmatite aeolharmonica Aeolia Aeolian Aeolic Aeolicism aeolid Aeolidae Aeolididae aeolina aeoline aeolipile Aeolis Aeolism Aeolist aeolistic aeolodicon aeolodion aeolomelodicon aeolopantalon aeolotropic aeolotropism aeolotropy aeolsklavier aeon aeonial aeonian aeonist Aepyceros Aepyornis Aepyornithidae Aepyornithiformes Aequi Aequian Aequiculi Aequipalpia aequoreal aer aerage aerarian aerarium aerate aeration aerator aerenchyma aerenterectasia aerial aerialist aeriality aerially aerialness aeric aerical Aerides aerie aeried aerifaction aeriferous aerification aeriform aerify aero Aerobacter aerobate aerobatic aerobatics aerobe aerobian aerobic aerobically aerobiologic aerobiological aerobiologically aerobiologist aerobiology aerobion aerobiont aerobioscope aerobiosis aerobiotic aerobiotically aerobious aerobium aeroboat Aerobranchia aerobranchiate aerobus aerocamera aerocartograph Aerocharidae aerocolpos aerocraft aerocurve aerocyst aerodermectasia aerodone aerodonetic aerodonetics aerodrome aerodromics aerodynamic aerodynamical aerodynamicist aerodynamics aerodyne aeroembolism aeroenterectasia aerofoil aerogel aerogen aerogenes aerogenesis aerogenic aerogenically aerogenous aerogeologist aerogeology aerognosy aerogram aerograph aerographer aerographic aerographical aerographics aerography aerogun aerohydrodynamic aerohydropathy aerohydroplane aerohydrotherapy aerohydrous aeroides aerolite aerolith aerolithology aerolitic aerolitics aerologic aerological aerologist aerology aeromaechanic aeromancer aeromancy aeromantic aeromarine aeromechanical aeromechanics aerometeorograph aerometer aerometric aerometry aeromotor aeronat aeronaut aeronautic aeronautical aeronautically aeronautics aeronautism aeronef aeroneurosis aeropathy Aerope aeroperitoneum aeroperitonia aerophagia aerophagist aerophagy aerophane aerophilatelic aerophilatelist aerophilately aerophile aerophilic aerophilous aerophobia aerophobic aerophone aerophor aerophore aerophotography aerophysical aerophysics aerophyte aeroplane aeroplaner aeroplanist aeropleustic aeroporotomy aeroscepsis aeroscepsy aeroscope aeroscopic aeroscopically aeroscopy aerose aerosiderite aerosiderolite Aerosol aerosol aerosphere aerosporin aerostat aerostatic aerostatical aerostatics aerostation aerosteam aerotactic aerotaxis aerotechnical aerotherapeutics aerotherapy aerotonometer aerotonometric aerotonometry aerotropic aerotropism aeroyacht aeruginous aerugo aery aes Aeschylean Aeschynanthus Aeschynomene aeschynomenous Aesculaceae aesculaceous Aesculapian Aesculapius Aesculus Aesopian Aesopic aesthete aesthetic aesthetical aesthetically aesthetician aestheticism aestheticist aestheticize aesthetics aesthiology aesthophysiology Aestii aethalioid aethalium aetheogam aetheogamic aetheogamous aethered Aethionema aethogen aethrioscope Aethusa Aetian aetiogenic aetiotropic aetiotropically Aetobatidae Aetobatus Aetolian Aetomorphae aetosaur aetosaurian Aetosaurus aevia aface afaint Afar afar afara afear afeard afeared afebrile Afenil afernan afetal affa affability affable affableness affably affabrous affair affaite affect affectable affectate affectation affectationist affected affectedly affectedness affecter affectibility affectible affecting affectingly affection affectional affectionally affectionate affectionately affectionateness affectioned affectious affective affectively affectivity affeer affeerer affeerment affeir affenpinscher affenspalte afferent affettuoso affiance affiancer affiant affidation affidavit affidavy affiliable affiliate affiliation affinal affination affine affined affinely affinitative affinitatively affinite affinition affinitive affinity affirm affirmable affirmably affirmance affirmant affirmation affirmative affirmatively affirmatory affirmer affirmingly affix affixal affixation affixer affixion affixture afflation afflatus afflict afflicted afflictedness afflicter afflicting afflictingly affliction afflictionless afflictive afflictively affluence affluent affluently affluentness afflux affluxion afforce afforcement afford affordable afforest afforestable afforestation afforestment afformative affranchise affranchisement affray affrayer affreight affreighter affreightment affricate affricated affrication affricative affright affrighted affrightedly affrighter affrightful affrightfully affrightingly affrightment affront affronte affronted affrontedly affrontedness affronter affronting affrontingly affrontingness affrontive affrontiveness affrontment affuse affusion affy Afghan afghani afield Afifi afikomen afire aflagellar aflame aflare aflat aflaunt aflicker aflight afloat aflow aflower afluking aflush aflutter afoam afoot afore aforehand aforenamed aforesaid aforethought aforetime aforetimes afortiori afoul afraid afraidness Aframerican Afrasia Afrasian afreet afresh afret Afric African Africana Africanism Africanist Africanization Africanize Africanoid Africanthropus Afridi Afrikaans Afrikander Afrikanderdom Afrikanderism Afrikaner Afrogaea Afrogaean afront afrown Afshah Afshar aft aftaba after afteract afterage afterattack afterband afterbeat afterbirth afterblow afterbody afterbrain afterbreach afterbreast afterburner afterburning aftercare aftercareer aftercast aftercataract aftercause afterchance afterchrome afterchurch afterclap afterclause aftercome aftercomer aftercoming aftercooler aftercost aftercourse aftercrop aftercure afterdamp afterdate afterdays afterdeck afterdinner afterdrain afterdrops aftereffect afterend aftereye afterfall afterfame afterfeed afterfermentation afterform afterfriend afterfruits afterfuture aftergame aftergas afterglide afterglow aftergo aftergood aftergrass aftergrave aftergrief aftergrind aftergrowth afterguard afterguns afterhand afterharm afterhatch afterhelp afterhend afterhold afterhope afterhours afterimage afterimpression afterings afterking afterknowledge afterlife afterlifetime afterlight afterloss afterlove aftermark aftermarriage aftermass aftermast aftermath aftermatter aftermeal aftermilk aftermost afternight afternoon afternoons afternose afternote afteroar afterpain afterpart afterpast afterpeak afterpiece afterplanting afterplay afterpressure afterproof afterrake afterreckoning afterrider afterripening afterroll afterschool aftersend aftersensation aftershaft aftershafted aftershine aftership aftershock aftersong aftersound afterspeech afterspring afterstain afterstate afterstorm afterstrain afterstretch afterstudy afterswarm afterswarming afterswell aftertan aftertask aftertaste afterthinker afterthought afterthoughted afterthrift aftertime aftertimes aftertouch aftertreatment aftertrial afterturn aftervision afterwale afterwar afterward afterwards afterwash afterwhile afterwisdom afterwise afterwit afterwitted afterwork afterworking afterworld afterwrath afterwrist aftmost Aftonian aftosa aftward aftwards afunction afunctional afwillite Afzelia aga agabanee agacante agacella Agaces Agade Agag again against againstand agal agalactia agalactic agalactous agalawood agalaxia agalaxy Agalena Agalenidae Agalinis agalite agalloch agallochum agallop agalma agalmatolite agalwood Agama agama Agamae Agamemnon agamete agami agamian agamic agamically agamid Agamidae agamobium agamogenesis agamogenetic agamogenetically agamogony agamoid agamont agamospore agamous agamy aganglionic Aganice Aganippe Agao Agaonidae Agapanthus agape Agapemone Agapemonian Agapemonist Agapemonite agapetae agapeti agapetid Agapetidae Agapornis agar agaric agaricaceae agaricaceous Agaricales agaricic agariciform agaricin agaricine agaricoid Agaricus Agaristidae agarita Agarum agarwal agasp Agastache Agastreae agastric agastroneuria agate agateware Agatha Agathaea Agathaumas agathin Agathis agathism agathist agathodaemon agathodaemonic agathokakological agathology Agathosma agatiferous agatiform agatine agatize agatoid agaty Agau Agave agavose Agawam Agaz agaze agazed Agdistis age aged agedly agedness agee Agelacrinites Agelacrinitidae Agelaius Agelaus ageless agelessness agelong agen Agena agency agenda agendum agenesia agenesic agenesis agennetic agent agentess agential agentival agentive agentry agentship ageometrical ager Ageratum ageusia ageusic ageustia agger aggerate aggeration aggerose Aggie agglomerant agglomerate agglomerated agglomeratic agglomeration agglomerative agglomerator agglutinability agglutinable agglutinant agglutinate agglutination agglutinationist agglutinative agglutinator agglutinin agglutinize agglutinogen agglutinogenic agglutinoid agglutinoscope agglutogenic aggradation aggradational aggrade aggrandizable aggrandize aggrandizement aggrandizer aggrate aggravate aggravating aggravatingly aggravation aggravative aggravator aggregable aggregant Aggregata Aggregatae aggregate aggregately aggregateness aggregation aggregative aggregator aggregatory aggress aggressin aggression aggressionist aggressive aggressively aggressiveness aggressor aggrievance aggrieve aggrieved aggrievedly aggrievedness aggrievement aggroup aggroupment aggry aggur agha Aghan aghanee aghast aghastness Aghlabite Aghorapanthi Aghori Agialid Agib Agiel agilawood agile agilely agileness agility agillawood aging agio agiotage agist agistator agistment agistor agitable agitant agitate agitatedly agitation agitational agitationist agitative agitator agitatorial agitatrix agitprop Agkistrodon agla Aglaia aglance Aglaonema Aglaos aglaozonia aglare Aglaspis Aglauros agleaf agleam aglet aglethead agley aglimmer aglint Aglipayan Aglipayano aglitter aglobulia Aglossa aglossal aglossate aglossia aglow aglucon aglutition aglycosuric Aglypha aglyphodont Aglyphodonta Aglyphodontia aglyphous agmatine agmatology agminate agminated agnail agname agnamed agnate Agnatha agnathia agnathic Agnathostomata agnathostomatous agnathous agnatic agnatically agnation agnel Agnes agnification agnize Agnoetae Agnoete Agnoetism agnoiology Agnoite agnomen agnomical agnominal agnomination agnosia agnosis agnostic agnostically agnosticism Agnostus agnosy Agnotozoic agnus ago agog agoge agogic agogics agoho agoing agomensin agomphiasis agomphious agomphosis agon agonal agone agoniada agoniadin agoniatite Agoniatites agonic agonied agonist Agonista agonistarch agonistic agonistically agonistics agonium agonize agonizedly agonizer agonizingly Agonostomus agonothete agonothetic agony agora agoranome agoraphobia agouara agouta agouti agpaite agpaitic Agra agraffee agrah agral agrammatical agrammatism Agrania agranulocyte agranulocytosis agranuloplastic Agrapha agraphia agraphic agrarian agrarianism agrarianize agrarianly Agrauleum agre agree agreeability agreeable agreeableness agreeably agreed agreeing agreeingly agreement agreer agregation agrege agrestal agrestial agrestian agrestic agria agricere agricole agricolist agricolite agricolous agricultor agricultural agriculturalist agriculturally agriculture agriculturer agriculturist Agrilus Agrimonia agrimony agrimotor agrin Agriochoeridae Agriochoerus agriological agriologist agriology Agrionia agrionid Agrionidae Agriotes Agriotypidae Agriotypus agrise agrito agroan agrobiologic agrobiological agrobiologically agrobiologist agrobiology agrogeological agrogeologically agrogeology agrologic agrological agrologically agrology agrom Agromyza agromyzid Agromyzidae agronome agronomial agronomic agronomical agronomics agronomist agronomy agroof agrope Agropyron Agrostemma agrosteral Agrostis agrostographer agrostographic agrostographical agrostography agrostologic agrostological agrostologist agrostology agrotechny Agrotis aground agrufe agruif agrypnia agrypnotic agsam agua aguacate Aguacateca aguavina Agudist ague aguelike agueproof agueweed aguey aguilarite aguilawood aguinaldo aguirage aguish aguishly aguishness agunah agush agust agy Agyieus agynarious agynary agynous agyrate agyria Ah ah aha ahaaina ahankara Ahantchuyuk ahartalav ahaunch ahead aheap ahem Ahepatokla Ahet ahey ahimsa ahind ahint Ahir ahluwalia ahmadi Ahmadiya Ahmed Ahmet Ahnfeltia aho Ahom ahong ahorse ahorseback Ahousaht ahoy Ahrendahronon Ahriman Ahrimanian ahsan Aht Ahtena ahu ahuatle ahuehuete ahull ahum ahungered ahungry ahunt ahura ahush ahwal ahypnia ai Aias Aiawong aichmophobia aid aidable aidance aidant aide Aidenn aider Aides aidful aidless aiel aigialosaur Aigialosauridae Aigialosaurus aiglet aigremore aigrette aiguille aiguillesque aiguillette aiguilletted aikinite ail ailantery ailanthic Ailanthus ailantine ailanto aile Aileen aileron ailette Ailie ailing aillt ailment ailsyte Ailuridae ailuro ailuroid Ailuroidea Ailuropoda Ailuropus Ailurus ailweed aim Aimak aimara Aimee aimer aimful aimfully aiming aimless aimlessly aimlessness Aimore aimworthiness ainaleh ainhum ainoi ainsell aint Ainu aion aionial air Aira airable airampo airan airbound airbrained airbrush aircraft aircraftman aircraftsman aircraftswoman aircraftwoman aircrew aircrewman airdock airdrome airdrop aire Airedale airedale airer airfield airfoil airframe airfreight airfreighter airgraphics airhead airiferous airified airily airiness airing airish airless airlift airlike airliner airmail airman airmanship airmark airmarker airmonger airohydrogen airometer airpark airphobia airplane airplanist airport airproof airscape airscrew airship airsick airsickness airstrip airt airtight airtightly airtightness airward airwards airway airwayman airwoman airworthiness airworthy airy aischrolatreia aiseweed aisle aisled aisleless aisling Aissaoua Aissor aisteoir Aistopoda Aistopodes ait aitch aitchbone aitchless aitchpiece aitesis aithochroi aition aitiotropic Aitkenite Aitutakian aiwan Aix aizle Aizoaceae aizoaceous Aizoon Ajaja ajaja ajangle ajar ajari Ajatasatru ajava ajhar ajivika ajog ajoint ajowan Ajuga ajutment ak Aka aka Akal akala Akali akalimba akamatsu Akamnik Akan Akanekunik Akania Akaniaceae akaroa akasa Akawai akazga akazgine akcheh ake akeake akebi Akebia akee akeki akeley akenobeite akepiro akerite akey Akha Akhissar Akhlame Akhmimic akhoond akhrot akhyana akia Akim akimbo akin akindle akinesia akinesic akinesis akinete akinetic Akiskemikinik Akiyenik Akka Akkad Akkadian Akkadist akmudar akmuddar aknee ako akoasm akoasma akoluthia akonge Akontae Akoulalion akov akpek Akra akra Akrabattine akroasis akrochordite akroterion Aktistetae Aktistete Aktivismus Aktivist aku akuammine akule akund Akwapim Al al ala Alabama Alabaman Alabamian alabamide alabamine alabandite alabarch alabaster alabastos alabastrian alabastrine alabastrites alabastron alabastrum alacha alack alackaday alacreatine alacreatinine alacrify alacritous alacrity Alactaga alada Aladdin Aladdinize Aladfar Aladinist alaihi Alain alaite Alaki Alala alala alalite alalonga alalunga alalus Alamanni Alamannian Alamannic alameda alamo alamodality alamonti alamosite alamoth Alan alan aland Alangiaceae alangin alangine Alangium alani alanine alannah Alans alantic alantin alantol alantolactone alantolic alanyl alar Alarbus alares Alaria Alaric alarm alarmable alarmed alarmedly alarming alarmingly alarmism alarmist Alarodian alarum alary alas Alascan Alaska alaskaite Alaskan alaskite Alastair Alaster alastrim alate alated alatern alaternus alation Alauda Alaudidae alaudine Alaunian Alawi Alb alb alba albacore albahaca Albainn Alban alban Albanenses Albanensian Albania Albanian albanite Albany albarco albardine albarello albarium albaspidin albata Albatros albatross albe albedo albedograph albee albeit Alberene Albert Alberta albertin Albertina Albertine Albertinian Albertist albertite Alberto albertustaler albertype albescence albescent albespine albetad Albi Albian albicans albicant albication albiculi albification albificative albiflorous albify Albigenses Albigensian Albigensianism Albin albinal albiness albinic albinism albinistic albino albinoism albinotic albinuria Albion Albireo albite albitic albitite albitization albitophyre Albizzia albocarbon albocinereous Albococcus albocracy Alboin albolite albolith albopannin albopruinose alboranite Albrecht Albright albronze Albruna Albuca Albuginaceae albuginea albugineous albuginitis albugo album albumean albumen albumenization albumenize albumenizer albumimeter albumin albuminate albuminaturia albuminiferous albuminiform albuminimeter albuminimetry albuminiparous albuminization albuminize albuminocholia albuminofibrin albuminogenous albuminoid albuminoidal albuminolysis albuminometer albuminometry albuminone albuminorrhea albuminoscope albuminose albuminosis albuminous albuminousness albuminuria albuminuric albumoid albumoscope albumose albumosuria alburn alburnous alburnum albus albutannin Albyn Alca Alcaaba Alcae Alcaic alcaide alcalde alcaldeship alcaldia Alcaligenes alcalizate Alcalzar alcamine alcanna Alcantara Alcantarines alcarraza alcatras alcazar Alcedines Alcedinidae Alcedininae Alcedo alcelaphine Alcelaphus Alces alchemic alchemical alchemically Alchemilla alchemist alchemistic alchemistical alchemistry alchemize alchemy alchera alcheringa alchimy alchitran alchochoden Alchornea alchymy Alcibiadean Alcicornium Alcidae alcidine alcine Alcippe alclad alco alcoate alcogel alcogene alcohate alcohol alcoholate alcoholature alcoholdom alcoholemia alcoholic alcoholically alcoholicity alcoholimeter alcoholism alcoholist alcoholizable alcoholization alcoholize alcoholmeter alcoholmetric alcoholomania alcoholometer alcoholometric alcoholometrical alcoholometry alcoholophilia alcoholuria alcoholysis alcoholytic Alcor Alcoran Alcoranic Alcoranist alcornoco alcornoque alcosol Alcotate alcove alcovinometer Alcuinian alcyon Alcyonacea alcyonacean Alcyonaria alcyonarian Alcyone Alcyones Alcyoniaceae alcyonic alcyoniform Alcyonium alcyonoid aldamine aldane aldazin aldazine aldeament Aldebaran aldebaranium aldehol aldehydase aldehyde aldehydic aldehydine aldehydrol alder Alderamin alderman aldermanate aldermancy aldermaness aldermanic aldermanical aldermanity aldermanlike aldermanly aldermanry aldermanship aldern Alderney alderwoman Aldhafara Aldhafera aldim aldime aldimine Aldine aldine aldoheptose aldohexose aldoketene aldol aldolization aldolize aldononose aldopentose aldose aldoside aldoxime Aldrovanda Aldus ale Alea aleak aleatory alebench aleberry Alebion alec alecithal alecize Aleck aleconner alecost Alectoria alectoria Alectorides alectoridine alectorioid Alectoris alectoromachy alectoromancy Alectoromorphae alectoromorphous Alectoropodes alectoropodous Alectrion Alectrionidae alectryomachy alectryomancy Alectryon alecup alee alef alefnull aleft alefzero alegar alehoof alehouse Alejandro alem alemana Alemanni Alemannian Alemannic Alemannish alembic alembicate alembroth Alemite alemite alemmal alemonger alen Alencon Aleochara aleph alephs alephzero alepidote alepole alepot Aleppine Aleppo alerce alerse alert alertly alertness alesan alestake aletap aletaster Alethea alethiology alethopteis alethopteroid alethoscope aletocyte Aletris alette aleukemic Aleurites aleuritic Aleurobius Aleurodes Aleurodidae aleuromancy aleurometer aleuronat aleurone aleuronic aleuroscope Aleut Aleutian Aleutic aleutite alevin alewife Alex Alexander alexanders Alexandra Alexandreid Alexandrian Alexandrianism Alexandrina Alexandrine alexandrite Alexas Alexia alexia Alexian alexic alexin alexinic alexipharmacon alexipharmacum alexipharmic alexipharmical alexipyretic Alexis alexiteric alexiterical Alexius aleyard Aleyrodes aleyrodid Aleyrodidae Alf alf alfa alfaje alfalfa alfaqui alfaquin alfenide alfet alfilaria alfileria alfilerilla alfilerillo alfiona Alfirk alfonsin alfonso alforja Alfred Alfreda alfresco alfridaric alfridary Alfur Alfurese Alfuro alga algae algaecide algaeological algaeologist algaeology algaesthesia algaesthesis algal algalia Algaroth algarroba algarrobilla algarrobin Algarsife Algarsyf algate Algebar algebra algebraic algebraical algebraically algebraist algebraization algebraize Algedi algedo algedonic algedonics algefacient Algenib Algerian Algerine algerine Algernon algesia algesic algesis algesthesis algetic Algic algic algid algidity algidness Algieba algific algin alginate algine alginic alginuresis algiomuscular algist algivorous algocyan algodoncillo algodonite algoesthesiometer algogenic algoid Algol algolagnia algolagnic algolagnist algolagny algological algologist algology Algoman algometer algometric algometrical algometrically algometry Algomian Algomic Algonkian Algonquian Algonquin algophilia algophilist algophobia algor Algorab Algores algorism algorismic algorist algoristic algorithm algorithmic algosis algous algovite algraphic algraphy alguazil algum Algy Alhagi Alhambra Alhambraic Alhambresque Alhena alhenna alias Alibamu alibangbang alibi alibility alible Alicant Alice alichel Alichino Alicia Alick alicoche alictisal alicyclic Alida alidade Alids alien alienability alienable alienage alienate alienation alienator aliency alienee aliener alienicola alienigenate alienism alienist alienize alienor alienship aliethmoid aliethmoidal alif aliferous aliform aligerous alight align aligner alignment aligreek aliipoe alike alikeness alikewise Alikuluf Alikulufan alilonghi alima aliment alimental alimentally alimentariness alimentary alimentation alimentative alimentatively alimentativeness alimenter alimentic alimentive alimentiveness alimentotherapy alimentum alimonied alimony alin alinasal Aline alineation alintatao aliofar Alioth alipata aliped aliphatic alipterion aliptes aliptic aliquant aliquot aliseptal alish alisier Alisma Alismaceae alismaceous alismad alismal Alismales Alismataceae alismoid aliso Alison alison alisonite alisp alisphenoid alisphenoidal alist Alister alit alite alitrunk aliturgic aliturgical aliunde alive aliveness alivincular Alix aliyah alizarate alizari alizarin aljoba alk alkahest alkahestic alkahestica alkahestical Alkaid alkalamide alkalemia alkalescence alkalescency alkalescent alkali alkalic alkaliferous alkalifiable alkalify alkaligen alkaligenous alkalimeter alkalimetric alkalimetrical alkalimetrically alkalimetry alkaline alkalinity alkalinization alkalinize alkalinuria alkalizable alkalizate alkalization alkalize alkalizer alkaloid alkaloidal alkalometry alkalosis alkalous Alkalurops alkamin alkamine alkane alkanet Alkanna alkannin Alkaphrah alkapton alkaptonuria alkaptonuric alkargen alkarsin alkekengi alkene alkenna alkenyl alkermes Alkes alkide alkine alkool Alkoran Alkoranic alkoxide alkoxy alkoxyl alky alkyd alkyl alkylamine alkylate alkylation alkylene alkylic alkylidene alkylize alkylogen alkyloxy alkyne all allabuta allactite allaeanthus allagite allagophyllous allagostemonous Allah allalinite Allamanda allamotti Allan allan allanite allanitic allantiasis allantochorion allantoic allantoid allantoidal Allantoidea allantoidean allantoidian allantoin allantoinase allantoinuria allantois allantoxaidin allanturic Allasch allassotonic allative allatrate allay allayer allayment allbone Alle allecret allectory allegate allegation allegator allege allegeable allegedly allegement alleger Alleghenian Allegheny allegiance allegiancy allegiant allegoric allegorical allegorically allegoricalness allegorism allegorist allegorister allegoristic allegorization allegorize allegorizer allegory allegretto allegro allele allelic allelism allelocatalytic allelomorph allelomorphic allelomorphism allelotropic allelotropism allelotropy alleluia alleluiatic allemand allemande allemontite Allen allenarly allene Allentiac Allentiacan aller allergen allergenic allergia allergic allergin allergist allergy allerion allesthesia alleviate alleviatingly alleviation alleviative alleviator alleviatory alley alleyed alleyite alleyway allgood Allhallow Allhallowtide allheal alliable alliably Alliaceae alliaceous alliance alliancer Alliaria allicampane allice allicholly alliciency allicient Allie allied Allies allies alligate alligator alligatored allineate allineation Allionia Allioniaceae allision alliteral alliterate alliteration alliterational alliterationist alliterative alliteratively alliterativeness alliterator Allium allivalite allmouth allness Allobroges allocable allocaffeine allocatable allocate allocatee allocation allocator allochetia allochetite allochezia allochiral allochirally allochiria allochlorophyll allochroic allochroite allochromatic allochroous allochthonous allocinnamic alloclase alloclasite allocochick allocrotonic allocryptic allocute allocution allocutive allocyanine allodelphite allodesmism alloeosis alloeostropha alloeotic alloerotic alloerotism allogamous allogamy allogene allogeneity allogeneous allogenic allogenically allograph alloiogenesis alloisomer alloisomeric alloisomerism allokinesis allokinetic allokurtic allomerism allomerous allometric allometry allomorph allomorphic allomorphism allomorphite allomucic allonomous allonym allonymous allopalladium allopath allopathetic allopathetically allopathic allopathically allopathist allopathy allopatric allopatrically allopatry allopelagic allophanamide allophanates allophane allophanic allophone allophyle allophylian allophylic Allophylus allophytoid alloplasm alloplasmatic alloplasmic alloplast alloplastic alloplasty alloploidy allopolyploid allopsychic alloquial alloquialism alloquy allorhythmia allorrhyhmia allorrhythmic allosaur Allosaurus allose allosematic allosome allosyndesis allosyndetic allot allotee allotelluric allotheism Allotheria allothigene allothigenetic allothigenetically allothigenic allothigenous allothimorph allothimorphic allothogenic allothogenous allotment allotriodontia Allotriognathi allotriomorphic allotriophagia allotriophagy allotriuria allotrope allotrophic allotropic allotropical allotropically allotropicity allotropism allotropize allotropous allotropy allotrylic allottable allottee allotter allotype allotypical allover allow allowable allowableness allowably allowance allowedly allower alloxan alloxanate alloxanic alloxantin alloxuraemia alloxuremia alloxuric alloxyproteic alloy alloyage allozooid allseed allspice allthing allthorn alltud allude allure allurement allurer alluring alluringly alluringness allusion allusive allusively allusiveness alluvia alluvial alluviate alluviation alluvion alluvious alluvium allwhere allwhither allwork Allworthy Ally ally allyl allylamine allylate allylation allylene allylic allylthiourea Alma alma Almach almaciga almacigo almadia almadie almagest almagra Almain Alman almanac almandine almandite alme almeidina almemar Almerian almeriite Almida almightily almightiness almighty almique Almira almirah almochoden Almohad Almohade Almohades almoign Almon almon almond almondy almoner almonership almonry Almoravid Almoravide Almoravides almost almous alms almsdeed almsfolk almsful almsgiver almsgiving almshouse almsman almswoman almucantar almuce almud almude almug Almuredin almuten aln alnage alnager alnagership Alnaschar Alnascharism alnein alnico Alnilam alniresinol Alnitak Alnitham alniviridol alnoite alnuin Alnus alo Aloadae Alocasia alochia alod alodial alodialism alodialist alodiality alodially alodian alodiary alodification alodium alody aloe aloed aloelike aloemodin aloeroot aloesol aloeswood aloetic aloetical aloewood aloft alogia Alogian alogical alogically alogism alogy aloid aloin Alois aloisiite aloma alomancy alone aloneness along alongshore alongshoreman alongside alongst Alonso Alonsoa Alonzo aloof aloofly aloofness aloose alop alopecia Alopecias alopecist alopecoid Alopecurus alopeke Alopias Alopiidae Alosa alose Alouatta alouatte aloud alow alowe Aloxite Aloysia Aloysius alp alpaca alpasotes Alpax alpeen Alpen alpenglow alpenhorn alpenstock alpenstocker alpestral alpestrian alpestrine alpha alphabet alphabetarian alphabetic alphabetical alphabetically alphabetics alphabetiform alphabetism alphabetist alphabetization alphabetize alphabetizer Alphard alphatoluic Alphean Alphecca alphenic Alpheratz alphitomancy alphitomorphous alphol Alphonist Alphonse Alphonsine Alphonsism Alphonso alphorn alphos alphosis alphyl Alpian Alpid alpieu alpigene Alpine alpine alpinely alpinery alpinesque Alpinia Alpiniaceae Alpinism Alpinist alpist Alpujarra alqueire alquier alquifou alraun alreadiness already alright alrighty alroot alruna Alsatia Alsatian alsbachite Alshain Alsinaceae alsinaceous Alsine also alsoon Alsophila Alstonia alstonidine alstonine alstonite Alstroemeria alsweill alt Altaian Altaic Altaid Altair altaite Altamira altar altarage altared altarist altarlet altarpiece altarwise altazimuth alter alterability alterable alterableness alterably alterant alterate alteration alterative altercate altercation altercative alteregoism alteregoistic alterer alterity altern alternacy alternance alternant Alternanthera Alternaria alternariose alternate alternately alternateness alternating alternatingly alternation alternationist alternative alternatively alternativeness alternativity alternator alterne alternifoliate alternipetalous alternipinnate alternisepalous alternize alterocentric Althaea althaein Althea althea althein altheine althionic altho althorn although Altica Alticamelus altigraph altilik altiloquence altiloquent altimeter altimetrical altimetrically altimetry altin altincar Altingiaceae altingiaceous altininck altiplano altiscope altisonant altisonous altissimo altitude altitudinal altitudinarian alto altogether altogetherness altometer altoun altrices altricial altropathy altrose altruism altruist altruistic altruistically altschin altun Aluco Aluconidae Aluconinae aludel Aludra alula alular alulet Alulim alum alumbloom Alumel alumic alumiferous alumina aluminaphone aluminate alumine aluminic aluminide aluminiferous aluminiform aluminish aluminite aluminium aluminize aluminoferric aluminographic aluminography aluminose aluminosilicate aluminosis aluminosity aluminothermic aluminothermics aluminothermy aluminotype aluminous aluminum aluminyl alumish alumite alumium alumna alumnae alumnal alumni alumniate Alumnol alumnus alumohydrocalcite alumroot Alundum aluniferous alunite alunogen alupag Alur alure alurgite alushtite aluta alutaceous Alvah Alvan alvar alvearium alveary alveloz alveola alveolar alveolariform alveolary alveolate alveolated alveolation alveole alveolectomy alveoli alveoliform alveolite Alveolites alveolitis alveoloclasia alveolocondylean alveolodental alveololabial alveololingual alveolonasal alveolosubnasal alveolotomy alveolus alveus alviducous Alvin Alvina alvine Alvissmal alvite alvus alway always aly Alya alycompaine alymphia alymphopotent alypin alysson Alyssum alytarch Alytes am ama amaas Amabel amability amacratic amacrinal amacrine amadavat amadelphous Amadi Amadis amadou Amaethon Amafingo amaga amah Amahuaca amain amaister amakebe Amakosa amala amalaita amalaka Amalfian Amalfitan amalgam amalgamable amalgamate amalgamation amalgamationist amalgamative amalgamatize amalgamator amalgamist amalgamization amalgamize Amalings Amalrician amaltas amamau Amampondo Amanda amandin Amandus amang amani amania Amanist Amanita amanitin amanitine Amanitopsis amanori amanous amantillo amanuenses amanuensis amapa Amapondo amar Amara Amarantaceae amarantaceous amaranth Amaranthaceae amaranthaceous amaranthine amaranthoid Amaranthus amarantite Amarantus amarelle amarevole amargoso amarillo amarin amarine amaritude amarity amaroid amaroidal Amarth amarthritis amaryllid Amaryllidaceae amaryllidaceous amaryllideous Amaryllis amasesis amass amassable amasser amassment Amasta amasthenic amastia amasty Amatembu amaterialistic amateur amateurish amateurishly amateurishness amateurism amateurship Amati amative amatively amativeness amatol amatorial amatorially amatorian amatorious amatory amatrice amatungula amaurosis amaurotic amaze amazed amazedly amazedness amazeful amazement amazia Amazilia amazing amazingly Amazon Amazona Amazonian Amazonism amazonite Amazulu amba ambage ambagiosity ambagious ambagiously ambagiousness ambagitory ambalam amban ambar ambaree ambarella ambary ambash ambassade Ambassadeur ambassador ambassadorial ambassadorially ambassadorship ambassadress ambassage ambassy ambatch ambatoarinite ambay ambeer amber amberfish ambergris amberiferous amberite amberoid amberous ambery ambicolorate ambicoloration ambidexter ambidexterity ambidextral ambidextrous ambidextrously ambidextrousness ambience ambiency ambiens ambient ambier ambigenous ambiguity ambiguous ambiguously ambiguousness ambilateral ambilateralaterally ambilaterality ambilevous ambilian ambilogy ambiopia ambiparous ambisinister ambisinistrous ambisporangiate ambisyllabic ambit ambital ambitendency ambition ambitionist ambitionless ambitionlessly ambitious ambitiously ambitiousness ambitty ambitus ambivalence ambivalency ambivalent ambivert amble ambler ambling amblingly amblotic amblyacousia amblyaphia Amblycephalidae Amblycephalus amblychromatic Amblydactyla amblygeusia amblygon amblygonal amblygonite amblyocarpous Amblyomma amblyope amblyopia amblyopic Amblyopsidae Amblyopsis amblyoscope amblypod Amblypoda amblypodous Amblyrhynchus amblystegite Amblystoma ambo amboceptoid amboceptor Ambocoelia Amboina Amboinese ambomalleal ambon ambonite Ambonnay ambos ambosexous ambosexual ambrain ambrein ambrette Ambrica ambrite ambroid ambrology Ambrose ambrose ambrosia ambrosiac Ambrosiaceae ambrosiaceous ambrosial ambrosially Ambrosian ambrosian ambrosiate ambrosin ambrosine Ambrosio ambrosterol ambrotype ambry ambsace ambulacral ambulacriform ambulacrum ambulance ambulancer ambulant ambulate ambulatio ambulation ambulative ambulator Ambulatoria ambulatorial ambulatorium ambulatory ambuling ambulomancy amburbial ambury ambuscade ambuscader ambush ambusher ambushment Ambystoma Ambystomidae amchoor ame amebiform Amedeo ameed ameen Ameiuridae Ameiurus Ameiva Amelanchier amelcorn Amelia amelia amelification ameliorable ameliorableness ameliorant ameliorate amelioration ameliorativ ameliorative ameliorator amellus ameloblast ameloblastic amelu amelus Amen amen amenability amenable amenableness amenably amend amendable amendableness amendatory amende amender amendment amends amene amenia Amenism Amenite amenity amenorrhea amenorrheal amenorrheic amenorrhoea ament amentaceous amental amentia Amentiferae amentiferous amentiform amentulum amentum amerce amerceable amercement amercer amerciament America American Americana Americanese Americanism Americanist Americanistic Americanitis Americanization Americanize Americanizer Americanly Americanoid Americaward Americawards americium Americomania Americophobe Amerimnon Amerind Amerindian Amerindic amerism ameristic amesite Ametabola ametabole ametabolia ametabolian ametabolic ametabolism ametabolous ametaboly ametallous amethodical amethodically amethyst amethystine ametoecious ametria ametrometer ametrope ametropia ametropic ametrous Amex amgarn amhar amherstite amhran Ami ami Amia amiability amiable amiableness amiably amianth amianthiform amianthine Amianthium amianthoid amianthoidal amianthus amic amicability amicable amicableness amicably amical amice amiced amicicide amicrobic amicron amicronucleate amid amidase amidate amidation amide amidic amidid amidide amidin amidine Amidism Amidist amido amidoacetal amidoacetic amidoacetophenone amidoaldehyde amidoazo amidoazobenzene amidoazobenzol amidocaffeine amidocapric amidofluorid amidofluoride amidogen amidoguaiacol amidohexose amidoketone amidol amidomyelin amidon amidophenol amidophosphoric amidoplast amidoplastid amidopyrine amidosuccinamic amidosulphonal amidothiazole amidoxime amidoxy amidoxyl amidrazone amidship amidships amidst amidstream amidulin Amigo Amiidae amil Amiles Amiloun amimia amimide amin aminate amination amine amini aminic aminity aminization aminize amino aminoacetal aminoacetanilide aminoacetic aminoacetone aminoacetophenetidine aminoacetophenone aminoacidemia aminoaciduria aminoanthraquinone aminoazobenzene aminobarbituric aminobenzaldehyde aminobenzamide aminobenzene aminobenzoic aminocaproic aminodiphenyl aminoethionic aminoformic aminogen aminoglutaric aminoguanidine aminoid aminoketone aminolipin aminolysis aminolytic aminomalonic aminomyelin aminophenol aminoplast aminoplastic aminopropionic aminopurine aminopyrine aminoquinoline aminosis aminosuccinamic aminosulphonic aminothiophen aminovaleric aminoxylol Aminta Amintor Amioidei Amir amir Amiranha amiray amirship Amish Amishgo amiss amissibility amissible amissness Amita Amitabha amitosis amitotic amitotically amity amixia Amizilis amla amli amlikar amlong Amma amma amman Ammanite ammelide ammelin ammeline ammer ammeter Ammi Ammiaceae ammiaceous ammine amminochloride amminolysis amminolytic ammiolite ammo Ammobium ammochaeta ammochryse ammocoete ammocoetes ammocoetid Ammocoetidae ammocoetiform ammocoetoid Ammodytes Ammodytidae ammodytoid ammonal ammonate ammonation Ammonea ammonia ammoniacal ammoniacum ammoniate ammoniation ammonic ammonical ammoniemia ammonification ammonifier ammonify ammoniojarosite ammonion ammonionitrate Ammonite ammonite Ammonites Ammonitess ammonitic ammoniticone ammonitiferous Ammonitish ammonitoid Ammonitoidea ammonium ammoniuria ammonization ammono ammonobasic ammonocarbonic ammonocarbonous ammonoid Ammonoidea ammonoidean ammonolysis ammonolytic ammonolyze Ammophila ammophilous ammoresinol ammotherapy ammu ammunition amnemonic amnesia amnesic amnestic amnesty amnia amniac amniatic amnic Amnigenia amnioallantoic amniocentesis amniochorial amnioclepsis amniomancy amnion Amnionata amnionate amnionic amniorrhea Amniota amniote amniotic amniotitis amniotome amober amobyr amoeba amoebae Amoebaea amoebaean amoebaeum amoebalike amoeban amoebian amoebiasis amoebic amoebicide amoebid Amoebida Amoebidae amoebiform Amoebobacter Amoebobacterieae amoebocyte Amoebogeniae amoeboid amoeboidism amoebous amoebula amok amoke amole amolilla amomal Amomales Amomis amomum among amongst amontillado amor amorado amoraic amoraim amoral amoralism amoralist amorality amoralize Amores amoret amoretto Amoreuxia amorism amorist amoristic Amorite Amoritic Amoritish amorosity amoroso amorous amorously amorousness Amorpha amorphia amorphic amorphinism amorphism Amorphophallus amorphophyte amorphotae amorphous amorphously amorphousness amorphus amorphy amort amortisseur amortizable amortization amortize amortizement Amorua Amos Amoskeag amotion amotus amount amour amourette amovability amovable amove Amoy Amoyan Amoyese ampalaya ampalea ampangabeite ampasimenite Ampelidaceae ampelidaceous Ampelidae ampelideous Ampelis ampelite ampelitic ampelographist ampelography ampelopsidin ampelopsin Ampelopsis Ampelosicyos ampelotherapy amper amperage ampere amperemeter Amperian amperometer ampersand ampery amphanthium ampheclexis ampherotokous ampherotoky amphetamine amphiarthrodial amphiarthrosis amphiaster amphibalus Amphibia amphibial amphibian amphibichnite amphibiety amphibiological amphibiology amphibion amphibiotic Amphibiotica amphibious amphibiously amphibiousness amphibium amphiblastic amphiblastula amphiblestritis Amphibola amphibole amphibolia amphibolic amphiboliferous amphiboline amphibolite amphibolitic amphibological amphibologically amphibologism amphibology amphibolous amphiboly amphibrach amphibrachic amphibryous Amphicarpa Amphicarpaea amphicarpic amphicarpium amphicarpogenous amphicarpous amphicentric amphichroic amphichrom amphichromatic amphichrome amphicoelian amphicoelous Amphicondyla amphicondylous amphicrania amphicreatinine amphicribral amphictyon amphictyonian amphictyonic amphictyony Amphicyon Amphicyonidae amphicyrtic amphicyrtous amphicytula amphid amphide amphidesmous amphidetic amphidiarthrosis amphidiploid amphidiploidy amphidisc Amphidiscophora amphidiscophoran amphierotic amphierotism Amphigaea amphigam Amphigamae amphigamous amphigastrium amphigastrula amphigean amphigen amphigene amphigenesis amphigenetic amphigenous amphigenously amphigonic amphigonium amphigonous amphigony amphigoric amphigory amphigouri amphikaryon amphilogism amphilogy amphimacer amphimictic amphimictical amphimictically amphimixis amphimorula Amphinesian Amphineura amphineurous amphinucleus Amphion Amphionic Amphioxi Amphioxidae Amphioxides Amphioxididae amphioxus amphipeptone amphiphloic amphiplatyan Amphipleura amphiploid amphiploidy amphipneust Amphipneusta amphipneustic Amphipnous amphipod Amphipoda amphipodal amphipodan amphipodiform amphipodous amphiprostylar amphiprostyle amphiprotic amphipyrenin Amphirhina amphirhinal amphirhine amphisarca amphisbaena amphisbaenian amphisbaenic Amphisbaenidae amphisbaenoid amphisbaenous amphiscians amphiscii Amphisile Amphisilidae amphispermous amphisporangiate amphispore Amphistoma amphistomatic amphistome amphistomoid amphistomous Amphistomum amphistylar amphistylic amphistyly amphitene amphitheater amphitheatered amphitheatral amphitheatric amphitheatrical amphitheatrically amphithecial amphithecium amphithect amphithyron amphitokal amphitokous amphitoky amphitriaene amphitrichous Amphitrite amphitropal amphitropous Amphitruo Amphitryon Amphiuma Amphiumidae amphivasal amphivorous Amphizoidae amphodarch amphodelite amphodiplopia amphogenous ampholyte amphopeptone amphophil amphophile amphophilic amphophilous amphora amphoral amphore amphorette amphoric amphoricity amphoriloquy amphorophony amphorous amphoteric Amphrysian ample amplectant ampleness amplexation amplexicaudate amplexicaul amplexicauline amplexifoliate amplexus ampliate ampliation ampliative amplicative amplidyne amplification amplificative amplificator amplificatory amplifier amplify amplitude amply ampollosity ampongue ampoule ampul ampulla ampullaceous ampullar Ampullaria Ampullariidae ampullary ampullate ampullated ampulliform ampullitis ampullula amputate amputation amputational amputative amputator amputee ampyx amra amreeta amrita Amritsar amsath amsel Amsonia Amsterdamer amt amtman Amuchco amuck Amueixa amuguis amula amulet amuletic amulla amunam amurca amurcosity amurcous Amurru amusable amuse amused amusedly amusee amusement amuser amusette Amusgo amusia amusing amusingly amusingness amusive amusively amusiveness amutter amuyon amuyong amuze amvis Amy amy Amyclaean Amyclas amyelencephalia amyelencephalic amyelencephalous amyelia amyelic amyelinic amyelonic amyelous amygdal amygdala Amygdalaceae amygdalaceous amygdalase amygdalate amygdalectomy amygdalic amygdaliferous amygdaliform amygdalin amygdaline amygdalinic amygdalitis amygdaloid amygdaloidal amygdalolith amygdaloncus amygdalopathy amygdalothripsis amygdalotome amygdalotomy Amygdalus amygdonitrile amygdophenin amygdule amyl amylaceous amylamine amylan amylase amylate amylemia amylene amylenol amylic amylidene amyliferous amylin amylo amylocellulose amyloclastic amylocoagulase amylodextrin amylodyspepsia amylogen amylogenesis amylogenic amylohydrolysis amylohydrolytic amyloid amyloidal amyloidosis amyloleucite amylolysis amylolytic amylom amylometer amylon amylopectin amylophagia amylophosphate amylophosphoric amyloplast amyloplastic amyloplastid amylopsin amylose amylosis amylosynthesis amylum amyluria Amynodon amynodont amyosthenia amyosthenic amyotaxia amyotonia amyotrophia amyotrophic amyotrophy amyous Amyraldism Amyraldist Amyridaceae amyrin Amyris amyrol amyroot Amytal amyxorrhea amyxorrhoea an Ana ana Anabaena Anabantidae Anabaptism Anabaptist Anabaptistic Anabaptistical Anabaptistically Anabaptistry anabaptize Anabas anabasine anabasis anabasse anabata anabathmos anabatic anaberoga anabibazon anabiosis anabiotic Anablepidae Anableps anabo anabohitsite anabolic anabolin anabolism anabolite anabolize anabong anabranch anabrosis anabrotic anacahuita anacahuite anacalypsis anacampsis anacamptic anacamptically anacamptics anacamptometer anacanth anacanthine Anacanthini anacanthous anacara anacard Anacardiaceae anacardiaceous anacardic Anacardium anacatadidymus anacatharsis anacathartic anacephalaeosis anacephalize Anaces Anacharis anachorism anachromasis anachronic anachronical anachronically anachronism anachronismatical anachronist anachronistic anachronistical anachronistically anachronize anachronous anachronously anachueta anacid anacidity anaclasis anaclastic anaclastics Anaclete anacleticum anaclinal anaclisis anaclitic anacoenosis anacoluthia anacoluthic anacoluthically anacoluthon anaconda Anacreon Anacreontic Anacreontically anacrisis Anacrogynae anacrogynae anacrogynous anacromyodian anacrotic anacrotism anacrusis anacrustic anacrustically anaculture anacusia anacusic anacusis Anacyclus anadem anadenia anadicrotic anadicrotism anadidymus anadiplosis anadipsia anadipsic anadrom anadromous Anadyomene anaematosis anaemia anaemic anaeretic anaerobation anaerobe anaerobia anaerobian anaerobic anaerobically anaerobies anaerobion anaerobiont anaerobiosis anaerobiotic anaerobiotically anaerobious anaerobism anaerobium anaerophyte anaeroplastic anaeroplasty anaesthesia anaesthesiant anaesthetically anaesthetizer anaetiological anagalactic Anagallis anagap anagenesis anagenetic anagep anagignoskomena anaglyph anaglyphic anaglyphical anaglyphics anaglyphoscope anaglyphy anaglyptic anaglyptical anaglyptics anaglyptograph anaglyptographic anaglyptography anaglypton anagnorisis anagnost anagoge anagogic anagogical anagogically anagogics anagogy anagram anagrammatic anagrammatical anagrammatically anagrammatism anagrammatist anagrammatize anagrams anagraph anagua anagyrin anagyrine Anagyris anahau Anahita Anaitis Anakes anakinesis anakinetic anakinetomer anakinetomeric anakoluthia anakrousis anaktoron anal analabos analav analcime analcimite analcite analcitite analecta analectic analects analemma analemmatic analepsis analepsy analeptic analeptical analgen analgesia analgesic Analgesidae analgesis analgesist analgetic analgia analgic analgize analkalinity anallagmatic anallantoic Anallantoidea anallantoidean anallergic anally analogic analogical analogically analogicalness analogion analogism analogist analogistic analogize analogon analogous analogously analogousness analogue analogy analphabet analphabete analphabetic analphabetical analphabetism analysability analysable analysand analysation analyse analyser analyses analysis analyst analytic analytical analytically analytics analyzability analyzable analyzation analyze analyzer Anam anam anama anamesite anametadromous Anamirta anamirtin Anamite anamite anammonid anammonide anamnesis anamnestic anamnestically Anamnia Anamniata Anamnionata anamnionic Anamniota anamniote anamniotic anamorphic anamorphism anamorphoscope anamorphose anamorphosis anamorphote anamorphous anan anana ananaplas ananaples ananas ananda anandrarious anandria anandrous ananepionic anangioid anangular Ananias Ananism Ananite anankastic Anansi Ananta anantherate anantherous ananthous ananym anapaest anapaestic anapaestical anapaestically anapaganize anapaite anapanapa anapeiratic anaphalantiasis Anaphalis anaphase Anaphe anaphia anaphora anaphoral anaphoria anaphoric anaphorical anaphrodisia anaphrodisiac anaphroditic anaphroditous anaphylactic anaphylactin anaphylactogen anaphylactogenic anaphylactoid anaphylatoxin anaphylaxis anaphyte anaplasia anaplasis anaplasm Anaplasma anaplasmosis anaplastic anaplasty anaplerosis anaplerotic anapnea anapneic anapnoeic anapnograph anapnoic anapnometer anapodeictic anapophysial anapophysis anapsid Anapsida anapsidan Anapterygota anapterygote anapterygotism anapterygotous Anaptomorphidae Anaptomorphus anaptotic anaptychus anaptyctic anaptyctical anaptyxis anaqua anarcestean Anarcestes anarch anarchal anarchial anarchic anarchical anarchically anarchism anarchist anarchistic anarchize anarchoindividualist anarchosocialist anarchosyndicalism anarchosyndicalist anarchy anarcotin anareta anaretic anaretical anargyros anarthria anarthric anarthropod Anarthropoda anarthropodous anarthrosis anarthrous anarthrously anarthrousness anartismos anarya Anaryan Anas Anasa anasarca anasarcous Anasazi anaschistic anaseismic Anasitch anaspadias anaspalin Anaspida Anaspidacea Anaspides anastalsis anastaltic Anastasia Anastasian anastasimon anastasimos anastasis Anastasius anastate anastatic Anastatica Anastatus anastigmat anastigmatic anastomose anastomosis anastomotic Anastomus anastrophe Anastrophia Anat anatase anatexis anathema anathematic anathematical anathematically anathematism anathematization anathematize anathematizer anatheme anathemize Anatherum Anatidae anatifa Anatifae anatifer anatiferous Anatinacea Anatinae anatine anatocism Anatole Anatolian Anatolic Anatoly anatomic anatomical anatomically anatomicobiological anatomicochirurgical anatomicomedical anatomicopathologic anatomicopathological anatomicophysiologic anatomicophysiological anatomicosurgical anatomism anatomist anatomization anatomize anatomizer anatomopathologic anatomopathological anatomy anatopism anatox anatoxin anatreptic anatripsis anatripsology anatriptic anatron anatropal anatropia anatropous Anatum anaudia anaunter anaunters Anax Anaxagorean Anaxagorize anaxial Anaximandrian anaxon anaxone Anaxonia anay anazoturia anba anbury Ancerata ancestor ancestorial ancestorially ancestral ancestrally ancestress ancestrial ancestrian ancestry Ancha Anchat Anchietea anchietin anchietine anchieutectic anchimonomineral Anchisaurus Anchises Anchistea Anchistopoda anchithere anchitherioid anchor anchorable anchorage anchorate anchored anchorer anchoress anchoret anchoretic anchoretical anchoretish anchoretism anchorhold anchorite anchoritess anchoritic anchoritical anchoritish anchoritism anchorless anchorlike anchorwise anchovy Anchtherium Anchusa anchusin anchusine anchylose anchylosis ancience anciency ancient ancientism anciently ancientness ancientry ancienty ancile ancilla ancillary ancipital ancipitous Ancistrocladaceae ancistrocladaceous Ancistrocladus ancistroid ancon Ancona anconad anconagra anconal ancone anconeal anconeous anconeus anconitis anconoid ancony ancora ancoral Ancyloceras Ancylocladus Ancylodactyla ancylopod Ancylopoda Ancylostoma ancylostome ancylostomiasis Ancylostomum Ancylus Ancyrean Ancyrene and anda andabatarian Andalusian andalusite Andaman Andamanese andante andantino Andaqui Andaquian Andarko Andaste Ande Andean Anderson Andesic andesine andesinite andesite andesitic Andevo Andhra Andi Andian Andine Andira andirin andirine andiroba andiron Andoke andorite Andorobo Andorran andouillet andradite andranatomy andrarchy Andre Andrea Andreaea Andreaeaceae Andreaeales Andreas Andrena andrenid Andrenidae Andrew andrewsite Andria Andriana Andrias andric Andries androcentric androcephalous androcephalum androclinium Androclus androconium androcracy androcratic androcyte androdioecious androdioecism androdynamous androecial androecium androgametangium androgametophore androgen androgenesis androgenetic androgenic androgenous androginous androgone androgonia androgonial androgonidium androgonium Andrographis andrographolide androgynal androgynary androgyne androgyneity androgynia androgynism androgynous androgynus androgyny android androidal androkinin androl androlepsia androlepsy Andromache andromania Andromaque Andromeda Andromede andromedotoxin andromonoecious andromonoecism andromorphous andron Andronicus andronitis andropetalar andropetalous androphagous androphobia androphonomania androphore androphorous androphorum androphyll Andropogon Androsace Androscoggin androseme androsin androsphinx androsporangium androspore androsterone androtauric androtomy Andy anear aneath anecdota anecdotage anecdotal anecdotalism anecdote anecdotic anecdotical anecdotically anecdotist anele anelectric anelectrode anelectrotonic anelectrotonus anelytrous anematosis Anemia anemia anemic anemobiagraph anemochord anemoclastic anemogram anemograph anemographic anemographically anemography anemological anemology anemometer anemometric anemometrical anemometrically anemometrograph anemometrographic anemometrographically anemometry anemonal anemone Anemonella anemonin anemonol anemony anemopathy anemophile anemophilous anemophily Anemopsis anemoscope anemosis anemotaxis anemotropic anemotropism anencephalia anencephalic anencephalotrophia anencephalous anencephalus anencephaly anend anenergia anenst anent anenterous anepia anepigraphic anepigraphous anepiploic anepithymia anerethisia aneretic anergia anergic anergy anerly aneroid aneroidograph anerotic anerythroplasia anerythroplastic anes anesis anesthesia anesthesiant anesthesimeter anesthesiologist anesthesiology anesthesis anesthetic anesthetically anesthetist anesthetization anesthetize anesthetizer anesthyl anethole Anethum anetiological aneuploid aneuploidy aneuria aneuric aneurilemmic aneurin aneurism aneurismally aneurysm aneurysmal aneurysmally aneurysmatic anew Anezeh anfractuose anfractuosity anfractuous anfractuousness anfracture Angami Angara angaralite angaria angary Angdistis angekok angel Angela angelate angeldom Angeleno angelet angeleyes angelfish angelhood angelic Angelica angelica Angelical angelical angelically angelicalness Angelican angelicic angelicize angelico angelin Angelina angeline angelique angelize angellike Angelo angelocracy angelographer angelolater angelolatry angelologic angelological angelology angelomachy Angelonia angelophany angelot angelship Angelus anger angerly Angerona Angeronalia Angers Angetenar Angevin angeyok angiasthenia angico Angie angiectasis angiectopia angiemphraxis angiitis angild angili angina anginal anginiform anginoid anginose anginous angioasthenia angioataxia angioblast angioblastic angiocarditis angiocarp angiocarpian angiocarpic angiocarpous angiocavernous angiocholecystitis angiocholitis angiochondroma angioclast angiocyst angiodermatitis angiodiascopy angioelephantiasis angiofibroma angiogenesis angiogenic angiogeny angioglioma angiograph angiography angiohyalinosis angiohydrotomy angiohypertonia angiohypotonia angioid angiokeratoma angiokinesis angiokinetic angioleucitis angiolipoma angiolith angiology angiolymphitis angiolymphoma angioma angiomalacia angiomatosis angiomatous angiomegaly angiometer angiomyocardiac angiomyoma angiomyosarcoma angioneoplasm angioneurosis angioneurotic angionoma angionosis angioparalysis angioparalytic angioparesis angiopathy angiophorous angioplany angioplasty angioplerosis angiopoietic angiopressure angiorrhagia angiorrhaphy angiorrhea angiorrhexis angiosarcoma angiosclerosis angiosclerotic angioscope angiosis angiospasm angiospastic angiosperm Angiospermae angiospermal angiospermatous angiospermic angiospermous angiosporous angiostegnosis angiostenosis angiosteosis angiostomize angiostomy angiostrophy angiosymphysis angiotasis angiotelectasia angiothlipsis angiotome angiotomy angiotonic angiotonin angiotribe angiotripsy angiotrophic Angka anglaise angle angleberry angled anglehook anglepod angler Angles anglesite anglesmith angletouch angletwitch anglewing anglewise angleworm Anglian Anglic Anglican Anglicanism Anglicanize Anglicanly Anglicanum Anglicism Anglicist Anglicization anglicization Anglicize anglicize Anglification Anglify anglimaniac angling Anglish Anglist Anglistics Anglogaea Anglogaean angloid Angloman Anglomane Anglomania Anglomaniac Anglophile Anglophobe Anglophobia Anglophobiac Anglophobic Anglophobist ango Angola angolar Angolese angor Angora angostura Angouleme Angoumian Angraecum angrily angriness angrite angry angst angster Angstrom angstrom anguid Anguidae anguiform Anguilla Anguillaria Anguillidae anguilliform anguilloid Anguillula Anguillulidae Anguimorpha anguine anguineal anguineous Anguinidae anguiped Anguis anguis anguish anguished anguishful anguishous anguishously angula angular angulare angularity angularization angularize angularly angularness angulate angulated angulately angulateness angulation angulatogibbous angulatosinuous anguliferous angulinerved Anguloa angulodentate angulometer angulosity angulosplenial angulous anguria Angus angusticlave angustifoliate angustifolious angustirostrate angustisellate angustiseptal angustiseptate angwantibo anhalamine anhaline anhalonine Anhalonium anhalouidine anhang Anhanga anharmonic anhedonia anhedral anhedron anhelation anhelous anhematosis anhemolytic anhidrosis anhidrotic anhima Anhimae Anhimidae anhinga anhistic anhistous anhungered anhungry anhydrate anhydration anhydremia anhydremic anhydric anhydride anhydridization anhydridize anhydrite anhydrization anhydrize anhydroglocose anhydromyelia anhydrous anhydroxime anhysteretic ani Aniba Anice aniconic aniconism anicular anicut anidian anidiomatic anidiomatical anidrosis Aniellidae aniente anigh anight anights anil anilao anilau anile anileness anilic anilid anilide anilidic anilidoxime aniline anilinism anilinophile anilinophilous anility anilla anilopyrin anilopyrine anima animability animable animableness animadversion animadversional animadversive animadversiveness animadvert animadverter animal animalcula animalculae animalcular animalcule animalculine animalculism animalculist animalculous animalculum animalhood Animalia animalian animalic animalier animalish animalism animalist animalistic animality Animalivora animalivore animalivorous animalization animalize animally animastic animastical animate animated animatedly animately animateness animater animating animatingly animation animatism animatistic animative animatograph animator anime animi Animikean animikite animism animist animistic animize animosity animotheism animous animus anion anionic aniridia anis anisal anisalcohol anisaldehyde anisaldoxime anisamide anisandrous anisanilide anisate anischuria anise aniseed aniseikonia aniseikonic aniselike aniseroot anisette anisic anisidin anisidine anisil anisilic anisobranchiate anisocarpic anisocarpous anisocercal anisochromatic anisochromia anisocoria anisocotyledonous anisocotyly anisocratic anisocycle anisocytosis anisodactyl Anisodactyla Anisodactyli anisodactylic anisodactylous anisodont anisogamete anisogamous anisogamy anisogenous anisogeny anisognathism anisognathous anisogynous anisoin anisole anisoleucocytosis Anisomeles anisomelia anisomelus anisomeric anisomerous anisometric anisometrope anisometropia anisometropic anisomyarian Anisomyodi anisomyodian anisomyodous anisopetalous anisophyllous anisophylly anisopia anisopleural anisopleurous anisopod Anisopoda anisopodal anisopodous anisopogonous Anisoptera anisopterous anisosepalous anisospore anisostaminous anisostemonous anisosthenic anisostichous Anisostichus anisostomous anisotonic anisotropal anisotrope anisotropic anisotropical anisotropically anisotropism anisotropous anisotropy anisoyl anisum anisuria anisyl anisylidene Anita anither anitrogenous anjan Anjou ankaramite ankaratrite ankee anker ankerite ankh ankle anklebone anklejack anklet anklong Ankoli Ankou ankus ankusha ankylenteron ankyloblepharon ankylocheilia ankylodactylia ankylodontia ankyloglossia ankylomele ankylomerism ankylophobia ankylopodia ankylopoietic ankyloproctia ankylorrhinia Ankylosaurus ankylose ankylosis ankylostoma ankylotia ankylotic ankylotome ankylotomy ankylurethria ankyroid anlace anlaut Ann ann Anna anna Annabel annabergite annal annale annaline annalism annalist annalistic annalize annals Annam Annamese Annamite Annamitic Annapurna Annard annat annates annatto Anne anneal annealer annectent annection annelid Annelida annelidan Annelides annelidian annelidous annelism Annellata anneloid annerodite Anneslia annet Annette annex annexa annexable annexal annexation annexational annexationist annexer annexion annexionist annexitis annexive annexment annexure annidalin Annie Anniellidae annihilability annihilable annihilate annihilation annihilationism annihilationist annihilative annihilator annihilatory Annist annite anniversarily anniversariness anniversary anniverse annodated Annona annona Annonaceae annonaceous annotate annotater annotation annotative annotator annotatory annotine annotinous announce announceable announcement announcer annoy annoyance annoyancer annoyer annoyful annoying annoyingly annoyingness annoyment annual annualist annualize annually annuary annueler annuent annuitant annuity annul annular Annularia annularity annularly annulary Annulata annulate annulated annulation annulet annulettee annulism annullable annullate annullation annuller annulment annuloid Annuloida Annulosa annulosan annulose annulus annunciable annunciate annunciation annunciative annunciator annunciatory anoa Anobiidae anocarpous anociassociation anococcygeal anodal anode anodendron anodic anodically anodize Anodon Anodonta anodontia anodos anodyne anodynia anodynic anodynous anoegenetic anoesia anoesis anoestrous anoestrum anoestrus anoetic anogenic anogenital Anogra anoil anoine anoint anointer anointment anole anoli anolian Anolis Anolympiad anolyte Anomala anomaliflorous anomaliped anomalism anomalist anomalistic anomalistical anomalistically anomalocephalus anomaloflorous Anomalogonatae anomalogonatous Anomalon anomalonomy Anomalopteryx anomaloscope anomalotrophy anomalous anomalously anomalousness anomalure Anomaluridae Anomalurus anomaly Anomatheca Anomia Anomiacea Anomiidae anomite anomocarpous anomodont Anomodontia Anomoean Anomoeanism anomophyllous anomorhomboid anomorhomboidal anomphalous Anomura anomural anomuran anomurous anomy anon anonang anoncillo anonol anonychia anonym anonyma anonymity anonymous anonymously anonymousness anonymuncule anoopsia anoperineal anophele Anopheles Anophelinae anopheline anophoria anophthalmia anophthalmos Anophthalmus anophyte anopia anopisthographic Anopla Anoplanthus anoplocephalic anoplonemertean Anoplonemertini anoplothere Anoplotheriidae anoplotherioid Anoplotherium anoplotheroid Anoplura anopluriform anopsia anopubic anorak anorchia anorchism anorchous anorchus anorectal anorectic anorectous anorexia anorexy anorgana anorganic anorganism anorganology anormal anormality anorogenic anorth anorthic anorthite anorthitic anorthitite anorthoclase anorthographic anorthographical anorthographically anorthography anorthophyre anorthopia anorthoscope anorthose anorthosite anoscope anoscopy Anosia anosmatic anosmia anosmic anosphrasia anosphresia anospinal anostosis Anostraca anoterite another anotherkins anotia anotropia anotta anotto anotus anounou Anous anovesical anoxemia anoxemic anoxia anoxic anoxidative anoxybiosis anoxybiotic anoxyscope ansa ansar ansarian Ansarie ansate ansation Anseis Ansel Anselm Anselmian Anser anserated Anseres Anseriformes Anserinae anserine anserous anspessade ansu ansulate answer answerability answerable answerableness answerably answerer answeringly answerless answerlessly ant Anta anta antacid antacrid antadiform Antaean Antaeus antagonism antagonist antagonistic antagonistical antagonistically antagonization antagonize antagonizer antagony Antaimerina Antaios Antaiva antal antalgesic antalgol antalkali antalkaline antambulacral antanacathartic antanaclasis Antanandro antanemic antapex antaphrodisiac antaphroditic antapocha antapodosis antapology antapoplectic Antar Antara antarchism antarchist antarchistic antarchistical antarchy Antarctalia Antarctalian antarctic Antarctica antarctica antarctical antarctically Antarctogaea Antarctogaean Antares antarthritic antasphyctic antasthenic antasthmatic antatrophic antdom ante anteact anteal anteambulate anteambulation anteater antebaptismal antebath antebrachial antebrachium antebridal antecabinet antecaecal antecardium antecavern antecedaneous antecedaneously antecede antecedence antecedency antecedent antecedental antecedently antecessor antechamber antechapel Antechinomys antechoir antechurch anteclassical antecloset antecolic antecommunion anteconsonantal antecornu antecourt antecoxal antecubital antecurvature antedate antedawn antediluvial antediluvially antediluvian Antedon antedonin antedorsal antefebrile antefix antefixal anteflected anteflexed anteflexion antefurca antefurcal antefuture antegarden antegrade antehall antehistoric antehuman antehypophysis anteinitial antejentacular antejudiciary antejuramentum antelabium antelegal antelocation antelope antelopian antelucan antelude anteluminary antemarginal antemarital antemedial antemeridian antemetallic antemetic antemillennial antemingent antemortal antemundane antemural antenarial antenatal antenatalitial antenati antenave antenna antennae antennal Antennaria antennariid Antennariidae Antennarius antennary Antennata antennate antenniferous antenniform antennula antennular antennulary antennule antenodal antenoon Antenor antenumber anteoccupation anteocular anteopercle anteoperculum anteorbital antepagmenta antepagments antepalatal antepaschal antepast antepatriarchal antepectoral antepectus antependium antepenult antepenultima antepenultimate antephialtic antepileptic antepirrhema anteporch anteportico anteposition anteposthumous anteprandial antepredicament antepredicamental antepreterit antepretonic anteprohibition anteprostate anteprostatic antepyretic antequalm antereformation antereformational anteresurrection anterethic anterevolutional anterevolutionary anteriad anterior anteriority anteriorly anteriorness anteroclusion anterodorsal anteroexternal anterofixation anteroflexion anterofrontal anterograde anteroinferior anterointerior anterointernal anterolateral anterolaterally anteromedial anteromedian anteroom anteroparietal anteroposterior anteroposteriorly anteropygal anterospinal anterosuperior anteroventral anteroventrally antes antescript antesignanus antespring antestature antesternal antesternum antesunrise antesuperior antetemple antetype Anteva antevenient anteversion antevert antevocalic antewar anthecological anthecologist anthecology Antheia anthela anthelion anthelmintic anthem anthema anthemene anthemia Anthemideae anthemion Anthemis anthemwise anthemy anther Antheraea antheral Anthericum antherid antheridial antheridiophore antheridium antheriferous antheriform antherless antherogenous antheroid antherozoid antherozoidal antherozooid antherozooidal anthesis Anthesteria Anthesteriac anthesterin Anthesterion anthesterol antheximeter Anthicidae Anthidium anthill Anthinae anthine anthobiology anthocarp anthocarpous anthocephalous Anthoceros Anthocerotaceae Anthocerotales anthocerote anthochlor anthochlorine anthoclinium anthocyan anthocyanidin anthocyanin anthodium anthoecological anthoecologist anthoecology anthogenesis anthogenetic anthogenous anthography anthoid anthokyan antholite anthological anthologically anthologion anthologist anthologize anthology antholysis Antholyza anthomania anthomaniac Anthomedusae anthomedusan Anthomyia anthomyiid Anthomyiidae Anthonin Anthonomus Anthony anthood anthophagous Anthophila anthophile anthophilian anthophilous anthophobia Anthophora anthophore Anthophoridae anthophorous anthophyllite anthophyllitic Anthophyta anthophyte anthorine anthosiderite Anthospermum anthotaxis anthotaxy anthotropic anthotropism anthoxanthin Anthoxanthum Anthozoa anthozoan anthozoic anthozooid anthozoon anthracemia anthracene anthraceniferous anthrachrysone anthracia anthracic anthraciferous anthracin anthracite anthracitic anthracitiferous anthracitious anthracitism anthracitization anthracnose anthracnosis anthracocide anthracoid anthracolithic anthracomancy Anthracomarti anthracomartian Anthracomartus anthracometer anthracometric anthraconecrosis anthraconite Anthracosaurus anthracosis anthracothere Anthracotheriidae Anthracotherium anthracotic anthracyl anthradiol anthradiquinone anthraflavic anthragallol anthrahydroquinone anthramine anthranil anthranilate anthranilic anthranol anthranone anthranoyl anthranyl anthraphenone anthrapurpurin anthrapyridine anthraquinol anthraquinone anthraquinonyl anthrarufin anthratetrol anthrathiophene anthratriol anthrax anthraxolite anthraxylon Anthrenus anthribid Anthribidae Anthriscus anthrohopobiological anthroic anthrol anthrone anthropic anthropical Anthropidae anthropobiologist anthropobiology anthropocentric anthropocentrism anthropoclimatologist anthropoclimatology anthropocosmic anthropodeoxycholic Anthropodus anthropogenesis anthropogenetic anthropogenic anthropogenist anthropogenous anthropogeny anthropogeographer anthropogeographical anthropogeography anthropoglot anthropogony anthropography anthropoid anthropoidal Anthropoidea anthropoidean anthropolater anthropolatric anthropolatry anthropolite anthropolithic anthropolitic anthropological anthropologically anthropologist anthropology anthropomancy anthropomantic anthropomantist anthropometer anthropometric anthropometrical anthropometrically anthropometrist anthropometry anthropomorph Anthropomorpha anthropomorphic anthropomorphical anthropomorphically Anthropomorphidae anthropomorphism anthropomorphist anthropomorphite anthropomorphitic anthropomorphitical anthropomorphitism anthropomorphization anthropomorphize anthropomorphological anthropomorphologically anthropomorphology anthropomorphosis anthropomorphotheist anthropomorphous anthropomorphously anthroponomical anthroponomics anthroponomist anthroponomy anthropopathia anthropopathic anthropopathically anthropopathism anthropopathite anthropopathy anthropophagi anthropophagic anthropophagical anthropophaginian anthropophagism anthropophagist anthropophagistic anthropophagite anthropophagize anthropophagous anthropophagously anthropophagy anthropophilous anthropophobia anthropophuism anthropophuistic anthropophysiography anthropophysite Anthropopithecus anthropopsychic anthropopsychism Anthropos anthroposcopy anthroposociologist anthroposociology anthroposomatology anthroposophical anthroposophist anthroposophy anthropoteleoclogy anthropoteleological anthropotheism anthropotomical anthropotomist anthropotomy anthropotoxin Anthropozoic anthropurgic anthroropolith anthroxan anthroxanic anthryl anthrylene Anthurium Anthus Anthyllis anthypophora anthypophoretic Anti anti antiabolitionist antiabrasion antiabrin antiabsolutist antiacid antiadiaphorist antiaditis antiadministration antiae antiaesthetic antiager antiagglutinating antiagglutinin antiaggression antiaggressionist antiaggressive antiaircraft antialbumid antialbumin antialbumose antialcoholic antialcoholism antialcoholist antialdoxime antialexin antialien antiamboceptor antiamusement antiamylase antianaphylactogen antianaphylaxis antianarchic antianarchist antiangular antiannexation antiannexationist antianopheline antianthrax antianthropocentric antianthropomorphism antiantibody antiantidote antiantienzyme antiantitoxin antiaphrodisiac antiaphthic antiapoplectic antiapostle antiaquatic antiar Antiarcha Antiarchi antiarin Antiaris antiaristocrat antiarthritic antiascetic antiasthmatic antiastronomical antiatheism antiatheist antiatonement antiattrition antiautolysin antibacchic antibacchius antibacterial antibacteriolytic antiballooner antibalm antibank antibasilican antibenzaldoxime antiberiberin antibibliolatry antibigotry antibilious antibiont antibiosis antibiotic antibishop antiblastic antiblennorrhagic antiblock antiblue antibody antiboxing antibreakage antibridal antibromic antibubonic Antiburgher antic anticachectic antical anticalcimine anticalculous anticalligraphic anticancer anticapital anticapitalism anticapitalist anticardiac anticardium anticarious anticarnivorous anticaste anticatalase anticatalyst anticatalytic anticatalyzer anticatarrhal anticathexis anticathode anticaustic anticensorship anticentralization anticephalalgic anticeremonial anticeremonialism anticeremonialist anticheater antichlor antichlorine antichloristic antichlorotic anticholagogue anticholinergic antichoromanic antichorus antichresis antichretic antichrist antichristian antichristianity antichristianly antichrome antichronical antichronically antichthon antichurch antichurchian antichymosin anticipant anticipatable anticipate anticipation anticipative anticipatively anticipator anticipatorily anticipatory anticivic anticivism anticize anticker anticlactic anticlassical anticlassicist Anticlea anticlergy anticlerical anticlericalism anticlimactic anticlimax anticlinal anticline anticlinorium anticlockwise anticlogging anticly anticnemion anticness anticoagulant anticoagulating anticoagulative anticoagulin anticogitative anticolic anticombination anticomet anticomment anticommercial anticommunist anticomplement anticomplementary anticomplex anticonceptionist anticonductor anticonfederationist anticonformist anticonscience anticonscription anticonscriptive anticonstitutional anticonstitutionalist anticonstitutionally anticontagion anticontagionist anticontagious anticonventional anticonventionalism anticonvulsive anticor anticorn anticorrosion anticorrosive anticorset anticosine anticosmetic anticouncil anticourt anticourtier anticous anticovenanter anticovenanting anticreation anticreative anticreator anticreep anticreeper anticreeping anticrepuscular anticrepuscule anticrisis anticritic anticritique anticrochet anticrotalic anticryptic anticum anticyclic anticyclone anticyclonic anticyclonically anticynic anticytolysin anticytotoxin antidactyl antidancing antidecalogue antideflation antidemocrat antidemocratic antidemocratical antidemoniac antidetonant antidetonating antidiabetic antidiastase Antidicomarian Antidicomarianite antidictionary antidiffuser antidinic antidiphtheria antidiphtheric antidiphtherin antidiphtheritic antidisciplinarian antidivine antidivorce antidogmatic antidomestic antidominican Antidorcas antidoron antidotal antidotally antidotary antidote antidotical antidotically antidotism antidraft antidrag antidromal antidromic antidromically antidromous antidromy antidrug antiduke antidumping antidynamic antidynastic antidyscratic antidysenteric antidysuric antiecclesiastic antiecclesiastical antiedemic antieducation antieducational antiegotism antiejaculation antiemetic antiemperor antiempirical antiendotoxin antiendowment antienergistic antienthusiastic antienzyme antienzymic antiepicenter antiepileptic antiepiscopal antiepiscopist antiepithelial antierosion antierysipelas Antietam antiethnic antieugenic antievangelical antievolution antievolutionist antiexpansionist antiexporting antiextreme antieyestrain antiface antifaction antifame antifanatic antifat antifatigue antifebrile antifederal antifederalism antifederalist antifelon antifelony antifeminism antifeminist antiferment antifermentative antifertilizer antifeudal antifeudalism antifibrinolysin antifibrinolysis antifideism antifire antiflash antiflattering antiflatulent antiflux antifoam antifoaming antifogmatic antiforeign antiforeignism antiformin antifouler antifouling antifowl antifreeze antifreezing antifriction antifrictional antifrost antifundamentalist antifungin antigalactagogue antigalactic antigambling antiganting antigen antigenic antigenicity antighostism antigigmanic antiglare antiglyoxalase antigod Antigone antigonococcic Antigonon antigonorrheic Antigonus antigorite antigovernment antigraft antigrammatical antigraph antigravitate antigravitational antigropelos antigrowth Antiguan antiguggler antigyrous antihalation antiharmonist antihectic antihelix antihelminthic antihemagglutinin antihemisphere antihemoglobin antihemolysin antihemolytic antihemorrhagic antihemorrheidal antihero antiheroic antiheroism antiheterolysin antihidrotic antihierarchical antihierarchist antihistamine antihistaminic antiholiday antihormone antihuff antihum antihuman antihumbuggist antihunting antihydrophobic antihydropic antihydropin antihygienic antihylist antihypnotic antihypochondriac antihypophora antihysteric Antikamnia antikathode antikenotoxin antiketogen antiketogenesis antiketogenic antikinase antiking antiknock antilabor antilaborist antilacrosse antilacrosser antilactase antilapsarian antileague antilegalist antilegomena antilemic antilens antilepsis antileptic antilethargic antileveling Antilia antiliberal antilibration antilift antilipase antilipoid antiliquor antilithic antiliturgical antiliturgist Antillean antilobium Antilocapra Antilocapridae Antilochus antiloemic antilogarithm antilogic antilogical antilogism antilogous antilogy antiloimic Antilope Antilopinae antilottery antiluetin antilynching antilysin antilysis antilyssic antilytic antimacassar antimachine antimachinery antimagistratical antimalaria antimalarial antimallein antimaniac antimaniacal Antimarian antimark antimartyr antimask antimasker Antimason Antimasonic Antimasonry antimasque antimasquer antimasquerade antimaterialist antimaterialistic antimatrimonial antimatrimonialist antimedical antimedieval antimelancholic antimellin antimeningococcic antimension antimensium antimephitic antimere antimerger antimeric Antimerina antimerism antimeristem antimetabole antimetathesis antimetathetic antimeter antimethod antimetrical antimetropia antimetropic antimiasmatic antimicrobic antimilitarism antimilitarist antimilitary antiministerial antiministerialist antiminsion antimiscegenation antimission antimissionary antimissioner antimixing antimnemonic antimodel antimodern antimonarchial antimonarchic antimonarchical antimonarchically antimonarchicalness antimonarchist antimonate antimonial antimoniate antimoniated antimonic antimonid antimonide antimoniferous antimonious antimonite antimonium antimoniuret antimoniureted antimoniuretted antimonopolist antimonopoly antimonsoon antimony antimonyl antimoral antimoralism antimoralist antimosquito antimusical antimycotic antimythic antimythical antinarcotic antinarrative antinational antinationalist antinationalistic antinatural antinegro antinegroism antineologian antinephritic antinepotic antineuralgic antineuritic antineurotoxin antineutral antinial antinicotine antinion antinode antinoise antinome antinomian antinomianism antinomic antinomical antinomist antinomy antinormal antinosarian Antinous Antiochene Antiochian Antiochianism antiodont antiodontalgic Antiope antiopelmous antiophthalmic antiopium antiopiumist antiopiumite antioptimist antioptionist antiorgastic antiorthodox antioxidant antioxidase antioxidizer antioxidizing antioxygen antioxygenation antioxygenator antioxygenic antipacifist antipapacy antipapal antipapalist antipapism antipapist antipapistical antiparabema antiparagraphe antiparagraphic antiparallel antiparallelogram antiparalytic antiparalytical antiparasitic antiparastatitis antiparliament antiparliamental antiparliamentarist antiparliamentary antipart Antipasch Antipascha antipass antipastic Antipatharia antipatharian antipathetic antipathetical antipathetically antipatheticalness antipathic Antipathida antipathist antipathize antipathogen antipathy antipatriarch antipatriarchal antipatriot antipatriotic antipatriotism antipedal Antipedobaptism Antipedobaptist antipeduncular antipellagric antipepsin antipeptone antiperiodic antiperistalsis antiperistaltic antiperistasis antiperistatic antiperistatical antiperistatically antipersonnel antiperthite antipestilential antipetalous antipewism antiphagocytic antipharisaic antipharmic antiphase antiphilosophic antiphilosophical antiphlogistian antiphlogistic antiphon antiphonal antiphonally antiphonary antiphoner antiphonetic antiphonic antiphonical antiphonically antiphonon antiphony antiphrasis antiphrastic antiphrastical antiphrastically antiphthisic antiphthisical antiphylloxeric antiphysic antiphysical antiphysician antiplague antiplanet antiplastic antiplatelet antipleion antiplenist antiplethoric antipleuritic antiplurality antipneumococcic antipodagric antipodagron antipodal antipode antipodean antipodes antipodic antipodism antipodist antipoetic antipoints antipolar antipole antipolemist antipolitical antipollution antipolo antipolygamy antipolyneuritic antipool antipooling antipope antipopery antipopular antipopulationist antiportable antiposition antipoverty antipragmatic antipragmatist antiprecipitin antipredeterminant antiprelate antiprelatic antiprelatist antipreparedness antiprestidigitation antipriest antipriestcraft antiprime antiprimer antipriming antiprinciple antiprism antiproductionist antiprofiteering antiprohibition antiprohibitionist antiprojectivity antiprophet antiprostate antiprostatic antiprotease antiproteolysis antiprotozoal antiprudential antipruritic antipsalmist antipsoric antiptosis antipudic antipuritan antiputrefaction antiputrefactive antiputrescent antiputrid antipyic antipyonin antipyresis antipyretic Antipyrine antipyrotic antipyryl antiqua antiquarian antiquarianism antiquarianize antiquarianly antiquarism antiquartan antiquary antiquate antiquated antiquatedness antiquation antique antiquely antiqueness antiquer antiquing antiquist antiquitarian antiquity antirabic antirabies antiracemate antiracer antirachitic antirachitically antiracing antiradiating antiradiation antiradical antirailwayist antirational antirationalism antirationalist antirationalistic antirattler antireactive antirealism antirealistic antirebating antirecruiting antired antireducer antireform antireformer antireforming antireformist antireligion antireligious antiremonstrant antirennet antirennin antirent antirenter antirentism antirepublican antireservationist antirestoration antireticular antirevisionist antirevolutionary antirevolutionist antirheumatic antiricin antirickets antiritual antiritualistic antirobin antiromance antiromantic antiromanticism antiroyal antiroyalist Antirrhinum antirumor antirun antirust antisacerdotal antisacerdotalist antisaloon antisalooner antisavage antiscabious antiscale antischolastic antischool antiscians antiscientific antiscion antiscolic antiscorbutic antiscorbutical antiscrofulous antiseismic antiselene antisensitizer antisensuous antisensuousness antisepalous antisepsin antisepsis antiseptic antiseptical antiseptically antisepticism antisepticist antisepticize antiseption antiseptize antiserum antishipping Antisi antisialagogue antisialic antisiccative antisideric antisilverite antisimoniacal antisine antisiphon antisiphonal antiskeptical antiskid antiskidding antislavery antislaveryism antislickens antislip antismoking antisnapper antisocial antisocialist antisocialistic antisocialistically antisociality antisolar antisophist antisoporific antispace antispadix antispasis antispasmodic antispast antispastic antispectroscopic antispermotoxin antispiritual antispirochetic antisplasher antisplenetic antisplitting antispreader antispreading antisquama antisquatting antistadholder antistadholderian antistalling antistaphylococcic antistate antistatism antistatist antisteapsin antisterility antistes antistimulant antistock antistreptococcal antistreptococcic antistreptococcin antistreptococcus antistrike antistrophal antistrophe antistrophic antistrophically antistrophize antistrophon antistrumatic antistrumous antisubmarine antisubstance antisudoral antisudorific antisuffrage antisuffragist antisun antisupernaturalism antisupernaturalist antisurplician antisymmetrical antisyndicalism antisyndicalist antisynod antisyphilitic antitabetic antitabloid antitangent antitank antitarnish antitartaric antitax antiteetotalism antitegula antitemperance antitetanic antitetanolysin antithalian antitheft antitheism antitheist antitheistic antitheistical antitheistically antithenar antitheologian antitheological antithermic antithermin antitheses antithesis antithesism antithesize antithet antithetic antithetical antithetically antithetics antithrombic antithrombin antitintinnabularian antitobacco antitobacconal antitobacconist antitonic antitorpedo antitoxic antitoxin antitrade antitrades antitraditional antitragal antitragic antitragicus antitragus antitrismus antitrochanter antitropal antitrope antitropic antitropical antitropous antitropy antitrust antitrypsin antitryptic antituberculin antituberculosis antituberculotic antituberculous antiturnpikeism antitwilight antitypal antitype antityphoid antitypic antitypical antitypically antitypy antityrosinase antiunion antiunionist antiuratic antiurease antiusurious antiutilitarian antivaccination antivaccinationist antivaccinator antivaccinist antivariolous antivenefic antivenereal antivenin antivenom antivenomous antivermicular antivibrating antivibrator antivibratory antivice antiviral antivirus antivitalist antivitalistic antivitamin antivivisection antivivisectionist antivolition antiwar antiwarlike antiwaste antiwedge antiweed antiwit antixerophthalmic antizealot antizymic antizymotic antler antlered antlerite antlerless antlia antliate Antlid antling antluetic antodontalgic antoeci antoecian antoecians Antoinette Anton Antonella Antonia Antonina antoninianus Antonio antonomasia antonomastic antonomastical antonomastically antonomasy Antony antonym antonymous antonymy antorbital antproof antra antral antralgia antre antrectomy antrin antritis antrocele antronasal antrophore antrophose antrorse antrorsely antroscope antroscopy Antrostomus antrotome antrotomy antrotympanic antrotympanitis antrum antrustion antrustionship antship Antu antu Antum Antwerp antwise anubing Anubis anucleate anukabiet Anukit anuloma Anura anuran anuresis anuretic anuria anuric anurous anury anus anusim anusvara anutraminosa anvasser anvil anvilsmith anxietude anxiety anxious anxiously anxiousness any anybody Anychia anyhow anyone anyplace Anystidae anything anythingarian anythingarianism anyway anyways anywhen anywhere anywhereness anywheres anywhy anywise anywither Anzac Anzanian Ao aogiri Aoife aonach Aonian aorist aoristic aoristically aorta aortal aortarctia aortectasia aortectasis aortic aorticorenal aortism aortitis aortoclasia aortoclasis aortolith aortomalacia aortomalaxis aortopathy aortoptosia aortoptosis aortorrhaphy aortosclerosis aortostenosis aortotomy aosmic Aotea Aotearoa Aotes Aotus aoudad Aouellimiden Aoul apa apabhramsa apace Apache apache Apachette apachism apachite apadana apagoge apagogic apagogical apagogically apaid Apalachee apalit Apama apandry Apanteles Apantesis apanthropia apanthropy apar Aparai aparaphysate aparejo Apargia aparithmesis apart apartheid aparthrosis apartment apartmental apartness apasote apastron apatan Apatela apatetic apathetic apathetical apathetically apathic apathism apathist apathistical apathogenic Apathus apathy apatite Apatornis Apatosaurus Apaturia Apayao ape apeak apectomy apedom apehood apeiron apelet apelike apeling apellous Apemantus Apennine apenteric apepsia apepsinia apepsy apeptic aper aperch aperea aperient aperiodic aperiodically aperiodicity aperispermic aperistalsis aperitive apert apertly apertness apertometer apertural aperture apertured Aperu apery apesthesia apesthetic apesthetize Apetalae apetaloid apetalose apetalous apetalousness apetaly apex apexed aphaeresis aphaeretic aphagia aphakia aphakial aphakic Aphanapteryx Aphanes aphanesite Aphaniptera aphanipterous aphanite aphanitic aphanitism Aphanomyces aphanophyre aphanozygous Apharsathacites aphasia aphasiac aphasic Aphelandra Aphelenchus aphelian Aphelinus aphelion apheliotropic apheliotropically apheliotropism Aphelops aphemia aphemic aphengescope aphengoscope aphenoscope apheresis apheretic aphesis apheta aphetic aphetically aphetism aphetize aphicidal aphicide aphid aphides aphidian aphidicide aphidicolous aphidid Aphididae Aphidiinae aphidious Aphidius aphidivorous aphidolysin aphidophagous aphidozer aphilanthropy Aphis aphlaston aphlebia aphlogistic aphnology aphodal aphodian Aphodius aphodus aphonia aphonic aphonous aphony aphoria aphorism aphorismatic aphorismer aphorismic aphorismical aphorismos aphorist aphoristic aphoristically aphorize aphorizer Aphoruridae aphotic aphototactic aphototaxis aphototropic aphototropism Aphra aphrasia aphrite aphrizite aphrodisia aphrodisiac aphrodisiacal aphrodisian Aphrodision Aphrodistic Aphrodite Aphroditeum aphroditic Aphroditidae aphroditous aphrolite aphronia aphrosiderite aphtha Aphthartodocetae Aphthartodocetic Aphthartodocetism aphthic aphthitalite aphthoid aphthong aphthongal aphthongia aphthous aphydrotropic aphydrotropism aphyllose aphyllous aphylly aphyric Apiaca Apiaceae apiaceous Apiales apian apiarian apiarist apiary apiator apicad apical apically apices Apician apicifixed apicilar apicillary apicitis apickaback apicoectomy apicolysis apicula apicular apiculate apiculated apiculation apicultural apiculture apiculturist apiculus Apidae apiece apieces apigenin apii apiin apikoros apilary Apina Apinae Apinage apinch aping apinoid apio Apioceridae apioid apioidal apiole apiolin apiologist apiology apionol Apios apiose Apiosoma apiphobia Apis apish apishamore apishly apishness apism apitong apitpat Apium apivorous apjohnite aplacental Aplacentalia Aplacentaria Aplacophora aplacophoran aplacophorous aplanat aplanatic aplanatically aplanatism Aplanobacter aplanogamete aplanospore aplasia aplastic Aplectrum aplenty aplite aplitic aplobasalt aplodiorite Aplodontia Aplodontiidae aplomb aplome Aplopappus aploperistomatous aplostemonous aplotaxene aplotomy Apluda aplustre Aplysia apnea apneal apneic apneumatic apneumatosis Apneumona apneumonous apneustic apoaconitine apoatropine apobiotic apoblast apocaffeine apocalypse apocalypst apocalypt apocalyptic apocalyptical apocalyptically apocalypticism apocalyptism apocalyptist apocamphoric apocarp apocarpous apocarpy apocatastasis apocatastatic apocatharsis apocenter apocentric apocentricity apocha apocholic apochromat apochromatic apochromatism apocinchonine apocodeine apocopate apocopated apocopation apocope apocopic apocrenic apocrisiary Apocrita apocrustic apocryph Apocrypha apocryphal apocryphalist apocryphally apocryphalness apocryphate apocryphon Apocynaceae apocynaceous apocyneous Apocynum apod Apoda apodal apodan apodeipnon apodeixis apodema apodemal apodematal apodeme Apodes Apodia apodia apodictic apodictical apodictically apodictive Apodidae apodixis apodosis apodous apodyterium apoembryony apofenchene apogaeic apogalacteum apogamic apogamically apogamous apogamously apogamy apogeal apogean apogee apogeic apogenous apogeny apogeotropic apogeotropically apogeotropism Apogon Apogonidae apograph apographal apoharmine apohyal Apoidea apoise apojove apokrea apokreos apolar apolarity apolaustic apolegamic Apolista Apolistan Apollinarian Apollinarianism Apolline Apollo Apollonia Apollonian Apollonic apollonicon Apollonistic Apolloship Apollyon apologal apologete apologetic apologetical apologetically apologetics apologia apologist apologize apologizer apologue apology apolousis Apolysin apolysis apolytikion apomecometer apomecometry apometabolic apometabolism apometabolous apometaboly apomictic apomictical apomixis apomorphia apomorphine aponeurology aponeurorrhaphy aponeurosis aponeurositis aponeurotic aponeurotome aponeurotomy aponia aponic Aponogeton Aponogetonaceae aponogetonaceous apoop apopenptic apopetalous apophantic apophasis apophatic Apophis apophlegmatic apophonia apophony apophorometer apophthegm apophthegmatist apophyge apophylactic apophylaxis apophyllite apophyllous apophysary apophysate apophyseal apophysis apophysitis apoplasmodial apoplastogamous apoplectic apoplectical apoplectically apoplectiform apoplectoid apoplex apoplexy apopyle apoquinamine apoquinine aporetic aporetical aporhyolite aporia Aporobranchia aporobranchian Aporobranchiata Aporocactus Aporosa aporose aporphin aporphine Aporrhaidae Aporrhais aporrhaoid aporrhegma aport aportoise aposafranine aposaturn aposaturnium aposematic aposematically aposepalous aposia aposiopesis aposiopetic apositia apositic aposoro aposporogony aposporous apospory apostasis apostasy apostate apostatic apostatical apostatically apostatism apostatize apostaxis apostemate apostematic apostemation apostematous aposteme aposteriori aposthia apostil apostle apostlehood apostleship apostolate apostoless apostoli Apostolian Apostolic apostolic apostolical apostolically apostolicalness Apostolici apostolicism apostolicity apostolize Apostolos apostrophal apostrophation apostrophe apostrophic apostrophied apostrophize apostrophus Apotactic Apotactici apotelesm apotelesmatic apotelesmatical apothecal apothecary apothecaryship apothece apothecial apothecium apothegm apothegmatic apothegmatical apothegmatically apothegmatist apothegmatize apothem apotheose apotheoses apotheosis apotheosize apothesine apothesis apotome apotracheal apotropaic apotropaion apotropaism apotropous apoturmeric apotype apotypic apout apoxesis Apoxyomenos apozem apozema apozemical apozymase Appalachia Appalachian appall appalling appallingly appallment appalment appanage appanagist apparatus apparel apparelment apparence apparency apparent apparently apparentness apparition apparitional apparitor appassionata appassionato appay appeal appealability appealable appealer appealing appealingly appealingness appear appearance appearanced appearer appeasable appeasableness appeasably appease appeasement appeaser appeasing appeasingly appeasive appellability appellable appellancy appellant appellate appellation appellational appellative appellatived appellatively appellativeness appellatory appellee appellor append appendage appendaged appendalgia appendance appendancy appendant appendectomy appendical appendicalgia appendice appendicectasis appendicectomy appendices appendicial appendicious appendicitis appendicle appendicocaecostomy appendicostomy appendicular Appendicularia appendicularian Appendiculariidae Appendiculata appendiculate appendiculated appenditious appendix appendorontgenography appendotome appentice apperceive apperception apperceptionism apperceptionist apperceptionistic apperceptive apperceptively appercipient appersonation appertain appertainment appertinent appet appete appetence appetency appetent appetently appetibility appetible appetibleness appetite appetition appetitional appetitious appetitive appetize appetizement appetizer appetizingly appinite Appius applanate applanation applaud applaudable applaudably applauder applaudingly applause applausive applausively apple appleberry appleblossom applecart appledrane applegrower applejack applejohn applemonger applenut appleringy appleroot applesauce applewife applewoman appliable appliableness appliably appliance appliant applicability applicable applicableness applicably applicancy applicant applicate application applicative applicatively applicator applicatorily applicatory applied appliedly applier applique applosion applosive applot applotment apply applyingly applyment appoggiatura appoint appointable appointe appointee appointer appointive appointment appointor Appomatox Appomattoc apport apportion apportionable apportioner apportionment apposability apposable appose apposer apposiopestic apposite appositely appositeness apposition appositional appositionally appositive appositively appraisable appraisal appraise appraisement appraiser appraising appraisingly appraisive appreciable appreciably appreciant appreciate appreciatingly appreciation appreciational appreciativ appreciative appreciatively appreciativeness appreciator appreciatorily appreciatory appredicate apprehend apprehender apprehendingly apprehensibility apprehensible apprehensibly apprehension apprehensive apprehensively apprehensiveness apprend apprense apprentice apprenticehood apprenticement apprenticeship appressed appressor appressorial appressorium appreteur apprise apprize apprizement apprizer approach approachability approachabl approachable approachableness approacher approaching approachless approachment approbate approbation approbative approbativeness approbator approbatory approof appropinquate appropinquation appropinquity appropre appropriable appropriate appropriately appropriateness appropriation appropriative appropriativeness appropriator approvable approvableness approval approvance approve approvedly approvedness approvement approver approvingly approximal approximate approximately approximation approximative approximatively approximativeness approximator appulse appulsion appulsive appulsively appurtenance appurtenant apractic apraxia apraxic apricate aprication aprickle apricot April Aprilesque Apriline Aprilis apriori apriorism apriorist aprioristic apriority Aprocta aproctia aproctous apron aproneer apronful apronless apronlike apropos aprosexia aprosopia aprosopous aproterodont apse apselaphesia apselaphesis apsidal apsidally apsides apsidiole apsis apsychia apsychical apt Aptal Aptenodytes Aptera apteral apteran apterial apterium apteroid apterous Apteryges apterygial Apterygidae Apterygiformes Apterygogenea Apterygota apterygote apterygotous Apteryx Aptian Aptiana aptitude aptitudinal aptitudinally aptly aptness aptote aptotic aptyalia aptyalism aptychus Apulian apulmonic apulse apurpose Apus apyonin apyrene apyretic apyrexia apyrexial apyrexy apyrotype apyrous aqua aquabelle aquabib aquacade aquacultural aquaculture aquaemanale aquafortist aquage aquagreen aquamarine aquameter aquaplane aquapuncture aquarelle aquarellist aquaria aquarial Aquarian aquarian Aquarid Aquarii aquariist aquarium Aquarius aquarter aquascutum aquatic aquatical aquatically aquatile aquatint aquatinta aquatinter aquation aquativeness aquatone aquavalent aquavit aqueduct aqueoglacial aqueoigneous aqueomercurial aqueous aqueously aqueousness aquicolous aquicultural aquiculture aquiculturist aquifer aquiferous Aquifoliaceae aquifoliaceous aquiform Aquila Aquilaria aquilawood aquilege Aquilegia Aquilian Aquilid aquiline aquilino aquincubital aquincubitalism Aquinist aquintocubital aquintocubitalism aquiparous Aquitanian aquiver aquo aquocapsulitis aquocarbonic aquocellolitis aquopentamminecobaltic aquose aquosity aquotization aquotize ar ara Arab araba araban arabana Arabella arabesque arabesquely arabesquerie Arabian Arabianize Arabic Arabicism Arabicize Arabidopsis arability arabin arabinic arabinose arabinosic Arabis Arabism Arabist arabit arabitol arabiyeh Arabize arable Arabophil Araby araca Aracana aracanga aracari Araceae araceous arachic arachidonic arachin Arachis arachnactis Arachne arachnean arachnid Arachnida arachnidan arachnidial arachnidism arachnidium arachnism Arachnites arachnitis arachnoid arachnoidal Arachnoidea arachnoidea arachnoidean arachnoiditis arachnological arachnologist arachnology Arachnomorphae arachnophagous arachnopia arad Aradidae arado araeostyle araeosystyle Aragallus Aragonese Aragonian aragonite araguato arain Arains Arakanese arakawaite arake Arales Aralia Araliaceae araliaceous araliad Araliaephyllum aralie Araliophyllum aralkyl aralkylated Aramaean Aramaic Aramaicize Aramaism aramayoite Aramidae aramina Araminta Aramis Aramitess Aramu Aramus Aranea Araneae araneid Araneida araneidan araneiform Araneiformes Araneiformia aranein Araneina Araneoidea araneologist araneology araneous aranga arango Aranyaka aranzada arapahite Arapaho arapaima araphorostic arapunga Araquaju arar Arara arara araracanga ararao ararauna arariba araroba arati aration aratory Araua Arauan Araucan Araucanian Araucano Araucaria Araucariaceae araucarian Araucarioxylon Araujia Arauna Arawa Arawak Arawakan Arawakian arba Arbacia arbacin arbalest arbalester arbalestre arbalestrier arbalist arbalister arbalo Arbela arbiter arbitrable arbitrager arbitragist arbitral arbitrament arbitrarily arbitrariness arbitrary arbitrate arbitration arbitrational arbitrationist arbitrative arbitrator arbitratorship arbitratrix arbitrement arbitrer arbitress arboloco arbor arboraceous arboral arborary arborator arboreal arboreally arborean arbored arboreous arborescence arborescent arborescently arboresque arboret arboreta arboretum arborical arboricole arboricoline arboricolous arboricultural arboriculture arboriculturist arboriform arborist arborization arborize arboroid arborolatry arborous arborvitae arborway arbuscle arbuscula arbuscular arbuscule arbusterol arbustum arbutase arbute arbutean arbutin arbutinase arbutus arc arca Arcacea arcade Arcadia Arcadian arcadian Arcadianism Arcadianly Arcadic Arcady arcana arcanal arcane arcanite arcanum arcate arcature Arcella Arceuthobium arch archabomination archae archaecraniate Archaeoceti Archaeocyathidae Archaeocyathus archaeogeology archaeographic archaeographical archaeography archaeolatry archaeolith archaeolithic archaeologer archaeologian archaeologic archaeological archaeologically archaeologist archaeology Archaeopithecus Archaeopteris Archaeopterygiformes Archaeopteryx Archaeornis Archaeornithes archaeostoma Archaeostomata archaeostomatous archagitator archaic archaical archaically archaicism archaism archaist archaistic archaize archaizer archangel archangelic Archangelica archangelical archangelship archantagonist archantiquary archapostate archapostle archarchitect archarios archartist archband archbeacon archbeadle archbishop archbishopess archbishopric archbishopry archbotcher archboutefeu archbuffoon archbuilder archchampion archchaplain archcharlatan archcheater archchemic archchief archchronicler archcity archconfraternity archconsoler archconspirator archcorrupter archcorsair archcount archcozener archcriminal archcritic archcrown archcupbearer archdapifer archdapifership archdeacon archdeaconate archdeaconess archdeaconry archdeaconship archdean archdeanery archdeceiver archdefender archdemon archdepredator archdespot archdetective archdevil archdiocesan archdiocese archdiplomatist archdissembler archdisturber archdivine archdogmatist archdolt archdruid archducal archduchess archduchy archduke archdukedom arche archeal Archean archearl archebiosis archecclesiastic archecentric arched archegone archegonial Archegoniata Archegoniatae archegoniate archegoniophore archegonium archegony Archegosaurus archeion Archelaus Archelenis archelogy Archelon archemperor Archencephala archencephalic archenemy archengineer archenteric archenteron archeocyte Archeozoic Archer archer archeress archerfish archership archery arches archespore archesporial archesporium archetypal archetypally archetype archetypic archetypical archetypically archetypist archeunuch archeus archexorcist archfelon archfiend archfire archflamen archflatterer archfoe archfool archform archfounder archfriend archgenethliac archgod archgomeral archgovernor archgunner archhead archheart archheresy archheretic archhost archhouse archhumbug archhypocrisy archhypocrite Archiannelida archiater Archibald archibenthal archibenthic archibenthos archiblast archiblastic archiblastoma archiblastula Archibuteo archicantor archicarp archicerebrum Archichlamydeae archichlamydeous archicleistogamous archicleistogamy archicoele archicontinent archicyte archicytula Archidamus Archidiaceae archidiaconal archidiaconate archididascalian archididascalos Archidiskodon Archidium archidome Archie archiepiscopacy archiepiscopal archiepiscopally archiepiscopate archiereus archigaster archigastrula archigenesis archigonic archigonocyte archigony archiheretical archikaryon archil archilithic Archilochian archilowe archimage Archimago archimagus archimandrite Archimedean Archimedes archimime archimorphic archimorula archimperial archimperialism archimperialist archimperialistic archimpressionist Archimycetes archineuron archinfamy archinformer arching archipallial archipallium archipelagian archipelagic archipelago archipin archiplasm archiplasmic Archiplata archiprelatical archipresbyter archipterygial archipterygium archisperm Archispermae archisphere archispore archistome archisupreme archisymbolical architect architective architectonic Architectonica architectonically architectonics architectress architectural architecturalist architecturally architecture architecturesque Architeuthis architis architraval architrave architraved architypographer archival archive archivist archivolt archizoic archjockey archking archknave archleader archlecher archleveler archlexicographer archliar archlute archly archmachine archmagician archmagirist archmarshal archmediocrity archmessenger archmilitarist archmime archminister archmock archmocker archmockery archmonarch archmonarchist archmonarchy archmugwump archmurderer archmystagogue archness archocele archocystosyrinx archology archon archonship archont archontate Archontia archontic archoplasm archoplasmic archoptoma archoptosis archorrhagia archorrhea archostegnosis archostenosis archosyrinx archoverseer archpall archpapist archpastor archpatriarch archpatron archphilosopher archphylarch archpiece archpilferer archpillar archpirate archplagiarist archplagiary archplayer archplotter archplunderer archplutocrat archpoet archpolitician archpontiff archpractice archprelate archprelatic archprelatical archpresbyter archpresbyterate archpresbytery archpretender archpriest archpriesthood archpriestship archprimate archprince archprophet archprotopope archprototype archpublican archpuritan archradical archrascal archreactionary archrebel archregent archrepresentative archrobber archrogue archruler archsacrificator archsacrificer archsaint archsatrap archscoundrel archseducer archsee archsewer archshepherd archsin archsnob archspirit archspy archsteward archswindler archsynagogue archtempter archthief archtraitor archtreasurer archtreasurership archturncoat archtyrant archurger archvagabond archvampire archvestryman archvillain archvillainy archvisitor archwag archway archwench archwise archworker archworkmaster Archy archy Arcidae Arcifera arciferous arcifinious arciform arcing Arcite arcked arcking arcocentrous arcocentrum arcograph Arcos Arctalia Arctalian Arctamerican arctation Arctia arctian arctic arctically arctician arcticize arcticward arcticwards arctiid Arctiidae Arctisca Arctium Arctocephalus Arctogaea Arctogaeal Arctogaean arctoid Arctoidea arctoidean Arctomys Arctos Arctosis Arctostaphylos Arcturia Arcturus arcual arcuale arcuate arcuated arcuately arcuation arcubalist arcubalister arcula arculite ardassine Ardea Ardeae ardeb Ardeidae Ardelia ardella ardency ardennite ardent ardently ardentness Ardhamagadhi Ardhanari ardish Ardisia Ardisiaceae ardoise ardor ardri ardu arduinite arduous arduously arduousness ardurous are area areach aread areal areality Arean arear areasoner areaway Areca Arecaceae arecaceous arecaidin arecaidine arecain arecaine Arecales arecolidin arecolidine arecolin arecoline Arecuna ared areek areel arefact arefaction aregenerative aregeneratory areito arena arenaceous arenae Arenaria arenariae arenarious arenation arend arendalite areng Arenga Arenicola arenicole arenicolite arenicolous Arenig arenilitic arenoid arenose arenosity arent areocentric areographer areographic areographical areographically areography areola areolar areolate areolated areolation areole areolet areologic areological areologically areologist areology areometer areometric areometrical areometry Areopagist Areopagite Areopagitic Areopagitica Areopagus areotectonics areroscope aretaics arete Arethusa Arethuse Aretinian arfvedsonite argal argala argali argans Argante Argas argasid Argasidae Argean argeers argel Argemone argemony argenol argent argental argentamid argentamide argentamin argentamine argentate argentation argenteous argenter argenteum argentic argenticyanide argentide argentiferous Argentina Argentine argentine Argentinean Argentinian Argentinidae argentinitrate Argentinize Argentino argention argentite argentojarosite argentol argentometric argentometrically argentometry argenton argentoproteinum argentose argentous argentum Argestes arghan arghel arghool Argid argil argillaceous argilliferous argillite argillitic argilloarenaceous argillocalcareous argillocalcite argilloferruginous argilloid argillomagnesian argillous arginine argininephosphoric Argiope Argiopidae Argiopoidea Argive Argo argo Argoan argol argolet Argolian Argolic Argolid argon Argonaut Argonauta Argonautic Argonne argosy argot argotic Argovian arguable argue arguer argufier argufy Argulus argument argumental argumentation argumentatious argumentative argumentatively argumentativeness argumentator argumentatory Argus argusfish Argusianus Arguslike argute argutely arguteness Argyle Argyll Argynnis argyranthemous argyranthous Argyraspides argyria argyric argyrite argyrocephalous argyrodite Argyrol Argyroneta Argyropelecus argyrose argyrosis Argyrosomus argyrythrose arhar arhat arhatship Arhauaco arhythmic aria Ariadne Arian Ariana Arianism Arianistic Arianistical Arianize Arianizer Arianrhod aribine Arician aricine arid Arided aridge aridian aridity aridly aridness ariegite Ariel ariel arienzo Aries arietation Arietid arietinous arietta aright arightly arigue Ariidae Arikara aril ariled arillary arillate arillated arilliform arillode arillodium arilloid arillus Arimasp Arimaspian Arimathaean Ariocarpus Arioi Arioian Arion ariose arioso ariot aripple Arisaema arisard arise arisen arist arista Aristarch Aristarchian aristarchy aristate Aristeas Aristida Aristides Aristippus aristocracy aristocrat aristocratic aristocratical aristocratically aristocraticalness aristocraticism aristocraticness aristocratism aristodemocracy aristodemocratical aristogenesis aristogenetic aristogenic aristogenics Aristol Aristolochia Aristolochiaceae aristolochiaceous Aristolochiales aristolochin aristolochine aristological aristologist aristology aristomonarchy Aristophanic aristorepublicanism Aristotelian Aristotelianism Aristotelic Aristotelism aristotype aristulate arite arithmetic arithmetical arithmetically arithmetician arithmetization arithmetize arithmic arithmocracy arithmocratic arithmogram arithmograph arithmography arithmomania arithmometer Arius Arivaipa Arizona Arizonan Arizonian arizonite arjun ark Arkab Arkansan Arkansas Arkansawyer arkansite Arkite arkite arkose arkosic arksutite Arlene Arleng arles Arline arm armada armadilla Armadillididae Armadillidium armadillo Armado Armageddon Armageddonist armagnac armament armamentarium armamentary armangite armariolum armarium Armata Armatoles Armatoli armature armbone armchair armchaired armed armeniaceous Armenian Armenic Armenize Armenoid armer Armeria Armeriaceae armet armful armgaunt armhole armhoop Armida armied armiferous armiger armigeral armigerous armil armilla Armillaria armillary armillate armillated arming Arminian Arminianism Arminianize Arminianizer armipotence armipotent armisonant armisonous armistice armless armlet armload armoire armonica armor Armoracia armored armorer armorial Armoric Armorican Armorician armoried armorist armorproof armorwise armory Armouchiquois armozeen armpiece armpit armplate armrack armrest arms armscye armure army arn arna Arnaut arnberry Arne Arneb Arnebia arnee arni arnica Arnold Arnoldist Arnoseris arnotta arnotto Arnusian arnut Aro aroar aroast arock aroeira aroid aroideous Aroides aroint arolium arolla aroma aromacity aromadendrin aromatic aromatically aromaticness aromatite aromatites aromatization aromatize aromatizer aromatophor aromatophore Aronia aroon Aroras Arosaguntacook arose around arousal arouse arousement arouser arow aroxyl arpeggiando arpeggiated arpeggiation arpeggio arpeggioed arpen arpent arquerite arquifoux arracach arracacha Arracacia arrack arrah arraign arraigner arraignment arrame arrange arrangeable arrangement arranger arrant arrantly Arras arras arrased arrasene arrastra arrastre arratel arrau array arrayal arrayer arrayment arrear arrearage arrect arrector arrendation arrenotokous arrenotoky arrent arrentable arrentation arreptitious arrest arrestable arrestation arrestee arrester arresting arrestingly arrestive arrestment arrestor Arretine arrhenal Arrhenatherum arrhenoid arrhenotokous arrhenotoky arrhinia arrhizal arrhizous arrhythmia arrhythmic arrhythmical arrhythmically arrhythmous arrhythmy arriage arriba arride arridge arrie arriere Arriet arrimby arris arrish arrisways arriswise arrival arrive arriver arroba arrogance arrogancy arrogant arrogantly arrogantness arrogate arrogatingly arrogation arrogative arrogator arrojadite arrope arrosive arrow arrowbush arrowed arrowhead arrowheaded arrowleaf arrowless arrowlet arrowlike arrowplate arrowroot arrowsmith arrowstone arrowweed arrowwood arrowworm arrowy arroyo Arruague Arry Arryish Arsacid Arsacidan arsanilic arse arsedine arsenal arsenate arsenation arseneted arsenetted arsenfast arsenferratose arsenhemol arseniasis arseniate arsenic arsenical arsenicalism arsenicate arsenicism arsenicize arsenicophagy arsenide arseniferous arsenillo arseniopleite arseniosiderite arsenious arsenism arsenite arsenium arseniuret arseniureted arsenization arseno arsenobenzene arsenobenzol arsenobismite arsenoferratin arsenofuran arsenohemol arsenolite arsenophagy arsenophen arsenophenol arsenophenylglycin arsenopyrite arsenostyracol arsenotherapy arsenotungstates arsenotungstic arsenous arsenoxide arsenyl arses arsesmart arsheen arshin arshine arsine arsinic arsino Arsinoitherium arsis arsle arsmetrik arsmetrike arsnicker arsoite arson arsonate arsonation arsonic arsonist arsonite arsonium arsono arsonvalization arsphenamine arsyl arsylene Art art artaba artabe artal Artamidae Artamus artar artarine artcraft artefact artel Artemas Artemia Artemis Artemisia artemisic artemisin Artemision Artemisium arteriagra arterial arterialization arterialize arterially arteriarctia arteriasis arteriectasia arteriectasis arteriectopia arterin arterioarctia arteriocapillary arteriococcygeal arteriodialysis arteriodiastasis arteriofibrosis arteriogenesis arteriogram arteriograph arteriography arteriole arteriolith arteriology arteriolosclerosis arteriomalacia arteriometer arteriomotor arterionecrosis arteriopalmus arteriopathy arteriophlebotomy arterioplania arterioplasty arteriopressor arteriorenal arteriorrhagia arteriorrhaphy arteriorrhexis arteriosclerosis arteriosclerotic arteriospasm arteriostenosis arteriostosis arteriostrepsis arteriosympathectomy arteriotome arteriotomy arteriotrepsis arterious arteriovenous arterioversion arterioverter arteritis artery Artesian artesian artful artfully artfulness Artgum artha arthel arthemis arthragra arthral arthralgia arthralgic arthrectomy arthredema arthrempyesis arthresthesia arthritic arthritical arthriticine arthritis arthritism arthrobacterium arthrobranch arthrobranchia arthrocace arthrocarcinoma arthrocele arthrochondritis arthroclasia arthrocleisis arthroclisis arthroderm arthrodesis arthrodia arthrodial arthrodic Arthrodira arthrodiran arthrodire arthrodirous Arthrodonteae arthrodynia arthrodynic arthroempyema arthroempyesis arthroendoscopy Arthrogastra arthrogastran arthrogenous arthrography arthrogryposis arthrolite arthrolith arthrolithiasis arthrology arthromeningitis arthromere arthromeric arthrometer arthrometry arthroncus arthroneuralgia arthropathic arthropathology arthropathy arthrophlogosis arthrophyma arthroplastic arthroplasty arthropleura arthropleure arthropod Arthropoda arthropodal arthropodan arthropodous Arthropomata arthropomatous arthropterous arthropyosis arthrorheumatism arthrorrhagia arthrosclerosis arthrosia arthrosis arthrospore arthrosporic arthrosporous arthrosteitis arthrosterigma arthrostome arthrostomy Arthrostraca arthrosynovitis arthrosyrinx arthrotome arthrotomy arthrotrauma arthrotropic arthrotyphoid arthrous arthroxerosis Arthrozoa arthrozoan arthrozoic Arthur Arthurian Arthuriana artiad artichoke article articled articulability articulable articulacy articulant articular articulare articularly articulary Articulata articulate articulated articulately articulateness articulation articulationist articulative articulator articulatory articulite articulus Artie artifact artifactitious artifice artificer artificership artificial artificialism artificiality artificialize artificially artificialness artiller artillerist artillery artilleryman artilleryship artiness artinite Artinskian artiodactyl Artiodactyla artiodactylous artiphyllous artisan artisanship artist artistdom artiste artistic artistical artistically artistry artless artlessly artlessness artlet artlike Artocarpaceae artocarpad artocarpeous artocarpous Artocarpus artolater artophagous artophorion artotype artotypy Artotyrite artware arty aru Aruac arui aruke Arulo Arum arumin Aruncus arundiferous arundinaceous Arundinaria arundineous Arundo Arunta arupa arusa arusha arustle arval arvel Arverni Arvicola arvicole Arvicolinae arvicoline arvicolous arviculture arx ary Arya Aryan Aryanism Aryanization Aryanize aryballoid aryballus aryepiglottic aryl arylamine arylamino arylate arytenoid arytenoidal arzan Arzava Arzawa arzrunite arzun As as Asa asaddle asafetida Asahel asak asale asana Asaph asaphia Asaphic asaphid Asaphidae Asaphus asaprol asarabacca Asaraceae Asarh asarite asaron asarone asarotum Asarum asbest asbestic asbestiform asbestine asbestinize asbestoid asbestoidal asbestos asbestosis asbestous asbestus asbolin asbolite Ascabart Ascalabota ascan Ascanian Ascanius ascare ascariasis ascaricidal ascaricide ascarid Ascaridae ascarides Ascaridia ascaridiasis ascaridole Ascaris ascaron Ascella ascellus ascend ascendable ascendance ascendancy ascendant ascendence ascendency ascendent ascender ascendible ascending ascendingly ascension ascensional ascensionist Ascensiontide ascensive ascent ascertain ascertainable ascertainableness ascertainably ascertainer ascertainment ascescency ascescent ascetic ascetical ascetically asceticism Ascetta aschaffite ascham aschistic asci ascian Ascidia Ascidiacea Ascidiae ascidian ascidiate ascidicolous ascidiferous ascidiform ascidioid Ascidioida Ascidioidea Ascidiozoa ascidiozooid ascidium asciferous ascigerous ascii ascites ascitic ascitical ascititious asclent Asclepiad asclepiad Asclepiadaceae asclepiadaceous Asclepiadae Asclepiadean asclepiadeous Asclepiadic Asclepian Asclepias asclepidin asclepidoid Asclepieion asclepin Asclepius ascocarp ascocarpous Ascochyta ascogenous ascogone ascogonial ascogonidium ascogonium ascolichen Ascolichenes ascoma ascomycetal ascomycete Ascomycetes ascomycetous ascon Ascones ascophore ascophorous Ascophyllum ascorbic ascospore ascosporic ascosporous Ascot ascot Ascothoracica ascribable ascribe ascript ascription ascriptitii ascriptitious ascriptitius ascry ascula Ascupart ascus ascyphous Ascyrum asdic ase asearch asecretory aseethe aseismatic aseismic aseismicity aseity aselgeia asellate Aselli Asellidae Aselline Asellus asem asemasia asemia asepsis aseptate aseptic aseptically asepticism asepticize aseptify aseptol aseptolin asexual asexuality asexualization asexualize asexually asfetida ash Asha ashake ashame ashamed ashamedly ashamedness ashamnu Ashangos Ashantee Ashanti Asharasi ashberry ashcake ashen Asher asherah Asherites ashery ashes ashet ashily ashimmer ashine ashiness ashipboard Ashir ashiver Ashkenazic Ashkenazim ashkoko ashlar ashlared ashlaring ashless ashling Ashluslay ashman Ashmolean Ashochimi ashore ashpan ashpit ashplant ashraf ashrafi ashthroat Ashur ashur ashweed ashwort ashy asialia Asian Asianic Asianism Asiarch Asiarchate Asiatic Asiatical Asiatically Asiatican Asiaticism Asiaticization Asiaticize Asiatize aside asidehand asideness asiderite asideu asiento asilid Asilidae Asilus asimen Asimina asimmer asinego asinine asininely asininity asiphonate asiphonogama asitia ask askable askance askant askar askari asker askew askingly askip asklent Asklepios askos Askr aslant aslantwise aslaver asleep aslop aslope aslumber asmack asmalte asmear asmile asmoke asmolder asniffle asnort asoak asocial asok asoka asomatophyte asomatous asonant asonia asop asor asouth asp aspace aspalathus Aspalax asparagic asparagine asparaginic asparaginous asparagus asparagyl asparkle aspartate aspartic aspartyl Aspasia Aspatia aspect aspectable aspectant aspection aspectual aspen asper asperate asperation aspergation asperge asperger Asperges aspergil aspergill Aspergillaceae Aspergillales aspergilliform aspergillin aspergillosis aspergillum aspergillus Asperifoliae asperifoliate asperifolious asperite asperity aspermatic aspermatism aspermatous aspermia aspermic aspermous asperous asperously asperse aspersed asperser aspersion aspersive aspersively aspersor aspersorium aspersory Asperugo Asperula asperuloside asperulous asphalt asphaltene asphalter asphaltic asphaltite asphaltum aspheterism aspheterize asphodel Asphodelaceae Asphodeline Asphodelus asphyctic asphyctous asphyxia asphyxial asphyxiant asphyxiate asphyxiation asphyxiative asphyxiator asphyxied asphyxy aspic aspiculate aspiculous aspidate aspidiaria aspidinol Aspidiotus Aspidiske Aspidistra aspidium Aspidobranchia Aspidobranchiata aspidobranchiate Aspidocephali Aspidochirota Aspidoganoidei aspidomancy Aspidosperma aspidospermine aspirant aspirata aspirate aspiration aspirator aspiratory aspire aspirer aspirin aspiring aspiringly aspiringness aspish asplanchnic Asplenieae asplenioid Asplenium asporogenic asporogenous asporous asport asportation asporulate aspout asprawl aspread Aspredinidae Aspredo aspring asprout asquare asquat asqueal asquint asquirm ass assacu assagai assai assail assailable assailableness assailant assailer assailment Assam Assamese Assamites assapan assapanic assarion assart assary assassin assassinate assassination assassinative assassinator assassinatress assassinist assate assation assault assaultable assaulter assaut assay assayable assayer assaying assbaa asse assecuration assecurator assedation assegai asself assemblable assemblage assemble assembler assembly assemblyman assent assentaneous assentation assentatious assentator assentatorily assentatory assented assenter assentient assenting assentingly assentive assentiveness assentor assert assertable assertative asserter assertible assertion assertional assertive assertively assertiveness assertor assertorial assertorially assertoric assertorical assertorically assertorily assertory assertress assertrix assertum assess assessable assessably assessed assessee assession assessionary assessment assessor assessorial assessorship assessory asset assets assever asseverate asseveratingly asseveration asseverative asseveratively asseveratory asshead assi assibilate assibilation Assidean assident assidual assidually assiduity assiduous assiduously assiduousness assientist assiento assify assign assignability assignable assignably assignat assignation assigned assignee assigneeship assigner assignment assignor assilag assimilability assimilable assimilate assimilation assimilationist assimilative assimilativeness assimilator assimilatory Assiniboin assis Assisan assise assish assishly assishness assist assistance assistant assistanted assistantship assistency assister assistful assistive assistless assistor assize assizement assizer assizes asslike assman Assmannshauser assmanship associability associable associableness associate associated associatedness associateship association associational associationalism associationalist associationism associationist associationistic associative associatively associativeness associator associatory assoil assoilment assoilzie assonance assonanced assonant assonantal assonantic assonate Assonia assort assortative assorted assortedness assorter assortive assortment assuade assuage assuagement assuager assuasive assubjugate assuetude assumable assumably assume assumed assumedly assumer assuming assumingly assumingness assumpsit assumption Assumptionist assumptious assumptiousness assumptive assumptively assurable assurance assurant assure assured assuredly assuredness assurer assurge assurgency assurgent assuring assuringly assyntite Assyrian Assyrianize Assyriological Assyriologist Assyriologue Assyriology Assyroid assythment ast asta Astacidae Astacus Astakiwi astalk astarboard astare astart Astarte Astartian Astartidae astasia astatic astatically astaticism astatine astatize astatizer astay asteam asteatosis asteep asteer asteism astelic astely aster Asteraceae asteraceous Asterales Asterella astereognosis asteria asterial Asterias asteriated Asteriidae asterikos asterin Asterina Asterinidae asterioid Asterion asterion Asterionella asterisk asterism asterismal astern asternal Asternata asternia Asterochiton asteroid asteroidal Asteroidea asteroidean Asterolepidae Asterolepis Asterope asterophyllite Asterophyllites Asterospondyli asterospondylic asterospondylous Asteroxylaceae Asteroxylon Asterozoa asterwort asthenia asthenic asthenical asthenobiosis asthenobiotic asthenolith asthenology asthenopia asthenopic asthenosphere astheny asthma asthmatic asthmatical asthmatically asthmatoid asthmogenic asthore asthorin Astian astichous astigmatic astigmatical astigmatically astigmatism astigmatizer astigmatometer astigmatoscope astigmatoscopy astigmia astigmism astigmometer astigmometry Astilbe astilbe astint astipulate astir astite astomatal astomatous astomia astomous astonied astonish astonishedly astonisher astonishing astonishingly astonishingness astonishment astony astoop astor astound astoundable astounding astoundingly astoundment Astrachan astraddle Astraea Astraean astraean astraeid Astraeidae astraeiform astragal astragalar astragalectomy astragali astragalocalcaneal astragalocentral astragalomancy astragalonavicular astragaloscaphoid astragalotibial Astragalus astragalus astrain astrakanite astrakhan astral astrally astrand Astrantia astraphobia astrapophobia astray astream astrer astrict astriction astrictive astrictively astrictiveness Astrid astride astrier astriferous astrild astringe astringency astringent astringently astringer astroalchemist astroblast Astrocaryum astrochemist astrochemistry astrochronological astrocyte astrocytoma astrocytomata astrodiagnosis astrodome astrofel astrogeny astroglia astrognosy astrogonic astrogony astrograph astrographic astrography astroid astroite astrolabe astrolabical astrolater astrolatry astrolithology astrologaster astrologer astrologian astrologic astrological astrologically astrologistic astrologize astrologous astrology astromancer astromancy astromantic astrometeorological astrometeorologist astrometeorology astrometer astrometrical astrometry astronaut astronautics astronomer astronomic astronomical astronomically astronomics astronomize astronomy Astropecten Astropectinidae astrophil astrophobia astrophotographic astrophotography astrophotometer astrophotometrical astrophotometry astrophyllite astrophysical astrophysicist astrophysics Astrophyton astroscope Astroscopus astroscopy astrospectral astrospectroscopic astrosphere astrotheology astrut astucious astuciously astucity Astur Asturian astute astutely astuteness astylar Astylospongia Astylosternus asudden asunder Asuri aswail aswarm asway asweat aswell aswim aswing aswirl aswoon aswooned asyla asyllabia asyllabic asyllabical asylum asymbiotic asymbolia asymbolic asymbolical asymmetric asymmetrical asymmetrically Asymmetron asymmetry asymptomatic asymptote asymptotic asymptotical asymptotically asynapsis asynaptic asynartete asynartetic asynchronism asynchronous asyndesis asyndetic asyndetically asyndeton asynergia asynergy asyngamic asyngamy asyntactic asyntrophy asystole asystolic asystolism asyzygetic at Ata atabal atabeg atabek Atabrine Atacaman Atacamenan Atacamenian Atacameno atacamite atactic atactiform Ataentsic atafter Ataigal Ataiyal Atalan ataman atamasco Atamosco atangle atap ataraxia ataraxy atatschite ataunt atavi atavic atavism atavist atavistic atavistically atavus ataxaphasia ataxia ataxiagram ataxiagraph ataxiameter ataxiaphasia ataxic ataxinomic ataxite ataxonomic ataxophemia ataxy atazir atbash atchison ate Ateba atebrin atechnic atechnical atechny ateeter atef atelectasis atelectatic ateleological Ateles atelestite atelets atelier ateliosis Atellan atelo atelocardia atelocephalous ateloglossia atelognathia atelomitic atelomyelia atelopodia ateloprosopia atelorachidia atelostomia atemporal Aten Atenism Atenist Aterian ates Atestine ateuchi ateuchus Atfalati Athabasca Athabascan athalamous athalline Athamantid athanasia Athanasian Athanasianism Athanasianist athanasy athanor Athapascan athar Atharvan Athecae Athecata athecate atheism atheist atheistic atheistical atheistically atheisticalness atheize atheizer athelia atheling athematic Athena Athenaea athenaeum athenee Athenian Athenianly athenor Athens atheological atheologically atheology atheous Athericera athericeran athericerous atherine Atherinidae Atheriogaea Atheriogaean Atheris athermancy athermanous athermic athermous atheroma atheromasia atheromata atheromatosis atheromatous atherosclerosis Atherosperma Atherurus athetesis athetize athetoid athetosic athetosis athing athirst athlete athletehood athletic athletical athletically athleticism athletics athletism athletocracy athlothete athlothetes athodyd athort athrepsia athreptic athrill athrive athrob athrocyte athrocytosis athrogenic athrong athrough athwart athwarthawse athwartship athwartships athwartwise athymia athymic athymy athyreosis athyria athyrid Athyridae Athyris Athyrium athyroid athyroidism athyrosis Ati Atik Atikokania atilt atimon atinga atingle atinkle atip atis Atka Atlanta atlantad atlantal Atlantean atlantes Atlantic atlantic Atlantica Atlantid Atlantides atlantite atlantoaxial atlantodidymus atlantomastoid atlantoodontoid Atlantosaurus Atlas atlas Atlaslike atlatl atle atlee atloaxoid atloid atloidean atloidoaxoid atma atman atmiatrics atmiatry atmid atmidalbumin atmidometer atmidometry atmo atmocausis atmocautery atmoclastic atmogenic atmograph atmologic atmological atmologist atmology atmolysis atmolyzation atmolyze atmolyzer atmometer atmometric atmometry atmos atmosphere atmosphereful atmosphereless atmospheric atmospherical atmospherically atmospherics atmospherology atmostea atmosteal atmosteon Atnah atocha atocia atokal atoke atokous atoll atom atomatic atomechanics atomerg atomic atomical atomically atomician atomicism atomicity atomics atomiferous atomism atomist atomistic atomistical atomistically atomistics atomity atomization atomize atomizer atomology atomy atonable atonal atonalism atonalistic atonality atonally atone atonement atoneness atoner atonia atonic atonicity atoningly atony atop Atophan atophan atopic atopite atopy Atorai Atossa atour atoxic Atoxyl atoxyl atrabilarian atrabilarious atrabiliar atrabiliarious atrabiliary atrabilious atrabiliousness atracheate Atractaspis Atragene atragene atrail atrament atramental atramentary atramentous atraumatic Atrebates Atremata atrematous atremble atrepsy atreptic atresia atresic atresy atretic atria atrial atrichia atrichosis atrichous atrickle Atridean atrienses atriensis atriocoelomic atrioporal atriopore atrioventricular atrip Atriplex atrium atrocha atrochal atrochous atrocious atrociously atrociousness atrocity atrolactic Atropa atropaceous atropal atropamine atrophia atrophiated atrophic atrophied atrophoderma atrophy atropia atropic Atropidae atropine atropinism atropinization atropinize atropism atropous atrorubent atrosanguineous atroscine atrous atry Atrypa Atta atta Attacapan attacco attach attachable attachableness attache attached attachedly attacher attacheship attachment attack attackable attacker attacolite Attacus attacus attagen attaghan attain attainability attainable attainableness attainder attainer attainment attaint attaintment attainture Attalea attaleh Attalid attar attargul attask attemper attemperament attemperance attemperate attemperately attemperation attemperator attempt attemptability attemptable attempter attemptless attend attendance attendancy attendant attendantly attender attendingly attendment attendress attensity attent attention attentional attentive attentively attentiveness attently attenuable attenuant attenuate attenuation attenuative attenuator atter attercop attercrop atterminal attermine atterminement attern attery attest attestable attestant attestation attestative attestator attester attestive Attic attic Attical Atticism atticism Atticist Atticize atticize atticomastoid attid Attidae attinge attingence attingency attingent attire attired attirement attirer attitude attitudinal attitudinarian attitudinarianism attitudinize attitudinizer Attiwendaronk attorn attorney attorneydom attorneyism attorneyship attornment attract attractability attractable attractableness attractant attracter attractile attractingly attraction attractionally attractive attractively attractiveness attractivity attractor attrahent attrap attributable attributal attribute attributer attribution attributive attributively attributiveness attrist attrite attrited attriteness attrition attritive attritus attune attunely attunement Atuami atule atumble atune atwain atweel atween atwin atwirl atwist atwitch atwitter atwixt atwo atypic atypical atypically atypy auantic aube aubepine Aubrey Aubrietia aubrietia aubrite auburn aubusson Auca auca Aucan Aucaner Aucanian Auchenia auchenia auchenium auchlet auction auctionary auctioneer auctorial Aucuba aucuba aucupate audacious audaciously audaciousness audacity Audaean Audian Audibertia audibility audible audibleness audibly audience audiencier audient audile audio audiogenic audiogram audiologist audiology audiometer audiometric audiometry Audion audion audiophile audiphone audit audition auditive auditor auditoria auditorial auditorially auditorily auditorium auditorship auditory auditress auditual audivise audiviser audivision Audrey Audubonistic Aueto auganite auge Augean augelite augen augend auger augerer augh aught aughtlins augite augitic augitite augitophyre augment augmentable augmentation augmentationer augmentative augmentatively augmented augmentedly augmenter augmentive augur augural augurate augurial augurous augurship augury August august Augusta augustal Augustan Augusti Augustin Augustinian Augustinianism Augustinism augustly augustness Augustus auh auhuhu Auk auk auklet aula aulacocarpous Aulacodus Aulacomniaceae Aulacomnium aulae aularian auld auldfarrantlike auletai aulete auletes auletic auletrides auletris aulic aulicism auloi aulophyte aulos Aulostoma Aulostomatidae Aulostomi aulostomid Aulostomidae Aulostomus aulu aum aumaga aumail aumbry aumery aumil aumildar aumous aumrie auncel aune Aunjetitz aunt aunthood auntie auntish auntlike auntly auntsary auntship aupaka aura aurae aural aurally auramine Aurantiaceae aurantiaceous Aurantium aurantium aurar aurate aurated aureate aureately aureateness aureation aureity Aurelia aurelia aurelian Aurelius Aureocasidium aureola aureole aureolin aureoline aureomycin aureous aureously auresca aureus auribromide auric aurichalcite aurichalcum aurichloride aurichlorohydric auricle auricled auricomous Auricula auricula auriculae auricular auriculare auriculares Auricularia auricularia Auriculariaceae auriculariae Auriculariales auricularian auricularis auricularly auriculate auriculated auriculately Auriculidae auriculocranial auriculoparietal auriculotemporal auriculoventricular auriculovertical auricyanhydric auricyanic auricyanide auride auriferous aurific aurification auriform aurify Auriga aurigal aurigation aurigerous Aurigid Aurignacian aurilave aurin aurinasal auriphone auriphrygia auriphrygiate auripuncture aurir auriscalp auriscalpia auriscalpium auriscope auriscopy aurist aurite aurivorous auroauric aurobromide aurochloride aurochs aurocyanide aurodiamine auronal aurophobia aurophore aurora aurorae auroral aurorally aurore aurorean Aurorian aurorium aurotellurite aurothiosulphate aurothiosulphuric aurous aurrescu aurulent aurum aurure auryl Aus auscult auscultascope auscultate auscultation auscultative auscultator auscultatory Auscultoscope auscultoscope Aushar auslaut auslaute Ausones Ausonian auspex auspicate auspice auspices auspicial auspicious auspiciously auspiciousness auspicy Aussie Austafrican austenite austenitic Auster austere austerely austereness austerity Austerlitz Austin Austral austral Australasian australene Australia Australian Australianism Australianize Australic Australioid australite Australoid Australopithecinae australopithecine Australopithecus Australorp Austrasian Austrian Austrianize Austric austrium Austroasiatic Austrogaea Austrogaean austromancy Austronesian Austrophil Austrophile Austrophilism Austroriparian ausu ausubo autacoid autacoidal autallotriomorphic autantitypy autarch autarchic autarchical Autarchoglossa autarchy autarkic autarkical autarkist autarky aute autechoscope autecious auteciously auteciousness autecism autecologic autecological autecologically autecologist autecology autecy autem authentic authentical authentically authenticalness authenticate authentication authenticator authenticity authenticly authenticness authigene authigenetic authigenic authigenous author authorcraft authoress authorhood authorial authorially authorish authorism authoritarian authoritarianism authoritative authoritatively authoritativeness authority authorizable authorization authorize authorized authorizer authorless authorling authorly authorship authotype autism autist autistic auto autoabstract autoactivation autoactive autoaddress autoagglutinating autoagglutination autoagglutinin autoalarm autoalkylation autoallogamous autoallogamy autoanalysis autoanalytic autoantibody autoanticomplement autoantitoxin autoasphyxiation autoaspiration autoassimilation autobahn autobasidia Autobasidiomycetes autobasidiomycetous autobasidium Autobasisii autobiographal autobiographer autobiographic autobiographical autobiographically autobiographist autobiography autobiology autoblast autoboat autoboating autobolide autobus autocab autocade autocall autocamp autocamper autocamping autocar autocarist autocarpian autocarpic autocarpous autocatalepsy autocatalysis autocatalytic autocatalytically autocatalyze autocatheterism autocephalia autocephality autocephalous autocephaly autoceptive autochemical autocholecystectomy autochrome autochromy autochronograph autochthon autochthonal autochthonic autochthonism autochthonous autochthonously autochthonousness autochthony autocide autocinesis autoclasis autoclastic autoclave autocoenobium autocoherer autocoid autocollimation autocollimator autocolony autocombustible autocombustion autocomplexes autocondensation autoconduction autoconvection autoconverter autocopist autocoprophagous autocorrosion autocracy autocrat autocratic autocratical autocratically autocrator autocratoric autocratorical autocratrix autocratship autocremation autocriticism autocystoplasty autocytolysis autocytolytic autodecomposition autodepolymerization autodermic autodestruction autodetector autodiagnosis autodiagnostic autodiagrammatic autodidact autodidactic autodifferentiation autodiffusion autodigestion autodigestive autodrainage autodrome autodynamic autodyne autoecholalia autoecic autoecious autoeciously autoeciousness autoecism autoecous autoecy autoeducation autoeducative autoelectrolysis autoelectrolytic autoelectronic autoelevation autoepigraph autoepilation autoerotic autoerotically autoeroticism autoerotism autoexcitation autofecundation autofermentation autoformation autofrettage autogamic autogamous autogamy autogauge autogeneal autogenesis autogenetic autogenetically autogenic autogenous autogenously autogeny Autogiro autogiro autognosis autognostic autograft autografting autogram autograph autographal autographer autographic autographical autographically autographism autographist autographometer autography autogravure Autoharp autoharp autoheader autohemic autohemolysin autohemolysis autohemolytic autohemorrhage autohemotherapy autoheterodyne autoheterosis autohexaploid autohybridization autohypnosis autohypnotic autohypnotism autohypnotization autoicous autoignition autoimmunity autoimmunization autoinduction autoinductive autoinfection autoinfusion autoinhibited autoinoculable autoinoculation autointellectual autointoxicant autointoxication autoirrigation autoist autojigger autojuggernaut autokinesis autokinetic autokrator autolaryngoscope autolaryngoscopic autolaryngoscopy autolater autolatry autolavage autolesion autolimnetic autolith autoloading autological autologist autologous autology autoluminescence autoluminescent autolysate autolysin autolysis autolytic Autolytus autolyzate autolyze automa automacy automanual automat automata automatic automatical automatically automaticity automatin automatism automatist automatization automatize automatograph automaton automatonlike automatous automechanical automelon autometamorphosis autometric autometry automobile automobilism automobilist automobilistic automobility automolite automonstration automorph automorphic automorphically automorphism automotive automotor automower automysophobia autonegation autonephrectomy autonephrotoxin autoneurotoxin autonitridation autonoetic autonomasy autonomic autonomical autonomically autonomist autonomize autonomous autonomously autonomy autonym autoparasitism autopathic autopathography autopathy autopelagic autopepsia autophagi autophagia autophagous autophagy autophobia autophoby autophon autophone autophonoscope autophonous autophony autophotoelectric autophotograph autophotometry autophthalmoscope autophyllogeny autophyte autophytic autophytically autophytograph autophytography autopilot autoplagiarism autoplasmotherapy autoplast autoplastic autoplasty autopneumatic autopoint autopoisonous autopolar autopolo autopoloist autopolyploid autopore autoportrait autoportraiture autopositive autopotent autoprogressive autoproteolysis autoprothesis autopsic autopsical autopsy autopsychic autopsychoanalysis autopsychology autopsychorhythmia autopsychosis autoptic autoptical autoptically autopticity autopyotherapy autoracemization autoradiograph autoradiographic autoradiography autoreduction autoregenerator autoregulation autoreinfusion autoretardation autorhythmic autorhythmus autoriser autorotation autorrhaphy Autosauri Autosauria autoschediasm autoschediastic autoschediastical autoschediastically autoschediaze autoscience autoscope autoscopic autoscopy autosender autosensitization autosensitized autosepticemia autoserotherapy autoserum autosexing autosight autosign autosite autositic autoskeleton autosled autoslip autosomal autosomatognosis autosomatognostic autosome autosoteric autosoterism autospore autosporic autospray autostability autostage autostandardization autostarter autostethoscope autostylic autostylism autostyly autosuggestibility autosuggestible autosuggestion autosuggestionist autosuggestive autosuppression autosymbiontic autosymbolic autosymbolical autosymbolically autosymnoia Autosyn autosyndesis autotelegraph autotelic autotetraploid autotetraploidy autothaumaturgist autotheater autotheism autotheist autotherapeutic autotherapy autothermy autotomic autotomize autotomous autotomy autotoxaemia autotoxic autotoxication autotoxicity autotoxicosis autotoxin autotoxis autotractor autotransformer autotransfusion autotransplant autotransplantation autotrepanation autotriploid autotriploidy autotroph autotrophic autotrophy autotropic autotropically autotropism autotruck autotuberculin autoturning autotype autotyphization autotypic autotypography autotypy autourine autovaccination autovaccine autovalet autovalve autovivisection autoxeny autoxidation autoxidator autoxidizability autoxidizable autoxidize autoxidizer autozooid autrefois autumn autumnal autumnally autumnian autumnity Autunian autunite auxamylase auxanogram auxanology auxanometer auxesis auxetic auxetical auxetically auxiliar auxiliarly auxiliary auxiliate auxiliation auxiliator auxiliatory auxilium auximone auxin auxinic auxinically auxoaction auxoamylase auxoblast auxobody auxocardia auxochrome auxochromic auxochromism auxochromous auxocyte auxoflore auxofluor auxograph auxographic auxohormone auxology auxometer auxospore auxosubstance auxotonic auxotox ava avadana avadavat avadhuta avahi avail availability available availableness availably availingly availment aval avalanche avalent avalvular Avanguardisti avania avanious Avanti avanturine Avar Avaradrano avaremotemo Avarian avarice avaricious avariciously avariciousness Avarish Avars avascular avast avaunt Ave ave avellan avellane avellaneous avellano avelonge aveloz Avena avenaceous avenage avenalin avener avenge avengeful avengement avenger avengeress avenging avengingly avenin avenolith avenous avens aventail Aventine aventurine avenue aver avera average averagely averager averah averil averin averment Avernal Avernus averrable averral Averrhoa Averroism Averroist Averroistic averruncate averruncation averruncator aversant aversation averse aversely averseness aversion aversive avert avertable averted avertedly averter avertible Avertin Avery Aves Avesta Avestan avian avianization avianize aviarist aviary aviate aviatic aviation aviator aviatorial aviatoriality aviatory aviatress aviatrices aviatrix Avicennia Avicenniaceae Avicennism avichi avicide avick avicolous Avicula avicular Avicularia avicularia avicularian Aviculariidae Avicularimorphae avicularium Aviculidae aviculture aviculturist avid avidious avidiously avidity avidly avidous avidya avifauna avifaunal avigate avigation avigator Avignonese avijja Avikom avine aviolite avirulence avirulent Avis aviso avital avitaminosis avitaminotic avitic avives avizandum avo avocado avocate avocation avocative avocatory avocet avodire avogadrite avoid avoidable avoidably avoidance avoider avoidless avoidment avoirdupois avolate avolation avolitional avondbloem avouch avouchable avoucher avouchment avourneen avow avowable avowableness avowably avowal avowance avowant avowed avowedly avowedness avower avowry avoyer avoyership Avshar avulse avulsion avuncular avunculate aw awa Awabakal awabi Awadhi awaft awag await awaiter Awaitlala awakable awake awaken awakenable awakener awakening awakeningly awakenment awald awalim awalt Awan awane awanting awapuhi award awardable awarder awardment aware awaredom awareness awaruite awash awaste awat awatch awater awave away awayness awber awd awe awearied aweary aweather aweband awedness awee aweek aweel aweigh Awellimiden awesome awesomely awesomeness awest aweto awfu awful awfully awfulness awheel awheft awhet awhile awhir awhirl awide awiggle awikiwiki awin awing awink awiwi awkward awkwardish awkwardly awkwardness awl awless awlessness awlwort awmous awn awned awner awning awninged awnless awnlike awny awoke Awol awork awreck awrist awrong awry Awshar ax axal axbreaker axe axed Axel axenic axes axfetch axhammer axhammered axhead axial axiality axially axiate axiation Axifera axiform axifugal axil axile axilemma axilemmata axilla axillae axillant axillar axillary axine axinite axinomancy axiolite axiolitic axiological axiologically axiologist axiology axiom axiomatic axiomatical axiomatically axiomatization axiomatize axion axiopisty Axis axis axised axisymmetric axisymmetrical axite axle axled axlesmith axletree axmaker axmaking axman axmanship axmaster Axminster axodendrite axofugal axogamy axoid axoidean axolemma axolotl axolysis axometer axometric axometry axon axonal axoneure axoneuron Axonia Axonolipa axonolipous axonometric axonometry Axonophora axonophorous Axonopus axonost axopetal axophyte axoplasm axopodia axopodium axospermous axostyle axseed axstone axtree Axumite axunge axweed axwise axwort Ay ay ayacahuite ayah Ayahuca Aydendron aye ayegreen ayelp ayenbite ayin Aylesbury ayless aylet ayllu Aymara Aymaran Aymoro ayond ayont ayous Ayrshire Aythya ayu Ayubite Ayyubid azadrachta azafrin Azalea azalea Azande azarole azedarach azelaic azelate Azelfafage azeotrope azeotropic azeotropism azeotropy Azerbaijanese Azerbaijani Azerbaijanian Azha azide aziethane Azilian azilut Azimech azimene azimethylene azimide azimine azimino aziminobenzene azimuth azimuthal azimuthally azine aziola azlactone azo azobacter azobenzene azobenzil azobenzoic azobenzol azoblack azoch azocochineal azocoralline azocorinth azocyanide azocyclic azodicarboxylic azodiphenyl azodisulphonic azoeosin azoerythrin azofication azofier azoflavine azoformamide azoformic azofy azogallein azogreen azogrenadine azohumic azoic azoimide azoisobutyronitrile azole azolitmin Azolla azomethine azon azonal azonaphthalene azonic azonium azoospermia azoparaffin azophen azophenetole azophenine azophenol azophenyl azophenylene azophosphin azophosphore azoprotein Azorian azorite azorubine azosulphine azosulphonic azotate azote azoted azotemia azotenesis azotetrazole azoth azothionium azotic azotine azotite azotize Azotobacter Azotobacterieae azotoluene azotometer azotorrhoea azotous azoturia azovernine azox azoxazole azoxime azoxine azoxonium azoxy azoxyanisole azoxybenzene azoxybenzoic azoxynaphthalene azoxyphenetole azoxytoluidine Aztec Azteca azteca Aztecan azthionium azulene azulite azulmic azumbre azure azurean azured azureous azurine azurite azurmalachite azurous azury Azygobranchia Azygobranchiata azygobranchiate azygomatous azygos azygosperm azygospore azygous azyme azymite azymous B b ba baa baahling Baal baal Baalath Baalish Baalism Baalist Baalite Baalitical Baalize Baalshem baar Bab baba babacoote babai babasco babassu babaylan Babbie Babbitt babbitt babbitter Babbittess Babbittian Babbittism Babbittry babblative babble babblement babbler babblesome babbling babblingly babblish babblishly babbly babby Babcock babe babehood Babel Babeldom babelet Babelic babelike Babelish Babelism Babelize babery babeship Babesia babesiasis Babhan Babi Babiana babiche babied Babiism babillard Babine babingtonite babirusa babish babished babishly babishness Babism Babist Babite bablah babloh baboen Babongo baboo baboodom babooism baboon baboonery baboonish baboonroot baboot babouche Babouvism Babouvist babroot Babs babu Babua babudom babuina babuism babul Babuma Babungera babushka baby babydom babyfied babyhood babyhouse babyish babyishly babyishness babyism babylike Babylon Babylonian Babylonic Babylonish Babylonism Babylonite Babylonize babyolatry babyship bac bacaba bacach bacalao bacao bacbakiri bacca baccaceous baccae baccalaurean baccalaureate baccara baccarat baccate baccated Bacchae bacchanal Bacchanalia bacchanalian bacchanalianism bacchanalianly bacchanalism bacchanalization bacchanalize bacchant bacchante bacchantes bacchantic bacchar baccharis baccharoid baccheion bacchiac bacchian Bacchic bacchic Bacchical Bacchides bacchii bacchius Bacchus Bacchuslike bacciferous bacciform baccivorous bach Bacharach bache bachel bachelor bachelordom bachelorhood bachelorism bachelorize bachelorlike bachelorly bachelorship bachelorwise bachelry Bachichi Bacillaceae bacillar Bacillariaceae bacillariaceous Bacillariales Bacillarieae Bacillariophyta bacillary bacillemia bacilli bacillian bacillicidal bacillicide bacillicidic bacilliculture bacilliform bacilligenic bacilliparous bacillite bacillogenic bacillogenous bacillophobia bacillosis bacilluria bacillus Bacis bacitracin back backache backaching backachy backage backband backbearing backbencher backbite backbiter backbitingly backblow backboard backbone backboned backboneless backbonelessness backbrand backbreaker backbreaking backcap backcast backchain backchat backcourt backcross backdoor backdown backdrop backed backen backer backet backfall backfatter backfield backfill backfiller backfilling backfire backfiring backflap backflash backflow backfold backframe backfriend backfurrow backgame backgammon background backhand backhanded backhandedly backhandedness backhander backhatch backheel backhooker backhouse backie backiebird backing backjaw backjoint backlands backlash backlashing backless backlet backlings backlog backlotter backmost backpedal backpiece backplate backrope backrun backsaw backscraper backset backsetting backsettler backshift backside backsight backslap backslapper backslapping backslide backslider backslidingness backspace backspacer backspang backspier backspierer backspin backspread backspringing backstaff backstage backstamp backstay backster backstick backstitch backstone backstop backstrap backstretch backstring backstrip backstroke backstromite backswept backswing backsword backswording backswordman backswordsman backtack backtender backtenter backtrack backtracker backtrick backup backveld backvelder backwall backward backwardation backwardly backwardness backwards backwash backwasher backwashing backwater backwatered backway backwood backwoods backwoodsiness backwoodsman backwoodsy backword backworm backwort backyarder baclin bacon baconer Baconian Baconianism Baconic Baconism Baconist baconize baconweed bacony Bacopa bacteremia bacteria Bacteriaceae bacteriaceous bacterial bacterially bacterian bacteric bactericholia bactericidal bactericide bactericidin bacterid bacteriemia bacteriform bacterin bacterioagglutinin bacterioblast bacteriocyte bacteriodiagnosis bacteriofluorescin bacteriogenic bacteriogenous bacteriohemolysin bacterioid bacterioidal bacteriologic bacteriological bacteriologically bacteriologist bacteriology bacteriolysin bacteriolysis bacteriolytic bacteriolyze bacteriopathology bacteriophage bacteriophagia bacteriophagic bacteriophagous bacteriophagy bacteriophobia bacterioprecipitin bacterioprotein bacteriopsonic bacteriopsonin bacteriopurpurin bacterioscopic bacterioscopical bacterioscopically bacterioscopist bacterioscopy bacteriosis bacteriosolvent bacteriostasis bacteriostat bacteriostatic bacteriotherapeutic bacteriotherapy bacteriotoxic bacteriotoxin bacteriotropic bacteriotropin bacteriotrypsin bacterious bacteritic bacterium bacteriuria bacterization bacterize bacteroid bacteroidal Bacteroideae Bacteroides Bactrian Bactris Bactrites bactriticone bactritoid bacula bacule baculi baculiferous baculiform baculine baculite Baculites baculitic baculiticone baculoid baculum baculus bacury bad Badaga badan Badarian badarrah Badawi baddeleyite badderlocks baddish baddishly baddishness baddock bade badenite badge badgeless badgeman badger badgerbrush badgerer badgeringly badgerlike badgerly badgerweed badiaga badian badigeon badinage badious badland badlands badly badminton badness Badon Baduhenna bae Baedeker Baedekerian Baeria baetuli baetulus baetyl baetylic baetylus baetzner bafaro baff baffeta baffle bafflement baffler baffling bafflingly bafflingness baffy baft bafta Bafyot bag baga Baganda bagani bagasse bagataway bagatelle bagatine bagattini bagattino Bagaudae Bagdad Bagdi bagel bagful baggage baggageman baggagemaster baggager baggala bagganet Baggara bagged bagger baggie baggily bagginess bagging baggit baggy Bagheli baghouse Baginda Bagirmi bagleaves baglike bagmaker bagmaking bagman bagnio bagnut bago Bagobo bagonet bagpipe bagpiper bagpipes bagplant bagrationite bagre bagreef bagroom baguette bagwig bagwigged bagworm bagwyn bah Bahai Bahaism Bahaist Baham Bahama Bahamian bahan bahar Bahaullah bahawder bahay bahera bahiaite Bahima bahisti Bahmani Bahmanid bahnung baho bahoe bahoo baht Bahuma bahur bahut Bahutu bahuvrihi Baianism baidarka Baidya Baiera baiginet baignet baikalite baikerinite baikerite baikie bail bailable bailage bailee bailer bailey bailie bailiery bailieship bailiff bailiffry bailiffship bailiwick bailliage baillone Baillonella bailment bailor bailpiece bailsman bailwood bain bainie Baining baioc baiocchi baiocco bairagi Bairam bairn bairnie bairnish bairnishness bairnliness bairnly bairnteam bairntime bairnwort Bais Baisakh baister bait baiter baith baittle baitylos baize bajada bajan Bajardo bajarigar Bajau Bajocian bajra bajree bajri bajury baka Bakairi bakal Bakalai Bakalei Bakatan bake bakeboard baked bakehouse Bakelite bakelite bakelize baken bakeoven bakepan baker bakerdom bakeress bakerite bakerless bakerly bakership bakery bakeshop bakestone Bakhtiari bakie baking bakingly bakli Bakongo Bakshaish baksheesh baktun Baku baku Bakuba bakula Bakunda Bakuninism Bakuninist bakupari Bakutu Bakwiri Bal bal Bala Balaam Balaamite Balaamitical balachong balaclava baladine Balaena Balaenicipites balaenid Balaenidae balaenoid Balaenoidea balaenoidean Balaenoptera Balaenopteridae balafo balagan balaghat balai Balaic Balak Balaklava balalaika Balan balance balanceable balanced balancedness balancelle balanceman balancement balancer balancewise balancing balander balandra balandrana balaneutics balangay balanic balanid Balanidae balaniferous balanism balanite Balanites balanitis balanoblennorrhea balanocele Balanoglossida Balanoglossus balanoid Balanophora Balanophoraceae balanophoraceous balanophore balanophorin balanoplasty balanoposthitis balanopreputial Balanops Balanopsidaceae Balanopsidales balanorrhagia Balanta Balante balantidial balantidiasis balantidic balantidiosis Balantidium Balanus Balao balao Balarama balas balata balatong balatron balatronic balausta balaustine balaustre Balawa Balawu balboa balbriggan balbutiate balbutient balbuties balconet balconied balcony bald baldachin baldachined baldachini baldachino baldberry baldcrown balden balder balderdash baldhead baldicoot Baldie baldish baldling baldly baldmoney baldness baldpate baldrib baldric baldricked baldricwise balductum Baldwin baldy bale Balearian Balearic Balearica baleen balefire baleful balefully balefulness balei baleise baleless baler balete Bali bali balibago Balija Balilla baline Balinese balinger balinghasay balisaur balistarius Balistes balistid Balistidae balistraria balita balk Balkan Balkanic Balkanization Balkanize Balkar balker balkingly Balkis balky ball ballad ballade balladeer ballader balladeroyal balladic balladical balladier balladism balladist balladize balladlike balladling balladmonger balladmongering balladry balladwise ballahoo ballam ballan ballant ballast ballastage ballaster ballasting ballata ballate ballatoon balldom balled baller ballerina ballet balletic balletomane Ballhausplatz balli ballist ballista ballistae ballistic ballistically ballistician ballistics Ballistite ballistocardiograph ballium ballmine ballogan ballonet balloon balloonation ballooner balloonery balloonet balloonfish balloonflower balloonful ballooning balloonish balloonist balloonlike ballot Ballota ballotade ballotage balloter balloting ballotist ballottement ballow Ballplatz ballplayer ballproof ballroom ballstock ballup ballweed bally ballyhack ballyhoo ballyhooer ballywack ballywrack balm balmacaan Balmarcodes Balmawhapple balmily balminess balmlike balmony Balmoral balmy balneal balneary balneation balneatory balneographer balneography balneologic balneological balneologist balneology balneophysiology balneotechnics balneotherapeutics balneotherapia balneotherapy Balnibarbi Baloch Baloghia Balolo balonea baloney baloo Balopticon Balor Baloskion Baloskionaceae balow balsa balsam balsamation Balsamea Balsameaceae balsameaceous balsamer balsamic balsamical balsamically balsamiferous balsamina Balsaminaceae balsaminaceous balsamine balsamitic balsamiticness balsamize balsamo Balsamodendron Balsamorrhiza balsamous balsamroot balsamum balsamweed balsamy Balt baltei balter balteus Balthasar Balti Baltic Baltimore Baltimorean baltimorite Baltis balu Baluba Baluch Baluchi Baluchistan baluchithere baluchitheria Baluchitherium baluchitherium Baluga Balunda balushai baluster balustered balustrade balustraded balustrading balut balwarra balza Balzacian balzarine bam Bamalip Bamangwato bamban Bambara bambini bambino bambocciade bamboo bamboozle bamboozlement bamboozler Bambos bamboula Bambuba Bambusa Bambuseae Bambute bamoth Ban ban Bana banaba banago banak banakite banal banality banally banana Bananaland Bananalander Banande bananist bananivorous banat Banate banatite banausic Banba Banbury banc banca bancal banchi banco bancus band Banda banda bandage bandager bandagist bandaite bandaka bandala bandalore bandanna bandannaed bandar bandarlog bandbox bandboxical bandboxy bandcase bandcutter bande bandeau banded bandelet bander Banderma banderole bandersnatch bandfish bandhava bandhook Bandhor bandhu bandi bandicoot bandicoy bandie bandikai bandiness banding bandit banditism banditry banditti bandle bandless bandlessly bandlessness bandlet bandman bandmaster bando bandog bandoleer bandoleered bandoline bandonion Bandor bandore bandrol bandsman bandstand bandster bandstring Bandusia Bandusian bandwork bandy bandyball bandyman bane baneberry baneful banefully banefulness banewort Banff bang banga Bangala bangalay bangalow Bangash bangboard bange banger banghy Bangia Bangiaceae bangiaceous Bangiales banging bangkok bangle bangled bangling bangster bangtail Bangwaketsi bani banian banig banilad banish banisher banishment banister Baniva baniwa baniya banjo banjoist banjore banjorine banjuke bank bankable Bankalachi bankbook banked banker bankera bankerdom bankeress banket bankfull banking bankman bankrider bankrupt bankruptcy bankruptism bankruptlike bankruptly bankruptship bankrupture bankshall Banksia Banksian bankside banksman bankweed banky banner bannered bannerer banneret bannerfish bannerless bannerlike bannerman bannerol bannerwise bannet banning bannister Bannock bannock Bannockburn banns bannut banovina banquet banqueteer banqueteering banqueter banquette bansalague banshee banstickle bant Bantam bantam bantamize bantamweight bantay bantayan banteng banter banterer banteringly bantery Bantingism bantingize bantling Bantoid Bantu banty banuyo banxring banya Banyai banyan Banyoro Banyuls banzai baobab bap Baphia Baphomet Baphometic Baptanodon Baptisia baptisin baptism baptismal baptismally Baptist baptistery baptistic baptizable baptize baptizee baptizement baptizer Baptornis bar bara barabara barabora Barabra Baraca barad baragnosis baragouin baragouinish Baraithas barajillo Baralipton Baramika barandos barangay barasingha barathea barathra barathrum barauna barb Barbacoa Barbacoan barbacou Barbadian Barbados barbal barbaloin Barbara barbaralalia Barbarea barbaresque Barbarian barbarian barbarianism barbarianize barbaric barbarical barbarically barbarious barbariousness barbarism barbarity barbarization barbarize barbarous barbarously barbarousness Barbary barbary barbas barbasco barbastel barbate barbated barbatimao barbe barbecue barbed barbeiro barbel barbellate barbellula barbellulate barber barberess barberfish barberish barberry barbershop barbet barbette Barbeyaceae barbican barbicel barbigerous barbion barbital barbitalism barbiton barbitone barbitos barbiturate barbituric barbless barblet barbone barbotine Barbra barbudo Barbula barbulate barbule barbulyie barbwire Barcan barcarole barcella barcelona Barcoo bard bardane bardash bardcraft bardel Bardesanism Bardesanist Bardesanite bardess bardic bardie bardiglio bardily bardiness barding bardish bardism bardlet bardlike bardling bardo Bardolater Bardolatry Bardolph Bardolphian bardship Bardulph bardy Bare bare bareback barebacked bareboat barebone bareboned bareca barefaced barefacedly barefacedness barefit barefoot barefooted barehanded barehead bareheaded bareheadedness barelegged barely barenecked bareness barer baresark baresma baretta barff barfish barfly barful bargain bargainee bargainer bargainor bargainwise bargander barge bargeboard bargee bargeer bargeese bargehouse bargelike bargeload bargeman bargemaster barger bargh bargham barghest bargoose Bari bari baria baric barid barie barile barilla baring baris barish barit barite baritone barium bark barkbound barkcutter barkeeper barken barkentine barker barkery barkevikite barkevikitic barkey barkhan barking barkingly Barkinji barkle barkless barklyite barkometer barkpeel barkpeeler barkpeeling barksome barky barlafumble barlafummil barless barley barleybird barleybreak barleycorn barleyhood barleymow barleysick barling barlock barlow barm barmaid barman barmaster barmbrack barmcloth Barmecidal Barmecide barmkin barmote barmskin barmy barmybrained barn Barnabas Barnabite Barnaby barnacle Barnard barnard barnbrack Barnburner Barney barney barnful barnhardtite barnman barnstorm barnstormer barnstorming Barnumism Barnumize barny barnyard Baroco barocyclonometer barodynamic barodynamics barognosis barogram barograph barographic baroi barolo barology Barolong barometer barometric barometrical barometrically barometrograph barometrography barometry barometz baromotor baron baronage baroness baronet baronetage baronetcy baronethood baronetical baronetship barong Baronga baronial baronize baronry baronship barony Baroque baroque baroscope baroscopic baroscopical Barosma barosmin barotactic barotaxis barotaxy barothermograph barothermohygrograph baroto Barotse barouche barouchet Barouni baroxyton barpost barquantine barra barrabkie barrable barrabora barracan barrack barracker barraclade barracoon barracouta barracuda barrad barragan barrage barragon barramunda barramundi barranca barrandite barras barrator barratrous barratrously barratry barred barrel barrelage barreled barreler barrelet barrelful barrelhead barrelmaker barrelmaking barrelwise barren barrenly barrenness barrenwort barrer barret Barrett barrette barretter barricade barricader barricado barrico barrier barriguda barrigudo barrikin barriness barring Barrington Barringtonia Barrio barrio barrister barristerial barristership barristress barroom barrow barrowful Barrowist barrowman barrulee barrulet barrulety barruly Barry barry Barsac barse barsom Bart bartender bartending barter barterer barth barthite bartholinitis Bartholomean Bartholomew Bartholomewtide Bartholomite bartizan bartizaned Bartlemy Bartlett Barton barton Bartonella Bartonia Bartram Bartramia Bartramiaceae Bartramian Bartsia baru Baruch Barundi baruria barvel barwal barway barways barwise barwood barycenter barycentric barye baryecoia baryglossia barylalia barylite baryphonia baryphonic baryphony barysilite barysphere baryta barytes barythymia barytic barytine barytocalcite barytocelestine barytocelestite baryton barytone barytophyllite barytostrontianite barytosulphate bas basal basale basalia basally basalt basaltes basaltic basaltiform basaltine basaltoid basanite basaree Bascology bascule base baseball baseballdom baseballer baseboard baseborn basebred based basehearted baseheartedness baselard baseless baselessly baselessness baselike baseliner Basella Basellaceae basellaceous basely baseman basement basementward baseness basenji bases bash bashaw bashawdom bashawism bashawship bashful bashfully bashfulness Bashilange Bashkir bashlyk Bashmuric basial basialveolar basiarachnitis basiarachnoiditis basiate basiation Basibracteolate basibranchial basibranchiate basibregmatic basic basically basichromatic basichromatin basichromatinic basichromiole basicity basicranial basicytoparaplastin basidia basidial basidigital basidigitale basidiogenetic basidiolichen Basidiolichenes basidiomycete Basidiomycetes basidiomycetous basidiophore basidiospore basidiosporous basidium basidorsal basifacial basification basifier basifixed basifugal basify basigamous basigamy basigenic basigenous basiglandular basigynium basihyal basihyoid Basil basil basilar Basilarchia basilary basilateral basilemma basileus Basilian basilic Basilica basilica Basilicae basilical basilican basilicate basilicon Basilics Basilidian Basilidianism basilinna basiliscan basiliscine Basiliscus basilisk basilissa Basilosauridae Basilosaurus basilweed basilysis basilyst basimesostasis basin basinasal basinasial basined basinerved basinet basinlike basioccipital basion basiophitic basiophthalmite basiophthalmous basiotribe basiotripsy basiparachromatin basiparaplastin basipetal basiphobia basipodite basipoditic basipterygial basipterygium basipterygoid basiradial basirhinal basirostral basis basiscopic basisphenoid basisphenoidal basitemporal basiventral basivertebral bask basker Baskerville basket basketball basketballer basketful basketing basketmaker basketmaking basketry basketware basketwoman basketwood basketwork basketworm Baskish Baskonize Basoche Basoga basoid Basoko Basommatophora basommatophorous bason Basongo basophile basophilia basophilic basophilous basophobia basos basote Basque basque basqued basquine bass Bassa Bassalia Bassalian bassan bassanello bassanite bassara bassarid Bassaris Bassariscus bassarisk basset bassetite bassetta Bassia bassie bassine bassinet bassist bassness basso bassoon bassoonist bassorin bassus basswood Bast bast basta Bastaard Bastard bastard bastardism bastardization bastardize bastardliness bastardly bastardy baste basten baster bastide bastille bastinade bastinado basting bastion bastionary bastioned bastionet bastite bastnasite basto baston basurale Basuto Bat bat bataan batad Batak batakan bataleur Batan batara batata Batatas batatilla Batavi Batavian batch batcher bate batea bateau bateaux bated Batekes batel bateman batement bater Batetela batfish batfowl batfowler batfowling Bath bath Bathala bathe batheable bather bathetic bathflower bathhouse bathic bathing bathless bathman bathmic bathmism bathmotropic bathmotropism bathochromatic bathochromatism bathochrome bathochromic bathochromy bathoflore bathofloric batholite batholith batholithic batholitic bathometer Bathonian bathophobia bathorse bathos bathrobe bathroom bathroomed bathroot bathtub bathukolpian bathukolpic bathvillite bathwort bathyal bathyanesthesia bathybian bathybic bathybius bathycentesis bathychrome bathycolpian bathycolpic bathycurrent bathyesthesia bathygraphic bathyhyperesthesia bathyhypesthesia bathylimnetic bathylite bathylith bathylithic bathylitic bathymeter bathymetric bathymetrical bathymetrically bathymetry bathyorographical bathypelagic bathyplankton bathyseism bathysmal bathysophic bathysophical bathysphere bathythermograph Batidaceae batidaceous batik batiker batikulin batikuling bating batino Batis batiste batitinan batlan batlike batling batlon batman Batocrinidae Batocrinus Batodendron batoid Batoidei Batoka baton Batonga batonistic batonne batophobia Batrachia batrachian batrachiate Batrachidae Batrachium batrachoid Batrachoididae batrachophagous Batrachophidia batrachophobia batrachoplasty Batrachospermum bats batsman batsmanship batster batswing batt Batta batta battailous Battak Battakhin battalia battalion battarism battarismus battel batteler batten battener battening batter batterable battercake batterdock battered batterer batterfang batteried batterman battery batteryman battik batting battish battle battled battledore battlefield battleful battleground battlement battlemented battleplane battler battleship battlesome battlestead battlewagon battleward battlewise battological battologist battologize battology battue batty batukite batule Batussi Batwa batwing batyphone batz batzen bauble baublery baubling Baubo bauch bauchle bauckie bauckiebird baud baudekin baudrons Bauera Bauhinia baul bauleah Baume baumhauerite baun bauno Baure bauson bausond bauta bauxite bauxitite Bavarian bavaroy bavary bavenite baviaantje Bavian bavian baviere bavin Bavius bavoso baw bawarchi bawbee bawcock bawd bawdily bawdiness bawdry bawdship bawdyhouse bawl bawler bawley bawn Bawra bawtie baxter Baxterian Baxterianism baxtone bay Baya baya bayadere bayal bayamo Bayard bayard bayardly bayberry baybolt baybush baycuru bayed bayeta baygall bayhead bayish bayldonite baylet baylike bayman bayness Bayogoula bayok bayonet bayoneted bayoneteer bayou baywood bazaar baze Bazigar bazoo bazooka bazzite bdellid Bdellidae bdellium bdelloid Bdelloida Bdellostoma Bdellostomatidae Bdellostomidae bdellotomy Bdelloura Bdellouridae be Bea beach beachcomb beachcomber beachcombing beached beachhead beachlamar beachless beachman beachmaster beachward beachy beacon beaconage beaconless beaconwise bead beaded beader beadflush beadhouse beadily beadiness beading beadle beadledom beadlehood beadleism beadlery beadleship beadlet beadlike beadman beadroll beadrow beadsman beadswoman beadwork beady Beagle beagle beagling beak beaked beaker beakerful beakerman beakermen beakful beakhead beakiron beaklike beaky beal beala bealing beallach bealtared Bealtine Bealtuinn beam beamage beambird beamed beamer beamfilling beamful beamhouse beamily beaminess beaming beamingly beamish beamless beamlet beamlike beamman beamsman beamster beamwork beamy bean beanbag beanbags beancod beanery beanfeast beanfeaster beanfield beanie beano beansetter beanshooter beanstalk beant beanweed beany beaproned bear bearable bearableness bearably bearance bearbaiter bearbaiting bearbane bearberry bearbind bearbine bearcoot beard bearded bearder beardie bearding beardless beardlessness beardom beardtongue beardy bearer bearess bearfoot bearherd bearhide bearhound bearing bearish bearishly bearishness bearlet bearlike bearm bearship bearskin beartongue bearward bearwood bearwort beast beastbane beastdom beasthood beastie beastily beastish beastishness beastlike beastlily beastliness beastling beastlings beastly beastman beastship beat Beata beata beatable beatae beatee beaten beater beaterman beath beatific beatifical beatifically beatificate beatification beatify beatinest beating beatitude Beatrice Beatrix beatster beatus beau Beauclerc beaufin Beaufort beauish beauism Beaujolais Beaumontia Beaune beaupere beauseant beauship beauteous beauteously beauteousness beauti beautician beautied beautification beautifier beautiful beautifully beautifulness beautify beautihood beauty beautydom beautyship beaux beaver Beaverboard beaverboard beavered beaverette beaverish beaverism beaverite beaverize Beaverkill beaverkin beaverlike beaverpelt beaverroot beaverteen beaverwood beavery beback bebait beballed bebang bebannered bebar bebaron bebaste bebat bebathe bebatter bebay bebeast bebed bebeerine bebeeru bebelted bebilya bebite bebization beblain beblear bebled bebless beblister beblood bebloom beblotch beblubber bebog bebop beboss bebotch bebothered bebouldered bebrave bebreech bebrine bebrother bebrush bebump bebusy bebuttoned becall becalm becalmment becap becard becarpet becarve becassocked becater because beccafico becense bechained bechalk bechance becharm bechase bechatter bechauffeur becheck becher bechern bechignoned bechirp Bechtler Bechuana becircled becivet Beck beck beckelite becker becket Beckie beckiron beckon beckoner beckoning beckoningly Becky beclad beclamor beclamour beclang beclart beclasp beclatter beclaw becloak beclog beclothe becloud beclout beclown becluster becobweb becoiffed becollier becolme becolor becombed become becomes becoming becomingly becomingness becomma becompass becompliment becoom becoresh becost becousined becovet becoward becquerelite becram becramp becrampon becrawl becreep becrime becrimson becrinolined becripple becroak becross becrowd becrown becrush becrust becry becudgel becuffed becuiba becumber becuna becurl becurry becurse becurtained becushioned becut bed bedabble bedad bedaggered bedamn bedamp bedangled bedare bedark bedarken bedash bedaub bedawn beday bedaze bedazement bedazzle bedazzlement bedazzling bedazzlingly bedboard bedbug bedcap bedcase bedchair bedchamber bedclothes bedcord bedcover bedded bedder bedding bedead bedeaf bedeafen bedebt bedeck bedecorate bedeguar bedel beden bedene bedesman bedevil bedevilment bedew bedewer bedewoman bedfast bedfellow bedfellowship bedflower bedfoot Bedford bedframe bedgery bedgoer bedgown bediademed bediamonded bediaper bedight bedikah bedim bedimple bedin bedip bedirt bedirter bedirty bedismal bedizen bedizenment bedkey bedlam bedlamer Bedlamic bedlamism bedlamite bedlamitish bedlamize bedlar bedless bedlids bedmaker bedmaking bedman bedmate bedoctor bedog bedolt bedot bedote Bedouin Bedouinism bedouse bedown bedoyo bedpan bedplate bedpost bedquilt bedrabble bedraggle bedragglement bedrail bedral bedrape bedravel bedrench bedress bedribble bedrid bedridden bedriddenness bedrift bedright bedrip bedrivel bedrizzle bedrock bedroll bedroom bedrop bedrown bedrowse bedrug bedscrew bedsick bedside bedsite bedsock bedsore bedspread bedspring bedstaff bedstand bedstaves bedstead bedstock bedstraw bedstring bedtick bedticking bedtime bedub beduchess beduck beduke bedull bedumb bedunce bedunch bedung bedur bedusk bedust bedwarf bedway bedways bedwell bedye Bee bee beearn beebread beech beechdrops beechen beechnut beechwood beechwoods beechy beedged beedom beef beefeater beefer beefhead beefheaded beefily beefin beefiness beefish beefishness beefless beeflower beefsteak beeftongue beefwood beefy beegerite beehead beeheaded beeherd beehive beehouse beeish beeishness beek beekeeper beekeeping beekite Beekmantown beelbow beelike beeline beelol Beelzebub Beelzebubian Beelzebul beeman beemaster been beennut beer beerage beerbachite beerbibber beerhouse beerily beeriness beerish beerishly beermaker beermaking beermonger beerocracy Beerothite beerpull beery bees beest beestings beeswax beeswing beeswinged beet beeth Beethovenian Beethovenish Beethovian beetle beetled beetlehead beetleheaded beetler beetlestock beetlestone beetleweed beetmister beetrave beetroot beetrooty beety beeve beevish beeware beeway beeweed beewise beewort befall befame befamilied befamine befan befancy befanned befathered befavor befavour befeather beferned befetished befetter befezzed befiddle befilch befile befilleted befilmed befilth befinger befire befist befit befitting befittingly befittingness beflag beflannel beflap beflatter beflea befleck beflounce beflour beflout beflower beflum befluster befoam befog befool befoolment befop before beforehand beforeness beforested beforetime beforetimes befortune befoul befouler befoulment befountained befraught befreckle befreeze befreight befret befriend befriender befriendment befrill befringe befriz befrocked befrogged befrounce befrumple befuddle befuddlement befuddler befume befurbelowed befurred beg begabled begad begall begani begar begari begarlanded begarnish begartered begash begat begaud begaudy begay begaze begeck begem beget begettal begetter beggable beggar beggardom beggarer beggaress beggarhood beggarism beggarlike beggarliness beggarly beggarman beggarweed beggarwise beggarwoman beggary Beggiatoa Beggiatoaceae beggiatoaceous begging beggingly beggingwise Beghard begift begiggle begild begin beginger beginner beginning begird begirdle beglad beglamour beglare beglerbeg beglerbeglic beglerbegluc beglerbegship beglerbey beglic beglide beglitter beglobed begloom begloze begluc beglue begnaw bego begob begobs begoggled begohm begone begonia Begoniaceae begoniaceous Begoniales begorra begorry begotten begottenness begoud begowk begowned begrace begrain begrave begray begrease begreen begrett begrim begrime begrimer begroan begrown begrudge begrudgingly begruntle begrutch begrutten beguard beguess beguile beguileful beguilement beguiler beguiling beguilingly Beguin Beguine beguine begulf begum begun begunk begut behale behalf behallow behammer behap behatted behave behavior behavioral behaviored behaviorism behaviorist behavioristic behavioristically behead beheadal beheader beheadlined behear behears behearse behedge beheld behelp behemoth behen behenate behenic behest behind behinder behindhand behindsight behint behn behold beholdable beholden beholder beholding beholdingness behoney behoof behooped behoot behoove behooveful behoovefully behoovefulness behooves behooving behoovingly behorn behorror behowl behung behusband behymn behypocrite beice Beid beige being beingless beingness beinked beira beisa Beja bejabers bejade bejan bejant bejaundice bejazz bejel bejewel bejezebel bejig bejuggle bejumble bekah bekerchief bekick bekilted beking bekinkinite bekiss bekko beknave beknight beknit beknived beknotted beknottedly beknottedness beknow beknown Bel bel bela belabor belaced beladle belady belage belah Belait Belaites belam Belamcanda belanda belar belard belash belate belated belatedly belatedness belatticed belaud belauder belavendered belay belayer belch belcher beld beldam beldamship belderroot belduque beleaf beleaguer beleaguerer beleaguerment beleap beleave belecture beledgered belee belemnid belemnite Belemnites belemnitic Belemnitidae belemnoid Belemnoidea beletter belfried belfry belga Belgae Belgian Belgic Belgophile Belgrade Belgravia Belgravian Belial Belialic Belialist belibel belick belie belief beliefful belieffulness beliefless belier believability believable believableness believe believer believing believingly belight beliked Belili belimousined Belinda Belinuridae Belinurus belion beliquor Belis belite belitter belittle belittlement belittler belive bell Bella Bellabella Bellacoola belladonna bellarmine Bellatrix bellbind bellbird bellbottle bellboy belle belled belledom Belleek bellehood belleric Bellerophon Bellerophontidae belletrist belletristic bellflower bellhanger bellhanging bellhop bellhouse bellicism bellicose bellicosely bellicoseness bellicosity bellied belliferous belligerence belligerency belligerent belligerently belling bellipotent Bellis bellite bellmaker bellmaking bellman bellmanship bellmaster bellmouth bellmouthed Bellona Bellonian bellonion bellote Bellovaci bellow bellower bellows bellowsful bellowslike bellowsmaker bellowsmaking bellowsman bellpull belltail belltopper belltopperdom bellware bellwaver bellweed bellwether bellwind bellwine bellwood bellwort belly bellyache bellyband bellyer bellyfish bellyflaught bellyful bellying bellyland bellylike bellyman bellypiece bellypinch beloam beloeilite beloid belomancy Belone belonesite belong belonger belonging belonid Belonidae belonite belonoid belonosphaerite belord Belostoma Belostomatidae Belostomidae belout belove beloved below belowstairs belozenged Belshazzar Belshazzaresque belsire belt Beltane belted Beltene belter Beltian beltie beltine belting Beltir Beltis beltmaker beltmaking beltman belton beltwise Beluchi Belucki beluga belugite belute belve belvedere Belverdian bely belying belyingly belzebuth bema bemad bemadam bemaddening bemail bemaim bemajesty beman bemangle bemantle bemar bemartyr bemask bemaster bemat bemata bemaul bemazed Bemba Bembecidae Bembex bemeal bemean bemedaled bemedalled bementite bemercy bemingle beminstrel bemire bemirement bemirror bemirrorment bemist bemistress bemitered bemitred bemix bemoan bemoanable bemoaner bemoaning bemoaningly bemoat bemock bemoil bemoisten bemole bemolt bemonster bemoon bemotto bemoult bemouth bemuck bemud bemuddle bemuddlement bemuddy bemuffle bemurmur bemuse bemused bemusedly bemusement bemusk bemuslined bemuzzle Ben ben bena benab Benacus bename benami benamidar benasty benben bench benchboard bencher benchership benchfellow benchful benching benchland benchlet benchman benchwork benchy bencite bend benda bendability bendable bended bender bending bendingly bendlet bendsome bendwise bendy bene beneaped beneath beneception beneceptive beneceptor benedicite Benedict benedict Benedicta Benedictine Benedictinism benediction benedictional benedictionary benedictive benedictively benedictory Benedictus benedight benefaction benefactive benefactor benefactorship benefactory benefactress benefic benefice beneficed beneficeless beneficence beneficent beneficential beneficently beneficial beneficially beneficialness beneficiary beneficiaryship beneficiate beneficiation benefit benefiter beneighbored Benelux benempt benempted beneplacito benet Benetnasch benettle Beneventan Beneventana benevolence benevolent benevolently benevolentness benevolist beng Bengal Bengalese Bengali Bengalic bengaline Bengola Beni beni benight benighted benightedness benighten benighter benightmare benightment benign benignancy benignant benignantly benignity benignly Benin Benincasa benison benitoite benj Benjamin benjamin benjaminite Benjamite Benjy benjy Benkulen benmost benn benne bennel Bennet bennet Bennettitaceae bennettitaceous Bennettitales Bennettites bennetweed Benny benny beno benorth benote bensel bensh benshea benshee benshi Benson bent bentang benthal Benthamic Benthamism Benthamite benthic benthon benthonic benthos Bentincks bentiness benting Benton bentonite bentstar bentwood benty Benu benumb benumbed benumbedness benumbing benumbingly benumbment benward benweed benzacridine benzal benzalacetone benzalacetophenone benzalaniline benzalazine benzalcohol benzalcyanhydrin benzaldehyde benzaldiphenyl benzaldoxime benzalethylamine benzalhydrazine benzalphenylhydrazone benzalphthalide benzamide benzamido benzamine benzaminic benzamino benzanalgen benzanilide benzanthrone benzantialdoxime benzazide benzazimide benzazine benzazole benzbitriazole benzdiazine benzdifuran benzdioxazine benzdioxdiazine benzdioxtriazine Benzedrine benzein benzene benzenediazonium benzenoid benzenyl benzhydrol benzhydroxamic benzidine benzidino benzil benzilic benzimidazole benziminazole benzinduline benzine benzo benzoate benzoated benzoazurine benzobis benzocaine benzocoumaran benzodiazine benzodiazole benzoflavine benzofluorene benzofulvene benzofuran benzofuroquinoxaline benzofuryl benzoglycolic benzoglyoxaline benzohydrol benzoic benzoid benzoin benzoinated benzoiodohydrin benzol benzolate benzole benzolize benzomorpholine benzonaphthol benzonitrile benzonitrol benzoperoxide benzophenanthrazine benzophenanthroline benzophenazine benzophenol benzophenone benzophenothiazine benzophenoxazine benzophloroglucinol benzophosphinic benzophthalazine benzopinacone benzopyran benzopyranyl benzopyrazolone benzopyrylium benzoquinoline benzoquinone benzoquinoxaline benzosulphimide benzotetrazine benzotetrazole benzothiazine benzothiazole benzothiazoline benzothiodiazole benzothiofuran benzothiophene benzothiopyran benzotoluide benzotriazine benzotriazole benzotrichloride benzotrifuran benzoxate benzoxy benzoxyacetic benzoxycamphor benzoxyphenanthrene benzoyl benzoylate benzoylation benzoylformic benzoylglycine benzpinacone benzthiophen benztrioxazine benzyl benzylamine benzylic benzylidene benzylpenicillin beode Beothuk Beothukan Beowulf bepaid Bepaint bepale bepaper beparch beparody beparse bepart bepaste bepastured bepat bepatched bepaw bepearl bepelt bepen bepepper beperiwigged bepester bepewed bephilter bephrase bepicture bepiece bepierce bepile bepill bepillared bepimple bepinch bepistoled bepity beplague beplaided beplaster beplumed bepommel bepowder bepraise bepraisement bepraiser beprank bepray bepreach bepress bepretty bepride beprose bepuddle bepuff bepun bepurple bepuzzle bepuzzlement bequalm bequeath bequeathable bequeathal bequeather bequeathment bequest bequirtle bequote ber berain berairou berakah berake berakoth berapt berascal berat berate berattle beraunite beray berbamine Berber Berberi Berberian berberid Berberidaceae berberidaceous berberine Berberis berberry Berchemia Berchta berdache bere Berean bereason bereave bereavement bereaven bereaver bereft berend Berengaria Berengarian Berengarianism berengelite Berenice Bereshith beresite beret berewick berg bergalith Bergama Bergamask bergamiol Bergamo Bergamot bergamot bergander bergaptene berger berghaan berginization berginize berglet bergschrund Bergsonian Bergsonism bergut bergy bergylt berhyme Beri beribanded beribboned beriberi beriberic beride berigora beringed beringite beringleted berinse berith Berkeleian Berkeleianism Berkeleyism Berkeleyite berkelium berkovets berkowitz Berkshire berley berlin berline Berliner berlinite Berlinize berm Bermuda Bermudian bermudite Bern Bernard Bernardina Bernardine berne Bernese Bernice Bernicia bernicle Bernie Berninesque Bernoullian berobed Beroe Beroida Beroidae beroll Berossos berouged beround berrendo berret berri berried berrier berrigan berrugate berry berrybush berryless berrylike berrypicker berrypicking berseem berserk berserker Bersiamite Bersil Bert Bertat Berteroa berth Bertha berthage berthed berther berthierite berthing Berthold Bertholletia Bertie Bertolonia Bertram bertram Bertrand bertrandite bertrum beruffed beruffled berust bervie berycid Berycidae beryciform berycine berycoid Berycoidea berycoidean Berycoidei Berycomorphi beryl berylate beryllia berylline berylliosis beryllium berylloid beryllonate beryllonite beryllosis Berytidae Beryx berzelianite berzeliite bes besa besagne besaiel besaint besan besanctify besauce bescab bescarf bescatter bescent bescorch bescorn bescoundrel bescour bescourge bescramble bescrape bescratch bescrawl bescreen bescribble bescurf bescurvy bescutcheon beseam besee beseech beseecher beseeching beseechingly beseechingness beseechment beseem beseeming beseemingly beseemingness beseemliness beseemly beseen beset besetment besetter besetting beshackle beshade beshadow beshag beshake beshame beshawled beshear beshell beshield beshine beshiver beshlik beshod beshout beshow beshower beshrew beshriek beshrivel beshroud besiclometer beside besides besiege besieged besiegement besieger besieging besiegingly besigh besilver besin besing besiren besit beslab beslap beslash beslave beslaver besleeve beslime beslimer beslings beslipper beslobber beslow beslubber beslur beslushed besmear besmearer besmell besmile besmirch besmircher besmirchment besmoke besmooth besmother besmouch besmudge besmut besmutch besnare besneer besnivel besnow besnuff besodden besogne besognier besoil besom besomer besonnet besoot besoothe besoothement besot besotment besotted besottedly besottedness besotting besottingly besought besoul besour bespangle bespate bespatter bespatterer bespatterment bespawl bespeak bespeakable bespeaker bespecked bespeckle bespecklement bespectacled besped bespeech bespeed bespell bespelled bespend bespete bespew bespice bespill bespin bespirit bespit besplash besplatter besplit bespoke bespoken bespot bespottedness bespouse bespout bespray bespread besprent besprinkle besprinkler bespurred besputter bespy besqueeze besquib besra Bess Bessarabian Besselian Bessemer bessemer Bessemerize bessemerize Bessera Bessi Bessie Bessy best bestab bestain bestamp bestar bestare bestarve bestatued bestay bestayed bestead besteer bestench bester bestial bestialism bestialist bestiality bestialize bestially bestiarian bestiarianism bestiary bestick bestill bestink bestir bestness bestock bestore bestorm bestove bestow bestowable bestowage bestowal bestower bestowing bestowment bestraddle bestrapped bestraught bestraw bestreak bestream bestrew bestrewment bestride bestripe bestrode bestubbled bestuck bestud besugar besuit besully beswarm besweatered besweeten beswelter beswim beswinge beswitch bet Beta beta betacism betacismus betafite betag betail betailor betaine betainogen betalk betallow betangle betanglement betask betassel betatron betattered betaxed betear beteela beteem betel Betelgeuse Beth beth bethabara bethankit bethel Bethesda bethflower bethink Bethlehem Bethlehemite bethought bethrall bethreaten bethroot Bethuel bethumb bethump bethunder bethwack Bethylidae betide betimber betimes betinge betipple betire betis betitle betocsin betoil betoken betokener betone betongue Betonica betony betorcin betorcinol betoss betowel betowered Betoya Betoyan betrace betrail betrample betrap betravel betray betrayal betrayer betrayment betread betrend betrim betrinket betroth betrothal betrothed betrothment betrough betrousered betrumpet betrunk Betsey Betsileos Betsimisaraka betso Betsy Betta betted better betterer bettergates bettering betterly betterment bettermost betterness betters Bettina Bettine betting bettong bettonga Bettongia bettor Betty betty betuckered Betula Betulaceae betulaceous betulin betulinamaric betulinic betulinol Betulites beturbaned betusked betutor betutored betwattled between betweenbrain betweenity betweenmaid betweenness betweenwhiles betwine betwit betwixen betwixt beudantite Beulah beuniformed bevatron beveil bevel beveled beveler bevelled bevelment bevenom bever beverage Beverly beverse bevesseled bevesselled beveto bevillain bevined bevoiled bevomit bevue bevy bewail bewailable bewailer bewailing bewailingly bewailment bewaitered bewall beware bewash bewaste bewater beweary beweep beweeper bewelcome bewelter bewept bewest bewet bewhig bewhiskered bewhisper bewhistle bewhite bewhiten bewidow bewig bewigged bewilder bewildered bewilderedly bewilderedness bewildering bewilderingly bewilderment bewimple bewinged bewinter bewired bewitch bewitchedness bewitcher bewitchery bewitchful bewitching bewitchingly bewitchingness bewitchment bewith bewizard bework beworm beworn beworry beworship bewrap bewrathed bewray bewrayer bewrayingly bewrayment bewreath bewreck bewrite bey beydom beylic beylical beyond beyrichite beyship Bezaleel Bezaleelian bezant bezantee bezanty bezel bezesteen bezetta bezique bezoar bezoardic bezonian Bezpopovets bezzi bezzle bezzo bhabar Bhadon Bhaga bhagavat bhagavata bhaiachari bhaiyachara bhakta bhakti bhalu bhandar bhandari bhang bhangi Bhar bhara bharal Bharata bhat bhava Bhavani bheesty bhikku bhikshu Bhil Bhili Bhima Bhojpuri bhoosa Bhotia Bhotiya Bhowani bhoy Bhumij bhungi bhungini bhut Bhutanese Bhutani bhutatathata Bhutia biabo biacetyl biacetylene biacid biacromial biacuminate biacuru bialate biallyl bialveolar Bianca Bianchi bianchite bianco biangular biangulate biangulated biangulous bianisidine biannual biannually biannulate biarchy biarcuate biarcuated biarticular biarticulate biarticulated bias biasness biasteric biaswise biatomic biauricular biauriculate biaxal biaxial biaxiality biaxially biaxillary bib bibacious bibacity bibasic bibation bibb bibber bibble bibbler bibbons bibcock bibenzyl bibi Bibio bibionid Bibionidae bibiri bibitory Bible bibless Biblic Biblical Biblicality Biblically Biblicism Biblicist Biblicistic Biblicolegal Biblicoliterary Biblicopsychological biblioclasm biblioclast bibliofilm bibliogenesis bibliognost bibliognostic bibliogony bibliograph bibliographer bibliographic bibliographical bibliographically bibliographize bibliography biblioklept bibliokleptomania bibliokleptomaniac bibliolater bibliolatrous bibliolatry bibliological bibliologist bibliology bibliomancy bibliomane bibliomania bibliomaniac bibliomaniacal bibliomanian bibliomanianism bibliomanism bibliomanist bibliopegic bibliopegist bibliopegistic bibliopegy bibliophage bibliophagic bibliophagist bibliophagous bibliophile bibliophilic bibliophilism bibliophilist bibliophilistic bibliophily bibliophobia bibliopolar bibliopole bibliopolery bibliopolic bibliopolical bibliopolically bibliopolism bibliopolist bibliopolistic bibliopoly bibliosoph bibliotaph bibliotaphic bibliothec bibliotheca bibliothecal bibliothecarial bibliothecarian bibliothecary bibliotherapeutic bibliotherapist bibliotherapy bibliothetic bibliotic bibliotics bibliotist Biblism Biblist biblus biborate bibracteate bibracteolate bibulosity bibulous bibulously bibulousness Bibulus bicalcarate bicameral bicameralism bicamerist bicapitate bicapsular bicarbonate bicarbureted bicarinate bicarpellary bicarpellate bicaudal bicaudate Bice bice bicellular bicentenary bicentennial bicephalic bicephalous biceps bicetyl bichir bichloride bichord bichromate bichromatic bichromatize bichrome bichromic bichy biciliate biciliated bicipital bicipitous bicircular bicirrose bick bicker bickerer bickern biclavate biclinium bicollateral bicollaterality bicolligate bicolor bicolored bicolorous biconcave biconcavity bicondylar bicone biconic biconical biconically biconjugate biconsonantal biconvex bicorn bicornate bicorne bicorned bicornous bicornuate bicornuous bicornute bicorporal bicorporate bicorporeal bicostate bicrenate bicrescentic bicrofarad bicron bicrural bicursal bicuspid bicuspidate bicyanide bicycle bicycler bicyclic bicyclism bicyclist bicyclo bicycloheptane bicylindrical bid bidactyl bidactyle bidactylous bidar bidarka bidcock biddable biddableness biddably biddance Biddelian bidder bidding Biddulphia Biddulphiaceae Biddy biddy bide Bidens bident bidental bidentate bidented bidential bidenticulate bider bidet bidigitate bidimensional biding bidirectional bidiurnal Bidpai bidri biduous bieberite Biedermeier bield bieldy bielectrolysis bielenite Bielid Bielorouss bien bienly bienness biennia biennial biennially biennium bier bierbalk biethnic bietle bifacial bifanged bifara bifarious bifariously bifer biferous biff biffin bifid bifidate bifidated bifidity bifidly bifilar bifilarly bifistular biflabellate biflagellate biflecnode biflected biflex biflorate biflorous bifluoride bifocal bifoil bifold bifolia bifoliate bifoliolate bifolium biforked biform biformed biformity biforous bifront bifrontal bifronted bifurcal bifurcate bifurcated bifurcately bifurcation big biga bigamic bigamist bigamistic bigamize bigamous bigamously bigamy bigarade bigaroon bigarreau bigbloom bigemina bigeminal bigeminate bigeminated bigeminum bigener bigeneric bigential bigeye bigg biggah biggen bigger biggest biggin biggish biggonet bigha bighead bighearted bigheartedness bighorn bight biglandular biglenoid biglot bigmouth bigmouthed bigness Bignonia Bignoniaceae bignoniaceous bignoniad bignou bigoniac bigonial bigot bigoted bigotedly bigotish bigotry bigotty bigroot bigthatch biguanide biguttate biguttulate bigwig bigwigged bigwiggedness bigwiggery bigwiggism Bihai Biham bihamate Bihari biharmonic bihourly bihydrazine bija bijasal bijou bijouterie bijoux bijugate bijugular bike bikh bikhaconitine bikini Bikol Bikram Bikukulla Bilaan bilabe bilabial bilabiate bilalo bilamellar bilamellate bilamellated bilaminar bilaminate bilaminated bilander bilateral bilateralism bilaterality bilaterally bilateralness Bilati bilberry bilbie bilbo bilboquet bilby bilch bilcock bildar bilders bile bilestone bilge bilgy Bilharzia bilharzial bilharziasis bilharzic bilharziosis bilianic biliary biliate biliation bilic bilicyanin bilifaction biliferous bilification bilifuscin bilify bilihumin bilimbi bilimbing biliment Bilin bilinear bilineate bilingual bilingualism bilingually bilinguar bilinguist bilinigrin bilinite bilio bilious biliously biliousness biliprasin bilipurpurin bilipyrrhin bilirubin bilirubinemia bilirubinic bilirubinuria biliteral biliteralism bilith bilithon biliverdic biliverdin bilixanthin bilk bilker Bill bill billa billable billabong billback billbeetle Billbergia billboard billbroking billbug billed biller billet billeter billethead billeting billetwood billety billfish billfold billhead billheading billholder billhook billian billiard billiardist billiardly billiards Billie Billiken billikin billing billingsgate billion billionaire billionism billionth billitonite Billjim billman billon billot billow billowiness billowy billposter billposting billsticker billsticking Billy billy billyboy billycan billycock billyer billyhood billywix bilo bilobated bilobe bilobed bilobiate bilobular bilocation bilocellate bilocular biloculate Biloculina biloculine bilophodont Biloxi bilsh Bilskirnir bilsted biltong biltongue Bim bimaculate bimaculated bimalar Bimana bimanal bimane bimanous bimanual bimanually bimarginate bimarine bimastic bimastism bimastoid bimasty bimaxillary bimbil Bimbisara bimeby bimensal bimester bimestrial bimetalic bimetallism bimetallist bimetallistic bimillenary bimillennium bimillionaire Bimini Bimmeler bimodal bimodality bimolecular bimonthly bimotored bimotors bimucronate bimuscular bin binal binaphthyl binarium binary binate binately bination binational binaural binauricular binbashi bind binder bindery bindheimite binding bindingly bindingness bindle bindlet bindoree bindweb bindweed bindwith bindwood bine binervate bineweed bing binge bingey binghi bingle bingo bingy binh Bini biniodide Binitarian Binitarianism bink binman binna binnacle binning binnite binnogue bino binocle binocular binocularity binocularly binoculate binodal binode binodose binodous binomenclature binomial binomialism binomially binominal binominated binominous binormal binotic binotonous binous binoxalate binoxide bint bintangor binturong binuclear binucleate binucleated binucleolate binukau Binzuru biobibliographical biobibliography bioblast bioblastic biocatalyst biocellate biocentric biochemic biochemical biochemically biochemics biochemist biochemistry biochemy biochore bioclimatic bioclimatology biocoenose biocoenosis biocoenotic biocycle biod biodynamic biodynamical biodynamics biodyne bioecologic bioecological bioecologically bioecologist bioecology biogen biogenase biogenesis biogenesist biogenetic biogenetical biogenetically biogenetics biogenous biogeny biogeochemistry biogeographic biogeographical biogeographically biogeography biognosis biograph biographee biographer biographic biographical biographically biographist biographize biography bioherm biokinetics biolinguistics biolith biologese biologic biological biologically biologicohumanistic biologism biologist biologize biology bioluminescence bioluminescent biolysis biolytic biomagnetic biomagnetism biomathematics biome biomechanical biomechanics biometeorology biometer biometric biometrical biometrically biometrician biometricist biometrics biometry biomicroscopy bion bionergy bionomic bionomical bionomically bionomics bionomist bionomy biophagism biophagous biophagy biophilous biophore biophotophone biophysical biophysicochemical biophysics biophysiography biophysiological biophysiologist biophysiology biophyte bioplasm bioplasmic bioplast bioplastic bioprecipitation biopsic biopsy biopsychic biopsychical biopsychological biopsychologist biopsychology biopyribole bioral biorbital biordinal bioreaction biorgan bios bioscope bioscopic bioscopy biose biosis biosocial biosociological biosphere biostatic biostatical biostatics biostatistics biosterin biosterol biostratigraphy biosynthesis biosynthetic biosystematic biosystematics biosystematist biosystematy Biota biota biotaxy biotechnics biotic biotical biotics biotin biotite biotitic biotome biotomy biotope biotype biotypic biovular biovulate bioxalate bioxide bipack bipaleolate Bipaliidae Bipalium bipalmate biparasitic biparental biparietal biparous biparted bipartible bipartient bipartile bipartisan bipartisanship bipartite bipartitely bipartition biparty bipaschal bipectinate bipectinated biped bipedal bipedality bipedism bipeltate bipennate bipennated bipenniform biperforate bipersonal bipetalous biphase biphasic biphenol biphenyl biphenylene bipinnaria bipinnate bipinnated bipinnately bipinnatifid bipinnatiparted bipinnatipartite bipinnatisect bipinnatisected biplanal biplanar biplane biplicate biplicity biplosion biplosive bipod bipolar bipolarity bipolarize Bipont Bipontine biporose biporous biprism biprong bipunctal bipunctate bipunctual bipupillate bipyramid bipyramidal bipyridine bipyridyl biquadrantal biquadrate biquadratic biquarterly biquartz biquintile biracial biracialism biradial biradiate biradiated biramous birational birch birchbark birchen birching birchman birchwood bird birdbander birdbanding birdbath birdberry birdcall birdcatcher birdcatching birdclapper birdcraft birddom birdeen birder birdglue birdhood birdhouse birdie birdikin birding birdland birdless birdlet birdlike birdlime birdling birdlore birdman birdmouthed birdnest birdnester birdseed birdstone birdweed birdwise birdwoman birdy birectangular birefracting birefraction birefractive birefringence birefringent bireme biretta Birgus biri biriba birimose birk birken Birkenhead Birkenia Birkeniidae birkie birkremite birl birle birler birlie birlieman birlinn birma Birmingham Birminghamize birn birny Biron birostrate birostrated birotation birotatory birr birse birsle birsy birth birthbed birthday birthland birthless birthmark birthmate birthnight birthplace birthright birthroot birthstone birthstool birthwort birthy bis bisabol bisaccate bisacromial bisalt Bisaltae bisantler bisaxillary bisbeeite biscacha Biscanism Biscayan Biscayanism biscayen Biscayner bischofite biscotin biscuit biscuiting biscuitlike biscuitmaker biscuitmaking biscuitroot biscuitry bisdiapason bisdimethylamino bisect bisection bisectional bisectionally bisector bisectrices bisectrix bisegment biseptate biserial biserially biseriate biseriately biserrate bisetose bisetous bisexed bisext bisexual bisexualism bisexuality bisexually bisexuous bisglyoxaline Bishareen Bishari Bisharin bishop bishopdom bishopess bishopful bishophood bishopless bishoplet bishoplike bishopling bishopric bishopship bishopweed bisiliac bisilicate bisiliquous bisimine bisinuate bisinuation bisischiadic bisischiatic Bisley bislings bismar Bismarck Bismarckian Bismarckianism bismarine bismerpund bismillah bismite Bismosol bismuth bismuthal bismuthate bismuthic bismuthide bismuthiferous bismuthine bismuthinite bismuthite bismuthous bismuthyl bismutite bismutoplagionite bismutosmaltite bismutosphaerite bisnaga bison bisonant bisontine bisphenoid bispinose bispinous bispore bisporous bisque bisquette bissext bissextile bisson bistate bistephanic bister bistered bistetrazole bisti bistipular bistipulate bistipuled bistort Bistorta bistournage bistoury bistratal bistratose bistriate bistriazole bistro bisubstituted bisubstitution bisulcate bisulfid bisulphate bisulphide bisulphite bisyllabic bisyllabism bisymmetric bisymmetrical bisymmetrically bisymmetry bit bitable bitangent bitangential bitanhol bitartrate bitbrace bitch bite bitemporal bitentaculate biter biternate biternately bitesheep bitewing bitheism Bithynian biti biting bitingly bitingness Bitis bitless bito bitolyl bitonality bitreadle bitripartite bitripinnatifid bitriseptate bitrochanteric bitstock bitstone bitt bitted bitten bitter bitterbark bitterblain bitterbloom bitterbur bitterbush bitterful bitterhead bitterhearted bitterheartedness bittering bitterish bitterishness bitterless bitterling bitterly bittern bitterness bitternut bitterroot bitters bittersweet bitterweed bitterwood bitterworm bitterwort bitthead bittie Bittium bittock bitty bitubercular bituberculate bituberculated Bitulithic bitulithic bitume bitumed bitumen bituminate bituminiferous bituminization bituminize bituminoid bituminous bitwise bityite bitypic biune biunial biunity biunivocal biurate biurea biuret bivalence bivalency bivalent bivalve bivalved Bivalvia bivalvian bivalvous bivalvular bivariant bivariate bivascular bivaulted bivector biventer biventral biverbal bivinyl bivious bivittate bivocal bivocalized bivoltine bivoluminous bivouac biwa biweekly biwinter Bixa Bixaceae bixaceous bixbyite bixin biyearly biz bizardite bizarre bizarrely bizarreness Bizen bizet bizonal bizone Bizonia bizygomatic bizz Bjorne blab blabber blabberer blachong black blackacre blackamoor blackback blackball blackballer blackband Blackbeard blackbelly blackberry blackbine blackbird blackbirder blackbirding blackboard blackboy blackbreast blackbush blackbutt blackcap blackcoat blackcock blackdamp blacken blackener blackening blacker blacketeer blackey blackeyes blackface Blackfeet blackfellow blackfellows blackfin blackfire blackfish blackfisher blackfishing Blackfoot blackfoot Blackfriars blackguard blackguardism blackguardize blackguardly blackguardry Blackhander blackhead blackheads blackheart blackhearted blackheartedness blackie blacking blackish blackishly blackishness blackit blackjack blackland blackleg blackleggery blacklegism blacklegs blackly blackmail blackmailer blackneb blackneck blackness blacknob blackout blackpoll blackroot blackseed blackshirted blacksmith blacksmithing blackstick blackstrap blacktail blackthorn blacktongue blacktree blackwash blackwasher blackwater blackwood blackwork blackwort blacky blad bladder bladderet bladderless bladderlike bladdernose bladdernut bladderpod bladderseed bladderweed bladderwort bladdery blade bladebone bladed bladelet bladelike blader bladesmith bladewise blading bladish blady bladygrass blae blaeberry blaeness blaewort blaff blaffert blaflum blah blahlaut blain Blaine Blair blair blairmorite Blake blake blakeberyed blamable blamableness blamably blame blamed blameful blamefully blamefulness blameless blamelessly blamelessness blamer blameworthiness blameworthy blaming blamingly blan blanc blanca blancard Blanch blanch blancher blanching blanchingly blancmange blancmanger blanco bland blanda Blandfordia blandiloquence blandiloquious blandiloquous blandish blandisher blandishing blandishingly blandishment blandly blandness blank blankard blankbook blanked blankeel blanket blanketed blanketeer blanketflower blanketing blanketless blanketmaker blanketmaking blanketry blanketweed blankety blanking blankish Blankit blankite blankly blankness blanky blanque blanquillo blare Blarina blarney blarneyer blarnid blarny blart blas blase blash blashy Blasia blaspheme blasphemer blasphemous blasphemously blasphemousness blasphemy blast blasted blastema blastemal blastematic blastemic blaster blastful blasthole blastid blastie blasting blastment blastocarpous blastocheme blastochyle blastocoele blastocolla blastocyst blastocyte blastoderm blastodermatic blastodermic blastodisk blastogenesis blastogenetic blastogenic blastogeny blastogranitic blastoid Blastoidea blastoma blastomata blastomere blastomeric Blastomyces blastomycete Blastomycetes blastomycetic blastomycetous blastomycosis blastomycotic blastoneuropore Blastophaga blastophitic blastophoral blastophore blastophoric blastophthoria blastophthoric blastophyllum blastoporal blastopore blastoporic blastoporphyritic blastosphere blastospheric blastostylar blastostyle blastozooid blastplate blastula blastulae blastular blastulation blastule blasty blat blatancy blatant blatantly blate blately blateness blather blatherer blatherskite blathery blatjang Blatta blatta Blattariae blatter blatterer blatti blattid Blattidae blattiform Blattodea blattoid Blattoidea blaubok Blaugas blauwbok blaver blaw blawort blay Blayne blaze blazer blazing blazingly blazon blazoner blazoning blazonment blazonry blazy bleaberry bleach bleachability bleachable bleached bleacher bleacherite bleacherman bleachery bleachfield bleachground bleachhouse bleaching bleachman bleachworks bleachyard bleak bleakish bleakly bleakness bleaky blear bleared blearedness bleareye bleariness blearness bleary bleat bleater bleating bleatingly bleaty bleb blebby blechnoid Blechnum bleck blee bleed bleeder bleeding bleekbok bleery bleeze bleezy blellum blemish blemisher blemishment Blemmyes blench blencher blenching blenchingly blencorn blend blendcorn blende blended blender blending blendor blendure blendwater blennadenitis blennemesis blennenteria blennenteritis blenniid Blenniidae blenniiform Blenniiformes blennioid Blennioidea blennocele blennocystitis blennoemesis blennogenic blennogenous blennoid blennoma blennometritis blennophlogisma blennophlogosis blennophthalmia blennoptysis blennorrhagia blennorrhagic blennorrhea blennorrheal blennorrhinia blennosis blennostasis blennostatic blennothorax blennotorrhea blennuria blenny blennymenitis blent bleo blephara blepharadenitis blepharal blepharanthracosis blepharedema blepharelcosis blepharemphysema Blephariglottis blepharism blepharitic blepharitis blepharoadenitis blepharoadenoma blepharoatheroma blepharoblennorrhea blepharocarcinoma Blepharocera Blepharoceridae blepharochalasis blepharochromidrosis blepharoclonus blepharocoloboma blepharoconjunctivitis blepharodiastasis blepharodyschroia blepharohematidrosis blepharolithiasis blepharomelasma blepharoncosis blepharoncus blepharophimosis blepharophryplasty blepharophthalmia blepharophyma blepharoplast blepharoplastic blepharoplasty blepharoplegia blepharoptosis blepharopyorrhea blepharorrhaphy blepharospasm blepharospath blepharosphincterectomy blepharostat blepharostenosis blepharosymphysis blepharosyndesmitis blepharosynechia blepharotomy blepharydatis Blephillia blesbok blesbuck bless blessed blessedly blessedness blesser blessing blessingly blest blet bletheration Bletia Bletilla blewits blibe blick blickey Blighia blight blightbird blighted blighter blighting blightingly blighty blimbing blimp blimy blind blindage blindball blinded blindedly blinder blindeyes blindfast blindfish blindfold blindfolded blindfoldedness blindfolder blindfoldly blinding blindingly blindish blindless blindling blindly blindness blindstory blindweed blindworm blink blinkard blinked blinker blinkered blinking blinkingly blinks blinky blinter blintze blip bliss blissful blissfully blissfulness blissless blissom blister blistered blistering blisteringly blisterweed blisterwort blistery blite blithe blithebread blitheful blithefully blithehearted blithelike blithely blithemeat blithen blitheness blither blithering blithesome blithesomely blithesomeness blitter Blitum blitz blitzbuggy blitzkrieg blizz blizzard blizzardly blizzardous blizzardy blo bloat bloated bloatedness bloater bloating blob blobbed blobber blobby bloc block blockade blockader blockage blockbuster blocked blocker blockhead blockheaded blockheadedly blockheadedness blockheadish blockheadishness blockheadism blockholer blockhouse blockiness blocking blockish blockishly blockishness blocklayer blocklike blockmaker blockmaking blockman blockpate blockship blocky blodite bloke blolly blomstrandine blonde blondeness blondine blood bloodalley bloodalp bloodbeat bloodberry bloodbird bloodcurdler bloodcurdling blooddrop blooddrops blooded bloodfin bloodflower bloodguilt bloodguiltiness bloodguiltless bloodguilty bloodhound bloodied bloodily bloodiness bloodleaf bloodless bloodlessly bloodlessness bloodletter bloodletting bloodline bloodmobile bloodmonger bloodnoun bloodripe bloodripeness bloodroot bloodshed bloodshedder bloodshedding bloodshot bloodshotten bloodspiller bloodspilling bloodstain bloodstained bloodstainedness bloodstanch bloodstock bloodstone bloodstroke bloodsuck bloodsucker bloodsucking bloodthirst bloodthirster bloodthirstily bloodthirstiness bloodthirsting bloodthirsty bloodweed bloodwite bloodwood bloodworm bloodwort bloodworthy bloody bloodybones blooey bloom bloomage bloomer Bloomeria bloomerism bloomers bloomery bloomfell blooming bloomingly bloomingness bloomkin bloomless Bloomsburian Bloomsbury bloomy bloop blooper blooping blore blosmy blossom blossombill blossomed blossomhead blossomless blossomry blossomtime blossomy blot blotch blotched blotchy blotless blotter blottesque blottesquely blotting blottingly blotto blotty bloubiskop blouse bloused blousing blout blow blowback blowball blowcock blowdown blowen blower blowfish blowfly blowgun blowhard blowhole blowiness blowing blowings blowiron blowlamp blowline blown blowoff blowout blowpipe blowpoint blowproof blowspray blowth blowtorch blowtube blowup blowy blowze blowzed blowzing blowzy blub blubber blubberer blubbering blubberingly blubberman blubberous blubbery blucher bludgeon bludgeoned bludgeoneer bludgeoner blue blueback bluebead Bluebeard bluebeard Bluebeardism bluebell bluebelled blueberry bluebill bluebird blueblaw bluebonnet bluebook bluebottle bluebreast bluebuck bluebush bluebutton bluecap bluecoat bluecup bluefish bluegill bluegown bluegrass bluehearted bluehearts blueing bluejack bluejacket bluejoint blueleg bluelegs bluely blueness bluenose Bluenoser blueprint blueprinter bluer blues bluesides bluestem bluestocking bluestockingish bluestockingism bluestone bluestoner bluet bluethroat bluetongue bluetop blueweed bluewing bluewood bluey bluff bluffable bluffer bluffly bluffness bluffy bluggy bluing bluish bluishness bluism Blumea blunder blunderbuss blunderer blunderful blunderhead blunderheaded blunderheadedness blundering blunderingly blundersome blunge blunger blunk blunker blunks blunnen blunt blunter blunthead blunthearted bluntie bluntish bluntly bluntness blup blur blurb blurbist blurred blurredness blurrer blurry blurt blush blusher blushful blushfully blushfulness blushiness blushing blushingly blushless blushwort blushy bluster blusteration blusterer blustering blusteringly blusterous blusterously blustery blype bo boa Boaedon boagane Boanbura Boanerges boanergism boar boarcite board boardable boarder boarding boardinghouse boardlike boardly boardman boardwalk boardy boarfish boarhound boarish boarishly boarishness boarship boarskin boarspear boarstaff boarwood boast boaster boastful boastfully boastfulness boasting boastive boastless boat boatable boatage boatbill boatbuilder boatbuilding boater boatfalls boatful boathead boatheader boathouse boatie boating boatkeeper boatless boatlike boatlip boatload boatloader boatloading boatly boatman boatmanship boatmaster boatowner boatsetter boatshop boatside boatsman boatswain boattail boatward boatwise boatwoman boatwright Bob bob boba bobac Bobadil Bobadilian Bobadilish Bobadilism bobbed bobber bobbery Bobbie bobbin bobbiner bobbinet bobbing Bobbinite bobbinwork bobbish bobbishly bobble Bobby bobby bobcat bobcoat bobeche bobfly bobierrite bobization bobjerom bobo bobolink bobotie bobsled bobsleigh bobstay bobtail bobtailed bobwhite bobwood bocaccio bocal bocardo bocasine bocca boccale boccarella boccaro bocce Bocconia boce bocedization Boche bocher Bochism bock bockerel bockeret bocking bocoy bod bodach bodacious bodaciously bode bodeful bodega bodement boden bodenbenderite boder bodewash bodge bodger bodgery bodhi bodhisattva bodice bodiced bodicemaker bodicemaking bodied bodier bodieron bodikin bodiless bodilessness bodiliness bodily bodiment boding bodingly bodkin bodkinwise bodle Bodleian Bodo bodock Bodoni body bodybending bodybuilder bodyguard bodyhood bodyless bodymaker bodymaking bodyplate bodywise bodywood bodywork Boebera Boedromion Boehmenism Boehmenist Boehmenite Boehmeria boeotarch Boeotian Boeotic Boer Boerdom Boerhavia Boethian Boethusian bog boga bogan bogard bogart bogberry bogey bogeyman boggart boggin bogginess boggish boggle bogglebo boggler boggy boghole bogie bogieman bogier Bogijiab bogland boglander bogle bogledom boglet bogman bogmire Bogo bogo Bogomil Bogomile Bogomilian bogong Bogota bogsucker bogtrot bogtrotter bogtrotting bogue bogum bogus bogusness bogway bogwood bogwort bogy bogydom bogyism bogyland Bohairic bohawn bohea Bohemia Bohemian Bohemianism bohemium bohereen bohireen boho bohor bohunk boid Boidae Boii Boiko boil boilable boildown boiled boiler boilerful boilerhouse boilerless boilermaker boilermaking boilerman boilersmith boilerworks boilery boiling boilinglike boilingly boilover boily Bois boist boisterous boisterously boisterousness bojite bojo bokadam bokard bokark boke Bokhara Bokharan bokom bola Bolag bolar Bolboxalis bold bolden Bolderian boldhearted boldine boldly boldness boldo Boldu bole bolection bolectioned boled boleite Bolelia bolelike bolero Boletaceae boletaceous bolete Boletus boleweed bolewort bolide bolimba bolis bolivar bolivarite bolivia Bolivian boliviano bolk boll Bollandist bollard bolled boller bolling bollock bollworm bolly Bolo bolo Bologna Bolognan Bolognese bolograph bolographic bolographically bolography Boloism boloman bolometer bolometric boloney boloroot Bolshevik Bolsheviki Bolshevikian Bolshevism Bolshevist Bolshevistic Bolshevistically Bolshevize Bolshie bolson bolster bolsterer bolsterwork bolt boltage boltant boltcutter boltel bolter bolthead boltheader boltheading bolthole bolti bolting boltless boltlike boltmaker boltmaking Boltonia boltonite boltrope boltsmith boltstrake boltuprightness boltwork bolus Bolyaian bom boma Bomarea bomb bombable Bombacaceae bombacaceous bombard bombarde bombardelle bombarder bombardier bombardment bombardon bombast bombaster bombastic bombastically bombastry Bombax Bombay bombazet bombazine bombed bomber bombiccite Bombidae bombilate bombilation Bombinae bombinate bombination bombo bombola bombonne bombous bombproof bombshell bombsight Bombus bombycid Bombycidae bombyciform Bombycilla Bombycillidae Bombycina bombycine Bombyliidae Bombyx Bon bon bonaci bonagh bonaght bonair bonairly bonairness bonally bonang bonanza Bonapartean Bonapartism Bonapartist Bonasa bonasus bonaventure Bonaveria bonavist Bonbo bonbon bonce bond bondage bondager bondar bonded Bondelswarts bonder bonderman bondfolk bondholder bondholding bonding bondless bondman bondmanship bondsman bondstone bondswoman bonduc bondwoman bone boneache bonebinder boneblack bonebreaker boned bonedog bonefish boneflower bonehead boneheaded boneless bonelessly bonelessness bonelet bonelike Bonellia boner boneset bonesetter bonesetting boneshaker boneshaw bonetail bonewood bonework bonewort Boney bonfire bong Bongo bongo bonhomie Boni boniata Boniface bonification boniform bonify boniness boninite bonitarian bonitary bonito bonk bonnaz bonnet bonneted bonneter bonnethead bonnetless bonnetlike bonnetman bonnibel Bonnie bonnily bonniness Bonny bonny bonnyclabber bonnyish bonnyvis Bononian bonsai bonspiel bontebok bontebuck bontequagga Bontok bonus bonxie bony bonyfish bonze bonzer bonzery bonzian boo boob boobery boobily boobook booby boobyalla boobyish boobyism bood boodie boodle boodledom boodleism boodleize boodler boody boof booger boogiewoogie boohoo boojum book bookable bookbinder bookbindery bookbinding bookboard bookcase bookcraft bookdealer bookdom booked booker bookery bookfold bookful bookholder bookhood bookie bookiness booking bookish bookishly bookishness bookism bookkeeper bookkeeping bookland bookless booklet booklike bookling booklore booklover bookmaker bookmaking Bookman bookman bookmark bookmarker bookmate bookmobile bookmonger bookplate bookpress bookrack bookrest bookroom bookseller booksellerish booksellerism bookselling bookshelf bookshop bookstack bookstall bookstand bookstore bookward bookwards bookways bookwise bookwork bookworm bookwright booky bool Boolian booly boolya boom boomable boomage boomah boomboat boomdas boomer boomerang booming boomingly boomless boomlet boomorah boomslang boomslange boomster boomy boon boondock boondocks boondoggle boondoggler Boone boonfellow boongary boonk boonless Boophilus boopis boor boorish boorishly boorishness boort boose boost booster boosterism boosy boot bootblack bootboy booted bootee booter bootery Bootes bootful booth boother Boothian boothite bootholder boothose Bootid bootied bootikin booting bootjack bootlace bootleg bootlegger bootlegging bootless bootlessly bootlessness bootlick bootlicker bootmaker bootmaking boots bootstrap booty bootyless booze boozed boozer boozily booziness boozy bop bopeep boppist bopyrid Bopyridae bopyridian Bopyrus bor bora borable borachio boracic boraciferous boracous borage Boraginaceae boraginaceous Borago Borak borak boral Boran Borana Borani borasca borasque Borassus borate borax Borboridae Borborus borborygmic borborygmus bord bordage bordar bordarius Bordeaux bordel bordello border bordered borderer Borderies bordering borderism borderland borderlander borderless borderline bordermark Borderside bordroom bordure bordured bore boreable boread Boreades boreal borealis borean Boreas borecole boredom boree boreen boregat borehole Boreiad boreism borele borer boresome Boreus borg borgh borghalpenny Borghese borh boric borickite boride borine boring boringly boringness Borinqueno Boris borish borism bority borize borlase born borne Bornean Borneo borneol borning bornite bornitic bornyl Boro boro Borocaine borocalcite borocarbide borocitrate borofluohydric borofluoric borofluoride borofluorin boroglycerate boroglyceride boroglycerine borolanite boron boronatrocalcite Boronia boronic borophenol borophenylic Bororo Bororoan borosalicylate borosalicylic borosilicate borosilicic borotungstate borotungstic borough boroughlet boroughmaster boroughmonger boroughmongering boroughmongery boroughship borowolframic borracha borrel Borrelia Borrelomycetaceae Borreria Borrichia Borromean Borrovian borrow borrowable borrower borrowing borsch borscht borsholder borsht borstall bort bortsch borty bortz Boruca Borussian borwort boryl Borzicactus borzoi Bos Bosc boscage bosch boschbok Boschneger boschvark boschveld bose Boselaphus boser bosh Boshas bosher Bosjesman bosjesman bosk bosker bosket boskiness bosky bosn Bosniac Bosniak Bosnian Bosnisch bosom bosomed bosomer bosomy Bosporan Bosporanic Bosporian bosporus boss bossage bossdom bossed bosselated bosselation bosser bosset bossiness bossing bossism bosslet bossship bossy bostangi bostanji bosthoon Boston boston Bostonese Bostonian bostonite bostrychid Bostrychidae bostrychoid bostrychoidal bostryx bosun Boswellia Boswellian Boswelliana Boswellism Boswellize bot bota botanic botanical botanically botanist botanize botanizer botanomancy botanophile botanophilist botany botargo Botaurinae Botaurus botch botched botchedly botcher botcherly botchery botchily botchiness botchka botchy bote Botein botella boterol botfly both bother botheration botherer botherheaded botherment bothersome bothlike Bothnian Bothnic bothrenchyma Bothriocephalus Bothriocidaris Bothriolepis bothrium Bothrodendron bothropic Bothrops bothros bothsided bothsidedness bothway bothy Botocudo botonee botong Botrychium Botrydium Botryllidae Botryllus botryogen botryoid botryoidal botryoidally botryolite Botryomyces botryomycoma botryomycosis botryomycotic Botryopteriaceae botryopterid Botryopteris botryose botryotherapy Botrytis bott bottekin Botticellian bottine bottle bottlebird bottled bottleflower bottleful bottlehead bottleholder bottlelike bottlemaker bottlemaking bottleman bottleneck bottlenest bottlenose bottler bottling bottom bottomchrome bottomed bottomer bottoming bottomless bottomlessly bottomlessness bottommost bottomry bottstick botuliform botulin botulinum botulism botulismus bouchal bouchaleen boucharde bouche boucher boucherism boucherize bouchette boud boudoir bouffancy bouffant Bougainvillaea Bougainvillea Bougainvillia Bougainvilliidae bougar bouge bouget bough boughed boughless boughpot bought boughten boughy bougie bouillabaisse bouillon bouk boukit boulangerite Boulangism Boulangist boulder boulderhead bouldering bouldery boule boulevard boulevardize boultel boulter boulterer boun bounce bounceable bounceably bouncer bouncing bouncingly bound boundable boundary bounded boundedly boundedness bounden bounder bounding boundingly boundless boundlessly boundlessness boundly boundness bounteous bounteously bounteousness bountied bountiful bountifully bountifulness bountith bountree bounty bountyless bouquet bourasque Bourbon bourbon Bourbonesque Bourbonian Bourbonism Bourbonist bourbonize bourd bourder bourdon bourette bourg bourgeois bourgeoise bourgeoisie bourgeoisitic Bourignian Bourignianism Bourignianist Bourignonism Bourignonist bourn bournless bournonite bourock Bourout bourse bourtree bouse bouser Boussingaultia boussingaultite boustrophedon boustrophedonic bousy bout boutade Bouteloua bouto boutonniere boutylka Bouvardia bouw bovarism bovarysm bovate bovenland bovicide boviculture bovid Bovidae boviform bovine bovinely bovinity Bovista bovoid bovovaccination bovovaccine bow bowable bowback bowbells bowbent bowboy Bowdichia bowdlerism bowdlerization bowdlerize bowed bowedness bowel boweled bowelless bowellike bowels bowenite bower bowerbird bowerlet bowermaiden bowermay bowerwoman Bowery bowery Boweryish bowet bowfin bowgrace bowhead bowie bowieful bowing bowingly bowk bowkail bowker bowknot bowl bowla bowleg bowlegged bowleggedness bowler bowless bowlful bowlike bowline bowling bowllike bowlmaker bowls bowly bowmaker bowmaking bowman bowpin bowralite bowshot bowsprit bowstave bowstring bowstringed bowwoman bowwood bowwort bowwow bowyer boxberry boxboard boxbush boxcar boxen Boxer boxer Boxerism boxfish boxful boxhaul boxhead boxing boxkeeper boxlike boxmaker boxmaking boxman boxthorn boxty boxwallah boxwood boxwork boxy boy boyang boyar boyard boyardism boyardom boyarism Boyce boycott boycottage boycotter boycottism Boyd boydom boyer boyhood boyish boyishly boyishness boyism boyla boylike boyology boysenberry boyship boza bozal bozo bozze bra brab brabagious brabant Brabanter Brabantine brabble brabblement brabbler brabblingly Brabejum braca braccate braccia bracciale braccianite braccio brace braced bracelet braceleted bracer bracero braces brach Brachelytra brachelytrous bracherer brachering brachet brachial brachialgia brachialis Brachiata brachiate brachiation brachiator brachiferous brachigerous Brachinus brachiocephalic brachiocrural brachiocubital brachiocyllosis brachiofacial brachiofaciolingual brachioganoid Brachioganoidei brachiolaria brachiolarian brachiopod Brachiopoda brachiopode brachiopodist brachiopodous brachioradial brachioradialis brachiorrhachidian brachiorrheuma brachiosaur Brachiosaurus brachiostrophosis brachiotomy brachistocephali brachistocephalic brachistocephalous brachistocephaly brachistochrone brachistochronic brachistochronous brachium brachtmema brachyaxis brachycardia brachycatalectic brachycephal brachycephalic brachycephalism brachycephalization brachycephalize brachycephalous brachycephaly Brachycera brachyceral brachyceric brachycerous brachychronic brachycnemic Brachycome brachycranial brachydactyl brachydactylic brachydactylism brachydactylous brachydactyly brachydiagonal brachydodrome brachydodromous brachydomal brachydomatic brachydome brachydont brachydontism brachyfacial brachyglossal brachygnathia brachygnathism brachygnathous brachygrapher brachygraphic brachygraphical brachygraphy brachyhieric brachylogy brachymetropia brachymetropic Brachyoura brachyphalangia Brachyphyllum brachypinacoid brachypinacoidal brachypleural brachypnea brachypodine brachypodous brachyprism brachyprosopic brachypterous brachypyramid brachyrrhinia brachysclereid brachyskelic brachysm brachystaphylic Brachystegia brachystochrone Brachystomata brachystomatous brachystomous brachytic brachytypous Brachyura brachyural brachyuran brachyuranic brachyure brachyurous Brachyurus bracing bracingly bracingness brack brackebuschite bracken brackened bracker bracket bracketing bracketwise brackish brackishness brackmard bracky Bracon braconid Braconidae bract bractea bracteal bracteate bracted bracteiform bracteolate bracteole bracteose bractless bractlet Brad brad bradawl Bradbury Bradburya bradenhead Bradford Bradley bradmaker Bradshaw bradsot bradyacousia bradycardia bradycauma bradycinesia bradycrotic bradydactylia bradyesthesia bradyglossia bradykinesia bradykinetic bradylalia bradylexia bradylogia bradynosus bradypepsia bradypeptic bradyphagia bradyphasia bradyphemia bradyphrasia bradyphrenia bradypnea bradypnoea bradypod bradypode Bradypodidae bradypodoid Bradypus bradyseism bradyseismal bradyseismic bradyseismical bradyseismism bradyspermatism bradysphygmia bradystalsis bradyteleocinesia bradyteleokinesis bradytocia bradytrophic bradyuria brae braeface braehead braeman braeside brag braggardism braggart braggartism braggartly braggartry braggat bragger braggery bragget bragging braggingly braggish braggishly Bragi bragite bragless braguette Brahm Brahma brahmachari Brahmahood Brahmaic Brahman Brahmana Brahmanaspati Brahmanda Brahmaness Brahmanhood Brahmani Brahmanic Brahmanical Brahmanism Brahmanist Brahmanistic Brahmanize Brahmany Brahmi Brahmic Brahmin Brahminic Brahminism Brahmoism Brahmsian Brahmsite Brahui braid braided braider braiding Braidism Braidist brail Braille Braillist brain brainache braincap braincraft brainer brainfag brainge braininess brainless brainlessly brainlessness brainlike brainpan brains brainsick brainsickly brainsickness brainstone brainward brainwash brainwasher brainwashing brainwater brainwood brainwork brainworker brainy braird braireau brairo braise brake brakeage brakehand brakehead brakeless brakeload brakemaker brakemaking brakeman braker brakeroot brakesman brakie braky Bram Bramantesque Bramantip bramble brambleberry bramblebush brambled brambling brambly brambrack Bramia bran brancard branch branchage branched Branchellion brancher branchery branchful branchi branchia branchiae branchial Branchiata branchiate branchicolous branchiferous branchiform branchihyal branchiness branching Branchiobdella branchiocardiac branchiogenous branchiomere branchiomeric branchiomerism branchiopallial branchiopod Branchiopoda branchiopodan branchiopodous Branchiopulmonata branchiopulmonate branchiosaur Branchiosauria branchiosaurian Branchiosaurus branchiostegal Branchiostegidae branchiostegite branchiostegous Branchiostoma branchiostomid Branchiostomidae Branchipodidae Branchipus branchireme Branchiura branchiurous branchless branchlet branchlike branchling branchman branchstand branchway branchy brand branded Brandenburg Brandenburger brander brandering Brandi brandied brandify brandise brandish brandisher brandisite brandless brandling Brandon brandreth Brandy brandy brandyball brandyman brandywine brangle brangled branglement brangler brangling branial brank brankie brankursine branle branner brannerite branny bransle bransolder brant Branta brantail brantness Brasenia brash brashiness brashness brashy brasiletto brasque brass brassage brassard brassart Brassavola brassbound brassbounder brasse brasser brasset Brassia brassic Brassica Brassicaceae brassicaceous brassidic brassie brassiere brassily brassiness brassish brasslike brassware brasswork brassworker brassworks brassy brassylic brat bratling bratstvo brattach brattice bratticer bratticing brattie brattish brattishing brattle brauna Brauneberger Brauneria braunite Brauronia Brauronian Brava bravade bravado bravadoism brave bravehearted bravely braveness braver bravery braving bravish bravo bravoite bravura bravuraish braw brawl brawler brawling brawlingly brawlsome brawly brawlys brawn brawned brawnedness brawner brawnily brawniness brawny braws braxy bray brayer brayera brayerin braystone braza braze brazen brazenface brazenfaced brazenfacedly brazenly brazenness brazer brazera brazier braziery brazil brazilein brazilette Brazilian brazilin brazilite brazilwood breach breacher breachful breachy bread breadbasket breadberry breadboard breadbox breadearner breadearning breaden breadfruit breadless breadlessness breadmaker breadmaking breadman breadnut breadroot breadseller breadstuff breadth breadthen breadthless breadthriders breadthways breadthwise breadwinner breadwinning breaghe break breakable breakableness breakably breakage breakaway breakax breakback breakbones breakdown breaker breakerman breakfast breakfaster breakfastless breaking breakless breakneck breakoff breakout breakover breakshugh breakstone breakthrough breakup breakwater breakwind bream breards breast breastband breastbeam breastbone breasted breaster breastfeeding breastful breastheight breasthook breastie breasting breastless breastmark breastpiece breastpin breastplate breastplow breastrail breastrope breastsummer breastweed breastwise breastwood breastwork breath breathable breathableness breathe breathed breather breathful breathiness breathing breathingly breathless breathlessly breathlessness breathseller breathy breba breccia breccial brecciated brecciation brecham Brechites breck brecken bred bredbergite brede bredi bree breech breechblock breechcloth breechclout breeched breeches breechesflower breechesless breeching breechless breechloader breed breedable breedbate breeder breediness breeding breedy breek breekless breekums breeze breezeful breezeless breezelike breezeway breezily breeziness breezy bregma bregmata bregmate bregmatic brehon brehonship brei breislakite breithauptite brekkle brelaw breloque breme bremely bremeness Bremia bremsstrahlung Brenda Brendan Brender brennage Brent brent Brenthis brephic Brescian Bret bret bretelle bretesse breth brethren Breton Bretonian Bretschneideraceae Brett brett brettice Bretwalda Bretwaldadom Bretwaldaship breunnerite breva breve brevet brevetcy breviary breviate breviature brevicaudate brevicipitid Brevicipitidae breviconic brevier brevifoliate breviger brevilingual breviloquence breviloquent breviped brevipen brevipennate breviradiate brevirostral brevirostrate Brevirostrines brevit brevity brew brewage brewer brewership brewery brewhouse brewing brewis brewmaster brewst brewster brewsterite brey Brian briar briarberry Briard Briarean Briareus briarroot bribe bribee bribegiver bribegiving bribemonger briber bribery bribetaker bribetaking bribeworthy Bribri brichen brichette brick brickbat brickcroft brickel bricken brickfield brickfielder brickhood bricking brickish brickkiln bricklayer bricklaying brickle brickleness bricklike brickliner bricklining brickly brickmaker brickmaking brickmason brickset bricksetter bricktimber brickwise brickwork bricky brickyard bricole bridal bridale bridaler bridally Bride bride bridebed bridebowl bridecake bridechamber bridecup bridegod bridegroom bridegroomship bridehead bridehood brideknot bridelace brideless bridelike bridely bridemaid bridemaiden bridemaidship brideship bridesmaid bridesmaiding bridesman bridestake bridewain brideweed bridewell bridewort bridge bridgeable bridgeboard bridgebote bridgebuilder bridgebuilding bridged bridgehead bridgekeeper bridgeless bridgelike bridgemaker bridgemaking bridgeman bridgemaster bridgepot Bridger bridger Bridget bridgetree bridgeward bridgewards bridgeway bridgework bridging bridle bridled bridleless bridleman bridler bridling bridoon brief briefing briefless brieflessly brieflessness briefly briefness briefs brier brierberry briered brierroot brierwood briery brieve brig brigade brigadier brigadiership brigalow brigand brigandage brigander brigandine brigandish brigandishly brigandism Brigantes Brigantia brigantine brigatry brigbote brigetty Briggs Briggsian Brighella Brighid bright brighten brightener brightening Brighteyes brighteyes brightish brightly brightness brightsmith brightsome brightsomeness brightwork Brigid Brigittine brill brilliance brilliancy brilliandeer brilliant brilliantine brilliantly brilliantness brilliantwise brilliolette brillolette brills brim brimborion brimborium brimful brimfully brimfulness briming brimless brimmed brimmer brimming brimmingly brimstone brimstonewort brimstony brin brindlish brine brinehouse brineless brineman briner bring bringal bringall bringer brininess brinish brinishness brinjal brinjarry brink brinkless briny brioche briolette brique briquette brisk brisken brisket briskish briskly briskness brisling brisque briss Brissotin Brissotine bristle bristlebird bristlecone bristled bristleless bristlelike bristler bristletail bristlewort bristliness bristly Bristol brisure brit Britain Britannia Britannian Britannic Britannically britchka brith brither Briticism British Britisher Britishhood Britishism Britishly Britishness Briton Britoness britska Brittany britten brittle brittlebush brittlely brittleness brittlestem brittlewood brittlewort brittling Briza brizz broach broacher broad broadacre broadax broadbill Broadbrim broadbrim broadcast broadcaster broadcloth broaden broadhead broadhearted broadhorn broadish broadleaf broadloom broadly broadmouth broadness broadpiece broadshare broadsheet broadside broadspread broadsword broadtail broadthroat Broadway broadway Broadwayite broadways broadwife broadwise brob Brobdingnag Brobdingnagian brocade brocaded brocard brocardic brocatel brocatello broccoli broch brochan brochant brochantite broche brochette brochidodromous brocho brochure brock brockage brocked brocket brockle brod brodder brodeglass brodequin broderer Brodiaea Brodie brog brogan brogger broggerite broggle brogue brogueful brogueneer broguer broguery broguish broider broiderer broideress broidery broigne broil broiler broiling broilingly brokage broke broken brokenhearted brokenheartedly brokenheartedness brokenly brokenness broker brokerage brokeress brokership broking brolga broll brolly broma bromacetanilide bromacetate bromacetic bromacetone bromal bromalbumin bromamide bromargyrite bromate bromaurate bromauric brombenzamide brombenzene brombenzyl bromcamphor bromcresol brome bromeigon Bromeikon bromeikon Bromelia Bromeliaceae bromeliaceous bromeliad bromelin bromellite bromethyl bromethylene bromgelatin bromhidrosis bromhydrate bromhydric Bromian bromic bromide bromidic bromidically bromidrosis brominate bromination bromindigo bromine brominism brominize bromiodide Bromios bromism bromite Bromius bromization bromize bromizer bromlite bromoacetone bromoaurate bromoauric bromobenzene bromobenzyl bromocamphor bromochlorophenol bromocresol bromocyanidation bromocyanide bromocyanogen bromoethylene bromoform bromogelatin bromohydrate bromohydrin bromoil bromoiodide bromoiodism bromoiodized bromoketone bromol bromomania bromomenorrhea bromomethane bromometric bromometrical bromometrically bromometry bromonaphthalene bromophenol bromopicrin bromopnea bromoprotein bromothymol bromous bromphenol brompicrin bromthymol bromuret Bromus bromvogel bromyrite bronc bronchadenitis bronchi bronchia bronchial bronchially bronchiarctia bronchiectasis bronchiectatic bronchiloquy bronchiocele bronchiocrisis bronchiogenic bronchiolar bronchiole bronchioli bronchiolitis bronchiolus bronchiospasm bronchiostenosis bronchitic bronchitis bronchium bronchoadenitis bronchoalveolar bronchoaspergillosis bronchoblennorrhea bronchocavernous bronchocele bronchocephalitis bronchoconstriction bronchoconstrictor bronchodilatation bronchodilator bronchoegophony bronchoesophagoscopy bronchogenic bronchohemorrhagia broncholemmitis broncholith broncholithiasis bronchomotor bronchomucormycosis bronchomycosis bronchopathy bronchophonic bronchophony bronchophthisis bronchoplasty bronchoplegia bronchopleurisy bronchopneumonia bronchopneumonic bronchopulmonary bronchorrhagia bronchorrhaphy bronchorrhea bronchoscope bronchoscopic bronchoscopist bronchoscopy bronchospasm bronchostenosis bronchostomy bronchotetany bronchotome bronchotomist bronchotomy bronchotracheal bronchotyphoid bronchotyphus bronchovesicular bronchus bronco broncobuster brongniardite bronk Bronteana bronteon brontephobia Brontesque bronteum brontide brontogram brontograph brontolite brontology brontometer brontophobia Brontops Brontosaurus brontoscopy Brontotherium Brontozoum Bronx bronze bronzed bronzelike bronzen bronzer bronzesmith bronzewing bronzify bronzine bronzing bronzite bronzitite bronzy broo brooch brood brooder broodiness brooding broodingly broodless broodlet broodling broody brook brookable Brooke brooked brookflower brookie brookite brookless brooklet brooklike brooklime Brooklynite brookside brookweed brooky brool broom broombush broomcorn broomer broommaker broommaking broomrape broomroot broomshank broomstaff broomstick broomstraw broomtail broomweed broomwood broomwort broomy broon broose broozled brose Brosimum brosot brosy brot brotan brotany broth brothel brotheler brothellike brothelry brother brotherhood brotherless brotherlike brotherliness brotherly brothership Brotherton brotherwort brothy brotocrystal Brotula brotulid Brotulidae brotuliform brough brougham brought Broussonetia brow browache Browallia browallia browband browbeat browbeater browbound browden browed browis browless browman brown brownback browner Brownian brownie browniness browning Browningesque brownish Brownism Brownist Brownistic Brownistical brownly brownness brownout brownstone browntail browntop brownweed brownwort browny browpiece browpost browse browser browsick browsing browst bruang Bruce Brucella brucellosis Bruchidae Bruchus brucia brucina brucine brucite bruckle bruckled bruckleness Bructeri brugh brugnatellite bruin bruise bruiser bruisewort bruising bruit bruiter bruke Brule brulee brulyie brulyiement brumal Brumalia brumby brume Brummagem brummagem brumous brumstane brumstone brunch Brunella Brunellia Brunelliaceae brunelliaceous brunet brunetness brunette brunetteness Brunfelsia brunissure Brunistic brunneous Brunnichia Bruno Brunonia Brunoniaceae Brunonian Brunonism Brunswick brunswick brunt bruscus brush brushable brushball brushbird brushbush brushed brusher brushes brushet brushful brushiness brushing brushite brushland brushless brushlessness brushlet brushlike brushmaker brushmaking brushman brushoff brushproof brushwood brushwork brushy brusque brusquely brusqueness Brussels brustle brut Bruta brutage brutal brutalism brutalist brutalitarian brutality brutalization brutalize brutally brute brutedom brutelike brutely bruteness brutification brutify bruting brutish brutishly brutishness brutism brutter Brutus bruzz Bryaceae bryaceous Bryales Bryan Bryanism Bryanite Bryanthus Bryce bryogenin bryological bryologist bryology Bryonia bryonidin bryonin bryony Bryophyllum Bryophyta bryophyte bryophytic Bryozoa bryozoan bryozoon bryozoum Brython Brythonic Bryum Bu bu bual buaze bub buba bubal bubaline Bubalis bubalis Bubastid Bubastite bubble bubbleless bubblement bubbler bubbling bubblingly bubblish bubbly bubby bubbybush Bube bubinga Bubo bubo buboed bubonalgia bubonic Bubonidae bubonocele bubukle bucare bucca buccal buccally buccan buccaneer buccaneerish buccate Buccellarius buccina buccinal buccinator buccinatory Buccinidae bucciniform buccinoid Buccinum Bucco buccobranchial buccocervical buccogingival buccolabial buccolingual bucconasal Bucconidae Bucconinae buccopharyngeal buccula Bucculatrix bucentaur Bucephala Bucephalus Buceros Bucerotes Bucerotidae Bucerotinae Buchanan Buchanite buchite Buchloe Buchmanism Buchmanite Buchnera buchnerite buchonite buchu buck buckaroo buckberry buckboard buckbrush buckbush bucked buckeen bucker bucket bucketer bucketful bucketing bucketmaker bucketmaking bucketman buckety buckeye buckhorn buckhound buckie bucking buckish buckishly buckishness buckjump buckjumper bucklandite buckle buckled buckleless buckler Buckleya buckling bucklum bucko buckplate buckpot buckra buckram bucksaw buckshee buckshot buckskin buckskinned buckstall buckstay buckstone bucktail buckthorn bucktooth buckwagon buckwash buckwasher buckwashing buckwheat buckwheater buckwheatlike Bucky bucky bucoliast bucolic bucolical bucolically bucolicism Bucorvinae Bucorvus bucrane bucranium Bud bud buda buddage budder Buddh Buddha Buddhahood Buddhaship buddhi Buddhic Buddhism Buddhist Buddhistic Buddhistical Buddhology budding buddle Buddleia buddleman buddler buddy budge budger budgeree budgereegah budgerigar budgerow budget budgetary budgeteer budgeter budgetful Budh budless budlet budlike budmash Budorcas budtime Budukha Buduma budwood budworm budzat Buettneria Buettneriaceae bufagin buff buffable buffalo buffaloback buffball buffcoat buffed buffer buffet buffeter buffing buffle bufflehead bufflehorn buffont buffoon buffoonery buffoonesque buffoonish buffoonism buffware buffy bufidin bufo Bufonidae bufonite bufotalin bug bugaboo bugan bugbane bugbear bugbeardom bugbearish bugbite bugdom bugfish bugger buggery bugginess buggy buggyman bughead bughouse Bugi Buginese Buginvillaea bugle bugled bugler buglet bugleweed buglewort bugloss bugologist bugology bugproof bugre bugseed bugweed bugwort buhl buhr buhrstone build buildable builder building buildingless buildress buildup built buirdly buisson buist Bukat Bukeyef bukh Bukidnon bukshi bulak Bulanda bulb bulbaceous bulbar bulbed bulbiferous bulbiform bulbil Bulbilis bulbilla bulbless bulblet bulblike bulbocapnin bulbocapnine bulbocavernosus bulbocavernous Bulbochaete Bulbocodium bulbomedullary bulbomembranous bulbonuclear Bulbophyllum bulborectal bulbose bulbospinal bulbotuber bulbous bulbul bulbule bulby bulchin Bulgar Bulgari Bulgarian Bulgaric Bulgarophil bulge bulger bulginess bulgy bulimia bulimiac bulimic bulimiform bulimoid Bulimulidae Bulimus bulimy bulk bulked bulker bulkhead bulkheaded bulkily bulkiness bulkish bulky bull bulla bullace bullamacow bullan bullary bullate bullated bullation bullback bullbaiting bullbat bullbeggar bullberry bullbird bullboat bullcart bullcomber bulldog bulldogged bulldoggedness bulldoggy bulldogism bulldoze bulldozer buller bullet bulleted bullethead bulletheaded bulletheadedness bulletin bulletless bulletlike bulletmaker bulletmaking bulletproof bulletwood bullety bullfeast bullfight bullfighter bullfighting bullfinch bullfist bullflower bullfoot bullfrog bullhead bullheaded bullheadedly bullheadedness bullhide bullhoof bullhorn Bullidae bulliform bullimong bulling bullion bullionism bullionist bullionless bullish bullishly bullishness bullism bullit bullneck bullnose bullnut bullock bullocker Bullockite bullockman bullocky Bullom bullous bullpates bullpoll bullpout bullskin bullsticker bullsucker bullswool bulltoad bullule bullweed bullwhack bullwhacker bullwhip bullwort bully bullyable bullydom bullyhuff bullying bullyism bullyrag bullyragger bullyragging bullyrook bulrush bulrushlike bulrushy bulse bult bulter bultey bultong bultow bulwand bulwark bum bumbailiff bumbailiffship bumbarge bumbaste bumbaze bumbee bumbershoot bumble bumblebee bumbleberry Bumbledom bumblefoot bumblekite bumblepuppy bumbler bumbo bumboat bumboatman bumboatwoman bumclock Bumelia bumicky bummalo bummaree bummed bummer bummerish bummie bumming bummler bummock bump bumpee bumper bumperette bumpily bumpiness bumping bumpingly bumpkin bumpkinet bumpkinish bumpkinly bumpology bumptious bumptiously bumptiousness bumpy bumtrap bumwood bun Buna buna buncal bunce bunch bunchberry buncher bunchflower bunchily bunchiness bunchy buncombe bund Bunda Bundahish Bundeli bunder Bundestag bundle bundler bundlerooted bundlet bundobust bundook Bundu bundweed bundy bunemost bung Bunga bungaloid bungalow bungarum Bungarus bungee bungerly bungey bungfu bungfull bunghole bungle bungler bunglesome bungling bunglingly bungmaker bungo bungwall bungy Buninahua bunion bunk bunker bunkerman bunkery bunkhouse bunkie bunkload bunko bunkum bunnell bunny bunnymouth bunodont Bunodonta bunolophodont Bunomastodontidae bunoselenodont bunsenite bunt buntal bunted Bunter bunter bunting buntline bunton bunty bunya bunyah bunyip Bunyoro buoy buoyage buoyance buoyancy buoyant buoyantly buoyantness Buphaga buphthalmia buphthalmic Buphthalmum bupleurol Bupleurum buplever buprestid Buprestidae buprestidan Buprestis bur buran burao Burbank burbank burbankian Burbankism burbark Burberry burble burbler burbly burbot burbush burd burdalone burden burdener burdenless burdenous burdensome burdensomely burdensomeness burdie Burdigalian burdock burdon bure bureau bureaucracy bureaucrat bureaucratic bureaucratical bureaucratically bureaucratism bureaucratist bureaucratization bureaucratize bureaux burel burele buret burette burfish burg burgage burgality burgall burgee burgensic burgeon burgess burgessdom burggrave burgh burghal burghalpenny burghbote burghemot burgher burgherage burgherdom burgheress burgherhood burghermaster burghership burghmaster burghmoot burglar burglarious burglariously burglarize burglarproof burglary burgle burgomaster burgomastership burgonet burgoo burgoyne burgrave burgraviate burgul Burgundian Burgundy burgus burgware burhead Burhinidae Burhinus Buri buri burial burian Buriat buried burier burin burinist burion buriti burka burke burker burkundaz burl burlap burled burler burlesque burlesquely burlesquer burlet burletta Burley burlily burliness Burlington burly Burman Burmannia Burmanniaceae burmanniaceous Burmese burmite burn burnable burnbeat burned burner burnet burnetize burnfire burnie burniebee burning burningly burnish burnishable burnisher burnishing burnishment burnoose burnoosed burnous burnout burnover Burnsian burnside burnsides burnt burntweed burnut burnwood burny buro burp burr burrah burrawang burred burrel burrer burrgrailer burring burrish burrito burrknot burro burrobrush burrow burroweed burrower burrowstown burry bursa bursal bursar bursarial bursarship bursary bursate bursattee bursautee burse burseed Bursera Burseraceae Burseraceous bursicle bursiculate bursiform bursitis burst burster burstwort burt burthenman burton burtonization burtonize burucha Burushaski Burut burweed bury burying bus Busaos busby buscarl buscarle bush bushbeater bushbuck bushcraft bushed bushel busheler bushelful bushelman bushelwoman busher bushfighter bushfighting bushful bushhammer bushi bushily bushiness bushing bushland bushless bushlet bushlike bushmaker bushmaking Bushman bushmanship bushmaster bushment Bushongo bushranger bushranging bushrope bushveld bushwa bushwhack bushwhacker bushwhacking bushwife bushwoman bushwood bushy busied busily busine business businesslike businesslikeness businessman businesswoman busk busked busker busket buskin buskined buskle busky busman buss busser bussock bussu bust bustard busted bustee buster busthead bustic busticate bustle bustled bustler bustling bustlingly busy busybodied busybody busybodyish busybodyism busybodyness Busycon busyhead busying busyish busyness busywork but butadiene butadiyne butanal butane butanoic butanol butanolid butanolide butanone butch butcher butcherbird butcherdom butcherer butcheress butchering butcherless butcherliness butcherly butcherous butchery Bute Butea butein butene butenyl Buteo buteonine butic butine Butler butler butlerage butlerdom butleress butlerism butlerlike butlership butlery butment Butomaceae butomaceous Butomus butoxy butoxyl Butsu butt butte butter butteraceous butterback butterball butterbill butterbird butterbox butterbump butterbur butterbush buttercup buttered butterfat butterfingered butterfingers butterfish butterflower butterfly butterflylike butterhead butterine butteriness butteris butterjags butterless butterlike buttermaker buttermaking butterman buttermilk buttermonger buttermouth butternose butternut butterroot butterscotch butterweed butterwife butterwoman butterworker butterwort butterwright buttery butteryfingered buttgenbachite butting buttinsky buttle buttock buttocked buttocker button buttonball buttonbur buttonbush buttoned buttoner buttonhold buttonholder buttonhole buttonholer buttonhook buttonless buttonlike buttonmold buttons buttonweed buttonwood buttony buttress buttressless buttresslike buttstock buttwoman buttwood butty buttyman butyl butylamine butylation butylene butylic Butyn butyne butyr butyraceous butyral butyraldehyde butyrate butyric butyrically butyrin butyrinase butyrochloral butyrolactone butyrometer butyrometric butyrone butyrous butyrousness butyryl Buxaceae buxaceous Buxbaumia Buxbaumiaceae buxerry buxom buxomly buxomness Buxus buy buyable buyer Buyides buzane buzylene buzz buzzard buzzardlike buzzardly buzzer buzzerphone buzzgloak buzzies buzzing buzzingly buzzle buzzwig buzzy by Byblidaceae Byblis bycoket bye byee byegaein byeman byepath byerite byerlite byestreet byeworker byeworkman bygane byganging bygo bygoing bygone byhand bylaw bylawman byname bynedestin Bynin byon byordinar byordinary byous byously bypass bypasser bypast bypath byplay byre byreman byrewards byrewoman byrlaw byrlawman byrnie byroad Byron Byronesque Byronian Byroniana Byronic Byronically Byronics Byronish Byronism Byronist Byronite Byronize byrrus Byrsonima byrthynsak Bysacki bysen bysmalith byspell byssaceous byssal byssiferous byssin byssine byssinosis byssogenous byssoid byssolite byssus bystander bystreet byth bytime bytownite bytownitite bywalk bywalker byway bywoner byword bywork Byzantian Byzantine Byzantinesque Byzantinism Byzantinize C c ca caam caama caaming caapeba caatinga cab caba cabaan caback cabaho cabal cabala cabalassou cabaletta cabalic cabalism cabalist cabalistic cabalistical cabalistically caballer caballine caban cabana cabaret cabas cabasset cabassou cabbage cabbagehead cabbagewood cabbagy cabber cabble cabbler cabby cabda cabdriver cabdriving cabellerote caber cabernet cabestro cabezon cabilliau cabin Cabinda cabinet cabinetmaker cabinetmaking cabinetry cabinetwork cabinetworker cabinetworking cabio Cabirean Cabiri Cabiria Cabirian Cabiric Cabiritic cable cabled cablegram cableless cablelike cableman cabler cablet cableway cabling cabman cabob caboceer cabochon cabocle Cabomba Cabombaceae caboodle cabook caboose caboshed cabot cabotage cabree cabrerite cabreuva cabrilla cabriole cabriolet cabrit cabstand cabureiba cabuya Caca Cacajao Cacalia cacam Cacan Cacana cacanthrax cacao Cacara Cacatua Cacatuidae Cacatuinae Caccabis cacesthesia cacesthesis cachalot cachaza cache cachectic cachemia cachemic cachet cachexia cachexic cachexy cachibou cachinnate cachinnation cachinnator cachinnatory cacholong cachou cachrys cachucha cachunde Cacicus cacidrosis caciocavallo cacique caciqueship caciquism cack cackerel cackle cackler cacocholia cacochroia cacochylia cacochymia cacochymic cacochymical cacochymy cacocnemia cacodaemoniac cacodaemonial cacodaemonic cacodemon cacodemonia cacodemoniac cacodemonial cacodemonic cacodemonize cacodemonomania cacodontia cacodorous cacodoxian cacodoxical cacodoxy cacodyl cacodylate cacodylic cacoeconomy cacoepist cacoepistic cacoepy cacoethes cacoethic cacogalactia cacogastric cacogenesis cacogenic cacogenics cacogeusia cacoglossia cacographer cacographic cacographical cacography cacology cacomagician cacomelia cacomistle cacomixl cacomixle cacomorphia cacomorphosis caconychia caconym caconymic cacoon cacopathy cacopharyngia cacophonia cacophonic cacophonical cacophonically cacophonist cacophonize cacophonous cacophonously cacophony cacophthalmia cacoplasia cacoplastic cacoproctia cacorhythmic cacorrhachis cacorrhinia cacosmia cacospermia cacosplanchnia cacostomia cacothansia cacotheline cacothesis cacothymia cacotrichia cacotrophia cacotrophic cacotrophy cacotype cacoxene cacoxenite cacozeal cacozealous cacozyme Cactaceae cactaceous Cactales cacti cactiform cactoid Cactus cacuminal cacuminate cacumination cacuminous cacur cad cadalene cadamba cadastral cadastration cadastre cadaver cadaveric cadaverine cadaverize cadaverous cadaverously cadaverousness cadbait cadbit cadbote caddice caddiced Caddie caddie caddis caddised caddish caddishly caddishness caddle Caddo Caddoan caddow caddy cade cadelle cadence cadenced cadency cadent cadential cadenza cader caderas Cadet cadet cadetcy cadetship cadette cadew cadge cadger cadgily cadginess cadgy cadi cadilesker cadinene cadism cadiueio cadjan cadlock Cadmean cadmia cadmic cadmide cadmiferous cadmium cadmiumize Cadmopone Cadmus cados cadrans cadre cadua caduac caduca caducary caducean caduceus caduciary caducibranch Caducibranchiata caducibranchiate caducicorn caducity caducous cadus Cadwal Cadwallader cadweed caeca caecal caecally caecectomy caeciform Caecilia Caeciliae caecilian Caeciliidae caecitis caecocolic caecostomy caecotomy caecum Caedmonian Caedmonic Caelian caelometer Caelum Caelus Caenogaea Caenogaean Caenolestes caenostylic caenostyly caeoma caeremoniarius Caerphilly Caesalpinia Caesalpiniaceae caesalpiniaceous Caesar Caesardom Caesarean Caesareanize Caesarian Caesarism Caesarist Caesarize caesaropapacy caesaropapism caesaropopism Caesarotomy Caesarship caesious caesura caesural caesuric cafeneh cafenet cafeteria caffa caffeate caffeic caffeina caffeine caffeinic caffeinism caffeism caffeol caffeone caffetannic caffetannin caffiso caffle caffoline caffoy cafh cafiz caftan caftaned cag Cagayan cage caged cageful cageless cagelike cageling cageman cager cagester cagework cagey caggy cagily cagit cagmag Cagn Cahenslyism Cahill cahincic Cahita cahiz Cahnite Cahokia cahoot cahot cahow Cahuapana Cahuilla caickle caid cailcedra cailleach caimacam caimakam caiman caimitillo caimito Cain cain Caingang Caingua Cainian Cainish Cainism Cainite Cainitic caique caiquejee Cairba caird Cairene cairn cairned cairngorm cairngorum cairny Cairo caisson caissoned Caitanyas Caite caitiff Cajan Cajanus cajeput cajole cajolement cajoler cajolery cajoling cajolingly cajuela Cajun cajun cajuput cajuputene cajuputol Cakavci Cakchikel cake cakebox cakebread cakehouse cakemaker cakemaking caker cakette cakewalk cakewalker cakey Cakile caky cal calaba Calabar Calabari calabash calabaza calabazilla calaber calaboose calabrasella Calabrese calabrese Calabrian calade Caladium calais calalu Calamagrostis calamanco calamansi Calamariaceae calamariaceous Calamariales calamarian calamarioid calamaroid calamary calambac calambour calamiferous calamiform calaminary calamine calamint Calamintha calamistral calamistrum calamite calamitean Calamites calamitoid calamitous calamitously calamitousness calamity Calamodendron calamondin Calamopitys Calamospermae Calamostachys calamus calander Calandra calandria Calandridae Calandrinae Calandrinia calangay calantas Calanthe calapite Calappa Calappidae Calas calascione calash Calathea calathian calathidium calathiform calathiscus calathus Calatrava calaverite calbroben calcaneal calcaneoastragalar calcaneoastragaloid calcaneocuboid calcaneofibular calcaneonavicular calcaneoplantar calcaneoscaphoid calcaneotibial calcaneum calcaneus calcar calcarate Calcarea calcareoargillaceous calcareobituminous calcareocorneous calcareosiliceous calcareosulphurous calcareous calcareously calcareousness calcariferous calcariform calcarine calced calceiform calcemia Calceolaria calceolate Calchaqui Calchaquian calcic calciclase calcicole calcicolous calcicosis calciferol Calciferous calciferous calcific calcification calcified calciform calcifugal calcifuge calcifugous calcify calcigenous calcigerous calcimeter calcimine calciminer calcinable calcination calcinatory calcine calcined calciner calcinize calciobiotite calciocarnotite calcioferrite calcioscheelite calciovolborthite calcipexy calciphile calciphilia calciphilous calciphobe calciphobous calciphyre calciprivic calcisponge Calcispongiae calcite calcitestaceous calcitic calcitrant calcitrate calcitreation calcium calcivorous calcographer calcographic calcography calcrete calculability calculable Calculagraph calculary calculate calculated calculatedly calculating calculatingly calculation calculational calculative calculator calculatory calculi calculiform calculist calculous calculus Calcydon calden caldron calean Caleb Caledonia Caledonian caledonite calefacient calefaction calefactive calefactor calefactory calelectric calelectrical calelectricity Calemes calendal calendar calendarer calendarial calendarian calendaric calender calenderer calendric calendrical calendry calends Calendula calendulin calentural calenture calenturist calepin calescence calescent calf calfbound calfhood calfish calfkill calfless calflike calfling calfskin Caliban Calibanism caliber calibered calibogus calibrate calibration calibrator calibre Caliburn Caliburno calicate calices caliciform calicle calico calicoback calicoed calicular caliculate Calicut calid calidity caliduct California Californian californite californium caliga caligated caliginous caliginously caligo Calimeris Calinago calinda calinut caliological caliologist caliology calipash calipee caliper caliperer calipers caliph caliphal caliphate caliphship Calista calistheneum calisthenic calisthenical calisthenics Calite caliver calix Calixtin Calixtus calk calkage calker calkin calking call Calla callable callainite callant callboy caller callet calli Callianassa Callianassidae Calliandra Callicarpa Callicebus callid callidity callidness calligraph calligrapha calligrapher calligraphic calligraphical calligraphically calligraphist calligraphy calling Callionymidae Callionymus Calliope calliophone Calliopsis calliper calliperer Calliphora calliphorid Calliphoridae calliphorine callipygian callipygous Callirrhoe Callisaurus callisection callisteia Callistemon Callistephus Callithrix callithump callithumpian Callitrichaceae callitrichaceous Callitriche Callitrichidae Callitris callitype callo Callorhynchidae Callorhynchus callosal callose callosity callosomarginal callosum callous callously callousness Callovian callow callower callowman callowness Calluna callus Callynteria calm calmant calmative calmer calmierer calmingly calmly calmness calmy Calocarpum Calochortaceae Calochortus calodemon calography calomba calomel calomorphic Calonectria Calonyction calool Calophyllum Calopogon calor calorescence calorescent caloric caloricity calorie calorifacient calorific calorifical calorifically calorification calorifics calorifier calorify calorigenic calorimeter calorimetric calorimetrical calorimetrically calorimetry calorimotor caloris calorisator calorist Calorite calorize calorizer Calosoma Calotermes calotermitid Calotermitidae Calothrix calotte calotype calotypic calotypist caloyer calp calpac calpack calpacked calpulli Caltha caltrap caltrop calumba calumet calumniate calumniation calumniative calumniator calumniatory calumnious calumniously calumniousness calumny Calusa calutron Calvados calvaria calvarium Calvary Calvatia calve calved calver calves Calvin Calvinian Calvinism Calvinist Calvinistic Calvinistical Calvinistically Calvinize calvish calvities calvity calvous calx calycanth Calycanthaceae calycanthaceous calycanthemous calycanthemy calycanthine Calycanthus calycate Calyceraceae calyceraceous calyces calyciferous calycifloral calyciflorate calyciflorous calyciform calycinal calycine calycle calycled Calycocarpum calycoid calycoideous Calycophora Calycophorae calycophoran Calycozoa calycozoan calycozoic calycozoon calycular calyculate calyculated calycule calyculus Calydon Calydonian Calymene calymma calyphyomy calypsist Calypso calypso calypsonian calypter Calypterae Calyptoblastea calyptoblastic Calyptorhynchus calyptra Calyptraea Calyptranthes Calyptrata Calyptratae calyptrate calyptriform calyptrimorphous calyptro calyptrogen Calyptrogyne Calystegia calyx cam camaca Camacan camagon camail camailed Camaldolensian Camaldolese Camaldolesian Camaldolite Camaldule Camaldulian camalote caman camansi camara camaraderie Camarasaurus camarilla camass Camassia camata camatina Camaxtli camb Camball Cambalo Cambarus cambaye camber Cambeva cambial cambiform cambiogenetic cambism cambist cambistry cambium Cambodian cambogia cambrel cambresine Cambrian Cambric cambricleaf cambuca Cambuscan Cambyuskan Came came cameist camel camelback cameleer Camelid Camelidae Camelina cameline camelish camelishness camelkeeper Camellia Camelliaceae camellike camellin Camellus camelman cameloid Cameloidea camelopard Camelopardalis Camelopardid Camelopardidae Camelopardus camelry Camelus Camembert Camenae Camenes cameo cameograph cameography camera cameral cameralism cameralist cameralistic cameralistics cameraman Camerata camerate camerated cameration camerier Camerina Camerinidae camerist camerlingo Cameronian Camestres camilla camillus camion camisado Camisard camise camisia camisole camlet camleteen Cammarum cammed cammock cammocky camomile camoodi camoodie Camorra Camorrism Camorrist Camorrista camouflage camouflager camp Campa campagna campagnol campaign campaigner campana campane campanero Campanian campaniform campanile campaniliform campanilla campanini campanist campanistic campanologer campanological campanologically campanologist campanology Campanula Campanulaceae campanulaceous Campanulales campanular Campanularia Campanulariae campanularian Campanularidae Campanulatae campanulate campanulated campanulous Campaspe Campbellism Campbellite campbellite campcraft Campe Campephagidae campephagine Campephilus camper campestral campfight campfire campground camphane camphanic camphanone camphanyl camphene camphine camphire campho camphocarboxylic camphoid camphol campholic campholide campholytic camphor camphoraceous camphorate camphoric camphorize camphorone camphoronic camphoroyl camphorphorone camphorwood camphory camphoryl camphylene Campignian campimeter campimetrical campimetry Campine campion cample campmaster campo Campodea campodeid Campodeidae campodeiform campodeoid campody Camponotus campoo camporee campshed campshedding campsheeting campshot campstool camptodrome camptonite Camptosorus campulitropal campulitropous campus campward campylite campylodrome campylometer Campyloneuron campylospermous campylotropal campylotropous camshach camshachle camshaft camstane camstone camuning camus camused camwood can Cana Canaan Canaanite Canaanitess Canaanitic Canaanitish canaba Canacee Canada canada Canadian Canadianism Canadianization Canadianize canadine canadite canadol canaigre canaille canajong canal canalage canalboat canalicular canaliculate canaliculated canaliculation canaliculi canaliculization canaliculus canaliferous canaliform canalization canalize canaller canalling canalman canalside Canamary canamo Cananaean Cananga Canangium canape canapina canard Canari canari Canarian canarin Canariote Canarium Canarsee canary canasta canaster canaut Canavali Canavalia canavalin Canberra cancan cancel cancelable cancelation canceleer canceler cancellarian cancellate cancellated cancellation cancelli cancellous cancellus cancelment cancer cancerate canceration cancerdrops cancered cancerigenic cancerism cancerophobe cancerophobia cancerous cancerously cancerousness cancerroot cancerweed cancerwort canch canchalagua Canchi Cancri Cancrid cancriform cancrinite cancrisocial cancrivorous cancrizans cancroid cancrophagous cancrum cand Candace candareen candela candelabra candelabrum candelilla candent candescence candescent candescently candid candidacy candidate candidateship candidature candidly candidness candied candier candify Candiot candiru candle candleball candlebeam candleberry candlebomb candlebox candlefish candleholder candlelight candlelighted candlelighter candlelighting candlelit candlemaker candlemaking Candlemas candlenut candlepin candler candlerent candleshine candleshrift candlestand candlestick candlesticked candlestickward candlewaster candlewasting candlewick candlewood candlewright candock Candollea Candolleaceae candolleaceous candor candroy candy candymaker candymaking candys candystick candytuft candyweed cane canebrake canel canelike canella Canellaceae canellaceous Canelo canelo caneology canephor canephore canephoros canephroi caner canescence canescent canette canewise canework Canfield canfieldite canful cangan cangia cangle cangler cangue canhoop Canichana Canichanan canicola Canicula canicular canicule canid Canidae Canidia canille caninal canine caniniform caninity caninus canioned canions Canis Canisiana canistel canister canities canjac cank canker cankerberry cankerbird cankereat cankered cankeredly cankeredness cankerflower cankerous cankerroot cankerweed cankerworm cankerwort cankery canmaker canmaking canman Canna canna cannabic Cannabinaceae cannabinaceous cannabine cannabinol Cannabis cannabism Cannaceae cannaceous cannach canned cannel cannelated cannelure cannelured cannequin canner cannery cannet cannibal cannibalean cannibalic cannibalish cannibalism cannibalistic cannibalistically cannibality cannibalization cannibalize cannibally cannikin cannily canniness canning cannon cannonade cannoned cannoneer cannoneering Cannonism cannonproof cannonry cannot Cannstatt cannula cannular cannulate cannulated canny canoe canoeing Canoeiro canoeist canoeload canoeman canoewood canon canoncito canoness canonic canonical canonically canonicalness canonicals canonicate canonicity canonics canonist canonistic canonistical canonizant canonization canonize canonizer canonlike canonry canonship canoodle canoodler Canopic canopic Canopus canopy canorous canorously canorousness Canossa canroy canroyer canso cant Cantab cantabank cantabile Cantabri Cantabrian Cantabrigian Cantabrize cantala cantalite cantaloupe cantankerous cantankerously cantankerousness cantar cantara cantaro cantata Cantate cantation cantative cantatory cantboard canted canteen cantefable canter Canterburian Canterburianism Canterbury canterer canthal Cantharellus Cantharidae cantharidal cantharidate cantharides cantharidian cantharidin cantharidism cantharidize cantharis cantharophilous cantharus canthectomy canthitis cantholysis canthoplasty canthorrhaphy canthotomy canthus cantic canticle cantico cantilena cantilene cantilever cantilevered cantillate cantillation cantily cantina cantiness canting cantingly cantingness cantion cantish cantle cantlet canto Canton canton cantonal cantonalism cantoned cantoner Cantonese cantonment cantoon cantor cantoral Cantorian cantoris cantorous cantorship cantred cantref cantrip cantus cantwise canty Canuck canun canvas canvasback canvasman canvass canvassy cany canyon canzon canzonet caoba Caodaism Caodaist caoutchouc caoutchoucin cap capability capable capableness capably capacious capaciously capaciousness capacitance capacitate capacitation capacitative capacitativly capacitive capacitor capacity capanna capanne caparison capax capcase Cape cape caped capel capelet capelin capeline Capella capellet caper caperbush capercaillie capercally capercut caperer capering caperingly Capernaism Capernaite Capernaitic Capernaitical Capernaitically Capernaitish capernoited capernoitie capernoity capersome caperwort capes capeskin Capetian Capetonian capeweed capewise capful Caph caph caphar caphite Caphtor Caphtorim capias capicha capillaceous capillaire capillament capillarectasia capillarily capillarimeter capillariness capillariomotor capillarity capillary capillation capilliculture capilliform capillitial capillitium capillose capistrate capital capitaldom capitaled capitalism capitalist capitalistic capitalistically capitalizable capitalization capitalize capitally capitalness capitan capitate capitated capitatim capitation capitative capitatum capitellar capitellate capitelliform capitellum Capito Capitol Capitolian Capitoline Capitolium Capitonidae Capitoninae capitoul capitoulate capitulant capitular capitularly capitulary capitulate capitulation capitulator capitulatory capituliform capitulum capivi capkin capless caplin capmaker capmaking capman capmint Capnodium Capnoides capnomancy capocchia capomo capon caponier caponize caponizer caporal capot capote cappadine Cappadocian Capparidaceae capparidaceous Capparis capped cappelenite capper cappie capping capple cappy Capra caprate Caprella Caprellidae caprelline capreol capreolar capreolary capreolate capreoline Capreolus Capri capric capriccetto capricci capriccio caprice capricious capriciously capriciousness Capricorn Capricornid Capricornus caprid caprificate caprification caprificator caprifig Caprifoliaceae caprifoliaceous Caprifolium caprifolium capriform caprigenous Caprimulgi Caprimulgidae Caprimulgiformes caprimulgine Caprimulgus caprin caprine caprinic Capriola capriole Capriote capriped capripede caprizant caproate caproic caproin Capromys caprone capronic capronyl caproyl capryl caprylate caprylene caprylic caprylin caprylone caprylyl capsa capsaicin Capsella capsheaf capshore Capsian capsicin Capsicum capsicum capsid Capsidae capsizal capsize capstan capstone capsula capsulae capsular capsulate capsulated capsulation capsule capsulectomy capsuler capsuliferous capsuliform capsuligerous capsulitis capsulociliary capsulogenous capsulolenticular capsulopupillary capsulorrhaphy capsulotome capsulotomy capsumin captaculum captain captaincy captainess captainly captainry captainship captance captation caption captious captiously captiousness captivate captivately captivating captivatingly captivation captivative captivator captivatrix captive captivity captor captress capturable capture capturer Capuan capuche capuched Capuchin capuchin capucine capulet capulin capybara Caquetio car Cara carabao carabeen carabid Carabidae carabidan carabideous carabidoid carabin carabineer Carabini caraboid Carabus carabus caracal caracara caracol caracole caracoler caracoli caracolite caracoller caracore caract Caractacus caracter Caradoc carafe Caragana Caraguata caraguata Caraho caraibe Caraipa caraipi Caraja Carajas carajura caramba carambola carambole caramel caramelan caramelen caramelin caramelization caramelize caramoussal carancha caranda Carandas caranday carane Caranga carangid Carangidae carangoid Carangus caranna Caranx Carapa carapace carapaced Carapache Carapacho carapacic carapato carapax Carapidae carapine carapo Carapus Carara carat caratch caraunda caravan caravaneer caravanist caravanner caravansary caravanserai caravanserial caravel caraway Carayan carbacidometer carbamate carbamic carbamide carbamido carbamine carbamino carbamyl carbanil carbanilic carbanilide carbarn carbasus carbazic carbazide carbazine carbazole carbazylic carbeen carbene carberry carbethoxy carbethoxyl carbide carbimide carbine carbinol carbinyl carbo carboazotine carbocinchomeronic carbodiimide carbodynamite carbogelatin carbohemoglobin carbohydrase carbohydrate carbohydraturia carbohydrazide carbohydride carbohydrogen carbolate carbolated carbolfuchsin carbolic carbolineate Carbolineum carbolize Carboloy carboluria carbolxylol carbomethene carbomethoxy carbomethoxyl carbon carbona carbonaceous carbonade carbonado Carbonari Carbonarism Carbonarist carbonatation carbonate carbonation carbonatization carbonator carbonemia carbonero carbonic carbonide Carboniferous carboniferous carbonification carbonify carbonigenous carbonimeter carbonimide carbonite carbonitride carbonium carbonizable carbonization carbonize carbonizer carbonless Carbonnieux carbonometer carbonometry carbonous carbonuria carbonyl carbonylene carbonylic carbophilous carbora Carborundum carborundum carbosilicate carbostyril carboxide carboxy Carboxydomonas carboxyhemoglobin carboxyl carboxylase carboxylate carboxylation carboxylic carboy carboyed carbro carbromal carbuilder carbuncle carbuncled carbuncular carbungi carburant carburate carburation carburator carbure carburet carburetant carburetor carburization carburize carburizer carburometer carbyl carbylamine carcajou carcake carcanet carcaneted carcass Carcavelhos carceag carcel carceral carcerate carceration Carcharhinus Carcharias carchariid Carchariidae carcharioid Carcharodon carcharodont carcinemia carcinogen carcinogenesis carcinogenic carcinoid carcinological carcinologist carcinology carcinolysin carcinolytic carcinoma carcinomata carcinomatoid carcinomatosis carcinomatous carcinomorphic carcinophagous carcinopolypus carcinosarcoma carcinosarcomata Carcinoscorpius carcinosis carcoon card cardaissin Cardamine cardamom Cardanic cardboard cardcase cardecu carded cardel carder cardholder cardia cardiac cardiacal Cardiacea cardiacean cardiagra cardiagram cardiagraph cardiagraphy cardial cardialgia cardialgy cardiameter cardiamorphia cardianesthesia cardianeuria cardiant cardiaplegia cardiarctia cardiasthenia cardiasthma cardiataxia cardiatomy cardiatrophia cardiauxe Cardiazol cardicentesis cardiectasis cardiectomize cardiectomy cardielcosis cardiemphraxia cardiform Cardigan cardigan Cardiidae cardin cardinal cardinalate cardinalic Cardinalis cardinalism cardinalist cardinalitial cardinalitian cardinally cardinalship cardines carding cardioaccelerator cardioarterial cardioblast cardiocarpum cardiocele cardiocentesis cardiocirrhosis cardioclasia cardioclasis cardiodilator cardiodynamics cardiodynia cardiodysesthesia cardiodysneuria cardiogenesis cardiogenic cardiogram cardiograph cardiographic cardiography cardiohepatic cardioid cardiokinetic cardiolith cardiological cardiologist cardiology cardiolysis cardiomalacia cardiomegaly cardiomelanosis cardiometer cardiometric cardiometry cardiomotility cardiomyoliposis cardiomyomalacia cardioncus cardionecrosis cardionephric cardioneural cardioneurosis cardionosus cardioparplasis cardiopathic cardiopathy cardiopericarditis cardiophobe cardiophobia cardiophrenia cardioplasty cardioplegia cardiopneumatic cardiopneumograph cardioptosis cardiopulmonary cardiopuncture cardiopyloric cardiorenal cardiorespiratory cardiorrhaphy cardiorrheuma cardiorrhexis cardioschisis cardiosclerosis cardioscope cardiospasm Cardiospermum cardiosphygmogram cardiosphygmograph cardiosymphysis cardiotherapy cardiotomy cardiotonic cardiotoxic cardiotrophia cardiotrophotherapy cardiovascular cardiovisceral cardipaludism cardipericarditis cardisophistical carditic carditis Cardium cardlike cardmaker cardmaking cardo cardol cardon cardona cardoncillo cardooer cardoon cardophagus cardplayer cardroom cardsharp cardsharping cardstock Carduaceae carduaceous Carduelis Carduus care carecloth careen careenage careener career careerer careering careeringly careerist carefree careful carefully carefulness careless carelessly carelessness carene carer caress caressant caresser caressing caressingly caressive caressively carest caret caretaker caretaking Caretta Carettochelydidae careworn Carex carfare carfax carfuffle carful carga cargo cargoose carhop carhouse cariacine Cariacus cariama Cariamae Carian Carib Caribal Cariban Caribbean Caribbee Caribi Caribisi caribou Carica Caricaceae caricaceous caricatura caricaturable caricatural caricature caricaturist caricetum caricographer caricography caricologist caricology caricous carid Carida Caridea caridean caridoid Caridomorpha caries Carijona carillon carillonneur carina carinal Carinaria Carinatae carinate carinated carination Cariniana cariniform Carinthian cariole carioling cariosity carious cariousness Caripuna Cariri Caririan Carisa Carissa caritative caritive Cariyo cark carking carkingly carkled Carl carl carless carlet carlie carlin Carlina carline carling carlings carlish carlishness Carlisle Carlism Carlist Carlo carload carloading carloadings Carlos carlot Carlovingian carls Carludovica Carlylean Carlyleian Carlylese Carlylesque Carlylian Carlylism carmagnole carmalum Carman carman Carmanians Carmel Carmela carmele Carmelite Carmelitess carmeloite Carmen carminative Carmine carmine carminette carminic carminite carminophilous carmoisin carmot Carnacian carnage carnaged carnal carnalism carnalite carnality carnalize carnallite carnally carnalness carnaptious Carnaria carnassial carnate carnation carnationed carnationist carnauba carnaubic carnaubyl Carnegie Carnegiea carnelian carneol carneole carneous carney carnic carniferous carniferrin carnifex carnification carnifices carnificial carniform carnify Carniolan carnival carnivaler carnivalesque Carnivora carnivoracity carnivoral carnivore carnivorism carnivorous carnivorously carnivorousness carnose carnosine carnosity carnotite carnous Caro caroa carob caroba caroche Caroid Carol carol Carolan Carole Carolean caroler caroli carolin Carolina Caroline caroline Caroling Carolingian Carolinian carolus Carolyn carom carombolette carone caronic caroome caroon carotene carotenoid carotic carotid carotidal carotidean carotin carotinemia carotinoid caroubier carousal carouse carouser carousing carousingly carp carpaine carpal carpale carpalia Carpathian carpel carpellary carpellate carpent carpenter Carpenteria carpentering carpentership carpentry carper carpet carpetbag carpetbagger carpetbaggery carpetbaggism carpetbagism carpetbeater carpeting carpetlayer carpetless carpetmaker carpetmaking carpetmonger carpetweb carpetweed carpetwork carpetwoven Carphiophiops carpholite Carphophis carphosiderite carpid carpidium carpincho carping carpingly carpintero Carpinus Carpiodes carpitis carpium carpocace Carpocapsa carpocarpal carpocephala carpocephalum carpocerite carpocervical Carpocratian Carpodacus Carpodetus carpogam carpogamy carpogenic carpogenous carpogone carpogonial carpogonium Carpoidea carpolite carpolith carpological carpologically carpologist carpology carpomania carpometacarpal carpometacarpus carpopedal Carpophaga carpophagous carpophalangeal carpophore carpophyll carpophyte carpopodite carpopoditic carpoptosia carpoptosis carport carpos carposperm carposporangia carposporangial carposporangium carpospore carposporic carposporous carpostome carpus carquaise carr carrack carrageen carrageenin Carrara Carraran carrel carriable carriage carriageable carriageful carriageless carriagesmith carriageway Carrick carrick Carrie carried carrier carrion carritch carritches carriwitchet Carrizo carrizo carroch carrollite carronade carrot carrotage carroter carrotiness carrottop carrotweed carrotwood carroty carrousel carrow Carry carry carryall carrying carrytale carse carshop carsick carsmith Carsten cart cartable cartaceous cartage cartboot cartbote carte cartel cartelism cartelist cartelization cartelize Carter carter Cartesian Cartesianism cartful Carthaginian carthame carthamic carthamin Carthamus Carthusian Cartier cartilage cartilaginean Cartilaginei cartilagineous Cartilagines cartilaginification cartilaginoid cartilaginous cartisane Cartist cartload cartmaker cartmaking cartman cartobibliography cartogram cartograph cartographer cartographic cartographical cartographically cartography cartomancy carton cartonnage cartoon cartoonist cartouche cartridge cartsale cartulary cartway cartwright cartwrighting carty carua carucage carucal carucate carucated Carum caruncle caruncula carunculae caruncular carunculate carunculated carunculous carvacrol carvacryl carval carve carvel carven carvene carver carvership carvestrene carving carvoepra carvol carvomenthene carvone carvyl carwitchet Cary Carya caryatic caryatid caryatidal caryatidean caryatidic caryl Caryocar Caryocaraceae caryocaraceous Caryophyllaceae caryophyllaceous caryophyllene caryophylleous caryophyllin caryophyllous Caryophyllus caryopilite caryopses caryopsides caryopsis Caryopteris Caryota casaba casabe casal casalty Casamarca Casanovanic Casasia casate casaun casava casave casavi casbah cascabel cascade Cascadia Cascadian cascadite cascado cascalho cascalote cascara cascarilla cascaron casco cascol Case case Casearia casease caseate caseation casebook casebox cased caseful casefy caseharden caseic casein caseinate caseinogen casekeeper Casel caseless caselessly casemaker casemaking casemate casemated casement casemented caseolysis caseose caseous caser casern caseum caseweed casewood casework caseworker caseworm Casey cash casha cashable cashableness cashaw cashbook cashbox cashboy cashcuttee cashel cashew cashgirl Cashibo cashier cashierer cashierment cashkeeper cashment Cashmere cashmere cashmerette Cashmirian Casimir Casimiroa casing casino casiri cask casket casking casklike Caslon Caspar Casparian Casper Caspian casque casqued casquet casquetel casquette cass cassabanana cassabully cassady Cassandra cassareep cassation casse Cassegrain Cassegrainian casselty cassena casserole Cassia cassia Cassiaceae Cassian cassican Cassicus Cassida cassideous cassidid Cassididae Cassidinae cassidony Cassidulina cassiduloid Cassiduloidea Cassie cassie Cassiepeia cassimere cassina cassine Cassinese cassinette Cassinian cassino cassinoid cassioberry Cassiope Cassiopeia Cassiopeian Cassiopeid cassiopeium Cassis cassis cassiterite Cassius cassock cassolette casson cassonade cassoon cassowary cassumunar Cassytha Cassythaceae cast castable castagnole Castalia Castalian Castalides Castalio Castanea castanean castaneous castanet Castanopsis Castanospermum castaway caste casteless castelet castellan castellano castellanship castellany castellar castellate castellated castellation caster casterless casthouse castice castigable castigate castigation castigative castigator castigatory Castilian Castilla Castilleja Castilloa casting castle castled castlelike castlet castlewards castlewise castling castock castoff Castor castor Castores castoreum castorial Castoridae castorin castorite castorized Castoroides castory castra castral castrametation castrate castrater castration castrator castrensial castrensian castrum castuli casual casualism casualist casuality casually casualness casualty Casuariidae Casuariiformes Casuarina Casuarinaceae casuarinaceous Casuarinales Casuarius casuary casuist casuistess casuistic casuistical casuistically casuistry casula caswellite Casziel Cat cat catabaptist catabases catabasis catabatic catabibazon catabiotic catabolic catabolically catabolin catabolism catabolite catabolize catacaustic catachreses catachresis catachrestic catachrestical catachrestically catachthonian cataclasm cataclasmic cataclastic cataclinal cataclysm cataclysmal cataclysmatic cataclysmatist cataclysmic cataclysmically cataclysmist catacomb catacorolla catacoustics catacromyodian catacrotic catacrotism catacumbal catadicrotic catadicrotism catadioptric catadioptrical catadioptrics catadromous catafalco catafalque catagenesis catagenetic catagmatic Cataian catakinesis catakinetic catakinetomer catakinomeric Catalan Catalanganes Catalanist catalase Catalaunian catalecta catalectic catalecticant catalepsis catalepsy cataleptic cataleptiform cataleptize cataleptoid catalexis catalina catalineta catalinite catallactic catallactically catallactics catallum catalogia catalogic catalogical catalogist catalogistic catalogue cataloguer cataloguish cataloguist cataloguize Catalonian catalowne Catalpa catalpa catalufa catalyses catalysis catalyst catalyte catalytic catalytical catalytically catalyzator catalyze catalyzer catamaran Catamarcan Catamarenan catamenia catamenial catamite catamited catamiting catamount catamountain catan Catananche catapan catapasm catapetalous cataphasia cataphatic cataphora cataphoresis cataphoretic cataphoria cataphoric cataphract Cataphracta Cataphracti cataphrenia cataphrenic Cataphrygian cataphrygianism cataphyll cataphylla cataphyllary cataphyllum cataphysical cataplasia cataplasis cataplasm catapleiite cataplexy catapult catapultic catapultier cataract cataractal cataracted cataractine cataractous cataractwise cataria catarinite catarrh catarrhal catarrhally catarrhed Catarrhina catarrhine catarrhinian catarrhous catasarka Catasetum catasta catastaltic catastasis catastate catastatic catasterism catastrophal catastrophe catastrophic catastrophical catastrophically catastrophism catastrophist catathymic catatonia catatoniac catatonic catawampous catawampously catawamptious catawamptiously catawampus Catawba catberry catbird catboat catcall catch catchable catchall catchcry catcher catchfly catchiness catching catchingly catchingness catchland catchment catchpenny catchplate catchpole catchpolery catchpoleship catchpoll catchpollery catchup catchwater catchweed catchweight catchword catchwork catchy catclaw catdom cate catechesis catechetic catechetical catechetically catechin catechism catechismal catechist catechistic catechistical catechistically catechizable catechization catechize catechizer catechol catechu catechumen catechumenal catechumenate catechumenical catechumenically catechumenism catechumenship catechutannic categorem categorematic categorematical categorematically categorial categoric categorical categorically categoricalness categorist categorization categorize category catelectrotonic catelectrotonus catella catena catenae catenarian catenary catenate catenated catenation catenoid catenulate catepuce cater cateran catercap catercorner caterer caterership cateress caterpillar caterpillared caterpillarlike caterva caterwaul caterwauler caterwauling Catesbaea cateye catface catfaced catfacing catfall catfish catfoot catfooted catgut Catha Cathari Catharina Catharine Catharism Catharist Catharistic catharization catharize catharpin catharping Cathars catharsis Cathartae Cathartes cathartic cathartical cathartically catharticalness Cathartidae Cathartides Cathartolinum Cathay Cathayan cathead cathect cathectic cathection cathedra cathedral cathedraled cathedralesque cathedralic cathedrallike cathedralwise cathedratic cathedratica cathedratical cathedratically cathedraticum cathepsin Catherine catheter catheterism catheterization catheterize catheti cathetometer cathetometric cathetus cathexion cathexis cathidine cathin cathine cathinine cathion cathisma cathodal cathode cathodic cathodical cathodically cathodofluorescence cathodograph cathodography cathodoluminescence cathograph cathography cathole catholic catholical catholically catholicalness catholicate catholicism catholicist catholicity catholicize catholicizer catholicly catholicness catholicon catholicos catholicus catholyte cathood cathop Cathrin cathro Cathryn Cathy Catilinarian cation cationic cativo catjang catkin catkinate catlap catlike catlin catling catlinite catmalison catmint catnip catoblepas Catocala catocalid catocathartic catoctin Catodon catodont catogene catogenic Catoism Catonian Catonic Catonically Catonism catoptric catoptrical catoptrically catoptrics catoptrite catoptromancy catoptromantic Catoquina catostomid Catostomidae catostomoid Catostomus catpiece catpipe catproof Catskill catskin catstep catstick catstitch catstitcher catstone catsup cattabu cattail cattalo cattery Catti cattily cattimandoo cattiness catting cattish cattishly cattishness cattle cattlebush cattlegate cattleless cattleman Cattleya cattleya cattleyak Catty catty cattyman Catullian catvine catwalk catwise catwood catwort caubeen cauboge Caucasian Caucasic Caucasoid cauch cauchillo caucho caucus cauda caudad caudae caudal caudally caudalward Caudata caudata caudate caudated caudation caudatolenticular caudatory caudatum caudex caudices caudicle caudiform caudillism caudle caudocephalad caudodorsal caudofemoral caudolateral caudotibial caudotibialis Caughnawaga caught cauk caul cauld cauldrife cauldrifeness Caulerpa Caulerpaceae caulerpaceous caules caulescent caulicle caulicole caulicolous caulicule cauliculus cauliferous cauliflorous cauliflory cauliflower cauliform cauligenous caulinar caulinary cauline caulis Caulite caulivorous caulocarpic caulocarpous caulome caulomer caulomic caulophylline Caulophyllum Caulopteris caulopteris caulosarc caulotaxis caulotaxy caulote caum cauma caumatic caunch Caunos Caunus caup caupo caupones Cauqui caurale Caurus causability causable causal causalgia causality causally causate causation causational causationism causationist causative causatively causativeness causativity cause causeful causeless causelessly causelessness causer causerie causeway causewayman causey causidical causing causingness causse causson caustic caustical caustically causticiser causticism causticity causticization causticize causticizer causticly causticness caustification caustify Causus cautel cautelous cautelously cautelousness cauter cauterant cauterization cauterize cautery caution cautionary cautioner cautionry cautious cautiously cautiousness cautivo cava cavae caval cavalcade cavalero cavalier cavalierish cavalierishness cavalierism cavalierly cavalierness cavaliero cavaliership cavalla cavalry cavalryman cavascope cavate cavatina cave caveat caveator cavekeeper cavel cavelet cavelike cavendish cavern cavernal caverned cavernicolous cavernitis cavernlike cavernoma cavernous cavernously cavernulous cavesson cavetto Cavia caviar cavicorn Cavicornia Cavidae cavie cavil caviler caviling cavilingly cavilingness cavillation Cavina caving cavings cavish cavitary cavitate cavitation cavitied cavity caviya cavort cavus cavy caw cawk cawky cawney cawquaw caxiri caxon Caxton Caxtonian cay Cayapa Cayapo Cayenne cayenne cayenned Cayleyan cayman Cayubaba Cayubaban Cayuga Cayugan Cayuse Cayuvava caza cazimi Ccoya ce Ceanothus cearin cease ceaseless ceaselessly ceaselessness ceasmic Cebalrai Cebatha cebell cebian cebid Cebidae cebil cebine ceboid cebollite cebur Cebus cecidiologist cecidiology cecidium cecidogenous cecidologist cecidology cecidomyian cecidomyiid Cecidomyiidae cecidomyiidous Cecil Cecile Cecilia cecilite cecils Cecily cecity cecograph Cecomorphae cecomorphic cecostomy Cecropia Cecrops cecutiency cedar cedarbird cedared cedarn cedarware cedarwood cedary cede cedent ceder cedilla cedrat cedrate cedre Cedrela cedrene Cedric cedrin cedrine cedriret cedrium cedrol cedron Cedrus cedry cedula cee Ceiba ceibo ceil ceile ceiler ceilidh ceiling ceilinged ceilingward ceilingwards ceilometer Celadon celadon celadonite Celaeno celandine Celanese Celarent Celastraceae celastraceous Celastrus celation celative celature Celebesian celebrant celebrate celebrated celebratedness celebrater celebration celebrative celebrator celebratory celebrity celemin celemines celeomorph Celeomorphae celeomorphic celeriac celerity celery celesta Celeste celeste celestial celestiality celestialize celestially celestialness celestina Celestine celestine Celestinian celestite celestitude Celia celiac celiadelphus celiagra celialgia celibacy celibatarian celibate celibatic celibatist celibatory celidographer celidography celiectasia celiectomy celiemia celiitis celiocele celiocentesis celiocolpotomy celiocyesis celiodynia celioelytrotomy celioenterotomy celiogastrotomy celiohysterotomy celiolymph celiomyalgia celiomyodynia celiomyomectomy celiomyomotomy celiomyositis celioncus celioparacentesis celiopyosis celiorrhaphy celiorrhea celiosalpingectomy celiosalpingotomy celioschisis celioscope celioscopy celiotomy celite cell cella cellae cellar cellarage cellarer cellaress cellaret cellaring cellarless cellarman cellarous cellarway cellarwoman cellated celled Cellepora cellepore Cellfalcicula celliferous celliform cellifugal cellipetal cellist Cellite cello cellobiose celloid celloidin celloist cellophane cellose Cellucotton cellular cellularity cellularly cellulase cellulate cellulated cellulation cellule cellulicidal celluliferous cellulifugal cellulifugally cellulin cellulipetal cellulipetally cellulitis cellulocutaneous cellulofibrous Celluloid celluloid celluloided Cellulomonadeae Cellulomonas cellulose cellulosic cellulosity cellulotoxic cellulous Cellvibrio Celosia Celotex celotomy Celsia celsian Celsius Celt celt Celtdom Celtiberi Celtiberian Celtic Celtically Celticism Celticist Celticize Celtidaceae celtiform Celtillyrians Celtis Celtish Celtism Celtist celtium Celtization Celtologist Celtologue Celtomaniac Celtophil Celtophobe Celtophobia celtuce cembalist cembalo cement cemental cementation cementatory cementer cementification cementin cementite cementitious cementless cementmaker cementmaking cementoblast cementoma cementum cemeterial cemetery cenacle cenaculum cenanthous cenanthy cencerro Cenchrus cendre cenobian cenobite cenobitic cenobitical cenobitically cenobitism cenobium cenoby cenogenesis cenogenetic cenogenetically cenogonous Cenomanian cenosite cenosity cenospecies cenospecific cenospecifically cenotaph cenotaphic cenotaphy Cenozoic cenozoology cense censer censerless censive censor censorable censorate censorial censorious censoriously censoriousness censorship censual censurability censurable censurableness censurably censure censureless censurer censureship census cent centage cental centare centaur centaurdom Centaurea centauress centauri centaurial centaurian centauric Centaurid Centauridium Centaurium centauromachia centauromachy Centaurus centaurus centaury centavo centena centenar centenarian centenarianism centenary centenier centenionalis centennial centennially center centerable centerboard centered centerer centering centerless centermost centerpiece centervelic centerward centerwise centesimal centesimally centesimate centesimation centesimi centesimo centesis Centetes centetid Centetidae centgener centiar centiare centibar centifolious centigrade centigram centile centiliter centillion centillionth Centiloquy centime centimeter centimo centimolar centinormal centipedal centipede centiplume centipoise centistere centistoke centner cento centonical centonism centrad central centrale Centrales centralism centralist centralistic centrality centralization centralize centralizer centrally centralness centranth Centranthus centrarchid Centrarchidae centrarchoid Centraxonia centraxonial Centrechinoida centric Centricae centrical centricality centrically centricalness centricipital centriciput centricity centriffed centrifugal centrifugalization centrifugalize centrifugaller centrifugally centrifugate centrifugation centrifuge centrifugence centriole centripetal centripetalism centripetally centripetence centripetency centriscid Centriscidae centrisciform centriscoid Centriscus centrist centroacinar centrobaric centrobarical centroclinal centrode centrodesmose centrodesmus centrodorsal centrodorsally centroid centroidal centrolecithal Centrolepidaceae centrolepidaceous centrolinead centrolineal centromere centronucleus centroplasm Centropomidae Centropomus Centrosema centrosome centrosomic Centrosoyus Centrospermae centrosphere centrosymmetric centrosymmetry Centrotus centrum centry centum centumvir centumviral centumvirate Centunculus centuple centuplicate centuplication centuply centuria centurial centuriate centuriation centuriator centuried centurion century ceorl ceorlish cep cepa cepaceous cepe cephaeline Cephaelis Cephalacanthidae Cephalacanthus cephalad cephalagra cephalalgia cephalalgic cephalalgy cephalanthium cephalanthous Cephalanthus Cephalaspis Cephalata cephalate cephaldemae cephalemia cephaletron Cephaleuros cephalhematoma cephalhydrocele cephalic cephalin Cephalina cephaline cephalism cephalitis cephalization cephaloauricular Cephalobranchiata cephalobranchiate cephalocathartic cephalocaudal cephalocele cephalocentesis cephalocercal Cephalocereus cephalochord Cephalochorda cephalochordal Cephalochordata cephalochordate cephaloclasia cephaloclast cephalocone cephaloconic cephalocyst cephalodiscid Cephalodiscida Cephalodiscus cephalodymia cephalodymus cephalodynia cephalofacial cephalogenesis cephalogram cephalograph cephalohumeral cephalohumeralis cephaloid cephalology cephalomancy cephalomant cephalomelus cephalomenia cephalomeningitis cephalomere cephalometer cephalometric cephalometry cephalomotor cephalomyitis cephalon cephalonasal cephalopagus cephalopathy cephalopharyngeal cephalophine cephalophorous Cephalophus cephalophyma cephaloplegia cephaloplegic cephalopod Cephalopoda cephalopodan cephalopodic cephalopodous Cephalopterus cephalorachidian cephalorhachidian cephalosome cephalospinal Cephalosporium cephalostyle Cephalotaceae cephalotaceous Cephalotaxus cephalotheca cephalothecal cephalothoracic cephalothoracopagus cephalothorax cephalotome cephalotomy cephalotractor cephalotribe cephalotripsy cephalotrocha Cephalotus cephalous Cephas Cepheid cephid Cephidae Cephus Cepolidae ceps ceptor cequi ceraceous cerago ceral ceramal cerambycid Cerambycidae Ceramiaceae ceramiaceous ceramic ceramicite ceramics ceramidium ceramist Ceramium ceramographic ceramography cerargyrite ceras cerasein cerasin cerastes Cerastium Cerasus cerata cerate ceratectomy cerated ceratiasis ceratiid Ceratiidae ceratioid ceration ceratite Ceratites ceratitic Ceratitidae Ceratitis ceratitoid Ceratitoidea Ceratium Ceratobatrachinae ceratoblast ceratobranchial ceratocricoid Ceratodidae Ceratodontidae Ceratodus ceratofibrous ceratoglossal ceratoglossus ceratohyal ceratohyoid ceratoid ceratomandibular ceratomania Ceratonia Ceratophrys Ceratophyllaceae ceratophyllaceous Ceratophyllum Ceratophyta ceratophyte Ceratops Ceratopsia ceratopsian ceratopsid Ceratopsidae Ceratopteridaceae ceratopteridaceous Ceratopteris ceratorhine Ceratosa Ceratosaurus Ceratospongiae ceratospongian Ceratostomataceae Ceratostomella ceratotheca ceratothecal Ceratozamia ceraunia ceraunics ceraunogram ceraunograph ceraunomancy ceraunophone ceraunoscope ceraunoscopy Cerberean Cerberic Cerberus cercal cercaria cercarial cercarian cercariform cercelee cerci Cercidiphyllaceae Cercis Cercocebus Cercolabes Cercolabidae cercomonad Cercomonadidae Cercomonas cercopid Cercopidae cercopithecid Cercopithecidae cercopithecoid Cercopithecus cercopod Cercospora Cercosporella cercus Cerdonian cere cereal cerealian cerealin cerealism cerealist cerealose cerebella cerebellar cerebellifugal cerebellipetal cerebellocortex cerebellopontile cerebellopontine cerebellorubral cerebellospinal cerebellum cerebra cerebral cerebralgia cerebralism cerebralist cerebralization cerebralize cerebrally cerebrasthenia cerebrasthenic cerebrate cerebration cerebrational Cerebratulus cerebric cerebricity cerebriform cerebriformly cerebrifugal cerebrin cerebripetal cerebritis cerebrize cerebrocardiac cerebrogalactose cerebroganglion cerebroganglionic cerebroid cerebrology cerebroma cerebromalacia cerebromedullary cerebromeningeal cerebromeningitis cerebrometer cerebron cerebronic cerebroparietal cerebropathy cerebropedal cerebrophysiology cerebropontile cerebropsychosis cerebrorachidian cerebrosclerosis cerebroscope cerebroscopy cerebrose cerebrosensorial cerebroside cerebrosis cerebrospinal cerebrospinant cerebrosuria cerebrotomy cerebrotonia cerebrotonic cerebrovisceral cerebrum cerecloth cered cereless cerement ceremonial ceremonialism ceremonialist ceremonialize ceremonially ceremonious ceremoniously ceremoniousness ceremony cereous cerer ceresin Cereus cerevis ceria Cerialia cerianthid Cerianthidae cerianthoid Cerianthus ceric ceride ceriferous cerigerous cerillo ceriman cerin cerine Cerinthe Cerinthian Ceriomyces Cerion Cerionidae ceriops Ceriornis cerise cerite Cerithiidae cerithioid Cerithium cerium cermet cern cerniture cernuous cero cerograph cerographic cerographist cerography ceroline cerolite ceroma ceromancy cerophilous ceroplast ceroplastic ceroplastics ceroplasty cerotate cerote cerotene cerotic cerotin cerotype cerous ceroxyle Ceroxylon cerrero cerrial cerris certain certainly certainty Certhia Certhiidae certie certifiable certifiableness certifiably certificate certification certificative certificator certificatory certified certifier certify certiorari certiorate certioration certis certitude certosina certosino certy cerule cerulean cerulein ceruleite ceruleolactite ceruleous cerulescent ceruleum cerulignol cerulignone cerumen ceruminal ceruminiferous ceruminous cerumniparous ceruse cerussite Cervantist cervantite cervical Cervicapra cervicaprine cervicectomy cervicicardiac cervicide cerviciplex cervicispinal cervicitis cervicoauricular cervicoaxillary cervicobasilar cervicobrachial cervicobregmatic cervicobuccal cervicodorsal cervicodynia cervicofacial cervicohumeral cervicolabial cervicolingual cervicolumbar cervicomuscular cerviconasal cervicorn cervicoscapular cervicothoracic cervicovaginal cervicovesical cervid Cervidae Cervinae cervine cervisia cervisial cervix cervoid cervuline Cervulus Cervus ceryl Cerynean Cesare cesarevitch cesarolite cesious cesium cespititous cespitose cespitosely cespitulose cess cessantly cessation cessative cessavit cesser cession cessionaire cessionary cessor cesspipe cesspit cesspool cest Cestida Cestidae Cestoda Cestodaria cestode cestoid Cestoidea cestoidean Cestracion cestraciont Cestraciontes Cestraciontidae Cestrian Cestrum cestrum cestus Cetacea cetacean cetaceous cetaceum cetane Cete cetene ceterach ceti cetic ceticide Cetid cetin Cetiosauria cetiosaurian Cetiosaurus cetological cetologist cetology Cetomorpha cetomorphic Cetonia cetonian Cetoniides Cetoniinae cetorhinid Cetorhinidae cetorhinoid Cetorhinus cetotolite Cetraria cetraric cetrarin Cetus cetyl cetylene cetylic cevadilla cevadilline cevadine Cevennian Cevenol Cevenole cevine cevitamic ceylanite Ceylon Ceylonese ceylonite ceyssatite Ceyx Cezannesque cha chaa chab chabasie chabazite Chablis chabot chabouk chabuk chabutra Chac chacate chachalaca Chachapuya chack Chackchiuma chacker chackle chackler chacma Chaco chacona chacte chad chadacryst Chaenactis Chaenolobus Chaenomeles chaeta Chaetangiaceae Chaetangium Chaetetes Chaetetidae Chaetifera chaetiferous Chaetites Chaetitidae Chaetochloa Chaetodon chaetodont chaetodontid Chaetodontidae chaetognath Chaetognatha chaetognathan chaetognathous Chaetophora Chaetophoraceae chaetophoraceous Chaetophorales chaetophorous chaetopod Chaetopoda chaetopodan chaetopodous chaetopterin Chaetopterus chaetosema Chaetosoma Chaetosomatidae Chaetosomidae chaetotactic chaetotaxy Chaetura chafe chafer chafery chafewax chafeweed chaff chaffcutter chaffer chafferer chaffinch chaffiness chaffing chaffingly chaffless chafflike chaffman chaffseed chaffwax chaffweed chaffy chaft chafted Chaga chagan Chagga chagrin chaguar chagul chahar chai Chailletiaceae chain chainage chained chainer chainette chainless chainlet chainmaker chainmaking chainman chainon chainsmith chainwale chainwork chair chairer chairless chairmaker chairmaking chairman chairmanship chairmender chairmending chairwarmer chairwoman chais chaise chaiseless Chait chaitya chaja chaka chakar chakari Chakavski chakazi chakdar chakobu chakra chakram chakravartin chaksi chal chalaco chalana chalastic Chalastogastra chalaza chalazal chalaze chalazian chalaziferous chalazion chalazogam chalazogamic chalazogamy chalazoidite chalcanthite Chalcedonian chalcedonic chalcedonous chalcedony chalcedonyx chalchuite chalcid Chalcidian Chalcidic chalcidicum chalcidid Chalcididae chalcidiform chalcidoid Chalcidoidea Chalcioecus Chalcis chalcites chalcocite chalcograph chalcographer chalcographic chalcographical chalcographist chalcography chalcolite chalcolithic chalcomancy chalcomenite chalcon chalcone chalcophanite chalcophyllite chalcopyrite chalcosiderite chalcosine chalcostibite chalcotrichite chalcotript chalcus Chaldaei Chaldaic Chaldaical Chaldaism Chaldean Chaldee chalder chaldron chalet chalice chaliced chalicosis chalicothere chalicotheriid Chalicotheriidae chalicotherioid Chalicotherium Chalina Chalinidae chalinine Chalinitis chalk chalkcutter chalker chalkiness chalklike chalkography chalkosideric chalkstone chalkstony chalkworker chalky challah challenge challengeable challengee challengeful challenger challengingly challie challis challote chalmer chalon chalone Chalons chalque chalta Chalukya Chalukyan chalumeau chalutz chalutzim Chalybean chalybeate chalybeous Chalybes chalybite Cham cham Chama Chamacea Chamacoco Chamaebatia Chamaecistus chamaecranial Chamaecrista Chamaecyparis Chamaedaphne Chamaeleo Chamaeleon Chamaeleontidae Chamaelirium Chamaenerion Chamaepericlymenum chamaeprosopic Chamaerops chamaerrhine Chamaesaura Chamaesiphon Chamaesiphonaceae Chamaesiphonaceous Chamaesiphonales Chamaesyce chamal Chamar chamar chamber chamberdeacon chambered chamberer chambering chamberlain chamberlainry chamberlainship chamberlet chamberleted chamberletted chambermaid Chambertin chamberwoman Chambioa chambray chambrel chambul chamecephalic chamecephalous chamecephalus chamecephaly chameleon chameleonic chameleonize chameleonlike chamfer chamferer chamfron Chamian Chamicuro Chamidae chamisal chamiso Chamite chamite Chamkanni chamma chamois Chamoisette chamoisite chamoline Chamomilla Chamorro Chamos champ Champa champac champaca champacol champagne champagneless champagnize champaign champain champaka champer champertor champertous champerty champignon champion championess championize championless championlike championship Champlain Champlainic champleve champy Chanabal Chanca chance chanceful chancefully chancefulness chancel chanceled chanceless chancellery chancellor chancellorate chancelloress chancellorism chancellorship chancer chancery chancewise chanche chanchito chanco chancre chancriform chancroid chancroidal chancrous chancy chandala chandam chandelier Chandi chandi chandler chandleress chandlering chandlery chandoo chandu chandul Chane chanfrin Chang chang changa changar change changeability changeable changeableness changeably changedale changedness changeful changefully changefulness changeless changelessly changelessness changeling changement changer Changoan Changos Changuina Changuinan Chanidae chank chankings channel channelbill channeled channeler channeling channelization channelize channelled channeller channelling channelwards channer chanson chansonnette chanst chant chantable chanter chanterelle chantership chantey chanteyman chanticleer chanting chantingly chantlate chantress chantry chao chaogenous chaology chaos chaotic chaotical chaotically chaoticness Chaouia chap Chapacura Chapacuran chapah Chapanec chaparral chaparro chapatty chapbook chape chapeau chapeaux chaped chapel chapeless chapelet chapelgoer chapelgoing chapellage chapellany chapelman chapelmaster chapelry chapelward chaperno chaperon chaperonage chaperone chaperonless chapfallen chapin chapiter chapitral chaplain chaplaincy chaplainry chaplainship chapless chaplet chapleted chapman chapmanship chapournet chapournetted chappaul chapped chapper chappie chappin chapping chappow chappy chaps chapt chaptalization chaptalize chapter chapteral chapterful chapwoman char Chara charabanc charabancer charac Characeae characeous characetum characin characine characinid Characinidae characinoid character characterful characterial characterical characterism characterist characteristic characteristical characteristically characteristicalness characteristicness characterizable characterization characterize characterizer characterless characterlessness characterological characterologist characterology charactery charade Charadrii Charadriidae charadriiform Charadriiformes charadrine charadrioid Charadriomorphae Charadrius Charales charas charbon Charca charcoal charcoaly charcutier chard chardock chare charer charet charette charge chargeability chargeable chargeableness chargeably chargee chargeless chargeling chargeman charger chargeship charging Charicleia charier charily chariness chariot charioted chariotee charioteer charioteership chariotlike chariotman chariotry chariotway charism charisma charismatic Charissa charisticary charitable charitableness charitably Charites charity charityless charivari chark charka charkha charkhana charlady charlatan charlatanic charlatanical charlatanically charlatanish charlatanism charlatanistic charlatanry charlatanship Charleen Charlene Charles Charleston Charley Charlie charlock Charlotte charm charmedly charmel charmer charmful charmfully charmfulness charming charmingly charmingness charmless charmlessly charmwise charnel charnockite Charon Charonian Charonic Charontas Charophyta charpit charpoy charqued charqui charr Charruan Charruas charry charshaf charsingha chart chartaceous charter charterable charterage chartered charterer charterhouse Charterist charterless chartermaster charthouse charting Chartism Chartist chartist chartless chartographist chartology chartometer chartophylax chartreuse Chartreux chartroom chartula chartulary charuk charwoman chary Charybdian Charybdis chasable chase chaseable chaser Chasidim chasing chasm chasma chasmal chasmed chasmic chasmogamic chasmogamous chasmogamy chasmophyte chasmy chasse Chasselas chassepot chasseur chassignite chassis Chastacosta chaste chastely chasten chastener chasteness chasteningly chastenment chasteweed chastisable chastise chastisement chastiser chastity chasuble chasubled chat chataka Chateau chateau chateaux chatelain chatelaine chatelainry chatellany chathamite chati Chatillon Chatino Chatot chatoyance chatoyancy chatoyant chatsome chatta chattable Chattanooga Chattanoogan chattation chattel chattelhood chattelism chattelization chattelize chattelship chatter chatteration chatterbag chatterbox chatterer chattering chatteringly chattermag chattermagging Chattertonian chattery Chatti chattily chattiness chatting chattingly chatty chatwood Chaucerian Chauceriana Chaucerianism Chaucerism Chauchat chaudron chauffer chauffeur chauffeurship Chaui chauk chaukidari Chauliodes chaulmoogra chaulmoograte chaulmoogric Chauna chaus chausseemeile Chautauqua Chautauquan chaute chauth chauvinism chauvinist chauvinistic chauvinistically Chavante Chavantean chavender chavibetol chavicin chavicine chavicol chavish chaw chawan chawbacon chawer Chawia chawk chawl chawstick chay chaya chayaroot Chayma Chayota chayote chayroot chazan Chazy che cheap cheapen cheapener cheapery cheaping cheapish cheaply cheapness Cheapside cheat cheatable cheatableness cheatee cheater cheatery cheating cheatingly cheatrie Chebacco chebec chebel chebog chebule chebulinic Chechehet Chechen check checkable checkage checkbird checkbite checkbook checked checker checkerbelly checkerberry checkerbloom checkerboard checkerbreast checkered checkerist checkers checkerwise checkerwork checkhook checkless checkman checkmate checkoff checkrack checkrein checkroll checkroom checkrope checkrow checkrowed checkrower checkstone checkstrap checkstring checkup checkweigher checkwork checky cheddaring cheddite cheder chedlock chee cheecha cheechako cheek cheekbone cheeker cheekily cheekiness cheekish cheekless cheekpiece cheeky cheep cheeper cheepily cheepiness cheepy cheer cheered cheerer cheerful cheerfulize cheerfully cheerfulness cheerfulsome cheerily cheeriness cheering cheeringly cheerio cheerleader cheerless cheerlessly cheerlessness cheerly cheery cheese cheeseboard cheesebox cheeseburger cheesecake cheesecloth cheesecurd cheesecutter cheeseflower cheeselip cheesemonger cheesemongering cheesemongerly cheesemongery cheeseparer cheeseparing cheeser cheesery cheesewood cheesiness cheesy cheet cheetah cheeter cheetie chef Chefrinia chegoe chegre Chehalis Cheilanthes cheilitis Cheilodipteridae Cheilodipterus Cheilostomata cheilostomatous cheir cheiragra Cheiranthus Cheirogaleus Cheiroglossa cheirognomy cheirography cheirolin cheirology cheiromancy cheiromegaly cheiropatagium cheiropodist cheiropody cheiropompholyx Cheiroptera cheiropterygium cheirosophy cheirospasm Cheirotherium Cheka chekan cheke cheki Chekist chekmak chela chelaship chelate chelation chelem chelerythrine chelicer chelicera cheliceral chelicerate chelicere chelide chelidon chelidonate chelidonian chelidonic chelidonine Chelidonium Chelidosaurus Cheliferidea cheliferous cheliform chelingo cheliped Chellean chello Chelodina chelodine chelone Chelonia chelonian chelonid Chelonidae cheloniid Cheloniidae chelonin chelophore chelp Cheltenham Chelura Chelydidae Chelydra Chelydridae chelydroid chelys Chemakuan chemasthenia chemawinite Chemehuevi chemesthesis chemiatric chemiatrist chemiatry chemic chemical chemicalization chemicalize chemically chemicker chemicoastrological chemicobiologic chemicobiology chemicocautery chemicodynamic chemicoengineering chemicoluminescence chemicomechanical chemicomineralogical chemicopharmaceutical chemicophysical chemicophysics chemicophysiological chemicovital chemigraph chemigraphic chemigraphy chemiloon chemiluminescence chemiotactic chemiotaxic chemiotaxis chemiotropic chemiotropism chemiphotic chemis chemise chemisette chemism chemisorb chemisorption chemist chemistry chemitype chemitypy chemoceptor chemokinesis chemokinetic chemolysis chemolytic chemolyze chemoreception chemoreceptor chemoreflex chemoresistance chemoserotherapy chemosis chemosmosis chemosmotic chemosynthesis chemosynthetic chemotactic chemotactically chemotaxis chemotaxy chemotherapeutic chemotherapeutics chemotherapist chemotherapy chemotic chemotropic chemotropically chemotropism Chemung chemurgic chemurgical chemurgy Chen chena chende chenevixite Cheney cheng chenica chenille cheniller chenopod Chenopodiaceae chenopodiaceous Chenopodiales Chenopodium cheoplastic chepster cheque Chequers Chera chercock cherem Cheremiss Cheremissian cherimoya cherish cherishable cherisher cherishing cherishingly cherishment Cherkess Cherkesser Chermes Chermidae Chermish Chernomorish chernozem Cherokee cheroot cherried cherry cherryblossom cherrylike chersonese Chersydridae chert cherte cherty cherub cherubic cherubical cherubically cherubim cherubimic cherubimical cherubin Cherusci Chervante chervil chervonets Chesapeake Cheshire cheson chess chessboard chessdom chessel chesser chessist chessman chessmen chesstree chessylite chest Chester chester chesterfield Chesterfieldian chesterlite chestful chestily chestiness chestnut chestnutty chesty Chet cheth chettik chetty chetverik chetvert chevage cheval chevalier chevaline chevance cheve cheven chevener chevesaile chevin Cheviot chevisance chevise chevon chevrette chevron chevrone chevronel chevronelly chevronwise chevrony chevrotain chevy chew chewbark chewer chewink chewstick chewy Cheyenne cheyney chhatri chi chia Chiam Chian Chianti Chiapanec Chiapanecan chiaroscurist chiaroscuro chiasm chiasma chiasmal chiasmatype chiasmatypy chiasmic Chiasmodon chiasmodontid Chiasmodontidae chiasmus chiastic chiastolite chiastoneural chiastoneurous chiastoneury chiaus Chibcha Chibchan chibinite chibouk chibrit chic chicane chicaner chicanery chicaric chicayote Chicha chichi chichicaste Chichimec chichimecan chichipate chichipe chichituna chick chickabiddy chickadee Chickahominy Chickamauga chickaree Chickasaw chickasaw chickell chicken chickenberry chickenbill chickenbreasted chickenhearted chickenheartedly chickenheartedness chickenhood chickenweed chickenwort chicker chickhood chickling chickstone chickweed chickwit chicky chicle chicness Chico chico Chicomecoatl chicory chicot chicote chicqued chicquer chicquest chicquing chid chidden chide chider chiding chidingly chidingness chidra chief chiefdom chiefery chiefess chiefest chiefish chiefless chiefling chiefly chiefship chieftain chieftaincy chieftainess chieftainry chieftainship chieftess chield Chien chien chiffer chiffon chiffonade chiffonier chiffony chifforobe chigetai chiggak chigger chiggerweed chignon chignoned chigoe chih chihfu Chihuahua chikara chil chilacavote chilalgia chilarium chilblain Chilcat child childbearing childbed childbirth childcrowing childe childed Childermas childhood childing childish childishly childishness childkind childless childlessness childlike childlikeness childly childness childrenite childridden childship childward chile Chilean Chileanization Chileanize chilectropion chilenite chili chiliad chiliadal chiliadic chiliagon chiliahedron chiliarch chiliarchia chiliarchy chiliasm chiliast chiliastic chilicote chilicothe chilidium Chilina Chilinidae chiliomb Chilion chilitis Chilkat chill chilla chillagite chilled chiller chillily chilliness chilling chillingly chillish Chilliwack chillness chillo chillroom chillsome chillum chillumchee chilly chilognath Chilognatha chilognathan chilognathous chilogrammo chiloma Chilomastix chiloncus chiloplasty chilopod Chilopoda chilopodan chilopodous Chilopsis Chilostoma Chilostomata chilostomatous chilostome chilotomy Chiltern chilver chimaera chimaerid Chimaeridae chimaeroid Chimaeroidei Chimakuan Chimakum Chimalakwe Chimalapa Chimane chimango Chimaphila Chimarikan Chimariko chimble chime chimer chimera chimeric chimerical chimerically chimericalness chimesmaster chiminage Chimmesyan chimney chimneyhead chimneyless chimneyman Chimonanthus chimopeelagic chimpanzee Chimu Chin chin china chinaberry chinalike Chinaman chinamania chinamaniac chinampa chinanta Chinantecan Chinantecs chinaphthol chinar chinaroot Chinatown chinaware chinawoman chinband chinch chincha Chinchasuyu chinchayote chinche chincherinchee chinchilla chinching chincloth chincough chine chined Chinee Chinese Chinesery ching chingma Chingpaw Chinhwan chinik chinin Chink chink chinkara chinker chinkerinchee chinking chinkle chinks chinky chinless chinnam chinned chinny chino chinoa chinol Chinook Chinookan chinotoxine chinotti chinpiece chinquapin chinse chint chintz chinwood Chiococca chiococcine Chiogenes chiolite chionablepsia Chionanthus Chionaspis Chionididae Chionis Chionodoxa Chiot chiotilla Chip chip chipchap chipchop Chipewyan chiplet chipling chipmunk chippable chippage chipped Chippendale chipper chipping chippy chips chipwood Chiquitan Chiquito chiragra chiral chiralgia chirality chirapsia chirarthritis chirata Chiriana Chiricahua Chiriguano chirimen Chirino chirinola chiripa chirivita chirk chirm chiro chirocosmetics chirogale chirognomic chirognomically chirognomist chirognomy chirognostic chirograph chirographary chirographer chirographic chirographical chirography chirogymnast chirological chirologically chirologist chirology chiromance chiromancer chiromancist chiromancy chiromant chiromantic chiromantical Chiromantis chiromegaly chirometer Chiromyidae Chiromys Chiron chironomic chironomid Chironomidae Chironomus chironomy chironym chiropatagium chiroplasty chiropod chiropodial chiropodic chiropodical chiropodist chiropodistry chiropodous chiropody chiropompholyx chiropractic chiropractor chiropraxis chiropter Chiroptera chiropteran chiropterite chiropterophilous chiropterous chiropterygian chiropterygious chiropterygium chirosophist chirospasm Chirotes chirotherian Chirotherium chirothesia chirotonsor chirotonsory chirotony chirotype chirp chirper chirpily chirpiness chirping chirpingly chirpling chirpy chirr chirrup chirruper chirrupy chirurgeon chirurgery Chisedec chisel chiseled chiseler chisellike chiselly chiselmouth chit Chita chitak chital chitchat chitchatty Chitimacha Chitimachan chitin chitinization chitinized chitinocalcareous chitinogenous chitinoid chitinous chiton chitosamine chitosan chitose chitra Chitrali chittamwood chitter chitterling chitty chivalresque chivalric chivalrous chivalrously chivalrousness chivalry chive chivey chiviatite Chiwere chkalik chladnite chlamyd chlamydate chlamydeous Chlamydobacteriaceae chlamydobacteriaceous Chlamydobacteriales Chlamydomonadaceae Chlamydomonadidae Chlamydomonas Chlamydosaurus Chlamydoselachidae Chlamydoselachus chlamydospore Chlamydozoa chlamydozoan chlamyphore Chlamyphorus chlamys Chleuh chloanthite chloasma Chloe chlor chloracetate chloragogen chloral chloralformamide chloralide chloralism chloralization chloralize chloralose chloralum chloramide chloramine chloramphenicol chloranemia chloranemic chloranhydride chloranil Chloranthaceae chloranthaceous Chloranthus chloranthy chlorapatite chlorastrolite chlorate chlorazide chlorcosane chlordan chlordane chlore Chlorella Chlorellaceae chlorellaceous chloremia chlorenchyma chlorhydrate chlorhydric chloric chloridate chloridation chloride Chloridella Chloridellidae chlorider chloridize chlorimeter chlorimetric chlorimetry chlorinate chlorination chlorinator chlorine chlorinize chlorinous chloriodide Chlorion Chlorioninae chlorite chloritic chloritization chloritize chloritoid chlorize chlormethane chlormethylic chloroacetate chloroacetic chloroacetone chloroacetophenone chloroamide chloroamine chloroanaemia chloroanemia chloroaurate chloroauric chloroaurite chlorobenzene chlorobromide chlorocalcite chlorocarbonate chlorochromates chlorochromic chlorochrous Chlorococcaceae Chlorococcales Chlorococcum Chlorococcus chlorocresol chlorocruorin chlorodize chloroform chloroformate chloroformic chloroformism chloroformist chloroformization chloroformize chlorogenic chlorogenine chlorohydrin chlorohydrocarbon chloroiodide chloroleucite chloroma chloromelanite chlorometer chloromethane chlorometric chlorometry Chloromycetin chloronitrate chloropal chloropalladates chloropalladic chlorophane chlorophenol chlorophoenicite Chlorophora Chlorophyceae chlorophyceous chlorophyl chlorophyll chlorophyllaceous chlorophyllan chlorophyllase chlorophyllian chlorophyllide chlorophylliferous chlorophylligenous chlorophylligerous chlorophyllin chlorophyllite chlorophylloid chlorophyllose chlorophyllous chloropia chloropicrin chloroplast chloroplastic chloroplastid chloroplatinate chloroplatinic chloroplatinite chloroplatinous chloroprene chloropsia chloroquine chlorosilicate chlorosis chlorospinel chlorosulphonic chlorotic chlorous chlorozincate chlorsalol chloryl Chnuphis cho choachyte choana choanate Choanephora choanocytal choanocyte Choanoflagellata choanoflagellate Choanoflagellida Choanoflagellidae choanoid choanophorous choanosomal choanosome choate choaty chob choca chocard Chocho chocho chock chockablock chocker chockler chockman Choco Chocoan chocolate Choctaw choel choenix Choeropsis Choes choffer choga chogak chogset Choiak choice choiceful choiceless choicelessness choicely choiceness choicy choil choiler choir choirboy choirlike choirman choirmaster choirwise Choisya chokage choke chokeberry chokebore chokecherry chokedamp choker chokered chokerman chokestrap chokeweed chokidar choking chokingly chokra choky Chol chol Chola chola cholagogic cholagogue cholalic cholane cholangioitis cholangitis cholanic cholanthrene cholate chold choleate cholecyanine cholecyst cholecystalgia cholecystectasia cholecystectomy cholecystenterorrhaphy cholecystenterostomy cholecystgastrostomy cholecystic cholecystitis cholecystnephrostomy cholecystocolostomy cholecystocolotomy cholecystoduodenostomy cholecystogastrostomy cholecystogram cholecystography cholecystoileostomy cholecystojejunostomy cholecystokinin cholecystolithiasis cholecystolithotripsy cholecystonephrostomy cholecystopexy cholecystorrhaphy cholecystostomy cholecystotomy choledoch choledochal choledochectomy choledochitis choledochoduodenostomy choledochoenterostomy choledocholithiasis choledocholithotomy choledocholithotripsy choledochoplasty choledochorrhaphy choledochostomy choledochotomy cholehematin choleic choleine choleinic cholelith cholelithiasis cholelithic cholelithotomy cholelithotripsy cholelithotrity cholemia choleokinase cholepoietic choler cholera choleraic choleric cholericly cholericness choleriform cholerigenous cholerine choleroid choleromania cholerophobia cholerrhagia cholestane cholestanol cholesteatoma cholesteatomatous cholestene cholesterate cholesteremia cholesteric cholesterin cholesterinemia cholesterinic cholesterinuria cholesterol cholesterolemia cholesteroluria cholesterosis cholesteryl choletelin choletherapy choleuria choli choliamb choliambic choliambist cholic choline cholinergic cholinesterase cholinic cholla choller Cholo cholochrome cholocyanine Choloepus chologenetic choloidic choloidinic chololith chololithic Cholonan Cholones cholophein cholorrhea choloscopy cholterheaded cholum choluria Choluteca chomp chondral chondralgia chondrarsenite chondre chondrectomy chondrenchyma chondric chondrification chondrify chondrigen chondrigenous Chondrilla chondrin chondrinous chondriocont chondriome chondriomere chondriomite chondriosomal chondriosome chondriosphere chondrite chondritic chondritis chondroadenoma chondroalbuminoid chondroangioma chondroarthritis chondroblast chondroblastoma chondrocarcinoma chondrocele chondroclasis chondroclast chondrocoracoid chondrocostal chondrocranial chondrocranium chondrocyte chondrodite chondroditic chondrodynia chondrodystrophia chondrodystrophy chondroendothelioma chondroepiphysis chondrofetal chondrofibroma chondrofibromatous Chondroganoidei chondrogen chondrogenesis chondrogenetic chondrogenous chondrogeny chondroglossal chondroglossus chondrography chondroid chondroitic chondroitin chondrolipoma chondrology chondroma chondromalacia chondromatous chondromucoid Chondromyces chondromyoma chondromyxoma chondromyxosarcoma chondropharyngeal chondropharyngeus chondrophore chondrophyte chondroplast chondroplastic chondroplasty chondroprotein chondropterygian Chondropterygii chondropterygious chondrosamine chondrosarcoma chondrosarcomatous chondroseptum chondrosin chondrosis chondroskeleton chondrostean Chondrostei chondrosteoma chondrosteous chondrosternal chondrotome chondrotomy chondroxiphoid chondrule chondrus chonolith chonta Chontal Chontalan Chontaquiro chontawood choop choosable choosableness choose chooser choosing choosingly choosy chop chopa chopboat chopfallen chophouse chopin chopine choplogic chopped chopper choppered chopping choppy chopstick Chopunnish Chora choragic choragion choragium choragus choragy Chorai choral choralcelo choraleon choralist chorally Chorasmian chord chorda Chordaceae chordacentrous chordacentrum chordaceous chordal chordally chordamesoderm Chordata chordate chorded Chordeiles chorditis chordoid chordomesoderm chordotomy chordotonal chore chorea choreal choreatic choree choregic choregus choregy choreic choreiform choreograph choreographer choreographic choreographical choreography choreoid choreomania chorepiscopal chorepiscopus choreus choreutic chorial choriamb choriambic choriambize choriambus choric chorine chorioadenoma chorioallantoic chorioallantoid chorioallantois choriocapillaris choriocapillary choriocarcinoma choriocele chorioepithelioma chorioid chorioidal chorioiditis chorioidocyclitis chorioidoiritis chorioidoretinitis chorioma chorion chorionepithelioma chorionic Chorioptes chorioptic chorioretinal chorioretinitis Choripetalae choripetalous choriphyllous chorisepalous chorisis chorism chorist choristate chorister choristership choristic choristoblastoma choristoma choristry chorization chorizont chorizontal chorizontes chorizontic chorizontist chorogi chorograph chorographer chorographic chorographical chorographically chorography choroid choroidal choroidea choroiditis choroidocyclitis choroidoiritis choroidoretinitis chorological chorologist chorology choromania choromanic chorometry chorook Chorotega Choroti chort chorten Chorti chortle chortler chortosterol chorus choruser choruslike Chorwat choryos chose chosen chott Chou Chouan Chouanize chouette chough chouka choultry choup chouquette chous chouse chouser chousingha chow Chowanoc chowchow chowder chowderhead chowderheaded chowk chowry choya choyroot Chozar chrematheism chrematist chrematistic chrematistics chreotechnics chresmology chrestomathic chrestomathics chrestomathy chria chrimsel Chris chrism chrisma chrismal chrismary chrismatine chrismation chrismatite chrismatize chrismatory chrismon chrisom chrisomloosing chrisroot Chrissie Christ Christabel Christadelphian Christadelphianism christcross Christdom Christed christen Christendie Christendom christened christener christening Christenmas Christhood Christiad Christian Christiana Christiania Christianiadeal Christianism christianite Christianity Christianization Christianize Christianizer Christianlike Christianly Christianness Christianogentilism Christianography Christianomastix Christianopaganism Christicide Christie Christiform Christina Christine Christless Christlessness Christlike Christlikeness Christliness Christly Christmas Christmasberry Christmasing Christmastide Christmasy Christocentric Christofer Christogram Christolatry Christological Christologist Christology Christophany Christophe Christopher Christos chroatol Chrobat chroma chromaffin chromaffinic chromammine chromaphil chromaphore chromascope chromate chromatic chromatical chromatically chromatician chromaticism chromaticity chromatics chromatid chromatin chromatinic Chromatioideae chromatism chromatist Chromatium chromatize chromatocyte chromatodysopia chromatogenous chromatogram chromatograph chromatographic chromatography chromatoid chromatology chromatolysis chromatolytic chromatometer chromatone chromatopathia chromatopathic chromatopathy chromatophil chromatophile chromatophilia chromatophilic chromatophilous chromatophobia chromatophore chromatophoric chromatophorous chromatoplasm chromatopsia chromatoptometer chromatoptometry chromatoscope chromatoscopy chromatosis chromatosphere chromatospheric chromatrope chromaturia chromatype chromazurine chromdiagnosis chrome chromene chromesthesia chromic chromicize chromid Chromidae Chromides chromidial Chromididae chromidiogamy chromidiosome chromidium chromidrosis chromiferous chromiole chromism chromite chromitite chromium chromo Chromobacterieae Chromobacterium chromoblast chromocenter chromocentral chromochalcographic chromochalcography chromocollograph chromocollographic chromocollography chromocollotype chromocollotypy chromocratic chromocyte chromocytometer chromodermatosis chromodiascope chromogen chromogene chromogenesis chromogenetic chromogenic chromogenous chromogram chromograph chromoisomer chromoisomeric chromoisomerism chromoleucite chromolipoid chromolith chromolithic chromolithograph chromolithographer chromolithographic chromolithography chromolysis chromomere chromometer chromone chromonema chromoparous chromophage chromophane chromophile chromophilic chromophilous chromophobic chromophore chromophoric chromophorous chromophotograph chromophotographic chromophotography chromophotolithograph chromophyll chromoplasm chromoplasmic chromoplast chromoplastid chromoprotein chromopsia chromoptometer chromoptometrical chromosantonin chromoscope chromoscopic chromoscopy chromosomal chromosome chromosphere chromospheric chromotherapist chromotherapy chromotrope chromotropic chromotropism chromotropy chromotype chromotypic chromotypographic chromotypography chromotypy chromous chromoxylograph chromoxylography chromule chromy chromyl chronal chronanagram chronaxia chronaxie chronaxy chronic chronical chronically chronicity chronicle chronicler chronicon chronisotherm chronist chronobarometer chronocinematography chronocrator chronocyclegraph chronodeik chronogeneous chronogenesis chronogenetic chronogram chronogrammatic chronogrammatical chronogrammatically chronogrammatist chronogrammic chronograph chronographer chronographic chronographical chronographically chronography chronoisothermal chronologer chronologic chronological chronologically chronologist chronologize chronology chronomancy chronomantic chronometer chronometric chronometrical chronometrically chronometry chrononomy chronopher chronophotograph chronophotographic chronophotography Chronos chronoscope chronoscopic chronoscopically chronoscopy chronosemic chronostichon chronothermal chronothermometer chronotropic chronotropism Chroococcaceae chroococcaceous Chroococcales chroococcoid Chroococcus Chrosperma chrotta chrysal chrysalid chrysalidal chrysalides chrysalidian chrysaline chrysalis chrysaloid chrysamine chrysammic chrysamminic Chrysamphora chrysaniline chrysanisic chrysanthemin chrysanthemum chrysanthous Chrysaor chrysarobin chrysatropic chrysazin chrysazol chryselectrum chryselephantine Chrysemys chrysene chrysenic chrysid Chrysidella chrysidid Chrysididae chrysin Chrysippus Chrysis chrysoaristocracy Chrysobalanaceae Chrysobalanus chrysoberyl chrysobull chrysocarpous chrysochlore Chrysochloridae Chrysochloris chrysochlorous chrysochrous chrysocolla chrysocracy chrysoeriol chrysogen chrysograph chrysographer chrysography chrysohermidin chrysoidine chrysolite chrysolitic chrysology Chrysolophus chrysomelid Chrysomelidae chrysomonad Chrysomonadales Chrysomonadina chrysomonadine Chrysomyia Chrysopa chrysopal chrysopee chrysophan chrysophanic Chrysophanus chrysophenine chrysophilist chrysophilite Chrysophlyctis chrysophyll Chrysophyllum chrysopid Chrysopidae chrysopoeia chrysopoetic chrysopoetics chrysoprase Chrysops Chrysopsis chrysorin chrysosperm Chrysosplenium Chrysothamnus Chrysothrix chrysotile Chrysotis chrystocrene chthonian chthonic chthonophagia chthonophagy chub chubbed chubbedness chubbily chubbiness chubby Chuchona Chuck chuck chucker chuckhole chuckies chucking chuckingly chuckle chucklehead chuckleheaded chuckler chucklingly chuckrum chuckstone chuckwalla chucky Chud chuddar Chude Chudic Chueta chufa chuff chuffy chug chugger chuhra Chuje chukar Chukchi chukker chukor chulan chullpa chum Chumashan Chumawi chummage chummer chummery chummily chummy chump chumpaka chumpish chumpishness Chumpivilca chumpy chumship Chumulu Chun chun chunari Chuncho chunga chunk chunkhead chunkily chunkiness chunky chunner chunnia chunter chupak chupon chuprassie chuprassy church churchanity churchcraft churchdom churchful churchgoer churchgoing churchgrith churchianity churchified churchiness churching churchish churchism churchite churchless churchlet churchlike churchliness churchly churchman churchmanly churchmanship churchmaster churchscot churchward churchwarden churchwardenism churchwardenize churchwardenship churchwards churchway churchwise churchwoman churchy churchyard churel churinga churl churled churlhood churlish churlishly churlishness churly churm churn churnability churnful churning churnmilk churnstaff Churoya Churoyan churr Churrigueresque churruck churrus churrworm chut chute chuter chutney Chuvash Chwana chyack chyak chylaceous chylangioma chylaqueous chyle chylemia chylidrosis chylifaction chylifactive chylifactory chyliferous chylific chylification chylificatory chyliform chylify chylocaulous chylocauly chylocele chylocyst chyloid chylomicron chylopericardium chylophyllous chylophylly chylopoiesis chylopoietic chylosis chylothorax chylous chyluria chymaqueous chymase chyme chymia chymic chymiferous chymification chymify chymosin chymosinogen chymotrypsin chymotrypsinogen chymous chypre chytra chytrid Chytridiaceae chytridiaceous chytridial Chytridiales chytridiose chytridiosis Chytridium Chytroi cibarial cibarian cibarious cibation cibol Cibola Cibolan Ciboney cibophobia ciborium cibory ciboule cicad cicada Cicadellidae cicadid Cicadidae cicala cicatrice cicatrices cicatricial cicatricle cicatricose cicatricula cicatricule cicatrisive cicatrix cicatrizant cicatrizate cicatrization cicatrize cicatrizer cicatrose Cicely cicely cicer ciceronage cicerone ciceroni Ciceronian Ciceronianism Ciceronianize Ciceronic Ciceronically ciceronism ciceronize cichlid Cichlidae cichloid cichoraceous Cichoriaceae cichoriaceous Cichorium Cicindela cicindelid cicindelidae cicisbeism ciclatoun Ciconia Ciconiae ciconian ciconiid Ciconiidae ciconiiform Ciconiiformes ciconine ciconioid Cicuta cicutoxin Cid cidarid Cidaridae cidaris Cidaroida cider ciderish ciderist ciderkin cig cigala cigar cigaresque cigarette cigarfish cigarillo cigarito cigarless cigua ciguatera cilectomy cilia ciliary Ciliata ciliate ciliated ciliately ciliation cilice Cilician cilicious Cilicism ciliella ciliferous ciliform ciliiferous ciliiform Cilioflagellata cilioflagellate ciliograde ciliolate ciliolum Ciliophora cilioretinal cilioscleral ciliospinal ciliotomy cilium cillosis cimbia Cimbri Cimbrian Cimbric cimelia cimex cimicid Cimicidae cimicide cimiciform Cimicifuga cimicifugin cimicoid ciminite cimline Cimmeria Cimmerian Cimmerianism cimolite cinch cincher cincholoipon cincholoiponic cinchomeronic Cinchona Cinchonaceae cinchonaceous cinchonamine cinchonate cinchonia cinchonic cinchonicine cinchonidia cinchonidine cinchonine cinchoninic cinchonism cinchonization cinchonize cinchonology cinchophen cinchotine cinchotoxine cincinnal Cincinnati Cincinnatia Cincinnatian cincinnus Cinclidae Cinclidotus cinclis Cinclus cinct cincture cinder Cinderella cinderlike cinderman cinderous cindery Cindie Cindy cine cinecamera cinefilm cinel cinema Cinemascope cinematic cinematical cinematically cinematize cinematograph cinematographer cinematographic cinematographical cinematographically cinematographist cinematography cinemelodrama cinemize cinemograph cinenchyma cinenchymatous cinene cinenegative cineole cineolic cinephone cinephotomicrography cineplastics cineplasty cineraceous Cinerama Cineraria cinerarium cinerary cineration cinerator cinerea cinereal cinereous cineritious cinevariety cingle cingular cingulate cingulated cingulum cinnabar cinnabaric cinnabarine cinnamal cinnamaldehyde cinnamate cinnamein cinnamene cinnamenyl cinnamic Cinnamodendron cinnamol cinnamomic Cinnamomum cinnamon cinnamoned cinnamonic cinnamonlike cinnamonroot cinnamonwood cinnamyl cinnamylidene cinnoline cinnyl cinquain cinque cinquecentism cinquecentist cinquecento cinquefoil cinquefoiled cinquepace cinter Cinura cinuran cinurous cion cionectomy cionitis cionocranial cionocranian cionoptosis cionorrhaphia cionotome cionotomy Cipango cipher cipherable cipherdom cipherer cipherhood cipo cipolin cippus circa Circaea Circaeaceae Circaetus Circassian Circassic Circe Circean Circensian circinal circinate circinately circination Circinus circiter circle circled circler circlet circlewise circling circovarian circuit circuitable circuital circuiteer circuiter circuition circuitman circuitor circuitous circuitously circuitousness circuity circulable circulant circular circularism circularity circularization circularize circularizer circularly circularness circularwise circulate circulation circulative circulator circulatory circumagitate circumagitation circumambages circumambagious circumambience circumambiency circumambient circumambulate circumambulation circumambulator circumambulatory circumanal circumantarctic circumarctic circumarticular circumaviate circumaviation circumaviator circumaxial circumaxile circumaxillary circumbasal circumbendibus circumboreal circumbuccal circumbulbar circumcallosal Circumcellion circumcenter circumcentral circumcinct circumcincture circumcircle circumcise circumciser circumcision circumclude circumclusion circumcolumnar circumcone circumconic circumcorneal circumcrescence circumcrescent circumdenudation circumdiction circumduce circumduct circumduction circumesophagal circumesophageal circumference circumferential circumferentially circumferentor circumflant circumflect circumflex circumflexion circumfluence circumfluent circumfluous circumforaneous circumfulgent circumfuse circumfusile circumfusion circumgenital circumgyrate circumgyration circumgyratory circumhorizontal circumincession circuminsession circuminsular circumintestinal circumitineration circumjacence circumjacency circumjacent circumlental circumlitio circumlittoral circumlocute circumlocution circumlocutional circumlocutionary circumlocutionist circumlocutory circummeridian circummeridional circummigration circummundane circummure circumnatant circumnavigable circumnavigate circumnavigation circumnavigator circumnavigatory circumneutral circumnuclear circumnutate circumnutation circumnutatory circumocular circumoesophagal circumoral circumorbital circumpacific circumpallial circumparallelogram circumpentagon circumplicate circumplication circumpolar circumpolygon circumpose circumposition circumradius circumrenal circumrotate circumrotation circumrotatory circumsail circumscissile circumscribable circumscribe circumscribed circumscriber circumscript circumscription circumscriptive circumscriptively circumscriptly circumsinous circumspangle circumspatial circumspect circumspection circumspective circumspectively circumspectly circumspectness circumspheral circumstance circumstanced circumstantiability circumstantiable circumstantial circumstantiality circumstantially circumstantialness circumstantiate circumstantiation circumtabular circumterraneous circumterrestrial circumtonsillar circumtropical circumumbilical circumundulate circumundulation circumvallate circumvallation circumvascular circumvent circumventer circumvention circumventive circumventor circumviate circumvolant circumvolute circumvolution circumvolutory circumvolve circumzenithal circus circusy cirque cirrate cirrated Cirratulidae Cirratulus Cirrhopetalum cirrhosed cirrhosis cirrhotic cirrhous cirri cirribranch cirriferous cirriform cirrigerous cirrigrade cirriped Cirripedia cirripedial cirrolite cirropodous cirrose Cirrostomi cirrous cirrus cirsectomy Cirsium cirsocele cirsoid cirsomphalos cirsophthalmia cirsotome cirsotomy ciruela cirurgian Cisalpine cisalpine Cisalpinism cisandine cisatlantic cisco cise cisele cisgangetic cisjurane cisleithan cismarine Cismontane cismontane Cismontanism cisoceanic cispadane cisplatine cispontine cisrhenane Cissampelos cissing cissoid cissoidal Cissus cist cista Cistaceae cistaceous cistae cisted Cistercian Cistercianism cistern cisterna cisternal cistic cistophoric cistophorus Cistudo Cistus cistvaen cit citable citadel citation citator citatory cite citee Citellus citer citess cithara Citharexylum citharist citharista citharoedi citharoedic citharoedus cither citied citification citified citify Citigradae citigrade citizen citizendom citizeness citizenhood citizenish citizenism citizenize citizenly citizenry citizenship citole citraconate citraconic citral citramide citramontane citrange citrangeade citrate citrated citrean citrene citreous citric citriculture citriculturist citril citrin citrination citrine citrinin citrinous citrometer Citromyces citron citronade citronella citronellal citronelle citronellic citronellol citronin citronwood Citropsis citropten citrous citrullin Citrullus Citrus citrus citrylidene cittern citua city citycism citydom cityfolk cityful cityish cityless cityness cityscape cityward citywards cive civet civetlike civetone civic civically civicism civics civil civilian civility civilizable civilization civilizational civilizatory civilize civilized civilizedness civilizee civilizer civilly civilness civism Civitan civvy cixiid Cixiidae Cixo clabber clabbery clachan clack Clackama clackdish clacker clacket clackety clad cladanthous cladautoicous cladding cladine cladocarpous Cladocera cladoceran cladocerous cladode cladodial cladodont cladodontid Cladodontidae Cladodus cladogenous Cladonia Cladoniaceae cladoniaceous cladonioid Cladophora Cladophoraceae cladophoraceous Cladophorales cladophyll cladophyllum cladoptosis cladose Cladoselache Cladoselachea cladoselachian Cladoselachidae cladosiphonic Cladosporium Cladothrix Cladrastis cladus clag claggum claggy Claiborne Claibornian claim claimable claimant claimer claimless clairaudience clairaudient clairaudiently clairce Claire clairecole clairecolle clairschach clairschacher clairsentience clairsentient clairvoyance clairvoyancy clairvoyant clairvoyantly claith claithes claiver Clallam clam clamant clamantly clamative Clamatores clamatorial clamatory clamb clambake clamber clamberer clamcracker clame clamer clammed clammer clammily clamminess clamming clammish clammy clammyweed clamor clamorer clamorist clamorous clamorously clamorousness clamorsome clamp clamper clamshell clamworm clan clancular clancularly clandestine clandestinely clandestineness clandestinity clanfellow clang clangful clangingly clangor clangorous clangorously Clangula clanjamfray clanjamfrey clanjamfrie clanjamphrey clank clankety clanking clankingly clankingness clankless clanless clanned clanning clannishly clannishness clansfolk clanship clansman clansmanship clanswoman Claosaurus clap clapboard clapbread clapmatch clapnet clapped clapper clapperclaw clapperclawer clapperdudgeon clappermaclaw clapping clapt claptrap clapwort claque claquer Clara clarabella clarain Clare Clarence Clarenceux Clarenceuxship Clarencieux clarendon claret Claretian Claribel claribella Clarice clarifiant clarification clarifier clarify clarigation clarin Clarinda clarinet clarinetist clarinettist clarion clarionet Clarissa Clarisse Clarist clarity Clark clark clarkeite Clarkia claro Claromontane clarshech clart clarty clary clash clasher clashingly clashy clasmatocyte clasmatosis clasp clasper clasping claspt class classable classbook classed classer classes classfellow classic classical classicalism classicalist classicality classicalize classically classicalness classicism classicist classicistic classicize classicolatry classifiable classific classifically classification classificational classificator classificatory classified classifier classis classism classman classmanship classmate classroom classwise classwork classy clastic clat clatch Clathraceae clathraceous Clathraria clathrarian clathrate Clathrina Clathrinidae clathroid clathrose clathrulate Clathrus Clatsop clatter clatterer clatteringly clattertrap clattery clatty Claude claudent claudetite Claudia Claudian claudicant claudicate claudication Claudio Claudius claught clausal clause Clausilia Clausiliidae clausthalite claustra claustral claustration claustrophobia claustrum clausula clausular clausule clausure claut clava clavacin claval Clavaria Clavariaceae clavariaceous clavate clavated clavately clavation clave clavecin clavecinist clavel clavelization clavelize clavellate clavellated claver clavial claviature clavicembalo Claviceps clavichord clavichordist clavicithern clavicle clavicorn clavicornate Clavicornes Clavicornia clavicotomy clavicular clavicularium claviculate claviculus clavicylinder clavicymbal clavicytherium clavier clavierist claviform claviger clavigerous claviharp clavilux claviol clavipectoral clavis clavodeltoid clavodeltoideus clavola clavolae clavolet clavus clavy claw clawed clawer clawk clawker clawless Clay clay claybank claybrained clayen clayer clayey clayiness clayish claylike clayman claymore Clayoquot claypan Clayton Claytonia clayware clayweed cleach clead cleaded cleading cleam cleamer clean cleanable cleaner cleanhanded cleanhandedness cleanhearted cleaning cleanish cleanlily cleanliness cleanly cleanness cleanout cleansable cleanse cleanser cleansing cleanskins cleanup clear clearable clearage clearance clearcole clearedness clearer clearheaded clearheadedly clearheadedness clearhearted clearing clearinghouse clearish clearly clearness clearskins clearstarch clearweed clearwing cleat cleavability cleavable cleavage cleave cleaveful cleavelandite cleaver cleavers cleaverwort cleaving cleavingly cleche cleck cled cledge cledgy cledonism clee cleek cleeked cleeky clef cleft clefted cleg cleidagra cleidarthritis cleidocostal cleidocranial cleidohyoid cleidomancy cleidomastoid cleidorrhexis cleidoscapular cleidosternal cleidotomy cleidotripsy cleistocarp cleistocarpous cleistogamic cleistogamically cleistogamous cleistogamously cleistogamy cleistogene cleistogenous cleistogeny cleistothecium Cleistothecopsis cleithral cleithrum Clem clem Clematis clematite Clemclemalats clemence clemency Clement clement Clementina Clementine clemently clench cleoid Cleome Cleopatra clep Clepsine clepsydra cleptobiosis cleptobiotic clerestoried clerestory clergy clergyable clergylike clergyman clergywoman cleric clerical clericalism clericalist clericality clericalize clerically clericate clericature clericism clericity clerid Cleridae clerihew clerisy clerk clerkage clerkdom clerkery clerkess clerkhood clerking clerkish clerkless clerklike clerkliness clerkly clerkship Clerodendron cleromancy cleronomy cleruch cleruchial cleruchic cleruchy Clerus cletch Clethra Clethraceae clethraceous cleuch cleve cleveite clever cleverality cleverish cleverishly cleverly cleverness clevis clew cliack clianthus cliche click clicker clicket clickless clicky Clidastes cliency client clientage cliental cliented clientelage clientele clientless clientry clientship Cliff cliff cliffed cliffless clifflet clifflike Clifford cliffside cliffsman cliffweed cliffy clift Cliftonia cliftonite clifty clima Climaciaceae climaciaceous Climacium climacteric climacterical climacterically climactic climactical climactically climacus climata climatal climate climath climatic climatical climatically Climatius climatize climatographical climatography climatologic climatological climatologically climatologist climatology climatometer climatotherapeutics climatotherapy climature climax climb climbable climber climbing clime climograph clinal clinamen clinamina clinandria clinandrium clinanthia clinanthium clinch clincher clinchingly clinchingness cline cling clinger clingfish clinging clingingly clingingness clingstone clingy clinia clinic clinical clinically clinician clinicist clinicopathological clinium clink clinker clinkerer clinkery clinking clinkstone clinkum clinoaxis clinocephalic clinocephalism clinocephalous clinocephalus clinocephaly clinochlore clinoclase clinoclasite clinodiagonal clinodomatic clinodome clinograph clinographic clinohedral clinohedrite clinohumite clinoid clinologic clinology clinometer clinometric clinometrical clinometry clinopinacoid clinopinacoidal Clinopodium clinoprism clinopyramid clinopyroxene clinorhombic clinospore clinostat clinquant clint clinting Clinton Clintonia clintonite clinty Clio Cliona Clione clip clipei clipeus clippable clipped clipper clipperman clipping clips clipse clipsheet clipsome clipt clique cliquedom cliqueless cliquish cliquishly cliquishness cliquism cliquy cliseometer clisere clishmaclaver Clisiocampa Clistogastra clit clitch clite clitella clitellar clitelliferous clitelline clitellum clitellus clites clithe clithral clithridiate clitia clition Clitocybe Clitoria clitoridauxe clitoridean clitoridectomy clitoriditis clitoridotomy clitoris clitorism clitoritis clitter clitterclatter clival clive clivers Clivia clivis clivus cloaca cloacal cloacaline cloacean cloacinal cloacinean cloacitis cloak cloakage cloaked cloakedly cloaking cloakless cloaklet cloakmaker cloakmaking cloakroom cloakwise cloam cloamen cloamer clobber clobberer clochan cloche clocher clochette clock clockbird clockcase clocked clocker clockface clockhouse clockkeeper clockless clocklike clockmaker clockmaking clockmutch clockroom clocksmith clockwise clockwork clod clodbreaker clodder cloddily cloddiness cloddish cloddishly cloddishness cloddy clodhead clodhopper clodhopping clodlet clodpate clodpated clodpoll cloff clog clogdogdo clogger cloggily clogginess cloggy cloghad cloglike clogmaker clogmaking clogwood clogwyn cloiochoanitic cloisonless cloisonne cloister cloisteral cloistered cloisterer cloisterless cloisterlike cloisterliness cloisterly cloisterwise cloistral cloistress cloit clomb clomben clonal clone clonic clonicity clonicotonic clonism clonorchiasis Clonorchis Clonothrix clonus cloof cloop cloot clootie clop cloragen clorargyrite cloriodid closable close closecross closed closefisted closefistedly closefistedness closehanded closehearted closely closemouth closemouthed closen closeness closer closestool closet closewing closh closish closter Closterium clostridial Clostridium closure clot clotbur clote cloth clothbound clothe clothes clothesbag clothesbasket clothesbrush clotheshorse clothesline clothesman clothesmonger clothespin clothespress clothesyard clothier clothify Clothilda clothing clothmaker clothmaking Clotho clothworker clothy clottage clottedness clotter clotty cloture clotweed cloud cloudage cloudberry cloudburst cloudcap clouded cloudful cloudily cloudiness clouding cloudland cloudless cloudlessly cloudlessness cloudlet cloudlike cloudling cloudology cloudscape cloudship cloudward cloudwards cloudy clough clour clout clouted clouter clouterly clouty clove cloven clovene clover clovered cloverlay cloverleaf cloveroot cloverroot clovery clow clown clownade clownage clownery clownheal clownish clownishly clownishness clownship clowring cloy cloyedness cloyer cloying cloyingly cloyingness cloyless cloysome club clubbability clubbable clubbed clubber clubbily clubbing clubbish clubbism clubbist clubby clubdom clubfellow clubfisted clubfoot clubfooted clubhand clubhaul clubhouse clubionid Clubionidae clubland clubman clubmate clubmobile clubmonger clubridden clubroom clubroot clubstart clubster clubweed clubwoman clubwood cluck clue cluff clump clumpish clumproot clumpy clumse clumsily clumsiness clumsy clunch clung Cluniac Cluniacensian Clunisian Clunist clunk clupanodonic Clupea clupeid Clupeidae clupeiform clupeine Clupeodei clupeoid cluricaune Clusia Clusiaceae clusiaceous cluster clusterberry clustered clusterfist clustering clusteringly clustery clutch clutchman cluther clutter clutterer clutterment cluttery cly Clyde Clydesdale Clydeside Clydesider clyer clyfaker clyfaking Clymenia clype clypeal Clypeaster Clypeastridea Clypeastrina clypeastroid Clypeastroida Clypeastroidea clypeate clypeiform clypeolar clypeolate clypeole clypeus clysis clysma clysmian clysmic clyster clysterize Clytemnestra cnemapophysis cnemial cnemidium Cnemidophorus cnemis Cneoraceae cneoraceous Cneorum cnicin Cnicus cnida Cnidaria cnidarian Cnidian cnidoblast cnidocell cnidocil cnidocyst cnidophore cnidophorous cnidopod cnidosac Cnidoscolus cnidosis coabode coabound coabsume coacceptor coacervate coacervation coach coachability coachable coachbuilder coachbuilding coachee coacher coachfellow coachful coaching coachlet coachmaker coachmaking coachman coachmanship coachmaster coachsmith coachsmithing coachway coachwhip coachwise coachwoman coachwork coachwright coachy coact coaction coactive coactively coactivity coactor coadamite coadapt coadaptation coadequate coadjacence coadjacency coadjacent coadjacently coadjudicator coadjust coadjustment coadjutant coadjutator coadjute coadjutement coadjutive coadjutor coadjutorship coadjutress coadjutrix coadjuvancy coadjuvant coadjuvate coadminister coadministration coadministrator coadministratrix coadmiration coadmire coadmit coadnate coadore coadsorbent coadunate coadunation coadunative coadunatively coadunite coadventure coadventurer coadvice coaffirmation coafforest coaged coagency coagent coaggregate coaggregated coaggregation coagitate coagitator coagment coagonize coagriculturist coagula coagulability coagulable coagulant coagulase coagulate coagulation coagulative coagulator coagulatory coagulin coagulometer coagulose coagulum Coahuiltecan coaid coaita coak coakum coal coalbag coalbagger coalbin coalbox coaldealer coaler coalesce coalescence coalescency coalescent coalfish coalfitter coalhole coalification coalify Coalite coalition coalitional coalitioner coalitionist coalize coalizer coalless coalmonger coalmouse coalpit coalrake coalsack coalternate coalternation coalternative coaltitude coaly coalyard coambassador coambulant coamiable coaming Coan coanimate coannex coannihilate coapostate coapparition coappear coappearance coapprehend coapprentice coappriser coapprover coapt coaptate coaptation coaration coarb coarbiter coarbitrator coarctate coarctation coardent coarrange coarrangement coarse coarsely coarsen coarseness coarsish coascend coassert coasserter coassession coassessor coassignee coassist coassistance coassistant coassume coast coastal coastally coaster Coastguard coastguardman coasting coastland coastman coastside coastwaiter coastward coastwards coastways coastwise coat coated coatee coater coati coatie coatimondie coatimundi coating coatless coatroom coattail coattailed coattend coattest coattestation coattestator coaudience coauditor coaugment coauthor coauthority coauthorship coawareness coax coaxal coaxation coaxer coaxial coaxially coaxing coaxingly coaxy cob cobaea cobalt cobaltammine cobaltic cobalticyanic cobalticyanides cobaltiferous cobaltinitrite cobaltite cobaltocyanic cobaltocyanide cobaltous cobang cobbed cobber cobberer cobbing cobble cobbler cobblerfish cobblerism cobblerless cobblership cobblery cobblestone cobbling cobbly cobbra cobby cobcab Cobdenism Cobdenite cobego cobelief cobeliever cobelligerent cobenignity coberger cobewail cobhead cobia cobiron cobishop Cobitidae Cobitis coble cobleman Coblentzian Cobleskill cobless cobloaf cobnut cobola coboundless cobourg cobra cobreathe cobridgehead cobriform cobrother cobstone coburg coburgess coburgher coburghership Cobus cobweb cobwebbery cobwebbing cobwebby cobwork coca cocaceous cocaine cocainism cocainist cocainization cocainize cocainomania cocainomaniac Cocama Cocamama cocamine Cocanucos cocarboxylase cocash cocashweed cocause cocautioner Coccaceae coccagee coccal Cocceian Cocceianism coccerin cocci coccid Coccidae coccidia coccidial coccidian Coccidiidea coccidioidal Coccidioides Coccidiomorpha coccidiosis coccidium coccidology cocciferous cocciform coccigenic coccinella coccinellid Coccinellidae coccionella cocco coccobacillus coccochromatic Coccogonales coccogone Coccogoneae coccogonium coccoid coccolite coccolith coccolithophorid Coccolithophoridae Coccoloba Coccolobis Coccomyces coccosphere coccostean coccosteid Coccosteidae Coccosteus Coccothraustes coccothraustine Coccothrinax coccous coccule cocculiferous Cocculus cocculus coccus coccydynia coccygalgia coccygeal coccygean coccygectomy coccygerector coccyges coccygeus coccygine coccygodynia coccygomorph Coccygomorphae coccygomorphic coccygotomy coccyodynia coccyx Coccyzus cocentric cochairman cochal cochief Cochin cochineal cochlea cochlear cochleare Cochlearia cochlearifoliate cochleariform cochleate cochleated cochleiform cochleitis cochleous cochlidiid Cochlidiidae cochliodont Cochliodontidae Cochliodus Cochlospermaceae cochlospermaceous Cochlospermum Cochranea cochurchwarden cocillana cocircular cocircularity cocitizen cocitizenship cock cockade cockaded Cockaigne cockal cockalorum cockamaroo cockarouse cockateel cockatoo cockatrice cockawee cockbell cockbill cockbird cockboat cockbrain cockchafer cockcrow cockcrower cockcrowing cocked Cocker cocker cockerel cockermeg cockernony cocket cockeye cockeyed cockfight cockfighting cockhead cockhorse cockieleekie cockily cockiness cocking cockish cockle cockleboat cocklebur cockled cockler cockleshell cocklet cocklewife cocklight cockling cockloft cockly cockmaster cockmatch cockmate cockneian cockneity cockney cockneybred cockneydom cockneyese cockneyess cockneyfication cockneyfy cockneyish cockneyishly cockneyism cockneyize cockneyland cockneyship cockpit cockroach cockscomb cockscombed cocksfoot cockshead cockshot cockshut cockshy cockshying cockspur cockstone cocksure cocksuredom cocksureism cocksurely cocksureness cocksurety cocktail cockthrowing cockup cockweed cocky Cocle coco cocoa cocoach cocobolo Coconino coconnection coconqueror coconscious coconsciously coconsciousness coconsecrator coconspirator coconstituent cocontractor Coconucan Coconuco coconut cocoon cocoonery cocorico cocoroot Cocos cocotte cocovenantor cocowood cocowort cocozelle cocreate cocreator cocreatorship cocreditor cocrucify coctile coction coctoantigen coctoprecipitin cocuisa cocullo cocurator cocurrent cocuswood cocuyo Cocytean Cocytus cod coda codamine codbank codder codding coddle coddler code codebtor codeclination codecree codefendant codeine codeless codelight codelinquency codelinquent codenization codeposit coder coderive codescendant codespairer codex codfish codfisher codfishery codger codhead codheaded Codiaceae codiaceous Codiaeum Codiales codical codices codicil codicilic codicillary codictatorship codification codifier codify codilla codille codiniac codirectional codirector codiscoverer codisjunct codist Codium codivine codling codman codo codol codomestication codominant codon codpiece codpitchings Codrus codshead codworm coe coecal coecum coed coeditor coeditorship coeducate coeducation coeducational coeducationalism coeducationalize coeducationally coeffect coefficacy coefficient coefficiently coeffluent coeffluential coelacanth coelacanthid Coelacanthidae coelacanthine Coelacanthini coelacanthoid coelacanthous coelanaglyphic coelar coelarium Coelastraceae coelastraceous Coelastrum Coelata coelder coeldership Coelebogyne coelect coelection coelector coelectron coelelminth Coelelminthes coelelminthic Coelentera Coelenterata coelenterate coelenteric coelenteron coelestine coelevate coelho coelia coeliac coelialgia coelian Coelicolae Coelicolist coeligenous coelin coeline coeliomyalgia coeliorrhea coeliorrhoea coelioscopy coeliotomy coeloblastic coeloblastula Coelococcus coelodont coelogastrula Coeloglossum Coelogyne coelom coeloma Coelomata coelomate coelomatic coelomatous coelomesoblast coelomic Coelomocoela coelomopore coelonavigation coelongated coeloplanula coelosperm coelospermous coelostat coelozoic coemanate coembedded coembody coembrace coeminency coemperor coemploy coemployee coemployment coempt coemption coemptional coemptionator coemptive coemptor coenact coenactor coenaculous coenamor coenamorment coenamourment coenanthium coendear Coendidae Coendou coendure coenenchym coenenchyma coenenchymal coenenchymatous coenenchyme coenesthesia coenesthesis coenflame coengage coengager coenjoy coenobe coenobiar coenobic coenobioid coenobium coenoblast coenoblastic coenocentrum coenocyte coenocytic coenodioecism coenoecial coenoecic coenoecium coenogamete coenomonoecism coenosarc coenosarcal coenosarcous coenosite coenospecies coenospecific coenospecifically coenosteal coenosteum coenotrope coenotype coenotypic coenthrone coenurus coenzyme coequal coequality coequalize coequally coequalness coequate coequated coequation coerce coercement coercer coercibility coercible coercibleness coercibly coercion coercionary coercionist coercitive coercive coercively coerciveness coercivity Coerebidae coeruleolactite coessential coessentiality coessentially coessentialness coestablishment coestate coetaneity coetaneous coetaneously coetaneousness coeternal coeternally coeternity coetus coeval coevality coevally coexchangeable coexclusive coexecutant coexecutor coexecutrix coexert coexertion coexist coexistence coexistency coexistent coexpand coexpanded coexperiencer coexpire coexplosion coextend coextension coextensive coextensively coextensiveness coextent cofactor Cofane cofaster cofather cofathership cofeature cofeoffee coferment cofermentation coff Coffea coffee coffeebush coffeecake coffeegrower coffeegrowing coffeehouse coffeeleaf coffeepot coffeeroom coffeetime coffeeweed coffeewood coffer cofferdam cofferer cofferfish coffering cofferlike cofferwork coffin coffinless coffinmaker coffinmaking coffle coffret cofighter coforeknown coformulator cofounder cofoundress cofreighter coft cofunction cog cogence cogency cogener cogeneric cogent cogently cogged cogger coggie cogging coggle coggledy cogglety coggly coghle cogitability cogitable cogitabund cogitabundity cogitabundly cogitabundous cogitant cogitantly cogitate cogitatingly cogitation cogitative cogitatively cogitativeness cogitativity cogitator coglorify coglorious cogman cognac cognate cognateness cognatic cognatical cognation cognisable cognisance cognition cognitional cognitive cognitively cognitum cognizability cognizable cognizableness cognizably cognizance cognizant cognize cognizee cognizer cognizor cognomen cognominal cognominate cognomination cognosce cognoscent cognoscibility cognoscible cognoscitive cognoscitively cogon cogonal cogovernment cogovernor cogracious cograil cogrediency cogredient cogroad Cogswellia coguarantor coguardian cogue cogway cogwheel cogwood cohabit cohabitancy cohabitant cohabitation coharmonious coharmoniously coharmonize coheartedness coheir coheiress coheirship cohelper cohelpership Cohen cohenite coherald cohere coherence coherency coherent coherently coherer coheretic coheritage coheritor cohesibility cohesible cohesion cohesive cohesively cohesiveness cohibit cohibition cohibitive cohibitor coho cohoba cohobate cohobation cohobator cohol cohort cohortation cohortative cohosh cohune cohusband coidentity coif coifed coiffure coign coigue coil coiled coiler coiling coilsmith coimmense coimplicant coimplicate coimplore coin coinable coinage coincide coincidence coincidency coincident coincidental coincidentally coincidently coincider coinclination coincline coinclude coincorporate coindicant coindicate coindication coindwelling coiner coinfeftment coinfer coinfinite coinfinity coinhabit coinhabitant coinhabitor coinhere coinherence coinherent coinheritance coinheritor coining coinitial coinmaker coinmaking coinmate coinspire coinstantaneity coinstantaneous coinstantaneously coinstantaneousness coinsurance coinsure cointense cointension cointensity cointer cointerest cointersecting cointise Cointreau coinventor coinvolve coiny coir coislander coistrel coistril coital coition coiture coitus Coix cojudge cojuror cojusticiar coke cokelike cokeman coker cokernut cokery coking coky col Cola cola colaborer Colada colalgia Colan colander colane colarin colate colation colatitude colatorium colature colauxe colback colberter colbertine Colbertism colcannon Colchian Colchicaceae colchicine Colchicum Colchis colchyte Colcine colcothar cold colder coldfinch coldhearted coldheartedly coldheartedness coldish coldly coldness coldproof coldslaw Cole cole coleader colecannon colectomy Coleen colegatee colegislator colemanite colemouse Coleochaetaceae coleochaetaceous Coleochaete Coleophora Coleophoridae coleopter Coleoptera coleopteral coleopteran coleopterist coleopteroid coleopterological coleopterology coleopteron coleopterous coleoptile coleoptilum coleorhiza Coleosporiaceae Coleosporium coleplant coleseed coleslaw colessee colessor coletit coleur Coleus colewort coli Colias colibacillosis colibacterin colibri colic colical colichemarde colicky colicolitis colicroot colicweed colicwort colicystitis colicystopyelitis coliform Coliidae Coliiformes colilysin Colima colima Colin colin colinear colinephritis coling Colinus coliplication colipuncture colipyelitis colipyuria colisepsis Coliseum coliseum colitic colitis colitoxemia coliuria Colius colk coll Colla collaborate collaboration collaborationism collaborationist collaborative collaboratively collaborator collage collagen collagenic collagenous collapse collapsibility collapsible collar collarband collarbird collarbone collard collare collared collaret collarino collarless collarman collatable collate collatee collateral collaterality collaterally collateralness collation collationer collatitious collative collator collatress collaud collaudation colleague colleagueship collect collectability collectable collectanea collectarium collected collectedly collectedness collectibility collectible collection collectional collectioner collective collectively collectiveness collectivism collectivist collectivistic collectivistically collectivity collectivization collectivize collector collectorate collectorship collectress colleen collegatary college colleger collegial collegialism collegiality collegian collegianer Collegiant collegiate collegiately collegiateness collegiation collegium Collembola collembolan collembole collembolic collembolous collenchyma collenchymatic collenchymatous collenchyme collencytal collencyte Colleri Colleries Collery collery collet colleter colleterial colleterium Colletes Colletia colletic Colletidae colletin Colletotrichum colletside colley collibert colliculate colliculus collide collidine collie collied collier colliery collieshangie colliform colligate colligation colligative colligible collimate collimation collimator Collin collin collinal colline collinear collinearity collinearly collineate collineation colling collingly collingual Collins collins Collinsia collinsite Collinsonia colliquate colliquation colliquative colliquativeness collision collisional collisive colloblast collobrierite collocal Collocalia collocate collocation collocationable collocative collocatory collochemistry collochromate collock collocution collocutor collocutory collodiochloride collodion collodionization collodionize collodiotype collodium collogue colloid colloidal colloidality colloidize colloidochemical Collomia collop colloped collophanite collophore colloque colloquia colloquial colloquialism colloquialist colloquiality colloquialize colloquially colloquialness colloquist colloquium colloquize colloquy collothun collotype collotypic collotypy colloxylin colluctation collude colluder collum collumelliaceous collusion collusive collusively collusiveness collutorium collutory colluvial colluvies colly collyba Collybia Collyridian collyrite collyrium collywest collyweston collywobbles colmar colobin colobium coloboma Colobus Colocasia colocentesis Colocephali colocephalous coloclysis colocola colocolic colocynth colocynthin colodyspepsia coloenteritis cologarithm Cologne cololite Colombian colombier colombin Colombina colometric colometrically colometry colon colonalgia colonate colonel colonelcy colonelship colongitude colonial colonialism colonialist colonialize colonially colonialness colonic colonist colonitis colonizability colonizable colonization colonizationist colonize colonizer colonnade colonnaded colonnette colonopathy colonopexy colonoscope colonoscopy colony colopexia colopexotomy colopexy colophane colophany colophene colophenic colophon colophonate Colophonian colophonic colophonist colophonite colophonium colophony coloplication coloproctitis coloptosis colopuncture coloquintid coloquintida color colorability colorable colorableness colorably Coloradan Colorado colorado coloradoite colorant colorate coloration colorational colorationally colorative coloratura colorature colorcast colorectitis colorectostomy colored colorer colorfast colorful colorfully colorfulness colorific colorifics colorimeter colorimetric colorimetrical colorimetrically colorimetrics colorimetrist colorimetry colorin coloring colorist coloristic colorization colorize colorless colorlessly colorlessness colormaker colormaking colorman colorrhaphy colors colortype Colorum colory coloss colossal colossality colossally colossean Colosseum colossi Colossian Colossochelys colossus Colossuswise colostomy colostral colostration colostric colostrous colostrum colotomy colotyphoid colove colp colpenchyma colpeo colpeurynter colpeurysis colpindach colpitis colpocele colpocystocele colpohyperplasia colpohysterotomy colpoperineoplasty colpoperineorrhaphy colpoplastic colpoplasty colpoptosis colporrhagia colporrhaphy colporrhea colporrhexis colport colportage colporter colporteur colposcope colposcopy colpotomy colpus Colt colt colter colthood coltish coltishly coltishness coltpixie coltpixy coltsfoot coltskin Coluber colubrid Colubridae colubriform Colubriformes Colubriformia Colubrina Colubrinae colubrine colubroid colugo Columba columbaceous Columbae Columban Columbanian columbarium columbary columbate columbeion Columbella Columbia columbiad Columbian columbic Columbid Columbidae columbier columbiferous Columbiformes columbin Columbine columbine columbite columbium columbo columboid columbotantalate columbotitanate columella columellar columellate Columellia Columelliaceae columelliform column columnal columnar columnarian columnarity columnated columned columner columniation columniferous columniform columning columnist columnization columnwise colunar colure Colutea Colville coly Colymbidae colymbiform colymbion Colymbriformes Colymbus colyone colyonic colytic colyum colyumist colza coma comacine comagistracy comagmatic comaker comal comamie Coman Comanche Comanchean Comandra comanic comart Comarum comate comatose comatosely comatoseness comatosity comatous comatula comatulid comb combaron combat combatable combatant combater combative combatively combativeness combativity combed comber combfish combflower combinable combinableness combinant combinantive combinate combination combinational combinative combinator combinatorial combinatory combine combined combinedly combinedness combinement combiner combing combining comble combless comblessness combmaker combmaking comboloio comboy Combretaceae combretaceous Combretum combure comburendo comburent comburgess comburimeter comburimetry comburivorous combust combustibility combustible combustibleness combustibly combustion combustive combustor combwise combwright comby come comeback Comecrudo comedial comedian comediant comedic comedical comedienne comedietta comedist comedo comedown comedy comelily comeliness comeling comely comendite comenic comephorous comer comes comestible comet cometarium cometary comether cometic cometical cometlike cometographer cometographical cometography cometoid cometology cometwise comeuppance comfit comfiture comfort comfortable comfortableness comfortably comforter comfortful comforting comfortingly comfortless comfortlessly comfortlessness comfortress comfortroot comfrey comfy Comiakin comic comical comicality comically comicalness comicocratic comicocynical comicodidactic comicography comicoprosaic comicotragedy comicotragic comicotragical comicry Comid comiferous Cominform coming comingle comino Comintern comism comital comitant comitatensian comitative comitatus comitia comitial Comitium comitragedy comity comma command commandable commandant commandedness commandeer commander commandership commandery commanding commandingly commandingness commandless commandment commando commandoman commandress commassation commassee commatic commation commatism commeasurable commeasure commeddle Commelina Commelinaceae commelinaceous commemorable commemorate commemoration commemorational commemorative commemoratively commemorativeness commemorator commemoratory commemorize commence commenceable commencement commencer commend commendable commendableness commendably commendador commendam commendatary commendation commendator commendatory commender commendingly commendment commensal commensalism commensalist commensalistic commensality commensally commensurability commensurable commensurableness commensurably commensurate commensurately commensurateness commensuration comment commentarial commentarialism commentary commentate commentation commentator commentatorial commentatorially commentatorship commenter commerce commerceless commercer commerciable commercial commercialism commercialist commercialistic commerciality commercialization commercialize commercially commercium commerge commie comminate commination comminative comminator comminatory commingle comminglement commingler comminister comminuate comminute comminution comminutor Commiphora commiserable commiserate commiseratingly commiseration commiserative commiseratively commiserator commissar commissarial commissariat commissary commissaryship commission commissionaire commissional commissionate commissioner commissionership commissionship commissive commissively commissural commissure commissurotomy commit commitment committable committal committee committeeism committeeman committeeship committeewoman committent committer committible committor commix commixt commixtion commixture commodatary commodate commodation commodatum commode commodious commodiously commodiousness commoditable commodity commodore common commonable commonage commonality commonalty commoner commonership commoney commonish commonition commonize commonly commonness commonplace commonplaceism commonplacely commonplaceness commonplacer commons commonsensible commonsensibly commonsensical commonsensically commonty commonweal commonwealth commonwealthism commorancy commorant commorient commorth commot commotion commotional commotive commove communa communal communalism communalist communalistic communality communalization communalize communalizer communally communard commune communer communicability communicable communicableness communicably communicant communicate communicatee communicating communication communicative communicatively communicativeness communicator communicatory communion communionist communique communism communist communistery communistic communistically communital communitarian communitary communitive communitorium community communization communize commutability commutable commutableness commutant commutate commutation commutative commutatively commutator commute commuter commuting commutual commutuality Comnenian comoid comolecule comortgagee comose comourn comourner comournful comous Comox compact compacted compactedly compactedness compacter compactible compaction compactly compactness compactor compacture compages compaginate compagination companator companion companionability companionable companionableness companionably companionage companionate companionize companionless companionship companionway company comparability comparable comparableness comparably comparascope comparate comparatival comparative comparatively comparativeness comparativist comparator compare comparer comparison comparition comparograph compart compartition compartment compartmental compartmentalization compartmentalize compartmentally compartmentize compass compassable compasser compasses compassing compassion compassionable compassionate compassionately compassionateness compassionless compassive compassivity compassless compaternity compatibility compatible compatibleness compatibly compatriot compatriotic compatriotism compear compearance compearant compeer compel compellable compellably compellation compellative compellent compeller compelling compellingly compend compendency compendent compendia compendiary compendiate compendious compendiously compendiousness compendium compenetrate compenetration compensable compensate compensating compensatingly compensation compensational compensative compensativeness compensator compensatory compense compenser compesce compete competence competency competent competently competentness competition competitioner competitive competitively competitiveness competitor competitorship competitory competitress competitrix compilation compilator compilatory compile compilement compiler compital Compitalia compitum complacence complacency complacent complacential complacentially complacently complain complainable complainant complainer complainingly complainingness complaint complaintive complaintiveness complaisance complaisant complaisantly complaisantness complanar complanate complanation complect complected complement complemental complementally complementalness complementariness complementarism complementary complementation complementative complementer complementoid complete completedness completely completement completeness completer completion completive completively completory complex complexedness complexification complexify complexion complexionably complexional complexionally complexioned complexionist complexionless complexity complexively complexly complexness complexus compliable compliableness compliably compliance compliancy compliant compliantly complicacy complicant complicate complicated complicatedly complicatedness complication complicative complice complicitous complicity complier compliment complimentable complimental complimentally complimentalness complimentarily complimentariness complimentary complimentation complimentative complimenter complimentingly complin complot complotter Complutensian compluvium comply compo compoer compole compone componed componency componendo component componental componented compony comport comportment compos compose composed composedly composedness composer composita Compositae composite compositely compositeness composition compositional compositionally compositive compositively compositor compositorial compositous composograph compossibility compossible compost composture composure compotation compotationship compotator compotatory compote compotor compound compoundable compoundedness compounder compounding compoundness comprachico comprador comprecation compreg compregnate comprehend comprehender comprehendible comprehendingly comprehense comprehensibility comprehensible comprehensibleness comprehensibly comprehension comprehensive comprehensively comprehensiveness comprehensor compresbyter compresbyterial compresence compresent compress compressed compressedly compressibility compressible compressibleness compressingly compression compressional compressive compressively compressometer compressor compressure comprest compriest comprisable comprisal comprise comprised compromise compromiser compromising compromisingly compromissary compromission compromissorial compromit compromitment comprovincial Compsilura Compsoa Compsognathus Compsothlypidae compter Comptometer Comptonia comptroller comptrollership compulsative compulsatively compulsatorily compulsatory compulsed compulsion compulsitor compulsive compulsively compulsiveness compulsorily compulsoriness compulsory compunction compunctionary compunctionless compunctious compunctiously compunctive compurgation compurgator compurgatorial compurgatory compursion computability computable computably computation computational computative computativeness compute computer computist computus comrade comradely comradery comradeship Comsomol comstockery Comtian Comtism Comtist comurmurer Comus con conacaste conacre conal conalbumin conamed Conant conarial conarium conation conational conationalistic conative conatus conaxial concamerate concamerated concameration concanavalin concaptive concassation concatenary concatenate concatenation concatenator concausal concause concavation concave concavely concaveness concaver concavity conceal concealable concealed concealedly concealedness concealer concealment concede conceded concededly conceder conceit conceited conceitedly conceitedness conceitless conceity conceivability conceivable conceivableness conceivably conceive conceiver concelebrate concelebration concent concenter concentive concentralization concentrate concentrated concentration concentrative concentrativeness concentrator concentric concentrically concentricity concentual concentus concept conceptacle conceptacular conceptaculum conception conceptional conceptionist conceptism conceptive conceptiveness conceptual conceptualism conceptualist conceptualistic conceptuality conceptualization conceptualize conceptually conceptus concern concerned concernedly concernedness concerning concerningly concerningness concernment concert concerted concertedly concertgoer concertina concertinist concertist concertize concertizer concertmaster concertmeister concertment concerto concertstuck concessible concession concessionaire concessional concessionary concessioner concessionist concessive concessively concessiveness concessor concettism concettist conch concha conchal conchate conche conched concher Conchifera conchiferous conchiform conchinine conchiolin conchitic conchitis Conchobor conchoid conchoidal conchoidally conchological conchologically conchologist conchologize conchology conchometer conchometry Conchostraca conchotome Conchubar Conchucu conchuela conchy conchyliated conchyliferous conchylium concierge concile conciliable conciliabule conciliabulum conciliar conciliate conciliating conciliatingly conciliation conciliationist conciliative conciliator conciliatorily conciliatoriness conciliatory concilium concinnity concinnous concionator concipiency concipient concise concisely conciseness concision conclamant conclamation conclave conclavist concludable conclude concluder concluding concludingly conclusion conclusional conclusionally conclusive conclusively conclusiveness conclusory concoagulate concoagulation concoct concocter concoction concoctive concoctor concolor concolorous concomitance concomitancy concomitant concomitantly conconscious Concord concord concordal concordance concordancer concordant concordantial concordantly concordat concordatory concorder concordial concordist concordity concorporate Concorrezanes concourse concreate concremation concrement concresce concrescence concrescible concrescive concrete concretely concreteness concreter concretion concretional concretionary concretism concretive concretively concretize concretor concubinage concubinal concubinarian concubinary concubinate concubine concubinehood concubitancy concubitant concubitous concubitus concupiscence concupiscent concupiscible concupiscibleness concupy concur concurrence concurrency concurrent concurrently concurrentness concurring concurringly concursion concurso concursus concuss concussant concussion concussional concussive concutient concyclic concyclically cond Condalia condemn condemnable condemnably condemnate condemnation condemnatory condemned condemner condemning condemningly condensability condensable condensance condensary condensate condensation condensational condensative condensator condense condensed condensedly condensedness condenser condensery condensity condescend condescendence condescendent condescender condescending condescendingly condescendingness condescension condescensive condescensively condescensiveness condiction condictious condiddle condiddlement condign condigness condignity condignly condiment condimental condimentary condisciple condistillation condite condition conditional conditionalism conditionalist conditionality conditionalize conditionally conditionate conditioned conditioner condivision condolatory condole condolement condolence condolent condoler condoling condolingly condominate condominium condonable condonance condonation condonative condone condonement condoner condor conduce conducer conducing conducingly conducive conduciveness conduct conductance conductibility conductible conductility conductimeter conductio conduction conductional conductitious conductive conductively conductivity conductometer conductometric conductor conductorial conductorless conductorship conductory conductress conductus conduit conduplicate conduplicated conduplication condurangin condurango condylar condylarth Condylarthra condylarthrosis condylarthrous condyle condylectomy condylion condyloid condyloma condylomatous condylome condylopod Condylopoda condylopodous condylos condylotomy Condylura condylure cone coned coneen coneflower conehead coneighboring coneine conelet conemaker conemaking Conemaugh conenose conepate coner cones conessine Conestoga confab confabular confabulate confabulation confabulator confabulatory confact confarreate confarreation confated confect confection confectionary confectioner confectionery Confed confederacy confederal confederalist confederate confederater confederatio confederation confederationist confederatism confederative confederatize confederator confelicity conferee conference conferential conferment conferrable conferral conferrer conferruminate conferted Conferva Confervaceae confervaceous conferval Confervales confervoid Confervoideae confervous confess confessable confessant confessarius confessary confessedly confesser confessing confessingly confession confessional confessionalian confessionalism confessionalist confessionary confessionist confessor confessorship confessory confidant confide confidence confidency confident confidential confidentiality confidentially confidentialness confidentiary confidently confidentness confider confiding confidingly confidingness configural configurate configuration configurational configurationally configurationism configurationist configurative configure confinable confine confineable confined confinedly confinedness confineless confinement confiner confining confinity confirm confirmable confirmand confirmation confirmative confirmatively confirmatorily confirmatory confirmed confirmedly confirmedness confirmee confirmer confirming confirmingly confirmity confirmment confirmor confiscable confiscatable confiscate confiscation confiscator confiscatory confitent confiteor confiture confix conflagrant conflagrate conflagration conflagrative conflagrator conflagratory conflate conflated conflation conflict conflicting conflictingly confliction conflictive conflictory conflow confluence confluent confluently conflux confluxibility confluxible confluxibleness confocal conform conformability conformable conformableness conformably conformal conformance conformant conformate conformation conformator conformer conformist conformity confound confoundable confounded confoundedly confoundedness confounder confounding confoundingly confrater confraternal confraternity confraternization confrere confriar confrication confront confrontal confrontation confronte confronter confrontment Confucian Confucianism Confucianist confusability confusable confusably confuse confused confusedly confusedness confusingly confusion confusional confusticate confustication confutable confutation confutative confutator confute confuter conga congeable congeal congealability congealable congealableness congealedness congealer congealment congee congelation congelative congelifraction congeliturbate congeliturbation congener congeneracy congeneric congenerical congenerous congenerousness congenetic congenial congeniality congenialize congenially congenialness congenital congenitally congenitalness conger congeree congest congested congestible congestion congestive congiary congius conglobate conglobately conglobation conglobe conglobulate conglomerate conglomeratic conglomeration conglutin conglutinant conglutinate conglutination conglutinative Congo Congoese Congolese Congoleum congou congratulable congratulant congratulate congratulation congratulational congratulator congratulatory congredient congreet congregable congreganist congregant congregate congregation congregational congregationalism Congregationalist congregationalize congregationally Congregationer congregationist congregative congregativeness congregator Congreso congress congresser congressional congressionalist congressionally congressionist congressist congressive congressman Congresso congresswoman Congreve Congridae congroid congruence congruency congruent congruential congruently congruism congruist congruistic congruity congruous congruously congruousness conhydrine Coniacian conic conical conicality conically conicalness coniceine conichalcite conicine conicity conicle conicoid conicopoly conics Conidae conidia conidial conidian conidiiferous conidioid conidiophore conidiophorous conidiospore conidium conifer Coniferae coniferin coniferophyte coniferous conification coniform Conilurus conima conimene conin conine Coniogramme Coniophora Coniopterygidae Conioselinum coniosis Coniothyrium coniroster conirostral Conirostres Conium conject conjective conjecturable conjecturably conjectural conjecturalist conjecturality conjecturally conjecture conjecturer conjobble conjoin conjoined conjoinedly conjoiner conjoint conjointly conjointment conjointness conjubilant conjugable conjugacy conjugal Conjugales conjugality conjugally conjugant conjugata Conjugatae conjugate conjugated conjugately conjugateness conjugation conjugational conjugationally conjugative conjugator conjugial conjugium conjunct conjunction conjunctional conjunctionally conjunctiva conjunctival conjunctive conjunctively conjunctiveness conjunctivitis conjunctly conjunctur conjunctural conjuncture conjuration conjurator conjure conjurement conjurer conjurership conjuror conjury conk conkanee conker conkers conky conn connach Connaraceae connaraceous connarite Connarus connascency connascent connatal connate connately connateness connation connatural connaturality connaturalize connaturally connaturalness connature connaught connect connectable connectant connected connectedly connectedness connectible connection connectional connectival connective connectively connectivity connector connellite conner connex connexion connexionalism connexity connexive connexivum connexus Connie conning conniption connivance connivancy connivant connivantly connive connivent conniver Connochaetes connoissance connoisseur connoisseurship connotation connotative connotatively connote connotive connotively connubial connubiality connubially connubiate connubium connumerate connumeration Conocarpus Conocephalum Conocephalus conoclinium conocuneus conodont conoid conoidal conoidally conoidic conoidical conoidically Conolophus conominee cononintelligent Conopholis conopid Conopidae conoplain conopodium Conopophaga Conopophagidae Conor Conorhinus conormal conoscope conourish Conoy conphaseolin conplane conquedle conquer conquerable conquerableness conqueress conquering conqueringly conquerment conqueror conquest conquian conquinamine conquinine conquistador Conrad conrector conrectorship conred Conringia consanguine consanguineal consanguinean consanguineous consanguineously consanguinity conscience conscienceless consciencelessly consciencelessness consciencewise conscient conscientious conscientiously conscientiousness conscionable conscionableness conscionably conscious consciously consciousness conscribe conscript conscription conscriptional conscriptionist conscriptive consecrate consecrated consecratedness consecrater consecration consecrative consecrator consecratory consectary consecute consecution consecutive consecutively consecutiveness consecutives consenescence consenescency consension consensual consensually consensus consent consentable consentaneity consentaneous consentaneously consentaneousness consentant consenter consentful consentfully consentience consentient consentiently consenting consentingly consentingness consentive consentively consentment consequence consequency consequent consequential consequentiality consequentially consequentialness consequently consertal conservable conservacy conservancy conservant conservate conservation conservational conservationist conservatism conservatist conservative conservatively conservativeness conservatize conservatoire conservator conservatorio conservatorium conservatorship conservatory conservatrix conserve conserver consider considerability considerable considerableness considerably considerance considerate considerately considerateness consideration considerative consideratively considerativeness considerator considered considerer considering consideringly consign consignable consignatary consignation consignatory consignee consigneeship consigner consignificant consignificate consignification consignificative consignificator consignify consignment consignor consiliary consilience consilient consimilar consimilarity consimilate consist consistence consistency consistent consistently consistorial consistorian consistory consociate consociation consociational consociationism consociative consocies consol consolable consolableness consolably Consolamentum consolation Consolato consolatorily consolatoriness consolatory consolatrix console consolement consoler consolidant consolidate consolidated consolidation consolidationist consolidative consolidator consoling consolingly consolute consomme consonance consonancy consonant consonantal consonantic consonantism consonantize consonantly consonantness consonate consonous consort consortable consorter consortial consortion consortism consortium consortship consound conspecies conspecific conspectus consperse conspersion conspicuity conspicuous conspicuously conspicuousness conspiracy conspirant conspiration conspirative conspirator conspiratorial conspiratorially conspiratory conspiratress conspire conspirer conspiring conspiringly conspue constable constablery constableship constabless constablewick constabular constabulary Constance constancy constant constantan Constantine Constantinian Constantinopolitan constantly constantness constat constatation constate constatory constellate constellation constellatory consternate consternation constipate constipation constituency constituent constituently constitute constituter constitution constitutional constitutionalism constitutionalist constitutionality constitutionalization constitutionalize constitutionally constitutionary constitutioner constitutionist constitutive constitutively constitutiveness constitutor constrain constrainable constrained constrainedly constrainedness constrainer constraining constrainingly constrainment constraint constrict constricted constriction constrictive constrictor constringe constringency constringent construability construable construct constructer constructible construction constructional constructionally constructionism constructionist constructive constructively constructiveness constructivism constructivist constructor constructorship constructure construe construer constuprate constupration consubsist consubsistency consubstantial consubstantialism consubstantialist consubstantiality consubstantially consubstantiate consubstantiation consubstantiationist consubstantive consuete consuetitude consuetude consuetudinal consuetudinary consul consulage consular consularity consulary consulate consulship consult consultable consultant consultary consultation consultative consultatory consultee consulter consulting consultive consultively consultor consultory consumable consume consumedly consumeless consumer consuming consumingly consumingness consummate consummately consummation consummative consummatively consummativeness consummator consummatory consumpt consumpted consumptible consumption consumptional consumptive consumptively consumptiveness consumptivity consute contabescence contabescent contact contactor contactual contactually contagion contagioned contagionist contagiosity contagious contagiously contagiousness contagium contain containable container containment contakion contaminable contaminant contaminate contamination contaminative contaminator contaminous contangential contango conte contect contection contemn contemner contemnible contemnibly contemning contemningly contemnor contemper contemperate contemperature contemplable contemplamen contemplant contemplate contemplatingly contemplation contemplatist contemplative contemplatively contemplativeness contemplator contemplature contemporanean contemporaneity contemporaneous contemporaneously contemporaneousness contemporarily contemporariness contemporary contemporize contempt contemptful contemptibility contemptible contemptibleness contemptibly contemptuous contemptuously contemptuousness contendent contender contending contendingly contendress content contentable contented contentedly contentedness contentful contention contentional contentious contentiously contentiousness contentless contently contentment contentness contents conter conterminal conterminant contermine conterminous conterminously conterminousness contest contestable contestableness contestably contestant contestation contestee contester contestingly contestless context contextive contextual contextually contextural contexture contextured conticent contignation contiguity contiguous contiguously contiguousness continence continency continent continental Continentaler continentalism continentalist continentality Continentalize continentally continently contingence contingency contingent contingential contingentialness contingently contingentness continuable continual continuality continually continualness continuance continuancy continuando continuant continuantly continuate continuately continuateness continuation continuative continuatively continuativeness continuator continue continued continuedly continuedness continuer continuingly continuist continuity continuous continuously continuousness continuum contise contline conto contorniate contorsive contort Contortae contorted contortedly contortedness contortion contortional contortionate contortioned contortionist contortionistic contortive contour contourne contra contraband contrabandage contrabandery contrabandism contrabandist contrabandista contrabass contrabassist contrabasso contracapitalist contraception contraceptionist contraceptive contracivil contraclockwise contract contractable contractant contractation contracted contractedly contractedness contractee contracter contractibility contractible contractibleness contractibly contractile contractility contraction contractional contractionist contractive contractively contractiveness contractor contractual contractually contracture contractured contradebt contradict contradictable contradictedness contradicter contradiction contradictional contradictious contradictiously contradictiousness contradictive contradictively contradictiveness contradictor contradictorily contradictoriness contradictory contradiscriminate contradistinct contradistinction contradistinctive contradistinctively contradistinctly contradistinguish contradivide contrafacture contrafagotto contrafissura contraflexure contraflow contrafocal contragredience contragredient contrahent contrail contraindicate contraindication contraindicative contralateral contralto contramarque contranatural contrantiscion contraoctave contraparallelogram contraplex contrapolarization contrapone contraponend Contraposaune contrapose contraposit contraposita contraposition contrapositive contraprogressist contraprop contraproposal contraption contraptious contrapuntal contrapuntalist contrapuntally contrapuntist contrapunto contrarational contraregular contraregularity contraremonstrance contraremonstrant contrarevolutionary contrariant contrariantly contrariety contrarily contrariness contrarious contrariously contrariousness contrariwise contrarotation contrary contrascriptural contrast contrastable contrastably contrastedly contrastimulant contrastimulation contrastimulus contrastingly contrastive contrastively contrastment contrasty contrasuggestible contratabular contrate contratempo contratenor contravalence contravallation contravariant contravene contravener contravention contraversion contravindicate contravindication contrawise contrayerva contrectation contreface contrefort contretemps contributable contribute contribution contributional contributive contributively contributiveness contributor contributorial contributorship contributory contrite contritely contriteness contrition contriturate contrivance contrivancy contrive contrivement contriver control controllability controllable controllableness controllably controller controllership controlless controllingly controlment controversial controversialism controversialist controversialize controversially controversion controversional controversionalism controversionalist controversy controvert controverter controvertible controvertibly controvertist contubernal contubernial contubernium contumacious contumaciously contumaciousness contumacity contumacy contumelious contumeliously contumeliousness contumely contund conturbation contuse contusion contusioned contusive conubium Conularia conumerary conumerous conundrum conundrumize conurbation conure Conuropsis Conurus conus conusable conusance conusant conusee conusor conutrition conuzee conuzor convalesce convalescence convalescency convalescent convalescently convallamarin Convallaria Convallariaceae convallariaceous convallarin convect convection convectional convective convectively convector convenable convenably convene convenee convener convenership convenience conveniency convenient conveniently convenientness convent conventical conventically conventicle conventicler conventicular convention conventional conventionalism conventionalist conventionality conventionalization conventionalize conventionally conventionary conventioner conventionism conventionist conventionize conventual conventually converge convergement convergence convergency convergent convergescence converging conversable conversableness conversably conversance conversancy conversant conversantly conversation conversationable conversational conversationalist conversationally conversationism conversationist conversationize conversative converse conversely converser conversibility conversible conversion conversional conversionism conversionist conversive convert converted convertend converter convertibility convertible convertibleness convertibly converting convertingness convertise convertism convertite convertive convertor conveth convex convexed convexedly convexedness convexity convexly convexness convey conveyable conveyal conveyance conveyancer conveyancing conveyer convict convictable conviction convictional convictism convictive convictively convictiveness convictment convictor convince convinced convincedly convincedness convincement convincer convincibility convincible convincing convincingly convincingness convival convive convivial convivialist conviviality convivialize convivially convocant convocate convocation convocational convocationally convocationist convocative convocator convoke convoker Convoluta convolute convoluted convolutely convolution convolutional convolutionary convolutive convolve convolvement Convolvulaceae convolvulaceous convolvulad convolvuli convolvulic convolvulin convolvulinic convolvulinolic Convolvulus convoy convulsant convulse convulsedly convulsibility convulsible convulsion convulsional convulsionary convulsionism convulsionist convulsive convulsively convulsiveness cony conycatcher conyrine coo cooba coodle cooee cooer coof Coohee cooing cooingly cooja cook cookable cookbook cookdom cookee cookeite cooker cookery cookhouse cooking cookish cookishly cookless cookmaid cookout cookroom cookshack cookshop cookstove cooky cool coolant coolen cooler coolerman coolheaded coolheadedly coolheadedness coolhouse coolibah coolie cooling coolingly coolingness coolish coolly coolness coolth coolung coolweed coolwort cooly coom coomb coomy coon cooncan coonily cooniness coonroot coonskin coontail coontie coony coop cooper cooperage Cooperia coopering coopery cooree Coorg coorie cooruptibly Coos cooser coost Coosuc coot cooter cootfoot coothay cootie cop copa copable copacetic copaene copaiba copaibic Copaifera Copaiva copaivic copaiye copal copalche copalcocote copaliferous copalite copalm coparallel coparcenary coparcener coparceny coparent copart copartaker copartner copartnership copartnery coparty copassionate copastor copastorate copatain copatentee copatriot copatron copatroness cope Copehan copei Copelata Copelatae copelate copellidine copeman copemate copen copending copenetrate Copeognatha copepod Copepoda copepodan copepodous coper coperception coperiodic Copernican Copernicanism Copernicia coperta copesman copesmate copestone copetitioner cophasal Cophetua cophosis copiability copiable copiapite copied copier copilot coping copiopia copiopsia copiosity copious copiously copiousness copis copist copita coplaintiff coplanar coplanarity copleased coplotter coploughing coplowing copolar copolymer copolymerization copolymerize coppaelite copped copper copperas copperbottom copperer copperhead copperheadism coppering copperish copperization copperize copperleaf coppernose coppernosed copperplate copperproof coppersidesman copperskin coppersmith coppersmithing copperware copperwing copperworks coppery copperytailed coppet coppice coppiced coppicing coppin copping copple copplecrown coppled coppy copr copra coprecipitate coprecipitation copremia copremic copresbyter copresence copresent Coprides Coprinae coprincipal coprincipate Coprinus coprisoner coprodaeum coproduce coproducer coprojector coprolagnia coprolagnist coprolalia coprolaliac coprolite coprolith coprolitic coprology copromisor copromoter coprophagan coprophagia coprophagist coprophagous coprophagy coprophilia coprophiliac coprophilic coprophilism coprophilous coprophyte coproprietor coproprietorship coprose Coprosma coprostasis coprosterol coprozoic copse copsewood copsewooded copsing copsy Copt copter Coptic Coptis copula copulable copular copularium copulate copulation copulative copulatively copulatory copunctal copurchaser copus copy copybook copycat copygraph copygraphed copyhold copyholder copyholding copyism copyist copyman copyreader copyright copyrightable copyrighter copywise coque coquecigrue coquelicot coqueluche coquet coquetoon coquetry coquette coquettish coquettishly coquettishness coquicken coquilla Coquille coquille coquimbite coquina coquita Coquitlam coquito cor Cora cora Corabeca Corabecan corach Coraciae coracial Coracias Coracii Coraciidae coraciiform Coraciiformes coracine coracle coracler coracoacromial coracobrachial coracobrachialis coracoclavicular coracocostal coracohumeral coracohyoid coracoid coracoidal coracomandibular coracomorph Coracomorphae coracomorphic coracopectoral coracoprocoracoid coracoradialis coracoscapular coracovertebral coradical coradicate corah coraise coral coralberry coralbush coraled coralflower coralist corallet Corallian corallic Corallidae corallidomous coralliferous coralliform Coralligena coralligenous coralligerous corallike Corallina Corallinaceae corallinaceous coralline corallite Corallium coralloid coralloidal Corallorhiza corallum Corallus coralroot coralwort coram Corambis coranto corban corbeau corbeil corbel corbeling corbicula corbiculate corbiculum corbie corbiestep corbovinum corbula corcass Corchorus corcir corcopali Corcyraean cord cordage Cordaitaceae cordaitaceous cordaitalean Cordaitales cordaitean Cordaites cordant cordate cordately cordax Cordeau corded cordel Cordelia Cordelier cordeliere cordelle corder Cordery cordewane Cordia cordial cordiality cordialize cordially cordialness cordiceps cordicole cordierite cordies cordiform cordigeri cordillera cordilleran cordiner cording cordite corditis cordleaf cordmaker cordoba cordon cordonnet Cordovan Cordula corduroy corduroyed cordwain cordwainer cordwainery cordwood cordy Cordyceps cordyl Cordylanthus Cordyline core corebel coreceiver coreciprocal corectome corectomy corector cored coredeem coredeemer coredemptress coreductase Coree coreflexed coregence coregency coregent coregnancy coregnant coregonid Coregonidae coregonine coregonoid Coregonus coreid Coreidae coreign coreigner corejoice coreless coreligionist corella corelysis Corema coremaker coremaking coremium coremorphosis corenounce coreometer Coreopsis coreplastic coreplasty corer coresidence coresidual coresign coresonant coresort corespect corespondency corespondent coretomy coreveler coreveller corevolve Corey corf Corfiote Corflambo corge corgi coriaceous corial coriamyrtin coriander coriandrol Coriandrum Coriaria Coriariaceae coriariaceous coriin Corimelaena Corimelaenidae Corin corindon Corineus coring Corinna corinne Corinth Corinthian Corinthianesque Corinthianism Corinthianize Coriolanus coriparian corium Corixa Corixidae cork corkage corkboard corke corked corker corkiness corking corkish corkite corkmaker corkmaking corkscrew corkscrewy corkwing corkwood corky corm Cormac cormel cormidium cormoid Cormophyta cormophyte cormophytic cormorant cormous cormus corn Cornaceae cornaceous cornage cornbell cornberry cornbin cornbinks cornbird cornbole cornbottle cornbrash corncake corncob corncracker corncrib corncrusher corndodger cornea corneagen corneal cornein corneitis cornel Cornelia cornelian Cornelius cornemuse corneocalcareous corneosclerotic corneosiliceous corneous corner cornerbind cornered cornerer cornerpiece cornerstone cornerways cornerwise cornet cornetcy cornettino cornettist corneule corneum cornfield cornfloor cornflower corngrower cornhouse cornhusk cornhusker cornhusking cornic cornice cornicle corniculate corniculer corniculum Corniferous cornific cornification cornified corniform cornigerous cornin corning corniplume Cornish Cornishman cornland cornless cornloft cornmaster cornmonger cornopean cornpipe cornrick cornroot cornstalk cornstarch cornstook cornu cornual cornuate cornuated cornubianite cornucopia Cornucopiae cornucopian cornucopiate cornule cornulite Cornulites cornupete Cornus cornute cornuted cornutine cornuto cornwallis cornwallite corny coroa Coroado corocleisis corodiary corodiastasis corodiastole corody corol corolla corollaceous corollarial corollarially corollary corollate corollated corolliferous corolliform corollike corolline corollitic corometer corona coronach coronad coronadite coronae coronagraph coronagraphic coronal coronale coronaled coronally coronamen coronary coronate coronated coronation coronatorial coroner coronership coronet coroneted coronetted coronetty coroniform Coronilla coronillin coronion coronitis coronium coronize coronobasilar coronofacial coronofrontal coronoid Coronopus coronule coroparelcysis coroplast coroplasta coroplastic Coropo coroscopy corotomy corozo corp corpora corporal corporalism corporality corporally corporalship corporas corporate corporately corporateness corporation corporational corporationer corporationism corporative corporator corporature corporeal corporealist corporeality corporealization corporealize corporeally corporealness corporeals corporeity corporeous corporification corporify corporosity corposant corps corpsbruder corpse corpsman corpulence corpulency corpulent corpulently corpulentness corpus corpuscle corpuscular corpuscularian corpuscularity corpusculated corpuscule corpusculous corpusculum corrade corradial corradiate corradiation corral corrasion corrasive Correa correal correality correct correctable correctant corrected correctedness correctible correcting correctingly correction correctional correctionalist correctioner correctitude corrective correctively correctiveness correctly correctness corrector correctorship correctress correctrice corregidor correlatable correlate correlated correlation correlational correlative correlatively correlativeness correlativism correlativity correligionist corrente correption corresol correspond correspondence correspondency correspondent correspondential correspondentially correspondently correspondentship corresponder corresponding correspondingly corresponsion corresponsive corresponsively corridor corridored corrie Corriedale corrige corrigenda corrigendum corrigent corrigibility corrigible corrigibleness corrigibly Corrigiola Corrigiolaceae corrival corrivality corrivalry corrivalship corrivate corrivation corrobboree corroborant corroborate corroboration corroborative corroboratively corroborator corroboratorily corroboratory corroboree corrode corrodent Corrodentia corroder corrodiary corrodibility corrodible corrodier corroding corrosibility corrosible corrosibleness corrosion corrosional corrosive corrosively corrosiveness corrosivity corrugate corrugated corrugation corrugator corrupt corrupted corruptedly corruptedness corrupter corruptful corruptibility corruptible corruptibleness corrupting corruptingly corruption corruptionist corruptive corruptively corruptly corruptness corruptor corruptress corsac corsage corsaint corsair corse corselet corsepresent corsesque corset corseting corsetless corsetry Corsican corsie corsite corta Cortaderia cortege Cortes cortex cortez cortical cortically corticate corticated corticating cortication cortices corticiferous corticiform corticifugal corticifugally corticipetal corticipetally Corticium corticoafferent corticoefferent corticoline corticopeduncular corticose corticospinal corticosterone corticostriate corticous cortin cortina cortinarious Cortinarius cortinate cortisone cortlandtite Corton coruco coruler Coruminacan corundophilite corundum corupay coruscant coruscate coruscation corver corvette corvetto Corvidae corviform corvillosum corvina Corvinae corvine corvoid Corvus Cory Corybant Corybantian corybantiasm Corybantic corybantic Corybantine corybantish corybulbin corybulbine corycavamine corycavidin corycavidine corycavine Corycia Corycian corydalin corydaline Corydalis corydine Corydon coryl Corylaceae corylaceous corylin Corylopsis Corylus corymb corymbed corymbiate corymbiated corymbiferous corymbiform corymbose corymbous corynebacterial Corynebacterium Coryneum corynine Corynocarpaceae corynocarpaceous Corynocarpus Corypha Coryphaena coryphaenid Coryphaenidae coryphaenoid Coryphaenoididae coryphaeus coryphee coryphene Coryphodon coryphodont coryphylly corytuberine coryza cos cosalite cosaque cosavior coscet Coscinodiscaceae Coscinodiscus coscinomancy coscoroba coseasonal coseat cosec cosecant cosech cosectarian cosectional cosegment coseism coseismal coseismic cosenator cosentiency cosentient coservant cosession coset cosettler cosh cosharer cosheath cosher cosherer coshering coshery cosignatory cosigner cosignitary cosily cosinage cosine cosiness cosingular cosinusoid Cosmati cosmecology cosmesis cosmetic cosmetical cosmetically cosmetician cosmetiste cosmetological cosmetologist cosmetology cosmic cosmical cosmicality cosmically cosmism cosmist cosmocracy cosmocrat cosmocratic cosmogenesis cosmogenetic cosmogenic cosmogeny cosmogonal cosmogoner cosmogonic cosmogonical cosmogonist cosmogonize cosmogony cosmographer cosmographic cosmographical cosmographically cosmographist cosmography cosmolabe cosmolatry cosmologic cosmological cosmologically cosmologist cosmology cosmometry cosmopathic cosmoplastic cosmopoietic cosmopolicy cosmopolis cosmopolitan cosmopolitanism cosmopolitanization cosmopolitanize cosmopolitanly cosmopolite cosmopolitic cosmopolitical cosmopolitics cosmopolitism cosmorama cosmoramic cosmorganic cosmos cosmoscope cosmosophy cosmosphere cosmotellurian cosmotheism cosmotheist cosmotheistic cosmothetic cosmotron cosmozoan cosmozoic cosmozoism cosonant cosounding cosovereign cosovereignty cospecies cospecific cosphered cosplendor cosplendour coss Cossack Cossaean cossas cosse cosset cossette cossid Cossidae cossnent cossyrite cost costa Costaea costal costalgia costally costander Costanoan costar costard Costata costate costated costean costeaning costectomy costellate coster costerdom costermonger costicartilage costicartilaginous costicervical costiferous costiform costing costipulator costispinal costive costively costiveness costless costlessness costliness costly costmary costoabdominal costoapical costocentral costochondral costoclavicular costocolic costocoracoid costodiaphragmatic costogenic costoinferior costophrenic costopleural costopneumopexy costopulmonary costoscapular costosternal costosuperior costothoracic costotome costotomy costotrachelian costotransversal costotransverse costovertebral costoxiphoid costraight costrel costula costulation costume costumer costumery costumic costumier costumiere costuming costumist costusroot cosubject cosubordinate cosuffer cosufferer cosuggestion cosuitor cosurety cosustain coswearer cosy cosymmedian cot cotangent cotangential cotarius cotarnine cotch cote coteful coteline coteller cotemporane cotemporanean cotemporaneous cotemporaneously cotemporary cotenancy cotenant cotenure coterell coterie coterminous Cotesian coth cothamore cothe cotheorist cothish cothon cothurn cothurnal cothurnate cothurned cothurnian cothurnus cothy cotidal cotillage cotillion Cotinga cotingid Cotingidae cotingoid Cotinus cotise cotitular cotland cotman coto cotoin Cotonam Cotoneaster cotonier cotorment cotoro cotorture Cotoxo cotquean cotraitor cotransfuse cotranslator cotranspire cotransubstantiate cotrine cotripper cotrustee cotset cotsetla cotsetle cotta cottabus cottage cottaged cottager cottagers cottagey cotte cotted cotter cotterel cotterite cotterway cottid Cottidae cottier cottierism cottiform cottoid cotton cottonade cottonbush cottonee cottoneer cottoner Cottonian cottonization cottonize cottonless cottonmouth cottonocracy Cottonopolis cottonseed cottontail cottontop cottonweed cottonwood cottony Cottus cotty cotuit cotula cotunnite Coturnix cotutor cotwin cotwinned cotwist cotyla cotylar cotyledon cotyledonal cotyledonar cotyledonary cotyledonous cotyliform cotyligerous cotyliscus cotyloid Cotylophora cotylophorous cotylopubic cotylosacral cotylosaur Cotylosauria cotylosaurian cotype Cotys Cotyttia couac coucal couch couchancy couchant couched couchee coucher couching couchmaker couchmaking couchmate couchy coude coudee coue Coueism cougar cough cougher coughroot coughweed coughwort cougnar coul could couldron coulee coulisse coulomb coulometer coulterneb coulure couma coumalic coumalin coumara coumaran coumarate coumaric coumarilic coumarin coumarinic coumarone coumarou Coumarouna council councilist councilman councilmanic councilor councilorship councilwoman counderstand counite couniversal counsel counselable counselee counselful counselor counselorship count countable countableness countably countdom countenance countenancer counter counterabut counteraccusation counteracquittance counteract counteractant counteracter counteracting counteractingly counteraction counteractive counteractively counteractivity counteractor counteraddress counteradvance counteradvantage counteradvice counteradvise counteraffirm counteraffirmation counteragency counteragent counteragitate counteragitation counteralliance counterambush counterannouncement counteranswer counterappeal counterappellant counterapproach counterapse counterarch counterargue counterargument counterartillery counterassertion counterassociation counterassurance counterattack counterattestation counterattired counterattraction counterattractive counterattractively counteraverment counteravouch counteravouchment counterbalance counterbarrage counterbase counterbattery counterbeating counterbend counterbewitch counterbid counterblast counterblow counterbond counterborder counterbore counterboycott counterbrace counterbranch counterbrand counterbreastwork counterbuff counterbuilding countercampaign countercarte countercause counterchange counterchanged countercharge countercharm countercheck countercheer counterclaim counterclaimant counterclockwise countercolored countercommand countercompetition countercomplaint countercompony countercondemnation counterconquest counterconversion countercouchant countercoupe countercourant countercraft countercriticism countercross countercry countercurrent countercurrently countercurrentwise counterdance counterdash counterdecision counterdeclaration counterdecree counterdefender counterdemand counterdemonstration counterdeputation counterdesire counterdevelopment counterdifficulty counterdigged counterdike counterdiscipline counterdisengage counterdisengagement counterdistinction counterdistinguish counterdoctrine counterdogmatism counterdraft counterdrain counterdrive counterearth counterefficiency countereffort counterembattled counterembowed counterenamel counterend counterenergy counterengagement counterengine counterenthusiasm counterentry counterequivalent counterermine counterespionage counterestablishment counterevidence counterexaggeration counterexcitement counterexcommunication counterexercise counterexplanation counterexposition counterexpostulation counterextend counterextension counterfact counterfallacy counterfaller counterfeit counterfeiter counterfeitly counterfeitment counterfeitness counterferment counterfessed counterfire counterfix counterflange counterflashing counterflight counterflory counterflow counterflux counterfoil counterforce counterformula counterfort counterfugue countergabble countergabion countergambit countergarrison countergauge countergauger countergift countergirded counterglow counterguard counterhaft counterhammering counterhypothesis counteridea counterideal counterimagination counterimitate counterimitation counterimpulse counterindentation counterindented counterindicate counterindication counterinfluence counterinsult counterintelligence counterinterest counterinterpretation counterintrigue counterinvective counterirritant counterirritate counterirritation counterjudging counterjumper counterlath counterlathing counterlatration counterlaw counterleague counterlegislation counterlife counterlocking counterlode counterlove counterly countermachination counterman countermand countermandable countermaneuver countermanifesto countermarch countermark countermarriage countermeasure countermeet countermessage countermigration countermine countermission countermotion countermount countermove countermovement countermure countermutiny counternaiant counternarrative counternatural counternecromancy counternoise counternotice counterobjection counterobligation counteroffensive counteroffer counteropening counteropponent counteropposite counterorator counterorder counterorganization counterpaled counterpaly counterpane counterpaned counterparadox counterparallel counterparole counterparry counterpart counterpassant counterpassion counterpenalty counterpendent counterpetition counterpicture counterpillar counterplan counterplay counterplayer counterplea counterplead counterpleading counterplease counterplot counterpoint counterpointe counterpointed counterpoise counterpoison counterpole counterponderate counterpose counterposition counterposting counterpotence counterpotency counterpotent counterpractice counterpray counterpreach counterpreparation counterpressure counterprick counterprinciple counterprocess counterproject counterpronunciamento counterproof counterpropaganda counterpropagandize counterprophet counterproposal counterproposition counterprotection counterprotest counterprove counterpull counterpunch counterpuncture counterpush counterquartered counterquarterly counterquery counterquestion counterquip counterradiation counterraid counterraising counterrampant counterrate counterreaction counterreason counterreckoning counterrecoil counterreconnaissance counterrefer counterreflected counterreform counterreformation counterreligion counterremonstrant counterreply counterreprisal counterresolution counterrestoration counterretreat counterrevolution counterrevolutionary counterrevolutionist counterrevolutionize counterriposte counterroll counterround counterruin countersale countersalient counterscale counterscalloped counterscarp counterscoff countersconce counterscrutiny countersea counterseal countersecure countersecurity counterselection countersense counterservice countershade countershaft countershafting countershear countershine countershout counterside countersiege countersign countersignal countersignature countersink countersleight counterslope countersmile countersnarl counterspying counterstain counterstamp counterstand counterstatant counterstatement counterstatute counterstep counterstimulate counterstimulation counterstimulus counterstock counterstratagem counterstream counterstrike counterstroke counterstruggle countersubject countersuggestion countersuit countersun countersunk countersurprise counterswing countersworn countersympathy countersynod countertack countertail countertally countertaste countertechnicality countertendency countertenor counterterm counterterror countertheme countertheory counterthought counterthreat counterthrust counterthwarting countertierce countertime countertouch countertraction countertrades countertransference countertranslation countertraverse countertreason countertree countertrench countertrespass countertrippant countertripping countertruth countertug counterturn counterturned countertype countervail countervair countervairy countervallation countervaunt countervene countervengeance countervenom countervibration counterview countervindication countervolition countervolley countervote counterwager counterwall counterwarmth counterwave counterweigh counterweight counterweighted counterwheel counterwill counterwilling counterwind counterwitness counterword counterwork counterworker counterwrite countess countfish counting countinghouse countless countor countrified countrifiedness country countryfolk countryman countrypeople countryseat countryside countryward countrywoman countship county coup coupage coupe couped coupee coupelet couper couple coupled couplement coupler coupleress couplet coupleteer coupling coupon couponed couponless coupstick coupure courage courageous courageously courageousness courager courant courante courap couratari courb courbache courbaril courbash courge courida courier couril courlan Cours course coursed courser coursing court courtbred courtcraft courteous courteously courteousness courtepy courter courtesan courtesanry courtesanship courtesy courtezanry courtezanship courthouse courtier courtierism courtierly courtiership courtin courtless courtlet courtlike courtliness courtling courtly courtman Courtney courtroom courtship courtyard courtzilite couscous couscousou couseranite cousin cousinage cousiness cousinhood cousinly cousinry cousinship cousiny coussinet coustumier coutel coutelle couter Coutet couth couthie couthily couthiness couthless coutil coutumier couvade couxia covado covalence covalent Covarecan Covarecas covariable covariance covariant covariation covassal cove coved covelline covellite covenant covenantal covenanted covenantee Covenanter covenanter covenanting covenantor covent coventrate coventrize Coventry cover coverage coveralls coverchief covercle covered coverer covering coverless coverlet coverlid coversed coverside coversine coverslut covert covertical covertly covertness coverture covet covetable coveter coveting covetingly covetiveness covetous covetously covetousness covey covibrate covibration covid Coviello covillager Covillea covin coving covinous covinously covisit covisitor covite covolume covotary cow cowal Cowan coward cowardice cowardliness cowardly cowardness cowardy cowbane cowbell cowberry cowbind cowbird cowboy cowcatcher cowdie coween cower cowfish cowgate cowgram cowhage cowheart cowhearted cowheel cowherb cowherd cowhide cowhiding cowhorn Cowichan cowish cowitch cowkeeper cowl cowle cowled cowleech cowleeching cowlick cowlicks cowlike cowling Cowlitz cowlstaff cowman cowpath cowpea cowpen Cowperian cowperitis cowpock cowpox cowpuncher cowquake cowrie cowroid cowshed cowskin cowslip cowslipped cowsucker cowtail cowthwort cowtongue cowweed cowwheat cowy cowyard cox coxa coxal coxalgia coxalgic coxankylometer coxarthritis coxarthrocace coxarthropathy coxbones coxcomb coxcombess coxcombhood coxcombic coxcombical coxcombicality coxcombically coxcombity coxcombry coxcomby coxcomical coxcomically coxite coxitis coxocerite coxoceritic coxodynia coxofemoral coxopodite coxswain coxy coy coyan coydog coyish coyishness coyly coyness coynye coyo coyol coyote Coyotero coyotillo coyoting coypu coyure coz coze cozen cozenage cozener cozening cozeningly cozier cozily coziness cozy crab crabbed crabbedly crabbedness crabber crabbery crabbing crabby crabcatcher crabeater craber crabhole crablet crablike crabman crabmill crabsidle crabstick crabweed crabwise crabwood Cracca Cracidae Cracinae crack crackable crackajack crackbrain crackbrained crackbrainedness crackdown cracked crackedness cracker crackerberry crackerjack crackers crackhemp crackiness cracking crackjaw crackle crackled crackless crackleware crackling crackly crackmans cracknel crackpot crackskull cracksman cracky cracovienne craddy cradge cradle cradleboard cradlechild cradlefellow cradleland cradlelike cradlemaker cradlemaking cradleman cradlemate cradler cradleside cradlesong cradletime cradling Cradock craft craftily craftiness craftless craftsman craftsmanship craftsmaster craftswoman craftwork craftworker crafty crag craggan cragged craggedness craggily cragginess craggy craglike cragsman cragwork craichy Craig craigmontite crain craisey craizey crajuru crake crakefeet crakow cram cramasie crambambulee crambambuli Crambe crambe cramberry crambid Crambidae Crambinae cramble crambly crambo Crambus crammer cramp cramped crampedness cramper crampet crampfish cramping crampingly crampon cramponnee crampy cran cranage cranberry crance crandall crandallite crane cranelike craneman craner cranesman craneway craney Crania crania craniacromial craniad cranial cranially cranian Craniata craniate cranic craniectomy craniocele craniocerebral cranioclasis cranioclasm cranioclast cranioclasty craniodidymus craniofacial craniognomic craniognomy craniognosy craniograph craniographer craniography craniological craniologically craniologist craniology craniomalacia craniomaxillary craniometer craniometric craniometrical craniometrically craniometrist craniometry craniopagus craniopathic craniopathy craniopharyngeal craniophore cranioplasty craniopuncture craniorhachischisis craniosacral cranioschisis cranioscopical cranioscopist cranioscopy craniospinal craniostenosis craniostosis Craniota craniotabes craniotome craniotomy craniotopography craniotympanic craniovertebral cranium crank crankbird crankcase cranked cranker crankery crankily crankiness crankle crankless crankly crankman crankous crankpin crankshaft crankum cranky crannage crannied crannock crannog crannoger cranny cranreuch crantara crants crap crapaud crapaudine crape crapefish crapehanger crapelike crappie crappin crapple crappo craps crapshooter crapulate crapulence crapulent crapulous crapulously crapulousness crapy craquelure crare crash crasher crasis craspedal craspedodromous craspedon Craspedota craspedotal craspedote crass crassamentum crassier crassilingual Crassina crassitude crassly crassness Crassula Crassulaceae crassulaceous Crataegus Crataeva cratch cratchens cratches crate crateful cratemaker cratemaking crateman crater crateral cratered Craterellus Craterid crateriform crateris craterkin craterless craterlet craterlike craterous craticular Cratinean cratometer cratometric cratometry craunch craunching craunchingly cravat crave craven Cravenette cravenette cravenhearted cravenly cravenness craver craving cravingly cravingness cravo craw crawberry crawdad crawfish crawfoot crawful crawl crawler crawlerize crawley crawleyroot crawling crawlingly crawlsome crawly crawm crawtae Crawthumper Crax crayer crayfish crayon crayonist crayonstone craze crazed crazedly crazedness crazily craziness crazingmill crazy crazycat crazyweed crea creagh creaght creak creaker creakily creakiness creakingly creaky cream creambush creamcake creamcup creamer creamery creameryman creamfruit creamily creaminess creamless creamlike creammaker creammaking creamometer creamsacs creamware creamy creance creancer creant crease creaseless creaser creashaks creasing creasy creat creatable create createdness creatic creatine creatinephosphoric creatinine creatininemia creatinuria creation creational creationary creationism creationist creationistic creative creatively creativeness creativity creatophagous creator creatorhood creatorrhea creatorship creatotoxism creatress creatrix creatural creature creaturehood creatureless creatureliness creatureling creaturely creatureship creaturize crebricostate crebrisulcate crebrity crebrous creche creddock credence credencive credenciveness credenda credensive credensiveness credent credential credently credenza credibility credible credibleness credibly credit creditability creditable creditableness creditably creditive creditless creditor creditorship creditress creditrix crednerite Credo credulity credulous credulously credulousness Cree cree creed creedal creedalism creedalist creeded creedist creedite creedless creedlessness creedmore creedsman Creek creek creeker creekfish creekside creekstuff creeky creel creeler creem creen creep creepage creeper creepered creeperless creephole creepie creepiness creeping creepingly creepmouse creepmousy creepy creese creesh creeshie creeshy creirgist cremaster cremasterial cremasteric cremate cremation cremationism cremationist cremator crematorial crematorium crematory crembalum cremnophobia cremocarp cremometer cremone cremor cremorne cremule crena crenate crenated crenately crenation crenature crenel crenelate crenelated crenelation crenele creneled crenelet crenellate crenellation crenic crenitic crenology crenotherapy Crenothrix crenula crenulate crenulated crenulation creodont Creodonta creole creoleize creolian Creolin creolism creolization creolize creophagia creophagism creophagist creophagous creophagy creosol creosote creosoter creosotic crepance crepe crepehanger Crepidula crepine crepiness Crepis crepitaculum crepitant crepitate crepitation crepitous crepitus crepon crept crepuscle crepuscular crepuscule crepusculine crepusculum crepy cresamine crescendo crescent crescentade crescentader Crescentia crescentic crescentiform crescentlike crescentoid crescentwise crescive crescograph crescographic cresegol cresol cresolin cresorcinol cresotate cresotic cresotinic cresoxide cresoxy cresphontes cress cressed cresselle cresset Cressida cresson cressweed cresswort cressy crest crested crestfallen crestfallenly crestfallenness cresting crestless crestline crestmoreite cresyl cresylate cresylene cresylic cresylite creta Cretaceous cretaceous cretaceously Cretacic Cretan Crete cretefaction Cretic cretic cretification cretify cretin cretinic cretinism cretinization cretinize cretinoid cretinous cretion cretionary Cretism cretonne crevalle crevasse crevice creviced crew crewel crewelist crewellery crewelwork crewer crewless crewman Crex crib cribbage cribber cribbing cribble cribellum cribo cribral cribrate cribrately cribration cribriform cribrose cribwork cric Cricetidae cricetine Cricetus crick cricket cricketer cricketing crickety crickey crickle cricoarytenoid cricoid cricopharyngeal cricothyreoid cricothyreotomy cricothyroid cricothyroidean cricotomy cricotracheotomy Cricotus cried crier criey crig crile crime Crimean crimeful crimeless crimelessness crimeproof criminal criminaldom criminalese criminalism criminalist criminalistic criminalistician criminalistics criminality criminally criminalness criminaloid criminate crimination criminative criminator criminatory crimine criminogenesis criminogenic criminologic criminological criminologist criminology criminosis criminous criminously criminousness crimogenic crimp crimpage crimper crimping crimple crimpness crimpy crimson crimsonly crimsonness crimsony crin crinal crinanite crinated crinatory crine crined crinet cringe cringeling cringer cringing cringingly cringingness cringle crinicultural criniculture criniferous Criniger crinigerous criniparous crinite crinitory crinivorous crink crinkle crinkleroot crinkly crinoid crinoidal Crinoidea crinoidean crinoline crinose crinosity crinula Crinum criobolium criocephalus Crioceras crioceratite crioceratitic Crioceris criophore Criophoros criosphinx cripes crippingly cripple crippledom crippleness crippler crippling cripply Cris crises crisic crisis crisp crispate crispated crispation crispature crisped crisper crispily Crispin crispine crispiness crisping crisply crispness crispy criss crissal crisscross crissum crista cristate Cristatella Cristi cristiform Cristina Cristineaux Cristino Cristispira Cristivomer cristobalite Cristopher critch criteria criteriology criterion criterional criterium crith Crithidia crithmene crithomancy critic critical criticality critically criticalness criticaster criticasterism criticastry criticisable criticism criticist criticizable criticize criticizer criticizingly critickin criticship criticule critique critling crizzle cro croak Croaker croaker croakily croakiness croaky Croat Croatan Croatian croc Crocanthemum crocard croceic crocein croceine croceous crocetin croche crochet crocheter crocheting croci crocidolite Crocidura crocin crock crocker crockery crockeryware crocket crocketed crocky crocodile Crocodilia crocodilian Crocodilidae crocodiline crocodilite crocodiloid Crocodilus Crocodylidae Crocodylus crocoisite crocoite croconate croconic Crocosmia Crocus crocus crocused croft crofter crofterization crofterize crofting croftland croisette croissante Crokinole Crom cromaltite crome Cromer Cromerian cromfordite cromlech cromorna cromorne Cromwell Cromwellian Cronartium crone croneberry cronet Cronian cronish cronk cronkness cronstedtite crony crood croodle crook crookback crookbacked crookbill crookbilled crooked crookedly crookedness crooken crookesite crookfingered crookheaded crookkneed crookle crooklegged crookneck crooknecked crooknosed crookshouldered crooksided crooksterned crooktoothed crool Croomia croon crooner crooning crooningly crop crophead cropland cropman croppa cropper croppie cropplecrown croppy cropshin cropsick cropsickness cropweed croquet croquette crore crosa Crosby crosier crosiered crosnes cross crossability crossable crossarm crossband crossbar crossbeak crossbeam crossbelt crossbill crossbolt crossbolted crossbones crossbow crossbowman crossbred crossbreed crosscurrent crosscurrented crosscut crosscutter crosscutting crosse crossed crosser crossette crossfall crossfish crossflow crossflower crossfoot crosshackle crosshand crosshatch crosshaul crosshauling crosshead crossing crossite crossjack crosslegs crosslet crossleted crosslight crosslighted crossline crossly crossness crossopodia crossopterygian Crossopterygii Crossosoma Crossosomataceae crossosomataceous crossover crosspatch crosspath crosspiece crosspoint crossrail crossroad crossroads crossrow crossruff crosstail crosstie crosstied crosstoes crosstrack crosstree crosswalk crossway crossways crossweb crossweed crosswise crossword crosswort crostarie crotal Crotalaria crotalic Crotalidae crotaliform Crotalinae crotaline crotalism crotalo crotaloid crotalum Crotalus crotaphic crotaphion crotaphite crotaphitic Crotaphytus crotch crotched crotchet crotcheteer crotchetiness crotchety crotchy crotin Croton crotonaldehyde crotonate crotonic crotonization crotonyl crotonylene Crotophaga crottels crottle crotyl crouch crouchant crouched croucher crouching crouchingly crounotherapy croup croupade croupal croupe crouperbush croupier croupily croupiness croupous croupy crouse crousely crout croute crouton crow crowbait crowbar crowberry crowbill crowd crowded crowdedly crowdedness crowder crowdweed crowdy crower crowflower crowfoot crowfooted crowhop crowing crowingly crowkeeper crowl crown crownbeard crowned crowner crownless crownlet crownling crownmaker crownwork crownwort crowshay crowstep crowstepped crowstick crowstone crowtoe croy croyden croydon croze crozer crozzle crozzly crubeen cruce cruces crucethouse cruche crucial cruciality crucially crucian Crucianella cruciate cruciately cruciation crucible Crucibulum crucifer Cruciferae cruciferous crucificial crucified crucifier crucifix crucifixion cruciform cruciformity cruciformly crucify crucigerous crucilly crucily cruck crude crudely crudeness crudity crudwort cruel cruelhearted cruelize cruelly cruelness cruels cruelty cruent cruentation cruet cruety cruise cruiser cruisken cruive cruller crum crumb crumbable crumbcloth crumber crumble crumblement crumblet crumbliness crumblingness crumblings crumbly crumby crumen crumenal crumlet crummie crummier crummiest crummock crummy crump crumper crumpet crumple crumpled crumpler crumpling crumply crumpy crunch crunchable crunchiness crunching crunchingly crunchingness crunchweed crunchy crunk crunkle crunodal crunode crunt cruor crupper crural crureus crurogenital cruroinguinal crurotarsal crus crusade crusader crusado Crusca cruse crush crushability crushable crushed crusher crushing crushingly crusie crusily crust crusta Crustacea crustaceal crustacean crustaceological crustaceologist crustaceology crustaceous crustade crustal crustalogical crustalogist crustalogy crustate crustated crustation crusted crustedly cruster crustific crustification crustily crustiness crustless crustose crustosis crusty crutch crutched crutcher crutching crutchlike cruth crutter crux cruzeiro cry cryable cryaesthesia cryalgesia cryanesthesia crybaby cryesthesia crying cryingly crymodynia crymotherapy cryoconite cryogen cryogenic cryogenics cryogeny cryohydrate cryohydric cryolite cryometer cryophile cryophilic cryophoric cryophorus cryophyllite cryophyte cryoplankton cryoscope cryoscopic cryoscopy cryosel cryostase cryostat crypt crypta cryptal cryptamnesia cryptamnesic cryptanalysis cryptanalyst cryptarch cryptarchy crypted Crypteronia Crypteroniaceae cryptesthesia cryptesthetic cryptic cryptical cryptically cryptoagnostic cryptobatholithic cryptobranch Cryptobranchia Cryptobranchiata cryptobranchiate Cryptobranchidae Cryptobranchus cryptocarp cryptocarpic cryptocarpous Cryptocarya Cryptocephala cryptocephalous Cryptocerata cryptocerous cryptoclastic Cryptocleidus cryptococci cryptococcic Cryptococcus cryptococcus cryptocommercial cryptocrystalline cryptocrystallization cryptodeist Cryptodira cryptodiran cryptodire cryptodirous cryptodouble cryptodynamic cryptogam Cryptogamia cryptogamian cryptogamic cryptogamical cryptogamist cryptogamous cryptogamy cryptogenetic cryptogenic cryptogenous Cryptoglaux cryptoglioma cryptogram Cryptogramma cryptogrammatic cryptogrammatical cryptogrammatist cryptogrammic cryptograph cryptographal cryptographer cryptographic cryptographical cryptographically cryptographist cryptography cryptoheresy cryptoheretic cryptoinflationist cryptolite cryptologist cryptology cryptolunatic cryptomere Cryptomeria cryptomerous cryptomnesia cryptomnesic cryptomonad Cryptomonadales Cryptomonadina cryptonema Cryptonemiales cryptoneurous cryptonym cryptonymous cryptopapist cryptoperthite Cryptophagidae cryptophthalmos Cryptophyceae cryptophyte cryptopine cryptoporticus Cryptoprocta cryptoproselyte cryptoproselytism cryptopyic cryptopyrrole cryptorchid cryptorchidism cryptorchis Cryptorhynchus cryptorrhesis cryptorrhetic cryptoscope cryptoscopy cryptosplenetic Cryptostegia cryptostoma Cryptostomata cryptostomate cryptostome Cryptotaenia cryptous cryptovalence cryptovalency cryptozonate Cryptozonia cryptozygosity cryptozygous Crypturi Crypturidae crystal crystallic crystalliferous crystalliform crystalligerous crystallin crystalline crystallinity crystallite crystallitic crystallitis crystallizability crystallizable crystallization crystallize crystallized crystallizer crystalloblastic crystallochemical crystallochemistry crystallogenesis crystallogenetic crystallogenic crystallogenical crystallogeny crystallogram crystallographer crystallographic crystallographical crystallographically crystallography crystalloid crystalloidal crystallology crystalloluminescence crystallomagnetic crystallomancy crystallometric crystallometry crystallophyllian crystallose crystallurgy crystalwort crystic crystograph crystoleum Crystolon crystosphene csardas Ctenacanthus ctene ctenidial ctenidium cteniform Ctenocephalus ctenocyst ctenodactyl Ctenodipterini ctenodont Ctenodontidae Ctenodus ctenoid ctenoidean Ctenoidei ctenoidian ctenolium Ctenophora ctenophoral ctenophoran ctenophore ctenophoric ctenophorous Ctenoplana Ctenostomata ctenostomatous ctenostome ctetology cuadra Cuailnge cuapinole cuarenta cuarta cuarteron cuartilla cuartillo cub Cuba cubage Cuban cubangle cubanite Cubanize cubatory cubature cubbing cubbish cubbishly cubbishness cubby cubbyhole cubbyhouse cubbyyew cubdom cube cubeb cubelet Cubelium cuber cubhood cubi cubic cubica cubical cubically cubicalness cubicity cubicle cubicly cubicone cubicontravariant cubicovariant cubicular cubiculum cubiform cubism cubist cubit cubital cubitale cubited cubitiere cubito cubitocarpal cubitocutaneous cubitodigital cubitometacarpal cubitopalmar cubitoplantar cubitoradial cubitus cubmaster cubocalcaneal cuboctahedron cubocube cubocuneiform cubododecahedral cuboid cuboidal cuboides cubomancy Cubomedusae cubomedusan cubometatarsal cubonavicular Cuchan Cuchulainn cuck cuckhold cuckold cuckoldom cuckoldry cuckoldy cuckoo cuckooflower cuckoomaid cuckoopint cuckoopintle cuckstool cucoline Cucujid Cucujidae Cucujus Cuculi Cuculidae cuculiform Cuculiformes cuculine cuculla cucullaris cucullate cucullately cuculliform cucullus cuculoid Cuculus Cucumaria Cucumariidae cucumber cucumiform Cucumis cucurbit Cucurbita Cucurbitaceae cucurbitaceous cucurbite cucurbitine cud cudava cudbear cudden cuddle cuddleable cuddlesome cuddly Cuddy cuddy cuddyhole cudgel cudgeler cudgerie cudweed cue cueball cueca cueist cueman cuemanship cuerda cuesta Cueva cuff cuffer cuffin cuffy cuffyism cuggermugger cuichunchulli cuinage cuir cuirass cuirassed cuirassier cuisinary cuisine cuissard cuissart cuisse cuissen cuisten Cuitlateco cuittikin Cujam cuke Culavamsa culbut Culdee culebra culet culeus Culex culgee culicid Culicidae culicidal culicide culiciform culicifugal culicifuge Culicinae culicine Culicoides culilawan culinarily culinary cull culla cullage Cullen culler cullet culling cullion cullis cully culm culmen culmicolous culmiferous culmigenous culminal culminant culminate culmination culmy culotte culottes culottic culottism culpa culpability culpable culpableness culpably culpatory culpose culprit cult cultch cultellation cultellus culteranismo cultic cultigen cultirostral Cultirostres cultish cultism cultismo cultist cultivability cultivable cultivably cultivar cultivatability cultivatable cultivate cultivated cultivation cultivator cultrate cultrated cultriform cultrirostral Cultrirostres cultual culturable cultural culturally culture cultured culturine culturist culturization culturize culturological culturologically culturologist culturology cultus culver culverfoot culverhouse culverin culverineer culverkey culvert culvertage culverwort cum Cumacea cumacean cumaceous Cumaean cumal cumaldehyde Cumanagoto cumaphyte cumaphytic cumaphytism Cumar cumay cumbent cumber cumberer cumberlandite cumberless cumberment cumbersome cumbersomely cumbersomeness cumberworld cumbha cumbly cumbraite cumbrance cumbre Cumbrian cumbrous cumbrously cumbrousness cumbu cumene cumengite cumenyl cumflutter cumhal cumic cumidin cumidine cumin cuminal cuminic cuminoin cuminol cuminole cuminseed cuminyl cummer cummerbund cummin cummingtonite cumol cump cumshaw cumulant cumular cumulate cumulately cumulation cumulatist cumulative cumulatively cumulativeness cumuli cumuliform cumulite cumulophyric cumulose cumulous cumulus cumyl Cuna cunabular Cunan Cunarder Cunas cunctation cunctatious cunctative cunctator cunctatorship cunctatury cunctipotent cundeamor cuneal cuneate cuneately cuneatic cuneator cuneiform cuneiformist cuneocuboid cuneonavicular cuneoscaphoid cunette cuneus cungeboi cunicular cuniculus cunila cunjah cunjer cunjevoi cunner cunnilinctus cunnilingus cunning Cunninghamia cunningly cunningness Cunonia Cunoniaceae cunoniaceous cunye Cunza Cuon cuorin cup Cupania cupay cupbearer cupboard cupcake cupel cupeler cupellation cupflower cupful Cuphea cuphead cupholder Cupid cupidinous cupidity cupidon cupidone cupless cupmaker cupmaking cupman cupmate cupola cupolaman cupolar cupolated cupped cupper cupping cuppy cuprammonia cuprammonium cupreine cuprene cupreous Cupressaceae cupressineous Cupressinoxylon Cupressus cupric cupride cupriferous cuprite cuproammonium cuprobismutite cuprocyanide cuprodescloizite cuproid cuproiodargyrite cupromanganese cupronickel cuproplumbite cuproscheelite cuprose cuprosilicon cuprotungstite cuprous cuprum cupseed cupstone cupula cupulate cupule Cupuliferae cupuliferous cupuliform cur curability curable curableness curably curacao curacy curare curarine curarization curarize curassow curatage curate curatel curateship curatess curatial curatic curation curative curatively curativeness curatize curatolatry curator curatorial curatorium curatorship curatory curatrix Curavecan curb curbable curber curbing curbless curblike curbstone curbstoner curby curcas curch curcuddoch Curculio curculionid Curculionidae curculionist Curcuma curcumin curd curdiness curdle curdler curdly curdwort curdy cure cureless curelessly curemaster curer curettage curette curettement curfew curial curialism curialist curialistic curiality curiate Curiatii curiboca curie curiescopy curietherapy curin curine curing curio curiologic curiologically curiologics curiology curiomaniac curiosa curiosity curioso curious curiously curiousness curite Curitis curium curl curled curledly curledness curler curlew curlewberry curlicue curliewurly curlike curlily curliness curling curlingly curlpaper curly curlycue curlyhead curlylocks curmudgeon curmudgeonery curmudgeonish curmudgeonly curmurring curn curney curnock curple curr currach currack curragh currant curratow currawang currency current currently currentness currentwise curricle curricula curricular curricularization curricularize curriculum curried currier curriery currish currishly currishness curry currycomb curryfavel Cursa cursal curse cursed cursedly cursedness curser curship cursitor cursive cursively cursiveness cursor cursorary Cursores Cursoria cursorial Cursoriidae cursorily cursoriness cursorious Cursorius cursory curst curstful curstfully curstly curstness cursus Curt curt curtail curtailed curtailedly curtailer curtailment curtain curtaining curtainless curtainwise curtal Curtana curtate curtation curtesy curtilage Curtis Curtise curtly curtness curtsy curua curuba Curucaneca Curucanecan curucucu curule Curuminaca Curuminacan Curupira cururo curvaceous curvaceousness curvacious curvant curvate curvation curvature curve curved curvedly curvedness curver curvesome curvesomeness curvet curvicaudate curvicostate curvidentate curvifoliate curviform curvilineal curvilinear curvilinearity curvilinearly curvimeter curvinervate curvinerved curvirostral Curvirostres curviserial curvital curvity curvograph curvometer curvous curvulate curvy curwhibble curwillet cuscohygrine cusconine Cuscus cuscus Cuscuta Cuscutaceae cuscutaceous cusec cuselite cush cushag cushat cushaw cushewbird cushion cushioned cushionflower cushionless cushionlike cushiony Cushite Cushitic cushlamochree cushy cusie cusinero cusk cusp cuspal cusparidine cusparine cuspate cusped cuspid cuspidal cuspidate cuspidation cuspidine cuspidor cuspule cuss cussed cussedly cussedness cusser cusso custard custerite custodee custodes custodial custodiam custodian custodianship custodier custody custom customable customarily customariness customary customer customhouse customs custumal cut cutaneal cutaneous cutaneously cutaway cutback cutch cutcher cutcherry cute cutely cuteness Cuterebra Cuthbert cutheal cuticle cuticolor cuticula cuticular cuticularization cuticularize cuticulate cutidure cutie cutification cutigeral cutin cutinization cutinize cutireaction cutis cutisector Cutiterebra cutitis cutization cutlass cutler cutleress Cutleria Cutleriaceae cutleriaceous Cutleriales cutlery cutlet cutling cutlips cutocellulose cutoff cutout cutover cutpurse cuttable cuttage cuttail cuttanee cutted cutter cutterhead cutterman cutthroat cutting cuttingly cuttingness cuttle cuttlebone cuttlefish cuttler cuttoo cutty cuttyhunk cutup cutwater cutweed cutwork cutworm cuvette Cuvierian cuvy cuya Cuzceno cwierc cwm cyamelide Cyamus cyan cyanacetic cyanamide cyananthrol Cyanastraceae Cyanastrum cyanate cyanaurate cyanauric cyanbenzyl cyancarbonic Cyanea cyanean cyanemia cyaneous cyanephidrosis cyanformate cyanformic cyanhidrosis cyanhydrate cyanhydric cyanhydrin cyanic cyanicide cyanidation cyanide cyanidin cyanidine cyanidrosis cyanimide cyanin cyanine cyanite cyanize cyanmethemoglobin cyanoacetate cyanoacetic cyanoaurate cyanoauric cyanobenzene cyanocarbonic cyanochlorous cyanochroia cyanochroic Cyanocitta cyanocrystallin cyanoderma cyanogen cyanogenesis cyanogenetic cyanogenic cyanoguanidine cyanohermidin cyanohydrin cyanol cyanole cyanomaclurin cyanometer cyanomethaemoglobin cyanomethemoglobin cyanometric cyanometry cyanopathic cyanopathy cyanophile cyanophilous cyanophoric cyanophose Cyanophyceae cyanophycean cyanophyceous cyanophycin cyanopia cyanoplastid cyanoplatinite cyanoplatinous cyanopsia cyanose cyanosed cyanosis Cyanospiza cyanotic cyanotrichite cyanotype cyanuramide cyanurate cyanuret cyanuric cyanurine cyanus cyaphenine cyath Cyathaspis Cyathea Cyatheaceae cyatheaceous cyathiform cyathium cyathoid cyatholith Cyathophyllidae cyathophylline cyathophylloid Cyathophyllum cyathos cyathozooid cyathus cybernetic cyberneticist cybernetics Cybister cycad Cycadaceae cycadaceous Cycadales cycadean cycadeoid Cycadeoidea cycadeous cycadiform cycadlike cycadofilicale Cycadofilicales Cycadofilices cycadofilicinean Cycadophyta Cycas Cycladic cyclamen cyclamin cyclamine cyclammonium cyclane Cyclanthaceae cyclanthaceous Cyclanthales Cyclanthus cyclar cyclarthrodial cyclarthrsis cyclas cycle cyclecar cycledom cyclene cycler cyclesmith Cycliae cyclian cyclic cyclical cyclically cyclicism cyclide cycling cyclism cyclist cyclistic cyclitic cyclitis cyclization cyclize cycloalkane Cyclobothra cyclobutane cyclocoelic cyclocoelous Cycloconium cyclodiolefin cycloganoid Cycloganoidei cyclogram cyclograph cyclographer cycloheptane cycloheptanone cyclohexane cyclohexanol cyclohexanone cyclohexene cyclohexyl cycloid cycloidal cycloidally cycloidean Cycloidei cycloidian cycloidotrope cyclolith Cycloloma cyclomania cyclometer cyclometric cyclometrical cyclometry Cyclomyaria cyclomyarian cyclonal cyclone cyclonic cyclonical cyclonically cyclonist cyclonite cyclonologist cyclonology cyclonometer cyclonoscope cycloolefin cycloparaffin cyclope Cyclopean cyclopean cyclopedia cyclopedic cyclopedical cyclopedically cyclopedist cyclopentadiene cyclopentane cyclopentanone cyclopentene Cyclopes cyclopes cyclophoria cyclophoric Cyclophorus cyclophrenia cyclopia Cyclopic cyclopism cyclopite cycloplegia cycloplegic cyclopoid cyclopropane Cyclops Cyclopteridae cyclopteroid cyclopterous cyclopy cyclorama cycloramic Cyclorrhapha cyclorrhaphous cycloscope cyclose cyclosis cyclospermous Cyclospondyli cyclospondylic cyclospondylous Cyclosporales Cyclosporeae Cyclosporinae cyclosporous Cyclostoma Cyclostomata cyclostomate Cyclostomatidae cyclostomatous cyclostome Cyclostomes Cyclostomi Cyclostomidae cyclostomous cyclostrophic cyclostyle Cyclotella cyclothem cyclothure cyclothurine Cyclothurus cyclothyme cyclothymia cyclothymiac cyclothymic cyclotome cyclotomic cyclotomy Cyclotosaurus cyclotron cyclovertebral cyclus Cydippe cydippian cydippid Cydippida Cydonia Cydonian cydonium cyesiology cyesis cygneous cygnet Cygnid Cygninae cygnine Cygnus cyke cylinder cylindered cylinderer cylinderlike cylindraceous cylindrarthrosis Cylindrella cylindrelloid cylindrenchyma cylindric cylindrical cylindricality cylindrically cylindricalness cylindricity cylindricule cylindriform cylindrite cylindrocellular cylindrocephalic cylindroconical cylindroconoidal cylindrocylindric cylindrodendrite cylindrograph cylindroid cylindroidal cylindroma cylindromatous cylindrometric cylindroogival Cylindrophis Cylindrosporium cylindruria cylix Cyllenian Cyllenius cyllosis cyma cymagraph cymaphen cymaphyte cymaphytic cymaphytism cymar cymation cymatium cymba cymbaeform cymbal Cymbalaria cymbaleer cymbaler cymbaline cymbalist cymballike cymbalo cymbalon cymbate Cymbella cymbiform Cymbium cymbling cymbocephalic cymbocephalous cymbocephaly Cymbopogon cyme cymelet cymene cymiferous cymling Cymodoceaceae cymogene cymograph cymographic cymoid Cymoidium cymometer cymophane cymophanous cymophenol cymoscope cymose cymosely cymotrichous cymotrichy cymous Cymraeg Cymric Cymry cymule cymulose cynanche Cynanchum cynanthropy Cynara cynaraceous cynarctomachy cynareous cynaroid cynebot cynegetic cynegetics cynegild cynhyena Cynias cyniatria cyniatrics cynic cynical cynically cynicalness cynicism cynicist cynipid Cynipidae cynipidous cynipoid Cynipoidea Cynips cynism cynocephalic cynocephalous cynocephalus cynoclept Cynocrambaceae cynocrambaceous Cynocrambe Cynodon cynodont Cynodontia Cynogale cynogenealogist cynogenealogy Cynoglossum Cynognathus cynography cynoid Cynoidea cynology Cynomoriaceae cynomoriaceous Cynomorium Cynomorpha cynomorphic cynomorphous Cynomys cynophile cynophilic cynophilist cynophobe cynophobia Cynopithecidae cynopithecoid cynopodous cynorrhodon Cynosarges Cynoscion Cynosura cynosural cynosure Cynosurus cynotherapy Cynoxylon Cynthia Cynthian Cynthiidae Cynthius cyp Cyperaceae cyperaceous Cyperus cyphella cyphellate Cyphomandra cyphonautes cyphonism Cypraea cypraeid Cypraeidae cypraeiform cypraeoid cypre cypres cypress cypressed cypressroot Cypria Cyprian Cyprididae Cypridina Cypridinidae cypridinoid Cyprina cyprine cyprinid Cyprinidae cypriniform cyprinine cyprinodont Cyprinodontes Cyprinodontidae cyprinodontoid cyprinoid Cyprinoidea cyprinoidean Cyprinus Cypriote Cypripedium Cypris cypsela Cypseli Cypselid Cypselidae cypseliform Cypseliformes cypseline cypseloid cypselomorph Cypselomorphae cypselomorphic cypselous Cypselus cyptozoic Cyrano Cyrenaic Cyrenaicism Cyrenian Cyril Cyrilla Cyrillaceae cyrillaceous Cyrillian Cyrillianism Cyrillic cyriologic cyriological Cyrtandraceae Cyrtidae cyrtoceracone Cyrtoceras cyrtoceratite cyrtoceratitic cyrtograph cyrtolite cyrtometer Cyrtomium cyrtopia cyrtosis Cyrus cyrus cyst cystadenoma cystadenosarcoma cystal cystalgia cystamine cystaster cystatrophia cystatrophy cystectasia cystectasy cystectomy cysted cysteine cysteinic cystelcosis cystenchyma cystenchymatous cystencyte cysterethism cystic cysticarpic cysticarpium cysticercoid cysticercoidal cysticercosis cysticercus cysticolous cystid Cystidea cystidean cystidicolous cystidium cystiferous cystiform cystigerous Cystignathidae cystignathine cystine cystinuria cystirrhea cystis cystitis cystitome cystoadenoma cystocarcinoma cystocarp cystocarpic cystocele cystocolostomy cystocyte cystodynia cystoelytroplasty cystoenterocele cystoepiplocele cystoepithelioma cystofibroma Cystoflagellata cystoflagellate cystogenesis cystogenous cystogram cystoid Cystoidea cystoidean cystolith cystolithectomy cystolithiasis cystolithic cystoma cystomatous cystomorphous cystomyoma cystomyxoma Cystonectae cystonectous cystonephrosis cystoneuralgia cystoparalysis Cystophora cystophore cystophotography cystophthisis cystoplasty cystoplegia cystoproctostomy Cystopteris cystoptosis Cystopus cystopyelitis cystopyelography cystopyelonephritis cystoradiography cystorrhagia cystorrhaphy cystorrhea cystosarcoma cystoschisis cystoscope cystoscopic cystoscopy cystose cystospasm cystospastic cystospore cystostomy cystosyrinx cystotome cystotomy cystotrachelotomy cystoureteritis cystourethritis cystous cytase cytasic Cytherea Cytherean Cytherella Cytherellidae Cytinaceae cytinaceous Cytinus cytioderm cytisine Cytisus cytitis cytoblast cytoblastema cytoblastemal cytoblastematous cytoblastemic cytoblastemous cytochemistry cytochrome cytochylema cytocide cytoclasis cytoclastic cytococcus cytocyst cytode cytodendrite cytoderm cytodiagnosis cytodieresis cytodieretic cytogamy cytogene cytogenesis cytogenetic cytogenetical cytogenetically cytogeneticist cytogenetics cytogenic cytogenous cytogeny cytoglobin cytohyaloplasm cytoid cytokinesis cytolist cytologic cytological cytologically cytologist cytology cytolymph cytolysin cytolysis cytolytic cytoma cytomere cytometer cytomicrosome cytomitome cytomorphosis cyton cytoparaplastin cytopathologic cytopathological cytopathologically cytopathology Cytophaga cytophagous cytophagy cytopharynx cytophil cytophysics cytophysiology cytoplasm cytoplasmic cytoplast cytoplastic cytoproct cytopyge cytoreticulum cytoryctes cytosine cytosome Cytospora Cytosporina cytost cytostomal cytostome cytostroma cytostromatic cytotactic cytotaxis cytotoxic cytotoxin cytotrophoblast cytotrophy cytotropic cytotropism cytozoic cytozoon cytozymase cytozyme cytula Cyzicene cyzicene czar czardas czardom czarevitch czarevna czarian czaric czarina czarinian czarish czarism czarist czaristic czaritza czarowitch czarowitz czarship Czech Czechic Czechish Czechization Czechoslovak Czechoslovakian D d da daalder dab dabb dabba dabber dabble dabbler dabbling dabblingly dabblingness dabby dabchick Dabih Dabitis dablet daboia daboya dabster dace Dacelo Daceloninae dacelonine dachshound dachshund Dacian dacite dacitic dacker dacoit dacoitage dacoity dacryadenalgia dacryadenitis dacryagogue dacrycystalgia Dacrydium dacryelcosis dacryoadenalgia dacryoadenitis dacryoblenorrhea dacryocele dacryocyst dacryocystalgia dacryocystitis dacryocystoblennorrhea dacryocystocele dacryocystoptosis dacryocystorhinostomy dacryocystosyringotomy dacryocystotome dacryocystotomy dacryohelcosis dacryohemorrhea dacryolite dacryolith dacryolithiasis dacryoma dacryon dacryops dacryopyorrhea dacryopyosis dacryosolenitis dacryostenosis dacryosyrinx dacryuria Dactyl dactyl dactylar dactylate dactylic dactylically dactylioglyph dactylioglyphic dactylioglyphist dactylioglyphtic dactylioglyphy dactyliographer dactyliographic dactyliography dactyliology dactyliomancy dactylion dactyliotheca Dactylis dactylist dactylitic dactylitis dactylogram dactylograph dactylographic dactylography dactyloid dactylology dactylomegaly dactylonomy dactylopatagium Dactylopius dactylopodite dactylopore Dactylopteridae Dactylopterus dactylorhiza dactyloscopic dactyloscopy dactylose dactylosternal dactylosymphysis dactylotheca dactylous dactylozooid dactylus Dacus dacyorrhea dad Dada dada Dadaism Dadaist dadap Dadayag dadder daddle daddock daddocky daddy daddynut dade dadenhudd dado Dadoxylon Dadu daduchus Dadupanthi dae Daedal daedal Daedalea Daedalean Daedalian Daedalic Daedalidae Daedalist daedaloid Daedalus daemon Daemonelix daemonic daemonurgist daemonurgy daemony daer daff daffery daffing daffish daffle daffodil daffodilly daffy daffydowndilly Dafla daft daftberry daftlike daftly daftness dag dagaba dagame dagassa Dagbamba Dagbane dagesh Dagestan dagga dagger daggerbush daggered daggerlike daggerproof daggers daggle daggletail daggletailed daggly daggy daghesh daglock Dagmar Dago dagoba Dagomba dags Daguerrean daguerreotype daguerreotyper daguerreotypic daguerreotypist daguerreotypy dah dahabeah Dahlia Dahoman Dahomeyan dahoon Daibutsu daidle daidly Daijo daiker daikon Dail Dailamite dailiness daily daimen daimiate daimio daimon daimonic daimonion daimonistic daimonology dain daincha dainteth daintify daintihood daintily daintiness daintith dainty Daira daira dairi dairy dairying dairymaid dairyman dairywoman dais daisied daisy daisybush daitya daiva dak daker Dakhini dakir Dakota daktylon daktylos dal dalar Dalarnian Dalbergia Dalcassian Dale dale Dalea Dalecarlian daleman daler dalesfolk dalesman dalespeople daleswoman daleth dali Dalibarda dalk dallack dalle dalles dalliance dallier dally dallying dallyingly Dalmania Dalmanites Dalmatian Dalmatic dalmatic Dalradian dalt dalteen Dalton dalton Daltonian Daltonic Daltonism Daltonist dam dama damage damageability damageable damageableness damageably damagement damager damages damagingly daman Damara Damascene damascene damascened damascener damascenine Damascus damask damaskeen damasse damassin Damayanti dambonitol dambose dambrod dame damenization damewort Damgalnunna Damia damiana Damianist damie damier damine damkjernite damlike dammar Dammara damme dammer dammish damn damnability damnable damnableness damnably damnation damnatory damned damner damnification damnify Damnii damning damningly damningness damnonians Damnonii damnous damnously Damoclean Damocles Damoetas damoiseau Damon Damone damonico damourite damp dampang damped dampen dampener damper damping dampish dampishly dampishness damply dampness dampproof dampproofer dampproofing dampy damsel damselfish damselhood damson Dan dan Dana Danaan Danagla Danai Danaid danaid Danaidae danaide Danaidean Danainae danaine Danais danaite Danakil danalite danburite dancalite dance dancer danceress dancery dancette dancing dancingly dand danda dandelion dander dandiacal dandiacally dandically dandification dandify dandilly dandily dandiprat dandizette dandle dandler dandling dandlingly dandruff dandruffy dandy dandydom dandyish dandyism dandyize dandyling Dane Daneball Daneflower Danegeld Danelaw Daneweed Danewort dang danger dangerful dangerfully dangerless dangerous dangerously dangerousness dangersome dangle dangleberry danglement dangler danglin dangling danglingly Dani Danian Danic danicism Daniel Daniele Danielic Danielle Daniglacial danio Danish Danism Danite Danization Danize dank Dankali dankish dankishness dankly dankness danli Dannebrog dannemorite danner Dannie dannock Danny danoranja dansant danseuse danta Dantean Dantesque Danthonia Dantist Dantology Dantomania danton Dantonesque Dantonist Dantophilist Dantophily Danube Danubian Danuri Danzig Danziger dao daoine dap Dapedium Dapedius Daphnaceae Daphne Daphnean Daphnephoria daphnetin Daphnia daphnin daphnioid Daphnis daphnoid dapicho dapico dapifer dapper dapperling dapperly dapperness dapple dappled dar darabukka darac daraf Darapti darat darbha darby Darbyism Darbyite Darci Dard Dardan dardanarius Dardani dardanium dardaol Dardic Dardistan dare dareall daredevil daredevilism daredevilry daredeviltry dareful Daren darer Dares daresay darg dargah darger Darghin Dargo dargsman dargue dari daribah daric Darien Darii Darin daring daringly daringness dariole Darius Darjeeling dark darken darkener darkening darkful darkhearted darkheartedness darkish darkishness darkle darkling darklings darkly darkmans darkness darkroom darkskin darksome darksomeness darky darling darlingly darlingness Darlingtonia darn darnation darned darnel darner darnex darning daroga daroo darr darrein Darrell Darren Darryl darshana Darsonval Darsonvalism darst dart Dartagnan dartars dartboard darter darting dartingly dartingness dartle dartlike dartman Dartmoor dartoic dartoid dartos dartre dartrose dartrous darts dartsman Darwinian Darwinical Darwinically Darwinism Darwinist Darwinistic Darwinite Darwinize Daryl darzee das Daschagga dash dashboard dashed dashedly dashee dasheen dasher dashing dashingly dashmaker Dashnak Dashnakist Dashnaktzutiun dashplate dashpot dashwheel dashy dasi Dasiphora dasnt dassie dassy dastard dastardize dastardliness dastardly dastur dasturi Dasya Dasyatidae Dasyatis Dasycladaceae dasycladaceous Dasylirion dasymeter dasypaedal dasypaedes dasypaedic Dasypeltis dasyphyllous Dasypodidae dasypodoid Dasyprocta Dasyproctidae dasyproctine Dasypus Dasystephana dasyure Dasyuridae dasyurine dasyuroid Dasyurus Dasyus data datable datableness datably dataria datary datch datcha date dateless datemark dater datil dating dation Datisca Datiscaceae datiscaceous datiscetin datiscin datiscoside Datisi Datism datival dative datively dativogerundial datolite datolitic dattock datum Datura daturic daturism daub daube Daubentonia Daubentoniidae dauber daubery daubing daubingly daubreeite daubreelite daubster dauby Daucus daud daughter daughterhood daughterkin daughterless daughterlike daughterliness daughterling daughterly daughtership Daulias daunch dauncy Daunii daunt daunter daunting dauntingly dauntingness dauntless dauntlessly dauntlessness daunton dauphin dauphine dauphiness Daur Dauri daut dautie dauw davach Davallia Dave daven davenport daver daverdy David Davidian Davidic Davidical Davidist davidsonite Daviesia daviesite davit davoch Davy davy davyne daw dawdle dawdler dawdling dawdlingly dawdy dawish dawkin Dawn dawn dawning dawnlight dawnlike dawnstreak dawnward dawny Dawson Dawsonia Dawsoniaceae dawsoniaceous dawsonite dawtet dawtit dawut day dayabhaga Dayakker dayal daybeam dayberry dayblush daybook daybreak daydawn daydream daydreamer daydreamy daydrudge dayflower dayfly daygoing dayless daylight daylit daylong dayman daymare daymark dayroom days dayshine daysman dayspring daystar daystreak daytale daytide daytime daytimes dayward daywork dayworker daywrit Daza daze dazed dazedly dazedness dazement dazingly dazy dazzle dazzlement dazzler dazzlingly de deacetylate deacetylation deacidification deacidify deacon deaconal deaconate deaconess deaconhood deaconize deaconry deaconship deactivate deactivation dead deadbeat deadborn deadcenter deaden deadener deadening deader deadeye deadfall deadhead deadheadism deadhearted deadheartedly deadheartedness deadhouse deading deadish deadishly deadishness deadlatch deadlight deadlily deadline deadliness deadlock deadly deadman deadmelt deadness deadpan deadpay deadtongue deadwood deadwort deaerate deaeration deaerator deaf deafen deafening deafeningly deafforest deafforestation deafish deafly deafness deair deal dealable dealate dealated dealation dealbate dealbation dealbuminize dealcoholist dealcoholization dealcoholize dealer dealerdom dealership dealfish dealing dealkalize dealkylate dealkylation dealt deambulation deambulatory deamidase deamidate deamidation deamidization deamidize deaminase deaminate deamination deaminization deaminize deammonation Dean dean deanathematize deaner deanery deaness deanimalize deanship deanthropomorphic deanthropomorphism deanthropomorphization deanthropomorphize deappetizing deaquation dear dearborn dearie dearly dearness dearomatize dearsenicate dearsenicator dearsenicize dearth dearthfu dearticulation dearworth dearworthily dearworthiness deary deash deasil deaspirate deaspiration deassimilation death deathbed deathblow deathday deathful deathfully deathfulness deathify deathin deathiness deathless deathlessly deathlessness deathlike deathliness deathling deathly deathroot deathshot deathsman deathtrap deathward deathwards deathwatch deathweed deathworm deathy deave deavely Deb deb debacle debadge debamboozle debar debarbarization debarbarize debark debarkation debarkment debarment debarrance debarrass debarration debase debasedness debasement debaser debasingly debatable debate debateful debatefully debatement debater debating debatingly debauch debauched debauchedly debauchedness debauchee debaucher debauchery debauchment Debbie Debby debby debeige debellate debellation debellator deben debenture debentured debenzolize Debi debile debilissima debilitant debilitate debilitated debilitation debilitative debility debind debit debiteuse debituminization debituminize deblaterate deblateration deboistly deboistness debonair debonaire debonairity debonairly debonairness debonnaire Deborah debord debordment debosh deboshed debouch debouchment debride debrief debris debrominate debromination debruise debt debtee debtful debtless debtor debtorship debullition debunk debunker debunkment debus Debussyan Debussyanize debut debutant debutante decachord decad decadactylous decadal decadally decadarch decadarchy decadary decadation decade decadence decadency decadent decadentism decadently decadescent decadianome decadic decadist decadrachm decadrachma decaesarize decaffeinate decaffeinize decafid decagon decagonal decagram decagramme decahedral decahedron decahydrate decahydrated decahydronaphthalene Decaisnea decal decalcification decalcifier decalcify decalcomania decalcomaniac decalescence decalescent Decalin decaliter decalitre decalobate Decalogist Decalogue decalvant decalvation decameral Decameron Decameronic decamerous decameter decametre decamp decampment decan decanal decanally decanate decane decangular decani decanically decannulation decanonization decanonize decant decantate decantation decanter decantherous decap decapetalous decaphyllous decapitable decapitalization decapitalize decapitate decapitation decapitator decapod Decapoda decapodal decapodan decapodiform decapodous decapper decapsulate decapsulation decarbonate decarbonator decarbonization decarbonize decarbonized decarbonizer decarboxylate decarboxylation decarboxylization decarboxylize decarburation decarburization decarburize decarch decarchy decardinalize decare decarhinus decarnate decarnated decart decasemic decasepalous decaspermal decaspermous decast decastellate decastere decastich decastyle decasualization decasualize decasyllabic decasyllable decasyllabon decate decathlon decatholicize decatize decatizer decatoic decator decatyl decaudate decaudation decay decayable decayed decayedness decayer decayless decease deceased decedent deceit deceitful deceitfully deceitfulness deceivability deceivable deceivableness deceivably deceive deceiver deceiving deceivingly decelerate deceleration decelerator decelerometer December Decemberish Decemberly Decembrist decemcostate decemdentate decemfid decemflorous decemfoliate decemfoliolate decemjugate decemlocular decempartite decempeda decempedal decempedate decempennate decemplex decemplicate decempunctate decemstriate decemuiri decemvir decemviral decemvirate decemvirship decenary decence decency decene decennal decennary decennia decenniad decennial decennially decennium decennoval decent decenter decently decentness decentralism decentralist decentralization decentralize decentration decentre decenyl decephalization deceptibility deceptible deception deceptious deceptiously deceptitious deceptive deceptively deceptiveness deceptivity decerebrate decerebration decerebrize decern decerniture decernment decess decession dechemicalization dechemicalize dechenite Dechlog dechlore dechlorination dechoralize dechristianization dechristianize Decian deciare deciatine decibel deciceronize decidable decide decided decidedly decidedness decider decidingly decidua decidual deciduary Deciduata deciduate deciduitis deciduoma deciduous deciduously deciduousness decigram decigramme decil decile deciliter decillion decillionth decima decimal decimalism decimalist decimalization decimalize decimally decimate decimation decimator decimestrial decimeter decimolar decimole decimosexto Decimus decinormal decipher decipherability decipherable decipherably decipherer decipherment decipium decipolar decision decisional decisive decisively decisiveness decistere decitizenize Decius decivilization decivilize deck decke decked deckel decker deckhead deckhouse deckie decking deckle deckload deckswabber declaim declaimant declaimer declamation declamatoriness declamatory declarable declarant declaration declarative declaratively declarator declaratorily declaratory declare declared declaredly declaredness declarer declass declassicize declassify declension declensional declensionally declericalize declimatize declinable declinal declinate declination declinational declinatory declinature decline declined declinedness decliner declinograph declinometer declivate declive declivitous declivity declivous declutch decoagulate decoagulation decoat decocainize decoct decoctible decoction decoctive decoctum decode Decodon decohere decoherence decoherer decohesion decoic decoke decollate decollated decollation decollator decolletage decollete decolor decolorant decolorate decoloration decolorimeter decolorization decolorize decolorizer decolour decommission decompensate decompensation decomplex decomponible decomposability decomposable decompose decomposed decomposer decomposite decomposition decomposure decompound decompoundable decompoundly decompress decompressing decompression decompressive deconcatenate deconcentrate deconcentration deconcentrator decongestive deconsecrate deconsecration deconsider deconsideration decontaminate decontamination decontrol deconventionalize decopperization decopperize decorability decorable decorably decorament decorate decorated decoration decorationist decorative decoratively decorativeness decorator decoratory decorist decorous decorously decorousness decorrugative decorticate decortication decorticator decorticosis decorum decostate decoy decoyer decoyman decrassify decream decrease decreaseless decreasing decreasingly decreation decreative decree decreeable decreement decreer decreet decrement decrementless decremeter decrepit decrepitate decrepitation decrepitly decrepitness decrepitude decrescence decrescendo decrescent decretal decretalist decrete decretist decretive decretively decretorial decretorily decretory decretum decrew decrial decried decrier decrown decrudescence decrustation decry decrystallization decubital decubitus decultivate deculturate decuman decumana decumanus Decumaria decumary decumbence decumbency decumbent decumbently decumbiture decuple decuplet decuria decurion decurionate decurrence decurrency decurrent decurrently decurring decursion decursive decursively decurtate decurvation decurvature decurve decury decus decussate decussated decussately decussation decussis decussorium decyl decylene decylenic decylic decyne Dedan Dedanim Dedanite dedecorate dedecoration dedecorous dedendum dedentition dedicant dedicate dedicatee dedication dedicational dedicative dedicator dedicatorial dedicatorily dedicatory dedicature dedifferentiate dedifferentiation dedimus deditician dediticiancy dedition dedo dedoggerelize dedogmatize dedolation deduce deducement deducibility deducible deducibleness deducibly deducive deduct deductible deduction deductive deductively deductory deduplication dee deed deedbox deedeed deedful deedfully deedily deediness deedless deedy deem deemer deemie deemster deemstership deep deepen deepener deepening deepeningly Deepfreeze deeping deepish deeplier deeply deepmost deepmouthed deepness deepsome deepwater deepwaterman deer deerberry deerdog deerdrive deerfood deerhair deerherd deerhorn deerhound deerlet deermeat deerskin deerstalker deerstalking deerstand deerstealer deertongue deerweed deerwood deeryard deevey deevilick deface defaceable defacement defacer defacing defacingly defalcate defalcation defalcator defalk defamation defamatory defame defamed defamer defamingly defassa defat default defaultant defaulter defaultless defaulture defeasance defeasanced defease defeasibility defeasible defeasibleness defeat defeater defeatism defeatist defeatment defeature defecant defecate defecation defecator defect defectibility defectible defection defectionist defectious defective defectively defectiveness defectless defectology defector defectoscope defedation defeminize defence defend defendable defendant defender defendress defenestration defensative defense defenseless defenselessly defenselessness defensibility defensible defensibleness defensibly defension defensive defensively defensiveness defensor defensorship defensory defer deferable deference deferent deferentectomy deferential deferentiality deferentially deferentitis deferment deferrable deferral deferred deferrer deferrization deferrize defervesce defervescence defervescent defeudalize defiable defial defiance defiant defiantly defiantness defiber defibrinate defibrination defibrinize deficience deficiency deficient deficiently deficit defier defiguration defilade defile defiled defiledness defilement defiler defiliation defiling defilingly definability definable definably define defined definedly definement definer definiendum definiens definite definitely definiteness definition definitional definitiones definitive definitively definitiveness definitization definitize definitor definitude deflagrability deflagrable deflagrate deflagration deflagrator deflate deflation deflationary deflationist deflator deflect deflectable deflected deflection deflectionization deflectionize deflective deflectometer deflector deflesh deflex deflexibility deflexible deflexion deflexure deflocculant deflocculate deflocculation deflocculator deflorate defloration deflorescence deflower deflowerer defluent defluous defluvium defluxion defoedation defog defoliage defoliate defoliated defoliation defoliator deforce deforcement deforceor deforcer deforciant deforest deforestation deforester deform deformability deformable deformalize deformation deformational deformative deformed deformedly deformedness deformer deformeter deformism deformity defortify defoul defraud defraudation defrauder defraudment defray defrayable defrayal defrayer defrayment defreeze defrication defrock defrost defroster deft defterdar deftly deftness defunct defunction defunctionalization defunctionalize defunctness defuse defusion defy defyingly deg deganglionate degarnish degas degasification degasifier degasify degasser degauss degelatinize degelation degeneracy degeneralize degenerate degenerately degenerateness degeneration degenerationist degenerative degenerescence degenerescent degentilize degerm degerminate degerminator degged degger deglaciation deglaze deglutinate deglutination deglutition deglutitious deglutitive deglutitory deglycerin deglycerine degorge degradable degradand degradation degradational degradative degrade degraded degradedly degradedness degradement degrader degrading degradingly degradingness degraduate degraduation degrain degrease degreaser degree degreeless degreewise degression degressive degressively degu Deguelia deguelin degum degummer degust degustation dehair dehairer Dehaites deheathenize dehematize dehepatize Dehgan dehisce dehiscence dehiscent dehistoricize Dehkan dehnstufe dehonestate dehonestation dehorn dehorner dehors dehort dehortation dehortative dehortatory dehorter dehull dehumanization dehumanize dehumidification dehumidifier dehumidify dehusk Dehwar dehydrant dehydrase dehydrate dehydration dehydrator dehydroascorbic dehydrocorydaline dehydrofreezing dehydrogenase dehydrogenate dehydrogenation dehydrogenization dehydrogenize dehydromucic dehydrosparteine dehypnotize deice deicer deicidal deicide deictic deictical deictically deidealize Deidesheimer deific deifical deification deificatory deifier deiform deiformity deify deign Deimos deincrustant deindividualization deindividualize deindividuate deindustrialization deindustrialize deink Deino Deinocephalia Deinoceras Deinodon Deinodontidae deinos Deinosauria Deinotherium deinsularize deintellectualization deintellectualize deionize Deipara deiparous Deiphobus deipnodiplomatic deipnophobia deipnosophism deipnosophist deipnosophistic deipotent Deirdre deiseal deisidaimonia deism deist deistic deistical deistically deisticalness deity deityship deject dejecta dejected dejectedly dejectedness dejectile dejection dejectly dejectory dejecture dejerate dejeration dejerator dejeune dejeuner dejunkerize Dekabrist dekaparsec dekapode dekko dekle deknight Del delabialization delabialize delacrimation delactation delaine delaminate delamination delapse delapsion delate delater delatinization delatinize delation delator delatorian Delaware Delawarean delawn delay delayable delayage delayer delayful delaying delayingly Delbert dele delead delectability delectable delectableness delectably delectate delectation delectus delegable delegacy delegalize delegant delegate delegatee delegateship delegation delegative delegator delegatory delenda Delesseria Delesseriaceae delesseriaceous delete deleterious deleteriously deleteriousness deletion deletive deletory delf delft delftware Delhi Delia Delian deliberalization deliberalize deliberant deliberate deliberately deliberateness deliberation deliberative deliberatively deliberativeness deliberator delible delicacy delicate delicately delicateness delicatesse delicatessen delicense Delichon delicioso Delicious delicious deliciously deliciousness delict delictum deligated deligation delight delightable delighted delightedly delightedness delighter delightful delightfully delightfulness delighting delightingly delightless delightsome delightsomely delightsomeness delignate delignification Delilah delime delimit delimitate delimitation delimitative delimiter delimitize delineable delineament delineate delineation delineative delineator delineatory delineature delinquence delinquency delinquent delinquently delint delinter deliquesce deliquescence deliquescent deliquium deliracy delirament deliration deliriant delirifacient delirious deliriously deliriousness delirium delitescence delitescency delitescent deliver deliverable deliverance deliverer deliveress deliveror delivery deliveryman dell Della dellenite Delobranchiata delocalization delocalize delomorphic delomorphous deloul delouse delphacid Delphacidae Delphian Delphin Delphinapterus delphine delphinic Delphinid Delphinidae delphinin delphinine delphinite Delphinium Delphinius delphinoid Delphinoidea delphinoidine Delphinus delphocurarine Delsarte Delsartean Delsartian Delta delta deltafication deltaic deltal deltarium deltation delthyrial delthyrium deltic deltidial deltidium deltiology deltohedron deltoid deltoidal delubrum deludable delude deluder deludher deluding deludingly deluge deluminize delundung delusion delusional delusionist delusive delusively delusiveness delusory deluster deluxe delve delver demagnetizable demagnetization demagnetize demagnetizer demagog demagogic demagogical demagogically demagogism demagogue demagoguery demagogy demal demand demandable demandant demander demanding demandingly demanganization demanganize demantoid demarcate demarcation demarcator demarch demarchy demargarinate demark demarkation demast dematerialization dematerialize Dematiaceae dematiaceous deme demean demeanor demegoric demency dement dementate dementation demented dementedly dementedness dementholize dementia demephitize demerit demeritorious demeritoriously Demerol demersal demersed demersion demesman demesmerize demesne demesnial demetallize demethylate demethylation Demetrian demetricize demi demiadult demiangel demiassignation demiatheism demiatheist demibarrel demibastion demibastioned demibath demibeast demibelt demibob demibombard demibrassart demibrigade demibrute demibuckram demicadence demicannon demicanon demicanton demicaponier demichamfron demicircle demicircular demicivilized demicolumn demicoronal demicritic demicuirass demiculverin demicylinder demicylindrical demidandiprat demideify demideity demidevil demidigested demidistance demiditone demidoctor demidog demidolmen demidome demieagle demifarthing demifigure demiflouncing demifusion demigardebras demigauntlet demigentleman demiglobe demigod demigoddess demigoddessship demigorge demigriffin demigroat demihag demihearse demiheavenly demihigh demihogshead demihorse demihuman demijambe demijohn demikindred demiking demilance demilancer demilawyer demilegato demilion demilitarization demilitarize demiliterate demilune demiluster demilustre demiman demimark demimentoniere demimetope demimillionaire demimondaine demimonde demimonk deminatured demineralization demineralize deminude deminudity demioctagonal demioctangular demiofficial demiorbit demiourgoi demiowl demiox demipagan demiparallel demipauldron demipectinate demipesade demipike demipillar demipique demiplacate demiplate demipomada demipremise demipremiss demipriest demipronation demipuppet demiquaver demiracle demiram demirelief demirep demirevetment demirhumb demirilievo demirobe demisability demisable demisacrilege demisang demisangue demisavage demise demiseason demisecond demisemiquaver demisemitone demisheath demishirt demisovereign demisphere demiss demission demissionary demissly demissness demissory demisuit demit demitasse demitint demitoilet demitone demitrain demitranslucence demitube demiturned demiurge demiurgeous demiurgic demiurgical demiurgically demiurgism demivambrace demivirgin demivoice demivol demivolt demivotary demiwivern demiwolf demnition demob demobilization demobilize democracy democrat democratian democratic democratical democratically democratifiable democratism democratist democratization democratize demodectic demoded Demodex Demodicidae Demodocus demodulation demodulator demogenic Demogorgon demographer demographic demographical demographically demographist demography demoid demoiselle demolish demolisher demolishment demolition demolitionary demolitionist demological demology Demon demon demonastery demoness demonetization demonetize demoniac demoniacal demoniacally demoniacism demonial demonian demonianism demoniast demonic demonical demonifuge demonish demonism demonist demonize demonkind demonland demonlike demonocracy demonograph demonographer demonography demonolater demonolatrous demonolatrously demonolatry demonologer demonologic demonological demonologically demonologist demonology demonomancy demonophobia demonry demonship demonstrability demonstrable demonstrableness demonstrably demonstrant demonstratable demonstrate demonstratedly demonstrater demonstration demonstrational demonstrationist demonstrative demonstratively demonstrativeness demonstrator demonstratorship demonstratory demophil demophilism demophobe Demophon Demophoon demoralization demoralize demoralizer demorphinization demorphism demos Demospongiae Demosthenean Demosthenic demote demotic demotics demotion demotist demount demountability demountable dempster demulce demulcent demulsibility demulsify demulsion demure demurely demureness demurity demurrable demurrage demurral demurrant demurrer demurring demurringly demutization demy demyship den denarcotization denarcotize denarius denaro denary denat denationalization denationalize denaturalization denaturalize denaturant denaturate denaturation denature denaturization denaturize denaturizer denazify denda dendrachate dendral Dendraspis dendraxon dendric dendriform dendrite Dendrites dendritic dendritical dendritically dendritiform Dendrium Dendrobates Dendrobatinae dendrobe Dendrobium Dendrocalamus Dendroceratina dendroceratine Dendrochirota dendrochronological dendrochronologist dendrochronology dendroclastic Dendrocoela dendrocoelan dendrocoele dendrocoelous Dendrocolaptidae dendrocolaptine Dendroctonus Dendrocygna dendrodont Dendrodus Dendroeca Dendrogaea Dendrogaean dendrograph dendrography Dendrohyrax Dendroica dendroid dendroidal Dendroidea Dendrolagus dendrolatry Dendrolene dendrolite dendrologic dendrological dendrologist dendrologous dendrology Dendromecon dendrometer dendron dendrophil dendrophile dendrophilous Dendropogon Dene dene Deneb Denebola denegate denegation denehole denervate denervation deneutralization dengue deniable denial denicotinize denier denierage denierer denigrate denigration denigrator denim Denis denitrate denitration denitrator denitrificant denitrification denitrificator denitrifier denitrify denitrize denization denizen denizenation denizenize denizenship Denmark dennet Dennis Dennstaedtia denominable denominate denomination denominational denominationalism denominationalist denominationalize denominationally denominative denominatively denominator denotable denotation denotative denotatively denotativeness denotatum denote denotement denotive denouement denounce denouncement denouncer dense densely densen denseness denshare densher denshire densification densifier densify densimeter densimetric densimetrically densimetry densitometer density dent dentagra dental dentale dentalgia Dentaliidae dentalism dentality Dentalium dentalization dentalize dentally dentaphone Dentaria dentary dentata dentate dentated dentately dentation dentatoangulate dentatocillitate dentatocostate dentatocrenate dentatoserrate dentatosetaceous dentatosinuate dentel dentelated dentelle dentelure denter dentex dentical denticate Denticeti denticle denticular denticulate denticulately denticulation denticule dentiferous dentification dentiform dentifrice dentigerous dentil dentilabial dentilated dentilation dentile dentilingual dentiloquist dentiloquy dentimeter dentin dentinal dentinalgia dentinasal dentine dentinitis dentinoblast dentinocemental dentinoid dentinoma dentiparous dentiphone dentiroster dentirostral dentirostrate Dentirostres dentiscalp dentist dentistic dentistical dentistry dentition dentoid dentolabial dentolingual dentonasal dentosurgical dentural denture denty denucleate denudant denudate denudation denudative denude denuder denumerable denumerably denumeral denumerant denumerantive denumeration denumerative denunciable denunciant denunciate denunciation denunciative denunciatively denunciator denunciatory denutrition deny denyingly deobstruct deobstruent deoccidentalize deoculate deodand deodara deodorant deodorization deodorize deodorizer deontological deontologist deontology deoperculate deoppilant deoppilate deoppilation deoppilative deordination deorganization deorganize deorientalize deorsumvergence deorsumversion deorusumduction deossification deossify deota deoxidant deoxidate deoxidation deoxidative deoxidator deoxidization deoxidize deoxidizer deoxygenate deoxygenation deoxygenization deozonization deozonize deozonizer depa depaganize depaint depancreatization depancreatize depark deparliament depart departed departer departisanize departition department departmental departmentalism departmentalization departmentalize departmentally departmentization departmentize departure depas depascent depass depasturable depasturage depasturation depasture depatriate depauperate depauperation depauperization depauperize depencil depend dependability dependable dependableness dependably dependence dependency dependent dependently depender depending dependingly depeople deperdite deperditely deperition depersonalization depersonalize depersonize depetalize depeter depetticoat dephase dephilosophize dephlegmate dephlegmation dephlegmatize dephlegmator dephlegmatory dephlegmedness dephlogisticate dephlogisticated dephlogistication dephosphorization dephosphorize dephysicalization dephysicalize depickle depict depicter depiction depictive depicture depiedmontize depigment depigmentate depigmentation depigmentize depilate depilation depilator depilatory depilitant depilous deplaceable deplane deplasmolysis deplaster deplenish deplete deplethoric depletion depletive depletory deploitation deplorability deplorable deplorableness deplorably deploration deplore deplored deploredly deploredness deplorer deploringly deploy deployment deplumate deplumated deplumation deplume deplump depoetize depoh depolarization depolarize depolarizer depolish depolishing depolymerization depolymerize depone deponent depopularize depopulate depopulation depopulative depopulator deport deportable deportation deportee deporter deportment deposable deposal depose deposer deposit depositary depositation depositee deposition depositional depositive depositor depository depositum depositure depot depotentiate depotentiation depravation deprave depraved depravedly depravedness depraver depravingly depravity deprecable deprecate deprecatingly deprecation deprecative deprecator deprecatorily deprecatoriness deprecatory depreciable depreciant depreciate depreciatingly depreciation depreciative depreciatively depreciator depreciatoriness depreciatory depredate depredation depredationist depredator depredatory depress depressant depressed depressibility depressible depressing depressingly depressingness depression depressive depressively depressiveness depressomotor depressor depreter deprint depriorize deprivable deprival deprivate deprivation deprivative deprive deprivement depriver deprovincialize depside depth depthen depthing depthless depthometer depthwise depullulation depurant depurate depuration depurative depurator depuratory depursement deputable deputation deputational deputationist deputationize deputative deputatively deputator depute deputize deputy deputyship dequeen derabbinize deracialize deracinate deracination deradelphus deradenitis deradenoncus derah deraign derail derailer derailment derange derangeable deranged derangement deranger derat derate derater derationalization derationalize deratization deray Derbend Derby derby derbylite dere deregister deregulationize dereism dereistic dereistically Derek derelict dereliction derelictly derelictness dereligion dereligionize derencephalocele derencephalus deresinate deresinize deric deride derider deridingly Deringa Deripia derisible derision derisive derisively derisiveness derisory derivability derivable derivably derival derivant derivate derivately derivation derivational derivationally derivationist derivatist derivative derivatively derivativeness derive derived derivedly derivedness deriver derm derma Dermacentor dermad dermahemia dermal dermalgia dermalith dermamyiasis dermanaplasty dermapostasis Dermaptera dermapteran dermapterous dermaskeleton dermasurgery dermatagra dermatalgia dermataneuria dermatatrophia dermatauxe dermathemia dermatic dermatine dermatitis Dermatobia dermatocele dermatocellulitis dermatoconiosis Dermatocoptes dermatocoptic dermatocyst dermatodynia dermatogen dermatoglyphics dermatograph dermatographia dermatography dermatoheteroplasty dermatoid dermatological dermatologist dermatology dermatolysis dermatoma dermatome dermatomere dermatomic dermatomuscular dermatomyces dermatomycosis dermatomyoma dermatoneural dermatoneurology dermatoneurosis dermatonosus dermatopathia dermatopathic dermatopathology dermatopathophobia Dermatophagus dermatophobia dermatophone dermatophony dermatophyte dermatophytic dermatophytosis dermatoplasm dermatoplast dermatoplastic dermatoplasty dermatopnagic dermatopsy Dermatoptera dermatoptic dermatorrhagia dermatorrhea dermatorrhoea dermatosclerosis dermatoscopy dermatosis dermatoskeleton dermatotherapy dermatotome dermatotomy dermatotropic dermatoxerasia dermatozoon dermatozoonosis dermatrophia dermatrophy dermenchysis Dermestes dermestid Dermestidae dermestoid dermic dermis dermitis dermoblast Dermobranchia dermobranchiata dermobranchiate Dermochelys dermochrome dermococcus dermogastric dermographia dermographic dermographism dermography dermohemal dermohemia dermohumeral dermoid dermoidal dermoidectomy dermol dermolysis dermomuscular dermomycosis dermoneural dermoneurosis dermonosology dermoosseous dermoossification dermopathic dermopathy dermophlebitis dermophobe dermophyte dermophytic dermoplasty Dermoptera dermopteran dermopterous dermoreaction Dermorhynchi dermorhynchous dermosclerite dermoskeletal dermoskeleton dermostenosis dermostosis dermosynovitis dermotropic dermovaccine dermutation dern dernier derodidymus derogate derogately derogation derogative derogatively derogator derogatorily derogatoriness derogatory Derotrema Derotremata derotremate derotrematous derotreme derout Derrick derrick derricking derrickman derride derries derringer Derris derry dertrotheca dertrum deruinate deruralize derust dervish dervishhood dervishism dervishlike desaccharification desacralization desacralize desalt desamidization desand desaturate desaturation desaurin descale descant descanter descantist descend descendable descendance descendant descendence descendent descendental descendentalism descendentalist descendentalistic descender descendibility descendible descending descendingly descension descensional descensionist descensive descent Deschampsia descloizite descort describability describable describably describe describer descrier descript description descriptionist descriptionless descriptive descriptively descriptiveness descriptory descrive descry deseasonalize desecrate desecrater desecration desectionalize deseed desegmentation desegmented desensitization desensitize desensitizer desentimentalize deseret desert deserted desertedly desertedness deserter desertful desertfully desertic deserticolous desertion desertism desertless desertlessly desertlike desertness desertress desertrice desertward deserve deserved deservedly deservedness deserveless deserver deserving deservingly deservingness desex desexualization desexualize deshabille desi desiccant desiccate desiccation desiccative desiccator desiccatory desiderant desiderata desiderate desideration desiderative desideratum desight desightment design designable designate designation designative designator designatory designatum designed designedly designedness designee designer designful designfully designfulness designing designingly designless designlessly designlessness desilicate desilicification desilicify desiliconization desiliconize desilver desilverization desilverize desilverizer desinence desinent desiodothyroxine desipience desipiency desipient desirability desirable desirableness desirably desire desired desiredly desiredness desireful desirefulness desireless desirer desiringly desirous desirously desirousness desist desistance desistive desition desize desk desklike deslime desma desmachymatous desmachyme desmacyte desman Desmanthus Desmarestia Desmarestiaceae desmarestiaceous Desmatippus desmectasia desmepithelium desmic desmid Desmidiaceae desmidiaceous Desmidiales desmidiologist desmidiology desmine desmitis desmocyte desmocytoma Desmodactyli Desmodium desmodont Desmodontidae Desmodus desmodynia desmogen desmogenous Desmognathae desmognathism desmognathous desmography desmohemoblast desmoid desmology desmoma Desmomyaria desmon Desmoncus desmoneoplasm desmonosology desmopathologist desmopathology desmopathy desmopelmous desmopexia desmopyknosis desmorrhexis Desmoscolecidae Desmoscolex desmosis desmosite Desmothoraca desmotomy desmotrope desmotropic desmotropism desocialization desocialize desolate desolately desolateness desolater desolating desolatingly desolation desolative desonation desophisticate desophistication desorption desoxalate desoxyanisoin desoxybenzoin desoxycinchonine desoxycorticosterone desoxymorphine desoxyribonucleic despair despairer despairful despairfully despairfulness despairing despairingly despairingness despecialization despecialize despecificate despecification despect desperacy desperado desperadoism desperate desperately desperateness desperation despicability despicable despicableness despicably despiritualization despiritualize despisable despisableness despisal despise despisedness despisement despiser despisingly despite despiteful despitefully despitefulness despiteous despiteously despoil despoiler despoilment despoliation despond despondence despondency despondent despondently desponder desponding despondingly despot despotat Despotes despotic despotically despoticalness despoticly despotism despotist despotize despumate despumation desquamate desquamation desquamative desquamatory dess dessa dessert dessertspoon dessertspoonful dessiatine dessil destabilize destain destandardize desterilization desterilize destinate destination destine destinezite destinism destinist destiny destitute destitutely destituteness destitution destour destress destrier destroy destroyable destroyer destroyingly destructibility destructible destructibleness destruction destructional destructionism destructionist destructive destructively destructiveness destructivism destructivity destructor destructuralize desubstantiate desucration desuete desuetude desugar desugarize Desulfovibrio desulphur desulphurate desulphuration desulphurization desulphurize desulphurizer desultor desultorily desultoriness desultorious desultory desuperheater desyatin desyl desynapsis desynaptic desynonymization desynonymize detach detachability detachable detachableness detachably detached detachedly detachedness detacher detachment detail detailed detailedly detailedness detailer detailism detailist detain detainable detainal detainer detainingly detainment detar detassel detax detect detectability detectable detectably detectaphone detecter detectible detection detective detectivism detector detenant detent detention detentive deter deterge detergence detergency detergent detergible deteriorate deterioration deteriorationist deteriorative deteriorator deteriorism deteriority determent determinability determinable determinableness determinably determinacy determinant determinantal determinate determinately determinateness determination determinative determinatively determinativeness determinator determine determined determinedly determinedness determiner determinism determinist deterministic determinoid deterrence deterrent detersion detersive detersively detersiveness detest detestability detestable detestableness detestably detestation detester dethronable dethrone dethronement dethroner dethyroidism detin detinet detinue detonable detonate detonation detonative detonator detorsion detour detoxicant detoxicate detoxication detoxicator detoxification detoxify detract detracter detractingly detraction detractive detractively detractiveness detractor detractory detractress detrain detrainment detribalization detribalize detriment detrimental detrimentality detrimentally detrimentalness detrital detrited detrition detritus Detroiter detrude detruncate detruncation detrusion detrusive detrusor detubation detumescence detune detur deuce deuced deucedly deul deurbanize deutencephalic deutencephalon deuteragonist deuteranomal deuteranomalous deuteranope deuteranopia deuteranopic deuteric deuteride deuterium deuteroalbumose deuterocanonical deuterocasease deuterocone deuteroconid deuterodome deuteroelastose deuterofibrinose deuterogamist deuterogamy deuterogelatose deuterogenic deuteroglobulose deuteromorphic Deuteromycetes deuteromyosinose deuteron Deuteronomic Deuteronomical Deuteronomist Deuteronomistic Deuteronomy deuteropathic deuteropathy deuteroplasm deuteroprism deuteroproteose deuteroscopic deuteroscopy deuterostoma Deuterostomata deuterostomatous deuterotokous deuterotoky deuterotype deuterovitellose deuterozooid deutobromide deutocarbonate deutochloride deutomala deutomalal deutomalar deutomerite deuton deutonephron deutonymph deutonymphal deutoplasm deutoplasmic deutoplastic deutoscolex deutoxide Deutzia dev deva devachan devadasi devall devaloka devalorize devaluate devaluation devalue devance devaporate devaporation devast devastate devastating devastatingly devastation devastative devastator devastavit devaster devata develin develop developability developable developedness developer developist development developmental developmentalist developmentally developmentarian developmentary developmentist developoid devertebrated devest deviability deviable deviancy deviant deviate deviation deviationism deviationist deviative deviator deviatory device deviceful devicefully devicefulness devil devilbird devildom deviled deviler deviless devilet devilfish devilhood deviling devilish devilishly devilishness devilism devilize devilkin devillike devilman devilment devilmonger devilry devilship deviltry devilward devilwise devilwood devily devious deviously deviousness devirginate devirgination devirginator devirilize devisable devisal deviscerate devisceration devise devisee deviser devisor devitalization devitalize devitalized devitaminize devitrification devitrify devocalization devocalize devoice devoid devoir devolatilize devolute devolution devolutionary devolutionist devolve devolvement Devon Devonian Devonic devonite devonport devonshire devorative devote devoted devotedly devotedness devotee devoteeism devotement devoter devotion devotional devotionalism devotionalist devotionality devotionally devotionalness devotionate devotionist devour devourable devourer devouress devouring devouringly devouringness devourment devout devoutless devoutlessly devoutlessness devoutly devoutness devow devulcanization devulcanize devulgarize devvel dew dewan dewanee dewanship dewater dewaterer dewax dewbeam dewberry dewclaw dewclawed dewcup dewdamp dewdrop dewdropper dewer Dewey deweylite dewfall dewflower dewily dewiness dewlap dewlapped dewless dewlight dewlike dewool deworm dewret dewtry dewworm dewy dexiocardia dexiotrope dexiotropic dexiotropism dexiotropous Dexter dexter dexterical dexterity dexterous dexterously dexterousness dextrad dextral dextrality dextrally dextran dextraural dextrin dextrinase dextrinate dextrinize dextrinous dextro dextroaural dextrocardia dextrocardial dextrocerebral dextrocular dextrocularity dextroduction dextroglucose dextrogyrate dextrogyration dextrogyratory dextrogyrous dextrolactic dextrolimonene dextropinene dextrorotary dextrorotatary dextrorotation dextrorsal dextrorse dextrorsely dextrosazone dextrose dextrosinistral dextrosinistrally dextrosuria dextrotartaric dextrotropic dextrotropous dextrous dextrously dextrousness dextroversion dey deyhouse deyship deywoman Dezaley dezinc dezincation dezincification dezincify dezymotize dha dhabb dhai dhak dhamnoo dhan dhangar dhanuk dhanush Dhanvantari dharana dharani dharma dharmakaya dharmashastra dharmasmriti dharmasutra dharmsala dharna dhaura dhauri dhava dhaw Dheneb dheri dhobi dhole dhoni dhoon dhoti dhoul dhow Dhritarashtra dhu dhunchee dhunchi Dhundia dhurra dhyal dhyana di diabase diabasic diabetes diabetic diabetogenic diabetogenous diabetometer diablerie diabolarch diabolarchy diabolatry diabolepsy diaboleptic diabolic diabolical diabolically diabolicalness diabolification diabolify diabolism diabolist diabolization diabolize diabological diabology diabolology diabrosis diabrotic Diabrotica diacanthous diacaustic diacetamide diacetate diacetic diacetin diacetine diacetonuria diaceturia diacetyl diacetylene diachoretic diachronic diachylon diachylum diacid diacipiperazine diaclase diaclasis diaclastic diacle diaclinal diacodion diacoele diacoelia diaconal diaconate diaconia diaconicon diaconicum diacope diacranterian diacranteric diacrisis diacritic diacritical diacritically Diacromyodi diacromyodian diact diactin diactinal diactinic diactinism Diadelphia diadelphian diadelphic diadelphous diadem Diadema Diadematoida diaderm diadermic diadoche Diadochi Diadochian diadochite diadochokinesia diadochokinetic diadromous diadumenus diaene diaereses diaeresis diaeretic diaetetae diagenesis diagenetic diageotropic diageotropism diaglyph diaglyphic diagnosable diagnose diagnoseable diagnoses diagnosis diagnostic diagnostically diagnosticate diagnostication diagnostician diagnostics diagometer diagonal diagonality diagonalize diagonally diagonalwise diagonic diagram diagrammatic diagrammatical diagrammatician diagrammatize diagrammeter diagrammitically diagraph diagraphic diagraphical diagraphics diagredium diagrydium Diaguitas Diaguite diaheliotropic diaheliotropically diaheliotropism diakinesis dial dialcohol dialdehyde dialect dialectal dialectalize dialectally dialectic dialectical dialectically dialectician dialecticism dialecticize dialectics dialectologer dialectological dialectologist dialectology dialector dialer dialin dialing dialist Dialister dialkyl dialkylamine diallage diallagic diallagite diallagoid diallel diallelon diallelus diallyl dialogic dialogical dialogically dialogism dialogist dialogistic dialogistical dialogistically dialogite dialogize dialogue dialoguer Dialonian dialuric dialycarpous Dialypetalae dialypetalous dialyphyllous dialysepalous dialysis dialystaminous dialystelic dialystely dialytic dialytically dialyzability dialyzable dialyzate dialyzation dialyzator dialyze dialyzer diamagnet diamagnetic diamagnetically diamagnetism diamantiferous diamantine diamantoid diamb diambic diamesogamous diameter diametral diametrally diametric diametrical diametrically diamicton diamide diamidogen diamine diaminogen diaminogene diammine diamminobromide diamminonitrate diammonium diamond diamondback diamonded diamondiferous diamondize diamondlike diamondwise diamondwork diamorphine diamylose Dian dian Diana Diancecht diander Diandria diandrian diandrous Diane dianetics Dianil dianilid dianilide dianisidin dianisidine dianite dianodal dianoetic dianoetical dianoetically Dianthaceae Dianthera Dianthus diapalma diapase diapasm diapason diapasonal diapause diapedesis diapedetic Diapensia Diapensiaceae diapensiaceous diapente diaper diapering diaphane diaphaneity diaphanie diaphanometer diaphanometric diaphanometry diaphanoscope diaphanoscopy diaphanotype diaphanous diaphanously diaphanousness diaphany diaphone diaphonia diaphonic diaphonical diaphony diaphoresis diaphoretic diaphoretical diaphorite diaphote diaphototropic diaphototropism diaphragm diaphragmal diaphragmatic diaphragmatically diaphtherin diaphysial diaphysis diaplasma diaplex diaplexal diaplexus diapnoic diapnotic diapophysial diapophysis Diaporthe diapositive diapsid Diapsida diapsidan diapyesis diapyetic diarch diarchial diarchic diarchy diarhemia diarial diarian diarist diaristic diarize diarrhea diarrheal diarrheic diarrhetic diarsenide diarthric diarthrodial diarthrosis diarticular diary diaschisis diaschisma diaschistic Diascia diascope diascopy diascord diascordium diaskeuasis diaskeuast Diaspidinae diaspidine Diaspinae diaspine diaspirin Diaspora diaspore diastaltic diastase diastasic diastasimetry diastasis diastataxic diastataxy diastatic diastatically diastem diastema diastematic diastematomyelia diaster diastole diastolic diastomatic diastral diastrophe diastrophic diastrophism diastrophy diasynthesis diasyrm diatessaron diathermacy diathermal diathermancy diathermaneity diathermanous diathermic diathermize diathermometer diathermotherapy diathermous diathermy diathesic diathesis diathetic diatom Diatoma Diatomaceae diatomacean diatomaceoid diatomaceous Diatomales Diatomeae diatomean diatomic diatomicity diatomiferous diatomin diatomist diatomite diatomous diatonic diatonical diatonically diatonous diatoric diatreme diatribe diatribist diatropic diatropism Diatryma Diatrymiformes Diau diaulic diaulos diaxial diaxon diazenithal diazeuctic diazeuxis diazide diazine diazoamine diazoamino diazoaminobenzene diazoanhydride diazoate diazobenzene diazohydroxide diazoic diazoimide diazoimido diazole diazoma diazomethane diazonium diazotate diazotic diazotizability diazotizable diazotization diazotize diazotype dib dibase dibasic dibasicity dibatag Dibatis dibber dibble dibbler dibbuk dibenzophenazine dibenzopyrrole dibenzoyl dibenzyl dibhole diblastula diborate Dibothriocephalus dibrach dibranch Dibranchia Dibranchiata dibranchiate dibranchious dibrom dibromid dibromide dibromoacetaldehyde dibromobenzene dibs dibstone dibutyrate dibutyrin dicacodyl Dicaeidae dicaeology dicalcic dicalcium dicarbonate dicarbonic dicarboxylate dicarboxylic dicarpellary dicaryon dicaryophase dicaryophyte dicaryotic dicast dicastery dicastic dicatalectic dicatalexis Diccon dice diceboard dicebox dicecup dicellate diceman Dicentra dicentrine dicephalism dicephalous dicephalus diceplay dicer Diceras Diceratidae dicerion dicerous dicetyl dich Dichapetalaceae Dichapetalum dichas dichasial dichasium dichastic Dichelyma dichlamydeous dichloramine dichlorhydrin dichloride dichloroacetic dichlorohydrin dichloromethane dichocarpism dichocarpous dichogamous dichogamy Dichondra Dichondraceae dichopodial dichoptic dichord dichoree Dichorisandra dichotic dichotomal dichotomic dichotomically dichotomist dichotomistic dichotomization dichotomize dichotomous dichotomously dichotomy dichroic dichroiscope dichroism dichroite dichroitic dichromasy dichromat dichromate dichromatic dichromatism dichromic dichromism dichronous dichrooscope dichroous dichroscope dichroscopic Dichter dicing Dick dick dickcissel dickens Dickensian Dickensiana dicker dickey dickeybird dickinsonite Dicksonia dicky Diclidantheraceae diclinic diclinism diclinous Diclytra dicoccous dicodeine dicoelious dicolic dicolon dicondylian dicot dicotyl dicotyledon dicotyledonary Dicotyledones dicotyledonous Dicotyles Dicotylidae dicotylous dicoumarin Dicranaceae dicranaceous dicranoid dicranterian Dicranum Dicrostonyx dicrotal dicrotic dicrotism dicrotous Dicruridae dicta Dictaen Dictamnus Dictaphone dictate dictatingly dictation dictational dictative dictator dictatorial dictatorialism dictatorially dictatorialness dictatorship dictatory dictatress dictatrix dictature dictic diction dictionary Dictograph dictum dictynid Dictynidae Dictyoceratina dictyoceratine dictyodromous dictyogen dictyogenous Dictyograptus dictyoid Dictyonema Dictyonina dictyonine Dictyophora dictyopteran Dictyopteris Dictyosiphon Dictyosiphonaceae dictyosiphonaceous dictyosome dictyostele dictyostelic Dictyota Dictyotaceae dictyotaceous Dictyotales dictyotic Dictyoxylon dicyanide dicyanine dicyanodiamide dicyanogen dicycle dicyclic Dicyclica dicyclist Dicyema Dicyemata dicyemid Dicyemida Dicyemidae Dicynodon dicynodont Dicynodontia Dicynodontidae did Didache Didachist didactic didactical didacticality didactically didactician didacticism didacticity didactics didactive didactyl didactylism didactylous didapper didascalar didascaliae didascalic didascalos didascaly didder diddle diddler diddy didelph Didelphia didelphian didelphic didelphid Didelphidae didelphine Didelphis didelphoid didelphous Didelphyidae didepsid didepside Dididae didie didine Didinium didle didna didnt Dido didodecahedral didodecahedron didrachma didrachmal didromy didst diductor Didunculidae Didunculinae Didunculus Didus didym didymate didymia didymitis didymium didymoid didymolite didymous didymus Didynamia didynamian didynamic didynamous didynamy die dieb dieback diectasis diedral diedric Dieffenbachia Diego Diegueno diehard dielectric dielectrically dielike Dielytra diem diemaker diemaking diencephalic diencephalon diene dier Dieri Diervilla diesel dieselization dieselize diesinker diesinking diesis diestock diet dietal dietarian dietary Dieter dieter dietetic dietetically dietetics dietetist diethanolamine diethyl diethylamine diethylenediamine diethylstilbestrol dietic dietician dietics dietine dietist dietitian dietotherapeutics dietotherapy dietotoxic dietotoxicity dietrichite dietzeite diewise Dieyerie diezeugmenon Difda diferrion diffame diffarreation differ difference differencingly different differentia differentiable differential differentialize differentially differentiant differentiate differentiation differentiator differently differentness differingly difficile difficileness difficult difficultly difficultness difficulty diffidation diffide diffidence diffident diffidently diffidentness diffinity diffluence diffluent Difflugia difform difformed difformity diffract diffraction diffractive diffractively diffractiveness diffractometer diffrangibility diffrangible diffugient diffusate diffuse diffused diffusedly diffusely diffuseness diffuser diffusibility diffusible diffusibleness diffusibly diffusimeter diffusiometer diffusion diffusionism diffusionist diffusive diffusively diffusiveness diffusivity diffusor diformin dig digallate digallic digametic digamist digamma digammated digammic digamous digamy digastric Digenea digeneous digenesis digenetic Digenetica digenic digenous digeny digerent digest digestant digested digestedly digestedness digester digestibility digestible digestibleness digestibly digestion digestional digestive digestively digestiveness digestment diggable digger digging diggings dight dighter digit digital digitalein digitalin digitalis digitalism digitalization digitalize digitally Digitaria digitate digitated digitately digitation digitiform Digitigrada digitigrade digitigradism digitinervate digitinerved digitipinnate digitize digitizer digitogenin digitonin digitoplantar digitorium digitoxin digitoxose digitule digitus digladiate digladiation digladiator diglossia diglot diglottic diglottism diglottist diglucoside diglyceride diglyph diglyphic digmeat dignification dignified dignifiedly dignifiedness dignify dignitarial dignitarian dignitary dignity digoneutic digoneutism digonoporous digonous Digor digram digraph digraphic digredience digrediency digredient digress digressingly digression digressional digressionary digressive digressively digressiveness digressory digs diguanide Digynia digynian digynous dihalide dihalo dihalogen dihedral dihedron dihexagonal dihexahedral dihexahedron dihybrid dihybridism dihydrate dihydrated dihydrazone dihydric dihydride dihydrite dihydrocupreine dihydrocuprin dihydrogen dihydrol dihydronaphthalene dihydronicotine dihydrotachysterol dihydroxy dihydroxysuccinic dihydroxytoluene dihysteria diiamb diiambus diiodide diiodo diiodoform diipenates Diipolia diisatogen dijudicate dijudication dika dikage dikamali dikaryon dikaryophase dikaryophasic dikaryophyte dikaryophytic dikaryotic Dike dike dikegrave dikelocephalid Dikelocephalus diker dikereeve dikeside diketo diketone dikkop diktyonite dilacerate dilaceration dilambdodont dilamination Dilantin dilapidate dilapidated dilapidation dilapidator dilatability dilatable dilatableness dilatably dilatancy dilatant dilatate dilatation dilatative dilatator dilatatory dilate dilated dilatedly dilatedness dilater dilatingly dilation dilative dilatometer dilatometric dilatometry dilator dilatorily dilatoriness dilatory dildo dilection Dilemi Dilemite dilemma dilemmatic dilemmatical dilemmatically dilettant dilettante dilettanteish dilettanteism dilettanteship dilettanti dilettantish dilettantism dilettantist diligence diligency diligent diligentia diligently diligentness dilker dill Dillenia Dilleniaceae dilleniaceous dilleniad dilli dillier dilligrout dilling dillseed dillue dilluer dillweed dilly dillydallier dillydally dillyman dilo dilogy diluent dilute diluted dilutedly dilutedness dilutee dilutely diluteness dilutent diluter dilution dilutive dilutor diluvia diluvial diluvialist diluvian diluvianism diluvion diluvium dim dimagnesic dimanganion dimanganous Dimaris dimastigate Dimatis dimber dimberdamber dimble dime dimensible dimension dimensional dimensionality dimensionally dimensioned dimensionless dimensive dimer Dimera dimeran dimercuric dimercurion dimercury dimeric dimeride dimerism dimerization dimerlie dimerous dimetallic dimeter dimethoxy dimethyl dimethylamine dimethylamino dimethylaniline dimethylbenzene dimetria dimetric Dimetry dimication dimidiate dimidiation diminish diminishable diminishableness diminisher diminishingly diminishment diminuendo diminutal diminute diminution diminutival diminutive diminutively diminutiveness diminutivize dimiss dimission dimissorial dimissory dimit Dimitry Dimittis dimity dimly dimmed dimmedness dimmer dimmest dimmet dimmish Dimna dimness dimolecular dimoric dimorph dimorphic dimorphism Dimorphotheca dimorphous dimple dimplement dimply dimps dimpsy Dimyaria dimyarian dimyaric din Dinah dinamode Dinantian dinaphthyl dinar Dinaric Dinarzade dinder dindle Dindymene Dindymus dine diner dinergate dineric dinero dinette dineuric ding dingar dingbat dingdong dinge dingee dinghee dinghy dingily dinginess dingle dingleberry dinglebird dingledangle dingly dingmaul dingo dingus Dingwall dingy dinheiro dinic dinical Dinichthys dining dinitrate dinitril dinitrile dinitro dinitrobenzene dinitrocellulose dinitrophenol dinitrotoluene dink Dinka dinkey dinkum dinky dinmont dinner dinnerless dinnerly dinnertime dinnerware dinnery Dinobryon Dinoceras Dinocerata dinoceratan dinoceratid Dinoceratidae Dinoflagellata Dinoflagellatae dinoflagellate Dinoflagellida dinomic Dinomys Dinophilea Dinophilus Dinophyceae Dinornis Dinornithes dinornithic dinornithid Dinornithidae Dinornithiformes dinornithine dinornithoid dinosaur Dinosauria dinosaurian dinothere Dinotheres dinotherian Dinotheriidae Dinotherium dinsome dint dintless dinus diobely diobol diocesan diocese Diocletian dioctahedral Dioctophyme diode Diodia Diodon diodont Diodontidae Dioecia dioecian dioeciodimorphous dioeciopolygamous dioecious dioeciously dioeciousness dioecism dioecy dioestrous dioestrum dioestrus Diogenean Diogenic diogenite dioicous diol diolefin diolefinic Diomedea Diomedeidae Dion Dionaea Dionaeaceae Dione dionise dionym dionymal Dionysia Dionysiac Dionysiacal Dionysiacally Dioon Diophantine Diopsidae diopside Diopsis dioptase diopter Dioptidae dioptograph dioptometer dioptometry dioptoscopy dioptra dioptral dioptrate dioptric dioptrical dioptrically dioptrics dioptrometer dioptrometry dioptroscopy dioptry diorama dioramic diordinal diorite dioritic diorthosis diorthotic Dioscorea Dioscoreaceae dioscoreaceous dioscorein dioscorine Dioscuri Dioscurian diose Diosma diosmin diosmose diosmosis diosmotic diosphenol Diospyraceae diospyraceous Diospyros diota diotic Diotocardia diovular dioxane dioxide dioxime dioxindole dioxy dip Dipala diparentum dipartite dipartition dipaschal dipentene dipeptid dipeptide dipetalous dipetto diphase diphaser diphasic diphead diphenol diphenyl diphenylamine diphenylchloroarsine diphenylene diphenylenimide diphenylguanidine diphenylmethane diphenylquinomethane diphenylthiourea diphosgene diphosphate diphosphide diphosphoric diphosphothiamine diphrelatic diphtheria diphtherial diphtherian diphtheric diphtheritic diphtheritically diphtheritis diphtheroid diphtheroidal diphtherotoxin diphthong diphthongal diphthongalize diphthongally diphthongation diphthongic diphthongization diphthongize diphycercal diphycercy Diphyes diphygenic diphyletic Diphylla Diphylleia Diphyllobothrium diphyllous diphyodont diphyozooid Diphysite Diphysitism diphyzooid dipicrate dipicrylamin dipicrylamine Diplacanthidae Diplacanthus diplacusis Dipladenia diplanar diplanetic diplanetism diplantidian diplarthrism diplarthrous diplasiasmus diplasic diplasion diplegia dipleidoscope dipleura dipleural dipleurogenesis dipleurogenetic diplex diplobacillus diplobacterium diploblastic diplocardia diplocardiac Diplocarpon diplocaulescent diplocephalous diplocephalus diplocephaly diplochlamydeous diplococcal diplococcemia diplococcic diplococcoid diplococcus diploconical diplocoria Diplodia Diplodocus Diplodus diploe diploetic diplogangliate diplogenesis diplogenetic diplogenic Diploglossata diploglossate diplograph diplographic diplographical diplography diplohedral diplohedron diploic diploid diploidic diploidion diploidy diplois diplokaryon diploma diplomacy diplomat diplomate diplomatic diplomatical diplomatically diplomatics diplomatism diplomatist diplomatize diplomatology diplomyelia diplonema diplonephridia diploneural diplont diploperistomic diplophase diplophyte diplopia diplopic diploplacula diploplacular diploplaculate diplopod Diplopoda diplopodic Diploptera diplopterous Diplopteryga diplopy diplosis diplosome diplosphenal diplosphene Diplospondyli diplospondylic diplospondylism diplostemonous diplostemony diplostichous Diplotaxis diplotegia diplotene Diplozoon diplumbic Dipneumona Dipneumones dipneumonous dipneustal Dipneusti dipnoan Dipnoi dipnoid dipnoous dipode dipodic Dipodidae Dipodomyinae Dipodomys dipody dipolar dipolarization dipolarize dipole diporpa dipotassic dipotassium dipped dipper dipperful dipping diprimary diprismatic dipropargyl dipropyl Diprotodon diprotodont Diprotodontia Dipsacaceae dipsacaceous Dipsaceae dipsaceous Dipsacus Dipsadinae dipsas dipsetic dipsey dipsomania dipsomaniac dipsomaniacal Dipsosaurus dipsosis dipter Diptera Dipteraceae dipteraceous dipterad dipteral dipteran dipterist dipterocarp Dipterocarpaceae dipterocarpaceous dipterocarpous Dipterocarpus dipterocecidium dipterological dipterologist dipterology dipteron dipteros dipterous Dipteryx diptote diptych Dipus dipware dipygus dipylon dipyre dipyrenous dipyridyl Dirca Dircaean dird dirdum dire direct directable directed directer direction directional directionally directionless directitude directive directively directiveness directivity directly directness Directoire director directoral directorate directorial directorially directorship directory directress directrices directrix direful direfully direfulness direly dirempt diremption direness direption dirge dirgeful dirgelike dirgeman dirgler dirhem Dirian Dirichletian dirigent dirigibility dirigible dirigomotor diriment Dirk dirk dirl dirndl dirt dirtbird dirtboard dirten dirtily dirtiness dirtplate dirty dis Disa disability disable disabled disablement disabusal disabuse disacceptance disaccharide disaccharose disaccommodate disaccommodation disaccord disaccordance disaccordant disaccustom disaccustomed disaccustomedness disacidify disacknowledge disacknowledgement disacquaint disacquaintance disadjust disadorn disadvance disadvantage disadvantageous disadvantageously disadvantageousness disadventure disadventurous disadvise disaffect disaffectation disaffected disaffectedly disaffectedness disaffection disaffectionate disaffiliate disaffiliation disaffirm disaffirmance disaffirmation disaffirmative disafforest disafforestation disafforestment disagglomeration disaggregate disaggregation disaggregative disagio disagree disagreeability disagreeable disagreeableness disagreeably disagreed disagreement disagreer disalicylide disalign disalignment disalike disallow disallowable disallowableness disallowance disally disamenity Disamis disanagrammatize disanalogous disangularize disanimal disanimate disanimation disannex disannexation disannul disannuller disannulment disanoint disanswerable disapostle disapparel disappear disappearance disappearer disappearing disappoint disappointed disappointedly disappointer disappointing disappointingly disappointingness disappointment disappreciate disappreciation disapprobation disapprobative disapprobatory disappropriate disappropriation disapprovable disapproval disapprove disapprover disapprovingly disaproned disarchbishop disarm disarmament disarmature disarmed disarmer disarming disarmingly disarrange disarrangement disarray disarticulate disarticulation disarticulator disasinate disasinize disassemble disassembly disassimilate disassimilation disassimilative disassociate disassociation disaster disastimeter disastrous disastrously disastrousness disattaint disattire disattune disauthenticate disauthorize disavow disavowable disavowal disavowedly disavower disavowment disawa disazo disbalance disbalancement disband disbandment disbar disbark disbarment disbelief disbelieve disbeliever disbelieving disbelievingly disbench disbenchment disbloom disbody disbosom disbowel disbrain disbranch disbud disbudder disburden disburdenment disbursable disburse disbursement disburser disburthen disbury disbutton disc discage discal discalceate discalced discanonization discanonize discanter discantus discapacitate discard discardable discarder discardment discarnate discarnation discase discastle discept disceptation disceptator discern discerner discernible discernibleness discernibly discerning discerningly discernment discerp discerpibility discerpible discerpibleness discerptibility discerptible discerptibleness discerption discharacter discharge dischargeable dischargee discharger discharging discharity discharm dischase Disciflorae discifloral disciform discigerous Discina discinct discinoid disciple disciplelike discipleship disciplinability disciplinable disciplinableness disciplinal disciplinant disciplinarian disciplinarianism disciplinarily disciplinary disciplinative disciplinatory discipline discipliner discipular discircumspection discission discitis disclaim disclaimant disclaimer disclamation disclamatory disclass disclassify disclike disclimax discloister disclose disclosed discloser disclosive disclosure discloud discoach discoactine discoblastic discoblastula discobolus discocarp discocarpium discocarpous discocephalous discodactyl discodactylous discogastrula discoglossid Discoglossidae discoglossoid discographical discography discohexaster discoid discoidal Discoidea Discoideae discolichen discolith discolor discolorate discoloration discolored discoloredness discolorization discolorment discolourization Discomedusae discomedusan discomedusoid discomfit discomfiter discomfiture discomfort discomfortable discomfortableness discomforting discomfortingly discommend discommendable discommendableness discommendably discommendation discommender discommode discommodious discommodiously discommodiousness discommodity discommon discommons discommunity discomorula discompliance discompose discomposed discomposedly discomposedness discomposing discomposingly discomposure discomycete Discomycetes discomycetous Disconanthae disconanthous disconcert disconcerted disconcertedly disconcertedness disconcerting disconcertingly disconcertingness disconcertion disconcertment disconcord disconduce disconducive Disconectae disconform disconformable disconformity discongruity disconjure disconnect disconnected disconnectedly disconnectedness disconnecter disconnection disconnective disconnectiveness disconnector disconsider disconsideration disconsolate disconsolately disconsolateness disconsolation disconsonancy disconsonant discontent discontented discontentedly discontentedness discontentful discontenting discontentive discontentment discontiguity discontiguous discontiguousness discontinuable discontinuance discontinuation discontinue discontinuee discontinuer discontinuity discontinuor discontinuous discontinuously discontinuousness disconula disconvenience disconvenient disconventicle discophile Discophora discophoran discophore discophorous discoplacenta discoplacental Discoplacentalia discoplacentalian discoplasm discopodous discord discordance discordancy discordant discordantly discordantness discordful Discordia discording discorporate discorrespondency discorrespondent discount discountable discountenance discountenancer discounter discouple discourage discourageable discouragement discourager discouraging discouragingly discouragingness discourse discourseless discourser discoursive discoursively discoursiveness discourteous discourteously discourteousness discourtesy discous discovenant discover discoverability discoverable discoverably discovered discoverer discovert discoverture discovery discreate discreation discredence discredit discreditability discreditable discreet discreetly discreetness discrepance discrepancy discrepant discrepantly discrepate discrepation discrested discrete discretely discreteness discretion discretional discretionally discretionarily discretionary discretive discretively discretiveness discriminability discriminable discriminal discriminant discriminantal discriminate discriminately discriminateness discriminating discriminatingly discrimination discriminational discriminative discriminatively discriminator discriminatory discrown disculpate disculpation disculpatory discumber discursative discursativeness discursify discursion discursive discursively discursiveness discursory discursus discurtain discus discuss discussable discussant discusser discussible discussion discussional discussionism discussionist discussive discussment discutable discutient disdain disdainable disdainer disdainful disdainfully disdainfulness disdainly disdeceive disdenominationalize disdiaclast disdiaclastic disdiapason disdiazo disdiplomatize disdodecahedroid disdub disease diseased diseasedly diseasedness diseaseful diseasefulness disecondary disedge disedification disedify diseducate diselder diselectrification diselectrify diselenide disematism disembargo disembark disembarkation disembarkment disembarrass disembarrassment disembattle disembed disembellish disembitter disembocation disembodiment disembody disembogue disemboguement disembosom disembowel disembowelment disembower disembroil disemburden diseme disemic disemplane disemploy disemployment disempower disenable disenablement disenact disenactment disenamor disenamour disenchain disenchant disenchanter disenchantingly disenchantment disenchantress disencharm disenclose disencumber disencumberment disencumbrance disendow disendower disendowment disenfranchise disenfranchisement disengage disengaged disengagedness disengagement disengirdle disenjoy disenjoyment disenmesh disennoble disennui disenshroud disenslave disensoul disensure disentail disentailment disentangle disentanglement disentangler disenthral disenthrall disenthrallment disenthralment disenthrone disenthronement disentitle disentomb disentombment disentrain disentrainment disentrammel disentrance disentrancement disentwine disenvelop disepalous disequalize disequalizer disequilibrate disequilibration disequilibrium disestablish disestablisher disestablishment disestablishmentarian disesteem disesteemer disestimation disexcommunicate disfaith disfame disfashion disfavor disfavorer disfeature disfeaturement disfellowship disfen disfiguration disfigurative disfigure disfigurement disfigurer disfiguringly disflesh disfoliage disforest disforestation disfranchise disfranchisement disfranchiser disfrequent disfriar disfrock disfurnish disfurnishment disgarland disgarnish disgarrison disgavel disgeneric disgenius disgig disglorify disglut disgood disgorge disgorgement disgorger disgospel disgown disgrace disgraceful disgracefully disgracefulness disgracement disgracer disgracious disgradation disgrade disgregate disgregation disgruntle disgruntlement disguisable disguisal disguise disguised disguisedly disguisedness disguiseless disguisement disguiser disguising disgulf disgust disgusted disgustedly disgustedness disguster disgustful disgustfully disgustfulness disgusting disgustingly disgustingness dish dishabilitate dishabilitation dishabille dishabituate dishallow dishallucination disharmonic disharmonical disharmonious disharmonism disharmonize disharmony dishboard dishcloth dishclout disheart dishearten disheartener disheartening dishearteningly disheartenment disheaven dished dishellenize dishelm disher disherent disherison disherit disheritment dishevel disheveled dishevelment dishexecontahedroid dishful Dishley dishlike dishling dishmaker dishmaking dishmonger dishome dishonest dishonestly dishonor dishonorable dishonorableness dishonorably dishonorary dishonorer dishorn dishorner dishorse dishouse dishpan dishpanful dishrag dishumanize dishwasher dishwashing dishwashings dishwater dishwatery dishwiper dishwiping disidentify disilane disilicane disilicate disilicic disilicid disilicide disillude disilluminate disillusion disillusionist disillusionize disillusionizer disillusionment disillusive disimagine disimbitter disimitate disimitation disimmure disimpark disimpassioned disimprison disimprisonment disimprove disimprovement disincarcerate disincarceration disincarnate disincarnation disinclination disincline disincorporate disincorporation disincrust disincrustant disincrustion disindividualize disinfect disinfectant disinfecter disinfection disinfective disinfector disinfest disinfestation disinfeudation disinflame disinflate disinflation disingenuity disingenuous disingenuously disingenuousness disinherison disinherit disinheritable disinheritance disinhume disinsulation disinsure disintegrable disintegrant disintegrate disintegration disintegrationist disintegrative disintegrator disintegratory disintegrity disintegrous disintensify disinter disinterest disinterested disinterestedly disinterestedness disinteresting disinterment disintertwine disintrench disintricate disinvagination disinvest disinvestiture disinvigorate disinvite disinvolve disjasked disject disjection disjoin disjoinable disjoint disjointed disjointedly disjointedness disjointly disjointure disjunct disjunction disjunctive disjunctively disjunctor disjuncture disjune disk diskelion diskless disklike dislaurel disleaf dislegitimate dislevelment dislicense dislikable dislike dislikelihood disliker disliking dislimn dislink dislip disload dislocability dislocable dislocate dislocated dislocatedly dislocatedness dislocation dislocator dislocatory dislodge dislodgeable dislodgement dislove disloyal disloyalist disloyally disloyalty disluster dismain dismal dismality dismalize dismally dismalness disman dismantle dismantlement dismantler dismarble dismark dismarket dismask dismast dismastment dismay dismayable dismayed dismayedness dismayful dismayfully dismayingly disme dismember dismembered dismemberer dismemberment dismembrate dismembrator disminion disminister dismiss dismissable dismissal dismissible dismissingly dismission dismissive dismissory dismoded dismount dismountable dismutation disna disnaturalization disnaturalize disnature disnest disnew disniche disnosed disnumber disobedience disobedient disobediently disobey disobeyal disobeyer disobligation disoblige disobliger disobliging disobligingly disobligingness disoccupation disoccupy disodic disodium disomatic disomatous disomic disomus disoperculate disorb disorchard disordained disorder disordered disorderedly disorderedness disorderer disorderliness disorderly disordinated disordination disorganic disorganization disorganize disorganizer disorient disorientate disorientation disown disownable disownment disoxygenate disoxygenation disozonize dispapalize disparage disparageable disparagement disparager disparaging disparagingly disparate disparately disparateness disparation disparity dispark dispart dispartment dispassionate dispassionately dispassionateness dispassioned dispatch dispatcher dispatchful dispatriated dispauper dispauperize dispeace dispeaceful dispel dispeller dispend dispender dispendious dispendiously dispenditure dispensability dispensable dispensableness dispensary dispensate dispensation dispensational dispensative dispensatively dispensator dispensatorily dispensatory dispensatress dispensatrix dispense dispenser dispensingly dispeople dispeoplement dispeopler dispergate dispergation dispergator dispericraniate disperiwig dispermic dispermous dispermy dispersal dispersant disperse dispersed dispersedly dispersedness dispersement disperser dispersibility dispersible dispersion dispersity dispersive dispersively dispersiveness dispersoid dispersoidological dispersoidology dispersonalize dispersonate dispersonification dispersonify dispetal disphenoid dispiece dispireme dispirit dispirited dispiritedly dispiritedness dispiritingly dispiritment dispiteous dispiteously dispiteousness displace displaceability displaceable displacement displacency displacer displant display displayable displayed displayer displease displeased displeasedly displeaser displeasing displeasingly displeasingness displeasurable displeasurably displeasure displeasurement displenish displicency displume displuviate dispondaic dispondee dispone disponee disponent disponer dispope dispopularize disporous disport disportive disportment Disporum disposability disposable disposableness disposal dispose disposed disposedly disposedness disposer disposingly disposition dispositional dispositioned dispositive dispositively dispossess dispossession dispossessor dispossessory dispost disposure dispowder dispractice dispraise dispraiser dispraisingly dispread dispreader disprejudice disprepare disprince disprison disprivacied disprivilege disprize disprobabilization disprobabilize disprobative dispromise disproof disproportion disproportionable disproportionableness disproportionably disproportional disproportionality disproportionally disproportionalness disproportionate disproportionately disproportionateness disproportionation disprovable disproval disprove disprovement disproven disprover dispulp dispunct dispunishable dispunitive disputability disputable disputableness disputably disputant disputation disputatious disputatiously disputatiousness disputative disputatively disputativeness disputator dispute disputeless disputer disqualification disqualify disquantity disquiet disquieted disquietedly disquietedness disquieten disquieter disquieting disquietingly disquietly disquietness disquietude disquiparancy disquiparant disquiparation disquisite disquisition disquisitional disquisitionary disquisitive disquisitively disquisitor disquisitorial disquisitory disquixote disrank disrate disrealize disrecommendation disregard disregardable disregardance disregardant disregarder disregardful disregardfully disregardfulness disrelated disrelation disrelish disrelishable disremember disrepair disreputability disreputable disreputableness disreputably disreputation disrepute disrespect disrespecter disrespectful disrespectfully disrespectfulness disrestore disring disrobe disrobement disrober disroof disroost disroot disrudder disrump disrupt disruptability disruptable disrupter disruption disruptionist disruptive disruptively disruptiveness disruptment disruptor disrupture diss dissatisfaction dissatisfactoriness dissatisfactory dissatisfied dissatisfiedly dissatisfiedness dissatisfy dissaturate disscepter disseat dissect dissected dissectible dissecting dissection dissectional dissective dissector disseize disseizee disseizin disseizor disseizoress disselboom dissemblance dissemble dissembler dissemblingly dissembly dissemilative disseminate dissemination disseminative disseminator disseminule dissension dissensualize dissent dissentaneous dissentaneousness dissenter dissenterism dissentience dissentiency dissentient dissenting dissentingly dissentious dissentiously dissentism dissentment dissepiment dissepimental dissert dissertate dissertation dissertational dissertationist dissertative dissertator disserve disservice disserviceable disserviceableness disserviceably dissettlement dissever disseverance disseverment disshadow dissheathe disshroud dissidence dissident dissidently dissight dissightly dissiliency dissilient dissimilar dissimilarity dissimilarly dissimilars dissimilate dissimilation dissimilatory dissimile dissimilitude dissimulate dissimulation dissimulative dissimulator dissimule dissimuler dissipable dissipate dissipated dissipatedly dissipatedness dissipater dissipation dissipative dissipativity dissipator dissociability dissociable dissociableness dissocial dissociality dissocialize dissociant dissociate dissociation dissociative dissoconch dissogeny dissogony dissolubility dissoluble dissolubleness dissolute dissolutely dissoluteness dissolution dissolutional dissolutionism dissolutionist dissolutive dissolvable dissolvableness dissolve dissolveability dissolvent dissolver dissolving dissolvingly dissonance dissonancy dissonant dissonantly dissonous dissoul dissuade dissuader dissuasion dissuasive dissuasively dissuasiveness dissuasory dissuit dissuitable dissuited dissyllabic dissyllabification dissyllabify dissyllabism dissyllabize dissyllable dissymmetric dissymmetrical dissymmetrically dissymmetry dissympathize dissympathy distad distaff distain distal distale distally distalwards distance distanceless distancy distannic distant distantly distantness distaste distasted distasteful distastefully distastefulness distater distemonous distemper distemperature distempered distemperedly distemperedness distemperer distenant distend distendedly distender distensibility distensible distensive distent distention disthene disthrall disthrone distich Distichlis distichous distichously distill distillable distillage distilland distillate distillation distillatory distilled distiller distillery distilling distillmint distinct distinctify distinction distinctional distinctionless distinctive distinctively distinctiveness distinctly distinctness distingue distinguish distinguishability distinguishable distinguishableness distinguishably distinguished distinguishedly distinguisher distinguishing distinguishingly distinguishment distoclusion Distoma Distomatidae distomatosis distomatous distome distomian distomiasis Distomidae Distomum distort distorted distortedly distortedness distorter distortion distortional distortionist distortionless distortive distract distracted distractedly distractedness distracter distractibility distractible distractingly distraction distractive distractively distrain distrainable distrainee distrainer distrainment distrainor distraint distrait distraite distraught distress distressed distressedly distressedness distressful distressfully distressfulness distressing distressingly distributable distributary distribute distributed distributedly distributee distributer distribution distributional distributionist distributival distributive distributively distributiveness distributor distributress district distrouser distrust distruster distrustful distrustfully distrustfulness distrustingly distune disturb disturbance disturbative disturbed disturbedly disturber disturbing disturbingly disturn disturnpike disubstituted disubstitution disulfonic disulfuric disulphate disulphide disulphonate disulphone disulphonic disulphoxide disulphuret disulphuric disuniform disuniformity disunify disunion disunionism disunionist disunite disuniter disunity disusage disusance disuse disutility disutilize disvaluation disvalue disvertebrate disvisage disvoice disvulnerability diswarren diswench diswood disworth disyllabic disyllable disyoke dit dita dital ditch ditchbank ditchbur ditchdigger ditchdown ditcher ditchless ditchside ditchwater dite diter diterpene ditertiary ditetragonal dithalous dithecal ditheism ditheist ditheistic ditheistical dithematic dither dithery dithiobenzoic dithioglycol dithioic dithion dithionate dithionic dithionite dithionous dithymol dithyramb dithyrambic dithyrambically Dithyrambos Dithyrambus ditokous ditolyl ditone ditrematous ditremid Ditremidae ditrichotomous ditriglyph ditriglyphic ditrigonal ditrigonally Ditrocha ditrochean ditrochee ditrochous ditroite dittamy dittander dittany dittay dittied ditto dittogram dittograph dittographic dittography dittology ditty diumvirate diuranate diureide diuresis diuretic diuretically diureticalness Diurna diurnal diurnally diurnalness diurnation diurne diurnule diuturnal diuturnity div diva divagate divagation divalence divalent divan divariant divaricate divaricately divaricating divaricatingly divarication divaricator divata dive divekeeper divel divellent divellicate diver diverge divergement divergence divergency divergent divergently diverging divergingly divers diverse diversely diverseness diversicolored diversifiability diversifiable diversification diversified diversifier diversiflorate diversiflorous diversifoliate diversifolious diversiform diversify diversion diversional diversionary diversipedate diversisporous diversity diversly diversory divert divertedly diverter divertibility divertible diverticle diverticular diverticulate diverticulitis diverticulosis diverticulum diverting divertingly divertingness divertisement divertive divertor divest divestible divestitive divestiture divestment divesture dividable dividableness divide divided dividedly dividedness dividend divider dividing dividingly dividual dividualism dividually dividuity dividuous divinable divinail divination divinator divinatory divine divinely divineness diviner divineress diving divinify divining diviningly divinity divinityship divinization divinize divinyl divisibility divisible divisibleness divisibly division divisional divisionally divisionary divisionism divisionist divisionistic divisive divisively divisiveness divisor divisorial divisory divisural divorce divorceable divorcee divorcement divorcer divorcible divorcive divot divoto divulgate divulgater divulgation divulgatory divulge divulgement divulgence divulger divulse divulsion divulsive divulsor divus Divvers divvy diwata dixenite Dixie dixie Dixiecrat dixit dixy dizain dizen dizenment dizoic dizygotic dizzard dizzily dizziness dizzy Djagatay djasakid djave djehad djerib djersa Djuka do doab doable doarium doat doated doater doating doatish Dob dob dobbed dobber dobbin dobbing dobby dobe dobla doblon dobra dobrao dobson doby doc docent docentship Docetae Docetic Docetically Docetism Docetist Docetistic Docetize dochmiac dochmiacal dochmiasis dochmius docibility docible docibleness docile docilely docility docimasia docimastic docimastical docimasy docimology docity dock dockage docken docker docket dockhead dockhouse dockization dockize dockland dockmackie dockman dockmaster dockside dockyard dockyardman docmac Docoglossa docoglossan docoglossate docosane doctor doctoral doctorally doctorate doctorbird doctordom doctoress doctorfish doctorhood doctorial doctorially doctorization doctorize doctorless doctorlike doctorly doctorship doctress doctrinaire doctrinairism doctrinal doctrinalism doctrinalist doctrinality doctrinally doctrinarian doctrinarianism doctrinarily doctrinarity doctrinary doctrinate doctrine doctrinism doctrinist doctrinization doctrinize doctrix document documental documentalist documentarily documentary documentation documentize dod dodd doddart dodded dodder doddered dodderer doddering doddery doddie dodding doddle doddy doddypoll Dode dodecade dodecadrachm dodecafid dodecagon dodecagonal dodecahedral dodecahedric dodecahedron dodecahydrate dodecahydrated dodecamerous dodecane Dodecanesian dodecanoic dodecant dodecapartite dodecapetalous dodecarch dodecarchy dodecasemic dodecastyle dodecastylos dodecasyllabic dodecasyllable dodecatemory Dodecatheon dodecatoic dodecatyl dodecatylic dodecuplet dodecyl dodecylene dodecylic dodge dodgeful dodger dodgery dodgily dodginess dodgy dodkin dodlet dodman dodo dodoism Dodona Dodonaea Dodonaeaceae Dodonaean Dodonean Dodonian dodrans doe doebird Doedicurus Doeg doeglic doegling doer does doeskin doesnt doest doff doffer doftberry dog dogal dogate dogbane Dogberry dogberry Dogberrydom Dogberryism dogbite dogblow dogboat dogbolt dogbush dogcart dogcatcher dogdom doge dogedom dogeless dogeship dogface dogfall dogfight dogfish dogfoot dogged doggedly doggedness dogger doggerel doggereler doggerelism doggerelist doggerelize doggerelizer doggery doggess doggish doggishly doggishness doggo doggone doggoned doggrel doggrelize doggy doghead doghearted doghole doghood doghouse dogie dogless doglike dogly dogma dogman dogmata dogmatic dogmatical dogmatically dogmaticalness dogmatician dogmatics dogmatism dogmatist dogmatization dogmatize dogmatizer dogmouth dogplate dogproof Dogra Dogrib dogs dogship dogshore dogskin dogsleep dogstone dogtail dogtie dogtooth dogtoothing dogtrick dogtrot dogvane dogwatch dogwood dogy doigt doiled doily doina doing doings doit doited doitkin doitrified doke Doketic Doketism dokhma dokimastic Dokmarok Doko Dol dola dolabra dolabrate dolabriform dolcan dolcian dolciano dolcino doldrum doldrums dole dolefish doleful dolefully dolefulness dolefuls dolent dolently dolerite doleritic dolerophanite dolesman dolesome dolesomely dolesomeness doless doli dolia dolichoblond dolichocephal dolichocephali dolichocephalic dolichocephalism dolichocephalize dolichocephalous dolichocephaly dolichocercic dolichocnemic dolichocranial dolichofacial Dolichoglossus dolichohieric Dolicholus dolichopellic dolichopodous dolichoprosopic Dolichopsyllidae Dolichos dolichos dolichosaur Dolichosauri Dolichosauria Dolichosaurus Dolichosoma dolichostylous dolichotmema dolichuric dolichurus Doliidae dolina doline dolioform Doliolidae Doliolum dolium doll dollar dollarbird dollardee dollardom dollarfish dollarleaf dollbeer dolldom dollface dollfish dollhood dollhouse dollier dolliness dollish dollishly dollishness dollmaker dollmaking dollop dollship dolly dollyman dollyway dolman dolmen dolmenic Dolomedes dolomite dolomitic dolomitization dolomitize dolomization dolomize dolor Dolores doloriferous dolorific dolorifuge dolorous dolorously dolorousness dolose dolous Dolph dolphin dolphinlike Dolphus dolt dolthead doltish doltishly doltishness dom domain domainal domal domanial domatium domatophobia domba Dombeya Domdaniel dome domelike doment domer domesday domestic domesticable domesticality domestically domesticate domestication domesticative domesticator domesticity domesticize domett domeykite domic domical domically Domicella domicile domicilement domiciliar domiciliary domiciliate domiciliation dominance dominancy dominant dominantly dominate dominated dominatingly domination dominative dominator domine domineer domineerer domineering domineeringly domineeringness dominial Dominic dominical dominicale Dominican Dominick dominie dominion dominionism dominionist Dominique dominium domino dominus domitable domite Domitian domitic domn domnei domoid dompt domy Don don donable Donacidae donaciform Donal Donald Donar donary donatary donate donated donatee Donatiaceae donation Donatism Donatist Donatistic Donatistical donative donatively donator donatory donatress donax doncella Dondia done donee Donet doney dong donga Dongola Dongolese dongon Donia donjon donkey donkeyback donkeyish donkeyism donkeyman donkeywork Donmeh Donn Donna donna Donne donnered donnert Donnie donnish donnishness donnism donnot donor donorship donought Donovan donship donsie dont donum doob doocot doodab doodad Doodia doodle doodlebug doodler doodlesack doohickey doohickus doohinkey doohinkus dooja dook dooket dookit dool doolee dooley dooli doolie dooly doom doomage doombook doomer doomful dooms doomsday doomsman doomstead doon door doorba doorbell doorboy doorbrand doorcase doorcheek doored doorframe doorhead doorjamb doorkeeper doorknob doorless doorlike doormaid doormaker doormaking doorman doornail doorplate doorpost doorsill doorstead doorstep doorstone doorstop doorward doorway doorweed doorwise dooryard dop dopa dopamelanin dopaoxidase dopatta dope dopebook doper dopester dopey doppelkummel Dopper dopper doppia Doppler dopplerite Dor dor Dora dorab dorad Doradidae dorado doraphobia Dorask Doraskean dorbeetle Dorcas dorcastry Dorcatherium Dorcopsis doree dorestane dorhawk Dori doria Dorian Doric Dorical Doricism Doricize Dorididae Dorine Doris Dorism Dorize dorje Dorking dorlach dorlot dorm dormancy dormant dormer dormered dormie dormient dormilona dormition dormitive dormitory dormouse dormy dorn dorneck dornic dornick dornock Dorobo Doronicum Dorosoma Dorothea Dorothy dorp dorsabdominal dorsabdominally dorsad dorsal dorsale dorsalgia dorsalis dorsally dorsalmost dorsalward dorsalwards dorsel dorser dorsibranch Dorsibranchiata dorsibranchiate dorsicollar dorsicolumn dorsicommissure dorsicornu dorsiduct dorsiferous dorsifixed dorsiflex dorsiflexion dorsiflexor dorsigrade dorsilateral dorsilumbar dorsimedian dorsimesal dorsimeson dorsiparous dorsispinal dorsiventral dorsiventrality dorsiventrally dorsoabdominal dorsoanterior dorsoapical Dorsobranchiata dorsocaudad dorsocaudal dorsocentral dorsocephalad dorsocephalic dorsocervical dorsocervically dorsodynia dorsoepitrochlear dorsointercostal dorsointestinal dorsolateral dorsolumbar dorsomedial dorsomedian dorsomesal dorsonasal dorsonuchal dorsopleural dorsoposteriad dorsoposterior dorsoradial dorsosacral dorsoscapular dorsosternal dorsothoracic dorsoventrad dorsoventral dorsoventrally Dorstenia dorsulum dorsum dorsumbonal dorter dortiness dortiship dorts dorty doruck Dory dory Doryanthes Dorylinae doryphorus dos dosa dosadh dosage dose doser dosimeter dosimetric dosimetrician dosimetrist dosimetry Dosinia dosiology dosis Dositheans dosology doss dossal dossel dosser dosseret dossier dossil dossman Dot dot dotage dotal dotard dotardism dotardly dotardy dotate dotation dotchin dote doted doter Dothideacea dothideaceous Dothideales Dothidella dothienenteritis Dothiorella dotiness doting dotingly dotingness dotish dotishness dotkin dotless dotlike Doto Dotonidae dotriacontane dotted dotter dotterel dottily dottiness dotting dottle dottler Dottore Dotty dotty doty douar double doubled doubledamn doubleganger doublegear doublehanded doublehandedly doublehandedness doublehatching doublehearted doubleheartedness doublehorned doubleleaf doublelunged doubleness doubler doublet doubleted doubleton doubletone doubletree doublets doubling doubloon doubly doubt doubtable doubtably doubtedly doubter doubtful doubtfully doubtfulness doubting doubtingly doubtingness doubtless doubtlessly doubtlessness doubtmonger doubtous doubtsome douc douce doucely douceness doucet douche doucin doucine doudle Doug dough doughbird doughboy doughface doughfaceism doughfoot doughhead doughiness doughlike doughmaker doughmaking doughman doughnut dought doughtily doughtiness doughty doughy Douglas doulocracy doum doundake doup douping dour dourine dourly dourness douse douser dout douter doutous douzepers douzieme dove dovecot doveflower dovefoot dovehouse dovekey dovekie dovelet dovelike doveling dover dovetail dovetailed dovetailer dovetailwise doveweed dovewood dovish Dovyalis dow dowable dowager dowagerism dowcet dowd dowdily dowdiness dowdy dowdyish dowdyism dowed dowel dower doweral doweress dowerless dowery dowf dowie Dowieism Dowieite dowily dowiness dowitch dowitcher dowl dowlas dowless down downbear downbeard downbeat downby downcast downcastly downcastness downcome downcomer downcoming downcry downcurved downcut downdale downdraft downer downface downfall downfallen downfalling downfeed downflow downfold downfolded downgate downgone downgrade downgrowth downhanging downhaul downheaded downhearted downheartedly downheartedness downhill downily downiness Downing Downingia downland downless downlie downlier downligging downlike downline downlooked downlooker downlying downmost downness downpour downpouring downright downrightly downrightness downrush downrushing downset downshare downshore downside downsinking downsitting downsliding downslip downslope downsman downspout downstage downstairs downstate downstater downstream downstreet downstroke downswing downtake downthrow downthrown downthrust Downton downtown downtrampling downtreading downtrend downtrodden downtroddenness downturn downward downwardly downwardness downway downweed downweigh downweight downweighted downwind downwith downy dowp dowry dowsabel dowse dowser dowset doxa Doxantha doxastic doxasticon doxographer doxographical doxography doxological doxologically doxologize doxology doxy Doyle doze dozed dozen dozener dozenth dozer dozily doziness dozy dozzled drab Draba drabbet drabbish drabble drabbler drabbletail drabbletailed drabby drably drabness Dracaena Dracaenaceae drachm drachma drachmae drachmai drachmal dracma Draco Dracocephalum Draconian Draconianism Draconic draconic Draconically Draconid Draconis Draconism draconites draconitic dracontian dracontiasis dracontic dracontine dracontites Dracontium dracunculus draegerman draff draffman draffy draft draftage draftee drafter draftily draftiness drafting draftman draftmanship draftproof draftsman draftsmanship draftswoman draftswomanship draftwoman drafty drag dragade dragbar dragbolt dragged dragger draggily dragginess dragging draggingly draggle draggletail draggletailed draggletailedly draggletailedness draggly draggy draghound dragline dragman dragnet drago dragoman dragomanate dragomanic dragomanish dragon dragonesque dragoness dragonet dragonfish dragonfly dragonhead dragonhood dragonish dragonism dragonize dragonkind dragonlike dragonnade dragonroot dragontail dragonwort dragoon dragoonable dragoonade dragoonage dragooner dragrope dragsaw dragsawing dragsman dragstaff drail drain drainable drainage drainboard draine drained drainer drainerman drainless drainman drainpipe draintile draisine drake drakestone drakonite dram drama dramalogue Dramamine dramatic dramatical dramatically dramaticism dramatics dramaticule dramatism dramatist dramatizable dramatization dramatize dramatizer dramaturge dramaturgic dramaturgical dramaturgist dramaturgy dramm drammage dramme drammed drammer dramming drammock dramseller dramshop drang drank drant drapable Draparnaldia drape drapeable draper draperess draperied drapery drapetomania drapping drassid Drassidae drastic drastically drat dratchell drate dratted dratting draught draughtboard draughthouse draughtman draughtmanship draughts draughtsman draughtsmanship draughtswoman draughtswomanship Dravida Dravidian Dravidic dravya draw drawable drawarm drawback drawbar drawbeam drawbench drawboard drawbolt drawbore drawboy drawbridge Drawcansir drawcut drawdown drawee drawer drawers drawfile drawfiling drawgate drawgear drawglove drawhead drawhorse drawing drawk drawknife drawknot drawl drawlatch drawler drawling drawlingly drawlingness drawlink drawloom drawly drawn drawnet drawoff drawout drawplate drawpoint drawrod drawshave drawsheet drawspan drawspring drawstop drawstring drawtongs drawtube dray drayage drayman drazel dread dreadable dreader dreadful dreadfully dreadfulness dreadingly dreadless dreadlessly dreadlessness dreadly dreadness dreadnought dream dreamage dreamer dreamery dreamful dreamfully dreamfulness dreamhole dreamily dreaminess dreamingly dreamish dreamland dreamless dreamlessly dreamlessness dreamlet dreamlike dreamlit dreamlore dreamsily dreamsiness dreamsy dreamt dreamtide dreamwhile dreamwise dreamworld dreamy drear drearfully drearily dreariment dreariness drearisome drearly drearness dreary dredge dredgeful dredger dredging dree dreep dreepiness dreepy dreg dreggily dregginess dreggish dreggy dregless dregs dreiling Dreissensia dreissiger drench drencher drenching drenchingly dreng drengage Drepanaspis Drepanidae Drepanididae drepaniform Drepanis drepanium drepanoid Dreparnaudia dress dressage dressed dresser dressership dressily dressiness dressing dressline dressmaker dressmakership dressmakery dressmaking dressy drest Drew drew drewite Dreyfusism Dreyfusist drias drib dribble dribblement dribbler driblet driddle dried drier drierman driest drift driftage driftbolt drifter drifting driftingly driftland driftless driftlessness driftlet driftman driftpiece driftpin driftway driftweed driftwind driftwood drifty drightin drill driller drillet drilling drillman drillmaster drillstock Drimys dringle drink drinkability drinkable drinkableness drinkably drinker drinking drinkless drinkproof drinn drip dripper dripping dripple dripproof drippy dripstick dripstone drisheen drisk drivable drivage drive driveaway driveboat drivebolt drivehead drivel driveler drivelingly driven drivepipe driver driverless drivership drivescrew driveway drivewell driving drivingly drizzle drizzly drochuil droddum drofland drogh drogher drogherman drogue droit droitsman droitural droiturel Drokpa droll drollery drollingly drollish drollishness drollist drollness drolly Dromaeognathae dromaeognathism dromaeognathous Dromaeus drome dromedarian dromedarist dromedary drometer Dromiacea dromic Dromiceiidae Dromiceius Dromicia dromograph dromomania dromometer dromond Dromornis dromos dromotropic drona dronage drone dronepipe droner drongo droningly dronish dronishly dronishness dronkgrass drony drool droop drooper drooping droopingly droopingness droopt droopy drop dropberry dropcloth dropflower drophead droplet droplight droplike dropling dropman dropout dropper dropping droppingly droppy dropseed dropsical dropsically dropsicalness dropsied dropsy dropsywort dropt dropwise dropworm dropwort Droschken Drosera Droseraceae droseraceous droshky drosky drosograph drosometer Drosophila Drosophilidae Drosophyllum dross drossel drosser drossiness drossless drossy drostdy droud drought droughtiness droughty drouk drove drover drovy drow drown drowner drowningly drowse drowsily drowsiness drowsy drub drubber drubbing drubbly drucken drudge drudger drudgery drudgingly drudgism druery drug drugeteria drugger druggery drugget druggeting druggist druggister druggy drugless drugman drugshop drugstore druid druidess druidic druidical druidism druidry druith Drukpa drum drumbeat drumble drumbledore drumbler drumfire drumfish drumhead drumheads drumlike drumlin drumline drumlinoid drumloid drumloidal drumly drummer drumming drummy drumskin drumstick drumwood drung drungar drunk drunkard drunken drunkenly drunkenness drunkensome drunkenwise drunkery Drupa Drupaceae drupaceous drupal drupe drupel drupelet drupeole drupetum drupiferous Druse druse Drusean Drusedom drusy druxiness druxy dry dryad dryadetum dryadic dryas dryasdust drybeard drybrained drycoal Drydenian Drydenism dryfoot drygoodsman dryhouse drying dryish dryly Drynaria dryness Dryobalanops Dryope Dryopes Dryophyllum Dryopians dryopithecid Dryopithecinae dryopithecine Dryopithecus Dryops Dryopteris dryopteroid drysalter drysaltery dryster dryth dryworker Dschubba duad duadic dual Duala duali dualin dualism dualist dualistic dualistically duality dualization dualize dually Dualmutef dualogue Duane duarch duarchy dub dubash dubb dubba dubbah dubbeltje dubber dubbing dubby Dubhe Dubhgall dubiety dubiocrystalline dubiosity dubious dubiously dubiousness dubitable dubitably dubitancy dubitant dubitate dubitatingly dubitation dubitative dubitatively Duboisia duboisin duboisine Dubonnet dubs ducal ducally ducamara ducape ducat ducato ducatoon ducdame duces Duchesnea Duchess duchess duchesse duchesslike duchy duck duckbill duckblind duckboard duckboat ducker duckery duckfoot duckhearted duckhood duckhouse duckhunting duckie ducking duckling ducklingship duckmeat duckpin duckpond duckstone duckweed duckwife duckwing Duco duct ducted ductibility ductible ductile ductilely ductileness ductilimeter ductility ductilize duction ductless ductor ductule Ducula Duculinae dud dudaim dudder duddery duddies dude dudeen dudgeon dudine dudish dudishness dudism dudler dudley Dudleya dudleyite dudman due duel dueler dueling duelist duelistic duello dueness duenna duennadom duennaship duer Duessa duet duettist duff duffadar duffel duffer dufferdom duffing dufoil dufrenite dufrenoysite dufter dufterdar duftery dug dugal dugdug duggler dugong Dugongidae dugout dugway duhat Duhr duiker duikerbok duim Duit duit dujan Duke duke dukedom dukeling dukely dukery dukeship dukhn dukker dukkeripen Dulanganes Dulat dulbert dulcet dulcetly dulcetness dulcian dulciana dulcification dulcifluous dulcify dulcigenic dulcimer Dulcin Dulcinea Dulcinist dulcitol dulcitude dulcose duledge duler dulia dull dullard dullardism dullardness dullbrained duller dullery dullhead dullhearted dullification dullify dullish dullity dullness dullpate dullsome dully dulosis dulotic dulse dulseman dult dultie dulwilly duly dum duma dumaist dumb dumba dumbbell dumbbeller dumbcow dumbfounder dumbfounderment dumbhead dumbledore dumbly dumbness dumdum dumetose dumfound dumfounder dumfounderment dummel dummered dumminess dummy dummyism dummyweed Dumontia Dumontiaceae dumontite dumortierite dumose dumosity dump dumpage dumpcart dumper dumpily dumpiness dumping dumpish dumpishly dumpishness dumple dumpling dumpoke dumpy dumsola dun dunair dunal dunbird Duncan dunce duncedom duncehood duncery dunch Dunciad duncical duncify duncish duncishly duncishness dundasite dunder dunderhead dunderheaded dunderheadedness dunderpate dune dunelike dunfish dung Dungan dungannonite dungaree dungbeck dungbird dungbred dungeon dungeoner dungeonlike dunger dunghill dunghilly dungol dungon dungy dungyard dunite dunk dunkadoo Dunkard Dunker dunker Dunkirk Dunkirker Dunlap dunlin Dunlop dunnage dunne dunner dunness dunnish dunnite dunnock dunny dunpickle Duns dunst dunstable dunt duntle duny dunziekte duo duocosane duodecahedral duodecahedron duodecane duodecennial duodecillion duodecimal duodecimality duodecimally duodecimfid duodecimo duodecimole duodecuple duodena duodenal duodenary duodenate duodenation duodene duodenectomy duodenitis duodenocholangitis duodenocholecystostomy duodenocholedochotomy duodenocystostomy duodenoenterostomy duodenogram duodenojejunal duodenojejunostomy duodenopancreatectomy duodenoscopy duodenostomy duodenotomy duodenum duodrama duograph duogravure duole duoliteral duologue duomachy duopod duopolistic duopoly duopsonistic duopsony duosecant duotone duotriacontane duotype dup dupability dupable dupe dupedom duper dupery dupion dupla duplation duple duplet duplex duplexity duplicability duplicable duplicand duplicate duplication duplicative duplicator duplicature duplicia duplicident Duplicidentata duplicidentate duplicipennate duplicitas duplicity duplification duplify duplone dupondius duppy dura durability durable durableness durably durain dural Duralumin duramatral duramen durance Durandarte durangite Durango Durani durant Duranta duraplasty duraquara duraspinalis duration durational durationless durative durax durbachite Durban durbar durdenite dure durene durenol duress duressor durgan Durham durian duridine Durindana during duringly Durio durity durmast durn duro Duroc durometer duroquinone durra durrie durrin durry durst durukuli durwaun duryl Duryodhana Durzada dusack duscle dush dusio dusk dusken duskily duskiness duskingtide duskish duskishly duskishness duskly duskness dusky dust dustbin dustbox dustcloth dustee duster dusterman dustfall dustily Dustin dustiness dusting dustless dustlessness dustman dustpan dustproof dustuck dustwoman dusty dustyfoot Dusun Dutch dutch Dutcher Dutchify Dutchman Dutchy duteous duteously duteousness dutiability dutiable dutied dutiful dutifully dutifulness dutra duty dutymonger duumvir duumviral duumvirate duvet duvetyn dux duyker dvaita dvandva dwale dwalm Dwamish dwang dwarf dwarfish dwarfishly dwarfishness dwarfism dwarfling dwarfness dwarfy dwayberry Dwayne dwell dwelled dweller dwelling dwelt Dwight dwindle dwindlement dwine Dwyka dyad dyadic Dyak dyakisdodecahedron Dyakish dyarchic dyarchical dyarchy Dyas Dyassic dyaster Dyaus dyce dye dyeable dyehouse dyeing dyeleaves dyemaker dyemaking dyer dyester dyestuff dyeware dyeweed dyewood dygogram dying dyingly dyingness dyke dykehopper dyker dykereeve Dylan dynagraph dynameter dynametric dynametrical dynamic dynamical dynamically dynamics dynamis dynamism dynamist dynamistic dynamitard dynamite dynamiter dynamitic dynamitical dynamitically dynamiting dynamitish dynamitism dynamitist dynamization dynamize dynamo dynamoelectric dynamoelectrical dynamogenesis dynamogenic dynamogenous dynamogenously dynamogeny dynamometamorphic dynamometamorphism dynamometamorphosed dynamometer dynamometric dynamometrical dynamometry dynamomorphic dynamoneure dynamophone dynamostatic dynamotor dynast Dynastes dynastical dynastically dynasticism dynastid dynastidan Dynastides Dynastinae dynasty dynatron dyne dyophone Dyophysite Dyophysitic Dyophysitical Dyophysitism dyotheism Dyothelete Dyotheletian Dyotheletic Dyotheletical Dyotheletism Dyothelism dyphone dysacousia dysacousis dysanalyte dysaphia dysarthria dysarthric dysarthrosis dysbulia dysbulic dyschiria dyschroa dyschroia dyschromatopsia dyschromatoptic dyschronous dyscrasia dyscrasial dyscrasic dyscrasite dyscratic dyscrystalline dysenteric dysenterical dysentery dysepulotic dysepulotical dyserethisia dysergasia dysergia dysesthesia dysesthetic dysfunction dysgenesic dysgenesis dysgenetic dysgenic dysgenical dysgenics dysgeogenous dysgnosia dysgraphia dysidrosis dyskeratosis dyskinesia dyskinetic dyslalia dyslexia dyslogia dyslogistic dyslogistically dyslogy dysluite dyslysin dysmenorrhea dysmenorrheal dysmerism dysmeristic dysmerogenesis dysmerogenetic dysmeromorph dysmeromorphic dysmetria dysmnesia dysmorphism dysmorphophobia dysneuria dysnomy dysodile dysodontiasis dysorexia dysorexy dysoxidation dysoxidizable dysoxidize dyspathetic dyspathy dyspepsia dyspepsy dyspeptic dyspeptical dyspeptically dysphagia dysphagic dysphasia dysphasic dysphemia dysphonia dysphonic dysphoria dysphoric dysphotic dysphrasia dysphrenia dyspituitarism dysplasia dysplastic dyspnea dyspneal dyspneic dyspnoic dysprosia dysprosium dysraphia dyssnite Dyssodia dysspermatism dyssynergia dyssystole dystaxia dystectic dysteleological dysteleologist dysteleology dysthyroidism dystocia dystocial dystome dystomic dystomous dystrophia dystrophic dystrophy dysuria dysuric dysyntribite dytiscid Dytiscidae Dytiscus dzeren Dzungar E e ea each eachwhere eager eagerly eagerness eagle eaglelike eagless eaglestone eaglet eaglewood eagre ean ear earache earbob earcap earcockle eardrop eardropper eardrum eared earflower earful earhole earing earjewel Earl earl earlap earldom Earle earless earlet earlike earliness earlish earlock earlship early earmark earn earner earnest earnestly earnestness earnful Earnie earning earnings earphone earpick earpiece earplug earreach earring earringed earscrew earshot earsore earsplitting eartab earth earthboard earthborn earthbred earthdrake earthed earthen earthenhearted earthenware earthfall earthfast earthgall earthgrubber earthian earthiness earthkin earthless earthlight earthlike earthliness earthling earthly earthmaker earthmaking earthnut earthpea earthquake earthquaked earthquaken earthquaking Earthshaker earthshine earthshock earthslide earthsmoke earthstar earthtongue earthwall earthward earthwards earthwork earthworm earthy earwax earwig earwigginess earwiggy earwitness earworm earwort ease easeful easefully easefulness easel easeless easement easer easier easiest easily easiness easing east eastabout eastbound Easter easter easterling easterly Eastern eastern easterner Easternism Easternly easternmost Eastertide easting Eastlake eastland eastmost Eastre eastward eastwardly easy easygoing easygoingness eat eatability eatable eatableness eatage Eatanswill eatberry eaten eater eatery eating eats eave eaved eavedrop eaver eaves eavesdrop eavesdropper eavesdropping ebb ebbman Eben Ebenaceae ebenaceous Ebenales ebeneous Ebenezer Eberthella Ebionism Ebionite Ebionitic Ebionitism Ebionize Eboe eboe ebon ebonist ebonite ebonize ebony ebracteate ebracteolate ebriate ebriety ebriosity ebrious ebriously ebullate ebullience ebulliency ebullient ebulliently ebulliometer ebullioscope ebullioscopic ebullioscopy ebullition ebullitive ebulus eburated eburine Eburna eburnated eburnation eburnean eburneoid eburneous eburnian eburnification ecad ecalcarate ecanda ecardinal Ecardines ecarinate ecarte Ecaudata ecaudate Ecballium ecbatic ecblastesis ecbole ecbolic Ecca eccaleobion eccentrate eccentric eccentrical eccentrically eccentricity eccentring eccentrometer ecchondroma ecchondrosis ecchondrotome ecchymoma ecchymose ecchymosis ecclesia ecclesial ecclesiarch ecclesiarchy ecclesiast Ecclesiastes ecclesiastic ecclesiastical ecclesiastically ecclesiasticism ecclesiasticize ecclesiastics Ecclesiasticus ecclesiastry ecclesioclastic ecclesiography ecclesiolater ecclesiolatry ecclesiologic ecclesiological ecclesiologically ecclesiologist ecclesiology ecclesiophobia eccoprotic eccoproticophoric eccrinology eccrisis eccritic eccyclema eccyesis ecdemic ecdemite ecderon ecderonic ecdysiast ecdysis ecesic ecesis ecgonine eche echea echelette echelon echelonment Echeloot Echeneidae echeneidid Echeneididae echeneidoid Echeneis Echeveria echidna Echidnidae Echimys Echinacea echinal echinate echinid Echinidea echinital echinite Echinocactus Echinocaris Echinocereus Echinochloa echinochrome echinococcus Echinoderes Echinoderidae echinoderm Echinoderma echinodermal Echinodermata echinodermatous echinodermic Echinodorus echinoid Echinoidea echinologist echinology Echinomys Echinopanax Echinops echinopsine Echinorhinidae Echinorhinus Echinorhynchus Echinospermum Echinosphaerites Echinosphaeritidae Echinostoma Echinostomatidae echinostome echinostomiasis Echinozoa echinulate echinulated echinulation echinuliform echinus Echis echitamine Echites Echium echiurid Echiurida echiuroid Echiuroidea Echiurus echo echoer echoic echoingly echoism echoist echoize echolalia echolalic echoless echometer echopractic echopraxia echowise Echuca eciliate Eciton ecize Eckehart ecklein eclair eclampsia eclamptic eclat eclectic eclectical eclectically eclecticism eclecticize Eclectics eclectism eclectist eclegm eclegma eclipsable eclipsareon eclipsation eclipse eclipser eclipsis ecliptic ecliptical ecliptically eclogite eclogue eclosion ecmnesia ecoid ecole ecologic ecological ecologically ecologist ecology econometer econometric econometrician econometrics economic economical economically economics economism economist Economite economization economize economizer economy ecophene ecophobia ecorticate ecospecies ecospecific ecospecifically ecostate ecosystem ecotonal ecotone ecotype ecotypic ecotypically ecphonesis ecphorable ecphore ecphoria ecphorization ecphorize ecphrasis ecrasite ecru ecrustaceous ecstasis ecstasize ecstasy ecstatic ecstatica ecstatical ecstatically ecstaticize ecstrophy ectad ectadenia ectal ectally ectasia ectasis ectatic ectene ectental ectepicondylar ectethmoid ectethmoidal Ecthesis ecthetically ecthlipsis ecthyma ectiris ectobatic ectoblast ectoblastic ectobronchium ectocardia Ectocarpaceae ectocarpaceous Ectocarpales ectocarpic ectocarpous Ectocarpus ectocinerea ectocinereal ectocoelic ectocondylar ectocondyle ectocondyloid ectocornea ectocranial ectocuneiform ectocuniform ectocyst ectodactylism ectoderm ectodermal ectodermic ectodermoidal ectodermosis ectodynamomorphic ectoentad ectoenzyme ectoethmoid ectogenesis ectogenic ectogenous ectoglia Ectognatha ectolecithal ectoloph ectomere ectomeric ectomesoblast ectomorph ectomorphic ectomorphy ectonephridium ectoparasite ectoparasitic Ectoparasitica ectopatagium ectophloic ectophyte ectophytic ectopia ectopic Ectopistes ectoplacenta ectoplasm ectoplasmatic ectoplasmic ectoplastic ectoplasy Ectoprocta ectoproctan ectoproctous ectopterygoid ectopy ectoretina ectorganism ectorhinal ectosarc ectosarcous ectoskeleton ectosomal ectosome ectosphenoid ectosphenotic ectosphere ectosteal ectosteally ectostosis ectotheca ectotoxin Ectotrophi ectotrophic ectozoa ectozoan ectozoic ectozoon ectrodactylia ectrodactylism ectrodactyly ectrogenic ectrogeny ectromelia ectromelian ectromelic ectromelus ectropion ectropium ectropometer ectrosyndactyly ectypal ectype ectypography Ecuadoran Ecuadorian ecuelling ecumenic ecumenical ecumenicalism ecumenicality ecumenically ecumenicity ecyphellate eczema eczematization eczematoid eczematosis eczematous Ed edacious edaciously edaciousness edacity Edana edaphic edaphology edaphon Edaphosauria Edaphosaurus Edda Eddaic edder Eddic Eddie eddish eddo Eddy eddy eddyroot edea edeagra edeitis edelweiss edema edematous edemic Eden Edenic edenite Edenization Edenize edental edentalous Edentata edentate edentulate edentulous edeodynia edeology edeomania edeoscopy edeotomy Edessan edestan edestin Edestosaurus Edgar edge edgebone edged edgeless edgemaker edgemaking edgeman edger edgerman edgeshot edgestone edgeways edgeweed edgewise edginess edging edgingly edgrew edgy edh edibility edible edibleness edict edictal edictally edicule edificable edification edificator edificatory edifice edificial edifier edify edifying edifyingly edifyingness edingtonite edit edital Edith edition editor editorial editorialize editorially editorship editress Ediya Edmond Edmund Edna Edo Edomite Edomitish Edoni Edriasteroidea Edrioasteroid Edrioasteroidea Edriophthalma edriophthalmatous edriophthalmian edriophthalmic edriophthalmous Eduardo Educabilia educabilian educability educable educand educatable educate educated educatee education educationable educational educationalism educationalist educationally educationary educationist educative educator educatory educatress educe educement educible educive educt eduction eductive eductor edulcorate edulcoration edulcorative edulcorator Eduskunta Edward Edwardean Edwardeanism Edwardian Edwardine Edwardsia Edwardsiidae Edwin Edwina eegrass eel eelboat eelbob eelbobber eelcake eelcatcher eeler eelery eelfare eelfish eelgrass eellike eelpot eelpout eelshop eelskin eelspear eelware eelworm eely eer eerie eerily eeriness eerisome effable efface effaceable effacement effacer effect effecter effectful effectible effective effectively effectiveness effectivity effectless effector effects effectual effectuality effectualize effectually effectualness effectuate effectuation effeminacy effeminate effeminately effeminateness effemination effeminatize effeminization effeminize effendi efferent effervesce effervescence effervescency effervescent effervescible effervescingly effervescive effete effeteness effetman efficacious efficaciously efficaciousness efficacity efficacy efficience efficiency efficient efficiently Effie effigial effigiate effigiation effigurate effiguration effigy efflate efflation effloresce efflorescence efflorescency efflorescent efflower effluence effluency effluent effluvia effluvial effluviate effluviography effluvious effluvium efflux effluxion effodient Effodientia efform efformation efformative effort effortful effortless effortlessly effossion effraction effranchise effranchisement effrontery effulge effulgence effulgent effulgently effund effuse effusiometer effusion effusive effusively effusiveness Efik eflagelliferous efoliolate efoliose efoveolate eft eftest eftsoons egad egalitarian egalitarianism egality Egba Egbert Egbo egence egeran Egeria egest egesta egestion egestive egg eggberry eggcup eggcupful eggeater egger eggfish eggfruit egghead egghot egging eggler eggless egglike eggnog eggplant eggshell eggy egilops egipto Eglamore eglandular eglandulose eglantine eglatere eglestonite egma ego egocentric egocentricity egocentrism Egocerus egohood egoism egoist egoistic egoistical egoistically egoity egoize egoizer egol egolatrous egomania egomaniac egomaniacal egomism egophonic egophony egosyntonic egotheism egotism egotist egotistic egotistical egotistically egotize egregious egregiously egregiousness egress egression egressive egressor egret Egretta egrimony egueiite egurgitate eguttulate Egypt Egyptian Egyptianism Egyptianization Egyptianize Egyptize Egyptologer Egyptologic Egyptological Egyptologist Egyptology eh Ehatisaht eheu ehlite Ehretia Ehretiaceae ehrwaldite ehuawa eichbergite Eichhornia eichwaldite eicosane eident eidently eider eidetic eidograph eidolic eidolism eidology eidolology eidolon eidoptometry eidouranion eigenfunction eigenvalue eight eighteen eighteenfold eighteenmo eighteenth eighteenthly eightfoil eightfold eighth eighthly eightieth eightling eightpenny eightscore eightsman eightsome eighty eightyfold eigne Eikonogen eikonology Eileen Eimak eimer Eimeria einkorn Einsteinian Eireannach Eirene eiresione eisegesis eisegetical eisodic eisteddfod eisteddfodic eisteddfodism either ejaculate ejaculation ejaculative ejaculator ejaculatory Ejam eject ejecta ejectable ejection ejective ejectively ejectivity ejectment ejector ejicient ejoo ekaboron ekacaesium ekaha ekamanganese ekasilicon ekatantalum eke ekebergite eker ekerite eking ekka Ekoi ekphore Ekron Ekronite ektene ektenes ektodynamorphic el elaborate elaborately elaborateness elaboration elaborative elaborator elaboratory elabrate Elachista Elachistaceae elachistaceous Elaeagnaceae elaeagnaceous Elaeagnus Elaeis elaeoblast elaeoblastic Elaeocarpaceae elaeocarpaceous Elaeocarpus Elaeococca Elaeodendron elaeodochon elaeomargaric elaeometer elaeoptene elaeosaccharum elaeothesium elaidate elaidic elaidin elaidinic elain Elaine elaine elaioleucite elaioplast elaiosome Elamite Elamitic Elamitish elance eland elanet Elanus Elaphe Elaphebolion elaphine Elaphodus Elaphoglossum Elaphomyces Elaphomycetaceae Elaphrium elaphure elaphurine Elaphurus elapid Elapidae Elapinae elapine elapoid Elaps elapse Elapsoidea elasmobranch elasmobranchian elasmobranchiate Elasmobranchii elasmosaur Elasmosaurus elasmothere Elasmotherium elastance elastic elastica elastically elastician elasticin elasticity elasticize elasticizer elasticness elastin elastivity elastomer elastomeric elastometer elastometry elastose elatcha elate elated elatedly elatedness elater elaterid Elateridae elaterin elaterite elaterium elateroid Elatha Elatinaceae elatinaceous Elatine elation elative elator elatrometer elb Elbert Elberta elbow elbowboard elbowbush elbowchair elbowed elbower elbowpiece elbowroom elbowy elcaja elchee eld elder elderberry elderbrotherhood elderbrotherish elderbrotherly elderbush elderhood elderliness elderly elderman eldership eldersisterly elderwoman elderwood elderwort eldest eldin elding Eldred eldress eldritch Elean Eleanor Eleatic Eleaticism Eleazar elecampane elect electable electee electicism election electionary electioneer electioneerer elective electively electiveness electivism electivity electly elector electoral electorally electorate electorial electorship Electra electragist electragy electralize electrepeter electress electret electric electrical electricalize electrically electricalness electrician electricity electricize electrics electriferous electrifiable electrification electrifier electrify electrion electrionic electrizable electrization electrize electrizer electro electroacoustic electroaffinity electroamalgamation electroanalysis electroanalytic electroanalytical electroanesthesia electroballistic electroballistics electrobath electrobiological electrobiologist electrobiology electrobioscopy electroblasting electrobrasser electrobus electrocapillarity electrocapillary electrocardiogram electrocardiograph electrocardiographic electrocardiography electrocatalysis electrocatalytic electrocataphoresis electrocataphoretic electrocauterization electrocautery electroceramic electrochemical electrochemically electrochemist electrochemistry electrochronograph electrochronographic electrochronometer electrochronometric electrocoagulation electrocoating electrocolloidal electrocontractility electrocorticogram electroculture electrocute electrocution electrocutional electrocutioner electrocystoscope electrode electrodeless electrodentistry electrodeposit electrodepositable electrodeposition electrodepositor electrodesiccate electrodesiccation electrodiagnosis electrodialysis electrodialyze electrodialyzer electrodiplomatic electrodispersive electrodissolution electrodynamic electrodynamical electrodynamics electrodynamism electrodynamometer electroencephalogram electroencephalograph electroencephalography electroendosmose electroendosmosis electroendosmotic electroengrave electroengraving electroergometer electroetching electroethereal electroextraction electroform electroforming electrofuse electrofused electrofusion electrogalvanic electrogalvanize electrogenesis electrogenetic electrogild electrogilding electrogilt electrograph electrographic electrographite electrography electroharmonic electrohemostasis electrohomeopathy electrohorticulture electrohydraulic electroimpulse electroindustrial electroionic electroirrigation electrokinematics electrokinetic electrokinetics electrolier electrolithotrity electrologic electrological electrologist electrology electroluminescence electroluminescent electrolysis electrolyte electrolytic electrolytical electrolytically electrolyzability electrolyzable electrolyzation electrolyze electrolyzer electromagnet electromagnetic electromagnetical electromagnetically electromagnetics electromagnetism electromagnetist electromassage electromechanical electromechanics electromedical electromer electromeric electromerism electrometallurgical electrometallurgist electrometallurgy electrometer electrometric electrometrical electrometrically electrometry electromobile electromobilism electromotion electromotive electromotivity electromotograph electromotor electromuscular electromyographic electron electronarcosis electronegative electronervous electronic electronics electronographic electrooptic electrooptical electrooptically electrooptics electroosmosis electroosmotic electroosmotically electrootiatrics electropathic electropathology electropathy electropercussive electrophobia electrophone electrophore electrophoresis electrophoretic electrophoric Electrophoridae electrophorus electrophotometer electrophotometry electrophototherapy electrophrenic electrophysics electrophysiological electrophysiologist electrophysiology electropism electroplate electroplater electroplating electroplax electropneumatic electropneumatically electropoion electropolar electropositive electropotential electropower electropsychrometer electropult electropuncturation electropuncture electropuncturing electropyrometer electroreceptive electroreduction electrorefine electroscission electroscope electroscopic electrosherardizing electroshock electrosmosis electrostatic electrostatical electrostatically electrostatics electrosteel electrostenolysis electrostenolytic electrostereotype electrostriction electrosurgery electrosurgical electrosynthesis electrosynthetic electrosynthetically electrotactic electrotautomerism electrotaxis electrotechnic electrotechnical electrotechnician electrotechnics electrotechnology electrotelegraphic electrotelegraphy electrotelethermometer electrotellurograph electrotest electrothanasia electrothanatosis electrotherapeutic electrotherapeutical electrotherapeutics electrotherapeutist electrotherapist electrotherapy electrothermal electrothermancy electrothermic electrothermics electrothermometer electrothermostat electrothermostatic electrothermotic electrotitration electrotonic electrotonicity electrotonize electrotonus electrotrephine electrotropic electrotropism electrotype electrotyper electrotypic electrotyping electrotypist electrotypy electrovalence electrovalency electrovection electroviscous electrovital electrowin electrum electuary eleemosynarily eleemosynariness eleemosynary elegance elegancy elegant elegantly elegiac elegiacal elegiambic elegiambus elegiast elegist elegit elegize elegy eleidin element elemental elementalism elementalist elementalistic elementalistically elementality elementalize elementally elementarily elementariness elementary elementoid elemi elemicin elemin elench elenchi elenchic elenchical elenchically elenchize elenchtic elenchtical elenctic elenge eleoblast Eleocharis eleolite eleomargaric eleometer eleonorite eleoptene eleostearate eleostearic elephant elephanta elephantiac elephantiasic elephantiasis elephantic elephanticide Elephantidae elephantine elephantlike elephantoid elephantoidal Elephantopus elephantous elephantry Elephas Elettaria Eleusine Eleusinia Eleusinian Eleusinion Eleut eleutherarch Eleutheri Eleutheria Eleutherian Eleutherios eleutherism eleutherodactyl Eleutherodactyli Eleutherodactylus eleutheromania eleutheromaniac eleutheromorph eleutheropetalous eleutherophyllous eleutherosepalous Eleutherozoa eleutherozoan elevate elevated elevatedly elevatedness elevating elevatingly elevation elevational elevator elevatory eleven elevener elevenfold eleventh eleventhly elevon elf elfenfolk elfhood elfic elfin elfinwood elfish elfishly elfishness elfkin elfland elflike elflock elfship elfwife elfwort Eli Elia Elian Elianic Elias eliasite elicit elicitable elicitate elicitation elicitor elicitory elide elidible eligibility eligible eligibleness eligibly Elihu Elijah eliminable eliminand eliminant eliminate elimination eliminative eliminator eliminatory Elinor Elinvar Eliot Eliphalet eliquate eliquation Elisabeth Elisha Elishah elision elisor Elissa elite elixir Eliza Elizabeth Elizabethan Elizabethanism Elizabethanize elk Elkanah Elkdom Elkesaite elkhorn elkhound Elkoshite elkslip Elkuma elkwood ell Ella ellachick ellagate ellagic ellagitannin Ellasar elle elleck Ellen ellenyard Ellerian ellfish Ellice Ellick Elliot Elliott ellipse ellipses ellipsis ellipsograph ellipsoid ellipsoidal ellipsone ellipsonic elliptic elliptical elliptically ellipticalness ellipticity elliptograph elliptoid ellops ellwand elm Elmer elmy Eloah elocular elocute elocution elocutionary elocutioner elocutionist elocutionize elod Elodea Elodeaceae Elodes eloge elogium Elohim Elohimic Elohism Elohist Elohistic eloign eloigner eloignment Eloise Elon elongate elongated elongation elongative Elonite elope elopement eloper Elopidae elops eloquence eloquent eloquential eloquently eloquentness Elotherium elotillo elpasolite elpidite Elric els Elsa else elsehow elsewards elseways elsewhen elsewhere elsewheres elsewhither elsewise Elsholtzia elsin elt eluate elucidate elucidation elucidative elucidator elucidatory elucubrate elucubration elude eluder elusion elusive elusively elusiveness elusoriness elusory elute elution elutor elutriate elutriation elutriator eluvial eluviate eluviation eluvium elvan elvanite elvanitic elver elves elvet Elvira Elvis elvish elvishly Elwood elydoric Elymi Elymus Elysee Elysia elysia Elysian Elysiidae Elysium elytral elytriferous elytriform elytrigerous elytrin elytrocele elytroclasia elytroid elytron elytroplastic elytropolypus elytroposis elytrorhagia elytrorrhagia elytrorrhaphy elytrostenosis elytrotomy elytrous elytrum Elzevir Elzevirian Em em emaciate emaciation emajagua emanant emanate emanation emanational emanationism emanationist emanatism emanatist emanatistic emanativ emanative emanatively emanator emanatory emancipate emancipation emancipationist emancipatist emancipative emancipator emancipatory emancipatress emancipist emandibulate emanium emarcid emarginate emarginately emargination Emarginula emasculate emasculation emasculative emasculator emasculatory Embadomonas emball emballonurid Emballonuridae emballonurine embalm embalmer embalmment embank embankment embannered embar embargo embargoist embark embarkation embarkment embarras embarrass embarrassed embarrassedly embarrassing embarrassingly embarrassment embarrel embassage embassy embastioned embathe embatholithic embattle embattled embattlement embay embayment Embden embed embedment embeggar Embelia embelic embellish embellisher embellishment ember embergoose Emberiza emberizidae Emberizinae emberizine embezzle embezzlement embezzler Embiidae Embiidina embind Embiodea Embioptera embiotocid Embiotocidae embiotocoid embira embitter embitterer embitterment emblaze emblazer emblazon emblazoner emblazonment emblazonry emblem emblema emblematic emblematical emblematically emblematicalness emblematicize emblematist emblematize emblematology emblement emblemist emblemize emblemology emblic emblossom embodier embodiment embody embog emboitement embolden emboldener embole embolectomy embolemia embolic emboliform embolism embolismic embolismus embolite embolium embolize embolo embololalia Embolomeri embolomerism embolomerous embolomycotic embolum embolus emboly emborder emboscata embosom emboss embossage embosser embossing embossman embossment embosture embottle embouchure embound embow embowed embowel emboweler embowelment embower embowerment embowment embox embrace embraceable embraceably embracement embraceor embracer embracery embracing embracingly embracingness embracive embrail embranchment embrangle embranglement embrasure embreathe embreathement Embrica embright embrittle embrittlement embroaden embrocate embrocation embroider embroiderer embroideress embroidery embroil embroiler embroilment embronze embrown embryectomy embryo embryocardia embryoctonic embryoctony embryoferous embryogenesis embryogenetic embryogenic embryogeny embryogony embryographer embryographic embryography embryoid embryoism embryologic embryological embryologically embryologist embryology embryoma embryon embryonal embryonary embryonate embryonated embryonic embryonically embryoniferous embryoniform embryony embryopathology embryophagous embryophore Embryophyta embryophyte embryoplastic embryoscope embryoscopic embryotega embryotic embryotome embryotomy embryotrophic embryotrophy embryous embryulcia embryulcus embubble embuia embus embusk embuskin emcee eme emeer emeership Emeline emend emendable emendandum emendate emendation emendator emendatory emender emerald emeraldine emeraude emerge emergence emergency emergent emergently emergentness Emerita emerited emeritus emerize emerse emersed emersion Emersonian Emersonianism Emery emery Emesa Emesidae emesis emetatrophia emetic emetically emetine emetocathartic emetology emetomorphine emgalla emication emiction emictory emigrant emigrate emigration emigrational emigrationist emigrative emigrator emigratory emigree Emil Emilia Emily Emim eminence eminency eminent eminently emir emirate emirship emissarium emissary emissaryship emissile emission emissive emissivity emit emittent emitter Emm Emma emma Emmanuel emmarble emmarvel emmenagogic emmenagogue emmenic emmeniopathy emmenology emmensite Emmental emmer emmergoose emmet emmetrope emmetropia emmetropic emmetropism emmetropy Emmett emodin emollescence emolliate emollient emoloa emolument emolumental emolumentary emote emotion emotionable emotional emotionalism emotionalist emotionality emotionalization emotionalize emotionally emotioned emotionist emotionize emotionless emotionlessness emotive emotively emotiveness emotivity empacket empaistic empall empanel empanelment empanoply empaper emparadise emparchment empark empasm empathic empathically empathize empathy Empedoclean empeirema Empeo emperor emperorship empery Empetraceae empetraceous Empetrum emphases emphasis emphasize emphatic emphatical emphatically emphaticalness emphlysis emphractic emphraxis emphysema emphysematous emphyteusis emphyteuta emphyteutic empicture Empididae Empidonax empiecement Empire empire empirema empiric empirical empiricalness empiricism empiricist empirics empiriocritcism empiriocritical empiriological empirism empiristic emplace emplacement emplane emplastic emplastration emplastrum emplectite empleomania employ employability employable employed employee employer employless employment emplume empocket empodium empoison empoisonment emporetic emporeutic emporia emporial emporium empower empowerment empress emprise emprosthotonic emprosthotonos emprosthotonus empt emptier emptily emptiness emptings emptins emption emptional emptor empty emptyhearted emptysis empurple Empusa empyema empyemic empyesis empyocele empyreal empyrean empyreuma empyreumatic empyreumatical empyreumatize empyromancy emu emulable emulant emulate emulation emulative emulatively emulator emulatory emulatress emulgence emulgent emulous emulously emulousness emulsibility emulsible emulsifiability emulsifiable emulsification emulsifier emulsify emulsin emulsion emulsionize emulsive emulsoid emulsor emunctory emundation emyd Emydea emydian Emydidae Emydinae Emydosauria emydosaurian Emys en enable enablement enabler enact enactable enaction enactive enactment enactor enactory enaena enage Enajim enalid Enaliornis enaliosaur Enaliosauria enaliosaurian enallachrome enallage enaluron enam enamber enambush enamdar enamel enameler enameling enamelist enamelless enamellist enameloma enamelware enamor enamorato enamored enamoredness enamorment enamourment enanguish enanthem enanthema enanthematous enanthesis enantiobiosis enantioblastic enantioblastous enantiomer enantiomeride enantiomorph enantiomorphic enantiomorphism enantiomorphous enantiomorphously enantiomorphy enantiopathia enantiopathic enantiopathy enantiosis enantiotropic enantiotropy enantobiosis enapt enarbor enarbour enarch enarched enargite enarm enarme enarthrodia enarthrodial enarthrosis enate enatic enation enbrave encaenia encage encake encalendar encallow encamp encampment encanker encanthis encapsulate encapsulation encapsule encarditis encarnadine encarnalize encarpium encarpus encase encasement encash encashable encashment encasserole encastage encatarrhaphy encauma encaustes encaustic encaustically encave encefalon Encelia encell encenter encephala encephalalgia Encephalartos encephalasthenia encephalic encephalin encephalitic encephalitis encephalocele encephalocoele encephalodialysis encephalogram encephalograph encephalography encephaloid encephalolith encephalology encephaloma encephalomalacia encephalomalacosis encephalomalaxis encephalomeningitis encephalomeningocele encephalomere encephalomeric encephalometer encephalometric encephalomyelitis encephalomyelopathy encephalon encephalonarcosis encephalopathia encephalopathic encephalopathy encephalophyma encephalopsychesis encephalopyosis encephalorrhagia encephalosclerosis encephaloscope encephaloscopy encephalosepsis encephalospinal encephalothlipsis encephalotome encephalotomy encephalous enchain enchainment enchair enchalice enchannel enchant enchanter enchanting enchantingly enchantingness enchantment enchantress encharge encharnel enchase enchaser enchasten Enchelycephali enchequer enchest enchilada enchiridion Enchodontid Enchodontidae Enchodontoid Enchodus enchondroma enchondromatous enchondrosis enchorial enchurch enchylema enchylematous enchymatous enchytrae enchytraeid Enchytraeidae Enchytraeus encina encinal encincture encinder encinillo encipher encircle encirclement encircler encist encitadel enclaret enclasp enclave enclavement enclisis enclitic enclitical enclitically encloak encloister enclose encloser enclosure enclothe encloud encoach encode encoffin encoignure encoil encolden encollar encolor encolpion encolumn encomendero encomia encomiast encomiastic encomiastical encomiastically encomic encomienda encomiologic encomium encommon encompass encompasser encompassment encoop encorbelment encore encoronal encoronate encoronet encounter encounterable encounterer encourage encouragement encourager encouraging encouragingly encowl encraal encradle encranial encratic Encratism Encratite encraty encreel encrimson encrinal encrinic Encrinidae encrinidae encrinital encrinite encrinitic encrinitical encrinoid Encrinoidea Encrinus encrisp encroach encroacher encroachingly encroachment encrotchet encrown encrownment encrust encrustment encrypt encryption encuirassed encumber encumberer encumberingly encumberment encumbrance encumbrancer encup encurl encurtain encushion encyclic encyclical encyclopedia encyclopediac encyclopediacal encyclopedial encyclopedian encyclopediast encyclopedic encyclopedically encyclopedism encyclopedist encyclopedize encyrtid Encyrtidae encyst encystation encystment end endable endamage endamageable endamagement endamask endameba endamebic Endamoeba endamoebiasis endamoebic Endamoebidae endanger endangerer endangerment endangium endaortic endaortitis endarch endarchy endarterial endarteritis endarterium endaspidean endaze endboard endbrain endear endearance endeared endearedly endearedness endearing endearingly endearingness endearment endeavor endeavorer ended endeictic endellionite endemial endemic endemically endemicity endemiological endemiology endemism endenizen ender endere endermatic endermic endermically enderon enderonic endevil endew endgate endiadem endiaper ending endite endive endless endlessly endlessness endlichite endlong endmatcher endmost endoabdominal endoangiitis endoaortitis endoappendicitis endoarteritis endoauscultation endobatholithic endobiotic endoblast endoblastic endobronchial endobronchially endobronchitis endocannibalism endocardiac endocardial endocarditic endocarditis endocardium endocarp endocarpal endocarpic endocarpoid endocellular endocentric Endoceras Endoceratidae endoceratite endoceratitic endocervical endocervicitis endochondral endochorion endochorionic endochrome endochylous endoclinal endocline endocoelar endocoele endocoeliac endocolitis endocolpitis endocondensation endocone endoconidium endocorpuscular endocortex endocranial endocranium endocrinal endocrine endocrinic endocrinism endocrinological endocrinologist endocrinology endocrinopathic endocrinopathy endocrinotherapy endocrinous endocritic endocycle endocyclic endocyemate endocyst endocystitis endoderm endodermal endodermic endodermis endodontia endodontic endodontist endodynamomorphic endoenteritis endoenzyme endoesophagitis endofaradism endogalvanism endogamic endogamous endogamy endogastric endogastrically endogastritis endogen Endogenae endogenesis endogenetic endogenic endogenous endogenously endogeny endoglobular endognath endognathal endognathion endogonidium endointoxication endokaryogamy endolabyrinthitis endolaryngeal endolemma endolumbar endolymph endolymphangial endolymphatic endolymphic endolysin endomastoiditis endome endomesoderm endometrial endometritis endometrium endometry endomitosis endomitotic endomixis endomorph endomorphic endomorphism endomorphy Endomyces Endomycetaceae endomysial endomysium endoneurial endoneurium endonuclear endonucleolus endoparasite endoparasitic Endoparasitica endopathic endopelvic endopericarditis endoperidial endoperidium endoperitonitis endophagous endophagy endophasia endophasic endophlebitis endophragm endophragmal Endophyllaceae endophyllous Endophyllum endophytal endophyte endophytic endophytically endophytous endoplasm endoplasma endoplasmic endoplast endoplastron endoplastular endoplastule endopleura endopleural endopleurite endopleuritic endopod endopodite endopoditic endoproct Endoprocta endoproctous endopsychic Endopterygota endopterygote endopterygotic endopterygotism endopterygotous endorachis endoral endore endorhinitis endorsable endorsation endorse endorsed endorsee endorsement endorser endorsingly endosalpingitis endosarc endosarcode endosarcous endosclerite endoscope endoscopic endoscopy endosecretory endosepsis endosiphon endosiphonal endosiphonate endosiphuncle endoskeletal endoskeleton endosmometer endosmometric endosmosic endosmosis endosmotic endosmotically endosome endosperm endospermic endospore endosporium endosporous endoss endosteal endosteally endosteitis endosteoma endosternite endosternum endosteum endostitis endostoma endostome endostosis endostracal endostracum endostylar endostyle endostylic endotheca endothecal endothecate endothecial endothecium endothelia endothelial endothelioblastoma endotheliocyte endothelioid endotheliolysin endotheliolytic endothelioma endotheliomyoma endotheliomyxoma endotheliotoxin endothelium endothermal endothermic endothermous endothermy Endothia endothoracic endothorax Endothrix endothys endotoxic endotoxin endotoxoid endotracheitis endotrachelitis Endotrophi endotrophic endotys endovaccination endovasculitis endovenous endow endower endowment endozoa endpiece Endromididae Endromis endue enduement endungeon endura endurability endurable endurableness endurably endurance endurant endure endurer enduring enduringly enduringness endways endwise endyma endymal Endymion endysis Eneas eneclann enema enemy enemylike enemyship enepidermic energeia energesis energetic energetical energetically energeticalness energeticist energetics energetistic energic energical energid energism energist energize energizer energumen energumenon energy enervate enervation enervative enervator eneuch eneugh enface enfacement enfamous enfasten enfatico enfeature enfeeble enfeeblement enfeebler enfelon enfeoff enfeoffment enfester enfetter enfever enfigure enfilade enfilading enfile enfiled enflagellate enflagellation enflesh enfleurage enflower enfoil enfold enfolden enfolder enfoldment enfonced enforce enforceability enforceable enforced enforcedly enforcement enforcer enforcibility enforcible enforcingly enfork enfoul enframe enframement enfranchisable enfranchise enfranchisement enfranchiser enfree enfrenzy enfuddle enfurrow engage engaged engagedly engagedness engagement engager engaging engagingly engagingness engaol engarb engarble engarland engarment engarrison engastrimyth engastrimythic engaud engaze Engelmannia engem engender engenderer engenderment engerminate enghosted engild engine engineer engineering engineership enginehouse engineless enginelike engineman enginery enginous engird engirdle engirt engjateigur englacial englacially englad engladden Englander Engler Englerophoenix Englifier Englify English Englishable Englisher Englishhood Englishism Englishize Englishly Englishman Englishness Englishry Englishwoman englobe englobement engloom englory englut englyn engnessang engobe engold engolden engore engorge engorgement engouled engrace engraff engraft engraftation engrafter engraftment engrail engrailed engrailment engrain engrained engrainedly engrainer engram engramma engrammatic engrammic engrandize engrandizement engraphia engraphic engraphically engraphy engrapple engrasp Engraulidae Engraulis engrave engraved engravement engraver engraving engreen engrieve engroove engross engrossed engrossedly engrosser engrossing engrossingly engrossingness engrossment enguard engulf engulfment engyscope engysseismology Engystomatidae enhallow enhalo enhamper enhance enhanced enhancement enhancer enhancive enharmonic enharmonical enharmonically enhat enhaunt enhearse enheart enhearten enhedge enhelm enhemospore enherit enheritage enheritance enhorror enhunger enhusk Enhydra Enhydrinae Enhydris enhydrite enhydritic enhydros enhydrous enhypostasia enhypostasis enhypostatic enhypostatize eniac Enicuridae Enid Enif enigma enigmatic enigmatical enigmatically enigmaticalness enigmatist enigmatization enigmatize enigmatographer enigmatography enigmatology enisle enjail enjamb enjambed enjambment enjelly enjeopard enjeopardy enjewel enjoin enjoinder enjoiner enjoinment enjoy enjoyable enjoyableness enjoyably enjoyer enjoying enjoyingly enjoyment enkerchief enkernel Enki Enkidu enkindle enkindler enkraal enlace enlacement enlard enlarge enlargeable enlargeableness enlarged enlargedly enlargedness enlargement enlarger enlarging enlargingly enlaurel enleaf enleague enlevement enlief enlife enlight enlighten enlightened enlightenedly enlightenedness enlightener enlightening enlighteningly enlightenment enlink enlinkment enlist enlisted enlister enlistment enliven enlivener enlivening enliveningly enlivenment enlock enlodge enlodgement enmarble enmask enmass enmesh enmeshment enmist enmity enmoss enmuffle enneacontahedral enneacontahedron ennead enneadianome enneadic enneagon enneagynous enneahedral enneahedria enneahedron enneapetalous enneaphyllous enneasemic enneasepalous enneaspermous enneastyle enneastylos enneasyllabic enneateric enneatic enneatical ennerve enniche ennoble ennoblement ennobler ennobling ennoblingly ennoic ennomic ennui Enoch Enochic enocyte enodal enodally enoil enol enolate enolic enolizable enolization enolize enomania enomaniac enomotarch enomoty enophthalmos enophthalmus Enopla enoplan enoptromancy enorganic enorm enormity enormous enormously enormousness Enos enostosis enough enounce enouncement enow enphytotic enplane enquicken enquire enquirer enquiry enrace enrage enraged enragedly enragement enrange enrank enrapt enrapture enrapturer enravish enravishingly enravishment enray enregiment enregister enregistration enregistry enrib enrich enricher enriching enrichingly enrichment enring enrive enrobe enrobement enrober enrockment enrol enroll enrolled enrollee enroller enrollment enrolment enroot enrough enruin enrut ens ensaffron ensaint ensample ensand ensandal ensanguine ensate enscene ensconce enscroll ensculpture ense enseam enseat enseem ensellure ensemble ensepulcher ensepulchre enseraph enserf ensete enshade enshadow enshawl ensheathe enshell enshelter enshield enshrine enshrinement enshroud Ensiferi ensiform ensign ensigncy ensignhood ensignment ensignry ensignship ensilage ensilate ensilation ensile ensilist ensilver ensisternum ensky enslave enslavedness enslavement enslaver ensmall ensnare ensnarement ensnarer ensnaring ensnaringly ensnarl ensnow ensorcelize ensorcell ensoul enspell ensphere enspirit enstamp enstar enstate enstatite enstatitic enstatolite ensteel enstool enstore enstrengthen ensuable ensuance ensuant ensue ensuer ensuingly ensulphur ensure ensurer enswathe enswathement ensweep entablature entablatured entablement entach entad Entada entail entailable entailer entailment ental entame Entamoeba entamoebiasis entamoebic entangle entangled entangledly entangledness entanglement entangler entangling entanglingly entapophysial entapophysis entarthrotic entasia entasis entelam entelechy entellus Entelodon entelodont entempest entemple entente Ententophil entepicondylar enter enterable enteraden enteradenographic enteradenography enteradenological enteradenology enteral enteralgia enterate enterauxe enterclose enterectomy enterer entergogenic enteria enteric entericoid entering enteritidis enteritis entermete enteroanastomosis enterobiliary enterocele enterocentesis enterochirurgia enterochlorophyll enterocholecystostomy enterocinesia enterocinetic enterocleisis enteroclisis enteroclysis Enterocoela enterocoele enterocoelic enterocoelous enterocolitis enterocolostomy enterocrinin enterocyst enterocystoma enterodynia enteroepiplocele enterogastritis enterogastrone enterogenous enterogram enterograph enterography enterohelcosis enterohemorrhage enterohepatitis enterohydrocele enteroid enterointestinal enteroischiocele enterokinase enterokinesia enterokinetic enterolith enterolithiasis Enterolobium enterology enteromegalia enteromegaly enteromere enteromesenteric Enteromorpha enteromycosis enteromyiasis enteron enteroneuritis enteroparalysis enteroparesis enteropathy enteropexia enteropexy enterophthisis enteroplasty enteroplegia enteropneust Enteropneusta enteropneustan enteroptosis enteroptotic enterorrhagia enterorrhaphy enterorrhea enteroscope enterosepsis enterospasm enterostasis enterostenosis enterostomy enterosyphilis enterotome enterotomy enterotoxemia enterotoxication enterozoa enterozoan enterozoic enterprise enterpriseless enterpriser enterprising enterprisingly enterritoriality entertain entertainable entertainer entertaining entertainingly entertainingness entertainment enthalpy entheal enthelmintha enthelminthes enthelminthic enthetic enthral enthraldom enthrall enthralldom enthraller enthralling enthrallingly enthrallment enthralment enthrone enthronement enthronization enthronize enthuse enthusiasm enthusiast enthusiastic enthusiastical enthusiastically enthusiastly enthymematic enthymematical enthymeme entia entice enticeable enticeful enticement enticer enticing enticingly enticingness entifical entification entify entincture entire entirely entireness entirety entiris entitative entitatively entitle entitlement entity entoblast entoblastic entobranchiate entobronchium entocalcaneal entocarotid entocele entocnemial entocoele entocoelic entocondylar entocondyle entocondyloid entocone entoconid entocornea entocranial entocuneiform entocuniform entocyemate entocyst entoderm entodermal entodermic entogastric entogenous entoglossal entohyal entoil entoilment Entoloma entomb entombment entomere entomeric entomic entomical entomion entomogenous entomoid entomologic entomological entomologically entomologist entomologize entomology Entomophaga entomophagan entomophagous Entomophila entomophilous entomophily Entomophthora Entomophthoraceae entomophthoraceous Entomophthorales entomophthorous entomophytous Entomosporium Entomostraca entomostracan entomostracous entomotaxy entomotomist entomotomy entone entonement entoolitic entoparasite entoparasitic entoperipheral entophytal entophyte entophytic entophytically entophytous entopic entopical entoplasm entoplastic entoplastral entoplastron entopopliteal Entoprocta entoproctous entopterygoid entoptic entoptical entoptically entoptics entoptoscope entoptoscopic entoptoscopy entoretina entorganism entosarc entosclerite entosphenal entosphenoid entosphere entosternal entosternite entosternum entothorax entotic Entotrophi entotympanic entourage entozoa entozoal entozoan entozoarian entozoic entozoological entozoologically entozoologist entozoology entozoon entracte entrail entrails entrain entrainer entrainment entrammel entrance entrancedly entrancement entranceway entrancing entrancingly entrant entrap entrapment entrapper entrappingly entreasure entreat entreating entreatingly entreatment entreaty entree entremets entrench entrenchment entrepas entrepot entrepreneur entrepreneurial entrepreneurship entresol entrochite entrochus entropion entropionize entropium entropy entrough entrust entrustment entry entryman entryway enturret entwine entwinement entwist Entyloma enucleate enucleation enucleator Enukki enumerable enumerate enumeration enumerative enumerator enunciability enunciable enunciate enunciation enunciative enunciatively enunciator enunciatory enure enuresis enuretic enurny envapor envapour envassal envassalage envault enveil envelop envelope enveloper envelopment envenom envenomation enverdure envermeil enviable enviableness enviably envied envier envineyard envious enviously enviousness environ environage environal environic environment environmental environmentalism environmentalist environmentally environs envisage envisagement envision envolume envoy envoyship envy envying envyingly enwallow enwiden enwind enwisen enwoman enwomb enwood enworthed enwound enwrap enwrapment enwreathe enwrite enwrought enzone enzootic enzooty enzym enzymatic enzyme enzymic enzymically enzymologist enzymology enzymolysis enzymolytic enzymosis enzymotic eoan Eoanthropus Eocarboniferous Eocene Eodevonian Eogaea Eogaean Eoghanacht Eohippus eolation eolith eolithic Eomecon eon eonism Eopalaeozoic Eopaleozoic eophyte eophytic eophyton eorhyolite eosate Eosaurus eoside eosin eosinate eosinic eosinoblast eosinophile eosinophilia eosinophilic eosinophilous eosphorite Eozoic eozoon eozoonal epacmaic epacme epacrid Epacridaceae epacridaceous Epacris epact epactal epagoge epagogic epagomenae epagomenal epagomenic epagomenous epaleaceous epalpate epanadiplosis Epanagoge epanalepsis epanaleptic epanaphora epanaphoral epanastrophe epanisognathism epanisognathous epanodos epanody Epanorthidae epanorthosis epanorthotic epanthous epapillate epappose eparch eparchate Eparchean eparchial eparchy eparcuale eparterial epaule epaulement epaulet epauleted epauletted epauliere epaxial epaxially epedaphic epee epeeist Epeira epeiric epeirid Epeiridae epeirogenesis epeirogenetic epeirogenic epeirogeny epeisodion epembryonic epencephal epencephalic epencephalon ependyma ependymal ependyme ependymitis ependymoma ependytes epenthesis epenthesize epenthetic epephragmal epepophysial epepophysis epergne eperotesis Eperua epexegesis epexegetic epexegetical epexegetically epha ephah epharmonic epharmony ephebe ephebeion ephebeum ephebic ephebos ephebus ephectic Ephedra Ephedraceae ephedrine ephelcystic ephelis Ephemera ephemera ephemerae ephemeral ephemerality ephemerally ephemeralness ephemeran ephemerid Ephemerida Ephemeridae ephemerides ephemeris ephemerist ephemeromorph ephemeromorphic ephemeron Ephemeroptera ephemerous Ephesian Ephesine ephetae ephete ephetic ephialtes ephidrosis ephippial ephippium ephod ephor ephoral ephoralty ephorate ephoric ephorship ephorus ephphatha Ephraim Ephraimite Ephraimitic Ephraimitish Ephraitic Ephrathite Ephthalite Ephthianura ephthianure Ephydra ephydriad ephydrid Ephydridae ephymnium ephyra ephyrula epibasal Epibaterium epibatholithic epibenthic epibenthos epiblast epiblastema epiblastic epiblema epibole epibolic epibolism epiboly epiboulangerite epibranchial epic epical epically epicalyx epicanthic epicanthus epicardia epicardiac epicardial epicardium epicarid epicaridan Epicaridea Epicarides epicarp Epicauta epicede epicedial epicedian epicedium epicele epicene epicenism epicenity epicenter epicentral epicentrum Epiceratodus epicerebral epicheirema epichil epichile epichilium epichindrotic epichirema epichondrosis epichordal epichorial epichoric epichorion epichoristic Epichristian epicism epicist epiclastic epicleidian epicleidium epiclesis epiclidal epiclinal epicly epicnemial Epicoela epicoelar epicoele epicoelia epicoeliac epicoelian epicoeloma epicoelous epicolic epicondylar epicondyle epicondylian epicondylic epicontinental epicoracohumeral epicoracoid epicoracoidal epicormic epicorolline epicortical epicostal epicotyl epicotyleal epicotyledonary epicranial epicranium epicranius Epicrates epicrisis epicritic epicrystalline Epictetian epicure Epicurean Epicureanism epicurish epicurishly Epicurism Epicurize epicycle epicyclic epicyclical epicycloid epicycloidal epicyemate epicyesis epicystotomy epicyte epideictic epideictical epideistic epidemic epidemical epidemically epidemicalness epidemicity epidemiographist epidemiography epidemiological epidemiologist epidemiology epidemy epidendral epidendric Epidendron Epidendrum epiderm epiderma epidermal epidermatic epidermatoid epidermatous epidermic epidermical epidermically epidermidalization epidermis epidermization epidermoid epidermoidal epidermolysis epidermomycosis Epidermophyton epidermophytosis epidermose epidermous epidesmine epidialogue epidiascope epidiascopic epidictic epidictical epididymal epididymectomy epididymis epididymite epididymitis epididymodeferentectomy epididymodeferential epididymovasostomy epidiorite epidiorthosis epidosite epidote epidotic epidotiferous epidotization epidural epidymides epifascial epifocal epifolliculitis Epigaea epigamic epigaster epigastraeum epigastral epigastrial epigastric epigastrical epigastriocele epigastrium epigastrocele epigeal epigean epigeic epigene epigenesis epigenesist epigenetic epigenetically epigenic epigenist epigenous epigeous epiglottal epiglottic epiglottidean epiglottiditis epiglottis epiglottitis epignathous epigonal epigonation epigone Epigoni epigonic Epigonichthyidae Epigonichthys epigonium epigonos epigonous Epigonus epigram epigrammatic epigrammatical epigrammatically epigrammatism epigrammatist epigrammatize epigrammatizer epigraph epigrapher epigraphic epigraphical epigraphically epigraphist epigraphy epiguanine epigyne epigynous epigynum epigyny Epihippus epihyal epihydric epihydrinic epikeia epiklesis Epikouros epilabrum Epilachna Epilachnides epilamellar epilaryngeal epilate epilation epilatory epilegomenon epilemma epilemmal epilepsy epileptic epileptically epileptiform epileptogenic epileptogenous epileptoid epileptologist epileptology epilimnion epilobe Epilobiaceae Epilobium epilogation epilogic epilogical epilogist epilogistic epilogize epilogue Epimachinae epimacus epimandibular epimanikia Epimedium Epimenidean epimer epimeral epimere epimeric epimeride epimerite epimeritic epimeron epimerum epimorphic epimorphosis epimysium epimyth epinaos epinastic epinastically epinasty epineolithic Epinephelidae Epinephelus epinephrine epinette epineural epineurial epineurium epinglette epinicial epinician epinicion epinine epiopticon epiotic Epipactis epipaleolithic epiparasite epiparodos epipastic epiperipheral epipetalous epiphanous Epiphany epipharyngeal epipharynx Epiphegus epiphenomenal epiphenomenalism epiphenomenalist epiphenomenon epiphloedal epiphloedic epiphloeum epiphonema epiphora epiphragm epiphylline epiphyllous Epiphyllum epiphysary epiphyseal epiphyseolysis epiphysial epiphysis epiphysitis epiphytal epiphyte epiphytic epiphytical epiphytically epiphytism epiphytology epiphytotic epiphytous epipial epiplankton epiplanktonic epiplasm epiplasmic epiplastral epiplastron epiplectic epipleura epipleural epiplexis epiploce epiplocele epiploic epiploitis epiploon epiplopexy epipodial epipodiale epipodite epipoditic epipodium epipolic epipolism epipolize epiprecoracoid Epipsychidion epipteric epipterous epipterygoid epipubic epipubis epirhizous epirogenic epirogeny Epirote Epirotic epirotulian epirrhema epirrhematic epirrheme episarcine episcenium episclera episcleral episcleritis episcopable episcopacy Episcopal episcopal episcopalian Episcopalianism Episcopalianize episcopalism episcopality Episcopally episcopally episcopate episcopature episcope episcopicide episcopization episcopize episcopolatry episcotister episematic episepalous episiocele episiohematoma episioplasty episiorrhagia episiorrhaphy episiostenosis episiotomy episkeletal episkotister episodal episode episodial episodic episodical episodically epispadiac epispadias epispastic episperm epispermic epispinal episplenitis episporangium epispore episporium epistapedial epistasis epistatic epistaxis epistemic epistemolog epistemological epistemologically epistemologist epistemology epistemonic epistemonical epistemophilia epistemophiliac epistemophilic episternal episternalia episternite episternum epistilbite epistlar epistle epistler epistolarian epistolarily epistolary epistolatory epistoler epistolet epistolic epistolical epistolist epistolizable epistolization epistolize epistolizer epistolographer epistolographic epistolographist epistolography epistoma epistomal epistome epistomian epistroma epistrophe epistropheal epistropheus epistrophic epistrophy epistylar epistyle Epistylis episyllogism episynaloephe episynthetic episyntheton epitactic epitaph epitapher epitaphial epitaphian epitaphic epitaphical epitaphist epitaphize epitaphless epitasis epitela epitendineum epitenon epithalamia epithalamial epithalamiast epithalamic epithalamion epithalamium epithalamize epithalamus epithalamy epithalline epitheca epithecal epithecate epithecium epithelia epithelial epithelioblastoma epithelioceptor epitheliogenetic epithelioglandular epithelioid epitheliolysin epitheliolysis epitheliolytic epithelioma epitheliomatous epitheliomuscular epitheliosis epitheliotoxin epithelium epithelization epithelize epitheloid epithem epithesis epithet epithetic epithetical epithetically epithetician epithetize epitheton epithumetic epithyme epithymetic epithymetical epitimesis epitoke epitomator epitomatory epitome epitomic epitomical epitomically epitomist epitomization epitomize epitomizer epitonic Epitoniidae epitonion Epitonium epitoxoid epitrachelion epitrichial epitrichium epitrite epitritic epitrochlea epitrochlear epitrochoid epitrochoidal epitrope epitrophic epitrophy epituberculosis epituberculous epitympanic epitympanum epityphlitis epityphlon epiural epivalve epixylous epizeuxis Epizoa epizoa epizoal epizoan epizoarian epizoic epizoicide epizoon epizootic epizootiology epoch epocha epochal epochally epochism epochist epode epodic epollicate Epomophorus eponychium eponym eponymic eponymism eponymist eponymize eponymous eponymus eponymy epoophoron epopee epopoean epopoeia epopoeist epopt epoptes epoptic epoptist epornitic epornitically epos Eppie Eppy Eproboscidea epruinose epsilon Epsom epsomite Eptatretidae Eptatretus epulary epulation epulis epulo epuloid epulosis epulotic epupillate epural epurate epuration epyllion equability equable equableness equably equaeval equal equalable equaling equalist equalitarian equalitarianism equality equalization equalize equalizer equalizing equalling equally equalness equangular equanimity equanimous equanimously equanimousness equant equatable equate equation equational equationally equationism equationist equator equatorial equatorially equatorward equatorwards equerry equerryship equestrial equestrian equestrianism equestrianize equestrianship equestrienne equianchorate equiangle equiangular equiangularity equianharmonic equiarticulate equiatomic equiaxed equiaxial equibalance equibiradiate equicellular equichangeable equicohesive equiconvex equicostate equicrural equicurve equid equidense equidensity equidiagonal equidifferent equidimensional equidistance equidistant equidistantial equidistantly equidistribution equidiurnal equidivision equidominant equidurable equielliptical equiexcellency equiform equiformal equiformity equiglacial equigranular equijacent equilateral equilaterally equilibrant equilibrate equilibration equilibrative equilibrator equilibratory equilibria equilibrial equilibriate equilibrio equilibrious equilibrist equilibristat equilibristic equilibrity equilibrium equilibrize equilobate equilobed equilocation equilucent equimodal equimolar equimolecular equimomental equimultiple equinate equine equinecessary equinely equinia equinity equinoctial equinoctially equinovarus equinox equinumerally equinus equiomnipotent equip equipaga equipage equiparant equiparate equiparation equipartile equipartisan equipartition equiped equipedal equiperiodic equipluve equipment equipoise equipollence equipollency equipollent equipollently equipollentness equiponderance equiponderancy equiponderant equiponderate equiponderation equipostile equipotent equipotential equipotentiality equipper equiprobabilism equiprobabilist equiprobability equiproducing equiproportional equiproportionality equiradial equiradiate equiradical equirotal equisegmented Equisetaceae equisetaceous Equisetales equisetic Equisetum equisided equisignal equisized equison equisonance equisonant equispaced equispatial equisufficiency equisurface equitable equitableness equitably equitangential equitant equitation equitative equitemporal equitemporaneous equites equitist equitriangular equity equivalence equivalenced equivalency equivalent equivalently equivaliant equivalue equivaluer equivalve equivalved equivalvular equivelocity equivocacy equivocal equivocality equivocally equivocalness equivocate equivocatingly equivocation equivocator equivocatory equivoluminal equivoque equivorous equivote equoid equoidean equuleus Equus er era erade eradiate eradiation eradicable eradicant eradicate eradication eradicative eradicator eradicatory eradiculose Eragrostis eral eranist Eranthemum Eranthis erasable erase erased erasement eraser erasion Erasmian Erasmus Erastian Erastianism Erastianize Erastus erasure Erava erbia erbium erd erdvark ere Erechtheum Erechtheus Erechtites erect erectable erecter erectile erectility erecting erection erective erectly erectness erectopatent erector erelong eremacausis Eremian eremic eremital eremite eremiteship eremitic eremitical eremitish eremitism Eremochaeta eremochaetous eremology eremophyte Eremopteris Eremurus erenach erenow erepsin erept ereptase ereptic ereption erethic erethisia erethism erethismic erethistic erethitic Erethizon Erethizontidae Eretrian erewhile erewhiles erg ergal ergamine Ergane ergasia ergasterion ergastic ergastoplasm ergastoplasmic ergastulum ergatandromorph ergatandromorphic ergatandrous ergatandry ergates ergatocracy ergatocrat ergatogyne ergatogynous ergatogyny ergatoid ergatomorph ergatomorphic ergatomorphism ergmeter ergodic ergogram ergograph ergographic ergoism ergology ergomaniac ergometer ergometric ergometrine ergon ergonovine ergophile ergophobia ergophobiac ergoplasm ergostat ergosterin ergosterol ergot ergotamine ergotaminine ergoted ergothioneine ergotic ergotin ergotinine ergotism ergotist ergotization ergotize ergotoxin ergotoxine ergusia eria Erian Erianthus Eric eric Erica Ericaceae ericaceous ericad erical Ericales ericetal ericeticolous ericetum erichthus erichtoid ericineous ericius Erick ericoid ericolin ericophyte Eridanid Erie Erigenia Erigeron erigible Eriglossa eriglossate Erik erika erikite Erinaceidae erinaceous Erinaceus erineum erinite Erinize erinose Eriobotrya Eriocaulaceae eriocaulaceous Eriocaulon Eriocomi Eriodendron Eriodictyon erioglaucine Eriogonum eriometer erionite Eriophorum Eriophyes Eriophyidae eriophyllous Eriosoma Eriphyle Eristalis eristic eristical eristically Erithacus Eritrean erizo erlking Erma Ermanaric Ermani Ermanrich ermelin ermine ermined erminee ermines erminites erminois erne Ernest Ernestine Ernie Ernst erode eroded erodent erodible Erodium erogeneity erogenesis erogenetic erogenic erogenous erogeny Eros eros erose erosely erosible erosion erosional erosionist erosive erostrate eroteme erotesis erotetic erotic erotica erotical erotically eroticism eroticize eroticomania erotism erotogenesis erotogenetic erotogenic erotogenicity erotomania erotomaniac erotopath erotopathic erotopathy Erotylidae Erpetoichthys erpetologist err errability errable errableness errabund errancy errand errant Errantia errantly errantness errantry errata erratic erratical erratically erraticalness erraticism erraticness erratum errhine erring erringly errite erroneous erroneously erroneousness error errorful errorist errorless ers Ersar ersatz Erse Ertebolle erth erthen erthling erthly erubescence erubescent erubescite eruc Eruca eruca erucic eruciform erucin erucivorous eruct eructance eructation eructative eruction erudit erudite eruditely eruditeness eruditical erudition eruditional eruditionist erugate erugation erugatory erumpent erupt eruption eruptional eruptive eruptively eruptiveness eruptivity ervenholder Ervipiame Ervum Erwin Erwinia eryhtrism Erymanthian Eryngium eryngo Eryon Eryops Erysibe Erysimum erysipelas erysipelatoid erysipelatous erysipeloid Erysipelothrix erysipelous Erysiphaceae Erysiphe Erythea erythema erythematic erythematous erythemic Erythraea Erythraean Erythraeidae erythrasma erythrean erythremia erythremomelalgia erythrene erythrin Erythrina erythrine Erythrinidae Erythrinus erythrismal erythristic erythrite erythritic erythritol erythroblast erythroblastic erythroblastosis erythrocarpous erythrocatalysis Erythrochaete erythrochroic erythrochroism erythroclasis erythroclastic erythrocyte erythrocytic erythrocytoblast erythrocytolysin erythrocytolysis erythrocytolytic erythrocytometer erythrocytorrhexis erythrocytoschisis erythrocytosis erythrodegenerative erythrodermia erythrodextrin erythrogenesis erythrogenic erythroglucin erythrogonium erythroid erythrol erythrolein erythrolitmin erythrolysin erythrolysis erythrolytic erythromelalgia erythron erythroneocytosis Erythronium erythronium erythropenia erythrophage erythrophagous erythrophilous erythrophleine erythrophobia erythrophore erythrophyll erythrophyllin erythropia erythroplastid erythropoiesis erythropoietic erythropsia erythropsin erythrorrhexis erythroscope erythrose erythrosiderite erythrosin erythrosinophile erythrosis Erythroxylaceae erythroxylaceous erythroxyline Erythroxylon Erythroxylum erythrozincite erythrozyme erythrulose Eryx es esca escadrille escalade escalader escalado escalan escalate Escalator escalator escalin Escallonia Escalloniaceae escalloniaceous escalop escaloped escambio escambron escapable escapade escapage escape escapee escapeful escapeless escapement escaper escapingly escapism escapist escarbuncle escargatoire escarole escarp escarpment eschalot eschar eschara escharine escharoid escharotic eschatocol eschatological eschatologist eschatology escheat escheatable escheatage escheatment escheator escheatorship Escherichia eschew eschewal eschewance eschewer Eschscholtzia eschynite esclavage escoba escobadura escobilla escobita escolar esconson escopette Escorial escort escortage escortee escortment escribe escritoire escritorial escrol escropulo escrow escruage escudo Esculapian esculent esculetin esculin escutcheon escutcheoned escutellate esdragol Esdras Esebrias esemplastic esemplasy eseptate esere eserine esexual eshin esiphonal esker Eskimauan Eskimo Eskimoic Eskimoid Eskimoized Eskualdun Eskuara Esmeralda Esmeraldan esmeraldite esne esoanhydride esocataphoria Esocidae esociform esocyclic esodic esoenteritis esoethmoiditis esogastritis esonarthex esoneural esophagal esophagalgia esophageal esophagean esophagectasia esophagectomy esophagi esophagism esophagismus esophagitis esophago esophagocele esophagodynia esophagogastroscopy esophagogastrostomy esophagomalacia esophagometer esophagomycosis esophagopathy esophagoplasty esophagoplegia esophagoplication esophagoptosis esophagorrhagia esophagoscope esophagoscopy esophagospasm esophagostenosis esophagostomy esophagotome esophagotomy esophagus esophoria esophoric Esopus esoteric esoterica esoterical esoterically esotericism esotericist esoterics esoterism esoterist esoterize esotery esothyropexy esotrope esotropia esotropic Esox espacement espadon espalier espantoon esparcet esparsette esparto espathate espave especial especially especialness esperance Esperantic Esperantidist Esperantido Esperantism Esperantist Esperanto espial espichellite espier espinal espingole espinillo espino espionage esplanade esplees esponton espousal espouse espousement espouser Espriella espringal espundia espy esquamate esquamulose Esquiline esquire esquirearchy esquiredom esquireship ess essang essay essayer essayette essayical essayish essayism essayist essayistic essayistical essaylet essed Essedones Esselen Esselenian essence essency Essene Essenian Essenianism Essenic Essenical Essenis Essenism Essenize essentia essential essentialism essentialist essentiality essentialize essentially essentialness essenwood Essex essexite Essie essling essoin essoinee essoiner essoinment essonite essorant establish establishable established establisher establishment establishmentarian establishmentarianism establishmentism estacade estadal estadio estado estafette estafetted estamene estamp estampage estampede estampedero estate estatesman esteem esteemable esteemer Estella ester esterase esterellite esteriferous esterification esterify esterization esterize esterlin esterling estevin Esth Esthacyte esthematology Esther Estheria estherian Estheriidae esthesia esthesio esthesioblast esthesiogen esthesiogenic esthesiogeny esthesiography esthesiology esthesiometer esthesiometric esthesiometry esthesioneurosis esthesiophysiology esthesis esthetology esthetophore esthiomene estimable estimableness estimably estimate estimatingly estimation estimative estimator estipulate estivage estival estivate estivation estivator estmark estoc estoile Estonian estop estoppage estoppel Estotiland estovers estrade estradiol estradiot estragole estrange estrangedness estrangement estranger estrapade estray estre estreat estrepe estrepement estriate estriche estrin estriol estrogen estrogenic estrone estrous estrual estruate estruation estuarial estuarine estuary estufa estuous estus esugarization esurience esurient esuriently eta etaballi etacism etacist etalon Etamin etamine etch Etchareottine etcher Etchimin etching Eteoclus Eteocretes Eteocreton eternal eternalism eternalist eternalization eternalize eternally eternalness eternity eternization eternize etesian ethal ethaldehyde Ethan ethanal ethanamide ethane ethanedial ethanediol ethanedithiol ethanethial ethanethiol Ethanim ethanol ethanolamine ethanolysis ethanoyl Ethel ethel ethene Etheneldeli ethenic ethenoid ethenoidal ethenol ethenyl Etheostoma Etheostomidae Etheostominae etheostomoid ether etherate ethereal etherealism ethereality etherealization etherealize ethereally etherealness etherean ethered ethereous Etheria etheric etherification etheriform etherify Etheriidae etherin etherion etherism etherization etherize etherizer etherolate etherous ethic ethical ethicalism ethicality ethically ethicalness ethician ethicism ethicist ethicize ethicoaesthetic ethicophysical ethicopolitical ethicoreligious ethicosocial ethics ethid ethide ethidene ethine ethiodide ethionic Ethiop Ethiopia Ethiopian Ethiopic ethiops ethmofrontal ethmoid ethmoidal ethmoiditis ethmolachrymal ethmolith ethmomaxillary ethmonasal ethmopalatal ethmopalatine ethmophysal ethmopresphenoidal ethmosphenoid ethmosphenoidal ethmoturbinal ethmoturbinate ethmovomer ethmovomerine ethmyphitis ethnal ethnarch ethnarchy ethnic ethnical ethnically ethnicism ethnicist ethnicize ethnicon ethnize ethnobiological ethnobiology ethnobotanic ethnobotanical ethnobotanist ethnobotany ethnocentric ethnocentrism ethnocracy ethnodicy ethnoflora ethnogenic ethnogeny ethnogeographer ethnogeographic ethnogeographical ethnogeographically ethnogeography ethnographer ethnographic ethnographical ethnographically ethnographist ethnography ethnologer ethnologic ethnological ethnologically ethnologist ethnology ethnomaniac ethnopsychic ethnopsychological ethnopsychology ethnos ethnotechnics ethnotechnography ethnozoological ethnozoology ethography etholide ethologic ethological ethology ethonomic ethonomics ethopoeia ethos ethoxide ethoxycaffeine ethoxyl ethrog ethyl ethylamide ethylamine ethylate ethylation ethylene ethylenediamine ethylenic ethylenimine ethylenoid ethylhydrocupreine ethylic ethylidene ethylidyne ethylin ethylmorphine ethylsulphuric ethyne ethynyl etiogenic etiolate etiolation etiolin etiolize etiological etiologically etiologist etiologue etiology etiophyllin etioporphyrin etiotropic etiotropically etiquette etiquettical etna Etnean Etonian Etrurian Etruscan Etruscologist Etruscology Etta Ettarre ettle etua etude etui etym etymic etymography etymologer etymologic etymological etymologically etymologicon etymologist etymologization etymologize etymology etymon etymonic etypic etypical etypically eu Euahlayi euangiotic Euascomycetes euaster Eubacteriales eubacterium Eubasidii Euboean Euboic Eubranchipus eucaine eucairite eucalypt eucalypteol eucalyptian eucalyptic eucalyptography eucalyptol eucalyptole Eucalyptus eucalyptus Eucarida eucatropine eucephalous Eucharis Eucharist eucharistial eucharistic eucharistical Eucharistically eucharistically eucharistize Eucharitidae Euchite Euchlaena euchlorhydria euchloric euchlorine Euchlorophyceae euchological euchologion euchology Euchorda euchre euchred euchroic euchroite euchromatic euchromatin euchrome euchromosome euchrone Eucirripedia euclase Euclea Eucleidae Euclid Euclidean Euclideanism Eucnemidae eucolite Eucommia Eucommiaceae eucone euconic Euconjugatae Eucopepoda Eucosia eucosmid Eucosmidae eucrasia eucrasite eucrasy eucrite Eucryphia Eucryphiaceae eucryphiaceous eucryptite eucrystalline euctical eucyclic eudaemon eudaemonia eudaemonic eudaemonical eudaemonics eudaemonism eudaemonist eudaemonistic eudaemonistical eudaemonistically eudaemonize eudaemony eudaimonia eudaimonism eudaimonist Eudemian Eudendrium Eudeve eudiagnostic eudialyte eudiaphoresis eudidymite eudiometer eudiometric eudiometrical eudiometrically eudiometry eudipleural Eudist Eudora Eudorina Eudoxian Eudromias Eudyptes Euergetes euge Eugene eugenesic eugenesis eugenetic Eugenia eugenic eugenical eugenically eugenicist eugenics Eugenie eugenism eugenist eugenol eugenolate eugeny Euglandina Euglena Euglenaceae Euglenales Euglenida Euglenidae Euglenineae euglenoid Euglenoidina euglobulin eugranitic Eugregarinida Eugubine Eugubium euharmonic euhedral euhemerism euhemerist euhemeristic euhemeristically euhemerize euhyostylic euhyostyly euktolite eulachon Eulalia eulalia eulamellibranch Eulamellibranchia Eulamellibranchiata Eulima Eulimidae eulogia eulogic eulogical eulogically eulogious eulogism eulogist eulogistic eulogistical eulogistically eulogium eulogization eulogize eulogizer eulogy eulysite eulytine eulytite Eumenes eumenid Eumenidae Eumenidean Eumenides eumenorrhea eumerism eumeristic eumerogenesis eumerogenetic eumeromorph eumeromorphic eumitosis eumitotic eumoiriety eumoirous Eumolpides Eumolpus eumorphous eumycete Eumycetes eumycetic Eunectes Eunice eunicid Eunicidae Eunomia Eunomian Eunomianism eunomy eunuch eunuchal eunuchism eunuchize eunuchoid eunuchoidism eunuchry euomphalid Euomphalus euonym euonymin euonymous Euonymus euonymy Euornithes euornithic Euorthoptera euosmite euouae eupad Eupanorthidae Eupanorthus eupathy eupatoriaceous eupatorin Eupatorium eupatory eupatrid eupatridae eupepsia eupepsy eupeptic eupepticism eupepticity Euphausia Euphausiacea euphausiid Euphausiidae Euphemia euphemian euphemious euphemiously euphemism euphemist euphemistic euphemistical euphemistically euphemize euphemizer euphemous euphemy euphon euphone euphonetic euphonetics euphonia euphonic euphonical euphonically euphonicalness euphonious euphoniously euphoniousness euphonism euphonium euphonize euphonon euphonous euphony euphonym Euphorbia Euphorbiaceae euphorbiaceous euphorbium euphoria euphoric euphory Euphrasia euphrasy Euphratean euphroe Euphrosyne Euphues euphuism euphuist euphuistic euphuistical euphuistically euphuize Euphyllopoda eupione eupittonic euplastic Euplectella Euplexoptera Euplocomi Euploeinae euploid euploidy eupnea Eupolidean Eupolyzoa eupolyzoan Eupomatia Eupomatiaceae eupractic eupraxia Euprepia Euproctis eupsychics Euptelea Eupterotidae eupyrchroite eupyrene eupyrion Eurafric Eurafrican Euraquilo Eurasian Eurasianism Eurasiatic eureka eurhodine eurhodol Eurindic Euripidean euripus eurite Euroaquilo eurobin Euroclydon Europa Europasian European Europeanism Europeanization Europeanize Europeanly Europeward europium Europocentric Eurus Euryalae Euryale Euryaleae euryalean Euryalida euryalidan Euryalus eurybathic eurybenthic eurycephalic eurycephalous Eurycerotidae Euryclea Eurydice Eurygaea Eurygaean eurygnathic eurygnathism eurygnathous euryhaline Eurylaimi Eurylaimidae eurylaimoid Eurylaimus Eurymus euryon Eurypelma Eurypharyngidae Eurypharynx euryprognathous euryprosopic eurypterid Eurypterida eurypteroid Eurypteroidea Eurypterus Eurypyga Eurypygae Eurypygidae eurypylous euryscope Eurystheus eurystomatous eurythermal eurythermic eurythmic eurythmical eurythmics eurythmy eurytomid Eurytomidae Eurytus euryzygous Euscaro Eusebian Euselachii Euskaldun Euskara Euskarian Euskaric Euskera eusol Euspongia eusporangiate Eustace Eustachian eustachium Eustathian eustatic Eusthenopteron eustomatous eustyle Eusuchia eusuchian eusynchite Eutaenia eutannin eutaxic eutaxite eutaxitic eutaxy eutechnic eutechnics eutectic eutectoid Euterpe Euterpean eutexia Euthamia euthanasia euthanasy euthenics euthenist Eutheria eutherian euthermic Euthycomi euthycomic Euthyneura euthyneural euthyneurous euthytatic euthytropic eutomous eutony Eutopia Eutopian eutrophic eutrophy eutropic eutropous Eutychian Eutychianism euxanthate euxanthic euxanthone euxenite Euxine Eva evacuant evacuate evacuation evacuative evacuator evacue evacuee evadable evade evader evadingly Evadne evagation evaginable evaginate evagination evaluable evaluate evaluation evaluative evalue Evan evanesce evanescence evanescency evanescent evanescently evanescible evangel evangelary evangelian evangeliarium evangeliary evangelical evangelicalism evangelicality evangelically evangelicalness evangelican evangelicism evangelicity Evangeline evangelion evangelism evangelist evangelistarion evangelistarium evangelistary evangelistic evangelistically evangelistics evangelistship evangelium evangelization evangelize evangelizer Evaniidae evanish evanishment evanition evansite evaporability evaporable evaporate evaporation evaporative evaporativity evaporator evaporimeter evaporize evaporometer evase evasible evasion evasional evasive evasively evasiveness Eve eve Evea evechurr evection evectional Evehood evejar Eveless evelight Evelina Eveline evelong Evelyn even evenblush evendown evener evenfall evenforth evenglow evenhanded evenhandedly evenhandedness evening evenlight evenlong evenly evenmete evenminded evenmindedness evenness evens evensong event eventful eventfully eventfulness eventide eventime eventless eventlessly eventlessness eventognath Eventognathi eventognathous eventration eventual eventuality eventualize eventually eventuate eventuation evenwise evenworthy eveque ever Everard everbearer everbearing everbloomer everblooming everduring Everett everglade evergreen evergreenery evergreenite everlasting everlastingly everlastingness everliving evermore Evernia evernioid eversible eversion eversive eversporting evert evertebral Evertebrata evertebrate evertile evertor everwhich everwho every everybody everyday everydayness everyhow everylike Everyman everyman everyness everyone everything everywhen everywhence everywhere everywhereness everywheres everywhither evestar evetide eveweed evict eviction evictor evidence evidencive evident evidential evidentially evidentiary evidently evidentness evil evildoer evilhearted evilly evilmouthed evilness evilproof evilsayer evilspeaker evilspeaking evilwishing evince evincement evincible evincibly evincingly evincive evirate eviration eviscerate evisceration evisite evitable evitate evitation evittate evocable evocate evocation evocative evocatively evocator evocatory evocatrix Evodia evoe evoke evoker evolute evolution evolutional evolutionally evolutionary evolutionism evolutionist evolutionize evolutive evolutoid evolvable evolve evolvement evolvent evolver Evonymus evovae evulgate evulgation evulse evulsion evzone ewder Ewe ewe ewelease ewer ewerer ewery ewry ex exacerbate exacerbation exacerbescence exacerbescent exact exactable exacter exacting exactingly exactingness exaction exactitude exactive exactiveness exactly exactment exactness exactor exactress exadversum exaggerate exaggerated exaggeratedly exaggerating exaggeratingly exaggeration exaggerative exaggeratively exaggerativeness exaggerator exaggeratory exagitate exagitation exairesis exalate exalbuminose exalbuminous exallotriote exalt exaltation exaltative exalted exaltedly exaltedness exalter exam examen examinability examinable examinant examinate examination examinational examinationism examinationist examinative examinator examinatorial examinatory examine examinee examiner examinership examining examiningly example exampleless exampleship exanimate exanimation exanthem exanthema exanthematic exanthematous exappendiculate exarate exaration exarch exarchal exarchate exarchateship Exarchic Exarchist exarchist exarchy exareolate exarillate exaristate exarteritis exarticulate exarticulation exasperate exasperated exasperatedly exasperater exasperating exasperatingly exasperation exasperative exaspidean Exaudi exaugurate exauguration excalate excalation excalcarate excalceate excalceation Excalibur excamb excamber excambion excandescence excandescency excandescent excantation excarnate excarnation excathedral excaudate excavate excavation excavationist excavator excavatorial excavatory excave excecate excecation excedent exceed exceeder exceeding exceedingly exceedingness excel excelente excellence excellency excellent excellently excelsin Excelsior excelsior excelsitude excentral excentric excentrical excentricity except exceptant excepting exception exceptionable exceptionableness exceptionably exceptional exceptionality exceptionally exceptionalness exceptionary exceptionless exceptious exceptiousness exceptive exceptively exceptiveness exceptor excerebration excerpt excerptible excerption excerptive excerptor excess excessive excessively excessiveness excessman exchange exchangeability exchangeable exchangeably exchanger Exchangite Exchequer exchequer excide excipient exciple Excipulaceae excipular excipule excipuliform excipulum excircle excisable excise exciseman excisemanship excision excisor excitability excitable excitableness excitancy excitant excitation excitative excitator excitatory excite excited excitedly excitedness excitement exciter exciting excitingly excitive excitoglandular excitometabolic excitomotion excitomotor excitomotory excitomuscular excitonutrient excitor excitory excitosecretory excitovascular exclaim exclaimer exclaiming exclaimingly exclamation exclamational exclamative exclamatively exclamatorily exclamatory exclave exclosure excludable exclude excluder excluding excludingly exclusion exclusionary exclusioner exclusionism exclusionist exclusive exclusively exclusiveness exclusivism exclusivist exclusivity exclusory Excoecaria excogitable excogitate excogitation excogitative excogitator excommunicable excommunicant excommunicate excommunication excommunicative excommunicator excommunicatory exconjugant excoriable excoriate excoriation excoriator excorticate excortication excrement excremental excrementary excrementitial excrementitious excrementitiously excrementitiousness excrementive excresce excrescence excrescency excrescent excrescential excreta excretal excrete excreter excretes excretion excretionary excretitious excretive excretory excriminate excruciable excruciate excruciating excruciatingly excruciation excruciator excubant excudate exculpable exculpate exculpation exculpative exculpatorily exculpatory excurrent excurse excursion excursional excursionary excursioner excursionism excursionist excursionize excursive excursively excursiveness excursory excursus excurvate excurvated excurvation excurvature excurved excusability excusable excusableness excusably excusal excusative excusator excusatory excuse excuseful excusefully excuseless excuser excusing excusingly excusive excuss excyst excystation excysted excystment exdelicto exdie exeat execrable execrableness execrably execrate execration execrative execratively execrator execratory executable executancy executant execute executed executer execution executional executioneering executioner executioneress executionist executive executively executiveness executiveship executor executorial executorship executory executress executrices executrix executrixship executry exedent exedra exegeses exegesis exegesist exegete exegetic exegetical exegetically exegetics exegetist exemplar exemplaric exemplarily exemplariness exemplarism exemplarity exemplary exemplifiable exemplification exemplificational exemplificative exemplificator exemplifier exemplify exempt exemptible exemptile exemption exemptionist exemptive exencephalia exencephalic exencephalous exencephalus exendospermic exendospermous exenterate exenteration exequatur exequial exequy exercisable exercise exerciser exercitant exercitation exercitor exercitorial exercitorian exeresis exergual exergue exert exertion exertionless exertive exes exeunt exfiguration exfigure exfiltration exflagellate exflagellation exflect exfodiate exfodiation exfoliate exfoliation exfoliative exfoliatory exgorgitation exhalable exhalant exhalation exhalatory exhale exhaust exhausted exhaustedly exhaustedness exhauster exhaustibility exhaustible exhausting exhaustingly exhaustion exhaustive exhaustively exhaustiveness exhaustless exhaustlessly exhaustlessness exheredate exheredation exhibit exhibitable exhibitant exhibiter exhibition exhibitional exhibitioner exhibitionism exhibitionist exhibitionistic exhibitionize exhibitive exhibitively exhibitor exhibitorial exhibitorship exhibitory exhilarant exhilarate exhilarating exhilaratingly exhilaration exhilarative exhilarator exhilaratory exhort exhortation exhortative exhortatively exhortator exhortatory exhorter exhortingly exhumate exhumation exhumator exhumatory exhume exhumer exigence exigency exigent exigenter exigently exigible exiguity exiguous exiguously exiguousness exilarch exilarchate exile exiledom exilement exiler exilian exilic exility eximious eximiously eximiousness exinanite exinanition exindusiate exinguinal exist existability existence existent existential existentialism existentialist existentialistic existentialize existentially existently exister existibility existible existlessness exit exite exition exitus exlex exmeridian Exmoor exoarteritis Exoascaceae exoascaceous Exoascales Exoascus Exobasidiaceae Exobasidiales Exobasidium exocannibalism exocardia exocardiac exocardial exocarp exocataphoria exoccipital exocentric Exochorda exochorion exoclinal exocline exocoelar exocoele exocoelic exocoelom Exocoetidae Exocoetus exocolitis exocone exocrine exoculate exoculation exocyclic Exocyclica Exocycloida exode exoderm exodermis exodic exodist exodontia exodontist exodos exodromic exodromy exodus exody exoenzyme exoenzymic exoerythrocytic exogamic exogamous exogamy exogastric exogastrically exogastritis exogen Exogenae exogenetic exogenic exogenous exogenously exogeny exognathion exognathite Exogonium Exogyra exolemma exometritis exomion exomis exomologesis exomorphic exomorphism exomphalos exomphalous exomphalus Exon exon exonarthex exoner exonerate exoneration exonerative exonerator exoneural Exonian exonship exopathic exoperidium exophagous exophagy exophasia exophasic exophoria exophoric exophthalmic exophthalmos exoplasm exopod exopodite exopoditic Exopterygota exopterygotic exopterygotism exopterygotous exorability exorable exorableness exorbital exorbitance exorbitancy exorbitant exorbitantly exorbitate exorbitation exorcisation exorcise exorcisement exorciser exorcism exorcismal exorcisory exorcist exorcistic exorcistical exordia exordial exordium exordize exorganic exorhason exormia exornation exosepsis exoskeletal exoskeleton exosmic exosmose exosmosis exosmotic exosperm exosporal exospore exosporium exosporous Exostema exostome exostosed exostosis exostotic exostra exostracism exostracize exoteric exoterical exoterically exotericism exoterics exotheca exothecal exothecate exothecium exothermal exothermic exothermous exotic exotically exoticalness exoticism exoticist exoticity exoticness exotism exotospore exotoxic exotoxin exotropia exotropic exotropism expalpate expand expanded expandedly expandedness expander expanding expandingly expanse expansibility expansible expansibleness expansibly expansile expansion expansional expansionary expansionism expansionist expansive expansively expansiveness expansivity expansometer expansure expatiate expatiater expatiatingly expatiation expatiative expatiator expatiatory expatriate expatriation expect expectable expectance expectancy expectant expectantly expectation expectative expectedly expecter expectingly expective expectorant expectorate expectoration expectorative expectorator expede expediate expedience expediency expedient expediential expedientially expedientist expediently expeditate expeditation expedite expedited expeditely expediteness expediter expedition expeditionary expeditionist expeditious expeditiously expeditiousness expel expellable expellant expellee expeller expend expendability expendable expender expendible expenditor expenditrix expenditure expense expenseful expensefully expensefulness expenseless expensilation expensive expensively expensiveness expenthesis expergefacient expergefaction experience experienceable experienced experienceless experiencer experiencible experient experiential experientialism experientialist experientially experiment experimental experimentalism experimentalist experimentalize experimentally experimentarian experimentation experimentative experimentator experimented experimentee experimenter experimentist experimentize experimently expert expertism expertize expertly expertness expertship expiable expiate expiation expiational expiatist expiative expiator expiatoriness expiatory expilate expilation expilator expirable expirant expirate expiration expirator expiratory expire expiree expirer expiring expiringly expiry expiscate expiscation expiscator expiscatory explain explainable explainer explaining explainingly explanate explanation explanative explanatively explanator explanatorily explanatoriness explanatory explant explantation explement explemental expletive expletively expletiveness expletory explicable explicableness explicate explication explicative explicatively explicator explicatory explicit explicitly explicitness explodable explode exploded explodent exploder exploit exploitable exploitage exploitation exploitationist exploitative exploiter exploitive exploiture explorable exploration explorational explorative exploratively explorativeness explorator exploratory explore explorement explorer exploring exploringly explosibility explosible explosion explosionist explosive explosively explosiveness expone exponence exponency exponent exponential exponentially exponentiation exponible export exportability exportable exportation exporter exposal expose exposed exposedness exposer exposit exposition expositional expositionary expositive expositively expositor expositorial expositorially expositorily expositoriness expository expositress expostulate expostulating expostulatingly expostulation expostulative expostulatively expostulator expostulatory exposure expound expoundable expounder express expressable expressage expressed expresser expressibility expressible expressibly expression expressionable expressional expressionful expressionism expressionist expressionistic expressionless expressionlessly expressionlessness expressive expressively expressiveness expressivism expressivity expressless expressly expressman expressness expressway exprimable exprobrate exprobration exprobratory expromission expromissor expropriable expropriate expropriation expropriator expugn expugnable expuition expulsatory expulse expulser expulsion expulsionist expulsive expulsory expunction expunge expungeable expungement expunger expurgate expurgation expurgative expurgator expurgatorial expurgatory expurge exquisite exquisitely exquisiteness exquisitism exquisitively exradio exradius exrupeal exsanguinate exsanguination exsanguine exsanguineous exsanguinity exsanguinous exsanguious exscind exscissor exscriptural exsculptate exscutellate exsect exsectile exsection exsector exsequatur exsert exserted exsertile exsertion exship exsibilate exsibilation exsiccant exsiccatae exsiccate exsiccation exsiccative exsiccator exsiliency exsomatic exspuition exsputory exstipulate exstrophy exsuccous exsuction exsufflate exsufflation exsufflicate exsurge exsurgent extant extemporal extemporally extemporalness extemporaneity extemporaneous extemporaneously extemporaneousness extemporarily extemporariness extemporary extempore extemporization extemporize extemporizer extend extended extendedly extendedness extender extendibility extendible extending extense extensibility extensible extensibleness extensile extensimeter extension extensional extensionist extensity extensive extensively extensiveness extensometer extensor extensory extensum extent extenuate extenuating extenuatingly extenuation extenuative extenuator extenuatory exter exterior exteriorate exterioration exteriority exteriorization exteriorize exteriorly exteriorness exterminable exterminate extermination exterminative exterminator exterminatory exterminatress exterminatrix exterminist extern external externalism externalist externalistic externality externalization externalize externally externals externate externation externe externity externization externize externomedian externum exteroceptist exteroceptive exteroceptor exterraneous exterrestrial exterritorial exterritoriality exterritorialize exterritorially extima extinct extinction extinctionist extinctive extinctor extine extinguish extinguishable extinguishant extinguished extinguisher extinguishment extipulate extirpate extirpation extirpationist extirpative extirpator extirpatory extispex extispicious extispicy extogenous extol extoll extollation extoller extollingly extollment extolment extoolitic extorsive extorsively extort extorter extortion extortionary extortionate extortionately extortioner extortionist extortive extra extrabold extrabranchial extrabronchial extrabuccal extrabulbar extrabureau extraburghal extracalendar extracalicular extracanonical extracapsular extracardial extracarpal extracathedral extracellular extracellularly extracerebral extracivic extracivically extraclassroom extraclaustral extracloacal extracollegiate extracolumella extraconscious extraconstellated extraconstitutional extracorporeal extracorpuscular extracosmic extracosmical extracostal extracranial extract extractable extractant extracted extractible extractiform extraction extractive extractor extractorship extracultural extracurial extracurricular extracurriculum extracutaneous extracystic extradecretal extradialectal extraditable extradite extradition extradomestic extrados extradosed extradotal extraduction extradural extraembryonic extraenteric extraepiphyseal extraequilibrium extraessential extraessentially extrafascicular extrafloral extrafocal extrafoliaceous extraforaneous extraformal extragalactic extragastric extrait extrajudicial extrajudicially extralateral extralite extrality extramarginal extramatrical extramedullary extramental extrameridian extrameridional extrametaphysical extrametrical extrametropolitan extramodal extramolecular extramorainal extramorainic extramoral extramoralist extramundane extramural extramurally extramusical extranational extranatural extranean extraneity extraneous extraneously extraneousness extranidal extranormal extranuclear extraocular extraofficial extraoral extraorbital extraorbitally extraordinarily extraordinariness extraordinary extraorganismal extraovate extraovular extraparenchymal extraparental extraparietal extraparliamentary extraparochial extraparochially extrapatriarchal extrapelvic extraperineal extraperiodic extraperiosteal extraperitoneal extraphenomenal extraphysical extraphysiological extrapituitary extraplacental extraplanetary extrapleural extrapoetical extrapolar extrapolate extrapolation extrapolative extrapolator extrapopular extraprofessional extraprostatic extraprovincial extrapulmonary extrapyramidal extraquiz extrared extraregarding extraregular extraregularly extrarenal extraretinal extrarhythmical extrasacerdotal extrascholastic extraschool extrascientific extrascriptural extrascripturality extrasensible extrasensory extrasensuous extraserous extrasocial extrasolar extrasomatic extraspectral extraspherical extraspinal extrastapedial extrastate extrasterile extrastomachal extrasyllabic extrasyllogistic extrasyphilitic extrasystole extrasystolic extratabular extratarsal extratellurian extratelluric extratemporal extratension extratensive extraterrene extraterrestrial extraterritorial extraterritoriality extraterritorially extrathecal extratheistic extrathermodynamic extrathoracic extratorrid extratracheal extratribal extratropical extratubal extratympanic extrauterine extravagance extravagancy extravagant Extravagantes extravagantly extravagantness extravaganza extravagate extravaginal extravasate extravasation extravascular extraventricular extraversion extravert extravillar extraviolet extravisceral extrazodiacal extreme extremeless extremely extremeness extremism extremist extremistic extremital extremity extricable extricably extricate extricated extrication extrinsic extrinsical extrinsicality extrinsically extrinsicalness extrinsicate extrinsication extroitive extropical extrorsal extrorse extrorsely extrospect extrospection extrospective extroversion extroversive extrovert extrovertish extrude extruder extruding extrusile extrusion extrusive extrusory extubate extubation extumescence extund extusion exuberance exuberancy exuberant exuberantly exuberantness exuberate exuberation exudate exudation exudative exude exudence exulcerate exulceration exulcerative exulceratory exult exultance exultancy exultant exultantly exultation exultet exultingly exululate exumbral exumbrella exumbrellar exundance exundancy exundate exundation exuviability exuviable exuviae exuvial exuviate exuviation exzodiacal ey eyah eyalet eyas eye eyeball eyebalm eyebar eyebeam eyeberry eyeblink eyebolt eyebree eyebridled eyebright eyebrow eyecup eyed eyedness eyedot eyedrop eyeflap eyeful eyeglance eyeglass eyehole Eyeish eyelash eyeless eyelessness eyelet eyeleteer eyeletter eyelid eyelight eyelike eyeline eyemark eyen eyepiece eyepit eyepoint eyer eyereach eyeroot eyesalve eyeseed eyeservant eyeserver eyeservice eyeshade eyeshield eyeshot eyesight eyesome eyesore eyespot eyestalk eyestone eyestrain eyestring eyetooth eyewaiter eyewash eyewater eyewear eyewink eyewinker eyewitness eyewort eyey eying eyn eyne eyot eyoty eyra eyre eyrie eyrir ezba Ezekiel Ezra F f fa Faba Fabaceae fabaceous fabella fabes Fabian Fabianism Fabianist fabiform fable fabled fabledom fableist fableland fablemaker fablemonger fablemongering fabler fabliau fabling Fabraea fabric fabricant fabricate fabrication fabricative fabricator fabricatress Fabrikoid fabrikoid Fabronia Fabroniaceae fabular fabulist fabulosity fabulous fabulously fabulousness faburden facadal facade face faceable facebread facecloth faced faceless facellite facemaker facemaking faceman facemark facepiece faceplate facer facet facete faceted facetely faceteness facetiae facetiation facetious facetiously facetiousness facewise facework facia facial facially faciation faciend facient facies facile facilely facileness facilitate facilitation facilitative facilitator facility facing facingly facinorous facinorousness faciobrachial faciocervical faciolingual facioplegia facioscapulohumeral fack fackeltanz fackings fackins facks facsimile facsimilist facsimilize fact factable factabling factful Factice facticide faction factional factionalism factionary factioneer factionist factionistism factious factiously factiousness factish factitial factitious factitiously factitive factitively factitude factive factor factorability factorable factorage factordom factoress factorial factorially factorist factorization factorize factorship factory factoryship factotum factrix factual factuality factually factualness factum facture facty facula facular faculous facultate facultative facultatively facultied facultize faculty facund facy fad fadable faddiness faddish faddishness faddism faddist faddle faddy fade fadeaway faded fadedly fadedness fadeless faden fader fadge fading fadingly fadingness fadmonger fadmongering fadmongery fadridden fady fae faerie Faeroe faery faeryland faff faffle faffy fag Fagaceae fagaceous fagald Fagales Fagara fage Fagelia fager fagger faggery fagging faggingly fagine fagopyrism fagopyrismus Fagopyrum fagot fagoter fagoting fagottino fagottist fagoty Fagus faham fahlerz fahlore fahlunite Fahrenheit faience fail failing failingly failingness faille failure fain fainaigue fainaiguer faineance faineancy faineant faineantism fainly fainness fains faint fainter faintful faintheart fainthearted faintheartedly faintheartedness fainting faintingly faintish faintishness faintly faintness faints fainty faipule fair fairer fairfieldite fairgoer fairgoing fairgrass fairground fairily fairing fairish fairishly fairkeeper fairlike fairling fairly fairm fairness fairstead fairtime fairwater fairway fairy fairydom fairyfolk fairyhood fairyish fairyism fairyland fairylike fairyologist fairyology fairyship faith faithbreach faithbreaker faithful faithfully faithfulness faithless faithlessly faithlessness faithwise faithworthiness faithworthy faitour fake fakement faker fakery fakiness fakir fakirism Fakofo faky falanaka Falange Falangism Falangist Falasha falbala falcade Falcata falcate falcated falcation falcer falces falchion falcial Falcidian falciform Falcinellus falciparum Falco falcon falconbill falconelle falconer Falcones falconet Falconidae Falconiformes Falconinae falconine falconlike falconoid falconry falcopern falcula falcular falculate Falcunculus faldage falderal faldfee faldstool Falerian Falernian Falerno Faliscan Falisci Falkland fall fallace fallacious fallaciously fallaciousness fallacy fallage fallation fallaway fallback fallectomy fallen fallenness faller fallfish fallibility fallible fallibleness fallibly falling Fallopian fallostomy fallotomy fallow fallowist fallowness falltime fallway fally falsary false falsehearted falseheartedly falseheartedness falsehood falsely falsen falseness falser falsettist falsetto falsework falsidical falsie falsifiable falsificate falsification falsificator falsifier falsify falsism Falstaffian faltboat faltche falter falterer faltering falteringly Falunian Faluns falutin falx fam Fama famatinite famble fame fameflower fameful fameless famelessly famelessness Fameuse fameworthy familia familial familiar familiarism familiarity familiarization familiarize familiarizer familiarizingly familiarly familiarness familism familist familistery familistic familistical family familyish famine famish famishment famous famously famousness famulary famulus Fan fan fana fanal fanam fanatic fanatical fanatically fanaticalness fanaticism fanaticize fanback fanbearer fanciable fancical fancied fancier fanciful fancifully fancifulness fancify fanciless fancy fancymonger fancysick fancywork fand fandangle fandango fandom fanega fanegada fanfarade Fanfare fanfare fanfaron fanfaronade fanfaronading fanflower fanfoot fang fanged fangle fangled fanglement fangless fanglet fanglomerate fangot fangy fanhouse faniente fanion fanioned fanlight fanlike fanmaker fanmaking fanman fannel fanner Fannia fannier fanning Fanny fanon fant fantail fantasia fantasie fantasied fantasist fantasque fantassin fantast fantastic fantastical fantasticality fantastically fantasticalness fantasticate fantastication fantasticism fantasticly fantasticness fantastico fantastry fantasy Fanti fantigue fantoccini fantocine fantod fantoddish Fanwe fanweed fanwise fanwork fanwort fanwright Fany faon Fapesmo far farad faradaic faraday faradic faradism faradization faradize faradizer faradmeter faradocontractility faradomuscular faradonervous faradopalpation farandole farasula faraway farawayness farce farcelike farcer farcetta farcial farcialize farcical farcicality farcically farcicalness farcied farcify farcing farcinoma farcist farctate farcy farde fardel fardelet fardh fardo fare farer farewell farfara farfel farfetched farfetchedness Farfugium fargoing fargood farina farinaceous farinaceously faring farinometer farinose farinosely farinulent Farish farish farkleberry farl farleu farm farmable farmage farmer farmeress farmerette farmerlike farmership farmery farmhold farmhouse farmhousey farming farmost farmplace farmstead farmsteading farmtown farmy farmyard farmyardy farnesol farness Farnovian faro Faroeish Faroese farolito Farouk farraginous farrago farrand farrandly farrantly farreate farreation farrier farrierlike farriery farrisite farrow farruca farsalah farse farseeing farseeingness farseer farset Farsi farsighted farsightedly farsightedness farther farthermost farthest farthing farthingale farthingless farweltered fasces fascet fascia fascial fasciate fasciated fasciately fasciation fascicle fascicled fascicular fascicularly fasciculate fasciculated fasciculately fasciculation fascicule fasciculus fascinate fascinated fascinatedly fascinating fascinatingly fascination fascinative fascinator fascinatress fascine fascinery Fascio fasciodesis fasciola fasciolar Fasciolaria Fasciolariidae fasciole fasciolet fascioliasis Fasciolidae fascioloid fascioplasty fasciotomy fascis fascism fascist Fascista Fascisti fascisticization fascisticize fascistization fascistize fash fasher fashery fashion fashionability fashionable fashionableness fashionably fashioned fashioner fashionist fashionize fashionless fashionmonger fashionmonging fashious fashiousness fasibitikite fasinite fass fassalite fast fasten fastener fastening faster fastgoing fasthold fastidiosity fastidious fastidiously fastidiousness fastidium fastigate fastigated fastigiate fastigium fasting fastingly fastish fastland fastness fastuous fastuously fastuousness fastus fat Fatagaga fatal fatalism fatalist fatalistic fatalistically fatality fatalize fatally fatalness fatbird fatbrained fate fated fateful fatefully fatefulness fatelike fathead fatheaded fatheadedness fathearted father fathercraft fathered fatherhood fatherland fatherlandish fatherless fatherlessness fatherlike fatherliness fatherling fatherly fathership fathmur fathom fathomable fathomage fathomer Fathometer fathomless fathomlessly fathomlessness fatidic fatidical fatidically fatiferous fatigability fatigable fatigableness fatigue fatigueless fatiguesome fatiguing fatiguingly fatiha fatil fatiloquent Fatima Fatimid fatiscence fatiscent fatless fatling fatly fatness fatsia fattable fatten fattenable fattener fatter fattily fattiness fattish fattishness fattrels fatty fatuism fatuitous fatuitousness fatuity fatuoid fatuous fatuously fatuousness fatwood faucal faucalize fauces faucet fauchard faucial faucitis faucre faugh faujasite fauld Faulkland fault faultage faulter faultfind faultfinder faultfinding faultful faultfully faultily faultiness faulting faultless faultlessly faultlessness faultsman faulty faun Fauna faunal faunally faunated faunish faunist faunistic faunistical faunistically faunlike faunological faunology faunule fause faussebraie faussebrayed faust Faustian fauterer fautor fautorship fauve Fauvism Fauvist favaginous favella favellidium favelloid Faventine faveolate faveolus faviform favilla favillous favism favissa favn favonian Favonius favor favorable favorableness favorably favored favoredly favoredness favorer favoress favoring favoringly favorite favoritism favorless favose favosely favosite Favosites Favositidae favositoid favous favus fawn fawner fawnery fawning fawningly fawningness fawnlike fawnskin fawny Fay fay Fayal fayalite Fayettism fayles Fayumic faze fazenda fe feaberry feague feak feal fealty fear fearable feared fearedly fearedness fearer fearful fearfully fearfulness fearingly fearless fearlessly fearlessness fearnought fearsome fearsomely fearsomeness feasance feasibility feasible feasibleness feasibly feasor feast feasten feaster feastful feastfully feastless feat feather featherback featherbed featherbedding featherbird featherbone featherbrain featherbrained featherdom feathered featheredge featheredged featherer featherfew featherfoil featherhead featherheaded featheriness feathering featherleaf featherless featherlessness featherlet featherlike featherman feathermonger featherpate featherpated featherstitch featherstitching feathertop featherway featherweed featherweight featherwing featherwise featherwood featherwork featherworker feathery featliness featly featness featous featural featurally feature featured featureful featureless featureliness featurely featy feaze feazings febricant febricide febricity febricula febrifacient febriferous febrific febrifugal febrifuge febrile febrility Febronian Febronianism Februarius February februation fecal fecalith fecaloid feces Fechnerian feck feckful feckfully feckless fecklessly fecklessness feckly fecula feculence feculency feculent fecund fecundate fecundation fecundative fecundator fecundatory fecundify fecundity fecundize fed feddan federacy Federal federal federalism federalist federalization federalize federally federalness federate federation federationist federatist federative federatively federator Fedia Fedora fee feeable feeble feeblebrained feeblehearted feebleheartedly feebleheartedness feebleness feebling feeblish feebly feed feedable feedback feedbin feedboard feedbox feeder feedhead feeding feedman feedsman feedstuff feedway feedy feel feelable feeler feeless feeling feelingful feelingless feelinglessly feelingly feelingness feer feere feering feetage feetless feeze fefnicute fegary Fegatella Fehmic fei feif feigher feign feigned feignedly feignedness feigner feigning feigningly Feijoa feil feint feis feist feisty Felapton feldsher feldspar feldsparphyre feldspathic feldspathization feldspathoid Felichthys felicide felicific felicitate felicitation felicitator felicitous felicitously felicitousness felicity felid Felidae feliform Felinae feline felinely felineness felinity felinophile felinophobe Felis Felix fell fellable fellage fellah fellaheen fellahin Fellani Fellata Fellatah fellatio fellation fellen feller fellic felliducous fellifluous felling fellingbird fellinic fellmonger fellmongering fellmongery fellness felloe fellow fellowcraft fellowess fellowheirship fellowless fellowlike fellowship fellside fellsman felly feloid felon feloness felonious feloniously feloniousness felonry felonsetter felonsetting felonweed felonwood felonwort felony fels felsite felsitic felsobanyite felsophyre felsophyric felsosphaerite felstone felt felted felter felting feltlike feltmaker feltmaking feltmonger feltness feltwork feltwort felty feltyfare felucca Felup felwort female femalely femaleness femality femalize Feme feme femerell femic femicide feminacy feminal feminality feminate femineity feminie feminility feminin feminine femininely feminineness femininism femininity feminism feminist feministic feministics feminity feminization feminize feminologist feminology feminophobe femora femoral femorocaudal femorocele femorococcygeal femorofibular femoropopliteal femororotulian femorotibial femur fen fenbank fenberry fence fenceful fenceless fencelessness fencelet fenceplay fencer fenceress fenchene fenchone fenchyl fencible fencing fend fendable fender fendering fenderless fendillate fendillation fendy feneration fenestella Fenestellidae fenestra fenestral fenestrate fenestrated fenestration fenestrato fenestrule Fenian Fenianism fenite fenks fenland fenlander fenman fennec fennel fennelflower fennig fennish Fennoman fenny fenouillet Fenrir fensive fent fenter fenugreek Fenzelia feod feodal feodality feodary feodatory feoff feoffee feoffeeship feoffment feoffor feower feracious feracity Ferae Ferahan feral feralin Feramorz ferash ferberite Ferdiad ferdwit feretory feretrum ferfathmur ferfet ferganite Fergus fergusite Ferguson fergusonite feria ferial feridgi ferie ferine ferinely ferineness Feringi Ferio Ferison ferity ferk ferling ferly fermail Fermatian ferme ferment fermentability fermentable fermentarian fermentation fermentative fermentatively fermentativeness fermentatory fermenter fermentescible fermentitious fermentive fermentology fermentor fermentum fermerer fermery fermila fermorite fern fernandinite Fernando fernbird fernbrake ferned fernery ferngale ferngrower fernland fernleaf fernless fernlike fernshaw fernsick ferntickle ferntickled fernwort ferny Ferocactus ferocious ferociously ferociousness ferocity feroher Feronia ferrado ferrament Ferrara Ferrarese ferrate ferrated ferrateen ferratin ferrean ferreous ferret ferreter ferreting ferretto ferrety ferri ferriage ferric ferrichloride ferricyanate ferricyanhydric ferricyanic ferricyanide ferricyanogen ferrier ferriferous ferrihydrocyanic ferriprussiate ferriprussic ferrite ferritization ferritungstite ferrivorous ferroalloy ferroaluminum ferroboron ferrocalcite ferrocerium ferrochrome ferrochromium ferroconcrete ferroconcretor ferrocyanate ferrocyanhydric ferrocyanic ferrocyanide ferrocyanogen ferroglass ferrogoslarite ferrohydrocyanic ferroinclave ferromagnesian ferromagnetic ferromagnetism ferromanganese ferromolybdenum ferronatrite ferronickel ferrophosphorus ferroprint ferroprussiate ferroprussic ferrosilicon ferrotitanium ferrotungsten ferrotype ferrotyper ferrous ferrovanadium ferrozirconium ferruginate ferrugination ferruginean ferruginous ferrule ferruler ferrum ferruminate ferrumination ferry ferryboat ferryhouse ferryman ferryway ferthumlungur Fertil fertile fertilely fertileness fertility fertilizable fertilization fertilizational fertilize fertilizer feru ferula ferulaceous ferule ferulic fervanite fervency fervent fervently ferventness fervescence fervescent fervid fervidity fervidly fervidness Fervidor fervor fervorless Fesapo Fescennine fescenninity fescue fess fessely fesswise fest festal festally Feste fester festerment festilogy festinance festinate festinately festination festine Festino festival festivally festive festively festiveness festivity festivous festology festoon festoonery festoony festuca festucine fet fetal fetalism fetalization fetation fetch fetched fetcher fetching fetchingly feteless feterita fetial fetiales fetichmonger feticidal feticide fetid fetidity fetidly fetidness fetiferous fetiparous fetish fetisheer fetishic fetishism fetishist fetishistic fetishization fetishize fetishmonger fetishry fetlock fetlocked fetlow fetography fetometry fetoplacental fetor fetter fetterbush fetterer fetterless fetterlock fetticus fettle fettler fettling fetus feu feuage feuar feucht feud feudal feudalism feudalist feudalistic feudality feudalizable feudalization feudalize feudally feudatorial feudatory feudee feudist feudovassalism feued Feuillants feuille feuilletonism feuilletonist feuilletonistic feulamort fever feverberry feverbush fevercup feveret feverfew fevergum feverish feverishly feverishness feverless feverlike feverous feverously feverroot fevertrap fevertwig fevertwitch feverweed feverwort few fewness fewsome fewter fewterer fewtrils fey feyness fez Fezzan fezzed Fezziwig fezzy fi fiacre fiance fiancee fianchetto Fianna fiar fiard fiasco fiat fiatconfirmatio fib fibber fibbery fibdom Fiber fiber fiberboard fibered Fiberglas fiberize fiberizer fiberless fiberware fibration fibreless fibreware fibriform fibril fibrilla fibrillar fibrillary fibrillate fibrillated fibrillation fibrilled fibrilliferous fibrilliform fibrillose fibrillous fibrin fibrinate fibrination fibrine fibrinemia fibrinoalbuminous fibrinocellular fibrinogen fibrinogenetic fibrinogenic fibrinogenous fibrinolysin fibrinolysis fibrinolytic fibrinoplastic fibrinoplastin fibrinopurulent fibrinose fibrinosis fibrinous fibrinuria fibroadenia fibroadenoma fibroadipose fibroangioma fibroareolar fibroblast fibroblastic fibrobronchitis fibrocalcareous fibrocarcinoma fibrocartilage fibrocartilaginous fibrocaseose fibrocaseous fibrocellular fibrochondritis fibrochondroma fibrochondrosteal fibrocrystalline fibrocyst fibrocystic fibrocystoma fibrocyte fibroelastic fibroenchondroma fibrofatty fibroferrite fibroglia fibroglioma fibrohemorrhagic fibroid fibroin fibrointestinal fibroligamentous fibrolipoma fibrolipomatous fibrolite fibrolitic fibroma fibromata fibromatoid fibromatosis fibromatous fibromembrane fibromembranous fibromucous fibromuscular fibromyectomy fibromyitis fibromyoma fibromyomatous fibromyomectomy fibromyositis fibromyotomy fibromyxoma fibromyxosarcoma fibroneuroma fibronuclear fibronucleated fibropapilloma fibropericarditis fibroplastic fibropolypus fibropsammoma fibropurulent fibroreticulate fibrosarcoma fibrose fibroserous fibrosis fibrositis Fibrospongiae fibrotic fibrotuberculosis fibrous fibrously fibrousness fibrovasal fibrovascular fibry fibster fibula fibulae fibular fibulare fibulocalcaneal Ficaria ficary fice ficelle fiche Fichtean Fichteanism fichtelite fichu ficiform fickle ficklehearted fickleness ficklety ficklewise fickly fico ficoid Ficoidaceae Ficoideae ficoides fictation fictile fictileness fictility fiction fictional fictionalize fictionally fictionary fictioneer fictioner fictionist fictionistic fictionization fictionize fictionmonger fictious fictitious fictitiously fictitiousness fictive fictively Ficula Ficus fid Fidac fidalgo fidate fidation fiddle fiddleback fiddlebrained fiddlecome fiddledeedee fiddlefaced fiddlehead fiddleheaded fiddler fiddlerfish fiddlery fiddlestick fiddlestring fiddlewood fiddley fiddling fide fideicommiss fideicommissary fideicommission fideicommissioner fideicommissor fideicommissum fideism fideist fidejussion fidejussionary fidejussor fidejussory Fidele Fidelia Fidelio fidelity fidepromission fidepromissor Fides Fidessa fidfad fidge fidget fidgeter fidgetily fidgetiness fidgeting fidgetingly fidgety Fidia fidicinal fidicinales fidicula Fido fiducia fiducial fiducially fiduciarily fiduciary fiducinales fie fiedlerite fiefdom field fieldball fieldbird fielded fielder fieldfare fieldish fieldman fieldpiece fieldsman fieldward fieldwards fieldwork fieldworker fieldwort fieldy fiend fiendful fiendfully fiendhead fiendish fiendishly fiendishness fiendism fiendlike fiendliness fiendly fiendship fient Fierabras Fierasfer fierasferid Fierasferidae fierasferoid fierce fiercehearted fiercely fiercen fierceness fierding fierily fieriness fiery fiesta fieulamort Fife fife fifer fifie fifish fifo fifteen fifteener fifteenfold fifteenth fifteenthly fifth fifthly fiftieth fifty fiftyfold fig figaro figbird figeater figent figged figgery figging figgle figgy fight fightable fighter fighteress fighting fightingly fightwite Figitidae figless figlike figment figmental figpecker figshell figulate figulated figuline figurability figurable figural figurant figurante figurate figurately figuration figurative figuratively figurativeness figure figured figuredly figurehead figureheadless figureheadship figureless figurer figuresome figurette figurial figurine figurism figurist figurize figury figworm figwort Fiji Fijian fike fikie filace filaceous filacer Filago filament filamentar filamentary filamented filamentiferous filamentoid filamentose filamentous filamentule filander filanders filao filar Filaria filaria filarial filarian filariasis filaricidal filariform filariid Filariidae filarious filasse filate filator filature filbert filch filcher filchery filching filchingly file filefish filelike filemaker filemaking filemot filer filesmith filet filial filiality filially filialness filiate filiation filibeg filibranch Filibranchia filibranchiate filibuster filibusterer filibusterism filibusterous filical Filicales filicauline Filices filicic filicidal filicide filiciform filicin Filicineae filicinean filicite Filicites filicologist filicology Filicornia filiety filiferous filiform filiformed Filigera filigerous filigree filing filings filionymic filiopietistic filioque Filipendula filipendulous Filipina Filipiniana Filipinization Filipinize Filipino filippo filipuncture filite Filix fill fillable filled fillemot filler fillercap fillet filleter filleting filletlike filletster filleul filling fillingly fillingness fillip fillipeen fillister fillmass fillock fillowite filly film filmable filmdom filmet filmgoer filmgoing filmic filmiform filmily filminess filmish filmist filmize filmland filmlike filmogen filmslide filmstrip filmy filo filoplumaceous filoplume filopodium Filosa filose filoselle fils filter filterability filterable filterableness filterer filtering filterman filth filthify filthily filthiness filthless filthy filtrability filtrable filtratable filtrate filtration fimble fimbria fimbrial fimbriate fimbriated fimbriation fimbriatum fimbricate fimbricated fimbrilla fimbrillate fimbrilliferous fimbrillose fimbriodentate Fimbristylis fimetarious fimicolous Fin fin finable finableness finagle finagler final finale finalism finalist finality finalize finally finance financial financialist financially financier financiery financist finback finch finchbacked finched finchery find findability findable findal finder findfault finding findjan fine fineable finebent fineish fineleaf fineless finely finement fineness finer finery finespun finesse finesser finestill finestiller finetop finfish finfoot Fingal Fingall Fingallian fingent finger fingerable fingerberry fingerbreadth fingered fingerer fingerfish fingerflower fingerhold fingerhook fingering fingerleaf fingerless fingerlet fingerlike fingerling fingernail fingerparted fingerprint fingerprinting fingerroot fingersmith fingerspin fingerstall fingerstone fingertip fingerwise fingerwork fingery fingrigo Fingu finial finialed finical finicality finically finicalness finicism finick finickily finickiness finicking finickingly finickingness finific finify Finiglacial finikin finiking fining finis finish finishable finished finisher finishing finite finitely finiteness finitesimal finitive finitude finity finjan fink finkel finland Finlander finless finlet finlike Finmark Finn finnac finned finner finnesko Finnic Finnicize finnip Finnish finny finochio Fionnuala fiord fiorded Fioretti fiorin fiorite Fiot fip fipenny fipple fique fir Firbolg firca fire fireable firearm firearmed fireback fireball firebird fireblende fireboard fireboat firebolt firebolted firebote firebox fireboy firebrand firebrat firebreak firebrick firebug fireburn firecoat firecracker firecrest fired firedamp firedog firedrake firefall firefang firefanged fireflaught fireflirt fireflower firefly fireguard firehouse fireless firelight firelike fireling firelit firelock fireman firemanship firemaster fireplace fireplug firepower fireproof fireproofing fireproofness firer fireroom firesafe firesafeness firesafety fireshaft fireshine fireside firesider firesideship firespout firestone firestopping firetail firetop firetrap firewarden firewater fireweed firewood firework fireworkless fireworky fireworm firing firk firker firkin firlot firm firmament firmamental firman firmance firmer firmhearted firmisternal Firmisternia firmisternial firmisternous firmly firmness firn Firnismalerei Firoloida firring firry first firstcomer firsthand firstling firstly firstness firstship firth fisc fiscal fiscalify fiscalism fiscalization fiscalize fiscally fischerite fise fisetin fish fishable fishback fishbed fishberry fishbolt fishbone fisheater fished fisher fisherboat fisherboy fisheress fisherfolk fishergirl fisherman fisherpeople fisherwoman fishery fishet fisheye fishfall fishful fishgarth fishgig fishhood fishhook fishhooks fishhouse fishify fishily fishiness fishing fishingly fishless fishlet fishlike fishline fishling fishman fishmonger fishmouth fishplate fishpond fishpool fishpot fishpotter fishpound fishskin fishtail fishway fishweed fishweir fishwife fishwoman fishwood fishworker fishworks fishworm fishy fishyard fisnoga fissate fissicostate fissidactyl Fissidens Fissidentaceae fissidentaceous fissile fissileness fissilingual Fissilinguia fissility fission fissionable fissipalmate fissipalmation fissiparation fissiparism fissiparity fissiparous fissiparously fissiparousness fissiped Fissipeda fissipedal fissipedate Fissipedia fissipedial Fissipes fissirostral fissirostrate Fissirostres fissive fissural fissuration fissure fissureless Fissurella Fissurellidae fissuriform fissury fist fisted fister fistful fistiana fistic fistical fisticuff fisticuffer fisticuffery fistify fistiness fisting fistlike fistmele fistnote fistuca fistula Fistulana fistular Fistularia Fistulariidae fistularioid fistulate fistulated fistulatome fistulatous fistule fistuliform Fistulina fistulize fistulose fistulous fistwise fisty fit fitch fitched fitchee fitcher fitchery fitchet fitchew fitful fitfully fitfulness fitly fitment fitness fitout fitroot fittable fittage fitted fittedness fitten fitter fitters fittily fittiness fitting fittingly fittingness Fittonia fitty fittyfied fittyways fittywise fitweed Fitzclarence Fitzroy Fitzroya Fiuman five fivebar fivefold fivefoldness fiveling fivepence fivepenny fivepins fiver fives fivescore fivesome fivestones fix fixable fixage fixate fixatif fixation fixative fixator fixature fixed fixedly fixedness fixer fixidity fixing fixity fixture fixtureless fixure fizelyite fizgig fizz fizzer fizzle fizzy fjarding fjeld fjerding Fjorgyn flabbergast flabbergastation flabbily flabbiness flabby flabellarium flabellate flabellation flabellifoliate flabelliform flabellinerved flabellum flabrum flaccid flaccidity flaccidly flaccidness flacherie Flacian Flacianism Flacianist flack flacked flacker flacket Flacourtia Flacourtiaceae flacourtiaceous flaff flaffer flag flagboat flagellant flagellantism flagellar Flagellaria Flagellariaceae flagellariaceous Flagellata Flagellatae flagellate flagellated flagellation flagellative flagellator flagellatory flagelliferous flagelliform flagellist flagellosis flagellula flagellum flageolet flagfall flagger flaggery flaggily flagginess flagging flaggingly flaggish flaggy flagitate flagitation flagitious flagitiously flagitiousness flagleaf flagless flaglet flaglike flagmaker flagmaking flagman flagon flagonet flagonless flagpole flagrance flagrancy flagrant flagrantly flagrantness flagroot flagship flagstaff flagstick flagstone flagworm flail flaillike flair flaith flaithship flajolotite flak flakage flake flakeless flakelet flaker flakily flakiness flaky flam Flamandization Flamandize flamant flamb flambeau flambeaux flamberg flamboyance flamboyancy flamboyant flamboyantism flamboyantize flamboyantly flamboyer flame flamed flameflower flameless flamelet flamelike flamen flamenco flamenship flameproof flamer flamfew flamineous flaming Flamingant flamingly flamingo Flaminian flaminica flaminical flammability flammable flammeous flammiferous flammulated flammulation flammule flamy flan flancard flanch flanched flanconade flandan flandowser flane flange flangeless flanger flangeway flank flankard flanked flanker flanking flankwise flanky flannel flannelbush flanneled flannelette flannelflower flannelleaf flannelly flannelmouth flannelmouthed flannels flanque flap flapcake flapdock flapdoodle flapdragon flapjack flapmouthed flapper flapperdom flapperhood flapperish flapperism flare flareback flareboard flareless flaring flaringly flary flaser flash flashboard flasher flashet flashily flashiness flashing flashingly flashlight flashlike flashly flashness flashover flashpan flashproof flashtester flashy flask flasker flasket flasklet flasque flat flatboat flatbottom flatcap flatcar flatdom flated flatfish flatfoot flathat flathead flatiron flatland flatlet flatling flatly flatman flatness flatnose flatten flattener flattening flatter flatterable flattercap flatterdock flatterer flattering flatteringly flatteringness flattery flattie flatting flattish flattop flatulence flatulency flatulent flatulently flatulentness flatus flatware flatway flatways flatweed flatwise flatwoods flatwork flatworm Flaubertian flaught flaughter flaunt flaunter flauntily flauntiness flaunting flauntingly flaunty flautino flautist flavanilin flavaniline flavanthrene flavanthrone flavedo Flaveria flavescence flavescent Flavia Flavian flavic flavicant flavid flavin flavine Flavius flavo Flavobacterium flavone flavoprotein flavopurpurin flavor flavored flavorer flavorful flavoring flavorless flavorous flavorsome flavory flavour flaw flawed flawflower flawful flawless flawlessly flawlessness flawn flawy flax flaxboard flaxbush flaxdrop flaxen flaxlike flaxman flaxseed flaxtail flaxweed flaxwench flaxwife flaxwoman flaxwort flaxy flay flayer flayflint flea fleabane fleabite fleadock fleam fleaseed fleaweed fleawood fleawort fleay flebile fleche flechette fleck flecken flecker fleckiness fleckled fleckless flecklessly flecky flecnodal flecnode flection flectional flectionless flector fled fledge fledgeless fledgling fledgy flee fleece fleeceable fleeced fleeceflower fleeceless fleecelike fleecer fleech fleechment fleecily fleeciness fleecy fleer fleerer fleering fleeringly fleet fleeter fleetful fleeting fleetingly fleetingness fleetings fleetly fleetness fleetwing Flem Fleming Flemish flemish flench flense flenser flerry flesh fleshbrush fleshed fleshen flesher fleshful fleshhood fleshhook fleshiness fleshing fleshings fleshless fleshlike fleshlily fleshliness fleshly fleshment fleshmonger fleshpot fleshy flet Fleta fletch Fletcher fletcher Fletcherism Fletcherite Fletcherize flether fleuret fleurettee fleuronnee fleury flew flewed flewit flews flex flexanimous flexed flexibility flexible flexibleness flexibly flexile flexility flexion flexionless flexor flexuose flexuosity flexuous flexuously flexuousness flexural flexure flexured fley fleyedly fleyedness fleyland fleysome flibbertigibbet flicflac flick flicker flickering flickeringly flickerproof flickertail flickery flicky flidder flier fligger flight flighted flighter flightful flightily flightiness flighting flightless flightshot flighty flimflam flimflammer flimflammery flimmer flimp flimsily flimsiness flimsy flinch flincher flinching flinchingly flinder Flindersia flindosa flindosy fling flinger flingy flinkite flint flinter flinthearted flintify flintily flintiness flintless flintlike flintlock flintwood flintwork flintworker flinty flioma flip flipe flipjack flippancy flippant flippantly flippantness flipper flipperling flippery flirt flirtable flirtation flirtational flirtationless flirtatious flirtatiously flirtatiousness flirter flirtigig flirting flirtingly flirtish flirtishness flirtling flirty flisk flisky flit flitch flitchen flite flitfold fliting flitter flitterbat flittermouse flittern flitting flittingly flitwite flivver flix flixweed Flo float floatability floatable floatage floatation floatative floatboard floater floatiness floating floatingly floative floatless floatmaker floatman floatplane floatsman floatstone floaty flob flobby floc floccillation floccipend floccose floccosely flocculable flocculant floccular flocculate flocculation flocculator floccule flocculence flocculency flocculent flocculently flocculose flocculus floccus flock flocker flocking flockless flocklike flockman flockmaster flockowner flockwise flocky flocoon flodge floe floeberg Floerkea floey flog floggable flogger flogging floggingly flogmaster flogster flokite flong flood floodable floodage floodboard floodcock flooded flooder floodgate flooding floodless floodlet floodlight floodlighting floodlike floodmark floodometer floodproof floodtime floodwater floodway floodwood floody floor floorage floorcloth floorer floorhead flooring floorless floorman floorwalker floorward floorway floorwise floozy flop flophouse flopover flopper floppers floppily floppiness floppy flopwing Flora flora floral Floralia floralize florally floramor floran florate floreal floreate Florence florence florent Florentine Florentinism florentium flores florescence florescent floressence floret floreted floretum Floria Florian floriate floriated floriation florican floricin floricultural floriculturally floriculture floriculturist florid Florida Floridan Florideae floridean florideous Floridian floridity floridly floridness floriferous floriferously floriferousness florification floriform florigen florigenic florigraphy florikan floriken florilegium florimania florimanist florin Florinda floriparous floripondio floriscope Florissant florist floristic floristically floristics floristry florisugent florivorous floroon floroscope florula florulent flory floscular Floscularia floscularian Flosculariidae floscule flosculose flosculous flosh floss flosser flossflower Flossie flossification flossing flossy flot flota flotage flotant flotation flotative flotilla flotorial flotsam flounce flouncey flouncing flounder floundering flounderingly flour flourish flourishable flourisher flourishing flourishingly flourishment flourishy flourlike floury flouse flout flouter flouting floutingly flow flowable flowage flower flowerage flowered flowerer floweret flowerful flowerily floweriness flowering flowerist flowerless flowerlessness flowerlet flowerlike flowerpecker flowerpot flowerwork flowery flowing flowingly flowingness flowmanostat flowmeter flown flowoff Floyd flu fluate fluavil flub flubdub flubdubbery flucan fluctiferous fluctigerous fluctisonant fluctisonous fluctuability fluctuable fluctuant fluctuate fluctuation fluctuosity fluctuous flue flued flueless fluellen fluellite flueman fluency fluent fluently fluentness fluer fluework fluey fluff fluffer fluffily fluffiness fluffy Flugelhorn flugelman fluible fluid fluidacetextract fluidal fluidally fluidextract fluidglycerate fluidible fluidic fluidification fluidifier fluidify fluidimeter fluidism fluidist fluidity fluidization fluidize fluidly fluidness fluidram fluigram fluitant fluke fluked flukeless flukeworm flukewort flukily flukiness fluking fluky flumdiddle flume flumerin fluminose flummadiddle flummer flummery flummox flummydiddle flump flung flunk flunker flunkeydom flunkeyhood flunkeyish flunkeyize flunky flunkydom flunkyhood flunkyish flunkyism flunkyistic flunkyite flunkyize fluoaluminate fluoaluminic fluoarsenate fluoborate fluoboric fluoborid fluoboride fluoborite fluobromide fluocarbonate fluocerine fluocerite fluochloride fluohydric fluophosphate fluor fluoran fluoranthene fluorapatite fluorate fluorbenzene fluorene fluorenyl fluoresage fluoresce fluorescein fluorescence fluorescent fluorescigenic fluorescigenous fluorescin fluorhydric fluoric fluoridate fluoridation fluoride fluoridization fluoridize fluorimeter fluorinate fluorination fluorindine fluorine fluorite fluormeter fluorobenzene fluoroborate fluoroform fluoroformol fluorogen fluorogenic fluorography fluoroid fluorometer fluoroscope fluoroscopic fluoroscopy fluorosis fluorotype fluorspar fluoryl fluosilicate fluosilicic fluotantalate fluotantalic fluotitanate fluotitanic fluozirconic flurn flurr flurried flurriedly flurriment flurry flush flushboard flusher flusherman flushgate flushing flushingly flushness flushy flusk flusker fluster flusterate flusteration flusterer flusterment flustery Flustra flustrine flustroid flustrum flute flutebird fluted flutelike flutemouth fluter flutework Flutidae flutina fluting flutist flutter flutterable flutteration flutterer fluttering flutteringly flutterless flutterment fluttersome fluttery fluty fluvial fluvialist fluviatic fluviatile fluvicoline fluvioglacial fluviograph fluviolacustrine fluviology fluviomarine fluviometer fluviose fluvioterrestrial fluviovolcanic flux fluxation fluxer fluxibility fluxible fluxibleness fluxibly fluxile fluxility fluxion fluxional fluxionally fluxionary fluxionist fluxmeter fluxroot fluxweed fly flyable flyaway flyback flyball flybane flybelt flyblow flyblown flyboat flyboy flycatcher flyeater flyer flyflap flyflapper flyflower flying flyingly flyleaf flyless flyman flyness flypaper flype flyproof Flysch flyspeck flytail flytier flytrap flyway flyweight flywheel flywinch flywort Fo foal foalfoot foalhood foaly foam foambow foamer foamflower foamily foaminess foaming foamingly foamless foamlike foamy fob focal focalization focalize focally focaloid foci focimeter focimetry focoids focometer focometry focsle focus focusable focuser focusless fod fodda fodder fodderer foddering fodderless foder fodge fodgel fodient Fodientia foe foehn foehnlike foeish foeless foelike foeman foemanship Foeniculum foenngreek foeship foetalization fog fogbound fogbow fogdog fogdom fogeater fogey fogfruit foggage fogged fogger foggily fogginess foggish foggy foghorn fogle fogless fogman fogo fogon fogou fogproof fogram fogramite fogramity fogscoffer fogus fogy fogydom fogyish fogyism fohat foible foil foilable foiler foiling foilsman foining foiningly Foism foison foisonless Foist foist foister foistiness foisty foiter Fokker fold foldable foldage foldboat foldcourse folded foldedly folden folder folding foldless foldskirt foldure foldwards foldy fole folgerite folia foliaceous foliaceousness foliage foliaged foliageous folial foliar foliary foliate foliated foliation foliature folie foliicolous foliiferous foliiform folio foliobranch foliobranchiate foliocellosis foliolate foliole folioliferous foliolose foliose foliosity foliot folious foliously folium folk folkcraft folkfree folkland folklore folkloric folklorish folklorism folklorist folkloristic folkmoot folkmooter folkmot folkmote folkmoter folkright folksiness folksy Folkvang Folkvangr folkway folky folles folletage follicle follicular folliculate folliculated follicule folliculin Folliculina folliculitis folliculose folliculosis folliculous folliful follis follow followable follower followership following followingly folly follyproof Fomalhaut foment fomentation fomenter fomes fomites Fon fondak fondant fondish fondle fondler fondlesome fondlike fondling fondlingly fondly fondness fondu fondue fonduk fonly fonnish fono fons font Fontainea fontal fontally fontanel fontange fonted fontful fonticulus fontinal Fontinalaceae fontinalaceous Fontinalis fontlet foo Foochow Foochowese food fooder foodful foodless foodlessness foodstuff foody foofaraw fool fooldom foolery fooless foolfish foolhardihood foolhardily foolhardiness foolhardiship foolhardy fooling foolish foolishly foolishness foollike foolocracy foolproof foolproofness foolscap foolship fooner fooster foosterer foot footage footback football footballer footballist footband footblower footboard footboy footbreadth footbridge footcloth footed footeite footer footfall footfarer footfault footfolk footful footganger footgear footgeld foothalt foothill foothold foothook foothot footing footingly footings footle footler footless footlicker footlight footlights footling footlining footlock footmaker footman footmanhood footmanry footmanship footmark footnote footnoted footpace footpad footpaddery footpath footpick footplate footprint footrail footrest footrill footroom footrope foots footscald footslog footslogger footsore footsoreness footstalk footstall footstep footstick footstock footstone footstool footwalk footwall footway footwear footwork footworn footy fooyoung foozle foozler fop fopling foppery foppish foppishly foppishness foppy fopship For for fora forage foragement forager foralite foramen foraminated foramination foraminifer Foraminifera foraminiferal foraminiferan foraminiferous foraminose foraminous foraminulate foraminule foraminulose foraminulous forane foraneen foraneous forasmuch foray forayer forb forbade forbar forbathe forbear forbearable forbearance forbearant forbearantly forbearer forbearing forbearingly forbearingness forbesite forbid forbiddable forbiddal forbiddance forbidden forbiddenly forbiddenness forbidder forbidding forbiddingly forbiddingness forbit forbled forblow forbore forborne forbow forby force forceable forced forcedly forcedness forceful forcefully forcefulness forceless forcemeat forcement forceps forcepslike forcer forchase forche forcibility forcible forcibleness forcibly forcing forcingly forcipate forcipated forcipes forcipiform forcipressure Forcipulata forcipulate forcleave forconceit ford fordable fordableness fordays Fordicidia fording fordless fordo fordone fordwine fordy fore foreaccounting foreaccustom foreacquaint foreact foreadapt foreadmonish foreadvertise foreadvice foreadvise foreallege foreallot foreannounce foreannouncement foreanswer foreappoint foreappointment forearm foreassign foreassurance forebackwardly forebay forebear forebemoan forebemoaned forebespeak forebitt forebitten forebitter forebless foreboard forebode forebodement foreboder foreboding forebodingly forebodingness forebody foreboot forebowels forebowline forebrace forebrain forebreast forebridge foreburton forebush forecar forecarriage forecast forecaster forecasting forecastingly forecastle forecastlehead forecastleman forecatching forecatharping forechamber forechase forechoice forechoose forechurch forecited foreclaw foreclosable foreclose foreclosure forecome forecomingness forecommend foreconceive foreconclude forecondemn foreconscious foreconsent foreconsider forecontrive forecool forecooler forecounsel forecount forecourse forecourt forecover forecovert foredate foredawn foreday foredeck foredeclare foredecree foredeep foredefeated foredefine foredenounce foredescribe foredeserved foredesign foredesignment foredesk foredestine foredestiny foredetermination foredetermine foredevised foredevote forediscern foredispose foredivine foredone foredoom foredoomer foredoor foreface forefather forefatherly forefault forefeel forefeeling forefeelingly forefelt forefield forefigure forefin forefinger forefit foreflank foreflap foreflipper forefoot forefront foregallery foregame foreganger foregate foregift foregirth foreglance foregleam foreglimpse foreglow forego foregoer foregoing foregone foregoneness foreground foreguess foreguidance forehalf forehall forehammer forehand forehanded forehandedness forehandsel forehard forehatch forehatchway forehead foreheaded forehear forehearth foreheater forehill forehinting forehold forehood forehoof forehook foreign foreigneering foreigner foreignership foreignism foreignization foreignize foreignly foreignness foreimagination foreimagine foreimpressed foreimpression foreinclined foreinstruct foreintend foreiron forejudge forejudgment forekeel foreking foreknee foreknow foreknowable foreknower foreknowing foreknowingly foreknowledge forel forelady foreland forelay foreleech foreleg forelimb forelive forellenstein forelock forelook foreloop forelooper foreloper foremade foreman foremanship foremarch foremark foremartyr foremast foremasthand foremastman foremean foremeant foremelt foremention forementioned foremessenger foremilk foremisgiving foremistress foremost foremostly foremother forename forenamed forenews forenight forenoon forenote forenoted forenotice forenotion forensal forensic forensical forensicality forensically foreordain foreordainment foreorder foreordinate foreordination foreorlop forepad forepale foreparents forepart forepassed forepast forepaw forepayment forepeak foreperiod forepiece foreplace foreplan foreplanting forepole foreporch forepossessed forepost forepredicament forepreparation foreprepare forepretended foreproduct foreproffer forepromise forepromised foreprovided foreprovision forepurpose forequarter forequoted foreran forerank forereach forereaching foreread forereading forerecited forereckon forerehearsed foreremembered forereport forerequest forerevelation forerib forerigging foreright foreroom foreroyal forerun forerunner forerunnership forerunnings foresaddle foresaid foresail foresay forescene forescent foreschool foreschooling forescript foreseason foreseat foresee foreseeability foreseeable foreseeingly foreseer foreseize foresend foresense foresentence foreset foresettle foresettled foreshadow foreshadower foreshaft foreshank foreshape foresheet foreshift foreship foreshock foreshoe foreshop foreshore foreshorten foreshortening foreshot foreshoulder foreshow foreshower foreshroud foreside foresight foresighted foresightedness foresightful foresightless foresign foresignify foresin foresing foresinger foreskin foreskirt foresleeve foresound forespeak forespecified forespeed forespencer forest forestaff forestage forestair forestal forestall forestaller forestallment forestarling forestate forestation forestay forestaysail forestcraft forested foresteep forestem forestep forester forestership forestful forestial Forestian forestick Forestiera forestine forestish forestless forestlike forestology forestral forestress forestry forestside forestudy forestwards foresty foresummer foresummon foresweat foretack foretackle foretalk foretalking foretaste foretaster foretell foretellable foreteller forethink forethinker forethought forethoughted forethoughtful forethoughtfully forethoughtfulness forethoughtless forethrift foretime foretimed foretoken foretold foretop foretopman foretrace foretrysail foreturn foretype foretypified foreuse foreutter forevalue forever forevermore foreview forevision forevouch forevouched forevow forewarm forewarmer forewarn forewarner forewarning forewarningly forewaters foreween foreweep foreweigh forewing forewinning forewisdom forewish forewoman forewonted foreword foreworld foreworn forewritten forewrought foreyard foreyear forfairn forfar forfare forfars forfault forfaulture forfeit forfeiter forfeits forfeiture forfend forficate forficated forfication forficiform Forficula forficulate Forficulidae forfouchten forfoughen forfoughten forgainst forgather forge forgeability forgeable forged forgedly forgeful forgeman forger forgery forget forgetful forgetfully forgetfulness forgetive forgetness forgettable forgetter forgetting forgettingly forgie forging forgivable forgivableness forgivably forgive forgiveless forgiveness forgiver forgiving forgivingly forgivingness forgo forgoer forgot forgotten forgottenness forgrow forgrown forhoo forhooy forhow forinsec forint forisfamiliate forisfamiliation forjesket forjudge forjudger fork forkable forkbeard forked forkedly forkedness forker forkful forkhead forkiness forkless forklike forkman forksmith forktail forkwise forky forleft forlet forlorn forlornity forlornly forlornness form formability formable formably formagen formagenic formal formalazine formaldehyde formaldehydesulphoxylate formaldehydesulphoxylic formaldoxime formalesque Formalin formalism formalist formalistic formalith formality formalization formalize formalizer formally formalness formamide formamidine formamido formamidoxime formanilide formant format formate formation formational formative formatively formativeness formature formazyl forme formed formedon formee formel formene formenic former formeret formerly formerness formful formiate formic Formica formican Formicariae formicarian Formicariidae formicarioid formicarium formicaroid formicary formicate formication formicative formicicide formicid Formicidae formicide Formicina Formicinae formicine Formicivora formicivorous Formicoidea formidability formidable formidableness formidably formin forminate forming formless formlessly formlessness Formol formolite formonitrile Formosan formose formoxime formula formulable formulae formulaic formular formularism formularist formularistic formularization formularize formulary formulate formulation formulator formulatory formule formulism formulist formulistic formulization formulize formulizer formwork formy formyl formylal formylate formylation fornacic Fornax fornaxid fornenst fornent fornical fornicate fornicated fornication fornicator fornicatress fornicatrix forniciform forninst fornix forpet forpine forpit forprise forrad forrard forride forrit forritsome forrue forsake forsaken forsakenly forsakenness forsaker forset forslow forsooth forspeak forspend forspread Forst forsterite forswear forswearer forsworn forswornness Forsythia fort fortalice forte fortescue fortescure forth forthbring forthbringer forthcome forthcomer forthcoming forthcomingness forthcut forthfare forthfigured forthgaze forthgo forthgoing forthink forthputting forthright forthrightly forthrightness forthrights forthtell forthteller forthwith forthy forties fortieth fortifiable fortification fortifier fortify fortifying fortifyingly fortin fortis fortissimo fortitude fortitudinous fortlet fortnight fortnightly fortravail fortread fortress fortuitism fortuitist fortuitous fortuitously fortuitousness fortuity fortunate fortunately fortunateness fortune fortuned fortuneless Fortunella fortunetell fortuneteller fortunetelling fortunite forty fortyfold forum forumize forwander forward forwardal forwardation forwarder forwarding forwardly forwardness forwards forwean forweend forwent forwoden forworden fosh fosie Fosite fossa fossage fossane fossarian fosse fossed fossette fossick fossicker fossiform fossil fossilage fossilated fossilation fossildom fossiled fossiliferous fossilification fossilify fossilism fossilist fossilizable fossilization fossilize fossillike fossilogist fossilogy fossilological fossilologist fossilology fossor Fossores Fossoria fossorial fossorious fossula fossulate fossule fossulet fostell Foster foster fosterable fosterage fosterer fosterhood fostering fosteringly fosterite fosterland fosterling fostership fostress fot fotch fother Fothergilla fotmal fotui fou foud foudroyant fouette fougade fougasse fought foughten foughty foujdar foujdary foul foulage foulard fouler fouling foulish foully foulmouthed foulmouthedly foulmouthedness foulness foulsome foumart foun found foundation foundational foundationally foundationary foundationed foundationer foundationless foundationlessness founder founderous foundership foundery founding foundling foundress foundry foundryman fount fountain fountained fountaineer fountainhead fountainless fountainlet fountainous fountainously fountainwise fountful Fouquieria Fouquieriaceae fouquieriaceous four fourble fourche fourchee fourcher fourchette fourchite fourer fourflusher fourfold Fourierian Fourierism Fourierist Fourieristic Fourierite fourling fourpence fourpenny fourpounder fourre fourrier fourscore foursome foursquare foursquarely foursquareness fourstrand fourteen fourteener fourteenfold fourteenth fourteenthly fourth fourther fourthly foussa foute fouter fouth fovea foveal foveate foveated foveation foveiform foveola foveolarious foveolate foveolated foveole foveolet fow fowk fowl fowler fowlerite fowlery fowlfoot fowling fox foxbane foxberry foxchop foxer foxery foxfeet foxfinger foxfish foxglove foxhole foxhound foxily foxiness foxing foxish foxlike foxproof foxship foxskin foxtail foxtailed foxtongue foxwood foxy foy foyaite foyaitic foyboat foyer foziness fozy fra frab frabbit frabjous frabjously frabous fracas fracedinous frache frack fractable fractabling fracted Fracticipita fractile fraction fractional fractionalism fractionalize fractionally fractionary fractionate fractionating fractionation fractionator fractionization fractionize fractionlet fractious fractiously fractiousness fractocumulus fractonimbus fractostratus fractuosity fracturable fractural fracture fractureproof frae Fragaria fraghan Fragilaria Fragilariaceae fragile fragilely fragileness fragility fragment fragmental fragmentally fragmentarily fragmentariness fragmentary fragmentation fragmented fragmentist fragmentitious fragmentize fragrance fragrancy fragrant fragrantly fragrantness fraid fraik frail frailejon frailish frailly frailness frailty fraise fraiser Fram framable framableness frambesia frame framea frameable frameableness framed frameless framer framesmith framework framing frammit frampler frampold franc Frances franchisal franchise franchisement franchiser Francic Francis francisc francisca Franciscan Franciscanism Francisco francium Francize franco Francois francolin francolite Francomania Franconian Francophile Francophilism Francophobe Francophobia frangent Frangi frangibility frangible frangibleness frangipane frangipani frangula Frangulaceae frangulic frangulin frangulinic Frank frank frankability frankable frankalmoign Frankenia Frankeniaceae frankeniaceous Frankenstein franker frankfurter frankhearted frankheartedly frankheartedness Frankify frankincense frankincensed franking Frankish Frankist franklandite Franklin franklin Franklinia Franklinian Frankliniana Franklinic Franklinism Franklinist franklinite Franklinization frankly frankmarriage frankness frankpledge frantic frantically franticly franticness franzy frap frappe frapping frasco frase Frasera frasier frass frat fratch fratched fratcheous fratcher fratchety fratchy frater Fratercula fraternal fraternalism fraternalist fraternality fraternally fraternate fraternation fraternism fraternity fraternization fraternize fraternizer fratery Fraticelli Fraticellian fratority Fratricelli fratricidal fratricide fratry fraud fraudful fraudfully fraudless fraudlessly fraudlessness fraudproof fraudulence fraudulency fraudulent fraudulently fraudulentness fraughan fraught frawn fraxetin fraxin fraxinella Fraxinus fray frayed frayedly frayedness fraying frayn frayproof fraze frazer frazil frazzle frazzling freak freakdom freakery freakful freakily freakiness freakish freakishly freakishness freaky fream freath freck frecken freckened frecket freckle freckled freckledness freckleproof freckling frecklish freckly Fred Freddie Freddy Frederic Frederica Frederick frederik fredricite free freeboard freeboot freebooter freebootery freebooting freeborn Freechurchism freed freedman freedom freedwoman freehand freehanded freehandedly freehandedness freehearted freeheartedly freeheartedness freehold freeholder freeholdership freeholding freeing freeish Freekirker freelage freeloving freelovism freely freeman freemanship freemartin freemason freemasonic freemasonical freemasonism freemasonry freeness freer Freesia freesilverism freesilverite freestanding freestone freet freethinker freethinking freetrader freety freeward freeway freewheel freewheeler freewheeling freewill freewoman freezable freeze freezer freezing freezingly Fregata Fregatae Fregatidae freibergite freieslebenite freight freightage freighter freightless freightment freir freit freity fremd fremdly fremdness fremescence fremescent fremitus Fremontia Fremontodendron frenal Frenatae frenate French frenched Frenchification frenchification Frenchify frenchify Frenchily Frenchiness frenching Frenchism Frenchize Frenchless Frenchly Frenchman Frenchness Frenchwise Frenchwoman Frenchy frenetic frenetical frenetically Frenghi frenular frenulum frenum frenzelite frenzied frenziedly frenzy Freon frequence frequency frequent frequentable frequentage frequentation frequentative frequenter frequently frequentness frescade fresco frescoer frescoist fresh freshen freshener freshet freshhearted freshish freshly freshman freshmanhood freshmanic freshmanship freshness freshwoman Fresison fresnel fresno fret fretful fretfully fretfulness fretless fretsome frett frettage frettation frette fretted fretter fretting frettingly fretty fretum fretways fretwise fretwork fretworked Freudian Freudianism Freudism Freudist Freya freyalite Freycinetia Freyja Freyr friability friable friableness friand friandise friar friarbird friarhood friarling friarly friary frib fribble fribbleism fribbler fribblery fribbling fribblish fribby fricandeau fricandel fricassee frication fricative fricatrice friction frictionable frictional frictionally frictionize frictionless frictionlessly frictionproof Friday Fridila fridstool fried Frieda friedcake friedelite friedrichsdor friend friended friendless friendlessness friendlike friendlily friendliness friendliwise friendly friendship frier frieseite Friesian Friesic Friesish frieze friezer friezy frig frigate frigatoon friggle fright frightable frighten frightenable frightened frightenedly frightenedness frightener frightening frighteningly frighter frightful frightfully frightfulness frightless frightment frighty frigid Frigidaire frigidarium frigidity frigidly frigidness frigiferous frigolabile frigoric frigorific frigorifical frigorify frigorimeter frigostable frigotherapy Frija frijol frijolillo frijolito frike frill frillback frilled friller frillery frillily frilliness frilling frilly frim Frimaire fringe fringed fringeflower fringeless fringelet fringent fringepod Fringetail Fringilla fringillaceous Fringillidae fringilliform Fringilliformes fringilline fringilloid fringing fringy fripperer frippery frisca Frisesomorum frisette Frisian Frisii frisk frisker frisket friskful friskily friskiness frisking friskingly frisky frisolee frison frist frisure frit frith frithborh frithbot frithles frithsoken frithstool frithwork Fritillaria fritillary fritt fritter fritterer Fritz Friulian frivol frivoler frivolism frivolist frivolity frivolize frivolous frivolously frivolousness frixion friz frize frizer frizz frizzer frizzily frizziness frizzing frizzle frizzler frizzly frizzy fro frock frocking frockless frocklike frockmaker froe Froebelian Froebelism Froebelist frog frogbit frogeater frogeye frogface frogfish frogflower frogfoot frogged froggery frogginess frogging froggish froggy froghood froghopper frogland frogleaf frogleg froglet froglike frogling frogman frogmouth frognose frogskin frogstool frogtongue frogwort froise frolic frolicful frolicker frolicky frolicly frolicness frolicsome frolicsomely frolicsomeness from fromward fromwards frond frondage fronded frondent frondesce frondescence frondescent frondiferous frondiform frondigerous frondivorous frondlet frondose frondosely frondous front frontad frontage frontager frontal frontalis frontality frontally frontbencher fronted fronter frontier frontierlike frontierman frontiersman Frontignan fronting frontingly Frontirostria frontispiece frontless frontlessly frontlessness frontlet frontoauricular frontoethmoid frontogenesis frontolysis frontomallar frontomaxillary frontomental frontonasal frontooccipital frontoorbital frontoparietal frontopontine frontosphenoidal frontosquamosal frontotemporal frontozygomatic frontpiece frontsman frontstall frontward frontways frontwise froom frore frory frosh frost frostation frostbird frostbite frostbow frosted froster frostfish frostflower frostily frostiness frosting frostless frostlike frostproof frostproofing frostroot frostweed frostwork frostwort frosty frot froth frother Frothi frothily frothiness frothing frothless frothsome frothy frotton froufrou frough froughy frounce frounceless frow froward frowardly frowardness frower frowl frown frowner frownful frowning frowningly frownless frowny frowst frowstily frowstiness frowsty frowy frowze frowzily frowziness frowzled frowzly frowzy froze frozen frozenhearted frozenly frozenness fruchtschiefer fructed fructescence fructescent fructicultural fructiculture Fructidor fructiferous fructiferously fructification fructificative fructifier fructiform fructify fructiparous fructivorous fructose fructoside fructuary fructuosity fructuous fructuously fructuousness frugal frugalism frugalist frugality frugally frugalness fruggan Frugivora frugivorous fruit fruitade fruitage fruitarian fruitarianism fruitcake fruited fruiter fruiterer fruiteress fruitery fruitful fruitfullness fruitfully fruitgrower fruitgrowing fruitiness fruiting fruition fruitist fruitive fruitless fruitlessly fruitlessness fruitlet fruitling fruitstalk fruittime fruitwise fruitwoman fruitwood fruitworm fruity frumentaceous frumentarious frumentation frumenty frump frumpery frumpily frumpiness frumpish frumpishly frumpishness frumple frumpy frush frustrate frustrately frustrater frustration frustrative frustratory frustule frustulent frustulose frustum frutescence frutescent fruticetum fruticose fruticous fruticulose frutify fry fryer fu fub fubby fubsy Fucaceae fucaceous Fucales fucate fucation fucatious Fuchsia Fuchsian fuchsin fuchsine fuchsinophil fuchsinophilous fuchsite fuchsone fuci fucinita fuciphagous fucoid fucoidal Fucoideae fucosan fucose fucous fucoxanthin fucus fud fuddle fuddler fuder fudge fudger fudgy Fuegian fuel fueler fuelizer fuerte fuff fuffy fugacious fugaciously fugaciousness fugacity fugal fugally fuggy fugient fugitate fugitation fugitive fugitively fugitiveness fugitivism fugitivity fugle fugleman fuglemanship fugler fugu fugue fuguist fuidhir fuirdays Fuirena fuji Fulah fulciform fulcral fulcrate fulcrum fulcrumage fulfill fulfiller fulfillment Fulfulde fulgent fulgently fulgentness fulgid fulgide fulgidity fulgor Fulgora fulgorid Fulgoridae Fulgoroidea fulgorous Fulgur fulgural fulgurant fulgurantly fulgurata fulgurate fulgurating fulguration fulgurator fulgurite fulgurous fulham Fulica Fulicinae fulicine fuliginosity fuliginous fuliginously fuliginousness Fuligula Fuligulinae fuliguline fulk full fullam fullback fuller fullering fullery fullface fullhearted fulling fullish fullmouth fullmouthed fullmouthedly fullness fullom Fullonian fully fulmar Fulmarus fulmicotton fulminancy fulminant fulminate fulminating fulmination fulminator fulminatory fulmine fulmineous fulminic fulminous fulminurate fulminuric fulsome fulsomely fulsomeness fulth Fultz Fulup fulvene fulvescent fulvid fulvidness fulvous fulwa fulyie fulzie fum fumacious fumado fumage fumagine Fumago fumarate Fumaria Fumariaceae fumariaceous fumaric fumarine fumarium fumaroid fumaroidal fumarole fumarolic fumaryl fumatorium fumatory fumble fumbler fumbling fume fumeless fumer fumeroot fumet fumette fumewort fumiduct fumiferous fumigant fumigate fumigation fumigator fumigatorium fumigatory fumily fuminess fuming fumingly fumistery fumitory fumose fumosity fumous fumously fumy fun funambulate funambulation funambulator funambulatory funambulic funambulism funambulist funambulo Funaria Funariaceae funariaceous function functional functionalism functionalist functionality functionalize functionally functionarism functionary functionate functionation functionize functionless fund fundable fundal fundament fundamental fundamentalism fundamentalist fundamentality fundamentally fundamentalness fundatorial fundatrix funded funder fundholder fundi fundic fundiform funditor fundless fundmonger fundmongering funds Fundulinae funduline Fundulus fundungi fundus funebrial funeral funeralize funerary funereal funereally funest fungaceous fungal Fungales fungate fungation fungi Fungia fungian fungibility fungible fungic fungicidal fungicide fungicolous fungiferous fungiform fungilliform fungin fungistatic fungivorous fungo fungoid fungoidal fungological fungologist fungology fungose fungosity fungous fungus fungused funguslike fungusy funicle funicular funiculate funicule funiculitis funiculus funiform funipendulous funis Funje funk funker Funkia funkiness funky funmaker funmaking funnel funneled funnelform funnellike funnelwise funnily funniment funniness funny funnyman funori funt Funtumia Fur fur furacious furaciousness furacity fural furaldehyde furan furanoid furazan furazane furbelow furbish furbishable furbisher furbishment furca furcal furcate furcately furcation Furcellaria furcellate furciferine furciferous furciform Furcraea furcula furcular furculum furdel Furfooz furfur furfuraceous furfuraceously furfural furfuralcohol furfuraldehyde furfuramide furfuran furfuration furfurine furfuroid furfurole furfurous furfuryl furfurylidene furiant furibund furied Furies furify furil furilic furiosa furiosity furioso furious furiously furiousness furison furl furlable Furlan furler furless furlong furlough furnace furnacelike furnaceman furnacer furnacite furnage Furnariidae Furnariides Furnarius furner furnish furnishable furnished furnisher furnishing furnishment furniture furnitureless furodiazole furoic furoid furoin furole furomethyl furomonazole furor furore furphy furred furrier furriered furriery furrily furriness furring furrow furrower furrowless furrowlike furrowy furry furstone further furtherance furtherer furtherest furtherly furthermore furthermost furthersome furthest furtive furtively furtiveness Furud furuncle furuncular furunculoid furunculosis furunculous fury furyl furze furzechat furzed furzeling furzery furzetop furzy fusain fusarial fusariose fusariosis Fusarium fusarole fusate fusc fuscescent fuscin fuscohyaline fuscous fuse fuseboard fused fusee fuselage fuseplug fusht fusibility fusible fusibleness fusibly Fusicladium Fusicoccum fusiform Fusiformis fusil fusilier fusillade fusilly fusinist fusion fusional fusionism fusionist fusionless fusoid fuss fusser fussification fussify fussily fussiness fussock fussy fust fustanella fustee fusteric fustet fustian fustianish fustianist fustianize fustic fustigate fustigation fustigator fustigatory fustilugs fustily fustin fustiness fustle fusty Fusulina fusuma fusure Fusus fut futchel fute futhorc futile futilely futileness futilitarian futilitarianism futility futilize futtermassel futtock futural future futureless futureness futuric futurism futurist futuristic futurition futurity futurize futwa fuye fuze fuzz fuzzball fuzzily fuzziness fuzzy fyke fylfot fyrd G g Ga ga gab gabardine gabbard gabber gabble gabblement gabbler gabbro gabbroic gabbroid gabbroitic gabby Gabe gabelle gabelled gabelleman gabeller gaberdine gaberlunzie gabgab gabi gabion gabionade gabionage gabioned gablatores gable gableboard gablelike gablet gablewise gablock Gaboon Gabriel Gabriella Gabrielrache Gabunese gaby Gad gad Gadaba gadabout Gadarene Gadaria gadbee gadbush Gaddang gadded gadder Gaddi gaddi gadding gaddingly gaddish gaddishness gade gadfly gadge gadger gadget gadid Gadidae gadinine Gaditan gadling gadman gadoid Gadoidea gadolinia gadolinic gadolinite gadolinium gadroon gadroonage Gadsbodikins Gadsbud Gadslid gadsman Gadswoons gaduin Gadus gadwall Gadzooks Gael Gaeldom Gaelic Gaelicism Gaelicist Gaelicization Gaelicize Gaeltacht gaen Gaertnerian gaet Gaetulan Gaetuli Gaetulian gaff gaffe gaffer Gaffkya gaffle gaffsman gag gagate gage gageable gagee gageite gagelike gager gagership gagger gaggery gaggle gaggler gagman gagor gagroot gagtooth gahnite Gahrwali Gaia gaiassa Gaidropsaridae gaiety Gail Gaillardia gaily gain gainable gainage gainbirth gaincall gaincome gaine gainer gainful gainfully gainfulness gaining gainless gainlessness gainliness gainly gains gainsay gainsayer gainset gainsome gainspeaker gainspeaking gainst gainstrive gainturn gaintwist gainyield gair gairfish gaisling gait gaited gaiter gaiterless gaiting gaize gaj gal gala Galacaceae galactagogue galactagoguic galactan galactase galactemia galacthidrosis Galactia galactic galactidrosis galactite galactocele galactodendron galactodensimeter galactogenetic galactohemia galactoid galactolipide galactolipin galactolysis galactolytic galactoma galactometer galactometry galactonic galactopathy galactophagist galactophagous galactophlebitis galactophlysis galactophore galactophoritis galactophorous galactophthysis galactophygous galactopoiesis galactopoietic galactopyra galactorrhea galactorrhoea galactoscope galactose galactoside galactosis galactostasis galactosuria galactotherapy galactotrophy galacturia galagala Galaginae Galago galah galanas galanga galangin galant Galanthus galantine galany galapago Galatae galatea Galatian Galatic galatotrophic Galax galaxian Galaxias Galaxiidae galaxy galban galbanum Galbula Galbulae Galbulidae Galbulinae galbulus Galcha Galchic Gale gale galea galeage galeate galeated galee galeeny Galega galegine Galei galeid Galeidae galeiform galempung Galen galena Galenian Galenic galenic Galenical galenical Galenism Galenist galenite galenobismutite galenoid Galeodes Galeodidae galeoid Galeopithecus Galeopsis Galeorchis Galeorhinidae Galeorhinus galeproof galera galericulate galerum galerus Galesaurus galet Galeus galewort galey Galga galgal Galgulidae gali Galibi Galician Galictis Galidia Galidictis Galik Galilean galilee galimatias galingale Galinsoga galiongee galiot galipidine galipine galipoidin galipoidine galipoipin galipot Galium gall Galla galla gallacetophenone gallah gallanilide gallant gallantize gallantly gallantness gallantry gallate gallature gallberry gallbush galleass galled Gallegan gallein galleon galler Galleria gallerian galleried Galleriidae gallery gallerylike gallet galley galleylike galleyman galleyworm gallflower gallfly Galli galliambic galliambus Gallian galliard galliardise galliardly galliardness Gallic gallic Gallican Gallicanism Gallicism Gallicization Gallicize Gallicizer gallicola Gallicolae gallicole gallicolous galliferous Gallification gallification galliform Galliformes Gallify galligaskin gallimaufry Gallinaceae gallinacean Gallinacei gallinaceous Gallinae Gallinago gallinazo galline galling gallingly gallingness gallinipper Gallinula gallinule Gallinulinae gallinuline gallipot Gallirallus gallisin gallium gallivant gallivanter gallivat gallivorous galliwasp gallnut gallocyanin gallocyanine galloflavine galloglass Galloman Gallomania Gallomaniac gallon gallonage galloner galloon gallooned gallop gallopade galloper Galloperdix Gallophile Gallophilism Gallophobe Gallophobia galloping galloptious gallotannate gallotannic gallotannin gallous Gallovidian Galloway galloway gallowglass gallows gallowsmaker gallowsness gallowsward gallstone Gallus galluses gallweed gallwort gally gallybagger gallybeggar gallycrow Galoisian galoot galop galore galosh galp galravage galravitch galt Galtonia Galtonian galuchat galumph galumptious Galusha galuth galvanic galvanical galvanically galvanism galvanist galvanization galvanize galvanized galvanizer galvanocauterization galvanocautery galvanocontractility galvanofaradization galvanoglyph galvanoglyphy galvanograph galvanographic galvanography galvanologist galvanology galvanolysis galvanomagnet galvanomagnetic galvanomagnetism galvanometer galvanometric galvanometrical galvanometrically galvanometry galvanoplastic galvanoplastical galvanoplastically galvanoplastics galvanoplasty galvanopsychic galvanopuncture galvanoscope galvanoscopic galvanoscopy galvanosurgery galvanotactic galvanotaxis galvanotherapy galvanothermometer galvanothermy galvanotonic galvanotropic galvanotropism galvayne galvayning Galways Galwegian galyac galyak galziekte gam gamahe Gamaliel gamashes gamasid Gamasidae Gamasoidea gamb gamba gambade gambado gambang gambeer gambeson gambet gambette gambia gambier gambist gambit gamble gambler gamblesome gamblesomeness gambling gambodic gamboge gambogian gambogic gamboised gambol gambrel gambreled gambroon Gambusia gamdeboo game gamebag gameball gamecock gamecraft gameful gamekeeper gamekeeping gamelang gameless gamelike Gamelion gamelotte gamely gamene gameness gamesome gamesomely gamesomeness gamester gamestress gametal gametange gametangium gamete gametic gametically gametocyst gametocyte gametogenesis gametogenic gametogenous gametogeny gametogonium gametogony gametoid gametophagia gametophore gametophyll gametophyte gametophytic gamic gamily gamin gaminesque gaminess gaming gaminish gamma gammacism gammacismus gammadion gammarid Gammaridae gammarine gammaroid Gammarus gammation gammelost gammer gammerel gammerstang Gammexane gammick gammock gammon gammoner gammoning gammy gamobium gamodesmic gamodesmy gamogenesis gamogenetic gamogenetical gamogenetically gamogony Gamolepis gamomania gamont Gamopetalae gamopetalous gamophagia gamophagy gamophyllous gamori gamosepalous gamostele gamostelic gamostely gamotropic gamotropism gamp gamphrel gamut gamy gan ganam ganancial Ganapati ganch Ganda gander ganderess gandergoose gandermooner ganderteeth Gandhara Gandharva Gandhiism Gandhism Gandhist gandul gandum gandurah gane ganef gang Ganga ganga Gangamopteris gangan gangava gangboard gangdom gange ganger Gangetic ganggang ganging gangism gangland ganglander ganglia gangliac ganglial gangliar gangliasthenia gangliate gangliated gangliectomy gangliform gangliitis gangling ganglioblast gangliocyte ganglioform ganglioid ganglioma ganglion ganglionary ganglionate ganglionectomy ganglioneural ganglioneure ganglioneuroma ganglioneuron ganglionic ganglionitis ganglionless ganglioplexus gangly gangman gangmaster gangplank gangrel gangrene gangrenescent gangrenous gangsman gangster gangsterism gangtide gangue Ganguela gangway gangwayman ganister ganja ganner gannet Ganocephala ganocephalan ganocephalous ganodont Ganodonta Ganodus ganoid ganoidal ganoidean Ganoidei ganoidian ganoin ganomalite ganophyllite ganosis Ganowanian gansel gansey gansy gant ganta gantang gantlet gantline ganton gantries gantry gantryman gantsl Ganymede Ganymedes ganza ganzie gaol gaolbird gaoler Gaon Gaonate Gaonic gap Gapa gapa gape gaper gapes gapeseed gapeworm gaping gapingly gapingstock gapo gappy gapy gar gara garabato garad garage garageman Garamond garance garancine garapata garava garavance garawi garb garbage garbardine garbel garbell garbill garble garbleable garbler garbless garbling garboard garboil garbure garce Garcinia gardant gardeen garden gardenable gardencraft gardened gardener gardenership gardenesque gardenful gardenhood Gardenia gardenin gardening gardenize gardenless gardenlike gardenly gardenmaker gardenmaking gardenwards gardenwise gardeny garderobe gardevin gardy gardyloo gare garefowl gareh garetta garewaite garfish garganey Gargantua Gargantuan garget gargety gargle gargol gargoyle gargoyled gargoyley gargoylish gargoylishly gargoylism Garhwali garial gariba garibaldi Garibaldian garish garishly garishness garland garlandage garlandless garlandlike garlandry garlandwise garle garlic garlicky garliclike garlicmonger garlicwort garment garmentless garmentmaker garmenture garmentworker garn garnel garner garnerage garnet garnetberry garneter garnetiferous garnets garnett garnetter garnetwork garnetz garnice garniec garnierite garnish garnishable garnished garnishee garnisheement garnisher garnishment garnishry garniture Garo garoo garookuh garrafa garran Garret garret garreted garreteer garretmaster garrison Garrisonian Garrisonism garrot garrote garroter Garrulinae garruline garrulity garrulous garrulously garrulousness Garrulus garrupa Garrya Garryaceae garse Garshuni garsil garston garten garter gartered gartering garterless garth garthman Garuda garum garvanzo garvey garvock Gary gas Gasan gasbag gascoigny Gascon gasconade gasconader Gasconism gascromh gaseity gaselier gaseosity gaseous gaseousness gasfiring gash gashes gashful gashliness gashly gasholder gashouse gashy gasifiable gasification gasifier gasiform gasify gasket gaskin gasking gaskins gasless gaslight gaslighted gaslighting gaslit gaslock gasmaker gasman gasogenic gasoliery gasoline gasolineless gasoliner gasometer gasometric gasometrical gasometry gasp Gaspar gasparillo gasper gaspereau gaspergou gaspiness gasping gaspingly gasproof gaspy gasser Gasserian gassiness gassing gassy gast gastaldite gastaldo gaster gasteralgia Gasterolichenes gasteromycete Gasteromycetes gasteromycetous Gasterophilus gasteropod Gasteropoda gasterosteid Gasterosteidae gasterosteiform gasterosteoid Gasterosteus gasterotheca gasterothecal Gasterotricha gasterotrichan gasterozooid gastight gastightness Gastornis Gastornithidae gastradenitis gastraea gastraead Gastraeadae gastraeal gastraeum gastral gastralgia gastralgic gastralgy gastraneuria gastrasthenia gastratrophia gastrectasia gastrectasis gastrectomy gastrelcosis gastric gastricism gastrilegous gastriloquial gastriloquism gastriloquist gastriloquous gastriloquy gastrin gastritic gastritis gastroadenitis gastroadynamic gastroalbuminorrhea gastroanastomosis gastroarthritis gastroatonia gastroatrophia gastroblennorrhea gastrocatarrhal gastrocele gastrocentrous Gastrochaena Gastrochaenidae gastrocnemial gastrocnemian gastrocnemius gastrocoel gastrocolic gastrocoloptosis gastrocolostomy gastrocolotomy gastrocolpotomy gastrocystic gastrocystis gastrodialysis gastrodiaphanoscopy gastrodidymus gastrodisk gastroduodenal gastroduodenitis gastroduodenoscopy gastroduodenotomy gastrodynia gastroelytrotomy gastroenteralgia gastroenteric gastroenteritic gastroenteritis gastroenteroanastomosis gastroenterocolitis gastroenterocolostomy gastroenterological gastroenterologist gastroenterology gastroenteroptosis gastroenterostomy gastroenterotomy gastroepiploic gastroesophageal gastroesophagostomy gastrogastrotomy gastrogenital gastrograph gastrohelcosis gastrohepatic gastrohepatitis gastrohydrorrhea gastrohyperneuria gastrohypertonic gastrohysterectomy gastrohysteropexy gastrohysterorrhaphy gastrohysterotomy gastroid gastrointestinal gastrojejunal gastrojejunostomy gastrolater gastrolatrous gastrolienal gastrolith Gastrolobium gastrologer gastrological gastrologist gastrology gastrolysis gastrolytic gastromalacia gastromancy gastromelus gastromenia gastromyces gastromycosis gastromyxorrhea gastronephritis gastronome gastronomer gastronomic gastronomical gastronomically gastronomist gastronomy gastronosus gastropancreatic gastropancreatitis gastroparalysis gastroparesis gastroparietal gastropathic gastropathy gastroperiodynia gastropexy gastrophile gastrophilism gastrophilist gastrophilite Gastrophilus gastrophrenic gastrophthisis gastroplasty gastroplenic gastropleuritis gastroplication gastropneumatic gastropneumonic gastropod Gastropoda gastropodan gastropodous gastropore gastroptosia gastroptosis gastropulmonary gastropulmonic gastropyloric gastrorrhagia gastrorrhaphy gastrorrhea gastroschisis gastroscope gastroscopic gastroscopy gastrosoph gastrosopher gastrosophy gastrospasm gastrosplenic gastrostaxis gastrostegal gastrostege gastrostenosis gastrostomize Gastrostomus gastrostomy gastrosuccorrhea gastrotheca gastrothecal gastrotome gastrotomic gastrotomy Gastrotricha gastrotrichan gastrotubotomy gastrotympanites gastrovascular gastroxynsis gastrozooid gastrula gastrular gastrulate gastrulation gasworker gasworks gat gata gatch gatchwork gate gateado gateage gated gatehouse gatekeeper gateless gatelike gatemaker gateman gatepost gater gatetender gateward gatewards gateway gatewayman gatewise gatewoman gateworks gatewright Gatha gather gatherable gatherer gathering Gathic gating gator gatter gatteridge gau gaub gauby gauche gauchely gaucheness gaucherie Gaucho gaud gaudery Gaudete gaudful gaudily gaudiness gaudless gaudsman gaudy gaufer gauffer gauffered gauffre gaufre gaufrette gauge gaugeable gauger gaugership gauging Gaul gaulding gauleiter Gaulic gaulin Gaulish Gaullism Gaullist Gault gault gaulter gaultherase Gaultheria gaultherin gaum gaumish gaumless gaumlike gaumy gaun gaunt gaunted gauntlet gauntleted gauntly gauntness gauntry gaunty gaup gaupus gaur Gaura Gaurian gaus gauss gaussage gaussbergite Gaussian gauster gausterer gaut gauteite gauze gauzelike gauzewing gauzily gauziness gauzy gavall gave gavel gaveler gavelkind gavelkinder gavelman gavelock Gavia Gaviae gavial Gavialis gavialoid Gaviiformes gavotte gavyuti gaw gawby gawcie gawk gawkhammer gawkihood gawkily gawkiness gawkish gawkishly gawkishness gawky gawm gawn gawney gawsie gay gayal gayatri gaybine gaycat gaydiang gayish Gaylussacia gaylussite gayment gayness Gaypoo gaysome gaywings gayyou gaz gazabo gazangabin Gazania gaze gazebo gazee gazehound gazel gazeless Gazella gazelle gazelline gazement gazer gazettal gazette gazetteer gazetteerage gazetteerish gazetteership gazi gazing gazingly gazingstock gazogene gazon gazophylacium gazy gazzetta Ge ge Geadephaga geadephagous geal gean geanticlinal geanticline gear gearbox geared gearing gearksutite gearless gearman gearset gearshift gearwheel gease geason Geaster Geat geat Geatas gebang gebanga gebbie gebur Gecarcinidae Gecarcinus geck gecko geckoid geckotian geckotid Geckotidae geckotoid Ged ged gedackt gedanite gedder gedeckt gedecktwork Gederathite Gederite gedrite Gee gee geebong geebung Geechee geejee geek geelbec geeldikkop geelhout geepound geerah geest geet Geez geezer Gegenschein gegg geggee gegger geggery Geheimrat Gehenna gehlenite Geikia geikielite gein geira Geisenheimer geisha geison geisotherm geisothermal Geissoloma Geissolomataceae Geissolomataceous Geissorhiza geissospermin geissospermine geitjie geitonogamous geitonogamy Gekko Gekkones gekkonid Gekkonidae gekkonoid Gekkota gel gelable gelada gelandejump gelandelaufer gelandesprung Gelasian Gelasimus gelastic Gelastocoridae gelatification gelatigenous gelatin gelatinate gelatination gelatined gelatiniferous gelatiniform gelatinify gelatinigerous gelatinity gelatinizability gelatinizable gelatinization gelatinize gelatinizer gelatinobromide gelatinochloride gelatinoid gelatinotype gelatinous gelatinously gelatinousness gelation gelatose geld geldability geldable geldant gelder gelding Gelechia gelechiid Gelechiidae Gelfomino gelid Gelidiaceae gelidity Gelidium gelidly gelidness gelignite gelilah gelinotte gell Gellert gelly gelogenic gelong geloscopy gelose gelosin gelotherapy gelotometer gelotoscopy gelototherapy gelsemic gelsemine gelseminic gelseminine Gelsemium gelt gem Gemara Gemaric Gemarist gematria gematrical gemauve gemel gemeled gemellione gemellus geminate geminated geminately gemination geminative Gemini Geminid geminiflorous geminiform geminous Gemitores gemitorial gemless gemlike Gemma gemma gemmaceous gemmae gemmate gemmation gemmative gemmeous gemmer gemmiferous gemmiferousness gemmification gemmiform gemmily gemminess Gemmingia gemmipara gemmipares gemmiparity gemmiparous gemmiparously gemmoid gemmology gemmula gemmulation gemmule gemmuliferous gemmy gemot gemsbok gemsbuck gemshorn gemul gemuti gemwork gen gena genal genapp genapper genarch genarcha genarchaship genarchship gendarme gendarmery gender genderer genderless Gene gene genealogic genealogical genealogically genealogist genealogize genealogizer genealogy genear geneat genecologic genecological genecologically genecologist genecology geneki genep genera generability generable generableness general generalate generalcy generale generalia Generalidad generalific generalism generalissima generalissimo generalist generalistic generality generalizable generalization generalize generalized generalizer generall generally generalness generalship generalty generant generate generating generation generational generationism generative generatively generativeness generator generatrix generic generical generically genericalness generification generosity generous generously generousness Genesee geneserine Genesiac Genesiacal genesial genesic genesiology genesis Genesitic genesiurgic genet genethliac genethliacal genethliacally genethliacon genethliacs genethlialogic genethlialogical genethlialogy genethlic genetic genetical genetically geneticism geneticist genetics genetmoil genetous Genetrix genetrix Genetta Geneura Geneva geneva Genevan Genevese Genevieve Genevois genevoise genial geniality genialize genially genialness genian genic genicular geniculate geniculated geniculately geniculation geniculum genie genii genin genioglossal genioglossi genioglossus geniohyoglossal geniohyoglossus geniohyoid geniolatry genion genioplasty genip Genipa genipa genipap genipapada genisaro Genista genista genistein genital genitalia genitals genitival genitivally genitive genitocrural genitofemoral genitor genitorial genitory genitourinary geniture genius genizah genizero Genny Genoa genoblast genoblastic genocidal genocide Genoese genoese genom genome genomic genonema genos genotype genotypic genotypical genotypically Genoveva genovino genre genro gens genson gent genteel genteelish genteelism genteelize genteelly genteelness gentes genthite gentian Gentiana Gentianaceae gentianaceous Gentianales gentianella gentianic gentianin gentianose gentianwort gentile gentiledom gentilesse gentilic gentilism gentilitial gentilitian gentilitious gentility gentilization gentilize gentiobiose gentiopicrin gentisein gentisic gentisin gentle gentlefolk gentlehearted gentleheartedly gentleheartedness gentlehood gentleman gentlemanhood gentlemanism gentlemanize gentlemanlike gentlemanlikeness gentlemanliness gentlemanly gentlemanship gentlemens gentlemouthed gentleness gentlepeople gentleship gentlewoman gentlewomanhood gentlewomanish gentlewomanlike gentlewomanliness gentlewomanly gently gentman Gentoo gentrice gentry genty genu genua genual genuclast genuflect genuflection genuflector genuflectory genuflex genuflexuous genuine genuinely genuineness genus genyantrum Genyophrynidae genyoplasty genys geo geoaesthesia geoagronomic geobiologic geobiology geobiont geobios geoblast geobotanic geobotanical geobotanist geobotany geocarpic geocentric geocentrical geocentrically geocentricism geocerite geochemical geochemist geochemistry geochronic geochronology geochrony Geococcyx geocoronium geocratic geocronite geocyclic geodaesia geodal geode geodesic geodesical geodesist geodesy geodete geodetic geodetical geodetically geodetician geodetics geodiatropism geodic geodiferous geodist geoduck geodynamic geodynamical geodynamics geoethnic Geoff Geoffrey geoffroyin geoffroyine geoform geogenesis geogenetic geogenic geogenous geogeny Geoglossaceae Geoglossum geoglyphic geognosis geognosist geognost geognostic geognostical geognostically geognosy geogonic geogonical geogony geographer geographic geographical geographically geographics geographism geographize geography geohydrologist geohydrology geoid geoidal geoisotherm geolatry geologer geologian geologic geological geologically geologician geologist geologize geology geomagnetic geomagnetician geomagnetics geomagnetist geomalic geomalism geomaly geomance geomancer geomancy geomant geomantic geomantical geomantically geometer geometric geometrical geometrically geometrician geometricize geometrid Geometridae geometriform Geometrina geometrine geometrize geometroid Geometroidea geometry geomoroi geomorphic geomorphist geomorphogenic geomorphogenist geomorphogeny geomorphological geomorphology geomorphy geomyid Geomyidae Geomys Geon geonavigation geonegative Geonic Geonim Geonoma geonoma geonyctinastic geonyctitropic geoparallelotropic geophagia geophagism geophagist geophagous geophagy Geophila geophilid Geophilidae geophilous Geophilus Geophone geophone geophysical geophysicist geophysics geophyte geophytic geoplagiotropism Geoplana Geoplanidae geopolar geopolitic geopolitical geopolitically geopolitician geopolitics Geopolitik geoponic geoponical geoponics geopony geopositive Geoprumnon georama Geordie George Georgemas Georgette Georgia georgiadesite Georgian Georgiana georgic Georgie geoscopic geoscopy geoselenic geosid geoside geosphere Geospiza geostatic geostatics geostrategic geostrategist geostrategy geostrophic geosynclinal geosyncline geotactic geotactically geotaxis geotaxy geotechnic geotechnics geotectology geotectonic geotectonics Geoteuthis geotherm geothermal geothermic geothermometer Geothlypis geotic geotical geotilla geotonic geotonus geotropic geotropically geotropism geotropy geoty Gepeoo Gephyrea gephyrean gephyrocercal gephyrocercy Gepidae ger gerah Gerald Geraldine Geraniaceae geraniaceous geranial Geraniales geranic geraniol Geranium geranium geranomorph Geranomorphae geranomorphic geranyl Gerard gerardia Gerasene gerastian gerate gerated geratic geratologic geratologous geratology geraty gerb gerbe Gerbera Gerberia gerbil Gerbillinae Gerbillus gercrow gereagle gerefa gerenda gerendum gerent gerenuk gerfalcon gerhardtite geriatric geriatrician geriatrics gerim gerip germ germal German german germander germane germanely germaneness Germanesque Germanhood Germania Germanic germanic Germanical Germanically Germanics Germanification Germanify germanious Germanish Germanism Germanist Germanistic germanite Germanity germanity germanium Germanization germanization Germanize germanize Germanizer Germanly Germanness Germanocentric Germanomania Germanomaniac Germanophile Germanophilist Germanophobe Germanophobia Germanophobic Germanophobist germanous Germantown germanyl germarium germen germfree germicidal germicide germifuge germigenous germin germina germinability germinable Germinal germinal germinally germinance germinancy germinant germinate germination germinative germinatively germinator germing germinogony germiparity germless germlike germling germon germproof germule germy gernitz gerocomia gerocomical gerocomy geromorphism Geronomite geront gerontal gerontes gerontic gerontine gerontism geronto gerontocracy gerontocrat gerontocratic gerontogeous gerontology gerontophilia gerontoxon Gerres gerrhosaurid Gerrhosauridae Gerridae gerrymander gerrymanderer gers gersdorffite Gershom Gershon Gershonite gersum Gertie Gertrude gerund gerundial gerundially gerundival gerundive gerundively gerusia Gervais gervao Gervas Gervase Gerygone gerygone Geryonia geryonid Geryonidae Geryoniidae Ges Gesan Geshurites gesith gesithcund gesithcundman Gesnera Gesneraceae gesneraceous Gesneria gesneria Gesneriaceae gesneriaceous Gesnerian gesning gessamine gesso gest Gestalt gestalter gestaltist gestant Gestapo gestate gestation gestational gestative gestatorial gestatorium gestatory geste gested gesten gestening gestic gestical gesticulacious gesticulant gesticular gesticularious gesticulate gesticulation gesticulative gesticulatively gesticulator gesticulatory gestion gestning gestural gesture gestureless gesturer get geta Getae getah getaway gether Gethsemane gethsemane Gethsemanic gethsemanic Getic getling getpenny Getsul gettable getter getting getup Geullah Geum geum gewgaw gewgawed gewgawish gewgawry gewgawy gey geyan geyerite geyser geyseral geyseric geyserine geyserish geyserite gez ghafir ghaist ghalva Ghan gharial gharnao gharry Ghassanid ghastily ghastlily ghastliness ghastly ghat ghatti ghatwal ghatwazi ghazi ghazism Ghaznevid Gheber ghebeta Ghedda ghee Gheg Ghegish gheleem Ghent gherkin ghetchoo ghetti ghetto ghettoization ghettoize Ghibelline Ghibellinism Ghilzai Ghiordes ghizite ghoom ghost ghostcraft ghostdom ghoster ghostess ghostfish ghostflower ghosthood ghostified ghostily ghostish ghostism ghostland ghostless ghostlet ghostlify ghostlike ghostlily ghostliness ghostly ghostmonger ghostology ghostship ghostweed ghostwrite ghosty ghoul ghoulery ghoulish ghoulishly ghoulishness ghrush ghurry Ghuz Gi Giansar giant giantesque giantess gianthood giantish giantism giantize giantkind giantlike giantly giantry giantship Giardia giardia giardiasis giarra giarre Gib gib gibaro gibbals gibbed gibber Gibberella gibbergunyah gibberish gibberose gibberosity gibbet gibbetwise Gibbi gibblegabble gibblegabbler gibbles gibbon gibbose gibbosity gibbous gibbously gibbousness gibbsite gibbus gibby gibe gibel gibelite Gibeonite giber gibing gibingly gibleh giblet giblets Gibraltar Gibson gibstaff gibus gid giddap giddea giddify giddily giddiness giddy giddyberry giddybrain giddyhead giddyish Gideon Gideonite gidgee gie gied gien Gienah gieseckite gif giffgaff Gifola gift gifted giftedly giftedness giftie giftless giftling giftware gig gigantean gigantesque gigantic gigantical gigantically giganticidal giganticide giganticness gigantism gigantize gigantoblast gigantocyte gigantolite gigantological gigantology gigantomachy Gigantopithecus Gigantosaurus Gigantostraca gigantostracan gigantostracous Gigartina Gigartinaceae gigartinaceous Gigartinales gigback gigelira gigeria gigerium gigful gigger giggish giggit giggle giggledom gigglement giggler gigglesome giggling gigglingly gigglish giggly Gigi giglet gigliato giglot gigman gigmaness gigmanhood gigmania gigmanic gigmanically gigmanism gigmanity gignate gignitive gigolo gigot gigsman gigster gigtree gigunu Gil Gila Gilaki Gilbert gilbert gilbertage Gilbertese Gilbertian Gilbertianism gilbertite gild gildable gilded gilden gilder gilding Gileadite Gileno Giles gilguy Gilia gilia Giliak gilim Gill gill gillaroo gillbird gilled Gillenia giller Gilles gillflirt gillhooter Gillian gillie gilliflirt gilling gilliver gillotage gillotype gillstoup gilly gillyflower gillygaupus gilo gilpy gilravage gilravager gilse gilsonite gilt giltcup gilthead gilttail gim gimbal gimbaled gimbaljawed gimberjawed gimble gimcrack gimcrackery gimcrackiness gimcracky gimel Gimirrai gimlet gimleteyed gimlety gimmal gimmer gimmerpet gimmick gimp gimped gimper gimping gin ging ginger gingerade gingerberry gingerbread gingerbready gingerin gingerleaf gingerline gingerliness gingerly gingerness gingernut gingerol gingerous gingerroot gingersnap gingerspice gingerwork gingerwort gingery gingham ginghamed gingili gingiva gingivae gingival gingivalgia gingivectomy gingivitis gingivoglossitis gingivolabial ginglyform ginglymoarthrodia ginglymoarthrodial Ginglymodi ginglymodian ginglymoid ginglymoidal Ginglymostoma ginglymostomoid ginglymus ginglyni ginhouse gink Ginkgo ginkgo Ginkgoaceae ginkgoaceous Ginkgoales ginned ginner ginners ginnery ginney ginning ginnle Ginny ginny ginseng ginward gio giobertite giornata giornatate Giottesque Giovanni gip gipon gipper Gippy gipser gipsire gipsyweed Giraffa giraffe giraffesque Giraffidae giraffine giraffoid girandola girandole girasol girasole girba gird girder girderage girderless girding girdingly girdle girdlecake girdlelike girdler girdlestead girdling girdlingly Girella Girellidae Girgashite Girgasite girl girleen girlery girlfully girlhood girlie girliness girling girlish girlishly girlishness girlism girllike girly girn girny giro giroflore Girondin Girondism Girondist girouette girouettism girr girse girsh girsle girt girth girtline gisarme gish gisla gisler gismondine gismondite gist git gitaligenin gitalin Gitanemuck gith Gitksan gitonin gitoxigenin gitoxin gittern Gittite gittith Giuseppe giustina give giveable giveaway given givenness giver givey giving gizz gizzard gizzen gizzern glabella glabellae glabellar glabellous glabellum glabrate glabrescent glabrous glace glaceed glaceing glaciable glacial glacialism glacialist glacialize glacially glaciaria glaciarium glaciate glaciation glacier glaciered glacieret glacierist glacification glacioaqueous glaciolacustrine glaciological glaciologist glaciology glaciomarine glaciometer glacionatant glacis glack glad gladden gladdener gladdon gladdy glade gladelike gladeye gladful gladfully gladfulness gladhearted gladiate gladiator gladiatorial gladiatorism gladiatorship gladiatrix gladify gladii gladiola gladiolar gladiole gladioli gladiolus gladius gladkaite gladless gladly gladness gladsome gladsomely gladsomeness Gladstone Gladstonian Gladstonianism glady Gladys glaga Glagol Glagolic Glagolitic Glagolitsa glaieul glaik glaiket glaiketness glair glaireous glairiness glairy glaister glaive glaived glaked glaky glam glamberry glamorize glamorous glamorously glamour glamoury glance glancer glancing glancingly gland glandaceous glandarious glandered glanderous glanders glandes glandiferous glandiform glandless glandlike glandular glandularly glandule glanduliferous glanduliform glanduligerous glandulose glandulosity glandulous glandulousness Glaniostomi glans glar glare glareless Glareola glareole Glareolidae glareous glareproof glareworm glarily glariness glaring glaringly glaringness glarry glary Glaserian glaserite glashan glass glassen glasser glasses glassfish glassful glasshouse glassie glassily glassine glassiness Glassite glassless glasslike glassmaker glassmaking glassman glassophone glassrope glassteel glassware glassweed glasswork glassworker glassworking glassworks glasswort glassy Glaswegian Glathsheim Glathsheimr glauberite glaucescence glaucescent Glaucidium glaucin glaucine Glaucionetta Glaucium glaucochroite glaucodot glaucolite glaucoma glaucomatous Glaucomys Glauconia glauconiferous Glauconiidae glauconite glauconitic glauconitization glaucophane glaucophanite glaucophanization glaucophanize glaucophyllous Glaucopis glaucosuria glaucous glaucously Glauke glaum glaumrie glaur glaury Glaux glaver glaze glazed glazen glazer glazework glazier glaziery glazily glaziness glazing glazy gleam gleamily gleaminess gleaming gleamingly gleamless gleamy glean gleanable gleaner gleaning gleary gleba glebal glebe glebeless glebous Glecoma glede Gleditsia gledy glee gleed gleeful gleefully gleefulness gleeishly gleek gleemaiden gleeman gleesome gleesomely gleesomeness gleet gleety gleewoman gleg glegly glegness Glen glen Glengarry Glenn glenohumeral glenoid glenoidal glent glessite gleyde glia gliadin glial glib glibbery glibly glibness glidder gliddery glide glideless glideness glider gliderport glidewort gliding glidingly gliff gliffing glime glimmer glimmering glimmeringly glimmerite glimmerous glimmery glimpse glimpser glink glint glioma gliomatous gliosa gliosis Glires Gliridae gliriform Gliriformia glirine Glis glisk glisky glissade glissader glissando glissette glisten glistening glisteningly glister glisteringly Glitnir glitter glitterance glittering glitteringly glittersome glittery gloam gloaming gloat gloater gloating gloatingly global globally globate globated globe globed globefish globeflower globeholder globelet Globicephala globiferous Globigerina globigerine Globigerinidae globin Globiocephalus globoid globose globosely globoseness globosite globosity globosphaerite globous globously globousness globular Globularia Globulariaceae globulariaceous globularity globularly globularness globule globulet globulicidal globulicide globuliferous globuliform globulimeter globulin globulinuria globulite globulitic globuloid globulolysis globulose globulous globulousness globulysis globy glochid glochideous glochidia glochidial glochidian glochidiate glochidium glochis glockenspiel gloea gloeal Gloeocapsa gloeocapsoid gloeosporiose Gloeosporium Gloiopeltis Gloiosiphonia Gloiosiphoniaceae glom glome glomerate glomeration Glomerella glomeroporphyritic glomerular glomerulate glomerule glomerulitis glomerulonephritis glomerulose glomerulus glommox glomus glonoin glonoine gloom gloomful gloomfully gloomily gloominess glooming gloomingly gloomless gloomth gloomy glop gloppen glor glore Gloria Gloriana gloriation gloriette glorifiable glorification glorifier glorify gloriole Gloriosa gloriosity glorious gloriously gloriousness glory gloryful glorying gloryingly gloryless gloss glossa glossagra glossal glossalgia glossalgy glossanthrax glossarial glossarially glossarian glossarist glossarize glossary Glossata glossate glossator glossatorial glossectomy glossed glosser glossic glossily Glossina glossiness glossing glossingly Glossiphonia Glossiphonidae glossist glossitic glossitis glossless glossmeter glossocarcinoma glossocele glossocoma glossocomon glossodynamometer glossodynia glossoepiglottic glossoepiglottidean glossograph glossographer glossographical glossography glossohyal glossoid glossokinesthetic glossolabial glossolabiolaryngeal glossolabiopharyngeal glossolalia glossolalist glossolaly glossolaryngeal glossological glossologist glossology glossolysis glossoncus glossopalatine glossopalatinus glossopathy glossopetra Glossophaga glossophagine glossopharyngeal glossopharyngeus Glossophora glossophorous glossophytia glossoplasty glossoplegia glossopode glossopodium Glossopteris glossoptosis glossopyrosis glossorrhaphy glossoscopia glossoscopy glossospasm glossosteresis Glossotherium glossotomy glossotype glossy glost glottal glottalite glottalize glottic glottid glottidean glottis glottiscope glottogonic glottogonist glottogony glottologic glottological glottologist glottology Gloucester glout glove gloveless glovelike glovemaker glovemaking glover gloveress glovey gloving glow glower glowerer glowering gloweringly glowfly glowing glowingly glowworm Gloxinia gloy gloze glozing glozingly glub glucase glucemia glucid glucide glucidic glucina glucine glucinic glucinium glucinum gluck glucofrangulin glucokinin glucolipid glucolipide glucolipin glucolipine glucolysis glucosaemia glucosamine glucosan glucosane glucosazone glucose glucosemia glucosic glucosid glucosidal glucosidase glucoside glucosidic glucosidically glucosin glucosine glucosone glucosuria glucuronic glue glued gluemaker gluemaking gluepot gluer gluey glueyness glug gluish gluishness glum gluma Glumaceae glumaceous glumal Glumales glume glumiferous Glumiflorae glumly glummy glumness glumose glumosity glump glumpily glumpiness glumpish glumpy glunch Gluneamie glusid gluside glut glutamic glutamine glutaminic glutaric glutathione glutch gluteal glutelin gluten glutenin glutenous gluteofemoral gluteoinguinal gluteoperineal gluteus glutin glutinate glutination glutinative glutinize glutinose glutinosity glutinous glutinously glutinousness glutition glutoid glutose glutter gluttery glutting gluttingly glutton gluttoness gluttonish gluttonism gluttonize gluttonous gluttonously gluttonousness gluttony glyceraldehyde glycerate Glyceria glyceric glyceride glycerin glycerinate glycerination glycerine glycerinize glycerite glycerize glycerizin glycerizine glycerogel glycerogelatin glycerol glycerolate glycerole glycerolize glycerophosphate glycerophosphoric glycerose glyceroxide glyceryl glycid glycide glycidic glycidol Glycine glycine glycinin glycocholate glycocholic glycocin glycocoll glycogelatin glycogen glycogenesis glycogenetic glycogenic glycogenize glycogenolysis glycogenous glycogeny glycohaemia glycohemia glycol glycolaldehyde glycolate glycolic glycolide glycolipid glycolipide glycolipin glycolipine glycoluric glycoluril glycolyl glycolylurea glycolysis glycolytic glycolytically Glyconian Glyconic glyconic glyconin glycoproteid glycoprotein glycosaemia glycose glycosemia glycosin glycosine glycosuria glycosuric glycuresis glycuronic glycyl glycyphyllin Glycyrrhiza glycyrrhizin Glynn glyoxal glyoxalase glyoxalic glyoxalin glyoxaline glyoxim glyoxime glyoxyl glyoxylic glyph glyphic glyphograph glyphographer glyphographic glyphography glyptic glyptical glyptician Glyptodon glyptodont Glyptodontidae glyptodontoid glyptograph glyptographer glyptographic glyptography glyptolith glyptological glyptologist glyptology glyptotheca Glyptotherium glyster Gmelina gmelinite gnabble Gnaeus gnaphalioid Gnaphalium gnar gnarl gnarled gnarliness gnarly gnash gnashingly gnat gnatcatcher gnatflower gnathal gnathalgia gnathic gnathidium gnathion gnathism gnathite gnathitis Gnatho gnathobase gnathobasic Gnathobdellae Gnathobdellida gnathometer gnathonic gnathonical gnathonically gnathonism gnathonize gnathophorous gnathoplasty gnathopod Gnathopoda gnathopodite gnathopodous gnathostegite Gnathostoma Gnathostomata gnathostomatous gnathostome Gnathostomi gnathostomous gnathotheca gnatling gnatproof gnatsnap gnatsnapper gnatter gnatty gnatworm gnaw gnawable gnawer gnawing gnawingly gnawn gneiss gneissic gneissitic gneissoid gneissose gneissy Gnetaceae gnetaceous Gnetales Gnetum gnocchetti gnome gnomed gnomesque gnomic gnomical gnomically gnomide gnomish gnomist gnomologic gnomological gnomologist gnomology gnomon Gnomonia Gnomoniaceae gnomonic gnomonical gnomonics gnomonological gnomonologically gnomonology gnosiological gnosiology gnosis Gnostic gnostic gnostical gnostically Gnosticism gnosticity gnosticize gnosticizer gnostology gnu go goa goad goadsman goadster goaf Goajiro goal Goala goalage goalee goalie goalkeeper goalkeeping goalless goalmouth Goan Goanese goanna Goasila goat goatbeard goatbrush goatbush goatee goateed goatfish goatherd goatherdess goatish goatishly goatishness goatland goatlike goatling goatly goatroot goatsbane goatsbeard goatsfoot goatskin goatstone goatsucker goatweed goaty goave gob goback goban gobang gobbe gobber gobbet gobbin gobbing gobble gobbledygook gobbler gobby Gobelin gobelin gobernadora gobi Gobia Gobian gobiesocid Gobiesocidae gobiesociform Gobiesox gobiid Gobiidae gobiiform Gobiiformes Gobinism Gobinist Gobio gobioid Gobioidea Gobioidei goblet gobleted gobletful goblin gobline goblinesque goblinish goblinism goblinize goblinry gobmouthed gobo gobonated gobony gobstick goburra goby gobylike gocart Goclenian God god godchild Goddam Goddard goddard goddaughter godded goddess goddesshood goddessship goddikin goddize gode godet Godetia godfather godfatherhood godfathership Godforsaken Godfrey Godful godhead godhood Godiva godkin godless godlessly godlessness godlet godlike godlikeness godlily godliness godling godly godmaker godmaking godmamma godmother godmotherhood godmothership godown godpapa godparent Godsake godsend godship godson godsonship Godspeed Godward Godwin Godwinian godwit goeduck goel goelism Goemagot Goemot goer goes Goetae Goethian goetia goetic goetical goety goff goffer goffered gofferer goffering goffle gog gogga goggan goggle goggled goggler gogglers goggly goglet Gogo gogo Gohila goi goiabada Goidel Goidelic going goitcho goiter goitered goitral goitrogen goitrogenic goitrous Gokuraku gol gola golach goladar golandaas golandause Golaseccan Golconda Gold gold goldbeater goldbeating Goldbird goldbrick goldbricker goldbug goldcrest goldcup golden goldenback goldeneye goldenfleece goldenhair goldenknop goldenlocks goldenly Goldenmouth goldenmouthed goldenness goldenpert goldenrod goldenseal goldentop goldenwing golder goldfielder goldfinch goldfinny goldfish goldflower goldhammer goldhead Goldi Goldic goldie goldilocks goldin goldish goldless goldlike Goldonian goldseed goldsinny goldsmith goldsmithery goldsmithing goldspink goldstone goldtail goldtit goldwater goldweed goldwork goldworker Goldy goldy golee golem golf golfdom golfer Golgi Golgotha goli goliard goliardery goliardic Goliath goliath goliathize golkakra Goll golland gollar golliwogg golly Golo goloe golpe Goma gomari Gomarian Gomarist Gomarite gomart gomashta gomavel gombay gombeen gombeenism gombroon Gomeisa gomer gomeral gomlah gommelin Gomontia Gomorrhean Gomphocarpus gomphodont Gompholobium gomphosis Gomphrena gomuti gon Gona gonad gonadal gonadial gonadic gonadotropic gonadotropin gonaduct gonagra gonakie gonal gonalgia gonangial gonangium gonapod gonapophysal gonapophysial gonapophysis gonarthritis Gond gondang Gondi gondite gondola gondolet gondolier gone goneness goneoclinic gonepoiesis gonepoietic goner Goneril gonesome gonfalcon gonfalonier gonfalonierate gonfaloniership gonfanon gong gongman Gongoresque Gongorism Gongorist gongoristic gonia goniac gonial goniale Goniaster goniatite Goniatites goniatitic goniatitid Goniatitidae goniatitoid gonid gonidangium gonidia gonidial gonidic gonidiferous gonidiogenous gonidioid gonidiophore gonidiose gonidiospore gonidium gonimic gonimium gonimolobe gonimous goniocraniometry Goniodoridae Goniodorididae Goniodoris goniometer goniometric goniometrical goniometrically goniometry gonion Goniopholidae Goniopholis goniostat goniotropous gonitis Gonium gonium gonnardite gonne gonoblast gonoblastic gonoblastidial gonoblastidium gonocalycine gonocalyx gonocheme gonochorism gonochorismal gonochorismus gonochoristic gonococcal gonococcic gonococcoid gonococcus gonocoel gonocyte gonoecium Gonolobus gonomere gonomery gonophore gonophoric gonophorous gonoplasm gonopoietic gonorrhea gonorrheal gonorrheic gonosomal gonosome gonosphere gonostyle gonotheca gonothecal gonotokont gonotome gonotype gonozooid gony gonyalgia gonydeal gonydial gonyocele gonyoncus gonys Gonystylaceae gonystylaceous Gonystylus gonytheca Gonzalo goo goober good Goodenia Goodeniaceae goodeniaceous Goodenoviaceae goodhearted goodheartedly goodheartedness gooding goodish goodishness goodlihead goodlike goodliness goodly goodman goodmanship goodness goods goodsome goodwife goodwill goodwillit goodwilly goody goodyear Goodyera goodyish goodyism goodyness goodyship goof goofer goofily goofiness goofy googly googol googolplex googul gook gool goolah gools gooma goon goondie goonie Goop goosander goose goosebeak gooseberry goosebill goosebird goosebone gooseboy goosecap goosefish gooseflower goosefoot goosegirl goosegog gooseherd goosehouse gooselike goosemouth gooseneck goosenecked gooserumped goosery goosetongue gooseweed goosewing goosewinged goosish goosishly goosishness goosy gopher gopherberry gopherroot gopherwood gopura Gor gor gora goracco goral goran gorb gorbal gorbellied gorbelly gorbet gorble gorblimy gorce gorcock gorcrow Gordiacea gordiacean gordiaceous Gordian Gordiidae Gordioidea Gordius gordolobo Gordon Gordonia gordunite Gordyaean gore gorer gorevan gorfly gorge gorgeable gorged gorgedly gorgelet gorgeous gorgeously gorgeousness gorger gorgerin gorget gorgeted gorglin Gorgon Gorgonacea gorgonacean gorgonaceous gorgonesque gorgoneum Gorgonia Gorgoniacea gorgoniacean gorgoniaceous Gorgonian gorgonian gorgonin gorgonize gorgonlike Gorgonzola Gorgosaurus gorhen goric gorilla gorillaship gorillian gorilline gorilloid gorily goriness goring Gorkhali Gorkiesque gorlin gorlois gormandize gormandizer gormaw gormed gorra gorraf gorry gorse gorsebird gorsechat gorsedd gorsehatch gorsy Gortonian Gortonite gory gos gosain goschen gosh goshawk Goshen goshenite goslarite goslet gosling gosmore gospel gospeler gospelist gospelize gospellike gospelly gospelmonger gospelwards Gosplan gospodar gosport gossamer gossamered gossamery gossampine gossan gossaniferous gossard gossip gossipdom gossipee gossiper gossiphood gossipiness gossiping gossipingly gossipmonger gossipred gossipry gossipy gossoon gossy gossypine Gossypium gossypol gossypose got gotch gote Goth Gotha Gotham Gothamite Gothic Gothically Gothicism Gothicist Gothicity Gothicize Gothicizer Gothicness Gothish Gothism gothite Gothlander Gothonic Gotiglacial gotra gotraja gotten Gottfried Gottlieb gouaree Gouda Goudy gouge gouger goujon goulash goumi goup Goura gourami gourd gourde gourdful gourdhead gourdiness gourdlike gourdworm gourdy Gourinae gourmand gourmander gourmanderie gourmandism gourmet gourmetism gourounut goustrous gousty gout goutify goutily goutiness goutish goutte goutweed goutwort gouty gove govern governability governable governableness governably governail governance governess governessdom governesshood governessy governing governingly government governmental governmentalism governmentalist governmentalize governmentally governmentish governor governorate governorship gowan gowdnie gowf gowfer gowiddie gowk gowked gowkedly gowkedness gowkit gowl gown gownlet gownsman gowpen goy Goyana goyazite Goyetian goyim goyin goyle gozell gozzard gra Graafian grab grabbable grabber grabble grabbler grabbling grabbots graben grabhook grabouche Grace grace graceful gracefully gracefulness graceless gracelessly gracelessness gracelike gracer Gracilaria gracilariid Gracilariidae gracile gracileness gracilescent gracilis gracility graciosity gracioso gracious graciously graciousness grackle Graculus grad gradable gradal gradate gradation gradational gradationally gradationately gradative gradatively gradatory graddan grade graded gradefinder gradely grader Gradgrind gradgrind Gradgrindian Gradgrindish Gradgrindism gradient gradienter Gradientia gradin gradine grading gradiometer gradiometric gradometer gradual gradualism gradualist gradualistic graduality gradually gradualness graduand graduate graduated graduateship graduatical graduating graduation graduator gradus Graeae Graeculus Graeme graff graffage graffer Graffias graffito grafship graft graftage graftdom grafted grafter grafting graftonite graftproof Graham graham grahamite Graian grail grailer grailing grain grainage grained grainedness grainer grainering grainery grainfield graininess graining grainland grainless grainman grainsick grainsickness grainsman grainways grainy graip graisse graith Grallae Grallatores grallatorial grallatory grallic Grallina gralline gralloch gram grama gramarye gramashes grame gramenite gramicidin Graminaceae graminaceous Gramineae gramineal gramineous gramineousness graminicolous graminiferous graminifolious graminiform graminin graminivore graminivorous graminological graminology graminous grammalogue grammar grammarian grammarianism grammarless grammatic grammatical grammatically grammaticalness grammaticaster grammaticism grammaticize grammatics grammatist grammatistical grammatite grammatolator grammatolatry Grammatophyllum gramme Grammontine gramoches Gramophone gramophone gramophonic gramophonical gramophonically gramophonist gramp grampa grampus granada granadilla granadillo Granadine granage granary granate granatum granch grand grandam grandame grandaunt grandchild granddad granddaddy granddaughter granddaughterly grandee grandeeism grandeeship grandesque grandeur grandeval grandfather grandfatherhood grandfatherish grandfatherless grandfatherly grandfathership grandfer grandfilial grandiloquence grandiloquent grandiloquently grandiloquous grandiose grandiosely grandiosity grandisonant Grandisonian Grandisonianism grandisonous grandly grandma grandmaternal Grandmontine grandmother grandmotherhood grandmotherism grandmotherliness grandmotherly grandnephew grandness grandniece grandpa grandparent grandparentage grandparental grandpaternal grandsire grandson grandsonship grandstand grandstander granduncle grane grange granger grangerism grangerite grangerization grangerize grangerizer Grangousier graniform granilla granite granitelike graniteware granitic granitical graniticoline granitiferous granitification granitiform granitite granitization granitize granitoid granivore granivorous granjeno grank grannom granny grannybush grano granoblastic granodiorite granogabbro granolite granolith granolithic granomerite granophyre granophyric granose granospherite Grant grant grantable grantedly grantee granter Granth Grantha Grantia Grantiidae grantor granula granular granularity granularly granulary granulate granulated granulater granulation granulative granulator granule granulet granuliferous granuliform granulite granulitic granulitis granulitization granulitize granulize granuloadipose granulocyte granuloma granulomatous granulometric granulosa granulose granulous Granville granza granzita grape graped grapeflower grapefruit grapeful grapeless grapelet grapelike grapenuts graperoot grapery grapeshot grapeskin grapestalk grapestone grapevine grapewise grapewort graph graphalloy graphic graphical graphically graphicalness graphicly graphicness graphics Graphidiaceae Graphiola graphiological graphiologist graphiology Graphis graphite graphiter graphitic graphitization graphitize graphitoid graphitoidal Graphium graphologic graphological graphologist graphology graphomania graphomaniac graphometer graphometric graphometrical graphometry graphomotor Graphophone graphophone graphophonic graphorrhea graphoscope graphospasm graphostatic graphostatical graphostatics graphotype graphotypic graphy graping grapnel grappa grapple grappler grappling Grapsidae grapsoid Grapsus Grapta graptolite Graptolitha Graptolithida Graptolithina graptolitic Graptolitoidea Graptoloidea graptomancy grapy grasp graspable grasper grasping graspingly graspingness graspless grass grassant grassation grassbird grasschat grasscut grasscutter grassed grasser grasset grassflat grassflower grasshop grasshopper grasshopperdom grasshopperish grasshouse grassiness grassing grassland grassless grasslike grassman grassnut grassplot grassquit grasswards grassweed grasswidowhood grasswork grassworm grassy grat grate grateful gratefully gratefulness grateless grateman grater gratewise grather Gratia Gratiano graticulate graticulation graticule gratification gratified gratifiedly gratifier gratify gratifying gratifyingly gratility gratillity gratinate grating Gratiola gratiolin gratiosolin gratis gratitude gratten grattoir gratuitant gratuitous gratuitously gratuitousness gratuity gratulant gratulate gratulation gratulatorily gratulatory graupel gravamen gravamina grave graveclod gravecloth graveclothes graved gravedigger gravegarth gravel graveless gravelike graveling gravelish gravelliness gravelly gravelroot gravelstone gravelweed gravely gravemaker gravemaking graveman gravemaster graven graveness Gravenstein graveolence graveolency graveolent graver Graves graveship graveside gravestead gravestone graveward gravewards graveyard gravic gravicembalo gravid gravidity gravidly gravidness Gravigrada gravigrade gravimeter gravimetric gravimetrical gravimetrically gravimetry graving gravitate gravitater gravitation gravitational gravitationally gravitative gravitometer gravity gravure gravy grawls gray grayback graybeard graycoat grayfish grayfly grayhead grayish graylag grayling grayly graymalkin graymill grayness graypate graywacke grayware graywether grazable graze grazeable grazer grazier grazierdom graziery grazing grazingly grease greasebush greasehorn greaseless greaselessness greaseproof greaseproofness greaser greasewood greasily greasiness greasy great greatcoat greatcoated greaten greater greathead greatheart greathearted greatheartedness greatish greatly greatmouthed greatness greave greaved greaves grebe Grebo grece Grecian Grecianize Grecism Grecize Grecomania Grecomaniac Grecophil gree greed greedily greediness greedless greedsome greedy greedygut greedyguts Greek Greekdom Greekery Greekess Greekish Greekism Greekist Greekize Greekless Greekling green greenable greenage greenalite greenback Greenbacker Greenbackism greenbark greenbone greenbrier Greencloth greencoat greener greenery greeney greenfinch greenfish greengage greengill greengrocer greengrocery greenhead greenheaded greenheart greenhearted greenhew greenhide greenhood greenhorn greenhornism greenhouse greening greenish greenishness greenkeeper greenkeeping Greenland Greenlander Greenlandic Greenlandish greenlandite Greenlandman greenleek greenless greenlet greenling greenly greenness greenockite greenovite greenroom greensand greensauce greenshank greensick greensickness greenside greenstone greenstuff greensward greenswarded greentail greenth greenuk greenweed Greenwich greenwing greenwithe greenwood greenwort greeny greenyard greet greeter greeting greetingless greetingly greffier greffotome Greg gregal gregale gregaloid gregarian gregarianism Gregarina Gregarinae Gregarinaria gregarine Gregarinida gregarinidal gregariniform Gregarinina Gregarinoidea gregarinosis gregarinous gregarious gregariously gregariousness gregaritic grege Gregg Gregge greggle grego Gregor Gregorian Gregorianist Gregorianize Gregorianizer Gregory greige grein greisen gremial gremlin grenade Grenadian grenadier grenadierial grenadierly grenadiership grenadin grenadine Grendel Grenelle Gressoria gressorial gressorious Greta Gretchen Gretel greund Grevillea grew grewhound Grewia grey greyhound Greyiaceae greyly greyness gribble grice grid griddle griddlecake griddler gride gridelin gridiron griece grieced grief griefful grieffully griefless grieflessness grieshoch grievance grieve grieved grievedly griever grieveship grieving grievingly grievous grievously grievousness Griff griff griffade griffado griffaun griffe griffin griffinage griffinesque griffinhood griffinish griffinism Griffith griffithite Griffon griffon griffonage griffonne grift grifter grig griggles grignet grigri grihastha grihyasutra grike grill grillade grillage grille grilled griller grillroom grillwork grilse grim grimace grimacer grimacier grimacing grimacingly grimalkin grime grimful grimgribber grimily griminess grimliness grimly grimme Grimmia Grimmiaceae grimmiaceous grimmish grimness grimp grimy grin grinagog grinch grind grindable Grindelia grinder grinderman grindery grinding grindingly grindle grindstone gringo gringolee gringophobia Grinnellia grinner grinning grinningly grinny grintern grip gripe gripeful griper gripgrass griphite Griphosaurus griping gripingly gripless gripman gripment grippal grippe gripper grippiness gripping grippingly grippingness gripple grippleness grippotoxin grippy gripsack gripy Griqua griquaite Griqualander gris grisaille grisard Griselda griseous grisette grisettish grisgris griskin grisliness grisly Grison grison grisounite grisoutine Grissel grissens grissons grist gristbite grister Gristhorbia gristle gristliness gristly gristmill gristmiller gristmilling gristy grit grith grithbreach grithman gritless gritrock grits gritstone gritten gritter grittily grittiness grittle gritty grivet grivna Grizel Grizzel grizzle grizzled grizzler grizzly grizzlyman groan groaner groanful groaning groaningly groat groats groatsworth grobian grobianism grocer grocerdom groceress grocerly grocerwise grocery groceryman Groenendael groff grog groggery groggily grogginess groggy grogram grogshop groin groined groinery groining Grolier Grolieresque gromatic gromatics Gromia grommet gromwell groom groomer groomish groomishly groomlet groomling groomsman groomy groop groose groot grooty groove grooveless groovelike groover grooverhead grooviness grooving groovy grope groper groping gropingly gropple grorudite gros grosbeak groschen groser groset grosgrain grosgrained gross grossart grossen grosser grossification grossify grossly grossness grosso grossulaceous grossular Grossularia grossularia Grossulariaceae grossulariaceous grossularious grossularite grosz groszy grot grotesque grotesquely grotesqueness grotesquerie grothine grothite Grotian Grotianism grottesco grotto grottoed grottolike grottowork grouch grouchily grouchiness grouchingly grouchy grouf grough ground groundable groundably groundage groundberry groundbird grounded groundedly groundedness groundenell grounder groundflower grounding groundless groundlessly groundlessness groundliness groundling groundly groundman groundmass groundneedle groundnut groundplot grounds groundsel groundsill groundsman groundward groundwood groundwork groundy group groupage groupageness grouped grouper grouping groupist grouplet groupment groupwise grouse grouseberry grouseless grouser grouseward grousewards grousy grout grouter grouthead grouts grouty grouze grove groved grovel groveler groveless groveling grovelingly grovelings grovy grow growable growan growed grower growing growingly growingupness growl growler growlery growling growlingly growly grown grownup growse growsome growth growthful growthiness growthless growthy grozart grozet grr grub grubbed grubber grubbery grubbily grubbiness grubby grubhood grubless grubroot grubs grubstake grubstaker Grubstreet grubstreet grubworm grudge grudgeful grudgefully grudgekin grudgeless grudger grudgery grudging grudgingly grudgingness grudgment grue gruel grueler grueling gruelly Grues gruesome gruesomely gruesomeness gruff gruffily gruffiness gruffish gruffly gruffness gruffs gruffy grufted grugru Gruidae gruiform Gruiformes gruine Gruis grum grumble grumbler grumblesome Grumbletonian grumbling grumblingly grumbly grume Grumium grumly grummel grummels grummet grummeter grumness grumose grumous grumousness grump grumph grumphie grumphy grumpily grumpiness grumpish grumpy grun Grundified Grundlov grundy Grundyism Grundyist Grundyite grunerite gruneritization grunion grunt grunter Grunth grunting gruntingly gruntle gruntled gruntling Grus grush grushie Grusian Grusinian gruss grutch grutten gryde grylli gryllid Gryllidae gryllos Gryllotalpa Gryllus gryllus grypanian Gryphaea Gryphosaurus gryposis Grypotherium grysbok guaba guacacoa guachamaca guacharo guachipilin Guacho Guacico guacimo guacin guaco guaconize Guadagnini guadalcazarite Guaharibo Guahiban Guahibo Guahivo guaiac guaiacol guaiacolize guaiaconic guaiacum guaiaretic guaiasanol guaiol guaka Gualaca guama guan Guana guana guanabana guanabano guanaco guanajuatite guanamine guanase guanay Guanche guaneide guango guanidine guanidopropionic guaniferous guanine guanize guano guanophore guanosine guanyl guanylic guao guapena guapilla guapinol Guaque guar guara guarabu guaracha guaraguao guarana Guarani guarani Guaranian guaranine guarantee guaranteeship guarantor guarantorship guaranty guarapucu Guaraunan Guarauno guard guardable guardant guarded guardedly guardedness guardeen guarder guardfish guardful guardfully guardhouse guardian guardiancy guardianess guardianless guardianly guardianship guarding guardingly guardless guardlike guardo guardrail guardroom guardship guardsman guardstone Guarea guariba guarinite guarneri Guarnerius Guarnieri Guarrau guarri Guaruan guasa Guastalline guatambu Guatemalan Guatemaltecan guativere Guato Guatoan Guatusan Guatuso Guauaenok guava guavaberry guavina guayaba guayabi guayabo guayacan Guayaqui Guaycuru Guaycuruan Guaymie guayroto guayule guaza Guazuma gubbertush Gubbin gubbo gubernacula gubernacular gubernaculum gubernative gubernator gubernatorial gubernatrix guberniya gucki gud gudame guddle gude gudebrother gudefather gudemother gudesake gudesakes gudesire gudewife gudge gudgeon gudget gudok gue guebucu guejarite Guelph Guelphic Guelphish Guelphism guemal guenepe guenon guepard guerdon guerdonable guerdoner guerdonless guereza Guerickian Guerinet Guernsey guernsey guernseyed guerrilla guerrillaism guerrillaship Guesdism Guesdist guess guessable guesser guessing guessingly guesswork guessworker guest guestchamber guesten guester guesthouse guesting guestive guestless Guestling guestling guestmaster guestship guestwise Guetar Guetare gufa guff guffaw guffer guffin guffy gugal guggle gugglet guglet guglia guglio gugu Guha Guhayna guhr Guiana Guianan Guianese guib guiba guidable guidage guidance guide guideboard guidebook guidebookish guidecraft guideless guideline guidepost guider guideress guidership guideship guideway guidman Guido guidon Guidonian guidwilly guige Guignardia guignol guijo Guilandina guild guilder guildhall guildic guildry guildship guildsman guile guileful guilefully guilefulness guileless guilelessly guilelessness guilery guillemet guillemot Guillermo guillevat guilloche guillochee guillotinade guillotine guillotinement guillotiner guillotinism guillotinist guilt guiltily guiltiness guiltless guiltlessly guiltlessness guiltsick guilty guily guimbard guimpe Guinea guinea Guineaman Guinean Guinevere guipure Guisard guisard guise guiser Guisian guising guitar guitarfish guitarist guitermanite guitguit Guittonian Gujar Gujarati Gujrati gul gula gulae gulaman gulancha Gulanganes gular gularis gulch gulden guldengroschen gule gules Gulf gulf gulflike gulfside gulfwards gulfweed gulfy gulgul gulinula gulinulae gulinular gulix gull Gullah gullery gullet gulleting gullibility gullible gullibly gullion gullish gullishly gullishness gully gullyhole Gulo gulonic gulose gulosity gulp gulper gulpin gulping gulpingly gulpy gulravage gulsach Gum gum gumbo gumboil gumbotil gumby gumchewer gumdigger gumdigging gumdrop gumfield gumflower gumihan gumless gumlike gumly gumma gummage gummaker gummaking gummata gummatous gummed gummer gummiferous gumminess gumming gummite gummose gummosis gummosity gummous gummy gump gumphion gumption gumptionless gumptious gumpus gumshoe gumweed gumwood gun guna gunate gunation gunbearer gunboat gunbright gunbuilder guncotton gundi gundy gunebo gunfire gunflint gunge gunhouse Gunite gunite gunj gunk gunl gunless gunlock gunmaker gunmaking gunman gunmanship gunnage Gunnar gunne gunnel gunner Gunnera Gunneraceae gunneress gunnership gunnery gunnies gunning gunnung gunny gunocracy gunong gunpaper gunplay gunpowder gunpowderous gunpowdery gunpower gunrack gunreach gunrunner gunrunning gunsel gunshop gunshot gunsman gunsmith gunsmithery gunsmithing gunster gunstick gunstock gunstocker gunstocking gunstone Gunter gunter Gunther gunwale gunyah gunyang gunyeh Gunz Gunzian gup guppy guptavidya gur Guran gurdfish gurdle gurdwara gurge gurgeon gurgeons gurges gurgitation gurgle gurglet gurgling gurglingly gurgly gurgoyle gurgulation Gurian Guric Gurish Gurjara gurjun gurk Gurkha gurl gurly Gurmukhi gurnard gurnet gurnetty Gurneyite gurniad gurr gurrah gurry gurt guru guruship Gus gush gusher gushet gushily gushiness gushing gushingly gushingness gushy gusla gusle guss gusset Gussie gussie gust gustable gustation gustative gustativeness gustatory Gustavus gustful gustfully gustfulness gustily gustiness gustless gusto gustoish Gustus gusty gut Guti Gutium gutless gutlike gutling Gutnic Gutnish gutt gutta guttable guttate guttated guttatim guttation gutte gutter Guttera gutterblood guttering gutterlike gutterling gutterman guttersnipe guttersnipish gutterspout gutterwise guttery gutti guttide guttie Guttiferae guttiferal Guttiferales guttiferous guttiform guttiness guttle guttler guttula guttulae guttular guttulate guttule guttural gutturalism gutturality gutturalization gutturalize gutturally gutturalness gutturize gutturonasal gutturopalatal gutturopalatine gutturotetany guttus gutty gutweed gutwise gutwort guvacine guvacoline Guy guy Guyandot guydom guyer guytrash guz guze Guzmania guzmania Guzul guzzle guzzledom guzzler gwag gweduc gweed gweeon gwely Gwen Gwendolen gwine gwyniad Gyarung gyascutus Gyges Gygis gyle gym gymel gymkhana Gymnadenia Gymnadeniopsis Gymnanthes gymnanthous Gymnarchidae Gymnarchus gymnasia gymnasial gymnasiarch gymnasiarchy gymnasiast gymnasic gymnasium gymnast gymnastic gymnastically gymnastics gymnemic gymnetrous gymnic gymnical gymnics gymnite Gymnoblastea gymnoblastic Gymnocalycium gymnocarpic gymnocarpous Gymnocerata gymnoceratous gymnocidium Gymnocladus Gymnoconia Gymnoderinae Gymnodiniaceae gymnodiniaceous Gymnodiniidae Gymnodinium gymnodont Gymnodontes gymnogen gymnogenous Gymnoglossa gymnoglossate gymnogynous Gymnogyps Gymnolaema Gymnolaemata gymnolaematous Gymnonoti Gymnopaedes gymnopaedic gymnophiona gymnoplast Gymnorhina gymnorhinal Gymnorhininae gymnosoph gymnosophist gymnosophy gymnosperm Gymnospermae gymnospermal gymnospermic gymnospermism Gymnospermous gymnospermy Gymnosporangium gymnospore gymnosporous Gymnostomata Gymnostomina gymnostomous Gymnothorax gymnotid Gymnotidae Gymnotoka gymnotokous Gymnotus Gymnura gymnure Gymnurinae gymnurine gympie gyn gynaecea gynaeceum gynaecocoenic gynander gynandrarchic gynandrarchy Gynandria gynandria gynandrian gynandrism gynandroid gynandromorph gynandromorphic gynandromorphism gynandromorphous gynandromorphy gynandrophore gynandrosporous gynandrous gynandry gynantherous gynarchic gynarchy gyne gynecic gynecidal gynecide gynecocentric gynecocracy gynecocrat gynecocratic gynecocratical gynecoid gynecolatry gynecologic gynecological gynecologist gynecology gynecomania gynecomastia gynecomastism gynecomasty gynecomazia gynecomorphous gyneconitis gynecopathic gynecopathy gynecophore gynecophoric gynecophorous gynecotelic gynecratic gyneocracy gyneolater gyneolatry gynephobia Gynerium gynethusia gyniatrics gyniatry gynic gynics gynobase gynobaseous gynobasic gynocardia gynocardic gynocracy gynocratic gynodioecious gynodioeciously gynodioecism gynoecia gynoecium gynogenesis gynomonecious gynomonoeciously gynomonoecism gynophagite gynophore gynophoric gynosporangium gynospore gynostegia gynostegium gynostemium Gynura gyp Gypaetus gype gypper Gyppo Gyps gyps gypseian gypseous gypsiferous gypsine gypsiologist gypsite gypsography gypsologist gypsology Gypsophila gypsophila gypsophilous gypsophily gypsoplast gypsous gypster gypsum Gypsy gypsy gypsydom gypsyesque gypsyfy gypsyhead gypsyhood gypsyish gypsyism gypsylike gypsyry gypsyweed gypsywise gypsywort Gyracanthus gyral gyrally gyrant gyrate gyration gyrational gyrator gyratory gyre Gyrencephala gyrencephalate gyrencephalic gyrencephalous gyrene gyrfalcon gyri gyric gyrinid Gyrinidae Gyrinus gyro gyrocar gyroceracone gyroceran Gyroceras gyrochrome gyrocompass Gyrodactylidae Gyrodactylus gyrogonite gyrograph gyroidal gyroidally gyrolite gyrolith gyroma gyromagnetic gyromancy gyromele gyrometer Gyromitra gyron gyronny Gyrophora Gyrophoraceae Gyrophoraceous gyrophoric gyropigeon gyroplane gyroscope gyroscopic gyroscopically gyroscopics gyrose gyrostabilizer Gyrostachys gyrostat gyrostatic gyrostatically gyrostatics Gyrotheca gyrous gyrovagi gyrovagues gyrowheel gyrus gyte gytling gyve H h ha haab haaf Habab habanera Habbe habble habdalah Habe habeas habena habenal habenar Habenaria habendum habenula habenular haberdash haberdasher haberdasheress haberdashery haberdine habergeon habilable habilatory habile habiliment habilimentation habilimented habilitate habilitation habilitator hability habille Habiri Habiru habit habitability habitable habitableness habitably habitacle habitacule habitally habitan habitance habitancy habitant habitat habitate habitation habitational habitative habited habitual habituality habitualize habitually habitualness habituate habituation habitude habitudinal habitue habitus habnab haboob Habronema habronemiasis habronemic habu habutai habutaye hache Hachiman hachure hacienda hack hackamatak hackamore hackbarrow hackberry hackbolt hackbush hackbut hackbuteer hacked hackee hacker hackery hackin hacking hackingly hackle hackleback hackler hacklog hackly hackmack hackman hackmatack hackney hackneyed hackneyer hackneyism hackneyman hacksaw hacksilber hackster hackthorn hacktree hackwood hacky had Hadassah hadbot hadden haddie haddo haddock haddocker hade Hadean Hadendoa Hadendowa hadentomoid Hadentomoidea Hades Hadhramautian hading Hadith hadj Hadjemi hadji hadland Hadramautian hadrome Hadromerina hadromycosis hadrosaur Hadrosaurus haec haecceity Haeckelian Haeckelism haem Haemamoeba Haemanthus Haemaphysalis haemaspectroscope haematherm haemathermal haemathermous haematinon haematinum haematite Haematobranchia haematobranchiate Haematocrya haematocryal Haematophilina haematophiline Haematopus haematorrhachis haematosepsis Haematotherma haematothermal haematoxylic haematoxylin Haematoxylon haemoconcentration haemodilution Haemodoraceae haemodoraceous haemoglobin haemogram Haemogregarina Haemogregarinidae haemonchiasis haemonchosis Haemonchus haemony haemophile Haemoproteus haemorrhage haemorrhagia haemorrhagic haemorrhoid haemorrhoidal haemosporid Haemosporidia haemosporidian Haemosporidium Haemulidae haemuloid haeremai haet haff haffet haffkinize haffle Hafgan hafiz hafnium hafnyl haft hafter hag Haganah Hagarite hagberry hagboat hagborn hagbush hagdon hageen Hagenia hagfish haggada haggaday haggadic haggadical haggadist haggadistic haggard haggardly haggardness hagged hagger haggis haggish haggishly haggishness haggister haggle haggler haggly haggy hagi hagia hagiarchy hagiocracy Hagiographa hagiographal hagiographer hagiographic hagiographical hagiographist hagiography hagiolater hagiolatrous hagiolatry hagiologic hagiological hagiologist hagiology hagiophobia hagioscope hagioscopic haglet haglike haglin hagride hagrope hagseed hagship hagstone hagtaper hagweed hagworm hah Hahnemannian Hahnemannism Haiathalah Haida Haidan Haidee haidingerite Haiduk haik haikai haikal Haikh haikwan hail hailer hailproof hailse hailshot hailstone hailstorm hailweed haily Haimavati hain Hainai Hainan Hainanese hainberry haine hair hairband hairbeard hairbird hairbrain hairbreadth hairbrush haircloth haircut haircutter haircutting hairdo hairdress hairdresser hairdressing haire haired hairen hairhoof hairhound hairif hairiness hairlace hairless hairlessness hairlet hairline hairlock hairmeal hairmonger hairpin hairsplitter hairsplitting hairspring hairstone hairstreak hairtail hairup hairweed hairwood hairwork hairworm hairy Haisla Haithal Haitian haje hajib hajilij hak hakam hakdar hake Hakea hakeem hakenkreuz Hakenkreuzler hakim Hakka hako haku Hal hala halakah halakic halakist halakistic halal halalcor halation Halawi halazone halberd halberdier halberdman halberdsman halbert halch halcyon halcyonian halcyonic Halcyonidae Halcyoninae halcyonine Haldanite hale halebi Halecomorphi haleness Halenia haler halerz Halesia halesome half halfback halfbeak halfer halfheaded halfhearted halfheartedly halfheartedness halfling halfman halfness halfpace halfpaced halfpenny halfpennyworth halfway halfwise Haliaeetus halibios halibiotic halibiu halibut halibuter Halicarnassean Halicarnassian Halichondriae halichondrine halichondroid Halicore Halicoridae halide halidom halieutic halieutically halieutics Haligonian Halimeda halimous halinous haliographer haliography Haliotidae Haliotis haliotoid haliplankton haliplid Haliplidae Haliserites halisteresis halisteretic halite Halitheriidae Halitherium halitosis halituosity halituous halitus hall hallabaloo hallage hallah hallan hallanshaker hallebardier hallecret halleflinta halleflintoid hallel hallelujah hallelujatic hallex Halleyan halliblash halling hallman hallmark hallmarked hallmarker hallmoot halloo Hallopididae hallopodous Hallopus hallow Hallowday hallowed hallowedly hallowedness Halloween hallower Hallowmas Hallowtide halloysite Hallstatt Hallstattian hallucal hallucinate hallucination hallucinational hallucinative hallucinator hallucinatory hallucined hallucinosis hallux hallway halma halmalille halmawise halo Haloa Halobates halobios halobiotic halochromism halochromy Halocynthiidae haloesque halogen halogenate halogenation halogenoid halogenous Halogeton halohydrin haloid halolike halolimnic halomancy halometer halomorphic halophile halophilism halophilous halophyte halophytic halophytism Halopsyche Halopsychidae Haloragidaceae haloragidaceous Halosauridae Halosaurus haloscope Halosphaera halotrichite haloxene hals halse halsen halsfang halt halter halterbreak halteres Halteridium halterproof Haltica halting haltingly haltingness haltless halucket halukkah halurgist halurgy halutz halvaner halvans halve halved halvelings halver halves halyard Halysites ham hamacratic Hamadan hamadryad Hamal hamal hamald Hamamelidaceae hamamelidaceous Hamamelidanthemum hamamelidin Hamamelidoxylon hamamelin Hamamelis Hamamelites hamartiologist hamartiology hamartite hamate hamated Hamathite hamatum hambergite hamble hambroline hamburger hame hameil hamel Hamelia hamesucken hamewith hamfat hamfatter hami Hamidian Hamidieh hamiform Hamilton Hamiltonian Hamiltonianism Hamiltonism hamingja hamirostrate Hamital Hamite Hamites Hamitic Hamiticized Hamitism Hamitoid hamlah hamlet hamleted hamleteer hamletization hamletize hamlinite hammada hammam hammer hammerable hammerbird hammercloth hammerdress hammerer hammerfish hammerhead hammerheaded hammering hammeringly hammerkop hammerless hammerlike hammerman hammersmith hammerstone hammertoe hammerwise hammerwork hammerwort hammochrysos hammock hammy hamose hamous hamper hamperedly hamperedness hamperer hamperman Hampshire hamrongite hamsa hamshackle hamster hamstring hamular hamulate hamule Hamulites hamulose hamulus hamus hamza han Hanafi Hanafite hanaper hanaster Hanbalite hanbury hance hanced hanch hancockite hand handbag handball handballer handbank handbanker handbarrow handbill handblow handbolt handbook handbow handbreadth handcar handcart handclap handclasp handcloth handcraft handcraftman handcraftsman handcuff handed handedness Handelian hander handersome handfast handfasting handfastly handfastness handflower handful handgrasp handgravure handgrip handgriping handgun handhaving handhold handhole handicap handicapped handicapper handicraft handicraftship handicraftsman handicraftsmanship handicraftswoman handicuff handily handiness handistroke handiwork handkercher handkerchief handkerchiefful handlaid handle handleable handled handleless handler handless handlike handling handmade handmaid handmaiden handmaidenly handout handpost handprint handrail handrailing handreader handreading handsale handsaw handsbreadth handscrape handsel handseller handset handshake handshaker handshaking handsmooth handsome handsomeish handsomely handsomeness handspade handspike handspoke handspring handstaff handstand handstone handstroke handwear handwheel handwhile handwork handworkman handwrist handwrite handwriting handy handyblow handybook handygrip hangability hangable hangalai hangar hangbird hangby hangdog hange hangee hanger hangfire hangie hanging hangingly hangkang hangle hangman hangmanship hangment hangnail hangnest hangout hangul hangwoman hangworm hangworthy hanif hanifism hanifite hanifiya Hank hank hanker hankerer hankering hankeringly hankie hankle hanksite hanky hanna hannayite Hannibal Hannibalian Hannibalic Hano Hanoverian Hanoverianize Hanoverize Hans hansa Hansard Hansardization Hansardize Hanse hanse Hanseatic hansel hansgrave hansom hant hantle Hanukkah Hanuman hao haole haoma haori hap Hapale Hapalidae hapalote Hapalotis hapaxanthous haphazard haphazardly haphazardness haphtarah Hapi hapless haplessly haplessness haplite haplocaulescent haplochlamydeous Haplodoci Haplodon haplodont haplodonty haplography haploid haploidic haploidy haplolaly haplologic haplology haploma Haplomi haplomid haplomous haplont haploperistomic haploperistomous haplopetalous haplophase haplophyte haploscope haploscopic haplosis haplostemonous haplotype haply happen happening happenstance happier happiest happify happiless happily happiness happing happy hapten haptene haptenic haptere hapteron haptic haptics haptometer haptophor haptophoric haptophorous haptotropic haptotropically haptotropism hapu hapuku haqueton harakeke harangue harangueful haranguer Hararese Harari harass harassable harassedly harasser harassingly harassment haratch Haratin Haraya Harb harbergage harbi harbinge harbinger harbingership harbingery harbor harborage harborer harborless harborous harborside harborward hard hardanger hardback hardbake hardbeam hardberry harden hardenable Hardenbergia hardener hardening hardenite harder Harderian hardfern hardfist hardfisted hardfistedness hardhack hardhanded hardhandedness hardhead hardheaded hardheadedly hardheadedness hardhearted hardheartedly hardheartedness hardihood hardily hardim hardiment hardiness hardish hardishrew hardly hardmouth hardmouthed hardness hardock hardpan hardship hardstand hardstanding hardtack hardtail hardware hardwareman Hardwickia hardwood hardy hardystonite hare harebell harebottle harebrain harebrained harebrainedly harebrainedness harebur harefoot harefooted harehearted harehound Harelda harelike harelip harelipped harem haremism haremlik harengiform harfang haricot harigalds hariolate hariolation hariolize harish hark harka harl Harleian Harlemese Harlemite harlequin harlequina harlequinade harlequinery harlequinesque harlequinic harlequinism harlequinize harling harlock harlot harlotry harm Harmachis harmal harmala harmaline harman harmattan harmel harmer harmful harmfully harmfulness harmine harminic harmless harmlessly harmlessness Harmon harmonia harmoniacal harmonial harmonic harmonica harmonical harmonically harmonicalness harmonichord harmonici harmonicism harmonicon harmonics harmonious harmoniously harmoniousness harmoniphon harmoniphone harmonist harmonistic harmonistically Harmonite harmonium harmonizable harmonization harmonize harmonizer harmonogram harmonograph harmonometer harmony harmost harmotome harmotomic harmproof harn harness harnesser harnessry harnpan Harold harp Harpa harpago harpagon Harpagornis Harpalides Harpalinae Harpalus harper harperess Harpidae harpier harpings harpist harpless harplike Harpocrates harpoon harpooner Harporhynchus harpress harpsichord harpsichordist harpula Harpullia harpwaytuning harpwise Harpy Harpyia harpylike harquebus harquebusade harquebusier harr harrateen harridan harrier Harris Harrisia harrisite Harrovian harrow harrower harrowing harrowingly harrowingness harrowment Harry harry harsh harshen harshish harshly harshness harshweed harstigite hart hartal hartberry hartebeest hartin hartite Hartleian Hartleyan Hartmann Hartmannia Hartogia hartshorn hartstongue harttite Hartungen haruspex haruspical haruspicate haruspication haruspice haruspices haruspicy Harv Harvard Harvardian Harvardize Harveian harvest harvestbug harvester harvestless harvestman harvestry harvesttime Harvey Harveyize harzburgite hasan hasenpfeffer hash hashab hasher Hashimite hashish Hashiya hashy Hasidean Hasidic Hasidim Hasidism Hasinai hask Haskalah haskness hasky haslet haslock Hasmonaean hasp hassar hassel hassle hassock hassocky hasta hastate hastately hastati hastatolanceolate hastatosagittate haste hasteful hastefully hasteless hastelessness hasten hastener hasteproof haster hastilude hastily hastiness hastings hastingsite hastish hastler hasty hat hatable hatband hatbox hatbrim hatbrush hatch hatchability hatchable hatchel hatcheler hatcher hatchery hatcheryman hatchet hatchetback hatchetfish hatchetlike hatchetman hatchettine hatchettolite hatchety hatchgate hatching hatchling hatchman hatchment hatchminder hatchway hatchwayman hate hateable hateful hatefully hatefulness hateless hatelessness hater hatful hath hatherlite hathi Hathor Hathoric Hati Hatikvah hatless hatlessness hatlike hatmaker hatmaking hatpin hatrack hatrail hatred hatress hatstand hatt hatted Hattemist hatter Hatteria hattery Hatti Hattic Hattie hatting Hattism Hattize hattock Hatty hatty hau hauberget hauberk hauchecornite hauerite haugh haughland haught haughtily haughtiness haughtly haughtness haughtonite haughty haul haulabout haulage haulageway haulback hauld hauler haulier haulm haulmy haulster haunch haunched hauncher haunching haunchless haunchy haunt haunter hauntingly haunty Hauranitic hauriant haurient Hausa hause hausen hausmannite hausse Haussmannization Haussmannize haustellate haustellated haustellous haustellum haustement haustorial haustorium haustral haustrum hautboy hautboyist hauteur hauynite hauynophyre havage Havaiki Havaikian Havana Havanese have haveable haveage havel haveless havelock haven havenage havener havenership havenet havenful havenless havent havenward haver havercake haverel haverer havergrass havermeal havers haversack Haversian haversine havier havildar havingness havoc havocker haw Hawaiian hawaiite hawbuck hawcubite hawer hawfinch Hawiya hawk hawkbill hawkbit hawked hawker hawkery Hawkeye hawkie hawking hawkish hawklike hawknut hawkweed hawkwise hawky hawm hawok Haworthia hawse hawsehole hawseman hawsepiece hawsepipe hawser hawserwise hawthorn hawthorned hawthorny hay haya hayband haybird haybote haycap haycart haycock haydenite hayey hayfield hayfork haygrower haylift hayloft haymaker haymaking haymarket haymow hayrack hayrake hayraker hayrick hayseed haysel haystack haysuck haytime hayward hayweed haywire hayz Hazara hazard hazardable hazarder hazardful hazardize hazardless hazardous hazardously hazardousness hazardry haze Hazel hazel hazeled hazeless hazelly hazelnut hazelwood hazelwort hazen hazer hazily haziness hazing hazle haznadar hazy hazzan he head headache headachy headband headbander headboard headborough headcap headchair headcheese headchute headcloth headdress headed headender header headfirst headforemost headframe headful headgear headily headiness heading headkerchief headland headledge headless headlessness headlight headlighting headlike headline headliner headlock headlong headlongly headlongs headlongwise headman headmark headmaster headmasterly headmastership headmistress headmistressship headmold headmost headnote headpenny headphone headpiece headplate headpost headquarter headquarters headrace headrail headreach headrent headrest headright headring headroom headrope headsail headset headshake headship headsill headskin headsman headspring headstall headstand headstick headstock headstone headstream headstrong headstrongly headstrongness headwaiter headwall headward headwark headwater headway headwear headwork headworker headworking heady heaf heal healable heald healder healer healful healing healingly healless healsome healsomeness health healthcraft healthful healthfully healthfulness healthguard healthily healthiness healthless healthlessness healthsome healthsomely healthsomeness healthward healthy heap heaper heaps heapstead heapy hear hearable hearer hearing hearingless hearken hearkener hearsay hearse hearsecloth hearselike hearst heart heartache heartaching heartbeat heartbird heartblood heartbreak heartbreaker heartbreaking heartbreakingly heartbroken heartbrokenly heartbrokenness heartburn heartburning heartdeep heartease hearted heartedly heartedness hearten heartener heartening hearteningly heartfelt heartful heartfully heartfulness heartgrief hearth hearthless hearthman hearthpenny hearthrug hearthstead hearthstone hearthward hearthwarming heartikin heartily heartiness hearting heartland heartleaf heartless heartlessly heartlessness heartlet heartling heartly heartnut heartpea heartquake heartroot hearts heartscald heartsease heartseed heartsette heartsick heartsickening heartsickness heartsome heartsomely heartsomeness heartsore heartstring heartthrob heartward heartwater heartweed heartwise heartwood heartwort hearty heat heatable heatdrop heatedly heater heaterman heatful heath heathberry heathbird heathen heathendom heatheness heathenesse heathenhood heathenish heathenishly heathenishness heathenism heathenize heathenness heathenry heathenship Heather heather heathered heatheriness heathery heathless heathlike heathwort heathy heating heatingly heatless heatlike heatmaker heatmaking heatproof heatronic heatsman heatstroke heaume heaumer heautarit heautomorphism Heautontimorumenos heautophany heave heaveless heaven Heavenese heavenful heavenhood heavenish heavenishly heavenize heavenless heavenlike heavenliness heavenly heavens heavenward heavenwardly heavenwardness heavenwards heaver heavies heavily heaviness heaving heavisome heavity heavy heavyback heavyhanded heavyhandedness heavyheaded heavyhearted heavyheartedness heavyweight hebamic hebdomad hebdomadal hebdomadally hebdomadary hebdomader hebdomarian hebdomary hebeanthous hebecarpous hebecladous hebegynous hebenon hebeosteotomy hebepetalous hebephrenia hebephrenic hebetate hebetation hebetative hebete hebetic hebetomy hebetude hebetudinous Hebraean Hebraic Hebraica Hebraical Hebraically Hebraicize Hebraism Hebraist Hebraistic Hebraistical Hebraistically Hebraization Hebraize Hebraizer Hebrew Hebrewdom Hebrewess Hebrewism Hebrician Hebridean Hebronite hebronite hecastotheism Hecate Hecatean Hecatic Hecatine hecatomb Hecatombaeon hecatomped hecatompedon hecatonstylon hecatontarchy hecatontome hecatophyllous hech Hechtia heck heckelphone Heckerism heckimal heckle heckler hectare hecte hectic hectical hectically hecticly hecticness hectocotyl hectocotyle hectocotyliferous hectocotylization hectocotylize hectocotylus hectogram hectograph hectographic hectography hectoliter hectometer Hector hector Hectorean Hectorian hectoringly hectorism hectorly hectorship hectostere hectowatt heddle heddlemaker heddler hedebo hedenbergite Hedeoma heder Hedera hederaceous hederaceously hederated hederic hederiferous hederiform hederigerent hederin hederose hedge hedgeberry hedgeborn hedgebote hedgebreaker hedgehog hedgehoggy hedgehop hedgehopper hedgeless hedgemaker hedgemaking hedger hedgerow hedgesmith hedgeweed hedgewise hedgewood hedging hedgingly hedgy hedonic hedonical hedonically hedonics hedonism hedonist hedonistic hedonistically hedonology hedriophthalmous hedrocele hedrumite Hedychium hedyphane Hedysarum heed heeder heedful heedfully heedfulness heedily heediness heedless heedlessly heedlessness heedy heehaw heel heelball heelband heelcap heeled heeler heelgrip heelless heelmaker heelmaking heelpath heelpiece heelplate heelpost heelprint heelstrap heeltap heeltree heemraad heer heeze heezie heezy heft hefter heftily heftiness hefty hegari Hegelian Hegelianism Hegelianize Hegelizer hegemon hegemonic hegemonical hegemonist hegemonizer hegemony hegira hegumen hegumene Hehe hei heiau Heidi heifer heiferhood heigh heighday height heighten heightener heii Heikum Heiltsuk heimin Hein Heinesque Heinie heinous heinously heinousness Heinrich heintzite Heinz heir heirdom heiress heiressdom heiresshood heirless heirloom heirship heirskip heitiki Hejazi Hejazian hekteus helbeh helcoid helcology helcoplasty helcosis helcotic heldentenor helder Helderbergian hele Helen Helena helenin helenioid Helenium Helenus helepole Helge heliacal heliacally Heliaea heliaean Heliamphora Heliand helianthaceous Helianthemum helianthic helianthin Helianthium Helianthoidea Helianthoidean Helianthus heliast heliastic heliazophyte helical helically heliced helices helichryse helichrysum Helicidae heliciform helicin Helicina helicine Helicinidae helicitic helicline helicograph helicogyrate helicogyre helicoid helicoidal helicoidally helicometry helicon Heliconia Heliconian Heliconiidae Heliconiinae heliconist Heliconius helicoprotein helicopter helicorubin helicotrema Helicteres helictite helide Heligmus heling helio heliocentric heliocentrical heliocentrically heliocentricism heliocentricity heliochrome heliochromic heliochromoscope heliochromotype heliochromy helioculture heliodon heliodor helioelectric helioengraving heliofugal Heliogabalize Heliogabalus heliogram heliograph heliographer heliographic heliographical heliographically heliography heliogravure helioid heliolater heliolatrous heliolatry heliolite Heliolites heliolithic Heliolitidae heliologist heliology heliometer heliometric heliometrical heliometrically heliometry heliomicrometer Helion heliophilia heliophiliac heliophilous heliophobe heliophobia heliophobic heliophobous heliophotography heliophyllite heliophyte Heliopora Helioporidae Heliopsis heliopticon Heliornis Heliornithes Heliornithidae Helios helioscope helioscopic helioscopy heliosis heliostat heliostatic heliotactic heliotaxis heliotherapy heliothermometer Heliothis heliotrope heliotroper Heliotropiaceae heliotropian heliotropic heliotropical heliotropically heliotropine heliotropism Heliotropium heliotropy heliotype heliotypic heliotypically heliotypography heliotypy Heliozoa heliozoan heliozoic heliport Helipterum helispheric helispherical helium helix helizitic hell Helladian Helladic Helladotherium hellandite hellanodic hellbender hellborn hellbox hellbred hellbroth hellcat helldog helleboraceous helleboraster hellebore helleborein helleboric helleborin Helleborine helleborism Helleborus Hellelt Hellen Hellene Hellenian Hellenic Hellenically Hellenicism Hellenism Hellenist Hellenistic Hellenistical Hellenistically Hellenisticism Hellenization Hellenize Hellenizer Hellenocentric Hellenophile heller helleri Hellespont Hellespontine hellgrammite hellhag hellhole hellhound hellicat hellier hellion hellish hellishly hellishness hellkite hellness hello hellroot hellship helluo hellward hellweed helly helm helmage helmed helmet helmeted helmetlike helmetmaker helmetmaking Helmholtzian helminth helminthagogic helminthagogue Helminthes helminthiasis helminthic helminthism helminthite Helminthocladiaceae helminthoid helminthologic helminthological helminthologist helminthology helminthosporiose Helminthosporium helminthosporoid helminthous helmless helmsman helmsmanship helobious heloderm Heloderma Helodermatidae helodermatoid helodermatous helodes heloe heloma Helonias helonin helosis Helot helotage helotism helotize helotomy helotry help helpable helper helpful helpfully helpfulness helping helpingly helpless helplessly helplessness helply helpmate helpmeet helpsome helpworthy helsingkite helve helvell Helvella Helvellaceae helvellaceous Helvellales helvellic helver Helvetia Helvetian Helvetic Helvetii Helvidian helvite hem hemabarometer hemachate hemachrome hemachrosis hemacite hemad hemadrometer hemadrometry hemadromograph hemadromometer hemadynameter hemadynamic hemadynamics hemadynamometer hemafibrite hemagglutinate hemagglutination hemagglutinative hemagglutinin hemagogic hemagogue hemal hemalbumen hemamoeba hemangioma hemangiomatosis hemangiosarcoma hemaphein hemapod hemapodous hemapoiesis hemapoietic hemapophyseal hemapophysial hemapophysis hemarthrosis hemase hemaspectroscope hemastatics hematachometer hematachometry hematal hematein hematemesis hematemetic hematencephalon hematherapy hematherm hemathermal hemathermous hemathidrosis hematic hematid hematidrosis hematimeter hematin hematinic hematinometer hematinometric hematinuria hematite hematitic hematobic hematobious hematobium hematoblast hematobranchiate hematocatharsis hematocathartic hematocele hematochezia hematochrome hematochyluria hematoclasia hematoclasis hematocolpus hematocrit hematocryal hematocrystallin hematocyanin hematocyst hematocystis hematocyte hematocytoblast hematocytogenesis hematocytometer hematocytotripsis hematocytozoon hematocyturia hematodynamics hematodynamometer hematodystrophy hematogen hematogenesis hematogenetic hematogenic hematogenous hematoglobulin hematography hematohidrosis hematoid hematoidin hematolin hematolite hematological hematologist hematology hematolymphangioma hematolysis hematolytic hematoma hematomancy hematometer hematometra hematometry hematomphalocele hematomyelia hematomyelitis hematonephrosis hematonic hematopathology hematopericardium hematopexis hematophobia hematophyte hematoplast hematoplastic hematopoiesis hematopoietic hematoporphyrin hematoporphyrinuria hematorrhachis hematorrhea hematosalpinx hematoscope hematoscopy hematose hematosepsis hematosin hematosis hematospectrophotometer hematospectroscope hematospermatocele hematospermia hematostibiite hematotherapy hematothermal hematothorax hematoxic hematozoal hematozoan hematozoic hematozoon hematozymosis hematozymotic hematuresis hematuria hematuric hemautogram hemautograph hemautographic hemautography heme hemellitene hemellitic hemelytral hemelytron hemen hemera hemeralope hemeralopia hemeralopic Hemerobaptism Hemerobaptist Hemerobian Hemerobiid Hemerobiidae Hemerobius Hemerocallis hemerologium hemerology hemerythrin hemiablepsia hemiacetal hemiachromatopsia hemiageusia hemiageustia hemialbumin hemialbumose hemialbumosuria hemialgia hemiamaurosis hemiamb hemiamblyopia hemiamyosthenia hemianacusia hemianalgesia hemianatropous hemianesthesia hemianopia hemianopic hemianopsia hemianoptic hemianosmia hemiapraxia Hemiascales Hemiasci Hemiascomycetes hemiasynergia hemiataxia hemiataxy hemiathetosis hemiatrophy hemiazygous Hemibasidiales Hemibasidii Hemibasidiomycetes hemibasidium hemibathybian hemibenthic hemibenthonic hemibranch hemibranchiate Hemibranchii hemic hemicanities hemicardia hemicardiac hemicarp hemicatalepsy hemicataleptic hemicellulose hemicentrum hemicephalous hemicerebrum Hemichorda hemichordate hemichorea hemichromatopsia hemicircle hemicircular hemiclastic hemicollin hemicrane hemicrania hemicranic hemicrany hemicrystalline hemicycle hemicyclic hemicyclium hemicylindrical hemidactylous Hemidactylus hemidemisemiquaver hemidiapente hemidiaphoresis hemiditone hemidomatic hemidome hemidrachm hemidysergia hemidysesthesia hemidystrophy hemiekton hemielliptic hemiepilepsy hemifacial hemiform Hemigale Hemigalus Hemiganus hemigastrectomy hemigeusia hemiglossal hemiglossitis hemiglyph hemignathous hemihdry hemihedral hemihedrally hemihedric hemihedrism hemihedron hemiholohedral hemihydrate hemihydrated hemihydrosis hemihypalgesia hemihyperesthesia hemihyperidrosis hemihypertonia hemihypertrophy hemihypesthesia hemihypoesthesia hemihypotonia hemikaryon hemikaryotic hemilaminectomy hemilaryngectomy Hemileia hemilethargy hemiligulate hemilingual hemimellitene hemimellitic hemimelus Hemimeridae Hemimerus Hemimetabola hemimetabole hemimetabolic hemimetabolism hemimetabolous hemimetaboly hemimetamorphic hemimetamorphosis hemimetamorphous hemimorph hemimorphic hemimorphism hemimorphite hemimorphy Hemimyaria hemin hemina hemine heminee hemineurasthenia hemiobol hemiolia hemiolic hemionus hemiope hemiopia hemiopic hemiorthotype hemiparalysis hemiparanesthesia hemiparaplegia hemiparasite hemiparasitic hemiparasitism hemiparesis hemiparesthesia hemiparetic hemipenis hemipeptone hemiphrase hemipic hemipinnate hemiplane hemiplankton hemiplegia hemiplegic hemiplegy hemipodan hemipode Hemipodii Hemipodius hemiprism hemiprismatic hemiprotein hemipter Hemiptera hemipteral hemipteran hemipteroid hemipterological hemipterology hemipteron hemipterous hemipyramid hemiquinonoid hemiramph Hemiramphidae Hemiramphinae hemiramphine Hemiramphus hemisaprophyte hemisaprophytic hemiscotosis hemisect hemisection hemispasm hemispheral hemisphere hemisphered hemispherical hemispherically hemispheroid hemispheroidal hemispherule hemistater hemistich hemistichal hemistrumectomy hemisymmetrical hemisymmetry hemisystole hemiterata hemiteratic hemiteratics hemiteria hemiterpene hemitery hemithyroidectomy hemitone hemitremor hemitrichous hemitriglyph hemitropal hemitrope hemitropic hemitropism hemitropous hemitropy hemitype hemitypic hemivagotony heml hemlock hemmel hemmer hemoalkalimeter hemoblast hemochromatosis hemochrome hemochromogen hemochromometer hemochromometry hemoclasia hemoclasis hemoclastic hemocoel hemocoele hemocoelic hemocoelom hemoconcentration hemoconia hemoconiosis hemocry hemocrystallin hemoculture hemocyanin hemocyte hemocytoblast hemocytogenesis hemocytolysis hemocytometer hemocytotripsis hemocytozoon hemocyturia hemodiagnosis hemodilution hemodrometer hemodrometry hemodromograph hemodromometer hemodynameter hemodynamic hemodynamics hemodystrophy hemoerythrin hemoflagellate hemofuscin hemogastric hemogenesis hemogenetic hemogenic hemogenous hemoglobic hemoglobin hemoglobinemia hemoglobiniferous hemoglobinocholia hemoglobinometer hemoglobinophilic hemoglobinous hemoglobinuria hemoglobinuric hemoglobulin hemogram hemogregarine hemoid hemokonia hemokoniosis hemol hemoleucocyte hemoleucocytic hemologist hemology hemolymph hemolymphatic hemolysin hemolysis hemolytic hemolyze hemomanometer hemometer hemometry hemonephrosis hemopathology hemopathy hemopericardium hemoperitoneum hemopexis hemophage hemophagia hemophagocyte hemophagocytosis hemophagous hemophagy hemophile Hemophileae hemophilia hemophiliac hemophilic Hemophilus hemophobia hemophthalmia hemophthisis hemopiezometer hemoplasmodium hemoplastic hemopneumothorax hemopod hemopoiesis hemopoietic hemoproctia hemoptoe hemoptysis hemopyrrole hemorrhage hemorrhagic hemorrhagin hemorrhea hemorrhodin hemorrhoid hemorrhoidal hemorrhoidectomy hemosalpinx hemoscope hemoscopy hemosiderin hemosiderosis hemospasia hemospastic hemospermia hemosporid hemosporidian hemostasia hemostasis hemostat hemostatic hemotachometer hemotherapeutics hemotherapy hemothorax hemotoxic hemotoxin hemotrophe hemotropic hemozoon hemp hempbush hempen hemplike hempseed hempstring hempweed hempwort hempy hemstitch hemstitcher hen henad henbane henbill henbit hence henceforth henceforward henceforwards henchboy henchman henchmanship hencoop hencote hend hendecacolic hendecagon hendecagonal hendecahedron hendecane hendecasemic hendecasyllabic hendecasyllable hendecatoic hendecoic hendecyl hendiadys hendly hendness heneicosane henequen henfish henhearted henhouse henhussy henism henlike henmoldy henna Hennebique hennery hennin hennish henny henogeny henotheism henotheist henotheistic henotic henpeck henpen Henrician Henrietta henroost Henry henry hent Hentenian henter hentriacontane henware henwife henwise henwoodite henyard heortological heortologion heortology hep hepar heparin heparinize hepatalgia hepatatrophia hepatatrophy hepatauxe hepatectomy hepatic Hepatica hepatica Hepaticae hepatical hepaticoduodenostomy hepaticoenterostomy hepaticogastrostomy hepaticologist hepaticology hepaticopulmonary hepaticostomy hepaticotomy hepatite hepatitis hepatization hepatize hepatocele hepatocirrhosis hepatocolic hepatocystic hepatoduodenal hepatoduodenostomy hepatodynia hepatodysentery hepatoenteric hepatoflavin hepatogastric hepatogenic hepatogenous hepatography hepatoid hepatolenticular hepatolith hepatolithiasis hepatolithic hepatological hepatologist hepatology hepatolysis hepatolytic hepatoma hepatomalacia hepatomegalia hepatomegaly hepatomelanosis hepatonephric hepatopathy hepatoperitonitis hepatopexia hepatopexy hepatophlebitis hepatophlebotomy hepatophyma hepatopneumonic hepatoportal hepatoptosia hepatoptosis hepatopulmonary hepatorenal hepatorrhagia hepatorrhaphy hepatorrhea hepatorrhexis hepatorrhoea hepatoscopy hepatostomy hepatotherapy hepatotomy hepatotoxemia hepatoumbilical hepcat Hephaesteum Hephaestian Hephaestic Hephaestus hephthemimer hephthemimeral hepialid Hepialidae Hepialus heppen hepper heptacapsular heptace heptachord heptachronous heptacolic heptacosane heptad heptadecane heptadecyl heptaglot heptagon heptagonal heptagynous heptahedral heptahedrical heptahedron heptahexahedral heptahydrate heptahydrated heptahydric heptahydroxy heptal heptameride Heptameron heptamerous heptameter heptamethylene heptametrical heptanaphthene Heptanchus heptandrous heptane Heptanesian heptangular heptanoic heptanone heptapetalous heptaphyllous heptaploid heptaploidy heptapodic heptapody heptarch heptarchal heptarchic heptarchical heptarchist heptarchy heptasemic heptasepalous heptaspermous heptastich heptastrophic heptastylar heptastyle heptasulphide heptasyllabic Heptateuch heptatomic heptatonic Heptatrema heptavalent heptene hepteris heptine heptite heptitol heptoic heptorite heptose heptoxide Heptranchias heptyl heptylene heptylic heptyne her Heraclean Heracleidan Heracleonite Heracleopolitan Heracleopolite Heracleum Heraclid Heraclidae Heraclidan Heraclitean Heracliteanism Heraclitic Heraclitical Heraclitism Herakles herald heraldess heraldic heraldical heraldically heraldist heraldize heraldress heraldry heraldship herapathite Herat Herb herb herbaceous herbaceously herbage herbaged herbager herbagious herbal herbalism herbalist herbalize herbane herbaria herbarial herbarian herbarism herbarist herbarium herbarize Herbartian Herbartianism herbary Herbert herbescent herbicidal herbicide herbicolous herbiferous herbish herbist Herbivora herbivore herbivority herbivorous herbless herblet herblike herbman herborist herborization herborize herborizer herbose herbosity herbous herbwife herbwoman herby hercogamous hercogamy Herculanean Herculanensian Herculanian Herculean Hercules Herculid Hercynian hercynite herd herdbook herdboy herder herderite herdic herding herdship herdsman herdswoman herdwick here hereabout hereadays hereafter hereafterward hereamong hereat hereaway hereaways herebefore hereby heredipetous heredipety hereditability hereditable hereditably hereditament hereditarian hereditarianism hereditarily hereditariness hereditarist hereditary hereditation hereditative hereditism hereditist hereditivity heredity heredium heredofamilial heredolues heredoluetic heredosyphilis heredosyphilitic heredosyphilogy heredotuberculosis Hereford herefrom heregeld herein hereinabove hereinafter hereinbefore hereinto herem hereness hereniging hereof hereon hereright Herero heresiarch heresimach heresiographer heresiography heresiologer heresiologist heresiology heresy heresyphobia heresyproof heretic heretical heretically hereticalness hereticate heretication hereticator hereticide hereticize hereto heretoch heretofore heretoforetime heretoga heretrix hereunder hereunto hereupon hereward herewith herewithal herile heriot heriotable herisson heritability heritable heritably heritage heritance Heritiera heritor heritress heritrix herl herling herma hermaean hermaic Herman hermaphrodite hermaphroditic hermaphroditical hermaphroditically hermaphroditish hermaphroditism hermaphroditize Hermaphroditus hermeneut hermeneutic hermeneutical hermeneutically hermeneutics hermeneutist Hermes Hermesian Hermesianism Hermetic hermetic hermetical hermetically hermeticism Hermetics Hermetism Hermetist hermidin Herminone Hermione Hermit hermit hermitage hermitary hermitess hermitic hermitical hermitically hermitish hermitism hermitize hermitry hermitship Hermo hermodact hermodactyl Hermogenian hermoglyphic hermoglyphist hermokopid hern Hernandia Hernandiaceae hernandiaceous hernanesell hernani hernant herne hernia hernial Herniaria herniarin herniary herniate herniated herniation hernioenterotomy hernioid herniology herniopuncture herniorrhaphy herniotome herniotomist herniotomy hero heroarchy Herodian herodian Herodianic Herodii Herodiones herodionine heroess herohead herohood heroic heroical heroically heroicalness heroicity heroicly heroicness heroicomic heroicomical heroid Heroides heroify Heroin heroin heroine heroineship heroinism heroinize heroism heroistic heroization heroize herolike heromonger heron heroner heronite heronry heroogony heroologist heroology Herophile Herophilist heroship herotheism herpes Herpestes Herpestinae herpestine herpetic herpetiform herpetism herpetography herpetoid herpetologic herpetological herpetologically herpetologist herpetology herpetomonad Herpetomonas herpetophobia herpetotomist herpetotomy herpolhode Herpotrichia herrengrundite Herrenvolk herring herringbone herringer Herrnhuter hers Herschelian herschelite herse hersed herself hership hersir hertz hertzian Heruli Herulian Hervati Herve Herzegovinian Hesiodic Hesione Hesionidae hesitance hesitancy hesitant hesitantly hesitate hesitater hesitating hesitatingly hesitatingness hesitation hesitative hesitatively hesitatory Hesper Hespera Hesperia Hesperian Hesperic Hesperid hesperid hesperidate hesperidene hesperideous Hesperides Hesperidian hesperidin hesperidium hesperiid Hesperiidae hesperinon Hesperis hesperitin Hesperornis Hesperornithes hesperornithid Hesperornithiformes hesperornithoid Hesperus Hessian hessite hessonite hest Hester hestern hesternal Hesther hesthogenous Hesychasm Hesychast hesychastic het hetaera hetaeria hetaeric hetaerism Hetaerist hetaerist hetaeristic hetaerocracy hetaerolite hetaery heteradenia heteradenic heterakid Heterakis Heteralocha heterandrous heterandry heteratomic heterauxesis heteraxial heteric heterically hetericism hetericist heterism heterization heterize hetero heteroagglutinin heteroalbumose heteroauxin heteroblastic heteroblastically heteroblasty heterocarpism heterocarpous Heterocarpus heterocaseose heterocellular heterocentric heterocephalous Heterocera heterocerc heterocercal heterocercality heterocercy heterocerous heterochiral heterochlamydeous Heterochloridales heterochromatic heterochromatin heterochromatism heterochromatization heterochromatized heterochrome heterochromia heterochromic heterochromosome heterochromous heterochromy heterochronic heterochronism heterochronistic heterochronous heterochrony heterochrosis heterochthon heterochthonous heterocline heteroclinous heteroclital heteroclite heteroclitica heteroclitous Heterocoela heterocoelous Heterocotylea heterocycle heterocyclic heterocyst heterocystous heterodactyl Heterodactylae heterodactylous Heterodera Heterodon heterodont Heterodonta Heterodontidae heterodontism heterodontoid Heterodontus heterodox heterodoxal heterodoxical heterodoxly heterodoxness heterodoxy heterodromous heterodromy heterodyne heteroecious heteroeciously heteroeciousness heteroecism heteroecismal heteroecy heteroepic heteroepy heteroerotic heteroerotism heterofermentative heterofertilization heterogalactic heterogamete heterogametic heterogametism heterogamety heterogamic heterogamous heterogamy heterogangliate heterogen heterogene heterogeneal heterogenean heterogeneity heterogeneous heterogeneously heterogeneousness heterogenesis heterogenetic heterogenic heterogenicity heterogenist heterogenous heterogeny heteroglobulose heterognath Heterognathi heterogone heterogonism heterogonous heterogonously heterogony heterograft heterographic heterographical heterography Heterogyna heterogynal heterogynous heteroicous heteroimmune heteroinfection heteroinoculable heteroinoculation heterointoxication heterokaryon heterokaryosis heterokaryotic heterokinesis heterokinetic Heterokontae heterokontan heterolalia heterolateral heterolecithal heterolith heterolobous heterologic heterological heterologically heterologous heterology heterolysin heterolysis heterolytic heteromallous heteromastigate heteromastigote Heteromeles Heteromera heteromeral Heteromeran Heteromeri heteromeric heteromerous Heterometabola heterometabole heterometabolic heterometabolism heterometabolous heterometaboly heterometric Heteromi Heteromita Heteromorpha Heteromorphae heteromorphic heteromorphism heteromorphite heteromorphosis heteromorphous heteromorphy Heteromya Heteromyaria heteromyarian Heteromyidae Heteromys heteronereid heteronereis Heteroneura heteronomous heteronomously heteronomy heteronuclear heteronym heteronymic heteronymous heteronymously heteronymy heteroousia Heteroousian heteroousian Heteroousiast heteroousious heteropathic heteropathy heteropelmous heteropetalous Heterophaga Heterophagi heterophagous heterophasia heterophemism heterophemist heterophemistic heterophemize heterophemy heterophile heterophoria heterophoric heterophylesis heterophyletic heterophyllous heterophylly heterophyly heterophyte heterophytic Heteropia Heteropidae heteroplasia heteroplasm heteroplastic heteroplasty heteroploid heteroploidy heteropod Heteropoda heteropodal heteropodous heteropolar heteropolarity heteropoly heteroproteide heteroproteose heteropter Heteroptera heteropterous heteroptics heteropycnosis Heterorhachis heteroscope heteroscopy heterosexual heterosexuality heteroside Heterosiphonales heterosis Heterosomata Heterosomati heterosomatous heterosome Heterosomi heterosomous Heterosporeae heterosporic Heterosporium heterosporous heterospory heterostatic heterostemonous Heterostraca heterostracan Heterostraci heterostrophic heterostrophous heterostrophy heterostyled heterostylism heterostylous heterostyly heterosuggestion heterosyllabic heterotactic heterotactous heterotaxia heterotaxic heterotaxis heterotaxy heterotelic heterothallic heterothallism heterothermal heterothermic heterotic heterotopia heterotopic heterotopism heterotopous heterotopy heterotransplant heterotransplantation heterotrich Heterotricha Heterotrichales Heterotrichida heterotrichosis heterotrichous heterotropal heterotroph heterotrophic heterotrophy heterotropia heterotropic heterotropous heterotype heterotypic heterotypical heteroxanthine heteroxenous heterozetesis heterozygosis heterozygosity heterozygote heterozygotic heterozygous heterozygousness hething hetman hetmanate hetmanship hetter hetterly Hettie Hetty heuau Heuchera heugh heulandite heumite heuretic heuristic heuristically Hevea hevi hew hewable hewel hewer hewettite hewhall hewn hewt hex hexa hexabasic Hexabiblos hexabiose hexabromide hexacanth hexacanthous hexacapsular hexacarbon hexace hexachloride hexachlorocyclohexane hexachloroethane hexachord hexachronous hexacid hexacolic Hexacoralla hexacorallan Hexacorallia hexacosane hexacosihedroid hexact hexactinal hexactine hexactinellid Hexactinellida hexactinellidan hexactinelline hexactinian hexacyclic hexad hexadactyle hexadactylic hexadactylism hexadactylous hexadactyly hexadecahedroid hexadecane hexadecanoic hexadecene hexadecyl hexadic hexadiene hexadiyne hexafoil hexaglot hexagon hexagonal hexagonally hexagonial hexagonical hexagonous hexagram Hexagrammidae hexagrammoid Hexagrammos hexagyn Hexagynia hexagynian hexagynous hexahedral hexahedron hexahydrate hexahydrated hexahydric hexahydride hexahydrite hexahydrobenzene hexahydroxy hexakisoctahedron hexakistetrahedron hexameral hexameric hexamerism hexameron hexamerous hexameter hexamethylenamine hexamethylene hexamethylenetetramine hexametral hexametric hexametrical hexametrist hexametrize hexametrographer Hexamita hexamitiasis hexammine hexammino hexanaphthene Hexanchidae Hexanchus Hexandria hexandric hexandrous hexandry hexane hexanedione hexangular hexangularly hexanitrate hexanitrodiphenylamine hexapartite hexaped hexapetaloid hexapetaloideous hexapetalous hexaphyllous hexapla hexaplar hexaplarian hexaplaric hexaploid hexaploidy hexapod Hexapoda hexapodal hexapodan hexapodous hexapody hexapterous hexaradial hexarch hexarchy hexaseme hexasemic hexasepalous hexaspermous hexastemonous hexaster hexastich hexastichic hexastichon hexastichous hexastichy hexastigm hexastylar hexastyle hexastylos hexasulphide hexasyllabic hexatetrahedron Hexateuch Hexateuchal hexathlon hexatomic hexatriacontane hexatriose hexavalent hexecontane hexenbesen hexene hexer hexerei hexeris hexestrol hexicological hexicology hexine hexiological hexiology hexis hexitol hexoctahedral hexoctahedron hexode hexoestrol hexogen hexoic hexokinase hexone hexonic hexosamine hexosaminic hexosan hexose hexosediphosphoric hexosemonophosphoric hexosephosphatase hexosephosphoric hexoylene hexpartite hexyl hexylene hexylic hexylresorcinol hexyne hey heyday Hezron Hezronites hi hia Hianakoto hiant hiatal hiate hiation hiatus Hibbertia hibbin hibernacle hibernacular hibernaculum hibernal hibernate hibernation hibernator Hibernia Hibernian Hibernianism Hibernic Hibernical Hibernically Hibernicism Hibernicize Hibernization Hibernize Hibernologist Hibernology Hibiscus Hibito Hibitos Hibunci hic hicatee hiccup hick hickey hickory Hicksite hickwall Hicoria hidable hidage hidalgism hidalgo hidalgoism hidated hidation Hidatsa hidden hiddenite hiddenly hiddenmost hiddenness hide hideaway hidebind hidebound hideboundness hided hideland hideless hideling hideosity hideous hideously hideousness hider hidling hidlings hidradenitis hidrocystoma hidromancy hidropoiesis hidrosis hidrotic hie hieder hielaman hield hielmite hiemal hiemation Hienz Hieracian Hieracium hieracosphinx hierapicra hierarch hierarchal hierarchic hierarchical hierarchically hierarchism hierarchist hierarchize hierarchy hieratic hieratical hieratically hieraticism hieratite Hierochloe hierocracy hierocratic hierocratical hierodule hierodulic Hierofalco hierogamy hieroglyph hieroglypher hieroglyphic hieroglyphical hieroglyphically hieroglyphist hieroglyphize hieroglyphology hieroglyphy hierogram hierogrammat hierogrammate hierogrammateus hierogrammatic hierogrammatical hierogrammatist hierograph hierographer hierographic hierographical hierography hierolatry hierologic hierological hierologist hierology hieromachy hieromancy hieromnemon hieromonach hieron Hieronymic Hieronymite hieropathic hierophancy hierophant hierophantes hierophantic hierophantically hierophanticly hieros hieroscopy Hierosolymitan Hierosolymite hierurgical hierurgy hifalutin higdon higgaion higginsite higgle higglehaggle higgler higglery high highball highbelia highbinder highborn highboy highbred higher highermost highest highfalutin highfaluting highfalutinism highflying highhanded highhandedly highhandedness highhearted highheartedly highheartedness highish highjack highjacker highland highlander highlandish Highlandman Highlandry highlight highliving highly highman highmoor highmost highness highroad hight hightoby hightop highway highwayman higuero hijack hike hiker Hilaria hilarious hilariously hilariousness hilarity Hilary Hilarymas Hilarytide hilasmic hilch Hilda Hildebrand Hildebrandian Hildebrandic Hildebrandine Hildebrandism Hildebrandist Hildebrandslied Hildegarde hilding hiliferous hill Hillary hillberry hillbilly hillculture hillebrandite Hillel hiller hillet Hillhousia hilliness hillman hillock hillocked hillocky hillsale hillsalesman hillside hillsman hilltop hilltrot hillward hillwoman hilly hilsa hilt hiltless hilum hilus him Hima Himalaya Himalayan Himantopus himation Himawan himp himself himward himwards Himyaric Himyarite Himyaritic hin hinau Hinayana hinch hind hindberry hindbrain hindcast hinddeck hinder hinderance hinderer hinderest hinderful hinderfully hinderingly hinderlands hinderlings hinderlins hinderly hinderment hindermost hindersome hindhand hindhead Hindi hindmost hindquarter hindrance hindsaddle hindsight Hindu Hinduism Hinduize Hindustani hindward hing hinge hingecorner hingeflower hingeless hingelike hinger hingeways hingle hinney hinnible Hinnites hinny hinoid hinoideous hinoki hinsdalite hint hintedly hinter hinterland hintingly hintproof hintzeite Hiodon hiodont Hiodontidae hiortdahlite hip hipbone hipe hiper hiphalt hipless hipmold Hippa hippalectryon hipparch Hipparion Hippeastrum hipped Hippelates hippen Hippia hippian hippiater hippiatric hippiatrical hippiatrics hippiatrist hippiatry hippic Hippidae Hippidion Hippidium hipping hippish hipple hippo Hippobosca hippoboscid Hippoboscidae hippocamp hippocampal hippocampi hippocampine hippocampus Hippocastanaceae hippocastanaceous hippocaust hippocentaur hippocentauric hippocerf hippocoprosterol hippocras Hippocratea Hippocrateaceae hippocrateaceous Hippocratian Hippocratic Hippocratical Hippocratism Hippocrene Hippocrenian hippocrepian hippocrepiform Hippodamia hippodamous hippodrome hippodromic hippodromist hippogastronomy Hippoglosinae Hippoglossidae Hippoglossus hippogriff hippogriffin hippoid hippolite hippolith hippological hippologist hippology Hippolytan Hippolyte Hippolytidae Hippolytus hippomachy hippomancy hippomanes Hippomedon hippomelanin Hippomenes hippometer hippometric hippometry Hipponactean hipponosological hipponosology hippopathological hippopathology hippophagi hippophagism hippophagist hippophagistical hippophagous hippophagy hippophile hippophobia hippopod hippopotami hippopotamian hippopotamic Hippopotamidae hippopotamine hippopotamoid hippopotamus Hipposelinum hippotigrine Hippotigris hippotomical hippotomist hippotomy hippotragine Hippotragus hippurate hippuric hippurid Hippuridaceae Hippuris hippurite Hippurites hippuritic Hippuritidae hippuritoid hippus hippy hipshot hipwort hirable hiragana Hiram Hiramite hircarra hircine hircinous hircocerf hircocervus hircosity hire hired hireless hireling hireman Hiren hirer hirmologion hirmos Hirneola hiro Hirofumi hirondelle Hirotoshi Hiroyuki hirple hirrient hirse hirsel hirsle hirsute hirsuteness hirsuties hirsutism hirsutulous Hirtella hirtellous Hirudin hirudine Hirudinea hirudinean hirudiniculture Hirudinidae hirudinize hirudinoid Hirudo hirundine Hirundinidae hirundinous Hirundo his hish hisingerite hisn Hispa Hispania Hispanic Hispanicism Hispanicize hispanidad Hispaniolate Hispaniolize Hispanist Hispanize Hispanophile Hispanophobe hispid hispidity hispidulate hispidulous Hispinae hiss hisser hissing hissingly hissproof hist histaminase histamine histaminic histidine histie histiocyte histiocytic histioid histiology Histiophoridae Histiophorus histoblast histochemic histochemical histochemistry histoclastic histocyte histodiagnosis histodialysis histodialytic histogen histogenesis histogenetic histogenetically histogenic histogenous histogeny histogram histographer histographic histographical histography histoid histologic histological histologically histologist histology histolysis histolytic histometabasis histomorphological histomorphologically histomorphology histon histonal histone histonomy histopathologic histopathological histopathologist histopathology histophyly histophysiological histophysiology Histoplasma histoplasmin histoplasmosis historial historian historiated historic historical historically historicalness historician historicism historicity historicize historicocabbalistical historicocritical historicocultural historicodogmatic historicogeographical historicophilosophica historicophysical historicopolitical historicoprophetic historicoreligious historics historicus historied historier historiette historify historiograph historiographer historiographership historiographic historiographical historiographically historiography historiological historiology historiometric historiometry historionomer historious historism historize history histotherapist histotherapy histotome histotomy histotrophic histotrophy histotropic histozoic histozyme histrio Histriobdella Histriomastix histrion histrionic histrionical histrionically histrionicism histrionism hit hitch hitcher hitchhike hitchhiker hitchily hitchiness Hitchiti hitchproof hitchy hithe hither hithermost hitherto hitherward Hitlerism Hitlerite hitless Hitoshi hittable hitter Hittite Hittitics Hittitology Hittology hive hiveless hiver hives hiveward Hivite hizz Hler Hlidhskjalf Hlithskjalf Hlorrithi Ho ho hoar hoard hoarder hoarding hoardward hoarfrost hoarhead hoarheaded hoarhound hoarily hoariness hoarish hoarness hoarse hoarsely hoarsen hoarseness hoarstone hoarwort hoary hoaryheaded hoast hoastman hoatzin hoax hoaxee hoaxer hoaxproof hob hobber Hobbesian hobbet Hobbian hobbil Hobbism Hobbist Hobbistical hobble hobblebush hobbledehoy hobbledehoydom hobbledehoyhood hobbledehoyish hobbledehoyishness hobbledehoyism hobbledygee hobbler hobbling hobblingly hobbly hobby hobbyhorse hobbyhorsical hobbyhorsically hobbyism hobbyist hobbyless hobgoblin hoblike hobnail hobnailed hobnailer hobnob hobo hoboism Hobomoco hobthrush hocco Hochelaga Hochheimer hock Hockday hockelty hocker hocket hockey hockshin Hocktide hocky hocus hod hodden hodder hoddle hoddy hodening hodful hodgepodge Hodgkin hodgkinsonite hodiernal hodman hodmandod hodograph hodometer hodometrical hoe hoecake hoedown hoeful hoer hoernesite Hoffmannist Hoffmannite hog hoga hogan Hogarthian hogback hogbush hogfish hogframe hogged hogger hoggerel hoggery hogget hoggie hoggin hoggish hoggishly hoggishness hoggism hoggy hogherd hoghide hoghood hoglike hogling hogmace hogmanay Hogni hognose hognut hogpen hogreeve hogrophyte hogshead hogship hogshouther hogskin hogsty hogward hogwash hogweed hogwort hogyard Hohe Hohenzollern Hohenzollernism Hohn Hohokam hoi hoick hoin hoise hoist hoistaway hoister hoisting hoistman hoistway hoit hoju Hokan hokey hokeypokey hokum holagogue holarctic holard holarthritic holarthritis holaspidean holcad holcodont Holconoti Holcus hold holdable holdall holdback holden holdenite holder holdership holdfast holdfastness holding holdingly holdout holdover holdsman holdup hole holeable Holectypina holectypoid holeless holeman holeproof holer holethnic holethnos holewort holey holia holiday holidayer holidayism holidaymaker holidaymaking holily holiness holing holinight holism holistic holistically holl holla hollaite Holland hollandaise Hollander Hollandish hollandite Hollands Hollantide holler hollin holliper hollo hollock hollong hollow hollower hollowfaced hollowfoot hollowhearted hollowheartedness hollowly hollowness holluschick Holly holly hollyhock Hollywood Hollywooder Hollywoodize holm holmberry holmgang holmia holmic holmium holmos holobaptist holobenthic holoblastic holoblastically holobranch holocaine holocarpic holocarpous holocaust holocaustal holocaustic Holocene holocentrid Holocentridae holocentroid Holocentrus Holocephala holocephalan Holocephali holocephalian holocephalous Holochoanites holochoanitic holochoanoid Holochoanoida holochoanoidal holochordate holochroal holoclastic holocrine holocryptic holocrystalline holodactylic holodedron Holodiscus hologamous hologamy hologastrula hologastrular Holognatha holognathous hologonidium holograph holographic holographical holohedral holohedric holohedrism holohemihedral holohyaline holomastigote Holometabola holometabole holometabolian holometabolic holometabolism holometabolous holometaboly holometer holomorph holomorphic holomorphism holomorphosis holomorphy Holomyaria holomyarian Holomyarii holoparasite holoparasitic Holophane holophane holophotal holophote holophotometer holophrase holophrasis holophrasm holophrastic holophyte holophytic holoplankton holoplanktonic holoplexia holopneustic holoproteide holoptic holoptychian holoptychiid Holoptychiidae Holoptychius holoquinoid holoquinoidal holoquinonic holoquinonoid holorhinal holosaprophyte holosaprophytic holosericeous holoside holosiderite Holosiphona holosiphonate Holosomata holosomatous holospondaic holostean Holostei holosteous holosteric Holosteum Holostomata holostomate holostomatous holostome holostomous holostylic holosymmetric holosymmetrical holosymmetry holosystematic holosystolic holothecal holothoracic Holothuria holothurian Holothuridea holothurioid Holothurioidea holotonia holotonic holotony holotrich Holotricha holotrichal Holotrichida holotrichous holotype holour holozoic Holstein holster holstered holt holy holyday holyokeite holystone holytide homage homageable homager Homalocenchrus homalogonatous homalographic homaloid homaloidal Homalonotus Homalopsinae Homaloptera Homalopterous homalosternal Homalosternii Homam Homaridae homarine homaroid Homarus homatomic homaxial homaxonial homaxonic Homburg home homebody homeborn homebound homebred homecomer homecraft homecroft homecrofter homecrofting homefarer homefelt homegoer homekeeper homekeeping homeland homelander homeless homelessly homelessness homelet homelike homelikeness homelily homeliness homeling homely homelyn homemade homemaker homemaking homeoblastic homeochromatic homeochromatism homeochronous homeocrystalline homeogenic homeogenous homeoid homeoidal homeoidality homeokinesis homeokinetic homeomerous homeomorph homeomorphic homeomorphism homeomorphous homeomorphy homeopath homeopathic homeopathically homeopathician homeopathicity homeopathist homeopathy homeophony homeoplasia homeoplastic homeoplasy homeopolar homeosis homeostasis homeostatic homeotic homeotransplant homeotransplantation homeotype homeotypic homeotypical homeowner homeozoic Homer homer Homerian Homeric Homerical Homerically Homerid Homeridae Homeridian Homerist Homerologist Homerology Homeromastix homeseeker homesick homesickly homesickness homesite homesome homespun homestall homestead homesteader homester homestretch homeward homewardly homework homeworker homewort homey homeyness homicidal homicidally homicide homicidious homiculture homilete homiletic homiletical homiletically homiletics homiliarium homiliary homilist homilite homilize homily hominal hominess Hominian hominid Hominidae hominiform hominify hominine hominisection hominivorous hominoid hominy homish homishness homo homoanisaldehyde homoanisic homoarecoline homobaric homoblastic homoblasty homocarpous homocategoric homocentric homocentrical homocentrically homocerc homocercal homocercality homocercy homocerebrin homochiral homochlamydeous homochromatic homochromatism homochrome homochromic homochromosome homochromous homochromy homochronous homoclinal homocline Homocoela homocoelous homocreosol homocyclic homodermic homodermy homodont homodontism homodox homodoxian homodromal homodrome homodromous homodromy homodynamic homodynamous homodynamy homodyne Homoean Homoeanism homoecious homoeoarchy homoeoblastic homoeochromatic homoeochronous homoeocrystalline homoeogenic homoeogenous homoeography homoeokinesis homoeomerae Homoeomeri homoeomeria homoeomerian homoeomerianism homoeomeric homoeomerical homoeomerous homoeomery homoeomorph homoeomorphic homoeomorphism homoeomorphous homoeomorphy homoeopath homoeopathic homoeopathically homoeopathician homoeopathicity homoeopathist homoeopathy homoeophony homoeophyllous homoeoplasia homoeoplastic homoeoplasy homoeopolar homoeosis homoeotel homoeoteleutic homoeoteleuton homoeotic homoeotopy homoeotype homoeotypic homoeotypical homoeozoic homoerotic homoerotism homofermentative homogametic homogamic homogamous homogamy homogangliate homogen homogenate homogene homogeneal homogenealness homogeneate homogeneity homogeneization homogeneize homogeneous homogeneously homogeneousness homogenesis homogenetic homogenetical homogenic homogenization homogenize homogenizer homogenous homogentisic homogeny homoglot homogone homogonous homogonously homogony homograft homograph homographic homography homohedral homoiotherm homoiothermal homoiothermic homoiothermism homoiothermous homoiousia Homoiousian homoiousian Homoiousianism homoiousious homolateral homolecithal homolegalis homologate homologation homologic homological homologically homologist homologize homologizer homologon homologoumena homologous homolographic homolography homologue homology homolosine homolysin homolysis homomallous homomeral homomerous homometrical homometrically homomorph Homomorpha homomorphic homomorphism homomorphosis homomorphous homomorphy Homoneura homonomous homonomy homonuclear homonym homonymic homonymous homonymously homonymy homoousia Homoousian Homoousianism Homoousianist Homoousiast Homoousion homoousious homopathy homoperiodic homopetalous homophene homophenous homophone homophonic homophonous homophony homophthalic homophylic homophyllous homophyly homopiperonyl homoplasis homoplasmic homoplasmy homoplast homoplastic homoplasy homopolar homopolarity homopolic homopter Homoptera homopteran homopteron homopterous Homorelaps homorganic homoseismal homosexual homosexualism homosexualist homosexuality homosporous homospory Homosteus homostyled homostylic homostylism homostylous homostyly homosystemic homotactic homotatic homotaxeous homotaxia homotaxial homotaxially homotaxic homotaxis homotaxy homothallic homothallism homothetic homothety homotonic homotonous homotonously homotony homotopic homotransplant homotransplantation homotropal homotropous homotypal homotype homotypic homotypical homotypy homovanillic homovanillin homoveratric homoveratrole homozygosis homozygosity homozygote homozygous homozygousness homrai homuncle homuncular homunculus homy Hon honda hondo Honduran Honduranean Honduranian Hondurean Hondurian hone honest honestly honestness honestone honesty honewort honey honeybee honeyberry honeybind honeyblob honeybloom honeycomb honeycombed honeydew honeydewed honeydrop honeyed honeyedly honeyedness honeyfall honeyflower honeyfogle honeyful honeyhearted honeyless honeylike honeylipped honeymoon honeymooner honeymoonlight honeymoonshine honeymoonstruck honeymoony honeymouthed honeypod honeypot honeystone honeysuck honeysucker honeysuckle honeysuckled honeysweet honeyware Honeywood honeywood honeywort hong honied honily honk honker honor Honora honorability honorable honorableness honorableship honorably honorance honoraria honorarily honorarium honorary honoree honorer honoress honorific honorifically honorless honorous honorsman honorworthy hontish hontous Honzo hooch hoochinoo hood hoodcap hooded hoodedness hoodful hoodie hoodless hoodlike hoodlum hoodlumish hoodlumism hoodlumize hoodman hoodmold hoodoo hoodsheaf hoodshy hoodshyness hoodwink hoodwinkable hoodwinker hoodwise hoodwort hooey hoof hoofbeat hoofbound hoofed hoofer hoofiness hoofish hoofless hooflet hooflike hoofmark hoofprint hoofrot hoofs hoofworm hoofy hook hookah hookaroon hooked hookedness hookedwise hooker Hookera hookerman hookers hookheal hookish hookless hooklet hooklike hookmaker hookmaking hookman hooknose hooksmith hooktip hookum hookup hookweed hookwise hookworm hookwormer hookwormy hooky hooligan hooliganism hooliganize hoolock hooly hoon hoonoomaun hoop hooped hooper hooping hoopla hoople hoopless hooplike hoopmaker hoopman hoopoe hoopstick hoopwood hoose hoosegow hoosh Hoosier Hoosierdom Hoosierese Hoosierize hoot hootay hooter hootingly hoove hooven Hooverism Hooverize hoovey hop hopbine hopbush Hopcalite hopcrease hope hoped hopeful hopefully hopefulness hopeite hopeless hopelessly hopelessness hoper Hopi hopi hopingly Hopkinsian Hopkinsianism Hopkinsonian hoplite hoplitic hoplitodromos Hoplocephalus hoplology hoplomachic hoplomachist hoplomachos hoplomachy Hoplonemertea hoplonemertean hoplonemertine Hoplonemertini hopoff hopped hopper hopperburn hopperdozer hopperette hoppergrass hopperings hopperman hoppers hoppestere hoppet hoppingly hoppity hopple hoppy hopscotch hopscotcher hoptoad hopvine hopyard hora horal horary Horatian Horatio Horatius horbachite hordarian hordary horde hordeaceous hordeiform hordein hordenine Hordeum horehound Horim horismology horizometer horizon horizonless horizontal horizontalism horizontality horizontalization horizontalize horizontally horizontalness horizontic horizontical horizontically horizonward horme hormic hormigo hormion hormist hormogon Hormogonales Hormogoneae Hormogoneales hormogonium hormogonous hormonal hormone hormonic hormonize hormonogenesis hormonogenic hormonology hormonopoiesis hormonopoietic hormos horn hornbeam hornbill hornblende hornblendic hornblendite hornblendophyre hornblower hornbook horned hornedness horner hornerah hornet hornety hornfair hornfels hornfish hornful horngeld Hornie hornify hornily horniness horning hornish hornist hornito hornless hornlessness hornlet hornlike hornotine hornpipe hornplant hornsman hornstay hornstone hornswoggle horntail hornthumb horntip hornwood hornwork hornworm hornwort horny hornyhanded hornyhead horograph horographer horography horokaka horologe horologer horologic horological horologically horologiography horologist horologium horologue horology horometrical horometry Horonite horopito horopter horopteric horoptery horoscopal horoscope horoscoper horoscopic horoscopical horoscopist horoscopy Horouta horrendous horrendously horrent horrescent horreum horribility horrible horribleness horribly horrid horridity horridly horridness horrific horrifically horrification horrify horripilant horripilate horripilation horrisonant horror horrorful horrorish horrorist horrorize horrormonger horrormongering horrorous horrorsome horse horseback horsebacker horseboy horsebreaker horsecar horsecloth horsecraft horsedom horsefair horsefettler horsefight horsefish horseflesh horsefly horsefoot horsegate horsehair horsehaired horsehead horseherd horsehide horsehood horsehoof horsejockey horsekeeper horselaugh horselaugher horselaughter horseleech horseless horselike horseload horseman horsemanship horsemastership horsemint horsemonger horseplay horseplayful horsepond horsepower horsepox horser horseshoe horseshoer horsetail horsetongue Horsetown horsetree horseway horseweed horsewhip horsewhipper horsewoman horsewomanship horsewood horsfordite horsify horsily horsiness horsing Horst horst horsy horsyism hortation hortative hortatively hortator hortatorily hortatory Hortense Hortensia hortensial Hortensian hortensian horticultural horticulturally horticulture horticulturist hortite hortonolite hortulan Horvatian hory Hosackia hosanna hose hosed hosel hoseless hoselike hoseman hosier hosiery hosiomartyr hospice hospitable hospitableness hospitably hospitage hospital hospitalary hospitaler hospitalism hospitality hospitalization hospitalize hospitant hospitate hospitation hospitator hospitious hospitium hospitize hospodar hospodariat hospodariate host Hosta hostage hostager hostageship hostel hosteler hostelry hoster hostess hostie hostile hostilely hostileness hostility hostilize hosting hostler hostlership hostlerwife hostless hostly hostry hostship hot hotbed hotblood hotbox hotbrained hotch hotchpot hotchpotch hotchpotchly hotel hoteldom hotelhood hotelier hotelization hotelize hotelkeeper hotelless hotelward hotfoot hothead hotheaded hotheadedly hotheadedness hothearted hotheartedly hotheartedness hothouse hoti hotly hotmouthed hotness hotspur hotspurred Hotta Hottentot Hottentotese Hottentotic Hottentotish Hottentotism hotter hottery hottish Hottonia houbara Houdan hough houghband hougher houghite houghmagandy Houghton hounce hound hounder houndfish hounding houndish houndlike houndman houndsbane houndsberry houndshark houndy houppelande hour hourful hourglass houri hourless hourly housage housal Housatonic house houseball houseboat houseboating housebote housebound houseboy housebreak housebreaker housebreaking housebroke housebroken housebug housebuilder housebuilding housecarl housecoat housecraft housefast housefather housefly houseful housefurnishings household householder householdership householding householdry housekeep housekeeper housekeeperlike housekeeperly housekeeping housel houseleek houseless houselessness houselet houseline houseling housemaid housemaidenly housemaiding housemaidy houseman housemaster housemastership housemate housemating houseminder housemistress housemother housemotherly houseowner houser houseridden houseroom housesmith housetop houseward housewares housewarm housewarmer housewarming housewear housewife housewifeliness housewifely housewifery housewifeship housewifish housewive housework housewright housing Houstonia housty housy houtou houvari Hova hove hovedance hovel hoveler hoven Hovenia hover hoverer hovering hoveringly hoverly how howadji Howard howardite howbeit howdah howder howdie howdy howe Howea howel however howff howish howitzer howk howkit howl howler howlet howling howlingly howlite howso howsoever howsomever hox hoy Hoya hoyden hoydenhood hoydenish hoydenism hoyle hoyman Hrimfaxi Hrothgar Hsi Hsuan Hu huaca huaco huajillo huamuchil huantajayite huaracho Huari huarizo Huashi Huastec Huastecan Huave Huavean hub hubb hubba hubber Hubbite hubble hubbly hubbub hubbuboo hubby Hubert hubmaker hubmaking hubnerite hubristic hubshi huccatoon huchen Huchnom hucho huck huckaback huckle huckleback hucklebacked huckleberry hucklebone huckmuck huckster hucksterage hucksterer hucksteress hucksterize huckstery hud huddle huddledom huddlement huddler huddling huddlingly huddock huddroun huddup Hudibras Hudibrastic Hudibrastically Hudsonia Hudsonian hudsonite hue hued hueful hueless huelessness huer Huey huff huffier huffily huffiness huffingly huffish huffishly huffishness huffle huffler huffy hug huge Hugelia hugelite hugely hugeness hugeous hugeously hugeousness huggable hugger huggermugger huggermuggery Huggin hugging huggingly huggle Hugh Hughes Hughoc Hugo Hugoesque hugsome Huguenot Huguenotic Huguenotism huh Hui huia huipil huisache huiscoyol huitain Huk Hukbalahap huke hula Huldah huldee hulk hulkage hulking hulky hull hullabaloo huller hullock hulloo hulotheism Hulsean hulsite hulster hulu hulver hulverhead hulverheaded hum Huma human humane humanely humaneness humanhood humanics humanification humaniform humaniformian humanify humanish humanism humanist humanistic humanistical humanistically humanitarian humanitarianism humanitarianist humanitarianize humanitary humanitian humanity humanitymonger humanization humanize humanizer humankind humanlike humanly humanness humanoid humate humble humblebee humblehearted humblemouthed humbleness humbler humblie humblingly humbly humbo humboldtilite humboldtine humboldtite humbug humbugability humbugable humbugger humbuggery humbuggism humbuzz humdinger humdrum humdrumminess humdrummish humdrummishness humdudgeon Hume Humean humect humectant humectate humectation humective humeral humeri humeroabdominal humerocubital humerodigital humerodorsal humerometacarpal humeroradial humeroscapular humeroulnar humerus humet humetty humhum humic humicubation humid humidate humidification humidifier humidify humidistat humidity humidityproof humidly humidness humidor humific humification humifuse humify humiliant humiliate humiliating humiliatingly humiliation humiliative humiliator humiliatory humilific humilitude humility humin Humiria Humiriaceae Humiriaceous Humism Humist humistratous humite humlie hummel hummeler hummer hummie humming hummingbird hummock hummocky humor humoral humoralism humoralist humoralistic humoresque humoresquely humorful humorific humorism humorist humoristic humoristical humorize humorless humorlessness humorology humorous humorously humorousness humorproof humorsome humorsomely humorsomeness humourful humous hump humpback humpbacked humped humph Humphrey humpiness humpless humpty humpy humstrum humulene humulone Humulus humus humuslike Hun Hunanese hunch Hunchakist hunchback hunchbacked hunchet hunchy hundi hundred hundredal hundredary hundreder hundredfold hundredman hundredpenny hundredth hundredweight hundredwork hung Hungaria Hungarian hungarite hunger hungerer hungeringly hungerless hungerly hungerproof hungerweed hungrify hungrily hungriness hungry hunh hunk Hunker hunker Hunkerism hunkerous hunkerousness hunkers hunkies Hunkpapa hunks hunky Hunlike Hunnian Hunnic Hunnican Hunnish Hunnishness hunt huntable huntedly Hunter Hunterian hunterlike huntilite hunting huntress huntsman huntsmanship huntswoman Hunyak hup Hupa hupaithric Hura hura hurcheon hurdies hurdis hurdle hurdleman hurdler hurdlewise hurds hure hureaulite hureek Hurf hurgila hurkle hurl hurlbarrow hurled hurler hurley hurleyhouse hurling hurlock hurly Huron huron Huronian hurr hurrah Hurri Hurrian hurricane hurricanize hurricano hurried hurriedly hurriedness hurrier hurrisome hurrock hurroo hurroosh hurry hurryingly hurryproof hursinghar hurst hurt hurtable hurted hurter hurtful hurtfully hurtfulness hurting hurtingest hurtle hurtleberry hurtless hurtlessly hurtlessness hurtlingly hurtsome hurty husband husbandable husbandage husbander husbandfield husbandhood husbandland husbandless husbandlike husbandliness husbandly husbandman husbandress husbandry husbandship huse hush hushable hushaby hushcloth hushedly husheen hushel husher hushful hushfully hushing hushingly hushion husho husk huskanaw husked huskened husker huskershredder huskily huskiness husking huskroot huskwort Husky husky huso huspil huss hussar Hussite Hussitism hussy hussydom hussyness husting hustle hustlecap hustlement hustler hut hutch hutcher hutchet Hutchinsonian Hutchinsonianism hutchinsonite Huterian huthold hutholder hutia hutkeeper hutlet hutment Hutsulian Hutterites Huttonian Huttonianism huttoning huttonweed hutukhtu huvelyk Huxleian Huygenian huzoor Huzvaresh huzz huzza huzzard Hwa Hy hyacinth Hyacinthia hyacinthian hyacinthine Hyacinthus Hyades hyaena Hyaenanche Hyaenarctos Hyaenidae Hyaenodon hyaenodont hyaenodontoid Hyakume hyalescence hyalescent hyaline hyalinization hyalinize hyalinocrystalline hyalinosis hyalite hyalitis hyaloandesite hyalobasalt hyalocrystalline hyalodacite hyalogen hyalograph hyalographer hyalography hyaloid hyaloiditis hyaloliparite hyalolith hyalomelan hyalomucoid Hyalonema hyalophagia hyalophane hyalophyre hyalopilitic hyaloplasm hyaloplasma hyaloplasmic hyalopsite hyalopterous hyalosiderite Hyalospongia hyalotekite hyalotype hyaluronic hyaluronidase Hybanthus Hybla Hyblaea Hyblaean Hyblan hybodont Hybodus hybosis hybrid hybridal hybridation hybridism hybridist hybridity hybridizable hybridization hybridize hybridizer hybridous hydantoate hydantoic hydantoin hydathode hydatid hydatidiform hydatidinous hydatidocele hydatiform hydatigenous Hydatina hydatogenesis hydatogenic hydatogenous hydatoid hydatomorphic hydatomorphism hydatopneumatic hydatopneumatolytic hydatopyrogenic hydatoscopy Hydnaceae hydnaceous hydnocarpate hydnocarpic Hydnocarpus hydnoid Hydnora Hydnoraceae hydnoraceous Hydnum Hydra hydracetin Hydrachna hydrachnid Hydrachnidae hydracid hydracoral hydracrylate hydracrylic Hydractinia hydractinian Hydradephaga hydradephagan hydradephagous hydragogue hydragogy hydramine hydramnion hydramnios Hydrangea Hydrangeaceae hydrangeaceous hydrant hydranth hydrarch hydrargillite hydrargyrate hydrargyria hydrargyriasis hydrargyric hydrargyrism hydrargyrosis hydrargyrum hydrarthrosis hydrarthrus hydrastine Hydrastis hydrate hydrated hydration hydrator hydratropic hydraucone hydraulic hydraulically hydraulician hydraulicity hydraulicked hydraulicon hydraulics hydraulist hydraulus hydrazide hydrazidine hydrazimethylene hydrazine hydrazino hydrazo hydrazoate hydrazobenzene hydrazoic hydrazone hydrazyl hydremia hydremic hydrencephalocele hydrencephaloid hydrencephalus hydria hydriatric hydriatrist hydriatry hydric hydrically Hydrid hydride hydriform hydrindene hydriodate hydriodic hydriodide hydriotaphia Hydriote hydro hydroa hydroadipsia hydroaeric hydroalcoholic hydroaromatic hydroatmospheric hydroaviation hydrobarometer Hydrobates Hydrobatidae hydrobenzoin hydrobilirubin hydrobiological hydrobiologist hydrobiology hydrobiosis hydrobiplane hydrobomb hydroboracite hydroborofluoric hydrobranchiate hydrobromate hydrobromic hydrobromide hydrocarbide hydrocarbon hydrocarbonaceous hydrocarbonate hydrocarbonic hydrocarbonous hydrocarbostyril hydrocardia Hydrocaryaceae hydrocaryaceous hydrocatalysis hydrocauline hydrocaulus hydrocele hydrocellulose hydrocephalic hydrocephalocele hydrocephaloid hydrocephalous hydrocephalus hydrocephaly hydroceramic hydrocerussite Hydrocharidaceae hydrocharidaceous Hydrocharis Hydrocharitaceae hydrocharitaceous Hydrochelidon hydrochemical hydrochemistry hydrochlorate hydrochlorauric hydrochloric hydrochloride hydrochlorplatinic hydrochlorplatinous Hydrochoerus hydrocholecystis hydrocinchonine hydrocinnamic hydrocirsocele hydrocladium hydroclastic Hydrocleis hydroclimate hydrocobalticyanic hydrocoele hydrocollidine hydroconion Hydrocorallia Hydrocorallinae hydrocoralline Hydrocores Hydrocorisae hydrocorisan hydrocotarnine Hydrocotyle hydrocoumaric hydrocupreine hydrocyanate hydrocyanic hydrocyanide hydrocycle hydrocyclic hydrocyclist Hydrocyon hydrocyst hydrocystic Hydrodamalidae Hydrodamalis Hydrodictyaceae Hydrodictyon hydrodrome Hydrodromica hydrodromican hydrodynamic hydrodynamical hydrodynamics hydrodynamometer hydroeconomics hydroelectric hydroelectricity hydroelectrization hydroergotinine hydroextract hydroextractor hydroferricyanic hydroferrocyanate hydroferrocyanic hydrofluate hydrofluoboric hydrofluoric hydrofluorid hydrofluoride hydrofluosilicate hydrofluosilicic hydrofluozirconic hydrofoil hydroforming hydrofranklinite hydrofuge hydrogalvanic hydrogel hydrogen hydrogenase hydrogenate hydrogenation hydrogenator hydrogenic hydrogenide hydrogenium hydrogenization hydrogenize hydrogenolysis Hydrogenomonas hydrogenous hydrogeological hydrogeology hydroglider hydrognosy hydrogode hydrograph hydrographer hydrographic hydrographical hydrographically hydrography hydrogymnastics hydrohalide hydrohematite hydrohemothorax hydroid Hydroida Hydroidea hydroidean hydroiodic hydrokinetic hydrokinetical hydrokinetics hydrol hydrolase hydrolatry Hydrolea Hydroleaceae hydrolize hydrologic hydrological hydrologically hydrologist hydrology hydrolysis hydrolyst hydrolyte hydrolytic hydrolyzable hydrolyzate hydrolyzation hydrolyze hydromagnesite hydromancer hydromancy hydromania hydromaniac hydromantic hydromantical hydromantically hydrome hydromechanical hydromechanics hydromedusa Hydromedusae hydromedusan hydromedusoid hydromel hydromeningitis hydromeningocele hydrometallurgical hydrometallurgically hydrometallurgy hydrometamorphism hydrometeor hydrometeorological hydrometeorology hydrometer hydrometra hydrometric hydrometrical hydrometrid Hydrometridae hydrometry hydromica hydromicaceous hydromonoplane hydromorph hydromorphic hydromorphous hydromorphy hydromotor hydromyelia hydromyelocele hydromyoma Hydromys hydrone hydronegative hydronephelite hydronephrosis hydronephrotic hydronitric hydronitroprussic hydronitrous hydronium hydroparacoumaric Hydroparastatae hydropath hydropathic hydropathical hydropathist hydropathy hydropericarditis hydropericardium hydroperiod hydroperitoneum hydroperitonitis hydroperoxide hydrophane hydrophanous hydrophid Hydrophidae hydrophil hydrophile hydrophilic hydrophilid Hydrophilidae hydrophilism hydrophilite hydrophiloid hydrophilous hydrophily Hydrophinae Hydrophis hydrophobe hydrophobia hydrophobic hydrophobical hydrophobist hydrophobophobia hydrophobous hydrophoby hydrophoid hydrophone Hydrophora hydrophoran hydrophore hydrophoria hydrophorous hydrophthalmia hydrophthalmos hydrophthalmus hydrophylacium hydrophyll Hydrophyllaceae hydrophyllaceous hydrophylliaceous hydrophyllium Hydrophyllum hydrophysometra hydrophyte hydrophytic hydrophytism hydrophyton hydrophytous hydropic hydropical hydropically hydropigenous hydroplane hydroplanula hydroplatinocyanic hydroplutonic hydropneumatic hydropneumatosis hydropneumopericardium hydropneumothorax hydropolyp hydroponic hydroponicist hydroponics hydroponist hydropositive hydropot Hydropotes hydropropulsion hydrops hydropsy Hydropterideae hydroptic hydropult hydropultic hydroquinine hydroquinol hydroquinoline hydroquinone hydrorachis hydrorhiza hydrorhizal hydrorrhachis hydrorrhachitis hydrorrhea hydrorrhoea hydrorubber hydrosalpinx hydrosalt hydrosarcocele hydroscope hydroscopic hydroscopical hydroscopicity hydroscopist hydroselenic hydroselenide hydroselenuret hydroseparation hydrosilicate hydrosilicon hydrosol hydrosomal hydrosomatous hydrosome hydrosorbic hydrosphere hydrospire hydrospiric hydrostat hydrostatic hydrostatical hydrostatically hydrostatician hydrostatics hydrostome hydrosulphate hydrosulphide hydrosulphite hydrosulphocyanic hydrosulphurated hydrosulphuret hydrosulphureted hydrosulphuric hydrosulphurous hydrosulphuryl hydrotachymeter hydrotactic hydrotalcite hydrotasimeter hydrotaxis hydrotechnic hydrotechnical hydrotechnologist hydrotechny hydroterpene hydrotheca hydrothecal hydrotherapeutic hydrotherapeutics hydrotherapy hydrothermal hydrothoracic hydrothorax hydrotic hydrotical hydrotimeter hydrotimetric hydrotimetry hydrotomy hydrotropic hydrotropism hydroturbine hydrotype hydrous hydrovane hydroxamic hydroxamino hydroxide hydroximic hydroxy hydroxyacetic hydroxyanthraquinone hydroxybutyricacid hydroxyketone hydroxyl hydroxylactone hydroxylamine hydroxylate hydroxylation hydroxylic hydroxylization hydroxylize hydrozincite Hydrozoa hydrozoal hydrozoan hydrozoic hydrozoon hydrula Hydruntine Hydrurus Hydrus hydurilate hydurilic hyena hyenadog hyenanchin hyenic hyeniform hyenine hyenoid hyetal hyetograph hyetographic hyetographical hyetographically hyetography hyetological hyetology hyetometer hyetometrograph Hygeia Hygeian hygeiolatry hygeist hygeistic hygeology hygiantic hygiantics hygiastic hygiastics hygieist hygienal hygiene hygienic hygienical hygienically hygienics hygienist hygienization hygienize hygiologist hygiology hygric hygrine hygroblepharic hygrodeik hygroexpansivity hygrograph hygrology hygroma hygromatous hygrometer hygrometric hygrometrical hygrometrically hygrometry hygrophaneity hygrophanous hygrophilous hygrophobia hygrophthalmic hygrophyte hygrophytic hygroplasm hygroplasma hygroscope hygroscopic hygroscopical hygroscopically hygroscopicity hygroscopy hygrostat hygrostatics hygrostomia hygrothermal hygrothermograph hying hyke Hyla hylactic hylactism hylarchic hylarchical hyle hyleg hylegiacal hylic hylicism hylicist Hylidae hylism hylist Hyllus Hylobates hylobatian hylobatic hylobatine Hylocereus Hylocichla Hylocomium Hylodes hylogenesis hylogeny hyloid hylology hylomorphic hylomorphical hylomorphism hylomorphist hylomorphous Hylomys hylopathism hylopathist hylopathy hylophagous hylotheism hylotheist hylotheistic hylotheistical hylotomous hylozoic hylozoism hylozoist hylozoistic hylozoistically hymen Hymenaea Hymenaeus Hymenaic hymenal hymeneal hymeneally hymeneals hymenean hymenial hymenic hymenicolar hymeniferous hymeniophore hymenium Hymenocallis Hymenochaete Hymenogaster Hymenogastraceae hymenogeny hymenoid Hymenolepis hymenomycetal hymenomycete Hymenomycetes hymenomycetoid hymenomycetous hymenophore hymenophorum Hymenophyllaceae hymenophyllaceous Hymenophyllites Hymenophyllum hymenopter Hymenoptera hymenopteran hymenopterist hymenopterological hymenopterologist hymenopterology hymenopteron hymenopterous hymenotomy Hymettian Hymettic hymn hymnal hymnarium hymnary hymnbook hymner hymnic hymnist hymnless hymnlike hymnode hymnodical hymnodist hymnody hymnographer hymnography hymnologic hymnological hymnologically hymnologist hymnology hymnwise hynde hyne hyobranchial hyocholalic hyocholic hyoepiglottic hyoepiglottidean hyoglossal hyoglossus hyoglycocholic hyoid hyoidal hyoidan hyoideal hyoidean hyoides Hyolithes hyolithid Hyolithidae hyolithoid hyomandibula hyomandibular hyomental hyoplastral hyoplastron hyoscapular hyoscine hyoscyamine Hyoscyamus hyosternal hyosternum hyostylic hyostyly hyothere Hyotherium hyothyreoid hyothyroid hyp hypabyssal hypaethral hypaethron hypaethros hypaethrum hypalgesia hypalgia hypalgic hypallactic hypallage hypanthial hypanthium hypantrum Hypapante hypapophysial hypapophysis hyparterial hypaspist hypate hypaton hypautomorphic hypaxial Hypenantron hyper hyperabelian hyperabsorption hyperaccurate hyperacid hyperacidaminuria hyperacidity hyperacoustics hyperaction hyperactive hyperactivity hyperacuity hyperacusia hyperacusis hyperacute hyperacuteness hyperadenosis hyperadiposis hyperadiposity hyperadrenalemia hyperaeolism hyperalbuminosis hyperalgebra hyperalgesia hyperalgesic hyperalgesis hyperalgetic hyperalimentation hyperalkalinity hyperaltruism hyperaminoacidemia hyperanabolic hyperanarchy hyperangelical hyperaphia hyperaphic hyperapophyseal hyperapophysial hyperapophysis hyperarchaeological hyperarchepiscopal hyperazotemia hyperbarbarous hyperbatic hyperbatically hyperbaton hyperbola hyperbolaeon hyperbole hyperbolic hyperbolically hyperbolicly hyperbolism hyperbolize hyperboloid hyperboloidal hyperboreal Hyperborean hyperborean hyperbrachycephal hyperbrachycephalic hyperbrachycephaly hyperbrachycranial hyperbrachyskelic hyperbranchia hyperbrutal hyperbulia hypercalcemia hypercarbamidemia hypercarbureted hypercarburetted hypercarnal hypercatalectic hypercatalexis hypercatharsis hypercathartic hypercathexis hypercenosis hyperchamaerrhine hyperchlorhydria hyperchloric hypercholesterinemia hypercholesterolemia hypercholia hypercivilization hypercivilized hyperclassical hyperclimax hypercoagulability hypercoagulable hypercomplex hypercomposite hyperconcentration hypercone hyperconfident hyperconformist hyperconscientious hyperconscientiousness hyperconscious hyperconsciousness hyperconservatism hyperconstitutional hypercoracoid hypercorrect hypercorrection hypercorrectness hypercosmic hypercreaturely hypercritic hypercritical hypercritically hypercriticism hypercriticize hypercryalgesia hypercube hypercyanotic hypercycle hypercylinder hyperdactyl hyperdactylia hyperdactyly hyperdeify hyperdelicacy hyperdelicate hyperdemocracy hyperdemocratic hyperdeterminant hyperdiabolical hyperdialectism hyperdiapason hyperdiapente hyperdiastole hyperdiatessaron hyperdiazeuxis hyperdicrotic hyperdicrotism hyperdicrotous hyperdimensional hyperdimensionality hyperdissyllable hyperdistention hyperditone hyperdivision hyperdolichocephal hyperdolichocephalic hyperdolichocephaly hyperdolichocranial hyperdoricism hyperdulia hyperdulic hyperdulical hyperelegant hyperelliptic hyperemesis hyperemetic hyperemia hyperemic hyperemotivity hyperemphasize hyperenthusiasm hypereosinophilia hyperephidrosis hyperequatorial hypererethism hyperessence hyperesthesia hyperesthetic hyperethical hypereuryprosopic hypereutectic hypereutectoid hyperexaltation hyperexcitability hyperexcitable hyperexcitement hyperexcursive hyperexophoria hyperextend hyperextension hyperfastidious hyperfederalist hyperfine hyperflexion hyperfocal hyperfunction hyperfunctional hyperfunctioning hypergalactia hypergamous hypergamy hypergenesis hypergenetic hypergeometric hypergeometrical hypergeometry hypergeusia hypergeustia hyperglycemia hyperglycemic hyperglycorrhachia hyperglycosuria hypergoddess hypergol hypergolic Hypergon hypergrammatical hyperhedonia hyperhemoglobinemia hyperhilarious hyperhypocrisy Hypericaceae hypericaceous Hypericales hypericin hypericism Hypericum hypericum hyperidealistic hyperideation hyperimmune hyperimmunity hyperimmunization hyperimmunize hyperingenuity hyperinosis hyperinotic hyperinsulinization hyperinsulinize hyperintellectual hyperintelligence hyperinvolution hyperirritability hyperirritable hyperisotonic hyperite hyperkeratosis hyperkinesia hyperkinesis hyperkinetic hyperlactation hyperleptoprosopic hyperleucocytosis hyperlipemia hyperlipoidemia hyperlithuria hyperlogical hyperlustrous hypermagical hypermakroskelic hypermedication hypermenorrhea hypermetabolism hypermetamorphic hypermetamorphism hypermetamorphosis hypermetamorphotic hypermetaphorical hypermetaphysical hypermetaplasia hypermeter hypermetric hypermetrical hypermetron hypermetrope hypermetropia hypermetropic hypermetropical hypermetropy hypermiraculous hypermixolydian hypermnesia hypermnesic hypermnesis hypermnestic hypermodest hypermonosyllable hypermoral hypermorph hypermorphism hypermorphosis hypermotile hypermotility hypermyotonia hypermyotrophy hypermyriorama hypermystical hypernatural hypernephroma hyperneuria hyperneurotic hypernic hypernitrogenous hypernomian hypernomic hypernormal hypernote hypernutrition Hyperoartia hyperoartian hyperobtrusive hyperodontogeny Hyperoodon hyperoon hyperope hyperopia hyperopic hyperorganic hyperorthognathic hyperorthognathous hyperorthognathy hyperosmia hyperosmic hyperostosis hyperostotic hyperothodox hyperothodoxy Hyperotreta hyperotretan Hyperotreti hyperotretous hyperoxidation hyperoxide hyperoxygenate hyperoxygenation hyperoxygenize hyperpanegyric hyperparasite hyperparasitic hyperparasitism hyperparasitize hyperparoxysm hyperpathetic hyperpatriotic hyperpencil hyperpepsinia hyperper hyperperistalsis hyperperistaltic hyperpersonal hyperphalangeal hyperphalangism hyperpharyngeal hyperphenomena hyperphoria hyperphoric hyperphosphorescence hyperphysical hyperphysically hyperphysics hyperpiesia hyperpiesis hyperpietic hyperpietist hyperpigmentation hyperpigmented hyperpinealism hyperpituitarism hyperplagiarism hyperplane hyperplasia hyperplasic hyperplastic hyperplatyrrhine hyperploid hyperploidy hyperpnea hyperpnoea hyperpolysyllabic hyperpredator hyperprism hyperproduction hyperprognathous hyperprophetical hyperprosexia hyperpulmonary hyperpure hyperpurist hyperpyramid hyperpyretic hyperpyrexia hyperpyrexial hyperquadric hyperrational hyperreactive hyperrealize hyperresonance hyperresonant hyperreverential hyperrhythmical hyperridiculous hyperritualism hypersacerdotal hypersaintly hypersalivation hypersceptical hyperscholastic hyperscrupulosity hypersecretion hypersensibility hypersensitive hypersensitiveness hypersensitivity hypersensitization hypersensitize hypersensual hypersensualism hypersensuous hypersentimental hypersolid hypersomnia hypersonic hypersophisticated hyperspace hyperspatial hyperspeculative hypersphere hyperspherical hyperspiritualizing hypersplenia hypersplenism hypersthene hypersthenia hypersthenic hypersthenite hyperstoic hyperstrophic hypersubtlety hypersuggestibility hypersuperlative hypersurface hypersusceptibility hypersusceptible hypersystole hypersystolic hypertechnical hypertelic hypertely hypertense hypertensin hypertension hypertensive hyperterrestrial hypertetrahedron hyperthermal hyperthermalgesia hyperthermesthesia hyperthermia hyperthermic hyperthermy hyperthesis hyperthetic hyperthetical hyperthyreosis hyperthyroid hyperthyroidism hyperthyroidization hyperthyroidize hypertonia hypertonic hypertonicity hypertonus hypertorrid hypertoxic hypertoxicity hypertragical hypertragically hypertranscendent hypertrichosis hypertridimensional hypertrophic hypertrophied hypertrophous hypertrophy hypertropia hypertropical hypertype hypertypic hypertypical hyperurbanism hyperuresis hypervascular hypervascularity hypervenosity hyperventilate hyperventilation hypervigilant hyperviscosity hypervitalization hypervitalize hypervitaminosis hypervolume hyperwrought hypesthesia hypesthesic hypethral hypha Hyphaene hyphaeresis hyphal hyphedonia hyphema hyphen hyphenate hyphenated hyphenation hyphenic hyphenism hyphenization hyphenize hypho hyphodrome Hyphomycetales hyphomycete Hyphomycetes hyphomycetic hyphomycetous hyphomycosis hypidiomorphic hypidiomorphically hypinosis hypinotic Hypnaceae hypnaceous hypnagogic hypnesthesis hypnesthetic hypnoanalysis hypnobate hypnocyst hypnody hypnoetic hypnogenesis hypnogenetic hypnoid hypnoidal hypnoidization hypnoidize hypnologic hypnological hypnologist hypnology hypnone hypnophobia hypnophobic hypnophoby hypnopompic Hypnos hypnoses hypnosis hypnosperm hypnosporangium hypnospore hypnosporic hypnotherapy hypnotic hypnotically hypnotism hypnotist hypnotistic hypnotizability hypnotizable hypnotization hypnotize hypnotizer hypnotoid hypnotoxin Hypnum hypo hypoacid hypoacidity hypoactive hypoactivity hypoadenia hypoadrenia hypoaeolian hypoalimentation hypoalkaline hypoalkalinity hypoaminoacidemia hypoantimonate hypoazoturia hypobasal hypobatholithic hypobenthonic hypobenthos hypoblast hypoblastic hypobole hypobranchial hypobranchiate hypobromite hypobromous hypobulia hypobulic hypocalcemia hypocarp hypocarpium hypocarpogean hypocatharsis hypocathartic hypocathexis hypocaust hypocentrum hypocephalus Hypochaeris hypochil hypochilium hypochlorhydria hypochlorhydric hypochloric hypochlorite hypochlorous hypochloruria Hypochnaceae hypochnose Hypochnus hypochondria hypochondriac hypochondriacal hypochondriacally hypochondriacism hypochondrial hypochondriasis hypochondriast hypochondrium hypochondry hypochordal hypochromia hypochrosis hypochylia hypocist hypocleidian hypocleidium hypocoelom hypocondylar hypocone hypoconid hypoconule hypoconulid hypocoracoid hypocorism hypocoristic hypocoristical hypocoristically hypocotyl hypocotyleal hypocotyledonary hypocotyledonous hypocotylous hypocrater hypocrateriform hypocraterimorphous Hypocreaceae hypocreaceous Hypocreales hypocrisis hypocrisy hypocrital hypocrite hypocritic hypocritical hypocritically hypocrize hypocrystalline hypocycloid hypocycloidal hypocystotomy hypocytosis hypodactylum hypoderm hypoderma hypodermal hypodermatic hypodermatically hypodermatoclysis hypodermatomy Hypodermella hypodermic hypodermically hypodermis hypodermoclysis hypodermosis hypodermous hypodiapason hypodiapente hypodiastole hypodiatessaron hypodiazeuxis hypodicrotic hypodicrotous hypoditone hypodorian hypodynamia hypodynamic hypoeliminator hypoendocrinism hypoeosinophilia hypoeutectic hypoeutectoid hypofunction hypogastric hypogastrium hypogastrocele hypogeal hypogean hypogee hypogeic hypogeiody hypogene hypogenesis hypogenetic hypogenic hypogenous hypogeocarpous hypogeous hypogeum hypogeusia hypoglobulia hypoglossal hypoglossitis hypoglossus hypoglottis hypoglycemia hypoglycemic hypognathism hypognathous hypogonation hypogynic hypogynium hypogynous hypogyny hypohalous hypohemia hypohidrosis Hypohippus hypohyal hypohyaline hypoid hypoiodite hypoiodous hypoionian hypoischium hypoisotonic hypokeimenometry hypokinesia hypokinesis hypokinetic hypokoristikon hypolemniscus hypoleptically hypoleucocytosis hypolimnion hypolocrian hypolydian hypomania hypomanic hypomelancholia hypomeral hypomere hypomeron hypometropia hypomixolydian hypomnematic hypomnesis hypomochlion hypomorph hypomotility hypomyotonia hyponastic hyponastically hyponasty hyponeuria hyponitric hyponitrite hyponitrous hyponoetic hyponoia hyponome hyponomic hyponychial hyponychium hyponym hyponymic hyponymous Hypoparia hypopepsia hypopepsinia hypopepsy hypopetalous hypopetaly hypophalangism hypophamin hypophamine hypophare hypopharyngeal hypopharynx hypophloeodal hypophloeodic hypophloeous hypophonic hypophonous hypophora hypophoria hypophosphate hypophosphite hypophosphoric hypophosphorous hypophrenia hypophrenic hypophrenosis hypophrygian hypophyge hypophyll hypophyllium hypophyllous hypophyllum hypophyse hypophyseal hypophysectomize hypophysectomy hypophyseoprivic hypophyseoprivous hypophysial hypophysical hypophysics hypophysis hypopial hypopinealism hypopituitarism Hypopitys hypoplankton hypoplanktonic hypoplasia hypoplastic hypoplastral hypoplastron hypoplasty hypoplasy hypoploid hypoploidy hypopodium hypopraxia hypoprosexia hypopselaphesia hypopteral hypopteron hypoptilar hypoptilum hypoptosis hypoptyalism hypopus hypopygial hypopygidium hypopygium hypopyon hyporadial hyporadiolus hyporadius hyporchema hyporchematic hyporcheme hyporchesis hyporhachidian hyporhachis hyporhined hyporit hyporrhythmic hyposcenium hyposcleral hyposcope hyposecretion hyposensitization hyposensitize hyposkeletal hyposmia hypospadiac hypospadias hyposphene hypospray hypostase hypostasis hypostasization hypostasize hypostasy hypostatic hypostatical hypostatically hypostatization hypostatize hyposternal hyposternum hyposthenia hyposthenic hyposthenuria hypostigma hypostilbite hypostoma Hypostomata hypostomatic hypostomatous hypostome hypostomial Hypostomides hypostomous hypostrophe hypostyle hypostypsis hypostyptic hyposulphite hyposulphurous hyposuprarenalism hyposyllogistic hyposynaphe hyposynergia hyposystole hypotactic hypotarsal hypotarsus hypotaxia hypotaxic hypotaxis hypotension hypotensive hypotensor hypotenusal hypotenuse hypothalamic hypothalamus hypothalline hypothallus hypothec hypotheca hypothecal hypothecary hypothecate hypothecation hypothecative hypothecator hypothecatory hypothecial hypothecium hypothenal hypothenar Hypotheria hypothermal hypothermia hypothermic hypothermy hypotheses hypothesis hypothesist hypothesize hypothesizer hypothetic hypothetical hypothetically hypothetics hypothetist hypothetize hypothetizer hypothyreosis hypothyroid hypothyroidism hypotonia hypotonic hypotonicity hypotonus hypotony hypotoxic hypotoxicity hypotrachelium Hypotremata hypotrich Hypotricha Hypotrichida hypotrichosis hypotrichous hypotrochanteric hypotrochoid hypotrochoidal hypotrophic hypotrophy hypotympanic hypotypic hypotypical hypotyposis hypovalve hypovanadate hypovanadic hypovanadious hypovanadous hypovitaminosis hypoxanthic hypoxanthine Hypoxis Hypoxylon hypozeugma hypozeuxis Hypozoa hypozoan hypozoic hyppish hypsibrachycephalic hypsibrachycephalism hypsibrachycephaly hypsicephalic hypsicephaly hypsidolichocephalic hypsidolichocephalism hypsidolichocephaly hypsiliform hypsiloid Hypsilophodon hypsilophodont hypsilophodontid Hypsilophodontidae hypsilophodontoid Hypsiprymninae Hypsiprymnodontinae Hypsiprymnus Hypsistarian hypsistenocephalic hypsistenocephalism hypsistenocephaly hypsobathymetric hypsocephalous hypsochrome hypsochromic hypsochromy hypsodont hypsodontism hypsodonty hypsographic hypsographical hypsography hypsoisotherm hypsometer hypsometric hypsometrical hypsometrically hypsometrist hypsometry hypsophobia hypsophonous hypsophyll hypsophyllar hypsophyllary hypsophyllous hypsophyllum hypsothermometer hypural hyraces hyraceum Hyrachyus hyracid Hyracidae hyraciform Hyracina Hyracodon hyracodont hyracodontid Hyracodontidae hyracodontoid hyracoid Hyracoidea hyracoidean hyracothere hyracotherian Hyracotheriinae Hyracotherium hyrax Hyrcan Hyrcanian hyson hyssop Hyssopus hystazarin hysteralgia hysteralgic hysteranthous hysterectomy hysterelcosis hysteresial hysteresis hysteretic hysteretically hysteria hysteriac Hysteriales hysteric hysterical hysterically hystericky hysterics hysteriform hysterioid Hysterocarpus hysterocatalepsy hysterocele hysterocleisis hysterocrystalline hysterocystic hysterodynia hysterogen hysterogenetic hysterogenic hysterogenous hysterogeny hysteroid hysterolaparotomy hysterolith hysterolithiasis hysterology hysterolysis hysteromania hysterometer hysterometry hysteromorphous hysteromyoma hysteromyomectomy hysteron hysteroneurasthenia hysteropathy hysteropexia hysteropexy hysterophore Hysterophyta hysterophytal hysterophyte hysteroproterize hysteroptosia hysteroptosis hysterorrhaphy hysterorrhexis hysteroscope hysterosis hysterotome hysterotomy hysterotraumatism hystriciasis hystricid Hystricidae Hystricinae hystricine hystricism hystricismus hystricoid hystricomorph Hystricomorpha hystricomorphic hystricomorphous Hystrix I i Iacchic Iacchos Iacchus Iachimo iamatology iamb Iambe iambelegus iambi iambic iambically iambist iambize iambographer iambus Ian Ianthina ianthine ianthinite Ianus iao Iapetus Iapyges Iapygian Iapygii iatraliptic iatraliptics iatric iatrical iatrochemic iatrochemical iatrochemist iatrochemistry iatrological iatrology iatromathematical iatromathematician iatromathematics iatromechanical iatromechanist iatrophysical iatrophysicist iatrophysics iatrotechnics iba Ibad Ibadite Iban Ibanag Iberes Iberi Iberia Iberian Iberic Iberis Iberism iberite ibex ibices ibid Ibididae Ibidinae ibidine Ibidium Ibilao ibis ibisbill Ibo ibolium ibota Ibsenian Ibsenic Ibsenish Ibsenism Ibsenite Ibycter Ibycus Icacinaceae icacinaceous icaco Icacorea Icaria Icarian Icarianism Icarus ice iceberg iceblink iceboat icebone icebound icebox icebreaker icecap icecraft iced icefall icefish icehouse Iceland iceland Icelander Icelandian Icelandic iceleaf iceless Icelidae icelike iceman Iceni icequake iceroot Icerya icework ich Ichneumia ichneumon ichneumoned Ichneumones ichneumonid Ichneumonidae ichneumonidan Ichneumonides ichneumoniform ichneumonized ichneumonoid Ichneumonoidea ichneumonology ichneumous ichneutic ichnite ichnographic ichnographical ichnographically ichnography ichnolite ichnolithology ichnolitic ichnological ichnology ichnomancy icho ichoglan ichor ichorous ichorrhea ichorrhemia ichthulin ichthulinic ichthus ichthyal ichthyic ichthyism ichthyismus ichthyization ichthyized ichthyobatrachian Ichthyocephali ichthyocephalous ichthyocol ichthyocolla ichthyocoprolite Ichthyodea Ichthyodectidae ichthyodian ichthyodont ichthyodorulite ichthyofauna ichthyoform ichthyographer ichthyographia ichthyographic ichthyography ichthyoid ichthyoidal Ichthyoidea Ichthyol ichthyolatrous ichthyolatry ichthyolite ichthyolitic ichthyologic ichthyological ichthyologically ichthyologist ichthyology ichthyomancy ichthyomantic Ichthyomorpha ichthyomorphic ichthyomorphous ichthyonomy ichthyopaleontology ichthyophagan ichthyophagi ichthyophagian ichthyophagist ichthyophagize ichthyophagous ichthyophagy ichthyophile ichthyophobia ichthyophthalmite ichthyophthiriasis ichthyopolism ichthyopolist ichthyopsid Ichthyopsida ichthyopsidan Ichthyopterygia ichthyopterygian ichthyopterygium Ichthyornis Ichthyornithes ichthyornithic Ichthyornithidae Ichthyornithiformes ichthyornithoid ichthyosaur Ichthyosauria ichthyosaurian ichthyosaurid Ichthyosauridae ichthyosauroid Ichthyosaurus ichthyosis ichthyosism ichthyotic Ichthyotomi ichthyotomist ichthyotomous ichthyotomy ichthyotoxin ichthyotoxism ichthytaxidermy ichu icica icicle icicled icily iciness icing icon Iconian iconic iconical iconism iconoclasm iconoclast iconoclastic iconoclastically iconoclasticism iconodule iconodulic iconodulist iconoduly iconograph iconographer iconographic iconographical iconographist iconography iconolater iconolatrous iconolatry iconological iconologist iconology iconomachal iconomachist iconomachy iconomania iconomatic iconomatically iconomaticism iconomatography iconometer iconometric iconometrical iconometrically iconometry iconophile iconophilism iconophilist iconophily iconoplast iconoscope iconostas iconostasion iconostasis iconotype icosahedral Icosandria icosasemic icosian icositetrahedron icosteid Icosteidae icosteine Icosteus icotype icteric icterical Icteridae icterine icteritious icterode icterogenetic icterogenic icterogenous icterohematuria icteroid icterus ictic Ictonyx ictuate ictus icy id Ida Idaean Idaho Idahoan Idaic idalia Idalian idant iddat Iddio ide idea ideaed ideaful ideagenous ideal idealess idealism idealist idealistic idealistical idealistically ideality idealization idealize idealizer idealless ideally idealness ideamonger Idean ideate ideation ideational ideationally ideative ideist idempotent identic identical identicalism identically identicalness identifiable identifiableness identification identifier identify identism identity ideogenetic ideogenical ideogenous ideogeny ideoglyph ideogram ideogrammic ideograph ideographic ideographical ideographically ideography ideolatry ideologic ideological ideologically ideologist ideologize ideologue ideology ideomotion ideomotor ideophone ideophonetics ideophonous ideoplastia ideoplastic ideoplastics ideoplasty ideopraxist ides idgah idiasm idic idiobiology idioblast idioblastic idiochromatic idiochromatin idiochromosome idiocrasis idiocrasy idiocratic idiocratical idiocy idiocyclophanous idioelectric idioelectrical Idiogastra idiogenesis idiogenetic idiogenous idioglossia idioglottic idiograph idiographic idiographical idiohypnotism idiolalia idiolatry idiologism idiolysin idiom idiomatic idiomatical idiomatically idiomaticalness idiomelon idiometer idiomography idiomology idiomorphic idiomorphically idiomorphism idiomorphous idiomuscular idiopathetic idiopathic idiopathical idiopathically idiopathy idiophanism idiophanous idiophonic idioplasm idioplasmatic idioplasmic idiopsychological idiopsychology idioreflex idiorepulsive idioretinal idiorrhythmic Idiosepiidae Idiosepion idiosome idiospasm idiospastic idiostatic idiosyncrasy idiosyncratic idiosyncratical idiosyncratically idiot idiotcy idiothalamous idiothermous idiothermy idiotic idiotical idiotically idioticalness idioticon idiotish idiotism idiotize idiotropian idiotry idiotype idiotypic Idism Idist Idistic idite iditol idle idleful idleheaded idlehood idleman idlement idleness idler idleset idleship idlety idlish idly Ido idocrase Idoism Idoist Idoistic idol idola idolaster idolater idolatress idolatric idolatrize idolatrizer idolatrous idolatrously idolatrousness idolatry idolify idolism idolist idolistic idolization idolize idolizer idoloclast idoloclastic idolodulia idolographical idololatrical idololatry idolomancy idolomania idolothyte idolothytic idolous idolum Idomeneus idoneal idoneity idoneous idoneousness idorgan idosaccharic idose Idotea Idoteidae Idothea Idotheidae idrialin idrialine idrialite Idrisid Idrisite idryl Idumaean idyl idyler idylism idylist idylize idyllian idyllic idyllical idyllically idyllicism ie Ierne if ife iffy Ifugao Igara Igbira Igdyr igelstromite igloo Iglulirmiut ignatia Ignatian Ignatianist Ignatius ignavia igneoaqueous igneous ignescent ignicolist igniferous igniferousness igniform ignifuge ignify ignigenous ignipotent ignipuncture ignitability ignite igniter ignitibility ignitible ignition ignitive ignitor ignitron ignivomous ignivomousness ignobility ignoble ignobleness ignoblesse ignobly ignominious ignominiously ignominiousness ignominy ignorable ignoramus ignorance ignorant Ignorantine ignorantism ignorantist ignorantly ignorantness ignoration ignore ignorement ignorer ignote Igorot iguana Iguania iguanian iguanid Iguanidae iguaniform Iguanodon iguanodont Iguanodontia Iguanodontidae iguanodontoid Iguanodontoidea iguanoid Iguvine ihi Ihlat ihleite ihram iiwi ijma Ijo ijolite Ijore ijussite ikat Ike ikey ikeyness Ikhwan ikona ikra Ila ileac ileectomy ileitis ileocaecal ileocaecum ileocolic ileocolitis ileocolostomy ileocolotomy ileon ileosigmoidostomy ileostomy ileotomy ilesite ileum ileus ilex ilia Iliac iliac iliacus Iliad Iliadic Iliadist Iliadize iliahi ilial Ilian iliau Ilicaceae ilicaceous ilicic ilicin ilima iliocaudal iliocaudalis iliococcygeal iliococcygeus iliococcygian iliocostal iliocostalis iliodorsal iliofemoral iliohypogastric ilioinguinal ilioischiac ilioischiatic iliolumbar iliopectineal iliopelvic ilioperoneal iliopsoas iliopsoatic iliopubic iliosacral iliosciatic ilioscrotal iliospinal iliotibial iliotrochanteric Ilissus ilium ilk ilka ilkane ill illaborate illachrymable illachrymableness Illaenus Illano Illanun illapsable illapse illapsive illaqueate illaqueation illation illative illatively illaudable illaudably illaudation illaudatory Illecebraceae illecebrous illeck illegal illegality illegalize illegally illegalness illegibility illegible illegibleness illegibly illegitimacy illegitimate illegitimately illegitimateness illegitimation illegitimatize illeism illeist illess illfare illguide illiberal illiberalism illiberality illiberalize illiberally illiberalness illicit illicitly illicitness Illicium illimitability illimitable illimitableness illimitably illimitate illimitation illimited illimitedly illimitedness illinition illinium Illinoian Illinois Illinoisan Illinoisian Illipe illipene illiquation illiquid illiquidity illiquidly illish illision illiteracy illiteral illiterate illiterately illiterateness illiterature illium illness illocal illocality illocally illogic illogical illogicality illogically illogicalness illogician illogicity Illoricata illoricate illoricated illoyal illoyalty illth illucidate illucidation illucidative illude illudedly illuder illume illumer illuminability illuminable illuminance illuminant illuminate illuminated illuminati illuminating illuminatingly illumination illuminational illuminatism illuminatist illuminative illuminato illuminator illuminatory illuminatus illumine illuminee illuminer Illuminism illuminist Illuministic Illuminize illuminometer illuminous illupi illure illurement illusible illusion illusionable illusional illusionary illusioned illusionism illusionist illusionistic illusive illusively illusiveness illusor illusorily illusoriness illusory illustrable illustratable illustrate illustration illustrational illustrative illustratively illustrator illustratory illustratress illustre illustricity illustrious illustriously illustriousness illutate illutation illuvial illuviate illuviation illy Illyrian Illyric ilmenite ilmenitite ilmenorutile Ilocano Ilokano Iloko Ilongot ilot Ilpirra ilvaite Ilya Ilysanthes Ilysia Ilysiidae ilysioid Ima image imageable imageless imager imagerial imagerially imagery imaginability imaginable imaginableness imaginably imaginal imaginant imaginarily imaginariness imaginary imaginate imagination imaginational imaginationalism imaginative imaginatively imaginativeness imaginator imagine imaginer imagines imaginist imaginous imagism imagist imagistic imago imam imamah imamate imambarah imamic imamship Imantophyllum imaret imbalance imban imband imbannered imbarge imbark imbarn imbased imbastardize imbat imbauba imbe imbecile imbecilely imbecilic imbecilitate imbecility imbed imbellious imber imbibe imbiber imbibition imbibitional imbibitory imbirussu imbitter imbitterment imbolish imbondo imbonity imbordure imborsation imbosom imbower imbreathe imbreviate imbrex imbricate imbricated imbricately imbrication imbricative imbroglio imbrue imbruement imbrute imbrutement imbue imbuement imburse imbursement Imer Imerina Imeritian imi imidazole imidazolyl imide imidic imidogen iminazole imine imino iminohydrin imitability imitable imitableness imitancy imitant imitate imitatee imitation imitational imitationist imitative imitatively imitativeness imitator imitatorship imitatress imitatrix immaculacy immaculance immaculate immaculately immaculateness immalleable immanacle immanation immane immanely immanence immanency immaneness immanent immanental immanentism immanentist immanently Immanes immanifest immanifestness immanity immantle Immanuel immarble immarcescible immarcescibly immarcibleness immarginate immask immatchable immaterial immaterialism immaterialist immateriality immaterialize immaterially immaterialness immaterials immateriate immatriculate immatriculation immature immatured immaturely immatureness immaturity immeability immeasurability immeasurable immeasurableness immeasurably immeasured immechanical immechanically immediacy immedial immediate immediately immediateness immediatism immediatist immedicable immedicableness immedicably immelodious immember immemorable immemorial immemorially immense immensely immenseness immensity immensive immensurability immensurable immensurableness immensurate immerd immerge immergence immergent immerit immerited immeritorious immeritoriously immeritous immerse immersement immersible immersion immersionism immersionist immersive immethodic immethodical immethodically immethodicalness immethodize immetrical immetrically immetricalness immew immi immigrant immigrate immigration immigrator immigratory imminence imminency imminent imminently imminentness immingle imminution immiscibility immiscible immiscibly immission immit immitigability immitigable immitigably immix immixable immixture immobile immobility immobilization immobilize immoderacy immoderate immoderately immoderateness immoderation immodest immodestly immodesty immodulated immolate immolation immolator immoment immomentous immonastered immoral immoralism immoralist immorality immoralize immorally immorigerous immorigerousness immortability immortable immortal immortalism immortalist immortality immortalizable immortalization immortalize immortalizer immortally immortalness immortalship immortelle immortification immortified immotile immotioned immotive immound immovability immovable immovableness immovably immund immundity immune immunist immunity immunization immunize immunochemistry immunogen immunogenetic immunogenetics immunogenic immunogenically immunogenicity immunologic immunological immunologically immunologist immunology immunoreaction immunotoxin immuration immure immurement immusical immusically immutability immutable immutableness immutably immutation immute immutilate immutual Imogen Imolinda imonium imp impacability impacable impack impackment impact impacted impaction impactionize impactment impactual impages impaint impair impairable impairer impairment impala impalace impalatable impale impalement impaler impall impalm impalpability impalpable impalpably impalsy impaludism impanate impanation impanator impane impanel impanelment impapase impapyrate impar imparadise imparalleled imparasitic impardonable impardonably imparidigitate imparipinnate imparisyllabic imparity impark imparkation imparl imparlance imparsonee impart impartable impartance impartation imparter impartial impartialism impartialist impartiality impartially impartialness impartibilibly impartibility impartible impartibly imparticipable impartite impartive impartivity impartment impassability impassable impassableness impassably impasse impassibilibly impassibility impassible impassibleness impassion impassionable impassionate impassionately impassioned impassionedly impassionedness impassionment impassive impassively impassiveness impassivity impastation impaste impasto impasture impaternate impatible impatience impatiency Impatiens impatient Impatientaceae impatientaceous impatiently impatientness impatronize impave impavid impavidity impavidly impawn impayable impeach impeachability impeachable impeacher impeachment impearl impeccability impeccable impeccably impeccance impeccancy impeccant impectinate impecuniary impecuniosity impecunious impecuniously impecuniousness impedance impede impeder impedibility impedible impedient impediment impedimenta impedimental impedimentary impeding impedingly impedite impedition impeditive impedometer impeevish impel impellent impeller impen impend impendence impendency impendent impending impenetrability impenetrable impenetrableness impenetrably impenetrate impenetration impenetrative impenitence impenitent impenitently impenitentness impenitible impenitibleness impennate Impennes impent imperance imperant Imperata imperate imperation imperatival imperative imperatively imperativeness imperator imperatorial imperatorially imperatorian imperatorious imperatorship imperatory imperatrix imperceivable imperceivableness imperceivably imperceived imperceiverant imperceptibility imperceptible imperceptibleness imperceptibly imperception imperceptive imperceptiveness imperceptivity impercipience impercipient imperence imperent imperfect imperfected imperfectibility imperfectible imperfection imperfectious imperfective imperfectly imperfectness imperforable Imperforata imperforate imperforated imperforation imperformable imperia imperial imperialin imperialine imperialism imperialist imperialistic imperialistically imperiality imperialization imperialize imperially imperialness imperialty imperil imperilment imperious imperiously imperiousness imperish imperishability imperishable imperishableness imperishably imperite imperium impermanence impermanency impermanent impermanently impermeability impermeabilization impermeabilize impermeable impermeableness impermeably impermeated impermeator impermissible impermutable imperscriptible imperscrutable impersonable impersonal impersonality impersonalization impersonalize impersonally impersonate impersonation impersonative impersonator impersonatress impersonatrix impersonification impersonify impersonization impersonize imperspicuity imperspicuous imperspirability imperspirable impersuadable impersuadableness impersuasibility impersuasible impersuasibleness impersuasibly impertinacy impertinence impertinency impertinent impertinently impertinentness impertransible imperturbability imperturbable imperturbableness imperturbably imperturbation imperturbed imperverse impervertible impervestigable imperviability imperviable imperviableness impervial impervious imperviously imperviousness impest impestation impester impeticos impetiginous impetigo impetition impetrate impetration impetrative impetrator impetratory impetre impetulant impetulantly impetuosity impetuous impetuously impetuousness impetus Impeyan imphee impi impicture impierceable impiety impignorate impignoration impinge impingement impingence impingent impinger impinguate impious impiously impiousness impish impishly impishness impiteous impitiably implacability implacable implacableness implacably implacement implacental Implacentalia implacentate implant implantation implanter implastic implasticity implate implausibility implausible implausibleness implausibly impleach implead impleadable impleader impledge implement implemental implementation implementiferous implete impletion impletive implex impliable implial implicant implicate implicately implicateness implication implicational implicative implicatively implicatory implicit implicitly implicitness impliedly impliedness impling implode implodent implorable imploration implorator imploratory implore implorer imploring imploringly imploringness implosion implosive implosively implume implumed implunge impluvium imply impocket impofo impoison impoisoner impolarizable impolicy impolished impolite impolitely impoliteness impolitic impolitical impolitically impoliticalness impoliticly impoliticness impollute imponderabilia imponderability imponderable imponderableness imponderably imponderous impone imponent impoor impopular impopularly imporosity imporous import importability importable importableness importably importance importancy important importantly importation importer importless importment importraiture importray importunacy importunance importunate importunately importunateness importunator importune importunely importunement importuner importunity imposable imposableness imposal impose imposement imposer imposing imposingly imposingness imposition impositional impositive impossibilification impossibilism impossibilist impossibilitate impossibility impossible impossibleness impossibly impost imposter imposterous impostor impostorism impostorship impostress impostrix impostrous impostumate impostumation impostume imposture imposturism imposturous imposure impot impotable impotence impotency impotent impotently impotentness impound impoundable impoundage impounder impoundment impoverish impoverisher impoverishment impracticability impracticable impracticableness impracticably impractical impracticality impracticalness imprecant imprecate imprecation imprecator imprecatorily imprecatory imprecise imprecisely imprecision impredicability impredicable impreg impregn impregnability impregnable impregnableness impregnably impregnant impregnate impregnation impregnative impregnator impregnatory imprejudice impremeditate impreparation impresa impresario imprescience imprescribable imprescriptibility imprescriptible imprescriptibly imprese impress impressable impressedly impresser impressibility impressible impressibleness impressibly impression impressionability impressionable impressionableness impressionably impressional impressionalist impressionality impressionally impressionary impressionism impressionist impressionistic impressionistically impressionless impressive impressively impressiveness impressment impressor impressure imprest imprestable impreventability impreventable imprevisibility imprevisible imprevision imprimatur imprime imprimitive imprimitivity imprint imprinter imprison imprisonable imprisoner imprisonment improbability improbabilize improbable improbableness improbably improbation improbative improbatory improbity improcreant improcurability improcurable improducible improficience improficiency improgressive improgressively improgressiveness improlificical impromptitude impromptu impromptuary impromptuist improof improper improperation improperly improperness impropriate impropriation impropriator impropriatrix impropriety improvability improvable improvableness improvably improve improvement improver improvership improvidence improvident improvidentially improvidently improving improvingly improvisate improvisation improvisational improvisator improvisatorial improvisatorially improvisatorize improvisatory improvise improvisedly improviser improvision improviso improvisor imprudence imprudency imprudent imprudential imprudently imprudentness impship impuberal impuberate impuberty impubic impudence impudency impudent impudently impudentness impudicity impugn impugnability impugnable impugnation impugner impugnment impuissance impuissant impulse impulsion impulsive impulsively impulsiveness impulsivity impulsory impunctate impunctual impunctuality impunely impunible impunibly impunity impure impurely impureness impuritan impuritanism impurity imputability imputable imputableness imputably imputation imputative imputatively imputativeness impute imputedly imputer imputrescence imputrescibility imputrescible imputrid impy imshi imsonic imu in inability inabordable inabstinence inaccentuated inaccentuation inacceptable inaccessibility inaccessible inaccessibleness inaccessibly inaccordance inaccordancy inaccordant inaccordantly inaccuracy inaccurate inaccurately inaccurateness inachid Inachidae inachoid Inachus inacquaintance inacquiescent inactinic inaction inactionist inactivate inactivation inactive inactively inactiveness inactivity inactuate inactuation inadaptability inadaptable inadaptation inadaptive inadept inadequacy inadequate inadequately inadequateness inadequation inadequative inadequatively inadherent inadhesion inadhesive inadjustability inadjustable inadmissibility inadmissible inadmissibly inadventurous inadvertence inadvertency inadvertent inadvertently inadvisability inadvisable inadvisableness inadvisedly inaesthetic inaffability inaffable inaffectation inagglutinability inagglutinable inaggressive inagile inaidable inaja inalacrity inalienability inalienable inalienableness inalienably inalimental inalterability inalterable inalterableness inalterably inamissibility inamissible inamissibleness inamorata inamorate inamoration inamorato inamovability inamovable inane inanely inanga inangulate inanimadvertence inanimate inanimated inanimately inanimateness inanimation inanition inanity inantherate inapathy inapostate inapparent inappealable inappeasable inappellability inappellable inappendiculate inapperceptible inappertinent inappetence inappetency inappetent inappetible inapplicability inapplicable inapplicableness inapplicably inapplication inapposite inappositely inappositeness inappreciable inappreciably inappreciation inappreciative inappreciatively inappreciativeness inapprehensible inapprehension inapprehensive inapprehensiveness inapproachability inapproachable inapproachably inappropriable inappropriableness inappropriate inappropriately inappropriateness inapt inaptitude inaptly inaptness inaqueous inarable inarch inarculum inarguable inarguably inarm inarticulacy Inarticulata inarticulate inarticulated inarticulately inarticulateness inarticulation inartificial inartificiality inartificially inartificialness inartistic inartistical inartisticality inartistically inasmuch inassimilable inassimilation inassuageable inattackable inattention inattentive inattentively inattentiveness inaudibility inaudible inaudibleness inaudibly inaugur inaugural inaugurate inauguration inaugurative inaugurator inauguratory inaugurer inaurate inauration inauspicious inauspiciously inauspiciousness inauthentic inauthenticity inauthoritative inauthoritativeness inaxon inbe inbeaming inbearing inbeing inbending inbent inbirth inblow inblowing inblown inboard inbond inborn inbound inbread inbreak inbreaking inbreathe inbreather inbred inbreed inbring inbringer inbuilt inburning inburnt inburst inby Inca Incaic incalculability incalculable incalculableness incalculably incalescence incalescency incalescent incaliculate incalver incalving incameration Incan incandent incandesce incandescence incandescency incandescent incandescently incanous incantation incantational incantator incantatory incanton incapability incapable incapableness incapably incapacious incapaciousness incapacitate incapacitation incapacity incapsulate incapsulation incaptivate incarcerate incarceration incarcerator incardinate incardination Incarial incarmined incarn incarnadine incarnant incarnate incarnation incarnational incarnationist incarnative Incarvillea incase incasement incast incatenate incatenation incaution incautious incautiously incautiousness incavate incavated incavation incavern incedingly incelebrity incendiarism incendiary incendivity incensation incense incenseless incensement incensory incensurable incensurably incenter incentive incentively incentor incept inception inceptive inceptively inceptor inceration incertitude incessable incessably incessancy incessant incessantly incessantness incest incestuous incestuously incestuousness inch inched inchmeal inchoacy inchoant inchoate inchoately inchoateness inchoation inchoative inchpin inchworm incide incidence incident incidental incidentalist incidentally incidentalness incidentless incidently incinerable incinerate incineration incinerator incipience incipient incipiently incircumscription incircumspect incircumspection incircumspectly incircumspectness incisal incise incisely incisiform incision incisive incisively incisiveness incisor incisorial incisory incisure incitability incitable incitant incitation incite incitement inciter incitingly incitive incitress incivic incivility incivilization incivism inclemency inclement inclemently inclementness inclinable inclinableness inclination inclinational inclinator inclinatorily inclinatorium inclinatory incline incliner inclinograph inclinometer inclip inclose inclosure includable include included includedness includer inclusa incluse inclusion inclusionist inclusive inclusively inclusiveness inclusory incoagulable incoalescence incoercible incog incogent incogitability incogitable incogitancy incogitant incogitantly incogitative incognita incognitive incognito incognizability incognizable incognizance incognizant incognoscent incognoscibility incognoscible incoherence incoherency incoherent incoherentific incoherently incoherentness incohering incohesion incohesive incoincidence incoincident incombustibility incombustible incombustibleness incombustibly incombustion income incomeless incomer incoming incommensurability incommensurable incommensurableness incommensurably incommensurate incommensurately incommensurateness incommiscibility incommiscible incommodate incommodation incommode incommodement incommodious incommodiously incommodiousness incommodity incommunicability incommunicable incommunicableness incommunicably incommunicado incommunicative incommunicatively incommunicativeness incommutability incommutable incommutableness incommutably incompact incompactly incompactness incomparability incomparable incomparableness incomparably incompassionate incompassionately incompassionateness incompatibility incompatible incompatibleness incompatibly incompendious incompensated incompensation incompetence incompetency incompetent incompetently incompetentness incompletability incompletable incompletableness incomplete incompleted incompletely incompleteness incompletion incomplex incompliance incompliancy incompliant incompliantly incomplicate incomplying incomposed incomposedly incomposedness incomposite incompossibility incompossible incomprehended incomprehending incomprehendingly incomprehensibility incomprehensible incomprehensibleness incomprehensibly incomprehension incomprehensive incomprehensively incomprehensiveness incompressibility incompressible incompressibleness incompressibly incomputable inconcealable inconceivability inconceivable inconceivableness inconceivably inconcinnate inconcinnately inconcinnity inconcinnous inconcludent inconcluding inconclusion inconclusive inconclusively inconclusiveness inconcrete inconcurrent inconcurring incondensability incondensable incondensibility incondensible incondite inconditionate inconditioned inconducive inconfirm inconformable inconformably inconformity inconfused inconfusedly inconfusion inconfutable inconfutably incongealable incongealableness incongenerous incongenial incongeniality inconglomerate incongruence incongruent incongruently incongruity incongruous incongruously incongruousness inconjoinable inconnected inconnectedness inconnu inconscience inconscient inconsciently inconscious inconsciously inconsecutive inconsecutively inconsecutiveness inconsequence inconsequent inconsequential inconsequentiality inconsequentially inconsequently inconsequentness inconsiderable inconsiderableness inconsiderably inconsiderate inconsiderately inconsiderateness inconsideration inconsidered inconsistence inconsistency inconsistent inconsistently inconsistentness inconsolability inconsolable inconsolableness inconsolably inconsolate inconsolately inconsonance inconsonant inconsonantly inconspicuous inconspicuously inconspicuousness inconstancy inconstant inconstantly inconstantness inconstruable inconsultable inconsumable inconsumably inconsumed incontaminable incontaminate incontaminateness incontemptible incontestability incontestable incontestableness incontestably incontinence incontinency incontinent incontinently incontinuity incontinuous incontracted incontractile incontraction incontrollable incontrollably incontrolled incontrovertibility incontrovertible incontrovertibleness incontrovertibly inconvenience inconveniency inconvenient inconveniently inconvenientness inconversable inconversant inconversibility inconvertibility inconvertible inconvertibleness inconvertibly inconvinced inconvincedly inconvincibility inconvincible inconvincibly incopresentability incopresentable incoronate incoronated incoronation incorporable incorporate incorporated incorporatedness incorporation incorporative incorporator incorporeal incorporealism incorporealist incorporeality incorporealize incorporeally incorporeity incorporeous incorpse incorrect incorrection incorrectly incorrectness incorrespondence incorrespondency incorrespondent incorresponding incorrigibility incorrigible incorrigibleness incorrigibly incorrodable incorrodible incorrosive incorrupt incorrupted incorruptibility Incorruptible incorruptible incorruptibleness incorruptibly incorruption incorruptly incorruptness incourteous incourteously incrash incrassate incrassated incrassation incrassative increasable increasableness increase increasedly increaseful increasement increaser increasing increasingly increate increately increative incredibility incredible incredibleness incredibly increditable incredited incredulity incredulous incredulously incredulousness increep incremate incremation increment incremental incrementation increpate increpation increscence increscent increst incretion incretionary incretory incriminate incrimination incriminator incriminatory incross incrossbred incrossing incrotchet incruent incruental incruentous incrust incrustant Incrustata incrustate incrustation incrustator incrustive incrustment incrystal incrystallizable incubate incubation incubational incubative incubator incubatorium incubatory incubi incubous incubus incudal incudate incudectomy incudes incudomalleal incudostapedial inculcate inculcation inculcative inculcator inculcatory inculpability inculpable inculpableness inculpably inculpate inculpation inculpative inculpatory incult incultivation inculture incumbence incumbency incumbent incumbentess incumbently incumber incumberment incumbrance incumbrancer incunable incunabula incunabular incunabulist incunabulum incuneation incur incurability incurable incurableness incurably incuriosity incurious incuriously incuriousness incurrable incurrence incurrent incurse incursion incursionist incursive incurvate incurvation incurvature incurve incus incuse incut incutting Ind indaba indaconitine indagate indagation indagative indagator indagatory indamine indan indane Indanthrene indanthrene indart indazin indazine indazol indazole inde indebt indebted indebtedness indebtment indecence indecency indecent indecently indecentness Indecidua indeciduate indeciduous indecipherability indecipherable indecipherableness indecipherably indecision indecisive indecisively indecisiveness indeclinable indeclinableness indeclinably indecomponible indecomposable indecomposableness indecorous indecorously indecorousness indecorum indeed indeedy indefaceable indefatigability indefatigable indefatigableness indefatigably indefeasibility indefeasible indefeasibleness indefeasibly indefeatable indefectibility indefectible indefectibly indefective indefensibility indefensible indefensibleness indefensibly indefensive indeficiency indeficient indeficiently indefinable indefinableness indefinably indefinite indefinitely indefiniteness indefinitive indefinitively indefinitiveness indefinitude indefinity indeflectible indefluent indeformable indehiscence indehiscent indelectable indelegability indelegable indeliberate indeliberately indeliberateness indeliberation indelibility indelible indelibleness indelibly indelicacy indelicate indelicately indelicateness indemnification indemnificator indemnificatory indemnifier indemnify indemnitee indemnitor indemnity indemnization indemoniate indemonstrability indemonstrable indemonstrableness indemonstrably indene indent indentation indented indentedly indentee indenter indention indentment indentor indenture indentured indentureship indentwise independable independence independency independent independentism independently Independista indeposable indeprehensible indeprivability indeprivable inderivative indescribability indescribable indescribableness indescribably indescript indescriptive indesert indesignate indesirable indestructibility indestructible indestructibleness indestructibly indetectable indeterminable indeterminableness indeterminably indeterminacy indeterminate indeterminately indeterminateness indetermination indeterminative indetermined indeterminism indeterminist indeterministic indevirginate indevoted indevotion indevotional indevout indevoutly indevoutness index indexed indexer indexical indexically indexing indexless indexlessness indexterity India indiadem Indiaman Indian Indiana indianaite Indianan Indianeer Indianesque Indianhood Indianian Indianism Indianist indianite indianization indianize Indic indic indicable indican indicant indicanuria indicate indication indicative indicatively indicator Indicatoridae Indicatorinae indicatory indicatrix indices indicia indicial indicible indicium indicolite indict indictable indictably indictee indicter indiction indictional indictive indictment indictor Indies indiferous indifference indifferency indifferent indifferential indifferentism indifferentist indifferentistic indifferently indigena indigenal indigenate indigence indigency indigene indigeneity Indigenismo indigenist indigenity indigenous indigenously indigenousness indigent indigently indigested indigestedness indigestibility indigestible indigestibleness indigestibly indigestion indigestive indigitamenta indigitate indigitation indign indignance indignancy indignant indignantly indignation indignatory indignify indignity indignly indigo indigoberry Indigofera indigoferous indigoid indigotic indigotin indigotindisulphonic indiguria indimensible indimensional indiminishable indimple indirect indirected indirection indirectly indirectness indirubin indiscernibility indiscernible indiscernibleness indiscernibly indiscerptibility indiscerptible indiscerptibleness indiscerptibly indisciplinable indiscipline indisciplined indiscoverable indiscoverably indiscovered indiscreet indiscreetly indiscreetness indiscrete indiscretely indiscretion indiscretionary indiscriminate indiscriminated indiscriminately indiscriminateness indiscriminating indiscriminatingly indiscrimination indiscriminative indiscriminatively indiscriminatory indiscussable indiscussible indispellable indispensability indispensable indispensableness indispensably indispose indisposed indisposedness indisposition indisputability indisputable indisputableness indisputably indissipable indissociable indissolubility indissoluble indissolubleness indissolubly indissolute indissolvability indissolvable indissolvableness indissolvably indissuadable indissuadably indistinct indistinction indistinctive indistinctively indistinctiveness indistinctly indistinctness indistinguishability indistinguishable indistinguishableness indistinguishably indistinguished indistortable indistributable indisturbable indisturbance indisturbed indite inditement inditer indium indivertible indivertibly individable individua individual individualism individualist individualistic individualistically individuality individualization individualize individualizer individualizingly individually individuate individuation individuative individuator individuity individuum indivinable indivisibility indivisible indivisibleness indivisibly indivision indocibility indocible indocibleness indocile indocility indoctrinate indoctrination indoctrinator indoctrine indoctrinization indoctrinize Indogaea Indogaean indogen indogenide indole indolence indolent indolently indoles indoline Indologian Indologist Indologue Indology indoloid indolyl indomitability indomitable indomitableness indomitably Indone Indonesian indoor indoors indophenin indophenol Indophile Indophilism Indophilist indorsation indorse indoxyl indoxylic indoxylsulphuric Indra indraft indraught indrawal indrawing indrawn indri Indris indubious indubiously indubitable indubitableness indubitably indubitatively induce induced inducedly inducement inducer induciae inducible inducive induct inductance inductee inducteous inductile inductility induction inductional inductionally inductionless inductive inductively inductiveness inductivity inductometer inductophone inductor inductorium inductory inductoscope indue induement indulge indulgeable indulgement indulgence indulgenced indulgency indulgent indulgential indulgentially indulgently indulgentness indulger indulging indulgingly induline indult indulto indument indumentum induna induplicate induplication induplicative indurable indurate induration indurative indurite Indus indusial indusiate indusiated indusiform indusioid indusium industrial industrialism industrialist industrialization industrialize industrially industrialness industrious industriously industriousness industrochemical industry induviae induvial induviate indwell indweller indy indyl indylic inearth inebriacy inebriant inebriate inebriation inebriative inebriety inebrious ineconomic ineconomy inedibility inedible inedited Ineducabilia ineducabilian ineducability ineducable ineducation ineffability ineffable ineffableness ineffably ineffaceability ineffaceable ineffaceably ineffectible ineffectibly ineffective ineffectively ineffectiveness ineffectual ineffectuality ineffectually ineffectualness ineffervescence ineffervescent ineffervescibility ineffervescible inefficacious inefficaciously inefficaciousness inefficacity inefficacy inefficience inefficiency inefficient inefficiently ineffulgent inelaborate inelaborated inelaborately inelastic inelasticate inelasticity inelegance inelegancy inelegant inelegantly ineligibility ineligible ineligibleness ineligibly ineliminable ineloquence ineloquent ineloquently ineluctability ineluctable ineluctably ineludible ineludibly inembryonate inemendable inemotivity inemulous inenarrable inenergetic inenubilable inenucleable inept ineptitude ineptly ineptness inequable inequal inequalitarian inequality inequally inequalness inequation inequiaxial inequicostate inequidistant inequigranular inequilateral inequilibrium inequilobate inequilobed inequipotential inequipotentiality inequitable inequitableness inequitably inequity inequivalent inequivalve inequivalvular ineradicable ineradicableness ineradicably inerasable inerasableness inerasably inerasible Ineri inerm Inermes Inermi Inermia inermous inerrability inerrable inerrableness inerrably inerrancy inerrant inerrantly inerratic inerring inerringly inerroneous inert inertance inertia inertial inertion inertly inertness inerubescent inerudite ineruditely inerudition inescapable inescapableness inescapably inesculent inescutcheon inesite inessential inessentiality inestimability inestimable inestimableness inestimably inestivation inethical ineunt ineuphonious inevadible inevadibly inevaporable inevasible inevidence inevident inevitability inevitable inevitableness inevitably inexact inexacting inexactitude inexactly inexactness inexcellence inexcitability inexcitable inexclusive inexclusively inexcommunicable inexcusability inexcusable inexcusableness inexcusably inexecutable inexecution inexertion inexhausted inexhaustedly inexhaustibility inexhaustible inexhaustibleness inexhaustibly inexhaustive inexhaustively inexigible inexist inexistence inexistency inexistent inexorability inexorable inexorableness inexorably inexpansible inexpansive inexpectancy inexpectant inexpectation inexpected inexpectedly inexpectedness inexpedience inexpediency inexpedient inexpediently inexpensive inexpensively inexpensiveness inexperience inexperienced inexpert inexpertly inexpertness inexpiable inexpiableness inexpiably inexpiate inexplainable inexplicability inexplicable inexplicableness inexplicables inexplicably inexplicit inexplicitly inexplicitness inexplorable inexplosive inexportable inexposable inexposure inexpress inexpressibility inexpressible inexpressibleness inexpressibles inexpressibly inexpressive inexpressively inexpressiveness inexpugnability inexpugnable inexpugnableness inexpugnably inexpungeable inexpungible inextant inextended inextensibility inextensible inextensile inextension inextensional inextensive inexterminable inextinct inextinguishable inextinguishably inextirpable inextirpableness inextricability inextricable inextricableness inextricably Inez inface infall infallibilism infallibilist infallibility infallible infallibleness infallibly infalling infalsificable infame infamiliar infamiliarity infamize infamonize infamous infamously infamousness infamy infancy infand infandous infang infanglement infangthief infant infanta infantado infante infanthood infanticidal infanticide infantile infantilism infantility infantine infantlike infantry infantryman infarct infarctate infarcted infarction infare infatuate infatuatedly infatuation infatuator infaust infeasibility infeasible infeasibleness infect infectant infected infectedness infecter infectible infection infectionist infectious infectiously infectiousness infective infectiveness infectivity infector infectress infectuous infecund infecundity infeed infeft infeftment infelicific infelicitous infelicitously infelicitousness infelicity infelonious infelt infeminine infer inferable inference inferent inferential inferentialism inferentialist inferentially inferior inferiorism inferiority inferiorize inferiorly infern infernal infernalism infernality infernalize infernally infernalry infernalship inferno inferoanterior inferobranchiate inferofrontal inferolateral inferomedian inferoposterior inferrer inferribility inferrible inferringly infertile infertilely infertileness infertility infest infestant infestation infester infestive infestivity infestment infeudation infibulate infibulation inficete infidel infidelic infidelical infidelism infidelistic infidelity infidelize infidelly infield infielder infieldsman infighter infighting infill infilling infilm infilter infiltrate infiltration infiltrative infinitant infinitarily infinitary infinitate infinitation infinite infinitely infiniteness infinitesimal infinitesimalism infinitesimality infinitesimally infinitesimalness infiniteth infinitieth infinitival infinitivally infinitive infinitively infinitize infinitude infinituple infinity infirm infirmarer infirmaress infirmarian infirmary infirmate infirmation infirmative infirmity infirmly infirmness infissile infit infitter infix infixion inflame inflamed inflamedly inflamedness inflamer inflaming inflamingly inflammability inflammable inflammableness inflammably inflammation inflammative inflammatorily inflammatory inflatable inflate inflated inflatedly inflatedness inflater inflatile inflatingly inflation inflationary inflationism inflationist inflative inflatus inflect inflected inflectedness inflection inflectional inflectionally inflectionless inflective inflector inflex inflexed inflexibility inflexible inflexibleness inflexibly inflexive inflict inflictable inflicter infliction inflictive inflood inflorescence inflorescent inflow inflowering influence influenceable influencer influencive influent influential influentiality influentially influenza influenzal influenzic influx influxable influxible influxibly influxion influxionism infold infolder infolding infoldment infoliate inform informable informal informality informalize informally informant information informational informative informatively informatory informed informedly informer informidable informingly informity infortiate infortitude infortunate infortunately infortunateness infortune infra infrabasal infrabestial infrabranchial infrabuccal infracanthal infracaudal infracelestial infracentral infracephalic infraclavicle infraclavicular infraclusion infraconscious infracortical infracostal infracostalis infracotyloid infract infractible infraction infractor infradentary infradiaphragmatic infragenual infraglacial infraglenoid infraglottic infragrant infragular infrahuman infrahyoid infralabial infralapsarian infralapsarianism infralinear infralittoral inframammary inframammillary inframandibular inframarginal inframaxillary inframedian inframercurial inframercurian inframolecular inframontane inframundane infranatural infranaturalism infrangibility infrangible infrangibleness infrangibly infranodal infranuclear infraoccipital infraocclusion infraocular infraoral infraorbital infraordinary infrapapillary infrapatellar infraperipherial infrapose infraposition infraprotein infrapubian infraradular infrared infrarenal infrarenally infrarimal infrascapular infrascapularis infrascientific infraspinal infraspinate infraspinatus infraspinous infrastapedial infrasternal infrastigmatal infrastipular infrastructure infrasutral infratemporal infraterrene infraterritorial infrathoracic infratonsillar infratracheal infratrochanteric infratrochlear infratubal infraturbinal infravaginal infraventral infrequency infrequent infrequently infrigidate infrigidation infrigidative infringe infringement infringer infringible infructiferous infructuose infructuosity infructuous infructuously infrugal infrustrable infrustrably infula infumate infumated infumation infundibular Infundibulata infundibulate infundibuliform infundibulum infuriate infuriately infuriatingly infuriation infuscate infuscation infuse infusedly infuser infusibility infusible infusibleness infusile infusion infusionism infusionist infusive Infusoria infusorial infusorian infusoriform infusorioid infusorium infusory Ing ing Inga Ingaevones Ingaevonic ingallantry ingate ingather ingatherer ingathering ingeldable ingeminate ingemination ingenerability ingenerable ingenerably ingenerate ingenerately ingeneration ingenerative ingeniosity ingenious ingeniously ingeniousness ingenit ingenue ingenuity ingenuous ingenuously ingenuousness Inger ingerminate ingest ingesta ingestible ingestion ingestive Inghamite Inghilois ingiver ingiving ingle inglenook ingleside inglobate inglobe inglorious ingloriously ingloriousness inglutition ingluvial ingluvies ingluviitis ingoing Ingomar ingot ingotman ingraft ingrain ingrained ingrainedly ingrainedness Ingram ingrammaticism ingrandize ingrate ingrateful ingratefully ingratefulness ingrately ingratiate ingratiating ingratiatingly ingratiation ingratiatory ingratitude ingravescent ingravidate ingravidation ingredient ingress ingression ingressive ingressiveness ingross ingrow ingrown ingrownness ingrowth inguen inguinal inguinoabdominal inguinocrural inguinocutaneous inguinodynia inguinolabial inguinoscrotal Inguklimiut ingulf ingulfment ingurgitate ingurgitation Ingush inhabit inhabitability inhabitable inhabitancy inhabitant inhabitation inhabitative inhabitativeness inhabited inhabitedness inhabiter inhabitiveness inhabitress inhalant inhalation inhalator inhale inhalement inhalent inhaler inharmonic inharmonical inharmonious inharmoniously inharmoniousness inharmony inhaul inhauler inhaust inhaustion inhearse inheaven inhere inherence inherency inherent inherently inherit inheritability inheritable inheritableness inheritably inheritage inheritance inheritor inheritress inheritrice inheritrix inhesion inhiate inhibit inhibitable inhibiter inhibition inhibitionist inhibitive inhibitor inhibitory inhomogeneity inhomogeneous inhomogeneously inhospitable inhospitableness inhospitably inhospitality inhuman inhumane inhumanely inhumanism inhumanity inhumanize inhumanly inhumanness inhumate inhumation inhumationist inhume inhumer inhumorous inhumorously Inia inial inidoneity inidoneous Inigo inimicable inimical inimicality inimically inimicalness inimitability inimitable inimitableness inimitably iniome Iniomi iniomous inion iniquitable iniquitably iniquitous iniquitously iniquitousness iniquity inirritability inirritable inirritant inirritative inissuable initial initialer initialist initialize initially initiant initiary initiate initiation initiative initiatively initiator initiatorily initiatory initiatress initiatrix initis initive inject injectable injection injector injelly injudicial injudicially injudicious injudiciously injudiciousness Injun injunct injunction injunctive injunctively injurable injure injured injuredly injuredness injurer injurious injuriously injuriousness injury injustice ink inkberry inkbush inken inker Inkerman inket inkfish inkholder inkhorn inkhornism inkhornist inkhornize inkhornizer inkindle inkiness inkish inkle inkless inklike inkling inkmaker inkmaking inknot inkosi inkpot Inkra inkroot inks inkshed inkslinger inkslinging inkstain inkstand inkstandish inkstone inkweed inkwell inkwood inkwriter inky inlagation inlaid inlaik inlake inland inlander inlandish inlaut inlaw inlawry inlay inlayer inlaying inleague inleak inleakage inlet inlier inlook inlooker inly inlying inmate inmeats inmixture inmost inn innascibility innascible innate innately innateness innatism innative innatural innaturality innaturally inneity inner innerly innermore innermost innermostly innerness innervate innervation innervational innerve inness innest innet innholder inning inninmorite Innisfail innkeeper innless innocence innocency innocent innocently innocentness innocuity innocuous innocuously innocuousness innominable innominables innominata innominate innominatum innovant innovate innovation innovational innovationist innovative innovator innovatory innoxious innoxiously innoxiousness innuendo Innuit innumerability innumerable innumerableness innumerably innumerous innutrient innutrition innutritious innutritive innyard Ino inobedience inobedient inobediently inoblast inobnoxious inobscurable inobservable inobservance inobservancy inobservant inobservantly inobservantness inobservation inobtainable inobtrusive inobtrusively inobtrusiveness inobvious Inocarpus inoccupation Inoceramus inochondritis inochondroma inoculability inoculable inoculant inocular inoculate inoculation inoculative inoculator inoculum inocystoma inocyte Inodes inodorous inodorously inodorousness inoepithelioma inoffending inoffensive inoffensively inoffensiveness inofficial inofficially inofficiosity inofficious inofficiously inofficiousness inogen inogenesis inogenic inogenous inoglia inohymenitic inolith inoma inominous inomyoma inomyositis inomyxoma inone inoneuroma inoperable inoperative inoperativeness inopercular Inoperculata inoperculate inopinable inopinate inopinately inopine inopportune inopportunely inopportuneness inopportunism inopportunist inopportunity inoppressive inoppugnable inopulent inorb inorderly inordinacy inordinary inordinate inordinately inordinateness inorganic inorganical inorganically inorganizable inorganization inorganized inoriginate inornate inosclerosis inoscopy inosculate inosculation inosic inosin inosinic inosite inositol inostensible inostensibly inotropic inower inoxidability inoxidable inoxidizable inoxidize inparabola inpardonable inpatient inpayment inpensioner inphase inpolygon inpolyhedron inport inpour inpush input inquaintance inquartation inquest inquestual inquiet inquietation inquietly inquietness inquietude Inquilinae inquiline inquilinism inquilinity inquilinous inquinate inquination inquirable inquirant inquiration inquire inquirendo inquirent inquirer inquiring inquiringly inquiry inquisite inquisition inquisitional inquisitionist inquisitive inquisitively inquisitiveness inquisitor inquisitorial inquisitorially inquisitorialness inquisitorious inquisitorship inquisitory inquisitress inquisitrix inquisiturient inradius inreality inrigged inrigger inrighted inring inro inroad inroader inroll inrooted inrub inrun inrunning inruption inrush insack insagacity insalivate insalivation insalubrious insalubrity insalutary insalvability insalvable insane insanely insaneness insanify insanitariness insanitary insanitation insanity insapiency insapient insatiability insatiable insatiableness insatiably insatiate insatiated insatiately insatiateness insatiety insatisfaction insatisfactorily insaturable inscenation inscibile inscience inscient inscribable inscribableness inscribe inscriber inscript inscriptible inscription inscriptional inscriptioned inscriptionist inscriptionless inscriptive inscriptively inscriptured inscroll inscrutability inscrutable inscrutableness inscrutables inscrutably insculp insculpture insea inseam insect Insecta insectan insectarium insectary insectean insected insecticidal insecticide insectiferous insectiform insectifuge insectile insectine insection insectival Insectivora insectivore insectivorous insectlike insectmonger insectologer insectologist insectology insectproof insecure insecurely insecureness insecurity insee inseer inselberg inseminate insemination insenescible insensate insensately insensateness insense insensibility insensibilization insensibilize insensibilizer insensible insensibleness insensibly insensitive insensitiveness insensitivity insensuous insentience insentiency insentient inseparability inseparable inseparableness inseparably inseparate inseparately insequent insert insertable inserted inserter insertion insertional insertive inserviceable insessor Insessores insessorial inset insetter inseverable inseverably inshave insheathe inshell inshining inship inshoe inshoot inshore inside insider insidiosity insidious insidiously insidiousness insight insightful insigne insignia insignificance insignificancy insignificant insignificantly insimplicity insincere insincerely insincerity insinking insinuant insinuate insinuating insinuatingly insinuation insinuative insinuatively insinuativeness insinuator insinuatory insinuendo insipid insipidity insipidly insipidness insipience insipient insipiently insist insistence insistency insistent insistently insister insistingly insistive insititious insnare insnarement insnarer insobriety insociability insociable insociableness insociably insocial insocially insofar insolate insolation insole insolence insolency insolent insolently insolentness insolid insolidity insolubility insoluble insolubleness insolubly insolvability insolvable insolvably insolvence insolvency insolvent insomnia insomniac insomnious insomnolence insomnolency insomnolent insomuch insonorous insooth insorb insorbent insouciance insouciant insouciantly insoul inspan inspeak inspect inspectability inspectable inspectingly inspection inspectional inspectioneer inspective inspector inspectoral inspectorate inspectorial inspectorship inspectress inspectrix inspheration insphere inspirability inspirable inspirant inspiration inspirational inspirationalism inspirationally inspirationist inspirative inspirator inspiratory inspiratrix inspire inspired inspiredly inspirer inspiring inspiringly inspirit inspiriter inspiriting inspiritingly inspiritment inspirometer inspissant inspissate inspissation inspissator inspissosis inspoke inspoken inspreith instability instable install installant installation installer installment instance instancy instanding instant instantaneity instantaneous instantaneously instantaneousness instanter instantial instantly instantness instar instate instatement instaurate instauration instaurator instead instealing insteam insteep instellation instep instigant instigate instigatingly instigation instigative instigator instigatrix instill instillation instillator instillatory instiller instillment instinct instinctive instinctively instinctivist instinctivity instinctual instipulate institor institorial institorian institory institute instituter institution institutional institutionalism institutionalist institutionality institutionalization institutionalize institutionally institutionary institutionize institutive institutively institutor institutress institutrix instonement instratified instreaming instrengthen instressed instroke instruct instructed instructedly instructedness instructer instructible instruction instructional instructionary instructive instructively instructiveness instructor instructorship instructress instrument instrumental instrumentalism instrumentalist instrumentality instrumentalize instrumentally instrumentary instrumentate instrumentation instrumentative instrumentist instrumentman insuavity insubduable insubjection insubmergible insubmersible insubmission insubmissive insubordinate insubordinately insubordinateness insubordination insubstantial insubstantiality insubstantiate insubstantiation insubvertible insuccess insuccessful insucken insuetude insufferable insufferableness insufferably insufficience insufficiency insufficient insufficiently insufflate insufflation insufflator insula insulance insulant insular insularism insularity insularize insularly insulary insulate insulated insulating insulation insulator insulin insulize insulse insulsity insult insultable insultant insultation insulter insulting insultingly insultproof insunk insuperability insuperable insuperableness insuperably insupportable insupportableness insupportably insupposable insuppressible insuppressibly insuppressive insurability insurable insurance insurant insure insured insurer insurge insurgence insurgency insurgent insurgentism insurgescence insurmountability insurmountable insurmountableness insurmountably insurpassable insurrect insurrection insurrectional insurrectionally insurrectionary insurrectionism insurrectionist insurrectionize insurrectory insusceptibility insusceptible insusceptibly insusceptive inswamp inswarming insweeping inswell inswept inswing inswinger intabulate intact intactile intactly intactness intagliated intagliation intaglio intagliotype intake intaker intangibility intangible intangibleness intangibly intarissable intarsia intarsiate intarsist intastable intaxable intechnicality integer integrability integrable integral integrality integralization integralize integrally integrand integrant integraph integrate integration integrative integrator integrifolious integrious integriously integripalliate integrity integrodifferential integropallial Integropallialia Integropalliata integropalliate integument integumental integumentary integumentation inteind intellect intellectation intellected intellectible intellection intellective intellectively intellectual intellectualism intellectualist intellectualistic intellectualistically intellectuality intellectualization intellectualize intellectualizer intellectually intellectualness intelligence intelligenced intelligencer intelligency intelligent intelligential intelligently intelligentsia intelligibility intelligible intelligibleness intelligibly intelligize intemerate intemerately intemerateness intemeration intemperable intemperably intemperament intemperance intemperate intemperately intemperateness intemperature intempestive intempestively intempestivity intemporal intemporally intenability intenable intenancy intend intendance intendancy intendant intendantism intendantship intended intendedly intendedness intendence intender intendible intending intendingly intendit intendment intenerate inteneration intenible intensate intensation intensative intense intensely intenseness intensification intensifier intensify intension intensional intensionally intensitive intensity intensive intensively intensiveness intent intention intentional intentionalism intentionality intentionally intentioned intentionless intentive intentively intentiveness intently intentness inter interabsorption interacademic interaccessory interaccuse interacinar interacinous interact interaction interactional interactionism interactionist interactive interactivity interadaptation interadditive interadventual interaffiliation interagency interagent interagglutinate interagglutination interagree interagreement interalar interallied interally interalveolar interambulacral interambulacrum interamnian interangular interanimate interannular interantagonism interantennal interantennary interapophyseal interapplication interarboration interarch interarcualis interarmy interarticular interartistic interarytenoid interassociation interassure interasteroidal interastral interatomic interatrial interattrition interaulic interaural interauricular interavailability interavailable interaxal interaxial interaxillary interaxis interbalance interbanded interbank interbedded interbelligerent interblend interbody interbonding interborough interbourse interbrachial interbrain interbranch interbranchial interbreath interbreed interbrigade interbring interbronchial intercadence intercadent intercalare intercalarily intercalarium intercalary intercalate intercalation intercalative intercalatory intercale intercalm intercanal intercanalicular intercapillary intercardinal intercarotid intercarpal intercarpellary intercarrier intercartilaginous intercaste intercatenated intercausative intercavernous intercede interceder intercellular intercensal intercentral intercentrum intercept intercepter intercepting interception interceptive interceptor interceptress intercerebral intercession intercessional intercessionary intercessionment intercessive intercessor intercessorial intercessory interchaff interchange interchangeability interchangeable interchangeableness interchangeably interchanger interchapter intercharge interchase intercheck interchoke interchondral interchurch Intercidona interciliary intercilium intercircle intercirculate intercirculation intercision intercitizenship intercity intercivic intercivilization interclash interclasp interclass interclavicle interclavicular interclerical intercloud interclub intercoastal intercoccygeal intercoccygean intercohesion intercollege intercollegian intercollegiate intercolline intercolonial intercolonially intercolonization intercolumn intercolumnal intercolumnar intercolumniation intercom intercombat intercombination intercombine intercome intercommission intercommon intercommonable intercommonage intercommoner intercommunal intercommune intercommuner intercommunicability intercommunicable intercommunicate intercommunication intercommunicative intercommunicator intercommunion intercommunity intercompany intercomparable intercompare intercomparison intercomplexity intercomplimentary interconal interconciliary intercondenser intercondylar intercondylic intercondyloid interconfessional interconfound interconnect interconnection intercontinental intercontorted intercontradiction intercontradictory interconversion interconvertibility interconvertible interconvertibly intercooler intercooling intercoracoid intercorporate intercorpuscular intercorrelate intercorrelation intercortical intercosmic intercosmically intercostal intercostally intercostobrachial intercostohumeral intercotylar intercounty intercourse intercoxal intercranial intercreate intercrescence intercrinal intercrop intercross intercrural intercrust intercrystalline intercrystallization intercrystallize intercultural interculture intercurl intercurrence intercurrent intercurrently intercursation intercuspidal intercutaneous intercystic interdash interdebate interdenominational interdental interdentally interdentil interdepartmental interdepartmentally interdepend interdependable interdependence interdependency interdependent interdependently interderivative interdespise interdestructive interdestructiveness interdetermination interdetermine interdevour interdict interdiction interdictive interdictor interdictory interdictum interdifferentiation interdiffuse interdiffusion interdiffusive interdiffusiveness interdigital interdigitate interdigitation interdine interdiscal interdispensation interdistinguish interdistrict interdivision interdome interdorsal interdrink intereat interelectrode interelectrodic interempire interenjoy interentangle interentanglement interepidemic interepimeral interepithelial interequinoctial interessee interest interested interestedly interestedness interester interesting interestingly interestingness interestless interestuarine interface interfacial interfactional interfamily interfascicular interfault interfector interfederation interfemoral interfenestral interfenestration interferant interfere interference interferent interferential interferer interfering interferingly interferingness interferometer interferometry interferric interfertile interfertility interfibrillar interfibrillary interfibrous interfilamentar interfilamentary interfilamentous interfilar interfiltrate interfinger interflange interflashing interflow interfluence interfluent interfluminal interfluous interfluve interfluvial interflux interfold interfoliaceous interfoliar interfoliate interfollicular interforce interfraternal interfraternity interfret interfretted interfriction interfrontal interfruitful interfulgent interfuse interfusion interganglionic intergenerant intergenerating intergeneration intergential intergesture intergilt interglacial interglandular interglobular interglyph intergossip intergovernmental intergradation intergrade intergradient intergraft intergranular intergrapple intergrave intergroupal intergrow intergrown intergrowth intergular intergyral interhabitation interhemal interhemispheric interhostile interhuman interhyal interhybridize interim interimist interimistic interimistical interimistically interimperial interincorporation interindependence interindicate interindividual interinfluence interinhibition interinhibitive interinsert interinsular interinsurance interinsurer interinvolve interionic interior interiority interiorize interiorly interiorness interirrigation interisland interjacence interjacency interjacent interjaculate interjaculatory interjangle interjealousy interject interjection interjectional interjectionalize interjectionally interjectionary interjectionize interjectiveness interjector interjectorily interjectory interjectural interjoin interjoist interjudgment interjunction interkinesis interkinetic interknit interknot interknow interknowledge interlaboratory interlace interlaced interlacedly interlacement interlacery interlacustrine interlaid interlake interlamellar interlamellation interlaminar interlaminate interlamination interlanguage interlap interlapse interlard interlardation interlardment interlatitudinal interlaudation interlay interleaf interleague interleave interleaver interlibel interlibrary interlie interligamentary interligamentous interlight interlimitation interline interlineal interlineally interlinear interlinearily interlinearly interlineary interlineate interlineation interlinement interliner Interlingua interlingual interlinguist interlinguistic interlining interlink interloan interlobar interlobate interlobular interlocal interlocally interlocate interlocation interlock interlocker interlocular interloculus interlocution interlocutive interlocutor interlocutorily interlocutory interlocutress interlocutrice interlocutrix interloop interlope interloper interlot interlucation interlucent interlude interluder interludial interlunar interlunation interlying intermalleolar intermammary intermammillary intermandibular intermanorial intermarginal intermarine intermarriage intermarriageable intermarry intermason intermastoid intermat intermatch intermaxilla intermaxillar intermaxillary intermaze intermeasurable intermeasure intermeddle intermeddlement intermeddler intermeddlesome intermeddlesomeness intermeddling intermeddlingly intermediacy intermediae intermedial intermediary intermediate intermediately intermediateness intermediation intermediator intermediatory intermedium intermedius intermeet intermelt intermembral intermembranous intermeningeal intermenstrual intermenstruum interment intermental intermention intermercurial intermesenterial intermesenteric intermesh intermessage intermessenger intermetacarpal intermetallic intermetameric intermetatarsal intermew intermewed intermewer intermezzo intermigration interminability interminable interminableness interminably interminant interminate intermine intermingle intermingledom interminglement interminister interministerial interministerium intermission intermissive intermit intermitted intermittedly intermittence intermittency intermittent intermittently intermitter intermitting intermittingly intermix intermixedly intermixtly intermixture intermobility intermodification intermodillion intermodulation intermolar intermolecular intermomentary intermontane intermorainic intermotion intermountain intermundane intermundial intermundian intermundium intermunicipal intermunicipality intermural intermuscular intermutation intermutual intermutually intermutule intern internal internality internalization internalize internally internalness internals internarial internasal internation international internationalism internationalist internationality internationalization internationalize internationally interneciary internecinal internecine internecion internecive internee internetted interneural interneuronic internidal internist internment internobasal internodal internode internodial internodian internodium internodular internship internuclear internuncial internunciary internunciatory internuncio internuncioship internuncius internuptial interobjective interoceanic interoceptive interoceptor interocular interoffice interolivary interopercle interopercular interoperculum interoptic interorbital interorbitally interoscillate interosculant interosculate interosculation interosseal interosseous interownership interpage interpalatine interpalpebral interpapillary interparenchymal interparental interparenthetical interparenthetically interparietal interparietale interparliament interparliamentary interparoxysmal interparty interpause interpave interpeal interpectoral interpeduncular interpel interpellant interpellate interpellation interpellator interpenetrable interpenetrant interpenetrate interpenetration interpenetrative interpenetratively interpermeate interpersonal interpervade interpetaloid interpetiolar interpetiolary interphalangeal interphase interphone interpiece interpilaster interpilastering interplacental interplait interplanetary interplant interplanting interplay interplea interplead interpleader interpledge interpleural interplical interplicate interplication interplight interpoint interpolable interpolar interpolary interpolate interpolater interpolation interpolative interpolatively interpolator interpole interpolitical interpolity interpollinate interpolymer interpone interportal interposable interposal interpose interposer interposing interposingly interposition interposure interpour interprater interpressure interpret interpretability interpretable interpretableness interpretably interpretament interpretation interpretational interpretative interpretatively interpreter interpretership interpretive interpretively interpretorial interpretress interprismatic interproduce interprofessional interproglottidal interproportional interprotoplasmic interprovincial interproximal interproximate interpterygoid interpubic interpulmonary interpunct interpunction interpunctuate interpunctuation interpupillary interquarrel interquarter interrace interracial interracialism interradial interradially interradiate interradiation interradium interradius interrailway interramal interramicorn interramification interreceive interreflection interregal interregimental interregional interregna interregnal interregnum interreign interrelate interrelated interrelatedly interrelatedness interrelation interrelationship interreligious interrenal interrenalism interrepellent interrepulsion interrer interresponsibility interresponsible interreticular interreticulation interrex interrhyme interright interriven interroad interrogability interrogable interrogant interrogate interrogatedness interrogatee interrogatingly interrogation interrogational interrogative interrogatively interrogator interrogatorily interrogatory interrogatrix interrogee interroom interrule interrun interrupt interrupted interruptedly interruptedness interrupter interruptible interrupting interruptingly interruption interruptive interruptively interruptor interruptory intersale intersalute interscapilium interscapular interscapulum interscene interscholastic interschool interscience interscribe interscription interseaboard interseamed intersect intersectant intersection intersectional intersegmental interseminal intersentimental interseptal intersertal intersesamoid intersession intersessional interset intersex intersexual intersexualism intersexuality intershade intershifting intershock intershoot intershop intersidereal intersituate intersocial intersocietal intersociety intersole intersolubility intersoluble intersomnial intersomnious intersonant intersow interspace interspatial interspatially interspeaker interspecial interspecific interspersal intersperse interspersedly interspersion interspheral intersphere interspicular interspinal interspinalis interspinous interspiral interspiration intersporal intersprinkle intersqueeze interstadial interstage interstaminal interstapedial interstate interstation interstellar interstellary intersterile intersterility intersternal interstice intersticed interstimulate interstimulation interstitial interstitially interstitious interstratification interstratify interstreak interstream interstreet interstrial interstriation interstrive intersubjective intersubsistence intersubstitution intersuperciliary intersusceptation intersystem intersystematical intertalk intertangle intertanglement intertarsal interteam intertentacular intertergal interterminal interterritorial intertessellation intertexture interthing interthreaded interthronging intertidal intertie intertill intertillage intertinge intertissued intertone intertongue intertonic intertouch intertown intertrabecular intertrace intertrade intertrading intertraffic intertragian intertransformability intertransformable intertransmissible intertransmission intertranspicuous intertransversal intertransversalis intertransversary intertransverse intertrappean intertribal intertriginous intertriglyph intertrigo intertrinitarian intertrochanteric intertropic intertropical intertropics intertrude intertuberal intertubercular intertubular intertwin intertwine intertwinement intertwining intertwiningly intertwist intertwistingly Intertype interungular interungulate interunion interuniversity interurban interureteric intervaginal interval intervale intervalley intervallic intervallum intervalvular intervarietal intervary intervascular intervein interveinal intervenant intervene intervener intervenience interveniency intervenient intervenium intervention interventional interventionism interventionist interventive interventor interventral interventralia interventricular intervenular interverbal interversion intervert intervertebra intervertebral intervertebrally intervesicular interview interviewable interviewee interviewer intervillous intervisibility intervisible intervisit intervisitation intervital intervocal intervocalic intervolute intervolution intervolve interwar interweave interweavement interweaver interweaving interweavingly interwed interweld interwhiff interwhile interwhistle interwind interwish interword interwork interworks interworld interworry interwound interwove interwoven interwovenly interwrap interwreathe interwrought interxylary interzonal interzone interzooecial interzygapophysial intestable intestacy intestate intestation intestinal intestinally intestine intestineness intestiniform intestinovesical intext intextine intexture inthrall inthrallment inthrong inthronistic inthronization inthronize inthrow inthrust intil intima intimacy intimal intimate intimately intimateness intimater intimation intimidate intimidation intimidator intimidatory intimidity intimity intinction intine intitule into intoed intolerability intolerable intolerableness intolerably intolerance intolerancy intolerant intolerantly intolerantness intolerated intolerating intoleration intonable intonate intonation intonator intone intonement intoner intoothed intorsion intort intortillage intown intoxation intoxicable intoxicant intoxicate intoxicated intoxicatedly intoxicatedness intoxicating intoxicatingly intoxication intoxicative intoxicator intrabiontic intrabranchial intrabred intrabronchial intrabuccal intracalicular intracanalicular intracanonical intracapsular intracardiac intracardial intracarpal intracarpellary intracartilaginous intracellular intracellularly intracephalic intracerebellar intracerebral intracerebrally intracervical intrachordal intracistern intracity intraclitelline intracloacal intracoastal intracoelomic intracolic intracollegiate intracommunication intracompany intracontinental intracorporeal intracorpuscular intracortical intracosmic intracosmical intracosmically intracostal intracranial intracranially intractability intractable intractableness intractably intractile intracutaneous intracystic intrada intradepartmental intradermal intradermally intradermic intradermically intradermo intradistrict intradivisional intrados intraduodenal intradural intraecclesiastical intraepiphyseal intraepithelial intrafactory intrafascicular intrafissural intrafistular intrafoliaceous intraformational intrafusal intragastric intragemmal intraglacial intraglandular intraglobular intragroup intragroupal intragyral intrahepatic intrahyoid intraimperial intrait intrajugular intralamellar intralaryngeal intralaryngeally intraleukocytic intraligamentary intraligamentous intralingual intralobar intralobular intralocular intralogical intralumbar intramammary intramarginal intramastoid intramatrical intramatrically intramedullary intramembranous intrameningeal intramental intrametropolitan intramolecular intramontane intramorainic intramundane intramural intramuralism intramuscular intramuscularly intramyocardial intranarial intranasal intranatal intranational intraneous intraneural intranidal intranquil intranquillity intranscalency intranscalent intransferable intransformable intransfusible intransgressible intransient intransigency intransigent intransigentism intransigentist intransigently intransitable intransitive intransitively intransitiveness intransitivity intranslatable intransmissible intransmutability intransmutable intransparency intransparent intrant intranuclear intraoctave intraocular intraoral intraorbital intraorganization intraossal intraosseous intraosteal intraovarian intrapair intraparenchymatous intraparietal intraparochial intraparty intrapelvic intrapericardiac intrapericardial intraperineal intraperiosteal intraperitoneal intraperitoneally intrapetiolar intraphilosophic intrapial intraplacental intraplant intrapleural intrapolar intrapontine intraprostatic intraprotoplasmic intrapsychic intrapsychical intrapsychically intrapulmonary intrapyretic intrarachidian intrarectal intrarelation intrarenal intraretinal intrarhachidian intraschool intrascrotal intrasegmental intraselection intrasellar intraseminal intraseptal intraserous intrashop intraspecific intraspinal intrastate intrastromal intrasusception intrasynovial intratarsal intratelluric intraterritorial intratesticular intrathecal intrathoracic intrathyroid intratomic intratonsillar intratrabecular intratracheal intratracheally intratropical intratubal intratubular intratympanic intravaginal intravalvular intravasation intravascular intravenous intravenously intraventricular intraverbal intraversable intravertebral intravertebrally intravesical intravital intravitelline intravitreous intraxylary intreat intrench intrenchant intrencher intrenchment intrepid intrepidity intrepidly intrepidness intricacy intricate intricately intricateness intrication intrigant intrigue intrigueproof intriguer intriguery intriguess intriguing intriguingly intrine intrinse intrinsic intrinsical intrinsicality intrinsically intrinsicalness introactive introceptive introconversion introconvertibility introconvertible introdden introduce introducee introducement introducer introducible introduction introductive introductively introductor introductorily introductoriness introductory introductress introflex introflexion introgression introgressive introinflection introit introitus introject introjection introjective intromissibility intromissible intromission intromissive intromit intromittence intromittent intromitter intropression intropulsive introreception introrsal introrse introrsely introsensible introsentient introspect introspectable introspection introspectional introspectionism introspectionist introspective introspectively introspectiveness introspectivism introspectivist introspector introsuction introsuscept introsusception introthoracic introtraction introvenient introverse introversibility introversible introversion introversive introversively introvert introverted introvertive introvision introvolution intrudance intrude intruder intruding intrudingly intrudress intruse intrusion intrusional intrusionism intrusionist intrusive intrusively intrusiveness intrust intubate intubation intubationist intubator intube intue intuent intuicity intuit intuitable intuition intuitional intuitionalism intuitionalist intuitionally intuitionism intuitionist intuitionistic intuitionless intuitive intuitively intuitiveness intuitivism intuitivist intumesce intumescence intumescent inturbidate inturn inturned inturning intussuscept intussusception intussusceptive intwist inula inulaceous inulase inulin inuloid inumbrate inumbration inunct inunction inunctum inunctuosity inunctuous inundable inundant inundate inundation inundator inundatory inunderstandable inurbane inurbanely inurbaneness inurbanity inure inured inuredness inurement inurn inusitate inusitateness inusitation inustion inutile inutilely inutility inutilized inutterable invaccinate invaccination invadable invade invader invaginable invaginate invagination invalescence invalid invalidate invalidation invalidator invalidcy invalidhood invalidish invalidism invalidity invalidly invalidness invalidship invalorous invaluable invaluableness invaluably invalued Invar invariability invariable invariableness invariably invariance invariancy invariant invariantive invariantively invariantly invaried invasion invasionist invasive invecked invected invection invective invectively invectiveness invectivist invector inveigh inveigher inveigle inveiglement inveigler inveil invein invendibility invendible invendibleness invenient invent inventable inventary inventer inventful inventibility inventible inventibleness invention inventional inventionless inventive inventively inventiveness inventor inventoriable inventorial inventorially inventory inventress inventurous inveracious inveracity inverisimilitude inverity inverminate invermination invernacular Inverness inversable inversatile inverse inversed inversedly inversely inversion inversionist inversive invert invertase invertebracy invertebral Invertebrata invertebrate invertebrated inverted invertedly invertend inverter invertibility invertible invertile invertin invertive invertor invest investable investible investigable investigatable investigate investigating investigatingly investigation investigational investigative investigator investigatorial investigatory investitive investitor investiture investment investor inveteracy inveterate inveterately inveterateness inviability invictive invidious invidiously invidiousness invigilance invigilancy invigilation invigilator invigor invigorant invigorate invigorating invigoratingly invigoratingness invigoration invigorative invigoratively invigorator invinate invination invincibility invincible invincibleness invincibly inviolability inviolable inviolableness inviolably inviolacy inviolate inviolated inviolately inviolateness invirile invirility invirtuate inviscate inviscation inviscid inviscidity invised invisibility invisible invisibleness invisibly invitable invital invitant invitation invitational invitatory invite invitee invitement inviter invitiate inviting invitingly invitingness invitress invitrifiable invivid invocable invocant invocate invocation invocative invocator invocatory invoice invoke invoker involatile involatility involucel involucellate involucellated involucral involucrate involucre involucred involucriform involucrum involuntarily involuntariness involuntary involute involuted involutedly involutely involution involutional involutionary involutorial involutory involve involved involvedly involvedness involvement involvent involver invulnerability invulnerable invulnerableness invulnerably invultuation inwale inwall inwandering inward inwardly inwardness inwards inweave inwedged inweed inweight inwick inwind inwit inwith inwood inwork inworn inwound inwoven inwrap inwrapment inwreathe inwrit inwrought inyoite inyoke Io io Iodamoeba iodate iodation iodhydrate iodhydric iodhydrin iodic iodide iodiferous iodinate iodination iodine iodinium iodinophil iodinophilic iodinophilous iodism iodite iodization iodize iodizer iodo iodobehenate iodobenzene iodobromite iodocasein iodochloride iodochromate iodocresol iododerma iodoethane iodoform iodogallicin iodohydrate iodohydric iodohydrin iodol iodomercurate iodomercuriate iodomethane iodometric iodometrical iodometry iodonium iodopsin iodoso iodosobenzene iodospongin iodotannic iodotherapy iodothyrin iodous iodoxy iodoxybenzene iodyrite iolite ion Ione Ioni Ionian Ionic ionic Ionicism Ionicization Ionicize Ionidium Ionism Ionist ionium ionizable Ionization ionization Ionize ionize ionizer ionogen ionogenic ionone Ionornis ionosphere ionospheric Ionoxalis iontophoresis Ioskeha iota iotacism iotacismus iotacist iotization iotize Iowa Iowan Ipalnemohuani ipecac ipecacuanha ipecacuanhic Iphimedia Iphis ipid Ipidae ipil ipomea Ipomoea ipomoein ipseand ipsedixitish ipsedixitism ipsedixitist ipseity ipsilateral Ira iracund iracundity iracundulous irade Iran Irani Iranian Iranic Iranism Iranist Iranize Iraq Iraqi Iraqian irascent irascibility irascible irascibleness irascibly irate irately ire ireful irefully irefulness Irelander ireless Irena irenarch Irene irene irenic irenical irenically irenicism irenicist irenicon irenics irenicum Iresine Irfan Irgun Irgunist irian Iriartea Iriarteaceae Iricism Iricize irid Iridaceae iridaceous iridadenosis iridal iridalgia iridate iridauxesis iridectome iridectomize iridectomy iridectropium iridemia iridencleisis iridentropium irideous irideremia irides iridesce iridescence iridescency iridescent iridescently iridial iridian iridiate iridic iridical iridin iridine iridiocyte iridiophore iridioplatinum iridious iridite iridium iridization iridize iridoavulsion iridocapsulitis iridocele iridoceratitic iridochoroiditis iridocoloboma iridoconstrictor iridocyclitis iridocyte iridodesis iridodiagnosis iridodialysis iridodonesis iridokinesia iridomalacia iridomotor Iridomyrmex iridoncus iridoparalysis iridophore iridoplegia iridoptosis iridopupillary iridorhexis iridosclerotomy iridosmine iridosmium iridotasis iridotome iridotomy iris irisated irisation iriscope irised Irish Irisher Irishian Irishism Irishize Irishly Irishman Irishness Irishry Irishwoman Irishy irisin irislike irisroot iritic iritis irk irksome irksomely irksomeness Irma Iroha irok iroko iron ironback ironbark ironbound ironbush ironclad irone ironer ironfisted ironflower ironhanded ironhandedly ironhandedness ironhard ironhead ironheaded ironhearted ironheartedly ironheartedness ironical ironically ironicalness ironice ironish ironism ironist ironize ironless ironlike ironly ironmaker ironmaking ironman ironmaster ironmonger ironmongering ironmongery ironness ironshod ironshot ironside ironsided ironsides ironsmith ironstone ironware ironweed ironwood ironwork ironworked ironworker ironworking ironworks ironwort irony Iroquoian Iroquois Irpex irradiance irradiancy irradiant irradiate irradiated irradiatingly irradiation irradiative irradiator irradicable irradicate irrarefiable irrationability irrationable irrationably irrational irrationalism irrationalist irrationalistic irrationality irrationalize irrationally irrationalness irreality irrealizable irrebuttable irreceptive irreceptivity irreciprocal irreciprocity irreclaimability irreclaimable irreclaimableness irreclaimably irreclaimed irrecognition irrecognizability irrecognizable irrecognizably irrecognizant irrecollection irreconcilability irreconcilable irreconcilableness irreconcilably irreconcile irreconcilement irreconciliability irreconciliable irreconciliableness irreconciliably irreconciliation irrecordable irrecoverable irrecoverableness irrecoverably irrecusable irrecusably irredeemability irredeemable irredeemableness irredeemably irredeemed irredenta irredential Irredentism Irredentist irredressibility irredressible irredressibly irreducibility irreducible irreducibleness irreducibly irreductibility irreductible irreduction irreferable irreflection irreflective irreflectively irreflectiveness irreflexive irreformability irreformable irrefragability irrefragable irrefragableness irrefragably irrefrangibility irrefrangible irrefrangibleness irrefrangibly irrefusable irrefutability irrefutable irrefutableness irrefutably irregardless irregeneracy irregenerate irregeneration irregular irregularism irregularist irregularity irregularize irregularly irregularness irregulate irregulated irregulation irrelate irrelated irrelation irrelative irrelatively irrelativeness irrelevance irrelevancy irrelevant irrelevantly irreliability irrelievable irreligion irreligionism irreligionist irreligionize irreligiosity irreligious irreligiously irreligiousness irreluctant irremeable irremeably irremediable irremediableness irremediably irrememberable irremissibility irremissible irremissibleness irremissibly irremission irremissive irremovability irremovable irremovableness irremovably irremunerable irrenderable irrenewable irrenunciable irrepair irrepairable irreparability irreparable irreparableness irreparably irrepassable irrepealability irrepealable irrepealableness irrepealably irrepentance irrepentant irrepentantly irreplaceable irreplaceably irrepleviable irreplevisable irreportable irreprehensible irreprehensibleness irreprehensibly irrepresentable irrepresentableness irrepressibility irrepressible irrepressibleness irrepressibly irrepressive irreproachability irreproachable irreproachableness irreproachably irreproducible irreproductive irreprovable irreprovableness irreprovably irreptitious irrepublican irresilient irresistance irresistibility irresistible irresistibleness irresistibly irresoluble irresolubleness irresolute irresolutely irresoluteness irresolution irresolvability irresolvable irresolvableness irresolved irresolvedly irresonance irresonant irrespectability irrespectable irrespectful irrespective irrespectively irrespirable irrespondence irresponsibility irresponsible irresponsibleness irresponsibly irresponsive irresponsiveness irrestrainable irrestrainably irrestrictive irresultive irresuscitable irresuscitably irretention irretentive irretentiveness irreticence irreticent irretraceable irretraceably irretractable irretractile irretrievability irretrievable irretrievableness irretrievably irrevealable irrevealably irreverence irreverend irreverendly irreverent irreverential irreverentialism irreverentially irreverently irreversibility irreversible irreversibleness irreversibly irrevertible irreviewable irrevisable irrevocability irrevocable irrevocableness irrevocably irrevoluble irrigable irrigably irrigant irrigate irrigation irrigational irrigationist irrigative irrigator irrigatorial irrigatory irriguous irriguousness irrision irrisor Irrisoridae irrisory irritability irritable irritableness irritably irritament irritancy irritant irritate irritatedly irritating irritatingly irritation irritative irritativeness irritator irritatory Irritila irritomotile irritomotility irrorate irrotational irrotationally irrubrical irrupt irruptible irruption irruptive irruptively Irvin Irving Irvingesque Irvingiana Irvingism Irvingite Irwin is Isaac Isabel isabelina isabelita Isabella Isabelle Isabelline isabnormal isaconitine isacoustic isadelphous Isadora isagoge isagogic isagogical isagogically isagogics isagon Isaiah Isaian isallobar isallotherm isamine Isander isandrous isanemone isanomal isanomalous isanthous isapostolic Isaria isarioid isatate isatic isatide isatin isatinic Isatis isatogen isatogenic Isaurian Isawa isazoxy isba Iscariot Iscariotic Iscariotical Iscariotism ischemia ischemic ischiac ischiadic ischiadicus ischial ischialgia ischialgic ischiatic ischidrosis ischioanal ischiobulbar ischiocapsular ischiocaudal ischiocavernosus ischiocavernous ischiocele ischiocerite ischiococcygeal ischiofemoral ischiofibular ischioiliac ischioneuralgia ischioperineal ischiopodite ischiopubic ischiopubis ischiorectal ischiorrhogic ischiosacral ischiotibial ischiovaginal ischiovertebral ischium ischocholia ischuretic ischuria ischury Ischyodus Isegrim isenergic isentropic isepiptesial isepiptesis iserine iserite isethionate isethionic Iseum Isfahan Ishmael Ishmaelite Ishmaelitic Ishmaelitish Ishmaelitism ishpingo ishshakku Isiac Isiacal Isidae isidiiferous isidioid isidiophorous isidiose isidium isidoid Isidore Isidorian Isidoric Isinai isindazole isinglass Isis Islam Islamic Islamism Islamist Islamistic Islamite Islamitic Islamitish Islamization Islamize island islander islandhood islandic islandish islandless islandlike islandman islandress islandry islandy islay isle isleless islesman islet Isleta isleted isleward islot ism Ismaelism Ismaelite Ismaelitic Ismaelitical Ismaelitish Ismaili Ismailian Ismailite ismal ismatic ismatical ismaticalness ismdom ismy Isnardia iso isoabnormal isoagglutination isoagglutinative isoagglutinin isoagglutinogen isoalantolactone isoallyl isoamarine isoamide isoamyl isoamylamine isoamylene isoamylethyl isoamylidene isoantibody isoantigen isoapiole isoasparagine isoaurore isobar isobarbaloin isobarbituric isobare isobaric isobarism isobarometric isobase isobath isobathic isobathytherm isobathythermal isobathythermic isobenzofuran isobilateral isobilianic isobiogenetic isoborneol isobornyl isobront isobronton isobutane isobutyl isobutylene isobutyraldehyde isobutyrate isobutyric isobutyryl isocamphor isocamphoric isocaproic isocarbostyril Isocardia Isocardiidae isocarpic isocarpous isocellular isocephalic isocephalism isocephalous isocephaly isocercal isocercy isochasm isochasmic isocheim isocheimal isocheimenal isocheimic isocheimonal isochlor isochlorophyll isochlorophyllin isocholanic isocholesterin isocholesterol isochor isochoric isochromatic isochronal isochronally isochrone isochronic isochronical isochronism isochronize isochronon isochronous isochronously isochroous isocinchomeronic isocinchonine isocitric isoclasite isoclimatic isoclinal isocline isoclinic isocodeine isocola isocolic isocolon isocoria isocorybulbin isocorybulbine isocorydine isocoumarin isocracy isocrat isocratic isocreosol isocrotonic isocrymal isocryme isocrymic isocyanate isocyanic isocyanide isocyanine isocyano isocyanogen isocyanurate isocyanuric isocyclic isocymene isocytic isodactylism isodactylous isodiabatic isodialuric isodiametric isodiametrical isodiazo isodiazotate isodimorphic isodimorphism isodimorphous isodomic isodomous isodomum isodont isodontous isodrome isodulcite isodurene isodynamia isodynamic isodynamical isoelectric isoelectrically isoelectronic isoelemicin isoemodin isoenergetic isoerucic Isoetaceae Isoetales Isoetes isoeugenol isoflavone isoflor isogamete isogametic isogametism isogamic isogamous isogamy isogen isogenesis isogenetic isogenic isogenotype isogenotypic isogenous isogeny isogeotherm isogeothermal isogeothermic isogloss isoglossal isognathism isognathous isogon isogonal isogonality isogonally isogonic isogoniostat isogonism isograft isogram isograph isographic isographical isographically isography isogynous isohaline isohalsine isohel isohemopyrrole isoheptane isohesperidin isohexyl isohydric isohydrocyanic isohydrosorbic isohyet isohyetal isoimmune isoimmunity isoimmunization isoimmunize isoindazole isoindigotin isoindole isoionone isokeraunic isokeraunographic isokeraunophonic Isokontae isokontan isokurtic isolability isolable isolapachol isolate isolated isolatedly isolating isolation isolationism isolationist isolative Isolde isolecithal isoleucine isolichenin isolinolenic isologous isologue isology Isoloma isolysin isolysis isomagnetic isomaltose isomastigate isomelamine isomenthone isomer Isomera isomere isomeric isomerical isomerically isomeride isomerism isomerization isomerize isomeromorphism isomerous isomery isometric isometrical isometrically isometrograph isometropia isometry isomorph isomorphic isomorphism isomorphous Isomyaria isomyarian isoneph isonephelic isonergic isonicotinic isonitramine isonitrile isonitroso isonomic isonomous isonomy isonuclear isonym isonymic isonymy isooleic isoosmosis isopachous isopag isoparaffin isopectic isopelletierin isopelletierine isopentane isoperimeter isoperimetric isoperimetrical isoperimetry isopetalous isophanal isophane isophasal isophene isophenomenal isophoria isophorone isophthalic isophthalyl isophyllous isophylly isopicramic isopiestic isopiestically isopilocarpine isoplere isopleth Isopleura isopleural isopleuran isopleurous isopod Isopoda isopodan isopodiform isopodimorphous isopodous isopogonous isopolite isopolitical isopolity isopoly isoprene isopropenyl isopropyl isopropylacetic isopropylamine isopsephic isopsephism Isoptera isopterous isoptic isopulegone isopurpurin isopycnic isopyre isopyromucic isopyrrole isoquercitrin isoquinine isoquinoline isorcinol isorhamnose isorhodeose isorithm isorosindone isorrhythmic isorropic isosaccharic isosaccharin isoscele isosceles isoscope isoseismal isoseismic isoseismical isoseist isoserine isosmotic Isospondyli isospondylous isospore isosporic isosporous isospory isostasist isostasy isostatic isostatical isostatically isostemonous isostemony isostere isosteric isosterism isostrychnine isosuccinic isosulphide isosulphocyanate isosulphocyanic isosultam isotac isoteles isotely isotheral isothere isotherm isothermal isothermally isothermic isothermical isothermobath isothermobathic isothermous isotherombrose isothiocyanates isothiocyanic isothiocyano isothujone isotimal isotome isotomous isotonia isotonic isotonicity isotony isotope isotopic isotopism isotopy isotrehalose Isotria isotrimorphic isotrimorphism isotrimorphous isotron isotrope isotropic isotropism isotropous isotropy isotype isotypic isotypical isovalerate isovalerianate isovalerianic isovaleric isovalerone isovaline isovanillic isovoluminal isoxanthine isoxazine isoxazole isoxime isoxylene isoyohimbine isozooid ispaghul ispravnik Israel Israeli Israelite Israeliteship Israelitic Israelitish Israelitism Israelitize issanguila Issedoi Issedones issei issite issuable issuably issuance issuant issue issueless issuer issuing ist isthmi Isthmia isthmial isthmian isthmiate isthmic isthmoid isthmus istiophorid Istiophoridae Istiophorus istle istoke Istrian Istvaeones isuret isuretine Isuridae isuroid Isurus Iswara it Ita itabirite itacism itacist itacistic itacolumite itaconate itaconic Itala Itali Italian Italianate Italianately Italianation Italianesque Italianish Italianism Italianist Italianity Italianization Italianize Italianizer Italianly Italic Italical Italically Italican Italicanist Italici Italicism italicization italicize italics Italiote italite Italomania Italon Italophile itamalate itamalic itatartaric itatartrate Itaves itch itchiness itching itchingly itchless itchproof itchreed itchweed itchy itcze Itea Iteaceae Itelmes item iteming itemization itemize itemizer itemy Iten Itenean iter iterable iterance iterancy iterant iterate iteration iterative iteratively iterativeness Ithaca Ithacan Ithacensian ithagine Ithaginis ither Ithiel ithomiid Ithomiidae Ithomiinae ithyphallic Ithyphallus ithyphyllous itineracy itinerancy itinerant itinerantly itinerarian Itinerarium itinerary itinerate itineration itmo Ito Itoism Itoist Itoland Itonama Itonaman Itonia itonidid Itonididae itoubou its itself Ituraean iturite Itylus Itys Itza itzebu iva Ivan ivied ivin ivoried ivorine ivoriness ivorist ivory ivorylike ivorytype ivorywood ivy ivybells ivyberry ivyflower ivylike ivyweed ivywood ivywort iwa iwaiwa iwis Ixia Ixiaceae Ixiama Ixil Ixion Ixionian Ixodes ixodian ixodic ixodid Ixodidae Ixora iyo Izar izar izard Izcateco Izchak Izdubar izle izote iztle Izumi izzard Izzy J j Jaalin jab Jabarite jabbed jabber jabberer jabbering jabberingly jabberment Jabberwock jabberwockian Jabberwocky jabbing jabbingly jabble jabers jabia jabiru jaborandi jaborine jabot jaboticaba jabul jacal Jacaltec Jacalteca jacamar Jacamaralcyon jacameropine Jacamerops jacami jacamin Jacana jacana Jacanidae Jacaranda jacare jacate jacchus jacent jacinth jacinthe Jack jack jackal jackanapes jackanapish jackaroo jackass jackassery jackassification jackassism jackassness jackbird jackbox jackboy jackdaw jackeen jacker jacket jacketed jacketing jacketless jacketwise jackety jackfish jackhammer jackknife jackleg jackman jacko jackpudding jackpuddinghood jackrod jacksaw jackscrew jackshaft jackshay jacksnipe Jackson Jacksonia Jacksonian Jacksonite jackstay jackstone jackstraw jacktan jackweed jackwood Jacky Jackye Jacob jacobaea jacobaean Jacobean Jacobian Jacobic Jacobin Jacobinia Jacobinic Jacobinical Jacobinically Jacobinism Jacobinization Jacobinize Jacobite Jacobitely Jacobitiana Jacobitic Jacobitical Jacobitically Jacobitish Jacobitishly Jacobitism jacobsite Jacobson jacobus jacoby jaconet Jacqueminot Jacques jactance jactancy jactant jactation jactitate jactitation jacu jacuaru jaculate jaculation jaculative jaculator jaculatorial jaculatory jaculiferous Jacunda jacutinga jadder jade jaded jadedly jadedness jadeite jadery jadesheen jadeship jadestone jadish jadishly jadishness jady jaeger jag Jaga Jagannath Jagannatha jagat Jagatai Jagataic Jagath jager jagged jaggedly jaggedness jagger jaggery jaggy jagir jagirdar jagla jagless jagong jagrata jagua jaguar jaguarete Jahve Jahvist Jahvistic jail jailage jailbird jaildom jailer jaileress jailering jailership jailhouse jailish jailkeeper jaillike jailmate jailward jailyard Jaime Jain Jaina Jainism Jainist Jaipuri jajman Jake jake jakes jako Jakob Jakun Jalalaean jalap jalapa jalapin jalkar jalloped jalopy jalouse jalousie jalousied jalpaite Jam jam jama Jamaica Jamaican jaman jamb jambalaya jambeau jambo jambolan jambone jambool jamboree Jambos jambosa jambstone jamdani James Jamesian Jamesina jamesonite jami Jamie jamlike jammedness jammer jammy Jamnia jampan jampani jamrosade jamwood Jan janapa janapan Jane jane Janet jangada Janghey jangkar jangle jangler jangly Janice janiceps Janiculan Janiculum Janiform janissary janitor janitorial janitorship janitress janitrix Janizarian Janizary jank janker jann jannock Janos Jansenism Jansenist Jansenistic Jansenistical Jansenize Janthina Janthinidae jantu janua Januarius January Janus Januslike jaob Jap jap japaconine japaconitine Japan japan Japanee Japanese Japanesque Japanesquely Japanesquery Japanesy Japanicize Japanism Japanization Japanize japanned Japanner japanner japannery Japannish Japanolatry Japanologist Japanology Japanophile Japanophobe Japanophobia jape japer japery Japetus Japheth Japhetic Japhetide Japhetite japing japingly japish japishly japishness Japonic japonica Japonically Japonicize Japonism Japonize Japonizer Japygidae japygoid Japyx Jaqueline Jaquesian jaquima jar jara jaragua jararaca jararacussu jarbird jarble jarbot jardiniere Jared jarfly jarful jarg jargon jargonal jargoneer jargonelle jargoner jargonesque jargonic jargonish jargonist jargonistic jargonium jargonization jargonize jarkman Jarl jarl jarldom jarless jarlship Jarmo jarnut jarool jarosite jarra jarrah jarring jarringly jarringness jarry jarvey Jarvis jasey jaseyed Jasione Jasminaceae jasmine jasmined jasminewood Jasminum jasmone Jason jaspachate jaspagate Jasper jasper jasperated jaspered jasperize jasperoid jaspery jaspidean jaspideous jaspilite jaspis jaspoid jasponyx jaspopal jass jassid Jassidae jassoid Jat jatamansi Jateorhiza jateorhizine jatha jati Jatki Jatni jato Jatropha jatrophic jatrorrhizine Jatulian jaudie jauk jaun jaunce jaunder jaundice jaundiceroot jaunt jauntie jauntily jauntiness jauntingly jaunty jaup Java Javahai javali Javan Javanee Javanese javelin javelina javeline javelineer javer Javitero jaw jawab jawbation jawbone jawbreaker jawbreaking jawbreakingly jawed jawfall jawfallen jawfish jawfoot jawfooted jawless jawsmith jawy Jay jay Jayant Jayesh jayhawk jayhawker jaypie jaywalk jaywalker jazerant Jazyges jazz jazzer jazzily jazziness jazzy jealous jealously jealousness jealousy Jeames Jean jean Jean-Christophe Jean-Pierre Jeanette Jeanie Jeanne Jeannette Jeannie Jeanpaulia jeans Jeany Jebus Jebusi Jebusite Jebusitic Jebusitical Jebusitish jecoral jecorin jecorize jed jedcock jedding jeddock jeel jeep jeer jeerer jeering jeeringly jeerproof jeery jeewhillijers jeewhillikens Jef Jeff jeff jefferisite Jeffersonia Jeffersonian Jeffersonianism jeffersonite Jeffery Jeffie Jeffrey Jehovah Jehovic Jehovism Jehovist Jehovistic jehu jehup jejunal jejunator jejune jejunely jejuneness jejunitis jejunity jejunoduodenal jejunoileitis jejunostomy jejunotomy jejunum jelab jelerang jelick jell jellica jellico jellied jelliedness jellification jellify jellily jelloid jelly jellydom jellyfish jellyleaf jellylike Jelske jelutong Jem jemadar Jemez Jemima jemmily jemminess Jemmy jemmy Jenine jenkin jenna jennerization jennerize jennet jenneting Jennie jennier Jennifer Jenny jenny Jenson jentacular jeofail jeopard jeoparder jeopardize jeopardous jeopardously jeopardousness jeopardy jequirity Jerahmeel Jerahmeelites Jerald jerboa jereed jeremejevite jeremiad Jeremiah Jeremian Jeremianic Jeremias Jeremy jerez jerib jerk jerker jerkily jerkin jerkined jerkiness jerkingly jerkish jerksome jerkwater jerky jerl jerm jermonal Jeroboam Jerome Jeromian Jeronymite jerque jerquer Jerrie Jerry jerry jerryism Jersey jersey Jerseyan jerseyed Jerseyite Jerseyman jert Jerusalem jervia jervina jervine Jesper Jess jess jessakeed jessamine jessamy jessant Jesse Jessean jessed Jessica Jessie jessur jest jestbook jestee jester jestful jesting jestingly jestingstock jestmonger jestproof jestwise jestword Jesu Jesuate Jesuit Jesuited Jesuitess Jesuitic Jesuitical Jesuitically Jesuitish Jesuitism Jesuitist Jesuitize Jesuitocracy Jesuitry Jesus jet jetbead jete Jethro Jethronian jetsam jettage jetted jetter jettied jettiness jettingly jettison jetton jetty jettyhead jettywise jetware Jew jewbird jewbush Jewdom jewel jeweler jewelhouse jeweling jewelless jewellike jewelry jewelsmith jewelweed jewely Jewess jewfish Jewhood Jewish Jewishly Jewishness Jewism Jewless Jewlike Jewling Jewry Jewship Jewstone Jewy jezail Jezebel Jezebelian Jezebelish jezekite jeziah Jezreelite jharal jheel jhool jhow Jhuria Ji Jianyun jib jibbah jibber jibbings jibby jibe jibhead jibi jibman jiboa jibstay jicama Jicaque Jicaquean jicara Jicarilla jiff jiffle jiffy jig jigamaree jigger jiggerer jiggerman jiggers jigget jiggety jigginess jiggish jiggle jiggly jiggumbob jiggy jiglike jigman jihad jikungu Jill jillet jillflirt jilt jiltee jilter jiltish Jim jimbang jimberjaw jimberjawed jimjam Jimmy jimmy jimp jimply jimpness jimpricute jimsedge Jin jina jincamas Jincan Jinchao jing jingal Jingbai jingbang jingle jingled jinglejangle jingler jinglet jingling jinglingly jingly jingo jingodom jingoish jingoism jingoist jingoistic jinja jinjili jink jinker jinket jinkle jinks jinn jinnestan jinni jinniwink jinniyeh Jinny jinny jinriki jinrikiman jinrikisha jinshang jinx jipijapa jipper jiqui jirble jirga Jiri jirkinet Jisheng Jitendra jiti jitneur jitneuse jitney jitneyman jitro jitter jitterbug jitters jittery jiva Jivaran Jivaro Jivaroan jive jixie Jo jo Joachim Joachimite Joan Joanna Joanne Joannite joaquinite Job job jobade jobarbe jobation jobber jobbernowl jobbernowlism jobbery jobbet jobbing jobbish jobble jobholder jobless joblessness jobman jobmaster jobmistress jobmonger jobo jobsmith Jocasta Jocelin Joceline Jocelyn joch Jochen Jock jock jocker jockey jockeydom jockeyish jockeyism jockeylike jockeyship jocko jockteleg jocoque jocose jocosely jocoseness jocoseriosity jocoserious jocosity jocote jocu jocular jocularity jocularly jocularness joculator jocum jocuma jocund jocundity jocundly jocundness jodel jodelr jodhpurs Jodo Joe joe joebush Joel joewood Joey joey jog jogger joggle joggler jogglety jogglework joggly jogtrottism Johan Johann Johanna Johannean Johannes johannes Johannine Johannisberger Johannist Johannite johannite John Johnadreams Johnathan Johnian johnin Johnnie Johnny johnnycake johnnydom Johnsmas Johnsonese Johnsonian Johnsoniana Johnsonianism Johnsonianly Johnsonism johnstrupite join joinable joinant joinder joiner joinery joining joiningly joint jointage jointed jointedly jointedness jointer jointing jointist jointless jointly jointress jointure jointureless jointuress jointweed jointworm jointy joist joisting joistless jojoba joke jokeless jokelet jokeproof joker jokesmith jokesome jokesomeness jokester jokingly jokish jokist jokul joky joll jolleyman jollier jollification jollify jollily jolliness jollity jollop jolloped jolly jollytail Joloano jolt jolter jolterhead jolterheaded jolterheadedness jolthead joltiness jolting joltingly joltless joltproof jolty Jon Jonah Jonahesque Jonahism Jonas Jonathan Jonathanization Jones Jonesian Jong jonglery jongleur Joni jonque jonquil jonquille Jonsonian Jonval jonvalization jonvalize jookerie joola joom Joon Jophiel Jordan jordan Jordanian jordanite joree Jorge Jorist jorum Jos Jose josefite joseite Joseph Josepha Josephine Josephinism josephinite Josephism Josephite Josh josh josher joshi Joshua Josiah josie Josip joskin joss jossakeed josser jostle jostlement jostler jot jota jotation jotisi Jotnian jotter jotting jotty joubarb Joubert joug jough jouk joukerypawkery joule joulean joulemeter jounce journal journalese journalish journalism journalist journalistic journalistically journalization journalize journalizer journey journeycake journeyer journeying journeyman journeywoman journeywork journeyworker jours joust jouster Jova Jove Jovial jovial jovialist jovialistic joviality jovialize jovially jovialness jovialty Jovian Jovianly Jovicentric Jovicentrical Jovicentrically jovilabe Joviniamish Jovinian Jovinianist Jovite jow jowar jowari jowel jower jowery jowl jowler jowlish jowlop jowly jowpy jowser jowter joy joyance joyancy joyant Joyce joyful joyfully joyfulness joyhop joyleaf joyless joylessly joylessness joylet joyous joyously joyousness joyproof joysome joyweed Jozy Ju Juan Juang juba jubate jubbah jubbe jube juberous jubilance jubilancy jubilant jubilantly jubilarian jubilate jubilatio jubilation jubilatory jubilean jubilee jubilist jubilization jubilize jubilus juck juckies Jucuna jucundity jud Judaeomancy Judaeophile Judaeophilism Judaeophobe Judaeophobia Judah Judahite Judaic Judaica Judaical Judaically Judaism Judaist Judaistic Judaistically Judaization Judaize Judaizer Judas Judaslike judcock Jude Judean judex Judge judge judgeable judgelike judger judgeship judgingly judgmatic judgmatical judgmatically judgment Judica judicable judicate judication judicative judicator judicatorial judicatory judicature judices judiciable judicial judiciality judicialize judicially judicialness judiciarily judiciary judicious judiciously judiciousness Judith judo Judophobism Judy Juergen jufti jug Juga jugal jugale Jugatae jugate jugated jugation juger jugerum jugful jugger Juggernaut juggernaut Juggernautish juggins juggle jugglement juggler jugglery juggling jugglingly Juglandaceae juglandaceous Juglandales juglandin Juglans juglone jugular Jugulares jugulary jugulate jugulum jugum Jugurthine Juha juice juiceful juiceless juicily juiciness juicy jujitsu juju jujube jujuism jujuist juke jukebox Jule julep Jules Juletta Julia Julian Juliana Juliane Julianist Julianto julid Julidae julidan Julie Julien julienite julienne Juliet Julietta julio Julius juloid Juloidea juloidian julole julolidin julolidine julolin juloline Julus July Julyflower Jumada Jumana jumart jumba jumble jumblement jumbler jumblingly jumbly jumbo jumboesque jumboism jumbuck jumby jumelle jument jumentous jumfru jumillite jumma jump jumpable jumper jumperism jumpiness jumpingly jumpness jumprock jumpseed jumpsome jumpy Jun Juncaceae juncaceous Juncaginaceae juncaginaceous juncagineous junciform juncite Junco Juncoides juncous junction junctional junctive juncture Juncus June june Juneberry Junebud junectomy Juneflower Jungermannia Jungermanniaceae jungermanniaceous Jungermanniales jungle jungled jungleside junglewards junglewood jungli jungly juniata junior juniorate juniority juniorship juniper Juniperaceae Juniperus Junius junk junkboard Junker junker Junkerdom junkerdom junkerish Junkerism junkerism junket junketer junketing junking junkman Juno Junoesque Junonia Junonian junt junta junto jupati jupe Jupiter jupon Jur Jura jural jurally jurament juramentado juramental juramentally juramentum Jurane jurant jurara Jurassic jurat juration jurative jurator juratorial juratory jure jurel Jurevis Juri juridic juridical juridically juring jurisconsult jurisdiction jurisdictional jurisdictionalism jurisdictionally jurisdictive jurisprudence jurisprudent jurisprudential jurisprudentialist jurisprudentially jurist juristic juristical juristically juror jurupaite jury juryless juryman jurywoman jusquaboutisme jusquaboutist jussel Jussi Jussiaea Jussiaean Jussieuan jussion jussive jussory just justen justice justicehood justiceless justicelike justicer justiceship justiceweed Justicia justiciability justiciable justicial justiciar justiciarship justiciary justiciaryship justicies justifiability justifiable justifiableness justifiably justification justificative justificator justificatory justifier justify justifying justifyingly Justin Justina Justine Justinian Justinianian Justinianist justly justment justness justo Justus jut Jute jute Jutic Jutish jutka Jutlander Jutlandish jutting juttingly jutty Juturna Juvavian juvenal Juvenalian juvenate juvenescence juvenescent juvenile juvenilely juvenileness juvenilify juvenilism juvenility juvenilize Juventas juventude Juverna juvia juvite juxtalittoral juxtamarine juxtapose juxtaposit juxtaposition juxtapositional juxtapositive juxtapyloric juxtaspinal juxtaterrestrial juxtatropical Juyas Juza Jwahar Jynginae jyngine Jynx jynx K k ka Kababish Kabaka kabaragoya Kabard Kabardian kabaya Kabbeljaws kabel kaberu kabiet Kabirpanthi Kabistan Kabonga kabuki Kabuli Kabyle Kachari Kachin kachin Kadaga Kadarite kadaya Kadayan Kaddish kadein kadikane kadischi Kadmi kados Kadu kaempferol Kaf Kafa kaferita Kaffir kaffir kaffiyeh Kaffraria Kaffrarian Kafir kafir Kafiri kafirin kafiz Kafka Kafkaesque kafta kago kagu kaha kahar kahau kahikatea kahili kahu kahuna kai Kaibab Kaibartha kaid kaik kaikara kaikawaka kail kailyard kailyarder kailyardism Kaimo Kainah kainga kainite kainsi kainyn kairine kairoline kaiser kaiserdom kaiserism kaisership kaitaka Kaithi kaiwhiria kaiwi Kaj Kajar kajawah kajugaru kaka Kakan kakapo kakar kakarali kakariki Kakatoe Kakatoidae kakawahie kaki kakidrosis kakistocracy kakkak kakke kakortokite kala kaladana kalamalo kalamansanai Kalamian Kalanchoe Kalandariyah Kalang Kalapooian kalashnikov kalasie Kaldani kale kaleidophon kaleidophone kaleidoscope kaleidoscopic kaleidoscopical kaleidoscopically Kalekah kalema Kalendae kalends kalewife kaleyard kali kalian Kaliana kaliborite kalidium kaliform kaligenous Kalinga kalinite kaliophilite kalipaya Kalispel kalium kallah kallege kallilite Kallima kallitype Kalmarian Kalmia Kalmuck kalo kalogeros kalokagathia kalon kalong kalpis kalsomine kalsominer kalumpang kalumpit Kalwar kalymmaukion kalymmocyte kamachile kamacite kamahi kamala kamaloka kamansi kamao Kamares kamarezite kamarupa kamarupic kamas Kamasin Kamass kamassi Kamba kambal kamboh Kamchadal Kamchatkan kame kameeldoorn kameelthorn Kamel kamelaukion kamerad kamias kamichi kamik kamikaze Kamiya kammalan kammererite kamperite kampong kamptomorph kan kana kanae kanagi Kanaka kanap kanara Kanarese kanari kanat Kanauji Kanawari Kanawha kanchil kande Kandelia kandol kaneh kanephore kanephoros Kaneshite Kanesian kang kanga kangani kangaroo kangarooer Kangli Kanji Kankanai kankie kannume kanoon Kanred kans Kansa Kansan kantele kanteletar kanten Kanthan Kantian Kantianism Kantism Kantist Kanuri Kanwar kaoliang kaolin kaolinate kaolinic kaolinite kaolinization kaolinize kapa kapai kapeika kapok kapp kappa kappe kappland kapur kaput Karabagh karagan Karaism Karaite Karaitism karaka Karakatchan Karakul karakul Karamojo karamu karaoke Karatas karate Karaya karaya karbi karch kareao kareeta Karel karela Karelian Karen Karharbari Kari karite Karl Karling Karluk karma Karmathian karmic karmouth karo kaross karou karree karri Karroo karroo karrusel karsha Karshuni Karst karst karstenite karstic kartel Karthli kartometer kartos Kartvel Kartvelian karwar Karwinskia karyaster karyenchyma karyochrome karyochylema karyogamic karyogamy karyokinesis karyokinetic karyologic karyological karyologically karyology karyolymph Karyolysidae karyolysis Karyolysus karyolytic karyomere karyomerite karyomicrosome karyomitoic karyomitome karyomiton karyomitosis karyomitotic karyon karyoplasm karyoplasma karyoplasmatic karyoplasmic karyopyknosis karyorrhexis karyoschisis karyosome karyotin karyotype kasa kasbah kasbeke kascamiol Kasha Kashan kasher kashga kashi kashima Kashmiri Kashmirian Kashoubish kashruth Kashube Kashubian Kashyapa kasida Kasikumuk Kaska Kaskaskia kasm kasolite kassabah Kassak Kassite kassu kastura Kasubian kat Katabanian katabasis katabatic katabella katabolic katabolically katabolism katabolite katabolize katabothron katachromasis katacrotic katacrotism katagenesis katagenetic katakana katakinesis katakinetic katakinetomer katakinetomeric katakiribori katalase katalysis katalyst katalytic katalyze katamorphism kataphoresis kataphoretic kataphoric kataphrenia kataplasia kataplectic kataplexy katar katastate katastatic katathermometer katatonia katatonic katatype katchung katcina Kate kath Katha katha kathal Katharina Katharine katharometer katharsis kathartic kathemoglobin kathenotheism Kathleen kathodic Kathopanishad Kathryn Kathy Katie Katik Katinka katipo Katipunan Katipuneros katmon katogle Katrine Katrinka katsup Katsuwonidae katuka Katukina katun katurai Katy katydid Kauravas kauri kava kavaic kavass Kavi Kaw kawaka Kawchodinne kawika Kay kay kayak kayaker Kayan Kayasth Kayastha kayles kayo Kayvan Kazak kazi kazoo Kazuhiro kea keach keacorn Keatsian keawe keb kebab kebbie kebbuck kechel keck keckle keckling kecksy kecky ked Kedar Kedarite keddah kedge kedger kedgeree kedlock Kedushshah Kee keech keek keeker keel keelage keelbill keelblock keelboat keelboatman keeled keeler keelfat keelhale keelhaul keelie keeling keelivine keelless keelman keelrake keelson keen keena keened keener keenly keenness keep keepable keeper keeperess keepering keeperless keepership keeping keepsake keepsaky keepworthy keerogue Kees keeshond keest keet keeve Keewatin kef keffel kefir kefiric Kefti Keftian Keftiu keg kegler kehaya kehillah kehoeite Keid keilhauite keita Keith keitloa Kekchi kekotene kekuna kelchin keld Kele kele kelebe kelectome keleh kelek kelep Kelima kelk kell kella kellion kellupweed Kelly kelly keloid keloidal kelp kelper kelpfish kelpie kelpware kelpwort kelpy kelt kelter Keltoi kelty Kelvin kelvin kelyphite Kemal Kemalism Kemalist kemb kemp kemperyman kempite kemple kempster kempt kempy Ken ken kenaf Kenai kenareh kench kend kendir kendyr Kenelm Kenipsim kenlore kenmark Kenn Kennebec kennebecker kennebunker Kennedya kennel kennelly kennelman kenner Kenneth kenning kenningwort kenno keno kenogenesis kenogenetic kenogenetically kenogeny kenosis kenotic kenoticism kenoticist kenotism kenotist kenotoxin kenotron Kenseikai kensington Kensitite kenspac kenspeck kenspeckle Kent kent kentallenite Kentia Kenticism Kentish Kentishman kentledge Kenton kentrogon kentrolite Kentuckian Kentucky kenyte kep kepi Keplerian kept Ker keracele keralite kerana keraphyllocele keraphyllous kerasin kerasine kerat keratalgia keratectasia keratectomy Keraterpeton keratin keratinization keratinize keratinoid keratinose keratinous keratitis keratoangioma keratocele keratocentesis keratoconjunctivitis keratoconus keratocricoid keratode keratodermia keratogenic keratogenous keratoglobus keratoglossus keratohelcosis keratohyal keratoid Keratoidea keratoiritis Keratol keratoleukoma keratolysis keratolytic keratoma keratomalacia keratome keratometer keratometry keratomycosis keratoncus keratonosus keratonyxis keratophyre keratoplastic keratoplasty keratorrhexis keratoscope keratoscopy keratose keratosis keratotome keratotomy keratto keraulophon keraulophone Keraunia keraunion keraunograph keraunographic keraunography keraunophone keraunophonic keraunoscopia keraunoscopy kerbstone kerchief kerchiefed kerchoo kerchug kerchunk kerectomy kerel Keres Keresan Kerewa kerf kerflap kerflop kerflummox Kerite Kermanji Kermanshah kermes kermesic kermesite kermis kern kernel kerneled kernelless kernelly kerner kernetty kernish kernite kernos kerogen kerosene kerplunk Kerri Kerria kerrie kerrikerri kerril kerrite Kerry kerry kersantite kersey kerseymere kerslam kerslosh kersmash kerugma kerwham kerygma kerygmatic kerykeion kerystic kerystics Keryx kesslerman kestrel ket keta ketal ketapang ketazine ketch ketchcraft ketchup ketembilla keten ketene ketimide ketimine ketipate ketipic keto ketogen ketogenesis ketogenic ketoheptose ketohexose ketoketene ketol ketole ketolysis ketolytic ketone ketonemia ketonic ketonimid ketonimide ketonimin ketonimine ketonization ketonize ketonuria ketose ketoside ketosis ketosuccinic ketoxime kette ketting kettle kettlecase kettledrum kettledrummer kettleful kettlemaker kettlemaking kettler ketty Ketu ketuba ketupa ketyl keup Keuper keurboom kevalin Kevan kevel kevelhead Kevin kevutzah Kevyn Keweenawan keweenawite kewpie kex kexy key keyage keyboard keyed keyhole keyless keylet keylock Keynesian Keynesianism keynote keynoter keyseater keyserlick keysmith keystone keystoned Keystoner keyway Kha khaddar khadi khagiarite khahoon khaiki khair khaja khajur khakanship khaki khakied Khaldian khalifa Khalifat Khalkha khalsa Khami khamsin Khamti khan khanate khanda khandait khanjar khanjee khankah khansamah khanum khar kharaj Kharia Kharijite Kharoshthi kharouba kharroubah Khartoumer kharua Kharwar Khasa Khasi khass khat khatib khatri Khatti Khattish Khaya Khazar Khazarian khediva khedival khedivate khedive khediviah khedivial khediviate khepesh Kherwari Kherwarian khet Khevzur khidmatgar Khila khilat khir khirka Khitan Khivan Khlysti Khmer Khoja khoja khoka Khokani Khond Khorassan khot Khotan Khotana Khowar khu Khuai khubber khula khuskhus Khussak khutbah khutuktu Khuzi khvat Khwarazmian kiack kiaki kialee kiang Kiangan kiaugh kibber kibble kibbler kibblerman kibe kibei kibitka kibitz kibitzer kiblah kibosh kiby kick kickable Kickapoo kickback kickee kicker kicking kickish kickless kickoff kickout kickseys kickshaw kickup Kidder kidder Kidderminster kiddier kiddish kiddush kiddushin kiddy kidhood kidlet kidling kidnap kidnapee kidnaper kidney kidneyroot kidneywort Kids kidskin kidsman kiefekil Kieffer kiekie kiel kier Kieran kieselguhr kieserite kiestless kieye Kiho kikar Kikatsik kikawaeo kike Kiki kiki Kikki Kikongo kiku kikuel kikumon Kikuyu kil kiladja kilah kilampere kilan kilbrickenite kildee kilderkin kileh kilerg kiley Kilhamite kilhig kiliare kilim kill killable killadar Killarney killas killcalf killcrop killcu killdeer killeekillee killeen killer killick killifish killing killingly killingness killinite killogie killweed killwort killy Kilmarnock kiln kilneye kilnhole kilnman kilnrib kilo kiloampere kilobar kilocalorie kilocycle kilodyne kilogauss kilogram kilojoule kiloliter kilolumen kilometer kilometrage kilometric kilometrical kiloparsec kilostere kiloton kilovar kilovolt kilowatt kilp kilt kilter kiltie kilting Kiluba Kim kim kimbang kimberlin kimberlite Kimberly Kimbundu Kimeridgian kimigayo Kimmo kimnel kimono kimonoed kin kina kinaesthesia kinaesthesis kinah kinase kinbote Kinch kinch kinchin kinchinmort kincob kind kindergarten kindergartener kindergartening kindergartner Kinderhook kindheart kindhearted kindheartedly kindheartedness kindle kindler kindlesome kindlily kindliness kindling kindly kindness kindred kindredless kindredly kindredness kindredship kinematic kinematical kinematically kinematics kinematograph kinemometer kineplasty kinepox kinesalgia kinescope kinesiatric kinesiatrics kinesic kinesics kinesimeter kinesiologic kinesiological kinesiology kinesiometer kinesis kinesitherapy kinesodic kinesthesia kinesthesis kinesthetic kinetic kinetical kinetically kinetics kinetochore kinetogenesis kinetogenetic kinetogenetically kinetogenic kinetogram kinetograph kinetographer kinetographic kinetography kinetomer kinetomeric kinetonema kinetonucleus kinetophone kinetophonograph kinetoplast kinetoscope kinetoscopic King king kingbird kingbolt kingcob kingcraft kingcup kingdom kingdomed kingdomful kingdomless kingdomship kingfish kingfisher kinghead kinghood kinghunter kingless kinglessness kinglet kinglihood kinglike kinglily kingliness kingling kingly kingmaker kingmaking kingpiece kingpin kingrow kingship kingsman Kingu kingweed kingwood Kinipetu kink kinkable kinkaider kinkajou kinkcough kinkhab kinkhost kinkily kinkiness kinkle kinkled kinkly kinksbush kinky kinless kinnikinnick kino kinofluous kinology kinoplasm kinoplasmic Kinorhyncha kinospore Kinosternidae Kinosternon kinotannic kinsfolk kinship kinsman kinsmanly kinsmanship kinspeople kinswoman kintar Kintyre kioea Kioko kiosk kiotome Kiowa Kiowan Kioway kip kipage Kipchak kipe Kiplingese Kiplingism kippeen kipper kipperer kippy kipsey kipskin Kiranti Kirghiz Kirghizean kiri Kirillitsa kirimon Kirk kirk kirker kirkify kirking kirkinhead kirklike kirkman kirktown kirkward kirkyard Kirman kirmew kirn kirombo kirsch Kirsten Kirsty kirtle kirtled Kirundi kirve kirver kischen kish Kishambala kishen kishon kishy kiskatom Kislev kismet kismetic kisra kiss kissability kissable kissableness kissage kissar kisser kissing kissingly kissproof kisswise kissy kist kistful kiswa Kiswahili Kit kit kitab kitabis Kitalpha Kitamat Kitan kitar kitcat kitchen kitchendom kitchener kitchenette kitchenful kitchenless kitchenmaid kitchenman kitchenry kitchenward kitchenwards kitchenware kitchenwife kitcheny kite kiteflier kiteflying kith kithe kithless kitish Kitkahaxki Kitkehahki kitling Kitlope Kittatinny kittel kitten kittendom kittenhearted kittenhood kittenish kittenishly kittenishness kittenless kittenship kitter kittereen kitthoge kittiwake kittle kittlepins kittles kittlish kittly kittock kittul Kitty kitty kittysol Kitunahan kiva kiver kivikivi kivu Kiwai Kiwanian Kiwanis kiwi kiwikiwi kiyas kiyi Kizil Kizilbash Kjeldahl kjeldahlization kjeldahlize klafter klaftern klam Klamath Klan Klanism Klansman Klanswoman klaprotholite Klaskino Klaudia Klaus klavern Klaxon klaxon Klebsiella kleeneboc Kleinian Kleistian klendusic klendusity klendusive klepht klephtic klephtism kleptic kleptistic kleptomania kleptomaniac kleptomanist kleptophobia klicket Klikitat Kling Klingsor klip klipbok klipdachs klipdas klipfish klippe klippen klipspringer klister klockmannite klom Klondike Klondiker klootchman klop klops klosh Kluxer klystron kmet knab knabble knack knackebrod knacker knackery knacky knag knagged knaggy knap knapbottle knape knappan Knapper knapper knappish knappishly knapsack knapsacked knapsacking knapweed knar knark knarred knarry Knautia knave knavery knaveship knavess knavish knavishly knavishness knawel knead kneadability kneadable kneader kneading kneadingly knebelite knee kneebrush kneecap kneed kneehole kneel kneeler kneelet kneeling kneelingly kneepad kneepan kneepiece kneestone Kneiffia Kneippism knell knelt Knesset knet knew knez knezi kniaz kniazi knick knicker Knickerbocker knickerbockered knickerbockers knickered knickers knickknack knickknackatory knickknacked knickknackery knickknacket knickknackish knickknacky knickpoint knife knifeboard knifeful knifeless knifelike knifeman knifeproof knifer knifesmith knifeway knight knightage knightess knighthead knighthood Knightia knightless knightlihood knightlike knightliness knightling knightly knightship knightswort Kniphofia Knisteneaux knit knitback knitch knitted knitter knitting knittle knitwear knitweed knitwork knived knivey knob knobbed knobber knobbiness knobble knobbler knobbly knobby knobkerrie knoblike knobstick knobstone knobular knobweed knobwood knock knockabout knockdown knockemdown knocker knocking knockless knockoff knockout knockstone knockup knoll knoller knolly knop knopite knopped knopper knoppy knopweed knorhaan Knorria knosp knosped Knossian knot knotberry knotgrass knothole knothorn knotless knotlike knotroot knotted knotter knottily knottiness knotting knotty knotweed knotwork knotwort knout know knowability knowable knowableness knowe knower knowing knowingly knowingness knowledge knowledgeable knowledgeableness knowledgeably knowledged knowledgeless knowledgement knowledging known knowperts Knoxian Knoxville knoxvillite knub knubbly knubby knublet knuckle knucklebone knuckled knuckler knuckling knuckly knuclesome Knudsen knur knurl knurled knurling knurly Knut knut Knute knutty knyaz knyazi Ko ko koa koae koala koali Koasati kob koban kobellite kobi kobird kobold kobong kobu Kobus Koch Kochab Kochia kochliarion koda Kodagu Kodak kodak kodaker kodakist kodakry Kodashim kodro kodurite Koeberlinia Koeberliniaceae koeberliniaceous koechlinite Koeksotenok koel Koellia Koelreuteria koenenite Koeri koff koft koftgar koftgari koggelmannetje Kogia Kohathite Koheleth kohemp Kohen Kohistani Kohl kohl Kohlan kohlrabi kohua koi Koiari Koibal koil koila koilanaglyphic koilon koimesis Koine koine koinon koinonia Koipato Koitapu kojang Kojiki kokako kokam kokan kokerboom kokil kokio koklas koklass Koko koko kokoon Kokoona kokoromiko kokowai kokra koksaghyz koku kokum kokumin kokumingun Kol kola kolach Kolarian Koldaji kolea koleroga kolhoz Koli kolinski kolinsky Kolis kolkhos kolkhoz Kolkka kollast kollaster koller kollergang kolo kolobion kolobus kolokolo kolsun koltunna koltunnor Koluschan Kolush Komati komatik kombu Kome Komi kominuter kommetje kommos komondor kompeni Komsomol kon kona konak Konariot Konde Kongo Kongoese Kongolese kongoni kongsbergite kongu Konia Koniaga Koniga konimeter koninckite konini koniology koniscope konjak Konkani Konomihu Konrad konstantin Konstantinos kontakion Konyak kooka kookaburra kookeree kookery kookri koolah kooletah kooliman koolokamba Koolooly koombar koomkie Koorg kootcha Kootenay kop Kopagmiut kopeck koph kopi koppa koppen koppite Koprino kor Kora kora koradji Korah Korahite Korahitic korait korakan Koran Korana Koranic Koranist korari Kore kore Korean korec koreci Koreish Koreishite korero Koreshan Koreshanity kori korimako korin Kornephorus kornerupine kornskeppa kornskeppur korntonde korntonder korntunna korntunnur Koroa koromika koromiko korona korova korrel korrigum korumburra koruna Korwa Kory Koryak korymboi korymbos korzec kos Kosalan Koschei kosher Kosimo kosin kosmokrator Koso kosong kosotoxin Kossaean Kossean Kosteletzkya koswite Kota kotal Kotar koto Kotoko kotschubeite kottigite kotuku kotukutuku kotwal kotwalee kotyle kotylos kou koulan Koungmiut kouza kovil Kowagmiut kowhai kowtow koyan kozo Kpuesi Kra kra kraal kraft Krag kragerite krageroite krait kraken krakowiak kral Krama krama Krameria Krameriaceae krameriaceous kran krantzite Krapina kras krasis kratogen kratogenic Kraunhia kraurite kraurosis kraurotic krausen krausite kraut kreis Kreistag kreistle kreittonite krelos kremersite kremlin krems kreng krennerite Krepi kreplech kreutzer kriegspiel krieker Krigia krimmer krina Kriophoros Kris Krishna Krishnaism Krishnaist Krishnaite Krishnaitic Kristen Kristi Kristian Kristin Kristinaux krisuvigite kritarchy Krithia Kriton kritrima krobyloi krobylos krocket krohnkite krome kromeski kromogram kromskop krona krone kronen kroner Kronion kronor kronur Kroo kroon krosa krouchka kroushka Kru Krugerism Krugerite Kruman krummhorn kryokonite krypsis kryptic krypticism kryptocyanine kryptol kryptomere krypton Krzysztof Kshatriya Kshatriyahood Kua Kuan kuan Kuar Kuba kuba Kubachi Kubanka kubba Kubera kubuklion Kuchean kuchen kudize kudos Kudrun kudu kudzu Kuehneola kuei Kufic kuge kugel Kuhnia Kui kuichua Kuki kukoline kukri kuku kukui Kukulcan kukupa Kukuruku kula kulack Kulah kulah kulaite kulak kulakism Kulanapan kulang Kuldip Kuli kulimit kulkarni kullaite Kullani kulm kulmet Kulturkampf Kulturkreis Kuman kumbi kumhar kumiss kummel Kumni kumquat kumrah Kumyk kunai Kunbi Kundry Kuneste kung kunk kunkur Kunmiut kunzite Kuomintang kupfernickel kupfferite kuphar kupper Kuranko kurbash kurchicine kurchine Kurd Kurdish Kurdistan kurgan Kuri Kurilian Kurku kurmburra Kurmi Kuroshio kurrajong Kurt kurtosis Kuruba Kurukh kuruma kurumaya Kurumba kurung kurus kurvey kurveyor kusa kusam Kusan kusha Kushshu kusimansel kuskite kuskos kuskus Kuskwogmiut Kustenau kusti Kusum kusum kutcha Kutchin Kutenai kuttab kuttar kuttaur kuvasz Kuvera kvass kvint kvinter Kwakiutl kwamme kwan Kwannon Kwapa kwarta kwarterka kwazoku kyack kyah kyar kyat kyaung Kybele Kyklopes Kyklops kyl Kyle kyle kylite kylix Kylo kymation kymatology kymbalon kymogram kymograph kymographic kynurenic kynurine kyphoscoliosis kyphoscoliotic Kyphosidae kyphosis kyphotic Kyrie kyrine kyschtymite kyte Kyu Kyung Kyurin Kyurinish L l la laager laang lab Laban labara labarum labba labber labdacism labdacismus labdanum labefact labefactation labefaction labefy label labeler labella labellate labeller labelloid labellum labia labial labialism labialismus labiality labialization labialize labially Labiatae labiate labiated labidophorous Labidura Labiduridae labiella labile lability labilization labilize labioalveolar labiocervical labiodental labioglossal labioglossolaryngeal labioglossopharyngeal labiograph labioguttural labiolingual labiomancy labiomental labionasal labiopalatal labiopalatalize labiopalatine labiopharyngeal labioplasty labiose labiotenaculum labiovelar labioversion labis labium lablab labor laborability laborable laborage laborant laboratorial laboratorian laboratory labordom labored laboredly laboredness laborer laboress laborhood laboring laboringly laborious laboriously laboriousness laborism laborist laborite laborless laborous laborously laborousness laborsaving laborsome laborsomely laborsomeness Laboulbenia Laboulbeniaceae laboulbeniaceous Laboulbeniales labour labra Labrador Labradorean labradorite labradoritic labral labret labretifery Labridae labroid Labroidea labrosaurid labrosauroid Labrosaurus labrose labrum Labrus labrusca labrys Laburnum labyrinth labyrinthal labyrinthally labyrinthian labyrinthibranch labyrinthibranchiate Labyrinthibranchii labyrinthic labyrinthical labyrinthically Labyrinthici labyrinthiform labyrinthine labyrinthitis Labyrinthodon labyrinthodont Labyrinthodonta labyrinthodontian labyrinthodontid labyrinthodontoid Labyrinthula Labyrinthulidae lac lacca laccaic laccainic laccase laccol laccolith laccolithic laccolitic lace lacebark laced Lacedaemonian laceflower laceleaf laceless lacelike lacemaker lacemaking laceman lacepiece lacepod lacer lacerability lacerable lacerant lacerate lacerated lacerately laceration lacerative Lacerta Lacertae lacertian Lacertid Lacertidae lacertiform Lacertilia lacertilian lacertiloid lacertine lacertoid lacertose lacery lacet lacewing lacewoman lacewood lacework laceworker laceybark lache Lachenalia laches Lachesis Lachnanthes Lachnosterna lachryma lachrymae lachrymaeform lachrymal lachrymally lachrymalness lachrymary lachrymation lachrymator lachrymatory lachrymiform lachrymist lachrymogenic lachrymonasal lachrymosal lachrymose lachrymosely lachrymosity lachrymous lachsa lacily Lacinaria laciness lacing lacinia laciniate laciniated laciniation laciniform laciniola laciniolate laciniose lacinula lacinulate lacinulose lacis lack lackadaisical lackadaisicality lackadaisically lackadaisicalness lackadaisy lackaday lacker lackey lackeydom lackeyed lackeyism lackeyship lackland lackluster lacklusterness lacklustrous lacksense lackwit lackwittedly lackwittedness lacmoid lacmus Laconian Laconic laconic laconica laconically laconicalness laconicism laconicum laconism laconize laconizer Lacosomatidae lacquer lacquerer lacquering lacquerist lacroixite lacrosse lacrosser lacrym lactagogue lactalbumin lactam lactamide lactant lactarene lactarious lactarium Lactarius lactary lactase lactate lactation lactational lacteal lactean lactenin lacteous lactesce lactescence lactescency lactescent lactic lacticinia lactid lactide lactiferous lactiferousness lactific lactifical lactification lactiflorous lactifluous lactiform lactifuge lactify lactigenic lactigenous lactigerous lactim lactimide lactinate lactivorous lacto lactobacilli Lactobacillus lactobacillus lactobutyrometer lactocele lactochrome lactocitrate lactodensimeter lactoflavin lactoglobulin lactoid lactol lactometer lactone lactonic lactonization lactonize lactophosphate lactoproteid lactoprotein lactoscope lactose lactoside lactosuria lactothermometer lactotoxin lactovegetarian Lactuca lactucarium lactucerin lactucin lactucol lactucon lactyl lacuna lacunae lacunal lacunar lacunaria lacunary lacune lacunose lacunosity lacunule lacunulose lacuscular lacustral lacustrian lacustrine lacwork lacy lad Ladakhi ladakin ladanigerous ladanum ladder laddered laddering ladderlike ladderway ladderwise laddery laddess laddie laddikie laddish laddock lade lademan laden lader ladhood ladies ladify Ladik Ladin lading Ladino ladkin ladle ladleful ladler ladlewood ladrone ladronism ladronize lady ladybird ladybug ladyclock ladydom ladyfinger ladyfish ladyfly ladyfy ladyhood ladyish ladyism ladykin ladykind ladyless ladylike ladylikely ladylikeness ladyling ladylintywhite ladylove ladyly ladyship Ladytide Laelia laemodipod Laemodipoda laemodipodan laemodipodiform laemodipodous laemoparalysis laemostenosis laeotropic laeotropism Laestrygones laet laeti laetic Laevigrada laevoduction laevogyrate laevogyre laevogyrous laevolactic laevorotation laevorotatory laevotartaric laevoversion lafayette Lafite lag lagan lagarto lagen lagena Lagenaria lagend lageniform lager Lagerstroemia Lagetta lagetto laggar laggard laggardism laggardly laggardness lagged laggen lagger laggin lagging laglast lagna lagniappe lagomorph Lagomorpha lagomorphic lagomorphous Lagomyidae lagonite lagoon lagoonal lagoonside lagophthalmos lagopode lagopodous lagopous Lagopus Lagorchestes lagostoma Lagostomus Lagothrix Lagrangian Lagthing Lagting Laguncularia Lagunero Lagurus lagwort Lahnda Lahontan Lahuli Lai lai Laibach laic laical laicality laically laich laicism laicity laicization laicize laicizer laid laigh lain laine laiose lair lairage laird lairdess lairdie lairdly lairdocracy lairdship lairless lairman lairstone lairy laitance laity Lak lak lakarpite lakatoi lake lakeland lakelander lakeless lakelet lakelike lakemanship laker lakeside lakeward lakeweed lakie laking lakish lakishness lakism lakist Lakota Lakshmi laky lalang lall Lallan Lalland lallation lalling lalo laloneurosis lalopathy lalophobia laloplegia lam lama lamaic Lamaism Lamaist Lamaistic Lamaite Lamanism Lamanite Lamano lamantin lamany Lamarckia Lamarckian Lamarckianism Lamarckism lamasary lamasery lamastery lamb Lamba lamba Lambadi lambale lambaste lambda lambdacism lambdoid lambdoidal lambeau lambency lambent lambently lamber Lambert lambert lambhood lambie lambiness lambish lambkill lambkin Lamblia lambliasis lamblike lambling lambly lamboys lambrequin lambsdown lambskin lambsuccory lamby lame lamedh lameduck lamel lamella lamellar Lamellaria Lamellariidae lamellarly lamellary lamellate lamellated lamellately lamellation lamellibranch Lamellibranchia Lamellibranchiata lamellibranchiate lamellicorn lamellicornate Lamellicornes Lamellicornia lamellicornous lamelliferous lamelliform lamellirostral lamellirostrate Lamellirostres lamelloid lamellose lamellosity lamellule lamely lameness lament lamentable lamentableness lamentably lamentation lamentational lamentatory lamented lamentedly lamenter lamentful lamenting lamentingly lamentive lamentory lamester lamestery lameter lametta lamia Lamiaceae lamiaceous lamiger lamiid Lamiidae Lamiides Lamiinae lamin lamina laminability laminable laminae laminar Laminaria Laminariaceae laminariaceous Laminariales laminarian laminarin laminarioid laminarite laminary laminate laminated lamination laminboard laminectomy laminiferous laminiform laminiplantar laminiplantation laminitis laminose laminous lamish Lamista lamiter Lamium Lammas lammas Lammastide lammer lammergeier lammock lammy Lamna lamnectomy lamnid Lamnidae lamnoid lamp lampad lampadary lampadedromy lampadephore lampadephoria lampadite lampas lampatia lampblack lamper lampern lampers lampflower lampfly lampful lamphole lamping lampion lampist lampistry lampless lamplet lamplight lamplighted lamplighter lamplit lampmaker lampmaking lampman Lampong lampoon lampooner lampoonery lampoonist lamppost lamprey Lampridae lamprophony lamprophyre lamprophyric lamprotype Lampsilis Lampsilus lampstand lampwick lampyrid Lampyridae lampyrine Lampyris Lamus Lamut lamziekte lan Lana lanameter Lanao Lanarkia lanarkite lanas lanate lanated lanaz Lancaster Lancasterian Lancastrian Lance lance lanced lancegay lancelet lancelike lancely lanceman lanceolar lanceolate lanceolated lanceolately lanceolation lancepesade lancepod lanceproof lancer lances lancet lanceted lanceteer lancewood lancha lanciers lanciferous lanciform lancinate lancination land landamman landau landaulet landaulette landblink landbook landdrost landed lander landesite landfall landfast landflood landgafol landgravate landgrave landgraveship landgravess landgraviate landgravine landholder landholdership landholding landimere landing landlady landladydom landladyhood landladyish landladyship landless landlessness landlike landline landlock landlocked landlook landlooker landloper landlord landlordism landlordly landlordry landlordship landlouper landlouping landlubber landlubberish landlubberly landlubbing landman landmark Landmarker landmil landmonger landocracy landocrat Landolphia landolphia landowner landownership landowning landplane landraker landreeve landright landsale landscape landscapist landshard landship landsick landside landskip landslide landslip Landsmaal landsman landspout landspringy Landsting landstorm Landsturm Landuman landwaiter landward landwash landways Landwehr landwhin landwire landwrack lane lanete laneway laney langaha langarai langbanite langbeinite langca Langhian langi langite langlauf langlaufer langle Lango Langobard Langobardic langoon langooty langrage langsat Langsdorffia langsettle Langshan langspiel langsyne language languaged languageless langued Languedocian languescent languet languid languidly languidness languish languisher languishing languishingly languishment languor languorous languorously langur laniariform laniary laniate laniferous lanific laniflorous laniform lanigerous Laniidae laniiform Laniinae lanioid lanista Lanital Lanius lank lanket lankily lankiness lankish lankly lankness lanky lanner lanneret Lanny lanolin lanose lanosity lansat lansdowne lanseh lansfordite lansknecht lanson lansquenet lant lantaca Lantana lanterloo lantern lanternflower lanternist lanternleaf lanternman lanthana lanthanide lanthanite Lanthanotidae Lanthanotus lanthanum lanthopine lantum lanuginose lanuginous lanuginousness lanugo lanum Lanuvian lanx lanyard Lao Laodicean Laodiceanism Laotian lap lapacho lapachol lapactic Lapageria laparectomy laparocele laparocholecystotomy laparocolectomy laparocolostomy laparocolotomy laparocolpohysterotomy laparocolpotomy laparocystectomy laparocystotomy laparoelytrotomy laparoenterostomy laparoenterotomy laparogastroscopy laparogastrotomy laparohepatotomy laparohysterectomy laparohysteropexy laparohysterotomy laparoileotomy laparomyitis laparomyomectomy laparomyomotomy laparonephrectomy laparonephrotomy laparorrhaphy laparosalpingectomy laparosalpingotomy laparoscopy laparosplenectomy laparosplenotomy laparostict Laparosticti laparothoracoscopy laparotome laparotomist laparotomize laparotomy laparotrachelotomy lapboard lapcock Lapeirousia lapel lapeler lapelled lapful lapicide lapidarian lapidarist lapidary lapidate lapidation lapidator lapideon lapideous lapidescent lapidicolous lapidific lapidification lapidify lapidist lapidity lapidose lapilliform lapillo lapillus Lapith Lapithae Lapithaean Laplacian Lapland Laplander Laplandian Laplandic Laplandish lapon Laportea Lapp Lappa lappaceous lappage lapped lapper lappet lappeted Lappic lapping Lappish Lapponese Lapponian Lappula lapsability lapsable Lapsana lapsation lapse lapsed lapser lapsi lapsing lapsingly lapstone lapstreak lapstreaked lapstreaker Laputa Laputan laputically lapwing lapwork laquear laquearian laqueus Lar lar Laralia Laramide Laramie larboard larbolins larbowlines larcener larcenic larcenish larcenist larcenous larcenously larceny larch larchen lard lardacein lardaceous larder larderellite larderer larderful larderlike lardiform lardite Lardizabalaceae lardizabalaceous lardon lardworm lardy lareabell Larentiidae large largebrained largehanded largehearted largeheartedness largely largemouth largemouthed largen largeness largess larghetto largifical largish largition largitional largo Lari lari Laria lariat larick larid Laridae laridine larigo larigot lariid Lariidae larin Larinae larine larithmics Larix larixin lark larker larkiness larking larkingly larkish larkishness larklike larkling larksome larkspur larky larmier larmoyant Larnaudian larnax laroid larrigan larrikin larrikinalian larrikiness larrikinism larriman larrup Larry larry Lars larsenite Larunda Larus larva Larvacea larvae larval Larvalia larvarium larvate larve larvicidal larvicide larvicolous larviform larvigerous larvikite larviparous larviposit larviposition larvivorous larvule laryngal laryngalgia laryngeal laryngeally laryngean laryngeating laryngectomy laryngemphraxis laryngendoscope larynges laryngic laryngismal laryngismus laryngitic laryngitis laryngocele laryngocentesis laryngofission laryngofissure laryngograph laryngography laryngological laryngologist laryngology laryngometry laryngoparalysis laryngopathy laryngopharyngeal laryngopharyngitis laryngophony laryngophthisis laryngoplasty laryngoplegia laryngorrhagia laryngorrhea laryngoscleroma laryngoscope laryngoscopic laryngoscopical laryngoscopist laryngoscopy laryngospasm laryngostasis laryngostenosis laryngostomy laryngostroboscope laryngotome laryngotomy laryngotracheal laryngotracheitis laryngotracheoscopy laryngotracheotomy laryngotyphoid laryngovestibulitis larynx las lasa lasarwort lascar lascivious lasciviously lasciviousness laser Laserpitium laserwort lash lasher lashingly lashless lashlite Lasi lasianthous Lasiocampa lasiocampid Lasiocampidae Lasiocampoidea lasiocarpous Lasius lask lasket Laspeyresia laspring lasque lass lasset lassie lassiehood lassieish lassitude lasslorn lasso lassock lassoer last lastage laster lasting lastingly lastingness lastly lastness lastre lastspring lasty lat lata latah Latakia Latania Latax latch latcher latchet latching latchkey latchless latchman latchstring late latebra latebricole latecomer latecoming lated lateen lateener lately laten latence latency lateness latensification latent latentize latently latentness later latera laterad lateral lateralis laterality lateralization lateralize laterally Lateran latericumbent lateriflexion laterifloral lateriflorous laterifolious Laterigradae laterigrade laterinerved laterite lateritic lateritious lateriversion laterization lateroabdominal lateroanterior laterocaudal laterocervical laterodeviation laterodorsal lateroduction lateroflexion lateromarginal lateronuchal lateroposition lateroposterior lateropulsion laterostigmatal laterostigmatic laterotemporal laterotorsion lateroventral lateroversion latescence latescent latesome latest latewhile latex latexosis lath lathe lathee latheman lathen lather latherability latherable lathereeve latherer latherin latheron latherwort lathery lathesman lathhouse lathing Lathraea lathwork lathy lathyric lathyrism Lathyrus Latian latibulize latices laticiferous laticlave laticostate latidentate latifundian latifundium latigo Latimeria Latin Latinate Latiner Latinesque Latinian Latinic Latiniform Latinism latinism Latinist Latinistic Latinistical Latinitaster Latinity Latinization Latinize Latinizer Latinless Latinus lation latipennate latiplantar latirostral Latirostres latirostrous Latirus latisept latiseptal latiseptate latish latisternal latitancy latitant latitat latite latitude latitudinal latitudinally latitudinarian latitudinarianisn latitudinary latitudinous latomy Latona Latonian Latooka latrant latration latreutic latria Latrididae latrine Latris latro latrobe latrobite latrocinium Latrodectus latron latten lattener latter latterkin latterly lattermath lattermost latterness lattice latticed latticewise latticework latticing latticinio Latuka latus Latvian lauan laubanite laud laudability laudable laudableness laudably laudanidine laudanin laudanine laudanosine laudanum laudation laudative laudator laudatorily laudatory lauder Laudian Laudianism laudification Laudism Laudist laudist laugh laughable laughableness laughably laughee laugher laughful laughing laughingly laughingstock laughsome laughter laughterful laughterless laughworthy laughy lauia laumonite laumontite laun launce launch launcher launchful launchways laund launder launderability launderable launderer laundry laundrymaid laundryman laundryowner laundrywoman laur Laura laura Lauraceae lauraceous lauraldehyde laurate laurdalite laureate laureated laureateship laureation Laurel laurel laureled laurellike laurelship laurelwood Laurence Laurencia Laurent Laurentian Laurentide laureole Laurianne lauric Laurie laurin laurinoxylon laurionite laurite Laurocerasus laurone laurotetanine Laurus laurustine laurustinus laurvikite lauryl lautarite lautitious lava lavable lavabo lavacre lavage lavaliere lavalike Lavandula lavanga lavant lavaret Lavatera lavatic lavation lavational lavatorial lavatory lave laveer Lavehr lavement lavender lavenite laver Laverania laverock laverwort lavialite lavic Lavinia lavish lavisher lavishing lavishingly lavishly lavishment lavishness lavolta lavrovite law lawbook lawbreaker lawbreaking lawcraft lawful lawfully lawfulness lawgiver lawgiving lawing lawish lawk lawlants lawless lawlessly lawlessness lawlike lawmaker lawmaking lawman lawmonger lawn lawned lawner lawnlet lawnlike lawny lawproof Lawrence lawrencite Lawrie lawrightman Lawson Lawsoneve Lawsonia lawsonite lawsuit lawsuiting lawter Lawton lawyer lawyeress lawyerism lawyerlike lawyerling lawyerly lawyership lawyery lawzy lax laxate laxation laxative laxatively laxativeness laxiflorous laxifoliate laxifolious laxism laxist laxity laxly laxness lay layaway layback layboy layer layerage layered layery layette Layia laying layland layman laymanship layne layoff layout layover layship laystall laystow laywoman Laz lazar lazaret lazaretto Lazarist lazarlike lazarly lazarole Lazarus laze lazily laziness lazule lazuli lazuline lazulite lazulitic lazurite lazy lazybird lazybones lazyboots lazyhood lazyish lazylegs lazyship lazzarone lazzaroni Lea lea leach leacher leachman leachy Lead lead leadable leadableness leadage leadback leaded leaden leadenhearted leadenheartedness leadenly leadenness leadenpated leader leaderess leaderette leaderless leadership leadhillite leadin leadiness leading leadingly leadless leadman leadoff leadout leadproof Leads leadsman leadstone leadway leadwood leadwork leadwort leady leaf leafage leafboy leafcup leafdom leafed leafen leafer leafery leafgirl leafit leafless leaflessness leaflet leafleteer leaflike leafstalk leafwork leafy league leaguelong leaguer Leah leak leakage leakance leaker leakiness leakless leakproof leaky leal lealand leally lealness lealty leam leamer lean Leander leaner leaning leanish leanly leanness leant leap leapable leaper leapfrog leapfrogger leapfrogging leaping leapingly leapt Lear lear Learchus learn learnable learned learnedly learnedness learner learnership learning learnt Learoyd leasable lease leasehold leaseholder leaseholding leaseless leasemonger leaser leash leashless leasing leasow least leastways leastwise leat leath leather leatherback leatherbark leatherboard leatherbush leathercoat leathercraft leatherer Leatherette leatherfish leatherflower leatherhead leatherine leatheriness leathering leatherize leatherjacket leatherleaf leatherlike leathermaker leathermaking leathern leatherneck Leatheroid leatherroot leatherside Leatherstocking leatherware leatherwing leatherwood leatherwork leatherworker leatherworking leathery leathwake leatman leave leaved leaveless leavelooker leaven leavening leavenish leavenless leavenous leaver leaverwood leaves leaving leavy leawill leban Lebanese lebbek lebensraum Lebistes lebrancho lecama lecaniid Lecaniinae lecanine Lecanium lecanomancer lecanomancy lecanomantic Lecanora Lecanoraceae lecanoraceous lecanorine lecanoroid lecanoscopic lecanoscopy lech Lechea lecher lecherous lecherously lecherousness lechery lechriodont Lechriodonta lechuguilla lechwe Lecidea Lecideaceae lecideaceous lecideiform lecideine lecidioid lecithal lecithalbumin lecithality lecithin lecithinase lecithoblast lecithoprotein leck lecker lecontite lecotropal lectern lection lectionary lectisternium lector lectorate lectorial lectorship lectotype lectress lectrice lectual lecture lecturee lectureproof lecturer lectureship lecturess lecturette lecyth lecythid Lecythidaceae lecythidaceous Lecythis lecythoid lecythus led Leda lede leden lederite ledge ledged ledgeless ledger ledgerdom ledging ledgment ledgy Ledidae ledol Ledum Lee lee leeangle leeboard leech leecheater leecher leechery leeches leechkin leechlike leechwort leed leefang leeftail leek leekish leeky leep leepit leer leerily leeringly leerish leerness leeroway Leersia leery lees leet leetman leewan leeward leewardly leewardmost leewardness leeway leewill left leftish leftism leftist leftments leftmost leftness leftover leftward leftwardly leftwards leg legacy legal legalese legalism legalist legalistic legalistically legality legalization legalize legally legalness legantine legatary legate legatee legateship legatine legation legationary legative legato legator legatorial legend legenda legendarian legendary legendic legendist legendless Legendrian legendry leger legerdemain legerdemainist legerity leges legged legger legginess legging legginged leggy leghorn legibility legible legibleness legibly legific legion legionary legioned legioner legionnaire legionry legislate legislation legislational legislativ legislative legislatively legislator legislatorial legislatorially legislatorship legislatress legislature legist legit legitim legitimacy legitimate legitimately legitimateness legitimation legitimatist legitimatize legitimism legitimist legitimistic legitimity legitimization legitimize leglen legless leglessness leglet leglike legman legoa legpiece legpull legpuller legpulling legrope legua leguan Leguatia leguleian leguleious legume legumelin legumen legumin leguminiform Leguminosae leguminose leguminous Lehi lehr lehrbachite lehrman lehua lei Leibnitzian Leibnitzianism Leicester Leif Leigh leighton Leila leimtype leiocephalous leiocome leiodermatous leiodermia leiomyofibroma leiomyoma leiomyomatous leiomyosarcoma leiophyllous Leiophyllum Leiothrix Leiotrichan Leiotriches Leiotrichi Leiotrichidae Leiotrichinae leiotrichine leiotrichous leiotrichy leiotropic Leipoa Leishmania leishmaniasis Leisten leister leisterer leisurable leisurably leisure leisured leisureful leisureless leisureliness leisurely leisureness Leith leitmotiv Leitneria Leitneriaceae leitneriaceous Leitneriales lek lekach lekane lekha Lelia Lemaireocereus leman Lemanea Lemaneaceae lemel lemma lemmata lemming lemmitis lemmoblastic lemmocyte Lemmus Lemna Lemnaceae lemnaceous lemnad Lemnian lemniscate lemniscatic lemniscus lemography lemology lemon lemonade Lemonias Lemoniidae Lemoniinae lemonish lemonlike lemonweed lemonwood lemony Lemosi Lemovices lempira Lemuel lemur lemures Lemuria Lemurian lemurian lemurid Lemuridae lemuriform Lemurinae lemurine lemuroid Lemuroidea Len Lena lenad Lenaea Lenaean Lenaeum Lenaeus Lenape lenard Lenca Lencan lench lend lendable lendee lender Lendu lene length lengthen lengthener lengther lengthful lengthily lengthiness lengthsman lengthsome lengthsomeness lengthways lengthwise lengthy lenience leniency lenient leniently lenify Leninism Leninist Leninite lenis lenitic lenitive lenitively lenitiveness lenitude lenity lennilite Lennoaceae lennoaceous lennow Lenny leno Lenora lens lensed lensless lenslike Lent lent Lenten Lententide lenth lenthways Lentibulariaceae lentibulariaceous lenticel lenticellate lenticle lenticonus lenticula lenticular lenticulare lenticularis lenticularly lenticulate lenticulated lenticule lenticulostriate lenticulothalamic lentiform lentigerous lentiginous lentigo lentil Lentilla lentisc lentiscine lentisco lentiscus lentisk lentitude lentitudinous lento lentoid lentor lentous lenvoi lenvoy Lenzites Leo Leon Leonard Leonardesque Leonato leoncito Leonese leonhardite Leonid Leonine leonine leoninely leonines Leonis Leonist leonite Leonnoys Leonora Leonotis leontiasis Leontocebus leontocephalous Leontodon Leontopodium Leonurus leopard leoparde leopardess leopardine leopardite leopardwood Leopold Leopoldinia leopoldite Leora leotard lepa Lepadidae lepadoid Lepanto lepargylic Lepargyraea Lepas Lepcha leper leperdom lepered lepidene lepidine Lepidium lepidoblastic Lepidodendraceae lepidodendraceous lepidodendrid lepidodendroid Lepidodendron lepidoid Lepidoidei lepidolite lepidomelane Lepidophloios lepidophyllous Lepidophyllum lepidophyte lepidophytic lepidoporphyrin lepidopter Lepidoptera lepidopteral lepidopteran lepidopterid lepidopterist lepidopterological lepidopterologist lepidopterology lepidopteron lepidopterous Lepidosauria lepidosaurian Lepidosiren Lepidosirenidae lepidosirenoid lepidosis Lepidosperma Lepidospermae Lepidosphes Lepidostei lepidosteoid Lepidosteus Lepidostrobus lepidote Lepidotes lepidotic Lepidotus Lepidurus Lepilemur Lepiota Lepisma Lepismatidae Lepismidae lepismoid Lepisosteidae Lepisosteus lepocyte Lepomis leporid Leporidae leporide leporiform leporine Leporis Lepospondyli lepospondylous Leposternidae Leposternon lepothrix lepra Lepralia lepralian leprechaun lepric leproid leprologic leprologist leprology leproma lepromatous leprosarium leprose leprosery leprosied leprosis leprosity leprosy leprous leprously leprousness Leptamnium Leptandra leptandrin leptid Leptidae leptiform Leptilon leptinolite Leptinotarsa leptite Leptocardia leptocardian Leptocardii leptocentric leptocephalan leptocephali leptocephalia leptocephalic leptocephalid Leptocephalidae leptocephaloid leptocephalous Leptocephalus leptocephalus leptocephaly leptocercal leptochlorite leptochroa leptochrous leptoclase leptodactyl Leptodactylidae leptodactylous Leptodactylus leptodermatous leptodermous Leptodora Leptodoridae Leptogenesis leptokurtic Leptolepidae Leptolepis Leptolinae leptomatic leptome Leptomedusae leptomedusan leptomeningeal leptomeninges leptomeningitis leptomeninx leptometer leptomonad Leptomonas Lepton lepton leptonecrosis leptonema leptopellic Leptophis leptophyllous leptoprosope leptoprosopic leptoprosopous leptoprosopy Leptoptilus Leptorchis leptorrhin leptorrhine leptorrhinian leptorrhinism leptosome leptosperm Leptospermum Leptosphaeria Leptospira leptospirosis leptosporangiate Leptostraca leptostracan leptostracous Leptostromataceae Leptosyne leptotene Leptothrix Leptotrichia Leptotyphlopidae Leptotyphlops leptus leptynite Lepus Ler Lernaea Lernaeacea Lernaean Lernaeidae lernaeiform lernaeoid Lernaeoides lerot lerp lerret Lerwa Les Lesath Lesbia Lesbian Lesbianism lesche Lesgh lesion lesional lesiy Leskea Leskeaceae leskeaceous Lesleya Leslie Lespedeza Lesquerella less lessee lesseeship lessen lessener lesser lessive lessn lessness lesson lessor lest Lester lestiwarite lestobiosis lestobiotic Lestodon Lestosaurus lestrad Lestrigon Lestrigonian let letch letchy letdown lete lethal lethality lethalize lethally lethargic lethargical lethargically lethargicalness lethargize lethargus lethargy Lethe Lethean lethiferous Lethocerus lethologica Letitia Leto letoff Lett lettable letten letter lettered letterer letteret lettergram letterhead letterin lettering letterleaf letterless letterpress letterspace letterweight letterwood Lettic Lettice Lettish lettrin lettsomite lettuce Letty letup leu Leucadendron Leucadian leucaemia leucaemic Leucaena leucaethiop leucaethiopic leucaniline leucanthous leucaugite leucaurin leucemia leucemic Leucetta leuch leuchaemia leuchemia leuchtenbergite Leucichthys Leucifer Leuciferidae leucine Leucippus leucism leucite leucitic leucitis leucitite leucitohedron leucitoid Leuckartia Leuckartiidae leuco leucobasalt leucoblast leucoblastic Leucobryaceae Leucobryum leucocarpous leucochalcite leucocholic leucocholy leucochroic leucocidic leucocidin leucocism leucocrate leucocratic Leucocrinum leucocyan leucocytal leucocyte leucocythemia leucocythemic leucocytic leucocytoblast leucocytogenesis leucocytoid leucocytology leucocytolysin leucocytolysis leucocytolytic leucocytometer leucocytopenia leucocytopenic leucocytoplania leucocytopoiesis leucocytosis leucocytotherapy leucocytotic Leucocytozoon leucoderma leucodermatous leucodermic leucoencephalitis leucogenic leucoid leucoindigo leucoindigotin Leucojaceae Leucojum leucolytic leucoma leucomaine leucomatous leucomelanic leucomelanous leucon Leuconostoc leucopenia leucopenic leucophane leucophanite leucophoenicite leucophore leucophyllous leucophyre leucoplakia leucoplakial leucoplast leucoplastid leucopoiesis leucopoietic leucopyrite leucoquinizarin leucorrhea leucorrheal leucoryx leucosis Leucosolenia Leucosoleniidae leucospermous leucosphenite leucosphere leucospheric leucostasis Leucosticte leucosyenite leucotactic Leucothea Leucothoe leucotic leucotome leucotomy leucotoxic leucous leucoxene leucyl leud leuk leukemia leukemic leukocidic leukocidin leukosis leukotic leuma Leung lev Levana levance Levant levant Levanter levanter Levantine levator levee level leveler levelheaded levelheadedly levelheadedness leveling levelish levelism levelly levelman levelness lever leverage leverer leveret leverman levers leverwood Levi leviable leviathan levier levigable levigate levigation levigator levin levining levir levirate leviratical leviration Levis Levisticum levitant levitate levitation levitational levitative levitator Levite Levitical Leviticalism Leviticality Levitically Leviticalness Leviticism Leviticus Levitism levity levo levoduction levogyrate levogyre levogyrous levolactic levolimonene levorotation levorotatory levotartaric levoversion levulic levulin levulinic levulose levulosuria levy levyist levynite Lew lew Lewanna lewd lewdly lewdness Lewie Lewis lewis Lewisia Lewisian lewisite lewisson lewth Lex lexia lexical lexicalic lexicality lexicographer lexicographian lexicographic lexicographical lexicographically lexicographist lexicography lexicologic lexicological lexicologist lexicology lexicon lexiconist lexiconize lexigraphic lexigraphical lexigraphically lexigraphy lexiphanic lexiphanicism ley leyland leysing Lezghian lherzite lherzolite Lhota li liability liable liableness liaison liana liang liar liard Lias Liassic Liatris libament libaniferous libanophorous libanotophorous libant libate libation libationary libationer libatory libber libbet libbra Libby libel libelant libelee libeler libelist libellary libellate Libellula libellulid Libellulidae libelluloid libelous libelously Liber liber liberal Liberalia liberalism liberalist liberalistic liberality liberalization liberalize liberalizer liberally liberalness liberate liberation liberationism liberationist liberative liberator liberatory liberatress Liberia Liberian liberomotor libertarian libertarianism Libertas liberticidal liberticide libertinage libertine libertinism liberty libertyless libethenite libidibi libidinal libidinally libidinosity libidinous libidinously libidinousness libido Libitina libken Libocedrus Libra libra libral librarian librarianess librarianship librarious librarius library libraryless librate libration libratory libretti librettist libretto Librid libriform libroplast Libyan Libytheidae Libytheinae Licania licareol licca licensable license licensed licensee licenseless licenser licensor licensure licentiate licentiateship licentiation licentious licentiously licentiousness lich licham lichanos lichen lichenaceous lichened Lichenes licheniasis lichenic lichenicolous licheniform lichenin lichenism lichenist lichenivorous lichenization lichenize lichenlike lichenographer lichenographic lichenographical lichenographist lichenography lichenoid lichenologic lichenological lichenologist lichenology Lichenopora Lichenoporidae lichenose licheny lichi Lichnophora Lichnophoridae Licinian licit licitation licitly licitness lick licker lickerish lickerishly lickerishness licking lickpenny lickspit lickspittle lickspittling licorice licorn licorne lictor lictorian Licuala lid Lida lidded lidder Lide lidflower lidgate lidless lie liebenerite Liebfraumilch liebigite lied lief liege liegedom liegeful liegefully liegeless liegely liegeman lieger lien lienal lienculus lienee lienic lienitis lienocele lienogastric lienointestinal lienomalacia lienomedullary lienomyelogenous lienopancreatic lienor lienorenal lienotoxin lienteria lienteric lientery lieproof lieprooflier lieproofliest lier lierne lierre liesh liespfund lieu lieue lieutenancy lieutenant lieutenantry lieutenantship Lievaart lieve lievrite Lif life lifeblood lifeboat lifeboatman lifeday lifedrop lifeful lifefully lifefulness lifeguard lifehold lifeholder lifeless lifelessly lifelessness lifelet lifelike lifelikeness lifeline lifelong lifer liferent liferenter liferentrix liferoot lifesaver lifesaving lifesome lifesomely lifesomeness lifespring lifetime lifeward lifework lifey lifo lift liftable lifter lifting liftless liftman ligable ligament ligamental ligamentary ligamentous ligamentously ligamentum ligas ligate ligation ligator ligature ligeance ligger light lightable lightboat lightbrained lighten lightener lightening lighter lighterage lighterful lighterman lightface lightful lightfulness lighthead lightheaded lightheadedly lightheadedness lighthearted lightheartedly lightheartedness lighthouse lighthouseman lighting lightish lightkeeper lightless lightlessness lightly lightman lightmanship lightmouthed lightness lightning lightninglike lightningproof lightproof lightroom lightscot lightship lightsman lightsome lightsomely lightsomeness lighttight lightwards lightweight lightwood lightwort lignaloes lignatile ligne ligneous lignescent lignicole lignicoline lignicolous ligniferous lignification ligniform lignify lignin ligninsulphonate ligniperdous lignite lignitic lignitiferous lignitize lignivorous lignocellulose lignoceric lignography lignone lignose lignosity lignosulphite lignosulphonate lignum ligroine ligula ligular Ligularia ligulate ligulated ligule Liguliflorae liguliflorous liguliform ligulin liguloid Liguorian ligure Ligurian ligurite ligurition Ligusticum ligustrin Ligustrum Ligyda Ligydidae Lihyanite liin lija likability likable likableness like likelihead likelihood likeliness likely liken likeness liker likesome likeways likewise likin liking liknon Lila lilac lilaceous lilacin lilacky lilacthroat lilactide Lilaeopsis lile Liliaceae liliaceous Liliales Lilian lilied liliform Liliiflorae Lilith Lilium lill lillianite lillibullero Lilliput Lilliputian Lilliputianize lilt liltingly liltingness lily lilyfy lilyhanded lilylike lilywood lilywort lim Lima Limacea limacel limaceous Limacidae limaciform Limacina limacine limacinid Limacinidae limacoid limacon limaille liman limation Limawood Limax limb limbal limbat limbate limbation limbeck limbed limber limberham limberly limberness limbers limbic limbie limbiferous limbless limbmeal limbo limboinfantum limbous Limbu Limburger limburgite limbus limby lime limeade Limean limeberry limebush limehouse limekiln limeless limelight limelighter limelike limeman limen limequat limer Limerick limes limestone limetta limettin limewash limewater limewort limey Limicolae limicoline limicolous Limidae liminal liminary liminess liming limit limitable limitableness limital limitarian limitary limitate limitation limitative limitatively limited limitedly limitedness limiter limiting limitive limitless limitlessly limitlessness limitrophe limivorous limma limmer limmock limmu limn limnanth Limnanthaceae limnanthaceous Limnanthemum Limnanthes limner limnery limnetic Limnetis limniad limnimeter limnimetric limnite limnobiologic limnobiological limnobiologically limnobiology limnobios Limnobium Limnocnida limnograph limnologic limnological limnologically limnologist limnology limnometer limnophile limnophilid Limnophilidae limnophilous limnoplankton Limnorchis Limnoria Limnoriidae limnorioid Limodorum limoid limonene limoniad limonin limonite limonitic limonitization limonium Limosa limose Limosella Limosi limous limousine limp limper limpet limphault limpid limpidity limpidly limpidness limpily limpin limpiness limping limpingly limpingness limpish limpkin limply limpness limpsy limpwort limpy limsy limu limulid Limulidae limuloid Limuloidea Limulus limurite limy Lin lin Lina lina linable Linaceae linaceous linaga linage linaloa linalol linalool linamarin Linanthus Linaria linarite linch linchbolt linchet linchpin linchpinned lincloth Lincoln Lincolnian Lincolniana Lincolnlike linctus Linda lindackerite lindane linden Linder linder Lindera Lindleyan lindo lindoite Lindsay Lindsey line linea lineage lineaged lineal lineality lineally lineament lineamental lineamentation lineameter linear linearifolius linearity linearization linearize linearly lineate lineated lineation lineature linecut lined lineiform lineless linelet lineman linen Linene linenette linenize linenizer linenman lineocircular lineograph lineolate lineolated liner linesman Linet linewalker linework ling linga Lingayat lingberry lingbird linge lingel lingenberry linger lingerer lingerie lingo lingonberry Lingoum lingtow lingtowman lingua linguacious linguaciousness linguadental linguaeform lingual linguale linguality lingualize lingually linguanasal Linguata Linguatula Linguatulida Linguatulina linguatuline linguatuloid linguet linguidental linguiform linguipotence linguist linguister linguistic linguistical linguistically linguistician linguistics linguistry lingula lingulate lingulated Lingulella lingulid Lingulidae linguliferous linguliform linguloid linguodental linguodistal linguogingival linguopalatal linguopapillitis linguoversion lingwort lingy linha linhay linie liniment linin lininess lining linitis liniya linja linje link linkable linkage linkboy linked linkedness linker linking linkman links linksmith linkwork linky Linley linn Linnaea Linnaean Linnaeanism linnaeite Linne linnet lino linolate linoleic linolein linolenate linolenic linolenin linoleum linolic linolin linometer linon Linopteris Linos Linotype linotype linotyper linotypist linous linoxin linoxyn linpin Linsang linseed linsey linstock lint lintel linteled linteling linten linter lintern lintie lintless lintonite lintseed lintwhite linty Linum Linus linwood liny Linyphia Linyphiidae liodermia liomyofibroma liomyoma lion lioncel Lionel lionel lionesque lioness lionet lionheart lionhearted lionheartedness lionhood lionism lionizable lionization lionize lionizer lionlike lionly lionproof lionship Liothrix Liotrichi Liotrichidae liotrichine lip lipa lipacidemia lipaciduria Lipan Liparian liparian liparid Liparidae Liparididae Liparis liparite liparocele liparoid liparomphalus liparous lipase lipectomy lipemia Lipeurus lipide lipin lipless liplet liplike lipoblast lipoblastoma Lipobranchia lipocaic lipocardiac lipocele lipoceratous lipocere lipochondroma lipochrome lipochromogen lipoclasis lipoclastic lipocyte lipodystrophia lipodystrophy lipoferous lipofibroma lipogenesis lipogenetic lipogenic lipogenous lipogram lipogrammatic lipogrammatism lipogrammatist lipography lipohemia lipoid lipoidal lipoidemia lipoidic lipolysis lipolytic lipoma lipomata lipomatosis lipomatous lipometabolic lipometabolism lipomorph lipomyoma lipomyxoma lipopexia lipophagic lipophore lipopod Lipopoda lipoprotein liposarcoma liposis liposome lipostomy lipothymial lipothymic lipothymy lipotrophic lipotrophy lipotropic lipotropy lipotype Lipotyphla lipovaccine lipoxenous lipoxeny lipped lippen lipper lipperings Lippia lippiness lipping lippitude lippitudo lippy lipsanographer lipsanotheca lipstick lipuria lipwork liquable liquamen liquate liquation liquefacient liquefaction liquefactive liquefiable liquefier liquefy liquesce liquescence liquescency liquescent liqueur liquid liquidable Liquidambar liquidamber liquidate liquidation liquidator liquidatorship liquidity liquidize liquidizer liquidless liquidly liquidness liquidogenic liquidogenous liquidy liquiform liquor liquorer liquorish liquorishly liquorishness liquorist liquorless lira lirate liration lire lirella lirellate lirelliform lirelline lirellous Liriodendron liripipe liroconite lis Lisa Lisbon Lise lisere Lisette lish lisk Lisle lisle lisp lisper lispingly lispund liss Lissamphibia lissamphibian Lissencephala lissencephalic lissencephalous Lissoflagellata lissoflagellate lissom lissome lissomely lissomeness lissotrichan Lissotriches lissotrichous lissotrichy List list listable listed listedness listel listen listener listening lister Listera listerellosis Listeria Listerian Listerine Listerism Listerize listing listless listlessly listlessness listred listwork Lisuarte lit litaneutical litany litanywise litas litation litch litchi lite liter literacy literaily literal literalism literalist literalistic literality literalization literalize literalizer literally literalminded literalmindedness literalness literarian literariness literary literaryism literate literati literation literatist literato literator literature literatus literose literosity lith lithagogue lithangiuria lithanthrax litharge lithe lithectasy lithectomy lithely lithemia lithemic litheness lithesome lithesomeness lithi lithia lithiasis lithiastic lithiate lithic lithifaction lithification lithify lithite lithium litho lithobiid Lithobiidae lithobioid Lithobius Lithocarpus lithocenosis lithochemistry lithochromatic lithochromatics lithochromatographic lithochromatography lithochromography lithochromy lithoclase lithoclast lithoclastic lithoclasty lithoculture lithocyst lithocystotomy Lithodes lithodesma lithodialysis lithodid Lithodidae lithodomous Lithodomus lithofracteur lithofractor lithogenesis lithogenetic lithogenous lithogeny lithoglyph lithoglypher lithoglyphic lithoglyptic lithoglyptics lithograph lithographer lithographic lithographical lithographically lithographize lithography lithogravure lithoid lithoidite litholabe litholapaxy litholatrous litholatry lithologic lithological lithologically lithologist lithology litholysis litholyte litholytic lithomancy lithomarge lithometer lithonephria lithonephritis lithonephrotomy lithontriptic lithontriptist lithontriptor lithopedion lithopedium lithophagous lithophane lithophanic lithophany lithophilous lithophone lithophotography lithophotogravure lithophthisis lithophyl lithophyllous lithophysa lithophysal lithophyte lithophytic lithophytous lithopone lithoprint lithoscope lithosian lithosiid Lithosiidae Lithosiinae lithosis lithosol lithosperm lithospermon lithospermous Lithospermum lithosphere lithotint lithotome lithotomic lithotomical lithotomist lithotomize lithotomous lithotomy lithotony lithotresis lithotripsy lithotriptor lithotrite lithotritic lithotritist lithotrity lithotype lithotypic lithotypy lithous lithoxyl lithsman Lithuanian Lithuanic lithuresis lithuria lithy liticontestation litigable litigant litigate litigation litigationist litigator litigatory litigiosity litigious litigiously litigiousness Litiopa litiscontest litiscontestation litiscontestational litmus Litopterna Litorina Litorinidae litorinoid litotes litra Litsea litster litten litter litterateur litterer littermate littery little littleleaf littleneck littleness littlewale littling littlish littoral Littorella littress lituiform lituite Lituites Lituitidae Lituola lituoline lituoloid liturate liturgical liturgically liturgician liturgics liturgiological liturgiologist liturgiology liturgism liturgist liturgistic liturgistical liturgize liturgy litus lituus Litvak Lityerses litz Liukiu Liv livability livable livableness live liveborn lived livedo livelihood livelily liveliness livelong lively liven liveness liver liverance liverberry livered liverhearted liverheartedness liveried liverish liverishness liverleaf liverless Liverpudlian liverwort liverwurst livery liverydom liveryless liveryman livestock Livian livid lividity lividly lividness livier living livingless livingly livingness livingstoneite Livish Livistona Livonian livor livre liwan lixive lixivial lixiviate lixiviation lixiviator lixivious lixivium Liyuan Liz Liza lizard lizardtail Lizzie llama Llanberisslate Llandeilo Llandovery llano llautu Lleu Llew Lloyd Lludd llyn Lo lo Loa loa loach load loadage loaded loaden loader loading loadless loadpenny loadsome loadstone loaf loafer loaferdom loaferish loafing loafingly loaflet loaghtan loam loamily loaminess loaming loamless Loammi loamy loan loanable loaner loanin loanmonger loanword Loasa Loasaceae loasaceous loath loathe loather loathful loathfully loathfulness loathing loathingly loathliness loathly loathness loathsome loathsomely loathsomeness Loatuko loave lob Lobachevskian lobal Lobale lobar Lobaria Lobata Lobatae lobate lobated lobately lobation lobber lobbish lobby lobbyer lobbyism lobbyist lobbyman lobcock lobe lobectomy lobed lobefoot lobefooted lobeless lobelet Lobelia Lobeliaceae lobeliaceous lobelin lobeline lobellated lobfig lobiform lobigerous lobing lobiped loblolly lobo lobola lobopodium Lobosa lobose lobotomy lobscourse lobscouse lobscouser lobster lobstering lobsterish lobsterlike lobsterproof lobtail lobular Lobularia lobularly lobulate lobulated lobulation lobule lobulette lobulose lobulous lobworm loca locable local locale localism localist localistic locality localizable localization localize localizer locally localness locanda Locarnist Locarnite Locarnize Locarno locate location locational locative locator locellate locellus loch lochage lochan lochetic lochia lochial lochiocolpos lochiocyte lochiometra lochiometritis lochiopyra lochiorrhagia lochiorrhea lochioschesis Lochlin lochometritis lochoperitonitis lochopyra lochus lochy loci lociation lock lockable lockage Lockatong lockbox locked locker lockerman locket lockful lockhole Lockian Lockianism locking lockjaw lockless locklet lockmaker lockmaking lockman lockout lockpin Lockport lockram locksman locksmith locksmithery locksmithing lockspit lockup lockwork locky loco locodescriptive locofoco Locofocoism locoism locomobile locomobility locomote locomotility locomotion locomotive locomotively locomotiveman locomotiveness locomotivity locomotor locomotory locomutation locoweed Locrian Locrine loculament loculamentose loculamentous locular loculate loculated loculation locule loculicidal loculicidally loculose loculus locum locus locust locusta locustal locustberry locustelle locustid Locustidae locusting locustlike locution locutor locutorship locutory lod Loddigesia lode lodemanage lodesman lodestar lodestone lodestuff lodge lodgeable lodged lodgeful lodgeman lodgepole lodger lodgerdom lodging lodginghouse lodgings lodgment Lodha lodicule Lodoicea Lodowic Lodowick Lodur Loegria loess loessal loessial loessic loessland loessoid lof lofstelle loft lofter loftily loftiness lofting loftless loftman loftsman lofty log loganberry Logania Loganiaceae loganiaceous loganin logaoedic logarithm logarithmal logarithmetic logarithmetical logarithmetically logarithmic logarithmical logarithmically logarithmomancy logbook logcock loge logeion logeum loggat logged logger loggerhead loggerheaded loggia loggin logging loggish loghead logheaded logia logic logical logicalist logicality logicalization logicalize logically logicalness logicaster logician logicism logicist logicity logicize logicless logie login logion logistic logistical logistician logistics logium loglet loglike logman logocracy logodaedaly logogogue logogram logogrammatic logograph logographer logographic logographical logographically logography logogriph logogriphic logoi logolatry logology logomach logomacher logomachic logomachical logomachist logomachize logomachy logomancy logomania logomaniac logometer logometric logometrical logometrically logopedia logopedics logorrhea logos logothete logotype logotypy Logres Logria Logris logroll logroller logrolling logway logwise logwood logwork logy lohan Lohana Lohar lohoch loimic loimography loimology loin loincloth loined loir Lois Loiseleuria loiter loiterer loiteringly loiteringness loka lokao lokaose lokapala loke loket lokiec Lokindra Lokman Lola Loliginidae Loligo Lolium loll Lollard Lollardian Lollardism Lollardist Lollardize Lollardlike Lollardry Lollardy loller lollingite lollingly lollipop lollop lollopy lolly Lolo loma lomastome lomatine lomatinous Lomatium Lombard lombard Lombardeer Lombardesque Lombardian Lombardic lomboy Lombrosian loment lomentaceous Lomentaria lomentariaceous lomentum lomita lommock Lonchocarpus Lonchopteridae Londinensian Londoner Londonese Londonesque Londonian Londonish Londonism Londonization Londonize Londony Londres lone lonelihood lonelily loneliness lonely loneness lonesome lonesomely lonesomeness long longa longan longanimity longanimous Longaville longbeak longbeard longboat longbow longcloth longe longear longer longeval longevity longevous longfelt longfin longful longhair longhand longhead longheaded longheadedly longheadedness longhorn longicaudal longicaudate longicone longicorn Longicornia longilateral longilingual longiloquence longimanous longimetric longimetry longing longingly longingness Longinian longinquity longipennate longipennine longirostral longirostrate longirostrine Longirostrines longisection longish longitude longitudinal longitudinally longjaw longleaf longlegs longly longmouthed longness Longobard Longobardi Longobardian Longobardic longs longshanks longshore longshoreman longsome longsomely longsomeness longspun longspur longtail longue longulite longway longways longwise longwool longwork longwort Lonhyn Lonicera Lonk lonquhard lontar loo looby lood loof loofah loofie loofness look looker looking lookout lookum loom loomer loomery looming loon loonery looney loony loop looper loopful loophole looping loopist looplet looplike loopy loose loosely loosemouthed loosen loosener looseness looser loosestrife loosing loosish loot lootable looten looter lootie lootiewallah lootsman lop lope loper Lopezia lophiid Lophiidae lophine Lophiodon lophiodont Lophiodontidae lophiodontoid Lophiola Lophiomyidae Lophiomyinae Lophiomys lophiostomate lophiostomous lophobranch lophobranchiate Lophobranchii lophocalthrops lophocercal Lophocome Lophocomi Lophodermium lophodont Lophophora lophophoral lophophore Lophophorinae lophophorine Lophophorus lophophytosis Lophopoda Lophornis Lophortyx lophosteon lophotriaene lophotrichic lophotrichous Lophura lopolith loppard lopper loppet lopping loppy lopseed lopsided lopsidedly lopsidedness lopstick loquacious loquaciously loquaciousness loquacity loquat loquence loquent loquently Lora lora loral loran lorandite loranskite Loranthaceae loranthaceous Loranthus lorarius lorate lorcha Lord lord lording lordkin lordless lordlet lordlike lordlily lordliness lordling lordly lordolatry lordosis lordotic lordship lordwood lordy lore loreal lored loreless Loren Lorenzan lorenzenite Lorenzo Lorettine lorettoite lorgnette Lori lori loric lorica loricarian Loricariidae loricarioid Loricata loricate Loricati lorication loricoid Lorien lorikeet lorilet lorimer loriot loris Lorius lormery lorn lornness loro Lorraine Lorrainer Lorrainese lorriker lorry lors lorum lory losable losableness lose losel loselism losenger loser losh losing loss lossenite lossless lossproof lost lostling lostness Lot lot Lota lota lotase lote lotebush Lotharingian lotic lotiform lotion lotment Lotophagi lotophagous lotophagously lotrite lots Lotta Lotte lotter lottery Lottie lotto Lotuko lotus lotusin lotuslike Lou louch louchettes loud louden loudering loudish loudly loudmouthed loudness louey lough lougheen Louie Louiqa Louis Louisa Louise Louisiana Louisianian louisine louk Loukas loukoum loulu lounder lounderer lounge lounger lounging loungingly loungy Loup loup loupe lour lourdy louse louseberry lousewort lousily lousiness louster lousy lout louter louther loutish loutishly loutishness loutrophoros louty louvar louver louvered louvering louverwork Louvre lovability lovable lovableness lovably lovage love lovebird loveflower loveful lovelass loveless lovelessly lovelessness lovelihead lovelily loveliness loveling lovelock lovelorn lovelornness lovely loveman lovemate lovemonger loveproof lover loverdom lovered loverhood lovering loverless loverliness loverly lovership loverwise lovesick lovesickness lovesome lovesomely lovesomeness loveworth loveworthy loving lovingly lovingness low lowa lowan lowbell lowborn lowboy lowbred lowdah lowder loweite Lowell lower lowerable lowerclassman lowerer lowering loweringly loweringness lowermost lowery lowigite lowish lowishly lowishness lowland lowlander lowlily lowliness lowly lowmen lowmost lown lowness lownly lowth Lowville lowwood lowy lox loxia loxic Loxiinae loxoclase loxocosm loxodograph Loxodon loxodont Loxodonta loxodontous loxodrome loxodromic loxodromical loxodromically loxodromics loxodromism Loxolophodon loxolophodont Loxomma loxophthalmus Loxosoma Loxosomidae loxotic loxotomy loy loyal loyalism loyalist loyalize loyally loyalness loyalty Loyd Loyolism Loyolite lozenge lozenged lozenger lozengeways lozengewise lozengy Lu Luba lubber lubbercock Lubberland lubberlike lubberliness lubberly lube lubra lubric lubricant lubricate lubrication lubricational lubricative lubricator lubricatory lubricious lubricity lubricous lubrifaction lubrification lubrify lubritorian lubritorium Luc Lucan Lucania lucanid Lucanidae Lucanus lucarne Lucayan lucban Lucchese luce lucence lucency lucent Lucentio lucently Luceres lucern lucernal Lucernaria lucernarian Lucernariidae lucerne lucet Luchuan Lucia Lucian Luciana lucible lucid lucida lucidity lucidly lucidness lucifee Lucifer luciferase Luciferian Luciferidae luciferin luciferoid luciferous luciferously luciferousness lucific luciform lucifugal lucifugous lucigen Lucile Lucilia lucimeter Lucina Lucinacea Lucinda Lucinidae lucinoid Lucite Lucius lucivee luck lucken luckful luckie luckily luckiness luckless lucklessly lucklessness Lucknow lucky lucration lucrative lucratively lucrativeness lucre Lucrece Lucretia Lucretian Lucretius lucriferous lucriferousness lucrific lucrify Lucrine luctation luctiferous luctiferousness lucubrate lucubration lucubrator lucubratory lucule luculent luculently Lucullan lucullite Lucuma lucumia Lucumo lucumony Lucy lucy ludden Luddism Luddite Ludditism ludefisk Ludgate Ludgathian Ludgatian Ludian ludibrious ludibry ludicropathetic ludicroserious ludicrosity ludicrosplenetic ludicrous ludicrously ludicrousness ludification ludlamite Ludlovian Ludlow ludo Ludolphian Ludwig ludwigite lue Luella lues luetic luetically lufberry lufbery luff Luffa Lug lug Luganda luge luger luggage luggageless luggar lugged lugger luggie Luggnagg lugmark Lugnas lugsail lugsome lugubriosity lugubrious lugubriously lugubriousness lugworm luhinga Lui Luian Luigi luigino Luis Luiseno Luite lujaurite Lukas Luke luke lukely lukeness lukewarm lukewarmish lukewarmly lukewarmness lukewarmth Lula lulab lull lullaby luller Lullian lulliloo lullingly Lulu lulu Lum lum lumachel lumbaginous lumbago lumbang lumbar lumbarization lumbayao lumber lumberdar lumberdom lumberer lumbering lumberingly lumberingness lumberjack lumberless lumberly lumberman lumbersome lumberyard lumbocolostomy lumbocolotomy lumbocostal lumbodorsal lumbodynia lumbosacral lumbovertebral lumbrical lumbricalis Lumbricidae lumbriciform lumbricine lumbricoid lumbricosis Lumbricus lumbrous lumen luminaire Luminal luminal luminance luminant luminarious luminarism luminarist luminary luminate lumination luminative luminator lumine luminesce luminescence luminescent luminiferous luminificent luminism luminist luminologist luminometer luminosity luminous luminously luminousness lummox lummy lump lumper lumpet lumpfish lumpily lumpiness lumping lumpingly lumpish lumpishly lumpishness lumpkin lumpman lumpsucker lumpy luna lunacy lunambulism lunar lunare Lunaria lunarian lunarist lunarium lunary lunate lunatellus lunately lunatic lunatically lunation lunatize lunatum lunch luncheon luncheoner luncheonette luncheonless luncher lunchroom Lunda Lundinarium lundress lundyfoot lune Lunel lunes lunette lung lunge lunged lungeous lunger lungfish lungflower lungful lungi lungie lungis lungless lungmotor lungsick lungworm lungwort lungy lunicurrent luniform lunisolar lunistice lunistitial lunitidal Lunka lunkhead lunn lunoid lunt lunula lunular Lunularia lunulate lunulated lunule lunulet lunulite Lunulites Luo lupanarian lupanine lupe lupeol lupeose Lupercal Lupercalia Lupercalian Luperci lupetidine lupicide Lupid lupiform lupinaster lupine lupinin lupinine lupinosis lupinous Lupinus lupis lupoid lupous lupulic lupulin lupuline lupulinic lupulinous lupulinum lupulus lupus lupuserythematosus Lur lura lural lurch lurcher lurchingfully lurchingly lurchline lurdan lurdanism lure lureful lurement lurer luresome lurg lurgworm Luri lurid luridity luridly luridness luringly lurk lurker lurkingly lurkingness lurky lurrier lurry Lusatian Luscinia luscious lusciously lusciousness lush Lushai lushburg Lushei lusher lushly lushness lushy Lusiad Lusian Lusitania Lusitanian lusk lusky lusory lust luster lusterer lusterless lusterware lustful lustfully lustfulness lustihead lustily lustiness lustless lustra lustral lustrant lustrate lustration lustrative lustratory lustreless lustrical lustrification lustrify lustrine lustring lustrous lustrously lustrousness lustrum lusty lut lutaceous lutanist lutany Lutao lutation Lutayo lute luteal lutecia lutecium lutein luteinization luteinize lutelet lutemaker lutemaking luteo luteocobaltic luteofulvous luteofuscescent luteofuscous luteolin luteolous luteoma luteorufescent luteous luteovirescent luter lutescent lutestring Lutetia Lutetian lutetium luteway lutfisk Luther Lutheran Lutheranic Lutheranism Lutheranize Lutheranizer Lutherism Lutherist luthern luthier lutianid Lutianidae lutianoid Lutianus lutidine lutidinic luting lutist Lutjanidae Lutjanus lutose Lutra Lutraria Lutreola lutrin Lutrinae lutrine lutulence lutulent Luvaridae Luvian Luvish Luwian lux luxate luxation luxe Luxemburger Luxemburgian luxulianite luxuriance luxuriancy luxuriant luxuriantly luxuriantness luxuriate luxuriation luxurious luxuriously luxuriousness luxurist luxury luxus Luzula Lwo ly lyam lyard Lyas Lycaena lycaenid Lycaenidae lycanthrope lycanthropia lycanthropic lycanthropist lycanthropize lycanthropous lycanthropy lyceal lyceum Lychnic Lychnis lychnomancy lychnoscope lychnoscopic Lycian lycid Lycidae Lycium Lycodes Lycodidae lycodoid lycopene Lycoperdaceae lycoperdaceous Lycoperdales lycoperdoid Lycoperdon lycoperdon Lycopersicon lycopin lycopod lycopode Lycopodiaceae lycopodiaceous Lycopodiales Lycopodium Lycopsida Lycopsis Lycopus lycorine Lycosa lycosid Lycosidae lyctid Lyctidae Lyctus Lycus lyddite Lydia Lydian lydite lye Lyencephala lyencephalous lyery lygaeid Lygaeidae Lygeum Lygodium Lygosoma lying lyingly Lymantria lymantriid Lymantriidae lymhpangiophlebitis Lymnaea lymnaean lymnaeid Lymnaeidae lymph lymphad lymphadenectasia lymphadenectasis lymphadenia lymphadenitis lymphadenoid lymphadenoma lymphadenopathy lymphadenosis lymphaemia lymphagogue lymphangeitis lymphangial lymphangiectasis lymphangiectatic lymphangiectodes lymphangiitis lymphangioendothelioma lymphangiofibroma lymphangiology lymphangioma lymphangiomatous lymphangioplasty lymphangiosarcoma lymphangiotomy lymphangitic lymphangitis lymphatic lymphatical lymphation lymphatism lymphatitis lymphatolysin lymphatolysis lymphatolytic lymphectasia lymphedema lymphemia lymphenteritis lymphoblast lymphoblastic lymphoblastoma lymphoblastosis lymphocele lymphocyst lymphocystosis lymphocyte lymphocythemia lymphocytic lymphocytoma lymphocytomatosis lymphocytosis lymphocytotic lymphocytotoxin lymphodermia lymphoduct lymphogenic lymphogenous lymphoglandula lymphogranuloma lymphoid lymphoidectomy lymphology lymphoma lymphomatosis lymphomatous lymphomonocyte lymphomyxoma lymphopathy lymphopenia lymphopenial lymphopoiesis lymphopoietic lymphoprotease lymphorrhage lymphorrhagia lymphorrhagic lymphorrhea lymphosarcoma lymphosarcomatosis lymphosarcomatous lymphosporidiosis lymphostasis lymphotaxis lymphotome lymphotomy lymphotoxemia lymphotoxin lymphotrophic lymphotrophy lymphous lymphuria lymphy lyncean Lynceus lynch lynchable lyncher Lyncid lyncine Lyndon Lynette Lyngbyaceae Lyngbyeae Lynn Lynne Lynnette lynnhaven lynx Lyomeri lyomerous Lyon Lyonese Lyonetia lyonetiid Lyonetiidae Lyonnais lyonnaise Lyonnesse lyophile lyophilization lyophilize lyophobe Lyopoma Lyopomata lyopomatous lyotrope lypemania Lyperosia lypothymia lyra Lyraid lyrate lyrated lyrately lyraway lyre lyrebird lyreflower lyreman lyretail lyric lyrical lyrically lyricalness lyrichord lyricism lyricist lyricize Lyrid lyriform lyrism lyrist Lyrurus lys Lysander lysate lyse Lysenkoism lysidine lysigenic lysigenous lysigenously Lysiloma Lysimachia Lysimachus lysimeter lysin lysine lysis Lysistrata lysogen lysogenesis lysogenetic lysogenic lysozyme lyssa lyssic lyssophobia lyterian Lythraceae lythraceous Lythrum lytic lytta lyxose M m Ma ma maam maamselle Maarten Mab Maba Mabel Mabellona mabi Mabinogion mabolo Mac mac macaasim macabre macabresque Macaca macaco Macacus macadam Macadamia macadamite macadamization macadamize macadamizer Macaglia macan macana Macanese macao macaque Macaranga Macarani Macareus macarism macarize macaroni macaronic macaronical macaronically macaronicism macaronism macaroon Macartney Macassar Macassarese macaw Macbeth Maccabaeus Maccabean Maccabees maccaboy macco maccoboy Macduff mace macedoine Macedon Macedonian Macedonic macehead maceman macer macerate macerater maceration Macflecknoe machairodont Machairodontidae Machairodontinae Machairodus machan machar machete Machetes machi Machiavel Machiavellian Machiavellianism Machiavellianly Machiavellic Machiavellism machiavellist Machiavellistic machicolate machicolation machicoulis Machicui machila Machilidae Machilis machin machinability machinable machinal machinate machination machinator machine machineful machineless machinelike machinely machineman machinemonger machiner machinery machinification machinify machinism machinist machinization machinize machinoclast machinofacture machinotechnique machinule Machogo machopolyp machree macies Macigno macilence macilency macilent mack mackenboy mackerel mackereler mackereling Mackinaw mackins mackintosh mackintoshite mackle macklike macle Macleaya macled Maclura Maclurea maclurin Macmillanite maco Macon maconite Macracanthorhynchus macracanthrorhynchiasis macradenous macrame macrander macrandrous macrauchene Macrauchenia macraucheniid Macraucheniidae macraucheniiform macrauchenioid macrencephalic macrencephalous macro macroanalysis macroanalyst macroanalytical macrobacterium macrobian macrobiosis macrobiote macrobiotic macrobiotics Macrobiotus macroblast macrobrachia macrocarpous Macrocentrinae Macrocentrus macrocephalia macrocephalic macrocephalism macrocephalous macrocephalus macrocephaly macrochaeta macrocheilia Macrochelys macrochemical macrochemically macrochemistry Macrochira macrochiran Macrochires macrochiria Macrochiroptera macrochiropteran macrocladous macroclimate macroclimatic macrococcus macrocoly macroconidial macroconidium macroconjugant macrocornea macrocosm macrocosmic macrocosmical macrocosmology macrocosmos macrocrystalline macrocyst Macrocystis macrocyte macrocythemia macrocytic macrocytosis macrodactyl macrodactylia macrodactylic macrodactylism macrodactylous macrodactyly macrodiagonal macrodomatic macrodome macrodont macrodontia macrodontism macroelement macroergate macroevolution macrofarad macrogamete macrogametocyte macrogamy macrogastria macroglossate macroglossia macrognathic macrognathism macrognathous macrogonidium macrograph macrographic macrography macrolepidoptera macrolepidopterous macrology macromandibular macromania macromastia macromazia macromelia macromeral macromere macromeric macromerite macromeritic macromesentery macrometer macromethod macromolecule macromyelon macromyelonal macron macronuclear macronucleus macronutrient macropetalous macrophage macrophagocyte macrophagus Macrophoma macrophotograph macrophotography macrophyllous macrophysics macropia macropinacoid macropinacoidal macroplankton macroplasia macroplastia macropleural macropodia Macropodidae Macropodinae macropodine macropodous macroprism macroprosopia macropsia macropteran macropterous Macropus Macropygia macropyramid macroreaction Macrorhamphosidae Macrorhamphosus macrorhinia Macrorhinus macroscelia Macroscelides macroscian macroscopic macroscopical macroscopically macroseism macroseismic macroseismograph macrosepalous macroseptum macrosmatic macrosomatia macrosomatous macrosomia macrosplanchnic macrosporange macrosporangium macrospore macrosporic Macrosporium macrosporophore macrosporophyl macrosporophyll Macrostachya macrostomatous macrostomia macrostructural macrostructure macrostylospore macrostylous macrosymbiont macrothere Macrotheriidae macrotherioid Macrotherium macrotherm macrotia macrotin Macrotolagus macrotome macrotone macrotous macrourid Macrouridae Macrourus Macrozamia macrozoogonidium macrozoospore Macrura macrural macruran macruroid macrurous mactation Mactra Mactridae mactroid macuca macula macular maculate maculated maculation macule maculicole maculicolous maculiferous maculocerebral maculopapular maculose Macusi macuta mad Madagascan Madagascar Madagascarian Madagass madam madame madapollam madarosis madarotic madbrain madbrained madcap madden maddening maddeningly maddeningness madder madderish madderwort madding maddingly maddish maddle made Madecase madefaction madefy Madegassy Madeira Madeiran Madeline madeline Madelon madescent Madge madhouse madhuca Madhva Madi Madia madid madidans Madiga madisterium madling madly madman madnep madness mado Madoc Madonna Madonnahood Madonnaish Madonnalike madoqua Madotheca madrague Madras madrasah Madrasi madreperl Madrepora Madreporacea madreporacean Madreporaria madreporarian madrepore madreporian madreporic madreporiform madreporite madreporitic Madrid madrier madrigal madrigaler madrigaletto madrigalian madrigalist Madrilene Madrilenian madrona madship madstone Madurese maduro madweed madwoman madwort mae Maeandra Maeandrina maeandrine maeandriniform maeandrinoid maeandroid Maecenas Maecenasship maegbote Maelstrom Maemacterion maenad maenadic maenadism maenaite Maenalus Maenidae Maeonian Maeonides maestri maestro maffia maffick mafficker maffle mafflin mafic mafoo mafura mag Maga Magadhi magadis magadize Magahi Magalensia magani magas magazinable magazinage magazine magazinelet magaziner magazinette magazinish magazinism magazinist magaziny Magdalen Magdalene Magdalenian mage Magellan Magellanian Magellanic magenta magged Maggie maggle maggot maggotiness maggotpie maggoty Maggy Magh Maghi Maghrib Maghribi Magi magi Magian Magianism magic magical magicalize magically magicdom magician magicianship magicked magicking Magindanao magiric magirics magirist magiristic magirological magirologist magirology Magism magister magisterial magisteriality magisterially magisterialness magistery magistracy magistral magistrality magistrally magistrand magistrant magistrate magistrateship magistratic magistratical magistratically magistrative magistrature Maglemose Maglemosean Maglemosian magma magmatic magnanimity magnanimous magnanimously magnanimousness magnascope magnascopic magnate magnecrystallic magnelectric magneoptic magnes magnesia magnesial magnesian magnesic magnesioferrite magnesite magnesium magnet magneta magnetic magnetical magnetically magneticalness magnetician magnetics magnetiferous magnetification magnetify magnetimeter magnetism magnetist magnetite magnetitic magnetizability magnetizable magnetization magnetize magnetizer magneto magnetobell magnetochemical magnetochemistry magnetod magnetodynamo magnetoelectric magnetoelectrical magnetoelectricity magnetogenerator magnetogram magnetograph magnetographic magnetoid magnetomachine magnetometer magnetometric magnetometrical magnetometrically magnetometry magnetomotive magnetomotor magneton magnetooptic magnetooptical magnetooptics magnetophone magnetophonograph magnetoplumbite magnetoprinter magnetoscope magnetostriction magnetotelegraph magnetotelephone magnetotherapy magnetotransmitter magnetron magnicaudate magnicaudatous magnifiable magnific magnifical magnifically Magnificat magnification magnificative magnifice magnificence magnificent magnificently magnificentness magnifico magnifier magnify magniloquence magniloquent magniloquently magniloquy magnipotence magnipotent magnirostrate magnisonant magnitude magnitudinous magnochromite magnoferrite Magnolia magnolia Magnoliaceae magnoliaceous magnum Magnus Magog magot magpie magpied magpieish magsman maguari maguey Magyar Magyaran Magyarism Magyarization Magyarize Mah maha mahaleb mahalla mahant mahar maharaja maharajrana maharana maharanee maharani maharao Maharashtri maharawal maharawat mahatma mahatmaism Mahayana Mahayanism Mahayanist Mahayanistic Mahdi Mahdian Mahdiship Mahdism Mahdist Mahesh Mahi Mahican mahmal Mahmoud mahmudi mahoe mahoganize mahogany mahoitre maholi maholtine Mahomet Mahometry mahone Mahonia Mahori Mahound mahout Mahra Mahran Mahri mahseer mahua mahuang Maia Maiacca Maianthemum maid Maida maidan maiden maidenhair maidenhead maidenhood maidenish maidenism maidenlike maidenliness maidenly maidenship maidenweed maidhood Maidie maidish maidism maidkin maidlike maidling maidservant Maidu maidy maiefic maieutic maieutical maieutics maigre maiid Maiidae mail mailable mailbag mailbox mailclad mailed mailer mailguard mailie maillechort mailless mailman mailplane maim maimed maimedly maimedness maimer maimon Maimonidean Maimonist main Mainan Maine mainferre mainlander mainly mainmast mainmortable mainour mainpast mainpernable mainpernor mainpin mainport mainpost mainprise mains mainsail mainsheet mainspring mainstay Mainstreeter Mainstreetism maint maintain maintainable maintainableness maintainer maintainment maintainor maintenance Maintenon maintop maintopman maioid Maioidea maioidean Maioli Maiongkong Maipure mairatour maire maisonette Maithili maitlandite Maitreya Maius maize maizebird maizenic maizer Maja Majagga majagua Majesta majestic majestical majestically majesticalness majesticness majestious majesty majestyship Majlis majo majolica majolist majoon Major major majorate majoration Majorcan majorette Majorism Majorist Majoristic majority majorize majorship majuscular majuscule makable Makah Makaraka Makari Makassar make makebate makedom makefast maker makeress makership makeshift makeshiftiness makeshiftness makeshifty makeweight makhzan maki makimono making makluk mako Makonde makroskelic Maku Makua makuk mal mala malaanonang Malabar Malabarese malabathrum malacanthid Malacanthidae malacanthine Malacanthus Malacca Malaccan malaccident Malaceae malaceous malachite malacia Malaclemys Malaclypse Malacobdella Malacocotylea malacoderm Malacodermatidae malacodermatous Malacodermidae malacodermous malacoid malacolite malacological malacologist malacology malacon malacophilous malacophonous malacophyllous malacopod Malacopoda malacopodous malacopterygian Malacopterygii malacopterygious Malacoscolices Malacoscolicine Malacosoma Malacostraca malacostracan malacostracology malacostracous malactic maladaptation maladdress maladive maladjust maladjusted maladjustive maladjustment maladminister maladministration maladministrator maladroit maladroitly maladroitness maladventure malady Malaga Malagasy Malagigi malagma malaguena malahack malaise malakin malalignment malambo malandered malanders malandrous malanga malapaho malapert malapertly malapertness malapi malapplication malappointment malappropriate malappropriation malaprop malapropian malapropish malapropism malapropoism malapropos Malapterurus malar malaria malarial malariaproof malarin malarioid malariologist malariology malarious malarkey malaroma malarrangement malasapsap malassimilation malassociation malate malati malattress malax malaxable malaxage malaxate malaxation malaxator malaxerman Malaxis Malay Malayalam Malayalim Malayan Malayic Malayize Malayoid Malaysian malbehavior malbrouck malchite Malchus Malcolm malconceived malconduct malconformation malconstruction malcontent malcontented malcontentedly malcontentedness malcontentism malcontently malcontentment malconvenance malcreated malcultivation maldeveloped maldevelopment maldigestion maldirection maldistribution Maldivian maldonite malduck Male male malease maleate Malebolge Malebolgian Malebolgic Malebranchism Malecite maledicent maledict malediction maledictive maledictory maleducation malefaction malefactor malefactory malefactress malefical malefically maleficence maleficent maleficial maleficiate maleficiation maleic maleinoid malella Malemute maleness malengine maleo maleruption Malesherbia Malesherbiaceae malesherbiaceous malevolence malevolency malevolent malevolently malexecution malfeasance malfeasant malfed malformation malformed malfortune malfunction malgovernment malgrace malguzar malguzari malhonest malhygiene mali malic malice maliceful maliceproof malicho malicious maliciously maliciousness malicorium malidentification maliferous maliform malign malignance malignancy malignant malignantly malignation maligner malignify malignity malignly malignment malik malikadna malikala malikana Maliki Malikite maline malines malinfluence malinger malingerer malingery Malinois malinowskite malinstitution malinstruction malintent malism malison malist malistic malkin Malkite mall malladrite mallangong mallard mallardite malleability malleabilization malleable malleableize malleableized malleableness malleablize malleal mallear malleate malleation mallee Malleifera malleiferous malleiform mallein malleinization malleinize mallemaroking mallemuck malleoincudal malleolable malleolar malleolus mallet malleus Malling Mallophaga mallophagan mallophagous malloseismic Mallotus mallow mallowwort Malloy mallum mallus malm Malmaison malmignatte malmsey malmstone malmy malnourished malnourishment malnutrite malnutrition malo malobservance malobservation maloccluded malocclusion malodor malodorant malodorous malodorously malodorousness malojilla malonate malonic malonyl malonylurea Malope maloperation malorganization malorganized malouah malpais Malpighia Malpighiaceae malpighiaceous Malpighian malplaced malpoise malposed malposition malpractice malpractioner malpraxis malpresentation malproportion malproportioned malpropriety malpublication malreasoning malrotation malshapen malt maltable maltase malter Maltese maltha Malthe malthouse Malthusian Malthusianism Malthusiast maltiness malting maltman Malto maltobiose maltodextrin maltodextrine maltolte maltose maltreat maltreatment maltreator maltster malturned maltworm malty malunion Malurinae malurine Malurus Malus Malva Malvaceae malvaceous Malvales malvasia malvasian Malvastrum malversation malverse malvoisie malvolition Mam mamba mambo mameliere mamelonation mameluco Mameluke Mamercus Mamers Mamertine Mamie Mamilius mamlatdar mamma mammal mammalgia Mammalia mammalian mammaliferous mammality mammalogical mammalogist mammalogy mammary mammate Mammea mammectomy mammee mammer Mammifera mammiferous mammiform mammilla mammillaplasty mammillar Mammillaria mammillary mammillate mammillated mammillation mammilliform mammilloid mammitis mammock mammogen mammogenic mammogenically mammon mammondom mammoniacal mammonish mammonism mammonist mammonistic mammonite mammonitish mammonization mammonize mammonolatry Mammonteus mammoth mammothrept mammula mammular Mammut Mammutidae mammy mamo man mana Manabozho manacle Manacus manage manageability manageable manageableness manageably managee manageless management managemental manager managerdom manageress managerial managerially managership managery manaism manakin manal manas Manasquan manatee Manatidae manatine manatoid Manatus manavel manavelins Manavendra manbird manbot manche Manchester Manchesterdom Manchesterism Manchesterist Manchestrian manchet manchineel Manchu Manchurian mancinism mancipable mancipant mancipate mancipation mancipative mancipatory mancipee mancipium manciple mancipleship mancipular mancono Mancunian mancus mand Mandaean Mandaeism Mandaic Mandaite mandala Mandalay mandament mandamus Mandan mandant mandarah mandarin mandarinate mandarindom mandariness mandarinic mandarinism mandarinize mandarinship mandatary mandate mandatee mandation mandative mandator mandatorily mandatory mandatum Mande mandelate mandelic mandible mandibula mandibular mandibulary Mandibulata mandibulate mandibulated mandibuliform mandibulohyoid mandibulomaxillary mandibulopharyngeal mandibulosuspensorial mandil mandilion Mandingan Mandingo mandola mandolin mandolinist mandolute mandom mandora mandore mandra mandragora mandrake mandrel mandriarch mandrill mandrin mandruka mandua manducable manducate manducation manducatory mandyas mane maned manege manei maneless manent manerial manes manesheet maness Manetti Manettia maneuver maneuverability maneuverable maneuverer maneuvrability maneuvrable maney Manfred Manfreda manful manfully manfulness mang manga mangabeira mangabey mangal manganapatite manganate manganblende manganbrucite manganeisen manganese manganesian manganetic manganhedenbergite manganic manganiferous manganite manganium manganize Manganja manganocalcite manganocolumbite manganophyllite manganosiderite manganosite manganostibiite manganotantalite manganous manganpectolite Mangar Mangbattu mange mangeao mangel mangelin manger mangerite mangi Mangifera mangily manginess mangle mangleman mangler mangling manglingly mango mangona mangonel mangonism mangonization mangonize mangosteen mangrass mangrate mangrove Mangue mangue mangy Mangyan manhandle Manhattan Manhattanite Manhattanize manhead manhole manhood mani mania maniable maniac maniacal maniacally manic Manicaria manicate Manichaean Manichaeanism Manichaeanize Manichaeism Manichaeist Manichee manichord manicole manicure manicurist manid Manidae manienie manifest manifestable manifestant manifestation manifestational manifestationist manifestative manifestatively manifested manifestedness manifester manifestive manifestly manifestness manifesto manifold manifolder manifoldly manifoldness manifoldwise maniform manify Manihot manikin manikinism Manila manila manilla manille manioc maniple manipulable manipular manipulatable manipulate manipulation manipulative manipulatively manipulator manipulatory Manipuri Manis manism manist manistic manito Manitoban manitrunk maniu Manius Maniva manjak Manjeri mank mankeeper mankin mankind manless manlessly manlessness manlet manlihood manlike manlikely manlikeness manlily manliness manling manly Mann manna mannan mannequin manner mannerable mannered mannerhood mannering mannerism mannerist manneristic manneristical manneristically mannerize mannerless mannerlessness mannerliness mannerly manners mannersome manness Mannheimar mannide mannie manniferous mannify mannikinism manning mannish mannishly mannishness mannite mannitic mannitol mannitose mannoheptite mannoheptitol mannoheptose mannoketoheptose mannonic mannosan mannose Manny manny mano Manobo manoc manograph Manolis manometer manometric manometrical manometry manomin manor manorial manorialism manorialize manorship manoscope manostat manostatic manque manred manrent manroot manrope Mans mansard mansarded manscape manse manservant manship mansion mansional mansionary mansioned mansioneer mansionry manslaughter manslaughterer manslaughtering manslaughterous manslayer manslaying manso mansonry manstealer manstealing manstopper manstopping mansuete mansuetely mansuetude mant manta mantal manteau mantel mantelet manteline mantelletta mantellone mantelpiece mantelshelf manteltree manter mantes mantevil mantic manticism manticore mantid Mantidae mantilla Mantinean mantis Mantisia Mantispa mantispid Mantispidae mantissa mantistic mantle mantled mantlet mantling Manto manto Mantodea mantoid Mantoidea mantologist mantology mantra mantrap mantua mantuamaker mantuamaking Mantuan Mantzu manual manualii manualism manualist manualiter manually manuao manubrial manubriated manubrium manucaption manucaptor manucapture manucode Manucodia manucodiata manuduce manuduction manuductor manuductory Manuel manufactory manufacturable manufactural manufacture manufacturer manufacturess manuka manul manuma manumea manumisable manumission manumissive manumit manumitter manumotive manurable manurage manurance manure manureless manurer manurial manurially manus manuscript manuscriptal manuscription manuscriptural manusina manustupration manutagi Manvantara manward manwards manway manweed manwise Manx Manxman Manxwoman many manyberry Manyema manyfold manyness manyplies manyroot manyways manywhere manywise manzana manzanilla manzanillo manzanita Manzas manzil mao maomao Maori Maoridom Maoriland Maorilander map mapach mapau maphrian mapland maple maplebush mapo mappable mapper Mappila mappist mappy Mapuche mapwise maquahuitl maquette maqui Maquiritare maquis Mar mar Mara marabotin marabou Marabout marabuto maraca Maracaibo maracan maracock marae Maragato marajuana marakapas maral maranatha marang Maranha Maranham Maranhao Maranta Marantaceae marantaceous marantic marara mararie marasca maraschino marasmic Marasmius marasmoid marasmous marasmus Maratha Marathi marathon marathoner Marathonian Maratism Maratist Marattia Marattiaceae marattiaceous Marattiales maraud marauder maravedi Maravi marbelize marble marbled marblehead marbleheader marblehearted marbleization marbleize marbleizer marblelike marbleness marbler marbles marblewood marbling marblish marbly marbrinus Marc marc Marcan marcantant marcasite marcasitic marcasitical Marcel marcel marceline Marcella marcella marceller Marcellian Marcellianism marcello marcescence marcescent Marcgravia Marcgraviaceae marcgraviaceous March march Marchantia Marchantiaceae marchantiaceous Marchantiales marcher marchetto marchioness marchite marchland marchman Marchmont marchpane Marci Marcia marcid Marcionism Marcionist Marcionite Marcionitic Marcionitish Marcionitism Marcite Marco marco Marcobrunner Marcomanni Marconi marconi marconigram marconigraph marconigraphy marcor Marcos Marcosian marcottage mardy mare mareblob Mareca marechal Marehan Marek marekanite maremma maremmatic maremmese marengo marennin Mareotic Mareotid Marfik marfire margarate Margarelon Margaret margaric margarin margarine margarita margaritaceous margarite margaritiferous margaritomancy Margarodes margarodid Margarodinae margarodite Margaropus margarosanite margay marge margeline margent Margery Margie margin marginal marginalia marginality marginalize marginally marginate marginated margination margined Marginella Marginellidae marginelliform marginiform margining marginirostral marginoplasty margosa Margot margravate margrave margravely margravial margraviate margravine Marguerite marguerite marhala Marheshvan Mari Maria maria marialite Mariamman Marian Mariana Marianic Marianne Marianolatrist Marianolatry maricolous marid Marie mariengroschen marigenous marigold marigram marigraph marigraphic marijuana marikina Marilla Marilyn marimba marimonda marina marinade marinate marinated marine mariner marinheiro marinist marinorama Mario mariola Mariolater Mariolatrous Mariolatry Mariology Marion marionette Mariou Mariposan mariposite maris marish marishness Marist maritage marital maritality maritally mariticidal mariticide Maritime maritime maritorious mariupolite marjoram Marjorie Mark mark marka Markab markdown Markeb marked markedly markedness marker market marketability marketable marketableness marketably marketeer marketer marketing marketman marketstead marketwise markfieldite Markgenossenschaft markhor marking markka markless markman markmoot Marko markshot marksman marksmanly marksmanship markswoman markup Markus markweed markworthy marl Marla marlaceous marlberry marled Marlena marler marli marlin marline marlinespike marlite marlitic marllike marlock Marlovian Marlowesque Marlowish Marlowism marlpit marly marm marmalade marmalady Marmar marmarization marmarize marmarosis marmatite marmelos marmennill marmit marmite marmolite marmoraceous marmorate marmorated marmoration marmoreal marmoreally marmorean marmoric Marmosa marmose marmoset marmot Marmota Marnix maro marocain marok Maronian Maronist Maronite maroon marooner maroquin Marpessa marplot marplotry marque marquee Marquesan marquess marquetry marquis marquisal marquisate marquisdom marquise marquisette marquisina marquisotte marquisship marquito marranism marranize marrano marree Marrella marrer marriable marriage marriageability marriageable marriageableness marriageproof married marrier marron marrot marrow marrowbone marrowed marrowfat marrowish marrowless marrowlike marrowsky marrowskyer marrowy Marrubium Marrucinian marry marryer marrying marrymuffe Mars Marsala Marsdenia marseilles Marsh marsh Marsha marshal marshalate marshalcy marshaler marshaless Marshall marshalman marshalment Marshalsea marshalship marshberry marshbuck marshfire marshflower marshiness marshite marshland marshlander marshlike marshlocks marshman marshwort marshy Marsi Marsian Marsilea Marsileaceae marsileaceous Marsilia Marsiliaceae marsipobranch Marsipobranchia Marsipobranchiata marsipobranchiate Marsipobranchii marsoon Marspiter Marssonia Marssonina marsupial Marsupialia marsupialian marsupialization marsupialize marsupian Marsupiata marsupiate marsupium Mart mart martagon martel marteline martellate martellato marten martensite martensitic Martes martext Martha martial martialism Martialist martiality martialization martialize martially martialness Martian Martin martin martinet martineta martinetish martinetishness martinetism martinetship Martinez martingale martinico Martinism Martinist Martinmas martinoe martite Martius martlet Martu Marty Martyn Martynia Martyniaceae martyniaceous martyr martyrdom martyress martyrium martyrization martyrize martyrizer martyrlike martyrly martyrolatry martyrologic martyrological martyrologist martyrologistic martyrologium martyrology martyrship martyry maru marvel marvelment marvelous marvelously marvelousness marvelry marver Marvin Marwari Marxian Marxianism Marxism Marxist Mary mary marybud Maryland Marylander Marylandian Marymass marysole marzipan mas masa Masai Masanao Masanobu masaridid Masarididae Masaridinae Masaris mascagnine mascagnite mascally mascara mascaron mascled mascleless mascot mascotism mascotry Mascouten mascularity masculate masculation masculine masculinely masculineness masculinism masculinist masculinity masculinization masculinize masculist masculofeminine masculonucleus masculy masdeu Masdevallia mash masha mashal mashallah mashelton masher mashie mashing mashman Mashona Mashpee mashru mashy masjid mask masked Maskegon maskelynite masker maskette maskflower Maskins masklike Maskoi maskoid maslin masochism masochist masochistic Mason mason masoned masoner masonic Masonite masonite masonry masonwork masooka masoola Masora Masorete Masoreth Masoretic Maspiter masque masquer masquerade masquerader Mass mass massa massacre massacrer massage massager massageuse massagist Massalia Massalian massaranduba massasauga masse massebah massecuite massedly massedness Massekhoth massel masser masseter masseteric masseur masseuse massicot massier massiest massif Massilia Massilian massily massiness massive massively massiveness massivity masskanne massless masslike Massmonger massotherapy massoy massula massy mast mastaba mastadenitis mastadenoma mastage mastalgia mastatrophia mastatrophy mastauxe mastax mastectomy masted master masterable masterate masterdom masterer masterful masterfully masterfulness masterhood masterless masterlessness masterlike masterlily masterliness masterling masterly masterman mastermind masterous masterpiece masterproof mastership masterwork masterwort mastery mastful masthead masthelcosis mastic masticability masticable masticate mastication masticator masticatory mastiche masticic Masticura masticurous mastiff Mastigamoeba mastigate mastigium mastigobranchia mastigobranchial Mastigophora mastigophoran mastigophoric mastigophorous mastigopod Mastigopoda mastigopodous mastigote mastigure masting mastitis mastless mastlike mastman mastocarcinoma mastoccipital mastochondroma mastochondrosis mastodon mastodonsaurian Mastodonsaurus mastodont mastodontic Mastodontidae mastodontine mastodontoid mastodynia mastoid mastoidal mastoidale mastoideal mastoidean mastoidectomy mastoideocentesis mastoideosquamous mastoiditis mastoidohumeral mastoidohumeralis mastoidotomy mastological mastologist mastology mastomenia mastoncus mastooccipital mastoparietal mastopathy mastopexy mastoplastia mastorrhagia mastoscirrhus mastosquamose mastotomy mastotympanic masturbate masturbation masturbational masturbator masturbatory mastwood masty masu Masulipatam masurium Mat mat Matabele Matacan matachin matachina mataco matadero matador mataeological mataeologue mataeology Matagalpa Matagalpan matagory matagouri matai matajuelo matalan matamata matamoro matanza matapan matapi Matar matara Matatua Matawan matax matboard match matchable matchableness matchably matchboard matchboarding matchbook matchbox matchcloth matchcoat matcher matching matchless matchlessly matchlessness matchlock matchmaker matchmaking matchmark Matchotic matchsafe matchstick matchwood matchy mate mategriffon matehood mateless matelessness matelote mately mater materfamilias material materialism materialist materialistic materialistical materialistically materiality materialization materialize materializee materializer materially materialman materialness materiate materiation materiel maternal maternality maternalize maternally maternalness maternity maternology mateship matey matezite matfelon matgrass math mathematic mathematical mathematically mathematicals mathematician mathematicize mathematics mathematize mathemeg mathes mathesis mathetic Mathurin matico matildite matin matinal matinee mating matins matipo matka matless matlockite matlow matmaker matmaking matra matral Matralia matranee matrass matreed matriarch matriarchal matriarchalism matriarchate matriarchic matriarchist matriarchy matric matrical Matricaria matrices matricidal matricide matricula matriculable matriculant matricular matriculate matriculation matriculator matriculatory Matrigan matriheritage matriherital matrilineal matrilineally matrilinear matrilinearism matriliny matrilocal matrimonial matrimonially matrimonious matrimoniously matrimony matriotism matripotestal matris matrix matroclinic matroclinous matrocliny matron matronage matronal Matronalia matronhood matronism matronize matronlike matronliness matronly matronship matronymic matross Mats matsu matsuri Matt matta mattamore Mattapony mattaro mattboard matte matted mattedly mattedness matter matterate matterative matterful matterfulness matterless mattery Matteuccia Matthaean Matthew Matthias Matthieu Matthiola Matti matti matting mattock mattoid mattoir mattress mattulla Matty maturable maturate maturation maturative mature maturely maturement matureness maturer maturescence maturescent maturing maturish maturity matutinal matutinally matutinary matutine matutinely matweed maty matzo matzoon matzos matzoth mau maucherite Maud maud maudle maudlin maudlinism maudlinize maudlinly maudlinwort mauger maugh Maugis maul Maulawiyah mauler mauley mauling maulstick Maumee maumet maumetry Maun maun maund maunder maunderer maundful maundy maunge Maurandia Maureen Mauretanian Mauri Maurice Maurist Mauritia Mauritian Mauser mausolea mausoleal mausolean mausoleum mauther mauve mauveine mauvette mauvine maux maverick mavis Mavortian mavournin mavrodaphne maw mawbound mawk mawkish mawkishly mawkishness mawky mawp Max maxilla maxillar maxillary maxilliferous maxilliform maxilliped maxillipedary maxillodental maxillofacial maxillojugal maxillolabial maxillomandibular maxillopalatal maxillopalatine maxillopharyngeal maxillopremaxillary maxilloturbinal maxillozygomatic maxim maxima maximal Maximalism Maximalist maximally maximate maximation maximed maximist maximistic maximite maximization maximize maximizer Maximon maximum maximus maxixe maxwell May may Maya maya Mayaca Mayacaceae mayacaceous Mayan Mayance Mayathan maybe Maybird Maybloom maybush Maycock maycock Mayda mayday Mayer Mayey Mayeye Mayfair mayfish Mayflower Mayfowl mayhap mayhappen mayhem Maying Maylike maynt Mayo Mayologist mayonnaise mayor mayoral mayoralty mayoress mayorship Mayoruna Maypole Maypoling maypop maysin mayten Maytenus Maythorn Maytide Maytime mayweed Maywings Maywort maza mazalgia Mazama mazame Mazanderani mazapilite mazard mazarine Mazatec Mazateco Mazda Mazdaism Mazdaist Mazdakean Mazdakite Mazdean maze mazed mazedly mazedness mazeful mazement mazer Mazhabi mazic mazily maziness mazocacothesis mazodynia mazolysis mazolytic mazopathia mazopathic mazopexy Mazovian mazuca mazuma Mazur Mazurian mazurka mazut mazy mazzard Mazzinian Mazzinianism Mazzinist mbalolo Mbaya mbori Mbuba Mbunda Mcintosh Mckay Mdewakanton me meable meaching mead meader meadow meadowbur meadowed meadower meadowing meadowink meadowland meadowless meadowsweet meadowwort meadowy meadsman meager meagerly meagerness meagre meak meal mealable mealberry mealer mealies mealily mealiness mealless mealman mealmonger mealmouth mealmouthed mealproof mealtime mealy mealymouth mealymouthed mealymouthedly mealymouthedness mealywing mean meander meanderingly meandrine meandriniform meandrite meandrous meaned meaner meaning meaningful meaningfully meaningless meaninglessly meaninglessness meaningly meaningness meanish meanly meanness meant Meantes meantone meanwhile mease measle measled measledness measles measlesproof measly measondue measurability measurable measurableness measurably measuration measure measured measuredly measuredness measureless measurelessly measurelessness measurely measurement measurer measuring meat meatal meatbird meatcutter meated meathook meatily meatiness meatless meatman meatometer meatorrhaphy meatoscope meatoscopy meatotome meatotomy meatus meatworks meaty Mebsuta Mecaptera mecate Mecca Meccan Meccano Meccawee Mechael mechanal mechanality mechanalize mechanic mechanical mechanicalism mechanicalist mechanicality mechanicalization mechanicalize mechanically mechanicalness mechanician mechanicochemical mechanicocorpuscular mechanicointellectual mechanicotherapy mechanics mechanism mechanist mechanistic mechanistically mechanization mechanize mechanizer mechanolater mechanology mechanomorphic mechanomorphism mechanotherapeutic mechanotherapeutics mechanotherapist mechanotherapy Mechir Mechitaristican Mechlin mechoacan meckelectomy Meckelian Mecklenburgian mecodont Mecodonta mecometer mecometry mecon meconic meconidium meconin meconioid meconium meconology meconophagism meconophagist Mecoptera mecopteran mecopteron mecopterous medal medaled medalet medalist medalize medallary medallic medallically medallion medallionist meddle meddlecome meddlement meddler meddlesome meddlesomely meddlesomeness meddling meddlingly Mede Medellin Medeola Media media mediacid mediacy mediad mediaevalize mediaevally medial medialization medialize medialkaline medially Median median medianic medianimic medianimity medianism medianity medianly mediant mediastinal mediastine mediastinitis mediastinotomy mediastinum mediate mediately mediateness mediating mediatingly mediation mediative mediatization mediatize mediator mediatorial mediatorialism mediatorially mediatorship mediatory mediatress mediatrice mediatrix Medic medic medicable Medicago medical medically medicament medicamental medicamentally medicamentary medicamentation medicamentous medicaster medicate medication medicative medicator medicatory Medicean Medici medicinable medicinableness medicinal medicinally medicinalness medicine medicinelike medicinemonger mediciner medico medicobotanical medicochirurgic medicochirurgical medicodental medicolegal medicolegally medicomania medicomechanic medicomechanical medicomoral medicophysical medicopsychological medicopsychology medicostatistic medicosurgical medicotopographic medicozoologic mediety Medieval medieval medievalism medievalist medievalistic medievalize medievally medifixed mediglacial medimn medimno medimnos medimnus Medina Medinilla medino medio medioanterior mediocarpal medioccipital mediocre mediocrist mediocrity mediocubital mediodepressed mediodigital mediodorsal mediodorsally mediofrontal mediolateral mediopalatal mediopalatine mediopassive mediopectoral medioperforate mediopontine medioposterior mediosilicic mediostapedial mediotarsal medioventral medisance medisect medisection Medish Medism meditant meditate meditating meditatingly meditation meditationist meditatist meditative meditatively meditativeness meditator mediterranean Mediterraneanism Mediterraneanization Mediterraneanize mediterraneous medithorax Meditrinalia meditullium medium mediumism mediumistic mediumization mediumize mediumship medius Medize Medizer medjidie medlar medley Medoc medregal medrick medrinaque medulla medullar medullary medullate medullated medullation medullispinal medullitis medullization medullose Medusa Medusaean medusal medusalike medusan medusiferous medusiform medusoid meebos meece meed meedless Meehan meek meeken meekhearted meekheartedness meekling meekly meekness Meekoceras Meeks meered meerkat meerschaum meese meet meetable meeten meeter meeterly meethelp meethelper meeting meetinger meetinghouse meetly meetness Meg megabar megacephalia megacephalic megacephaly megacerine Megaceros megacerotine Megachile megachilid Megachilidae Megachiroptera megachiropteran megachiropterous megacolon megacosm megacoulomb megacycle megadont Megadrili megadynamics megadyne Megaera megaerg megafarad megafog megagamete megagametophyte megajoule megakaryocyte Megalactractus Megaladapis Megalaema Megalaemidae Megalania megaleme Megalensian megalerg Megalesia Megalesian megalesthete megalethoscope Megalichthyidae Megalichthys megalith megalithic Megalobatrachus megaloblast megaloblastic megalocardia megalocarpous megalocephalia megalocephalic megalocephalous megalocephaly Megaloceros megalochirous megalocornea megalocyte megalocytosis megalodactylia megalodactylism megalodactylous Megalodon megalodont megalodontia Megalodontidae megaloenteron megalogastria megaloglossia megalograph megalography megalohepatia megalokaryocyte megalomania megalomaniac megalomaniacal megalomelia Megalonychidae Megalonyx megalopa megalopenis megalophonic megalophonous megalophthalmus megalopia megalopic Megalopidae Megalopinae megalopine megaloplastocyte megalopolis megalopolitan megalopolitanism megalopore megalops megalopsia Megaloptera Megalopyge Megalopygidae Megalornis Megalornithidae megalosaur megalosaurian Megalosauridae megalosauroid Megalosaurus megaloscope megaloscopy megalosphere megalospheric megalosplenia megalosyndactyly megaloureter Megaluridae Megamastictora megamastictoral megamere megameter megampere Meganeura Meganthropus meganucleus megaparsec megaphone megaphonic megaphotographic megaphotography megaphyllous Megaphyton megapod megapode Megapodidae Megapodiidae Megapodius megaprosopous Megaptera Megapterinae megapterine Megarensian Megarhinus Megarhyssa Megarian Megarianism Megaric megaron megasclere megascleric megasclerous megasclerum megascope megascopic megascopical megascopically megaseism megaseismic megaseme Megasoma megasporange megasporangium megaspore megasporic megasporophyll megasynthetic megathere megatherian Megatheriidae megatherine megatherioid Megatherium megatherm megathermic megatheroid megaton megatype megatypy megavolt megawatt megaweber megazooid megazoospore megerg Meggy megilp megmho megohm megohmit megohmmeter megophthalmus megotalc Megrel Megrez megrim megrimish mehalla mehari meharist Mehelya mehmandar Mehrdad mehtar mehtarship Meibomia Meibomian meile mein meinie meio meiobar meionite meiophylly meiosis meiotaxy meiotic Meissa Meistersinger meith Meithei meizoseismal meizoseismic mejorana Mekbuda Mekhitarist mekometer mel mela melaconite melada meladiorite melagabbro melagra melagranite Melaleuca melalgia melam melamed melamine melampodium Melampsora Melampsoraceae Melampus melampyritol Melampyrum melanagogal melanagogue melancholia melancholiac melancholic melancholically melancholily melancholiness melancholious melancholiously melancholiousness melancholish melancholist melancholize melancholomaniac melancholy melancholyish Melanchthonian Melanconiaceae melanconiaceous Melanconiales Melanconium melanemia melanemic Melanesian melange melanger melangeur Melania melanian melanic melaniferous Melaniidae melanilin melaniline melanin Melanippe Melanippus melanism melanistic melanite melanitic melanize melano melanoblast melanocarcinoma melanocerite Melanochroi Melanochroid melanochroite melanochroous melanocomous melanocrate melanocratic melanocyte Melanodendron melanoderma melanodermia melanodermic Melanogaster melanogen Melanoi melanoid melanoidin melanoma melanopathia melanopathy melanophore melanoplakia Melanoplus melanorrhagia melanorrhea Melanorrhoea melanosarcoma melanosarcomatosis melanoscope melanose melanosed melanosis melanosity melanospermous melanotekite melanotic melanotrichous melanous melanterite Melanthaceae melanthaceous Melanthium melanure melanuresis melanuria melanuric melaphyre Melas melasma melasmic melassigenic Melastoma Melastomaceae melastomaceous melastomad melatope melaxuma Melburnian Melcarth melch Melchite Melchora meld melder meldometer meldrop mele Meleager Meleagridae Meleagrina Meleagrinae meleagrine Meleagris melebiose melee melena melene melenic Meles Meletian Meletski melezitase melezitose Melia Meliaceae meliaceous Meliadus Melian Melianthaceae melianthaceous Melianthus meliatin melibiose melic Melica Melicent melicera meliceric meliceris melicerous Melicerta Melicertidae melichrous melicitose Melicocca melicraton melilite melilitite melilot Melilotus Melinae Melinda meline Melinis melinite Meliola meliorability meliorable meliorant meliorate meliorater melioration meliorative meliorator meliorism meliorist melioristic meliority meliphagan Meliphagidae meliphagidan meliphagous meliphanite Melipona Meliponinae meliponine melisma melismatic melismatics Melissa melissyl melissylic Melitaea melitemia melithemia melitis melitose melitriose melittologist melittology melituria melituric mell mellaginous mellate mellay melleous meller Mellifera melliferous mellificate mellification mellifluence mellifluent mellifluently mellifluous mellifluously mellifluousness mellimide mellisonant mellisugent mellit mellitate mellite mellitic Mellivora Mellivorinae mellivorous mellon mellonides mellophone mellow mellowly mellowness mellowy mellsman Melocactus melocoton melodeon melodia melodial melodially melodic melodica melodically melodicon melodics melodiograph melodion melodious melodiously melodiousness melodism melodist melodize melodizer melodram melodrama melodramatic melodramatical melodramatically melodramaticism melodramatics melodramatist melodramatize melodrame melody melodyless meloe melogram Melogrammataceae melograph melographic meloid Meloidae melologue Melolontha Melolonthidae melolonthidan Melolonthides Melolonthinae melolonthine melomane melomania melomaniac melomanic melon meloncus Melonechinus melongena melongrower melonist melonite Melonites melonlike melonmonger melonry melophone melophonic melophonist melopiano meloplast meloplastic meloplasty melopoeia melopoeic melos melosa Melospiza Melothria melotragedy melotragic melotrope melt meltability meltable meltage melted meltedness melteigite melter melters melting meltingly meltingness melton Meltonian Melungeon Melursus mem member membered memberless membership membracid Membracidae membracine membral membrally membrana membranaceous membranaceously membranate membrane membraned membraneless membranelike membranelle membraneous membraniferous membraniform membranin Membranipora Membraniporidae membranocalcareous membranocartilaginous membranocoriaceous membranocorneous membranogenic membranoid membranology membranonervous membranosis membranous membranously membranula membranule membretto memento meminna Memnon Memnonian Memnonium memo memoir memoirism memoirist memorabilia memorability memorable memorableness memorably memoranda memorandist memorandize memorandum memorative memoria memorial memorialist memorialization memorialize memorializer memorially memoried memorious memorist memorizable memorization memorize memorizer memory memoryless Memphian Memphite men menaccanite menaccanitic menace menaceable menaceful menacement menacer menacing menacingly menacme menadione menage menagerie menagerist menald Menangkabau menarche Menaspis mend mendable mendacious mendaciously mendaciousness mendacity Mendaite Mende mendee Mendelian Mendelianism Mendelianist Mendelism Mendelist Mendelize Mendelssohnian Mendelssohnic mendelyeevite mender Mendi mendicancy mendicant mendicate mendication mendicity mending mendipite mendole mendozite mends meneghinite menfolk Menfra meng Mengwe menhaden menhir menial menialism meniality menially Menic menilite meningeal meninges meningic meningina meningism meningitic meningitis meningocele meningocephalitis meningocerebritis meningococcal meningococcemia meningococcic meningococcus meningocortical meningoencephalitis meningoencephalocele meningomalacia meningomyclitic meningomyelitis meningomyelocele meningomyelorrhaphy meningorachidian meningoradicular meningorhachidian meningorrhagia meningorrhea meningorrhoea meningosis meningospinal meningotyphoid meninting meninx meniscal meniscate menisciform meniscitis meniscoid meniscoidal Meniscotheriidae Meniscotherium meniscus menisperm Menispermaceae menispermaceous menispermine Menispermum Menkalinan Menkar Menkib menkind mennom Mennonist Mennonite Menobranchidae Menobranchus menognath menognathous menologium menology menometastasis Menominee menopausal menopause menopausic menophania menoplania Menopoma Menorah Menorhyncha menorhynchous menorrhagia menorrhagic menorrhagy menorrhea menorrheic menorrhoea menorrhoeic menoschesis menoschetic menosepsis menostasia menostasis menostatic menostaxis Menotyphla menotyphlic menoxenia mensa mensal mensalize mense menseful menseless menses Menshevik Menshevism Menshevist mensk menstrual menstruant menstruate menstruation menstruous menstruousness menstruum mensual mensurability mensurable mensurableness mensurably mensural mensuralist mensurate mensuration mensurational mensurative Ment mentagra mental mentalis mentalism mentalist mentalistic mentality mentalization mentalize mentally mentary mentation Mentha Menthaceae menthaceous menthadiene menthane menthene menthenol menthenone menthol mentholated menthone menthyl menticide menticultural menticulture mentiferous mentiform mentigerous mentimeter mentimutation mention mentionability mentionable mentionless mentoanterior mentobregmatic mentocondylial mentohyoid mentolabial mentomeckelian mentonniere mentoposterior mentor mentorial mentorism mentorship mentum Mentzelia menu Menura Menurae Menuridae meny Menyanthaceae Menyanthaceous Menyanthes menyie menzie Menziesia Meo Mephisto Mephistophelean Mephistopheleanly Mephistopheles Mephistophelic Mephistophelistic mephitic mephitical Mephitinae mephitine mephitis mephitism Mer Merak meralgia meraline Merat Meratia merbaby mercal mercantile mercantilely mercantilism mercantilist mercantilistic mercantility mercaptal mercaptan mercaptides mercaptids mercapto mercaptol mercaptole Mercator Mercatorial mercatorial Mercedarian Mercedes Mercedinus Mercedonius mercenarily mercenariness mercenary mercer merceress mercerization mercerize mercerizer mercership mercery merch merchandisable merchandise merchandiser merchant merchantable merchantableness merchanter merchanthood merchantish merchantlike merchantly merchantman merchantry merchantship merchet Mercian merciful mercifully mercifulness merciless mercilessly mercilessness merciment mercurate mercuration Mercurean mercurial Mercurialis mercurialism mercuriality mercurialization mercurialize mercurially mercurialness mercuriamines mercuriammonium Mercurian mercuriate mercuric mercuride mercurification mercurify Mercurius mercurization mercurize Mercurochrome mercurophen mercurous Mercury mercy mercyproof merdivorous mere Meredithian merel merely merenchyma merenchymatous meresman merestone meretricious meretriciously meretriciousness meretrix merfold merfolk merganser merge mergence merger mergh Merginae Mergulus Mergus meriah mericarp merice Merida meridian Meridion Meridionaceae Meridional meridional meridionality meridionally meril meringue meringued Merino Meriones meriquinoid meriquinoidal meriquinone meriquinonic meriquinonoid merism merismatic merismoid merist meristele meristelic meristem meristematic meristematically meristic meristically meristogenous merit meritable merited meritedly meriter meritful meritless meritmonger meritmongering meritmongery meritorious meritoriously meritoriousness merk merkhet merkin merl merle merlette merlin merlon Merlucciidae Merluccius mermaid mermaiden merman Mermis mermithaner mermithergate Mermithidae mermithization mermithized mermithogyne Mermnad Mermnadae mermother mero meroblastic meroblastically merocele merocelic merocerite meroceritic merocrystalline merocyte Merodach merogamy merogastrula merogenesis merogenetic merogenic merognathite merogonic merogony merohedral merohedric merohedrism meroistic Meroitic meromorphic Meromyaria meromyarian merop Merope Meropes meropia Meropidae meropidan meroplankton meroplanktonic meropodite meropoditic Merops merorganization merorganize meros merosomal Merosomata merosomatous merosome merosthenic Merostomata merostomatous merostome merostomous merosymmetrical merosymmetry merosystematic merotomize merotomy merotropism merotropy Merovingian meroxene Merozoa merozoite merpeople merribauks merribush Merril merriless merrily merriment merriness merrow merry merrymake merrymaker merrymaking merryman merrymeeting merrythought merrytrotter merrywing merse Mertensia Merton Merula meruline merulioid Merulius merveileux merwinite merwoman Merychippus merycism merycismus Merycoidodon Merycoidodontidae Merycopotamidae Merycopotamus Mes mesa mesabite mesaconate mesaconic mesad Mesadenia mesadenia mesail mesal mesalike mesally mesameboid mesange mesaortitis mesaraic mesaraical mesarch mesarteritic mesarteritis Mesartim mesaticephal mesaticephali mesaticephalic mesaticephalism mesaticephalous mesaticephaly mesatipellic mesatipelvic mesatiskelic mesaxonic mescal Mescalero mescaline mescalism mesdames mese mesectoderm mesem Mesembryanthemaceae Mesembryanthemum mesembryo mesembryonic mesencephalic mesencephalon mesenchyma mesenchymal mesenchymatal mesenchymatic mesenchymatous mesenchyme mesendoderm mesenna mesenterial mesenteric mesenterical mesenterically mesenteriform mesenteriolum mesenteritic mesenteritis mesenteron mesenteronic mesentery mesentoderm mesepimeral mesepimeron mesepisternal mesepisternum mesepithelial mesepithelium mesethmoid mesethmoidal mesh Meshech meshed meshrabiyeh meshwork meshy mesiad mesial mesially mesian mesic mesically mesilla mesiobuccal mesiocervical mesioclusion mesiodistal mesiodistally mesiogingival mesioincisal mesiolabial mesiolingual mesion mesioocclusal mesiopulpal mesioversion Mesitae Mesites Mesitidae mesitite mesityl mesitylene mesitylenic mesmerian mesmeric mesmerical mesmerically mesmerism mesmerist mesmerite mesmerizability mesmerizable mesmerization mesmerize mesmerizee mesmerizer mesmeromania mesmeromaniac mesnality mesnalty mesne meso mesoappendicitis mesoappendix mesoarial mesoarium mesobar mesobenthos mesoblast mesoblastema mesoblastemic mesoblastic mesobranchial mesobregmate mesocaecal mesocaecum mesocardia mesocardium mesocarp mesocentrous mesocephal mesocephalic mesocephalism mesocephalon mesocephalous mesocephaly mesochilium mesochondrium mesochroic mesocoele mesocoelian mesocoelic mesocolic mesocolon mesocoracoid mesocranial mesocratic mesocuneiform mesode mesoderm mesodermal mesodermic Mesodesma Mesodesmatidae Mesodesmidae Mesodevonian Mesodevonic mesodic mesodisilicic mesodont Mesoenatides mesofurca mesofurcal mesogaster mesogastral mesogastric mesogastrium mesogloea mesogloeal mesognathic mesognathion mesognathism mesognathous mesognathy mesogyrate mesohepar Mesohippus mesokurtic mesolabe mesole mesolecithal mesolimnion mesolite mesolithic mesologic mesological mesology mesomere mesomeric mesomerism mesometral mesometric mesometrium mesomorph mesomorphic mesomorphous mesomorphy Mesomyodi mesomyodian mesomyodous meson mesonasal Mesonemertini mesonephric mesonephridium mesonephritic mesonephros mesonic mesonotal mesonotum Mesonychidae Mesonyx mesoparapteral mesoparapteron mesopectus mesoperiodic mesopetalum mesophile mesophilic mesophilous mesophragm mesophragma mesophragmal mesophryon mesophyll mesophyllous mesophyllum mesophyte mesophytic mesophytism mesopic mesoplankton mesoplanktonic mesoplast mesoplastic mesoplastral mesoplastron mesopleural mesopleuron Mesoplodon mesoplodont mesopodial mesopodiale mesopodium mesopotamia Mesopotamian mesopotamic mesoprescutal mesoprescutum mesoprosopic mesopterygial mesopterygium mesopterygoid mesorchial mesorchium Mesore mesorectal mesorectum Mesoreodon mesorrhin mesorrhinal mesorrhinian mesorrhinism mesorrhinium mesorrhiny mesosalpinx mesosaur Mesosauria Mesosaurus mesoscapula mesoscapular mesoscutal mesoscutellar mesoscutellum mesoscutum mesoseismal mesoseme mesosiderite mesosigmoid mesoskelic mesosoma mesosomatic mesosome mesosperm mesospore mesosporic mesosporium mesostasis mesosternal mesosternebra mesosternebral mesosternum mesostethium Mesostoma Mesostomatidae mesostomid mesostyle mesostylous Mesosuchia mesosuchian Mesotaeniaceae Mesotaeniales mesotarsal mesotartaric Mesothelae mesothelial mesothelium mesotherm mesothermal mesothesis mesothet mesothetic mesothetical mesothoracic mesothoracotheca mesothorax mesothorium mesotonic mesotroch mesotrocha mesotrochal mesotrochous mesotron mesotropic mesotympanic mesotype mesovarian mesovarium mesoventral mesoventrally mesoxalate mesoxalic mesoxalyl Mesozoa mesozoan Mesozoic mespil Mespilus Mespot mesquite Mesropian mess message messagery Messalian messaline messan Messapian messe messelite messenger messengership messer messet Messiah Messiahship Messianic Messianically messianically Messianism Messianist Messianize Messias messieurs messily messin Messines Messinese messiness messing messman messmate messor messroom messrs messtin messuage messy mestee mester mestiza mestizo mestome Mesua Mesvinian mesymnion met meta metabasis metabasite metabatic metabiological metabiology metabiosis metabiotic metabiotically metabismuthic metabisulphite metabletic Metabola metabola metabole Metabolia metabolian metabolic metabolism metabolite metabolizable metabolize metabolon metabolous metaboly metaborate metaboric metabranchial metabrushite metabular metacarpal metacarpale metacarpophalangeal metacarpus metacenter metacentral metacentric metacentricity metachemic metachemistry Metachlamydeae metachlamydeous metachromasis metachromatic metachromatin metachromatinic metachromatism metachrome metachronism metachrosis metacinnabarite metacism metacismus metaclase metacneme metacoele metacoelia metaconal metacone metaconid metaconule metacoracoid metacrasis metacresol metacromial metacromion metacryst metacyclic metacymene metad metadiabase metadiazine metadiorite metadiscoidal metadromous metafluidal metaformaldehyde metafulminuric metagalactic metagalaxy metagaster metagastric metagastrula metage Metageitnion metagelatin metagenesis metagenetic metagenetically metagenic metageometer metageometrical metageometry metagnath metagnathism metagnathous metagnomy metagnostic metagnosticism metagram metagrammatism metagrammatize metagraphic metagraphy metahewettite metahydroxide metaigneous metainfective metakinesis metakinetic metal metalammonium metalanguage metalbumin metalcraft metaldehyde metalepsis metaleptic metaleptical metaleptically metaler metaline metalined metaling metalinguistic metalinguistics metalism metalist metalization metalize metallary metalleity metallic metallical metallically metallicity metallicize metallicly metallics metallide metallifacture metalliferous metallification metalliform metallify metallik metalline metallism metallization metallize metallochrome metallochromy metallogenetic metallogenic metallogeny metallograph metallographer metallographic metallographical metallographist metallography metalloid metalloidal metallometer metallophone metalloplastic metallorganic metallotherapeutic metallotherapy metallurgic metallurgical metallurgically metallurgist metallurgy metalmonger metalogic metalogical metaloph metalorganic metaloscope metaloscopy metaluminate metaluminic metalware metalwork metalworker metalworking metalworks metamathematical metamathematics metamer metameral metamere metameric metamerically metameride metamerism metamerization metamerized metamerous metamery metamorphic metamorphism metamorphize metamorphopsia metamorphopsy metamorphosable metamorphose metamorphoser metamorphoses metamorphosian metamorphosic metamorphosical metamorphosis metamorphostical metamorphotic metamorphous metamorphy Metamynodon metanalysis metanauplius Metanemertini metanephric metanephritic metanephron metanephros metanepionic metanilic metanitroaniline metanomen metanotal metanotum metantimonate metantimonic metantimonious metantimonite metantimonous metanym metaorganism metaparapteral metaparapteron metapectic metapectus metapepsis metapeptone metaperiodic metaphase metaphenomenal metaphenomenon metaphenylene metaphenylenediamin metaphenylenediamine metaphloem metaphonical metaphonize metaphony metaphor metaphoric metaphorical metaphorically metaphoricalness metaphorist metaphorize metaphosphate metaphosphoric metaphosphorous metaphragm metaphragmal metaphrase metaphrasis metaphrast metaphrastic metaphrastical metaphrastically metaphyseal metaphysic metaphysical metaphysically metaphysician metaphysicianism metaphysicist metaphysicize metaphysicous metaphysics metaphysis metaphyte metaphytic metaphyton metaplasia metaplasis metaplasm metaplasmic metaplast metaplastic metapleural metapleure metapleuron metaplumbate metaplumbic metapneumonic metapneustic metapodial metapodiale metapodium metapolitic metapolitical metapolitician metapolitics metapophyseal metapophysial metapophysis metapore metapostscutellar metapostscutellum metaprescutal metaprescutum metaprotein metapsychic metapsychical metapsychics metapsychism metapsychist metapsychological metapsychology metapsychosis metapterygial metapterygium metapterygoid metarabic metarhyolite metarossite metarsenic metarsenious metarsenite metasaccharinic metascutal metascutellar metascutellum metascutum metasedimentary metasilicate metasilicic metasoma metasomal metasomasis metasomatic metasomatism metasomatosis metasome metasperm Metaspermae metaspermic metaspermous metastability metastable metastannate metastannic metastasis metastasize metastatic metastatical metastatically metasternal metasternum metasthenic metastibnite metastigmate metastoma metastome metastrophe metastrophic metastyle metatantalic metatarsal metatarsale metatarse metatarsophalangeal metatarsus metatatic metatatically metataxic metate metathalamus metatheology Metatheria metatherian metatheses metathesis metathetic metathetical metathetically metathoracic metathorax metatitanate metatitanic metatoluic metatoluidine metatracheal metatrophic metatungstic metatype metatypic Metaurus metavanadate metavanadic metavauxite metavoltine metaxenia metaxite metaxylem metaxylene metayer Metazoa metazoal metazoan metazoea metazoic metazoon mete metel metempiric metempirical metempirically metempiricism metempiricist metempirics metempsychic metempsychosal metempsychose metempsychoses metempsychosical metempsychosis metempsychosize metemptosis metencephalic metencephalon metensarcosis metensomatosis metenteron metenteronic meteogram meteograph meteor meteorgraph meteoric meteorical meteorically meteorism meteorist meteoristic meteorital meteorite meteoritic meteoritics meteorization meteorize meteorlike meteorogram meteorograph meteorographic meteorography meteoroid meteoroidal meteorolite meteorolitic meteorologic meteorological meteorologically meteorologist meteorology meteorometer meteoroscope meteoroscopy meteorous metepencephalic metepencephalon metepimeral metepimeron metepisternal metepisternum meter meterage metergram meterless meterman metership metestick metewand meteyard methacrylate methacrylic methadone methanal methanate methane methanoic methanolysis methanometer metheglin methemoglobin methemoglobinemia methemoglobinuria methenamine methene methenyl mether methid methide methine methinks methiodide methionic methionine methobromide method methodaster methodeutic methodic methodical methodically methodicalness methodics methodism Methodist methodist Methodistic Methodistically Methodisty methodization Methodize methodize methodizer methodless methodological methodologically methodologist methodology Methody methought methoxide methoxychlor methoxyl methronic Methuselah methyl methylacetanilide methylal methylamine methylaniline methylanthracene methylate methylation methylator methylcholanthrene methylene methylenimine methylenitan methylethylacetic methylglycine methylglycocoll methylglyoxal methylic methylmalonic methylnaphthalene methylol methylolurea methylosis methylotic methylpentose methylpentoses methylpropane methylsulfanol metic meticulosity meticulous meticulously meticulousness metier Metin metis Metoac metochous metochy metoestrous metoestrum Metol metonym metonymic metonymical metonymically metonymous metonymously metonymy metope Metopias metopic metopion metopism Metopoceros metopomancy metopon metoposcopic metoposcopical metoposcopist metoposcopy metosteal metosteon metoxazine metoxenous metoxeny metra metralgia metranate metranemia metratonia Metrazol metrectasia metrectatic metrectomy metrectopia metrectopic metrectopy metreless metreship metreta metrete metretes metria metric metrical metrically metrician metricism metricist metricize metrics Metridium metrification metrifier metrify metriocephalic metrist metritis metrocampsis metrocarat metrocarcinoma metrocele metroclyst metrocolpocele metrocracy metrocratic metrocystosis metrodynia metrofibroma metrological metrologist metrologue metrology metrolymphangitis metromalacia metromalacoma metromalacosis metromania metromaniac metromaniacal metrometer metroneuria metronome metronomic metronomical metronomically metronymic metronymy metroparalysis metropathia metropathic metropathy metroperitonitis metrophlebitis metrophotography metropole metropolis metropolitan metropolitanate metropolitancy metropolitanism metropolitanize metropolitanship metropolite metropolitic metropolitical metropolitically metroptosia metroptosis metroradioscope metrorrhagia metrorrhagic metrorrhea metrorrhexis metrorthosis metrosalpingitis metrosalpinx metroscirrhus metroscope metroscopy Metrosideros metrostaxis metrostenosis metrosteresis metrostyle metrosynizesis metrotherapist metrotherapy metrotome metrotomy Metroxylon mettar mettle mettled mettlesome mettlesomely mettlesomeness metusia metze Meum meuse meute Mev mew meward mewer mewl mewler Mexica Mexican Mexicanize Mexitl Mexitli meyerhofferite mezcal Mezentian Mezentism Mezentius mezereon mezereum mezuzah mezzanine mezzo mezzograph mezzotint mezzotinter mezzotinto mho mhometer mi Miami miamia mian Miao Miaotse Miaotze miaow miaower Miaplacidus miargyrite miarolitic mias miaskite miasm miasma miasmal miasmata miasmatic miasmatical miasmatically miasmatize miasmatology miasmatous miasmic miasmology miasmous Miastor miaul miauler mib mica micaceous micacious micacite Micah micasization micasize micate mication Micawberish Micawberism mice micellar micelle Michabo Michabou Michael Michaelites Michaelmas Michaelmastide miche Micheal Michel Michelangelesque Michelangelism Michelia Michelle micher Michiel Michigamea Michigan michigan Michigander Michiganite miching Michoacan Michoacano micht Mick mick Mickey mickle Micky Micmac mico miconcave Miconia micramock Micrampelis micranatomy micrander micrandrous micraner micranthropos Micraster micrencephalia micrencephalic micrencephalous micrencephalus micrencephaly micrergate micresthete micrify micro microammeter microampere microanalysis microanalyst microanalytical microangstrom microapparatus microbal microbalance microbar microbarograph microbattery microbe microbeless microbeproof microbial microbian microbic microbicidal microbicide microbiologic microbiological microbiologically microbiologist microbiology microbion microbiosis microbiota microbiotic microbious microbism microbium microblast microblepharia microblepharism microblephary microbrachia microbrachius microburet microburette microburner microcaltrop microcardia microcardius microcarpous Microcebus microcellular microcentrosome microcentrum microcephal microcephalia microcephalic microcephalism microcephalous microcephalus microcephaly microceratous microchaeta microcharacter microcheilia microcheiria microchemic microchemical microchemically microchemistry microchiria Microchiroptera microchiropteran microchiropterous microchromosome microchronometer microcinema microcinematograph microcinematographic microcinematography Microcitrus microclastic microclimate microclimatic microclimatologic microclimatological microclimatology microcline microcnemia microcoat micrococcal Micrococceae Micrococcus microcoleoptera microcolon microcolorimeter microcolorimetric microcolorimetrically microcolorimetry microcolumnar microcombustion microconidial microconidium microconjugant Microconodon microconstituent microcopy microcoria microcosm microcosmal microcosmian microcosmic microcosmical microcosmography microcosmology microcosmos microcosmus microcoulomb microcranous microcrith microcryptocrystalline microcrystal microcrystalline microcrystallogeny microcrystallography microcrystalloscopy microcurie Microcyprini microcyst microcyte microcythemia microcytosis microdactylia microdactylism microdactylous microdentism microdentous microdetection microdetector microdetermination microdiactine microdissection microdistillation microdont microdontism microdontous microdose microdrawing Microdrili microdrive microelectrode microelectrolysis microelectroscope microelement microerg microestimation microeutaxitic microevolution microexamination microfarad microfauna microfelsite microfelsitic microfilaria microfilm microflora microfluidal microfoliation microfossil microfungus microfurnace Microgadus microgalvanometer microgamete microgametocyte microgametophyte microgamy Microgaster microgastria Microgastrinae microgastrine microgeological microgeologist microgeology microgilbert microglia microglossia micrognathia micrognathic micrognathous microgonidial microgonidium microgram microgramme microgranite microgranitic microgranitoid microgranular microgranulitic micrograph micrographer micrographic micrographical micrographically micrographist micrography micrograver microgravimetric microgroove microgyne microgyria microhenry microhepatia microhistochemical microhistology microhm microhmmeter Microhymenoptera microhymenopteron microinjection microjoule microlepidopter microlepidoptera microlepidopteran microlepidopterist microlepidopteron microlepidopterous microleukoblast microlevel microlite microliter microlith microlithic microlitic micrologic micrological micrologically micrologist micrologue micrology microlux micromania micromaniac micromanipulation micromanipulator micromanometer Micromastictora micromazia micromeasurement micromechanics micromelia micromelic micromelus micromembrane micromeral micromere Micromeria micromeric micromerism micromeritic micromeritics micromesentery micrometallographer micrometallography micrometallurgy micrometer micromethod micrometrical micrometrically micrometry micromicrofarad micromicron micromil micromillimeter micromineralogical micromineralogy micromorph micromotion micromotoscope micromyelia micromyeloblast micron Micronesian micronization micronize micronometer micronuclear micronucleus micronutrient microorganic microorganism microorganismal micropaleontology micropantograph microparasite microparasitic micropathological micropathologist micropathology micropegmatite micropegmatitic micropenis microperthite microperthitic micropetalous micropetrography micropetrologist micropetrology microphage microphagocyte microphagous microphagy microphakia microphallus microphone microphonic microphonics microphonograph microphot microphotograph microphotographic microphotography microphotometer microphotoscope microphthalmia microphthalmic microphthalmos microphthalmus microphyllous microphysical microphysics microphysiography microphytal microphyte microphytic microphytology micropia micropin micropipette microplakite microplankton microplastocyte microplastometer micropodal Micropodi micropodia Micropodidae Micropodiformes micropoecilitic micropoicilitic micropoikilitic micropolariscope micropolarization micropore microporosity microporous microporphyritic microprint microprojector micropsia micropsy micropterism micropterous Micropterus micropterygid Micropterygidae micropterygious Micropterygoidea Micropteryx Micropus micropylar micropyle micropyrometer microradiometer microreaction microrefractometer microrhabdus microrheometer microrheometric microrheometrical Microrhopias Microsauria microsaurian microsclere microsclerous microsclerum microscopal microscope microscopial microscopic microscopical microscopically microscopics Microscopid microscopist Microscopium microscopize microscopy microsecond microsection microseism microseismic microseismical microseismograph microseismology microseismometer microseismometrograph microseismometry microseme microseptum microsmatic microsmatism microsoma microsomatous microsome microsomia microsommite Microsorex microspecies microspectroscope microspectroscopic microspectroscopy Microspermae microspermous Microsphaera microsphaeric microsphere microspheric microspherulitic microsplanchnic microsplenia microsplenic microsporange microsporangium microspore microsporiasis microsporic Microsporidia microsporidian Microsporon microsporophore microsporophyll microsporosis microsporous Microsporum microstat microsthene Microsthenes microsthenic microstomatous microstome microstomia microstomous microstructural microstructure Microstylis microstylospore microstylous microsublimation microtasimeter microtechnic microtechnique microtelephone microtelephonic Microthelyphonida microtheos microtherm microthermic microthorax Microthyriaceae microtia Microtinae microtine microtitration microtome microtomic microtomical microtomist microtomy microtone Microtus microtypal microtype microtypical microvolt microvolume microvolumetric microwatt microwave microweber microzoa microzoal microzoan microzoaria microzoarian microzoary microzoic microzone microzooid microzoology microzoon microzoospore microzyma microzyme microzymian micrurgic micrurgical micrurgist micrurgy Micrurus miction micturate micturition mid midafternoon midautumn midaxillary midbrain midday midden middenstead middle middlebreaker middlebuster middleman middlemanism middlemanship middlemost middler middlesplitter middlewards middleway middleweight middlewoman middling middlingish middlingly middlingness middlings middorsal middy mide Mider midevening midewiwin midfacial midforenoon midfrontal midge midget midgety midgy midheaven Midianite Midianitish Mididae midiron midland Midlander Midlandize midlandward midlatitude midleg midlenting midmain midmandibular midmonth midmonthly midmorn midmorning midmost midnight midnightly midnoon midparent midparentage midparental midpit midrange midrash midrashic midrib midribbed midriff mids midseason midsentence midship midshipman midshipmanship midshipmite midships midspace midst midstory midstout midstream midstreet midstroke midstyled midsummer midsummerish midsummery midtap midvein midverse midward midwatch midway midweek midweekly Midwest Midwestern Midwesterner midwestward midwife midwifery midwinter midwinterly midwintry midwise midyear Miek mien miersite Miescherian miff miffiness miffy mig might mightily mightiness mightless mightnt mighty mightyhearted mightyship miglio migmatite migniardise mignon mignonette mignonne mignonness Migonitis migraine migrainoid migrainous migrant migrate migration migrational migrationist migrative migrator migratorial migratory Miguel miharaite mihrab mijakite mijl mikado mikadoate mikadoism Mikael Mikania Mikasuki Mike mike Mikey Miki mikie Mikir Mil mil mila milady milammeter Milan Milanese Milanion milarite milch milcher milchy mild milden milder mildew mildewer mildewy mildhearted mildheartedness mildish mildly mildness Mildred mile mileage Miledh milepost miler Miles Milesian milesima Milesius milestone mileway milfoil milha miliaceous miliarensis miliaria miliarium miliary Milicent milieu Miliola milioliform milioline miliolite miliolitic militancy militant militantly militantness militarily militariness militarism militarist militaristic militaristically militarization militarize military militaryism militaryment militaster militate militation militia militiaman militiate milium milk milkbush milken milker milkeress milkfish milkgrass milkhouse milkily milkiness milking milkless milklike milkmaid milkman milkness milkshed milkshop milksick milksop milksopism milksoppery milksopping milksoppish milksoppy milkstone milkweed milkwood milkwort milky mill Milla milla millable millage millboard millclapper millcourse milldam mille milled millefiori milleflorous millefoliate millenarian millenarianism millenarist millenary millennia millennial millennialism millennialist millennially millennian millenniarism millenniary millennium millepede Millepora millepore milleporiform milleporine milleporite milleporous millepunctate miller milleress millering Millerism Millerite millerite millerole millesimal millesimally millet Millettia millfeed millful millhouse milliad milliammeter milliamp milliampere milliamperemeter milliangstrom milliard milliardaire milliare milliarium milliary millibar millicron millicurie Millie millieme milliequivalent millifarad millifold milliform milligal milligrade milligram milligramage millihenry millilambert millile milliliter millilux millimeter millimicron millimolar millimole millincost milline milliner millinerial millinering millinery milling Millingtonia millinormal millinormality millioctave millioersted million millionaire millionairedom millionairess millionairish millionairism millionary millioned millioner millionfold millionism millionist millionize millionocracy millions millionth milliphot millipoise millisecond millistere Millite millithrum millivolt millivoltmeter millman millocracy millocrat millocratism millosevichite millowner millpond millpool millpost millrace millrynd millsite millstock millstone millstream milltail millward millwork millworker millwright millwrighting Milly Milner milner Milo milo milord milpa milreis milsey milsie milt milter miltlike Miltonia Miltonian Miltonic Miltonically Miltonism Miltonist Miltonize Miltos miltsick miltwaste milty Milvago Milvinae milvine milvinous Milvus milzbrand mim mima mimbar mimble Mimbreno Mime mime mimeo mimeograph mimeographic mimeographically mimeographist mimer mimesis mimester mimetene mimetesite mimetic mimetical mimetically mimetism mimetite Mimi mimiambi mimiambic mimiambics mimic mimical mimically mimicism mimicker mimicry Mimidae Miminae mimine miminypiminy mimly mimmation mimmest mimmock mimmocking mimmocky mimmood mimmoud mimmouthed mimmouthedness mimodrama mimographer mimography mimologist Mimosa Mimosaceae mimosaceous mimosis mimosite mimotype mimotypic mimp Mimpei mimsey Mimulus Mimus Mimusops min Mina mina minable minacious minaciously minaciousness minacity Minaean Minahassa Minahassan Minahassian minar minaret minareted minargent minasragrite minatorial minatorially minatorily minatory minaway mince mincemeat mincer minchery minchiate mincing mincingly mincingness Mincopi Mincopie mind minded Mindel Mindelian minder Mindererus mindful mindfully mindfulness minding mindless mindlessly mindlessness mindsight mine mineowner miner mineragraphic mineragraphy mineraiogic mineral mineralizable mineralization mineralize mineralizer mineralogical mineralogically mineralogist mineralogize mineralogy Minerva minerval Minervan Minervic minery mines minette mineworker Ming ming minge mingelen mingle mingleable mingledly minglement mingler minglingly Mingo Mingrelian minguetite mingwort mingy minhag minhah miniaceous miniate miniator miniature miniaturist minibus minicam minicamera Miniconjou minienize minification minify minikin minikinly minim minima minimacid minimal minimalism Minimalist minimalkaline minimally minimetric minimifidian minimifidianism minimism minimistic Minimite minimitude minimization minimize minimizer minimum minimus minimuscular mining minion minionette minionism minionly minionship minish minisher minishment minister ministeriable ministerial ministerialism ministerialist ministeriality ministerially ministerialness ministerium ministership ministrable ministrant ministration ministrative ministrator ministrer ministress ministry ministryship minitant Minitari minium miniver minivet mink minkery minkish Minkopi Minnehaha minnesinger minnesong Minnesotan Minnetaree Minnie minnie minniebush minning minnow minny mino Minoan minoize minometer minor minorage minorate minoration Minorca Minorcan Minoress minoress Minorist Minorite minority minorship Minos minot Minotaur Minseito minsitive minster minsteryard minstrel minstreless minstrelship minstrelsy mint mintage Mintaka mintbush minter mintmaker mintmaking mintman mintmaster minty minuend minuet minuetic minuetish minus minuscular minuscule minutary minutation minute minutely minuteman minuteness minuter minuthesis minutia minutiae minutial minutiose minutiously minutissimic minverite minx minxish minxishly minxishness minxship miny Minyadidae Minyae Minyan minyan Minyas miocardia Miocene Miocenic Miohippus miolithic mioplasmia miothermic miqra miquelet mir Mira Mirabel Mirabell mirabiliary Mirabilis mirabilite Mirac Mirach mirach miracidial miracidium miracle miraclemonger miraclemongering miraclist miraculist miraculize miraculosity miraculous miraculously miraculousness mirador mirage miragy Mirak Miramolin Mirana Miranda mirandous Miranha Miranhan mirate mirbane mird mirdaha mire mirepoix Mirfak Miriam Miriamne mirid Miridae mirific miriness mirish mirk mirkiness mirksome mirliton Miro miro Mirounga mirror mirrored mirrorize mirrorlike mirrorscope mirrory mirth mirthful mirthfully mirthfulness mirthless mirthlessly mirthlessness mirthsome mirthsomeness miry miryachit mirza misaccent misaccentuation misachievement misacknowledge misact misadapt misadaptation misadd misaddress misadjust misadmeasurement misadministration misadvantage misadventure misadventurer misadventurous misadventurously misadvertence misadvice misadvise misadvised misadvisedly misadvisedness misaffected misaffection misaffirm misagent misaim misalienate misalignment misallegation misallege misalliance misallotment misallowance misally misalphabetize misalter misanalyze misandry misanswer misanthrope misanthropia misanthropic misanthropical misanthropically misanthropism misanthropist misanthropize misanthropy misapparel misappear misappearance misappellation misapplication misapplier misapply misappoint misappointment misappraise misappraisement misappreciate misappreciation misappreciative misapprehend misapprehendingly misapprehensible misapprehension misapprehensive misapprehensively misapprehensiveness misappropriate misappropriately misappropriation misarchism misarchist misarrange misarrangement misarray misascribe misascription misasperse misassay misassent misassert misassign misassociate misassociation misatone misattend misattribute misattribution misaunter misauthorization misauthorize misaward misbandage misbaptize misbecome misbecoming misbecomingly misbecomingness misbefitting misbeget misbegin misbegotten misbehave misbehavior misbeholden misbelief misbelieve misbeliever misbelievingly misbelove misbeseem misbestow misbestowal misbetide misbias misbill misbind misbirth misbode misborn misbrand misbuild misbusy miscalculate miscalculation miscalculator miscall miscaller miscanonize miscarriage miscarriageable miscarry miscast miscasualty misceability miscegenate miscegenation miscegenationist miscegenator miscegenetic miscegine miscellanarian miscellanea miscellaneity miscellaneous miscellaneously miscellaneousness miscellanist miscellany mischallenge mischance mischanceful mischancy mischaracterization mischaracterize mischarge mischief mischiefful mischieve mischievous mischievously mischievousness mischio mischoice mischoose mischristen miscibility miscible miscipher misclaim misclaiming misclass misclassification misclassify miscognizant miscoin miscoinage miscollocation miscolor miscoloration miscommand miscommit miscommunicate miscompare miscomplacence miscomplain miscomplaint miscompose miscomprehend miscomprehension miscomputation miscompute misconceive misconceiver misconception misconclusion miscondition misconduct misconfer misconfidence misconfident misconfiguration misconjecture misconjugate misconjugation misconjunction misconsecrate misconsequence misconstitutional misconstruable misconstruct misconstruction misconstructive misconstrue misconstruer miscontinuance misconvenient misconvey miscook miscookery miscorrect miscorrection miscounsel miscount miscovet miscreancy miscreant miscreate miscreation miscreative miscreator miscredited miscredulity miscreed miscript miscrop miscue miscultivated misculture miscurvature miscut misdate misdateful misdaub misdeal misdealer misdecide misdecision misdeclaration misdeclare misdeed misdeem misdeemful misdefine misdeformed misdeliver misdelivery misdemean misdemeanant misdemeanist misdemeanor misdentition misderivation misderive misdescribe misdescriber misdescription misdescriptive misdesire misdetermine misdevise misdevoted misdevotion misdiet misdirect misdirection misdispose misdisposition misdistinguish misdistribute misdistribution misdivide misdivision misdo misdoer misdoing misdoubt misdower misdraw misdread misdrive mise misease misecclesiastic misedit miseducate miseducation miseducative miseffect misemphasis misemphasize misemploy misemployment misencourage misendeavor misenforce misengrave misenite misenjoy misenroll misentitle misenunciation Misenus miser miserabilism miserabilist miserabilistic miserability miserable miserableness miserably miserdom miserected Miserere miserhood misericord Misericordia miserism miserliness miserly misery misesteem misestimate misestimation misexample misexecute misexecution misexpectation misexpend misexpenditure misexplain misexplanation misexplication misexposition misexpound misexpress misexpression misexpressive misfaith misfare misfashion misfather misfault misfeasance misfeasor misfeature misfield misfigure misfile misfire misfit misfond misform misformation misfortunate misfortunately misfortune misfortuned misfortuner misframe misgauge misgesture misgive misgiving misgivingly misgo misgotten misgovern misgovernance misgovernment misgovernor misgracious misgraft misgrave misground misgrow misgrown misgrowth misguess misguggle misguidance misguide misguided misguidedly misguidedness misguider misguiding misguidingly mishandle mishap mishappen Mishikhwutmetunne mishmash mishmee Mishmi Mishnah Mishnaic Mishnic Mishnical Mishongnovi misidentification misidentify Misima misimagination misimagine misimpression misimprove misimprovement misimputation misimpute misincensed misincite misinclination misincline misinfer misinference misinflame misinform misinformant misinformation misinformer misingenuity misinspired misinstruct misinstruction misinstructive misintelligence misintelligible misintend misintention misinter misinterment misinterpret misinterpretable misinterpretation misinterpreter misintimation misjoin misjoinder misjudge misjudgement misjudger misjudgingly misjudgment miskeep misken miskenning miskill miskindle misknow misknowledge misky mislabel mislabor mislanguage mislay mislayer mislead misleadable misleader misleading misleadingly misleadingness mislear misleared mislearn misled mislest mislight mislike misliken mislikeness misliker mislikingly mislippen mislive mislocate mislocation mislodge mismade mismake mismanage mismanageable mismanagement mismanager mismarriage mismarry mismatch mismatchment mismate mismeasure mismeasurement mismenstruation misminded mismingle mismotion mismove misname misnarrate misnatured misnavigation Misniac misnomed misnomer misnumber misnurture misnutrition misobedience misobey misobservance misobserve misocapnic misocapnist misocatholic misoccupy misogallic misogamic misogamist misogamy misogyne misogynic misogynical misogynism misogynist misogynistic misogynistical misogynous misogyny misohellene misologist misology misomath misoneism misoneist misoneistic misopaterist misopedia misopedism misopedist misopinion misopolemical misorder misordination misorganization misorganize misoscopist misosophist misosophy misotheism misotheist misotheistic misotramontanism misotyranny misoxene misoxeny mispage mispagination mispaint misparse mispart mispassion mispatch mispay misperceive misperception misperform misperformance mispersuade misperuse misphrase mispick mispickel misplace misplacement misplant misplay misplead mispleading misplease mispoint mispoise mispolicy misposition mispossessed mispractice mispraise misprejudiced misprincipled misprint misprisal misprision misprize misprizer misproceeding misproduce misprofess misprofessor mispronounce mispronouncement mispronunciation misproportion misproposal mispropose misproud misprovide misprovidence misprovoke mispunctuate mispunctuation mispurchase mispursuit misput misqualify misquality misquotation misquote misquoter misraise misrate misread misreader misrealize misreason misreceive misrecital misrecite misreckon misrecognition misrecognize misrecollect misrefer misreference misreflect misreform misregulate misrehearsal misrehearse misrelate misrelation misreliance misremember misremembrance misrender misrepeat misreport misreporter misreposed misrepresent misrepresentation misrepresentative misrepresenter misreprint misrepute misresemblance misresolved misresult misreward misrhyme misrhymer misrule miss missable missal missay missayer misseem missel missemblance missentence misserve misservice misset misshape misshapen misshapenly misshapenness misshood missible missile missileproof missiness missing missingly mission missional missionarize missionary missionaryship missioner missionize missionizer missis Missisauga missish missishness Mississippi Mississippian missive missmark missment Missouri Missourian Missourianism missourite misspeak misspeech misspell misspelling misspend misspender misstate misstatement misstater misstay misstep missuade missuggestion missummation missuppose missy missyish missyllabication missyllabify mist mistakable mistakableness mistakably mistake mistakeful mistaken mistakenly mistakenness mistakeproof mistaker mistaking mistakingly mistassini mistaught mistbow misteach misteacher misted mistell mistempered mistend mistendency Mister mister misterm mistetch mistfall mistflower mistful misthink misthought misthread misthrift misthrive misthrow mistic mistide mistify mistigris mistily mistime mistiness mistitle mistle mistless mistletoe mistone mistonusk mistook mistouch mistradition mistrain mistral mistranscribe mistranscript mistranscription mistranslate mistranslation mistreat mistreatment mistress mistressdom mistresshood mistressless mistressly mistrial mistrist mistrust mistruster mistrustful mistrustfully mistrustfulness mistrusting mistrustingly mistrustless mistry mistryst misturn mistutor misty mistyish misunderstand misunderstandable misunderstander misunderstanding misunderstandingly misunderstood misunderstoodness misura misusage misuse misuseful misusement misuser misusurped misvaluation misvalue misventure misventurous misvouch miswed miswisdom miswish misword misworship misworshiper misworshipper miswrite misyoke miszealous Mitakshara Mitanni Mitannian Mitannish mitapsis Mitch mitchboard Mitchell Mitchella mite Mitella miteproof miter mitered miterer miterflower miterwort Mithra Mithraea Mithraeum Mithraic Mithraicism Mithraicist Mithraicize Mithraism Mithraist Mithraistic Mithraitic Mithraize Mithras Mithratic Mithriac mithridate Mithridatic mithridatic mithridatism mithridatize miticidal miticide mitigable mitigant mitigate mitigatedly mitigation mitigative mitigator mitigatory mitis mitochondria mitochondrial mitogenetic mitome mitosis mitosome mitotic mitotically Mitra mitra mitrailleuse mitral mitrate mitre mitrer Mitridae mitriform Mitsukurina Mitsukurinidae mitsumata mitt mittelhand Mittelmeer mitten mittened mittimus mitty Mitu Mitua mity miurus mix mixable mixableness mixblood Mixe mixed mixedly mixedness mixen mixer mixeress mixhill mixible mixite mixobarbaric mixochromosome Mixodectes Mixodectidae mixolydian mixoploid mixoploidy Mixosaurus mixotrophic Mixtec Mixtecan mixtiform mixtilineal mixtilion mixtion mixture mixy Mizar mizmaze Mizpah Mizraim mizzen mizzenmast mizzenmastman mizzentopman mizzle mizzler mizzly mizzonite mizzy mlechchha mneme mnemic Mnemiopsis mnemonic mnemonical mnemonicalist mnemonically mnemonicon mnemonics mnemonism mnemonist mnemonization mnemonize Mnemosyne mnemotechnic mnemotechnical mnemotechnics mnemotechnist mnemotechny mnesic mnestic Mnevis Mniaceae mniaceous mnioid Mniotiltidae Mnium Mo mo Moabite Moabitess Moabitic Moabitish moan moanful moanfully moanification moaning moaningly moanless Moaria Moarian moat Moattalite mob mobable mobbable mobber mobbish mobbishly mobbishness mobbism mobbist mobby mobcap mobed mobile Mobilian mobilianer mobiliary mobility mobilizable mobilization mobilize mobilometer moble moblike mobocracy mobocrat mobocratic mobocratical mobolatry mobproof mobship mobsman mobster Mobula Mobulidae moccasin Mocha mocha Mochica mochras mock mockable mockado mockbird mocker mockernut mockery mockful mockfully mockground mockingbird mockingstock mocmain Mocoa Mocoan mocomoco mocuck Mod modal modalism modalist modalistic modality modalize modally mode model modeler modeless modelessness modeling modelist modeller modelmaker modelmaking modena Modenese moderant moderantism moderantist moderate moderately moderateness moderation moderationist moderatism moderatist moderato moderator moderatorship moderatrix Modern modern moderner modernicide modernish modernism modernist modernistic modernity modernizable modernization modernize modernizer modernly modernness modest modestly modestness modesty modiation modicity modicum modifiability modifiable modifiableness modifiably modificability modificable modification modificationist modificative modificator modificatory modifier modify modillion modiolar Modiolus modiolus modish modishly modishness modist modiste modistry modius Modoc Modred modulability modulant modular modulate modulation modulative modulator modulatory module Modulidae modulo modulus modumite Moe Moed Moehringia moellon moerithere moeritherian Moeritheriidae Moeritherium mofette moff mofussil mofussilite mog mogador mogadore mogdad moggan moggy Moghan mogigraphia mogigraphic mogigraphy mogilalia mogilalism mogiphonia mogitocia mogo mogographia Mogollon Mograbi Mogrebbin moguey Mogul mogulship Moguntine moha mohabat mohair Mohammad Mohammedan Mohammedanism Mohammedanization Mohammedanize Mohammedism Mohammedist Mohammedization Mohammedize mohar Mohave Mohawk Mohawkian mohawkite Mohegan mohel Mohican Mohineyam mohnseed moho Mohock Mohockism mohr Mohrodendron mohur Moi moider moidore moieter moiety moil moiler moiles moiley moiling moilingly moilsome moineau Moingwena moio Moira moire moirette moise Moism moissanite moist moisten moistener moistful moistify moistish moistishness moistless moistly moistness moisture moistureless moistureproof moisty moit moity mojarra Mojo mojo mokaddam moke moki mokihana moko moksha mokum moky Mola mola molal Molala molality molar molariform molarimeter molarity molary Molasse molasses molassied molassy molave mold moldability moldable moldableness Moldavian moldavite moldboard molder moldery moldiness molding moldmade moldproof moldwarp moldy Mole mole molecast molecula molecular molecularist molecularity molecularly molecule molehead moleheap molehill molehillish molehilly moleism molelike molendinar molendinary molengraaffite moleproof moler moleskin molest molestation molester molestful molestfully Molge Molgula Molidae molimen moliminous molinary moline Molinia Molinism Molinist Molinistic molka Moll molland Mollberg molle mollescence mollescent molleton mollichop mollicrush mollie mollienisia mollient molliently mollifiable mollification mollifiedly mollifier mollify mollifying mollifyingly mollifyingness molligrant molligrubs mollipilose Mollisiaceae mollisiose mollities mollitious mollitude Molluginaceae Mollugo Mollusca molluscan molluscivorous molluscoid Molluscoida molluscoidal molluscoidan Molluscoidea molluscoidean molluscous molluscousness molluscum mollusk Molly molly mollycoddle mollycoddler mollycoddling mollycosset mollycot mollyhawk molman Moloch Molochize Molochship moloid moloker molompi molosse Molossian molossic Molossidae molossine molossoid molossus Molothrus molpe molrooken molt molten moltenly molter Molucca Moluccan Moluccella Moluche moly molybdate molybdena molybdenic molybdeniferous molybdenite molybdenous molybdenum molybdic molybdite molybdocardialgia molybdocolic molybdodyspepsia molybdomancy molybdomenite molybdonosus molybdoparesis molybdophyllite molybdosis molybdous molysite mombin momble Mombottu mome moment momenta momental momentally momentaneall momentaneity momentaneous momentaneously momentaneousness momentarily momentariness momentary momently momentous momentously momentousness momentum momiology momism momme mommet mommy momo Momordica Momotidae Momotinae Momotus Momus Mon mon mona Monacan monacanthid Monacanthidae monacanthine monacanthous Monacha monachal monachate Monachi monachism monachist monachization monachize monactin monactine monactinellid monactinellidan monad monadelph Monadelphia monadelphian monadelphous monadic monadical monadically monadiform monadigerous Monadina monadism monadistic monadnock monadology monaene monal monamniotic Monanday monander Monandria monandrian monandric monandrous monandry monanthous monapsal monarch monarchal monarchally monarchess monarchial monarchian monarchianism monarchianist monarchianistic monarchic monarchical monarchically monarchism monarchist monarchistic monarchize monarchizer monarchlike monarchomachic monarchomachist monarchy Monarda Monardella monarthritis monarticular monas Monasa Monascidiae monascidian monase monaster monasterial monasterially monastery monastic monastical monastically monasticism monasticize monatomic monatomicity monatomism monaulos monaural monaxial monaxile monaxon monaxonial monaxonic Monaxonida monazine monazite Monbuttu monchiquite Monday Mondayish Mondayishness Mondayland mone Monegasque Monel monel monembryary monembryonic monembryony monepic monepiscopacy monepiscopal moner Monera moneral moneran monergic monergism monergist monergistic moneric moneron Monerozoa monerozoan monerozoic monerula Moneses monesia monetarily monetary monetite monetization monetize money moneyage moneybag moneybags moneyed moneyer moneyflower moneygrub moneygrubber moneygrubbing moneylender moneylending moneyless moneymonger moneymongering moneysaving moneywise moneywort mong mongcorn monger mongering mongery Monghol Mongholian Mongibel mongler Mongo Mongol Mongolian Mongolianism Mongolic Mongolioid Mongolish Mongolism Mongolization Mongolize Mongoloid mongoose Mongoyo mongrel mongreldom mongrelish mongrelism mongrelity mongrelization mongrelize mongrelly mongrelness mongst monheimite monial Monias Monica moniker monilated monilethrix Monilia Moniliaceae moniliaceous Moniliales monilicorn moniliform moniliformly monilioid moniment Monimia Monimiaceae monimiaceous monimolite monimostylic monism monist monistic monistical monistically monition monitive monitor monitorial monitorially monitorish monitorship monitory monitress monitrix monk monkbird monkcraft monkdom monkery monkess monkey monkeyboard monkeyface monkeyfy monkeyhood monkeyish monkeyishly monkeyishness monkeylike monkeynut monkeypod monkeypot monkeyry monkeyshine monkeytail monkfish monkflower monkhood monkish monkishly monkishness monkism monklike monkliness monkly monkmonger monkship monkshood Monmouth monmouthite monny Mono mono monoacetate monoacetin monoacid monoacidic monoamide monoamine monoamino monoammonium monoazo monobacillary monobase monobasic monobasicity monoblastic monoblepsia monoblepsis monobloc monobranchiate monobromacetone monobromated monobromide monobrominated monobromination monobromized monobromoacetanilide monobromoacetone monobutyrin monocalcium monocarbide monocarbonate monocarbonic monocarboxylic monocardian monocarp monocarpal monocarpellary monocarpian monocarpic monocarpous monocellular monocentric monocentrid Monocentridae Monocentris monocentroid monocephalous monocercous monoceros monocerous monochasial monochasium Monochlamydeae monochlamydeous monochlor monochloracetic monochloranthracene monochlorbenzene monochloride monochlorinated monochlorination monochloro monochloroacetic monochlorobenzene monochloromethane monochoanitic monochord monochordist monochordize monochroic monochromasy monochromat monochromate monochromatic monochromatically monochromatism monochromator monochrome monochromic monochromical monochromically monochromist monochromous monochromy monochronic monochronous monociliated monocle monocled monocleid monoclinal monoclinally monocline monoclinian monoclinic monoclinism monoclinometric monoclinous Monoclonius Monocoelia monocoelian monocoelic Monocondyla monocondylar monocondylian monocondylic monocondylous monocormic monocot monocotyledon Monocotyledones monocotyledonous monocracy monocrat monocratic monocrotic monocrotism monocular monocularity monocularly monoculate monocule monoculist monoculous monocultural monoculture monoculus monocyanogen monocycle monocyclic Monocyclica monocystic Monocystidae Monocystidea Monocystis monocyte monocytic monocytopoiesis monodactyl monodactylate monodactyle monodactylism monodactylous monodactyly monodelph Monodelphia monodelphian monodelphic monodelphous monodermic monodic monodically monodimetric monodist monodize monodomous Monodon monodont Monodonta monodontal monodram monodrama monodramatic monodramatist monodromic monodromy monody monodynamic monodynamism Monoecia monoecian monoecious monoeciously monoeciousness monoecism monoeidic monoestrous monoethanolamine monoethylamine monofilament monofilm monoflagellate monoformin monogamian monogamic monogamist monogamistic monogamous monogamously monogamousness monogamy monoganglionic monogastric monogene Monogenea monogeneity monogeneous monogenesis monogenesist monogenesy monogenetic Monogenetica monogenic monogenism monogenist monogenistic monogenous monogeny monoglot monoglycerid monoglyceride monogoneutic monogonoporic monogonoporous monogony monogram monogrammatic monogrammatical monogrammed monogrammic monograph monographer monographic monographical monographically monographist monography monograptid Monograptidae Monograptus monogynic monogynious monogynist monogynoecial monogynous monogyny monohybrid monohydrate monohydrated monohydric monohydrogen monohydroxy monoicous monoid monoketone monolater monolatrist monolatrous monolatry monolayer monoline monolingual monolinguist monoliteral monolith monolithal monolithic monolobular monolocular monologian monologic monological monologist monologize monologue monologuist monology monomachist monomachy monomania monomaniac monomaniacal monomastigate monomeniscous monomer monomeric monomerous monometallic monometallism monometallist monometer monomethyl monomethylated monomethylic monometric monometrical monomial monomict monomineral monomineralic monomolecular monomolybdate Monomorium monomorphic monomorphism monomorphous Monomya Monomyaria monomyarian mononaphthalene mononch Mononchus mononeural Monongahela mononitrate mononitrated mononitration mononitride mononitrobenzene mononomial mononomian monont mononuclear mononucleated mononucleosis mononychous mononym mononymic mononymization mononymize mononymy monoousian monoousious monoparental monoparesis monoparesthesia monopathic monopathy monopectinate monopersonal monopersulfuric monopersulphuric Monopetalae monopetalous monophagism monophagous monophagy monophase monophasia monophasic monophobia monophone monophonic monophonous monophony monophotal monophote monophthalmic monophthalmus monophthong monophthongal monophthongization monophthongize monophyletic monophyleticism monophylite monophyllous monophyodont monophyodontism Monophysite Monophysitic Monophysitical Monophysitism monopitch monoplacula monoplacular monoplaculate monoplane monoplanist monoplasmatic monoplast monoplastic monoplegia monoplegic Monopneumoa monopneumonian monopneumonous monopode monopodial monopodially monopodic monopodium monopodous monopody monopolar monopolaric monopolarity monopole monopolism monopolist monopolistic monopolistically monopolitical monopolizable monopolization monopolize monopolizer monopolous monopoly monopolylogist monopolylogue monopotassium monoprionid monoprionidian monopsonistic monopsony monopsychism monopteral Monopteridae monopteroid monopteron monopteros monopterous monoptic monoptical monoptote monoptotic Monopylaea Monopylaria monopylean monopyrenous monorail monorailroad monorailway monorchid monorchidism monorchis monorchism monorganic Monorhina monorhinal monorhine monorhyme monorhymed monorhythmic monosaccharide monosaccharose monoschemic monoscope monose monosemic monosepalous monoservice monosilane monosilicate monosilicic monosiphonic monosiphonous monosodium monosomatic monosomatous monosome monosomic monosperm monospermal monospermic monospermous monospermy monospherical monospondylic monosporangium monospore monospored monosporiferous monosporous monostele monostelic monostelous monostely monostich monostichous Monostomata Monostomatidae monostomatous monostome Monostomidae monostomous Monostomum monostromatic monostrophe monostrophic monostrophics monostylous monosubstituted monosubstitution monosulfone monosulfonic monosulphide monosulphone monosulphonic monosyllabic monosyllabical monosyllabically monosyllabism monosyllabize monosyllable monosymmetric monosymmetrical monosymmetrically monosymmetry monosynthetic monotelephone monotelephonic monotellurite Monothalama monothalamian monothalamous monothecal monotheism monotheist monotheistic monotheistical monotheistically Monothelete Monotheletian Monotheletic Monotheletism monothelious Monothelism Monothelitic Monothelitism monothetic monotic monotint Monotocardia monotocardiac monotocardian monotocous monotomous monotone monotonic monotonical monotonically monotonist monotonize monotonous monotonously monotonousness monotony monotremal Monotremata monotremate monotrematous monotreme monotremous monotrichous monotriglyph monotriglyphic Monotrocha monotrochal monotrochian monotrochous Monotropa Monotropaceae monotropaceous monotrophic monotropic Monotropsis monotropy monotypal monotype monotypic monotypical monotypous monoureide monovalence monovalency monovalent monovariant monoverticillate monovoltine monovular monoxenous monoxide monoxime monoxyle monoxylic monoxylon monoxylous Monozoa monozoan monozoic monozygotic Monroeism Monroeist monrolite monseigneur monsieur monsieurship monsignor monsignorial Monsoni monsoon monsoonal monsoonish monsoonishly monster Monstera monsterhood monsterlike monstership monstrance monstrate monstration monstrator monstricide monstriferous monstrification monstrify monstrosity monstrous monstrously monstrousness Mont montage Montagnac Montagnais Montana montana Montanan montane montanic montanin Montanism Montanist Montanistic Montanistical montanite Montanize montant Montargis Montauk montbretia monte montebrasite monteith montem Montenegrin Montepulciano Monterey Montes Montesco Montesinos Montessorian Montessorianism Montezuma montgolfier month monthly monthon Montia monticellite monticle monticoline monticulate monticule Monticulipora Monticuliporidae monticuliporidean monticuliporoid monticulose monticulous monticulus montiform montigeneous montilla montjoy montmartrite Montmorency montmorilonite monton Montrachet montroydite Montu monture Monty Monumbo monument monumental monumentalism monumentality monumentalization monumentalize monumentally monumentary monumentless monumentlike monzodiorite monzogabbro monzonite monzonitic moo Mooachaht mooch moocha moocher moochulka mood mooder moodily moodiness moodish moodishly moodishness moodle moody mooing mool moolet moolings mools moolum moon moonack moonbeam moonbill moonblink mooncalf mooncreeper moondown moondrop mooned mooner moonery mooneye moonface moonfaced moonfall moonfish moonflower moonglade moonglow moonhead moonily mooniness mooning moonish moonite moonja moonjah moonless moonlet moonlight moonlighted moonlighter moonlighting moonlighty moonlike moonlikeness moonlit moonlitten moonman moonpath moonpenny moonproof moonraker moonraking moonrise moonsail moonscape moonseed moonset moonshade moonshine moonshiner moonshining moonshiny moonsick moonsickness moonstone moontide moonwalker moonwalking moonward moonwards moonway moonwort moony moop Moor moor moorage moorball moorband moorberry moorbird moorburn moorburner moorburning Moore moorflower moorfowl mooring Moorish moorish moorishly moorishness moorland moorlander Moorman moorman moorn moorpan moors Moorship moorsman moorstone moortetter moorup moorwort moory moosa moose mooseberry moosebird moosebush moosecall mooseflower moosehood moosemise moosetongue moosewob moosewood moosey moost moot mootable mooter mooth mooting mootman mootstead mootworthy mop Mopan mopane mopboard mope moper moph mophead mopheaded moping mopingly mopish mopishly mopishness mopla mopper moppet moppy mopstick mopsy mopus Moquelumnan moquette Moqui mor mora Moraceae moraceous Moraea morainal moraine morainic moral morale moralism moralist moralistic moralistically morality moralization moralize moralizer moralizingly moralless morally moralness morals Moran morass morassic morassweed morassy morat morate moration moratoria moratorium moratory Moravian Moravianism Moravianized Moravid moravite moray morbid morbidity morbidize morbidly morbidness morbiferal morbiferous morbific morbifical morbifically morbify morbility morbillary morbilli morbilliform morbillous morcellate morcellated morcellation Morchella Morcote mordacious mordaciously mordacity mordancy mordant mordantly Mordella mordellid Mordellidae mordelloid mordenite mordent mordicate mordication mordicative mordore Mordv Mordva Mordvin Mordvinian more moreen morefold moreish morel morella morello morencite moreness morenita morenosite Moreote moreover morepork mores Moresque morfrey morg morga Morgan morgan Morgana morganatic morganatical morganatically morganic morganite morganize morgay morgen morgengift morgenstern morglay morgue moribund moribundity moribundly moric moriche moriform morigerate morigeration morigerous morigerously morigerousness morillon morin Morinaceae Morinda morindin morindone morinel Moringa Moringaceae moringaceous moringad Moringua moringuid Moringuidae moringuoid morion Moriori Moriscan Morisco Morisonian Morisonianism morkin morlop mormaor mormaordom mormaorship mormo Mormon mormon Mormondom Mormoness Mormonism Mormonist Mormonite Mormonweed Mormoops mormyr mormyre mormyrian mormyrid Mormyridae mormyroid Mormyrus morn morne morned morning morningless morningly mornings morningtide morningward mornless mornlike morntime mornward Moro moro moroc Moroccan Morocco morocco morocota morological morologically morologist morology moromancy moron moroncy morong moronic Moronidae moronism moronity moronry Moropus morosaurian morosauroid Morosaurus morose morosely moroseness morosis morosity moroxite morph morphallaxis morphea Morphean morpheme morphemic morphemics morphetic Morpheus morphew morphia morphiate morphic morphically morphinate morphine morphinic morphinism morphinist morphinization morphinize morphinomania morphinomaniac morphiomania morphiomaniac Morpho morphogenesis morphogenetic morphogenic morphogeny morphographer morphographic morphographical morphographist morphography morpholine morphologic morphological morphologically morphologist morphology morphometrical morphometry morphon morphonomic morphonomy morphophonemic morphophonemically morphophonemics morphophyly morphoplasm morphoplasmic morphosis morphotic morphotropic morphotropism morphotropy morphous Morrenian Morrhua morrhuate morrhuine morricer Morris morris Morrisean morrow morrowing morrowless morrowmass morrowspeech morrowtide morsal Morse morse morsel morselization morselize morsing morsure mort mortacious mortal mortalism mortalist mortality mortalize mortally mortalness mortalwise mortar mortarboard mortarize mortarless mortarlike mortarware mortary mortbell mortcloth mortersheen mortgage mortgageable mortgagee mortgagor morth morthwyrtha mortician mortier mortiferous mortiferously mortiferousness mortific mortification mortified mortifiedly mortifiedness mortifier mortify mortifying mortifyingly Mortimer mortise mortiser mortling mortmain mortmainer Morton mortuarian mortuary mortuous morula morular morulation morule moruloid Morus morvin morwong Mosaic mosaic Mosaical mosaical mosaically mosaicism mosaicist Mosaicity Mosaism Mosaist mosaist mosandrite mosasaur Mosasauri Mosasauria mosasaurian mosasaurid Mosasauridae mosasauroid Mosasaurus Mosatenan moschate moschatel moschatelline Moschi Moschidae moschiferous Moschinae moschine Moschus Moscow Mose Moselle Moses mosesite Mosetena mosette mosey Mosgu moskeneer mosker Moslem Moslemah Moslemic Moslemin Moslemism Moslemite Moslemize moslings mosque mosquelet mosquish mosquital Mosquito mosquito mosquitobill mosquitocidal mosquitocide mosquitoey mosquitoish mosquitoproof moss mossback mossberry mossbunker mossed mosser mossery mossful mosshead Mossi mossiness mossless mosslike mosstrooper mosstroopery mosstrooping mosswort mossy mossyback most moste Mosting mostlike mostlings mostly mostness Mosul Mosur mot Motacilla motacillid Motacillidae Motacillinae motacilline motatorious motatory Motazilite mote moted motel moteless moter motet motettist motey moth mothed mother motherdom mothered motherer mothergate motherhood motheriness mothering motherkin motherland motherless motherlessness motherlike motherliness motherling motherly mothership mothersome motherward motherwise motherwort mothery mothless mothlike mothproof mothworm mothy motif motific motile motility motion motionable motional motionless motionlessly motionlessness motitation motivate motivation motivational motive motiveless motivelessly motivelessness motiveness motivity motley motleyness motmot motofacient motograph motographic motomagnetic motoneuron motophone motor motorable motorboat motorboatman motorbus motorcab motorcade motorcar motorcycle motorcyclist motordom motordrome motored motorial motoric motoring motorism motorist motorium motorization motorize motorless motorman motorneer motorphobe motorphobia motorphobiac motorway motory Motozintlec Motozintleca motricity Mott mott motte mottle mottled mottledness mottlement mottler mottling motto mottoed mottoless mottolike mottramite motyka mou moucharaby mouchardism mouche mouchrabieh moud moudie moudieman moudy mouflon Mougeotia Mougeotiaceae mouillation mouille mouillure moujik moul mould moulded moule moulin moulinage moulinet moulleen moulrush mouls moulter mouly mound moundiness moundlet moundwork moundy mount mountable mountably mountain mountained mountaineer mountainet mountainette mountainless mountainlike mountainous mountainously mountainousness mountainside mountaintop mountainward mountainwards mountainy mountant mountebank mountebankery mountebankish mountebankism mountebankly mounted mounter Mountie mounting mountingly mountlet mounture moup mourn mourner mourneress mournful mournfully mournfulness mourning mourningly mournival mournsome mouse mousebane mousebird mousefish mousehawk mousehole mousehound Mouseion mousekin mouselet mouselike mouseproof mouser mousery mouseship mousetail mousetrap mouseweb mousey mousily mousiness mousing mousingly mousle mousmee Mousoni mousquetaire mousse Mousterian moustoc mousy mout moutan mouth mouthable mouthbreeder mouthed mouther mouthful mouthily mouthiness mouthing mouthingly mouthishly mouthless mouthlike mouthpiece mouthroot mouthwash mouthwise mouthy mouton moutonnee mouzah mouzouna movability movable movableness movably movant move moveability moveableness moveably moveless movelessly movelessness movement mover movie moviedom movieize movieland moving movingly movingness mow mowable mowana mowburn mowburnt mowch mowcht mower mowha mowie mowing mowland mown mowra mowrah mowse mowstead mowt mowth moxa moxieberry Moxo moy moyen moyenless moyenne moyite moyle moyo Mozambican mozambique Mozarab Mozarabian Mozarabic Mozartean mozemize mozing mozzetta Mpangwe Mpondo mpret Mr Mrs Mru mu muang mubarat mucago mucaro mucedin mucedinaceous mucedine mucedinous much muchfold muchly muchness mucic mucid mucidness muciferous mucific muciform mucigen mucigenous mucilage mucilaginous mucilaginously mucilaginousness mucin mucinogen mucinoid mucinous muciparous mucivore mucivorous muck muckender Mucker mucker muckerish muckerism mucket muckiness muckite muckle muckluck muckman muckment muckmidden muckna muckrake muckraker mucksweat mucksy muckthrift muckweed muckworm mucky mucluc mucocele mucocellulose mucocellulosic mucocutaneous mucodermal mucofibrous mucoflocculent mucoid mucomembranous muconic mucoprotein mucopurulent mucopus mucor Mucoraceae mucoraceous Mucorales mucorine mucorioid mucormycosis mucorrhea mucosa mucosal mucosanguineous mucose mucoserous mucosity mucosocalcareous mucosogranular mucosopurulent mucososaccharine mucous mucousness mucro mucronate mucronately mucronation mucrones mucroniferous mucroniform mucronulate mucronulatous muculent Mucuna mucus mucusin mud mudar mudbank mudcap mudd mudde mudden muddify muddily muddiness mudding muddish muddle muddlebrained muddledom muddlehead muddleheaded muddleheadedness muddlement muddleproof muddler muddlesome muddlingly muddy muddybrained muddybreast muddyheaded mudee Mudejar mudfish mudflow mudguard mudhead mudhole mudhopper mudir mudiria mudland mudlark mudlarker mudless mudproof mudra mudsill mudskipper mudslinger mudslinging mudspate mudstain mudstone mudsucker mudtrack mudweed mudwort Muehlenbeckia muermo muezzin muff muffed muffet muffetee muffin muffineer muffish muffishness muffle muffled muffleman muffler mufflin muffy mufti mufty mug muga mugearite mugful mugg mugger mugget muggily mugginess muggins muggish muggles Muggletonian Muggletonianism muggy mughouse mugience mugiency mugient Mugil Mugilidae mugiliform mugiloid mugweed mugwort mugwump mugwumpery mugwumpian mugwumpism muhammadi Muharram Muhlenbergia muid Muilla muir muirburn muircock muirfowl muishond muist mujtahid Mukden mukluk Mukri muktar muktatma mukti mulaprakriti mulatta mulatto mulattoism mulattress mulberry mulch mulcher Mulciber Mulcibirian mulct mulctable mulctary mulctation mulctative mulctatory mulctuary mulder mule muleback mulefoot mulefooted muleman muleta muleteer muletress muletta mulewort muley mulga muliebral muliebria muliebrile muliebrity muliebrous mulier mulierine mulierose mulierosity mulish mulishly mulishness mulism mulita mulk mull mulla mullah mullar mullein mullenize muller Mullerian mullet mulletry mullets mulley mullid Mullidae mulligan mulligatawny mulligrubs mullion mullite mullock mullocker mullocky mulloid mulloway mulmul mulse mulsify mult multangular multangularly multangularness multangulous multangulum Multani multanimous multarticulate multeity multiangular multiareolate multiarticular multiarticulate multiarticulated multiaxial multiblade multibladed multibranched multibranchiate multibreak multicamerate multicapitate multicapsular multicarinate multicarinated multicellular multicentral multicentric multicharge multichord multichrome multiciliate multiciliated multicipital multicircuit multicoccous multicoil multicolor multicolored multicolorous multicomponent multiconductor multiconstant multicore multicorneal multicostate multicourse multicrystalline multicuspid multicuspidate multicycle multicylinder multicylindered multidentate multidenticulate multidenticulated multidigitate multidimensional multidirectional multidisperse multiengine multiengined multiexhaust multifaced multifaceted multifactorial multifamilial multifarious multifariously multifariousness multiferous multifetation multifibered multifid multifidly multifidous multifidus multifilament multifistular multiflagellate multiflagellated multiflash multiflorous multiflow multiflue multifocal multifoil multifoiled multifold multifoliate multifoliolate multiform multiformed multiformity multifurcate multiganglionic multigap multigranulate multigranulated Multigraph multigraph multigrapher multiguttulate multigyrate multihead multihearth multihued multijet multijugate multijugous multilaciniate multilamellar multilamellate multilamellous multilaminar multilaminate multilaminated multilateral multilaterally multilighted multilineal multilinear multilingual multilinguist multilirate multiliteral multilobar multilobate multilobe multilobed multilobular multilobulate multilobulated multilocation multilocular multiloculate multiloculated multiloquence multiloquent multiloquious multiloquous multiloquy multimacular multimammate multimarble multimascular multimedial multimetalic multimetallism multimetallist multimillion multimillionaire multimodal multimodality multimolecular multimotor multimotored multinational multinervate multinervose multinodal multinodate multinodous multinodular multinomial multinominal multinominous multinuclear multinucleate multinucleated multinucleolar multinucleolate multinucleolated multiovular multiovulate multipara multiparient multiparity multiparous multipartisan multipartite multiped multiperforate multiperforated multipersonal multiphase multiphaser multiphotography multipinnate multiplane multiple multiplepoinding multiplet multiplex multipliable multipliableness multiplicability multiplicable multiplicand multiplicate multiplication multiplicational multiplicative multiplicatively multiplicator multiplicity multiplier multiply multiplying multipointed multipolar multipole multiported multipotent multipresence multipresent multiradial multiradiate multiradiated multiradicate multiradicular multiramified multiramose multiramous multirate multireflex multirooted multirotation multirotatory multisaccate multisacculate multisacculated multiscience multiseated multisect multisector multisegmental multisegmentate multisegmented multisensual multiseptate multiserial multiserially multiseriate multishot multisiliquous multisonous multispeed multispermous multispicular multispiculate multispindle multispinous multispiral multispired multistage multistaminate multistoried multistory multistratified multistratous multistriate multisulcate multisulcated multisyllabic multisyllability multisyllable multitarian multitentaculate multitheism multithreaded multititular multitoed multitoned multitube Multituberculata multituberculate multituberculated multituberculism multituberculy multitubular multitude multitudinal multitudinary multitudinism multitudinist multitudinistic multitudinosity multitudinous multitudinously multitudinousness multiturn multivagant multivalence multivalency multivalent multivalve multivalved multivalvular multivane multivariant multivarious multiversant multiverse multivibrator multivincular multivious multivocal multivocalness multivoiced multivolent multivoltine multivolumed multivorous multocular multum multungulate multure multurer mum mumble mumblebee mumblement mumbler mumbling mumblingly mummer mummery mummichog mummick mummied mummification mummiform mummify mumming mummy mummydom mummyhood mummylike mumness mump mumper mumphead mumpish mumpishly mumpishness mumps mumpsimus mumruffin mun Munandi Muncerian munch Munchausenism Munchausenize muncheel muncher munchet mund Munda mundane mundanely mundaneness mundanism mundanity Mundari mundatory mundic mundificant mundification mundifier mundify mundil mundivagant mundle mung munga munge mungey mungo mungofa munguba mungy Munia Munich Munichism municipal municipalism municipalist municipality municipalization municipalize municipalizer municipally municipium munific munificence munificency munificent munificently munificentness muniment munition munitionary munitioneer munitioner munitions munity munj munjeet munjistin munnion Munnopsidae Munnopsis Munsee munshi munt Muntiacus muntin Muntingia muntjac Munychia Munychian Munychion Muong Muphrid Mura mura Muradiyah Muraena Muraenidae muraenoid murage mural muraled muralist murally Muran Muranese murasakite Murat Muratorian murchy murder murderer murderess murdering murderingly murderish murderment murderous murderously murderousness murdrum mure murenger murex murexan murexide murga murgavi murgeon muriate muriated muriatic muricate muricid Muricidae muriciform muricine muricoid muriculate murid Muridae muridism Muriel muriform muriformly Murillo Murinae murine murinus muriti murium murk murkily murkiness murkish murkly murkness murksome murky murlin murly Murmi murmur murmuration murmurator murmurer murmuring murmuringly murmurish murmurless murmurlessly murmurous murmurously muromontite Murph murphy murra murrain Murray Murraya murre murrelet murrey murrhine murrina murrnong murshid Murthy murumuru Murut muruxi murva murza Murzim Mus Musa Musaceae musaceous Musaeus musal Musales Musalmani musang musar Musca muscade muscadel muscadine Muscadinia muscardine Muscardinidae Muscardinus Muscari muscariform muscarine muscat muscatel muscatorium Musci Muscicapa Muscicapidae muscicapine muscicide muscicole muscicoline muscicolous muscid Muscidae musciform Muscinae muscle muscled muscleless musclelike muscling muscly Muscogee muscoid Muscoidea muscologic muscological muscologist muscology muscone muscose muscoseness muscosity muscot muscovadite muscovado Muscovi Muscovite muscovite Muscovitic muscovitization muscovitize muscovy muscular muscularity muscularize muscularly musculation musculature muscule musculin musculoarterial musculocellular musculocutaneous musculodermic musculoelastic musculofibrous musculointestinal musculoligamentous musculomembranous musculopallial musculophrenic musculospinal musculospiral musculotegumentary musculotendinous Muse muse mused museful musefully museist museless muselike museographist museography museologist museology muser musery musette museum museumize Musgu mush musha mushaa Mushabbihite mushed musher mushhead mushheaded mushheadedness mushily mushiness mushla mushmelon mushrebiyeh mushroom mushroomer mushroomic mushroomlike mushroomy mushru mushy music musical musicale musicality musicalization musicalize musically musicalness musicate musician musiciana musicianer musicianly musicianship musicker musicless musiclike musicmonger musico musicoartistic musicodramatic musicofanatic musicographer musicography musicological musicologist musicologue musicology musicomania musicomechanical musicophilosophical musicophobia musicophysical musicopoetic musicotherapy musicproof musie musily musimon musing musingly musk muskat muskeg muskeggy muskellunge musket musketade musketeer musketlike musketoon musketproof musketry muskflower Muskhogean muskie muskiness muskish musklike muskmelon Muskogee muskrat muskroot Muskwaki muskwood musky muslin muslined muslinet musnud Musophaga Musophagi Musophagidae musophagine musquash musquashroot musquashweed musquaspen musquaw musrol muss mussable mussably Mussaenda mussal mussalchee mussel musseled musseler mussily mussiness mussitate mussitation mussuk Mussulman Mussulmanic Mussulmanish Mussulmanism Mussulwoman mussurana mussy must mustache mustached mustachial mustachio mustachioed mustafina Mustahfiz mustang mustanger mustard mustarder mustee Mustela mustelid Mustelidae musteline mustelinous musteloid Mustelus muster musterable musterdevillers musterer mustermaster mustify mustily mustiness mustnt musty muta Mutabilia mutability mutable mutableness mutably mutafacient mutage mutagenic mutant mutarotate mutarotation mutase mutate mutation mutational mutationally mutationism mutationist mutative mutatory mutawalli Mutazala mutch mute mutedly mutely muteness Muter mutesarif mutescence mutessarifat muth muthmannite muthmassel mutic muticous mutilate mutilation mutilative mutilator mutilatory Mutilla mutillid Mutillidae mutilous mutineer mutinous mutinously mutinousness mutiny Mutisia Mutisiaceae mutism mutist mutistic mutive mutivity mutoscope mutoscopic mutsje mutsuddy mutt mutter mutterer muttering mutteringly mutton muttonbird muttonchop muttonfish muttonhead muttonheaded muttonhood muttonmonger muttonwood muttony mutual mutualism mutualist mutualistic mutuality mutualization mutualize mutually mutualness mutuary mutuatitious mutulary mutule mutuum mux Muysca muyusa muzhik Muzo muzz muzzily muzziness muzzle muzzler muzzlewood muzzy Mwa my Mya Myacea myal myalgia myalgic myalism myall Myaria myarian myasthenia myasthenic myatonia myatonic myatony myatrophy mycele mycelia mycelial mycelian mycelioid mycelium myceloid Mycenaean Mycetes mycetism mycetocyte mycetogenesis mycetogenetic mycetogenic mycetogenous mycetoid mycetological mycetology mycetoma mycetomatous Mycetophagidae mycetophagous mycetophilid Mycetophilidae mycetous Mycetozoa mycetozoan mycetozoon Mycobacteria Mycobacteriaceae Mycobacterium mycocecidium mycocyte mycoderm mycoderma mycodermatoid mycodermatous mycodermic mycodermitis mycodesmoid mycodomatium mycogastritis Mycogone mycohaemia mycohemia mycoid mycologic mycological mycologically mycologist mycologize mycology mycomycete Mycomycetes mycomycetous mycomyringitis mycophagist mycophagous mycophagy mycophyte Mycoplana mycoplasm mycoplasmic mycoprotein mycorhiza mycorhizal mycorrhizal mycose mycosin mycosis mycosozin Mycosphaerella Mycosphaerellaceae mycosterol mycosymbiosis mycotic mycotrophic Mycteria mycteric mycterism Myctodera myctophid Myctophidae Myctophum Mydaidae mydaleine mydatoxine Mydaus mydine mydriasine mydriasis mydriatic mydriatine myectomize myectomy myectopia myectopy myelalgia myelapoplexy myelasthenia myelatrophy myelauxe myelemia myelencephalic myelencephalon myelencephalous myelic myelin myelinate myelinated myelination myelinic myelinization myelinogenesis myelinogenetic myelinogeny myelitic myelitis myeloblast myeloblastic myelobrachium myelocele myelocerebellar myelocoele myelocyst myelocystic myelocystocele myelocyte myelocythaemia myelocythemia myelocytic myelocytosis myelodiastasis myeloencephalitis myeloganglitis myelogenesis myelogenetic myelogenous myelogonium myeloic myeloid myelolymphangioma myelolymphocyte myeloma myelomalacia myelomatoid myelomatosis myelomenia myelomeningitis myelomeningocele myelomere myelon myelonal myeloneuritis myelonic myeloparalysis myelopathic myelopathy myelopetal myelophthisis myeloplast myeloplastic myeloplax myeloplegia myelopoiesis myelopoietic myelorrhagia myelorrhaphy myelosarcoma myelosclerosis myelospasm myelospongium myelosyphilis myelosyphilosis myelosyringosis myelotherapy Myelozoa myelozoan myentasis myenteric myenteron myesthesia mygale mygalid mygaloid Myiarchus myiasis myiferous myiodesopsia myiosis myitis mykiss myliobatid Myliobatidae myliobatine myliobatoid Mylodon mylodont Mylodontidae mylohyoid mylohyoidean mylonite mylonitic Mymar mymarid Mymaridae myna Mynheer mynpacht mynpachtbrief myoalbumin myoalbumose myoatrophy myoblast myoblastic myocardiac myocardial myocardiogram myocardiograph myocarditic myocarditis myocardium myocele myocellulitis myoclonic myoclonus myocoele myocoelom myocolpitis myocomma myocyte myodegeneration Myodes myodiastasis myodynamia myodynamic myodynamics myodynamiometer myodynamometer myoedema myoelectric myoendocarditis myoepicardial myoepithelial myofibril myofibroma myogen myogenesis myogenetic myogenic myogenous myoglobin myoglobulin myogram myograph myographer myographic myographical myographist myography myohematin myoid myoidema myokinesis myolemma myolipoma myoliposis myologic myological myologist myology myolysis myoma myomalacia myomancy myomantic myomatous myomectomy myomelanosis myomere myometritis myometrium myomohysterectomy myomorph Myomorpha myomorphic myomotomy myoneme myoneural myoneuralgia myoneurasthenia myoneure myoneuroma myoneurosis myonosus myopachynsis myoparalysis myoparesis myopathia myopathic myopathy myope myoperitonitis myophan myophore myophorous myophysical myophysics myopia myopic myopical myopically myoplasm myoplastic myoplasty myopolar Myoporaceae myoporaceous myoporad Myoporum myoproteid myoprotein myoproteose myops myopy myorrhaphy myorrhexis myosalpingitis myosarcoma myosarcomatous myosclerosis myoscope myoseptum myosin myosinogen myosinose myosis myositic myositis myosote Myosotis myospasm myospasmia Myosurus myosuture myosynizesis myotacismus Myotalpa Myotalpinae myotasis myotenotomy myothermic myotic myotome myotomic myotomy myotonia myotonic myotonus myotony myotrophy myowun Myoxidae myoxine Myoxus Myra myrabalanus myrabolam myrcene Myrcia myrcia myriacanthous myriacoulomb myriad myriaded myriadfold myriadly myriadth myriagram myriagramme myrialiter myrialitre myriameter myriametre Myrianida myriapod Myriapoda myriapodan myriapodous myriarch myriarchy myriare Myrica myrica Myricaceae myricaceous Myricales myricetin myricin Myrick myricyl myricylic Myrientomata myringa myringectomy myringitis myringodectomy myringodermatitis myringomycosis myringoplasty myringotome myringotomy myriological myriologist myriologue myriophyllite myriophyllous Myriophyllum Myriopoda myriopodous myriorama myrioscope myriosporous myriotheism Myriotrichia Myriotrichiaceae myriotrichiaceous myristate myristic Myristica myristica Myristicaceae myristicaceous Myristicivora myristicivorous myristin myristone Myrmecia Myrmecobiinae myrmecobine Myrmecobius myrmecochorous myrmecochory myrmecoid myrmecoidy myrmecological myrmecologist myrmecology Myrmecophaga Myrmecophagidae myrmecophagine myrmecophagoid myrmecophagous myrmecophile myrmecophilism myrmecophilous myrmecophily myrmecophobic myrmecophyte myrmecophytic myrmekite Myrmeleon Myrmeleonidae Myrmeleontidae Myrmica myrmicid Myrmicidae myrmicine myrmicoid Myrmidon Myrmidonian myrmotherine myrobalan Myron myron myronate myronic myrosin myrosinase Myrothamnaceae myrothamnaceous Myrothamnus Myroxylon myrrh myrrhed myrrhic myrrhine Myrrhis myrrhol myrrhophore myrrhy Myrsinaceae myrsinaceous myrsinad Myrsiphyllum Myrtaceae myrtaceous myrtal Myrtales myrtiform Myrtilus myrtle myrtleberry myrtlelike myrtol Myrtus mysel myself mysell Mysian mysid Mysidacea Mysidae mysidean Mysis mysogynism mysoid mysophobia Mysore mysosophist mysost myst mystacial Mystacocete Mystacoceti mystagogic mystagogical mystagogically mystagogue mystagogy mystax mysterial mysteriarch mysteriosophic mysteriosophy mysterious mysteriously mysteriousness mysterize mystery mystes mystic mystical mysticality mystically mysticalness Mysticete mysticete Mysticeti mysticetous mysticism mysticity mysticize mysticly mystific mystifically mystification mystificator mystificatory mystifiedly mystifier mystify mystifyingly mytacism myth mythical mythicalism mythicality mythically mythicalness mythicism mythicist mythicize mythicizer mythification mythify mythism mythist mythize mythland mythmaker mythmaking mythoclast mythoclastic mythogenesis mythogonic mythogony mythographer mythographist mythography mythogreen mythoheroic mythohistoric mythologema mythologer mythological mythologically mythologist mythologize mythologizer mythologue mythology mythomania mythomaniac mythometer mythonomy mythopastoral mythopoeic mythopoeism mythopoeist mythopoem mythopoesis mythopoesy mythopoet mythopoetic mythopoetize mythopoetry mythos mythus Mytilacea mytilacean mytilaceous Mytiliaspis mytilid Mytilidae mytiliform mytiloid mytilotoxine Mytilus myxa myxadenitis myxadenoma myxaemia myxamoeba myxangitis myxasthenia myxedema myxedematoid myxedematous myxedemic myxemia Myxine Myxinidae myxinoid Myxinoidei myxo Myxobacteria Myxobacteriaceae myxobacteriaceous Myxobacteriales myxoblastoma myxochondroma myxochondrosarcoma Myxococcus myxocystoma myxocyte myxoenchondroma myxofibroma myxofibrosarcoma myxoflagellate myxogaster Myxogasteres Myxogastrales Myxogastres myxogastric myxogastrous myxoglioma myxoid myxoinoma myxolipoma myxoma myxomatosis myxomatous Myxomycetales myxomycete Myxomycetes myxomycetous myxomyoma myxoneuroma myxopapilloma Myxophyceae myxophycean Myxophyta myxopod Myxopoda myxopodan myxopodium myxopodous myxopoiesis myxorrhea myxosarcoma Myxospongiae myxospongian Myxospongida myxospore Myxosporidia myxosporidian Myxosporidiida Myxosporium myxosporous Myxothallophyta myxotheca Myzodendraceae myzodendraceous Myzodendron Myzomyia myzont Myzontes Myzostoma Myzostomata myzostomatous myzostome myzostomid Myzostomida Myzostomidae myzostomidan myzostomous N n na naa naam Naaman Naassenes nab nabak Nabal Nabalism Nabalite Nabalitic Nabaloi Nabalus Nabataean Nabatean Nabathaean Nabathean Nabathite nabber Nabby nabk nabla nable nabob nabobery nabobess nabobical nabobish nabobishly nabobism nabobry nabobship Nabothian nabs Nabu nacarat nacarine nace nacelle nach nachani Nachitoch Nachitoches Nachschlag Nacionalista nacket nacre nacred nacreous nacrine nacrite nacrous nacry nadder Nadeem nadir nadiral nadorite nae naebody naegate naegates nael Naemorhedinae naemorhedine Naemorhedus naether naething nag Naga naga nagaika nagana nagara Nagari nagatelite nagger naggin nagging naggingly naggingness naggish naggle naggly naggy naght nagkassar nagmaal nagman nagnag nagnail nagor nagsman nagster nagual nagualism nagualist nagyagite Nahanarvali Nahane Nahani Naharvali Nahor Nahua Nahuan Nahuatl Nahuatlac Nahuatlan Nahuatleca Nahuatlecan Nahum naiad Naiadaceae naiadaceous Naiadales Naiades naiant Naias naid naif naifly naig naigie naik nail nailbin nailbrush nailer naileress nailery nailhead nailing nailless naillike nailprint nailproof nailrod nailshop nailsick nailsmith nailwort naily Naim nain nainsel nainsook naio naipkin Nair nairy nais naish naissance naissant naither naive naively naiveness naivete naivety Naja nak nake naked nakedish nakedize nakedly nakedness nakedweed nakedwood naker nakhlite nakhod nakhoda Nakir nako Nakomgilisala nakong nakoo Nakula Nalita nallah nam Nama namability namable Namaqua namaqua Namaquan namaycush namaz namazlik Nambe namda name nameability nameable nameboard nameless namelessly namelessness nameling namely namer namesake naming nammad Nan nan Nana nana Nanaimo nanawood Nance Nancy nancy Nanda Nandi nandi Nandina nandine nandow nandu nane nanes nanga nanism nanization nankeen Nankin nankin Nanking Nankingese nannander nannandrium nannandrous Nannette nannoplankton Nanny nanny nannyberry nannybush nanocephalia nanocephalic nanocephalism nanocephalous nanocephalus nanocephaly nanoid nanomelia nanomelous nanomelus nanosoma nanosomia nanosomus nanpie nant Nanticoke nantle nantokite Nantz naological naology naometry Naomi Naos naos Naosaurus Naoto nap napa Napaea Napaean napal napalm nape napead napecrest napellus naperer napery naphtha naphthacene naphthalate naphthalene naphthaleneacetic naphthalenesulphonic naphthalenic naphthalenoid naphthalic naphthalidine naphthalin naphthaline naphthalization naphthalize naphthalol naphthamine naphthanthracene naphthene naphthenic naphthinduline naphthionate naphtho naphthoic naphthol naphtholate naphtholize naphtholsulphonate naphtholsulphonic naphthoquinone naphthoresorcinol naphthosalol naphthous naphthoxide naphthyl naphthylamine naphthylaminesulphonic naphthylene naphthylic naphtol Napierian napiform napkin napkining napless naplessness Napoleon napoleon Napoleonana Napoleonic Napoleonically Napoleonism Napoleonist Napoleonistic napoleonite Napoleonize napoo nappe napped napper nappiness napping nappishness nappy naprapath naprapathy napron napthionic napu nar Narcaciontes Narcaciontidae narceine narcism Narciss Narcissan narcissi Narcissine narcissism narcissist narcissistic Narcissus narcist narcistic narcoanalysis narcoanesthesia Narcobatidae Narcobatoidea Narcobatus narcohypnia narcohypnosis narcolepsy narcoleptic narcoma narcomania narcomaniac narcomaniacal narcomatous Narcomedusae narcomedusan narcose narcosis narcostimulant narcosynthesis narcotherapy narcotia narcotic narcotical narcotically narcoticalness narcoticism narcoticness narcotina narcotine narcotinic narcotism narcotist narcotization narcotize narcous nard nardine nardoo Nardus Naren Narendra nares Naresh narghile nargil narial naric narica naricorn nariform narine naringenin naringin nark narky narr narra Narraganset narras narratable narrate narrater narration narrational narrative narratively narrator narratory narratress narratrix narrawood narrow narrower narrowhearted narrowheartedness narrowingness narrowish narrowly narrowness narrowy narsarsukite narsinga narthecal Narthecium narthex narwhal narwhalian nary nasab nasal Nasalis nasalis nasalism nasality nasalization nasalize nasally nasalward nasalwards nasard Nascan Nascapi nascence nascency nascent nasch naseberry nasethmoid nash nashgab nashgob Nashim Nashira Nashua nasi nasial nasicorn Nasicornia nasicornous Nasiei nasiform nasilabial nasillate nasillation nasioalveolar nasiobregmatic nasioinial nasiomental nasion nasitis Naskhi nasoalveola nasoantral nasobasilar nasobronchial nasobuccal nasoccipital nasociliary nasoethmoidal nasofrontal nasolabial nasolachrymal nasological nasologist nasology nasomalar nasomaxillary nasonite nasoorbital nasopalatal nasopalatine nasopharyngeal nasopharyngitis nasopharynx nasoprognathic nasoprognathism nasorostral nasoscope nasoseptal nasosinuitis nasosinusitis nasosubnasal nasoturbinal nasrol Nassa Nassau Nassellaria nassellarian Nassidae nassology nast nastaliq nastic nastika nastily nastiness nasturtion nasturtium nasty Nasua nasus nasute nasuteness nasutiform nasutus nat natability nataka Natal natal Natalia Natalian Natalie natality nataloin natals natant natantly Nataraja natation natational natator natatorial natatorious natatorium natatory natch natchbone Natchez Natchezan Natchitoches natchnee Nate nates Nathan Nathanael Nathaniel nathe nather nathless Natica Naticidae naticiform naticine Natick naticoid natiform natimortality nation national nationalism nationalist nationalistic nationalistically nationality nationalization nationalize nationalizer nationally nationalness nationalty nationhood nationless nationwide native natively nativeness nativism nativist nativistic nativity natr Natraj Natricinae natricine natrium Natrix natrochalcite natrojarosite natrolite natron Natt natter nattered natteredness natterjack nattily nattiness nattle natty natuary natural naturalesque naturalism naturalist naturalistic naturalistically naturality naturalization naturalize naturalizer naturally naturalness nature naturecraft naturelike naturing naturism naturist naturistic naturistically naturize naturopath naturopathic naturopathist naturopathy naucrar naucrary naufragous nauger naught naughtily naughtiness naughty naujaite naumachia naumachy naumannite Naumburgia naumk naumkeag naumkeager naunt nauntle naupathia nauplial naupliiform nauplioid nauplius nauropometer nauscopy nausea nauseant nauseaproof nauseate nauseatingly nauseation nauseous nauseously nauseousness Nauset naut nautch nauther nautic nautical nauticality nautically nautics nautiform Nautilacea nautilacean nautilicone nautiliform nautilite nautiloid Nautiloidea nautiloidean nautilus Navaho Navajo naval navalese navalism navalist navalistic navalistically navally navar navarch navarchy Navarrese Navarrian nave navel naveled navellike navelwort navet navette navew navicella navicert navicula Naviculaceae naviculaeform navicular naviculare naviculoid naviform navigability navigable navigableness navigably navigant navigate navigation navigational navigator navigerous navipendular navipendulum navite navvy navy naw nawab nawabship nawt nay Nayar Nayarit Nayarita nayaur naysay naysayer nayward nayword Nazarate Nazarean Nazarene Nazarenism Nazarite Nazariteship Nazaritic Nazaritish Nazaritism naze Nazerini Nazi Nazify Naziism nazim nazir Nazirate Nazirite Naziritic Nazism ne nea Neal neal neallotype Neanderthal Neanderthaler Neanderthaloid neanic neanthropic neap neaped Neapolitan nearable nearabout nearabouts nearaivays nearaway nearby Nearctic Nearctica nearest nearish nearly nearmost nearness nearsighted nearsightedly nearsightedness nearthrosis neat neaten neath neatherd neatherdess neathmost neatify neatly neatness neb neback Nebaioth Nebalia Nebaliacea nebalian Nebaliidae nebalioid nebbed nebbuck nebbuk nebby nebel nebelist nebenkern Nebiim Nebraskan nebris nebula nebulae nebular nebularization nebularize nebulated nebulation nebule nebulescent nebuliferous nebulite nebulium nebulization nebulize nebulizer nebulose nebulosity nebulous nebulously nebulousness Necator necessar necessarian necessarianism necessarily necessariness necessary necessism necessist necessitarian necessitarianism necessitate necessitatedly necessitatingly necessitation necessitative necessitous necessitously necessitousness necessitude necessity neck neckar neckatee neckband neckcloth necked necker neckercher neckerchief neckful neckguard necking neckinger necklace necklaced necklaceweed neckless necklet necklike neckline neckmold neckpiece neckstock necktie necktieless neckward neckwear neckweed neckyoke necrectomy necremia necrobacillary necrobacillosis necrobiosis necrobiotic necrogenic necrogenous necrographer necrolatry necrologic necrological necrologically necrologist necrologue necrology necromancer necromancing necromancy necromantic necromantically necromorphous necronite necropathy Necrophaga necrophagan necrophagous necrophile necrophilia necrophilic necrophilism necrophilistic necrophilous necrophily necrophobia necrophobic Necrophorus necropoleis necropoles necropolis necropolitan necropsy necroscopic necroscopical necroscopy necrose necrosis necrotic necrotization necrotize necrotomic necrotomist necrotomy necrotype necrotypic Nectandra nectar nectareal nectarean nectared nectareous nectareously nectareousness nectarial nectarian nectaried nectariferous nectarine Nectarinia Nectariniidae nectarious nectarium nectarivorous nectarize nectarlike nectarous nectary nectiferous nectocalycine nectocalyx Nectonema nectophore nectopod Nectria nectriaceous Nectrioidaceae Necturidae Necturus Ned nedder neddy Nederlands nee neebor neebour need needer needfire needful needfully needfulness needgates needham needily neediness needing needle needlebill needlebook needlebush needlecase needled needlefish needleful needlelike needlemaker needlemaking needleman needlemonger needleproof needler needles needless needlessly needlessness needlestone needlewoman needlewood needlework needleworked needleworker needling needly needments needs needsome needy neeger neeld neele neelghan neem neencephalic neencephalon Neengatu neep neepour neer neese neet neetup neeze nef nefandous nefandousness nefarious nefariously nefariousness nefast neffy neftgil negate negatedness negation negationalist negationist negative negatively negativeness negativer negativism negativist negativistic negativity negator negatory negatron neger neginoth neglect neglectable neglectedly neglectedness neglecter neglectful neglectfully neglectfulness neglectingly neglection neglective neglectively neglector neglectproof negligee negligence negligency negligent negligently negligibility negligible negligibleness negligibly negotiability negotiable negotiant negotiate negotiation negotiator negotiatory negotiatress negotiatrix Negress negrillo negrine Negritian Negritic Negritize Negrito Negritoid Negro negro negrodom Negrofy negrohead negrohood Negroid Negroidal negroish Negroism Negroization Negroize negrolike Negroloid Negrophil Negrophile Negrophilism Negrophilist Negrophobe Negrophobia Negrophobiac Negrophobist Negrotic Negundo Negus negus Nehantic Nehemiah nehiloth nei neif neigh neighbor neighbored neighborer neighboress neighborhood neighboring neighborless neighborlike neighborliness neighborly neighborship neighborstained neighbourless neighbourlike neighbourship neigher Neil Neillia neiper Neisseria Neisserieae neist neither Nejd Nejdi Nekkar nekton nektonic Nelken Nell Nellie Nelly nelson nelsonite nelumbian Nelumbium Nelumbo Nelumbonaceae nema nemaline Nemalion Nemalionaceae Nemalionales nemalite Nemastomaceae Nematelmia nematelminth Nematelminthes nemathece nemathecial nemathecium Nemathelmia nemathelminth Nemathelminthes nematic nematoblast nematoblastic Nematocera nematoceran nematocerous nematocide nematocyst nematocystic Nematoda nematode nematodiasis nematogene nematogenic nematogenous nematognath Nematognathi nematognathous nematogone nematogonous nematoid Nematoidea nematoidean nematologist nematology Nematomorpha nematophyton Nematospora nematozooid Nembutal Nemean Nemertea nemertean Nemertina nemertine Nemertinea nemertinean Nemertini nemertoid nemeses Nemesia nemesic Nemesis Nemichthyidae Nemichthys Nemocera nemoceran nemocerous Nemopanthus Nemophila nemophilist nemophilous nemophily nemoral Nemorensian nemoricole Nengahiba nenta nenuphar neo neoacademic neoanthropic Neoarctic neoarsphenamine Neobalaena Neobeckia neoblastic neobotanist neobotany Neocene Neoceratodus neocerotic neoclassic neoclassicism neoclassicist Neocomian neocosmic neocracy neocriticism neocyanine neocyte neocytosis neodamode neodidymium neodymium Neofabraea neofetal neofetus Neofiber neoformation neoformative Neogaea Neogaean neogamous neogamy Neogene neogenesis neogenetic Neognathae neognathic neognathous neogrammarian neogrammatical neographic neohexane Neohipparion neoholmia neoholmium neoimpressionism neoimpressionist neolalia neolater neolatry neolith neolithic neologian neologianism neologic neological neologically neologism neologist neologistic neologistical neologization neologize neology neomedievalism neomenia neomenian Neomeniidae neomiracle neomodal neomorph Neomorpha neomorphic neomorphism Neomylodon neon neonatal neonate neonatus neonomian neonomianism neontology neonychium neopagan neopaganism neopaganize Neopaleozoic neopallial neopallium neoparaffin neophilism neophilological neophilologist neophobia neophobic neophrastic Neophron neophyte neophytic neophytish neophytism Neopieris neoplasia neoplasm neoplasma neoplasmata neoplastic neoplasticism neoplasty Neoplatonic Neoplatonician Neoplatonism Neoplatonist neoprene neorama neorealism Neornithes neornithic Neosalvarsan Neosorex Neosporidia neossin neossology neossoptile neostriatum neostyle neoteinia neoteinic neotenia neotenic neoteny neoteric neoterically neoterism neoterist neoteristic neoterize neothalamus Neotoma Neotragus Neotremata Neotropic Neotropical neotype neovitalism neovolcanic Neowashingtonia neoytterbium neoza Neozoic Nep nep Nepa Nepal Nepalese Nepali Nepenthaceae nepenthaceous nepenthe nepenthean Nepenthes nepenthes neper Neperian Nepeta nephalism nephalist Nephele nephele nepheligenous nepheline nephelinic nephelinite nephelinitic nephelinitoid nephelite Nephelium nephelognosy nepheloid nephelometer nephelometric nephelometrical nephelometrically nephelometry nephelorometer nepheloscope nephesh nephew nephewship Nephila Nephilinae Nephite nephogram nephograph nephological nephologist nephology nephoscope nephradenoma nephralgia nephralgic nephrapostasis nephratonia nephrauxe nephrectasia nephrectasis nephrectomize nephrectomy nephrelcosis nephremia nephremphraxis nephria nephric nephridia nephridial nephridiopore nephridium nephrism nephrite nephritic nephritical nephritis nephroabdominal nephrocardiac nephrocele nephrocoele nephrocolic nephrocolopexy nephrocoloptosis nephrocystitis nephrocystosis nephrocyte nephrodinic Nephrodium nephroerysipelas nephrogastric nephrogenetic nephrogenic nephrogenous nephrogonaduct nephrohydrosis nephrohypertrophy nephroid Nephrolepis nephrolith nephrolithic nephrolithotomy nephrologist nephrology nephrolysin nephrolysis nephrolytic nephromalacia nephromegaly nephromere nephron nephroncus nephroparalysis nephropathic nephropathy nephropexy nephrophthisis nephropore Nephrops Nephropsidae nephroptosia nephroptosis nephropyelitis nephropyeloplasty nephropyosis nephrorrhagia nephrorrhaphy nephros nephrosclerosis nephrosis nephrostoma nephrostome nephrostomial nephrostomous nephrostomy nephrotome nephrotomize nephrotomy nephrotoxic nephrotoxicity nephrotoxin nephrotuberculosis nephrotyphoid nephrotyphus nephrozymosis Nepidae nepionic nepman nepotal nepote nepotic nepotious nepotism nepotist nepotistical nepouite Neptune Neptunean Neptunian neptunism neptunist neptunium Nereid Nereidae nereidiform Nereidiformia Nereis nereite Nereocystis Neri Nerine nerine Nerita neritic Neritidae Neritina neritoid Nerium Neroic Neronian Neronic Neronize nerterology Nerthridae Nerthrus nerval nervate nervation nervature nerve nerveless nervelessly nervelessness nervelet nerveproof nerver nerveroot nervid nerviduct Nervii nervily nervimotion nervimotor nervimuscular nervine nerviness nerving nervish nervism nervomuscular nervosanguineous nervose nervosism nervosity nervous nervously nervousness nervular nervule nervulet nervulose nervuration nervure nervy nescience nescient nese nesh neshly neshness Nesiot nesiote Neskhi Neslia Nesogaea Nesogaean Nesokia Nesonetta Nesotragus Nespelim nesquehonite ness nesslerization Nesslerize nesslerize nest nestable nestage nester nestful nestiatria nestitherapy nestle nestler nestlike nestling Nestor Nestorian Nestorianism Nestorianize Nestorianizer nestorine nesty Net net netball netbraider netbush netcha Netchilik nete neter netful neth netheist nether Netherlander Netherlandian Netherlandic Netherlandish nethermore nethermost netherstock netherstone netherward netherwards Nethinim neti netleaf netlike netmaker netmaking netman netmonger netop netsman netsuke nettable Nettapus netted netter Nettie netting Nettion nettle nettlebed nettlebird nettlefire nettlefish nettlefoot nettlelike nettlemonger nettler nettlesome nettlewort nettling nettly Netty netty netwise network Neudeckian neugroschen neuma neumatic neumatize neume neumic neurad neuradynamia neural neurale neuralgia neuralgiac neuralgic neuralgiform neuralgy neuralist neurapophyseal neurapophysial neurapophysis neurarthropathy neurasthenia neurasthenic neurasthenical neurasthenically neurataxia neurataxy neuration neuratrophia neuratrophic neuratrophy neuraxial neuraxis neuraxon neuraxone neurectasia neurectasis neurectasy neurectome neurectomic neurectomy neurectopia neurectopy neurenteric neurepithelium neurergic neurexairesis neurhypnology neurhypnotist neuriatry neuric neurilema neurilematic neurilemma neurilemmal neurilemmatic neurilemmatous neurilemmitis neurility neurin neurine neurinoma neurism neurite neuritic neuritis neuroanatomical neuroanatomy neurobiotactic neurobiotaxis neuroblast neuroblastic neuroblastoma neurocanal neurocardiac neurocele neurocentral neurocentrum neurochemistry neurochitin neurochondrite neurochord neurochorioretinitis neurocirculatory neurocity neuroclonic neurocoele neurocoelian neurocyte neurocytoma neurodegenerative neurodendrite neurodendron neurodermatitis neurodermatosis neurodermitis neurodiagnosis neurodynamic neurodynia neuroepidermal neuroepithelial neuroepithelium neurofibril neurofibrilla neurofibrillae neurofibrillar neurofibroma neurofibromatosis neurofil neuroganglion neurogastralgia neurogastric neurogenesis neurogenetic neurogenic neurogenous neuroglandular neuroglia neurogliac neuroglial neurogliar neuroglic neuroglioma neurogliosis neurogram neurogrammic neurographic neurography neurohistology neurohumor neurohumoral neurohypnology neurohypnotic neurohypnotism neurohypophysis neuroid neurokeratin neurokyme neurological neurologist neurologize neurology neurolymph neurolysis neurolytic neuroma neuromalacia neuromalakia neuromast neuromastic neuromatosis neuromatous neuromere neuromerism neuromerous neuromimesis neuromimetic neuromotor neuromuscular neuromusculature neuromyelitis neuromyic neuron neuronal neurone neuronic neuronism neuronist neuronophagia neuronophagy neuronym neuronymy neuroparalysis neuroparalytic neuropath neuropathic neuropathical neuropathically neuropathist neuropathological neuropathologist neuropathology neuropathy Neurope neurophagy neurophil neurophile neurophilic neurophysiological neurophysiology neuropile neuroplasm neuroplasmic neuroplasty neuroplexus neuropodial neuropodium neuropodous neuropore neuropsychiatric neuropsychiatrist neuropsychiatry neuropsychic neuropsychological neuropsychologist neuropsychology neuropsychopathic neuropsychopathy neuropsychosis neuropter Neuroptera neuropteran Neuropteris neuropterist neuropteroid Neuropteroidea neuropterological neuropterology neuropteron neuropterous neuroretinitis neurorrhaphy Neurorthoptera neurorthopteran neurorthopterous neurosal neurosarcoma neurosclerosis neuroses neurosis neuroskeletal neuroskeleton neurosome neurospasm neurospongium neurosthenia neurosurgeon neurosurgery neurosurgical neurosuture neurosynapse neurosyphilis neurotendinous neurotension neurotherapeutics neurotherapist neurotherapy neurothlipsis neurotic neurotically neuroticism neuroticize neurotization neurotome neurotomical neurotomist neurotomize neurotomy neurotonic neurotoxia neurotoxic neurotoxin neurotripsy neurotrophic neurotrophy neurotropic neurotropism neurovaccination neurovaccine neurovascular neurovisceral neurula neurypnological neurypnologist neurypnology Neustrian neuter neuterdom neuterlike neuterly neuterness neutral neutralism neutralist neutrality neutralization neutralize neutralizer neutrally neutralness neutrino neutroceptive neutroceptor neutroclusion Neutrodyne neutrologistic neutron neutropassive neutrophile neutrophilia neutrophilic neutrophilous Nevada Nevadan nevadite neve nevel never neverland nevermore nevertheless Neville nevo nevoid Nevome nevoy nevus nevyanskite new Newar Newari newberyite newcal Newcastle newcome newcomer newel newelty newfangle newfangled newfangledism newfangledly newfangledness newfanglement Newfoundland Newfoundlander Newichawanoc newing newings newish newlandite newly newlywed Newmanism Newmanite Newmanize newmarket newness Newport news newsbill newsboard newsboat newsboy newscast newscaster newscasting newsful newsiness newsless newslessness newsletter newsman newsmonger newsmongering newsmongery newspaper newspaperdom newspaperese newspaperish newspaperized newspaperman newspaperwoman newspapery newsprint newsreader newsreel newsroom newssheet newsstand newsteller newsworthiness newsworthy newsy newt newtake newton Newtonian Newtonianism Newtonic Newtonist newtonite nexal next nextly nextness nexum nexus neyanda ngai ngaio ngapi Ngoko Nguyen Nhan Nheengatu ni niacin Niagara Niagaran Niall Niantic Nias Niasese niata nib nibbana nibbed nibber nibble nibbler nibblingly nibby niblick niblike nibong nibs nibsome Nicaean Nicaragua Nicaraguan Nicarao niccolic niccoliferous niccolite niccolous Nice nice niceish niceling nicely Nicene niceness Nicenian Nicenist nicesome nicetish nicety Nichael niche nichelino nicher Nicholas Nici Nick nick nickel nickelage nickelic nickeliferous nickeline nickeling nickelization nickelize nickellike nickelodeon nickelous nickeltype nicker nickerpecker nickey Nickie Nickieben nicking nickle nickname nicknameable nicknamee nicknameless nicknamer Nickneven nickstick nicky Nicobar Nicobarese Nicodemite Nicodemus Nicol Nicolaitan Nicolaitanism Nicolas nicolayite Nicolette Nicolo nicolo Nicomachean nicotia nicotian Nicotiana nicotianin nicotic nicotinamide nicotine nicotinean nicotined nicotineless nicotinian nicotinic nicotinism nicotinize nicotism nicotize nictate nictation nictitant nictitate nictitation nid nidal nidamental nidana nidation nidatory niddering niddick niddle nide nidge nidget nidgety nidi nidicolous nidificant nidificate nidification nidificational nidifugous nidify niding nidologist nidology nidor nidorosity nidorous nidorulent nidulant Nidularia Nidulariaceae nidulariaceous Nidulariales nidulate nidulation nidulus nidus niece nieceless nieceship niellated nielled niellist niello Niels niepa Nierembergia Niersteiner Nietzschean Nietzscheanism Nietzscheism nieve nieveta nievling nife nifesima niffer nific nifle nifling nifty nig Nigel Nigella Nigerian niggard niggardize niggardliness niggardling niggardly niggardness nigger niggerdom niggerfish niggergoose niggerhead niggerish niggerism niggerling niggertoe niggerweed niggery niggle niggler niggling nigglingly niggly nigh nighly nighness night nightcap nightcapped nightcaps nightchurr nightdress nighted nightfall nightfish nightflit nightfowl nightgown nighthawk nightie nightingale nightingalize nightjar nightless nightlessness nightlike nightlong nightly nightman nightmare nightmarish nightmarishly nightmary nights nightshade nightshine nightshirt nightstock nightstool nighttide nighttime nightwalker nightwalking nightward nightwards nightwear nightwork nightworker nignay nignye nigori nigranilin nigraniline nigre nigrescence nigrescent nigresceous nigrescite nigrification nigrified nigrify nigrine Nigritian nigrities nigritude nigritudinous nigrosine nigrous nigua Nihal nihilianism nihilianistic nihilification nihilify nihilism nihilist nihilistic nihilitic nihility nikau Nikeno nikethamide Nikko niklesite Nikolai nil Nile nilgai Nilometer Nilometric Niloscope Nilot Nilotic Nilous nilpotent Nils nim nimb nimbated nimbed nimbi nimbiferous nimbification nimble nimblebrained nimbleness nimbly nimbose nimbosity nimbus nimbused nimiety niminy nimious Nimkish nimmer Nimrod Nimrodian Nimrodic Nimrodical Nimrodize nimshi Nina nincom nincompoop nincompoopery nincompoophood nincompoopish nine ninebark ninefold nineholes ninepegs ninepence ninepenny ninepin ninepins ninescore nineted nineteen nineteenfold nineteenth nineteenthly ninetieth ninety ninetyfold ninetyish ninetyknot Ninevite Ninevitical Ninevitish Ning Ningpo Ninja ninny ninnyhammer ninnyish ninnyism ninnyship ninnywatch Ninon ninon Ninox ninth ninthly nintu ninut niobate Niobe Niobean niobic Niobid Niobite niobite niobium niobous niog niota Nip nip nipa nipcheese niphablepsia niphotyphlosis Nipissing Nipmuc nipper nipperkin nippers nippily nippiness nipping nippingly nippitate nipple nippleless nipplewort Nipponese Nipponism nipponium Nipponize nippy nipter Niquiran nirles nirmanakaya nirvana nirvanic Nisaean Nisan nisei Nishada nishiki nisnas nispero Nisqualli nisse nisus nit nitch nitchevo Nitella nitency nitently niter niterbush nitered nither nithing nitid nitidous nitidulid Nitidulidae nito niton nitramine nitramino nitranilic nitraniline nitrate nitratine nitration nitrator Nitrian nitriary nitric nitridation nitride nitriding nitridization nitridize nitrifaction nitriferous nitrifiable nitrification nitrifier nitrify nitrile Nitriot nitrite nitro nitroalizarin nitroamine nitroaniline Nitrobacter nitrobacteria Nitrobacteriaceae Nitrobacterieae nitrobarite nitrobenzene nitrobenzol nitrobenzole nitrocalcite nitrocellulose nitrocellulosic nitrochloroform nitrocotton nitroform nitrogelatin nitrogen nitrogenate nitrogenation nitrogenic nitrogenization nitrogenize nitrogenous nitroglycerin nitrohydrochloric nitrolamine nitrolic nitrolime nitromagnesite nitrometer nitrometric nitromuriate nitromuriatic nitronaphthalene nitroparaffin nitrophenol nitrophilous nitrophyte nitrophytic nitroprussiate nitroprussic nitroprusside nitrosamine nitrosate nitrosification nitrosify nitrosite nitrosobacteria nitrosochloride Nitrosococcus Nitrosomonas nitrososulphuric nitrostarch nitrosulphate nitrosulphonic nitrosulphuric nitrosyl nitrosylsulphuric nitrotoluene nitrous nitroxyl nitryl nitter nitty nitwit Nitzschia Nitzschiaceae Niuan Niue nival nivation nivellate nivellation nivellator nivellization nivenite niveous nivicolous nivosity nix nixie niyoga Nizam nizam nizamate nizamut nizy njave No no noa Noachian Noachic Noachical Noachite Noah Noahic Noam nob nobber nobbily nobble nobbler nobbut nobby nobiliary nobilify nobilitate nobilitation nobility noble noblehearted nobleheartedly nobleheartedness nobleman noblemanly nobleness noblesse noblewoman nobley nobly nobody nobodyness nobs nocake Nocardia nocardiosis nocent nocerite nociassociation nociceptive nociceptor nociperception nociperceptive nock nocket nocktat noctambulant noctambulation noctambule noctambulism noctambulist noctambulistic noctambulous Nocten noctidial noctidiurnal noctiferous noctiflorous Noctilio Noctilionidae Noctiluca noctiluca noctilucal noctilucan noctilucence noctilucent Noctilucidae noctilucin noctilucine noctilucous noctiluminous noctipotent noctivagant noctivagation noctivagous noctograph noctovision Noctuae noctuid Noctuidae noctuiform noctule nocturia nocturn nocturnal nocturnally nocturne nocuity nocuous nocuously nocuousness nod nodal nodality nodated nodder nodding noddingly noddle noddy node noded nodi nodiak nodical nodicorn nodiferous nodiflorous nodiform Nodosaria nodosarian nodosariform nodosarine nodose nodosity nodous nodular nodulate nodulated nodulation nodule noduled nodulize nodulose nodulous nodulus nodus noegenesis noegenetic Noel noel noematachograph noematachometer noematachometic Noemi Noetic noetic noetics nog nogada Nogai nogal noggen noggin nogging noghead nogheaded nohow Nohuntsik noibwood noil noilage noiler noily noint nointment noir noise noiseful noisefully noiseless noiselessly noiselessness noisemaker noisemaking noiseproof noisette noisily noisiness noisome noisomely noisomeness noisy nokta Nolascan nolition Noll noll nolle nolleity nollepros nolo noma nomad nomadian nomadic nomadical nomadically Nomadidae nomadism nomadization nomadize nomancy nomarch nomarchy Nomarthra nomarthral nombril nome Nomeidae nomenclate nomenclative nomenclator nomenclatorial nomenclatorship nomenclatory nomenclatural nomenclature nomenclaturist Nomeus nomial nomic nomina nominable nominal nominalism nominalist nominalistic nominality nominally nominate nominated nominately nomination nominatival nominative nominatively nominator nominatrix nominature nominee nomineeism nominy nomism nomisma nomismata nomistic nomocanon nomocracy nomogenist nomogenous nomogeny nomogram nomograph nomographer nomographic nomographical nomographically nomography nomological nomologist nomology nomopelmous nomophylax nomophyllous nomos nomotheism nomothete nomothetes nomothetic nomothetical non Nona nonabandonment nonabdication nonabiding nonability nonabjuration nonabjurer nonabolition nonabridgment nonabsentation nonabsolute nonabsolution nonabsorbable nonabsorbent nonabsorptive nonabstainer nonabstaining nonabstemious nonabstention nonabstract nonacademic nonacceding nonacceleration nonaccent nonacceptance nonacceptant nonacceptation nonaccess nonaccession nonaccessory nonaccidental nonaccompaniment nonaccompanying nonaccomplishment nonaccredited nonaccretion nonachievement nonacid nonacknowledgment nonacosane nonacoustic nonacquaintance nonacquiescence nonacquiescent nonacquisitive nonacquittal nonact nonactinic nonaction nonactionable nonactive nonactuality nonaculeate nonacute nonadditive nonadecane nonadherence nonadherent nonadhesion nonadhesive nonadjacent nonadjectival nonadjournment nonadjustable nonadjustive nonadjustment nonadministrative nonadmiring nonadmission nonadmitted nonadoption Nonadorantes nonadornment nonadult nonadvancement nonadvantageous nonadventitious nonadventurous nonadverbial nonadvertence nonadvertency nonadvocate nonaerating nonaerobiotic nonaesthetic nonaffection nonaffiliated nonaffirmation nonage nonagenarian nonagency nonagent nonagesimal nonagglutinative nonagglutinator nonaggression nonaggressive nonagon nonagrarian nonagreement nonagricultural nonahydrate nonaid nonair nonalarmist nonalcohol nonalcoholic nonalgebraic nonalienating nonalienation nonalignment nonalkaloidal nonallegation nonallegorical nonalliterated nonalliterative nonallotment nonalluvial nonalphabetic nonaltruistic nonaluminous nonamalgamable nonamendable nonamino nonamotion nonamphibious nonamputation nonanalogy nonanalytical nonanalyzable nonanalyzed nonanaphoric nonanaphthene nonanatomical nonancestral nonane nonanesthetized nonangelic nonangling nonanimal nonannexation nonannouncement nonannuitant nonannulment nonanoic nonanonymity nonanswer nonantagonistic nonanticipative nonantigenic nonapologetic nonapostatizing nonapostolic nonapparent nonappealable nonappearance nonappearer nonappearing nonappellate nonappendicular nonapplication nonapply nonappointment nonapportionable nonapposable nonappraisal nonappreciation nonapprehension nonappropriation nonapproval nonaqueous nonarbitrable nonarcing nonargentiferous nonaristocratic nonarithmetical nonarmament nonarmigerous nonaromatic nonarraignment nonarrival nonarsenical nonarterial nonartesian nonarticulated nonarticulation nonartistic nonary nonascendancy nonascertainable nonascertaining nonascetic nonascription nonaseptic nonaspersion nonasphalt nonaspirate nonaspiring nonassault nonassent nonassentation nonassented nonassenting nonassertion nonassertive nonassessable nonassessment nonassignable nonassignment nonassimilable nonassimilating nonassimilation nonassistance nonassistive nonassociable nonassortment nonassurance nonasthmatic nonastronomical nonathletic nonatmospheric nonatonement nonattached nonattachment nonattainment nonattendance nonattendant nonattention nonattestation nonattribution nonattributive nonaugmentative nonauricular nonauriferous nonauthentication nonauthoritative nonautomatic nonautomotive nonavoidance nonaxiomatic nonazotized nonbachelor nonbacterial nonbailable nonballoting nonbanishment nonbankable nonbarbarous nonbaronial nonbase nonbasement nonbasic nonbasing nonbathing nonbearded nonbearing nonbeing nonbeliever nonbelieving nonbelligerent nonbending nonbenevolent nonbetrayal nonbeverage nonbilabiate nonbilious nonbinomial nonbiological nonbitter nonbituminous nonblack nonblameless nonbleeding nonblended nonblockaded nonblocking nonblooded nonblooming nonbodily nonbookish nonborrower nonbotanical nonbourgeois nonbranded nonbreakable nonbreeder nonbreeding nonbroodiness nonbroody nonbrowsing nonbudding nonbulbous nonbulkhead nonbureaucratic nonburgage nonburgess nonburnable nonburning nonbursting nonbusiness nonbuying noncabinet noncaffeine noncaking Noncalcarea noncalcareous noncalcified noncallability noncallable noncancellable noncannibalistic noncanonical noncanonization noncanvassing noncapillarity noncapillary noncapital noncapitalist noncapitalistic noncapitulation noncapsizable noncapture noncarbonate noncareer noncarnivorous noncarrier noncartelized noncaste noncastigation noncataloguer noncatarrhal noncatechizable noncategorical noncathedral noncatholicity noncausality noncausation nonce noncelebration noncelestial noncellular noncellulosic noncensored noncensorious noncensus noncentral noncereal noncerebral nonceremonial noncertain noncertainty noncertified nonchafing nonchalance nonchalant nonchalantly nonchalantness nonchalky nonchallenger nonchampion nonchangeable nonchanging noncharacteristic nonchargeable nonchastisement nonchastity nonchemical nonchemist nonchivalrous nonchokable nonchokebore nonchronological nonchurch nonchurched nonchurchgoer nonciliate noncircuit noncircuital noncircular noncirculation noncitation noncitizen noncivilized nonclaim nonclaimable nonclassable nonclassical nonclassifiable nonclassification nonclastic nonclearance noncleistogamic nonclergyable nonclerical nonclimbable nonclinical nonclose nonclosure nonclotting noncoagulability noncoagulable noncoagulation noncoalescing noncock noncoercion noncoercive noncognate noncognition noncognitive noncognizable noncognizance noncoherent noncohesion noncohesive noncoinage noncoincidence noncoincident noncoincidental noncoking noncollaboration noncollaborative noncollapsible noncollectable noncollection noncollegiate noncollinear noncolloid noncollusion noncollusive noncolonial noncoloring noncom noncombat noncombatant noncombination noncombining noncombustible noncombustion noncome noncoming noncommemoration noncommencement noncommendable noncommensurable noncommercial noncommissioned noncommittal noncommittalism noncommittally noncommittalness noncommonable noncommorancy noncommunal noncommunicable noncommunicant noncommunicating noncommunication noncommunion noncommunist noncommunistic noncommutative noncompearance noncompensating noncompensation noncompetency noncompetent noncompeting noncompetitive noncompetitively noncomplaisance noncompletion noncompliance noncomplicity noncomplying noncomposite noncompoundable noncompounder noncomprehension noncompressible noncompression noncompulsion noncomputation noncon nonconcealment nonconceiving nonconcentration nonconception nonconcern nonconcession nonconciliating nonconcludency nonconcludent nonconcluding nonconclusion nonconcordant nonconcur nonconcurrence nonconcurrency nonconcurrent noncondensable noncondensation noncondensible noncondensing noncondimental nonconditioned noncondonation nonconducive nonconductibility nonconductible nonconducting nonconduction nonconductive nonconductor nonconfederate nonconferrable nonconfession nonconficient nonconfident nonconfidential nonconfinement nonconfirmation nonconfirmative nonconfiscable nonconfiscation nonconfitent nonconflicting nonconform nonconformable nonconformably nonconformance nonconformer nonconforming nonconformism nonconformist nonconformistical nonconformistically nonconformitant nonconformity nonconfutation noncongealing noncongenital noncongestion noncongratulatory noncongruent nonconjectural nonconjugal nonconjugate nonconjunction nonconnection nonconnective nonconnivance nonconnotative nonconnubial nonconscientious nonconscious nonconscription nonconsecration nonconsecutive nonconsent nonconsenting nonconsequence nonconsequent nonconservation nonconservative nonconserving nonconsideration nonconsignment nonconsistorial nonconsoling nonconsonant nonconsorting nonconspirator nonconspiring nonconstituent nonconstitutional nonconstraint nonconstruable nonconstruction nonconstructive nonconsular nonconsultative nonconsumable nonconsumption noncontact noncontagion noncontagionist noncontagious noncontagiousness noncontamination noncontemplative noncontending noncontent noncontention noncontentious noncontentiously nonconterminous noncontiguity noncontiguous noncontinental noncontingent noncontinuance noncontinuation noncontinuous noncontraband noncontraction noncontradiction noncontradictory noncontributing noncontribution noncontributor noncontributory noncontrivance noncontrolled noncontrolling noncontroversial nonconvective nonconvenable nonconventional nonconvergent nonconversable nonconversant nonconversational nonconversion nonconvertible nonconveyance nonconviction nonconvivial noncoplanar noncopying noncoring noncorporate noncorporeality noncorpuscular noncorrection noncorrective noncorrelation noncorrespondence noncorrespondent noncorresponding noncorroboration noncorroborative noncorrodible noncorroding noncorrosive noncorruption noncortical noncosmic noncosmopolitism noncostraight noncottager noncotyledonous noncounty noncranking noncreation noncreative noncredence noncredent noncredibility noncredible noncreditor noncreeping noncrenate noncretaceous noncriminal noncriminality noncrinoid noncritical noncrucial noncruciform noncrusading noncrushability noncrushable noncrustaceous noncrystalline noncrystallizable noncrystallized noncrystallizing nonculmination nonculpable noncultivated noncultivation nonculture noncumulative noncurantist noncurling noncurrency noncurrent noncursive noncurtailment noncuspidate noncustomary noncutting noncyclic noncyclical nonda nondamageable nondamnation nondancer nondangerous nondatival nondealer nondebtor nondecadence nondecadent nondecalcified nondecane nondecasyllabic nondecatoic nondecaying nondeceivable nondeception nondeceptive Nondeciduata nondeciduate nondeciduous nondecision nondeclarant nondeclaration nondeclarer nondecomposition nondecoration nondedication nondeduction nondefalcation nondefamatory nondefaulting nondefection nondefendant nondefense nondefensive nondeference nondeferential nondefiance nondefilement nondefining nondefinition nondefinitive nondeforestation nondegenerate nondegeneration nondegerming nondegradation nondegreased nondehiscent nondeist nondelegable nondelegate nondelegation nondeleterious nondeliberate nondeliberation nondelineation nondeliquescent nondelirious nondeliverance nondelivery nondemand nondemise nondemobilization nondemocratic nondemonstration nondendroid nondenial nondenominational nondenominationalism nondense nondenumerable nondenunciation nondepartmental nondeparture nondependence nondependent nondepletion nondeportation nondeported nondeposition nondepositor nondepravity nondepreciating nondepressed nondepression nondeprivable nonderivable nonderivative nonderogatory nondescript nondesecration nondesignate nondesigned nondesire nondesirous nondesisting nondespotic nondesquamative nondestructive nondesulphurized nondetachable nondetailed nondetention nondetermination nondeterminist nondeterrent nondetest nondetonating nondetrimental nondevelopable nondevelopment nondeviation nondevotional nondexterous nondiabetic nondiabolic nondiagnosis nondiagonal nondiagrammatic nondialectal nondialectical nondialyzing nondiametral nondiastatic nondiathermanous nondiazotizable nondichogamous nondichogamy nondichotomous nondictation nondictatorial nondictionary nondidactic nondieting nondifferentation nondifferentiable nondiffractive nondiffusing nondigestion nondilatable nondilution nondiocesan nondiphtheritic nondiphthongal nondiplomatic nondipterous nondirection nondirectional nondisagreement nondisappearing nondisarmament nondisbursed nondiscernment nondischarging nondisciplinary nondisclaim nondisclosure nondiscontinuance nondiscordant nondiscountable nondiscovery nondiscretionary nondiscrimination nondiscriminatory nondiscussion nondisestablishment nondisfigurement nondisfranchised nondisingenuous nondisintegration nondisinterested nondisjunct nondisjunction nondisjunctional nondisjunctive nondismemberment nondismissal nondisparaging nondisparate nondispensation nondispersal nondispersion nondisposal nondisqualifying nondissenting nondissolution nondistant nondistinctive nondistortion nondistribution nondistributive nondisturbance nondivergence nondivergent nondiversification nondivinity nondivisible nondivisiblity nondivision nondivisional nondivorce nondo nondoctrinal nondocumentary nondogmatic nondoing nondomestic nondomesticated nondominant nondonation nondramatic nondrinking nondropsical nondrying nonduality nondumping nonduplication nondutiable nondynastic nondyspeptic none nonearning noneastern noneatable nonecclesiastical nonechoic noneclectic noneclipsing nonecompense noneconomic nonedible noneditor noneditorial noneducable noneducation noneducational noneffective noneffervescent noneffete nonefficacious nonefficacy nonefficiency nonefficient noneffusion nonego nonegoistical nonejection nonelastic nonelasticity nonelect nonelection nonelective nonelector nonelectric nonelectrical nonelectrification nonelectrified nonelectrized nonelectrocution nonelectrolyte noneleemosynary nonelemental nonelementary nonelimination nonelopement nonemanating nonemancipation nonembarkation nonembellishment nonembezzlement nonembryonic nonemendation nonemergent nonemigration nonemission nonemotional nonemphatic nonemphatical nonempirical nonemploying nonemployment nonemulative nonenactment nonenclosure nonencroachment nonencyclopedic nonendemic nonendorsement nonenduring nonene nonenemy nonenergic nonenforceability nonenforceable nonenforcement nonengagement nonengineering nonenrolled nonent nonentailed nonenteric nonentertainment nonentitative nonentitive nonentitize nonentity nonentityism nonentomological nonentrant nonentres nonentry nonenumerated nonenunciation nonenvious nonenzymic nonephemeral nonepic nonepicurean nonepileptic nonepiscopal nonepiscopalian nonepithelial nonepochal nonequal nonequation nonequatorial nonequestrian nonequilateral nonequilibrium nonequivalent nonequivocating nonerasure nonerecting nonerection nonerotic nonerroneous nonerudite noneruption nones nonescape nonespionage nonespousal nonessential nonesthetic nonesuch nonet noneternal noneternity nonetheless nonethereal nonethical nonethnological nonethyl noneugenic noneuphonious nonevacuation nonevanescent nonevangelical nonevaporation nonevasion nonevasive noneviction nonevident nonevidential nonevil nonevolutionary nonevolutionist nonevolving nonexaction nonexaggeration nonexamination nonexcavation nonexcepted nonexcerptible nonexcessive nonexchangeability nonexchangeable nonexciting nonexclamatory nonexclusion nonexclusive nonexcommunicable nonexculpation nonexcusable nonexecution nonexecutive nonexemplary nonexemplificatior nonexempt nonexercise nonexertion nonexhibition nonexistence nonexistent nonexistential nonexisting nonexoneration nonexotic nonexpansion nonexpansive nonexpansively nonexpectation nonexpendable nonexperience nonexperienced nonexperimental nonexpert nonexpiation nonexpiry nonexploitation nonexplosive nonexportable nonexportation nonexposure nonexpulsion nonextant nonextempore nonextended nonextensile nonextension nonextensional nonextensive nonextenuatory nonexteriority nonextermination nonexternal nonexternality nonextinction nonextortion nonextracted nonextraction nonextraditable nonextradition nonextraneous nonextreme nonextrication nonextrinsic nonexuding nonexultation nonfabulous nonfacetious nonfacial nonfacility nonfacing nonfact nonfactious nonfactory nonfactual nonfacultative nonfaculty nonfaddist nonfading nonfailure nonfalse nonfamily nonfamous nonfanatical nonfanciful nonfarm nonfastidious nonfat nonfatal nonfatalistic nonfatty nonfavorite nonfeasance nonfeasor nonfeatured nonfebrile nonfederal nonfederated nonfeldspathic nonfelonious nonfelony nonfenestrated nonfermentability nonfermentable nonfermentation nonfermentative nonferrous nonfertile nonfertility nonfestive nonfeudal nonfibrous nonfiction nonfictional nonfiduciary nonfighter nonfigurative nonfilamentous nonfimbriate nonfinancial nonfinding nonfinishing nonfinite nonfireproof nonfiscal nonfisherman nonfissile nonfixation nonflaky nonflammable nonfloatation nonfloating nonfloriferous nonflowering nonflowing nonfluctuating nonfluid nonfluorescent nonflying nonfocal nonfood nonforeclosure nonforeign nonforeknowledge nonforest nonforested nonforfeitable nonforfeiting nonforfeiture nonform nonformal nonformation nonformulation nonfortification nonfortuitous nonfossiliferous nonfouling nonfrat nonfraternity nonfrauder nonfraudulent nonfreedom nonfreeman nonfreezable nonfreeze nonfreezing nonfricative nonfriction nonfrosted nonfruition nonfrustration nonfulfillment nonfunctional nonfundable nonfundamental nonfungible nonfuroid nonfusion nonfuturition nonfuturity nongalactic nongalvanized nonganglionic nongas nongaseous nongassy nongelatinizing nongelatinous nongenealogical nongenerative nongenetic nongentile nongeographical nongeological nongeometrical nongermination nongerundial nongildsman nongipsy nonglacial nonglandered nonglandular nonglare nonglucose nonglucosidal nonglucosidic nongod nongold nongolfer nongospel nongovernmental nongraduate nongraduated nongraduation nongrain nongranular nongraphitic nongrass nongratuitous nongravitation nongravity nongray nongreasy nongreen nongregarious nongremial nongrey nongrooming nonguarantee nonguard nonguttural nongymnast nongypsy nonhabitable nonhabitual nonhalation nonhallucination nonhandicap nonhardenable nonharmonic nonharmonious nonhazardous nonheading nonhearer nonheathen nonhedonistic nonhepatic nonhereditarily nonhereditary nonheritable nonheritor nonhero nonhieratic nonhistoric nonhistorical nonhomaloidal nonhomogeneity nonhomogeneous nonhomogenous nonhostile nonhouseholder nonhousekeeping nonhuman nonhumanist nonhumorous nonhumus nonhunting nonhydrogenous nonhydrolyzable nonhygrometric nonhygroscopic nonhypostatic nonic noniconoclastic nonideal nonidealist nonidentical nonidentity nonidiomatic nonidolatrous nonidyllic nonignitible nonignominious nonignorant nonillion nonillionth nonillumination nonillustration nonimaginary nonimbricating nonimitative nonimmateriality nonimmersion nonimmigrant nonimmigration nonimmune nonimmunity nonimmunized nonimpact nonimpairment nonimpartment nonimpatience nonimpeachment nonimperative nonimperial nonimplement nonimportation nonimporting nonimposition nonimpregnated nonimpressionist nonimprovement nonimputation nonincandescent nonincarnated nonincitement noninclination noninclusion noninclusive nonincrease nonincreasing nonincrusting nonindependent nonindictable nonindictment nonindividual nonindividualistic noninductive noninductively noninductivity nonindurated nonindustrial noninfallibilist noninfallible noninfantry noninfected noninfection noninfectious noninfinite noninfinitely noninflammability noninflammable noninflammatory noninflectional noninfluence noninformative noninfraction noninhabitant noninheritable noninherited noninitial noninjurious noninjury noninoculation noninquiring noninsect noninsertion noninstitution noninstruction noninstructional noninstructress noninstrumental noninsurance nonintegrable nonintegrity nonintellectual nonintelligence nonintelligent nonintent nonintention noninterchangeability noninterchangeable nonintercourse noninterference noninterferer noninterfering nonintermittent noninternational noninterpolation noninterposition noninterrupted nonintersecting nonintersector nonintervention noninterventionalist noninterventionist nonintoxicant nonintoxicating nonintrospective nonintrospectively nonintrusion nonintrusionism nonintrusionist nonintuitive noninverted noninvidious noninvincibility noniodized nonion nonionized nonionizing nonirate nonirradiated nonirrational nonirreparable nonirrevocable nonirrigable nonirrigated nonirrigating nonirrigation nonirritable nonirritant nonirritating nonisobaric nonisotropic nonissuable nonius nonjoinder nonjudicial nonjurable nonjurant nonjuress nonjuring nonjurist nonjuristic nonjuror nonjurorism nonjury nonjurying nonknowledge nonkosher nonlabeling nonlactescent nonlaminated nonlanguage nonlaying nonleaded nonleaking nonlegal nonlegato nonlegume nonlepidopterous nonleprous nonlevel nonlevulose nonliability nonliable nonliberation nonlicensed nonlicentiate nonlicet nonlicking nonlife nonlimitation nonlimiting nonlinear nonlipoidal nonliquefying nonliquid nonliquidating nonliquidation nonlister nonlisting nonliterary nonlitigious nonliturgical nonliving nonlixiviated nonlocal nonlocalized nonlogical nonlosable nonloser nonlover nonloving nonloxodromic nonluminescent nonluminosity nonluminous nonluster nonlustrous nonly nonmagnetic nonmagnetizable nonmaintenance nonmajority nonmalarious nonmalicious nonmalignant nonmalleable nonmammalian nonmandatory nonmanifest nonmanifestation nonmanila nonmannite nonmanual nonmanufacture nonmanufactured nonmanufacturing nonmarine nonmarital nonmaritime nonmarket nonmarriage nonmarriageable nonmarrying nonmartial nonmastery nonmaterial nonmaterialistic nonmateriality nonmaternal nonmathematical nonmathematician nonmatrimonial nonmatter nonmechanical nonmechanistic nonmedical nonmedicinal nonmedullated nonmelodious nonmember nonmembership nonmenial nonmental nonmercantile nonmetal nonmetallic nonmetalliferous nonmetallurgical nonmetamorphic nonmetaphysical nonmeteoric nonmeteorological nonmetric nonmetrical nonmetropolitan nonmicrobic nonmicroscopical nonmigratory nonmilitant nonmilitary nonmillionaire nonmimetic nonmineral nonmineralogical nonminimal nonministerial nonministration nonmiraculous nonmischievous nonmiscible nonmissionary nonmobile nonmodal nonmodern nonmolar nonmolecular nonmomentary nonmonarchical nonmonarchist nonmonastic nonmonist nonmonogamous nonmonotheistic nonmorainic nonmoral nonmorality nonmortal nonmotile nonmotoring nonmotorist nonmountainous nonmucilaginous nonmucous nonmulched nonmultiple nonmunicipal nonmuscular nonmusical nonmussable nonmutationally nonmutative nonmutual nonmystical nonmythical nonmythological nonnant nonnarcotic nonnasal nonnat nonnational nonnative nonnatural nonnaturalism nonnaturalistic nonnaturality nonnaturalness nonnautical nonnaval nonnavigable nonnavigation nonnebular nonnecessary nonnecessity nonnegligible nonnegotiable nonnegotiation nonnephritic nonnervous nonnescience nonnescient nonneutral nonneutrality nonnitrogenized nonnitrogenous nonnoble nonnomination nonnotification nonnotional nonnucleated nonnumeral nonnutrient nonnutritious nonnutritive nonobedience nonobedient nonobjection nonobjective nonobligatory nonobservable nonobservance nonobservant nonobservation nonobstetrical nonobstructive nonobvious nonoccidental nonocculting nonoccupant nonoccupation nonoccupational nonoccurrence nonodorous nonoecumenic nonoffender nonoffensive nonofficeholding nonofficial nonofficially nonofficinal nonoic nonoily nonolfactory nonomad nononerous nonopacity nonopening nonoperating nonoperative nonopposition nonoppressive nonoptical nonoptimistic nonoptional nonorchestral nonordination nonorganic nonorganization nonoriental nonoriginal nonornamental nonorthodox nonorthographical nonoscine nonostentation nonoutlawry nonoutrage nonoverhead nonoverlapping nonowner nonoxidating nonoxidizable nonoxidizing nonoxygenated nonoxygenous nonpacific nonpacification nonpacifist nonpagan nonpaid nonpainter nonpalatal nonpapal nonpapist nonpar nonparallel nonparalytic nonparasitic nonparasitism nonpareil nonparent nonparental nonpariello nonparishioner nonparliamentary nonparlor nonparochial nonparous nonpartial nonpartiality nonparticipant nonparticipating nonparticipation nonpartisan nonpartisanship nonpartner nonparty nonpassenger nonpasserine nonpastoral nonpatentable nonpatented nonpaternal nonpathogenic nonpause nonpaying nonpayment nonpeak nonpeaked nonpearlitic nonpecuniary nonpedestrian nonpedigree nonpelagic nonpeltast nonpenal nonpenalized nonpending nonpensionable nonpensioner nonperception nonperceptual nonperfection nonperforated nonperforating nonperformance nonperformer nonperforming nonperiodic nonperiodical nonperishable nonperishing nonperjury nonpermanent nonpermeability nonpermeable nonpermissible nonpermission nonperpendicular nonperpetual nonperpetuity nonpersecution nonperseverance nonpersistence nonpersistent nonperson nonpersonal nonpersonification nonpertinent nonperversive nonphagocytic nonpharmaceutical nonphenolic nonphenomenal nonphilanthropic nonphilological nonphilosophical nonphilosophy nonphonetic nonphosphatic nonphosphorized nonphotobiotic nonphysical nonphysiological nonpickable nonpigmented nonplacental nonplacet nonplanar nonplane nonplanetary nonplantowning nonplastic nonplate nonplausible nonpleading nonplus nonplusation nonplushed nonplutocratic nonpoet nonpoetic nonpoisonous nonpolar nonpolarizable nonpolarizing nonpolitical nonponderosity nonponderous nonpopery nonpopular nonpopularity nonporous nonporphyritic nonport nonportability nonportable nonportrayal nonpositive nonpossession nonposthumous nonpostponement nonpotential nonpower nonpractical nonpractice nonpraedial nonpreaching nonprecious nonprecipitation nonpredatory nonpredestination nonpredicative nonpredictable nonpreference nonpreferential nonpreformed nonpregnant nonprehensile nonprejudicial nonprelatical nonpremium nonpreparation nonprepayment nonprepositional nonpresbyter nonprescribed nonprescriptive nonpresence nonpresentation nonpreservation nonpresidential nonpress nonpressure nonprevalence nonprevalent nonpriestly nonprimitive nonprincipiate nonprincipled nonprobable nonprocreation nonprocurement nonproducer nonproducing nonproduction nonproductive nonproductively nonproductiveness nonprofane nonprofessed nonprofession nonprofessional nonprofessionalism nonprofessorial nonproficience nonproficiency nonproficient nonprofit nonprofiteering nonprognostication nonprogressive nonprohibitable nonprohibition nonprohibitive nonprojection nonprojective nonprojectively nonproletarian nonproliferous nonprolific nonprolongation nonpromiscuous nonpromissory nonpromotion nonpromulgation nonpronunciation nonpropagandistic nonpropagation nonprophetic nonpropitiation nonproportional nonproprietary nonproprietor nonprorogation nonproscriptive nonprosecution nonprospect nonprotection nonprotective nonproteid nonprotein nonprotestation nonprotractile nonprotractility nonproven nonprovided nonprovidential nonprovocation nonpsychic nonpsychological nonpublic nonpublication nonpublicity nonpueblo nonpulmonary nonpulsating nonpumpable nonpunctual nonpunctuation nonpuncturable nonpunishable nonpunishing nonpunishment nonpurchase nonpurchaser nonpurgative nonpurification nonpurposive nonpursuit nonpurulent nonpurveyance nonputrescent nonputrescible nonputting nonpyogenic nonpyritiferous nonqualification nonquality nonquota nonracial nonradiable nonradiating nonradical nonrailroader nonranging nonratability nonratable nonrated nonratifying nonrational nonrationalist nonrationalized nonrayed nonreaction nonreactive nonreactor nonreader nonreading nonrealistic nonreality nonrealization nonreasonable nonreasoner nonrebel nonrebellious nonreceipt nonreceiving nonrecent nonreception nonrecess nonrecipient nonreciprocal nonreciprocating nonreciprocity nonrecital nonreclamation nonrecluse nonrecognition nonrecognized nonrecoil nonrecollection nonrecommendation nonreconciliation nonrecourse nonrecoverable nonrecovery nonrectangular nonrectified nonrecuperation nonrecurrent nonrecurring nonredemption nonredressing nonreducing nonreference nonrefillable nonreflector nonreformation nonrefraction nonrefrigerant nonrefueling nonrefutation nonregardance nonregarding nonregenerating nonregenerative nonregent nonregimented nonregistered nonregistrability nonregistrable nonregistration nonregression nonregulation nonrehabilitation nonreigning nonreimbursement nonreinforcement nonreinstatement nonrejection nonrejoinder nonrelapsed nonrelation nonrelative nonrelaxation nonrelease nonreliance nonreligion nonreligious nonreligiousness nonrelinquishment nonremanie nonremedy nonremembrance nonremission nonremonstrance nonremuneration nonremunerative nonrendition nonrenewable nonrenewal nonrenouncing nonrenunciation nonrepair nonreparation nonrepayable nonrepealing nonrepeat nonrepeater nonrepentance nonrepetition nonreplacement nonreplicate nonreportable nonreprehensible nonrepresentation nonrepresentational nonrepresentationalism nonrepresentative nonrepression nonreprisal nonreproduction nonreproductive nonrepublican nonrepudiation nonrequirement nonrequisition nonrequital nonrescue nonresemblance nonreservation nonreserve nonresidence nonresidency nonresident nonresidental nonresidenter nonresidential nonresidentiary nonresidentor nonresidual nonresignation nonresinifiable nonresistance nonresistant nonresisting nonresistive nonresolvability nonresolvable nonresonant nonrespectable nonrespirable nonresponsibility nonrestitution nonrestraint nonrestricted nonrestriction nonrestrictive nonresumption nonresurrection nonresuscitation nonretaliation nonretention nonretentive nonreticence nonretinal nonretirement nonretiring nonretraceable nonretractation nonretractile nonretraction nonretrenchment nonretroactive nonreturn nonreturnable nonrevaluation nonrevealing nonrevelation nonrevenge nonrevenue nonreverse nonreversed nonreversible nonreversing nonreversion nonrevertible nonreviewable nonrevision nonrevival nonrevocation nonrevolting nonrevolutionary nonrevolving nonrhetorical nonrhymed nonrhyming nonrhythmic nonriding nonrigid nonrioter nonriparian nonritualistic nonrival nonromantic nonrotatable nonrotating nonrotative nonround nonroutine nonroyal nonroyalist nonrubber nonruminant Nonruminantia nonrun nonrupture nonrural nonrustable nonsabbatic nonsaccharine nonsacerdotal nonsacramental nonsacred nonsacrifice nonsacrificial nonsailor nonsalable nonsalaried nonsale nonsaline nonsalutary nonsalutation nonsalvation nonsanctification nonsanction nonsanctity nonsane nonsanguine nonsanity nonsaponifiable nonsatisfaction nonsaturated nonsaturation nonsaving nonsawing nonscalding nonscaling nonscandalous nonschematized nonschismatic nonscholastic nonscience nonscientific nonscientist nonscoring nonscraping nonscriptural nonscripturalist nonscrutiny nonseasonal nonsecession nonseclusion nonsecrecy nonsecret nonsecretarial nonsecretion nonsecretive nonsecretory nonsectarian nonsectional nonsectorial nonsecular nonsecurity nonsedentary nonseditious nonsegmented nonsegregation nonseizure nonselected nonselection nonselective nonself nonselfregarding nonselling nonsenatorial nonsense nonsensible nonsensical nonsensicality nonsensically nonsensicalness nonsensification nonsensify nonsensitive nonsensitiveness nonsensitized nonsensorial nonsensuous nonsentence nonsentient nonseparation nonseptate nonseptic nonsequacious nonsequaciousness nonsequestration nonserial nonserif nonserious nonserous nonserviential nonservile nonsetter nonsetting nonsettlement nonsexual nonsexually nonshaft nonsharing nonshatter nonshedder nonshipper nonshipping nonshredding nonshrinkable nonshrinking nonsiccative nonsidereal nonsignatory nonsignature nonsignificance nonsignificant nonsignification nonsignificative nonsilicated nonsiliceous nonsilver nonsimplification nonsine nonsinging nonsingular nonsinkable nonsinusoidal nonsiphonage nonsister nonsitter nonsitting nonskeptical nonskid nonskidding nonskipping nonslaveholding nonslip nonslippery nonslipping nonsludging nonsmoker nonsmoking nonsmutting nonsocial nonsocialist nonsocialistic nonsociety nonsociological nonsolar nonsoldier nonsolicitation nonsolid nonsolidified nonsolution nonsolvency nonsolvent nonsonant nonsovereign nonspalling nonsparing nonsparking nonspeaker nonspeaking nonspecial nonspecialist nonspecialized nonspecie nonspecific nonspecification nonspecificity nonspecified nonspectacular nonspectral nonspeculation nonspeculative nonspherical nonspill nonspillable nonspinning nonspinose nonspiny nonspiral nonspirit nonspiritual nonspirituous nonspontaneous nonspored nonsporeformer nonsporeforming nonsporting nonspottable nonsprouting nonstainable nonstaining nonstampable nonstandard nonstandardized nonstanzaic nonstaple nonstarch nonstarter nonstarting nonstatement nonstatic nonstationary nonstatistical nonstatutory nonstellar nonsticky nonstimulant nonstipulation nonstock nonstooping nonstop nonstrategic nonstress nonstretchable nonstretchy nonstriated nonstriker nonstriking nonstriped nonstructural nonstudent nonstudious nonstylized nonsubject nonsubjective nonsubmission nonsubmissive nonsubordination nonsubscriber nonsubscribing nonsubscription nonsubsiding nonsubsidy nonsubsistence nonsubstantial nonsubstantialism nonsubstantialist nonsubstantiality nonsubstantiation nonsubstantive nonsubstitution nonsubtraction nonsuccess nonsuccessful nonsuccession nonsuccessive nonsuccour nonsuction nonsuctorial nonsufferance nonsuffrage nonsugar nonsuggestion nonsuit nonsulphurous nonsummons nonsupplication nonsupport nonsupporter nonsupporting nonsuppositional nonsuppressed nonsuppression nonsuppurative nonsurface nonsurgical nonsurrender nonsurvival nonsurvivor nonsuspect nonsustaining nonsustenance nonswearer nonswearing nonsweating nonswimmer nonswimming nonsyllabic nonsyllabicness nonsyllogistic nonsyllogizing nonsymbiotic nonsymbiotically nonsymbolic nonsymmetrical nonsympathetic nonsympathizer nonsympathy nonsymphonic nonsymptomatic nonsynchronous nonsyndicate nonsynodic nonsynonymous nonsyntactic nonsyntactical nonsynthesized nonsyntonic nonsystematic nontabular nontactical nontan nontangential nontannic nontannin nontariff nontarnishable nontarnishing nontautomeric nontautomerizable nontax nontaxability nontaxable nontaxonomic nonteachable nonteacher nonteaching nontechnical nontechnological nonteetotaler nontelegraphic nonteleological nontelephonic nontemporal nontemporizing nontenant nontenure nontenurial nonterm nonterminating nonterrestrial nonterritorial nonterritoriality nontestamentary nontextual nontheatrical nontheistic nonthematic nontheological nontheosophical nontherapeutic nonthinker nonthinking nonthoracic nonthoroughfare nonthreaded nontidal nontillable nontimbered nontitaniferous nontitular nontolerated nontopographical nontourist nontoxic nontraction nontrade nontrader nontrading nontraditional nontragic nontrailing nontransferability nontransferable nontransgression nontransient nontransitional nontranslocation nontransmission nontransparency nontransparent nontransportation nontransposing nontransposition nontraveler nontraveling nontreasonable nontreated nontreatment nontreaty nontrespass nontrial nontribal nontribesman nontributary nontrier nontrigonometrical nontronite nontropical nontrunked nontruth nontuberculous nontuned nonturbinated nontutorial nontyphoidal nontypical nontypicalness nontypographical nontyrannical nonubiquitous nonulcerous nonultrafilterable nonumbilical nonumbilicate nonumbrellaed nonunanimous nonuncial nonundergraduate nonunderstandable nonunderstanding nonunderstandingly nonunderstood nonundulatory nonuniform nonuniformist nonuniformitarian nonuniformity nonuniformly nonunion nonunionism nonunionist nonunique nonunison nonunited nonuniversal nonuniversity nonupholstered nonuple nonuplet nonupright nonurban nonurgent nonusage nonuse nonuser nonusing nonusurping nonuterine nonutile nonutilitarian nonutility nonutilized nonutterance nonvacant nonvaccination nonvacuous nonvaginal nonvalent nonvalidity nonvaluation nonvalve nonvanishing nonvariable nonvariant nonvariation nonvascular nonvassal nonvegetative nonvenereal nonvenomous nonvenous nonventilation nonverbal nonverdict nonverminous nonvernacular nonvertebral nonvertical nonvertically nonvesicular nonvesting nonvesture nonveteran nonveterinary nonviable nonvibratile nonvibration nonvibrator nonvibratory nonvicarious nonvictory nonvillager nonvillainous nonvindication nonvinous nonvintage nonviolation nonviolence nonvirginal nonvirile nonvirtue nonvirtuous nonvirulent nonviruliferous nonvisaed nonvisceral nonviscid nonviscous nonvisional nonvisitation nonvisiting nonvisual nonvisualized nonvital nonvitreous nonvitrified nonviviparous nonvocal nonvocalic nonvocational nonvolant nonvolatile nonvolatilized nonvolcanic nonvolition nonvoluntary nonvortical nonvortically nonvoter nonvoting nonvulcanizable nonvulvar nonwalking nonwar nonwasting nonwatertight nonweakness nonwestern nonwetted nonwhite nonwinged nonwoody nonworker nonworking nonworship nonwrinkleable nonya nonyielding nonyl nonylene nonylenic nonylic nonzealous nonzero nonzodiacal nonzonal nonzonate nonzoological noodle noodledom noodleism nook nooked nookery nooking nooklet nooklike nooky noological noologist noology noometry noon noonday noonflower nooning noonlight noonlit noonstead noontide noontime noonwards noop nooscopic noose nooser Nootka nopal Nopalea nopalry nope nopinene nor Nora Norah norard norate noration norbergite Norbert Norbertine norcamphane nordcaper nordenskioldine Nordic Nordicism Nordicist Nordicity Nordicization Nordicize nordmarkite noreast noreaster norelin Norfolk Norfolkian norgine nori noria Noric norie norimon norite norland norlander norlandism norleucine Norm norm Norma norma normal normalcy normalism normalist normality normalization normalize normalizer normally normalness Norman Normanesque Normanish Normanism Normanist Normanization Normanize Normanizer Normanly Normannic normated normative normatively normativeness normless normoblast normoblastic normocyte normocytic normotensive Norn Norna nornicotine nornorwest noropianic norpinic Norridgewock Norroway Norroy Norse norsel Norseland norseler Norseman Norsk north northbound northeast northeaster northeasterly northeastern northeasternmost northeastward northeastwardly northeastwards norther northerliness northerly northern northerner northernize northernly northernmost northernness northest northfieldite northing northland northlander northlight Northman northmost northness Northumber Northumbrian northupite northward northwardly northwards northwest northwester northwesterly northwestern northwestward northwestwardly northwestwards Norumbega norward norwards Norway Norwegian norwest norwester norwestward Nosairi Nosairian nosarian nose nosean noseanite noseband nosebanded nosebleed nosebone noseburn nosed nosegay nosegaylike noseherb nosehole noseless noselessly noselessness noselike noselite Nosema Nosematidae nosepiece nosepinch noser nosesmart nosethirl nosetiology nosewards nosewheel nosewise nosey nosine nosing nosism nosocomial nosocomium nosogenesis nosogenetic nosogenic nosogeny nosogeography nosographer nosographic nosographical nosographically nosography nosohaemia nosohemia nosological nosologically nosologist nosology nosomania nosomycosis nosonomy nosophobia nosophyte nosopoetic nosopoietic nosotaxy nosotrophy nostalgia nostalgic nostalgically nostalgy nostic Nostoc Nostocaceae nostocaceous nostochine nostologic nostology nostomania Nostradamus nostrificate nostrification nostril nostriled nostrility nostrilsome nostrum nostrummonger nostrummongership nostrummongery Nosu nosy not notabilia notability notable notableness notably notacanthid Notacanthidae notacanthoid notacanthous Notacanthus notaeal notaeum notal notalgia notalgic Notalia notan notandum notanencephalia notarial notarially notariate notarikon notarize notary notaryship notate notation notational notative notator notch notchboard notched notchel notcher notchful notching notchweed notchwing notchy note notebook notecase noted notedly notedness notehead noteholder notekin Notelaea noteless notelessly notelessness notelet notencephalocele notencephalus noter notewise noteworthily noteworthiness noteworthy notharctid Notharctidae Notharctus nother nothing nothingarian nothingarianism nothingism nothingist nothingize nothingless nothingly nothingness nothingology Nothofagus Notholaena nothosaur Nothosauri nothosaurian Nothosauridae Nothosaurus nothous notice noticeability noticeable noticeably noticer Notidani notidanian notidanid Notidanidae notidanidan notidanoid Notidanus notifiable notification notified notifier notify notifyee notion notionable notional notionalist notionality notionally notionalness notionary notionate notioned notionist notionless Notiosorex notitia Notkerian notocentrous notocentrum notochord notochordal notodontian notodontid Notodontidae notodontoid Notogaea Notogaeal Notogaean Notogaeic notommatid Notommatidae Notonecta notonectal notonectid Notonectidae notopodial notopodium notopterid Notopteridae notopteroid Notopterus notorhizal Notorhynchus notoriety notorious notoriously notoriousness Notornis Notoryctes Notostraca Nototherium Nototrema nototribe notour notourly Notropis notself Nottoway notum Notungulata notungulate Notus notwithstanding Nou nougat nougatine nought noumeaite noumeite noumenal noumenalism noumenalist noumenality noumenalize noumenally noumenism noumenon noun nounal nounally nounize nounless noup nourice nourish nourishable nourisher nourishing nourishingly nourishment nouriture nous nouther nova novaculite novalia Novanglian Novanglican novantique novarsenobenzene novate Novatian Novatianism Novatianist novation novative novator novatory novatrix novcic novel novelcraft noveldom novelese novelesque novelet novelette noveletter novelettish novelettist noveletty novelish novelism novelist novelistic novelistically novelization novelize novella novelless novellike novelly novelmongering novelness novelry novelty novelwright novem novemarticulate November Novemberish novemcostate novemdigitate novemfid novemlobate novemnervate novemperfoliate novena novenary novendial novene novennial novercal Novial novice novicehood novicelike noviceship noviciate novilunar novitial novitiate novitiateship novitiation novity Novo Novocain novodamus Novorolsky now nowaday nowadays nowanights noway noways nowed nowel nowhat nowhen nowhence nowhere nowhereness nowheres nowhit nowhither nowise nowness Nowroze nowt nowy noxa noxal noxally noxious noxiously noxiousness noy noyade noyau Nozi nozzle nozzler nth nu nuance nub Nuba nubbin nubble nubbling nubbly nubby nubecula nubia Nubian nubiferous nubiform nubigenous nubilate nubilation nubile nubility nubilous Nubilum nucal nucament nucamentaceous nucellar nucellus nucha nuchal nuchalgia nuciculture nuciferous nuciform nucin nucivorous nucleal nuclear nucleary nuclease nucleate nucleation nucleator nuclei nucleiferous nucleiform nuclein nucleinase nucleoalbumin nucleoalbuminuria nucleofugal nucleohistone nucleohyaloplasm nucleohyaloplasma nucleoid nucleoidioplasma nucleolar nucleolated nucleole nucleoli nucleolinus nucleolocentrosome nucleoloid nucleolus nucleolysis nucleomicrosome nucleon nucleone nucleonics nucleopetal nucleoplasm nucleoplasmatic nucleoplasmic nucleoprotein nucleoside nucleotide nucleus nuclide nuclidic Nucula Nuculacea nuculanium nucule nuculid Nuculidae nuculiform nuculoid Nuda nudate nudation Nudd nuddle nude nudely nudeness Nudens nudge nudger nudibranch Nudibranchia nudibranchian nudibranchiate nudicaudate nudicaul nudifier nudiflorous nudiped nudish nudism nudist nuditarian nudity nugacious nugaciousness nugacity nugator nugatoriness nugatory nuggar nugget nuggety nugify nugilogue Nugumiut nuisance nuisancer nuke Nukuhivan nul null nullable nullah nullibicity nullibility nullibiquitous nullibist nullification nullificationist nullificator nullifidian nullifier nullify nullipara nulliparity nulliparous nullipennate Nullipennes nulliplex nullipore nulliporous nullism nullisome nullisomic nullity nulliverse nullo Numa Numantine numb number numberable numberer numberful numberless numberous numbersome numbfish numbing numbingly numble numbles numbly numbness numda numdah numen Numenius numerable numerableness numerably numeral numerant numerary numerate numeration numerative numerator numerical numerically numericalness numerist numero numerology numerose numerosity numerous numerously numerousness Numida Numidae Numidian Numididae Numidinae numinism numinous numinously numismatic numismatical numismatically numismatician numismatics numismatist numismatography numismatologist numismatology nummary nummi nummiform nummular Nummularia nummulary nummulated nummulation nummuline Nummulinidae nummulite Nummulites nummulitic Nummulitidae nummulitoid nummuloidal nummus numskull numskulled numskulledness numskullery numskullism numud nun nunatak nunbird nunch nuncheon nunciate nunciative nunciatory nunciature nuncio nuncioship nuncle nuncupate nuncupation nuncupative nuncupatively nundinal nundination nundine nunhood Nunki nunky nunlet nunlike nunnari nunnated nunnation nunnery nunni nunnify nunnish nunnishness nunship Nupe Nuphar nuptial nuptiality nuptialize nuptially nuptials nuque nuraghe nurhag nurly nursable nurse nursedom nursegirl nursehound nursekeeper nursekin nurselet nurselike nursemaid nurser nursery nurserydom nurseryful nurserymaid nurseryman nursetender nursing nursingly nursle nursling nursy nurturable nurtural nurture nurtureless nurturer nurtureship Nusairis Nusakan nusfiah nut nutant nutarian nutate nutation nutational nutbreaker nutcake nutcrack nutcracker nutcrackers nutcrackery nutgall nuthatch nuthook nutjobber nutlet nutlike nutmeg nutmegged nutmeggy nutpecker nutpick nutramin nutria nutrice nutricial nutricism nutrient nutrify nutriment nutrimental nutritial nutrition nutritional nutritionally nutritionist nutritious nutritiously nutritiousness nutritive nutritively nutritiveness nutritory nutseed nutshell Nuttallia nuttalliasis nuttalliosis nutted nutter nuttery nuttily nuttiness nutting nuttish nuttishness nutty nuzzer nuzzerana nuzzle Nyamwezi Nyanja nyanza Nyaya nychthemer nychthemeral nychthemeron Nyctaginaceae nyctaginaceous Nyctaginia nyctalope nyctalopia nyctalopic nyctalopy Nyctanthes Nyctea Nyctereutes nycteribiid Nycteribiidae Nycteridae nycterine Nycteris Nycticorax Nyctimene nyctinastic nyctinasty nyctipelagic Nyctipithecinae nyctipithecine Nyctipithecus nyctitropic nyctitropism nyctophobia nycturia Nydia nye nylast nylon nymil nymph nympha nymphae Nymphaea Nymphaeaceae nymphaeaceous nymphaeum nymphal nymphalid Nymphalidae Nymphalinae nymphaline nympheal nymphean nymphet nymphic nymphical nymphid nymphine Nymphipara nymphiparous nymphish nymphitis nymphlike nymphlin nymphly Nymphoides nympholepsia nympholepsy nympholept nympholeptic nymphomania nymphomaniac nymphomaniacal Nymphonacea nymphosis nymphotomy nymphwise Nyoro Nyroca Nyssa Nyssaceae nystagmic nystagmus nyxis O o oadal oaf oafdom oafish oafishly oafishness oak oakberry Oakboy oaken oakenshaw Oakesia oaklet oaklike oakling oaktongue oakum oakweb oakwood oaky oam Oannes oar oarage oarcock oared oarfish oarhole oarial oarialgia oaric oariocele oariopathic oariopathy oariotomy oaritic oaritis oarium oarless oarlike oarlock oarlop oarman oarsman oarsmanship oarswoman oarweed oary oasal oasean oases oasis oasitic oast oasthouse oat oatbin oatcake oatear oaten oatenmeal oatfowl oath oathay oathed oathful oathlet oathworthy oatland oatlike oatmeal oatseed oaty Obadiah obambulate obambulation obambulatory oban Obbenite obbligato obclavate obclude obcompressed obconical obcordate obcordiform obcuneate obdeltoid obdiplostemonous obdiplostemony obdormition obduction obduracy obdurate obdurately obdurateness obduration obe obeah obeahism obeche obedience obediency obedient obediential obedientially obedientialness obedientiar obedientiary obediently obeisance obeisant obeisantly obeism obelia obeliac obelial obelion obeliscal obeliscar obelisk obeliskoid obelism obelize obelus Oberon obese obesely obeseness obesity obex obey obeyable obeyer obeyingly obfuscable obfuscate obfuscation obfuscator obfuscity obfuscous obi Obidicut obispo obit obitual obituarian obituarily obituarist obituarize obituary object objectable objectation objectative objectee objecthood objectification objectify objection objectionability objectionable objectionableness objectionably objectional objectioner objectionist objectival objectivate objectivation objective objectively objectiveness objectivism objectivist objectivistic objectivity objectivize objectization objectize objectless objectlessly objectlessness objector objicient objuration objure objurgate objurgation objurgative objurgatively objurgator objurgatorily objurgatory objurgatrix oblanceolate oblate oblately oblateness oblation oblational oblationary oblatory oblectate oblectation obley obligable obligancy obligant obligate obligation obligational obligative obligativeness obligator obligatorily obligatoriness obligatory obligatum oblige obliged obligedly obligedness obligee obligement obliger obliging obligingly obligingness obligistic obligor obliquangular obliquate obliquation oblique obliquely obliqueness obliquitous obliquity obliquus obliterable obliterate obliteration obliterative obliterator oblivescence oblivial obliviality oblivion oblivionate oblivionist oblivionize oblivious obliviously obliviousness obliviscence obliviscible oblocutor oblong oblongatal oblongated oblongish oblongitude oblongitudinal oblongly oblongness obloquial obloquious obloquy obmutescence obmutescent obnebulate obnounce obnoxiety obnoxious obnoxiously obnoxiousness obnubilate obnubilation obnunciation oboe oboist obol Obolaria obolary obole obolet obolus obomegoid Obongo oboval obovate obovoid obpyramidal obpyriform Obrazil obreption obreptitious obreptitiously obrogate obrogation obrotund obscene obscenely obsceneness obscenity obscurancy obscurant obscurantic obscurantism obscurantist obscuration obscurative obscure obscuredly obscurely obscurement obscureness obscurer obscurism obscurist obscurity obsecrate obsecration obsecrationary obsecratory obsede obsequence obsequent obsequial obsequience obsequiosity obsequious obsequiously obsequiousness obsequity obsequium obsequy observability observable observableness observably observance observancy observandum observant Observantine Observantist observantly observantness observation observational observationalism observationally observative observatorial observatory observe observedly observer observership observing observingly obsess obsessingly obsession obsessional obsessionist obsessive obsessor obsidian obsidianite obsidional obsidionary obsidious obsignate obsignation obsignatory obsolesce obsolescence obsolescent obsolescently obsolete obsoletely obsoleteness obsoletion obsoletism obstacle obstetric obstetrical obstetrically obstetricate obstetrication obstetrician obstetrics obstetricy obstetrist obstetrix obstinacious obstinacy obstinance obstinate obstinately obstinateness obstination obstinative obstipation obstreperate obstreperosity obstreperous obstreperously obstreperousness obstriction obstringe obstruct obstructant obstructedly obstructer obstructingly obstruction obstructionism obstructionist obstructive obstructively obstructiveness obstructivism obstructivity obstructor obstruent obstupefy obtain obtainable obtainal obtainance obtainer obtainment obtect obtected obtemper obtemperate obtenebrate obtenebration obtention obtest obtestation obtriangular obtrude obtruder obtruncate obtruncation obtruncator obtrusion obtrusionist obtrusive obtrusively obtrusiveness obtund obtundent obtunder obtundity obturate obturation obturator obturatory obturbinate obtusangular obtuse obtusely obtuseness obtusifid obtusifolious obtusilingual obtusilobous obtusion obtusipennate obtusirostrate obtusish obtusity obumbrant obumbrate obumbration obvallate obvelation obvention obverse obversely obversion obvert obvertend obviable obviate obviation obviative obviator obvious obviously obviousness obvolute obvoluted obvolution obvolutive obvolve obvolvent ocarina Occamism Occamist Occamistic Occamite occamy occasion occasionable occasional occasionalism occasionalist occasionalistic occasionality occasionally occasionalness occasionary occasioner occasionless occasive occident occidental Occidentalism Occidentalist occidentality Occidentalization Occidentalize occidentally occiduous occipital occipitalis occipitally occipitoanterior occipitoatlantal occipitoatloid occipitoaxial occipitoaxoid occipitobasilar occipitobregmatic occipitocalcarine occipitocervical occipitofacial occipitofrontal occipitofrontalis occipitohyoid occipitoiliac occipitomastoid occipitomental occipitonasal occipitonuchal occipitootic occipitoparietal occipitoposterior occipitoscapular occipitosphenoid occipitosphenoidal occipitotemporal occipitothalamic occiput occitone occlude occludent occlusal occluse occlusion occlusive occlusiveness occlusocervical occlusocervically occlusogingival occlusometer occlusor occult occultate occultation occulter occulting occultism occultist occultly occultness occupable occupance occupancy occupant occupation occupational occupationalist occupationally occupationless occupative occupiable occupier occupy occur occurrence occurrent occursive ocean oceaned oceanet oceanful Oceanian oceanic Oceanican oceanity oceanographer oceanographic oceanographical oceanographically oceanographist oceanography oceanology oceanophyte oceanside oceanward oceanwards oceanways oceanwise ocellar ocellary ocellate ocellated ocellation ocelli ocellicyst ocellicystic ocelliferous ocelliform ocelligerous ocellus oceloid ocelot och ochava ochavo ocher ocherish ocherous ochery ochidore ochlesis ochlesitic ochletic ochlocracy ochlocrat ochlocratic ochlocratical ochlocratically ochlophobia ochlophobist Ochna Ochnaceae ochnaceous ochone Ochotona Ochotonidae Ochozoma ochraceous Ochrana ochrea ochreate ochreous ochro ochrocarpous ochroid ochroleucous ochrolite Ochroma ochronosis ochronosus ochronotic ochrous ocht Ocimum ock oclock Ocneria ocote Ocotea ocotillo ocque ocracy ocrea ocreaceous Ocreatae ocreate ocreated octachloride octachord octachordal octachronous Octacnemus octacolic octactinal octactine Octactiniae octactinian octad octadecahydrate octadecane octadecanoic octadecyl octadic octadrachm octaemeron octaeteric octaeterid octagon octagonal octagonally octahedral octahedric octahedrical octahedrite octahedroid octahedron octahedrous octahydrate octahydrated octakishexahedron octamerism octamerous octameter octan octanaphthene Octandria octandrian octandrious octane octangle octangular octangularness Octans octant octantal octapla octaploid octaploidic octaploidy octapodic octapody octarch octarchy octarius octarticulate octary octasemic octastich octastichon octastrophic octastyle octastylos octateuch octaval octavalent octavarium octave Octavia Octavian octavic octavina Octavius octavo octenary octene octennial octennially octet octic octillion octillionth octine octingentenary octoad octoalloy octoate octobass October octobrachiate Octobrist octocentenary octocentennial octochord Octocoralla octocorallan Octocorallia octocoralline octocotyloid octodactyl octodactyle octodactylous octodecimal octodecimo octodentate octodianome Octodon octodont Octodontidae Octodontinae octoechos octofid octofoil octofoiled octogamy octogenarian octogenarianism octogenary octogild octoglot Octogynia octogynian octogynious octogynous octoic octoid octolateral octolocular octomeral octomerous octometer octonal octonare octonarian octonarius octonary octonematous octonion octonocular octoon octopartite octopean octoped octopede octopetalous octophthalmous octophyllous octopi octopine octoploid octoploidic octoploidy octopod Octopoda octopodan octopodes octopodous octopolar octopus octoradial octoradiate octoradiated octoreme octoroon octose octosepalous octospermous octospore octosporous octostichous octosyllabic octosyllable octovalent octoyl octroi octroy octuor octuple octuplet octuplex octuplicate octuplication octuply octyl octylene octyne ocuby ocular ocularist ocularly oculary oculate oculated oculauditory oculiferous oculiform oculigerous Oculina oculinid Oculinidae oculinoid oculist oculistic oculocephalic oculofacial oculofrontal oculomotor oculomotory oculonasal oculopalpebral oculopupillary oculospinal oculozygomatic oculus ocydrome ocydromine Ocydromus Ocypete Ocypoda ocypodan Ocypode ocypodian Ocypodidae ocypodoid Ocyroe Ocyroidae Od od oda Odacidae odacoid odal odalborn odalisk odalisque odaller odalman odalwoman Odax odd oddish oddity oddlegs oddly oddman oddment oddments oddness Odds odds Oddsbud oddsman ode odel odelet Odelsthing Odelsting odeon odeum odic odically Odin Odinian Odinic Odinism Odinist odinite Odinitic odiometer odious odiously odiousness odist odium odiumproof Odobenidae Odobenus Odocoileus odograph odology odometer odometrical odometry Odonata odontagra odontalgia odontalgic Odontaspidae Odontaspididae Odontaspis odontatrophia odontatrophy odontexesis odontiasis odontic odontist odontitis odontoblast odontoblastic odontocele Odontocete odontocete Odontoceti odontocetous odontochirurgic odontoclasis odontoclast odontodynia odontogen odontogenesis odontogenic odontogeny Odontoglossae odontoglossal odontoglossate Odontoglossum Odontognathae odontognathic odontognathous odontograph odontographic odontography odontohyperesthesia odontoid Odontolcae odontolcate odontolcous odontolite odontolith odontological odontologist odontology odontoloxia odontoma odontomous odontonecrosis odontoneuralgia odontonosology odontopathy odontophoral odontophore Odontophoridae Odontophorinae odontophorine odontophorous Odontophorus odontoplast odontoplerosis Odontopteris Odontopteryx odontorhynchous Odontormae Odontornithes odontornithic odontorrhagia odontorthosis odontoschism odontoscope odontosis odontostomatous odontostomous Odontosyllis odontotechny odontotherapia odontotherapy odontotomy Odontotormae odontotripsis odontotrypy odoom odophone odor odorant odorate odorator odored odorful odoriferant odoriferosity odoriferous odoriferously odoriferousness odorific odorimeter odorimetry odoriphore odorivector odorize odorless odorometer odorosity odorous odorously odorousness odorproof Odostemon Ods odso odum odyl odylic odylism odylist odylization odylize Odynerus Odyssean Odyssey Odz Odzookers Odzooks oe Oecanthus oecist oecodomic oecodomical oecoparasite oecoparasitism oecophobia oecumenian oecumenic oecumenical oecumenicalism oecumenicity oecus oedemerid Oedemeridae oedicnemine Oedicnemus Oedipal Oedipean Oedipus Oedogoniaceae oedogoniaceous Oedogoniales Oedogonium oenanthaldehyde oenanthate Oenanthe oenanthic oenanthol oenanthole oenanthyl oenanthylate oenanthylic oenin Oenocarpus oenochoe oenocyte oenocytic oenolin oenological oenologist oenology oenomancy Oenomaus oenomel oenometer oenophilist oenophobist oenopoetic Oenothera Oenotheraceae oenotheraceous Oenotrian oer oersted oes oesophageal oesophagi oesophagismus oesophagostomiasis Oesophagostomum oesophagus oestradiol Oestrelata oestrian oestriasis oestrid Oestridae oestrin oestriol oestroid oestrous oestrual oestruate oestruation oestrum oestrus of Ofer off offal offaling offbeat offcast offcome offcut offend offendable offendant offended offendedly offendedness offender offendible offendress offense offenseful offenseless offenselessly offenseproof offensible offensive offensively offensiveness offer offerable offeree offerer offering offeror offertorial offertory offgoing offgrade offhand offhanded offhandedly offhandedness office officeholder officeless officer officerage officeress officerhood officerial officerism officerless officership official officialdom officialese officialism officiality officialization officialize officially officialty officiant officiary officiate officiation officiator officinal officinally officious officiously officiousness offing offish offishly offishness offlet offlook offprint offsaddle offscape offscour offscourer offscouring offscum offset offshoot offshore offsider offspring offtake offtype offuscate offuscation offward offwards oflete Ofo oft often oftenness oftens oftentime oftentimes ofter oftest oftly oftness ofttime ofttimes oftwhiles Og ogaire Ogallala ogam ogamic Ogboni Ogcocephalidae Ogcocephalus ogdoad ogdoas ogee ogeed ogganition ogham oghamic Oghuz ogival ogive ogived Oglala ogle ogler ogmic Ogor Ogpu ogre ogreish ogreishly ogreism ogress ogrish ogrism ogtiern ogum Ogygia Ogygian oh ohelo ohia Ohio Ohioan ohm ohmage ohmic ohmmeter oho ohoy oidioid oidiomycosis oidiomycotic Oidium oii oikology oikoplast oil oilberry oilbird oilcan oilcloth oilcoat oilcup oildom oiled oiler oilery oilfish oilhole oilily oiliness oilless oillessness oillet oillike oilman oilmonger oilmongery oilometer oilpaper oilproof oilproofing oilseed oilskin oilskinned oilstock oilstone oilstove oiltight oiltightness oilway oily oilyish oime oinochoe oinology oinomancy oinomania oinomel oint ointment Oireachtas oisin oisivity oitava oiticica Ojibwa Ojibway Ok oka okapi Okapia okee okenite oket oki okia Okie Okinagan Oklafalaya Oklahannali Oklahoma Oklahoman okoniosis okonite okra okrug okshoofd okthabah Okuari okupukupu Olacaceae olacaceous Olaf olam olamic Olax Olcha Olchi Old old olden Oldenburg older oldermost oldfangled oldfangledness Oldfieldia Oldhamia oldhamite oldhearted oldish oldland oldness oldster oldwife Ole Olea Oleaceae oleaceous Oleacina Oleacinidae oleaginous oleaginousness oleana oleander oleandrin Olearia olease oleaster oleate olecranal olecranarthritis olecranial olecranian olecranoid olecranon olefiant olefin olefine olefinic Oleg oleic oleiferous olein olena olenellidian Olenellus olenid Olenidae olenidian olent Olenus oleo oleocalcareous oleocellosis oleocyst oleoduct oleograph oleographer oleographic oleography oleomargaric oleomargarine oleometer oleoptene oleorefractometer oleoresin oleoresinous oleosaccharum oleose oleosity oleostearate oleostearin oleothorax oleous Oleraceae oleraceous olericultural olericulturally olericulture Oleron Olethreutes olethreutid Olethreutidae olfact olfactible olfaction olfactive olfactology olfactometer olfactometric olfactometry olfactor olfactorily olfactory olfacty Olga oliban olibanum olid oligacanthous oligaemia oligandrous oliganthous oligarch oligarchal oligarchic oligarchical oligarchically oligarchism oligarchist oligarchize oligarchy oligemia oligidria oligist oligistic oligistical oligocarpous Oligocene Oligochaeta oligochaete oligochaetous oligochete oligocholia oligochrome oligochromemia oligochronometer oligochylia oligoclase oligoclasite oligocystic oligocythemia oligocythemic oligodactylia oligodendroglia oligodendroglioma oligodipsia oligodontous oligodynamic oligogalactia oligohemia oligohydramnios oligolactia oligomenorrhea oligomerous oligomery oligometochia oligometochic Oligomyodae oligomyodian oligomyoid Oligonephria oligonephric oligonephrous oligonite oligopepsia oligopetalous oligophagous oligophosphaturia oligophrenia oligophrenic oligophyllous oligoplasmia oligopnea oligopolistic oligopoly oligoprothesy oligoprothetic oligopsonistic oligopsony oligopsychia oligopyrene oligorhizous oligosepalous oligosialia oligosideric oligosiderite oligosite oligospermia oligospermous oligostemonous oligosyllabic oligosyllable oligosynthetic oligotokous oligotrichia oligotrophic oligotrophy oligotropic oliguresis oliguretic oliguria Olinia Oliniaceae oliniaceous olio oliphant oliprance olitory Oliva oliva olivaceous olivary Olive olive Olivean olived Olivella oliveness olivenite Oliver Oliverian oliverman oliversmith olivescent olivet Olivetan Olivette olivewood Olivia Olividae Olivier oliviferous oliviform olivil olivile olivilin olivine olivinefels olivinic olivinite olivinitic olla ollamh ollapod ollenite Ollie ollock olm Olneya Olof ological ologist ologistic ology olomao olona Olonets Olonetsian Olonetsish Olor oloroso olpe Olpidiaster Olpidium Olson oltonde oltunna olycook olykoek Olympia Olympiad Olympiadic Olympian Olympianism Olympianize Olympianly Olympianwise Olympic Olympicly Olympicness Olympieion Olympionic Olympus Olynthiac Olynthian Olynthus om omadhaun omagra Omagua Omaha omalgia Oman Omani omao Omar omarthritis omasitis omasum omber ombrette ombrifuge ombrograph ombrological ombrology ombrometer ombrophile ombrophilic ombrophilous ombrophily ombrophobe ombrophobous ombrophoby ombrophyte ombudsman ombudsmanship omega omegoid omelet omelette omen omened omenology omental omentectomy omentitis omentocele omentofixation omentopexy omentoplasty omentorrhaphy omentosplenopexy omentotomy omentulum omentum omer omicron omina ominous ominously ominousness omissible omission omissive omissively omit omitis omittable omitter omlah Ommastrephes Ommastrephidae ommateal ommateum ommatidial ommatidium ommatophore ommatophorous Ommiad Ommiades omneity omniactive omniactuality omniana omniarch omnibenevolence omnibenevolent omnibus omnibusman omnicausality omnicompetence omnicompetent omnicorporeal omnicredulity omnicredulous omnidenominational omnierudite omniessence omnifacial omnifarious omnifariously omnifariousness omniferous omnific omnificent omnifidel omniform omniformal omniformity omnify omnigenous omnigerent omnigraph omnihuman omnihumanity omnilegent omnilingual omniloquent omnilucent omnimental omnimeter omnimode omnimodous omninescience omninescient omniparent omniparient omniparity omniparous omnipatient omnipercipience omnipercipiency omnipercipient omniperfect omnipotence omnipotency omnipotent omnipotentiality omnipotently omnipregnant omnipresence omnipresent omnipresently omniprevalence omniprevalent omniproduction omniprudent omnirange omniregency omnirepresentative omnirepresentativeness omnirevealing omniscience omnisciency omniscient omnisciently omniscope omniscribent omniscriptive omnisentience omnisentient omnisignificance omnisignificant omnispective omnist omnisufficiency omnisufficient omnitemporal omnitenent omnitolerant omnitonal omnitonality omnitonic omnitude omnium omnivagant omnivalence omnivalent omnivalous omnivarious omnividence omnivident omnivision omnivolent Omnivora omnivoracious omnivoracity omnivorant omnivore omnivorous omnivorously omnivorousness omodynia omohyoid omoideum omophagia omophagist omophagous omophagy omophorion omoplate omoplatoscopy omostegite omosternal omosternum omphacine omphacite omphalectomy omphalic omphalism omphalitis omphalocele omphalode omphalodium omphalogenous omphaloid omphaloma omphalomesaraic omphalomesenteric omphaloncus omphalopagus omphalophlebitis omphalopsychic omphalopsychite omphalorrhagia omphalorrhea omphalorrhexis omphalos omphalosite omphaloskepsis omphalospinous omphalotomy omphalotripsy omphalus on Ona ona onager Onagra onagra Onagraceae onagraceous Onan onanism onanist onanistic onca once oncetta Onchidiidae Onchidium Onchocerca onchocerciasis onchocercosis oncia Oncidium oncin oncograph oncography oncologic oncological oncology oncome oncometer oncometric oncometry oncoming Oncorhynchus oncosimeter oncosis oncosphere oncost oncostman oncotomy ondagram ondagraph ondameter ondascope ondatra ondine ondogram ondograph ondometer ondoscope ondy one oneanother oneberry onefold onefoldness onegite onehearted onehow Oneida oneiric oneirocrit oneirocritic oneirocritical oneirocritically oneirocriticism oneirocritics oneirodynia oneirologist oneirology oneiromancer oneiromancy oneiroscopic oneiroscopist oneiroscopy oneirotic oneism onement oneness oner onerary onerative onerosity onerous onerously onerousness onery oneself onesigned onetime onewhere oneyer onfall onflemed onflow onflowing ongaro ongoing onhanger onicolo oniomania oniomaniac onion onionet onionized onionlike onionpeel onionskin oniony onirotic Oniscidae onisciform oniscoid Oniscoidea oniscoidean Oniscus onium onkilonite onkos onlay onlepy onliest onliness onlook onlooker onlooking only onmarch Onmun Onobrychis onocentaur Onoclea onofrite Onohippidium onolatry onomancy onomantia onomastic onomasticon onomatologist onomatology onomatomania onomatope onomatoplasm onomatopoeia onomatopoeial onomatopoeian onomatopoeic onomatopoeical onomatopoeically onomatopoesis onomatopoesy onomatopoetic onomatopoetically onomatopy onomatous onomomancy Onondaga Onondagan Ononis Onopordon Onosmodium onrush onrushing ons onset onsetter onshore onside onsight onslaught onstand onstanding onstead onsweep onsweeping ontal Ontarian Ontaric onto ontocycle ontocyclic ontogenal ontogenesis ontogenetic ontogenetical ontogenetically ontogenic ontogenically ontogenist ontogeny ontography ontologic ontological ontologically ontologism ontologist ontologistic ontologize ontology ontosophy onus onwaiting onward onwardly onwardness onwards onycha onychatrophia onychauxis onychia onychin onychitis onychium onychogryposis onychoid onycholysis onychomalacia onychomancy onychomycosis onychonosus onychopathic onychopathology onychopathy onychophagist onychophagy Onychophora onychophoran onychophorous onychophyma onychoptosis onychorrhexis onychoschizia onychosis onychotrophy onym onymal onymancy onymatic onymity onymize onymous onymy onyx onyxis onyxitis onza ooangium ooblast ooblastic oocyesis oocyst Oocystaceae oocystaceous oocystic Oocystis oocyte oodles ooecial ooecium oofbird ooftish oofy oogamete oogamous oogamy oogenesis oogenetic oogeny ooglea oogone oogonial oogoniophore oogonium oograph ooid ooidal ookinesis ookinete ookinetic oolak oolemma oolite oolitic oolly oologic oological oologically oologist oologize oology oolong oomancy oomantia oometer oometric oometry oomycete Oomycetes oomycetous oons oont oopak oophoralgia oophorauxe oophore oophorectomy oophoreocele oophorhysterectomy oophoric oophoridium oophoritis oophoroepilepsy oophoroma oophoromalacia oophoromania oophoron oophoropexy oophororrhaphy oophorosalpingectomy oophorostomy oophorotomy oophyte oophytic ooplasm ooplasmic ooplast oopod oopodal ooporphyrin oorali oord ooscope ooscopy oosperm oosphere oosporange oosporangium oospore Oosporeae oosporic oosporiferous oosporous oostegite oostegitic ootheca oothecal ootid ootocoid Ootocoidea ootocoidean ootocous ootype ooze oozily ooziness oozooid oozy opacate opacification opacifier opacify opacite opacity opacous opacousness opah opal opaled opalesce opalescence opalescent opalesque Opalina opaline opalinid Opalinidae opalinine opalish opalize opaloid opaque opaquely opaqueness Opata opdalite ope Opegrapha opeidoscope opelet open openable openband openbeak openbill opencast opener openhanded openhandedly openhandedness openhead openhearted openheartedly openheartedness opening openly openmouthed openmouthedly openmouthedness openness openside openwork opera operability operabily operable operae operagoer operalogue operameter operance operancy operand operant operatable operate operatee operatic operatical operatically operating operation operational operationalism operationalist operationism operationist operative operatively operativeness operativity operatize operator operatory operatrix opercle opercled opercula opercular Operculata operculate operculated operculiferous operculiform operculigenous operculigerous operculum operetta operette operettist operose operosely operoseness operosity Ophelia ophelimity Ophian ophiasis ophic ophicalcite Ophicephalidae ophicephaloid Ophicephalus Ophichthyidae ophichthyoid ophicleide ophicleidean ophicleidist Ophidia ophidian Ophidiidae Ophidiobatrachia ophidioid Ophidion ophidiophobia ophidious ophidologist ophidology Ophiobatrachia Ophiobolus Ophioglossaceae ophioglossaceous Ophioglossales Ophioglossum ophiography ophioid ophiolater ophiolatrous ophiolatry ophiolite ophiolitic ophiologic ophiological ophiologist ophiology ophiomancy ophiomorph Ophiomorpha ophiomorphic ophiomorphous Ophion ophionid Ophioninae ophionine ophiophagous ophiophilism ophiophilist ophiophobe ophiophobia ophiophoby ophiopluteus Ophiosaurus ophiostaphyle ophiouride Ophis Ophisaurus Ophism Ophite ophite Ophitic ophitic Ophitism Ophiuchid Ophiuchus ophiuran ophiurid Ophiurida ophiuroid Ophiuroidea ophiuroidean ophryon Ophrys ophthalaiater ophthalmagra ophthalmalgia ophthalmalgic ophthalmatrophia ophthalmectomy ophthalmencephalon ophthalmetrical ophthalmia ophthalmiac ophthalmiatrics ophthalmic ophthalmious ophthalmist ophthalmite ophthalmitic ophthalmitis ophthalmoblennorrhea ophthalmocarcinoma ophthalmocele ophthalmocopia ophthalmodiagnosis ophthalmodiastimeter ophthalmodynamometer ophthalmodynia ophthalmography ophthalmoleucoscope ophthalmolith ophthalmologic ophthalmological ophthalmologist ophthalmology ophthalmomalacia ophthalmometer ophthalmometric ophthalmometry ophthalmomycosis ophthalmomyositis ophthalmomyotomy ophthalmoneuritis ophthalmopathy ophthalmophlebotomy ophthalmophore ophthalmophorous ophthalmophthisis ophthalmoplasty ophthalmoplegia ophthalmoplegic ophthalmopod ophthalmoptosis ophthalmorrhagia ophthalmorrhea ophthalmorrhexis Ophthalmosaurus ophthalmoscope ophthalmoscopic ophthalmoscopical ophthalmoscopist ophthalmoscopy ophthalmostasis ophthalmostat ophthalmostatometer ophthalmothermometer ophthalmotomy ophthalmotonometer ophthalmotonometry ophthalmotrope ophthalmotropometer ophthalmy opianic opianyl opiate opiateproof opiatic Opiconsivia opificer opiism Opilia Opiliaceae opiliaceous Opiliones Opilionina opilionine Opilonea Opimian opinability opinable opinably opinant opination opinative opinatively opinator opine opiner opiniaster opiniastre opiniastrety opiniastrous opiniater opiniative opiniatively opiniativeness opiniatreness opiniatrety opinion opinionable opinionaire opinional opinionate opinionated opinionatedly opinionatedness opinionately opinionative opinionatively opinionativeness opinioned opinionedness opinionist opiomania opiomaniac opiophagism opiophagy opiparous opisometer opisthenar opisthion opisthobranch Opisthobranchia opisthobranchiate Opisthocoelia opisthocoelian opisthocoelous opisthocome Opisthocomi Opisthocomidae opisthocomine opisthocomous opisthodetic opisthodome opisthodomos opisthodomus opisthodont opisthogastric Opisthoglossa opisthoglossal opisthoglossate opisthoglyph Opisthoglypha opisthoglyphic opisthoglyphous Opisthognathidae opisthognathism opisthognathous opisthograph opisthographal opisthographic opisthographical opisthography opisthogyrate opisthogyrous Opisthoparia opisthoparian opisthophagic opisthoporeia opisthorchiasis Opisthorchis opisthosomal Opisthothelae opisthotic opisthotonic opisthotonoid opisthotonos opisthotonus opium opiumism opobalsam opodeldoc opodidymus opodymus opopanax Oporto opossum opotherapy Oppian oppidan oppilate oppilation oppilative opponency opponent opportune opportuneless opportunely opportuneness opportunism opportunist opportunistic opportunistically opportunity opposability opposable oppose opposed opposeless opposer opposing opposingly opposit opposite oppositely oppositeness oppositiflorous oppositifolious opposition oppositional oppositionary oppositionism oppositionist oppositionless oppositious oppositipetalous oppositipinnate oppositipolar oppositisepalous oppositive oppositively oppositiveness opposure oppress oppressed oppressible oppression oppressionist oppressive oppressively oppressiveness oppressor opprobriate opprobrious opprobriously opprobriousness opprobrium opprobry oppugn oppugnacy oppugnance oppugnancy oppugnant oppugnate oppugnation oppugner opsigamy opsimath opsimathy opsiometer opsisform opsistype opsonic opsoniferous opsonification opsonify opsonin opsonist opsonium opsonization opsonize opsonogen opsonoid opsonology opsonometry opsonophilia opsonophilic opsonophoric opsonotherapy opsy opt optable optableness optably optant optate optation optative optatively opthalmophorium opthalmoplegy opthalmothermometer optic optical optically optician opticist opticity opticochemical opticociliary opticon opticopapillary opticopupillary optics optigraph optimacy optimal optimate optimates optime optimism optimist optimistic optimistical optimistically optimity optimization optimize optimum option optional optionality optionalize optionally optionary optionee optionor optive optoblast optogram optography optological optologist optology optomeninx optometer optometrical optometrist optometry optophone optotechnics optotype Opulaster opulence opulency opulent opulently opulus Opuntia Opuntiaceae Opuntiales opuntioid opus opuscular opuscule opusculum oquassa or ora orabassu orach oracle oracular oracularity oracularly oracularness oraculate oraculous oraculously oraculousness oraculum orad orage oragious Orakzai oral oraler oralism oralist orality oralization oralize orally oralogist oralogy Orang orang orange orangeade orangebird Orangeism Orangeist orangeleaf Orangeman orangeman oranger orangeroot orangery orangewoman orangewood orangey orangism orangist orangite orangize orangutan orant Oraon orarian orarion orarium orary orate oration orational orationer orator oratorial oratorially Oratorian oratorian Oratorianism Oratorianize oratoric oratorical oratorically oratorio oratorize oratorlike oratorship oratory oratress oratrix orb orbed orbic orbical Orbicella orbicle orbicular orbicularis orbicularity orbicularly orbicularness orbiculate orbiculated orbiculately orbiculation orbiculatocordate orbiculatoelliptical Orbiculoidea orbific Orbilian Orbilius orbit orbital orbitale orbitar orbitary orbite orbitelar Orbitelariae orbitelarian orbitele orbitelous orbitofrontal Orbitoides Orbitolina orbitolite Orbitolites orbitomalar orbitomaxillary orbitonasal orbitopalpebral orbitosphenoid orbitosphenoidal orbitostat orbitotomy orbitozygomatic orbless orblet Orbulina orby orc Orca Orcadian orcanet orcein orchamus orchard orcharding orchardist orchardman orchat orchel orchella orchesis orchesography orchester Orchestia orchestian orchestic orchestiid Orchestiidae orchestra orchestral orchestraless orchestrally orchestrate orchestrater orchestration orchestrator orchestre orchestric orchestrina orchestrion orchialgia orchic orchichorea orchid Orchidaceae orchidacean orchidaceous Orchidales orchidalgia orchidectomy orchideous orchideously orchidist orchiditis orchidocele orchidocelioplasty orchidologist orchidology orchidomania orchidopexy orchidoplasty orchidoptosis orchidorrhaphy orchidotherapy orchidotomy orchiectomy orchiencephaloma orchiepididymitis orchil orchilla orchilytic orchiocatabasis orchiocele orchiodynia orchiomyeloma orchioncus orchioneuralgia orchiopexy orchioplasty orchiorrhaphy orchioscheocele orchioscirrhus orchiotomy Orchis orchitic orchitis orchotomy orcin orcinol Orcinus ordain ordainable ordainer ordainment ordanchite ordeal order orderable ordered orderedness orderer orderless orderliness orderly ordinable ordinal ordinally ordinance ordinand ordinant ordinar ordinarily ordinariness ordinarius ordinary ordinaryship ordinate ordinately ordination ordinative ordinatomaculate ordinator ordinee ordines ordnance ordonnance ordonnant ordosite Ordovian Ordovices Ordovician ordu ordure ordurous ore oread Oreamnos Oreas orecchion orectic orective oreillet orellin oreman orenda orendite Oreocarya Oreodon oreodont Oreodontidae oreodontine oreodontoid Oreodoxa Oreophasinae oreophasine Oreophasis Oreortyx oreotragine Oreotragus Oreotrochilus Orestean Oresteia oreweed orewood orexis orf orfgild organ organal organbird organdy organella organelle organer organette organic organical organically organicalness organicism organicismal organicist organicistic organicity organific organing organism organismal organismic organist organistic organistrum organistship organity organizability organizable organization organizational organizationally organizationist organizatory organize organized organizer organless organoantimony organoarsenic organobismuth organoboron organochordium organogel organogen organogenesis organogenetic organogenic organogenist organogeny organogold organographic organographical organographist organography organoid organoiron organolead organoleptic organolithium organologic organological organologist organology organomagnesium organomercury organometallic organon organonomic organonomy organonym organonymal organonymic organonymy organopathy organophil organophile organophilic organophone organophonic organophyly organoplastic organoscopy organosilicon organosilver organosodium organosol organotherapy organotin organotrophic organotropic organotropically organotropism organotropy organozinc organry organule organum organzine orgasm orgasmic orgastic orgeat orgia orgiac orgiacs orgiasm orgiast orgiastic orgiastical orgic orgue orguinette orgulous orgulously orgy orgyia Orias Oribatidae oribi orichalceous orichalch orichalcum oriconic oricycle oriel oriency orient Oriental oriental Orientalia orientalism orientalist orientality orientalization orientalize orientally Orientalogy orientate orientation orientative orientator orientite orientization orientize oriently orientness orifacial orifice orificial oriflamb oriflamme oriform origan origanized Origanum Origenian Origenic Origenical Origenism Origenist Origenistic Origenize origin originable original originalist originality originally originalness originant originarily originary originate origination originative originatively originator originatress originist orignal orihon orihyperbola orillion orillon orinasal orinasality oriole Oriolidae Oriolus Orion Oriskanian orismologic orismological orismology orison orisphere oristic Oriya Orkhon Orkneyan Orlando orle orlean Orleanism Orleanist Orleanistic Orleans orlet orleways orlewise orlo orlop Ormazd ormer ormolu Ormond orna ornament ornamental ornamentalism ornamentalist ornamentality ornamentalize ornamentally ornamentary ornamentation ornamenter ornamentist ornate ornately ornateness ornation ornature orneriness ornery ornis orniscopic orniscopist orniscopy ornithic ornithichnite ornithine Ornithischia ornithischian ornithivorous ornithobiographical ornithobiography ornithocephalic Ornithocephalidae ornithocephalous Ornithocephalus ornithocoprolite ornithocopros ornithodelph Ornithodelphia ornithodelphian ornithodelphic ornithodelphous Ornithodoros Ornithogaea Ornithogaean Ornithogalum ornithogeographic ornithogeographical ornithography ornithoid Ornitholestes ornitholite ornitholitic ornithologic ornithological ornithologically ornithologist ornithology ornithomancy ornithomantia ornithomantic ornithomantist Ornithomimidae Ornithomimus ornithomorph ornithomorphic ornithomyzous ornithon Ornithopappi ornithophile ornithophilist ornithophilite ornithophilous ornithophily ornithopod Ornithopoda ornithopter Ornithoptera Ornithopteris Ornithorhynchidae ornithorhynchous Ornithorhynchus ornithosaur Ornithosauria ornithosaurian Ornithoscelida ornithoscelidan ornithoscopic ornithoscopist ornithoscopy ornithosis ornithotomical ornithotomist ornithotomy ornithotrophy Ornithurae ornithuric ornithurous ornoite oroanal Orobanchaceae orobanchaceous Orobanche orobancheous orobathymetric Orobatoidea Orochon orocratic orodiagnosis orogen orogenesis orogenesy orogenetic orogenic orogeny orograph orographic orographical orographically orography oroheliograph Orohippus orohydrographic orohydrographical orohydrography oroide orolingual orological orologist orology orometer orometric orometry Oromo oronasal oronoco Orontium oropharyngeal oropharynx orotherapy Orotinan orotund orotundity orphan orphancy orphandom orphange orphanhood orphanism orphanize orphanry orphanship orpharion Orphean Orpheist orpheon orpheonist orpheum Orpheus Orphic Orphical Orphically Orphicism Orphism Orphize orphrey orphreyed orpiment orpine Orpington orrery orrhoid orrhology orrhotherapy orris orrisroot orseille orseilline orsel orselle orseller orsellic orsellinate orsellinic Orson ort ortalid Ortalidae ortalidian Ortalis ortet Orthagoriscus orthal orthantimonic Ortheris orthian orthic orthicon orthid Orthidae Orthis orthite orthitic ortho orthoarsenite orthoaxis orthobenzoquinone orthobiosis orthoborate orthobrachycephalic orthocarbonic orthocarpous Orthocarpus orthocenter orthocentric orthocephalic orthocephalous orthocephaly orthoceracone Orthoceran Orthoceras Orthoceratidae orthoceratite orthoceratitic orthoceratoid orthochlorite orthochromatic orthochromatize orthoclase orthoclasite orthoclastic orthocoumaric orthocresol orthocymene orthodiaene orthodiagonal orthodiagram orthodiagraph orthodiagraphic orthodiagraphy orthodiazin orthodiazine orthodolichocephalic orthodomatic orthodome orthodontia orthodontic orthodontics orthodontist orthodox orthodoxal orthodoxality orthodoxally orthodoxian orthodoxical orthodoxically orthodoxism orthodoxist orthodoxly orthodoxness orthodoxy orthodromic orthodromics orthodromy orthoepic orthoepical orthoepically orthoepist orthoepistic orthoepy orthoformic orthogamous orthogamy orthogenesis orthogenetic orthogenic orthognathic orthognathism orthognathous orthognathus orthognathy orthogneiss orthogonal orthogonality orthogonally orthogonial orthograde orthogranite orthograph orthographer orthographic orthographical orthographically orthographist orthographize orthography orthohydrogen orthologer orthologian orthological orthology orthometopic orthometric orthometry Orthonectida orthonitroaniline orthopath orthopathic orthopathically orthopathy orthopedia orthopedic orthopedical orthopedically orthopedics orthopedist orthopedy orthophenylene orthophonic orthophony orthophoria orthophoric orthophosphate orthophosphoric orthophyre orthophyric orthopinacoid orthopinacoidal orthoplastic orthoplasy orthoplumbate orthopnea orthopneic orthopod Orthopoda orthopraxis orthopraxy orthoprism orthopsychiatric orthopsychiatrical orthopsychiatrist orthopsychiatry orthopter Orthoptera orthopteral orthopteran orthopterist orthopteroid Orthopteroidea orthopterological orthopterologist orthopterology orthopteron orthopterous orthoptic orthopyramid orthopyroxene orthoquinone orthorhombic Orthorrhapha orthorrhaphous orthorrhaphy orthoscope orthoscopic orthose orthosemidin orthosemidine orthosilicate orthosilicic orthosis orthosite orthosomatic orthospermous orthostatic orthostichous orthostichy orthostyle orthosubstituted orthosymmetric orthosymmetrical orthosymmetrically orthosymmetry orthotactic orthotectic orthotic orthotolidin orthotolidine orthotoluic orthotoluidin orthotoluidine orthotomic orthotomous orthotone orthotonesis orthotonic orthotonus orthotropal orthotropic orthotropism orthotropous orthotropy orthotype orthotypous orthovanadate orthovanadic orthoveratraldehyde orthoveratric orthoxazin orthoxazine orthoxylene orthron ortiga ortive Ortol ortolan Ortrud ortstein ortygan Ortygian Ortyginae ortygine Ortyx Orunchun orvietan orvietite Orvieto Orville ory Orycteropodidae Orycteropus oryctics oryctognostic oryctognostical oryctognostically oryctognosy Oryctolagus oryssid Oryssidae Oryssus Oryx Oryza oryzenin oryzivorous Oryzomys Oryzopsis Oryzorictes Oryzorictinae Os os Osage osamin osamine osazone Osc Oscan Oscar Oscarella Oscarellidae oscella oscheal oscheitis oscheocarcinoma oscheocele oscheolith oscheoma oscheoncus oscheoplasty Oschophoria oscillance oscillancy oscillant Oscillaria Oscillariaceae oscillariaceous oscillate oscillating oscillation oscillative oscillatively oscillator Oscillatoria Oscillatoriaceae oscillatoriaceous oscillatorian oscillatory oscillogram oscillograph oscillographic oscillography oscillometer oscillometric oscillometry oscilloscope oscin oscine Oscines oscinian Oscinidae oscinine Oscinis oscitance oscitancy oscitant oscitantly oscitate oscitation oscnode osculable osculant oscular oscularity osculate osculation osculatory osculatrix oscule osculiferous osculum oscurrantist ose osela oshac Osiandrian oside osier osiered osierlike osiery Osirian Osiride Osiridean Osirification Osirify Osiris Osirism Oskar Osmanie Osmanli Osmanthus osmate osmatic osmatism osmazomatic osmazomatous osmazome Osmeridae Osmerus osmesis osmeterium osmetic osmic osmidrosis osmin osmina osmious osmiridium osmium osmodysphoria osmogene osmograph osmolagnia osmology osmometer osmometric osmometry Osmond osmondite osmophore osmoregulation Osmorhiza osmoscope osmose osmosis osmotactic osmotaxis osmotherapy osmotic osmotically osmous osmund Osmunda Osmundaceae osmundaceous osmundine Osnaburg Osnappar osoberry osone osophy osotriazine osotriazole osphradial osphradium osphresiolagnia osphresiologic osphresiologist osphresiology osphresiometer osphresiometry osphresiophilia osphresis osphretic Osphromenidae osphyalgia osphyalgic osphyarthritis osphyitis osphyocele osphyomelitis osprey ossal ossarium ossature osse ossein osselet ossements osseoalbuminoid osseoaponeurotic osseocartilaginous osseofibrous osseomucoid osseous osseously Osset Ossetian Ossetic Ossetine Ossetish Ossian Ossianesque Ossianic Ossianism Ossianize ossicle ossicular ossiculate ossicule ossiculectomy ossiculotomy ossiculum ossiferous ossific ossification ossified ossifier ossifluence ossifluent ossiform ossifrage ossifrangent ossify ossivorous ossuarium ossuary ossypite ostalgia Ostara ostariophysan Ostariophyseae Ostariophysi ostariophysial ostariophysous ostarthritis osteal ostealgia osteanabrosis osteanagenesis ostearthritis ostearthrotomy ostectomy osteectomy osteectopia osteectopy Osteichthyes ostein osteitic osteitis ostemia ostempyesis ostensibility ostensible ostensibly ostension ostensive ostensively ostensorium ostensory ostent ostentate ostentation ostentatious ostentatiously ostentatiousness ostentive ostentous osteoaneurysm osteoarthritis osteoarthropathy osteoarthrotomy osteoblast osteoblastic osteoblastoma osteocachetic osteocarcinoma osteocartilaginous osteocele osteocephaloma osteochondritis osteochondrofibroma osteochondroma osteochondromatous osteochondropathy osteochondrophyte osteochondrosarcoma osteochondrous osteoclasia osteoclasis osteoclast osteoclastic osteoclasty osteocolla osteocomma osteocranium osteocystoma osteodentin osteodentinal osteodentine osteoderm osteodermal osteodermatous osteodermia osteodermis osteodiastasis osteodynia osteodystrophy osteoencephaloma osteoenchondroma osteoepiphysis osteofibroma osteofibrous osteogangrene osteogen osteogenesis osteogenetic osteogenic osteogenist osteogenous osteogeny osteoglossid Osteoglossidae osteoglossoid Osteoglossum osteographer osteography osteohalisteresis osteoid Osteolepidae Osteolepis osteolite osteologer osteologic osteological osteologically osteologist osteology osteolysis osteolytic osteoma osteomalacia osteomalacial osteomalacic osteomancy osteomanty osteomatoid osteomere osteometric osteometrical osteometry osteomyelitis osteoncus osteonecrosis osteoneuralgia osteopaedion osteopath osteopathic osteopathically osteopathist osteopathy osteopedion osteoperiosteal osteoperiostitis osteopetrosis osteophage osteophagia osteophlebitis osteophone osteophony osteophore osteophyma osteophyte osteophytic osteoplaque osteoplast osteoplastic osteoplasty osteoporosis osteoporotic osteorrhaphy osteosarcoma osteosarcomatous osteosclerosis osteoscope osteosis osteosteatoma osteostixis osteostomatous osteostomous osteostracan Osteostraci osteosuture osteosynovitis osteosynthesis osteothrombosis osteotome osteotomist osteotomy osteotribe osteotrite osteotrophic osteotrophy Ostertagia ostial ostiary ostiate Ostic ostiolar ostiolate ostiole ostitis ostium ostleress Ostmannic ostmark Ostmen ostosis Ostracea ostracean ostraceous Ostraciidae ostracine ostracioid Ostracion ostracism ostracizable ostracization ostracize ostracizer ostracod Ostracoda ostracode ostracoderm Ostracodermi ostracodous ostracoid Ostracoidea ostracon ostracophore Ostracophori ostracophorous ostracum Ostraeacea ostraite Ostrea ostreaceous ostreger ostreicultural ostreiculture ostreiculturist Ostreidae ostreiform ostreodynamometer ostreoid ostreophage ostreophagist ostreophagous ostrich ostrichlike Ostrogoth Ostrogothian Ostrogothic Ostrya Ostyak Oswald Oswegan otacoustic otacousticon Otaheitan otalgia otalgic otalgy Otaria otarian Otariidae Otariinae otariine otarine otarioid otary otate otectomy otelcosis Otello Othake othelcosis Othello othematoma othemorrhea otheoscope other otherdom otherest othergates otherguess otherhow otherism otherist otherness othersome othertime otherwards otherwhence otherwhere otherwhereness otherwheres otherwhile otherwhiles otherwhither otherwise otherwiseness otherworld otherworldliness otherworldly otherworldness Othin Othinism othmany Othonna othygroma otiant otiatric otiatrics otiatry otic oticodinia Otidae Otides Otididae otidiform otidine Otidiphaps otidium otiorhynchid Otiorhynchidae Otiorhynchinae otiose otiosely otioseness otiosity Otis otitic otitis otkon Oto otoantritis otoblennorrhea otocariasis otocephalic otocephaly otocerebritis otocleisis otoconial otoconite otoconium otocrane otocranial otocranic otocranium Otocyon otocyst otocystic otodynia otodynic otoencephalitis otogenic otogenous otographical otography Otogyps otohemineurasthenia otolaryngologic otolaryngologist otolaryngology otolite otolith Otolithidae Otolithus otolitic otological otologist otology Otomaco otomassage Otomi Otomian Otomitlan otomucormycosis otomyces otomycosis otonecrectomy otoneuralgia otoneurasthenia otopathic otopathy otopharyngeal otophone otopiesis otoplastic otoplasty otopolypus otopyorrhea otopyosis otorhinolaryngologic otorhinolaryngologist otorhinolaryngology otorrhagia otorrhea otorrhoea otosalpinx otosclerosis otoscope otoscopic otoscopy otosis otosphenal otosteal otosteon ototomy Otozoum ottajanite ottar ottavarima Ottawa otter otterer otterhound ottinger ottingkar Otto otto Ottoman Ottomanean Ottomanic Ottomanism Ottomanization Ottomanize Ottomanlike Ottomite ottrelife Ottweilian Otuquian oturia Otus Otyak ouabain ouabaio ouabe ouachitite ouakari ouananiche oubliette ouch Oudemian oudenarde Oudenodon oudenodont ouenite ouf ough ought oughtness oughtnt Ouija ouistiti oukia oulap ounce ounds ouphe ouphish our Ouranos ourie ouroub Ourouparia ours ourself ourselves oust ouster out outact outadmiral Outagami outage outambush outarde outargue outask outawe outbabble outback outbacker outbake outbalance outban outbanter outbar outbargain outbark outbawl outbeam outbear outbearing outbeg outbeggar outbelch outbellow outbent outbetter outbid outbidder outbirth outblacken outblaze outbleat outbleed outbless outbloom outblossom outblot outblow outblowing outblown outbluff outblunder outblush outbluster outboard outboast outbolting outbond outbook outborn outborough outbound outboundaries outbounds outbow outbowed outbowl outbox outbrag outbranch outbranching outbrave outbray outbrazen outbreak outbreaker outbreaking outbreath outbreathe outbreather outbred outbreed outbreeding outbribe outbridge outbring outbrother outbud outbuild outbuilding outbulge outbulk outbully outburn outburst outbustle outbuy outbuzz outby outcant outcaper outcarol outcarry outcase outcast outcaste outcasting outcastness outcavil outchamber outcharm outchase outchatter outcheat outchide outcity outclamor outclass outclerk outclimb outcome outcomer outcoming outcompass outcomplete outcompliment outcorner outcountry outcourt outcrawl outcricket outcrier outcrop outcropper outcross outcrossing outcrow outcrowd outcry outcull outcure outcurse outcurve outcut outdaciousness outdance outdare outdate outdated outdazzle outdevil outdispatch outdistance outdistrict outdo outdodge outdoer outdoor outdoorness outdoors outdoorsman outdraft outdragon outdraw outdream outdress outdrink outdrive outdure outdwell outdweller outdwelling outeat outecho outed outedge outen outer outerly outermost outerness outerwear outeye outeyed outfable outface outfall outfame outfangthief outfast outfawn outfeast outfeat outfeeding outfence outferret outfiction outfield outfielder outfieldsman outfight outfighter outfighting outfigure outfish outfit outfitter outflame outflank outflanker outflanking outflare outflash outflatter outfling outfloat outflourish outflow outflue outflung outflunky outflush outflux outfly outfold outfool outfoot outform outfort outfreeman outfront outfroth outfrown outgabble outgain outgallop outgamble outgame outgang outgarment outgarth outgas outgate outgauge outgaze outgeneral outgive outgiving outglad outglare outgleam outglitter outgloom outglow outgnaw outgo outgoer outgoing outgoingness outgone outgreen outgrin outground outgrow outgrowing outgrowth outguard outguess outgun outgush outhammer outhasten outhaul outhauler outhear outheart outhector outheel outher outhire outhiss outhit outhold outhorror outhouse outhousing outhowl outhue outhumor outhunt outhurl outhut outhymn outhyperbolize outimage outing outinvent outish outissue outjazz outjest outjet outjetting outjinx outjockey outjourney outjuggle outjump outjut outkeeper outkick outkill outking outkiss outkitchen outknave outknee outlabor outlaid outlance outland outlander outlandish outlandishlike outlandishly outlandishness outlash outlast outlaugh outlaunch outlaw outlawry outlay outlean outleap outlearn outlegend outlength outlengthen outler outlet outlie outlier outlighten outlimb outlimn outline outlinear outlined outlineless outliner outlinger outlip outlipped outlive outliver outlodging outlook outlooker outlord outlove outlung outluster outly outlying outmagic outmalaprop outman outmaneuver outmantle outmarch outmarriage outmarry outmaster outmatch outmate outmeasure outmerchant outmiracle outmode outmoded outmost outmount outmouth outmove outname outness outnight outnoise outnook outnumber outoffice outoven outpace outpage outpaint outparagon outparamour outparish outpart outpass outpassion outpath outpatient outpay outpayment outpeal outpeep outpeer outpension outpensioner outpeople outperform outpick outpicket outpipe outpitch outpity outplace outplan outplay outplayed outplease outplod outplot outpocketing outpoint outpoise outpoison outpoll outpomp outpop outpopulate outporch outport outporter outportion outpost outpouching outpour outpourer outpouring outpractice outpraise outpray outpreach outpreen outprice outprodigy outproduce outpromise outpry outpull outpupil outpurl outpurse outpush output outputter outquaff outquarters outqueen outquestion outquibble outquote outrace outrage outrageous outrageously outrageousness outrageproof outrager outraging outrail outrance outrange outrank outrant outrap outrate outraught outrave outray outre outreach outread outreason outreckon outredden outrede outreign outrelief outremer outreness outrhyme outrick outride outrider outriding outrig outrigger outriggered outriggerless outrigging outright outrightly outrightness outring outrival outroar outrogue outroll outromance outrooper outroot outrove outrow outroyal outrun outrunner outrush outsail outsaint outsally outsatisfy outsavor outsay outscent outscold outscore outscorn outscour outscouring outscream outsea outseam outsearch outsee outseek outsell outsentry outsert outservant outset outsetting outsettlement outsettler outshadow outshake outshame outshape outsharp outsharpen outsheathe outshift outshine outshiner outshoot outshot outshoulder outshout outshove outshow outshower outshriek outshrill outshut outside outsided outsidedness outsideness outsider outsift outsigh outsight outsin outsing outsit outsize outsized outskill outskip outskirmish outskirmisher outskirt outskirter outslander outslang outsleep outslide outslink outsmart outsmell outsmile outsnatch outsnore outsoar outsole outsoler outsonnet outsophisticate outsound outspan outsparkle outspeak outspeaker outspeech outspeed outspell outspend outspent outspill outspin outspirit outspit outsplendor outspoken outspokenly outspokenness outsport outspout outspread outspring outsprint outspue outspurn outspurt outstagger outstair outstand outstander outstanding outstandingly outstandingness outstare outstart outstarter outstartle outstate outstation outstatistic outstature outstay outsteal outsteam outstep outsting outstink outstood outstorm outstrain outstream outstreet outstretch outstretcher outstride outstrike outstrip outstrive outstroke outstrut outstudent outstudy outstunt outsubtle outsuck outsucken outsuffer outsuitor outsulk outsum outsuperstition outswagger outswarm outswear outsweep outsweeping outsweeten outswell outswift outswim outswindle outswing outswirl outtaken outtalent outtalk outtask outtaste outtear outtease outtell outthieve outthink outthreaten outthrob outthrough outthrow outthrust outthruster outthunder outthwack outtinkle outtire outtoil outtongue outtop outtower outtrade outtrail outtravel outtrick outtrot outtrump outturn outturned outtyrannize outusure outvalue outvanish outvaunt outvelvet outvenom outvictor outvie outvier outvigil outvillage outvillain outvociferate outvoice outvote outvoter outvoyage outwait outwake outwale outwalk outwall outwallop outwander outwar outwarble outward outwardly outwardmost outwardness outwards outwash outwaste outwatch outwater outwave outwealth outweapon outwear outweary outweave outweed outweep outweigh outweight outwell outwent outwhirl outwick outwile outwill outwind outwindow outwing outwish outwit outwith outwittal outwitter outwoe outwoman outwood outword outwore outwork outworker outworld outworn outworth outwrangle outwrench outwrest outwrestle outwriggle outwring outwrite outwrought outyard outyell outyelp outyield outzany ouzel Ova ova Ovaherero oval ovalbumin ovalescent ovaliform ovalish ovalization ovalize ovally ovalness ovaloid ovalwise Ovambo Ovampo Ovangangela ovant ovarial ovarian ovarin ovarioabdominal ovariocele ovariocentesis ovariocyesis ovariodysneuria ovariohysterectomy ovariole ovariolumbar ovariorrhexis ovariosalpingectomy ovariosteresis ovariostomy ovariotomist ovariotomize ovariotomy ovariotubal ovarious ovaritis ovarium ovary ovate ovateconical ovated ovately ovation ovational ovationary ovatoacuminate ovatoconical ovatocordate ovatocylindraceous ovatodeltoid ovatoellipsoidal ovatoglobose ovatolanceolate ovatooblong ovatoorbicular ovatopyriform ovatoquadrangular ovatorotundate ovatoserrate ovatotriangular oven ovenbird ovenful ovenlike ovenly ovenman ovenpeel ovenstone ovenware ovenwise over overability overable overabound overabsorb overabstain overabstemious overabstemiousness overabundance overabundant overabundantly overabuse overaccentuate overaccumulate overaccumulation overaccuracy overaccurate overaccurately overact overaction overactive overactiveness overactivity overacute overaddiction overadvance overadvice overaffect overaffirmation overafflict overaffliction overage overageness overaggravate overaggravation overagitate overagonize overall overalled overalls overambitioned overambitious overambling overanalyze overangelic overannotate overanswer overanxiety overanxious overanxiously overappareled overappraisal overappraise overapprehended overapprehension overapprehensive overapt overarch overargue overarm overartificial overartificiality overassail overassert overassertion overassertive overassertively overassertiveness overassess overassessment overassumption overattached overattachment overattention overattentive overattentively overawe overawful overawn overawning overbake overbalance overballast overbalm overbanded overbandy overbank overbanked overbark overbarren overbarrenness overbase overbaseness overbashful overbashfully overbashfulness overbattle overbear overbearance overbearer overbearing overbearingly overbearingness overbeat overbeating overbeetling overbelief overbend overbepatched overberg overbet overbias overbid overbig overbigness overbillow overbit overbite overbitten overbitter overbitterly overbitterness overblack overblame overblaze overbleach overblessed overblessedness overblind overblindly overblithe overbloom overblouse overblow overblowing overblown overboard overboast overboastful overbodice overboding overbody overboil overbold overboldly overboldness overbook overbookish overbooming overborne overborrow overbought overbound overbounteous overbounteously overbounteousness overbow overbowed overbowl overbrace overbragging overbrained overbranch overbrave overbravely overbravery overbray overbreak overbreathe overbred overbreed overbribe overbridge overbright overbrightly overbrightness overbrilliancy overbrilliant overbrilliantly overbrim overbrimmingly overbroaden overbroil overbrood overbrow overbrown overbrowse overbrush overbrutal overbrutality overbrutalize overbrutally overbubbling overbuild overbuilt overbulk overbulky overbumptious overburden overburdeningly overburdensome overburn overburned overburningly overburnt overburst overburthen overbusily overbusiness overbusy overbuy overby overcall overcanny overcanopy overcap overcapable overcapably overcapacity overcape overcapitalization overcapitalize overcaptious overcaptiously overcaptiousness overcard overcare overcareful overcarefully overcareless overcarelessly overcarelessness overcaring overcarking overcarry overcast overcasting overcasual overcasually overcatch overcaution overcautious overcautiously overcautiousness overcentralization overcentralize overcertification overcertify overchafe overchannel overchant overcharge overchargement overcharger overcharitable overcharitably overcharity overchase overcheap overcheaply overcheapness overcheck overcherish overchidden overchief overchildish overchildishness overchill overchlorinate overchoke overchrome overchurch overcirculate overcircumspect overcircumspection overcivil overcivility overcivilization overcivilize overclaim overclamor overclasp overclean overcleanly overcleanness overcleave overclever overcleverness overclimb overcloak overclog overclose overclosely overcloseness overclothe overclothes overcloud overcloy overcluster overcoached overcoat overcoated overcoating overcoil overcold overcoldly overcollar overcolor overcomable overcome overcomer overcomingly overcommand overcommend overcommon overcommonly overcommonness overcompensate overcompensation overcompensatory overcompetition overcompetitive overcomplacency overcomplacent overcomplacently overcomplete overcomplex overcomplexity overcompliant overcompound overconcentrate overconcentration overconcern overconcerned overcondensation overcondense overconfidence overconfident overconfidently overconfute overconquer overconscientious overconscious overconsciously overconsciousness overconservatism overconservative overconservatively overconsiderate overconsiderately overconsideration overconsume overconsumption overcontented overcontentedly overcontentment overcontract overcontraction overcontribute overcontribution overcook overcool overcoolly overcopious overcopiously overcopiousness overcorned overcorrect overcorrection overcorrupt overcorruption overcorruptly overcostly overcount overcourteous overcourtesy overcover overcovetous overcovetousness overcow overcoy overcoyness overcram overcredit overcredulity overcredulous overcredulously overcreed overcreep overcritical overcritically overcriticalness overcriticism overcriticize overcrop overcross overcrow overcrowd overcrowded overcrowdedly overcrowdedness overcrown overcrust overcry overcull overcultivate overcultivation overculture overcultured overcumber overcunning overcunningly overcunningness overcup overcured overcurious overcuriously overcuriousness overcurl overcurrency overcurrent overcurtain overcustom overcut overcutter overcutting overdaintily overdaintiness overdainty overdamn overdance overdangle overdare overdaringly overdarken overdash overdazed overdazzle overdeal overdear overdearly overdearness overdeck overdecorate overdecoration overdecorative overdeeming overdeep overdeepen overdeeply overdeliberate overdeliberation overdelicacy overdelicate overdelicately overdelicious overdeliciously overdelighted overdelightedly overdemand overdemocracy overdepress overdepressive overdescant overdesire overdesirous overdesirousness overdestructive overdestructively overdestructiveness overdetermination overdetermined overdevelop overdevelopment overdevoted overdevotedly overdevotion overdiffuse overdiffusely overdiffuseness overdigest overdignified overdignifiedly overdignifiedness overdignify overdignity overdiligence overdiligent overdiligently overdilute overdilution overdischarge overdiscipline overdiscount overdiscourage overdiscouragement overdistance overdistant overdistantly overdistantness overdistempered overdistention overdiverse overdiversely overdiversification overdiversify overdiversity overdo overdoctrinize overdoer overdogmatic overdogmatically overdogmatism overdome overdominate overdone overdoor overdosage overdose overdoubt overdoze overdraft overdrain overdrainage overdramatic overdramatically overdrape overdrapery overdraw overdrawer overdream overdrench overdress overdrifted overdrink overdrip overdrive overdriven overdroop overdrowsed overdry overdubbed overdue overdunged overdure overdust overdye overeager overeagerly overeagerness overearnest overearnestly overearnestness overeasily overeasiness overeasy overeat overeaten overedge overedit overeducate overeducated overeducation overeducative overeffort overegg overelaborate overelaborately overelaboration overelate overelegance overelegancy overelegant overelegantly overelliptical overembellish overembellishment overembroider overemotional overemotionality overemotionalize overemphasis overemphasize overemphatic overemphatically overemphaticness overempired overemptiness overempty overenter overenthusiasm overenthusiastic overentreat overentry overequal overestimate overestimation overexcelling overexcitability overexcitable overexcitably overexcite overexcitement overexercise overexert overexerted overexertedly overexertedness overexertion overexpand overexpansion overexpansive overexpect overexpectant overexpectantly overexpenditure overexpert overexplain overexplanation overexpose overexposure overexpress overexquisite overexquisitely overextend overextension overextensive overextreme overexuberant overeye overeyebrowed overface overfacile overfacilely overfacility overfactious overfactiousness overfag overfagged overfaint overfaith overfaithful overfaithfully overfall overfamed overfamiliar overfamiliarity overfamiliarly overfamous overfanciful overfancy overfar overfast overfastidious overfastidiously overfastidiousness overfasting overfat overfatigue overfatten overfavor overfavorable overfavorably overfear overfearful overfearfully overfearfulness overfeast overfeatured overfed overfee overfeed overfeel overfellowlike overfellowly overfelon overfeminine overfeminize overfertile overfertility overfestoon overfew overfierce overfierceness overfile overfill overfilm overfine overfinished overfish overfit overfix overflatten overfleece overfleshed overflexion overfling overfloat overflog overflood overflorid overfloridness overflourish overflow overflowable overflower overflowing overflowingly overflowingness overflown overfluency overfluent overfluently overflush overflutter overfly overfold overfond overfondle overfondly overfondness overfoolish overfoolishly overfoolishness overfoot overforce overforged overformed overforward overforwardly overforwardness overfought overfoul overfoully overfrail overfrailty overfranchised overfrank overfrankly overfrankness overfraught overfree overfreedom overfreely overfreight overfrequency overfrequent overfrequently overfret overfrieze overfrighted overfrighten overfroth overfrown overfrozen overfruited overfruitful overfull overfullness overfunctioning overfurnish overgaiter overgalled overgamble overgang overgarment overgarrison overgaze overgeneral overgeneralize overgenerally overgenerosity overgenerous overgenerously overgenial overgeniality overgentle overgently overget overgifted overgild overgilted overgird overgirded overgirdle overglad overgladly overglance overglass overglaze overglide overglint overgloom overgloominess overgloomy overglorious overgloss overglut overgo overgoad overgod overgodliness overgodly overgood overgorge overgovern overgovernment overgown overgrace overgracious overgrade overgrain overgrainer overgrasping overgrateful overgratefully overgratification overgratify overgratitude overgraze overgreasiness overgreasy overgreat overgreatly overgreatness overgreed overgreedily overgreediness overgreedy overgrieve overgrievous overgrind overgross overgrossly overgrossness overground overgrow overgrown overgrowth overguilty overgun overhair overhalf overhand overhanded overhandicap overhandle overhang overhappy overharass overhard overharden overhardness overhardy overharsh overharshly overharshness overhaste overhasten overhastily overhastiness overhasty overhate overhatted overhaughty overhaul overhauler overhead overheadiness overheadman overheady overheap overhear overhearer overheartily overhearty overheat overheatedly overheave overheaviness overheavy overheight overheighten overheinous overheld overhelp overhelpful overhigh overhighly overhill overhit overholiness overhollow overholy overhomeliness overhomely overhonest overhonestly overhonesty overhonor overhorse overhot overhotly overhour overhouse overhover overhuge overhuman overhumanity overhumanize overhung overhunt overhurl overhurriedly overhurry overhusk overhysterical overidealism overidealistic overidle overidly overillustrate overillustration overimaginative overimaginativeness overimitate overimitation overimitative overimitatively overimport overimportation overimpress overimpressible overinclinable overinclination overinclined overincrust overincurious overindividualism overindividualistic overindulge overindulgence overindulgent overindulgently overindustrialization overindustrialize overinflate overinflation overinflative overinfluence overinfluential overinform overink overinsist overinsistence overinsistent overinsistently overinsolence overinsolent overinsolently overinstruct overinstruction overinsurance overinsure overintellectual overintellectuality overintense overintensely overintensification overintensity overinterest overinterested overinterestedness overinventoried overinvest overinvestment overiodize overirrigate overirrigation overissue overitching overjacket overjade overjaded overjawed overjealous overjealously overjealousness overjob overjocular overjoy overjoyful overjoyfully overjoyous overjudge overjudging overjudgment overjudicious overjump overjust overjutting overkeen overkeenness overkeep overkick overkind overkindly overkindness overking overknavery overknee overknow overknowing overlabor overlace overlactation overlade overlaid overlain overland Overlander overlander overlanguaged overlap overlard overlarge overlargely overlargeness overlascivious overlast overlate overlaudation overlaudatory overlaugh overlaunch overlave overlavish overlavishly overlax overlaxative overlaxly overlaxness overlay overlayer overlead overleaf overlean overleap overlearn overlearned overlearnedly overlearnedness overleather overleave overleaven overleer overleg overlegislation overleisured overlength overlettered overlewd overlewdly overlewdness overliberal overliberality overliberally overlicentious overlick overlie overlier overlift overlight overlighted overlightheaded overlightly overlightsome overliking overline overling overlinger overlinked overlip overlipping overlisted overlisten overliterary overlittle overlive overliveliness overlively overliver overload overloath overlock overlocker overlofty overlogical overlogically overlong overlook overlooker overloose overlord overlordship overloud overloup overlove overlover overlow overlowness overloyal overloyally overloyalty overlubricatio overluscious overlush overlustiness overlusty overluxuriance overluxuriant overluxurious overly overlying overmagnify overmagnitude overmajority overmalapert overman overmantel overmantle overmany overmarch overmark overmarking overmarl overmask overmast overmaster overmasterful overmasterfully overmasterfulness overmastering overmasteringly overmatch overmatter overmature overmaturity overmean overmeanly overmeanness overmeasure overmeddle overmeek overmeekly overmeekness overmellow overmellowness overmelodied overmelt overmerciful overmercifulness overmerit overmerrily overmerry overmettled overmickle overmighty overmild overmill overminute overminutely overminuteness overmix overmoccasin overmodest overmodestly overmodesty overmodulation overmoist overmoisten overmoisture overmortgage overmoss overmost overmotor overmount overmounts overmourn overmournful overmournfully overmuch overmuchness overmultiplication overmultiply overmultitude overname overnarrow overnarrowly overnationalization overnear overneat overneatness overneglect overnegligence overnegligent overnervous overnervously overnervousness overnet overnew overnice overnicely overniceness overnicety overnigh overnight overnimble overnipping overnoise overnotable overnourish overnoveled overnumber overnumerous overnumerousness overnurse overobedience overobedient overobediently overobese overobjectify overoblige overobsequious overobsequiously overobsequiousness overoffend overoffensive overofficered overofficious overorder overornamented overpained overpainful overpainfully overpainfulness overpaint overpamper overpart overparted overpartial overpartiality overpartially overparticular overparticularly overpass overpassionate overpassionately overpassionateness overpast overpatient overpatriotic overpay overpayment overpeer overpending overpensive overpensiveness overpeople overpepper overperemptory overpersuade overpersuasion overpert overpessimism overpessimistic overpet overphysic overpick overpicture overpinching overpitch overpitched overpiteous overplace overplaced overplacement overplain overplant overplausible overplay overplease overplenitude overplenteous overplenteously overplentiful overplenty overplot overplow overplumb overplume overplump overplumpness overplus overply overpointed overpoise overpole overpolemical overpolish overpolitic overponderous overpopular overpopularity overpopularly overpopulate overpopulation overpopulous overpopulousness overpositive overpossess overpot overpotent overpotential overpour overpower overpowerful overpowering overpoweringly overpoweringness overpraise overpray overpreach overprecise overpreciseness overpreface overpregnant overpreoccupation overpreoccupy overpress overpressure overpresumption overpresumptuous overprice overprick overprint overprize overprizer overprocrastination overproduce overproduction overproductive overproficient overprolific overprolix overprominence overprominent overprominently overpromise overprompt overpromptly overpromptness overprone overproneness overpronounced overproof overproportion overproportionate overproportionated overproportionately overproportioned overprosperity overprosperous overprotect overprotract overprotraction overproud overproudly overprove overprovender overprovide overprovident overprovidently overprovision overprovocation overprovoke overprune overpublic overpublicity overpuff overpuissant overpunish overpunishment overpurchase overquantity overquarter overquell overquick overquickly overquiet overquietly overquietness overrace overrack overrake overrange overrank overrankness overrapture overrapturize overrash overrashly overrashness overrate overrational overrationalize overravish overreach overreacher overreaching overreachingly overreachingness overread overreader overreadily overreadiness overready overrealism overrealistic overreckon overrecord overrefine overrefined overrefinement overreflection overreflective overregister overregistration overregular overregularity overregularly overregulate overregulation overrelax overreliance overreliant overreligion overreligious overremiss overremissly overremissness overrennet overrent overreplete overrepletion overrepresent overrepresentation overrepresentative overreserved overresolute overresolutely overrestore overrestrain overretention overreward overrich overriches overrichness override overrife overrigged overright overrighteous overrighteously overrighteousness overrigid overrigidity overrigidly overrigorous overrigorously overrim overriot overripe overripely overripen overripeness overrise overroast overroll overroof overrooted overrough overroughly overroughness overroyal overrude overrudely overrudeness overruff overrule overruler overruling overrulingly overrun overrunner overrunning overrunningly overrush overrusset overrust oversad oversadly oversadness oversaid oversail oversale oversaliva oversalt oversalty oversand oversanded oversanguine oversanguinely oversapless oversated oversatisfy oversaturate oversaturation oversauce oversauciness oversaucy oversave overscare overscatter overscented oversceptical overscepticism overscore overscour overscratch overscrawl overscream overscribble overscrub overscruple overscrupulosity overscrupulous overscrupulously overscrupulousness overscurf overscutched oversea overseal overseam overseamer oversearch overseas overseason overseasoned overseated oversecure oversecurely oversecurity oversee overseed overseen overseer overseerism overseership overseethe oversell oversend oversensible oversensibly oversensitive oversensitively oversensitiveness oversententious oversentimental oversentimentalism oversentimentalize oversentimentally overserious overseriously overseriousness overservice overservile overservility overset oversetter oversettle oversettled oversevere overseverely overseverity oversew overshade overshadow overshadower overshadowing overshadowingly overshadowment overshake oversharp oversharpness overshave oversheet overshelving overshepherd overshine overshirt overshoe overshoot overshort overshorten overshortly overshot overshoulder overshowered overshrink overshroud oversick overside oversight oversilence oversilent oversilver oversimple oversimplicity oversimplification oversimplify oversimply oversize oversized overskim overskip overskipper overskirt overslack overslander overslaugh overslavish overslavishly oversleep oversleeve overslide overslight overslip overslope overslow overslowly overslowness overslur oversmall oversman oversmite oversmitten oversmoke oversmooth oversmoothly oversmoothness oversnow oversoak oversoar oversock oversoft oversoftly oversoftness oversold oversolemn oversolemnity oversolemnly oversolicitous oversolicitously oversolicitousness oversoon oversoothing oversophisticated oversophistication oversorrow oversorrowed oversot oversoul oversound oversour oversourly oversourness oversow overspacious overspaciousness overspan overspangled oversparing oversparingly oversparingness oversparred overspatter overspeak overspecialization overspecialize overspeculate overspeculation overspeculative overspeech overspeed overspeedily overspeedy overspend overspill overspin oversplash overspread overspring oversprinkle oversprung overspun oversqueak oversqueamish oversqueamishness overstaff overstaid overstain overstale overstalled overstand overstaring overstate overstately overstatement overstay overstayal oversteadfast oversteadfastness oversteady overstep overstiff overstiffness overstifle overstimulate overstimulation overstimulative overstir overstitch overstock overstoop overstoping overstore overstory overstout overstoutly overstowage overstowed overstrain overstrait overstraiten overstraitly overstraitness overstream overstrength overstress overstretch overstrew overstrict overstrictly overstrictness overstride overstrident overstridently overstrike overstring overstriving overstrong overstrongly overstrung overstud overstudied overstudious overstudiously overstudiousness overstudy overstuff oversublime oversubscribe oversubscriber oversubscription oversubtile oversubtle oversubtlety oversubtly oversufficiency oversufficient oversufficiently oversuperstitious oversupply oversure oversurety oversurge oversurviving oversusceptibility oversusceptible oversuspicious oversuspiciously overswarm overswarth oversway oversweated oversweep oversweet oversweeten oversweetly oversweetness overswell overswift overswim overswimmer overswing overswinging overswirling oversystematic oversystematically oversystematize overt overtakable overtake overtaker overtalk overtalkative overtalkativeness overtalker overtame overtamely overtameness overtapped overtare overtariff overtarry overtart overtask overtax overtaxation overteach overtechnical overtechnicality overtedious overtediously overteem overtell overtempt overtenacious overtender overtenderly overtenderness overtense overtensely overtenseness overtension overterrible overtest overthick overthin overthink overthought overthoughtful overthriftily overthriftiness overthrifty overthrong overthrow overthrowable overthrowal overthrower overthrust overthwart overthwartly overthwartness overthwartways overthwartwise overtide overtight overtightly overtill overtimbered overtime overtimer overtimorous overtimorously overtimorousness overtinseled overtint overtip overtipple overtire overtiredness overtitle overtly overtness overtoe overtoil overtoise overtone overtongued overtop overtopple overtorture overtower overtrace overtrack overtrade overtrader overtrailed overtrain overtrample overtravel overtread overtreatment overtrick overtrim overtrouble overtrue overtrump overtrust overtrustful overtruthful overtruthfully overtumble overture overturn overturnable overturner overtutor overtwine overtwist overtype overuberous overunionized overunsuitable overurbanization overurge overuse overusual overusually overvaliant overvaluable overvaluation overvalue overvariety overvault overvehemence overvehement overveil overventilate overventilation overventuresome overventurous overview overvoltage overvote overwade overwages overwake overwalk overwander overward overwash overwasted overwatch overwatcher overwater overwave overway overwealth overwealthy overweaponed overwear overweary overweather overweave overweb overween overweener overweening overweeningly overweeningness overweep overweigh overweight overweightage overwell overwelt overwet overwetness overwheel overwhelm overwhelmer overwhelming overwhelmingly overwhelmingness overwhipped overwhirl overwhisper overwide overwild overwilily overwilling overwillingly overwily overwin overwind overwing overwinter overwiped overwisdom overwise overwisely overwithered overwoman overwomanize overwomanly overwood overwooded overwoody overword overwork overworld overworn overworry overworship overwound overwove overwoven overwrap overwrest overwrested overwrestle overwrite overwroth overwrought overyear overyoung overyouthful overzeal overzealous overzealously overzealousness ovest ovey Ovibos Ovibovinae ovibovine ovicapsular ovicapsule ovicell ovicellular ovicidal ovicide ovicular oviculated oviculum ovicyst ovicystic Ovidae Ovidian oviducal oviduct oviductal oviferous ovification oviform ovigenesis ovigenetic ovigenic ovigenous ovigerm ovigerous ovile Ovillus Ovinae ovine ovinia ovipara oviparal oviparity oviparous oviparously oviparousness oviposit oviposition ovipositor Ovis ovisac oviscapt ovism ovispermary ovispermiduct ovist ovistic ovivorous ovocyte ovoelliptic ovoflavin ovogenesis ovogenetic ovogenous ovogonium ovoid ovoidal ovolemma ovolo ovological ovologist ovology ovolytic ovomucoid ovoplasm ovoplasmic ovopyriform ovorhomboid ovorhomboidal ovotesticular ovotestis ovovitellin Ovovivipara ovoviviparism ovoviviparity ovoviviparous ovoviviparously ovoviviparousness Ovula ovular ovularian ovulary ovulate ovulation ovule ovuliferous ovuligerous ovulist ovum ow owd owe owelty Owen Owenia Owenian Owenism Owenist Owenite Owenize ower owerance owerby owercome owergang owerloup owertaen owerword owght owing owk owl owldom owler owlery owlet Owlglass owlhead owling owlish owlishly owlishness owlism owllight owllike Owlspiegle owly own owner ownerless ownership ownhood ownness ownself ownwayish owregane owrehip owrelay owse owsen owser owtchah owyheeite ox oxacid oxadiazole oxalacetic oxalaldehyde oxalamid oxalamide oxalan oxalate oxaldehyde oxalemia oxalic Oxalidaceae oxalidaceous Oxalis oxalite oxalodiacetic oxalonitril oxalonitrile oxaluramid oxaluramide oxalurate oxaluria oxaluric oxalyl oxalylurea oxamate oxamethane oxamic oxamid oxamide oxamidine oxammite oxan oxanate oxane oxanic oxanilate oxanilic oxanilide oxazine oxazole oxbane oxberry oxbird oxbiter oxblood oxbow oxboy oxbrake oxcart oxcheek oxdiacetic oxdiazole oxea oxeate oxen oxeote oxer oxetone oxeye oxfly Oxford Oxfordian Oxfordism Oxfordist oxgang oxgoad oxharrow oxhead oxheal oxheart oxhide oxhoft oxhorn oxhouse oxhuvud oxidability oxidable oxidant oxidase oxidate oxidation oxidational oxidative oxidator oxide oxidic oxidimetric oxidimetry oxidizability oxidizable oxidization oxidize oxidizement oxidizer oxidizing oxidoreductase oxidoreduction oxidulated oximate oximation oxime oxland oxlike oxlip oxman oxmanship oxoindoline Oxonian oxonic oxonium Oxonolatry oxozone oxozonide oxpecker oxphony oxreim oxshoe oxskin oxtail oxter oxtongue oxwort oxy oxyacanthine oxyacanthous oxyacetylene oxyacid Oxyaena Oxyaenidae oxyaldehyde oxyamine oxyanthracene oxyanthraquinone oxyaphia oxyaster oxybaphon Oxybaphus oxybenzaldehyde oxybenzene oxybenzoic oxybenzyl oxyberberine oxyblepsia oxybromide oxybutyria oxybutyric oxycalcium oxycalorimeter oxycamphor oxycaproic oxycarbonate oxycellulose oxycephalic oxycephalism oxycephalous oxycephaly oxychlorate oxychloric oxychloride oxycholesterol oxychromatic oxychromatin oxychromatinic oxycinnamic oxycobaltammine Oxycoccus oxycopaivic oxycoumarin oxycrate oxycyanide oxydactyl Oxydendrum oxydiact oxyesthesia oxyether oxyethyl oxyfatty oxyfluoride oxygas oxygen oxygenant oxygenate oxygenation oxygenator oxygenerator oxygenic oxygenicity oxygenium oxygenizable oxygenize oxygenizement oxygenizer oxygenous oxygeusia oxygnathous oxyhalide oxyhaloid oxyhematin oxyhemocyanin oxyhemoglobin oxyhexactine oxyhexaster oxyhydrate oxyhydric oxyhydrogen oxyiodide oxyketone oxyl Oxylabracidae Oxylabrax oxyluciferin oxyluminescence oxyluminescent oxymandelic oxymel oxymethylene oxymoron oxymuriate oxymuriatic oxynaphthoic oxynaphtoquinone oxynarcotine oxyneurin oxyneurine oxynitrate oxyntic oxyophitic oxyopia Oxyopidae oxyosphresia oxypetalous oxyphenol oxyphenyl oxyphile oxyphilic oxyphilous oxyphonia oxyphosphate oxyphthalic oxyphyllous oxyphyte oxypicric Oxypolis oxyproline oxypropionic oxypurine oxypycnos oxyquinaseptol oxyquinoline oxyquinone oxyrhine oxyrhinous oxyrhynch oxyrhynchous oxyrhynchus Oxyrrhyncha oxyrrhynchid oxysalicylic oxysalt oxystearic Oxystomata oxystomatous oxystome oxysulphate oxysulphide oxyterpene oxytocia oxytocic oxytocin oxytocous oxytoluene oxytoluic oxytone oxytonesis oxytonical oxytonize Oxytricha Oxytropis oxytylotate oxytylote oxyuriasis oxyuricide Oxyuridae oxyurous oxywelding Oyana oyapock oyer oyster oysterage oysterbird oystered oysterer oysterfish oystergreen oysterhood oysterhouse oystering oysterish oysterishness oysterlike oysterling oysterman oysterous oysterroot oysterseed oystershell oysterwife oysterwoman Ozan Ozark ozarkite ozena Ozias ozobrome ozocerite ozokerit ozokerite ozonate ozonation ozonator ozone ozoned ozonic ozonide ozoniferous ozonification ozonify Ozonium ozonization ozonize ozonizer ozonometer ozonometry ozonoscope ozonoscopic ozonous ozophen ozophene ozostomia ozotype P p pa paal paar paauw Paba pabble Pablo pablo pabouch pabular pabulary pabulation pabulatory pabulous pabulum pac paca pacable Pacaguara pacate pacation pacative pacay pacaya Paccanarist Pacchionian Pace pace paceboard paced pacemaker pacemaking pacer pachak pachisi pachnolite pachometer Pachomian Pachons Pacht pachyacria pachyaemia pachyblepharon pachycarpous pachycephal pachycephalia pachycephalic pachycephalous pachycephaly pachychilia pachycholia pachychymia pachycladous pachydactyl pachydactylous pachydactyly pachyderm pachyderma pachydermal Pachydermata pachydermatocele pachydermatoid pachydermatosis pachydermatous pachydermatously pachydermia pachydermial pachydermic pachydermoid pachydermous pachyemia pachyglossal pachyglossate pachyglossia pachyglossous pachyhaemia pachyhaemic pachyhaemous pachyhematous pachyhemia pachyhymenia pachyhymenic Pachylophus pachylosis Pachyma pachymenia pachymenic pachymeningitic pachymeningitis pachymeninx pachymeter pachynathous pachynema pachynsis pachyntic pachyodont pachyotia pachyotous pachyperitonitis pachyphyllous pachypleuritic pachypod pachypodous pachypterous Pachyrhizus pachyrhynchous pachysalpingitis Pachysandra pachysaurian pachysomia pachysomous pachystichous Pachystima pachytene pachytrichous Pachytylus pachyvaginitis pacifiable pacific pacifical pacifically pacificate pacification pacificator pacificatory pacificism pacificist pacificity pacifier pacifism pacifist pacifistic pacifistically pacify pacifyingly Pacinian pack packable package packbuilder packcloth packer packery packet packhouse packless packly packmaker packmaking packman packmanship packness packsack packsaddle packstaff packthread packwall packwaller packware packway paco Pacolet pacouryuva pact paction pactional pactionally Pactolian Pactolus pad padcloth Padda padder padding paddle paddlecock paddled paddlefish paddlelike paddler paddlewood paddling paddock paddockride paddockstone paddockstool Paddy paddy paddybird Paddyism paddymelon Paddywack paddywatch Paddywhack paddywhack padella padfoot padge Padina padishah padle padlike padlock padmasana padmelon padnag padpiece Padraic Padraig padre padroadist padroado padronism padstone padtree Paduan Paduanism paduasoy Padus paean paeanism paeanize paedarchy paedatrophia paedatrophy paediatry paedogenesis paedogenetic paedometer paedometrical paedomorphic paedomorphism paedonymic paedonymy paedopsychologist paedotribe paedotrophic paedotrophist paedotrophy paegel paegle Paelignian paenula paeon Paeonia Paeoniaceae Paeonian paeonic paetrick paga pagan Paganalia Paganalian pagandom paganic paganical paganically paganish paganishly paganism paganist paganistic paganity paganization paganize paganizer paganly paganry pagatpat Page page pageant pageanted pageanteer pageantic pageantry pagedom pageful pagehood pageless pagelike pager pageship pagina paginal paginary paginate pagination pagiopod Pagiopoda pagoda pagodalike pagodite pagoscope pagrus Paguma pagurian pagurid Paguridae Paguridea pagurine Pagurinea paguroid Paguroidea Pagurus pagus pah paha Pahareen Pahari Paharia pahi Pahlavi pahlavi pahmi paho pahoehoe Pahouin pahutan Paiconeca paideutic paideutics paidological paidologist paidology paidonosology paigle paik pail pailful paillasse paillette pailletted pailou paimaneh pain pained painful painfully painfulness paining painingly painkiller painless painlessly painlessness painproof painstaker painstaking painstakingly painstakingness painsworthy paint paintability paintable paintableness paintably paintbox paintbrush painted paintedness painter painterish painterlike painterly paintership paintiness painting paintingness paintless paintpot paintproof paintress paintrix paintroot painty paip pair paired pairedness pairer pairment pairwise pais paisa paisanite Paisley Paiute paiwari pajahuello pajama pajamaed pajock Pajonism Pakawa Pakawan pakchoi pakeha Pakhpuluk Pakhtun Pakistani paktong pal Pala palace palaced palacelike palaceous palaceward palacewards paladin palaeanthropic Palaearctic Palaeechini palaeechinoid Palaeechinoidea palaeechinoidean palaeentomology palaeethnologic palaeethnological palaeethnologist palaeethnology Palaeeudyptes Palaeic palaeichthyan Palaeichthyes palaeichthyic Palaemon palaemonid Palaemonidae palaemonoid palaeoalchemical palaeoanthropic palaeoanthropography palaeoanthropology Palaeoanthropus palaeoatavism palaeoatavistic palaeobiogeography palaeobiologist palaeobiology palaeobotanic palaeobotanical palaeobotanically palaeobotanist palaeobotany Palaeocarida palaeoceanography Palaeocene palaeochorology palaeoclimatic palaeoclimatology Palaeoconcha palaeocosmic palaeocosmology Palaeocrinoidea palaeocrystal palaeocrystallic palaeocrystalline palaeocrystic palaeocyclic palaeodendrologic palaeodendrological palaeodendrologically palaeodendrologist palaeodendrology Palaeodictyoptera palaeodictyopteran palaeodictyopteron palaeodictyopterous palaeoencephalon palaeoeremology palaeoethnic palaeoethnologic palaeoethnological palaeoethnologist palaeoethnology palaeofauna Palaeogaea Palaeogaean palaeogene palaeogenesis palaeogenetic palaeogeographic palaeogeography palaeoglaciology palaeoglyph Palaeognathae palaeognathic palaeognathous palaeograph palaeographer palaeographic palaeographical palaeographically palaeographist palaeography palaeoherpetologist palaeoherpetology palaeohistology palaeohydrography palaeolatry palaeolimnology palaeolith palaeolithic palaeolithical palaeolithist palaeolithoid palaeolithy palaeological palaeologist palaeology Palaeomastodon palaeometallic palaeometeorological palaeometeorology Palaeonemertea palaeonemertean palaeonemertine Palaeonemertinea Palaeonemertini palaeoniscid Palaeoniscidae palaeoniscoid Palaeoniscum Palaeoniscus palaeontographic palaeontographical palaeontography palaeopathology palaeopedology palaeophile palaeophilist Palaeophis palaeophysiography palaeophysiology palaeophytic palaeophytological palaeophytologist palaeophytology palaeoplain palaeopotamology palaeopsychic palaeopsychological palaeopsychology palaeoptychology Palaeornis Palaeornithinae palaeornithine palaeornithological palaeornithology palaeosaur Palaeosaurus palaeosophy Palaeospondylus Palaeostraca palaeostracan palaeostriatal palaeostriatum palaeostylic palaeostyly palaeotechnic palaeothalamus Palaeothentes Palaeothentidae palaeothere palaeotherian Palaeotheriidae palaeotheriodont palaeotherioid Palaeotherium palaeotheroid Palaeotropical palaeotype palaeotypic palaeotypical palaeotypically palaeotypographical palaeotypographist palaeotypography palaeovolcanic Palaeozoic palaeozoological palaeozoologist palaeozoology palaestra palaestral palaestrian palaestric palaestrics palaetiological palaetiologist palaetiology palafitte palagonite palagonitic Palaic Palaihnihan palaiotype palaite palama palamate palame Palamedea palamedean Palamedeidae Palamite Palamitism palampore palander palanka palankeen palanquin palapalai Palapteryx Palaquium palar palas palatability palatable palatableness palatably palatal palatalism palatality palatalization palatalize palate palated palateful palatefulness palateless palatelike palatial palatially palatialness palatian palatic palatinal palatinate palatine palatineship Palatinian palatinite palation palatist palatitis palative palatization palatize palatoalveolar palatodental palatoglossal palatoglossus palatognathous palatogram palatograph palatography palatomaxillary palatometer palatonasal palatopharyngeal palatopharyngeus palatoplasty palatoplegia palatopterygoid palatoquadrate palatorrhaphy palatoschisis Palatua Palau Palaung palaver palaverer palaverist palaverment palaverous palay palazzi palberry palch pale palea paleaceous paleanthropic Palearctic paleate palebelly palebuck palechinoid paled paledness paleencephalon paleentomology paleethnographer paleethnologic paleethnological paleethnologist paleethnology paleface palehearted paleichthyologic paleichthyologist paleichthyology paleiform palely Paleman paleness Palenque paleoalchemical paleoandesite paleoanthropic paleoanthropography paleoanthropological paleoanthropologist paleoanthropology Paleoanthropus paleoatavism paleoatavistic paleobiogeography paleobiologist paleobiology paleobotanic paleobotanical paleobotanically paleobotanist paleobotany paleoceanography Paleocene paleochorology paleoclimatic paleoclimatologist paleoclimatology Paleoconcha paleocosmic paleocosmology paleocrystal paleocrystallic paleocrystalline paleocrystic paleocyclic paleodendrologic paleodendrological paleodendrologically paleodendrologist paleodendrology paleoecologist paleoecology paleoencephalon paleoeremology paleoethnic paleoethnography paleoethnologic paleoethnological paleoethnologist paleoethnology paleofauna Paleogene paleogenesis paleogenetic paleogeographic paleogeography paleoglaciology paleoglyph paleograph paleographer paleographic paleographical paleographically paleographist paleography paleoherpetologist paleoherpetology paleohistology paleohydrography paleoichthyology paleokinetic paleola paleolate paleolatry paleolimnology paleolith paleolithic paleolithical paleolithist paleolithoid paleolithy paleological paleologist paleology paleomammalogy paleometallic paleometeorological paleometeorology paleontographic paleontographical paleontography paleontologic paleontological paleontologically paleontologist paleontology paleopathology paleopedology paleophysiography paleophysiology paleophytic paleophytological paleophytologist paleophytology paleopicrite paleoplain paleopotamoloy paleopsychic paleopsychological paleopsychology paleornithological paleornithology paleostriatal paleostriatum paleostylic paleostyly paleotechnic paleothalamus paleothermal paleothermic Paleotropical paleovolcanic paleoytterbium Paleozoic paleozoological paleozoologist paleozoology paler Palermitan Palermo Pales Palesman Palestinian palestra palestral palestrian palestric palet paletiology paletot palette paletz palewise palfrey palfreyed palgat Pali pali Palicourea palification paliform paligorskite palikar palikarism palikinesia palila palilalia Palilia Palilicium palillogia palilogetic palilogy palimbacchic palimbacchius palimpsest palimpsestic palinal palindrome palindromic palindromical palindromically palindromist paling palingenesia palingenesian palingenesis palingenesist palingenesy palingenetic palingenetically palingenic palingenist palingeny palinode palinodial palinodic palinodist palinody palinurid Palinuridae palinuroid Palinurus paliphrasia palirrhea palisade palisading palisado palisander palisfy palish palistrophia Paliurus palkee pall palla palladammine Palladia palladia Palladian Palladianism palladic palladiferous palladinize palladion palladious Palladium palladium palladiumize palladize palladodiammine palladosammine palladous pallae pallah pallall pallanesthesia Pallas pallasite pallbearer palled pallescence pallescent pallesthesia pallet palleting palletize pallette pallholder palli pallial palliard palliasse Palliata palliata palliate palliation palliative palliatively palliator palliatory pallid pallidiflorous pallidipalpate palliditarsate pallidity pallidiventrate pallidly pallidness palliness Palliobranchiata palliobranchiate palliocardiac pallioessexite pallion palliopedal palliostratus pallium Palliyan pallograph pallographic pallometric pallone pallor Pallu Palluites pallwise pally palm palma Palmaceae palmaceous palmad Palmae palmanesthesia palmar palmarian palmary palmate palmated palmately palmatifid palmatiform palmatilobate palmatilobed palmation palmatiparted palmatipartite palmatisect palmatisected palmature palmcrist palmed Palmella Palmellaceae palmellaceous palmelloid palmer palmerite palmery palmesthesia palmette palmetto palmetum palmful palmicolous palmiferous palmification palmiform palmigrade palmilobate palmilobated palmilobed palminervate palminerved palmiped Palmipedes palmipes palmist palmister palmistry palmitate palmite palmitic palmitin palmitinic palmito palmitoleic palmitone palmiveined palmivorous palmlike palmo palmodic palmoscopy palmospasmus palmula palmus palmwise palmwood palmy palmyra Palmyrene Palmyrenian palolo palombino palometa palomino palosapis palouser paloverde palp palpability palpable palpableness palpably palpacle palpal palpate palpation palpatory palpebra palpebral palpebrate palpebration palpebritis palped palpi palpicorn Palpicornia palpifer palpiferous palpiform palpiger palpigerous palpitant palpitate palpitatingly palpitation palpless palpocil palpon palpulus palpus palsgrave palsgravine palsied palsification palstave palster palsy palsylike palsywort palt Palta palter palterer palterly paltrily paltriness paltry paludal paludament paludamentum paludial paludian paludic Paludicella Paludicolae paludicole paludicoline paludicolous paludiferous Paludina paludinal paludine paludinous paludism paludose paludous paludrin paludrine palule palulus Palus palus palustral palustrian palustrine paly palynology Pam pam pambanmanche Pamela pament pameroon Pamir Pamiri Pamirian Pamlico pamment Pampanga Pampangan Pampango pampas pampean pamper pampered pamperedly pamperedness pamperer pamperize pampero pamphagous pampharmacon Pamphiliidae Pamphilius pamphlet pamphletage pamphletary pamphleteer pamphleter pamphletful pamphletic pamphletical pamphletize pamphletwise pamphysical pamphysicism pampilion pampiniform pampinocele pamplegia pampootee pampootie pampre pamprodactyl pamprodactylism pamprodactylous pampsychism pampsychist Pamunkey Pan pan panace Panacea panacea panacean panaceist panache panached panachure panada panade Panagia panagiarion Panak Panaka panama Panamaian Panaman Panamanian Panamano Panamic Panamint Panamist panapospory panarchic panarchy panaris panaritium panarteritis panarthritis panary panatela Panathenaea Panathenaean Panathenaic panatrophy panautomorphic panax Panayan Panayano panbabylonian panbabylonism Panboeotian pancake pancarditis panchama panchayat pancheon panchion panchromatic panchromatism panchromatization panchromatize panchway panclastic panconciliatory pancosmic pancosmism pancosmist pancratian pancratiast pancratiastic pancratic pancratical pancratically pancration pancratism pancratist pancratium pancreas pancreatalgia pancreatectomize pancreatectomy pancreatemphraxis pancreathelcosis pancreatic pancreaticoduodenal pancreaticoduodenostomy pancreaticogastrostomy pancreaticosplenic pancreatin pancreatism pancreatitic pancreatitis pancreatization pancreatize pancreatoduodenectomy pancreatoenterostomy pancreatogenic pancreatogenous pancreatoid pancreatolipase pancreatolith pancreatomy pancreatoncus pancreatopathy pancreatorrhagia pancreatotomy pancreectomy pancreozymin pancyclopedic pand panda pandal pandan Pandanaceae pandanaceous Pandanales Pandanus pandaram Pandarctos pandaric Pandarus pandation Pandean pandect Pandectist pandemia pandemian pandemic pandemicity pandemoniac Pandemoniacal Pandemonian pandemonic pandemonism Pandemonium pandemonium Pandemos pandemy pandenominational pander panderage panderer panderess panderism panderize panderly Panderma pandermite panderous pandership pandestruction pandiabolism pandiculation Pandion Pandionidae pandita pandle pandlewhew Pandora pandora Pandorea Pandoridae Pandorina Pandosto pandour pandowdy pandrop pandura pandurate pandurated panduriform pandy pane panecclesiastical paned panegoism panegoist panegyric panegyrical panegyrically panegyricize panegyricon panegyricum panegyris panegyrist panegyrize panegyrizer panegyry paneity panel panela panelation paneler paneless paneling panelist panellation panelling panelwise panelwork panentheism panesthesia panesthetic paneulogism panfil panfish panful pang Pangaea pangamic pangamous pangamously pangamy pangane Pangasinan pangen pangene pangenesis pangenetic pangenetically pangenic pangful pangi Pangium pangless panglessly panglima Pangloss Panglossian Panglossic pangolin pangrammatist Pangwe panhandle panhandler panharmonic panharmonicon panhead panheaded Panhellenic Panhellenios Panhellenism Panhellenist Panhellenium panhidrosis panhuman panhygrous panhyperemia panhysterectomy Pani panic panical panically panicful panichthyophagous panicked panicky panicle panicled paniclike panicmonger panicmongering paniconograph paniconographic paniconography Panicularia paniculate paniculated paniculately paniculitis Panicum panidiomorphic panidrosis panification panimmunity Paninean Panionia Panionian Panionic Paniquita Paniquitan panisc panisca paniscus panisic panivorous Panjabi panjandrum pank pankin pankration panleucopenia panlogical panlogism panlogistical panman panmelodicon panmelodion panmerism panmeristic panmixia panmixy panmnesia panmug panmyelophthisis Panna pannade pannage pannam pannationalism panne pannel panner pannery panneuritic panneuritis pannicle pannicular pannier panniered pannierman pannikin panning Pannonian Pannonic pannose pannosely pannum pannus pannuscorium Panoan panocha panoche panococo panoistic panomphaic panomphean panomphic panophobia panophthalmia panophthalmitis panoplied panoplist panoply panoptic panoptical panopticon panoram panorama panoramic panoramical panoramically panoramist panornithic Panorpa Panorpatae panorpian panorpid Panorpidae Panos panosteitis panostitis panotitis panotype panouchi panpathy panpharmacon panphenomenalism panphobia Panpipe panplegia panpneumatism panpolism panpsychic panpsychism panpsychist panpsychistic panscientist pansciolism pansciolist pansclerosis pansclerotic panse pansexism pansexual pansexualism pansexualist pansexuality pansexualize panshard panside pansideman pansied pansinuitis pansinusitis pansmith pansophic pansophical pansophically pansophism pansophist pansophy panspermatism panspermatist panspermia panspermic panspermism panspermist panspermy pansphygmograph panstereorama pansy pansylike pant pantachromatic pantacosm pantagamy pantagogue pantagraph pantagraphic pantagraphical Pantagruel Pantagruelian Pantagruelic Pantagruelically Pantagrueline pantagruelion Pantagruelism Pantagruelist Pantagruelistic Pantagruelistical Pantagruelize pantaleon pantaletless pantalets pantaletted pantalgia pantalon Pantalone pantaloon pantalooned pantaloonery pantaloons pantameter pantamorph pantamorphia pantamorphic pantanemone pantanencephalia pantanencephalic pantaphobia pantarbe pantarchy pantas pantascope pantascopic Pantastomatida Pantastomina pantatrophia pantatrophy pantatype pantechnic pantechnicon pantelegraph pantelegraphy panteleologism pantelephone pantelephonic Pantelis pantellerite panter panterer Pantheian pantheic pantheism pantheist pantheistic pantheistical pantheistically panthelematism panthelism pantheologist pantheology pantheon pantheonic pantheonization pantheonize panther pantheress pantherine pantherish pantherlike pantherwood pantheum pantie panties pantile pantiled pantiling panting pantingly pantisocracy pantisocrat pantisocratic pantisocratical pantisocratist pantle pantler panto pantochrome pantochromic pantochromism pantochronometer Pantocrator pantod Pantodon Pantodontidae pantoffle pantofle pantoganglitis pantogelastic pantoglossical pantoglot pantoglottism pantograph pantographer pantographic pantographical pantographically pantography pantoiatrical pantologic pantological pantologist pantology pantomancer pantometer pantometric pantometrical pantometry pantomime pantomimic pantomimical pantomimically pantomimicry pantomimish pantomimist pantomimus pantomnesia pantomnesic pantomorph pantomorphia pantomorphic panton pantoon pantopelagian pantophagic pantophagist pantophagous pantophagy pantophile pantophobia pantophobic pantophobous pantoplethora pantopod Pantopoda pantopragmatic pantopterous pantoscope pantoscopic pantosophy Pantostomata pantostomate pantostomatous pantostome pantotactic pantothenate pantothenic Pantotheria pantotherian pantotype pantoum pantropic pantropical pantry pantryman pantrywoman pants pantun panty pantywaist panung panurgic panurgy panyar Panzer panzoism panzootia panzootic panzooty Paola paolo paon pap papa papability papable papabot papacy papagallo Papago papain papal papalism papalist papalistic papalization papalize papalizer papally papalty papane papaphobia papaphobist papaprelatical papaprelatist paparchical paparchy papaship Papaver Papaveraceae papaveraceous Papaverales papaverine papaverous papaw papaya Papayaceae papayaceous papayotin papboat pape papelonne paper paperback paperbark paperboard papered paperer paperful paperiness papering paperlike papermaker papermaking papermouth papern papershell paperweight papery papess papeterie papey Paphian Paphiopedilum Papiamento papicolar papicolist Papilio Papilionaceae papilionaceous Papiliones papilionid Papilionidae Papilionides Papilioninae papilionine papilionoid Papilionoidea papilla papillae papillar papillary papillate papillated papillectomy papilledema papilliferous papilliform papillitis papilloadenocystoma papillocarcinoma papilloedema papilloma papillomatosis papillomatous papillon papilloretinitis papillosarcoma papillose papillosity papillote papillous papillulate papillule Papinachois Papio papion papish papisher papism Papist papist papistic papistical papistically papistlike papistly papistry papize papless papmeat papolater papolatrous papolatry papoose papooseroot Pappea pappescent pappi pappiferous pappiform pappose pappox pappus pappy papreg paprica paprika Papuan papula papular papulate papulated papulation papule papuliferous papuloerythematous papulopustular papulopustule papulose papulosquamous papulous papulovesicular papyr papyraceous papyral papyrean papyri papyrian papyrin papyrine papyritious papyrocracy papyrograph papyrographer papyrographic papyrography papyrological papyrologist papyrology papyrophobia papyroplastics papyrotamia papyrotint papyrotype papyrus Paque paquet par para paraaminobenzoic parabanate parabanic parabaptism parabaptization parabasal parabasic parabasis parabema parabematic parabenzoquinone parabiosis parabiotic parablast parablastic parable parablepsia parablepsis parablepsy parableptic parabola parabolanus parabolic parabolical parabolicalism parabolically parabolicness paraboliform parabolist parabolization parabolize parabolizer paraboloid paraboloidal parabomb parabotulism parabranchia parabranchial parabranchiate parabulia parabulic paracanthosis paracarmine paracasein paracaseinate Paracelsian Paracelsianism Paracelsic Paracelsist Paracelsistic Paracelsus paracentesis paracentral paracentric paracentrical paracephalus paracerebellar paracetaldehyde parachaplain paracholia parachor parachordal parachrea parachroia parachroma parachromatism parachromatophorous parachromatopsia parachromatosis parachrome parachromoparous parachromophoric parachromophorous parachronism parachronistic parachrose parachute parachutic parachutism parachutist paraclete paracmasis paracme paracoele paracoelian paracolitis paracolon paracolpitis paracolpium paracondyloid paracone paraconic paraconid paraconscious paracorolla paracotoin paracoumaric paracresol Paracress paracusia paracusic paracyanogen paracyesis paracymene paracystic paracystitis paracystium parade paradeful paradeless paradelike paradenitis paradental paradentitis paradentium parader paraderm paradiastole paradiazine paradichlorbenzene paradichlorbenzol paradichlorobenzene paradichlorobenzol paradidymal paradidymis paradigm paradigmatic paradigmatical paradigmatically paradigmatize parading paradingly paradiplomatic paradisaic paradisaically paradisal paradise Paradisea paradisean Paradiseidae Paradiseinae Paradisia paradisiac paradisiacal paradisiacally paradisial paradisian paradisic paradisical parado paradoctor parados paradoses paradox paradoxal paradoxer paradoxial paradoxic paradoxical paradoxicalism paradoxicality paradoxically paradoxicalness paradoxician Paradoxides paradoxidian paradoxism paradoxist paradoxographer paradoxographical paradoxology paradoxure Paradoxurinae paradoxurine Paradoxurus paradoxy paradromic paraenesis paraenesize paraenetic paraenetical paraengineer paraffin paraffine paraffiner paraffinic paraffinize paraffinoid paraffiny paraffle parafle parafloccular paraflocculus paraform paraformaldehyde parafunction paragammacism paraganglion paragaster paragastral paragastric paragastrula paragastrular parage paragenesia paragenesis paragenetic paragenic paragerontic parageusia parageusic parageusis paragglutination paraglenal paraglobin paraglobulin paraglossa paraglossal paraglossate paraglossia paraglycogen paragnath paragnathism paragnathous paragnathus paragneiss paragnosia paragoge paragogic paragogical paragogically paragogize paragon paragonimiasis Paragonimus paragonite paragonitic paragonless paragram paragrammatist paragraph paragrapher paragraphia paragraphic paragraphical paragraphically paragraphism paragraphist paragraphistical paragraphize Paraguay Paraguayan parah paraheliotropic paraheliotropism parahematin parahemoglobin parahepatic Parahippus parahopeite parahormone parahydrogen paraiba Paraiyan parakeet parakeratosis parakilya parakinesia parakinetic paralactate paralalia paralambdacism paralambdacismus paralaurionite paraldehyde parale paralectotype paraleipsis paralepsis paralexia paralexic paralgesia paralgesic paralinin paralipomena Paralipomenon paralipsis paralitical parallactic parallactical parallactically parallax parallel parallelable parallelepiped parallelepipedal parallelepipedic parallelepipedon parallelepipedonal paralleler parallelinervate parallelinerved parallelinervous parallelism parallelist parallelistic parallelith parallelization parallelize parallelizer parallelless parallelly parallelodrome parallelodromous parallelogram parallelogrammatic parallelogrammatical parallelogrammic parallelogrammical parallelograph parallelometer parallelopiped parallelopipedon parallelotropic parallelotropism parallelwise parallepipedous paralogia paralogical paralogician paralogism paralogist paralogistic paralogize paralogy paraluminite paralyses paralysis paralytic paralytical paralytically paralyzant paralyzation paralyze paralyzedly paralyzer paralyzingly param paramagnet paramagnetic paramagnetism paramandelic paramarine paramastigate paramastitis paramastoid paramatta Paramecidae Paramecium paramedian paramelaconite paramenia parament paramere parameric parameron paramese paramesial parameter parametric parametrical parametritic parametritis parametrium paramide paramilitary paramimia paramine paramiographer paramitome paramnesia paramo Paramoecium paramorph paramorphia paramorphic paramorphine paramorphism paramorphosis paramorphous paramount paramountcy paramountly paramountness paramountship paramour paramuthetic paramyelin paramylum paramyoclonus paramyosinogen paramyotone paramyotonia paranasal paranatellon parandrus paranema paranematic paranephric paranephritic paranephritis paranephros paranepionic paranete parang paranitraniline paranitrosophenol paranoia paranoiac paranoid paranoidal paranoidism paranomia paranormal paranosic paranthelion paranthracene Paranthropus paranuclear paranucleate paranucleic paranuclein paranucleinic paranucleus paranymph paranymphal parao paraoperation Parapaguridae paraparesis paraparetic parapathia parapathy parapegm parapegma paraperiodic parapet parapetalous parapeted parapetless paraph paraphasia paraphasic paraphemia paraphenetidine paraphenylene paraphenylenediamine parapherna paraphernal paraphernalia paraphernalian paraphia paraphilia paraphimosis paraphonia paraphonic paraphototropism paraphrasable paraphrase paraphraser paraphrasia paraphrasian paraphrasis paraphrasist paraphrast paraphraster paraphrastic paraphrastical paraphrastically paraphrenia paraphrenic paraphrenitis paraphyllium paraphysate paraphysical paraphysiferous paraphysis paraplasis paraplasm paraplasmic paraplastic paraplastin paraplectic paraplegia paraplegic paraplegy parapleuritis parapleurum parapod parapodial parapodium parapophysial parapophysis parapraxia parapraxis paraproctitis paraproctium paraprostatitis Parapsida parapsidal parapsidan parapsis parapsychical parapsychism parapsychological parapsychology parapsychosis parapteral parapteron parapterum paraquadrate paraquinone Pararctalia Pararctalian pararectal pararek parareka pararhotacism pararosaniline pararosolic pararthria parasaboteur parasalpingitis parasang parascene parascenium parasceve paraschematic parasecretion paraselene paraselenic parasemidin parasemidine parasexuality parashah parasigmatism parasigmatismus Parasita parasital parasitary parasite parasitelike parasitemia parasitic Parasitica parasitical parasitically parasiticalness parasiticidal parasiticide Parasitidae parasitism parasitize parasitogenic parasitoid parasitoidism parasitological parasitologist parasitology parasitophobia parasitosis parasitotrope parasitotropic parasitotropism parasitotropy paraskenion parasol parasoled parasolette paraspecific parasphenoid parasphenoidal paraspotter paraspy parastas parastatic parastemon parastemonal parasternal parasternum parastichy parastyle parasubphonate parasubstituted Parasuchia parasuchian parasympathetic parasympathomimetic parasynapsis parasynaptic parasynaptist parasyndesis parasynesis parasynetic parasynovitis parasynthesis parasynthetic parasyntheton parasyphilis parasyphilitic parasyphilosis parasystole paratactic paratactical paratactically paratartaric parataxis parate paraterminal Paratheria paratherian parathesis parathetic parathion parathormone parathymic parathyroid parathyroidal parathyroidectomize parathyroidectomy parathyroprival parathyroprivia parathyroprivic paratitla paratitles paratoloid paratoluic paratoluidine paratomial paratomium paratonic paratonically paratorium paratory paratracheal paratragedia paratragoedia paratransversan paratrichosis paratrimma paratriptic paratroop paratrooper paratrophic paratrophy paratuberculin paratuberculosis paratuberculous paratungstate paratungstic paratype paratyphlitis paratyphoid paratypic paratypical paratypically paravaginitis paravail paravane paravauxite paravent paravertebral paravesical paraxial paraxially paraxon paraxonic paraxylene Parazoa parazoan parazonium parbake Parbate parboil parbuckle parcel parceling parcellary parcellate parcellation parcelling parcellization parcellize parcelment parcelwise parcenary parcener parcenership parch parchable parchedly parchedness parcheesi parchemin parcher parchesi parching parchingly parchisi parchment parchmenter parchmentize parchmentlike parchmenty parchy parcidentate parciloquy parclose parcook pard pardalote Pardanthus pardao parded pardesi pardine pardner pardnomastic pardo pardon pardonable pardonableness pardonably pardonee pardoner pardoning pardonless pardonmonger pare paregoric Pareiasauri Pareiasauria pareiasaurian Pareiasaurus Pareioplitae parel parelectronomic parelectronomy parella paren parencephalic parencephalon parenchym parenchyma parenchymal parenchymatic parenchymatitis parenchymatous parenchymatously parenchyme parenchymous parent parentage parental Parentalia parentalism parentality parentally parentdom parentela parentelic parenteral parenterally parentheses parenthesis parenthesize parenthetic parenthetical parentheticality parenthetically parentheticalness parenthood parenticide parentless parentlike parentship Pareoean parepididymal parepididymis parepigastric parer parerethesis parergal parergic parergon paresis paresthesia paresthesis paresthetic parethmoid paretic paretically pareunia parfait parfilage parfleche parfocal pargana pargasite parge pargeboard parget pargeter pargeting pargo parhelia parheliacal parhelic parhelion parhomologous parhomology parhypate pari pariah pariahdom pariahism pariahship parial Parian parian Pariasauria Pariasaurus Paridae paridigitate paridrosis paries parietal Parietales Parietaria parietary parietes parietofrontal parietojugal parietomastoid parietoquadrate parietosphenoid parietosphenoidal parietosplanchnic parietosquamosal parietotemporal parietovaginal parietovisceral parify parigenin pariglin Parilia Parilicium parilla parillin parimutuel Parinarium parine paring paripinnate Paris parish parished parishen parishional parishionally parishionate parishioner parishionership Parisian Parisianism Parisianization Parisianize Parisianly Parisii parisis parisology parison parisonic paristhmic paristhmion parisyllabic parisyllabical Pariti Paritium parity parivincular park parka parkee parker parkin parking Parkinsonia Parkinsonism parkish parklike parkward parkway parky parlamento parlance parlando Parlatoria parlatory parlay parle parley parleyer parliament parliamental parliamentarian parliamentarianism parliamentarily parliamentariness parliamentarism parliamentarization parliamentarize parliamentary parliamenteer parliamenteering parliamenter parling parlish parlor parlorish parlormaid parlous parlously parlousness parly Parma parma parmacety parmak Parmelia Parmeliaceae parmeliaceous parmelioid Parmentiera Parmesan Parmese parnas Parnassia Parnassiaceae parnassiaceous Parnassian Parnassianism Parnassiinae Parnassism Parnassus parnel Parnellism Parnellite parnorpine paroarion paroarium paroccipital paroch parochial parochialic parochialism parochialist parochiality parochialization parochialize parochially parochialness parochin parochine parochiner parode parodiable parodial parodic parodical parodinia parodist parodistic parodistically parodize parodontitis parodos parody parodyproof paroecious paroeciously paroeciousness paroecism paroecy paroemia paroemiac paroemiographer paroemiography paroemiologist paroemiology paroicous parol parolable parole parolee parolfactory paroli parolist paromoeon paromologetic paromologia paromology paromphalocele paromphalocelic paronomasia paronomasial paronomasian paronomasiastic paronomastical paronomastically paronychia paronychial paronychium paronym paronymic paronymization paronymize paronymous paronymy paroophoric paroophoritis paroophoron paropsis paroptesis paroptic parorchid parorchis parorexia Parosela parosmia parosmic parosteal parosteitis parosteosis parostosis parostotic Parotia parotic parotid parotidean parotidectomy parotiditis parotis parotitic parotitis parotoid parous parousia parousiamania parovarian parovariotomy parovarium paroxazine paroxysm paroxysmal paroxysmalist paroxysmally paroxysmic paroxysmist paroxytone paroxytonic paroxytonize parpal parquet parquetage parquetry parr Parra parrel parrhesia parrhesiastic parriable parricidal parricidally parricide parricided parricidial parricidism Parridae parrier parrock parrot parroter parrothood parrotism parrotize parrotlet parrotlike parrotry parrotwise parroty parry parsable parse parsec Parsee Parseeism parser parsettensite Parsi Parsic Parsiism parsimonious parsimoniously parsimoniousness parsimony Parsism parsley parsleylike parsleywort parsnip parson parsonage parsonarchy parsondom parsoned parsonese parsoness parsonet parsonhood parsonic parsonical parsonically parsoning parsonish parsonity parsonize parsonlike parsonly parsonolatry parsonology parsonry parsonship Parsonsia parsonsite parsony Part part partakable partake partaker partan partanfull partanhanded parted partedness parter parterre parterred partheniad Partheniae parthenian parthenic Parthenium parthenocarpelly parthenocarpic parthenocarpical parthenocarpically parthenocarpous parthenocarpy Parthenocissus parthenogenesis parthenogenetic parthenogenetically parthenogenic parthenogenitive parthenogenous parthenogeny parthenogonidium Parthenolatry parthenology Parthenon Parthenopaeus parthenoparous Parthenope Parthenopean Parthenos parthenosperm parthenospore Parthian partial partialism partialist partialistic partiality partialize partially partialness partiary partible particate participability participable participance participancy participant participantly participate participatingly participation participative participatively participator participatory participatress participial participiality participialize participially participle particle particled particular particularism particularist particularistic particularistically particularity particularization particularize particularly particularness particulate partigen partile partimembered partimen partinium partisan partisanism partisanize partisanship partite partition partitional partitionary partitioned partitioner partitioning partitionist partitionment partitive partitively partitura partiversal partivity partless partlet partly partner partnerless partnership parto partook partridge partridgeberry partridgelike partridgewood partridging partschinite parture parturiate parturience parturiency parturient parturifacient parturition parturitive party partyism partyist partykin partyless partymonger partyship Parukutu parulis parumbilical parure paruria Parus parvanimity parvenu parvenudom parvenuism parvicellular parviflorous parvifoliate parvifolious parvipotent parvirostrate parvis parviscient parvitude parvolin parvoline parvule paryphodrome pasan pasang Pascal Pasch Pascha paschal paschalist Paschaltide paschite pascoite pascuage pascual pascuous pasgarde pash pasha pashadom pashalik pashaship pashm pashmina Pashto pasi pasigraphic pasigraphical pasigraphy pasilaly Pasitelean pasmo Paspalum pasqueflower pasquil pasquilant pasquiler pasquilic Pasquin pasquin pasquinade pasquinader Pasquinian Pasquino pass passable passableness passably passade passado passage passageable passageway Passagian passalid Passalidae Passalus Passamaquoddy passant passback passbook Passe passe passee passegarde passement passementerie passen passenger Passer passer Passeres passeriform Passeriformes Passerina passerine passewa passibility passible passibleness Passiflora Passifloraceae passifloraceous Passiflorales passimeter passing passingly passingness passion passional passionary passionate passionately passionateness passionative passioned passionflower passionful passionfully passionfulness Passionist passionist passionless passionlessly passionlessness passionlike passionometer passionproof Passiontide passionwise passionwort passir passival passivate passivation passive passively passiveness passivism passivist passivity passkey passless passman passo passometer passout passover passoverish passpenny passport passportless passulate passulation passus passway passwoman password passworts passymeasure past paste pasteboard pasteboardy pasted pastedness pastedown pastel pastelist paster pasterer pastern pasterned pasteur Pasteurella Pasteurelleae pasteurellosis Pasteurian pasteurism pasteurization pasteurize pasteurizer pastiche pasticheur pastil pastile pastille pastime pastimer Pastinaca pastiness pasting pastness pastophor pastophorion pastophorium pastophorus pastor pastorage pastoral pastorale pastoralism pastoralist pastorality pastoralize pastorally pastoralness pastorate pastoress pastorhood pastorium pastorize pastorless pastorlike pastorling pastorly pastorship pastose pastosity pastrami pastry pastryman pasturability pasturable pasturage pastural pasture pastureless pasturer pasturewise pasty pasul Pat pat pata pataca patacao pataco patagial patagiate patagium Patagon patagon Patagones Patagonian pataka patamar patao patapat pataque Pataria Patarin Patarine Patarinism patas patashte Patavian patavinity patball patballer patch patchable patcher patchery patchily patchiness patchleaf patchless patchouli patchwise patchword patchwork patchworky patchy pate patefaction patefy patel patella patellar patellaroid patellate Patellidae patellidan patelliform patelline patellofemoral patelloid patellula patellulate paten patency patener patent patentability patentable patentably patentee patently patentor pater patera patercove paterfamiliar paterfamiliarly paterfamilias pateriform paterissa paternal paternalism paternalist paternalistic paternalistically paternality paternalize paternally paternity paternoster paternosterer patesi patesiate path Pathan pathbreaker pathed pathema pathematic pathematically pathematology pathetic pathetical pathetically patheticalness patheticate patheticly patheticness pathetism pathetist pathetize pathfarer pathfinder pathfinding pathic pathicism pathless pathlessness pathlet pathoanatomical pathoanatomy pathobiological pathobiologist pathobiology pathochemistry pathodontia pathogen pathogene pathogenesis pathogenesy pathogenetic pathogenic pathogenicity pathogenous pathogeny pathogerm pathogermic pathognomic pathognomical pathognomonic pathognomonical pathognomy pathognostic pathographical pathography pathologic pathological pathologically pathologicoanatomic pathologicoanatomical pathologicoclinical pathologicohistological pathologicopsychological pathologist pathology patholysis patholytic pathomania pathometabolism pathomimesis pathomimicry pathoneurosis pathonomia pathonomy pathophobia pathophoresis pathophoric pathophorous pathoplastic pathoplastically pathopoeia pathopoiesis pathopoietic pathopsychology pathopsychosis pathoradiography pathos pathosocial Pathrusim pathway pathwayed pathy patible patibulary patibulate patience patiency patient patientless patiently patientness patina patinate patination patine patined patinize patinous patio patisserie patly Patmian Patmos patness patnidar pato patois patola patonce patria patrial patriarch patriarchal patriarchalism patriarchally patriarchate patriarchdom patriarched patriarchess patriarchic patriarchical patriarchically patriarchism patriarchist patriarchship patriarchy Patrice patrice Patricia Patrician patrician patricianhood patricianism patricianly patricianship patriciate patricidal patricide Patricio Patrick patrico patrilineal patrilineally patrilinear patriliny patrilocal patrimonial patrimonially patrimony patrin Patriofelis patriolatry patriot patrioteer patriotess patriotic patriotical patriotically patriotics patriotism patriotly patriotship Patripassian Patripassianism Patripassianist Patripassianly patrist patristic patristical patristically patristicalness patristicism patristics patrix patrizate patrization patrocinium patroclinic patroclinous patrocliny patrogenesis patrol patroller patrollotism patrolman patrologic patrological patrologist patrology patron patronage patronal patronate patrondom patroness patronessship patronite patronizable patronization patronize patronizer patronizing patronizingly patronless patronly patronomatology patronship patronym patronymic patronymically patronymy patroon patroonry patroonship patruity Patsy patta pattable patte pattee patten pattened pattener patter patterer patterist pattern patternable patterned patterner patterning patternize patternless patternlike patternmaker patternmaking patternwise patterny pattu Patty patty pattypan patu patulent patulous patulously patulousness Patuxent patwari Patwin paty pau pauciarticulate pauciarticulated paucidentate pauciflorous paucifoliate paucifolious paucify paucijugate paucilocular pauciloquent pauciloquently pauciloquy paucinervate paucipinnate pauciplicate pauciradiate pauciradiated paucispiral paucispirated paucity paughty paukpan Paul Paula paular pauldron Pauliad Paulian Paulianist Pauliccian Paulicianism paulie paulin Paulina Pauline Paulinia Paulinian Paulinism Paulinist Paulinistic Paulinistically Paulinity Paulinize Paulinus Paulism Paulist Paulista Paulite paulopast paulopost paulospore Paulownia Paulus Paumari paunch paunched paunchful paunchily paunchiness paunchy paup pauper pauperage pauperate pauperdom pauperess pauperism pauperitic pauperization pauperize pauperizer Paurometabola paurometabolic paurometabolism paurometabolous paurometaboly pauropod Pauropoda pauropodous pausably pausal pausation pause pauseful pausefully pauseless pauselessly pausement pauser pausingly paussid Paussidae paut pauxi pavage pavan pavane pave pavement pavemental paver pavestone Pavetta Pavia pavid pavidity pavier pavilion paving pavior Paviotso paviour pavis pavisade pavisado paviser pavisor Pavo pavonated pavonazzetto pavonazzo Pavoncella Pavonia pavonian pavonine pavonize pavy paw pawdite pawer pawing pawk pawkery pawkily pawkiness pawkrie pawky pawl pawn pawnable pawnage pawnbroker pawnbrokerage pawnbrokeress pawnbrokering pawnbrokery pawnbroking Pawnee pawnee pawner pawnie pawnor pawnshop pawpaw Pawtucket pax paxilla paxillar paxillary paxillate paxilliferous paxilliform Paxillosa paxillose paxillus paxiuba paxwax pay payability payable payableness payably Payagua Payaguan payday payed payee payeny payer paying paymaster paymastership payment paymistress Payni paynim paynimhood paynimry Paynize payoff payong payor payroll paysagist Pazend pea peaberry peace peaceable peaceableness peaceably peacebreaker peacebreaking peaceful peacefully peacefulness peaceless peacelessness peacelike peacemaker peacemaking peaceman peacemonger peacemongering peacetime peach peachberry peachblossom peachblow peachen peacher peachery peachick peachify peachiness peachlet peachlike peachwood peachwort peachy peacoat peacock peacockery peacockish peacockishly peacockishness peacockism peacocklike peacockly peacockwise peacocky peacod peafowl peag peage peahen peai peaiism peak peaked peakedly peakedness peaker peakily peakiness peaking peakish peakishly peakishness peakless peaklike peakward peaky peakyish peal pealike pean peanut pear pearceite pearl pearlberry pearled pearler pearlet pearlfish pearlfruit pearlike pearlin pearliness pearling pearlish pearlite pearlitic pearlsides pearlstone pearlweed pearlwort pearly pearmain pearmonger peart pearten peartly peartness pearwood peasant peasantess peasanthood peasantism peasantize peasantlike peasantly peasantry peasantship peasecod peaselike peasen peashooter peason peastake peastaking peastick peasticking peastone peasy peat peatery peathouse peatman peatship peatstack peatwood peaty peavey peavy Peba peba Peban pebble pebbled pebblehearted pebblestone pebbleware pebbly pebrine pebrinous pecan peccability peccable peccadillo peccancy peccant peccantly peccantness peccary peccation peccavi pech pecht pecite peck pecked pecker peckerwood pecket peckful peckhamite peckiness peckish peckishly peckishness peckle peckled peckly Pecksniffian Pecksniffianism Pecksniffism pecky Pecopteris pecopteroid Pecora Pecos pectase pectate pecten pectic pectin Pectinacea pectinacean pectinaceous pectinal pectinase pectinate pectinated pectinately pectination pectinatodenticulate pectinatofimbricate pectinatopinnate pectineal pectineus pectinibranch Pectinibranchia pectinibranchian Pectinibranchiata pectinibranchiate pectinic pectinid Pectinidae pectiniferous pectiniform pectinirostrate pectinite pectinogen pectinoid pectinose pectinous pectizable pectization pectize pectocellulose pectolite pectora pectoral pectoralgia pectoralis pectoralist pectorally pectoriloquial pectoriloquism pectoriloquous pectoriloquy pectosase pectose pectosic pectosinase pectous pectunculate Pectunculus pectus peculate peculation peculator peculiar peculiarism peculiarity peculiarize peculiarly peculiarness peculiarsome peculium pecuniarily pecuniary pecuniosity pecunious ped peda pedage pedagog pedagogal pedagogic pedagogical pedagogically pedagogics pedagogism pedagogist pedagogue pedagoguery pedagoguish pedagoguism pedagogy pedal pedaler pedalfer pedalferic Pedaliaceae pedaliaceous pedalian pedalier Pedalion pedalism pedalist pedaliter pedality Pedalium pedanalysis pedant pedantesque pedantess pedanthood pedantic pedantical pedantically pedanticalness pedanticism pedanticly pedanticness pedantism pedantize pedantocracy pedantocrat pedantocratic pedantry pedary Pedata pedate pedated pedately pedatifid pedatiform pedatilobate pedatilobed pedatinerved pedatipartite pedatisect pedatisected pedatrophia pedder peddle peddler peddleress peddlerism peddlery peddling peddlingly pedee pedelion pederast pederastic pederastically pederasty pedes pedesis pedestal pedestrial pedestrially pedestrian pedestrianate pedestrianism pedestrianize pedetentous Pedetes Pedetidae Pedetinae pediadontia pediadontic pediadontist pedialgia Pediastrum pediatric pediatrician pediatrics pediatrist pediatry pedicab pedicel pediceled pedicellar pedicellaria pedicellate pedicellated pedicellation pedicelled pedicelliform Pedicellina pedicellus pedicle pedicular Pedicularia Pedicularis pediculate pediculated Pediculati pedicule Pediculi pediculicidal pediculicide pediculid Pediculidae Pediculina pediculine pediculofrontal pediculoid pediculoparietal pediculophobia pediculosis pediculous Pediculus pedicure pedicurism pedicurist pediferous pediform pedigerous pedigraic pedigree pedigreeless pediluvium Pedimana pedimanous pediment pedimental pedimented pedimentum Pedioecetes pedion pedionomite Pedionomus pedipalp pedipalpal pedipalpate Pedipalpi Pedipalpida pedipalpous pedipalpus pedipulate pedipulation pedipulator pedlar pedlary pedobaptism pedobaptist pedocal pedocalcic pedodontia pedodontic pedodontist pedodontology pedograph pedological pedologist pedologistical pedologistically pedology pedometer pedometric pedometrical pedometrically pedometrician pedometrist pedomorphic pedomorphism pedomotive pedomotor pedophilia pedophilic pedotribe pedotrophic pedotrophist pedotrophy pedrail pedregal pedrero Pedro pedro pedule pedum peduncle peduncled peduncular Pedunculata pedunculate pedunculated pedunculation pedunculus pee peed peek peekaboo peel peelable peele peeled peeledness peeler peelhouse peeling Peelism Peelite peelman peen peenge peeoy peep peeper peepeye peephole peepy peer peerage peerdom peeress peerhood peerie peeringly peerless peerlessly peerlessness peerling peerly peership peery peesash peesoreh peesweep peetweet peeve peeved peevedly peevedness peever peevish peevishly peevishness peewee Peg peg pega pegall peganite Peganum Pegasean Pegasian Pegasid pegasid Pegasidae pegasoid Pegasus pegboard pegbox pegged pegger pegging peggle Peggy peggy pegless peglet peglike pegman pegmatite pegmatitic pegmatization pegmatize pegmatoid pegmatophyre pegology pegomancy Peguan pegwood Pehlevi peho Pehuenche peignoir peine peirameter peirastic peirastically peisage peise peiser Peitho peixere pejorate pejoration pejorationist pejorative pejoratively pejorism pejorist pejority pekan Pekin pekin Peking Pekingese pekoe peladic pelage pelagial Pelagian pelagian Pelagianism Pelagianize Pelagianizer pelagic Pelagothuria pelamyd pelanos Pelargi pelargic Pelargikon pelargomorph Pelargomorphae pelargomorphic pelargonate pelargonic pelargonidin pelargonin pelargonium Pelasgi Pelasgian Pelasgic Pelasgikon Pelasgoi Pele pelean pelecan Pelecani Pelecanidae Pelecaniformes Pelecanoides Pelecanoidinae Pelecanus pelecypod Pelecypoda pelecypodous pelelith pelerine Peleus Pelew pelf Pelias pelican pelicanry pelick pelicometer Pelides Pelidnota pelike peliom pelioma peliosis pelisse pelite pelitic pell Pellaea pellage pellagra pellagragenic pellagrin pellagrose pellagrous pellar pellard pellas pellate pellation peller pellet pelleted pelletierine pelletlike pellety Pellian pellicle pellicula pellicular pellicularia pelliculate pellicule pellile pellitory pellmell pellock pellotine pellucent pellucid pellucidity pellucidly pellucidness Pelmanism Pelmanist Pelmanize pelmatic pelmatogram Pelmatozoa pelmatozoan pelmatozoic pelmet Pelobates pelobatid Pelobatidae pelobatoid Pelodytes pelodytid Pelodytidae pelodytoid Pelomedusa pelomedusid Pelomedusidae pelomedusoid Pelomyxa pelon Pelopaeus Pelopid Pelopidae Peloponnesian Pelops peloria pelorian peloriate peloric pelorism pelorization pelorize pelorus pelota pelotherapy peloton pelt pelta Peltandra peltast peltate peltated peltately peltatifid peltation peltatodigitate pelter pelterer peltiferous peltifolious peltiform Peltigera Peltigeraceae peltigerine peltigerous peltinerved pelting peltingly peltless peltmonger Peltogaster peltry pelu peludo Pelusios pelveoperitonitis pelves Pelvetia pelvic pelviform pelvigraph pelvigraphy pelvimeter pelvimetry pelviolithotomy pelvioperitonitis pelvioplasty pelvioradiography pelvioscopy pelviotomy pelviperitonitis pelvirectal pelvis pelvisacral pelvisternal pelvisternum pelycogram pelycography pelycology pelycometer pelycometry pelycosaur Pelycosauria pelycosaurian pembina Pembroke pemican pemmican pemmicanization pemmicanize pemphigoid pemphigous pemphigus pen penacute Penaea Penaeaceae penaeaceous penal penalist penality penalizable penalization penalize penally penalty penance penanceless penang penannular penates penbard pencatite pence pencel penceless penchant penchute pencil penciled penciler penciliform penciling pencilled penciller pencillike pencilling pencilry pencilwood pencraft pend penda pendant pendanted pendanting pendantlike pendecagon pendeloque pendency pendent pendentive pendently pendicle pendicler pending pendle pendom pendragon pendragonish pendragonship pendulant pendular pendulate pendulation pendule penduline pendulosity pendulous pendulously pendulousness pendulum pendulumlike Penelope Penelopean Penelophon Penelopinae penelopine peneplain peneplanation peneplane peneseismic penetrability penetrable penetrableness penetrably penetral penetralia penetralian penetrance penetrancy penetrant penetrate penetrating penetratingly penetratingness penetration penetrative penetratively penetrativeness penetrativity penetrator penetrology penetrometer penfieldite penfold penful penghulu pengo penguin penguinery penhead penholder penial penicillate penicillated penicillately penicillation penicilliform penicillin Penicillium penide penile peninsula peninsular peninsularism peninsularity peninsulate penintime peninvariant penis penistone penitence penitencer penitent Penitentes penitential penitentially penitentiary penitentiaryship penitently penk penkeeper penknife penlike penmaker penmaking penman penmanship penmaster penna pennaceous Pennacook pennae pennage Pennales pennant Pennaria Pennariidae Pennatae pennate pennated pennatifid pennatilobate pennatipartite pennatisect pennatisected Pennatula Pennatulacea pennatulacean pennatulaceous pennatularian pennatulid Pennatulidae pennatuloid penneech penneeck penner pennet penni pennia pennied penniferous penniform pennigerous penniless pennilessly pennilessness pennill penninervate penninerved penning penninite pennipotent Pennisetum penniveined pennon pennoned pennopluma pennoplume pennorth Pennsylvania Pennsylvanian Penny penny pennybird pennycress pennyearth pennyflower pennyhole pennyleaf pennyrot pennyroyal pennysiller pennystone pennyweight pennywinkle pennywort pennyworth Penobscot penologic penological penologist penology penorcon penrack penroseite Pensacola penscript penseful pensefulness penship pensile pensileness pensility pension pensionable pensionably pensionary pensioner pensionership pensionless pensive pensived pensively pensiveness penster penstick penstock pensum pensy pent penta pentabasic pentabromide pentacapsular pentacarbon pentacarbonyl pentacarpellary pentace pentacetate pentachenium pentachloride pentachord pentachromic pentacid pentacle pentacoccous pentacontane pentacosane Pentacrinidae pentacrinite pentacrinoid Pentacrinus pentacron pentacrostic pentactinal pentactine pentacular pentacyanic pentacyclic pentad pentadactyl Pentadactyla pentadactylate pentadactyle pentadactylism pentadactyloid pentadecagon pentadecahydrate pentadecahydrated pentadecane pentadecatoic pentadecoic pentadecyl pentadecylic pentadelphous pentadicity pentadiene pentadodecahedron pentadrachm pentadrachma pentaerythrite pentaerythritol pentafid pentafluoride pentagamist pentaglossal pentaglot pentaglottical pentagon pentagonal pentagonally pentagonohedron pentagonoid pentagram pentagrammatic pentagyn Pentagynia pentagynian pentagynous pentahalide pentahedral pentahedrical pentahedroid pentahedron pentahedrous pentahexahedral pentahexahedron pentahydrate pentahydrated pentahydric pentahydroxy pentail pentaiodide pentalobate pentalogue pentalogy pentalpha Pentamera pentameral pentameran pentamerid Pentameridae pentamerism pentameroid pentamerous Pentamerus pentameter pentamethylene pentamethylenediamine pentametrist pentametrize pentander Pentandria pentandrian pentandrous pentane pentanedione pentangle pentangular pentanitrate pentanoic pentanolide pentanone pentapetalous Pentaphylacaceae pentaphylacaceous Pentaphylax pentaphyllous pentaploid pentaploidic pentaploidy pentapody pentapolis pentapolitan pentapterous pentaptote pentaptych pentaquine pentarch pentarchical pentarchy pentasepalous pentasilicate pentaspermous pentaspheric pentaspherical pentastich pentastichous pentastichy pentastome Pentastomida pentastomoid pentastomous Pentastomum pentastyle pentastylos pentasulphide pentasyllabic pentasyllabism pentasyllable Pentateuch Pentateuchal pentateuchal pentathionate pentathionic pentathlete pentathlon pentathlos pentatomic pentatomid Pentatomidae Pentatomoidea pentatone pentatonic pentatriacontane pentavalence pentavalency pentavalent penteconter pentecontoglossal Pentecost Pentecostal pentecostal pentecostalism pentecostalist pentecostarion pentecoster pentecostys Pentelic Pentelican pentene penteteric penthemimer penthemimeral penthemimeris Penthestes penthiophen penthiophene Penthoraceae Penthorum penthouse penthouselike penthrit penthrite pentimento pentine pentiodide pentit pentite pentitol pentlandite pentobarbital pentode pentoic pentol pentosan pentosane pentose pentoside pentosuria pentoxide pentremital pentremite Pentremites Pentremitidae pentrit pentrite pentrough Pentstemon pentstock penttail pentyl pentylene pentylic pentylidene pentyne Pentzia penuchi penult penultima penultimate penultimatum penumbra penumbrae penumbral penumbrous penurious penuriously penuriousness penury Penutian penwiper penwoman penwomanship penworker penwright peon peonage peonism peony people peopledom peoplehood peopleize peopleless peopler peoplet peoplish Peoria Peorian peotomy pep peperine peperino Peperomia pepful Pephredo pepinella pepino peplos peplosed peplum peplus pepo peponida peponium pepper pepperbox peppercorn peppercornish peppercorny pepperer peppergrass pepperidge pepperily pepperiness pepperish pepperishly peppermint pepperoni pepperproof pepperroot pepperweed pepperwood pepperwort peppery peppily peppin peppiness peppy pepsin pepsinate pepsinhydrochloric pepsiniferous pepsinogen pepsinogenic pepsinogenous pepsis peptic peptical pepticity peptidase peptide peptizable peptization peptize peptizer peptogaster peptogenic peptogenous peptogeny peptohydrochloric peptolysis peptolytic peptonaemia peptonate peptone peptonemia peptonic peptonization peptonize peptonizer peptonoid peptonuria peptotoxine Pepysian Pequot Per per Peracarida peracephalus peracetate peracetic peracid peracidite peract peracute peradventure peragrate peragration Perakim peramble perambulant perambulate perambulation perambulator perambulatory Perameles Peramelidae perameline perameloid Peramium Peratae Perates perbend perborate perborax perbromide Perca percale percaline percarbide percarbonate percarbonic perceivability perceivable perceivableness perceivably perceivance perceivancy perceive perceivedly perceivedness perceiver perceiving perceivingness percent percentable percentably percentage percentaged percental percentile percentual percept perceptibility perceptible perceptibleness perceptibly perception perceptional perceptionalism perceptionism perceptive perceptively perceptiveness perceptivity perceptual perceptually Percesoces percesocine Perceval perch percha perchable perchance percher Percheron perchlorate perchlorethane perchlorethylene perchloric perchloride perchlorinate perchlorination perchloroethane perchloroethylene perchromate perchromic percid Percidae perciform Perciformes percipience percipiency percipient Percival perclose percnosome percoct percoid Percoidea percoidean percolable percolate percolation percolative percolator percomorph Percomorphi percomorphous percompound percontation percontatorial percribrate percribration percrystallization perculsion perculsive percur percurration percurrent percursory percuss percussion percussional percussioner percussionist percussionize percussive percussively percussiveness percussor percutaneous percutaneously percutient Percy percylite Perdicinae perdicine perdition perditionable Perdix perdricide perdu perduellion perdurability perdurable perdurableness perdurably perdurance perdurant perdure perduring perduringly Perean peregrin peregrina peregrinate peregrination peregrinator peregrinatory peregrine peregrinity peregrinoid pereion pereiopod pereira pereirine peremptorily peremptoriness peremptory perendinant perendinate perendination perendure perennate perennation perennial perenniality perennialize perennially perennibranch Perennibranchiata perennibranchiate perequitate peres Pereskia perezone perfect perfectation perfected perfectedly perfecter perfecti perfectibilian perfectibilism perfectibilist perfectibilitarian perfectibility perfectible perfecting perfection perfectionate perfectionation perfectionator perfectioner perfectionism perfectionist perfectionistic perfectionize perfectionizement perfectionizer perfectionment perfectism perfectist perfective perfectively perfectiveness perfectivity perfectivize perfectly perfectness perfecto perfector perfectuation perfervent perfervid perfervidity perfervidly perfervidness perfervor perfervour perfidious perfidiously perfidiousness perfidy perfilograph perflate perflation perfluent perfoliate perfoliation perforable perforant Perforata perforate perforated perforation perforationproof perforative perforator perforatorium perforatory perforce perforcedly perform performable performance performant performative performer perfrication perfumatory perfume perfumed perfumeless perfumer perfumeress perfumery perfumy perfunctionary perfunctorily perfunctoriness perfunctorious perfunctoriously perfunctorize perfunctory perfuncturate perfusate perfuse perfusion perfusive Pergamene pergameneous Pergamenian pergamentaceous Pergamic pergamyn pergola perhalide perhalogen perhaps perhazard perhorresce perhydroanthracene perhydrogenate perhydrogenation perhydrogenize peri periacinal periacinous periactus periadenitis periamygdalitis perianal periangiocholitis periangioma periangitis perianth perianthial perianthium periaortic periaortitis periapical periappendicitis periappendicular periapt Periarctic periareum periarterial periarteritis periarthric periarthritis periarticular periaster periastral periastron periastrum periatrial periauricular periaxial periaxillary periaxonal periblast periblastic periblastula periblem peribolos peribolus peribranchial peribronchial peribronchiolar peribronchiolitis peribronchitis peribulbar peribursal pericaecal pericaecitis pericanalicular pericapsular pericardia pericardiac pericardiacophrenic pericardial pericardicentesis pericardiectomy pericardiocentesis pericardiolysis pericardiomediastinitis pericardiophrenic pericardiopleural pericardiorrhaphy pericardiosymphysis pericardiotomy pericarditic pericarditis pericardium pericardotomy pericarp pericarpial pericarpic pericarpium pericarpoidal pericecal pericecitis pericellular pericemental pericementitis pericementoclasia pericementum pericenter pericentral pericentric pericephalic pericerebral perichaete perichaetial perichaetium perichete pericholangitis pericholecystitis perichondral perichondrial perichondritis perichondrium perichord perichordal perichoresis perichorioidal perichoroidal perichylous pericladium periclase periclasia periclasite periclaustral Periclean Pericles periclinal periclinally pericline periclinium periclitate periclitation pericolitis pericolpitis periconchal periconchitis pericopal pericope pericopic pericorneal pericowperitis pericoxitis pericranial pericranitis pericranium pericristate Pericu periculant pericycle pericycloid pericyclone pericyclonic pericystic pericystitis pericystium pericytial peridendritic peridental peridentium peridentoclasia periderm peridermal peridermic Peridermium peridesm peridesmic peridesmitis peridesmium peridial peridiastole peridiastolic perididymis perididymitis peridiiform Peridineae Peridiniaceae peridiniaceous peridinial Peridiniales peridinian peridinid Peridinidae Peridinieae Peridiniidae Peridinium peridiole peridiolum peridium peridot peridotic peridotite peridotitic periductal periegesis periegetic perielesis periencephalitis perienteric perienteritis perienteron periependymal periesophageal periesophagitis perifistular perifoliary perifollicular perifolliculitis perigangliitis periganglionic perigastric perigastritis perigastrula perigastrular perigastrulation perigeal perigee perigemmal perigenesis perigenital perigeum periglandular perigloea periglottic periglottis perignathic perigon perigonadial perigonal perigone perigonial perigonium perigraph perigraphic perigynial perigynium perigynous perigyny perihelial perihelian perihelion perihelium perihepatic perihepatitis perihermenial perihernial perihysteric perijejunitis perijove perikaryon perikronion peril perilabyrinth perilabyrinthitis perilaryngeal perilaryngitis perilenticular periligamentous Perilla perilless perilobar perilous perilously perilousness perilsome perilymph perilymphangial perilymphangitis perilymphatic perimartium perimastitis perimedullary perimeningitis perimeter perimeterless perimetral perimetric perimetrical perimetrically perimetritic perimetritis perimetrium perimetry perimorph perimorphic perimorphism perimorphous perimyelitis perimysial perimysium perine perineal perineocele perineoplastic perineoplasty perineorrhaphy perineoscrotal perineostomy perineosynthesis perineotomy perineovaginal perineovulvar perinephral perinephrial perinephric perinephritic perinephritis perinephrium perineptunium perineum perineural perineurial perineuritis perineurium perinium perinuclear periocular period periodate periodic periodical periodicalism periodicalist periodicalize periodically periodicalness periodicity periodide periodize periodogram periodograph periodology periodontal periodontia periodontic periodontist periodontitis periodontium periodontoclasia periodontologist periodontology periodontum periodoscope perioeci perioecians perioecic perioecid perioecus perioesophageal perioikoi periomphalic perionychia perionychium perionyx perionyxis perioophoritis periophthalmic periophthalmitis periople perioplic perioptic perioptometry perioral periorbit periorbita periorbital periorchitis periost periostea periosteal periosteitis periosteoalveolar periosteoma periosteomedullitis periosteomyelitis periosteophyte periosteorrhaphy periosteotome periosteotomy periosteous periosteum periostitic periostitis periostoma periostosis periostotomy periostracal periostracum periotic periovular peripachymeningitis peripancreatic peripancreatitis peripapillary Peripatetic peripatetic peripatetical peripatetically peripateticate Peripateticism Peripatidae Peripatidea peripatize peripatoid Peripatopsidae Peripatopsis Peripatus peripenial peripericarditis peripetalous peripetasma peripeteia peripetia peripety periphacitis peripharyngeal peripherad peripheral peripherally peripherial peripheric peripherical peripherically peripherocentral peripheroceptor peripheromittor peripheroneural peripherophose periphery periphlebitic periphlebitis periphractic periphrase periphrases periphrasis periphrastic periphrastical periphrastically periphraxy periphyllum periphyse periphysis Periplaneta periplasm periplast periplastic periplegmatic peripleural peripleuritis Periploca periplus peripneumonia peripneumonic peripneumony peripneustic peripolar peripolygonal periportal periproct periproctal periproctitis periproctous periprostatic periprostatitis peripteral peripterous periptery peripylephlebitis peripyloric perique perirectal perirectitis perirenal perisalpingitis perisarc perisarcal perisarcous perisaturnium periscian periscians periscii perisclerotic periscopal periscope periscopic periscopical periscopism perish perishability perishable perishableness perishably perished perishing perishingly perishless perishment perisigmoiditis perisinuitis perisinuous perisinusitis perisoma perisomal perisomatic perisome perisomial perisperm perispermal perispermatitis perispermic perisphere perispheric perispherical perisphinctean Perisphinctes Perisphinctidae perisphinctoid perisplanchnic perisplanchnitis perisplenetic perisplenic perisplenitis perispome perispomenon perispondylic perispondylitis perispore Perisporiaceae perisporiaceous Perisporiales perissad perissodactyl Perissodactyla perissodactylate perissodactyle perissodactylic perissodactylism perissodactylous perissologic perissological perissology perissosyllabic peristalith peristalsis peristaltic peristaltically peristaphyline peristaphylitis peristele peristerite peristeromorph Peristeromorphae peristeromorphic peristeromorphous peristeronic peristerophily peristeropod peristeropodan peristeropode Peristeropodes peristeropodous peristethium peristole peristoma peristomal peristomatic peristome peristomial peristomium peristrephic peristrephical peristrumitis peristrumous peristylar peristyle peristylium peristylos peristylum perisynovial perisystole perisystolic perit perite peritectic peritendineum peritenon perithece perithecial perithecium perithelial perithelioma perithelium perithoracic perithyreoiditis perithyroiditis peritomize peritomous peritomy peritoneal peritonealgia peritoneally peritoneocentesis peritoneoclysis peritoneomuscular peritoneopathy peritoneopericardial peritoneopexy peritoneoplasty peritoneoscope peritoneoscopy peritoneotomy peritoneum peritonism peritonital peritonitic peritonitis peritonsillar peritonsillitis peritracheal peritrema peritrematous peritreme peritrich Peritricha peritrichan peritrichic peritrichous peritrichously peritroch peritrochal peritrochanteric peritrochium peritrochoid peritropal peritrophic peritropous perityphlic perityphlitic perityphlitis periumbilical periungual periuranium periureteric periureteritis periurethral periurethritis periuterine periuvular perivaginal perivaginitis perivascular perivasculitis perivenous perivertebral perivesical perivisceral perivisceritis perivitellin perivitelline periwig periwigpated periwinkle periwinkled periwinkler perizonium perjink perjinkety perjinkities perjinkly perjure perjured perjuredly perjuredness perjurer perjuress perjurious perjuriously perjuriousness perjurous perjury perjurymonger perjurymongering perk perkily Perkin perkin perkiness perking perkingly perkish perknite perky Perla perlaceous Perlaria perle perlection perlid Perlidae perligenous perlingual perlingually perlite perlitic perloir perlustrate perlustration perlustrator perm permafrost Permalloy permalloy permanence permanency permanent permanently permanentness permanganate permanganic permansive permeability permeable permeableness permeably permeameter permeance permeant permeate permeation permeative permeator Permiak Permian permillage permirific permissibility permissible permissibleness permissibly permission permissioned permissive permissively permissiveness permissory permit permittable permitted permittedly permittee permitter permittivity permixture Permocarboniferous permonosulphuric permoralize permutability permutable permutableness permutably permutate permutation permutational permutationist permutator permutatorial permutatory permute permuter pern pernancy pernasal pernavigate Pernettia pernicious perniciously perniciousness pernicketiness pernickety pernine Pernis pernitrate pernitric pernoctation pernor pernyi peroba perobrachius perocephalus perochirus perodactylus Perodipus Perognathinae Perognathus Peromedusae Peromela peromelous peromelus Peromyscus peronate peroneal peroneocalcaneal peroneotarsal peroneotibial peronial peronium Peronospora Peronosporaceae peronosporaceous Peronosporales peropod Peropoda peropodous peropus peroral perorally perorate peroration perorational perorative perorator peroratorical peroratorically peroratory perosis perosmate perosmic perosomus perotic perovskite peroxidase peroxidate peroxidation peroxide peroxidic peroxidize peroxidizement peroxy peroxyl perozonid perozonide perpend perpendicular perpendicularity perpendicularly perpera perperfect perpetrable perpetrate perpetration perpetrator perpetratress perpetratrix perpetuable perpetual perpetualism perpetualist perpetuality perpetually perpetualness perpetuana perpetuance perpetuant perpetuate perpetuation perpetuator perpetuity perplantar perplex perplexable perplexed perplexedly perplexedness perplexer perplexing perplexingly perplexity perplexment perplication perquadrat perquest perquisite perquisition perquisitor perradial perradially perradiate perradius perridiculous perrier Perrinist perron perruche perrukery perruthenate perruthenic Perry perry perryman Persae persalt perscent perscribe perscrutate perscrutation perscrutator perse Persea persecute persecutee persecuting persecutingly persecution persecutional persecutive persecutiveness persecutor persecutory persecutress persecutrix Perseid perseite perseitol perseity persentiscency Persephassa Persephone Persepolitan perseverance perseverant perseverate perseveration persevere persevering perseveringly Persian Persianist Persianization Persianize Persic Persicaria persicary Persicize persico persicot persienne persiennes persiflage persiflate persilicic persimmon Persis persis Persism persist persistence persistency persistent persistently persister persisting persistingly persistive persistively persistiveness persnickety person persona personable personableness personably personage personal personalia personalism personalist personalistic personality personalization personalize personally personalness personalty personate personately personating personation personative personator personed personeity personifiable personifiant personification personificative personificator personifier personify personization personize personnel personship perspection perspective perspectived perspectiveless perspectively perspectivity perspectograph perspectometer perspicacious perspicaciously perspicaciousness perspicacity perspicuity perspicuous perspicuously perspicuousness perspirability perspirable perspirant perspirate perspiration perspirative perspiratory perspire perspiringly perspiry perstringe perstringement persuadability persuadable persuadableness persuadably persuade persuaded persuadedly persuadedness persuader persuadingly persuasibility persuasible persuasibleness persuasibly persuasion persuasive persuasively persuasiveness persuasory persulphate persulphide persulphocyanate persulphocyanic persulphuric persymmetric persymmetrical pert pertain pertaining pertainment perten perthiocyanate perthiocyanic perthiotophyre perthite perthitic perthitically perthosite pertinacious pertinaciously pertinaciousness pertinacity pertinence pertinency pertinent pertinently pertinentness pertish pertly pertness perturb perturbability perturbable perturbance perturbancy perturbant perturbate perturbation perturbational perturbatious perturbative perturbator perturbatory perturbatress perturbatrix perturbed perturbedly perturbedness perturber perturbing perturbingly perturbment Pertusaria Pertusariaceae pertuse pertused pertusion pertussal pertussis perty Peru Perugian Peruginesque peruke perukeless perukier perukiership perula Perularia perulate perule Perun perusable perusal peruse peruser Peruvian Peruvianize pervade pervadence pervader pervading pervadingly pervadingness pervagate pervagation pervalvar pervasion pervasive pervasively pervasiveness perverse perversely perverseness perversion perversity perversive pervert perverted pervertedly pervertedness perverter pervertibility pervertible pervertibly pervertive perviability perviable pervicacious pervicaciously pervicaciousness pervicacity pervigilium pervious perviously perviousness pervulgate pervulgation perwitsky pes pesa Pesach pesade pesage Pesah peseta peshkar peshkash peshwa peshwaship peskily peskiness pesky peso pess pessary pessimal pessimism pessimist pessimistic pessimistically pessimize pessimum pessomancy pessoner pessular pessulus pest Pestalozzian Pestalozzianism peste pester pesterer pesteringly pesterment pesterous pestersome pestful pesthole pesthouse pesticidal pesticide pestiduct pestiferous pestiferously pestiferousness pestifugous pestify pestilence pestilenceweed pestilencewort pestilent pestilential pestilentially pestilentialness pestilently pestle pestological pestologist pestology pestproof pet petal petalage petaled Petalia petaliferous petaliform Petaliidae petaline petalism petalite petalled petalless petallike petalocerous petalodic petalodont petalodontid Petalodontidae petalodontoid Petalodus petalody petaloid petaloidal petaloideous petalomania petalon Petalostemon petalous petalwise petaly petard petardeer petardier petary Petasites petasos petasus petaurine petaurist Petaurista Petauristidae Petauroides Petaurus petchary petcock Pete pete peteca petechiae petechial petechiate peteman Peter peter Peterkin Peterloo peterman peternet petersham peterwort petful petiolar petiolary Petiolata petiolate petiolated petiole petioled Petioliventres petiolular petiolulate petiolule petiolus petit petite petiteness petitgrain petition petitionable petitional petitionarily petitionary petitionee petitioner petitionist petitionproof petitor petitory Petiveria Petiveriaceae petkin petling peto Petr Petrarchal Petrarchan Petrarchesque Petrarchian Petrarchianism Petrarchism Petrarchist Petrarchistic Petrarchistical Petrarchize petrary petre Petrea petrean petreity petrel petrescence petrescent Petricola Petricolidae petricolous petrie petrifaction petrifactive petrifiable petrific petrificant petrificate petrification petrified petrifier petrify Petrine Petrinism Petrinist Petrinize petrissage Petrobium Petrobrusian petrochemical petrochemistry Petrogale petrogenesis petrogenic petrogeny petroglyph petroglyphic petroglyphy petrograph petrographer petrographic petrographical petrographically petrography petrohyoid petrol petrolage petrolatum petrolean petrolene petroleous petroleum petrolic petroliferous petrolific petrolist petrolithic petrolization petrolize petrologic petrological petrologically petromastoid Petromyzon Petromyzonidae petromyzont Petromyzontes Petromyzontidae petromyzontoid petronel petronella petropharyngeal petrophilous petrosa petrosal Petroselinum petrosilex petrosiliceous petrosilicious petrosphenoid petrosphenoidal petrosphere petrosquamosal petrosquamous petrostearin petrostearine petrosum petrotympanic petrous petroxolin pettable petted pettedly pettedness petter pettichaps petticoat petticoated petticoaterie petticoatery petticoatism petticoatless petticoaty pettifog pettifogger pettifoggery pettifogging pettifogulize pettifogulizer pettily pettiness pettingly pettish pettitoes pettle petty pettyfog petulance petulancy petulant petulantly petune Petunia petuntse petwood petzite Peucedanum Peucetii peucites peuhl Peul Peumus Peutingerian pew pewage pewdom pewee pewfellow pewful pewholder pewing pewit pewless pewmate pewter pewterer pewterwort pewtery pewy Peyerian peyote peyotl peyton peytrel pezantic Peziza Pezizaceae pezizaceous pezizaeform Pezizales peziziform pezizoid pezograph Pezophaps Pfaffian pfeffernuss Pfeifferella pfennig pfui pfund Phaca Phacelia phacelite phacella Phacidiaceae Phacidiales phacitis phacoanaphylaxis phacocele phacochere phacocherine phacochoere phacochoerid phacochoerine phacochoeroid Phacochoerus phacocyst phacocystectomy phacocystitis phacoglaucoma phacoid phacoidal phacoidoscope phacolite phacolith phacolysis phacomalacia phacometer phacopid Phacopidae Phacops phacosclerosis phacoscope phacotherapy Phaeacian Phaedo phaeism phaenantherous phaenanthery phaenogam Phaenogamia phaenogamian phaenogamic phaenogamous phaenogenesis phaenogenetic phaenological phaenology phaenomenal phaenomenism phaenomenon phaenozygous phaeochrous Phaeodaria phaeodarian phaeophore Phaeophyceae phaeophycean phaeophyceous phaeophyll Phaeophyta phaeophytin phaeoplast Phaeosporales phaeospore Phaeosporeae phaeosporous Phaet Phaethon Phaethonic Phaethontes Phaethontic Phaethontidae Phaethusa phaeton phage phagedena phagedenic phagedenical phagedenous Phagineae phagocytable phagocytal phagocyte phagocyter phagocytic phagocytism phagocytize phagocytoblast phagocytolysis phagocytolytic phagocytose phagocytosis phagodynamometer phagolysis phagolytic phagomania phainolion Phainopepla Phajus Phalacrocoracidae phalacrocoracine Phalacrocorax phalacrosis Phalaecean Phalaecian Phalaenae Phalaenidae phalaenopsid Phalaenopsis phalangal phalange phalangeal phalangean phalanger Phalangeridae Phalangerinae phalangerine phalanges phalangette phalangian phalangic phalangid Phalangida phalangidan Phalangidea phalangidean Phalangides phalangiform Phalangigrada phalangigrade phalangigrady phalangiid Phalangiidae phalangist Phalangista Phalangistidae phalangistine phalangite phalangitic phalangitis Phalangium phalangologist phalangology phalansterial phalansterian phalansterianism phalansteric phalansterism phalansterist phalanstery phalanx phalanxed phalarica Phalaris Phalarism phalarope Phalaropodidae phalera phalerate phalerated Phaleucian Phallaceae phallaceous Phallales phallalgia phallaneurysm phallephoric phallic phallical phallicism phallicist phallin phallism phallist phallitis phallocrypsis phallodynia phalloid phalloncus phalloplasty phallorrhagia phallus Phanar Phanariot Phanariote phanatron phaneric phanerite Phanerocarpae Phanerocarpous Phanerocephala phanerocephalous phanerocodonic phanerocryst phanerocrystalline phanerogam Phanerogamia phanerogamian phanerogamic phanerogamous phanerogamy phanerogenetic phanerogenic Phaneroglossa phaneroglossal phaneroglossate phaneromania phaneromere phaneromerous phaneroscope phanerosis phanerozoic phanerozonate Phanerozonia phanic phano phansigar phantascope phantasia Phantasiast Phantasiastic phantasist phantasize phantasm phantasma phantasmagoria phantasmagorial phantasmagorially phantasmagorian phantasmagoric phantasmagorical phantasmagorist phantasmagory phantasmal phantasmalian phantasmality phantasmally phantasmascope phantasmata Phantasmatic phantasmatic phantasmatical phantasmatically phantasmatography phantasmic phantasmical phantasmically Phantasmist phantasmogenesis phantasmogenetic phantasmograph phantasmological phantasmology phantast phantasy phantom phantomatic phantomic phantomical phantomically Phantomist phantomize phantomizer phantomland phantomlike phantomnation phantomry phantomship phantomy phantoplex phantoscope Pharaoh Pharaonic Pharaonical Pharbitis phare Phareodus Pharian Pharisaean Pharisaic pharisaical pharisaically pharisaicalness Pharisaism Pharisaist Pharisean Pharisee pharisee Phariseeism pharmacal pharmaceutic pharmaceutical pharmaceutically pharmaceutics pharmaceutist pharmacic pharmacist pharmacite pharmacodiagnosis pharmacodynamic pharmacodynamical pharmacodynamics pharmacoendocrinology pharmacognosia pharmacognosis pharmacognosist pharmacognostical pharmacognostically pharmacognostics pharmacognosy pharmacography pharmacolite pharmacologia pharmacologic pharmacological pharmacologically pharmacologist pharmacology pharmacomania pharmacomaniac pharmacomaniacal pharmacometer pharmacopedia pharmacopedic pharmacopedics pharmacopeia pharmacopeial pharmacopeian pharmacophobia pharmacopoeia pharmacopoeial pharmacopoeian pharmacopoeist pharmacopolist pharmacoposia pharmacopsychology pharmacosiderite pharmacotherapy pharmacy pharmakos pharmic pharmuthi pharology Pharomacrus pharos Pharsalian pharyngal pharyngalgia pharyngalgic pharyngeal pharyngectomy pharyngemphraxis pharynges pharyngic pharyngismus pharyngitic pharyngitis pharyngoamygdalitis pharyngobranch pharyngobranchial pharyngobranchiate Pharyngobranchii pharyngocele pharyngoceratosis pharyngodynia pharyngoepiglottic pharyngoepiglottidean pharyngoesophageal pharyngoglossal pharyngoglossus pharyngognath Pharyngognathi pharyngognathous pharyngographic pharyngography pharyngokeratosis pharyngolaryngeal pharyngolaryngitis pharyngolith pharyngological pharyngology pharyngomaxillary pharyngomycosis pharyngonasal pharyngopalatine pharyngopalatinus pharyngoparalysis pharyngopathy pharyngoplasty pharyngoplegia pharyngoplegic pharyngoplegy pharyngopleural Pharyngopneusta pharyngopneustal pharyngorhinitis pharyngorhinoscopy pharyngoscleroma pharyngoscope pharyngoscopy pharyngospasm pharyngotherapy pharyngotomy pharyngotonsillitis pharyngotyphoid pharyngoxerosis pharynogotome pharynx Phascaceae phascaceous Phascogale Phascolarctinae Phascolarctos phascolome Phascolomyidae Phascolomys Phascolonus Phascum phase phaseal phaseless phaselin phasemeter phasemy Phaseolaceae phaseolin phaseolous phaseolunatin Phaseolus phaseometer phases Phasianella Phasianellidae phasianic phasianid Phasianidae Phasianinae phasianine phasianoid Phasianus phasic Phasiron phasis phasm phasma phasmatid Phasmatida Phasmatidae Phasmatodea phasmatoid Phasmatoidea phasmatrope phasmid Phasmida Phasmidae phasmoid phasogeneous phasotropy pheal pheasant pheasantry pheasantwood Phebe Phecda Phegopteris Pheidole phellandrene phellem Phellodendron phelloderm phellodermal phellogen phellogenetic phellogenic phellonic phelloplastic phelloplastics phelonion phemic Phemie phenacaine phenacetin phenaceturic phenacite Phenacodontidae Phenacodus phenacyl phenakism phenakistoscope Phenalgin phenanthrene phenanthridine phenanthridone phenanthrol phenanthroline phenarsine phenate phenazine phenazone phene phenegol phenene phenethyl phenetidine phenetole phengite phengitical phenic phenicate phenicious phenicopter phenin phenmiazine phenobarbital phenocoll phenocopy phenocryst phenocrystalline phenogenesis phenogenetic phenol phenolate phenolic phenolization phenolize phenological phenologically phenologist phenology phenoloid phenolphthalein phenolsulphonate phenolsulphonephthalein phenolsulphonic phenomena phenomenal phenomenalism phenomenalist phenomenalistic phenomenalistically phenomenality phenomenalization phenomenalize phenomenally phenomenic phenomenical phenomenism phenomenist phenomenistic phenomenize phenomenological phenomenologically phenomenology phenomenon phenoplast phenoplastic phenoquinone phenosafranine phenosal phenospermic phenospermy phenothiazine phenotype phenotypic phenotypical phenotypically phenoxazine phenoxid phenoxide phenozygous Pheny phenyl phenylacetaldehyde phenylacetamide phenylacetic phenylalanine phenylamide phenylamine phenylate phenylation phenylboric phenylcarbamic phenylcarbimide phenylene phenylenediamine phenylethylene phenylglycine phenylglycolic phenylglyoxylic phenylhydrazine phenylhydrazone phenylic phenylmethane pheon pheophyl pheophyll pheophytin Pherecratean Pherecratian Pherecratic Pherephatta pheretrer Pherkad Pherophatta Phersephatta Phersephoneia phew phi phial phiale phialful phialide phialine phiallike phialophore phialospore Phidiac Phidian Phigalian Phil Philadelphian Philadelphianism philadelphite Philadelphus philadelphy philalethist philamot Philander philander philanderer philanthid Philanthidae philanthrope philanthropian philanthropic philanthropical philanthropically philanthropinism philanthropinist Philanthropinum philanthropism philanthropist philanthropistic philanthropize philanthropy Philanthus philantomba philarchaist philaristocracy philatelic philatelical philatelically philatelism philatelist philatelistic philately Philathea philathletic philematology Philepitta Philepittidae Philesia Philetaerus philharmonic philhellene philhellenic philhellenism philhellenist philhippic philhymnic philiater Philip Philippa Philippan Philippe Philippian Philippic philippicize Philippine Philippines Philippism Philippist Philippistic Philippizate philippize philippizer philippus Philistia Philistian Philistine Philistinely Philistinian Philistinic Philistinish Philistinism Philistinize Phill philliloo Phillip phillipsine phillipsite Phillis Phillyrea phillyrin philobiblian philobiblic philobiblical philobiblist philobotanic philobotanist philobrutish philocalic philocalist philocaly philocathartic philocatholic philocomal Philoctetes philocubist philocynic philocynical philocynicism philocyny philodemic Philodendron philodespot philodestructiveness Philodina Philodinidae philodox philodoxer philodoxical philodramatic philodramatist philofelist philofelon philogarlic philogastric philogeant philogenitive philogenitiveness philograph philographic philogynaecic philogynist philogynous philogyny Philohela philohellenian philokleptic philoleucosis philologaster philologastry philologer philologian philologic philological philologically philologist philologistic philologize philologue philology Philomachus philomath philomathematic philomathematical philomathic philomathical philomathy philomel Philomela philomelanist philomuse philomusical philomystic philonatural philoneism Philonian Philonic Philonism Philonist philonium philonoist philopagan philopater philopatrian philopena philophilosophos philopig philoplutonic philopoet philopogon philopolemic philopolemical philopornist philoprogeneity philoprogenitive philoprogenitiveness philopterid Philopteridae philopublican philoradical philorchidaceous philornithic philorthodox philosoph philosophaster philosophastering philosophastry philosophedom philosopheme philosopher philosopheress philosophership philosophic philosophical philosophically philosophicalness philosophicide philosophicohistorical philosophicojuristic philosophicolegal philosophicoreligious philosophicotheological philosophism philosophist philosophister philosophistic philosophistical philosophization philosophize philosophizer philosophling philosophobia philosophocracy philosophuncule philosophunculist philosophy philotadpole philotechnic philotechnical philotechnist philothaumaturgic philotheism philotheist philotheistic philotheosophical philotherian philotherianism Philotria Philoxenian philoxygenous philozoic philozoist philozoonist philter philterer philterproof philtra philtrum Philydraceae philydraceous Philyra phimosed phimosis phimotic Phineas Phiomia Phiroze phit phiz phizes phizog phlebalgia phlebangioma phlebarteriectasia phlebarteriodialysis phlebectasia phlebectasis phlebectasy phlebectomy phlebectopia phlebectopy phlebemphraxis phlebenteric phlebenterism phlebitic phlebitis Phlebodium phlebogram phlebograph phlebographical phlebography phleboid phleboidal phlebolite phlebolith phlebolithiasis phlebolithic phlebolitic phlebological phlebology phlebometritis phlebopexy phleboplasty phleborrhage phleborrhagia phleborrhaphy phleborrhexis phlebosclerosis phlebosclerotic phlebostasia phlebostasis phlebostenosis phlebostrepsis phlebothrombosis phlebotome phlebotomic phlebotomical phlebotomically phlebotomist phlebotomization phlebotomize Phlebotomus phlebotomus phlebotomy Phlegethon Phlegethontal Phlegethontic phlegm phlegma phlegmagogue phlegmasia phlegmatic phlegmatical phlegmatically phlegmaticalness phlegmaticly phlegmaticness phlegmatism phlegmatist phlegmatous phlegmless phlegmon phlegmonic phlegmonoid phlegmonous phlegmy Phleum phlobaphene phlobatannin phloem phloeophagous phloeoterma phlogisma phlogistian phlogistic phlogistical phlogisticate phlogistication phlogiston phlogistonism phlogistonist phlogogenetic phlogogenic phlogogenous phlogopite phlogosed Phlomis phloretic phloroglucic phloroglucin phlorone phloxin pho phobiac phobic phobism phobist phobophobia Phobos phoby phoca phocacean phocaceous Phocaean Phocaena Phocaenina phocaenine phocal Phocean phocenate phocenic phocenin Phocian phocid Phocidae phociform Phocinae phocine phocodont Phocodontia phocodontic Phocoena phocoid phocomelia phocomelous phocomelus Phoebe phoebe Phoebean Phoenicaceae phoenicaceous Phoenicales phoenicean Phoenician Phoenicianism Phoenicid phoenicite Phoenicize phoenicochroite Phoenicopteridae Phoenicopteriformes phoenicopteroid Phoenicopteroideae phoenicopterous Phoenicopterus Phoeniculidae Phoeniculus phoenicurous phoenigm Phoenix phoenix phoenixity phoenixlike phoh pholad Pholadacea pholadian pholadid Pholadidae Pholadinea pholadoid Pholas pholcid Pholcidae pholcoid Pholcus pholido pholidolite pholidosis Pholidota pholidote Pholiota Phoma Phomopsis phon phonal phonasthenia phonate phonation phonatory phonautogram phonautograph phonautographic phonautographically phone phoneidoscope phoneidoscopic Phonelescope phoneme phonemic phonemics phonendoscope phonesis phonestheme phonetic phonetical phonetically phonetician phoneticism phoneticist phoneticization phoneticize phoneticogrammatical phoneticohieroglyphic phonetics phonetism phonetist phonetization phonetize phoniatrics phoniatry phonic phonics phonikon phonism phono phonocamptic phonocinematograph phonodeik phonodynamograph phonoglyph phonogram phonogramic phonogramically phonogrammatic phonogrammatical phonogrammic phonogrammically phonograph phonographer phonographic phonographical phonographically phonographist phonography phonolite phonolitic phonologer phonologic phonological phonologically phonologist phonology phonometer phonometric phonometry phonomimic phonomotor phonopathy phonophile phonophobia phonophone phonophore phonophoric phonophorous phonophote phonophotography phonophotoscope phonophotoscopic phonoplex phonoscope phonotelemeter phonotype phonotyper phonotypic phonotypical phonotypically phonotypist phonotypy phony phoo Phora Phoradendron phoranthium phoresis phoresy phoria phorid Phoridae phorminx Phormium phorology phorometer phorometric phorometry phorone phoronic phoronid Phoronida Phoronidea Phoronis phoronomia phoronomic phoronomically phoronomics phoronomy Phororhacidae Phororhacos phoroscope phorozooid phos phose phosgene phosgenic phosgenite phosis phosphagen phospham phosphamic phosphamide phosphamidic phosphammonium phosphatase phosphate phosphated phosphatemia phosphatese phosphatic phosphatide phosphation phosphatization phosphatize phosphaturia phosphaturic phosphene phosphenyl phosphide phosphinate phosphine phosphinic phosphite phospho phosphoaminolipide phosphocarnic phosphocreatine phosphoferrite phosphoglycerate phosphoglyceric phosphoglycoprotein phospholipide phospholipin phosphomolybdate phosphomolybdic phosphonate phosphonic phosphonium phosphophyllite phosphoprotein phosphor phosphorate phosphore phosphoreal phosphorent phosphoreous phosphoresce phosphorescence phosphorescent phosphorescently phosphoreted phosphorhidrosis phosphori phosphoric phosphorical phosphoriferous phosphorism phosphorite phosphoritic phosphorize phosphorogen phosphorogenic phosphorograph phosphorographic phosphorography phosphoroscope phosphorous phosphoruria phosphorus phosphoryl phosphorylase phosphorylation phosphosilicate phosphotartaric phosphotungstate phosphotungstic phosphowolframic phosphuranylite phosphuret phosphuria phosphyl phossy phot photaesthesia photaesthesis photaesthetic photal photalgia photechy photelectrograph photeolic photerythrous photesthesis photic photics Photinia Photinian Photinianism photism photistic photo photoactinic photoactivate photoactivation photoactive photoactivity photoaesthetic photoalbum photoalgraphy photoanamorphosis photoaquatint Photobacterium photobathic photobiotic photobromide photocampsis photocatalysis photocatalyst photocatalytic photocatalyzer photocell photocellulose photoceptor photoceramic photoceramics photoceramist photochemic photochemical photochemically photochemigraphy photochemist photochemistry photochloride photochlorination photochromascope photochromatic photochrome photochromic photochromography photochromolithograph photochromoscope photochromotype photochromotypy photochromy photochronograph photochronographic photochronographical photochronographically photochronography photocollograph photocollographic photocollography photocollotype photocombustion photocompose photocomposition photoconductivity photocopier photocopy photocrayon photocurrent photodecomposition photodensitometer photodermatic photodermatism photodisintegration photodissociation photodrama photodramatic photodramatics photodramatist photodramaturgic photodramaturgy photodrome photodromy photodynamic photodynamical photodynamically photodynamics photodysphoria photoelastic photoelasticity photoelectric photoelectrical photoelectrically photoelectricity photoelectron photoelectrotype photoemission photoemissive photoengrave photoengraver photoengraving photoepinastic photoepinastically photoepinasty photoesthesis photoesthetic photoetch photoetcher photoetching photofilm photofinish photofinisher photofinishing photofloodlamp photogalvanograph photogalvanographic photogalvanography photogastroscope photogelatin photogen photogene photogenetic photogenic photogenically photogenous photoglyph photoglyphic photoglyphography photoglyphy photoglyptic photoglyptography photogram photogrammeter photogrammetric photogrammetrical photogrammetry photograph photographable photographee photographer photographeress photographess photographic photographical photographically photographist photographize photographometer photography photogravure photogravurist photogyric photohalide photoheliograph photoheliographic photoheliography photoheliometer photohyponastic photohyponastically photohyponasty photoimpression photoinactivation photoinduction photoinhibition photointaglio photoionization photoisomeric photoisomerization photokinesis photokinetic photolith photolitho photolithograph photolithographer photolithographic photolithography photologic photological photologist photology photoluminescence photoluminescent photolysis photolyte photolytic photoma photomacrograph photomagnetic photomagnetism photomap photomapper photomechanical photomechanically photometeor photometer photometric photometrical photometrically photometrician photometrist photometrograph photometry photomezzotype photomicrogram photomicrograph photomicrographer photomicrographic photomicrography photomicroscope photomicroscopic photomicroscopy photomontage photomorphosis photomural photon photonastic photonasty photonegative photonephograph photonephoscope photoneutron photonosus photooxidation photooxidative photopathic photopathy photoperceptive photoperimeter photoperiod photoperiodic photoperiodism photophane photophile photophilic photophilous photophily photophobe photophobia photophobic photophobous photophone photophonic photophony photophore photophoresis photophosphorescent photophygous photophysical photophysicist photopia photopic photopile photopitometer photoplay photoplayer photoplaywright photopography photopolarigraph photopolymerization photopositive photoprint photoprinter photoprinting photoprocess photoptometer photoradio photoradiogram photoreception photoreceptive photoreceptor photoregression photorelief photoresistance photosalt photosantonic photoscope photoscopic photoscopy photosculptural photosculpture photosensitive photosensitiveness photosensitivity photosensitization photosensitize photosensitizer photosensory photospectroheliograph photospectroscope photospectroscopic photospectroscopical photospectroscopy photosphere photospheric photostability photostable Photostat photostat photostationary photostereograph photosurveying photosyntax photosynthate photosynthesis photosynthesize photosynthetic photosynthetically photosynthometer phototachometer phototachometric phototachometrical phototachometry phototactic phototactically phototactism phototaxis phototaxy phototechnic phototelegraph phototelegraphic phototelegraphically phototelegraphy phototelephone phototelephony phototelescope phototelescopic phototheodolite phototherapeutic phototherapeutics phototherapic phototherapist phototherapy photothermic phototonic phototonus phototopographic phototopographical phototopography phototrichromatic phototrope phototrophic phototrophy phototropic phototropically phototropism phototropy phototube phototype phototypic phototypically phototypist phototypographic phototypography phototypy photovisual photovitrotype photovoltaic photoxylography photozinco photozincograph photozincographic photozincography photozincotype photozincotypy photuria Phractamphibia phragma Phragmidium Phragmites phragmocone phragmoconic Phragmocyttares phragmocyttarous phragmoid phragmosis phrasable phrasal phrasally phrase phraseable phraseless phrasemaker phrasemaking phraseman phrasemonger phrasemongering phrasemongery phraseogram phraseograph phraseographic phraseography phraseological phraseologically phraseologist phraseology phraser phrasify phrasiness phrasing phrasy phrator phratral phratria phratriac phratrial phratry phreatic phreatophyte phrenesia phrenesiac phrenesis phrenetic phrenetically phreneticness phrenic phrenicectomy phrenicocolic phrenicocostal phrenicogastric phrenicoglottic phrenicohepatic phrenicolienal phrenicopericardiac phrenicosplenic phrenicotomy phrenics phrenitic phrenitis phrenocardia phrenocardiac phrenocolic phrenocostal phrenodynia phrenogastric phrenoglottic phrenogram phrenograph phrenography phrenohepatic phrenologer phrenologic phrenological phrenologically phrenologist phrenologize phrenology phrenomagnetism phrenomesmerism phrenopathia phrenopathic phrenopathy phrenopericardiac phrenoplegia phrenoplegy phrenosin phrenosinic phrenospasm phrenosplenic phronesis Phronima Phronimidae phrontisterion phrontisterium phrontistery Phryganea phryganeid Phryganeidae phryganeoid Phrygian Phrygianize phrygium Phryma Phrymaceae phrymaceous phrynid Phrynidae phrynin phrynoid Phrynosoma phthalacene phthalan phthalanilic phthalate phthalazin phthalazine phthalein phthaleinometer phthalic phthalid phthalide phthalimide phthalin phthalocyanine phthalyl phthanite Phthartolatrae phthinoid phthiocol phthiriasis Phthirius phthirophagous phthisic phthisical phthisicky phthisiogenesis phthisiogenetic phthisiogenic phthisiologist phthisiology phthisiophobia phthisiotherapeutic phthisiotherapy phthisipneumonia phthisipneumony phthisis phthongal phthongometer phthor phthoric phu phugoid phulkari phulwa phulwara phut Phyciodes phycite Phycitidae phycitol phycochromaceae phycochromaceous phycochrome Phycochromophyceae phycochromophyceous phycocyanin phycocyanogen Phycodromidae phycoerythrin phycography phycological phycologist phycology Phycomyces phycomycete Phycomycetes phycomycetous phycophaein phycoxanthin phycoxanthine phygogalactic phyla phylacobiosis phylacobiotic phylacteric phylacterical phylacteried phylacterize phylactery phylactic phylactocarp phylactocarpal Phylactolaema Phylactolaemata phylactolaematous Phylactolema Phylactolemata phylarch phylarchic phylarchical phylarchy phyle phylephebic phylesis phyletic phyletically phyletism phylic Phyllachora Phyllactinia phyllade Phyllanthus phyllary Phyllaurea phylliform phyllin phylline Phyllis phyllite phyllitic Phyllitis Phyllium phyllobranchia phyllobranchial phyllobranchiate Phyllocactus phyllocarid Phyllocarida phyllocaridan Phylloceras phyllocerate Phylloceratidae phylloclad phylloclade phyllocladioid phyllocladium phyllocladous phyllocyanic phyllocyanin phyllocyst phyllocystic phyllode phyllodial phyllodination phyllodineous phyllodiniation phyllodinous phyllodium Phyllodoce phyllody phylloerythrin phyllogenetic phyllogenous phylloid phylloidal phylloideous phyllomancy phyllomania phyllome phyllomic phyllomorph phyllomorphic phyllomorphosis phyllomorphy Phyllophaga phyllophagous phyllophore phyllophorous phyllophyllin phyllophyte phyllopod Phyllopoda phyllopodan phyllopode phyllopodiform phyllopodium phyllopodous phylloporphyrin Phyllopteryx phylloptosis phyllopyrrole phyllorhine phyllorhinine phylloscopine Phylloscopus phyllosiphonic phyllosoma Phyllosomata phyllosome Phyllospondyli phyllospondylous Phyllostachys Phyllosticta Phyllostoma Phyllostomatidae Phyllostomatinae phyllostomatoid phyllostomatous phyllostome Phyllostomidae Phyllostominae phyllostomine phyllostomous Phyllostomus phyllotactic phyllotactical phyllotaxis phyllotaxy phyllous phylloxanthin Phylloxera phylloxeran phylloxeric Phylloxeridae phyllozooid phylogenetic phylogenetical phylogenetically phylogenic phylogenist phylogeny phylogerontic phylogerontism phylography phylology phylon phyloneanic phylonepionic phylum phyma phymata phymatic phymatid Phymatidae Phymatodes phymatoid phymatorhysin phymatosis Phymosia Physa physagogue Physalia physalian Physaliidae Physalis physalite Physalospora Physapoda Physaria Physcia Physciaceae physcioid Physcomitrium Physeter Physeteridae Physeterinae physeterine physeteroid Physeteroidea physharmonica physianthropy physiatric physiatrical physiatrics physic physical physicalism physicalist physicalistic physicalistically physicality physically physicalness physician physicianary physiciancy physicianed physicianer physicianess physicianless physicianly physicianship physicism physicist physicked physicker physicking physicky physicoastronomical physicobiological physicochemic physicochemical physicochemically physicochemist physicochemistry physicogeographical physicologic physicological physicomathematical physicomathematics physicomechanical physicomedical physicomental physicomorph physicomorphic physicomorphism physicooptics physicophilosophical physicophilosophy physicophysiological physicopsychical physicosocial physicotheological physicotheologist physicotheology physicotherapeutic physicotherapeutics physicotherapy physics Physidae physiform physiochemical physiochemically physiocracy physiocrat physiocratic physiocratism physiocratist physiogenesis physiogenetic physiogenic physiogeny physiognomic physiognomical physiognomically physiognomics physiognomist physiognomize physiognomonic physiognomonical physiognomy physiogony physiographer physiographic physiographical physiographically physiography physiolater physiolatrous physiolatry physiologer physiologian physiological physiologically physiologicoanatomic physiologist physiologize physiologue physiologus physiology physiopathological physiophilist physiophilosopher physiophilosophical physiophilosophy physiopsychic physiopsychical physiopsychological physiopsychology physiosociological physiosophic physiosophy physiotherapeutic physiotherapeutical physiotherapeutics physiotherapist physiotherapy physiotype physiotypy physique physiqued physitheism physitheistic physitism physiurgic physiurgy physocarpous Physocarpus physocele physoclist Physoclisti physoclistic physoclistous Physoderma physogastric physogastrism physogastry physometra Physonectae physonectous Physophorae physophoran physophore physophorous physopod Physopoda physopodan Physostegia Physostigma physostigmine physostomatous physostome Physostomi physostomous phytalbumose phytase Phytelephas Phyteus phytic phytiferous phytiform phytin phytivorous phytobacteriology phytobezoar phytobiological phytobiology phytochemical phytochemistry phytochlorin phytocidal phytodynamics phytoecological phytoecologist phytoecology Phytoflagellata phytogamy phytogenesis phytogenetic phytogenetical phytogenetically phytogenic phytogenous phytogeny phytogeographer phytogeographic phytogeographical phytogeographically phytogeography phytoglobulin phytograph phytographer phytographic phytographical phytographist phytography phytohormone phytoid phytol Phytolacca Phytolaccaceae phytolaccaceous phytolatrous phytolatry phytolithological phytolithologist phytolithology phytologic phytological phytologically phytologist phytology phytoma Phytomastigina Phytomastigoda phytome phytomer phytometer phytometric phytometry phytomonad Phytomonadida Phytomonadina Phytomonas phytomorphic phytomorphology phytomorphosis phyton phytonic phytonomy phytooecology phytopaleontologic phytopaleontological phytopaleontologist phytopaleontology phytoparasite phytopathogen phytopathogenic phytopathologic phytopathological phytopathologist phytopathology Phytophaga phytophagan phytophagic Phytophagineae phytophagous phytophagy phytopharmacologic phytopharmacology phytophenological phytophenology phytophil phytophilous Phytophthora phytophylogenetic phytophylogenic phytophylogeny phytophysiological phytophysiology phytoplankton phytopsyche phytoptid Phytoptidae phytoptose phytoptosis Phytoptus phytorhodin phytosaur Phytosauria phytosaurian phytoserologic phytoserological phytoserologically phytoserology phytosis phytosociologic phytosociological phytosociologically phytosociologist phytosociology phytosterin phytosterol phytostrote phytosynthesis phytotaxonomy phytotechny phytoteratologic phytoteratological phytoteratologist phytoteratology Phytotoma Phytotomidae phytotomist phytotomy phytotopographical phytotopography phytotoxic phytotoxin phytovitellin Phytozoa phytozoan Phytozoaria phytozoon phytyl pi Pia pia piaba piacaba piacle piacular piacularity piacularly piacularness piaculum piaffe piaffer pial pialyn pian pianette pianic pianino pianism pianissimo pianist pianiste pianistic pianistically Piankashaw piannet piano pianoforte pianofortist pianograph Pianokoto Pianola pianola pianolist pianologue piarhemia piarhemic Piarist Piaroa Piaroan Piaropus Piarroan piassava Piast piaster piastre piation piazine piazza piazzaed piazzaless piazzalike piazzian pibcorn piblokto pibroch pic Pica pica picador picadura Picae pical picamar picara Picard picarel picaresque Picariae picarian Picarii picaro picaroon picary picayune picayunish picayunishly picayunishness piccadill piccadilly piccalilli piccolo piccoloist pice Picea Picene picene Picenian piceoferruginous piceotestaceous piceous piceworth pichi pichiciago pichuric pichurim Pici Picidae piciform Piciformes Picinae picine pick pickaback pickable pickableness pickage pickaninny pickaroon pickaway pickax picked pickedly pickedness pickee pickeer picker pickerel pickerelweed pickering pickeringite pickery picket picketboat picketeer picketer pickfork pickietar pickings pickle picklelike pickleman pickler pickleweed pickleworm picklock pickman pickmaw picknick picknicker pickover pickpocket pickpocketism pickpocketry pickpole pickpurse pickshaft picksman picksmith picksome picksomeness pickthank pickthankly pickthankness pickthatch picktooth pickup pickwick Pickwickian Pickwickianism Pickwickianly pickwork picky picnic picnicker picnickery Picnickian picnickish picnicky pico picofarad picoid picoline picolinic picot picotah picotee picotite picqueter picra picramic Picramnia picrasmin picrate picrated picric Picris picrite picrocarmine Picrodendraceae Picrodendron picroerythrin picrol picrolite picromerite picropodophyllin picrorhiza picrorhizin picrotin picrotoxic picrotoxin picrotoxinin picryl Pict pict pictarnie Pictavi Pictish Pictland pictogram pictograph pictographic pictographically pictography Pictones pictoradiogram pictorial pictorialism pictorialist pictorialization pictorialize pictorially pictorialness pictoric pictorical pictorically picturability picturable picturableness picturably pictural picture picturecraft pictured picturedom picturedrome pictureful pictureless picturelike picturely picturemaker picturemaking picturer picturesque picturesquely picturesqueness picturesquish picturization picturize pictury picucule picuda picudilla picudo picul piculet piculule Picumninae Picumnus Picunche Picuris Picus pidan piddle piddler piddling piddock pidgin pidjajap pie piebald piebaldism piebaldly piebaldness piece pieceable pieceless piecemaker piecemeal piecemealwise piecen piecener piecer piecette piecewise piecework pieceworker piecing piecrust pied piedfort piedly piedmont piedmontal Piedmontese piedmontite piedness Piegan piehouse pieless pielet pielum piemag pieman piemarker pien pienanny piend piepan pieplant piepoudre piepowder pieprint pier pierage Piercarlo Pierce pierce pierceable pierced piercel pierceless piercent piercer piercing piercingly piercingness pierdrop Pierette pierhead Pierian pierid Pieridae Pierides Pieridinae pieridine Pierinae pierine Pieris pierless pierlike Pierre Pierrot pierrot pierrotic pieshop Piet piet pietas Piete Pieter pietic pietism Pietist pietist pietistic pietistical pietistically pietose piety piewife piewipe piewoman piezo piezochemical piezochemistry piezocrystallization piezoelectric piezoelectrically piezoelectricity piezometer piezometric piezometrical piezometry piff piffle piffler pifine pig pigbelly pigdan pigdom pigeon pigeonable pigeonberry pigeoneer pigeoner pigeonfoot pigeongram pigeonhearted pigeonhole pigeonholer pigeonman pigeonry pigeontail pigeonweed pigeonwing pigeonwood pigface pigfish pigflower pigfoot pigful piggery piggin pigging piggish piggishly piggishness piggle piggy pighead pigheaded pigheadedly pigheadedness pigherd pightle pigless piglet pigling piglinghood pigly pigmaker pigmaking pigman pigment pigmental pigmentally pigmentary pigmentation pigmentize pigmentolysis pigmentophage pigmentose Pigmy pignolia pignon pignorate pignoration pignoratitious pignorative pignus pignut pigpen pigritude pigroot pigsconce pigskin pigsney pigstick pigsticker pigsty pigtail pigwash pigweed pigwidgeon pigyard piitis pik pika pike piked pikel pikelet pikeman pikemonger piker pikestaff piketail pikey piki piking pikle piky pilage pilandite pilapil Pilar pilar pilary pilaster pilastered pilastering pilastrade pilastraded pilastric Pilate Pilatian pilau pilaued pilch pilchard pilcher pilcorn pilcrow pile Pilea pileata pileate pileated piled pileiform pileolated pileolus pileorhiza pileorhize pileous piler piles pileus pileweed pilework pileworm pilewort pilfer pilferage pilferer pilfering pilferingly pilferment pilgarlic pilgarlicky pilger pilgrim pilgrimage pilgrimager pilgrimatic pilgrimatical pilgrimdom pilgrimer pilgrimess pilgrimism pilgrimize pilgrimlike pilgrimwise pili pilidium pilifer piliferous piliform piligan piliganine piligerous pilikai pililloo pilimiction pilin piline piling pilipilula pilkins pill pillage pillageable pillagee pillager pillar pillared pillaret pillaring pillarist pillarize pillarlet pillarlike pillarwise pillary pillas pillbox pilled pilledness pillet pilleus pillion pilliver pilliwinks pillmaker pillmaking pillmonger pillorization pillorize pillory pillow pillowcase pillowing pillowless pillowmade pillowwork pillowy pillworm pillwort pilm pilmy Pilobolus pilocarpidine pilocarpine Pilocarpus Pilocereus pilocystic piloerection pilomotor pilon pilonidal pilori pilose pilosebaceous pilosine pilosis pilosism pilosity Pilot pilot pilotage pilotaxitic pilotee pilothouse piloting pilotism pilotless pilotman pilotry pilotship pilotweed pilous Pilpai Pilpay pilpul pilpulist pilpulistic piltock pilula pilular Pilularia pilule pilulist pilulous pilum Pilumnus pilus pilwillet pily Pim Pima Piman pimaric pimelate Pimelea pimelic pimelite pimelitis Pimenta pimento pimenton pimgenet pimienta pimiento pimlico pimola pimp pimperlimpimp pimpernel pimpery Pimpinella pimping pimpish Pimpla pimple pimpleback pimpled pimpleproof Pimplinae pimpliness pimplo pimploe pimplous pimply pimpship pin pina Pinaceae pinaceous pinaces pinachrome pinacle Pinacoceras Pinacoceratidae pinacocytal pinacocyte pinacoid pinacoidal pinacol pinacolate pinacolic pinacolin pinacone pinacoteca pinaculum Pinacyanol pinafore pinakiolite pinakoidal pinakotheke Pinal Pinaleno Pinales pinang pinaster pinatype pinaverdol pinax pinball pinbefore pinbone pinbush pincase pincement pincer pincerlike pincers pincerweed pinch pinchable pinchback pinchbeck pinchbelly pinchcock pinchcommons pinchcrust pinche pinched pinchedly pinchedness pinchem pincher pinchfist pinchfisted pinchgut pinching pinchingly pinchpenny Pincian Pinckneya pincoffin pincpinc Pinctada pincushion pincushiony pind pinda Pindari Pindaric pindarical pindarically Pindarism Pindarist Pindarize Pindarus pinder pindling pindy pine pineal pinealism pinealoma pineapple pined pinedrops pineland pinene piner pinery pinesap pinetum pineweed pinewoods piney pinfall pinfeather pinfeathered pinfeatherer pinfeathery pinfish pinfold Ping ping pingle pingler pingue pinguecula pinguedinous pinguefaction pinguefy pinguescence pinguescent Pinguicula pinguicula Pinguiculaceae pinguiculaceous pinguid pinguidity pinguiferous pinguin pinguinitescent pinguite pinguitude pinguitudinous pinhead pinheaded pinheadedness pinhold pinhole pinhook pinic pinicoline pinicolous piniferous piniform pining piningly pinion pinioned pinionless pinionlike pinipicrin pinitannic pinite pinitol pinivorous pinjane pinjra pink pinkberry pinked pinkeen pinken pinker Pinkerton Pinkertonism pinkeye pinkfish pinkie pinkify pinkily pinkiness pinking pinkish pinkishness pinkly pinkness pinkroot pinksome Pinkster pinkweed pinkwood pinkwort pinky pinless pinlock pinmaker Pinna pinna pinnace pinnacle pinnaclet pinnae pinnaglobin pinnal pinnate pinnated pinnatedly pinnately pinnatifid pinnatifidly pinnatilobate pinnatilobed pinnation pinnatipartite pinnatiped pinnatisect pinnatisected pinnatodentate pinnatopectinate pinnatulate pinned pinnel pinner pinnet Pinnidae pinniferous pinniform pinnigerous Pinnigrada pinnigrade pinninervate pinninerved pinning pinningly pinniped Pinnipedia pinnipedian pinnisect pinnisected pinnitarsal pinnitentaculate pinniwinkis pinnock pinnoite pinnotere pinnothere Pinnotheres pinnotherian Pinnotheridae pinnula pinnular pinnulate pinnulated pinnule pinnulet pinny pino pinochle pinocytosis pinole pinoleum pinolia pinolin pinon pinonic pinpillow pinpoint pinprick pinproof pinrail pinrowed pinscher pinsons pint pinta pintadera pintado pintadoite pintail pintano pinte pintle pinto pintura pinulus Pinus pinweed pinwing pinwork pinworm piny pinyl pinyon pioneer pioneerdom pioneership pionnotes pioscope pioted piotine Piotr piotty pioury pious piously piousness Pioxe pip pipa pipage pipal pipe pipeage pipecoline pipecolinic piped pipefish pipeful pipelayer pipeless pipelike pipeline pipeman pipemouth Piper piper Piperaceae piperaceous Piperales piperate piperazin piperazine piperic piperide piperideine piperidge piperidide piperidine piperine piperitious piperitone piperly piperno piperoid piperonal piperonyl pipery piperylene pipestapple pipestem pipestone pipet pipette pipewalker pipewood pipework pipewort pipi Pipidae Pipil Pipile Pipilo piping pipingly pipingness pipiri pipistrel pipistrelle Pipistrellus pipit pipkin pipkinet pipless pipped pipper pippin pippiner pippinface pippy Pipra Pipridae Piprinae piprine piproid pipsissewa Piptadenia Piptomeris pipunculid Pipunculidae pipy piquable piquance piquancy piquant piquantly piquantness pique piquet piquia piqure pir piracy piragua Piranga piranha pirate piratelike piratery piratess piratical piratically piratism piratize piraty Pirene Piricularia pirijiri piripiri piririgua pirl pirn pirner pirnie pirny Piro pirogue pirol piroplasm Piroplasma piroplasmosis pirouette pirouetter pirouettist pirr pirraura pirrmaw pirssonite Pisaca pisaca pisachee Pisan pisang pisanite Pisauridae pisay piscary Piscataqua Piscataway piscation piscatology piscator piscatorial piscatorialist piscatorially piscatorian piscatorious piscatory Pisces piscian piscicapture piscicapturist piscicolous piscicultural pisciculturally pisciculture pisciculturist Piscid Piscidia piscifauna pisciferous pisciform piscina piscinal piscine piscinity Piscis piscivorous pisco pise pish pishaug pishogue Pishquow pishu Pisidium pisiform Pisistratean Pisistratidae pisk pisky pismire pismirism piso pisolite pisolitic Pisonia piss pissabed pissant pist pistache pistachio Pistacia pistacite pistareen Pistia pistic pistil pistillaceous pistillar pistillary pistillate pistillid pistilliferous pistilliform pistilligerous pistilline pistillode pistillody pistilloid pistilogy pistle Pistoiese pistol pistole pistoleer pistolet pistolgram pistolgraph pistollike pistolography pistology pistolproof pistolwise piston pistonhead pistonlike pistrix Pisum pit pita Pitahauerat Pitahauirata pitahaya pitanga pitangua pitapat pitapatation pitarah pitau Pitawas pitaya pitayita Pitcairnia pitch pitchable pitchblende pitcher pitchered pitcherful pitcherlike pitcherman pitchfork pitchhole pitchi pitchiness pitching pitchlike pitchman pitchometer pitchout pitchpike pitchpole pitchpoll pitchstone pitchwork pitchy piteous piteously piteousness pitfall pith pithecan pithecanthrope pithecanthropic pithecanthropid Pithecanthropidae pithecanthropoid Pithecanthropus Pithecia pithecian Pitheciinae pitheciine pithecism pithecoid Pithecolobium pithecological pithecometric pithecomorphic pithecomorphism pithful pithily pithiness pithless pithlessly Pithoegia Pithoigia pithole pithos pithsome pithwork pithy pitiability pitiable pitiableness pitiably pitiedly pitiedness pitier pitiful pitifully pitifulness pitikins pitiless pitilessly pitilessness pitless pitlike pitmaker pitmaking pitman pitmark pitmirk pitometer pitpan pitpit pitside Pitta pittacal pittance pittancer pitted pitter pitticite Pittidae pittine pitting Pittism Pittite pittite pittoid Pittosporaceae pittosporaceous pittospore Pittosporum Pittsburgher pituital pituitary pituite pituitous pituitousness Pituitrin pituri pitwood pitwork pitwright pity pitying pityingly Pitylus pityocampa pityproof pityriasic pityriasis Pityrogramma pityroid piuri piuricapsular pivalic pivot pivotal pivotally pivoter pix pixie pixilated pixilation pixy pize pizza pizzeria pizzicato pizzle placability placable placableness placably Placaean placard placardeer placarder placate placater placation placative placatively placatory placcate place placeable Placean placebo placeful placeless placelessly placemaker placemaking placeman placemanship placement placemonger placemongering placenta placental Placentalia placentalian placentary placentate placentation placentiferous placentiform placentigerous placentitis placentoid placentoma placer placet placewoman placid placidity placidly placidness placitum plack placket plackless placochromatic placode placoderm placodermal placodermatous Placodermi placodermoid placodont Placodontia Placodus placoganoid placoganoidean Placoganoidei placoid placoidal placoidean Placoidei Placoides Placophora placophoran placoplast placula placuntitis placuntoma Placus pladaroma pladarosis plaga plagal plagate plage Plagianthus plagiaplite plagiarical plagiarism plagiarist plagiaristic plagiaristically plagiarization plagiarize plagiarizer plagiary plagihedral plagiocephalic plagiocephalism plagiocephaly Plagiochila plagioclase plagioclasite plagioclastic plagioclinal plagiodont plagiograph plagioliparite plagionite plagiopatagium plagiophyre Plagiostomata plagiostomatous plagiostome Plagiostomi plagiostomous plagiotropic plagiotropically plagiotropism plagiotropous plagium plagose plagosity plague plagued plagueful plagueless plagueproof plaguer plaguesome plaguesomeness plaguily plaguy plaice plaid plaided plaidie plaiding plaidman plaidy plain plainback plainbacks plainer plainful plainhearted plainish plainly plainness plainscraft plainsfolk plainsman plainsoled plainstones plainswoman plaint plaintail plaintiff plaintiffship plaintile plaintive plaintively plaintiveness plaintless plainward plaister plait plaited plaiter plaiting plaitless plaitwork plak plakat plan planable planaea planar Planaria planarian Planarida planaridan planariform planarioid planarity planate planation planch plancheite plancher planchet planchette planching planchment plancier Planckian plandok plane planeness planer Planera planet planeta planetable planetabler planetal planetaria planetarian planetarily planetarium planetary planeted planetesimal planeticose planeting planetist planetkin planetless planetlike planetogeny planetography planetoid planetoidal planetologic planetologist planetology planetule planform planful planfully planfulness plang plangency plangent plangently plangor plangorous planicaudate planicipital planidorsate planifolious planiform planigraph planilla planimetric planimetrical planimetry planineter planipennate Planipennia planipennine planipetalous planiphyllous planirostral planirostrate planiscope planiscopic planish planisher planispheral planisphere planispheric planispherical planispiral planity plank plankage plankbuilt planker planking plankless planklike planksheer plankter planktologist planktology plankton planktonic planktont plankways plankwise planky planless planlessly planlessness planner planoblast planoblastic Planococcus planoconical planocylindric planoferrite planogamete planograph planographic planographist planography planohorizontal planolindrical planometer planometry planomiller planoorbicular Planorbidae planorbiform planorbine Planorbis planorboid planorotund Planosarcina planosol planosome planospiral planospore planosubulate plant planta plantable plantad Plantae plantage Plantaginaceae plantaginaceous Plantaginales plantagineous Plantago plantain plantal plantar plantaris plantarium plantation plantationlike plantdom planter planterdom planterly plantership Plantigrada plantigrade plantigrady planting plantivorous plantless plantlet plantlike plantling plantocracy plantsman plantula plantular plantule planula planulan planular planulate planuliform planuloid Planuloidea planuria planury planxty plap plappert plaque plaquette plash plasher plashet plashingly plashment plashy plasm plasma plasmagene plasmapheresis plasmase plasmatic plasmatical plasmation plasmatoparous plasmatorrhexis plasmic plasmocyte plasmocytoma plasmode plasmodesm plasmodesma plasmodesmal plasmodesmic plasmodesmus plasmodia plasmodial plasmodiate plasmodic plasmodiocarp plasmodiocarpous Plasmodiophora Plasmodiophoraceae Plasmodiophorales plasmodium plasmogen plasmolysis plasmolytic plasmolytically plasmolyzability plasmolyzable plasmolyze plasmoma Plasmon Plasmopara plasmophagous plasmophagy plasmoptysis plasmosoma plasmosome plasmotomy plasome plass plasson plastein plaster plasterbill plasterboard plasterer plasteriness plastering plasterlike plasterwise plasterwork plastery Plastic plastic plastically plasticimeter Plasticine plasticine plasticism plasticity plasticization plasticize plasticizer plasticly plastics plastid plastidium plastidome Plastidozoa plastidular plastidule plastify plastin plastinoid plastisol plastochondria plastochron plastochrone plastodynamia plastodynamic plastogamic plastogamy plastogene plastomere plastometer plastosome plastotype plastral plastron plastrum plat Plataean Platalea Plataleidae plataleiform Plataleinae plataleine platan Platanaceae platanaceous platane platanist Platanista Platanistidae platano Platanus platband platch plate platea plateasm plateau plateaux plated plateful plateholder plateiasmus platelayer plateless platelet platelike platemaker platemaking plateman platen plater platerer plateresque platery plateway platework plateworker platform platformally platformed platformer platformish platformism platformist platformistic platformless platformy platic platicly platilla platina platinamine platinammine platinate Platine plating platinic platinichloric platinichloride platiniferous platiniridium platinite platinization platinize platinochloric platinochloride platinocyanic platinocyanide platinoid platinotype platinous platinum platinumsmith platitude platitudinal platitudinarian platitudinarianism platitudinism platitudinist platitudinization platitudinize platitudinizer platitudinous platitudinously platitudinousness Platoda platode Platodes platoid Platonesque platonesque Platonian Platonic Platonical Platonically Platonicalness Platonician Platonicism Platonism Platonist Platonistic Platonization Platonize Platonizer platoon platopic platosamine platosammine Platt Plattdeutsch platted platten platter platterface platterful platting plattnerite platty platurous platy platybasic platybrachycephalic platybrachycephalous platybregmatic platycarpous Platycarpus Platycarya platycelian platycelous platycephalic Platycephalidae platycephalism platycephaloid platycephalous Platycephalus platycephaly Platycercinae platycercine Platycercus Platycerium platycheiria platycnemia platycnemic Platycodon platycoria platycrania platycranial Platyctenea platycyrtean platydactyl platydactyle platydactylous platydolichocephalic platydolichocephalous platyfish platyglossal platyglossate platyglossia Platyhelmia platyhelminth Platyhelminthes platyhelminthic platyhieric platykurtic platylobate platymeria platymeric platymery platymesaticephalic platymesocephalic platymeter platymyoid platynite platynotal platyodont platyope platyopia platyopic platypellic platypetalous platyphyllous platypod Platypoda platypodia platypodous Platyptera platypus platypygous Platyrhina Platyrhini platyrhynchous platyrrhin Platyrrhina platyrrhine Platyrrhini platyrrhinian platyrrhinic platyrrhinism platyrrhiny platysma platysmamyoides platysomid Platysomidae Platysomus platystaphyline Platystemon platystencephalia platystencephalic platystencephalism platystencephaly platysternal Platysternidae Platystomidae platystomous platytrope platytropy plaud plaudation plaudit plaudite plauditor plauditory plauenite plausibility plausible plausibleness plausibly plausive plaustral Plautine Plautus play playa playability playable playback playbill playbook playbox playboy playboyism playbroker playcraft playcraftsman playday playdown player playerdom playeress playfellow playfellowship playfield playfolk playful playfully playfulness playgoer playgoing playground playhouse playingly playless playlet playlike playmaker playmaking playman playmare playmate playmonger playmongering playock playpen playreader playroom playscript playsome playsomely playsomeness playstead plaything playtime playward playwoman playwork playwright playwrightess playwrighting playwrightry playwriter playwriting plaza plazolite plea pleach pleached pleacher plead pleadable pleadableness pleader pleading pleadingly pleadingness pleaproof pleasable pleasableness pleasance pleasant pleasantable pleasantish pleasantly pleasantness pleasantry pleasantsome please pleasedly pleasedness pleaseman pleaser pleaship pleasing pleasingly pleasingness pleasurability pleasurable pleasurableness pleasurably pleasure pleasureful pleasurehood pleasureless pleasurelessly pleasureman pleasurement pleasuremonger pleasureproof pleasurer pleasuring pleasurist pleasurous pleat pleater pleatless pleb plebe plebeian plebeiance plebeianize plebeianly plebeianness plebeity plebianism plebicolar plebicolist plebificate plebification plebify plebiscitarian plebiscitarism plebiscitary plebiscite plebiscitic plebiscitum plebs pleck Plecoptera plecopteran plecopterid plecopterous Plecotinae plecotine Plecotus plectognath Plectognathi plectognathic plectognathous plectopter plectopteran plectopterous plectospondyl Plectospondyli plectospondylous plectre plectridial plectridium plectron plectrum pled pledge pledgeable pledgee pledgeless pledgeor pledger pledgeshop pledget pledgor Plegadis plegaphonia plegometer Pleiades pleiobar pleiochromia pleiochromic pleiomastia pleiomazia pleiomerous pleiomery pleion Pleione pleionian pleiophyllous pleiophylly pleiotaxis pleiotropic pleiotropically pleiotropism Pleistocene Pleistocenic pleistoseist plemochoe plemyrameter plenarily plenariness plenarium plenarty plenary plenicorn pleniloquence plenilunal plenilunar plenilunary plenilune plenipo plenipotence plenipotent plenipotential plenipotentiality plenipotentiarily plenipotentiarize Plenipotentiary plenipotentiary plenipotentiaryship plenish plenishing plenishment plenism plenist plenitide plenitude plenitudinous plenshing plenteous plenteously plenteousness plentiful plentifully plentifulness plentify plenty plenum pleny pleochroic pleochroism pleochroitic pleochromatic pleochromatism pleochroous pleocrystalline pleodont pleomastia pleomastic pleomazia pleometrosis pleometrotic pleomorph pleomorphic pleomorphism pleomorphist pleomorphous pleomorphy pleon pleonal pleonasm pleonast pleonaste pleonastic pleonastical pleonastically pleonectic pleonexia pleonic pleophyletic pleopod pleopodite Pleospora Pleosporaceae plerergate plerocercoid pleroma pleromatic plerome pleromorph plerophoric plerophory plerosis plerotic Plesianthropus plesiobiosis plesiobiotic plesiomorphic plesiomorphism plesiomorphous plesiosaur Plesiosauri Plesiosauria plesiosaurian plesiosauroid Plesiosaurus plesiotype plessigraph plessimeter plessimetric plessimetry plessor Plethodon plethodontid Plethodontidae plethora plethoretic plethoretical plethoric plethorical plethorically plethorous plethory plethysmograph plethysmographic plethysmographically plethysmography pleura Pleuracanthea Pleuracanthidae Pleuracanthini pleuracanthoid Pleuracanthus pleural pleuralgia pleuralgic pleurapophysial pleurapophysis pleurectomy pleurenchyma pleurenchymatous pleuric pleuriseptate pleurisy pleurite pleuritic pleuritical pleuritically pleuritis Pleurobrachia Pleurobrachiidae pleurobranch pleurobranchia pleurobranchial pleurobranchiate pleurobronchitis Pleurocapsa Pleurocapsaceae pleurocapsaceous pleurocarp Pleurocarpi pleurocarpous pleurocele pleurocentesis pleurocentral pleurocentrum Pleurocera pleurocerebral Pleuroceridae pleuroceroid Pleurococcaceae pleurococcaceous Pleurococcus Pleurodelidae Pleurodira pleurodiran pleurodire pleurodirous pleurodiscous pleurodont pleurodynia pleurodynic pleurogenic pleurogenous pleurohepatitis pleuroid pleurolith pleurolysis pleuron Pleuronectes pleuronectid Pleuronectidae pleuronectoid Pleuronema pleuropedal pleuropericardial pleuropericarditis pleuroperitonaeal pleuroperitoneal pleuroperitoneum pleuropneumonia pleuropneumonic pleuropodium pleuropterygian Pleuropterygii pleuropulmonary pleurorrhea Pleurosaurus Pleurosigma pleurospasm pleurosteal Pleurosteon pleurostict Pleurosticti Pleurostigma pleurothotonic pleurothotonus Pleurotoma Pleurotomaria Pleurotomariidae pleurotomarioid Pleurotomidae pleurotomine pleurotomoid pleurotomy pleurotonic pleurotonus Pleurotremata pleurotribal pleurotribe pleurotropous Pleurotus pleurotyphoid pleurovisceral pleurum pleuston pleustonic plew plex plexal plexicose plexiform pleximeter pleximetric pleximetry plexodont plexometer plexor plexure plexus pliability pliable pliableness pliably pliancy pliant pliantly pliantness plica plicable plical plicate plicated plicately plicateness plicater plicatile plication plicative plicatocontorted plicatocristate plicatolacunose plicatolobate plicatopapillose plicator plicatoundulate plicatulate plicature pliciferous pliciform plied plier plies pliers plight plighted plighter plim plimsoll Plinian plinth plinther plinthiform plinthless plinthlike Pliny Plinyism Pliocene Pliohippus Pliopithecus pliosaur pliosaurian Pliosauridae Pliosaurus pliothermic Pliotron pliskie plisky ploat ploce Ploceidae ploceiform Ploceinae Ploceus plock plod plodder plodderly plodding ploddingly ploddingness plodge Ploima ploimate plomb plook plop ploration ploratory plosion plosive plot plote plotful Plotinian Plotinic Plotinical Plotinism Plotinist Plotinize plotless plotlessness plotproof plottage plotted plotter plottery plotting plottingly plotty plough ploughmanship ploughtail plouk plouked plouky plounce plousiocracy plout Plouteneion plouter plover ploverlike plovery plow plowable plowbote plowboy plower plowfish plowfoot plowgang plowgate plowgraith plowhead plowing plowjogger plowland plowlight plowline plowmaker plowman plowmanship plowmell plowpoint Plowrightia plowshare plowshoe plowstaff plowstilt plowtail plowwise plowwoman plowwright ploy ployment Pluchea pluck pluckage plucked pluckedness plucker Pluckerian pluckily pluckiness pluckless plucklessness plucky plud pluff pluffer pluffy plug plugboard plugdrawer pluggable plugged plugger plugging pluggingly pluggy plughole plugless pluglike plugman plugtray plugtree plum pluma plumaceous plumach plumade plumage plumaged plumagery plumasite plumate Plumatella plumatellid Plumatellidae plumatelloid plumb plumbable plumbage Plumbaginaceae plumbaginaceous plumbagine plumbaginous plumbago plumbate plumbean plumbeous plumber plumbership plumbery plumbet plumbic plumbiferous plumbing plumbism plumbisolvent plumbite plumbless plumbness plumbog plumbojarosite plumboniobate plumbosolvency plumbosolvent plumbous plumbum plumcot plumdamas plumdamis plume plumed plumeless plumelet plumelike plumemaker plumemaking plumeopicean plumeous plumer plumery plumet plumette plumicorn plumier Plumiera plumieride plumification plumiform plumiformly plumify plumigerous pluminess plumiped plumipede plumist plumless plumlet plumlike plummer plummet plummeted plummetless plummy plumose plumosely plumoseness plumosity plumous plump plumpen plumper plumping plumpish plumply plumpness plumps plumpy plumula plumulaceous plumular Plumularia plumularian Plumulariidae plumulate plumule plumuliform plumulose plumy plunder plunderable plunderage plunderbund plunderer plunderess plundering plunderingly plunderless plunderous plunderproof plunge plunger plunging plungingly plunk plunther plup plupatriotic pluperfect pluperfectly pluperfectness plural pluralism pluralist pluralistic pluralistically plurality pluralization pluralize pluralizer plurally plurative plurennial pluriaxial pluricarinate pluricarpellary pluricellular pluricentral pluricipital pluricuspid pluricuspidate pluridentate pluries plurifacial plurifetation plurification pluriflagellate pluriflorous plurifoliate plurifoliolate plurify pluriglandular pluriguttulate plurilateral plurilingual plurilingualism plurilingualist plurilocular plurimammate plurinominal plurinucleate pluripara pluriparity pluriparous pluripartite pluripetalous pluripotence pluripotent pluripresence pluriseptate pluriserial pluriseriate pluriseriated plurisetose plurispiral plurisporous plurisyllabic plurisyllable plurivalent plurivalve plurivorous plurivory plus plush plushed plushette plushily plushiness plushlike plushy Plusia Plusiinae plusquamperfect plussage Plutarchian Plutarchic Plutarchical Plutarchically plutarchy pluteal plutean pluteiform Plutella pluteus Pluto plutocracy plutocrat plutocratic plutocratical plutocratically plutolatry plutological plutologist plutology plutomania Plutonian plutonian plutonic Plutonion plutonism plutonist plutonite Plutonium plutonium plutonometamorphism plutonomic plutonomist plutonomy pluvial pluvialiform pluvialine Pluvialis pluvian pluvine pluviograph pluviographic pluviographical pluviography pluviometer pluviometric pluviometrical pluviometrically pluviometry pluvioscope pluviose pluviosity pluvious ply plyer plying plyingly Plymouth Plymouthism Plymouthist Plymouthite Plynlymmon plywood pneodynamics pneograph pneomanometer pneometer pneometry pneophore pneoscope pneuma pneumarthrosis pneumathaemia pneumatic pneumatical pneumatically pneumaticity pneumatics pneumatism pneumatist pneumatize pneumatized pneumatocardia pneumatocele pneumatochemical pneumatochemistry pneumatocyst pneumatocystic pneumatode pneumatogenic pneumatogenous pneumatogram pneumatograph pneumatographer pneumatographic pneumatography pneumatolitic pneumatologic pneumatological pneumatologist pneumatology pneumatolysis pneumatolytic Pneumatomachian Pneumatomachist Pneumatomachy pneumatometer pneumatometry pneumatomorphic pneumatonomy pneumatophany pneumatophilosophy pneumatophobia pneumatophonic pneumatophony pneumatophore pneumatophorous pneumatorrhachis pneumatoscope pneumatosic pneumatosis pneumatotactic pneumatotherapeutics pneumatotherapy Pneumatria pneumaturia pneumectomy pneumobacillus Pneumobranchia Pneumobranchiata pneumocele pneumocentesis pneumochirurgia pneumococcal pneumococcemia pneumococcic pneumococcous pneumococcus pneumoconiosis pneumoderma pneumodynamic pneumodynamics pneumoencephalitis pneumoenteritis pneumogastric pneumogram pneumograph pneumographic pneumography pneumohemothorax pneumohydropericardium pneumohydrothorax pneumolith pneumolithiasis pneumological pneumology pneumolysis pneumomalacia pneumomassage Pneumometer pneumomycosis pneumonalgia pneumonectasia pneumonectomy pneumonedema pneumonia pneumonic pneumonitic pneumonitis pneumonocace pneumonocarcinoma pneumonocele pneumonocentesis pneumonocirrhosis pneumonoconiosis pneumonodynia pneumonoenteritis pneumonoerysipelas pneumonographic pneumonography pneumonokoniosis pneumonolith pneumonolithiasis pneumonolysis pneumonomelanosis pneumonometer pneumonomycosis pneumonoparesis pneumonopathy pneumonopexy pneumonophorous pneumonophthisis pneumonopleuritis pneumonorrhagia pneumonorrhaphy pneumonosis pneumonotherapy pneumonotomy pneumony pneumopericardium pneumoperitoneum pneumoperitonitis pneumopexy pneumopleuritis pneumopyothorax pneumorrachis pneumorrhachis pneumorrhagia pneumotactic pneumotherapeutics pneumotherapy pneumothorax pneumotomy pneumotoxin pneumotropic pneumotropism pneumotyphoid pneumotyphus pneumoventriculography Po po Poa Poaceae poaceous poach poachable poacher poachiness poachy Poales poalike pob pobby Poblacht poblacion pobs pochade pochard pochay poche pochette pocilliform pock pocket pocketable pocketableness pocketbook pocketed pocketer pocketful pocketing pocketknife pocketless pocketlike pockety pockhouse pockily pockiness pockmanteau pockmantie pockmark pockweed pockwood pocky poco pococurante pococuranteism pococurantic pococurantish pococurantism pococurantist pocosin poculary poculation poculent poculiform pod podagra podagral podagric podagrical podagrous podal podalgia podalic Podaliriidae Podalirius Podarge Podargidae Podarginae podargine podargue Podargus podarthral podarthritis podarthrum podatus Podaxonia podaxonial podded podder poddidge poddish poddle poddy podelcoma podeon podesta podesterate podetiiform podetium podex podge podger podgily podginess podgy podial podiatrist podiatry podical Podiceps podices Podicipedidae podilegous podite poditic poditti podium podler podley podlike podobranch podobranchia podobranchial podobranchiate podocarp Podocarpaceae Podocarpineae podocarpous Podocarpus podocephalous pododerm pododynia podogyn podogyne podogynium Podolian podolite podology podomancy podomere podometer podometry Podophrya Podophryidae Podophthalma Podophthalmata podophthalmate podophthalmatous Podophthalmia podophthalmian podophthalmic podophthalmite podophthalmitic podophthalmous Podophyllaceae podophyllic podophyllin podophyllotoxin podophyllous Podophyllum podophyllum podoscaph podoscapher podoscopy Podosomata podosomatous podosperm Podosphaera Podostemaceae podostemaceous podostemad Podostemon Podostemonaceae podostemonaceous Podostomata podostomatous podotheca podothecal Podozamites Podsnap Podsnappery podsol podsolic podsolization podsolize Podunk Podura poduran podurid Poduridae podware podzol podzolic podzolization podzolize poe Poecile Poeciliidae poecilitic Poecilocyttares poecilocyttarous poecilogonous poecilogony poecilomere poecilonym poecilonymic poecilonymy poecilopod Poecilopoda poecilopodous poem poematic poemet poemlet Poephaga poephagous Poephagus poesie poesiless poesis poesy poet poetaster poetastering poetasterism poetastery poetastress poetastric poetastrical poetastry poetcraft poetdom poetesque poetess poethood poetic poetical poeticality poetically poeticalness poeticism poeticize poeticness poetics poeticule poetito poetization poetize poetizer poetless poetlike poetling poetly poetomachia poetress poetry poetryless poetship poetwise pogamoggan pogge poggy Pogo Pogonatum Pogonia pogoniasis pogoniate pogonion pogonip pogoniris pogonite pogonological pogonologist pogonology pogonotomy pogonotrophy pogrom pogromist pogromize pogy poh poha pohickory pohna pohutukawa poi Poiana Poictesme poietic poignance poignancy poignant poignantly poignet poikilitic poikiloblast poikiloblastic poikilocyte poikilocythemia poikilocytosis poikilotherm poikilothermic poikilothermism poil poilu poimenic poimenics Poinciana poind poindable poinder poinding Poinsettia point pointable pointage pointed pointedly pointedness pointel pointer pointful pointfully pointfulness pointillism pointillist pointing pointingly pointless pointlessly pointlessness pointlet pointleted pointmaker pointman pointment pointrel pointsman pointswoman pointways pointwise pointy poisable poise poised poiser poison poisonable poisonful poisonfully poisoning poisonless poisonlessness poisonmaker poisonous poisonously poisonousness poisonproof poisonweed poisonwood poitrail poitrel poivrade pokable Pokan Pokanoket poke pokeberry poked pokeful pokeloken pokeout poker pokerish pokerishly pokerishness pokeroot pokeweed pokey pokily pokiness poking Pokom Pokomam Pokomo pokomoo Pokonchi pokunt poky pol Polab Polabian Polabish polacca Polack polack polacre Polander Polanisia polar polaric Polarid polarigraphic polarimeter polarimetric polarimetry Polaris polariscope polariscopic polariscopically polariscopist polariscopy polaristic polaristrobometer polarity polarizability polarizable polarization polarize polarizer polarly polarogram polarograph polarographic polarographically polarography Polaroid polarward polaxis poldavis poldavy polder polderboy polderman Pole pole polearm poleax poleaxe poleaxer poleburn polecat polehead poleless poleman polemarch polemic polemical polemically polemician polemicist polemics polemist polemize Polemoniaceae polemoniaceous Polemoniales Polemonium polemoscope polenta poler polesetter Polesian polesman polestar poleward polewards poley poliad poliadic Polian polianite Polianthes police policed policedom policeless policeman policemanish policemanism policemanlike policemanship policewoman Polichinelle policial policize policizer policlinic policy policyholder poliencephalitis poliencephalomyelitis poligar poligarship poligraphical Polinices polio polioencephalitis polioencephalomyelitis poliomyelitis poliomyelopathy polioneuromere poliorcetic poliorcetics poliosis polis Polish polish polishable polished polishedly polishedness polisher polishment polisman polissoir Polistes politarch politarchic Politbureau Politburo polite politeful politely politeness politesse politic political politicalism politicalize politically politicaster politician politicious politicist politicize politicizer politicly politico politicomania politicophobia politics politied Politique politist politize polity politzerization politzerize polk polka Poll poll pollable pollack polladz pollage pollakiuria pollam pollan pollarchy pollard pollbook polled pollen pollened polleniferous pollenigerous pollenite pollenivorous pollenless pollenlike pollenproof pollent poller polleten pollex pollical pollicar pollicate pollicitation pollinar pollinarium pollinate pollination pollinator pollinctor pollincture polling pollinia pollinic pollinical polliniferous pollinigerous pollinium pollinivorous pollinization pollinize pollinizer pollinodial pollinodium pollinoid pollinose pollinosis polliwig polliwog pollock polloi pollster pollucite pollutant pollute polluted pollutedly pollutedness polluter polluting pollutingly pollution Pollux pollux Polly Pollyanna Pollyannish pollywog polo poloconic polocyte poloist polonaise Polonese Polonia Polonial Polonian Polonism polonium Polonius Polonization Polonize polony polos polska polt poltergeist poltfoot poltfooted poltina poltinnik poltophagic poltophagist poltophagy poltroon poltroonery poltroonish poltroonishly poltroonism poluphloisboic poluphloisboiotatotic poluphloisboiotic polverine poly polyacanthus polyacid polyacoustic polyacoustics polyact polyactinal polyactine Polyactinia polyad polyadelph Polyadelphia polyadelphian polyadelphous polyadenia polyadenitis polyadenoma polyadenous polyadic polyaffectioned polyalcohol polyamide polyamylose Polyandria polyandria polyandrian polyandrianism polyandric polyandrious polyandrism polyandrist polyandrium polyandrous polyandry Polyangium polyangular polyantha polyanthous polyanthus polyanthy polyarch polyarchal polyarchical polyarchist polyarchy polyarteritis polyarthric polyarthritic polyarthritis polyarthrous polyarticular polyatomic polyatomicity polyautographic polyautography polyaxial polyaxon polyaxone polyaxonic polybasic polybasicity polybasite polyblast Polyborinae polyborine Polyborus polybranch Polybranchia polybranchian Polybranchiata polybranchiate polybromid polybromide polybunous polybuny polybuttoned polycarboxylic Polycarp polycarpellary polycarpic Polycarpon polycarpous polycarpy polycellular polycentral polycentric polycephalic polycephalous polycephaly Polychaeta polychaete polychaetous polychasial polychasium polychloride polychoerany polychord polychotomous polychotomy polychrest polychrestic polychrestical polychresty polychroic polychroism polychromasia polychromate polychromatic polychromatism polychromatist polychromatize polychromatophil polychromatophile polychromatophilia polychromatophilic polychrome polychromia polychromic polychromism polychromize polychromous polychromy polychronious polyciliate polycitral polyclad Polycladida polycladine polycladose polycladous polyclady Polycletan polyclinic polyclona polycoccous Polycodium polyconic polycormic polycotyl polycotyledon polycotyledonary polycotyledonous polycotyledony polycotylous polycotyly polycracy polycrase polycratic polycrotic polycrotism polycrystalline polyctenid Polyctenidae polycttarian polycyanide polycyclic polycycly polycyesis polycystic polycythemia polycythemic Polycyttaria polydactyl polydactyle polydactylism polydactylous Polydactylus polydactyly polydaemoniac polydaemonism polydaemonist polydaemonistic polydemic polydenominational polydental polydermous polydermy polydigital polydimensional polydipsia polydisperse polydomous polydymite polydynamic polyeidic polyeidism polyembryonate polyembryonic polyembryony polyemia polyemic polyenzymatic polyergic Polyergus polyester polyesthesia polyesthetic polyethnic polyethylene polyfenestral polyflorous polyfoil polyfold Polygala Polygalaceae polygalaceous polygalic polygam Polygamia polygamian polygamic polygamical polygamically polygamist polygamistic polygamize polygamodioecious polygamous polygamously polygamy polyganglionic polygastric polygene polygenesic polygenesis polygenesist polygenetic polygenetically polygenic polygenism polygenist polygenistic polygenous polygeny polyglandular polyglobulia polyglobulism polyglossary polyglot polyglotry polyglottal polyglottally polyglotted polyglotter polyglottery polyglottic polyglottically polyglottism polyglottist polyglottonic polyglottous polyglotwise polyglycerol polygon Polygonaceae polygonaceous polygonal Polygonales polygonally Polygonatum Polygonella polygoneutic polygoneutism Polygonia polygonic polygonically polygonoid polygonous Polygonum polygony Polygordius polygram polygrammatic polygraph polygrapher polygraphic polygraphy polygroove polygrooved polygyn polygynaiky Polygynia polygynian polygynic polygynious polygynist polygynoecial polygynous polygyny polygyral polygyria polyhaemia polyhaemic polyhalide polyhalite polyhalogen polyharmonic polyharmony polyhedral polyhedric polyhedrical polyhedroid polyhedron polyhedrosis polyhedrous polyhemia polyhidrosis polyhistor polyhistorian polyhistoric polyhistory polyhybrid polyhydric polyhydroxy polyideic polyideism polyidrosis polyiodide polykaryocyte polylaminated polylemma polylepidous polylinguist polylith polylithic polylobular polylogy polyloquent polymagnet polymastia polymastic Polymastiga polymastigate Polymastigida Polymastigina polymastigous polymastism Polymastodon polymastodont polymasty polymath polymathic polymathist polymathy polymazia polymelia polymelian polymely polymer polymere polymeria polymeric polymeride polymerism polymerization polymerize polymerous polymetallism polymetameric polymeter polymethylene polymetochia polymetochic polymicrian polymicrobial polymicrobic polymicroscope polymignite Polymixia polymixiid Polymixiidae Polymnestor Polymnia polymnite polymolecular polymolybdate polymorph Polymorpha polymorphean polymorphic polymorphism polymorphistic polymorphonuclear polymorphonucleate polymorphosis polymorphous polymorphy Polymyaria polymyarian Polymyarii Polymyodi polymyodian polymyodous polymyoid polymyositis polymythic polymythy polynaphthene polynemid Polynemidae polynemoid Polynemus Polynesian polynesic polyneural polyneuric polyneuritic polyneuritis polyneuropathy polynodal Polynoe polynoid Polynoidae polynome polynomial polynomialism polynomialist polynomic polynucleal polynuclear polynucleate polynucleated polynucleolar polynucleosis Polyodon polyodont polyodontal polyodontia Polyodontidae polyodontoid polyoecious polyoeciously polyoeciousness polyoecism polyoecy polyoicous polyommatous polyonomous polyonomy polyonychia polyonym polyonymal polyonymic polyonymist polyonymous polyonymy polyophthalmic polyopia polyopic polyopsia polyopsy polyorama polyorchidism polyorchism polyorganic polyose polyoxide polyoxymethylene polyp polypage polypaged polypapilloma polyparasitic polyparasitism polyparesis polyparia polyparian polyparium polyparous polypary polypean polyped Polypedates polypeptide polypetal Polypetalae polypetalous Polyphaga polyphage polyphagia polyphagian polyphagic polyphagist polyphagous polyphagy polyphalangism polypharmacal polypharmacist polypharmacon polypharmacy polypharmic polyphasal polyphase polyphaser Polypheme polyphemian polyphemic polyphemous polyphenol polyphloesboean polyphloisboioism polyphloisboism polyphobia polyphobic polyphone polyphoned polyphonia polyphonic polyphonical polyphonism polyphonist polyphonium polyphonous polyphony polyphore polyphosphoric polyphotal polyphote polyphylesis polyphyletic polyphyletically polyphylety polyphylline polyphyllous polyphylly polyphylogeny polyphyly polyphyodont Polypi polypi polypian polypide polypidom Polypifera polypiferous polypigerous polypinnate polypite Polyplacophora polyplacophoran polyplacophore polyplacophorous polyplastic Polyplectron polyplegia polyplegic polyploid polyploidic polyploidy polypnoea polypnoeic polypod Polypoda polypodia Polypodiaceae polypodiaceous Polypodium polypodous polypody polypoid polypoidal Polypomorpha polypomorphic Polyporaceae polyporaceous polypore polyporite polyporoid polyporous Polyporus polypose polyposis polypotome polypous polypragmacy polypragmatic polypragmatical polypragmatically polypragmatism polypragmatist polypragmaty polypragmist polypragmon polypragmonic polypragmonist polyprene polyprism polyprismatic polyprothetic polyprotodont Polyprotodontia polypseudonymous polypsychic polypsychical polypsychism polypterid Polypteridae polypteroid Polypterus polyptote polyptoton polyptych polypus polyrhizal polyrhizous polyrhythmic polyrhythmical polysaccharide polysaccharose Polysaccum polysalicylide polysarcia polysarcous polyschematic polyschematist polyscope polyscopic polysemant polysemantic polysemeia polysemia polysemous polysemy polysensuous polysensuousness polysepalous polyseptate polyserositis polysided polysidedness polysilicate polysilicic Polysiphonia polysiphonic polysiphonous polysomatic polysomatous polysomaty polysomia polysomic polysomitic polysomous polysomy polyspast polyspaston polyspermal polyspermatous polyspermia polyspermic polyspermous polyspermy polyspondylic polyspondylous polyspondyly Polyspora polysporangium polyspore polyspored polysporic polysporous polystachyous polystaurion polystele polystelic polystemonous polystichoid polystichous Polystichum Polystictus Polystomata Polystomatidae polystomatous polystome Polystomea Polystomella Polystomidae polystomium polystylar polystyle polystylous polystyrene polysulphide polysulphuration polysulphurization polysyllabic polysyllabical polysyllabically polysyllabicism polysyllabicity polysyllabism polysyllable polysyllogism polysyllogistic polysymmetrical polysymmetrically polysymmetry polysyndetic polysyndetically polysyndeton polysynthesis polysynthesism polysynthetic polysynthetical polysynthetically polysyntheticism polysynthetism polysynthetize polytechnic polytechnical polytechnics polytechnist polyterpene Polythalamia polythalamian polythalamic polythalamous polythecial polytheism polytheist polytheistic polytheistical polytheistically polytheize polythelia polythelism polythely polythene polythionic polytitanic polytocous polytokous polytoky polytomous polytomy polytonal polytonalism polytonality polytone polytonic polytony polytope polytopic polytopical Polytrichaceae polytrichaceous polytrichia polytrichous Polytrichum polytrochal polytrochous polytrope polytrophic polytropic polytungstate polytungstic polytype polytypic polytypical polytypy polyuresis polyuria polyuric polyvalence polyvalent polyvinyl polyvinylidene polyvirulent polyvoltine Polyzoa polyzoal polyzoan polyzoarial polyzoarium polyzoary polyzoic polyzoism polyzonal polyzooid polyzoon polzenite pom pomace Pomaceae pomacentrid Pomacentridae pomacentroid Pomacentrus pomaceous pomade Pomaderris Pomak pomander pomane pomarine pomarium pomate pomato pomatomid Pomatomidae Pomatomus pomatorhine pomatum pombe pombo pome pomegranate pomelo Pomeranian pomeridian pomerium pomewater pomey pomfret pomiculture pomiculturist pomiferous pomiform pomivorous Pommard pomme pommee pommel pommeled pommeler pommet pommey pommy Pomo pomological pomologically pomologist pomology Pomona pomonal pomonic pomp pompa Pompadour pompadour pompal pompano Pompeian Pompeii pompelmous Pompey pompey pompholix pompholygous pompholyx pomphus pompier pompilid Pompilidae pompiloid Pompilus pompion pompist pompless pompoleon pompon pomposity pompous pompously pompousness pompster Pomptine pomster pon Ponca ponce ponceau poncelet poncho ponchoed Poncirus pond pondage pondbush ponder ponderability ponderable ponderableness ponderal ponderance ponderancy ponderant ponderary ponderate ponderation ponderative ponderer pondering ponderingly ponderling ponderment ponderomotive ponderosapine ponderosity ponderous ponderously ponderousness pondfish pondful pondgrass pondlet pondman Pondo pondok pondokkie Pondomisi pondside pondus pondweed pondwort pondy pone ponent Ponera Poneramoeba ponerid Poneridae Ponerinae ponerine poneroid ponerology poney pong ponga pongee Pongidae Pongo poniard ponica ponier ponja pont Pontac Pontacq pontage pontal Pontederia Pontederiaceae pontederiaceous pontee pontes pontianak Pontic pontic ponticello ponticular ponticulus pontifex pontiff pontific pontifical pontificalia pontificalibus pontificality pontifically pontificate pontification pontifices pontificial pontificially pontificious pontify pontil pontile pontin Pontine pontine pontist pontlevis ponto Pontocaspian pontocerebellar ponton pontonier pontoon pontooneer pontooner pontooning Pontus pontvolant pony ponzite pooa pooch pooder poodle poodledom poodleish poodleship poof poogye pooh poohpoohist pook pooka pookaun pookoo pool pooler pooli poolroom poolroot poolside poolwort pooly poon poonac poonga poonghie poop pooped poophyte poophytic poor poorhouse poorish poorliness poorling poorly poorlyish poormaster poorness poorweed poorwill poot Pop pop popadam popal popcorn popdock pope Popean popedom popeholy popehood popeism popeler popeless popelike popeline popely popery popeship popess popeye popeyed popglove popgun popgunner popgunnery Popian popify popinac popinjay Popish popish popishly popishness popjoy poplar poplared Poplilia poplin poplinette popliteal popliteus poplolly Popocracy Popocrat Popolari Popoloco popomastic popover Popovets poppa poppability poppable poppean poppel popper poppet poppethead poppied poppin popple popply poppy poppycock poppycockish poppyfish poppyhead poppylike poppywort popshop populace popular popularism Popularist popularity popularization popularize popularizer popularly popularness populate population populational populationist populationistic populationless populator populicide populin Populism Populist Populistic populous populously populousness Populus popweed poral porbeagle porcate porcated porcelain porcelainization porcelainize porcelainlike porcelainous porcelaneous porcelanic porcelanite porcelanous Porcellana porcellanian porcellanid Porcellanidae porcellanize porch porched porching porchless porchlike porcine Porcula porcupine porcupinish pore pored porelike Porella porencephalia porencephalic porencephalitis porencephalon porencephalous porencephalus porencephaly porer porge porger porgy Poria poricidal Porifera poriferal poriferan poriferous poriform porimania poriness poring poringly poriomanic porism porismatic porismatical porismatically poristic poristical porite Porites Poritidae poritoid pork porkburger porker porkery porket porkfish porkish porkless porkling porkman Porkopolis porkpie porkwood porky pornerastic pornocracy pornocrat pornograph pornographer pornographic pornographically pornographist pornography pornological Porocephalus porodine porodite porogam porogamic porogamous porogamy porokaiwhiria porokeratosis Porokoto poroma porometer porophyllous poroplastic poroporo pororoca poros poroscope poroscopic poroscopy porose poroseness porosimeter porosis porosity porotic porotype porous porously porousness porpentine porphine Porphyra Porphyraceae porphyraceous porphyratin Porphyrean porphyria Porphyrian porphyrian Porphyrianist porphyrin porphyrine porphyrinuria Porphyrio porphyrion porphyrite porphyritic porphyroblast porphyroblastic porphyrogene porphyrogenite porphyrogenitic porphyrogenitism porphyrogeniture porphyrogenitus porphyroid porphyrophore porphyrous porphyry Porpita porpitoid porpoise porpoiselike porporate porr porraceous porrect porrection porrectus porret porridge porridgelike porridgy porriginous porrigo Porrima porringer porriwiggle porry port porta portability portable portableness portably portage portague portahepatis portail portal portaled portalled portalless portamento portance portass portatile portative portcrayon portcullis porteacid ported porteligature portend portendance portendment Porteno portension portent portention portentosity portentous portentously portentousness porteous porter porterage Porteranthus porteress porterhouse porterlike porterly portership portfire portfolio portglaive portglave portgrave Porthetria Portheus porthole porthook porthors porthouse Portia portia portico porticoed portiere portiered portifory portify portio portiomollis portion portionable portional portionally portioner portionist portionize portionless portitor Portlandian portlast portless portlet portligature portlily portliness portly portman portmanmote portmanteau portmanteaux portmantle portmantologism portment portmoot porto portoise portolan portolano Portor portrait portraitist portraitlike portraiture portray portrayable portrayal portrayer portrayist portrayment portreeve portreeveship portress portside portsider portsman portuary portugais Portugal Portugalism Portugee Portuguese Portulaca Portulacaceae portulacaceous Portulacaria portulan Portunalia portunian Portunidae Portunus portway porty porule porulose porulous porus porwigle pory Porzana posadaship posca pose Poseidon Poseidonian posement poser poseur posey posh posing posingly posit position positional positioned positioner positionless positival positive positively positiveness positivism positivist positivistic positivistically positivity positivize positor positron positum positure Posnanian posnet posole posologic posological posologist posology pospolite poss posse posseman possess possessable possessed possessedly possessedness possessing possessingly possessingness possession possessional possessionalism possessionalist possessionary possessionate possessioned possessioner possessionist possessionless possessionlessness possessival possessive possessively possessiveness possessor possessoress possessorial possessoriness possessorship possessory posset possibilism possibilist possibilitate possibility possible possibleness possibly possum possumwood post postabdomen postabdominal postable postabortal postacetabular postadjunct postage postal postallantoic postally postalveolar postament postamniotic postanal postanesthetic postantennal postaortic postapoplectic postappendicular postarterial postarthritic postarticular postarytenoid postaspirate postaspirated postasthmatic postatrial postauditory postauricular postaxiad postaxial postaxially postaxillary postbag postbaptismal postbox postboy postbrachial postbrachium postbranchial postbreakfast postbronchial postbuccal postbulbar postbursal postcaecal postcalcaneal postcalcarine postcanonical postcardiac postcardinal postcarnate postcarotid postcart postcartilaginous postcatarrhal postcava postcaval postcecal postcenal postcentral postcentrum postcephalic postcerebellar postcerebral postcesarean postcibal postclassic postclassical postclassicism postclavicle postclavicula postclavicular postclimax postclitellian postclival postcolon postcolonial postcolumellar postcomitial postcommissural postcommissure postcommunicant Postcommunion postconceptive postcondylar postconfinement postconnubial postconsonantal postcontact postcontract postconvalescent postconvulsive postcordial postcornu postcosmic postcostal postcoxal postcritical postcrural postcubital postdate postdental postdepressive postdetermined postdevelopmental postdiagnostic postdiaphragmatic postdiastolic postdicrotic postdigestive postdigital postdiluvial postdiluvian postdiphtheric postdiphtheritic postdisapproved postdisseizin postdisseizor postdoctoral postdoctorate postdural postdysenteric posted posteen postelection postelementary postembryonal postembryonic postemporal postencephalitic postencephalon postenteral postentry postepileptic poster posterette posteriad posterial posterior posterioric posteriorically posterioristic posterioristically posteriority posteriorly posteriormost posteriors posteriorums posterish posterishness posterist posterity posterize postern posteroclusion posterodorsad posterodorsal posterodorsally posteroexternal posteroinferior posterointernal posterolateral posteromedial posteromedian posteromesial posteroparietal posterosuperior posterotemporal posteroterminal posteroventral posteruptive postesophageal posteternity postethmoid postexilian postexilic postexist postexistence postexistency postexistent postface postfact postfebrile postfemoral postfetal postfix postfixal postfixation postfixed postfixial postflection postflexion postform postfoveal postfrontal postfurca postfurcal postganglionic postgangrenal postgastric postgeminum postgenial postgeniture postglacial postglenoid postglenoidal postgonorrheic postgracile postgraduate postgrippal posthabit posthaste posthemiplegic posthemorrhagic posthepatic posthetomist posthetomy posthexaplaric posthippocampal posthitis postholder posthole posthouse posthumeral posthumous posthumously posthumousness posthumus posthyoid posthypnotic posthypnotically posthypophyseal posthypophysis posthysterical postic postical postically posticous posticteric posticum postil postilion postilioned postillate postillation postillator postimpressionism postimpressionist postimpressionistic postinfective postinfluenzal posting postingly postintestinal postique postischial postjacent postjugular postlabial postlachrymal postlaryngeal postlegitimation postlenticular postless postlike postliminary postliminiary postliminious postliminium postliminous postliminy postloitic postloral postlude postludium postluetic postmalarial postmamillary postmammary postman postmandibular postmaniacal postmarital postmark postmarriage postmaster postmasterlike postmastership postmastoid postmaturity postmaxillary postmaximal postmeatal postmedia postmedial postmedian postmediastinal postmediastinum postmedullary postmeiotic postmeningeal postmenstrual postmental postmeridian postmeridional postmesenteric postmillenarian postmillenarianism postmillennial postmillennialism postmillennialist postmillennian postmineral postmistress postmortal postmortuary postmundane postmuscular postmutative postmycotic postmyxedematous postnarial postnaris postnasal postnatal postnate postnati postnecrotic postnephritic postneural postneuralgic postneuritic postneurotic postnodular postnominal postnotum postnuptial postnuptially postobituary postocular postolivary postomental postoperative postoptic postoral postorbital postordination postorgastic postosseous postotic postpagan postpaid postpalatal postpalatine postpalpebral postpaludal postparalytic postparietal postparotid postparotitic postparoxysmal postparturient postpatellar postpathological postpericardial postpharyngeal postphlogistic postphragma postphrenic postphthisic postpituitary postplace postplegic postpneumonic postponable postpone postponement postponence postponer postpontile postpose postposited postposition postpositional postpositive postpositively postprandial postprandially postpredicament postprophesy postprostate postpubertal postpubescent postpubic postpubis postpuerperal postpulmonary postpupillary postpycnotic postpyloric postpyramidal postpyretic postrachitic postramus postrectal postreduction postremogeniture postremote postrenal postresurrection postresurrectional postretinal postrheumatic postrhinal postrider postrorse postrostral postrubeolar postsaccular postsacral postscalenus postscapula postscapular postscapularis postscarlatinal postscenium postscorbutic postscribe postscript postscriptum postscutellar postscutellum postseason postsigmoid postsign postspasmodic postsphenoid postsphenoidal postsphygmic postspinous postsplenial postsplenic poststernal poststertorous postsuppurative postsurgical postsynaptic postsynsacral postsyphilitic postsystolic posttabetic posttarsal posttetanic postthalamic postthoracic postthyroidal posttibial posttonic posttoxic posttracheal posttrapezoid posttraumatic posttreaty posttubercular posttussive posttympanic posttyphoid postulancy postulant postulantship postulata postulate postulation postulational postulator postulatory postulatum postulnar postumbilical postumbonal postural posture posturer postureteric posturist posturize postuterine postvaccinal postvaricellar postvarioloid postvelar postvenereal postvenous postverbal Postverta postvertebral postvesical postvide postvocalic postwar postward postwise postwoman postxyphoid postyard postzygapophysial postzygapophysis posy pot potability potable potableness potagerie potagery potamic Potamobiidae Potamochoerus Potamogale Potamogalidae Potamogeton Potamogetonaceae potamogetonaceous potamological potamologist potamology potamometer Potamonidae potamophilous potamoplankton potash potashery potass potassa potassamide potassic potassiferous potassium potate potation potative potato potatoes potator potatory Potawatami Potawatomi potbank potbellied potbelly potboil potboiler potboy potboydom potch potcher potcherman potcrook potdar pote potecary poteen potence potency potent potentacy potentate potential potentiality potentialization potentialize potentially potentialness potentiate potentiation Potentilla potentiometer potentiometric potentize potently potentness poter Poterium potestal potestas potestate potestative poteye potful potgirl potgun pothanger pothead pothecary potheen pother potherb potherment pothery pothole pothook pothookery Pothos pothouse pothousey pothunt pothunter pothunting poticary potichomania potichomanist potifer Potiguara potion potlatch potleg potlicker potlid potlike potluck potmaker potmaking potman potomania potomato potometer potong potoo Potoroinae potoroo Potorous potpie potpourri potrack potsherd potshoot potshooter potstick potstone pott pottage pottagy pottah potted potter potterer potteress potteringly pottery Pottiaceae potting pottinger pottle pottled potto potty potwaller potwalling potware potwhisky potwork potwort pouce poucer poucey pouch pouched pouchful pouchless pouchlike pouchy poudrette pouf poulaine poulard poulardize poulp poulpe poult poulter poulterer poulteress poultice poulticewise poultry poultrydom poultryist poultryless poultrylike poultryman poultryproof pounamu pounce pounced pouncer pouncet pouncing pouncingly pound poundage poundal poundcake pounder pounding poundkeeper poundless poundlike poundman poundmaster poundmeal poundstone poundworth pour pourer pourie pouring pouringly pourparler pourparley pourpiece pourpoint pourpointer pouser poussette pout pouter poutful pouting poutingly pouty poverish poverishment poverty povertyweed Povindah pow powder powderable powdered powderer powderiness powdering powderization powderize powderizer powderlike powderman powdery powdike powdry powellite power powerboat powered powerful powerfully powerfulness powerhouse powerless powerlessly powerlessness powermonger Powhatan powitch powldoody pownie powsoddy powsowdy powwow powwower powwowism pox poxy poy poyou pozzolanic pozzuolana pozzuolanic praam prabble prabhu practic practicability practicable practicableness practicably practical practicalism practicalist practicality practicalization practicalize practicalizer practically practicalness practicant practice practiced practicedness practicer practician practicianism practicum practitional practitioner practitionery prad Pradeep pradhana praeabdomen praeacetabular praeanal praecava praecipe praecipuum praecoces praecocial praecognitum praecoracoid praecordia praecordial praecordium praecornu praecox praecuneus praedial praedialist praediality praeesophageal praefect praefectorial praefectus praefervid praefloration praefoliation praehallux praelabrum praelection praelector praelectorship praelectress praeludium praemaxilla praemolar praemunire praenarial Praenestine Praenestinian praeneural praenomen praenomina praenominal praeoperculum praepositor praepostor praepostorial praepubis praepuce praescutum Praesepe praesertim Praesian praesidium praesphenoid praesternal praesternum praestomium praesystolic praetaxation praetexta praetor praetorial Praetorian praetorian praetorianism praetorium praetorship praezygapophysis pragmatic pragmatica pragmatical pragmaticality pragmatically pragmaticalness pragmaticism pragmatics pragmatism pragmatist pragmatistic pragmatize pragmatizer prairie prairiecraft prairied prairiedom prairielike prairieweed prairillon praisable praisableness praisably praise praiseful praisefully praisefulness praiseless praiseproof praiser praiseworthy praising praisingly praisworthily praisworthiness Prajapati prajna Prakash Prakrit prakriti Prakritic Prakritize praline pralltriller pram Pramnian prana prance pranceful prancer prancing prancingly prancy prandial prandially prank pranked pranker prankful prankfulness pranking prankingly prankish prankishly prankishness prankle pranksome pranksomeness prankster pranky prase praseocobaltic praseodidymium praseodymia praseodymium praseolite prasine prasinous prasoid prasophagous prasophagy prastha prat pratal Pratap Pratapwant prate prateful pratement pratensian Prater prater pratey pratfall pratiloma Pratincola pratincole pratincoline pratincolous prating pratingly pratique pratiyasamutpada Pratt prattfall prattle prattlement prattler prattling prattlingly prattly prau Pravin pravity prawn prawner prawny Praxean Praxeanist praxinoscope praxiology praxis Praxitelean pray praya prayer prayerful prayerfully prayerfulness prayerless prayerlessly prayerlessness prayermaker prayermaking prayerwise prayful praying prayingly prayingwise preabdomen preabsorb preabsorbent preabstract preabundance preabundant preabundantly preaccept preacceptance preaccess preaccessible preaccidental preaccidentally preaccommodate preaccommodating preaccommodatingly preaccommodation preaccomplish preaccomplishment preaccord preaccordance preaccount preaccounting preaccredit preaccumulate preaccumulation preaccusation preaccuse preaccustom preaccustomed preacetabular preach preachable preacher preacherdom preacheress preacherize preacherless preacherling preachership preachieved preachification preachify preachily preachiness preaching preachingly preachman preachment preachy preacid preacidity preacidly preacidness preacknowledge preacknowledgment preacquaint preacquaintance preacquire preacquired preacquit preacquittal preact preaction preactive preactively preactivity preacute preacutely preacuteness preadamic preadamite preadamitic preadamitical preadamitism preadapt preadaptable preadaptation preaddition preadditional preaddress preadequacy preadequate preadequately preadhere preadherence preadherent preadjectival preadjective preadjourn preadjournment preadjunct preadjust preadjustable preadjustment preadministration preadministrative preadministrator preadmire preadmirer preadmission preadmit preadmonish preadmonition preadolescent preadopt preadoption preadoration preadore preadorn preadornment preadult preadulthood preadvance preadvancement preadventure preadvertency preadvertent preadvertise preadvertisement preadvice preadvisable preadvise preadviser preadvisory preadvocacy preadvocate preaestival preaffect preaffection preaffidavit preaffiliate preaffiliation preaffirm preaffirmation preaffirmative preafflict preaffliction preafternoon preaged preaggravate preaggravation preaggression preaggressive preagitate preagitation preagonal preagony preagree preagreement preagricultural preagriculture prealarm prealcohol prealcoholic prealgebra prealgebraic prealkalic preallable preallably preallegation preallege prealliance preallied preallot preallotment preallow preallowable preallowably preallowance preallude preallusion preally prealphabet prealphabetical prealtar prealteration prealveolar preamalgamation preambassadorial preambition preambitious preamble preambled preambling preambular preambulary preambulate preambulation preambulatory preanal preanaphoral preanesthetic preanimism preannex preannounce preannouncement preannouncer preantepenult preantepenultimate preanterior preanticipate preantiquity preantiseptic preaortic preappearance preapperception preapplication preappoint preappointment preapprehension preapprise preapprobation preapproval preapprove preaptitude prearm prearrange prearrangement prearrest prearrestment prearticulate preartistic preascertain preascertainment preascitic preaseptic preassigned preassume preassurance preassure preataxic preattachment preattune preaudience preauditory preaver preavowal preaxiad preaxial preaxially prebachelor prebacillary prebake prebalance preballot preballoting prebankruptcy prebaptismal prebaptize prebarbaric prebarbarous prebargain prebasal prebasilar prebeleve prebelief prebeliever prebelieving prebellum prebeloved prebend prebendal prebendary prebendaryship prebendate prebenediction prebeneficiary prebenefit prebeset prebestow prebestowal prebetray prebetrayal prebetrothal prebid prebidding prebill prebless preblessing preblockade preblooming preboast preboding preboil preborn preborrowing preboyhood prebrachial prebrachium prebreathe prebridal prebroadcasting prebromidic prebronchial prebronze prebrute prebuccal prebudget prebudgetary prebullying preburlesque preburn precalculable precalculate precalculation precampaign precancel precancellation precancerous precandidacy precandidature precanning precanonical precant precantation precanvass precapillary precapitalist precapitalistic precaptivity precapture precarcinomatous precardiac precaria precarious precariously precariousness precarium precarnival precartilage precartilaginous precary precast precation precative precatively precatory precaudal precausation precaution precautional precautionary precautious precautiously precautiousness precava precaval precedable precede precedence precedency precedent precedentable precedentary precedented precedential precedentless precedently preceder preceding precelebrant precelebrate precelebration precensure precensus precent precentor precentorial precentorship precentory precentral precentress precentrix precentrum precept preception preceptist preceptive preceptively preceptor preceptoral preceptorate preceptorial preceptorially preceptorship preceptory preceptress preceptual preceptually preceramic precerebellar precerebral precerebroid preceremonial preceremony precertification precertify preces precess precession precessional prechallenge prechampioned prechampionship precharge prechart precheck prechemical precherish prechildhood prechill prechloric prechloroform prechoice prechoose prechordal prechoroid preciation precinct precinction precinctive preciosity precious preciously preciousness precipe precipice precipiced precipitability precipitable precipitance precipitancy precipitant precipitantly precipitantness precipitate precipitated precipitatedly precipitately precipitation precipitative precipitator precipitin precipitinogen precipitinogenic precipitous precipitously precipitousness precirculate precirculation precis precise precisely preciseness precisian precisianism precisianist precision precisional precisioner precisionism precisionist precisionize precisive precitation precite precited precivilization preclaim preclaimant preclaimer preclassic preclassical preclassification preclassified preclassify preclean precleaner precleaning preclerical preclimax preclinical preclival precloacal preclose preclosure preclothe precludable preclude preclusion preclusive preclusively precoagulation precoccygeal precocial precocious precociously precociousness precocity precogitate precogitation precognition precognitive precognizable precognizant precognize precognosce precoil precoiler precoincidence precoincident precoincidently precollapsable precollapse precollect precollectable precollection precollector precollege precollegiate precollude precollusion precollusive precolor precolorable precoloration precoloring precombat precombatant precombination precombine precombustion precommand precommend precomment precommercial precommissural precommissure precommit precommune precommunicate precommunication precommunion precompare precomparison precompass precompel precompensate precompensation precompilation precompile precompiler precompleteness precompletion precompliance precompliant precomplicate precomplication precompose precomposition precompound precompounding precompoundly precomprehend precomprehension precomprehensive precompress precompulsion precomradeship preconceal preconcealment preconcede preconceivable preconceive preconceived preconcentrate preconcentrated preconcentratedly preconcentration preconcept preconception preconceptional preconceptual preconcern preconcernment preconcert preconcerted preconcertedly preconcertedness preconcertion preconcertive preconcession preconcessive preconclude preconclusion preconcur preconcurrence preconcurrent preconcurrently precondemn precondemnation precondensation precondense precondition preconditioned preconduct preconduction preconductor precondylar precondyloid preconfer preconference preconfess preconfession preconfide preconfiguration preconfigure preconfine preconfinedly preconfinemnt preconfirm preconfirmation preconflict preconform preconformity preconfound preconfuse preconfusedly preconfusion precongenial precongested precongestion precongestive precongratulate precongratulation precongressional preconizance preconization preconize preconizer preconjecture preconnection preconnective preconnubial preconquer preconquest preconquestal preconquestual preconscious preconsciously preconsciousness preconsecrate preconsecration preconsent preconsider preconsideration preconsign preconsolation preconsole preconsolidate preconsolidated preconsolidation preconsonantal preconspiracy preconspirator preconspire preconstituent preconstitute preconstruct preconstruction preconsult preconsultation preconsultor preconsume preconsumer preconsumption precontact precontain precontained precontemn precontemplate precontemplation precontemporaneous precontemporary precontend precontent precontention precontently precontentment precontest precontinental precontract precontractive precontractual precontribute precontribution precontributive precontrivance precontrive precontrol precontrolled precontroversial precontroversy preconvention preconversation preconversational preconversion preconvert preconvey preconveyal preconveyance preconvict preconviction preconvince precook precooker precool precooler precooling precopy precoracoid precordia precordial precordiality precordially precordium precorneal precornu precoronation precorrect precorrection precorrectly precorrectness precorrespond precorrespondence precorrespondent precorridor precorrupt precorruption precorruptive precorruptly precoruptness precosmic precosmical precostal precounsel precounsellor precourse precover precovering precox precreate precreation precreative precredit precreditor precreed precritical precriticism precriticize precrucial precrural precrystalline precultivate precultivation precultural preculturally preculture precuneal precuneate precuneus precure precurrent precurricular precurriculum precursal precurse precursive precursor precursory precurtain precut precyclone precyclonic precynical precyst precystic predable predacean predaceous predaceousness predacity predamage predamn predamnation predark predarkness predata predate predation predatism predative predator predatorily predatoriness predatory predawn preday predaylight predaytime predazzite predealer predealing predeath predeathly predebate predebater predebit predebtor predecay predecease predeceaser predeceive predeceiver predeception predecession predecessor predecessorship predecide predecision predecisive predeclaration predeclare predeclination predecline predecree prededicate prededuct prededuction predefault predefeat predefect predefective predefence predefend predefense predefiance predeficiency predeficient predefine predefinite predefinition predefray predefrayal predefy predegeneracy predegenerate predegree predeication predelay predelegate predelegation predeliberate predeliberately predeliberation predelineate predelineation predelinquency predelinquent predelinquently predeliver predelivery predella predelude predelusion predemand predemocracy predemocratic predemonstrate predemonstration predemonstrative predenial predental predentary Predentata predentate predeny predepart predepartmental predeparture predependable predependence predependent predeplete predepletion predeposit predepository predepreciate predepreciation predepression predeprivation predeprive prederivation prederive predescend predescent predescribe predescription predesert predeserter predesertion predeserve predeserving predesign predesignate predesignation predesignatory predesirous predesolate predesolation predespair predesperate predespicable predespise predespond predespondency predespondent predestinable predestinarian predestinarianism predestinate predestinately predestination predestinational predestinationism predestinationist predestinative predestinator predestine predestiny predestitute predestitution predestroy predestruction predetach predetachment predetail predetain predetainer predetect predetention predeterminability predeterminable predeterminant predeterminate predeterminately predetermination predeterminative predetermine predeterminer predeterminism predeterministic predetest predetestation predetrimental predevelop predevelopment predevise predevote predevotion predevour prediagnosis prediagnostic predial prediastolic prediatory predicability predicable predicableness predicably predicament predicamental predicamentally predicant predicate predication predicational predicative predicatively predicator predicatory predicrotic predict predictability predictable predictably predictate predictation prediction predictional predictive predictively predictiveness predictor predictory prediet predietary predifferent predifficulty predigest predigestion predikant predilect predilected predilection prediligent prediligently prediluvial prediluvian prediminish prediminishment prediminution predine predinner prediphtheritic prediploma prediplomacy prediplomatic predirect predirection predirector predisability predisable predisadvantage predisadvantageous predisadvantageously predisagree predisagreeable predisagreement predisappointment predisaster predisastrous prediscern prediscernment predischarge prediscipline predisclose predisclosure prediscontent prediscontented prediscontentment prediscontinuance prediscontinuation prediscontinue prediscount prediscountable prediscourage prediscouragement prediscourse prediscover prediscoverer prediscovery prediscreet prediscretion prediscretionary prediscriminate prediscrimination prediscriminator prediscuss prediscussion predisgrace predisguise predisgust predislike predismiss predismissal predismissory predisorder predisordered predisorderly predispatch predispatcher predisperse predispersion predisplace predisplacement predisplay predisponency predisponent predisposable predisposal predispose predisposed predisposedly predisposedness predisposition predispositional predisputant predisputation predispute predisregard predisrupt predisruption predissatisfaction predissolution predissolve predissuade predistinct predistinction predistinguish predistress predistribute predistribution predistributor predistrict predistrust predistrustful predisturb predisturbance prediversion predivert predivide predividend predivider predivinable predivinity predivision predivorce predivorcement predoctorate predocumentary predomestic predominance predominancy predominant predominantly predominate predominately predominatingly predomination predominator predonate predonation predonor predoom predorsal predoubt predoubter predoubtful predraft predrainage predramatic predraw predrawer predread predreadnought predrill predriller predrive predriver predry preduplicate preduplication predusk predwell predynamite predynastic preen preener preeze prefab prefabricate prefabrication prefabricator preface prefaceable prefacer prefacial prefacist prefactor prefactory prefamiliar prefamiliarity prefamiliarly prefamous prefashion prefatial prefator prefatorial prefatorially prefatorily prefatory prefavor prefavorable prefavorably prefavorite prefearful prefearfully prefeast prefect prefectly prefectoral prefectorial prefectorially prefectorian prefectship prefectual prefectural prefecture prefecundation prefecundatory prefederal prefelic prefer preferability preferable preferableness preferably preferee preference preferent preferential preferentialism preferentialist preferentially preferment prefermentation preferred preferredly preferredness preferrer preferrous prefertile prefertility prefertilization prefertilize prefervid prefestival prefeudal prefeudalic prefeudalism prefiction prefictional prefigurate prefiguration prefigurative prefiguratively prefigurativeness prefigure prefigurement prefiller prefilter prefinal prefinance prefinancial prefine prefinish prefix prefixable prefixal prefixally prefixation prefixed prefixedly prefixion prefixture preflagellate preflatter preflattery preflavor preflavoring preflection preflexion preflight preflood prefloration preflowering prefoliation prefool preforbidden preforceps preforgive preforgiveness preforgotten preform preformant preformation preformationary preformationism preformationist preformative preformed preformism preformist preformistic preformulate preformulation prefortunate prefortunately prefortune prefoundation prefounder prefragrance prefragrant prefrankness prefraternal prefraternally prefraud prefreeze prefreshman prefriendly prefriendship prefright prefrighten prefrontal prefulfill prefulfillment prefulgence prefulgency prefulgent prefunction prefunctional prefuneral prefungoidal prefurlough prefurnish pregain pregainer pregalvanize preganglionic pregather pregathering pregeminum pregenerate pregeneration pregenerosity pregenerous pregenerously pregenial pregeniculatum pregeniculum pregenital pregeological pregirlhood preglacial pregladden pregladness preglenoid preglenoidal preglobulin pregnability pregnable pregnance pregnancy pregnant pregnantly pregnantness pregolden pregolfing pregracile pregracious pregrade pregraduation pregranite pregranitic pregratification pregratify pregreet pregreeting pregrievance pregrowth preguarantee preguarantor preguard preguess preguidance preguide preguilt preguiltiness preguilty pregust pregustant pregustation pregustator pregustic prehallux prehalter prehandicap prehandle prehaps preharden preharmonious preharmoniousness preharmony preharsh preharshness preharvest prehatred prehaunt prehaunted prehaustorium prehazard prehazardous preheal prehearing preheat preheated preheater prehemiplegic prehend prehensible prehensile prehensility prehension prehensive prehensiveness prehensor prehensorial prehensory prehepatic prehepaticus preheroic prehesitancy prehesitate prehesitation prehexameral prehistorian prehistoric prehistorical prehistorically prehistorics prehistory prehnite prehnitic preholder preholding preholiday prehorizon prehorror prehostile prehostility prehuman prehumiliate prehumiliation prehumor prehunger prehydration prehypophysis preidea preidentification preidentify preignition preilluminate preillumination preillustrate preillustration preimage preimaginary preimagination preimagine preimbibe preimbue preimitate preimitation preimitative preimmigration preimpair preimpairment preimpart preimperial preimport preimportance preimportant preimportantly preimportation preimposal preimpose preimposition preimpress preimpression preimpressive preimprove preimprovement preinaugural preinaugurate preincarnate preincentive preinclination preincline preinclude preinclusion preincorporate preincorporation preincrease preindebted preindebtedness preindemnification preindemnify preindemnity preindependence preindependent preindependently preindesignate preindicant preindicate preindication preindispose preindisposition preinduce preinducement preinduction preinductive preindulge preindulgence preindulgent preindustrial preindustry preinfect preinfection preinfer preinference preinflection preinflectional preinflict preinfluence preinform preinformation preinhabit preinhabitant preinhabitation preinhere preinherit preinheritance preinitial preinitiate preinitiation preinjure preinjurious preinjury preinquisition preinscribe preinscription preinsert preinsertion preinsinuate preinsinuating preinsinuatingly preinsinuation preinsinuative preinspect preinspection preinspector preinspire preinstall preinstallation preinstill preinstillation preinstruct preinstruction preinstructional preinstructive preinsula preinsular preinsulate preinsulation preinsult preinsurance preinsure preintellectual preintelligence preintelligent preintelligently preintend preintention preintercede preintercession preinterchange preintercourse preinterest preinterfere preinterference preinterpret preinterpretation preinterpretative preinterview preintone preinvent preinvention preinventive preinventory preinvest preinvestigate preinvestigation preinvestigator preinvestment preinvitation preinvite preinvocation preinvolve preinvolvement preiotization preiotize preirrigation preirrigational preissuance preissue prejacent prejournalistic prejudge prejudgement prejudger prejudgment prejudication prejudicative prejudicator prejudice prejudiced prejudicedly prejudiceless prejudiciable prejudicial prejudicially prejudicialness prejudicious prejudiciously prejunior prejurisdiction prejustification prejustify prejuvenile Prekantian prekindergarten prekindle preknit preknow preknowledge prelabel prelabial prelabor prelabrum prelachrymal prelacrimal prelacteal prelacy prelanguage prelapsarian prelate prelatehood prelateship prelatess prelatial prelatic prelatical prelatically prelaticalness prelation prelatish prelatism prelatist prelatize prelatry prelature prelaunch prelaunching prelawful prelawfully prelawfulness prelease prelect prelection prelector prelectorship prelectress prelecture prelegacy prelegal prelegate prelegatee prelegend prelegendary prelegislative preliability preliable prelibation preliberal preliberality preliberally preliberate preliberation prelicense prelim preliminarily preliminary prelimit prelimitate prelimitation prelingual prelinguistic prelinpinpin preliquidate preliquidation preliteral preliterally preliteralness preliterary preliterate preliterature prelithic prelitigation preloan prelocalization prelocate prelogic prelogical preloral preloreal preloss prelude preluder preludial preludious preludiously preludium preludize prelumbar prelusion prelusive prelusively prelusorily prelusory preluxurious premachine premadness premaintain premaintenance premake premaker premaking premandibular premanhood premaniacal premanifest premanifestation premankind premanufacture premanufacturer premanufacturing premarital premarriage premarry premastery prematch premate prematerial prematernity prematrimonial prematuration premature prematurely prematureness prematurity premaxilla premaxillary premeasure premeasurement premechanical premedia premedial premedian premedic premedical premedicate premedication premedieval premedievalism premeditate premeditatedly premeditatedness premeditatingly premeditation premeditative premeditator premegalithic prememorandum premenace premenstrual premention premeridian premerit premetallic premethodical premial premiant premiate premidnight premidsummer premier premieral premiere premieress premierjus premiership premilitary premillenarian premillenarianism premillennial premillennialism premillennialist premillennialize premillennially premillennian preminister preministry premious premisal premise premisory premisrepresent premisrepresentation premiss premium premix premixer premixture premodel premodern premodification premodify premolar premold premolder premolding premonarchial premonetary Premongolian premonish premonishment premonition premonitive premonitor premonitorily premonitory premonopolize premonopoly Premonstrant Premonstratensian premonumental premoral premorality premorally premorbid premorbidly premorbidness premorning premorse premortal premortification premortify premortuary premosaic premotion premourn premove premovement premover premuddle premultiplication premultiplier premultiply premundane premunicipal premunition premunitory premusical premuster premutative premutiny premycotic premyelocyte premythical prename Prenanthes prenares prenarial prenaris prenasal prenatal prenatalist prenatally prenational prenative prenatural prenaval prender prendre prenebular prenecessitate preneglect preneglectful prenegligence prenegligent prenegotiate prenegotiation preneolithic prenephritic preneural preneuralgic prenight prenoble prenodal prenominal prenominate prenomination prenominical prenotation prenotice prenotification prenotify prenotion prentice prenticeship prenumber prenumbering prenuncial prenuptial prenursery preobedience preobedient preobject preobjection preobjective preobligate preobligation preoblige preobservance preobservation preobservational preobserve preobstruct preobstruction preobtain preobtainable preobtrude preobtrusion preobtrusive preobviate preobvious preobviously preobviousness preoccasioned preoccipital preocclusion preoccultation preoccupancy preoccupant preoccupate preoccupation preoccupative preoccupied preoccupiedly preoccupiedness preoccupier preoccupy preoccur preoccurrence preoceanic preocular preodorous preoffend preoffense preoffensive preoffensively preoffensiveness preoffer preoffering preofficial preofficially preominate preomission preomit preopen preopening preoperate preoperation preoperative preoperatively preoperator preopercle preopercular preoperculum preopinion preopinionated preoppose preopposition preoppress preoppression preoppressor preoptic preoptimistic preoption preoral preorally preorbital preordain preorder preordination preorganic preorganization preorganize preoriginal preoriginally preornamental preoutfit preoutline preoverthrow prep prepainful prepalatal prepalatine prepaleolithic prepanic preparable preparation preparationist preparative preparatively preparator preparatorily preparatory prepardon prepare prepared preparedly preparedness preparement preparental preparer preparietal preparingly preparliamentary preparoccipital preparoxysmal prepartake preparticipation prepartisan prepartition prepartnership prepatellar prepatent prepatriotic prepave prepavement prepay prepayable prepayment prepeduncle prepenetrate prepenetration prepenial prepense prepensely prepeople preperceive preperception preperceptive preperitoneal prepersuade prepersuasion prepersuasive preperusal preperuse prepetition prephragma prephthisical prepigmental prepink prepious prepituitary preplace preplacement preplacental preplan preplant prepledge preplot prepoetic prepoetical prepoison prepolice prepolish prepolitic prepolitical prepolitically prepollence prepollency prepollent prepollex preponder preponderance preponderancy preponderant preponderantly preponderate preponderately preponderating preponderatingly preponderation preponderous preponderously prepontile prepontine preportray preportrayal prepose preposition prepositional prepositionally prepositive prepositively prepositor prepositorial prepositure prepossess prepossessed prepossessing prepossessingly prepossessingness prepossession prepossessionary prepossessor preposterous preposterously preposterousness prepostorship prepotence prepotency prepotent prepotential prepotently prepractical prepractice preprandial prepreference prepreparation preprice preprimary preprimer preprimitive preprint preprofess preprofessional preprohibition prepromise prepromote prepromotion prepronounce prepronouncement preprophetic preprostatic preprove preprovide preprovision preprovocation preprovoke preprudent preprudently prepsychological prepsychology prepuberal prepubertal prepuberty prepubescent prepubic prepubis prepublication prepublish prepuce prepunctual prepunish prepunishment prepupa prepupal prepurchase prepurchaser prepurpose preputial preputium prepyloric prepyramidal prequalification prequalify prequarantine prequestion prequotation prequote preracing preradio prerailroad prerailroadite prerailway preramus prerational prereadiness preready prerealization prerealize prerebellion prereceipt prereceive prereceiver prerecital prerecite prereckon prereckoning prerecognition prerecognize prerecommend prerecommendation prereconcile prereconcilement prereconciliation prerectal preredeem preredemption prereduction prerefer prereference prerefine prerefinement prereform prereformation prereformatory prerefusal prerefuse preregal preregister preregistration preregulate preregulation prereject prerejection prerejoice prerelate prerelation prerelationship prerelease prereligious prereluctation preremit preremittance preremorse preremote preremoval preremove preremunerate preremuneration prerenal prerent prerental prereport prerepresent prerepresentation prereption prerepublican prerequest prerequire prerequirement prerequisite prerequisition preresemblance preresemble preresolve preresort prerespectability prerespectable prerespiration prerespire preresponsibility preresponsible prerestoration prerestrain prerestraint prerestrict prerestriction prereturn prereveal prerevelation prerevenge prereversal prereverse prereview prerevise prerevision prerevival prerevolutionary prerheumatic prerich prerighteous prerighteously prerighteousness prerogatival prerogative prerogatived prerogatively prerogativity prerolandic preromantic preromanticism preroute preroutine preroyal preroyally preroyalty prerupt preruption presacral presacrifice presacrificial presage presageful presagefully presager presagient presaging presagingly presalvation presanctification presanctified presanctify presanguine presanitary presartorial presatisfaction presatisfactory presatisfy presavage presavagery presay presbyacousia presbyacusia presbycousis presbycusis presbyope presbyophrenia presbyophrenic presbyopia presbyopic presbyopy presbyte presbyter presbyteral presbyterate presbyterated presbyteress presbyteria presbyterial presbyterially Presbyterian Presbyterianism Presbyterianize Presbyterianly presbyterium presbytership presbytery presbytia presbytic Presbytinae Presbytis presbytism prescapula prescapular prescapularis prescholastic preschool prescience prescient prescientific presciently prescind prescindent prescission prescored prescout prescribable prescribe prescriber prescript prescriptibility prescriptible prescription prescriptionist prescriptive prescriptively prescriptiveness prescriptorial prescrive prescutal prescutum preseal presearch preseason preseasonal presecular presecure presee preselect presell preseminal preseminary presence presenced presenceless presenile presenility presensation presension present presentability presentable presentableness presentably presental presentation presentational presentationism presentationist presentative presentatively presentee presentence presenter presential presentiality presentially presentialness presentient presentiment presentimental presentist presentive presentively presentiveness presently presentment presentness presentor preseparate preseparation preseparator preservability preservable preserval preservation preservationist preservative preservatize preservatory preserve preserver preserveress preses presession preset presettle presettlement presexual preshadow preshape preshare presharpen preshelter preship preshipment preshortage preshorten preshow preside presidence presidencia presidency president presidente presidentess presidential presidentially presidentiary presidentship presider presidial presidially presidiary presidio presidium presift presign presignal presignificance presignificancy presignificant presignification presignificative presignificator presignify presimian preslavery Presley presmooth presocial presocialism presocialist presolar presolicit presolicitation presolution presolve presophomore presound prespecialist prespecialize prespecific prespecifically prespecification prespecify prespeculate prespeculation presphenoid presphenoidal presphygmic prespinal prespinous prespiracular presplendor presplenomegalic prespoil prespontaneity prespontaneous prespontaneously prespread presprinkle prespur press pressable pressboard pressdom pressel presser pressfat pressful pressgang pressible pressing pressingly pressingness pression pressive pressman pressmanship pressmark pressor presspack pressroom pressurage pressural pressure pressureless pressureproof pressurize pressurizer presswoman presswork pressworker prest prestabilism prestability prestable prestamp prestandard prestandardization prestandardize prestant prestate prestation prestatistical presteam presteel prester presternal presternum prestidigital prestidigitate prestidigitation prestidigitator prestidigitatorial prestige prestigiate prestigiation prestigiator prestigious prestigiously prestigiousness prestimulate prestimulation prestimulus prestissimo presto prestock prestomial prestomium prestorage prestore prestraighten prestrain prestrengthen prestress prestretch prestricken prestruggle prestubborn prestudious prestudiously prestudiousness prestudy presubdue presubiculum presubject presubjection presubmission presubmit presubordinate presubordination presubscribe presubscriber presubscription presubsist presubsistence presubsistent presubstantial presubstitute presubstitution presuccess presuccessful presuccessfully presuffer presuffering presufficiency presufficient presufficiently presuffrage presuggest presuggestion presuggestive presuitability presuitable presuitably presumable presumably presume presumedly presumer presuming presumption presumptious presumptiously presumptive presumptively presumptuous presumptuously presumptuousness presuperficial presuperficiality presuperficially presuperfluity presuperfluous presuperfluously presuperintendence presuperintendency presupervise presupervision presupervisor presupplemental presupplementary presupplicate presupplication presupply presupport presupposal presuppose presupposition presuppositionless presuppress presuppression presuppurative presupremacy presupreme presurgery presurgical presurmise presurprisal presurprise presurrender presurround presurvey presusceptibility presusceptible presuspect presuspend presuspension presuspicion presuspicious presuspiciously presuspiciousness presustain presutural preswallow presylvian presympathize presympathy presymphonic presymphony presymphysial presymptom presymptomatic presynapsis presynaptic presystematic presystematically presystole presystolic pretabulate pretabulation pretan pretangible pretangibly pretannage pretardily pretardiness pretardy pretariff pretaste preteach pretechnical pretechnically pretelegraph pretelegraphic pretelephone pretelephonic pretell pretemperate pretemperately pretemporal pretend pretendant pretended pretendedly pretender Pretenderism pretendership pretendingly pretendingness pretense pretenseful pretenseless pretension pretensional pretensionless pretensive pretensively pretensiveness pretentative pretentious pretentiously pretentiousness pretercanine preterchristian preterconventional preterdetermined preterdeterminedly preterdiplomatic preterdiplomatically preterequine preteressential pretergress pretergression preterhuman preterience preterient preterintentional preterist preterit preteriteness preterition preteritive preteritness preterlabent preterlegal preterlethal preterminal pretermission pretermit pretermitter preternative preternatural preternaturalism preternaturalist preternaturality preternaturally preternaturalness preternormal preternotorious preternuptial preterpluperfect preterpolitical preterrational preterregular preterrestrial preterritorial preterroyal preterscriptural preterseasonable pretersensual pretervection pretest pretestify pretestimony pretext pretexted pretextuous pretheological prethoracic prethoughtful prethoughtfully prethoughtfulness prethreaten prethrill prethrust pretibial pretimeliness pretimely pretincture pretire pretoken pretone pretonic pretorial pretorship pretorsional pretorture pretournament pretrace pretracheal pretraditional pretrain pretraining pretransact pretransaction pretranscribe pretranscription pretranslate pretranslation pretransmission pretransmit pretransport pretransportation pretravel pretreat pretreatment pretreaty pretrematic pretribal pretry prettification prettifier prettify prettikin prettily prettiness pretty prettyface prettyish prettyism pretubercular pretuberculous pretympanic pretyphoid pretypify pretypographical pretyrannical pretyranny pretzel preultimate preultimately preumbonal preunderstand preundertake preunion preunite preutilizable preutilization preutilize prevacate prevacation prevaccinate prevaccination prevail prevailance prevailer prevailingly prevailingness prevailment prevalence prevalency prevalent prevalently prevalentness prevalescence prevalescent prevalid prevalidity prevalidly prevaluation prevalue prevariation prevaricate prevarication prevaricator prevaricatory prevascular prevegetation prevelar prevenance prevenancy prevene prevenience prevenient preveniently prevent preventability preventable preventative preventer preventible preventingly prevention preventionism preventionist preventive preventively preventiveness preventorium preventure preverb preverbal preverification preverify prevernal preversion prevertebral prevesical preveto previctorious previde previdence preview previgilance previgilant previgilantly previolate previolation previous previously previousness previse previsibility previsible previsibly prevision previsional previsit previsitor previsive previsor prevocal prevocalic prevocally prevocational prevogue prevoid prevoidance prevolitional prevolunteer prevomer prevotal prevote prevoyance prevoyant prevue prewar prewarn prewarrant prewash preweigh prewelcome prewhip prewilling prewillingly prewillingness prewire prewireless prewitness prewonder prewonderment preworldliness preworldly preworship preworthily preworthiness preworthy prewound prewrap prexy prey preyer preyful preyingly preyouthful prezonal prezone prezygapophysial prezygapophysis prezygomatic Pria priacanthid Priacanthidae priacanthine Priacanthus Priapean Priapic priapism Priapulacea priapulid Priapulida Priapulidae priapuloid Priapuloidea Priapulus Priapus Priapusian Price price priceable priceably priced priceite priceless pricelessness pricer prich prick prickant pricked pricker pricket prickfoot pricking prickingly prickish prickle prickleback prickled pricklefish prickless prickliness prickling pricklingly pricklouse prickly pricklyback prickmadam prickmedainty prickproof pricks prickseam prickshot prickspur pricktimber prickwood pricky pride prideful pridefully pridefulness prideless pridelessly prideling prideweed pridian priding pridingly pridy pried prier priest priestal priestcap priestcraft priestdom priesteen priestery priestess priestfish priesthood priestianity priestish priestism priestless priestlet priestlike priestliness priestling priestly priestship priestshire prig prigdom prigger priggery priggess priggish priggishly priggishness priggism prighood prigman prill prillion prim prima primacy primage primal primality primar primarian primaried primarily primariness primary primatal primate Primates primateship primatial primatic primatical primavera primaveral prime primegilt primely primeness primer primero primerole primeval primevalism primevally primeverose primevity primevous primevrin Primianist primigene primigenial primigenian primigenious primigenous primigravida primine priming primipara primiparity primiparous primipilar primitiae primitial primitias primitive primitively primitivism primitivist primitivistic primitivity primly primness primogenetrix primogenial primogenital primogenitary primogenitive primogenitor primogeniture primogenitureship primogenous primoprime primoprimitive primordality primordia primordial primordialism primordially primordiate primordium primosity primost primp primrose primrosed primrosetide primrosetime primrosy primsie Primula primula Primulaceae primulaceous Primulales primulaverin primulaveroside primulic primuline Primulinus Primus primus primwort primy prince princeage princecraft princedom princehood Princeite princekin princeless princelet princelike princeliness princeling princely princeps princeship princess princessdom princesse princesslike princessly princewood princified princify principal principality principally principalness principalship principate Principes principes principia principiant principiate principiation principium principle principulus princock princox prine pringle prink prinker prinkle prinky print printability printable printableness printed printer printerdom printerlike printery printing printless printline printscript printworks Priodon priodont Priodontes prion prionid Prionidae Prioninae prionine Prionodesmacea prionodesmacean prionodesmaceous prionodesmatic Prionodon prionodont Prionopinae prionopine Prionops Prionus prior prioracy prioral priorate prioress prioristic prioristically priorite priority priorly priorship priory prisable prisage prisal priscan Priscian Priscianist Priscilla Priscillian Priscillianism Priscillianist prism prismal prismatic prismatical prismatically prismatization prismatize prismatoid prismatoidal prismed prismoid prismoidal prismy prisometer prison prisonable prisondom prisoner prisonful prisonlike prisonment prisonous priss prissily prissiness prissy pristane pristine Pristipomatidae Pristipomidae Pristis Pristodus pritch Pritchardia pritchel prithee prius privacity privacy privant private privateer privateersman privately privateness privation privative privatively privativeness privet privilege privileged privileger privily priviness privity privy prizable prize prizeable prizeholder prizeman prizer prizery prizetaker prizeworthy pro proa proabolitionist proabsolutism proabsolutist proabstinence proacademic proacceptance proacquisition proacquittal proaction proactor proaddition proadjournment proadministration proadmission proadoption proadvertising proaesthetic proaggressionist proagitation proagrarian proagreement proagricultural proagule proairesis proairplane proal proalcoholism proalien proalliance proallotment proalteration proamateur proambient proamendment proamnion proamniotic proamusement proanaphora proanaphoral proanarchic proangiosperm proangiospermic proangiospermous proanimistic proannexation proannexationist proantarctic proanthropos proapostolic proappointment proapportionment proappreciation proappropriation proapproval proaquatic proarbitration proarbitrationist proarchery proarctic proaristocratic proarmy Proarthri proassessment proassociation proatheist proatheistic proathletic proatlas proattack proattendance proauction proaudience proaulion proauthor proauthority proautomobile proavian proaviation Proavis proaward prob probabiliorism probabiliorist probabilism probabilist probabilistic probability probabilize probabl probable probableness probably probachelor probal proballoon probang probanishment probankruptcy probant probargaining probaseball probasketball probate probathing probatical probation probational probationary probationer probationerhood probationership probationism probationist probationship probative probatively probator probatory probattle probattleship probe probeable probeer prober probetting probiology probituminous probity problem problematic problematical problematically problematist problematize problemdom problemist problemistic problemize problemwise problockade probonding probonus proborrowing proboscidal proboscidate Proboscidea proboscidean proboscideous proboscides proboscidial proboscidian proboscidiferous proboscidiform probosciform probosciformed Probosciger proboscis proboscislike probouleutic proboulevard probowling proboxing proboycott probrick probridge probroadcasting probudget probudgeting probuilding probusiness probuying procacious procaciously procacity procaine procambial procambium procanal procancellation procapital procapitalism procapitalist procarnival procarp procarpium procarrier procatalectic procatalepsis procatarctic procatarxis procathedral Procavia Procaviidae procedendo procedural procedure proceed proceeder proceeding proceeds proceleusmatic Procellaria procellarian procellarid Procellariidae Procellariiformes procellariine procellas procello procellose procellous procensorship procensure procentralization procephalic procercoid procereal procerebral procerebrum proceremonial proceremonialism proceremonialist proceres procerite proceritic procerity procerus process processal procession processional processionalist processionally processionary processioner processionist processionize processionwise processive processor processual procharity prochein prochemical prochlorite prochondral prochoos prochordal prochorion prochorionic prochromosome prochronic prochronism prochronize prochurch prochurchian procidence procident procidentia procivic procivilian procivism proclaim proclaimable proclaimant proclaimer proclaiming proclaimingly proclamation proclamator proclamatory proclassic proclassical proclergy proclerical proclericalism procline proclisis proclitic proclive proclivitous proclivity proclivous proclivousness Procne procnemial Procoelia procoelia procoelian procoelous procoercive procollectivistic procollegiate procombat procombination procomedy procommemoration procomment procommercial procommission procommittee procommunal procommunism procommunist procommutation procompensation procompetition procompromise procompulsion proconcentration proconcession proconciliation procondemnation proconfederationist proconference proconfession proconfessionist proconfiscation proconformity Proconnesian proconquest proconscription proconscriptive proconservation proconservationist proconsolidation proconstitutional proconstitutionalism proconsul proconsular proconsulary proconsulate proconsulship proconsultation procontinuation proconvention proconventional proconviction procoracoid procoracoidal procorporation procosmetic procosmopolitan procotton procourt procrastinate procrastinating procrastinatingly procrastination procrastinative procrastinatively procrastinator procrastinatory procreant procreate procreation procreative procreativeness procreator procreatory procreatress procreatrix procremation Procris procritic procritique Procrustean Procrusteanism Procrusteanize Procrustes procrypsis procryptic procryptically proctal proctalgia proctalgy proctatresia proctatresy proctectasia proctectomy procteurynter proctitis proctocele proctoclysis proctocolitis proctocolonoscopy proctocystoplasty proctocystotomy proctodaeal proctodaeum proctodynia proctoelytroplastic proctologic proctological proctologist proctology proctoparalysis proctoplastic proctoplasty proctoplegia proctopolypus proctoptoma proctoptosis proctor proctorage proctoral proctorial proctorially proctorical proctorization proctorize proctorling proctorrhagia proctorrhaphy proctorrhea proctorship proctoscope proctoscopic proctoscopy proctosigmoidectomy proctosigmoiditis proctospasm proctostenosis proctostomy proctotome proctotomy proctotresia proctotrypid Proctotrypidae proctotrypoid Proctotrypoidea proctovalvotomy Proculian procumbent procurable procuracy procural procurance procurate procuration procurative procurator procuratorate procuratorial procuratorship procuratory procuratrix procure procurement procurer procuress procurrent procursive procurvation procurved Procyon Procyonidae procyoniform Procyoniformia Procyoninae procyonine proczarist prod prodatary prodder proddle prodecoration prodefault prodefiance prodelay prodelision prodemocratic Prodenia prodenominational prodentine prodeportation prodespotic prodespotism prodialogue prodigal prodigalish prodigalism prodigality prodigalize prodigally prodigiosity prodigious prodigiously prodigiousness prodigus prodigy prodisarmament prodisplay prodissoconch prodissolution prodistribution prodition proditorious proditoriously prodivision prodivorce prodproof prodramatic prodroma prodromal prodromatic prodromatically prodrome prodromic prodromous prodromus producal produce produceable produceableness produced producent producer producership producibility producible producibleness product producted productibility productible productid Productidae productile production productional productionist productive productively productiveness productivity productoid productor productory productress Productus proecclesiastical proeconomy proeducation proeducational proegumenal proelectric proelectrical proelectrification proelectrocution proelimination proem proembryo proembryonic proemial proemium proemployee proemptosis proenforcement proenlargement proenzym proenzyme proepimeron proepiscopist proepisternum proequality proethical proethnic proethnically proetid Proetidae Proetus proevolution proevolutionist proexamination proexecutive proexemption proexercise proexperiment proexpert proexporting proexposure proextension proextravagance prof profaculty profanable profanableness profanably profanation profanatory profanchise profane profanely profanement profaneness profaner profanism profanity profanize profarmer profection profectional profectitious profederation profeminism profeminist proferment profert profess professable professed professedly profession professional professionalism professionalist professionality professionalization professionalize professionally professionist professionize professionless professive professively professor professorate professordom professoress professorial professorialism professorially professoriate professorlike professorling professorship professory proffer profferer proficience proficiency proficient proficiently proficientness profiction proficuous proficuously profile profiler profilist profilograph profit profitability profitable profitableness profitably profiteer profiteering profiter profiting profitless profitlessly profitlessness profitmonger profitmongering profitproof proflated proflavine profligacy profligate profligately profligateness profligation proflogger profluence profluent profluvious profluvium proforeign profound profoundly profoundness profraternity profugate profulgent profunda profundity profuse profusely profuseness profusion profusive profusively profusiveness prog progambling progamete progamic proganosaur Proganosauria progenerate progeneration progenerative progenital progenitive progenitiveness progenitor progenitorial progenitorship progenitress progenitrix progeniture progenity progeny progeotropic progeotropism progeria progermination progestational progesterone progestin progger proglottic proglottid proglottidean proglottis prognathi prognathic prognathism prognathous prognathy progne prognose prognosis prognostic prognosticable prognostically prognosticate prognostication prognosticative prognosticator prognosticatory progoneate progospel progovernment program programist programistic programma programmar programmatic programmatically programmatist programmer progrede progrediency progredient progress progresser progression progressional progressionally progressionary progressionism progressionist progressism progressist progressive progressively progressiveness progressivism progressivist progressivity progressor proguardian Progymnasium progymnosperm progymnospermic progymnospermous progypsy prohaste prohibit prohibiter prohibition prohibitionary prohibitionism prohibitionist prohibitive prohibitively prohibitiveness prohibitor prohibitorily prohibitory proholiday prohostility prohuman prohumanistic prohydrotropic prohydrotropism proidealistic proimmunity proinclusion proincrease proindemnity proindustrial proinjunction proinnovationist proinquiry proinsurance prointervention proinvestment proirrigation projacient project projectable projectedly projectile projecting projectingly projection projectional projectionist projective projectively projectivity projector projectress projectrix projecture projicience projicient projiciently projournalistic projudicial proke prokeimenon proker prokindergarten proklausis prolabium prolabor prolacrosse prolactin prolamin prolan prolapse prolapsus prolarva prolarval prolate prolately prolateness prolation prolative prolatively proleague proleaguer prolectite proleg prolegate prolegislative prolegomena prolegomenal prolegomenary prolegomenist prolegomenon prolegomenous proleniency prolepsis proleptic proleptical proleptically proleptics proletairism proletarian proletarianism proletarianization proletarianize proletarianly proletarianness proletariat proletariatism proletarization proletarize proletary proletcult proleucocyte proleukocyte prolicense prolicidal prolicide proliferant proliferate proliferation proliferative proliferous proliferously prolific prolificacy prolifical prolifically prolificalness prolificate prolification prolificity prolificly prolificness prolificy prolify proligerous proline proliquor proliterary proliturgical proliturgist prolix prolixity prolixly prolixness prolocution prolocutor prolocutorship prolocutress prolocutrix prologist prologize prologizer prologos prologue prologuelike prologuer prologuist prologuize prologuizer prologus prolong prolongable prolongableness prolongably prolongate prolongation prolonge prolonger prolongment prolusion prolusionize prolusory prolyl promachinery promachos promagisterial promagistracy promagistrate promajority promammal Promammalia promammalian promarriage promatrimonial promatrimonialist promaximum promemorial promenade promenader promenaderess promercantile promercy promerger promeristem promerit promeritor Promethea Promethean Prometheus promethium promic promilitarism promilitarist promilitary prominence prominency prominent prominently prominimum proministry prominority promisable promiscuity promiscuous promiscuously promiscuousness promise promisee promiseful promiseless promisemonger promiseproof promiser promising promisingly promisingness promisor promissionary promissive promissor promissorily promissory promitosis promittor promnesia promoderation promoderationist promodernist promodernistic promonarchic promonarchical promonarchicalness promonarchist promonopolist promonopoly promontoried promontory promoral promorph promorphological promorphologically promorphologist promorphology promotable promote promotement promoter promotion promotional promotive promotiveness promotor promotorial promotress promotrix promovable promovent prompt promptbook prompter promptitude promptive promptly promptness promptress promptuary prompture promulgate promulgation promulgator promulge promulger promuscidate promuscis promycelial promycelium promythic pronaos pronate pronation pronational pronationalism pronationalist pronationalistic pronative pronatoflexor pronator pronaval pronavy prone pronegotiation pronegro pronegroism pronely proneness pronephric pronephridiostome pronephron pronephros proneur prong prongbuck pronged pronger pronghorn pronglike pronic pronograde pronominal pronominalize pronominally pronomination pronotal pronotum pronoun pronounal pronounce pronounceable pronounced pronouncedly pronouncement pronounceness pronouncer pronpl pronto Pronuba pronuba pronubial pronuclear pronucleus pronumber pronunciability pronunciable pronuncial pronunciamento pronunciation pronunciative pronunciator pronunciatory pronymph pronymphal proo prooemiac prooemion prooemium proof proofer proofful proofing proofless prooflessly proofness proofread proofreader proofreading proofroom proofy prop propadiene propaedeutic propaedeutical propaedeutics propagability propagable propagableness propagand propaganda propagandic propagandism propagandist propagandistic propagandistically propagandize propagate propagation propagational propagative propagator propagatory propagatress propago propagulum propale propalinal propane propanedicarboxylic propanol propanone propapist proparasceve propargyl propargylic Proparia proparian proparliamental proparoxytone proparoxytonic proparticipation propatagial propatagian propatagium propatriotic propatriotism propatronage propayment propellable propellant propellent propeller propelment propend propendent propene propenoic propense propensely propenseness propension propensitude propensity propenyl propenylic proper properispome properispomenon properitoneal properly properness propertied property propertyless propertyship propessimism propessimist prophase prophasis prophecy prophecymonger prophesiable prophesier prophesy prophet prophetess prophethood prophetic prophetical propheticality prophetically propheticalness propheticism propheticly prophetism prophetize prophetless prophetlike prophetry prophetship prophilosophical prophloem prophoric prophototropic prophototropism prophylactic prophylactical prophylactically prophylaxis prophylaxy prophyll prophyllum propination propine propinoic propinquant propinque propinquity propinquous propiolaldehyde propiolate propiolic propionate propione Propionibacterieae Propionibacterium propionic propionitril propionitrile propionyl Propithecus propitiable propitial propitiate propitiatingly propitiation propitiative propitiator propitiatorily propitiatory propitious propitiously propitiousness proplasm proplasma proplastic propless propleural propleuron proplex proplexus Propliopithecus propodeal propodeon propodeum propodial propodiale propodite propoditic propodium propolis propolitical propolization propolize propone proponement proponent proponer propons Propontic propooling propopery proportion proportionability proportionable proportionableness proportionably proportional proportionalism proportionality proportionally proportionate proportionately proportionateness proportioned proportioner proportionless proportionment proposable proposal proposant propose proposer proposition propositional propositionally propositionize propositus propound propounder propoundment propoxy proppage propper propraetor propraetorial propraetorian proprecedent propriation proprietage proprietarian proprietariat proprietarily proprietary proprietor proprietorial proprietorially proprietorship proprietory proprietous proprietress proprietrix propriety proprioception proprioceptive proprioceptor propriospinal proprium proprivilege proproctor proprofit proprovincial proprovost props propterygial propterygium proptosed proptosis propublication propublicity propugnacled propugnaculum propugnation propugnator propugner propulsation propulsatory propulsion propulsity propulsive propulsor propulsory propunishment propupa propupal propurchase Propus propwood propygidium propyl propylacetic propylaeum propylamine propylation propylene propylic propylidene propylite propylitic propylitization propylon propyne propynoic proquaestor proracing prorailroad prorata proratable prorate proration prore proreader prorealism prorealist prorealistic proreality prorean prorebate prorebel prorecall proreciprocation prorecognition proreconciliation prorector prorectorate proredemption proreduction proreferendum proreform proreformist proregent prorelease Proreptilia proreptilian proreption prorepublican proresearch proreservationist proresignation prorestoration prorestriction prorevision prorevisionist prorevolution prorevolutionary prorevolutionist prorhinal Prorhipidoglossomorpha proritual proritualistic prorogate prorogation prorogator prorogue proroguer proromance proromantic proromanticism proroyal proroyalty prorrhesis prorsad prorsal proruption prosabbath prosabbatical prosacral prosaic prosaical prosaically prosaicalness prosaicism prosaicness prosaism prosaist prosar Prosarthri prosateur proscapula proscapular proscenium proscholastic proschool proscientific proscolecine proscolex proscribable proscribe proscriber proscript proscription proscriptional proscriptionist proscriptive proscriptively proscriptiveness proscutellar proscutellum proscynemata prose prosecrecy prosecretin prosect prosection prosector prosectorial prosectorium prosectorship prosecutable prosecute prosecution prosecutor prosecutrix proselenic proselike proselyte proselyter proselytical proselytingly proselytism proselytist proselytistic proselytization proselytize proselytizer proseman proseminar proseminary proseminate prosemination prosencephalic prosencephalon prosenchyma prosenchymatous proseneschal proser Proserpinaca prosethmoid proseucha proseuche prosification prosifier prosify prosiliency prosilient prosiliently prosilverite prosily Prosimiae prosimian prosiness prosing prosingly prosiphon prosiphonal prosiphonate prosish prosist proslambanomenos proslave proslaver proslavery proslaveryism prosneusis proso prosobranch Prosobranchia Prosobranchiata prosobranchiate prosocele prosodal prosode prosodemic prosodetic prosodiac prosodiacal prosodiacally prosodial prosodially prosodian prosodic prosodical prosodically prosodion prosodist prosodus prosody prosogaster prosogyrate prosogyrous prosoma prosomal prosomatic prosonomasia prosopalgia prosopalgic prosopantritis prosopectasia prosophist prosopic prosopically Prosopis prosopite Prosopium prosoplasia prosopography prosopon prosoponeuralgia prosopoplegia prosopoplegic prosopopoeia prosopopoeial prosoposchisis prosopospasm prosopotocia prosopyl prosopyle prosorus prospect prospection prospective prospectively prospectiveness prospectless prospector prospectus prospectusless prospeculation prosper prosperation prosperity prosperous prosperously prosperousness prospicience prosporangium prosport pross prossy prostatauxe prostate prostatectomy prostatelcosis prostatic prostaticovesical prostatism prostatitic prostatitis prostatocystitis prostatocystotomy prostatodynia prostatolith prostatomegaly prostatometer prostatomyomectomy prostatorrhea prostatorrhoea prostatotomy prostatovesical prostatovesiculectomy prostatovesiculitis prostemmate prostemmatic prosternal prosternate prosternum prostheca prosthenic prosthesis prosthetic prosthetically prosthetics prosthetist prosthion prosthionic prosthodontia prosthodontist Prostigmin prostitute prostitutely prostitution prostitutor prostomial prostomiate prostomium prostrate prostration prostrative prostrator prostrike prostyle prostylos prosubmission prosubscription prosubstantive prosubstitution prosuffrage prosupervision prosupport prosurgical prosurrender prosy prosyllogism prosyndicalism prosyndicalist protactic protactinium protagon protagonism protagonist Protagorean Protagoreanism protalbumose protamine protandric protandrism protandrous protandrously protandry protanomal protanomalous protanope protanopia protanopic protargentum protargin Protargol protariff protarsal protarsus protasis protaspis protatic protatically protax protaxation protaxial protaxis prote Protea protea Proteaceae proteaceous protead protean proteanly proteanwise protease protechnical protect protectant protectible protecting protectingly protectingness protection protectional protectionate protectionism protectionist protectionize protectionship protective protectively protectiveness Protectograph protector protectoral protectorate protectorial protectorian protectorless protectorship protectory protectress protectrix protege protegee protegulum proteic Proteida Proteidae proteide proteidean proteidogenous proteiform protein proteinaceous proteinase proteinic proteinochromogen proteinous proteinuria Proteles Protelidae Protelytroptera protelytropteran protelytropteron protelytropterous protemperance protempirical protemporaneous protend protension protensity protensive protensively proteoclastic proteogenous proteolysis proteolytic proteopectic proteopexic proteopexis proteopexy proteosaurid Proteosauridae Proteosaurus proteose Proteosoma proteosomal proteosome proteosuria protephemeroid Protephemeroidea proterandrous proterandrousness proterandry proteranthous proterobase proteroglyph Proteroglypha proteroglyphic proteroglyphous proterogynous proterogyny proterothesis proterotype Proterozoic protervity protest protestable protestancy protestant Protestantish Protestantishly protestantism Protestantize Protestantlike Protestantly protestation protestator protestatory protester protestingly protestive protestor protetrarch Proteus protevangel protevangelion protevangelium protext prothalamia prothalamion prothalamium prothallia prothallial prothallic prothalline prothallium prothalloid prothallus protheatrical protheca prothesis prothetic prothetical prothetically prothonotarial prothonotariat prothonotary prothonotaryship prothoracic prothorax prothrift prothrombin prothrombogen prothyl prothysteron protide protiodide protist Protista protistan protistic protistological protistologist protistology protiston Protium protium proto protoactinium protoalbumose protoamphibian protoanthropic protoapostate protoarchitect Protoascales Protoascomycetes protobacco Protobasidii Protobasidiomycetes protobasidiomycetous protobasidium protobishop protoblast protoblastic protoblattoid Protoblattoidea Protobranchia Protobranchiata protobranchiate protocalcium protocanonical Protocaris protocaseose protocatechualdehyde protocatechuic Protoceras Protoceratidae Protoceratops protocercal protocerebral protocerebrum protochemist protochemistry protochloride protochlorophyll Protochorda Protochordata protochordate protochromium protochronicler protocitizen protoclastic protocneme Protococcaceae protococcaceous protococcal Protococcales protococcoid Protococcus protocol protocolar protocolary Protocoleoptera protocoleopteran protocoleopteron protocoleopterous protocolist protocolization protocolize protoconch protoconchal protocone protoconid protoconule protoconulid protocopper protocorm protodeacon protoderm protodevil Protodonata protodonatan protodonate protodont Protodonta protodramatic protodynastic protoelastose protoepiphyte protoforaminifer protoforester protogaster protogelatose protogenal protogenes protogenesis protogenetic protogenic protogenist Protogeometric protogine protoglobulose protogod protogonous protogospel protograph protogynous protogyny protohematoblast Protohemiptera protohemipteran protohemipteron protohemipterous protoheresiarch Protohippus protohistorian protohistoric protohistory protohomo protohuman Protohydra protohydrogen Protohymenoptera protohymenopteran protohymenopteron protohymenopterous protoiron protoleration protoleucocyte protoleukocyte protolithic protoliturgic protolog protologist protoloph protoma protomagister protomagnate protomagnesium protomala protomalal protomalar protomammal protomammalian protomanganese protomartyr Protomastigida protome protomeristem protomerite protomeritic protometal protometallic protometaphrast Protominobacter Protomonadina protomonostelic protomorph protomorphic Protomycetales protomyosinose proton protone protonegroid protonema protonemal protonematal protonematoid protoneme Protonemertini protonephridial protonephridium protonephros protoneuron protoneurone protonic protonickel protonitrate protonotater protonym protonymph protonymphal protopapas protopappas protoparent protopathia protopathic protopathy protopatriarchal protopatrician protopattern protopectin protopectinase protopepsia Protoperlaria protoperlarian protophilosophic protophloem protophyll Protophyta protophyte protophytic protopin protopine protoplasm protoplasma protoplasmal protoplasmatic protoplasmic protoplast protoplastic protopod protopodial protopodite protopoditic protopoetic protopope protoporphyrin protopragmatic protopresbyter protopresbytery protoprism protoproteose protoprotestant protopteran Protopteridae protopteridophyte protopterous Protopterus protopyramid protore protorebel protoreligious protoreptilian Protorohippus protorosaur Protorosauria protorosaurian Protorosauridae protorosauroid Protorosaurus Protorthoptera protorthopteran protorthopteron protorthopterous protosalt protosaurian protoscientific Protoselachii protosilicate protosilicon protosinner Protosiphon Protosiphonaceae protosiphonaceous protosocial protosolution protospasm Protosphargis Protospondyli protospore Protostega Protostegidae protostele protostelic protostome protostrontium protosulphate protosulphide protosyntonose prototaxites prototheca protothecal prototheme protothere Prototheria prototherian prototitanium Prototracheata prototraitor prototroch prototrochal prototrophic prototypal prototype prototypic prototypical prototypically prototypographer prototyrant protovanadium protoveratrine protovertebra protovertebral protovestiary protovillain protovum protoxide protoxylem Protozoa protozoacidal protozoacide protozoal protozoan protozoea protozoean protozoiasis protozoic protozoological protozoologist protozoology protozoon protozoonal Protracheata protracheate protract protracted protractedly protractedness protracter protractible protractile protractility protraction protractive protractor protrade protradition protraditional protragedy protragical protragie protransfer protranslation protransubstantiation protravel protreasurer protreaty Protremata protreptic protreptical protriaene protropical protrudable protrude protrudent protrusible protrusile protrusion protrusive protrusively protrusiveness protuberance protuberancy protuberant protuberantial protuberantly protuberantness protuberate protuberosity protuberous Protura proturan protutor protutory protyl protyle Protylopus protype proudful proudhearted proudish proudishly proudling proudly proudness prouniformity prounion prounionist prouniversity proustite provability provable provableness provably provaccinist provand provant provascular prove provect provection proved proveditor provedly provedor provedore proven provenance Provencal Provencalize Provence Provencial provender provenience provenient provenly proventricular proventricule proventriculus prover proverb proverbial proverbialism proverbialist proverbialize proverbially proverbic proverbiologist proverbiology proverbize proverblike provicar provicariate providable providance provide provided providence provident providential providentialism providentially providently providentness provider providing providore providoring province provincial provincialate provincialism provincialist provinciality provincialization provincialize provincially provincialship provinciate provinculum provine proving provingly provision provisional provisionality provisionally provisionalness provisionary provisioner provisioneress provisionless provisionment provisive proviso provisor provisorily provisorship provisory provitamin provivisection provivisectionist provocant provocation provocational provocative provocatively provocativeness provocator provocatory provokable provoke provokee provoker provoking provokingly provokingness provolunteering provost provostal provostess provostorial provostry provostship prow prowar prowarden prowaterpower prowed prowersite prowess prowessed prowessful prowl prowler prowling prowlingly proxenet proxenete proxenetism proxenos proxenus proxeny proxically proximad proximal proximally proximate proximately proximateness proximation proximity proximo proximobuccal proximolabial proximolingual proxy proxyship proxysm prozone prozoning prozygapophysis prozymite prude prudelike prudely Prudence prudence prudent prudential prudentialism prudentialist prudentiality prudentially prudentialness prudently prudery prudish prudishly prudishness prudist prudity Prudy Prue pruh pruinate pruinescence pruinose pruinous prulaurasin prunable prunableness prunably Prunaceae prunase prunasin prune prunell Prunella prunella prunelle Prunellidae prunello pruner prunetin prunetol pruniferous pruniform pruning prunitrin prunt prunted Prunus prurience pruriency prurient pruriently pruriginous prurigo pruriousness pruritic pruritus prusiano Prussian Prussianism Prussianization Prussianize Prussianizer prussiate prussic Prussification Prussify prut prutah pry pryer prying pryingly pryingness pryler pryproof pryse prytaneum prytanis prytanize prytany psalis psalm psalmic psalmist psalmister psalmistry psalmless psalmodial psalmodic psalmodical psalmodist psalmodize psalmody psalmograph psalmographer psalmography psalmy psaloid psalter psalterial psalterian psalterion psalterist psalterium psaltery psaltes psaltress psammite psammitic psammocarcinoma psammocharid Psammocharidae psammogenous psammolithic psammologist psammology psammoma psammophile psammophilous Psammophis psammophyte psammophytic psammosarcoma psammotherapy psammous Psaronius pschent Psedera Pselaphidae Pselaphus psellism psellismus psephism psephisma psephite psephitic psephomancy Psephurus Psetta pseudaconine pseudaconitine pseudacusis pseudalveolar pseudambulacral pseudambulacrum pseudamoeboid pseudamphora pseudandry pseudangina pseudankylosis pseudaphia pseudaposematic pseudaposporous pseudapospory pseudapostle pseudarachnidan pseudarthrosis pseudataxic pseudatoll pseudaxine pseudaxis Pseudechis pseudelephant pseudelminth pseudelytron pseudembryo pseudembryonic pseudencephalic pseudencephalus pseudepigraph pseudepigrapha pseudepigraphal pseudepigraphic pseudepigraphical pseudepigraphous pseudepigraphy pseudepiploic pseudepiploon pseudepiscopacy pseudepiscopy pseudepisematic pseudesthesia pseudhalteres pseudhemal pseudimaginal pseudimago pseudisodomum pseudo pseudoacaccia pseudoacademic pseudoacademical pseudoaccidental pseudoacid pseudoaconitine pseudoacromegaly pseudoadiabatic pseudoaesthetic pseudoaffectionate pseudoalkaloid pseudoalum pseudoalveolar pseudoamateurish pseudoamatory pseudoanaphylactic pseudoanaphylaxis pseudoanatomic pseudoanatomical pseudoancestral pseudoanemia pseudoanemic pseudoangelic pseudoangina pseudoankylosis pseudoanthorine pseudoanthropoid pseudoanthropological pseudoanthropology pseudoantique pseudoapologetic pseudoapoplectic pseudoapoplexy pseudoappendicitis pseudoaquatic pseudoarchaic pseudoarchaism pseudoarchaist pseudoaristocratic pseudoarthrosis pseudoarticulation pseudoartistic pseudoascetic pseudoastringent pseudoasymmetrical pseudoasymmetry pseudoataxia pseudobacterium pseudobasidium pseudobenevolent pseudobenthonic pseudobenthos pseudobinary pseudobiological pseudoblepsia pseudoblepsis pseudobrachial pseudobrachium pseudobranch pseudobranchia pseudobranchial pseudobranchiate Pseudobranchus pseudobrookite pseudobrotherly pseudobulb pseudobulbar pseudobulbil pseudobulbous pseudobutylene pseudocandid pseudocapitulum pseudocarbamide pseudocarcinoid pseudocarp pseudocarpous pseudocartilaginous pseudocele pseudocelian pseudocelic pseudocellus pseudocentric pseudocentrous pseudocentrum Pseudoceratites pseudoceratitic pseudocercaria pseudoceryl pseudocharitable pseudochemical pseudochina pseudochromesthesia pseudochromia pseudochromosome pseudochronism pseudochronologist pseudochrysalis pseudochrysolite pseudochylous pseudocirrhosis pseudoclassic pseudoclassical pseudoclassicism pseudoclerical Pseudococcinae Pseudococcus pseudococtate pseudocollegiate pseudocolumella pseudocolumellar pseudocommissure pseudocommisural pseudocompetitive pseudoconcha pseudoconclude pseudocone pseudoconglomerate pseudoconglomeration pseudoconhydrine pseudoconjugation pseudoconservative pseudocorneous pseudocortex pseudocosta pseudocotyledon pseudocotyledonal pseudocritical pseudocroup pseudocrystalline pseudocubic pseudocultivated pseudocultural pseudocumene pseudocumenyl pseudocumidine pseudocumyl pseudocyclosis pseudocyesis pseudocyst pseudodeltidium pseudodementia pseudodemocratic pseudoderm pseudodermic pseudodiagnosis pseudodiastolic pseudodiphtheria pseudodiphtheritic pseudodipteral pseudodipterally pseudodipteros pseudodont pseudodox pseudodoxal pseudodoxy pseudodramatic pseudodysentery pseudoedema pseudoelectoral pseudoembryo pseudoembryonic pseudoemotional pseudoencephalitic pseudoenthusiastic pseudoephedrine pseudoepiscopal pseudoequalitarian pseudoerotic pseudoeroticism pseudoerysipelas pseudoerysipelatous pseudoerythrin pseudoethical pseudoetymological pseudoeugenics pseudoevangelical pseudofamous pseudofarcy pseudofeminine pseudofever pseudofeverish pseudofilaria pseudofilarian pseudofinal pseudofluctuation pseudofluorescence pseudofoliaceous pseudoform pseudofossil pseudogalena pseudoganglion pseudogaseous pseudogaster pseudogastrula pseudogeneral pseudogeneric pseudogenerous pseudogenteel pseudogenus pseudogeometry pseudogermanic pseudogeusia pseudogeustia pseudoglanders pseudoglioma pseudoglobulin pseudoglottis pseudograph pseudographeme pseudographer pseudographia pseudographize pseudography pseudograsserie Pseudogryphus pseudogyne pseudogynous pseudogyny pseudogyrate pseudohallucination pseudohallucinatory pseudohalogen pseudohemal pseudohermaphrodite pseudohermaphroditic pseudohermaphroditism pseudoheroic pseudohexagonal pseudohistoric pseudohistorical pseudoholoptic pseudohuman pseudohydrophobia pseudohyoscyamine pseudohypertrophic pseudohypertrophy pseudoidentical pseudoimpartial pseudoindependent pseudoinfluenza pseudoinsane pseudoinsoluble pseudoisatin pseudoism pseudoisomer pseudoisomeric pseudoisomerism pseudoisotropy pseudojervine pseudolabial pseudolabium pseudolalia Pseudolamellibranchia Pseudolamellibranchiata pseudolamellibranchiate pseudolaminated Pseudolarix pseudolateral pseudolatry pseudolegal pseudolegendary pseudoleucite pseudoleucocyte pseudoleukemia pseudoleukemic pseudoliberal pseudolichen pseudolinguistic pseudoliterary pseudolobar pseudological pseudologically pseudologist pseudologue pseudology pseudolunule pseudomalachite pseudomalaria pseudomancy pseudomania pseudomaniac pseudomantic pseudomantist pseudomasculine pseudomedical pseudomedieval pseudomelanosis pseudomembrane pseudomembranous pseudomeningitis pseudomenstruation pseudomer pseudomeric pseudomerism pseudomery pseudometallic pseudometameric pseudometamerism pseudomica pseudomilitarist pseudomilitaristic pseudomilitary pseudoministerial pseudomiraculous pseudomitotic pseudomnesia pseudomodern pseudomodest Pseudomonas pseudomonastic pseudomonoclinic pseudomonocotyledonous pseudomonocyclic pseudomonotropy pseudomoral pseudomorph pseudomorphia pseudomorphic pseudomorphine pseudomorphism pseudomorphose pseudomorphosis pseudomorphous pseudomorula pseudomorular pseudomucin pseudomucoid pseudomultilocular pseudomultiseptate pseudomythical pseudonarcotic pseudonational pseudonavicella pseudonavicellar pseudonavicula pseudonavicular pseudoneuropter Pseudoneuroptera pseudoneuropteran pseudoneuropterous pseudonitrole pseudonitrosite pseudonuclein pseudonucleolus pseudonychium pseudonym pseudonymal pseudonymic pseudonymity pseudonymous pseudonymously pseudonymousness pseudonymuncle pseudonymuncule pseudopapaverine pseudoparalysis pseudoparalytic pseudoparaplegia pseudoparasitic pseudoparasitism pseudoparenchyma pseudoparenchymatous pseudoparenchyme pseudoparesis pseudoparthenogenesis pseudopatriotic pseudopediform pseudopelletierine pseudopercular pseudoperculate pseudoperculum pseudoperianth pseudoperidium pseudoperiodic pseudoperipteral pseudopermanent pseudoperoxide pseudoperspective Pseudopeziza pseudophallic pseudophellandrene pseudophenanthrene pseudophenanthroline pseudophenocryst pseudophilanthropic pseudophilosophical Pseudophoenix pseudopionnotes pseudopious pseudoplasm pseudoplasma pseudoplasmodium pseudopneumonia pseudopod pseudopodal pseudopodia pseudopodial pseudopodian pseudopodiospore pseudopodium pseudopoetic pseudopoetical pseudopolitic pseudopolitical pseudopopular pseudopore pseudoporphyritic pseudopregnancy pseudopregnant pseudopriestly pseudoprimitive pseudoprimitivism pseudoprincely pseudoproboscis pseudoprofessional pseudoprofessorial pseudoprophetic pseudoprophetical pseudoprosperous pseudopsia pseudopsychological pseudoptics pseudoptosis pseudopupa pseudopupal pseudopurpurin pseudopyriform pseudoquinol pseudorabies pseudoracemic pseudoracemism pseudoramose pseudoramulus pseudorealistic pseudoreduction pseudoreformed pseudoregal pseudoreligious pseudoreminiscence pseudorganic pseudorheumatic pseudorhombohedral pseudoromantic pseudorunic pseudosacred pseudosacrilegious pseudosalt pseudosatirical pseudoscarlatina Pseudoscarus pseudoscholarly pseudoscholastic pseudoscientific Pseudoscines pseudoscinine pseudosclerosis pseudoscope pseudoscopic pseudoscopically pseudoscopy pseudoscorpion Pseudoscorpiones Pseudoscorpionida pseudoscutum pseudosematic pseudosensational pseudoseptate pseudoservile pseudosessile pseudosiphonal pseudosiphuncal pseudoskeletal pseudoskeleton pseudoskink pseudosmia pseudosocial pseudosocialistic pseudosolution pseudosoph pseudosopher pseudosophical pseudosophist pseudosophy pseudospectral pseudosperm pseudospermic pseudospermium pseudospermous pseudosphere pseudospherical pseudospiracle pseudospiritual pseudosporangium pseudospore pseudosquamate pseudostalactite pseudostalactitical pseudostalagmite pseudostalagmitical pseudostereoscope pseudostereoscopic pseudostereoscopism pseudostigma pseudostigmatic pseudostoma pseudostomatous pseudostomous pseudostratum pseudosubtle Pseudosuchia pseudosuchian pseudosweating pseudosyllogism pseudosymmetric pseudosymmetrical pseudosymmetry pseudosymptomatic pseudosyphilis pseudosyphilitic pseudotabes pseudotachylite pseudotetanus pseudotetragonal Pseudotetramera pseudotetrameral pseudotetramerous pseudotrachea pseudotracheal pseudotribal pseudotributary Pseudotrimera pseudotrimeral pseudotrimerous pseudotropine Pseudotsuga pseudotubercular pseudotuberculosis pseudotuberculous pseudoturbinal pseudotyphoid pseudoval pseudovarian pseudovary pseudovelar pseudovelum pseudoventricle pseudoviaduct pseudoviperine pseudoviscosity pseudoviscous pseudovolcanic pseudovolcano pseudovum pseudowhorl pseudoxanthine pseudoyohimbine pseudozealot pseudozoea pseudozoogloeal psha Pshav pshaw psi Psidium psilanthropic psilanthropism psilanthropist psilanthropy psiloceran Psiloceras psiloceratan psiloceratid Psiloceratidae psiloi psilology psilomelane psilomelanic Psilophytales psilophyte Psilophyton psilosis psilosopher psilosophy Psilotaceae psilotaceous psilothrum psilotic Psilotum psithurism Psithyrus psittaceous psittaceously Psittaci Psittacidae Psittaciformes Psittacinae psittacine psittacinite psittacism psittacistic Psittacomorphae psittacomorphic psittacosis Psittacus psoadic psoas psoatic psocid Psocidae psocine psoitis psomophagic psomophagist psomophagy psora Psoralea psoriasic psoriasiform psoriasis psoriatic psoriatiform psoric psoroid Psorophora psorophthalmia psorophthalmic Psoroptes psoroptic psorosis psorosperm psorospermial psorospermiasis psorospermic psorospermiform psorospermosis psorous pssimistical pst psych psychagogic psychagogos psychagogue psychagogy psychal psychalgia psychanalysis psychanalysist psychanalytic psychasthenia psychasthenic Psyche psyche Psychean psycheometry psychesthesia psychesthetic psychiasis psychiater psychiatria psychiatric psychiatrical psychiatrically psychiatrist psychiatrize psychiatry psychic psychical psychically Psychichthys psychicism psychicist psychics psychid Psychidae psychism psychist psychoanalysis psychoanalyst psychoanalytic psychoanalytical psychoanalytically psychoanalyze psychoanalyzer psychoautomatic psychobiochemistry psychobiologic psychobiological psychobiology psychobiotic psychocatharsis psychoclinic psychoclinical psychoclinicist Psychoda psychodiagnostics Psychodidae psychodispositional psychodrama psychodynamic psychodynamics psychoeducational psychoepilepsy psychoethical psychofugal psychogalvanic psychogalvanometer psychogenesis psychogenetic psychogenetical psychogenetically psychogenetics psychogenic psychogeny psychognosis psychognostic psychognosy psychogonic psychogonical psychogony psychogram psychograph psychographer psychographic psychographist psychography psychoid psychokinesia psychokinesis psychokinetic psychokyme psycholepsy psycholeptic psychologer psychologian psychologic psychological psychologically psychologics psychologism psychologist psychologize psychologue psychology psychomachy psychomancy psychomantic psychometer psychometric psychometrical psychometrically psychometrician psychometrics psychometrist psychometrize psychometry psychomonism psychomoral psychomorphic psychomorphism psychomotility psychomotor psychon psychoneural psychoneurological psychoneurosis psychoneurotic psychonomic psychonomics psychonomy psychony psychoorganic psychopannychian psychopannychism psychopannychist psychopannychistic psychopannychy psychopanychite psychopath psychopathia psychopathic psychopathist psychopathologic psychopathological psychopathologist psychopathy psychopetal psychophobia psychophysic psychophysical psychophysically psychophysicist psychophysics psychophysiologic psychophysiological psychophysiologically psychophysiologist psychophysiology psychoplasm psychopomp psychopompos psychorealism psychorealist psychorealistic psychoreflex psychorhythm psychorhythmia psychorhythmic psychorhythmical psychorhythmically psychorrhagic psychorrhagy psychosarcous psychosensorial psychosensory psychoses psychosexual psychosexuality psychosexually psychosis psychosocial psychosomatic psychosomatics psychosome psychosophy psychostasy psychostatic psychostatical psychostatically psychostatics psychosurgeon psychosurgery psychosynthesis psychosynthetic psychotaxis psychotechnical psychotechnician psychotechnics psychotechnological psychotechnology psychotheism psychotherapeutic psychotherapeutical psychotherapeutics psychotherapeutist psychotherapist psychotherapy psychotic Psychotria psychotrine psychovital Psychozoic psychroesthesia psychrograph psychrometer psychrometric psychrometrical psychrometry psychrophile psychrophilic psychrophobia psychrophore psychrophyte psychurgy psykter Psylla psylla psyllid Psyllidae psyllium ptarmic Ptarmica ptarmical ptarmigan Ptelea Ptenoglossa ptenoglossate Pteranodon pteranodont Pteranodontidae pteraspid Pteraspidae Pteraspis ptereal pterergate Pterian pteric Pterichthyodes Pterichthys pterideous pteridium pteridography pteridoid pteridological pteridologist pteridology pteridophilism pteridophilist pteridophilistic Pteridophyta pteridophyte pteridophytic pteridophytous pteridosperm Pteridospermae Pteridospermaphyta pteridospermaphytic pteridospermous pterion Pteris Pterobranchia pterobranchiate pterocarpous Pterocarpus Pterocarya Pterocaulon Pterocera Pteroceras Pterocles Pterocletes Pteroclidae Pteroclomorphae pteroclomorphic pterodactyl Pterodactyli pterodactylian pterodactylic pterodactylid Pterodactylidae pterodactyloid pterodactylous Pterodactylus pterographer pterographic pterographical pterography pteroid pteroma pteromalid Pteromalidae Pteromys pteropaedes pteropaedic pteropegal pteropegous pteropegum pterophorid Pterophoridae Pterophorus Pterophryne pteropid Pteropidae pteropine pteropod Pteropoda pteropodal pteropodan pteropodial Pteropodidae pteropodium pteropodous Pteropsida Pteropus pterosaur Pterosauri Pterosauria pterosaurian pterospermous Pterospora Pterostemon Pterostemonaceae pterostigma pterostigmal pterostigmatic pterostigmatical pterotheca pterothorax pterotic pteroylglutamic pterygial pterygiophore pterygium pterygobranchiate pterygode pterygodum Pterygogenea pterygoid pterygoidal pterygoidean pterygomalar pterygomandibular pterygomaxillary pterygopalatal pterygopalatine pterygopharyngeal pterygopharyngean pterygophore pterygopodium pterygoquadrate pterygosphenoid pterygospinous pterygostaphyline Pterygota pterygote pterygotous pterygotrabecular Pterygotus pteryla pterylographic pterylographical pterylography pterylological pterylology pterylosis Ptilichthyidae Ptiliidae Ptilimnium ptilinal ptilinum Ptilocercus Ptilonorhynchidae Ptilonorhynchinae ptilopaedes ptilopaedic ptilosis Ptilota ptinid Ptinidae ptinoid Ptinus ptisan ptochocracy ptochogony ptochology Ptolemaean Ptolemaian Ptolemaic Ptolemaical Ptolemaism Ptolemaist Ptolemean Ptolemy ptomain ptomaine ptomainic ptomatropine ptosis ptotic ptyalagogic ptyalagogue ptyalectasis ptyalin ptyalism ptyalize ptyalocele ptyalogenic ptyalolith ptyalolithiasis ptyalorrhea Ptychoparia ptychoparid ptychopariid ptychopterygial ptychopterygium Ptychosperma ptysmagogue ptyxis pu pua puan pub pubal pubble puberal pubertal pubertic puberty puberulent puberulous pubes pubescence pubescency pubescent pubian pubic pubigerous pubiotomy pubis public Publican publican publicanism publication publichearted publicheartedness publicism publicist publicity publicize publicly publicness Publilian publish publishable publisher publisheress publishership publishment pubococcygeal pubofemoral puboiliac puboischiac puboischial puboischiatic puboprostatic puborectalis pubotibial pubourethral pubovesical Puccinia Pucciniaceae pucciniaceous puccinoid puccoon puce pucelage pucellas pucelle Puchanahua pucherite puchero puck pucka puckball pucker puckerbush puckerel puckerer puckermouth puckery puckfist puckish puckishly puckishness puckle pucklike puckling puckneedle puckrel puckster pud puddee puddening pudder pudding puddingberry puddinghead puddingheaded puddinghouse puddinglike puddingwife puddingy puddle puddled puddlelike puddler puddling puddly puddock puddy pudency pudenda pudendal pudendous pudendum pudent pudge pudgily pudginess pudgy pudiano pudibund pudibundity pudic pudical pudicitia pudicity pudsey pudsy Pudu pudu pueblito Pueblo pueblo Puebloan puebloization puebloize Puelche Puelchean Pueraria puerer puericulture puerile puerilely puerileness puerilism puerility puerman puerpera puerperal puerperalism puerperant puerperium puerperous puerpery puff puffback puffball puffbird puffed puffer puffery puffily puffin puffiness puffinet puffing puffingly Puffinus pufflet puffwig puffy pug pugged pugger puggi pugginess pugging puggish puggle puggree puggy pugh pugil pugilant pugilism pugilist pugilistic pugilistical pugilistically puglianite pugman pugmill pugmiller pugnacious pugnaciously pugnaciousness pugnacity Puinavi Puinavian Puinavis puisne puissance puissant puissantly puissantness puist puistie puja Pujunan puka pukatea pukateine puke pukeko puker pukeweed Pukhtun pukish pukishness pukras puku puky pul pulahan pulahanism pulasan pulaskite Pulaya Pulayan pulchrify pulchritude pulchritudinous pule pulegol pulegone puler Pulex pulghere puli Pulian pulicarious pulicat pulicene pulicid Pulicidae pulicidal pulicide pulicine pulicoid pulicose pulicosity pulicous puling pulingly pulish pulk pulka pull pullable pullback pullboat pulldevil pulldoo pulldown pulldrive pullen puller pullery pullet pulley pulleyless pulli Pullman Pullmanize pullorum pullulant pullulate pullulation pullus pulmobranchia pulmobranchial pulmobranchiate pulmocardiac pulmocutaneous pulmogastric pulmometer pulmometry pulmonal pulmonar Pulmonaria pulmonarian pulmonary Pulmonata pulmonate pulmonated pulmonectomy pulmonic pulmonifer Pulmonifera pulmoniferous pulmonitis Pulmotor pulmotracheal Pulmotrachearia pulmotracheary pulmotracheate pulp pulpaceous pulpal pulpalgia pulpamenta pulpboard pulpectomy pulpefaction pulper pulpifier pulpify pulpily pulpiness pulpit pulpital pulpitarian pulpiteer pulpiter pulpitful pulpitic pulpitical pulpitically pulpitis pulpitish pulpitism pulpitize pulpitless pulpitly pulpitolatry pulpitry pulpless pulplike pulpotomy pulpous pulpousness pulpstone pulpwood pulpy pulque pulsant pulsatance pulsate pulsatile pulsatility Pulsatilla pulsation pulsational pulsative pulsatively pulsator pulsatory pulse pulseless pulselessly pulselessness pulselike pulsellum pulsidge pulsific pulsimeter pulsion pulsive pulsojet pulsometer pultaceous pulton pulu pulveraceous pulverant pulverate pulveration pulvereous pulverin pulverizable pulverizate pulverization pulverizator pulverize pulverizer pulverous pulverulence pulverulent pulverulently pulvic pulvil pulvillar pulvilliform pulvillus pulvinar Pulvinaria pulvinarian pulvinate pulvinated pulvinately pulvination pulvinic pulviniform pulvino pulvinule pulvinulus pulvinus pulviplume pulwar puly puma Pume pumicate pumice pumiced pumiceous pumicer pumiciform pumicose pummel pummice pump pumpable pumpage pumpellyite pumper pumpernickel pumpkin pumpkinification pumpkinify pumpkinish pumpkinity pumple pumpless pumplike pumpman pumpsman pumpwright pun puna punaise punalua punaluan Punan punatoo punch punchable punchboard puncheon puncher punchinello punching punchless punchlike punchproof punchy punct punctal punctate punctated punctation punctator puncticular puncticulate puncticulose punctiform punctiliar punctilio punctiliomonger punctiliosity punctilious punctiliously punctiliousness punctist punctographic punctual punctualist punctuality punctually punctualness punctuate punctuation punctuational punctuationist punctuative punctuator punctuist punctulate punctulated punctulation punctule punctulum punctum puncturation puncture punctured punctureless punctureproof puncturer pundigrion pundit pundita punditic punditically punditry pundonor pundum puneca pung punga pungapung pungar pungence pungency pungent pungently punger pungey pungi pungle pungled Punic Punica Punicaceae punicaceous puniceous punicial punicin punicine punily puniness punish punishability punishable punishableness punishably punisher punishment punishmentproof punition punitional punitionally punitive punitively punitiveness punitory Punjabi punjum punk punkah punketto punkie punkwood punky punless punlet punnable punnage punner punnet punnic punnical punnigram punningly punnology Puno punproof punster punstress punt punta puntabout puntal puntel punter punti puntil puntist Puntlatsh punto puntout puntsman punty puny punyish punyism pup pupa pupahood pupal puparial puparium pupate pupation pupelo Pupidae pupiferous pupiform pupigenous pupigerous pupil pupilability pupilage pupilar pupilate pupildom pupiled pupilize pupillarity pupillary pupilless Pupillidae pupillometer pupillometry pupilloscope pupilloscoptic pupilloscopy Pupipara pupiparous Pupivora pupivore pupivorous pupoid puppet puppetdom puppeteer puppethood puppetish puppetism puppetize puppetlike puppetly puppetman puppetmaster puppetry puppify puppily Puppis puppy puppydom puppyfish puppyfoot puppyhood puppyish puppyism puppylike puppysnatch pupulo Pupuluca pupunha Puquina Puquinan pur purana puranic puraque Purasati Purbeck Purbeckian purblind purblindly purblindness purchasability purchasable purchase purchaser purchasery purdah purdy pure pureblood purebred pured puree purehearted purely pureness purer purfle purfled purfler purfling purfly purga purgation purgative purgatively purgatorial purgatorian purgatory purge purgeable purger purgery purging purificant purification purificative purificator purificatory purifier puriform purify purine puriri purism purist puristic puristical Puritan puritandom Puritaness puritanic puritanical puritanically puritanicalness Puritanism puritanism Puritanize Puritanizer puritanlike Puritanly puritano purity Purkinje Purkinjean purl purler purlhouse purlicue purlieu purlieuman purlin purlman purloin purloiner purohepatitis purolymph puromucous purpart purparty purple purplelip purplely purpleness purplescent purplewood purplewort purplish purplishness purply purport purportless purpose purposedly purposeful purposefully purposefulness purposeless purposelessly purposelessness purposelike purposely purposer purposive purposively purposiveness purposivism purposivist purposivistic purpresture purpura purpuraceous purpurate purpure purpureal purpurean purpureous purpurescent purpuric purpuriferous purpuriform purpurigenous purpurin purpurine purpuriparous purpurite purpurize purpurogallin purpurogenous purpuroid purpuroxanthin purr purre purree purreic purrel purrer purring purringly purrone purry purse pursed purseful purseless purselike purser pursership Purshia pursily pursiness purslane purslet pursley pursuable pursual pursuance pursuant pursuantly pursue pursuer pursuit pursuitmeter pursuivant pursy purtenance Puru Puruha purulence purulency purulent purulently puruloid Purupuru purusha purushartha purvey purveyable purveyal purveyance purveyancer purveyor purveyoress purview purvoe purwannah pus Puschkinia Puseyism Puseyistical Puseyite push pushball pushcart pusher pushful pushfully pushfulness pushing pushingly pushingness pushmobile pushover pushpin Pushtu pushwainling pusillanimity pusillanimous pusillanimously pusillanimousness puss pusscat pussley pusslike pussy pussycat pussyfoot pussyfooted pussyfooter pussyfooting pussyfootism pussytoe pustulant pustular pustulate pustulated pustulation pustulatous pustule pustuled pustulelike pustuliform pustulose pustulous put putage putamen putaminous putanism putation putationary putative putatively putback putchen putcher puteal putelee puther puthery putid putidly putidness putlog putois Putorius putredinal putredinous putrefacient putrefactible putrefaction putrefactive putrefactiveness putrefiable putrefier putrefy putresce putrescence putrescency putrescent putrescibility putrescible putrescine putricide putrid putridity putridly putridness putrifacted putriform putrilage putrilaginous putrilaginously putschism putschist putt puttee putter putterer putteringly puttier puttock putty puttyblower puttyhead puttyhearted puttylike puttyroot puttywork puture puxy Puya Puyallup puzzle puzzleation puzzled puzzledly puzzledness puzzledom puzzlehead puzzleheaded puzzleheadedly puzzleheadedness puzzleman puzzlement puzzlepate puzzlepated puzzlepatedness puzzler puzzling puzzlingly puzzlingness pya pyal pyarthrosis pyche Pycnanthemum pycnia pycnial pycnid pycnidia pycnidial pycnidiophore pycnidiospore pycnidium pycniospore pycnite pycnium Pycnocoma pycnoconidium pycnodont Pycnodonti Pycnodontidae pycnodontoid Pycnodus pycnogonid Pycnogonida pycnogonidium pycnogonoid pycnometer pycnometochia pycnometochic pycnomorphic pycnomorphous Pycnonotidae Pycnonotinae pycnonotine Pycnonotus pycnosis pycnospore pycnosporic pycnostyle pycnotic pyelectasis pyelic pyelitic pyelitis pyelocystitis pyelogram pyelograph pyelographic pyelography pyelolithotomy pyelometry pyelonephritic pyelonephritis pyelonephrosis pyeloplasty pyeloscopy pyelotomy pyeloureterogram pyemesis pyemia pyemic pygal pygalgia pygarg pygargus pygidial pygidid Pygididae Pygidium pygidium pygmaean Pygmalion pygmoid Pygmy pygmy pygmydom pygmyhood pygmyish pygmyism pygmyship pygmyweed Pygobranchia Pygobranchiata pygobranchiate pygofer pygopagus pygopod Pygopodes Pygopodidae pygopodine pygopodous Pygopus pygostyle pygostyled pygostylous pyic pyin pyjama pyjamaed pyke pyknatom pyknic pyknotic pyla Pylades pylagore pylangial pylangium pylar pylephlebitic pylephlebitis pylethrombophlebitis pylethrombosis pylic pylon pyloralgia pylorectomy pyloric pyloristenosis pyloritis pylorocleisis pylorodilator pylorogastrectomy pyloroplasty pyloroptosis pyloroschesis pyloroscirrhus pyloroscopy pylorospasm pylorostenosis pylorostomy pylorus pyobacillosis pyocele pyoctanin pyocyanase pyocyanin pyocyst pyocyte pyodermatitis pyodermatosis pyodermia pyodermic pyogenesis pyogenetic pyogenic pyogenin pyogenous pyohemothorax pyoid pyolabyrinthitis pyolymph pyometra pyometritis pyonephritis pyonephrosis pyonephrotic pyopericarditis pyopericardium pyoperitoneum pyoperitonitis pyophagia pyophthalmia pyophylactic pyoplania pyopneumocholecystitis pyopneumocyst pyopneumopericardium pyopneumoperitoneum pyopneumoperitonitis pyopneumothorax pyopoiesis pyopoietic pyoptysis pyorrhea pyorrheal pyorrheic pyosalpingitis pyosalpinx pyosepticemia pyosepticemic pyosis pyospermia pyotherapy pyothorax pyotoxinemia pyoureter pyovesiculosis pyoxanthose pyr pyracanth Pyracantha Pyraceae pyracene pyral Pyrales pyralid Pyralidae pyralidan pyralidid Pyralididae pyralidiform Pyralidoidea pyralis pyraloid Pyrameis pyramid pyramidaire pyramidal pyramidale pyramidalis Pyramidalism Pyramidalist pyramidally pyramidate Pyramidella pyramidellid Pyramidellidae pyramider pyramides pyramidia pyramidic pyramidical pyramidically pyramidicalness pyramidion Pyramidist pyramidize pyramidlike pyramidoattenuate pyramidoidal pyramidologist pyramidoprismatic pyramidwise pyramoidal pyran pyranometer pyranyl pyrargyrite Pyrausta Pyraustinae pyrazine pyrazole pyrazoline pyrazolone pyrazolyl pyre pyrectic pyrena pyrene Pyrenean pyrenematous pyrenic pyrenin pyrenocarp pyrenocarpic pyrenocarpous Pyrenochaeta pyrenodean pyrenodeine pyrenodeous pyrenoid pyrenolichen Pyrenomycetales pyrenomycete Pyrenomycetes Pyrenomycetineae pyrenomycetous Pyrenopeziza pyrethrin Pyrethrum pyrethrum pyretic pyreticosis pyretogenesis pyretogenetic pyretogenic pyretogenous pyretography pyretology pyretolysis pyretotherapy pyrewinkes Pyrex pyrex pyrexia pyrexial pyrexic pyrexical pyrgeometer pyrgocephalic pyrgocephaly pyrgoidal pyrgologist pyrgom pyrheliometer pyrheliometric pyrheliometry pyrheliophor pyribole pyridazine pyridic pyridine pyridinium pyridinize pyridone pyridoxine pyridyl pyriform pyriformis pyrimidine pyrimidyl pyritaceous pyrite pyrites pyritic pyritical pyritiferous pyritization pyritize pyritohedral pyritohedron pyritoid pyritology pyritous pyro pyroacetic pyroacid pyroantimonate pyroantimonic pyroarsenate pyroarsenic pyroarsenious pyroarsenite pyrobelonite pyrobituminous pyroborate pyroboric pyrocatechin pyrocatechinol pyrocatechol pyrocatechuic pyrocellulose pyrochemical pyrochemically pyrochlore pyrochromate pyrochromic pyrocinchonic pyrocitric pyroclastic pyrocoll pyrocollodion pyrocomenic pyrocondensation pyroconductivity pyrocotton pyrocrystalline Pyrocystis Pyrodine pyroelectric pyroelectricity pyrogallate pyrogallic pyrogallol pyrogen pyrogenation pyrogenesia pyrogenesis pyrogenetic pyrogenetically pyrogenic pyrogenous pyroglutamic pyrognomic pyrognostic pyrognostics pyrograph pyrographer pyrographic pyrography pyrogravure pyroguaiacin pyroheliometer pyroid Pyrola Pyrolaceae pyrolaceous pyrolater pyrolatry pyroligneous pyrolignic pyrolignite pyrolignous pyrolite pyrollogical pyrologist pyrology pyrolusite pyrolysis pyrolytic pyrolyze pyromachy pyromagnetic pyromancer pyromancy pyromania pyromaniac pyromaniacal pyromantic pyromeconic pyromellitic pyrometallurgy pyrometamorphic pyrometamorphism pyrometer pyrometric pyrometrical pyrometrically pyrometry Pyromorphidae pyromorphism pyromorphite pyromorphous pyromotor pyromucate pyromucic pyromucyl pyronaphtha pyrone Pyronema pyronine pyronomics pyronyxis pyrope pyropen pyrophanite pyrophanous pyrophile pyrophilous pyrophobia pyrophone pyrophoric pyrophorous pyrophorus pyrophosphate pyrophosphoric pyrophosphorous pyrophotograph pyrophotography pyrophotometer pyrophyllite pyrophysalite pyropuncture pyropus pyroracemate pyroracemic pyroscope pyroscopy pyrosis pyrosmalite Pyrosoma Pyrosomatidae pyrosome Pyrosomidae pyrosomoid pyrosphere pyrostat pyrostereotype pyrostilpnite pyrosulphate pyrosulphite pyrosulphuric pyrosulphuryl pyrotantalate pyrotartaric pyrotartrate pyrotechnian pyrotechnic pyrotechnical pyrotechnically pyrotechnician pyrotechnics pyrotechnist pyrotechny pyroterebic pyrotheology Pyrotheria Pyrotherium pyrotic pyrotoxin pyrotritaric pyrotritartric pyrouric pyrovanadate pyrovanadic pyroxanthin pyroxene pyroxenic pyroxenite pyroxmangite pyroxonium pyroxyle pyroxylene pyroxylic pyroxylin Pyrrhic pyrrhic pyrrhichian pyrrhichius pyrrhicist Pyrrhocoridae Pyrrhonean Pyrrhonian Pyrrhonic Pyrrhonism Pyrrhonist Pyrrhonistic Pyrrhonize pyrrhotine pyrrhotism pyrrhotist pyrrhotite pyrrhous Pyrrhuloxia Pyrrhus pyrrodiazole pyrrol pyrrole pyrrolic pyrrolidine pyrrolidone pyrrolidyl pyrroline pyrrolylene pyrrophyllin pyrroporphyrin pyrrotriazole pyrroyl pyrryl pyrrylene Pyrula Pyrularia pyruline pyruloid Pyrus pyruvaldehyde pyruvate pyruvic pyruvil pyruvyl pyrylium Pythagorean Pythagoreanism Pythagoreanize Pythagoreanly Pythagoric Pythagorical Pythagorically Pythagorism Pythagorist Pythagorize Pythagorizer Pythia Pythiaceae Pythiacystis Pythiad Pythiambic Pythian Pythic Pythios Pythium Pythius pythogenesis pythogenetic pythogenic pythogenous python pythoness pythonic pythonical pythonid Pythonidae pythoniform Pythoninae pythonine pythonism Pythonissa pythonist pythonize pythonoid pythonomorph Pythonomorpha pythonomorphic pythonomorphous pyuria pyvuril pyx Pyxidanthera pyxidate pyxides pyxidium pyxie Pyxis pyxis Q q qasida qere qeri qintar Qoheleth qoph qua quab quabird quachil quack quackery quackhood quackish quackishly quackishness quackism quackle quacksalver quackster quacky quad quadded quaddle Quader Quadi quadmeter quadra quadrable quadragenarian quadragenarious Quadragesima quadragesimal quadragintesimal quadral quadrangle quadrangled quadrangular quadrangularly quadrangularness quadrangulate quadrans quadrant quadrantal quadrantes Quadrantid quadrantile quadrantlike quadrantly quadrat quadrate quadrated quadrateness quadratic quadratical quadratically quadratics Quadratifera quadratiferous quadratojugal quadratomandibular quadratosquamosal quadratrix quadratum quadrature quadratus quadrauricular quadrennia quadrennial quadrennially quadrennium quadriad quadrialate quadriannulate quadriarticulate quadriarticulated quadribasic quadric quadricapsular quadricapsulate quadricarinate quadricellular quadricentennial quadriceps quadrichord quadriciliate quadricinium quadricipital quadricone quadricorn quadricornous quadricostate quadricotyledonous quadricovariant quadricrescentic quadricrescentoid quadricuspid quadricuspidal quadricuspidate quadricycle quadricycler quadricyclist quadridentate quadridentated quadriderivative quadridigitate quadriennial quadriennium quadrienniumutile quadrifarious quadrifariously quadrifid quadrifilar quadrifocal quadrifoil quadrifoliate quadrifoliolate quadrifolious quadrifolium quadriform quadrifrons quadrifrontal quadrifurcate quadrifurcated quadrifurcation quadriga quadrigabled quadrigamist quadrigate quadrigatus quadrigeminal quadrigeminate quadrigeminous quadrigeminum quadrigenarious quadriglandular quadrihybrid quadrijugal quadrijugate quadrijugous quadrilaminar quadrilaminate quadrilateral quadrilaterally quadrilateralness quadrilingual quadriliteral quadrille quadrilled quadrillion quadrillionth quadrilobate quadrilobed quadrilocular quadriloculate quadrilogue quadrilogy quadrimembral quadrimetallic quadrimolecular quadrimum quadrinodal quadrinomial quadrinomical quadrinominal quadrinucleate quadrioxalate quadriparous quadripartite quadripartitely quadripartition quadripennate quadriphosphate quadriphyllous quadripinnate quadriplanar quadriplegia quadriplicate quadriplicated quadripolar quadripole quadriportico quadriporticus quadripulmonary quadriquadric quadriradiate quadrireme quadrisect quadrisection quadriseptate quadriserial quadrisetose quadrispiral quadristearate quadrisulcate quadrisulcated quadrisulphide quadrisyllabic quadrisyllabical quadrisyllable quadrisyllabous quadriternate quadritubercular quadrituberculate quadriurate quadrivalence quadrivalency quadrivalent quadrivalently quadrivalve quadrivalvular quadrivial quadrivious quadrivium quadrivoltine quadroon quadrual Quadrula quadrum Quadrumana quadrumanal quadrumane quadrumanous quadruped quadrupedal quadrupedan quadrupedant quadrupedantic quadrupedantical quadrupedate quadrupedation quadrupedism quadrupedous quadruplane quadruplator quadruple quadrupleness quadruplet quadruplex quadruplicate quadruplication quadruplicature quadruplicity quadruply quadrupole quaedam Quaequae quaesitum quaestor quaestorial quaestorian quaestorship quaestuary quaff quaffer quaffingly quag quagga quagginess quaggle quaggy quagmire quagmiry quahog quail quailberry quailery quailhead quaillike quaily quaint quaintance quaintise quaintish quaintly quaintness Quaitso quake quakeful quakeproof Quaker quaker quakerbird Quakerdom Quakeress Quakeric Quakerish Quakerishly Quakerishness Quakerism Quakerization Quakerize Quakerlet Quakerlike Quakerly Quakership Quakery quaketail quakiness quaking quakingly quaky quale qualifiable qualification qualificative qualificator qualificatory qualified qualifiedly qualifiedness qualifier qualify qualifyingly qualimeter qualitative qualitatively qualitied quality qualityless qualityship qualm qualminess qualmish qualmishly qualmishness qualmproof qualmy qualmyish qualtagh Quamasia Quamoclit quan quandary quandong quandy quannet quant quanta quantic quantical quantifiable quantifiably quantification quantifier quantify quantimeter quantitate quantitative quantitatively quantitativeness quantitied quantitive quantitively quantity quantivalence quantivalency quantivalent quantization quantize quantometer quantulum quantum Quapaw quaquaversal quaquaversally quar quarantinable quarantine quarantiner quaranty quardeel quare quarenden quarender quarentene quark quarl quarle quarred quarrel quarreled quarreler quarreling quarrelingly quarrelproof quarrelsome quarrelsomely quarrelsomeness quarriable quarried quarrier quarry quarryable quarrying quarryman quarrystone quart quartan quartane quartation quartenylic quarter quarterage quarterback quarterdeckish quartered quarterer quartering quarterization quarterland quarterly quarterman quartermaster quartermasterlike quartermastership quartern quarterpace quarters quartersaw quartersawed quarterspace quarterstaff quarterstetch quartet quartette quartetto quartful quartic quartile quartine quartiparous quarto Quartodeciman quartodecimanism quartole quartz quartzic quartziferous quartzite quartzitic quartzless quartzoid quartzose quartzous quartzy quash Quashee quashey quashy quasi quasijudicial Quasimodo quasky quassation quassative Quassia quassiin quassin quat quata quatch quatercentenary quatern quaternal quaternarian quaternarius quaternary quaternate quaternion quaternionic quaternionist quaternitarian quaternity quaters quatertenses quatorzain quatorze quatrain quatral quatrayle quatre quatrefeuille quatrefoil quatrefoiled quatrefoliated quatrible quatrin quatrino quatrocentism quatrocentist quatrocento Quatsino quattie quattrini quatuor quatuorvirate quauk quave quaver quaverer quavering quaveringly quaverous quavery quaverymavery quaw quawk quay quayage quayful quaylike quayman quayside quaysider qubba queach queachy queak queal quean queanish queasily queasiness queasom queasy quebrachamine quebrachine quebrachitol quebracho quebradilla Quechua Quechuan quedful queechy queen queencake queencraft queencup queendom queenfish queenhood queening queenite queenless queenlet queenlike queenliness queenly queenright queenroot queensberry queenship queenweed queenwood queer queerer queerish queerishness queerity queerly queerness queersome queery queest queesting queet queeve quegh quei queintise quelch Quelea quell queller quemado queme quemeful quemefully quemely quench quenchable quenchableness quencher quenchless quenchlessly quenchlessness quenelle quenselite quercetagetin quercetic quercetin quercetum quercic Querciflorae quercimeritrin quercin quercine quercinic quercitannic quercitannin quercite quercitin quercitol quercitrin quercitron quercivorous Quercus Querecho Querendi Querendy querent Queres querier queriman querimonious querimoniously querimoniousness querimony querist querken querl quern quernal Quernales quernstone querulent querulential querulist querulity querulosity querulous querulously querulousness query querying queryingly queryist quesited quesitive quest quester questeur questful questingly question questionability questionable questionableness questionably questionary questionee questioner questioningly questionist questionless questionlessly questionnaire questionous questionwise questman questor questorial questorship quet quetch quetenite quetzal queue quey Quiangan quiapo quib quibble quibbleproof quibbler quibblingly quiblet quica Quiche quick quickbeam quickborn quicken quickenance quickenbeam quickener quickfoot quickhatch quickhearted quickie quicklime quickly quickness quicksand quicksandy quickset quicksilver quicksilvering quicksilverish quicksilverishness quicksilvery quickstep quickthorn quickwork quid Quidae quiddative quidder Quiddist quiddit quidditative quidditatively quiddity quiddle quiddler quidnunc quiesce quiescence quiescency quiescent quiescently quiet quietable quieten quietener quieter quieting quietism quietist quietistic quietive quietlike quietly quietness quietsome quietude quietus quiff quiffing Quiina Quiinaceae quiinaceous quila quiles Quileute quilkin quill Quillagua quillai quillaic Quillaja quillaja quillback quilled quiller quillet quilleted quillfish quilling quilltail quillwork quillwort quilly quilt quilted quilter quilting Quimbaya Quimper quin quina quinacrine Quinaielt quinaldic quinaldine quinaldinic quinaldinium quinaldyl quinamicine quinamidine quinamine quinanisole quinaquina quinarian quinarius quinary quinate quinatoxine Quinault quinazoline quinazolyl quince quincentenary quincentennial quincewort quinch quincubital quincubitalism quincuncial quincuncially quincunx quincunxial quindecad quindecagon quindecangle quindecasyllabic quindecemvir quindecemvirate quindecennial quindecim quindecima quindecylic quindene quinetum quingentenary quinhydrone quinia quinible quinic quinicine quinidia quinidine quinin quinina quinine quininiazation quininic quininism quininize quiniretin quinisext quinisextine quinism quinite quinitol quinizarin quinize quink quinnat quinnet Quinnipiac quinoa quinocarbonium quinoform quinogen quinoid quinoidal quinoidation quinoidine quinol quinoline quinolinic quinolinium quinolinyl quinologist quinology quinolyl quinometry quinone quinonediimine quinonic quinonimine quinonization quinonize quinonoid quinonyl quinopyrin quinotannic quinotoxine quinova quinovatannic quinovate quinovic quinovin quinovose quinoxaline quinoxalyl quinoyl quinquagenarian quinquagenary Quinquagesima quinquagesimal quinquarticular Quinquatria Quinquatrus quinquecapsular quinquecostate quinquedentate quinquedentated quinquefarious quinquefid quinquefoliate quinquefoliated quinquefoliolate quinquegrade quinquejugous quinquelateral quinqueliteral quinquelobate quinquelobated quinquelobed quinquelocular quinqueloculine quinquenary quinquenerval quinquenerved quinquennalia quinquennia quinquenniad quinquennial quinquennialist quinquennially quinquennium quinquepartite quinquepedal quinquepedalian quinquepetaloid quinquepunctal quinquepunctate quinqueradial quinqueradiate quinquereme quinquertium quinquesect quinquesection quinqueseptate quinqueserial quinqueseriate quinquesyllabic quinquesyllable quinquetubercular quinquetuberculate quinquevalence quinquevalency quinquevalent quinquevalve quinquevalvous quinquevalvular quinqueverbal quinqueverbial quinquevir quinquevirate quinquiliteral quinquina quinquino quinse quinsied quinsy quinsyberry quinsywort quint quintad quintadena quintadene quintain quintal quintan quintant quintary quintato quinte quintelement quintennial quinternion quinteron quinteroon quintessence quintessential quintessentiality quintessentially quintessentiate quintet quintette quintetto quintic quintile Quintilis Quintillian quintillion quintillionth Quintin quintin quintiped Quintius quinto quintocubital quintocubitalism quintole quinton quintroon quintuple quintuplet quintuplicate quintuplication quintuplinerved quintupliribbed quintus quinuclidine quinyl quinze quinzieme quip quipful quipo quipper quippish quippishness quippy quipsome quipsomeness quipster quipu quira quire quirewise Quirinal Quirinalia quirinca quiritarian quiritary Quirite Quirites quirk quirkiness quirkish quirksey quirksome quirky quirl quirquincho quirt quis quisby quiscos quisle quisling Quisqualis quisqueite quisquilian quisquiliary quisquilious quisquous quisutsch quit quitch quitclaim quite Quitemoca Quiteno quitrent quits quittable quittance quitted quitter quittor Quitu quiver quivered quiverer quiverful quivering quiveringly quiverish quiverleaf quivery Quixote quixotic quixotical quixotically quixotism quixotize quixotry quiz quizzability quizzable quizzacious quizzatorial quizzee quizzer quizzery quizzical quizzicality quizzically quizzicalness quizzification quizzify quizziness quizzingly quizzish quizzism quizzity quizzy Qung quo quod quoddies quoddity quodlibet quodlibetal quodlibetarian quodlibetary quodlibetic quodlibetical quodlibetically quoilers quoin quoined quoining quoit quoiter quoitlike quoits quondam quondamly quondamship quoniam quop Quoratean quorum quot quota quotability quotable quotableness quotably quotation quotational quotationally quotationist quotative quote quotee quoteless quotennial quoter quoteworthy quoth quotha quotidian quotidianly quotidianness quotient quotiety quotingly quotity quotlibet quotum Qurti R r ra raad Raanan raash Rab rab raband rabanna rabat rabatine rabatte rabattement rabbanist rabbanite rabbet rabbeting rabbi rabbin rabbinate rabbindom Rabbinic rabbinic Rabbinica rabbinical rabbinically rabbinism rabbinist rabbinistic rabbinistical rabbinite rabbinize rabbinship rabbiship rabbit rabbitberry rabbiter rabbithearted rabbitlike rabbitmouth rabbitproof rabbitroot rabbitry rabbitskin rabbitweed rabbitwise rabbitwood rabbity rabble rabblelike rabblement rabbleproof rabbler rabblesome rabboni rabbonim Rabelaisian Rabelaisianism Rabelaism Rabi rabic rabid rabidity rabidly rabidness rabies rabietic rabific rabiform rabigenic Rabin rabinet rabirubia rabitic rabulistic rabulous raccoon raccoonberry raccroc race raceabout racebrood racecourse racegoer racegoing racelike racemate racemation raceme racemed racemic racemiferous racemiform racemism racemization racemize racemocarbonate racemocarbonic racemomethylate racemose racemosely racemous racemously racemule racemulose racer raceway rach rache Rachel rachial rachialgia rachialgic rachianalgesia Rachianectes rachianesthesia rachicentesis rachides rachidial rachidian rachiform Rachiglossa rachiglossate rachigraph rachilla rachiocentesis rachiococainize rachiocyphosis rachiodont rachiodynia rachiometer rachiomyelitis rachioparalysis rachioplegia rachioscoliosis rachiotome rachiotomy rachipagus rachis rachischisis rachitic rachitis rachitism rachitogenic rachitome rachitomous rachitomy Rachycentridae Rachycentron racial racialism racialist raciality racialization racialize racially racily raciness racing racinglike racism racist rack rackabones rackan rackboard racker racket racketeer racketeering racketer racketing racketlike racketproof racketry rackett rackettail rackety rackful racking rackingly rackle rackless rackmaster rackproof rackrentable rackway rackwork racloir racon raconteur racoon Racovian racy rad rada radar radarman radarscope raddle raddleman raddlings radectomy Radek radiability radiable radial radiale radialia radiality radialization radialize radially radian radiance radiancy radiant radiantly Radiata radiate radiated radiately radiateness radiatics radiatiform radiation radiational radiative radiatopatent radiatoporose radiatoporous radiator radiatory radiatostriate radiatosulcate radiature radical radicalism radicality radicalization radicalize radically radicalness radicand radicant radicate radicated radicating radication radicel radices radicicola radicicolous radiciferous radiciflorous radiciform radicivorous radicle radicolous radicose Radicula radicular radicule radiculectomy radiculitis radiculose radiectomy radiescent radiferous radii radio radioacoustics radioactinium radioactivate radioactive radioactively radioactivity radioamplifier radioanaphylaxis radioautograph radioautographic radioautography radiobicipital radiobroadcast radiobroadcaster radiobroadcasting radiobserver radiocarbon radiocarpal radiocast radiocaster radiochemical radiochemistry radiocinematograph radioconductor radiode radiodermatitis radiodetector radiodiagnosis radiodigital radiodontia radiodontic radiodontist radiodynamic radiodynamics radioelement radiogenic radiogoniometer radiogoniometric radiogoniometry radiogram radiograph radiographer radiographic radiographical radiographically radiography radiohumeral radioisotope Radiolaria radiolarian radiolead radiolite Radiolites radiolitic Radiolitidae radiolocation radiolocator radiologic radiological radiologist radiology radiolucency radiolucent radioluminescence radioluminescent radioman radiomedial radiometallography radiometeorograph radiometer radiometric radiometrically radiometry radiomicrometer radiomovies radiomuscular radionecrosis radioneuritis radionics radiopacity radiopalmar radiopaque radiopelvimetry radiophare radiophone radiophonic radiophony radiophosphorus radiophotograph radiophotography radiopraxis radioscope radioscopic radioscopical radioscopy radiosensibility radiosensitive radiosensitivity radiosonde radiosonic radiostereoscopy radiosurgery radiosurgical radiosymmetrical radiotechnology radiotelegram radiotelegraph radiotelegraphic radiotelegraphy radiotelephone radiotelephonic radiotelephony radioteria radiothallium radiotherapeutic radiotherapeutics radiotherapeutist radiotherapist radiotherapy radiothermy radiothorium radiotoxemia radiotransparency radiotransparent radiotrician Radiotron radiotropic radiotropism radiovision radish radishlike radium radiumization radiumize radiumlike radiumproof radiumtherapy radius radix radknight radman radome radon radsimir radula radulate raduliferous raduliform Rafael Rafe raff Raffaelesque raffe raffee raffery raffia raffinase raffinate raffing raffinose raffish raffishly raffishness raffle raffler Rafflesia rafflesia Rafflesiaceae rafflesiaceous Rafik raft raftage rafter raftiness raftlike raftman raftsman rafty rag raga ragabash ragabrash ragamuffin ragamuffinism ragamuffinly rage rageful ragefully rageless rageous rageously rageousness rageproof rager ragesome ragfish ragged raggedly raggedness raggedy raggee ragger raggery raggety raggil raggily ragging raggle raggled raggy raghouse Raghu raging ragingly raglan raglanite raglet raglin ragman Ragnar ragout ragpicker ragseller ragshag ragsorter ragstone ragtag ragtime ragtimer ragtimey ragule raguly ragweed ragwort rah Rahanwin rahdar rahdaree Rahul Raia raia Raiae raid raider raidproof Raif Raiidae raiiform rail railage railbird railer railhead railing railingly raillery railless raillike railly railman railroad railroadana railroader railroadiana railroading railroadish railroadship railway railwaydom railwayless Raimannia raiment raimentless rain rainband rainbird rainbound rainbow rainbowlike rainbowweed rainbowy rainburst raincoat raindrop Rainer rainer rainfall rainfowl rainful rainily raininess rainless rainlessness rainlight rainproof rainproofer rainspout rainstorm raintight rainwash rainworm rainy raioid Rais rais raisable raise raised raiseman raiser raisin raising raisiny Raj raj Raja raja Rajah rajah Rajarshi rajaship Rajasthani rajbansi Rajeev Rajendra Rajesh Rajidae Rajiv Rajput rakan rake rakeage rakeful rakehell rakehellish rakehelly raker rakery rakesteel rakestele rakh Rakhal raki rakily raking rakish rakishly rakishness rakit rakshasa raku Ralf rallentando ralliance Rallidae rallier ralliform Rallinae ralline Rallus rally Ralph ralph ralstonite Ram ram Rama ramada Ramadoss ramage Ramaism Ramaite ramal Raman Ramanan ramanas ramarama ramass ramate rambeh ramberge ramble rambler rambling ramblingly ramblingness Rambo rambong rambooze Rambouillet rambunctious rambutan ramdohrite rame rameal Ramean ramed ramekin ramellose rament ramentaceous ramental ramentiferous ramentum rameous ramequin Rameses Rameseum Ramesh Ramessid Ramesside ramet ramex ramfeezled ramgunshoch ramhead ramhood rami ramicorn ramie ramiferous ramificate ramification ramified ramiflorous ramiform ramify ramigerous Ramillie Ramillied ramiparous Ramiro ramisection ramisectomy Ramism Ramist Ramistical ramlike ramline rammack rammel rammelsbergite rammer rammerman rammish rammishly rammishness rammy Ramneek Ramnenses Ramnes Ramon Ramona Ramoosii ramose ramosely ramosity ramosopalmate ramosopinnate ramososubdivided ramous ramp rampacious rampaciously rampage rampageous rampageously rampageousness rampager rampagious rampancy rampant rampantly rampart ramped ramper Ramphastidae Ramphastides Ramphastos rampick rampike ramping rampingly rampion rampire rampler ramplor rampsman ramrace ramrod ramroddy ramscallion ramsch Ramsey ramshackle ramshackled ramshackleness ramshackly ramson ramstam ramtil ramular ramule ramuliferous ramulose ramulous ramulus ramus ramuscule Ramusi Ran ran Rana rana ranal Ranales ranarian ranarium Ranatra rance rancel rancellor rancelman rancer rancescent ranch ranche rancher rancheria ranchero ranchless ranchman rancho ranchwoman rancid rancidification rancidify rancidity rancidly rancidness rancor rancorous rancorously rancorousness rancorproof Rand rand Randal Randall Randallite randan randannite Randell randem rander Randia randing randir Randite randle Randolph random randomish randomization randomize randomly randomness randomwise Randy randy rane Ranella Ranere rang rangatira range ranged rangeless rangeman ranger rangership rangework rangey Rangifer rangiferine ranginess ranging rangle rangler rangy rani ranid Ranidae raniferous raniform Ranina Raninae ranine raninian ranivorous Ranjit rank ranked ranker rankish rankle rankless ranklingly rankly rankness ranksman rankwise rann rannel rannigal ranny Ranquel ransack ransacker ransackle ransel ranselman ransom ransomable ransomer ransomfree ransomless ranstead rant rantan rantankerous rantepole ranter Ranterism ranting rantingly rantipole rantock ranty ranula ranular Ranunculaceae ranunculaceous Ranunculales ranunculi Ranunculus Ranzania Raoulia rap Rapaces rapaceus rapacious rapaciously rapaciousness rapacity rapakivi Rapallo Rapanea Rapateaceae rapateaceous rape rapeful raper rapeseed Raphael Raphaelesque Raphaelic Raphaelism Raphaelite Raphaelitism raphania Raphanus raphany raphe Raphia raphide raphides raphidiferous raphidiid Raphidiidae Raphidodea Raphidoidea Raphiolepis raphis rapic rapid rapidity rapidly rapidness rapier rapiered rapillo rapine rapiner raping rapinic rapist raploch rappage rapparee rappe rappel rapper rapping Rappist rappist Rappite rapport rapscallion rapscallionism rapscallionly rapscallionry rapt raptatorial raptatory raptly raptness raptor Raptores raptorial raptorious raptril rapture raptured raptureless rapturist rapturize rapturous rapturously rapturousness raptury raptus rare rarebit rarefaction rarefactional rarefactive rarefiable rarefication rarefier rarefy rarely rareness rareripe Rareyfy rariconstant rarish rarity Rarotongan ras rasa Rasalas Rasalhague rasamala rasant rascacio rascal rascaldom rascaless rascalion rascalism rascality rascalize rascallike rascallion rascally rascalry rascalship rasceta rascette rase rasen Rasenna raser rasgado rash rasher rashful rashing rashlike rashly rashness Rashti rasion Raskolnik Rasores rasorial rasp raspatorium raspatory raspberriade raspberry raspberrylike rasped rasper rasping raspingly raspingness raspings raspish raspite raspy rasse Rasselas rassle Rastaban raster rastik rastle Rastus rasure rat rata ratability ratable ratableness ratably ratafee ratafia ratal ratanhia rataplan ratbite ratcatcher ratcatching ratch ratchel ratchelly ratcher ratchet ratchetlike ratchety ratching ratchment rate rated ratel rateless ratement ratepayer ratepaying rater ratfish rath rathe rathed rathely ratheness rather ratherest ratheripe ratherish ratherly rathest rathite Rathnakumar rathole rathskeller raticidal raticide ratification ratificationist ratifier ratify ratihabition ratine rating ratio ratiocinant ratiocinate ratiocination ratiocinative ratiocinator ratiocinatory ratiometer ration rationable rationably rational rationale rationalism rationalist rationalistic rationalistical rationalistically rationalisticism rationality rationalizable rationalization rationalize rationalizer rationally rationalness rationate rationless rationment Ratitae ratite ratitous ratlike ratline ratliner ratoon ratooner ratproof ratsbane ratskeller rattage rattail rattan ratteen ratten rattener ratter rattery ratti rattinet rattish rattle rattlebag rattlebones rattlebox rattlebrain rattlebrained rattlebush rattled rattlehead rattleheaded rattlejack rattlemouse rattlenut rattlepate rattlepated rattlepod rattleproof rattler rattleran rattleroot rattlertree rattles rattleskull rattleskulled rattlesnake rattlesome rattletrap rattleweed rattlewort rattling rattlingly rattlingness rattly ratton rattoner rattrap Rattus ratty ratwa ratwood raucid raucidity raucity raucous raucously raucousness raught raugrave rauk raukle Raul rauli raun raunge raupo rauque Rauraci Raurici Rauwolfia ravage ravagement ravager rave ravehook raveinelike ravel raveler ravelin raveling ravelly ravelment ravelproof raven Ravenala ravendom ravenduck Ravenelia ravener ravenhood ravening ravenish ravenlike ravenous ravenously ravenousness ravenry ravens Ravensara ravensara ravenstone ravenwise raver Ravi ravigote ravin ravinate Ravindran Ravindranath ravine ravined ravinement raviney raving ravingly ravioli ravish ravishedly ravisher ravishing ravishingly ravishment ravison ravissant raw rawboned rawbones rawhead rawhide rawhider rawish rawishness rawness rax Ray ray raya rayage Rayan rayed rayful rayless raylessness raylet Raymond rayon rayonnance rayonnant raze razee razer razoo razor razorable razorback razorbill razoredge razorless razormaker razormaking razorman razorstrop Razoumofskya razz razzia razzly re rea reaal reabandon reabolish reabolition reabridge reabsence reabsent reabsolve reabsorb reabsorption reabuse reacceptance reaccess reaccession reacclimatization reacclimatize reaccommodate reaccompany reaccomplish reaccomplishment reaccord reaccost reaccount reaccredit reaccrue reaccumulate reaccumulation reaccusation reaccuse reaccustom reacetylation reach reachable reacher reachieve reachievement reaching reachless reachy reacidification reacidify reacknowledge reacknowledgment reacquaint reacquaintance reacquire reacquisition react reactance reactant reaction reactional reactionally reactionariness reactionarism reactionarist reactionary reactionaryism reactionism reactionist reactivate reactivation reactive reactively reactiveness reactivity reactological reactology reactor reactualization reactualize reactuate read readability readable readableness readably readapt readaptability readaptable readaptation readaptive readaptiveness readd readdition readdress reader readerdom readership readhere readhesion readily readiness reading readingdom readjourn readjournment readjudicate readjust readjustable readjuster readjustment readmeasurement readminister readmiration readmire readmission readmit readmittance readopt readoption readorn readvance readvancement readvent readventure readvertency readvertise readvertisement readvise readvocate ready reaeration reaffect reaffection reaffiliate reaffiliation reaffirm reaffirmance reaffirmation reaffirmer reafflict reafford reafforest reafforestation reaffusion reagency reagent reaggravate reaggravation reaggregate reaggregation reaggressive reagin reagitate reagitation reagree reagreement reak Real real realarm reales realest realgar realienate realienation realign realignment realism realist realistic realistically realisticize reality realive realizability realizable realizableness realizably realization realize realizer realizing realizingly reallegation reallege reallegorize realliance reallocate reallocation reallot reallotment reallow reallowance reallude reallusion really realm realmless realmlet realness realter realteration realtor realty ream reamage reamalgamate reamalgamation reamass reambitious reamend reamendment reamer reamerer reaminess reamputation reamuse reamy reanalysis reanalyze reanchor reanimalize reanimate reanimation reanneal reannex reannexation reannotate reannounce reannouncement reannoy reannoyance reanoint reanswer reanvil reanxiety reap reapable reapdole reaper reapologize reapology reapparel reapparition reappeal reappear reappearance reappease reapplaud reapplause reappliance reapplicant reapplication reapplier reapply reappoint reappointment reapportion reapportionment reapposition reappraisal reappraise reappraisement reappreciate reappreciation reapprehend reapprehension reapproach reapprobation reappropriate reappropriation reapproval reapprove rear rearbitrate rearbitration rearer reargue reargument rearhorse rearisal rearise rearling rearm rearmament rearmost rearousal rearouse rearrange rearrangeable rearrangement rearranger rearray rearrest rearrival rearrive rearward rearwardly rearwardness rearwards reascend reascendancy reascendant reascendency reascendent reascension reascensional reascent reascertain reascertainment reashlar reasiness reask reason reasonability reasonable reasonableness reasonably reasoned reasonedly reasoner reasoning reasoningly reasonless reasonlessly reasonlessness reasonproof reaspire reassail reassault reassay reassemblage reassemble reassembly reassent reassert reassertion reassertor reassess reassessment reasseverate reassign reassignation reassignment reassimilate reassimilation reassist reassistance reassociate reassociation reassort reassortment reassume reassumption reassurance reassure reassured reassuredly reassurement reassurer reassuring reassuringly reastiness reastonish reastonishment reastray reasty reasy reattach reattachment reattack reattain reattainment reattempt reattend reattendance reattention reattentive reattest reattire reattract reattraction reattribute reattribution reatus reaudit reauthenticate reauthentication reauthorization reauthorize reavail reavailable reave reaver reavoid reavoidance reavouch reavow reawait reawake reawaken reawakening reawakenment reaward reaware reb rebab reback rebag rebait rebake rebalance rebale reballast reballot reban rebandage rebanish rebanishment rebankrupt rebankruptcy rebaptism rebaptismal rebaptization rebaptize rebaptizer rebar rebarbarization rebarbarize rebarbative rebargain rebase rebasis rebatable rebate rebateable rebatement rebater rebathe rebato rebawl rebeamer rebear rebeat rebeautify rebec Rebecca Rebeccaism Rebeccaites rebeck rebecome rebed rebeg rebeget rebeggar rebegin rebeginner rebeginning rebeguile rebehold Rebekah rebel rebeldom rebelief rebelieve rebeller rebellike rebellion rebellious rebelliously rebelliousness rebellow rebelly rebelong rebelove rebelproof rebemire rebend rebenediction rebenefit rebeset rebesiege rebestow rebestowal rebetake rebetray rebewail rebia rebias rebid rebill rebillet rebilling rebind rebirth rebite reblade reblame reblast rebleach reblend rebless reblock rebloom reblossom reblot reblow reblue rebluff reblunder reboant reboantic reboard reboast rebob reboil reboiler reboise reboisement rebold rebolt rebone rebook rebop rebore reborn reborrow rebottle Reboulia rebounce rebound reboundable rebounder reboundingness rebourbonize rebox rebrace rebraid rebranch rebrand rebrandish rebreathe rebreed rebrew rebribe rebrick rebridge rebring rebringer rebroach rebroadcast rebronze rebrown rebrush rebrutalize rebubble rebuckle rebud rebudget rebuff rebuffable rebuffably rebuffet rebuffproof rebuild rebuilder rebuilt rebukable rebuke rebukeable rebukeful rebukefully rebukefulness rebukeproof rebuker rebukingly rebulk rebunch rebundle rebunker rebuoy rebuoyage reburden reburgeon reburial reburn reburnish reburst rebury rebus rebush rebusy rebut rebute rebutment rebuttable rebuttal rebutter rebutton rebuy recable recadency recage recalcination recalcine recalcitrance recalcitrant recalcitrate recalcitration recalculate recalculation recalesce recalescence recalescent recalibrate recalibration recalk recall recallable recallist recallment recampaign recancel recancellation recandescence recandidacy recant recantation recanter recantingly recanvas recap recapacitate recapitalization recapitalize recapitulate recapitulation recapitulationist recapitulative recapitulator recapitulatory recappable recapper recaption recaptivate recaptivation recaptor recapture recapturer recarbon recarbonate recarbonation recarbonization recarbonize recarbonizer recarburization recarburize recarburizer recarnify recarpet recarriage recarrier recarry recart recarve recase recash recasket recast recaster recasting recatalogue recatch recaulescence recausticize recce recco reccy recede recedence recedent receder receipt receiptable receiptless receiptor receipts receivability receivable receivables receivablness receival receive received receivedness receiver receivership recelebrate recelebration recement recementation recency recense recension recensionist recensor recensure recensus recent recenter recently recentness recentralization recentralize recentre recept receptacle receptacular receptaculite Receptaculites receptaculitid Receptaculitidae receptaculitoid receptaculum receptant receptibility receptible reception receptionism receptionist receptitious receptive receptively receptiveness receptivity receptor receptoral receptorial receptual receptually recercelee recertificate recertify recess recesser recession recessional recessionary recessive recessively recessiveness recesslike recessor Rechabite Rechabitism rechafe rechain rechal rechallenge rechamber rechange rechant rechaos rechar recharge recharter rechase rechaser rechasten rechaw recheat recheck recheer recherche rechew rechip rechisel rechoose rechristen rechuck rechurn recidivation recidive recidivism recidivist recidivistic recidivity recidivous recipe recipiangle recipience recipiency recipiend recipiendary recipient recipiomotor reciprocable reciprocal reciprocality reciprocalize reciprocally reciprocalness reciprocate reciprocation reciprocative reciprocator reciprocatory reciprocitarian reciprocity recircle recirculate recirculation recision recission recissory recitable recital recitalist recitatif recitation recitationalism recitationist recitative recitatively recitativical recitativo recite recitement reciter recivilization recivilize reck reckla reckless recklessly recklessness reckling reckon reckonable reckoner reckoning reclaim reclaimable reclaimableness reclaimably reclaimant reclaimer reclaimless reclaimment reclama reclamation reclang reclasp reclass reclassification reclassify reclean recleaner recleanse reclear reclearance reclimb reclinable reclinate reclinated reclination recline recliner reclose reclothe reclothing recluse reclusely recluseness reclusery reclusion reclusive reclusiveness reclusory recoach recoagulation recoal recoast recoat recock recoct recoction recode recodification recodify recogitate recogitation recognition recognitive recognitor recognitory recognizability recognizable recognizably recognizance recognizant recognize recognizedly recognizee recognizer recognizingly recognizor recognosce recohabitation recoil recoiler recoilingly recoilment recoin recoinage recoiner recoke recollapse recollate recollation Recollect recollectable recollected recollectedly recollectedness recollectible recollection recollective recollectively recollectiveness Recollet recolonization recolonize recolor recomb recombination recombine recomember recomfort recommand recommence recommencement recommencer recommend recommendability recommendable recommendableness recommendably recommendation recommendatory recommendee recommender recommission recommit recommitment recommittal recommunicate recommunion recompact recompare recomparison recompass recompel recompensable recompensate recompensation recompense recompenser recompensive recompete recompetition recompetitor recompilation recompile recompilement recomplain recomplaint recomplete recompletion recompliance recomplicate recomplication recomply recompose recomposer recomposition recompound recomprehend recomprehension recompress recompression recomputation recompute recon reconceal reconcealment reconcede reconceive reconcentrate reconcentration reconception reconcert reconcession reconcilability reconcilable reconcilableness reconcilably reconcile reconcilee reconcileless reconcilement reconciler reconciliability reconciliable reconciliate reconciliation reconciliative reconciliator reconciliatory reconciling reconcilingly reconclude reconclusion reconcoct reconcrete reconcur recondemn recondemnation recondensation recondense recondite reconditely reconditeness recondition recondole reconduct reconduction reconfer reconfess reconfide reconfine reconfinement reconfirm reconfirmation reconfiscate reconfiscation reconform reconfound reconfront reconfuse reconfusion recongeal recongelation recongest recongestion recongratulate recongratulation reconjoin reconjunction reconnaissance reconnect reconnection reconnoissance reconnoiter reconnoiterer reconnoiteringly reconnoitre reconnoitrer reconnoitringly reconquer reconqueror reconquest reconsecrate reconsecration reconsent reconsider reconsideration reconsign reconsignment reconsole reconsolidate reconsolidation reconstituent reconstitute reconstitution reconstruct reconstructed reconstruction reconstructional reconstructionary reconstructionist reconstructive reconstructiveness reconstructor reconstrue reconsult reconsultation recontact recontemplate recontemplation recontend recontest recontinuance recontinue recontract recontraction recontrast recontribute recontribution recontrivance recontrive recontrol reconvalesce reconvalescence reconvalescent reconvene reconvention reconventional reconverge reconverse reconversion reconvert reconvertible reconvey reconveyance reconvict reconviction reconvince reconvoke recook recool recooper recopper recopy recopyright record recordable recordant recordation recordative recordatively recordatory recordedly recorder recordership recording recordist recordless recork recorporification recorporify recorrect recorrection recorrupt recorruption recostume recounsel recount recountable recountal recountenance recounter recountless recoup recoupable recouper recouple recoupment recourse recover recoverability recoverable recoverableness recoverance recoveree recoverer recoveringly recoverless recoveror recovery recramp recrank recrate recreance recreancy recreant recreantly recreantness recrease recreate recreation recreational recreationist recreative recreatively recreativeness recreator recreatory recredit recrement recremental recrementitial recrementitious recrescence recrew recriminate recrimination recriminative recriminator recriminatory recriticize recroon recrop recross recrowd recrown recrucify recrudency recrudesce recrudescence recrudescency recrudescent recruit recruitable recruitage recruital recruitee recruiter recruithood recruiting recruitment recruity recrush recrusher recrystallization recrystallize rect recta rectal rectalgia rectally rectangle rectangled rectangular rectangularity rectangularly rectangularness rectangulate rectangulometer rectectomy recti rectifiable rectification rectificative rectificator rectificatory rectified rectifier rectify rectigrade Rectigraph rectilineal rectilineally rectilinear rectilinearism rectilinearity rectilinearly rectilinearness rectilineation rectinerved rection rectipetality rectirostral rectischiac rectiserial rectitic rectitis rectitude rectitudinous recto rectoabdominal rectocele rectoclysis rectococcygeal rectococcygeus rectocolitic rectocolonic rectocystotomy rectogenital rectopexy rectoplasty rector rectoral rectorate rectoress rectorial rectorrhaphy rectorship rectory rectoscope rectoscopy rectosigmoid rectostenosis rectostomy rectotome rectotomy rectovaginal rectovesical rectress rectricial rectrix rectum rectus recubant recubate recultivate recultivation recumbence recumbency recumbent recumbently recuperability recuperance recuperate recuperation recuperative recuperativeness recuperator recuperatory recur recure recureful recureless recurl recurrence recurrency recurrent recurrently recurrer recurring recurringly recurse recursion recursive recurtain recurvant recurvate recurvation recurvature recurve Recurvirostra recurvirostral Recurvirostridae recurvopatent recurvoternate recurvous recusance recusancy recusant recusation recusative recusator recuse recushion recussion recut recycle Red red redact redaction redactional redactor redactorial redamage redamnation redan redare redargue redargution redargutive redargutory redarken redarn redart redate redaub redawn redback redbait redbeard redbelly redberry redbill redbird redbone redbreast redbrush redbuck redbud redcap redcoat redd redden reddendo reddendum reddening redder redding reddingite reddish reddishness reddition reddleman reddock reddsman reddy rede redeal redebate redebit redeceive redecide redecimate redecision redeck redeclaration redeclare redecline redecorate redecoration redecrease redecussate rededicate rededication rededicatory rededuct rededuction redeed redeem redeemability redeemable redeemableness redeemably redeemer redeemeress redeemership redeemless redefault redefeat redefecate redefer redefiance redefine redefinition redeflect redefy redeify redelay redelegate redelegation redeliberate redeliberation redeliver redeliverance redeliverer redelivery redemand redemandable redemise redemolish redemonstrate redemonstration redemptible Redemptine redemption redemptional redemptioner Redemptionist redemptionless redemptive redemptively redemptor redemptorial Redemptorist redemptory redemptress redemptrice redenigrate redeny redepend redeploy redeployment redeposit redeposition redepreciate redepreciation redeprive rederivation redescend redescent redescribe redescription redesertion redeserve redesign redesignate redesignation redesire redesirous redesman redespise redetect redetention redetermination redetermine redevelop redeveloper redevelopment redevise redevote redevotion redeye redfin redfinch redfish redfoot redhead redheaded redheadedly redheadedness redhearted redhibition redhibitory redhoop redia redictate redictation redient redifferentiate redifferentiation redig redigest redigestion rediminish redingote redintegrate redintegration redintegrative redintegrator redip redipper redirect redirection redisable redisappear redisburse redisbursement redischarge rediscipline rediscount rediscourage rediscover rediscoverer rediscovery rediscuss rediscussion redisembark redismiss redispatch redispel redisperse redisplay redispose redisposition redispute redissect redissection redisseise redisseisin redisseisor redisseize redisseizin redisseizor redissoluble redissolution redissolvable redissolve redistend redistill redistillation redistiller redistinguish redistrain redistrainer redistribute redistributer redistribution redistributive redistributor redistributory redistrict redisturb redive rediversion redivert redivertible redivide redivision redivive redivivous redivivus redivorce redivorcement redivulge redivulgence redjacket redknees redleg redlegs redly redmouth redness redo redock redocket redolence redolency redolent redolently redominate redondilla redoom redouble redoublement redoubler redoubling redoubt redoubtable redoubtableness redoubtably redoubted redound redowa redox redpoll redraft redrag redrape redraw redrawer redream redredge redress redressable redressal redresser redressible redressive redressless redressment redressor redrill redrive redroot redry redsear redshank redshirt redskin redstart redstreak redtab redtail redthroat redtop redub redubber reduce reduceable reduceableness reduced reducement reducent reducer reducibility reducible reducibleness reducibly reducing reduct reductant reductase reductibility reduction reductional reductionism reductionist reductionistic reductive reductively reductor reductorial redue Redunca redundance redundancy redundant redundantly reduplicate reduplication reduplicative reduplicatively reduplicatory reduplicature reduviid Reduviidae reduvioid Reduvius redux redward redware redweed redwing redwithe redwood redye Ree ree reechy reed reedbird reedbuck reedbush reeded reeden reeder reediemadeasy reedily reediness reeding reedish reedition reedless reedlike reedling reedmaker reedmaking reedman reedplot reedwork reedy reef reefable reefer reefing reefy reek reeker reekingly reeky reel reelable reeled reeler reelingly reelrall reem reeming reemish reen reenge reeper Rees reese reeshle reesk reesle reest reester reestle reesty reet reetam reetle reeve reeveland reeveship ref reface refacilitate refall refallow refan refascinate refascination refashion refashioner refashionment refasten refathered refavor refect refection refectionary refectioner refective refectorarian refectorary refectorer refectorial refectorian refectory refederate refeed refeel refeign refel refence refer referable referee reference referenda referendal referendary referendaryship referendum referent referential referentially referently referment referral referrer referrible referribleness refertilization refertilize refetch refight refigure refill refillable refilm refilter refinable refinage refinance refind refine refined refinedly refinedness refinement refiner refinery refinger refining refiningly refinish refire refit refitment refix refixation refixture reflag reflagellate reflame reflash reflate reflation reflationism reflect reflectance reflected reflectedly reflectedness reflectent reflecter reflectibility reflectible reflecting reflectingly reflection reflectional reflectionist reflectionless reflective reflectively reflectiveness reflectivity reflectometer reflectometry reflector reflectoscope refledge reflee reflex reflexed reflexibility reflexible reflexism reflexive reflexively reflexiveness reflexivity reflexly reflexness reflexogenous reflexological reflexologist reflexology refling refloat refloatation reflog reflood refloor reflorescence reflorescent reflourish reflourishment reflow reflower refluctuation refluence refluency refluent reflush reflux refluxed refly refocillate refocillation refocus refold refoment refont refool refoot reforbid reforce reford reforecast reforest reforestation reforestization reforestize reforestment reforfeit reforfeiture reforge reforger reforget reforgive reform reformability reformable reformableness reformado reformandum Reformati reformation reformational reformationary reformationist reformative reformatively reformatness reformatory reformed reformedly reformer reformeress reformingly reformism reformist reformistic reformproof reformulate reformulation reforsake refortification refortify reforward refound refoundation refounder refract refractable refracted refractedly refractedness refractile refractility refracting refraction refractional refractionate refractionist refractive refractively refractiveness refractivity refractometer refractometric refractometry refractor refractorily refractoriness refractory refracture refragability refragable refragableness refrain refrainer refrainment reframe refrangent refrangibility refrangible refrangibleness refreeze refrenation refrenzy refresh refreshant refreshen refreshener refresher refreshful refreshfully refreshing refreshingly refreshingness refreshment refrigerant refrigerate refrigerating refrigeration refrigerative refrigerator refrigeratory refrighten refringence refringency refringent refront refrustrate reft refuel refueling refuge refugee refugeeism refugeeship refulge refulgence refulgency refulgent refulgently refulgentness refunction refund refunder refundment refurbish refurbishment refurl refurnish refurnishment refusable refusal refuse refuser refusing refusingly refusion refusive refutability refutable refutably refutal refutation refutative refutatory refute refuter reg regain regainable regainer regainment regal regale Regalecidae Regalecus regalement regaler regalia regalian regalism regalist regality regalize regallop regally regalness regalvanization regalvanize regard regardable regardance regardancy regardant regarder regardful regardfully regardfulness regarding regardless regardlessly regardlessness regarment regarnish regarrison regather regatta regauge regelate regelation regency regeneracy regenerance regenerant regenerate regenerateness regeneration regenerative regeneratively regenerator regeneratory regeneratress regeneratrix regenesis regent regental regentess regentship regerminate regermination reges reget Regga Reggie regia regicidal regicide regicidism regift regifuge regild regill regime regimen regimenal regiment regimental regimentaled regimentalled regimentally regimentals regimentary regimentation regiminal regin reginal Reginald region regional regionalism regionalist regionalistic regionalization regionalize regionally regionary regioned register registered registerer registership registrability registrable registral registrant registrar registrarship registrary registrate registration registrational registrationist registrator registrer registry regive regladden reglair reglaze regle reglement reglementary reglementation reglementist reglet reglorified regloss reglove reglow reglue regma regmacarp regnal regnancy regnant regnerable regolith regorge regovern regradation regrade regraduate regraduation regraft regrant regrasp regrass regrate regrater regratification regratify regrating regratingly regrator regratress regravel regrede regreen regreet regress regression regressionist regressive regressively regressiveness regressivity regressor regret regretful regretfully regretfulness regretless regrettable regrettableness regrettably regretter regrettingly regrind regrinder regrip regroup regroupment regrow regrowth reguarantee reguard reguardant reguide regula regulable regular Regulares Regularia regularity regularization regularize regularizer regularly regularness regulatable regulate regulated regulation regulationist regulative regulatively regulator regulatorship regulatory regulatress regulatris reguli reguline regulize Regulus regulus regur regurge regurgitant regurgitate regurgitation regush reh rehabilitate rehabilitation rehabilitative rehair rehale rehallow rehammer rehandicap rehandle rehandler rehandling rehang rehappen reharden reharm reharmonize reharness reharrow reharvest rehash rehaul rehazard rehead reheal reheap rehear rehearing rehearsal rehearse rehearser rehearten reheat reheater Reheboth rehedge reheel reheighten Rehoboam Rehoboth Rehobothan rehoe rehoist rehollow rehonor rehonour rehood rehook rehoop rehouse rehumanize rehumble rehumiliate rehumiliation rehung rehybridize rehydrate rehydration rehypothecate rehypothecation rehypothecator reichsgulden Reichsland Reichslander reichsmark reichspfennig reichstaler Reid reidentification reidentify reif reification reify reign reignite reignition reignore reillume reilluminate reillumination reillumine reillustrate reillustration reim reimage reimagination reimagine reimbark reimbarkation reimbibe reimbody reimbursable reimburse reimbursement reimburser reimbush reimbushment reimkennar reimmerge reimmerse reimmersion reimmigrant reimmigration reimpact reimpark reimpart reimpatriate reimpatriation reimpel reimplant reimplantation reimply reimport reimportation reimportune reimpose reimposition reimposure reimpregnate reimpress reimpression reimprint reimprison reimprisonment reimprove reimprovement reimpulse rein reina reinability reinaugurate reinauguration reincapable reincarnadine reincarnate reincarnation reincarnationism reincarnationist reincense reincentive reincidence reincidency reincite reinclination reincline reinclude reinclusion reincorporate reincorporation reincrease reincrudate reincrudation reinculcate reincur reindebted reindebtedness reindeer reindependence reindicate reindication reindict reindictment reindifferent reindorse reinduce reinducement reindue reindulge reindulgence Reiner reinette reinfect reinfection reinfectious reinfer reinfest reinfestation reinflame reinflate reinflation reinflict reinfliction reinfluence reinforce reinforcement reinforcer reinform reinfuse reinfusion reingraft reingratiate reingress reinhabit reinhabitation Reinhard reinherit reinitiate reinitiation reinject reinjure reinless reinoculate reinoculation reinquire reinquiry reins reinsane reinsanity reinscribe reinsert reinsertion reinsist reinsman reinspect reinspection reinspector reinsphere reinspiration reinspire reinspirit reinstall reinstallation reinstallment reinstalment reinstate reinstatement reinstation reinstator reinstauration reinstil reinstill reinstitute reinstitution reinstruct reinstruction reinsult reinsurance reinsure reinsurer reintegrate reintegration reintend reinter reintercede reintercession reinterchange reinterest reinterfere reinterference reinterment reinterpret reinterpretation reinterrogate reinterrogation reinterrupt reinterruption reintervene reintervention reinterview reinthrone reintimate reintimation reintitule reintrench reintroduce reintroduction reintrude reintrusion reintuition reintuitive reinvade reinvasion reinvent reinvention reinventor reinversion reinvert reinvest reinvestigate reinvestigation reinvestiture reinvestment reinvigorate reinvigoration reinvitation reinvite reinvoice reinvolve Reinwardtia reirrigate reirrigation reis reisolation reissuable reissue reissuement reissuer reit reitbok reitbuck reitemize reiter reiterable reiterance reiterant reiterate reiterated reiteratedly reiteratedness reiteration reiterative reiteratively reiver rejail Rejang reject rejectable rejectableness rejectage rejectamenta rejecter rejectingly rejection rejective rejectment rejector rejerk rejoice rejoiceful rejoicement rejoicer rejoicing rejoicingly rejoin rejoinder rejolt rejourney rejudge rejumble rejunction rejustification rejustify rejuvenant rejuvenate rejuvenation rejuvenative rejuvenator rejuvenesce rejuvenescence rejuvenescent rejuvenize Reki rekick rekill rekindle rekindlement rekindler reking rekiss reknit reknow rel relabel relace relacquer relade reladen relais relament relamp reland relap relapper relapsable relapse relapseproof relapser relapsing relast relaster relata relatability relatable relatch relate related relatedness relater relatinization relation relational relationality relationally relationary relationism relationist relationless relationship relatival relative relatively relativeness relativism relativist relativistic relativity relativization relativize relator relatrix relatum relaunch relax relaxable relaxant relaxation relaxative relaxatory relaxed relaxedly relaxedness relaxer relay relayman relbun relead releap relearn releasable release releasee releasement releaser releasor releather relection relegable relegate relegation relend relent relenting relentingly relentless relentlessly relentlessness relentment relessee relessor relet reletter relevance relevancy relevant relevantly relevate relevation relevator relevel relevy reliability reliable reliableness reliably reliance reliant reliantly reliberate relic relicary relicense relick reliclike relicmonger relict relicted reliction relief reliefless relier relievable relieve relieved relievedly reliever relieving relievingly relievo relift religate religation relight relightable relighten relightener relighter religion religionary religionate religioner religionism religionist religionistic religionize religionless religiose religiosity religious religiously religiousness relime relimit relimitation reline reliner relink relinquent relinquish relinquisher relinquishment reliquaire reliquary reliquefy reliquiae reliquian reliquidate reliquidation reliquism relish relishable relisher relishing relishingly relishsome relishy relist relisten relitigate relive Rellyan Rellyanism Rellyanite reload reloan relocable relocate relocation relocator relock relodge relook relose relost relot relove relower relucent reluct reluctance reluctancy reluctant reluctantly reluctate reluctation reluctivity relume relumine rely remade remagnetization remagnetize remagnification remagnify remail remain remainder remainderman remaindership remainer remains remaintain remaintenance remake remaker reman remanage remanagement remanation remancipate remancipation remand remandment remanence remanency remanent remanet remanipulate remanipulation remantle remanufacture remanure remap remarch remargin remark remarkability remarkable remarkableness remarkably remarkedly remarker remarket remarque remarriage remarry remarshal remask remass remast remasticate remastication rematch rematerialize remble Rembrandt Rembrandtesque Rembrandtish Rembrandtism remeant remeasure remeasurement remede remediable remediableness remediably remedial remedially remediation remediless remedilessly remedilessness remeditate remeditation remedy remeet remelt remember rememberability rememberable rememberably rememberer remembrance remembrancer remembrancership rememorize remenace remend remerge remetal remex Remi remica remicate remication remicle remiform remigate remigation remiges remigial remigrant remigrate remigration Remijia remilitarization remilitarize remill remimic remind remindal reminder remindful remindingly remineralization remineralize remingle reminisce reminiscence reminiscenceful reminiscencer reminiscency reminiscent reminiscential reminiscentially reminiscently reminiscer reminiscitory remint remiped remirror remise remisrepresent remisrepresentation remiss remissful remissibility remissible remissibleness remission remissive remissively remissiveness remissly remissness remissory remisunderstand remit remitment remittable remittal remittance remittancer remittee remittence remittency remittent remittently remitter remittitur remittor remix remixture remnant remnantal remobilization remobilize Remoboth remock remodel remodeler remodeller remodelment remodification remodify remolade remold remollient remonetization remonetize remonstrance remonstrant remonstrantly remonstrate remonstrating remonstratingly remonstration remonstrative remonstratively remonstrator remonstratory remontado remontant remontoir remop remora remord remorse remorseful remorsefully remorsefulness remorseless remorselessly remorselessness remorseproof remortgage remote remotely remoteness remotion remotive remould remount removability removable removableness removably removal remove removed removedly removedness removement remover removing remultiplication remultiply remunerability remunerable remunerably remunerate remuneration remunerative remuneratively remunerativeness remunerator remuneratory remurmur Remus remuster remutation renable renably renail Renaissance renaissance Renaissancist Renaissant renal rename Renardine renascence renascency renascent renascible renascibleness renature renavigate renavigation rencontre rencounter renculus rend render renderable renderer rendering renderset rendezvous rendibility rendible rendition rendlewood rendrock rendzina reneague Renealmia renecessitate reneg renegade renegadism renegado renegation renege reneger reneglect renegotiable renegotiate renegotiation renegotiations renegue renerve renes renet renew renewability renewable renewably renewal renewedly renewedness renewer renewment renicardiac renickel renidification renidify reniform Renilla Renillidae renin renipericardial reniportal renipuncture renish renishly renitence renitency renitent renk renky renne rennet renneting rennin renniogen renocutaneous renogastric renography renointestinal renominate renomination renopericardial renopulmonary renormalize renotation renotice renotification renotify renounce renounceable renouncement renouncer renourish renovate renovater renovatingly renovation renovative renovator renovatory renovize renown renowned renownedly renownedness renowner renownful renownless rensselaerite rent rentability rentable rentage rental rentaler rentaller rented rentee renter rentless rentrant rentrayeuse Renu renumber renumerate renumeration renunciable renunciance renunciant renunciate renunciation renunciative renunciator renunciatory renunculus renverse renvoi renvoy reobject reobjectivization reobjectivize reobligate reobligation reoblige reobscure reobservation reobserve reobtain reobtainable reobtainment reoccasion reoccupation reoccupy reoccur reoccurrence reoffend reoffense reoffer reoffset reoil reometer reomission reomit reopen reoperate reoperation reoppose reopposition reoppress reoppression reorchestrate reordain reorder reordinate reordination reorganization reorganizationist reorganize reorganizer reorient reorientation reornament reoutfit reoutline reoutput reoutrage reovercharge reoverflow reovertake reoverwork reown reoxidation reoxidize reoxygenate reoxygenize rep repace repacification repacify repack repackage repacker repaganization repaganize repaganizer repage repaint repair repairable repairableness repairer repairman repale repand repandly repandodentate repandodenticulate repandolobate repandous repandousness repanel repaper reparability reparable reparably reparagraph reparate reparation reparative reparatory repark repartable repartake repartee reparticipate reparticipation repartition repartitionable repass repassable repassage repasser repast repaste repasture repatch repatency repatent repatriable repatriate repatriation repatronize repattern repave repavement repawn repay repayable repayal repaying repayment repeal repealability repealable repealableness repealer repealist repealless repeat repeatability repeatable repeatal repeated repeatedly repeater repeg repel repellance repellant repellence repellency repellent repellently repeller repelling repellingly repellingness repen repenetrate repension repent repentable repentance repentant repentantly repenter repentingly repeople reperceive repercept reperception repercolation repercuss repercussion repercussive repercussively repercussiveness repercutient reperform reperformance reperfume reperible repermission repermit reperplex repersonalization repersonalize repersuade repersuasion repertoire repertorial repertorily repertorium repertory reperusal reperuse repetend repetition repetitional repetitionary repetitious repetitiously repetitiousness repetitive repetitively repetitiveness repetitory repetticoat repew Rephael rephase rephonate rephosphorization rephosphorize rephotograph rephrase repic repick repicture repiece repile repin repine repineful repinement repiner repiningly repipe repique repitch repkie replace replaceability replaceable replacement replacer replait replan replane replant replantable replantation replanter replaster replate replay replead repleader repleat repledge repledger replenish replenisher replenishingly replenishment replete repletely repleteness repletion repletive repletively repletory repleviable replevin replevisable replevisor replevy repliant replica replicate replicated replicatile replication replicative replicatively replicatory replier replight replod replot replotment replotter replough replow replum replume replunder replunge reply replyingly repocket repoint repolish repoll repollute repolon repolymerization repolymerize reponder repone repope repopulate repopulation report reportable reportage reportedly reporter reporteress reporterism reportership reportingly reportion reportorial reportorially reposal repose reposed reposedly reposedness reposeful reposefully reposefulness reposer reposit repositary reposition repositor repository repossess repossession repossessor repost repostpone repot repound repour repowder repp repped repractice repray repreach reprecipitate reprecipitation repredict reprefer reprehend reprehendable reprehendatory reprehender reprehensibility reprehensible reprehensibleness reprehensibly reprehension reprehensive reprehensively reprehensory repreparation reprepare represcribe represent representability representable representamen representant representation representational representationalism representationalist representationary representationism representationist representative representatively representativeness representativeship representativity representer representment represide repress repressed repressedly represser repressible repressibly repression repressionary repressionist repressive repressively repressiveness repressment repressor repressory repressure reprice reprieval reprieve repriever reprimand reprimander reprimanding reprimandingly reprime reprimer reprint reprinter reprisal reprisalist reprise repristinate repristination reprivatization reprivatize reprivilege reproach reproachable reproachableness reproachably reproacher reproachful reproachfully reproachfulness reproachingly reproachless reproachlessness reprobacy reprobance reprobate reprobateness reprobater reprobation reprobationary reprobationer reprobative reprobatively reprobator reprobatory reproceed reprocess reproclaim reproclamation reprocurable reprocure reproduce reproduceable reproducer reproducibility reproducible reproduction reproductionist reproductive reproductively reproductiveness reproductivity reproductory reprofane reprofess reprohibit repromise repromulgate repromulgation repronounce repronunciation reproof reproofless repropagate repropitiate repropitiation reproportion reproposal repropose reprosecute reprosecution reprosper reprotect reprotection reprotest reprovable reprovableness reprovably reproval reprove reprover reprovide reprovingly reprovision reprovocation reprovoke reprune reps reptant reptatorial reptatory reptile reptiledom reptilelike reptilferous Reptilia reptilian reptiliary reptiliform reptilious reptiliousness reptilism reptility reptilivorous reptiloid republic republican republicanism republicanization republicanize republicanizer republication republish republisher republishment repuddle repudiable repudiate repudiation repudiationist repudiative repudiator repudiatory repuff repugn repugnable repugnance repugnancy repugnant repugnantly repugnantness repugnate repugnatorial repugner repullulate repullulation repullulative repullulescent repulpit repulse repulseless repulseproof repulser repulsion repulsive repulsively repulsiveness repulsory repulverize repump repunish repunishment repurchase repurchaser repurge repurification repurify repurple repurpose repursue repursuit reputability reputable reputableness reputably reputation reputationless reputative reputatively repute reputed reputedly reputeless requalification requalify requarantine requeen requench request requester requestion requiem Requienia requiescence requin requirable require requirement requirer requisite requisitely requisiteness requisition requisitionary requisitioner requisitionist requisitor requisitorial requisitory requit requitable requital requitative requite requiteful requitement requiter requiz requotation requote rerack reracker reradiation rerail reraise rerake rerank rerate reread rereader rerebrace reredos reree rereel rereeve rerefief reregister reregistration reregulate reregulation rereign reremouse rerent rerental reresupper rerig rering rerise rerival rerivet rerob rerobe reroll reroof reroot rerope reroute rerow reroyalize rerub rerummage rerun resaca resack resacrifice resaddle resail resalable resale resalt resalutation resalute resalvage resample resanctify resanction resatisfaction resatisfy resaw resawer resawyer resay resazurin rescan reschedule rescind rescindable rescinder rescindment rescissible rescission rescissory rescore rescramble rescratch rescribe rescript rescription rescriptive rescriptively rescrub rescuable rescue rescueless rescuer reseal reseam research researcher researchful researchist reseat resecrete resecretion resect resection resectional Reseda reseda Resedaceae resedaceous resee reseed reseek resegment resegmentation reseise reseiser reseize reseizer reseizure reselect reselection reself resell reseller resemblable resemblance resemblant resemble resembler resemblingly reseminate resend resene resensation resensitization resensitize resent resentationally resentence resenter resentful resentfullness resentfully resentience resentingly resentless resentment resepulcher resequent resequester resequestration reserene reservable reserval reservation reservationist reservatory reserve reserved reservedly reservedness reservee reserveful reserveless reserver reservery reservice reservist reservoir reservor reset resettable resetter resettle resettlement resever resew resex resh reshake reshape reshare resharpen reshave reshear reshearer resheathe reshelve reshift reshine reshingle reship reshipment reshipper reshoe reshoot reshoulder reshovel reshower reshrine reshuffle reshun reshunt reshut reshuttle resiccate reside residence residencer residency resident residental residenter residential residentiality residentially residentiary residentiaryship residentship resider residua residual residuary residuation residue residuent residuous residuum resift resigh resign resignal resignatary resignation resignationism resigned resignedly resignedness resignee resigner resignful resignment resile resilement resilial resiliate resilience resiliency resilient resilifer resiliometer resilition resilium resilver resin resina resinaceous resinate resinbush resiner resinfiable resing resinic resiniferous resinification resinifluous resiniform resinify resinize resink resinlike resinoelectric resinoextractive resinogenous resinoid resinol resinolic resinophore resinosis resinous resinously resinousness resinovitreous resiny resipiscence resipiscent resist resistability resistable resistableness resistance resistant resistantly resister resistful resistibility resistible resistibleness resistibly resisting resistingly resistive resistively resistiveness resistivity resistless resistlessly resistlessness resistor resitting resize resizer resketch reskin reslash reslate reslay reslide reslot resmell resmelt resmile resmooth resnap resnatch resnatron resnub resoak resoap resoften resoil resojourn resolder resole resolemnize resolicit resolidification resolidify resolubility resoluble resolubleness resolute resolutely resoluteness resolution resolutioner resolutionist resolutory resolvability resolvable resolvableness resolvancy resolve resolved resolvedly resolvedness resolvent resolver resolvible resonance resonancy resonant resonantly resonate resonator resonatory resoothe resorb resorbence resorbent resorcin resorcine resorcinism resorcinol resorcinolphthalein resorcinum resorcylic resorption resorptive resort resorter resorufin resought resound resounder resounding resoundingly resource resourceful resourcefully resourcefulness resourceless resourcelessness resoutive resow resp respace respade respan respangle resparkle respeak respect respectability respectabilize respectable respectableness respectably respectant respecter respectful respectfully respectfulness respecting respective respectively respectiveness respectless respectlessly respectlessness respectworthy respell respersive respin respirability respirable respirableness respiration respirational respirative respirator respiratored respiratorium respiratory respire respirit respirometer respite respiteless resplend resplendence resplendency resplendent resplendently resplice resplit respoke respond responde respondence respondency respondent respondentia responder responsal responsary response responseless responser responsibility responsible responsibleness responsibly responsion responsive responsively responsiveness responsivity responsorial responsory respot respray respread respring resprout respue resquare resqueak ressaidar ressala ressaldar ressaut rest restable restack restaff restain restainable restake restamp restandardization restandardize restant restart restate restatement restaur restaurant restaurate restaurateur restauration restbalk resteal resteel resteep restem restep rester resterilize restes restful restfully restfulness restharrow resthouse Restiaceae restiaceous restiad restibrachium restiff restiffen restiffener restiffness restifle restiform restigmatize restimulate restimulation resting restingly Restio Restionaceae restionaceous restipulate restipulation restipulatory restir restis restitch restitute restitution restitutionism restitutionist restitutive restitutor restitutory restive restively restiveness restless restlessly restlessness restock restopper restorable restorableness restoral restoration restorationer restorationism restorationist restorative restoratively restorativeness restorator restoratory restore restorer restow restowal restproof restraighten restrain restrainability restrained restrainedly restrainedness restrainer restraining restrainingly restraint restraintful restrap restratification restream restrengthen restress restretch restrict restricted restrictedly restrictedness restriction restrictionary restrictionist restrictive restrictively restrictiveness restrike restring restringe restringency restringent restrip restrive restroke restudy restuff restward restwards resty restyle resubject resubjection resubjugate resublimation resublime resubmerge resubmission resubmit resubordinate resubscribe resubscriber resubscription resubstitute resubstitution resucceed resuck resudation resue resuffer resufferance resuggest resuggestion resuing resuit result resultance resultancy resultant resultantly resultative resultful resultfully resulting resultingly resultive resultless resultlessly resultlessness resumability resumable resume resumer resummon resummons resumption resumptive resumptively resun resup resuperheat resupervise resupinate resupinated resupination resupine resupply resupport resuppose resupposition resuppress resuppression resurface resurge resurgence resurgency resurgent resurprise resurrect resurrectible resurrection resurrectional resurrectionary resurrectioner resurrectioning resurrectionism resurrectionist resurrectionize resurrective resurrector resurrender resurround resurvey resuscitable resuscitant resuscitate resuscitation resuscitative resuscitator resuspect resuspend resuspension reswage reswallow resward reswarm reswear resweat resweep reswell reswill reswim resyllabification resymbolization resymbolize resynthesis resynthesize ret retable retack retackle retag retail retailer retailment retailor retain retainability retainable retainableness retainal retainder retainer retainership retaining retake retaker retaliate retaliation retaliationist retaliative retaliator retaliatory retalk retama retame retan retanner retape retard retardance retardant retardate retardation retardative retardatory retarded retardence retardent retarder retarding retardingly retardive retardment retardure retare retariff retaste retation retattle retax retaxation retch reteach retecious retelegraph retelephone retell retelling retem retemper retempt retemptation retenant retender retene retent retention retentionist retentive retentively retentiveness retentivity retentor Retepora retepore Reteporidae retest retexture rethank rethatch rethaw rethe retheness rethicken rethink rethrash rethread rethreaten rethresh rethresher rethrill rethrive rethrone rethrow rethrust rethunder retia retial Retiariae retiarian retiarius retiary reticella reticello reticence reticency reticent reticently reticket reticle reticula reticular Reticularia reticularian reticularly reticulary reticulate reticulated reticulately reticulation reticulatocoalescent reticulatogranulate reticulatoramose reticulatovenose reticule reticuled reticulin reticulitis reticulocyte reticulocytosis reticuloramose Reticulosa reticulose reticulovenose reticulum retie retier retiform retighten retile retill retimber retime retin retina retinacular retinaculate retinaculum retinal retinalite retinasphalt retinasphaltum retincture retinene retinerved retinian retinispora retinite retinitis retinize retinker retinoblastoma retinochorioid retinochorioidal retinochorioiditis retinoid retinol retinopapilitis retinophoral retinophore retinoscope retinoscopic retinoscopically retinoscopist retinoscopy Retinospora retinue retinula retinular retinule retip retiracied retiracy retirade retiral retire retired retiredly retiredness retirement retirer retiring retiringly retiringness retistene retoast retold retolerate retoleration retomb retonation retook retool retooth retoother retort retortable retorted retorter retortion retortive retorture retoss retotal retouch retoucher retouching retouchment retour retourable retrace retraceable retracement retrack retract retractability retractable retractation retracted retractibility retractible retractile retractility retraction retractive retractively retractiveness retractor retrad retrade retradition retrahent retrain retral retrally retramp retrample retranquilize retranscribe retranscription retransfer retransference retransfigure retransform retransformation retransfuse retransit retranslate retranslation retransmission retransmissive retransmit retransmute retransplant retransport retransportation retravel retraverse retraxit retread retreat retreatal retreatant retreater retreatful retreating retreatingness retreative retreatment retree retrench retrenchable retrencher retrenchment retrial retribute retribution retributive retributively retributor retributory retricked retrievability retrievable retrievableness retrievably retrieval retrieve retrieveless retrievement retriever retrieverish retrim retrimmer retrip retroact retroaction retroactive retroactively retroactivity retroalveolar retroauricular retrobronchial retrobuccal retrobulbar retrocaecal retrocardiac retrocecal retrocede retrocedence retrocedent retrocervical retrocession retrocessional retrocessionist retrocessive retrochoir retroclavicular retroclusion retrocognition retrocognitive retrocolic retroconsciousness retrocopulant retrocopulation retrocostal retrocouple retrocoupler retrocurved retrodate retrodeviation retrodisplacement retroduction retrodural retroesophageal retroflected retroflection retroflex retroflexed retroflexion retroflux retroform retrofract retrofracted retrofrontal retrogastric retrogenerative retrogradation retrogradatory retrograde retrogradely retrogradient retrogradingly retrogradism retrogradist retrogress retrogression retrogressionist retrogressive retrogressively retrohepatic retroinfection retroinsular retroiridian retroject retrojection retrojugular retrolabyrinthine retrolaryngeal retrolingual retrolocation retromammary retromammillary retromandibular retromastoid retromaxillary retromigration retromingent retromingently retromorphosed retromorphosis retronasal retroperitoneal retroperitoneally retropharyngeal retropharyngitis retroplacental retroplexed retroposed retroposition retropresbyteral retropubic retropulmonary retropulsion retropulsive retroreception retrorectal retroreflective retrorenal retrorse retrorsely retroserrate retroserrulate retrospect retrospection retrospective retrospectively retrospectiveness retrospectivity retrosplenic retrostalsis retrostaltic retrosternal retrosusception retrot retrotarsal retrotemporal retrothyroid retrotracheal retrotransfer retrotransference retrotympanic retrousse retrovaccinate retrovaccination retrovaccine retroverse retroversion retrovert retrovision retroxiphoid retrude retrue retrusible retrusion retrust retry retted retter rettery retting rettory retube retuck retumble retumescence retune returban returf returfer return returnability returnable returned returner returnless returnlessly retuse retwine retwist retying retype retzian Reub Reuben Reubenites Reuchlinian Reuchlinism Reuel reundercut reundergo reundertake reundulate reundulation reune reunfold reunification reunify reunion reunionism reunionist reunionistic reunitable reunite reunitedly reuniter reunition reunitive reunpack reuphold reupholster reuplift reurge reuse reutilization reutilize reutter reutterance rev revacate revaccinate revaccination revalenta revalescence revalescent revalidate revalidation revalorization revalorize revaluate revaluation revalue revamp revamper revampment revaporization revaporize revarnish revary reve reveal revealability revealable revealableness revealed revealedly revealer revealing revealingly revealingness revealment revegetate revegetation revehent reveil reveille revel revelability revelant revelation revelational revelationer revelationist revelationize revelative revelator revelatory reveler revellent revelly revelment revelrout revelry revenant revend revender revendicate revendication reveneer revenge revengeable revengeful revengefully revengefulness revengeless revengement revenger revengingly revent reventilate reventure revenual revenue revenued revenuer rever reverable reverb reverbatory reverberant reverberate reverberation reverberative reverberator reverberatory reverbrate reverdure revere revered reverence reverencer reverend reverendly reverendship reverent reverential reverentiality reverentially reverentialness reverently reverentness reverer reverie reverification reverify reverist revers reversability reversable reversal reverse reversed reversedly reverseful reverseless reversely reversement reverser reverseways reversewise reversi reversibility reversible reversibleness reversibly reversification reversifier reversify reversing reversingly reversion reversionable reversional reversionally reversionary reversioner reversionist reversis reversist reversive reverso revert revertal reverter revertibility revertible revertive revertively revery revest revestiary revestry revet revete revetement revetment revibrate revibration revibrational revictorious revictory revictual revictualment revie review reviewability reviewable reviewage reviewal reviewer revieweress reviewish reviewless revigorate revigoration revile revilement reviler reviling revilingly revindicate revindication reviolate reviolation revirescence revirescent Revisable revisable revisableness revisal revise Revised revisee reviser revisership revisible revision revisional revisionary revisionism revisionist revisit revisitant revisitation revisor revisory revisualization revisualize revitalization revitalize revitalizer revivability revivable revivably revival revivalism revivalist revivalistic revivalize revivatory revive revivement reviver revivification revivifier revivify reviving revivingly reviviscence reviviscency reviviscent reviviscible revivor revocability revocable revocableness revocably revocation revocative revocatory revoice revokable revoke revokement revoker revokingly revolant revolatilize revolt revolter revolting revoltingly revoltress revolubility revoluble revolubly revolunteer revolute revoluted revolution revolutional revolutionally revolutionarily revolutionariness revolutionary revolutioneering revolutioner revolutionism revolutionist revolutionize revolutionizement revolutionizer revolvable revolvably revolve revolvement revolvency revolver revolving revolvingly revomit revote revue revuette revuist revulsed revulsion revulsionary revulsive revulsively rewade rewager rewake rewaken rewall rewallow reward rewardable rewardableness rewardably rewardedly rewarder rewardful rewardfulness rewarding rewardingly rewardless rewardproof rewarehouse rewarm rewarn rewash rewater rewave rewax rewaybill rewayle reweaken rewear reweave rewed reweigh reweigher reweight rewelcome reweld rewend rewet rewhelp rewhirl rewhisper rewhiten rewiden rewin rewind rewinder rewirable rewire rewish rewithdraw rewithdrawal rewood reword rework reworked rewound rewove rewoven rewrap rewrite rewriter Rex rex rexen reyield Reynard Reynold reyoke reyouth rezbanyite rhabdite rhabditiform Rhabditis rhabdium Rhabdocarpum Rhabdocoela rhabdocoelan rhabdocoele Rhabdocoelida rhabdocoelidan rhabdocoelous rhabdoid rhabdoidal rhabdolith rhabdom rhabdomal rhabdomancer rhabdomancy rhabdomantic rhabdomantist Rhabdomonas rhabdomyoma rhabdomyosarcoma rhabdomysarcoma rhabdophane rhabdophanite Rhabdophora rhabdophoran Rhabdopleura rhabdopod rhabdos rhabdosome rhabdosophy rhabdosphere rhabdus Rhacianectes Rhacomitrium Rhacophorus Rhadamanthine Rhadamanthus Rhadamanthys Rhaetian Rhaetic rhagades rhagadiform rhagiocrin rhagionid Rhagionidae rhagite Rhagodia rhagon rhagonate rhagose rhamn Rhamnaceae rhamnaceous rhamnal Rhamnales rhamnetin rhamninase rhamninose rhamnite rhamnitol rhamnohexite rhamnohexitol rhamnohexose rhamnonic rhamnose rhamnoside Rhamnus rhamphoid Rhamphorhynchus Rhamphosuchus rhamphotheca Rhapidophyllum Rhapis rhapontic rhaponticin rhapontin rhapsode rhapsodic rhapsodical rhapsodically rhapsodie rhapsodism rhapsodist rhapsodistic rhapsodize rhapsodomancy rhapsody Rhaptopetalaceae rhason rhasophore rhatania rhatany rhe Rhea rhea rheadine Rheae rhebok rhebosis rheeboc rheebok rheen rhegmatype rhegmatypy Rhegnopteri rheic Rheidae Rheiformes rhein rheinic rhema rhematic rhematology rheme Rhemish Rhemist Rhenish rhenium rheobase rheocrat rheologist rheology rheometer rheometric rheometry rheophile rheophore rheophoric rheoplankton rheoscope rheoscopic rheostat rheostatic rheostatics rheotactic rheotan rheotaxis rheotome rheotrope rheotropic rheotropism rhesian rhesus rhetor rhetoric rhetorical rhetorically rhetoricalness rhetoricals rhetorician rhetorize Rheum rheum rheumarthritis rheumatalgia rheumatic rheumatical rheumatically rheumaticky rheumatism rheumatismal rheumatismoid rheumative rheumatiz rheumatize rheumatoid rheumatoidal rheumatoidally rheumed rheumic rheumily rheuminess rheumy Rhexia rhexis rhigolene rhigosis rhigotic Rhina rhinal rhinalgia Rhinanthaceae Rhinanthus rhinarium rhincospasm rhine Rhineland Rhinelander rhinencephalic rhinencephalon rhinencephalous rhinenchysis Rhineodon Rhineodontidae rhinestone Rhineura rhineurynter Rhinidae rhinion rhinitis rhino Rhinobatidae Rhinobatus rhinobyon rhinocaul rhinocele rhinocelian rhinocerial rhinocerian rhinocerine rhinoceroid rhinoceros rhinoceroslike rhinocerotic Rhinocerotidae rhinocerotiform rhinocerotine rhinocerotoid rhinochiloplasty Rhinoderma rhinodynia rhinogenous rhinolalia rhinolaryngology rhinolaryngoscope rhinolite rhinolith rhinolithic rhinological rhinologist rhinology rhinolophid Rhinolophidae rhinolophine rhinopharyngeal rhinopharyngitis rhinopharynx Rhinophidae Rhinophis rhinophonia rhinophore rhinophyma rhinoplastic rhinoplasty rhinopolypus Rhinoptera Rhinopteridae rhinorrhagia rhinorrhea rhinorrheal rhinoscleroma rhinoscope rhinoscopic rhinoscopy rhinosporidiosis Rhinosporidium rhinotheca rhinothecal Rhinthonic Rhinthonica rhipidate rhipidion Rhipidistia rhipidistian rhipidium Rhipidoglossa rhipidoglossal rhipidoglossate Rhipidoptera rhipidopterous rhipiphorid Rhipiphoridae Rhipiptera rhipipteran rhipipterous Rhipsalis Rhiptoglossa rhizanthous rhizautoicous Rhizina Rhizinaceae rhizine rhizinous Rhizobium rhizocarp Rhizocarpeae rhizocarpean rhizocarpian rhizocarpic rhizocarpous rhizocaul rhizocaulus Rhizocephala rhizocephalan rhizocephalous rhizocorm Rhizoctonia rhizoctoniose rhizodermis Rhizodus Rhizoflagellata rhizoflagellate rhizogen rhizogenetic rhizogenic rhizogenous rhizoid rhizoidal rhizoma rhizomatic rhizomatous rhizome rhizomelic rhizomic rhizomorph rhizomorphic rhizomorphoid rhizomorphous rhizoneure rhizophagous rhizophilous Rhizophora Rhizophoraceae rhizophoraceous rhizophore rhizophorous rhizophyte rhizoplast rhizopod Rhizopoda rhizopodal rhizopodan rhizopodist rhizopodous Rhizopogon Rhizopus rhizosphere Rhizostomae Rhizostomata rhizostomatous rhizostome rhizostomous Rhizota rhizotaxis rhizotaxy rhizote rhizotic rhizotomi rhizotomy rho Rhoda rhodaline Rhodamine rhodamine rhodanate Rhodanian rhodanic rhodanine rhodanthe rhodeose Rhodes Rhodesian Rhodesoid rhodeswood Rhodian rhodic rhoding rhodinol rhodite rhodium rhodizite rhodizonic Rhodobacteriaceae Rhodobacterioideae rhodochrosite Rhodococcus Rhodocystis rhodocyte rhododendron rhodolite Rhodomelaceae rhodomelaceous rhodonite Rhodope rhodophane Rhodophyceae rhodophyceous rhodophyll Rhodophyllidaceae Rhodophyta rhodoplast rhodopsin Rhodora Rhodoraceae rhodorhiza rhodosperm Rhodospermeae rhodospermin rhodospermous Rhodospirillum Rhodothece Rhodotypos Rhodymenia Rhodymeniaceae rhodymeniaceous Rhodymeniales Rhoeadales Rhoecus Rhoeo rhomb rhombencephalon rhombenporphyr rhombic rhombical rhombiform rhomboclase rhomboganoid Rhomboganoidei rhombogene rhombogenic rhombogenous rhombohedra rhombohedral rhombohedrally rhombohedric rhombohedron rhomboid rhomboidal rhomboidally rhomboideus rhomboidly rhomboquadratic rhomborectangular rhombos rhombovate Rhombozoa rhombus rhonchal rhonchial rhonchus Rhonda rhopalic rhopalism rhopalium Rhopalocera rhopaloceral rhopalocerous Rhopalura rhotacism rhotacismus rhotacistic rhotacize rhubarb rhubarby rhumb rhumba rhumbatron Rhus rhyacolite rhyme rhymeless rhymelet rhymemaker rhymemaking rhymeproof rhymer rhymery rhymester rhymewise rhymic rhymist rhymy Rhynchobdellae Rhynchobdellida Rhynchocephala Rhynchocephali Rhynchocephalia rhynchocephalian rhynchocephalic rhynchocephalous Rhynchocoela rhynchocoelan rhynchocoelic rhynchocoelous rhyncholite Rhynchonella Rhynchonellacea Rhynchonellidae rhynchonelloid Rhynchophora rhynchophoran rhynchophore rhynchophorous Rhynchopinae Rhynchops Rhynchosia Rhynchospora Rhynchota rhynchotal rhynchote rhynchotous rhynconellid Rhyncostomi Rhynia Rhyniaceae Rhynocheti Rhynsburger rhyobasalt rhyodacite rhyolite rhyolitic rhyotaxitic rhyparographer rhyparographic rhyparographist rhyparography rhypography rhyptic rhyptical rhysimeter Rhyssa rhythm rhythmal rhythmic rhythmical rhythmicality rhythmically rhythmicity rhythmicize rhythmics rhythmist rhythmizable rhythmization rhythmize rhythmless rhythmometer rhythmopoeia rhythmproof Rhytidodon rhytidome rhytidosis Rhytina Rhytisma rhyton ria rial riancy riant riantly riata rib ribald ribaldish ribaldly ribaldrous ribaldry riband Ribandism Ribandist ribandlike ribandmaker ribandry ribat ribaudequin ribaudred ribband ribbandry ribbed ribber ribbet ribbidge ribbing ribble ribbon ribbonback ribboner ribbonfish Ribbonism ribbonlike ribbonmaker Ribbonman ribbonry ribbonweed ribbonwood ribbony ribby ribe Ribes Ribhus ribless riblet riblike riboflavin ribonic ribonuclease ribonucleic ribose ribroast ribroaster ribroasting ribskin ribspare Ribston ribwork ribwort Ric Ricardian Ricardianism Ricardo Riccia Ricciaceae ricciaceous Ricciales rice ricebird riceland ricer ricey Rich rich Richard Richardia Richardsonia richdom Richebourg richellite richen riches richesse richling richly Richmond Richmondena richness richt richterite richweed ricin ricine ricinelaidic ricinelaidinic ricinic ricinine ricininic ricinium ricinoleate ricinoleic ricinolein ricinolic Ricinulei Ricinus ricinus Rick rick rickardite ricker ricketily ricketiness ricketish rickets Rickettsia rickettsial Rickettsiales rickettsialpox rickety rickey rickle rickmatic rickrack ricksha rickshaw rickstaddle rickstand rickstick Ricky rickyard ricochet ricolettaite ricrac rictal rictus rid ridable ridableness ridably riddam riddance riddel ridden ridder ridding riddle riddlemeree riddler riddling riddlingly riddlings ride rideable rideau riden rident rider ridered rideress riderless ridge ridgeband ridgeboard ridgebone ridged ridgel ridgelet ridgelike ridgeling ridgepiece ridgeplate ridgepole ridgepoled ridger ridgerope ridgetree ridgeway ridgewise ridgil ridging ridgingly ridgling ridgy ridibund ridicule ridiculer ridiculize ridiculosity ridiculous ridiculously ridiculousness riding ridingman ridotto rie riebeckite riem Riemannean Riemannian riempie rier Riesling rife rifely rifeness Riff riff Riffi Riffian riffle riffler riffraff Rifi Rifian rifle riflebird rifledom rifleman riflemanship rifleproof rifler riflery rifleshot rifling rift rifter riftless rifty rig rigadoon rigamajig rigamarole rigation rigbane Rigel Rigelian rigescence rigescent riggald rigger rigging riggish riggite riggot right rightabout righten righteous righteously righteousness righter rightful rightfully rightfulness rightheaded righthearted rightist rightle rightless rightlessness rightly rightmost rightness righto rightship rightward rightwardly rightwards righty rigid rigidify rigidist rigidity rigidly rigidness rigidulous rigling rigmaree rigmarole rigmarolery rigmarolic rigmarolish rigmarolishly rignum rigol rigolette rigor rigorism rigorist rigoristic rigorous rigorously rigorousness rigsby rigsdaler Rigsmaal Rigsmal rigwiddie rigwiddy Rik Rikari rikisha rikk riksha rikshaw Riksmaal Riksmal rilawa rile riley rill rillet rillett rillette rillock rillstone rilly rim rima rimal rimate rimbase rime rimeless rimer rimester rimfire rimiform rimland rimless rimmaker rimmaking rimmed rimmer rimose rimosely rimosity rimous rimpi rimple rimption rimrock rimu rimula rimulose rimy Rinaldo rinceau rinch rincon Rind rind Rinde rinded rinderpest rindle rindless rindy rine ring ringable Ringatu ringbark ringbarker ringbill ringbird ringbolt ringbone ringboned ringcraft ringdove ringe ringed ringent ringer ringeye ringgiver ringgiving ringgoer ringhals ringhead ringiness ringing ringingly ringingness ringite ringle ringlead ringleader ringleaderless ringleadership ringless ringlet ringleted ringlety ringlike ringmaker ringmaking ringman ringmaster ringneck ringsail ringside ringsider ringster ringtail ringtaw ringtime ringtoss ringwalk ringwall ringwise ringworm ringy rink rinka rinker rinkite rinncefada rinneite rinner rinsable rinse rinser rinsing rinthereout rintherout Rio rio riot rioter rioting riotingly riotist riotistic riotocracy riotous riotously riotousness riotproof riotry rip ripa ripal riparial riparian Riparii riparious ripcord ripe ripelike ripely ripen ripener ripeness ripening ripeningly riper ripgut ripicolous ripidolite ripienist ripieno ripier ripost riposte rippable ripper ripperman rippet rippier ripping rippingly rippingness rippit ripple rippleless rippler ripplet rippling ripplingly ripply rippon riprap riprapping ripsack ripsaw ripsnorter ripsnorting Ripuarian ripup riroriro risala risberm rise risen riser rishi rishtadar risibility risible risibleness risibles risibly rising risk risker riskful riskfulness riskily riskiness riskish riskless riskproof risky risorial risorius risp risper risque risquee Riss rissel risser Rissian rissle Rissoa rissoid Rissoidae rist ristori rit Rita rita Ritalynne ritardando Ritchey rite riteless ritelessness ritling ritornel ritornelle ritornello Ritschlian Ritschlianism rittingerite ritual ritualism ritualist ritualistic ritualistically rituality ritualize ritualless ritually ritzy riva rivage rival rivalable rivaless rivalism rivality rivalize rivalless rivalrous rivalry rivalship rive rivel rivell riven river riverain riverbank riverbush riverdamp rivered riverhead riverhood riverine riverish riverless riverlet riverlike riverling riverly riverman riverscape riverside riversider riverward riverwards riverwash riverway riverweed riverwise rivery rivet riveter rivethead riveting rivetless rivetlike Rivina riving rivingly Rivinian rivose Rivularia Rivulariaceae rivulariaceous rivulation rivulet rivulose rix rixatrix rixy riyal riziform rizzar rizzle rizzom rizzomed rizzonite Ro roach roachback road roadability roadable roadbed roadblock roadbook roadcraft roaded roader roadfellow roadhead roadhouse roading roadite roadless roadlessness roadlike roadman roadmaster roadside roadsider roadsman roadstead roadster roadstone roadtrack roadway roadweed roadwise roadworthiness roadworthy roam roamage roamer roaming roamingly roan roanoke roar roarer roaring roaringly roast roastable roaster roasting roastingly Rob rob robalito robalo roband robber robberproof robbery Robbin robbin robbing robe robeless Robenhausian rober roberd Roberdsman Robert Roberta Roberto Robigalia Robigus Robin robin robinet robing Robinia robinin robinoside roble robomb roborant roborate roboration roborative roborean roboreous robot robotesque robotian robotism robotistic robotization robotize robotlike robotry robur roburite robust robustful robustfully robustfulness robustic robusticity robustious robustiously robustiousness robustity robustly robustness roc rocambole Roccella Roccellaceae roccellic roccellin roccelline Rochea rochelime Rochelle rocher rochet rocheted rock rockable rockably rockaby rockabye rockallite Rockaway rockaway rockbell rockberry rockbird rockborn rockbrush rockcist rockcraft rockelay rocker rockery rocket rocketeer rocketer rocketlike rocketor rocketry rockety rockfall rockfish rockfoil rockhair rockhearted Rockies rockiness rocking rockingly rockish rocklay rockless rocklet rocklike rockling rockman rockrose rockshaft rockslide rockstaff rocktree rockward rockwards rockweed rockwood rockwork rocky rococo Rocouyenne rocta Rod rod rodd roddikin roddin rodding rode Rodent rodent Rodentia rodential rodentially rodentian rodenticidal rodenticide rodentproof rodeo Roderic Roderick rodge Rodger rodham Rodinal Rodinesque roding rodingite rodknight rodless rodlet rodlike rodmaker rodman Rodney rodney Rodolph Rodolphus rodomont rodomontade rodomontadist rodomontador rodsman rodster rodwood roe roeblingite roebuck roed roelike roentgen roentgenism roentgenization roentgenize roentgenogram roentgenograph roentgenographic roentgenographically roentgenography roentgenologic roentgenological roentgenologically roentgenologist roentgenology roentgenometer roentgenometry roentgenoscope roentgenoscopic roentgenoscopy roentgenotherapy roentgentherapy roer roestone roey rog rogan rogation Rogationtide rogative rogatory Roger roger Rogero rogersite roggle Rogue rogue roguedom rogueling roguery rogueship roguing roguish roguishly roguishness rohan Rohilla rohob rohun rohuna roi roid roil roily Roist roister roisterer roistering roisteringly roisterly roisterous roisterously roit Rok roka roke rokeage rokee rokelay roker rokey roky Roland Rolandic role roleo Rolf Rolfe roll rollable rollback rolled rollejee roller rollerer rollermaker rollermaking rollerman rollerskater rollerskating rolley rolleyway rolleywayman rolliche rollichie rollick rollicker rollicking rollickingly rollickingness rollicksome rollicksomeness rollicky rolling rollingly Rollinia rollix rollmop Rollo rollock rollway roloway Romaean Romagnese Romagnol Romagnole Romaic romaika Romain romaine Romaji romal Roman Romance romance romancealist romancean romanceful romanceish romanceishness romanceless romancelet romancelike romancemonger romanceproof romancer romanceress romancical romancing romancist romancy Romandom Romane Romanes Romanese Romanesque Romanhood Romanian Romanic Romaniform Romanish Romanism Romanist Romanistic Romanite Romanity romanium Romanization Romanize Romanizer Romanly Romansch Romansh romantic romantical romanticalism romanticality romantically romanticalness romanticism romanticist romanticistic romanticity romanticize romanticly romanticness romantism romantist Romany romanza romaunt rombos rombowline Rome romeite Romeo romerillo romero Romescot Romeshot Romeward Romewards Romic Romipetal Romish Romishly Romishness rommack Rommany Romney Romneya romp romper romping rompingly rompish rompishly rompishness rompu rompy Romulian Romulus Ron Ronald roncador Roncaglian roncet ronco rond rondache rondacher rondawel ronde rondeau rondel rondelet Rondeletia rondelier rondelle rondellier rondino rondle rondo rondoletto rondure rone Rong Ronga rongeur Ronni ronquil Ronsardian Ronsardism Ronsardist Ronsardize Ronsdorfer Ronsdorfian rontgen ronyon rood roodebok roodle roodstone roof roofage roofer roofing roofless rooflet rooflike roofman rooftree roofward roofwise roofy rooibok rooinek rook rooker rookeried rookery rookie rookish rooklet rooklike rooky rool room roomage roomed roomer roomful roomie roomily roominess roomkeeper roomless roomlet roommate roomstead roomth roomthily roomthiness roomthy roomward roomy roon roorback roosa Roosevelt Rooseveltian roost roosted rooster roosterfish roosterhood roosterless roosters roostership Root root rootage rootcap rooted rootedly rootedness rooter rootery rootfast rootfastness roothold rootiness rootle rootless rootlessness rootlet rootlike rootling rootstalk rootstock rootwalt rootward rootwise rootworm rooty roove ropable rope ropeable ropeband ropebark ropedance ropedancer ropedancing ropelayer ropelaying ropelike ropemaker ropemaking ropeman roper roperipe ropery ropes ropesmith ropetrick ropewalk ropewalker ropeway ropework ropily ropiness roping ropish ropishness ropp ropy roque roquelaure roquer roquet roquette roquist roral roratorio Rori roric Roridula Roridulaceae roriferous rorifluent Roripa Rorippa roritorious rorqual rorty rorulent rory Rosa Rosabel Rosabella Rosaceae rosacean rosaceous rosal Rosales Rosalia Rosalie Rosalind Rosaline Rosamond rosanilin rosaniline rosarian rosario rosarium rosaruby rosary rosated Roschach roscherite roscid roscoelite rose roseal roseate roseately rosebay rosebud rosebush rosed rosedrop rosefish rosehead rosehill rosehiller roseine rosel roseless roselet roselike roselite rosella rosellate roselle Rosellinia rosemary Rosenbergia rosenbuschite roseola roseolar roseoliform roseolous roseous roseroot rosery roset rosetan rosetangle rosetime Rosetta rosette rosetted rosetty rosetum rosety roseways rosewise rosewood rosewort Rosicrucian Rosicrucianism rosied rosier rosieresite rosilla rosillo rosily rosin rosinate rosinduline Rosine rosiness rosinous rosinweed rosinwood rosiny rosland rosmarine Rosmarinus Rosminian Rosminianism rosoli rosolic rosolio rosolite rosorial Ross ross rosser rossite rostel rostellar Rostellaria rostellarian rostellate rostelliform rostellum roster rostra rostral rostrally rostrate rostrated rostriferous rostriform rostroantennary rostrobranchial rostrocarinate rostrocaudal rostroid rostrolateral rostrular rostrulate rostrulum rostrum rosular rosulate rosy rot rota rotacism Rotal rotal Rotala Rotalia rotalian rotaliform rotaliiform rotaman rotameter rotan Rotanev rotang Rotarian Rotarianism rotarianize Rotary rotary rotascope rotatable rotate rotated rotating rotation rotational rotative rotatively rotativism rotatodentate rotatoplane rotator Rotatoria rotatorian rotatory rotch rote rotella rotenone roter rotge rotgut rother rothermuck rotifer Rotifera rotiferal rotiferan rotiferous rotiform rotisserie roto rotograph rotogravure rotor rotorcraft rotproof Rotse rottan rotten rottenish rottenly rottenness rottenstone rotter rotting rottle rottlera rottlerin rottock rottolo rotula rotulad rotular rotulet rotulian rotuliform rotulus rotund rotunda rotundate rotundifoliate rotundifolious rotundiform rotundify rotundity rotundly rotundness rotundo rotundotetragonal roub roucou roud roue rouelle rouge rougeau rougeberry rougelike rougemontite rougeot rough roughage roughcast roughcaster roughdraft roughdraw roughdress roughdry roughen roughener rougher roughet roughhearted roughheartedness roughhew roughhewer roughhewn roughhouse roughhouser roughhousing roughhousy roughie roughing roughings roughish roughishly roughishness roughleg roughly roughness roughometer roughride roughrider roughroot roughscuff roughsetter roughshod roughslant roughsome roughstring roughstuff roughtail roughtailed roughwork roughwrought roughy rougy rouille rouky roulade rouleau roulette Rouman Roumeliote roun rounce rounceval rouncy round roundabout roundaboutly roundaboutness rounded roundedly roundedness roundel roundelay roundeleer rounder roundfish roundhead roundheaded roundheadedness roundhouse rounding roundish roundishness roundlet roundline roundly roundmouthed roundness roundnose roundnosed roundridge roundseam roundsman roundtail roundtop roundtree roundup roundwise roundwood roundworm roundy roup rouper roupet roupily roupingwife roupit roupy rouse rouseabout rousedness rousement rouser rousing rousingly Rousseau Rousseauan Rousseauism Rousseauist Rousseauistic Rousseauite Roussellian roussette Roussillon roust roustabout rouster rousting rout route router routh routhercock routhie routhiness routhy routinary routine routineer routinely routing routinish routinism routinist routinization routinize routivarite routous routously rouvillite rove rover rovet rovetto roving rovingly rovingness row rowable rowan rowanberry rowboat rowdily rowdiness rowdy rowdydow rowdydowdy rowdyish rowdyishly rowdyishness rowdyism rowdyproof rowed rowel rowelhead rowen Rowena rower rowet rowiness rowing Rowland rowlandite Rowleian rowlet Rowley Rowleyan rowlock rowport rowty rowy rox Roxana Roxane Roxanne Roxburgh Roxburghiaceae Roxbury Roxie Roxolani Roxy roxy Roy royal royale royalet royalism royalist royalization royalize royally royalty Royena royet royetness royetous royetously Roystonea royt rozum Rua ruach ruana rub rubasse rubato rubbed rubber rubberer rubberize rubberless rubberneck rubbernecker rubbernose rubbers rubberstone rubberwise rubbery rubbing rubbingstone rubbish rubbishing rubbishingly rubbishly rubbishry rubbishy rubble rubbler rubblestone rubblework rubbly rubdown Rube rubedinous rubedity rubefacient rubefaction rubelet rubella rubelle rubellite rubellosis Rubensian rubeola rubeolar rubeoloid ruberythric ruberythrinic rubescence rubescent Rubia Rubiaceae rubiaceous Rubiales rubianic rubiate rubiator rubican rubicelle Rubicola Rubicon rubiconed rubicund rubicundity rubidic rubidine rubidium rubied rubific rubification rubificative rubify rubiginous rubijervine rubine rubineous rubious ruble rublis rubor rubric rubrica rubrical rubricality rubrically rubricate rubrication rubricator rubrician rubricism rubricist rubricity rubricize rubricose rubrific rubrification rubrify rubrisher rubrospinal rubstone Rubus ruby rubylike rubytail rubythroat rubywise rucervine Rucervus Ruchbah ruche ruching ruck rucker ruckle ruckling rucksack rucksey ruckus rucky ructation ruction rud rudas Rudbeckia rudd rudder rudderhead rudderhole rudderless rudderlike rudderpost rudderstock ruddied ruddily ruddiness ruddle ruddleman ruddock ruddy ruddyish rude rudely rudeness rudented rudenture ruderal rudesby Rudesheimer rudge rudiment rudimental rudimentarily rudimentariness rudimentary rudimentation rudish Rudista Rudistae rudistan rudistid rudity Rudmasday Rudolf Rudolph Rudolphus Rudy rue rueful ruefully ruefulness ruelike ruelle Ruellia ruen ruer ruesome ruesomeness ruewort rufescence rufescent ruff ruffable ruffed ruffer ruffian ruffianage ruffiandom ruffianhood ruffianish ruffianism ruffianize ruffianlike ruffianly ruffiano ruffin ruffle ruffled ruffleless rufflement ruffler rufflike ruffliness ruffling ruffly ruficarpous ruficaudate ruficoccin ruficornate rufigallic rufoferruginous rufofulvous rufofuscous rufopiceous rufotestaceous rufous rufter rufulous Rufus rufus rug ruga rugate Rugbeian Rugby rugged ruggedly ruggedness Rugger rugging ruggle ruggy rugheaded ruglike rugmaker rugmaking Rugosa rugosa rugose rugosely rugosity rugous rugulose ruin ruinable ruinate ruination ruinatious ruinator ruined ruiner ruing ruiniform ruinlike ruinous ruinously ruinousness ruinproof Rukbat rukh rulable Rulander rule ruledom ruleless rulemonger ruler rulership ruling rulingly rull ruller rullion Rum rum rumal Ruman Rumanian rumbelow rumble rumblegarie rumblegumption rumblement rumbler rumbling rumblingly rumbly rumbo rumbooze rumbowline rumbowling rumbullion rumbumptious rumbustical rumbustious rumbustiousness rumchunder Rumelian rumen rumenitis rumenocentesis rumenotomy Rumex rumfustian rumgumption rumgumptious ruminal ruminant Ruminantia ruminantly ruminate ruminating ruminatingly rumination ruminative ruminatively ruminator rumkin rumless rumly rummage rummager rummagy rummer rummily rumminess rummish rummy rumness rumney rumor rumorer rumormonger rumorous rumorproof rumourmonger rump rumpad rumpadder rumpade Rumper rumple rumpless rumply rumpscuttle rumpuncheon rumpus rumrunner rumrunning rumshop rumswizzle rumtytoo run runabout runagate runaround runaway runback runboard runby runch runchweed runcinate rundale Rundi rundle rundlet rune runecraft runed runefolk runeless runelike runer runesmith runestaff runeword runfish rung runghead rungless runholder runic runically runiform runite runkeeper runkle runkly runless runlet runman runnable runnel runner runnet running runningly runny runoff runologist runology runout runover runproof runrig runround runt runted runtee runtiness runtish runtishly runtishness runty runway rupa rupee Rupert rupestral rupestrian rupestrine rupia rupiah rupial Rupicapra Rupicaprinae rupicaprine Rupicola Rupicolinae rupicoline rupicolous rupie rupitic Ruppia ruptile ruption ruptive ruptuary rupturable rupture ruptured rupturewort rural ruralism ruralist ruralite rurality ruralization ruralize rurally ruralness rurban ruridecanal rurigenous Ruritania Ruritanian ruru Rus Rusa Ruscus ruse rush rushbush rushed rushen rusher rushiness rushing rushingly rushingness rushland rushlight rushlighted rushlike rushlit rushy Rusin rusine rusk ruskin Ruskinian rusky rusma rusot ruspone Russ russel Russelia Russell Russellite Russene russet russeting russetish russetlike russety Russia russia Russian Russianism Russianist Russianization Russianize Russification Russificator Russifier Russify Russine Russism Russniak Russolatrous Russolatry Russomania Russomaniac Russomaniacal Russophile Russophilism Russophilist Russophobe Russophobia Russophobiac Russophobism Russophobist russud Russula rust rustable rustful rustic rustical rustically rusticalness rusticate rustication rusticator rusticial rusticism rusticity rusticize rusticly rusticness rusticoat rustily rustiness rustle rustler rustless rustling rustlingly rustlingness rustly rustproof rustre rustred Rusty rusty rustyback rustyish ruswut rut Ruta rutabaga Rutaceae rutaceous rutaecarpine rutate rutch rutelian Rutelinae Ruth ruth ruthenate Ruthene Ruthenian ruthenic ruthenious ruthenium ruthenous ruther rutherford rutherfordine rutherfordite ruthful ruthfully ruthfulness ruthless ruthlessly ruthlessness rutic rutidosis rutilant rutilated rutile rutilous rutin rutinose Rutiodon ruttee rutter ruttiness ruttish ruttishly ruttishness rutty Rutuli rutyl rutylene ruvid rux rvulsant ryal ryania rybat ryder rye ryen Rymandra ryme Rynchospora rynchosporous rynd rynt ryot ryotwar ryotwari rype rypeck rytidosis Rytina Ryukyu S s sa saa Saad Saan Saarbrucken sab Saba sabadilla sabadine sabadinine Sabaean Sabaeanism Sabaeism sabaigrass Sabaism Sabaist Sabal Sabalaceae sabalo Saban sabanut Sabaoth Sabathikos Sabazian Sabazianism Sabazios sabbat Sabbatarian Sabbatarianism Sabbatary Sabbatean Sabbath sabbath Sabbathaian Sabbathaic Sabbathaist Sabbathbreaker Sabbathbreaking Sabbathism Sabbathize Sabbathkeeper Sabbathkeeping Sabbathless Sabbathlike Sabbathly Sabbatia sabbatia Sabbatian Sabbatic sabbatic Sabbatical sabbatical Sabbatically Sabbaticalness sabbatine sabbatism Sabbatist Sabbatization Sabbatize sabbaton sabbitha sabdariffa sabe sabeca Sabella sabella sabellan Sabellaria sabellarian Sabelli Sabellian Sabellianism Sabellianize sabellid Sabellidae sabelloid saber saberbill sabered saberleg saberlike saberproof sabertooth saberwing Sabia Sabiaceae sabiaceous Sabian Sabianism sabicu Sabik Sabina sabina Sabine sabine Sabinian sabino Sabir sable sablefish sableness sably sabora saboraim sabot sabotage saboted saboteur sabotine Sabra sabra sabretache Sabrina Sabromin sabromin Sabuja sabuline sabulite sabulose sabulosity sabulous sabulum saburra saburral saburration sabutan sabzi Sac sac Sacae sacalait sacaline sacaton sacatra sacbrood saccade saccadic Saccammina saccate saccated Saccha saccharamide saccharase saccharate saccharated saccharephidrosis saccharic saccharide sacchariferous saccharification saccharifier saccharify saccharilla saccharimeter saccharimetric saccharimetrical saccharimetry saccharin saccharinate saccharinated saccharine saccharineish saccharinely saccharinic saccharinity saccharization saccharize saccharobacillus saccharobiose saccharobutyric saccharoceptive saccharoceptor saccharochemotropic saccharocolloid saccharofarinaceous saccharogalactorrhea saccharogenic saccharohumic saccharoid saccharoidal saccharolactonic saccharolytic saccharometabolic saccharometabolism saccharometer saccharometric saccharometry saccharomucilaginous Saccharomyces saccharomyces Saccharomycetaceae saccharomycetaceous Saccharomycetales saccharomycete Saccharomycetes saccharomycetic saccharomycosis saccharon saccharonate saccharone saccharonic saccharophylly saccharorrhea saccharoscope saccharose saccharostarchy saccharosuria saccharotriose saccharous saccharulmic saccharulmin Saccharum saccharum saccharuria sacciferous sacciform Saccobranchiata saccobranchiate Saccobranchus saccoderm Saccolabium saccolabium saccomyian saccomyid Saccomyidae Saccomyina saccomyine saccomyoid Saccomyoidea saccomyoidean Saccomys Saccopharyngidae Saccopharynx Saccorhiza saccos saccular sacculate sacculated sacculation saccule Sacculina sacculoutricular sacculus saccus sacellum sacerdocy sacerdotage sacerdotal sacerdotalism sacerdotalist sacerdotalize sacerdotally sacerdotical sacerdotism sachamaker sachem sachemdom sachemic sachemship sachet Sacheverell Sacian sack sackage sackamaker sackbag sackbut sackcloth sackclothed sackdoudle sacked sacken sacker sackful sacking sackless sacklike sackmaker sackmaking sackman sacktime saclike saco sacope sacque sacra sacrad sacral sacralgia sacralization sacrament sacramental sacramentalism sacramentalist sacramentality sacramentally sacramentalness Sacramentarian sacramentarian sacramentarianism sacramentarist Sacramentary sacramentary sacramenter sacramentism sacramentize Sacramento sacramentum sacraria sacrarial sacrarium sacrectomy sacred sacredly sacredness sacrificable sacrificant Sacrificati sacrification sacrificator sacrificatory sacrificature sacrifice sacrificer sacrificial sacrificially sacrificing sacrilege sacrileger sacrilegious sacrilegiously sacrilegiousness sacrilegist sacrilumbal sacrilumbalis sacring Sacripant sacrist sacristan sacristy sacro sacrocaudal sacrococcygeal sacrococcygean sacrococcygeus sacrococcyx sacrocostal sacrocotyloid sacrocotyloidean sacrocoxalgia sacrocoxitis sacrodorsal sacrodynia sacrofemoral sacroiliac sacroinguinal sacroischiac sacroischiadic sacroischiatic sacrolumbal sacrolumbalis sacrolumbar sacropectineal sacroperineal sacropictorial sacroposterior sacropubic sacrorectal sacrosanct sacrosanctity sacrosanctness sacrosciatic sacrosecular sacrospinal sacrospinalis sacrospinous sacrotomy sacrotuberous sacrovertebral sacrum sad Sadachbia Sadalmelik Sadalsuud sadden saddening saddeningly saddik saddirham saddish saddle saddleback saddlebag saddlebow saddlecloth saddled saddleleaf saddleless saddlelike saddlenose saddler saddlery saddlesick saddlesore saddlesoreness saddlestead saddletree saddlewise saddling Sadducaic Sadducean Sadducee Sadduceeism Sadduceeist Sadducism Sadducize sade sadh sadhe sadhearted sadhu sadic Sadie sadiron sadism sadist sadistic sadistically Sadite sadly sadness sado sadomasochism Sadr sadr saecula saeculum Saeima saernaite saeter saeume Safar safari Safavi Safawid safe safeblower safeblowing safebreaker safebreaking safecracking safeguard safeguarder safehold safekeeper safekeeping safelight safely safemaker safemaking safen safener safeness safety Saffarian Saffarid saffian safflor safflorite safflow safflower saffron saffroned saffrontree saffronwood saffrony Safi Safine Safini safranin safranine safranophile safrole saft sag saga sagaciate sagacious sagaciously sagaciousness sagacity Sagai sagaie sagaman sagamite sagamore sagapenum sagathy sage sagebrush sagebrusher sagebush sageleaf sagely sagene sageness sagenite sagenitic Sageretia sagerose sageship sagewood sagger sagging saggon saggy saghavart Sagina saginate sagination saging Sagitarii sagitta sagittal sagittally Sagittaria Sagittariid Sagittarius sagittarius Sagittary sagittary sagittate Sagittid sagittiferous sagittiform sagittocyst sagittoid sagless sago sagoin sagolike Sagra saguaro Saguerus sagum saguran sagvandite sagwire sagy sah Sahadeva Sahaptin Sahara Saharan Saharian Saharic sahh sahib Sahibah Sahidic sahme Saho sahoukar sahukar sai saic said Saidi Saify saiga Saiid sail sailable sailage sailboat sailcloth sailed sailer sailfish sailflying sailing sailingly sailless sailmaker sailmaking sailor sailoring sailorizing sailorless sailorlike sailorly sailorman sailorproof sailplane sailship sailsman saily saim saimiri saimy sain Sainfoin saint saintdom sainted saintess sainthood saintish saintism saintless saintlike saintlily saintliness saintling saintly saintologist saintology Saintpaulia saintship saip Saiph sair sairly sairve sairy Saite saithe Saitic Saiva Saivism saj sajou Sak Saka Sakai Sakalava sake sakeber sakeen Sakel Sakelarides Sakell Sakellaridis saker sakeret Sakha saki sakieh Sakkara Saktism sakulya Sakyamuni Sal sal salaam salaamlike salability salable salableness salably salaceta salacious salaciously salaciousness salacity salacot salad salading salago salagrama salal salamandarin salamander salamanderlike Salamandra salamandrian Salamandridae salamandriform Salamandrina salamandrine salamandroid salambao Salaminian salamo salampore salangane salangid Salangidae Salar salar salariat salaried salary salaryless salat salay sale salegoer salele salema salenixon salep saleratus saleroom salesclerk Salesian saleslady salesman salesmanship salespeople salesperson salesroom saleswoman salework saleyard salfern Salian Saliaric Salic salic Salicaceae salicaceous Salicales Salicariaceae salicetum salicin salicional salicorn Salicornia salicyl salicylal salicylaldehyde salicylamide salicylanilide salicylase salicylate salicylic salicylide salicylidene salicylism salicylize salicylous salicyluric salicylyl salience salient Salientia salientian saliently saliferous salifiable salification salify saligenin saligot salimeter salimetry Salina salina Salinan salination saline Salinella salinelle salineness saliniferous salinification saliniform salinity salinize salinometer salinometry salinosulphureous salinoterreous Salisburia Salish Salishan salite salited Saliva saliva salival Salivan salivant salivary salivate salivation salivator salivatory salivous Salix salix salle sallee salleeman sallenders sallet sallier salloo sallow sallowish sallowness sallowy Sally sally Sallybloom sallyman sallywood Salm salma salmagundi salmiac salmine salmis Salmo Salmon salmon salmonberry Salmonella salmonella salmonellae salmonellosis salmonet salmonid Salmonidae salmoniform salmonlike salmonoid Salmonoidea Salmonoidei salmonsite salmwood salnatron Salol salol Salome salometer salometry salomon Salomonia Salomonian Salomonic salon saloon saloonist saloonkeeper saloop Salopian salopian salp Salpa salpa salpacean salpian salpicon Salpidae salpiform Salpiglossis salpiglossis salpingectomy salpingemphraxis salpinges salpingian salpingion salpingitic salpingitis salpingocatheterism salpingocele salpingocyesis salpingomalleus salpingonasal salpingopalatal salpingopalatine salpingoperitonitis salpingopexy salpingopharyngeal salpingopharyngeus salpingopterygoid salpingorrhaphy salpingoscope salpingostaphyline salpingostenochoria salpingostomatomy salpingostomy salpingotomy salpinx salpoid salse salsifis salsify salsilla Salsola Salsolaceae salsolaceous salsuginous salt salta saltant saltarella saltarello saltary saltate saltation saltativeness Saltator saltator Saltatoria saltatorial saltatorian saltatoric saltatorious saltatory saltbush saltcat saltcatch saltcellar salted saltee salten salter saltern saltery saltfat saltfoot salthouse saltier saltierra saltierwise Saltigradae saltigrade saltimbanco saltimbank saltimbankery saltine saltiness salting saltish saltishly saltishness saltless saltlessness saltly saltmaker saltmaking saltman saltmouth saltness saltometer saltorel saltpan saltpeter saltpetrous saltpond saltspoon saltspoonful saltsprinkler saltus saltweed saltwife saltworker saltworks saltwort salty salubrify salubrious salubriously salubriousness salubrity saluki salung salutarily salutariness salutary salutation salutational salutationless salutatious salutatorian salutatorily salutatorium salutatory salute saluter salutiferous salutiferously Salva salvability salvable salvableness salvably Salvadora salvadora Salvadoraceae salvadoraceous Salvadoran Salvadorian salvage salvageable salvagee salvageproof salvager salvaging Salvarsan salvarsan salvatella salvation salvational salvationism salvationist salvatory salve salveline Salvelinus salver salverform Salvia salvianin salvific salvifical salvifically Salvinia Salviniaceae salviniaceous Salviniales salviol salvo salvor salvy Salwey salzfelle Sam sam Samadera samadh samadhi samaj Samal saman Samandura Samani Samanid Samantha samara samaria samariform Samaritan Samaritaness Samaritanism samarium Samarkand samaroid samarra samarskite Samas samba Sambal sambal sambaqui sambar Sambara Sambathe sambhogakaya Sambo sambo Sambucaceae Sambucus sambuk sambuke sambunigrin Samburu same samekh samel sameliness samely samen sameness samesome Samgarnebo samh Samhain samhita Samian samiel Samir samiresite samiri samisen Samish samite samkara samlet sammel sammer sammier Sammy sammy Samnani Samnite Samoan Samogitian samogonka Samolus Samosatenian samothere Samotherium Samothracian samovar Samoyed Samoyedic samp sampaguita sampaloc sampan samphire sampi sample sampleman sampler samplery sampling Sampsaean Samsam samsara samshu Samsien samskara Samson samson Samsoness Samsonian Samsonic Samsonistic samsonite Samucan Samucu Samuel samurai Samydaceae San san sanability sanable sanableness sanai Sanand sanative sanativeness sanatoria sanatorium sanatory Sanballat sanbenito Sanche sancho sanct sancta sanctanimity sanctifiable sanctifiableness sanctifiably sanctificate sanctification sanctified sanctifiedly sanctifier sanctify sanctifyingly sanctilogy sanctiloquent sanctimonial sanctimonious sanctimoniously sanctimoniousness sanctimony sanction sanctionable sanctionary sanctionative sanctioner sanctionist sanctionless sanctionment sanctitude sanctity sanctologist Sanctology sanctorium sanctuaried sanctuarize sanctuary sanctum Sanctus Sancy sancyite sand sandak sandal sandaled sandaliform sandaling sandalwood sandalwort sandan sandarac sandaracin sandastros Sandawe sandbag sandbagger sandbank sandbin sandblast sandboard sandbox sandboy sandbur sandclub sandculture sanded Sandeep Sandemanian Sandemanianism Sandemanism Sander sander sanderling sanders sandfish sandflower sandglass sandheat sandhi sandiferous sandiness sanding Sandip sandiver sandix sandlapper sandless sandlike sandling sandman sandnatter sandnecker sandpaper sandpaperer sandpeep sandpiper sandproof Sandra sandrock sandspit sandspur sandstay sandstone sandstorm sandust sandweed sandweld sandwich sandwood sandworm sandwort Sandy sandy sandyish sane sanely saneness Sanetch Sanford Sanforized sang sanga Sangamon sangar sangaree sangei sanger sangerbund sangerfest Sanggil sangha Sangho Sangir Sangirese sanglant sangley Sangraal sangreeroot sangrel sangsue sanguicolous sanguifacient sanguiferous sanguification sanguifier sanguifluous sanguimotor sanguimotory sanguinaceous Sanguinaria sanguinarily sanguinariness sanguinary sanguine sanguineless sanguinely sanguineness sanguineobilious sanguineophlegmatic sanguineous sanguineousness sanguineovascular sanguinicolous sanguiniferous sanguinification sanguinism sanguinity sanguinivorous sanguinocholeric sanguinolency sanguinolent sanguinopoietic sanguinous Sanguisorba Sanguisorbaceae sanguisuge sanguisugent sanguisugous sanguivorous Sanhedrim Sanhedrin Sanhedrist Sanhita sanicle Sanicula sanidine sanidinic sanidinite sanies sanification sanify sanious sanipractic sanitarian sanitarily sanitarist sanitarium sanitary sanitate sanitation sanitationist sanitist sanitize Sanity sanity sanjak sanjakate sanjakbeg sanjakship Sanjay Sanjeev Sanjib sank sankha Sankhya sannaite Sannoisian sannup sannyasi sannyasin sanopurulent sanoserous Sanpoil sans Sansar sansei Sansevieria sanshach sansi Sanskrit Sanskritic Sanskritist Sanskritization Sanskritize sant Santa Santal santal Santalaceae santalaceous Santalales Santali santalic santalin santalol Santalum santalwood santapee Santee santene Santiago santimi santims santir Santo Santolina santon santonica santonin santoninic santorinite Santos sanukite Sanvitalia Sanyakoan sao Saoshyant sap sapa sapajou sapan sapanwood sapbush sapek Saperda sapful Sapharensian saphead sapheaded sapheadedness saphena saphenal saphenous saphie sapid sapidity sapidless sapidness sapience sapiency sapient sapiential sapientially sapientize sapiently sapin sapinda Sapindaceae sapindaceous Sapindales sapindaship Sapindus Sapium sapiutan saple sapless saplessness sapling saplinghood sapo sapodilla sapogenin saponaceous saponaceousness saponacity Saponaria saponarin saponary Saponi saponifiable saponification saponifier saponify saponin saponite sapophoric sapor saporific saporosity saporous Sapota sapota Sapotaceae sapotaceous sapote sapotilha sapotilla sapotoxin sappanwood sappare sapper Sapphic sapphic sapphire sapphireberry sapphired sapphirewing sapphiric sapphirine Sapphism Sapphist Sappho sappiness sapping sapples sappy sapremia sapremic saprine saprocoll saprodil saprodontia saprogenic saprogenous Saprolegnia Saprolegniaceae saprolegniaceous Saprolegniales saprolegnious saprolite saprolitic sapropel sapropelic sapropelite saprophagan saprophagous saprophile saprophilous saprophyte saprophytic saprophytically saprophytism saprostomous saprozoic sapsago sapskull sapsuck sapsucker sapucaia sapucainha sapwood sapwort Saqib sar Sara saraad sarabacan Sarabaite saraband Saracen Saracenian Saracenic Saracenical Saracenism Saracenlike Sarada saraf Sarah Sarakolet Sarakolle Saramaccaner Saran sarangi sarangousty Saratoga Saratogan Saravan Sarawakese sarawakite Sarawan sarbacane sarbican sarcasm sarcasmproof sarcast sarcastic sarcastical sarcastically sarcasticalness sarcasticness sarcelle sarcenet sarcilis Sarcina sarcine sarcitis sarcle sarcler sarcoadenoma Sarcobatus sarcoblast sarcocarcinoma sarcocarp sarcocele Sarcococca Sarcocolla sarcocollin sarcocyst Sarcocystidea sarcocystidean sarcocystidian Sarcocystis sarcocystoid sarcocyte sarcode sarcoderm Sarcodes sarcodic sarcodictyum Sarcodina sarcodous sarcoenchondroma sarcogenic sarcogenous sarcoglia Sarcogyps sarcoid sarcolactic sarcolemma sarcolemmic sarcolemmous sarcoline sarcolite sarcologic sarcological sarcologist sarcology sarcolysis sarcolyte sarcolytic sarcoma sarcomatoid sarcomatosis sarcomatous sarcomere Sarcophaga sarcophagal sarcophagi sarcophagic sarcophagid Sarcophagidae sarcophagine sarcophagize sarcophagous sarcophagus sarcophagy sarcophile sarcophilous Sarcophilus sarcoplasm sarcoplasma sarcoplasmatic sarcoplasmic sarcoplast sarcoplastic sarcopoietic Sarcopsylla Sarcopsyllidae Sarcoptes sarcoptic sarcoptid Sarcoptidae Sarcorhamphus sarcosepsis sarcosepta sarcoseptum sarcosine sarcosis sarcosoma sarcosperm sarcosporid Sarcosporida Sarcosporidia sarcosporidial sarcosporidian sarcosporidiosis sarcostosis sarcostyle sarcotheca sarcotherapeutics sarcotherapy sarcotic sarcous Sarcura Sard sard sardachate Sardanapalian Sardanapalus sardel Sardian sardine sardinewise Sardinian sardius Sardoin sardonic sardonical sardonically sardonicism sardonyx sare sargasso Sargassum sargassum sargo Sargonic Sargonid Sargonide sargus sari sarif Sarigue sarigue sarinda sarip sark sarkar sarkful sarkical sarkine sarking sarkinite sarkit sarkless sarlak sarlyk Sarmatian Sarmatic sarmatier sarment sarmenta sarmentaceous sarmentiferous sarmentose sarmentous sarmentum sarna sarod saron sarong saronic saronide saros Sarothamnus Sarothra sarothrum sarpler sarpo sarra Sarracenia sarracenia Sarraceniaceae sarraceniaceous sarracenial Sarraceniales sarraf sarrazin sarrusophone sarrusophonist sarsa sarsaparilla sarsaparillin Sarsar Sarsechim sarsen sarsenet Sarsi Sart sart sartage sartain Sartish sartor sartoriad sartorial sartorially sartorian sartorite sartorius Saruk sarus Sarvarthasiddha sarwan Sarzan sasa sasan sasani sasanqua sash sashay sashery sashing sashless sasin sasine saskatoon sassaby sassafac sassafrack sassafras Sassak Sassan Sassanian Sassanid Sassanidae Sassanide Sassenach sassolite sassy sassywood Sastean sat satable Satan satan Satanael Satanas satang satanic satanical satanically satanicalness Satanism Satanist satanist Satanistic Satanity satanize Satanology Satanophany Satanophil Satanophobia Satanship satara satchel satcheled sate sateen sateenwood sateless satelles satellitarian satellite satellited satellitesimal satellitian satellitic satellitious satellitium satellitoid satellitory satelloid satiability satiable satiableness satiably satiate satiation Satieno satient satiety satin satinbush satine satined satinette satinfin satinflower satinite satinity satinize satinleaf satinlike satinpod satinwood satiny satire satireproof satiric satirical satirically satiricalness satirist satirizable satirize satirizer satisdation satisdiction satisfaction satisfactional satisfactionist satisfactionless satisfactive satisfactorily satisfactoriness satisfactorious satisfactory satisfiable satisfice satisfied satisfiedly satisfiedness satisfier satisfy satisfying satisfyingly satisfyingness satispassion satlijk Satrae satrap satrapal satrapess satrapic satrapical satrapy satron Satsuma sattle sattva satura saturability saturable saturant saturate saturated saturater saturation saturator Saturday Satureia Saturn Saturnal Saturnale Saturnalia saturnalia Saturnalian saturnalian Saturnia Saturnian saturnian Saturnicentric saturniid Saturniidae Saturnine saturnine saturninely saturnineness saturninity saturnism saturnity saturnize Saturnus satyagrahi satyashodak satyr satyresque satyress satyriasis satyric Satyridae Satyrinae satyrine satyrion satyrism satyrlike satyromaniac sauce sauceboat saucebox saucedish sauceless sauceline saucemaker saucemaking sauceman saucepan sauceplate saucer saucerful saucerleaf saucerless saucerlike saucily sauciness saucy Sauerbraten sauerkraut sauf sauger saugh saughen Saul sauld saulie sault saulter Saulteur saum saumon saumont Saumur Saumya sauna saunders saunderswood saunter saunterer sauntering saunteringly sauqui saur Saura Sauraseni Saurauia Saurauiaceae saurel Sauria saurian sauriasis sauriosis Saurischia saurischian Sauroctonos saurodont Saurodontidae Saurognathae saurognathism saurognathous Sauromatian saurophagous sauropod Sauropoda sauropodous sauropsid Sauropsida sauropsidan sauropsidian Sauropterygia sauropterygian Saurornithes saurornithic Saururaceae saururaceous Saururae saururan saururous Saururus saury sausage sausagelike sausinger Saussurea saussurite saussuritic saussuritization saussuritize saut saute sauterelle sauterne sauternes sauteur sauty Sauvagesia sauve sauvegarde savable savableness savacu savage savagedom savagely savageness savagerous savagery savagess savagism savagize savanilla savanna Savannah savant Savara savarin savation save saved saveloy saver Savery savin saving savingly savingness savior savioress saviorhood saviorship Saviour Savitar Savitri savola Savonarolist Savonnerie savor savored savorer savorily savoriness savoringly savorless savorous savorsome savory savour savoy Savoyard savoyed savoying savssat savvy saw sawah Sawaiori sawali Sawan sawarra sawback sawbelly sawbill sawbones sawbuck sawbwa sawder sawdust sawdustish sawdustlike sawdusty sawed sawer sawfish sawfly sawhorse sawing sawish sawlike sawmaker sawmaking sawman sawmill sawmiller sawmilling sawmon sawmont sawn Sawney sawney sawsetter sawsharper sawsmith sawt sawway sawworker sawwort sawyer sax saxatile saxboard saxcornet Saxe saxhorn Saxicava saxicavous Saxicola saxicole Saxicolidae Saxicolinae saxicoline saxicolous Saxifraga Saxifragaceae saxifragaceous saxifragant saxifrage saxifragous saxifrax saxigenous Saxish Saxon Saxondom Saxonian Saxonic Saxonical Saxonically Saxonish Saxonism Saxonist saxonite Saxonization Saxonize Saxonly Saxony saxophone saxophonist saxotromba saxpence saxten saxtie saxtuba say saya sayability sayable sayableness Sayal sayer sayette sayid saying sazen Sbaikian sblood sbodikins scab scabbard scabbardless scabbed scabbedness scabbery scabbily scabbiness scabble scabbler scabbling scabby scabellum scaberulous scabid scabies scabietic scabinus Scabiosa scabiosity scabious scabish scabland scabrate scabrescent scabrid scabridity scabridulous scabrities scabriusculose scabriusculous scabrosely scabrous scabrously scabrousness scabwort scacchic scacchite scad scaddle scads Scaean scaff scaffer scaffery scaffie scaffle scaffold scaffoldage scaffolder scaffolding scaglia scagliola scagliolist scala scalable scalableness scalably scalage scalar scalare Scalaria scalarian scalariform Scalariidae scalarwise scalation scalawag scalawaggery scalawaggy scald scaldberry scalded scalder scaldfish scaldic scalding scaldweed scaldy scale scaleback scalebark scaleboard scaled scaledrake scalefish scaleful scaleless scalelet scalelike scaleman scalena scalene scalenohedral scalenohedron scalenon scalenous scalenum scalenus scalepan scaleproof scaler scales scalesman scalesmith scaletail scalewing scalewise scalework scalewort scaliger scaliness scaling scall scalled scallion scallola scallom scallop scalloper scalloping scallopwise scalma scaloni Scalops Scalopus scalp scalpeen scalpel scalpellar scalpellic scalpellum scalpellus scalper scalping scalpless scalpriform scalprum scalpture scalt scaly scalytail scam scamander Scamandrius scamble scambler scambling scamell scamler scamles scammoniate scammonin scammony scammonyroot scamp scampavia scamper scamperer scamphood scamping scampingly scampish scampishly scampishness scampsman scan scandal scandalization scandalize scandalizer scandalmonger scandalmongering scandalmongery scandalmonging scandalous scandalously scandalousness scandalproof scandaroon scandent scandia Scandian scandic scandicus Scandinavia Scandinavian Scandinavianism scandium Scandix Scania Scanian Scanic scanmag scannable scanner scanning scanningly scansion scansionist Scansores scansorial scansorious scant scanties scantily scantiness scantity scantle scantling scantlinged scantly scantness scanty scap scape scapegallows scapegoat scapegoatism scapegrace scapel scapeless scapement scapethrift scapha Scaphander Scaphandridae scaphion Scaphiopodidae Scaphiopus scaphism scaphite Scaphites Scaphitidae scaphitoid scaphocephalic scaphocephalism scaphocephalous scaphocephalus scaphocephaly scaphocerite scaphoceritic scaphognathite scaphognathitic scaphoid scapholunar scaphopod Scaphopoda scaphopodous scapiform scapigerous scapoid scapolite scapolitization scapose scapple scappler scapula scapulalgia scapular scapulare scapulary scapulated scapulectomy scapulet scapulimancy scapuloaxillary scapulobrachial scapuloclavicular scapulocoracoid scapulodynia scapulohumeral scapulopexy scapuloradial scapulospinal scapulothoracic scapuloulnar scapulovertebral scapus scar scarab scarabaean scarabaei scarabaeid Scarabaeidae scarabaeidoid scarabaeiform Scarabaeinae scarabaeoid scarabaeus scarabee scaraboid Scaramouch scaramouch scarce scarcelins scarcely scarcement scarcen scarceness scarcity scare scarebabe scarecrow scarecrowish scarecrowy scareful scarehead scaremonger scaremongering scareproof scarer scaresome scarf scarface scarfed scarfer scarflike scarfpin scarfskin scarfwise scarfy scarid Scaridae scarification scarificator scarifier scarify scarily scariose scarious scarlatina scarlatinal scarlatiniform scarlatinoid scarlatinous scarless scarlet scarletberry scarletseed scarlety scarman scarn scaroid scarp scarpines scarping scarpment scarproof scarred scarrer scarring scarry scart scarth Scarus scarus scarved scary scase scasely scat scatch scathe scatheful scatheless scathelessly scathing scathingly Scaticook scatland scatologia scatologic scatological scatology scatomancy scatophagid Scatophagidae scatophagoid scatophagous scatophagy scatoscopy scatter scatterable scatteration scatteraway scatterbrain scatterbrained scatterbrains scattered scatteredly scatteredness scatterer scattergood scattering scatteringly scatterling scattermouch scattery scatty scatula scaturient scaul scaum scaup scauper scaur scaurie scaut scavage scavel scavenage scavenge scavenger scavengerism scavengership scavengery scavenging scaw scawd scawl scazon scazontic sceat scelalgia scelerat scelidosaur scelidosaurian scelidosauroid Scelidosaurus Scelidotherium Sceliphron sceloncus Sceloporus scelotyrbe scena scenario scenarioist scenarioization scenarioize scenarist scenarization scenarize scenary scend scene scenecraft Scenedesmus sceneful sceneman scenery sceneshifter scenewright scenic scenical scenically scenist scenite scenograph scenographer scenographic scenographical scenographically scenography Scenopinidae scent scented scenter scentful scenting scentless scentlessness scentproof scentwood scepsis scepter scepterdom sceptered scepterless sceptic sceptral sceptropherous sceptrosophy sceptry scerne sceuophorion sceuophylacium sceuophylax schaapsteker Schaefferia schairerite schalmei schalmey schalstein schanz schapbachite schappe schapped schapping scharf Scharlachberger schatchen Scheat Schedar schediasm schediastic Schedius schedular schedulate schedule schedulize scheelite scheffel schefferite schelling Schellingian Schellingianism Schellingism schelly scheltopusik schema schemata schematic schematically schematism schematist schematization schematize schematizer schematogram schematograph schematologetically schematomancy schematonics scheme schemeful schemeless schemer schemery scheming schemingly schemist schemy schene schepel schepen scherm scherzando scherzi scherzo schesis Scheuchzeria Scheuchzeriaceae scheuchzeriaceous schiavone Schiedam schiffli schiller schillerfels schillerization schillerize schilling schimmel schindylesis schindyletic Schinus schipperke Schisandra Schisandraceae schism schisma schismatic schismatical schismatically schismaticalness schismatism schismatist schismatize schismic schismless schist schistaceous schistic schistocelia schistocephalus Schistocerca schistocoelia schistocormia schistocormus schistocyte schistocytosis schistoglossia schistoid schistomelia schistomelus schistoprosopia schistoprosopus schistorrhachis schistoscope schistose schistosity Schistosoma schistosome schistosomia schistosomiasis schistosomus schistosternia schistothorax schistous schistus Schizaea Schizaeaceae schizaeaceous Schizanthus schizanthus schizaxon schizocarp schizocarpic schizocarpous schizochroal schizocoele schizocoelic schizocoelous schizocyte schizocytosis schizodinic schizogamy schizogenesis schizogenetic schizogenetically schizogenic schizogenous schizogenously schizognath Schizognathae schizognathism schizognathous schizogonic schizogony Schizogregarinae schizogregarine Schizogregarinida schizoid schizoidism Schizolaenaceae schizolaenaceous schizolite schizolysigenous Schizomeria schizomycete Schizomycetes schizomycetic schizomycetous schizomycosis Schizonemertea schizonemertean schizonemertine Schizoneura Schizonotus schizont schizopelmous Schizopetalon schizophasia Schizophragma schizophrene schizophrenia schizophreniac schizophrenic Schizophyceae Schizophyllum Schizophyta schizophyte schizophytic schizopod Schizopoda schizopodal schizopodous schizorhinal schizospore schizostele schizostelic schizostely schizothecal schizothoracic schizothyme schizothymia schizothymic schizotrichia Schizotrypanum schiztic Schlauraffenland Schleichera schlemiel schlemihl schlenter schlieren schlieric schloop Schmalkaldic schmaltz schmelz schmelze schnabel Schnabelkanne schnapper schnapps schnauzer schneider Schneiderian schnitzel schnorchel schnorkel schnorrer scho schochat schochet schoenobatic schoenobatist Schoenocaulon Schoenus schoenus Schoharie schola scholae scholaptitude scholar scholarch scholardom scholarian scholarism scholarless scholarlike scholarliness scholarly scholarship scholasm scholastic scholastical scholastically scholasticate scholasticism scholasticly scholia scholiast scholiastic scholion scholium Schomburgkia schone schonfelsite Schoodic School school schoolable schoolbag schoolbook schoolbookish schoolboy schoolboydom schoolboyhood schoolboyish schoolboyishly schoolboyishness schoolboyism schoolbutter schoolcraft schooldame schooldom schooled schoolery schoolfellow schoolfellowship schoolful schoolgirl schoolgirlhood schoolgirlish schoolgirlishly schoolgirlishness schoolgirlism schoolgirly schoolgoing schoolhouse schooling schoolingly schoolish schoolkeeper schoolkeeping schoolless schoollike schoolmaam schoolmaamish schoolmaid schoolman schoolmaster schoolmasterhood schoolmastering schoolmasterish schoolmasterishly schoolmasterishness schoolmasterism schoolmasterly schoolmastership schoolmastery schoolmate schoolmiss schoolmistress schoolmistressy schoolroom schoolteacher schoolteacherish schoolteacherly schoolteachery schoolteaching schooltide schooltime schoolward schoolwork schoolyard schoon schooner Schopenhauereanism Schopenhauerian Schopenhauerism schoppen schorenbergite schorl schorlaceous schorlomite schorlous schorly schottische schottish schout schraubthaler Schrebera schreiner schreinerize schriesheimite Schrund schtoff schuh schuhe schuit schule schultenite schungite schuss schute schwa schwabacher Schwalbea schwarz Schwarzian schweizer schweizerkase Schwendenerian Schwenkfelder Schwenkfeldian Sciadopitys Sciaena sciaenid Sciaenidae sciaeniform Sciaeniformes sciaenoid scialytic sciamachy Scian sciapod sciapodous Sciara sciarid Sciaridae Sciarinae sciatheric sciatherical sciatherically sciatic sciatica sciatical sciatically sciaticky scibile science scienced scient sciential scientician scientific scientifical scientifically scientificalness scientificogeographical scientificohistorical scientificophilosophical scientificopoetic scientificoreligious scientificoromantic scientintically scientism Scientist scientist scientistic scientistically scientize scientolism scilicet Scilla scillain scillipicrin Scillitan scillitin scillitoxin Scillonian scimitar scimitared scimitarpod scincid Scincidae scincidoid scinciform scincoid scincoidian Scincomorpha Scincus scind sciniph scintilla scintillant scintillantly scintillate scintillating scintillatingly scintillation scintillator scintillescent scintillize scintillometer scintilloscope scintillose scintillously scintle scintler scintling sciograph sciographic sciography sciolism sciolist sciolistic sciolous sciomachiology sciomachy sciomancy sciomantic scion sciophilous sciophyte scioptic sciopticon scioptics scioptric sciosophist sciosophy Sciot scioterical scioterique sciotheism sciotheric sciotherical sciotherically scious scirenga Scirophoria Scirophorion Scirpus scirrhi scirrhogastria scirrhoid scirrhoma scirrhosis scirrhous scirrhus scirrosity scirtopod Scirtopoda scirtopodous scissel scissible scissile scission scissiparity scissor scissorbill scissorbird scissorer scissoring scissorium scissorlike scissorlikeness scissors scissorsbird scissorsmith scissorstail scissortail scissorwise scissura scissure Scissurella scissurellid Scissurellidae Scitaminales Scitamineae sciurid Sciuridae sciurine sciuroid sciuromorph Sciuromorpha sciuromorphic Sciuropterus Sciurus sclaff sclate sclater Sclav Sclavonian sclaw scler sclera scleral scleranth Scleranthaceae Scleranthus scleratogenous sclere sclerectasia sclerectomy scleredema sclereid sclerema sclerencephalia sclerenchyma sclerenchymatous sclerenchyme sclererythrin scleretinite Scleria scleriasis sclerification sclerify sclerite scleritic scleritis sclerized sclerobase sclerobasic scleroblast scleroblastema scleroblastemic scleroblastic sclerocauly sclerochorioiditis sclerochoroiditis scleroconjunctival scleroconjunctivitis sclerocornea sclerocorneal sclerodactylia sclerodactyly scleroderm Scleroderma scleroderma Sclerodermaceae Sclerodermata Sclerodermatales sclerodermatitis sclerodermatous Sclerodermi sclerodermia sclerodermic sclerodermite sclerodermitic sclerodermitis sclerodermous sclerogen Sclerogeni sclerogenoid sclerogenous scleroid scleroiritis sclerokeratitis sclerokeratoiritis scleroma scleromata scleromeninx scleromere sclerometer sclerometric scleronychia scleronyxis Scleropages Scleroparei sclerophthalmia sclerophyll sclerophyllous sclerophylly scleroprotein sclerosal sclerosarcoma Scleroscope scleroscope sclerose sclerosed scleroseptum sclerosis scleroskeletal scleroskeleton Sclerospora sclerostenosis Sclerostoma sclerostomiasis sclerotal sclerote sclerotia sclerotial sclerotic sclerotica sclerotical scleroticectomy scleroticochorioiditis scleroticochoroiditis scleroticonyxis scleroticotomy Sclerotinia sclerotinial sclerotiniose sclerotioid sclerotitic sclerotitis sclerotium sclerotized sclerotoid sclerotome sclerotomic sclerotomy sclerous scleroxanthin sclerozone scliff sclim sclimb scoad scob scobby scobicular scobiform scobs scoff scoffer scoffery scoffing scoffingly scoffingstock scofflaw scog scoggan scogger scoggin scogginism scogginist scoinson scoke scolb scold scoldable scoldenore scolder scolding scoldingly scoleces scoleciasis scolecid Scolecida scoleciform scolecite scolecoid scolecology scolecophagous scolecospore scoleryng scolex Scolia scolia scolices scoliid Scoliidae scoliograptic scoliokyposis scoliometer scolion scoliorachitic scoliosis scoliotic scoliotone scolite scollop scolog scolopaceous Scolopacidae scolopacine Scolopax Scolopendra scolopendra Scolopendrella Scolopendrellidae scolopendrelloid scolopendrid Scolopendridae scolopendriform scolopendrine Scolopendrium scolopendroid scolophore scolopophore Scolymus scolytid Scolytidae scolytoid Scolytus Scomber scomberoid Scombresocidae Scombresox scombrid Scombridae scombriform Scombriformes scombrine scombroid Scombroidea scombroidean scombrone sconce sconcer sconcheon sconcible scone scoon scoop scooped scooper scoopful scooping scoopingly scoot scooter scopa scoparin scoparius scopate scope scopeless scopelid Scopelidae scopeliform scopelism scopeloid Scopelus scopet scopic Scopidae scopiferous scopiform scopiformly scopine scopiped scopola scopolamine scopoleine scopoletin scopoline scopperil scops scoptical scoptically scoptophilia scoptophiliac scoptophilic scoptophobia scopula Scopularia scopularian scopulate scopuliferous scopuliform scopuliped Scopulipedes scopulite scopulous scopulousness Scopus scorbute scorbutic scorbutical scorbutically scorbutize scorbutus scorch scorched scorcher scorching scorchingly scorchingness scorchproof score scoreboard scorebook scored scorekeeper scorekeeping scoreless scorer scoria scoriac scoriaceous scoriae scorification scorifier scoriform scorify scoring scorious scorn scorned scorner scornful scornfully scornfulness scorningly scornproof scorny scorodite Scorpaena scorpaenid Scorpaenidae scorpaenoid scorpene scorper Scorpidae Scorpididae Scorpii Scorpiid Scorpio scorpioid scorpioidal Scorpioidea scorpion Scorpiones scorpionic scorpionid Scorpionida Scorpionidea Scorpionis scorpionweed scorpionwort Scorpiurus Scorpius scorse scortation scortatory Scorzonera Scot scot scotale Scotch scotch scotcher Scotchery Scotchification Scotchify Scotchiness scotching Scotchman scotchman Scotchness Scotchwoman Scotchy scote scoter scoterythrous Scotia scotia Scotic scotino Scotism Scotist Scotistic Scotistical Scotize Scotlandwards scotodinia scotogram scotograph scotographic scotography scotoma scotomata scotomatic scotomatical scotomatous scotomia scotomic scotomy scotophobia scotopia scotopic scotoscope scotosis Scots Scotsman Scotswoman Scott Scotticism Scotticize Scottie Scottification Scottify Scottish Scottisher Scottishly Scottishman Scottishness Scotty scouch scouk scoundrel scoundreldom scoundrelish scoundrelism scoundrelly scoundrelship scoup scour scourage scoured scourer scouress scourfish scourge scourger scourging scourgingly scouriness scouring scourings scourway scourweed scourwort scoury scouse scout scoutcraft scoutdom scouter scouth scouther scouthood scouting scoutingly scoutish scoutmaster scoutwatch scove scovel scovillite scovy scow scowbank scowbanker scowder scowl scowler scowlful scowling scowlingly scowlproof scowman scrab scrabble scrabbled scrabbler scrabe scrae scraffle scrag scragged scraggedly scraggedness scragger scraggily scragginess scragging scraggled scraggling scraggly scraggy scraily scram scramasax scramble scramblement scrambler scrambling scramblingly scrambly scrampum scran scranch scrank scranky scrannel scranning scranny scrap scrapable scrapbook scrape scrapeage scraped scrapepenny scraper scrapie scraping scrapingly scrapler scraplet scrapling scrapman scrapmonger scrappage scrapped scrapper scrappet scrappily scrappiness scrapping scrappingly scrapple scrappler scrappy scrapworks scrapy scrat scratch scratchable scratchably scratchback scratchboard scratchbrush scratchcard scratchcarding scratchcat scratcher scratches scratchification scratchiness scratching scratchingly scratchless scratchlike scratchman scratchproof scratchweed scratchwork scratchy scrath scratter scrattle scrattling scrauch scrauchle scraunch scraw scrawk scrawl scrawler scrawliness scrawly scrawm scrawnily scrawniness scrawny scray scraze screak screaking screaky scream screamer screaminess screaming screamingly screamproof screamy scree screech screechbird screecher screechily screechiness screeching screechingly screechy screed screek screel screeman screen screenable screenage screencraft screendom screened screener screening screenless screenlike screenman screenplay screensman screenwise screenwork screenwriter screeny screet screeve screeved screever screich screigh screve screver screw screwable screwage screwball screwbarrel screwdrive screwdriver screwed screwer screwhead screwiness screwing screwish screwless screwlike screwman screwmatics screwship screwsman screwstem screwstock screwwise screwworm screwy scribable scribacious scribaciousness scribal scribatious scribatiousness scribblage scribblative scribblatory scribble scribbleable scribbled scribbledom scribbleism scribblemania scribblement scribbleomania scribbler scribbling scribblingly scribbly scribe scriber scribeship scribing scribism scribophilous scride scrieve scriever scriggle scriggler scriggly scrike scrim scrime scrimer scrimmage scrimmager scrimp scrimped scrimpily scrimpiness scrimpingly scrimply scrimpness scrimption scrimpy scrimshander scrimshandy scrimshank scrimshanker scrimshaw scrimshon scrimshorn scrin scrinch scrine scringe scriniary scrip scripee scripless scrippage script scription scriptitious scriptitiously scriptitory scriptive scriptor scriptorial scriptorium scriptory scriptural Scripturalism scripturalism Scripturalist scripturalist Scripturality scripturality scripturalize scripturally scripturalness Scripturarian Scripture scripture Scriptured scriptured Scriptureless scripturiency scripturient Scripturism scripturism Scripturist scripula scripulum scritch scritoire scrivaille scrive scrivello scriven scrivener scrivenership scrivenery scrivening scrivenly scriver scrob scrobble scrobe scrobicula scrobicular scrobiculate scrobiculated scrobicule scrobiculus scrobis scrod scrodgill scroff scrofula scrofularoot scrofulaweed scrofulide scrofulism scrofulitic scrofuloderm scrofuloderma scrofulorachitic scrofulosis scrofulotuberculous scrofulous scrofulously scrofulousness scrog scroggy scrolar scroll scrolled scrollery scrollhead scrollwise scrollwork scrolly scronach scroo scrooch scrooge scroop Scrophularia Scrophulariaceae scrophulariaceous scrota scrotal scrotectomy scrotiform scrotitis scrotocele scrotofemoral scrotum scrouge scrouger scrounge scrounger scrounging scrout scrow scroyle scrub scrubbable scrubbed scrubber scrubbery scrubbily scrubbiness scrubbird scrubbly scrubboard scrubby scrubgrass scrubland scrubwood scruf scruff scruffle scruffman scruffy scruft scrum scrummage scrummager scrump scrumple scrumption scrumptious scrumptiously scrumptiousness scrunch scrunchy scrunge scrunger scrunt scruple scrupleless scrupler scruplesome scruplesomeness scrupula scrupular scrupuli scrupulist scrupulosity scrupulous scrupulously scrupulousness scrupulum scrupulus scrush scrutability scrutable scrutate scrutation scrutator scrutatory scrutinant scrutinate scrutineer scrutinization scrutinize scrutinizer scrutinizingly scrutinous scrutinously scrutiny scruto scrutoire scruze scry scryer scud scuddaler scuddawn scudder scuddick scuddle scuddy scudi scudler scudo scuff scuffed scuffer scuffle scuffler scufflingly scuffly scuffy scuft scufter scug scuggery sculch sculduddery scull sculler scullery scullful scullion scullionish scullionize scullionship scullog sculp sculper sculpin sculpt sculptile sculptitory sculptograph sculptography Sculptor sculptor Sculptorid sculptress sculptural sculpturally sculpturation sculpture sculptured sculpturer sculpturesque sculpturesquely sculpturesqueness sculpturing sculsh scum scumber scumble scumbling scumboard scumfish scumless scumlike scummed scummer scumming scummy scumproof scun scuncheon scunder scunner scup scupful scuppaug scupper scuppernong scuppet scuppler scur scurdy scurf scurfer scurfily scurfiness scurflike scurfy scurrier scurrile scurrilist scurrility scurrilize scurrilous scurrilously scurrilousness scurry scurvied scurvily scurviness scurvish scurvy scurvyweed scusation scuse scut scuta scutage scutal scutate scutated scutatiform scutation scutch scutcheon scutcheoned scutcheonless scutcheonlike scutcheonwise scutcher scutching scute scutel scutella scutellae scutellar Scutellaria scutellarin scutellate scutellated scutellation scutellerid Scutelleridae scutelliform scutelligerous scutelliplantar scutelliplantation scutellum scutibranch Scutibranchia scutibranchian scutibranchiate scutifer scutiferous scutiform scutiger Scutigera scutigeral Scutigeridae scutigerous scutiped scutter scuttle scuttlebutt scuttleful scuttleman scuttler scuttling scuttock scutty scutula scutular scutulate scutulated scutulum Scutum scutum scybala scybalous scybalum scye scyelite Scyld Scylla Scyllaea Scyllaeidae scyllarian Scyllaridae scyllaroid Scyllarus Scyllidae Scylliidae scyllioid Scylliorhinidae scylliorhinoid Scylliorhinus scyllite scyllitol Scyllium scypha scyphae scyphate scyphi scyphiferous scyphiform scyphiphorous scyphistoma scyphistomae scyphistomoid scyphistomous scyphoi scyphomancy Scyphomedusae scyphomedusan scyphomedusoid scyphophore Scyphophori scyphophorous scyphopolyp scyphose scyphostoma Scyphozoa scyphozoan scyphula scyphulus scyphus scyt scytale Scyth scythe scytheless scythelike scytheman scythesmith scythestone scythework Scythian Scythic Scythize scytitis scytoblastema scytodepsic Scytonema Scytonemataceae scytonemataceous scytonematoid scytonematous Scytopetalaceae scytopetalaceous Scytopetalum sdeath sdrucciola se sea seabeach seabeard Seabee seaberry seaboard seaborderer seabound seacannie seacatch seacoast seaconny seacraft seacrafty seacunny seadog seadrome seafardinger seafare seafarer seafaring seaflood seaflower seafolk Seaforthia seafowl Seaghan seagirt seagoer seagoing seah seahound seak seal sealable sealant sealch sealed sealer sealery sealess sealet sealette sealflower sealike sealine sealing sealless seallike sealskin sealwort Sealyham seam seaman seamancraft seamanite seamanlike seamanly seamanship seamark Seamas seambiter seamed seamer seaminess seaming seamless seamlessly seamlessness seamlet seamlike seamost seamrend seamrog seamster seamstress Seamus seamy Sean seance seapiece seaplane seaport seaquake sear searce searcer search searchable searchableness searchant searcher searcheress searcherlike searchership searchful searching searchingly searchingness searchless searchlight searchment searcloth seared searedness searer searing searlesite searness seary Seasan seascape seascapist seascout seascouting seashine seashore seasick seasickness seaside seasider season seasonable seasonableness seasonably seasonal seasonality seasonally seasonalness seasoned seasonedly seasoner seasoning seasoninglike seasonless seastrand seastroke seat seatang seated seater seathe seating seatless seatrain seatron seatsman seatwork seave seavy seawant seaward seawardly seaware seaway seaweed seaweedy seawife seawoman seaworn seaworthiness seaworthy seax Seba sebacate sebaceous sebacic sebait Sebastian sebastianite Sebastichthys Sebastodes sebate sebesten sebiferous sebific sebilla sebiparous sebkha sebolith seborrhagia seborrhea seborrheal seborrheic seborrhoic Sebright sebum sebundy sec secability secable Secale secalin secaline secalose Secamone secancy secant secantly secateur secede Seceder seceder secern secernent secernment secesh secesher Secessia Secession secession Secessional secessional secessionalist Secessiondom secessioner secessionism secessionist sech Sechium Sechuana seck Seckel seclude secluded secludedly secludedness secluding secluse seclusion seclusionist seclusive seclusively seclusiveness secodont secohm secohmmeter second secondar secondarily secondariness secondary seconde seconder secondhand secondhanded secondhandedly secondhandedness secondly secondment secondness secos secpar secque secre secrecy secret secreta secretage secretagogue secretarial secretarian Secretariat secretariat secretariate secretary secretaryship secrete secretin secretion secretional secretionary secretitious secretive secretively secretiveness secretly secretmonger secretness secreto secretomotor secretor secretory secretum sect sectarial sectarian sectarianism sectarianize sectarianly sectarism sectarist sectary sectator sectile sectility section sectional sectionalism sectionalist sectionality sectionalization sectionalize sectionally sectionary sectionist sectionize sectioplanography sectism sectist sectiuncle sective sector sectoral sectored sectorial sectroid sectwise secular secularism secularist secularistic secularity secularization secularize secularizer secularly secularness secund secundate secundation secundiflorous secundigravida secundine secundipara secundiparity secundiparous secundly secundogeniture secundoprimary secundus securable securance secure securely securement secureness securer securicornate securifer Securifera securiferous securiform Securigera securigerous securitan security Sedaceae Sedan sedan Sedang sedanier Sedat sedate sedately sedateness sedation sedative sedent Sedentaria sedentarily sedentariness sedentary sedentation Seder sederunt sedge sedged sedgelike sedging sedgy sedigitate sedigitated sedile sedilia sediment sedimental sedimentarily sedimentary sedimentate sedimentation sedimentous sedimetric sedimetrical sedition seditionary seditionist seditious seditiously seditiousness sedjadeh Sedovic seduce seduceable seducee seducement seducer seducible seducing seducingly seducive seduct seduction seductionist seductive seductively seductiveness seductress sedulity sedulous sedulously sedulousness Sedum sedum see seeable seeableness Seebeck seecatch seech seed seedage seedbed seedbird seedbox seedcake seedcase seedeater seeded Seeder seeder seedful seedgall seedily seediness seedkin seedless seedlessness seedlet seedlike seedling seedlip seedman seedness seedsman seedstalk seedtime seedy seege seeing seeingly seeingness seek seeker Seekerism seeking seel seelful seely seem seemable seemably seemer seeming seemingly seemingness seemless seemlihead seemlily seemliness seemly seen seenie Seenu seep seepage seeped seepweed seepy seer seerband seercraft seeress seerfish seerhand seerhood seerlike seerpaw seership seersucker seesaw seesawiness seesee seethe seething seethingly seetulputty Sefekhet seg seggar seggard segged seggrom Seginus segment segmental segmentally segmentary segmentate segmentation segmented sego segol segolate segreant segregable segregant segregate segregateness segregation segregational segregationist segregative segregator Sehyo seiche Seid Seidel seidel Seidlitz seigneur seigneurage seigneuress seigneurial seigneury seignior seigniorage seignioral seignioralty seigniorial seigniority seigniorship seigniory seignorage seignoral seignorial seignorize seignory seilenoi seilenos seine seiner seirospore seirosporic seise seism seismal seismatical seismetic seismic seismically seismicity seismism seismochronograph seismogram seismograph seismographer seismographic seismographical seismography seismologic seismological seismologically seismologist seismologue seismology seismometer seismometric seismometrical seismometrograph seismometry seismomicrophone seismoscope seismoscopic seismotectonic seismotherapy seismotic seit seity Seiurus Seiyuhonto Seiyukai seizable seize seizer seizin seizing seizor seizure sejant sejoin sejoined sejugate sejugous sejunct sejunctive sejunctively sejunctly Sekane Sekani Sekar Seker Sekhwan sekos selachian Selachii selachoid Selachoidei Selachostome Selachostomi selachostomous seladang Selaginaceae Selaginella Selaginellaceae selaginellaceous selagite Selago selah selamin selamlik selbergite Selbornian seldom seldomcy seldomer seldomly seldomness seldor seldseen sele select selectable selected selectedly selectee selection selectionism selectionist selective selectively selectiveness selectivity selectly selectman selectness selector Selena selenate Selene selenian seleniate selenic Selenicereus selenide Selenidera seleniferous selenigenous selenion selenious Selenipedium selenite selenitic selenitical selenitiferous selenitish selenium seleniuret selenobismuthite selenocentric selenodont Selenodonta selenodonty selenograph selenographer selenographic selenographical selenographically selenographist selenography selenolatry selenological selenologist selenology selenomancy selenoscope selenosis selenotropic selenotropism selenotropy selensilver selensulphur Seleucian Seleucid Seleucidae Seleucidan Seleucidean Seleucidian Seleucidic self selfcide selfdom selfful selffulness selfheal selfhood selfish selfishly selfishness selfism selfist selfless selflessly selflessness selfly selfness selfpreservatory selfsame selfsameness selfward selfwards selictar seligmannite selihoth Selina Selinuntine selion Seljuk Seljukian sell sella sellable sellably sellaite sellar sellate sellenders seller Selli sellie selliform selling sellout selly selsoviet selsyn selt Selter Seltzer seltzogene Selung selva selvage selvaged selvagee selvedge selzogene Semaeostomae Semaeostomata Semang semanteme semantic semantical semantically semantician semanticist semantics semantological semantology semantron semaphore semaphoric semaphorical semaphorically semaphorist semarum semasiological semasiologically semasiologist semasiology semateme sematic sematographic sematography sematology sematrope semball semblable semblably semblance semblant semblative semble seme Semecarpus semeed semeia semeiography semeiologic semeiological semeiologist semeiology semeion semeiotic semeiotical semeiotics semelfactive semelincident semen semence Semeostoma semese semester semestral semestrial semi semiabstracted semiaccomplishment semiacid semiacidified semiacquaintance semiadherent semiadjectively semiadnate semiaerial semiaffectionate semiagricultural Semiahmoo semialbinism semialcoholic semialien semiallegiance semialpine semialuminous semiamplexicaul semiamplitude semianarchist semianatomical semianatropal semianatropous semiangle semiangular semianimal semianimate semianimated semiannealed semiannual semiannually semiannular semianthracite semiantiministerial semiantique semiape semiaperiodic semiaperture semiappressed semiaquatic semiarborescent semiarc semiarch semiarchitectural semiarid semiaridity semiarticulate semiasphaltic semiatheist semiattached semiautomatic semiautomatically semiautonomous semiaxis semibacchanalian semibachelor semibald semibalked semiball semiballoon semiband semibarbarian semibarbarianism semibarbaric semibarbarism semibarbarous semibaronial semibarren semibase semibasement semibastion semibay semibeam semibejan semibelted semibifid semibituminous semibleached semiblind semiblunt semibody semiboiled semibolshevist semibolshevized semibouffant semibourgeois semibreve semibull semiburrowing semic semicadence semicalcareous semicalcined semicallipygian semicanal semicanalis semicannibalic semicantilever semicarbazide semicarbazone semicarbonate semicarbonize semicardinal semicartilaginous semicastrate semicastration semicatholicism semicaudate semicelestial semicell semicellulose semicentenarian semicentenary semicentennial semicentury semichannel semichaotic semichemical semicheviot semichevron semichiffon semichivalrous semichoric semichorus semichrome semicircle semicircled semicircular semicircularity semicircularly semicircularness semicircumference semicircumferentor semicircumvolution semicirque semicitizen semicivilization semicivilized semiclassic semiclassical semiclause semicleric semiclerical semiclimber semiclimbing semiclose semiclosed semiclosure semicoagulated semicoke semicollapsible semicollar semicollegiate semicolloid semicolloquial semicolon semicolonial semicolumn semicolumnar semicoma semicomatose semicombined semicombust semicomic semicomical semicommercial semicompact semicompacted semicomplete semicomplicated semiconceal semiconcrete semiconducting semiconductor semicone semiconfident semiconfinement semiconfluent semiconformist semiconformity semiconic semiconical semiconnate semiconnection semiconoidal semiconscious semiconsciously semiconsciousness semiconservative semiconsonant semiconsonantal semiconspicuous semicontinent semicontinuum semicontraction semicontradiction semiconvergence semiconvergent semiconversion semiconvert semicordate semicordated semicoriaceous semicorneous semicoronate semicoronated semicoronet semicostal semicostiferous semicotton semicotyle semicounterarch semicountry semicrepe semicrescentic semicretin semicretinism semicriminal semicroma semicrome semicrustaceous semicrystallinc semicubical semicubit semicup semicupium semicupola semicured semicurl semicursive semicurvilinear semicyclic semicycloid semicylinder semicylindric semicylindrical semicynical semidaily semidangerous semidark semidarkness semidead semideaf semidecay semidecussation semidefinite semideific semideification semideistical semideity semidelight semidelirious semideltaic semidemented semidenatured semidependence semidependent semideponent semidesert semidestructive semidetached semidetachment semideveloped semidiagrammatic semidiameter semidiapason semidiapente semidiaphaneity semidiaphanous semidiatessaron semidifference semidigested semidigitigrade semidigression semidilapidation semidine semidirect semidisabled semidisk semiditone semidiurnal semidivided semidivine semidocumentary semidodecagon semidole semidome semidomed semidomestic semidomesticated semidomestication semidomical semidormant semidouble semidrachm semidramatic semidress semidressy semidried semidry semidrying semiductile semidull semiduplex semiduration semieducated semieffigy semiegg semiegret semielastic semielision semiellipse semiellipsis semiellipsoidal semielliptic semielliptical semienclosed semiengaged semiequitant semierect semieremitical semiessay semiexecutive semiexpanded semiexplanation semiexposed semiexternal semiextinct semiextinction semifable semifabulous semifailure semifamine semifascia semifasciated semifashion semifast semifatalistic semiferal semiferous semifeudal semifeudalism semifib semifiction semifictional semifigurative semifigure semifinal semifinalist semifine semifinish semifinished semifiscal semifistular semifit semifitting semifixed semiflashproof semiflex semiflexed semiflexible semiflexion semiflexure semiflint semifloating semifloret semifloscular semifloscule semiflosculose semiflosculous semifluctuant semifluctuating semifluid semifluidic semifluidity semifoaming semiforbidding semiforeign semiform semiformal semiformed semifossil semifossilized semifrantic semifriable semifrontier semifuddle semifunctional semifused semifusion semify semigala semigelatinous semigentleman semigenuflection semigirder semiglaze semiglazed semiglobe semiglobose semiglobular semiglobularly semiglorious semiglutin semigod semigovernmental semigrainy semigranitic semigranulate semigravel semigroove semihand semihard semiharden semihardy semihastate semihepatization semiherbaceous semiheterocercal semihexagon semihexagonal semihiant semihiatus semihibernation semihigh semihistorical semihobo semihonor semihoral semihorny semihostile semihot semihuman semihumanitarian semihumanized semihumbug semihumorous semihumorously semihyaline semihydrate semihydrobenzoinic semihyperbola semihyperbolic semihyperbolical semijealousy semijubilee semijudicial semijuridical semilanceolate semilatent semilatus semileafless semilegendary semilegislative semilens semilenticular semilethal semiliberal semilichen semiligneous semilimber semilined semiliquid semiliquidity semiliterate semilocular semilogarithmic semilogical semilong semilooper semiloose semiloyalty semilucent semilunar semilunare semilunary semilunate semilunation semilune semiluxation semiluxury semimachine semimade semimadman semimagical semimagnetic semimajor semimalignant semimanufacture semimanufactured semimarine semimarking semimathematical semimature semimechanical semimedicinal semimember semimembranosus semimembranous semimenstrual semimercerized semimessianic semimetal semimetallic semimetamorphosis semimicrochemical semimild semimilitary semimill semimineral semimineralized semiminim semiminor semimolecule semimonastic semimonitor semimonopoly semimonster semimonthly semimoron semimucous semimute semimystic semimystical semimythical seminaked seminal seminality seminally seminaphthalidine seminaphthylamine seminar seminarcosis seminarial seminarian seminarianism seminarist seminaristic seminarize seminary seminasal seminase seminatant seminate semination seminationalization seminative seminebulous seminecessary seminegro seminervous seminiferal seminiferous seminific seminifical seminification seminist seminium seminivorous seminocturnal Seminole seminoma seminomad seminomadic seminomata seminonconformist seminonflammable seminonsensical seminormal seminose seminovel seminovelty seminude seminudity seminule seminuliferous seminuria seminvariant seminvariantive semioblivion semioblivious semiobscurity semioccasional semioccasionally semiocclusive semioctagonal semiofficial semiofficially semiography Semionotidae Semionotus semiopacity semiopacous semiopal semiopalescent semiopaque semiopened semiorb semiorbicular semiorbicularis semiorbiculate semiordinate semiorganized semioriental semioscillation semiosseous semiostracism semiotic semiotician semioval semiovaloid semiovate semioviparous semiovoid semiovoidal semioxidated semioxidized semioxygenated semioxygenized semipagan semipalmate semipalmated semipalmation semipanic semipapal semipapist semiparallel semiparalysis semiparameter semiparasitic semiparasitism semipaste semipastoral semipasty semipause semipeace semipectinate semipectinated semipectoral semiped semipedal semipellucid semipellucidity semipendent semipenniform semiperfect semiperimeter semiperimetry semiperiphery semipermanent semipermeability semipermeable semiperoid semiperspicuous semipertinent semipervious semipetaloid semipetrified semiphase semiphilologist semiphilosophic semiphilosophical semiphlogisticated semiphonotypy semiphosphorescent semipinacolic semipinacolin semipinnate semipiscine semiplantigrade semiplastic semiplumaceous semiplume semipolar semipolitical semipolitician semipoor semipopish semipopular semiporcelain semiporous semiporphyritic semiportable semipostal semipractical semiprecious semipreservation semiprimigenous semiprivacy semiprivate semipro semiprofane semiprofessional semiprofessionalized semipronation semiprone semipronominal semiproof semiproselyte semiprosthetic semiprostrate semiprotectorate semiproven semipublic semipupa semipurulent semiputrid semipyramidal semipyramidical semipyritic semiquadrangle semiquadrantly semiquadrate semiquantitative semiquantitatively semiquartile semiquaver semiquietism semiquietist semiquinquefid semiquintile semiquote semiradial semiradiate Semiramis Semiramize semirapacious semirare semirattlesnake semiraw semirebellion semirecondite semirecumbent semirefined semireflex semiregular semirelief semireligious semireniform semirepublican semiresinous semiresolute semirespectability semirespectable semireticulate semiretirement semiretractile semireverberatory semirevolute semirevolution semirevolutionist semirhythm semiriddle semirigid semiring semiroll semirotary semirotating semirotative semirotatory semirotund semirotunda semiround semiroyal semiruin semirural semirustic semis semisacerdotal semisacred semisagittate semisaint semisaline semisaltire semisaprophyte semisaprophytic semisarcodic semisatiric semisaturation semisavage semisavagedom semisavagery semiscenic semischolastic semiscientific semiseafaring semisecondary semisecrecy semisecret semisection semisedentary semisegment semisensuous semisentient semisentimental semiseparatist semiseptate semiserf semiserious semiseriously semiseriousness semiservile semisevere semiseverely semiseverity semisextile semishady semishaft semisheer semishirker semishrub semishrubby semisightseeing semisilica semisimious semisimple semisingle semisixth semiskilled semislave semismelting semismile semisocial semisocialism semisociative semisocinian semisoft semisolemn semisolemnity semisolemnly semisolid semisolute semisomnambulistic semisomnolence semisomnous semisopor semisovereignty semispan semispeculation semisphere semispheric semispherical semispheroidal semispinalis semispiral semispiritous semispontaneity semispontaneous semispontaneously semispontaneousness semisport semisporting semisquare semistagnation semistaminate semistarvation semistarved semistate semisteel semistiff semistill semistock semistory semistratified semistriate semistriated semistuporous semisubterranean semisuburban semisuccess semisuccessful semisuccessfully semisucculent semisupernatural semisupinated semisupination semisupine semisuspension semisymmetric semita semitact semitae semitailored semital semitandem semitangent semitaur Semite semitechnical semiteetotal semitelic semitendinosus semitendinous semiterete semiterrestrial semitertian semitesseral semitessular semitheological semithoroughfare Semitic Semiticism Semiticize Semitics semitime Semitism Semitist Semitization Semitize semitonal semitonally semitone semitonic semitonically semitontine semitorpid semitour semitrailer semitrained semitransept semitranslucent semitransparency semitransparent semitransverse semitreasonable semitrimmed semitropic semitropical semitropics semitruth semituberous semitubular semiuncial semiundressed semiuniversalist semiupright semiurban semiurn semivalvate semivault semivector semivegetable semivertebral semiverticillate semivibration semivirtue semiviscid semivital semivitreous semivitrification semivitrified semivocal semivocalic semivolatile semivolcanic semivoluntary semivowel semivulcanized semiwaking semiwarfare semiweekly semiwild semiwoody semiyearly semmet semmit Semnae Semnones Semnopithecinae semnopithecine Semnopithecus semola semolella semolina semological semology Semostomae semostomeous semostomous semperannual sempergreen semperidentical semperjuvenescent sempervirent sempervirid Sempervivum sempitern sempiternal sempiternally sempiternity sempiternize sempiternous sempstrywork semsem semuncia semuncial sen Senaah senaite senam senarian senarius senarmontite senary senate senator senatorial senatorially senatorian senatorship senatory senatress senatrices senatrix sence Senci sencion send sendable sendal sendee sender sending Seneca Senecan Senecio senecioid senecionine senectitude senectude senectuous senega Senegal Senegalese Senegambian senegin senesce senescence senescent seneschal seneschally seneschalship seneschalsy seneschalty sengreen senicide Senijextee senile senilely senilism senility senilize senior seniority seniorship Senlac Senna senna sennegrass sennet sennight sennit sennite senocular Senones Senonian sensa sensable sensal sensate sensation sensational sensationalism sensationalist sensationalistic sensationalize sensationally sensationary sensationish sensationism sensationist sensationistic sensationless sensatorial sensatory sense sensed senseful senseless senselessly senselessness sensibilia sensibilisin sensibilitist sensibilitous sensibility sensibilium sensibilization sensibilize sensible sensibleness sensibly sensical sensifacient sensiferous sensific sensificatory sensifics sensify sensigenous sensile sensilia sensilla sensillum sension sensism sensist sensistic sensitive sensitively sensitiveness sensitivity sensitization sensitize sensitizer sensitometer sensitometric sensitometry sensitory sensive sensize senso sensomobile sensomobility sensomotor sensoparalysis sensor sensoria sensorial sensoriglandular sensorimotor sensorimuscular sensorium sensorivascular sensorivasomotor sensorivolitional sensory sensual sensualism sensualist sensualistic sensuality sensualization sensualize sensually sensualness sensuism sensuist sensum sensuosity sensuous sensuously sensuousness sensyne sent sentence sentencer sentential sententially sententiarian sententiarist sententiary sententiosity sententious sententiously sententiousness sentience sentiendum sentient sentiently sentiment sentimental sentimentalism sentimentalist sentimentality sentimentalization sentimentalize sentimentalizer sentimentally sentimenter sentimentless sentinel sentinellike sentinelship sentinelwise sentisection sentition sentry Senusi Senusian Senusism sepad sepal sepaled sepaline sepalled sepalody sepaloid separability separable separableness separably separata separate separatedly separately separateness separates separatical separating separation separationism separationist separatism separatist separatistic separative separatively separativeness separator separatory separatress separatrix separatum Sepharad Sephardi Sephardic Sephardim Sepharvites sephen sephiric sephirothic sepia sepiaceous sepialike sepian sepiarian sepiary sepic sepicolous Sepiidae sepiment sepioid Sepioidea Sepiola Sepiolidae sepiolite sepion sepiost sepiostaire sepium sepone sepoy seppuku seps Sepsidae sepsine sepsis Sept sept septa septal septan septane septangle septangled septangular septangularness septarian septariate septarium septate septated septation septatoarticulate septavalent septave septcentenary septectomy September Septemberer Septemberism Septemberist Septembral Septembrian Septembrist Septembrize Septembrizer septemdecenary septemfid septemfluous septemfoliate septemfoliolate septemia septempartite septemplicate septemvious septemvir septemvirate septemviri septenar septenarian septenarius septenary septenate septendecennial septendecimal septennary septennate septenniad septennial septennialist septenniality septennially septennium septenous Septentrio Septentrion septentrional septentrionality septentrionally septentrionate septentrionic septerium septet septfoil Septi Septibranchia Septibranchiata septic septical septically septicemia septicemic septicidal septicidally septicity septicization septicolored septicopyemia septicopyemic septier septifarious septiferous septifluous septifolious septiform septifragal septifragally septilateral septile septillion septillionth septimal septimanal septimanarian septime septimetritis septimole septinsular septipartite septisyllabic septisyllable septivalent septleva Septobasidium septocosta septocylindrical Septocylindrium septodiarrhea septogerm Septogloeum septoic septole septomarginal septomaxillary septonasal Septoria septotomy septship septuagenarian septuagenarianism septuagenary septuagesima Septuagint septuagint Septuagintal septulate septulum septum septuncial septuor septuple septuplet septuplicate septuplication sepulcher sepulchral sepulchralize sepulchrally sepulchrous sepultural sepulture sequa sequacious sequaciously sequaciousness sequacity Sequan Sequani Sequanian sequel sequela sequelae sequelant sequence sequencer sequency sequent sequential sequentiality sequentially sequently sequest sequester sequestered sequesterment sequestra sequestrable sequestral sequestrate sequestration sequestrator sequestratrices sequestratrix sequestrectomy sequestrotomy sequestrum sequin sequitur Sequoia ser sera serab Serabend seragli seraglio serai serail seral seralbumin seralbuminous serang serape Serapea Serapeum seraph seraphic seraphical seraphically seraphicalness seraphicism seraphicness seraphim seraphina seraphine seraphism seraphlike seraphtide Serapias Serapic Serapis Serapist serasker seraskerate seraskier seraskierat serau seraw Serb Serbdom Serbian Serbize Serbonian Serbophile Serbophobe sercial serdab Serdar Sere sere Serean sereh Serena serenade serenader serenata serenate Serendib serendibite serendipity serendite serene serenely sereneness serenify serenissime serenissimi serenissimo serenity serenize Serenoa Serer Seres sereward serf serfage serfdom serfhood serfish serfishly serfishness serfism serflike serfship Serge serge sergeancy Sergeant sergeant sergeantcy sergeantess sergeantry sergeantship sergeanty sergedesoy Sergei serger sergette serging Sergio Sergiu Sergius serglobulin Seri serial serialist seriality serialization serialize serially Serian seriary seriate seriately seriatim seriation Seric Sericana sericate sericated sericea sericeotomentose sericeous sericicultural sericiculture sericiculturist sericin sericipary sericite sericitic sericitization Sericocarpus sericteria sericterium serictery sericultural sericulture sericulturist seriema series serif serific Seriform serigraph serigrapher serigraphy serimeter serin serine serinette seringa seringal seringhi Serinus serio seriocomedy seriocomic seriocomical seriocomically seriogrotesque Seriola Seriolidae serioline serioludicrous seriopantomimic serioridiculous seriosity serious seriously seriousness seripositor Serjania serjeant serment sermo sermocination sermocinatrix sermon sermoneer sermoner sermonesque sermonet sermonettino sermonic sermonically sermonics sermonish sermonism sermonist sermonize sermonizer sermonless sermonoid sermonolatry sermonology sermonproof sermonwise sermuncle sernamby sero seroalbumin seroalbuminuria seroanaphylaxis serobiological serocolitis serocyst serocystic serodermatosis serodermitis serodiagnosis serodiagnostic seroenteritis seroenzyme serofibrinous serofibrous serofluid serogelatinous serohemorrhagic serohepatitis seroimmunity serolactescent serolemma serolin serolipase serologic serological serologically serologist serology seromaniac seromembranous seromucous seromuscular seron seronegative seronegativity seroon seroot seroperitoneum serophthisis serophysiology seroplastic seropneumothorax seropositive seroprevention seroprognosis seroprophylaxis seroprotease seropuriform seropurulent seropus seroreaction serosa serosanguineous serosanguinolent seroscopy serositis serosity serosynovial serosynovitis serotherapeutic serotherapeutics serotherapist serotherapy serotina serotinal serotine serotinous serotoxin serous serousness serovaccine serow serozyme Serpari serpedinous Serpens Serpent serpent serpentaria Serpentarian Serpentarii serpentarium Serpentarius serpentary serpentcleide serpenteau Serpentes serpentess Serpentian serpenticidal serpenticide Serpentid serpentiferous serpentiform serpentina serpentine serpentinely Serpentinian serpentinic serpentiningly serpentinization serpentinize serpentinoid serpentinous Serpentis serpentivorous serpentize serpentlike serpently serpentoid serpentry serpentwood serphid Serphidae serphoid Serphoidea serpierite serpiginous serpiginously serpigo serpivolant serpolet Serpula serpula Serpulae serpulae serpulan serpulid Serpulidae serpulidan serpuline serpulite serpulitic serpuloid serra serradella serrage serran serrana serranid Serranidae Serrano serrano serranoid Serranus Serrasalmo serrate serrated serratic serratiform serratile serration serratirostral serratocrenate serratodentate serratodenticulate serratoglandulous serratospinose serrature serricorn Serricornia Serridentines Serridentinus serried serriedly serriedness Serrifera serriferous serriform serriped serrirostrate serrulate serrulated serrulation serry sert serta Sertularia sertularian Sertulariidae sertularioid sertule sertulum sertum serum serumal serut servable servage serval servaline servant servantcy servantdom servantess servantless servantlike servantry servantship servation serve servente serventism server servery servet Servetian Servetianism Servian service serviceability serviceable serviceableness serviceably serviceberry serviceless servicelessness serviceman Servidor servidor servient serviential serviette servile servilely servileness servilism servility servilize serving servingman servist Servite servitor servitorial servitorship servitress servitrix servitude serviture Servius servo servomechanism servomotor servulate serwamby sesame sesamoid sesamoidal sesamoiditis Sesamum Sesban Sesbania sescuple Seseli Seshat Sesia Sesiidae sesma sesqui sesquialter sesquialtera sesquialteral sesquialteran sesquialterous sesquibasic sesquicarbonate sesquicentennial sesquichloride sesquiduplicate sesquihydrate sesquihydrated sesquinona sesquinonal sesquioctava sesquioctaval sesquioxide sesquipedal sesquipedalian sesquipedalianism sesquipedality sesquiplicate sesquiquadrate sesquiquarta sesquiquartal sesquiquartile sesquiquinta sesquiquintal sesquiquintile sesquisalt sesquiseptimal sesquisextal sesquisilicate sesquisquare sesquisulphate sesquisulphide sesquisulphuret sesquiterpene sesquitertia sesquitertial sesquitertian sesquitertianal sess sessile sessility Sessiliventres session sessional sessionary sessions sesterce sestertium sestet sesti sestiad Sestian sestina sestine sestole sestuor Sesuto Sesuvium set seta setaceous setaceously setae setal Setaria setarious setback setbolt setdown setfast Seth seth sethead Sethian Sethic Sethite Setibo setier Setifera setiferous setiform setigerous setiparous setirostral setline setness setoff seton Setophaga Setophaginae setophagine setose setous setout setover setscrew setsman sett settable settaine settee setter settergrass setterwort setting settle settleable settled settledly settledness settlement settler settlerdom settling settlings settlor settsman setula setule setuliform setulose setulous setup setwall setwise setwork seugh Sevastopol seven sevenbark sevener sevenfold sevenfolded sevenfoldness sevennight sevenpence sevenpenny sevenscore seventeen seventeenfold seventeenth seventeenthly seventh seventhly seventieth seventy seventyfold sever severable several severalfold severality severalize severally severalness severalth severalty severance severation severe severedly severely severeness severer Severian severingly severish severity severization severize severy Sevillian sew sewable sewage sewan sewed sewellel sewen sewer sewerage sewered sewerless sewerlike sewerman sewery sewing sewless sewn sewround sex sexadecimal sexagenarian sexagenarianism sexagenary Sexagesima sexagesimal sexagesimally sexagesimals sexagonal sexangle sexangled sexangular sexangularly sexannulate sexarticulate sexcentenary sexcuspidate sexdigital sexdigitate sexdigitated sexdigitism sexed sexenary sexennial sexennially sexennium sexern sexfarious sexfid sexfoil sexhood sexifid sexillion sexiped sexipolar sexisyllabic sexisyllable sexitubercular sexivalence sexivalency sexivalent sexless sexlessly sexlessness sexlike sexlocular sexly sexological sexologist sexology sexpartite sexradiate sext sextactic sextain sextan sextans Sextant sextant sextantal sextar sextarii sextarius sextary sextennial sextern sextet sextic sextile Sextilis sextillion sextillionth sextipara sextipartite sextipartition sextiply sextipolar sexto sextodecimo sextole sextolet sexton sextoness sextonship sextry sextubercular sextuberculate sextula sextulary sextumvirate sextuple sextuplet sextuplex sextuplicate sextuply sexual sexuale sexualism sexualist sexuality sexualization sexualize sexually sexuous sexupara sexuparous sexy sey seybertite Seymeria Seymour sfoot Sgad sgraffiato sgraffito sh sha shaatnez shab Shaban shabash Shabbath shabbed shabbify shabbily shabbiness shabble shabby shabbyish shabrack shabunder Shabuoth shachle shachly shack shackanite shackatory shackbolt shackland shackle shacklebone shackledom shackler shacklewise shackling shackly shacky shad shadbelly shadberry shadbird shadbush shadchan shaddock shade shaded shadeful shadeless shadelessness shader shadetail shadflower shadily shadine shadiness shading shadkan shadoof Shadow shadow shadowable shadowbox shadowboxing shadowed shadower shadowfoot shadowgram shadowgraph shadowgraphic shadowgraphist shadowgraphy shadowily shadowiness shadowing shadowishly shadowist shadowland shadowless shadowlessness shadowlike shadowly shadowy shadrach shady shaffle Shafiite shaft shafted shafter shaftfoot shafting shaftless shaftlike shaftman shaftment shaftsman shaftway shafty shag shaganappi shagbag shagbark shagged shaggedness shaggily shagginess shaggy Shagia shaglet shaglike shagpate shagrag shagreen shagreened shagroon shagtail shah Shahaptian shaharith shahdom shahi Shahid shahin shahzada Shai Shaigia shaikh Shaikiyeh shaitan Shaiva Shaivism Shaka shakable shake shakeable shakebly shakedown shakefork shaken shakenly shakeout shakeproof Shaker shaker shakerag Shakerdom Shakeress Shakerism Shakerlike shakers shakescene Shakespearean Shakespeareana Shakespeareanism Shakespeareanly Shakespearize Shakespearolater Shakespearolatry shakha Shakil shakily shakiness shaking shakingly shako shaksheer Shakta Shakti shakti Shaktism shaku shaky Shakyamuni Shalako shale shalelike shaleman shall shallal shallon shalloon shallop shallopy shallot shallow shallowbrained shallowhearted shallowish shallowist shallowly shallowness shallowpate shallowpated shallows shallowy shallu shalom shalt shalwar shaly Sham sham shama shamable shamableness shamably shamal shamalo shaman shamaness shamanic shamanism shamanist shamanistic shamanize shamateur shamba Shambala shamble shambling shamblingly shambrier Shambu shame shameable shamed shameface shamefaced shamefacedly shamefacedness shamefast shamefastly shamefastness shameful shamefully shamefulness shameless shamelessly shamelessness shameproof shamer shamesick shameworthy shamianah Shamim shamir Shammar shammed shammer shammick shamming shammish shammock shammocking shammocky shammy shampoo shampooer shamrock shamroot shamsheer Shan shan shanachas shanachie Shandean shandry shandrydan Shandy shandy shandygaff Shandyism Shane Shang Shangalla shangan Shanghai shanghai shanghaier shank Shankar shanked shanker shankings shankpiece shanksman shanna Shannon shanny shansa shant Shantung shanty shantylike shantyman shantytown shap shapable Shape shape shaped shapeful shapeless shapelessly shapelessness shapeliness shapely shapen shaper shapeshifter shapesmith shaping shapingly shapometer shaps Shaptan shapy sharable Sharada Sharan shard Shardana sharded shardy share shareable sharebone sharebroker sharecrop sharecropper shareholder shareholdership shareman sharepenny sharer shareship sharesman sharewort Sharezer shargar Shari Sharia Sharira shark sharkful sharkish sharklet sharklike sharkship sharkskin sharky sharn sharnbud sharny Sharon sharp sharpen sharpener sharper sharpie sharpish sharply sharpness sharps sharpsaw sharpshin sharpshod sharpshooter sharpshooting sharptail sharpware sharpy Sharra sharrag sharry Shasta shastaite Shastan shaster shastra shastraik shastri shastrik shat shatan shathmont Shatter shatter shatterbrain shatterbrained shatterer shatterheaded shattering shatteringly shatterment shatterpated shatterproof shatterwit shattery shattuckite shauchle shaugh shaul Shaula shaup shauri shauwe shavable shave shaveable shaved shavee shaveling shaven shaver shavery Shavese shavester shavetail shaveweed Shavian Shaviana Shavianism shaving shavings Shaw shaw Shawanese Shawano shawl shawled shawling shawlless shawllike shawlwise shawm Shawn Shawnee shawneewood shawny Shawwal shawy shay Shaysite she shea sheading sheaf sheafage sheaflike sheafripe sheafy sheal shealing Shean shear shearbill sheard shearer sheargrass shearhog shearing shearless shearling shearman shearmouse shears shearsman sheartail shearwater shearwaters sheat sheatfish sheath sheathbill sheathe sheathed sheather sheathery sheathing sheathless sheathlike sheathy sheave sheaved sheaveless sheaveman shebang Shebat shebeen shebeener Shechem Shechemites shed shedded shedder shedding sheder shedhand shedlike shedman shedwise shee sheely sheen sheenful sheenless sheenly sheeny sheep sheepback sheepberry sheepbine sheepbiter sheepbiting sheepcote sheepcrook sheepfaced sheepfacedly sheepfacedness sheepfold sheepfoot sheepgate sheephead sheepheaded sheephearted sheepherder sheepherding sheephook sheephouse sheepify sheepish sheepishly sheepishness sheepkeeper sheepkeeping sheepkill sheepless sheeplet sheeplike sheepling sheepman sheepmaster sheepmonger sheepnose sheepnut sheeppen sheepshank sheepshead sheepsheadism sheepshear sheepshearer sheepshearing sheepshed sheepskin sheepsplit sheepsteal sheepstealer sheepstealing sheepwalk sheepwalker sheepweed sheepy sheer sheered sheering sheerly sheerness sheet sheetage sheeted sheeter sheetflood sheetful sheeting sheetless sheetlet sheetlike sheetling sheetways sheetwise sheetwork sheetwriting sheety Sheffield shehitah sheik sheikdom sheikhlike sheikhly sheiklike sheikly Sheila shekel Shekinah Shel shela sheld sheldapple shelder sheldfowl sheldrake shelduck shelf shelfback shelffellow shelfful shelflist shelfmate shelfpiece shelfroom shelfworn shelfy shell shellac shellacker shellacking shellapple shellback shellblow shellblowing shellbound shellburst shellcracker shelleater shelled sheller Shelleyan Shelleyana shellfire shellfish shellfishery shellflower shellful shellhead shelliness shelling shellman shellmonger shellproof shellshake shellum shellwork shellworker shelly shellycoat shelta shelter shelterage sheltered shelterer shelteringly shelterless shelterlessness shelterwood sheltery sheltron shelty shelve shelver shelving shelvingly shelvingness shelvy Shelyak Shemaka sheminith Shemite Shemitic Shemitish Shemu Shen shenanigan shend sheng Shenshai Sheol sheolic shepherd shepherdage shepherddom shepherdess shepherdhood Shepherdia shepherdish shepherdism shepherdize shepherdless shepherdlike shepherdling shepherdly shepherdry sheppeck sheppey shepstare sher Sherani Sherardia sherardize sherardizer Sheratan Sheraton sherbacha sherbet sherbetlee sherbetzide sheriat sherif sherifa sherifate sheriff sheriffalty sheriffdom sheriffess sheriffhood sheriffry sheriffship sheriffwick sherifi sherifian sherify sheristadar Sheriyat sherlock Sherman Sherpa Sherramoor Sherri sherry Sherrymoor sherryvallies Shesha sheth Shetland Shetlander Shetlandic sheugh sheva shevel sheveled shevri shewa shewbread shewel sheyle shi Shiah shibah shibar shibboleth shibbolethic shibuichi shice shicer shicker shickered shide shied shiel shield shieldable shieldboard shielddrake shielded shielder shieldflower shielding shieldless shieldlessly shieldlessness shieldlike shieldling shieldmaker shieldmay shieldtail shieling shier shies shiest shift shiftable shiftage shifter shiftful shiftfulness shiftily shiftiness shifting shiftingly shiftingness shiftless shiftlessly shiftlessness shifty Shigella shiggaion shigram shih Shiism Shiite Shiitic Shik shikar shikara shikargah shikari shikasta shikimi shikimic shikimole shikimotoxin shikken shiko shikra shilf shilfa Shilh Shilha shill shilla shillaber shillelagh shillet shillety shillhouse shillibeer shilling shillingless shillingsworth shilloo Shilluh Shilluk Shiloh shilpit shim shimal Shimei shimmer shimmering shimmeringly shimmery shimmy Shimonoseki shimose shimper shin Shina shinaniging shinarump shinbone shindig shindle shindy shine shineless shiner shingle shingled shingler shingles shinglewise shinglewood shingling shingly shinily shininess shining shiningly shiningness shinleaf Shinnecock shinner shinnery shinning shinny shinplaster shintiyan Shinto Shintoism Shintoist Shintoistic Shintoize shinty Shinwari shinwood shiny shinza ship shipboard shipbound shipboy shipbreaking shipbroken shipbuilder shipbuilding shipcraft shipentine shipful shipkeeper shiplap shipless shiplessly shiplet shipload shipman shipmanship shipmast shipmaster shipmate shipmatish shipment shipowner shipowning shippable shippage shipped shipper shipping shipplane shippo shippon shippy shipshape shipshapely shipside shipsmith shipward shipwards shipway shipwork shipworm shipwreck shipwrecky shipwright shipwrightery shipwrightry shipyard shirakashi shirallee Shiraz shire shirehouse shireman shirewick shirk shirker shirky shirl shirlcock Shirley shirpit shirr shirring shirt shirtband shirtiness shirting shirtless shirtlessness shirtlike shirtmaker shirtmaking shirtman shirttail shirtwaist shirty Shirvan shish shisham shisn shita shitepoke shither shittah shittim shittimwood shiv Shivaism Shivaist Shivaistic Shivaite shivaree shive shiver shivereens shiverer shivering shiveringly shiverproof shiversome shiverweed shivery shivey shivoo shivy shivzoku Shkupetar Shlu Shluh Sho sho Shoa shoad shoader shoal shoalbrain shoaler shoaliness shoalness shoalwise shoaly shoat shock shockability shockable shockedness shocker shockheaded shocking shockingly shockingness shocklike shockproof shod shodden shoddily shoddiness shoddy shoddydom shoddyism shoddyite shoddylike shoddyward shoddywards shode shoder shoe shoebill shoebinder shoebindery shoebinding shoebird shoeblack shoeboy shoebrush shoecraft shoeflower shoehorn shoeing shoeingsmith shoelace shoeless shoemaker shoemaking shoeman shoepack shoer shoescraper shoeshine shoeshop shoesmith shoestring shoewoman shoful shog shogaol shoggie shoggle shoggly shogi shogun shogunal shogunate shohet shoji Shojo shola shole Shona shone shoneen shonkinite shoo shood shoofa shoofly shooi shook shool shooldarry shooler shoop shoopiltie shoor shoot shootable shootboard shootee shooter shoother shooting shootist shootman shop shopboard shopbook shopboy shopbreaker shopbreaking shopfolk shopful shopgirl shopgirlish shophar shopkeeper shopkeeperess shopkeeperish shopkeeperism shopkeepery shopkeeping shopland shoplet shoplifter shoplifting shoplike shopmaid shopman shopmark shopmate shopocracy shopocrat shoppe shopper shopping shoppish shoppishness shoppy shopster shoptalk shopwalker shopwear shopwife shopwindow shopwoman shopwork shopworker shopworn shoq Shor shor shoran shore Shorea shoreberry shorebush shored shoregoing shoreland shoreless shoreman shorer shoreside shoresman shoreward shorewards shoreweed shoreyer shoring shorling shorn short shortage shortbread shortcake shortchange shortchanger shortclothes shortcoat shortcomer shortcoming shorten shortener shortening shorter shortfall shorthand shorthanded shorthandedness shorthander shorthead shorthorn Shortia shortish shortly shortness shorts shortschat shortsighted shortsightedly shortsightedness shortsome shortstaff shortstop shorttail Shortzy Shoshonean shoshonite shot shotbush shote shotgun shotless shotlike shotmaker shotman shotproof shotsman shotstar shott shotted shotten shotter shotty Shotweld shou should shoulder shouldered shoulderer shoulderette shouldering shouldna shouldnt shoupeltin shout shouter shouting shoutingly shoval shove shovegroat shovel shovelard shovelbill shovelboard shovelfish shovelful shovelhead shovelmaker shovelman shovelnose shovelweed shover show showable showance showbird showboard showboat showboater showboating showcase showdom showdown shower showerer showerful showeriness showerless showerlike showerproof showery showily showiness showing showish showless showman showmanism showmanry showmanship shown showpiece showroom showup showworthy showy showyard shoya shrab shraddha shradh shraf shrag shram shrank shrap shrapnel shrave shravey shreadhead shred shredcock shredder shredding shreddy shredless shredlike Shree shree shreeve shrend shrew shrewd shrewdish shrewdly shrewdness shrewdom shrewdy shrewish shrewishly shrewishness shrewlike shrewly shrewmouse shrewstruck shriek shrieker shriekery shriekily shriekiness shriekingly shriekproof shrieky shrieval shrievalty shrift shrike shrill shrilling shrillish shrillness shrilly shrimp shrimper shrimpfish shrimpi shrimpish shrimpishness shrimplike shrimpy shrinal Shrine shrine shrineless shrinelet shrinelike Shriner shrink shrinkable shrinkage shrinkageproof shrinker shrinkhead shrinking shrinkingly shrinkproof shrinky shrip shrite shrive shrivel shriven shriver shriving shroff shrog Shropshire shroud shrouded shrouding shroudless shroudlike shroudy Shrove shrove shrover Shrovetide shrub shrubbed shrubbery shrubbiness shrubbish shrubby shrubland shrubless shrublet shrublike shrubwood shruff shrug shruggingly shrunk shrunken shrups Shtokavski shtreimel Shu shuba shubunkin shuck shucker shucking shuckins shuckpen shucks shudder shudderful shudderiness shudderingly shuddersome shuddery shuff shuffle shuffleboard shufflecap shuffler shufflewing shuffling shufflingly shug Shuhali Shukria Shukulumbwe shul Shulamite shuler shulwaurs shumac shun Shunammite shune shunless shunnable shunner shunt shunter shunting shure shurf shush shusher Shuswap shut shutdown shutness shutoff Shutoku shutout shuttance shutten shutter shuttering shutterless shutterwise shutting shuttle shuttlecock shuttleheaded shuttlelike shuttlewise Shuvra shwanpan shy Shyam shydepoke shyer shyish Shylock Shylockism shyly shyness shyster si Sia siak sial sialaden sialadenitis sialadenoncus sialagogic sialagogue sialagoguic sialemesis Sialia sialic sialid Sialidae sialidan Sialis sialoangitis sialogenous sialoid sialolith sialolithiasis sialology sialorrhea sialoschesis sialosemeiology sialosis sialostenosis sialosyrinx sialozemia Siam siamang Siamese sib Sibbaldus sibbed sibbens sibber sibboleth sibby Siberian Siberic siberite sibilance sibilancy sibilant sibilantly sibilate sibilatingly sibilator sibilatory sibilous sibilus Sibiric sibling sibness sibrede sibship sibyl sibylesque sibylic sibylism sibylla sibylline sibyllist sic Sicambri Sicambrian Sicana Sicani Sicanian sicarian sicarious sicarius sicca siccaneous siccant siccate siccation siccative siccimeter siccity sice Sicel Siceliot Sicilian sicilian siciliana Sicilianism sicilica sicilicum sicilienne sicinnian sick sickbed sicken sickener sickening sickeningly sicker sickerly sickerness sickhearted sickish sickishly sickishness sickle sicklebill sickled sicklelike sickleman sicklemia sicklemic sicklepod sickler sicklerite sickless sickleweed sicklewise sicklewort sicklied sicklily sickliness sickling sickly sickness sicknessproof sickroom sicsac sicula sicular Siculi Siculian Sicyonian Sicyonic Sicyos Sid Sida Sidalcea sidder Siddha Siddhanta Siddhartha Siddhi siddur side sideage sidearm sideboard sidebone sidebones sideburns sidecar sidecarist sidecheck sided sidedness sideflash sidehead sidehill sidekicker sidelang sideless sideline sideling sidelings sidelingwise sidelong sidenote sidepiece sider sideral sideration siderealize sidereally siderean siderin siderism siderite sideritic Sideritis siderognost siderographic siderographical siderographist siderography siderolite siderology sideromagnetic sideromancy sideromelane sideronatrite sideronym sideroscope siderose siderosis siderostat siderostatic siderotechny siderous Sideroxylon sidership siderurgical siderurgy sides sidesaddle sideshake sideslip sidesman sidesplitter sidesplitting sidesplittingly sidesway sideswipe sideswiper sidetrack sidewalk sideward sidewards sideway sideways sidewinder sidewipe sidewiper sidewise sidhe sidi siding sidle sidler sidling sidlingly Sidney Sidonian Sidrach sidth sidy sie siege siegeable siegecraft siegenite sieger siegework Siegfried Sieglingia Siegmund Siegurd Siena Sienese sienna sier siering sierozem Sierra sierra sierran siesta siestaland Sieva sieve sieveful sievelike siever Sieversia sievings sievy sifac sifaka Sifatite sife siffilate siffle sifflement sifflet sifflot sift siftage sifted sifter sifting sig Siganidae Siganus sigatoka Sigaultian sigger sigh sigher sighful sighfully sighing sighingly sighingness sighless sighlike sight sightable sighted sighten sightening sighter sightful sightfulness sighthole sighting sightless sightlessly sightlessness sightlily sightliness sightly sightproof sightworthiness sightworthy sighty sigil sigilative Sigillaria Sigillariaceae sigillariaceous sigillarian sigillarid sigillarioid sigillarist sigillaroid sigillary sigillate sigillated sigillation sigillistic sigillographer sigillographical sigillography sigillum sigla siglarian siglos Sigma sigma sigmaspire sigmate sigmatic sigmation sigmatism sigmodont Sigmodontes sigmoid sigmoidal sigmoidally sigmoidectomy sigmoiditis sigmoidopexy sigmoidoproctostomy sigmoidorectostomy sigmoidoscope sigmoidoscopy sigmoidostomy Sigmund sign signable signal signalee signaler signalese signaletic signaletics signalism signalist signality signalize signally signalman signalment signary signatary signate signation signator signatory signatural signature signatureless signaturist signboard signee signer signet signetwise signifer signifiable significal significance significancy significant significantly significantness significate signification significatist significative significatively significativeness significator significatory significatrix significature significavit significian significs signifier signify signior signiorship signist signless signlike signman signorial signorship signory signpost signum signwriter Sigurd Sihasapa Sika sika sikar sikatch sike sikerly sikerness siket Sikh sikhara Sikhism sikhra Sikinnis Sikkimese Siksika sil silage silaginoid silane Silas silbergroschen silcrete sile silen Silenaceae silenaceous Silenales silence silenced silencer silency Silene sileni silenic silent silential silentiary silentious silentish silently silentness silenus silesia Silesian Siletz silex silexite silhouette silhouettist silhouettograph silica silicam silicane silicate silication silicatization Silicea silicean siliceocalcareous siliceofelspathic siliceofluoric siliceous silicic silicicalcareous silicicolous silicide silicidize siliciferous silicification silicifluoric silicifluoride silicify siliciophite silicious Silicispongiae silicium siliciuretted silicize silicle silico silicoacetic silicoalkaline silicoaluminate silicoarsenide silicocalcareous silicochloroform silicocyanide silicoethane silicoferruginous Silicoflagellata Silicoflagellatae silicoflagellate Silicoflagellidae silicofluoric silicofluoride silicohydrocarbon Silicoidea silicomagnesian silicomanganese silicomethane silicon silicone siliconize silicononane silicopropane silicosis Silicospongiae silicotalcose silicotic silicotitanate silicotungstate silicotungstic silicula silicular silicule siliculose siliculous silicyl Silipan siliqua siliquaceous siliquae Siliquaria Siliquariidae silique siliquiferous siliquiform siliquose siliquous silk silkalene silkaline silked silken silker silkflower silkgrower silkie silkily silkiness silklike silkman silkness silksman silktail silkweed silkwoman silkwood silkwork silkworks silkworm silky sill sillabub silladar Sillaginidae Sillago sillandar sillar siller Sillery sillibouk sillikin sillily sillimanite silliness sillock sillograph sillographer sillographist sillometer sillon silly sillyhood sillyhow sillyish sillyism sillyton silo siloist Silpha silphid Silphidae silphium silt siltage siltation silting siltlike silty silundum Silures Silurian Siluric silurid Siluridae Siluridan siluroid Siluroidei Silurus silva silvan silvanity silvanry Silvanus silvendy silver silverback silverbeater silverbelly silverberry silverbill silverboom silverbush silvered silverer silvereye silverfin silverfish silverhead silverily silveriness silvering silverish silverite silverize silverizer silverleaf silverless silverlike silverling silverly silvern silverness silverpoint silverrod silverside silversides silverskin silversmith silversmithing silverspot silvertail silvertip silvertop silvervine silverware silverweed silverwing silverwood silverwork silverworker silvery Silvester Silvia silvical silvicolous silvics silvicultural silviculturally silviculture silviculturist Silvius Silybum silyl Sim sima Simaba simal simar Simarouba Simaroubaceae simaroubaceous simball simbil simblin simblot Simblum sime Simeon Simeonism Simeonite Simia simiad simial simian simianity simiesque Simiidae Simiinae similar similarity similarize similarly similative simile similimum similiter similitive similitude similitudinize simility similize similor simioid simious simiousness simity simkin simlin simling simmer simmeringly simmon simnel simnelwise simoleon Simon simoniac simoniacal simoniacally Simonian Simonianism simonious simonism Simonist simonist simony simool simoom simoon Simosaurus simous simp simpai simper simperer simperingly simple simplehearted simpleheartedly simpleheartedness simpleness simpler simpleton simpletonian simpletonianism simpletonic simpletonish simpletonism simplex simplexed simplexity simplicident Simplicidentata simplicidentate simplicist simplicitarian simplicity simplicize simplification simplificative simplificator simplified simplifiedly simplifier simplify simplism simplist simplistic simply simsim simson simulacra simulacral simulacre simulacrize simulacrum simulance simulant simular simulate simulation simulative simulatively simulator simulatory simulcast simuler simuliid Simuliidae simulioid Simulium simultaneity simultaneous simultaneously simultaneousness sin sina Sinae Sinaean Sinaic sinaite Sinaitic sinal sinalbin Sinaloa sinamay sinamine sinapate sinapic sinapine sinapinic Sinapis sinapis sinapism sinapize sinapoline sinarchism sinarchist sinarquism sinarquist sinarquista sinawa sincaline since sincere sincerely sincereness sincerity sincipital sinciput sind sinder Sindhi sindle sindoc sindon sindry sine sinecural sinecure sinecureship sinecurism sinecurist Sinesian sinew sinewed sinewiness sinewless sinewous sinewy sinfonia sinfonie sinfonietta sinful sinfully sinfulness sing singability singable singableness singally singarip singe singed singeing singeingly singer singey Singfo singh Singhalese singillatim singing singingly singkamas single singlebar singled singlehanded singlehandedly singlehandedness singlehearted singleheartedly singleheartedness singlehood singleness singler singles singlestick singlesticker singlet singleton singletree singlings singly Singpho Singsing singsong singsongy Singspiel singspiel singstress singular singularism singularist singularity singularization singularize singularly singularness singult singultous singultus sinh Sinhalese Sinian Sinic Sinicism Sinicization Sinicize Sinico Sinification Sinify sinigrin sinigrinase sinigrosid sinigroside Sinisian Sinism sinister sinisterly sinisterness sinisterwise sinistrad sinistral sinistrality sinistrally sinistration sinistrin sinistrocerebral sinistrocular sinistrodextral sinistrogyrate sinistrogyration sinistrogyric sinistromanual sinistrorsal sinistrorsally sinistrorse sinistrous sinistrously sinistruous Sinite Sinitic sink sinkable sinkage sinker sinkerless sinkfield sinkhead sinkhole sinking Sinkiuse sinkless sinklike sinkroom sinkstone sinky sinless sinlessly sinlessness sinlike sinnable sinnableness sinnen sinner sinneress sinnership sinnet Sinningia sinningly sinningness sinoatrial sinoauricular Sinogram sinoidal Sinolog Sinologer Sinological Sinologist Sinologue Sinology sinomenine Sinonism Sinophile Sinophilism sinopia Sinopic sinopite sinople sinproof Sinsiga sinsion sinsring sinsyne sinter Sinto sintoc Sintoism Sintoist Sintsink Sintu sinuate sinuated sinuatedentate sinuately sinuation sinuatocontorted sinuatodentate sinuatodentated sinuatopinnatifid sinuatoserrated sinuatoundulate sinuatrial sinuauricular sinuitis sinuose sinuosely sinuosity sinuous sinuously sinuousness Sinupallia sinupallial Sinupallialia Sinupalliata sinupalliate sinus sinusal sinusitis sinuslike sinusoid sinusoidal sinusoidally sinuventricular sinward siol Sion sion Sionite Siouan Sioux sip sipage sipe siper siphoid siphon siphonaceous siphonage siphonal Siphonales Siphonaptera siphonapterous Siphonaria siphonariid Siphonariidae Siphonata siphonate Siphoneae siphoneous siphonet siphonia siphonial Siphoniata siphonic Siphonifera siphoniferous siphoniform siphonium siphonless siphonlike Siphonobranchiata siphonobranchiate Siphonocladales Siphonocladiales siphonogam Siphonogama siphonogamic siphonogamous siphonogamy siphonoglyph siphonoglyphe siphonognathid Siphonognathidae siphonognathous Siphonognathus Siphonophora siphonophoran siphonophore siphonophorous siphonoplax siphonopore siphonorhinal siphonorhine siphonosome siphonostele siphonostelic siphonostely Siphonostoma Siphonostomata siphonostomatous siphonostome siphonostomous siphonozooid siphonula siphorhinal siphorhinian siphosome siphuncle siphuncled siphuncular Siphunculata siphunculate siphunculated Sipibo sipid sipidity Siping siping sipling sipper sippet sippingly sippio Sipunculacea sipunculacean sipunculid Sipunculida sipunculoid Sipunculoidea Sipunculus sipylite Sir sir sircar sirdar sirdarship sire Siredon sireless siren sirene Sirenia sirenian sirenic sirenical sirenically Sirenidae sirening sirenize sirenlike sirenoid Sirenoidea Sirenoidei sireny sireship siress sirgang Sirian sirian Sirianian siriasis siricid Siricidae Siricoidea sirih siriometer Sirione siris Sirius sirkeer sirki sirky sirloin sirloiny Sirmian Sirmuellera siroc sirocco siroccoish siroccoishly sirpea sirple sirpoon sirrah sirree sirship siruaballi siruelas sirup siruped siruper sirupy Siryan Sis sis sisal siscowet sise sisel siserara siserary siserskite sish sisham sisi siskin Sisley sismotherapy siss Sisseton sissification sissify sissiness sissoo Sissu sissy sissyish sissyism sist Sistani sister sisterhood sisterin sistering sisterize sisterless sisterlike sisterliness sisterly sistern Sistine sistle sistomensin sistrum Sistrurus Sisymbrium Sisyphean Sisyphian Sisyphides Sisyphism Sisyphist Sisyphus Sisyrinchium sisyrinchium sit Sita sitao sitar sitatunga sitch site sitfast sith sithcund sithe sithement sithence sithens sitient sitio sitiology sitiomania sitiophobia Sitka Sitkan sitology sitomania Sitophilus sitophobia sitophobic sitosterin sitosterol sitotoxism Sitta sittee sitten sitter Sittidae Sittinae sittine sitting sittringy situal situate situated situation situational situla situlae situs Sium Siusi Siuslaw Siva siva Sivaism Sivaist Sivaistic Sivaite Sivan Sivapithecus sivathere Sivatheriidae Sivatheriinae sivatherioid Sivatherium siver sivvens Siwan Siwash siwash six sixain sixer sixfoil sixfold sixhaend sixhynde sixpence sixpenny sixpennyworth sixscore sixsome sixte sixteen sixteener sixteenfold sixteenmo sixteenth sixteenthly sixth sixthet sixthly sixtieth Sixtowns Sixtus sixty sixtyfold sixtypenny sizable sizableness sizably sizal sizar sizarship size sizeable sizeableness sized sizeman sizer sizes siziness sizing sizy sizygia sizygium sizz sizzard sizzing sizzle sizzling sizzlingly Sjaak sjambok Sjouke skaddle skaff skaffie skag skaillie skainsmate skair skaitbird skal skalawag skaldship skance Skanda skandhas skart skasely Skat skat skate skateable skater skatikas skatiku skating skatist skatole skatosine skatoxyl skaw skean skeanockle skedaddle skedaddler skedge skedgewith skedlock skee skeed skeeg skeel skeeling skeely skeen skeenyie skeer skeered skeery skeesicks skeet Skeeter skeeter skeezix Skef skeg skegger skeif skeigh skeily skein skeiner skeipp skel skelder skelderdrake skeldrake skeletal skeletin skeletogenous skeletogeny skeletomuscular skeleton skeletonian skeletonic skeletonization skeletonize skeletonizer skeletonless skeletonweed skeletony skelf skelgoose skelic skell skellat skeller skelloch skellum skelly skelp skelper skelpin skelping skelter Skeltonian Skeltonic Skeltonical Skeltonics skemmel skemp sken skene skeo skeough skep skepful skeppist skeppund skeptic skeptical skeptically skepticalness skepticism skepticize sker skere skerret skerrick skerry sketch sketchability sketchable sketchbook sketchee sketcher sketchily sketchiness sketching sketchingly sketchist sketchlike sketchy skete sketiotai skeuomorph skeuomorphic skevish skew skewback skewbacked skewbald skewed skewer skewerer skewerwood skewings skewl skewly skewness skewwhiff skewwise skewy skey skeyting ski skiagram skiagraph skiagrapher skiagraphic skiagraphical skiagraphically skiagraphy skiameter skiametry skiapod skiapodous skiascope skiascopy skibby skibslast skice skid skidded skidder skidding skiddingly skiddoo skiddy Skidi skidpan skidproof skidway skied skieppe skiepper skier skies skiff skiffless skiffling skift skiing skijore skijorer skijoring skil skilder skildfel skilfish skill skillagalee skilled skillenton skillessness skillet skillful skillfully skillfulness skilligalee skilling skillion skilly skilpot skilts skim skimback skime skimmed skimmer skimmerton Skimmia skimming skimmingly skimmington skimmity skimp skimpily skimpiness skimpingly skimpy skin skinbound skinch skinflint skinflintily skinflintiness skinflinty skinful skink skinker skinking skinkle skinless skinlike skinned skinner skinnery skinniness skinning skinny skintight skinworm skiogram skiograph skiophyte Skip skip skipbrain Skipetar skipjack skipjackly skipkennel skipman skippable skippel skipper skippered skippership skippery skippet skipping skippingly skipple skippund skippy skiptail skirl skirlcock skirling skirmish skirmisher skirmishing skirmishingly skirp skirr skirreh skirret skirt skirtboard skirted skirter skirting skirtingly skirtless skirtlike skirty skirwhit skirwort skit skite skiter skither Skitswish Skittaget Skittagetan skitter skittish skittishly skittishness skittle skittled skittler skittles skitty skittyboot skiv skive skiver skiverwood skiving skivvies sklate sklater sklent skleropelite sklinter skoal Skodaic skogbolite Skoinolon skokiaan Skokomish skomerite skoo skookum Skopets skoptsy skout skraeling skraigh skrike skrimshander skrupul skua skulduggery skulk skulker skulking skulkingly skull skullbanker skullcap skulled skullery skullfish skullful skully skulp skun skunk skunkbill skunkbush skunkdom skunkery skunkhead skunkish skunklet skunktop skunkweed skunky Skupshtina skuse skutterudite sky skybal skycraft Skye skyey skyful skyish skylark skylarker skyless skylight skylike skylook skyman skyphoi skyphos skyplast skyre skyrgaliard skyrocket skyrockety skysail skyscape skyscraper skyscraping skyshine skyugle skyward skywards skyway skywrite skywriter skywriting sla slab slabbed slabber slabberer slabbery slabbiness slabbing slabby slabman slabness slabstone slack slackage slacked slacken slackener slacker slackerism slacking slackingly slackly slackness slad sladang slade slae slag slaggability slaggable slagger slagging slaggy slagless slaglessness slagman slain slainte slaister slaistery slait slake slakeable slakeless slaker slaking slaky slam slammakin slammerkin slammock slammocking slammocky slamp slampamp slampant slander slanderer slanderful slanderfully slandering slanderingly slanderous slanderously slanderousness slanderproof slane slang slangily slanginess slangish slangishly slangism slangkop slangous slangster slanguage slangular slangy slank slant slantindicular slantindicularly slanting slantingly slantingways slantly slantways slantwise slap slapdash slapdashery slape slaphappy slapjack slapper slapping slapstick slapsticky slare slart slarth Slartibartfast slash slashed slasher slashing slashingly slashy slat slatch slate slateful slatelike slatemaker slatemaking slater slateworks slateyard slath slather slatify slatiness slating slatish slatted slatter slattern slatternish slatternliness slatternly slatternness slattery slatting slaty slaughter slaughterer slaughterhouse slaughteringly slaughterman slaughterous slaughterously slaughteryard slaum Slav Slavdom Slave slave slaveborn slaved slaveholder slaveholding slaveland slaveless slavelet slavelike slaveling slavemonger slaveowner slaveownership slavepen slaver slaverer slavering slaveringly slavery Slavey slavey Slavi Slavian Slavic Slavicism Slavicize Slavification Slavify slavikite slaving Slavish slavish slavishly slavishness Slavism Slavist Slavistic Slavization Slavize slavocracy slavocrat slavocratic Slavonian Slavonianize Slavonic Slavonically Slavonicize Slavonish Slavonism Slavonization Slavonize Slavophile Slavophilism Slavophobe Slavophobist slaw slay slayable slayer slaying sleathy sleave sleaved sleaziness sleazy Sleb sleck sled sledded sledder sledding sledful sledge sledgeless sledgemeter sledger sledging sledlike slee sleech sleechy sleek sleeken sleeker sleeking sleekit sleekly sleekness sleeky sleep sleeper sleepered sleepful sleepfulness sleepify sleepily sleepiness sleeping sleepingly sleepland sleepless sleeplessly sleeplessness sleeplike sleepmarken sleepproof sleepry sleepwaker sleepwaking sleepwalk sleepwalker sleepwalking sleepward sleepwort sleepy sleepyhead sleer sleet sleetiness sleeting sleetproof sleety sleeve sleeveband sleeveboard sleeved sleeveen sleevefish sleeveful sleeveless sleevelessness sleevelet sleevelike sleever sleigh sleigher sleighing sleight sleightful sleighty slendang slender slenderish slenderize slenderly slenderness slent slepez slept slete sleuth sleuthdog sleuthful sleuthhound sleuthlike slew slewed slewer slewing sley sleyer slice sliceable sliced slicer slich slicht slicing slicingly slick slicken slickens slickenside slicker slickered slickery slicking slickly slickness slid slidable slidableness slidably slidage slidden slidder sliddery slide slideable slideableness slideably slided slidehead slideman slideproof slider slideway sliding slidingly slidingness slidometer slifter slight slighted slighter slightily slightiness slighting slightingly slightish slightly slightness slighty slim slime slimeman slimer slimily sliminess slimish slimishness slimly slimmish slimness slimpsy slimsy slimy sline sling slingball slinge slinger slinging slingshot slingsman slingstone slink slinker slinkily slinkiness slinking slinkingly slinkskin slinkweed slinky slip slipback slipband slipboard slipbody slipcase slipcoach slipcoat slipe slipgibbet sliphorn sliphouse slipknot slipless slipman slipover slippage slipped slipper slippered slipperflower slipperily slipperiness slipperlike slipperweed slipperwort slippery slipperyback slipperyroot slippiness slipping slippingly slipproof slippy slipshod slipshoddiness slipshoddy slipshodness slipshoe slipslap slipslop slipsloppish slipsloppism slipsole slipstep slipstring sliptopped slipway slirt slish slit slitch slite slither slithering slitheroo slithers slithery slithy slitless slitlike slitshell slitted slitter slitting slitty slitwise slive sliver sliverer sliverlike sliverproof slivery sliving slivovitz sloan Sloanea slob slobber slobberchops slobberer slobbers slobbery slobby slock slocken slod slodder slodge slodger sloe sloeberry sloebush sloetree slog slogan sloganeer sloganize slogger slogging slogwood sloka sloke slommock slon slone slonk sloo sloom sloomy sloop sloopman sloosh slop slopdash slope sloped slopely slopeness sloper slopeways slopewise sloping slopingly slopingness slopmaker slopmaking sloppage slopped sloppery sloppily sloppiness slopping sloppy slops slopseller slopselling slopshop slopstone slopwork slopworker slopy slorp slosh slosher sloshily sloshiness sloshy slot slote sloted sloth slothful slothfully slothfulness slothound slotted slotter slottery slotting slotwise slouch sloucher slouchily slouchiness slouching slouchingly slouchy slough sloughiness sloughy slour sloush Slovak Slovakian Slovakish sloven Slovene Slovenian Slovenish slovenlike slovenliness slovenly slovenwood Slovintzi slow slowbellied slowbelly slowdown slowgoing slowheaded slowhearted slowheartedness slowhound slowish slowly slowmouthed slowpoke slowrie slows slowworm sloyd slub slubber slubberdegullion slubberer slubbering slubberingly slubberly slubbery slubbing slubby slud sludder sluddery sludge sludged sludger sludgy slue sluer slug slugabed sluggard sluggarding sluggardize sluggardliness sluggardly sluggardness sluggardry slugged slugger slugging sluggingly sluggish sluggishly sluggishness sluggy sluglike slugwood sluice sluicelike sluicer sluiceway sluicing sluicy sluig sluit slum slumber slumberer slumberful slumbering slumberingly slumberland slumberless slumberous slumberously slumberousness slumberproof slumbersome slumbery slumbrous slumdom slumgullion slumgum slumland slummage slummer slumminess slumming slummock slummocky slummy slump slumpproof slumproof slumpwork slumpy slumward slumwise slung slungbody slunge slunk slunken slur slurbow slurp slurry slush slusher slushily slushiness slushy slut slutch slutchy sluther sluthood slutter sluttery sluttikin sluttish sluttishly sluttishness slutty sly slyboots slyish slyly slyness slype sma smachrie smack smackee smacker smackful smacking smackingly smacksman smaik Smalcaldian Smalcaldic small smallage smallclothes smallcoal smallen smaller smallhearted smallholder smalling smallish smallmouth smallmouthed smallness smallpox smalls smallsword smalltime smallware smally smalm smalt smalter smaltine smaltite smalts smaragd smaragdine smaragdite smaragdus smarm smarmy smart smarten smarting smartingly smartish smartism smartless smartly smartness smartweed smarty smash smashable smashage smashboard smasher smashery smashing smashingly smashment smashup smatter smatterer smattering smatteringly smattery smaze smear smearcase smeared smearer smeariness smearless smeary smectic smectis smectite Smectymnuan Smectymnuus smeddum smee smeech smeek smeeky smeer smeeth smegma smell smellable smellage smelled smeller smellful smellfungi smellfungus smelliness smelling smellproof smellsome smelly smelt smelter smelterman smeltery smeltman smeth smethe smeuse smew smich smicker smicket smiddie smiddum smidge smidgen smifligate smifligation smiggins Smilacaceae smilacaceous Smilaceae smilaceous smilacin Smilacina Smilax smilax smile smileable smileage smileful smilefulness smileless smilelessly smilelessness smilemaker smilemaking smileproof smiler smilet smiling smilingly smilingness Smilodon smily Smintheus Sminthian sminthurid Sminthuridae Sminthurus smirch smircher smirchless smirchy smiris smirk smirker smirking smirkingly smirkish smirkle smirkly smirky smirtle smit smitch smite smiter smith smitham smithcraft smither smithereens smithery Smithian Smithianism smithing smithite Smithsonian smithsonite smithwork smithy smithydander smiting smitten smitting smock smocker smockface smocking smockless smocklike smog smokables smoke smokeable smokebox smokebush smoked smokefarthings smokehouse smokejack smokeless smokelessly smokelessness smokelike smokeproof smoker smokery smokestack smokestone smoketight smokewood smokily smokiness smoking smokish smoky smokyseeming smolder smolderingness smolt smooch smoochy smoodge smoodger smook smoorich Smoos smoot smooth smoothable smoothback smoothbore smoothbored smoothcoat smoothen smoother smoothification smoothify smoothing smoothingly smoothish smoothly smoothmouthed smoothness smoothpate smopple smore smorgasbord smote smother smotherable smotheration smothered smotherer smotheriness smothering smotheringly smothery smotter smouch smoucher smous smouse smouser smout smriti smudge smudged smudgedly smudgeless smudgeproof smudger smudgily smudginess smudgy smug smuggery smuggish smuggishly smuggishness smuggle smuggleable smuggler smugglery smuggling smugism smugly smugness smuisty smur smurr smurry smuse smush smut smutch smutchin smutchless smutchy smutproof smutted smutter smuttily smuttiness smutty Smyrna Smyrnaite Smyrnean Smyrniot Smyrniote smyth smytrie snab snabbie snabble snack snackle snackman snaff snaffle snaffles snafu snag snagbush snagged snagger snaggled snaggletooth snaggy snagrel snail snaileater snailery snailfish snailflower snailish snailishly snaillike snails snaily snaith snake snakebark snakeberry snakebird snakebite snakefish snakeflower snakehead snakeholing snakeleaf snakeless snakelet snakelike snakeling snakemouth snakeneck snakeology snakephobia snakepiece snakepipe snakeproof snaker snakeroot snakery snakeship snakeskin snakestone snakeweed snakewise snakewood snakeworm snakewort snakily snakiness snaking snakish snaky snap snapback snapbag snapberry snapdragon snape snaper snaphead snapholder snapjack snapless snappable snapped snapper snappily snappiness snapping snappingly snappish snappishly snappishness snapps snappy snaps snapsack snapshot snapshotter snapweed snapwood snapwort snapy snare snareless snarer snaringly snark snarl snarler snarleyyow snarlingly snarlish snarly snary snaste snatch snatchable snatched snatcher snatchily snatching snatchingly snatchproof snatchy snath snathe snavel snavvle snaw snead sneak sneaker sneakiness sneaking sneakingly sneakingness sneakish sneakishly sneakishness sneaksby sneaksman sneaky sneap sneath sneathe sneb sneck sneckdraw sneckdrawing sneckdrawn snecker snecket sned snee sneer sneerer sneerful sneerfulness sneering sneeringly sneerless sneery sneesh sneeshing sneest sneesty sneeze sneezeless sneezeproof sneezer sneezeweed sneezewood sneezewort sneezing sneezy snell snelly Snemovna snerp snew snib snibble snibbled snibbler snibel snicher snick snickdraw snickdrawing snicker snickering snickeringly snickersnee snicket snickey snickle sniddle snide snideness sniff sniffer sniffily sniffiness sniffing sniffingly sniffish sniffishness sniffle sniffler sniffly sniffy snift snifter snifty snig snigger sniggerer sniggering sniggle sniggler sniggoringly snip snipe snipebill snipefish snipelike sniper sniperscope sniping snipish snipjack snipnose snipocracy snipper snippersnapper snipperty snippet snippetiness snippety snippiness snipping snippish snippy snipsnapsnorum sniptious snipy snirl snirt snirtle snitch snitcher snite snithe snithy snittle snivel sniveled sniveler sniveling snively snivy snob snobber snobbery snobbess snobbing snobbish snobbishly snobbishness snobbism snobby snobdom snobling snobocracy snobocrat snobographer snobography snobologist snobonomer snobscat snocher snock snocker snod snodly snoek snoeking snog snoga Snohomish snoke Snonowas snood snooded snooding snook snooker snookered snoop snooper snooperscope snoopy snoose snoot snootily snootiness snooty snoove snooze snoozer snooziness snoozle snoozy snop Snoqualmie Snoquamish snore snoreless snorer snoring snoringly snork snorkel snorker snort snorter snorting snortingly snortle snorty snot snotter snottily snottiness snotty snouch snout snouted snouter snoutish snoutless snoutlike snouty Snow snow Snowball snowball snowbank snowbell snowberg snowberry snowbird snowblink snowbound snowbreak snowbush snowcap snowcraft Snowdonian snowdrift snowdrop snowfall snowflake snowflight snowflower snowfowl snowhammer snowhouse snowie snowily snowiness snowish snowk snowl snowland snowless snowlike snowmanship snowmobile snowplow snowproof snowscape snowshade snowshed snowshine snowshoe snowshoed snowshoeing snowshoer snowslide snowslip snowstorm snowsuit snowworm snowy snozzle snub snubbable snubbed snubbee snubber snubbiness snubbing snubbingly snubbish snubbishly snubbishness snubby snubproof snuck snudge snuff snuffbox snuffboxer snuffcolored snuffer snuffers snuffiness snuffing snuffingly snuffish snuffle snuffler snuffles snuffless snuffliness snuffling snufflingly snuffly snuffman snuffy snug snugger snuggery snuggish snuggle snugify snugly snugness snum snup snupper snur snurl snurly snurp snurt snuzzle sny snying so soak soakage soakaway soaked soaken soaker soaking soakingly soakman soaky soally soam soap soapbark soapberry soapbox soapboxer soapbubbly soapbush soaper soapery soapfish soapily soapiness soaplees soapless soaplike soapmaker soapmaking soapmonger soaprock soaproot soapstone soapsud soapsuddy soapsuds soapsudsy soapweed soapwood soapwort soapy soar soarability soarable soarer soaring soaringly soary sob sobber sobbing sobbingly sobby sobeit sober soberer sobering soberingly soberize soberlike soberly soberness sobersault sobersided sobersides soberwise sobful soboles soboliferous sobproof Sobralia sobralite Sobranje sobrevest sobriety sobriquet sobriquetical soc socage socager soccer soccerist soccerite soce socht sociability sociable sociableness sociably social Sociales socialism socialist socialistic socialite sociality socializable socialization socialize socializer socially socialness sociation sociative societal societally societarian societarianism societary societified societism societist societologist societology society societyish societyless socii Socinian Socinianism Socinianistic Socinianize sociobiological sociocentric sociocracy sociocrat sociocratic sociocultural sociodrama sociodramatic socioeconomic socioeducational sociogenesis sociogenetic sociogeny sociography sociolatry sociolegal sociologian sociologic sociological sociologically sociologism sociologist sociologistic sociologize sociologizer sociologizing sociology sociomedical sociometric sociometry socionomic socionomics socionomy sociophagous sociopolitical socioreligious socioromantic sociostatic sociotechnical socius sock sockdolager socker socket socketful socketless sockeye sockless socklessness sockmaker sockmaking socky socle socman socmanry soco Socorrito Socotran Socotri Socotrine Socratean Socratic Socratical Socratically Socraticism Socratism Socratist Socratize sod soda sodaclase sodaic sodaless sodalist sodalite sodalithite sodality sodamide sodbuster sodded sodden soddenly soddenness sodding soddite soddy sodic sodio sodioaluminic sodioaurous sodiocitrate sodiohydric sodioplatinic sodiosalicylate sodiotartrate sodium sodless sodoku Sodom sodomic Sodomist Sodomite sodomitess sodomitic sodomitical sodomitically Sodomitish sodomy sodwork sody soe soekoe soever sofa sofane sofar soffit Sofia Sofoklis Sofronia soft softa softball softbrained soften softener softening softhead softheaded softhearted softheartedly softheartedness softhorn softish softling softly softner softness softship softtack softwood softy sog Soga Sogdian Sogdianese Sogdianian Sogdoite soger soget soggarth soggendalite soggily sogginess sogging soggy soh soho Soiesette soiesette soil soilage soiled soiling soilless soilproof soilure soily soiree soixantine Soja soja sojourn sojourner sojourney sojournment sok soka soke sokeman sokemanemot sokemanry soken Sokoki Sokotri Sokulk Sol sol sola solace solaceful solacement solaceproof solacer solacious solaciously solaciousness solan Solanaceae solanaceous solanal Solanales solander solaneine solaneous solanidine solanine Solanum solanum solar solarism solarist solaristic solaristically solaristics Solarium solarium solarization solarize solarometer solate solatia solation solatium solay sold soldado Soldan soldan soldanel Soldanella soldanelle soldanrie solder solderer soldering solderless soldi soldier soldierbird soldierbush soldierdom soldieress soldierfish soldierhearted soldierhood soldiering soldierize soldierlike soldierliness soldierly soldierproof soldiership soldierwise soldierwood soldiery soldo sole Solea solea soleas solecism solecist solecistic solecistical solecistically solecize solecizer Soleidae soleiform soleil soleless solely solemn solemncholy solemnify solemnitude solemnity solemnization solemnize solemnizer solemnly solemnness Solen solen solenacean solenaceous soleness solenette solenial Solenidae solenite solenitis solenium solenoconch Solenoconcha solenocyte Solenodon solenodont Solenodontidae solenogaster Solenogastres solenoglyph Solenoglypha solenoglyphic solenoid solenoidal solenoidally Solenopsis solenostele solenostelic solenostomid Solenostomidae solenostomoid solenostomous Solenostomus solent solentine solepiece soleplate soleprint soler Solera soles soleus soleyn solfataric solfeggio solferino soli soliative solicit solicitant solicitation solicitationism solicited solicitee soliciter soliciting solicitor solicitorship solicitous solicitously solicitousness solicitress solicitrix solicitude solicitudinous solid Solidago solidago solidaric solidarily solidarism solidarist solidaristic solidarity solidarize solidary solidate solidi solidifiability solidifiable solidifiableness solidification solidifier solidiform solidify solidish solidism solidist solidistic solidity solidly solidness solidum Solidungula solidungular solidungulate solidus solifidian solifidianism solifluction solifluctional soliform Solifugae solifuge solifugean solifugid solifugous soliloquacious soliloquist soliloquium soliloquize soliloquizer soliloquizing soliloquizingly soliloquy solilunar Solio solio soliped solipedal solipedous solipsism solipsismal solipsist solipsistic solist solitaire solitarian solitarily solitariness solitary soliterraneous solitidal solitude solitudinarian solitudinize solitudinous solivagant solivagous sollar solleret Sollya solmizate solmization solo solod solodi solodization solodize soloecophanes soloist Solomon Solomonian Solomonic Solomonical Solomonitic Solon solon solonchak solonetz solonetzic solonetzicity Solonian Solonic solonist soloth solotink solotnik solpugid Solpugida Solpugidea Solpugides solstice solsticion solstitia solstitial solstitially solstitium solubility solubilization solubilize soluble solubleness solubly solum solute solution solutional solutioner solutionist solutize solutizer Solutrean solvability solvable solvableness solvate solvation solve solvement solvency solvend solvent solvently solventproof solver solvolysis solvolytic solvolyze solvsbergite Solyma Solymaean soma somacule Somal somal Somali somaplasm Somaschian somasthenia somata somatasthenia Somateria somatic somatical somatically somaticosplanchnic somaticovisceral somatics somatism somatist somatization somatochrome somatocyst somatocystic somatoderm somatogenetic somatogenic somatognosis somatognostic somatologic somatological somatologically somatologist somatology somatome somatomic somatophyte somatophytic somatoplasm somatopleural somatopleure somatopleuric somatopsychic somatosplanchnic somatotonia somatotonic somatotropic somatotropically somatotropism somatotype somatotyper somatotypy somatous somber somberish somberly somberness sombre sombrerite sombrero sombreroed sombrous sombrously sombrousness some somebody someday somedeal somegate somehow someone somepart someplace somers somersault somerset Somersetian somervillite somesthesia somesthesis somesthetic something somethingness sometime sometimes someway someways somewhat somewhatly somewhatness somewhen somewhence somewhere somewheres somewhile somewhiles somewhither somewhy somewise somital somite somitic somma sommaite sommelier somnambulance somnambulancy somnambulant somnambular somnambulary somnambulate somnambulation somnambulator somnambule somnambulency somnambulic somnambulically somnambulism somnambulist somnambulistic somnambulize somnambulous somnial somniative somnifacient somniferous somniferously somnific somnifuge somnify somniloquacious somniloquence somniloquent somniloquism somniloquist somniloquize somniloquous somniloquy Somniosus somnipathist somnipathy somnivolency somnivolent somnolence somnolency somnolent somnolently somnolescence somnolescent somnolism somnolize somnopathy somnorific somnus sompay sompne sompner Son son sonable sonance sonancy sonant sonantal sonantic sonantina sonantized sonar sonata sonatina sonation Sonchus sond sondation sondeli Sonderbund sonderclass Sondergotter Sondylomorum soneri song songbird songbook songcraft songfest songful songfully songfulness Songhai Songish songish songland songle songless songlessly songlessness songlet songlike songman Songo Songoi songster songstress songworthy songwright songy sonhood sonic soniferous sonification soniou Sonja sonk sonless sonlike sonlikeness sonly Sonneratia Sonneratiaceae sonneratiaceous sonnet sonnetary sonneteer sonneteeress sonnetic sonneting sonnetish sonnetist sonnetize sonnetlike sonnetwise sonnikins Sonny sonny sonobuoy sonometer Sonoran sonorant sonorescence sonorescent sonoric sonoriferous sonoriferously sonorific sonority sonorophone sonorosity sonorous sonorously sonorousness Sonrai sons sonship sonsy sontag soodle soodly Soohong sook Sooke sooky sool sooloos soon sooner soonish soonly Soorah soorawn soord soorkee Soot soot sooter sooterkin sooth soothe soother sootherer soothful soothing soothingly soothingness soothless soothsay soothsayer soothsayership soothsaying sootily sootiness sootless sootlike sootproof sooty sootylike sop sope soph Sopheric Sopherim Sophia sophia Sophian sophic sophical sophically sophiologic sophiology sophism Sophist sophister sophistic sophistical sophistically sophisticalness sophisticant sophisticate sophisticated sophistication sophisticative sophisticator sophisticism Sophistress sophistress sophistry Sophoclean sophomore sophomoric sophomorical sophomorically Sophora sophoria Sophronia sophronize Sophy sophy sopite sopition sopor soporiferous soporiferously soporiferousness soporific soporifical soporifically soporose sopper soppiness sopping soppy soprani sopranino sopranist soprano sora Sorabian sorage soral Sorb sorb Sorbaria sorbate sorbefacient sorbent Sorbian sorbic sorbile sorbin sorbinose Sorbish sorbite sorbitic sorbitize sorbitol Sorbonic Sorbonical Sorbonist Sorbonne sorbose sorboside Sorbus sorbus sorcer sorcerer sorceress sorcering sorcerous sorcerously sorcery sorchin sorda Sordaria Sordariaceae sordawalite sordellina Sordello sordes sordid sordidity sordidly sordidness sordine sordino sordor sore soredia soredial sorediate sorediferous sorediform soredioid soredium soree sorefalcon sorefoot sorehawk sorehead soreheaded soreheadedly soreheadedness sorehearted sorehon sorely sorema soreness Sorex sorgho Sorghum sorghum sorgo sori soricid Soricidae soricident Soricinae soricine soricoid Soricoidea soriferous sorite sorites soritical sorn sornare sornari sorner sorning soroban Soroptimist sororal sororate sororial sororially sororicidal sororicide sorority sororize sorose sorosis sorosphere Sorosporella Sorosporium sorption sorra Sorrel sorrel sorrento sorrily sorriness sorroa sorrow sorrower sorrowful sorrowfully sorrowfulness sorrowing sorrowingly sorrowless sorrowproof sorrowy sorry sorryhearted sorryish sort sortable sortably sortal sortation sorted sorter sortie sortilege sortileger sortilegic sortilegious sortilegus sortilegy sortiment sortition sortly sorty sorus sorva sory sosh soshed Sosia soso sosoish Sospita soss sossle sostenuto sot Sotadean Sotadic Soter Soteres soterial soteriologic soteriological soteriology Sothiac Sothiacal Sothic Sothis Sotho sotie Sotik sotnia sotnik sotol sots sottage sotted sotter sottish sottishly sottishness sou souari soubise soubrette soubrettish soucar souchet Souchong souchong souchy soud soudagur souffle souffleed sough sougher soughing sought Souhegan soul soulack soulcake souled Souletin soulful soulfully soulfulness soulical soulish soulless soullessly soullessness soullike Soulmass soulsaving soulward souly soum soumansite soumarque sound soundable soundage soundboard sounder soundful soundheaded soundheadedness soundhearted soundheartednes sounding soundingly soundingness soundless soundlessly soundlessness soundly soundness soundproof soundproofing soup soupbone soupcon souper souple soupless souplike soupspoon soupy sour sourbelly sourberry sourbread sourbush sourcake source sourceful sourcefulness sourceless sourcrout sourdeline sourdine soured souredness souren sourer sourhearted souring sourish sourishly sourishness sourjack sourling sourly sourness sourock soursop sourtop sourweed sourwood soury sousaphone sousaphonist souse souser souslik soutane souter souterrain South south southard southbound Southcottian Southdown southeast southeaster southeasterly southeastern southeasternmost southeastward southeastwardly southeastwards souther southerland southerliness southerly southermost southern Southerner southerner southernism southernize southernliness southernly southernmost southernness southernwood southing southland southlander southmost southness southpaw Southron southron Southronie Southumbrian southward southwardly southwards southwest southwester southwesterly southwestern Southwesterner southwesternmost southwestward southwestwardly souvenir souverain souwester sov sovereign sovereigness sovereignly sovereignness sovereignship sovereignty soviet sovietdom sovietic sovietism sovietist sovietization sovietize sovite sovkhose sovkhoz sovran sovranty sow sowable sowan sowans sowar sowarry sowback sowbacked sowbane sowbelly sowbread sowdones sowel sowens sower sowfoot sowing sowins sowl sowle sowlike sowlth sown sowse sowt sowte Soxhlet soy soya soybean Soyot sozin sozolic sozzle sozzly spa Space space spaceband spaced spaceful spaceless spacer spacesaving spaceship spaciness spacing spaciosity spaciotemporal spacious spaciously spaciousness spack spacy spad spade spadebone spaded spadefish spadefoot spadeful spadelike spademan spader spadesman spadewise spadework spadger spadiceous spadices spadicifloral spadiciflorous spadiciform spadicose spadilla spadille spading spadix spadone spadonic spadonism spadrone spadroon spae spaebook spaecraft spaedom spaeman spaer spaewife spaewoman spaework spaewright spaghetti Spagnuoli spagyric spagyrical spagyrically spagyrist spahi spaid spaik spairge spak Spalacidae spalacine Spalax spald spalder spalding spale spall spallation spaller spalling spalpeen spalt span spancel spandle spandrel spandy spane spanemia spanemy spang spanghew spangle spangled spangler spanglet spangly spangolite Spaniard Spaniardization Spaniardize Spaniardo spaniel spaniellike spanielship spaning Spaniol Spaniolate Spanioli Spaniolize spanipelagic Spanish Spanishize Spanishly spank spanker spankily spanking spankingly spanky spanless spann spannel spanner spannerman spanopnoea spanpiece spantoon spanule spanworm Spar spar sparable sparada sparadrap sparagrass sparagus Sparassis sparassodont Sparassodonta Sparaxis sparaxis sparch spare spareable spareless sparely spareness sparer sparerib sparesome Sparganiaceae Sparganium sparganium sparganosis sparganum sparge sparger spargosis sparhawk sparid Sparidae sparing sparingly sparingness spark sparkback sparked sparker sparkiness sparking sparkish sparkishly sparkishness sparkle sparkleberry sparkler sparkless sparklessly sparklet sparklike sparkliness sparkling sparklingly sparklingness sparkly sparkproof sparks sparky sparlike sparling sparm Sparmannia Sparnacian sparoid sparpiece sparred sparrer sparring sparringly sparrow sparrowbill sparrowcide sparrowdom sparrowgrass sparrowish sparrowless sparrowlike sparrowtail sparrowtongue sparrowwort sparrowy sparry sparse sparsedly sparsely sparsile sparsioplast sparsity spart Spartacan Spartacide Spartacism Spartacist spartacist Spartan Spartanhood Spartanic Spartanically Spartanism Spartanize Spartanlike Spartanly sparteine sparterie sparth Spartiate Spartina Spartium spartle Sparus sparver spary spasm spasmatic spasmatical spasmatomancy spasmed spasmic spasmodic spasmodical spasmodically spasmodicalness spasmodism spasmodist spasmolytic spasmophilia spasmophilic spasmotin spasmotoxin spasmous Spass spastic spastically spasticity spat spatalamancy Spatangida Spatangina spatangoid Spatangoida Spatangoidea spatangoidean Spatangus spatchcock spate spatha spathaceous spathal spathe spathed spatheful spathic Spathiflorae spathilae spathilla spathose spathous spathulate Spathyema spatial spatiality spatialization spatialize spatially spatiate spatiation spatilomancy spatiotemporal spatling spatted spatter spatterdashed spatterdasher spatterdock spattering spatteringly spatterproof spatterwork spatting spattle spattlehoe Spatula spatula spatulamancy spatular spatulate spatulation spatule spatuliform spatulose spave spaver spavie spavied spaviet spavin spavindy spavined spawn spawneater spawner spawning spawny spay spayad spayard spaying speak speakable speakableness speakably speaker speakeress speakership speakhouse speakies speaking speakingly speakingness speakless speaklessly speal spealbone spean spear spearcast spearer spearfish spearflower spearhead spearing spearman spearmanship spearmint spearproof spearsman spearwood spearwort speary spec specchie spece special specialism specialist specialistic speciality specialization specialize specialized specializer specially specialness specialty speciation specie species speciestaler specifiable specific specifical specificality specifically specificalness specificate specification specificative specificatively specificity specificize specificly specificness specifier specifist specify specillum specimen specimenize speciology speciosity specious speciously speciousness speck specked speckedness speckfall speckiness specking speckle specklebelly specklebreast speckled speckledbill speckledness speckless specklessly specklessness speckling speckly speckproof specks specksioneer specky specs spectacle spectacled spectacleless spectaclelike spectaclemaker spectaclemaking spectacles spectacular spectacularism spectacularity spectacularly spectator spectatordom spectatorial spectatorship spectatory spectatress spectatrix specter spectered specterlike spectra spectral spectralism spectrality spectrally spectralness spectrobolograph spectrobolographic spectrobolometer spectrobolometric spectrochemical spectrochemistry spectrocolorimetry spectrocomparator spectroelectric spectrogram spectrograph spectrographic spectrographically spectrography spectroheliogram spectroheliograph spectroheliographic spectrohelioscope spectrological spectrologically spectrology spectrometer spectrometric spectrometry spectromicroscope spectromicroscopical spectrophobia spectrophone spectrophonic spectrophotoelectric spectrophotograph spectrophotography spectrophotometer spectrophotometric spectrophotometry spectropolarimeter spectropolariscope spectropyrheliometer spectropyrometer spectroradiometer spectroradiometric spectroradiometry spectroscope spectroscopic spectroscopically spectroscopist spectroscopy spectrotelescope spectrous spectrum spectry specula specular Specularia specularly speculate speculation speculatist speculative speculatively speculativeness speculativism speculator speculatory speculatrices speculatrix speculist speculum specus sped speech speechcraft speecher speechful speechfulness speechification speechifier speechify speeching speechless speechlessly speechlessness speechlore speechmaker speechmaking speechment speed speedaway speedboat speedboating speedboatman speeder speedful speedfully speedfulness speedily speediness speeding speedingly speedless speedometer speedster speedway speedwell speedy speel speelken speelless speen speer speering speerity speiskobalt speiss spekboom spelaean spelder spelding speldring speleological speleologist speleology spelk spell spellable spellbind spellbinder spellbinding spellbound spellcraft spelldown speller spellful spelling spellingdown spellingly spellmonger spellproof spellword spellwork spelt spelter spelterman speltoid speltz speluncar speluncean spelunk spelunker spence Spencean Spencer spencer Spencerian Spencerianism Spencerism spencerite spend spendable spender spendful spendible spending spendless spendthrift spendthrifty Spenerism spense Spenserian spent speos Speotyto sperable Speranza sperate Spergula Spergularia sperity sperket sperling sperm sperma spermaceti spermacetilike spermaduct spermalist Spermaphyta spermaphyte spermaphytic spermarium spermary spermashion spermatangium spermatheca spermathecal spermatic spermatically spermatid spermatiferous spermatin spermatiogenous spermation spermatiophore spermatism spermatist spermatitis spermatium spermatize spermatoblast spermatoblastic spermatocele spermatocyst spermatocystic spermatocystitis spermatocytal spermatocyte spermatogemma spermatogenesis spermatogenetic spermatogenic spermatogenous spermatogeny spermatogonial spermatogonium spermatoid spermatolysis spermatolytic spermatophoral spermatophore spermatophorous Spermatophyta spermatophyte spermatophytic spermatoplasm spermatoplasmic spermatoplast spermatorrhea spermatospore spermatotheca spermatova spermatovum spermatoxin spermatozoa spermatozoal spermatozoan spermatozoic spermatozoid spermatozoon spermaturia spermic spermidine spermiducal spermiduct spermigerous spermine spermiogenesis spermism spermist spermoblast spermoblastic spermocarp spermocenter spermoderm spermoduct spermogenesis spermogenous spermogone spermogoniferous spermogonium spermogonous spermologer spermological spermologist spermology spermolysis spermolytic spermophile spermophiline Spermophilus spermophore spermophorium Spermophyta spermophyte spermophytic spermosphere spermotheca spermotoxin spermous spermoviduct spermy speronara speronaro sperone sperrylite spessartite spet spetch spetrophoby speuchan spew spewer spewiness spewing spewy spex sphacel Sphacelaria Sphacelariaceae sphacelariaceous Sphacelariales sphacelate sphacelated sphacelation sphacelia sphacelial sphacelism sphaceloderma Sphaceloma sphacelotoxin sphacelous sphacelus Sphaeralcea sphaeraphides Sphaerella sphaerenchyma Sphaeriaceae sphaeriaceous Sphaeriales sphaeridia sphaeridial sphaeridium Sphaeriidae Sphaerioidaceae sphaeristerium sphaerite Sphaerium sphaeroblast Sphaerobolaceae Sphaerobolus Sphaerocarpaceae Sphaerocarpales Sphaerocarpus sphaerocobaltite Sphaerococcaceae sphaerococcaceous Sphaerococcus sphaerolite sphaerolitic Sphaeroma Sphaeromidae Sphaerophoraceae Sphaerophorus Sphaeropsidaceae Sphaeropsidales Sphaeropsis sphaerosiderite sphaerosome sphaerospore Sphaerostilbe Sphaerotheca Sphaerotilus sphagion Sphagnaceae sphagnaceous Sphagnales sphagnicolous sphagnologist sphagnology sphagnous Sphagnum sphagnum Sphakiot sphalerite Sphargis sphecid Sphecidae Sphecina Sphecoidea spheges sphegid Sphegidae Sphegoidea sphendone sphene sphenethmoid sphenethmoidal sphenic sphenion Sphenisci Spheniscidae Sphenisciformes spheniscine spheniscomorph Spheniscomorphae spheniscomorphic Spheniscus sphenobasilar sphenobasilic sphenocephalia sphenocephalic sphenocephalous sphenocephaly Sphenodon sphenodon sphenodont Sphenodontia Sphenodontidae sphenoethmoid sphenoethmoidal sphenofrontal sphenogram sphenographic sphenographist sphenography sphenoid sphenoidal sphenoiditis sphenolith sphenomalar sphenomandibular sphenomaxillary sphenopalatine sphenoparietal sphenopetrosal Sphenophorus Sphenophyllaceae sphenophyllaceous Sphenophyllales Sphenophyllum Sphenopteris sphenosquamosal sphenotemporal sphenotic sphenotribe sphenotripsy sphenoturbinal sphenovomerine sphenozygomatic spherable spheral spherality spheraster spheration sphere sphereless spheric spherical sphericality spherically sphericalness sphericist sphericity sphericle sphericocylindrical sphericotetrahedral sphericotriangular spherics spheriform spherify spheroconic spherocrystal spherograph spheroidal spheroidally spheroidic spheroidical spheroidically spheroidicity spheroidism spheroidity spheroidize spheromere spherometer spheroquartic spherula spherular spherulate spherule spherulite spherulitic spherulitize sphery spheterize Sphex sphexide sphincter sphincteral sphincteralgia sphincterate sphincterectomy sphincterial sphincteric sphincterismus sphincteroscope sphincteroscopy sphincterotomy sphindid Sphindidae Sphindus sphingal sphinges sphingid Sphingidae sphingiform sphingine sphingoid sphingometer sphingomyelin sphingosine Sphingurinae Sphingurus sphinx sphinxian sphinxianness sphinxlike Sphoeroides sphragide sphragistic sphragistics sphygmia sphygmic sphygmochronograph sphygmodic sphygmogram sphygmograph sphygmographic sphygmography sphygmoid sphygmology sphygmomanometer sphygmomanometric sphygmomanometry sphygmometer sphygmometric sphygmophone sphygmophonic sphygmoscope sphygmus Sphyraena sphyraenid Sphyraenidae sphyraenoid Sphyrapicus Sphyrna Sphyrnidae Spica spica spical spicant Spicaria spicate spicated spiccato spice spiceable spiceberry spicebush spicecake spiced spiceful spicehouse spiceland spiceless spicelike spicer spicery spicewood spiciferous spiciform spicigerous spicilege spicily spiciness spicing spick spicket spickle spicknel spicose spicosity spicous spicousness spicula spiculae spicular spiculate spiculated spiculation spicule spiculiferous spiculiform spiculigenous spiculigerous spiculofiber spiculose spiculous spiculum spiculumamoris spicy spider spidered spiderflower spiderish spiderless spiderlike spiderling spiderly spiderweb spiderwork spiderwort spidery spidger spied spiegel spiegeleisen spiel spieler spier spiff spiffed spiffily spiffiness spiffing spiffy spiflicate spiflicated spiflication spig Spigelia Spigeliaceae Spigelian spiggoty spignet spigot Spike spike spikebill spiked spikedness spikefish spikehorn spikelet spikelike spikenard spiker spiketail spiketop spikeweed spikewise spikily spikiness spiking spiky Spilanthes spile spilehole spiler spileworm spilikin spiling spilite spilitic spill spillage spiller spillet spillproof spillway spilly Spilogale spiloma spilosite spilt spilth spilus spin spina spinacene spinaceous spinach spinachlike Spinacia spinae spinage spinal spinales spinalis spinally spinate spinder spindlage spindle spindleage spindled spindleful spindlehead spindlelegs spindlelike spindler spindleshanks spindletail spindlewise spindlewood spindleworm spindliness spindling spindly spindrift spine spinebill spinebone spined spinel spineless spinelessly spinelessness spinelet spinelike spinescence spinescent spinet spinetail spingel spinibulbar spinicarpous spinicerebellar spinidentate spiniferous Spinifex spinifex spiniform spinifugal spinigerous spinigrade spininess spinipetal spinitis spinituberculate spink spinnable spinnaker spinner spinneret spinnerular spinnerule spinnery spinney spinning spinningly spinobulbar spinocarpous spinocerebellar spinogalvanization spinoglenoid spinoid spinomuscular spinoneural spinoperipheral spinose spinosely spinoseness spinosity spinosodentate spinosodenticulate spinosotubercular spinosotuberculate spinosympathetic spinotectal spinothalamic spinotuberculous spinous spinousness Spinozism Spinozist Spinozistic spinster spinsterdom spinsterhood spinsterial spinsterish spinsterishly spinsterism spinsterlike spinsterly spinsterous spinstership spinstress spintext spinthariscope spinthariscopic spintherism spinulate spinulation spinule spinulescent spinuliferous spinuliform Spinulosa spinulose spinulosely spinulosociliate spinulosodentate spinulosodenticulate spinulosogranulate spinulososerrate spinulous spiny spionid Spionidae Spioniformia spiracle spiracula spiracular spiraculate spiraculiferous spiraculiform spiraculum Spiraea Spiraeaceae spiral spirale spiraled spiraliform spiralism spirality spiralization spiralize spirally spiraloid spiraltail spiralwise spiran spirant Spiranthes spiranthic spiranthy spirantic spirantize spiraster spirate spirated spiration spire spirea spired spiregrass spireless spirelet spireme spirepole spireward spirewise spiricle Spirifer Spirifera Spiriferacea spiriferid Spiriferidae spiriferoid spiriferous spiriform spirignath spirignathous spirilla Spirillaceae spirillaceous spirillar spirillolysis spirillosis spirillotropic spirillotropism spirillum spiring spirit spiritally spiritdom spirited spiritedly spiritedness spiriter spiritful spiritfully spiritfulness spirithood spiriting spiritism spiritist spiritistic spiritize spiritland spiritleaf spiritless spiritlessly spiritlessness spiritlike spiritmonger spiritous spiritrompe spiritsome spiritual spiritualism spiritualist spiritualistic spiritualistically spirituality spiritualization spiritualize spiritualizer spiritually spiritualness spiritualship spiritualty spirituosity spirituous spirituously spirituousness spiritus spiritweed spirity spirivalve spirket spirketing spirling spiro Spirobranchia Spirobranchiata spirobranchiate Spirochaeta Spirochaetaceae spirochaetal Spirochaetales Spirochaete spirochetal spirochete spirochetemia spirochetic spirocheticidal spirocheticide spirochetosis spirochetotic Spirodela spirogram spirograph spirographidin spirographin Spirographis Spirogyra spiroid spiroloculine spirometer spirometric spirometrical spirometry Spironema spiropentane Spirophyton Spirorbis spiroscope Spirosoma spirous spirt Spirula spirulate spiry spise spissated spissitude Spisula spit spital spitball spitballer spitbox spitchcock spite spiteful spitefully spitefulness spiteless spiteproof spitfire spitful spithamai spithame spitish spitpoison spitscocked spitstick spitted spitten spitter spitting spittle spittlefork spittlestaff spittoon spitz Spitzenburg spitzkop spiv spivery Spizella spizzerinctum Splachnaceae splachnaceous splachnoid Splachnum splacknuck splairge splanchnapophysial splanchnapophysis splanchnectopia splanchnemphraxis splanchnesthesia splanchnesthetic splanchnic splanchnoblast splanchnocoele splanchnoderm splanchnodiastasis splanchnodynia splanchnographer splanchnographical splanchnography splanchnolith splanchnological splanchnologist splanchnology splanchnomegalia splanchnomegaly splanchnopathy splanchnopleural splanchnopleure splanchnopleuric splanchnoptosia splanchnoptosis splanchnosclerosis splanchnoscopy splanchnoskeletal splanchnoskeleton splanchnosomatic splanchnotomical splanchnotomy splanchnotribe splash splashboard splashed splasher splashiness splashing splashingly splashproof splashy splat splatch splatcher splatchy splathering splatter splatterdash splatterdock splatterer splatterfaced splatterwork splay splayed splayer splayfoot splayfooted splaymouth splaymouthed spleen spleenful spleenfully spleenish spleenishly spleenishness spleenless spleenwort spleeny spleet spleetnew splenadenoma splenalgia splenalgic splenalgy splenatrophia splenatrophy splenauxe splenculus splendacious splendaciously splendaciousness splendent splendently splender splendescent splendid splendidly splendidness splendiferous splendiferously splendiferousness splendor splendorous splendorproof splendourproof splenectama splenectasis splenectomist splenectomize splenectomy splenectopia splenectopy splenelcosis splenemia splenemphraxis spleneolus splenepatitis splenetic splenetical splenetically splenetive splenial splenic splenical splenicterus splenification spleniform splenitis splenitive splenium splenius splenization splenoblast splenocele splenoceratosis splenocleisis splenocolic splenocyte splenodiagnosis splenodynia splenography splenohemia splenoid splenolaparotomy splenology splenolymph splenolymphatic splenolysin splenolysis splenoma splenomalacia splenomedullary splenomegalia splenomegalic splenomegaly splenomyelogenous splenoncus splenonephric splenopancreatic splenoparectama splenoparectasis splenopathy splenopexia splenopexis splenopexy splenophrenic splenopneumonia splenoptosia splenoptosis splenorrhagia splenorrhaphy splenotomy splenotoxin splenotyphoid splenulus splenunculus splet spleuchan splice spliceable splicer splicing splinder spline splineway splint splintage splinter splinterd splinterless splinternew splinterproof splintery splintwood splinty split splitbeak splitfinger splitfruit splitmouth splitnew splitsaw splittail splitten splitter splitting splitworm splodge splodgy splore splosh splotch splotchily splotchiness splotchy splother splunge splurge splurgily splurgy splurt spluther splutter splutterer spoach Spock spode spodiosite spodium spodogenic spodogenous spodomancy spodomantic spodumene spoffish spoffle spoffy spogel spoil spoilable spoilage spoilation spoiled spoiler spoilfive spoilful spoiling spoilless spoilment spoilsman spoilsmonger spoilsport spoilt Spokan spoke spokeless spoken spokeshave spokesman spokesmanship spokester spokeswoman spokeswomanship spokewise spoky spole spolia spoliarium spoliary spoliate spoliation spoliator spoliatory spolium spondaic spondaical spondaize spondean spondee spondiac Spondiaceae Spondias spondulics spondyl spondylalgia spondylarthritis spondylarthrocace spondylexarthrosis spondylic spondylid Spondylidae spondylioid spondylitic spondylitis spondylium spondylizema spondylocace Spondylocladium spondylodiagnosis spondylodidymia spondylodymus spondyloid spondylolisthesis spondylolisthetic spondylopathy spondylopyosis spondyloschisis spondylosis spondylosyndesis spondylotherapeutics spondylotherapist spondylotherapy spondylotomy spondylous Spondylus spondylus spong sponge spongecake sponged spongeful spongeless spongelet spongelike spongeous spongeproof sponger spongewood Spongiae spongian spongicolous spongiculture Spongida spongiferous spongiform Spongiidae Spongilla spongillid Spongillidae spongilline spongily spongin sponginblast sponginblastic sponginess sponging spongingly spongioblast spongioblastoma spongiocyte spongiolin spongiopilin spongioplasm spongioplasmic spongiose spongiosity spongiousness Spongiozoa spongiozoon spongoblast spongoblastic spongoid spongology spongophore Spongospora spongy sponsal sponsalia sponsibility sponsible sponsing sponsion sponsional sponson sponsor sponsorial sponsorship sponspeck spontaneity spontaneous spontaneously spontaneousness spontoon spoof spoofer spoofery spoofish spook spookdom spookery spookily spookiness spookish spookism spookist spookological spookologist spookology spooky spool spooler spoolful spoollike spoolwood spoom spoon spoonbill spoondrift spooner spoonerism spooneyism spooneyly spooneyness spoonflower spoonful spoonhutch spoonily spooniness spooning spoonism spoonless spoonlike spoonmaker spoonmaking spoonways spoonwood spoony spoonyism spoor spoorer spoot spor sporabola sporaceous sporades sporadial sporadic sporadical sporadically sporadicalness sporadicity sporadism sporadosiderite sporal sporange sporangia sporangial sporangidium sporangiferous sporangiform sporangioid sporangiola sporangiole sporangiolum sporangiophore sporangiospore sporangite Sporangites sporangium sporation spore spored sporeformer sporeforming sporeling sporicide sporid sporidesm sporidia sporidial sporidiferous sporidiole sporidiolum sporidium sporiferous sporification sporiparity sporiparous sporoblast Sporobolus sporocarp sporocarpium Sporochnaceae Sporochnus sporocyst sporocystic sporocystid sporocyte sporodochia sporodochium sporoduct sporogenesis sporogenic sporogenous sporogeny sporogone sporogonial sporogonic sporogonium sporogony sporoid sporologist sporomycosis sporont sporophore sporophoric sporophorous sporophydium sporophyll sporophyllary sporophyllum sporophyte sporophytic sporoplasm sporosac sporostegium sporostrote sporotrichosis sporotrichotic Sporotrichum sporous Sporozoa sporozoal sporozoan sporozoic sporozoite sporozoon sporran sport sportability sportable sportance sporter sportful sportfully sportfulness sportily sportiness sporting sportingly sportive sportively sportiveness sportless sportling sportly sports sportsman sportsmanlike sportsmanliness sportsmanly sportsmanship sportsome sportswear sportswoman sportswomanly sportswomanship sportula sportulae sporty sporular sporulate sporulation sporule sporuliferous sporuloid sposh sposhy spot spotless spotlessly spotlessness spotlight spotlighter spotlike spotrump spotsman spottable spotted spottedly spottedness spotteldy spotter spottily spottiness spotting spottle spotty spoucher spousage spousal spousally spouse spousehood spouseless spousy spout spouter spoutiness spouting spoutless spoutlike spoutman spouty sprachle sprack sprackish sprackle sprackly sprackness sprad spraddle sprag spragger spraggly spraich sprain spraint spraints sprang sprangle sprangly sprank sprat spratter spratty sprauchle sprawl sprawler sprawling sprawlingly sprawly spray sprayboard sprayer sprayey sprayful sprayfully sprayless spraylike sprayproof spread spreadation spreadboard spreaded spreader spreadhead spreading spreadingly spreadingness spreadover spready spreaghery spreath spreckle spree spreeuw Sprekelia spreng sprent spret sprew sprewl spridhogue spried sprier spriest sprig sprigged sprigger spriggy sprightful sprightfully sprightfulness sprightlily sprightliness sprightly sprighty spriglet sprigtail Spring spring springal springald springboard springbok springbuck springe springer springerle springfinger springfish springful springhaas springhalt springhead springhouse springily springiness springing springingly springle springless springlet springlike springly springmaker springmaking springtail springtide springtime springtrap springwood springworm springwort springwurzel springy sprink sprinkle sprinkled sprinkleproof sprinkler sprinklered sprinkling sprint sprinter sprit sprite spritehood spritsail sprittail sprittie spritty sproat sprocket sprod sprogue sproil sprong sprose sprottle sprout sproutage sprouter sproutful sprouting sproutland sproutling sprowsy spruce sprucely spruceness sprucery sprucification sprucify sprue spruer sprug spruiker spruit sprung sprunny sprunt spruntly spry spryly spryness spud Spudboy spudder spuddle spuddy spuffle spug spuilyie spuilzie spuke spume spumescence spumescent spumiferous spumification spumiform spumone spumose spumous spumy spun spung spunk spunkie spunkily spunkiness spunkless spunky spunny spur spurflower spurgall spurge spurgewort spuriae spuriosity spurious spuriously spuriousness Spurius spurl spurless spurlet spurlike spurling spurmaker spurmoney spurn spurner spurnpoint spurnwater spurproof spurred spurrer spurrial spurrier spurrings spurrite spurry spurt spurter spurtive spurtively spurtle spurway spurwing spurwinged spurwort sput sputa sputative sputter sputterer sputtering sputteringly sputtery sputum sputumary sputumose sputumous Spy spy spyboat spydom spyer spyfault spyglass spyhole spyism spyproof Spyros spyship spytower squab squabash squabasher squabbed squabbish squabble squabbler squabbling squabblingly squabbly squabby squacco squad squaddy squadrate squadrism squadron squadrone squadroned squail squailer squalene Squali squalid Squalida Squalidae squalidity squalidly squalidness squaliform squall squaller squallery squallish squally squalm Squalodon squalodont Squalodontidae squaloid Squaloidei squalor Squalus squam squama squamaceous squamae Squamariaceae Squamata squamate squamated squamatine squamation squamatogranulous squamatotuberculate squame squamella squamellate squamelliferous squamelliform squameous squamiferous squamiform squamify squamigerous squamipennate Squamipennes squamipinnate Squamipinnes squamocellular squamoepithelial squamoid squamomastoid squamoparietal squamopetrosal squamosa squamosal squamose squamosely squamoseness squamosis squamosity squamosodentated squamosoimbricated squamosomaxillary squamosoparietal squamosoradiate squamosotemporal squamosozygomatic squamosphenoid squamosphenoidal squamotemporal squamous squamously squamousness squamozygomatic Squamscot squamula squamulae squamulate squamulation squamule squamuliform squamulose squander squanderer squanderingly squandermania squandermaniac squantum squarable square squareage squarecap squared squaredly squareface squareflipper squarehead squarelike squarely squareman squaremouth squareness squarer squaretail squarewise squaring squarish squarishly squark squarrose squarrosely squarrous squarrulose squarson squarsonry squary squash squashberry squasher squashily squashiness squashy squat Squatarola squatarole Squatina squatina squatinid Squatinidae squatinoid Squatinoidei squatly squatment squatmore squatness squattage squatted squatter squatterarchy squatterdom squatterproof squattily squattiness squatting squattingly squattish squattocracy squattocratic squatty squatwise squaw squawberry squawbush squawdom squawfish squawflower squawk squawker squawkie squawking squawkingly squawky Squawmish squawroot Squawtits squawweed Squaxon squdge squdgy squeak squeaker squeakery squeakily squeakiness squeaking squeakingly squeaklet squeakproof squeaky squeakyish squeal squeald squealer squealing squeam squeamish squeamishly squeamishness squeamous squeamy Squedunk squeege squeegee squeezability squeezable squeezableness squeezably squeeze squeezeman squeezer squeezing squeezingly squeezy squelch squelcher squelchily squelchiness squelching squelchingly squelchingness squelchy squench squencher squeteague squib squibber squibbery squibbish squiblet squibling squid squiddle squidge squidgereen squidgy squiffed squiffer squiffy squiggle squiggly squilgee squilgeer Squill Squilla squilla squillagee squillery squillian squillid Squillidae squilloid Squilloidea squimmidge squin squinance squinancy squinch squinny squinsy squint squinted squinter squinting squintingly squintingness squintly squintness squinty squirage squiralty squire squirearch squirearchal squirearchical squirearchy squiredom squireen squirehood squireless squirelet squirelike squireling squirely squireocracy squireship squiress squiret squirewise squirish squirism squirk squirm squirminess squirming squirmingly squirmy squirr squirrel squirrelfish squirrelian squirreline squirrelish squirrellike squirrelproof squirreltail squirt squirter squirtiness squirting squirtingly squirtish squirty squish squishy squit squitch squitchy squitter squoze squush squushy sraddha sramana Sri sri Sridhar Sridharan Srikanth Srinivas Srinivasan Sriram Srivatsan sruti Ssi ssu st staab Staatsrat stab stabber stabbing stabbingly stabile stabilify stabilist stabilitate stability stabilization stabilizator stabilize stabilizer stable stableboy stableful stablekeeper stablelike stableman stableness stabler stablestand stableward stablewards stabling stablishment stably staboy stabproof stabulate stabulation stabwort staccato Stacey stacher stachydrin stachydrine stachyose Stachys stachys Stachytarpheta Stachyuraceae stachyuraceous Stachyurus stack stackage stackencloud stacker stackfreed stackful stackgarth Stackhousia Stackhousiaceae stackhousiaceous stackless stackman stackstand stackyard stacte stactometer Stacy stadda staddle staddling stade stadholder stadholderate stadholdership stadhouse stadia stadic stadimeter stadiometer stadion stadium stafette staff staffed staffelite staffer staffless staffman stag stagbush stage stageability stageable stageableness stageably stagecoach stagecoaching stagecraft staged stagedom stagehand stagehouse stageland stagelike stageman stager stagery stagese stagewise stageworthy stagewright staggard staggart staggarth Stagger stagger staggerbush staggerer staggering staggeringly staggers staggerweed staggerwort staggery staggie staggy staghead staghorn staghound staghunt staghunter staghunting stagiary stagily staginess staging Stagirite Stagiritic staglike stagmometer stagnance stagnancy stagnant stagnantly stagnantness stagnate stagnation stagnatory stagnature stagnicolous stagnize stagnum Stagonospora stagskin stagworm stagy Stahlhelm Stahlhelmer Stahlhelmist Stahlian Stahlianism Stahlism staia staid staidly staidness stain stainability stainable stainableness stainably stainer stainful stainierite staining stainless stainlessly stainlessness stainproof staio stair stairbeak stairbuilder stairbuilding staircase staired stairhead stairless stairlike stairstep stairway stairwise stairwork stairy staith staithman staiver stake stakehead stakeholder stakemaster staker stakerope Stakhanovism Stakhanovite stalactic stalactical stalactiform stalactital stalactite stalactited stalactitic stalactitical stalactitically stalactitiform stalactitious stalagma stalagmite stalagmitic stalagmitical stalagmitically stalagmometer stalagmometric stalagmometry stale stalely stalemate staleness staling Stalinism Stalinist Stalinite stalk stalkable stalked stalker stalkily stalkiness stalking stalkingly stalkless stalklet stalklike stalko stalky stall stallage stallar stallboard stallenger staller stallership stalling stallion stallionize stallman stallment stalwart stalwartism stalwartize stalwartly stalwartness stam stambha stambouline stamen stamened stamin stamina staminal staminate stamineal stamineous staminiferous staminigerous staminode staminodium staminody stammel stammer stammerer stammering stammeringly stammeringness stammerwort stamnos stamp stampable stampage stampedable stampede stampeder stampedingly stampee stamper stampery stamphead Stampian stamping stample stampless stampman stampsman stampweed Stan stance stanch stanchable stanchel stancheled stancher stanchion stanchless stanchly stanchness stand standage standard standardbred standardizable standardization standardize standardized standardizer standardwise standee standel standelwelks standelwort stander standergrass standerwort standfast standing standish standoff standoffish standoffishness standout standpat standpatism standpatter standpipe standpoint standpost standstill stane stanechat stang Stangeria stanhope Stanhopea stanine Stanislaw stanjen stank stankie Stanley Stanly stannane stannary stannate stannator stannel stanner stannery stannic stannide stanniferous stannite stanno stannotype stannous stannoxyl stannum stannyl stanza stanzaed stanzaic stanzaical stanzaically stanze stap stapedectomy stapedial stapediform stapediovestibular stapedius Stapelia stapelia stapes staphisagria staphyle Staphylea Staphyleaceae staphyleaceous staphylectomy staphyledema staphylematoma staphylic staphyline staphylinic staphylinid Staphylinidae staphylinideous Staphylinoidea Staphylinus staphylion staphylitis staphyloangina staphylococcal staphylococci staphylococcic Staphylococcus staphylococcus staphylodermatitis staphylodialysis staphyloedema staphylohemia staphylolysin staphyloma staphylomatic staphylomatous staphylomycosis staphyloncus staphyloplastic staphyloplasty staphyloptosia staphyloptosis staphyloraphic staphylorrhaphic staphylorrhaphy staphyloschisis staphylosis staphylotome staphylotomy staphylotoxin staple stapled stapler staplewise stapling Star star starblind starbloom starboard starbolins starbright Starbuck starch starchboard starched starchedly starchedness starcher starchflower starchily starchiness starchless starchlike starchly starchmaker starchmaking starchman starchness starchroot starchworks starchwort starchy starcraft stardom stare staree starer starets starfish starflower starfruit starful stargaze stargazer stargazing staring staringly stark starken starkly starkness starky starless starlessly starlessness starlet starlight starlighted starlights starlike starling starlit starlite starlitten starmonger starn starnel starnie starnose Staroobriadtsi starost starosta starosty starred starrily starriness starring starringly starry starshake starshine starship starshoot starshot starstone starstroke start starter startful startfulness starthroat starting startingly startish startle startler startling startlingly startlingness startlish startlishness startly startor starty starvation starve starveacre starved starvedly starveling starver starvy starward starwise starworm starwort stary stases stash stashie stasidion stasimetric stasimon stasimorphy stasiphobia stasis stassfurtite statable statal statant statcoulomb State state statecraft stated statedly stateful statefully statefulness statehood Statehouse stateless statelet statelich statelily stateliness stately statement statemonger statequake stater stateroom statesboy stateside statesider statesman statesmanese statesmanlike statesmanly statesmanship statesmonger stateswoman stateway statfarad stathmoi stathmos static statical statically Statice staticproof statics station stational stationarily stationariness stationary stationer stationery stationman stationmaster statiscope statism statist statistic statistical statistically statistician statisticize statistics statistology stative statoblast statocracy statocyst statolatry statolith statolithic statometer stator statoreceptor statorhab statoscope statospore statuarism statuarist statuary statue statuecraft statued statueless statuelike statuesque statuesquely statuesqueness statuette stature statured status statutable statutableness statutably statutary statute statutorily statutory statvolt staucher stauk staumer staun staunch staunchable staunchly staunchness staup stauracin stauraxonia stauraxonial staurion staurolatry staurolite staurolitic staurology Stauromedusae stauromedusan stauropegial stauropegion stauroscope stauroscopic stauroscopically staurotide stauter stave staveable staveless staver stavers staverwort stavesacre stavewise stavewood staving stavrite staw stawn staxis stay stayable stayed stayer staylace stayless staylessness staymaker staymaking staynil stays staysail stayship stchi stead steadfast steadfastly steadfastness steadier steadily steadiment steadiness steading steadman steady steadying steadyingly steadyish steak steal stealability stealable stealage stealed stealer stealing stealingly stealth stealthful stealthfully stealthily stealthiness stealthless stealthlike stealthwise stealthy stealy steam steamboat steamboating steamboatman steamcar steamer steamerful steamerless steamerload steamily steaminess steaming steamless steamlike steampipe steamproof steamship steamtight steamtightness steamy stean steaning steapsin stearate stearic steariform stearin stearolactone stearone stearoptene stearrhea stearyl steatin steatite steatitic steatocele steatogenous steatolysis steatolytic steatoma steatomatous steatopathic steatopyga steatopygia steatopygic steatopygous Steatornis Steatornithes Steatornithidae steatorrhea steatosis stech stechados steckling steddle Stedman steed steedless steedlike steek steekkan steekkannen steel Steelboy steeler steelhead steelhearted steelification steelify steeliness steeling steelless steellike steelmaker steelmaking steelproof steelware steelwork steelworker steelworks steely steelyard Steen steen steenboc steenbock steenbok Steenie steenkirk steenstrupine steenth steep steepdown steepen steeper steepgrass steepish steeple steeplebush steeplechase steeplechaser steeplechasing steepled steepleless steeplelike steepletop steeply steepness steepweed steepwort steepy steer steerability steerable steerage steerageway steerer steering steeringly steerling steerman steermanship steersman steerswoman steeve steevely steever steeving Stefan steg steganogram steganographical steganographist steganography Steganophthalmata steganophthalmate steganophthalmatous Steganophthalmia steganopod steganopodan Steganopodes steganopodous stegnosis stegnotic stegocarpous Stegocephalia stegocephalian stegocephalous Stegodon stegodont stegodontine Stegomus Stegomyia stegosaur Stegosauria stegosaurian stegosauroid Stegosaurus steid steigh Stein stein Steinberger steinbok Steinerian steinful steinkirk Steironema stekan stela stelae stelai stelar stele stell Stella stella stellar Stellaria stellary stellate stellated stellately stellature stelleridean stellerine stelliferous stellification stelliform stellify stelling stellionate stelliscript Stellite stellite stellular stellularly stellulate stelography stem stema stemhead stemless stemlet stemlike stemma stemmata stemmatiform stemmatous stemmed stemmer stemmery stemming stemmy Stemona Stemonaceae stemonaceous stemple stempost stemson stemwards stemware sten stenar stench stenchel stenchful stenching stenchion stenchy stencil stenciler stencilmaker stencilmaking stend steng stengah stenion steno stenobathic stenobenthic stenobragmatic stenobregma stenocardia stenocardiac Stenocarpus stenocephalia stenocephalic stenocephalous stenocephaly stenochoria stenochrome stenochromy stenocoriasis stenocranial stenocrotaphia Stenofiber stenog stenogastric stenogastry Stenoglossa stenograph stenographer stenographic stenographical stenographically stenographist stenography stenohaline stenometer stenopaic Stenopelmatidae stenopetalous stenophile Stenophragma stenophyllous stenorhyncous stenosed stenosepalous stenosis stenosphere stenostomatous stenostomia Stenotaphrum stenotelegraphy stenothermal stenothorax stenotic stenotype stenotypic stenotypist stenotypy stent stenter stenterer stenton Stentor stentorian stentorianly stentorine stentorious stentoriously stentoriousness stentoronic stentorophonic stentrel step stepaunt stepbairn stepbrother stepbrotherhood stepchild stepdame stepdaughter stepfather stepfatherhood stepfatherly stepgrandchild stepgrandfather stepgrandmother stepgrandson Stephan Stephana stephane stephanial Stephanian stephanic Stephanie stephanion stephanite Stephanoceros Stephanokontae stephanome stephanos Stephanotis stephanotis Stephanurus Stephe Stephen stepladder stepless steplike stepminnie stepmother stepmotherhood stepmotherless stepmotherliness stepmotherly stepnephew stepniece stepparent steppe stepped steppeland stepper stepping steppingstone steprelation steprelationship stepsire stepsister stepson stepstone stept stepuncle stepway stepwise steradian stercobilin stercolin stercophagic stercophagous stercoraceous stercoral Stercoranism Stercoranist Stercorariidae Stercorariinae stercorarious Stercorarius stercorary stercorate stercoration stercorean stercoremia stercoreous Stercorianism stercoricolous Stercorist stercorite stercorol stercorous stercovorous Sterculia Sterculiaceae sterculiaceous sterculiad stere stereagnosis Sterelmintha sterelminthic sterelminthous stereo stereobate stereobatic stereoblastula stereocamera stereocampimeter stereochemic stereochemical stereochemically stereochemistry stereochromatic stereochromatically stereochrome stereochromic stereochromically stereochromy stereocomparagraph stereocomparator stereoelectric stereofluoroscopic stereofluoroscopy stereogastrula stereognosis stereognostic stereogoniometer stereogram stereograph stereographer stereographic stereographical stereographically stereography stereoisomer stereoisomeric stereoisomerical stereoisomeride stereoisomerism stereomatrix stereome stereomer stereomeric stereomerical stereomerism stereometer stereometric stereometrical stereometrically stereometry stereomicrometer stereomonoscope stereoneural stereophantascope stereophonic stereophony stereophotogrammetry stereophotograph stereophotographic stereophotography stereophotomicrograph stereophotomicrography stereophysics stereopicture stereoplanigraph stereoplanula stereoplasm stereoplasma stereoplasmic stereopsis stereoptician stereopticon stereoradiograph stereoradiography Stereornithes stereornithic stereoroentgenogram stereoroentgenography stereoscope stereoscopic stereoscopically stereoscopism stereoscopist stereoscopy Stereospondyli stereospondylous stereostatic stereostatics stereotactic stereotactically stereotaxis stereotelemeter stereotelescope stereotomic stereotomical stereotomist stereotomy stereotropic stereotropism stereotypable stereotype stereotyped stereotyper stereotypery stereotypic stereotypical stereotyping stereotypist stereotypographer stereotypography stereotypy Stereum sterhydraulic steri steric sterically sterics steride sterigma sterigmata sterigmatic sterile sterilely sterileness sterilisable sterility sterilizability sterilizable sterilization sterilize sterilizer sterin sterk sterlet Sterling sterling sterlingly sterlingness Stern stern Sterna sterna sternad sternage sternal sternalis sternbergite sterncastle sterneber sternebra sternebrae sternebral sterned sternforemost Sterninae sternite sternitic sternly sternman sternmost sternness Sterno sternoclavicular sternocleidomastoid sternoclidomastoid sternocoracoid sternocostal sternofacial sternofacialis sternoglossal sternohumeral sternohyoid sternohyoidean sternomancy sternomastoid sternomaxillary sternonuchal sternopericardiac sternopericardial sternoscapular sternothere Sternotherus sternothyroid sternotracheal sternotribe sternovertebral sternoxiphoid sternpost sternson sternum sternutation sternutative sternutator sternutatory sternward sternway sternways sternworks stero steroid sterol Sterope sterrinck stert stertor stertorious stertoriously stertoriousness stertorous stertorously stertorousness sterve Stesichorean stet stetch stetharteritis stethogoniometer stethograph stethographic stethokyrtograph stethometer stethometric stethometry stethoparalysis stethophone stethophonometer stethoscope stethoscopic stethoscopical stethoscopically stethoscopist stethoscopy stethospasm Stevan Steve stevedorage stevedore stevedoring stevel Steven steven Stevensonian Stevensoniana Stevia stevia stew stewable steward stewardess stewardly stewardry stewardship Stewart Stewartia stewartry stewarty stewed stewpan stewpond stewpot stewy stey sthenia sthenic sthenochire stib stibbler stibblerig stibethyl stibial stibialism stibiate stibiated stibic stibiconite stibine stibious stibium stibnite stibonium sticcado stich sticharion sticheron stichic stichically stichid stichidium stichomancy stichometric stichometrical stichometrically stichometry stichomythic stichomythy stick stickability stickable stickadore stickadove stickage stickball sticked sticker stickers stickfast stickful stickily stickiness sticking stickit stickle stickleaf stickleback stickler stickless sticklike stickling stickly stickpin sticks stickseed sticksmanship sticktail sticktight stickum stickwater stickweed stickwork sticky Sticta Stictaceae Stictidaceae stictiform Stictis stid stiddy stife stiff stiffen stiffener stiffening stiffhearted stiffish stiffleg stifflike stiffly stiffneck stiffness stiffrump stifftail stifle stifledly stifler stifling stiflingly stigma stigmai stigmal stigmaria stigmarian stigmarioid stigmasterol stigmata stigmatal stigmatic stigmatical stigmatically stigmaticalness stigmatiferous stigmatiform stigmatism stigmatist stigmatization stigmatize stigmatizer stigmatoid stigmatose stigme stigmeology stigmonose stigonomancy Stikine Stilbaceae Stilbella stilbene stilbestrol stilbite stilboestrol Stilbum stile stileman stilet stiletto stilettolike still stillage stillatitious stillatory stillbirth stillborn stiller stillhouse stillicide stillicidium stilliform stilling Stillingia stillion stillish stillman stillness stillroom stillstand Stillwater stilly Stilophora Stilophoraceae stilpnomelane stilpnosiderite stilt stiltbird stilted stilter stiltify stiltiness stiltish stiltlike Stilton stilty stim stime stimpart stimpert stimulability stimulable stimulance stimulancy stimulant stimulate stimulatingly stimulation stimulative stimulator stimulatory stimulatress stimulatrix stimuli stimulogenous stimulus stimy stine sting stingaree stingareeing stingbull stinge stinger stingfish stingily stinginess stinging stingingly stingingness stingless stingo stingproof stingray stingtail stingy stink stinkard stinkardly stinkball stinkberry stinkbird stinkbug stinkbush stinkdamp stinker stinkhorn stinking stinkingly stinkingness stinkpot stinkstone stinkweed stinkwood stinkwort stint stinted stintedly stintedness stinter stintingly stintless stinty stion stionic Stipa stipe stiped stipel stipellate stipend stipendial stipendiarian stipendiary stipendiate stipendium stipendless stipes stipiform stipitate stipitiform stipiture Stipiturus stippen stipple stippled stippler stippling stipply stipula stipulable stipulaceous stipulae stipular stipulary stipulate stipulation stipulator stipulatory stipule stipuled stipuliferous stipuliform stir stirabout stirk stirless stirlessly stirlessness stirp stirpicultural stirpiculture stirpiculturist stirps stirra stirrable stirrage stirrer stirring stirringly stirrup stirrupless stirruplike stirrupwise stitch stitchbird stitchdown stitcher stitchery stitching stitchlike stitchwhile stitchwork stitchwort stite stith stithy stive stiver stivy Stizolobium stoa stoach stoat stoater stob stocah stoccado stoccata stochastic stochastical stochastically stock stockade stockannet stockbow stockbreeder stockbreeding Stockbridge stockbroker stockbrokerage stockbroking stockcar stocker stockfather stockfish stockholder stockholding stockhouse stockily stockiness stockinet stocking stockinger stockingless stockish stockishly stockishness stockjobber stockjobbery stockjobbing stockjudging stockkeeper stockkeeping stockless stocklike stockmaker stockmaking stockman stockowner stockpile stockpot stockproof stockrider stockriding stocks stockstone stocktaker stocktaking Stockton stockwork stockwright stocky stockyard stod stodge stodger stodgery stodgily stodginess stodgy stoechas stoep stof stoff stog stoga stogie stogy Stoic stoic stoical stoically stoicalness stoicharion stoichiological stoichiology stoichiometric stoichiometrical stoichiometrically stoichiometry Stoicism stoicism Stokavci Stokavian Stokavski stoke stokehold stokehole stoker stokerless Stokesia stokesite stola stolae stole stoled stolelike stolen stolenly stolenness stolenwise stolewise stolid stolidity stolidly stolidness stolist stolkjaerre stollen stolon stolonate stoloniferous stoloniferously stolonlike stolzite stoma stomacace stomach stomachable stomachal stomacher stomachful stomachfully stomachfulness stomachic stomachically stomachicness stomaching stomachless stomachlessness stomachy stomapod Stomapoda stomapodiform stomapodous stomata stomatal stomatalgia stomate stomatic stomatiferous stomatitic stomatitis stomatocace Stomatoda stomatodaeal stomatodaeum stomatode stomatodeum stomatodynia stomatogastric stomatograph stomatography stomatolalia stomatologic stomatological stomatologist stomatology stomatomalacia stomatomenia stomatomy stomatomycosis stomatonecrosis stomatopathy Stomatophora stomatophorous stomatoplastic stomatoplasty stomatopod Stomatopoda stomatopodous stomatorrhagia stomatoscope stomatoscopy stomatose stomatosepsis stomatotomy stomatotyphus stomatous stomenorrhagia stomium stomodaea stomodaeal stomodaeum Stomoisia stomoxys stomp stomper stonable stond Stone stone stoneable stonebird stonebiter stoneboat stonebow stonebrash stonebreak stonebrood stonecast stonechat stonecraft stonecrop stonecutter stoned stonedamp stonefish stonegale stonegall stonehand stonehatch stonehead stonehearted Stonehenge stonelayer stonelaying stoneless stonelessness stonelike stoneman stonemason stonemasonry stonen stonepecker stoner stoneroot stoneseed stoneshot stonesmatch stonesmich stonesmitch stonesmith stonewall stonewaller stonewally stoneware stoneweed stonewise stonewood stonework stoneworker stonewort stoneyard stong stonied stonifiable stonify stonily stoniness stoning stonish stonishment stonker stony stonyhearted stonyheartedly stonyheartedness stood stooded stooden stoof stooge stook stooker stookie stool stoolball stoollike stoon stoond stoop stooper stoopgallant stooping stoopingly stoory stoot stoothing stop stopa stopback stopblock stopboard stopcock stope stoper stopgap stophound stoping stopless stoplessness stopover stoppability stoppable stoppableness stoppably stoppage stopped stopper stopperless stoppeur stopping stoppit stopple stopwater stopwork storable storage storax store storeen storehouse storehouseman storekeep storekeeper storekeeping storeman storer storeroom storeship storesman storge storiate storiation storied storier storiette storify storiological storiologist storiology stork storken storkish storklike storkling storkwise storm stormable Stormberg stormbird stormbound stormcock stormer stormful stormfully stormfulness stormily storminess storming stormingly stormish stormless stormlessness stormlike stormproof stormward stormwind stormwise stormy Storting story storybook storyless storymaker storymonger storyteller storytelling storywise storywork stosh stoss stosston stot stotinka stotter stotterel stoun stound stoundmeal stoup stoupful stour stouring stourliness stourness stoury stoush stout stouten stouth stouthearted stoutheartedly stoutheartedness stoutish stoutly stoutness stoutwood stouty stove stovebrush stoveful stovehouse stoveless stovemaker stovemaking stoveman stoven stovepipe stover stovewood stow stowable stowage stowaway stowbord stowbordman stowce stowdown stower stowing stownlins stowwood stra strabism strabismal strabismally strabismic strabismical strabismometer strabismometry strabismus strabometer strabometry strabotome strabotomy strack strackling stract Strad strad stradametrical straddle straddleback straddlebug straddler straddleways straddlewise straddling straddlingly strade stradine stradiot Stradivari Stradivarius stradl stradld stradlings strae strafe strafer Straffordian strag straggle straggler straggling stragglingly straggly stragular stragulum straight straightabout straightaway straightedge straighten straightener straightforward straightforwardly straightforwardness straightforwards straighthead straightish straightly straightness straighttail straightup straightwards straightway straightways straightwise straik strain strainable strainableness strainably strained strainedly strainedness strainer strainerman straining strainingly strainless strainlessly strainproof strainslip straint strait straiten straitlacedness straitlacing straitly straitness straitsman straitwork Straka strake straked straky stram stramash stramazon stramineous stramineously strammel strammer stramonium stramony stramp strand strandage strander stranding strandless strandward strang strange strangeling strangely strangeness stranger strangerdom strangerhood strangerlike strangership strangerwise strangle strangleable stranglement strangler strangles strangletare strangleweed strangling stranglingly strangulable strangulate strangulation strangulative strangulatory strangullion strangurious strangury stranner strany strap straphang straphanger straphead strapless straplike strappable strappado strappan strapped strapper strapping strapple strapwork strapwort strass strata stratagem stratagematic stratagematical stratagematically stratagematist stratagemical stratagemically stratal stratameter stratege strategetic strategetics strategi strategian strategic strategical strategically strategics strategist strategize strategos strategy Stratfordian strath strathspey strati stratic straticulate straticulation stratification stratified stratiform stratify stratigrapher stratigraphic stratigraphical stratigraphically stratigraphist stratigraphy Stratiomyiidae Stratiotes stratlin stratochamber stratocracy stratocrat stratocratic stratographic stratographical stratographically stratography stratonic Stratonical stratopedarch stratoplane stratose stratosphere stratospheric stratospherical stratotrainer stratous stratum stratus straucht strauchten stravage strave straw strawberry strawberrylike strawbill strawboard strawbreadth strawen strawer strawflower strawfork strawless strawlike strawman strawmote strawsmall strawsmear strawstack strawstacker strawwalker strawwork strawworm strawy strawyard stray strayaway strayer strayling stre streahte streak streaked streakedly streakedness streaker streakily streakiness streaklike streakwise streaky stream streamer streamful streamhead streaminess streaming streamingly streamless streamlet streamlike streamline streamlined streamliner streamling streamside streamward streamway streamwort streamy streck streckly stree streek streel streeler streen streep street streetage streetcar streetful streetless streetlet streetlike streets streetside streetwalker streetwalking streetward streetway streetwise streite streke Strelitz Strelitzi strelitzi Strelitzia Streltzi streltzi stremma stremmatograph streng strengite strength strengthen strengthener strengthening strengtheningly strengthful strengthfulness strengthily strengthless strengthlessly strengthlessness strengthy strent strenth strenuity strenuosity strenuous strenuously strenuousness strepen strepent strepera streperous strephonade strephosymbolia strepitant strepitantly strepitation strepitous strepor Strepsiceros strepsiceros strepsinema Strepsiptera strepsipteral strepsipteran strepsipteron strepsipterous strepsis strepsitene streptaster streptobacilli streptobacillus Streptocarpus streptococcal streptococci streptococcic Streptococcus streptococcus streptolysin Streptomyces streptomycin Streptoneura streptoneural streptoneurous streptosepticemia streptothricial streptothricin streptothricosis Streptothrix streptotrichal streptotrichosis stress stresser stressful stressfully stressless stresslessness stret stretch stretchable stretchberry stretcher stretcherman stretchiness stretchneck stretchproof stretchy stretman strette stretti stretto strew strewage strewer strewment strewn strey streyne stria striae strial Striaria Striariaceae striatal striate striated striation striatum striature strich striche strick stricken strickenly strickenness stricker strickle strickler strickless strict striction strictish strictly strictness stricture strictured strid stridden striddle stride strideleg stridelegs stridence stridency strident stridently strider strideways stridhan stridhana stridhanum stridingly stridling stridlins stridor stridulant stridulate stridulation stridulator stridulatory stridulent stridulous stridulously stridulousness strife strifeful strifeless strifemaker strifemaking strifemonger strifeproof striffen strig Striga striga strigae strigal strigate Striges striggle stright Strigidae Strigiformes strigil strigilate strigilation strigilator strigiles strigilis strigillose strigilous Striginae strigine strigose strigous strigovite Strigula Strigulaceae strigulose strike strikeboat strikebreaker strikebreaking strikeless striker striking strikingly strikingness strind string stringboard stringcourse stringed stringency stringene stringent stringently stringentness stringer stringful stringhalt stringhalted stringhaltedness stringiness stringing stringless stringlike stringmaker stringmaking stringman stringpiece stringsman stringways stringwood stringy stringybark strinkle striola striolae striolate striolated striolet strip stripe striped stripeless striper striplet stripling strippage stripped stripper stripping strippit strippler stript stripy strit strive strived striven striver striving strivingly Strix strix stroam strobic strobila strobilaceous strobilae strobilate strobilation strobile strobili strobiliferous strobiliform strobiline strobilization strobiloid Strobilomyces Strobilophyta strobilus stroboscope stroboscopic stroboscopical stroboscopy strobotron strockle stroddle strode stroil stroke stroker strokesman stroking stroky strold stroll strolld stroller strom stroma stromal stromata Stromateidae stromateoid stromatic stromatiform stromatology Stromatopora Stromatoporidae stromatoporoid Stromatoporoidea stromatous stromb Strombidae strombiform strombite stromboid strombolian strombuliferous strombuliform Strombus strome stromeyerite stromming strone strong strongback strongbark strongbox strongbrained strongfully stronghand stronghead strongheadedly strongheadedness stronghearted stronghold strongish stronglike strongly strongness strongylate strongyle strongyliasis strongylid Strongylidae strongylidosis strongyloid Strongyloides strongyloidosis strongylon Strongyloplasmata Strongylosis strongylosis Strongylus strontia strontian strontianiferous strontianite strontic strontion strontitic strontium strook strooken stroot strop strophaic strophanhin Strophanthus Stropharia strophe strophic strophical strophically strophiolate strophiolated strophiole strophoid Strophomena Strophomenacea strophomenid Strophomenidae strophomenoid strophosis strophotaxis strophulus stropper stroppings stroth stroud strouding strounge stroup strouthiocamel strouthiocamelian strouthocamelian strove strow strowd strown stroy stroyer stroygood strub strubbly struck strucken structural structuralism structuralist structuralization structuralize structurally structuration structure structured structureless structurely structurist strudel strue struggle struggler struggling strugglingly Struldbrug Struldbruggian Struldbruggism strum struma strumae strumatic strumaticness strumectomy Strumella strumiferous strumiform strumiprivic strumiprivous strumitis strummer strumose strumous strumousness strumpet strumpetlike strumpetry strumstrum strumulose strung strunt strut struth struthian struthiform Struthio struthioid Struthiomimus Struthiones Struthionidae struthioniform Struthioniformes Struthiopteris struthious struthonine strutter strutting struttingly struv struvite strych strychnia strychnic strychnin strychnine strychninic strychninism strychninization strychninize strychnize strychnol Strychnos Strymon Stu Stuart Stuartia stub stubachite stubb stubbed stubbedness stubber stubbiness stubble stubbleberry stubbled stubbleward stubbly stubborn stubbornhearted stubbornly stubbornness stubboy stubby stubchen stuber stuboy stubrunner stucco stuccoer stuccowork stuccoworker stuccoyer stuck stuckling stucturelessness stud studbook studder studdie studding studdle stude student studenthood studentless studentlike studentry studentship studerite studfish studflower studhorse studia studiable studied studiedly studiedness studier studio studious studiously studiousness Studite Studium studium studwork study stue stuff stuffed stuffender stuffer stuffgownsman stuffily stuffiness stuffing stuffy stug stuggy stuiver stull stuller stulm stultification stultifier stultify stultiloquence stultiloquently stultiloquious stultioquy stultloquent stum stumble stumbler stumbling stumblingly stumbly stumer stummer stummy stump stumpage stumper stumpily stumpiness stumpish stumpless stumplike stumpling stumpnose stumpwise stumpy stun Stundism Stundist stung stunk stunkard stunner stunning stunningly stunpoll stunsail stunsle stunt stunted stuntedly stuntedness stunter stuntiness stuntness stunty stupa stupe stupefacient stupefaction stupefactive stupefactiveness stupefied stupefiedness stupefier stupefy stupend stupendly stupendous stupendously stupendousness stupent stupeous stupex stupid stupidhead stupidish stupidity stupidly stupidness stupor stuporific stuporose stuporous stupose stupp stuprate stupration stuprum stupulose sturdied sturdily sturdiness sturdy sturdyhearted sturgeon sturine Sturiones sturionine sturk Sturmian Sturnella Sturnidae sturniform Sturninae sturnine sturnoid Sturnus sturt sturtan sturtin sturtion sturtite stuss stut stutter stutterer stuttering stutteringly sty styan styca styceric stycerin stycerinol stychomythia styful styfziekte Stygial Stygian stylar Stylaster Stylasteridae stylate style stylebook styledom styleless stylelessness stylelike styler stylet stylewort Stylidiaceae stylidiaceous Stylidium styliferous styliform styline styling stylish stylishly stylishness stylist stylistic stylistical stylistically stylistics stylite stylitic stylitism stylization stylize stylizer stylo styloauricularis stylobate Stylochus styloglossal styloglossus stylogonidium stylograph stylographic stylographical stylographically stylography stylohyal stylohyoid stylohyoidean stylohyoideus styloid stylolite stylolitic stylomandibular stylomastoid stylomaxillary stylometer Stylommatophora stylommatophorous stylomyloid Stylonurus Stylonychia stylopharyngeal stylopharyngeus stylopid Stylopidae stylopization stylopized stylopod stylopodium Stylops stylops Stylosanthes stylospore stylosporous stylostegium stylotypite stylus stymie Stymphalian Stymphalid Stymphalides Styphelia styphnate styphnic stypsis styptic styptical stypticalness stypticity stypticness Styracaceae styracaceous styracin Styrax styrax styrene Styrian styrogallol styrol styrolene styrone styryl styrylic stythe styward Styx Styxian suability suable suably suade Suaeda suaharo Sualocin Suanitian suant suantly suasible suasion suasionist suasive suasively suasiveness suasory suavastika suave suavely suaveness suaveolent suavify suaviloquence suaviloquent suavity sub subabbot subabdominal subability subabsolute subacademic subaccount subacetate subacid subacidity subacidly subacidness subacidulous subacrid subacrodrome subacromial subact subacuminate subacute subacutely subadditive subadjacent subadjutor subadministrate subadministration subadministrator subadult subaduncate subaerate subaeration subaerial subaerially subaetheric subaffluent subage subagency subagent subaggregate subah subahdar subahdary subahship subaid Subakhmimic subalary subalate subalgebra subalkaline suballiance subalmoner subalpine subaltern subalternant subalternate subalternately subalternating subalternation subalternity subanal subandean subangled subangular subangulate subangulated subanniversary subantarctic subantichrist subantique Subanun subapical subaponeurotic subapostolic subapparent subappearance subappressed subapprobation subapterous subaquatic subaquean subaqueous subarachnoid subarachnoidal subarachnoidean subarboraceous subarboreal subarborescent subarch subarchesporial subarchitect subarctic subarcuate subarcuated subarcuation subarea subareolar subareolet Subarian subarmor subarouse subarrhation subartesian subarticle subarytenoid subascending subassemblage subassembly subassociation subastragalar subastragaloid subastral subastringent subatom subatomic subattenuate subattenuated subattorney subaud subaudible subaudition subauditionist subauditor subauditur subaural subauricular subautomatic subaverage subaxillar subaxillary subbailie subbailiff subbailiwick subballast subband subbank subbasal subbasaltic subbase subbasement subbass subbeadle subbeau subbias subbifid subbing subbituminous subbookkeeper subboreal subbourdon subbrachycephalic subbrachycephaly subbrachyskelic subbranch subbranched subbranchial subbreed subbrigade subbrigadier subbroker subbromid subbromide subbronchial subbureau subcaecal subcalcareous subcalcarine subcaliber subcallosal subcampanulate subcancellate subcandid subcantor subcapsular subcaptain subcaption subcarbide subcarbonate Subcarboniferous subcarbureted subcarburetted subcardinal subcarinate subcartilaginous subcase subcash subcashier subcasino subcast subcaste subcategory subcaudal subcaudate subcaulescent subcause subcavate subcavity subcelestial subcell subcellar subcenter subcentral subcentrally subchairman subchamberer subchancel subchanter subchapter subchaser subchela subchelate subcheliform subchief subchloride subchondral subchordal subchorioid subchorioidal subchorionic subchoroid subchoroidal subcinctorium subcineritious subcingulum subcircuit subcircular subcision subcity subclaim Subclamatores subclan subclass subclassify subclause subclavate subclavia subclavian subclavicular subclavioaxillary subclaviojugular subclavius subclerk subclimate subclimax subclinical subclover subcoastal subcollateral subcollector subcollegiate subcolumnar subcommander subcommendation subcommended subcommissary subcommissaryship subcommission subcommissioner subcommit subcommittee subcompany subcompensate subcompensation subcompressed subconcave subconcession subconcessionaire subconchoidal subconference subconformable subconical subconjunctival subconjunctively subconnate subconnect subconnivent subconscience subconscious subconsciously subconsciousness subconservator subconsideration subconstable subconstellation subconsul subcontained subcontest subcontiguous subcontinent subcontinental subcontinual subcontinued subcontinuous subcontract subcontracted subcontractor subcontraoctave subcontrariety subcontrarily subcontrary subcontrol subconvex subconvolute subcool subcoracoid subcordate subcordiform subcoriaceous subcorneous subcorporation subcortex subcortical subcortically subcorymbose subcosta subcostal subcostalis subcouncil subcranial subcreative subcreek subcrenate subcrepitant subcrepitation subcrescentic subcrest subcriminal subcrossing subcrureal subcrureus subcrust subcrustaceous subcrustal subcrystalline subcubical subcuboidal subcultrate subcultural subculture subcurate subcurator subcuratorship subcurrent subcutaneous subcutaneously subcutaneousness subcuticular subcutis subcyaneous subcyanide subcylindric subcylindrical subdatary subdate subdeacon subdeaconate subdeaconess subdeaconry subdeaconship subdealer subdean subdeanery subdeb subdebutante subdecanal subdecimal subdecuple subdeducible subdefinition subdelegate subdelegation subdelirium subdeltaic subdeltoid subdeltoidal subdemonstrate subdemonstration subdenomination subdentate subdentated subdented subdenticulate subdepartment subdeposit subdepository subdepot subdepressed subdeputy subderivative subdermal subdeterminant subdevil subdiaconal subdiaconate subdial subdialect subdialectal subdialectally subdiapason subdiapente subdiaphragmatic subdichotomize subdichotomous subdichotomously subdichotomy subdie subdilated subdirector subdiscoidal subdisjunctive subdistich subdistichous subdistinction subdistinguish subdistinguished subdistrict subdititious subdititiously subdivecious subdiversify subdividable subdivide subdivider subdividing subdividingly subdivine subdivisible subdivision subdivisional subdivisive subdoctor subdolent subdolichocephalic subdolichocephaly subdolous subdolously subdolousness subdominant subdorsal subdorsally subdouble subdrain subdrainage subdrill subdruid subduable subduableness subduably subdual subduce subduct subduction subdue subdued subduedly subduedness subduement subduer subduing subduingly subduple subduplicate subdural subdurally subecho subectodermal subedit subeditor subeditorial subeditorship subeffective subelection subelectron subelement subelementary subelliptic subelliptical subelongate subemarginate subencephalon subencephaltic subendocardial subendorse subendorsement subendothelial subendymal subenfeoff subengineer subentire subentitle subentry subepidermal subepiglottic subepithelial subepoch subequal subequality subequally subequatorial subequilateral subequivalve suber suberane suberate suberect subereous suberic suberiferous suberification suberiform suberin suberinization suberinize Suberites Suberitidae suberization suberize suberone suberose suberous subescheator subesophageal subessential subetheric subexaminer subexcitation subexcite subexecutor subexternal subface subfacies subfactor subfactorial subfactory subfalcate subfalcial subfalciform subfamily subfascial subfastigiate subfebrile subferryman subfestive subfeu subfeudation subfeudatory subfibrous subfief subfigure subfissure subfix subflavor subflexuose subfloor subflooring subflora subflush subfluvial subfocal subfoliar subforeman subform subformation subfossil subfossorial subfoundation subfraction subframe subfreshman subfrontal subfulgent subfumigation subfumose subfunctional subfusc subfuscous subfusiform subfusk subgalea subgallate subganger subgape subgelatinous subgeneric subgenerical subgenerically subgeniculate subgenital subgens subgenual subgenus subgeometric subget subgit subglabrous subglacial subglacially subglenoid subglobose subglobosely subglobular subglobulose subglossal subglossitis subglottic subglumaceous subgod subgoverness subgovernor subgrade subgranular subgrin subgroup subgular subgwely subgyre subgyrus subhalid subhalide subhall subharmonic subhastation subhatchery subhead subheading subheadquarters subheadwaiter subhealth subhedral subhemispherical subhepatic subherd subhero subhexagonal subhirsute subhooked subhorizontal subhornblendic subhouse subhuman subhumid subhyaline subhyaloid subhymenial subhymenium subhyoid subhyoidean subhypothesis subhysteria subicle subicteric subicular subiculum subidar subidea subideal subimaginal subimago subimbricate subimbricated subimposed subimpressed subincandescent subincident subincise subincision subincomplete subindex subindicate subindication subindicative subindices subindividual subinduce subinfer subinfeud subinfeudate subinfeudation subinfeudatory subinflammation subinflammatory subinform subingression subinguinal subinitial subinoculate subinoculation subinsert subinsertion subinspector subinspectorship subintegumental subintellection subintelligential subintelligitur subintent subintention subintercessor subinternal subinterval subintestinal subintroduce subintroduction subintroductory subinvoluted subinvolution subiodide subirrigate subirrigation subitane subitaneous subitem Subiya subjacency subjacent subjacently subjack subject subjectability subjectable subjectdom subjected subjectedly subjectedness subjecthood subjectibility subjectible subjectification subjectify subjectile subjection subjectional subjectist subjective subjectively subjectiveness subjectivism subjectivist subjectivistic subjectivistically subjectivity subjectivize subjectivoidealistic subjectless subjectlike subjectness subjectship subjee subjicible subjoin subjoinder subjoint subjudge subjudiciary subjugable subjugal subjugate subjugation subjugator subjugular subjunct subjunction subjunctive subjunctively subjunior subking subkingdom sublabial sublaciniate sublacustrine sublanate sublanceolate sublanguage sublapsarian sublapsarianism sublapsary sublaryngeal sublate sublateral sublation sublative subleader sublease sublecturer sublegislation sublegislature sublenticular sublessee sublessor sublet sublethal sublettable subletter sublevaminous sublevate sublevation sublevel sublibrarian sublicense sublicensee sublid sublieutenancy sublieutenant subligation sublighted sublimable sublimableness sublimant sublimate sublimation sublimational sublimationist sublimator sublimatory sublime sublimed sublimely sublimeness sublimer subliminal subliminally sublimish sublimitation sublimity sublimize sublinear sublineation sublingua sublinguae sublingual sublinguate sublittoral sublobular sublong subloral subloreal sublot sublumbar sublunar sublunary sublunate sublustrous subluxate subluxation submaid submain submakroskelic submammary subman submanager submania submanic submanor submarginal submarginally submarginate submargined submarine submariner submarinism submarinist submarshal submaster submaxilla submaxillary submaximal submeaning submedial submedian submediant submediation submediocre submeeting submember submembranaceous submembranous submeningeal submental submentum submerge submerged submergement submergence submergibility submergible submerse submersed submersibility submersible submersion submetallic submeter submetering submicron submicroscopic submicroscopically submiliary submind subminimal subminister submiss submissible submission submissionist submissive submissively submissiveness submissly submissness submit submittal submittance submitter submittingly submolecule submonition submontagne submontane submontanely submontaneous submorphous submortgage submotive submountain submucosa submucosal submucous submucronate submultiple submundane submuriate submuscular Submytilacea subnarcotic subnasal subnascent subnatural subnect subnervian subness subneural subnex subnitrate subnitrated subniveal subnivean subnormal subnormality subnotation subnote subnotochordal subnubilar subnucleus subnude subnumber subnuvolar suboblique subobscure subobscurely subobtuse suboccipital subocean suboceanic suboctave suboctile suboctuple subocular suboesophageal suboffice subofficer subofficial subolive subopaque subopercle subopercular suboperculum subopposite suboptic suboptimal suboptimum suboral suborbicular suborbiculate suborbiculated suborbital suborbitar suborbitary subordain suborder subordinacy subordinal subordinary subordinate subordinately subordinateness subordinating subordinatingly subordination subordinationism subordinationist subordinative suborganic suborn subornation subornative suborner Suboscines suboval subovate subovated suboverseer subovoid suboxidation suboxide subpackage subpagoda subpallial subpalmate subpanel subparagraph subparallel subpart subpartition subpartitioned subpartitionment subparty subpass subpassage subpastor subpatron subpattern subpavement subpectinate subpectoral subpeduncle subpeduncular subpedunculate subpellucid subpeltate subpeltated subpentagonal subpentangular subpericardial subperiod subperiosteal subperiosteally subperitoneal subperitoneally subpermanent subpermanently subperpendicular subpetiolar subpetiolate subpharyngeal subphosphate subphratry subphrenic subphylar subphylum subpial subpilose subpimp subpiston subplacenta subplant subplantigrade subplat subpleural subplinth subplot subplow subpodophyllous subpoena subpoenal subpolar subpolygonal subpool subpopular subpopulation subporphyritic subport subpostmaster subpostmastership subpostscript subpotency subpotent subpreceptor subpreceptorial subpredicate subpredication subprefect subprefectorial subprefecture subprehensile subpress subprimary subprincipal subprior subprioress subproblem subproctor subproduct subprofessional subprofessor subprofessoriate subprofitable subproportional subprotector subprovince subprovincial subpubescent subpubic subpulmonary subpulverizer subpunch subpunctuation subpurchaser subpurlin subputation subpyramidal subpyriform subquadrangular subquadrate subquality subquestion subquinquefid subquintuple Subra subrace subradial subradiance subradiate subradical subradius subradular subrailway subrameal subramose subramous subrange subrational subreader subreason subrebellion subrectangular subrector subreference subregent subregion subregional subregular subreguli subregulus subrelation subreligion subreniform subrent subrepand subrepent subreport subreptary subreption subreptitious subreputable subresin subretinal subrhombic subrhomboid subrhomboidal subrictal subrident subridently subrigid subrision subrisive subrisory subrogate subrogation subroot subrostral subround subrule subruler subsacral subsale subsaline subsalt subsample subsartorial subsatiric subsatirical subsaturated subsaturation subscapular subscapularis subscapulary subschedule subscheme subschool subscience subscleral subsclerotic subscribable subscribe subscriber subscribership subscript subscription subscriptionist subscriptive subscriptively subscripture subscrive subscriver subsea subsecive subsecretarial subsecretary subsect subsection subsecurity subsecute subsecutive subsegment subsemifusa subsemitone subsensation subsensible subsensual subsensuous subsept subseptuple subsequence subsequency subsequent subsequential subsequentially subsequently subsequentness subseries subserosa subserous subserrate subserve subserviate subservience subserviency subservient subserviently subservientness subsessile subset subsewer subsextuple subshaft subsheriff subshire subshrub subshrubby subside subsidence subsidency subsident subsider subsidiarie subsidiarily subsidiariness subsidiary subsiding subsidist subsidizable subsidization subsidize subsidizer subsidy subsilicate subsilicic subsill subsimilation subsimious subsimple subsinuous subsist subsistence subsistency subsistent subsistential subsistingly subsizar subsizarship subsmile subsneer subsocial subsoil subsoiler subsolar subsolid subsonic subsorter subsovereign subspace subspatulate subspecialist subspecialize subspecialty subspecies subspecific subspecifically subsphenoidal subsphere subspherical subspherically subspinous subspiral subspontaneous subsquadron substage substalagmite substalagmitic substance substanceless substanch substandard substandardize substant substantiability substantial substantialia substantialism substantialist substantiality substantialize substantially substantialness substantiate substantiation substantiative substantiator substantify substantious substantival substantivally substantive substantively substantiveness substantivity substantivize substantize substation substernal substituent substitutable substitute substituted substituter substituting substitutingly substitution substitutional substitutionally substitutionary substitutive substitutively substock substoreroom substory substract substraction substratal substrate substrati substrative substrator substratose substratosphere substratospheric substratum substriate substruct substruction substructional substructural substructure substylar substyle subsulfid subsulfide subsulphate subsulphid subsulphide subsult subsultive subsultorily subsultorious subsultory subsultus subsumable subsume subsumption subsumptive subsuperficial subsurety subsurface subsyndicate subsynod subsynodical subsystem subtack subtacksman subtangent subtarget subtartarean subtectal subtegminal subtegulaneous subtemperate subtenancy subtenant subtend subtense subtenure subtepid subteraqueous subterbrutish subtercelestial subterconscious subtercutaneous subterethereal subterfluent subterfluous subterfuge subterhuman subterjacent subtermarine subterminal subternatural subterpose subterposition subterrane subterraneal subterranean subterraneanize subterraneanly subterraneous subterraneously subterraneousness subterranity subterraqueous subterrene subterrestrial subterritorial subterritory subtersensual subtersensuous subtersuperlative subtersurface subtertian subtext subthalamic subthalamus subthoracic subthrill subtile subtilely subtileness subtilin subtilism subtilist subtility subtilization subtilize subtilizer subtill subtillage subtilty subtitle subtitular subtle subtleness subtlety subtlist subtly subtone subtonic subtorrid subtotal subtotem subtower subtract subtracter subtraction subtractive subtrahend subtranslucent subtransparent subtransverse subtrapezoidal subtread subtreasurer subtreasurership subtreasury subtrench subtriangular subtriangulate subtribal subtribe subtribual subtrifid subtrigonal subtrihedral subtriplicate subtriplicated subtriquetrous subtrist subtrochanteric subtrochlear subtropic subtropical subtropics subtrousers subtrude subtruncate subtrunk subtuberant subtunic subtunnel subturbary subturriculate subturriculated subtutor subtwined subtype subtypical subulate subulated subulicorn Subulicornia subuliform subultimate subumbellate subumbonal subumbral subumbrella subumbrellar subuncinate subunequal subungual subunguial Subungulata subungulate subunit subuniverse suburb suburban suburbandom suburbanhood suburbanism suburbanite suburbanity suburbanization suburbanize suburbanly suburbed suburbia suburbican suburbicarian suburbicary suburethral subursine subvaginal subvaluation subvarietal subvariety subvassal subvassalage subvein subvendee subvene subvention subventionary subventioned subventionize subventitious subventive subventral subventricose subvermiform subversal subverse subversed subversion subversionary subversive subversivism subvert subvertebral subverter subvertible subvertical subverticillate subvesicular subvestment subvicar subvicarship subvillain subvirate subvirile subvisible subvitalized subvitreous subvocal subvola subwarden subwater subway subwealthy subweight subwink subworker subworkman subzonal subzone subzygomatic succade succedanea succedaneous succedaneum succedent succeed succeedable succeeder succeeding succeedingly succent succentor succenturiate succenturiation success successful successfully successfulness succession successional successionally successionist successionless successive successively successiveness successivity successless successlessly successlessness successor successoral successorship successory succi succin succinamate succinamic succinamide succinanil succinate succinct succinctly succinctness succinctorium succinctory succincture succinic succiniferous succinimide succinite succinoresinol succinosulphuric succinous succinyl Succisa succise succivorous succor succorable succorer succorful succorless succorrhea succory succotash succourful succourless succous succub succuba succubae succube succubine succubous succubus succula succulence succulency succulent succulently succulentness succulous succumb succumbence succumbency succumbent succumber succursal succuss succussation succussatory succussion succussive such suchlike suchness Suchos suchwise sucivilized suck suckable suckabob suckage suckauhock sucken suckener sucker suckerel suckerfish suckerlike suckfish suckhole sucking suckle suckler suckless suckling suckstone suclat sucramine sucrate sucre sucroacid sucrose suction suctional Suctoria suctorial suctorian suctorious sucupira sucuri sucuriu sucuruju sud sudadero sudamen sudamina sudaminal Sudan Sudanese Sudani Sudanian Sudanic sudarium sudary sudate sudation sudatorium sudatory Sudburian sudburite sudd sudden suddenly suddenness suddenty Sudder sudder suddle suddy Sudic sudiform sudoral sudoresis sudoric sudoriferous sudoriferousness sudorific sudoriparous sudorous Sudra suds sudsman sudsy Sue sue Suecism suede suer Suerre Suessiones suet suety Sueve Suevi Suevian Suevic Sufeism suff suffect suffection suffer sufferable sufferableness sufferably sufferance sufferer suffering sufferingly suffete suffice sufficeable sufficer sufficiency sufficient sufficiently sufficientness sufficing sufficingly sufficingness suffiction suffix suffixal suffixation suffixion suffixment sufflaminate sufflamination sufflate sufflation sufflue suffocate suffocating suffocatingly suffocation suffocative Suffolk suffragan suffraganal suffraganate suffragancy suffraganeous suffragatory suffrage suffragette suffragettism suffragial suffragism suffragist suffragistic suffragistically suffragitis suffrago suffrutescent suffrutex suffruticose suffruticous suffruticulose suffumigate suffumigation suffusable suffuse suffused suffusedly suffusion suffusive Sufi Sufiism Sufiistic Sufism Sufistic sugamo sugan sugar sugarberry sugarbird sugarbush sugared sugarelly sugarer sugarhouse sugariness sugarless sugarlike sugarplum sugarsweet sugarworks sugary sugent sugescent suggest suggestable suggestedness suggester suggestibility suggestible suggestibleness suggestibly suggesting suggestingly suggestion suggestionability suggestionable suggestionism suggestionist suggestionize suggestive suggestively suggestiveness suggestivity suggestment suggestress suggestum suggillate suggillation sugh sugi Sugih suguaro suhuaro Sui suicidal suicidalism suicidally suicidalwise suicide suicidical suicidism suicidist suid Suidae suidian suiform suilline suimate Suina suine suing suingly suint Suiogoth Suiogothic Suiones suisimilar suist suit suitability suitable suitableness suitably suitcase suite suithold suiting suitor suitoress suitorship suity suji Suk Sukey sukiyaki sukkenye Suku Sula Sulaba Sulafat Sulaib sulbasutra sulcal sulcalization sulcalize sulcar sulcate sulcated sulcation sulcatoareolate sulcatocostate sulcatorimose sulciform sulcomarginal sulcular sulculate sulculus sulcus suld sulea sulfa sulfacid sulfadiazine sulfaguanidine sulfamate sulfamerazin sulfamerazine sulfamethazine sulfamethylthiazole sulfamic sulfamidate sulfamide sulfamidic sulfamine sulfaminic sulfamyl sulfanilamide sulfanilic sulfanilylguanidine sulfantimonide sulfapyrazine sulfapyridine sulfaquinoxaline sulfarsenide sulfarsenite sulfarseniuret sulfarsphenamine Sulfasuxidine sulfatase sulfathiazole sulfatic sulfatize sulfato sulfazide sulfhydrate sulfhydric sulfhydryl sulfindigotate sulfindigotic sulfindylic sulfion sulfionide sulfoacid sulfoamide sulfobenzide sulfobenzoate sulfobenzoic sulfobismuthite sulfoborite sulfocarbamide sulfocarbimide sulfocarbolate sulfocarbolic sulfochloride sulfocyan sulfocyanide sulfofication sulfogermanate sulfohalite sulfohydrate sulfoindigotate sulfoleic sulfolysis sulfomethylic sulfonamic sulfonamide sulfonate sulfonation sulfonator sulfonephthalein sulfonethylmethane sulfonic sulfonium sulfonmethane sulfonyl sulfophthalein sulfopurpurate sulfopurpuric sulforicinate sulforicinic sulforicinoleate sulforicinoleic sulfoselenide sulfosilicide sulfostannide sulfotelluride sulfourea sulfovinate sulfovinic sulfowolframic sulfoxide sulfoxism sulfoxylate sulfoxylic sulfurage sulfuran sulfurate sulfuration sulfurator sulfurea sulfureous sulfureously sulfureousness sulfuret sulfuric sulfurization sulfurize sulfurosyl sulfurous sulfury sulfuryl Sulidae Sulides Suliote sulk sulka sulker sulkily sulkiness sulky sulkylike sull sulla sullage Sullan sullen sullenhearted sullenly sullenness sulliable sullow sully sulpha sulphacid sulphaldehyde sulphamate sulphamic sulphamidate sulphamide sulphamidic sulphamine sulphaminic sulphamino sulphammonium sulphamyl sulphanilate sulphanilic sulphantimonate sulphantimonial sulphantimonic sulphantimonide sulphantimonious sulphantimonite sulpharsenate sulpharseniate sulpharsenic sulpharsenide sulpharsenious sulpharsenite sulpharseniuret sulpharsphenamine sulphatase sulphate sulphated sulphatic sulphation sulphatization sulphatize sulphato sulphatoacetic sulphatocarbonic sulphazide sulphazotize sulphbismuthite sulphethylate sulphethylic sulphhemoglobin sulphichthyolate sulphidation sulphide sulphidic sulphidize sulphimide sulphinate sulphindigotate sulphine sulphinic sulphinide sulphinyl sulphitation sulphite sulphitic sulphmethemoglobin sulpho sulphoacetic sulphoamid sulphoamide sulphoantimonate sulphoantimonic sulphoantimonious sulphoantimonite sulphoarsenic sulphoarsenious sulphoarsenite sulphoazotize sulphobenzide sulphobenzoate sulphobenzoic sulphobismuthite sulphoborite sulphobutyric sulphocarbamic sulphocarbamide sulphocarbanilide sulphocarbimide sulphocarbolate sulphocarbolic sulphocarbonate sulphocarbonic sulphochloride sulphochromic sulphocinnamic sulphocyan sulphocyanate sulphocyanic sulphocyanide sulphocyanogen sulphodichloramine sulphofication sulphofy sulphogallic sulphogel sulphogermanate sulphogermanic sulphohalite sulphohaloid sulphohydrate sulphoichthyolate sulphoichthyolic sulphoindigotate sulphoindigotic sulpholeate sulpholeic sulpholipin sulpholysis sulphonal sulphonalism sulphonamic sulphonamide sulphonamido sulphonamine sulphonaphthoic sulphonate sulphonated sulphonation sulphonator sulphoncyanine sulphone sulphonephthalein sulphonethylmethane sulphonic sulphonium sulphonmethane sulphonphthalein sulphonyl sulphoparaldehyde sulphophosphate sulphophosphite sulphophosphoric sulphophosphorous sulphophthalein sulphophthalic sulphopropionic sulphoproteid sulphopupuric sulphopurpurate sulphoricinate sulphoricinic sulphoricinoleate sulphoricinoleic sulphosalicylic sulphoselenide sulphoselenium sulphosilicide sulphosol sulphostannate sulphostannic sulphostannide sulphostannite sulphostannous sulphosuccinic sulphosulphurous sulphotannic sulphotelluride sulphoterephthalic sulphothionyl sulphotoluic sulphotungstate sulphotungstic sulphourea sulphovanadate sulphovinate sulphovinic sulphowolframic sulphoxide sulphoxism sulphoxylate sulphoxylic sulphoxyphosphate sulphozincate sulphur sulphurage sulphuran sulphurate sulphuration sulphurator sulphurea sulphurean sulphureity sulphureonitrous sulphureosaline sulphureosuffused sulphureous sulphureously sulphureousness sulphureovirescent sulphuret sulphureted sulphuric sulphuriferous sulphurity sulphurization sulphurize sulphurless sulphurlike sulphurosyl sulphurous sulphurously sulphurousness sulphurproof sulphurweed sulphurwort sulphury sulphuryl sulphydrate sulphydric sulphydryl Sulpician sultam sultan sultana sultanaship sultanate sultane sultanesque sultaness sultanian sultanic sultanin sultanism sultanist sultanize sultanlike sultanry sultanship sultone sultrily sultriness sultry Sulu Suluan sulung sulvanite sulvasutra sum sumac Sumak Sumass Sumatra sumatra Sumatran sumbul sumbulic Sumdum Sumerian Sumerology Sumitro sumless sumlessness summability summable summage summand summar summarily summariness summarist summarization summarize summarizer summary summate summation summational summative summatory summed summer summerbird summercastle summerer summerhead summeriness summering summerings summerish summerite summerize summerland summerlay summerless summerlike summerliness summerling summerly summerproof summertide summertime summertree summerward summerwood summery summist summit summital summitless summity summon summonable summoner summoningly summons summula summulist summut sumner Sumo sump sumpage sumper sumph sumphish sumphishly sumphishness sumphy sumpit sumpitan sumple sumpman sumpsimus sumpter sumption sumptuary sumptuosity sumptuous sumptuously sumptuousness sun sunbeam sunbeamed sunbeamy sunberry sunbird sunblink sunbonnet sunbonneted sunbow sunbreak sunburn sunburned sunburnedness sunburnproof sunburnt sunburntness sunburst suncherchor suncup sundae Sundanese Sundanesian sundang Sundar Sundaresan sundari Sunday Sundayfied Sundayish Sundayism Sundaylike Sundayness Sundayproof sundek sunder sunderable sunderance sunderer sunderment sunderwise sundew sundial sundik sundog sundown sundowner sundowning sundra sundri sundries sundriesman sundrily sundriness sundrops sundry sundryman sune sunfall sunfast sunfish sunfisher sunfishery sunflower Sung sung sungha sunglade sunglass sunglo sunglow Sunil sunk sunken sunket sunkland sunlamp sunland sunless sunlessly sunlessness sunlet sunlight sunlighted sunlike sunlit sunn Sunna Sunni Sunniah sunnily sunniness Sunnism Sunnite sunnud sunny sunnyhearted sunnyheartedness sunproof sunquake sunray sunrise sunrising sunroom sunscald sunset sunsetting sunsetty sunshade sunshine sunshineless sunshining sunshiny sunsmit sunsmitten sunspot sunspotted sunspottedness sunspottery sunspotty sunsquall sunstone sunstricken sunstroke sunt sunup sunward sunwards sunway sunways sunweed sunwise sunyie Suomi Suomic suovetaurilia sup supa Supai supari supawn supe supellex super superabduction superabhor superability superable superableness superably superabnormal superabominable superabomination superabound superabstract superabsurd superabundance superabundancy superabundant superabundantly superaccession superaccessory superaccommodating superaccomplished superaccrue superaccumulate superaccumulation superaccurate superacetate superachievement superacid superacidulated superacknowledgment superacquisition superacromial superactive superactivity superacute superadaptable superadd superaddition superadditional superadequate superadequately superadjacent superadministration superadmirable superadmiration superadorn superadornment superaerial superaesthetical superaffiliation superaffiuence superagency superaggravation superagitation superagrarian superalbal superalbuminosis superalimentation superalkaline superalkalinity superallowance superaltar superaltern superambitious superambulacral superanal superangelic superangelical superanimal superannuate superannuation superannuitant superannuity superapology superappreciation superaqueous superarbiter superarbitrary superarctic superarduous superarrogant superarseniate superartificial superartificially superaspiration superassertion superassociate superassume superastonish superastonishment superattachment superattainable superattendant superattraction superattractive superauditor superaural superaverage superavit superaward superaxillary superazotation superb superbelief superbeloved superbenefit superbenevolent superbenign superbias superbious superbity superblessed superblunder superbly superbness superbold superborrow superbrain superbrave superbrute superbuild superbungalow superbusy supercabinet supercalender supercallosal supercandid supercanine supercanonical supercanonization supercanopy supercapable supercaption supercarbonate supercarbonization supercarbonize supercarbureted supercargo supercargoship supercarpal supercatastrophe supercatholic supercausal supercaution supercelestial supercensure supercentral supercentrifuge supercerebellar supercerebral superceremonious supercharge supercharged supercharger superchemical superchivalrous superciliary superciliosity supercilious superciliously superciliousness supercilium supercivil supercivilization supercivilized superclaim superclass superclassified supercloth supercoincidence supercolossal supercolumnar supercolumniation supercombination supercombing supercommendation supercommentary supercommentator supercommercial supercompetition supercomplete supercomplex supercomprehension supercompression superconception superconductive superconductivity superconductor superconfident superconfirmation superconformable superconformist superconformity superconfusion supercongestion superconscious superconsciousness superconsecrated superconsequency superconservative superconstitutional supercontest supercontribution supercontrol supercool supercordial supercorporation supercow supercredit supercrescence supercrescent supercrime supercritic supercritical supercrowned supercrust supercube supercultivated supercurious supercycle supercynical superdainty superdanger superdebt superdeclamatory superdecoration superdeficit superdeity superdejection superdelegate superdelicate superdemand superdemocratic superdemonic superdemonstration superdensity superdeposit superdesirous superdevelopment superdevilish superdevotion superdiabolical superdiabolically superdicrotic superdifficult superdiplomacy superdirection superdiscount superdistention superdistribution superdividend superdivine superdivision superdoctor superdominant superdomineering superdonation superdose superdramatist superdreadnought superdubious superduplication superdural superdying superearthly supereconomy superedification superedify supereducation supereffective supereffluence supereffluently superego superelaborate superelastic superelated superelegance superelementary superelevated superelevation supereligible supereloquent supereminence supereminency supereminent supereminently superemphasis superemphasize superendorse superendorsement superendow superenergetic superenforcement superengrave superenrollment superepic superepoch superequivalent supererogant supererogantly supererogate supererogation supererogative supererogator supererogatorily supererogatory superespecial superessential superessentially superestablish superestablishment supereternity superether superethical superethmoidal superevangelical superevident superexacting superexalt superexaltation superexaminer superexceed superexceeding superexcellence superexcellency superexcellent superexcellently superexceptional superexcitation superexcited superexcitement superexcrescence superexert superexertion superexiguity superexist superexistent superexpand superexpansion superexpectation superexpenditure superexplicit superexport superexpressive superexquisite superexquisitely superexquisiteness superextend superextension superextol superextreme superfamily superfantastic superfarm superfat superfecundation superfecundity superfee superfeminine superfervent superfetate superfetation superfeudation superfibrination superficial superficialism superficialist superficiality superficialize superficially superficialness superficiary superficies superfidel superfinance superfine superfinical superfinish superfinite superfissure superfit superfix superfleet superflexion superfluent superfluid superfluitance superfluity superfluous superfluously superfluousness superflux superfoliaceous superfoliation superfolly superformal superformation superformidable superfortunate superfriendly superfrontal superfructified superfulfill superfulfillment superfunction superfunctional superfuse superfusibility superfusible superfusion supergaiety supergallant supergene supergeneric supergenerosity supergenerous supergenual supergiant superglacial superglorious superglottal supergoddess supergoodness supergovern supergovernment supergraduate supergrant supergratification supergratify supergravitate supergravitation superguarantee supergun superhandsome superhearty superheat superheater superheresy superhero superheroic superhet superheterodyne superhighway superhirudine superhistoric superhistorical superhive superhuman superhumanity superhumanize superhumanly superhumanness superhumeral superhypocrite superideal superignorant superillustrate superillustration superimpend superimpending superimpersonal superimply superimportant superimposable superimpose superimposed superimposition superimposure superimpregnated superimpregnation superimprobable superimproved superincentive superinclination superinclusive superincomprehensible superincrease superincumbence superincumbency superincumbent superincumbently superindependent superindiction superindifference superindifferent superindignant superindividual superindividualism superindividualist superinduce superinducement superinduct superinduction superindulgence superindulgent superindustrious superindustry superinenarrable superinfection superinfer superinference superinfeudation superinfinite superinfinitely superinfirmity superinfluence superinformal superinfuse superinfusion superingenious superingenuity superinitiative superinjustice superinnocent superinquisitive superinsaniated superinscription superinsist superinsistence superinsistent superinstitute superinstitution superintellectual superintend superintendence superintendency superintendent superintendential superintendentship superintender superintense superintolerable superinundation superior superioress superiority superiorly superiorness superiorship superirritability superius superjacent superjudicial superjurisdiction superjustification superknowledge superlabial superlaborious superlactation superlapsarian superlaryngeal superlation superlative superlatively superlativeness superlenient superlie superlikelihood superline superlocal superlogical superloyal superlucky superlunary superlunatical superluxurious supermagnificent supermagnificently supermalate superman supermanhood supermanifest supermanism supermanliness supermanly supermannish supermarginal supermarine supermarket supermarvelous supermasculine supermaterial supermathematical supermaxilla supermaxillary supermechanical supermedial supermedicine supermediocre supermental supermentality supermetropolitan supermilitary supermishap supermixture supermodest supermoisten supermolten supermoral supermorose supermunicipal supermuscan supermystery supernacular supernaculum supernal supernalize supernally supernatant supernatation supernation supernational supernationalism supernatural supernaturaldom supernaturalism supernaturalist supernaturality supernaturalize supernaturally supernaturalness supernature supernecessity supernegligent supernormal supernormally supernormalness supernotable supernova supernumeral supernumerariness supernumerary supernumeraryship supernumerous supernutrition superoanterior superobedience superobedient superobese superobject superobjection superobjectionable superobligation superobstinate superoccipital superoctave superocular superodorsal superoexternal superoffensive superofficious superofficiousness superofrontal superointernal superolateral superomedial superoposterior superopposition superoptimal superoptimist superoratorical superorbital superordain superorder superordinal superordinary superordinate superordination superorganic superorganism superorganization superorganize superornament superornamental superosculate superoutput superoxalate superoxide superoxygenate superoxygenation superparamount superparasite superparasitic superparasitism superparliamentary superpassage superpatient superpatriotic superpatriotism superperfect superperfection superperson superpersonal superpersonalism superpetrosal superphlogisticate superphlogistication superphosphate superphysical superpigmentation superpious superplausible superplease superplus superpolite superpolitic superponderance superponderancy superponderant superpopulation superposable superpose superposed superposition superpositive superpower superpowered superpraise superprecarious superprecise superprelatical superpreparation superprinting superprobability superproduce superproduction superproportion superprosperous superpublicity superpure superpurgation superquadrupetal superqualify superquote superradical superrational superrationally superreaction superrealism superrealist superrefine superrefined superrefinement superreflection superreform superreformation superregal superregeneration superregenerative superregistration superregulation superreliance superremuneration superrenal superrequirement superrespectable superresponsible superrestriction superreward superrheumatized superrighteous superromantic superroyal supersacerdotal supersacral supersacred supersacrifice supersafe supersagacious supersaint supersaintly supersalesman supersaliency supersalient supersalt supersanction supersanguine supersanity supersarcastic supersatisfaction supersatisfy supersaturate supersaturation superscandal superscholarly superscientific superscribe superscript superscription superscrive superseaman supersecret supersecretion supersecular supersecure supersedable supersede supersedeas supersedence superseder supersedure superselect superseminate supersemination superseminator supersensible supersensibly supersensitive supersensitiveness supersensitization supersensory supersensual supersensualism supersensualist supersensualistic supersensuality supersensually supersensuous supersensuousness supersentimental superseptal superseptuaginarian superseraphical superserious superservice superserviceable superserviceableness superserviceably supersesquitertial supersession supersessive supersevere supershipment supersignificant supersilent supersimplicity supersimplify supersincerity supersingular supersistent supersize supersmart supersocial supersoil supersolar supersolemn supersolemness supersolemnity supersolemnly supersolicit supersolicitation supersolid supersonant supersonic supersovereign supersovereignty superspecialize superspecies superspecification supersphenoid supersphenoidal superspinous superspiritual superspirituality supersquamosal superstage superstamp superstandard superstate superstatesman superstimulate superstimulation superstition superstitionist superstitionless superstitious superstitiously superstitiousness superstoical superstrain superstrata superstratum superstrenuous superstrict superstrong superstruct superstruction superstructor superstructory superstructural superstructure superstuff superstylish supersublimated supersuborder supersubsist supersubstantial supersubstantiality supersubstantiate supersubtilized supersubtle supersufficiency supersufficient supersulcus supersulphate supersulphuret supersulphureted supersulphurize supersuperabundance supersuperabundant supersuperabundantly supersuperb supersuperior supersupremacy supersupreme supersurprise supersuspicious supersweet supersympathy supersyndicate supersystem supertare supertartrate supertax supertaxation supertemporal supertempt supertemptation supertension superterranean superterraneous superterrene superterrestrial superthankful superthorough superthyroidism supertoleration supertonic supertotal supertower supertragic supertragical supertrain supertramp supertranscendent supertranscendently supertreason supertrivial supertuchun supertunic supertutelary superugly superultrafrostified superunfit superunit superunity superuniversal superuniverse superurgent supervalue supervast supervene supervenience supervenient supervenosity supervention supervestment supervexation supervictorious supervigilant supervigorous supervirulent supervisal supervisance supervise supervision supervisionary supervisive supervisor supervisorial supervisorship supervisory supervisual supervisure supervital supervive supervolition supervoluminous supervolute superwager superwealthy superweening superwise superwoman superworldly superwrought superyacht superzealous supinate supination supinator supine supinely supineness suppedaneum supper suppering supperless suppertime supperwards supping supplace supplant supplantation supplanter supplantment supple supplejack supplely supplement supplemental supplementally supplementarily supplementary supplementation supplementer suppleness suppletion suppletive suppletively suppletorily suppletory suppliable supplial suppliance suppliancy suppliant suppliantly suppliantness supplicancy supplicant supplicantly supplicat supplicate supplicating supplicatingly supplication supplicationer supplicative supplicator supplicatory supplicavit supplice supplier suppling supply support supportability supportable supportableness supportably supportance supporter supportful supporting supportingly supportive supportless supportlessly supportress supposable supposableness supposably supposal suppose supposed supposedly supposer supposing supposition suppositional suppositionally suppositionary suppositionless suppositious supposititious supposititiously supposititiousness suppositive suppositively suppository suppositum suppost suppress suppressal suppressed suppressedly suppresser suppressible suppression suppressionist suppressive suppressively suppressor supprise suppurant suppurate suppuration suppurative suppuratory suprabasidorsal suprabranchial suprabuccal supracaecal supracargo supracaudal supracensorious supracentenarian suprachorioid suprachorioidal suprachorioidea suprachoroid suprachoroidal suprachoroidea supraciliary supraclavicle supraclavicular supraclusion supracommissure supraconduction supraconductor supracondylar supracondyloid supraconscious supraconsciousness supracoralline supracostal supracoxal supracranial supracretaceous supradecompound supradental supradorsal supradural suprafeminine suprafine suprafoliaceous suprafoliar supraglacial supraglenoid supraglottic supragovernmental suprahepatic suprahistorical suprahuman suprahumanity suprahyoid suprailiac suprailium supraintellectual suprainterdorsal suprajural supralabial supralapsarian supralapsarianism supralateral supralegal supraliminal supraliminally supralineal supralinear supralocal supralocally supraloral supralunar supralunary supramammary supramarginal supramarine supramastoid supramaxilla supramaxillary supramaximal suprameatal supramechanical supramedial supramental supramolecular supramoral supramortal supramundane supranasal supranational supranatural supranaturalism supranaturalist supranaturalistic supranature supranervian supraneural supranormal supranuclear supraoccipital supraocclusion supraocular supraoesophagal supraoesophageal supraoptimal supraoptional supraoral supraorbital supraorbitar supraordinary supraordinate supraordination suprapapillary suprapedal suprapharyngeal supraposition supraprotest suprapubian suprapubic suprapygal supraquantivalence supraquantivalent suprarational suprarationalism suprarationality suprarenal suprarenalectomize suprarenalectomy suprarenalin suprarenine suprarimal suprasaturate suprascapula suprascapular suprascapulary suprascript suprasegmental suprasensible suprasensitive suprasensual suprasensuous supraseptal suprasolar suprasoriferous suprasphanoidal supraspinal supraspinate supraspinatus supraspinous suprasquamosal suprastandard suprastapedial suprastate suprasternal suprastigmal suprasubtle supratemporal supraterraneous supraterrestrial suprathoracic supratonsillar supratrochlear supratropical supratympanic supravaginal supraventricular supraversion supravital supraworld supremacy suprematism supreme supremely supremeness supremity sur sura suraddition surah surahi sural suralimentation suranal surangular surat surbase surbased surbasement surbate surbater surbed surcease surcharge surcharger surcingle surcoat surcrue surculi surculigerous surculose surculous surculus surd surdation surdeline surdent surdimutism surdity surdomute sure surely sureness sures Suresh surette surety suretyship surexcitation surf surface surfaced surfacedly surfaceless surfacely surfaceman surfacer surfacing surfactant surfacy surfbird surfboard surfboarding surfboat surfboatman surfeit surfeiter surfer surficial surfle surflike surfman surfmanship surfrappe surfuse surfusion surfy surge surgeful surgeless surgent surgeon surgeoncy surgeoness surgeonfish surgeonless surgeonship surgeproof surgerize surgery surgical surgically surginess surging surgy Suriana Surianaceae Suricata suricate suriga Surinam surinamine surlily surliness surly surma surmark surmaster surmisable surmisal surmisant surmise surmised surmisedly surmiser surmount surmountable surmountableness surmountal surmounted surmounter surmullet surname surnamer surnap surnay surnominal surpass surpassable surpasser surpassing surpassingly surpassingness surpeopled surplice surpliced surplicewise surplician surplus surplusage surpreciation surprint surprisable surprisal surprise surprisedly surprisement surpriseproof surpriser surprising surprisingly surprisingness surquedry surquidry surquidy surra surrealism surrealist surrealistic surrealistically surrebound surrebut surrebuttal surrebutter surrection surrejoin surrejoinder surrenal surrender surrenderee surrenderer surrenderor surreption surreptitious surreptitiously surreptitiousness surreverence surreverently surrey surrogacy surrogate surrogateship surrogation surrosion surround surrounded surroundedly surrounder surrounding surroundings sursaturation sursolid sursumduction sursumvergence sursumversion surtax surtout surturbrand surveillance surveillant survey surveyable surveyage surveyal surveyance surveying surveyor surveyorship survigrous survivability survivable survival survivalism survivalist survivance survivancy survive surviver surviving survivor survivoress survivorship Surya Sus Susan Susanchite Susanna Susanne susannite suscept susceptance susceptibility susceptible susceptibleness susceptibly susception susceptive susceptiveness susceptivity susceptor suscitate suscitation susi Susian Susianian Susie suslik susotoxin suspect suspectable suspected suspectedness suspecter suspectful suspectfulness suspectible suspectless suspector suspend suspended suspender suspenderless suspenders suspendibility suspendible suspensation suspense suspenseful suspensely suspensibility suspensible suspension suspensive suspensively suspensiveness suspensoid suspensor suspensorial suspensorium suspensory suspercollate suspicion suspicionable suspicional suspicionful suspicionless suspicious suspiciously suspiciousness suspiration suspiratious suspirative suspire suspirious Susquehanna Sussex sussexite Sussexman sussultatory sussultorial sustain sustainable sustained sustainer sustaining sustainingly sustainment sustanedly sustenance sustenanceless sustentacula sustentacular sustentaculum sustentation sustentational sustentative sustentator sustention sustentive sustentor Susu susu Susuhunan Susuidae Susumu susurr susurrant susurrate susurration susurringly susurrous susurrus Sutaio suterbery suther Sutherlandia sutile sutler sutlerage sutleress sutlership sutlery Suto sutor sutorial sutorian sutorious sutra Suttapitaka suttee sutteeism sutten suttin suttle Sutu sutural suturally suturation suture Suu suum Suwandi suwarro suwe Suyog suz Suzan Suzanne suzerain suzeraine suzerainship suzerainty Suzy Svan Svanetian Svanish Svante Svantovit svarabhakti svarabhaktic Svarloka svelte Svetambara sviatonosite swa Swab swab swabber swabberly swabble Swabian swack swacken swacking swad swaddle swaddlebill swaddler swaddling swaddy Swadeshi Swadeshism swag swagbellied swagbelly swage swager swagger swaggerer swaggering swaggeringly swaggie swaggy swaglike swagman swagsman Swahilese Swahili Swahilian Swahilize swaimous swain swainish swainishness swainship Swainsona swainsona swaird swale swaler swaling swalingly swallet swallo swallow swallowable swallower swallowlike swallowling swallowpipe swallowtail swallowwort swam swami swamp swampable swampberry swamper swampish swampishness swampland swampside swampweed swampwood swampy Swamy swan swandown swanflower swang swangy swanherd swanhood swanimote swank swanker swankily swankiness swanking swanky swanlike swanmark swanmarker swanmarking swanneck swannecked swanner swannery swannish swanny swanskin Swantevit swanweed swanwort swap swape swapper swapping swaraj swarajism swarajist swarbie sward swardy sware swarf swarfer swarm swarmer swarming swarmy swarry swart swartback swarth swarthily swarthiness swarthness swarthy swartish swartly swartness swartrutter swartrutting swarty Swartzbois Swartzia swarve swash swashbuckle swashbuckler swashbucklerdom swashbucklering swashbucklery swashbuckling swasher swashing swashway swashwork swashy swastika swastikaed Swat swat swatch Swatchel swatcher swatchway swath swathable swathband swathe swatheable swather swathy Swati Swatow swatter swattle swaver sway swayable swayed swayer swayful swaying swayingly swayless Swazi Swaziland sweal sweamish swear swearer swearingly swearword sweat sweatband sweatbox sweated sweater sweatful sweath sweatily sweatiness sweating sweatless sweatproof sweatshop sweatweed sweaty Swede Swedenborgian Swedenborgianism Swedenborgism swedge Swedish sweeny sweep sweepable sweepage sweepback sweepboard sweepdom sweeper sweeperess sweepforward sweeping sweepingly sweepingness sweepings sweepstake sweepwasher sweepwashings sweepy sweer sweered sweet sweetberry sweetbread sweetbrier sweetbriery sweeten sweetener sweetening sweetfish sweetful sweetheart sweetheartdom sweethearted sweetheartedness sweethearting sweetheartship sweetie sweeting sweetish sweetishly sweetishness sweetleaf sweetless sweetlike sweetling sweetly sweetmaker sweetmeat sweetmouthed sweetness sweetroot sweetshop sweetsome sweetsop sweetwater sweetweed sweetwood sweetwort sweety swego swelchie swell swellage swelldom swelldoodle swelled sweller swellfish swelling swellish swellishness swellmobsman swellness swelltoad swelly swelp swelt swelter sweltering swelteringly swelth sweltry swelty swep swept swerd Swertia swerve swerveless swerver swervily swick swidge Swietenia swift swiften swifter swiftfoot swiftlet swiftlike swiftness swifty swig swigger swiggle swile swill swillbowl swiller swilltub swim swimmable swimmer swimmeret swimmily swimminess swimming swimmingly swimmingness swimmist swimmy swimsuit swimy Swinburnesque Swinburnian swindle swindleable swindledom swindler swindlership swindlery swindling swindlingly swine swinebread swinecote swinehead swineherd swineherdship swinehood swinehull swinelike swinely swinepipe swinery swinestone swinesty swiney swing swingable swingback swingdevil swingdingle swinge swingeing swinger swinging swingingly Swingism swingle swinglebar swingletail swingletree swingstock swingtree swingy swinish swinishly swinishness swink swinney swipe swiper swipes swiple swipper swipy swird swire swirl swirlingly swirly swirring swish swisher swishing swishingly swishy Swiss swiss Swissess swissing switch switchback switchbacker switchboard switched switchel switcher switchgear switching switchkeeper switchlike switchman switchy switchyard swith swithe swithen swither Swithin Switzer Switzeress swivel swiveled swiveleye swiveleyed swivellike swivet swivetty swiz swizzle swizzler swob swollen swollenly swollenness swom swonken swoon swooned swooning swooningly swoony swoop swooper swoosh sword swordbill swordcraft swordfish swordfisherman swordfishery swordfishing swordick swording swordless swordlet swordlike swordmaker swordmaking swordman swordmanship swordplay swordplayer swordproof swordsman swordsmanship swordsmith swordster swordstick swordswoman swordtail swordweed swore sworn swosh swot swotter swounds swow swum swung swungen swure syagush sybarism sybarist Sybarital Sybaritan Sybarite Sybaritic Sybaritical Sybaritically Sybaritish sybaritism Sybil sybotic sybotism sycamine sycamore syce sycee sychnocarpous sycock sycoma sycomancy Sycon Syconaria syconarian syconate Sycones syconid Syconidae syconium syconoid syconus sycophancy sycophant sycophantic sycophantical sycophantically sycophantish sycophantishly sycophantism sycophantize sycophantry sycosiform sycosis Syd Sydneian Sydneyite sye Syed syenite syenitic syenodiorite syenogabbro sylid syllab syllabarium syllabary syllabatim syllabation syllabe syllabi syllabic syllabical syllabically syllabicate syllabication syllabicness syllabification syllabify syllabism syllabize syllable syllabled syllabus syllepsis sylleptic sylleptical sylleptically Syllidae syllidian Syllis sylloge syllogism syllogist syllogistic syllogistical syllogistically syllogistics syllogization syllogize syllogizer sylph sylphic sylphid sylphidine sylphish sylphize sylphlike Sylphon sylphy sylva sylvae sylvage Sylvan sylvan sylvanesque sylvanite sylvanitic sylvanity sylvanize sylvanly sylvanry sylvate sylvatic Sylvester sylvester sylvestral sylvestrene Sylvestrian sylvestrian Sylvestrine Sylvia Sylvian sylvic Sylvicolidae sylvicoline Sylviidae Sylviinae sylviine sylvine sylvinite sylvite symbasic symbasical symbasically symbasis symbiogenesis symbiogenetic symbiogenetically symbion symbiont symbiontic symbionticism symbiosis symbiot symbiote symbiotic symbiotically symbiotics symbiotism symbiotrophic symblepharon symbol symbolaeography symbolater symbolatrous symbolatry symbolic symbolical symbolically symbolicalness symbolicly symbolics symbolism symbolist symbolistic symbolistical symbolistically symbolization symbolize symbolizer symbolofideism symbological symbologist symbolography symbology symbololatry symbolology symbolry symbouleutic symbranch Symbranchia symbranchiate symbranchoid symbranchous symmachy symmedian symmelia symmelian symmelus symmetalism symmetral symmetric symmetrical symmetricality symmetrically symmetricalness symmetrist symmetrization symmetrize symmetroid symmetrophobia symmetry symmorphic symmorphism sympalmograph sympathectomize sympathectomy sympathetectomy sympathetic sympathetical sympathetically sympatheticism sympatheticity sympatheticness sympatheticotonia sympatheticotonic sympathetoblast sympathicoblast sympathicotonia sympathicotonic sympathicotripsy sympathism sympathist sympathize sympathizer sympathizing sympathizingly sympathoblast sympatholysis sympatholytic sympathomimetic sympathy sympatric sympatry Sympetalae sympetalous Symphalangus symphenomena symphenomenal symphile symphilic symphilism symphilous symphily symphogenous symphonetic symphonia symphonic symphonically symphonion symphonious symphoniously symphonist symphonize symphonous symphony Symphoricarpos symphoricarpous symphrase symphronistic symphyantherous symphycarpous Symphyla symphylan symphyllous symphylous symphynote symphyogenesis symphyogenetic symphyostemonous symphyseal symphyseotomy symphysial symphysian symphysic symphysion symphysiotomy symphysis symphysodactylia symphysotomy symphysy Symphyta symphytic symphytically symphytism symphytize Symphytum sympiesometer symplasm symplectic Symplegades symplesite Symplocaceae symplocaceous Symplocarpus symploce Symplocos sympode sympodia sympodial sympodially sympodium sympolity symposia symposiac symposiacal symposial symposiarch symposiast symposiastic symposion symposium symptom symptomatic symptomatical symptomatically symptomatics symptomatize symptomatography symptomatological symptomatologically symptomatology symptomical symptomize symptomless symptosis symtomology synacme synacmic synacmy synactic synadelphite synaeresis synagogal synagogian synagogical synagogism synagogist synagogue synalgia synalgic synallactic synallagmatic synaloepha synanastomosis synange synangia synangial synangic synangium synanthema synantherological synantherologist synantherology synantherous synanthesis synanthetic synanthic synanthous synanthrose synanthy synaphea synaposematic synapse synapses Synapsida synapsidan synapsis synaptai synaptase synapte synaptene Synaptera synapterous synaptic synaptical synaptically synapticula synapticulae synapticular synapticulate synapticulum Synaptosauria synaptychus synarchical synarchism synarchy synarmogoid Synarmogoidea synarquism synartesis synartete synartetic synarthrodia synarthrodial synarthrodially synarthrosis Synascidiae synascidian synastry synaxar synaxarion synaxarist synaxarium synaxary synaxis sync Syncarida syncarp syncarpia syncarpium syncarpous syncarpy syncategorematic syncategorematical syncategorematically syncategoreme syncephalic syncephalus syncerebral syncerebrum synch synchitic synchondoses synchondrosial synchondrosially synchondrosis synchondrotomy synchoresis synchro synchroflash synchromesh synchronal synchrone synchronic synchronical synchronically synchronism synchronistic synchronistical synchronistically synchronizable synchronization synchronize synchronized synchronizer synchronograph synchronological synchronology synchronous synchronously synchronousness synchrony synchroscope synchrotron synchysis Synchytriaceae Synchytrium syncladous synclastic synclinal synclinally syncline synclinical synclinore synclinorial synclinorian synclinorium synclitic syncliticism synclitism syncoelom syncopal syncopate syncopated syncopation syncopator syncope syncopic syncopism syncopist syncopize syncotyledonous syncracy syncraniate syncranterian syncranteric syncrasy syncretic syncretical syncreticism syncretion syncretism syncretist syncretistic syncretistical syncretize syncrisis Syncrypta syncryptic syncytia syncytial syncytioma syncytiomata syncytium syndactyl syndactylia syndactylic syndactylism syndactylous syndactyly syndectomy synderesis syndesis syndesmectopia syndesmitis syndesmography syndesmology syndesmoma Syndesmon syndesmoplasty syndesmorrhaphy syndesmosis syndesmotic syndesmotomy syndetic syndetical syndetically syndic syndical syndicalism syndicalist syndicalistic syndicalize syndicate syndicateer syndication syndicator syndicship syndoc syndrome syndromic syndyasmian Syndyoceras syne synecdoche synecdochic synecdochical synecdochically synecdochism synechia synechiological synechiology synechological synechology synechotomy synechthran synechthry synecology synecphonesis synectic synecticity Synedra synedral Synedria synedria synedrial synedrian Synedrion synedrion Synedrium synedrium synedrous syneidesis synema synemmenon synenergistic synenergistical synenergistically synentognath Synentognathi synentognathous syneresis synergastic synergetic synergia synergic synergically synergid synergidae synergidal synergism synergist synergistic synergistical synergistically synergize synergy synerize synesis synesthesia synesthetic synethnic syngamic syngamous syngamy Syngenesia syngenesian syngenesious syngenesis syngenetic syngenic syngenism syngenite Syngnatha Syngnathi syngnathid Syngnathidae syngnathoid syngnathous Syngnathus syngraph synizesis synkaryon synkatathesis synkinesia synkinesis synkinetic synneurosis synneusis synochoid synochus synocreate synod synodal synodalian synodalist synodally synodical synodically synodist synodite synodontid Synodontidae synodontoid synodsman Synodus synoecete synoeciosis synoecious synoeciously synoeciousness synoecism synoecize synoecy synoicous synomosy synonym synonymatic synonymic synonymical synonymicon synonymics synonymist synonymity synonymize synonymous synonymously synonymousness synonymy synophthalmus synopses synopsis synopsize synopsy synoptic synoptical synoptically Synoptist synoptist Synoptistic synorchidism synorchism synorthographic synosteology synosteosis synostose synostosis synostotic synostotical synostotically synousiacs synovectomy synovia synovial synovially synoviparous synovitic synovitis synpelmous synrhabdosome synsacral synsacrum synsepalous synspermous synsporous syntactic syntactical syntactically syntactician syntactics syntagma syntan syntasis syntax syntaxis syntaxist syntechnic syntectic syntelome syntenosis synteresis syntexis syntheme synthermal syntheses synthesis synthesism synthesist synthesization synthesize synthesizer synthete synthetic synthetical synthetically syntheticism synthetism synthetist synthetization synthetize synthetizer synthol synthroni synthronoi synthronos synthronus syntomia syntomy syntone syntonic syntonical syntonically syntonin syntonization syntonize syntonizer syntonolydian syntonous syntony syntripsis syntrope syntrophic syntropic syntropical syntropy syntype syntypic syntypicism Synura synusia synusiast syodicon sypher syphilide syphilidography syphilidologist syphiliphobia syphilis syphilitic syphilitically syphilization syphilize syphiloderm syphilodermatous syphilogenesis syphilogeny syphilographer syphilography syphiloid syphilologist syphilology syphiloma syphilomatous syphilophobe syphilophobia syphilophobic syphilopsychosis syphilosis syphilous Syracusan syre Syriac Syriacism Syriacist Syrian Syrianic Syrianism Syrianize Syriarch Syriasm syringa syringadenous syringe syringeal syringeful syringes syringin syringitis syringium syringocoele syringomyelia syringomyelic syringotome syringotomy syrinx Syriologist Syrma syrma Syrmian Syrnium Syrophoenician syrphian syrphid Syrphidae syrt syrtic Syrtis syrup syruped syruper syruplike syrupy Syryenian syssarcosis syssel sysselman syssiderite syssitia syssition systaltic systasis systatic system systematic systematical systematicality systematically systematician systematicness systematics systematism systematist systematization systematize systematizer systematology systemed systemic systemically systemist systemizable systemization systemize systemizer systemless systemproof systemwise systilius systolated systole systolic systyle systylous Syun syzygetic syzygetically syzygial syzygium syzygy szaibelyite Szekler szlachta szopelka T t ta taa Taal Taalbond taar Tab tab tabacin tabacosis tabacum tabanid Tabanidae tabaniform tabanuco Tabanus tabard tabarded tabaret Tabasco tabasheer tabashir tabaxir tabbarea tabber tabbinet Tabby tabby Tabebuia tabefaction tabefy tabella Tabellaria Tabellariaceae tabellion taberdar taberna tabernacle tabernacler tabernacular Tabernaemontana tabernariae tabes tabescence tabescent tabet tabetic tabetiform tabetless tabic tabid tabidly tabidness tabific tabifical tabinet Tabira Tabitha tabitude tabla tablature table tableau tableaux tablecloth tableclothwise tableclothy tabled tablefellow tablefellowship tableful tableity tableland tableless tablelike tablemaid tablemaker tablemaking tableman tablemate tabler tables tablespoon tablespoonful tablet tabletary tableware tablewise tabling tablinum Tabloid tabloid tabog taboo tabooism tabooist taboot taboparalysis taboparesis taboparetic tabophobia tabor taborer taboret taborin Taborite tabour tabourer tabouret tabret Tabriz tabu tabula tabulable tabular tabulare tabularium tabularization tabularize tabularly tabulary Tabulata tabulate tabulated tabulation tabulator tabulatory tabule tabuliform tabut tacahout tacamahac Tacana Tacanan Tacca Taccaceae taccaceous taccada tach Tachardia Tachardiinae tache tacheless tacheography tacheometer tacheometric tacheometry tacheture tachhydrite tachibana Tachina Tachinaria tachinarian tachinid Tachinidae tachiol tachistoscope tachistoscopic tachogram tachograph tachometer tachometry tachoscope tachycardia tachycardiac tachygen tachygenesis tachygenetic tachygenic tachyglossal tachyglossate Tachyglossidae Tachyglossus tachygraph tachygrapher tachygraphic tachygraphical tachygraphically tachygraphist tachygraphometer tachygraphometry tachygraphy tachyhydrite tachyiatry tachylalia tachylite tachylyte tachylytic tachymeter tachymetric tachymetry tachyphagia tachyphasia tachyphemia tachyphrasia tachyphrenia tachypnea tachyscope tachyseism tachysterol tachysystole tachythanatous tachytomy tachytype tacit Tacitean tacitly tacitness taciturn taciturnist taciturnity taciturnly tack tacker tacket tackety tackey tackiness tacking tackingly tackle tackled tackleless tackleman tackler tackless tackling tackproof tacksman tacky taclocus tacmahack tacnode Taconian Taconic taconite tacso Tacsonia tact tactable tactful tactfully tactfulness tactic tactical tactically tactician tactics tactile tactilist tactility tactilogical tactinvariant taction tactite tactive tactless tactlessly tactlessness tactometer tactor tactosol tactual tactualist tactuality tactually tactus tacuacine Taculli Tad tad tade Tadjik Tadousac tadpole tadpoledom tadpolehood tadpolelike tadpolism tae tael taen taenia taeniacidal taeniacide Taeniada taeniafuge taenial taenian taeniasis Taeniata taeniate taenicide Taenidia taenidium taeniform taenifuge taeniiform Taeniobranchia taeniobranchiate Taeniodonta Taeniodontia Taeniodontidae Taenioglossa taenioglossate taenioid taeniosome Taeniosomi taeniosomous taenite taennin Taetsia taffarel tafferel taffeta taffety taffle taffrail Taffy taffy taffylike taffymaker taffymaking taffywise tafia tafinagh taft tafwiz tag Tagabilis Tagakaolo Tagal Tagala Tagalize Tagalo Tagalog tagasaste Tagassu Tagassuidae tagatose Tagaur Tagbanua tagboard Tagetes tagetol tagetone tagged tagger taggle taggy Taghlik tagilite Tagish taglet Tagliacotian Tagliacozzian taglike taglock tagrag tagraggery tagsore tagtail tagua taguan Tagula tagwerk taha Tahami taheen tahil tahin Tahiti Tahitian tahkhana Tahltan tahr tahseeldar tahsil tahsildar Tahsin tahua Tai tai taiaha taich taiga taigle taiglesome taihoa taikhana tail tailage tailband tailboard tailed tailender tailer tailet tailfirst tailflower tailforemost tailge tailhead tailing tailings taille tailless taillessly taillessness taillie taillight taillike tailor tailorage tailorbird tailorcraft tailordom tailoress tailorhood tailoring tailorism tailorization tailorize tailorless tailorlike tailorly tailorman tailorship tailorwise tailory tailpiece tailpin tailpipe tailrace tailsman tailstock Tailte tailward tailwards tailwise taily tailzee tailzie taimen taimyrite tain Tainan Taino taint taintable taintless taintlessly taintlessness taintment taintor taintproof tainture taintworm Tainui taipan Taipi Taiping taipo tairge tairger tairn taisch taise Taisho taissle taistrel taistril Tait tait taiver taivers taivert Taiwanhemp Taiyal taj Tajik takable takamaka Takao takar Takayuki take takedown takedownable takeful Takelma taken taker Takeuchi Takhaar Takhtadjy Takilman takin taking takingly takingness takings Takitumu takosis takt Taku taky takyr Tal tal tala talabon talahib Talaing talaje talak talalgia Talamanca Talamancan talanton talao talapoin talar talari talaria talaric talayot talbot talbotype talc talcer Talcher talcky talclike talcochlorite talcoid talcomicaceous talcose talcous talcum tald tale talebearer talebearing talebook talecarrier talecarrying taled taleful Talegallinae Talegallus talemaster talemonger talemongering talent talented talentless talepyet taler tales talesman taleteller taletelling tali Taliacotian taliage taliation taliera taligrade Talinum talion talionic talipat taliped talipedic talipes talipomanus talipot talis talisay Talishi talisman talismanic talismanical talismanically talismanist talite Talitha talitol talk talkability talkable talkathon talkative talkatively talkativeness talker talkfest talkful talkie talkiness talking talkworthy talky tall tallage tallageability tallageable tallboy tallegalane taller tallero talles tallet talliable talliage talliar talliate tallier tallis tallish tallit tallith tallness talloel tallote tallow tallowberry tallower tallowiness tallowing tallowish tallowlike tallowmaker tallowmaking tallowman tallowroot tallowweed tallowwood tallowy tallwood tally tallyho tallyman tallymanship tallywag tallywalka tallywoman talma talmouse Talmud Talmudic Talmudical Talmudism Talmudist Talmudistic Talmudistical Talmudization Talmudize talocalcaneal talocalcanean talocrural talofibular talon talonavicular taloned talonic talonid taloscaphoid talose talotibial Talpa talpacoti talpatate talpetate talpicide talpid Talpidae talpiform talpify talpine talpoid talthib Taltushtuntude Taluche Taluhet taluk taluka talukdar talukdari talus taluto talwar talwood Talyshin tam Tama tamability tamable tamableness tamably Tamaceae Tamachek tamacoare tamale Tamanac Tamanaca Tamanaco tamandu tamandua tamanoas tamanoir tamanowus tamanu Tamara tamara tamarack tamaraite tamarao Tamaricaceae tamaricaceous tamarin tamarind Tamarindus tamarisk Tamarix Tamaroa tamas tamasha Tamashek Tamaulipecan tambac tambaroora tamber tambo tamboo Tambookie tambookie tambor Tambouki tambour tamboura tambourer tambouret tambourgi tambourin tambourinade tambourine tambourist tambreet Tambuki tamburan tamburello Tame tame tamehearted tameheartedness tamein tameless tamelessly tamelessness tamely tameness tamer Tamerlanism Tamias tamidine Tamil Tamilian Tamilic tamis tamise tamlung Tammanial Tammanize Tammany Tammanyism Tammanyite Tammanyize tammie tammock Tammy tammy Tamonea Tamoyo tamp tampala tampan tampang tamper tamperer tamperproof tampin tamping tampion tampioned tampon tamponade tamponage tamponment tampoon Tamul Tamulian Tamulic Tamus Tamworth Tamzine tan tana tanacetin tanacetone Tanacetum tanacetyl tanach tanager Tanagra Tanagraean Tanagridae tanagrine tanagroid Tanaidacea tanaist tanak Tanaka Tanala tanan tanbark tanbur tancel Tanchelmian tanchoir tandan tandem tandemer tandemist tandemize tandemwise tandle tandour Tandy tane tanekaha Tang tang tanga Tangaloa tangalung tangantangan Tangaridae Tangaroa Tangaroan tanged tangeite tangelo tangence tangency tangent tangental tangentally tangential tangentiality tangentially tangently tanger Tangerine tangfish tangham tanghan tanghin Tanghinia tanghinin tangi tangibile tangibility tangible tangibleness tangibly tangie Tangier tangilin Tangipahoa tangka tanglad tangle tangleberry tanglefish tanglefoot tanglement tangleproof tangler tangleroot tanglesome tangless tanglewrack tangling tanglingly tangly tango tangoreceptor tangram tangs tangue tanguile tangum tangun Tangut tangy tanh tanha tanhouse tania tanica tanier tanist tanistic tanistry tanistship Tanite Tanitic tanjib tanjong tank tanka tankage tankah tankard tanked tanker tankerabogus tankert tankette tankful tankle tankless tanklike tankmaker tankmaking tankman tankodrome tankroom tankwise tanling tannable tannage tannaic tannaim tannaitic tannalbin tannase tannate tanned tanner tannery tannic tannide tanniferous tannin tannined tanning tanninlike tannocaffeic tannogallate tannogallic tannogelatin tannogen tannoid tannometer tannyl Tano tanoa Tanoan tanproof tanquam Tanquelinian tanquen tanrec tanstuff tansy tantadlin tantafflin tantalate Tantalean Tantalian Tantalic tantalic tantaliferous tantalifluoride tantalite tantalization tantalize tantalizer tantalizingly tantalizingness tantalofluoride tantalum Tantalus tantamount tantara tantarabobus tantarara tanti tantivy tantle Tantony tantra tantric tantrik tantrism tantrist tantrum tantum tanwood tanworks Tanya tanyard Tanyoan Tanystomata tanystomatous tanystome tanzeb tanzib Tanzine tanzy Tao tao Taoism Taoist Taoistic Taonurus Taos taotai taoyin tap Tapa tapa Tapachula Tapachulteca tapacolo tapaculo Tapacura tapadera tapadero Tapajo tapalo tapamaker tapamaking tapas tapasvi Tape tape Tapeats tapeinocephalic tapeinocephalism tapeinocephaly tapeless tapelike tapeline tapemaker tapemaking tapeman tapen taper taperbearer tapered taperer tapering taperingly taperly tapermaker tapermaking taperness taperwise tapesium tapestring tapestry tapestrylike tapet tapetal tapete tapeti tapetless tapetum tapework tapeworm taphephobia taphole taphouse Taphria Taphrina Taphrinaceae tapia Tapijulapane tapinceophalism tapinocephalic tapinocephaly Tapinoma tapinophobia tapinophoby tapinosis tapioca tapir Tapiridae tapiridian tapirine Tapiro tapiroid Tapirus tapis tapism tapist taplash taplet Tapleyism tapmost tapnet tapoa Taposa tapoun tappa tappable tappableness tappall tappaul tappen tapper tapperer Tappertitian tappet tappietoorie tapping tappoon Taprobane taproom taproot taprooted taps tapster tapsterlike tapsterly tapstress tapu tapul Tapuya Tapuyan Tapuyo taqua tar tara tarabooka taraf tarafdar tarage Tarahumar Tarahumara Tarahumare Tarahumari Tarai tarairi tarakihi Taraktogenos taramellite Taramembe Taranchi tarand Tarandean Tarandian tarantara tarantass tarantella tarantism tarantist tarantula tarantular tarantulary tarantulated tarantulid Tarantulidae tarantulism tarantulite tarantulous tarapatch taraph tarapin Tarapon Tarasc Tarascan Tarasco tarassis tarata taratah taratantara taratantarize tarau taraxacerin taraxacin Taraxacum Tarazed tarbadillo tarbet tarboard tarbogan tarboggin tarboosh tarbooshed tarboy tarbrush tarbush tarbuttite Tardenoisian Tardigrada tardigrade tardigradous tardily tardiness tarditude tardive tardle tardy tare tarea tarefa tarefitch tarentala tarente Tarentine tarentism tarentola tarepatch Tareq tarfa tarflower targe targeman targer target targeted targeteer targetlike targetman Targum Targumic Targumical Targumist Targumistic Targumize Tarheel Tarheeler tarhood tari Tariana tarie tariff tariffable tariffication tariffism tariffist tariffite tariffize tariffless tarin Tariri tariric taririnic tarish Tarkalani Tarkani tarkashi tarkeean tarkhan tarlatan tarlataned tarletan tarlike tarltonize Tarmac tarmac tarman Tarmi tarmined tarn tarnal tarnally tarnation tarnish tarnishable tarnisher tarnishment tarnishproof tarnlike tarnside taro taroc tarocco tarok taropatch tarot tarp tarpan tarpaulin tarpaulinmaker Tarpeia Tarpeian tarpon tarpot tarpum Tarquin Tarquinish tarr tarrack tarradiddle tarradiddler tarragon tarragona tarras tarrass Tarrateen Tarratine tarred tarrer tarri tarriance tarrie tarrier tarrify tarrily tarriness tarrish tarrock tarrow tarry tarrying tarryingly tarryingness tars tarsadenitis tarsal tarsale tarsalgia tarse tarsectomy tarsectopia tarsi tarsia tarsier Tarsiidae tarsioid Tarsipedidae Tarsipedinae Tarsipes tarsitis Tarsius tarsochiloplasty tarsoclasis tarsomalacia tarsome tarsometatarsal tarsometatarsus tarsonemid Tarsonemidae Tarsonemus tarsophalangeal tarsophyma tarsoplasia tarsoplasty tarsoptosis tarsorrhaphy tarsotarsal tarsotibal tarsotomy tarsus tart tartago Tartan tartan tartana tartane Tartar tartar tartarated Tartarean Tartareous tartareous tartaret Tartarian Tartaric tartaric Tartarin tartarish Tartarism Tartarization tartarization Tartarize tartarize Tartarized Tartarlike tartarly Tartarology tartarous tartarproof tartarum Tartarus Tartary tartemorion tarten tartish tartishly tartle tartlet tartly tartness tartramate tartramic tartramide tartrate tartrated tartratoferric tartrazine tartrazinic tartro tartronate tartronic tartronyl tartronylurea tartrous tartryl tartrylic Tartufe tartufery tartufian tartufish tartufishly tartufism tartwoman Taruma Tarumari tarve Tarvia tarweed tarwhine tarwood tarworks taryard Taryba Tarzan Tarzanish tasajo tascal tasco taseometer tash tasheriff tashie tashlik Tashnagist Tashnakist tashreef tashrif Tasian tasimeter tasimetric tasimetry task taskage tasker taskit taskless tasklike taskmaster taskmastership taskmistress tasksetter tasksetting taskwork taslet Tasmanian tasmanite Tass tass tassago tassah tassal tassard tasse tassel tasseler tasselet tasselfish tassellus tasselmaker tasselmaking tassely tasser tasset tassie tassoo tastable tastableness tastably taste tasteable tasteableness tasteably tasted tasteful tastefully tastefulness tastekin tasteless tastelessly tastelessness tasten taster tastily tastiness tasting tastingly tasty tasu Tat tat Tatar Tatarian Tataric Tatarization Tatarize Tatary tataupa tatbeb tatchy tate tater Tates tath Tatian Tatianist tatie tatinek tatler tatou tatouay tatpurusha Tatsanottine tatsman tatta tatter tatterdemalion tatterdemalionism tatterdemalionry tattered tatteredly tatteredness tatterly tatterwallop tattery tatther tattied tatting tattle tattlement tattler tattlery tattletale tattling tattlingly tattoo tattooage tattooer tattooing tattooist tattooment tattva tatty Tatu tatu tatukira Tatusia Tatusiidae tau Taube Tauchnitz taught taula Tauli taum taun Taungthu taunt taunter taunting tauntingly tauntingness Taunton tauntress taupe taupo taupou taur tauranga taurean Tauri Taurian taurian Tauric tauric tauricide tauricornous Taurid Tauridian tauriferous tauriform taurine Taurini taurite taurobolium tauroboly taurocephalous taurocholate taurocholic taurocol taurocolla Tauroctonus taurodont tauroesque taurokathapsia taurolatry tauromachian tauromachic tauromachy tauromorphic tauromorphous taurophile taurophobe Tauropolos Taurotragus Taurus tauryl taut tautaug tauted tautegorical tautegory tauten tautirite tautit tautly tautness tautochrone tautochronism tautochronous tautog tautologic tautological tautologically tautologicalness tautologism tautologist tautologize tautologizer tautologous tautologously tautology tautomer tautomeral tautomeric tautomerism tautomerizable tautomerization tautomerize tautomery tautometer tautometric tautometrical tautomorphous tautonym tautonymic tautonymy tautoousian tautoousious tautophonic tautophonical tautophony tautopodic tautopody tautosyllabic tautotype tautourea tautousian tautousious tautozonal tautozonality tav Tavast Tavastian Tave tave tavell taver tavern taverner tavernize tavernless tavernlike tavernly tavernous tavernry tavernwards tavers tavert Tavghi tavistockite tavola tavolatite Tavy taw tawa tawdered tawdrily tawdriness tawdry tawer tawery Tawgi tawie tawite tawkee tawkin tawn tawney tawnily tawniness tawnle tawny tawpi tawpie taws tawse tawtie tax taxability taxable taxableness taxably Taxaceae taxaceous taxameter taxaspidean taxation taxational taxative taxatively taxator taxeater taxeating taxed taxeme taxemic taxeopod Taxeopoda taxeopodous taxeopody taxer taxgatherer taxgathering taxi taxiable taxiarch taxiauto taxibus taxicab Taxidea taxidermal taxidermic taxidermist taxidermize taxidermy taximan taximeter taximetered taxine taxing taxingly taxinomic taxinomist taxinomy taxiplane taxis taxite taxitic taxless taxlessly taxlessness taxman Taxodiaceae Taxodium taxodont taxology taxometer taxon taxonomer taxonomic taxonomical taxonomically taxonomist taxonomy taxor taxpaid taxpayer taxpaying Taxus taxwax taxy tay Tayassu Tayassuidae tayer Taygeta tayir Taylor Taylorism Taylorite taylorite Taylorize tayra Tayrona taysaam tazia Tcawi tch tchai tcharik tchast tche tcheirek Tcheka Tcherkess tchervonets tchervonetz Tchetchentsish Tchetnitsi Tchi tchick tchu Tchwi tck Td te tea teaberry teaboard teabox teaboy teacake teacart teach teachability teachable teachableness teachably teache teacher teacherage teacherdom teacheress teacherhood teacherless teacherlike teacherly teachership teachery teaching teachingly teachless teachment teachy teacup teacupful tead teadish teaer teaey teagardeny teagle Teague Teagueland Teaguelander teahouse teaish teaism teak teakettle teakwood teal tealeafy tealery tealess teallite team teamaker teamaking teaman teameo teamer teaming teamland teamless teamman teammate teamsman teamster teamwise teamwork tean teanal teap teapot teapotful teapottykin teapoy tear tearable tearableness tearably tearage tearcat teardown teardrop tearer tearful tearfully tearfulness tearing tearless tearlessly tearlessness tearlet tearlike tearoom tearpit tearproof tearstain teart tearthroat tearthumb teary teasable teasableness teasably tease teaseable teaseableness teaseably teasehole teasel teaseler teaseller teasellike teaselwort teasement teaser teashop teasiness teasing teasingly teasler teaspoon teaspoonful teasy teat teataster teated teatfish teathe teather teatime teatlike teatling teatman teaty teave teaware teaze teazer tebbet Tebet Tebeth Tebu tec Teca teca tecali Tech tech techily techiness technetium technic technica technical technicalism technicalist technicality technicalize technically technicalness technician technicism technicist technicological technicology Technicolor technicon technics techniphone technique techniquer technism technist technocausis technochemical technochemistry technocracy technocrat technocratic technographer technographic technographical technographically technography technolithic technologic technological technologically technologist technologue technology technonomic technonomy technopsychology techous techy teck Tecla tecnoctonia tecnology Teco Tecoma tecomin tecon Tecpanec tectal tectibranch Tectibranchia tectibranchian Tectibranchiata tectibranchiate tectiform tectocephalic tectocephaly tectological tectology Tectona tectonic tectonics tectorial tectorium Tectosages tectosphere tectospinal Tectospondyli tectospondylic tectospondylous tectrices tectricial tectum tecum tecuma Tecuna Ted ted Teda tedder Teddy tedescan tedge tediosity tedious tediously tediousness tediousome tedisome tedium tee teedle teel teem teemer teemful teemfulness teeming teemingly teemingness teemless teems teen teenage teenet teens teensy teenty teeny teer teerer teest Teeswater teet teetaller teetan teeter teeterboard teeterer teetertail teeth teethache teethbrush teethe teethful teethily teething teethless teethlike teethridge teethy teeting teetotal teetotaler teetotalism teetotalist teetotally teetotum teetotumism teetotumize teetotumwise teety teevee teewhaap teff teg Tegean Tegeticula tegmen tegmental tegmentum tegmina tegminal Tegmine tegua teguexin Teguima tegula tegular tegularly tegulated tegumen tegument tegumental tegumentary tegumentum tegurium Teheran tehseel tehseeldar tehsil tehsildar Tehuantepecan Tehueco Tehuelche Tehuelchean Tehuelet Teian teicher teiglech Teiidae teil teind teindable teinder teinland teinoscope teioid Teiresias Tejon tejon teju tekiah Tekintsi Tekke tekke tekken Tekkintzi teknonymous teknonymy tektite tekya telacoustic telakucha telamon telang telangiectasia telangiectasis telangiectasy telangiectatic telangiosis Telanthera telar telarian telary telautogram telautograph telautographic telautographist telautography telautomatic telautomatically telautomatics Telchines Telchinic tele teleanemograph teleangiectasia telebarograph telebarometer telecast telecaster telechemic telechirograph telecinematography telecode telecommunication telecryptograph telectroscope teledendrion teledendrite teledendron teledu telega telegenic Telegn telegnosis telegnostic telegonic telegonous telegony telegram telegrammatic telegrammic telegraph telegraphee telegrapheme telegrapher telegraphese telegraphic telegraphical telegraphically telegraphist telegraphone telegraphophone telegraphoscope telegraphy Telegu telehydrobarometer Telei Teleia teleianthous teleiosis telekinematography telekinesis telekinetic telelectric telelectrograph telelectroscope telemanometer Telemark telemark Telembi telemechanic telemechanics telemechanism telemetacarpal telemeteorograph telemeteorographic telemeteorography telemeter telemetric telemetrical telemetrist telemetrograph telemetrographic telemetrography telemetry telemotor telencephal telencephalic telencephalon telenergic telenergy teleneurite teleneuron Telenget telengiscope Telenomus teleobjective Teleocephali teleocephalous Teleoceras Teleodesmacea teleodesmacean teleodesmaceous teleodont teleologic teleological teleologically teleologism teleologist teleology teleometer teleophobia teleophore teleophyte teleoptile teleorganic teleoroentgenogram teleoroentgenography teleosaur teleosaurian Teleosauridae Teleosaurus teleost teleostean Teleostei teleosteous teleostomate teleostome Teleostomi teleostomian teleostomous teleotemporal teleotrocha teleozoic teleozoon telepathic telepathically telepathist telepathize telepathy telepheme telephone telephoner telephonic telephonical telephonically telephonist telephonograph telephonographic telephony telephote telephoto telephotograph telephotographic telephotography Telephus telepicture teleplasm teleplasmic teleplastic telepost teleprinter teleradiophone teleran telergic telergical telergically telergy telescope telescopic telescopical telescopically telescopiform telescopist Telescopium telescopy telescriptor teleseism teleseismic teleseismology teleseme telesia telesis telesmeter telesomatic telespectroscope telestereograph telestereography telestereoscope telesterion telesthesia telesthetic telestial telestic telestich teletactile teletactor teletape teletherapy telethermogram telethermograph telethermometer telethermometry telethon teletopometer teletranscription Teletype teletype teletyper teletypesetter teletypewriter teletyping Teleut teleuto teleutoform teleutosorus teleutospore teleutosporic teleutosporiferous teleview televiewer televise television televisional televisionary televisor televisual televocal televox telewriter Telfairia telfairic telfer telferage telford telfordize telharmonic telharmonium telharmony teli telial telic telical telically teliferous Telinga teliosorus teliospore teliosporic teliosporiferous teliostage telium tell tellable tellach tellee teller tellership telligraph Tellima Tellina Tellinacea tellinacean tellinaceous telling tellingly Tellinidae tellinoid tellsome tellt telltale telltalely telltruth tellural tellurate telluret tellureted tellurethyl telluretted tellurhydric tellurian telluric telluride telluriferous tellurion tellurism tellurist tellurite tellurium tellurize telluronium tellurous telmatological telmatology teloblast teloblastic telocentric telodendrion telodendron telodynamic telokinesis telolecithal telolemma telome telomic telomitic telonism Teloogoo Telopea telophase telophragma telopsis teloptic telosynapsis telosynaptic telosynaptist teloteropathic teloteropathically teloteropathy Telotremata telotrematous telotroch telotrocha telotrochal telotrochous telotrophic telotype telpath telpher telpherage telpherman telpherway telson telsonic telt Telugu telurgy telyn Tema temacha temalacatl Teman teman Temanite tembe temblor Tembu temenos temerarious temerariously temerariousness temeritous temerity temerous temerously temerousness temiak temin Temiskaming Temne Temnospondyli temnospondylous temp Tempe Tempean temper tempera temperability temperable temperably temperality temperament temperamental temperamentalist temperamentally temperamented temperance temperate temperately temperateness temperative temperature tempered temperedly temperedness temperer temperish temperless tempersome tempery tempest tempestical tempestive tempestively tempestivity tempestuous tempestuously tempestuousness tempesty tempi Templar templar templardom templarism templarlike templarlikeness templary template templater temple templed templeful templeless templelike templet Templetonia templeward templize tempo tempora temporal temporale temporalism temporalist temporality temporalize temporally temporalness temporalty temporaneous temporaneously temporaneousness temporarily temporariness temporary temporator temporization temporizer temporizing temporizingly temporoalar temporoauricular temporocentral temporocerebellar temporofacial temporofrontal temporohyoid temporomalar temporomandibular temporomastoid temporomaxillary temporooccipital temporoparietal temporopontine temporosphenoid temporosphenoidal temporozygomatic tempre temprely tempt temptability temptable temptableness temptation temptational temptationless temptatious temptatory tempter tempting temptingly temptingness temptress Tempyo temse temser temulence temulency temulent temulentive temulently ten tenability tenable tenableness tenably tenace tenacious tenaciously tenaciousness tenacity tenaculum tenai tenaille tenaillon Tenaktak tenancy tenant tenantable tenantableness tenanter tenantism tenantless tenantlike tenantry tenantship tench tenchweed Tencteri tend tendance tendant tendence tendency tendent tendential tendentious tendentiously tendentiousness tender tenderability tenderable tenderably tenderee tenderer tenderfoot tenderfootish tenderful tenderfully tenderheart tenderhearted tenderheartedly tenderheartedness tenderish tenderize tenderling tenderloin tenderly tenderness tenderometer tendersome tendinal tending tendingly tendinitis tendinous tendinousness tendomucoid tendon tendonous tendoplasty tendosynovitis tendotome tendotomy tendour tendovaginal tendovaginitis tendresse tendril tendriled tendriliferous tendrillar tendrilly tendrilous tendron tenebra Tenebrae tenebricose tenebrific tenebrificate Tenebrio tenebrionid Tenebrionidae tenebrious tenebriously tenebrity tenebrose tenebrosity tenebrous tenebrously tenebrousness tenectomy tenement tenemental tenementary tenementer tenementization tenementize tenendas tenendum tenent teneral Teneriffe tenesmic tenesmus tenet tenfold tenfoldness teng tengere tengerite Tenggerese tengu teniacidal teniacide tenible Tenino tenio tenline tenmantale tennantite tenne tenner Tennessean tennis tennisdom tennisy Tennysonian Tennysonianism Tenochtitlan tenodesis tenodynia tenography tenology tenomyoplasty tenomyotomy tenon tenonectomy tenoner Tenonian tenonitis tenonostosis tenontagra tenontitis tenontodynia tenontography tenontolemmitis tenontology tenontomyoplasty tenontomyotomy tenontophyma tenontoplasty tenontothecitis tenontotomy tenophony tenophyte tenoplastic tenoplasty tenor tenorist tenorister tenorite tenorless tenoroon tenorrhaphy tenositis tenostosis tenosuture tenotome tenotomist tenotomize tenotomy tenovaginitis tenpence tenpenny tenpin tenrec Tenrecidae tense tenseless tenselessness tensely tenseness tensibility tensible tensibleness tensibly tensify tensile tensilely tensileness tensility tensimeter tensiometer tension tensional tensionless tensity tensive tenson tensor tent tentability tentable tentacle tentacled tentaclelike tentacula tentacular Tentaculata tentaculate tentaculated Tentaculifera tentaculite Tentaculites Tentaculitidae tentaculocyst tentaculoid tentaculum tentage tentamen tentation tentative tentatively tentativeness tented tenter tenterbelly tenterer tenterhook tentful tenth tenthly tenthmeter tenthredinid Tenthredinidae tenthredinoid Tenthredinoidea Tenthredo tentiform tentigo tentillum tention tentless tentlet tentlike tentmaker tentmaking tentmate tentorial tentorium tenture tentwards tentwise tentwork tentwort tenty tenuate tenues tenuicostate tenuifasciate tenuiflorous tenuifolious tenuious tenuiroster tenuirostral tenuirostrate Tenuirostres tenuis tenuistriate tenuity tenuous tenuously tenuousness tenure tenurial tenurially teocalli teopan teosinte Teotihuacan tepache tepal Tepanec Tepecano tepee tepefaction tepefy Tepehua Tepehuane tepetate Tephillah tephillin tephramancy tephrite tephritic tephroite tephromalacia tephromyelitic Tephrosia tephrosis tepid tepidarium tepidity tepidly tepidness tepomporize teponaztli tepor tequila Tequistlateca Tequistlatecan tera teraglin terakihi teramorphous terap teraphim teras teratical teratism teratoblastoma teratogenesis teratogenetic teratogenic teratogenous teratogeny teratoid teratological teratologist teratology teratoma teratomatous teratoscopy teratosis terbia terbic terbium tercel tercelet tercentenarian tercentenarize tercentenary tercentennial tercer terceron tercet terchloride tercia tercine tercio terdiurnal terebate terebella terebellid Terebellidae terebelloid terebellum terebene terebenic terebenthene terebic terebilic terebinic terebinth Terebinthaceae terebinthial terebinthian terebinthic terebinthina terebinthinate terebinthine terebinthinous Terebinthus terebra terebral terebrant Terebrantia terebrate terebration Terebratula terebratular terebratulid Terebratulidae terebratuliform terebratuline terebratulite terebratuloid Terebridae Teredinidae teredo terek Terence Terentian terephthalate terephthalic Teresa Teresian Teresina terete teretial tereticaudate teretifolious teretipronator teretiscapular teretiscapularis teretish tereu Tereus terfez Terfezia Terfeziaceae tergal tergant tergeminate tergeminous tergiferous tergite tergitic tergiversant tergiversate tergiversation tergiversator tergiversatory tergiverse tergolateral tergum Teri Teriann terlinguaite term terma termagancy Termagant termagant termagantish termagantism termagantly termage termatic termen termer Termes termillenary termin terminability terminable terminableness terminably terminal Terminalia Terminaliaceae terminalization terminalized terminally terminant terminate termination terminational terminative terminatively terminator terminatory termine terminer termini terminine terminism terminist terministic terminize termino terminological terminologically terminologist terminology terminus termital termitarium termitary termite termitic termitid Termitidae termitophagous termitophile termitophilous termless termlessly termlessness termly termolecular termon termor termtime tern terna ternal ternar ternariant ternarious ternary ternate ternately ternatipinnate ternatisect ternatopinnate terne terneplate ternery ternion ternize ternlet Ternstroemia Ternstroemiaceae teroxide terp terpadiene terpane terpene terpeneless terphenyl terpilene terpin terpine terpinene terpineol terpinol terpinolene terpodion Terpsichore terpsichoreal terpsichoreally Terpsichorean terpsichorean Terraba terrace terraceous terracer terracette terracewards terracewise terracework terraciform terracing terraculture terraefilial terraefilian terrage terrain terral terramara terramare Terrance terrane terranean terraneous Terrapene terrapin terraquean terraqueous terraqueousness terrar terrarium terrazzo terrella terremotive Terrence terrene terrenely terreneness terreplein terrestrial terrestrialism terrestriality terrestrialize terrestrially terrestrialness terrestricity terrestrious terret terreted Terri terribility terrible terribleness terribly terricole terricoline terricolous terrier terrierlike terrific terrifical terrifically terrification terrificly terrificness terrifiedly terrifier terrify terrifying terrifyingly terrigenous terrine Territelae territelarian territorial territorialism territorialist territoriality territorialization territorialize territorially territorian territoried territory terron terror terrorful terrorific terrorism terrorist terroristic terroristical terrorization terrorize terrorizer terrorless terrorproof terrorsome Terry terry terse tersely terseness tersion tersulphate tersulphide tersulphuret tertenant tertia tertial tertian tertiana tertianship tertiarian tertiary tertiate tertius terton tertrinal Tertullianism Tertullianist teruncius terutero Teruyuki tervalence tervalency tervalent tervariant tervee terzetto terzina terzo tesack tesarovitch teschenite teschermacherite teskere teskeria Tess tessara tessarace tessaraconter tessaradecad tessaraglot tessaraphthong tessarescaedecahedron tessel tessella tessellar tessellate tessellated tessellation tessera tesseract tesseradecade tesseraic tesseral Tesserants tesserarian tesserate tesserated tesseratomic tesseratomy tessular test testa testable Testacea testacean testaceography testaceology testaceous testaceousness testacy testament testamental testamentally testamentalness testamentarily testamentary testamentate testamentation testamentum testamur testar testata testate testation testator testatorship testatory testatrices testatrix testatum teste tested testee tester testes testibrachial testibrachium testicardinate testicardine Testicardines testicle testicond testicular testiculate testiculated testiere testificate testification testificator testificatory testifier testify testily testimonial testimonialist testimonialization testimonialize testimonializer testimonium testimony testiness testing testingly testis teston testone testoon testor testosterone testril testudinal Testudinaria testudinarious Testudinata testudinate testudinated testudineal testudineous Testudinidae testudinous testudo testy Tesuque tetanic tetanical tetanically tetaniform tetanigenous tetanilla tetanine tetanism tetanization tetanize tetanoid tetanolysin tetanomotor tetanospasmin tetanotoxin tetanus tetany tetarcone tetarconid tetard tetartemorion tetartocone tetartoconid tetartohedral tetartohedrally tetartohedrism tetartohedron tetartoid tetartosymmetry tetch tetchy tete tetel teterrimous teth tethelin tether tetherball tethery tethydan Tethys Teton tetra tetraamylose tetrabasic tetrabasicity Tetrabelodon tetrabelodont tetrabiblos tetraborate tetraboric tetrabrach tetrabranch Tetrabranchia tetrabranchiate tetrabromid tetrabromide tetrabromo tetrabromoethane tetracadactylity tetracarboxylate tetracarboxylic tetracarpellary tetraceratous tetracerous Tetracerus tetrachical tetrachlorid tetrachloride tetrachloro tetrachloroethane tetrachloroethylene tetrachloromethane tetrachord tetrachordal tetrachordon tetrachoric tetrachotomous tetrachromatic tetrachromic tetrachronous tetracid tetracoccous tetracoccus tetracolic tetracolon tetracoral Tetracoralla tetracoralline tetracosane tetract tetractinal tetractine tetractinellid Tetractinellida tetractinellidan tetractinelline tetractinose tetracyclic tetrad tetradactyl tetradactylous tetradactyly tetradarchy tetradecane tetradecanoic tetradecapod Tetradecapoda tetradecapodan tetradecapodous tetradecyl Tetradesmus tetradiapason tetradic Tetradite tetradrachma tetradrachmal tetradrachmon tetradymite Tetradynamia tetradynamian tetradynamious tetradynamous tetraedron tetraedrum tetraethylsilane tetrafluoride tetrafolious tetragamy tetragenous tetraglot tetraglottic tetragon tetragonal tetragonally tetragonalness Tetragonia Tetragoniaceae tetragonidium tetragonous tetragonus tetragram tetragrammatic Tetragrammaton tetragrammatonic tetragyn Tetragynia tetragynian tetragynous tetrahedral tetrahedrally tetrahedric tetrahedrite tetrahedroid tetrahedron tetrahexahedral tetrahexahedron tetrahydrate tetrahydrated tetrahydric tetrahydride tetrahydro tetrahydroxy tetraiodid tetraiodide tetraiodo tetraiodophenolphthalein tetrakaidecahedron tetraketone tetrakisazo tetrakishexahedron tetralemma Tetralin tetralogic tetralogue tetralogy tetralophodont tetramastia tetramastigote Tetramera tetrameral tetrameralian tetrameric tetramerism tetramerous tetrameter tetramethyl tetramethylammonium tetramethylene tetramethylium tetramin tetramine tetrammine tetramorph tetramorphic tetramorphism tetramorphous tetrander Tetrandria tetrandrian tetrandrous tetrane tetranitrate tetranitro tetranitroaniline tetranuclear Tetranychus Tetrao Tetraodon tetraodont Tetraodontidae tetraonid Tetraonidae Tetraoninae tetraonine Tetrapanax tetrapartite tetrapetalous tetraphalangeate tetrapharmacal tetrapharmacon tetraphenol tetraphony tetraphosphate tetraphyllous tetrapla tetraplegia tetrapleuron tetraploid tetraploidic tetraploidy tetraplous Tetrapneumona Tetrapneumones tetrapneumonian tetrapneumonous tetrapod Tetrapoda tetrapodic tetrapody tetrapolar tetrapolis tetrapolitan tetrapous tetraprostyle tetrapteran tetrapteron tetrapterous tetraptote Tetrapturus tetraptych tetrapylon tetrapyramid tetrapyrenous tetraquetrous tetrarch tetrarchate tetrarchic tetrarchy tetrasaccharide tetrasalicylide tetraselenodont tetraseme tetrasemic tetrasepalous tetraskelion tetrasome tetrasomic tetrasomy tetraspermal tetraspermatous tetraspermous tetraspheric tetrasporange tetrasporangiate tetrasporangium tetraspore tetrasporic tetrasporiferous tetrasporous tetraster tetrastich tetrastichal tetrastichic Tetrastichidae tetrastichous Tetrastichus tetrastoon tetrastyle tetrastylic tetrastylos tetrastylous tetrasubstituted tetrasubstitution tetrasulphide tetrasyllabic tetrasyllable tetrasymmetry tetrathecal tetratheism tetratheite tetrathionates tetrathionic tetratomic tetratone tetravalence tetravalency tetravalent tetraxial tetraxon Tetraxonia tetraxonian tetraxonid Tetraxonida tetrazane tetrazene tetrazin tetrazine tetrazo tetrazole tetrazolium tetrazolyl tetrazone tetrazotization tetrazotize tetrazyl tetremimeral tetrevangelium tetric tetrical tetricity tetricous tetrigid Tetrigidae tetriodide Tetrix tetrobol tetrobolon tetrode Tetrodon tetrodont Tetrodontidae tetrole tetrolic tetronic tetronymal tetrose tetroxalate tetroxide tetrsyllabical tetryl tetrylene tetter tetterish tetterous tetterwort tettery Tettigidae tettigoniid Tettigoniidae tettix Tetum Teucer Teucri Teucrian teucrin Teucrium teufit teuk Teutolatry Teutomania Teutomaniac Teuton Teutondom Teutonesque Teutonia Teutonic Teutonically Teutonicism Teutonism Teutonist Teutonity Teutonization Teutonize Teutonomania Teutonophobe Teutonophobia Teutophil Teutophile Teutophilism Teutophobe Teutophobia Teutophobism teviss tew Tewa tewel tewer tewit tewly tewsome Texan Texas Texcocan texguino text textarian textbook textbookless textiferous textile textilist textlet textman textorial textrine textual textualism textualist textuality textually textuarist textuary textural texturally texture textureless tez Tezcatlipoca Tezcatzoncatl Tezcucan tezkere th tha thack thacker Thackerayan Thackerayana Thackerayesque thackless Thad Thai Thais thakur thakurate thalamencephalic thalamencephalon thalami thalamic Thalamiflorae thalamifloral thalamiflorous thalamite thalamium thalamocele thalamocoele thalamocortical thalamocrural thalamolenticular thalamomammillary thalamopeduncular Thalamophora thalamotegmental thalamotomy thalamus Thalarctos thalassal Thalassarctos thalassian thalassic thalassinid Thalassinidea thalassinidian thalassinoid thalassiophyte thalassiophytous thalasso Thalassochelys thalassocracy thalassocrat thalassographer thalassographic thalassographical thalassography thalassometer thalassophilous thalassophobia thalassotherapy thalattology thalenite thaler Thalesia Thalesian Thalessa Thalia Thaliacea thaliacean Thalian Thaliard Thalictrum thalli thallic thalliferous thalliform thalline thallious thallium thallochlore thallodal thallogen thallogenic thallogenous thalloid thallome Thallophyta thallophyte thallophytic thallose thallous thallus thalposis thalpotic thalthan thameng Thamesis Thamnidium thamnium thamnophile Thamnophilinae thamnophiline Thamnophilus Thamnophis Thamudean Thamudene Thamudic thamuria Thamus Thamyras than thana thanadar thanage thanan thanatism thanatist thanatobiologic thanatognomonic thanatographer thanatography thanatoid thanatological thanatologist thanatology thanatomantic thanatometer thanatophidia thanatophidian thanatophobe thanatophobia thanatophobiac thanatophoby thanatopsis Thanatos thanatosis thanatotic thanatousia thane thanedom thanehood thaneland thaneship thank thankee thanker thankful thankfully thankfulness thankless thanklessly thanklessness thanks thanksgiver thanksgiving thankworthily thankworthiness thankworthy thapes Thapsia thapsia thar Tharen tharf tharfcake Thargelion tharginyah tharm Thasian Thaspium that thatch thatcher thatching thatchless thatchwood thatchwork thatchy thatn thatness thats thaught Thaumantian Thaumantias thaumasite thaumatogeny thaumatography thaumatolatry thaumatology thaumatrope thaumatropical thaumaturge thaumaturgia thaumaturgic thaumaturgical thaumaturgics thaumaturgism thaumaturgist thaumaturgy thaumoscopic thave thaw thawer thawless thawn thawy The the Thea Theaceae theaceous theah theandric theanthropic theanthropical theanthropism theanthropist theanthropology theanthropophagy theanthropos theanthroposophy theanthropy thearchic thearchy theasum theat theater theatergoer theatergoing theaterless theaterlike theaterward theaterwards theaterwise Theatine theatral theatric theatricable theatrical theatricalism theatricality theatricalization theatricalize theatrically theatricalness theatricals theatrician theatricism theatricize theatrics theatrize theatrocracy theatrograph theatromania theatromaniac theatron theatrophile theatrophobia theatrophone theatrophonic theatropolis theatroscope theatry theave theb Thebaic Thebaid thebaine Thebais thebaism Theban Thebesian theca thecae thecal Thecamoebae thecaphore thecasporal thecaspore thecaspored thecasporous Thecata thecate thecia thecitis thecium Thecla thecla theclan thecodont thecoglossate thecoid Thecoidea Thecophora Thecosomata thecosomatous thee theek theeker theelin theelol Theemim theer theet theetsee theezan theft theftbote theftdom theftless theftproof theftuous theftuously thegether thegidder thegither thegn thegndom thegnhood thegnland thegnlike thegnly thegnship thegnworthy theiform Theileria theine theinism their theirn theirs theirselves theirsens theism theist theistic theistical theistically thelalgia Thelemite thelemite Thelephora Thelephoraceae Theligonaceae theligonaceous Theligonum thelitis thelium Thelodontidae Thelodus theloncus thelorrhagia Thelphusa thelphusian Thelphusidae thelyblast thelyblastic thelyotokous thelyotoky Thelyphonidae Thelyphonus thelyplasty thelytocia thelytoky thelytonic them thema themata thematic thematical thematically thematist theme themeless themelet themer Themis themis Themistian themsel themselves then thenabouts thenadays thenal thenar thenardite thence thenceafter thenceforth thenceforward thenceforwards thencefrom thenceward thenness Theo theoanthropomorphic theoanthropomorphism theoastrological Theobald Theobroma theobromic theobromine theocentric theocentricism theocentrism theochristic theocollectivism theocollectivist theocracy theocrasia theocrasical theocrasy theocrat theocratic theocratical theocratically theocratist Theocritan Theocritean theodemocracy theodicaea theodicean theodicy theodidact theodolite theodolitic Theodora Theodore Theodoric Theodosia Theodosian Theodotian theodrama theody theogamy theogeological theognostic theogonal theogonic theogonism theogonist theogony theohuman theokrasia theoktonic theoktony theolatrous theolatry theolepsy theoleptic theologal theologaster theologastric theologate theologeion theologer theologi theologian theologic theological theologically theologician theologicoastronomical theologicoethical theologicohistorical theologicometaphysical theologicomilitary theologicomoral theologiconatural theologicopolitical theologics theologism theologist theologium theologization theologize theologizer theologoumena theologoumenon theologue theologus theology theomachia theomachist theomachy theomammomist theomancy theomania theomaniac theomantic theomastix theomicrist theomisanthropist theomorphic theomorphism theomorphize theomythologer theomythology theonomy theopantism Theopaschist Theopaschitally Theopaschite Theopaschitic Theopaschitism theopathetic theopathic theopathy theophagic theophagite theophagous theophagy Theophania theophania theophanic theophanism theophanous theophany Theophila theophilanthrope theophilanthropic theophilanthropism theophilanthropist theophilanthropy theophile theophilist theophilosophic Theophilus theophobia theophoric theophorous Theophrastaceae theophrastaceous Theophrastan Theophrastean theophylline theophysical theopneust theopneusted theopneustia theopneustic theopneusty theopolitician theopolitics theopolity theopsychism theorbist theorbo theorem theorematic theorematical theorematically theorematist theoremic theoretic theoretical theoreticalism theoretically theoretician theoreticopractical theoretics theoria theoriai theoric theorical theorically theorician theoricon theorics theorism theorist theorization theorize theorizer theorum theory theoryless theorymonger theosoph theosopheme theosophic theosophical theosophically theosophism theosophist theosophistic theosophistical theosophize theosophy theotechnic theotechnist theotechny theoteleological theoteleology theotherapy Theotokos theow theowdom theowman Theraean theralite therapeusis Therapeutae Therapeutic therapeutic therapeutical therapeutically therapeutics therapeutism therapeutist Theraphosa theraphose theraphosid Theraphosidae theraphosoid therapist therapsid Therapsida therapy therblig there thereabouts thereabove thereacross thereafter thereafterward thereagainst thereamong thereamongst thereanent thereanents therearound thereas thereat thereaway thereaways therebeside therebesides therebetween thereby thereckly therefor therefore therefrom therehence therein thereinafter thereinbefore thereinto therence thereness thereof thereoid thereologist thereology thereon thereout thereover thereright theres Theresa therese therethrough theretill thereto theretofore theretoward thereunder thereuntil thereunto thereup thereupon Thereva therevid Therevidae therewhile therewith therewithal therewithin Theria theriac theriaca theriacal therial therianthropic therianthropism theriatrics theridiid Theridiidae Theridion theriodic theriodont Theriodonta Theriodontia theriolatry theriomancy theriomaniac theriomimicry theriomorph theriomorphic theriomorphism theriomorphosis theriomorphous theriotheism theriotrophical theriozoic therm thermacogenesis thermae thermal thermalgesia thermality thermally thermanalgesia thermanesthesia thermantic thermantidote thermatologic thermatologist thermatology thermesthesia thermesthesiometer thermetograph thermetrograph thermic thermically Thermidorian thermion thermionic thermionically thermionics thermistor Thermit thermit thermite thermo thermoammeter thermoanalgesia thermoanesthesia thermobarograph thermobarometer thermobattery thermocautery thermochemic thermochemical thermochemically thermochemist thermochemistry thermochroic thermochrosy thermocline thermocouple thermocurrent thermodiffusion thermoduric thermodynamic thermodynamical thermodynamically thermodynamician thermodynamicist thermodynamics thermodynamist thermoelectric thermoelectrical thermoelectrically thermoelectricity thermoelectrometer thermoelectromotive thermoelement thermoesthesia thermoexcitory thermogalvanometer thermogen thermogenerator thermogenesis thermogenetic thermogenic thermogenous thermogeny thermogeographical thermogeography thermogram thermograph thermography thermohyperesthesia thermojunction thermokinematics thermolabile thermolability thermological thermology thermoluminescence thermoluminescent thermolysis thermolytic thermolyze thermomagnetic thermomagnetism thermometamorphic thermometamorphism thermometer thermometerize thermometric thermometrical thermometrically thermometrograph thermometry thermomotive thermomotor thermomultiplier thermonastic thermonasty thermonatrite thermoneurosis thermoneutrality thermonous thermonuclear thermopair thermopalpation thermopenetration thermoperiod thermoperiodic thermoperiodicity thermoperiodism thermophile thermophilic thermophilous thermophobous thermophone thermophore thermophosphor thermophosphorescence thermopile thermoplastic thermoplasticity thermoplegia thermopleion thermopolymerization thermopolypnea thermopolypneic Thermopsis thermoradiotherapy thermoreduction thermoregulation thermoregulator thermoresistance thermoresistant thermos thermoscope thermoscopic thermoscopical thermoscopically thermosetting thermosiphon thermostability thermostable thermostat thermostatic thermostatically thermostatics thermostimulation thermosynthesis thermosystaltic thermosystaltism thermotactic thermotank thermotaxic thermotaxis thermotelephone thermotensile thermotension thermotherapeutics thermotherapy thermotic thermotical thermotically thermotics thermotropic thermotropism thermotropy thermotype thermotypic thermotypy thermovoltaic therodont theroid therolatry therologic therological therologist therology Theromora Theromores theromorph Theromorpha theromorphia theromorphic theromorphism theromorphological theromorphology theromorphous Theron theropod Theropoda theropodous thersitean Thersites thersitical thesauri thesaurus these Thesean theses Theseum Theseus thesial thesicle thesis Thesium Thesmophoria Thesmophorian Thesmophoric thesmothetae thesmothete thesmothetes thesocyte Thespesia Thespesius Thespian Thessalian Thessalonian thestreen theta thetch thetic thetical thetically thetics thetin thetine Thetis theurgic theurgical theurgically theurgist theurgy Thevetia thevetin thew thewed thewless thewness thewy they theyll theyre thiacetic thiadiazole thialdine thiamide thiamin thiamine thianthrene thiasi thiasine thiasite thiasoi thiasos thiasote thiasus thiazine thiazole thiazoline thick thickbrained thicken thickener thickening thicket thicketed thicketful thickety thickhead thickheaded thickheadedly thickheadedness thickish thickleaf thicklips thickly thickneck thickness thicknessing thickset thickskin thickskull thickskulled thickwind thickwit thief thiefcraft thiefdom thiefland thiefmaker thiefmaking thiefproof thieftaker thiefwise Thielavia Thielaviopsis thienone thienyl Thierry thievable thieve thieveless thiever thievery thieving thievingly thievish thievishly thievishness thig thigger thigging thigh thighbone thighed thight thightness thigmonegative thigmopositive thigmotactic thigmotactically thigmotaxis thigmotropic thigmotropically thigmotropism Thilanottine thilk thill thiller thilly thimber thimble thimbleberry thimbled thimbleflower thimbleful thimblelike thimblemaker thimblemaking thimbleman thimblerig thimblerigger thimbleriggery thimblerigging thimbleweed thin thinbrained thine thing thingal thingamabob thinghood thinginess thingish thingless thinglet thinglike thinglikeness thingliness thingly thingman thingness thingstead thingum thingumajig thingumbob thingummy thingy Think think thinkable thinkableness thinkably thinker thinkful thinking thinkingly thinkingpart thinkling thinly thinner thinness thinning thinnish Thinocoridae Thinocorus thinolite thio thioacetal thioacetic thioalcohol thioaldehyde thioamide thioantimonate thioantimoniate thioantimonious thioantimonite thioarsenate thioarseniate thioarsenic thioarsenious thioarsenite Thiobacillus Thiobacteria thiobacteria Thiobacteriales thiobismuthite thiocarbamic thiocarbamide thiocarbamyl thiocarbanilide thiocarbimide thiocarbonate thiocarbonic thiocarbonyl thiochloride thiochrome thiocresol thiocyanate thiocyanation thiocyanic thiocyanide thiocyano thiocyanogen thiodiazole thiodiphenylamine thiofuran thiofurane thiofurfuran thiofurfurane thiogycolic thiohydrate thiohydrolysis thiohydrolyze thioindigo thioketone thiol thiolacetic thiolactic thiolic thionamic thionaphthene thionate thionation thioneine thionic thionine thionitrite thionium thionobenzoic thionthiolic thionurate thionyl thionylamine thiophen thiophene thiophenic thiophenol thiophosgene thiophosphate thiophosphite thiophosphoric thiophosphoryl thiophthene thiopyran thioresorcinol thiosinamine Thiospira thiostannate thiostannic thiostannite thiostannous thiosulphate thiosulphonic thiosulphuric Thiothrix thiotolene thiotungstate thiotungstic thiouracil thiourea thiourethan thiourethane thioxene thiozone thiozonide thir third thirdborough thirdings thirdling thirdly thirdness thirdsman thirl thirlage thirling thirst thirster thirstful thirstily thirstiness thirsting thirstingly thirstland thirstle thirstless thirstlessness thirstproof thirsty thirt thirteen thirteener thirteenfold thirteenth thirteenthly thirtieth thirty thirtyfold thirtyish this thishow thislike thisn thisness thissen thistle thistlebird thistled thistledown thistlelike thistleproof thistlery thistlish thistly thiswise thither thitherto thitherward thitsiol thiuram thivel thixle thixolabile thixotropic thixotropy Thlaspi Thlingchadinne Thlinget thlipsis Tho tho thob thocht thof thoft thoftfellow thoke thokish thole tholeiite tholepin tholi tholoi tholos tholus Thomaean Thomas Thomasa Thomasine thomasing Thomasite thomisid Thomisidae Thomism Thomist Thomistic Thomistical Thomite Thomomys thomsenolite Thomsonian Thomsonianism thomsonite thon thonder Thondracians Thondraki Thondrakians thone thong Thonga thonged thongman thongy thoo thooid thoom thoracalgia thoracaorta thoracectomy thoracentesis thoraces thoracic Thoracica thoracical thoracicoabdominal thoracicoacromial thoracicohumeral thoracicolumbar thoraciform thoracispinal thoracoabdominal thoracoacromial thoracobronchotomy thoracoceloschisis thoracocentesis thoracocyllosis thoracocyrtosis thoracodelphus thoracodidymus thoracodorsal thoracodynia thoracogastroschisis thoracograph thoracohumeral thoracolumbar thoracolysis thoracomelus thoracometer thoracometry thoracomyodynia thoracopagus thoracoplasty thoracoschisis thoracoscope thoracoscopy Thoracostei thoracostenosis thoracostomy Thoracostraca thoracostracan thoracostracous thoracotomy thoral thorascope thorax thore thoria thorianite thoriate thoric thoriferous thorina thorite thorium thorn thornback thornbill thornbush thorned thornen thornhead thornily thorniness thornless thornlessness thornlet thornlike thornproof thornstone thorntail thorny thoro thorocopagous thorogummite thoron thorough Thoroughbred thoroughbred thoroughbredness thoroughfare thoroughfarer thoroughfaresome thoroughfoot thoroughgoing thoroughgoingly thoroughgoingness thoroughgrowth thoroughly thoroughness thoroughpaced thoroughpin thoroughsped thoroughstem thoroughstitch thoroughstitched thoroughwax thoroughwort thorp thort thorter thortveitite Thos Those those thou though thought thoughted thoughten thoughtful thoughtfully thoughtfulness thoughtkin thoughtless thoughtlessly thoughtlessness thoughtlet thoughtness thoughtsick thoughty thousand thousandfold thousandfoldly thousandth thousandweight thouse thow thowel thowless thowt Thraces Thracian thrack thraep thrail thrain thrall thrallborn thralldom thram thrammle thrang thrangity thranite thranitic thrap thrapple thrash thrashel thrasher thrasherman thrashing thrasonic thrasonical thrasonically thrast Thraupidae thrave thraver thraw thrawcrook thrawn thrawneen Thrax thread threadbare threadbareness threadbarity threaded threaden threader threadfin threadfish threadflower threadfoot threadiness threadle threadless threadlet threadlike threadmaker threadmaking threadway threadweed threadworm thready threap threaper threat threaten threatenable threatener threatening threateningly threatful threatfully threatless threatproof three threefold threefolded threefoldedness threefoldly threefoldness threeling threeness threepence threepenny threepennyworth threescore threesome thremmatology threne threnetic threnetical threnode threnodial threnodian threnodic threnodical threnodist threnody threnos threonin threonine threose threpsology threptic thresh threshel thresher thresherman threshingtime threshold Threskiornithidae Threskiornithinae threw thribble thrice thricecock thridacium thrift thriftbox thriftily thriftiness thriftless thriftlessly thriftlessness thriftlike thrifty thrill thriller thrillful thrillfully thrilling thrillingly thrillingness thrillproof thrillsome thrilly thrimble thrimp Thrinax thring thrinter thrioboly thrip thripel Thripidae thripple thrips thrive thriveless thriven thriver thriving thrivingly thrivingness thro throat throatal throatband throated throatful throatily throatiness throating throatlash throatlatch throatless throatlet throatroot throatstrap throatwort throaty throb throbber throbbingly throbless throck throdden throddy throe thrombase thrombin thromboangiitis thromboarteritis thrombocyst thrombocyte thrombocytopenia thrombogen thrombogenic thromboid thrombokinase thrombolymphangitis thrombopenia thrombophlebitis thromboplastic thromboplastin thrombose thrombosis thrombostasis thrombotic thrombus thronal throne thronedom throneless thronelet thronelike throneward throng thronger throngful throngingly thronize thropple throstle throstlelike throttle throttler throttling throttlingly throu throuch throucht through throughbear throughbred throughcome throughgang throughganging throughgoing throughgrow throughknow throughout throughput throve throw throwaway throwback throwdown thrower throwing thrown throwoff throwout throwster throwwort thrum thrummer thrummers thrummy thrumwort thrush thrushel thrushlike thrushy thrust thruster thrustful thrustfulness thrusting thrustings thrutch thrutchings Thruthvang thruv thrymsa Thryonomys Thuan Thuban Thucydidean thud thudding thuddingly thug thugdom thuggee thuggeeism thuggery thuggess thuggish thuggism Thuidium Thuja thujene thujin thujone Thujopsis thujyl Thule thulia thulir thulite thulium thulr thuluth thumb thumbbird thumbed thumber thumbkin thumble thumbless thumblike thumbmark thumbnail thumbpiece thumbprint thumbrope thumbscrew thumbstall thumbstring thumbtack thumby thumlungur thump thumper thumping thumpingly Thunar Thunbergia thunbergilene thunder thunderation thunderball thunderbearer thunderbearing thunderbird thunderblast thunderbolt thunderburst thunderclap thundercloud thundercrack thunderer thunderfish thunderflower thunderful thunderhead thunderheaded thundering thunderingly thunderless thunderlike thunderous thunderously thunderousness thunderpeal thunderplump thunderproof thundershower thundersmite thundersquall thunderstick thunderstone thunderstorm thunderstrike thunderstroke thunderstruck thunderwood thunderworm thunderwort thundery thundrous thundrously thung thunge Thunnidae Thunnus Thunor thuoc Thurberia thurible thuribuler thuribulum thurifer thuriferous thurificate thurificati thurification thurify Thuringian thuringite Thurio thurl thurm thurmus Thurnia Thurniaceae thurrock Thursday thurse thurt thus thusgate Thushi thusly thusness thuswise thutter Thuyopsis thwack thwacker thwacking thwackingly thwackstave thwaite thwart thwartedly thwarteous thwarter thwarting thwartingly thwartly thwartman thwartness thwartover thwartsaw thwartship thwartships thwartways thwartwise thwite thwittle thy Thyestean Thyestes thyine thylacine thylacitis Thylacoleo Thylacynus thymacetin Thymallidae Thymallus thymate thyme thymectomize thymectomy thymegol Thymelaea Thymelaeaceae thymelaeaceous Thymelaeales thymelcosis thymele thymelic thymelical thymelici thymene thymetic thymic thymicolymphatic thymine thymiosis thymitis thymocyte thymogenic thymol thymolate thymolize thymolphthalein thymolsulphonephthalein thymoma thymonucleic thymopathy thymoprivic thymoprivous thymopsyche thymoquinone thymotactic thymotic Thymus thymus thymy thymyl thymylic thynnid Thynnidae Thyraden thyratron thyreoadenitis thyreoantitoxin thyreoarytenoid thyreoarytenoideus thyreocervical thyreocolloid Thyreocoridae thyreoepiglottic thyreogenic thyreogenous thyreoglobulin thyreoglossal thyreohyal thyreohyoid thyreoid thyreoidal thyreoideal thyreoidean thyreoidectomy thyreoiditis thyreoitis thyreolingual thyreoprotein thyreosis thyreotomy thyreotoxicosis thyreotropic thyridial Thyrididae thyridium Thyris thyrisiferous thyroadenitis thyroantitoxin thyroarytenoid thyroarytenoideus thyrocardiac thyrocele thyrocervical thyrocolloid thyrocricoid thyroepiglottic thyroepiglottidean thyrogenic thyroglobulin thyroglossal thyrohyal thyrohyoid thyrohyoidean thyroid thyroidal thyroidea thyroideal thyroidean thyroidectomize thyroidectomy thyroidism thyroiditis thyroidization thyroidless thyroidotomy thyroiodin thyrolingual thyronine thyroparathyroidectomize thyroparathyroidectomy thyroprival thyroprivia thyroprivic thyroprivous thyroprotein Thyrostraca thyrostracan thyrotherapy thyrotomy thyrotoxic thyrotoxicosis thyrotropic thyroxine thyrse thyrsiflorous thyrsiform thyrsoid thyrsoidal thyrsus Thysanocarpus thysanopter Thysanoptera thysanopteran thysanopteron thysanopterous Thysanoura thysanouran thysanourous Thysanura thysanuran thysanurian thysanuriform thysanurous thysel thyself thysen Ti ti Tiahuanacan Tiam tiang tiao tiar tiara tiaralike tiarella Tiatinagua tib Tibbie Tibbu tibby Tiberian Tiberine Tiberius tibet Tibetan tibey tibia tibiad tibiae tibial tibiale tibicinist tibiocalcanean tibiofemoral tibiofibula tibiofibular tibiometatarsal tibionavicular tibiopopliteal tibioscaphoid tibiotarsal tibiotarsus Tibouchina tibourbou tiburon Tiburtine tic tical ticca tice ticement ticer Tichodroma tichodrome tichorrhine tick tickbean tickbird tickeater ticked ticken ticker ticket ticketer ticketing ticketless ticketmonger tickey tickicide tickie ticking tickle tickleback ticklebrain tickled ticklely ticklenburg tickleness tickleproof tickler ticklesome tickless tickleweed tickling ticklingly ticklish ticklishly ticklishness tickly tickney tickproof tickseed tickseeded ticktack ticktacker ticktacktoe ticktick ticktock tickweed ticky ticul Ticuna Ticunan tid tidal tidally tidbit tiddle tiddledywinks tiddler tiddley tiddling tiddlywink tiddlywinking tiddy tide tided tideful tidehead tideland tideless tidelessness tidelike tidely tidemaker tidemaking tidemark tiderace tidesman tidesurveyor Tideswell tidewaiter tidewaitership tideward tidewater tideway tidiable tidily tidiness tiding tidingless tidings tidley tidological tidology tidy tidyism tidytips tie tieback tied Tiefenthal tiemaker tiemaking tiemannite tien tiepin tier tierce tierced tierceron tiered tierer tierlike tiersman tietick tiewig tiewigged tiff tiffany tiffanyite tiffie tiffin tiffish tiffle tiffy tifinagh tift tifter tig tige tigella tigellate tigelle tigellum tigellus tiger tigerbird tigereye tigerflower tigerfoot tigerhearted tigerhood tigerish tigerishly tigerishness tigerism tigerkin tigerlike tigerling tigerly tigernut tigerproof tigerwood tigery Tigger tigger tight tighten tightener tightfisted tightish tightly tightness tightrope tights tightwad tightwire tiglaldehyde tiglic tiglinic tignum Tigrai Tigre Tigrean tigress tigresslike Tigridia Tigrina tigrine Tigris tigroid tigrolysis tigrolytic tigtag Tigua Tigurine Tiki tikitiki tikka tikker tiklin tikolosh tikor tikur til tilaite tilaka tilasite tilbury Tilda tilde tile tiled tilefish tilelike tilemaker tilemaking tiler tileroot tilery tileseed tilestone tileways tilework tileworks tilewright tileyard Tilia Tiliaceae tiliaceous tilikum tiling till tillable Tillaea Tillaeastrum tillage Tillamook Tillandsia tiller tillering tillerless tillerman Tilletia Tilletiaceae tilletiaceous tilley tillite tillodont Tillodontia Tillodontidae tillot tillotter tilly tilmus tilpah Tilsit tilt tiltable tiltboard tilter tilth tilting tiltlike tiltmaker tiltmaking tiltup tilty tiltyard tilyer Tim timable Timaeus Timalia Timaliidae Timaliinae timaliine timaline Timani timar timarau timawa timazite timbal timbale timbang timbe timber timbered timberer timberhead timbering timberjack timberland timberless timberlike timberling timberman timbermonger timbern timbersome timbertuned timberwood timberwork timberwright timbery timberyard Timbira timbo timbre timbrel timbreled timbreler timbrologist timbrology timbromania timbromaniac timbromanist timbrophilic timbrophilism timbrophilist timbrophily time timeable timecard timed timeful timefully timefulness timekeep timekeeper timekeepership timeless timelessly timelessness Timelia Timeliidae timeliine timelily timeliness timeling timely timenoguy timeous timeously timepiece timepleaser timeproof timer times timesaver timesaving timeserver timeserving timeservingness timetable timetaker timetaking timeward timework timeworker timeworn Timias timid timidity timidly timidness timing timish timist Timne Timo timocracy timocratic timocratical Timon timon timoneer Timonian Timonism Timonist Timonize timor Timorese timorous timorously timorousness Timote Timotean Timothean Timothy timothy timpani timpanist timpano Timucua Timucuan Timuquan Timuquanan tin Tina Tinamidae tinamine tinamou tinampipi tincal tinchel tinchill tinclad tinct tinction tinctorial tinctorially tinctorious tinctumutation tincture tind tindal tindalo tinder tinderbox tindered tinderish tinderlike tinderous tindery tine tinea tineal tinean tined tinegrass tineid Tineidae Tineina tineine tineman tineoid Tineoidea tinetare tinety tineweed tinful Ting ting tinge tinged tinger Tinggian tingi tingibility tingible tingid Tingidae Tingis tingitid Tingitidae tinglass tingle tingler tingletangle tingling tinglingly tinglish tingly tingtang tinguaite tinguaitic Tinguian tinguy tinhorn tinhouse tinily tininess tining tink tinker tinkerbird tinkerdom tinkerer tinkerlike tinkerly tinkershire tinkershue tinkerwise tinkle tinkler tinklerman tinkling tinklingly tinkly tinlet tinlike tinman Tinne tinned tinner tinnery tinnet Tinni tinnified tinnily tinniness tinning tinnitus tinnock tinny Tino Tinoceras tinosa tinsel tinsellike tinselly tinselmaker tinselmaking tinselry tinselweaver tinselwork tinsman tinsmith tinsmithing tinsmithy tinstone tinstuff tint tinta tintage tintamarre tintarron tinted tinter tintie tintiness tinting tintingly tintinnabula tintinnabulant tintinnabular tintinnabulary tintinnabulate tintinnabulation tintinnabulatory tintinnabulism tintinnabulist tintinnabulous tintinnabulum tintist tintless tintometer tintometric tintometry tinty tintype tintyper tinwald tinware tinwoman tinwork tinworker tinworking tiny tinzenite Tionontates Tionontati Tiou tip tipburn tipcart tipcat tipe tipful tiphead Tiphia Tiphiidae tipiti tiple tipless tiplet tipman tipmost tiponi tippable tipped tippee tipper tippet tipping tipple tippleman tippler tipply tipproof tippy tipsification tipsifier tipsify tipsily tipsiness tipstaff tipster tipstock tipsy tiptail tipteerer tiptilt tiptoe tiptoeing tiptoeingly tiptop tiptopness tiptopper tiptoppish tiptoppishness tiptopsome Tipula Tipularia tipulid Tipulidae tipuloid Tipuloidea tipup Tipura tirade tiralee tire tired tiredly tiredness tiredom tirehouse tireless tirelessly tirelessness tiremaid tiremaker tiremaking tireman tirer tireroom tiresmith tiresome tiresomely tiresomeness tiresomeweed tirewoman Tirhutia tiriba tiring tiringly tirl tirma tirocinium Tirolean Tirolese Tironian tirr tirralirra tirret Tirribi tirrivee tirrlie tirrwirr tirthankara Tirurai tirve tirwit tisane tisar Tishiya Tishri Tisiphone tissual tissue tissued tissueless tissuelike tissuey tisswood tiswin tit Titan titanate titanaugite Titanesque Titaness titania Titanian Titanic titanic Titanical Titanically Titanichthyidae Titanichthys titaniferous titanifluoride Titanism titanite titanitic titanium Titanlike titano titanocolumbate titanocyanide titanofluoride Titanolater Titanolatry Titanomachia Titanomachy titanomagnetite titanoniobate titanosaur Titanosaurus titanosilicate titanothere Titanotheridae Titanotherium titanous titanyl titar titbit titbitty tite titer titeration titfish tithable tithal tithe tithebook titheless tithemonger tithepayer tither titheright tithing tithingman tithingpenny tithonic tithonicity tithonographic tithonometer Tithymalopsis Tithymalus titi Titian titian Titianesque Titianic titien Tities titilate titillability titillant titillater titillating titillatingly titillation titillative titillator titillatory titivate titivation titivator titlark title titleboard titled titledom titleholder titleless titleproof titler titleship titlike titling titlist titmal titman Titmarsh Titmarshian titmouse Titoism Titoist titoki titrable titratable titrate titration titre titrimetric titrimetry titter titterel titterer tittering titteringly tittery tittie tittle tittlebat tittler tittup tittupy titty tittymouse titubancy titubant titubantly titubate titubation titular titularity titularly titulary titulation titule titulus Titurel Titus tiver Tivoli tivoli tivy Tiwaz tiza tizeur tizzy tjanting tji tjosite tlaco Tlakluit Tlapallan Tlascalan Tlingit tmema Tmesipteris tmesis to toa toad toadback toadeat toadeater toader toadery toadess toadfish toadflax toadflower toadhead toadier toadish toadless toadlet toadlike toadlikeness toadling toadpipe toadroot toadship toadstone toadstool toadstoollike toadwise toady toadyish toadyism toadyship Toag toast toastable toastee toaster toastiness toastmaster toastmastery toastmistress toasty toat toatoa Toba tobacco tobaccofied tobaccoism tobaccoite tobaccoless tobaccolike tobaccoman tobacconalian tobacconist tobacconistical tobacconize tobaccophil tobaccoroot tobaccoweed tobaccowood tobaccoy tobe Tobiah Tobias Tobikhar tobine tobira toboggan tobogganeer tobogganer tobogganist Toby toby tobyman tocalote toccata Tocharese Tocharian Tocharic Tocharish tocher tocherless tock toco Tocobaga tocodynamometer tocogenetic tocogony tocokinin tocological tocologist tocology tocome tocometer tocopherol tocororo tocsin tocusso Tod tod Toda today todayish Todd todder toddick toddite toddle toddlekins toddler toddy toddyize toddyman tode Todea Todidae Todus tody toe toeboard toecap toecapped toed toeless toelike toellite toenail toeplate Toerless toernebohmite toetoe toff toffee toffeeman toffing toffish toffy toffyman Tofieldia Toft toft tofter toftman toftstead tofu tog toga togaed togalike togata togate togated togawise together togetherhood togetheriness togetherness toggel toggery toggle toggler togless togs togt togue toher toheroa toho Tohome tohubohu tohunga toi toil toiled toiler toilet toileted toiletry toilette toiletted toiletware toilful toilfully toilinet toiling toilingly toilless toillessness toilsome toilsomely toilsomeness toilworn toise toit toitish toity Tokay tokay toke Tokelau token tokened tokenless toko tokology tokonoma tokopat tol tolamine tolan tolane tolbooth told toldo tole Toledan Toledo Toledoan tolerability tolerable tolerableness tolerablish tolerably tolerance tolerancy Tolerant tolerant tolerantism tolerantly tolerate toleration tolerationism tolerationist tolerative tolerator tolerism Toletan tolfraedic tolguacha tolidine tolite toll tollable tollage tollbooth Tollefsen toller tollery tollgate tollgatherer tollhouse tolliker tolling tollkeeper tollman tollmaster tollpenny tolltaker tolly Tolowa tolpatch tolpatchery tolsester tolsey Tolstoyan Tolstoyism Tolstoyist tolt Toltec Toltecan tolter tolu tolualdehyde toluate toluene toluic toluide toluidide toluidine toluidino toluido Toluifera tolunitrile toluol toluquinaldine tolusafranine toluyl toluylene toluylenediamine toluylic tolyl tolylene tolylenediamine Tolypeutes tolypeutine Tom Toma tomahawk tomahawker tomalley toman Tomas tomatillo tomato tomb tombac tombal tombe tombic tombless tomblet tomblike tombola tombolo tomboy tomboyful tomboyish tomboyishly tomboyishness tomboyism tombstone tomcat tomcod tome tomeful tomelet toment tomentose tomentous tomentulose tomentum tomfool tomfoolery tomfoolish tomfoolishness tomial tomin tomish Tomistoma tomium tomjohn Tomkin tomkin Tommer Tomming Tommy tommy tommybag tommycod tommyrot tomnoddy tomnoup tomogram tomographic tomography Tomopteridae Tomopteris tomorn tomorrow tomorrower tomorrowing tomorrowness tomosis Tompion tompiper tompon tomtate tomtit Tomtitmouse ton tonal tonalamatl tonalist tonalite tonalitive tonality tonally tonant tonation tondino tone toned toneless tonelessly tonelessness toneme toneproof toner tonetic tonetically tonetician tonetics tong Tonga tonga Tongan Tongas tonger tongkang tongman Tongrian tongs tongsman tongue tonguecraft tongued tonguedoughty tonguefence tonguefencer tongueflower tongueful tongueless tonguelet tonguelike tongueman tonguemanship tongueplay tongueproof tonguer tongueshot tonguesman tonguesore tonguester tonguetip tonguey tonguiness tonguing tonic tonically tonicity tonicize tonicobalsamic tonicoclonic tonicostimulant tonify tonight Tonikan tonish tonishly tonishness tonite tonitrocirrus tonitruant tonitruone tonitruous tonjon tonk Tonkawa Tonkawan tonkin Tonkinese tonlet Tonna tonnage tonneau tonneaued tonner tonnish tonnishly tonnishness tonoclonic tonogram tonograph tonological tonology tonometer tonometric tonometry tonophant tonoplast tonoscope tonotactic tonotaxis tonous tonsbergite tonsil tonsilectomy tonsilitic tonsillar tonsillary tonsillectome tonsillectomic tonsillectomize tonsillectomy tonsillith tonsillitic tonsillitis tonsillolith tonsillotome tonsillotomy tonsilomycosis tonsor tonsorial tonsurate tonsure tonsured tontine tontiner Tonto tonus Tony tony tonyhoop too toodle toodleloodle took tooken tool toolbox toolbuilder toolbuilding tooler toolhead toolholder toolholding tooling toolless toolmaker toolmaking toolman toolmark toolmarking toolplate toolroom toolsetter toolslide toolsmith toolstock toolstone toom toomly toon Toona toonwood toop toorie toorock tooroo toosh toot tooter tooth toothache toothaching toothachy toothbill toothbrush toothbrushy toothchiseled toothcomb toothcup toothdrawer toothdrawing toothed toother toothflower toothful toothill toothing toothless toothlessly toothlessness toothlet toothleted toothlike toothpick toothplate toothproof toothsome toothsomely toothsomeness toothstick toothwash toothwork toothwort toothy tootle tootler tootlish tootsy toozle toozoo top topalgia toparch toparchia toparchical toparchy topass Topatopa topaz topazfels topazine topazite topazolite topazy topcap topcast topchrome topcoat topcoating tope topectomy topee topeewallah topeng topepo toper toperdom topesthesia topflight topfull topgallant toph tophaceous tophaike Tophet tophetic tophetize tophus tophyperidrosis topi topia topiarian topiarist topiarius topiary topic topical topicality topically topinambou Topinish topknot topknotted topless toplighted toplike topline toploftical toploftily toploftiness toplofty topmaker topmaking topman topmast topmost topmostly topnotch topnotcher topo topoalgia topochemical topognosia topognosis topograph topographer topographic topographical topographically topographics topographist topographize topographometric topography topolatry topologic topological topologist topology toponarcosis toponym toponymal toponymic toponymical toponymics toponymist toponymy topophobia topophone topotactic topotaxis topotype topotypic topotypical topped topper toppiece topping toppingly toppingness topple toppler topply toppy toprail toprope tops topsail topsailite topside topsl topsman topsoil topstone topswarm Topsy topsyturn toptail topwise toque Tor tor tora torah Toraja toral toran torbanite torbanitic torbernite torc torcel torch torchbearer torchbearing torcher torchless torchlight torchlighted torchlike torchman torchon torchweed torchwood torchwort torcular torculus tordrillite tore toreador tored Torenia torero toreumatography toreumatology toreutic toreutics torfaceous torfel torgoch Torgot toric Toriest Torified torii Torilis Torinese Toriness torma tormen torment tormenta tormentable tormentation tormentative tormented tormentedly tormentful tormentil tormentilla tormenting tormentingly tormentingness tormentive tormentor tormentous tormentress tormentry tormentum tormina torminal torminous tormodont torn tornachile tornade tornadic tornado tornadoesque tornadoproof tornal tornaria tornarian tornese torney tornillo Tornit tornote tornus toro toroid toroidal torolillo Toromona Torontonian tororokombu Torosaurus torose torosity torotoro torous torpedineer Torpedinidae torpedinous torpedo torpedoer torpedoist torpedolike torpedoplane torpedoproof torpent torpescence torpescent torpid torpidity torpidly torpidness torpify torpitude torpor torporific torporize torquate torquated torque torqued torques torrefaction torrefication torrefy torrent torrentful torrentfulness torrential torrentiality torrentially torrentine torrentless torrentlike torrentuous torrentwise Torreya Torricellian torrid torridity torridly torridness Torridonian Torrubia torsade torse torsel torsibility torsigraph torsile torsimeter torsiogram torsiograph torsiometer torsion torsional torsionally torsioning torsionless torsive torsk torso torsoclusion torsometer torsoocclusion Torsten tort torta torteau torticollar torticollis torticone tortile tortility tortilla tortille tortious tortiously tortive tortoise tortoiselike Tortonian tortrices tortricid Tortricidae Tortricina tortricine tortricoid Tortricoidea Tortrix tortula Tortulaceae tortulaceous tortulous tortuose tortuosity tortuous tortuously tortuousness torturable torturableness torture tortured torturedly tortureproof torturer torturesome torturing torturingly torturous torturously toru torula torulaceous torulaform toruliform torulin toruloid torulose torulosis torulous torulus torus torve torvid torvity torvous Tory tory Torydom Toryess Toryfication Toryfy toryhillite Toryish Toryism Toryistic Toryize Toryship toryweed tosaphist tosaphoth toscanite Tosephta Tosephtas tosh toshakhana tosher toshery toshly toshnail toshy tosily Tosk Toskish toss tosser tossicated tossily tossing tossingly tossment tosspot tossup tossy tost tosticate tostication toston tosy tot total totalitarian totalitarianism totality totalization totalizator totalize totalizer totally totalness totanine Totanus totaquin totaquina totaquine totara totchka tote toteload totem totemic totemically totemism totemist totemistic totemite totemization totemy toter tother totient Totipalmatae totipalmate totipalmation totipotence totipotency totipotent totipotential totipotentiality totitive toto Totonac Totonacan Totonaco totora Totoro totquot totter totterer tottergrass tottering totteringly totterish tottery Tottie totting tottle tottlish totty tottyhead totuava totum toty totyman tou toucan toucanet Toucanid touch touchable touchableness touchback touchbell touchbox touchdown touched touchedness toucher touchhole touchily touchiness touching touchingly touchingness touchless touchline touchous touchpan touchpiece touchstone touchwood touchy Toufic toug tough toughen toughener toughhead toughhearted toughish toughly toughness tought tould toumnah Tounatea toup toupee toupeed toupet tour touraco tourbillion tourer tourette touring tourism tourist touristdom touristic touristproof touristry touristship touristy tourize tourmaline tourmalinic tourmaliniferous tourmalinization tourmalinize tourmalite tourn tournament tournamental tournant tournasin tournay tournee Tournefortia Tournefortian tourney tourneyer tourniquet tourte tousche touse touser tousle tously tousy tout touter Tovah tovar Tovaria Tovariaceae tovariaceous tovarish tow towable towage towai towan toward towardliness towardly towardness towards towboat towcock towd towel towelette toweling towelry tower towered towering toweringly towerless towerlet towerlike towerman towerproof towerwise towerwork towerwort towery towght towhead towheaded towhee towing towkay towlike towline towmast town towned townee towner townet townfaring townfolk townful towngate townhood townify towniness townish townishly townishness townist townland townless townlet townlike townling townly townman townsboy townscape Townsendia Townsendite townsfellow townsfolk township townside townsite townsman townspeople townswoman townward townwards townwear towny towpath towrope towser towy tox toxa toxalbumic toxalbumin toxalbumose toxamin toxanemia toxaphene toxcatl toxemia toxemic toxic toxicaemia toxical toxically toxicant toxicarol toxication toxicemia toxicity toxicodendrol Toxicodendron toxicoderma toxicodermatitis toxicodermatosis toxicodermia toxicodermitis toxicogenic toxicognath toxicohaemia toxicohemia toxicoid toxicologic toxicological toxicologically toxicologist toxicology toxicomania toxicopathic toxicopathy toxicophagous toxicophagy toxicophidia toxicophobia toxicosis toxicotraumatic toxicum toxidermic toxidermitis toxifer Toxifera toxiferous toxigenic toxihaemia toxihemia toxiinfection toxiinfectious toxin toxinemia toxinfection toxinfectious toxinosis toxiphobia toxiphobiac toxiphoric toxitabellae toxity Toxodon toxodont Toxodontia toxogenesis Toxoglossa toxoglossate toxoid toxology toxolysis toxon toxone toxonosis toxophil toxophile toxophilism toxophilite toxophilitic toxophilitism toxophilous toxophily toxophoric toxophorous toxoplasmosis toxosis toxosozin Toxostoma toxotae Toxotes Toxotidae Toxylon toy toydom toyer toyful toyfulness toyhouse toying toyingly toyish toyishly toyishness toyland toyless toylike toymaker toymaking toyman toyon toyshop toysome toytown toywoman toywort toze tozee tozer tra trabacolo trabal trabant trabascolo trabea trabeae trabeatae trabeated trabeation trabecula trabecular trabecularism trabeculate trabeculated trabeculation trabecule trabuch trabucho Tracaulon trace traceability traceable traceableness traceably traceless tracelessly tracer traceried tracery Tracey trachea tracheaectasy tracheal trachealgia trachealis trachean Trachearia trachearian tracheary Tracheata tracheate tracheation tracheid tracheidal tracheitis trachelagra trachelate trachelectomopexia trachelectomy trachelismus trachelitis trachelium tracheloacromialis trachelobregmatic tracheloclavicular trachelocyllosis trachelodynia trachelology trachelomastoid trachelopexia tracheloplasty trachelorrhaphy tracheloscapular Trachelospermum trachelotomy trachenchyma tracheobronchial tracheobronchitis tracheocele tracheochromatic tracheoesophageal tracheofissure tracheolar tracheolaryngeal tracheolaryngotomy tracheole tracheolingual tracheopathia tracheopathy tracheopharyngeal Tracheophonae tracheophone tracheophonesis tracheophonine tracheophony tracheoplasty tracheopyosis tracheorrhagia tracheoschisis tracheoscopic tracheoscopist tracheoscopy tracheostenosis tracheostomy tracheotome tracheotomist tracheotomize tracheotomy Trachinidae trachinoid Trachinus trachitis trachle Trachodon trachodont trachodontid Trachodontidae Trachoma trachomatous Trachomedusae trachomedusan trachyandesite trachybasalt trachycarpous Trachycarpus trachychromatic trachydolerite trachyglossate Trachylinae trachyline Trachymedusae trachymedusan trachyphonia trachyphonous Trachypteridae trachypteroid Trachypterus trachyspermous trachyte trachytic trachytoid tracing tracingly track trackable trackage trackbarrow tracked tracker trackhound trackingscout tracklayer tracklaying trackless tracklessly tracklessness trackman trackmanship trackmaster trackscout trackshifter tracksick trackside trackwalker trackway trackwork tract tractability tractable tractableness tractably tractarian Tractarianism tractarianize tractate tractator tractatule tractellate tractellum tractiferous tractile tractility traction tractional tractioneering Tractite tractlet tractor tractoration tractorism tractorist tractorization tractorize tractory tractrix Tracy tradable tradal trade tradecraft tradeful tradeless trademaster trader tradership Tradescantia tradesfolk tradesman tradesmanlike tradesmanship tradesmanwise tradespeople tradesperson tradeswoman tradiment trading tradite tradition traditional traditionalism traditionalist traditionalistic traditionality traditionalize traditionally traditionarily traditionary traditionate traditionately traditioner traditionism traditionist traditionitis traditionize traditionless traditionmonger traditious traditive traditor traditores traditorship traduce traducement traducent traducer traducian traducianism traducianist traducianistic traducible traducing traducingly traduction traductionist trady traffic trafficability trafficable trafficableness trafficless trafficway trafflicker trafflike trag tragacanth tragacantha tragacanthin tragal Tragasol tragedial tragedian tragedianess tragedical tragedienne tragedietta tragedist tragedization tragedize tragedy tragelaph tragelaphine Tragelaphus tragi tragic tragical tragicality tragically tragicalness tragicaster tragicize tragicly tragicness tragicofarcical tragicoheroicomic tragicolored tragicomedian tragicomedy tragicomic tragicomical tragicomicality tragicomically tragicomipastoral tragicoromantic tragicose tragopan Tragopogon Tragulidae Tragulina traguline traguloid Traguloidea Tragulus tragus trah traheen traik trail trailer trailery trailiness trailing trailingly trailless trailmaker trailmaking trailman trailside trailsman traily train trainable trainage trainagraph trainband trainbearer trainbolt trainboy trained trainee trainer trainful training trainless trainload trainman trainmaster trainsick trainster traintime trainway trainy traipse trait traitless traitor traitorhood traitorism traitorize traitorlike traitorling traitorous traitorously traitorousness traitorship traitorwise traitress traject trajectile trajection trajectitious trajectory trajet tralatician tralaticiary tralatition tralatitious tralatitiously tralira Trallian tram trama tramal tramcar trame Trametes tramful tramless tramline tramman trammel trammeled trammeler trammelhead trammeling trammelingly trammelled trammellingly trammer tramming trammon tramontane tramp trampage trampdom tramper trampess tramphood trampish trampishly trampism trample trampler tramplike trampolin trampoline trampoose trampot tramroad tramsmith tramway tramwayman tramyard Tran trance tranced trancedly tranceful trancelike tranchefer tranchet trancoidal traneen trank tranka tranker trankum tranky tranquil tranquility tranquilization tranquilize tranquilizer tranquilizing tranquilizingly tranquillity tranquillization tranquillize tranquilly tranquilness transaccidentation transact transaction transactional transactionally transactioneer transactor transalpine transalpinely transalpiner transamination transanimate transanimation transannular transapical transappalachian transaquatic transarctic transatlantic transatlantically transatlantican transatlanticism transaudient transbaikal transbaikalian transbay transboard transborder transcalency transcalent transcalescency transcalescent Transcaucasian transceiver transcend transcendence transcendency transcendent transcendental transcendentalism transcendentalist transcendentalistic transcendentality transcendentalize transcendentally transcendently transcendentness transcendible transcending transcendingly transcendingness transcension transchannel transcolor transcoloration transconductance transcondylar transcondyloid transconscious transcontinental transcorporate transcorporeal transcortical transcreate transcribable transcribble transcribbler transcribe transcriber transcript transcription transcriptional transcriptionally transcriptitious transcriptive transcriptively transcriptural transcrystalline transcurrent transcurrently transcurvation transdermic transdesert transdialect transdiaphragmatic transdiurnal transducer transduction transect transection transelement transelementate transelementation transempirical transenna transept transeptal transeptally transequatorial transessentiate transeunt transexperiential transfashion transfeature transfer transferability transferable transferableness transferably transferal transferee transference transferent transferential transferography transferor transferotype transferred transferrer transferribility transferring transferror transferrotype transfigurate transfiguration transfigurative transfigure transfigurement transfiltration transfinite transfix transfixation transfixion transfixture transfluent transfluvial transflux transforation transform transformability transformable transformance transformation transformationist transformative transformator transformer transforming transformingly transformism transformist transformistic transfrontal transfrontier transfuge transfugitive transfuse transfuser transfusible transfusion transfusionist transfusive transfusively transgredient transgress transgressible transgressing transgressingly transgression transgressional transgressive transgressively transgressor transhape transhuman transhumanate transhumanation transhumance transhumanize transhumant transience transiency transient transiently transientness transigence transigent transiliac transilience transiliency transilient transilluminate transillumination transilluminator transimpression transincorporation transindividual transinsular transire transischiac transisthmian transistor transit transitable transiter transition transitional transitionally transitionalness transitionary transitionist transitival transitive transitively transitiveness transitivism transitivity transitman transitorily transitoriness transitory transitus Transjordanian translade translatable translatableness translate translater translation translational translationally translative translator translatorese translatorial translatorship translatory translatress translatrix translay transleithan transletter translinguate transliterate transliteration transliterator translocalization translocate translocation translocatory translucence translucency translucent translucently translucid transmarginal transmarine transmaterial transmateriation transmedial transmedian transmental transmentation transmeridional transmethylation transmigrant transmigrate transmigration transmigrationism transmigrationist transmigrative transmigratively transmigrator transmigratory transmissibility transmissible transmission transmissional transmissionist transmissive transmissively transmissiveness transmissivity transmissometer transmissory transmit transmittable transmittal transmittance transmittancy transmittant transmitter transmittible transmogrification transmogrifier transmogrify transmold transmontane transmorphism transmundane transmural transmuscle transmutability transmutable transmutableness transmutably transmutation transmutational transmutationist transmutative transmutatory transmute transmuter transmuting transmutive transmutual transnatation transnational transnatural transnaturation transnature transnihilation transnormal transocean transoceanic transocular transom transomed transonic transorbital transpacific transpadane transpalatine transpalmar transpanamic transparence transparency transparent transparentize transparently transparentness transparietal transparish transpeciate transpeciation transpeer transpenetrable transpeninsular transperitoneal transperitoneally transpersonal transphenomenal transphysical transpicuity transpicuous transpicuously transpierce transpirability transpirable transpiration transpirative transpiratory transpire transpirometer transplace transplant transplantability transplantable transplantar transplantation transplantee transplanter transplendency transplendent transplendently transpleural transpleurally transpolar transponibility transponible transpontine transport transportability transportable transportableness transportal transportance transportation transportational transportationist transportative transported transportedly transportedness transportee transporter transporting transportingly transportive transportment transposability transposable transposableness transposal transpose transposer transposition transpositional transpositive transpositively transpositor transpository transpour transprint transprocess transprose transproser transpulmonary transpyloric transradiable transrational transreal transrectification transrhenane transrhodanian transriverine transsegmental transsensual transseptal transsepulchral transshape transshift transship transshipment transsolid transstellar transsubjective transtemporal Transteverine transthalamic transthoracic transubstantial transubstantially transubstantiate transubstantiation transubstantiationalist transubstantiationite transubstantiative transubstantiatively transubstantiatory transudate transudation transudative transudatory transude transumpt transumption transumptive transuranian transuranic transuranium transuterine transvaal Transvaaler Transvaalian transvaluate transvaluation transvalue transvasate transvasation transvase transvectant transvection transvenom transverbate transverbation transverberate transverberation transversal transversale transversalis transversality transversally transversan transversary transverse transversely transverseness transverser transversion transversive transversocubital transversomedial transversospinal transversovertical transversum transversus transvert transverter transvest transvestism transvestite transvestitism transvolation transwritten Transylvanian trant tranter trantlum Tranzschelia trap Trapa Trapaceae trapaceous trapball trapes trapezate trapeze trapezia trapezial trapezian trapeziform trapezing trapeziometacarpal trapezist trapezium trapezius trapezohedral trapezohedron trapezoid trapezoidal trapezoidiform trapfall traphole trapiferous traplight traplike trapmaker trapmaking trappean trapped trapper trapperlike trappiness trapping trappingly Trappist trappist Trappistine trappoid trappose trappous trappy traprock traps trapshoot trapshooter trapshooting trapstick trapunto trasformism trash trashery trashify trashily trashiness traship trashless trashrack trashy trass Trastevere Trasteverine trasy traulism trauma traumasthenia traumatic traumatically traumaticin traumaticine traumatism traumatize traumatology traumatonesis traumatopnea traumatopyra traumatosis traumatotactic traumatotaxis traumatropic traumatropism Trautvetteria travail travale travally travated trave travel travelability travelable traveldom traveled traveler traveleress travelerlike traveling travellability travellable travelled traveller travelogue traveloguer traveltime traversable traversal traversary traverse traversed traversely traverser traversewise traversework traversing traversion travertin travertine travestier travestiment travesty Travis travis travois travoy trawl trawlboat trawler trawlerman trawlnet tray trayful traylike treacher treacherous treacherously treacherousness treachery treacle treaclelike treaclewort treacliness treacly tread treadboard treader treading treadle treadler treadmill treadwheel treason treasonable treasonableness treasonably treasonful treasonish treasonist treasonless treasonmonger treasonous treasonously treasonproof treasurable treasure treasureless treasurer treasurership treasuress treasurous treasury treasuryship treat treatable treatableness treatably treatee treater treating treatise treatiser treatment treator treaty treatyist treatyite treatyless Trebellian treble trebleness trebletree trebly trebuchet trecentist trechmannite treckschuyt Treculia treddle tredecile tredille tree treebeard treebine treed treefish treeful treehair treehood treeify treeiness treeless treelessness treelet treelike treeling treemaker treemaking treeman treen treenail treescape treeship treespeeler treetop treeward treewards treey tref trefgordd trefle trefoil trefoiled trefoillike trefoilwise tregadyne tregerg tregohm trehala trehalase trehalose treillage trek trekker trekometer trekpath trellis trellised trellislike trelliswork Trema Tremandra Tremandraceae tremandraceous Trematoda trematode Trematodea Trematodes trematoid Trematosaurus tremble tremblement trembler trembling tremblingly tremblingness tremblor trembly Tremella Tremellaceae tremellaceous Tremellales tremelliform tremelline tremellineous tremelloid tremellose tremendous tremendously tremendousness tremetol tremie tremolando tremolant tremolist tremolite tremolitic tremolo tremor tremorless tremorlessly tremulant tremulate tremulation tremulous tremulously tremulousness trenail trench trenchancy trenchant trenchantly trenchantness trenchboard trenched trencher trencherless trencherlike trenchermaker trenchermaking trencherman trencherside trencherwise trencherwoman trenchful trenchlet trenchlike trenchmaster trenchmore trenchward trenchwise trenchwork trend trendle Trent trental Trentepohlia Trentepohliaceae trentepohliaceous Trentine Trenton trepan trepanation trepang trepanize trepanner trepanning trepanningly trephination trephine trephiner trephocyte trephone trepid trepidancy trepidant trepidate trepidation trepidatory trepidity trepidly trepidness Treponema treponematous treponemiasis treponemiatic treponemicidal treponemicide Trepostomata trepostomatous Treron Treronidae Treroninae tresaiel trespass trespassage trespasser trespassory tress tressed tressful tressilate tressilation tressless tresslet tresslike tresson tressour tressure tressured tressy trest trestle trestletree trestlewise trestlework trestling tret trevally trevet Trevor trews trewsman Trey trey tri triable triableness triace triacetamide triacetate triacetonamine triachenium triacid triacontaeterid triacontane triaconter triact triactinal triactine triad triadelphous Triadenum triadic triadical triadically triadism triadist triaene triaenose triage triagonal triakisicosahedral triakisicosahedron triakisoctahedral triakisoctahedrid triakisoctahedron triakistetrahedral triakistetrahedron trial trialate trialism trialist triality trialogue triamid triamide triamine triamino triammonium triamylose triander Triandria triandrian triandrous triangle triangled triangler triangleways trianglewise trianglework Triangula triangular triangularity triangularly triangulate triangulately triangulation triangulator Triangulid trianguloid triangulopyramidal triangulotriangular Triangulum triannual triannulate Trianon Triantaphyllos triantelope trianthous triapsal triapsidal triarch triarchate triarchy triarctic triarcuated triareal triarii Triarthrus triarticulate Trias Triassic triaster triatic Triatoma triatomic triatomicity triaxial triaxon triaxonian triazane triazin triazine triazo triazoic triazole triazolic tribade tribadism tribady tribal tribalism tribalist tribally tribarred tribase tribasic tribasicity tribasilar tribble tribe tribeless tribelet tribelike tribesfolk tribeship tribesman tribesmanship tribespeople tribeswoman triblastic triblet triboelectric triboelectricity tribofluorescence tribofluorescent Tribolium triboluminescence triboluminescent tribometer Tribonema Tribonemaceae tribophosphorescence tribophosphorescent tribophosphoroscope triborough tribrac tribrach tribrachial tribrachic tribracteate tribracteolate tribromacetic tribromide tribromoethanol tribromophenol tribromphenate tribromphenol tribual tribually tribular tribulate tribulation tribuloid Tribulus tribuna tribunal tribunate tribune tribuneship tribunitial tribunitian tribunitiary tribunitive tributable tributarily tributariness tributary tribute tributer tributist tributorian tributyrin trica tricae tricalcic tricalcium tricapsular tricar tricarballylic tricarbimide tricarbon tricarboxylic tricarinate tricarinated tricarpellary tricarpellate tricarpous tricaudal tricaudate trice tricellular tricenarious tricenarium tricenary tricennial tricentenarian tricentenary tricentennial tricentral tricephal tricephalic tricephalous tricephalus triceps Triceratops triceria tricerion tricerium trichatrophia trichauxis Trichechidae trichechine trichechodont Trichechus trichevron trichi trichia trichiasis Trichilia Trichina trichina trichinae trichinal Trichinella trichiniasis trichiniferous trichinization trichinize trichinoid trichinopoly trichinoscope trichinoscopy trichinosed trichinosis trichinotic trichinous trichite trichitic trichitis trichiurid Trichiuridae trichiuroid Trichiurus trichloride trichlormethane trichloro trichloroacetic trichloroethylene trichloromethane trichloromethyl trichobacteria trichobezoar trichoblast trichobranchia trichobranchiate trichocarpous trichocephaliasis Trichocephalus trichoclasia trichoclasis trichocyst trichocystic trichode Trichoderma Trichodesmium Trichodontidae trichoepithelioma trichogen trichogenous trichoglossia Trichoglossidae Trichoglossinae trichoglossine Trichogramma Trichogrammatidae trichogyne trichogynial trichogynic trichoid Tricholaena trichological trichologist trichology Tricholoma trichoma Trichomanes trichomaphyte trichomatose trichomatosis trichomatous trichome trichomic trichomonad Trichomonadidae Trichomonas trichomoniasis trichomycosis trichonosus trichopathic trichopathy trichophore trichophoric trichophyllous trichophyte trichophytia trichophytic Trichophyton trichophytosis Trichoplax trichopore trichopter Trichoptera trichoptera trichopteran trichopteron trichopterous trichopterygid Trichopterygidae trichord trichorrhea trichorrhexic trichorrhexis Trichosanthes trichoschisis trichosis trichosporange trichosporangial trichosporangium Trichosporum trichostasis Trichostema trichostrongyle trichostrongylid Trichostrongylus trichothallic trichotillomania trichotomic trichotomism trichotomist trichotomize trichotomous trichotomously trichotomy trichroic trichroism trichromat trichromate trichromatic trichromatism trichromatist trichrome trichromic trichronous trichuriasis Trichuris trichy Tricia tricinium tricipital tricircular trick tricker trickery trickful trickily trickiness tricking trickingly trickish trickishly trickishness trickle trickless tricklet tricklike trickling tricklingly trickly trickment trickproof tricksical tricksily tricksiness tricksome trickster trickstering trickstress tricksy tricktrack tricky triclad Tricladida triclinate triclinia triclinial tricliniarch tricliniary triclinic triclinium triclinohedric tricoccose tricoccous tricolette tricolic tricolon tricolor tricolored tricolumnar tricompound triconch Triconodon triconodont Triconodonta triconodontid triconodontoid triconodonty triconsonantal triconsonantalism tricophorous tricorn tricornered tricornute tricorporal tricorporate tricoryphean tricosane tricosanone tricostate tricosyl tricosylic tricot tricotine tricotyledonous tricresol tricrotic tricrotism tricrotous tricrural tricurvate tricuspal tricuspid tricuspidal tricuspidate tricuspidated tricussate tricyanide tricycle tricyclene tricycler tricyclic tricyclist Tricyrtis Tridacna Tridacnidae tridactyl tridactylous tridaily triddler tridecane tridecene tridecilateral tridecoic tridecyl tridecylene tridecylic trident tridental tridentate tridentated tridentiferous Tridentine Tridentinian tridepside tridermic tridiametral tridiapason tridigitate tridimensional tridimensionality tridimensioned tridiurnal tridominium tridrachm triduan triduum tridymite tridynamous tried triedly trielaidin triene triennial trienniality triennially triennium triens triental Trientalis triequal trier trierarch trierarchal trierarchic trierarchy trierucin trieteric trieterics triethanolamine triethyl triethylamine triethylstibine trifa trifacial trifarious trifasciated triferous trifid trifilar trifistulary triflagellate trifle trifledom trifler triflet trifling triflingly triflingness trifloral triflorate triflorous trifluoride trifocal trifoil trifold trifoliate trifoliated trifoliolate trifoliosis Trifolium trifolium trifoly triforial triforium triform triformed triformin triformity triformous trifoveolate trifuran trifurcal trifurcate trifurcation trig trigamist trigamous trigamy trigeminal trigeminous trigeneric trigesimal trigger triggered triggerfish triggerless trigintal trigintennial Trigla triglandular triglid Triglidae triglochid Triglochin triglochin triglot trigly triglyceride triglyceryl triglyph triglyphal triglyphed triglyphic triglyphical trigness trigon Trigona trigonal trigonally trigone Trigonella trigonelline trigoneutic trigoneutism Trigonia Trigoniaceae trigoniacean trigoniaceous trigonic trigonid Trigoniidae trigonite trigonitis trigonocephalic trigonocephalous Trigonocephalus trigonocephaly trigonocerous trigonododecahedron trigonodont trigonoid trigonometer trigonometric trigonometrical trigonometrician trigonometry trigonon trigonotype trigonous trigonum trigram trigrammatic trigrammatism trigrammic trigraph trigraphic triguttulate trigyn Trigynia trigynian trigynous trihalide trihedral trihedron trihemeral trihemimer trihemimeral trihemimeris trihemiobol trihemiobolion trihemitetartemorion trihoral trihourly trihybrid trihydrate trihydrated trihydric trihydride trihydrol trihydroxy trihypostatic trijugate trijugous trijunction trikaya trike triker trikeria trikerion triketo triketone trikir trilabe trilabiate trilamellar trilamellated trilaminar trilaminate trilarcenous trilateral trilaterality trilaterally trilateralness trilaurin trilby trilemma trilinear trilineate trilineated trilingual trilinguar trilinolate trilinoleate trilinolenate trilinolenin Trilisa trilit trilite triliteral triliteralism triliterality triliterally triliteralness trilith trilithic trilithon trill trillachan trillet trilli Trilliaceae trilliaceous trillibub trilliin trilling trillion trillionaire trillionize trillionth Trillium trillium trillo trilobate trilobated trilobation trilobe trilobed Trilobita trilobite trilobitic trilocular triloculate trilogic trilogical trilogist trilogy Trilophodon trilophodont triluminar triluminous trim trimacer trimacular trimargarate trimargarin trimastigate trimellitic trimembral trimensual trimer Trimera trimercuric Trimeresurus trimeric trimeride trimerite trimerization trimerous trimesic trimesinic trimesitic trimesitinic trimester trimestral trimestrial trimesyl trimetalism trimetallic trimeter trimethoxy trimethyl trimethylacetic trimethylamine trimethylbenzene trimethylene trimethylmethane trimethylstibine trimetric trimetrical trimetrogon trimly trimmer trimming trimmingly trimness trimodal trimodality trimolecular trimonthly trimoric trimorph trimorphic trimorphism trimorphous trimotor trimotored trimstone trimtram trimuscular trimyristate trimyristin trin Trinacrian trinal trinality trinalize trinary trinational trindle trine trinely trinervate trinerve trinerved trineural Tringa tringine tringle tringoid Trinidadian trinidado Trinil Trinitarian trinitarian Trinitarianism trinitrate trinitration trinitride trinitrin trinitro trinitrocarbolic trinitrocellulose trinitrocresol trinitroglycerin trinitromethane trinitrophenol trinitroresorcin trinitrotoluene trinitroxylene trinitroxylol Trinity trinity trinityhood trink trinkerman trinket trinketer trinketry trinkety trinkle trinklement trinklet trinkums Trinobantes trinoctial trinodal trinode trinodine trinol trinomial trinomialism trinomialist trinomiality trinomially trinopticon Trinorantum Trinovant Trinovantes trintle trinucleate Trinucleus Trio trio triobol triobolon trioctile triocular triode triodia triodion Triodon Triodontes Triodontidae triodontoid Triodontoidea Triodontoidei Triodontophorus Trioecia trioecious trioeciously trioecism triolcous triole trioleate triolefin trioleic triolein triolet triology Trionychidae trionychoid Trionychoideachid trionychoidean trionym trionymal Trionyx trioperculate Triopidae Triops trior triorchis triorchism triorthogonal triose Triosteum triovulate trioxazine trioxide trioxymethylene triozonide trip tripal tripaleolate tripalmitate tripalmitin tripara tripart triparted tripartedly tripartible tripartient tripartite tripartitely tripartition tripaschal tripe tripedal tripel tripelike tripeman tripemonger tripennate tripenny tripeptide tripersonal tripersonalism tripersonalist tripersonality tripersonally tripery tripeshop tripestone tripetaloid tripetalous tripewife tripewoman triphammer triphane triphase triphaser Triphasia triphasic triphenyl triphenylamine triphenylated triphenylcarbinol triphenylmethane triphenylmethyl triphenylphosphine triphibian triphibious triphony Triphora triphthong triphyletic triphyline triphylite triphyllous Triphysite tripinnate tripinnated tripinnately tripinnatifid tripinnatisect Tripitaka triplane Triplaris triplasian triplasic triple tripleback triplefold triplegia tripleness triplet tripletail tripletree triplewise triplex triplexity triplicate triplication triplicative triplicature Triplice Triplicist triplicity triplicostate tripliform triplinerved tripling triplite triploblastic triplocaulescent triplocaulous Triplochitonaceae triploid triploidic triploidite triploidy triplopia triplopy triplum triplumbic triply tripmadam tripod tripodal tripodial tripodian tripodic tripodical tripody tripointed tripolar tripoli Tripoline tripoline Tripolitan tripolite tripos tripotassium trippant tripper trippet tripping trippingly trippingness trippist tripple trippler Tripsacum tripsill tripsis tripsome tripsomely triptane tripterous triptote triptych triptyque tripudial tripudiant tripudiary tripudiate tripudiation tripudist tripudium tripunctal tripunctate tripy Tripylaea tripylaean Tripylarian tripylarian tripyrenous triquadrantal triquetra triquetral triquetric triquetrous triquetrously triquetrum triquinate triquinoyl triradial triradially triradiate triradiated triradiately triradiation Triratna trirectangular triregnum trireme trirhombohedral trirhomboidal triricinolein trisaccharide trisaccharose trisacramentarian Trisagion trisalt trisazo trisceptral trisect trisected trisection trisector trisectrix triseme trisemic trisensory trisepalous triseptate triserial triserially triseriate triseriatim trisetose Trisetum trishna trisilane trisilicane trisilicate trisilicic trisinuate trisinuated triskele triskelion trismegist trismegistic trismic trismus trisoctahedral trisoctahedron trisodium trisome trisomic trisomy trisonant Trisotropis trispast trispaston trispermous trispinose trisplanchnic trisporic trisporous trisquare trist tristachyous Tristam Tristan Tristania tristate tristearate tristearin tristeness tristetrahedron tristeza tristful tristfully tristfulness tristich Tristichaceae tristichic tristichous tristigmatic tristigmatose tristiloquy tristisonous Tristram tristylous trisubstituted trisubstitution trisul trisula trisulcate trisulcated trisulphate trisulphide trisulphone trisulphonic trisulphoxide trisylabic trisyllabical trisyllabically trisyllabism trisyllabity trisyllable tritactic tritagonist tritangent tritangential tritanope tritanopia tritanopic tritaph trite Triteleia tritely tritemorion tritencephalon triteness triternate triternately triterpene tritetartemorion tritheism tritheist tritheistic tritheistical tritheite tritheocracy trithing trithioaldehyde trithiocarbonate trithiocarbonic trithionate trithionic Trithrinax tritical triticality tritically triticalness triticeous triticeum triticin triticism triticoid Triticum triticum tritish tritium tritocerebral tritocerebrum tritocone tritoconid Tritogeneia tritolo Tritoma tritomite Triton triton tritonal tritonality tritone Tritoness Tritonia Tritonic Tritonidae tritonoid tritonous tritonymph tritonymphal tritopatores tritopine tritor tritoral tritorium tritoxide tritozooid tritriacontane trittichan tritubercular Trituberculata trituberculism trituberculy triturable tritural triturate trituration triturator triturature triturium Triturus trityl Tritylodon Triumfetta Triumph triumph triumphal triumphance triumphancy triumphant triumphantly triumphator triumpher triumphing triumphwise triumvir triumviral triumvirate triumviri triumvirship triunal triune triungulin triunification triunion triunitarian triunity triunsaturated triurid Triuridaceae Triuridales Triuris trivalence trivalency trivalent trivalerin trivalve trivalvular trivant trivantly trivariant triverbal triverbial trivet trivetwise trivia trivial trivialism trivialist triviality trivialize trivially trivialness trivirga trivirgate trivium trivoltine trivvet triweekly Trix Trixie Trixy trizoic trizomal trizonal trizone Trizonia Troad troat troca trocaical trocar Trochaic trochaic trochaicality trochal trochalopod Trochalopoda trochalopodous trochanter trochanteric trochanterion trochantin trochantinian trochart trochate troche trocheameter trochee trocheeize trochelminth Trochelminthes trochi trochid Trochidae trochiferous trochiform Trochila Trochili trochili trochilic trochilics trochilidae trochilidine trochilidist trochiline trochilopodous Trochilus trochilus troching trochiscation trochiscus trochite trochitic Trochius trochlea trochlear trochleariform trochlearis trochleary trochleate trochleiform trochocephalia trochocephalic trochocephalus trochocephaly Trochodendraceae trochodendraceous Trochodendron trochoid trochoidal trochoidally trochoides trochometer trochophore Trochosphaera Trochosphaerida trochosphere trochospherical Trochozoa trochozoic trochozoon Trochus trochus trock troco troctolite trod trodden trode troegerite Troezenian troft trog trogger troggin troglodytal troglodyte Troglodytes troglodytic troglodytical Troglodytidae Troglodytinae troglodytish troglodytism trogon Trogones Trogonidae Trogoniformes trogonoid trogs trogue Troiades Troic troika troilite Trojan troke troker troll trolldom trolleite troller trolley trolleyer trolleyful trolleyman trollflower trollimog trolling Trollius trollman trollol trollop Trollopean Trollopeanism trollopish trollops trollopy trolly tromba trombe trombiculid trombidiasis Trombidiidae Trombidium trombone trombonist trombony trommel tromometer tromometric tromometrical tromometry tromp trompe trompil trompillo tromple tron trona tronador tronage tronc trondhjemite trone troner troolie troop trooper trooperess troopfowl troopship troopwise troostite troostitic troot tropacocaine tropaeolaceae tropaeolaceous tropaeolin Tropaeolum tropaion tropal troparia troparion tropary tropate trope tropeic tropeine troper tropesis trophaea trophaeum trophal trophallactic trophallaxis trophectoderm trophedema trophema trophesial trophesy trophi trophic trophical trophically trophicity trophied Trophis trophism trophobiont trophobiosis trophobiotic trophoblast trophoblastic trophochromatin trophocyte trophoderm trophodisc trophodynamic trophodynamics trophogenesis trophogenic trophogeny trophology trophonema trophoneurosis trophoneurotic Trophonian trophonucleus trophopathy trophophore trophophorous trophophyte trophoplasm trophoplasmatic trophoplasmic trophoplast trophosomal trophosome trophosperm trophosphere trophospongia trophospongial trophospongium trophospore trophotaxis trophotherapy trophothylax trophotropic trophotropism trophozoite trophozooid trophy trophyless trophywort tropic tropical Tropicalia Tropicalian tropicality tropicalization tropicalize tropically tropicopolitan tropidine Tropidoleptus tropine tropism tropismatic tropist tropistic tropocaine tropologic tropological tropologically tropologize tropology tropometer tropopause tropophil tropophilous tropophyte tropophytic troposphere tropostereoscope tropoyl troptometer tropyl trostera trot trotcozy troth trothful trothless trothlike trothplight trotlet trotline trotol trotter trottie trottles trottoir trottoired trotty trotyl troubadour troubadourish troubadourism troubadourist trouble troubledly troubledness troublemaker troublemaking troublement troubleproof troubler troublesome troublesomely troublesomeness troubling troublingly troublous troublously troublousness troubly trough troughful troughing troughlike troughster troughway troughwise troughy trounce trouncer troupand troupe trouper troupial trouse trouser trouserdom trousered trouserettes trouserian trousering trouserless trousers trousseau trousseaux trout troutbird trouter troutflower troutful troutiness troutless troutlet troutlike trouty trouvere trouveur trove troveless trover trow trowel trowelbeak troweler trowelful trowelman trowing trowlesworthite trowman trowth Troy troy Troynovant Troytown truancy truandise truant truantcy truantism truantlike truantly truantness truantry truantship trub trubu truce trucebreaker trucebreaking truceless trucemaker trucemaking trucial trucidation truck truckage trucker truckful trucking truckle truckler trucklike truckling trucklingly truckload truckman truckmaster trucks truckster truckway truculence truculency truculent truculental truculently truculentness truddo trudellite trudge trudgen trudger Trudy true trueborn truebred truehearted trueheartedly trueheartedness truelike truelove trueness truepenny truer truff truffle truffled trufflelike truffler trufflesque trug truish truism truismatic truistic truistical trull Trullan truller trullization trullo truly trumbash trummel trump trumper trumperiness trumpery trumpet trumpetbush trumpeter trumpeting trumpetless trumpetlike trumpetry trumpetweed trumpetwood trumpety trumph trumpie trumpless trumplike trun truncage truncal truncate truncated Truncatella Truncatellidae truncately truncation truncator truncatorotund truncatosinuate truncature trunch trunched truncheon truncheoned truncher trunchman trundle trundlehead trundler trundleshot trundletail trundling trunk trunkback trunked trunkfish trunkful trunking trunkless trunkmaker trunknose trunkway trunkwork trunnel trunnion trunnioned trunnionless trush trusion truss trussed trussell trusser trussing trussmaker trussmaking trusswork trust trustability trustable trustableness trustably trustee trusteeism trusteeship trusten truster trustful trustfully trustfulness trustification trustify trustihood trustily trustiness trusting trustingly trustingness trustle trustless trustlessly trustlessness trustman trustmonger trustwoman trustworthily trustworthiness trustworthy trusty truth truthable truthful truthfully truthfulness truthify truthiness truthless truthlessly truthlessness truthlike truthlikeness truthsman truthteller truthtelling truthy Trutta truttaceous truvat truxillic truxilline try trygon Trygonidae tryhouse Trying trying tryingly tryingness tryma tryout tryp trypa trypan trypaneid Trypaneidae trypanocidal trypanocide trypanolysin trypanolysis trypanolytic Trypanosoma trypanosoma trypanosomacidal trypanosomacide trypanosomal trypanosomatic Trypanosomatidae trypanosomatosis trypanosomatous trypanosome trypanosomiasis trypanosomic Tryparsamide Trypeta trypetid Trypetidae Tryphena Tryphosa trypiate trypograph trypographic trypsin trypsinize trypsinogen tryptase tryptic tryptogen tryptone tryptonize tryptophan trysail tryst tryster trysting tryt tryworks tsadik tsamba tsantsa tsar tsardom tsarevitch tsarina tsaritza tsarship tsatlee Tsattine tscharik tscheffkinite Tscherkess tsere tsessebe tsetse Tshi tsia Tsiltaden Tsimshian tsine tsingtauite tsiology Tsoneca Tsonecan tst tsuba tsubo Tsuga Tsuma tsumebite tsun tsunami tsungtu Tsutsutsi tu tua Tualati Tuamotu Tuamotuan Tuan tuan Tuareg tuarn tuart tuatara tuatera tuath tub Tuba tuba tubae tubage tubal tubaphone tubar tubate tubatoxin Tubatulabal tubba tubbable tubbal tubbeck tubber tubbie tubbiness tubbing tubbish tubboe tubby tube tubeflower tubeform tubeful tubehead tubehearted tubeless tubelet tubelike tubemaker tubemaking tubeman tuber Tuberaceae tuberaceous Tuberales tuberation tubercle tubercled tuberclelike tubercula tubercular Tubercularia Tuberculariaceae tuberculariaceous tubercularization tubercularize tubercularly tubercularness tuberculate tuberculated tuberculatedly tuberculately tuberculation tuberculatogibbous tuberculatonodose tuberculatoradiate tuberculatospinous tubercule tuberculed tuberculid tuberculide tuberculiferous tuberculiform tuberculin tuberculinic tuberculinization tuberculinize tuberculization tuberculize tuberculocele tuberculocidin tuberculoderma tuberculoid tuberculoma tuberculomania tuberculomata tuberculophobia tuberculoprotein tuberculose tuberculosectorial tuberculosed tuberculosis tuberculotherapist tuberculotherapy tuberculotoxin tuberculotrophic tuberculous tuberculously tuberculousness tuberculum tuberiferous tuberiform tuberin tuberization tuberize tuberless tuberoid tuberose tuberosity tuberous tuberously tuberousness tubesmith tubework tubeworks tubfish tubful tubicen tubicinate tubicination Tubicola Tubicolae tubicolar tubicolous tubicorn tubicornous tubifacient tubifer tubiferous Tubifex Tubificidae Tubiflorales tubiflorous tubiform tubig tubik tubilingual Tubinares tubinarial tubinarine tubing Tubingen tubiparous Tubipora tubipore tubiporid Tubiporidae tubiporoid tubiporous tublet tublike tubmaker tubmaking tubman tuboabdominal tubocurarine tubolabellate tuboligamentous tuboovarial tuboovarian tuboperitoneal tuborrhea tubotympanal tubovaginal tubular Tubularia tubularia Tubulariae tubularian Tubularida tubularidan Tubulariidae tubularity tubularly tubulate tubulated tubulation tubulator tubulature tubule tubulet tubuli tubulibranch tubulibranchian Tubulibranchiata tubulibranchiate Tubulidentata tubulidentate Tubulifera tubuliferan tubuliferous tubulifloral tubuliflorous tubuliform Tubulipora tubulipore tubuliporid Tubuliporidae tubuliporoid tubulization tubulodermoid tubuloracemose tubulosaccular tubulose tubulostriato tubulous tubulously tubulousness tubulure tubulus tubwoman Tucana Tucanae tucandera Tucano tuchit tuchun tuchunate tuchunism tuchunize tuck Tuckahoe tuckahoe tucker tuckermanity tucket tucking tuckner tuckshop tucktoo tucky tucum tucuma tucuman Tucuna tudel Tudesque Tudor Tudoresque tue tueiron Tuesday tufa tufaceous tufalike tufan tuff tuffaceous tuffet tuffing tuft tuftaffeta tufted tufter tufthunter tufthunting tuftily tufting tuftlet tufty tug tugboat tugboatman tugger tuggery tugging tuggingly tughra tugless tuglike tugman tugrik tugui tugurium tui tuik tuille tuillette tuilyie tuism tuition tuitional tuitionary tuitive tuke tukra Tukuler Tukulor tula Tulalip tulare tularemia tulasi Tulbaghia tulchan tulchin tule tuliac tulip Tulipa tulipflower tulipiferous tulipist tuliplike tulipomania tulipomaniac tulipwood tulipy tulisan Tulkepaia tulle Tullian tullibee Tulostoma tulsi Tulu tulwar tum tumasha tumatakuru tumatukuru tumbak tumbester tumble tumblebug tumbled tumbledung tumbler tumblerful tumblerlike tumblerwise tumbleweed tumblification tumbling tumblingly tumbly Tumboa tumbrel tume tumefacient tumefaction tumefy tumescence tumescent tumid tumidity tumidly tumidness Tumion tummals tummel tummer tummock tummy tumor tumored tumorlike tumorous tump tumpline tumtum tumular tumulary tumulate tumulation tumuli tumulose tumulosity tumulous tumult tumultuarily tumultuariness tumultuary tumultuate tumultuation tumultuous tumultuously tumultuousness tumulus Tumupasa tun Tuna tuna tunable tunableness tunably tunbellied tunbelly tunca tund tundagslatta tunder tundish tundra tundun tune Tunebo tuned tuneful tunefully tunefulness tuneless tunelessly tunelessness tunemaker tunemaking tuner tunesome tunester tunful tung Tunga Tungan tungate tungo tungstate tungsten tungstenic tungsteniferous tungstenite tungstic tungstite tungstosilicate tungstosilicic Tungus Tungusian Tungusic tunhoof tunic Tunica Tunican tunicary Tunicata tunicate tunicated tunicin tunicked tunicle tunicless tuniness tuning tunish Tunisian tunist tunk Tunker tunket tunlike tunmoot tunna tunnel tunneled tunneler tunneling tunnelist tunnelite tunnellike tunnelly tunnelmaker tunnelmaking tunnelman tunnelway tunner tunnery Tunnit tunnland tunnor tunny tuno tunu tuny tup Tupaia Tupaiidae tupakihi tupanship tupara tupek tupelo Tupi Tupian tupik Tupinamba Tupinaqui tupman tuppence tuppenny Tupperian Tupperish Tupperism Tupperize tupuna tuque tur turacin Turacus Turanian Turanianism Turanism turanose turb turban turbaned turbanesque turbanette turbanless turbanlike turbantop turbanwise turbary turbeh Turbellaria turbellarian turbellariform turbescency turbid turbidimeter turbidimetric turbidimetry turbidity turbidly turbidness turbinaceous turbinage turbinal turbinate turbinated turbination turbinatoconcave turbinatocylindrical turbinatoglobose turbinatostipitate turbine turbinectomy turbined turbinelike Turbinella Turbinellidae turbinelloid turbiner turbines Turbinidae turbiniform turbinoid turbinotome turbinotomy turbit turbith turbitteen Turbo turbo turboalternator turboblower turbocompressor turbodynamo turboexciter turbofan turbogenerator turbomachine turbomotor turbopump turbosupercharge turbosupercharger turbot turbotlike turboventilator turbulence turbulency turbulent turbulently turbulentness Turcian Turcic Turcification Turcism Turcize Turco turco Turcoman Turcophilism turcopole turcopolier turd Turdetan Turdidae turdiform Turdinae turdine turdoid Turdus tureen tureenful turf turfage turfdom turfed turfen turfiness turfing turfite turfless turflike turfman turfwise turfy turgency turgent turgently turgesce turgescence turgescency turgescent turgescible turgid turgidity turgidly turgidness turgite turgoid turgor turgy Turi turicata turio turion turioniferous turjaite turjite Turk turk Turkana Turkdom Turkeer turken Turkery Turkess Turkey turkey turkeyback turkeyberry turkeybush Turkeydom turkeyfoot Turkeyism turkeylike Turki Turkic Turkicize Turkification Turkify turkis Turkish Turkishly Turkishness Turkism Turkize turkle Turklike Turkman Turkmen Turkmenian Turkologist Turkology Turkoman Turkomania Turkomanic Turkomanize Turkophil Turkophile Turkophilia Turkophilism Turkophobe Turkophobist turlough Turlupin turm turma turment turmeric turmit turmoil turmoiler turn turnable turnabout turnagain turnaround turnaway turnback turnbout turnbuckle turncap turncoat turncoatism turncock turndown turndun turned turnel turner Turnera Turneraceae turneraceous Turneresque Turnerian Turnerism turnerite turnery turney turngate turnhall Turnhalle Turnices Turnicidae turnicine Turnicomorphae turnicomorphic turning turningness turnip turniplike turnipweed turnipwise turnipwood turnipy Turnix turnix turnkey turnoff turnout turnover turnpike turnpiker turnpin turnplate turnplow turnrow turns turnscrew turnsheet turnskin turnsole turnspit turnstile turnstone turntable turntail turnup turnwrest turnwrist Turonian turp turpantineweed turpentine turpentineweed turpentinic turpeth turpethin turpid turpidly turpitude turps turquoise turquoiseberry turquoiselike turr turret turreted turrethead turretlike turrical turricle turricula turriculae turricular turriculate turriferous turriform turrigerous Turrilepas turrilite Turrilites turriliticone Turrilitidae Turritella turritella turritellid Turritellidae turritelloid turse Tursenoi Tursha tursio Tursiops Turtan turtle turtleback turtlebloom turtledom turtledove turtlehead turtleize turtlelike turtler turtlet turtling turtosa tururi turus Turveydrop Turveydropdom Turveydropian turwar Tusayan Tuscan Tuscanism Tuscanize Tuscanlike Tuscany Tuscarora tusche Tusculan Tush tush tushed Tushepaw tusher tushery tusk tuskar tusked Tuskegee tusker tuskish tuskless tusklike tuskwise tusky tussah tussal tusser tussicular Tussilago tussis tussive tussle tussock tussocked tussocker tussocky tussore tussur tut tutania tutball tute tutee tutela tutelage tutelar tutelary Tutelo tutenag tuth tutin tutiorism tutiorist tutly tutman tutor tutorage tutorer tutoress tutorhood tutorial tutorially tutoriate tutorism tutorization tutorize tutorless tutorly tutorship tutory tutoyer tutress tutrice tutrix tuts tutsan tutster tutti tuttiman tutty tutu tutulus Tututni tutwork tutworker tutworkman tuwi tux tuxedo tuyere Tuyuneiri tuza Tuzla tuzzle twa Twaddell twaddle twaddledom twaddleize twaddlement twaddlemonger twaddler twaddlesome twaddling twaddlingly twaddly twaddy twae twaesome twafauld twagger twain twaite twal twale twalpenny twalpennyworth twalt Twana twang twanger twanginess twangle twangler twangy twank twanker twanking twankingly twankle twanky twant twarly twas twasome twat twatchel twatterlight twattle twattler twattling tway twayblade twazzy tweag tweak tweaker tweaky twee tweed tweeded tweedle tweedledee tweedledum tweedy tweeg tweel tween tweenlight tweeny tweesh tweesht tweest tweet tweeter tweeze tweezer tweezers tweil twelfhynde twelfhyndeman twelfth twelfthly Twelfthtide twelve twelvefold twelvehynde twelvehyndeman twelvemo twelvemonth twelvepence twelvepenny twelvescore twentieth twentiethly twenty twentyfold twentymo twere twerp Twi twibil twibilled twice twicer twicet twichild twick twiddle twiddler twiddling twiddly twifoil twifold twifoldly twig twigful twigged twiggen twigger twiggy twigless twiglet twiglike twigsome twigwithy twilight twilightless twilightlike twilighty twilit twill twilled twiller twilling twilly twilt twin twinable twinberry twinborn twindle twine twineable twinebush twineless twinelike twinemaker twinemaking twiner twinflower twinfold twinge twingle twinhood twiningly twinism twink twinkle twinkledum twinkleproof twinkler twinkles twinkless twinkling twinklingly twinkly twinleaf twinlike twinling twinly twinned twinner twinness twinning twinship twinsomeness twinter twiny twire twirk twirl twirler twirligig twirly twiscar twisel twist twistable twisted twistedly twistened twister twisterer twistical twistification twistily twistiness twisting twistingly twistiways twistiwise twistle twistless twisty twit twitch twitchel twitcheling twitcher twitchet twitchety twitchfire twitchily twitchiness twitchingly twitchy twite twitlark twitten twitter twitteration twitterboned twitterer twittering twitteringly twitterly twittery twittingly twitty twixt twixtbrain twizzened twizzle two twodecker twofold twofoldly twofoldness twoling twoness twopence twopenny twosome twyblade twyhynde Tybalt Tyburn Tyburnian Tyche tychism tychite Tychonian Tychonic tychoparthenogenesis tychopotamic tycoon tycoonate tyddyn tydie tye tyee tyg Tyigh tying tyke tyken tykhana tyking tylarus tyleberry Tylenchus Tyler Tylerism Tylerite Tylerize tylion tyloma tylopod Tylopoda tylopodous Tylosaurus tylose tylosis tylosteresis Tylostoma Tylostomaceae tylostylar tylostyle tylostylote tylostylus Tylosurus tylotate tylote tylotic tylotoxea tylotoxeate tylotus tylus tymbalon tymp tympan tympana tympanal tympanectomy tympani tympanic tympanichord tympanichordal tympanicity tympaniform tympaning tympanism tympanist tympanites tympanitic tympanitis tympanocervical tympanohyal tympanomalleal tympanomandibular tympanomastoid tympanomaxillary tympanon tympanoperiotic tympanosis tympanosquamosal tympanostapedial tympanotemporal tympanotomy Tympanuchus tympanum tympany tynd Tyndallization Tyndallize tyndallmeter Tynwald typal typarchical type typecast Typees typeholder typer typescript typeset typesetter typesetting typewrite typewriter typewriting Typha Typhaceae typhaceous typhemia typhia typhic typhinia typhization typhlatonia typhlatony typhlectasis typhlectomy typhlenteritis typhlitic typhlitis typhloalbuminuria typhlocele typhloempyema typhloenteritis typhlohepatitis typhlolexia typhlolithiasis typhlology typhlomegaly Typhlomolge typhlon typhlopexia typhlopexy typhlophile typhlopid Typhlopidae Typhlops typhloptosis typhlosis typhlosolar typhlosole typhlostenosis typhlostomy typhlotomy typhobacillosis Typhoean typhoemia typhogenic typhoid typhoidal typhoidin typhoidlike typholysin typhomalaria typhomalarial typhomania typhonia Typhonian Typhonic typhonic typhoon typhoonish typhopneumonia typhose typhosepsis typhosis typhotoxine typhous Typhula typhus typic typica typical typicality typically typicalness typicon typicum typification typifier typify typist typo typobar typocosmy typographer typographia typographic typographical typographically typographist typography typolithographic typolithography typologic typological typologically typologist typology typomania typometry typonym typonymal typonymic typonymous typophile typorama typoscript typotelegraph typotelegraphy typothere Typotheria Typotheriidae typothetae typp typtological typtologist typtology typy tyramine tyranness Tyranni tyrannial tyrannic tyrannical tyrannically tyrannicalness tyrannicidal tyrannicide tyrannicly Tyrannidae Tyrannides Tyranninae tyrannine tyrannism tyrannize tyrannizer tyrannizing tyrannizingly tyrannoid tyrannophobia tyrannosaur Tyrannosaurus tyrannous tyrannously tyrannousness Tyrannus tyranny tyrant tyrantcraft tyrantlike tyrantship tyre tyremesis Tyrian tyriasis tyro tyrocidin tyrocidine tyroglyphid Tyroglyphidae Tyroglyphus Tyrolean Tyrolese Tyrolienne tyrolite tyrology tyroma tyromancy tyromatous tyrone tyronic tyronism tyrosinase tyrosine tyrosinuria tyrosyl tyrotoxicon tyrotoxine Tyrr Tyrrhene Tyrrheni Tyrrhenian Tyrsenoi Tyrtaean tysonite tyste tyt Tyto Tytonidae Tzaam Tzapotec tzaritza Tzendal Tzental tzolkin tzontle Tzotzil Tzutuhil U u uang Uaraycu Uarekena Uaupe uayeb Ubbenite Ubbonite uberant uberous uberously uberousness uberty ubi ubication ubiety Ubii Ubiquarian ubiquarian ubiquious Ubiquist ubiquit Ubiquitarian ubiquitarian Ubiquitarianism ubiquitariness ubiquitary Ubiquitism Ubiquitist ubiquitous ubiquitously ubiquitousness ubiquity ubussu Uca Ucal Ucayale Uchean Uchee uckia Ud udal udaler udaller udalman udasi udder uddered udderful udderless udderlike udell Udi Udic Udish udo Udolphoish udometer udometric udometry udomograph Uds Ueueteotl ug Ugandan Ugarono ugh uglification uglifier uglify uglily ugliness uglisome ugly Ugrian Ugric Ugroid ugsome ugsomely ugsomeness uhlan uhllo uhtensang uhtsong Uigur Uigurian Uiguric uily uinal Uinta uintaite uintathere Uintatheriidae Uintatherium uintjie Uirina Uitotan uitspan uji ukase uke ukiyoye Ukrainer Ukrainian ukulele ula ulatrophia ulcer ulcerable ulcerate ulceration ulcerative ulcered ulceromembranous ulcerous ulcerously ulcerousness ulcery ulcuscle ulcuscule ule ulema ulemorrhagia ulerythema uletic Ulex ulex ulexine ulexite Ulidia Ulidian uliginose uliginous ulitis ull ulla ullage ullaged ullagone uller ulling ullmannite ulluco Ulmaceae ulmaceous Ulmaria ulmic ulmin ulminic ulmo ulmous Ulmus ulna ulnad ulnae ulnar ulnare ulnaria ulnocarpal ulnocondylar ulnometacarpal ulnoradial uloborid Uloboridae Uloborus ulocarcinoma uloid Ulonata uloncus Ulophocinae ulorrhagia ulorrhagy ulorrhea Ulothrix Ulotrichaceae ulotrichaceous Ulotrichales ulotrichan Ulotriches Ulotrichi ulotrichous ulotrichy ulrichite ulster ulstered ulsterette Ulsterian ulstering Ulsterite Ulsterman ulterior ulteriorly ultima ultimacy ultimata ultimate ultimately ultimateness ultimation ultimatum ultimity ultimo ultimobranchial ultimogenitary ultimogeniture ultimum Ultonian ultra ultrabasic ultrabasite ultrabelieving ultrabenevolent ultrabrachycephalic ultrabrachycephaly ultrabrilliant ultracentenarian ultracentenarianism ultracentralizer ultracentrifuge ultraceremonious ultrachurchism ultracivil ultracomplex ultraconcomitant ultracondenser ultraconfident ultraconscientious ultraconservatism ultraconservative ultracordial ultracosmopolitan ultracredulous ultracrepidarian ultracrepidarianism ultracrepidate ultracritical ultradandyism ultradeclamatory ultrademocratic ultradespotic ultradignified ultradiscipline ultradolichocephalic ultradolichocephaly ultradolichocranial ultraeducationist ultraeligible ultraelliptic ultraemphasis ultraenergetic ultraenforcement ultraenthusiasm ultraenthusiastic ultraepiscopal ultraevangelical ultraexcessive ultraexclusive ultraexpeditious ultrafantastic ultrafashionable ultrafastidious ultrafederalist ultrafeudal ultrafidian ultrafidianism ultrafilter ultrafilterability ultrafilterable ultrafiltrate ultrafiltration ultraformal ultrafrivolous ultragallant ultragaseous ultragenteel ultragood ultragrave ultraheroic ultrahonorable ultrahuman ultraimperialism ultraimperialist ultraimpersonal ultrainclusive ultraindifferent ultraindulgent ultraingenious ultrainsistent ultraintimate ultrainvolved ultraism ultraist ultraistic ultralaborious ultralegality ultralenient ultraliberal ultraliberalism ultralogical ultraloyal ultraluxurious ultramarine ultramaternal ultramaximal ultramelancholy ultramicrochemical ultramicrochemist ultramicrochemistry ultramicrometer ultramicron ultramicroscope ultramicroscopic ultramicroscopical ultramicroscopy ultraminute ultramoderate ultramodern ultramodernism ultramodernist ultramodernistic ultramodest ultramontane ultramontanism ultramontanist ultramorose ultramulish ultramundane ultranational ultranationalism ultranationalist ultranatural ultranegligent ultranice ultranonsensical ultraobscure ultraobstinate ultraofficious ultraoptimistic ultraornate ultraorthodox ultraorthodoxy ultraoutrageous ultrapapist ultraparallel ultraperfect ultrapersuasive ultraphotomicrograph ultrapious ultraplanetary ultraplausible ultrapopish ultraproud ultraprudent ultraradical ultraradicalism ultrarapid ultrareactionary ultrared ultrarefined ultrarefinement ultrareligious ultraremuneration ultrarepublican ultrarevolutionary ultrarevolutionist ultraritualism ultraromantic ultraroyalism ultraroyalist ultrasanguine ultrascholastic ultraselect ultraservile ultrasevere ultrashrewd ultrasimian ultrasolemn ultrasonic ultrasonics ultraspartan ultraspecialization ultraspiritualism ultrasplendid ultrastandardization ultrastellar ultrasterile ultrastrenuous ultrastrict ultrasubtle ultrasystematic ultratechnical ultratense ultraterrene ultraterrestrial ultratotal ultratrivial ultratropical ultraugly ultrauncommon ultraurgent ultravicious ultraviolent ultraviolet ultravirtuous ultravirus ultravisible ultrawealthy ultrawise ultrayoung ultrazealous ultrazodiacal ultroneous ultroneously ultroneousness ulu Ulua ulua uluhi ululant ululate ululation ululative ululatory ululu Ulva Ulvaceae ulvaceous Ulvales Ulvan Ulyssean Ulysses um umangite Umatilla Umaua umbeclad umbel umbeled umbella Umbellales umbellar umbellate umbellated umbellately umbellet umbellic umbellifer Umbelliferae umbelliferone umbelliferous umbelliflorous umbelliform umbelloid Umbellula Umbellularia umbellulate umbellule Umbellulidae umbelluliferous umbelwort umber umbethink umbilectomy umbilic umbilical umbilically umbilicar Umbilicaria umbilicate umbilicated umbilication umbilici umbiliciform umbilicus umbiliform umbilroot umble umbo umbolateral umbonal umbonate umbonated umbonation umbone umbones umbonial umbonic umbonulate umbonule Umbra umbra umbracious umbraciousness umbraculate umbraculiferous umbraculiform umbraculum umbrae umbrage umbrageous umbrageously umbrageousness umbral umbrally umbratile umbrel umbrella umbrellaed umbrellaless umbrellalike umbrellawise umbrellawort umbrette Umbrian Umbriel umbriferous umbriferously umbriferousness umbril umbrine umbrose umbrosity umbrous Umbundu ume umiak umiri umlaut ump umph umpirage umpire umpirer umpireship umpiress umpirism Umpqua umpteen umpteenth umptekite umptieth umpty umquhile umu un Una unabandoned unabased unabasedly unabashable unabashed unabashedly unabatable unabated unabatedly unabating unabatingly unabbreviated unabetted unabettedness unabhorred unabiding unabidingly unabidingness unability unabject unabjured unable unableness unably unabolishable unabolished unabraded unabrased unabridgable unabridged unabrogated unabrupt unabsent unabsolute unabsolvable unabsolved unabsolvedness unabsorb unabsorbable unabsorbed unabsorbent unabstract unabsurd unabundance unabundant unabundantly unabused unacademic unacademical unaccelerated unaccent unaccented unaccentuated unaccept unacceptability unacceptable unacceptableness unacceptably unacceptance unacceptant unaccepted unaccessibility unaccessible unaccessibleness unaccessibly unaccessional unaccessory unaccidental unaccidentally unaccidented unacclimated unacclimation unacclimatization unacclimatized unaccommodable unaccommodated unaccommodatedness unaccommodating unaccommodatingly unaccommodatingness unaccompanable unaccompanied unaccompanying unaccomplishable unaccomplished unaccomplishedness unaccord unaccordable unaccordance unaccordant unaccorded unaccording unaccordingly unaccostable unaccosted unaccountability unaccountable unaccountableness unaccountably unaccounted unaccoutered unaccoutred unaccreditated unaccredited unaccrued unaccumulable unaccumulate unaccumulated unaccumulation unaccuracy unaccurate unaccurately unaccurateness unaccursed unaccusable unaccusably unaccuse unaccusing unaccustom unaccustomed unaccustomedly unaccustomedness unachievable unachieved unaching unacidulated unacknowledged unacknowledgedness unacknowledging unacknowledgment unacoustic unacquaint unacquaintable unacquaintance unacquainted unacquaintedly unacquaintedness unacquiescent unacquirable unacquirableness unacquirably unacquired unacquit unacquittable unacquitted unacquittedness unact unactability unactable unacted unacting unactinic unaction unactivated unactive unactively unactiveness unactivity unactorlike unactual unactuality unactually unactuated unacute unacutely unadapt unadaptability unadaptable unadaptableness unadaptably unadapted unadaptedly unadaptedness unadaptive unadd unaddable unadded unaddicted unaddictedness unadditional unaddress unaddressed unadequate unadequately unadequateness unadherence unadherent unadherently unadhesive unadjacent unadjacently unadjectived unadjourned unadjournment unadjudged unadjust unadjustably unadjusted unadjustment unadministered unadmirable unadmire unadmired unadmiring unadmissible unadmissibly unadmission unadmittable unadmittableness unadmittably unadmitted unadmittedly unadmitting unadmonished unadopt unadoptable unadoptably unadopted unadoption unadorable unadoration unadored unadoring unadorn unadornable unadorned unadornedly unadornedness unadornment unadult unadulterate unadulterated unadulteratedly unadulteratedness unadulterately unadulterous unadulterously unadvanced unadvancedly unadvancedness unadvancement unadvancing unadvantaged unadvantageous unadventured unadventuring unadventurous unadventurously unadverse unadversely unadverseness unadvertency unadvertised unadvertisement unadvertising unadvisability unadvisable unadvisableness unadvisably unadvised unadvisedly unadvisedness unadvocated unaerated unaesthetic unaesthetical unafeard unafeared unaffable unaffably unaffected unaffectedly unaffectedness unaffecting unaffectionate unaffectionately unaffectioned unaffianced unaffied unaffiliated unaffiliation unaffirmation unaffirmed unaffixed unafflicted unafflictedly unafflicting unaffliction unaffordable unafforded unaffranchised unaffrighted unaffrightedly unaffronted unafire unafloat unaflow unafraid unaged unaggravated unaggravating unaggregated unaggression unaggressive unaggressively unaggressiveness unaghast unagile unagility unaging unagitated unagitatedly unagitatedness unagitation unagonize unagrarian unagreeable unagreeableness unagreeably unagreed unagreeing unagreement unagricultural unaidable unaided unaidedly unaiding unailing unaimed unaiming unaired unaisled Unakhotana unakin unakite unal Unalachtigo unalarm unalarmed unalarming Unalaska unalcoholized unaldermanly unalert unalertly unalertness unalgebraical unalienable unalienableness unalienably unalienated unalignable unaligned unalike unalimentary unalist unalive unallayable unallayably unallayed unalleged unallegorical unalleviably unalleviated unalleviation unalliable unallied unalliedly unalliedness unallotment unallotted unallow unallowable unallowed unallowedly unallowing unalloyed unallurable unallured unalluring unalluringly unalmsed unalone unaloud unalphabeted unalphabetic unalphabetical unalterability unalterable unalterableness unalterably unalteration unaltered unaltering unalternated unamalgamable unamalgamated unamalgamating unamassed unamazed unamazedly unambiguity unambiguous unambiguously unambiguousness unambition unambitious unambitiously unambitiousness unambrosial unambush unamenability unamenable unamenableness unamenably unamend unamendable unamended unamendedly unamending unamendment unamerced Unami unamiability unamiable unamiableness unamiably unamicable unamicably unamiss unamo unamortization unamortized unample unamplifiable unamplified unamply unamputated unamusable unamusably unamused unamusement unamusing unamusingly unamusive unanalogical unanalogous unanalogously unanalogousness unanalytic unanalytical unanalyzable unanalyzed unanalyzing unanatomizable unanatomized unancestored unancestried unanchor unanchored unanchylosed unancient unaneled unangelic unangelical unangrily unangry unangular unanimalized unanimate unanimated unanimatedly unanimatedness unanimately unanimism unanimist unanimistic unanimistically unanimity unanimous unanimously unanimousness unannealed unannex unannexed unannexedly unannexedness unannihilable unannihilated unannotated unannounced unannoyed unannoying unannullable unannulled unanointed unanswerability unanswerable unanswerableness unanswerably unanswered unanswering unantagonistic unantagonizable unantagonized unantagonizing unanticipated unanticipating unanticipatingly unanticipation unanticipative unantiquated unantiquatedness unantique unantiquity unanxiety unanxious unanxiously unanxiousness unapart unapocryphal unapologetic unapologizing unapostatized unapostolic unapostolical unapostolically unapostrophized unappalled unappareled unapparent unapparently unapparentness unappealable unappealableness unappealably unappealed unappealing unappeasable unappeasableness unappeasably unappeased unappeasedly unappeasedness unappendaged unapperceived unappertaining unappetizing unapplauded unapplauding unapplausive unappliable unappliableness unappliably unapplianced unapplicable unapplicableness unapplicably unapplied unapplying unappoint unappointable unappointableness unappointed unapportioned unapposite unappositely unappraised unappreciable unappreciableness unappreciably unappreciated unappreciating unappreciation unappreciative unappreciatively unappreciativeness unapprehendable unapprehendableness unapprehendably unapprehended unapprehending unapprehensible unapprehensibleness unapprehension unapprehensive unapprehensively unapprehensiveness unapprenticed unapprised unapprisedly unapprisedness unapproachability unapproachable unapproachableness unapproached unapproaching unapprobation unappropriable unappropriate unappropriated unappropriately unappropriateness unappropriation unapprovable unapprovableness unapprovably unapproved unapproving unapprovingly unapproximate unapproximately unaproned unapropos unapt unaptitude unaptly unaptness unarbitrarily unarbitrariness unarbitrary unarbitrated unarch unarchdeacon unarched unarchitectural unarduous unarguable unarguableness unarguably unargued unarguing unargumentative unargumentatively unarisen unarising unaristocratic unaristocratically unarithmetical unarithmetically unark unarm unarmed unarmedly unarmedness unarmored unarmorial unaromatized unarousable unaroused unarousing unarraignable unarraigned unarranged unarray unarrayed unarrestable unarrested unarresting unarrival unarrived unarriving unarrogance unarrogant unarrogating unarted unartful unartfully unartfulness unarticled unarticulate unarticulated unartificial unartificiality unartificially unartistic unartistical unartistically unartistlike unary unascendable unascendableness unascended unascertainable unascertainableness unascertainably unascertained unashamed unashamedly unashamedness unasinous unaskable unasked unasking unasleep unaspersed unasphalted unaspirated unaspiring unaspiringly unaspiringness unassailable unassailableness unassailably unassailed unassailing unassassinated unassaultable unassaulted unassayed unassaying unassembled unassented unassenting unasserted unassertive unassertiveness unassessable unassessableness unassessed unassibilated unassiduous unassignable unassignably unassigned unassimilable unassimilated unassimilating unassimilative unassisted unassisting unassociable unassociably unassociated unassociative unassociativeness unassoiled unassorted unassuageable unassuaged unassuaging unassuetude unassumable unassumed unassuming unassumingly unassumingness unassured unassuredly unassuredness unassuring unasterisk unastonish unastonished unastonishment unastray unathirst unathletically unatmospheric unatonable unatoned unatoning unattach unattachable unattached unattackable unattackableness unattackably unattacked unattainability unattainable unattainableness unattainably unattained unattaining unattainment unattaint unattainted unattaintedly unattempered unattemptable unattempted unattempting unattendance unattendant unattended unattentive unattenuated unattested unattestedness unattire unattired unattractable unattractableness unattracted unattracting unattractive unattractively unattractiveness unattributable unattributed unattuned unau unauctioned unaudible unaudibleness unaudibly unaudienced unaudited unaugmentable unaugmented unauspicious unauspiciously unauspiciousness unaustere unauthentic unauthentical unauthentically unauthenticated unauthenticity unauthorish unauthoritative unauthoritatively unauthoritativeness unauthoritied unauthoritiveness unauthorizable unauthorize unauthorized unauthorizedly unauthorizedness unautomatic unautumnal unavailability unavailable unavailableness unavailably unavailed unavailful unavailing unavailingly unavengeable unavenged unavenging unavenued unaveraged unaverred unaverted unavertible unavertibleness unavertibly unavian unavoidable unavoidableness unavoidably unavoidal unavoided unavoiding unavouchable unavouchableness unavouchably unavouched unavowable unavowableness unavowably unavowed unavowedly unawakable unawakableness unawake unawaked unawakened unawakenedness unawakening unawaking unawardable unawardableness unawardably unawarded unaware unawared unawaredly unawareness unawares unaway unawed unawful unawfully unawkward unawned unaxled unazotized unbackboarded unbacked unbackward unbadged unbaffled unbaffling unbag unbagged unbailable unbailableness unbailed unbain unbait unbaited unbaized unbaked unbalance unbalanceable unbalanceably unbalanced unbalancement unbalancing unbalconied unbale unbalked unballast unballasted unballoted unbandage unbandaged unbanded unbanished unbank unbankable unbankableness unbankably unbanked unbankrupt unbannered unbaptize unbaptized unbar unbarb unbarbarize unbarbarous unbarbed unbarbered unbare unbargained unbark unbarking unbaronet unbarrable unbarred unbarrel unbarreled unbarren unbarrenness unbarricade unbarricaded unbarricadoed unbase unbased unbasedness unbashful unbashfully unbashfulness unbasket unbastardized unbaste unbasted unbastilled unbastinadoed unbated unbathed unbating unbatted unbatten unbatterable unbattered unbattling unbay unbe unbeached unbeaconed unbeaded unbear unbearable unbearableness unbearably unbeard unbearded unbearing unbeast unbeatable unbeatableness unbeatably unbeaten unbeaued unbeauteous unbeauteously unbeauteousness unbeautified unbeautiful unbeautifully unbeautifulness unbeautify unbeavered unbeclogged unbeclouded unbecome unbecoming unbecomingly unbecomingness unbed unbedabbled unbedaggled unbedashed unbedaubed unbedded unbedecked unbedewed unbedimmed unbedinned unbedizened unbedraggled unbefit unbefitting unbefittingly unbefittingness unbefool unbefriend unbefriended unbefringed unbeget unbeggar unbegged unbegilt unbeginning unbeginningly unbeginningness unbegirded unbegirt unbegot unbegotten unbegottenly unbegottenness unbegreased unbegrimed unbegrudged unbeguile unbeguiled unbeguileful unbegun unbehaving unbeheaded unbeheld unbeholdable unbeholden unbeholdenness unbeholding unbehoveful unbehoving unbeing unbejuggled unbeknown unbeknownst unbelied unbelief unbeliefful unbelieffulness unbelievability unbelievable unbelievableness unbelievably unbelieve unbelieved unbeliever unbelieving unbelievingly unbelievingness unbell unbellicose unbelligerent unbelonging unbeloved unbelt unbemoaned unbemourned unbench unbend unbendable unbendableness unbendably unbended unbending unbendingly unbendingness unbendsome unbeneficed unbeneficent unbeneficial unbenefitable unbenefited unbenefiting unbenetted unbenevolence unbenevolent unbenevolently unbenight unbenighted unbenign unbenignant unbenignantly unbenignity unbenignly unbent unbenumb unbenumbed unbequeathable unbequeathed unbereaved unbereft unberouged unberth unberufen unbeseem unbeseeming unbeseemingly unbeseemingness unbeseemly unbeset unbesieged unbesmeared unbesmirched unbesmutted unbesot unbesought unbespeak unbespoke unbespoken unbesprinkled unbestarred unbestowed unbet unbeteared unbethink unbethought unbetide unbetoken unbetray unbetrayed unbetraying unbetrothed unbetterable unbettered unbeveled unbewailed unbewailing unbewilder unbewildered unbewilled unbewitch unbewitched unbewitching unbewrayed unbewritten unbias unbiasable unbiased unbiasedly unbiasedness unbibulous unbickered unbickering unbid unbidable unbiddable unbidden unbigged unbigoted unbilled unbillet unbilleted unbind unbindable unbinding unbiographical unbiological unbirdlike unbirdlimed unbirdly unbirthday unbishop unbishoply unbit unbiting unbitt unbitted unbitten unbitter unblacked unblackened unblade unblamable unblamableness unblamably unblamed unblaming unblanched unblanketed unblasphemed unblasted unblazoned unbleached unbleaching unbled unbleeding unblemishable unblemished unblemishedness unblemishing unblenched unblenching unblenchingly unblendable unblended unblent unbless unblessed unblessedness unblest unblighted unblightedly unblightedness unblind unblindfold unblinking unblinkingly unbliss unblissful unblistered unblithe unblithely unblock unblockaded unblocked unblooded unbloodied unbloodily unbloodiness unbloody unbloom unbloomed unblooming unblossomed unblossoming unblotted unbloused unblown unblued unbluestockingish unbluffed unbluffing unblunder unblundered unblundering unblunted unblurred unblush unblushing unblushingly unblushingness unboarded unboasted unboastful unboastfully unboasting unboat unbodied unbodiliness unbodily unboding unbodkined unbody unbodylike unbog unboggy unbohemianize unboiled unboisterous unbokel unbold unbolden unboldly unboldness unbolled unbolster unbolstered unbolt unbolted unbombast unbondable unbondableness unbonded unbone unboned unbonnet unbonneted unbonny unbooked unbookish unbooklearned unboot unbooted unboraxed unborder unbordered unbored unboring unborn unborne unborough unborrowed unborrowing unbosom unbosomer unbossed unbotanical unbothered unbothering unbottle unbottom unbottomed unbought unbound unboundable unboundableness unboundably unbounded unboundedly unboundedness unboundless unbounteous unbountiful unbountifully unbountifulness unbow unbowable unbowdlerized unbowed unbowel unboweled unbowered unbowing unbowingness unbowled unbowsome unbox unboxed unboy unboyish unboylike unbrace unbraced unbracedness unbracelet unbraceleted unbracing unbragged unbragging unbraid unbraided unbrailed unbrained unbran unbranched unbranching unbrand unbranded unbrandied unbrave unbraved unbravely unbraze unbreachable unbreached unbreaded unbreakable unbreakableness unbreakably unbreakfasted unbreaking unbreast unbreath unbreathable unbreathableness unbreathed unbreathing unbred unbreech unbreeched unbreezy unbrent unbrewed unbribable unbribableness unbribably unbribed unbribing unbrick unbridegroomlike unbridgeable unbridged unbridle unbridled unbridledly unbridledness unbridling unbrief unbriefed unbriefly unbright unbrightened unbrilliant unbrimming unbrined unbrittle unbroached unbroad unbroadcasted unbroidered unbroiled unbroke unbroken unbrokenly unbrokenness unbronzed unbrooch unbrooded unbrookable unbrookably unbrothered unbrotherlike unbrotherliness unbrotherly unbrought unbrown unbrowned unbruised unbrushed unbrutalize unbrutalized unbrute unbrutelike unbrutify unbrutize unbuckle unbuckramed unbud unbudded unbudgeability unbudgeable unbudgeableness unbudgeably unbudged unbudgeted unbudging unbuffed unbuffered unbuffeted unbuild unbuilded unbuilt unbulky unbulled unbulletined unbumped unbumptious unbunched unbundle unbundled unbung unbungling unbuoyant unbuoyed unburden unburdened unburdenment unburdensome unburdensomeness unburgessed unburiable unburial unburied unburlesqued unburly unburn unburnable unburned unburning unburnished unburnt unburrow unburrowed unburst unburstable unburstableness unburthen unbury unbush unbusied unbusily unbusiness unbusinesslike unbusk unbuskin unbuskined unbustling unbusy unbutchered unbutcherlike unbuttered unbutton unbuttoned unbuttonment unbuttressed unbuxom unbuxomly unbuxomness unbuyable unbuyableness unbuying unca uncabined uncabled uncadenced uncage uncaged uncake uncalcareous uncalcified uncalcined uncalculable uncalculableness uncalculably uncalculated uncalculating uncalculatingly uncalendered uncalk uncalked uncall uncalled uncallow uncallower uncalm uncalmed uncalmly uncalumniated uncambered uncamerated uncamouflaged uncanceled uncancellable uncancelled uncandid uncandidly uncandidness uncandied uncandor uncaned uncankered uncanned uncannily uncanniness uncanny uncanonic uncanonical uncanonically uncanonicalness uncanonize uncanonized uncanopied uncantoned uncantonized uncanvassably uncanvassed uncap uncapable uncapableness uncapably uncapacious uncapacitate uncaparisoned uncapitalized uncapped uncapper uncapsizable uncapsized uncaptained uncaptioned uncaptious uncaptiously uncaptivate uncaptivated uncaptivating uncaptived uncapturable uncaptured uncarbonated uncarboned uncarbureted uncarded uncardinal uncardinally uncareful uncarefully uncarefulness uncaressed uncargoed Uncaria uncaricatured uncaring uncarnate uncarnivorous uncaroled uncarpentered uncarpeted uncarriageable uncarried uncart uncarted uncartooned uncarved uncase uncased uncasemated uncask uncasked uncasketed uncasque uncassock uncast uncaste uncastigated uncastle uncastled uncastrated uncasual uncatalogued uncatchable uncate uncatechised uncatechisedness uncatechized uncatechizedness uncategorized uncathedraled uncatholcity uncatholic uncatholical uncatholicalness uncatholicize uncatholicly uncaucusable uncaught uncausatively uncaused uncauterized uncautious uncautiously uncautiousness uncavalier uncavalierly uncave unceasable unceased unceasing unceasingly unceasingness unceded unceiled unceilinged uncelebrated uncelebrating uncelestial uncelestialized uncellar uncement uncemented uncementing uncensorable uncensored uncensorious uncensoriously uncensoriousness uncensurable uncensured uncensuring uncenter uncentered uncentral uncentrality uncentrally uncentred uncentury uncereclothed unceremented unceremonial unceremonious unceremoniously unceremoniousness uncertain uncertainly uncertainness uncertainty uncertifiable uncertifiableness uncertificated uncertified uncertifying uncertitude uncessant uncessantly uncessantness unchafed unchain unchainable unchained unchair unchaired unchalked unchallengeable unchallengeableness unchallengeably unchallenged unchallenging unchambered unchamfered unchampioned unchance unchancellor unchancy unchange unchangeability unchangeable unchangeableness unchangeably unchanged unchangedness unchangeful unchangefulness unchanging unchangingly unchangingness unchanneled unchannelled unchanted unchaperoned unchaplain unchapleted unchapter unchaptered uncharacter uncharactered uncharacteristic uncharacteristically uncharacterized uncharge unchargeable uncharged uncharging uncharily unchariness unchariot uncharitable uncharitableness uncharitably uncharity uncharm uncharmable uncharmed uncharming uncharnel uncharred uncharted unchartered unchary unchased unchaste unchastely unchastened unchasteness unchastisable unchastised unchastising unchastity unchatteled unchauffeured unchawed uncheat uncheated uncheating uncheck uncheckable unchecked uncheckered uncheerable uncheered uncheerful uncheerfully uncheerfulness uncheerily uncheeriness uncheering uncheery unchemical unchemically uncherished uncherishing unchested unchevroned unchewable unchewableness unchewed unchid unchidden unchided unchiding unchidingly unchild unchildish unchildishly unchildishness unchildlike unchilled unchiming unchinked unchipped unchiseled unchiselled unchivalric unchivalrous unchivalrously unchivalrousness unchivalry unchloridized unchoicely unchokable unchoked uncholeric unchoosable unchopped unchoral unchorded unchosen unchrisom unchristen unchristened unchristian unchristianity unchristianize unchristianized unchristianlike unchristianly unchristianness unchronicled unchronological unchronologically unchurch unchurched unchurchlike unchurchly unchurn unci uncia uncial uncialize uncially uncicatrized unciferous unciform unciliated uncinal Uncinaria uncinariasis uncinariatic Uncinata uncinate uncinated uncinatum uncinch uncinct uncinctured uncini Uncinula uncinus uncipher uncircular uncircularized uncirculated uncircumcised uncircumcisedness uncircumcision uncircumlocutory uncircumscribable uncircumscribed uncircumscribedness uncircumscript uncircumscriptible uncircumscription uncircumspect uncircumspection uncircumspectly uncircumspectness uncircumstanced uncircumstantial uncirostrate uncite uncited uncitied uncitizen uncitizenlike uncitizenly uncity uncivic uncivil uncivilish uncivility uncivilizable uncivilization uncivilize uncivilized uncivilizedly uncivilizedness uncivilly uncivilness unclad unclaimed unclaiming unclamorous unclamp unclamped unclarified unclarifying unclarity unclashing unclasp unclasped unclassable unclassableness unclassably unclassed unclassible unclassical unclassically unclassifiable unclassifiableness unclassification unclassified unclassify unclassifying unclawed unclay unclayed uncle unclead unclean uncleanable uncleaned uncleanlily uncleanliness uncleanly uncleanness uncleansable uncleanse uncleansed uncleansedness unclear uncleared unclearing uncleavable uncleave uncledom uncleft unclehood unclement unclemently unclementness unclench unclergy unclergyable unclerical unclericalize unclerically unclericalness unclerklike unclerkly uncleship unclever uncleverly uncleverness unclew unclick uncliented unclify unclimaxed unclimb unclimbable unclimbableness unclimbably unclimbed unclimbing unclinch uncling unclinical unclip unclipped unclipper uncloak uncloakable uncloaked unclog unclogged uncloister uncloistered uncloistral unclosable unclose unclosed uncloseted unclothe unclothed unclothedly unclothedness unclotted uncloud unclouded uncloudedly uncloudedness uncloudy unclout uncloven uncloyable uncloyed uncloying unclub unclubbable unclubby unclustered unclustering unclutch unclutchable unclutched unclutter uncluttered unco uncoach uncoachable uncoachableness uncoached uncoacted uncoagulable uncoagulated uncoagulating uncoat uncoated uncoatedness uncoaxable uncoaxed uncoaxing uncock uncocked uncockneyfy uncocted uncodded uncoddled uncoded uncodified uncoerced uncoffer uncoffin uncoffined uncoffle uncogent uncogged uncogitable uncognizable uncognizant uncognized uncognoscibility uncognoscible uncoguidism uncoherent uncoherently uncoherentness uncohesive uncoif uncoifed uncoil uncoiled uncoin uncoined uncoked uncoking uncollapsed uncollapsible uncollar uncollared uncollated uncollatedness uncollected uncollectedly uncollectedness uncollectible uncollectibleness uncollectibly uncolleged uncollegian uncollegiate uncolloquial uncolloquially uncolonellike uncolonial uncolonize uncolonized uncolorable uncolorably uncolored uncoloredly uncoloredness uncoloured uncolouredly uncolouredness uncolt uncoly uncombable uncombatable uncombated uncombed uncombinable uncombinableness uncombinably uncombine uncombined uncombining uncombiningness uncombustible uncome uncomelily uncomeliness uncomely uncomfort uncomfortable uncomfortableness uncomfortably uncomforted uncomforting uncomfy uncomic uncommanded uncommandedness uncommanderlike uncommemorated uncommenced uncommendable uncommendableness uncommendably uncommended uncommensurability uncommensurable uncommensurableness uncommensurate uncommented uncommenting uncommerciable uncommercial uncommercially uncommercialness uncommingled uncomminuted uncommiserated uncommiserating uncommissioned uncommitted uncommitting uncommixed uncommodious uncommodiously uncommodiousness uncommon uncommonable uncommonly uncommonness uncommonplace uncommunicable uncommunicableness uncommunicably uncommunicated uncommunicating uncommunicative uncommunicatively uncommunicativeness uncommutable uncommutative uncommuted uncompact uncompacted Uncompahgre uncompahgrite uncompaniable uncompanied uncompanioned uncomparable uncomparably uncompared uncompass uncompassable uncompassed uncompassion uncompassionate uncompassionated uncompassionately uncompassionateness uncompassionating uncompassioned uncompatible uncompatibly uncompellable uncompelled uncompelling uncompensable uncompensated uncompetent uncompetitive uncompiled uncomplacent uncomplained uncomplaining uncomplainingly uncomplainingness uncomplaint uncomplaisance uncomplaisant uncomplaisantly uncomplemental uncompletable uncomplete uncompleted uncompletely uncompleteness uncomplex uncompliability uncompliable uncompliableness uncompliance uncompliant uncomplicated uncomplimentary uncomplimented uncomplimenting uncomplying uncomposable uncomposeable uncomposed uncompoundable uncompounded uncompoundedly uncompoundedness uncompounding uncomprehended uncomprehending uncomprehendingly uncomprehendingness uncomprehensible uncomprehension uncomprehensive uncomprehensively uncomprehensiveness uncompressed uncompressible uncomprised uncomprising uncomprisingly uncompromised uncompromising uncompromisingly uncompromisingness uncompulsive uncompulsory uncomputable uncomputableness uncomputably uncomputed uncomraded unconcatenated unconcatenating unconcealable unconcealableness unconcealably unconcealed unconcealing unconcealingly unconcealment unconceded unconceited unconceivable unconceivableness unconceivably unconceived unconceiving unconcern unconcerned unconcernedly unconcernedness unconcerning unconcernment unconcertable unconcerted unconcertedly unconcertedness unconcessible unconciliable unconciliated unconciliatedness unconciliating unconciliatory unconcludable unconcluded unconcluding unconcludingness unconclusive unconclusively unconclusiveness unconcocted unconcordant unconcrete unconcreted unconcurrent unconcurring uncondemnable uncondemned uncondensable uncondensableness uncondensed uncondensing uncondescending uncondescension uncondition unconditional unconditionality unconditionally unconditionalness unconditionate unconditionated unconditionately unconditioned unconditionedly unconditionedness uncondoled uncondoling unconducing unconducive unconduciveness unconducted unconductive unconductiveness unconfected unconfederated unconferred unconfess unconfessed unconfessing unconfided unconfidence unconfident unconfidential unconfidentialness unconfidently unconfiding unconfinable unconfine unconfined unconfinedly unconfinedness unconfinement unconfining unconfirm unconfirmative unconfirmed unconfirming unconfiscable unconfiscated unconflicting unconflictingly unconflictingness unconformability unconformable unconformableness unconformably unconformed unconformedly unconforming unconformist unconformity unconfound unconfounded unconfoundedly unconfrontable unconfronted unconfusable unconfusably unconfused unconfusedly unconfutable unconfuted unconfuting uncongeal uncongealable uncongealed uncongenial uncongeniality uncongenially uncongested unconglobated unconglomerated unconglutinated uncongratulate uncongratulated uncongratulating uncongregated uncongregational uncongressional uncongruous unconjecturable unconjectured unconjoined unconjugal unconjugated unconjunctive unconjured unconnected unconnectedly unconnectedness unconned unconnived unconniving unconquerable unconquerableness unconquerably unconquered unconscienced unconscient unconscientious unconscientiously unconscientiousness unconscionable unconscionableness unconscionably unconscious unconsciously unconsciousness unconsecrate unconsecrated unconsecratedly unconsecratedness unconsecration unconsecutive unconsent unconsentaneous unconsented unconsenting unconsequential unconsequentially unconsequentialness unconservable unconservative unconserved unconserving unconsiderable unconsiderate unconsiderately unconsiderateness unconsidered unconsideredly unconsideredness unconsidering unconsideringly unconsignable unconsigned unconsistent unconsociable unconsociated unconsolable unconsolably unconsolatory unconsoled unconsolidated unconsolidating unconsolidation unconsoling unconsonancy unconsonant unconsonantly unconsonous unconspicuous unconspicuously unconspicuousness unconspired unconspiring unconspiringly unconspiringness unconstancy unconstant unconstantly unconstantness unconstellated unconstipated unconstituted unconstitutional unconstitutionalism unconstitutionality unconstitutionally unconstrainable unconstrained unconstrainedly unconstrainedness unconstraining unconstraint unconstricted unconstruable unconstructed unconstructive unconstructural unconstrued unconsular unconsult unconsultable unconsulted unconsulting unconsumable unconsumed unconsuming unconsummate unconsummated unconsumptive uncontagious uncontainable uncontainableness uncontainably uncontained uncontaminable uncontaminate uncontaminated uncontemned uncontemnedly uncontemplated uncontemporaneous uncontemporary uncontemptuous uncontended uncontending uncontent uncontentable uncontented uncontentedly uncontentedness uncontenting uncontentingness uncontentious uncontentiously uncontentiousness uncontestable uncontestableness uncontestably uncontested uncontestedly uncontestedness uncontinence uncontinent uncontinental uncontinented uncontinently uncontinual uncontinued uncontinuous uncontorted uncontract uncontracted uncontractedness uncontractile uncontradictable uncontradictableness uncontradictably uncontradicted uncontradictedly uncontradictious uncontradictory uncontrastable uncontrasted uncontrasting uncontributed uncontributing uncontributory uncontrite uncontrived uncontriving uncontrol uncontrollability uncontrollable uncontrollableness uncontrollably uncontrolled uncontrolledly uncontrolledness uncontrolling uncontroversial uncontroversially uncontrovertable uncontrovertableness uncontrovertably uncontroverted uncontrovertedly uncontrovertible uncontrovertibleness uncontrovertibly unconvenable unconvened unconvenience unconvenient unconveniently unconventional unconventionalism unconventionality unconventionalize unconventionally unconventioned unconversable unconversableness unconversably unconversant unconversational unconversion unconvert unconverted unconvertedly unconvertedness unconvertibility unconvertible unconveyable unconveyed unconvicted unconvicting unconvince unconvinced unconvincedly unconvincedness unconvincibility unconvincible unconvincing unconvincingly unconvincingness unconvoluted unconvoyed unconvulsed uncookable uncooked uncooled uncoop uncooped uncoopered uncooping uncope uncopiable uncopied uncopious uncopyrighted uncoquettish uncoquettishly uncord uncorded uncordial uncordiality uncordially uncording uncore uncored uncork uncorked uncorker uncorking uncorned uncorner uncoronated uncoroneted uncorporal uncorpulent uncorrect uncorrectable uncorrected uncorrectible uncorrectly uncorrectness uncorrelated uncorrespondency uncorrespondent uncorresponding uncorrigible uncorrigibleness uncorrigibly uncorroborated uncorroded uncorrugated uncorrupt uncorrupted uncorruptedly uncorruptedness uncorruptibility uncorruptible uncorruptibleness uncorruptibly uncorrupting uncorruption uncorruptive uncorruptly uncorruptness uncorseted uncosseted uncost uncostliness uncostly uncostumed uncottoned uncouch uncouched uncouching uncounselable uncounseled uncounsellable uncounselled uncountable uncountableness uncountably uncounted uncountenanced uncounteracted uncounterbalanced uncounterfeit uncounterfeited uncountermandable uncountermanded uncountervailed uncountess uncountrified uncouple uncoupled uncoupler uncourageous uncoursed uncourted uncourteous uncourteously uncourteousness uncourtierlike uncourting uncourtlike uncourtliness uncourtly uncous uncousinly uncouth uncouthie uncouthly uncouthness uncouthsome uncovenant uncovenanted uncover uncoverable uncovered uncoveredly uncoveted uncoveting uncovetingly uncovetous uncowed uncowl uncoy uncracked uncradled uncraftily uncraftiness uncrafty uncram uncramp uncramped uncrampedness uncranked uncrannied uncrated uncravatted uncraven uncraving uncravingly uncrazed uncream uncreased uncreatability uncreatable uncreatableness uncreate uncreated uncreatedness uncreating uncreation uncreative uncreativeness uncreaturely uncredentialed uncredentialled uncredibility uncredible uncredibly uncreditable uncreditableness uncreditably uncredited uncrediting uncredulous uncreeping uncreosoted uncrest uncrested uncrevassed uncrib uncried uncrime uncriminal uncriminally uncrinkle uncrinkled uncrinkling uncrippled uncrisp uncritical uncritically uncriticisable uncriticised uncriticising uncriticisingly uncriticism uncriticizable uncriticized uncriticizing uncriticizingly uncrochety uncrook uncrooked uncrooking uncropped uncropt uncross uncrossable uncrossableness uncrossed uncrossexaminable uncrossexamined uncrossly uncrowded uncrown uncrowned uncrowning uncrucified uncrudded uncrude uncruel uncrumbled uncrumple uncrumpling uncrushable uncrushed uncrusted uncrying uncrystaled uncrystalled uncrystalline uncrystallizability uncrystallizable uncrystallized unction unctional unctioneer unctionless unctious unctiousness unctorium unctuose unctuosity unctuous unctuously unctuousness uncubbed uncubic uncuckold uncuckolded uncudgelled uncuffed uncular unculled uncultivability uncultivable uncultivate uncultivated uncultivation unculturable unculture uncultured uncumber uncumbered uncumbrous uncunning uncunningly uncunningness uncupped uncurable uncurableness uncurably uncurb uncurbable uncurbed uncurbedly uncurbing uncurd uncurdled uncurdling uncured uncurious uncuriously uncurl uncurled uncurling uncurrent uncurrently uncurrentness uncurricularized uncurried uncurse uncursed uncursing uncurst uncurtailed uncurtain uncurtained uncus uncushioned uncusped uncustomable uncustomarily uncustomariness uncustomary uncustomed uncut uncuth uncuticulate uncuttable uncynical uncynically uncypress undabbled undaggled undaily undaintiness undainty undallying undam undamageable undamaged undamaging undamasked undammed undamming undamn undamped undancing undandiacal undandled undangered undangerous undangerousness undared undaring undark undarken undarkened undarned undashed undatable undate undateable undated undatedness undaub undaubed undaughter undaughterliness undaughterly undauntable undaunted undauntedly undauntedness undaunting undawned undawning undazed undazing undazzle undazzled undazzling unde undead undeadened undeaf undealable undealt undean undear undebarred undebased undebatable undebated undebating undebauched undebilitated undebilitating undecagon undecanaphthene undecane undecatoic undecayable undecayableness undecayed undecayedness undecaying undeceased undeceitful undeceivable undeceivableness undeceivably undeceive undeceived undeceiver undeceiving undecency undecennary undecennial undecent undecently undeception undeceptious undeceptitious undeceptive undecidable undecide undecided undecidedly undecidedness undeciding undecimal undeciman undecimole undecipher undecipherability undecipherable undecipherably undeciphered undecision undecisive undecisively undecisiveness undeck undecked undeclaimed undeclaiming undeclamatory undeclarable undeclare undeclared undeclinable undeclinableness undeclinably undeclined undeclining undecocted undecoic undecolic undecomposable undecomposed undecompounded undecorated undecorative undecorous undecorously undecorousness undecorticated undecoyed undecreased undecreasing undecree undecreed undecried undecyl undecylenic undecylic undedicate undedicated undeducible undeducted undeeded undeemed undeemous undeemously undeep undefaceable undefaced undefalcated undefamed undefaming undefatigable undefaulted undefaulting undefeasible undefeat undefeatable undefeated undefeatedly undefeatedness undefecated undefectible undefective undefectiveness undefendable undefendableness undefendably undefended undefending undefense undefensed undefensible undeferential undeferentially undeferred undefiant undeficient undefied undefilable undefiled undefiledly undefiledness undefinable undefinableness undefinably undefine undefined undefinedly undefinedness undeflected undeflowered undeformed undeformedness undefrauded undefrayed undeft undegeneracy undegenerate undegenerated undegenerating undegraded undegrading undeification undeified undeify undeistical undejected undelated undelayable undelayed undelayedly undelaying undelayingly undelectable undelectably undelegated undeleted undeliberate undeliberated undeliberately undeliberateness undeliberating undeliberatingly undeliberative undeliberativeness undelible undelicious undelight undelighted undelightful undelightfully undelightfulness undelighting undelightsome undelimited undelineated undeliverable undeliverableness undelivered undelivery undeludable undelude undeluded undeluding undeluged undelusive undelusively undelve undelved undelylene undemagnetizable undemanded undemised undemocratic undemocratically undemocratize undemolishable undemolished undemonstrable undemonstrably undemonstratable undemonstrated undemonstrative undemonstratively undemonstrativeness undemure undemurring unden undeniable undeniableness undeniably undenied undeniedly undenizened undenominated undenominational undenominationalism undenominationalist undenominationalize undenominationally undenoted undenounced undenuded undepartableness undepartably undeparted undeparting undependable undependableness undependably undependent undepending undephlegmated undepicted undepleted undeplored undeported undeposable undeposed undeposited undepraved undepravedness undeprecated undepreciated undepressed undepressible undepressing undeprivable undeprived undepurated undeputed under underabyss underaccident underaccommodated underact underacted underacting underaction underactor underadjustment underadmiral underadventurer underage underagency underagent underagitation underaid underaim underair underalderman underanged underarch underargue underarm underaverage underback underbailiff underbake underbalance underballast underbank underbarber underbarring underbasal underbeadle underbeak underbeam underbear underbearer underbearing underbeat underbeaten underbed underbelly underbeveling underbid underbidder underbill underbillow underbishop underbishopric underbit underbite underbitted underbitten underboard underboated underbodice underbody underboil underboom underborn underborne underbottom underbough underbought underbound underbowed underbowser underbox underboy underbrace underbraced underbranch underbreath underbreathing underbred underbreeding underbrew underbridge underbrigadier underbright underbrim underbrush underbubble underbud underbuild underbuilder underbuilding underbuoy underburn underburned underburnt underbursar underbury underbush underbutler underbuy undercanopy undercanvass undercap undercapitaled undercapitalization undercapitalize undercaptain undercarder undercarriage undercarry undercarter undercarve undercarved undercase undercasing undercast undercause underceiling undercellar undercellarer underchamber underchamberlain underchancellor underchanter underchap undercharge undercharged underchief underchime underchin underchord underchurched undercircle undercitizen underclad underclass underclassman underclay underclearer underclerk underclerkship undercliff underclift undercloak undercloth underclothe underclothed underclothes underclothing underclub underclutch undercoachman undercoat undercoated undercoater undercoating undercollector undercolor undercolored undercoloring undercommander undercomment undercompounded underconcerned undercondition underconsciousness underconstable underconsume underconsumption undercook undercool undercooper undercorrect undercountenance undercourse undercourtier undercover undercovering undercovert undercrawl undercreep undercrest undercrier undercroft undercrop undercrust undercry undercrypt undercup undercurl undercurrent undercurve undercut undercutter undercutting underdauber underdeacon underdead underdebauchee underdeck underdepth underdevelop underdevelopment underdevil underdialogue underdig underdip underdish underdistinction underdistributor underditch underdive underdo underdoctor underdoer underdog underdoing underdone underdose underdot underdown underdraft underdrag underdrain underdrainage underdrainer underdraught underdraw underdrawers underdrawn underdress underdressed underdrift underdrive underdriven underdrudgery underdrumming underdry underdunged underearth undereat undereaten underedge undereducated underemployment underengraver underenter underer underescheator underestimate underestimation underexcited underexercise underexpose underexposure undereye underface underfaction underfactor underfaculty underfalconer underfall underfarmer underfeathering underfeature underfed underfeed underfeeder underfeeling underfeet underfellow underfiend underfill underfilling underfinance underfind underfire underfitting underflame underflannel underfleece underflood underfloor underflooring underflow underfold underfolded underfong underfoot underfootage underfootman underforebody underform underfortify underframe underframework underframing underfreight underfrequency underfringe underfrock underfur underfurnish underfurnisher underfurrow undergabble undergamekeeper undergaoler undergarb undergardener undergarment undergarnish undergauge undergear undergeneral undergentleman undergird undergirder undergirding undergirdle undergirth underglaze undergloom underglow undergnaw undergo undergod undergoer undergoing undergore undergoverness undergovernment undergovernor undergown undergrad undergrade undergraduate undergraduatedom undergraduateness undergraduateship undergraduatish undergraduette undergraining undergrass undergreen undergrieve undergroan underground undergrounder undergroundling undergrove undergrow undergrowl undergrown undergrowth undergrub underguard underguardian undergunner underhabit underhammer underhand underhanded underhandedly underhandedness underhang underhanging underhangman underhatch underhead underheat underheaven underhelp underhew underhid underhill underhint underhistory underhive underhold underhole underhonest underhorse underhorsed underhousemaid underhum underhung underided underinstrument underisive underissue underivable underivative underived underivedly underivedness underjacket underjailer underjanitor underjaw underjawed underjobbing underjudge underjungle underkeel underkeeper underkind underking underkingdom underlaborer underlaid underlain underland underlanguaged underlap underlapper underlash underlaundress underlawyer underlay underlayer underlaying underleaf underlease underleather underlegate underlessee underlet underletter underlevel underlever underlid underlie underlier underlieutenant underlife underlift underlight underliking underlimbed underlimit underline underlineation underlineman underlinement underlinen underliner underling underlining underlip underlive underload underlock underlodging underloft underlook underlooker underlout underlunged underly underlye underlying undermade undermaid undermaker underman undermanager undermanned undermanning undermark undermarshal undermarshalman undermasted undermaster undermatch undermatched undermate undermath undermeal undermeaning undermeasure undermediator undermelody undermentioned undermiller undermimic underminable undermine underminer undermining underminingly underminister underministry undermist undermoated undermoney undermoral undermost undermotion undermount undermountain undermusic undermuslin undern undername undernatural underneath underness underniceness undernote undernoted undernourish undernourished undernourishment undernsong underntide underntime undernurse undernutrition underoccupied underofficer underofficered underofficial underogating underogatory underopinion underorb underorganization underorseman underoverlooker underoxidize underpacking underpaid underpain underpainting underpan underpants underparticipation underpartner underpass underpassion underpay underpayment underpeep underpeer underpen underpeopled underpetticoat underpetticoated underpick underpier underpilaster underpile underpin underpinner underpinning underpitch underpitched underplain underplan underplant underplate underplay underplot underplotter underply underpoint underpole underpopulate underpopulation underporch underporter underpose underpossessor underpot underpower underpraise underprefect underprentice underpresence underpresser underpressure underprice underpriest underprincipal underprint underprior underprivileged underprize underproduce underproduction underproductive underproficient underprompt underprompter underproof underprop underproportion underproportioned underproposition underpropped underpropper underpropping underprospect underpry underpuke underqualified underqueen underquote underranger underrate underratement underrating underreach underread underreader underrealize underrealm underream underreamer underreceiver underreckon underrecompense underregion underregistration underrent underrented underrenting underrepresent underrepresentation underrespected underriddle underriding underrigged underring underripe underripened underriver underroarer underroast underrobe underrogue underroll underroller underroof underroom underroot underrooted underrower underrule underruler underrun underrunning undersacristan undersailed undersally undersap undersatisfaction undersaturate undersaturation undersavior undersaw undersawyer underscale underscheme underschool underscoop underscore underscribe underscript underscrub underscrupulous undersea underseam underseaman undersearch underseas underseated undersecretary undersecretaryship undersect undersee underseeded underseedman undersell underseller underselling undersense undersequence underservant underserve underservice underset undersetter undersetting undersettle undersettler undersettling undersexton undershapen undersharp undersheathing undershepherd undersheriff undersheriffry undersheriffship undersheriffwick undershield undershine undershining undershire undershirt undershoe undershoot undershore undershorten undershot undershrievalty undershrieve undershrievery undershrub undershrubbiness undershrubby undershunter undershut underside undersight undersighted undersign undersignalman undersigner undersill undersinging undersitter undersize undersized underskin underskirt undersky undersleep undersleeve underslip underslope undersluice underslung undersneer undersociety undersoil undersole undersomething undersong undersorcerer undersort undersoul undersound undersovereign undersow underspar undersparred underspecies underspecified underspend undersphere underspin underspinner undersplice underspore underspread underspring undersprout underspurleather undersquare understaff understage understain understairs understamp understand understandability understandable understandableness understandably understander understanding understandingly understandingness understate understatement understay understeer understem understep understeward understewardship understimulus understock understocking understood understory understrain understrap understrapper understrapping understratum understream understress understrew understride understriding understrife understrike understring understroke understrung understudy understuff understuffing undersuck undersuggestion undersuit undersupply undersupport undersurface underswain underswamp undersward underswearer undersweat undersweep underswell undertakable undertake undertakement undertaker undertakerish undertakerlike undertakerly undertakery undertaking undertakingly undertalk undertapster undertaxed underteacher underteamed underteller undertenancy undertenant undertenter undertenure underterrestrial undertest underthane underthaw underthief underthing underthink underthirst underthought underthroating underthrob underthrust undertide undertided undertie undertime undertimed undertint undertitle undertone undertoned undertook undertow undertrader undertrained undertread undertreasurer undertreat undertribe undertrick undertrodden undertruck undertrump undertruss undertub undertune undertunic underturf underturn underturnkey undertutor undertwig undertype undertyrant underusher undervaluation undervalue undervaluement undervaluer undervaluing undervaluinglike undervaluingly undervalve undervassal undervaulted undervaulting undervegetation underventilation underverse undervest undervicar underviewer undervillain undervinedresser undervitalized undervocabularied undervoice undervoltage underwage underwaist underwaistcoat underwalk underward underwarden underwarmth underwarp underwash underwatch underwatcher underwater underwave underway underweapon underwear underweft underweigh underweight underweighted underwent underwheel underwhistle underwind underwing underwit underwitch underwitted underwood underwooded underwork underworker underworking underworkman underworld underwrap underwrite underwriter underwriting underwrought underyield underyoke underzeal underzealot undescendable undescended undescendible undescribable undescribably undescribed undescried undescript undescriptive undescrying undesert undeserted undeserting undeserve undeserved undeservedly undeservedness undeserver undeserving undeservingly undeservingness undesign undesignated undesigned undesignedly undesignedness undesigning undesigningly undesigningness undesirability undesirable undesirableness undesirably undesire undesired undesiredly undesiring undesirous undesirously undesirousness undesisting undespaired undespairing undespairingly undespatched undespised undespising undespoiled undespondent undespondently undesponding undespotic undestined undestroyable undestroyed undestructible undestructive undetachable undetached undetailed undetainable undetained undetectable undetected undetectible undeteriorated undeteriorating undeterminable undeterminate undetermination undetermined undetermining undeterred undeterring undetested undetesting undethronable undethroned undetracting undetractingly undetrimental undevelopable undeveloped undeveloping undeviated undeviating undeviatingly undevil undevious undeviously undevisable undevised undevoted undevotion undevotional undevoured undevout undevoutly undevoutness undewed undewy undexterous undexterously undextrous undextrously undiademed undiagnosable undiagnosed undialed undialyzed undiametric undiamonded undiapered undiaphanous undiatonic undichotomous undictated undid undidactic undies undieted undifferenced undifferent undifferential undifferentiated undifficult undiffident undiffracted undiffused undiffusible undiffusive undig undigenous undigest undigestable undigested undigestible undigesting undigestion undigged undight undighted undigitated undignified undignifiedly undignifiedness undignify undiked undilapidated undilatable undilated undilatory undiligent undiligently undilute undiluted undilution undiluvial undim undimensioned undimerous undimidiate undiminishable undiminishableness undiminishably undiminished undiminishing undiminutive undimmed undimpled Undine undine undined undinted undiocesed undiphthongize undiplomaed undiplomatic undipped undirect undirected undirectional undirectly undirectness undirk undisabled undisadvantageous undisagreeable undisappearing undisappointable undisappointed undisappointing undisarmed undisastrous undisbanded undisbarred undisburdened undisbursed undiscardable undiscarded undiscerned undiscernedly undiscernible undiscernibleness undiscernibly undiscerning undiscerningly undischargeable undischarged undiscipled undisciplinable undiscipline undisciplined undisciplinedness undisclaimed undisclosed undiscolored undiscomfitable undiscomfited undiscomposed undisconcerted undisconnected undiscontinued undiscordant undiscording undiscounted undiscourageable undiscouraged undiscouraging undiscoursed undiscoverable undiscoverableness undiscoverably undiscovered undiscreditable undiscredited undiscreet undiscreetly undiscreetness undiscretion undiscriminated undiscriminating undiscriminatingly undiscriminatingness undiscriminative undiscursive undiscussable undiscussed undisdained undisdaining undiseased undisestablished undisfigured undisfranchised undisfulfilled undisgorged undisgraced undisguisable undisguise undisguised undisguisedly undisguisedness undisgusted undisheartened undished undisheveled undishonored undisillusioned undisinfected undisinheritable undisinherited undisintegrated undisinterested undisjoined undisjointed undisliked undislocated undislodgeable undislodged undismantled undismay undismayable undismayed undismayedly undismembered undismissed undismounted undisobedient undisobeyed undisobliging undisordered undisorderly undisorganized undisowned undisowning undisparaged undisparity undispassionate undispatchable undispatched undispatching undispellable undispelled undispensable undispensed undispensing undispersed undispersing undisplaced undisplanted undisplay undisplayable undisplayed undisplaying undispleased undispose undisposed undisposedness undisprivacied undisprovable undisproved undisproving undisputable undisputableness undisputably undisputatious undisputatiously undisputed undisputedly undisputedness undisputing undisqualifiable undisqualified undisquieted undisreputable undisrobed undisrupted undissected undissembled undissembledness undissembling undissemblingly undisseminated undissenting undissevered undissimulated undissipated undissociated undissoluble undissolute undissolvable undissolved undissolving undissonant undissuadable undissuadably undissuade undistanced undistant undistantly undistasted undistasteful undistempered undistend undistended undistilled undistinct undistinctive undistinctly undistinctness undistinguish undistinguishable undistinguishableness undistinguishably undistinguished undistinguishing undistinguishingly undistorted undistorting undistracted undistractedly undistractedness undistracting undistractingly undistrained undistraught undistress undistressed undistributed undistrusted undistrustful undisturbable undisturbance undisturbed undisturbedly undisturbedness undisturbing undisturbingly unditched undithyrambic undittoed undiuretic undiurnal undivable undivergent undiverging undiverse undiversified undiverted undivertible undivertibly undiverting undivested undivestedly undividable undividableness undividably undivided undividedly undividedness undividing undivinable undivined undivinelike undivinely undivining undivisible undivisive undivorceable undivorced undivorcedness undivorcing undivulged undivulging undizened undizzied undo undoable undock undocked undoctor undoctored undoctrinal undoctrined undocumentary undocumented undocumentedness undodged undoer undoffed undog undogmatic undogmatical undoing undoingness undolled undolorous undomed undomestic undomesticate undomesticated undomestication undomicilable undomiciled undominated undomineering undominical undominoed undon undonated undonating undone undoneness undonkey undonnish undoomed undoped undormant undose undosed undoting undotted undouble undoubled undoubtable undoubtableness undoubtably undoubted undoubtedly undoubtedness undoubtful undoubtfully undoubtfulness undoubting undoubtingly undoubtingness undouched undoughty undovelike undoweled undowered undowned undowny undrab undraftable undrafted undrag undragoned undragooned undrainable undrained undramatic undramatical undramatically undramatizable undramatized undrape undraped undraperied undraw undrawable undrawn undreaded undreadful undreadfully undreading undreamed undreaming undreamlike undreamt undreamy undredged undreggy undrenched undress undressed undried undrillable undrilled undrinkable undrinkableness undrinkably undrinking undripping undrivable undrivableness undriven undronelike undrooping undropped undropsical undrossy undrowned undrubbed undrugged undrunk undrunken undry undryable undrying undualize undub undubbed undubitable undubitably unducal unduchess undue unduelling undueness undug unduke undulant undular undularly undulatance undulate undulated undulately undulating undulatingly undulation undulationist undulative undulatory undull undulled undullness unduloid undulose undulous unduly undumped unduncelike undunged undupable unduped unduplicability unduplicable unduplicity undurable undurableness undurably undust undusted unduteous undutiable undutiful undutifully undutifulness unduty undwarfed undwelt undwindling undy undye undyeable undyed undying undyingly undyingness uneager uneagerly uneagerness uneagled unearly unearned unearnest unearth unearthed unearthliness unearthly unease uneaseful uneasefulness uneasily uneasiness uneastern uneasy uneatable uneatableness uneaten uneath uneating unebbed unebbing unebriate uneccentric unecclesiastical unechoed unechoing uneclectic uneclipsed uneconomic uneconomical uneconomically uneconomicalness uneconomizing unecstatic unedge unedged unedible unedibleness unedibly unedified unedifying uneditable unedited uneducable uneducableness uneducably uneducate uneducated uneducatedly uneducatedness uneducative uneduced uneffaceable uneffaceably uneffaced uneffected uneffectible uneffective uneffectless uneffectual uneffectually uneffectualness uneffectuated uneffeminate uneffeminated uneffervescent uneffete unefficacious unefficient uneffigiated uneffused uneffusing uneffusive unegoist unegoistical unegoistically unegregious unejaculated unejected unelaborate unelaborated unelaborately unelaborateness unelapsed unelastic unelasticity unelated unelating unelbowed unelderly unelect unelectable unelected unelective unelectric unelectrical unelectrified unelectrify unelectrifying unelectrized unelectronic uneleemosynary unelegant unelegantly unelegantness unelemental unelementary unelevated unelicited unelided unelidible uneligibility uneligible uneligibly uneliminated unelongated uneloped uneloping uneloquent uneloquently unelucidated unelucidating uneluded unelusive unemaciated unemancipable unemancipated unemasculated unembalmed unembanked unembarrassed unembarrassedly unembarrassedness unembarrassing unembarrassment unembased unembattled unembayed unembellished unembezzled unembittered unemblazoned unembodied unembodiment unembossed unembowelled unembowered unembraceable unembraced unembroidered unembroiled unembryonic unemendable unemended unemerged unemerging unemigrating uneminent uneminently unemitted unemolumentary unemolumented unemotional unemotionalism unemotionally unemotionalness unemotioned unempaneled unemphatic unemphatical unemphatically unempirical unempirically unemploy unemployability unemployable unemployableness unemployably unemployed unemployment unempoisoned unempowered unempt unemptiable unemptied unempty unemulative unemulous unemulsified unenabled unenacted unenameled unenamored unencamped unenchafed unenchant unenchanted unencircled unenclosed unencompassed unencored unencounterable unencountered unencouraged unencouraging unencroached unencroaching unencumber unencumbered unencumberedly unencumberedness unencumbering unencysted unendable unendamaged unendangered unendeared unendeavored unended unending unendingly unendingness unendorsable unendorsed unendowed unendowing unendued unendurability unendurable unendurably unendured unenduring unenduringly unenergetic unenergized unenervated unenfeebled unenfiladed unenforceable unenforced unenforcedly unenforcedness unenforcibility unenfranchised unengaged unengaging unengendered unengineered unenglish unengraved unengraven unengrossed unenhanced unenjoined unenjoyable unenjoyed unenjoying unenjoyingly unenkindled unenlarged unenlightened unenlightening unenlisted unenlivened unenlivening unennobled unennobling unenounced unenquired unenquiring unenraged unenraptured unenrichable unenrichableness unenriched unenriching unenrobed unenrolled unenshrined unenslave unenslaved unensnared unensouled unensured unentailed unentangle unentangleable unentangled unentanglement unentangler unenterable unentered unentering unenterprise unenterprised unenterprising unenterprisingly unenterprisingness unentertainable unentertained unentertaining unentertainingly unentertainingness unenthralled unenthralling unenthroned unenthusiasm unenthusiastic unenthusiastically unenticed unenticing unentire unentitled unentombed unentomological unentrance unentranced unentrapped unentreated unentreating unentrenched unentwined unenumerable unenumerated unenveloped unenvenomed unenviable unenviably unenvied unenviedly unenvious unenviously unenvironed unenvying unenwoven unepauleted unephemeral unepic unepicurean unepigrammatic unepilogued unepiscopal unepiscopally unepistolary unepitaphed unepithelial unepitomized unequable unequableness unequably unequal unequalable unequaled unequality unequalize unequalized unequally unequalness unequated unequatorial unequestrian unequiangular unequiaxed unequilateral unequilibrated unequine unequipped unequitable unequitableness unequitably unequivalent unequivalve unequivalved unequivocal unequivocally unequivocalness uneradicable uneradicated unerasable unerased unerasing unerect unerected unermined uneroded unerrable unerrableness unerrably unerrancy unerrant unerratic unerring unerringly unerringness unerroneous unerroneously unerudite unerupted uneruptive unescaladed unescalloped unescapable unescapableness unescapably unescaped unescheated uneschewable uneschewably uneschewed Unesco unescorted unescutcheoned unesoteric unespied unespousable unespoused unessayed unessence unessential unessentially unessentialness unestablish unestablishable unestablished unestablishment unesteemed unestimable unestimableness unestimably unestimated unestopped unestranged unetched uneternal uneternized unethereal unethic unethical unethically unethicalness unethnological unethylated unetymological unetymologizable uneucharistical uneugenic uneulogized uneuphemistical uneuphonic uneuphonious uneuphoniously uneuphoniousness unevacuated unevadable unevaded unevaluated unevanescent unevangelic unevangelical unevangelized unevaporate unevaporated unevasive uneven unevenly unevenness uneventful uneventfully uneventfulness uneverted unevicted unevidenced unevident unevidential unevil unevinced unevirated uneviscerated unevitable unevitably unevokable unevoked unevolutionary unevolved unexacerbated unexact unexacted unexactedly unexacting unexactingly unexactly unexactness unexaggerable unexaggerated unexaggerating unexalted unexaminable unexamined unexamining unexampled unexampledness unexasperated unexasperating unexcavated unexceedable unexceeded unexcelled unexcellent unexcelling unexceptable unexcepted unexcepting unexceptionability unexceptionable unexceptionableness unexceptionably unexceptional unexceptionally unexceptionalness unexceptive unexcerpted unexcessive unexchangeable unexchangeableness unexchanged unexcised unexcitability unexcitable unexcited unexciting unexclaiming unexcludable unexcluded unexcluding unexclusive unexclusively unexclusiveness unexcogitable unexcogitated unexcommunicated unexcoriated unexcorticated unexcrescent unexcreted unexcruciating unexculpable unexculpably unexculpated unexcursive unexcusable unexcusableness unexcusably unexcused unexcusedly unexcusedness unexcusing unexecrated unexecutable unexecuted unexecuting unexecutorial unexemplary unexemplifiable unexemplified unexempt unexempted unexemptible unexempting unexercisable unexercise unexercised unexerted unexhalable unexhaled unexhausted unexhaustedly unexhaustedness unexhaustible unexhaustibleness unexhaustibly unexhaustion unexhaustive unexhaustiveness unexhibitable unexhibitableness unexhibited unexhilarated unexhilarating unexhorted unexhumed unexigent unexilable unexiled unexistence unexistent unexisting unexonerable unexonerated unexorable unexorableness unexorbitant unexorcisable unexorcisably unexorcised unexotic unexpandable unexpanded unexpanding unexpansive unexpectable unexpectant unexpected unexpectedly unexpectedness unexpecting unexpectingly unexpectorated unexpedient unexpeditated unexpedited unexpeditious unexpelled unexpendable unexpended unexpensive unexpensively unexpensiveness unexperience unexperienced unexperiencedness unexperient unexperiential unexperimental unexperimented unexpert unexpertly unexpertness unexpiable unexpiated unexpired unexpiring unexplainable unexplainableness unexplainably unexplained unexplainedly unexplainedness unexplaining unexplanatory unexplicable unexplicableness unexplicably unexplicated unexplicit unexplicitly unexplicitness unexploded unexploitation unexploited unexplorable unexplorative unexplored unexplosive unexportable unexported unexporting unexposable unexposed unexpostulating unexpoundable unexpounded unexpress unexpressable unexpressableness unexpressably unexpressed unexpressedly unexpressible unexpressibleness unexpressibly unexpressive unexpressively unexpressiveness unexpressly unexpropriable unexpropriated unexpugnable unexpunged unexpurgated unexpurgatedly unexpurgatedness unextended unextendedly unextendedness unextendible unextensible unextenuable unextenuated unextenuating unexterminable unexterminated unexternal unexternality unexterritoriality unextinct unextinctness unextinguishable unextinguishableness unextinguishably unextinguished unextirpated unextolled unextortable unextorted unextractable unextracted unextradited unextraneous unextraordinary unextravagance unextravagant unextravagating unextravasated unextreme unextricable unextricated unextrinsic unextruded unexuberant unexuded unexultant uneye uneyeable uneyed unfabled unfabling unfabricated unfabulous unfacaded unface unfaceable unfaced unfaceted unfacetious unfacile unfacilitated unfact unfactional unfactious unfactitious unfactorable unfactored unfactual unfadable unfaded unfading unfadingly unfadingness unfagged unfagoted unfailable unfailableness unfailably unfailed unfailing unfailingly unfailingness unfain unfaint unfainting unfaintly unfair unfairly unfairminded unfairness unfairylike unfaith unfaithful unfaithfully unfaithfulness unfaked unfallacious unfallaciously unfallen unfallenness unfallible unfallibleness unfallibly unfalling unfallowed unfalse unfalsifiable unfalsified unfalsifiedness unfalsity unfaltering unfalteringly unfamed unfamiliar unfamiliarity unfamiliarized unfamiliarly unfanatical unfanciable unfancied unfanciful unfancy unfanged unfanned unfantastic unfantastical unfantastically unfar unfarced unfarcical unfarewelled unfarmed unfarming unfarrowed unfarsighted unfasciated unfascinate unfascinated unfascinating unfashion unfashionable unfashionableness unfashionably unfashioned unfast unfasten unfastenable unfastened unfastener unfastidious unfastidiously unfastidiousness unfasting unfather unfathered unfatherlike unfatherliness unfatherly unfathomability unfathomable unfathomableness unfathomably unfathomed unfatigue unfatigueable unfatigued unfatiguing unfattable unfatted unfatten unfauceted unfaultfinding unfaulty unfavorable unfavorableness unfavorably unfavored unfavoring unfavorite unfawning unfealty unfeared unfearful unfearfully unfearing unfearingly unfeary unfeasable unfeasableness unfeasably unfeasibility unfeasible unfeasibleness unfeasibly unfeasted unfeather unfeathered unfeatured unfecund unfecundated unfed unfederal unfederated unfeeble unfeed unfeedable unfeeding unfeeing unfeelable unfeeling unfeelingly unfeelingness unfeignable unfeignableness unfeignably unfeigned unfeignedly unfeignedness unfeigning unfeigningly unfeigningness unfele unfelicitated unfelicitating unfelicitous unfelicitously unfelicitousness unfeline unfellable unfelled unfellied unfellow unfellowed unfellowlike unfellowly unfellowshiped unfelon unfelonious unfeloniously unfelony unfelt unfelted unfemale unfeminine unfemininely unfeminineness unfemininity unfeminist unfeminize unfence unfenced unfendered unfenestrated unfeoffed unfermentable unfermentableness unfermentably unfermented unfermenting unfernlike unferocious unferreted unferried unfertile unfertileness unfertility unfertilizable unfertilized unfervent unfervid unfester unfestered unfestival unfestive unfestively unfestooned unfetchable unfetched unfeted unfetter unfettered unfettled unfeudal unfeudalize unfeudalized unfeued unfevered unfeverish unfew unfibbed unfibbing unfiber unfibered unfibrous unfickle unfictitious unfidelity unfidgeting unfielded unfiend unfiendlike unfierce unfiery unfight unfightable unfighting unfigurable unfigurative unfigured unfilamentous unfilched unfile unfiled unfilial unfilially unfilialness unfill unfillable unfilled unfilleted unfilling unfilm unfilmed unfiltered unfiltrated unfinable unfinancial unfine unfined unfinessed unfingered unfinical unfinish unfinishable unfinished unfinishedly unfinishedness unfinite unfired unfireproof unfiring unfirm unfirmamented unfirmly unfirmness unfiscal unfishable unfished unfishing unfishlike unfissile unfistulous unfit unfitly unfitness unfittable unfitted unfittedness unfitten unfitting unfittingly unfittingness unfitty unfix unfixable unfixated unfixed unfixedness unfixing unfixity unflag unflagged unflagging unflaggingly unflaggingness unflagitious unflagrant unflaky unflamboyant unflaming unflanged unflank unflanked unflapping unflashing unflat unflated unflattened unflatterable unflattered unflattering unflatteringly unflaunted unflavored unflawed unflayed unflead unflecked unfledge unfledged unfledgedness unfleece unfleeced unfleeing unfleeting unflesh unfleshed unfleshliness unfleshly unfleshy unfletched unflexed unflexible unflexibleness unflexibly unflickering unflickeringly unflighty unflinching unflinchingly unflinchingness unflintify unflippant unflirtatious unflitched unfloatable unfloating unflock unfloggable unflogged unflooded unfloor unfloored unflorid unflossy unflounced unfloured unflourished unflourishing unflouted unflower unflowered unflowing unflown unfluctuating unfluent unfluid unfluked unflunked unfluorescent unflurried unflush unflushed unflustered unfluted unflutterable unfluttered unfluttering unfluvial unfluxile unflying unfoaled unfoaming unfocused unfoggy unfoilable unfoiled unfoisted unfold unfoldable unfolded unfolder unfolding unfoldment unfoldure unfoliaged unfoliated unfollowable unfollowed unfollowing unfomented unfond unfondled unfondness unfoodful unfool unfoolable unfooled unfooling unfoolish unfooted unfootsore unfoppish unforaged unforbade unforbearance unforbearing unforbid unforbidden unforbiddenly unforbiddenness unforbidding unforceable unforced unforcedly unforcedness unforceful unforcible unforcibleness unforcibly unfordable unfordableness unforded unforeboded unforeboding unforecasted unforegone unforeign unforeknowable unforeknown unforensic unforeordained unforesee unforeseeable unforeseeableness unforeseeably unforeseeing unforeseeingly unforeseen unforeseenly unforeseenness unforeshortened unforest unforestallable unforestalled unforested unforetellable unforethought unforethoughtful unforetold unforewarned unforewarnedness unforfeit unforfeitable unforfeited unforgeability unforgeable unforged unforget unforgetful unforgettable unforgettableness unforgettably unforgetting unforgettingly unforgivable unforgivableness unforgivably unforgiven unforgiveness unforgiver unforgiving unforgivingly unforgivingness unforgone unforgot unforgotten unfork unforked unforkedness unforlorn unform unformal unformality unformalized unformally unformalness unformative unformed unformidable unformulable unformularizable unformularize unformulated unformulistic unforsaken unforsaking unforsook unforsworn unforthright unfortifiable unfortified unfortify unfortuitous unfortunate unfortunately unfortunateness unfortune unforward unforwarded unfossiliferous unfossilized unfostered unfought unfoughten unfoul unfoulable unfouled unfound unfounded unfoundedly unfoundedness unfoundered unfountained unfowllike unfoxy unfractured unfragrance unfragrant unfragrantly unfrail unframable unframableness unframably unframe unframed unfranchised unfrank unfrankable unfranked unfrankly unfrankness unfraternal unfraternizing unfraudulent unfraught unfrayed unfreckled unfree unfreed unfreedom unfreehold unfreely unfreeman unfreeness unfreezable unfreeze unfreezing unfreighted unfrenchified unfrenzied unfrequency unfrequent unfrequented unfrequentedness unfrequently unfrequentness unfret unfretful unfretting unfriable unfriarlike unfricative unfrictioned unfried unfriend unfriended unfriendedness unfriending unfriendlike unfriendlily unfriendliness unfriendly unfriendship unfrighted unfrightenable unfrightened unfrightenedness unfrightful unfrigid unfrill unfrilled unfringe unfringed unfrisky unfrivolous unfrizz unfrizzled unfrizzy unfrock unfrocked unfroglike unfrolicsome unfronted unfrost unfrosted unfrosty unfrounced unfroward unfrowardly unfrowning unfroze unfrozen unfructed unfructified unfructify unfructuous unfructuously unfrugal unfrugally unfrugalness unfruitful unfruitfully unfruitfulness unfruity unfrustrable unfrustrably unfrustratable unfrustrated unfrutuosity unfuddled unfueled unfulfill unfulfillable unfulfilled unfulfilling unfulfillment unfull unfulled unfully unfulminated unfulsome unfumbled unfumbling unfumed unfumigated unfunctional unfundamental unfunded unfunnily unfunniness unfunny unfur unfurbelowed unfurbished unfurcate unfurious unfurl unfurlable unfurnish unfurnished unfurnishedness unfurnitured unfurred unfurrow unfurrowable unfurrowed unfurthersome unfused unfusible unfusibleness unfusibly unfussed unfussing unfussy unfutile unfuturistic ungabled ungag ungaged ungagged ungain ungainable ungained ungainful ungainfully ungainfulness ungaining ungainlike ungainliness ungainly ungainness ungainsaid ungainsayable ungainsayably ungainsaying ungainsome ungainsomely ungaite ungallant ungallantly ungallantness ungalling ungalvanized ungamboling ungamelike unganged ungangrened ungarbed ungarbled ungardened ungargled ungarland ungarlanded ungarment ungarmented ungarnered ungarnish ungarnished ungaro ungarrisoned ungarter ungartered ungashed ungassed ungastric ungathered ungaudy ungauged ungauntlet ungauntleted ungazetted ungazing ungear ungeared ungelatinizable ungelatinized ungelded ungelt ungeminated ungenerable ungeneral ungeneraled ungeneralized ungenerate ungenerated ungenerative ungeneric ungenerical ungenerosity ungenerous ungenerously ungenerousness ungenial ungeniality ungenially ungenialness ungenitured ungenius ungenteel ungenteelly ungenteelness ungentile ungentility ungentilize ungentle ungentled ungentleman ungentlemanize ungentlemanlike ungentlemanlikeness ungentlemanliness ungentlemanly ungentleness ungentlewomanlike ungently ungenuine ungenuinely ungenuineness ungeodetical ungeographic ungeographical ungeographically ungeological ungeometric ungeometrical ungeometrically ungeometricalness ungerminated ungerminating ungermlike ungerontic ungesting ungesturing unget ungettable unghostlike unghostly ungiant ungibbet ungiddy ungifted ungiftedness ungild ungilded ungill ungilt ungingled unginned ungird ungirded ungirdle ungirdled ungirlish ungirt ungirth ungirthed ungive ungiveable ungiven ungiving ungka unglaciated unglad ungladden ungladdened ungladly ungladness ungladsome unglamorous unglandular unglassed unglaze unglazed ungleaned unglee ungleeful unglimpsed unglistening unglittering ungloating unglobe unglobular ungloom ungloomed ungloomy unglorified unglorify unglorifying unglorious ungloriously ungloriousness unglory unglosed ungloss unglossaried unglossed unglossily unglossiness unglossy unglove ungloved unglowing unglozed unglue unglued unglutinate unglutted ungluttonous ungnarred ungnaw ungnawn ungnostic ungoaded ungoatlike ungod ungoddess ungodlike ungodlily ungodliness ungodly ungodmothered ungold ungolden ungone ungood ungoodliness ungoodly ungored ungorge ungorged ungorgeous ungospel ungospelized ungospelled ungospellike ungossiping ungot ungothic ungotten ungouged ungouty ungovernable ungovernableness ungovernably ungoverned ungovernedness ungoverning ungown ungowned ungrace ungraced ungraceful ungracefully ungracefulness ungracious ungraciously ungraciousness ungradated ungraded ungradual ungradually ungraduated ungraduating ungraft ungrafted ungrain ungrainable ungrained ungrammar ungrammared ungrammatic ungrammatical ungrammatically ungrammaticalness ungrammaticism ungrand ungrantable ungranted ungranulated ungraphic ungraphitized ungrapple ungrappled ungrappler ungrasp ungraspable ungrasped ungrasping ungrassed ungrassy ungrated ungrateful ungratefully ungratefulness ungratifiable ungratified ungratifying ungrating ungrave ungraved ungraveled ungravelly ungravely ungraven ungrayed ungrazed ungreased ungreat ungreatly ungreatness ungreeable ungreedy ungreen ungreenable ungreened ungreeted ungregarious ungrieve ungrieved ungrieving ungrilled ungrimed ungrindable ungrip ungripe ungrizzled ungroaning ungroined ungroomed ungrooved ungropeable ungross ungrotesque unground ungroundable ungroundably ungrounded ungroundedly ungroundedness ungroupable ungrouped ungrow ungrowing ungrown ungrubbed ungrudged ungrudging ungrudgingly ungrudgingness ungruesome ungruff ungrumbling ungual unguaranteed unguard unguardable unguarded unguardedly unguardedness ungueal unguent unguentaria unguentarium unguentary unguentiferous unguentous unguentum unguerdoned ungues unguessable unguessableness unguessed unguical unguicorn unguicular Unguiculata unguiculate unguiculated unguidable unguidableness unguidably unguided unguidedly unguiferous unguiform unguiled unguileful unguilefully unguilefulness unguillotined unguiltily unguiltiness unguilty unguinal unguinous unguirostral unguis ungula ungulae ungular Ungulata ungulate ungulated unguled unguligrade ungull ungulous ungulp ungum ungummed ungushing ungutted unguttural unguyed unguzzled ungymnastic ungypsylike ungyve ungyved unhabit unhabitable unhabitableness unhabited unhabitual unhabitually unhabituate unhabituated unhacked unhackled unhackneyed unhackneyedness unhad unhaft unhafted unhaggled unhaggling unhailable unhailed unhair unhaired unhairer unhairily unhairiness unhairing unhairy unhallooed unhallow unhallowed unhallowedness unhaloed unhalsed unhalted unhalter unhaltered unhalting unhalved unhammered unhamper unhampered unhand unhandcuff unhandcuffed unhandicapped unhandily unhandiness unhandled unhandseled unhandsome unhandsomely unhandsomeness unhandy unhang unhanged unhap unhappen unhappily unhappiness unhappy unharangued unharassed unharbor unharbored unhard unharden unhardenable unhardened unhardihood unhardily unhardiness unhardness unhardy unharked unharmable unharmed unharmful unharmfully unharming unharmonic unharmonical unharmonious unharmoniously unharmoniousness unharmonize unharmonized unharmony unharness unharnessed unharped unharried unharrowed unharsh unharvested unhashed unhasp unhasped unhaste unhasted unhastened unhastily unhastiness unhasting unhasty unhat unhatchability unhatchable unhatched unhatcheled unhate unhated unhateful unhating unhatingly unhatted unhauled unhaunt unhaunted unhave unhawked unhayed unhazarded unhazarding unhazardous unhazardousness unhazed unhead unheaded unheader unheady unheal unhealable unhealableness unhealably unhealed unhealing unhealth unhealthful unhealthfully unhealthfulness unhealthily unhealthiness unhealthsome unhealthsomeness unhealthy unheaped unhearable unheard unhearing unhearsed unheart unhearten unheartsome unhearty unheatable unheated unheathen unheaved unheaven unheavenly unheavily unheaviness unheavy unhectored unhedge unhedged unheed unheeded unheededly unheedful unheedfully unheedfulness unheeding unheedingly unheedy unheeled unheelpieced unhefted unheightened unheired unheld unhele unheler unhelm unhelmed unhelmet unhelmeted unhelpable unhelpableness unhelped unhelpful unhelpfully unhelpfulness unhelping unhelved unhemmed unheppen unheralded unheraldic unherd unherded unhereditary unheretical unheritable unhermetic unhero unheroic unheroical unheroically unheroism unheroize unherolike unhesitant unhesitating unhesitatingly unhesitatingness unheuristic unhewable unhewed unhewn unhex unhid unhidable unhidableness unhidably unhidated unhidden unhide unhidebound unhideous unhieratic unhigh unhilarious unhinderable unhinderably unhindered unhindering unhinge unhingement unhinted unhipped unhired unhissed unhistoric unhistorical unhistorically unhistory unhistrionic unhit unhitch unhitched unhittable unhive unhoard unhoarded unhoarding unhoary unhoaxed unhobble unhocked unhoed unhogged unhoist unhoisted unhold unholiday unholily unholiness unhollow unhollowed unholy unhome unhomelike unhomelikeness unhomeliness unhomely unhomish unhomogeneity unhomogeneous unhomogeneously unhomologous unhoned unhonest unhonestly unhoneyed unhonied unhonorable unhonorably unhonored unhonoured unhood unhooded unhoodwink unhoodwinked unhoofed unhook unhooked unhoop unhooped unhooper unhooted unhoped unhopedly unhopedness unhopeful unhopefully unhopefulness unhoping unhopingly unhopped unhoppled unhorizoned unhorizontal unhorned unhorny unhoroscopic unhorse unhose unhosed unhospitable unhospitableness unhospitably unhostile unhostilely unhostileness unhostility unhot unhoundlike unhouse unhoused unhouseled unhouselike unhousewifely unhuddle unhugged unhull unhulled unhuman unhumanize unhumanized unhumanly unhumanness unhumble unhumbled unhumbledness unhumbleness unhumbly unhumbugged unhumid unhumiliated unhumored unhumorous unhumorously unhumorousness unhumoured unhung unhuntable unhunted unhurdled unhurled unhurried unhurriedly unhurriedness unhurrying unhurryingly unhurt unhurted unhurtful unhurtfully unhurtfulness unhurting unhusbanded unhusbandly unhushable unhushed unhushing unhusk unhusked unhustled unhustling unhutched unhuzzaed unhydraulic unhydrolyzed unhygienic unhygienically unhygrometric unhymeneal unhymned unhyphenated unhyphened unhypnotic unhypnotizable unhypnotize unhypocritical unhypocritically unhypothecated unhypothetical unhysterical uniambic uniambically uniangulate uniarticular uniarticulate Uniat uniat Uniate uniate uniauriculate uniauriculated uniaxal uniaxally uniaxial uniaxially unibasal unibivalent unible unibracteate unibracteolate unibranchiate unicalcarate unicameral unicameralism unicameralist unicamerate unicapsular unicarinate unicarinated unice uniced unicell unicellate unicelled unicellular unicellularity unicentral unichord uniciliate unicism unicist unicity uniclinal unicolor unicolorate unicolored unicolorous uniconstant unicorn unicorneal unicornic unicornlike unicornous unicornuted unicostate unicotyledonous unicum unicursal unicursality unicursally unicuspid unicuspidate unicycle unicyclist unidactyl unidactyle unidactylous unideaed unideal unidealism unidealist unidealistic unidealized unidentate unidentated unidenticulate unidentifiable unidentifiableness unidentifiably unidentified unidentifiedly unidentifying unideographic unidextral unidextrality unidigitate unidimensional unidiomatic unidiomatically unidirect unidirected unidirection unidirectional unidle unidleness unidly unidolatrous unidolized unidyllic unie uniembryonate uniequivalent uniface unifaced unifacial unifactorial unifarious unifiable unific unification unificationist unificator unified unifiedly unifiedness unifier unifilar uniflagellate unifloral uniflorate uniflorous uniflow uniflowered unifocal unifoliar unifoliate unifoliolate Unifolium uniform uniformal uniformalization uniformalize uniformally uniformation uniformed uniformist uniformitarian uniformitarianism uniformity uniformization uniformize uniformless uniformly uniformness unify unigenesis unigenetic unigenist unigenistic unigenital unigeniture unigenous uniglandular uniglobular unignitable unignited unignitible unignominious unignorant unignored unigravida uniguttulate unijugate unijugous unilabiate unilabiated unilamellar unilamellate unilaminar unilaminate unilateral unilateralism unilateralist unilaterality unilateralization unilateralize unilaterally unilinear unilingual unilingualism uniliteral unilludedly unillumed unilluminated unilluminating unillumination unillumined unillusioned unillusory unillustrated unillustrative unillustrious unilobal unilobar unilobate unilobe unilobed unilobular unilocular unilocularity uniloculate unimacular unimaged unimaginable unimaginableness unimaginably unimaginary unimaginative unimaginatively unimaginativeness unimagine unimagined unimanual unimbanked unimbellished unimbezzled unimbibed unimbibing unimbittered unimbodied unimboldened unimbordered unimbosomed unimbowed unimbowered unimbroiled unimbrowned unimbrued unimbued unimedial unimitable unimitableness unimitably unimitated unimitating unimitative unimmaculate unimmanent unimmediate unimmerged unimmergible unimmersed unimmigrating unimmolated unimmortal unimmortalize unimmortalized unimmovable unimmured unimodal unimodality unimodular unimolecular unimolecularity unimpair unimpairable unimpaired unimpartable unimparted unimpartial unimpassionate unimpassioned unimpassionedly unimpassionedness unimpatient unimpawned unimpeachability unimpeachable unimpeachableness unimpeachably unimpeached unimpearled unimped unimpeded unimpededly unimpedible unimpedness unimpelled unimpenetrable unimperative unimperial unimperialistic unimperious unimpertinent unimpinging unimplanted unimplicable unimplicate unimplicated unimplicit unimplicitly unimplied unimplorable unimplored unimpoisoned unimportance unimportant unimportantly unimported unimporting unimportunate unimportunately unimportuned unimposed unimposedly unimposing unimpostrous unimpounded unimpoverished unimpowered unimprecated unimpregnable unimpregnate unimpregnated unimpressed unimpressibility unimpressible unimpressibleness unimpressibly unimpressionability unimpressionable unimpressive unimpressively unimpressiveness unimprinted unimprison unimprisonable unimprisoned unimpropriated unimprovable unimprovableness unimprovably unimproved unimprovedly unimprovedness unimprovement unimproving unimprovised unimpugnable unimpugned unimpulsive unimpurpled unimputable unimputed unimucronate unimultiplex unimuscular uninaugurated unincantoned unincarcerated unincarnate unincarnated unincensed uninchoative unincidental unincised unincisive unincited uninclinable uninclined uninclining uninclosed uninclosedness unincludable unincluded uninclusive uninclusiveness uninconvenienced unincorporate unincorporated unincorporatedly unincorporatedness unincreasable unincreased unincreasing unincubated uninculcated unincumbered unindebted unindebtedly unindebtedness unindemnified unindentable unindented unindentured unindexed unindicable unindicated unindicative unindictable unindicted unindifference unindifferency unindifferent unindifferently unindigent unindignant unindividual unindividualize unindividualized unindividuated unindorsed uninduced uninductive unindulged unindulgent unindulgently unindurated unindustrial unindustrialized unindustrious unindustriously unindwellable uninebriated uninebriating uninervate uninerved uninfallibility uninfallible uninfatuated uninfectable uninfected uninfectious uninfectiousness uninfeft uninferred uninfested uninfiltrated uninfinite uninfiniteness uninfixed uninflamed uninflammability uninflammable uninflated uninflected uninflectedness uninflicted uninfluenceable uninfluenced uninfluencing uninfluencive uninfluential uninfluentiality uninfolded uninformed uninforming uninfracted uninfringeable uninfringed uninfringible uninfuriated uninfused uningenious uningeniously uningeniousness uningenuity uningenuous uningenuously uningenuousness uningested uningrafted uningrained uninhabitability uninhabitable uninhabitableness uninhabitably uninhabited uninhabitedness uninhaled uninheritability uninheritable uninherited uninhibited uninhibitive uninhumed uninimical uniniquitous uninitialed uninitialled uninitiate uninitiated uninitiatedness uninitiation uninjectable uninjected uninjurable uninjured uninjuredness uninjuring uninjurious uninjuriously uninjuriousness uninked uninlaid uninn uninnate uninnocence uninnocent uninnocently uninnocuous uninnovating uninoculable uninoculated uninodal uninominal uninquired uninquiring uninquisitive uninquisitively uninquisitiveness uninquisitorial uninsane uninsatiable uninscribed uninserted uninshrined uninsinuated uninsistent uninsolvent uninspected uninspirable uninspired uninspiring uninspiringly uninspirited uninspissated uninstalled uninstanced uninstated uninstigated uninstilled uninstituted uninstructed uninstructedly uninstructedness uninstructible uninstructing uninstructive uninstructively uninstructiveness uninstrumental uninsular uninsulate uninsulated uninsultable uninsulted uninsulting uninsurability uninsurable uninsured unintegrated unintellective unintellectual unintellectualism unintellectuality unintellectually unintelligence unintelligent unintelligently unintelligentsia unintelligibility unintelligible unintelligibleness unintelligibly unintended unintendedly unintensive unintent unintentional unintentionality unintentionally unintentionalness unintently unintentness unintercalated unintercepted uninterchangeable uninterdicted uninterested uninterestedly uninterestedness uninteresting uninterestingly uninterestingness uninterferedwith uninterjected uninterlaced uninterlarded uninterleave uninterleaved uninterlined uninterlinked uninterlocked unintermarrying unintermediate unintermingled unintermission unintermissive unintermitted unintermittedly unintermittedness unintermittent unintermitting unintermittingly unintermittingness unintermixed uninternational uninterpleaded uninterpolated uninterposed uninterposing uninterpretable uninterpreted uninterred uninterrogable uninterrogated uninterrupted uninterruptedly uninterruptedness uninterruptible uninterruptibleness uninterrupting uninterruption unintersected uninterspersed unintervening uninterviewed unintervolved uninterwoven uninthroned unintimate unintimated unintimidated unintitled unintombed unintoned unintoxicated unintoxicatedness unintoxicating unintrenchable unintrenched unintricate unintrigued unintriguing unintroduced unintroducible unintroitive unintromitted unintrospective unintruded unintruding unintrusive unintrusively unintrusted unintuitive unintwined uninuclear uninucleate uninucleated uninundated uninured uninurned uninvadable uninvaded uninvaginated uninvalidated uninveighing uninveigled uninvented uninventful uninventibleness uninventive uninventively uninventiveness uninverted uninvested uninvestigable uninvestigated uninvestigating uninvestigative uninvidious uninvidiously uninvigorated uninvincible uninvite uninvited uninvitedly uninviting uninvoiced uninvoked uninvolved uninweaved uninwoven uninwrapped uninwreathed Unio unio uniocular unioid Uniola union unioned unionic unionid Unionidae unioniform unionism unionist unionistic unionization unionize unionoid unioval uniovular uniovulate unipara uniparental uniparient uniparous unipartite uniped unipeltate uniperiodic unipersonal unipersonalist unipersonality unipetalous uniphase uniphaser uniphonous uniplanar uniplicate unipod unipolar unipolarity uniporous unipotence unipotent unipotential unipulse uniquantic unique uniquely uniqueness uniquity uniradial uniradiate uniradiated uniradical uniramose uniramous unirascible unireme unirenic unirhyme uniridescent unironed unironical unirradiated unirrigated unirritable unirritant unirritated unirritatedly unirritating unisepalous uniseptate uniserial uniserially uniseriate uniseriately uniserrate uniserrulate unisexed unisexual unisexuality unisexually unisilicate unisoil unisolable unisolate unisolated unisomeric unisometrical unisomorphic unison unisonal unisonally unisonance unisonant unisonous unisotropic unisparker unispiculate unispinose unispiral unissuable unissued unistylist unisulcate unit unitage unital unitalicized Unitarian unitarian Unitarianism Unitarianize unitarily unitariness unitarism unitarist unitary unite uniteability uniteable uniteably united unitedly unitedness unitemized unitentacular uniter uniting unitingly unition unitism unitistic unitive unitively unitiveness unitize unitooth unitrivalent unitrope unituberculate unitude unity uniunguiculate uniungulate univalence univalency univalent univalvate univalve univalvular univariant univerbal universal universalia Universalian Universalism universalism Universalist universalist Universalistic universalistic universality universalization universalize universalizer universally universalness universanimous universe universeful universitarian universitarianism universitary universitize university universityless universitylike universityship universological universologist universology univied univocability univocacy univocal univocalized univocally univocity univoltine univorous unjacketed unjaded unjagged unjailed unjam unjapanned unjarred unjarring unjaundiced unjaunty unjealous unjealoused unjellied unjesting unjesuited unjesuitical unjesuitically unjewel unjeweled unjewelled Unjewish unjilted unjocose unjocund unjogged unjogging unjoin unjoinable unjoint unjointed unjointedness unjointured unjoking unjokingly unjolly unjolted unjostled unjournalized unjovial unjovially unjoyed unjoyful unjoyfully unjoyfulness unjoyous unjoyously unjoyousness unjudgable unjudge unjudged unjudgelike unjudging unjudicable unjudicial unjudicially unjudicious unjudiciously unjudiciousness unjuggled unjuiced unjuicy unjumbled unjumpable unjust unjustice unjusticiable unjustifiable unjustifiableness unjustifiably unjustified unjustifiedly unjustifiedness unjustify unjustled unjustly unjustness unjuvenile unkaiserlike unkamed unked unkeeled unkembed unkempt unkemptly unkemptness unken unkenned unkennedness unkennel unkenneled unkenning unkensome unkept unkerchiefed unket unkey unkeyed unkicked unkid unkill unkillability unkillable unkilled unkilling unkilned unkin unkind unkindhearted unkindled unkindledness unkindlily unkindliness unkindling unkindly unkindness unkindred unkindredly unking unkingdom unkinged unkinger unkinglike unkingly unkink unkinlike unkirk unkiss unkissed unkist unknave unkneaded unkneeling unknelled unknew unknight unknighted unknightlike unknit unknittable unknitted unknitting unknocked unknocking unknot unknotted unknotty unknow unknowability unknowable unknowableness unknowably unknowing unknowingly unknowingness unknowledgeable unknown unknownly unknownness unknownst unkodaked unkoshered unlabeled unlabialize unlabiate unlaborable unlabored unlaboring unlaborious unlaboriously unlaboriousness unlace unlaced unlacerated unlackeyed unlacquered unlade unladen unladled unladyfied unladylike unlagging unlaid unlame unlamed unlamented unlampooned unlanced unland unlanded unlandmarked unlanguaged unlanguid unlanguishing unlanterned unlap unlapped unlapsed unlapsing unlarded unlarge unlash unlashed unlasher unlassoed unlasting unlatch unlath unlathed unlathered unlatinized unlatticed unlaudable unlaudableness unlaudably unlauded unlaugh unlaughing unlaunched unlaundered unlaureled unlaved unlaving unlavish unlavished unlaw unlawed unlawful unlawfully unlawfulness unlawlearned unlawlike unlawly unlawyered unlawyerlike unlay unlayable unleached unlead unleaded unleaderly unleaf unleafed unleagued unleaguer unleakable unleaky unleal unlean unleared unlearn unlearnability unlearnable unlearnableness unlearned unlearnedly unlearnedness unlearning unlearnt unleasable unleased unleash unleashed unleathered unleave unleaved unleavenable unleavened unlectured unled unleft unlegacied unlegal unlegalized unlegally unlegalness unlegate unlegislative unleisured unleisuredness unleisurely unlenient unlensed unlent unless unlessened unlessoned unlet unlettable unletted unlettered unletteredly unletteredness unlettering unletterlike unlevel unleveled unlevelly unlevelness unlevied unlevigated unlexicographical unliability unliable unlibeled unliberal unliberalized unliberated unlibidinous unlicensed unlicentiated unlicentious unlichened unlickable unlicked unlid unlidded unlie unlifelike unliftable unlifted unlifting unligable unligatured unlight unlighted unlightedly unlightedness unlightened unlignified unlikable unlikableness unlikably unlike unlikeable unlikeableness unlikeably unliked unlikelihood unlikeliness unlikely unliken unlikeness unliking unlimb unlimber unlime unlimed unlimitable unlimitableness unlimitably unlimited unlimitedly unlimitedness unlimitless unlimned unlimp unline unlineal unlined unlingering unlink unlinked unlionlike unliquefiable unliquefied unliquid unliquidatable unliquidated unliquidating unliquidation unliquored unlisping unlist unlisted unlistened unlistening unlisty unlit unliteral unliterally unliteralness unliterary unliterate unlitigated unlitten unlittered unliturgical unliturgize unlivable unlivableness unlivably unlive unliveable unliveableness unliveably unliveliness unlively unliveried unlivery unliving unlizardlike unload unloaded unloaden unloader unloafing unloanably unloaned unloaning unloath unloathed unloathful unloathly unloathsome unlobed unlocal unlocalizable unlocalize unlocalized unlocally unlocated unlock unlockable unlocked unlocker unlocking unlocomotive unlodge unlodged unlofty unlogged unlogic unlogical unlogically unlogicalness unlonely unlook unlooked unloop unlooped unloosable unloosably unloose unloosen unloosening unloosing unlooted unlopped unloquacious unlord unlorded unlordly unlosable unlosableness unlost unlotted unlousy unlovable unlovableness unlovably unlove unloveable unloveableness unloveably unloved unlovelily unloveliness unlovely unloverlike unloverly unloving unlovingly unlovingness unlowered unlowly unloyal unloyally unloyalty unlubricated unlucent unlucid unluck unluckful unluckily unluckiness unlucky unlucrative unludicrous unluffed unlugged unlugubrious unluminous unlumped unlunar unlured unlust unlustily unlustiness unlustrous unlusty unlute unluted unluxated unluxuriant unluxurious unlycanthropize unlying unlyrical unlyrically unmacadamized unmacerated unmachinable unmackly unmad unmadded unmaddened unmade unmagic unmagical unmagisterial unmagistratelike unmagnanimous unmagnetic unmagnetical unmagnetized unmagnified unmagnify unmaid unmaidenlike unmaidenliness unmaidenly unmail unmailable unmailableness unmailed unmaimable unmaimed unmaintainable unmaintained unmajestic unmakable unmake unmaker unmalevolent unmalicious unmalignant unmaligned unmalleability unmalleable unmalleableness unmalled unmaltable unmalted unmammalian unmammonized unman unmanacle unmanacled unmanageable unmanageableness unmanageably unmanaged unmancipated unmandated unmanducated unmaned unmaneged unmanful unmanfully unmangled unmaniable unmaniac unmaniacal unmanicured unmanifest unmanifested unmanipulatable unmanipulated unmanlike unmanlily unmanliness unmanly unmanned unmanner unmannered unmanneredly unmannerliness unmannerly unmannish unmanored unmantle unmantled unmanufacturable unmanufactured unmanumissible unmanumitted unmanurable unmanured unmappable unmapped unmarbled unmarch unmarching unmarginal unmarginated unmarine unmaritime unmarkable unmarked unmarketable unmarketed unmarled unmarred unmarriable unmarriageability unmarriageable unmarried unmarring unmarry unmarrying unmarshaled unmartial unmartyr unmartyred unmarvelous unmasculine unmashed unmask unmasked unmasker unmasking unmasquerade unmassacred unmassed unmast unmaster unmasterable unmastered unmasterful unmasticable unmasticated unmatchable unmatchableness unmatchably unmatched unmatchedness unmate unmated unmaterial unmaterialistic unmateriate unmaternal unmathematical unmathematically unmating unmatriculated unmatrimonial unmatronlike unmatted unmature unmatured unmaturely unmatureness unmaturing unmaturity unmauled unmaze unmeaning unmeaningly unmeaningness unmeant unmeasurable unmeasurableness unmeasurably unmeasured unmeasuredly unmeasuredness unmeated unmechanic unmechanical unmechanically unmechanistic unmechanize unmechanized unmedaled unmedalled unmeddle unmeddled unmeddlesome unmeddling unmeddlingly unmeddlingness unmediaeval unmediated unmediatized unmedicable unmedical unmedicated unmedicative unmedicinable unmedicinal unmeditated unmeditative unmediumistic unmedullated unmeek unmeekly unmeekness unmeet unmeetable unmeetly unmeetness unmelancholy unmeliorated unmellow unmellowed unmelodic unmelodious unmelodiously unmelodiousness unmelodized unmelodramatic unmeltable unmeltableness unmeltably unmelted unmeltedness unmelting unmember unmemoired unmemorable unmemorialized unmemoried unmemorized unmenaced unmenacing unmendable unmendableness unmendably unmendacious unmended unmenial unmenseful unmenstruating unmensurable unmental unmentionability unmentionable unmentionableness unmentionables unmentionably unmentioned unmercantile unmercenariness unmercenary unmercerized unmerchantable unmerchantlike unmerchantly unmerciful unmercifully unmercifulness unmercurial unmeretricious unmerge unmerged unmeridional unmerited unmeritedly unmeritedness unmeriting unmeritorious unmeritoriously unmeritoriousness unmerry unmesh unmesmeric unmesmerize unmesmerized unmet unmetaled unmetalized unmetalled unmetallic unmetallurgical unmetamorphosed unmetaphorical unmetaphysic unmetaphysical unmeted unmeteorological unmetered unmethodical unmethodically unmethodicalness unmethodized unmethodizing unmethylated unmeticulous unmetric unmetrical unmetrically unmetricalness unmetropolitan unmettle unmew unmewed unmicaceous unmicrobic unmicroscopic unmidwifed unmighty unmigrating unmildewed unmilitant unmilitarily unmilitariness unmilitaristic unmilitarized unmilitary unmilked unmilled unmillinered unmilted unmimicked unminable unminced unmincing unmind unminded unmindful unmindfully unmindfulness unminding unmined unmineralized unmingle unmingleable unmingled unmingling unminimized unminished unminister unministered unministerial unministerially unminted unminuted unmiracled unmiraculous unmiraculously unmired unmirrored unmirthful unmirthfully unmirthfulness unmiry unmisanthropic unmiscarrying unmischievous unmiscible unmisconceivable unmiserly unmisgiving unmisgivingly unmisguided unmisinterpretable unmisled unmissable unmissed unmissionary unmissionized unmist unmistakable unmistakableness unmistakably unmistakedly unmistaken unmistakingly unmistressed unmistrusted unmistrustful unmistrusting unmisunderstandable unmisunderstanding unmisunderstood unmiter unmitigable unmitigated unmitigatedly unmitigatedness unmitigative unmittened unmix unmixable unmixableness unmixed unmixedly unmixedness unmoaned unmoated unmobbed unmobilized unmocked unmocking unmockingly unmodel unmodeled unmodelled unmoderate unmoderately unmoderateness unmoderating unmodern unmodernity unmodernize unmodernized unmodest unmodifiable unmodifiableness unmodifiably unmodified unmodifiedness unmodish unmodulated unmoiled unmoist unmoisten unmold unmoldable unmolded unmoldered unmoldering unmoldy unmolested unmolestedly unmolesting unmollifiable unmollifiably unmollified unmollifying unmolten unmomentary unmomentous unmomentously unmonarch unmonarchical unmonastic unmonetary unmoneyed unmonistic unmonitored unmonkish unmonkly unmonopolize unmonopolized unmonopolizing unmonotonous unmonumented unmoor unmoored unmooted unmopped unmoral unmoralist unmorality unmoralize unmoralized unmoralizing unmorally unmoralness unmorbid unmordanted unmoribund unmorose unmorphological unmortal unmortared unmortgage unmortgageable unmortgaged unmortified unmortifiedly unmortifiedness unmortise unmortised unmossed unmothered unmotherly unmotionable unmotivated unmotivatedly unmotivatedness unmotived unmotorized unmottled unmounded unmount unmountable unmountainous unmounted unmounting unmourned unmournful unmourning unmouthable unmouthed unmouthpieced unmovability unmovable unmovableness unmovably unmoved unmovedly unmoving unmovingly unmovingness unmowed unmown unmucilaged unmudded unmuddied unmuddle unmuddled unmuddy unmuffle unmuffled unmulcted unmulish unmulled unmullioned unmultipliable unmultiplied unmultipliedly unmultiply unmummied unmummify unmunched unmundane unmundified unmunicipalized unmunificent unmunitioned unmurmured unmurmuring unmurmuringly unmurmurous unmuscled unmuscular unmusical unmusicality unmusically unmusicalness unmusicianly unmusked unmussed unmusted unmusterable unmustered unmutated unmutation unmuted unmutilated unmutinous unmuttered unmutual unmutualized unmuzzle unmuzzled unmuzzling unmyelinated unmysterious unmysteriously unmystery unmystical unmysticize unmystified unmythical unnabbed unnagged unnagging unnail unnailed unnaked unnamability unnamable unnamableness unnamably unname unnameability unnameable unnameableness unnameably unnamed unnapkined unnapped unnarcotic unnarrated unnarrow unnation unnational unnationalized unnative unnatural unnaturalism unnaturalist unnaturalistic unnaturality unnaturalizable unnaturalize unnaturalized unnaturally unnaturalness unnature unnautical unnavigability unnavigable unnavigableness unnavigably unnavigated unneaped unnearable unneared unnearly unnearness unneat unneatly unneatness unnebulous unnecessarily unnecessariness unnecessary unnecessitated unnecessitating unnecessity unneeded unneedful unneedfully unneedfulness unneedy unnefarious unnegated unneglected unnegligent unnegotiable unnegotiableness unnegotiably unnegotiated unnegro unneighbored unneighborlike unneighborliness unneighborly unnephritic unnerve unnerved unnervous unnest unnestle unnestled unneth unnethe unnethes unnethis unnetted unnettled unneurotic unneutral unneutralized unneutrally unnew unnewly unnewness unnibbed unnibbied unnice unnicely unniceness unniched unnicked unnickeled unnickelled unnicknamed unniggard unniggardly unnigh unnimbed unnimble unnimbleness unnimbly unnipped unnitrogenized unnobilitated unnobility unnoble unnobleness unnobly unnoised unnomadic unnominated unnonsensical unnoosed unnormal unnorthern unnose unnosed unnotable unnotched unnoted unnoteworthy unnoticeable unnoticeableness unnoticeably unnoticed unnoticing unnotified unnotify unnoting unnourishable unnourished unnourishing unnovel unnovercal unnucleated unnullified unnumberable unnumberableness unnumberably unnumbered unnumberedness unnumerical unnumerous unnurtured unnutritious unnutritive unnuzzled unnymphlike unoared unobdurate unobedience unobedient unobediently unobese unobeyed unobeying unobjected unobjectionable unobjectionableness unobjectionably unobjectional unobjective unobligated unobligatory unobliged unobliging unobligingly unobligingness unobliterable unobliterated unoblivious unobnoxious unobscene unobscure unobscured unobsequious unobsequiously unobsequiousness unobservable unobservance unobservant unobservantly unobservantness unobserved unobservedly unobserving unobservingly unobsessed unobsolete unobstinate unobstruct unobstructed unobstructedly unobstructedness unobstructive unobstruent unobtainable unobtainableness unobtainably unobtained unobtruded unobtruding unobtrusive unobtrusively unobtrusiveness unobtunded unobumbrated unobverted unobviated unobvious unoccasional unoccasioned unoccidental unoccluded unoccupancy unoccupation unoccupied unoccupiedly unoccupiedness unoccurring unoceanic unocular unode unodious unodoriferous unoecumenic unoecumenical unoffendable unoffended unoffendedly unoffender unoffending unoffendingly unoffensive unoffensively unoffensiveness unoffered unofficed unofficered unofficerlike unofficial unofficialdom unofficially unofficialness unofficiating unofficinal unofficious unofficiously unofficiousness unoffset unoften unogled unoil unoiled unoiling unoily unold unomened unominous unomitted unomnipotent unomniscient Unona unonerous unontological unopaque unoped unopen unopenable unopened unopening unopenly unopenness unoperably unoperated unoperatic unoperating unoperative unoperculate unoperculated unopined unopinionated unoppignorated unopportune unopportunely unopportuneness unopposable unopposed unopposedly unopposedness unopposite unoppressed unoppressive unoppressively unoppressiveness unopprobrious unoppugned unopulence unopulent unoratorial unoratorical unorbed unorbital unorchestrated unordain unordainable unordained unorder unorderable unordered unorderly unordinarily unordinariness unordinary unordinate unordinately unordinateness unordnanced unorganic unorganical unorganically unorganicalness unorganizable unorganized unorganizedly unorganizedness unoriental unorientalness unoriented unoriginal unoriginality unoriginally unoriginalness unoriginate unoriginated unoriginatedness unoriginately unoriginateness unorigination unoriginative unoriginatively unoriginativeness unorn unornamental unornamentally unornamentalness unornamented unornate unornithological unornly unorphaned unorthodox unorthodoxically unorthodoxly unorthodoxness unorthodoxy unorthographical unorthographically unoscillating unosculated unossified unostensible unostentation unostentatious unostentatiously unostentatiousness unoutgrown unoutlawed unoutraged unoutspeakable unoutspoken unoutworn unoverclouded unovercome unoverdone unoverdrawn unoverflowing unoverhauled unoverleaped unoverlooked unoverpaid unoverpowered unoverruled unovert unovertaken unoverthrown unovervalued unoverwhelmed unowed unowing unown unowned unoxidable unoxidated unoxidizable unoxidized unoxygenated unoxygenized unpacable unpaced unpacifiable unpacific unpacified unpacifiedly unpacifiedness unpacifist unpack unpacked unpacker unpadded unpadlocked unpagan unpaganize unpaged unpaginal unpaid unpained unpainful unpaining unpainstaking unpaint unpaintability unpaintable unpaintableness unpaintably unpainted unpaintedly unpaintedness unpaired unpalatability unpalatable unpalatableness unpalatably unpalatal unpalatial unpale unpaled unpalisaded unpalisadoed unpalled unpalliable unpalliated unpalpable unpalped unpalpitating unpalsied unpampered unpanegyrized unpanel unpaneled unpanelled unpanged unpanniered unpanoplied unpantheistic unpanting unpapal unpapaverous unpaper unpapered unparaded unparadise unparadox unparagoned unparagonized unparagraphed unparallel unparallelable unparalleled unparalleledly unparalleledness unparallelness unparalyzed unparaphrased unparasitical unparcel unparceled unparceling unparcelled unparcelling unparch unparched unparching unpardon unpardonable unpardonableness unpardonably unpardoned unpardonedness unpardoning unpared unparented unparfit unpargeted unpark unparked unparking unparliamentary unparliamented unparodied unparrel unparriable unparried unparroted unparrying unparsed unparsimonious unparsonic unparsonical unpartable unpartableness unpartably unpartaken unpartaking unparted unpartial unpartiality unpartially unpartialness unparticipant unparticipated unparticipating unparticipative unparticular unparticularized unparticularizing unpartisan unpartitioned unpartizan unpartnered unpartook unparty unpass unpassable unpassableness unpassably unpassed unpassing unpassionate unpassionately unpassionateness unpassioned unpassive unpaste unpasted unpasteurized unpasting unpastor unpastoral unpastured unpatched unpatent unpatentable unpatented unpaternal unpathed unpathetic unpathwayed unpatient unpatiently unpatientness unpatriarchal unpatrician unpatriotic unpatriotically unpatriotism unpatristic unpatrolled unpatronizable unpatronized unpatronizing unpatted unpatterned unpaunch unpaunched unpauperized unpausing unpausingly unpave unpaved unpavilioned unpaving unpawed unpawn unpawned unpayable unpayableness unpayably unpaying unpayment unpeace unpeaceable unpeaceableness unpeaceably unpeaceful unpeacefully unpeacefulness unpealed unpearled unpebbled unpeccable unpecked unpecuniarily unpedagogical unpedantic unpeddled unpedestal unpedigreed unpeel unpeelable unpeelableness unpeeled unpeerable unpeered unpeg unpejorative unpelagic unpelted unpen unpenal unpenalized unpenanced unpenciled unpencilled unpenetrable unpenetrated unpenetrating unpenitent unpenitently unpenitentness unpenned unpennied unpennoned unpensionable unpensionableness unpensioned unpensioning unpent unpenurious unpeople unpeopled unpeopling unperceived unperceivedly unperceptible unperceptibly unperceptive unperch unperched unpercipient unpercolated unpercussed unperfect unperfected unperfectedly unperfectedness unperfectly unperfectness unperfidious unperflated unperforate unperforated unperformable unperformance unperformed unperforming unperfumed unperilous unperiodic unperiodical unperiphrased unperishable unperishableness unperishably unperished unperishing unperjured unpermanency unpermanent unpermanently unpermeable unpermeated unpermissible unpermissive unpermitted unpermitting unpermixed unpernicious unperpendicular unperpetrated unperpetuated unperplex unperplexed unperplexing unpersecuted unpersecutive unperseverance unpersevering unperseveringly unperseveringness unpersonable unpersonableness unpersonal unpersonality unpersonified unpersonify unperspicuous unperspirable unperspiring unpersuadable unpersuadableness unpersuadably unpersuaded unpersuadedness unpersuasibleness unpersuasion unpersuasive unpersuasively unpersuasiveness unpertaining unpertinent unpertinently unperturbed unperturbedly unperturbedness unperuked unperused unpervaded unperverse unpervert unperverted unpervious unpessimistic unpestered unpestilential unpetal unpetitioned unpetrified unpetrify unpetticoated unpetulant unpharasaic unpharasaical unphased unphenomenal unphilanthropic unphilanthropically unphilological unphilosophic unphilosophically unphilosophicalness unphilosophize unphilosophized unphilosophy unphlegmatic unphonetic unphoneticness unphonographed unphosphatized unphotographed unphrasable unphrasableness unphrased unphrenological unphysical unphysically unphysicianlike unphysicked unphysiological unpicaresque unpick unpickable unpicked unpicketed unpickled unpictorial unpictorially unpicturability unpicturable unpictured unpicturesque unpicturesquely unpicturesqueness unpiece unpieced unpierceable unpierced unpiercing unpiety unpigmented unpile unpiled unpilfered unpilgrimlike unpillaged unpillared unpilled unpilloried unpillowed unpiloted unpimpled unpin unpinched unpining unpinion unpinioned unpinked unpinned unpious unpiped unpiqued unpirated unpitched unpiteous unpiteously unpiteousness unpitiable unpitiably unpitied unpitiedly unpitiedness unpitiful unpitifully unpitifulness unpitted unpitying unpityingly unpityingness unplacable unplacably unplacated unplace unplaced unplacid unplagiarized unplagued unplaid unplain unplained unplainly unplainness unplait unplaited unplan unplaned unplanished unplank unplanked unplanned unplannedly unplannedness unplant unplantable unplanted unplantlike unplashed unplaster unplastered unplastic unplat unplated unplatted unplausible unplausibleness unplausibly unplayable unplayed unplayful unplaying unpleached unpleadable unpleaded unpleading unpleasable unpleasant unpleasantish unpleasantly unpleasantness unpleasantry unpleased unpleasing unpleasingly unpleasingness unpleasurable unpleasurably unpleasure unpleat unpleated unplebeian unpledged unplenished unplenteous unplentiful unplentifulness unpliable unpliableness unpliably unpliancy unpliant unpliantly unplied unplighted unplodding unplotted unplotting unplough unploughed unplow unplowed unplucked unplug unplugged unplugging unplumb unplumbed unplume unplumed unplummeted unplump unplundered unplunge unplunged unplutocratic unplutocratically unpoached unpocket unpocketed unpodded unpoetic unpoetically unpoeticalness unpoeticized unpoetize unpoetized unpoignard unpointed unpointing unpoise unpoised unpoison unpoisonable unpoisoned unpoisonous unpolarizable unpolarized unpoled unpolemical unpolemically unpoliced unpolicied unpolish unpolishable unpolished unpolishedness unpolite unpolitely unpoliteness unpolitic unpolitical unpolitically unpoliticly unpollarded unpolled unpollutable unpolluted unpollutedly unpolluting unpolymerized unpompous unpondered unpontifical unpooled unpope unpopular unpopularity unpopularize unpopularly unpopularness unpopulate unpopulated unpopulous unpopulousness unporous unportable unportended unportentous unportioned unportly unportmanteaued unportraited unportrayable unportrayed unportuous unposed unposing unpositive unpossessable unpossessed unpossessedness unpossessing unpossibility unpossible unpossibleness unpossibly unposted unpostered unposthumous unpostmarked unpostponable unpostponed unpostulated unpot unpotted unpouched unpoulticed unpounced unpounded unpoured unpowdered unpower unpowerful unpowerfulness unpracticability unpracticable unpracticableness unpracticably unpractical unpracticality unpractically unpracticalness unpractice unpracticed unpragmatical unpraisable unpraise unpraised unpraiseful unpraiseworthy unpranked unpray unprayable unprayed unprayerful unpraying unpreach unpreached unpreaching unprecarious unprecautioned unpreceded unprecedented unprecedentedly unprecedentedness unprecedential unprecedently unprecious unprecipitate unprecipitated unprecise unprecisely unpreciseness unprecluded unprecludible unprecocious unpredacious unpredestinated unpredestined unpredicable unpredicated unpredict unpredictable unpredictableness unpredictably unpredicted unpredictedness unpredicting unpredisposed unpredisposing unpreened unprefaced unpreferable unpreferred unprefigured unprefined unprefixed unpregnant unprejudged unprejudicated unprejudice unprejudiced unprejudicedly unprejudicedness unprejudiciable unprejudicial unprejudicially unprejudicialness unprelatic unprelatical unpreluded unpremature unpremeditate unpremeditated unpremeditatedly unpremeditatedness unpremeditately unpremeditation unpremonished unpremonstrated unprenominated unprenticed unpreoccupied unpreordained unpreparation unprepare unprepared unpreparedly unpreparedness unpreparing unpreponderated unpreponderating unprepossessedly unprepossessing unprepossessingly unprepossessingness unpreposterous unpresaged unpresageful unpresaging unpresbyterated unprescient unprescinded unprescribed unpresentability unpresentable unpresentableness unpresentably unpresented unpreservable unpreserved unpresidential unpresiding unpressed unpresumable unpresumed unpresuming unpresumingness unpresumptuous unpresumptuously unpresupposed unpretended unpretending unpretendingly unpretendingness unpretentious unpretentiously unpretentiousness unpretermitted unpreternatural unprettiness unpretty unprevailing unprevalent unprevaricating unpreventable unpreventableness unpreventably unprevented unpreventible unpreventive unpriceably unpriced unpricked unprickled unprickly unpriest unpriestlike unpriestly unpriggish unprim unprime unprimed unprimitive unprimmed unprince unprincelike unprinceliness unprincely unprincess unprincipal unprinciple unprincipled unprincipledly unprincipledness unprint unprintable unprintableness unprintably unprinted unpriority unprismatic unprison unprisonable unprisoned unprivate unprivileged unprizable unprized unprobated unprobationary unprobed unprobity unproblematic unproblematical unprocessed unproclaimed unprocrastinated unprocreant unprocreated unproctored unprocurable unprocurableness unprocure unprocured unproded unproduceable unproduceableness unproduceably unproduced unproducedness unproducible unproducibleness unproducibly unproductive unproductively unproductiveness unproductivity unprofanable unprofane unprofaned unprofessed unprofessing unprofessional unprofessionalism unprofessionally unprofessorial unproffered unproficiency unproficient unproficiently unprofit unprofitable unprofitableness unprofitably unprofited unprofiteering unprofiting unprofound unprofuse unprofusely unprofuseness unprognosticated unprogressed unprogressive unprogressively unprogressiveness unprohibited unprohibitedness unprohibitive unprojected unprojecting unproliferous unprolific unprolix unprologued unprolonged unpromiscuous unpromise unpromised unpromising unpromisingly unpromisingness unpromotable unpromoted unprompted unpromptly unpromulgated unpronounce unpronounceable unpronounced unpronouncing unproofread unprop unpropagated unpropelled unpropense unproper unproperly unproperness unpropertied unprophesiable unprophesied unprophetic unprophetical unprophetically unprophetlike unpropitiable unpropitiated unpropitiatedness unpropitiatory unpropitious unpropitiously unpropitiousness unproportion unproportionable unproportionableness unproportionably unproportional unproportionality unproportionally unproportionate unproportionately unproportionateness unproportioned unproportionedly unproportionedness unproposed unproposing unpropounded unpropped unpropriety unprorogued unprosaic unproscribable unproscribed unprosecutable unprosecuted unprosecuting unproselyte unproselyted unprosodic unprospected unprospective unprosperably unprospered unprosperity unprosperous unprosperously unprosperousness unprostitute unprostituted unprostrated unprotectable unprotected unprotectedly unprotectedness unprotective unprotestant unprotestantize unprotested unprotesting unprotruded unprotruding unprotrusive unproud unprovability unprovable unprovableness unprovably unproved unprovedness unproven unproverbial unprovidable unprovide unprovided unprovidedly unprovidedness unprovidenced unprovident unprovidential unprovidently unprovincial unproving unprovision unprovisioned unprovocative unprovokable unprovoke unprovoked unprovokedly unprovokedness unprovoking unproximity unprudence unprudent unprudently unpruned unprying unpsychic unpsychological unpublic unpublicity unpublishable unpublishableness unpublishably unpublished unpucker unpuckered unpuddled unpuffed unpuffing unpugilistic unpugnacious unpulled unpulleyed unpulped unpulverable unpulverize unpulverized unpulvinate unpulvinated unpumicated unpummeled unpummelled unpumpable unpumped unpunched unpunctated unpunctilious unpunctual unpunctuality unpunctually unpunctuated unpunctuating unpunishable unpunishably unpunished unpunishedly unpunishedness unpunishing unpunishingly unpurchasable unpurchased unpure unpurely unpureness unpurgeable unpurged unpurifiable unpurified unpurifying unpuritan unpurled unpurloined unpurpled unpurported unpurposed unpurposelike unpurposely unpurposing unpurse unpursed unpursuable unpursued unpursuing unpurveyed unpushed unput unputrefiable unputrefied unputrid unputtied unpuzzle unquadded unquaffed unquailed unquailing unquailingly unquakerlike unquakerly unquaking unqualifiable unqualification unqualified unqualifiedly unqualifiedness unqualify unqualifying unqualifyingly unqualitied unquality unquantified unquantitative unquarantined unquarreled unquarreling unquarrelled unquarrelling unquarrelsome unquarried unquartered unquashed unquayed unqueen unqueened unqueening unqueenlike unqueenly unquellable unquelled unquenchable unquenchableness unquenchably unquenched unqueried unquested unquestionability unquestionable unquestionableness unquestionably unquestionate unquestioned unquestionedly unquestionedness unquestioning unquestioningly unquestioningness unquibbled unquibbling unquick unquickened unquickly unquicksilvered unquiescence unquiescent unquiescently unquiet unquietable unquieted unquieting unquietly unquietness unquietude unquilleted unquilted unquit unquittable unquitted unquivered unquivering unquizzable unquizzed unquotable unquote unquoted unrabbeted unrabbinical unraced unrack unracked unracking unradiated unradical unradicalize unraffled unraftered unraided unrailed unrailroaded unrailwayed unrainy unraised unrake unraked unraking unrallied unram unrambling unramified unrammed unramped unranched unrancid unrancored unrandom unrank unranked unransacked unransomable unransomed unrapacious unraped unraptured unrare unrarefied unrash unrasped unratable unrated unratified unrational unrattled unravaged unravel unravelable unraveled unraveler unraveling unravellable unravelled unraveller unravelling unravelment unraving unravished unravishing unray unrayed unrazed unrazored unreachable unreachably unreached unreactive unread unreadability unreadable unreadableness unreadably unreadily unreadiness unready unreal unrealism unrealist unrealistic unreality unrealizable unrealize unrealized unrealizing unreally unrealmed unrealness unreaped unreared unreason unreasonability unreasonable unreasonableness unreasonably unreasoned unreasoning unreasoningly unreassuring unreassuringly unreave unreaving unrebated unrebel unrebellious unrebuffable unrebuffably unrebuilt unrebukable unrebukably unrebuked unrebuttable unrebuttableness unrebutted unrecallable unrecallably unrecalled unrecalling unrecantable unrecanted unrecaptured unreceding unreceipted unreceivable unreceived unreceiving unrecent unreceptant unreceptive unreceptivity unreciprocal unreciprocated unrecited unrecked unrecking unreckingness unreckon unreckonable unreckoned unreclaimable unreclaimably unreclaimed unreclaimedness unreclaiming unreclined unreclining unrecognition unrecognizable unrecognizableness unrecognizably unrecognized unrecognizing unrecognizingly unrecoined unrecollected unrecommendable unrecompensable unrecompensed unreconcilable unreconcilableness unreconcilably unreconciled unrecondite unreconnoitered unreconsidered unreconstructed unrecordable unrecorded unrecordedness unrecording unrecountable unrecounted unrecoverable unrecoverableness unrecoverably unrecovered unrecreant unrecreated unrecreating unrecriminative unrecruitable unrecruited unrectangular unrectifiable unrectifiably unrectified unrecumbent unrecuperated unrecurrent unrecurring unrecusant unred unredacted unredeemable unredeemableness unredeemably unredeemed unredeemedly unredeemedness unredeeming unredressable unredressed unreduceable unreduced unreducible unreducibleness unreducibly unreduct unreefed unreel unreelable unreeled unreeling unreeve unreeving unreferenced unreferred unrefilled unrefine unrefined unrefinedly unrefinedness unrefinement unrefining unrefitted unreflected unreflecting unreflectingly unreflectingness unreflective unreflectively unreformable unreformed unreformedness unreforming unrefracted unrefracting unrefrainable unrefrained unrefraining unrefreshed unrefreshful unrefreshing unrefreshingly unrefrigerated unrefulgent unrefunded unrefunding unrefusable unrefusably unrefused unrefusing unrefusingly unrefutable unrefuted unrefuting unregainable unregained unregal unregaled unregality unregally unregard unregardable unregardant unregarded unregardedly unregardful unregeneracy unregenerate unregenerately unregenerateness unregenerating unregeneration unregimented unregistered unregressive unregretful unregretfully unregretfulness unregrettable unregretted unregretting unregular unregulated unregulative unregurgitated unrehabilitated unrehearsable unrehearsed unrehearsing unreigning unreimbodied unrein unreined unreinstated unreiterable unreiterated unrejectable unrejoiced unrejoicing unrejuvenated unrelapsing unrelated unrelatedness unrelating unrelational unrelative unrelatively unrelaxable unrelaxed unrelaxing unrelaxingly unreleasable unreleased unreleasing unrelegated unrelentance unrelented unrelenting unrelentingly unrelentingness unrelentor unrelevant unreliability unreliable unreliableness unreliably unreliance unrelievable unrelievableness unrelieved unrelievedly unreligion unreligioned unreligious unreligiously unreligiousness unrelinquishable unrelinquishably unrelinquished unrelinquishing unrelishable unrelished unrelishing unreluctant unreluctantly unremaining unremanded unremarkable unremarked unremarried unremediable unremedied unremember unrememberable unremembered unremembering unremembrance unreminded unremissible unremittable unremitted unremittedly unremittent unremittently unremitting unremittingly unremittingness unremonstrant unremonstrated unremonstrating unremorseful unremorsefully unremote unremotely unremounted unremovable unremovableness unremovably unremoved unremunerated unremunerating unremunerative unremuneratively unremunerativeness unrenderable unrendered unrenewable unrenewed unrenounceable unrenounced unrenouncing unrenovated unrenowned unrenownedly unrenownedness unrent unrentable unrented unreorganized unrepaid unrepair unrepairable unrepaired unrepartable unreparted unrepealability unrepealable unrepealableness unrepealably unrepealed unrepeatable unrepeated unrepellable unrepelled unrepellent unrepent unrepentable unrepentance unrepentant unrepentantly unrepentantness unrepented unrepenting unrepentingly unrepentingness unrepetitive unrepined unrepining unrepiningly unrepiqued unreplaceable unreplaced unreplenished unrepleviable unreplevined unrepliable unrepliably unreplied unreplying unreportable unreported unreportedly unreportedness unrepose unreposed unreposeful unreposefulness unreposing unrepossessed unreprehended unrepresentable unrepresentation unrepresentative unrepresented unrepresentedness unrepressed unrepressible unreprievable unreprievably unreprieved unreprimanded unreprinted unreproachable unreproachableness unreproachably unreproached unreproachful unreproachfully unreproaching unreproachingly unreprobated unreproducible unreprovable unreprovableness unreprovably unreproved unreprovedly unreprovedness unreproving unrepublican unrepudiable unrepudiated unrepugnant unrepulsable unrepulsed unrepulsing unrepulsive unreputable unreputed unrequalified unrequested unrequickened unrequired unrequisite unrequitable unrequital unrequited unrequitedly unrequitedness unrequitement unrequiter unrequiting unrescinded unrescued unresemblant unresembling unresented unresentful unresenting unreserve unreserved unreservedly unreservedness unresifted unresigned unresistable unresistably unresistance unresistant unresistantly unresisted unresistedly unresistedness unresistible unresistibleness unresistibly unresisting unresistingly unresistingness unresolute unresolvable unresolve unresolved unresolvedly unresolvedness unresolving unresonant unresounded unresounding unresourceful unresourcefulness unrespect unrespectability unrespectable unrespected unrespectful unrespectfully unrespectfulness unrespective unrespectively unrespectiveness unrespirable unrespired unrespited unresplendent unresponding unresponsible unresponsibleness unresponsive unresponsively unresponsiveness unrest unrestable unrested unrestful unrestfully unrestfulness unresting unrestingly unrestingness unrestorable unrestored unrestrainable unrestrainably unrestrained unrestrainedly unrestrainedness unrestraint unrestrictable unrestricted unrestrictedly unrestrictedness unrestrictive unresty unresultive unresumed unresumptive unretainable unretained unretaliated unretaliating unretardable unretarded unretentive unreticent unretinued unretired unretiring unretorted unretouched unretractable unretracted unretreating unretrenchable unretrenched unretrievable unretrieved unretrievingly unretted unreturnable unreturnably unreturned unreturning unreturningly unrevealable unrevealed unrevealedness unrevealing unrevealingly unrevelationize unrevenged unrevengeful unrevengefulness unrevenging unrevengingly unrevenue unrevenued unreverberated unrevered unreverence unreverenced unreverend unreverendly unreverent unreverential unreverently unreverentness unreversable unreversed unreversible unreverted unrevertible unreverting unrevested unrevetted unreviewable unreviewed unreviled unrevised unrevivable unrevived unrevocable unrevocableness unrevocably unrevoked unrevolted unrevolting unrevolutionary unrevolutionized unrevolved unrevolving unrewardable unrewarded unrewardedly unrewarding unreworded unrhetorical unrhetorically unrhetoricalness unrhyme unrhymed unrhythmic unrhythmical unrhythmically unribbed unribboned unrich unriched unricht unricked unrid unridable unridableness unridably unridden unriddle unriddleable unriddled unriddler unriddling unride unridely unridered unridged unridiculed unridiculous unrife unriffled unrifled unrifted unrig unrigged unrigging unright unrightable unrighted unrighteous unrighteously unrighteousness unrightful unrightfully unrightfulness unrightly unrightwise unrigid unrigorous unrimpled unrind unring unringable unringed unringing unrinsed unrioted unrioting unriotous unrip unripe unriped unripely unripened unripeness unripening unrippable unripped unripping unrippled unrippling unripplingly unrisen unrising unriskable unrisked unrisky unritual unritualistic unrivalable unrivaled unrivaledly unrivaledness unrived unriven unrivet unriveted unriveting unroaded unroadworthy unroaming unroast unroasted unrobbed unrobe unrobed unrobust unrocked unrococo unrodded unroiled unroll unrollable unrolled unroller unrolling unrollment unromantic unromantical unromantically unromanticalness unromanticized unroof unroofed unroofing unroomy unroost unroosted unroosting unroot unrooted unrooting unrope unroped unrosed unrosined unrostrated unrotated unrotating unroted unrotted unrotten unrotund unrouged unrough unroughened unround unrounded unrounding unrousable unroused unroutable unrouted unrove unroved unroving unrow unrowed unroweled unroyal unroyalist unroyalized unroyally unroyalness Unrra unrubbed unrubbish unrubified unrubrical unrubricated unruddered unruddled unrueful unruffable unruffed unruffle unruffled unruffling unrugged unruinable unruinated unruined unrulable unrulableness unrule unruled unruledly unruledness unruleful unrulily unruliness unruly unruminated unruminating unruminatingly unrummaged unrumored unrumple unrumpled unrun unrung unruptured unrural unrushed Unrussian unrust unrusted unrustic unrusticated unrustling unruth unsabbatical unsabered unsabled unsabred unsaccharic unsacerdotal unsacerdotally unsack unsacked unsacramental unsacramentally unsacramentarian unsacred unsacredly unsacrificeable unsacrificeably unsacrificed unsacrificial unsacrificing unsacrilegious unsad unsadden unsaddened unsaddle unsaddled unsaddling unsafe unsafeguarded unsafely unsafeness unsafety unsagacious unsage unsagging unsaid unsailable unsailed unsailorlike unsaint unsainted unsaintlike unsaintly unsalability unsalable unsalableness unsalably unsalaried unsalesmanlike unsaline unsalivated unsallying unsalmonlike unsalt unsaltable unsaltatory unsalted unsalubrious unsalutary unsaluted unsaluting unsalvability unsalvable unsalvableness unsalvaged unsalved unsampled unsanctification unsanctified unsanctifiedly unsanctifiedness unsanctify unsanctifying unsanctimonious unsanctimoniously unsanctimoniousness unsanction unsanctionable unsanctioned unsanctioning unsanctitude unsanctity unsanctuaried unsandaled unsanded unsane unsanguinary unsanguine unsanguinely unsanguineness unsanguineous unsanguineously unsanitariness unsanitary unsanitated unsanitation unsanity unsaponifiable unsaponified unsapped unsappy unsarcastic unsardonic unsartorial unsash unsashed unsatable unsatanic unsated unsatedly unsatedness unsatiability unsatiable unsatiableness unsatiably unsatiate unsatiated unsatiating unsatin unsatire unsatirical unsatirically unsatirize unsatirized unsatisfaction unsatisfactorily unsatisfactoriness unsatisfactory unsatisfiable unsatisfiableness unsatisfiably unsatisfied unsatisfiedly unsatisfiedness unsatisfying unsatisfyingly unsatisfyingness unsaturable unsaturated unsaturatedly unsaturatedness unsaturation unsatyrlike unsauced unsaurian unsavable unsaveable unsaved unsaving unsavored unsavoredly unsavoredness unsavorily unsavoriness unsavory unsawed unsawn unsay unsayability unsayable unscabbard unscabbarded unscabbed unscaffolded unscalable unscalableness unscalably unscale unscaled unscaledness unscalloped unscaly unscamped unscandalize unscandalized unscandalous unscannable unscanned unscanted unscanty unscarb unscarce unscared unscarfed unscarified unscarred unscathed unscathedly unscathedness unscattered unscavengered unscenic unscent unscented unscepter unsceptered unsceptical unsceptre unsceptred unscheduled unschematic unschematized unscholar unscholarlike unscholarly unscholastic unschool unschooled unschooledly unschooledness unscienced unscientific unscientifical unscientifically unscintillating unscioned unscissored unscoffed unscoffing unscolded unsconced unscooped unscorched unscored unscorified unscoring unscorned unscornful unscornfully unscornfulness unscotch unscotched unscottify unscoured unscourged unscowling unscramble unscrambling unscraped unscratchable unscratched unscratching unscratchingly unscrawled unscreen unscreenable unscreenably unscreened unscrew unscrewable unscrewed unscrewing unscribal unscribbled unscribed unscrimped unscriptural unscripturally unscripturalness unscrubbed unscrupled unscrupulosity unscrupulous unscrupulously unscrupulousness unscrutable unscrutinized unscrutinizing unscrutinizingly unsculptural unsculptured unscummed unscutcheoned unseafaring unseal unsealable unsealed unsealer unsealing unseam unseamanlike unseamanship unseamed unseaming unsearchable unsearchableness unsearchably unsearched unsearcherlike unsearching unseared unseason unseasonable unseasonableness unseasonably unseasoned unseat unseated unseaworthiness unseaworthy unseceding unsecluded unseclusive unseconded unsecrecy unsecret unsecretarylike unsecreted unsecreting unsecretly unsecretness unsectarian unsectarianism unsectarianize unsectional unsecular unsecularize unsecularized unsecure unsecured unsecuredly unsecuredness unsecurely unsecureness unsecurity unsedate unsedentary unseditious unseduce unseduced unseducible unseductive unsedulous unsee unseeable unseeded unseeing unseeingly unseeking unseeming unseemingly unseemlily unseemliness unseemly unseen unseethed unsegmented unsegregable unsegregated unsegregatedness unseignorial unseismic unseizable unseized unseldom unselect unselected unselecting unselective unself unselfish unselfishly unselfishness unselflike unselfness unselling unsenatorial unsenescent unsensational unsense unsensed unsensibility unsensible unsensibleness unsensibly unsensitive unsensitize unsensitized unsensory unsensual unsensualize unsensualized unsensually unsensuous unsensuousness unsent unsentenced unsententious unsentient unsentimental unsentimentalist unsentimentality unsentimentalize unsentimentally unsentineled unsentinelled unseparable unseparableness unseparably unseparate unseparated unseptate unseptated unsepulcher unsepulchered unsepulchral unsepulchre unsepulchred unsepultured unsequenced unsequential unsequestered unseraphical unserenaded unserene unserflike unserious unseriousness unserrated unserried unservable unserved unserviceability unserviceable unserviceableness unserviceably unservicelike unservile unsesquipedalian unset unsetting unsettle unsettleable unsettled unsettledness unsettlement unsettling unseverable unseverableness unsevere unsevered unseveredly unseveredness unsew unsewed unsewered unsewing unsewn unsex unsexed unsexing unsexlike unsexual unshackle unshackled unshackling unshade unshaded unshadow unshadowable unshadowed unshady unshafted unshakable unshakably unshakeable unshakeably unshaken unshakenly unshakenness unshaking unshakingness unshaled unshamable unshamableness unshamably unshameable unshameableness unshameably unshamed unshamefaced unshamefacedness unshameful unshamefully unshamefulness unshammed unshanked unshapable unshape unshapeable unshaped unshapedness unshapeliness unshapely unshapen unshapenly unshapenness unsharable unshared unsharedness unsharing unsharp unsharped unsharpen unsharpened unsharpening unsharping unshattered unshavable unshaveable unshaved unshavedly unshavedness unshaven unshavenly unshavenness unshawl unsheaf unsheared unsheathe unsheathed unsheathing unshed unsheet unsheeted unsheeting unshell unshelled unshelling unshelterable unsheltered unsheltering unshelve unshepherded unshepherding unsheriff unshewed unshieldable unshielded unshielding unshiftable unshifted unshiftiness unshifting unshifty unshimmering unshingled unshining unship unshiplike unshipment unshipped unshipping unshipshape unshipwrecked unshirking unshirted unshivered unshivering unshockable unshocked unshod unshodden unshoe unshoed unshoeing unshop unshore unshored unshorn unshort unshortened unshot unshotted unshoulder unshouted unshouting unshoved unshoveled unshowable unshowed unshowmanlike unshown unshowy unshredded unshrew unshrewd unshrewish unshrill unshrine unshrined unshrinement unshrink unshrinkability unshrinkable unshrinking unshrinkingly unshrived unshriveled unshrivelled unshriven unshroud unshrouded unshrubbed unshrugging unshrunk unshrunken unshuddering unshuffle unshuffled unshunnable unshunned unshunted unshut unshutter unshuttered unshy unshyly unshyness unsibilant unsiccated unsick unsickened unsicker unsickerly unsickerness unsickled unsickly unsided unsiding unsiege unsifted unsighing unsight unsightable unsighted unsighting unsightliness unsightly unsigmatic unsignable unsignaled unsignalized unsignalled unsignatured unsigned unsigneted unsignificancy unsignificant unsignificantly unsignificative unsignified unsignifying unsilenceable unsilenceably unsilenced unsilent unsilentious unsilently unsilicified unsilly unsilvered unsimilar unsimilarity unsimilarly unsimple unsimplicity unsimplified unsimplify unsimulated unsimultaneous unsin unsincere unsincerely unsincereness unsincerity unsinew unsinewed unsinewing unsinewy unsinful unsinfully unsinfulness unsing unsingability unsingable unsingableness unsinged unsingle unsingled unsingleness unsingular unsinister unsinkability unsinkable unsinking unsinnable unsinning unsinningness unsiphon unsipped unsister unsistered unsisterliness unsisterly unsizable unsizableness unsizeable unsizeableness unsized unskaithd unskeptical unsketchable unsketched unskewed unskewered unskilful unskilfully unskilled unskilledly unskilledness unskillful unskillfully unskillfulness unskimmed unskin unskinned unskirted unslack unslacked unslackened unslackening unslacking unslagged unslain unslakable unslakeable unslaked unslammed unslandered unslanderous unslapped unslashed unslate unslated unslating unslaughtered unslave unslayable unsleaved unsleek unsleepably unsleeping unsleepingly unsleepy unsleeve unsleeved unslender unslept unsliced unsliding unslighted unsling unslip unslipped unslippery unslipping unslit unslockened unsloped unslopped unslot unslothful unslothfully unslothfulness unslotted unsloughed unsloughing unslow unsluggish unsluice unsluiced unslumbering unslumberous unslumbrous unslung unslurred unsly unsmacked unsmart unsmartly unsmartness unsmeared unsmelled unsmelling unsmelted unsmiled unsmiling unsmilingly unsmilingness unsmirched unsmirking unsmitten unsmokable unsmokeable unsmoked unsmokified unsmoking unsmoky unsmooth unsmoothed unsmoothly unsmoothness unsmote unsmotherable unsmothered unsmudged unsmuggled unsmutched unsmutted unsmutty unsnaffled unsnagged unsnaggled unsnaky unsnap unsnapped unsnare unsnared unsnarl unsnatch unsnatched unsneck unsneering unsnib unsnipped unsnobbish unsnoring unsnouted unsnow unsnubbable unsnubbed unsnuffed unsoaked unsoaped unsoarable unsober unsoberly unsoberness unsobriety unsociability unsociable unsociableness unsociably unsocial unsocialism unsocialistic unsociality unsocializable unsocialized unsocially unsocialness unsociological unsocket unsodden unsoft unsoftened unsoftening unsoggy unsoil unsoiled unsoiledness unsolaced unsolacing unsolar unsold unsolder unsoldered unsoldering unsoldier unsoldiered unsoldierlike unsoldierly unsole unsoled unsolemn unsolemness unsolemnize unsolemnized unsolemnly unsolicitated unsolicited unsolicitedly unsolicitous unsolicitously unsolicitousness unsolid unsolidarity unsolidifiable unsolidified unsolidity unsolidly unsolidness unsolitary unsolubility unsoluble unsolvable unsolvableness unsolvably unsolved unsomatic unsomber unsombre unsome unson unsonable unsonant unsonlike unsonneted unsonorous unsonsy unsoothable unsoothed unsoothfast unsoothing unsooty unsophistical unsophistically unsophisticate unsophisticated unsophisticatedly unsophisticatedness unsophistication unsophomoric unsordid unsore unsorrowed unsorrowing unsorry unsort unsortable unsorted unsorting unsotted unsought unsoul unsoulful unsoulfully unsoulish unsound unsoundable unsoundableness unsounded unsounding unsoundly unsoundness unsour unsoured unsoused unsovereign unsowed unsown unspaced unspacious unspaded unspan unspangled unspanked unspanned unspar unsparable unspared unsparing unsparingly unsparingness unsparkling unsparred unsparse unspatial unspatiality unspattered unspawned unspayed unspeak unspeakability unspeakable unspeakableness unspeakably unspeaking unspeared unspecialized unspecializing unspecific unspecified unspecifiedly unspecious unspecked unspeckled unspectacled unspectacular unspectacularly unspecterlike unspectrelike unspeculating unspeculative unspeculatively unsped unspeed unspeedy unspeered unspell unspellable unspelled unspelt unspendable unspending unspent unspewed unsphere unsphered unsphering unspiable unspiced unspicy unspied unspike unspillable unspin unspinsterlike unspinsterlikeness unspiral unspired unspirit unspirited unspiritedly unspiriting unspiritual unspirituality unspiritualize unspiritualized unspiritually unspiritualness unspissated unspit unspited unspiteful unspitted unsplashed unsplattered unsplayed unspleened unspleenish unspleenishly unsplendid unspliced unsplinted unsplintered unsplit unspoil unspoilable unspoilableness unspoilably unspoiled unspoken unspokenly unsponged unspongy unsponsored unspontaneous unspontaneously unspookish unsported unsportful unsporting unsportive unsportsmanlike unsportsmanly unspot unspotlighted unspottable unspotted unspottedly unspottedness unspoused unspouselike unspouted unsprained unsprayed unspread unsprightliness unsprightly unspring unspringing unspringlike unsprinkled unsprinklered unsprouted unsproutful unsprouting unspruced unsprung unspun unspurned unspurred unspying unsquandered unsquarable unsquare unsquared unsquashed unsqueamish unsqueezable unsqueezed unsquelched unsquinting unsquire unsquired unsquirelike unsquirted unstabbed unstability unstable unstabled unstableness unstablished unstably unstack unstacked unstacker unstaffed unstaged unstaggered unstaggering unstagnating unstagy unstaid unstaidly unstaidness unstain unstainable unstainableness unstained unstainedly unstainedness unstaled unstalked unstalled unstammering unstamped unstampeded unstanch unstanchable unstandard unstandardized unstanzaic unstar unstarch unstarched unstarlike unstarred unstarted unstarting unstartled unstarved unstatable unstate unstateable unstated unstately unstatesmanlike unstatic unstating unstation unstationary unstationed unstatistic unstatistical unstatued unstatuesque unstatutable unstatutably unstaunch unstaunchable unstaunched unstavable unstaveable unstaved unstayable unstayed unstayedness unstaying unsteadfast unsteadfastly unsteadfastness unsteadied unsteadily unsteadiness unsteady unsteadying unstealthy unsteamed unsteaming unsteck unstecked unsteel unsteeled unsteep unsteeped unsteepled unsteered unstemmable unstemmed unstentorian unstep unstercorated unstereotyped unsterile unsterilized unstern unstethoscoped unstewardlike unstewed unstick unsticking unstickingness unsticky unstiffen unstiffened unstifled unstigmatized unstill unstilled unstillness unstilted unstimulated unstimulating unsting unstinged unstinging unstinted unstintedly unstinting unstintingly unstippled unstipulated unstirrable unstirred unstirring unstitch unstitched unstitching unstock unstocked unstocking unstockinged unstoic unstoical unstoically unstoicize unstoked unstoken unstolen unstonable unstone unstoned unstoniness unstony unstooping unstop unstoppable unstopped unstopper unstoppered unstopple unstore unstored unstoried unstormed unstormy unstout unstoved unstow unstowed unstraddled unstrafed unstraight unstraightened unstraightforward unstraightness unstrain unstrained unstraitened unstrand unstranded unstrange unstrangered unstrangled unstrangulable unstrap unstrapped unstrategic unstrategically unstratified unstraying unstreaked unstrength unstrengthen unstrengthened unstrenuous unstressed unstressedly unstressedness unstretch unstretched unstrewed unstrewn unstriated unstricken unstrictured unstridulous unstrike unstriking unstring unstringed unstringing unstrip unstriped unstripped unstriving unstroked unstrong unstructural unstruggling unstrung unstubbed unstubborn unstuccoed unstuck unstudded unstudied unstudious unstuff unstuffed unstuffing unstultified unstumbling unstung unstunned unstunted unstupefied unstupid unstuttered unstuttering unsty unstyled unstylish unstylishly unstylishness unsubdivided unsubduable unsubduableness unsubduably unsubducted unsubdued unsubduedly unsubduedness unsubject unsubjectable unsubjected unsubjectedness unsubjection unsubjective unsubjectlike unsubjugate unsubjugated unsublimable unsublimated unsublimed unsubmerged unsubmergible unsubmerging unsubmission unsubmissive unsubmissively unsubmissiveness unsubmitted unsubmitting unsubordinate unsubordinated unsuborned unsubpoenaed unsubscribed unsubscribing unsubservient unsubsided unsubsidiary unsubsiding unsubsidized unsubstanced unsubstantial unsubstantiality unsubstantialize unsubstantially unsubstantialness unsubstantiate unsubstantiated unsubstantiation unsubstituted unsubtle unsubtleness unsubtlety unsubtly unsubtracted unsubventioned unsubventionized unsubversive unsubvertable unsubverted unsubvertive unsucceedable unsucceeded unsucceeding unsuccess unsuccessful unsuccessfully unsuccessfulness unsuccessive unsuccessively unsuccessiveness unsuccinct unsuccorable unsuccored unsucculent unsuccumbing unsucked unsuckled unsued unsufferable unsufferableness unsufferably unsuffered unsuffering unsufficed unsufficience unsufficiency unsufficient unsufficiently unsufficing unsufficingness unsufflated unsuffocate unsuffocated unsuffocative unsuffused unsugared unsugary unsuggested unsuggestedness unsuggestive unsuggestiveness unsuit unsuitability unsuitable unsuitableness unsuitably unsuited unsuiting unsulky unsullen unsulliable unsullied unsulliedly unsulliedness unsulphonated unsulphureous unsulphurized unsultry unsummable unsummarized unsummed unsummered unsummerlike unsummerly unsummonable unsummoned unsumptuary unsumptuous unsun unsunburned unsundered unsung unsunk unsunken unsunned unsunny unsuperable unsuperannuated unsupercilious unsuperficial unsuperfluous unsuperior unsuperlative unsupernatural unsupernaturalize unsupernaturalized unsuperscribed unsuperseded unsuperstitious unsupervised unsupervisedly unsupped unsupplantable unsupplanted unsupple unsuppled unsupplemented unsuppliable unsupplicated unsupplied unsupportable unsupportableness unsupportably unsupported unsupportedly unsupportedness unsupporting unsupposable unsupposed unsuppressed unsuppressible unsuppressibly unsuppurated unsuppurative unsupreme unsurcharge unsurcharged unsure unsurfaced unsurfeited unsurfeiting unsurgical unsurging unsurmised unsurmising unsurmountable unsurmountableness unsurmountably unsurmounted unsurnamed unsurpassable unsurpassableness unsurpassably unsurpassed unsurplice unsurpliced unsurprised unsurprising unsurrendered unsurrendering unsurrounded unsurveyable unsurveyed unsurvived unsurviving unsusceptibility unsusceptible unsusceptibleness unsusceptibly unsusceptive unsuspectable unsuspectably unsuspected unsuspectedly unsuspectedness unsuspectful unsuspectfulness unsuspectible unsuspecting unsuspectingly unsuspectingness unsuspective unsuspended unsuspicion unsuspicious unsuspiciously unsuspiciousness unsustainable unsustained unsustaining unsutured unswabbed unswaddle unswaddled unswaddling unswallowable unswallowed unswanlike unswapped unswarming unswathable unswathe unswathed unswathing unswayable unswayed unswayedness unswaying unswear unswearing unsweat unsweated unsweating unsweepable unsweet unsweeten unsweetened unsweetenedness unsweetly unsweetness unswell unswelled unswelling unsweltered unswept unswervable unswerved unswerving unswervingly unswilled unswing unswingled unswitched unswivel unswollen unswooning unsworn unswung unsyllabic unsyllabled unsyllogistical unsymbolic unsymbolical unsymbolically unsymbolicalness unsymbolized unsymmetrical unsymmetrically unsymmetricalness unsymmetrized unsymmetry unsympathetic unsympathetically unsympathizability unsympathizable unsympathized unsympathizing unsympathizingly unsympathy unsymphonious unsymptomatic unsynchronized unsynchronous unsyncopated unsyndicated unsynonymous unsyntactical unsynthetic unsyringed unsystematic unsystematical unsystematically unsystematized unsystematizedly unsystematizing unsystemizable untabernacled untabled untabulated untack untacked untacking untackle untackled untactful untactfully untactfulness untagged untailed untailorlike untailorly untaint untaintable untainted untaintedly untaintedness untainting untakable untakableness untakeable untakeableness untaken untaking untalented untalkative untalked untalking untall untallied untallowed untamable untamableness untame untamed untamedly untamedness untamely untameness untampered untangential untangibility untangible untangibleness untangibly untangle untangled untangling untanned untantalized untantalizing untap untaped untapered untapering untapestried untappable untapped untar untarnishable untarnished untarred untarried untarrying untartarized untasked untasseled untastable untaste untasteable untasted untasteful untastefully untastefulness untasting untasty untattered untattooed untaught untaughtness untaunted untaut untautological untawdry untawed untax untaxable untaxed untaxing unteach unteachable unteachableness unteachably unteacherlike unteaching unteam unteamed unteaming untearable unteased unteasled untechnical untechnicalize untechnically untedded untedious unteem unteeming unteethed untelegraphed untell untellable untellably untelling untemper untemperamental untemperate untemperately untemperateness untempered untempering untempested untempestuous untempled untemporal untemporary untemporizing untemptability untemptable untemptably untempted untemptible untemptibly untempting untemptingly untemptingness untenability untenable untenableness untenably untenacious untenacity untenant untenantable untenantableness untenanted untended untender untendered untenderly untenderness untenible untenibleness untenibly untense untent untentaculate untented untentered untenty unterminable unterminableness unterminably unterminated unterminating unterraced unterrestrial unterrible unterribly unterrifiable unterrific unterrified unterrifying unterrorized untessellated untestable untestamentary untested untestifying untether untethered untethering untewed untextual unthank unthanked unthankful unthankfully unthankfulness unthanking unthatch unthatched unthaw unthawed unthawing untheatric untheatrical untheatrically untheistic unthematic untheological untheologically untheologize untheoretic untheoretical untheorizable untherapeutical unthick unthicken unthickened unthievish unthink unthinkability unthinkable unthinkableness unthinkably unthinker unthinking unthinkingly unthinkingness unthinned unthinning unthirsting unthirsty unthistle untholeable untholeably unthorn unthorny unthorough unthought unthoughted unthoughtedly unthoughtful unthoughtfully unthoughtfulness unthoughtlike unthrall unthralled unthrashed unthread unthreadable unthreaded unthreading unthreatened unthreatening unthreshed unthrid unthridden unthrift unthriftihood unthriftily unthriftiness unthriftlike unthrifty unthrilled unthrilling unthriven unthriving unthrivingly unthrivingness unthrob unthrone unthroned unthronged unthroning unthrottled unthrowable unthrown unthrushlike unthrust unthumbed unthumped unthundered unthwacked unthwarted untiaraed unticketed untickled untidal untidily untidiness untidy untie untied untight untighten untightness until untile untiled untill untillable untilled untilling untilt untilted untilting untimbered untimed untimedness untimeliness untimely untimeous untimeously untimesome untimorous untin untinct untinctured untine untinged untinkered untinned untinseled untinted untippable untipped untippled untipt untirability untirable untire untired untiredly untiring untiringly untissued untithability untithable untithed untitled untittering untitular unto untoadying untoasted untogaed untoggle untoggler untoiled untoileted untoiling untold untolerable untolerableness untolerably untolerated untomb untombed untonality untone untoned untongued untonsured untooled untooth untoothed untoothsome untoothsomeness untop untopographical untopped untopping untormented untorn untorpedoed untorpid untorrid untortuous untorture untortured untossed untotaled untotalled untottering untouch untouchability untouchable untouchableness untouchably untouched untouchedness untouching untough untoured untouristed untoward untowardliness untowardly untowardness untowered untown untownlike untrace untraceable untraceableness untraceably untraced untraceried untracked untractability untractable untractableness untractably untractarian untractible untractibleness untradeable untraded untradesmanlike untrading untraditional untraduced untraffickable untrafficked untragic untragical untrailed untrain untrainable untrained untrainedly untrainedness untraitored untraitorous untrammed untrammeled untrammeledness untramped untrampled untrance untranquil untranquilized untranquillize untranquillized untransacted untranscended untranscendental untranscribable untranscribed untransferable untransferred untransfigured untransfixed untransformable untransformed untransforming untransfused untransfusible untransgressed untransient untransitable untransitive untransitory untranslatability untranslatable untranslatableness untranslatably untranslated untransmigrated untransmissible untransmitted untransmutable untransmuted untransparent untranspassable untranspired untranspiring untransplanted untransportable untransported untransposed untransubstantiated untrappable untrapped untrashed untravelable untraveled untraveling untravellable untravelling untraversable untraversed untravestied untreacherous untread untreadable untreading untreasonable untreasure untreasured untreatable untreatableness untreatably untreated untreed untrekked untrellised untrembling untremblingly untremendous untremulous untrenched untrepanned untrespassed untrespassing untress untressed untriable untribal untributary untriced untrickable untricked untried untrifling untrig untrigonometrical untrill untrim untrimmable untrimmed untrimmedness untrinitarian untripe untrippable untripped untripping untrite untriturated untriumphable untriumphant untriumphed untrochaic untrod untrodden untroddenness untrolled untrophied untropical untrotted untroublable untrouble untroubled untroubledly untroubledness untroublesome untroublesomeness untrounced untrowed untruant untruck untruckled untruckling untrue untrueness untruism untruly untrumped untrumpeted untrumping untrundled untrunked untruss untrussed untrusser untrussing untrust untrustably untrusted untrustful untrustiness untrusting untrustworthily untrustworthiness untrustworthy untrusty untruth untruther untruthful untruthfully untruthfulness untrying untubbed untuck untucked untuckered untucking untufted untugged untumbled untumefied untumid untumultuous untunable untunableness untunably untune untuneable untuneableness untuneably untuned untuneful untunefully untunefulness untuning untunneled untupped unturbaned unturbid unturbulent unturf unturfed unturgid unturn unturnable unturned unturning unturpentined unturreted untusked untutelar untutored untutoredly untutoredness untwilled untwinable untwine untwineable untwined untwining untwinkling untwinned untwirl untwirled untwirling untwist untwisted untwister untwisting untwitched untying untypical untypically untyrannic untyrannical untyrantlike untz unubiquitous unugly unulcerated unultra unumpired ununanimity ununanimous ununanimously ununderstandable ununderstandably ununderstanding ununderstood unundertaken unundulatory Unungun ununifiable ununified ununiform ununiformed ununiformity ununiformly ununiformness ununitable ununitableness ununitably ununited ununiting ununiversity ununiversitylike unupbraiding unupbraidingly unupholstered unupright unuprightly unuprightness unupset unupsettable unurban unurbane unurged unurgent unurging unurn unurned unusable unusableness unusably unuse unused unusedness unuseful unusefully unusefulness unushered unusual unusuality unusually unusualness unusurious unusurped unusurping unutilizable unutterability unutterable unutterableness unutterably unuttered unuxorial unuxorious unvacant unvaccinated unvacillating unvailable unvain unvaleted unvaletudinary unvaliant unvalid unvalidated unvalidating unvalidity unvalidly unvalidness unvalorous unvaluable unvaluableness unvaluably unvalue unvalued unvamped unvanishing unvanquishable unvanquished unvantaged unvaporized unvariable unvariableness unvariably unvariant unvaried unvariedly unvariegated unvarnished unvarnishedly unvarnishedness unvarying unvaryingly unvaryingness unvascular unvassal unvatted unvaulted unvaulting unvaunted unvaunting unvauntingly unveering unveil unveiled unveiledly unveiledness unveiler unveiling unveilment unveined unvelvety unvendable unvendableness unvended unvendible unvendibleness unveneered unvenerable unvenerated unvenereal unvenged unveniable unvenial unvenom unvenomed unvenomous unventable unvented unventilated unventured unventurous unvenued unveracious unveracity unverbalized unverdant unverdured unveridical unverifiable unverifiableness unverifiably unverified unverifiedness unveritable unverity unvermiculated unverminous unvernicular unversatile unversed unversedly unversedness unversified unvertical unvessel unvesseled unvest unvested unvetoed unvexed unviable unvibrated unvibrating unvicar unvicarious unvicariously unvicious unvictimized unvictorious unvictualed unvictualled unviewable unviewed unvigilant unvigorous unvigorously unvilified unvillaged unvindicated unvindictive unvindictively unvindictiveness unvinous unvintaged unviolable unviolated unviolenced unviolent unviolined unvirgin unvirginal unvirginlike unvirile unvirility unvirtue unvirtuous unvirtuously unvirtuousness unvirulent unvisible unvisibleness unvisibly unvision unvisionary unvisioned unvisitable unvisited unvisor unvisored unvisualized unvital unvitalized unvitalness unvitiated unvitiatedly unvitiatedness unvitrescibility unvitrescible unvitrifiable unvitrified unvitriolized unvituperated unvivacious unvivid unvivified unvizard unvizarded unvocal unvocalized unvociferous unvoice unvoiced unvoiceful unvoicing unvoidable unvoided unvolatile unvolatilize unvolatilized unvolcanic unvolitioned unvoluminous unvoluntarily unvoluntariness unvoluntary unvolunteering unvoluptuous unvomited unvoracious unvote unvoted unvoting unvouched unvouchedly unvouchedness unvouchsafed unvowed unvoweled unvoyageable unvoyaging unvulcanized unvulgar unvulgarize unvulgarized unvulgarly unvulnerable unwadable unwadded unwadeable unwaded unwading unwafted unwaged unwagered unwaggable unwaggably unwagged unwailed unwailing unwainscoted unwaited unwaiting unwaked unwakeful unwakefulness unwakened unwakening unwaking unwalkable unwalked unwalking unwall unwalled unwallet unwallowed unwan unwandered unwandering unwaning unwanted unwanton unwarbled unware unwarely unwareness unwarily unwariness unwarlike unwarlikeness unwarm unwarmable unwarmed unwarming unwarn unwarned unwarnedly unwarnedness unwarnished unwarp unwarpable unwarped unwarping unwarrant unwarrantability unwarrantable unwarrantableness unwarrantably unwarranted unwarrantedly unwarrantedness unwary unwashable unwashed unwashedness unwassailing unwastable unwasted unwasteful unwastefully unwasting unwastingly unwatchable unwatched unwatchful unwatchfully unwatchfulness unwatching unwater unwatered unwaterlike unwatermarked unwatery unwattled unwaved unwaverable unwavered unwavering unwaveringly unwaving unwax unwaxed unwayed unwayward unweaken unweakened unweal unwealsomeness unwealthy unweaned unweapon unweaponed unwearable unweariability unweariable unweariableness unweariably unwearied unweariedly unweariedness unwearily unweariness unwearing unwearisome unwearisomeness unweary unwearying unwearyingly unweathered unweatherly unweatherwise unweave unweaving unweb unwebbed unwebbing unwed unwedded unweddedly unweddedness unwedge unwedgeable unwedged unweeded unweel unweelness unweened unweeping unweeting unweetingly unweft unweighable unweighed unweighing unweight unweighted unweighty unwelcome unwelcomed unwelcomely unwelcomeness unweld unweldable unwelded unwell unwellness unwelted unwept unwestern unwesternized unwet unwettable unwetted unwheedled unwheel unwheeled unwhelmed unwhelped unwhetted unwhig unwhiglike unwhimsical unwhining unwhip unwhipped unwhirled unwhisked unwhiskered unwhisperable unwhispered unwhispering unwhistled unwhite unwhited unwhitened unwhitewashed unwholesome unwholesomely unwholesomeness unwidened unwidowed unwield unwieldable unwieldily unwieldiness unwieldly unwieldy unwifed unwifelike unwifely unwig unwigged unwild unwilily unwiliness unwill unwilled unwillful unwillfully unwillfulness unwilling unwillingly unwillingness unwilted unwilting unwily unwincing unwincingly unwind unwindable unwinding unwindingly unwindowed unwindy unwingable unwinged unwinking unwinkingly unwinnable unwinning unwinnowed unwinsome unwinter unwintry unwiped unwire unwired unwisdom unwise unwisely unwiseness unwish unwished unwishful unwishing unwist unwistful unwitch unwitched unwithdrawable unwithdrawing unwithdrawn unwitherable unwithered unwithering unwithheld unwithholden unwithholding unwithstanding unwithstood unwitless unwitnessed unwitted unwittily unwitting unwittingly unwittingness unwitty unwive unwived unwoeful unwoful unwoman unwomanish unwomanize unwomanized unwomanlike unwomanliness unwomanly unwomb unwon unwonder unwonderful unwondering unwonted unwontedly unwontedness unwooded unwooed unwoof unwooly unwordable unwordably unwordily unwordy unwork unworkability unworkable unworkableness unworkably unworked unworkedness unworker unworking unworkmanlike unworkmanly unworld unworldliness unworldly unwormed unwormy unworn unworried unworriedly unworriedness unworshiped unworshipful unworshiping unworshipped unworshipping unworth unworthily unworthiness unworthy unwotting unwound unwoundable unwoundableness unwounded unwoven unwrangling unwrap unwrapped unwrapper unwrapping unwrathful unwrathfully unwreaked unwreathe unwreathed unwreathing unwrecked unwrench unwrenched unwrested unwrestedly unwresting unwrestled unwretched unwriggled unwrinkle unwrinkleable unwrinkled unwrit unwritable unwrite unwriting unwritten unwronged unwrongful unwrought unwrung unyachtsmanlike unyeaned unyearned unyearning unyielded unyielding unyieldingly unyieldingness unyoke unyoked unyoking unyoung unyouthful unyouthfully unze unzealous unzealously unzealousness unzen unzephyrlike unzone unzoned up upaisle upaithric upalley upalong upanishadic upapurana uparch uparching uparise uparm uparna upas upattic upavenue upbank upbar upbay upbear upbearer upbeat upbelch upbelt upbend upbid upbind upblacken upblast upblaze upblow upboil upbolster upbolt upboost upborne upbotch upboulevard upbound upbrace upbraid upbraider upbraiding upbraidingly upbray upbreak upbred upbreed upbreeze upbrighten upbrim upbring upbristle upbroken upbrook upbrought upbrow upbubble upbuild upbuilder upbulging upbuoy upbuoyance upburn upburst upbuy upcall upcanal upcanyon upcarry upcast upcatch upcaught upchamber upchannel upchariot upchimney upchoke upchuck upcity upclimb upclose upcloser upcoast upcock upcoil upcolumn upcome upcoming upconjure upcountry upcourse upcover upcrane upcrawl upcreek upcreep upcrop upcrowd upcry upcurl upcurrent upcurve upcushion upcut updart update updeck updelve updive updo updome updraft updrag updraw updrink updry upeat upend upeygan upfeed upfield upfill upfingered upflame upflare upflash upflee upflicker upfling upfloat upflood upflow upflower upflung upfly upfold upfollow upframe upfurl upgale upgang upgape upgather upgaze upget upgird upgirt upgive upglean upglide upgo upgorge upgrade upgrave upgrow upgrowth upgully upgush uphand uphang upharbor upharrow uphasp upheal upheap uphearted upheaval upheavalist upheave upheaven upheld uphelm uphelya upher uphill uphillward uphoard uphoist uphold upholden upholder upholster upholstered upholsterer upholsteress upholsterous upholstery upholsterydom upholstress uphung uphurl upisland upjerk upjet upkeep upkindle upknell upknit upla upladder uplaid uplake upland uplander uplandish uplane uplay uplead upleap upleg uplick uplift upliftable uplifted upliftedly upliftedness uplifter uplifting upliftingly upliftingness upliftitis upliftment uplight uplimb uplimber upline uplock uplong uplook uplooker uploom uploop uplying upmaking upmast upmix upmost upmount upmountain upmove upness upo upon uppard uppent upper upperch uppercut upperer upperest upperhandism uppermore uppermost uppers uppertendom uppile upping uppish uppishly uppishness uppity upplough upplow uppluck uppoint uppoise uppop uppour uppowoc upprick upprop uppuff uppull uppush upquiver upraisal upraise upraiser upreach uprear uprein uprend uprender uprest uprestore uprid upridge upright uprighteous uprighteously uprighteousness uprighting uprightish uprightly uprightness uprights uprip uprisal uprise uprisement uprisen upriser uprising uprist uprive upriver uproad uproar uproariness uproarious uproariously uproariousness uproom uproot uprootal uprooter uprose uprouse uproute uprun uprush upsaddle upscale upscrew upscuddle upseal upseek upseize upsend upset upsetment upsettable upsettal upsetted upsetter upsetting upsettingly upsey upshaft upshear upsheath upshoot upshore upshot upshoulder upshove upshut upside upsides upsighted upsiloid upsilon upsilonism upsit upsitten upsitting upslant upslip upslope upsmite upsnatch upsoak upsoar upsolve upspeak upspear upspeed upspew upspin upspire upsplash upspout upspread upspring upsprinkle upsprout upspurt upstaff upstage upstair upstairs upstamp upstand upstander upstanding upstare upstart upstartism upstartle upstartness upstate upstater upstaunch upstay upsteal upsteam upstem upstep upstick upstir upstraight upstream upstreamward upstreet upstretch upstrike upstrive upstroke upstruggle upsuck upsun upsup upsurge upsurgence upswallow upswarm upsway upsweep upswell upswing uptable uptake uptaker uptear uptemper uptend upthrow upthrust upthunder uptide uptie uptill uptilt uptorn uptoss uptower uptown uptowner uptrace uptrack uptrail uptrain uptree uptrend uptrill uptrunk uptruss uptube uptuck upturn uptwined uptwist Upupa Upupidae upupoid upvalley upvomit upwaft upwall upward upwardly upwardness upwards upwarp upwax upway upways upwell upwent upwheel upwhelm upwhir upwhirl upwind upwith upwork upwound upwrap upwreathe upwrench upwring upwrought upyard upyoke ur ura urachal urachovesical urachus uracil uraemic uraeus Uragoga Ural ural urali Uralian Uralic uraline uralite uralitic uralitization uralitize uralium uramido uramil uramilic uramino Uran uran uranalysis uranate Urania Uranian uranic Uranicentric uranidine uraniferous uraniid Uraniidae uranin uranine uraninite uranion uraniscochasma uraniscoplasty uraniscoraphy uraniscorrhaphy uranism uranist uranite uranitic uranium uranocircite uranographer uranographic uranographical uranographist uranography uranolatry uranolite uranological uranology uranometria uranometrical uranometry uranophane uranophotography uranoplastic uranoplasty uranoplegia uranorrhaphia uranorrhaphy uranoschisis uranoschism uranoscope uranoscopia uranoscopic Uranoscopidae Uranoscopus uranoscopy uranospathite uranosphaerite uranospinite uranostaphyloplasty uranostaphylorrhaphy uranotantalite uranothallite uranothorite uranotil uranous Uranus uranyl uranylic urao urare urari Urartaean Urartic urase urataemia urate uratemia uratic uratoma uratosis uraturia urazine urazole urbacity urbainite Urban urban urbane urbanely urbaneness urbanism Urbanist urbanist urbanite urbanity urbanization urbanize urbarial urbian urbic Urbicolae urbicolous urbification urbify urbinate urceiform urceolar urceolate urceole urceoli Urceolina urceolus urceus urchin urchiness urchinlike urchinly urd urde urdee Urdu ure urea ureal ureameter ureametry urease urechitin urechitoxin uredema Uredinales uredine Uredineae uredineal uredineous uredinia uredinial Urediniopsis urediniospore urediniosporic uredinium uredinoid uredinologist uredinology uredinous Uredo uredo uredosorus uredospore uredosporic uredosporiferous uredosporous uredostage ureic ureid ureide ureido uremia uremic Urena urent ureometer ureometry ureosecretory uresis uretal ureter ureteral ureteralgia uretercystoscope ureterectasia ureterectasis ureterectomy ureteric ureteritis ureterocele ureterocervical ureterocolostomy ureterocystanastomosis ureterocystoscope ureterocystostomy ureterodialysis ureteroenteric ureteroenterostomy ureterogenital ureterogram ureterograph ureterography ureterointestinal ureterolith ureterolithiasis ureterolithic ureterolithotomy ureterolysis ureteronephrectomy ureterophlegma ureteroplasty ureteroproctostomy ureteropyelitis ureteropyelogram ureteropyelography ureteropyelonephritis ureteropyelostomy ureteropyosis ureteroradiography ureterorectostomy ureterorrhagia ureterorrhaphy ureterosalpingostomy ureterosigmoidostomy ureterostegnosis ureterostenoma ureterostenosis ureterostoma ureterostomy ureterotomy ureterouteral ureterovaginal ureterovesical urethan urethane urethra urethrae urethragraph urethral urethralgia urethrameter urethrascope urethratome urethratresia urethrectomy urethremphraxis urethreurynter urethrism urethritic urethritis urethroblennorrhea urethrobulbar urethrocele urethrocystitis urethrogenital urethrogram urethrograph urethrometer urethropenile urethroperineal urethrophyma urethroplastic urethroplasty urethroprostatic urethrorectal urethrorrhagia urethrorrhaphy urethrorrhea urethrorrhoea urethroscope urethroscopic urethroscopical urethroscopy urethrosexual urethrospasm urethrostaxis urethrostenosis urethrostomy urethrotome urethrotomic urethrotomy urethrovaginal urethrovesical urethylan uretic ureylene urf urfirnis urge urgence urgency urgent urgently urgentness urger Urginea urging urgingly Urgonian urheen Uri Uria Uriah urial Urian uric uricacidemia uricaciduria uricaemia uricaemic uricemia uricemic uricolysis uricolytic uridrosis Uriel urinaemia urinal urinalist urinalysis urinant urinarium urinary urinate urination urinative urinator urine urinemia uriniferous uriniparous urinocryoscopy urinogenital urinogenitary urinogenous urinologist urinology urinomancy urinometer urinometric urinometry urinoscopic urinoscopist urinoscopy urinose urinosexual urinous urinousness urite urlar urled urling urluch urman urn urna urnae urnal urnflower urnful urning urningism urnism urnlike urnmaker Uro uroacidimeter uroazotometer urobenzoic urobilin urobilinemia urobilinogen urobilinogenuria urobilinuria urocanic urocele Urocerata urocerid Uroceridae urochloralic urochord Urochorda urochordal urochordate urochrome urochromogen Urocoptidae Urocoptis urocyanogen Urocyon urocyst urocystic Urocystis urocystitis urodaeum Urodela urodelan urodele urodelous urodialysis urodynia uroedema uroerythrin urofuscohematin urogaster urogastric urogenic urogenital urogenitary urogenous uroglaucin Uroglena urogram urography urogravimeter urohematin urohyal urolagnia uroleucic uroleucinic urolith urolithiasis urolithic urolithology urologic urological urologist urology urolutein urolytic uromancy uromantia uromantist Uromastix uromelanin uromelus uromere uromeric urometer Uromyces Uromycladium uronephrosis uronic uronology uropatagium Uropeltidae urophanic urophanous urophein Urophlyctis urophthisis uroplania uropod uropodal uropodous uropoetic uropoiesis uropoietic uroporphyrin uropsile Uropsilus uroptysis Uropygi uropygial uropygium uropyloric urorosein urorrhagia urorrhea urorubin urosaccharometry urosacral uroschesis uroscopic uroscopist uroscopy urosepsis uroseptic urosis urosomatic urosome urosomite urosomitic urostea urostealith urostegal urostege urostegite urosteon urosternite urosthene urosthenic urostylar urostyle urotoxia urotoxic urotoxicity urotoxin urotoxy uroxanate uroxanic uroxanthin uroxin urradhus urrhodin urrhodinic Urs Ursa ursal ursicidal ursicide Ursid Ursidae ursiform ursigram ursine ursoid ursolic urson ursone ursuk Ursula Ursuline Ursus Urtica urtica Urticaceae urticaceous Urticales urticant urticaria urticarial urticarious Urticastrum urticate urticating urtication urticose urtite Uru urubu urucu urucuri Uruguayan uruisg Urukuena urunday urus urushi urushic urushinic urushiol urushiye urva us usability usable usableness usage usager usance usar usara usaron usation use used usedly usedness usednt usee useful usefullish usefully usefulness usehold useless uselessly uselessness usent user ush ushabti ushabtiu Ushak Usheen usher usherance usherdom usherer usheress usherette Usherian usherian usherism usherless ushership usings Usipetes usitate usitative Uskara Uskok Usnea usnea Usneaceae usneaceous usneoid usnic usninic Uspanteca usque usquebaugh usself ussels usselven ussingite ust Ustarana uster Ustilaginaceae ustilaginaceous Ustilaginales ustilagineous Ustilaginoidea Ustilago ustion ustorious ustulate ustulation Ustulina usual usualism usually usualness usuary usucapient usucapion usucapionary usucapt usucaptable usucaption usucaptor usufruct usufructuary Usun usure usurer usurerlike usuress usurious usuriously usuriousness usurp usurpation usurpative usurpatively usurpatory usurpature usurpedly usurper usurpership usurping usurpingly usurpment usurpor usurpress usury usward uswards ut Uta uta Utah Utahan utahite utai utas utch utchy Ute utees utensil uteralgia uterectomy uteri uterine uteritis uteroabdominal uterocele uterocervical uterocystotomy uterofixation uterogestation uterogram uterography uterointestinal uterolith uterology uteromania uterometer uteroovarian uteroparietal uteropelvic uteroperitoneal uteropexia uteropexy uteroplacental uteroplasty uterosacral uterosclerosis uteroscope uterotomy uterotonic uterotubal uterovaginal uteroventral uterovesical uterus utfangenethef utfangethef utfangthef utfangthief utick utile utilitarian utilitarianism utilitarianist utilitarianize utilitarianly utility utilizable utilization utilize utilizer utinam utmost utmostness Utopia utopia Utopian utopian utopianism utopianist Utopianize Utopianizer utopianizer utopiast utopism utopist utopistic utopographer Utraquism utraquist utraquistic Utrecht utricle utricul utricular Utricularia Utriculariaceae utriculate utriculiferous utriculiform utriculitis utriculoid utriculoplastic utriculoplasty utriculosaccular utriculose utriculus utriform utrubi utrum utsuk utter utterability utterable utterableness utterance utterancy utterer utterless utterly uttermost utterness utu utum uturuncu uva uval uvalha uvanite uvarovite uvate uvea uveal uveitic uveitis Uvella uveous uvic uvid uviol uvitic uvitinic uvito uvitonic uvrou uvula uvulae uvular Uvularia uvularly uvulitis uvuloptosis uvulotome uvulotomy uvver uxorial uxoriality uxorially uxoricidal uxoricide uxorious uxoriously uxoriousness uzan uzara uzarin uzaron Uzbak Uzbeg Uzbek V v vaagmer vaalite Vaalpens vacabond vacancy vacant vacanthearted vacantheartedness vacantly vacantness vacantry vacatable vacate vacation vacational vacationer vacationist vacationless vacatur Vaccaria vaccary vaccenic vaccicide vaccigenous vaccina vaccinable vaccinal vaccinate vaccination vaccinationist vaccinator vaccinatory vaccine vaccinee vaccinella vaccinia Vacciniaceae vacciniaceous vaccinial vaccinifer vacciniform vacciniola vaccinist Vaccinium vaccinium vaccinization vaccinogenic vaccinogenous vaccinoid vaccinophobia vaccinotherapy vache Vachellia vachette vacillancy vacillant vacillate vacillating vacillatingly vacillation vacillator vacillatory vacoa vacona vacoua vacouf vacual vacuate vacuation vacuefy vacuist vacuity vacuolar vacuolary vacuolate vacuolated vacuolation vacuole vacuolization vacuome vacuometer vacuous vacuously vacuousness vacuum vacuuma vacuumize vade Vadim vadimonium vadimony vadium vadose vady vag vagabond vagabondage vagabondager vagabondia vagabondish vagabondism vagabondismus vagabondize vagabondizer vagabondry vagal vagarian vagarious vagariously vagarish vagarisome vagarist vagaristic vagarity vagary vagas vage vagiform vagile vagina vaginal vaginalectomy vaginaless vaginalitis vaginant vaginate vaginated vaginectomy vaginervose Vaginicola vaginicoline vaginicolous vaginiferous vaginipennate vaginismus vaginitis vaginoabdominal vaginocele vaginodynia vaginofixation vaginolabial vaginometer vaginomycosis vaginoperineal vaginoperitoneal vaginopexy vaginoplasty vaginoscope vaginoscopy vaginotome vaginotomy vaginovesical vaginovulvar vaginula vaginulate vaginule vagitus Vagnera vagoaccessorius vagodepressor vagoglossopharyngeal vagogram vagolysis vagosympathetic vagotomize vagotomy vagotonia vagotonic vagotropic vagotropism vagrance vagrancy vagrant vagrantism vagrantize vagrantlike vagrantly vagrantness vagrate vagrom vague vaguely vagueness vaguish vaguity vagulous vagus vahine Vai Vaidic vail vailable vain vainful vainglorious vaingloriously vaingloriousness vainglory vainly vainness vair vairagi vaire vairy Vaishnava Vaishnavism vaivode vajra vajrasana vakass vakia vakil vakkaliga Val valance valanced valanche valbellite vale valediction valedictorian valedictorily valedictory valence Valencia Valencian valencianite Valenciennes valency valent Valentide Valentin Valentine valentine Valentinian Valentinianism valentinite valeral valeraldehyde valeramide valerate Valeria valerian Valeriana Valerianaceae valerianaceous Valerianales valerianate Valerianella Valerianoides valeric Valerie valerin valerolactone valerone valeryl valerylene valet valeta valetage valetdom valethood valetism valetry valetudinarian valetudinarianism valetudinariness valetudinarist valetudinarium valetudinary valeur valeward valgoid valgus valhall Valhalla Vali vali valiance valiancy valiant valiantly valiantness valid validate validation validatory validification validity validly validness valine valise valiseful valiship Valkyr Valkyria Valkyrian Valkyrie vall vallancy vallar vallary vallate vallated vallation vallecula vallecular valleculate vallevarite valley valleyful valleyite valleylet valleylike valleyward valleywise vallicula vallicular vallidom vallis Valliscaulian Vallisneria Vallisneriaceae vallisneriaceous Vallombrosan Vallota vallum Valmy Valois valonia Valoniaceae valoniaceous valor valorization valorize valorous valorously valorousness Valsa Valsaceae Valsalvan valse valsoid valuable valuableness valuably valuate valuation valuational valuator value valued valueless valuelessness valuer valuta valva valval Valvata valvate Valvatidae valve valved valveless valvelet valvelike valveman valviferous valviform valvotomy valvula valvular valvulate valvule valvulitis valvulotome valvulotomy valyl valylene vambrace vambraced vamfont vammazsa vamoose vamp vamped vamper vamphorn vampire vampireproof vampiric vampirish vampirism vampirize vamplate vampproof Vampyrella Vampyrellidae Vampyrum Van van vanadate vanadiate vanadic vanadiferous vanadinite vanadium vanadosilicate vanadous vanadyl Vanaheim vanaprastha Vance vancourier Vancouveria Vanda Vandal Vandalic vandalish vandalism vandalistic vandalization vandalize vandalroot Vandemonian Vandemonianism Vandiemenian Vandyke vane vaned vaneless vanelike Vanellus Vanessa vanessian vanfoss vang vangee vangeli vanglo vanguard Vanguardist Vangueria vanilla vanillal vanillaldehyde vanillate vanille vanillery vanillic vanillin vanillinic vanillism vanilloes vanillon vanilloyl vanillyl Vanir vanish vanisher vanishing vanishingly vanishment Vanist vanitarianism vanitied vanity vanjarrah vanman vanmost Vannai vanner vannerman vannet Vannic vanquish vanquishable vanquisher vanquishment vansire vantage vantageless vantbrace vantbrass vanward vapid vapidism vapidity vapidly vapidness vapocauterization vapographic vapography vapor vaporability vaporable vaporarium vaporary vaporate vapored vaporer vaporescence vaporescent vaporiferous vaporiferousness vaporific vaporiform vaporimeter vaporing vaporingly vaporish vaporishness vaporium vaporizable vaporization vaporize vaporizer vaporless vaporlike vaporograph vaporographic vaporose vaporoseness vaporosity vaporous vaporously vaporousness vaportight vapory vapulary vapulate vapulation vapulatory vara varahan varan Varanger Varangi Varangian varanid Varanidae Varanoid Varanus Varda vardapet vardy vare varec vareheaded vareuse vargueno vari variability variable variableness variably Variag variance variancy variant variate variation variational variationist variatious variative variatively variator varical varicated varication varicella varicellar varicellate varicellation varicelliform varicelloid varicellous varices variciform varicoblepharon varicocele varicoid varicolored varicolorous varicose varicosed varicoseness varicosis varicosity varicotomy varicula varied variedly variegate variegated variegation variegator varier varietal varietally varietism varietist variety variform variformed variformity variformly varigradation variocoupler variola variolar Variolaria variolate variolation variole variolic varioliform variolite variolitic variolitization variolization varioloid variolous variolovaccine variolovaccinia variometer variorum variotinted various variously variousness variscite varisse varix varlet varletaille varletess varletry varletto varment varna varnashrama varnish varnished varnisher varnishing varnishlike varnishment varnishy varnpliktige varnsingite Varolian Varronia Varronian varsha varsity Varsovian varsoviana Varuna varus varve varved vary varyingly vas Vasa vasa vasal Vascons vascular vascularity vascularization vascularize vascularly vasculated vasculature vasculiferous vasculiform vasculitis vasculogenesis vasculolymphatic vasculomotor vasculose vasculum vase vasectomize vasectomy vaseful vaselet vaselike Vaseline vasemaker vasemaking vasewise vasework vashegyite vasicentric vasicine vasifactive vasiferous vasiform vasoconstricting vasoconstriction vasoconstrictive vasoconstrictor vasocorona vasodentinal vasodentine vasodilatation vasodilatin vasodilating vasodilation vasodilator vasoepididymostomy vasofactive vasoformative vasoganglion vasohypertonic vasohypotonic vasoinhibitor vasoinhibitory vasoligation vasoligature vasomotion vasomotor vasomotorial vasomotoric vasomotory vasoneurosis vasoparesis vasopressor vasopuncture vasoreflex vasorrhaphy vasosection vasospasm vasospastic vasostimulant vasostomy vasotomy vasotonic vasotribe vasotripsy vasotrophic vasovesiculectomy vasquine vassal vassalage vassaldom vassaless vassalic vassalism vassality vassalize vassalless vassalry vassalship Vassos vast vastate vastation vastidity vastily vastiness vastitude vastity vastly vastness vasty vasu Vasudeva Vasundhara vat Vateria vatful vatic vatically Vatican vaticanal vaticanic vaticanical Vaticanism Vaticanist Vaticanization Vaticanize vaticide vaticinal vaticinant vaticinate vaticination vaticinator vaticinatory vaticinatress vaticinatrix vatmaker vatmaking vatman Vatteluttu vatter vau Vaucheria Vaucheriaceae vaucheriaceous vaudeville vaudevillian vaudevillist Vaudism Vaudois vaudy Vaughn vaugnerite vault vaulted vaultedly vaulter vaulting vaultlike vaulty vaunt vauntage vaunted vaunter vauntery vauntful vauntiness vaunting vauntingly vauntmure vaunty vauquelinite Vauxhall Vauxhallian vauxite vavasor vavasory vaward Vayu Vazimba Veadar veal vealer vealiness veallike vealskin vealy vectigal vection vectis vectograph vectographic vector vectorial vectorially vecture Veda Vedaic Vedaism Vedalia vedana Vedanga Vedanta Vedantic Vedantism Vedantist Vedda Veddoid vedette Vedic vedika Vediovis Vedism Vedist vedro Veduis veduis vee veen veep veer veerable veeringly veery Vega vegasite vegeculture vegetability vegetable vegetablelike vegetablewise vegetablize vegetably vegetal vegetalcule vegetality vegetant vegetarian vegetarianism vegetate vegetation vegetational vegetationless vegetative vegetatively vegetativeness vegete vegeteness vegetism vegetive vegetivorous vegetoalkali vegetoalkaline vegetoalkaloid vegetoanimal vegetobituminous vegetocarbonaceous vegetomineral vehemence vehemency vehement vehemently vehicle vehicular vehicularly vehiculary vehiculate vehiculation vehiculatory Vehmic vei veigle veil veiled veiledly veiledness veiler veiling veilless veillike veilmaker veilmaking Veiltail veily vein veinage veinal veinbanding veined veiner veinery veininess veining veinless veinlet veinous veinstone veinstuff veinule veinulet veinwise veinwork veiny Vejoces vejoces Vejovis Vejoz vela velal velamen velamentous velamentum velar velardenite velaric velarium velarize velary velate velated velation velatura Velchanos veldcraft veldman veldschoen veldt veldtschoen Velella velellidous velic veliferous veliform veliger veligerous Velika velitation vell vellala velleda velleity vellicate vellication vellicative vellinch vellon vellosine Vellozia Velloziaceae velloziaceous vellum vellumy velo velociman velocimeter velocious velociously velocipedal velocipede velocipedean velocipedic velocitous velocity velodrome velometer velours veloutine velte velum velumen velure Velutina velutinous velveret velvet velvetbreast velveted velveteen velveteened velvetiness velveting velvetleaf velvetlike velvetry velvetseed velvetweed velvetwork velvety venada venal venality venalization venalize venally venalness Venantes venanzite venatic venatical venatically venation venational venator venatorial venatorious venatory vencola Vend vend vendace Vendean vendee vender vendetta vendettist vendibility vendible vendibleness vendibly vendicate Vendidad vending venditate venditation vendition venditor vendor vendue Vened Venedotian veneer veneerer veneering venefical veneficious veneficness veneficous venenate venenation venene veneniferous venenific venenosalivary venenous venenousness venepuncture venerability venerable venerableness venerably Veneracea veneracean veneraceous veneral Veneralia venerance venerant venerate veneration venerational venerative veneratively venerativeness venerator venereal venerealness venereologist venereology venerer Veneres venerial Veneridae veneriform venery venesect venesection venesector venesia Venetes Veneti Venetian Venetianed Venetic venezolano Venezuelan vengeable vengeance vengeant vengeful vengefully vengefulness vengeously venger venial veniality venially venialness Venice venie venin veniplex venipuncture venireman venison venisonivorous venisonlike venisuture Venite Venizelist Venkata vennel venner venoatrial venoauricular venom venomed venomer venomization venomize venomly venomness venomosalivary venomous venomously venomousness venomproof venomsome venomy venosal venosclerosis venose venosinal venosity venostasis venous venously venousness vent ventage ventail venter Ventersdorp venthole ventiduct ventifact ventil ventilable ventilagin ventilate ventilating ventilation ventilative ventilator ventilatory ventless ventometer ventose ventoseness ventosity ventpiece ventrad ventral ventrally ventralmost ventralward ventric ventricle ventricolumna ventricolumnar ventricornu ventricornual ventricose ventricoseness ventricosity ventricous ventricular ventricularis ventriculite Ventriculites ventriculitic Ventriculitidae ventriculogram ventriculography ventriculoscopy ventriculose ventriculous ventriculus ventricumbent ventriduct ventrifixation ventrilateral ventrilocution ventriloqual ventriloqually ventriloque ventriloquial ventriloquially ventriloquism ventriloquist ventriloquistic ventriloquize ventriloquous ventriloquously ventriloquy ventrimesal ventrimeson ventrine ventripotency ventripotent ventripotential ventripyramid ventroaxial ventroaxillary ventrocaudal ventrocystorrhaphy ventrodorsad ventrodorsal ventrodorsally ventrofixation ventrohysteropexy ventroinguinal ventrolateral ventrolaterally ventromedial ventromedian ventromesal ventromesial ventromyel ventroposterior ventroptosia ventroptosis ventroscopy ventrose ventrosity ventrosuspension ventrotomy venture venturer venturesome venturesomely venturesomeness Venturia venturine venturous venturously venturousness venue venula venular venule venulose Venus Venusian venust Venutian venville Veps Vepse Vepsish vera veracious veraciously veraciousness veracity veranda verandaed verascope veratral veratralbine veratraldehyde veratrate veratria veratric veratridine veratrine veratrinize veratrize veratroidine veratrole veratroyl Veratrum veratryl veratrylidene verb verbal verbalism verbalist verbality verbalization verbalize verbalizer verbally verbarian verbarium verbasco verbascose Verbascum verbate verbatim verbena Verbenaceae verbenaceous verbenalike verbenalin Verbenarius verbenate verbene verbenone verberate verberation verberative Verbesina verbiage verbicide verbiculture verbid verbification verbify verbigerate verbigeration verbigerative verbile verbless verbolatry verbomania verbomaniac verbomotor verbose verbosely verboseness verbosity verbous verby verchok verd verdancy verdant verdantly verdantness verdea verdelho verderer verderership verdet verdict verdigris verdigrisy verdin verditer verdoy verdugoship verdun verdure verdured verdureless verdurous verdurousness verecund verecundity verecundness verek veretilliform Veretillum veretillum verge vergeboard vergence vergency vergent vergentness verger vergeress vergerism vergerless vergership vergery vergi vergiform Vergilianism verglas vergobret veri veridic veridical veridicality veridically veridicalness veridicous veridity verifiability verifiable verifiableness verifiably verificate verification verificative verificatory verifier verify verily verine verisimilar verisimilarly verisimilitude verisimilitudinous verisimility verism verist veristic veritability veritable veritableness veritably verite veritism veritist veritistic verity verjuice vermeil vermeologist vermeology Vermes vermetid Vermetidae vermetidae Vermetus vermian vermicelli vermicidal vermicide vermicious vermicle vermicular Vermicularia vermicularly vermiculate vermiculated vermiculation vermicule vermiculite vermiculose vermiculosity vermiculous vermiform Vermiformia vermiformis vermiformity vermiformous vermifugal vermifuge vermifugous vermigerous vermigrade Vermilingues Vermilinguia vermilinguial vermilion vermilionette vermilionize vermin verminal verminate vermination verminer verminicidal verminicide verminiferous verminlike verminly verminosis verminous verminously verminousness verminproof verminy vermiparous vermiparousness vermis vermivorous vermivorousness vermix Vermont Vermonter Vermontese vermorel vermouth Vern vernacle vernacular vernacularism vernacularist vernacularity vernacularization vernacularize vernacularly vernacularness vernaculate vernal vernality vernalization vernalize vernally vernant vernation vernicose vernier vernile vernility vernin vernine vernition Vernon Vernonia vernoniaceous Vernonieae vernonin Verona Veronal veronalism Veronese Veronica Veronicella Veronicellidae Verpa verre verrel verriculate verriculated verricule verruca verrucano Verrucaria Verrucariaceae verrucariaceous verrucarioid verrucated verruciferous verruciform verrucose verrucoseness verrucosis verrucosity verrucous verruculose verruga versability versable versableness versal versant versate versatile versatilely versatileness versatility versation versative verse versecraft versed verseless verselet versemaker versemaking verseman versemanship versemonger versemongering versemongery verser versesmith verset versette verseward versewright versicle versicler versicolor versicolorate versicolored versicolorous versicular versicule versifiable versifiaster versification versificator versificatory versificatrix versifier versiform versify versiloquy versine version versional versioner versionist versionize versipel verso versor verst versta versual versus vert vertebra vertebrae vertebral vertebraless vertebrally Vertebraria vertebrarium vertebrarterial Vertebrata vertebrate vertebrated vertebration vertebre vertebrectomy vertebriform vertebroarterial vertebrobasilar vertebrochondral vertebrocostal vertebrodymus vertebrofemoral vertebroiliac vertebromammary vertebrosacral vertebrosternal vertex vertibility vertible vertibleness vertical verticalism verticality vertically verticalness vertices verticil verticillary verticillaster verticillastrate verticillate verticillated verticillately verticillation verticilliaceous verticilliose Verticillium verticillus verticity verticomental verticordious vertiginate vertigines vertiginous vertigo vertilinear vertimeter Vertumnus Verulamian veruled verumontanum vervain vervainlike verve vervecine vervel verveled vervelle vervenia vervet very Vesalian vesania vesanic vesbite vesicae vesical vesicant vesicate vesication vesicatory vesicle vesicoabdominal vesicocavernous vesicocele vesicocervical vesicoclysis vesicofixation vesicointestinal vesicoprostatic vesicopubic vesicorectal vesicosigmoid vesicospinal vesicotomy vesicovaginal vesicular Vesicularia vesicularly vesiculary vesiculase Vesiculata Vesiculatae vesiculate vesiculation vesicule vesiculectomy vesiculiferous vesiculiform vesiculigerous vesiculitis vesiculobronchial vesiculocavernous vesiculopustular vesiculose vesiculotomy vesiculotubular vesiculotympanic vesiculotympanitic vesiculous vesiculus vesicupapular veskit Vespa vespacide vespal vesper vesperal vesperian vespering vespers vespertide vespertilian Vespertilio vespertilio Vespertiliones vespertilionid Vespertilionidae Vespertilioninae vespertilionine vespertinal vespertine vespery vespiary vespid Vespidae vespiform Vespina vespine vespoid Vespoidea vessel vesseled vesselful vessignon vest Vesta vestal Vestalia vestalia vestalship Vestas vestee vester vestiarian vestiarium vestiary vestibula vestibular vestibulary vestibulate vestibule vestibuled vestibulospinal vestibulum vestige vestigial vestigially Vestigian vestigiary vestigium vestiment vestimental vestimentary vesting Vestini Vestinian vestiture vestlet vestment vestmental vestmented vestral vestralization vestrical vestrification vestrify vestry vestrydom vestryhood vestryish vestryism vestryize vestryman vestrymanly vestrymanship vestuary vestural vesture vesturer Vesuvian vesuvian vesuvianite vesuviate vesuvite vesuvius veszelyite vet veta vetanda vetch vetchling vetchy veteran veterancy veteraness veteranize veterinarian veterinarianism veterinary vetitive vetivene vetivenol vetiver Vetiveria vetiveria vetivert vetkousie veto vetoer vetoism vetoist vetoistic vetoistical vetust vetusty veuglaire veuve vex vexable vexation vexatious vexatiously vexatiousness vexatory vexed vexedly vexedness vexer vexful vexil vexillar vexillarious vexillary vexillate vexillation vexillum vexingly vexingness vext via viability viable viaduct viaggiatory viagram viagraph viajaca vial vialful vialmaker vialmaking vialogue viameter viand viander viatic viatica viatical viaticum viatometer viator viatorial viatorially vibetoite vibex vibgyor vibix vibracular vibracularium vibraculoid vibraculum vibrance vibrancy vibrant vibrantly vibraphone vibrate vibratile vibratility vibrating vibratingly vibration vibrational vibrationless vibratiuncle vibratiunculation vibrative vibrato vibrator vibratory Vibrio vibrioid vibrion vibrionic vibrissa vibrissae vibrissal vibrograph vibromassage vibrometer vibromotive vibronic vibrophone vibroscope vibroscopic vibrotherapeutics viburnic viburnin Viburnum Vic vicar vicarage vicarate vicaress vicarial vicarian vicarianism vicariate vicariateship vicarious vicariously vicariousness vicarly vicarship Vice vice vicecomes vicecomital vicegeral vicegerency vicegerent vicegerentship viceless vicelike vicenary vicennial viceregal viceregally vicereine viceroy viceroyal viceroyalty viceroydom viceroyship vicety viceversally Vichyite vichyssoise Vicia vicianin vicianose vicilin vicinage vicinal vicine vicinity viciosity vicious viciously viciousness vicissitous vicissitude vicissitudinary vicissitudinous vicissitudinousness Vick Vicki Vickie Vicky vicoite vicontiel victim victimhood victimizable victimization victimize victimizer victless Victor victor victordom victorfish Victoria Victorian Victorianism Victorianize Victorianly victoriate victoriatus victorine victorious victoriously victoriousness victorium victory victoryless victress victrix Victrola victrola victual victualage victualer victualing victuallership victualless victualry victuals vicuna Viddhal viddui videndum video videogenic vidette Vidhyanath Vidian vidonia vidry Vidua viduage vidual vidually viduate viduated viduation Viduinae viduine viduity viduous vidya vie vielle Vienna Viennese vier vierling viertel viertelein Vietminh Vietnamese view viewable viewably viewer viewiness viewless viewlessly viewly viewpoint viewsome viewster viewworthy viewy vifda viga vigentennial vigesimal vigesimation vigia vigil vigilance vigilancy vigilant vigilante vigilantism vigilantly vigilantness vigilate vigilation vigintiangular vigneron vignette vignetter vignettist vignin vigonia vigor vigorist vigorless vigorous vigorously vigorousness vihara vihuela vijao Vijay viking vikingism vikinglike vikingship vila vilayet vile vilehearted Vilela vilely vileness Vilhelm Vili vilicate vilification vilifier vilify vilifyingly vilipend vilipender vilipenditory vility vill villa villadom villaette village villageful villagehood villageless villagelet villagelike villageous villager villageress villagery villaget villageward villagey villagism villain villainage villaindom villainess villainist villainous villainously villainousness villainproof villainy villakin villaless villalike villanage villanella villanelle villanette villanous villanously Villanova Villanovan villar villate villatic ville villein villeinage villeiness villeinhold villenage villiaumite villiferous villiform villiplacental Villiplacentalia villitis villoid villose villosity villous villously villus vim vimana vimen vimful Viminal viminal vimineous vina vinaceous vinaconic vinage vinagron vinaigrette vinaigretted vinaigrier vinaigrous vinal Vinalia vinasse vinata Vince Vincent vincent Vincentian Vincenzo Vincetoxicum vincetoxin vincibility vincible vincibleness vincibly vincular vinculate vinculation vinculum Vindelici vindemial vindemiate vindemiation vindemiatory Vindemiatrix vindex vindhyan vindicability vindicable vindicableness vindicably vindicate vindication vindicative vindicatively vindicativeness vindicator vindicatorily vindicatorship vindicatory vindicatress vindictive vindictively vindictiveness vindictivolence vindresser vine vinea vineal vineatic vined vinegar vinegarer vinegarette vinegarish vinegarist vinegarroon vinegarweed vinegary vinegerone vinegrower vineity vineland vineless vinelet vinelike viner vinery vinestalk vinewise vineyard Vineyarder vineyarding vineyardist vingerhoed Vingolf vinhatico vinic vinicultural viniculture viniculturist vinifera viniferous vinification vinificator Vinland vinny vino vinoacetous Vinod vinolence vinolent vinologist vinology vinometer vinomethylic vinose vinosity vinosulphureous vinous vinously vinousness vinquish vint vinta vintage vintager vintaging vintem vintener vintlite vintner vintneress vintnership vintnery vintress vintry viny vinyl vinylbenzene vinylene vinylic vinylidene viol viola violability violable violableness violably Violaceae violacean violaceous violaceously violal Violales violanin violaquercitrin violate violater violation violational violative violator violatory violature violence violent violently violentness violer violescent violet violetish violetlike violette violetwise violety violin violina violine violinette violinist violinistic violinlike violinmaker violinmaking violist violmaker violmaking violon violoncellist violoncello violone violotta violuric viosterol Vip viper Vipera viperan viperess viperfish viperian viperid Viperidae viperiform Viperina Viperinae viperine viperish viperishly viperlike viperling viperoid Viperoidea viperous viperously viperousness vipery vipolitic vipresident viqueen Vira viragin viraginian viraginity viraginous virago viragoish viragolike viragoship viral Virales Virbius vire virelay viremia viremic virent vireo vireonine virescence virescent virga virgal virgate virgated virgater virgation virgilia Virgilism virgin virginal Virginale virginalist virginality virginally virgineous virginhead Virginia Virginian Virginid virginitis virginity virginityship virginium virginlike virginly virginship Virgo virgula virgular Virgularia virgularian Virgulariidae virgulate virgule virgultum virial viricide virid viridene viridescence viridescent viridian viridigenous viridine viridite viridity virific virify virile virilely virileness virilescence virilescent virilify viriliously virilism virilist virility viripotent viritrate virl virole viroled virological virologist virology viron virose virosis virous virtu virtual virtualism virtualist virtuality virtualize virtually virtue virtued virtuefy virtuelessness virtueproof virtuless virtuosa virtuose virtuosi virtuosic virtuosity virtuoso virtuosoship virtuous virtuouslike virtuously virtuousness virucidal virucide viruela virulence virulency virulent virulented virulently virulentness viruliferous virus viruscidal viruscide virusemic vis visa visage visaged visagraph visarga Visaya Visayan viscacha viscera visceral visceralgia viscerally viscerate visceration visceripericardial visceroinhibitory visceromotor visceroparietal visceroperitioneal visceropleural visceroptosis visceroptotic viscerosensory visceroskeletal viscerosomatic viscerotomy viscerotonia viscerotonic viscerotrophic viscerotropic viscerous viscid viscidity viscidize viscidly viscidness viscidulous viscin viscoidal viscolize viscometer viscometrical viscometrically viscometry viscontal viscoscope viscose viscosimeter viscosimetry viscosity viscount viscountcy viscountess viscountship viscounty viscous viscously viscousness viscus vise viseman Vishal Vishnavite Vishnu Vishnuism Vishnuite Vishnuvite visibility visibilize visible visibleness visibly visie Visigoth Visigothic visile vision visional visionally visionarily visionariness visionary visioned visioner visionic visionist visionize visionless visionlike visionmonger visionproof visit visita visitable Visitandine visitant visitation visitational visitative visitator visitatorial visite visitee visiter visiting visitment visitor visitoress visitorial visitorship visitress visitrix visive visne vison visor visorless visorlike vista vistaed vistal vistaless vistamente Vistlik visto Vistulian visual visualist visuality visualization visualize visualizer visually visuoauditory visuokinesthetic visuometer visuopsychic visuosensory vita Vitaceae Vitaglass vital vitalic vitalism vitalist vitalistic vitalistically vitality vitalization vitalize vitalizer vitalizing vitalizingly Vitallium vitally vitalness vitals vitamer vitameric vitamin vitaminic vitaminize vitaminology vitapath vitapathy vitaphone vitascope vitascopic vitasti vitativeness vitellarian vitellarium vitellary vitellicle vitelliferous vitelligenous vitelligerous vitellin vitelline vitellogene vitellogenous vitellose vitellus viterbite Viti vitiable vitiate vitiated vitiation vitiator viticetum viticulose viticultural viticulture viticulturer viticulturist vitiferous vitiliginous vitiligo vitiligoidea vitiosity Vitis vitium vitochemic vitochemical vitrage vitrail vitrailed vitrailist vitrain vitraux vitreal vitrean vitrella vitremyte vitreodentinal vitreodentine vitreoelectric vitreosity vitreous vitreouslike vitreously vitreousness vitrescence vitrescency vitrescent vitrescibility vitrescible vitreum vitric vitrics vitrifaction vitrifacture vitrifiability vitrifiable vitrification vitriform vitrify Vitrina vitrine vitrinoid vitriol vitriolate vitriolation vitriolic vitrioline vitriolizable vitriolization vitriolize vitriolizer vitrite vitrobasalt vitrophyre vitrophyric vitrotype vitrous Vitruvian Vitruvianism vitta vittate vitular vituline vituperable vituperate vituperation vituperative vituperatively vituperator vituperatory vituperious viuva viva vivacious vivaciously vivaciousness vivacity vivandiere vivarium vivary vivax vive Vivek vively vivency viver Viverridae viverriform Viverrinae viverrine vivers vives vivianite vivicremation vivid vividialysis vividiffusion vividissection vividity vividly vividness vivific vivificate vivification vivificative vivificator vivifier vivify viviparism viviparity viviparous viviparously viviparousness vivipary viviperfuse vivisect vivisection vivisectional vivisectionally vivisectionist vivisective vivisector vivisectorium vivisepulture vixen vixenish vixenishly vixenishness vixenlike vixenly vizard vizarded vizardless vizardlike vizardmonger vizier vizierate viziercraft vizierial viziership vizircraft Vlach Vladimir Vladislav vlei voar vocability vocable vocably vocabular vocabularian vocabularied vocabulary vocabulation vocabulist vocal vocalic vocalion vocalise vocalism vocalist vocalistic vocality vocalization vocalize vocalizer vocaller vocally vocalness vocate vocation vocational vocationalism vocationalization vocationalize vocationally vocative vocatively Vochysiaceae vochysiaceous vocicultural vociferance vociferant vociferate vociferation vociferative vociferator vociferize vociferosity vociferous vociferously vociferousness vocification vocimotor vocular vocule Vod vodka voe voet voeten Voetian vog vogesite voglite vogue voguey voguish Vogul voice voiced voiceful voicefulness voiceless voicelessly voicelessness voicelet voicelike voicer voicing void voidable voidableness voidance voided voidee voider voiding voidless voidly voidness voile voiturette voivode voivodeship vol volable volage Volans volant volantly Volapuk Volapuker Volapukism Volapukist volar volata volatic volatile volatilely volatileness volatility volatilizable volatilization volatilize volatilizer volation volational volborthite Volcae volcan Volcanalia volcanian volcanic volcanically volcanicity volcanism volcanist volcanite volcanity volcanization volcanize volcano volcanoism volcanological volcanologist volcanologize volcanology Volcanus vole volemitol volency volent volently volery volet volhynite volipresence volipresent volitant volitate volitation volitational volitiency volitient volition volitional volitionalist volitionality volitionally volitionary volitionate volitionless volitive volitorial Volkerwanderung volley volleyball volleyer volleying volleyingly volost volplane volplanist Volsci Volscian volsella volsellum Volstead Volsteadism volt Volta voltaelectric voltaelectricity voltaelectrometer voltaelectrometric voltage voltagraphy voltaic Voltairian Voltairianize Voltairish Voltairism voltaism voltaite voltameter voltametric voltammeter voltaplast voltatype voltinism voltivity voltize voltmeter voltzite volubilate volubility voluble volubleness volubly volucrine volume volumed volumenometer volumenometry volumescope volumeter volumetric volumetrical volumetrically volumetry volumette voluminal voluminosity voluminous voluminously voluminousness volumist volumometer volumometrical volumometry voluntariate voluntarily voluntariness voluntarism voluntarist voluntaristic voluntarity voluntary voluntaryism voluntaryist voluntative volunteer volunteerism volunteerly volunteership volupt voluptary voluptas voluptuarian voluptuary voluptuate voluptuosity voluptuous voluptuously voluptuousness volupty Voluspa voluta volutate volutation volute voluted Volutidae volutiform volutin volution volutoid volva volvate volvelle volvent Volvocaceae volvocaceous volvulus vomer vomerine vomerobasilar vomeronasal vomeropalatine vomica vomicine vomit vomitable vomiter vomiting vomitingly vomition vomitive vomitiveness vomito vomitory vomiture vomiturition vomitus vomitwort vondsira vonsenite voodoo voodooism voodooist voodooistic voracious voraciously voraciousness voracity voraginous vorago vorant vorhand vorlooper vorondreo vorpal vortex vortical vortically vorticel Vorticella vorticellid Vorticellidae vortices vorticial vorticiform vorticism vorticist vorticity vorticose vorticosely vorticular vorticularly vortiginous Vortumnus Vosgian vota votable votal votally votaress votarist votary votation Vote vote voteen voteless voter voting Votish votive votively votiveness votometer votress Votyak vouch vouchable vouchee voucher voucheress vouchment vouchsafe vouchsafement vouge Vougeot Vouli voussoir vow vowed vowel vowelish vowelism vowelist vowelization vowelize vowelless vowellessness vowellike vowely vower vowess vowless vowmaker vowmaking voyage voyageable voyager voyance voyeur voyeurism vraic vraicker vraicking vrbaite vriddhi vrother Vu vug vuggy Vulcan Vulcanalia Vulcanalial Vulcanalian Vulcanian Vulcanic vulcanicity vulcanism vulcanist vulcanite vulcanizable vulcanizate vulcanization vulcanize vulcanizer vulcanological vulcanologist vulcanology vulgar vulgare vulgarian vulgarish vulgarism vulgarist vulgarity vulgarization vulgarize vulgarizer vulgarlike vulgarly vulgarness vulgarwise Vulgate vulgate vulgus vuln vulnerability vulnerable vulnerableness vulnerably vulnerary vulnerate vulneration vulnerative vulnerose vulnific vulnose Vulpecula vulpecular Vulpeculid Vulpes vulpic vulpicidal vulpicide vulpicidism Vulpinae vulpine vulpinism vulpinite vulsella vulsellum vulsinite Vultur vulture vulturelike vulturewise Vulturidae Vulturinae vulturine vulturish vulturism vulturn vulturous vulva vulval vulvar vulvate vulviform vulvitis vulvocrural vulvouterine vulvovaginal vulvovaginitis vum vying vyingly W w Wa wa Waac waag waapa waar Waasi wab wabber wabble wabbly wabby wabe Wabena wabeno Wabi wabster Wabuma Wabunga Wac wacago wace Wachaga Wachenheimer wachna Wachuset wack wacke wacken wacker wackiness wacky Waco wad waddent wadder wadding waddler waddlesome waddling waddlingly waddly waddy waddywood Wade wade wadeable wader wadi wading wadingly wadlike wadmaker wadmaking wadmal wadmeal wadna wadset wadsetter wae waeg waer waesome waesuck Waf Wafd Wafdist wafer waferer waferish wafermaker wafermaking waferwoman waferwork wafery waff waffle wafflike waffly waft waftage wafter wafture wafty wag Waganda waganging wagaun wagbeard wage waged wagedom wageless wagelessness wagenboom Wagener wager wagerer wagering wages wagesman wagework wageworker wageworking waggable waggably waggel wagger waggery waggie waggish waggishly waggishness waggle waggling wagglingly waggly Waggumbura waggy waglike wagling Wagneresque Wagnerian Wagneriana Wagnerianism Wagnerism Wagnerist Wagnerite wagnerite Wagnerize Wagogo Wagoma wagon wagonable wagonage wagoner wagoness wagonette wagonful wagonload wagonmaker wagonmaking wagonman wagonry wagonsmith wagonway wagonwayman wagonwork wagonwright wagsome wagtail Waguha wagwag wagwants Wagweno wagwit wah Wahabi Wahabiism Wahabit Wahabitism wahahe Wahehe Wahima wahine Wahlenbergia wahoo wahpekute Wahpeton waiata Waibling Waicuri Waicurian waif Waiguli Waiilatpuan waik waikly waikness wail Wailaki wailer wailful wailfully wailingly wailsome waily wain wainage wainbote wainer wainful wainman wainrope wainscot wainscoting wainwright waipiro wairch waird wairepo wairsh waise waist waistband waistcloth waistcoat waistcoated waistcoateer waistcoathole waistcoating waistcoatless waisted waister waisting waistless waistline wait waiter waiterage waiterdom waiterhood waitering waiterlike waitership waiting waitingly waitress waivatua waive waiver waivery waivod Waiwai waiwode wajang waka Wakamba wakan Wakashan wake wakeel wakeful wakefully wakefulness wakeless waken wakener wakening waker wakes waketime wakf Wakhi wakif wakiki waking wakingly wakiup wakken wakon wakonda Wakore Wakwafi waky Walach Walachian walahee Walapai Walchia Waldenses Waldensian waldflute waldgrave waldgravine Waldheimia waldhorn waldmeister Waldsteinia wale waled walepiece Waler waler walewort wali waling walk walkable walkaway walker walking walkist walkmill walkmiller walkout walkover walkrife walkside walksman walkway walkyrie wall wallaba wallaby Wallach wallah wallaroo Wallawalla wallbird wallboard walled waller Wallerian wallet walletful walleye walleyed wallflower wallful wallhick walling wallise wallless wallman Wallon Wallonian Walloon walloon wallop walloper walloping wallow wallower wallowish wallowishly wallowishness wallpaper wallpapering wallpiece Wallsend wallwise wallwork wallwort wally walnut Walpapi Walpolean Walpurgis walpurgite walrus walsh Walt walt Walter walter walth Waltonian waltz waltzer waltzlike walycoat wamara wambais wamble wambliness wambling wamblingly wambly Wambuba Wambugu Wambutti wame wamefou wamel wammikin wamp Wampanoag wampee wample wampum wampumpeag wampus wamus wan Wanapum wanchancy wand wander wanderable wanderer wandering wanderingly wanderingness Wanderjahr wanderlust wanderluster wanderlustful wanderoo wandery wanderyear wandflower wandle wandlike wandoo Wandorobo wandsman wandy wane Waneatta waned waneless wang wanga wangala wangan Wangara wangateur wanghee wangle wangler Wangoni wangrace wangtooth wanhope wanhorn wanigan waning wankapin wankle wankliness wankly wanle wanly wanner wanness wannish wanny wanrufe wansonsy want wantage wanter wantful wanthill wanthrift wanting wantingly wantingness wantless wantlessness wanton wantoner wantonlike wantonly wantonness wantwit wanty wanwordy wanworth wany Wanyakyusa Wanyamwezi Wanyasa Wanyoro wap wapacut Wapato wapatoo wapentake Wapisiana wapiti Wapogoro Wapokomo wapp Wappato wappenschaw wappenschawing wapper wapping Wappinger Wappo war warabi waratah warble warbled warblelike warbler warblerlike warblet warbling warblingly warbly warch warcraft ward wardable wardage wardapet warday warded Warden warden wardency wardenry wardenship warder warderer wardership wardholding warding wardite wardless wardlike wardmaid wardman wardmote wardress wardrobe wardrober wardroom wardship wardsmaid wardsman wardswoman wardwite wardwoman ware Waregga warehou warehouse warehouseage warehoused warehouseful warehouseman warehouser wareless waremaker waremaking wareman wareroom warf warfare warfarer warfaring warful warily wariness Waring waringin warish warison wark warkamoowee warl warless warlessly warlike warlikely warlikeness warlock warluck warly warm warmable warman warmed warmedly warmer warmful warmhearted warmheartedly warmheartedness warmhouse warming warmish warmly warmness warmonger warmongering warmouth warmth warmthless warmus warn warnel warner warning warningly warningproof warnish warnoth warnt Warori warp warpable warpage warped warper warping warplane warple warplike warproof warpwise warragal warrambool warran warrand warrandice warrant warrantable warrantableness warrantably warranted warrantee warranter warrantise warrantless warrantor warranty warratau Warrau warree Warren warren warrener warrenlike warrer Warri warrin warrior warrioress warriorhood warriorism warriorlike warriorship warriorwise warrok Warsaw warsaw warse warsel warship warsle warsler warst wart warted wartern wartflower warth wartime wartless wartlet wartlike wartproof wartweed wartwort warty wartyback Warua Warundi warve warwards Warwick warwickite warwolf warworn wary was wasabi Wasagara Wasandawi Wasango Wasat Wasatch Wasco wase Wasegua wasel wash washability washable washableness Washaki washaway washbasin washbasket washboard washbowl washbrew washcloth washday washdish washdown washed washen washer washerless washerman washerwife washerwoman washery washeryman washhand washhouse washin washiness washing Washington Washingtonia Washingtonian Washingtoniana Washita washland washmaid washman Washo Washoan washoff washout washpot washproof washrag washroad washroom washshed washstand washtail washtray washtrough washtub washway washwoman washwork washy Wasir wasnt Wasoga Wasp wasp waspen wasphood waspily waspish waspishly waspishness wasplike waspling waspnesting waspy wassail wassailer wassailous wassailry wassie wast wastable wastage waste wastebasket wasteboard wasted wasteful wastefully wastefulness wastel wasteland wastelbread wasteless wasteman wastement wasteness wastepaper wasteproof waster wasterful wasterfully wasterfulness wastethrift wasteword wasteyard wasting wastingly wastingness wastland wastrel wastrife wasty Wasukuma Waswahili Wat wat Watala watap watch watchable watchboat watchcase watchcry watchdog watched watcher watchfree watchful watchfully watchfulness watchglassful watchhouse watching watchingly watchkeeper watchless watchlessness watchmaker watchmaking watchman watchmanly watchmanship watchmate watchment watchout watchtower watchwise watchwoman watchword watchwork water waterage waterbailage waterbelly Waterberg waterboard waterbok waterbosh waterbrain waterchat watercup waterdoe waterdrop watered waterer waterfall waterfinder waterflood waterfowl waterfront waterhead waterhorse waterie waterily wateriness watering wateringly wateringman waterish waterishly waterishness Waterlander Waterlandian waterleave waterless waterlessly waterlessness waterlike waterline waterlog waterlogged waterloggedness waterlogger waterlogging Waterloo waterman watermanship watermark watermaster watermelon watermonger waterphone waterpot waterproof waterproofer waterproofing waterproofness waterquake waterscape watershed watershoot waterside watersider waterskin watersmeet waterspout waterstead watertight watertightal watertightness waterward waterwards waterway waterweed waterwise waterwoman waterwood waterwork waterworker waterworm waterworn waterwort watery wath wathstead Watsonia watt wattage wattape wattle wattlebird wattled wattless wattlework wattling wattman wattmeter Watusi wauble wauch wauchle waucht wauf waugh waughy wauken waukit waukrife waul waumle wauner wauns waup waur Waura wauregan wauve wavable wavably Wave wave waved waveless wavelessly wavelessness wavelet wavelike wavellite wavemark wavement wavemeter waveproof waver waverable waverer wavering waveringly waveringness waverous wavery waveson waveward wavewise wavey wavicle wavily waviness waving wavingly Wavira wavy waw wawa wawah wawaskeesh wax waxberry waxbill waxbird waxbush waxchandler waxchandlery waxen waxer waxflower Waxhaw waxhearted waxily waxiness waxing waxingly waxlike waxmaker waxmaking waxman waxweed waxwing waxwork waxworker waxworking waxy way wayaka wayang Wayao wayback wayberry waybill waybird waybook waybread waybung wayfare wayfarer wayfaring wayfaringly wayfellow waygang waygate waygoing waygone waygoose wayhouse waying waylaid waylaidlessness waylay waylayer wayleave wayless waymaker wayman waymark waymate Wayne waypost ways wayside waysider waysliding waythorn wayward waywarden waywardly waywardness waywiser waywode waywodeship wayworn waywort wayzgoose Wazir we Wea weak weakbrained weaken weakener weakening weakfish weakhanded weakhearted weakheartedly weakheartedness weakish weakishly weakishness weakliness weakling weakly weakmouthed weakness weaky weal weald Wealden wealdsman wealth wealthily wealthiness wealthless wealthmaker wealthmaking wealthmonger Wealthy wealthy weam wean weanable weanedness weanel weaner weanling Weanoc weanyer Weapemeoc weapon weaponed weaponeer weaponless weaponmaker weaponmaking weaponproof weaponry weaponshaw weaponshow weaponshowing weaponsmith weaponsmithy wear wearability wearable wearer weariable weariableness wearied weariedly weariedness wearier weariful wearifully wearifulness weariless wearilessly wearily weariness wearing wearingly wearish wearishly wearishness wearisome wearisomely wearisomeness wearproof weary wearying wearyingly weasand weasel weaselfish weasellike weaselly weaselship weaselskin weaselsnout weaselwise weaser weason weather weatherboard weatherboarding weatherbreak weathercock weathercockish weathercockism weathercocky weathered weatherer weatherfish weatherglass weathergleam weatherhead weatherheaded weathering weatherliness weatherly weathermaker weathermaking weatherman weathermost weatherology weatherproof weatherproofed weatherproofing weatherproofness weatherward weatherworn weathery weavable weave weaveable weaved weavement weaver weaverbird weaveress weaving weazen weazened weazeny web webbed webber webbing webby weber Weberian webeye webfoot webfooter webless weblike webmaker webmaking webster Websterian websterite webwork webworm wecht wed wedana wedbed wedbedrip wedded weddedly weddedness wedder wedding weddinger wede wedge wedgeable wedgebill wedged wedgelike wedger wedgewise Wedgie wedging Wedgwood wedgy wedlock Wednesday wedset wee weeble weed weeda weedable weedage weeded weeder weedery weedful weedhook weediness weedingtime weedish weedless weedlike weedling weedow weedproof weedy week weekday weekend weekender weekly weekwam weel weelfard weelfaured weemen ween weendigo weeness weening weenong weeny weep weepable weeper weepered weepful weeping weepingly weeps weepy weesh weeshy weet weetbird weetless weever weevil weeviled weevillike weevilproof weevily weewow weeze weft weftage wefted wefty Wega wegenerian wegotism wehrlite Wei weibyeite weichselwood Weierstrassian Weigela weigelite weigh weighable weighage weighbar weighbauk weighbridge weighbridgeman weighed weigher weighership weighhouse weighin weighing weighman weighment weighshaft weight weightchaser weighted weightedly weightedness weightily weightiness weighting weightless weightlessly weightlessness weightometer weighty weinbergerite Weinmannia weinschenkite weir weirangle weird weirdful weirdish weirdless weirdlessness weirdlike weirdliness weirdly weirdness weirdsome weirdward weirdwoman weiring weisbachite weiselbergite weism Weismannian Weismannism weissite Weissnichtwo Weitspekan wejack weka wekau wekeen weki welcome welcomeless welcomely welcomeness welcomer welcoming welcomingly weld weldability weldable welder welding weldless weldment weldor Welf welfare welfaring Welfic welk welkin welkinlike well wellat wellaway wellborn wellcurb wellhead wellhole welling wellington Wellingtonia wellish wellmaker wellmaking wellman wellnear wellness wellring Wellsian wellside wellsite wellspring wellstead wellstrand welly wellyard wels Welsh welsh welsher Welshery Welshism Welshland Welshlike Welshman Welshness Welshry Welshwoman Welshy welsium welt welted welter welterweight welting Welwitschia wem wemless wen wench wencher wenchless wenchlike Wenchow Wenchowese Wend wend wende Wendell Wendi Wendic Wendish Wendy wene Wenlock Wenlockian wennebergite wennish wenny Wenonah Wenrohronon went wentletrap wenzel wept wer Werchowinci were werebear werecalf werefolk werefox werehyena werejaguar wereleopard werent weretiger werewolf werewolfish werewolfism werf wergil weri Werner Wernerian Wernerism wernerite werowance wert Werther Wertherian Wertherism wervel Wes wese weskit Wesleyan Wesleyanism Wesleyism wesselton Wessexman west westaway westbound weste wester westering westerliness westerly westermost western westerner westernism westernization westernize westernly westernmost westerwards westfalite westing westland Westlander westlandways westmost westness Westphalian Westralian Westralianism westward westwardly westwardmost westwards westy wet weta wetback wetbird wetched wetchet wether wetherhog wetherteg wetly wetness wettability wettable wetted wetter wetting wettish Wetumpka weve wevet Wewenoc wey Wezen Wezn wha whabby whack whacker whacking whacky whafabout whale whaleback whalebacker whalebird whaleboat whalebone whaleboned whaledom whalehead whalelike whaleman whaler whaleroad whalery whaleship whaling whalish whally whalm whalp whaly wham whamble whame whammle whamp whampee whample whan whand whang whangable whangam whangdoodle whangee whanghee whank whap whappet whapuka whapukee whapuku whar whare whareer wharf wharfage wharfhead wharfholder wharfing wharfinger wharfland wharfless wharfman wharfmaster wharfrae wharfside wharl wharp wharry whart wharve whase whasle what whata whatabouts whatever whatkin whatlike whatna whatness whatnot whatreck whats whatso whatsoeer whatsoever whatsomever whatten whau whauk whaup whaur whauve wheal whealworm whealy wheam wheat wheatbird wheatear wheateared wheaten wheatgrower wheatland wheatless wheatlike wheatstalk wheatworm wheaty whedder whee wheedle wheedler wheedlesome wheedling wheedlingly wheel wheelage wheelband wheelbarrow wheelbarrowful wheelbird wheelbox wheeldom wheeled wheeler wheelery wheelhouse wheeling wheelingly wheelless wheellike wheelmaker wheelmaking wheelman wheelrace wheelroad wheelsman wheelsmith wheelspin wheelswarf wheelway wheelwise wheelwork wheelwright wheelwrighting wheely wheem wheen wheencat wheenge wheep wheeple wheer wheerikins wheesht wheetle wheeze wheezer wheezily wheeziness wheezingly wheezle wheezy wheft whein whekau wheki whelk whelked whelker whelklike whelky whelm whelp whelphood whelpish whelpless whelpling whelve whemmel when whenabouts whenas whence whenceeer whenceforth whenceforward whencesoeer whencesoever whencever wheneer whenever whenness whenso whensoever whensomever where whereabout whereabouts whereafter whereanent whereas whereat whereaway whereby whereer wherefor wherefore wherefrom wherein whereinsoever whereinto whereness whereof whereon whereout whereover whereso wheresoeer wheresoever wheresomever wherethrough wheretill whereto wheretoever wheretosoever whereunder whereuntil whereunto whereup whereupon wherever wherewith wherewithal wherret wherrit wherry wherryman whet whether whetile whetrock whetstone whetter whew whewellite whewer whewl whewt whey wheybeard wheyey wheyeyness wheyface wheyfaced wheyish wheyishness wheylike wheyness whiba which whichever whichsoever whichway whichways whick whicken whicker whid whidah whidder whiff whiffenpoof whiffer whiffet whiffle whiffler whifflery whiffletree whiffling whifflingly whiffy whift Whig whig Whiggamore whiggamore Whiggarchy Whiggery Whiggess Whiggification Whiggify Whiggish Whiggishly Whiggishness Whiggism Whiglet Whigling whigmaleerie whigship whikerby while whileen whilere whiles whilie whilk Whilkut whill whillaballoo whillaloo whillilew whilly whillywha whilock whilom whils whilst whilter whim whimberry whimble whimbrel whimling whimmy whimper whimperer whimpering whimperingly whimsey whimsic whimsical whimsicality whimsically whimsicalness whimsied whimstone whimwham whin whinberry whinchacker whinchat whincheck whincow whindle whine whiner whinestone whing whinge whinger whininess whiningly whinnel whinner whinnock whinny whinstone whiny whinyard whip whipbelly whipbird whipcat whipcord whipcordy whipcrack whipcracker whipcraft whipgraft whipjack whipking whiplash whiplike whipmaker whipmaking whipman whipmanship whipmaster whippa whippable whipparee whipped whipper whippersnapper whippertail whippet whippeter whippiness whipping whippingly whippletree whippoorwill whippost whippowill whippy whipsaw whipsawyer whipship whipsocket whipstaff whipstalk whipstall whipster whipstick whipstitch whipstock whipt whiptail whiptree whipwise whipworm whir whirken whirl whirlabout whirlblast whirlbone whirlbrain whirled whirler whirley whirlgig whirlicane whirligig whirlimagig whirling whirlingly whirlmagee whirlpool whirlpuff whirlwig whirlwind whirlwindish whirlwindy whirly whirlygigum whirret whirrey whirroo whirry whirtle whish whisk whisker whiskerage whiskerando whiskerandoed whiskered whiskerer whiskerette whiskerless whiskerlike whiskery whiskey whiskful whiskied whiskified whisking whiskingly whisky whiskyfied whiskylike whisp whisper whisperable whisperation whispered whisperer whisperhood whispering whisperingly whisperingness whisperless whisperous whisperously whisperproof whispery whissle Whisson whist whister whisterpoop whistle whistlebelly whistlefish whistlelike whistler Whistlerian whistlerism whistlewing whistlewood whistlike whistling whistlingly whistly whistness Whistonian Whit whit white whiteback whitebait whitebark whitebeard whitebelly whitebill whitebird whiteblaze whiteblow whitebottle Whiteboy Whiteboyism whitecap whitecapper Whitechapel whitecoat whitecomb whitecorn whitecup whited whiteface Whitefieldian Whitefieldism Whitefieldite whitefish whitefisher whitefishery Whitefoot whitefoot whitefootism whitehanded whitehass whitehawse whitehead whiteheart whitehearted whitelike whitely whiten whitener whiteness whitening whitenose whitepot whiteroot whiterump whites whitesark whiteseam whiteshank whiteside whitesmith whitestone whitetail whitethorn whitethroat whitetip whitetop whitevein whitewall whitewards whiteware whitewash whitewasher whiteweed whitewing whitewood whiteworm whitewort whitfinch whither whitherso whithersoever whitherto whitherward whiting whitish whitishness whitleather Whitleyism whitling whitlow whitlowwort Whitmanese Whitmanesque Whitmanism Whitmanize Whitmonday whitneyite whitrack whits whitster Whitsun Whitsunday Whitsuntide whittaw whitten whittener whitter whitterick whittle whittler whittling whittret whittrick whity whiz whizgig whizzer whizzerman whizziness whizzing whizzingly whizzle who whoa whodunit whoever whole wholehearted wholeheartedly wholeheartedness wholeness wholesale wholesalely wholesaleness wholesaler wholesome wholesomely wholesomeness wholewise wholly whom whomble whomever whomso whomsoever whone whoo whoof whoop whoopee whooper whooping whoopingly whooplike whoops whoosh whop whopper whopping whorage whore whoredom whorelike whoremaster whoremasterly whoremastery whoremonger whoremonging whoreship whoreson whorish whorishly whorishness whorl whorled whorlflower whorly whorlywort whort whortle whortleberry whose whosen whosesoever whosever whosomever whosumdever whud whuff whuffle whulk whulter whummle whun whunstane whup whush whuskie whussle whute whuther whutter whuttering whuz why whyever whyfor whyness whyo wi wice Wichita wicht wichtisite wichtje wick wickawee wicked wickedish wickedlike wickedly wickedness wicken wicker wickerby wickerware wickerwork wickerworked wickerworker wicket wicketkeep wicketkeeper wicketkeeping wicketwork wicking wickiup wickless wickup wicky wicopy wid widbin widdendream widder widdershins widdifow widdle widdy wide widegab widehearted widely widemouthed widen widener wideness widespread widespreadedly widespreadly widespreadness widewhere widework widgeon widish widow widowed widower widowered widowerhood widowership widowery widowhood widowish widowlike widowly widowman widowy width widthless widthway widthways widthwise widu wield wieldable wielder wieldiness wieldy wiener wienerwurst wienie wierangle wiesenboden wife wifecarl wifedom wifehood wifeism wifekin wifeless wifelessness wifelet wifelike wifeling wifelkin wifely wifeship wifeward wifie wifiekie wifish wifock wig wigan wigdom wigful wigged wiggen wigger wiggery wigging wiggish wiggishness wiggism wiggle wiggler wiggly wiggy wight wightly wightness wigless wiglet wiglike wigmaker wigmaking wigtail wigwag wigwagger wigwam wiikite Wikeno Wikstroemia Wilbur Wilburite wild wildbore wildcat wildcatter wildcatting wildebeest wilded wilder wilderedly wildering wilderment wilderness wildfire wildfowl wildgrave wilding wildish wildishly wildishness wildlife wildlike wildling wildly wildness wildsome wildwind wile wileful wileless wileproof Wilfred wilga wilgers Wilhelm Wilhelmina Wilhelmine wilily wiliness wilk wilkeite wilkin Wilkinson Will will willable willawa willed willedness willemite willer willet willey willeyer willful willfully willfulness William williamsite Williamsonia Williamsoniaceae Willie willie willier willies willing willinghearted willinghood willingly willingness williwaw willmaker willmaking willness willock willow willowbiter willowed willower willowish willowlike willowware willowweed willowworm willowwort willowy Willugbaeya Willy willy willyard willyart willyer Wilmer wilsome wilsomely wilsomeness Wilson Wilsonian wilt wilter Wilton wiltproof Wiltshire wily wim wimberry wimble wimblelike wimbrel wime wimick wimple wimpleless wimplelike Win win winberry wince wincer wincey winch wincher Winchester winchman wincing wincingly Wind wind windable windage windbag windbagged windbaggery windball windberry windbibber windbore windbracing windbreak Windbreaker windbreaker windbroach windclothes windcuffer winddog winded windedly windedness winder windermost Windesheimer windfall windfallen windfanner windfirm windfish windflaw windflower windgall windgalled windhole windhover windigo windily windiness winding windingly windingness windjammer windjamming windlass windlasser windle windles windless windlessly windlessness windlestrae windlestraw windlike windlin windling windmill windmilly windock windore window windowful windowless windowlessness windowlet windowlight windowlike windowmaker windowmaking windowman windowpane windowpeeper windowshut windowward windowwards windowwise windowy windpipe windplayer windproof windring windroad windroot windrow windrower windscreen windshield windshock Windsor windsorite windstorm windsucker windtight windup windward windwardly windwardmost windwardness windwards windway windwayward windwaywardly windy wine wineball wineberry winebibber winebibbery winebibbing Winebrennerian wineconner wined wineglass wineglassful winegrower winegrowing winehouse wineless winelike winemay winepot winer winery Winesap wineshop wineskin winesop winetaster winetree winevat Winfred winful wing wingable wingbeat wingcut winged wingedly wingedness winger wingfish winghanded wingle wingless winglessness winglet winglike wingman wingmanship wingpiece wingpost wingseed wingspread wingstem wingy Winifred winish wink winkel winkelman winker winkered winking winkingly winkle winklehawk winklehole winklet winly winna winnable winnard Winnebago Winnecowet winnel winnelstrae winner Winnie winning winningly winningness winnings winninish Winnipesaukee winnle winnonish winnow winnower winnowing winnowingly Winona winrace winrow winsome winsomely winsomeness Winston wint winter Winteraceae winterage Winteranaceae winterberry winterbloom winterbourne winterdykes wintered winterer winterfeed wintergreen winterhain wintering winterish winterishly winterishness winterization winterize winterkill winterkilling winterless winterlike winterliness winterling winterly winterproof wintersome wintertide wintertime winterward winterwards winterweed wintle wintrify wintrily wintriness wintrish wintrous wintry Wintun winy winze winzeman wipe wiper wippen wips wir wirable wirble wird wire wirebar wirebird wired wiredancer wiredancing wiredraw wiredrawer wiredrawn wirehair wireless wirelessly wirelessness wirelike wiremaker wiremaking wireman wiremonger Wirephoto wirepull wirepuller wirepulling wirer wiresmith wirespun wiretail wireway wireweed wirework wireworker wireworking wireworks wireworm wirily wiriness wiring wirl wirling Wiros wirr wirra wirrah wirrasthru wiry wis Wisconsinite wisdom wisdomful wisdomless wisdomproof wisdomship wise wiseacre wiseacred wiseacredness wiseacredom wiseacreish wiseacreishness wiseacreism wisecrack wisecracker wisecrackery wisehead wisehearted wiseheartedly wiseheimer wiselike wiseling wisely wiseman wisen wiseness wisenheimer wisent wiser wiseweed wisewoman wish wisha wishable wishbone wished wishedly wisher wishful wishfully wishfulness wishing wishingly wishless wishly wishmay wishness Wishoskan Wishram wisht wishtonwish Wisigothic wisket wiskinky wisp wispish wisplike wispy wiss wisse wissel wist Wistaria wistaria wiste wistened Wisteria wisteria wistful wistfully wistfulness wistit wistiti wistless wistlessness wistonwish wit witan Witbooi witch witchbells witchcraft witched witchedly witchen witchering witchery witchet witchetty witchhood witching witchingly witchleaf witchlike witchman witchmonger witchuck witchweed witchwife witchwoman witchwood witchwork witchy witcraft wite witeless witenagemot witepenny witess witful with withal withamite Withania withdraught withdraw withdrawable withdrawal withdrawer withdrawing withdrawingness withdrawment withdrawn withdrawnness withe withen wither witherband withered witheredly witheredness witherer withergloom withering witheringly witherite witherly withernam withers withershins withertip witherwards witherweight withery withewood withheld withhold withholdable withholdal withholder withholdment within withindoors withinside withinsides withinward withinwards withness witholden without withoutdoors withouten withoutforth withoutside withoutwards withsave withstand withstander withstandingness withstay withstood withstrain withvine withwind withy withypot withywind witjar witless witlessly witlessness witlet witling witloof witmonger witness witnessable witnessdom witnesser witney witneyer Witoto witship wittal wittawer witteboom witted witter wittering witticaster wittichenite witticism witticize wittified wittily wittiness witting wittingly wittol wittolly witty Witumki witwall witzchoura wive wiver wivern Wiyat Wiyot wiz wizard wizardess wizardism wizardlike wizardly wizardry wizardship wizen wizened wizenedness wizier wizzen wloka wo woad woader woadman woadwaxen woady woak woald woan wob wobbegong wobble wobbler wobbliness wobbling wobblingly wobbly wobster wocheinite Wochua wod woddie wode Wodenism wodge wodgy woe woebegone woebegoneness woebegonish woeful woefully woefulness woehlerite woesome woevine woeworn woffler woft wog wogiet Wogulian woibe wokas woke wokowi wold woldlike woldsman woldy Wolf wolf wolfachite wolfberry wolfdom wolfen wolfer Wolffia Wolffian Wolffianism Wolfgang wolfhood wolfhound Wolfian wolfish wolfishly wolfishness wolfkin wolfless wolflike wolfling wolfram wolframate wolframic wolframine wolframinium wolframite wolfsbane wolfsbergite wolfskin wolfward wolfwards wollastonite wollomai wollop Wolof wolter wolve wolveboon wolver wolverine woman womanbody womandom womanfolk womanfully womanhead womanhearted womanhood womanhouse womanish womanishly womanishness womanism womanist womanity womanization womanize womanizer womankind womanless womanlike womanliness womanly womanmuckle womanness womanpost womanproof womanship womanways womanwise womb wombat wombed womble wombstone womby womenfolk womenfolks womenkind womera wommerala won wonder wonderberry wonderbright wondercraft wonderer wonderful wonderfully wonderfulness wondering wonderingly wonderland wonderlandish wonderless wonderment wondermonger wondermongering wondersmith wondersome wonderstrong wonderwell wonderwork wonderworthy wondrous wondrously wondrousness wone wonegan wong wonga Wongara wongen wongshy wongsky woning wonky wonna wonned wonner wonning wonnot wont wonted wontedly wontedness wonting woo wooable wood woodagate woodbark woodbin woodbind woodbine woodbined woodbound woodburytype woodbush woodchat woodchuck woodcock woodcockize woodcracker woodcraft woodcrafter woodcraftiness woodcraftsman woodcrafty woodcut woodcutter woodcutting wooded wooden woodendite woodenhead woodenheaded woodenheadedness woodenly woodenness woodenware woodenweary woodeny woodfish woodgeld woodgrub woodhack woodhacker woodhole woodhorse woodhouse woodhung woodine woodiness wooding woodish woodjobber woodkern woodknacker woodland woodlander woodless woodlessness woodlet woodlike woodlocked woodly woodman woodmancraft woodmanship woodmonger woodmote woodness woodpeck woodpecker woodpenny woodpile woodprint woodranger woodreeve woodrick woodrock woodroof woodrow woodrowel Woodruff woodruff woodsere woodshed woodshop Woodsia woodside woodsilver woodskin woodsman woodspite woodstone woodsy woodwall woodward Woodwardia woodwardship woodware woodwax woodwaxen woodwise woodwork woodworker woodworking woodworm woodwose woodwright Woody woody woodyard wooer woof woofed woofell woofer woofy woohoo wooing wooingly wool woold woolder woolding wooled woolen woolenet woolenization woolenize wooler woolert woolfell woolgatherer woolgathering woolgrower woolgrowing woolhead wooliness woollike woolly woollyhead woollyish woolman woolpack woolpress woolsack woolsey woolshearer woolshearing woolshears woolshed woolskin woolsorter woolsorting woolsower woolstock woolulose Woolwa woolwasher woolweed woolwheel woolwinder woolwork woolworker woolworking woom woomer woomerang woon woons woorali woorari woosh wootz woozle woozy wop woppish wops worble worcester word wordable wordably wordage wordbook wordbuilding wordcraft wordcraftsman worded Worden worder wordily wordiness wording wordish wordishly wordishness wordle wordless wordlessly wordlessness wordlike wordlorist wordmaker wordmaking wordman wordmanship wordmonger wordmongering wordmongery wordplay wordsman wordsmanship wordsmith wordspite wordster Wordsworthian Wordsworthianism wordy wore work workability workable workableness workaday workaway workbag workbasket workbench workbook workbox workbrittle workday worked worker workfellow workfolk workfolks workgirl workhand workhouse workhoused working workingly workingman workingwoman workless worklessness workloom workman workmanlike workmanlikeness workmanliness workmanly workmanship workmaster workmistress workout workpan workpeople workpiece workplace workroom works workship workshop worksome workstand worktable worktime workways workwise workwoman workwomanlike workwomanly worky workyard world worlded worldful worldish worldless worldlet worldlike worldlily worldliness worldling worldly worldmaker worldmaking worldproof worldquake worldward worldwards worldway worldy worm wormed wormer wormhole wormholed wormhood Wormian wormil worming wormless wormlike wormling wormproof wormroot wormseed wormship wormweed wormwood wormy worn wornil wornness worral worriable worricow worried worriedly worriedness worrier worriless worriment worrisome worrisomely worrisomeness worrit worriter worry worrying worryingly worryproof worrywart worse worsement worsen worseness worsening worser worserment worset worship worshipability worshipable worshiper worshipful worshipfully worshipfulness worshipingly worshipless worshipworth worshipworthy worst worsted wort worth worthful worthfulness worthiest worthily worthiness worthless worthlessly worthlessness worthship worthward worthy wosbird wot wote wots wottest wotteth woubit wouch wouf wough would wouldest wouldnt wouldst wound woundability woundable woundableness wounded woundedly wounder woundily wounding woundingly woundless wounds woundwort woundworth woundy wourali wourari wournil wove woven Wovoka wow wowser wowserdom wowserian wowserish wowserism wowsery wowt woy Woyaway wrack wracker wrackful Wraf wraggle wrainbolt wrainstaff wrainstave wraith wraithe wraithlike wraithy wraitly wramp wran wrang wrangle wrangler wranglership wranglesome wranglingly wrannock wranny wrap wrappage wrapped wrapper wrapperer wrappering wrapping wraprascal wrasse wrastle wrastler wrath wrathful wrathfully wrathfulness wrathily wrathiness wrathlike wrathy wraw wrawl wrawler wraxle wreak wreakful wreakless wreat wreath wreathage wreathe wreathed wreathen wreather wreathingly wreathless wreathlet wreathlike wreathmaker wreathmaking wreathwise wreathwork wreathwort wreathy wreck wreckage wrecker wreckfish wreckful wrecking wrecky Wren wren wrench wrenched wrencher wrenchingly wrenlet wrenlike wrentail wrest wrestable wrester wresting wrestingly wrestle wrestler wrestlerlike wrestling wretch wretched wretchedly wretchedness wretchless wretchlessly wretchlessness wretchock wricht wrick wride wried wrier wriest wrig wriggle wriggler wrigglesome wrigglingly wriggly wright wrightine wring wringbolt wringer wringman wringstaff wrinkle wrinkleable wrinkled wrinkledness wrinkledy wrinkleful wrinkleless wrinkleproof wrinklet wrinkly wrist wristband wristbone wristed wrister wristfall wristikin wristlet wristlock wristwork writ writability writable writation writative write writeable writee writer writeress writerling writership writh writhe writhed writhedly writhedness writhen writheneck writher writhing writhingly writhy writing writinger writmaker writmaking writproof written writter wrive wrizzled wro wrocht wroke wroken wrong wrongdoer wrongdoing wronged wronger wrongful wrongfully wrongfulness wronghead wrongheaded wrongheadedly wrongheadedness wronghearted wrongheartedly wrongheartedness wrongish wrongless wronglessly wrongly wrongness wrongous wrongously wrongousness wrongwise Wronskian wrossle wrote wroth wrothful wrothfully wrothily wrothiness wrothly wrothsome wrothy wrought wrox wrung wrungness wry wrybill wryly wrymouth wryneck wryness wrytail Wu Wuchereria wud wuddie wudge wudu wugg wulfenite wulk wull wullawins wullcat Wullie wulliwa wumble wumman wummel wun Wundtian wungee wunna wunner wunsome wup wur wurley wurmal Wurmian wurrus wurset wurtzilite wurtzite Wurzburger wurzel wush wusp wuss wusser wust wut wuther wuzu wuzzer wuzzle wuzzy wy Wyandot Wyandotte Wycliffian Wycliffism Wycliffist Wycliffite wyde wye Wyethia wyke Wykehamical Wykehamist wyle wyliecoat wymote wyn wynd wyne wynkernel wynn Wyomingite wyomingite wype wyson wyss wyve wyver X x xanthaline xanthamic xanthamide xanthane xanthate xanthation xanthein xanthelasma xanthelasmic xanthelasmoidea xanthene Xanthian xanthic xanthide Xanthidium xanthin xanthine xanthinuria xanthione Xanthisma xanthite Xanthium xanthiuria xanthocarpous Xanthocephalus Xanthoceras Xanthochroi xanthochroia Xanthochroic xanthochroid xanthochroism xanthochromia xanthochromic xanthochroous xanthocobaltic xanthocone xanthoconite xanthocreatinine xanthocyanopsia xanthocyanopsy xanthocyanopy xanthoderm xanthoderma xanthodont xanthodontous xanthogen xanthogenamic xanthogenamide xanthogenate xanthogenic xantholeucophore xanthoma xanthomata xanthomatosis xanthomatous Xanthomelanoi xanthomelanous xanthometer Xanthomonas xanthomyeloma xanthone xanthophane xanthophore xanthophose Xanthophyceae xanthophyll xanthophyllite xanthophyllous Xanthopia xanthopia xanthopicrin xanthopicrite xanthoproteic xanthoprotein xanthoproteinic xanthopsia xanthopsin xanthopsydracia xanthopterin xanthopurpurin xanthorhamnin Xanthorrhiza Xanthorrhoea xanthorrhoea xanthosiderite xanthosis Xanthosoma xanthospermous xanthotic Xanthoura xanthous Xanthoxalis xanthoxenite xanthoxylin xanthuria xanthydrol xanthyl xarque Xaverian xebec Xema xenacanthine Xenacanthini xenagogue xenagogy Xenarchi Xenarthra xenarthral xenarthrous xenelasia xenelasy xenia xenial xenian Xenicidae Xenicus xenium xenobiosis xenoblast Xenocratean Xenocratic xenocryst xenodochium xenogamous xenogamy xenogenesis xenogenetic xenogenic xenogenous xenogeny xenolite xenolith xenolithic xenomania xenomaniac Xenomi Xenomorpha xenomorphic xenomorphosis xenon xenoparasite xenoparasitism xenopeltid Xenopeltidae Xenophanean xenophile xenophilism xenophobe xenophobia xenophobian xenophobism xenophoby Xenophonic Xenophontean Xenophontian Xenophontic Xenophontine Xenophora xenophoran Xenophoridae xenophthalmia xenophya xenopodid Xenopodidae xenopodoid Xenopsylla xenopteran Xenopteri xenopterygian Xenopterygii Xenopus Xenorhynchus Xenos xenosaurid Xenosauridae xenosauroid Xenosaurus xenotime Xenurus xenyl xenylamine xerafin xeransis Xeranthemum xeranthemum xerantic xerarch xerasia Xeres xeric xerically xeriff xerocline xeroderma xerodermatic xerodermatous xerodermia xerodermic xerogel xerography xeroma xeromata xeromenia xeromorph xeromorphic xeromorphous xeromorphy xeromyron xeromyrum xeronate xeronic xerophagia xerophagy xerophil xerophile xerophilous xerophily xerophobous xerophthalmia xerophthalmos xerophthalmy Xerophyllum xerophyte xerophytic xerophytically xerophytism xeroprinting xerosis xerostoma xerostomia xerotes xerotherm xerotic xerotocia xerotripsis Xerus xi Xicak Xicaque Ximenia Xina Xinca Xipe Xiphias xiphias xiphihumeralis xiphiid Xiphiidae xiphiiform xiphioid xiphiplastra xiphiplastral xiphiplastron xiphisterna xiphisternal xiphisternum Xiphisura xiphisuran Xiphiura Xiphius xiphocostal Xiphodon Xiphodontidae xiphodynia xiphoid xiphoidal xiphoidian xiphopagic xiphopagous xiphopagus xiphophyllous xiphosterna xiphosternum Xiphosura xiphosuran xiphosure Xiphosuridae xiphosurous Xiphosurus xiphuous Xiphura Xiphydria xiphydriid Xiphydriidae Xiraxara Xmas xoana xoanon Xosa xurel xyla xylan Xylaria Xylariaceae xylate Xyleborus xylem xylene xylenol xylenyl xyletic Xylia xylic xylidic xylidine Xylina xylindein xylinid xylite xylitol xylitone xylobalsamum xylocarp xylocarpous Xylocopa xylocopid Xylocopidae xylogen xyloglyphy xylograph xylographer xylographic xylographical xylographically xylography xyloid xyloidin xylol xylology xyloma xylomancy xylometer xylon xylonic Xylonite xylonitrile Xylophaga xylophagan xylophage xylophagid Xylophagidae xylophagous Xylophagus xylophilous xylophone xylophonic xylophonist Xylopia xyloplastic xylopyrography xyloquinone xylorcin xylorcinol xylose xyloside Xylosma xylostroma xylostromata xylostromatoid xylotile xylotomist xylotomous xylotomy Xylotrya xylotypographic xylotypography xyloyl xylyl xylylene xylylic xyphoid Xyrichthys xyrid Xyridaceae xyridaceous Xyridales Xyris xyst xyster xysti xystos xystum xystus Y y ya yaba yabber yabbi yabble yabby yabu yacal yacca yachan yacht yachtdom yachter yachting yachtist yachtman yachtmanship yachtsman yachtsmanlike yachtsmanship yachtswoman yachty yad Yadava yade yaff yaffingale yaffle yagger yaghourt yagi Yagnob yagourundi Yagua yagua yaguarundi yaguaza yah yahan Yahgan Yahganan Yahoo yahoo Yahoodom Yahooish Yahooism Yahuna Yahuskin Yahweh Yahwism Yahwist Yahwistic yair yaird yaje yajeine yajenine Yajna Yajnavalkya yajnopavita yak Yaka Yakala yakalo yakamik Yakan yakattalo Yakima yakin yakka yakman Yakona Yakonan Yakut Yakutat yalb Yale yale Yalensian yali yalla yallaer yallow yam Yamacraw Yamamadi yamamai yamanai yamaskite Yamassee Yamato Yamel yamen Yameo yamilke yammadji yammer yamp yampa yamph yamshik yamstchik yan Yana Yanan yancopin yander yang yangtao yank Yankee Yankeedom Yankeefy Yankeeism Yankeeist Yankeeize Yankeeland Yankeeness yanking Yankton Yanktonai yanky Yannigan Yao yaoort yaourti yap yapa yaply Yapman yapness yapok yapp yapped yapper yappiness yapping yappingly yappish yappy yapster Yaqui Yaquina yar yarak yaray yarb Yarborough yard yardage yardang yardarm yarder yardful yarding yardkeep yardland yardman yardmaster yardsman yardstick yardwand yare yareta yark Yarkand yarke yarl yarly yarm yarn yarnen yarner yarnwindle yarpha yarr yarraman yarran yarringle yarrow yarth yarthen Yaru Yarura Yaruran Yaruro yarwhelp yarwhip yas yashiro yashmak Yasht Yasna yat yataghan yatalite yate yati Yatigan yatter Yatvyag Yauapery yaud yauld yaupon yautia yava Yavapai yaw yawl yawler yawlsman yawmeter yawn yawner yawney yawnful yawnfully yawnily yawniness yawning yawningly yawnproof yawnups yawny yawp yawper yawroot yaws yawweed yawy yaxche yaya Yazdegerdian Yazoo ycie yday ye yea yeah yealing yean yeanling year yeara yearbird yearbook yeard yearday yearful yearling yearlong yearly yearn yearnful yearnfully yearnfulness yearning yearnling yearock yearth yeast yeastily yeastiness yeasting yeastlike yeasty yeat yeather yed yede yee yeel yeelaman yees yegg yeggman yeguita yeld yeldrin yeldrock yelk yell yeller yelling yelloch yellow yellowammer yellowback yellowbelly yellowberry yellowbill yellowbird yellowcrown yellowcup yellowfin yellowfish yellowhammer yellowhead yellowing yellowish yellowishness Yellowknife yellowlegs yellowly yellowness yellowroot yellowrump yellows yellowseed yellowshank yellowshanks yellowshins yellowtail yellowthorn yellowthroat yellowtop yellowware yellowweed yellowwood yellowwort yellowy yelm yelmer yelp yelper yelt Yemen Yemeni Yemenic Yemenite yen yender Yengee Yengeese yeni Yenisei Yeniseian yenite yentnite yeo yeoman yeomaness yeomanette yeomanhood yeomanlike yeomanly yeomanry yeomanwise yeorling yeowoman yep yer Yerava Yeraver yerb yerba yercum yerd yere yerga yerk yern yerth yes yese Yeshibah Yeshiva yeso yesso yest yester yesterday yestereve yestereven yesterevening yestermorn yestermorning yestern yesternight yesternoon yesterweek yesteryear yestreen yesty yet yeta yetapa yeth yether yetlin yeuk yeukieness yeuky yeven yew yex yez Yezdi Yezidi yezzy ygapo Yid Yiddish Yiddisher Yiddishism Yiddishist yield yieldable yieldableness yieldance yielden yielder yielding yieldingly yieldingness yieldy yigh Yikirgaulit Yildun yill yilt Yin yin yince yinst yip yird yirk yirm yirmilik yirn yirr yirth yis yite ym yn ynambu yo yobi yocco yochel yock yockel yodel yodeler yodelist yodh yoe yoga yogasana yogh yoghurt yogi yogin yogism yogist yogoite yohimbe yohimbi yohimbine yohimbinization yohimbinize yoi yoick yoicks yojan yojana Yojuane yok yoke yokeable yokeableness yokeage yokefellow yokel yokeldom yokeless yokelish yokelism yokelry yokemate yokemating yoker yokewise yokewood yoking Yokuts yoky yolden Yoldia yoldring yolk yolked yolkiness yolkless yolky yom yomer Yomud yon yoncopin yond yonder Yonkalla yonner yonside yont yook yoop yor yore yoretime york Yorker yorker Yorkish Yorkist Yorkshire Yorkshireism Yorkshireman Yoruba Yoruban yot yotacism yotacize yote you youd youden youdendrift youdith youff youl young youngberry younger younghearted youngish younglet youngling youngly youngness youngster youngun younker youp your yourn yours yoursel yourself yourselves youse youth youthen youthful youthfullity youthfully youthfulness youthhead youthheid youthhood youthily youthless youthlessness youthlike youthlikeness youthsome youthtide youthwort youthy youve youward youwards youze yoven yow yowie yowl yowler yowley yowlring yowt yox yoy yperite Yponomeuta Yponomeutid Yponomeutidae ypsiliform ypsiloid Ypurinan Yquem yr ytterbia ytterbic ytterbium yttria yttrialite yttric yttriferous yttrious yttrium yttrocerite yttrocolumbite yttrocrasite yttrofluorite yttrogummite yttrotantalite Yuan yuan Yuapin yuca Yucatec Yucatecan Yucateco Yucca yucca Yuchi yuck yuckel yucker yuckle yucky Yuechi yuft Yuga yugada Yugoslav Yugoslavian Yugoslavic yuh Yuit Yukaghir Yuki Yukian yukkel yulan yule yuleblock yuletide Yuma Yuman yummy Yun Yunca Yuncan yungan Yunnanese Yurak Yurok yurt yurta Yurucare Yurucarean Yurucari Yurujure Yuruk Yuruna Yurupary yus yusdrum Yustaga yutu yuzlik yuzluk Yvonne Z z za Zabaean zabaglione Zabaism Zaberma zabeta Zabian Zabism zabra zabti zabtie zac zacate Zacatec Zacateco zacaton Zach Zachariah zachun zad Zadokite zadruga zaffar zaffer zafree zag zagged Zaglossus zaibatsu zain Zaitha zak zakkeu Zaklohpakap zalambdodont Zalambdodonta Zalophus zaman zamang zamarra zamarro Zambal Zambezian zambo zamboorak Zamenis Zamia Zamiaceae Zamicrus zamindar zamindari zamorin zamouse Zan Zanclidae Zanclodon Zanclodontidae Zande zander zandmole zanella Zaniah Zannichellia Zannichelliaceae Zanonia zant zante Zantedeschia zantewood Zanthorrhiza Zanthoxylaceae Zanthoxylum zanthoxylum Zantiot zantiote zany zanyish zanyism zanyship Zanzalian zanze Zanzibari Zapara Zaparan Zaparo Zaparoan zapas zapatero zaphara Zaphetic zaphrentid Zaphrentidae Zaphrentis zaphrentoid Zapodidae Zapodinae Zaporogian Zaporogue zapota Zapotec Zapotecan Zapoteco zaptiah zaptieh Zaptoeca zapupe Zapus zaqqum Zaque zar zarabanda Zaramo Zarathustrian Zarathustrianism Zarathustrism zaratite Zardushti zareba Zarema zarf zarnich zarp zarzuela zat zati zattare Zaurak Zauschneria Zavijava zax zayat zayin Zea zeal Zealander zealful zealless zeallessness zealot zealotic zealotical zealotism zealotist zealotry zealous zealously zealousness zealousy zealproof zebra zebraic zebralike zebrass zebrawood Zebrina zebrine zebrinny zebroid zebrula zebrule zebu zebub Zebulunite zeburro zecchini zecchino zechin Zechstein zed zedoary zee zeed Zeelander Zeguha zehner Zeidae zein zeism zeist Zeke zel Zelanian zelator zelatrice zelatrix Zelkova Zeltinger zemeism zemi zemimdari zemindar zemmi zemni zemstroist zemstvo Zen Zenaga Zenaida Zenaidinae Zenaidura zenana Zend Zendic zendician zendik zendikite Zenelophon zenick zenith zenithal zenithward zenithwards Zenobia zenocentric zenographic zenographical zenography Zenonian Zenonic zenu Zeoidei zeolite zeolitic zeolitization zeolitize zeoscope Zep zepharovichite zephyr Zephyranthes zephyrean zephyrless zephyrlike zephyrous zephyrus zephyry Zeppelin zeppelin zequin zer zerda Zerma zermahbub zero zeroaxial zeroize zerumbet zest zestful zestfully zestfulness zesty zeta zetacism zetetic Zeuctocoelomata zeuctocoelomatic zeuctocoelomic Zeuglodon zeuglodon zeuglodont Zeuglodonta Zeuglodontia Zeuglodontidae zeuglodontoid zeugma zeugmatic zeugmatically Zeugobranchia Zeugobranchiata zeunerite Zeus Zeuxian Zeuzera zeuzerian Zeuzeridae Zhmud ziamet ziara ziarat zibeline zibet zibethone zibetone zibetum ziega zieger zietrisikite ziffs zig ziganka ziggurat zigzag zigzagged zigzaggedly zigzaggedness zigzagger zigzaggery zigzaggy zigzagwise zihar zikurat Zilla zillah zimarra zimb zimbabwe zimbalon zimbaloon zimbi zimentwater zimme Zimmerwaldian Zimmerwaldist zimmi zimmis zimocca zinc Zincalo zincate zincic zincide zinciferous zincification zincify zincing zincite zincize zincke zincky zinco zincograph zincographer zincographic zincographical zincography zincotype zincous zincum zincuret zinfandel zing zingaresca zingel zingerone Zingiber Zingiberaceae zingiberaceous zingiberene zingiberol zingiberone zink zinkenite Zinnia zinnwaldite zinsang zinyamunga Zinzar Zinziberaceae zinziberaceous Zion Zionism Zionist Zionistic Zionite Zionless Zionward zip Zipa ziphian Ziphiidae Ziphiinae ziphioid Ziphius Zipper zipper zipping zippingly zippy Zips zira zirai Zirak Zirbanit zircite zircofluoride zircon zirconate zirconia zirconian zirconic zirconiferous zirconifluoride zirconium zirconofluoride zirconoid zirconyl Zirian Zirianian zirkelite zither zitherist Zizania Zizia Zizyphus zizz zloty Zmudz zo Zoa zoa zoacum Zoanthacea zoanthacean Zoantharia zoantharian zoanthid Zoanthidae Zoanthidea zoanthodeme zoanthodemic zoanthoid zoanthropy Zoanthus Zoarces zoarcidae zoaria zoarial Zoarite zoarium zobo zobtenite zocco zoccolo zodiac zodiacal zodiophilous zoea zoeaform zoeal zoeform zoehemera zoehemerae zoetic zoetrope zoetropic zogan zogo Zohak Zoharist Zoharite zoiatria zoiatrics zoic zoid zoidiophilous zoidogamous Zoilean Zoilism Zoilist zoisite zoisitization zoism zoist zoistic zokor Zolaesque Zolaism Zolaist Zolaistic Zolaize zoll zolle Zollernia zollpfund zolotink zolotnik zombi zombie zombiism zomotherapeutic zomotherapy zonal zonality zonally zonar Zonaria zonary zonate zonated zonation zone zoned zoneless zonelet zonelike zonesthesia Zongora zonic zoniferous zoning zonite Zonites zonitid Zonitidae Zonitoides zonochlorite zonociliate zonoid zonolimnetic zonoplacental Zonoplacentalia zonoskeleton Zonotrichia Zonta Zontian zonular zonule zonulet zonure zonurid Zonuridae zonuroid Zonurus zoo zoobenthos zooblast zoocarp zoocecidium zoochemical zoochemistry zoochemy Zoochlorella zoochore zoocoenocyte zoocultural zooculture zoocurrent zoocyst zoocystic zoocytial zoocytium zoodendria zoodendrium zoodynamic zoodynamics zooecia zooecial zooecium zooerastia zooerythrin zoofulvin zoogamete zoogamous zoogamy zoogene zoogenesis zoogenic zoogenous zoogeny zoogeographer zoogeographic zoogeographical zoogeographically zoogeography zoogeological zoogeologist zoogeology zoogloea zoogloeal zoogloeic zoogonic zoogonidium zoogonous zoogony zoograft zoografting zoographer zoographic zoographical zoographically zoographist zoography zooid zooidal zooidiophilous zooks zoolater zoolatria zoolatrous zoolatry zoolite zoolith zoolithic zoolitic zoologer zoologic zoological zoologically zoologicoarchaeologist zoologicobotanical zoologist zoologize zoology zoom zoomagnetic zoomagnetism zoomancy zoomania zoomantic zoomantist Zoomastigina Zoomastigoda zoomechanical zoomechanics zoomelanin zoometric zoometry zoomimetic zoomimic zoomorph zoomorphic zoomorphism zoomorphize zoomorphy zoon zoonal zoonerythrin zoonic zoonist zoonite zoonitic zoonomia zoonomic zoonomical zoonomist zoonomy zoonosis zoonosologist zoonosology zoonotic zoons zoonule zoopaleontology zoopantheon zooparasite zooparasitic zoopathological zoopathologist zoopathology zoopathy zooperal zooperist zoopery Zoophaga zoophagan Zoophagineae zoophagous zoopharmacological zoopharmacy zoophile zoophilia zoophilic zoophilism zoophilist zoophilite zoophilitic zoophilous zoophily zoophobia zoophobous zoophoric zoophorus zoophysical zoophysics zoophysiology Zoophyta zoophytal zoophyte zoophytic zoophytical zoophytish zoophytography zoophytoid zoophytological zoophytologist zoophytology zooplankton zooplanktonic zooplastic zooplasty zoopraxiscope zoopsia zoopsychological zoopsychologist zoopsychology zooscopic zooscopy zoosis zoosmosis zoosperm zoospermatic zoospermia zoospermium zoosphere zoosporange zoosporangia zoosporangial zoosporangiophore zoosporangium zoospore zoosporic zoosporiferous zoosporocyst zoosporous zootaxy zootechnic zootechnics zootechny zooter zoothecia zoothecial zoothecium zootheism zootheist zootheistic zootherapy zoothome zootic Zootoca zootomic zootomical zootomically zootomist zootomy zoototemism zootoxin zootrophic zootrophy zootype zootypic zooxanthella zooxanthellae zooxanthin zoozoo zopilote Zoque Zoquean Zoraptera zorgite zoril zorilla Zorillinae zorillo Zoroastrian Zoroastrianism Zoroastrism Zorotypus zorrillo zorro Zosma zoster Zostera Zosteraceae zosteriform Zosteropinae Zosterops Zouave zounds zowie Zoysia Zubeneschamali zuccarino zucchetto zucchini zudda zugtierlast zugtierlaster zuisin Zuleika Zulhijjah Zulinde Zulkadah Zulu Zuludom Zuluize zumatic zumbooruk Zuni Zunian zunyite zupanate Zutugil zuurveldt zuza zwanziger Zwieback zwieback Zwinglian Zwinglianism Zwinglianist zwitter zwitterion zwitterionic zyga zygadenine Zygadenus Zygaena zygaenid Zygaenidae zygal zygantra zygantrum zygapophyseal zygapophysis zygion zygite Zygnema Zygnemaceae Zygnemales Zygnemataceae zygnemataceous Zygnematales zygobranch Zygobranchia Zygobranchiata zygobranchiate Zygocactus zygodactyl Zygodactylae Zygodactyli zygodactylic zygodactylism zygodactylous zygodont zygolabialis zygoma zygomata zygomatic zygomaticoauricular zygomaticoauricularis zygomaticofacial zygomaticofrontal zygomaticomaxillary zygomaticoorbital zygomaticosphenoid zygomaticotemporal zygomaticum zygomaticus zygomaxillare zygomaxillary zygomorphic zygomorphism zygomorphous zygomycete Zygomycetes zygomycetous zygon zygoneure zygophore zygophoric Zygophyceae zygophyceous Zygophyllaceae zygophyllaceous Zygophyllum zygophyte zygopleural Zygoptera Zygopteraceae zygopteran zygopterid Zygopterides Zygopteris zygopteron zygopterous Zygosaccharomyces zygose zygosis zygosperm zygosphenal zygosphene zygosphere zygosporange zygosporangium zygospore zygosporic zygosporophore zygostyle zygotactic zygotaxis zygote zygotene zygotic zygotoblast zygotoid zygotomere zygous zygozoospore zymase zyme zymic zymin zymite zymogen zymogene zymogenesis zymogenic zymogenous zymoid zymologic zymological zymologist zymology zymolyis zymolysis zymolytic zymome zymometer zymomin zymophore zymophoric zymophosphate zymophyte zymoplastic zymoscope zymosimeter zymosis zymosterol zymosthenic zymotechnic zymotechnical zymotechnics zymotechny zymotic zymotically zymotize zymotoxic zymurgy Zyrenian Zyrian Zyryan zythem Zythia zythum Zyzomys Zyzzogeton watchman-4.9.0/thirdparty/tap.cpp000066400000000000000000000214001314236077500170150ustar00rootroot00000000000000/*- @nolint * Copyright (c) 2004 Nik Clayton * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #define COMPILING_TAP_CPP 1 #include "watchman_system.h" #include #include #include #include #include "tap.h" #ifdef _WIN32 # define flockfile(a) 0 # define funlockfile(a) 0 #endif static int no_plan = 0; static int skip_all = 0; static int have_plan = 0; static unsigned int test_count = 0; /* Number of tests that have been run */ static unsigned int e_tests = 0; /* Expected number of tests to run */ static unsigned int failures = 0; /* Number of tests that failed */ static char *todo_msg = NULL; static const char *todo_msg_fixed = "libtap malloc issue"; static int todo = 0; static int test_died = 0; static struct timeval start_time; static std::mutex M; # define LOCK M.lock(); # define UNLOCK M.unlock(); static void _expected_tests(unsigned int); static void _tap_init(void); static void _cleanup(void); /* * Generate a test result. * * ok -- boolean, indicates whether or not the test passed. * test_name -- the name of the test, may be NULL * test_comment -- a comment to print afterwards, may be NULL */ unsigned int _gen_result(int ok, const char *func, const char *file, unsigned int line, const char *test_name, ...) { va_list ap; char *local_test_name = NULL; char *c; int name_is_digits; LOCK; test_count++; /* Start by taking the test name and performing any printf() expansions on it */ if(test_name != NULL) { va_start(ap, test_name); ignore_result(vasprintf(&local_test_name, test_name, ap)); va_end(ap); /* Make sure the test name contains more than digits and spaces. Emit an error message and exit if it does */ if(local_test_name) { name_is_digits = 1; for(c = local_test_name; *c != '\0'; c++) { if(!isdigit((uint8_t)*c) && !isspace((uint8_t)*c)) { name_is_digits = 0; break; } } if(name_is_digits) { printf("# You named your test '%s'. You shouldn't use numbers " "for your test names.\n", local_test_name); } } } if(!ok) { printf("not "); failures++; } printf("ok %d", test_count); if(test_name != NULL) { printf(" - "); /* Print the test name, escaping any '#' characters it might contain */ if(local_test_name != NULL) { flockfile(stdout); for(c = local_test_name; *c != '\0'; c++) { if(*c == '#') fputc('\\', stdout); fputc((int)*c, stdout); } funlockfile(stdout); } else { /* vasprintf() failed, use a fixed message */ printf("%s", todo_msg_fixed); } } /* If we're in a todo_start() block then flag the test as being TODO. todo_msg should contain the message to print at this point. If it's NULL then asprintf() failed, and we should use the fixed message. This is not counted as a failure, so decrement the counter if the test failed. */ if(todo) { printf(" # TODO %s", todo_msg ? todo_msg : todo_msg_fixed); if(!ok) failures--; } printf("\n"); if(!ok) { if(getenv("HARNESS_ACTIVE") != NULL) fputs("\n", stderr); printf("# Failed %stest (%s:%s() at line %d)\n", todo ? "(TODO) " : "", file, func, line); } free(local_test_name); UNLOCK; /* We only care (when testing) that ok is positive, but here we specifically only want to return 1 or 0 */ return ok ? 1 : 0; } /* * Initialise the TAP library. Will only do so once, however many times it's * called. */ void _tap_init(void) { static int run_once = 0; if(!run_once) { atexit(_cleanup); /* stdout needs to be unbuffered so that the output appears in the same place relative to stderr output as it does with Test::Harness */ setbuf(stdout, 0); run_once = 1; gettimeofday(&start_time, NULL); } } /* * Note that there's no plan. */ int plan_no_plan(void) { LOCK; _tap_init(); if(have_plan != 0) { fprintf(stderr, "You tried to plan twice!\n"); test_died = 1; UNLOCK; exit(255); } have_plan = 1; no_plan = 1; UNLOCK; return 1; } /* * Note that the plan is to skip all tests */ int plan_skip_all(char *reason) { LOCK; _tap_init(); skip_all = 1; printf("1..0"); if(reason != NULL) printf(" # SKIP %s", reason); printf("\n"); UNLOCK; exit(0); } /* * Note the number of tests that will be run. */ int plan_tests(unsigned int tests) { LOCK; _tap_init(); if(have_plan != 0) { fprintf(stderr, "You tried to plan twice!\n"); test_died = 1; UNLOCK; exit(255); } if(tests == 0) { fprintf(stderr, "You said to run 0 tests! You've got to run something.\n"); test_died = 1; UNLOCK; exit(255); } have_plan = 1; _expected_tests(tests); UNLOCK; return e_tests; } unsigned int diag(const char *fmt, ...) { va_list ap; if (!getenv("TAP_SHOW_DIAG")) { return 0; } fputs("# ", stdout); va_start(ap, fmt); vfprintf(stdout, fmt, ap); va_end(ap); fputs("\n", stdout); return 0; } void _expected_tests(unsigned int tests) { printf("1..%d\n", tests); e_tests = tests; } int skip(unsigned int n, char *fmt, ...) { va_list ap; char *skip_msg; LOCK; va_start(ap, fmt); ignore_result(asprintf(&skip_msg, fmt, ap)); va_end(ap); while(n-- > 0) { test_count++; printf("ok %d # skip %s\n", test_count, skip_msg != NULL ? skip_msg : "libtap():malloc() failed"); } free(skip_msg); UNLOCK; return 1; } void todo_start(char *fmt, ...) { va_list ap; LOCK; va_start(ap, fmt); ignore_result(vasprintf(&todo_msg, fmt, ap)); va_end(ap); todo = 1; UNLOCK; } void todo_end(void) { LOCK; todo = 0; free(todo_msg); UNLOCK; } int exit_status(void) { int r; LOCK; /* If there's no plan, just return the number of failures */ if(no_plan || !have_plan) { UNLOCK; return failures; } /* Ran too many tests? Return the number of tests that were run that shouldn't have been */ if(e_tests < test_count) { r = test_count - e_tests; UNLOCK; return r; } /* Return the number of tests that failed + the number of tests that weren't run */ r = failures + e_tests - test_count; UNLOCK; return r; } static uint64_t timeval_to_ms(struct timeval tv) { return (tv.tv_sec * 1000) + (tv.tv_usec / 1000); } /* * Cleanup at the end of the run, produce any final output that might be * required. */ void _cleanup(void) { struct timeval end_time; uint64_t ms; gettimeofday(&end_time, NULL); ms = timeval_to_ms(end_time) - timeval_to_ms(start_time); LOCK; /* If plan_no_plan() wasn't called, and we don't have a plan, and we're not skipping everything, then something happened before we could produce any output */ if(!no_plan && !have_plan && !skip_all) { printf("# Looks like your test died before it could output anything.\n"); UNLOCK; return; } if(test_died) { printf("# Looks like your test died just after %d.\n", test_count); UNLOCK; return; } /* No plan provided, but now we know how many tests were run, and can print the header at the end */ if(!skip_all && (no_plan || !have_plan)) { printf("1..%d\n", test_count); } if((have_plan && !no_plan) && e_tests < test_count) { printf("# Looks like you planned %d %s but ran %d extra.\n", e_tests, e_tests == 1 ? "test" : "tests", test_count - e_tests); UNLOCK; return; } if((have_plan || !no_plan) && e_tests > test_count) { printf("# Looks like you planned %d %s but only ran %d.\n", e_tests, e_tests == 1 ? "test" : "tests", test_count); UNLOCK; return; } if(failures) printf("# Looks like you failed %d %s of %d.\n", failures, failures == 1 ? "test" : "tests", test_count); printf("# ELAPSED: %" PRIu64 "ms\n", ms); UNLOCK; } watchman-4.9.0/thirdparty/tap.h000066400000000000000000000064101314236077500164660ustar00rootroot00000000000000/*- @nolint * Copyright (c) 2004 Nik Clayton * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ /* '## __VA_ARGS__' is a gcc'ism. C99 doesn't allow the token pasting and requires the caller to add the final comma if they've ommitted the optional arguments */ #if defined(__GNUC__) || _MSC_VER >= 1700 # if _MSC_VER > 1700 # define __func__ __FUNCTION__ # endif # define ok(e, test, ...) ((e) ? \ _gen_result(1, __func__, __FILE__, __LINE__, \ test, ## __VA_ARGS__) : \ _gen_result(0, __func__, __FILE__, __LINE__, \ test, ## __VA_ARGS__)) # define ok1(e) ((e) ? \ _gen_result(1, __func__, __FILE__, __LINE__, "%s", #e) : \ _gen_result(0, __func__, __FILE__, __LINE__, "%s", #e)) # define pass(test, ...) ok(1, test, ## __VA_ARGS__); # define fail(test, ...) ok(0, test, ## __VA_ARGS__); # define skip_start(test, n, fmt, ...) \ do { \ if((test)) { \ skip(n, fmt, ## __VA_ARGS__); \ continue; \ } #elif __STDC_VERSION__ >= 199901L /* __GNUC__ */ # define ok(e, ...) ((e) ? \ _gen_result(1, __func__, __FILE__, __LINE__, \ __VA_ARGS__) : \ _gen_result(0, __func__, __FILE__, __LINE__, \ __VA_ARGS__)) # define ok1(e) ((e) ? \ _gen_result(1, __func__, __FILE__, __LINE__, "%s", #e) : \ _gen_result(0, __func__, __FILE__, __LINE__, "%s", #e)) # define pass(...) ok(1, __VA_ARGS__); # define fail(...) ok(0, __VA_ARGS__); # define skip_start(test, n, ...) \ do { \ if((test)) { \ skip(n, __VA_ARGS__); \ continue; \ } #else /* __STDC_VERSION__ */ # error "Needs gcc or C99 compiler for variadic macros." #endif /* __STDC_VERSION__ */ #define skip_end() } while(0); unsigned int _gen_result(int, const char *, const char *, unsigned int, const char *, ...); int plan_no_plan(void); int plan_skip_all(char *); int plan_tests(unsigned int); unsigned int diag(const char *, ...); int skip(unsigned int, char *, ...); void todo_start(char *, ...); void todo_end(void); int exit_status(void); watchman-4.9.0/thirdparty/wildmatch/000077500000000000000000000000001314236077500175045ustar00rootroot00000000000000watchman-4.9.0/thirdparty/wildmatch/.dir-locals.el000066400000000000000000000001641314236077500221360ustar00rootroot00000000000000((c-mode . ((c-basic-offset . 8) (indent-tabs-mode . t) (tab-width . 8) (fill-column . 80)))) watchman-4.9.0/thirdparty/wildmatch/TARGETS000066400000000000000000000002241314236077500205360ustar00rootroot00000000000000cpp_library( name = "wildmatch", srcs = ["wildmatch.c"], headers = ["wildmatch.h"], deps = [ "@/watchman:headers", ], ) watchman-4.9.0/thirdparty/wildmatch/wildmatch.c000066400000000000000000000222371314236077500216320ustar00rootroot00000000000000/* Copyright 1986-present, Rich $alz, Wayne Davison, and Duy Nguyen. * Licensed under the Apache License, Version 2.0 */ /* ** Do shell-style pattern matching for ?, \, [], and * characters. ** It is 8bit clean. ** ** Written by Rich $alz, mirror!rs, Wed Nov 26 19:03:17 EST 1986. ** Rich $alz is now . ** ** Modified by Wayne Davison to special-case '/' matching, to make '**' ** work differently than '*', and to fix the character-class code. */ #include #include #include "wildmatch.h" #ifndef NULL #define NULL 0 #endif typedef unsigned char uchar; #define is_glob_special(c) \ ((c) == '*' || (c) == '?' || (c) == '[' || (c) == '\\') /* What character marks an inverted character class? */ #define NEGATE_CLASS '!' #define NEGATE_CLASS2 '^' #define CC_EQ(class, len, litmatch) ((len) == sizeof (litmatch)-1 \ && *(class) == *(litmatch) \ && strncmp((char*)class, litmatch, len) == 0) #if defined STDC_HEADERS || !defined isascii # define ISASCII(c) 1 #else # define ISASCII(c) isascii(c) #endif #ifdef isblank # define ISBLANK(c) (ISASCII(c) && isblank(c)) #else # define ISBLANK(c) ((c) == ' ' || (c) == '\t') #endif #ifdef isgraph # define ISGRAPH(c) (ISASCII(c) && isgraph(c)) #else # define ISGRAPH(c) (ISASCII(c) && isprint(c) && !isspace(c)) #endif #define ISPRINT(c) (ISASCII(c) && isprint(c)) #define ISDIGIT(c) (ISASCII(c) && isdigit(c)) #define ISALNUM(c) (ISASCII(c) && isalnum(c)) #define ISALPHA(c) (ISASCII(c) && isalpha(c)) #define ISCNTRL(c) (ISASCII(c) && iscntrl(c)) #define ISLOWER(c) (ISASCII(c) && islower(c)) #define ISPUNCT(c) (ISASCII(c) && ispunct(c)) #define ISSPACE(c) (ISASCII(c) && isspace(c)) #define ISUPPER(c) (ISASCII(c) && isupper(c)) #define ISXDIGIT(c) (ISASCII(c) && isxdigit(c)) /* Match pattern "p" against "text" */ static int dowild(const uchar *p, const uchar *text, unsigned int flags) { uchar p_ch; const uchar *pattern = p; int pattern_needs_leading_period = (flags & WM_PERIOD) && (text[0] == '.'); for ( ; (p_ch = *p) != '\0'; text++, p++) { int matched, match_slash, negated; uchar t_ch, prev_ch; if ((t_ch = *text) == '\0' && p_ch != '*') return WM_ABORT_ALL; if ((flags & WM_CASEFOLD) && ISUPPER(t_ch)) t_ch = tolower(t_ch); if ((flags & WM_CASEFOLD) && ISUPPER(p_ch)) p_ch = tolower(p_ch); switch (p_ch) { case '\\': if (!(flags & WM_NOESCAPE)) /* Literal match with following character. Note that the test * in "default" handles the p[1] == '\0' failure case. */ p_ch = *++p; /* FALLTHROUGH */ default: if (p_ch == '/') { /* Consume any number of consecutive slashes. */ while (*(p + 1) == '/') { ++p; } } if (t_ch != p_ch) return WM_NOMATCH; if ((flags & WM_PERIOD) && (flags & WM_PATHNAME) && t_ch == '/' && text[1] == '.' && p[1] != '.') return WM_NOMATCH; /* If we needed a leading period, we've matched it. */ pattern_needs_leading_period = 0; continue; case '?': /* Match anything but '/'. */ if ((flags & WM_PATHNAME) && t_ch == '/') return WM_NOMATCH; continue; case '*': if (*++p == '*') { const uchar *prev_p = p - 2; while (*++p == '*') {} if (!(flags & WM_PATHNAME)) /* without WM_PATHNAME, '*' == '**' */ match_slash = 1; else if ((prev_p < pattern || *prev_p == '/') && (*p == '\0' || *p == '/' || (p[0] == '\\' && p[1] == '/'))) { /* * Assuming we already match 'foo/' and are at * , just assume it matches * nothing and go ahead match the rest of the * pattern with the remaining string. This * helps make foo/<*><*>/bar (<> because * otherwise it breaks C comment syntax) match * both foo/bar and foo/a/bar. */ if (p[0] == '/' && dowild(p + 1, text, flags) == WM_MATCH) return WM_MATCH; match_slash = 1; } else return WM_ABORT_MALFORMED; } else /* without WM_PATHNAME, '*' == '**' */ match_slash = flags & WM_PATHNAME ? 0 : 1; if (*p == '\0') { /* If we needed a leading period in the pattern but only * found stars, we didn't match. */ if (pattern_needs_leading_period) return WM_NOMATCH; /* Trailing "**" matches everything. Trailing "*" matches * only if there are no more slash characters. */ if (!match_slash) { if (strchr((char*)text, '/') != NULL) return WM_NOMATCH; if ((flags & WM_PERIOD) && strstr((const char*)text, "/.") != NULL) return WM_NOMATCH; } return WM_MATCH; } else if (!match_slash && *p == '/') { /* * _one_ asterisk followed by a slash * with WM_PATHNAME matches the next * directory */ const char *slash = strchr((char*)text, '/'); if (!slash) return WM_NOMATCH; text = (const uchar*)slash; /* the slash is consumed by the top-level for loop */ break; } while (1) { if (t_ch == '\0') break; /* * Try to advance faster when an asterisk is * followed by a literal. We know in this case * that the the string before the literal * must belong to "*". * If match_slash is false, do not look past * the first slash as it cannot belong to '*'. */ if (!is_glob_special(*p)) { p_ch = *p; if ((flags & WM_CASEFOLD) && ISUPPER(p_ch)) p_ch = tolower(p_ch); while ((t_ch = *text) != '\0' && (match_slash || t_ch != '/')) { if ((flags & WM_CASEFOLD) && ISUPPER(t_ch)) t_ch = tolower(t_ch); if (t_ch == p_ch) break; text++; } if (t_ch != p_ch) return WM_NOMATCH; } if (pattern_needs_leading_period) return WM_NOMATCH; if ((matched = dowild(p, text, flags)) != WM_NOMATCH) { if (!match_slash || matched != WM_ABORT_TO_STARSTAR) return matched; } else if (!match_slash && t_ch == '/') return WM_ABORT_TO_STARSTAR; else if ((flags & WM_PERIOD) && (flags & WM_PATHNAME) && t_ch == '/' && text[1] == '.' && p[1] != '.') return WM_NOMATCH; t_ch = *++text; } return WM_ABORT_ALL; case '[': p_ch = *++p; #ifdef NEGATE_CLASS2 if (p_ch == NEGATE_CLASS2) p_ch = NEGATE_CLASS; #endif /* Assign literal 1/0 because of "matched" comparison. */ negated = p_ch == NEGATE_CLASS ? 1 : 0; if (negated) { /* Inverted character class. */ p_ch = *++p; } prev_ch = 0; matched = 0; do { if (!p_ch) return WM_ABORT_ALL; if (p_ch == '\\') { p_ch = *++p; if (!p_ch) return WM_ABORT_ALL; if (t_ch == p_ch) matched = 1; } else if (p_ch == '-' && prev_ch && p[1] && p[1] != ']') { p_ch = *++p; if (p_ch == '\\') { p_ch = *++p; if (!p_ch) return WM_ABORT_ALL; } if (t_ch <= p_ch && t_ch >= prev_ch) matched = 1; else if ((flags & WM_CASEFOLD) && ISLOWER(t_ch)) { uchar t_ch_upper = toupper(t_ch); if (t_ch_upper <= p_ch && t_ch_upper >= prev_ch) matched = 1; } p_ch = 0; /* This makes "prev_ch" get set to 0. */ } else if (p_ch == '[' && p[1] == ':') { const uchar *s; int i; for (s = p += 2; (p_ch = *p) && p_ch != ']'; p++) {} /*SHARED ITERATOR*/ if (!p_ch) return WM_ABORT_ALL; i = p - s - 1; if (i < 0 || p[-1] != ':') { /* Didn't find ":]", so treat like a normal set. */ p = s - 2; p_ch = '['; if (t_ch == p_ch) matched = 1; continue; } if (CC_EQ(s,i, "alnum")) { if (ISALNUM(t_ch)) matched = 1; } else if (CC_EQ(s,i, "alpha")) { if (ISALPHA(t_ch)) matched = 1; } else if (CC_EQ(s,i, "blank")) { if (ISBLANK(t_ch)) matched = 1; } else if (CC_EQ(s,i, "cntrl")) { if (ISCNTRL(t_ch)) matched = 1; } else if (CC_EQ(s,i, "digit")) { if (ISDIGIT(t_ch)) matched = 1; } else if (CC_EQ(s,i, "graph")) { if (ISGRAPH(t_ch)) matched = 1; } else if (CC_EQ(s,i, "lower")) { if (ISLOWER(t_ch)) matched = 1; } else if (CC_EQ(s,i, "print")) { if (ISPRINT(t_ch)) matched = 1; } else if (CC_EQ(s,i, "punct")) { if (ISPUNCT(t_ch)) matched = 1; } else if (CC_EQ(s,i, "space")) { if (ISSPACE(t_ch)) matched = 1; } else if (CC_EQ(s,i, "upper")) { if (ISUPPER(t_ch)) matched = 1; else if ((flags & WM_CASEFOLD) && ISLOWER(t_ch)) matched = 1; } else if (CC_EQ(s,i, "xdigit")) { if (ISXDIGIT(t_ch)) matched = 1; } else /* malformed [:class:] string */ return WM_ABORT_ALL; p_ch = 0; /* This makes "prev_ch" get set to 0. */ } else if (t_ch == p_ch) matched = 1; } while (prev_ch = p_ch, (p_ch = *++p) != ']'); if (matched == negated || ((flags & WM_PATHNAME) && t_ch == '/')) return WM_NOMATCH; if ((flags & WM_PATHNAME) && t_ch == '/' && (flags & WM_PERIOD) && (text[1] == '.') && (p[1] != '.')) return WM_NOMATCH; continue; } } return *text ? WM_NOMATCH : WM_MATCH; } /* Match the "pattern" against the "text" string. */ int wildmatch(const char *pattern, const char *text, unsigned int flags, struct wildopts *wo) { (void)wo; return dowild((const uchar*)pattern, (const uchar*)text, flags); } watchman-4.9.0/thirdparty/wildmatch/wildmatch.h000066400000000000000000000011231314236077500216260ustar00rootroot00000000000000/* Copyright 1986-present, Rich $alz, Wayne Davison, and Duy Nguyen. * Licensed under the Apache License, Version 2.0 */ #ifndef WILDMATCH_H #define WILDMATCH_H #define WM_CASEFOLD 1 #define WM_PATHNAME 2 #define WM_PERIOD 4 #define WM_NOESCAPE 8 #define WM_ABORT_MALFORMED 2 #define WM_NOMATCH 1 #define WM_MATCH 0 #define WM_ABORT_ALL -1 #define WM_ABORT_TO_STARSTAR -2 #ifdef __cplusplus extern "C" { #endif struct wildopts; int wildmatch(const char *pattern, const char *text, unsigned int flags, struct wildopts *wo); #ifdef __cplusplus } #endif #endif watchman-4.9.0/time.cpp000066400000000000000000000007541314236077500150060ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" void w_timeoutms_to_abs_timespec(int timeoutms, struct timespec *deadline) { struct timeval now, delta, target; /* compute deadline */ gettimeofday(&now, NULL); delta.tv_sec = timeoutms / 1000; delta.tv_usec = (timeoutms - (delta.tv_sec * 1000)) * 1000; w_timeval_add(now, delta, &target); w_timeval_to_timespec(target, deadline); } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/timedlock.cpp000066400000000000000000000043111314236077500160140ustar00rootroot00000000000000/* Copyright 2016-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #ifdef __APPLE__ // We get to emulate these functions because Darwin doesn't implement them #define timed_helper(func_name, object_type, try_func) \ int func_name(object_type* lock, const struct timespec* deadline_ts) { \ int result; \ struct timeval now, deadline; \ int usec = 1; \ w_timespec_to_timeval(*deadline_ts, &deadline); \ while (true) { \ gettimeofday(&now, nullptr); \ if (w_timeval_compare(now, deadline) >= 0) { \ return ETIMEDOUT; \ } \ result = try_func(lock); \ if (result != EBUSY) { \ return result; \ } \ /* Exponential backoff on the sleep period */ \ usec = std::min(usec * 2, 1024); \ if (now.tv_sec == deadline.tv_sec) { \ /* Cap the sleep if we are close to the deadline */ \ usec = std::min(usec, deadline.tv_usec - now.tv_usec); \ } \ /* sleep override */ usleep(usec); \ } \ } timed_helper(pthread_mutex_timedlock, pthread_mutex_t, pthread_mutex_trylock) timed_helper(pthread_rwlock_timedwrlock, pthread_rwlock_t, pthread_rwlock_trywrlock) timed_helper(pthread_rwlock_timedrdlock, pthread_rwlock_t, pthread_rwlock_tryrdlock) #endif /* vim:ts=2:sw=2:et: */ watchman-4.9.0/travis/000077500000000000000000000000001314236077500146465ustar00rootroot00000000000000watchman-4.9.0/travis/deps.sh000077500000000000000000000015731314236077500161460ustar00rootroot00000000000000#!/bin/bash set -x case `uname` in Darwin) brew update brew tap facebook/fb brew install wget pcre ruby openssl readline buck pyenv # reinstall to get the latest versions brew upgrade # avoid snafu with OS X and python builds ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future CFLAGS="$CFLAGS $ARCHFLAGS" export ARCHFLAGS CFLAGS case "$TRAVIS_PYTHON" in python2.6) pyenv install 2.6.9 eval "$(pyenv init -)" pyenv global 2.6.9 # install some other required dependencies pip2.6 install unittest2==1.1.0 argparse ;; python2.7) pyenv install 2.7.11 pyenv global 2.7.11 ;; python3.5) pyenv install 3.5.2 pyenv global 3.5.2 ;; python3.6) pyenv install 3.6.1 pyenv global 3.6.1 esac ;; esac watchman-4.9.0/travis/run.sh000077500000000000000000000024071314236077500160140ustar00rootroot00000000000000#!/bin/sh set -x uname -a # Speculatively fulfil any node deps before we turn on hard errors cd node npm install cd .. set -e PATH=$PWD:$PATH case $(uname) in Darwin) eval "$(pyenv init -)" ;; Linux) if [ "${ENABLE_ASAN-0}" -eq 1 ]; then # Some versions of gcc-5 appear to have a bug where -fsanitize-address # doesn't automatically enable the gold linker. LDFLAGS="$LDFLAGS -fuse-ld=gold" export LDFLAGS fi ;; esac if [ "${ENABLE_ASAN-0}" -eq 1 ]; then CONFIGARGS="--enable-asan --disable-opt" export CONFIGARGS fi ./autogen.sh ./configure --with-pcre --with-python="$TRAVIS_PYTHON" --without-ruby $CONFIGARGS make clean make set +e rm -rf /tmp/watchman* rm -rf /var/tmp/watchmantest* TMP=/var/tmp TMPDIR=$TMP export TMPDIR TMP if ! make integration ; then exit 1 fi INST_TEST=/tmp/install-test if test "$CIRCLE" = "true" ; then INST_TEST="$CIRCLE_ARTIFACTS/install-test" fi test -d $INST_TEST && rm -rf $INST_TEST make DESTDIR=$INST_TEST install find $INST_TEST case $(uname) in Darwin) if [[ "$BUILD_JAVA_CLIENT" != "" ]] && [ "${BUILD_JAVA_CLIENT-0}" -eq 1 ]; then pushd java buck fetch :watchman :watchman-tests || exit 1 buck test :watchman-lib || exit 1 popd fi ;; esac exit 0 watchman-4.9.0/watcher/000077500000000000000000000000001314236077500147735ustar00rootroot00000000000000watchman-4.9.0/watcher/auto.cpp000066400000000000000000000070661314236077500164600ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" WatcherRegistry::WatcherRegistry( const std::string& name, std::function(w_root_t*)> init, int priority) : name_(name), init_(init), pri_(priority) { registerFactory(*this); } std::unordered_map& WatcherRegistry::getRegistry() { // Meyers singleton static std::unordered_map registry; return registry; } void WatcherRegistry::registerFactory(const WatcherRegistry& factory) { auto& reg = getRegistry(); reg.emplace(factory.name_, factory); } const WatcherRegistry* WatcherRegistry::getWatcherByName( const std::string& name) { auto& reg = getRegistry(); const auto& it = reg.find(name); if (it == reg.end()) { return nullptr; } return &it->second; } // Helper to DRY in the two success paths in the function below static inline std::shared_ptr reportWatcher( const std::string& watcherName, w_root_t* root, std::shared_ptr&& watcher) { watchman::log( watchman::ERR, "root ", root->root_path, " using watcher mechanism ", watcher->getName(), " (", watcherName, " was requested)\n"); return std::move(watcher); } std::shared_ptr WatcherRegistry::initWatcher( w_root_t* root) { std::string failureReasons; std::string watcherName = root->config.getString("watcher", "auto"); if (watcherName != "auto") { // If they asked for a specific one, let's try to find it auto watcher = getWatcherByName(watcherName); if (!watcher) { failureReasons.append( std::string("no watcher named ") + watcherName + std::string(". ")); } else { try { return reportWatcher(watcherName, root, watcher->init_(root)); } catch (const std::exception& e) { failureReasons.append( watcherName + std::string(": ") + e.what() + std::string(". ")); } } } // If we get here, let's do auto-selection; build up a list of the // watchers that we didn't try already... std::vector watchers; for (const auto& it : getRegistry()) { if (it.first != watcherName) { watchers.emplace_back(&it.second); } } // ... and sort with the highest priority first std::sort( watchers.begin(), watchers.end(), [](const WatcherRegistry* a, const WatcherRegistry* b) { return a->pri_ > b->pri_; }); // and then work through them, taking the first one that sticks for (auto& watcher : watchers) { try { watchman::log( watchman::DBG, "attempting to use watcher ", watcher->getName(), " on ", root->root_path, "\n"); return reportWatcher(watcherName, root, watcher->init_(root)); } catch (const std::exception& e) { watchman::log(watchman::DBG, watcher->getName(), ": ", e.what(), ".\n"); failureReasons.append( watcher->getName() + std::string(": ") + e.what() + std::string(". ")); } } // Nothing worked, report the errors throw std::runtime_error(failureReasons); } Watcher::Watcher(const char* name, unsigned flags) : name(name), flags(flags) {} Watcher::~Watcher() {} bool Watcher::startWatchFile(struct watchman_file*) { return true; } bool Watcher::start(const std::shared_ptr&) { return true; } void Watcher::signalThreads() {} /* vim:ts=2:sw=2:et: */ watchman-4.9.0/watcher/eden.cpp000066400000000000000000000541741314236077500164250ustar00rootroot00000000000000/* Copyright 2016-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include #include #include #include #include "eden/fs/service/gen-cpp2/StreamingEdenService.h" #include "watchman.h" #include "QueryableView.h" #include "ThreadPool.h" using facebook::eden::StreamingEdenServiceAsyncClient; using facebook::eden::FileInformationOrError; using facebook::eden::FileInformation; using facebook::eden::JournalPosition; using facebook::eden::FileDelta; using facebook::eden::EdenError; namespace watchman { namespace { /** This is a helper for settling out subscription events. * We have a single instance of the callback object that we schedule * each time we get an update from the eden server. If we are already * scheduled we will cancel it and reschedule it. */ class SettleCallback : public folly::HHWheelTimer::Callback { public: SettleCallback(folly::EventBase* eventBase, std::shared_ptr root) : eventBase_(eventBase), root_(std::move(root)) {} void timeoutExpired() noexcept override { try { auto settledPayload = json_object({{"settled", json_true()}}); root_->unilateralResponses->enqueue(std::move(settledPayload)); } catch (const std::exception& exc) { watchman::log( watchman::ERR, "error while dispatching settle payload; cancel watch: ", exc.what(), "\n"); eventBase_->terminateLoopSoon(); } } void callbackCanceled() noexcept override { // We must override this because the default is to call timeoutExpired(). // We don't want that to happen because we're only canceled in the case // where we want to delay the timeoutExpired() callback. } private: folly::EventBase* eventBase_; std::shared_ptr root_; }; folly::SocketAddress getEdenServerSocketAddress() { folly::SocketAddress addr; // In the future, eden will need to provide a well-supported way to locate // this socket, as the "local" path component here is a FB-specific default. auto path = folly::to(getenv("HOME"), "/local/.eden/socket"); addr.setFromPath(path); return addr; } std::string readLink(const std::string& path) { struct stat st; if (lstat(path.c_str(), &st)) { throw std::system_error( errno, std::generic_category(), watchman::to("lstat(", path, ") failed")); } std::string result(st.st_size + 1, '\0'); auto len = ::readlink(path.c_str(), &result[0], result.size()); if (len >= 0) { result.resize(len); return result; } throw std::system_error( errno, std::generic_category(), watchman::to("readlink(", path, ") failed")); } /** Create a thrift client that will connect to the eden server associated * with the current user. */ std::unique_ptr getEdenClient( w_string_piece rootPath, folly::EventBase* eb = folly::EventBaseManager::get()->getEventBase()) { // Resolve the eden socket; we use the .eden dir that is present in // every dir of an eden mount. folly::SocketAddress addr; auto path = watchman::to(rootPath, "/.eden/socket"); // It is important to resolve the link because the path in the eden mount // may exceed the maximum permitted unix domain socket path length. // This is actually how things our in our integration test environment. auto socketPath = readLink(path); addr.setFromPath(socketPath); return std::make_unique( apache::thrift::HeaderClientChannel::newChannel( apache::thrift::async::TAsyncSocket::newSocket(eb, addr))); } class EdenFileResult : public FileResult { public: EdenFileResult( const FileInformationOrError& infoOrErr, const w_string& fullName, JournalPosition* position = nullptr) : fullName_(fullName) { otime_.ticks = ctime_.ticks = 0; otime_.timestamp = ctime_.timestamp = 0; if (position) { otime_.ticks = ctime_.ticks = position->sequenceNumber; } if (infoOrErr.getType() == FileInformationOrError::Type::info) { stat_.size = infoOrErr.get_info().size; stat_.mode = infoOrErr.get_info().mode; stat_.mtime.tv_sec = infoOrErr.get_info().mtime.seconds; stat_.mtime.tv_nsec = infoOrErr.get_info().mtime.nanoSeconds; otime_.timestamp = ctime_.timestamp = stat_.mtime.tv_sec; exists_ = true; } else { exists_ = false; memset(&stat_, 0, sizeof(stat_)); } } const watchman::FileInformation& stat() const override { return stat_; } w_string_piece baseName() const override { return fullName_.piece().baseName(); } w_string_piece dirName() override { return fullName_.piece().dirName(); } bool exists() const override { return exists_; } Future readLink() const override { return makeFuture(nullptr); } const w_clock_t& ctime() const override { return ctime_; } const w_clock_t& otime() const override { return otime_; } Future getContentSha1() override { return makeFuture( Result(std::make_exception_ptr( std::runtime_error("content hash not implemented")))); } private: w_string fullName_; watchman::FileInformation stat_; bool exists_; w_clock_t ctime_; w_clock_t otime_; }; static std::string escapeGlobSpecialChars(w_string_piece str) { std::string result; for (size_t i = 0; i < str.size(); ++i) { auto c = str[i]; switch (c) { case '*': case '?': case '[': case ']': case '\\': result.append("\\"); break; } result.append(&c, 1); } return result; } /** filter out paths that are ignored or that are not part of the * relative_root restriction in a query. * Ideally we'd pass this information into eden so that it doesn't * have to walk those paths and return the data to us, but for the * moment we have to filter it out of the results. * We need to respect the ignore_dirs configuration setting and * also remove anything that doesn't match the relative_root constraint * in the query. The InMemoryView uses w_query_file_matches_relative_root() * for that purpose, but it cannot be re-used here because it operates * on the InMemoryView specific file representation that we can't recreate * here because of fundamental differences between the two watchers, and * also because we want to avoid materializing more information about the * file if we're just going to filter it out anyway. */ void filterOutPaths(std::vector& fileNames, w_query_ctx* ctx) { fileNames.erase( std::remove_if( fileNames.begin(), fileNames.end(), [ctx](const std::string& name) { auto full = w_string::pathCat({ctx->root->root_path, name}); if (ctx->query->relative_root) { auto parentPath = w_string_piece(full).dirName(); if (!(parentPath == ctx->query->relative_root || parentPath.startsWith(ctx->query->relative_root_slash))) { // Not in the desired area, so filter it out return true; } } return ctx->root->ignore.isIgnored(full.data(), full.size()); }), fileNames.end()); } class EdenView : public QueryableView { w_string root_path_; folly::EventBase subscriberEventBase_; public: explicit EdenView(w_root_t* root) { root_path_ = root->root_path; } void timeGenerator(w_query* /*query*/, struct w_query_ctx* ctx) const override { auto client = getEdenClient(root_path_); auto mountPoint = to(ctx->root->root_path); FileDelta delta; JournalPosition resultPosition; if (ctx->since.is_timestamp) { throw QueryExecError( "timestamp based since queries are not supported with eden"); } // This is the fall back for a fresh instance result set. // There are two different code paths that may need this, so // it is broken out as a lambda. auto getAllFiles = [ctx, &client, &mountPoint]() { std::vector fileNames; if (ctx->query->empty_on_fresh_instance) { // Avoid a full tree walk if we don't need it! return fileNames; } std::string globPattern; if (ctx->query->relative_root) { w_string_piece rel(ctx->query->relative_root); rel.advance(ctx->root->root_path.size() + 1); globPattern.append(rel.data(), rel.size()); globPattern.append("/"); } globPattern.append("**"); client->sync_glob( fileNames, mountPoint, std::vector{globPattern}); return fileNames; }; std::vector fileNames; if (ctx->since.clock.is_fresh_instance) { // Earlier in the processing flow, we decided that the rootNumber // didn't match the current root which means that eden was restarted. // We need to translate this to a fresh instance result set and // return a list of all possible matching files. client->sync_getCurrentJournalPosition(resultPosition, mountPoint); fileNames = getAllFiles(); } else { // Query eden to fill in the mountGeneration field. JournalPosition position; client->sync_getCurrentJournalPosition(position, mountPoint); // dial back to the sequence number from the query position.sequenceNumber = ctx->since.clock.ticks; // Now we can get the change journal from eden try { client->sync_getFilesChangedSince(delta, mountPoint, position); fileNames = std::move(delta.paths); resultPosition = delta.toPosition; watchman::log( watchman::DBG, "wanted from ", position.sequenceNumber, " result delta from ", delta.fromPosition.sequenceNumber, " to ", delta.toPosition.sequenceNumber, " with ", fileNames.size(), " changed files\n"); } catch (const EdenError& err) { if (err.errorCode != ERANGE) { throw; } // mountGeneration differs, so treat this as equivalent // to a fresh instance result ctx->since.clock.is_fresh_instance = true; client->sync_getCurrentJournalPosition(resultPosition, mountPoint); fileNames = getAllFiles(); } } // Filter out any ignored files filterOutPaths(fileNames, ctx); std::vector info; client->sync_getFileInformation(info, mountPoint, fileNames); if (info.size() != fileNames.size()) { throw QueryExecError( "info.size() didn't match fileNames.size(), should be unpossible!"); } auto nameIter = fileNames.begin(); auto infoIter = info.begin(); while (nameIter != fileNames.end()) { auto& name = *nameIter; auto& fileInfo = *infoIter; auto file = make_unique( fileInfo, w_string::pathCat({mountPoint, name}), &resultPosition); w_query_process_file(ctx->query, ctx, std::move(file)); ++nameIter; ++infoIter; } ctx->bumpNumWalked(fileNames.size()); } void suffixGenerator(w_query* query, struct w_query_ctx* ctx) const override { // If the query is anchored to a relative_root, use that that // avoid sucking down a massive list of files from eden w_string_piece rel; if (query->relative_root) { rel = query->relative_root; rel.advance(ctx->root->root_path.size() + 1); } std::vector globStrings; // Translate the suffix list into a list of globs for (auto& suff : query->suffixes) { globStrings.emplace_back(to(w_string::pathCat( {rel, to("**/*.", escapeGlobSpecialChars(suff))}))); } executeGlobBasedQuery(globStrings, query, ctx); } bool syncToNow(std::chrono::milliseconds) override { watchman::log(watchman::ERR, __FUNCTION__, "\n"); return true; } void executeGlobBasedQuery( const std::vector& globStrings, w_query* /*query*/, struct w_query_ctx* ctx) const { auto client = getEdenClient(ctx->root->root_path); auto mountPoint = to(ctx->root->root_path); std::vector fileNames; client->sync_glob(fileNames, mountPoint, globStrings); // Filter out any ignored files filterOutPaths(fileNames, ctx); std::vector info; client->sync_getFileInformation(info, mountPoint, fileNames); if (info.size() != fileNames.size()) { throw QueryExecError( "info.size() didn't match fileNames.size(), should be unpossible!"); } auto nameIter = fileNames.begin(); auto infoIter = info.begin(); while (nameIter != fileNames.end()) { auto& name = *nameIter; auto& fileInfo = *infoIter; auto file = make_unique( fileInfo, w_string::pathCat({mountPoint, name})); w_query_process_file(ctx->query, ctx, std::move(file)); ++nameIter; ++infoIter; } ctx->bumpNumWalked(fileNames.size()); } // Helper for computing a relative path prefix piece. // The returned piece is owned by the supplied context object! w_string_piece computeRelativePathPiece(struct w_query_ctx* ctx) const { w_string_piece rel; if (ctx->query->relative_root) { rel = ctx->query->relative_root; rel.advance(ctx->root->root_path.size() + 1); } return rel; } /** Walks files that match the supplied set of paths */ void pathGenerator(w_query* query, struct w_query_ctx* ctx) const override { // If the query is anchored to a relative_root, use that that // avoid sucking down a massive list of files from eden auto rel = computeRelativePathPiece(ctx); std::vector globStrings; // Translate the path list into a list of globs for (auto& path : query->paths) { if (path.depth > 0) { // We don't have an easy way to express depth constraints // in the existing glob API, so we just punt for the moment. // I believe that this sort of query is quite rare anyway. throw QueryExecError( "the eden watcher only supports depth 0 or depth -1"); } // -1 depth is infinite which we can translate to a recursive // glob. 0 depth is direct descendant which we can translate // to a simple * wildcard. auto glob = path.depth == -1 ? "**/*" : "*"; globStrings.emplace_back(to( w_string::pathCat({rel, escapeGlobSpecialChars(path.name), glob}))); } executeGlobBasedQuery(globStrings, query, ctx); } void globGenerator(w_query* query, struct w_query_ctx* ctx) const override { // If the query is anchored to a relative_root, use that that // avoid sucking down a massive list of files from eden auto rel = computeRelativePathPiece(ctx); std::vector globStrings; // Use the glob array provided by the query_spec. // The InMemoryView uses the compiled glob tree but we just want to // pass this list through to eden to evaluate. Note that we're // relying on parse_globs() to have already checked that the glob // looks sane during query parsing, and that eden itself will // sanity check and throw an error if there is still something it // doesn't like about it when we call sync_glob() below. for (auto& glob : query->query_spec.get("glob").array()) { globStrings.emplace_back( to(w_string::pathCat({rel, json_to_w_string(glob)}))); } // More glob flags/functionality: auto noescape = json_is_true( query->query_spec.get_default("glob_noescape", json_false())); if (noescape) { throw QueryExecError( "glob_noescape is not supported for the eden watcher"); } auto includedotfiles = json_is_true( query->query_spec.get_default("glob_includedotfiles", json_false())); if (includedotfiles) { throw QueryExecError( "glob_includedotfiles is not supported for the eden watcher"); } executeGlobBasedQuery(globStrings, query, ctx); } void allFilesGenerator(w_query* query, struct w_query_ctx* ctx) const override { // If the query is anchored to a relative_root, use that that // avoid sucking down a massive list of files from eden std::string globPattern; auto rel = computeRelativePathPiece(ctx); if (rel.size() > 0) { globPattern.append(rel.data(), rel.size()); globPattern.append("/"); } globPattern.append("**"); executeGlobBasedQuery(std::vector{globPattern}, query, ctx); } ClockPosition getMostRecentRootNumberAndTickValue() const override { auto client = getEdenClient(root_path_); JournalPosition position; auto mountPoint = to(root_path_); client->sync_getCurrentJournalPosition(position, mountPoint); return ClockPosition(position.mountGeneration, position.sequenceNumber); } w_string getCurrentClockString() const override { return ClockPosition().toClockString(); } uint32_t getLastAgeOutTickValue() const override { watchman::log(watchman::ERR, __FUNCTION__, "\n"); return 0; } time_t getLastAgeOutTimeStamp() const override { watchman::log(watchman::ERR, __FUNCTION__, "\n"); return 0; } void ageOut(w_perf_t& /*sample*/, std::chrono::seconds /*minAge*/) override {} bool doAnyOfTheseFilesExist( const std::vector& /*fileNames*/) const override { watchman::log(watchman::ERR, __FUNCTION__, "\n"); return false; } SCM* getSCM() const override { // We're going to return an eden aware implementation when we // get around to hooking this up. For now, pretend there is // no source control. return nullptr; } void startThreads(const std::shared_ptr& root) override { auto self = shared_from_this(); std::thread thr([self, this, root]() { subscriberThread(root); }); thr.detach(); } void signalThreads() override { subscriberEventBase_.terminateLoopSoon(); } // This is the thread that we use to listen to the stream of // changes coming in from the Eden server void subscriberThread(std::shared_ptr root) { SCOPE_EXIT { // ensure that the root gets torn down, // otherwise we'd leave it in a broken state. root->cancel(); }; w_set_thread_name("edensub %s", root->root_path.c_str()); watchman::log(watchman::DBG, "Started subscription thread\n"); try { // Prepare the callback SettleCallback settleCallback(&subscriberEventBase_, root); // Figure out the correct value for settling std::chrono::milliseconds settleTimeout(root->trigger_settle); // Connect up the client auto client = getEdenClient(root->root_path, &subscriberEventBase_); // This is called each time we get pushed an update by the eden server auto onUpdate = [&](apache::thrift::ClientReceiveState&& state) mutable { if (!state.isStreamEnd()) { try { JournalPosition pos; StreamingEdenServiceAsyncClient::recv_subscribe(pos, state); if (settleCallback.isScheduled()) { watchman::log(watchman::DBG, "reschedule settle timeout\n"); settleCallback.cancelTimeout(); } subscriberEventBase_.timer().scheduleTimeout( &settleCallback, settleTimeout); } catch (const std::exception& exc) { watchman::log( watchman::ERR, "error while receiving subscription; cancel watch: ", exc.what(), "\n"); // make sure we don't get called again subscriberEventBase_.terminateLoopSoon(); return; } } if (state.isStreamEnd()) { watchman::log( watchman::ERR, "subscription stream ended, cancel watch\n"); // We won't be called again, but we terminate the loop just // to make sure. subscriberEventBase_.terminateLoopSoon(); return; } }; // Establish the subscription stream client->subscribe( onUpdate, std::string(root->root_path.data(), root->root_path.size())); // This will run until the stream ends subscriberEventBase_.loop(); } catch (const std::exception& exc) { watchman::log( watchman::ERR, "uncaught exception in subscription thread, cancel watch:", exc.what(), "\n"); } } const w_string& getName() const override { static w_string name("eden"); return name; } std::shared_future waitUntilReadyToQuery( const std::shared_ptr& /*root*/) override { watchman::log(watchman::ERR, __FUNCTION__, "\n"); std::promise p; p.set_value(); return p.get_future(); } }; std::shared_ptr detectEden(w_root_t* root) { // Watchman doesn't depend on folly, so we have to put this call here, instead // of watchman's main(). static folly::once_flag reg_; folly::call_once( reg_, [] { folly::SingletonVault::singleton()->registrationComplete(); }); auto edenRoot = readLink(watchman::to(root->root_path, "/.eden/root")); if (w_string_piece(edenRoot) != root->root_path) { // We aren't at the root of the eden mount return nullptr; } auto client = getEdenClient(root->root_path); // We don't strictly need to do this, since we just verified that the root // matches our expectations, but it can't hurt to attempt to talk to the // daemon directly, just in case it is broken for some reason, or in // case someone is trolling us with a directory structure that looks // like an eden mount. std::vector info; static const std::vector paths{""}; client->sync_getFileInformation( info, std::string(root->root_path.data(), root->root_path.size()), paths); return std::make_shared(root); } } // anon namespace static WatcherRegistry reg("eden", detectEden, 100 /* prefer eden above others */); } // watchman namespace watchman-4.9.0/watcher/fsevents.cpp000066400000000000000000000506661314236077500173510ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include #include #include #include #include "watchman.h" #include "InMemoryView.h" #include "Pipe.h" #if HAVE_FSEVENTS // The FSEventStreamSetExclusionPaths API has a limit of 8 items. // If that limit is exceeded, it will fail. #define MAX_EXCLUSIONS size_t(8) struct watchman_fsevent { w_string path; FSEventStreamEventFlags flags; watchman_fsevent(w_string&& path, FSEventStreamEventFlags flags) : path(std::move(path)), flags(flags) {} }; struct fse_stream { FSEventStreamRef stream{nullptr}; std::shared_ptr root; FSEventStreamEventId last_good{0}; FSEventStreamEventId since{0}; bool lost_sync{false}; bool inject_drop{false}; bool event_id_wrapped{false}; CFUUIDRef uuid; fse_stream(const std::shared_ptr& root, FSEventStreamEventId since) : root(root), since(since) {} ~fse_stream(); }; struct FSEventsWatcher : public Watcher { watchman::Pipe fse_pipe; std::condition_variable fse_cond; watchman::Synchronized, std::mutex> items_; struct fse_stream* stream{nullptr}; bool attempt_resync_on_drop{false}; explicit FSEventsWatcher(w_root_t* root); bool start(const std::shared_ptr& root) override; std::unique_ptr startWatchDir( const std::shared_ptr& root, struct watchman_dir* dir, struct timeval now, const char* path) override; bool consumeNotify( const std::shared_ptr& root, PendingCollection::LockedPtr& coll) override; bool waitNotify(int timeoutms) override; void signalThreads() override; void FSEventsThread(const std::shared_ptr& root); }; static const struct flag_map kflags[] = { {kFSEventStreamEventFlagMustScanSubDirs, "MustScanSubDirs"}, {kFSEventStreamEventFlagUserDropped, "UserDropped"}, {kFSEventStreamEventFlagKernelDropped, "KernelDropped"}, {kFSEventStreamEventFlagEventIdsWrapped, "EventIdsWrapped"}, {kFSEventStreamEventFlagHistoryDone, "HistoryDone"}, {kFSEventStreamEventFlagRootChanged, "RootChanged"}, {kFSEventStreamEventFlagMount, "Mount"}, {kFSEventStreamEventFlagUnmount, "Unmount"}, {kFSEventStreamEventFlagItemCreated, "ItemCreated"}, {kFSEventStreamEventFlagItemRemoved, "ItemRemoved"}, {kFSEventStreamEventFlagItemInodeMetaMod, "InodeMetaMod"}, {kFSEventStreamEventFlagItemRenamed, "ItemRenamed"}, {kFSEventStreamEventFlagItemModified, "ItemModified"}, {kFSEventStreamEventFlagItemFinderInfoMod, "FinderInfoMod"}, {kFSEventStreamEventFlagItemChangeOwner, "ItemChangeOwner"}, {kFSEventStreamEventFlagItemXattrMod, "ItemXattrMod"}, {kFSEventStreamEventFlagItemIsFile, "ItemIsFile"}, {kFSEventStreamEventFlagItemIsDir, "ItemIsDir"}, {kFSEventStreamEventFlagItemIsSymlink, "ItemIsSymlink"}, {0, nullptr}, }; static struct fse_stream* fse_stream_make( const std::shared_ptr& root, FSEventStreamEventId since, w_string& failure_reason); std::shared_ptr watcherFromRoot( const std::shared_ptr& root) { auto view = std::dynamic_pointer_cast(root->view()); if (!view) { return nullptr; } return std::dynamic_pointer_cast(view->getWatcher()); } /** Generate a perf event for the drop */ static void log_drop_event( const std::shared_ptr& root, bool isKernel) { w_perf_t sample(isKernel ? "KernelDropped" : "UserDropped"); sample.add_root_meta(root); sample.finish(); sample.force_log(); sample.log(); } static void fse_callback( ConstFSEventStreamRef, void* clientCallBackInfo, size_t numEvents, void* eventPaths, const FSEventStreamEventFlags eventFlags[], const FSEventStreamEventId eventIds[]) { size_t i; auto paths = (char**)eventPaths; auto stream = (fse_stream *)clientCallBackInfo; auto root = stream->root; std::deque items; auto watcher = watcherFromRoot(root); if (!stream->lost_sync) { // This is to facilitate testing via debug-fsevents-inject-drop. if (stream->inject_drop) { stream->lost_sync = true; log_drop_event(root, false); goto do_resync; } // Pre-scan to test whether we lost sync. The intent is to be able to skip // processing the events from the point at which we lost sync, so we have // to check this before we start allocating events for the consumer. for (i = 0; i < numEvents; i++) { if ((eventFlags[i] & (kFSEventStreamEventFlagUserDropped | kFSEventStreamEventFlagKernelDropped)) != 0) { // We don't ever need to clear lost_sync as the code below will either // set up a new stream instance with it cleared, or will recrawl and // set up a whole new state for the recrawled instance. stream->lost_sync = true; log_drop_event(root, eventFlags[i] & kFSEventStreamEventFlagKernelDropped); if (watcher->attempt_resync_on_drop) { // fseventsd has a reliable journal so we can attempt to resync. do_resync: if (stream->event_id_wrapped) { w_log(W_LOG_ERR, "fsevents lost sync and the event_ids wrapped, so " "we have no choice but to do a full recrawl\n"); // Allow the Dropped event to propagate and trigger a recrawl goto propagate; } if (watcher->stream == stream) { // We are the active stream for this watch which means that it // is safe for us to proceed with changing watcher->stream. // Attempt to set up a new stream to resync from the last-good // event. If successful, that will replace the current stream. // If we fail, then we allow the UserDropped event to propagate // to the consumer thread which has existing logic to schedule // a recrawl. w_string failure_reason; struct fse_stream *replacement = fse_stream_make(root, stream->last_good, failure_reason); if (!replacement) { w_log(W_LOG_ERR, "Failed to rebuild fsevent stream (%s) while trying to " "resync, falling back to a regular recrawl\n", failure_reason.c_str()); // Allow the UserDropped event to propagate and trigger a recrawl goto propagate; } if (!FSEventStreamStart(replacement->stream)) { w_log(W_LOG_ERR, "FSEventStreamStart failed while trying to " "resync, falling back to a regular recrawl\n"); // Allow the UserDropped event to propagate and trigger a recrawl goto propagate; } w_log(W_LOG_ERR, "Lost sync, so resync from last_good event %llu\n", stream->last_good); // mark the replacement as the winner watcher->stream = replacement; // And tear ourselves down delete stream; // And we're done. return; } } break; } } } else if (watcher->attempt_resync_on_drop) { // This stream has already lost sync and our policy is to resync // for ourselves. This is most likely a spurious callback triggered // after we'd taken action above. We just ignore further events // on this particular stream and let the other stuff kick in. return; } propagate: for (i = 0; i < numEvents; i++) { uint32_t len; const char *path = paths[i]; if (eventFlags[i] & kFSEventStreamEventFlagHistoryDone) { // The docs say to ignore this event; it's just a marker informing // us that a resync completed. Take this opportunity to log how // many events were replayed to catch up. w_log(W_LOG_ERR, "Historical resync completed at event id %llu (caught " "up on %llu events)\n", eventIds[i], eventIds[i] - stream->since); continue; } if (eventFlags[i] & kFSEventStreamEventFlagEventIdsWrapped) { stream->event_id_wrapped = true; } len = strlen(path); while (path[len-1] == '/') { len--; } if (root->ignore.isIgnored(path, len)) { continue; } items.emplace_back(w_string(path, len), eventFlags[i]); if (!stream->lost_sync) { stream->last_good = eventIds[i]; } } if (!items.empty()) { auto wlock = watcher->items_.wlock(); std::move(items.begin(), items.end(), std::back_inserter(*wlock)); watcher->fse_cond.notify_one(); } } static void fse_pipe_callback(CFFileDescriptorRef, CFOptionFlags, void*) { w_log(W_LOG_DBG, "pipe signalled\n"); CFRunLoopStop(CFRunLoopGetCurrent()); } fse_stream::~fse_stream() { if (stream) { FSEventStreamStop(stream); FSEventStreamInvalidate(stream); FSEventStreamRelease(stream); } if (uuid) { CFRelease(uuid); } } static fse_stream* fse_stream_make( const std::shared_ptr& root, FSEventStreamEventId since, w_string& failure_reason) { FSEventStreamContext ctx; CFMutableArrayRef parray = nullptr; CFStringRef cpath = nullptr; double latency; struct stat st; auto watcher = watcherFromRoot(root); struct fse_stream* fse_stream = new struct fse_stream(root, since); // Each device has an optional journal maintained by fseventsd that keeps // track of the change events. The journal may not be available if the // filesystem was mounted read-only. The journal has an associated UUID // to track the version of the data. In some cases the journal can become // invalidated and it will have a new UUID generated. This can happen // if the EventId rolls over. // We need to lookup up the UUID for the associated path and use that to // help decide whether we can use a value of `since` other than SinceNow. if (stat(root->root_path.c_str(), &st)) { failure_reason = w_string::printf( "failed to stat(%s): %s\n", root->root_path.c_str(), strerror(errno)); goto fail; } // Obtain the UUID for the device associated with the root fse_stream->uuid = FSEventsCopyUUIDForDevice(st.st_dev); if (since != kFSEventStreamEventIdSinceNow) { CFUUIDBytes a, b; if (!fse_stream->uuid) { // If there is no UUID available and we want to use an event offset, // we fail: a nullptr UUID means that the journal is not available. failure_reason = w_string::printf( "fsevents journal is not available for dev_t=%d\n", st.st_dev); goto fail; } // Compare the UUID with that of the current stream if (!watcher->stream->uuid) { failure_reason = w_string( "fsevents journal was not available for prior stream", W_STRING_UNICODE); goto fail; } a = CFUUIDGetUUIDBytes(fse_stream->uuid); b = CFUUIDGetUUIDBytes(watcher->stream->uuid); if (memcmp(&a, &b, sizeof(a)) != 0) { failure_reason = w_string("fsevents journal UUID is different", W_STRING_UNICODE); goto fail; } } memset(&ctx, 0, sizeof(ctx)); ctx.info = fse_stream; parray = CFArrayCreateMutable(nullptr, 0, &kCFTypeArrayCallBacks); if (!parray) { failure_reason = w_string("CFArrayCreateMutable failed", W_STRING_UNICODE); goto fail; } cpath = CFStringCreateWithBytes( nullptr, (const UInt8*)root->root_path.data(), root->root_path.size(), kCFStringEncodingUTF8, false); if (!cpath) { failure_reason = w_string("CFStringCreateWithBytes failed", W_STRING_UNICODE); goto fail; } CFArrayAppendValue(parray, cpath); latency = root->config.getDouble("fsevents_latency", 0.01), w_log( W_LOG_DBG, "FSEventStreamCreate for path %s with latency %f seconds\n", root->root_path.c_str(), latency); fse_stream->stream = FSEventStreamCreate( nullptr, fse_callback, &ctx, parray, since, latency, kFSEventStreamCreateFlagNoDefer | kFSEventStreamCreateFlagWatchRoot | kFSEventStreamCreateFlagFileEvents); if (!fse_stream->stream) { failure_reason = w_string("FSEventStreamCreate failed", W_STRING_UNICODE); goto fail; } FSEventStreamScheduleWithRunLoop(fse_stream->stream, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode); #ifdef HAVE_FSEVENTSTREAMSETEXCLUSIONPATHS if (!root->ignore.dirs_vec.empty() && root->config.getBool("_use_fsevents_exclusions", true)) { CFMutableArrayRef ignarray; size_t i, nitems = std::min(root->ignore.dirs_vec.size(), MAX_EXCLUSIONS); ignarray = CFArrayCreateMutable(nullptr, 0, &kCFTypeArrayCallBacks); if (!ignarray) { failure_reason = w_string("CFArrayCreateMutable failed", W_STRING_UNICODE); goto fail; } for (i = 0; i < nitems; ++i) { const auto& path = root->ignore.dirs_vec[i]; CFStringRef ignpath; ignpath = CFStringCreateWithBytes( nullptr, (const UInt8*)path.data(), path.size(), kCFStringEncodingUTF8, false); if (!ignpath) { failure_reason = w_string("CFStringCreateWithBytes failed", W_STRING_UNICODE); CFRelease(ignarray); goto fail; } CFArrayAppendValue(ignarray, ignpath); CFRelease(ignpath); } if (!FSEventStreamSetExclusionPaths(fse_stream->stream, ignarray)) { failure_reason = w_string("FSEventStreamSetExclusionPaths failed", W_STRING_UNICODE); CFRelease(ignarray); goto fail; } CFRelease(ignarray); } #endif out: if (parray) { CFRelease(parray); } if (cpath) { CFRelease(cpath); } return fse_stream; fail: delete fse_stream; fse_stream = nullptr; goto out; } void FSEventsWatcher::FSEventsThread(const std::shared_ptr& root) { CFFileDescriptorRef fdref; CFFileDescriptorContext fdctx; w_set_thread_name("fsevents %s", root->root_path.c_str()); { // Block until fsevents_root_start is waiting for our initialization auto wlock = items_.wlock(); attempt_resync_on_drop = root->config.getBool("fsevents_try_resync", true); memset(&fdctx, 0, sizeof(fdctx)); fdctx.info = root.get(); fdref = CFFileDescriptorCreate( nullptr, fse_pipe.read.fd(), true, fse_pipe_callback, &fdctx); CFFileDescriptorEnableCallBacks(fdref, kCFFileDescriptorReadCallBack); { CFRunLoopSourceRef fdsrc; fdsrc = CFFileDescriptorCreateRunLoopSource(nullptr, fdref, 0); if (!fdsrc) { root->failure_reason = w_string_new_typed( "CFFileDescriptorCreateRunLoopSource failed", W_STRING_UNICODE); goto done; } CFRunLoopAddSource(CFRunLoopGetCurrent(), fdsrc, kCFRunLoopDefaultMode); CFRelease(fdsrc); } stream = fse_stream_make( root, kFSEventStreamEventIdSinceNow, root->failure_reason); if (!stream) { goto done; } if (!FSEventStreamStart(stream->stream)) { root->failure_reason = w_string::printf( "FSEventStreamStart failed, look at your log file %s for " "lines mentioning FSEvents and see %s#fsevents for more information\n", log_name, cfg_get_trouble_url()); goto done; } // Signal to fsevents_root_start that we're done initializing fse_cond.notify_one(); } // Process the events stream until we get signalled to quit CFRunLoopRun(); done: if (stream) { delete stream; } if (fdref) { CFRelease(fdref); } w_log(W_LOG_DBG, "fse_thread done\n"); } bool FSEventsWatcher::consumeNotify( const std::shared_ptr& root, PendingCollection::LockedPtr& coll) { struct timeval now; bool recurse; char flags_label[128]; std::deque items; { auto wlock = items_.wlock(); std::swap(items, *wlock); } gettimeofday(&now, nullptr); for (auto& item : items) { w_expand_flags(kflags, item.flags, flags_label, sizeof(flags_label)); w_log( W_LOG_DBG, "fsevents: got %s 0x%" PRIx32 " %s\n", item.path.c_str(), item.flags, flags_label); if (item.flags & kFSEventStreamEventFlagUserDropped) { root->scheduleRecrawl("kFSEventStreamEventFlagUserDropped"); break; } if (item.flags & kFSEventStreamEventFlagKernelDropped) { root->scheduleRecrawl("kFSEventStreamEventFlagKernelDropped"); break; } if (item.flags & kFSEventStreamEventFlagUnmount) { w_log( W_LOG_ERR, "kFSEventStreamEventFlagUnmount %s, cancel watch\n", item.path.c_str()); root->cancel(); break; } if (item.flags & kFSEventStreamEventFlagRootChanged) { w_log( W_LOG_ERR, "kFSEventStreamEventFlagRootChanged %s, cancel watch\n", item.path.c_str()); root->cancel(); break; } recurse = (item.flags & (kFSEventStreamEventFlagMustScanSubDirs | kFSEventStreamEventFlagItemRenamed)) ? true : false; coll->add( item.path, now, W_PENDING_VIA_NOTIFY | (recurse ? W_PENDING_RECURSIVE : 0)); } return !items.empty(); } FSEventsWatcher::FSEventsWatcher(w_root_t*) : Watcher( "fsevents", WATCHER_HAS_PER_FILE_NOTIFICATIONS | WATCHER_COALESCED_RENAME) { } void FSEventsWatcher::signalThreads() { write(fse_pipe.write.fd(), "X", 1); } bool FSEventsWatcher::start(const std::shared_ptr& root) { // Spin up the fsevents processing thread; it owns a ref on the root auto self = std::dynamic_pointer_cast(shared_from_this()); try { // Acquire the mutex so thread initialization waits until we release it auto wlock = items_.wlock(); std::thread thread([self, root]() { try { self->FSEventsThread(root); } catch (const std::exception& e) { watchman::log(watchman::ERR, "uncaught exception: ", e.what()); root->cancel(); } // Ensure that we signal the condition variable before we // finish this thread. That ensures that don't get stuck // waiting in FSEventsWatcher::start if something unexpected happens. self->fse_cond.notify_one(); }); // We have to detach because the readChangesThread may wind up // being the last thread to reference the watcher state and // cannot join itself. thread.detach(); // Allow thread init to proceed; wait for its signal fse_cond.wait(wlock.getUniqueLock()); if (root->failure_reason) { w_log( W_LOG_ERR, "failed to start fsevents thread: %s\n", root->failure_reason.c_str()); return false; } return true; } catch (const std::exception& e) { watchman::log( watchman::ERR, "failed to start fsevents thread: ", e.what(), "\n"); return false; } } bool FSEventsWatcher::waitNotify(int timeoutms) { auto wlock = items_.wlock(); fse_cond.wait_for( wlock.getUniqueLock(), std::chrono::milliseconds(timeoutms)); return !wlock->empty(); } std::unique_ptr FSEventsWatcher::startWatchDir( const std::shared_ptr&, struct watchman_dir*, struct timeval, const char* path) { return w_dir_open(path); } static RegisterWatcher reg("fsevents"); // A helper command to facilitate testing that we can successfully // resync the stream. static void cmd_debug_fsevents_inject_drop( struct watchman_client* client, const json_ref& args) { FSEventStreamEventId last_good; /* resolve the root */ if (json_array_size(args) != 2) { send_error_response( client, "wrong number of arguments for 'debug-fsevents-inject-drop'"); return; } auto root = resolve_root_or_err(client, args, 1, false); if (!root) { return; } auto watcher = watcherFromRoot(root); if (!watcher) { send_error_response(client, "root is not using the fsevents watcher"); return; } if (!watcher->attempt_resync_on_drop) { send_error_response(client, "fsevents_try_resync is not enabled"); return; } { auto wlock = watcher->items_.wlock(); last_good = watcher->stream->last_good; watcher->stream->inject_drop = true; } auto resp = make_response(); resp.set("last_good", json_integer(last_good)); send_and_dispose_response(client, std::move(resp)); } W_CMD_REG("debug-fsevents-inject-drop", cmd_debug_fsevents_inject_drop, CMD_DAEMON, w_cmd_realpath_root); #endif // HAVE_FSEVENTS /* vim:ts=2:sw=2:et: */ watchman-4.9.0/watcher/inotify.cpp000066400000000000000000000266261314236077500171740ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #include "InMemoryView.h" #include "FileDescriptor.h" #include "Pipe.h" #include "watchman_error_category.h" #ifdef HAVE_INOTIFY_INIT using watchman::FileDescriptor; using watchman::Pipe; using watchman::inotify_category; #ifndef IN_EXCL_UNLINK /* defined in but we can't include that without * breaking userspace */ # define WATCHMAN_IN_EXCL_UNLINK 0x04000000 #else # define WATCHMAN_IN_EXCL_UNLINK IN_EXCL_UNLINK #endif #define WATCHMAN_INOTIFY_MASK \ IN_ATTRIB | IN_CREATE | IN_DELETE | \ IN_DELETE_SELF | IN_MODIFY | IN_MOVE_SELF | IN_MOVED_FROM | \ IN_MOVED_TO | IN_DONT_FOLLOW | IN_ONLYDIR | WATCHMAN_IN_EXCL_UNLINK static const struct flag_map inflags[] = { {IN_ACCESS, "IN_ACCESS"}, {IN_MODIFY, "IN_MODIFY"}, {IN_ATTRIB, "IN_ATTRIB"}, {IN_CLOSE_WRITE, "IN_CLOSE_WRITE"}, {IN_CLOSE_NOWRITE, "IN_CLOSE_NOWRITE"}, {IN_OPEN, "IN_OPEN"}, {IN_MOVED_FROM, "IN_MOVED_FROM"}, {IN_MOVED_TO, "IN_MOVED_TO"}, {IN_CREATE, "IN_CREATE"}, {IN_DELETE, "IN_DELETE"}, {IN_DELETE_SELF, "IN_DELETE_SELF"}, {IN_MOVE_SELF, "IN_MOVE_SELF"}, {IN_UNMOUNT, "IN_UNMOUNT"}, {IN_Q_OVERFLOW, "IN_Q_OVERFLOW"}, {IN_IGNORED, "IN_IGNORED"}, {IN_ISDIR, "IN_ISDIR"}, {0, nullptr}, }; struct pending_move { time_t created; w_string name; pending_move(time_t created, const w_string& name) : created(created), name(name) {} }; struct InotifyWatcher : public Watcher { /* we use one inotify instance per watched root dir */ FileDescriptor infd; Pipe terminatePipe_; struct maps { /* map of active watch descriptor to name of the corresponding dir */ std::unordered_map wd_to_name; /* map of inotify cookie to corresponding name */ std::unordered_map move_map; }; watchman::Synchronized maps; // Make the buffer big enough for 16k entries, which // happens to be the default fs.inotify.max_queued_events char ibuf [WATCHMAN_BATCH_LIMIT * (sizeof(struct inotify_event) + (NAME_MAX + 1))]; explicit InotifyWatcher(w_root_t* root); std::unique_ptr startWatchDir( const std::shared_ptr& root, struct watchman_dir* dir, struct timeval now, const char* path) override; bool consumeNotify( const std::shared_ptr& root, PendingCollection::LockedPtr& coll) override; bool waitNotify(int timeoutms) override; void process_inotify_event( const std::shared_ptr& root, PendingCollection::LockedPtr& coll, struct inotify_event* ine, struct timeval now); void signalThreads() override; }; InotifyWatcher::InotifyWatcher(w_root_t* root) : Watcher("inotify", WATCHER_HAS_PER_FILE_NOTIFICATIONS) { #ifdef HAVE_INOTIFY_INIT1 infd = FileDescriptor(inotify_init1(IN_CLOEXEC)); #else infd = FileDescriptor(inotify_init()); #endif if (infd.fd() == -1) { throw std::system_error(errno, inotify_category(), "inotify_init"); } infd.setCloExec(); { auto wlock = maps.wlock(); wlock->wd_to_name.reserve( root->config.getInt(CFG_HINT_NUM_DIRS, HINT_NUM_DIRS)); } } std::unique_ptr InotifyWatcher::startWatchDir( const std::shared_ptr&, struct watchman_dir*, struct timeval now, const char* path) { int newwd, err; // Carry out our very strict opendir first to ensure that we're not // traversing symlinks in the context of this root auto osdir = w_dir_open(path); w_string dir_name(path, W_STRING_BYTE); // The directory might be different since the last time we looked at it, so // call inotify_add_watch unconditionally. newwd = inotify_add_watch(infd.fd(), path, WATCHMAN_INOTIFY_MASK); if (newwd == -1) { err = errno; if (errno == ENOSPC || errno == ENOMEM) { // Limits exceeded, no recovery from our perspective set_poison_state( dir_name, now, "inotify-add-watch", std::error_code(errno, inotify_category())); } throw std::system_error(err, inotify_category(), "inotify_add_watch"); } // record mapping { auto wlock = maps.wlock(); wlock->wd_to_name[newwd] = dir_name; } w_log(W_LOG_DBG, "adding %d -> %s mapping\n", newwd, path); return osdir; } void InotifyWatcher::process_inotify_event( const std::shared_ptr& root, PendingCollection::LockedPtr& coll, struct inotify_event* ine, struct timeval now) { char flags_label[128]; w_expand_flags(inflags, ine->mask, flags_label, sizeof(flags_label)); w_log(W_LOG_DBG, "notify: wd=%d mask=0x%x %s %s\n", ine->wd, ine->mask, flags_label, ine->len > 0 ? ine->name : ""); if (ine->wd == -1 && (ine->mask & IN_Q_OVERFLOW)) { /* we missed something, will need to re-crawl */ root->scheduleRecrawl("IN_Q_OVERFLOW"); } else if (ine->wd != -1) { w_string_t* name = nullptr; char buf[WATCHMAN_NAME_MAX]; int pending_flags = W_PENDING_VIA_NOTIFY; w_string dir_name; { auto rlock = maps.rlock(); auto it = rlock->wd_to_name.find(ine->wd); if (it != rlock->wd_to_name.end()) { dir_name = it->second; } } if (dir_name) { if (ine->len > 0) { snprintf( buf, sizeof(buf), "%.*s/%s", int(dir_name.size()), dir_name.data(), ine->name); name = w_string_new_typed(buf, W_STRING_BYTE); } else { name = dir_name; w_string_addref(name); } } if (ine->len > 0 && (ine->mask & (IN_MOVED_FROM|IN_ISDIR)) == (IN_MOVED_FROM|IN_ISDIR)) { // record this as a pending move, so that we can automatically // watch the target when we get the other side of it. { auto wlock = maps.wlock(); wlock->move_map.emplace(ine->cookie, pending_move(now.tv_sec, name)); } w_log(W_LOG_DBG, "recording move_from %" PRIx32 " %s\n", ine->cookie, name->buf); } if (ine->len > 0 && (ine->mask & (IN_MOVED_TO | IN_ISDIR)) == (IN_MOVED_FROM | IN_ISDIR)) { auto wlock = maps.wlock(); auto it = wlock->move_map.find(ine->cookie); if (it != wlock->move_map.end()) { auto& old = it->second; int wd = inotify_add_watch(infd.fd(), name->buf, WATCHMAN_INOTIFY_MASK); if (wd == -1) { if (errno == ENOSPC || errno == ENOMEM) { // Limits exceeded, no recovery from our perspective set_poison_state( name, now, "inotify-add-watch", std::error_code(errno, inotify_category())); } else { watchman::log( watchman::DBG, "add_watch: ", name->buf, " ", inotify_category().message(errno), "\n"); } } else { w_log(W_LOG_DBG, "moved %s -> %s\n", old.name.c_str(), name->buf); wlock->wd_to_name[wd] = name; } } else { w_log( W_LOG_DBG, "move: cookie=%" PRIx32 " not found in move map %s\n", ine->cookie, name->buf); } } if (dir_name) { if ((ine->mask & (IN_UNMOUNT|IN_IGNORED|IN_DELETE_SELF|IN_MOVE_SELF))) { w_string_t *pname; if (w_string_equal(root->root_path, name)) { w_log(W_LOG_ERR, "root dir %s has been (re)moved, canceling watch\n", root->root_path.c_str()); w_string_delref(name); root->cancel(); return; } // We need to examine the parent and crawl down pname = w_string_dirname(name); w_log(W_LOG_DBG, "mask=%x, focus on parent: %.*s\n", ine->mask, pname->len, pname->buf); w_string_delref(name); name = pname; pending_flags |= W_PENDING_RECURSIVE; } if (ine->mask & (IN_CREATE|IN_DELETE)) { pending_flags |= W_PENDING_RECURSIVE; } w_log(W_LOG_DBG, "add_pending for inotify mask=%x %.*s\n", ine->mask, name->len, name->buf); coll->add(name, now, pending_flags); w_string_delref(name); // The kernel removed the wd -> name mapping, so let's update // our state here also if ((ine->mask & IN_IGNORED) != 0) { w_log( W_LOG_DBG, "mask=%x: remove watch %d %.*s\n", ine->mask, ine->wd, int(dir_name.size()), dir_name.data()); auto wlock = maps.wlock(); wlock->wd_to_name.erase(ine->wd); } } else if ((ine->mask & (IN_MOVE_SELF|IN_IGNORED)) == 0) { // If we can't resolve the dir, and this isn't notification // that it has gone away, then we want to recrawl to fix // up our state. w_log(W_LOG_ERR, "wanted dir %d for mask %x but not found %.*s\n", ine->wd, ine->mask, ine->len, ine->name); root->scheduleRecrawl("dir missing from internal state"); } } } bool InotifyWatcher::consumeNotify( const std::shared_ptr& root, PendingCollection::LockedPtr& coll) { struct inotify_event *ine; char *iptr; int n; struct timeval now; n = read(infd.fd(), &ibuf, sizeof(ibuf)); if (n == -1) { if (errno == EINTR) { return false; } w_log( W_LOG_FATAL, "read(%d, %zu): error %s\n", infd.fd(), sizeof(ibuf), strerror(errno)); } w_log(W_LOG_DBG, "inotify read: returned %d.\n", n); gettimeofday(&now, nullptr); for (iptr = ibuf; iptr < ibuf + n; iptr = iptr + sizeof(*ine) + ine->len) { ine = (struct inotify_event*)iptr; process_inotify_event(root, coll, ine, now); } // It is possible that we can accumulate a set of pending_move // structs in move_map. This happens when a directory is moved // outside of the watched tree; we get the MOVE_FROM but never // get the MOVE_TO with the same cookie. To avoid leaking these, // we'll age out the move_map after processing a full set of // inotify events. We age out rather than delete all because // the MOVE_TO may yet be waiting to read in another go around. // We allow a somewhat arbitrary but practical grace period to // observe the corresponding MOVE_TO. { auto wlock = maps.wlock(); if (!wlock->move_map.empty()) { auto it = wlock->move_map.begin(); while (it != wlock->move_map.end()) { auto& pending = it->second; if (now.tv_sec - pending.created > 5 /* seconds */) { w_log( W_LOG_DBG, "deleting pending move %s (moved outside of watch?)\n", pending.name.c_str()); it = wlock->move_map.erase(it); } else { ++it; } } } } return true; } bool InotifyWatcher::waitNotify(int timeoutms) { int n; std::array pfd; pfd[0].fd = infd.fd(); pfd[0].events = POLLIN; pfd[1].fd = terminatePipe_.read.fd(); pfd[1].events = POLLIN; n = poll(pfd.data(), pfd.size(), timeoutms); if (n > 0) { if (pfd[1].revents) { // We were signalled via signalThreads return false; } return pfd[0].revents != 0; } return false; } void InotifyWatcher::signalThreads() { ignore_result(write(terminatePipe_.write.fd(), "X", 1)); } static RegisterWatcher reg("inotify"); #endif // HAVE_INOTIFY_INIT /* vim:ts=2:sw=2:et: */ watchman-4.9.0/watcher/kqueue.cpp000066400000000000000000000200551314236077500170000ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #include "InMemoryView.h" #include "FileDescriptor.h" #include "Pipe.h" #include #ifdef HAVE_KQUEUE #if !defined(O_EVTONLY) # define O_EVTONLY O_RDONLY #endif using watchman::FileDescriptor; using watchman::Pipe; struct KQueueWatcher : public Watcher { FileDescriptor kq_fd; Pipe terminatePipe_; struct maps { std::unordered_map name_to_fd; /* map of active watch descriptor to name of the corresponding item */ std::unordered_map fd_to_name; explicit maps(json_int_t sizeHint) { name_to_fd.reserve(sizeHint); fd_to_name.reserve(sizeHint); } }; watchman::Synchronized maps_; struct kevent keventbuf[WATCHMAN_BATCH_LIMIT]; explicit KQueueWatcher(w_root_t* root); std::unique_ptr startWatchDir( const std::shared_ptr& root, struct watchman_dir* dir, struct timeval now, const char* path) override; bool startWatchFile(struct watchman_file* file) override; bool consumeNotify( const std::shared_ptr& root, PendingCollection::LockedPtr& coll) override; bool waitNotify(int timeoutms) override; void signalThreads() override; }; static const struct flag_map kflags[] = { {NOTE_DELETE, "NOTE_DELETE"}, {NOTE_WRITE, "NOTE_WRITE"}, {NOTE_EXTEND, "NOTE_EXTEND"}, {NOTE_ATTRIB, "NOTE_ATTRIB"}, {NOTE_LINK, "NOTE_LINK"}, {NOTE_RENAME, "NOTE_RENAME"}, {NOTE_REVOKE, "NOTE_REVOKE"}, {0, nullptr}, }; KQueueWatcher::KQueueWatcher(w_root_t* root) : Watcher("kqueue", 0), maps_(maps(root->config.getInt(CFG_HINT_NUM_DIRS, HINT_NUM_DIRS))) { kq_fd = FileDescriptor(kqueue(), "kqueue"); kq_fd.setCloExec(); } bool KQueueWatcher::startWatchFile(struct watchman_file* file) { struct kevent k; auto full_name = w_dir_path_cat_str(file->parent, file->getName()); { auto rlock = maps_.rlock(); if (rlock->name_to_fd.find(full_name) != rlock->name_to_fd.end()) { // Already watching it return true; } } w_log(W_LOG_DBG, "watch_file(%s)\n", full_name.c_str()); FileDescriptor fdHolder(open(full_name.c_str(), O_EVTONLY | O_CLOEXEC)); auto rawFd = fdHolder.fd(); if (rawFd == -1) { watchman::log( watchman::ERR, "failed to open ", full_name, ", O_EVTONLY: ", strerror(errno), "\n"); return false; } memset(&k, 0, sizeof(k)); EV_SET( &k, rawFd, EVFILT_VNODE, EV_ADD | EV_CLEAR, NOTE_WRITE | NOTE_DELETE | NOTE_EXTEND | NOTE_RENAME | NOTE_ATTRIB, 0, (w_string_t*)full_name); { auto wlock = maps_.wlock(); wlock->name_to_fd[full_name] = std::move(fdHolder); wlock->fd_to_name[rawFd] = full_name; } if (kevent(kq_fd.fd(), &k, 1, nullptr, 0, 0)) { watchman::log( watchman::DBG, "kevent EV_ADD file ", full_name, " failed: ", full_name.c_str(), strerror(errno), "\n"); auto wlock = maps_.wlock(); wlock->name_to_fd.erase(full_name); wlock->fd_to_name.erase(rawFd); } else { watchman::log( watchman::DBG, "kevent file ", full_name, " -> ", rawFd, "\n"); } return true; } std::unique_ptr KQueueWatcher::startWatchDir( const std::shared_ptr& root, struct watchman_dir* dir, struct timeval, const char* path) { struct stat st, osdirst; struct kevent k; auto osdir = w_dir_open(path); FileDescriptor fdHolder(open(path, O_NOFOLLOW | O_EVTONLY | O_CLOEXEC)); auto rawFd = fdHolder.fd(); if (rawFd == -1) { // directory got deleted between opendir and open throw std::system_error( errno, std::generic_category(), std::string("open O_EVTONLY: ") + path); } if (fstat(rawFd, &st) == -1 || fstat(osdir->getFd(), &osdirst) == -1) { // whaaa? root->scheduleRecrawl("fstat failed"); throw std::system_error( errno, std::generic_category(), std::string("fstat failed for dir ") + path); } if (st.st_dev != osdirst.st_dev || st.st_ino != osdirst.st_ino) { // directory got replaced between opendir and open -- at this point its // parent's being watched, so we let filesystem events take care of it throw std::system_error( ENOTDIR, std::generic_category(), std::string("directory replaced between opendir and open: ") + path); } memset(&k, 0, sizeof(k)); auto dir_name = dir->getFullPath(); EV_SET( &k, rawFd, EVFILT_VNODE, EV_ADD | EV_CLEAR, NOTE_WRITE | NOTE_DELETE | NOTE_EXTEND | NOTE_RENAME, 0, SET_DIR_BIT((w_string_t*)dir_name)); // Our mapping needs to be visible before we add it to the queue, // otherwise we can get a wakeup and not know what it is { auto wlock = maps_.wlock(); wlock->name_to_fd[dir_name] = std::move(fdHolder); wlock->fd_to_name[rawFd] = dir_name; } if (kevent(kq_fd.fd(), &k, 1, nullptr, 0, 0)) { w_log(W_LOG_DBG, "kevent EV_ADD dir %s failed: %s", path, strerror(errno)); auto wlock = maps_.wlock(); wlock->name_to_fd.erase(dir_name); wlock->fd_to_name.erase(rawFd); } else { watchman::log(watchman::DBG, "kevent dir ", dir_name, " -> ", rawFd, "\n"); } return osdir; } bool KQueueWatcher::consumeNotify( const std::shared_ptr& root, PendingCollection::LockedPtr& coll) { int n; int i; struct timespec ts = { 0, 0 }; struct timeval now; errno = 0; n = kevent( kq_fd.fd(), nullptr, 0, keventbuf, sizeof(keventbuf) / sizeof(keventbuf[0]), &ts); w_log( W_LOG_DBG, "consume_kqueue: %s n=%d err=%s\n", root->root_path.c_str(), n, strerror(errno)); if (root->inner.cancelled) { return 0; } gettimeofday(&now, nullptr); for (i = 0; n > 0 && i < n; i++) { uint32_t fflags = keventbuf[i].fflags; bool is_dir = IS_DIR_BIT_SET(keventbuf[i].udata); char flags_label[128]; int fd = keventbuf[i].ident; w_expand_flags(kflags, fflags, flags_label, sizeof(flags_label)); auto wlock = maps_.wlock(); auto it = wlock->fd_to_name.find(fd); w_string path = it == wlock->fd_to_name.end() ? nullptr : it->second; if (!path) { // Was likely a buffered notification for something that we decided // to stop watching w_log(W_LOG_DBG, " KQ notif for fd=%d; flags=0x%x %s no ref for it in fd_to_name\n", fd, fflags, flags_label); continue; } w_log( W_LOG_DBG, " KQ fd=%d path %s [0x%x %s]\n", fd, path.data(), fflags, flags_label); if ((fflags & (NOTE_DELETE|NOTE_RENAME|NOTE_REVOKE))) { struct kevent k; if (w_string_equal(path, root->root_path)) { w_log( W_LOG_ERR, "root dir %s has been (re)moved [code 0x%x], canceling watch\n", root->root_path.c_str(), fflags); root->cancel(); return 0; } // Remove our watch bits memset(&k, 0, sizeof(k)); EV_SET(&k, fd, EVFILT_VNODE, EV_DELETE, 0, 0, nullptr); kevent(kq_fd.fd(), &k, 1, nullptr, 0, 0); wlock->name_to_fd.erase(path); wlock->fd_to_name.erase(fd); } coll->add( path, now, is_dir ? 0 : (W_PENDING_RECURSIVE | W_PENDING_VIA_NOTIFY)); } return n > 0; } bool KQueueWatcher::waitNotify(int timeoutms) { int n; std::array pfd; pfd[0].fd = kq_fd.fd(); pfd[0].events = POLLIN; pfd[1].fd = terminatePipe_.read.fd(); pfd[1].events = POLLIN; n = poll(pfd.data(), pfd.size(), timeoutms); if (n > 0) { if (pfd[1].revents) { // We were signalled via signalThreads return false; } return pfd[0].revents != 0; } return false; } void KQueueWatcher::signalThreads() { ignore_result(write(terminatePipe_.write.fd(), "X", 1)); } static RegisterWatcher reg( "kqueue", -1 /* last resort on OS X */); #endif // HAVE_KQUEUE /* vim:ts=2:sw=2:et: */ watchman-4.9.0/watcher/win32.cpp000066400000000000000000000273201314236077500164450ustar00rootroot00000000000000/* Copyright 2014-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #include "InMemoryView.h" #include "watchman_synchronized.h" #include #include #include #include #include #include #ifdef _WIN32 #define NETWORK_BUF_SIZE (64*1024) namespace { struct Item { w_string path; int flags; Item(w_string &&path, int flags) : path(std::move(path)), flags(flags) {} }; } struct WinWatcher : public Watcher { HANDLE ping{INVALID_HANDLE_VALUE}, olapEvent{INVALID_HANDLE_VALUE}; HANDLE dir_handle{INVALID_HANDLE_VALUE}; std::condition_variable cond; watchman::Synchronized, std::mutex> changedItems; explicit WinWatcher(w_root_t* root); ~WinWatcher(); std::unique_ptr startWatchDir( const std::shared_ptr& root, struct watchman_dir* dir, struct timeval now, const char* path) override; bool consumeNotify( const std::shared_ptr& root, PendingCollection::LockedPtr& coll) override; bool waitNotify(int timeoutms) override; bool start(const std::shared_ptr& root) override; void signalThreads() override; void readChangesThread(const std::shared_ptr& root); }; WinWatcher::WinWatcher(w_root_t* root) : Watcher("win32", WATCHER_HAS_PER_FILE_NOTIFICATIONS) { int err; auto wpath = root->root_path.piece().asWideUNC(); // Create an overlapped handle so that we can avoid blocking forever // in ReadDirectoryChangesW dir_handle = CreateFileW( wpath.c_str(), GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_DELETE | FILE_SHARE_WRITE, nullptr, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OVERLAPPED, nullptr); if (!dir_handle) { throw std::runtime_error( std::string("failed to open dir ") + root->root_path.c_str() + ": " + win32_strerror(GetLastError())); } ping = CreateEvent(nullptr, TRUE, FALSE, nullptr); if (!ping) { throw std::runtime_error( std::string("failed to create event: ") + win32_strerror(GetLastError())); } olapEvent = CreateEvent(nullptr, TRUE, FALSE, nullptr); if (!olapEvent) { throw std::runtime_error( std::string("failed to create event: ") + win32_strerror(GetLastError())); } } WinWatcher::~WinWatcher() { if (ping != INVALID_HANDLE_VALUE) { CloseHandle(ping); } if (olapEvent != INVALID_HANDLE_VALUE) { CloseHandle(olapEvent); } if (dir_handle != INVALID_HANDLE_VALUE) { CloseHandle(dir_handle); } } void WinWatcher::signalThreads() { SetEvent(ping); } void WinWatcher::readChangesThread(const std::shared_ptr& root) { DWORD size = WATCHMAN_BATCH_LIMIT * (sizeof(FILE_NOTIFY_INFORMATION) + 512); std::vector buf; DWORD err, filter; OVERLAPPED olap; BOOL initiate_read = true; HANDLE handles[2] = {olapEvent, ping}; DWORD bytes; w_set_thread_name("readchange %s", root->root_path.c_str()); watchman::log(watchman::DBG, "initializing\n"); // Artificial extra latency to impose around processing changes. // This is needed to avoid trying to access files and dirs too // soon after a change is noticed, as this can cause recursive // deletes to fail. auto extraLatency = root->config.getInt("win32_batch_latency_ms", 30); // Block until winmatch_root_st is waiting for our initialization { auto wlock = changedItems.wlock(); filter = FILE_NOTIFY_CHANGE_FILE_NAME | FILE_NOTIFY_CHANGE_DIR_NAME | FILE_NOTIFY_CHANGE_ATTRIBUTES | FILE_NOTIFY_CHANGE_SIZE | FILE_NOTIFY_CHANGE_LAST_WRITE; memset(&olap, 0, sizeof(olap)); olap.hEvent = olapEvent; buf.resize(size); if (!ReadDirectoryChangesW( dir_handle, &buf[0], size, TRUE, filter, nullptr, &olap, nullptr)) { err = GetLastError(); w_log( W_LOG_ERR, "ReadDirectoryChangesW: failed, cancel watch. %s\n", win32_strerror(err)); root->cancel(); return; } // Signal that we are done with init. We MUST do this AFTER our first // successful ReadDirectoryChangesW, otherwise there is a race condition // where we'll miss observing the cookie for a query that comes in // after we've crawled but before the watch is established. w_log(W_LOG_DBG, "ReadDirectoryChangesW signalling as init done\n"); cond.notify_one(); } initiate_read = false; std::list items; // The mutex must not be held when we enter the loop while (!root->inner.cancelled) { if (initiate_read) { if (!ReadDirectoryChangesW( dir_handle, &buf[0], size, TRUE, filter, nullptr, &olap, nullptr)) { err = GetLastError(); w_log(W_LOG_ERR, "ReadDirectoryChangesW: failed, cancel watch. %s\n", win32_strerror(err)); root->cancel(); break; } else { initiate_read = false; } } watchman::log(watchman::DBG, "waiting for change notifications\n"); DWORD status = WaitForMultipleObjects( 2, handles, FALSE, // We use a 10 second timeout by default until we start accumulating a // batch. Once we have a batch we prefer to add more to it than notify // immediately, so we introduce a 30ms latency. Without this artificial // latency we'll wake up and start trying to look at a directory that // may be in the process of being recursively deleted and that act can // block the recursive delete. items.empty() ? 10000 : extraLatency); watchman::log(watchman::DBG, "wait returned with status ", status, "\n"); if (status == WAIT_OBJECT_0) { bytes = 0; if (!GetOverlappedResult(dir_handle, &olap, &bytes, FALSE)) { err = GetLastError(); w_log( W_LOG_ERR, "overlapped ReadDirectoryChangesW(%s): 0x%x %s\n", root->root_path.c_str(), err, win32_strerror(err)); if (err == ERROR_INVALID_PARAMETER && size > NETWORK_BUF_SIZE) { // May be a network buffer related size issue; the docs say that // we can hit this when watching a UNC path. Let's downsize and // retry the read just one time w_log( W_LOG_ERR, "retrying watch for possible network location %s " "with smaller buffer\n", root->root_path.c_str()); size = NETWORK_BUF_SIZE; initiate_read = true; continue; } if (err == ERROR_NOTIFY_ENUM_DIR) { root->scheduleRecrawl("ERROR_NOTIFY_ENUM_DIR"); } else { w_log( W_LOG_ERR, "Cancelling watch for %s\n", root->root_path.c_str()); root->cancel(); break; } } else { PFILE_NOTIFY_INFORMATION not = (PFILE_NOTIFY_INFORMATION)buf.data(); while (true) { DWORD n_chars; // FileNameLength is in BYTES, but FileName is WCHAR n_chars = not->FileNameLength / sizeof(not->FileName[0]); w_string name(not->FileName, n_chars); auto full = w_string::pathCat({root->root_path, name}); if (!root->ignore.isIgnored(full.data(), full.size())) { // If we have a delete or rename-away it may be part of // a recursive tree remove or rename. In that situation // the notifications that we'll receive from the OS will // be from the leaves and bubble up to the root of the // delete/rename. We want to flag those paths for recursive // analysis so that we can prune children from the trie // that is built when we pass this to the pending list // later. We don't do that here in this thread because // we're trying to minimize latency in this context. items.emplace_back( std::move(full), (not->Action & (FILE_ACTION_REMOVED | FILE_ACTION_RENAMED_OLD_NAME)) != 0 ? W_PENDING_RECURSIVE : 0); } // Advance to next item if (not->NextEntryOffset == 0) { break; } not = (PFILE_NOTIFY_INFORMATION)(not->NextEntryOffset + (char*)not); } ResetEvent(olapEvent); initiate_read = true; } } else if (status == WAIT_OBJECT_0 + 1) { w_log(W_LOG_ERR, "signalled\n"); break; } else if (status == WAIT_TIMEOUT) { if (!items.empty()) { watchman::log(watchman::DBG, "timed out waiting for changes, and we have ", items.size(), " items; move and notify\n"); auto wlock = changedItems.wlock(); wlock->splice(wlock->end(), items); cond.notify_one(); } } else { w_log(W_LOG_ERR, "impossible wait status=%d\n", status); break; } } w_log(W_LOG_DBG, "done\n"); } bool WinWatcher::start(const std::shared_ptr& root) { int err; // Spin up the changes reading thread; it owns a ref on the root try { // Acquire the mutex so thread initialization waits until we release it auto wlock = changedItems.wlock(); watchman::log(watchman::DBG, "starting readChangesThread\n"); auto self = std::dynamic_pointer_cast(shared_from_this()); std::thread thread([self, root]() { try { self->readChangesThread(root); } catch (const std::exception& e) { watchman::log(watchman::ERR, "uncaught exception: ", e.what()); root->cancel(); } // Ensure that we signal the condition variable before we // finish this thread. That ensures that don't get stuck // waiting in WinWatcher::start if something unexpected happens. auto wlock = self->changedItems.wlock(); self->cond.notify_one(); }); // We have to detach because the readChangesThread may wind up // being the last thread to reference the watcher state and // cannot join itself. thread.detach(); // Allow thread init to proceed; wait for its signal if (cond.wait_for(wlock.getUniqueLock(), std::chrono::seconds(10)) == std::cv_status::timeout) { watchman::log( watchman::ERR, "timedout waiting for readChangesThread to start\n"); root->cancel(); return false; } if (root->failure_reason) { w_log( W_LOG_ERR, "failed to start readchanges thread: %s\n", root->failure_reason.c_str()); return false; } return true; } catch (const std::exception& e) { w_log(W_LOG_ERR, "failed to start readchanges thread: %s\n", e.what()); return false; } } std::unique_ptr WinWatcher::startWatchDir( const std::shared_ptr& root, struct watchman_dir* dir, struct timeval now, const char* path) { return w_dir_open(path); } bool WinWatcher::consumeNotify( const std::shared_ptr& root, PendingCollection::LockedPtr& coll) { std::list items; struct timeval now; { auto wlock = changedItems.wlock(); std::swap(items, *wlock); } gettimeofday(&now, nullptr); for (auto& item : items) { watchman::log(watchman::DBG, "readchanges: add pending ", item.path, " ", item.flags, "\n"); coll->add(item.path, now, W_PENDING_VIA_NOTIFY | item.flags); } return !items.empty(); } bool WinWatcher::waitNotify(int timeoutms) { auto wlock = changedItems.wlock(); cond.wait_for(wlock.getUniqueLock(), std::chrono::milliseconds(timeoutms)); return !wlock->empty(); } static RegisterWatcher reg("win32"); #endif // _WIN32 /* vim:ts=2:sw=2:et: */ watchman-4.9.0/watchman.h000066400000000000000000000056131314236077500153160ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #ifndef WATCHMAN_H #define WATCHMAN_H #include "watchman_system.h" #include "thirdparty/jansson/jansson.h" #include "watchman_hash.h" #include "watchman_ignore.h" #include "watchman_stream.h" #include "watchman_string.h" struct watchman_file; struct watchman_dir; struct watchman_root; struct watchman_pending_fs; struct watchman_trigger_command; typedef struct watchman_root w_root_t; #include "watchman_clockspec.h" #include "watchman_pending.h" #include "watchman_dir.h" #include "watchman_watcher.h" #include "watchman_opendir.h" #include "watchman_file.h" #define WATCHMAN_IO_BUF_SIZE 1048576 #define WATCHMAN_BATCH_LIMIT (16*1024) #include "watchman_root.h" #include "watchman_pdu.h" #include "watchman_perf.h" #include "watchman_query.h" #include "watchman_client.h" #include "watchman_cmd.h" #include "watchman_config.h" #include "watchman_trigger.h" // Returns the name of the filesystem for the specified path w_string w_fstype(const char *path); extern char *poisoned_reason; #ifndef _WIN32 static inline bool w_path_exists(const char *path) { return access(path, F_OK) == 0; } #else bool w_path_exists(const char *path); #endif /* We leverage the fact that our aligned pointers will never set the LSB of a * pointer value. We can use the LSB to indicate whether kqueue entries are * dirs or files */ #define SET_DIR_BIT(dir) ((void*)(((intptr_t)dir) | 0x1)) #define IS_DIR_BIT_SET(dir) ((((intptr_t)dir) & 0x1) == 0x1) #define DECODE_DIR(dir) ((void*)(((intptr_t)dir) & ~0x1)) bool w_is_stopping(void); void w_request_shutdown(void); #include "watchman_time.h" extern const char *watchman_tmp_dir; extern char *watchman_state_file; extern int dont_save_state; void w_state_shutdown(void); void w_state_save(void); bool w_state_load(void); bool w_root_save_state(json_ref& state); bool w_root_load_state(const json_ref& state); json_ref w_root_watch_list_to_json(void); #include "FileDescriptor.h" #ifdef __APPLE__ watchman::FileDescriptor w_get_listener_socket_from_launchd(); #endif void w_listener_prep_inetd(); bool w_start_listener(const char *socket_path); void w_check_my_sock(void); #include "watchman_getopt.h" #ifdef HAVE_SYS_SIGLIST # define w_strsignal(val) sys_siglist[(val)] #else # define w_strsignal(val) strsignal((val)) #endif const char *get_sock_name(void); #ifndef _WIN32 /** * Gets the group struct for the given group name. The return value may point * to a static area so it should be used immediately and not passed to free(3). * * Returns null on failure. */ const struct group *w_get_group(const char *group_name); #endif // ndef WIN32 void w_ioprio_set_low(void); void w_ioprio_set_normal(void); struct flag_map { uint32_t value; const char *label; }; void w_expand_flags(const struct flag_map *fmap, uint32_t flags, char *buf, size_t len); #endif /* vim:ts=2:sw=2:et: */ watchman-4.9.0/watchman_client.h000066400000000000000000000066301314236077500166540ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #pragma once #include #include #include #include "Logging.h" #include "watchman_synchronized.h" struct watchman_client_subscription; struct watchman_client_state_assertion { std::shared_ptr root; // Holds a ref on the root w_string name; long id; watchman_client_state_assertion( const std::shared_ptr& root, const w_string& name); }; struct watchman_client : public std::enable_shared_from_this { std::unique_ptr stm; std::unique_ptr ping; w_jbuffer_t reader, writer; bool client_mode{false}; bool client_is_owner{false}; enum w_pdu_type pdu_type; uint32_t capabilities; // The command currently being processed by dispatch_command json_ref current_command; w_perf_t* perf_sample{nullptr}; // Queue of things to send to the client. std::deque responses; // Logging Subscriptions std::shared_ptr debugSub; std::shared_ptr errorSub; watchman_client(); explicit watchman_client(std::unique_ptr&& stm); virtual ~watchman_client(); void enqueueResponse(json_ref&& resp, bool ping = true); }; struct watchman_user_client; struct watchman_client_subscription : public std::enable_shared_from_this { std::shared_ptr root; w_string name; /* whether this subscription is paused */ bool debug_paused = false; std::shared_ptr query; bool vcs_defer; uint32_t last_sub_tick; // map of statename => bool. If true, policy is drop, else defer std::unordered_map drop_or_defer; std::weak_ptr weakClient; explicit watchman_client_subscription( const std::shared_ptr& root, std::weak_ptr client); ~watchman_client_subscription(); void processSubscription(); std::shared_ptr lockClient(); json_ref buildSubscriptionResults( const std::shared_ptr& root, ClockSpec& position); private: ClockSpec runSubscriptionRules( watchman_user_client* client, const std::shared_ptr& root); void updateSubscriptionTicks(w_query_res* res); }; // Represents the server side session maintained for a client of // the watchman per-user process struct watchman_user_client : public watchman_client { /* map of subscription name => struct watchman_client_subscription */ std::unordered_map> subscriptions; /* map of unique id => watchman_client_state_assertion. * The values are owned by root::asserted_states */ std::unordered_map> states; long next_state_id{0}; // Subscriber to root::unilateralResponses std::unordered_map< std::shared_ptr, std::shared_ptr> unilateralSub; explicit watchman_user_client(std::unique_ptr&& stm); ~watchman_user_client() override; bool unsubByName(const w_string& name); }; extern watchman::Synchronized< std::unordered_set>> clients; void w_client_vacate_states(struct watchman_user_client *client); watchman-4.9.0/watchman_clockspec.h000066400000000000000000000043551314236077500173460ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #pragma once #include #include "watchman_synchronized.h" struct watchman_clock { uint32_t ticks; time_t timestamp; }; typedef struct watchman_clock w_clock_t; struct w_query_ctx; struct w_query_since; struct ClockPosition { uint32_t rootNumber{0}; uint32_t ticks{0}; ClockPosition() = default; ClockPosition(uint32_t rootNumber, uint32_t ticks) : rootNumber(rootNumber), ticks(ticks) {} w_string toClockString() const; }; enum w_clockspec_tag { w_cs_timestamp, w_cs_clock, w_cs_named_cursor }; struct ClockSpec { enum w_clockspec_tag tag; time_t timestamp; struct { uint64_t start_time; int pid; ClockPosition position; } clock; struct { w_string cursor; } named_cursor; // Optional SCM merge base parameters w_string scmMergeBase; w_string scmMergeBaseWith; ClockSpec(); explicit ClockSpec(const ClockPosition& position); explicit ClockSpec(const json_ref& value); /** Given a json value, parse out a clockspec. * Will return nullptr if the input was json null, indicating * an absence of a specified clock value. * Throws std::domain_error for badly formed clockspec value. */ static std::unique_ptr parseOptionalClockSpec( const json_ref& value); /** Evaluate the clockspec against the inputs, returning * the effective since parameter. * If cursorMap is passed in, it MUST be unlocked, as this method * will acquire a lock to evaluate a named cursor. */ struct w_query_since evaluate( const ClockPosition& position, const uint32_t lastAgeOutTick, watchman::Synchronized>* cursorMap = nullptr) const; /** Initializes some global state needed for clockspec evaluation */ static void init(); inline const ClockPosition& position() const { w_check(tag == w_cs_clock, "position() called for non-clock clockspec"); return clock.position; } bool hasScmParams() const; /** Returns a json value representing the current state of this ClockSpec * that can be parsed by the ClockSpec(const json_ref&) * constructor of this class */ json_ref toJson() const; }; watchman-4.9.0/watchman_cmd.h000066400000000000000000000065641314236077500161470ustar00rootroot00000000000000/* Copyright 2013-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #ifndef WATCHMAN_CMD_H #define WATCHMAN_CMD_H typedef void (*watchman_command_func)( struct watchman_client* client, const json_ref& args); typedef bool (*watchman_cli_cmd_validate_func)(json_ref& args, char** errmsg); #define CMD_DAEMON 1 #define CMD_CLIENT 2 #define CMD_POISON_IMMUNE 4 #define CMD_ALLOW_ANY_USER 8 struct watchman_command_handler_def { const char *name; watchman_command_func func; int flags; watchman_cli_cmd_validate_func cli_validate; }; // For commands that take the root dir as the second parameter, // realpath's that parameter on the client side and updates the // argument list bool w_cmd_realpath_root(json_ref& args, char** errmsg); // Try to find a project root that contains the path `resolved`. If found, // modify `resolved` to hold the path to the root project and return true. // Else, return false. // root_files should be derived from a call to cfg_compute_root_files, and it // should not be null. cfg_compute_root_files ensures that .watchmanconfig is // first in the returned list of files. This is important because it is the // definitive indicator for the location of the project root. bool find_project_root( const json_ref& root_files, char* resolved, char** relpath); void preprocess_command( json_ref& args, enum w_pdu_type output_pdu, uint32_t output_capabilities); bool dispatch_command( struct watchman_client* client, const json_ref& args, int mode); bool try_client_mode_command(const json_ref& cmd, bool pretty); void w_register_command(struct watchman_command_handler_def *defs); #define W_CMD_REG_1(symbol, name, func, flags, clivalidate) \ static w_ctor_fn_type(symbol) { \ static struct watchman_command_handler_def d = { \ name, func, flags, clivalidate \ }; \ w_register_command(&d); \ } \ w_ctor_fn_reg(symbol) #define W_CMD_REG(name, func, flags, clivalidate) \ W_CMD_REG_1(w_gen_symbol(w_cmd_register_), \ name, func, flags, clivalidate) #define W_CAP_REG1(symbol, name) \ static w_ctor_fn_type(symbol) { \ w_capability_register(name); \ } \ w_ctor_fn_reg(symbol) #define W_CAP_REG(name) \ W_CAP_REG1(w_gen_symbol(w_cap_reg_), name) void w_capability_register(const char *name); bool w_capability_supported(const w_string& name); json_ref w_capability_get_list(void); void send_error_response( struct watchman_client* client, WATCHMAN_FMT_STRING(const char* fmt), ...) WATCHMAN_FMT_ATTR(2, 3); void send_and_dispose_response( struct watchman_client* client, json_ref&& response); bool enqueue_response( struct watchman_client* client, json_ref&& json, bool ping); std::shared_ptr resolve_root_or_err( struct watchman_client* client, const json_ref& args, size_t root_index, bool create); json_ref make_response(void); void annotate_with_clock(const std::shared_ptr& root, json_ref& resp); void add_root_warnings_to_response( json_ref& response, const std::shared_ptr& root); bool clock_id_string(uint32_t root_number, uint32_t ticks, char *buf, size_t bufsize); #endif /* vim:ts=2:sw=2:et: */ watchman-4.9.0/watchman_config.h000066400000000000000000000021261314236077500166370ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #pragma once void cfg_shutdown(void); void cfg_set_arg(const char* name, const json_ref& val); void cfg_load_global_config_file(void); json_ref cfg_get_json(const char* name); const char* cfg_get_string(const char* name, const char* defval); json_int_t cfg_get_int(const char* name, json_int_t defval); bool cfg_get_bool(const char* name, bool defval); double cfg_get_double(const char* name, double defval); #ifndef _WIN32 mode_t cfg_get_perms(const char* name, bool write_bits, bool execute_bits); #endif const char *cfg_get_trouble_url(void); json_ref cfg_compute_root_files(bool* enforcing); class Configuration { json_ref local_; public: Configuration() = default; explicit Configuration(const json_ref& local); json_ref get(const char* name) const; const char* getString(const char* name, const char* defval) const; json_int_t getInt(const char* name, json_int_t defval) const; bool getBool(const char* name, bool defval) const; double getDouble(const char* name, double defval) const; }; watchman-4.9.0/watchman_dir.h000066400000000000000000000021001314236077500161400ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #pragma once #include struct watchman_dir { /* the name of this dir, relative to its parent */ w_string name; /* the parent dir */ watchman_dir* parent; /* files contained in this dir (keyed by file->name) */ struct Deleter { void operator()(watchman_file*) const; }; std::unordered_map> files; /* child dirs contained in this dir (keyed by dir->path) */ std::unordered_map> dirs; // If we think this dir was deleted, we'll avoid recursing // to its children when processing deletes bool last_check_existed{true}; watchman_dir(w_string name, watchman_dir* parent); watchman_dir* getChildDir(w_string name) const; /** Returns the direct child file named name, or nullptr * if there is no such entry */ watchman_file* getChildFile(w_string name) const; w_string getFullPath() const; }; void delete_dir(struct watchman_dir* dir); watchman-4.9.0/watchman_error_category.h000066400000000000000000000074001314236077500204200ustar00rootroot00000000000000/* Copyright 2016-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #pragma once #include #include // We may have to deal with errors from various sources and with // different error namespaces. This header defines some helpers // to make it easier for code to reason about and react to those errors. // http://blog.think-async.com/2010/04/system-error-support-in-c0x-part-5.html // explains the concepts behind the error_condition API used here. namespace watchman { // Various classes of errors that we wish to programmatially respond to. // This doesn't need to be an exhaustive list of all possible conditions, // just those that we want to handle in code. enum class error_code { no_such_file_or_directory, not_a_directory, too_many_symbolic_link_levels, permission_denied, system_limits_exceeded, timed_out, not_a_symlink, }; // An error category implementation that is present for comparison purposes // only; do not use this category to create error_codes explicitly. class error_category : public std::error_category { public: const char* name() const noexcept override; std::string message(int err) const override; bool equivalent(const std::error_code& code, int condition) const noexcept override; }; // Obtain a ref to the above error category const std::error_category& error_category(); // Helper that is used to implicitly construct an error condition // during equivalence testing. Don't use this directly. inline std::error_condition make_error_condition(error_code e) { return std::error_condition(static_cast(e), error_category()); } // Helper that is used to implicitly construct an error code // during equivalence testing. Don't use this directly. inline std::error_code make_error_code(error_code e) { return std::error_code(static_cast(e), error_category()); } // A type representing windows error codes. These are stored // in DWORD values and it is not really feasible to enumerate all // possible values due to the way that windows error codes are // structured. // We use uint32_t here to avoid pulling in the windows header file // here implicitly. // We use this purely for convenience with the make_error_XXX // functions below. While this is only used on Windows, it doesn't // hurt to define it unconditionally for all platforms here. enum windows_error_code : uint32_t {}; // Helper that is used to implicitly construct an windows error condition // during equivalence testing. This only makes sense to use on // windows platforms. inline std::error_condition make_error_condition(windows_error_code e) { return std::error_condition(static_cast(e), std::system_category()); } // Helper that is used to implicitly construct an windows error code // during equivalence testing. This only makes sense to use on // windows platforms. inline std::error_code make_error_code(windows_error_code e) { return std::error_code(static_cast(e), std::system_category()); } // An error category for explaining inotify specific errors. // It is effectively the same as generic_category except that // the messages for some of the codes are different. class inotify_category : public std::error_category { public: const char* name() const noexcept override; std::string message(int err) const override; }; // Obtain a ref to the above error category const std::error_category& inotify_category(); } // namespace watchman // Allow watchman::error_code to implicitly convert to std::error_condition namespace std { template <> struct is_error_condition_enum : public true_type {}; // Allow watchman::windows_error_code to implicitly convert to // std::error_condition template <> struct is_error_condition_enum : public true_type {}; } watchman-4.9.0/watchman_file.h000066400000000000000000000034101314236077500163060ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #pragma once struct watchman_file { /* the parent dir */ watchman_dir *parent; /* linkage to files ordered by changed time. * prev points to the address of `next` in the * previous file node, or the head of the list. */ struct watchman_file **prev, *next; /* linkage to files ordered by common suffix. * suffix_prev points to the address of `suffix_next` * in the previous file node, or the head of the * suffix list. */ struct watchman_file **suffix_prev, *suffix_next; /* the time we last observed a change to this file */ w_clock_t otime; /* the time we first observed this file OR the time * that this file switched from !exists to exists. * This is thus the "created time" */ w_clock_t ctime; /* whether we believe that this file still exists */ bool exists; /* whether we think this file might not exist */ bool maybe_deleted; /* cache stat results so we can tell if an entry * changed */ watchman::FileInformation stat; /* the symbolic link target of this file. * Can be NULL if not a symlink, or we failed to read the target */ w_string symlink_target; inline w_string_piece getName() const { auto lenPtr = (uint32_t*)(this + 1); auto data = (char*)(lenPtr + 1); return w_string_piece(data, *lenPtr); } void removeFromFileList(); watchman_file() = delete; watchman_file(const watchman_file&) = delete; watchman_file& operator=(const watchman_file&) = delete; ~watchman_file(); static std::unique_ptr make( const w_string& name, watchman_dir* parent); private: void removeFromSuffixList(); }; void free_file_node(struct watchman_file* file); watchman-4.9.0/watchman_getopt.h000066400000000000000000000024061314236077500166750ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #pragma once enum argtype { OPT_NONE, REQ_STRING, REQ_INT, }; struct watchman_getopt { /* name of long option: --optname */ const char *optname; /* if non-zero, short option character */ int shortopt; /* help text shown in the usage information */ const char *helptext; /* whether we accept an argument */ enum argtype argtype; /* if an argument was provided, *val will be set to * point to the option value. * Because we only update the option if one was provided * by the user, you can safely pre-initialize the val * pointer to your choice of default. * */ void *val; /* if argtype != OPT_NONE, this is the label used to * refer to the argument in the help text. If left * blank, we'll use the string "ARG" as a generic * alternative */ const char *arglabel; // Whether this option should be passed to the child // when running under the gimli monitor int is_daemon; #define IS_DAEMON 1 #define NOT_DAEMON 0 }; bool w_getopt( struct watchman_getopt* opts, int* argcp, char*** argvp, char*** daemon_argv); void usage(struct watchman_getopt* opts, FILE* where); void print_command_list_for_help(FILE* where); watchman-4.9.0/watchman_hash.h000066400000000000000000000014051314236077500163140ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #ifndef WATCHMAN_HASH_H #define WATCHMAN_HASH_H /* Bob Jenkins' lookup3.c hash function */ uint32_t w_hash_bytes(const void* key, size_t length, uint32_t initval); namespace watchman { // This is the Hash128to64 function from Google's cityhash (available // under the MIT License). We use it to reduce multiple 64 bit hashes // into a single hash. inline uint64_t hash_128_to_64(const uint64_t upper, const uint64_t lower) { // Murmur-inspired hashing. const uint64_t kMul = 0x9ddfea08eb382d69ULL; uint64_t a = (lower ^ upper) * kMul; a ^= (a >> 47); uint64_t b = (upper ^ a) * kMul; b ^= (b >> 47); b *= kMul; return b; } } #endif /* vim:ts=2:sw=2:et: */ watchman-4.9.0/watchman_ignore.h000066400000000000000000000027161314236077500166620ustar00rootroot00000000000000/* Copyright 2016-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #ifndef WATCHMAN_IGNORE_H #define WATCHMAN_IGNORE_H #include #include "thirdparty/libart/src/art.h" #ifdef __cplusplus extern "C" { #endif struct watchman_ignore { /* if the map has an entry for a given dir, we're ignoring it */ std::unordered_set ignore_vcs; std::unordered_set ignore_dirs; /* radix tree containing the same information as the ignore * entries above. This is used only on OS X and Windows because * we cannot exclude these dirs using the kernel watching APIs */ art_tree tree; /* On OS X, we need to preserve the order of the ignore list so * that we can exclude things deterministically and fit within * system limits. */ std::vector dirs_vec; // Adds a string to the ignore list. // The is_vcs_ignore parameter indicates whether it is a full ignore // or a vcs-style grandchild ignore. void add(const w_string& path, bool is_vcs_ignore); // Tests whether path is ignored. // Returns true if the path is ignored, false otherwise. bool isIgnored(const char* path, uint32_t pathlen) const; // Test whether path is listed in ignore vcs config bool isIgnoreVCS(const w_string& path) const; // Test whether path is listed in ignore dir config bool isIgnoreDir(const w_string& path) const; }; #ifdef __cplusplus } #endif #endif /* vim:ts=2:sw=2:et: */ watchman-4.9.0/watchman_log.h000066400000000000000000000023701314236077500161540ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ // You are encouraged to include "Logging.h" and use those functions rather than // use these. The functions in this file are best suited to low level or early // bootstrapping situations. #ifndef WATCHMAN_LOG_H #define WATCHMAN_LOG_H // Coupled with enum LogLevel in Logging.h #define W_LOG_OFF 0 #define W_LOG_ERR 1 #define W_LOG_DBG 2 #define W_LOG_FATAL -1 #include "watchman_preprocessor.h" extern int log_level; extern char *log_name; const char *w_set_thread_name(const char *fmt, ...); void w_setup_signal_handlers(void); void w_log(int level, WATCHMAN_FMT_STRING(const char* fmt), ...) WATCHMAN_FMT_ATTR(2, 3); #define w_check(e, ...) \ if (!(e)) { \ w_log(W_LOG_ERR, "%s:%u failed assertion `%s'\n", __FILE__, __LINE__, #e); \ w_log(W_LOG_FATAL, __VA_ARGS__); \ } // Similar to assert(), but uses W_LOG_FATAL to log the stack trace // before giving up the ghost #ifdef NDEBUG # define w_assert(e, ...) ((void)0) #else #define w_assert(e, ...) w_check(e, __VA_ARGS__) #endif #endif watchman-4.9.0/watchman_opendir.h000066400000000000000000000012171314236077500170320ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #pragma once #include "FileInformation.h" struct watchman_dir_ent { bool has_stat; char *d_name; watchman::FileInformation stat; }; class watchman_dir_handle { public: virtual ~watchman_dir_handle() = default; virtual const watchman_dir_ent* readDir() = 0; #ifndef _WIN32 virtual int getFd() const = 0; #endif }; // Return a dir handle on path. // Does not follow symlinks strict == true. // Throws std::system_error if the dir could not be opened. std::unique_ptr w_dir_open( const char* path, bool strict = true); watchman-4.9.0/watchman_pdu.h000066400000000000000000000051521314236077500161640ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #pragma once enum w_pdu_type { need_data, is_json_compact, is_json_pretty, is_bser, is_bser_v2 }; struct watchman_json_buffer { char *buf; uint32_t allocd; uint32_t rpos, wpos; enum w_pdu_type pdu_type; uint32_t capabilities; ~watchman_json_buffer(); watchman_json_buffer(); watchman_json_buffer(const watchman_json_buffer&) = delete; watchman_json_buffer& operator=(const watchman_json_buffer&) = delete; void clear(); bool jsonEncodeToStream(const json_ref& json, w_stm_t stm, int flags); bool bserEncodeToStream( uint32_t bser_version, uint32_t bser_capabilities, const json_ref& json, w_stm_t stm); bool pduEncodeToStream( enum w_pdu_type pdu_type, uint32_t capabilities, const json_ref& json, w_stm_t stm); json_ref decodeNext(w_stm_t stm, json_error_t* jerr); bool passThru( enum w_pdu_type output_pdu, uint32_t output_capabilities, watchman_json_buffer* output_pdu_buf, w_stm_t stm); private: bool readAndDetectPdu(w_stm_t stm, json_error_t* jerr); inline uint32_t shuntDown(); bool fillBuffer(w_stm_t stm); inline enum w_pdu_type detectPdu(); json_ref readJsonPrettyPdu(w_stm_t stm, json_error_t* jerr); json_ref readJsonPdu(w_stm_t stm, json_error_t* jerr); json_ref readBserPdu(w_stm_t stm, uint32_t bser_version, json_error_t* jerr); json_ref decodePdu(w_stm_t stm, json_error_t* jerr); bool decodePduInfo( w_stm_t stm, uint32_t bser_version, json_int_t* len, json_int_t* bser_capabilities, json_error_t* jerr); bool streamPdu(w_stm_t stm, json_error_t* jerr); bool streamUntilNewLine(w_stm_t stm); bool streamN(w_stm_t stm, json_int_t len, json_error_t* jerr); }; typedef struct bser_ctx { uint32_t bser_version; uint32_t bser_capabilities; json_dump_callback_t dump; } bser_ctx_t; typedef struct watchman_json_buffer w_jbuffer_t; #define BSER_MAGIC "\x00\x01" #define BSER_V2_MAGIC "\x00\x02" // BSERv2 capabilities. Must be powers of 2. #define BSER_CAP_DISABLE_UNICODE 0x1 #define BSER_CAP_DISABLE_UNICODE_FOR_ERRORS 0x2 int w_bser_write_pdu( const uint32_t bser_version, const uint32_t capabilities, json_dump_callback_t dump, const json_ref& json, void* data); int w_bser_dump(const bser_ctx_t* ctx, const json_ref& json, void* data); bool bunser_int( const char* buf, json_int_t avail, json_int_t* needed, json_int_t* val); json_ref bunser( const char* buf, const char* end, json_int_t* needed, json_error_t* jerr); watchman-4.9.0/watchman_pending.h000066400000000000000000000050221314236077500170140ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #pragma once #include #include #include "thirdparty/libart/src/art.h" #include "watchman_synchronized.h" #define W_PENDING_RECURSIVE 1 #define W_PENDING_VIA_NOTIFY 2 #define W_PENDING_CRAWL_ONLY 4 struct watchman_pending_fs { // We own the next entry and will destroy that chain when we // are destroyed. std::shared_ptr next; std::weak_ptr prev; w_string path; struct timeval now; int flags; watchman_pending_fs( const w_string& path, const struct timeval& now, int flags); }; struct PendingCollectionBase { PendingCollectionBase( std::condition_variable& cond, std::atomic& pinged); PendingCollectionBase(const PendingCollectionBase&) = delete; PendingCollectionBase(PendingCollectionBase&&) = default; ~PendingCollectionBase(); void drain(); bool add(const w_string& path, struct timeval now, int flags); bool add( struct watchman_dir* dir, const char* name, struct timeval now, int flags); void append(PendingCollectionBase* src); /* Moves the head of the chain of items to the caller. * The tree is cleared and the caller owns the whole chain */ std::shared_ptr stealItems(); uint32_t size() const; void ping(); bool checkAndResetPinged(); private: std::condition_variable& cond_; std::atomic& pinged_; art_tree, w_string> tree_; std::shared_ptr pending_; struct iterContext { const w_string& root; PendingCollectionBase& coll; int operator()( const w_string& key, std::shared_ptr& p); iterContext(const w_string& root, PendingCollectionBase& coll); }; friend struct iterContext; void maybePruneObsoletedChildren(w_string path, int flags); inline void consolidateItem(watchman_pending_fs* p, int flags); bool isObsoletedByContainingDir(const w_string& path); inline void linkHead(std::shared_ptr&& p); inline void unlinkItem(std::shared_ptr& p); }; class PendingCollection : public watchman::Synchronized { std::condition_variable cond_; std::atomic pinged_; public: PendingCollection(); LockedPtr lockAndWait(std::chrono::milliseconds timeoutms, bool& pinged); // Ping without requiring the lock to be held void ping(); }; watchman-4.9.0/watchman_perf.h000066400000000000000000000043241314236077500163300ustar00rootroot00000000000000/* Copyright 2016-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #ifndef WATCHMAN_PERF_H #define WATCHMAN_PERF_H #include "thirdparty/jansson/jansson.h" struct watchman_root; typedef struct watchman_root w_root_t; // Performance metrics sampling #ifdef __cplusplus extern "C" { #endif struct watchman_perf_sample { // What we're sampling across const char *description; // Additional arbitrary information. This is either NULL // or is a json object with various properties set inside it json_ref meta_data; // Measure the wall time struct timeval time_begin, time_end, duration; // If set to true, the sample should be sent to the logging // mechanism bool will_log{false}; // If non-zero, force logging on if the wall time is greater // that this value double wall_time_elapsed_thresh{0}; #ifdef HAVE_SYS_RESOURCE_H // When available (posix), record these process-wide stats. // It can be difficult to attribute these directly to the // action being sampled because there can be multiple // watched roots and these metrics include the usage from // all of them. struct rusage usage_begin, usage_end, usage; #endif // Initialize and mark the start of a sample watchman_perf_sample(const char* description); watchman_perf_sample(const watchman_perf_sample&) = delete; watchman_perf_sample(watchman_perf_sample&&) = delete; // Augment any configuration policy and cause this sample to be logged if the // walltime exceeds the specified number of seconds (fractions are supported) void set_wall_time_thresh(double thresh); // Mark the end of a sample. Returns true if the policy is to log this // sample. This allows the caller to conditionally build and add metadata bool finish(); // Annotate the sample with metadata void add_meta(const char* key, json_ref&& val); // Annotate the sample with some standard metadata taken from a root. void add_root_meta(const std::shared_ptr& root); // Force the sample to go to the log void force_log(); // If will_log is set, arranges to send the sample to the log void log(); }; typedef struct watchman_perf_sample w_perf_t; #ifdef __cplusplus } #endif #endif /* vim:ts=2:sw=2:et: */ watchman-4.9.0/watchman_preprocessor.h000066400000000000000000000011561314236077500201220ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #pragma once // Helpers for pasting __LINE__ for symbol generation #define w_paste2(pre, post) pre##post #define w_paste1(pre, post) w_paste2(pre, post) #define w_gen_symbol(pre) w_paste1(pre, __LINE__) #ifndef WATCHMAN_FMT_STRING #define WATCHMAN_FMT_STRING(x) x #endif #ifdef __GNUC__ #define WATCHMAN_FMT_ATTR(fmt_param_no, dots_param_no) \ __attribute__((__format__(__printf__, fmt_param_no, dots_param_no))) #endif #ifndef WATCHMAN_FMT_ATTR #define WATCHMAN_FMT_ATTR(fmt_param_no, dots_param_no) /* nothing */ #endif watchman-4.9.0/watchman_query.h000066400000000000000000000222601314236077500165400ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #ifndef WATCHMAN_QUERY_H #define WATCHMAN_QUERY_H #include #include #include #include #include #include #include "Future.h" #include "watchman_clockspec.h" #include "FileSystem.h" namespace watchman { struct FileInformation; } struct watchman_file; struct w_query; typedef struct w_query w_query; struct w_query_field_renderer { w_string name; json_ref (*make)(const struct watchman_rule_match* match); watchman::Future (*futureMake)( const struct watchman_rule_match* match); }; using w_query_field_list = std::vector; struct w_query_since { bool is_timestamp; union { time_t timestamp; struct { bool is_fresh_instance; uint32_t ticks; } clock; }; w_query_since() : is_timestamp(false), clock{true, 0} {} }; // A View-independent way of accessing file properties in the // query engine. A FileResult is not intended to be accessed // concurrently from multiple threads and may be unsafe to // be used in that manner (there is no implied locking). class FileResult { public: virtual ~FileResult(); virtual const watchman::FileInformation& stat() const = 0; // Returns the name of the file in its containing dir virtual w_string_piece baseName() const = 0; // Returns the name of the containing dir relative to the // VFS root virtual w_string_piece dirName() = 0; // Returns true if the file currently exists virtual bool exists() const = 0; // Returns the symlink target virtual watchman::Future readLink() const = 0; virtual const w_clock_t& ctime() const = 0; virtual const w_clock_t& otime() const = 0; // Returns the SHA-1 hash of the file contents using ContentHash = std::array; virtual watchman::Future getContentSha1() = 0; }; struct watchman_rule_match { uint32_t root_number; w_string relname; bool is_new; std::unique_ptr file; watchman_rule_match( uint32_t root_number, const w_string& relname, bool is_new, std::unique_ptr&& file) : root_number(root_number), relname(relname), is_new(is_new), file(std::move(file)) {} }; // Holds state for the execution of a query struct w_query_ctx { struct w_query *query; std::shared_ptr root; std::unique_ptr file; w_string wholename; struct w_query_since since; // root number, ticks at start of query execution ClockSpec clockAtStartOfQuery; uint32_t lastAgeOutTickValueAtStartOfQuery; // Rendered results json_ref resultsArray; // Results that are pending render, eg: pending some // computation that is happening async. std::deque> resultsToRender; // When deduping the results, set of // the files held in results std::unordered_set dedup; // How many times we suppressed a result due to dedup checking uint32_t num_deduped{0}; // Disable fresh instance queries bool disableFreshInstance{false}; w_query_ctx( w_query* q, const std::shared_ptr& root, bool disableFreshInstance); w_query_ctx(const w_query_ctx&) = delete; w_query_ctx& operator=(const w_query_ctx&) = delete; // Move any completed items from resultsToRender to resultsArray void speculativeRenderCompletion(); // Increment numWalked_ by the specified amount inline void bumpNumWalked(int64_t amount = 1) { numWalked_ += amount; } int64_t getNumWalked() const { return numWalked_; } private: // Number of files considered as part of running this query int64_t numWalked_{0}; }; struct w_query_path { w_string name; int depth; }; class QueryExpr { public: virtual ~QueryExpr(); virtual bool evaluate(w_query_ctx* ctx, const FileResult* file) = 0; }; struct watchman_glob_tree; // represents an error parsing a query class QueryParseError : public std::runtime_error { public: template explicit QueryParseError(Args&&... args) : std::runtime_error(watchman::to( "failed to parse query: ", std::forward(args)...)) {} }; // represents an error executing a query class QueryExecError : public std::runtime_error { public: template explicit QueryExecError(Args&&... args) : std::runtime_error(watchman::to( "query failed: ", std::forward(args)...)) {} }; struct w_query { watchman::CaseSensitivity case_sensitive{watchman::CaseSensitivity::CaseInSensitive}; bool empty_on_fresh_instance{false}; bool dedup_results{false}; /* optional full path to relative root, without and with trailing slash */ w_string relative_root; w_string relative_root_slash; std::vector paths; std::unique_ptr glob_tree; // Additional flags to pass to wildmatch in the glob_generator int glob_flags{0}; std::vector suffixes; std::chrono::milliseconds sync_timeout{0}; uint32_t lock_timeout{0}; // We can't (and mustn't!) evaluate the clockspec // fully until we execute query, because we have // to evaluate named cursors and determine fresh // instance at the time we execute std::unique_ptr since_spec; std::unique_ptr expr; // The query that we parsed into this struct json_ref query_spec; w_query_field_list fieldList; // True if any entry in fieldList has a non-null futureMake bool renderUsesFutures{false}; }; typedef std::unique_ptr ( *w_query_expr_parser)(w_query* query, const json_ref& term); bool w_query_register_expression_parser( const char *term, w_query_expr_parser parser); std::shared_ptr w_query_parse( const std::shared_ptr& root, const json_ref& query); std::unique_ptr w_query_expr_parse( w_query* query, const json_ref& term); bool w_query_file_matches_relative_root( struct w_query_ctx* ctx, const watchman_file* file); // Allows a generator to process a file node // through the query engine void w_query_process_file( w_query* query, struct w_query_ctx* ctx, std::unique_ptr file); // Generator callback, used to plug in an alternate // generator when used in triggers or subscriptions using w_query_generator = std::function& root, struct w_query_ctx* ctx)>; void time_generator( w_query* query, const std::shared_ptr& root, struct w_query_ctx* ctx); struct w_query_res { bool is_fresh_instance; json_ref resultsArray; // Only populated if the query was set to dedup_results std::unordered_set dedupedFileNames; ClockSpec clockAtStartOfQuery; }; w_query_res w_query_execute( w_query* query, const std::shared_ptr& root, w_query_generator generator); // Returns a shared reference to the wholename // of the file. The caller must not delref // the reference. const w_string& w_query_ctx_get_wholename(struct w_query_ctx* ctx); // parse the old style since and find queries std::shared_ptr w_query_parse_legacy( const std::shared_ptr& root, const json_ref& args, int start, uint32_t* next_arg, const char* clockspec, json_ref* expr_p); void w_query_legacy_field_list(w_query_field_list* flist); json_ref file_result_to_json( const w_query_field_list& fieldList, const watchman_rule_match& match); watchman::Future file_result_to_json_future( const w_query_field_list& fieldList, watchman_rule_match&& match); void w_query_init_all(void); enum w_query_icmp_op { W_QUERY_ICMP_EQ, W_QUERY_ICMP_NE, W_QUERY_ICMP_GT, W_QUERY_ICMP_GE, W_QUERY_ICMP_LT, W_QUERY_ICMP_LE, }; struct w_query_int_compare { enum w_query_icmp_op op; json_int_t operand; }; void parse_int_compare(const json_ref& term, struct w_query_int_compare* comp); bool eval_int_compare(json_int_t ival, struct w_query_int_compare *comp); void parse_field_list(json_ref field_list, w_query_field_list* selected); json_ref field_list_to_json_name_array(const w_query_field_list& fieldList); void parse_globs(w_query* res, const json_ref& query); // A node in the tree of node matching rules struct watchman_glob_tree { std::string pattern; // The list of child rules, excluding any ** rules std::vector> children; // The list of ** rules that exist under this node std::vector> doublestar_children; unsigned is_leaf : 1; // if true, generate files for matches unsigned had_specials : 1; // if false, can do simple string compare unsigned is_doublestar : 1; // pattern begins with ** watchman_glob_tree(const char* pattern, uint32_t pattern_len); }; #define W_TERM_PARSER1(symbol, name, func) \ static w_ctor_fn_type(symbol) { \ w_query_register_expression_parser(name, func); \ } \ w_ctor_fn_reg(symbol) #define W_TERM_PARSER(name, func) \ W_TERM_PARSER1(w_gen_symbol(w_term_register_), name, func) #endif /* vim:ts=2:sw=2:et: */ watchman-4.9.0/watchman_root.h000066400000000000000000000112551314236077500163600ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #pragma once #include #include #include "CookieSync.h" #include "PubSub.h" #include "QueryableView.h" #include "watchman_config.h" #include "watchman_shared_mutex.h" #include "watchman_synchronized.h" #include "FileSystem.h" #define HINT_NUM_DIRS 128*1024 #define CFG_HINT_NUM_DIRS "hint_num_dirs" #define DEFAULT_SETTLE_PERIOD 20 constexpr std::chrono::milliseconds DEFAULT_QUERY_SYNC_MS(60000); /* Prune out nodes that were deleted roughly 12-36 hours ago */ #define DEFAULT_GC_AGE (86400/2) #define DEFAULT_GC_INTERVAL 86400 /* Idle out watches that haven't had activity in several days */ #define DEFAULT_REAP_AGE (86400*5) struct watchman_client_state_assertion; struct watchman_root : public std::enable_shared_from_this { /* path to root */ w_string root_path; watchman::CaseSensitivity case_sensitive; /* map of rule id => struct watchman_trigger_command */ watchman::Synchronized< std::unordered_map>> triggers; watchman::CookieSync cookies; struct watchman_ignore ignore; /* config options loaded via json file */ json_ref config_file; Configuration config; const int trigger_settle{0}; const int gc_interval{0}; const int gc_age{0}; const int idle_reap_age{0}; // Stream of broadcast unilateral items emitted by this root std::shared_ptr unilateralResponses; struct RecrawlInfo { /* how many times we've had to recrawl */ int recrawlCount{0}; /* if true, we've decided that we should re-crawl the root * for the sake of ensuring consistency */ bool shouldRecrawl{true}; // Last ad-hoc warning message w_string warning; }; watchman::Synchronized recrawlInfo; // Why we failed to watch w_string failure_reason; // map of state name => watchman_client_state_assertion for // asserted states watchman::Synchronized>> asserted_states; struct Inner { std::shared_ptr view_; bool done_initial{0}; bool cancelled{0}; /* map of cursor name => last observed tick value */ watchman::Synchronized> cursors; /* Collection of symlink targets that we try to watch. * Reads and writes on this collection are only safe if done from the IO * thread; this collection is not protected by the root lock. */ PendingCollection pending_symlink_targets; time_t last_cmd_timestamp{0}; mutable time_t last_reap_timestamp{0}; void init(w_root_t* root); } inner; // Obtain the current view pointer. // This is safe wrt. a concurrent recrawl operation std::shared_ptr view(); explicit watchman_root(const w_string& root_path); ~watchman_root(); void considerAgeOut(); void performAgeOut(std::chrono::seconds min_age); bool syncToNow(std::chrono::milliseconds timeout); void scheduleRecrawl(const char* why); // Requests cancellation of the root. // Returns true if this request caused the root cancellation, false // if it was already in the process of being cancelled. bool cancel(); void processPendingSymlinkTargets(); // Returns true if the caller should stop the watch. bool considerReap() const; void init(); bool removeFromWatched(); void applyIgnoreVCSConfiguration(); void signalThreads(); bool stopWatch(); json_ref triggerListToJson() const; private: void applyIgnoreConfiguration(); }; std::shared_ptr w_root_resolve(const char* path, bool auto_watch, char** errmsg); std::shared_ptr w_root_resolve_for_client_mode( const char* filename, char** errmsg); char* w_find_enclosing_root(const char* filename, char** relpath); void w_root_free_watched_roots(void); json_ref w_root_stop_watch_all(void); void w_root_reap(void); bool did_file_change( const watchman::FileInformation* saved, const watchman::FileInformation* fresh); extern std::atomic live_roots; extern watchman::Synchronized< std::unordered_map>> watched_roots; std::shared_ptr root_resolve( const char* filename, bool auto_watch, bool* created, char** errmsg); void set_poison_state( const w_string& dir, struct timeval now, const char* syscall, const std::error_code& err); void handle_open_errno( const std::shared_ptr& root, struct watchman_dir* dir, struct timeval now, const char* syscall, const std::error_code& err); watchman-4.9.0/watchman_scopeguard.h000066400000000000000000000267551314236077500175440ustar00rootroot00000000000000/* Copyright 2016-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ // Note that this is a port of folly/ScopeGuard.h, adjusted to compile // in watchman without pulling in all of folly (a non-goal for the watchman // project at the current time). // It defines SCOPE_XXX symbols that will conflict with folly/ScopeGuard.h // if both are in use. Therefore the convention is that only watchman .cpp // files will include this. For the small handful of watchman files that // pull in folly dependencies, those files will prefer to include // folly/ScopeGuard.h instead. In the longer run (once gcc 5 is more easily // installable for our supported linux systems) and once the homebrew build // story for our various projects is in better shape, we can remove this in // favor of just depending on folly. #pragma once #include #include #include #include #include #include #include "watchman_preprocessor.h" #if defined(__GNUG__) || defined(__clang__) #define WATCHMAN_EXCEPTION_COUNT_USE_CXA_GET_GLOBALS namespace __cxxabiv1 { // forward declaration (originally defined in unwind-cxx.h from from libstdc++) struct __cxa_eh_globals; // declared in cxxabi.h from libstdc++-v3 extern "C" __cxa_eh_globals* __cxa_get_globals() noexcept; } #elif defined(_MSC_VER) && (_MSC_VER >= 1400) && \ (_MSC_VER < 1900) // MSVC++ 8.0 or greater #define WATCHMAN_EXCEPTION_COUNT_USE_GETPTD // forward declaration (originally defined in mtdll.h from MSVCRT) struct _tiddata; extern "C" _tiddata* _getptd(); // declared in mtdll.h from MSVCRT #elif defined(_MSC_VER) && (_MSC_VER >= 1900) // MSVC++ 2015 #define WATCHMAN_EXCEPTION_COUNT_USE_STD #else // Raise an error when trying to use this on unsupported platforms. #error "Unsupported platform, don't include this header." #endif namespace watchman { namespace detail { /** * Used to check if a new uncaught exception was thrown by monitoring the * number of uncaught exceptions. * * Usage: * - create a new UncaughtExceptionCounter object * - call isNewUncaughtException() on the new object to check if a new * uncaught exception was thrown since the object was created */ class UncaughtExceptionCounter { public: UncaughtExceptionCounter() noexcept : exceptionCount_(getUncaughtExceptionCount()) {} UncaughtExceptionCounter(const UncaughtExceptionCounter& other) noexcept : exceptionCount_(other.exceptionCount_) {} bool isNewUncaughtException() noexcept { return getUncaughtExceptionCount() > exceptionCount_; } private: int getUncaughtExceptionCount() noexcept; int exceptionCount_; }; /** * Returns the number of uncaught exceptions. * * This function is based on Evgeny Panasyuk's implementation from here: * http://fburl.com/15190026 */ inline int UncaughtExceptionCounter::getUncaughtExceptionCount() noexcept { #if defined(WATCHMAN_EXCEPTION_COUNT_USE_CXA_GET_GLOBALS) // __cxa_get_globals returns a __cxa_eh_globals* (defined in unwind-cxx.h). // The offset below returns __cxa_eh_globals::uncaughtExceptions. return *(reinterpret_cast( static_cast(static_cast(__cxxabiv1::__cxa_get_globals())) + sizeof(void*))); #elif defined(WATCHMAN_EXCEPTION_COUNT_USE_GETPTD) // _getptd() returns a _tiddata* (defined in mtdll.h). // The offset below returns _tiddata::_ProcessingThrow. return *(reinterpret_cast( static_cast(static_cast(_getptd())) + sizeof(void*) * 28 + 0x4 * 8)); #elif defined(WATCHMAN_EXCEPTION_COUNT_USE_STD) return std::uncaught_exceptions(); #endif } } // namespace detail /** * ScopeGuard is a general implementation of the "Initialization is * Resource Acquisition" idiom. Basically, it guarantees that a function * is executed upon leaving the currrent scope unless otherwise told. * * The makeGuard() function is used to create a new ScopeGuard object. * It can be instantiated with a lambda function, a std::function, * a functor, or a void(*)() function pointer. * * * Usage example: Add a friend to memory if and only if it is also added * to the db. * * void User::addFriend(User& newFriend) { * // add the friend to memory * friends_.push_back(&newFriend); * * // If the db insertion that follows fails, we should * // remove it from memory. * // (You could also declare this as "auto guard = makeGuard(...)") * ScopeGuard guard = makeGuard([&] { friends_.pop_back(); }); * * // this will throw an exception upon error, which * // makes the ScopeGuard execute UserCont::pop_back() * // once the Guard's destructor is called. * db_->addFriend(GetName(), newFriend.GetName()); * * // an exception was not thrown, so don't execute * // the Guard. * guard.dismiss(); * } * * Examine ScopeGuardTest.cpp for some more sample usage. * * Stolen from: * Andrei's and Petru Marginean's CUJ article: * http://drdobbs.com/184403758 * and the loki library: * http://loki-lib.sourceforge.net/index.php?n=Idioms.ScopeGuardPointer * and triendl.kj article: * http://www.codeproject.com/KB/cpp/scope_guard.aspx */ class ScopeGuardImplBase { public: void dismiss() noexcept { dismissed_ = true; } protected: ScopeGuardImplBase() noexcept : dismissed_(false) {} static ScopeGuardImplBase makeEmptyScopeGuard() noexcept { return ScopeGuardImplBase{}; } template static const T& asConst(const T& t) noexcept { return t; } bool dismissed_; }; template class ScopeGuardImpl : public ScopeGuardImplBase { public: explicit ScopeGuardImpl(FunctionType& fn) noexcept( std::is_nothrow_copy_constructible::value) : ScopeGuardImpl( asConst(fn), makeFailsafe( std::is_nothrow_copy_constructible{}, &fn)) {} explicit ScopeGuardImpl(const FunctionType& fn) noexcept( std::is_nothrow_copy_constructible::value) : ScopeGuardImpl( fn, makeFailsafe( std::is_nothrow_copy_constructible{}, &fn)) {} explicit ScopeGuardImpl(FunctionType&& fn) noexcept( std::is_nothrow_move_constructible::value) : ScopeGuardImpl( std::move_if_noexcept(fn), makeFailsafe( std::is_nothrow_move_constructible{}, &fn)) {} ScopeGuardImpl(ScopeGuardImpl&& other) noexcept( std::is_nothrow_move_constructible::value) : function_(std::move_if_noexcept(other.function_)) { // If the above line attempts a copy and the copy throws, other is // left owning the cleanup action and will execute it (or not) depending // on the value of other.dismissed_. The following lines only execute // if the move/copy succeeded, in which case *this assumes ownership of // the cleanup action and dismisses other. dismissed_ = other.dismissed_; other.dismissed_ = true; } ~ScopeGuardImpl() noexcept { if (!dismissed_) { execute(); } } private: static ScopeGuardImplBase makeFailsafe(std::true_type, const void*) noexcept { return makeEmptyScopeGuard(); } template static auto makeFailsafe(std::false_type, Fn* fn) noexcept -> ScopeGuardImpl { return ScopeGuardImpl{std::ref(*fn)}; } template explicit ScopeGuardImpl(Fn&& fn, ScopeGuardImplBase&& failsafe) : ScopeGuardImplBase{}, function_(std::forward(fn)) { failsafe.dismiss(); } void* operator new(std::size_t) = delete; void execute() noexcept { function_(); } FunctionType function_; }; template ScopeGuardImpl::type> makeGuard(FunctionType&& fn) noexcept(std::is_nothrow_constructible< typename std::decay::type, FunctionType>::value) { return ScopeGuardImpl::type>( std::forward(fn)); } /** * This is largely unneeded if you just use auto for your guards. */ typedef ScopeGuardImplBase&& ScopeGuard; namespace detail { #if defined(WATCHMAN_EXCEPTION_COUNT_USE_CXA_GET_GLOBALS) || \ defined(WATCHMAN_EXCEPTION_COUNT_USE_GETPTD) || \ defined(WATCHMAN_EXCEPTION_COUNT_USE_STD) /** * ScopeGuard used for executing a function when leaving the current scope * depending on the presence of a new uncaught exception. * * If the executeOnException template parameter is true, the function is * executed if a new uncaught exception is present at the end of the scope. * If the parameter is false, then the function is executed if no new uncaught * exceptions are present at the end of the scope. * * Used to implement SCOPE_FAIL and SCOPE_SUCCES below. */ template class ScopeGuardForNewException { public: explicit ScopeGuardForNewException(const FunctionType& fn) : function_(fn) {} explicit ScopeGuardForNewException(FunctionType&& fn) : function_(std::move(fn)) {} ScopeGuardForNewException(ScopeGuardForNewException&& other) : function_(std::move(other.function_)), exceptionCounter_(std::move(other.exceptionCounter_)) {} ~ScopeGuardForNewException() noexcept(executeOnException) { if (executeOnException == exceptionCounter_.isNewUncaughtException()) { function_(); } } private: ScopeGuardForNewException(const ScopeGuardForNewException& other) = delete; void* operator new(std::size_t) = delete; FunctionType function_; UncaughtExceptionCounter exceptionCounter_; }; /** * Internal use for the macro SCOPE_FAIL below */ enum class ScopeGuardOnFail {}; template ScopeGuardForNewException::type, true> operator+(detail::ScopeGuardOnFail, FunctionType&& fn) { return ScopeGuardForNewException< typename std::decay::type, true>(std::forward(fn)); } /** * Internal use for the macro SCOPE_SUCCESS below */ enum class ScopeGuardOnSuccess {}; template ScopeGuardForNewException::type, false> operator+(ScopeGuardOnSuccess, FunctionType&& fn) { return ScopeGuardForNewException< typename std::decay::type, false>(std::forward(fn)); } #endif // native uncaught_exception() supported /** * Internal use for the macro SCOPE_EXIT below */ enum class ScopeGuardOnExit {}; template ScopeGuardImpl::type> operator+( detail::ScopeGuardOnExit, FunctionType&& fn) { return ScopeGuardImpl::type>( std::forward(fn)); } } // namespace detail #define SCOPE_EXIT \ auto w_gen_symbol(SCOPE_EXIT_STATE) = \ ::watchman::detail::ScopeGuardOnExit() + [&]() noexcept #if defined(WATCHMAN_EXCEPTION_COUNT_USE_CXA_GET_GLOBALS) || \ defined(WATCHMAN_EXCEPTION_COUNT_USE_GETPTD) || \ defined(WATCHMAN_EXCEPTION_COUNT_USE_STD) #define SCOPE_FAIL \ auto w_gen_symbol(SCOPE_FAIL_STATE) = \ ::watchman::detail::ScopeGuardOnFail() + [&]() noexcept #define SCOPE_SUCCESS \ auto w_gen_symbol(SCOPE_SUCCESS_STATE) = \ ::watchman::detail::ScopeGuardOnSuccess() + [&]() #endif // native uncaught_exception() supported } // namespace watchman watchman-4.9.0/watchman_shared_mutex.h000066400000000000000000000077021314236077500200670ustar00rootroot00000000000000/* Copyright 2016-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #pragma once #include #include "watchman_log.h" #include "watchman_time.h" #ifdef _WIN32 #include #else #include #endif #ifdef __APPLE__ // We provide our own implementation of these functions extern "C" { int pthread_mutex_timedlock(pthread_mutex_t* m, const struct timespec* ts); int pthread_rwlock_timedwrlock( pthread_rwlock_t* rwlock, const struct timespec* ts); int pthread_rwlock_timedrdlock( pthread_rwlock_t* rwlock, const struct timespec* ts); } #endif namespace watchman { #ifndef _WIN32 /* Implements the C++14 shared_timed_mutex API using pthread_rwlock_t. * This is present because C++11 is our target environment */ class shared_timed_mutex { pthread_rwlock_t rwlock_; public: shared_timed_mutex() { pthread_rwlock_init(&rwlock_, nullptr); } ~shared_timed_mutex() { pthread_rwlock_destroy(&rwlock_); } shared_timed_mutex(const shared_timed_mutex&) = delete; shared_timed_mutex& operator=(const shared_timed_mutex&) = delete; // Exclusive ownership void lock() { auto err = pthread_rwlock_wrlock(&rwlock_); if (err != 0) { w_log(W_LOG_FATAL, "lock failed: %s\n", strerror(err)); } } bool try_lock() { return pthread_rwlock_trywrlock(&rwlock_) == 0; } template bool try_lock_for(std::chrono::duration& timeout_duration) { struct timespec ts = systemClockToTimeSpec( std::chrono::system_clock::now() + timeout_duration); return pthread_rwlock_timedwrlock(&rwlock_, &ts) == 0; } void unlock() { auto err = pthread_rwlock_unlock(&rwlock_); if (err != 0) { w_log(W_LOG_FATAL, "unlock failed: %s\n", strerror(err)); } } // Shared ownership void lock_shared() { auto err = pthread_rwlock_rdlock(&rwlock_); if (err != 0) { w_log(W_LOG_FATAL, "lock_shared failed: %s\n", strerror(err)); } } bool try_lock_shared() { return pthread_rwlock_tryrdlock(&rwlock_) == 0; } template bool try_lock_shared_for( std::chrono::duration& timeout_duration) { struct timespec ts = systemClockToTimeSpec(std::chrono::system_clock::now() + timeout_duration); return pthread_rwlock_timedrdlock(&rwlock_, &ts) == 0; } void unlock_shared() { auto err = pthread_rwlock_unlock(&rwlock_); if (err != 0) { w_log(W_LOG_FATAL, "unlock_shared failed: %s\n", strerror(err)); } } }; /* Implements the C++14 shared_lock API. * This is present because C++11 is our target environment */ template class shared_lock { public: typedef Mutex mutex_type; // Blocking explicit shared_lock(mutex_type& m) : m_(&m), owned_(false) { m_->lock_shared(); owned_ = true; } void unlock() { if (owned_) { m_->unlock_shared(); owned_ = false; } } ~shared_lock() { unlock(); } shared_lock(shared_lock const&) = delete; shared_lock& operator=(shared_lock const&) = delete; void swap(shared_lock& u) noexcept { if (this == &u) { return; } std::swap(m_, u.m_); std::swap(owned_, u.owned_); } mutex_type* release() noexcept { mutex_type* result = nullptr; std::swap(result, m_); owned_ = false; return result; } shared_lock(shared_lock&& u) noexcept { if (this == &u) { return; } swap(u); } shared_lock& operator=(shared_lock&& u) noexcept { if (this == &u) { return *this; } swap(u); return *this; } bool owns_lock() const noexcept { return owned_; } explicit operator bool() const noexcept { return owns_lock(); } mutex_type* mutex() const noexcept { return m_; } private: mutex_type* m_; bool owned_{false}; }; #else using shared_timed_mutex = std::shared_timed_mutex; using shared_lock = std::shared_lock; #endif } // namespace watchman watchman-4.9.0/watchman_stream.h000066400000000000000000000041171314236077500166670ustar00rootroot00000000000000/* Copyright 2014-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #ifndef WATCHMAN_STREAM_H #define WATCHMAN_STREAM_H #include "FileDescriptor.h" // Very limited stream abstraction to make it easier to // deal with portability between Windows and POSIX. class watchman_event { public: virtual ~watchman_event() = default; virtual void notify() = 0; virtual bool testAndClear() = 0; }; using w_evt_t = watchman_event*; class watchman_stream { public: virtual ~watchman_stream() = default; virtual int read(void* buf, int size) = 0; virtual int write(const void* buf, int size) = 0; virtual w_evt_t getEvents() = 0; virtual void setNonBlock(bool nonBlock) = 0; virtual bool rewind() = 0; virtual bool shutdown() = 0; virtual bool peerIsOwner() = 0; virtual pid_t getPeerProcessID() const = 0; virtual const watchman::FileDescriptor& getFileDescriptor() const = 0; }; using w_stm_t = watchman_stream*; struct watchman_event_poll { watchman_event* evt; bool ready; }; // Make a event that can be manually signalled std::unique_ptr w_event_make(void); // Go to sleep for up to timeoutms. // Returns sooner if any of the watchman_event objects referenced // in the array P are signalled int w_poll_events(struct watchman_event_poll *p, int n, int timeoutms); // Create a connected unix socket or a named pipe client stream std::unique_ptr w_stm_connect(const char* path, int timeoutms); w_stm_t w_stm_stdout(void); w_stm_t w_stm_stdin(void); #ifndef _WIN32 std::unique_ptr w_stm_connect_unix( const char* path, int timeoutms); #else std::unique_ptr w_stm_connect_named_pipe( const char* path, int timeoutms); watchman::FileDescriptor w_handle_open(const char* path, int flags); #endif std::unique_ptr w_stm_fdopen(watchman::FileDescriptor&& fd); std::unique_ptr w_stm_open(const char* path, int flags, ...); // Make a temporary file name and open it. // Marks the file as CLOEXEC std::unique_ptr w_mkstemp(char* templ); #endif watchman-4.9.0/watchman_string.h000066400000000000000000000470411314236077500167050ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #ifndef WATCHMAN_STRING_H #define WATCHMAN_STRING_H #include "watchman_system.h" #include #include #include #include #include #include #include "watchman_log.h" #ifdef _WIN32 #include #endif #include #include struct watchman_string; typedef struct watchman_string w_string_t; typedef enum { W_STRING_BYTE, W_STRING_UNICODE, W_STRING_MIXED } w_string_type_t; struct watchman_string { std::atomic refcnt; uint32_t _hval; uint32_t len; w_string_t *slice; const char *buf; w_string_type_t type:3; unsigned hval_computed:1; watchman_string(); ~watchman_string(); }; uint32_t w_string_compute_hval(w_string_t *str); static inline uint32_t w_string_hval(w_string_t *str) { if (str->hval_computed) { return str->_hval; } return w_string_compute_hval(str); } void w_string_addref(w_string_t *str); w_string_t *w_string_basename(w_string_t *str); w_string_t *w_string_canon_path(w_string_t *str); int w_string_compare(const w_string_t *a, const w_string_t *b); bool w_string_contains_cstr_len( const w_string_t* str, const char* needle, uint32_t nlen); void w_string_delref(w_string_t *str); w_string_t *w_string_dirname(w_string_t *str); char *w_string_dup_buf(const w_string_t *str); w_string_t *w_string_dup_lower(w_string_t *str); bool w_string_equal(const w_string_t *a, const w_string_t *b); bool w_string_equal_cstring(const w_string_t *a, const char *b); void w_string_in_place_normalize_separators( w_string_t** str, char target_sep = '/'); /* Typed string creation functions. */ w_string_t *w_string_new_typed(const char *str, w_string_type_t type); w_string_t *w_string_new_len_typed(const char *str, uint32_t len, w_string_type_t type); w_string_t *w_string_new_len_no_ref_typed(const char *str, uint32_t len, w_string_type_t type); w_string_t *w_string_new_basename_typed(const char *path, w_string_type_t type); w_string_t *w_string_new_lower_typed(const char *str, w_string_type_t type); void w_string_new_len_typed_stack(w_string_t *into, const char *str, uint32_t len, w_string_type_t type); w_string_t* w_string_normalize_separators( w_string_t* str, char target_sep = '/'); w_string_t *w_string_path_cat(w_string_t *parent, w_string_t *rhs); w_string_t *w_string_path_cat_cstr(w_string_t *parent, const char *rhs); w_string_t *w_string_path_cat_cstr_len(w_string_t *parent, const char *rhs, uint32_t rhs_len); bool w_string_path_is_absolute(const w_string_t *str); bool w_string_startswith(w_string_t *str, w_string_t *prefix); bool w_string_startswith_caseless(w_string_t *str, w_string_t *prefix); w_string_t *w_string_shell_escape(const w_string_t *str); w_string_t *w_string_slice(w_string_t *str, uint32_t start, uint32_t len); w_string_t *w_string_suffix(w_string_t *str); bool w_string_is_known_unicode(w_string_t *str); bool w_string_is_null_terminated(w_string_t *str); size_t w_string_strlen(w_string_t *str); uint32_t strlen_uint32(const char *str); bool w_is_path_absolute_cstr(const char *path); bool w_is_path_absolute_cstr_len(const char *path, uint32_t len); inline bool is_slash(char c) { return c == '/' #ifdef _WIN32 || c == '\\' #endif ; } class w_string; /** Represents a view over some externally managed string storage. * It is simply a pair of pointers that define the start and end * of the valid region. */ class w_string_piece { const char *s_, *e_; public: w_string_piece(); /* implicit */ w_string_piece(std::nullptr_t); inline /* implicit */ w_string_piece(w_string_t* str) : s_(str->buf), e_(str->buf + str->len) {} /** Construct from a string-like object */ template < typename String, typename std::enable_if< std::is_class::value && !std::is_same::value, int>::type = 0> inline /* implicit */ w_string_piece(const String& str) : s_(str.data()), e_(str.data() + str.size()) {} /** Construct from w_string. This is almost the same as * the string like object constructor above, but we need a nullptr check */ template < typename String, typename std::enable_if::value, int>:: type = 0> inline /* implicit */ w_string_piece(const String& str) { if (!str) { s_ = nullptr; e_ = nullptr; } else { s_ = str.data(); e_ = str.data() + str.size(); } } inline /* implicit */ w_string_piece(const char* cstr) : s_(cstr), e_(cstr + strlen(cstr)) {} /* implicit */ inline w_string_piece(const char* cstr, size_t len) : s_(cstr), e_(cstr + len) {} w_string_piece(const w_string_piece& other) = default; w_string_piece& operator=(const w_string_piece& other) = default; w_string_piece(w_string_piece&& other) noexcept; inline const char* data() const { return s_; } inline bool empty() const { return e_ == s_; } inline size_t size() const { return e_ - s_; } const char& operator[](size_t i) const { return s_[i]; } /** move the start of the string by n characters, stripping off that prefix */ void advance(size_t n) { if (n > size()) { throw std::range_error("index out of range"); } s_ += n; } /** Return a copy of the string as a w_string */ w_string asWString(w_string_type_t stringType = W_STRING_BYTE) const; /** Return a lowercased copy of the string */ w_string asLowerCase(w_string_type_t stringType = W_STRING_BYTE) const; /** Return a UTF-8-clean copy of the string */ w_string asUTF8Clean() const; /** Returns true if the filename suffix of this string matches * the provided suffix, which must be lower cased. * This string piece lower cased and matched against suffix */ bool hasSuffix(w_string_piece suffix) const; bool pathIsAbsolute() const; bool pathIsEqual(w_string_piece other) const; w_string_piece dirName() const; w_string_piece baseName() const; /** Split the string by delimiter and emit to the provided vector */ template void split(Vector& result, char delim) const { const char* begin = s_; const char* it = begin; while (it != e_) { if (*it == delim) { result.emplace_back(begin, it - begin); begin = ++it; continue; } ++it; } if (begin != e_) { result.emplace_back(begin, e_ - begin); } } bool operator==(w_string_piece other) const; bool operator!=(w_string_piece other) const; bool operator<(w_string_piece other) const; bool startsWith(w_string_piece prefix) const; bool startsWithCaseInsensitive(w_string_piece prefix) const; // Compute a hash value for this piece uint32_t hashValue() const; #ifdef _WIN32 // Returns a wide character representation of the piece std::wstring asWideUNC() const; #endif }; bool w_string_equal_caseless(w_string_piece a, w_string_piece b); struct watchman_dir; w_string w_dir_path_cat_str(const struct watchman_dir* dir, w_string_piece str); /** A smart pointer class for tracking w_string_t instances */ class w_string { public: /** Initialize a nullptr */ w_string(); /* implicit */ w_string(std::nullptr_t); /** Make a new string from some bytes and a type */ w_string( const char* buf, size_t len, w_string_type_t stringType = W_STRING_BYTE); /* implicit */ w_string( const char* buf, w_string_type_t stringType = W_STRING_BYTE); #ifdef _WIN32 /** Convert a wide character path to utf-8 and return it as a w_string. * This constructor is intended only for path names and not as a general * WCHAR -> w_string constructor; it will always apply path mapping * logic to the result and may mangle non-pathname strings if they * are passed to it. */ w_string(const WCHAR* wpath, size_t len); #endif /** Initialize, taking a ref on w_string_t */ /* implicit */ w_string(w_string_t* str, bool addRef = true); /** Release the string reference when we fall out of scope */ ~w_string(); /** Copying adds a ref */ w_string(const w_string& other); w_string& operator=(const w_string& other); /** Moving steals a ref */ w_string(w_string&& other) noexcept; w_string& operator=(w_string&& other); /** Stop tracking the underlying string object, decrementing * the reference count. */ void reset(); /** Stop tracking the underlying string object, returning the * reference to the caller. The caller is responsible for * decrementing the refcount */ w_string_t *release(); operator w_string_t*() const { return str_; } operator w_string_piece() const { return piece(); } inline w_string_piece piece() const { if (str_ == nullptr) { return w_string_piece(); } return w_string_piece(data(), size()); } explicit operator bool() const { return str_ != nullptr; } bool operator==(const w_string& other) const; bool operator!=(const w_string& other) const; bool operator<(const w_string& other) const; /** path concatenation * Pass in a list of w_string_pieces to join them all similarly to * the python os.path.join() function. */ static w_string pathCat(std::initializer_list elems); /** Similar to asprintf, but returns a w_string */ static w_string printf(WATCHMAN_FMT_STRING(const char* format), ...) WATCHMAN_FMT_ATTR(1, 2); static w_string vprintf(const char* format, va_list ap); template static w_string build(Args&&... args); /** Return a possibly new version of this string that is null terminated */ w_string asNullTerminated() const; /** Ensure that this instance is referencing a null terminated version * of the current string */ void makeNullTerminated(); /** Return a possibly new version of this string that has its separators * normalized to unix slashes */ w_string normalizeSeparators(char targetSeparator = '/') const; inline void ensureNotNull() const { w_assert(str_ != nullptr, "w_string is nullptr!"); } /** Returns a pointer to a null terminated c-string. * If this instance doesn't point to a null terminated c-string, throws * an exception that tells you to use asNullTerminated or makeNullTerminated * first. */ const char* c_str() const; const char* data() const { ensureNotNull(); return str_->buf; } bool empty() const { if (str_) { return str_->len == 0; } return true; } size_t size() const { ensureNotNull(); return str_->len; } w_string_type_t type() const { ensureNotNull(); return str_->type; } /** Returns the directory component of the string, assuming a path string */ w_string dirName() const; /** Returns the file name component of the string, assuming a path string */ w_string baseName() const; /** Returns the filename suffix of a path string */ w_string suffix() const; /** Returns a slice of this string */ w_string slice(uint32_t start, uint32_t len) const; private: w_string_t* str_{nullptr}; }; /** Allow w_string to act as a key in unordered_(map|set) */ namespace std { template <> struct hash { std::size_t operator()(w_string const& str) const { return w_string_hval(str); } }; template <> struct hash { std::size_t operator()(w_string_piece const& str) const { return str.hashValue(); } }; } namespace detail { // Testing whether something is a known stringy type // with .data(), .size() methods template struct IsStringSrc { enum { value = std::is_same::value || std::is_same::value || std::is_same::value }; }; // w_string_t is immutable so it doesn't have an .append() method, so // we use this helper class to keep track of where we're emitting the // concatenated strings. struct Appender { char* buf; char* limit; Appender(char* buf, size_t len) : buf(buf), limit(buf + len) {} // After placing data in the buffer, move the cursor forwards void advance(size_t amount) { w_assert(amount <= avail(), "advanced more than reserved space"); buf += amount; } // How many bytes of space are available size_t avail() const { return limit - buf; } // Copy a buffer in and advance the cursor void append(const char* src, size_t amount) { w_assert(amount <= avail(), "advancing more than reserved space"); memcpy(buf, src, amount); advance(amount); } // Helper for rendering a base10 number void appendUint64(uint64_t v) { // 20 is max possible decimal digits for a 64-bit number char localBuf[20]; uint32_t pos = sizeof(localBuf) - 1; while (v >= 10) { auto const q = v / 10; auto const r = static_cast(v % 10); localBuf[pos--] = '0' + r; v = q; } localBuf[pos] = static_cast(v) + '0'; append(localBuf + pos, sizeof(localBuf) - pos); } // Helper for rendering a base16 number void appendHexUint64(uint64_t v) { // 16 is max possible hex digits for a 64-bit number char localBuf[16]; static const char* hexDigit = "0123456789abcdef"; uint32_t pos = sizeof(localBuf) - 1; while (v >= 16) { auto const q = v / 16; auto const r = static_cast(v % 16); localBuf[pos--] = hexDigit[r]; v = q; } localBuf[pos] = hexDigit[static_cast(v)]; append(localBuf + pos, sizeof(localBuf) - pos); } }; template constexpr typename std::enable_if< std::is_pointer::value && !std::is_convertible::value, size_t>::type estimateSpaceNeeded(T) { // We render pointers as 0xXXXXXX, so we need a 2 byte prefix // and then an appropriate number of hex digits for the pointer size. return 2 + (sizeof(T) * 2); } // Render pointers as lowercase hex template typename std::enable_if< std::is_pointer::value && !std::is_convertible::value>::type toAppend(T value, Appender& result) { result.append("0x", 2); result.appendHexUint64(uintptr_t(value)); } // Defer to snprintf for rendering floating point values inline size_t estimateSpaceNeeded(double val) { return snprintf(nullptr, 0, "%f", val); } inline void toAppend(double val, Appender& result) { auto len = snprintf(result.buf, result.avail(), "%f", val); result.advance(len); } // Need to specialize nullptr otherwise we see it as an empty w_string_piece constexpr size_t estimateSpaceNeeded(std::nullptr_t) { return 3; // 0x0 } inline void toAppend(std::nullptr_t, Appender& result) { result.append("0x0", 3); } // Size an unsigned integer value template constexpr typename std::enable_if< std::is_integral::value && !std::is_signed::value, size_t>::type estimateSpaceNeeded(T) { // approx 0.3 decimal digits per binary bit; round up. // 8 bits -> 3 digits // 16 bits -> 5 digits // 32 bits -> 10 digits // 64 bits -> 20 digits // Note that for larger bit sizes it is more memory efficient // to compute the size on a per value basis (eg: if a 64-bit value // fits in a single decimal digit, we're 20x more wasteful with // memory). We're going for relative simplicity here; just // one simple function to measure up and ensure we have enough // room. return 1 + (sizeof(T) * 8 * 0.3); } // Render an unsigned integer value template typename std::enable_if< std::is_integral::value && !std::is_signed::value>::type toAppend(T value, Appender& result) { result.appendUint64(value); } template constexpr typename std::enable_if< std::is_integral::value && std::is_signed::value, size_t>::type estimateSpaceNeeded(T) { // Need 1 extra byte for the '-' sign return 2 + (sizeof(T) * 8 * 0.3); } // Render a signed integer value template typename std::enable_if< std::is_integral::value && std::is_signed::value>::type toAppend(T value, Appender& result) { if (value < 0) { result.append("-", 1); // When "value" is the smallest negative, negating it would // evoke undefined behavior, so instead of "-value" we carry // out a bitwise complement and add one. result.appendUint64(~static_cast(value) + 1); } else { result.appendUint64(static_cast(value)); } } // Measure a stringy value template typename std::enable_if::value, size_t>::type estimateSpaceNeeded(const T& src) { // For known stringy types, we call the size method if (!src.empty()) { return src.size(); } return 0; } template typename std::enable_if::value>::type toAppend( const T& src, Appender& result) { if (!src.empty()) { result.append(src.data(), src.size()); } } // If we can convert it to a string piece, we can call its size() method template typename std::enable_if::value, size_t>:: type estimateSpaceNeeded(T src) { return w_string_piece(src).size(); } template typename std::enable_if::value>::type toAppend(T src, Appender& result) { w_string_piece piece(src); result.append(piece.data(), piece.size()); } // If we can convert it to a string piece, we can call its size() method template typename std::enable_if< std::is_convertible::value && !IsStringSrc::value && !std::is_convertible::value, size_t>::type estimateSpaceNeeded(T src) { return w_string_piece(src).size(); } template typename std::enable_if< std::is_convertible::value && !IsStringSrc::value && !std::is_convertible::value>::type toAppend(T src, Appender& result) { w_string_piece piece(src); result.append(piece.data(), piece.size()); } // Recursive, variadic expansion to measure up a set of arguments inline size_t estimateSpaceToReserve(size_t accumulated) { return accumulated; } template size_t estimateSpaceToReserve(size_t accumulated, const T& v, const Args&... args) { return estimateSpaceToReserve(accumulated + estimateSpaceNeeded(v), args...); } // Recursive, variadic expansion to append a set of arguments inline void appendTo(Appender&) {} template void appendTo(Appender& result, const T& v, const Args&... args) { toAppend(v, result); appendTo(result, args...); } } // namespace detail // Concat the args together into a w_string template w_string w_string::build(Args&&... args) { auto reserved = ::detail::estimateSpaceToReserve(1, args...); auto s = (w_string_t*)(new char[sizeof(w_string_t) + reserved]); new (s) watchman_string(); s->refcnt = 1; auto buf = (char*)(s + 1); s->buf = buf; ::detail::Appender appender(buf, reserved); ::detail::appendTo(appender, args...); s->len = reserved - appender.avail(); buf[s->len] = '\0'; return w_string(s, false); } namespace watchman { // Helper for building a stringy container of a given type. // This is similar in spirit to folly::to<>. Usage is: // auto str = watchman::to("foo", 123) // and it will return a std::string holding "foo123" template Container to(Args&&... args) { auto reserved = ::detail::estimateSpaceToReserve(1, args...); Container result; result.resize(reserved); ::detail::Appender appender(&result[0], reserved); ::detail::appendTo(appender, args...); result.resize(reserved - appender.avail()); return result; } } #endif /* vim:ts=2:sw=2:et: */ watchman-4.9.0/watchman_synchronized.h000066400000000000000000000627101314236077500201160ustar00rootroot00000000000000/* Copyright 2016-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #pragma once /** * This module implements a Synchronized abstraction useful in * mutex-based concurrency. It was borrowed from folly::Synchronized * but cut down a little so that watchman does not need to pull in all * of folly and its somewhat obscure dependencies. * * The Synchronized class is the primary public API exposed by this * module. See folly/docs/Synchronized.md for a more complete explanation of * this class and its benefits. */ #include #include #include "watchman_shared_mutex.h" namespace watchman { /* * Lock policy classes. * * These can be used as template parameters to provide compile-time * selection over the type of lock operation to perform. */ /** * A lock policy that performs exclusive lock operations. */ struct LockPolicyExclusive { template static void lock(Mutex& mutex) { mutex.lock(); } template static bool try_lock_for( Mutex& mutex, const std::chrono::duration& timeout) { return mutex.try_lock_for(timeout); } template static void unlock(Mutex& mutex) { mutex.unlock(); } }; /** * A lock policy that performs shared lock operations. * This policy only works with shared mutex types. */ struct LockPolicyShared { template static void lock(Mutex& mutex) { mutex.lock_shared(); } template static bool try_lock_for( Mutex& mutex, const std::chrono::duration& timeout) { return mutex.try_lock_shared_for(mutex, timeout); } template static void unlock(Mutex& mutex) { mutex.unlock_shared(); } }; template class LockedPtrBase; template class LockedPtr; template class LockedGuardPtr; /** * SynchronizedBase is a helper parent class for Synchronized. * * It provides wlock() and rlock() methods for shared mutex types, * or lock() methods for purely exclusive mutex types. */ template class SynchronizedBase; /** * SynchronizedBase specialization for shared mutex types. * * This class provides wlock() and rlock() methods for acquiring the lock and * accessing the data. */ template class SynchronizedBase { public: using LockedPtr = ::watchman::LockedPtr; using ConstWLockedPtr = ::watchman::LockedPtr; using ConstLockedPtr = ::watchman::LockedPtr; /** * Acquire an exclusive lock, and return a LockedPtr that can be used to * safely access the datum. * * LockedPtr offers operator -> and * to provide access to the datum. * The lock will be released when the LockedPtr is destroyed. */ LockedPtr wlock() { return LockedPtr(static_cast(this)); } ConstWLockedPtr wlock() const { return ConstWLockedPtr(static_cast(this)); } /** * Acquire a read lock, and return a ConstLockedPtr that can be used to * safely access the datum. */ ConstLockedPtr rlock() const { return ConstLockedPtr(static_cast(this)); } /** * Attempts to acquire the lock, or fails if the timeout elapses first. * If acquisition is unsuccessful, the returned LockedPtr will be null. * * (Use LockedPtr::isNull() to check for validity.) */ template LockedPtr wlock(const std::chrono::duration& timeout) { return LockedPtr(static_cast(this), timeout); } template ConstWLockedPtr wlock( const std::chrono::duration& timeout) const { return ConstWLockedPtr(static_cast(this), timeout); } /** * Attempts to acquire the lock, or fails if the timeout elapses first. * If acquisition is unsuccessful, the returned LockedPtr will be null. * * (Use LockedPtr::isNull() to check for validity.) */ template ConstLockedPtr rlock( const std::chrono::duration& timeout) const { return ConstLockedPtr(static_cast(this), timeout); } }; /** * Synchronized encapsulates an object of type T (a "datum") paired * with a mutex. The only way to access the datum is while the mutex * is locked, and Synchronized makes it virtually impossible to do * otherwise. The code that would access the datum in unsafe ways * would look odd and convoluted, thus readily alerting the human * reviewer. In contrast, the code that uses Synchronized correctly * looks simple and intuitive. */ template struct Synchronized : public SynchronizedBase> { private: using Base = SynchronizedBase>; static constexpr bool nxCopyCtor{ std::is_nothrow_copy_constructible::value}; static constexpr bool nxMoveCtor{ std::is_nothrow_move_constructible::value}; public: using LockedPtr = typename Base::LockedPtr; using ConstLockedPtr = typename Base::ConstLockedPtr; using DataType = T; using MutexType = Mutex; /** * Default constructor leaves both members call their own default * constructor. */ Synchronized() = default; /** * Copy constructor copies the data (with locking the source and * all) but does NOT copy the mutex. Doing so would result in * deadlocks. * * Note that the copy constructor may throw because it acquires a lock in * the contextualRLock() method */ Synchronized(const Synchronized& rhs) /* may throw */ : Synchronized(rhs, rhs.contextualRLock()) {} /** * Move constructor moves the data (with locking the source and all) * but does not move the mutex. * * Note that the move constructor may throw because it acquires a lock. * Since the move constructor is not declared noexcept, when objects of this * class are used as elements in a vector or a similar container. The * elements might not be moved around when resizing. They might be copied * instead. You have been warned. */ Synchronized(Synchronized&& rhs) /* may throw */ : Synchronized(std::move(rhs), rhs.contextualLock()) {} /** * Constructor taking a datum as argument copies it. There is no * need to lock the constructing object. */ explicit Synchronized(const T& rhs) noexcept(nxCopyCtor) : datum_(rhs) {} /** * Constructor taking a datum rvalue as argument moves it. Again, * there is no need to lock the constructing object. */ explicit Synchronized(T&& rhs) noexcept(nxMoveCtor) : datum_(std::move(rhs)) {} /** * The canonical assignment operator only assigns the data, NOT the * mutex. It locks the two objects in ascending order of their * addresses. */ Synchronized& operator=(const Synchronized& rhs) { if (this == &rhs) { // Self-assignment, pass. } else if (this < &rhs) { auto guard1 = LockedPtr(this); auto guard2 = LockedPtr(&rhs); datum_ = rhs.datum_; } else { auto guard1 = LockedPtr(&rhs); auto guard2 = LockedPtr(this); datum_ = rhs.datum_; } return *this; } /** * Move assignment operator, only assigns the data, NOT the * mutex. It locks the two objects in ascending order of their * addresses. */ Synchronized& operator=(Synchronized&& rhs) { if (this == &rhs) { // Self-assignment, pass. } else if (this < &rhs) { auto guard1 = LockedPtr(this); auto guard2 = LockedPtr(&rhs); datum_ = std::move(rhs.datum_); } else { auto guard1 = LockedPtr(&rhs); auto guard2 = LockedPtr(this); datum_ = std::move(rhs.datum_); } return *this; } /** * Lock object, assign datum. */ Synchronized& operator=(const T& rhs) { auto guard = LockedPtr(this); datum_ = rhs; return *this; } /** * Lock object, move-assign datum. */ Synchronized& operator=(T&& rhs) { auto guard = LockedPtr(this); datum_ = std::move(rhs); return *this; } /** * Acquire an appropriate lock based on the context. * * If the mutex is a shared mutex, and the Synchronized instance is const, * this acquires a shared lock. Otherwise this acquires an exclusive lock. * * In general, prefer using the explicit rlock() and wlock() methods * for read-write locks, and lock() for purely exclusive locks. * * contextualLock() is primarily intended for use in other template functions * that do not necessarily know the lock type. */ LockedPtr contextualLock() { return LockedPtr(this); } ConstLockedPtr contextualLock() const { return ConstLockedPtr(this); } template LockedPtr contextualLock(const std::chrono::duration& timeout) { return LockedPtr(this, timeout); } template ConstLockedPtr contextualLock( const std::chrono::duration& timeout) const { return ConstLockedPtr(this, timeout); } /** * contextualRLock() acquires a read lock if the mutex type is shared, * or a regular exclusive lock for non-shared mutex types. * * contextualRLock() when you know that you prefer a read lock (if * available), even if the Synchronized object itself is non-const. */ ConstLockedPtr contextualRLock() const { return ConstLockedPtr(this); } template ConstLockedPtr contextualRLock( const std::chrono::duration& timeout) const { return ConstLockedPtr(this, timeout); } /** * Swaps with another Synchronized. Protected against * self-swap. Only data is swapped. Locks are acquired in increasing * address order. */ void swap(Synchronized& rhs) { if (this == &rhs) { return; } if (this > &rhs) { return rhs.swap(*this); } auto guard1 = LockedPtr(this); auto guard2 = LockedPtr(&rhs); using std::swap; swap(datum_, rhs.datum_); } /** * Swap with another datum. Recommended because it keeps the mutex * held only briefly. */ void swap(T& rhs) { LockedPtr guard(this); using std::swap; swap(datum_, rhs); } /** * Copies datum to a given target. */ void copy(T* target) const { ConstLockedPtr guard(this); *target = datum_; } /** * Returns a fresh copy of the datum. */ T copy() const { ConstLockedPtr guard(this); return datum_; } private: template friend class watchman::LockedPtrBase; template friend class watchman::LockedPtr; template friend class watchman::LockedGuardPtr; /** * Helper constructors to enable Synchronized for * non-default constructible types T. * Guards are created in actual public constructors and are alive * for the time required to construct the object */ Synchronized( const Synchronized& rhs, const ConstLockedPtr& /*guard*/) noexcept(nxCopyCtor) : datum_(rhs.datum_) {} Synchronized(Synchronized&& rhs, const LockedPtr& /*guard*/) noexcept( nxMoveCtor) : datum_(std::move(rhs.datum_)) {} // Synchronized data members T datum_; mutable Mutex mutex_; }; template class ScopedUnlocker; namespace detail { /* * A helper alias that resolves to "const T" if the template parameter * is a const Synchronized, or "T" if the parameter is not const. */ template using SynchronizedDataType = typename std::conditional< std::is_const::value, typename SynchronizedType::DataType const, typename SynchronizedType::DataType>::type; /* * A helper alias that resolves to a ConstLockedPtr if the template parameter * is a const Synchronized, or a LockedPtr if the parameter is not const. */ template using LockedPtrType = typename std::conditional< std::is_const::value, typename SynchronizedType::ConstLockedPtr, typename SynchronizedType::LockedPtr>::type; } // detail /** * A helper base class for implementing LockedPtr. * * The main reason for having this as a separate class is so we can specialize * it for std::mutex, so we can expose a std::unique_lock to the caller * when std::mutex is being used. This allows callers to use a * std::condition_variable with the mutex from a Synchronized. * * We don't use std::unique_lock with other Mutex types since it makes the * LockedPtr class slightly larger, and it makes the logic to support * ScopedUnlocker slightly more complicated. std::mutex is the only one that * really seems to benefit from the unique_lock. std::condition_variable * itself only supports std::unique_lock, so there doesn't seem to * be any real benefit to exposing the unique_lock with other mutex types. * * Note that the SynchronizedType template parameter may or may not be const * qualified. */ template class LockedPtrBase { public: using MutexType = Mutex; friend class watchman::ScopedUnlocker; /** * Destructor releases. */ ~LockedPtrBase() { if (parent_) { LockPolicy::unlock(parent_->mutex_); } } /** * Unlock the synchronized data. * * The LockedPtr can no longer be dereferenced after unlock() has been * called. isValid() will return false on an unlocked LockedPtr. * * unlock() can only be called on a LockedPtr that is valid. */ void unlock() { // DCHECK(parent_ != nullptr); LockPolicy::unlock(parent_->mutex_); parent_ = nullptr; } protected: LockedPtrBase() {} explicit LockedPtrBase(SynchronizedType* parent) : parent_(parent) { LockPolicy::lock(parent_->mutex_); } template LockedPtrBase( SynchronizedType* parent, const std::chrono::duration& timeout) { if (LockPolicy::try_lock_for(parent->mutex_, timeout)) { this->parent_ = parent; } } LockedPtrBase(LockedPtrBase&& rhs) noexcept : parent_(rhs.parent_) { rhs.parent_ = nullptr; } LockedPtrBase& operator=(LockedPtrBase&& rhs) noexcept { if (parent_) { LockPolicy::unlock(parent_->mutex_); } parent_ = rhs.parent_; rhs.parent_ = nullptr; return *this; } using UnlockerData = SynchronizedType*; /** * Get a pointer to the Synchronized object from the UnlockerData. * * In the generic case UnlockerData is just the Synchronized pointer, * so we return it as is. (This function is more interesting in the * std::mutex specialization below.) */ static SynchronizedType* getSynchronized(UnlockerData data) { return data; } UnlockerData releaseLock() { // DCHECK(parent_ != nullptr); auto current = parent_; parent_ = nullptr; LockPolicy::unlock(current->mutex_); return current; } void reacquireLock(UnlockerData&& data) { // DCHECK(parent_ == nullptr); parent_ = data; LockPolicy::lock(parent_->mutex_); } SynchronizedType* parent_ = nullptr; }; /** * LockedPtrBase specialization for use with std::mutex. * * When std::mutex is used we use a std::unique_lock to hold the mutex. * This makes it possible to use std::condition_variable with a * Synchronized. */ template class LockedPtrBase { public: using MutexType = std::mutex; friend class watchman::ScopedUnlocker; /** * Destructor releases. */ ~LockedPtrBase() { // The std::unique_lock will automatically release the lock when it is // destroyed, so we don't need to do anything extra here. } LockedPtrBase(LockedPtrBase&& rhs) noexcept : lock_(std::move(rhs.lock_)), parent_(rhs.parent_) { rhs.parent_ = nullptr; } LockedPtrBase& operator=(LockedPtrBase&& rhs) noexcept { lock_ = std::move(rhs.lock_); parent_ = rhs.parent_; rhs.parent_ = nullptr; return *this; } /** * Get a reference to the std::unique_lock. * * This is provided so that callers can use Synchronized * with a std::condition_variable. * * While this API could be used to bypass the normal Synchronized APIs and * manually interact with the underlying unique_lock, this is strongly * discouraged. */ std::unique_lock& getUniqueLock() { return lock_; } /** * Unlock the synchronized data. * * The LockedPtr can no longer be dereferenced after unlock() has been * called. isValid() will return false on an unlocked LockedPtr. * * unlock() can only be called on a LockedPtr that is valid. */ void unlock() { // DCHECK(parent_ != nullptr); lock_.unlock(); parent_ = nullptr; } protected: LockedPtrBase() {} explicit LockedPtrBase(SynchronizedType* parent) : lock_(parent->mutex_), parent_(parent) {} using UnlockerData = std::pair, SynchronizedType*>; static SynchronizedType* getSynchronized(const UnlockerData& data) { return data.second; } UnlockerData releaseLock() { // DCHECK(parent_ != nullptr); UnlockerData data(std::move(lock_), parent_); parent_ = nullptr; data.first.unlock(); return data; } void reacquireLock(UnlockerData&& data) { lock_ = std::move(data.first); lock_.lock(); parent_ = data.second; } // The specialization for std::mutex does have to store slightly more // state than the default implementation. std::unique_lock lock_; SynchronizedType* parent_ = nullptr; }; /** * This class temporarily unlocks a LockedPtr in a scoped manner. */ template class ScopedUnlocker { public: explicit ScopedUnlocker(LockedPtr* p) : ptr_(p), data_(ptr_->releaseLock()) {} ScopedUnlocker(const ScopedUnlocker&) = delete; ScopedUnlocker& operator=(const ScopedUnlocker&) = delete; ScopedUnlocker(ScopedUnlocker&& other) noexcept : ptr_(other.ptr_), data_(std::move(other.data_)) { other.ptr_ = nullptr; } ScopedUnlocker& operator=(ScopedUnlocker&& other) = delete; ~ScopedUnlocker() { if (ptr_) { ptr_->reacquireLock(std::move(data_)); } } /** * Return a pointer to the Synchronized object used by this ScopedUnlocker. */ SynchronizedType* getSynchronized() const { return LockedPtr::getSynchronized(data_); } private: using Data = typename LockedPtr::UnlockerData; LockedPtr* ptr_{nullptr}; Data data_; }; /** * A LockedPtr keeps a Synchronized object locked for the duration of * LockedPtr's existence. * * It provides access the datum's members directly by using operator->() and * operator*(). * * The LockPolicy parameter controls whether or not the lock is acquired in * exclusive or shared mode. */ template class LockedPtr : public LockedPtrBase< SynchronizedType, typename SynchronizedType::MutexType, LockPolicy> { private: using Base = LockedPtrBase< SynchronizedType, typename SynchronizedType::MutexType, LockPolicy>; using UnlockerData = typename Base::UnlockerData; // CDataType is the DataType with the appropriate const-qualification using CDataType = detail::SynchronizedDataType; public: using DataType = typename SynchronizedType::DataType; using MutexType = typename SynchronizedType::MutexType; using Synchronized = typename std::remove_const::type; friend class ScopedUnlocker; /** * Creates an uninitialized LockedPtr. * * Dereferencing an uninitialized LockedPtr is not allowed. */ LockedPtr() {} /** * Takes a Synchronized and locks it. */ explicit LockedPtr(SynchronizedType* parent) : Base(parent) {} /** * Takes a Synchronized and attempts to lock it, within the specified * timeout. * * Blocks until the lock is acquired or until the specified timeout expires. * If the timeout expired without acquiring the lock, the LockedPtr will be * null, and LockedPtr::isNull() will return true. */ template LockedPtr( SynchronizedType* parent, const std::chrono::duration& timeout) : Base(parent, timeout) {} /** * Move constructor. */ LockedPtr(LockedPtr&&) noexcept = default; /** * Move assignment operator. */ LockedPtr& operator=(LockedPtr&& rhs) noexcept = default; /* * Copy constructor and assignment operator are deleted. */ LockedPtr(const LockedPtr& rhs) = delete; LockedPtr& operator=(const LockedPtr& rhs) = delete; /** * Destructor releases. */ ~LockedPtr() {} /** * Check if this LockedPtr is uninitialized, or points to valid locked data. * * This method can be used to check if a timed-acquire operation succeeded. * If an acquire operation times out it will result in a null LockedPtr. * * A LockedPtr is always either null, or holds a lock to valid data. * Methods such as scopedUnlock() reset the LockedPtr to null for the * duration of the unlock. */ bool isNull() const { return this->parent_ == nullptr; } /** * Explicit boolean conversion. * * Returns !isNull() */ explicit operator bool() const { return this->parent_ != nullptr; } /** * Access the locked data. * * This method should only be used if the LockedPtr is valid. */ CDataType* operator->() const { return &this->parent_->datum_; } /** * Access the locked data. * * This method should only be used if the LockedPtr is valid. */ CDataType& operator*() const { return this->parent_->datum_; } /** * Temporarily unlock the LockedPtr, and reset it to null. * * Returns an helper object that will re-lock and restore the LockedPtr when * the helper is destroyed. The LockedPtr may not be dereferenced for as * long as this helper object exists. */ ScopedUnlocker scopedUnlock() { return ScopedUnlocker(this); } }; /** * LockedGuardPtr is a simplified version of LockedPtr. * * It is non-movable, and supports fewer features than LockedPtr. However, it * is ever-so-slightly more performant than LockedPtr. (The destructor can * unconditionally release the lock, without requiring a conditional branch.) * * The relationship between LockedGuardPtr and LockedPtr is similar to that * between std::lock_guard and std::unique_lock. */ template class LockedGuardPtr { private: // CDataType is the DataType with the appropriate const-qualification using CDataType = detail::SynchronizedDataType; public: using DataType = typename SynchronizedType::DataType; using MutexType = typename SynchronizedType::MutexType; using Synchronized = typename std::remove_const::type; LockedGuardPtr() = delete; /** * Takes a Synchronized and locks it. */ explicit LockedGuardPtr(SynchronizedType* parent) : parent_(parent) { LockPolicy::lock(parent_->mutex_); } /** * Destructor releases. */ ~LockedGuardPtr() { LockPolicy::unlock(parent_->mutex_); } /** * Access the locked data. */ CDataType* operator->() const { return &parent_->datum_; } /** * Access the locked data. */ CDataType& operator*() const { return parent_->datum_; } private: // This is the entire state of LockedGuardPtr. SynchronizedType* const parent_{nullptr}; }; /** * Acquire locks for multiple Synchronized objects, in a deadlock-safe * manner. * * The locks are acquired in order from lowest address to highest address. * (Note that this is not necessarily the same algorithm used by std::lock().) * * For parameters that are const and support shared locks, a read lock is * acquired. Otherwise an exclusive lock is acquired. * * TODO: Extend acquireLocked() with variadic template versions that * allow for more than 2 Synchronized arguments. (I haven't given too much * thought about how to implement this. It seems like it would be rather * complicated, but I think it should be possible.) */ template std::tuple, detail::LockedPtrType> acquireLocked(Sync1& l1, Sync2& l2) { if (static_cast(&l1) < static_cast(&l2)) { auto p1 = l1.contextualLock(); auto p2 = l2.contextualLock(); return std::make_tuple(std::move(p1), std::move(p2)); } else { auto p2 = l2.contextualLock(); auto p1 = l1.contextualLock(); return std::make_tuple(std::move(p1), std::move(p2)); } } /** * A version of acquireLocked() that returns a std::pair rather than a * std::tuple, which is easier to use in many places. */ template std::pair, detail::LockedPtrType> acquireLockedPair(Sync1& l1, Sync2& l2) { auto lockedPtrs = acquireLocked(l1, l2); return {std::move(std::get<0>(lockedPtrs)), std::move(std::get<1>(lockedPtrs))}; } } // namespace watchman watchman-4.9.0/watchman_system.h000066400000000000000000000073041314236077500167210ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #ifndef WATCHMAN_SYSTEM_H #define WATCHMAN_SYSTEM_H #ifndef _GNU_SOURCE #define _GNU_SOURCE 1 #endif #define __STDC_LIMIT_MACROS #define __STDC_FORMAT_MACROS #include "config.h" #ifdef WATCHMAN_FACEBOOK_INTERNAL #include "common/base/BuildInfo.h" #undef PACKAGE_VERSION #define PACKAGE_VERSION BuildInfo_kTimeISO8601 #define WATCHMAN_BUILD_INFO BuildInfo_kUpstreamRevision #endif #include #if HAVE_UNISTD_H #include #endif #include #include #include #if HAVE_SYS_INOTIFY_H # include #endif #if HAVE_SYS_EVENT_H # include #endif #if HAVE_PORT_H # include #endif #include #include #include #include #include #include #include #include #include #ifndef _WIN32 #include #include #endif #include #include #ifndef _WIN32 #include #include #endif #include #if defined(__linux__) && !defined(O_CLOEXEC) # define O_CLOEXEC 02000000 /* set close_on_exec, from asm/fcntl.h */ #endif #ifndef O_CLOEXEC # define O_CLOEXEC 0 #endif #ifndef _WIN32 #include #include #endif #ifdef HAVE_PCRE_H # include #endif #ifdef HAVE_EXECINFO_H # include #endif #ifndef _WIN32 #include #include #include #endif #include #include #ifdef HAVE_SYS_PARAM_H # include #endif #ifdef HAVE_SYS_RESOURCE_H # include #endif #ifdef _WIN32 # define PRIsize_t "Iu" #else # define PRIsize_t "zu" #endif #if defined(__clang__) # if __has_feature(address_sanitizer) # define WATCHMAN_ASAN 1 # endif #elif defined (__GNUC__) && \ (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 8)) || (__GNUC__ >= 5)) && \ __SANITIZE_ADDRESS__ # define WATCHMAN_ASAN 1 #endif #ifndef WATCHMAN_ASAN # define WATCHMAN_ASAN 0 #endif #ifdef HAVE_CORESERVICES_CORESERVICES_H # include # if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1070 # define HAVE_FSEVENTS 0 # else # define HAVE_FSEVENTS 1 # endif #endif // We make use of constructors to glue together modules // without maintaining static lists of things in the build // configuration. These are helpers to make this work // more portably #ifdef _WIN32 #pragma section(".CRT$XCU", read) # define w_ctor_fn_type(sym) void __cdecl sym(void) # define w_ctor_fn_reg(sym) \ static __declspec(allocate(".CRT$XCU")) \ void (__cdecl * w_paste1(sym, _reg))(void) = sym; #else # define w_ctor_fn_type(sym) \ __attribute__((constructor)) void sym(void) # define w_ctor_fn_reg(sym) /* not needed */ #endif /* sane, reasonably large filename size that we'll use * throughout; POSIX seems to define smallish buffers * that seem risky */ #define WATCHMAN_NAME_MAX 4096 // rpmbuild may enable fortify which turns on // warn_unused_result on a number of system functions. // This gives us a reasonably clean way to suppress // these warnings when we're using stack protection. #if __USE_FORTIFY_LEVEL > 0 # define ignore_result(x) \ do { __typeof__(x) _res = x; (void)_res; } while(0) #elif _MSC_VER >= 1400 # define ignore_result(x) \ do { int _res = (int)x; (void)_res; } while(0) #else # define ignore_result(x) x #endif // self-documenting hint to the compiler that we didn't use it #define unused_parameter(x) (void)x #ifdef __cplusplus extern "C" { #endif #ifndef _WIN32 // Not explicitly exported on Darwin, so we get to define it. extern char **environ; #endif #ifdef __cplusplus } #endif #endif /* vim:ts=2:sw=2:et: */ watchman-4.9.0/watchman_time.h000066400000000000000000000065021314236077500163320ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #pragma once #include "watchman_system.h" #include /* Return a timespec holding the equivalent of the supplied duration */ template inline timespec durationToTimeSpecDuration(const std::chrono::duration &d) { timespec ts{0,0}; ts.tv_sec = std::chrono::duration_cast(d).count(); ts.tv_nsec = std::chrono::duration_cast( d - std::chrono::seconds(ts.tv_sec)) .count(); return ts; } /* Return a timespec holding an absolute time equivalent to the provided * system_clock timepoint */ inline timespec systemClockToTimeSpec(const std::chrono::system_clock::time_point &p) { /* It just so happens that the epoch for system_clock is the same as the * epoch for timespec, so we can use our duration helper on the duration * since the epoch. */ return durationToTimeSpecDuration(p.time_since_epoch()); } void w_timeoutms_to_abs_timespec(int timeoutms, struct timespec *deadline); /* compare two timevals and return -1 if a is < b, 0 if a == b, * or 1 if b > a */ static inline int w_timeval_compare(struct timeval a, struct timeval b) { if (a.tv_sec < b.tv_sec) { return -1; } if (a.tv_sec > b.tv_sec) { return 1; } if (a.tv_usec < b.tv_usec) { return -1; } if (a.tv_usec > b.tv_usec) { return 1; } return 0; } #define WATCHMAN_USEC_IN_SEC 1000000 #define WATCHMAN_NSEC_IN_USEC 1000 #define WATCHMAN_NSEC_IN_SEC (1000 * 1000 * 1000) #define WATCHMAN_NSEC_IN_MSEC 1000000 #if defined(__APPLE__) || defined(__FreeBSD__) \ || (defined(__NetBSD__) && (__NetBSD_Version__ < 6099000000)) /* BSD-style subsecond timespec */ #define WATCHMAN_ST_TIMESPEC(type) st_##type##timespec #else /* POSIX standard timespec */ #define WATCHMAN_ST_TIMESPEC(type) st_##type##tim #endif static inline void w_timeval_add(const struct timeval a, const struct timeval b, struct timeval *result) { result->tv_sec = a.tv_sec + b.tv_sec; result->tv_usec = a.tv_usec + b.tv_usec; if (result->tv_usec > WATCHMAN_USEC_IN_SEC) { result->tv_sec++; result->tv_usec -= WATCHMAN_USEC_IN_SEC; } } static inline void w_timeval_sub(const struct timeval a, const struct timeval b, struct timeval *result) { result->tv_sec = a.tv_sec - b.tv_sec; result->tv_usec = a.tv_usec - b.tv_usec; if (result->tv_usec < 0) { result->tv_sec--; result->tv_usec += WATCHMAN_USEC_IN_SEC; } } static inline void w_timeval_to_timespec( const struct timeval a, struct timespec *ts) { ts->tv_sec = a.tv_sec; ts->tv_nsec = a.tv_usec * WATCHMAN_NSEC_IN_USEC; } static inline void w_timespec_to_timeval( const struct timespec ts, struct timeval *tv) { tv->tv_sec = ts.tv_sec; tv->tv_usec = ts.tv_nsec / WATCHMAN_NSEC_IN_USEC; } // Convert a timeval to a double that holds the fractional number of seconds static inline double w_timeval_abs_seconds(struct timeval tv){ double val = (double)tv.tv_sec; val += ((double)tv.tv_usec)/WATCHMAN_USEC_IN_SEC; return val; } static inline double w_timeval_diff(struct timeval start, struct timeval end) { double s = start.tv_sec + ((double)start.tv_usec)/WATCHMAN_USEC_IN_SEC; double e = end.tv_sec + ((double)end.tv_usec)/WATCHMAN_USEC_IN_SEC; return e - s; } watchman-4.9.0/watchman_trigger.h000066400000000000000000000030711314236077500170350ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #pragma once #include #include "ChildProcess.h" enum trigger_input_style { input_dev_null, input_json, input_name_list }; struct watchman_trigger_command { w_string triggername; std::shared_ptr query; json_ref definition; json_ref command; watchman::ChildProcess::Environment env; bool append_files; enum trigger_input_style stdin_style; uint32_t max_files_stdin; int stdout_flags; int stderr_flags; const char *stdout_name; const char *stderr_name; /* While we are running, this holds the pid * of the running process */ std::unique_ptr current_proc; watchman_trigger_command( const std::shared_ptr& root, const json_ref& trig, char** errmsg); watchman_trigger_command(const watchman_trigger_command&) = delete; ~watchman_trigger_command(); void stop(); void start(const std::shared_ptr& root); private: std::thread triggerThread_; std::shared_ptr subscriber_; std::unique_ptr ping_; bool stopTrigger_{false}; void run(const std::shared_ptr& root); bool maybeSpawn(const std::shared_ptr& root); bool waitNoIntr(); }; void w_assess_trigger( const std::shared_ptr& root, struct watchman_trigger_command* cmd); std::unique_ptr w_build_trigger_from_def( const std::shared_ptr& root, const json_ref& trig, char** errmsg); watchman-4.9.0/watchman_watcher.h000066400000000000000000000067611314236077500170400ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #pragma once #include "watchman_opendir.h" namespace watchman { class QueryableView; struct InMemoryView; } struct Watcher : public std::enable_shared_from_this { // What's it called?? const w_string name; // if this watcher notifies for individual files contained within // a watched dir, false if it only notifies for dirs #define WATCHER_HAS_PER_FILE_NOTIFICATIONS 1 // if renames do not reliably report the individual // files renamed in the hierarchy #define WATCHER_COALESCED_RENAME 2 unsigned flags; Watcher(const char* name, unsigned flags); // Start up threads or similar. Called in the context of the // notify thread virtual bool start(const std::shared_ptr& root); // Perform watcher-specific cleanup for a watched root when it is freed virtual ~Watcher(); // Initiate an OS-level watch on the provided file virtual bool startWatchFile(struct watchman_file* file); // Initiate an OS-level watch on the provided dir, return a DIR // handle, or NULL on error virtual std::unique_ptr startWatchDir( const std::shared_ptr& root, struct watchman_dir* dir, struct timeval now, const char* path) = 0; // Signal any threads to terminate. Do not join them here. virtual void signalThreads(); // Consume any available notifications. If there are none pending, // does not block. virtual bool consumeNotify( const std::shared_ptr& root, PendingCollection::LockedPtr& coll) = 0; // Wait for an inotify event to become available virtual bool waitNotify(int timeoutms) = 0; }; /** Maintains the list of available watchers. * This is fundamentally a map of name -> factory function. * Some watchers (kqueue, inotify) are available on multiple operating * systems: kqueue on OSX and *BSD, inotify on Linux and Solaris. * There are cases where a given watcher is not the preferred mechanism * (eg: inotify is implemented in terms of portfs on Solaris, so we * prefer to target the portfs layer directly), so we have a concept * of priority associated with the watcher. * Larger numbers are higher priority and will be favored when performing * auto-detection. **/ class WatcherRegistry { public: WatcherRegistry( const std::string& name, std::function(w_root_t*)> init, int priority = 0); /** Locate the appropriate watcher for root and initialize it */ static std::shared_ptr initWatcher(w_root_t* root); const std::string& getName() const { return name_; } private: std::string name_; std::function(w_root_t*)> init_; int pri_; static std::unordered_map& getRegistry(); static void registerFactory(const WatcherRegistry& factory); static const WatcherRegistry* getWatcherByName(const std::string& name); }; /** This template makes it less verbose for the common case of defining * a name -> class mapping in the registry. */ template class RegisterWatcher : public WatcherRegistry { public: explicit RegisterWatcher(const std::string& name, int priority = 0) : WatcherRegistry( name, [](w_root_t* root) { return std::make_shared( root, std::make_shared(root)); }, priority) {} }; watchman-4.9.0/website/000077500000000000000000000000001314236077500150005ustar00rootroot00000000000000watchman-4.9.0/website/.ruby-version000066400000000000000000000000061314236077500174410ustar00rootroot000000000000002.3.3 watchman-4.9.0/website/Gemfile000066400000000000000000000001241314236077500162700ustar00rootroot00000000000000source 'https://rubygems.org' gem 'github-pages', '~> 139', group: :jekyll_plugins watchman-4.9.0/website/Gemfile.lock000066400000000000000000000122551314236077500172270ustar00rootroot00000000000000GEM remote: https://rubygems.org/ specs: activesupport (4.2.8) i18n (~> 0.7) minitest (~> 5.1) thread_safe (~> 0.3, >= 0.3.4) tzinfo (~> 1.1) addressable (2.5.1) public_suffix (~> 2.0, >= 2.0.2) coffee-script (2.4.1) coffee-script-source execjs coffee-script-source (1.12.2) colorator (1.1.0) ethon (0.10.1) ffi (>= 1.3.0) execjs (2.7.0) faraday (0.12.1) multipart-post (>= 1.2, < 3) ffi (1.9.18) forwardable-extended (2.6.0) gemoji (3.0.0) github-pages (139) activesupport (= 4.2.8) github-pages-health-check (= 1.3.3) jekyll (= 3.4.3) jekyll-avatar (= 0.4.2) jekyll-coffeescript (= 1.0.1) jekyll-default-layout (= 0.1.4) jekyll-feed (= 0.9.2) jekyll-gist (= 1.4.0) jekyll-github-metadata (= 2.3.1) jekyll-mentions (= 1.2.0) jekyll-optional-front-matter (= 0.1.2) jekyll-paginate (= 1.1.0) jekyll-readme-index (= 0.1.0) jekyll-redirect-from (= 0.12.1) jekyll-relative-links (= 0.4.0) jekyll-sass-converter (= 1.5.0) jekyll-seo-tag (= 2.2.3) jekyll-sitemap (= 1.0.0) jekyll-swiss (= 0.4.0) jekyll-theme-architect (= 0.0.4) jekyll-theme-cayman (= 0.0.4) jekyll-theme-dinky (= 0.0.4) jekyll-theme-hacker (= 0.0.4) jekyll-theme-leap-day (= 0.0.4) jekyll-theme-merlot (= 0.0.4) jekyll-theme-midnight (= 0.0.4) jekyll-theme-minimal (= 0.0.4) jekyll-theme-modernist (= 0.0.4) jekyll-theme-primer (= 0.2.1) jekyll-theme-slate (= 0.0.4) jekyll-theme-tactile (= 0.0.4) jekyll-theme-time-machine (= 0.0.4) jekyll-titles-from-headings (= 0.1.5) jemoji (= 0.8.0) kramdown (= 1.13.2) liquid (= 3.0.6) listen (= 3.0.6) mercenary (~> 0.3) minima (= 2.1.1) rouge (= 1.11.1) terminal-table (~> 1.4) github-pages-health-check (1.3.3) addressable (~> 2.3) net-dns (~> 0.8) octokit (~> 4.0) public_suffix (~> 2.0) typhoeus (~> 0.7) html-pipeline (2.6.0) activesupport (>= 2) nokogiri (>= 1.4) i18n (0.8.4) jekyll (3.4.3) addressable (~> 2.4) colorator (~> 1.0) jekyll-sass-converter (~> 1.0) jekyll-watch (~> 1.1) kramdown (~> 1.3) liquid (~> 3.0) mercenary (~> 0.3.3) pathutil (~> 0.9) rouge (~> 1.7) safe_yaml (~> 1.0) jekyll-avatar (0.4.2) jekyll (~> 3.0) jekyll-coffeescript (1.0.1) coffee-script (~> 2.2) jekyll-default-layout (0.1.4) jekyll (~> 3.0) jekyll-feed (0.9.2) jekyll (~> 3.3) jekyll-gist (1.4.0) octokit (~> 4.2) jekyll-github-metadata (2.3.1) jekyll (~> 3.1) octokit (~> 4.0, != 4.4.0) jekyll-mentions (1.2.0) activesupport (~> 4.0) html-pipeline (~> 2.3) jekyll (~> 3.0) jekyll-optional-front-matter (0.1.2) jekyll (~> 3.0) jekyll-paginate (1.1.0) jekyll-readme-index (0.1.0) jekyll (~> 3.0) jekyll-redirect-from (0.12.1) jekyll (~> 3.3) jekyll-relative-links (0.4.0) jekyll (~> 3.3) jekyll-sass-converter (1.5.0) sass (~> 3.4) jekyll-seo-tag (2.2.3) jekyll (~> 3.3) jekyll-sitemap (1.0.0) jekyll (~> 3.3) jekyll-swiss (0.4.0) jekyll-theme-architect (0.0.4) jekyll (~> 3.3) jekyll-theme-cayman (0.0.4) jekyll (~> 3.3) jekyll-theme-dinky (0.0.4) jekyll (~> 3.3) jekyll-theme-hacker (0.0.4) jekyll (~> 3.3) jekyll-theme-leap-day (0.0.4) jekyll (~> 3.3) jekyll-theme-merlot (0.0.4) jekyll (~> 3.3) jekyll-theme-midnight (0.0.4) jekyll (~> 3.3) jekyll-theme-minimal (0.0.4) jekyll (~> 3.3) jekyll-theme-modernist (0.0.4) jekyll (~> 3.3) jekyll-theme-primer (0.2.1) jekyll (~> 3.3) jekyll-theme-slate (0.0.4) jekyll (~> 3.3) jekyll-theme-tactile (0.0.4) jekyll (~> 3.3) jekyll-theme-time-machine (0.0.4) jekyll (~> 3.3) jekyll-titles-from-headings (0.1.5) jekyll (~> 3.3) jekyll-watch (1.5.0) listen (~> 3.0, < 3.1) jemoji (0.8.0) activesupport (~> 4.0) gemoji (~> 3.0) html-pipeline (~> 2.2) jekyll (>= 3.0) kramdown (1.13.2) liquid (3.0.6) listen (3.0.6) rb-fsevent (>= 0.9.3) rb-inotify (>= 0.9.7) mercenary (0.3.6) mini_portile2 (2.2.0) minima (2.1.1) jekyll (~> 3.3) minitest (5.10.2) multipart-post (2.0.0) net-dns (0.8.0) nokogiri (1.8.0) mini_portile2 (~> 2.2.0) octokit (4.7.0) sawyer (~> 0.8.0, >= 0.5.3) pathutil (0.14.0) forwardable-extended (~> 2.6) public_suffix (2.0.5) rb-fsevent (0.9.8) rb-inotify (0.9.8) ffi (>= 0.5.0) rouge (1.11.1) safe_yaml (1.0.4) sass (3.4.24) sawyer (0.8.1) addressable (>= 2.3.5, < 2.6) faraday (~> 0.8, < 1.0) terminal-table (1.8.0) unicode-display_width (~> 1.1, >= 1.1.1) thread_safe (0.3.6) typhoeus (0.8.0) ethon (>= 0.8.0) tzinfo (1.2.3) thread_safe (~> 0.1) unicode-display_width (1.2.1) PLATFORMS ruby DEPENDENCIES github-pages (~> 139) BUNDLED WITH 1.15.1 watchman-4.9.0/website/README.md000066400000000000000000000010601314236077500162540ustar00rootroot00000000000000# How to run the website locally First time setup: * You'll need ruby 2 or higher (available by default on Mac) Then: ```bash sudo gem install bundler cd watchman/website sudo bundle install ``` ## After performing the setup To build the docs and start a webserver to browse them, and auto-rebuild as you change content files: ``` jekyll serve -w -t ``` If you've already got a built version of the site, you can save some time by skipping the initial build. It will rebuild files when things change: ``` jekyll serve -w -t --skip-initial-build ``` watchman-4.9.0/website/_config.yml000066400000000000000000000032451314236077500171330ustar00rootroot00000000000000permalink: /blog/:year/:month/:day/:title.html title: Watchman tagline: A file watching service fbappid: "1615782811974223" gacode: "UA-44373548-13" description: url: "https://facebook.github.io" baseurl: "/watchman" ghrepo: "facebook/watchman" logo: /static/logo.png # Build settings markdown: kramdown kramdown: input: GFM syntax_highlighter: rouge syntax_highlighter_opts: css_class: 'rougeHighlight' span: line_numbers: false block: line_numbers: true start_line: 1 exclude: [README.md, publish.sh, Gemfile] keep_files: [.git, .hg] collections: docs: output: true permalink: /docs/:name/ support: output: true permalink: /support.html sass: style: :compressed color: # Provides colour for background of top header of homepage primary: "#6779ff" # Provides colour for background of elsewhere on site secondary: "#e4e4e4" # A color that will work for buttons laid on top of primary colour light: "#4356e6" # Color that will work for text on top of light color lighttext: "#fff" # Color of text in the top header of homepage, must be legible on top of primary color headertext: "#fff" # Color of text on top of the secondary color background bodytext: "#151515" # Background of fixed nav header - headertext color is used for mini logo text nav: "#4356e6" # Text of links in the nav navtext: "#bfc6ff" # Color of link underlines in the main body, and hover background color for links link: "#4356e6" # Gems gems: - jekyll-feed - jekyll-seo-tag - jekyll-sitemap # Set default open graph image for all pages defaults: - scope: path: "" values: image: /static/og_image.png watchman-4.9.0/website/_data/000077500000000000000000000000001314236077500160505ustar00rootroot00000000000000watchman-4.9.0/website/_data/authors.yml000066400000000000000000000011111314236077500202520ustar00rootroot00000000000000 peteroh: full_name: Peter O'Hearn fbid: 100006115543749 cristianoc: full_name: Cristiano Calcagno fbid: 1184023671 ddino: full_name: Dino Distefano fbid: 100003081070147 shb: full_name: Sam Blackshear fbid: 3904246 jrm: full_name: Jeremy Dubreil fbid: 535764144 akotulski: full_name: Andrzej Kotulski fbid: 100000253156179 martinoluca: full_name: Martino Luca fbid: 1006790910 irp: full_name: Irene Papakonstantinou fbid: 100003814237180 dulmarod: full_name: Dulma Rodriguez fbid: 1355558869 jul: full_name: Jules Villard fbid: 100007156126884 watchman-4.9.0/website/_data/current_release.json000066400000000000000000000000261314236077500221230ustar00rootroot00000000000000{ "tag": "v4.7.0" } watchman-4.9.0/website/_data/features.yml000066400000000000000000000000001314236077500203770ustar00rootroot00000000000000watchman-4.9.0/website/_data/nav.yml000066400000000000000000000004111314236077500173530ustar00rootroot00000000000000- title: Docs href: /watchman/docs/install.html category: docs - title: Support href: /watchman/support.html category: support #- title: Blog # href: blog/ # category: blog - title: GitHub href: http://github.com/facebook/watchman category: github watchman-4.9.0/website/_data/nav_docs.yml000066400000000000000000000026141314236077500203720ustar00rootroot00000000000000- title: Installation items: - id: install - id: release-notes - title: Invocation items: - id: cli-options - id: watchman-make - id: watchman-wait - id: cppclient - id: nodejs - id: config - id: socket-interface - title: Compatibility items: - id: compatibility - id: capabilities - title: Commands items: - id: cmd.clock - id: cmd.find - id: cmd.flush-subscriptions - id: cmd.get-config - id: cmd.get-sockname - id: cmd.list-capabilities - id: cmd.log - id: cmd.log-level - id: cmd.query - id: cmd.shutdown-server - id: cmd.since - id: cmd.state-enter - id: cmd.state-leave - id: cmd.subscribe - id: cmd.trigger - id: cmd.trigger-del - id: cmd.trigger-list - id: cmd.unsubscribe - id: cmd.version - id: cmd.watch - id: cmd.watch-del - id: cmd.watch-del-all - id: cmd.watch-list - id: cmd.watch-project - title: Queries items: - id: clockspec - id: file-query - id: simple-query - id: scm-query - title: Expression Terms items: - id: expr.allof - id: expr.anyof - id: expr.dirname - id: expr.empty - id: expr.exists - id: expr.match - id: expr.name - id: expr.not - id: expr.pcre - id: expr.since - id: expr.size - id: expr.suffix - id: expr.type - title: Internals items: - id: bser - id: casefolding - id: contributing - id: cookies - title: Troubleshooting items: - id: troubleshooting watchman-4.9.0/website/_data/promo.yml000066400000000000000000000001221314236077500177220ustar00rootroot00000000000000- type: button href: docs/install.html text: Get Started - type: github_star watchman-4.9.0/website/_docs/000077500000000000000000000000001314236077500160675ustar00rootroot00000000000000watchman-4.9.0/website/_docs/BSER.markdown000066400000000000000000000074441314236077500203770ustar00rootroot00000000000000--- pageid: bser title: BSER Binary Protocol layout: docs section: Internals permalink: docs/bser.html --- The basic JSON protocol in watchman allows quick and easy integration. Applications with higher performance requirements may want to consider the binary protocol instead. The binary protocol is enabled by the client sending the byte sequence "\x00x\x01". ## PDU A PDU is prefixed by its length expressed as an encoded integer. This allows the peer to determine how much storage is required to read and decode it. ## Arrays Arrays are indicated by a `0x00` byte value followed by an integer value to indicate how many items follow. Then each item is encoded one after the other. ## Objects Objects are indicated by a `0x01` byte value followed by an integer value to indicate the number of properties in the object. Then each key/value pair is encoded one after the other. ## Strings Strings are indicated by a `0x02` byte value followed by an integer value to indicate the number of bytes in the string, followed by the bytes of the string. ### Encoding Unlike JSON, strings are not defined as having any particular encoding; they are transmitted as binary strings. This is because the underlying filesystem APIs don't define any particular encoding for names. *Exception:* Keys in objects that are defined by watchman commands are always ASCII. In general, keys in objects are always UTF-8. *Rationale:* Several programming languages like Python 3 expect all text to be in a particular encoding and make it inconvenient to pass in bytestrings or other encodings. Also, the primary purpose of not defining an encoding is that filenames don't always have one, and filenames are unlikely to show up as keys. ## Integers All integers are signed and transmitted in the host byte order of the system running the watchman daemon. * `0x03` indicates an int8_t. It is followed by the int8_t value. * `0x04` indicates an int16_t. It is followed by the int16_t value. * `0x05` indicates an int32_t. It is followed by the int32_t value. * `0x06` indicates an int64_t. It is followed by the int64_t value. ## Real A real number is indicated by a `0x07` byte followed by 8 bytes of double value. ## Boolean * `0x08` indicates boolean true * `0x09` indicates boolean false ## Null `0x0a` indicates the null value ## Array of Templated Objects `0x0b` indicates a compact array of objects follows. Some of the bigger datastructures returned by watchman are tabular data expressed as an array of objects. This serialization type factors out the repeated object keys into a header array listing the keys, followed by an array containing all the values of the objects. To represent missing keys in templated arrays, the `0x0c` encoding value may be present. If encountered it is interpreted as meaning that there is no value for the key that would have been decoded in this position. This is distinct from the null value. For example: ``` [ {"name": "fred", "age": 20}, {"name": "pete", "age": 30}, {"age": 25 }, ] ``` is represented similar to: ``` ["name", "age"], [ "fred", 20, "pete", 30, 0x0c, 25 ] ``` The precise sequence is: ``` 0b template 00 array -- start prop names 0302 int, 2 -- two prop names 02 string -- first prop "name" 0304 int, 4 6e616d65 "name" 02 string -- 2nd prop "age" 0303 int, 3 616765 "age" 0303 int, 3 -- there are 3 objects 02 string -- object 1, prop 1 name=fred 0304 int, 4 66726564 "fred" 0314 int 0x14 -- object 1, prop 2 age=20 02 string -- object 2, prop 1 name=pete 0304 int 4 70657465 "pete" 031e int, 0x1e -- object 2, prop 2 age=30 0c skip -- object 3, prop 1, not set 0319 int, 0x19 -- object 3, prop 2 age=25 ``` watchman-4.9.0/website/_docs/capabilities.markdown000066400000000000000000000033631314236077500222710ustar00rootroot00000000000000--- pageid: capabilities title: Capabilities layout: docs category: Compatibility permalink: docs/capabilities.html --- *Since 3.8* Capability names are used to identify modules that are either conditionally configured or that are introduced over time. You can use the [expanded version command](/watchman/docs/cmd/version.html) to query capabilities and avoid building knowledge of version numbers in your client application(s). You can use [list-capabilities](/watchman/docs/cmd/list-capabilities.html) command to obtain a list of capabilities supported by your watchman server. ### Commands Every command is identified by the command name prefixed by the string `cmd-`. For example, the `watch-project` command is indicated by the capability name `cmd-watch-project`. ### Expression Terms Every expression term is identified by the term name prefixed by the string `term-`. For example, the `match` term is indicated by the capability name `term-match`. ### File Result Fields Every field is identified by the field name prefixed by the string `field-`. For example, the `size` field is indicated by the capability name `field-size`. ### Feature Enhancements Sometimes we will enhance existing functionality by adding new options to existing commands. Since these changes won't result in adding a new command they won't implicitly gain a capability name. In these cases we'll assign an appropriate capability name by hand. The following feature capabilities are possible / released: Capability Name | Since version | Description ----------------|---------------|------------ `relative_root` | 3.3 | `relative_root` query option `wildmatch` | 3.7 | [Expanded `match` term with recursive globs](/watchman/docs/expr/match.html#wildmatch) watchman-4.9.0/website/_docs/casefolding.markdown000066400000000000000000000064231314236077500221160ustar00rootroot00000000000000--- pageid: casefolding title: Case-Insensitivity layout: docs section: Internals permalink: docs/casefolding.html --- Watchman is currently completely unaware of case-insensitivity in file systems, and does not attempt to do any case-folding of file names. On a case-insensitive file system like Mac OS X's [HFS+](https://en.wikipedia.org/wiki/HFS_Plus), this can manifest itself in different ways: * If a file `foo.txt` is renamed to `FOO.txt`, Watchman will report `FOO.txt` as created and `foo.txt` separately as changed. * If a file `foo.txt` is removed and another file `FOO.txt` is later added, Watchman will report `FOO.txt` as added, but it might report `foo.txt` as either removed or changed. In general, both `foo.txt` and `FOO.txt` can be reported, sometimes with different stat data, sometimes with the same stat data. ## Why doesn't Watchman support case-folding properly? One problem is that 'properly' is hard to pin down. There are at least four levels of correctness here: - handle ASCII case-folding only (95% solution) - handle ASCII + accented ASCII case-folding only (98%) - full handling of current Unicode spec using a Unicode database (99%) - using the special folding table written to a hidden file on disk at file system creation time that matches Apple's interpretation of Unicode at the time of the OS release + their own quirks (100%) Clients of Watchman might have their own idea of case-folding, which might or might not be compatible with Watchman's idea of it. So far, clients have managed to handle case-folding outside of Watchman, with some success. ## Does this matter? It depends on your application. **Example 1:** Your application is a build system that has a pre-baked list of files. Your application expects files to be on disk in the correct case even on case-insensitive file systems, and you declare that the behavior is undefined if they aren't. You invoke Watchman by asking it what files have changed. In this case, Watchman should work without you having to do anything special. **Example 2:** Your application is a build system rule to generate CSS rules that is run by a Watchman trigger on `*.scss`. You expect all files you care about to end with the string `.scss` on case-insensitive file systems, and not another variant of it like `.SCSS`. In this case, Watchman should work fine -- at most, it will provide you the same file multiple times with different case variants. You might be dealing with that in your build system anyway. **Example 3:** Like example 2, except you expect `.SCSS` and other variants to work too. In that case the only way is to explicitly add all possible variants to the trigger rule. **Example 4:** You're a source control system that has its own ideas about case-folding that might or might not match up with the operating system's. You perform case-folding against an internal data structure, so that if the data structure has `foo.txt` and the file system has `FOO.txt` you make `foo.txt` take precedence. In that case, Watchman will tell you about both `FOO.txt` and `foo.txt`, and it's up to you to perform normalization. [hgwatchman](https://bitbucket.org/facebook/hgwatchman) just consults the file system in the rare case that a file changes case. ## Credits The levels of correctness were proposed by Matt Mackall . watchman-4.9.0/website/_docs/cli-options.markdown000066400000000000000000000206011314236077500220720ustar00rootroot00000000000000--- pageid: cli-options title: Command Line layout: docs section: Invocation permalink: docs/cli-options.html --- The `watchman` executable contains both the client and the server components of the watchman service. By default, when `watchman` is run, it will attempt to communicate with your existing server instance (each user has their own persistent process), and will attempt to start it if it doesn't exist. There are some options that affect how `watchman` will locate the server, some options that affect only the client and some others that affect only the server. Since all of the options are understood by the same executable we've broken those out into sections of their own to make it clearer when they apply. ## Quick note on default locations Watchman will prefer to resolve your user name from the `$USER` environmental variable, or `$LOGNAME` if `$USER` was not set. If neither are set watchman will look it up from the system using `getpwuid(getuid())`. When we refer to `` in this documentation we mean the result of this resolution. In some cases Watchman will need to create files in a temporary location. Watchman will resolve this temporary location by looking at the `$TMPDIR` environmental variable, or `$TMP` if `$TMPDIR` was not set. If neither are set watchman will use `/tmp`. When we refer to `` in this documentation we mean the result of this resolution. Watchman tracks its persistent state in a location that we refer to as the `` in this documentation. *Since 3.1.* The `STATEDIR` defaulted to `/var/run/watchman`. You can change this default when you build watchman by using the configure option `--enable-statedir`. Earlier versions of Watchman didn't have a default statedir and would instead use the `` for this state. We switched away from that because some environments randomize the `` location and this made it difficult for clients to locate the Watchman service. *Since 3.8.* The `STATEDIR` defaults to `/var/run/watchman/-state`. You can change this default when you build watchman by using the configure option `--enable-statedir`; the configure option replaces the `/var/run/watchman` portion of this string. If you specify `--disable-statedir` then that portion of the string will be computed from the `` location. Watchman will create the `-state` portion if it does not exist, and will perform some permission and ownership checks to reduce the risk of untrusted users placing files in this location. If those checks are not satisfied, watchman will refuse to start. ## Locating the service ``` -U, --sockname=PATH Specify alternate sockname ``` The default location for sockname will be `/`. Older versions of Watchman would default to `/.watchman.`, depending on how it was configured. If you are building a client to access the service programmatically, we recommend that you invoke [watchman get-sockname]( /watchman/docs/cmd/get-sockname.html) to discover the path that the client and server would use. This has the side effect of spawning the service for you if it isn't already running. ## Client Options The `watchman` executable will attempt to start the service if there is no response on the socket specified above. In some cases it is desirable to avoid starting the service if it isn't running: ``` --no-spawn Don't spawn service if it is not already running. Will try running the command in client mode if possible. --no-local When no-spawn is enabled, don't use client mode ``` Client mode implements the [watchman find command]( /watchman/docs/cmd/find.html) as an immediate search. These options control how the client talks to the server: ``` -p, --persistent Persist and wait for further responses --server-encoding=ARG CLI<->server encoding. json or bser. ``` Persistent connections have relatively limited use with the CLI, but can be useful to connect ad-hoc to the service to receive logging information (See [log-level](/watchman/docs/cmd/log-level.html)). The server encoding option controls how requests and responses are formatted when talking to the server. You generally shouldn't need to worry about this. ### Input and Output Most simple invocations of the CLI will pass a list of arguments: ```bash $ watchman watch /path/to/dir ``` This is turned into a request like this: ```json ["watch", "/path/to/dir"] ``` and sent to the service using the [Socket Interface]( /watchman/docs/socket-interface.html). The response is received and then sent to the `stdout` stream formatted based on the selected output-encoding: ``` --output-encoding=ARG CLI output encoding. json (default) or bser --no-pretty Don't pretty print JSON output (more efficient when being processed by another program) ``` Each command has its own response output but watchman will always include a field named `error` if something about the request was not successful. In case of some protocol level errors (eg: connection was terminated) instead of printing a response on `stdout`, an unstructured error message will be printed to `stderr` and the process will exit with a non-zero exit status. Instead of passing the request as command line parameters, you can send a JSON representation on the `stdin` stream. These invocations are all equivalent: ```bash $ watchman watch /path/to/dir ``` ```bash $ watchman -j <<-EOT ["watch", "/path/to/dir"] EOT ``` ```bash $ watchman -j <<< '["watch", "/path/to/dir"]' ``` ```bash $ echo '["watch", "/path/to/dir"]' | watchman -j ``` ```bash $ echo '["watch", "/path/to/dir"]' > cmd.json $ watchman -j < cmd.json ``` ```bash $ watchman --json-command <<-EOT ["watch", "/path/to/dir"] EOT ``` *Since 3.8* The CLI now also recognizes BSER as a valid input stream when using the `-j` option. This will implicitly set `--server-encoding=bser` and `--output-encoding=bser` if those options have not been set to something else. ## Exit Status The `watchman` binary will exit with a return code of 0 in most cases; this indicates that the output it generated should be valid JSON. To determine if your command was successful, you need to parse the JSON and look for the `error` field as described above. `watchman` will exit with a non-zero exit status in cases where something low-level went wrong, such as protocol level errors (eg: connection was terminated). ## Server Options These options are used when starting the server. They are recognized by the client and affect how it will start the server, but have no effect if the server is already running. To change the effective values of these options for a running server, you will need to restart it (you can stop it by running [watchman shutdown-server](/watchman/docs/cmd/shutdown-server.html)). By default, watchman will remember all watches and associated triggers and reinstate them if the process is restarted. This state is stored in the *statefile*: ``` --statefile=PATH Specify path to file to hold watch and trigger state -n, --no-save-state Don't save state between invocations ``` The default location for statefile will be `/.state`. Older versions of watchman may store the state in `/.watchman..state`, depending on how they were configured. ``` -o, --logfile=PATH Specify path to logfile --log-level set log verbosity (0 = off, default is 1, verbose = 2) ``` The default location for logfile will be `/.log`. Older versions of watchman may store the logs in `/.watchman..log`, depending on how they were configured. In some relatively uncommon circumstances, such as in test harnesses, you may need to directly run the service without it putting itself into the background: ``` -f, --foreground Run the service in the foreground ``` *Since 4.6.* ``` --inetd Spawning from an inetd style supervisor ``` When this flag is specified, watchman will use stdin as the listening socket rather than attempting to set it up for itself. This allows some other process to maintain the socket and defer activating the watchman service until a client is ready to connect. This is most practically beneficial when used together with `systemd`. [This commit includes a sample configuration for systemd](https://github.com/facebook/watchman/commit/2985377eaf8c8538b28fae9add061b67991a87c2). watchman-4.9.0/website/_docs/clockspec.markdown000066400000000000000000000033121314236077500216000ustar00rootroot00000000000000--- pageid: clockspec title: Clockspec layout: docs section: Queries permalink: docs/clockspec.html --- For commands that query based on time, watchman offers a couple of different ways to measure time. * number of seconds since the unix epoch (unix `time_t` style) * a clock id of the form `c:123:234` * a named cursor of the form `n:whatever` (but clock ids are faster!) The first and most obvious is passing a unix timestamp. Watchman records the observed time that files change and allows you to find files that have changed since that time. Using a timestamp is prone to race conditions in understanding the complete state of the file tree. Using an abstract clock id insulates the client from these race conditions by ticking as changes are detected rather than as time moves. Watchman returns the current clock id when it delivers match results; you can use that value as the clockspec in your next time relative query to get a race free assessment of changed files. As a convenience, watchman can maintain the last observed clock for a client by associating it with a client defined cursor name. For example, you could enumerate all the "C" source files on your first invocation of: ```bash watchman since /path/to/src n:c_srcs '*.c' ``` and when you run it a second time, it will show you only the "C" source files that changed since the last time that someone queried using "n:c_srcs" as the clock spec. However, it's not possible to "roll back" a named cursor, so advanced users desiring such functionality should use clock ids instead. *Since 4.7.* We recommend not using the `n:whatever` form as it requires an exclusive lock on the view to execute; this can increase contention and result in slower queries. watchman-4.9.0/website/_docs/cmd.clock.markdown000066400000000000000000000020031314236077500214630ustar00rootroot00000000000000--- pageid: cmd.clock title: clock layout: docs section: Commands permalink: docs/cmd/clock.html --- Returns the current clock value for a watched root. *Since 3.9.* *The [capability](/watchman/docs/capabilities.html) name associated with this enhanced functionality is `clock-sync-timeout`.* `sync_timeout` specifies the number of milliseconds that you want to wait to observe a synchronization cookie. The synchronization cookie is created at the start of your clock call and, once the cookie is observed, means that the clock value returned by this command is at least as current as the time of your clock call. If no `sync_timeout` is specified, the returned clock value is the instantaneous value of the clock associated with the watched root, and may be almost immediately invalidated if there are any filesystem notifications that are yet to be processed. ```bash $ watchman clock /path/to/dir ``` JSON: Note the third options argument is optional. ```json ["clock", "/path/to/dir", {"sync_timeout": 100}] ``` watchman-4.9.0/website/_docs/cmd.find.markdown000066400000000000000000000004421314236077500213150ustar00rootroot00000000000000--- pageid: cmd.find title: find layout: docs section: Commands permalink: docs/cmd/find.html --- Finds all files that match the optional list of patterns under the specified dir. If no patterns were specified, all files are returned. ```bash $ watchman find /path/to/dir [patterns] ``` watchman-4.9.0/website/_docs/cmd.flush-subscriptions.markdown000066400000000000000000000055401314236077500244270ustar00rootroot00000000000000--- pageid: cmd.flush-subscriptions title: flush-subscriptions layout: docs section: Commands permalink: docs/cmd/flush-subscriptions.html --- *Since 4.8.* Flushes buffered updates to subscriptions associated with the current session, guaranteeing that they are up-to-date as of the time Watchman received the `flush-subscriptions` command. Subscription updates will be interleaved between the `flush-subscriptions` request and its response. Once the response has been received, subscriptions are up-to-date. This command is designed to be used by interactive programs that have a background process or daemon maintaining a subscription to Watchman. The typical pattern is for interactive commands to be forwarded to the process, which calls `flush-subscriptions` and then processes any subscription updates it received. This pattern eliminates races with files changed right before the interactive command. ### Arguments * `sync_timeout`: Required. The number of milliseconds to wait to observe a synchronization cookie. The synchronization cookie is created at the start of the `flush-subscriptions` call, and once the cookie is observed, means that the OS has sent watchman all the updates till at least the start of the `flush-subscriptions` call. * `subscriptions`: Optional. Which subscriptions to flush. By default this flushes all subscriptions associated with this project on this session. ### Examples Assuming subscriptions `sub1`, `sub2` and `sub3` have been established on this session, if `sub1` has updates pending, `sub2` is up-to-date and `sub3` is currently dropping updates: ```json ["flush-subscriptions", "/path/to/root", {"sync_timeout": 1000}] ``` In response, Watchman will first emit a unilateral subscription PDU for `sub1`, then respond with ```json { "clock": "c:1446410081:18462:7:135", "synced": ["sub1"], "no_sync_needed": ["sub2"], "dropped": ["sub3"] } ``` To flush updates for some but not all subscriptions associated with this session: ```json ["flush-subscriptions", "/path/to/root", { "sync_timeout": 1000, "subscriptions": ["sub1", "sub2"] } ] ``` ### Deferred and Dropped Updates Subscriptions will typically buffer individual updates until a *settle* period has expired. `flush-subscriptions` will force those updates through immediately. Subscriptions currently deferring updates because of `defer` or `defer_vcs` are updated immediately, without waiting for the `defer` or `defer_vcs` to end. Subscriptions currently dropping updates with a `drop` state will not get any updates. Their names will be returned in the `dropped` field. ### Notes * `flush-subscriptions` can only be used to flush subscriptions associated with the current session. * A single session can be subscribed to updates from multiple projects at the same time. However, `flush-subscriptions` can only flush updates for one project at a time. watchman-4.9.0/website/_docs/cmd.get-config.markdown000066400000000000000000000020071314236077500224160ustar00rootroot00000000000000--- pageid: cmd.get-config title: get-config layout: docs section: Commands permalink: docs/cmd/get-config.html --- The `get-config` command returns the `.watchmanconfig` for the root. If there is no `.watchmanconfig`, it returns an empty configuration field: ```bash $ watchman get-config . { "version": "2.9.9", "config": {} } ``` ```bash $ watchman get-config /path/to/root { "version": "2.9.9", "config": { "ignore_dirs": [ "buck-out" ] } } ``` Note that watchman only reads the `.watchmanconfig` file when the watch is established. If changes are made after that point, the `get-config` response will not reflect them. See [Configuration Options](/watchman/docs/config.html#configuration-options) for details on valid contents of the `config` field. Note that the values returned by `get-config` are passed straight through from the `.watchmanconfig` file, and thus may contain fields that are not strictly legal. This command is available since watchman version 2.9.9. watchman-4.9.0/website/_docs/cmd.get-sockname.markdown000066400000000000000000000012041314236077500227470ustar00rootroot00000000000000--- pageid: cmd.get-sockname title: get-sockname layout: docs section: Commands permalink: docs/cmd/get-sockname.html --- If you're integrating against watchman using the unix socket and either the JSON or BSER protocol, you may need to discover the correct socket path. Rather than hard-coding the path or replicating the logic discussed in [Command Line](/watchman/docs/cli-options.html), you can simply execute the CLI to determine the path. This has the side effect of spawning the service for your user if it was not already running--bonus! ```bash $ watchman get-sockname { "version": "2.5", "sockname": "/tmp/.watchman.wez" } ``` watchman-4.9.0/website/_docs/cmd.list-capabilities.markdown000066400000000000000000000013621314236077500240010ustar00rootroot00000000000000--- pageid: cmd.list-capabilities title: list-capabilities layout: docs category: Commands permalink: docs/cmd/list-capabilities.html --- *Since 3.8.* This command returns the full list of supported [capabilities]( /watchman/docs/capabilities.html) offered by the watchman server. The intention is that client applications will use the [expanded version command](/watchman/docs/cmd/version.html) to check compatibility rather than interrogating the full list. Here's some example output. The actual capabilities list is in unspecified order and is much longer than is reproduced here: ```bash $ watchman list-capabilities { "version": "3.8.0", "capabilities": [ "field-mode", "term-allof", "cmd-trigger" ] } ``` watchman-4.9.0/website/_docs/cmd.log-level.markdown000066400000000000000000000016621314236077500222700ustar00rootroot00000000000000--- pageid: cmd.log-level title: log-level layout: docs section: Commands permalink: docs/cmd/log-level.html --- Changes the log level of your connection to the watchman service. From the command line: ```bash $ watchman --server-encoding=json --persistent log-level debug ``` JSON: ```json ["log-level", "debug"] ``` This command changes the log level of your client session. Whenever watchman writes to its log, it walks the list of client sessions and also sends a log packet to any that have their log level set to match the current log event. Valid log levels are: * `debug` - receive all log events * `error` - receive only important log events * `off` - receive no log events Note that you cannot tap into the output of triggered processes using this mechanism. Log events are sent unilaterally by the server as they happen, and have the following structure: ```json { "version": "1.0", "log": "log this please" } ``` watchman-4.9.0/website/_docs/cmd.log.markdown000066400000000000000000000002761314236077500211630ustar00rootroot00000000000000--- pageid: cmd.log title: log layout: docs section: Commands permalink: docs/cmd/log.html --- Generates a log line in the watchman log. ```bash $ watchman log debug "log this please" ``` watchman-4.9.0/website/_docs/cmd.query.markdown000066400000000000000000000146061314236077500215510ustar00rootroot00000000000000--- pageid: cmd.query title: query layout: docs section: Commands permalink: docs/cmd/query.html --- *Since 1.6.* ```bash $ watchman -j <<-EOT ["query", "/path/to/root", { "suffix": "php", "expression": ["allof", ["type", "f"], ["not", "empty"], ["ipcre", "test", "basename"] ], "fields": ["name"] }] EOT ``` Executes a query against the specified root. This example uses the `-j` flag to the watchman binary that tells it to read stdin and interpret it as the JSON request object to send to the watchman service. This flag allows you to send in a pretty JSON object (as shown above), but if you're using the socket interface you must still format the object as a single line JSON request as documented in the protocol spec. The first argument to query is the path to the watched root. The second argument holds a JSON object describing the query to be run. The query object is processed by passing it to the query engine (see [File Queries]( /watchman/docs/file-query.html)) which will generate a set of matching files. The query command will then consult the `fields` member of the query object; if it is not present it will default to: ```json "fields": ["name", "exists", "new", "size", "mode"] ``` For each file in the result set, the query command will generate a JSON object value populated with the requested fields. For example, the default set of fields will return a response something like this: ```json { "version": "2.9", "clock": "c:80616:59", "is_fresh_instance": false, "files": [ { "exists": true, "mode": 33188, "new": false, "name": "argv.c", "size": 1340, } ] } ``` For queries using the `since` generator, the `is_fresh_instance` member is true if the particular clock value indicates that it was returned by a different instance of watchman, or a named cursor hasn't been seen before. In that case, only files that currently exist will be returned, and all files will have `new` set to `true`. For all other queries, is_fresh_instance will always be true. Advanced users may set the input parameter `empty_on_fresh_instance` to true, in which case no files will be returned for fresh instances. If the `fields` member consists of a single entry, the files result will be a simple array of values; ```"fields": ["name"]``` produces: ```json { "version": "1.5", "clock": "c:80616:59", "files": ["argv.c", "foo.c"] } ``` ### Available fields * `name` - string: the filename, relative to the watched root * `exists` - bool: true if the file exists, false if it has been deleted * `cclock` - string: the "created clock"; the clock value when we first observed the file, or the clock value when it last switched from !exists to exists. * `oclock` - string: the "observed clock"; the clock value where we last observed some change in this file or its metadata. * `ctime`, `ctime_ms`, `ctime_us`, `ctime_ns`, `ctime_f` - last inode change time measured in integer seconds, milliseconds, microseconds, nanoseconds or floating point seconds respectively. * `mtime`, `mtime_ms`, `mtime_us`, `mtime_ns`, `mtime_f` - modified time measured in integer seconds, milliseconds, microseconds, nanoseconds or floating point seconds respectively. * `size` - integer: file size in bytes * `mode` - integer: file (or directory) mode expressed as a decimal integer * `uid` - integer: the owning uid * `gid` - integer: the owning gid * `ino` - integer: the inode number * `dev` - integer: the device number * `nlink` - integer: number of hard links * `new` - bool: whether this entry is newer than the `since` generator criteria *Since 3.1.* * `type` - string: the file type. Has the the values listed in [the type query expression](../expr/type.html) *Since 4.6.* * `symlink_target` - string: the target of a symbolic link if the file is a symbolic link ### Synchronization timeout (since 2.1) By default a `query` will wait for up to 60 seconds for the view of the filesystem to become current. Watchman decides that the view is current by creating a cookie file and waiting to observe the notification that it is present. If the cookie is not observed within the sync_timeout period then the query invocation will error out with a synchronization error message. If your synchronization requirements differ from the default, you may pass in your desired timeout when you construct your query; it must be an integer value expressed in milliseconds: ```json ["query", "/path/to/root", { "expression": ["exists"], "fields": ["name"], "sync_timeout": 60000 }] ``` You may specify `0` as the value if you do not wish for the query to create a cookie and synchronize; the query will be evaluated over the present view of the tree, which may lag behind the present state of the filesystem. ### Lock timeout *Since 4.6.* By default queries will wait for up to 60 seconds to acquire a lock to inspect the view of the filesystem tree. In practice, this timeout should never be hit (it is indicative of an environmental or load related issue). However, in some situations it is important to ensure that the query attempt times out sooner than this. You may use the `lock_timeout` field to control this behavior. `lock_timeout` must be an integer value expressed in milliseconds: ```json ["query", "/path/to/root", { "expression": ["exists"], "fields": ["name"], "lock_timeout": 60000, "sync_timeout": 60000 }] ``` Prior to version 4.6, the `lock_timeout` could not be configured and had an effective value of infinity. ### Case sensitivity *Since 2.9.9.* On systems where the watched root is a case insensitive filesystem (this is the common case for OS X and Windows), various name matching operations default to case insensitive. *Since 4.7.* You may override the case sensitivity of the various name matching operations by setting the `case_sensitive` field in your query spec. It default to the case sensitivity of the watched root. This is useful in cases where you know that the contents of the tree are treated case sensitively by your various tools but are running on a case insensitive filesystem. By forcing the name matches to case sensitive mode the matches are faster and in some cases can be accelerated by using alternative algorithms. ```bash $ watchman -j <<-EOT ["query", "/path/to/root", { "suffix": "php", "expression": ["match", "foo*.c", "basename"], "case_sensitive": true, "fields": ["name"] }] EOT ``` watchman-4.9.0/website/_docs/cmd.shutdown-server.markdown000066400000000000000000000003711314236077500235550ustar00rootroot00000000000000--- pageid: cmd.shutdown-server title: shutdown-server layout: docs section: Commands permalink: docs/cmd/shutdown-server.html --- This command causes your watchman service to exit with a normal status code. ```bash $ watchman shutdown-server ``` watchman-4.9.0/website/_docs/cmd.since.markdown000066400000000000000000000036321314236077500215020ustar00rootroot00000000000000--- pageid: cmd.since title: since layout: docs section: Commands permalink: docs/cmd/since.html --- ```bash $ watchman since /path/to/dir [patterns] ``` Finds all files that were modified since the specified clockspec that match the optional list of patterns. If no patterns are specified, all modified files are returned. The response includes a `files` array, each element of which is an object with fields containing information about the file: ```json { "version": "2.7", "is_fresh_instance": true, "clock": "c:80616:59", "files": [ { "cclock": "c:80616:1", "ctime": 1357617635, "dev": 16777220, "exists": true, "gid": 100, "ino": 20161390, "mode": 33188, "mtime": 1357617635, "name": "argv.c", "nlink": 1, "oclock": "c:80616:39", "size": 1340, "uid": 100 } ] } ``` The fields should be largely self-explanatory; they correspond to fields from the underlying `struct stat`, but a couple need special mention: * **cclock** - The "created" clock; the clock value representing the time that this file was first observed, or the clock value where this file changed from deleted to non-deleted state. * **oclock** - The "observed" clock; the clock value representing the time that this file was last observed to have changed. * **exists** - whether we believe that the file exists on disk or not. If this is false, most of the other fields will be omitted. * **new** - this is only set in cases where the file results were generated as part of a time or clock based query, such as the `since` command. If the `cclock` value for the file is newer than the time you specified then the file entry is marked as `new`. This allows you to more easily determine if the file was newly created without having to maintain a lot of state. watchman-4.9.0/website/_docs/cmd.state-enter.markdown000066400000000000000000000065401314236077500226350ustar00rootroot00000000000000--- pageid: cmd.state-enter title: state-enter layout: docs section: Commands permalink: docs/cmd/state-enter.html --- *Since 4.4* The `state-enter` command works in conjunction with [state-leave](/watchman/docs/cmd/state-leave.html) to facilitate [advanced settling in subscriptions](/watchman/docs/cmd/subscribe.html#advanced-settling). `state-enter` causes a watch to be marked as being in a particular named state. The state is asserted until a corresponding `state-leave` command is issued or *until the watchman client session that entered the state disconnects*. This automatic cleanup helps to avoid breaking subscribers if the tooling that initiated a state terminates unexpectedly. Subscriptions can use the [defer](/watchman/docs/cmd/subscribe.html#defer) and [drop](/watchman/docs/cmd/subscribe.html#drop) fields to defer or drop notifications generated while the watch is in a particular named state. ### Examples This is the simplest example; entering a state named `mystate`: ```json ["state-enter", "/path/to/root", "mystate"] ``` It will cause any subscribers to receive a unilateral subscription PDU from the watchman server: ```json { "subscription": "mysubscriptionname", "root": "/path/to/root", "state-enter": "mystate", "clock": "c:1446410081:18462:7:127" } ``` The `clock` field in the response is the (synchronized; see below) clock at the time that the state was entered and can be used in subsequent queries, in combination with the corresponding `state-leave` subscription PDU clock, to locate things that changed while the state was asserted. A more complex example demonstrates passing metadata to any subscribers. The `metadata` field is propagated through to the subscribers and is not interpreted by the watchman server. It can be any JSON value. ```json ["state-enter", "/path/to/root", { "name": "mystate", "metadata": { "foo": "bar" } }] ``` This will emit the following unilateral subscription PDU to all subscribers: ```json { "subscription": "mysubscriptionname", "root": "/path/to/root", "state-enter": "mystate", "clock": "c:1446410081:18462:7:137", "metadata": { "foo": "bar" } } ``` ### Synchronization States are synchronized with the state of the filesystem so that it is possible for subscribers to reason about when files changed with respect to the state. This means that issuing a `state-enter` command will [perform query synchronization](/watchman/docs/cookies.html#how-cookies-work) to ensure that things are in sync. The `state-enter` command will use a default `sync_timeout` of 60 seconds. If the synchronization cookie is not observed within the configured `sync_timeout`, an error will be returned and *the state will not be entered*. In some cases, perhaps during the initial crawl of a very large tree, You may specify an alternative value for the timeout; the value is expressed in *milliseconds*: ```json ["state-enter", "/path/to/root", { "name": "mystate", "sync_timeout": 10000, "metadata": { "foo": "bar" } }] ``` You may also specify `0` for the timeout to disable synchronization for this particular command. This may cause the state to appear to clients to have been entered logically before it actually did in the case that there are buffered notifications that have not yet been processed by watchman at the time that the state was entered. watchman-4.9.0/website/_docs/cmd.state-leave.markdown000066400000000000000000000070201314236077500226060ustar00rootroot00000000000000--- pageid: cmd.state-leave title: state-leave layout: docs section: Commands permalink: docs/cmd/state-leave.html --- *Since 4.4* The `state-leave` command works in conjunction with [state-enter](/watchman/docs/cmd/state-enter.html) to facilitate [advanced settling in subscriptions](/watchman/docs/cmd/subscribe.html#advanced-settling). `state-leave` causes a watch to no longer be marked as being in a particular named state. ### Examples This is the simplest example, vacating a state named `mystate`: ```json ["state-leave", "/path/to/root", "mystate"] ``` It will cause any subscribers to receive a unilateral subscription PDU from the watchman server: ```json { "subscription": "mysubscriptionname", "root": "/path/to/root", "state-leave": "mystate", "clock": "c:1446410081:18462:7:135" } ``` The `clock` field in the response is the (synchronized; see below) clock at the time that the state was entered and can be used in subsequent queries, in combination with the corresponding `state-enter` subscription PDU clock, to locate things that changed while the state was asserted. A more complex example demonstrates passing metadata to any subscribers. The `metadata` field is propagated through to the subscribers and is not interpreted by the watchman server. It can be any JSON value. ```json ["state-leave", "/path/to/root", { "name": "mystate", "metadata": { "foo": "bar" } }] ``` This will emit the following unilateral subscription PDU to all subscribers: ```json { "subscription": "mysubscriptionname", "root": "/path/to/root", "state-leave": "mystate", "clock": "c:1446410081:18462:7:137", "metadata": { "foo": "bar" } } ``` ### Abandoned State A state is implicitly vacated when the watchman client session that asserted it disconnects. This helps to avoid breaking subscribers (since the typical action is to defer or drop notifications) if the tooling that initiated the state terminates unexpectedly. An abandoned state is reported to any subscribers via a unilateral subscription PDU with the `abandoned` field set to `true`: ```json { "subscription": "mysubscriptionname", "root": "/path/to/root", "state-leave": "mystate", "clock": "c:1446410081:18462:7:137", "abandoned": true } ``` This allows the subscriber to take an appropriate action. ### Synchronization States are synchronized with the state of the filesystem so that it is possible for subscribers to reason about when files changed with respect to the state. This means that issuing a `state-leave` command will [perform query synchronization](/watchman/docs/cookies.html#how-cookies-work) to ensure that things are in sync. The `state-leave` command will use a default `sync_timeout` of 60 seconds. If the synchronization cookie is not observed within the configured `sync_timeout`, an error will be returned and *the state will not be entered*. In some cases, perhaps during the initial crawl of a very large tree, You may specify an alternative value for the timeout; the value is expressed in *milliseconds*: ```json ["state-leave", "/path/to/root", { "name": "mystate", "sync_timeout": 10000, "metadata": { "foo": "bar" } }] ``` You may also specify `0` for the timeout to disable synchronization for this particular command. This may cause the state to appear to clients to have been vacated logically before it actually did in the case that there are buffered notifications that have not yet been processed by watchman at the time that the state was vacated. watchman-4.9.0/website/_docs/cmd.subscribe.markdown000066400000000000000000000151531314236077500223630ustar00rootroot00000000000000--- pageid: cmd.subscribe title: subscribe layout: docs section: Commands permalink: docs/cmd/subscribe.html --- *Since 1.6* Subscribes to changes against a specified root and requests that they be sent to the client via its connection. The updates will continue to be sent while the connection is open. If the connection is closed, the subscription is implicitly removed. This makes the most sense in an application connecting via the socket interface, but you may also subscribe via the command line tool if you're interested in observing the changes for yourself: ```bash $ watchman -j --server-encoding=json -p <<-EOT ["subscribe", "/path/to/root", "mysubscriptionname", { "expression": ["allof", ["type", "f"], ["not", "empty"], ["suffix", "php"] ], "fields": ["name"] }] EOT ``` The example above registers a subscription against the specified root with the name `mysubscriptionname`. The response to a subscribe command looks like this: ```json { "version": "1.6", "subscribe": "mysubscriptionname" } ``` When the subscription is first established, the expression term is evaluated and if any files match, a subscription notification packet is generated and sent, unilaterally to the client. Then, each time a change is observed, and after the settle period has passed, the expression is evaluated again. If any files are matched, the server will unilaterally send the query results to the client with a packet that looks like this: ```json { "version": "1.6", "clock": "c:1234:123", "files": ["one.php"], "root": "/path/being/watched", "subscription": "mysubscriptionname" } ``` The subscribe command object allows the client to specify a since parameter; if present in the command, the initial set of subscription results will only include files that changed since the specified clockspec, equivalent to using the `query` command with the `since` generator. ```json ["subscribe", "/path/to/root", "myname", { "since": "c:1234:123", "expression": ["not", "empty"], "fields": ["name"] }] ``` The suggested mode of operation is for the client process to maintain its own local copy of the last "clock" value and use that to establish the subscription when it first connects. ## Filesystem Settling Prior to watchman version 3.2, the settling behavior was to hold subscription notifications until the kernel notification stream was complete. Starting in watchman version 3.2, after the notification stream is complete, if the root appears to be a version control directory, subscription notifications will be held until an outstanding version control operation is complete (at the time of writing, this is based on the presence of either `.hg/wlock` or `.git/index.lock`). This behavior matches triggers and helps to avoid performing transient work in response to files changing, for example, during a rebase operation. In some circumstances it is desirable for a client to observe the creation of the control files at the start of a version control operation. You may specify that you want this behavior by passing the `defer_vcs` flag to your subscription command invocation: ```bash $ watchman -j -p <<-EOT ["subscribe", "/path/to/root", "mysubscriptionname", { "expression": ["allof", ["type", "f"], ["not", "empty"], ["suffix", "php"] ], "defer_vcs": false, "fields": ["name"] }] EOT ``` ## Advanced Settling *Since 4.4* In more complex integrations it is desirable to be able to have a watchman aware application signal the beginning and end of some work that will generate a lot of change notifications. For example, Mercurial or Git could communicate with watchman before and after updating the working copy. Some applications will want to know that the update is in progress and continue to process notifications. Others may want to defer processing the notifications until the update completes, and some may wish to drop any notifications produced while the update was in progress. Watchman subscriptions provide the mechanism for each of these use cases and expose it via two new fields in the subscription object; `defer` and `drop` are described below. It can be difficult to mix `defer` and `drop` with multiple overlapping states in the context of a given subscription stream as there is a single cursor to track the subscription position. If your application uses multiple overlapping states and wants to `defer` some results and `drop` others, it is recommended that you use `drop` for all of the states and then issues queries with `since` terms bounded by the `clock` fields from the subscription state PDUs to ensure that it observes all of the results of interest. ### defer ```json ["subscribe", "/path/to/root", "mysubscriptionname", { "defer": ["mystatename"], "fields": ["name"] }] ``` The `defer` field specifies a list of state names for which the subscriber wishes to defer the notification stream. When a watchman client signals that a state has been entered via the [state-enter](/watchman/docs/cmd/state-enter.html) command, if the state name matches any in the `defer` list then the subscription will emit a unilateral subscription PDU like this: ```json { "subscription": "mysubscriptionname", "root": "/path/to/root", "state-enter": "mystatename", "clock": "", "metadata": } ``` Watchman will then defer sending any subscription PDUs with `files` payloads until the state is vacated either by a [state-leave](/watchman/docs/cmd/state-leave.html) command or by the client that entered the state disconnecting from the watchman service. Once the state is vacated, watchman will emit a unilateral subscription PDU like this: ```json { "subscription": "mysubscriptionname", "root": "/path/to/root", "state-leave": "mystatename", "clock": "", "metadata": } ``` The subscription stream will then be re-enabled and notifications received since the corresponding `state-enter` will be delivered to clients. ### drop ```json ["subscribe", "/path/to/root", "mysubscriptionname", { "drop": ["mystatename"], "fields": ["name"] }] ``` The `drop` field specifies a list of state names for which the subscriber wishes to discard the notification stream. It works very much like `defer` as described above, but when a state is vacated, the pending notification stream is fast-forwarded to the clock of the `state-leave` command, effectively suppressing any notifications that were generated between the `state-enter` and the `state-leave` commands. ## Source Control Aware Subscriptions *Since 4.9* [Read more about these here](/watchman/docs/scm-query.html) watchman-4.9.0/website/_docs/cmd.trigger-del.markdown000066400000000000000000000005061314236077500226030ustar00rootroot00000000000000--- pageid: cmd.trigger-del title: trigger-del layout: docs section: Commands permalink: docs/cmd/trigger-del.html --- Deletes a named trigger from the list of registered triggers. This disables and removes the trigger from both the in-memory and the saved state lists. ```bash $ watchman trigger-del /root triggername ``` watchman-4.9.0/website/_docs/cmd.trigger-list.markdown000066400000000000000000000006351314236077500230150ustar00rootroot00000000000000--- pageid: cmd.trigger-list title: trigger-list layout: docs section: Commands permalink: docs/cmd/trigger-list.html --- Returns the set of registered triggers associated with a root directory. ```bash $ watchman trigger-list /root ``` Note that the format of the output from `trigger-list` changed in Watchman version 2.9.7. It will now output a list of trigger objects as defined by the `trigger` command. watchman-4.9.0/website/_docs/cmd.trigger.markdown000066400000000000000000000271241314236077500220460ustar00rootroot00000000000000--- pageid: cmd.trigger title: trigger layout: docs section: Commands permalink: docs/cmd/trigger.html --- The trigger command will create or replace a trigger. A trigger is a saved incremental query over a watched root. When files change that match the query expression, Watchman will spawn a process and pass information about the changed files to it. Triggered processes are spawned by the Watchman server process that runs in the background; they do not have access to your terminal and their output is redirected (by default) to the Watchman log file. Watchman waits for the filesystem to settle before processing any triggers, batching the list of changed files together before invoking the registered command. You can adjust the settle period via the `.watchmanconfig` file. Note that deleted files are counted as changed files and are passed the command in exactly the same way as changed-but-existing files. Watchman will only run a single instance of the trigger process at a time. That avoids fork-bomb style behavior in cases where your trigger also modifies files. When the process terminates, watchman will re-evaluate the trigger criteria based on the clock at the time the process was last spawned; if a file list is generated watchman will spawn a new child with the files that changed in the meantime. Unless `no-save-state` is in use, triggers are saved and re-established across a Watchman process restart. If you had triggeres saved prior to upgrading to Watchman 2.9.7, those triggers will be forgotten as you upgrade past version 2.9.7; you will need to re-register them. There are two syntaxes for registering triggers; a simple syntax that allows very simple trigger configuration with some reasonable defaults, and a second extended syntax which is available since Watchman version 2.9.7. The simple syntax is implemented in terms of the extended syntax and is preserved for backwards compatibility with older clients. ### Extended syntax *Since 2.9.7.* You may use the extended JSON trigger definition syntax detailed below. It provides more control over how the triggered commands are invoked than was possible in earlier versions. JSON: ```json ["trigger", "/path/to/dir", ] ``` Where `triggerobj` is a trigger configuration object with the fields defined below. Here's an example trigger specified via the CLI that will cause `make` to be run whenever assets or sources are changed: ```bash $ watchman -j <<-EOT ["trigger", "/path/to/root", { "name": "assets", "expression": ["pcre", "\.(js|css|c|cpp)$"], "command": ["make"] }] EOT ``` The possible trigger object properties are: * `name` defines the name of the trigger. You may use this name to remove the trigger later. Registering a different trigger with the same name as an existing trigger will implicitly delete the old trigger and then register the new one, causing the trigger expression to be evaluated for the whole tree. * `command` specifies the command to invoke. It must be an array of string values; this will form the argv array of the trigger process. When the trigger is spawned, the `$PATH` of the Watchman process will be used to locate the command. If you have changed your `$PATH` since the Watchman process was started, Watchman won't be able to see your new `$PATH`. If you are registering trigger that runs something from an unusual or non-default location, it is recommended that you specify the full path to that command. If you are registering a trigger script that can be found in the watched root, just specify the path relative to the root. * `append_files` is an optional boolean parameter; if enabled, the `command` array will have the set of matching file names appended when the trigger is invoked. System limits such as `sysconf(_SC_ARG_MAX)` and/or `RLIMIT_STACK` set an upper bound on the size of the parameters and environment that are passed to a spawned process. Watchman will try to ensure that the command is runnable by keeping the number of file name arguments below the system limits. If the full set cannot be passed to the process, Watchman will pass as many as it thinks will fit and omit the rest. When this argument list truncation occurs, Watchman will export `WATCHMAN_FILES_OVERFLOW=true` into the environment so that the child process can determine that this has happened. Watchman cannot break the arguments apart and run multiple processes for each argument batch; for that functionality, use `xargs(1)` for the `command` and set the `stdin` property to `NAME_PER_LINE`. * `expression` accepts a query expression. The expression is applied to the list of changed files to generate the set of files that are relevant to this trigger. If no files match, the command will not be invoked. Omitting the expression will match all changed files. * `stdin` specifies how stdin should be configured for the command invocation. You may set the value of this property to one of the following: * the string value `/dev/null` - sets stdin to read from `/dev/null`. This is the default and will be used if you omit the `stdin` property. * an array value will be interpreted as a list of field names. When the command is invoked, Watchman will generate an array of JSON objects that contain those field names on stdin. For example, if `stdin` is set to `["name", "size"]`, stdin will be a JSON array containing the list of changed files, represented as objects with the `name` and `size` properties: `[{"name": "filename.txt", "size": 123}]`. The list of valid fields is the same as the same as that documented in the `query` command. Just as with the `query` command, if the field list is comprised of a single field then the JSON will be an array of those field values. For instance, if you set `stdin` to `["name"]` the JSON will be of the form `["filename.txt"]` instead of `[{"name": "filename.txt"}]`. * the string value `NAME_PER_LINE` will cause Watchman to generate a list of file names on stdin, one name per line. No quoting will be applied to the names, and they may contain spaces. * `stdout` and `stderr` control the output and error streams. If omitted, the corresponding stream will be inherited from the Watchman process, which typically means that the command output/error stream will show up in the Watchman log file. If specified, the value must be a string: * `>path/to/file` - causes output to redirected to the specifie file. The path is relative to the watched root, and will be truncated prior to being written to, if it exists, or created if it does not exist. * `>>path/to/file` - causes output to redirected to the specifie file. The path is relative to the watched root. If the file already exists then it will be appended to. The file will be created if it does not exist. * `max_files_stdin` specifies a limit on the number of files reported on stdin when stdin is set to hold the set of matched files. If the number of files that matched exceeds this limit, the input will be truncated to match this limit and `WATCHMAN_FILES_OVERFLOW=true` will also be exported into the environment. The default, if omitted, is no limit. * `chdir` can be used to specify the working directory that should be set prior to spawning the process. The default is to set the working directory to the watched root. The value of this property is a string that will be interpreted relative to the watched root. Note that changing the working dir does not cause the file names from the query result to be re-written: they will *always* be relative to the watched root. The path to the root can be found in the `$WATCHMAN_ROOT` environmental variable. ### Simple syntax The simple syntax is easier to execute from the CLI than the JSON based extended syntax, but doesn't allow all of the trigger options to be set. In only supports the [Simple Pattern Syntax]( /watchman/docs/simple-query.html) for queries. From the command line: ```bash $ watchman -- trigger /path/to/dir triggername [patterns] -- [cmd] ``` Note that the first `--` is to distinguish watchman CLI switches from the second `--`, which delimits patterns from the trigger command. This is only needed when using the CLI, not when using the JSON protocol. JSON: ```json ["trigger", "/path/to/dir", "triggername", , "--", ] ``` For example: ```bash $ watchman -- trigger ~/www jsfiles '*.js' -- ls -l ``` Note the single quotes around the `*.js`; if you omit them, your shell will expand it to a list of file names and register those in the trigger. While this would work, any `*.js` files that you add after registering the trigger will not cause the trigger to run. or in JSON: ```json ["trigger", "/home/wez/www", "jsfiles", "*.js", "--", "ls", "-l"] ``` The simple syntax is interpreted as a trigger object with the following settings: * `name` is set to the `triggername` * `command` is set to the `` list * `expression` is generated from the `` list using the rules laid out in [Simple Pattern Syntax](/watchman/docs/simple-query.html) * `append_files` is set to `true` * `stdin` is set to `["name", "exists", "new", "size", "mode"]` * `stdout` and `stderr` will be set to output to the Watchman log file * `max_files_stdin` will be left unset For this simple example, if `~/www/scripts/foo.js` is changed, watchman will chdir to `~/www` then invoke `ls -l scripts/foo.js`. Note that the output will show up in the Watchman log file, not in your terminal. ### Environment for trigger commands Since Watchman version 2.9.7, the following environment variables are set for all trigger commands, even those registered using the simple trigger syntax: * `WATCHMAN_FILES_OVERFLOW` is set to `true` if the number of files exceeds either the `max_files_stdin` limit or the system argument size limit. * `WATCHMAN_CLOCK` is set to the current clock at the time of the trigger invocation * `WATCHMAN_SINCE` is set to the clock value of the prior trigger invocation, or unset if this is the first trigger invocation. * `WATCHMAN_ROOT` is set to the path to the watched root * `WATCHMAN_TRIGGER` is set to the name of the trigger * `WATCHMAN_SOCK` is set to the path to the Watchman socket, so that you can figure out how to connect back to Watchman. ### Relative roots *Since 3.4.* Watchman supports optionally evaluating triggers with respect to a path within a watched root. This is used with the `relative_root` parameter: ```json ["trigger", "/path/to/watched/root", { "name": "relative-assets", "expression": ["pcre", "\.(js|css|c|cpp)$"], "command": ["make"], "relative_root": "project1" }] ``` Setting a relative root results in the following modifications to triggers: * Queries are evaluated with respect to the relative root. See [File Queries](/watchman/docs/file-query.html) for more. * The current directory for triggered processes is set to the relative root, unless it is changed with `chdir`. If `chdir` is a relative path then it will be evaluated with respect to the relative root. So, for the example trigger above, if `chdir` is `"subdir2"`, the current directory for triggered `make` invocations is `/path/to/watched/root/project1/subdir2`. * In the environment, `WATCHMAN_ROOT` is still set to the actual root. * `WATCHMAN_RELATIVE_ROOT` is set to the full path of the relative root. Relative roots behave similarly to a separate Watchman watch on the subdirectory, without any of the system overhead that that imposes. This is useful for large repositories, where your script or tool is only interested in a particular directory inside the repository. watchman-4.9.0/website/_docs/cmd.unsubscribe.markdown000066400000000000000000000005661314236077500227300ustar00rootroot00000000000000--- pageid: cmd.unsubscribe title: unsubscribe layout: docs section: Commands permalink: docs/cmd/unsubscribe.html --- Available starting in version 1.6 Cancels a named subscription against the specified root. The server side will no longer generate subscription packets for the specified subscription. ```json ["unsubscribe", "/path/to/root", "mysubscriptionname"] ``` watchman-4.9.0/website/_docs/cmd.version.markdown000066400000000000000000000061111314236077500220610ustar00rootroot00000000000000--- pageid: cmd.version title: version layout: docs section: Commands permalink: docs/cmd/version.html --- The version command will tell you the version and build information for the currently running watchman service: ```bash $ watchman version { "version": "2.9.6", "buildinfo": "git:2727d9a1e47a4a2229c65cbb2f0c7656cbd96270" } ``` To get the version of the client: ```bash $ watchman -v 2.9.8 ``` If the server and client versions don't match up, you should probably restart your server: `watchman shutdown-server ; watchman`. ### Capabilities *Since 3.8.* The version command can be used to check for named capabilities. Capabilities make it easier to check whether the server implements functionality based on the name of that function rather than by having the client build up knowledge about when those functions were introduced. You can read more about the [available capability names]( /watchman/docs/capabilities.html). To check whether the `relative_root` capability is supported: ```bash $ watchman -j <<< '["version", {"optional":["relative_root"]}]' { "version": "3.8.0", "capabilities": { "relative_root": true } } ``` If the capability is not supported: ```bash $ watchman -j <<< '["version", {"optional":["will-never-exist"]}]' { "version": "3.8.0", "capabilities": { "will-never-exist": false } } ``` To have the server generate an error response if a capability is not supported: ```bash $ watchman -j <<< '["version", {"required":["will-never-exist"]}]' { "version": "3.8.0", "capabilities": { "will-never-exist": false }, "error": "client required capability `will-never-exist` is not supported by this server" } ``` To require one feature and test whether some optional features are supported: ```bash $ watchman -j <<< '["version", {"required":["term-match"],"optional":["a","b"]}]' { "version": "3.8.0", "capabilities": { "a": false, "b": false, "term-match": true } } ``` ### capabilityCheck The **node** and **python** clients provide a `capabilityCheck` method that will perform the version check above, and that also provide limited support for testing capability support against older versions of the watchman server. This facilitates a smoother transition from version number based checks to capability named based checks. In *python*: ```python import pywatchman client = pywatchman.client() # will throw an error if any of the required names are not supported res = client.capabilityCheck(optional=['a'], required=['term-match']) print res # {'version': '3.8.0', 'capabilities': {'term-match': True, 'a': False}} ``` In *node*: ```js var watchman = require('fb-watchman'); var client = new watchman.Client(); client.capabilityCheck({optional:['a'], required:['term-match']}, function (error, resp) { if (error) { // error will be an Error object if any of the required named // are not supported } console.log(resp); // {'version': '3.8.0', 'capabilities': {'term-match': false, 'a': false}} client.end(); }); ``` watchman-4.9.0/website/_docs/cmd.watch-del-all.markdown000066400000000000000000000010651314236077500230150ustar00rootroot00000000000000--- pageid: cmd.watch-del-all title: watch-del-all layout: docs section: Commands permalink: docs/cmd/watch-del-all.html --- Available since version 3.1.1. Removes all watches and associated triggers. From the command line: ```bash $ watchman watch-del-all ``` JSON: ```json ["watch-del-all"] ``` Analogous to the `watch-del` this command will remove all watches and associated triggers from the running process, and the state file ( unless watchman service was started with [--no-save-state server option]( /watchman/docs/cli-options.html#server-options)). watchman-4.9.0/website/_docs/cmd.watch-del.markdown000066400000000000000000000013361314236077500222500ustar00rootroot00000000000000--- pageid: cmd.watch-del title: watch-del layout: docs section: Commands permalink: docs/cmd/watch-del.html --- Removes a watch and any associated triggers. From the command line: ```bash $ watchman watch-del /path/to/dir ``` JSON: ```json ["watch-del", "/path/to/dir"] ``` The removed watch and any associated triggers will be removed from the state file and will not be automatically watched if/when watchman is restarted. However, if `--no-save-state` was used to start the watchman service, the watch and triggers will be deleted from the running process but no changes will be made to the state file. If this same directory is listed in the state file, the watch will be re-established if/when the service is restarted. watchman-4.9.0/website/_docs/cmd.watch-list.markdown000066400000000000000000000005251314236077500224560ustar00rootroot00000000000000--- pageid: cmd.watch-list title: watch-list layout: docs section: Commands permalink: docs/cmd/watch-list.html --- Returns a list of watched dirs. From the command line: ```bash $ watchman watch-list ``` JSON: ```json ["watch-list"] ``` Result: ```json { "version": "1.9", "roots": [ "/home/wez/watchman" ] } ``` watchman-4.9.0/website/_docs/cmd.watch-project.markdown000066400000000000000000000152151314236077500231530ustar00rootroot00000000000000--- pageid: cmd.watch-project title: watch-project layout: docs section: Commands permalink: docs/cmd/watch-project.html --- *Since 3.1.* Requests that the *project* containing the requested dir is watched for changes. Watchman will track all files and dirs rooted at the *project* path, and respond with the relative path difference between the *project* path and the requested dir. ### Rationale With a proliferation of tools that wish to take advantage of filesystem watching at different locations in a filesystem tree, it is possible and likely for those tools to establish multiple overlapping watches. Most systems have a finite limit on the number of directories that can be watched effectively; when that limit is exceeded the performance and reliability of filesystem watching is degraded, sometimes to the point that it ceases to function. It is therefore desirable to avoid this situation and consolidate the filesystem watches. Watchman offers the `watch-project` command to allow clients to opt-in to the watch consolidation behavior described below. ### What's a project path? A project is the logical root of a set of related files in a filesystem tree and is a good point at which to consolidate watches. Tools such as [hgwatchman](https://bitbucket.org/facebook/hgwatchman) will most likely have already established a watch at the root of a project, so any other tools that wish to watch a sub-directory can do so for no additional cost if they re-use that existing watch at a higher level in the filesystem tree. The `watch-project` command uses a simple procedure to locate the *project* path that corresponds to a given path. While simple it is rather verbose to describe it precisely: 1. The search is begun with a list of file names; we'll refer to it as `root_files`. Any file in this list, if present in a directory, identifies that directory as being a valid project directory. 2. The search is begun with the candidate directory set to the argument passed to `watch-project`. The candidate directory is passed to the `realpath(3)` function and the result is set as the new value of the candidate directory. 3. The candidate directory is concatenated with each of the `root_files`, one by one, and the resultant path is tested for existence. If the path exists then the candidate directory is the path that will be used for watch and the search is halted successfully. 4. If none of the `root_files` can be found in the candidate directory then the parent of the candidate directory is used as a new candidate and the process is repeated at step 3 above. 5. If no viable candidates are found and the root of the filesystem is reached, then the search terminates unsuccessfully. Watchman may perform the above search procedure twice. The logic is: 1. `root_files` will be set to list only `.watchmanconfig` 2. Perform the search procedure above 3. If the search terminates successfully, then the watch is established for the current value of the candidate directory. 4. If the search terminates unsuccessfully, `root_files` is set to the global configuration option [root_files](../config.html#root_files) and the search procedure is re-run. 5. If the search terminates successfully, then the watch is established for the current value of the candidate directory. 6. If the global configuration option [enforce_root_files](../config.html#enforce_root_files) is set to true then the watch attempt fails. 7. Otherwise, the watch is established for the original argument to the `watch-project` command What this means in laymans terms is that the definitive location of the project root is where the `.watchmanconfig` file is found. If it is not found then the set of files defined by the `root_files` configuration is used to locate a candidate. If no viable candidate is found then watchman will watch the requested directory, unless the `enforce_root_files` setting is set to true. The default value for `root_files` will match most common version control root directories. The default value for `enforce_root_files` is `false`. ### Using watch-project Assuming that `~/www/.hg` and `~/www/some/child/dir` both exist, then the command: ```bash $ watchman watch-project ~/www/some/child/dir { "version": "3.0.1", "watch": "/Users/wez/www", "relative_path": "some/child/dir" } ``` establishes a watch on the `~/www` directory because that is the directory that contains `.hg`, which is one of the items listed in the default value for `root_files`. As a client using `watch-project` it is important to observe the `relative_path` and/or `watch` elements of the response; they identify which directory is actually being watched. **Any triggers, subscriptions or queries that the client issues must be relative to the watched root to operate as expected.** A client can use `relative_path` to more easily construct queries or adjust the results of queries by either concatenating the string when composing paths in a query expression or removing the string from the prefix when processing the results. If `relative_path` is missing from the response it means that the requested dir is the same as the watched dir and that the `watch-project` invocation turned out to be exactly equivalent to a `watch` invocation for the requested directory. Note that, when you're using the CLI, you can specify the root as `~/www/some/child/dir` because the shell will resolve `~/www/some/child/dir` to `/Users/wez/www/some/child/dir`, but when you use the JSON protocol, you are responsible for supplying an absolute path. JSON: ```json ["watch", "/Users/wez/www/some/child/dir"] ``` ### Initiating a watch Once a viable candidate is found, if watchman is not already watching the directory, then watchman will: * Establish change notification for the directory with the kernel * Queues up a request to crawl the directory * As the directory contents are resolved, those are watched in a similar fashion * All newly observed files are considered changed ### Persistence Unless the `--no-save-state` server option was used to start the watchman service, watches and their associated triggers are saved and re-established across a process restart. *Since 3.7.* The watchman service may decide to reap watches that have been idle for an extended period of time. A watch is considered to be idle if no watchman queries have been issued against the watch. If a watch is idle, and has no triggers registered or active subscriptions then it is a candidate for reaping. The [idle_reap_age_seconds](../config.html#idle-reap-age-seconds) configuration parameter controls the idle timeout for a watch. The default is 5 days. A reaped watch is cancelled and removed from the state file. watchman-4.9.0/website/_docs/cmd.watch.markdown000066400000000000000000000043631314236077500215110ustar00rootroot00000000000000--- pageid: cmd.watch title: watch layout: docs section: Commands permalink: docs/cmd/watch.html --- Deprecated starting in version 3.1. We recommend that clients adopt the [watch-project](/watchman/docs/cmd/watch-project.html) command. Requests that the specified dir is watched for changes. Watchman will track all files and dirs rooted at the specified path. From the command line: ```bash $ watchman watch ~/www ``` Note that, when you're using the CLI, you can specify the root as `~/www` because the shell will resolve `~/www` to `/home/wez/www`, but when you use the JSON protocol, you are responsible for supplying an absolute path. JSON: ```json ["watch", "/home/wez/www"] ``` Watchman will `realpath(3)` the directory and start watching it if it isn't already. A newly watched directory is processed in a couple of stages: * Establishes change notification for the directory with the kernel * Queues up a request to crawl the directory * As the directory contents are resolved, those are watched in a similar fashion * All newly observed files are considered changed Unless the `--no-save-state` server option was used to start the watchman service, watches and their associated triggers are saved and re-established across a process restart. ## Case-Insensitivity Watchman has the following level of support for case-insensitive filesystems, starting in version 2.9.9 on OS X only: * each watched root is queried to determine if it is case-insensitive. This is the common default for most Mac systems running HFS+. * When in case-insensitive mode, Watchman will attempt to resolve the true canonical name of a file on the filesystem when it observes changes. * If the case of a filename changes, Watchman will report a delete of the old name and a change for the new name. * Query expressions that match names will default to case-insensitive when the root is on a case-insensitive filesystem. * Watchman's case folding is ASCII case-folding. Note that the `match` and `pcre` query expression terms request case folding support from the containing library, and that their case folding behavior is not controlled by Watchman beyond being enabled when the root is case-insensitive. * The `path` generator is always case sensitive. watchman-4.9.0/website/_docs/compatibility.markdown000066400000000000000000000027401314236077500225070ustar00rootroot00000000000000--- pageid: compatibility title: Compatibility Rules layout: docs category: Compatibility permalink: docs/compatibility.html --- `watchman` has been used in production since a few weeks after it was first written, and thus it has always made an effort to be backward compatible across releases and platforms. * Commands and options will never be removed, but new ones may be added. * We may *deprecate* commands and options and remove them from documentation, but they will still continue to work forever. * Whenever a command or option is deprecated, we will provide a suitable alternative. * Bugfixes might cause minor behavior changes -- these changes will usually be documented in release notes. `watchman` does not follow [semantic versioning](http://semver.org)! * Since its public APIs never make incompatible changes, MAJOR versions are moot. * While in the past we've released versions with three components (x.y.z), starting version 3.1 the version number will only have two components that are meaningful (x.y), with the third component always zero. * The version after 3.9 is expected to be 4.0. The version number string reported by these versions will be 3.9.0 and 4.0.0 respectively. *Since 3.8.* `watchman` introduces [capabilities](capabilities.html) to describe new or optional features. You can use the [expanded version command]( /watchman/docs/cmd/version.html) to query capabilities and avoid building knowledge of version numbers in your client application(s). watchman-4.9.0/website/_docs/configuration.markdown000066400000000000000000000307221314236077500225060ustar00rootroot00000000000000--- pageid: config title: Configuration Files layout: docs category: Invocation permalink: docs/config.html --- Watchman looks for configuration files in two places: * The global configuration file `/etc/watchman.json` * The root specific configuration file `.watchmanconfig` When watching a root, if a valid JSON file named `.watchmanconfig` is present in the root directory, watchman will load it and use it as a source of configuration information specific to that root. The global configuration path can be changed by passing the `--enable-conffile` option to configure when you build watchman. This documentation refers to it as `/etc/watchman.json` throughout, just be aware that your particular installation may locate it elsewhere. In addition, the environmental variable `$WATCHMAN_CONFIG_FILE` will override the default location. Changes to the `.watchmanconfig` or `/etc/watchman.json` files are not picked up automatically; you will need to remove and re-add the watch (for `.watchmanconfig`) or restart watchman (for `/etc/watchman.json`) for those changes to take effect. ### Resolution / Scoping There are three configuration scopes: * **local** - the option value is read from the `.watchmanconfig` file in the associated root. * **global** - the option value is read from the `/etc/watchman.json` file * **fallback** - the option value is read from the `.watchmanconfig` file. If the option was not present in the `.watchmanconfig` file, then read it from the `/etc/watchman.json` file. This table shows the scoping and availability of the various options: Option | Scope | Since version -------|-------|-------------- `settle` | local | `root_restrict_files` | global | deprecated in 3.1 `root_files` | global | 3.1 `enforce_root_files` | global | 3.1 `illegal_fstypes` | global | 2.9.8 `illegal_fstypes_advice` | global | 2.9.8 `ignore_vcs` | local | 2.9.3 `ignore_dirs` | local | 2.9.3 `gc_age_seconds` | local | 2.9.4 `gc_interval_seconds` | local | 2.9.4 `fsevents_latency` | fallback | 3.2 `idle_reap_age_seconds` | local | 3.7 `hint_num_files_per_dir` | fallback | 3.9 `hint_num_dirs` | fallback | 4.6 `suppress_recrawl_warnings` | fallback | 4.7 ### Configuration Options ### settle Specifies the settle period in *milliseconds*. This controls how long the filesystem should be idle before dispatching triggers. The default value is 20 milliseconds. ### root_files *Since 3.1.* Specifies a list of files that, if present in a directory, identify that directory as the root of a project. If left unspecified, to aid in transitioning between versions, watchman will use the value of the now deprecated [root_restrict_files](#root_restrict_files) configuration setting. If neither `root_files` nor `root_restrict_files` is specified in the configuration, watchman will use a default value consisting of: * `.git` * `.hg` * `.svn` * `.watchmanconfig` Watchman will add `.watchmanconfig` to whatever value is specified for this configuration value if it is not present. This example causes only `.watchmanconfig` to be considered as a project root file: ```json { "root_files": [".watchmanconfig"] } ``` See the [watch-project](cmd/watch-project.html) command for more information. ### enforce_root_files *Since 3.1.* This is a boolean option that defaults to `false`. If it is set to `true` then the [watch](cmd/watch.html) command will only succeed if the requested directory contains one of the files listed by the [root_files](#root_files) configuration option, and the [watch-project](cmd/watch-project.html) command will only succeed if a valid project root is found. If left unspecified, to aid in transitioning between versions, watchman will check to see if the now deprecated [root_restrict_files](#root_restrict_files) configuration setting is present. If it is found then the effective value of `enforce_root_files` is set to `true`. ### root_restrict_files *Deprecated starting in version 3.1; use [root_files](#root_files) and [enforce_root_files](#enforce_root_files) to effect the same behavior.* Specifies a list of files, at least one of which should be present in a directory for watchman to add it as a root. By default there are no restrictions. For example, ```json { "root_restrict_files": [".git", ".hg"] } ``` will allow watches only in the top level of Git or Mercurial repositories. ### illegal_fstypes Specifies a list of filesystem types that watchman is prohibited to attempt to watch. Watchman will determine the filesystem type of the root of a watch; if the typename is present in the `illegal_fstypes` list, the watch will be prohibited. You may also specify `illegal_fstypes_advice` as a string with additional advice to your user. The purpose of this configuration option is largely to prevent the use of Watchman on network mounted filesystems. On Linux systems, Watchman may not be able to determine the precise type name of a mounted filesystem. If the filesystem type is not known to watchman, it will be reported as `unknown`. For example, ```json { "illegal_fstypes": ["nfs", "cifs", "smb"], "illegal_fstypes_advice": "use a local directory" } ``` will prevent watching dirs mounted on network filesystems and provide the advice to use a local directory. You may omit the `illegal_fstypes_advice` setting to use a default suggestion to relocate the directory to local disk. ### ignore_vcs Apply special VCS ignore logic to the set of named dirs. This option has a default value of `[".git", ".hg", ".svn"]`. Dirs that match this option are observed and watched using special shallow logic. The shallow watch allows watchman to mildly abuse the version control directories to store its query cookie files and to observe VCS locking activity without having to watch the entire set of VCS data for large trees. ### ignore_dirs Dirs that match are completely ignored by watchman. This is useful to ignore a directory that contains only build products and where file change notifications are unwanted because of the sheer volume of files. For example, ```json { "ignore_dirs": ["build"] } ``` would ignore the `build` directory at the top level of the watched tree, and everything below it. It will never appear in the watchman query results for the tree. On Linux systems, `ignore_dirs` is respected at the OS level; the kernel simply will not tell watchman about changes to ignored dirs. macOS and Windows have limited or no support for this, so watchman needs to process and ignore this class of change. For large trees or especially busy build dirs, it is recommended that you move the busy build dirs out of the tree for more optimal performance. Since version 2.9.9, if you list a dir in `ignore_dirs` that is also listed in `ignore_vcs`, the `ignore_dirs` placement will take precedence. This may not sound like a big deal, but since `ignore_vcs` is used as a hint to for the placement of [cookie files](/watchman/docs/cookies.html), having these two options overlap in earlier versions would break watchman queries. *Since 4.6.* On macOS the first 8 items listed in `ignore_dirs` can be accelerated at the OS level. This means that changes to those paths are not even communicated to the watchman service. Entries beyond the first 8 are processed and ignored by watchman. If your workload is prone to recrawl events you will want to prioritize your `ignore_dirs` list so that the most busy ignored locations occupy the first 8 positions in this list. ### gc_age_seconds Deleted files (and dirs) older than this are periodically pruned from the internal view of the filesystem. Until they are pruned, they will be visible to queries but will have their `exists` field set to `false`. Once they are pruned, watchman will remember the most recent clock value of the pruned nodes. Any since queries based on a clock prior to the last prune clock will be treated as a fresh instance query. This allows a client to detect and choose how to handle the case where they have missed changes. See `is_fresh_instance` elsewhere in this document for more information. The default for this is `43200` (12 hours). ### gc_interval_seconds How often to check for, and prune out, deleted nodes per the `gc_age_seconds` option description above. The default for this is `86400` (24 hours). Set this to `0` to disable the periodic pruning operation. ### fsevents_latency Controls the latency parameter that is passed to `FSEventStreamCreate` on OS X. The value is measured in seconds. The fixed value of this parameter prior to version 3.2 of watchman was `0.0001` seconds. Starting in version 3.2 of watchman, the default is now `0.01` seconds and can be controlled on a per-root basis. If you observe problems with `kFSEventStreamEventFlagUserDropped` increasing the latency parameter will allow the system to batch more change notifications together and operate more efficiently. ### fsevents_try_resync This is macOS specific. *Since 4.6.* Defaults to `false`. If set to `true`, if a watch receives a `kFSEventStreamEventFlagUserDropped` event, attempt to resync from the `fsevents` journal if it is available. The journal may not be available if one or more volumes are mounted read-only, if the administrator has purged the journal, or if the `fsevents` id numbers have rolled over. This resync operation is advantageous because it effectively allows rewinding and replaying the event stream from a known point in time and avoids the need to recrawl the entire watch. If this option is set to `false`, or if the journal is not available, the original strategy of recrawling the watched directory tree is used instead. *Since 4.7.* The default changed to `true`. In addition, this resync strategy is now also applied to `kFSEventStreamEventFlagKernelDropped` events. ### idle_reap_age_seconds *Since 3.7.* How many seconds a watch can remain idle before becoming a candidate for reaping, measured in seconds. The default for this is `432000` (5 days). Set this to `0` to prevent reaping. A watch is considered to be idle when it has had no commands that operate on it for `idle_reap_age_seconds`. If an idle watch has no triggers and no subscriptions then it will be cancelled, releasing the associated operating system resources, and removed from the state file. ### hint_num_files_per_dir *Since 3.9.* Used to pre-size hash tables used to track files per directory. This is most impactful during the initial crawl of the filesystem. Setting this too small will increase the chance of a hash insert having a collision and drive up the cost of the insert and subsequent gets. Prior to version 3.9 of watchman this value was fixed at `2`. Starting in version 3.9 the default value is `64` and can be configured via this setting in the `.watchmanconfig` or the global `/etc/watchman.json` configuration file. Setting this value very large increases the memory overhead per directory in the tree; the value is rounded up to the next power of two and pre-allocated in an array of pointers. On a 64-bit system multiply that number by 8 to arrive at the number of bytes of overhead (halve this on a 32-bit system). The overhead is doubled when using a case insensitive filesystem. The ideal size from a time complexity perspective is the number of files in your largest directory. From a space complexity perspective, the ideal size is 1; you would pay the cost of the collisions during the initial crawl and have a more optimal memory usage. Since watchman is primarily employed as an accelerator, we'd recommend biasing towards using more memory and taking less time to run. ### hint_num_dirs *Since 4.6* Used to pre-size hash tables that are used to track the total set of files in the entire watched tree. The default value for this is 131072. The optimal size is a power-of-two larger than the number of directories in your tree; running `find . -type d | wc -l` will tell you the number that you have. Making this number too large is potentially wasteful of memory. Making this number too small results in increased latency during crawling while the hash tables are rebuilt. ### suppress_recrawl_warnings *Since 4.7* When set to `true`, watchman will not produce recrawl related warning fields in the response PDUs of various requests. The default is `false`; the intent is that someone in your organization should be aware of recrawls and be able to manage the configuration and workload. Some sites employ an alternative mechanism for sampling and reporting this to the right set of people and wish to disable the warning so that it doesn't appear in front of users that are unable to make the appropriate configuration changes for themselves. watchman-4.9.0/website/_docs/contributing.markdown000066400000000000000000000040731314236077500223460ustar00rootroot00000000000000--- pageid: contributing title: Contributing layout: docs permalink: contributing.html section: Internals --- If you're thinking of hacking on watchman we'd love to hear from you! Feel free to use the GitHub issue tracker and pull requests discuss and submit code changes. We (Facebook) have to ask for a "Contributor License Agreement" from someone who sends in a patch or code that we want to include in the codebase. This is a legal requirement; a similar situation applies to Apache and other ASF projects. If we ask you to fill out a CLA we'll direct you to [our online CLA page](https://code.facebook.com/cla) where you can complete it easily. We use the same form as the Apache CLA so that friction is minimal. ### Getting Started You need to be able to build watchman from source and run its test suite. You will need: * python * automake * autoconf * libtool (or glibtool on OS X) * libpcre * libfolly (only needed if building the cppclient library) * nodejs (for fb-watchman) ``` $ git clone https://github.com/facebook/watchman.git $ cd watchman $ ./autogen.sh $ ./configure $ make ``` After making a change, run the integration tests to make sure that things are still working well before you submit your pull request: ``` $ make integration ``` We'll probably ask you to augment the test suite to cover the functionality that you're adding or changing. Please keep in mind that our versioning philosophy in Watchman is to provide an *append only* API. If you're changing functionality, we'll ask you to do so in such a way that it won't break older clients of Watchman. ### Don't forget the docs If you're changing or adding new functionality, we'll ask you to also update the documentation. You will need `ruby` 2.0.0 or later to preview the documentation. One time setup: ```bash $ cd website $ sudo gem install bundler $ sudo bundler install ``` Then: ```bash $ jekyll serve -w -t ``` This will print out a URL that you can open in your browser to preview your documentation changes. The source for the documentation is in the `website/_docs` dir in markdown format. watchman-4.9.0/website/_docs/cookies.markdown000066400000000000000000000071431314236077500212740ustar00rootroot00000000000000--- pageid: cookies title: Query Synchronization layout: docs category: Internals permalink: docs/cookies.html --- A file system monitor needs to make sure that queries see up-to-date views. Watchman ensures that by creating a unique *cookie* for each query made to it. ## Background Consider a directory tree traversal to gather file status, such as the one performed by `hg status` or `git status`. The traversal will race with any operations happening concurrently, and this is impossible to fix. However, we do get some weaker guarantees: 1. Every file operation that happens before the traversal is started will be observed. 2. File operations that happen after the traversal is started may or may not be observed. For watchman, cookies enable us to provide similar guarantees. For a given watchman query: 1. Every file operation that happens before the query is started will be observed. 2. File operations that happen after the query is started may or may not be observed. ## How cookies work A *cookie* is a temporary file that is created inside a directory observed by watchman. The cookie is created in a directory that is expected not to go away. The obvious location is the root itself, but we'd like cookies not to show up in VCS operations. So if a VCS directory (`.git`, `.hg` or `.svn`) is found, that's where cookies are created instead. The cookie is created while the root is locked, so watchman won't find the cookie by accident while processing events from a prior run. Once the cookie is created, the calling thread waits on a condition variable guarded by the root's lock. This causes the lock to be released, and the root's notify thread can now read events as usual. When the notify thread finds that it is processing a cookie, it will signal its respective condition variable. Importantly, this does not wake the calling thread up immediately: since the notify thread still holds the root lock, the calling thread will only be able to proceed once the notify thread releases the lock. *What do cookies get us?* File monitoring systems like `inotify` typically provide an ordering guarantee: notifications arrive in the order they happen. Any events happening before the cookie is created will appear before the event for the cookie does, which means they will be processed by the time the query is answered. *How well do cookies work?* The Mercurial test suite has proved to be a good stress test for watchman. Before cookies were implemented, if 16 or more tests from the suite were run in parallel, watchman would start falling behind and often produce outdated answers. Cookies have successfully eradicated that. *Can watchman find a cookie even if not all events leading to its appearance have been processed?* Consider this situation when cookies are created inside `.hg`: 1. Event A happens that would cause `.hg` to be read recursively 2. Event B happens that touches a file `subdir/foo` 3. A cookie is created inside `.hg`, causing event C 4. Event A is read from the OS file notification system but not events B and C 5. The cookie is found but `subdir/foo` is never read. On Linux, to prevent this from happening, watchman will only consider a cookie to be found if it is directly returned via OS notifications. The only exception to this is during the initial crawl or a recrawl, when the cookie directory isn't being watched yet. On other platforms, this becomes more complicated because the respective monitoring system only tells us that something inside a directory was created, not what was created. This is currently an unresolved issue. ## Credits The idea was originally proposed by Matt Mackall . watchman-4.9.0/website/_docs/cppclient.markdown000066400000000000000000000045221314236077500216170ustar00rootroot00000000000000--- id: cppclient title: C++ Client layout: docs section: Invocation permalink: docs/cppclient.html --- *Since 4.8.* Watchman includes a C++ client library to facilitate easy access to Watchman data from C++ applications. This library provides APIs for: * Opening and maintaining a connection to a local Watchman server. * Executing request-response Watchman commands. * Subscribing to updates with in directory trees. ## Installation Provided the Folly library is present when Watchman is built, the C++ client library is automatically built and installed. For details on building Watchman see [Installation](/watchman/docs/install.html). ## API The public Watchman C++ client API is entirely covered in the installed `watchman/WatchmanClient.h` header file. This header contains a usage synopsis and notes on the public API features. For a simple example of API usage, sending simple request-response commands to Watchman, see `cppclient/CLI.cpp` in the Watchman source tree. For a more extensive example of the API including use of subscriptions, see the integration test `tests/integration/cppclient.cpp` also in the Watchman source. The C++ client library and its API make heavy use of the Folly library and as such familiarity with this is highly recommended. Specifically, the client library makes extensive use of [Folly's async features](https://github.com/facebook/folly/blob/master/folly/io/async/README.md) to provide high-performance asynchronous I/O, and [Folly's dynamics](https://github.com/facebook/folly/blob/master/folly/docs/Dynamic.md) to avoid needing to construct/process raw JSON in C++. ## Using the C++ client in your application's build To facilitate integration into your application's build, the Watchman C++ client library provides support for [pkg-config](https://www.freedesktop.org/wiki/Software/pkg-config/). For example, if your application was contained entirely in one C++ file called `app.cpp` the following would be sufficient for build on a system with GNU Make: ```bash make LDFLAGS=$(pkg-config watchmanclient --libs) CPPFLAGS=$(pkg-config watchmanclient --cflags) app ``` If Watchman is installed in a location `pkg-config` does not search for packages by default, you may need to modify the `PKG_CONFIG_PATH` environment variable. For example: ```bash export PKG_CONFIG_PATH=/lib/pkgconfig:$PKG_CONFIG_PATH ``` watchman-4.9.0/website/_docs/expr.allof.md000066400000000000000000000011001314236077500204530ustar00rootroot00000000000000--- pageid: expr.allof title: allof layout: docs section: Expression Terms permalink: docs/expr/allof.html --- The `allof` expression term evaluates as true if all of the grouped expressions also evaluated as true. For example, this expression matches only files whose name ends with `.txt` and that are not empty files: ["allof", ["match", "*.txt"], ["not", "empty"]] Each array element after the term name is evaluated as an expression of its own: ["allof", expr1, expr2, ... exprN] Evaluation of the subexpressions stops at the first one that returns false. watchman-4.9.0/website/_docs/expr.anyof.md000066400000000000000000000010511314236077500204770ustar00rootroot00000000000000--- pageid: expr.anyof title: anyof layout: docs section: Expression Terms permalink: docs/expr/anyof.html --- The `anyof` expression term evaluates as true if any of the grouped expressions also evaluated as true. The following expression matches files whose name ends with either `.txt` or `.md`: ["anyof", ["match", "*.txt"], ["match", "*.md"]] Each array element after the term name is evaluated as an expression of its own: ["anyof", expr1, expr2, ... exprN] Evaluation of the subexpressions stops at the first one that returns true. watchman-4.9.0/website/_docs/expr.dirname.md000066400000000000000000000030331314236077500210040ustar00rootroot00000000000000--- pageid: expr.dirname title: dirname & idirname layout: docs section: Expression Terms permalink: docs/expr/dirname.html --- *Since version 3.1* The `dirname` term allows matching on the parent directory structure for a given file. For the examples below, given a file with a wholename (the relative path from the project root) of `foo/bar/baz`, the dirname portion is `foo/bar`. The following two terms will match any file whose dirname is either exactly a match for `foo/bar` or is any child directory of `foo/bar`. The first of these two is a shortcut for the second: ["dirname", "foo/bar"] ["dirname", "foo/bar", ["depth", "ge", 0]] The second of those terms uses a relational expression based on the depth of the file within the specified dirname. A file is considered to have `depth == 0` if it is contained directly within the specified dirname. It has `depth == 1` if it is contained in a direct child directory of the specified dirname, `depth == 2` if it is contained in a grand-child directory and so on. The relational expression accepts the same relational operators as described in the [size term](size.html). If you wanted to match only files that were directly in the `foo/bar` dir: ["dirname", "foo/bar", ["depth", "eq", 0]] If you wanted to match only files that were in a grand-child or deeper: ["dirname", "foo/bar", ["depth", "ge", 2]] `idirname` is the case insensitive version of `dirname`. If the watched root is detected as a case insensitive fileystem, `dirname` is equivalent to `idirname`. watchman-4.9.0/website/_docs/expr.empty.md000066400000000000000000000003421314236077500205230ustar00rootroot00000000000000--- pageid: expr.empty title: empty layout: docs section: Expression Terms permalink: docs/expr/empty.html --- Evaluates as true if the file exists, has size 0 and is a regular file or directory. "empty" ["empty"] watchman-4.9.0/website/_docs/expr.exists.md000066400000000000000000000002671314236077500207120ustar00rootroot00000000000000--- pageid: expr.exists title: exists layout: docs section: Expression Terms permalink: docs/expr/exists.html --- Evaluates as true if the file exists "exists" ["exists"] watchman-4.9.0/website/_docs/expr.false.md000066400000000000000000000003011314236077500204520ustar00rootroot00000000000000--- pageid: expr.false title: "false" layout: docs section: Expression Terms permalink: docs/expr/false.html --- The `false` expression always evaluates as false. "false" ["false"] watchman-4.9.0/website/_docs/expr.match.md000066400000000000000000000037051314236077500204670ustar00rootroot00000000000000--- pageid: expr.match title: match & imatch layout: docs section: Expression Terms permalink: docs/expr/match.html --- The `match` expression performs a glob-style match against the basename of the file, evaluating true if the match is successful. ```json ["match", "*.txt"] ``` You may optionally provide a third argument to change the scope of the match from the basename to the wholename of the file. ```json ["match", "*.txt", "basename"] ["match", "dir/*.txt", "wholename"] ``` ### Case sensitivity `match` is case sensitive; for case insensitive matching use `imatch` instead; it behaves identically to `match` except that the match is performed ignoring case. *Since 2.9.9.* On systems where the watched root is a case insensitive filesystem (this is the common case for OS X and Windows), `match` is equivalent to `imatch`. *Since 4.7.* You can override the case sensitivity of all name matching operations used in the query by setting the `case_sensitive` field in your query. ## wildmatch *Since 3.7.* The `match` expression has been enhanced as described below. The [capability](/watchman/docs/capabilities.html) name associated with this enhanced functionality is `wildmatch`. If you want to recursively match all files under a directory, use the `**` glob operator along with the `wholename` scope: ```json ["match", "src/**/*.java", "wholename"] ``` By default, paths whose names start with `.` are not included. To change this behavior, you may optionally provide a fourth argument containing a dictionary of flags: ```json ["match", "*.txt", "basename", {"includedotfiles": true}] ``` By default, backslashes in the pattern escape the next character, so `\*` matches a literal `*` character. To change this behavior so backslashes are treated literally, set the `noescape` flag to `true` in the flags dictionary. (Note that `\\` is a literal `\` in JSON notation): ```json ["match", "*\\*.txt", "filename", {"noescape": true}] ``` matches `a\b.txt`. watchman-4.9.0/website/_docs/expr.name.md000066400000000000000000000020771314236077500203140ustar00rootroot00000000000000--- pageid: expr.name title: name & iname layout: docs section: Expression Terms permalink: docs/expr/name.html --- The `name` expression performs exact matches against file names. By default it is scoped to the basename of the file: ["name", "Makefile"] You may specify multiple names to match against by setting the second argument to an array: ["name", ["foo.txt", "Makefile"]] This second form can be accelerated and is preferred over an `anyof` construction. You may change the scope of the match via the optional third argument: ["name", "path/to/file.txt", "wholename"] ["name", ["path/to/one", "path/to/two"], "wholename"] Finally, you may specify case insensitive evaluation by using `iname` instead of `name`. *Since 2.9.9.* Starting in version 2.9.9, on OS X systems where the watched root is a case insensitive filesystem (this is the common case for OS X), `name` is equivalent to `iname`. *Since 4.7.* You can override the case sensitivity of all name matching operations used in the query by setting the `case_sensitive` field in your query. watchman-4.9.0/website/_docs/expr.not.md000066400000000000000000000003071314236077500201660ustar00rootroot00000000000000--- pageid: expr.not title: not layout: docs section: Expression Terms permalink: docs/expr/not.html --- The `not` expression inverts the result of the subexpression argument: ["not", "empty"] watchman-4.9.0/website/_docs/expr.pcre.md000066400000000000000000000020601314236077500203150ustar00rootroot00000000000000--- pageid: expr.pcre title: pcre & ipcre layout: docs section: Expression Terms permalink: docs/expr/pcre.html --- *To use this feature, you must configure watchman `--with-pcre`!* The `pcre` expression performs a Perl Compatible Regular Expression match against the basename of the file. This pattern matches `test_plan.php` but not `mytest_plan`: ["pcre", "^test_"] You may optionally provide a third argument to change the scope of the match from the basename to the wholename of the file. ["pcre", "txt", "basename"] ["pcre", "txt", "wholename"] `pcre` is case sensitive; for case insensitive matching use `ipcre` instead; it behaves identically to `pcre` except that the match is performed ignoring case. *Since 2.9.9.* Starting in version 2.9.9, on OS X systems where the watched root is a case insensitive filesystem (this is the common case for OS X), `pcre` is equivalent to `ipcre`. *Since 4.7.* You can override the case sensitivity of all name matching operations used in the query by setting the `case_sensitive` field in your query. watchman-4.9.0/website/_docs/expr.since.md000066400000000000000000000032761314236077500204770ustar00rootroot00000000000000--- pageid: expr.since title: since layout: docs section: Expression Terms permalink: docs/expr/since.html --- Evaluates as true if the specified time property of the file is greater than the since value. Note that this is not the same as the `since` generator; when used as an expression term we are performing a straight clockspec comparison. When used as a generator, candidate files are selected based on the `since` time index. The end result might or might not be the same--in particular, if the `since` time index is not passed in, it will be treated the same as a fresh instance, and only files that exist will be returned. The efficiency can vary based on the size and shape of the file tree that you are watching; it may be cheaper to generate the candidate set of files by suffix and then check the modification time if many files were changed since your last query. This will yield a true value if the observed change time is more recent than the specified clockspec (this is equivalent to specifying "oclock" as the third parameter): ["since", "c:12345:234"] You may specify particular fields from the filesystem metadata. In this case your clockspec should be a unix time value: ["since", 12345668, "mtime"] ["since", 12345668, "ctime"] You may explicitly request the observed clock values too; in these cases we'll accept either a timestamp or a clock value. The `oclock` is the last observed change clock value (observed clock) and the `cclock` is the clock value where we first observed the file come into existence (created clock): ["since", 12345668, "oclock"] ["since", "c:1234:123", "oclock"] ["since", 12345668, "cclock"] ["since", "c:1234:2342", "cclock"] watchman-4.9.0/website/_docs/expr.size.md000066400000000000000000000021671314236077500203460ustar00rootroot00000000000000--- pageid: expr.size title: size layout: docs section: Expression Terms permalink: docs/expr/size.html --- *Since version 3.1* The size term allows the size of an existing file (not deleted) to be evaluated using simple relational operators as described in the table below. The size term must always be an array with 3 elements: ["size", "gt", 0] The second parameter describes the relational operator and the third parameter is the integer *operand* to compare against. The example above evaluates to `true` if the file exists and its size is greater than zero. Possible relational operators are: Operator | Meaning | Result ---------|---------|------- `eq` | Equal | `true` if file exists and `size == operand` `ne` | Not Equal | `true` if file exists and `size != operand` `gt` | Greater Than | `true` if file exists and `size > operand` `ge` | Greater Than Or Equal | `true` if file exists and `size >= operand` `lt` | Less Than | `true` if file exists and `size < operand` `le` | Less Than Or Equal | `true` if file exists and `size <= operand` watchman-4.9.0/website/_docs/expr.suffix.md000066400000000000000000000005251314236077500206740ustar00rootroot00000000000000--- pageid: expr.suffix title: suffix layout: docs section: Expression Terms permalink: docs/expr/suffix.html --- The `suffix` expression evaluates true if the file suffix matches the second argument. This matches files name `foo.php` and `foo.PHP` but not `foophp`: ["suffix", "php"] Suffix expression matches are case insensitive. watchman-4.9.0/website/_docs/expr.true.md000066400000000000000000000002701314236077500203440ustar00rootroot00000000000000--- pageid: expr.true title: "true" layout: docs section: Expression Terms permalink: docs/expr/true.html --- The `true` expression always evaluates as true. "true" ["true"] watchman-4.9.0/website/_docs/expr.type.md000066400000000000000000000007201314236077500203460ustar00rootroot00000000000000--- pageid: expr.type title: type layout: docs section: Expression Terms permalink: docs/expr/type.html --- Evaluates as true if the type of the file matches that specified by the second argument; this matches regular files: ["type", "f"] Possible types are: * **b**: block special file * **c**: character special file * **d**: directory * **f**: regular file * **p**: named pipe (fifo) * **l**: symbolic link * **s**: socket * **D**: Solaris Door watchman-4.9.0/website/_docs/file-query.md000066400000000000000000000175211314236077500205010ustar00rootroot00000000000000--- pageid: file-query title: File Queries layout: docs section: Queries permalink: docs/file-query.html --- Watchman file queries consist of 1 or more *generators* that feed files through the *expression evaluator*. ### Generators Generators are analogous to the list of *paths* that you specify when using the `find(1)` utility, but are implemented in watchman with a bit of a twist because watchman doesn't need to crawl the filesystem in realtime and instead maintains a couple of indexes over the tree. A query may specify any number of generators; each generator will emit its list of files and this may mean that you see the same file output more than once if you specified the use of multiple generators that all produce the same file. Watchman provides 5 generators: * **since**: produces a list of files that were modified since a specific clockspec. * **suffix**: produces a list of files that have a particular suffix. * **glob**: efficiently pattern match a list of files based on their names. * **path**: produces a list of files based on their path and depth. * **all**: produces a list of all known files ### De-duplicating results *Since 4.7.* If your query uses multiple generators, or configures the `path` generator with paths that yield multiple results, the default behavior (for backwards compatibility reasons) is to emit those duplicate results in the query output. You may ask Watchman to de-duplicate results for you by enabling the `dedup_results` boolean in your query: ``` $ watchman -j <<-EOT ["query", "/path/to/root", { "path": ["bar", "bar"], "dedup_results": true }] EOT ``` You may test for this feature using an extended version command and requesting the capability name `dedup_results`. ### Since Generator The `since` generator produces a list of files that were modified since a specific [clockspec](../docs/clockspec.html). The following query will consider the set of files changed since the last query using the named cursor `mycursor` and then pass them to the expression evaluator to be filtered to just those that are files: ```bash $ watchman -j <<-EOT ["query", "/path/to/root", { "since": "n:mycursor", "expression": ["type", "f"] }] EOT ``` If the `since` parameter value is blank, was produced by a different watchman process (in other words, the watchman process was restarted between the time that the value was obtained and the time the query was issued) or is a named cursor that has not yet been used in a query, the `since` generator will consider the state to be a *fresh instance* and its behavior is modified: A *fresh instance* result set will only include files that currently exist and will generate file nodes that are always considered to be `new`. If the query was configured with the `empty_on_fresh_instance` property set to `true` then the result set will be empty and the `is_fresh_instance` property will be set to `true` in the result object. The since generator also knows how to talk to source control; [you can read more about that here](/watchman/docs/scm-query.html). ### Suffix Generator The `suffix` generator produces a list of files that have a particular suffix or set of suffixes. The value can be either a string or an array of strings. ```bash $ watchman -j <<-EOT ["query", "/path/to/root", { "suffix": "js" }] EOT ``` ```bash $ watchman -j <<-EOT ["query", "/path/to/root", { "suffix": ["js", "css"] }] EOT ``` ### Glob Generator *Since 4.7.* The `glob` generator produces a list of files by matching against your input list of patterns. It does this by building a tree from the glob expression(s) and walking both the expression and the in-memory filesystem tree concurrently. This query will yield a list of all of the C source and header files found directly in the `src` dir: ``` $ watchman -j <<-EOT ["query", "/path/to/root", { "glob": ["src/*.c", "src/*.h"], "fields": ["name"] }] ``` This query will yield a list of all of the C source and header files found in any subdirectories of the root: ``` $ watchman -j <<-EOT ["query", "/path/to/root", { "glob": ["**/*.c", "**/*.h"], "fields": ["name"] }] ``` Note that it is more efficient to use the `suffix` generator together with a `dirname` expression term for such a broadly scoped query as it results in fewer comparisons. This example is included as an illustration of recursive globbing. The glob generator implicitly enables `dedup_results` mode. ### Path Generator The `path` generator produces a list of files based on their path and depth. Depth controls how far watchman will search down the directory tree for files. The `path` generator expects an array of path specifiers. Each path specifier can be either a string or an object and each will produce a set of files. If it is a string then it is treated as the value for `path` with `depth` set to infinite. If an object, the fields `path` (a string) and `depth` (an integer) must be supplied. Paths are relative to the root, so if watchman is watching `/foo/`, path `bar` refers to `/foo/bar`. A `depth` value of `0` means only files and directories which are contained in this path. A `depth` value of `-1` means no limit on the depth. The following `path` generators are equivalent: ``` $ watchman -j <<-EOT ["query", "/path/to/root", { "path": ["bar"] }] EOT ``` ``` $ watchman -j <<-EOT ["query", "/path/to/root", { "path": [{"path": "bar", "depth": -1}] }] EOT ``` ### All Generator The `all` generator produces a list of all file nodes. It is the default generator and is used in the case where no other generators were explicitly specified. ```bash $ watchman -j <<-EOT ["query", "/path/to/root", { }] EOT ``` ### Expressions A watchman query expression consists of 0 or more expression terms. If no terms are provided then each file evaluated is considered a match (equivalent to specifying a single `true` expression term). Otherwise, the expression is evaluated against the file and produces a boolean result. If that result is true then the file is considered a match and is added to the output set. An expression term is canonically represented as a JSON array whose zeroth element is a string containing the term name. ```json ["termname", arg1, arg2] ``` If the term accepts no arguments you may use a short form that consists of just the term name expressed as a string: ```json "true" ``` Expressions that match against file names may match against either the *basename* or the *wholename* of the file. The basename is the name of the file within its containing directory. The wholename is the name of the file relative to the watched root. You can find a list of all possible expression terms in the sidebar on the left of this page. ### Relative roots *Since 3.3.* Watchman supports optionally evaluating queries with respect to a path within a watched root. This is used with the `relative_root` parameter: ```json ["query", "/path/to/watched/root", { "relative_root": "project1", }] ``` Setting a relative root results in the following modifications to queries: * The `path` generator is evaluated with respect to the relative root. In the above example, `"path": ["dir"]` will return all files inside `/path/to/watched/root/project1/dir`. * The input expression is evaluated with respect to the relative root. In the above example, `"expression": ["match", "dir/*.txt", "wholename"]` will return all files inside `/path/to/watched/root/project1/dir/` that match the glob `*.txt`. * Paths inside the relative root are returned with the relative root stripped off. For example, a path `project1/dir/file.txt` would be returned as `dir/file.txt`. * Paths outside the relative root are not returned. Relative roots behave similarly to a separate Watchman watch on the subdirectory, without any of the system overhead that that imposes. This is useful for large repositories, where your script or tool is only interested in a particular directory inside the repository. watchman-4.9.0/website/_docs/install.markdown000066400000000000000000000165411314236077500213100ustar00rootroot00000000000000--- pageid: install title: Installation layout: docs section: Installation permalink: docs/install.html --- ## System Requirements Watchman is known to compile and pass its test suite on: * Linux systems with `inotify` * OS X (uses `FSEvents` on 10.7+, `kqueue(2)` on earlier versions) * Windows x64 on Windows 7, Windows Server 2012 R2 and later is currently in **beta** status. Watchman used to support the following systems, but no one is actively maintaining them. The core of the code should be OK, but they likely don't build. We'd love it if someone would step forward to maintain them: * BSDish systems (FreeBSD 9.1, OpenBSD 5.2) that have the `kqueue(2)` facility * Illumos and Solaris style systems that have `port_create(3C)` Watchman relies on the operating system facilities for file notification, which means that you will likely have very poor results using it on any kind of remote or distributed filesystem. Watchman does not currently support any other operating system not covered by the list above. ## Download for Windows (Beta) Watchman is considered to be in **beta** status for Windows but is has a reasonably sized group of users depending on it already, and we expect to remove the beta label in the coming months. Watchman was built to support Windows Server 2012 R2 and later, but has had community provided patches that enable support for Windows 7 and later. At this time, we recommend running the latest master build of watchman on Windows. * [Download latest watchman.zip](https://ci.appveyor.com/api/projects/wez/watchman/artifacts/watchman.zip?branch=master&job=Environment:+WATCHMAN_WIN7_COMPAT%3D) Extract the zip file and make sure that `watchman.exe` is located in a directory that is in your `PATH`. If you encounter issues with the Windows version of watchman, please report them via GitHub! [You can find the list of known Windows issues here]( https://github.com/facebook/watchman/labels/windows). ## Build/Install ### Installing on OS X via Homebrew To build the most recent release currently tracked by [Homebrew](http://brew.sh/): ```bash $ brew update $ brew install watchman ``` To install the latest build from github: ```bash $ brew install --HEAD watchman ``` ### Installing on OS X via macports To install the package maintained by [MacPorts](https://www.macports.org): ```bash $ sudo port install watchman ``` ### Installing from source You can use these steps below to get watchman built. You will need `autoconf`, `automake` and `libtool` (or `glibtool` on OS X). You may optionally build watchman without `pcre` and `python` support (see configuration options below). For python support, you will need `setuptools` and may need to install a `python-dev` or `python-devel` package. To build the C++ client library you will need to install `libfolly`. See below for some more information on options to configure your build. ```bash $ git clone https://github.com/facebook/watchman.git $ cd watchman $ git checkout {{ site.data.current_release.tag }} # the latest stable release $ ./autogen.sh $ ./configure $ make $ sudo make install ``` ### Compile Time Configuration Options Our configure script accepts all the standard options, but there are a couple that are specific to watchman that might be relevant to your needs: ``` --enable-conffile=PATH Use PATH as the default configuration file name. Default is /etc/watchman.json --enable-statedir=PATH Use PATH as the default for state, log files and sockets instead of using your system tempdir --enable-lenient Turn off more pedantic levels of warnings and compilation checks --enable-stack-protector Enable stack protection in the same way that rpmbuild does on some systems. --enable-cppclient Enable build of the C++ client library. This is built by default if Folly is available. --with-buildinfo=TEXT Include some extra build information that will be reported in the version command output --without-python Disable python bindings --with-python=PATH Enable Python bindings. PATH is location of python. Default is to look for python in your PATH --without-pcre Don't enable pcre support. --with-pcre=PATH Enable pcre support. PATH is location of pcre-config. Default is to enable and look for pcre-config in your $PATH --with-gimli Enable support for the gimli process monitor https://bitbucket.org/wez/gimli/ --with-folly=PATH Specify root for Folly (needed for the C++ client library) https://github.com/facebook/folly ``` (Run `./configure --help` to get the list for the version you checked out) ### Continuous Integration We use continuous integration to build out every revision and pull-request to make sure that we don't accidentally break things. The current build status is: [![Build Status](https://travis-ci.org/facebook/watchman.svg?branch=master)]( https://travis-ci.org/facebook/watchman) [![Build status](https://ci.appveyor.com/api/projects/status/uvafoyc550kg438h/branch/master?svg=true) ](https://ci.appveyor.com/project/wez/watchman/branch/master) ## System Specific Preparation ### Linux inotify Limits The `inotify(7)` subsystem has three important tunings that impact watchman. * `/proc/sys/fs/inotify/max_user_instances` impacts how many different root dirs you can watch. * `/proc/sys/fs/inotify/max_user_watches` impacts how many dirs you can watch across all watched roots. * `/proc/sys/fs/inotify/max_queued_events` impacts how likely it is that your system will experience a notification overflow. You obviously need to ensure that `max_user_instances` and `max_user_watches` are set so that the system is capable of keeping track of your files. `max_queued_events` is important to size correctly; if it is too small, the kernel will drop events and watchman won't be able to report on them. Making this value bigger reduces the risk of this happening. Watchman has two simple strategies for mitigating an overflow of `max_queued_events`: * It uses a dedicated thread to consume kernel events as quickly as possible * When the kernel reports an overflow, watchman will assume that all the files have been modified and will re-crawl the directory tree as though it had just started watching the dir. This means that if an overflow does occur, you won't miss a legitimate change notification, but instead will get spurious notifications for files that haven't actually changed. ### Mac OS File Descriptor Limits *Only applicable on OS X 10.6 and earlier* The default per-process descriptor limit on OS X is extremely low (256!). Watchman will attempt to raise its descriptor limit to match `kern.maxfilesperproc` when it starts up, so you shouldn't need to mess with `ulimit`; just raising the sysctl should do the trick. The following will raise the limits to allow 10 million files total, with 1 million files per process until your next reboot. ```bash $ sudo sysctl -w kern.maxfiles=10485760 $ sudo sysctl -w kern.maxfilesperproc=1048576 ``` Putting the following into a file named `/etc/sysctl.conf` on OS X will cause these values to persist across reboots: ``` kern.maxfiles=10485760 kern.maxfilesperproc=1048576 ``` watchman-4.9.0/website/_docs/nodejs.markdown000066400000000000000000000267231314236077500211270ustar00rootroot00000000000000--- pageid: nodejs title: NodeJS layout: docs section: Invocation permalink: docs/nodejs.html --- To install the nodejs client: ```bash $ npm install fb-watchman ``` and to import it and create a client instance: ```js var watchman = require('fb-watchman'); var client = new watchman.Client(); ``` This documentation assumes that you are using the latest available version of the `fb-watchman` package published to the npm repository. ## Checking for watchman availability The client can be installed without requiring that the service is installed. It is important to handle lack of availability and also to test whether the installed service supports the [capabilities](/watchman/docs/capabilities.html) required by your application. The `capabilityCheck` method issues a [version]( /watchman/docs/cmds/version.html) command to query the capabilities of the server. ```js var watchman = require('fb-watchman'); var client = new watchman.Client(); client.capabilityCheck({optional:[], required:['relative_root']}, function (error, resp) { if (error) { // error will be an Error object if the watchman service is not // installed, or if any of the names listed in the `required` // array are not supported by the server console.error(error); } // resp will be an extended version response: // {'version': '3.8.0', 'capabilities': {'relative_root': true}} console.log(resp); }); ``` ## Initiating a watch Almost every operation in watchman revolves around watching a directory tree. You can repeatedly ask to watch the same directory without error; watchman will re-use an existing watch. ```js var watchman = require('fb-watchman'); var client = new watchman.Client(); var dir_of_interest = "/some/path"; client.capabilityCheck({optional:[], required:['relative_root']}, function (error, resp) { if (error) { console.log(error); client.end(); return; } // Initiate the watch client.command(['watch-project', dir_of_interest], function (error, resp) { if (error) { console.error('Error initiating watch:', error); return; } // It is considered to be best practice to show any 'warning' or // 'error' information to the user, as it may suggest steps // for remediation if ('warning' in resp) { console.log('warning: ', resp.warning); } // `watch-project` can consolidate the watch for your // dir_of_interest with another watch at a higher level in the // tree, so it is very important to record the `relative_path` // returned in resp console.log('watch established on ', resp.watch, ' relative_path', resp.relative_path); }); }); ``` ## Subscribing to changes Most node applications are interested in subscribing to live file change notifications. In watchman these are configured by issuing a [subscribe](/watchman/docs/cmd/subscribe.html) command. A subscription is valid for the duration of your client connection, or until you cancel the subscription using the [unsubscribe](/watchman/docs/cmd/unsubscribe.html) command. The following will generate subscription results for all files in the tree that match the query expression and then generate subscription results as files change: ```js // `watch` is obtained from `resp.watch` in the `watch-project` response. // `relative_path` is obtained from `resp.relative_path` in the // `watch-project` response. function make_subscription(client, watch, relative_path) { sub = { // Match any `.js` file in the dir_of_interest expression: ["allof", ["match", "*.js"]], // Which fields we're interested in fields: ["name", "size", "mtime_ms", "exists", "type"] }; if (relative_path) { sub.relative_root = relative_path; } client.command(['subscribe', watch, 'mysubscription', sub], function (error, resp) { if (error) { // Probably an error in the subscription criteria console.error('failed to subscribe: ', error); return; } console.log('subscription ' + resp.subscribe + ' established'); }); // Subscription results are emitted via the subscription event. // Note that this emits for all subscriptions. If you have // subscriptions with different `fields` you will need to check // the subscription name and handle the differing data accordingly. // `resp` looks like this in practice: // // { root: '/private/tmp/foo', // subscription: 'mysubscription', // files: [ { name: 'node_modules/fb-watchman/index.js', // size: 4768, // exists: true, // type: 'f' } ] } client.on('subscription', function (resp) { if (resp.subscription !== 'mysubscription') return; resp.files.forEach(function (file) { // convert Int64 instance to javascript integer const mtime_ms = +file.mtime_ms; console.log('file changed: ' + file.name, mtime_ms); }); }); } ``` ### Subscribing only to changed files The example above will generate results for existing (and deleted!) files at the time that the subscription is established. In some applications this can be undesirable. The following example shows how to add a logical time constraint. watchman tracks changes using an [abstract clock]( /watchman/docs/clockspec.html). We'll determine the current clock at the time that we initiate the watch and then add that as a constraint in our subscription. ```js function make_time_constrained_subscription(client, watch, relative_path) { client.command(['clock', watch], function (error, resp) { if (error) { console.error('Failed to query clock:', error); return; } sub = { // Match any `.js` file in the dir_of_interest expression: ["allof", ["match", "*.js"]], // Which fields we're interested in fields: ["name", "size", "exists", "type"], // add our time constraint since: resp.clock }; if (relative_path) { sub.relative_root = relative_path; } client.command(['subscribe', watch, 'mysubscription', sub], function (error, resp) { // handle the result here }); }); } ``` ## NodeJS API Reference ## Methods ### client.capabilityCheck(options, done) The `capabilityCheck` method issues a [version]( /watchman/docs/cmds/version.html) command to query the capabilities of the server. If the server doesn't support capabilities, `capabilityCheck` will emulate the capability response for a handful of significant capabilities based on the version reported by the server. The `options` argument may contain the following properties: * `optional` an array listing optional capability names * `required` an array listing required capability names The properties are passed through to the underlying `version` command. The `done` parameter is a callback that will be passed (error, result) when the command completes. It doesn't make sense to issue a `capabilityCheck` call and not provide the `done` callback. The response object will contain a `capabilities` object property whose keys will be the union of the `optional` and `required` capability names and whose values will be either `true` or `false` depending on the availability of the capability name. If any of the `required` capabilities are not supported by the server, the `error` parameter in the `done` callback will be set and will contain a meaningful error message. ```js client.capabilityCheck({optional:[], required:['relative_root']}, function (error, resp) { if (error) { // error will be an Error object if the watchman service is not // installed, or if any of the names listed in the `required` // array are not supported by the server console.error(error); } // resp will be an extended version response: // {'version': '3.8.0', 'capabilities': {'relative_root': true}} console.log(resp); }); ``` ### client.command(args [, done]) Sends a command to the watchman service. `args` is an array that specifies the command name and any optional arguments. The command is queued and dispatched asynchronously. You may queue multiple commands to the service; they will be dispatched in FIFO order once the client connection is established. The `done` parameter is a callback that will be passed (error, result) when the command completes. You may omit it if you are not interested in the result of the command. ```js client.command(['watch-project', process.cwd()], function(error, resp) { if (error) { console.log('watch failed: ', error); return; } if ('warning' in resp) { console.log('warning: ', resp.warning); } if ('relative_path' in resp) { // We will need to remember and adjust for relative_path console.log('watching project ', resp.watch, ' relative path to cwd is ', resp.relative_path); } else { console.log('watching ', resp.watch); } }); ``` If a field named `warning` is present in `resp`, the watchman service is trying to communicate an issue that the user should see and address. For example, if the system watch resources need adjustment, watchman will provide information about this and how to remediate the issue. It is suggested that tools that build on top of this library bubble the warning message up to the user. ### client.end() Terminates the connection to the watchman service. Does not wait for any queued commands to send. ## Events The following events are emitted by the watchman client object: ### Event: 'connect' Emitted when the client successfully connects to the watchman service ### Event: 'error' Emitted when the socket to the watchman service encounters an error. It may also be emitted prior to establishing a connection if we are unable to successfully execute the watchman CLI binary to determine how to talk to the server process. It is passed a variable that encapsulates the error. ### Event: 'end' Emitted when the socket to the watchman service is closed ### Event: 'log' Emitted in response to a unilateral `log` PDU from the watchman service. To enable these, you need to send a `log-level` command to the service: ```js // This is very verbose, you probably don't want to do this client.command(['log-level', 'debug']); client.on('log', function(info) { console.log(info); }); ``` ### Event: 'subscription' Emitted in response to a unilateral `subscription` PDU from the watchman service. To enable these, you need to send a `subscribe` command to the service: ```js // Subscribe to notifications about .js files client.command(['subscribe', process.cwd(), 'mysubscription', { expression: ["match", "*.js"] }], function(error, resp) { if (error) { // Probably an error in the subscription criteria console.log('failed to subscribe: ', error); return; } console.log('subscription ' + resp.subscribe + ' established'); } ); // Subscription results are emitted via the subscription event. // Note that watchman will deliver a list of all current files // when you first subscribe, so you don't need to walk the tree // for yourself on startup client.on('subscription', function(resp) { console.log(resp.root, resp.subscription, resp.files); }); ``` To cancel a subscription, use the `unsubscribe` command and pass in the name of the subscription you want to cancel: ```js client.command(['unsubscribe', process.cwd(), 'mysubscription']); ``` Note that subscriptions names are scoped to your connection to the watchman service; multiple different clients can use the same subscription name without fear of colliding. watchman-4.9.0/website/_docs/release-notes.markdown000066400000000000000000000360541314236077500224110ustar00rootroot00000000000000--- pageid: release-notes title: Release Notes layout: docs section: Installation permalink: docs/release-notes.html --- We focus on the highlights only in these release notes. For a full history that includes all of the gory details, please see [the commit history on GitHub](https://github.com/facebook/watchman/commits/master). ### Watchman 4.9.0 (not yet released) * New field: `content.sha1hex`. This field expands to the SHA1 hash of the file contents, expressed in hex digits (40 character hex string). Watchman maintains a cache of the content hashes and can compute the hash on demand and also heuristically as files are changed. This is useful for tooling that wants to perform more intelligent cache invalidation or build artifact fetching from content addressed storage. * New feature: Source Control Aware query mode. Currently supports only Mercurial (patches to add Git support are welcomed!). SCM aware query mode helps to keep response sizes closer to `O(what-you-changed)` than to `O(all-repo-changes)` when rebasing your code. Using this feature effectively may require some additional infrastructure to compute and associate data with revisions from your repo. * Windows: promoted from alpha to beta status! * Windows: fixed some performance and reliability issues * Windows: now operates correctly on Windows 7 * Windows: can now see and report symlinks and junction points * Fixed an issue where queries larger than 1MB would likely result in a PDU error response. * Improved performance of handling changes on case insensitive filesystems * Reduced lock contention for subscriptions that do no use the advanced settling (`drop`, `defer`) options. * Fixed since generator behavior when using unix timestamps rather than the preferred clock string syntax ### Watchman 4.8.0 (never formally released) Whoops, we never got around to tagging this beyond a release candidate tag! * New command `flush-subscriptions` to synchronize subscriptions associated with the current session. * On Windows, return `/` as the directory separator. Previously we used `\`. This change should be pretty neutral for clients, and makes it easier to work with both the internals and the integration test infrastructure. * Enforce socket Unix groups more strongly — Watchman will now refuse to start if it couldn't gain the right group memberships, as can happen for sites that are experiencing intermittent LDAP connectivity problems. * pywatchman now officially supports Python 3. pywatchman will return Unicode strings (possibly with surrogate escapes) by default, but can optionally return bytestrings. Note that on Python 3, pywatchman requires Watchman 4.8 and above. The Python 2 interface and requirements remain unchanged. * Prior to 4.8, methods on the Java WatchmanClient that returned ListenableFutures would swallow exceptions and hang in an unfinished state under situations like socket closure or thread death. This has been fixed, and now ListenableFutures propagate exception conditions immediately. (Note that this is typically unrecoverable, and users should create a new WatchmanClient to re-establish communication with Watchman.) See #412. * The minimum Java version for the Watchman Java client has always been 1.7, but it was incorrectly described to be 1.6. The Java client's build file has been fixed accordingly. * Watchman was converted from C to C++. The conversion exposed several concurrency bugs, all of which have now been fixed. * Subscription queries are now executed in the context of the client thread, which means that subscriptions are dispatched in parallel. Previously, subscriptions would be serially dispatched and block the disk IO thread. * Triggers are now dispatched in parallel and waits are managed in their own threads (one thread per trigger). This improves concurrency and resolves a couple of waitpid related issues where watchman may not reap spawned children in a timely fashion, or may spin on CPU until another child is spawned. * Fixed an object lifecycle management issue that could cause a crash when aging out old/transient files. * Implement an upgraded wire protocol, BSERv2, on the server and in pywatchman. BSERv2 can carry information about string encoding over the wire. This lets pywatchman convert to Unicode strings on Python 3. Clients and servers know how to transparently fall back to BSERv1. * macOS: we no longer use socket activation when registering with launchd. This was the source of some upgrade problems for mac Homebrew users. ### Watchman 4.7.0 (2016-09-10) * Reduced memory usage by 40% * Queries can now run with a shared lock. It is recommended that clients move away from the `n:FOO` style server side named cursor clockspecs to take full advantage of this. * Added new `glob` generator as a walking strategy for queries. This allows watchman to evaluate globs in the most efficient manner. Our friends in the Buck project have already integrated this into their `BUCK` file parsing to evaluate globs without touching the filesystem! * Added `"case_sensitive": true` option to queries to force matches to happen in a case sensitive manner, even if the watched root is on a case insensitive filesystem. This is used to accelerate certain types of internal traversal: if we know that a path is case sensitive we can perform an `O(1)` lookup where we would otherwise have to perform an `O(number-of-directory-entries)` scan and compare. * Fixed a race condition during subscription initiation that could emit incorrect clock values. * Fixed spurious over-notification for parent directories of changed files on Mac. * Fixed some reliability issues on Windows ### Watchman 4.6.0 (2016-07-09) * Improved I/O scheduling when processing recursive deletes and deep directory rename operations. * Improved performance of the `ignore_dirs` configuration option on macOS and Windows systems. We take advantage of an undocumented (but supported!) API to further accelerate this for the first 8 entries in the `ignore_dirs` on macOS. Users that depend on this configuration to avoid recrawls will want to review and prioritize their most active build dirs to the front of the `ignore_dirs` specified in their `.watchmanconfig` file. * Added an optional recrawl recovery strategy for macOS that will attempt to resync from the fseventsd journal rather than performing a full filesystem walk. This is currently disabled by default but will likely be enabled by default in the next Watchman release. You can enable this by setting `fsevents_try_resync: true` in either `/etc/watchman.json` or your `.watchmanconfig`. This should reduce the frequency of recrawl warnings for some users/workloads, and also improves I/O for users with extremely large trees. * Fixed accidental exponential time complexity issue with recursive deletes and deep directory rename operations on case-insensitive filesystems (such as macOS). This manifested as high CPU utilization for extended periods of time. * Added support for allowing non-owner access to a Watchman instance. Only the owner is authorized to create or delete watches. Non-owners can view information about existing watches. Access control is based on unix domain socket permissions. The new but not yet documented configuration options `sock_group` and `sock_access` can be used to control this new behavior. * Added support for inetd-style socket activation of the watchman service. [this commit includes a sample configuration for systemd](https://github.com/facebook/watchman/commit/2985377eaf8c8538b28fae9add061b67991a87c2). * Added the `symlink_target` field to the stored metadata for files. This holds the text of the symbolic link for symlinks. You can test whether it is supported by a watchman server using the capability name `field-symlink_target`. * Fixed an issue where watchman may not reap child processes spawned by triggers. * Fixed an issue where watchman may block forever during shutdown if there are other connected clients. * Added `hint_num_dirs` configuration option. ### pywatchman 1.4.0 (????-??-??) (These changes have not yet been released to pypi) * Added immutable version of data results to bser. This is cheaper to build from a serialized bser representation than the mutable version and is better suited to large result sets received from watchman. * Fixed a number of misc. portability issues * Added Python 3.x support ### Watchman 4.5.0 (2016-02-18) * Fixed an inotify race condition for non-atomic directory replacements that was introduced in Watchman 4.4. ### Watchman 4.4.0 (2016-02-02) * Added state-enter and state-leave commands can allow subscribers to more intelligently settle/coalesce events around hg update or builds. * Fixed an issue where subscriptions could double-notify for the same events. * Fixed an issue where subscriptions that never match any files add O(all-observed-files) CPU cost to every subscription dispatch ### Watchman 4.3.0 (2015-12-14) * Improved handling of case insensitive renames; halved the memory usage and doubled crawl speed on OS X. ### Watchman 4.2.0 (2015-12-08) * Increased strictness of checks for symlinks; rather than just checking whether the leaf of a directory tree is a symlink, we now check each component down from the root of the watch. This improves detection and processing for directory-to-symlink (and vice versa) transitions. * Increased priority of the watchman process on OS X. ### pywatchman 1.3.0 (2015-10-22) * Added `watchman-make` and `watchman-wait` commands * Added pure python implementation of BSER ### Watchman 4.1.0 (2015-10-20) * Fixed an issue where symlink size was always reported as 0 on OS X using the new bulkstat functionality ### Watchman 4.0.0 (2015-10-19) * Fixed an issue where a directory that was replaced by a symlink would cause a symlink traversal instead of correctly updating the type of the node and marking the children removed. * Fixed a debugging log line that was emitted at the wrong log level on every directory traversal. ### Watchman 3.9.0 (2015-10-12) * Fixed an issue where dir renames on OS X could cause us to lose track of the files inside the renamed dir * Fixed an issue where dir deletes and replacements on Linux could cause us to lose track of the files inside the replaced dir (similar to the OS X issue above in manifestation, but a different root cause). * Improved (re)crawl speed for dirs with more than a couple of entries on average (improvement can be up to 5x for dirs with up to 64 entries on average). You may now tune the `hint_num_files_per_dir` setting in your `.watchmanconfig` to better match your tree. [More details]( /watchman/docs/config.html#hint_num_files_per_dir) * Improved (re)crawl speed on OS X 10.10 and later by using `getattrlistbulk`. This allows us to improve the data:syscall ratio during crawling and can improve throughput by up to 40% for larger trees. * Add optional `sync_timeout` to the `clock` command * Avoid accidentally passing descriptors other than the stdio streams when we spawn the watchman service. * Fixed a race condition where we could start two sets of watcher threads for the same dir if two clients issue a `watch` or `watch-project` at the same time * Added a helpful error for a tmux + launchd issue on OS X ### Watchman 3.8.0 (2015-09-14) * Improved latency of processing kernel notifications. It should now be far less likely to run into an notification queue overflow. * Improved idle behavior. There were a couple of places where watchman would wake up more often than was strictly needed and these have now been fixed. This is mostly of interest to laptop users on battery power. * Improved inotify move tracking. Some move operations could cause watchman to become confused and trigger a recrawl. This has now been resolved. * Hardened statedir and permissions. There was a possibility of a symlink attack and this has now been mitigated by re-structuring the statedir layout. * Fixed a possible deadlock in the idle watch reaper * Fixed an issue where the watchman -p log-level debug could drop log notifications in the CLI * Disabled the IO-throttling-during-crawl that we added in 3.7. It proved to be more harmful than beneficial. * `-j` CLI option now accepts either JSON or BSER encoded command on stdin * Added [capabilities](/watchman/docs/capabilities.html) to the server, and added the [capabilityCheck](/watchman/docs/cmd/version.html#capabilityCheck) method to the python and node clients. ### pywatchman 1.2.0 (2015-08-15) * Added the `capabilityCheck` method * Added `SocketTimeout` exception to distinguish timeouts from protocol level exceptions ### fb-watchman 1.3.0 for node (2015-08-15) * Added the [capabilityCheck](/watchman/docs/nodejs.html#checking-for-watchman-availability) method. ### pywatchman 1.0.0 (2015-08-06) * First official pypi release, thanks to [@kwlzn](https://github.com/kwlzn) for setting up the release machinery for this. ### Watchman 3.7.0 (2015-08-05) (Watchman 3.6.0 wasn't formally released) * Fixed bug where `query match` on `foo*.java` with `wholename` scope would incorrectly match `foo/bar/baz.java`. * Added `src/**/*.java` recursive glob pattern support to `query match`. * Added options dictionary to `query`'s `match` operator. * Added `includedotfiles` option to `query match` to include files whose names start with `.`. * Added `noescape` option to `query match` to make `\` match literal `\`. * We'll now automatically age out and stop watches. See [idle_reap_age_seconds]( /watchman/docs/config.html#idle_reap_age_seconds) for more information. * `watch-project` will now try harder to re-use an existing watch and avoid creating an overlapping watch. * Reduce I/O priority during crawling on systems that support this * Fixed issue with the `long long` data type in the python BSER module ### fb-watchman 1.2.0 for node (2015-07-11) * Updated the node client to more gracefully handle `undefined` values in objects when serializing them; we now omit keys whose values are `undefined` rather than throw an exception. ### Watchman 3.5.0 (2015-06-29) * Fix the version number reported by watchman. ### Watchman 3.4.0 (2015-06-29) * `trigger` now supports an optional `relative_root` argument. The trigger is evaluated with respect to this subdirectory. See [trigger](/watchman/docs/cmd/trigger.html#relative-roots) for more. ### fb-watchman 1.1.0 for node (2015-06-25) * Updated the node client to handle 64-bit integer values using the [node-int64](https://www.npmjs.com/package/node-int64). These are most likely to show up if your query fields include `size` and you have files larger than 2GB in your watched root. ### fb-watchman 1.0.0 for node (2015-06-23) * Updated the node client to support [BSER](/watchman/docs/bser.html) encoding, fixing a quadratic performance issue in the JSON stream decoder that was used previously. ### Watchman 3.3.0 (2015-06-22) * `query` and `subscribe` now support an optional `relative_root` argument. Inputs and outputs are evaluated with respect to this subdirectory. See [File Queries](/watchman/docs/file-query.html#relative-roots) for more. watchman-4.9.0/website/_docs/scm-query.md000066400000000000000000000206471314236077500203470ustar00rootroot00000000000000--- pageid: scm-query title: Source Control Aware Queries layout: docs section: Queries permalink: docs/file-query.html --- *Since 4.9.* *The [capability](/watchman/docs/capabilities.html) name associated with this enhanced functionality is `scm-since`.* At the time of writing, only Mercurial is supported. The capability name for this is `scm-hg`. The internal architecture allows supporting other source control systems quite easily; it just needs someone to implement and test them! A common pattern for tools that consume watchman is wanting to reason about the changes in a version controlled repository. For most repos it is fine to simply receive information about all changed files as they are updated, even during a rebase over several days of work by others. For very large or very busy repositories, where a great many files can change over a short period of time, it can be desirable to get a minimized set of information about the changes. For example, if your tool has the ability to load some pre-built data from some artifact storage, rather than processing many hundreds of changed files incrementally you may want to take the merge base of local changes and use that to locate the pre-built data and process only the delta between that state and the current state of the repo. An illustration may help. Here we see that a user has a stack of two commits based off the symbolic `master` commit. In this scenario, `master` is tracking the tip of the repo to which the local repo is published, and the user is checked out at the 6b38a5 commit: ``` | @ 6b38a5 wez | | Add cats.cpp | | | o fa2e92 wez |/ Add cat.jpg | o f12345 master ``` Now the user synchronizes their repo with the remote, fetching the commits but not changing their work yet. This is often combined with the step that follows, but we are breaking it out here for the purposes of illustration. This is equivalent to running `hg pull` or `git fetch`: ``` o fabf87 coworker master . Amazing new feature . | @ 6b38a5 wez | | Add cats.cpp | | | o fa2e92 wez |/ Add cat.jpg | o ``` The ellipsis portion of the DAG represents uninteresting commits to `wez`; there may be hundreds of files changed by those commits, but `wez` only cares about the work in their local branch of the DAG. Now `wez` wants to rebase their work on master. This would be done using a command like `hg rebase -d master -s fa2e92`: ``` | @ bbbbbb wez | | Add cats.cpp | | | o aaaaaa wez |/ Add cat.jpg | o fabf87 coworker master . Amazing new feature . ``` The crucial part of this is what happens to the working copy; assuming that we now land on commit `bbbbbb`, Watchman will observe changes for all of the hundreds of files that changed across the rebase and pass this information on to the tools that are subscribed or are querying for this information. If your tooling is source control aware then you can ask watchman to run since queries in a mode where it will return you information about the merge base with `master` and the minimized set of files that changed. To enable this mode you issue a query using a new *fat clock* as the `since` parameter for the query: ```bash $ watchman -j <<-EOT ["query", "/path/to/root", { "since": { scm: { "mergebase-with": "master" } }, "expression": ["type", "f"], "fields": ["name"] }] EOT ``` This particular `since` value starts with an unspecified clock value and requests that watchman run the query in source control aware mode, using the symbolic name `master` to compute the merge base for the commit graph. If we look back to the illustrations above and rewind to the first scenario, the results of this query will look something like this: ``` { "clock": { "clock": "c:123:123", "scm": { "mergebase": "f12345", "mergebase-with": "master" } }, "files": ["cat.jpg", "cats.cpp"] } ``` This result informs the client of the merge base with master (which happens to be master itself) and the list of changes since that merge base. To get the next incremental change the client feeds that clock value back in to its next query. Looking back to the second illustration above, if we were to run this query after the running `hg pull` (note that this doesn't change the working copy): ```bash $ watchman -j <<-EOT ["query", "/path/to/root", { "since": { "clock": "c:123:123", "scm": { "mergebase": "f12345", "mergebase-with": "master" } }, "expression": ["type", "f"], "fields": ["name"] }] EOT ``` we'd get this result: ``` { "clock": { "clock": "c:123:124", "scm": { "mergebase": "f12345", "mergebase-with": "master" } }, "files": [] } ``` Note that the `files` list is empty because we didn't change any files, and note that one of the numeric portions of the clock string has changed. Also note that the mergebase revision remains the same because we also didn't rebase the commit yet. This is a little white lie: the reality is that some files did change in the version control system, and with the expression we're using we would see them, but they are not part of the working copy so we're omitting them for the clarity of this example. Now if we rebase and update to the rebased revision (taking us to the last of the illustrations from above), we'd run this query, feeding in the clock from the last query to get the correct incremental result: ```bash $ watchman -j <<-EOT ["query", "/path/to/root", { "since": { "clock": "c:123:124", "scm": { "mergebase": "f12345", "mergebase-with": "master" } }, "expression": ["type", "f"], "fields": ["name"] }] EOT ``` we'd get this result: ``` { "clock": { "clock": "c:123:125", "scm": { "mergebase": "fabf87", "mergebase-with": "master" } }, "files": ["cat.jpg", "cats.cpp"] } ``` Note that the mergebase reported in the clock has changed and note that the list of files reported is just the two from our commit stack despite there being hundreds of files that were physically updated on the disk. Your client can now lookup some state based on the `fabf87` revision and download it, and can then incrementally apply the computation for `cat.jpg` and `cats.cpp` on top of that state. If your client doesn't know how to do this, then you shouldn't use this source control aware query mode! ## Source Control Aware Subscriptions You can also use the same source control awareness in your subscriptions. This is basically the same procedure as making queries above, but there are some preconditions and things to note: * Watchman needs the cooperation of the source control system to know when it should defer events. At the time of writing this is only possible when using Mercurial with the `fsmonitor` extension enabled. * Source control aware subscriptions implicitly enable `defer_vcs` and `defer:["hg.update"]`. As with the point above, this is to ensure that you don't get notified about files changing during the working copy update operation; that would defeat the point of using source control awareness. To initiate a source control aware subscription: ```json ["subscribe", "/path/to/root", "mysubscriptionname", { "fields": ["name"], "since": { "scm": { "mergebase-with": "master" } } }] ``` You'll then receive subscription responses as files change; those responses will contain *fat clock* values for the `since` and `clock` fields: ```json { "subscription": "mysubscriptionname", "clock": { "clock": "c:1234:125", "scm": { "mergebase": "fabf87", "mergebase-with": "master", } }, "since": { "clock": "c:1234:123", "scm": { "mergebase": "f12345", "mergebase-with": "master", } }, "files": ["cat.jpg", "cats.cpp"], "root": "/path/to/root" } ``` The `clock` field holds the value of the clock and the merge base as of the subscription notification. The `since` field holds the *fat clock* that was returned in the `clock` field from the prior subscription update. It is present as a convenience for you; you can compare the `mergebase` fields between the two to determine that the merge base changed in this update. This is an important detail because more files in the working copy have been physically changed than are reflected in the `files` list; your tooling will need to so something appropriate to ensure that it computes a consistent and correct result. watchman-4.9.0/website/_docs/simple-query.md000066400000000000000000000041351314236077500210500ustar00rootroot00000000000000--- pageid: simple-query title: Simple Pattern Syntax layout: docs section: Queries permalink: docs/simple-query.html --- Simple patterns follow a more traditional UNIX command line approach of using command line switches to indicate the nature of the pattern match. When simple patterns are used, the result set unconditionally includes all core file metadata fields. They are described in more detail below. ## Simple Pattern syntax Where you see `[patterns]` in the command syntax for the `find`, `since` and `trigger` commands, we allow filename patterns that match according the following rules: * We maintain an *inclusion* and an *exclusion* list. As the arguments are processed we'll accumulate them in one or the other. By default they are accumulated into the *inclusion* list. * `-X` causes any subsequent items to be placed into the *exclusion* list * `-I` causes any subsequent items to be placed into the *inclusion* list * `--` indicates the end of the set of patterns * `-p` indicates that the following pattern should use `pcre` as the expression term. This is reset after generating the next term. * `-P` indicates that the following pattern should use `ipcre` as the expression term and perform a case insensitive match. This is reset after generating the next term. * If neither `-p` nor `-P` were used, the generated term will use `match` * `!` followed by a space followed by a pattern will negate the sense of the pattern match generating a `not` term. Any elements in the inclusion list will match; they are composed together using an "anyof" term. The inclusion list and exclusion lists are composed using the logic `(NOT anyof exclusion) AND (anyof inclusion)`. For example: '*.c' Generates a file expression: ```json ["match", "*.c", "wholename"] ``` A list: '*.js' '*.css' ```json ["anyof", ["match", "*.js", "wholename"], ["match", "*.css", "wholename"] ] ``` An example of how the exclusion list syntax works: -X '*.c' -I '*main*' Generates: ```json ["allof", ["not", ["match", "*.c", "wholename"]], ["match", "*main*", "wholename"] ] ``` watchman-4.9.0/website/_docs/socket-interface.markdown000066400000000000000000000055671314236077500230760ustar00rootroot00000000000000--- pageid: socket-interface title: Socket Interface layout: docs section: Invocation permalink: docs/socket-interface.html --- Most simple uses of Watchman will invoke the watchman binary and process its output. Sometimes it is desirable to avoid the overhead of an extra process and talk directly to your watchman service. The watchman service runs as a single long-lived process per user. The watchman binary will take care of spawning the server process if necessary. The server will create a unix domain socket for communication with its clients. The location of the socket depends on compile time options and command line flags. It is recommended that you invoke `watchman get-sockname` to discover the location, or if you are being invoked via a trigger (since version 2.9.7) you will find the location in the `$WATCHMAN_SOCK` environmental variable. ## Watchman Protocol The unix socket implements a request-response protocol with PDUs encoded in either JSON or BSER representation. Some watchman commands (notably `subscribe` and `log-level`) allow the watchman service to unilaterally send any number of PDUs to the client, and require more stateful handling. ### JSON encoding The JSON encoding represents a request or a response as a single line of compact JSON encoded data. The newline is used to detect the end of the PDU. Requests from the client are always represented as a JSON array. Responses from the server are always represented as a JSON object. Sending the `since` command is simply a matter of formatting it as JSON. Note that the JSON text must be a single line (don't send a pretty printed version of it!) and be followed by a newline `\n` character: ```json ["since", "/path/to/src", "n:c_srcs", "*.c"] ``` ### BSER encoding BSER is a local-only binary serialization format that can represent the same data types as JSON, but in a more compact form and not be limited to UTF-8 representation of strings. When you make a request using BSER, the server will respond in BSER encoding. You can [read more about BSER in the BSER specification]( /watchman/docs/bser.html). ### Reporting Errors and Warnings If a Response includes a field named `error` it indicates that the request was not successful. The `error` field, if present, is a string value that can be presented to the user. If a Response includes a field named `warning` it indicates that there is some condition that should be reported back to the user so that the system can operate more effectively. Tools should display this to the user as an advisory. At the time of writing, this can be triggered due to overflowing the system limits on file watching resources. These are important to address so that events are not missed and thus so that correctness and system performance are maintained. The warning message contains a link to this documentation that provides advice on tuning and resolving the issue. watchman-4.9.0/website/_docs/troubleshooting.markdown000066400000000000000000000260411314236077500230650ustar00rootroot00000000000000--- pageid: troubleshooting title: Troubleshooting layout: docs section: Troubleshooting permalink: docs/troubleshooting.html --- We try to give directed advice in Watchman error diagnostics, which means that we will show a link to a section on this page with some context and advice where we have enough information to do so. Some operating systems provide richer diagnostic information than others, so we have to resort to more generic advice in some cases. The most common cause of problems is hitting system resource limits. There are finite resources available for filesystem watching, and when they are exceeded it can impact performance in the best case or prohibit correct operation in the worst case. ## Ensure that you are on the best available version It is generally a good idea to make sure that you are using the latest version of the software, so that you avoid any known issues. If you are running a pre-built binary provided by your operating system distribution system, there is a chance that you'll need to build the latest version from source. You can find instructions for this in [the installation section](/watchman/docs/install.html). ## Recrawl A recrawl is an action that Watchman performs in order to recover from situations where it believes that it has lost sync with the state of the filesystem. The most common cause for a recrawl is on Linux systems where the default inotify limits are sized quite small. What this means is that the rate at which your watched roots are generating changes is higher than the kernel can buffer and relay to the watchman service. When this happens, the kernel detects the overflow and signals `IN_Q_OVERFLOW`. The recovery is to recursively scan the root to make sure that we know what is really there and re-sync with the notification stream. Frequent recrawls are undesirable because they result in a potentially expensive full tree crawl, which marks all files as changed and propagates this status to clients which will in turn perform some action on the (likely falsely) changed state of the majority of files. ### Avoiding Recrawls There is no simple formula for setting your system limits; bigger is better but comes at the cost of kernel memory to maintain the buffers. You and/or your system administrator should review the workload for your system and the [System Specific Preparation Documentation]( /watchman/docs/install.html#system-specific-preparation) and raise your limits accordingly. ### kFSEventStreamEventFlagUserDropped OS X has a similar internal limit and behavior when that limit is exceeded. If you're encountering a message like: ``` Recrawled this watch 1 times, most recently because: /some/path: kFSEventStreamEventFlagUserDropped ``` then you are hitting the limits of your system. There is no direct control over the limit, but starting in Watchman 3.2 you may increase the [fsevents_latency](/watchman/docs/config.html#fsevents-latency) parameter in your `.watchmanconfig` file. ### I've changed my limits, how can I clear the warning? The warning will stick until you cancel the watch and reinstate it, or restart the watchman process. The simplest resolution is to run `watchman shutdown-server` and re-establish your watch on your next watchman query. ## Where are the logs? Watchman places logs in a file named `/.log`, where `STATEDIR` is set at the time that you built watchman. If you used the `--enable-statedir=` configure option, that will be the location that holds your logs. If not, the default for `STATEDIR` will be `/var/run/watchman`, or for older versions of watchman, the logs may be placed in `/.watchman..log`. If you're running a `homebrew` build of watchman, you'll find the logs in a path named something like `/usr/local/Cellar/watchman/3.2.0/var/run/watchman/.log`. *Since 3.8.* Watchman places the logs in a file named `/log`, which will typically be a location like `/var/run/watchman/-state/log`. The default log location may be overridden by the `--logfile` [Server Option]( /watchman/docs/cli-options.html#server-options). [Quick note on default locations]( /watchman/docs/cli-options.html#quick-note-on-default-locations) explains what we mean by ``, ``, `` and so on. ## Poison: inotify_add_watch ``` A non-recoverable condition has triggered. Watchman needs your help! The triggering condition was at timestamp=1407695600: inotify-add-watch(/my/path) -> Cannot allocate memory All requests will continue to fail with this message until you resolve the underlying problem. You will find more information on fixing this at https://facebook.github.io/watchman/docs/troubleshooting.html#poison-inotify-add-watch ``` If you've encountered this state it means that your *kernel* was unable to watch a dir in one or more of the roots you've asked it to watch. This particular condition is considered non-recoverable by Watchman on the basis that nothing that the Watchman service can do can guarantee that the root cause is resolved, and while the system is in this state, Watchman cannot guarantee that it can respond with the correct results that its clients depend upon. We consider ourselves poisoned and will fail all requests for all watches (not just the watch that it triggered on) until the process is restarted. There are two primary reasons that this can trigger: * The user limit on the total number of inotify watches was reached or the kernel failed to allocate a needed resource * Insufficient kernel memory was available The resolution for the former is to revisit [System Specific Preparation Documentation]( /watchman/docs/install.html#system-specific-preparation) and raise your limits accordingly. The latter condition implies that your workload is exceeding the available RAM on the machine. It is difficult to give specific advice to resolve this condition here; you may be able to tune down other system limits to free up some resources, or you may just need to install more RAM in the system. ### I've changed my limits, how can I clear the error? The error will stick until you restart the watchman process. The simplest resolution is: *Since 4.6* ``` $ watchman watch-del-all $ watchman shutdown-server ``` *Before 4.6* ``` $ rm /state # see above for what STATEDIR means $ watchman --no-spawn --no-local shutdown-server ``` If you have not actually resolved the root cause you may continue to trigger and experience this state each time the system trips over these limits. ## Poison: opendir ``` A non-recoverable condition has triggered. Watchman needs your help! The triggering condition was at timestamp=1407695600: opendir(/my/path) -> Too many open files in system All requests will continue to fail with this message until you resolve the underlying problem. You will find more information on fixing this at https://facebook.github.io/watchman/docs/troubleshooting.html#opendir ``` If you've encountered this state it means that your entire system had too many open files, and that this prevented watchman from tracking the changes on your system. In this case, the error isn't related to filesystem watching but to other (likely) misbehaving processes on your system; it's usually indicative of a runaway program or set of programs consuming resources, but in some cases it may just be that your system workload requires that you increase your system limits for the number of files. ### How do I resolve this? [Follow these directions]( /watchman/docs/troubleshooting.html#i-39-ve-changed-my-limits-how-can-i-clear-the-error) If the issue persists, consult your system administrator to identify what is consuming these resources and remediate it, or to increase your system limits. ## FSEvents FSEvents is the file watching facility on OS X. There are few diagnostics that can help diagnose issues with FSEvents; the API itself gives little feedback on a number of error cases and instead emits rather cryptic error messages to the log file. If you got here because an error message told you to read this section, it will have also asked you to look at your log file. If you are using an older version of watchman and encounter the error message `FSEventStreamStart failed`, then you should locate your log file (see [Where are the logs?](#where-are-the-logs) above) and look for lines that mention FSEvents and then consult the information below. ### FSEventStreamStart: register_with_server: ERROR: f2d_register_rpc() => (null) (-21) Nobody outside of Apple is sure what precisely this means, but it indicates that the fsevents service has gotten in a bad state. Possible reasons for this may include: * There are too many event stream clients * One or more event stream clients has gotten in a bad state and is somehow impacting the fsevents service To resolve this issue, you may wish to try the following, which are progressively more invasive: * Avoid establishing multiple overlapping watches within the same filesystem tree, especially for large trees. We recommend watching only the root of a project or repo and not watching sub-trees within that tree. Organizations with large trees may wish to deploy the [root_restrict_files](config.html#root-restrict-files) configuration option so that watchman will only allow watching project roots. * Close or restart other applications that are using fsevents. Some examples are: * editors such as Sublime Text and TextMate. * Many nodejs packages and Grunt style workflows make use of fsevents. Make sure that you upgrade nodejs to at least version `v0.11.14`. If possible, configure your nodejs packages to use either [sane](https://www.npmjs.com/package/sane) or [fb-watchman](https://www.npmjs.com/package/fb-watchman) for file watching as this will consolidate the number of fsevents watches down to just the set maintained by watchman. * Restart the fsevents service: `sudo pkill -9 -x fseventsd` * Restart your computer ## Triggers/Subscriptions don't fire on OS X There is a rare fsevents bug that can prevent any notifications from working in directories where the case of the name of a directory in the kernel has an inconsistency. You can test whether this is happening to you by following [the instructions for the find-fsevents-bugs tool]( https://github.com/andreyvit/find-fsevents-bugs). If it is happening to you, the resolution is to rename the directories highlighted by the tool. You can read more about this issue in the following resources: * [Knowledge base article for LiveReload]( http://feedback.livereload.com/knowledgebase/articles/86239-os-x-fsevents-bug-may-prevent-monitoring-of-certai) * [issue for the Ruby fsevents module](https://github.com/thibaudgg/rb-fsevent/issues/10) * [Open Radar bug report](http://openradar.appspot.com/10207999) ## ReactNative: Watcher took too long to load There was an issue that was the result of umask affecting the permissions of the launchd plist file that Watchman uses to set up your watchman service on OS X. This issue was resolved in Watchman version 3.1. To update: ``` watchman shutdown-server brew update brew reinstall watchman ``` watchman-4.9.0/website/_docs/watchman-make.md000066400000000000000000000100741314236077500211300ustar00rootroot00000000000000--- pageid: watchman-make title: watchman-make layout: docs category: Invocation permalink: docs/watchman-make.html --- `watchman-make` is a convenience tool to help automatically invoke a build tool or script in response to files changing. It is useful to automate building assets or running tests as you save files during development. `watchman-make` will establish a watch on the files you specify and remain running in the foreground, waiting for changes to occur. When a change is triggered, your build tool or script will be run in the foreground with its output being passed through to your terminal session (or wherever you may have redirected it). Events are consolidated and settled before they are dispatched to your build tool so that it won't start executing until after the files have stopped changing. The `--settle` argument controls the settle duration. `watchman-make` requires `pywatchman` (and thus requires `python`) as well as `watchman`. ### Example ```bash $ watchman-make -p '**/*.c' '**/*.h' 'Makefile*' -t all -p 'tests/**/*.py' 'tests/**/*.c' -t integration # Relative to /Users/wez/fb/watchman # Changes to files matching **/*.c **/*.h Makefile* will execute `make all` # Changes to files matching tests/**/*.py tests/**/*.c will execute `make integration` # waiting for changes ``` ### Targets You can tell `watchman-make` about one or more build targets and their dependencies, and it will then trigger the build for those targets as changes are detected. The example above defines two targets using the `-t` argument; `all` and `integration`. These correspond to targets with the same names in the watchman `Makefile`. Each target will pick up the list of patterns defined by the `-p` argument that precedes it. ```bash $ watchman-make -p '**/*.c' '**/*.h' -t all ``` The above defines a target named `all` that will be triggered whenever any combination of files are changed that have filenames that match either of the patterns `*.c` or `*.h` at any level in the directory tree (that's what the `**` portion means). When it triggers, `watchman-make` will execute `make all`. If you don't use `make`, you can use the `--make` option to tell `watchman-make` to use your builder of choice. When a target is triggered, `watchman-make` will concatenate the value of `--make` with the name of the target and execute that command using the shell. The target name has no special meaning to `watchman-make`, it is used only to construct the command to invoke. There is no special logic or support that is specific to Makefiles or make. ### Multiple Targets There are two different ways to specify multiple targets. The first is shown in the main example at the top of this page and is repeated here: ```bash $ watchman-make -p '*.c' '*.h' 'Makefile*' -t all -p 'tests/**/*.py' 'tests/**/*.c' -t integration ``` This defines two independent targets, `all` and `integration` that each have a list of patterns defined as their triggers. Each time you specify a target using the `-t` option, the value of the `-p` option is cleared. The above will cause `make all` to be run if you change a file that matches `.*c` (at the top level of the tree), and will cause `make integration` to run if you change a source file under the tests directory. An alternative is to list multiple target names with your `-t` option: ```bash $ watchman-make -p '*.c' '*.h' 'Makefile*' 'tests/**/*.py' 'tests/**/*.c' -t all integration ``` this will execute `make all integration` if you change any top level `*.c` file *or* test source file. ### Run Scripts *Since 4.8.* As an alternative to targets, you can provide the path to a script which `watchman-make` will execute when changes are detected. ```bash $ watchman-make -p '**/*.c' '**/*.h' --run my_script.sh ``` The above will run the provided script whenever any combination of files are changed that have filenames that match either of the patterns `*.c` or `*.h` at any level in the directory tree. When it triggers, `watchman-make` will execute `my_script.sh`. You must run `watchman-make` with either `--target` or `--run`, but they cannot be run together watchman-4.9.0/website/_docs/watchman-wait.md000066400000000000000000000076501314236077500211650ustar00rootroot00000000000000--- pageid: watchman-wait title: watchman-wait layout: docs category: Invocation permalink: docs/watchman-wait.html --- `watchman-wait` waits for changes to files. It uses the watchman service to efficiently and recursively watch your specified list of paths. It is suitable for waiting for changes to files from shell scripts. It has some similarity to `inotifywait` except that it uses the watchman service to watch files and thus can be used on any of the operating systems supported by watchman, not just Linux. It can stop after a configurable number of events are observed. The default is a single event. You may also remove the limit and allow it to execute continuously. `watchman-wait` will print one event per line. The event information includes your specified list of fields, with each field separated by a space (or your choice of `--separator`). Events are consolidated and settled by the watchman server before they are dispatched to `watchman-wait` so that your script won't start executing until after the files have stopped changing. `watchman-wait` requires `pywatchman` (and thus requires `python`) as well as `watchman`. ### Paths and Patterns ```bash $ watchman-wait path [path ...] ``` The primary unit of watching is a path. You must specify a list of one or more paths that you'd like to wait for. Paths can be files or directories. Each of the paths in your list must exist at the time that you invoke `watchman-wait` or an error will be reported and `watchman-wait` will exit. If you'd like to wait for a file to be created you can watch the directory in which it will be created. You may further refine your watch by limiting it to a set of patterns. ```bash $ watchman-wait . -p '*.so' ``` ```bash $ watchman-wait -p '*.so' -- . ``` Both of the above will wait for a shared object file to be changed in any path under the current working directory. Since both the `-p` option and the list of paths accept one or more parameters, the second form shows how to disambiguate between the list of patterns and the list of paths using the `--` separator. Patterns are wildmatch style globs that support recursive matching via the `**` placeholder. You should always quote your pattern parameters so that they are not evaluated by your shell. ### Controlling lifetime There are two primary controls for how long `watchman-wait` will run: * `-t` or `--timeout` places a time limit on execution * `-m` or `--max-events` places a limit on the number of events to process `watchman-wait` will terminate when either the timeout is hit or the max events limit is hit. By default there is no time limit, but there is a default limit of a single event. You may specify `--max-events 0` to disable the event limit. ### Controlling output `watchman-wait` will output one line per event. The following options influence the output: * `--fields NAME,NAME` - specifies the list of fields to be printed for each event. The default is `--fields name` which will print just the `name` of the file that was changed. You may use any of the available fields listed in [available fields](/watchman/docs/cmd/query.html#available-fields). The fields will be printed in the order you list them. * `--relative DIR` - the `name` field will be adjusted to be relative to `DIR` before it is printed out. The default for `DIR` is the current working directory when `watchman-wait` is started. * `--separator STRING` - if you specified multiple fields, the separator string will be used when printing them. The default is `--separator " "` which will print the fields with spaces between them. ### Exit Status The following exit status codes can be used to determine what caused `watchman-wait` to exit: * `0` is returned after successfully waiting for event(s) * `1` in case of a runtime error of some kind * `2` the `-t`/`--timeout` option was used and that amount of time passed before an event was received * `3` if execution was interrupted (Ctrl-C) watchman-4.9.0/website/_includes/000077500000000000000000000000001314236077500167455ustar00rootroot00000000000000watchman-4.9.0/website/_includes/anchor_links.html000066400000000000000000000017451314236077500223140ustar00rootroot00000000000000 watchman-4.9.0/website/_includes/blog_pagination.html000066400000000000000000000016621314236077500227740ustar00rootroot00000000000000 {% if paginator.total_pages > 1 %}

{% endif %} watchman-4.9.0/website/_includes/content/000077500000000000000000000000001314236077500204175ustar00rootroot00000000000000watchman-4.9.0/website/_includes/content/gridblocks.html000066400000000000000000000003311314236077500234250ustar00rootroot00000000000000
{% for item in {{include.data_source}} %} {% include content/items/gridblock.html item=item gridtype=include.grid_type %} {% cycle '', '
' %} {% endfor %}
watchman-4.9.0/website/_includes/content/items/000077500000000000000000000000001314236077500215405ustar00rootroot00000000000000watchman-4.9.0/website/_includes/content/items/gridblock.html000066400000000000000000000004241314236077500243660ustar00rootroot00000000000000
{% if item.image %} {{ item.title }} {% endif %}

{{ item.title }}

{{ item.text | markdownify }}
watchman-4.9.0/website/_includes/doc.html000066400000000000000000000012421314236077500203770ustar00rootroot00000000000000

{% if include.truncate %}{{ page.title }}{% else %}{{ page.title }}{% endif %}

{% if include.truncate %} {% if page.content contains '' %} {{ page.content | split:'' | first }} {% else %} {{ page.content }} {% endif %} {% else %} {{ content }} {% endif %}
watchman-4.9.0/website/_includes/doc_paging.html000066400000000000000000000041521314236077500217270ustar00rootroot00000000000000{% assign doc_groups = site.docs | group_by: "section" %} {% for group in doc_groups %} {% assign gindex = forloop.index0 %} {% assign gitems = group.items | sort: "id" %} {% for doc_hash in gitems %} {% if doc_hash.id == page.id %} {% assign index = forloop.index0 %} {% assign groupindex = gindex %} {% break %} {% endif %} {% endfor %} {% if index %} {% break %} {% endif %} {% endfor %} {% if index %}
{% assign next = index | plus: 1 %}{% assign prev = index | minus: 1 %} {% assign nextgroup = groupindex | plus: 1 %}{% assign prevgroup = groupindex | minus: 1 %} {% assign groupitems = doc_groups[groupindex].items | sort: "id" %} {% if doc_groups[prevgroup].items %} {% assign prevgroupitems = doc_groups[prevgroup].items | sort: "id" %} {% endif %} {% if doc_groups[nextgroup].items %} {% assign nextgroupitems = doc_groups[nextgroup].items | sort: "id" %} {% endif %} {% assign prevdoc = groupitems[prev] %}{% assign nextdoc = groupitems[next] %} {% if prevdoc and prev >= 0 %} {% elsif prevgroupitems and prevgroup >= 0 %} {% assign prevdoc = prevgroupitems.last %} {% endif %} {% if nextdoc %} {% elsif nextgroupitems %} {% assign nextdoc = nextgroupitems.first %} {% endif %}
{% endif %} watchman-4.9.0/website/_includes/footer.html000066400000000000000000000026531314236077500211370ustar00rootroot00000000000000
{% include anchor_links.html %} watchman-4.9.0/website/_includes/head.html000066400000000000000000000012771314236077500205430ustar00rootroot00000000000000 {% seo %} {% comment %} For our RSS feed.xml https://help.github.com/articles/atom-rss-feeds-for-github-pages/ {% endcomment %} {% feed_meta %} watchman-4.9.0/website/_includes/header.html000066400000000000000000000014711314236077500210660ustar00rootroot00000000000000

{{ site.title }}

{{ site.tagline }}

{% if page.excerpt %}{{ page.excerpt | strip_html }}{% else %}{{ site.description }}{% endif %}

{% for promo in site.data.promo %} {% include plugins/{{promo.type}}.html button_href=promo.href button_text=promo.text %}
{% endfor %}
watchman-4.9.0/website/_includes/hero.html000066400000000000000000000004171314236077500205720ustar00rootroot00000000000000

An image management library

watchman-4.9.0/website/_includes/katex_import.html000066400000000000000000000003531314236077500223420ustar00rootroot00000000000000 watchman-4.9.0/website/_includes/katex_render.html000066400000000000000000000141361314236077500223130ustar00rootroot00000000000000 watchman-4.9.0/website/_includes/nav.html000066400000000000000000000063341314236077500204250ustar00rootroot00000000000000

{{ site.title }}

watchman-4.9.0/website/_includes/nav_blog.html000066400000000000000000000044651314236077500214330ustar00rootroot00000000000000 watchman-4.9.0/website/_includes/nav_docs.html000066400000000000000000000057551314236077500214430ustar00rootroot00000000000000
watchman-4.9.0/website/_includes/plugins/000077500000000000000000000000001314236077500204265ustar00rootroot00000000000000watchman-4.9.0/website/_includes/plugins/all_share.html000066400000000000000000000002461314236077500232500ustar00rootroot00000000000000
{% include plugins/like_button.html %}{% include plugins/twitter_share.html %}{% include plugins/google_share.html %}
watchman-4.9.0/website/_includes/plugins/ascii_cinema.html000066400000000000000000000003451314236077500237220ustar00rootroot00000000000000
watchman-4.9.0/website/_includes/plugins/button.html000066400000000000000000000001671314236077500226330ustar00rootroot00000000000000{{ include.button_text }}watchman-4.9.0/website/_includes/plugins/fb_pagelike.html000066400000000000000000000015161314236077500235470ustar00rootroot00000000000000 watchman-4.9.0/website/_includes/plugins/github_star.html000066400000000000000000000006741314236077500236360ustar00rootroot00000000000000 watchman-4.9.0/website/_includes/plugins/github_watch.html000066400000000000000000000006721314236077500237710ustar00rootroot00000000000000 watchman-4.9.0/website/_includes/plugins/google_share.html000066400000000000000000000002401314236077500237460ustar00rootroot00000000000000
watchman-4.9.0/website/_includes/plugins/group_join.html000066400000000000000000000002671314236077500234740ustar00rootroot00000000000000{{ include.button_text }}watchman-4.9.0/website/_includes/plugins/like_button.html000066400000000000000000000011011314236077500236240ustar00rootroot00000000000000
watchman-4.9.0/website/_includes/plugins/post_social_plugins.html000066400000000000000000000024721314236077500254010ustar00rootroot00000000000000 watchman-4.9.0/website/_includes/plugins/slideshow.html000066400000000000000000000047661314236077500233320ustar00rootroot00000000000000
watchman-4.9.0/website/_includes/plugins/twitter_follow.html000066400000000000000000000007531314236077500244050ustar00rootroot00000000000000 watchman-4.9.0/website/_includes/plugins/twitter_share.html000066400000000000000000000007111314236077500241770ustar00rootroot00000000000000 watchman-4.9.0/website/_includes/post.html000066400000000000000000000023741314236077500206260ustar00rootroot00000000000000
{% assign author = site.data.authors[page.author] %}
{% if author.fbid %}
{{ author.fullname }}
{% endif %} {% if author.full_name %} {% endif %}

{% if include.truncate %}{{ page.title }}{% else %}{{ page.title }}{% endif %}

{% if include.truncate %} {% if page.content contains '' %} {{ page.content | split:'' | first }} {% else %} {{ page.content }} {% endif %} {% else %} {{ content }} {% endif %}
{% include plugins/all_share.html %}
watchman-4.9.0/website/_includes/social_plugins.html000066400000000000000000000020071314236077500226450ustar00rootroot00000000000000
watchman-4.9.0/website/_includes/ui/000077500000000000000000000000001314236077500173625ustar00rootroot00000000000000watchman-4.9.0/website/_includes/ui/button.html000066400000000000000000000003531314236077500215640ustar00rootroot00000000000000{{ include.button_text }}watchman-4.9.0/website/_layouts/000077500000000000000000000000001314236077500166375ustar00rootroot00000000000000watchman-4.9.0/website/_layouts/blog.html000066400000000000000000000003261314236077500204510ustar00rootroot00000000000000--- layout: default sectionid: blog ---
{% include nav_blog.html %} {{ content }}
watchman-4.9.0/website/_layouts/default.html000066400000000000000000000003251314236077500211510ustar00rootroot00000000000000 {% include head.html %} {% include nav.html alwayson=true %} watchman-4.9.0/website/_layouts/doc_page.html000066400000000000000000000003071314236077500212660ustar00rootroot00000000000000--- layout: default ---
{% include nav_docs.html %} {{ content }}
watchman-4.9.0/website/_layouts/docs.html000066400000000000000000000000601314236077500204510ustar00rootroot00000000000000--- layout: doc_page --- {% include doc.html %}watchman-4.9.0/website/_layouts/home.html000066400000000000000000000005741314236077500204630ustar00rootroot00000000000000 {% include head.html %} {% include nav.html alwayson=true %} watchman-4.9.0/website/_layouts/page.html000066400000000000000000000003061314236077500204400ustar00rootroot00000000000000--- layout: default ---
{% include nav_blog.html %} {{ content }}
watchman-4.9.0/website/_layouts/plain.html000066400000000000000000000002471314236077500206330ustar00rootroot00000000000000--- layout: default ---
{{ content }}
watchman-4.9.0/website/_layouts/post.html000066400000000000000000000000571314236077500205140ustar00rootroot00000000000000--- layout: page --- {% include post.html %} watchman-4.9.0/website/_layouts/redirect.html000066400000000000000000000001561314236077500213300ustar00rootroot00000000000000 watchman-4.9.0/website/_layouts/support.html000066400000000000000000000002471314236077500212440ustar00rootroot00000000000000--- layout: default ---
{{ content }}
watchman-4.9.0/website/_sass/000077500000000000000000000000001314236077500161105ustar00rootroot00000000000000watchman-4.9.0/website/_sass/_base.scss000066400000000000000000000411001314236077500200520ustar00rootroot00000000000000body { background: $footer-bg; color: $text; font: 300 #{$base-font-size}/#{$base-line-height} $base-font-family; text-align: center; text-rendering: optimizeLegibility; } img { max-width: 100%; } a { border-bottom: 1px dotted $primary-bg; color: $text; text-decoration: none; -webkit-transition: background 0.3s, color 0.3s; transition: background 0.3s, color 0.3s; } #fb_oss a { border: 0; } h1, h2, h3, h4 { font-family: $header-font-family; } .navPusher { ol { list-style: decimal; } ul { list-style: disc; } ol, ul { padding-left: 24px; li { padding-bottom: 4px; padding-left: 6px; } } strong { font-weight: bold; } } .fixedHeaderContainer { background: $nav-bg; color: $header-text; height: $header-height; opacity: 0.0; padding: $header-ptop 0 $header-pbot; position: fixed; -webkit-transition: opacity 0.2s ease-in-out; transition: opacity 0.2s ease-in-out; width: 100%; z-index: 9999; &.visible { opacity: 1.0; } a { border: 0; color: $header-text; } header { height: $header-height; margin: 0 auto; max-width: $content-width; padding: 0 10px; position: relative; text-align: left; img { height: 30px; margin-right: 10px; } h2 { display: inline; font-family: $header-font-family; font-size: 16px; letter-spacing: -0.02em; line-height: 18px; position: relative; top: -9px; } } .navigationWrapper { display: inline-block; font-family: $header-font-family; &.navigationFull { display: none; } &.navigationSlider { position: absolute; right: 12px; .navSlideout { cursor: pointer; font-size: 24px; padding-top: 2px; -webkit-transition: -webkit-transform 0.3s; transition: transform 0.3s; &.navSlideoutActive { transform: rotate(90deg); -webkit-transform: rotate(90deg); } } .slidingNav { background: #222; box-sizing: border-box; height: 100vh; opacity: 0; overflow: hidden; padding: 0; position: absolute; right: -12px; top: $header-height + $header-pbot; -webkit-transition: opacity 0.5s, width 0.5s; transition: opacity 0.5s, width 0.5s; width: 0; &.slidingNavActive { opacity: 1; width: 75vw; } ul { list-style: none; padding-left: 0; li { padding: 0; a { border-bottom: 1px solid #111; display:block; padding: 4vw 12px; -webkit-transition: background-color 0.3s; transition: background-color 0.3s; &:focus, &:hover { background: $primary-bg; } } } } } } } } .navPusher { border-top: $header-height + $header-ptop + $header-pbot solid $primary-bg; position: relative; left: 0; z-index: 99; height: 100%; &::after { position: absolute; top: 0; right: 0; width: 0; height: 0; background: rgba(0,0,0,0.4); content: ''; opacity: 0; -webkit-transition: opacity 0.5s, width 0.1s 0.5s, height 0.1s 0.5s; transition: opacity 0.5s, width 0.1s 0.5s, height 0.1s 0.5s; } .sliderActive &::after { width: 100%; height: 100%; opacity: 1; -webkit-transition: opacity 0.5s; transition: opacity 0.5s; } } .headerContainer { background: $primary-bg; color: $header-text; a { color: $header-text; } .headerWrapper { padding-top: 2em; h1#project_title { font-family: $header-font-family; font-size: 300%; letter-spacing: -0.08em; line-height: 1em; margin-bottom: 80px; } h2#project_tagline { font-family: $header-font-family; font-size: 200%; letter-spacing: -0.04em; line-height: 1em; } } } .wrapper { margin: 0px auto; max-width: $content-width; padding: 0 20px; } .footerContainer { background: $footer-bg; .footerWrapper { padding-top: 4vh; padding-bottom: 4vh; } } img.projectLogo { height: 100px; margin-bottom: 0px; } section#intro { margin: 70px 0; } .fbossFontLight { font-family: $base-font-family; font-weight: 300; font-style: normal; } .fb-like { display: block; margin-bottom: 50px; width: 100%; } a.blockButton { background: $primary-bg; border-radius: 4px; border: 2px solid transparent; clear: both; color: $header-text; display: inline-block; font-family: $header-font-family; font-size: 120%; padding: 10px 20px; position: relative; -webkit-transition: background-color 0.2s, color 0.2s, border 0.2s; transition: background-color 0.2s, color 0.2s, border 0.2s; .mainContainer .mainWrapper &:hover, .mainContainer .mainWrapper &:focus { background: $secondary-bg; border: 2px solid $primary-bg; color: $primary-bg; } .headerContainer &{ background: $light-color; color: $light-text-color; &:hover, &:focus { background: $primary-bg; border: 2px solid $light-color; color: $light-text-color; } } } .promoSection { margin: -25px 0 0; text-align: center; .pluginBlock { display: inline-block; margin: 25px 0; &.fb_iframe_widget_fluid { display: inline-block; } &:last-of-type:not(.slideshowBlock) { margin-bottom: 50px; } &.allShareBlock { .pluginBlock { margin: 0 12px; width: auto; &.fb-like { top: -5px; } } } } } .center { display: block; text-align: center; } .mainContainer { background: $secondary-bg; overflow: auto; padding: 0 4vw; .mainWrapper { padding-bottom: 4vh; padding-top: 4vh; text-align: left; &.homeWrapper { font-size: 120%; } .blockButton { margin: 4vh 0; &.marginsmall { margin: 1vh 0; } } .allShareBlock { margin: -12px; padding: 1vh 0; .pluginBlock { margin: 12px; padding: 0; } } a { &:hover, &:focus { background: $primary-bg; color: $header-text; } } em { font-style: italic; } strong, b { font-weight: bold; } h1 { font-size: 300%; line-height: 1em; padding: 1.4em 0 1em; text-align: center; } h2 { font-size: 250%; line-height: 1em; padding: 1.4em 0 1em; text-align: left; } h3 { font-size: 150%; line-height: 1em; padding: 1em 0 0.8em; } h2 a.header-link, h3 a.header-link { font-size: 80%; margin-left: 0.5em; color: $nav-text; border: none; } p { padding: 0.8em 0; } nav.toc { position: relative; section { background: $primary-bg; color: $header-text; margin-bottom: 2vh; padding: 12px 24px; .navGroup { h3 { display: none; } &:not(.navGroupActive) { display: none; } } } .toggleNav { position: relative; } .navToggle { background: $primary-bg; color: $header-text; height: 24px; position: absolute; right: 24px; text-align: center; top: 20px; width: 24px; i { cursor: pointer; -webkit-transition: -webkit-transform 0.5s; transition: transform 0.5s; } &.navToggleActive i { transform: rotate(180deg); -webkit-transform: rotate(180deg); } } .toggleNavActive { section { .navGroup { display: block; h3 { display: block; } ul li { display: block; } } ul li { display: block; padding-bottom: 4px; } } } h3 { font-size: 125%; padding-right: 24px; padding-top: 0.4em; } ul { padding-left: 0; padding-right: 24px; li { list-style-type: none; padding-bottom: 0; padding-left: 0; &:not(.navListItemActive) { display: none; } a { border-bottom: none; border-left: 4px solid transparent; color: $header-text; display: inline-block; margin-bottom: 0.6vh; padding: 1vh 0 0.4vh 8px; -webkit-transition: border-color 0.3s; transition: border-color 0.3s; &:hover, &:focus { border-left: 4px solid $nav-text; } &.navItemActive { border-left: 4px solid $header-text; } } } } } .post { background: #fff; padding: 6vw 6vw 8vh; position: relative; a { color: $link-color; &:hover, &:focus { color: #fff; } } h2 { border-bottom: 4px solid $primary-bg; font-size: 130%; } h3 { border-bottom: 1px solid $primary-bg; font-size: 110%; } .authorPhoto { border-radius: 50%; height: 50px; left: 50%; margin-left: -25px; overflow: hidden; position: absolute; top: -25px; width: 50px; } .post-header { padding: 0 0 1em; text-align: center; h1 { font-size: 150%; line-height: 1em; padding: 0.4em 0 0; a { border: none; } } .post-authorName { color: $primary-bg; font-family: $header-font-family; margin-top: -2vw; text-align: center; } .post-meta { color: $primary-bg; font-family: $header-font-family; text-align: center; } } .postSocialPlugins { padding-top: 1em; } .docPagination { background: $primary-bg; bottom: 0px; left: 0px; position: absolute; right: 0px; .pager { display: inline-block; width: 50%; } .pagingNext { float: right; text-align: right; } a { border: none; color: $header-text; display: block; padding: 4px 12px; &:hover { background-color: $secondary-bg; color: $text; } .pagerLabel { display: inline; } .pagerTitle { display: none; } } } } .posts { .post { margin-bottom: 6vh; } } } } .gridBlock { margin: 20px 0; padding: 2vh 0; .twoByGridBlock { padding: 0; img { margin-top: 6vh; max-width: 100%; } &.featureBlock h3 { font-size: 150%; margin: 20px 0; padding-bottom: 0; } } .gridClear { clear: both; } .leftBlock { padding: 40px 0; text-align: left; } } #integrations_title { font-size: 250%; margin: 80px 0; } .ytVideo { height: 0; overflow: hidden; padding-bottom: 53.4%; /* 16:9 */ padding-top: 25px; position: relative; } .ytVideo iframe, .ytVideo object, .ytVideo embed { height: 100%; left: 0; position: absolute; top: 0; width: 100%; } @media only screen and (min-width: 480px) { h1#project_title { font-size: 500%; } h2#project_tagline { font-size: 250%; } img.projectLogo { margin-bottom: 10px; height: 200px; } .fixedHeaderContainer { .navigationWrapper { &.navigationSlider { .slidingNav { right: -22px; &.slidingNavActive { width: 50vw; } ul { li { a { padding: 1vw 12px; } } } } } } } .headerWrapper { padding-top: 8em; } .gridBlock { margin: -20px; overflow: auto; padding: 1vh 0; .twoByGridBlock { box-sizing: border-box; float: left; padding: 20px; text-align: center; width: 50%; } .leftBlock { padding: 40px 20px; } } .mainContainer { .mainWrapper { nav.toc { h3 { padding-top: 0.4em; } ul li a { margin-bottom: 0; padding-bottom: 0.2vh; padding-top: 0; } .navToggle { top: 12px; } } .post { padding: 4vw 4vw 4em; h2 { font-size: 180%; } h3 { font-size: 120%; } .post-header { padding: 1em 0; } .docPagination { a { .pagerLabel { display: none; } .pagerTitle { display: inline; } } } } } } } @media only screen and (min-width: 900px) { .fixedHeaderContainer { .navigationWrapper { nav { padding: 0 1em; position: relative; top: -9px; ul { margin: 0 -0.4em; li { padding: 0 0.4em; display: inline-block; a { border: 0; color: $nav-text; &:hover { color: $header-text; } } &.navItemActive { a { color: $header-text; } } } } } &.navigationFull { display: inline-block; } &.navigationSlider { display: none; } } } .navPusher::after { display: none; } } @media only screen and (min-width: 1024px) { .mainContainer { .mainWrapper { nav.toc { box-sizing: border-box; display: inline-block; border-right: 12px solid $secondary-bg; width: 285px; vertical-align: top; .navToggle { display: none; } .toggleNav { section { .navGroup { display: block; h3 { display: block; } ul li { display: block; } } ul li { display: block; padding-bottom: 4px; } } } ul li a { font-size: 14px; padding-bottom: 0.1vh; } } .post { box-sizing: border-box; display: inline-block; padding: 2vw 24px 4em; width: 590px; .post-header { h1 { font-size: 250%; } } } .posts { display: inline-block; width: 590px; .post { margin-bottom: 4vh; width: 100%; } } } } } @media only screen and (min-width: 1040px) { .mainContainer { .mainWrapper { nav.toc { width: 300px; } } } } @media only screen and (min-width: 1200px) { .fixedHeaderContainer { header { max-width: 1100px; } } .wrapper { max-width: 1100px; } .homeWrapper { max-width: 900px; } .headerWrapper { max-width: 900px; } .mainContainer .mainWrapper { .post, .posts { width: 760px; } } } @media only screen and (min-width: 1500px) { .fixedHeaderContainer { header { max-width: 1400px; } } .wrapper { max-width: 1400px; } .homeWrapper { max-width: 900px; } .headerWrapper { max-width: 900px; } .mainContainer .mainWrapper { .post, .posts { width: 1035px; } } } watchman-4.9.0/website/_sass/_reset.scss000066400000000000000000000017361314236077500202750ustar00rootroot00000000000000html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video { margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } /* HTML5 display-role reset for older browsers */ article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { display: block; } body { line-height: 1; } ol, ul { list-style: none; } blockquote, q { quotes: none; } blockquote:before, blockquote:after, q:before, q:after { content: ''; content: none; } table { border-collapse: collapse; border-spacing: 0; }watchman-4.9.0/website/_sass/_slideshow.scss000066400000000000000000000014721314236077500211510ustar00rootroot00000000000000.slideshow { position: relative; .slide { display: none; img { display: block; margin: 0 auto; } &.slideActive { display: block; } a { border: none; display: block; } } .pagination { display: block; margin: -10px; padding: 1em 0; text-align: center; width: 100%; .pager { background: transparent; border: 2px solid rgba(255, 255, 255, 0.5); border-radius: 50%; cursor: pointer; display: inline-block; height: 12px; margin: 10px; transition: background-color 0.3s, border-color 0.3s; width: 12px; &.pagerActive { background: rgba(255, 255, 255, 0.5); border-width: 4px; height: 8px; width: 8px; } } } }watchman-4.9.0/website/_sass/_syntax-highlighting.scss000066400000000000000000000123301314236077500231340ustar00rootroot00000000000000 .rougeHighlight { background-color: $code-bg; color: $primary-bg } .rougeHighlight .c { color: #586e75 } /* Comment */ .rougeHighlight .err { color: #93a1a1 } /* Error */ .rougeHighlight .g { color: #93a1a1 } /* Generic */ .rougeHighlight .k { color: #859900 } /* Keyword */ .rougeHighlight .l { color: #93a1a1 } /* Literal */ .rougeHighlight .n { color: #93a1a1 } /* Name */ .rougeHighlight .o { color: #859900 } /* Operator */ .rougeHighlight .x { color: #cb4b16 } /* Other */ .rougeHighlight .p { color: #93a1a1 } /* Punctuation */ .rougeHighlight .cm { color: #586e75 } /* Comment.Multiline */ .rougeHighlight .cp { color: #859900 } /* Comment.Preproc */ .rougeHighlight .c1 { color: #72c02c; } /* Comment.Single */ .rougeHighlight .cs { color: #859900 } /* Comment.Special */ .rougeHighlight .gd { color: #2aa198 } /* Generic.Deleted */ .rougeHighlight .ge { color: #93a1a1; font-style: italic } /* Generic.Emph */ .rougeHighlight .gr { color: #dc322f } /* Generic.Error */ .rougeHighlight .gh { color: #cb4b16 } /* Generic.Heading */ .rougeHighlight .gi { color: #859900 } /* Generic.Inserted */ .rougeHighlight .go { color: #93a1a1 } /* Generic.Output */ .rougeHighlight .gp { color: #93a1a1 } /* Generic.Prompt */ .rougeHighlight .gs { color: #93a1a1; font-weight: bold } /* Generic.Strong */ .rougeHighlight .gu { color: #cb4b16 } /* Generic.Subheading */ .rougeHighlight .gt { color: #93a1a1 } /* Generic.Traceback */ .rougeHighlight .kc { color: #cb4b16 } /* Keyword.Constant */ .rougeHighlight .kd { color: #268bd2 } /* Keyword.Declaration */ .rougeHighlight .kn { color: #859900 } /* Keyword.Namespace */ .rougeHighlight .kp { color: #859900 } /* Keyword.Pseudo */ .rougeHighlight .kr { color: #268bd2 } /* Keyword.Reserved */ .rougeHighlight .kt { color: #dc322f } /* Keyword.Type */ .rougeHighlight .ld { color: #93a1a1 } /* Literal.Date */ .rougeHighlight .m { color: #2aa198 } /* Literal.Number */ .rougeHighlight .s { color: #2aa198 } /* Literal.String */ .rougeHighlight .na { color: #93a1a1 } /* Name.Attribute */ .rougeHighlight .nb { color: #B58900 } /* Name.Builtin */ .rougeHighlight .nc { color: #268bd2 } /* Name.Class */ .rougeHighlight .no { color: #cb4b16 } /* Name.Constant */ .rougeHighlight .nd { color: #268bd2 } /* Name.Decorator */ .rougeHighlight .ni { color: #cb4b16 } /* Name.Entity */ .rougeHighlight .ne { color: #cb4b16 } /* Name.Exception */ .rougeHighlight .nf { color: #268bd2 } /* Name.Function */ .rougeHighlight .nl { color: #93a1a1 } /* Name.Label */ .rougeHighlight .nn { color: #93a1a1 } /* Name.Namespace */ .rougeHighlight .nx { color: #93a1a1 } /* Name.Other */ .rougeHighlight .py { color: #93a1a1 } /* Name.Property */ .rougeHighlight .nt { color: #268bd2 } /* Name.Tag */ .rougeHighlight .nv { color: #268bd2 } /* Name.Variable */ .rougeHighlight .ow { color: #859900 } /* Operator.Word */ .rougeHighlight .w { color: #93a1a1 } /* Text.Whitespace */ .rougeHighlight .mf { color: #2aa198 } /* Literal.Number.Float */ .rougeHighlight .mh { color: #2aa198 } /* Literal.Number.Hex */ .rougeHighlight .mi { color: #2aa198 } /* Literal.Number.Integer */ .rougeHighlight .mo { color: #2aa198 } /* Literal.Number.Oct */ .rougeHighlight .sb { color: #586e75 } /* Literal.String.Backtick */ .rougeHighlight .sc { color: #2aa198 } /* Literal.String.Char */ .rougeHighlight .sd { color: #93a1a1 } /* Literal.String.Doc */ .rougeHighlight .s2 { color: #2aa198 } /* Literal.String.Double */ .rougeHighlight .se { color: #cb4b16 } /* Literal.String.Escape */ .rougeHighlight .sh { color: #93a1a1 } /* Literal.String.Heredoc */ .rougeHighlight .si { color: #2aa198 } /* Literal.String.Interpol */ .rougeHighlight .sx { color: #2aa198 } /* Literal.String.Other */ .rougeHighlight .sr { color: #dc322f } /* Literal.String.Regex */ .rougeHighlight .s1 { color: #2aa198 } /* Literal.String.Single */ .rougeHighlight .ss { color: #2aa198 } /* Literal.String.Symbol */ .rougeHighlight .bp { color: #268bd2 } /* Name.Builtin.Pseudo */ .rougeHighlight .vc { color: #268bd2 } /* Name.Variable.Class */ .rougeHighlight .vg { color: #268bd2 } /* Name.Variable.Global */ .rougeHighlight .vi { color: #268bd2 } /* Name.Variable.Instance */ .rougeHighlight .il { color: #2aa198 } /* Literal.Number.Integer.Long */ .highlighter-rouge { color: darken(#72c02c, 8%); font: 12px/1.5em Hack, monospace; max-width: 100%; .rougeHighlight { border-radius: 3px; margin: 20px 0; padding: 0px; -webkit-overflow-scrolling: touch; table { background: none; border: none; tbody { tr { background: none; display: flex; flex-flow: row nowrap; td { display: block; flex: 1 1; &.gutter { display: none; /* Remove if you want a gutter with line nums */ border-right: 1px solid lighten(black, 10%); color: lighten(black, 15%); margin-right: 10px; max-width: 40px; padding-right: 10px; pre { max-width: 20px; } } } } } } } } p > .highlighter-rouge, li > .highlighter-rouge, a > .highlighter-rouge { font-size: 16px; font-weight: 400; line-height: inherit; } a:hover { .highlighter-rouge { color: white; } } watchman-4.9.0/website/blog/000077500000000000000000000000001314236077500157235ustar00rootroot00000000000000watchman-4.9.0/website/blog/all.html000066400000000000000000000006721314236077500173660ustar00rootroot00000000000000--- id: all layout: blog category: blog ---

All Posts

{% for post in site.posts %} {% assign author = site.data.authors[post.author] %}

{{ post.title }} on {{ post.date | date: "%B %e, %Y" }} by {{ author.display_name }}

{% endfor %}
watchman-4.9.0/website/blog/index.html000066400000000000000000000002571314236077500177240ustar00rootroot00000000000000--- id: blog title: Blog layout: blog category: blog ---
{% for page in site.posts %} {% include post.html truncate=true %} {% endfor %}
watchman-4.9.0/website/css/000077500000000000000000000000001314236077500155705ustar00rootroot00000000000000watchman-4.9.0/website/css/main.scss000066400000000000000000000026351314236077500174170ustar00rootroot00000000000000--- # Only the main Sass file needs front matter (the dashes are enough) --- @charset "utf-8"; // Our variables $base-font-family: "Segoe UI", Helvetica, sans-serif; $header-font-family: "Gotham Rounded A", "Gotham Rounded B", 'Helvetica Neue', Arial, sans-serif; $base-font-size: 16px; $small-font-size: $base-font-size * 0.875; $base-line-height: 1.4em; $spacing-unit: 12px; $text: {{ site.color.bodytext }}; $header-text: {{ site.color.headertext }}; $primary-bg: {{ site.color.primary }}; $secondary-bg: {{ site.color.secondary }}; $light-color: {{ site.color.light }}; $light-text-color: {{ site.color.lighttext }}; $nav-bg: {{ site.color.nav }}; $nav-text: {{ site.color.navtext }}; $footer-bg: #1F242A; $link-color: {{ site.color.link }}; $code-bg: #f0f0f0; $header-height: 34px; $header-ptop: 10px; $header-pbot: 8px; // Width of the content area $content-width: 900px; // Using media queries with like this: // @include media-query($on-palm) { // .wrapper { // padding-right: $spacing-unit / 2; // padding-left: $spacing-unit / 2; // } // } @mixin media-query($device) { @media screen and (max-width: $device) { @content; } } // Import partials from `sass_dir` (defaults to `_sass`) @import "reset", "base", "slideshow", "syntax-highlighting" ; watchman-4.9.0/website/feed.xml000066400000000000000000000024131314236077500164250ustar00rootroot00000000000000--- layout: null --- {{ site.title | xml_escape }} {{ site.description | xml_escape }} {{ site.url }}{{ site.baseurl }}/ {{ site.time | date_to_rfc822 }} {{ site.time | date_to_rfc822 }} Jekyll v{{ jekyll.version }} {% for post in site.posts limit:10 %} {{ post.title | xml_escape }} {{ post.content | xml_escape }} {{ post.date | date_to_rfc822 }} {{ post.url | prepend: site.baseurl | prepend: site.url }} {{ post.url | prepend: site.baseurl | prepend: site.url }} {% for tag in post.tags %} {{ tag | xml_escape }} {% endfor %} {% for cat in post.categories %} {{ cat | xml_escape }} {% endfor %} {% endfor %} watchman-4.9.0/website/index.markdown000066400000000000000000000025541314236077500176610ustar00rootroot00000000000000--- title: Watchman | A file watching service layout: home permalink: index.html --- Watchman exists to watch files and record when they change. It can also trigger actions (such as rebuilding assets) when matching files change. ### Concepts * Watchman can recursively watch one or more directory trees (we call them *roots*). * Watchman does not follow symlinks. It knows they exist, but they show up the same as any other file in its reporting. * Watchman waits for a *root* to settle down before it will start to trigger notifications or command execution. * Watchman is conservative, preferring to err on the side of caution; it considers files to be freshly changed when you start to watch them or when it is unsure. * You can query a root for file changes since you last checked, or the current state of the tree * You can subscribe to file changes that occur in a root ### Quickstart These two lines establish a watch on a source directory and then set up a trigger named `buildme` that will run a tool named `minify-css` whenever a CSS file is changed. The tool will be passed a list of the changed filenames. ```bash $ watchman watch ~/src # the single quotes around '*.css' are important! $ watchman -- trigger ~/src buildme '*.css' -- minify-css ``` The output for buildme will land in the Watchman log file unless you send it somewhere else. watchman-4.9.0/website/publish.sh000077500000000000000000000007221314236077500170060ustar00rootroot00000000000000#!/bin/sh # stop running if any of these steps fail set -e cd ../.. if test ! -d watchman-gh-pages ; then git clone -b gh-pages git@github.com:facebook/watchman.git watchman-gh-pages fi cd watchman-gh-pages git checkout -- . git clean -dfx git fetch git rebase origin/gh-pages cd ../watchman/website jekyll build -d ../../watchman-gh-pages cd ../../watchman-gh-pages git add --all git commit -m "update website" git push origin gh-pages cd ../watchman/website watchman-4.9.0/website/src/000077500000000000000000000000001314236077500155675ustar00rootroot00000000000000watchman-4.9.0/website/src/watchman/000077500000000000000000000000001314236077500173715ustar00rootroot00000000000000watchman-4.9.0/website/src/watchman/css/000077500000000000000000000000001314236077500201615ustar00rootroot00000000000000watchman-4.9.0/website/src/watchman/css/watchman.css000066400000000000000000000325531314236077500225050ustar00rootroot00000000000000html { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-family: proxima-nova, "Helvetica Neue", Helvetica, Arial, sans-serif; font-weight: 300; color: #484848; line-height: 1.28; } body { background-color: #fefaf6; } p { margin: 0 0 10px; } .subHeader { font-size: 21px; font-weight: 200; line-height: 30px; margin-bottom: 10px; } em { font-style: italic; } h1, h2, h3, h4, h5, h6 { margin: 10px 0; font-family: inherit; font-weight: bold; line-height: 20px; color: inherit; text-rendering: optimizelegibility; } h1 small, h2 small, h3 small, h4 small, h5 small, h6 small { font-weight: normal; color: #7b7b7b; } h1, h2, h3 { line-height: 40px; } h1 { font-size: 39px; } h2 { font-size: 31px; } h3 { font-size: 23px; } h4 { font-size: 17px; } h5 { font-size: 14px; } h6 { font-size: 11px; } h1 small { font-size: 24px; } h2 small { font-size: 18px; } h3 small { font-size: 16px; } h4 small { font-size: 14px; } ul, ol { margin: 0 0 10px 25px; padding: 0; } ul ul, ul ol, ol ol, ol ul { margin-bottom: 0; } li { line-height: 20px; } a { color: #B7244E; text-decoration: none; } a:hover, a:focus { color: #B7244E; text-decoration: underline; } a:focus { outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } .center { text-align: center; } html * { color-profile: sRGB; rendering-intent: auto; } .prism { white-space: pre-wrap; font-family: 'source-code-pro', Menlo, 'Courier New', Consolas, monospace; font-size: 13px; line-height: 20px; border-left: 4px solid #B7244E; padding: 5px 10px; margin-left: 20px; background-color: rgba(183, 36, 78, 0.07); } .prism + .prism { margin-top: 10px; } .token.keyword { color: #1990B8; } .token.string, .token.regex { color: #2F9C0A; } .token.boolean, .token.number { color: #C92C2C; } .token.comment { color: #7D8B99; } .side-by-side { overflow: hidden; } .side-by-side > div { width: 460; margin-left: 0; float: left; } * { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; border: none; margin: 0; padding: 0; } html { background: #f9f9f9; } .left { float: left; } .right { float: right; } .container { padding-top: 50px; min-width: 960px; } .wrap { width: 960px; margin-left: auto; margin-right: auto; padding-left: 20px; padding-right: 20px; } .skinnyWrap { width: 690px; margin-left: auto; margin-right: auto; padding-left: 20px; padding-right: 20px; } hr { height: 0; border-top: 1px solid #ccc; border-bottom: 1px solid #eee; } ul, li { margin-left: 20px; } h1 .anchor, h2 .anchor, h3 .anchor, h4 .anchor, h5 .anchor, h6 .anchor { margin-top: -50px; position: absolute; } h1:hover .hash-link, h2:hover .hash-link, h3:hover .hash-link, h4:hover .hash-link, h5:hover .hash-link, h6:hover .hash-link { visibility: visible; } .hash-link { color: #aaa; visibility: hidden; } .nav-main { *zoom: 1; background: #3B3738; color: #fafafa; position: fixed; top: 0; height: 50px; box-shadow: 0 0 5px rgba(0, 0, 0, 0.5); width: 100%; z-index: 100; } .nav-main:before, .nav-main:after { content: " "; display: table; } .nav-main:after { clear: both; } .nav-main a { color: #e9e9e9; text-decoration: none; } .nav-main .nav-site { float: right; margin: 0; } .nav-main .nav-site li { margin: 0; } .nav-main .nav-site a { padding: 0 8px; text-transform: uppercase; letter-spacing: 1px; line-height: 50px; display: inline-block; height: 50px; color: #aaa; } .nav-main .nav-site a:hover { color: #fafafa; } .nav-main .nav-site a.active { color: #fafafa; border-bottom: 3px solid #B7244E; background: #333; } .nav-main .nav-home { font-size: 24px; line-height: 50px; } .nav-home img { vertical-align: -7px; margin-right: 7px; width: 25px; height: 27px; } .nav-main ul { display: inline; } .nav-main li { display: inline; } .hero { background: #7D1935; padding: 50px 0; color: #FDF3E7; font-weight: 300; } .hero .text { font-size: 64px; text-align: center; } .hero .minitext { font-size: 16px; text-align: center; text-transform: uppercase; } .hero strong { font-weight: 400; } .buttons-unit { margin-top: 60px; text-align: center; } .buttons-unit a { color: #FA6900; } .buttons-unit .button { font-size: 24px; background: #C63D0F; color: #fafafa; } .buttons-unit .button:active { background: #c5695c; } .buttons-unit.downloads { margin: 30px 0; } .nav-docs { color: #2d2d2d; font-size: 14px; float: left; width: 210px; } .nav-docs ul { list-style: none; margin: 0; } .nav-docs ul ul { margin-left: 20px; } .nav-docs li { margin: 0; } .nav-docs h3 { text-transform: uppercase; font-size: 14px; } .nav-docs a { color: #666; display: block; } .nav-docs a:hover { text-decoration: none; color: #B7244E; } .nav-docs a.active { color: #B7244E; } .nav-docs .nav-docs-section { border-bottom: 1px solid #ccc; border-top: 1px solid #eee; padding: 12px 0; } .nav-docs .nav-docs-section:first-child { padding-top: 0; border-top: 0; } .nav-docs .nav-docs-section:last-child { padding-bottom: 0; border-bottom: 0; } .nav-blog li { margin-bottom: 5px; } .home-section { margin: 50px 0; } .home-divider { border-top-color: #bbb; margin: 0 auto; width: 400px; } .marketing-row { *zoom: 1; margin: 50px 0; } .marketing-row:before, .marketing-row:after { content: " "; display: table; } .marketing-row:after { clear: both; } .marketing-col { float: left; margin-left: 40px; width: 280px; } .marketing-col h3 { color: #2d2d2d; font-size: 24px; font-weight: normal; text-transform: uppercase; } .marketing-col p { font-size: 16px; } .marketing-col:first-child { margin-left: 0; } #examples h3, .home-presentation h3 { color: #2d2d2d; font-size: 24px; font-weight: normal; margin-bottom: 5px; } #examples p { margin: 0 0 25px 0; max-width: 600px; } #examples .example { margin-top: 60px; } #examples #todoExample { font-size: 14px; } #examples #todoExample ul { list-style-type: square; margin: 0 0 10px 0; } #examples #todoExample input { border: 1px solid #ccc; font: 14px proxima-nova, "Helvetica Neue", Helvetica, Arial, sans-serif; padding: 3px; width: 150px; } #examples #todoExample button { font: 14px proxima-nova, "Helvetica Neue", Helvetica, Arial, sans-serif; margin-left: 5px; padding: 4px 10px; } #examples #markdownExample textarea { border: 1px solid #ccc; font: 14px proxima-nova, "Helvetica Neue", Helvetica, Arial, sans-serif; margin-bottom: 10px; padding: 5px; } .home-bottom-section { margin-bottom: 100px; } .docs-nextprev { *zoom: 1; } .docs-nextprev:before, .docs-nextprev:after { content: " "; display: table; } .docs-nextprev:after { clear: both; } .docs-prev { float: left; } .docs-next { float: right; } footer { font-size: 13px; font-weight: 600; padding-top: 36px; padding-bottom: 18px; overflow: auto; } section.black content { padding-bottom: 18px; } .blogContent { *zoom: 1; padding-top: 20px; } .blogContent:before, .blogContent:after { content: " "; display: table; } .blogContent:after { clear: both; } .blogContent blockquote { padding: 5px 15px; margin: 20px 0; background-color: #f8f5ec; border-left: 5px solid #f7ebc6; } .documentationContent { *zoom: 1; padding-top: 20px; } .documentationContent:before, .documentationContent:after { content: " "; display: table; } .documentationContent:after { clear: both; } .documentationContent .subHeader { font-size: 24px; } .documentationContent h2 { margin-top: 30px; } .documentationContent blockquote { padding: 15px 30px 15px 15px; margin: 20px 0; background-color: rgba(204, 122, 111, 0.1); border-left: 5px solid rgba(191, 87, 73, 0.2); } .documentationContent blockquote h4 { margin-top: 0; } .documentationContent blockquote p { margin-bottom: 0; } .documentationContent blockquote p:first-child { font-weight: bold; font-size: 17.5px; line-height: 20px; margin-top: 0; text-rendering: optimizelegibility; } .documentationContent table { border-spacing: 20px 0; border-collapse: separate; } .docs-prevnext { padding-top: 40px; padding-bottom: 40px; } .button { background: -webkit-linear-gradient( #9a9a9a, #646464); background: linear-gradient( #9a9a9a, #646464); border-radius: 4px; padding: 8px 16px; font-size: 18px; font-weight: 400; margin: 0 12px; display: inline-block; color: #fafafa; text-decoration: none; text-shadow: 0 1px 3px rgba(0, 0, 0, 0.3); box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); text-decoration: none; } .button:hover { text-decoration: none; } .button:active { box-shadow: none; } .hero .button { box-shadow: 1px 3px 3px rgba(0, 0, 0, 0.3); } .button.blue { background: -webkit-linear-gradient( #77a3d2, #4783c2); background: linear-gradient( #77a3d2, #4783c2); } .row { padding-bottom: 4px; } .row .span4 { width: 33.33%; display: table-cell; } .row .span8 { width: 66.66%; display: table-cell; } .row .span6 { width: 50%; display: table-cell; } p { margin: 10px 0; } .highlight { padding: 10px; margin-bottom: 20px; } figure { text-align: center; } .inner-content { float: right; width: 650px; } .nosidebar .inner-content { float: none; margin: 0 auto; } .post-list-item+.post-list-item { margin-top: 60px; } small code, li code, p code { color: #555; background-color: rgba(0, 0, 0, 0.04); padding: 1px 3px; } .playground { *zoom: 1; } .playground:before, .playground:after { content: " "; display: table; } .playground:after { clear: both; } .playground-tab { border-bottom: none !important; border-radius: 3px 3px 0 0; padding: 6px 8px; font-size: 12px; font-weight: bold; color: #c2c0bc; background-color: #f1ede4; display: inline-block; cursor: pointer; } .playgroundCode, .playground-tab, .playgroundPreview { border: 1px solid rgba(16, 16, 16, 0.1); } .playground-tab-active { color: #222; } .playgroundCode { border-radius: 0 3px 3px 3px; float: left; overflow: hidden; width: 600px; } .playgroundPreview { background-color: white; border-radius: 3px; float: right; padding: 15px 20px; width: 280px; } .playgroundError { color: #c5695c; font-size: 15px; } .MarkdownEditor textarea { width: 100%; height: 100px; } .hll { background-color: #f7ebc6; border-left: 5px solid #f7d87c; display: block; margin-left: -14px; margin-right: -14px; padding-left: 9px; } .highlight .javascript .err { background-color: transparent; color: inherit; } .highlight { position: relative; margin-bottom: 14px; padding: 30px 14px 14px; border: none; border-radius: 0; overflow: auto; } .highlight pre { padding: 0; margin-top: 0; margin-bottom: 0; background-color: transparent; border: 0; } .highlight pre code { background: none; font-size: inherit; padding: 0; } .highlight pre .lineno { display: inline-block; width: 22px; padding-right: 5px; margin-right: 10px; color: #bebec5; text-align: right; } .highlight:after { position: absolute; top: 0; right: 0; left: 0; padding: 3px 7px; font-size: 12px; font-weight: bold; color: #c2c0bc; background-color: #f1ede4; content: "Code"; } .downloadCenter { text-align: center; margin-top: 20px; margin-bottom: 25px; } .downloadSection:hover { text-decoration: none !important; } @media screen and (max-width: 960px) { .nav-main { position: static; } .container { padding-top: 0; } } .post { margin-bottom: 30px; } .pagination { margin-bottom: 30px; width: 100%; overflow: hidden; } .pagination .next { float: right; } div[data-twttr-id] iframe { margin: 10px auto !important; } .three-column { *zoom: 1; } .three-column:before, .three-column:after { content: " "; display: table; } .three-column:after { clear: both; } .three-column>ul { float: left; margin-left: 30px; width: 190px; } .three-column > ul:first-child { margin-left: 20px; } .home-why { margin-top: 25px; } .home-why h3 { text-align: center; } .home-why .blurb { margin-bottom: 20px; text-align: center; } .home-why .list { margin: 0 auto; max-width: 460px; } .home-getting-started { width: 500px; margin: 20px auto 40px auto; } .home-getting-started h3 { text-align: center; } #content { display: none; } @media only screen and (max-device-width : 1024px) { #content { display: inline; } .container { min-width: 0; overflow: scroll; } .wrap { width: auto; } .home-getting-started { width: auto; } .inner-content { width: auto; float: none; } .marketing-col { margin-left: 0; float: none; margin-bottom: 30px; text-align: center; } .home-section, .marketing-row { margin: 0; } .nav-main .nav-site a { padding: 0 4px; } .nav-main .wrap { padding: 0 2px 0 4px; } .home-divider { display: none; } .hero { padding: 10px 0 30px 0; } .prism { padding: 4px 8px; margin-left: -12px; font-size: 11px; } .nav-docs .nav-docs-section { border: none; padding: 0; } .nav-docs h3 { margin: 0; } .nav-docs { float: none; width: auto; margin-top: -20px; margin-bottom: 20px; } h1 { font-size: 30px; line-height: 30px; } ol { margin: 0; } } watchman-4.9.0/website/src/watchman/img/000077500000000000000000000000001314236077500201455ustar00rootroot00000000000000watchman-4.9.0/website/src/watchman/img/favicon.png000066400000000000000000000117371314236077500223110ustar00rootroot00000000000000‰PNG  IHDR@@% æ‰ AiCCPICC ProfileH –wTSهϽ7½Ð" %ôz Ò;HQ‰I€P†„&vDF)VdTÀG‡"cE ƒ‚b× òPÆÁQDEåÝŒk ï­5óÞšýÇYßÙç·×Ùgï}׺Pü‚ÂtX€4¡XîëÁ\ËÄ÷XÀáffGøDÔü½=™™¨HƳöî.€d»Û,¿P&sÖÿ‘"7C$ EÕ6<~&å”S³Å2ÿÊô•)2†12¡ ¢¬"ãįlö§æ+»É˜—&ä¡Yμ4žŒ»PÞš%ᣌ¡\˜%àg£|e½TIšå÷(ÓÓøœL0™_Ìç&¡l‰2Eî‰ò”Ä9¼r‹ù9hžx¦g䊉Ib¦טiåèÈfúñ³Sùb1+”ÃMáˆxLÏô´ Ž0€¯o–E%Ym™h‘í­ííYÖæhù¿Ùß~Sý=ÈzûUñ&ìÏžAŒžYßlì¬/½ö$Z›³¾•U´m@åá¬Oï ò´Þœó†l^’Äâ ' ‹ììlsŸk.+è7ûŸ‚oÊ¿†9÷™ËîûV;¦?#I3eE妧¦KDÌÌ —Ïdý÷ÿãÀ9iÍÉÃ,œŸÀñ…èUQè” „‰h»…Ø A1ØvƒjpÔzÐN‚6p\WÀ p €G@ †ÁK0Þi‚ð¢Aª¤™BÖZyCAP8ÅC‰’@ùÐ&¨*ƒª¡CP=ô#tº]ƒú Ð 4ý}„˜Óa ض€Ù°;GÂËàDxœÀÛáJ¸>·Âáð,…_“@ÈÑFXñDBX$!k‘"¤©Eš¤¹H‘q䇡a˜Æã‡YŒábVaÖbJ0Õ˜c˜VLæ6f3ù‚¥bÕ±¦X'¬?v 6›-ÄV``[°—±Øaì;ÇÀâp~¸\2n5®·׌»€ëà á&ñx¼*Þï‚Ásðb|!¾ ߯¿' Zk‚!– $l$Tçý„Â4Q¨Ot"†yÄ\b)±ŽØA¼I&N“I†$R$)™´TIj"]&=&½!“É:dGrY@^O®$Ÿ _%’?P”(&OJEBÙN9J¹@y@yC¥R ¨nÔXª˜ºZO½D}J}/G“3—ó—ãÉ­“«‘k•ë—{%O”×—w—_.Ÿ'_!Jþ¦ü¸QÁ@ÁS£°V¡Fá´Â=…IEš¢•bˆbšb‰bƒâ5ÅQ%¼’’·O©@é°Ò%¥!BÓ¥yÒ¸´M´:ÚeÚ0G7¤ûÓ“éÅôè½ô e%e[å(ååå³ÊRÂ0`ø3R¥Œ“Œ»Œó4æ¹ÏãÏÛ6¯i^ÿ¼)•ù*n*|•"•f••ªLUoÕÕªmªOÔ0j&jajÙjûÕ.«Ï§ÏwžÏ_4ÿäü‡ê°º‰z¸újõÃê=ꓚ¾U—4Æ5šnšÉšåšç4Ç´hZ µZåZçµ^0•™îÌTf%³‹9¡­®í§-Ñ>¤Ý«=­c¨³Xg£N³Î]’.[7A·\·SwBOK/X/_¯Qï¡>QŸ­Ÿ¤¿G¿[ÊÀÐ Ú`‹A›Á¨¡Š¡¿aža£ác#ª‘«Ñ*£Z£;Æ8c¶qŠñ>ã[&°‰I’IÉMSØÔÞT`ºÏ´Ï kæh&4«5»Ç¢°ÜYY¬FÖ 9Ã<È|£y›ù+ =‹X‹Ý_,í,S-ë,Y)YXm´ê°úÃÚÄšk]c}džjãc³Î¦Ýæµ­©-ßv¿í};š]°Ý»N»Ïöö"û&û1=‡x‡½÷Øtv(»„}Õëèá¸ÎñŒã'{'±ÓI§ßYÎ)ΠΣ ðÔ-rÑqá¸r‘.d.Œ_xp¡ÔUÛ•ãZëúÌM×çvÄmÄÝØ=Ùý¸û+K‘G‹Ç”§“çÏ ^ˆ—¯W‘W¯·’÷bïjï§>:>‰>>¾v¾«}/øaýývúÝó×ðçú×ûO8¬ è ¤FV> 2 uÃÁÁ»‚/Ò_$\ÔBüCv…< 5 ]ús.,4¬&ìy¸Ux~xw-bEDCÄ»HÈÒÈG‹KwFÉGÅEÕGME{E—EK—X,Y³äFŒZŒ ¦={$vr©÷ÒÝK‡ãìâ ãî.3\–³ìÚrµå©ËÏ®_ÁYq*ßÿ‰©åL®ô_¹wåד»‡û’çÆ+çñ]øeü‘—„²„ÑD—Ä]‰cI®IIãOAµàu²_òä©””£)3©Ñ©Íi„´ø´ÓB%aа+]3='½/Ã4£0CºÊiÕîU¢@Ñ‘L(sYf»˜ŽþLõHŒ$›%ƒY ³j²ÞgGeŸÊQÌæôäšänËÉóÉû~5f5wug¾vþ†üÁ5îk­…Ö®\Û¹Nw]Áºáõ¾ëm mHÙðËFËeßnŠÞÔQ Q°¾`h³ïæÆB¹BQá½-Î[lÅllíÝf³­jÛ—"^ÑõbËâŠâO%Ü’ëßY}WùÝÌö„í½¥ö¥ûwàvwÜÝéºóX™bY^ÙЮà]­åÌò¢ò·»Wì¾Va[q`id´2¨²½J¯jGÕ§ê¤êšæ½ê{·íÚÇÛ׿ßmÓÅ>¼È÷Pk­AmÅaÜá¬ÃÏë¢êº¿g_DíHñ‘ÏG…G¥ÇÂuÕ;Ô×7¨7”6’ƱãqÇoýàõC{«éP3£¹ø8!9ñâÇøïž <ÙyŠ}ªé'ýŸö¶ÐZŠZ¡ÖÜÖ‰¶¤6i{L{ßé€ÓÎ-?›ÿ|ôŒö™š³ÊgKϑΜ›9Ÿw~òBÆ…ñ‹‰‡:Wt>º´äÒ®°®ÞË—¯^ñ¹r©Û½ûüU—«g®9];}}½í†ýÖ»ž–_ì~iéµïm½ép³ý–ã­Ž¾}çú]û/Þöº}åŽÿ‹úî.¾{ÿ^Ü=é}ÞýÑ©^?Ìz8ýhýcìã¢' O*žª?­ýÕø×f©½ôì ×`ϳˆg†¸C/ÿ•ù¯OÃÏ©Ï+F´FêG­GÏŒùŒÝz±ôÅðËŒ—Óã…¿)þ¶÷•Ñ«Ÿ~wû½gbÉÄðkÑë™?JÞ¨¾9úÖömçdèäÓwi獵ŠÞ«¾?öý¡ûcôÇ‘éìOøO•Ÿ?w| üòx&mfæß÷„óû2:Y~ pHYs  šœ›iTXtXML:com.adobe.xmp 65 65 „ÙDtIDAThíZÙO”W—6Yd@`Vqa-‹Z·Ú˜&MŒéKÓ7ãk“>7iúgô_hÚ¾µÖ¥Ú–E67dqØ—¥ƒ È"ÒßxÉå|çÞo™cLÆøpιçœû»üîïÞ!î;oÓžùŸëCþøÈ·Ç xß3›Ø ìrbKh—¸ëðØ ìzw™ ^Æ×^<›åË“*„å¹…®¯P‹CùØå‹‰©{…³;Á=Ù30øG§ÃXé† m—.ĹÈÙÚêþéêRè™ô°]¼Ï{99=•¶­.½ºÕŨƒVNÏóœùæ+wb‚lë|ø? 8ýõ—­—.È$BHÍÎøíû¨q»¾õ—¯B£´rRÚÞ‚ÃeÌh«Ö|vÜ•°3±ðÏ)óÉ ± —…uURÂÖ›7Ãv3ãÎtÜcm˜¾ŠÓ1£­ZÚz4..Žº¥dîó7¦[{Jò™Û‹g‹êLîðà×[›ë,&?ú8PYÌ’` ÊO60£µZv¢>ɸžá??4®FížœÃæ‘Ux Û_ÀŒjQ}uš'KuðÕW«F KàX­Ëí¦[[[êÃNP¦ïÑÈ )Éþ–#Ìh¡VÚêŠ7t,œ£ˆ‚#嬗WkC7ï2#TCÀœ7››Ô «9p¼–Z¬å¢Æ­ƒªmRÀ1èð O†ž'UgCÃu¯-½dNyU¥Ìb¦¦îÏØ_d8I¤'¢´í¨T­”š˜’Ì|ÔÕ! Lçƒ,2=/Û[`F­Z~ª1i_ж FïAGIà‰ çמ=ÐÁú£ÐP‚ƒíL±¦+N5š}µ—¯c;¶¦ådÖVR‹™¬–º^½ó@ëÏ PÁ³_ÔpPÌŒ¬ã©{C¯Wפ;!¾òŒý©‚ îõÈ(!„bu0£Py@ÒÅ©yæš[Á¡9@ÍòÈ,Ì¥öë·qôPK±É§>8Èã“©Å @…/Ö™‡Ã4rš'³¸Ñf~ŠòŸÍ×ÁöÞÐÀM•(´åêAþzu]  "³¦€L]®ªOZ觨rIó!j|ñ4<û(8Òчñ“ö䌴€å–I!„§ç´*Z5hÁÔú(Ÿæ”ÒŽgûƒP®ß¡ÛÀ–\a—c¯Ó<§ûøñJ4hÁ4»Øk1û%M5©žL™W®ZPñ°qGÖYQÅé&ìu™{‰Z˜¬)ãwû™Ÿõì—}Ü@tce5øOŸÈ0óÀ°£2óss>–\ªÅM|§Y¨ˆÒÐûË5ÆL­gŸ-°ðÔÜÂè´è€Ñ †Y~1"ÚoX‡hµP«/@ ¦fÔZeôØòw¥'8UJLîX‡{3÷Ñ’äR¤F&ë €“ ¦fŒ#J©KäÞt«Kvƒõtd{6„1¯Ú/[©ÀÖ!š¬TÄš ‚©µ.;Ù@©ËÊârÐx¹¿û~¨Ù©Rp¤‚ºA^œ™·P›T0Ì~‹æf˜odi #ÓìØÇ=çšü8T«ž*ê:„ÿTï Œ2Lg@z¤È¯.e‰À @W©q¼ëU!Oõ â\£FŸB®°1“µP‘д4ur¨Rëº/Î1¡Þ»‘j¶„àñ€´Q /b4a)š1PhU€ ¦î¤DF­Q] -`¼iBfœƒío5ÜT½‡øû-€ŠÌVLŸÏžÁµŽ0ˆ€¹çGÕ¯‡…s ÜTÛvn˜‘;¤‘É@'”¥¨ÍlUØ9 ¥Ö ¹-`[åôÚŽ{B|’Bo®­÷_éÐ~13ÚðøÚmÆL‚òbUy¶™.\Ê X7P§zSc†×#9…¿í(b¸…§íTd³) ¦Ë+´ã· Ø,, ‚†ùI{ l§ƒçÛD“·ŠmNTÄÚÓàûš¢úåR.e,*8Å«ç/¤]n'ˆ¨HeSœT0«ÈÂMN’„^Í„ÆbatFúCÛ‰]å`w "•}*˜‚Zç×ðà…Q”ä¤W-§(nâoaóÃì,—½¨‚}0u¹ªÏµä–núNzU9^¿³¯Ð€²±Û÷Õ5³Ø€HL'êØÝo¼ÓÀØ´ýáŒ[žÿ—6UœiJËΠç*¢𤽗"=¥>J¡ÁÕ´ ‚~™q¾R#”n$49a 4ƒ£úï``JS@ƒÀ3jU¼µ`‘h›„q²GÃD,ü€-õÌx)aC®ÆZ©Š‰¢ï´ 2 lèf'3Z«Ž @ Le^Œh°}û /f‚Ê)¨§z¢­ZÙi=?_¥—š b4ܘì1p šÊ ”QÈN ˜.™©LDß ¤ÑBÀ‹ ƒá-€Š(§ÀÛŒ)XŒ¨¶ Æ)¤O´u9l2ÙŸ`Q»e>L} š‹p÷°½Â³TP£˜<ã·{–èN.~,J}ùƒÃD·éÞ`áT‹ýÙ%Ž÷ G±„ÞÃ×9è2V€ƒAz§.±x§Ãë yl Ò;uù·°)±q Î+IDATxÚ¼—ilTUÇÿ¯³1ÓÎÒ––EdGÑ@%€YbÑ¢H‚´…² ¥Y Rc¨â©(&*‚AQô H@v)ÐPhY‹B—i;ÎþüßÇ t›å$¿“¹÷žÿ½÷œóΕ†Ž+BˆAâÉÒ›t"V"“rR@Ž“?É/¤*”Eµ!ŒéF’‰ÄXϘX•þd&q²Ž6´xXÿµP8C¦5༾ӚAòÈ bhª€®ä0™â)Õgz’Fö“ö¡ xVÐÏú’äéÆˆÿJZááÛcdiWŸqÇß“4ŸµS}èëAz¢ùí9²è^âè“ñèlqð*ÂönoU‘.ÔÙa”Ý*Fƒ.tèÜ^‡–QHR“ˆO¾¥Í[ËcÕò•Ÿ÷:õÍ2%LW‡‡£¼"€ —¼Š˜î]nMݾÓ]¿;áñÊ*xe˜Éa k­=yÆ“°!=Z/q¡]¿9뿸ޤΰár‘‹V—âÌ9b[jàóÉ(+ _/¦M4Sœ Y›ËñÏYOCÎñþd‹)iYI¼ÆÒ6%ñl¾§Ï‚™6Ü(ö£à²¯Æ`q´SÇ›‘8É‚ìœJ|öU¬æ0$O·bÖ Þˆ@ÛVZüuØor@£‘ʵļܼÚ"†2rži‰Mx/k:ÇÍ[òï ;ŠÀâÙ‘ŠˆBU„V+!-9ÏôÐ#uE)Žžrcú[f¤Ðùñ\26”a'O­wœIÓ,£ÓovTáÐq1΂¸'ô8xÔ àŽs!|‹ù´j!`¸^Š@Þù;"Šþóãш´j0/£7KüÊ"ómXû©;ö8Qí’Q唹{.^ñaBB~Ø]…2{{÷UcôË& `Äþ¿]x±-çÂd‘†–à/ñ‡0÷=+¶dÅ@ÇX¸ª•Ž@ct{j™£ªæ˜ŠÊæ¯,…ß/ã‹õ1˜?ÓŠåYew;f«õ-È/ô¡’‹ÅFkpàˆKÙáýšÛ-ãà17b¸V…CÆù‹Þ:?FÁá& ™DQ„sÒŠ•”›ü¦ù¾ˆ+ywœŒvœÈu#kY4¬–{¶‹_‚Î×.‰fJù\vƃIi%5ĈE³lÐënU‘û"G 62âoeÉÀ~-0{ª•qs'xç&Z1fT8’Ó‹•”ÍdÜpî=".Jlɲé|úÝÎEn-Š·”‘[ŠÕ›ì¸t͇a/1i¬’¦å¶`1S*ä’96enúú²ÛÁ¬ "«o«EJz‰¸ê¥Ñï\{ÝÒè­u9¿Ý·q§SX F†+QþÝÎ*8] èÛ½„}‡\ÊâcãÃ1þµìþÉì¯+á­£"ŠÓIŸkS²‹mŒ´ñs{lŸž†¢•›ìšºœ×h:ꔂôT7 ù^ü:h1ˆ×PÈTÌΩÀÙ|oÃ(E,žmóœ<펖dYÆð ×·p¡©¡Wkó“]uJ¦ˆ^\@ ™¨¡ãç“=ÛÚ$Ij[.:ßÓMù"> ¹TŸWƒá˜O6>Â~ S8¿·#ZNN=ç¢Û^SWK&¾Å¯“›ÍèüªêÃS_W|žŒ$7šÁù52"xô ½ Ž‘A$÷!:?Bª¯¬^F"(Ÿ'YÄ÷ŽÅQ¯R7t©©oC©$Ž|)š‡&8Óͤ;Y**öƒ¼ŽÏ©ÓÑΑ—H/ÒQ|ÏÕç¹]}ŸPŸç»UÚÿ ÒÐñY‡Š!IEND®B`‚watchman-4.9.0/website/static/logo.png000066400000000000000000000452161314236077500177450ustar00rootroot00000000000000‰PNG  IHDR¤£cIatEXtSoftwareAdobe ImageReadyqÉe<„iTXtXML:com.adobe.xmp öÇ=ŒF IDATxÚìœUÖÅïôäÄ‚¢‚"*bBE (`Ì€¢®sveýÜ]ÌqqÅœÀĘ˜EAEETD$#q`rüî©êfg`B½Šç¿¿»M²§ûÕ«:ï¾wCÒá—!#C­¥Ú6j[ÇÝ\­iÜšÅ_3㯩j9ñßglô>MÔ’7yïõjñ_W«­U+W+P+R+ŽÿlÍF¯+Õ–«­P[¦–ÏËD¢F ‡€„Œ$µ6jÕ:¨m§Ö6níÕ¶‹Œ)r7ù}ó¾Oi\ ª-Š¿þ·¹jóâÿ† !ƒgµÝÔvQ롎›x1A%=. íkùûª¸HA˜~QûQmvÜqz !f<žÔöÜȺÄ=Ÿ(‹¬×&—¨oÕ¾Vû&þëN'BA"¤î`‹ëµƒâ¯ÝÄ>«!u'Omÿ¸%À¹ÖµéjŸ¨}-Bü³údPñ˜âÂs ZO±·á’8,®°".LŸª}¤6Cx.Eè!‘¨,€âO¯¸ø@„¶æ°x¢ ÄMâbQúXmšÚ‡bGB‰„D·õV륇²¸÷4%n«* ¡ ‘ €ÃöîjýÕŽŽ{D$`‹ïMµ7ÔÞæJ ñ!³î«vœZ?±·‚Hø½'lí½¦öª0ÔœPˆ‡dÇ= 㯹’È‚Š_¨½¢ö²Ø¹Q„PˆQ¬y„Ú©b„grHH |©ö‚Ú85>`‰87GÄÎ :]íix)=*ÅŽÖ{^í%±ëüBA"õÑpgª#v®!áãcÕF«}Îá 5ãMæÃ‘jãÅ>¤¾“bD"'¾¸A"î,µKém © ä WûMí-±R9,Ä»«Ý_ô<§vˆ°:¡ E<Ž;§d¾ÚMR{eiBL€ ˜!jSÅ®³÷w1Û„PˆÏ@¸öbÖD’#B¶“9,Äc°5|—Ø-5 ‘ÒZíŽø ÿ°ÚÎâCpÖtIÜcš$öv¡ ‘­tØí¹ ³ U?¦Š•w<ŸW$\ö;Z[sCÅNj%$ˆì'vˆÔÎÜPH`ØWì­dËŸÈkLBze=¡öS|‘•Æ!¡ ‚ Ûˆ˜CGPlu0Œ–„•íÅÞ††0Oa¢ ÿ€œŽ b·<šÃA"DµGÄ€8ƒÏ3 ñŽÕžUûFþ×ñ“¨zLO‹]â8îPˆ{´P{Pm¶Úi¼†„l`W±{3¡ËmO‰˜YíÈdÿEí"á¾9!µ±¿ÚGbGæuäpPˆs`ûá±÷É‘ÉÎÒ*„Ô ä.ýÀû†‚Dœ¡›Úb7;c9Bêv; CùÌ£ ‘úƒÕΉKÄÒ)„4œ½"TѨûs8(HdË`{îLùß9Q ‡„GÙGì 4 d- ©…ÔÞQ{2¾š#„˜[ø¡Y Êj äpPÈÿ€tµÚwj½9„¸F+±Ûª#±¼-‡ƒ‚u´€JÆ#Ô²8„xËwŸ‰¤(‚œ"ô&BÐÂÞB<§‰ØDÓÔvápP¢Â¡b—8Ao"-â/Páákµë„m.(H!&Cm¤ÚûÂìqBü z‡Ý(övz)lì¥6Cí aáGBxß ’$«ý›+-BKbgã]µv RPAé{j7 ÷¢ :‡‰}¶t‡‚‚4FŠ>E,ûCHxØJìöÆ='BAò58 ½Oíµøä%„„ä+MWëÌ¡  ù•íÔ>V»TxJHØÙ]ì<ÂÁ ’ß8Fìhœ}8„D†µ1j÷‹½;B(Hž‚(º[Ô& ·è‰*—ˆÝ¡–=Ë(HžÑ4.DÿnÑuöUûJÈDAòäaÿø(!$NKµ)bŸ# ’+/v×I–ÿ!„l riû„ð\‰‚d˜kÕ^û0“Bjã,±«;lÍ¡  9 V:O©Ý&KÜö§ Õ‹~b7Òã$!ÄIЉöqa·h R9Gìâ¨Ù Bˆ7Q-‹CAAÚWÇÝêd!Ä HªGmSiS°§‹îÂý]Bˆ;ôP›ª¶ ‡‚‚´ñ<$vÒ+!„¸ÉbfíÀ¡  akîIµ 8!HÞiˆÞH ¢\žS;ƒ÷!ÄcÚÇE)Ò]h£*Hijc…Ý !þ¡ØgJ](HÑ£—ÔNàü'„øŒVqQÚ‚~°M‡–Ã8ï !>}•P?s RxAÃóôŒ!UbÞSÛ‰‚N1zJm ç9!$ ´Ž‹Rd¢ï¢ HHt}@í4ÎoBHÀh+vE‡¶¤p€ Ì3"„•jo‹}¶DA 0רýç3!$à ëì$±{+QÈùj·sBBÂ~j¯ˆºBA ë~PX(•.S{"¬Ï¶0 VÈ5b BH¢6’‚ä‰}V6¾"„„™Ë%„çãa$D ¼%ˆD!„±#ˆQüù^–o'„Dœ#áœw„R#9j/Kƒ‚&H¨Q÷Î7BÙ,$€5ï‚$H;Ä]Q1BÈ–ÁYÒU$çÉP¯Ö”sŒBê Zðô¤ 9 *ÛîɹE!õ"Um¬Ø‘É$‡ÜN¶ '„†ÑFíI Àq‡ßi;µÑœO„Ò(4{©á ßèµfœK„ÒhîŸ}øY† +xBˆS¤Çù¾m`êWAê.voB!ÎÑ9î)QêêÓ¡jm ç!„8ÎÅj})Huã?j;qÎBˆMM›S6TûBÎB1ʶjPj'Wm”°4!„¸Á)jÇSjf„Z{ÎBqÅG©5~¤CÔÎãÜ „Wi­v7é &þqáV!„xÁ™jGRl®v%„/yX|0ëµ u•€õë „ÒAíú( ~ö#b—G'„â-pöˆª ¯vç!„ø‚”¸“à™.xõƒ[ªÝÆëO!¾bµ³£&H#¶#'„ÿáÙóÙ AÚÇK&„²Y°ƒuS ¹F÷K0Z§BHT¹H­[ØéobïQBñ/èØ=2Ì‚„¤«[x !$ªvlXéj±KžB èOçZ®¨[‚„~Ãxm !$P YêEa¤›Õrxm !$p —ZT¸!HÅf „<¶RûGX ÞQ ¯)!„–KÕZ]{"¯%!„šlµ]P‚‚÷!$ø «÷öA¤ƒÕúðBH(H»¡j éz^?B §‰Áߦé µÃxí!$T @ÍØY’)Aº×BBë%íAêIïˆBè%ùA®åõ"„P3D­ß©«ÚQ¼V„jqw¥ß å%˜wD!áç\µæN¾aRuuµ#oÔ{ÐÒúò‹°L!„D…ëÞÛúæFè†1é*Š!„DŠËTT2z3GD?PS}9‹×†„…””$ÉËIvV’dg&IffL23’$-5I’t—ž–´aoº¬¼ÚúsP^Q-•UúgeúZ)RX\%Õ²¾°J ‹ª¤¨¸šƒKÂD ±ÃÀGùF”¡Â~G$€@XvØ.E:nŸ*·K•¶mR¤M«di¹U²‘ŸWXT- –TÈÂÅòû¢ ùu~¹Ìùµ\ T° (W¨S2úݱ­½Új´ éÁ{\ÊkB‚@ó¦1Ù£Kºì±kšì¶sšthçî.3<®]:¦Z¶1¨ç–ËwsÊdæw¥²|E%/ ]ÔúªMöƒ‡t¬Z{^âGRS“¤ë.i²ßžé–mÛÚŸÇœí¶M±¬ï!övüâe2sV™|ùm©Ì˜U*¥eÜê#¾æB'©ÑQvê!} /‡òz¿€³žý÷Ê^fH}2Bñ>ž^"Ÿ|Y"ŸÏ(µÎ£ñ˜”ÞÛz^=õÃ9I߬ ňøÅê±Oºôê‘)=»g„îûá;%¾„iʇÅòÅ×¥R^NωøDl£_Òÿyæ!© = /óZ¯Ø±CªÕ+SŽ;2;’ßÿõw‹äÍ÷Šäçyåœ ÄkVªm«^R™ë’¾Q–ØõŒqDÆÞ3Sú÷Í’NÛ§Fz,úõβ ‚4iJ‘|ðI±””Òk"ž€ð“Ô^hè4fËn°ZS^â­Z&Kÿ>Y2øXflÊN;¤ÊßÏϳìå7 e¢ŠÓâ¥â64Fºe·Ó؉“_xµ ò*1ÉnÓd€ Ña=39õ`Úg%2ñBùvvƒ¸B,&Õ÷ܸÕU]vJ»§.ÿ~Ó-»†ÒNj?á“Þ)’ÑcÖ E‰˜à€½3¬m¹îÝÒ9`– <¦©Ÿs0ˆ1°}þð-¿E¿¤[ݤÛe£H ŠqšC{dZQ×.i Aâí$õ˜¡WÍÛ•8ÈíSå±-6ýc Uš$ÔSùËÆ4E‰8Á!ûÃ#Ê–n»RˆL3rT¾¼ñn‚˜#p´Ú[&éÈÚ~DéÑçÖ1‡ÔlÉak[tÄ=fÿ\fEæÁc"Äa1ãÔ™¤gÔN¯í/!J÷>žÏ«Dê"èÙ+‹ƒá!(MaB5Bê ê@޾«å–þYžÚºº R}¾³6'F«\@Q"›£Y^Ì Ý>ñ˜à&³¢Db-—•™$Å%öïSSeC+Š °w×tËà)!*ïÇ_˜dK6R0Ží[§û÷µ§êú¾õñàz½X—HO‰Ô8Ùô9}Êq9röà\_N´„X¸¤B/«´Šœ®XU)«×VIþzµuUu HIVámš,-šÅ¤y³dÙfëdÙ®mŠ´o“b…±ûä1½ôz¡¬\ÍŠã¤f1< gƒ²¦ˆ] ¼NR}i‚Ú€ºþcŠÙTV¸öRÿåQã¡‹<ïç”YÕæ-¨0^ÂܶuŠtÙ)U:wL³‚8Úµñ_ò§Æ­—ç_)`Di¨%h­¶ÌIAj¦¶º¾ž¢Dðà=îÈ,_Õšû|f©|1³Df~Wfy@~`ëɲ×îé²o·t+ÚÐOÜñÀZy÷#>PŒ$FýòpRОü‰†| ŠRtrBŽœ5ÈÛsx ~ði±|ó}™ï{ ¡rù>]ÓåÀîérä¡þø@WÜË¿þÎó¥(’—“3æ6DŒÀTµ^N ÒbÇ”7ŠR´ðK…D½3­ØjrÔ6 '4Dã>?ôvzv|<3~=·ñ"º=¥ICÅhƒƒ¥ö‡‚„°½µýR¥ð“œ,rÎà&2p€wÛsóUÈ[ïYÂD]¥ö9(S.ü[Ï?ËÍ#×È´Ï&N1ª3ç«=æ„ "¨ÞJQŠ}Δk.ö.hÞÐD_3¿+ ýX#(b.iVU /Ï›^y³Pžµ tÂO#ðŽÚN²mOvêKR”ÂÚ…Ÿ9(WN<Ú¯hܤB™4¥P–.fˆr›VÉ–0ÜÏ;¯ô>½Ÿ± á¹uçžê˜%ÀŠ5¿Q‚TU%ãb1牢D¯È žyi½¼òV‘ružx€T¶gA$&éõ(d¦pù9yN‹Ø[mf£éå7 ¯ÐÕïH§?E)¸à¬«§“n° é?ÞQ_æ&~OQŠ&;ØU¹>ܽ$M¬°Ñåtáb®² ==INÓÅj º Ζ^xµ@V­a]¼(ŠÑׯ²ÊrŹMé_¤ °ÐÙøÏf:üJç·l(Jþ%.9˽mŸÏf”Xsaú7¥|l»]Ê nr×#ùòöŒÄó#—ž'Ça\ŒÀt¤ý#H/‹]>\(JÑ ˜n†s?ðä:yímnñ Š­Û®é²óŽ©Ò~Ûi³M²ädÅ$';fý}YyµÕ‚•Á-©°t¿ù¡T~[àOyLÇt€{yLv@Љ¤¸É[«(­®· é?D»ò•bÇŽ‹[¢ÿþ'(J^²çnéÖÝAû¹ó°Â9ÑÓã ¬‡ºŸHOK’^fJ߃3¥k—†µŒX½¦J>š^"o¾çÏ:pýûdÉåCó\ûyŸ~Ub5ü’phÅèJ£ïþ*F NVAßA:ógs?˜¢>`yþéîlÑMû¬Äj‡ö~ê'“#§ŸäìyËWß–Zhx(û‰˜:y(œyêñî/=9ÖnmAÂ%Fÿ¼}õ–¶ÛSA:¿6AÚ\–öø@A-«‘k¥Ä@Q”ÜÅÍ-ºÇž_g…qûÍ#B¾¿l&"mŸ=Ò-ûb¦ Ó”BëÕTU‰<ñâz«ü’[-åõ×¼i²¼8¡ÀÚæ$îqñ™M¼#pøæþrsÒdÙL§?zJá¡ËNiÖÖ */˜ÆÊè³Ð7}ˆ¬U™G¡Ñð”à1ÁsòxXaí·ß¿VÞû˜ý–Ü#-u£mÕKZ\“‡T£ é?‚ç„ ßuþä¥`‚PO„|ºÁ½£ó­ó¿€äÑýsäœS¼íÙ4õÓb+Ä}–¶.±myÆI¹râ1îxÌØ¾Ã6 ½!*H/Ô$HµmÙí]1ܾ x»‘—‚È9䢬^ëäVTË>é÷Îʶġ=2-Cï¦IïÊs½~(,ª¶[ñYþ}¹ùz…H¸n’“'ÈòÜ ŠÝðß5 IÑ8Xjé Q›‡4L_þÓHOÉÿ4Ë‹Y«_Cõªþ®®_„èØ#ÜÍ«j~ëΊqzj® àNÐí÷®µºû‹Q#zbý¨R—š<¤Úi¢¾ôoè¥(ùSÕ66g#ãtµ»Ì«]$(JžÐ¹cªôï“-Gj6¿È…3ѧ IH< ¦1 ¬ˆ8/q+u‘šHà%›Ù 95WëüNˆÃbðàÆavÕ–é3}Ùßñ•+EÉUï™)×^jöì‘`c'Ȳ?¼ÛB‚Aˆ HQ9ÕÚ:ú°,OÇ8Q±k*™›³”Ýnõ^(`‹â•8©©I–k:àá¹— ä©qÑ=W2%F÷=žoÍsüÙÙœ A±þîÆ@R”œ£åVÉrêqf÷ïQ™8·éÐ.ÅŠšÐ×[!B‹ ´Ê¨kÈ+jÁ¡Nž„éÑg×Y ‰j¦ý³å¼ÓÌæ¾!_ Í£Z†œvb`ŬRk±9Aš²©bQ”ü Îî¾a+£?ËN®8BòŽÎöt|ø©Ìº9ZešÐÒcðqÞ ®#ò˜Ü&7>Â{éõY²<çJ!£Û©-¨M–èKk7?)Qzõ­Byð©p¯šÜˆ¤vó*ë¬Ä-°å…‚¯nTØÿyh­UðÔ ZµL¶êèÁcðš‘£òå —Ï^ÐðÂ3Ìn)ƒTž¦y'Fà(µ·¿Ùe§b„SÈ[Üþ4¿Î¯å++­:YN²K§4É͉…¶U2Ú\yž¹H:LÌkn]- »w^„ÅÉ}·´]wö6©ìëF¬±æ¦S WhƬRy÷£b+ =¨¼A]tŒ:íV9"¬{q/–ëÛkwsQx‡”)«ÖVÉ/óÊCyß›#lë¾ú–'"߈m÷gAzf|Á>úr¶Ÿˆ¢TÿIi²‡ª.<üô:)+wooaË—œåmñSliýëÎÕò³Á‡£ñÁ§vP樴i•"½zdZÁnzÀ(+õëïÖÏ6)¸˜¹~ê/å84ÑÍb„¨LX„õoM‚שŸWŸŠ¢T7PÄäy&ç³/»[ÞÊy¾óµ·¯–9.ö!Z·¾Êš“Ÿ|Yj,ÝioÂÅwïœ&9Ùz¸Øµ^µÓÓc²óŽf¾7r¡²2còÕ¬pÜ÷#=#€ ôxM‚tº¨Ð@Qrôñ1yÈãÝkä­ÜÍ/êØ!Õµ–›‚|Ñ÷?y·½ƒztŸÏ,µæ&Z©ïØÁ}aÂý‘––$3¿sÏ£Àv!iQo7C[´Øm–—,?ü\O1ªX‰ÞQ“ ]ª/¼þt¥¿‚ƒ~ãP܈PºãµòUº±ýØÉeï­²¯½}µ¥Sí“çÔÊÕUê-•È7ú™dÛ¡»c‚ªè‰j*n,(ª–}»™9W‚†N´+VUù¦c±Ä5ÇN,ôÃWÄ…DÍú0¢ìzZŠšB;ûåB0úΦý¶)rü‘ÙÆrŒÐkç¡§½„v?9²¥k?ïé—Ö[ùT¥eþ_-»*½)ßüP&Wß´Ê“ï»ß^érë5fGâ|ð‹™ÁYš#,ÈPúËGôTûdƒ‡¯a÷_üÞ/ŸžJiòàm-Œí³?;¾Àj€æå ×Å…C}Ü|Ãÿ³Z¾ú¶Ì“ª k‘„;û—rÉÊLr¥^jÄÍþ¹Ü“\žÅK+å÷Š%C½CSói¨§4w¾ÿ#ðNî—mÕiŒ€ijßn¤gÆtÐ__å·OeQ:´G¦Üòs+FxE/Nðvb¢ÔQ^nÌØû£=à w¯‘Ïg”Jy@£€!ˆÈ›«÷æl›mÌ SFF’Lu¦[½Iœ+edÄŒ…þ£*<ª¢ã\ÉÏbtþé‘#ðƒÚøEbvwôëÅITšuzû.‘ çÇí;T(0Y­ÛÁ® &%YŒ­úÑY[‘+W‡'kÿÓ¯J,ÃBp»j@س{†õçåÙÚcÏ­“5k+<”J!Ï5ð"(F`Ç Ï…øëv~¾£$J¦&d‚ˆ¯’Ù?{ŸŸÑ¬©ó»Ã($Š3Âe+Â[>fê§Å–¡Ú9ªž£ú¹ÓlÕ,Ùs1Gô®ãõW™‰ÀDriFz’ÕB%ì÷> ÐúXŒþ¤? Ajç÷1 ¢dê ’+Âüõþˆ4ª¬tn oeòݪ:àPÒvd¯,¹úg½é¼&1_x—}Q"ç_³Òòéí|Pª²#1Øu/="˘ z»À RØEÉTIàÇÈÂ2¶ð‘\ ¡ýõ÷p–‰© h?yj‘}x–\yn^è¾ß¯óË­óΊJû¡mBbI"O_o5ýóDS^z¶ó×.@­9Úĵ¨"!Híƒ2AÃ(J¦zš¸êØ?(môò›…BìóK}ó½"+W Ôaaúðbðj¢8m"¥âµÉ…®çaAŒ.;'Òb°¢Þ cAò6%t3tˆ"¿ÜÄ*dHŒF=¿>”bDj&´ AÛé0‚`T×0Déñÿ¶´J)]Œ=À¦…–S”¤¶Aûô83@¹ô ‹~ö±M€öÎ(’JH˜óZÜõˆ¹3Ÿ‘7ne…†YŒ¼Ì-lVÛ£XïAKá¯fñ EBPE {ƦzÃÜúQŒÆ¿^1’„c”’p•(JæDi›–É2h€1BT:âÕÁëÒ ?³ÎªQ‡är§A—ÖäXRƒ#×PîÉ”ù©ÒD#i•¤¦aº™ü&J;´O•ÇF˜Ù Ù„$¤Q Å¡¨¸ZÎâ|µ$­§èÓ²¾ÞÈ!ûgÈ¿/§Õkba¤„(™t€(Õ'СÓöæÄûÆ#Bþ Rî~ÌLX8òësÿCŒ†_é|-¾.D›…Vü JèÀùðfÄYØ!Ù7&ÄqP±âºkŒ¼w]ïSb„2`!]ˆnðš…ubz%Jh¬wÏ[Û–`6!®‚V—_g&W ÷ÿæò6(FAêv]OœAÊ óÄt[”ºwK—Ã͈ѣº2òyyB|Ã?•ÉÙW­0’«„<Åš ¢âþ¿ŽbÔ`/ A MÂþ-Ý tÀd¼íZ3]^ïUQ5•HHXY°¸BžzÉÞQp:Ê5Q)üÞø‚×Ôý1™)qW)ô˜¥™ß•£;\+S>,æÓ…¿®Jî{ÂLmBä>›QB1j<9¤ô¨|[“¢dªHê ÿ]#Og) B*¡#¶JUÉé’%9†&EIŒ@)/Jߨ”(™àŸ·¯–éß”òiBˆCà_Y)ÆNŠ‘:ÙºLz¤<¤ ‰ÒU7¬’Y?–ñ BˆÃàÌÍþLTu 5Š\DÙeDñ›C”üê_q=ň“ }ù|#‘åI‰Ôd‘óO÷O áyÃVʼå|bbäó•WTËYƒr}ñyEe1’xPC¤yéu»´¼×¢„É8áB™¿í#q äõ••Uûâþ¿÷ñü¨_ŽdRnÔGÁkQÂd|qb,_QÉ'!ÜÿhcaºK4ÅhË@bïD “ñ9]¥­ZC1"Ä+°}_YYíz Å诂D<%6Ö#Ä? Ð Ñw&zQŒê½£DéQªéRŒñ“§ËÍ#׸rÿ?úÛÇÔ$HUwE‰bDˆ™öy‰QQJÜÿèpKþ*Hìe° ÙYIÒ¦•¹ÝL”9ê°,4!>¥k—t£÷ÿÉýr8È5À3¤Ähè)MŒÔ¦Ú´®H’ÿ[EÌŒ$N6âK.?'Ïøý–耽ÍþD%É1J€à‰$}.›=QJæé%ñY™Irî©îÝÿ¥¿P€ÇKI{ F Î;­‰okjšåÅ\£Eé̹¼qà!E¾œ´Wb”¥KRS’¸RªÅ<&±MËd4 dzûŸžÒÖC"7ÝK1ÚxR¦èÕýE©. ‰‘ƲCûTylD Ï?îÔÕC)£S‹º‡ä…›^ƒÍ‘¡§Ò}'Ä véä1J€’ˆoßEú Éhš†ˆÒ>ª>N¢Gffø# »vI“ûoiá»ÏqQ²‚"™.ìG1J€n–^z$Á§´‘­´b±p R}2äîë·òíç‹°(Gò ÉÏb”àø£²­CÄû£P^ÎóµÚèsp¦\sqSßÎD¦ˆ)­…‡´&Jߨ”7àzìYÖçÍHg)!e€Þ÷¦ÄhMˆÒÉý²£ryptTi-ŨqüóöÕ2ý;6ä$‡'Pâó¾ôz,Y΄4„ý³­œ? îêßmìÙ8E¢ó@*ºX:‹Š ¹!F<»Îˆ§„ÏýÌ}[K玩|²ROÎ8)Ç1ÂöÚs/;¿ÅQŠ€§´&2‚ä†%€(™*ôÀ­-dßnéB©H£8ãd3©Ãÿó?1J€äVŠRã<¤#gÄ(ÁcÏ­“'˜9Œ¼ýÚærØ™|Ò²>4 üßm«å³5g̘¥“Â+JË‚´”bäœ%@Å“Òúù—5•þ}ؾ‚Ú¸ôìüÜÙbè˜49À;|rdKÙs7æ*‘ðƒ`!Sbôª.ìPG²Úá²€¦<%,r84°é • )ð‚dRŒ¦}n¦3DnØÍ«ÉˆáÍ¥÷AÌU"á墿51VÕV|Ê\ˆ’‰Š.%DØUl,H (FîˆQ‚¯¿/• ®Y)o¾g&žäÿ.i*'ÞÌnbïÓ•ž`ÔhÑ<Ù \:ÁÐÜ~áÕ«ÚŠiL• ¨(mpˆR‚*HA£sç—Ë3ã ¤²RŒc\¨«È¦y1y|LøÂÂÜ7ò©ŸËÄ)E2kv™Däd±!¦ê¶yÍ]Òä¿û!}ÂÍv ás:¢T®þÆûæLiÁ¦‚ô ÅÈ]1J°ru¥<ôŒ=1MˆÒ)ÇåHfF’<ðd8û0Ú#Ó²w¦ˤw åǹå5’’ÄòÂþU¿‰` HË𢢶)Qúç¥M¥²¢ÚõçY™W“‡„;Ù÷å¤Ã$F ÐPíÞÇó¥¢²ÚjÌç4Ç™-ɱ$ymr¡ü¾Èxë ª}¿¾‡dZöú»EV¨î¯¿‡_˜ DÇ‘-—œå¬UVú«Áß`]T =%רûß3*ßš7^aJ”†_ÙLÄÃçZ=øuܮއ‘ô´ô'ñyèwÅhS.0\@ñ†ÿ®‘§ûã»N|jÉÊ4“;õÚÛ…V˜ý‚Åá ?¦w–\ynž‘÷>é¼å²6¿ÊßÕHˆÆýpñ™MŒ,Hoö¿(¬ö~‘|à 7XòÌø‚£ô¥ÅÈ[¾šU*ÉÉIÒu—4#ïí­õ…Õ2Ç[[»tJ•vmRŒ¼wçŽi–÷“eT:î‘y¼À+Î3W\· °Jžç}Ûl,T.8#ÏJú6ÅeÃWÉŒY¥¾¹¶_~S*¹91½/œ½÷9 ÓÚñËîH üSoSAê®/ûSŒ¼ç›ʤ¤´Zö6EÖ½[º%zø9^R-IrðþFF½¹±e™‘“EK+¤°¨Z‚—mG—µlžlìç|6³ÔñÜ»ú²{ç4ùÛÀ\9ª—ÑÅ–.<#?> MŠÒ/¿UX÷€ÏÀ~å¿¿ÙX¶Ó—~#ðÃÏåòÇÊ*鱯™6<°&¹1™ñ]©ãÉuÛi§Ÿ”ëÊÏÚuç4+--5I~[Xa ~èÙ=ÃÚÊAv«–ÉÆ÷—,«ôìû¢ Î o&Û·7sœê ÷=‘/EÅþ½þ¦D }Ô°3²ØÃë[³ÔFÕ$H^?›bäŽ t¸¡$Wlkaµ½ru•¬Zãþ–„‹›]pwÓÕ÷Àþ9VÝ¿Ÿç•K¹OcöÛ+].:#Ïj]ЦUŠ+?óÇ_Ê7”·ñT^0²Ž¼Ÿ‡žF´©)Q³Äg¢ôžÚk5 öð®ñ˧Dä¶Z¢*F 0q>š^"Iú?”×wšŽÛ§ZäËWVʯóÝwçñÌk’¬âèn€'¶…­K|†JŸÜŸûì‘.œÑDΘ+m[§¸ú³Ÿxq½ÌûÝý9€Å*/`¡` 4˰|<ˆ’‰{Ãg¢4Fí“Äo6DÙÞƒ–¢„Ck¯?¡©h“;\+S> fBòž{jcǬEÉKë­D]·‰ÅÔ>+ÏèwÛOëwóZ¡TTx³•ÓµKš è“eyÁ¸I…òØsî{»î”f]w“¥®ð½ðý‚Š©"'º8Ž‰Þø‹‡÷’i·CÅhÄÃk­äÉ ‚Ìë/¾6ãÆ'Øc×të\éÛÙe®z XáÆÈËußSJÐM¿;¶Ç0ÎX=V¹´ƒ¹‹~ß³7±<„í¼ùî($úÈ3î‹ÑQ‡Ùm#vØÎÜ÷¾ýþµžæ9Áô¯ÍyJßè½ÞØÖäZµüÚ<¤»ôåïa£€—fÿgΕSÏ1ú3®¾i•'QxÈ9Aî‰×àp­°¿÷í4FŽÊ—7êq&Ñr«dk~ûá³ßýh¾¼ù¾7ç)8ŸCä I¼ Ê¡(5˜!j/Ô*HqQúL\ªØ@1rÙÄXš“ߘûÏ·„É+¶mbE¢ùÅË@Äfm“Ÿ¼;}ã½"O $ó·“sl3m̽£óeÒ”"‰¦DéükVʯó]Y|vÁí´%Aºß•b‘×4v›±± ,ÔuW63þsþuÇj+5Š˜¥ó†­”y ŒŠ"ëš«UmI‹¬D1 ¨ŽŠá&Ab1<¯káù%RÍoàÌoüÞ Àö¶éL‚à…ç^)Uk*#}½*JSÞÛº¯êlI‡ô+Å(¸¸µ2E™™'x¿g\žþ}³­JØQÇM*ð´êD{õ^?2Ûx’³W‰¼~$;+I†žÒ$h¢t“ Òõ[¤¸(ý¡/-)FÁeÛmRä¤cÌ?P¬¢´b•÷«T¯«x…×U&`®aµî†èEwWŠ’³ÓEéõº ÒDü£àƒ¶ÖnÜõH¾çжý‚ffPŸmÌkRZæ­¥§'Y‰®â0Íu#Öȧ_•ðÆvY”N»äYælE‡­UVl*H*”à™ñíô¥S? œ'M1ò‚¯¾-•² ‘½v7{ÈÞcŸ ÉÊŒÉ7?”J•Ç•ý—.¯”©Ÿ•XÑpH²5ÕÐ+P]aøV[Å7½. oôÑ;[X}§L‚ó¢›F®ñEcI¿‚ÊõßÿT&9Y1Ç 1§¦$ÉüEŽõûQÅhD\kþôµÝ©:õEpÀnBŒÊJ1ª/ê*záâ ¹ñj³çJ¨€Ý|Ï™ö™÷«X<°aKTðCä[c¯ãËoÊŸ´zj®UQÃ4^&g ª¶'=¥Ä{½8±À‰ÚwµêKm[vªµð+Fx@9×ù0A¥Eódr|Ž+UµÇêÄEÐCµú a53&œ5 à#|Ûã"˜Ø¯t+ˆd¿=Í j;íF®[‚kn]-3f•ò† Ÿ(µSAZT_Aú—¾ÜB1 'G–%WŸçÊÏ ÷ñ×KyyudÇ >¼öv¡Uuà÷Eþ"l{"PÄî¾øþ£Ô». H›ù¨ŠÒè1ër¦4OÅhÇt¦Î‚t€¾|J1 /ڥȱ}³]kŒçÇ ”]:úð,¹ò\ï… }{p£ÿú»îSRì:·jñ¡‚6HhEé1¤ó"H(´ºR­)Å(Ü ÿú¹µúåÍBY²Ü_Ùõ&p½ä,÷{1¡ò6*_üè³²#Í”a6uíç1¤Û­[%˳÷míøû6@”© «· Åÿñ+úr<Å(üÀK¸ê<÷¼„ÑcÖ[Qc~„„âóO7/LS?-¶ÎˆfÍöW9Ô ú‚QWNS‡IÑØ–u. "yÔ{ùÝ:§É=7nå†(=§btz úRoAB:û µ<ŠQtÙfëd9¹_ŽñVÔ›âç€ áeX;ËÿP””*H/5ZâÿâÆO6ULñ¡§×Y¹)Äÿ¸Ñ‘¶&ü"!ò*ñ¤ ïÊü…¼%ôK»ÿ‰|Dñ Ü;ß)A¬b4Æ„±ÙVðØ®mŠw„{ááóñô«¬kœmYˆŽ8$K®¾Ð› £ž_oØ%¥>-^Ø«GfûZ´¥þ‚´dyå‘mZ%¿E1"ƒÆhè_© aþÉ—ÛüEòÝe–ý4¯\–,«p̓j–“wLµÎ‚öÜ-]:wLõÝø¼ðj<ýÒz©dÌE©þ¢„H§u¦éHµ:ç#QŒÈ¦ô98S®¹¸©ï?ç,'äÒ,VqZ²¬R–,¯µêI5Ä›B‘ÚæMcÒ¢Y²´m“,íZ§Hû¶)V¥í­[$ûv €Œz„ÖÒQB© ›û$Ü=uÊx£‘ÚÀÙšß;$7pŸ^Bþú*+z¯´¬ZÊ+ìû'%9Éú^‰ßgeĬB¦YYIVŽP@”âÄ)…Ö+!¥cÔÞ4)Hàvµÿ£‘ÆÏáÔãr¬.¥ÄÜõH¾¼ýø‰#;)XÙ¤ÕæÔö—¬aEêK^nLNî—-ƒ£0y&L. th-0yj±LšRhÕñ#Äî|wlëÿ«ÏਠÅßð}9”ׂ¸  úõÎ’Sç9Ó¦ èé›ïÉÚ|îË×Àd뤂4ÏkA:IìŒ\B\'%Y¤ûžÒ÷LéÙ=º^Ó´ÏK¬^PßüPÊm9âUŒŽm€~üù~vàƒ¼¦¶@­=¯ q›ŠJ‘O¿*± ùL½Ì´zíÖ9-ôß}Öì2yï“bëlh}½!â)9ñ&öâ*wµ¾Œà5!~a«fÉrÐ~rðþV¡ÐˆÐe–øNû¬DV¬bÌ6ñ³ÕvS©Þbâø–]üMï·PúÄw ||ï®i²ßž²o·t+Ï)H`;îój3Ké ?ržŠÑ¨j‡ó‚ãûÄnUKˆ¯i·mŠì¡^ÓîjðžZn埊Û(Ü:ç—rë,hæ÷e2ï÷rž ?³R­½ R±‚”âà©v¡ÃïIˆã,\\aÙëïÚEDóšÄd§ReÇ©ÒiûTi×&Y¶m•"ééIF?ÇÒ啲@?Çïj?͵{1-ûƒÛp$PÜßP1ª Ç<¤¸Ú='v–.!A-š'K“Ü$kÛÝos²’,¡JMI²vSãË/T>À­”w¶ŠKª­?+)«–ÒÒjY§ž¶ÛÖ©!{åêJ+ ƒƒò<Û© ­n„fóÀÔN…ÐñZ‘ ƒí3!¤FF5FŒjÂÑÓ]ýp³¤e !„’2±i%éðKœ~OTyý׋BBË“bw}pñ¯¨m÷>¯!„„’ µ[L¼±©„ŒyÍ!$” xmž‰76%Hزû€×BBçÝjêÍM¦¬ßÀkG!¡âyµ¹A$xISxý!$ ²ÎèqŒé¢^ÿTcáB >¨W÷[é+µ—y !$РÎÖ­¦ˆe‡‹}F!$˜ xöÒ0Òµ§y= !$¬»,œqÜj /©×•B’`ׄIàê±£,!„‹_Ôt뇹Ù:‚´„×—BÃ5jåa$Diü›×—BÁ4µWÝü1—¿ ‚¾âu&„_ƒö‘W¸ýCÝ$t;»(þJ!ÄŸ<¦öMØ |©ö¯7!„ø’bWÙq˜G__v-¯;!„øÏžÏ^ ø_¼î„â+¾w°b~ñGÔ>çõ'„_€o狇gü^ ¾ôÂ:w„âFª}ëåˆy<øòwsBˆ§ÌÃ½Ž‚ H„ß8!Ä3Žãy½Q?*8œ+läG!^ðœÚ[~ø 1Ÿ È{b'bBqej—ûåÃÄ|40ÃÔp~Bˆk`«n5鯬nÝBˆ[¼(.O ’ wÔæÀßÕÎã<"„Fñ†Ú}~ÿ± äx±[UB©?ñ>Sã È€^¥ö5ç!„Ô } V[„A*V;Y-Ÿó‹Bê̵jåÃÆ4°¿ªýMXZˆBêÊý7H8°ž vç!„l–_ÔÎ Ú>À† úç!„Ԫݜ(<⢠Uª"vH8!„ÿGßñÃÇ:è+ÔŽgBˆܪörP?|,Àÿ­$¶žB\àuµëƒüb¿/ýBˆ`‹î4µ* ’·Ü¢ö<ç#!$¢àãh Ažf)ÑlêsÎKBHÄÀ9zµEaø2±\”U 6—ó“°*vÿ¸P ÑÅÛzTü•BÂÎ?ÕÆ„é ÅBvæÆÝW†ƒBÂÌÃjw„íKÅBx¡à¾"q¶’s–BÄui¿X,¤l¢Ú%Â%BH¸x_ì ®P.¸c!¾phê÷OÎ_BHH˜®v‚ØA\¡$ò ˆ=Ö;9 !g¶Z? yO¸X.$ªƒ?ÊùL (($}„D ‚8 ‚„s¤‹…Õ!Á ¯½%$‰¯$¢$û8ÎoBH@Xªv¸D(á?¡‹ QBñÁW8Ï !>gE\Œ~ŽÒ—ŽEì"—‹£4‘óâs1ú1j_<Á‹É“é)B|Èrµ^ÐŽ¯¤†‹Ò µ±œÿ„Ÿ°DíPµ¢:±_ü µ!jÏñ> „xÌBµCÔæDybŸt8S˜§DñDÑ,lŸyAJˆÒ…Âʹ„ß3Kí µù R$Ï¢¢Ã?„Y !îð©ØgFË8¤š¡vž°u!Ä,o«õQ[á  mŽÑjÇ«r(!xRm€°‘(©ŽL;1íÐ !Nr³Ú9b'é RAçÙÂÈBHãÁ1Ž®žSSÄèµ9„‚FǨâPPËJ±Ë¿3–R_~S;Pm2‡‚‚ä¥j§‹Ýî6!¤.|¦¶¿D¸É,·«¨VÀ¡ „l†§Ä.’ú‡‚‚d’WÅ>Wb°!dSP#ó2µ³ÄÞY!$ã|¯Ö]ìä6BHA²ëý ’Û ÃºŸØÛx›ÃAHà€'t•Øõ,p8(HaÑwû¨Ý+ x $(|­¶·ÚHµ*)L«]!ö6Ëâ_ÊÔnPÛO¸³AA 9Ø‹îªö±ë^BüÃ'bŸÝ(<û¥ EÈ[ºFìÐÑ™B¡ÖEm,‡ƒ‚Dj¿QžTÛYí!aÐ!Nƒ3[äž#våBA"[7ÊÅb=|Äá ¤Ñ`×á|± ¢~Îá  ‘úƒ ‡CÔNf‰ÒSt·Z'µÇ„A $Ò(°7F­³Úµjk9$„Ô ÔCôÜßyßPˆ³ ,üŽøJçKLÚ#¤f¾Pë%venVE¡ ƒ`/çKˆBs0nAbƒ„ÖÕP›Êá  ÷ÀÊí“Qæäu‰0¿«)vI®W„Œ)HÄ3f©õ¯ ßâp@4ËÛIíi±Û½ ñe=ZìRDop8Hˆ™/v7ÎSÑN¼ŒCBA"þdºZ?±ó-°}Á3&~;¡Ñc"  h ˆ^?<Λ—|‘•˜Ë(ùÃS  ðªr¨Úöj#„ù$À³Sí0±·¡éíSHˆX¢öµ¶b‡ÿÌ!!>¤Pì<»]ÔŽ»¡%¡ ‘ˆÜðX…2:‰xÍ/b÷ã‚)¤p"KbKÖ^í,±[_´çЗ(U¯6Zmš0ˆ‡€ˆÏq£ØçLÇ~=މ)¾S»B­ØÉÝS)F„©Ékz+n­ÄÎ~G˜m' i$jãâÞÐgRI‡\ÂQ ›#j©!v±ÊfR¶âPsñ%µuBA"N‘®v”Ú)b—+Êä@Z¦¼(vt'!u‚[v¤>àúµ¸åŠ}Þtbü5›ÃYpþƒ–8{|Ym‡„Pˆ›¬W7xJG¨÷ ZrxBO…Ú‡j“ÄŽ”[Ä!!$âŠ7òœ’ÅάG==ä9uåð„ôâz[ìv'xÍç'á1 ûªõQ;œÞS @ýCT‘Ÿ7œ 1‰šPH(@ÞÛj½ÕVë©Ö”Ãâ 6_‹½÷¾ØrBA"QÛ{]ãâ„ÐòýÕ¶å°¸ÊHÍTûXí£øëz ¡ bAÂ:àvWë¦Ö„ÃÒh„0Gm†ØÛp°ïãN‰ºÌQµÔöŠ }qXs¯v€ú£Ú7boÁáåzŠ84ÄÏ0ÊŽøä¸ü·—6úóܸ0íªÖYmgµã–‘qA¨õܸ͉{ 3Z«nÔIDATxÚìÝxåÇñfv¥{RJ7”²DöÞî‰{ýÁDq‹Á=qà@T¶ ÈFdÊn ¥tïÝfýß-Í]Ú¦»”ïçéÃS®ÉÝåÍ]r¿{—¢×à÷œç%EB@ B@ B@ B@ B@ B@ !€@ „!€@ „!€@ „!€@ „!€@ „!€@ @ B@ B@ B@ B@ B@ B „!€@ „!€@ „!€@ „!€@ „!€@ „!B@ B@ B@ B@ B@ B@ !€@ „!€@ „!€@ „!€@ „!€@ „!€@ @ B@ B@ B@ B@ B@ B „!€@ „!€@ „!€@ „!€@ „!€@ „!B@ B@ B@ B@ B@ B@ !€@ „!€@ „!€@ „!€@ „!€@ „!€@ @ B@ ç5E4…B­T¹*Uî ¥³Rí®Tº*”…B£PjÅŸ ¥xˆx“Y<Öl6›œœ f“ÁlÖ›Må&S™ÉXl2–œù·H,¡<@ ZtT©=UoµÆG©Ö‰ßEösàIÿ89©ìüÝl6ˆLh4õ¹Ö±„²h~*µ‡Zë/~T_¥ÊµáS¦B­R{‰'—PK>4é†\Cy–¡<ÃPžít¦† M˜5>ç`sJãÝ”ÛU(5jm€øqrêh2ëËÒ e©ú²t’!„@ãRªÜµ.m5.!Mœ«Ø7g·Hñs&¦èKNôÙ¼G  }nhÝÂ5.m[dLÉ0Züõ9å%‰âÇl6ò–€@Ô—Ö5ÜÙ-²%T ÖH¥ñqÕø8ëbË‹O–—œ0Kxû@ êÂÙ-Jü(Õºsk·•J]¬³{LyqBYq¼ÉXÌ[ !à(­k˜‹{‡s. V¦P¨D&ÔºE–Ç•g2CšÎm€‹G'µÆ·u¼ E²uv /-<*’!ï/„€–––]´®íZßKS(]=»i]CK þ1”gò^€@œ¥u wõèªPjZñkTi|t¾ËŠJ 0 )„€“RåâêyÆ9ørõìîìuÞ¾|g÷•Ƨ8oóRÀJIà¼8Е.:ßAçs´Rký<ü‡Ÿ?Íe@ ÄùN­ñ)Hd!ŠÂÉ2/…ÚݧŸ³{ EšŒ¢•Ó¸´u÷îC9H¸ztUªÜJò÷Qç3jÑš9»Ç«,·(wŸ~”h…\t\=ºRÕÐ8ë|9)ø ­ˆˆ‚.ºXÊ¡F–af|+*Š€@´’4È )ŽSi¼u¾ƒ©' ç<ΤÁÚgB/‘ @ Î]" º¸w ê” ½u¾(!pNÒº„2ŠL}¨µnÞ½)!pŽQi|3 ª]t(!pÎP(µ4wl(.ºX )!pnÐù P(Ô”CCqóî­R{PB Å§Ï T/Ê¡a¹ûô§„@‹¦q ѺEP ÿÑ ru÷îC9J¡Ôº3L#†í¶Z×v”h‰Ü½ûr 7*7¯ž ¥3åÐZ1ÎUZ×pµÖŸrhd wï>…Ù›(Æîpõå]Õj妭'?ú|'B ÉcŠRëæuåПZ­KhyiE@èß7ìù§FXï Õ¨æ}´b€sÍípNró¼P¤BÊ¡i¸z]("8å@¸|b§Êÿ½þªnj5Ÿp£†çàQ«õÓ¸´¡šŒB¡róè^œ¿ç|x±;ôìÑ&/¿lùoGZàî]Ô;´CŒq‰~ÉŠCz½©¥í^ÿ¾aáÞ's·lOäÄi­T*››q&³ÙÅY]h(§d€@4‘3ÕƒhRZ·ˆÒ¢c&cQë~™×^Ñõ±iƒ¬¿_wU·»ø¥´ÔÐrvïÎ[zÝ{g_ëï“®î~ÇÔÅùùe-g÷&ßÑ÷®[{Yÿá篽ý''N«¤7ØÜ‰0èM"R,pεdâ¦Të(‡fÈá­½ÓfD˜wEt:Ó9jÆ#CZÎîé*Ò uo§Méßrv/*§" Z£õ‘œ5æêÑ…Bhjm€JãÓŠ_`ßÞ¡’%ãGwðôl)³nŒÕA²dÌð¦¥|†_u™ôÄÐ/¬U'c®»²Ûà|&„@Ssv‹bZ¼fäæÙ½¿ºÄSyò…£†Å´Ý94Zz:8«/îÓRB—¼ vïMn}É•—t^ðÑÕÓøæKãÞzy¼RÉÐV!Є\t)„f¤Òø¨5¾­õÕíØ•”•],Y8aLlKØ·vm½bÛÛ™usôˆ‘Wûö õõq­¼$¿ lõº¸Vv„xèœgzóõ6]%»w Ò¥¦6ï¾ ewù€~aJ¥Bìyóîž<­^wÜh4µ²#ÄÏ×U²$¼7ŸÌ!ÐTQDÛÂ÷PD>½Þœk*,6‰¤¨êØÞ¹]ˆ:Ð_¥V;©þ‹}â:Ù`0§¦O¥“ iéÆÒr³§Néí©káÃõ©µâÅx ­ò[ºêˆ$ cG¶ÿâ›ÝÍ»cÃÛ ÅCçÜ·Wè¶§šqß4åpY^]¾êHë;<ŒFéÉYÒ’¡€@ˆÖLã¨R»µÌ°$r Ø±Ü|SvŽÑÇKÕ³›sŸ œ{tÖ¶Òù«ªnrªñp\ùîå;÷”:V^Xd ðSyè,m¹[l2t÷Ꟶ«Ufñ Ùñ'r¢"lÆÎ?ªCóÂÀ]×ÎAUýuôð˜æ „ƒúG¸¹ilŽê”üýÓøÔ€@4½S´5wµ´(h29¥¦KJÍÚkn¾J7|€k·Nµh׬ vÏr2;mßS¶öÏ’µ›JŽ'è==•¾ªø’•J§ô¼6ÚÖ{¤-]yøÁ{/®¼$*ÒWüˆ¬Ø\»4rXt5:(röëë›±ÕèY{Ñå«ò‘À¹‚AepèÙ£m›6Áñ' *U Š‚ÂéTcâiÃ…Ý´¯=ãûýAÞåU«4h»F§‹.tžñ€÷Î~Ü·}„F¼Þ´ £Ø¢Åô0i°¤Ä|*Ùxåe·Öƒm嚣Ždž¦4ºÚ@èéai5Ú\ûæ¡sÐ/\²pÅoB„@Ãyþ©á¿¡n ™PÄ3‘‹2²Œ ‰†žÝœç¾à÷ÕÜÀ«Æ»»»5LnóóUÝx¥î‡ƒæÌôí¥9– ÏÌ6Š-6{,´¤ÁRsÂ)ÃëÏøÍxø‚°P¯Vy°efïÚ#/aܨö͵?Õ·µ6¨Ù¦€14J­¶ù9x$ãÔé<>µ  £CŒp.8PõͼÀ¨0k&l¶l¤R:™ׇ«ß|ÎïëwÆ w«þ)åzóéTÃ?GÊwí+û{¿åçÀár±D¯7WŸ¾®çþãGA¯=í >§ÛmÆ0üoL4̸ßû®<Ä’‰ãZí KV–§²î]ƒ›eg†È&@OJΗ àYÕ¤M@>¾è’凸ÔàBB´tcGþ[9ãï«úf~àSÓãOê£Ã5c“vš²vç‹O4xz(§Oñ¾s’‡«K•¹T¢}ÓÂ1¶aUز=1/¿”.Î!4E‹æééìQy‰5F†©ãNÔß„ÒÚsO„7‘â^˜îûñþU¥Ám—=:+놩éoœw4Aï륊ŽÐ´m£öñRº8+4…FýßF!–ˆå¡mÔâ1:wÅžå³ßιvrÚÌ99{–Û]¿ØîG¯Ì™éç¡SÓ›L–¨ÖdiðIÛ4huQóeÒØ–¬¶{ôôp¾¸oXï†H¡’%lŒÿ®ßtB²|hst#?Z:5è’•‡ùÔ€@4˜Œ,åÜOó% E&üv¾¥?acgB•Ê©¸Ä|,A?°¯ËwÝ|µÎîÃþÚ[6uFægüò[±‹‹¢}”ÆßG%žk­M‘²´Ìœ–a<™dÁRü+~)Ë5ÅcDD PÅDjDÆ[ðcÁ-¤O!{ÿ!û±ðª î?}tÅx÷§ôÙ¹¦FíUx6 Þç=U–Ó3+ÖµÚº m;OÉkº&Žmê@(_tí†3ðÏÉ<¾>®MÜË1<Ì»CŒ_å%ÅÅú›øÔ€@4\$Ó¼þ~îÜOóä™ð‘ Ã-™°‘B‘Xmrª1+ÇøÐÝ^Ÿ¿ ò§ü1§’ O½š}˃«7”ú«Äþ8k&ÓÙ@UXlŽ?i¿êçrÏÍžÓïõÿîç"V.–™¬µ|æ3ÉÐÍUÑ>Rãå©üiEÑM÷§?7''5ÃNÃPñÚßœé÷ò _ñ{Ü C# @j“o÷”u㤩éÿ×µÖO¼¿ý~\²pè H—¦kfïéé|aw›z»ö$çä–ˆ_ ˶ý%Œ~Tµ³S4¸q#;ÈÂjœ^oâS €s }Ñ¢¹ë#=Ô¯¿o „Üé%Í„ó¬cÌDkÀ>uÖñcŽ'èCÛ¨ŸŸî;äb»ûüû‚¿.HM7„·U;;[r M,2'§Ú«ï½Õóê îílε¤âeE‹W‰Ó· Tyz(­Ïÿj5Š˜uI‰ù‹ï Öl,¹ãz;'yÈ·~Ý¥º>=œgÎÉY·©$:Bãâ|6ˆ6`||ªý4xý½é‰§ ±1ÁY)³Yß*½%+_{e×ÊK´ÕБ«~?Ö4;0|p”$ê¯^w6£®øíhÛ&¬#†FÏywsÓBÙTËVá# €s5„hÑǧRí+¢Nd;K&|§êzœŸPd¡òrsÜIà‹\ú$ÈnbÈÈ2©h6±¥ÿ¥A±{U¥AË >&¥ZëÛZ¾ÃGí̧ה­FG—Ù²îL{Q«õ›ÊËmî‚ú»7Y«Ñ.Û†Øé™EM?ª ¢5Si¼J­HG..ŠÈ0õïçÍûÜn †Ê„b ù¦„S†»&y|ñv€X¹ü1Ÿ.,˜45}Ë_e"°yy(•¢`i™ˆ‚– o¿Þã»÷g<àݶMu•ð~ªG'{‹X8å6O£Ñ#E˜¬ˆ…bÍÞ^ÊQšý‡Êoy0ýµ÷ríq9}Š×ü—üµŠ¸“úú7µ¦AQ˜O±“3³7Lù/ ­ï‘o+>—ÿ&­òº¨w;/O—&Ø´ØJŸž6cöT´µ*-5lÞžXc†l$dÃɬ\}”,ÎE4E >:5>Ö_,™ðL=¡E"ïH1úù(¿™xC½ÛŽªUŠÓ©“Éüö,¿+ǻ˖a|òåì5KBÛ¨B‚T²Ö &¥|½U7_­»åj]L¤Æñí¨Dúºv¢û‚E…Ë~/NI0†«Ü\-µŽÖÖV]Tb~÷³|‘BŸÔ§{g餅c‡¹uŒÑ>ølÖþÃe‘í4bê6;¿i0Ñ0}ª×ýwJÓ`VŽñÆ©é'’,…\1á‡ZëÓŠÀe«ŽL¾£oå%"oóÃÏ{ÓCEJ²ýo²¦ª«×f;¸èoÌÝÔØû&vlÔpiÅå ÃB½b¢ü"Â}‚uþ~njµÒh4«T ƒÓ3‹Ò3ŠNfÇ%ä$§ä7åñ ¯1ÎÊ.n ª¯kX¨wÇþþ~îmC<]]Ô:V©T–•—Ï”Xá©ÓùqñY's›wWýÝ££|ÛGûºèÄ®º»kÅç•ØÕâ}rJAfVÑ¡#b?+ßþhί!µ²CŒ×ÎÁ!m—•œZÐ J¼³Q‘âõ ðwÒ¹¸¨Ë9«×³²KRÓ “’óŽÇgÇ'd·üOþˆ0q6ˆS)$ØÃÛËE§sÖjUâT**²¼é)©…©éâ(åo0ÐkB ‘©4Þ¿[ë ÃCÕ¯¾gùÞ•dB븣õÉ„*•Ó‰$½Ht¯=í;°¯* ‘Ÿ›““’nˆÖˆ bë&¬µ‚§’ ÞžÊ.÷i°cL•QP<2ñ´¥W¡»›Z¼È0Í̇}n¸\·à§ÂåkŠ’SÍ"vŠ—,^¸Ñääê¢èÔ^sèxù÷¥?p§çÿn”¦µˆvê_> šölÖ¢EQaj7…±–ßSÖ×wR?ý^ïm»k ¹ù¦›î˰o„MñªÔ⑊3Ãâ´B©i…û¦uëTyá„1±M%IÏd2ÿ¾^:áûŸ[OŠkq¥R±¤M‡¸‚W*ºo}{…úx»V^r<>«A®ó.ê:d@dï CÄ•¥#?znTqÈþôë?¿.?d÷1büúõ “drqi(yبaÑò…ŽH8‘³qˉzWt¤ï þáýú´ëÒ)ÐÕÅ¡›P"·ì;ºy{â–m‰%¥M×û74Äsøè‡õè¬RÕÜ4IìÛ¾i›¶ž\»>NÚ†Ú‡§ö¿ Gˆ¸¬_°p÷Ö§ªðÅ}Û-Š7(°æÑ³Äñ/JuÅê£Çâ²ê¹“=/9$ºoïPKyü?‡ÒŦ[{ìds¤ý· ˆ{Û96À‘w61)o÷Þä[NnÞvÒñ4Õÿ¢°[o¸ÐÕU³mç©÷>Þî೦þï"ñö‰céÛ÷­ÿ³æûôl;lpTï ÛFE8t£3=£p÷¾” ›NlØ|Bu®ÙpNSôü¥€–ÉÃohåLèô_]ÜÉ$ÃcS¼ï»ÝNƒF‘—j› ­×|GãõÝ:i?~= M f¢o~”÷Á‚|‘ÊÚª ÆÃZå””jOŸ8Òí¦«t]:h«ÚDQ±ù«Ÿ –üVœša ðSMévóU:¯*¿;ÿ9ZþÍO…+Ö‹+2°ÙüoŸH­yù¦Ó©Æñ#Ü^™ákw ~•ÿêü\?_•¯w-&¯?“âN”?:Ùû¡»¥iPlýš{Òví-ë­‘¯³ s­ÑPÐZÂ+/é<ãÑ!’…—\ûuJZ#¾d»víÒÛ+_]mÙžøÀcËå|}öXIt\°pÏܶ6j™<ÿÔˆñ£m†}û½-_¿·Î+ôôtå|ùÄΡ!žu[ÃÑ㙋~ùgéªÃ5szå¥g°ÿ`Z= üÙ'†]:®cÅo»wñ*Ö9x@Ä­“.ìÑ­.=rE‚ýrឃ‡ÓëðÜუn¸¶ûÝÚÔí®ù#ná{÷ý“æÔø”JÅØ‘í¯º´KÝJÉš¦–­:òýâ5V³wŠ øê£«+þûó²ƒ/¾^ó‰óÈý&]ݽâ¿÷>´dçß§«z°8寻²[—Nu{-â%ü²ìÐ7?îçWn8G©BÂ'P h‰÷**. …R’L´…»›rÅÚbFÑ÷BçÊusUŽî¶ns‰È„~>JGšMZëúâOê‡öwùtN€Ÿ4 ŠvßS™ß,. Vûzí1(²ÙécT„ú­™~·\íèg¿ÿ¢Ht_|_0sNÎ/«ŠM&'O"7ß´vSÉïKŠ‹ÍÚk´Z;µ…bm#¹^ÜÛ%#Ûô÷þòŠà'^‘‹³Â×[õ÷òåk‹»ÆjÛK+ù{÷p Q¯\WRZjöòP™(¥Â©¬Ü)î¤þá{¼¾ÇN¼í¡Œm»JÛGiìdj(Ï4µÞ@xêtÞ-“.TØVåå—îÞ›Òx9,zÄ›6™Ÿ~µëèq{5f³dòú€÷…‹ö5Þ¾i5*qa­ÑØðϾ¸¶¤ÔP·µÝ}{Ÿ—ž5ðâpOç:¯Û þÇt,.Ñ>šY]*x|˜xpÅÛ¶ñXôë?•àì¬þòƒ+ÅõncZâ2÷¯Ýɵ½³pÙ„N¯ÌsÅÄN!m<ë³uWM—Ž×\Þµmˆgâ©ÜœÜÒZŸQg«pËÊŒß.Ú'â¾>®O<˜ñù÷v®&¯ïþÝûž:eÂ)½#…P¦¯TÿÐÿ<‘¥AáÎG2Öm*i©1Wq¡R{´âã°°¨|Ó¶“’…ãFuhÔŽÑÞö˜7oØtÂî#-­Fõ6F!Á;4Þ¾ !®~*/ùk÷é윺t÷;²ý/ o¸ó–^âÒ°AöM\ž>=}è'ó.ÂáO yq¤å[ƒ ¬Å5è…ÝÛ|ùÁUÏ<6´Îõ¨vYš@yýý÷ôkØ—6|HÔ¢¯&‰•7Ô /×qñ×7 µ­¯M ”c Yæï}a[QbÏë¿·7\Óýû/®wð8¼eÒß~zMŸžm¤ ®¼¤ó¢××¹š±zÝ:}þþ•â,Ÿ3 ²B‘︹×âon2°ÊwÖÅYz%àêZCi•R!„ÙÝÍ·ÌÔÿ]ôÑÜ˺Úv ¨3»ö¡©ýÅ ÛµæïD´Vô!DK „j·ªþdÍ„gƘIéÞ[lǘñµdÂI5õ'¬˜joÊ­^3°ÓUcÍÆ’Gfe‰§wn¯5Í•ëůٹƩ·y{êì\8 æ…¿}ÿká#å¾ÞªÑñÜŠº5kûOo/¥·2+Û4ûíœ_V]©îúËÜE\”¯í•~ãoJ)*6‹—\±PDÓ¶ÁªÜ<óÌ7rÄK˜õ¨ä²ö‚.Úoß ¼ý¡Œc úèpu»vÓ`¹Þ2ãâ´ÿy>:ÙN!Üõh†(‡N1–—`®2º»·îCqéŠÃƒûGT^æåw<>«16'ÒÑÅ}ÛU^²í¯S…ö["•–6m=9|°Í%ì°A‘‡6V7Bù%þ’‡k»­VõìãÃD ¬þa"ë&ÎÏÊ./_¼RÞÜ\Õ:?×jºu‰Ká…Ÿ]ûú;›¾_¼_þW½m·¥rY=Cq±þ«ïöÜ|ý}\edmÙîh%Ò}w÷»íÆ «Ln^irjARR^~aY~A™øHðôpöör±ŒJâ©«6ußzÃ…"ê¿ùrWmwI|†¦ÊQß`[‡6nTûžYÅ7ŽYœìÇâ²Äžç‰6˜<<´ž:ç˜h?ñQ`ÿPŒŠðùöÓk|lù–‰Õ옼veyù¥ñ'rĦssK,ï©Bááá,ÞÖèHßp±iûŸ½b—>™wùÌ—ÖÉÇI®×Ûz{ñÎÖø°Ä¤?7__×vm½ªzŠˆ—s^ûÃ⯽ó§ÝÏÊÿ¦.òâûÊ`û£mûggõ[/ëÛ+´ª5ˆbO<•+ÔÂÂò¢b½JõoÉG†û´ õª&òõìòÝç×>4cåßLÃ!ÐPåVÍ_­™0,Dýʼ\ñÙï­²L8¿º9ë-ñ LɩƇïözØ^µØW‹ _š›ëêêÔ&HUÑiðì—Øº³¢c´›”ßýZ¸ð—¢}ËDäkf¬Q»Í,­±Ð×Géç£LJ6<ýZöK ¯¿L7ér$ÚéÜ--c—¯-–´/ÊËSáæ¦ùøÛ‚ø“ú·gùùÛ6[m¢þùÓ ‡žËZ½¾¤Ã™p$™Pq& ŠÄøÀžÓﵓïžžñÛú’Ž" :U7l©RåÚºÅ[N•K®§'Ž}û½-±¹þ}ÛIÚ+®^{¼šÇ/[uDG ‹~ÿÓ±oâzh@¿0I Z·1¾V+ײs^WM5×î})ÛvžÚ»?õDbNfV±½»9 ±’®‚úôlÛ¿_˜Ý¨3ýÁí£ýf¿¾¾/ó÷·Š ñ‹û†‰«@Ó§¿I\Ú:«%• É)ùIÉùêZÖ(ª5ª“‰9ï²Cl¥Æûû¹½öü˜jf˜ŵiëÉ=ûSŽÏ*.ÑWõÆuˆñïÛ«­H}U%.q¥ûÑÜËÞûdÇg_íªÏA2ãÑ!W^ÒY¾üèñ¬ßÿ8¾}WÒÁÃéÕ|žˆã‚îm† ЬªÊhò}E{s~Cž}UõÝù÷é5ëŽoÝqªª–½âPìÑ5xø¨ £cE^•üU|ÆÎ}}ÂýÓ—U5€Í{o^b7“ëß÷ûqâm­ªs¦Z­›¥$vÞîÈF³f W)KV®ù¸ºh^Ÿ=¦_ŸvU= ádŽ8gwìJ9êt²ý±ÃÚyÇDùŠ• ìf7E_{e׎üzr¥#çE­™m^Η\iwäª[NlØtb×îÓIÉÕ`ÛÞÿ¢ÞíF¶ÛÃÝ]ûÑ;—M{b…81¹–¨_ TÖ3,™ÐõL&œoZM’ -㎾tÃÔ4y&i0+Ç”_`zs¦ßÕíÜa}áíœ÷¿Ìh§ñÐ)ª—Eoû5ýÏý“/gí?\î©SZ§¨±£µÚ-ÀO%~Of¼’ýݯEwÝèqÉH·Ê±P[iâ{I ¨UNÝ:j¶ï.»ìŽ´÷_ñïÞÉæÊØC§ü䀞É\¼¢86Úf: ±~½Á’ï»Ãóñ©vÒà=g¬ü£Ä:hjõ/¤Æwê\g4šÄ•Ùå;U^8vdûF „£eíE«oëŽD*7ãûİ´ŒÂí%Õ§|ýÝ?xç²°Pûõ{¿­=ö˲C5”`©p;•»nC¼(¢!"&Ž‹•´¼ºw þæ“k¸‡–•Ðh”_~x•|Qq*}ûã^§9r,Sü,X¸[¼„[n¸ÀnÝ·_ËÝ‹6ò˜Ï@ƒ]uSh™ªšs¯œ E„“üÕÏGyfÎzMåþ„â—Œ,SA¡iÞ‹öÓà“/eøUA‡(ÎMQý(’F+{–mÜV¡ ôWUŒ êëƒE&l©+yu~®¤W¡Øª¦›·6F‰77ÏÒ¥pí&;]¹æ¾àýeîÿ)/×ÿ;ë½X›A¤Áøò©·{>yŸ4xï™Ë×:”-kSj Uë>—¬DéïçÖ³GHƒoÈÅE-©‚s…EåÕ`ø(qQ.¯ïªú#ÀÉZ*rÚµWt­ü—̬bñ¾Lyx©ƒi°2ñn>ÿÊw?ð«Ýkô{îè3¨x}Š×:âˆH;"rK"ÙËon¬~PJ¹¢¢òOìºúæïìòùáÛ—ŠRyÉ O”§A±Å«o^øþ§;jUEV\¢§Ï•7-´»Ãï¼:Áî!äxüêã«í¦Áµëã&ÝñÃSÏÿ^«‚²Þb[·1þá'WÞyßÏò°¤[ðÑÕUµ†­ûÅ_¢ó߸D’Åþ_û/ÍÙP‡É$7n9q×}¿¼9o³Ý¿Š7W@ ê~h*gÂ&.°› +2¡Z¤ÁLSq‰éÃWýGq“]YZ2ÕwK c£5ÂTË©õ¦ë;´slÀgó¯‡ç”´‚û]öÜËëê9¹8¤EN{áµõvçO‹mï/2¡ƒAB¥T””êÃüžÚßæZyó‰knùN¼/õÙÏ¿÷&_wÛ÷6Ù©$cöØú G”yf¶‘+òéäüëïøá'ÛgwêtžHÚ¿­=&Y.JòÅgÎŽqzf&Ìö²{"»E MLʫۦÓÒ ÅÓ/=(Ͻ¯ÏS·uzz8‹4XyT^«œÜ’GžZõøÌÕõœtqïþÔ©,s‘í=/?7‘ uî ùµb:ÓÌfÊÿ.D•—¿÷ÉQnõlOñíûnúß"Q,’åâø|}öX.ç@ êN¡pô¾š5¶ Q¿øNî¢eEUdBµˆC™9¦Ò2óǯ í/½ÐÉÉ3Mš’¾~KIL„MÓÊæxá²h®²†°‚Áèäï£l¤~þ­Üw>¶sI1ý^¯g¦ùœJ6ä˜ãõ÷Üìñô4;ið¾§2—¬¶´/u0 þ»ËŠÖtÅš£ÒÐ54ºÁ''Ì!Q®7þáÀ|Ê[¶'J:‰«sgµvÜXÙ%ìŠÕGެ$#«X«U½ùâ8›Käö>$Ê:X”ØâÃ÷ üõ­ù[æ~°­þeõÒÄY)YxA·6Ãê4:ëGs/“§ÁÝûRªŠèu³lÕ‘knùN¬V’ Å)PqÇ¡þ[‰;‘ìqÇM=+/|ôéUõì1[áðÑŒïüQ^µ{QïЪšgB !¡5º¹*ÂÚªžx1[äy&üf^ ŸêtŠáã7ü]$mŒš™mœ4%íHœ¾c{M«øšÑd&²zÎGyO¿j§ÝÝ“<^|Â÷ïýeWŒsö!ùî:ó—UÅcìŒ@SÓ›Õú{#ËÇëÓ¹kö oÀMh4Jɰ [¶%:ÒCÏ`°Ójtä°¾ ‘…èø†ï¿yIå9Á¬>þò¯WÞÜØà7“îüáŸC63ƒ_>±Ó%gz£g÷‡ï\&ï¶xéÁ_^Õ#u–œ’/"´Ý:1çé.**ŸùİðJ7 ¾únOÃú"<ùÜjùlïCEvŽ­ã$+W]ÖåÙLJžýÈ*¾íÞÅEÕ6ÏvœÃòQID!ÿ¹'†I–º`×7?ìm¨‚zöŵòú®'\Ûõ¼ðôHùøC"èþïþ_ê6ÍL5Ò3‹ÄjYfÓþ¼}´ß‹ÏZÆ}­j¨¤Z‰ ÷™ýŒÍ(²ÓžX±þÏ„†}âT’/|Ú ®è@ êœk×9GdBÒÏWùà³YòLèï«útNÀ‚¹úHÓ`ršñºÉéq' 1êê; ¶|¢\œ1šÏ¾Ë¿ý¡ £¬ÙëÍWé~ü(hÖ#vÒàƒÏdþ²²¨iðÌ›ÕúáÉÄܣǥYò>uõ1 _¸››Í}Ç›ÛÉ[ŽÓ€ûî#¹:L<•ë`Íž¸ k'­®üäË]~¶³‘Þ¬üü²['ÿô×n›®M"´´ ñL8™ÓÂ4qÙ*‚õ‡Ÿ¼ôƆÆÛèËon|÷Ci ÕCéŽ<·Sl@å™3_÷Îû[c'Ì`ޝ5ͶªãbÛûWNÝ"4H𨜠å'Ñ—\%ýhû_I >&ðÃOJ7íçë6zD->F‘7jÝ´õ¤üE5ä‘ÿúzÉMâ¸êÞ%¨]ûä†Ьßœ·YRh¯>?fÌð˜†ÝÊ?Xõû±Fz +ד܊n¿±'u Mwpþ— Uv3¡ôú¯Òë&§gå˜"ÛiZG´²&:€ÿÜ^vó¥e5$¼i3³-¯kÝ࿉ð¼ø$Y)ëF¨Ñ(‡ÙÎXgZj í¨‰›·%–”:Zea0˜Dl,lÀ¡eä)E\÷8òDI3-§3S–‰ëï¦yËîºÿ—ü‚³ÝØ¢"}»ÙN$Ø¢hµªY3¤âN$æÖvˆ:ûuù¡+nøöµwþ|êù߯»íû:L÷èS«uEZH<%­/ºbbçú¬sßÔ™¬Oî÷¶šªlμ͵šµÅq~¾S¯·©MíØ!ÀÁ~ÅO>2XÒÀÛh4MyxiÓ„/¾¾¡ò”îþî’a`ê)-½°±o¯ˆ— YÒ6ij{—–ûÉÑ‚)êØÜš ƒüUÏÊúâû½Áþ÷ñKŠþ÷hF™ÞbgêùV Í&§ØhõŽ=e“¦¤:f¿cLz¦ñžÇ2YU¿4xæÝ:ÉܼRùx 5Öh¿¾í$•«×Öî¶üžwÝF’!*$Ø£ò’½ûS«šª»²KÇu i#mýøH#g†ÊŠ‹õ<¶ü\9À¼÷bWi…óÓ—5å>œ:÷Ãâ¿­­Ký‰8p| ª|²@: Ȉ¡õº)3ëÕÆº=QXT.oË}öã7£pñ’ƒ´é²2ƒ¼‹¯#ýŠÃü彅_xm}ƒ÷¬Æý5|_Ùʯ¥ N¢-Û% %ÌBÀáLSW"úz« MßýZX^n¶»î-»J“~*£©éw°IÊïLJ m£Z±¶dçû0;×´fc‰»›R£VÔïå˜Ï“£R^“зW¨¯ký×, oåz㦭‰µZÃŽ]I•kÜδO“ç±:/ ½KW9T£rß=ý$K¾ùa¯¼†§Q8˜¶`áî–hè®»²›dáÛïm©çôMIìmlED,Iëè6AòyÆ$.ÜO&6âùëò*'êüâ›Æ=,‘mú¢Þíj¾+1ùbÉ’CG2lÞ€iöñ™R+~øhFÒ[ïí—,‘ ™êüL•ÊéHœ¾_Oç#€Báôö,¿ïò:tLo0Ö©2Rá¤jÙ“±«”NEæ„DÃ{/ùßrÎîc:Æh–|ä¬UœJ6¨Õõ¨å3›Î“ƒòñò&^£ëÝÅE©THšžnÚzÒñö¢ÿž0&³|м‘õñ\ì›d|£Ñô»l¹C£%QYÝü¶7ý»6÷ƒm™YÅ-üкû¶Þ’%É)ù_¿÷\95Öü×4…,?ùqÞë‚¶u[Ûg_ýݨ{»kÏéü|;soèõ¦e¿5nÊ:p0MR­×±ƒ¿‹Ku€êˆ,|±1G3ªÊÖ§ïAí¸¿ÜÕDû¿3QÒâ:"Ì[/v µŒuÍ"O0tî ùjn` _u¡möc>w\ïq,¾Ü`¨u&T85] ¬C^û–•kJI3¼0ÝçÎ<ªyd×XíWsÔj§ÔtC_‘ù¼ „â2nÝFiW½ cê;Öh¿>í$³0/ÿíhÖ#•tôðúÂ~½Ûy{¹HÂj¡£óßxmÉ’…‹ö•ë›§·î›ó6·äãÊÓÓù² Òqߘ»ù:5~X¼¿É¶µy›´ò\D:¬'-½pÏþ”Fþ"sÚµ7Y¾|ÛÎS×*²Â_ÛŒnâꢉ®4ï¢ÜµWt•,Ù»?õðÑŒf9¢^y«ç¤ÉÍ+mÀék|ßE¦•¥N¨åj].E¤9~ÂÐ%Vóͼ@Ošïç§ûÜs“§È„eåfe-φ&k2ªTÔ®=§Z%Ò±¤Ôüák·]çQã㻈Løn`i©9#ËTÇLh6œ?æ’ÒÖ’bÚ†Ô«e¦¤Ž±¸D¿e{]îŽË[ŠKI÷¿Úš0VÚ^ô×å5·µ;ˆ‚„Íõ®‰¨,Ÿ®å¸l|'É}ŸS§ó6Êæ–l±²²‹%‹7ªýÿ¤J–D„Õ¥ÉèÚõqM°·¦Énݑ؛þG6scdxu%¿·µà»=ÍuP‰¸^·¾¬UiØYk´Ov”F†{;B –q«ÖwO+Òà×ïÚIƒó¿Èà™,ù³žyÈçþ;½Nž2š[x+PÇÒ âtªeœÏÞ =DÚ·-)Å8òº”?·KìÖQ;ÿeÿÂ"SVN]2¡ù| „í>-_aü¨º-£T*†Úv üsË É²ÛjtÈÀº-£Õª† °yzAaÙ¦m5‡Uù§ÛvžjÊq)ä¾j¾KÛ]2®£4<ÿ¸ï:)¶ÿ•Ô”›KN-i¡ò’À@÷:´¤Ø¶³)vÛîÔ—ûí¥Ä&Øt5·‡zt ö÷s«¼¤)«Ôìú´AônÿëTSî|\|¶¬ð=!ШВ bì§Á—½ú^îŸ Ÿz%[þÜǧz¿ñ¬_f¶±nq¨å;Ÿ¨×h_Í ¼èBgéUTšñÆûÒv(»ÿéÌ¿÷K»µŒè:ïEÿ܉³ãz]"i/ZÍÈ„5’ßSU.ŽCFJ:­ù#®ú‘ô­ö “,YóG\ó¾k+וOkÞD„yKÆD1Mòc¬%ÛÿOZoQRßë¡svwÓÖöîÉ‘ã™M°«©²ñx‹Kô'N6ÅÐJ©¶±Yðö®r¬ýÂ%Kš½Ž:>!»¬<Ò¤m_“S $M{ü|]!PËoërÇl­ìÔÞ~KÑŸ–MŸ¬¾ ‹öË ™e§žðšKÜç¿d©"©I]§LؼƒŽ*NJ¥¥"ÃÔß½У³ôÚ()Åpýä´”tc¿^.&“ÓmÓ2D2”|K ¿ßþW’#½4[»•`*Ëv7WÈ„µ»^O-ÈÊnŠQpòòË$÷PRR j;dTÝäç—JzíJúWÖ[6Ýß–m;88ßi22‹’Sš´Ñxvn‰d\Ù¤2¨)fÙš;Çh¾™èå)Kƒ+Š}>+8Påá®pR8ÅÆh-/š4%½¨Ø$CŸ¼ sSœHªËð*Å%æSɃ¡Ö}ÏžJ§r½9=ËXÛl©TXfÚøçˆe`ÕÅŸuˆ’¦Á„Dýu“ÓÅš£Ú©ËÊÌ!A–:Ÿ[ÌØ#Ë„c‡¹¾;Û?+Û˜ãp&iÐl6žWg\Bvü éðÄ:MH(’üˆ!6ã‹Ö¹½èwRÌ¿ËzF92ÿ˜œ§§óÅ}ÛI®¡iêÖ±C€FcsœLÌM“UV4½õÍÚþ­*vo#YâH£Ü%#«¨‰·˜m{×C©T8;×îS»ÉâAI‰^2O†ä–Mã)(,/,´¹³àZE&qsÓtŒ•y²¯É+~åêFRRr~ß´-+3ÙÞÖG)—v µ½®uè+óߺÁÍ×" Ú«|dVVP ÊK§4š,•xâ96J³uWéS3ò ¤—ÝûºüôIpT˜æÐ1½HÕtJ’T$^ÜËù®<3²Œ'ND<«U,»wÂÒÑ4ø"WµZú×j¾ÉÄ_KÊÌñ‰úk.qÿj®i6ö.¿îÞôì\cD¨Æp&¸ŒÿeÂi{þ‘fÂñ#ÜÞ}Ñ?ÃáLèà;ÕÊÈ'æ3².­Fûô õò´¹g_Ÿö¢VkÖÉa&ŸÏ’\Á¬t¬c‡h?É’&n¬U•}R[Üw°RѹS dáp!^‹ÀSªÏÍ-mâÊg1Õòr¿ÉR™B!ý&Éiªâ2›Ì’ÊIcïFEøj5*I‚JÏhþ›8q Ùé™ p»!?¿´éw¾Èv YI×€@83Œ57æ©HƒßT•ŸÏ ø7 þûi¶\7ˆL(bÒ¤)é"¿Iž¤úîýÀу]ãôåú*«û 'Ékx¨zî ~Ÿ¾8jkJºád’Ádª9Šëm±K‰§ É©†á\Μý˜J¥<¦*"”fçš Üãõö,?ùæ–®)¾ajzI©9¼­Hƒg¯ ¬™PlÚROø´qÚ„nó^ôÏt,:òNµ>+×H£‘Ÿ¯[/Y›«IªëÙ^Ôêï½É’á[ºw –L 舉c¥#,wlæ´ÙH†MߤЮĤ¼–6!ap‡¤AoQQùñ„ìsè\(+3–•7õ°R’ɺ\¬5[ÏçÒÒ&Ú´B©p°V*¼tÌø-å ;;8Píï£4Tqy)2a[k&|À~& çç!ºt¥´ºlÄhµºª=ºØÖÉ+ëfõZù õµktœl"¥«;ø\ù`zM3z‡#ZBWF›O’@yx.tBãSP_SI€ŸôK$#³ˆs ÍÌl6š …U¥Á¸3-E¿g' .^Qô𬬠ÿêÒ`E Q¹¹)§<™ùÃ;_~WOpÿf^`hÕ¡cåN¶í=ÜÝbåÿ›žñÃÒ*¿5‡\ìò需_ó¿èB—“I–X(¶(‚hjº1!Ñн“vîó~_¿8jp•mùD|éÝÜ?UåM«”–lŽÄéG pùåó nìtK˜63kö;¹íÚª=tŠ AdBñ˜[ìeBKÂÙ~ÕgBÓù×®“Lcàæ¦tq¸ãk3ܦÛa~~ÙοO7ȾíÞ—"É`=/ñóus| ãGKáo¿;Ú¹ÑÕU:pEAAY y×ZZ“Qy·¢üSV8ÈÏYÉh4ÍyÎfóBœ¿Œ†ü*Ò ¾ccŠ.>S7èHüwF'_¥—J<ë…·íL Õ³›ó]>Öýðñò¢³¡ÈúD“ÙéÉ—²oº/}åU~c àúÅÛ–æ }z8gçš²rŒÛkçÌô[ø^à„‘U^ ¯ÞPróýéϽ™ãã¥á³¢©‰Hƒ)ÆôLããS½?~#ÀÍUZ©Æ[HÿyeQlŒÆÅYar ,™0ØROh7Šœ;Û/£ŠLh6• çéíÛâ½|ÔÊZµnÛP¬Ídj°FEk7ÄK– äè õÑ‘¾‘¶ý·lOÌslT¥Rá. 9%¥†–󮵨£H>YMÏÝMÓbÏ”Òóé´bjŠ-7ês\Ãäi°C”ý~ƒ¿¬*zø¹ZŠÚÍ„:ET¸ú“oóSÓ ¯ÌðõÐÙ¬YÄι/ø]ØE;磼ÜûÚibz$N÷c‰I†Øhu'd­'áàv[øÀ Æ·$­Ž-—æj¾—ÑÔ̦–ÃZN4„@s\ºéó̦rÛ4¨ýö½ É+NÖºÁ™YþuIƒ•¯b;wÐÄ4\sOšH†òLj,÷ÓÇAÓîòÊÊ1^Êð¶êO¾-¸éþô¸všöêîüý3ñQ«‡ãôeeg篷Ì:¨´LR¬^·¹äf>ðtæÖ¿ìÄÂ]ûʦ¿}ûCKÖøª¢ÂÕjÕÙ1`ÄJDÚ<|\¡™÷¢ßœ™~".ÊWòÛúâëïMÿs[I—X­VëÐ2ŽdB±óez³È„Gâ¤/ÿ²1îo=ç—žiÌÍ7™ 9f³þ!GH°Ÿühb¹yÒs6¨Åœ)’{gƒÊ EÓ—¦K°Ô .´—ýÍ’ëÑRÔ.K—B­¥KáŽ=e×Þ“þÄý^×LÔÉvç$1C]?[X°xeÑé4shUŨžâ_•Ò)¢º\o^µ¾dÃÖÒžÝEfó÷U*âêßtàH¹„Eæ¶Áª6g‚\å(˜_`NI3„…ªŸ˜ê=ùO¥½û6fóÿÙ»ð8ê‚ñãÉæhÒ;Iï#½nû,—rÉõ¢¼à´Þ‚â‹ ‚Â+È)‡¾¨€¢ ÷Q¡P(mÁ--…Þwz§IšûØl6ÿ AHvÓ;Ù¤íçóìÃS&ivvf6ïÎÌo’n¹¯øO”uï –Oü}çw®Šf,oMäWm|î¡~9YÍæàÌq]‚g¿ò†Â®ik;ùL))饗~ó²C›N9ýKc}âƒ-ü•š_@øÚä¥mt̤7—þ×y4í½cŽ2aâfïvxÔá¹1×¾üêâí}Òø[; Ø£ƒ¬¬˜ÑSÛݺ ±wm𛕙‘VU]ëEÂÄ\o<¨£¼gs÷´‚ ­Ù›£C‹Ö•^Ô`V–jð—…}rR‚Plõq"‡è6(5%%éê_ýð—…ù-œ‹9¨êuWfýýž>çœÚ¥´,ºxYmEeý§×—šÒ0RhvVʬjîÿ[éwÿúÎâ{*}ovM±Ã§¦¥~Ò«¤4ºpimjjÒw/ëþäû~û¿[®ÁÔœsù†ûþRThïœPëÖàš0)w`ÚÆÂº Æo(Ü»|Ï:¥Ë­¿ÈéÞ¹Ð&Ú„¯ÄÞ¡~ôÈœÜÍïN‘sèÕ×—¶Ñ¼ÅŸ5úÅFláûãÏ}1îÕmÕê5%1SF í6p@÷Žv´aÅÊâ˜ñý32RGÌñ¶"‘VŽgGÏé ƒÝË AÈžîçßˈ¯Ág?®ÁÞ5X×VOtfÏ¡a¹iϽ\ñÕ+6<5¡å{Ðï;6ýÖk³¾»Ï¥t rÉòÚuùuáÚúO²°¾áÈ^٠ל:dpÃ9O R°þ“¬©©_µ6²tE$«gèßèñÄý}2¾gßÞ-œ#ÖßöÅ—ü`ã‚%á½FµÚi¢›iÂúaƒS—çE.úN~QqìÓœ{z—¾½ þÖ`íú²¹óóc&žwç†OÔüB¾¢MUï°¶æ-þ¬Ñ£Ë¿Oà§)rü1C›NYº¼hÙòí¾LtIÜ_Ùwï¾aM°o¿Ž¶ñTU×.YVÔñç“Ý[üF˜•Ù§Ð}p‡9¿!´ãÞvìZϽòɘ¢mql0.ÀÎá="­¬¢þ'¿*úÞ/ -kùT®ý÷J¿îGYOÜßpmá!tª®®_º2d^RÕ5õµ‘ú \ƒGôãÿF"õÁÄàK+WX©k¸ýo¯Í~úÏ}¯üf}[Tíõ·ªÎþî~ 4èÆAýSwàÞÛ+˜±‘CÓ–¬¨ š°¸´Ù²^»®4þÚ¹=ÖsæÇáI› ˜‘]&½¹´MçíµÉÍ~~jjèø£‡¶ø';,f@¿—¶ÿð``Þ‚Ø<ÎÉî:âÁÝ»w*-­i¯YЯÛAû÷·j !dðÌ ó 䵆cƒ½²SzöHt ~–Fц–3"-cÝÏn.º`|þs¯TnùÖ©)Iû¥¸Oú1‡eDÆqGd{xÆAûvØ+5¸©$zÿßJϹbÃÝ”$''–Öô¾ o¤QÃRç/®ý¯ïäo*©[¸¸ ou‰-³©ÿ{ îK-}¶3¾h[Ÿ/ÚèÕæCË5xô±ŸýÇߢð…-ÜágŒ9O5©aðÌží{%á%Ô1·œH$:yêò˜‰çµ¯÷‰ôöô¼ºæÿ²†BÉgž¶W;ÎÒÅh½€ „OŸ 5Ô93혣†¼þæ²àÏCr{ÆÜ×+þˆbÛ™øúÒ˾vp³X=vxãŒbö½ŠKªã‡¾Ü^%¥ÕO=7÷œæ'}°_¿SNõ¯W'ì…)øÃoÕ*?*”{¼¢këRóïwW-X´qìèf#Ó~ýƒ‚ðÚÈ=÷O¿õÆq1ù5Wwã­“9¿ýõ—¬ „ЂšÊ•]÷I¥wØ9 B.ȹ¬ž¡àü¹º¦~öÜšéïW‡k“RB _úT4Ú0>MzZRP‰AIè—šœÜ,/;¬ê²y6Å-˜0qÑ¥7»Rîôqc»ëóÇ k:=HÇøÛÙ·%ËÎÍôٲ㚞–®­5"'æLÎW&-n•íðÞ?¾sÖ{Çœ÷uý5_xwæšÂ¢Ê¼êàmuÏm§Ç¼I“wô4´Úpì) Y=[óæ¿ºåG8/fâ]7Ÿúåóÿ¬¦„m*§}iÌ^czÏœµæ¸¡nØí+}Ùò¢áò›N<óô½&O[>íß+3¿¹þä>½ºXHNeWR]¾ËÜê ØéÌÌHî•2¨êð܆ã„Á>}ÿL þ|CÑÃ]äB‰ºÚM‘Ú"ÛáÄßÉý˜#†4žX3èhü@/míåW›ÝT°sfÚQG4Üôù”Î]Ø*ÏXV^sç}oÇLLI ýáŽ3ó’ïþíéMïúäú”·v{áe¯œÎ÷6oÚ6uÍ•ÇÝð³/\pÎ~·Þ8?ç½úåo^ŸxûMãúõ횀g¿âÒC›^kýÎŒÕϾ8ßJAŸ©©\V­Ùç½[s/ùæ;¦lÈ/™ø¹üïu'%` ùÕÏOlzŠï·/?|@ÿîÞÔ{šù 7>wpJJèÁߟݺ‡Äã]rÑAWü÷!Í>¡¸~â⥅V BhÞ$es-„v otxp[¼ørìáµãs‘^°Ó?oA~‚g,ouÉÒåÍÖàØÑ½?dPÿ¾ÝšÍÿ+‹Z÷y¯úÙ¿â'uxî]7ŸÚv/öÖÇ}ñóÍB÷ûW¿Öèßmg~ì¢Å1SÆ}qTëÎù÷¯~)~âÉ'޼冓Ûnqed¤ÞwûñÃxdõÌðŽÞýöwS׬-™Ø§W—¿ÞNNvç6zÒË/9ä{ßl6ŠÒ÷½]ZV3bx¶5‚š WåEëÊ-‡Ä«,™m!l‹øSÎ7öªïÝtJ"Çm*æ°äÈá97^ûŘï‰9³tç­ÛPvõµ¯ÄO?æÈ!ºçÌÝ[99 èþðÏ=áØfWlÞrçÔÆ•uu;uqä;3bÇÚùú…¶îÿ Ú¯»iRüô??âÁûÎê•Óú»ãî×ÿ‰¿œø!ƒb¦/\\°0.€ÙCŒ¿ò…øÃéúu{ô¯î·wßÖ}®””Я~~â7/;4æé£O|аŸšìæ ¡…2™e!$ºÃ+WDë*,‡m±©¸êÝ™«›NéÜ9-&{^jí£pÛ(&DÓÓSbΛóÑúµë[Ù×§,û}Ümíßÿñ¿œ”ak=Ñ—OûØCçï=¦ÙXüƒþçÎï;9VÎÔ¯Œ¹=cÏ×ý´•ï¥1aâ¢×þûö ׉Í|î¤+.=ôÏ÷žjè굥߹ê…H$ê½gZ»®ô»?~!~zNvç‡þpöE_Ý¿µžèà[uÌÑéYsÖ]{ãkŽvð‘Ö@B»ˆ„ k«×Y S__WY6ÇrØvϽ´¥ÑV­)‰¹Î0aVæ/Y¶¥ râÏwm-þýýG>þ¼?F¯œÎwÝ|êuÿsÂNY±÷Ø>÷ÞvzÐf©Í×Åü»~ÿvk½Š Ÿz>ö¬õ3NûíÿwX«/®?ýuFüôÝ3n¹áäß\òæÃî€Ï;ìžsÉV£‹6~íò'‹Kª½—÷dïÌXÝâ±ýÀ•ß=ú¿ûÊN*ìÓ»ëÏ~|üý¿ûJÌ(Çónÿ£ç-H$·`—TY:«GF¿¤$g’$BUɬ¤z ¶ÃäiËÃáºôô”¿šøñEcž}äðœ¿TWmÓ¡nî¼ïíʪÚË/i¡@¾|ÊØÓNýøÓ¹TëvýØCxÞYû~áøáñ_zæÅy7Ýúf뾊žyÁ9ûÅܪû²¯óQü˜=[õÅÏ8ûË{vð ¿úö;y?ºæ_ÁÆàÌëS–]õó—o¿i\ü—>wà€‡þpö¤ÉKÿñ䇳?ܾh‡Í:댽ÏùÊ>éi±¿$çÎÏÿÆwŸqh!l]}4\Y2»sƒ,ж „«W[Û¥¦&2éÍe§œÔòp#'-iÇy ‚pü7Z>œ5õí•åá6}ö ròó+~þ“ãã¿$ÖE_Ý?x¼3cõ›Ó–Ïš³n £ fd¤ŽÕûðC{䘛¹êÏù¾Ûê/¡´¬æ¦ÛÞŒ?MôÄÏ8á¸á¯LZòÆÔeÎݰ± ö묞™ûìÕçˆC|à€uÊn¾}J~ÁVNÃþÛc³×o(»áç'Æï7Î:}ïà1söÚÉS—Ϙµf˃1¦§§ì»WߣÏýÂqÃroöèâ#O|§ödÁ›ñòï={ÛMãZ¼Ü7ØìƒÇ¼ùSÞ^ñîŒÕóm¬­ÝlËÕëƒwôÐà-Ðâ7[òñ²e‚¶U¸jezæàÔô^E›¦wEñ{–Âxá_ Z ¼Õ%[>i³­å­*ÊaÔˆ¾Ðfç‹6õÌ‹ó‚%pý5_ØÜI‡2¨q€“ š–¯Ü´n]YIYMÃúúŒŒ´ž=2†ÉÊÔ#øÃf?ňDuË&¶Õ…šÏOXpà~ý¿|êØ˜é¡Pr°ÒƒG¸¶ný†ò‚‚Š °£Ñú®]Ó{çtéÝ»KçÌ´Æï –ÿÈaÙ\úDeUíV~áâ‚`qíÿñÍKâûÖ»×kו.ZR¸>¿<cyð¼Á~yfFj×.éÁóš=lHVvÖ–îPV^ó›;¦´ï§tL³æ¬;ï’ÇyÍ 7ª‰·÷Ø>Áã[—VXTüŠ[™W\ZVÝxµmZZJP’ƒvÏÔs˧…·Ñ'8Ÿp:BvWÅïöè3Î¥°m§²äý]ôÆíîÝ™«ƒ}£ø!ÚÛk|Ѧ‚RŠ?1è©o¯HÌ |8oÃù—>ÌÃ…çnihŠþ}»ÅÜc[¼÷þš l‚îmùß¼æ§zÆœù¹í‚àLM Åß§¡QzZJ¬Ác ?a@ÿîûíÓ÷[?üìa_ög.½øs—_rÈæÎCnü;|ÛÀ ;o¿gZAaå¶|sJì2LNü8ñ+.%´¥y¾óWB¡äDÍjrüKÌS«%æ¹B;úÔÁo³ïÿä¥ ÎÙïÛ—þéçñ‚ßxÁã ýûo×_»¾ì–;§¼5=¯å÷ljÌŠ mu{KNJŽY¿)¡vØOˆÙ&wø· $€­“]X}4\Q<Ãrh#µÕkÂU«,‡öJK[^‰»;|â½ÖÒEŒ“&/‹F7š_$½ýž·.ùÖSSß^ÙZ?3è™›ï˜2þGÏo®?Âf»hii;þàu7Mº÷Ówf†×mÏ€®ýýýs¿þØs/ÍoÝ1w~þ~úÒ5×OÜÆŒßÍ ö×õu ކ㋠¦&²…ﯪŽ=»…´n]UU‘˜HOOÐgñµµÑ˜O@:íÜS?öÔ‡ç~í±'Ÿkµ»×ÕEÿúè¬s¿öÍÕàÇÿÐ×ǬúÈÖ.p­‹ÖwêÔlý&~mXÚš-íˆër„ÐfѲ6\¹ÂrhuѺ*±½“žüÏ­>µ|妘[÷‹uÊ‚ ˆ™øøÓ&~N‚ÙøÑ5®øÁs¯LZ¼39ºv}ÙïÿüîÙ?ºÕ]Õ˜}v2GÿòȬ‹¾ñÏ7¦.ßÞ¿ìžþú·“óV—lßË\Wü­ /{"XYE›ªvrá¿3cõñrÐä[ØßÌ2löIÇ{ï¯ ‡½·ýÆ”fË|ÙŠMÁV½…ï/.©Ž9ûæ[ ú‡#hÑ©ÿnö\“·ƒÙáÜšuþÆò›ï˜$\°n*Þñ°´¬&ø _ýúc÷Ü?}ËÛOÌYÎÛ°Õç ^øô÷š¯îiË“î­é+·ð¿Ð¡¤ rš¥À®Ý„5ëÓ:õ¥dX­¨¼hŠ“EwRIiMr(ùÓ᪫#?üŸ …E•aÞfÍYwÊI£?ýû‡g¾Ò~­[_öú›Ë&¼º¨ °2--”“ÓyÏ­ ¢hò´÷?ôÞ-wN}ÿƒµ[ÍâSÁ·ué’>h@ÚH4xÉwÜ÷ÖN V諯/™>cuEE¸k×N1÷uŒÏ’wg®þç³Ýr×Ô™³ÖîØ3¯úíwòž|vî’å…u‘ú=2:wNÛÆ¿¼Øæç¿0aáí÷¾õð?f¯ØÎ]-YVmî ž)©ÉoOÏ»þæ×kj„AþåT š•™‘6ûÃõ×\ÿjYÙV~_Mû÷ÊÜÁ=ûöé,À‡õôóóyƒöè×§kIiõ#OÌyìÉÄÝÅ'ØTôï¼êòŠð?Ÿùè¡GÞo•lÉÁOnxUq°QeggftÚ¦cA[þßÿào{3¨úà—äVÿÊê5¥ÁÓ ÉÍJOK™9{m°®·zåmã <°Gï^]ÊÊÂ=5'Xì‰ÿͼÙs²;÷ëÛ5(Þ Ýý‡»¥"VòÁÇýÞR`—ߎCéÝ{ŸœœìšØÖQY<ÃÈ¢­åè#r÷Ó;Øc~í¥[>ˆ‘`½r:ûâ¨`zþ¢Á¾rÇ™±`jß½ûÍí9fT¯ ¯r²2Ó;¥;ÉÉIAt»†òË/- säÇÜ&~ed¤¦¦„ÚbHÕ!ÁlìÕ«W—¾½»Y[ÿñà¦MUE•K—-_¹©²²¶uŸ1¨ú1#sÆŒê=bxö€þÝzöÈìÖ5½q¿3J®®®-,ªÚT\,®¼UÅslÌßXÞ*Ï›šêÒ9=(œöÝZ²³2·ë`iî•Uámùì ÕuïÖ)Ø\ÛåÜÅ®]Ò#uÑ{³l‹ÎÓöÝ{Ôˆ`;ì4XvVç`Jðž ¶ÀpM$Øøƒ-páâÂ+7Í™»~Çîo¼ýƒm{{IvëÚ©&Iüìf '3-)9©Õßø ¡¥½“´ì®9ÇY;¯º|auù|ËôUr’OÖ-7v¹mÏ» ײ›ˆÔUºæm§…«W«A:û”–»â¶g Aí3UeY;ÕáQ aWUS±¤ºb‘å°êj‹Ë‹¦Y‚vaÕeó‚,´¶¯#%eES,€=QÙ 5ž8Ú©ËH‹b›j°áØàÔ¤z÷Ì„°»4a}}]F×1Å–EÂ…å›ÞRƒ‚v+Õåóëëk3»íkQlNmÍúŠMÓ-A»¡šŠ%Ѻª.=µ(ZX8•˪JçX{2ƒÊ°›«­^S^8¥>¶(šª*ûH  ÙýEj‹Ê ^„ -Ф†;G*6M7+‚=E4Z]^4µ¦r™6Ú¸¶f½M€$ײG©*S.Êìq@rrÚøòk*–4Þ!{¢põêHmAf÷Ó:õÛs^u´®ªªtvmÍ‚=Z´®ºbÓôôÌ!™ÝöMíþ‡ k*—W|WF«A ÂU+#52ºí“ž9xw}uµ›ªÊæE­n!4VW–Ì W­Êè665-{wziõÑšêòE5•K­e!lV$œ_^˜Ÿž™›Ñet(µë.Ÿ‚õuáÊeÕ‹ÝzAÛ$\•<:u5•Ë‚GzæN‡¥¤õÜUf;­W® W­ˆÖUY‰BØq᪠®V¦¦÷éÔyHZÆÀŽ<«uµ›mDA­&Ρ”yéÓ2t¨†ÑºÊÚšuµÕk#áBk Am”^Õ‹‚GJZVZ§~iú¶c©ÉoHÁšü¤¤zkA‰PW»)xT—ÏOIí–šÞ+x¤¤e‡R2Ûúy룵u‘âH¸0Þ é@!´_FÊ‚GMåò¤¤ä”Ôî)i=SÓ²B©]ƒ?'‡Ò[¡ë#ѺʺHi]mqã#˜b± ¡C©¯‹”pÕÊà’“SC)™¡”®¡”ŒPJçäPFЇ¡ “S“¡¤¤PRrã¾úúúhRR¤>©¯¯­†£Ñš £uUÿ·Â-„°KÕa}¤ñà¡EÀ®"dB!‚A€ @ „B!‚A€ @ „B!‚A€ @ !‚A€ @ „B!‚A€ @ „B!‚A€ @ „‚A€ @ „B!‚A€ @ „B!‚A€ @ „B!€ @ „B!‚A€ @ „B!‚A€ @ „B!‚@ „B!‚A€ @ „B!‚A€ @ „B!‚A€ „B!‚A€ @ „B!‚A€ @ „B!‚A€ @B!‚A€ @ „B!‚A€ @ „B!‚A€ @ „‚A€ @ „B!‚A€ @ „B!‚A€ @ „BA€ @ „B!‚A€ @ „B!‚A€ @ „B!‚@ „B!‚A€ @ „B!‚A€ @ „B!‚A „B!‚A€ @°+øÿ ÈfhGŸ0ÔIEND®B`‚watchman-4.9.0/website/static/oss_logo.png000066400000000000000000000513101314236077500206210ustar00rootroot00000000000000‰PNG  IHDRZj‚é% pHYs  šœ9´iTXtXML:com.adobe.xmp xmp.did:76e46287-24db-e946-b9d7-5608134404eb xmp.did:AD6AC5C2D24011E4BF04C81CD4B3F579 xmp.iid:507feae7-cfad-3c42-b5ed-eb1fa9f4802f xmp.iid:42e88121-cf3a-1141-9f9a-2411cc39bff9 adobe:docid:photoshop:aae80432-d240-11e4-bfa2-b38bb56005c0 saved xmp.iid:507feae7-cfad-3c42-b5ed-eb1fa9f4802f 2015-04-10T16:11:03+01:00 Adobe Photoshop CC 2014 (Windows) / Adobe Photoshop CC 2014 (Windows) 2015-03-26T04:56:38Z 2015-04-10T16:11:03+01:00 2015-04-10T16:11:03+01:00 image/png 3 1 720000/10000 720000/10000 2 65535 284 90 äõ’æ cHRMz%€†mw¨H X9#7‰ÓŽIDATxÚì”U•Ç?“ H €°ñº6° ¬ EÑ•Ž‹œÅ£0q]²¸‹?‘ *‚ N¢°«Èî „8ƒGeEtq: "‚dÐ ¿ ‰wÿ¸·NzÝõ«3Ý3ï{Ndºª^½Wï½oÝwßýÑ%"´!^|˜|¸ŽÇŒ6«O7ð #˜·eààóÀî¾»<<:]m$ᜠœ¼ÄqþOFFÿí»ÍÃÃNZiDòö˜×ÿ¸¸ÉwŸ‡‡'œ¸ØX|Äqþ¯À`–ãü@/0æ»Ñã30Y:œ3€ß6 ›/·åÕUŽkN~|²)yxxLc çàKÀ+çï> ¬ªûýM¶Œ:ÔqßZà,àZߥ^Ây pðÙðŤðe“ˆ&|÷{xìXdÝ¥zjOã"›ŸoÞµÈà/À¿Gã¶Dþ7Ô~烾û=<:CÂ9Ò$‰£ç7¢;O—Nrûþ ULà8_>Ü臂‡GûI8ûÿi’‹‹lV ¶6—¶Aû®F-–ÏžŠ8_~| ÕAyxx´‰„sjÿ²³ãü I5÷´i[_ˆ*ßÓàšóŒœžõCÃÃcrçdÔ_©ä8ÿK›Èßí6o˨²ãüƒF¬~xxxì8Â9ľøoqœU÷µ ^óPoò.Ô€¯Ãï³ú¿ÐqþVÔ~çg~˜xx´Žp^€º"4rGøº-=þc]C•ÑE`_`7#œ'ЮµÀÿ¡ú£¼°;pp&mÐÕÖ ìù9ζ<ÚÕqý¶©æX‡"°x#°ð¸¥õŸÚ‘s pºŸBwÝ9ÎoEm.Äl„óVÔÝàpÇu˜^㊟½ðNTGT2’™aÄĸy ÄõWÔÈp#¤!têÏ9Öéí&ñæ8/ðY{®‡‡G ¹ f…-6ÁÎËù¹o³g¾xÕ͘t5ŽÚòìaÇ3öÛ³FVûÙ2çj44Ež8ݶà8=êÃå1ù¨§5N;E ß¤ÿ±©D8®%B¿Íïs|ÞáÀ)ÀQF*›l‰²ª$¾ µ‹ùI<{/Ž^oÒÍQýÎ<`/àvÔ}"Oït›ÿt×»›Ä~ŽkØCSpbö¢Êÿ®)Ö®2Ia!02UÕ là¹;5·¢AÍoÉñ9{¡»BÇÛß¿7½È["­G}œ¢–*Úqƒ-yNE 7 ® ö÷E¨;ÃeÀšê¼øW4^Ï §A¿®0’ ÜX\;]%»¦l×Wm Dµ2g%Á«Ð-ÃGÑíô.+÷yu×=kË  ;wˆéŒ~•BŸó<«÷¶5ݰ94³~)'2L² “L™ä÷|’¶£ÐÂr\˨2š° ]ÑQÈ¢4&lWˆtvJpÿ6Ð&LO³³½ÜÇL¹ÓŽ{Œ( FF[ìïWÛ²( fR‹Ø'Lßè}#¡åP’IQv”UIY›©÷eE’¶TêÞC°$«¤|f+Ê Ð_§³BÒ=4·KšR„“»‡šdó¬émºQC©Ÿ¢ÚØñkëˆ;ŒàfÙ“p°váLŠ 4–s\¸÷õÔÜÒ_%‡6–àÚM©flÇ™-,',1Õ+ˆ—£;[ý¤‹‹4íç [Ú’M<ë·ŽeŽùüÌþH:3LÒñHŽsmRÄùJ–Pý¨å×€Mо˜ä_ M’ª}±ãÞ[h0Á* ÚÒÃö ÷¤í¨Øû[Ú¢r¸\1–Úû‹²Üö„Âl4+C ³™n¥Ç‰73z}ú£GQåï|ω±Ü$Œ¾&µlƒz9î E6èãšû‡¥‘@Ñlâå7˜˜ÍÚR²ûGˆÎ;–¤ýVÆP Ëi6Åñ`NËÒ)I8{ÉjQ] æ+7ª-û}Ôêº(E;ŠVÎ`ˆ$·¸œ¸¤S¤5ùárG÷$gî4ÔÁ¬Î¡œ`Àö˜¡?BÇŽ©[m …TQû3­¼euç‡pÇç­‘,1égIÄùÅ©d55#»»¶7¢-c ʈێ‰ˆwÒªrƈ ¤’îÚ~תKDÖóܘÆoDƒZ5è©ù#ŽÀ‡ÑíëF8Ìî}Î÷Ë„h艣ìY»  ùâÄ`>ø;Ôðoªb4Æ}¯©[Nl°eáTC1D(U²‡M(QÛúNаž'-Ê¡É;–±YÊȳœŽÆdH8QF}Iá“ѵyN† ²e¨æP‡‘6hGÞåt4&C‡ótè¹]$³Ý 0Çî+k‹ç /áDáqjƂϠþSIÓö.@# ‚ómö]¹èžçW~º¡Ü"©ÏÎ$ ‰±Åˆfª¬Þ4ûp ªøî1if1ºûáX°µ\ñÃ~;ôQ³ZZ÷þÛ{]Bm‹Û£ƒ$ÐT¾¢z˜§Œ8Ú—Ø•5s_tët–I7;aÞ=û¯ßˆf·EêjûR¶‰5H¼íáé‚#“¥¸ÃJ  vH}èööf’‡ ð˜DÂÙl_åÃQŸ¨'ŒHŽ@·èÿl׺u¾‡ÎV#›è¶v5árj*ínVµqÉcÄH½šŠ'•X†bÈj0Xò˪É!œ èV`Ä·µŽ‹ûPkáWÛ—ùi[*íe¤³-ôœmFJÛL²)÷£NžI°Ú¶|“çK–û*/KHFP%#ž‘i>yJ¡eT\T=mLá±t…ˆ!#1µ(îB=ÈGSÔ¹`¤”שÞãY¤ø·(¤XñŽ DT&{b¹’•3—èD{õ(²½µmÙÊ™‹†·¨’^^qÞ(.ù]‰dI'"êUFZrBW.¬ð5­I`˜!kC·ˆ|SDþÇÒ¯Ü3j~Ô±§ˆ¼ADN‘SDädûÿIöÿà·²ˆìòû[Ɔë,¢þõ"²Wfm¢ùW2–ÓoåÙÂ)OÆ%ý1³TBY‚t3á2\™#CÙ*u™#Âeô¥Ì^PŒ™Þ&ÉQ²:K¨®A½ƒ9…&}[Jñ"*;Äx]›zëú°QçáP“Ô9|ïûÿx¨íå¼²6lµeMÁ–*Ÿ²¬Mh艛Ѡ[¢î 0–ü•Aã§Á›Ñ8<[L'ô+¿Óp"µ@LY°"´"r³} ®´¯l¥CóR gÈõ%ìmab¹%VVOÌD{Qm]£å ¹º‚dt;äq¤¸V'¿‹›Ó+¨GŸ=«Ü¤Î;,aVÂé¶J2÷]ٯȦ "–¬o¥%ëû¶ˆìÜ¡„“G¼F6ïÄr½ Ê艨_3 /¿ÖdX…—hƒVïr‚1ÖêäwI g¸ QOJì»4[ÿ0j–-Qö¾jK˜ÉÆ€KQ›Ÿ‡l‡k_à Ô­ÂÃeä“XnEÌ2†p‡<³„öL³4ª†–iVF°Œ[ö4YJh]ò»4(Ó8hZÒ:G)ÿ'0Ìc[øà24ýÊNhº˜Yh(ˆ/291W_fëýó ×ÚöúAÀ5¤ÏŸ54±\0Èú¦f»PaÜì+# ô1IõQÏZÒ_,²I[2]È¢c§M~W ],è¤z:rªsø^H‘À0/ÿKPÛ™·SKT·x½ßþ‹xaD³`70'¢nëL’ÙÕñ'¶’Û#9’x ·Á[5a`ûÄrC)&T™öp8£æCµÔä Ä¢ºÉÖè=º0ºw¤Eãd¢É{^–aÜTSôí1yZ xÍn¹À¤Šµhp®D} ®5 c[ ^ð;€w¢‰õÖÙò®Ëìf+‹¦€ä1F>þP%û®nQ=ƒÝ¥ž„÷M´é{²I„AJ¹«TVE«l%iH™À0oKÛ‹3Ð(~¡ΟA­Šg5I瘟ùZTôiTt/꺧‘ÏoÑÈ~çS iÑéKÙsFþA¡6×Çrj[éqj¿û “ëuEcä›ünGµ¥áÞjо]E8Y³QÞe¤óy`½-eæ¢>O¿3‰ã|à³ÀÁžóbà“ÀW¬œûPÏñ9F4À—€÷¿ÈئvÊÐ9d<‹×r@XC $Š$âr%â«:ÒbýÄdJ˜õRM•|“ß%%­´PZI9uÃ(Ây$ljñ>àë¨ ÅËÐ\Tëí8Î$¢3V|g#‘oØ {ÝêFw£vGw¡WçÔ–‡ÚlÐ/%[¤þÁP9$ ¸ˆJ, Êâ#œBñRg‘ìÉïÆBËݸ˚,’rÒ:×/×*yÎ àu9uÎVà›hpõïÛ2§HÍJyÂö¥¦çiæÛôVtGì¶lzµÞUZ§_³óyà`#·vÓ'  ÛªKÞÛoƒlq}I…|ËõǬWqÈ)ÈsUHAcmÍšü.  ÓbÖ# ’Ö¹D Åæã”§ÑÚ"ò ¹SD~dV¿+ÍëN¹XDŽ3«ÄYvìgƈ_‘;Dä¦Ð}?4‹ÍËKÅ=v‘ó¼Ÿv0jìªcø Å1¤ë ]3ÞäÚRÈ÷¦‘p3Ÿ«²Ã-®qY£9¬mP%Áû®$´ ®æx Ý8Ö¿=¡g g0MRçÀg­Þpp´ÉØ [£ƒ9^º°QDNoÁDy§YûÞ!"CFW™¥ò­æXÙoÇ 9†þÔîY)"«Œ V‰Èi"23çúõ„œ×¢ðý6²¤î­s„ì±IKB΄kbLÈÞ¡ö„¬VÃåVB“o¸É` œ?×X]J¡X Õ-Š”ZM8Q·}V¯úw¸&Y×»I”mí‹Ilýuí)‡\J1\Ò¸v”C„Òz7}Ž{2é«»·l¿I˜”‚O‘ûL°{Eä­9O”]Eä#F$·™/Ö•"rµuÌì´ß®‘ïˆÈ/ÌMá¬H`G[ù.l‘Åmè+V´Îu‘ä¨MšBsy?KhröH|ÓWýD_Óûb Ÿ«f„5ØÀ3~0&™ìÖ·u| 5 ‹Â5Àç€{r\G¿x—­igQ‹¸5+Ÿi;Oóm‹ýÀU¤‹‡ãÂÀÙÀ{袾 |ÍgÞîJÍR„‚/.zQƒ°®;+õ:Œ¤(ÓÞÙêõI#û"÷5ÁŽ1êœöya=ÏvN€À4Nzp„+/n/¶hJàÙF‚OÚ.ÑC¶óqkÎ/øl›d.#ÈkQŸû™hD8™E8Þ|8Öq~I;—µ ^û™D3ØvŒüãŸ|Æ$¬(ÜfÄ{ý4žp¨©ýíÀ›×\lmøÚ4«ñY <&aI…"p!ê$éÂgm©ÕN~KKQwŠço@ý­îñCÂÃcr%œ0Æ€“PGÎA(ßÝí« ñ¿â ›»Œ`ÒÌóçoFÏ·íàvlÍ?8Î?‰*F/òCÀãst7él;^‚ê€nq{æÁÕàšËPOöµ¾û=<:p¼Ò¤w8Î?n¹^Ø¢¶|؈džãüMFŒ·ûn÷ðè| °µo9Äq~µÃu9=ïxÔ0ï(ÇùûmyÕï»ÛÃcêN€³Œ\!hç«)Ë º#vŠãü64{¯ïf©O8{Û„ÿ@ƒk.Dý”6Æ,sªôÔÏ* +Œî÷]ìá1}'À¡¨›€Ëàî14\è%MÊ9ÕêŽó·GÓ{xx´fì çü MŒ÷‡Ô±jå{ð–ˆóo~ŒZ=G‘ÍTi|¤'/áÔ£™‡ö*àCh˜Š¯ÿÜ ¬/¢á-ŸòÝéáá Ç…ÑÝ,WüÖ¿ ¾[{;Î_‡nÃßå»ÑÃÃN\¼ݶ>:æõU“~à»ÏÃÃNZ|µÞßq~#šgÊ»#xxxÂÉݨíÌÇê~¿ØÈè ßežpòÆ+ÑØ5³QŸû®òðè|üÿBçþ)Ǭ IEND®B`‚watchman-4.9.0/website/static/pygments.css000066400000000000000000000063311314236077500206520ustar00rootroot00000000000000.hll { background-color: #ffffcc } .c { color: #999988; font-style: italic } /* Comment */ .err { color: #a61717; background-color: #e3d2d2 } /* Error */ .k { color: #000000; font-weight: bold } /* Keyword */ .o { color: #000000; } /* Operator */ .cm { color: #666666; font-weight: bold; font-style: italic } /* Comment.Multiline */ .cp { color: #666666; font-weight: bold; font-style: italic } /* Comment.Preproc */ .c1 { color: #666666; font-weight: bold; font-style: italic } /* Comment.Single */ .cs { color: #666666; font-weight: bold; font-style: italic } /* Comment.Special */ .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ .ge { color: #000000; font-style: italic } /* Generic.Emph */ .gr { color: #aa0000 } /* Generic.Error */ .gh { color: #999999 } /* Generic.Heading */ .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ .go { color: #888888 } /* Generic.Output */ .gp { color: #555555 } /* Generic.Prompt */ .gs { font-weight: bold } /* Generic.Strong */ .gu { color: #aaaaaa } /* Generic.Subheading */ .gt { color: #aa0000 } /* Generic.Traceback */ .kc { color: #000000; font-weight: bold } /* Keyword.Constant */ .kd { color: #000000; font-weight: bold } /* Keyword.Declaration */ .kn { color: #000000; font-weight: bold } /* Keyword.Namespace */ .kp { color: #000000; font-weight: bold } /* Keyword.Pseudo */ .kr { color: #000000; font-weight: bold } /* Keyword.Reserved */ .kt { color: #445588; font-weight: bold } /* Keyword.Type */ .m { color: #009999 } /* Literal.Number */ .s { color: #d01040 } /* Literal.String */ .na { color: #008080 } /* Name.Attribute */ .nb { } /* Name.Builtin */ .nc { color: #445588; font-weight: bold } /* Name.Class */ .no { color: #008080 } /* Name.Constant */ .nd { color: #3c5d5d; font-weight: bold } /* Name.Decorator */ .ni { color: #800080 } /* Name.Entity */ .ne { color: #990000; font-weight: bold } /* Name.Exception */ .nf { color: #990000; font-weight: bold } /* Name.Function */ .nl { color: #990000; font-weight: bold } /* Name.Label */ .nn { color: #555555 } /* Name.Namespace */ .nt { color: #000080 } /* Name.Tag */ .nv { color: #008080 } /* Name.Variable */ .ow { color: #000000; font-weight: bold } /* Operator.Word */ .w { color: #bbbbbb } /* Text.Whitespace */ .mf { color: #009999 } /* Literal.Number.Float */ .mh { color: #009999 } /* Literal.Number.Hex */ .mi { color: #009999 } /* Literal.Number.Integer */ .mo { color: #009999 } /* Literal.Number.Oct */ .sb { color: #d01040 } /* Literal.String.Backtick */ .sc { color: #d01040 } /* Literal.String.Char */ .sd { color: #d01040 } /* Literal.String.Doc */ .s2 { color: #d01040 } /* Literal.String.Double */ .se { color: #d01040 } /* Literal.String.Escape */ .sh { color: #d01040 } /* Literal.String.Heredoc */ .si { color: #d01040 } /* Literal.String.Interpol */ .sx { color: #d01040 } /* Literal.String.Other */ .sr { color: #009926 } /* Literal.String.Regex */ .s1 { color: #d01040 } /* Literal.String.Single */ .ss { color: #990073 } /* Literal.String.Symbol */ .bp { color: #999999 } /* Name.Builtin.Pseudo */ .vc { color: #008080 } /* Name.Variable.Class */ .vg { color: #008080 } /* Name.Variable.Global */ .vi { color: #008080 } /* Name.Variable.Instance */ .il { color: #009999 } /* Literal.Number.Integer.Long */ watchman-4.9.0/website/support.markdown000066400000000000000000000020331314236077500202560ustar00rootroot00000000000000--- id: support title: Need help? layout: support permalink: support.html category: support --- ## Need help? If you're having trouble or otherwise have questions about Watchman, and [the troubleshooting guide](/watchman/docs/troubleshooting.html) didn't resolve your issue, you can try reaching out to the maintainers in one of the following ways: ### Stack Overflow We'd like to encourage discussing and answering Watchman related questions on Stack Overflow. [Look at the recent Watchman questions on Stack Overflow]( http://stackoverflow.com/questions/tagged/watchman?sort=newest) and if you can't find what you're looking for, [ask your question on Stack Overflow]( http://stackoverflow.com/questions/ask?tags=watchman) ### IRC Developers and users idle on Freenode.net's IRC network in [#watchman on freenode](irc://chat.freenode.net/watchman) ### Bugs? If you've found a bug, or haven't had any success in reaching out through the channels above, please [file an issue in our tracker]( https://github.com/facebook/watchman/issues/new) watchman-4.9.0/winbuild/000077500000000000000000000000001314236077500151535ustar00rootroot00000000000000watchman-4.9.0/winbuild/Makefile000066400000000000000000000211431314236077500166140ustar00rootroot00000000000000!IF "$(APPVEYOR_REPO_COMMIT)" != "" BUILD_INFO="-DWATCHMAN_BUILD_INFO=""$(APPVEYOR_REPO_COMMIT) $(APPVEYOR_REPO_COMMIT_TIMESTAMP)""" !ENDIF # Strict compilation, but suppress deprecation of POSIX and a couple of # warnings that get generated by the system headers #PEDANTIC=/Wall /wd4555 /wd4221 /wd4210 /wd4152 /wd4204 /wd4127 /wd4996 /wd4820 /wd4255 /wd4668 /wd4201 /wd4232 /wd4710 /wd4214 CFLAGS=/nologo /MP /WX /Zi /Zo /Oi /MT /I $(MAKEDIR)\winbuild /I $(MAKEDIR) /I $(MAKEDIR)\thirdparty\jansson /FS $(BUILD_INFO) CXXFLAGS=$(CFLAGS) /EHsc LIBS=shlwapi.lib advapi32.lib dbghelp.lib LINKER=link /nologo /out:$@ /debug /incremental:no /opt:ref /opt:icf /pdb:$(@:.exe=.pdb) JSON_SRCS=\ thirdparty\jansson\dump.cpp \ thirdparty\jansson\error.cpp \ thirdparty\jansson\load.cpp \ thirdparty\jansson\memory.cpp \ thirdparty\jansson\pack_unpack.cpp \ thirdparty\jansson\strbuffer.cpp \ thirdparty\jansson\strconv.cpp \ thirdparty\jansson\utf.cpp \ thirdparty\jansson\value.cpp SRCS_C=\ thirdparty\wildmatch\wildmatch.c \ SRCS_CPP=\ $(JSON_SRCS) \ ChildProcess.cpp \ ContentHash.cpp \ CookieSync.cpp \ FileDescriptor.cpp \ FileInformation.cpp \ InMemoryView.cpp \ Pipe.cpp \ PubSub.cpp \ ThreadPool.cpp \ QueryableView.cpp \ winbuild\errmap.cpp \ winbuild\pathmap.cpp \ winbuild\mkdir.cpp \ winbuild\dir.cpp \ winbuild\asprintf.cpp \ winbuild\hostname.cpp \ winbuild\time.cpp \ winbuild\backtrace.cpp \ winbuild\getopt_long.cpp \ winbuild\posix_spawn.cpp \ ignore.cpp \ spawn.cpp \ opt.cpp \ cfg.cpp \ clockspec.cpp \ checksock.cpp \ error_category.cpp \ fstype.cpp \ log.cpp \ json.cpp \ bser.cpp \ expflags.cpp \ hash.cpp \ ioprio.cpp \ opendir.cpp \ pending.cpp \ perf.cpp \ stream.cpp \ stream_win.cpp \ stream_stdout.cpp \ cmds\find.cpp \ cmds\info.cpp \ cmds\log.cpp \ cmds\query.cpp \ cmds\since.cpp \ cmds\reg.cpp \ cmds\state.cpp \ cmds\subscribe.cpp \ cmds\trigger.cpp \ cmds\watch.cpp \ cmds\debug.cpp \ query\base.cpp \ query\parse.cpp \ query\dirname.cpp \ query\eval.cpp \ query\glob.cpp \ query\type.cpp \ query\suffix.cpp \ query\match.cpp \ query\pcre.cpp \ query\name.cpp \ query\fieldlist.cpp \ query\intcompare.cpp \ query\since.cpp \ query\empty.cpp \ watcher\auto.cpp \ watcher\win32.cpp \ listener.cpp \ listener-user.cpp \ clientmode.cpp \ main.cpp \ root\ageout.cpp \ root\crawler.cpp \ root\dir.cpp \ root\file.cpp \ root\init.cpp \ root\iothread.cpp \ root\notifythread.cpp \ root\poison.cpp \ root\reap.cpp \ root\resolve.cpp \ root\stat.cpp \ root\symlink.cpp \ root\sync.cpp \ root\threading.cpp \ root\vcs.cpp \ root\warnerr.cpp \ root\watchlist.cpp \ scm\Mercurial.cpp \ scm\SCM.cpp \ state.cpp \ string.cpp \ time.cpp TEST_SRCS_C=\ thirdparty\wildmatch\wildmatch.c TEST_SRCS_CPP=\ thirdparty\tap.cpp \ winbuild\asprintf.cpp \ winbuild\time.cpp \ winbuild\backtrace.cpp \ winbuild\errmap.cpp \ $(JSON_SRCS) TEST_DIR_SRCS= TEST_DIR_SRCS_CPP=\ tests\art_test.cpp \ tests\bser.cpp \ tests\childproc.cpp \ tests\ResultTest.cpp \ tests\ignore_test.cpp \ tests\log_stub.cpp \ tests\log.cpp OBJS=$(SRCS_CPP:.cpp=.obj) $(SRCS_C:.c=.obj) TEST_OBJS=$(TEST_SRCS_CPP:.cpp=.obj) $(TEST_SRCS_C:.c=.obj) TEST_DIR_OBJS=$(TEST_DIR_SRCS:.c=.obj) $(TEST_DIR_SRCS_CPP:.cpp=.obj) TESTS=tests\log.exe tests\bser.exe tests\wildmatch_test.exe \ tests\art.exe tests\ignore.exe tests\pending.exe \ tests\string.exe tests\childproc.exe tests\result.exe \ tests\future.exe tests\cache.exe {}.cpp{}.obj:: @echo CXX $< $(CC) $(CXXFLAGS) $(PEDANTIC) /Fo:.\ /c $< {tests}.c{tests}.obj:: @echo CC $< $(CC) $(CFLAGS) $(PEDANTIC) /Fo:tests\ /c $< {tests}.cpp{tests}.obj:: @echo CXX $< $(CC) $(CXXFLAGS) $(PEDANTIC) /Fo:tests\ /c $< {winbuild}.cpp{winbuild}.obj:: @echo CXX $< $(CC) $(CXXFLAGS) $(PEDANTIC) /Fo:winbuild\ /c $< {cmds}.cpp{cmds}.obj:: @echo CXX $< $(CC) $(CXXFLAGS) $(PEDANTIC) /Fo:cmds\ /c $< {query}.cpp{query}.obj:: @echo CXX $< $(CC) $(CXXFLAGS) $(PEDANTIC) /Fo:query\ /c $< {watcher}.cpp{watcher}.obj:: @echo CXX $< $(CC) $(CXXFLAGS) $(PEDANTIC) /Fo:watcher\ /c $< {root}.cpp{root}.obj:: @echo CXX $< $(CC) $(CXXFLAGS) $(PEDANTIC) /Fo:root\ /c $< {scm}.cpp{scm}.obj:: @echo CXX $< $(CC) $(CXXFLAGS) $(PEDANTIC) /Fo:scm\ /c $< {thirdparty\wildmatch}.c{thirdparty\wildmatch}.obj:: @echo CC $< $(CC) $(CFLAGS) /Fo:thirdparty\wildmatch\ /c $< {thirdparty\jansson}.cpp{thirdparty\jansson}.obj:: @echo CXX $< $(CC) $(CXXFLAGS) /Fo:thirdparty\jansson\ /c $< {thirdparty}.cpp{thirdparty}.obj:: @echo CXX $< $(CC) $(CXXFLAGS) /Fo:thirdparty\ /c $< all: remove-config-h watchman.exe build-tests susres.exe remove-config-h: -del config.h watchman # problems with vcvarsall.bat? http://stackoverflow.com/a/10558328/149111 # The Visual Studio 2015 image on AppVeyor includes Visual Studio for Python # and that MUST be used to compile the python extension. The build system # that we use locally does not have this installed, so we use our installed # compiler. To allow AppVeyor to use the python specific compiler without # getting confused by our 2015 environment, we clear out the compiler # related environment when we're running in AppVeyor. py-build: if defined APPVEYOR set INCLUDE= if defined APPVEYOR set LIB= if defined APPVEYOR set LIBPATH= if defined APPVEYOR set VS90COMNTOOLS= cd python && python ./setup.py clean build_py -c -d . build_ext -i py-integration: py-build python -u runtests.py --keep-if-fail --concurrency=1 # helper for suspending/resuming a target process susres.exe: winbuild\susres.cpp $(CC) /Fesusres.exe winbuild\susres.cpp integration: build-tests susres.exe py-integration integration-win7: build-tests susres.exe py-build python -u runtests.py --keep-if-fail --concurrency=1 --win7 build-tests: $(TESTS) watchman.exe: $(OBJS) @echo LINK $@ $(LINKER) $(OBJS) $(LIBS) tests\argv.exe: tests\argv.obj $(TEST_OBJS) \ tests\log_stub.obj \ PubSub.obj \ argv.obj \ string.obj \ hash.obj \ log.obj @echo LINK $@ $(LINKER) $** $(LIBS) tests\art.exe: tests\art_test.obj $(TEST_OBJS) \ log.obj \ tests\log_stub.obj \ PubSub.obj \ string.obj \ hash.obj @echo LINK $@ $(LINKER) $** $(LIBS) tests\ignore.exe: tests\ignore_test.obj $(TEST_OBJS) \ hash.obj \ ignore.obj \ string.obj \ log.obj \ PubSub.obj \ tests\log_stub.obj @echo LINK $@ $(LINKER) $** $(LIBS) tests\string.exe: tests\string_test.obj $(TEST_OBJS) \ hash.obj \ string.obj \ log.obj \ PubSub.obj \ tests\log_stub.obj @echo LINK $@ $(LINKER) $** $(LIBS) tests\pending.exe: tests\pending_test.obj $(TEST_OBJS) \ hash.obj \ ignore.obj \ pending.obj \ expflags.obj \ opendir.obj \ cfg.obj \ time.obj \ string.obj \ stream_win.obj \ stream.obj \ log.obj \ FileDescriptor.obj \ PubSub.obj \ FileInformation.obj \ tests\log_stub.obj \ winbuild\pathmap.obj \ winbuild\mkdir.obj \ winbuild\dir.obj @echo LINK $@ $(LINKER) $** $(LIBS) tests\bser.exe: tests\bser.obj bser.obj $(TEST_OBJS) \ tests\log_stub.obj \ string.obj \ hash.obj \ PubSub.obj \ log.obj @echo LINK $@ $(LINKER) $** $(LIBS) tests\cache.exe: tests\CacheTest.obj $(TEST_OBJS) \ tests\log_stub.obj \ string.obj \ hash.obj \ PubSub.obj \ ThreadPool.obj \ log.obj @echo LINK $@ $(LINKER) $** $(LIBS) tests\future.exe: tests\FutureTest.obj $(TEST_OBJS) \ tests\log_stub.obj \ string.obj \ hash.obj \ PubSub.obj \ ThreadPool.obj \ log.obj @echo LINK $@ $(LINKER) $** $(LIBS) tests\result.exe: tests\ResultTest.obj $(TEST_OBJS) \ tests\log_stub.obj \ string.obj \ hash.obj \ PubSub.obj \ log.obj @echo LINK $@ $(LINKER) $** $(LIBS) tests\childproc.exe: tests\childproc.obj $(TEST_OBJS) \ tests\log_stub.obj \ ChildProcess.obj \ winbuild\posix_spawn.obj \ winbuild\pathmap.obj \ Pipe.obj \ FileDescriptor.obj \ FileInformation.obj \ string.obj \ stream_win.obj \ hash.obj \ PubSub.obj \ log.obj @echo LINK $@ $(LINKER) $** $(LIBS) tests\log.exe: tests\log.obj log.obj $(TEST_OBJS) \ PubSub.obj \ string.obj \ hash.obj @echo LINK $@ $(LINKER) $** $(LIBS) tests\wildmatch_test.exe: tests\wildmatch_test.obj $(TEST_OBJS) \ tests\log_stub.obj \ PubSub.obj \ string.obj \ hash.obj \ log.obj @echo LINK $@ $(LINKER) $** $(LIBS) dist: -mkdir Watchman copy watchman.exe Watchman copy watchman.pdb Watchman copy LICENSE Watchman\LICENSE.txt copy README.markdown Watchman clean: -del $(OBJS) $(TEST_OBJS) $(TEST_DIR_OBJS) *.exe distclean: clean watchman-4.9.0/winbuild/asprintf.cpp000066400000000000000000000017561314236077500175160ustar00rootroot00000000000000/* Copyright 2014-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" // Poor-mans asprintf int vasprintf(char **out, WATCHMAN_FMT_STRING(const char *fmt), va_list ap) { char stack[512]; char *buf = stack; char *newbuf; int alloc = sizeof(stack); int len; while (1) { // For VC, returns -1 when it truncates len = _vsnprintf(buf, alloc, fmt, ap); if (len >= 0) { // It fits! if (buf == stack) { *out = strdup(buf); return len; } *out = buf; return len; } // Need a bigger boat alloc *= 2; newbuf = (char*)realloc(buf == stack ? NULL : buf, alloc); if (!newbuf) { if (buf != stack) { free(buf); } *out = NULL; return -1; } buf = newbuf; } } int asprintf(char **out, WATCHMAN_FMT_STRING(const char *fmt), ...) { va_list ap; int len; va_start(ap, fmt); len = vasprintf(out, fmt, ap); va_end(ap); return len; } watchman-4.9.0/winbuild/backtrace.cpp000066400000000000000000000103501314236077500175750ustar00rootroot00000000000000/* Copyright 2014-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" // some versions of dbghelp.h do: typedef enum {}; with no typedef name #pragma warning(disable: 4091) #include #include static std::once_flag sym_init_once; static HANDLE proc; // 4k for a symbol name? Demangled symbols are pretty huge static constexpr size_t kMaxSymbolLen = 4096; static void sym_init(void) { proc = GetCurrentProcess(); SymInitialize(proc, NULL, TRUE); SymSetOptions(SYMOPT_LOAD_LINES|SYMOPT_FAIL_CRITICAL_ERRORS| SYMOPT_NO_PROMPTS|SYMOPT_UNDNAME); } size_t backtrace(void **frames, size_t n_frames) { std::call_once(sym_init_once, sym_init); // Skip the first three frames; they're always going to show // w_log, log_stack_trace and backtrace return CaptureStackBackTrace(3, (DWORD)n_frames, frames, NULL); } char **backtrace_symbols(void **array, size_t n_frames) { std::vector arr; size_t i; union { SYMBOL_INFO info; char buf[kMaxSymbolLen]; } sym; IMAGEHLP_LINE64 line; // How much space we need to hold the final argv style // array for the results size_t totalSize = 0; std::call_once(sym_init_once, sym_init); memset(&sym.info, 0, sizeof(sym.info)); sym.info.MaxNameLen = sizeof(sym) - sizeof(sym.info); sym.info.SizeOfStruct = sizeof(sym.info); line.SizeOfStruct = sizeof(line); for (i = 0; i < n_frames; i++) { char str[kMaxSymbolLen + 128]; DWORD64 addr = (DWORD64)(intptr_t)array[i]; DWORD displacement; if (!SymFromAddr(proc, addr, 0, &sym.info)) { snprintf( sym.info.Name, sizeof(sym.buf), "", std::system_category().message(GetLastError()).c_str()); } if (SymGetLineFromAddr64(proc, addr, &displacement, &line)) { snprintf(str, sizeof(str), "#%" PRIsize_t " %p %s %s:%u", i, array[i], sym.info.Name, line.FileName, line.LineNumber); } else { snprintf(str, sizeof(str), "#%" PRIsize_t " %p %s", i, array[i], sym.info.Name); } arr.emplace_back(str); // One pointer, the string content and the trailing NUL byte totalSize += sizeof(char*) + arr.back().size() + 1; } auto strings = (char**)malloc(totalSize + sizeof(char*)); if (!strings) { return nullptr; } auto buf = (char*)(strings + arr.size() + 1); for (i = 0; i < arr.size(); ++i) { strings[i] = buf; memcpy(buf, arr[i].c_str(), arr[i].size() + 1); buf += arr[i].size() + 1; } strings[i] = nullptr; return strings; } size_t backtrace_from_exception( LPEXCEPTION_POINTERS exception, void** frames, size_t n_frames) { std::call_once(sym_init_once, sym_init); auto context = exception->ContextRecord; auto thread = GetCurrentThread(); STACKFRAME64 frame; DWORD image; size_t i = 0; #ifdef _M_IX86 image = IMAGE_FILE_MACHINE_I386; frame.AddrPC.Offset = context->Eip; frame.AddrPC.Mode = AddrModeFlat; frame.AddrFrame.Offset = context->Ebp; frame.AddrFrame.Mode = AddrModeFlat; frame.AddrStack.Offset = context->Esp; frame.AddrStack.Mode = AddrModeFlat; #elif _M_X64 image = IMAGE_FILE_MACHINE_AMD64; frame.AddrPC.Offset = context->Rip; frame.AddrPC.Mode = AddrModeFlat; frame.AddrFrame.Offset = context->Rsp; frame.AddrFrame.Mode = AddrModeFlat; frame.AddrStack.Offset = context->Rsp; frame.AddrStack.Mode = AddrModeFlat; #elif _M_IA64 image = IMAGE_FILE_MACHINE_IA64; frame.AddrPC.Offset = context->StIIP; frame.AddrPC.Mode = AddrModeFlat; frame.AddrFrame.Offset = context->IntSp; frame.AddrFrame.Mode = AddrModeFlat; frame.AddrBStore.Offset = context->RsBSP; frame.AddrBStore.Mode = AddrModeFlat; frame.AddrStack.Offset = context->IntSp; frame.AddrStack.Mode = AddrModeFlat; #else return 0; // No stack trace for you! #endif while (i < n_frames && StackWalk64( image, proc, thread, &frame, context, nullptr, nullptr, nullptr, nullptr)) { frames[i++] = (void*)frame.AddrPC.Offset; } return i; } watchman-4.9.0/winbuild/config.h000066400000000000000000000111711314236077500165720ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ // Shim for building on Win32 #pragma once #define _CRT_SECURE_NO_WARNINGS 1 #ifndef WATCHMAN_SUPER_PEDANTIC // Each of these is something that we should address :-/ // Buffer overrun; false positives unless we use functions like strcpy_s #pragma warning(disable: 6386) // NULL pointer deref #pragma warning(disable: 6011) // sign mismatch in printf args #pragma warning(disable: 6340) // String might not be zero terminated (false positives) #pragma warning(disable: 6054) #endif #define _ALLOW_KEYWORD_MACROS #ifndef __cplusplus #define inline __inline #endif // Tell windows.h not to #define min/max #define NOMINMAX #define WIN32_LEAN_AND_MEAN #define EX_USAGE 1 #include #include #include #include #include #include #include #include #include #include #if _MSC_VER >= 1400 # include # if _MSC_VER > 1400 # define WATCHMAN_FMT_STRING(x) _Printf_format_string_ x # else # define WATCHMAN_FMT_STRING(x) __format_string x # endif #endif #ifdef __cplusplus extern "C" { #endif typedef ptrdiff_t ssize_t; const char *win32_strerror(DWORD err); int map_win32_err(DWORD err); int map_winsock_err(void); #define snprintf _snprintf int asprintf(char **out, WATCHMAN_FMT_STRING(const char *fmt), ...); int vasprintf(char **out, WATCHMAN_FMT_STRING(const char *fmt), va_list ap); char *dirname(char *path); #define STDIN_FILENO 0 #define STDOUT_FILENO 1 #define STDERR_FILENO 2 int gethostname(char *buf, int size); char *realpath(const char *filename, char *target); #define O_DIRECTORY _O_OBTAIN_DIR #define O_CLOEXEC _O_NOINHERIT #define O_NOFOLLOW 0 /* clowny, but there's no translation */ typedef DWORD pid_t; #define HAVE_BACKTRACE #define HAVE_BACKTRACE_SYMBOLS size_t backtrace(void **frames, size_t n_frames); char **backtrace_symbols(void **array, size_t n_frames); size_t backtrace_from_exception( LPEXCEPTION_POINTERS exception, void** frames, size_t n_frames); #ifdef __cplusplus } #endif /* Define to 1 if you have the header file. */ #define HAVE_INTTYPES_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LOCALE_H 1 /* Define to 1 if you have the header file. */ #define HAVE_MEMORY_H 1 /* Define to 1 if you have the `mkostemp' function. */ /* #undef HAVE_MKOSTEMP */ /* Define to 1 if you have the header file. */ //#define HAVE_PCRE_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDINT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the `strtoll' function. */ #define HAVE_STRTOLL 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ //#define HAVE_UNISTD_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_VALGRIND_VALGRIND_H */ /* Name of package */ #define PACKAGE "watchman" /* Define to the address where bug reports for this package should be sent. */ #define PACKAGE_BUGREPORT "" /* Define to the full name of this package. */ #define PACKAGE_NAME "watchman" /* Define to the version of this package. */ #define PACKAGE_VERSION "4.9.0" /* Version number of package */ #define VERSION PACKAGE_VERSION /* Define to the full name and version of this package. */ #define PACKAGE_STRING "watchman " PACKAGE_VERSION /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "watchman" /* Define to the home page for this package. */ #define PACKAGE_URL "" /* if statvfs holds fstype as string */ /* #undef STATVFS_HAS_FSTYPE_AS_STRING */ /* Define to 1 if you have the ANSI C header files. */ #define STDC_HEADERS 1 /* Use gimli */ /* #undef USE_GIMLI */ /* build info */ /* #undef WATCHMAN_BUILD_INFO */ /* system configuration file path */ #define WATCHMAN_CONFIG_FILE "/etc/watchman.json" /* default location for state */ /* #undef WATCHMAN_STATE_DIR */ /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel). */ #if defined AC_APPLE_UNIVERSAL_BUILD # if defined __BIG_ENDIAN__ # define WORDS_BIGENDIAN 1 # endif #else # ifndef WORDS_BIGENDIAN /* # undef WORDS_BIGENDIAN */ # endif #endif watchman-4.9.0/winbuild/depends.js000066400000000000000000000112621314236077500171350ustar00rootroot00000000000000/* Copyright 2014-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ /* Primitive `makedepend` style utility. * Relies on you generating a .dep file using a compiler invocation like: * $(CC) $(CFLAGS) /Zs /showIncludes /EHsc $< > $(<:.c=.dep) * which captures the list of include files used by a given source. * This script will parse that output and collect it together to generate * an NMake style dependency graph for the target object file. */ shell = WScript.CreateObject("WScript.Shell"); cwd = shell.CurrentDirectory.toLowerCase() + '\\'; fs = WScript.CreateObject("Scripting.FileSystemObject"); INC_FILE = '.windeps'; // Force dependencies on the make tooling, so that objects are regenerated // when the build environment is changed EXTRA_DEPS = [];//'winbuild\\Makefile', 'winbuild\\depends.js']; REL_DIR = "."; function parse_dep_stream(is, write_back) { var deps = []; var current_file = null; var depfile = null; var includePat = /^Note: including file:\s+(.*)/ while (!is.AtEndOfStream) { var line = is.ReadLine(); var m = includePat.exec(line); if (m) { if (depfile) { depfile.WriteLine(line); } var candidate = m[1]; var prefix = candidate.substr(0, cwd.length).toLowerCase(); if (prefix == cwd) { deps.push('"' + candidate.substr(cwd.length) + '"'); } } else { var candidate_file = line; if (REL_DIR != ".") { candidate_file = REL_DIR + "\\" + candidate_file; } if (!fs.FileExists(candidate_file)) { // Some random error that we can ignore continue; } // Then it is probably the name of the source file if (depfile) { depfile.Close(); depfile = null; } current_file = candidate_file; deps = []; for (var i in EXTRA_DEPS) { deps.push(EXTRA_DEPS[i]); } if (write_back) { var depfilename = current_file.replace(/.(c|cpp)$/, '.dep'); depfile = fs.CreateTextFile(depfilename, true); depfile.WriteLine(current_file); } } } if (depfile) { depfile.Close(); } return deps; } function parse_dep_file(srcfile) { var depfile = srcfile.replace(/\.(c|cpp)$/, '.dep'); var objfile = srcfile.replace(/\.(c|cpp)$/, '.obj'); if (!fs.FileExists(depfile)) { return null; } var f = fs.GetFile(depfile); var is = f.OpenAsTextStream(1, 0); var deps = parse_dep_stream(is); is.Close(); // Construct the dependency line var depline = objfile + ': ' + deps.join(' '); return { src: srcfile, obj: objfile, line: depline }; } function load_include_file() { var deps = {}; if (!fs.FileExists(INC_FILE)) { return deps; } var f = fs.GetFile(INC_FILE); var is = f.OpenAsTextStream(1, 0); var r = /^(.*\.obj):\s+(.*)$/; while (!is.AtEndOfStream) { var line = is.ReadLine(); var m = r.exec(line); if (!m) { continue; } var key = m[1]; var deplist = m[2]; if (key.length > 0 && deplist.length > 0) { deps[key] = deplist; } } is.Close(); return deps; } function save_include_file(deps) { var of = fs.CreateTextFile(INC_FILE, true); for (var key in deps) { of.WriteLine(deps[key]); // Also generate dependency between .c and .dep file var depfile = key.replace(/\.obj$/, '.dep'); of.WriteLine(depfile + ": " + key); } of.Close(); } function print_deps(deps) { for (var key in deps) { WScript.Echo(key + " -> " + deps[key]); } } DEPS = load_include_file(); function read_deps_from_stdin() { if (WScript.Arguments.length != 2) { return false; } if (WScript.Arguments(0) != '--stdin') { return false; } REL_DIR = WScript.Arguments(1); parse_dep_stream(WScript.StdIn, true); return true; } var find_blacklist = [ shell.CurrentDirectory + "\\a", shell.CurrentDirectory + "\\website", ]; function is_blacklisted_dir(dir) { var i = find_blacklist.length; while (i--) { if (find_blacklist[i] == dir) { return true; } } return false; } function find_c_files(dir) { if (is_blacklisted_dir(dir) || /\.(git|hg|svn)/.exec(dir)) { return; } var f = fs.GetFolder(dir); var en = new Enumerator(f.files); for (; !en.atEnd(); en.moveNext()) { var item = en.item(); if (/\.(c|cpp)$/.exec(item)) { var rel = item.Path.substr(cwd.length); var dep = parse_dep_file(rel); if (dep) { DEPS[dep.obj] = dep.line; } } } en = new Enumerator(f.subfolders); for (; !en.atEnd(); en.moveNext()) { var item = en.item(); find_c_files(item); } } if (read_deps_from_stdin()) { WScript.Quit(0); } else { find_c_files(shell.CurrentDirectory); save_include_file(DEPS); } watchman-4.9.0/winbuild/dir.cpp000066400000000000000000000116641314236077500164450ustar00rootroot00000000000000/* Copyright 2014-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman_system.h" #include "FileDescriptor.h" #include "watchman.h" #include "watchman_scopeguard.h" using watchman::FileDescriptor; using watchman::FileInformation; using watchman::OpenFileHandleOptions; namespace { class WinDirHandle : public watchman_dir_handle { std::wstring dirWPath_; FileDescriptor h_; bool win7_{false}; FILE_FULL_DIR_INFO* info_{nullptr}; char __declspec(align(8)) buf_[64 * 1024]; HANDLE hDirFind_{nullptr}; char nameBuf_[WATCHMAN_NAME_MAX]; struct watchman_dir_ent ent_; public: ~WinDirHandle() { if (hDirFind_) { FindClose(hDirFind_); } } explicit WinDirHandle(const char* path, bool strict) { int err = 0; dirWPath_ = w_string_piece(path).asWideUNC(); h_ = openFileHandle(path, strict ? OpenFileHandleOptions::strictOpenDir() : OpenFileHandleOptions::openDir()); // Use Win7 compatibility mode for readDir() if (getenv("WATCHMAN_WIN7_COMPAT") && getenv("WATCHMAN_WIN7_COMPAT")[0] == '1') { win7_ = true; } memset(&ent_, 0, sizeof(ent_)); ent_.d_name = nameBuf_; ent_.has_stat = true; if (path[1] == ':') { ent_.stat.dev = tolower(path[0]) - 'a'; } } const watchman_dir_ent* readDir() override { if (win7_) { return readDirWin7(); } try { return readDirWin8(); } catch (const std::system_error& err) { if (err.code().value() != ERROR_INVALID_PARAMETER) { throw; } // Fallback on Win7 implementation. FileFullDirectoryInfo // parameter is not supported before Win8 win7_ = true; return readDirWin7(); } } private: const watchman_dir_ent* readDirWin8() { if (!info_) { if (!GetFileInformationByHandleEx( (HANDLE)h_.handle(), FileFullDirectoryInfo, buf_, sizeof(buf_))) { if (GetLastError() == ERROR_NO_MORE_FILES) { return nullptr; } throw std::system_error( GetLastError(), std::system_category(), "GetFileInformationByHandleEx"); } info_ = (FILE_FULL_DIR_INFO*)buf_; } // Decode the item currently pointed at DWORD len = WideCharToMultiByte( CP_UTF8, 0, info_->FileName, info_->FileNameLength / sizeof(WCHAR), nameBuf_, sizeof(nameBuf_) - 1, nullptr, nullptr); if (len <= 0) { throw std::system_error( GetLastError(), std::system_category(), "WideCharToMultiByte"); } nameBuf_[len] = 0; // Populate stat info to speed up the crawler() routine ent_.stat = FileInformation(info_->FileAttributes); FILETIME_LARGE_INTEGER_to_timespec(info_->CreationTime, &ent_.stat.ctime); FILETIME_LARGE_INTEGER_to_timespec(info_->LastAccessTime, &ent_.stat.atime); FILETIME_LARGE_INTEGER_to_timespec(info_->LastWriteTime, &ent_.stat.mtime); ent_.stat.size = info_->EndOfFile.QuadPart; // Advance the pointer to the next entry ready for the next read info_ = info_->NextEntryOffset == 0 ? nullptr : (FILE_FULL_DIR_INFO*)(((char*)info_) + info_->NextEntryOffset); return &ent_; } const watchman_dir_ent* readDirWin7() { // FileFullDirectoryInfo is not supported prior to Windows 8 WIN32_FIND_DATAW findFileData; bool success; if (!hDirFind_) { std::wstring strWPath(dirWPath_); strWPath += L"\\*"; hDirFind_ = FindFirstFileW(strWPath.c_str(), &findFileData); success = hDirFind_ != INVALID_HANDLE_VALUE; } else { success = FindNextFileW(hDirFind_, &findFileData); } if (!success) { if (GetLastError() == ERROR_NO_MORE_FILES) { return nullptr; } throw std::system_error( GetLastError(), std::system_category(), hDirFind_ ? "FindNextFileW" : "FindFirstFileW"); } DWORD len = WideCharToMultiByte( CP_UTF8, 0, findFileData.cFileName, -1, nameBuf_, sizeof(nameBuf_) - 1, nullptr, nullptr); if (len <= 0) { throw std::system_error( GetLastError(), std::system_category(), "WideCharToMultiByte"); } nameBuf_[len] = 0; // Populate stat info to speed up the crawler() routine ent_.stat = FileInformation(findFileData.dwFileAttributes); FILETIME_to_timespec(&findFileData.ftCreationTime, &ent_.stat.ctime); FILETIME_to_timespec(&findFileData.ftLastAccessTime, &ent_.stat.atime); FILETIME_to_timespec(&findFileData.ftLastWriteTime, &ent_.stat.mtime); LARGE_INTEGER fileSize; fileSize.HighPart = findFileData.nFileSizeHigh; fileSize.LowPart = findFileData.nFileSizeLow; ent_.stat.size = fileSize.QuadPart; return &ent_; } }; } std::unique_ptr w_dir_open(const char* path, bool strict) { return watchman::make_unique(path, strict); } watchman-4.9.0/winbuild/errmap.cpp000066400000000000000000000031051314236077500171440ustar00rootroot00000000000000/* Copyright 2012-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" const char *win32_strerror(DWORD err) { static __declspec(thread) char msgbuf[1024]; FormatMessageA( FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, err, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), msgbuf, sizeof(msgbuf)-1, NULL); return msgbuf; } int map_win32_err(DWORD err) { switch (err) { case ERROR_SUCCESS: return 0; case ERROR_ALREADY_EXISTS: return EEXIST; case ERROR_TIMEOUT: return ETIMEDOUT; case WAIT_TIMEOUT: return ETIMEDOUT; case WAIT_IO_COMPLETION: return EINTR; case ERROR_INVALID_FUNCTION: return ENOSYS; case ERROR_PATH_NOT_FOUND: return ENOTDIR; case ERROR_FILE_NOT_FOUND: return ENOENT; case ERROR_TOO_MANY_OPEN_FILES: return EMFILE; case ERROR_ACCESS_DENIED: return EACCES; case ERROR_INVALID_HANDLE: return EBADF; case ERROR_NOT_ENOUGH_MEMORY: return ENOMEM; case ERROR_INVALID_ACCESS: return EACCES; case ERROR_INVALID_DATA: return EINVAL; case ERROR_NO_MORE_FILES: return EMFILE; case ERROR_WRITE_PROTECT: return EPERM; case ERROR_NOT_SUPPORTED: return ENOSYS; case ERROR_DEV_NOT_EXIST: return ENOENT; case ERROR_FILE_EXISTS: return EEXIST; case ERROR_INVALID_PARAMETER: return EINVAL; case ERROR_NO_PROC_SLOTS: return EAGAIN; case ERROR_BROKEN_PIPE: return EPIPE; case ERROR_DISK_FULL: return ENOSPC; case ERROR_IO_INCOMPLETE: return EAGAIN; case ERROR_IO_PENDING: return EAGAIN; default: return EINVAL; } } watchman-4.9.0/winbuild/getopt.h000066400000000000000000000014251314236077500166300ustar00rootroot00000000000000/* * Portions Copyright (c) 1987, 1993, 1994 * The Regents of the University of California. All rights reserved. * * Portions Copyright (c) 2003-2010, PostgreSQL Global Development Group */ #ifndef GETOPT_LONG_H #define GETOPT_LONG_H #ifdef __cplusplus extern "C" { #endif extern int opterr; extern int optind; extern int optopt; extern char *optarg; struct option { const char *name; int has_arg; int *flag; int val; }; #define no_argument 0 #define required_argument 1 extern int getopt_long(int argc, char *const argv[], const char *optstring, const struct option * longopts, int *longindex); int getopt(int nargc, char * const nargv[], const char *ostr); #ifdef __cplusplus } #endif #endif /* GETOPT_LONG_H */ watchman-4.9.0/winbuild/getopt_long.cpp000066400000000000000000000121461314236077500202040ustar00rootroot00000000000000/* * getopt_long() -- long options parser * * Portions Copyright (c) 1987, 1993, 1994 * The Regents of the University of California. All rights reserved. * * Portions Copyright (c) 2003 * PostgreSQL Global Development Group * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "getopt.h" #include #include #define BADCH '?' #define BADARG ':' #define EMSG "" int opterr = 1, /* if error message should be printed */ optind = 1, /* index into parent argv vector */ optopt, /* character checked for validity */ optreset; /* reset getopt */ char *optarg; /* argument associated with option */ int getopt_long(int argc, char *const argv[], const char *optstring, const struct option * longopts, int *longindex) { static char *place = EMSG; /* option letter processing */ const char *oli; /* option letter list index */ if (!*place) { /* update scanning pointer */ if (optind >= argc) { place = EMSG; return -1; } place = argv[optind]; if (place[0] != '-') { place = EMSG; return -1; } place++; if (place[0] && place[0] == '-' && place[1] == '\0') { /* found "--" */ ++optind; place = EMSG; return -1; } if (place[0] && place[0] == '-' && place[1]) { /* long option */ size_t namelen; int i; place++; namelen = strcspn(place, "="); for (i = 0; longopts[i].name != NULL; i++) { if (strlen(longopts[i].name) == namelen && strncmp(place, longopts[i].name, namelen) == 0) { if (longopts[i].has_arg) { if (place[namelen] == '=') optarg = place + namelen + 1; else if (optind < argc - 1) { optind++; optarg = argv[optind]; } else { if (optstring[0] == ':') return BADARG; if (opterr) fprintf(stderr, "%s: option requires an argument -- %s\n", argv[0], place); place = EMSG; optind++; return BADCH; } } else { optarg = NULL; if (place[namelen] != 0) { /* XXX error? */ } } optind++; if (longindex) *longindex = i; place = EMSG; if (longopts[i].flag == NULL) return longopts[i].val; else { *longopts[i].flag = longopts[i].val; return 0; } } } if (opterr && optstring[0] != ':') fprintf(stderr, "%s: illegal option -- %s\n", argv[0], place); place = EMSG; optind++; return BADCH; } } /* short option */ optopt = (int) *place++; oli = strchr(optstring, optopt); if (!oli) { if (!*place) ++optind; if (opterr && *optstring != ':') fprintf(stderr, "%s: illegal option -- %c\n", argv[0], optopt); return BADCH; } if (oli[1] != ':') { /* don't need argument */ optarg = NULL; if (!*place) ++optind; } else { /* need an argument */ if (*place) /* no white space */ optarg = place; else if (argc <= ++optind) { /* no arg */ place = EMSG; if (*optstring == ':') return BADARG; if (opterr) fprintf(stderr, "%s: option requires an argument -- %c\n", argv[0], optopt); return BADCH; } else /* white space */ optarg = argv[optind]; place = EMSG; ++optind; } return optopt; } watchman-4.9.0/winbuild/hostname.cpp000066400000000000000000000005141314236077500174750ustar00rootroot00000000000000/* Copyright 2014-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" int gethostname(char *buf, int bufsize) { DWORD size = bufsize; if (GetComputerNameEx(ComputerNamePhysicalDnsHostname, buf, &size)) { return 0; } errno = map_win32_err(GetLastError()); return -1; } watchman-4.9.0/winbuild/jansson_config.h000066400000000000000000000001751314236077500203270ustar00rootroot00000000000000/* Copyright 2014-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "jansson_config.h.in" watchman-4.9.0/winbuild/mkdir.cpp000066400000000000000000000006251314236077500167700ustar00rootroot00000000000000/* Copyright 2014-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" int mkdir(const char* path, int) { auto wpath = w_string_piece(path).asWideUNC(); DWORD err; BOOL res; res = CreateDirectoryW(wpath.c_str(), nullptr); err = GetLastError(); if (res) { return 0; } errno = map_win32_err(err); return -1; } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/winbuild/pathmap.cpp000066400000000000000000000123501314236077500173120ustar00rootroot00000000000000/* Copyright 2014-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #include // Filename mapping and handling strategy // We'll track the utf-8 rendition of the underlying filesystem names // in the watchman datastructures. We'll convert to Wide Char at the // boundary with the Windows API. All paths that we observe from the // Windows API will be converted to UTF-8. // TODO: we should use wmain to guarantee that we only ever see UTF-8 // for our program arguments and environment #define LEN_ESCAPE L"\\\\?\\" #define LEN_ESCAPE_LEN 4 #define UNC_PREFIX L"UNC" #define UNC_PREFIX_LEN 3 // We see this escape come back from reparse points when reading // junctions/symlinks #define SYMLINK_ESCAPE L"\\??\\" #define SYMLINK_ESCAPE_LEN 4 w_string::w_string(const WCHAR* wpath, size_t pathlen) { int len, res; bool is_unc = false; if (!wcsncmp(wpath, SYMLINK_ESCAPE, SYMLINK_ESCAPE_LEN)) { wpath += SYMLINK_ESCAPE_LEN; pathlen -= SYMLINK_ESCAPE_LEN; } if (!wcsncmp(wpath, LEN_ESCAPE, LEN_ESCAPE_LEN)) { wpath += LEN_ESCAPE_LEN; pathlen -= LEN_ESCAPE_LEN; if (pathlen >= UNC_PREFIX_LEN + 1 && !wcsncmp(wpath, UNC_PREFIX, UNC_PREFIX_LEN) && wpath[UNC_PREFIX_LEN] == '\\') { // Need to convert "\\?\UNC\server\share" to "\\server\share" // We'll pass "C\server\share" and then poke a "\" in at the // start wpath += UNC_PREFIX_LEN - 1; pathlen -= (UNC_PREFIX_LEN - 1); is_unc = true; } } len = WideCharToMultiByte( CP_UTF8, 0, wpath, pathlen, nullptr, 0, nullptr, nullptr); if (len <= 0) { throw std::system_error( GetLastError(), std::system_category(), "WideCharToMultiByte"); } str_ = (w_string_t*)(new char[sizeof(w_string_t) + len + 1]); new (str_) watchman_string(); str_->refcnt = 1; str_->len = len; auto buf = (char*)(str_ + 1); str_->buf = buf; str_->type = W_STRING_UNICODE; res = WideCharToMultiByte( CP_UTF8, 0, wpath, pathlen, buf, len, nullptr, nullptr); if (res != len) { // Weird! throw std::system_error( GetLastError(), std::system_category(), "WideCharToMultiByte"); } if (is_unc) { // Replace the "C" from UNC with a leading slash buf[0] = '\\'; } // Normalize directory separators for our internal UTF-8 // strings to be forward slashes. These will get transformed // to backslashes when converting to WCHAR in our counterpart // w_string_piece::asWideUNC() std::transform( buf, buf + len, buf, [](wchar_t c) { return c == '\\' ? '/' : c; }); buf[res] = 0; } bool w_path_exists(const char *path) { auto wpath = w_string_piece(path).asWideUNC(); WIN32_FILE_ATTRIBUTE_DATA data; DWORD err; if (!GetFileAttributesExW(wpath.c_str(), GetFileExInfoStandard, &data)) { err = GetLastError(); errno = map_win32_err(err); return false; } return true; } std::wstring w_string_piece::asWideUNC() const { int len, res, i, prefix_len; bool use_escape = false; bool is_unc = false; // Make a copy of ourselves, as we may mutate w_string_piece path = *this; if (path.size() == 0) { return std::wstring(L""); } // We don't want to use the length escape for special filenames like NUL: // (which we use as the equivalent to /dev/null). // We only strictly need to use the escape when pathlen >= MAX_PATH, // but since such paths are rare, we want to ensure that we hit any // problems with the escape approach on common paths (not all windows // API functions apparently support this very well) if (path.size() > 3 && path.size() < MAX_PATH && path[path.size() - 1] == ':') { use_escape = false; prefix_len = 0; } else { use_escape = true; prefix_len = LEN_ESCAPE_LEN; // More func with escaped names when UNC notation is used if (path[0] == '\\' && path[1] == '\\') { is_unc = true; prefix_len += UNC_PREFIX_LEN; } } // Step 1, measure up len = MultiByteToWideChar(CP_UTF8, 0, path.data(), path.size(), nullptr, 0); if (len <= 0) { throw std::system_error( GetLastError(), std::system_category(), "MultiByteToWideChar"); } // Step 2, allocate and prepend UNC prefix std::wstring result; result.reserve(prefix_len + len + 1); if (use_escape) { result.append(LEN_ESCAPE); // UNC paths need further mangling when using length escapes if (is_unc) { result.append(UNC_PREFIX); // "\\server\path" -> "\\?\UNC\server\path" path = w_string_piece( path.data() + 1, path.size() - 1); // Skip the first of these two slashes } } // Step 3, convert into the new space result.resize(prefix_len + len); res = MultiByteToWideChar( CP_UTF8, 0, path.data(), path.size(), &result[prefix_len], len); if (res != len) { // Something crazy happened throw std::system_error( GetLastError(), std::system_category(), "MultiByteToWideChar"); } // Replace all forward slashes with backslashes. This makes things easier // for clients that are just jamming paths together using /, but is also // required when we are using the long filename escape prefix for (auto& c : result) { if (c == '/') { c = '\\'; } } return result; } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/winbuild/posix_spawn.cpp000066400000000000000000000257671314236077500202520ustar00rootroot00000000000000/* Copyright 2014-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" #include "watchman_synchronized.h" // Maps pid => process handle // This is so that we can wait/poll/query the termination status static watchman::Synchronized> child_procs; pid_t waitpid(pid_t pid, int* status, int options) { HANDLE h; { auto rlock = child_procs.rlock(); auto it = rlock->find(pid); if (it == rlock->end()) { errno = ESRCH; return -1; } h = it->second; } auto res = WaitForSingleObject(h, options == WNOHANG ? 0 : INFINITE); switch (res) { case WAIT_OBJECT_0: case WAIT_ABANDONED_0: *status = 0; child_procs.wlock()->erase(pid); return pid; case WAIT_TIMEOUT: return 0; default: errno = EINVAL; return -1; } } int posix_spawnattr_init(posix_spawnattr_t *attrp) { memset(attrp, 0, sizeof(*attrp)); return 0; } int posix_spawnattr_setflags(posix_spawnattr_t* attrp, short flags) { attrp->flags = flags; return 0; } int posix_spawnattr_getflags(posix_spawnattr_t* attrp, short* flags) { *flags = attrp->flags; return 0; } int posix_spawnattr_setcwd_np(posix_spawnattr_t *attrp, const char *path) { char *path_dup = NULL; if (path) { path_dup = strdup(path); if (!path_dup) { return ENOMEM; } } free(attrp->working_dir); attrp->working_dir = path_dup; return 0; } int posix_spawnattr_destroy(posix_spawnattr_t *attrp) { free(attrp->working_dir); return 0; } int posix_spawn_file_actions_init(posix_spawn_file_actions_t *actions) { memset(actions, 0, sizeof(*actions)); return 0; } int posix_spawn_file_actions_adddup2(posix_spawn_file_actions_t *actions, int fd, int target_fd) { struct _posix_spawn_file_action *acts, *act; acts = (_posix_spawn_file_action *)realloc( actions->acts, (actions->nacts + 1) * sizeof(*acts)); if (!acts) { return ENOMEM; } act = &acts[actions->nacts]; act->action = _posix_spawn_file_action::dup_fd; act->u.source_fd = fd; act->target_fd = target_fd; actions->acts = acts; actions->nacts++; return 0; } int posix_spawn_file_actions_adddup2_handle_np( posix_spawn_file_actions_t* actions, intptr_t handle, int target_fd) { struct _posix_spawn_file_action *acts, *act; acts = (_posix_spawn_file_action *)realloc( actions->acts, (actions->nacts + 1) * sizeof(*acts)); if (!acts) { return ENOMEM; } act = &acts[actions->nacts]; act->action = _posix_spawn_file_action::dup_handle; act->u.dup_local_handle = handle; act->target_fd = target_fd; actions->acts = acts; actions->nacts++; return 0; } int posix_spawn_file_actions_addopen(posix_spawn_file_actions_t *actions, int target_fd, const char *name, int flags, int mode) { struct _posix_spawn_file_action *acts, *act; char *name_dup = strdup(name); if (!name_dup) { return ENOMEM; } acts = (_posix_spawn_file_action *)realloc( actions->acts, (actions->nacts + 1) * sizeof(*acts)); if (!acts) { free(name_dup); return ENOMEM; } act = &acts[actions->nacts]; act->action = _posix_spawn_file_action::open_file; act->target_fd = target_fd; act->u.open_info.name = name_dup; act->u.open_info.flags = flags; act->u.open_info.mode = mode; actions->acts = acts; actions->nacts++; return 0; } int posix_spawn_file_actions_destroy(posix_spawn_file_actions_t *actions) { int i; for (i = 0; i < actions->nacts; i++) { if (actions->acts[i].action != _posix_spawn_file_action::open_file) { continue; } free(actions->acts[i].u.open_info.name); } free(actions->acts); return 0; } #define CMD_EXE_PREFIX "cmd.exe /c \"" static char *build_command_line(char *const argv[]) { int argc = 0, i = 0; size_t size = 0; char *cmdbuf = NULL, *cur = NULL; // Note: includes trailing NUL which we count as the closing quote size = sizeof(CMD_EXE_PREFIX); for (argc = 0; argv[argc] != NULL; argc++) { size += 4 * (strlen(argv[argc]) + 1); } cmdbuf = (char*)malloc(size); if (!cmdbuf) { return NULL; } // Here be dragons. More gory details in http://stackoverflow.com/q/4094699 // Surely not complete here by any means strcpy_s(cmdbuf, size, CMD_EXE_PREFIX); cur = cmdbuf + strlen(CMD_EXE_PREFIX); for (i = 0; i < argc; i++) { int j; char *arg = argv[i]; // Space separated if (i > 0) { *cur = ' '; cur++; } *cur = '"'; cur++; // FIXME: multibyte for (j = 0; arg[j]; j++) { switch (arg[j]) { case '"': strcpy(cur, "\"\"\""); cur += 3; break; default: *cur = arg[j]; cur++; } } *cur = '"'; cur++; } *cur = '"'; cur++; *cur = 0; return cmdbuf; } static char *make_env_block(char *const envp[]) { int i; size_t total_len = 1; /* for final NUL */ char *block = NULL; char *target = NULL; for (i = 0; envp[i]; i++) { total_len += strlen(envp[i]) + 1; } block = (char*)malloc(total_len); if (!block) { return NULL; } target = block; for (i = 0; envp[i]; i++) { size_t len = strlen(envp[i]); // Also copy the NULL memcpy(target, envp[i], len + 1); target += len + 1; } // Final NUL terminator *target = 0; return block; } static int posix_spawn_common( bool search_path, pid_t *pid, const char *path, const posix_spawn_file_actions_t *file_actions, const posix_spawnattr_t *attrp, char *const argv[], char *const envp[]) { STARTUPINFOEX sinfo; SECURITY_ATTRIBUTES sec; PROCESS_INFORMATION pinfo; char *cmdbuf; char *env_block; DWORD create_flags = CREATE_NO_WINDOW|EXTENDED_STARTUPINFO_PRESENT; int ret; int i; HANDLE inherited_handles[3] = {0, 0, 0}; cmdbuf = build_command_line(argv); if (!cmdbuf) { return ENOMEM; } env_block = make_env_block(envp); if (!env_block) { free(cmdbuf); return ENOMEM; } memset(&sinfo, 0, sizeof(sinfo)); sinfo.StartupInfo.cb = sizeof(sinfo); sinfo.StartupInfo.dwFlags = STARTF_USESTDHANDLES|STARTF_USESHOWWINDOW; sinfo.StartupInfo.wShowWindow = SW_HIDE; memset(&sec, 0, sizeof(sec)); sec.nLength = sizeof(sec); sec.bInheritHandle = TRUE; memset(&pinfo, 0, sizeof(pinfo)); if (attrp->flags & POSIX_SPAWN_SETPGROUP) { create_flags |= CREATE_NEW_PROCESS_GROUP; } for (i = 0; i < file_actions->nacts; i++) { struct _posix_spawn_file_action *act = &file_actions->acts[i]; HANDLE *target = NULL; switch (act->target_fd) { case 0: target = &sinfo.StartupInfo.hStdInput; break; case 1: target = &sinfo.StartupInfo.hStdOutput; break; case 2: target = &sinfo.StartupInfo.hStdError; break; } if (!target) { w_log(W_LOG_ERR, "posix_spawn: can't target fd outside range [0-2]\n"); ret = ENOSYS; goto done; } if (act->action != _posix_spawn_file_action::open_file) { // Process a dup(2) action DWORD err; if (*target) { CloseHandle(*target); *target = INVALID_HANDLE_VALUE; } if (act->action == _posix_spawn_file_action::dup_fd) { HANDLE src = NULL; switch (act->u.source_fd) { case 0: src = sinfo.StartupInfo.hStdInput; break; case 1: src = sinfo.StartupInfo.hStdOutput; break; case 2: src = sinfo.StartupInfo.hStdError; break; } if (!src) { src = (HANDLE)_get_osfhandle(act->u.source_fd); } act->u.dup_local_handle = intptr_t(src); } if (!DuplicateHandle( GetCurrentProcess(), (HANDLE)act->u.dup_local_handle, GetCurrentProcess(), target, 0, TRUE, DUPLICATE_SAME_ACCESS)) { err = GetLastError(); w_log(W_LOG_ERR, "posix_spawn: failed to duplicate handle: %s\n", win32_strerror(err)); ret = map_win32_err(err); goto done; } } else { // Process an open(2) action auto h = w_handle_open( act->u.open_info.name, act->u.open_info.flags & ~O_CLOEXEC); if (!h) { ret = errno; w_log(W_LOG_ERR, "posix_spawn: failed to open %s:\n", act->u.open_info.name); goto done; } if (*target) { CloseHandle(*target); } *target = (HANDLE)h.release(); } } if (!sinfo.StartupInfo.hStdInput) { sinfo.StartupInfo.hStdInput = GetStdHandle(STD_INPUT_HANDLE); } if (!sinfo.StartupInfo.hStdOutput) { sinfo.StartupInfo.hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE); } if (!sinfo.StartupInfo.hStdError) { sinfo.StartupInfo.hStdError = GetStdHandle(STD_ERROR_HANDLE); } // Ensure that we only pass the stdio handles to the child. { SIZE_T size = 0; inherited_handles[0] = sinfo.StartupInfo.hStdInput; inherited_handles[1] = sinfo.StartupInfo.hStdOutput; inherited_handles[2] = sinfo.StartupInfo.hStdError; sinfo.lpAttributeList = NULL; InitializeProcThreadAttributeList(NULL, 1, 0, &size); sinfo.lpAttributeList = (LPPROC_THREAD_ATTRIBUTE_LIST)malloc(size); InitializeProcThreadAttributeList(sinfo.lpAttributeList, 1, 0, &size); UpdateProcThreadAttribute(sinfo.lpAttributeList, 0, PROC_THREAD_ATTRIBUTE_HANDLE_LIST, inherited_handles, 3 * sizeof(HANDLE), NULL, NULL); } if (!CreateProcess(search_path ? NULL : path, cmdbuf, &sec, &sec, TRUE, create_flags, env_block, attrp->working_dir, &sinfo.StartupInfo, &pinfo)) { w_log(W_LOG_ERR, "CreateProcess: `%s`: (cwd=%s) %s\n", cmdbuf, attrp->working_dir ? attrp->working_dir : "", win32_strerror(GetLastError())); ret = EACCES; } else { *pid = (pid_t)pinfo.dwProcessId; // Record the pid -> handle mapping for later wait/reap child_procs.wlock()->emplace(pinfo.dwProcessId, pinfo.hProcess); CloseHandle(pinfo.hThread); ret = 0; } free(sinfo.lpAttributeList); done: free(cmdbuf); free(env_block); // If we manufactured any handles, close them out now if (sinfo.StartupInfo.hStdInput != GetStdHandle(STD_INPUT_HANDLE)) { CloseHandle(sinfo.StartupInfo.hStdInput); } if (sinfo.StartupInfo.hStdOutput != GetStdHandle(STD_OUTPUT_HANDLE)) { CloseHandle(sinfo.StartupInfo.hStdOutput); } if (sinfo.StartupInfo.hStdError != GetStdHandle(STD_ERROR_HANDLE)) { CloseHandle(sinfo.StartupInfo.hStdError); } return ret; } int posix_spawn(pid_t *pid, const char *path, const posix_spawn_file_actions_t *file_actions, const posix_spawnattr_t *attrp, char *const argv[], char *const envp[]) { return posix_spawn_common(false, pid, path, file_actions, attrp, argv, envp); } int posix_spawnp(pid_t *pid, const char *file, const posix_spawn_file_actions_t *file_actions, const posix_spawnattr_t *attrp, char *const argv[], char *const envp[]) { return posix_spawn_common(true, pid, file, file_actions, attrp, argv, envp); } watchman-4.9.0/winbuild/spawn.h000066400000000000000000000036421314236077500164610ustar00rootroot00000000000000/* Copyright 2014-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #pragma once // Spawn attributes typedef struct _posix_spawnattr { short flags; char *working_dir; } posix_spawnattr_t; #define POSIX_SPAWN_SETPGROUP 2 int posix_spawnattr_init(posix_spawnattr_t *attrp); int posix_spawnattr_setflags(posix_spawnattr_t* attrp, short flags); int posix_spawnattr_getflags(posix_spawnattr_t* attrp, short* flags); int posix_spawnattr_destroy(posix_spawnattr_t *attrp); int posix_spawnattr_setcwd_np(posix_spawnattr_t *attrp, const char *path); // File actions struct _posix_spawn_file_action { enum { open_file, dup_fd, dup_handle } action; int target_fd; union { intptr_t dup_local_handle; int source_fd; struct { char *name; int flags; int mode; } open_info; } u; }; typedef struct _posix_spawn_file_actions { struct _posix_spawn_file_action *acts; int nacts; } posix_spawn_file_actions_t; int posix_spawn_file_actions_init(posix_spawn_file_actions_t *actions); int posix_spawn_file_actions_adddup2(posix_spawn_file_actions_t *actions, int fd, int target_fd); int posix_spawn_file_actions_adddup2_handle_np( posix_spawn_file_actions_t* actions, intptr_t handle, int target_fd); int posix_spawn_file_actions_addopen(posix_spawn_file_actions_t *actions, int target_fd, const char *name, int flags, int mode); int posix_spawn_file_actions_destroy(posix_spawn_file_actions_t *actions); // And spawning itself int posix_spawn(pid_t *pid, const char *path, const posix_spawn_file_actions_t *file_actions, const posix_spawnattr_t *attrp, char *const argv[], char *const envp[]); int posix_spawnp(pid_t *pid, const char *file, const posix_spawn_file_actions_t *file_actions, const posix_spawnattr_t *attrp, char *const argv[], char *const envp[]); #define WNOHANG 1 pid_t waitpid(pid_t pid, int* status, int options); watchman-4.9.0/winbuild/susres.cpp000066400000000000000000000034531314236077500172100ustar00rootroot00000000000000/* Copyright 2014-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include #include #include #include // Super simple utility to suspend or resume all threads in a target process. // We use this in place of `kill -STOP` and `kill -CONT` typedef LONG (NTAPI *sus_res_func)(HANDLE proc); const char *win32_strerror(DWORD err) { static char msgbuf[1024]; FormatMessageA( FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, err, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), msgbuf, sizeof(msgbuf)-1, NULL); return msgbuf; } int apply(DWORD pid, BOOL suspend) { sus_res_func func; const char *name = suspend ? "NtSuspendProcess" : "NtResumeProcess"; HANDLE proc; DWORD res; func = (sus_res_func)GetProcAddress( GetModuleHandle("ntdll"), name); if (!func) { printf("Failed to GetProcAddress(%s): %s\n", name, win32_strerror(GetLastError())); return 1; } proc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid); if (proc == INVALID_HANDLE_VALUE) { printf("Failed to OpenProcess(%d): %s\n", pid, win32_strerror(GetLastError())); return 1; } res = func(proc); if (res) { printf("%s(%d) returns %x: %s\n", name, pid, res, win32_strerror(res)); } CloseHandle(proc); return res == 0 ? 0 : 1; } void usage() { printf( "Usage: susres suspend [pid]\n" " susres resume [pid\n"); exit(1); } int main(int argc, char **argv) { DWORD pid; BOOL suspend; if (argc != 3) { usage(); } if (!strcmp(argv[1], "suspend")) { suspend = TRUE; } else if (!strcmp(argv[1], "resume")) { suspend = FALSE; } else { usage(); } pid = _atoi64(argv[2]); return apply(pid, suspend); } /* vim:ts=2:sw=2:et: */ watchman-4.9.0/winbuild/sys/000077500000000000000000000000001314236077500157715ustar00rootroot00000000000000watchman-4.9.0/winbuild/sys/time.h000066400000000000000000000014311314236077500170770ustar00rootroot00000000000000/* Copyright 2014-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #ifndef SYS_TIME_H #define SYS_TIME_H #ifdef __cplusplus extern "C" { #endif // Defined by winsock, but we're not pulling that in, so we get // to define our own version of the struct. We choose to define // tv_sec as a time_t for the sake of sanity. This is not ABI // compatible with winsock, but we don't want or need that struct timeval { time_t tv_sec; time_t tv_usec; }; int gettimeofday(struct timeval *tv, void *ignored); void FILETIME_to_timespec(const FILETIME *ft, struct timespec *ts); void FILETIME_LARGE_INTEGER_to_timespec(LARGE_INTEGER ft, struct timespec *ts); void usleep(int64_t usec); void sleep(int sec); #ifdef __cplusplus } #endif #endif /* vim:ts=2:sw=2:et: */ watchman-4.9.0/winbuild/time.cpp000066400000000000000000000033241314236077500166170ustar00rootroot00000000000000/* Copyright 2014-present Facebook, Inc. * Licensed under the Apache License, Version 2.0 */ #include "watchman.h" // 100's of nanoseconds since the FILETIME epoch static const uint64_t EPOCH = ((uint64_t) 116444736000000000ULL); // FILETIME is expressed in 100's of nanoseconds void FILETIME_LARGE_INTEGER_to_timespec(LARGE_INTEGER ft, struct timespec *ts) { static const uint32_t factor = WATCHMAN_NSEC_IN_SEC / 100; ft.QuadPart -= EPOCH; ts->tv_sec = ft.QuadPart / factor; ft.QuadPart -= ts->tv_sec * factor; ts->tv_nsec = ft.QuadPart * 100; } void FILETIME_to_timespec(const FILETIME *ft, struct timespec *ts) { LARGE_INTEGER li; li.HighPart = ft->dwHighDateTime; li.LowPart = ft->dwLowDateTime; FILETIME_LARGE_INTEGER_to_timespec(li, ts); } static void timespec_to_timeval(const struct timespec *ts, struct timeval *tv) { tv->tv_sec = (long)ts->tv_sec; tv->tv_usec = (long)(ts->tv_nsec / WATCHMAN_NSEC_IN_USEC); } int gettimeofday(struct timeval* tv, void*) { SYSTEMTIME system_time; FILETIME file_time; struct timespec ts; GetSystemTime( &system_time ); SystemTimeToFileTime( &system_time, &file_time ); FILETIME_to_timespec(&file_time, &ts); timespec_to_timeval(&ts, tv); return 0; } void usleep(int64_t usec) { HANDLE timer; LARGE_INTEGER ft; // Convert to 100 nanosecond interval, negative value indicates relative time ft.QuadPart = -(10*usec); timer = CreateWaitableTimer(NULL, TRUE, NULL); if (!timer) { return; } SetWaitableTimer(timer, &ft, 0, NULL, NULL, 0); // Use an alertable wait to play well with our stream implementation WaitForSingleObjectEx(timer, INFINITE, true); CloseHandle(timer); } void sleep(int sec) { SleepEx(sec * 1000, true); }